อัปเดต: เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้จากคำถามนี้ว่าในการสนทนาทั้งหมดด้านล่างฉัน (และฉันแน่ใจว่าคนอื่น ๆ ก็ทำเช่นกัน) ค่อนข้างสับสน: สิ่งที่ฉันเรียกตารางสายรุ้งนั้นแท้จริงแล้วเรียกว่าตารางแฮช ตารางสายรุ้งเป็นสิ่งมีชีวิตที่ซับซ้อนกว่าและเป็นรูปแบบหนึ่งของ Hellman Hash Chains แม้ว่าฉันจะเชื่อว่าคำตอบนั้นยังคงเหมือนเดิม (เนื่องจากไม่ได้มีการเข้ารหัสลับ) การสนทนาบางส่วนอาจจะเบี้ยวเล็กน้อย
คำถาม: " อะไรคือตารางรุ้งและวิธีการที่พวกเขาใช้? "
โดยปกติฉันมักจะแนะนำให้ใช้ค่าสุ่มที่มีการเข้ารหัสที่แข็งแกร่งเป็นเกลือเสมอเพื่อใช้กับฟังก์ชันแฮช (เช่นรหัสผ่าน) เช่นเพื่อป้องกันการโจมตีของ Rainbow Table
แต่จริง ๆ แล้วมันจำเป็นสำหรับการสุ่มเกลือหรือไม่? ค่าที่ไม่ซ้ำกัน (ไม่ซ้ำกันต่อผู้ใช้เช่น userId) จะเพียงพอหรือไม่ในเรื่องนี้ ในความเป็นจริงมันจะป้องกันไม่ให้ใช้ Rainbow Table เดียวเพื่อถอดรหัสรหัสผ่านทั้งหมด (หรือส่วนใหญ่) ในระบบ ...
แต่การขาดเอนโทรปีทำให้ความแข็งแกร่งในการเข้ารหัสของฟังก์ชันแฮชลดลงหรือไม่?
หมายเหตุฉันไม่ได้ถามว่าทำไมต้องใช้เกลือวิธีการป้องกัน (ไม่จำเป็นต้องเป็น) การใช้แฮชคงที่เดียว (ไม่ต้อง) หรือฟังก์ชันแฮชประเภทใดที่จะใช้
เพียงแค่ว่าเกลือต้องการเอนโทรปีหรือไม่
ขอบคุณทุกคนสำหรับคำตอบจนถึงตอนนี้ แต่ฉันอยากจะเน้นในส่วนที่ฉันไม่ค่อยคุ้นเคย (นิดหน่อย) ผลกระทบส่วนใหญ่สำหรับการเข้ารหัส - ฉันจะขอบคุณมากที่สุดถ้าใครมีข้อมูลบางอย่างจาก PoV ทางคณิตศาสตร์การเข้ารหัสลับ
นอกจากนี้หากมีเวกเตอร์เพิ่มเติมที่ไม่ได้รับการพิจารณาก็เป็นข้อมูลที่ดีเช่นกัน (ดูที่ @Dave Sherohman ชี้ในหลายระบบ)
นอกเหนือจากนั้นหากคุณมีทฤษฎีแนวคิดหรือแนวทางปฏิบัติที่ดีที่สุดโปรดสำรองข้อมูลนี้ด้วยการพิสูจน์สถานการณ์การโจมตีหรือหลักฐานเชิงประจักษ์ หรือแม้กระทั่งการพิจารณาที่ถูกต้องสำหรับการแลกเปลี่ยนที่ยอมรับได้ ... ฉันคุ้นเคยกับแนวทางปฏิบัติที่ดีที่สุด (ตัวพิมพ์ใหญ่ B ทุน P) ในหัวข้อนี้ฉันต้องการพิสูจน์ว่าสิ่งนี้ให้คุณค่าอย่างไร
แก้ไข: คำตอบที่ดีจริงๆที่นี่ แต่ฉันคิดว่าอย่างที่ @Dave พูดมันลงมาที่ Rainbow Tables สำหรับชื่อผู้ใช้ทั่วไป ... และอาจมีชื่อสามัญน้อยกว่าด้วย อย่างไรก็ตามจะเกิดอะไรขึ้นหากชื่อผู้ใช้ของฉันไม่ซ้ำกันทั่วโลก? ไม่จำเป็นต้องซ้ำกันสำหรับระบบของฉัน แต่สำหรับผู้ใช้แต่ละคนเช่นที่อยู่อีเมล
จะไม่มีแรงจูงใจในการสร้าง RT สำหรับผู้ใช้รายเดียว (ตามที่ @Dave เน้นย้ำว่าเกลือจะไม่ถูกเก็บเป็นความลับ) และยังคงป้องกันไม่ให้เกิดการรวมกลุ่ม ปัญหาเดียวคือฉันอาจมีอีเมลและรหัสผ่านเดียวกันในไซต์อื่น - แต่เกลือจะไม่สามารถป้องกันได้อยู่ดี
ดังนั้นจึงกลับลงมาที่การเข้ารหัส - เอนโทรปีจำเป็นหรือไม่? (ความคิดในปัจจุบันของฉันไม่จำเป็นจากมุมมองของการเข้ารหัส แต่มาจากเหตุผลในทางปฏิบัติอื่น ๆ )