คำถามนี้ทำให้เดาได้ว่าฟังก์ชันการบีบอัดคืออะไร และจะใช้รอบอย่างไร ที่ไม่ได้ระบุ, ไม่การเพิ่มจำนวนรอบในฟังก์ชันการบีบอัดล่าสุดไม่รับประกันว่าจะป้องกันการโจมตีแบบขยายความยาวได้ แม้ว่าฟังก์ชันการบีบอัดจะเปลี่ยนไปและปรับปรุงให้ดีขึ้นโดยการเพิ่มรอบเข้าไปอีก
พิสูจน์โดย counterexample: แก้ไข SHA-512 โดย
- ลบเอกสิทธิ์เฉพาะหรือที่ส่วนท้ายของฟังก์ชันการบีบอัดแต่ละฟังก์ชัน ซึ่งมีผลโดยใช้รหัสบล็อกของ เดวีส์-เมเยอร์ ฟังก์ชั่นการบีบอัดโดยตรงเป็นฟังก์ชั่นการบีบอัด
- และแก้ไขกำหนดการสำคัญของรหัสนั้นเพื่อให้ทำซ้ำหลังจากจำนวนรอบที่ใช้ในรหัสบล็อกของฟังก์ชันการบีบอัด (แต่การเข้ารหัสบล็อกนั้นปลอดภัย)
- และเพิ่มจำนวนรอบเป็นสองเท่าในการเข้ารหัสบล็อกนั้นในฟังก์ชันการบีบอัดครั้งสุดท้าย โดยใช้ค่าคงที่เดิมซ้ำกับในครึ่งแรก
การรวมกันดังกล่าวมีผลแฮชสองเท่าของบล็อกสุดท้ายของข้อความที่ขยาย และใช้ฟังก์ชันการบีบอัดที่สามารถย้อนกลับได้ นั่นทำให้แฮชอ่อนแอลงในทางทฤษฎีต่อการโจมตีบางอย่าง แต่ยังคงไม่แตกหักจากมุมมองเชิงปฏิบัติทั้งหมด และนั่นทำให้มีความเสี่ยงต่อการโจมตีแบบขยายความยาวในบางกรณี ตัวอย่างเช่น เมื่ออินพุตที่ไม่รู้จักคือบล็อกข้อความหนึ่งบล็อก (128 ไบต์) และเรารู้ว่าเป็นแฮช เราสามารถคำนวณได้อย่างมั่นใจว่าแฮชของอินพุต 3 บล็อก (384 ไบต์) โดยเริ่มจากต้นฉบับ ตามด้วยสองเท่าของค่าที่ทราบ บล็อกเท่ากับบล็อกการเติมของ SHA-512 สำหรับอินพุต 128 ไบต์
ในทางกลับกัน หากการเปลี่ยนแปลงที่เราทำในฟังก์ชันการบีบอัดล่าสุดทำให้ไม่เกี่ยวข้องกับการบีบอัดตามปกติ แสดงว่าเราปลอดภัยจากการโจมตีแบบขยายความยาว การเปลี่ยนค่าคงที่ที่ใช้ในแต่ละรอบของรหัสบล็อกของ Davies-Meyer หรือ Matyas-Meyer-Oseas ฟังก์ชั่นการบีบอัดเช่นเดียวกับใน SHA-2 (โดยไม่ต้องเปลี่ยนจำนวนรอบ) จะทำโดยปราศจากข้อสงสัยอย่างสมเหตุสมผล ดังนั้นจะเพิ่มจำนวนรอบเป็นสองเท่าและใช้ค่าคงที่ใหม่ในครึ่งหลัง ฉันไม่ได้แถลงเกี่ยวกับการเพิ่มจำนวนรอบเป็นสองเท่าด้วยค่าคงที่เดียวกัน