我可以用 SHA-512/160 替換 SHA-1 來解決 Shambles 問題嗎?
目標是需要 SHA-1 結果的軟體(在遠端信任邊界內)。源(在我自己的信任範圍內)用 SHA-512/160 替換我的源中的 SHA-1 計算會更安全嗎?
通用碰撞
對 SHA-512 的通用碰撞攻擊修剪為 $ n=160 $ -bit 將需要 $ 2^{80} $ 生日悖論的複雜性,成功機率為 50%。通用攻擊不需要任何關於目標雜湊函式內部的知識。它是關於收集散列輸出並通過建構一個表並希望您找到衝突來查看它們之間的衝突。費用是 $ O(2^{n/2}) $ 時間和 $ O(2^{n/2}) $ 儲存表的空間。
如果您使用的是 Pollard 的變體 $ \rho $ 你可以實現恆定 $ O(1) $ -空間與 $ O(2^{n/2}) $ -時間。最著名的是 van Oorschot-Wiener時間-記憶權衡技術與成本 $ O(2^{n/2}) $ . 這可以與線性加速並行化。利用 $ O(2^{n/4}) $ 機器並行化並得到答案 $ O(2^{n/4}) $ 時間相同的成本 $ O(2^{n/2}) $ .
如果您考慮對雜湊函式的Quantum 攻擊,由於Brassard 等人,您應該使用 384 或 512 輸出大小。工作。具有 $ \mathcal{O}(\sqrt[3]{n}) $ n 位散列函式的攻擊時間(對於 256 位 $ \mathcal{O}(\sqrt[3]{2^{256}}) \approx \mathcal{O}(2^{85}) $ )。請參閱此答案中的時間表。
SHA-1 弱點和混亂
這些研究利用了 SHA-1 內部的弱點,而 The Shambles 的研究將碰撞減少到 $ 2^{61.2} $ ,請參閱此處的其他工作列表。Shambles 的團隊用他們的新方法使用了 900 個 GPU,成本約為 75.000 美元,最多在兩個月內計算出偽造品。這就是他們稱之為實用的原因。他們的新紀錄;
- 他們減少了中性位BCJ+05和迴旋鏢JP07的使用 $ 2^{64.7} $ 至 $ 2^{61.2} $
- 此外,他們改進了基於圖的技術(LP19)來計算選擇前綴碰撞 $ 2^{67.1} $ 至 $ 2^{63.4} $ .
機器
在攻擊的 900 個 GPU 之前,已經有機器存在,例如 Oak Ridge 的Summit可以到達 $ 2^{63} $ 一天的 SHA-1 計算。只要找不到 SHA-512/160 的弱點,它就會具有 80 位的經典抗碰撞性。
80 位不再安全
今天,任何散列函式的 80 位抗衝突性都被認為是不安全的。NIST 在2011 年從建議中刪除了 SHA-1 簽名。
NIST 於 2011 年正式棄用 SHA-1
$$ NISTSP800-131A-R2 $$並在 2013 年底禁止將其用於數字簽名。
R2 in 2019 on page 18 NIST 允許它用於非簽名,儘管到那時這顯然是一個壞主意(感謝 Dave)。
實際上,可以認為不是刪除了 SHA-1,而是從推薦中刪除了 160 位雜湊輸出。160 位與 80 位安全相關,這在 2000 年代初期就足夠了。並且,請注意,在攻擊者看來,生日攻擊的 50% 機率是不可忽略的。必須考慮較低的機率。
推薦
如果您與美國政府合作,最好將軟體更新為具有良好雜湊大小(如 256、384 或 512)的 SHA3 系列等**新建議。**如果沒有,您還可以使用其他好的散列函式,例如 Blake2。如果你考慮量子攻擊,你應該大於 256。
如果您滿意但不建議使用,您可以使用它。
遷移軟體應該不是什麼大問題。強烈推薦。
遷移到沒有明顯已知弱點的現代散列函式肯定比堅持使用已知被破壞的散列函式要好。此外,為散列過程使用更大的狀態有助於減輕某些攻擊,即使您的輸出大小有限。
在理想情況下,您可以讓系統支持更長的雜湊,但如果選擇 SHA1 或 SHA256-160,那麼您當然應該選擇後者。