Hash
SHA 的安全漏洞有哪些?
我一直在廣泛研究 SHA 算法,特別是 SHA1、SHA2-256、SHA2-512、SHA3-256 和 SHA3-512,並發現了許多成功的碰撞攻擊實例和方法。
在我的列表中有以下內容:
蠻力攻擊
- 生日攻擊
- Yuval 的生日攻擊(改進了不同條件下的生日攻擊)
減少回合攻擊
- 成功攻擊所有 SHA 算法、SHA1、SHA-2 和 Keccak(SHA-3 的“父”功能)
選擇前綴攻擊
- 在 SHA1 上成功,更多資訊:https ://shattered.io/ 。
以及破壞應用程序中算法提供的安全性的攻擊。
長度擴展攻擊
- 由於 Keccak 海綿函式排列期間容量的串聯,SHA-3 是無懈可擊的。
我已經排除了蠻力攻擊(當不是尋找衝突時),包括字典攻擊,以及彩虹表,因為這些漏洞是由算法本身之外的東西造成的。
我同意你的列表,但我也會考慮添加評論,說明這些攻擊在應用方面對算法的實際安全性有多有害。例如,成功的減少輪次攻擊並不像看起來那樣令人擔憂,因為算法的每一輪額外提供了指數數量的附加安全性,這意味著“破壞”一個 42 輪 SHA256 算法不會破壞完整算法提供的任何安全性。 - 圓形 SHA256。
此外,在實踐中,實際上“破解”算法並不會使其完全不安全,因為成功的攻擊通常會佔用大量資源和時間(破解 SHA1 需要 1.5 年多的時間,並且需要大量電腦才能破解)。因此,即使 SHA1 是“不安全的”,它在理論上仍然可以安全使用,因為在合理的時間內使用有限的資源計算碰撞是不可行的。
可能值得注意的是,根據原像雜湊計算雜湊衝突的不可行性背後的實際數學。找到兩個雜湊衝突的衝突並找到一個與預先存在的雜湊衝突的雜湊是一回事。安全性實際上是根據位長來衡量的,因此理論上需要 2^n 次計算才能在位散列算法中找到衝突。您可以在此處找到有關衡量雜湊算法安全性的方法的更多資訊。