Sha-256

為什麼 SHA-256(或任何其他)對於密碼來說太快,但對於發現衝突卻“慢”?

  • March 9, 2018

通常,為什麼不應使用一組雜湊算法(包括 SHA-256 或更高版本,即使加鹽)儲存密碼的標準答案是“因為它們是‘快速’雜湊”,“攻擊者可以訪問特定硬體“, 等等。

為什麼 SHA-256(或其他一些雜湊)對於密碼來說太快,但對於發現衝突卻“慢”?提出相同問題的其他方法是: SHA 何時“慢”到足以發揮作用?為什麼攻擊者用來破解密碼的特殊硬體也不能用於查找 SHA 衝突?

我懷疑答案與密碼通常很小的事實有關。如果是這樣,問題會更準確:消息的大小是多少,開始值得使用 SHA-256(例如)?

我懷疑答案與密碼通常很小的事實有關。

不,實際上,答案與密碼通常是可預測的這一事實有關。這意味著在散列函式的所有可能輸入集合中,其中相對較少的部分更有可能成為某人的密碼。例如,Password1比(使用 XKCD 漫畫方法生成)更有可能是某人的密碼act chance past language後者又比<Cj{Vm7&Jr5y9<(使用此頁面生成)更有可能。與任何隨機選擇的 14 字節序列(甚至不太可能是可列印的 ASCII)相比,最後一個更可能是某人的密碼。

使密碼變弱的原因在於,一些候選密碼比其他密碼更有可能意味著攻擊者可以有效地利用這種策略:

  1. 優先考慮很可能是密碼的猜測,而不是不太可能的猜測。
  2. 使用專用硬體以非常高的速度執行此猜測過程。

您可能聽說過“字典攻擊”一詞,這是一種非常簡單有效的 #1 技術。只需列出可能的密碼並嘗試所有密碼。或者從網上下載一個;這個,它收集“每個單詞列表、字典和密碼數據庫洩漏

$$ the author $$可以在網際網路上找到”有 1,493,677,782 個條目,大約 $ 2^{30} $ .


在抗碰撞場景中,這相當於如果我們有一些程序能夠針對我們正在攻擊的散列函式,優先考慮比其他更可能發生碰撞的輸入對。有一些關於如何對 MD5 或 SHA-1 等損壞的雜湊函式執行此類操作的知識,但不適用於 SHA-256。鑑於我們的知識狀況,我們不知道有任何方法可以確定搜尋的優先級,以便我們嘗試更有可能發生碰撞的配對,而不是不太可能發生的配對。

由於我們不知道優先搜尋的聰明方法,因此,通用數學(生日問題)告訴我們它應該帶我們 $ 2^{128} $ 猜測找到一個 SHA-256 碰撞對。這個數字遠大於 $ 2^{30} $ - 我上面引用的入口密碼字典。由於 SHA-256 比專用密碼散列函式快得多,因此您可以比測試密碼猜測更快地測試碰撞對的猜測,但絕對沒有什至接近 $ 2^{98} $ 快幾倍(大約 $ 3 \times 10^{29} $ ).

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