Score:0

การใช้ bcrypt เพื่อสร้างแฮชแบบเดียวกันเสมอ เช่น SHA, MD

ธง tr

ฉันต้องการใช้ประโยชน์จากคุณสมบัติที่ช้าของ bcrypt เพื่อแฮชอินพุต แต่ยังต้องการรับค่าแฮชเดียวกันสำหรับอินพุตเดียวกันทุกครั้ง เช่น SHA, MD เป็นต้น

เพื่อที่จะทำเช่นนั้น แทนที่จะใช้เกลือคงที่ ซึ่งฉันเชื่อว่ามีความปลอดภัยน้อยกว่า ฉันกำลังคิดที่จะใช้อินพุตเป็นเกลือด้วยหรือไม่ ผลลัพธ์จะเป็นค่าแฮชลบด้วยบิตเกลือด้านหน้า (เห็นได้ชัดว่าเป็นอินพุตเอง)

โดยพื้นฐานแล้ว รับอินพุต m, bcrypt(ราคา, m, m) -> ctextไม่มีการต่อกันในตอนท้าย

ดังนั้นคำถามคือการใช้อินพุตเป็นทั้งเกลือและรหัสผ่านทำให้ขั้นตอนการรับคีย์มีความปลอดภัยน้อยลงตามคุณสมบัติของ bcrypt หรือไม่

