Collision-Resistance

假設在一組 <100k 的字元串上不會發生 SHA1 衝突是否公平

  • August 22, 2021

我正在建構一個必須採用文件路徑並為每個路徑生成唯一名稱的系統。我打算使用 SHA1 作為雜湊函式。我的問題是:我是否必須處理可能的衝突(兩條不同的路徑產生相同的 SHA1 值)或者我可以假設它不會發生?

在這樣的集合中發生碰撞的機會大約是 $ \frac{1/2 \cdot n^2}{2^{160}} $ , 對於 n=100k 的計算結果約為 $ 3.4 \cdot 10^{-39} $ . 所以公平地說,這樣的碰撞不會偶然發生。

AFAIK 沒有人發現過 SHA-1 碰撞迄今為止,唯一具體的 SHA1 衝突是 Google 在 2017 年 2 月 23日發生的(在此處找到)。一旦你生成約 $ 2^{80} $ 或者 $ 10^{24} $ 雜湊。

如果密碼分析取得進展,攻擊者可能能夠創建故意碰撞的輸入。然而,目前還沒有已知的方法可以有效地做到這一點。當然,這只適用於您的應用程序需要防止故意碰撞的情況;許多應用只需要防止意外碰撞。如果您需要防止故意碰撞,我更喜歡 SHA-2 而不是 SHA-1。

引用自:https://crypto.stackexchange.com/questions/2583