RIPEMD 與 SHA-x 的主要優缺點是什麼?
RIPEMD 是一系列加密雜湊函式,這意味著它與 MD5、SHA-1 和 SHA-256 的用途大致相同。RIPEMD 的維基百科頁面似乎有一些好話要說:
- “在開放的學術社區中設計”
- “不是$$ … $$受任何專利的約束”
我很少看到 RIPEMD 用於商業軟體,或者在針對軟體開發人員的文獻中提到。這個關於 RIPEMD 與 SHA-x的舊 Stackoverflow.com 執行緒並不能幫助我理解原因。
RIPEMD-128/256 和 RIPEMD-160/320 與具有相同摘要大小的其他加密雜湊函式相比有哪些優缺點?為什麼 RIPEMD 沒有看到更廣泛的商業應用?
最初是MD4,然後是MD5;MD5 是後來設計的,但兩者同時作為開放標準發布。MD5 的設計是因為懷疑 MD4 中的弱點(這是非常真實的!)。因此,MD5 是第一個(並且在當時被認為是安全的)高效散列函式,具有公開的、可讀的規範。MD5 立即廣受歡迎。
最初的 RIPEMD 是 MD4 的變體;實際上是兩個 MD4 實例並行,在某些地方交換數據元素。RIPEMD 的效率略低於 MD5。此外,由於它基於 MD4,因此有人擔心它與 MD4 有一些弱點(Wang 在 2004 年發表了對原始 RIPEMD 的衝突)。最後但並非最不重要的一點是,原始 RIPEMD 沒有公開的免費可用規範(它在科學大會上發表,但該文章不能在“網上”免費獲得;當我為sphlib實現 RIPEMD 時,我必須獲得一個來自函式作者之一的 Antoon Bosselaers 的副本)。所以 RIPEMD 只取得了有限的成功。
NIST 看到 MD5 並得出結論,其中有些東西讓他們不滿意;尤其是 128 位輸出,隨著電腦計算性能的不斷提高,它必然會變得“脆弱”。因此他們設計了具有 160 位輸出的“SHA”,很快修改為 SHA-1(舊的 SHA 通俗地重命名為“SHA-0”)。得到美國聯邦政府的支持是一個強大的動力,NIST 做得很好,有明確和免費的規範,有詳細的測試向量。所以 SHA-1 是成功的。
RIPEMD 的作者在 MD5 中看到了與 NIST 相同的問題,並對 RIPEMD-160(和簡化版 RIPEMD-128)的設計做出了反應。RIPEMD-160 似乎非常強大。但是,它出現在 SHA-1 之後,並且比 SHA-1 慢,所以它的成功有限。RIPEMD-160 最顯著的用法是在PGP中,它被設計成一種反抗一般政府機構的姿態,因此使用 RIPEMD-160 而不是 SHA-1 是有意義的。
從那時起,NIST 在定義散列函式(和其他加密原語)中的主導作用只會加強,因此 SHA-2 被迅速採用,而與之競爭的散列函式(例如 RIPEMD-256,RIPEMD 的 256 位版本-160,或者Tiger或Whirlpool)僅在利基產品中找到了自己的方式。
**總結:**對於商業應用,首先到達的功能以及由 NIST 等標準化機構推廣的功能都有巨大的紅利。
至於使用RIPEMD-160 還是 RIPEMD-256 是個好主意的問題:
- RIPEMD-160 獲得了合理的曝光和分析份額,並且看起來很穩健。但是它的輸出長度相對於目前的時尚來說有點太小了(如果你使用 128 位密鑰加密,你應該為了一致性,瞄準 256 位輸出的雜湊函式),並且性能不是很好。通常的建議是堅持使用 SHA-256,它是“標準”並且可以使用更優化的實現。
- RIPEMD-256 是一個相對較新且晦澀的設計,即它沒有像 SHA-* 那樣受到關注,因此建議謹慎。
所以我的建議是:使用 SHA-256。通過使用 RIPEMD-160 或 RIPEMD-256,您可能不會遇到實際的安全問題,但您至少可以證明您的非標準選擇是合理的。