Score:2

จะมีประสิทธิภาพแค่ไหนหากฉันรวมสองฟังก์ชันแฮช เช่น MD5(SHA256(อินพุต))

ธง in

หากได้ลองลงมือทำ MD5(SHA256(อินพุต))อะไรคือจุดแข็งของแนวทางการแฮชสองครั้งที่เรียกว่านี้

แข็งแกร่งเท่ากับ SHA256 หรือแข็งแกร่งเท่ากับ MD5 หรือแข็งแกร่งเท่ากับ SHA256 + MD5 หรือไม่

นี่ไม่ใช่คำถามการบ้าน แต่ฉันถามเพราะปัญหาจริงในโครงการของฉัน โดยถูกต้องแล้ว ฉันต้องทำเท่านั้น SHA256 (อินพุต) บนอินพุตและเก็บไว้ในคอลัมน์ในตาราง MySQL หนึ่งตาราง แต่ข้อกังวลในทางปฏิบัติของฉันคือ: SHA256 มีความยาว 64 เมื่อเข้ารหัส base64 แต่ MD5 มีความยาว 32 เมื่อเข้ารหัส base64 ฉันต้องการดัชนีในคอลัมน์นี้ MySQL จะทำงานได้ดีขึ้นหรือไม่เมื่อฉันใช้ MD5(SHA256(input)) เพราะมันสั้นกว่า (อาจเป็นเพราะต้นไม้ B+ ที่ควบแน่นมากขึ้นหรือโดยพื้นฐานแล้วเล็กกว่าหมายถึงพื้นที่จัดเก็บน้อยลง)


แก้ไขเองครับ ลองคิดดูว่า คำว่า "แรง" ในที่นี้หมายถึงอะไร? มันคือความต้านทานก่อนอิมเมจหรือความต้านทานพรีอิมเมจที่สอง?

