為什麼 MD4 取代了 MD2?
MD2 是基於在狀態數組排列中交換字節的雜湊函式,很像 RC4 流密碼,而 MD4 是一種新穎的結構。儘管 MD4 被破壞得更嚴重,但 MD4 取代了 MD2。甚至 MD5,對 MD4 的改進,也比 MD2 更壞!針對 MD2 的最佳碰撞攻擊具有 2 63.3次壓縮函式評估的時間複雜度和 2 52 個雜湊值的記憶體需求,僅略優於生日攻擊,並且與針對 SHA-1 的碰撞攻擊(2 63.1時間)。在我看來,人們可以通過使用 MD2 來節省很多麻煩,直到碰撞攻擊變得可行,跳過 MD4、MD5 甚至 SHA-1,但顯然這並沒有發生。那麼為什麼 MD2 被 MD4 和朋友丟棄了呢?
我們可以從定義或提及這三種算法的各種 Internet RFC 中獲得一些線索。MD4 和隨後的 MD5 似乎有兩個優點:
- 表現
- 許可
似乎在發現針對 MD5 的攻擊之前很久就預料到了對 MD2 的攻擊,即使實際上沒有發現。
1989 年 8 月:RFC 1115定義了 MD2。它是隱私增強郵件的一系列 RFC 的一部分。它簡單地說:
它由 RSA Data Security, Incorporated 的 Ron Rivest 提供,用於支持增強隱私的電子郵件,不受許可限制。
“規範”只是 C 中參考實現的原始碼,日期為“88 年 10 月 1 日”(大概 1988 年 10 月 1 日)
1990 年 10 月:RFC 1186定義了 MD4。奇怪的是,整個文件中都沒有提到 MD2。
與 RFC 1115 不同,MD4 被呈現為通用算法,而不是特定框架的一部分:
因此,MD4 算法非常適合數字簽名應用程序,其中必須以安全方式“壓縮”大文件,然後才能使用 RSA 公鑰密碼系統進行簽名。
出於任何和所有目的,智慧財產權也更明確地被放棄:
MD4 算法正被置於公共領域以供審查並可能作為標准採用。
算法的性能得到了明確的強調:
MD4 算法被設計為在 32 位機器上非常快。在 SUN Sparc 站上,MD4 以 1,450,000 字節/秒的速度執行。在 DEC MicroVax II 上,MD4 以大約 70,000 字節/秒的速度執行。在 20MHz 80286 上,MD4 以大約 32,000 字節/秒的速度執行。此外,MD4 算法不需要任何大的替換錶;該算法可以非常緊湊地編碼。
摘要中包含免責聲明,即這是一種新穎的算法,可能需要進一步審查:
MD4 算法的弱點已經過仔細審查。然而,這是一種相對較新的算法,進一步的安全分析當然是合理的,就像任何此類新提議一樣。
1992年4 月:RFC 1319、1320和1321分別重新定義了 MD2 和 MD4,並定義了 MD5
雖然明確作為系列出版,但在這三個中的任何一個中似乎都沒有 MD2 與 MD4 或 MD5 的任何比較。所有三個 RFC 都包含一個實際實現所有三種算法的參考實現。
RFC 1319的主要目的是提供算法的文本描述,以及更便攜的參考實現。它還包含適用於 MD4 的目的聲明:
MD2 算法適用於數字簽名應用程序,其中必須以安全方式“壓縮”大文件,然後才能使用公鑰密碼系統(如 RSA)下的私有(秘密)密鑰進行簽名。
雖然它繼續說:
為非商業網際網路隱私增強郵件授予使用 MD2 的許可
這似乎比“置於公共領域”更具限制性,並且如果該算法受到任何智慧財產權法的保護,是否可以在該領域之外使用它就變得模棱兩可了。
在“安全注意事項”下,對 MD2 安全性的信心直言不諱:
本備忘錄中討論的安全級別被認為足以實現基於 MD2 和公鑰密碼系統的非常高安全性的混合數字簽名方案。
RFC 1320是先前 MD4 描述的次要修訂,具有新的參考實現。
摘要中之前提到的問題現在在安全注意事項部分中很突出,溫和的建議是嘗試使用 MD5:
我們不知道 MD4 不足以實現非常高安全性的數字簽名方案的任何原因,但由於 MD4 的設計速度非常快,因此它在冒成功密碼分析攻擊的風險方面處於“邊緣”。經過進一步的嚴格審查後,可能適合考慮將 MD4 用於非常高安全性的應用程序。對於審核完成前的安全性非常高的應用程序,MD5 算法
$$ 4 $$被推薦。
RFC 1321是第一個定義 MD5 的。它的介紹包括與 MD4 一樣的速度、緊湊性和一般適用性的大部分聲明,以及對設計新算法的原因的解釋:
MD5 算法是 MD4 消息摘要算法的擴展。MD5 比 MD4 稍慢,但在設計上更“保守”。MD5 的設計是因為人們認為 MD4 被採用的速度可能比現有的批判性審查所證明的要快;因為 MD4 的設計速度非常快,所以就冒著成功的密碼分析攻擊的風險而言,它處於“邊緣”。MD5 稍微退後一點,放棄一點速度以獲得更大的最終安全性。它包含了不同審閱者提出的一些建議,並包含額外的優化。
它還包括相同的明確許可聲明:
MD5 算法正被置於公共領域以供審查並可能作為標准採用。
1998 年 3 月:RFC 2313引用了所有三種算法。在重複 MD4 因為它強調速度而“處於邊緣”之後,它比較了 MD2 和 MD5:
MD5,有四輪,比例比MD4慢,推薦到MD4審核完成為止。MD5 內部壓縮函式中報告的“偽碰撞”
$$ dBB93 $$似乎對 MD5 的安全性沒有任何實際影響。
三者中最慢的 MD2 具有最保守的設計。尚未發布針對 MD2 的攻擊。
2002 年 4 月:RFC 3279引用 MD2。它包括這個有趣的註釋,它證實了我對 MD2 許可問題的懷疑:
MD2 由 Ron Rivest 為 RSA Security 開發。RSA Security 最近將 MD2 算法置於公共領域。此前,RSA Data Security 已授予將 MD2 用於非商業網際網路隱私增強郵件 (PEM) 的許可。
它沒有為此版本提供任何參考,因此不清楚它有多“新”。
它也與上面引用自 RFC 2313 的斷言有些矛盾,引用了 1995 年發布的對 MD2 的部分攻擊:
在 1995 年 5 月的 Selected Areas in Cryptography ‘95 會議上,Rogier 和 Chauvaud 提出了一種針對 MD2 的攻擊,該攻擊幾乎可以發現衝突。當可以找到兩條不同的消息生成相同的消息摘要時,就會發生衝突。MD2 中的校驗和操作是攻擊成功的唯一障礙。因此,不鼓勵將 MD2 用於新應用程序。
2011年3 月:RFC 6149、6150和6151停用或更新所有三種算法的狀態。在上一個系列之後的 19 年,我們得到了一些回顧性分析。
RFC 6149淘汰 MD2,理由是:
MD2 於 1992 年作為資訊 RFC 發布。自發布以來,MD2 已被證明不是無碰撞的
$$ ROCH1995 $$ $$ KNMA2005 $$ $$ ROCH1997 $$,儘管對於正確實施的 MD2 的成功碰撞攻擊並沒有那麼具有破壞性。已經展示了針對 MD2 的成功原像和第二次原像攻擊$$ KNMA2005 $$ $$ MULL2004 $$ $$ KMM2010 $$.
它給出了引用 MD2 的 RFC 列表;大多數似乎已將其作為 MD5 旁邊的選項提供。
更有趣的是,它指出:
MD2 也失寵了,因為它比 MD4 都慢
$$ MD4 $$和MD5$$ MD5 $$. 這是因為 MD2 針對 8 位機器進行了優化,而 MD4 和 MD5 針對 32 位機器進行了優化。MD2 也比安全散列標準 (SHS) 慢$$ SHS $$算法:SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512。
RFC 6150淘汰了 MD4,其理由相似但更強大。有趣的是,在 RFC 文本中偶然提到了“MD2”而不是“MD4”,但似乎沒有任何明確的比較。
與 MD2 不同,RFC 包含大量關於 MD4 中斷的文件;Rivest 在 1992 年警告其未經檢驗的性質似乎是正確的。
RFC 6151並沒有完全淘汰 MD5,而是建議不要使用某些用途。
如果 MD5 校驗和僅用於協議內聯以防止錯誤,則 MD5 校驗和仍然是可接受的用途。
但
在需要抗碰撞性(例如數字簽名)的情況下,MD5 不再可接受。
它沒有提及 MD2 或 MD4,只是在密碼分析中引用了涵蓋 MD4 和 MD5 的論文。