ประการแรก การชนกันของการเข้ารหัสลับไม่พบโดยการค้นหาหรือโดยบังเอิญ มีการคำนวณเนื่องจาก - ด้วยเหตุผลบางประการ - อัลกอริทึมแฮชใช้งานไม่ได้ คุณยังคงต้องสร้างเกี่ยวกับ $2^{128}$ แฮชเพื่อค้นหาการชนกัน แม้ว่าคุณจะเอาวันเกิดมาผูกไว้ก็ตาม และจำไว้ว่าคุณต้องทำการเปรียบเทียบด้วยเช่นกัน แม้ว่าจะมีเคล็ดลับในการเร่งความเร็วนั้น
แทนที่ทีมที่ดำเนินการวิเคราะห์จะพบจุดอ่อนและใช้ประโยชน์จากมัน ซึ่งบางครั้งต้องใช้ทรัพยากรจำนวนมาก นอกจากนี้ยังหมายความว่าหากคุณสร้างการชนกัน คุณมีแนวโน้มที่จะสามารถสร้างการชนกันได้มากขึ้นโดยใช้วิธีการเดียวกัน
หากสถานะภายในจำนวนค่อนข้างน้อยได้รับผลกระทบ อาจ เป็นไปได้ที่จะแก้ไขแฮช - SHA-1 ที่ชุบแข็งเช่นได้รับการป้องกันจากการโจมตีแบบ SHAttered แน่นอนว่าตอนนี้ SHA-1 อ่อนแอแล้ว มีเหตุผลมากมายที่จะต้องย้ายไปที่เช่น อย่างไรก็ตาม SHA-256 และฉันไม่เคยเห็น SHA-1 ที่ชุบแข็งเลย
แม้ว่าคุณจะมีเพียงสองอินพุตที่สร้างค่าแฮชเดียวกัน คุณอาจประสบปัญหา แฮชทำงานแบบบล็อกต่อบล็อกภายใน หากเป็นไปได้ที่จะพบการชนกัน บล็อกถัดไปก็จะมีความเสี่ยงเช่นกัน กล่าวอีกนัยหนึ่งถ้าคุณพบว่า $H'(B_1) = H'(B_2)$ แล้ว $H'(B_1 \| E) = H'(B_2 \| E)$ ที่ไหน $\|$ คือการต่อ โปรดทราบว่าส่วนขยาย $E$ อาจมี ใดๆ ข้อมูล. ในแง่นั้น: หากคุณพบการชนกันหนึ่งครั้งสำหรับ SHA-256 แสดงว่าคุณพบการชนกันของข้อความที่ขึ้นต้นด้วยบล็อกหรือบล็อกข้อมูลเฉพาะ
สำหรับ SHA-3 สถานการณ์จะซับซ้อนกว่าเล็กน้อย (ขึ้นอยู่กับว่าสถานะภายใน - เช่น ความจุของฟองน้ำที่ใช้แล้ว - เหมือนกันก่อนหรือหลังการดำเนินการขั้นสุดท้าย) แต่โดยพื้นฐานแล้วคุณยังคงมีปัญหาอยู่
หากการชนกันประเภทนี้ใช้กับโปรโตคอลของคุณก็เป็นอีกคำถามหนึ่ง แบบแผนเช่น HMAC ที่ใช้ฟังก์ชันแฮชจะไม่ได้รับผลกระทบเลย เนื่องจากไม่ต้องการการต้านทานการชนกันจากฟังก์ชันแฮชที่กำหนดค่าไว้