如果 SHA-1 壞了,他們為什麼不能修復它?
目前 160 位的散列塊寬度似乎可以提供足夠的安全性來抵禦暴力攻擊。根據最新的 Wikipedia編輯,有關 SHA-1 的最新發展已將強制碰撞的努力減少了 5 個數量級。
其他加密原語已經發展以解決類似發現的問題,例如:-
- RSA -> 增加位數
- RC4 -> RC4A -> Spritz
- Whirlpool0 -> WhirlpoolT -> Whirlpool
我專門使用術語fix,表示保留 SHA-1 160 位要素並進行內部更改/改進。因此,一些(但不限於)更改可能是:-
- 用可能的雙輪修改輪數以配合現有的關鍵時間表為 80 x 2 而不是 80 x 1
- 更改關鍵時間表以直接增加輪數
- 類似於內化 SHA-1(SHA-1(message))
- 額外的位操作
希望你明白這一點。為什麼我們不能這樣做,以便它形成一個外掛升級,從而可以保持現有的塊大小?我的目的是在現有程式碼和數據庫中輕鬆延長 SHA-1 的壽命,而無需進行巨大而深遠的程序更改。我意識到 160 位有一天會變得不安全,需要用更廣泛的散列來最終替代它。
我有 3 個答案:我們無法修復 SHA-1,我們不應該修復 SHA-1,而且我們已經修復了 SHA-1。SHA-1 是一種雜湊標準;許多不同的人可以並且已經實施了它,他們都得到了相同的結果。SHA-1 壞了。我們必須更換它並說服每個人繼續採用新標準。固定的 SHA-1 不會是 SHA-1。我們不應該嘗試最小的修復;我們應該盡可能建構最好(最快、最安全)的雜湊算法。一個最小的修復將使我們保持 SHA-1 有問題的基本結構。如果要切換,我們想要在未來很多年都安全的東西。並儘可能高效。
也就是說,我們已經修復了它。它被稱為硬化 SHA-1;它不受已知和類似的碰撞攻擊的影響,甚至可以向後兼容 SHA-1。它檢測將在碰撞攻擊中發生的模式,並且在隨機數據中非常罕見。強化的 SHA-1 在幾乎任何輸入上都與 SHA-1 相同,但不會相同,而且我們在已發布的類碰撞攻擊中看到的輸入的一小部分。
然而,雖然目前還沒有已知的針對強化 SHA-1 的攻擊,而且速度也不慢。沒有人會幻想 SHA-1 具有與 SHA-2 或 SHA-3 競爭的安全性。即使您需要截斷為 160 位,這些也可能是更安全的選擇。如果您必須將向後兼容性作為快速修復,Hardened SHA-1 是一個很好的技巧,但您應該計劃切換到 SHA-3