et flag
เหตุใดเกลือคงที่จึงไม่สร้างแฮชแบบเดียวกัน
tr flag
@user93353 ไม่ได้บอกว่าจะไม่ทำ แค่ปลอดภัยน้อยกว่าถ้าคุณทำหาย คุณอาจต้องต่ออายุทุกๆ แฮชในระบบของคุณ
et flag
เกลือเป็นรหัสผ่าน เช่น 1 เกลือต่อรหัสผ่าน มันคงที่สำหรับอินสแตนซ์ของรหัสผ่านนั้น ไม่ใช่เรื่องธรรมดาสำหรับรหัสผ่าน
tr flag
@ user93353 อาจเป็นเพราะฉันไม่ชัดเจนหรือคุณไม่เข้าใจประเด็นของคำถามนี้ หากคุณสร้างเกลือต่อรหัสผ่าน คุณจะได้รับแฮชที่แตกต่างกันทุกครั้ง หากคุณมีค่าคงที่สำหรับรหัสผ่านเฉพาะ หมายความว่าคุณมี `f(m)->s` สำหรับข้อความที่กำหนด ซึ่งเหมือนกับคำถามของฉัน เพียงแต่ว่า `f(m)->m` ของฉันคือ ฟังก์ชันที่เหมือนกัน
et flag
`หากคุณสร้างเกลือต่อรหัสผ่าน คุณจะได้รับแฮชที่แตกต่างกันทุกครั้ง' ไม่ สำหรับหนึ่งรหัสผ่าน คุณจะสร้างได้เพียง 1 เกลือเท่านั้น เช่น เมื่อ user1 สร้าง pwd1 คุณจะใช้ salt1 ขณะสร้างบัญชี จากนั้นในขณะที่ตรวจสอบรหัสผ่าน คุณใช้ salt1 เดียวกัน ดังนั้นคุณจะได้แฮชเดียวกัน ทุกครั้งที่คุณใช้ชุดค่าผสม pwd1 & salt1 เดียวกัน คุณจะได้รับแฮชเท่าเดิม ((ถ้าคุณใช้จำนวนรอบเท่ากันทุกครั้ง ซึ่งคุณควรทำ)
tr flag
@ user93353 คุณยังพลาดประเด็นของคำถาม ไม่มีการกล่าวถึงการตรวจสอบรหัสผ่านที่นี่ สถานการณ์คือคุณมีค่าที่คุณต้องการแฮช (โดยใช้ตัวแปร bcrypt นี้) คุณแฮชมัน ได้รับค่าแฮช วันแห่งความสุข วันถัดไป คุณมีค่าเท่ากับที่คุณต้องการแฮช คุณแฮช และคาดว่าจะได้รับค่าแฮชเดียวกัน
SAI Peregrinus avatar
si flag
bcrypt เป็นฟังก์ชันแฮชรหัสผ่าน ไม่ใช่ฟังก์ชันแฮชการเข้ารหัสแบบปกติ และมักไม่ปลอดภัยที่จะใช้เป็นฟังก์ชันเดียว (การโจมตีแบบ DoS ที่เป็นไปได้)
SAI Peregrinus avatar
si flag
เกลือยังเป็นแบบต่อคู่ (ผู้ใช้, รหัสผ่าน): ตราบใดที่ผู้ใช้รักษารหัสผ่านเดียวกัน พวกเขาก็จะเก็บเกลือไว้เหมือนกัน หากรหัสผ่านเปลี่ยน เกลือควรเปลี่ยน หากผู้ใช้ต่างกัน พวกเขาต้องมีเกลือที่แตกต่างกัน
Score:1
ธง cn

ตามที่กล่าวไว้ในความคิดเห็น bcrypt เป็นแฮชรหัสผ่าน และมีข้อจำกัดที่สำคัญเมื่อเทียบกับฟังก์ชันแฮชการเข้ารหัสทั่วไป

ใช้ตามที่ตั้งใจไว้สำหรับการป้อนรหัสผ่าน แต่ใช้เกลือเหมือนกับอินพุต จะปลอดภัยเท่ากับการไม่ใส่เกลือเลย จุดประสงค์ของเกลือคือเพื่อป้องกันการโจมตีหลายเป้าหมายและป้องกันการใช้ตารางสายรุ้ง หากเกลือเหมือนกับอินพุต สิ่งนี้จะอนุญาตให้โจมตีได้ เนื่องจากตอนนี้ผู้โจมตีรู้แล้วว่าเกลือสำหรับรหัสผ่านเป้าหมายที่กำหนดคืออะไร

การใช้เป็นฟังก์ชันแฮชทั่วไปจะทำให้ชุดของปัญหาแตกต่างไปจากเดิมอย่างสิ้นเชิง ซึ่งเลวร้ายที่สุดคือการชนกัน bcrypt มีขีด จำกัด อินพุต 72 ไบต์สำหรับข้อความอินพุต หากคุณแฮชข้อมูลจำนวนมาก มันจะมีแฮชเดียวกันกับคำนำหน้า 72 ไบต์ bcrypt ยังป้อนอินพุตสั้นๆ ซ้ำจนกว่าจะเต็มอาร์เรย์สถานะ 72 ไบต์ ดังนั้นรหัสผ่าน 18 อักขระจะมีเอาต์พุตเดียวกันกับรหัสผ่านนั้นซ้ำ 4 ครั้ง การใช้งานอาจแฮชอินพุตล่วงหน้าด้วยบางอย่างเช่น SHA-512 ก่อนที่จะได้รับ bcrypt ซึ่งป้องกันปัญหาเหล่านั้น แม้ว่าในกรณีดังกล่าว แม้ว่าจะช้า แต่เอาต์พุตก็ยังมีความยาวเพียง 192 บิต ซึ่งจำกัดความต้านทานการชนกันอย่างมากสำหรับการใช้งานในสิ่งต่างๆ เช่น ลายเซ็นดิจิทัล

ด้วยข้อจำกัดทั้งหมดเหล่านี้ มีตัวเลือกที่ดีกว่าอย่างชัดเจนหากคุณต้องการทำให้ฟังก์ชันแฮชช้าลง วิธีที่ชัดเจนที่สุดคือเรียกใช้เอาต์พุตของฟังก์ชันแฮชซ้ำๆ ซ้ำๆ สิ่งนี้ยังซับซ้อนน้อยกว่า bcrypt และสามารถให้คุณนำฟังก์ชันที่มีอยู่แล้วมาใช้ซ้ำได้ทั้งในซอฟต์แวร์และฮาร์ดแวร์ หากคุณกังวลเกี่ยวกับการติดขัดในแฮชเชนด้วยเหตุผลบางประการ คุณสามารถเพิ่มคำนับการวนซ้ำอย่างง่ายลงในอินพุตได้เสมอสำหรับฟังก์ชันแฮชแบบกำหนดพารามิเตอร์บางตัว คุณสามารถเพิ่มจำนวนรอบภายในได้ ตัวอย่างเช่น Keccak สามารถขยายให้ใช้รอบได้มากขึ้น การใช้งานบางอย่างที่สร้างปุ่มรอบตามอัลกอริทึมอาจต้องการการเปลี่ยนแปลงโค้ดเพียงบรรทัดเดียว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา