บทความของ Coda Hale "วิธีเก็บรหัสผ่านอย่างปลอดภัย"อ้างว่า:
bcrypt มีเกลือในตัวเพื่อป้องกันการโจมตีของตารางสายรุ้ง
เขาอ้างอิงบทความนี้ซึ่งกล่าวว่าในการดำเนินการของ OpenBSD bcrypt
:
OpenBSD สร้างเกลือ bcrypt 128- บิตจากกระแสหลักของ arcfour (arc4random (3)) ซึ่งประกอบด้วยข้อมูลแบบสุ่มที่เคอร์เนลรวบรวมจากการจับเวลาอุปกรณ์
ฉันไม่เข้าใจวิธีการทำงานนี้ ในความคิดของฉันของเกลือ:
- มันจะต้องแตกต่างกันสำหรับแต่ละรหัสผ่านที่เก็บไว้ดังนั้นตารางสายรุ้งแยกต่างหากจะต้องถูกสร้างขึ้นสำหรับแต่ละรหัส
- จำเป็นต้องเก็บไว้ที่ไหนสักแห่งเพื่อให้สามารถทำซ้ำได้: เมื่อผู้ใช้พยายามเข้าสู่ระบบเราใช้ความพยายามรหัสผ่านของพวกเขาทำซ้ำขั้นตอนเกลือและแฮชเดียวกันกับที่เราทำเมื่อเราเก็บรหัสผ่านเดิมและเปรียบเทียบ
เมื่อฉันใช้ Devise (ผู้จัดการการเข้าสู่ระบบ Rails) กับ bcrypt ไม่มีคอลัมน์เกลือในฐานข้อมูลดังนั้นฉันจึงสับสน หากเกลือถูกสุ่มและไม่ได้เก็บไว้ที่ใดเราจะทำขั้นตอนการแฮชซ้ำได้อย่างน่าเชื่อถือได้อย่างไร
ในระยะสั้นbcrypt สามารถมีเกลือในตัวได้อย่างไร