us flag
ลองนึกถึงฟังก์ชันแฮชอื่นๆ ที่แย่กว่าการชนกันของ MD5 มาก -- พูดว่า Hash(X) = 1... ความปลอดภัยของ Hash(SHA256(X)) จะเป็นอย่างไร ตรรกะเดียวกันกับคำถามนี้
fgrieu avatar
ng flag
แฮช SHA-256 (resp. MD5) คือ _not_ ของความยาว 64 (resp. 32) เมื่อเข้ารหัส base-64การใช้ไบนารีเป็นคีย์ค้นหาไม่มีเหตุผลด้านไอที _good_ ที่จะเป็นปัญหา และมีเหตุผลให้เร็วขึ้น เนื่องจากไม่มีการระบุเป้าหมายด้านความปลอดภัยของระบบโดยรวม เราจึงไม่สามารถบอกได้ว่าบรรลุเป้าหมายหรือไม่ ฉันเปิด Q อีกครั้ง แต่จริง ๆ แล้วทำไมจึงพิจารณาสิ่งนี้ด้วย MD5 ที่เสียหาย ทำไมไม่ตัดแฮชสมัยใหม่?
kelalaka avatar
in flag
[RIPEMD](https://en.wikipedia.org/wiki/RIPEMD) ใช้งานได้ดีกว่า MD5 ซึ่ง Bitcoin ใช้ RIPEMD-160 อยู่แล้ว
kelalaka avatar
in flag
ขนาดข้อมูลทั้งหมดคืออะไร? เหตุใดการปะทะกันจึงสำคัญสำหรับคุณ เหตุใดคุณจึงใช้ PRP ที่รับประกันความเป็นเอกลักษณ์ไม่ได้หากข้อมูลไม่ซ้ำกัน เป้าหมายของคุณไม่ชัดเจนที่จะให้คำตอบแบบเต็ม... และส่วนของต้นไม้ B+ นั้นนอกหัวข้อที่นี่
dave_thompson_085 avatar
cn flag
นอกเหนือจากความเป็นจริงแล้ว การจัดเก็บ SHA256 ที่ถูกตัดทอนนั้นดีพอๆ กับการเข้ารหัส หากคุณต้องการ คุณสามารถจัดเก็บ SHA256 แบบเต็มและมี MySQL _index_ เป็นคำนำหน้าเท่านั้น ดูคู่มือ แต่นั่นไม่ใช่การเข้ารหัสและเป็นเรื่องนอกประเด็น
Score:3
ธง ng

เราศึกษาแฮช $H$ ที่กำหนดโดย $H(ม.):=H_2(H_1(ม.))$ด้วย SHA-256 สำหรับ $H_1$ และ MD5 สำหรับ $H_2$.

เดอะ ความต้านทานการชนกันของ MD5 นั้นแย่มากดังนั้นอาร์กิวเมนต์ทั่วไปที่ความต้านทานการชนของ $H$ เป็นอย่างน้อยที่สุดของความต้านทานการชนของ $H_1$ และ $H_2$ ทำให้เราไม่ไปไหน

อาร์กิวเมนต์ทั่วไป² ที่ต้านทาน preimage แรกของ $H$ เป็นอย่างน้อยของ $H_2$ ทำงานได้เนื่องจากเราเชื่อมั่นในการต้านทานพรีอิมเมจของ MD5; ซึ่งถูกตั้งคำถาม (ดู นี้) แต่ไม่แตกในทางปฏิบัติ

สิ่งเดียวที่ฉันคิดได้เกี่ยวกับความต้านทานพรีอิมเมจที่สองของ $H$ คือมันไม่สามารถดีกว่าความต้านทานพรีอิมเมจที่สองของ $H_1$. นั่นไม่ได้รับประกันความปลอดภัย และเนื่องจากการต้านทานพรีอิมเมจที่สองของ SHA-256 นั้นเชื่อว่าดีซึ่งไม่ก่อให้เกิดการโจมตีเช่นกัน


จากมุมมองที่นำไปใช้ (ซึ่งเป็นสิ่งที่คำถามดูเหมือนจะเกี่ยวกับเนื่องจากกล่าวถึงแอปพลิเคชันที่เป็นรูปธรรม) ฉันไม่เห็นว่าการโจมตีแบบเข้ารหัสลับใด ๆ ที่มีอยู่ใน MD5 หรือ SHA-256 นั้นมีความเกี่ยวข้อง

  • ความต้านทานการชนของ MD5 ถูกทำลายแต่ขนาดอินพุต MD5 ที่สั้น (ขนาดเอาต์พุต 256 บิตของ SHA-256 เป็นเพียงครึ่งหนึ่งของบล็อกอินพุตของ MD5) และข้อจำกัดที่หนักหน่วงที่อินพุตนี้เป็นแฮช แต่ละขนาดก็เพียงพอแล้วที่จะทำให้การโจมตีการชนกันของ MD5 ที่มีอยู่ใช้ไม่ได้ (การจำกัด ดีกว่ากำลังดุร้าย)
  • ทั้ง SHA-256 และ MD5 มีสิ่งไม่พึงประสงค์ คุณสมบัติการขยายความยาวแต่ความยาวคงที่ของอินพุต MD5 นั้นบล็อกสำหรับคุณสมบัติของ MD5 และการแฮชเอาต์พุต SHA-256 ใหม่เป็นบล็อกขนาดครึ่งหนึ่งของ SHA-256

ดังนั้นการโจมตีที่เกี่ยวข้องกับการเข้ารหัสเท่านั้นที่ฉันเห็นคือการโจมตีที่เหลืออยู่สำหรับแฮชในอุดมคติ $H_1$ และ $H_2$ ด้วยความกว้างเอาต์พุตตามลำดับ เนื่องจาก $H_2$ แคบกว่ามาก $H_1$, การโจมตีด้วยกำลังดุร้ายถูกจำกัดด้วยความกว้างของ $H_2$ และการพิจารณาความเร็ว โดยเฉพาะอย่างยิ่ง:

  • แฮชผสมของคำถามมีความกว้างเพียง 128 บิต ดังนั้นจึงสามารถแสดงการชนกันได้โดยประมาณ $2^{66}$ การประเมิน (ทั้ง SHA-256 และ MD5) โดยใช้มาตรฐาน การค้นหาการชนแบบกระจาย. ฉันสามารถจินตนาการถึงสถานการณ์ที่ความต้านทานการชนต่ำเป็นปัญหาได้ (และไม่สามารถบอกได้ว่าขึ้นอยู่กับแอปพลิเคชัน)
  • แฮชแบบผสมไม่สามารถใช้ได้สำหรับ การยืดที่สำคัญที่จำเป็นสำหรับรหัสผ่าน เพราะมันเร็วเกินไปและหน่วยความจำไม่แข็ง แม้ว่าจะไม่มีการระบุการยืดคีย์เป็นข้อกำหนด

แฮชแบบผสมนั้นไม่มีอาร์กิวเมนต์ด้านความปลอดภัยที่ชัดเจน ไม่เร็วมากโดยเฉพาะอย่างยิ่งสำหรับการป้อนข้อมูลสั้นๆ และอย่างน้อยก็แย่ในแง่ของการประชาสัมพันธ์เนื่องจาก MD5 ใช้งานไม่ได้ เท่าที่ฉันสามารถบอกได้ก็คือ ในทางปฏิบัติ ดีพอ ๆ กับแฮช 128 บิตที่เร็วเล็กน้อยใด ๆ ที่สามารถทำได้ทั้งหมด ทางเทคนิค จุดยืน รวมทั้งไม่เป็นที่พอใจในการต้านทานการชน (แต่ไม่มีความแน่นอนว่าการต้านทานการชนเป็นข้อกำหนดในกรณีการใช้งาน)ฉันไม่เห็นเหตุผลที่จะใช้แฮชสารประกอบนั้นมากกว่าสิ่งที่ทันสมัยและปลอดภัยกว่า MD5 รวมถึง SHA-2 บางส่วน (อาจถูกตัดทอน) หรือ SHAKE128 ของ SHA-3 ที่มีขนาดเอาต์พุตที่ปรับได้ หรือ Blake2b (หรือ Blake3 หลังจากฝุ่นตกลง) .


¹ ตั้งสมมุติฐานการชนกันของ $H$, นั่นคือ $(ม,ม')$ กับ $m\ne ม'$ และ $H(m)=H(m')$. เราสามารถคำนวณ $w=H_1(ม)$ และ $w'=H_1(m')$. ถ้า $w=w'$, เรามีการปะทะกันสำหรับ $H_1$. มิฉะนั้นเรามี $H_2(w)=H_2(w')$ กับ $w\ne w'$จึงชนกันเพื่อ $H_2$. ดังนั้นเราจึงหักต้านทานการชนสำหรับ $H_1$ หรือ $H_2$.

² ตั้งสมมติฐานของอัลกอริทึมในการค้นหาภาพจำลองแรกสำหรับ $H$ที่ได้รับ $h$ การหา $m$ ดังนั้น $H(ม)=h$ ด้วยความน่าจะเป็นที่ไม่สำคัญและความพยายามที่เป็นไปได้ เราสามารถคำนวณ $w=H_1(ม)$ และเป็นเช่นนั้น $h=H_2(w)$. ดังนั้นเราจึงสร้างวิธีการค้นหาภาพตัวอย่างแรกสำหรับ $H_2$ ด้วยความน่าจะเป็นของความสำเร็จที่ไม่สำคัญเท่าเดิม และโดยพื้นฐานแล้วความพยายามเช่นเดียวกับอัลกอริทึมที่ตั้งสมมติฐานไว้

³ อัลกอริทึมในการค้นหาพรีอิมเมจที่สองสำหรับ $H_1$ที่ได้รับ $m$ การหา $m'\ne ม$ ดังนั้น $H_1(ม)=H_1(ม')$, ยังค้นหาภาพพรีอิมเมจที่สองสำหรับ $H$.

โพสต์คำตอบ

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