MD5 是一種 128 位哈希算法,由科學家 Ronald L. Rivest 在 1990 年代初期創建。 縮寫 MD5 代表消息摘要版本 5。
MD5 加密基於散列法,它涉及形成“指紋”或“總和”以進一步驗證其真實性。 使用此方法,您可以驗證信息的完整性以及密碼哈希的存儲。
MD5歷史
消息摘要算法 (MD5) 的歷史始於 1991 年,當時麻省理工學院教授 Ronald L. Rivest 報告了一種新算法的創建,該算法取代了過時的 MD4。 至於 MD4,正如德國密碼學家 Hans Dobbertin 後來所寫的那樣,確實發現了很多缺點。
Rivest 在 RFC 1321 中描述了新的 MD5 算法。
該算法的工作由研究人員 Bert den Boer 和 Anton Bosselars 繼續進行,他們在 1993 年證明了 MD5 中偽衝突的可能性,此時不同的初始化向量可以與相同的消息摘要匹配。
此外,在 1996 年,Hans Dobbertin 聲稱在 MD5 中發現了碰撞。 那時,更多首選的哈希算法為人所知,例如 RIPEMD-160 加密哈希函數 - 由 Hans Dobbertin、Anton Bosselars 和 Bart Prenel 開發,Whirlpool - 由 Vincent Raymen 和 Paulo Barreto 開發,以及 SHA-1 加密哈希算法。
由於 MD5 中的哈希大小(128 位)相對較小,因此有人談論過生日攻擊的可能性。 由 Jean-Luc Cook 於 2004 年發起的 MD5CRK 項目旨在研究使用生日攻擊的算法的漏洞。 但是,五個月後的 2004 年 8 月 17 日,由於賴雪佳領導的一組中國密碼學家發現了算法中的漏洞,該項目被縮減。
2005 年 3 月,數學家和密碼學家 Benne de Weger、Arjen Lenstra 和 Wang Xiaoyun 創建了兩個具有相同散列和不同公鑰的 X.509 文檔。
一年後,即 2006 年 3 月,捷克密碼學家 Vlastimil Klima 發布了一種算法,您可以在一分鐘內在一台簡單的計算機上確定碰撞。 該算法被稱為“隧道”方法。
作為對工作成果的分析,2008 年,美國國土安全部國家網絡安全管理局 (US-CERT) 的部門建議參與開發的每個人軟件、網站以及網絡用戶,停止使用 MD5 算法,無論其應用目的如何。 之所以提出這樣的建議,是因為他在研究過程中表現出的不可靠性。
2010 年 12 月,中國密碼學家謝濤和馮登國發現了 512 位(一個塊)的消息衝突。 以前,僅在長度為兩個塊或更多的消息中發現衝突。 後來,馬克史蒂文斯通過發布具有相同 MD5 哈希值的區塊取得了類似的結果。 他還開發了一種算法來獲得這種類型的碰撞。
最後一個終結 MD5 算法發展歷史的文件是徵求意見稿——RFC 6151(RFC 是由互聯網工程委員會 (IETF) 制定的官方文件,它描述了特定的規範技術),它實際上將 MD5 識別為不安全的哈希算法。 該文檔建議放棄它,選擇 SHA-2 系列加密算法作為替代方案。
所討論的 MD5 算法被認為是最早用於檢查文件完整性和在 Web 應用程序數據庫中存儲密碼的算法標準之一。
但實際上,相對簡單的功能、較短的輸出長度和執行的操作的簡單性,是該算法的優點,也決定了它的缺點——MD5是指容易被黑客攻擊且具有較低程度的算法防止生日攻擊。