在 MD5 與 SHA 家族主導密碼學雜湊領域之前,HAVAL 曾以其靈活的可變輸出設計脫穎而出。然而,隨著碰撞漏洞的揭露,它逐漸淡出現代資安實作的舞台。
HAVAL 的核心設計:彈性與結構
HAVAL 由 Yuliang Zheng 等人於 1992 年提出,設計靈感源自 MD5 的 Merkle–Damgård 結構。它允許開發者自由組合兩個參數:輸出長度(128、160、192、224、256 bits)與運算輪數(3、4、5 輪),形成總計 15 種組合。每一輪使用不同的非線性布林函數,輪數越高,理論安全性越強。訊息以 1024-bit 區塊為單位處理,壓縮函數採用 32-bit 字組運算,整體吞吐量在當時具備競爭力。這種高度彈性的設計使 HAVAL 被視為「可調校的雜湊函數」先驅。
碰撞漏洞與廢棄歷程
2004 年,密碼學家 Wang 等人針對 HAVAL-128/3(3 輪、128-bit 輸出) 成功找出實際碰撞,計算複雜度僅約 2⁶ 次運算,幾乎等同於暴力破解無效。此後研究進一步顯示 4 輪版本亦存在差分攻擊弱點。由於碰撞攻擊直接破壞雜湊函數的第二抗碰撞性(second preimage resistance),NIST 已將 HAVAL 全系列列為不建議使用的演算法。現代應用應改用 SHA-256、SHA-3 或 BLAKE3,這些函數均通過嚴格的公開密碼分析驗證。
💡 重點整理
- 彈性設計:支援 5 種輸出長度 × 3 種輪數,共 15 種組合。
- 致命弱點:3 輪版本碰撞複雜度僅 2⁶,已完全不安全。
- 官方廢棄:NIST 不建議任何版本的 HAVAL 用於現代系統。
- 現代替代:請改用 SHA-256、SHA-3 或 BLAKE3。
HAVAL 的故事提醒我們:靈活性不等於安全性。設計再精巧的演算法,一旦碰撞防線失守,歷史地位便難以挽回。選用雜湊函數時,應以持續的密碼分析驗證為最高準則。
📚 參考文獻
- Zheng, Y., Pieprzyk, J., & Seberry, J. (1992). HAVAL — A One-Way Hashing Algorithm with Variable Length of Output. AUSCRYPT 1992. — HAVAL 原始論文,定義完整規格與設計理念。
- Wang, X. et al. (2004). Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. IACR ePrint 2004/199. — 正式揭露 HAVAL-128/3 碰撞攻擊的關鍵研究。
- NIST Computer Security Resource Center — Hash Functions Project:NIST 官方雜湊函數建議與廢棄演算法清單。
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。
留言
張貼留言