Sha-256

重複執行 SHA-256 時有什麼弱點嗎?

  • January 15, 2020

如果您知道輸入是 SHA-256 的 32 字節輸出,那麼反轉 SHA-256 雜湊是否容易得多?

我假設 SHA-256 的大多數輸出將有零個、一個或兩個可能的 32 字節輸入。

映射和儲存所有值是不可行的,但我仍然擔心將輸入限制為正好 32 個字節可能會削弱 SHA-256。

這是一個有效的擔憂嗎?

回答

不,那是不可能的。如果輸入是特定形式的,如果散列突然可逆,那將是非常奇怪的——這基本上意味著散列會被破壞。遍歷這 32 個字節的所有可能值當然也不是一種選擇。

特點

但這並不意味著這樣的結構沒有它的特點,mikazo 提供的第一個連結很好地總結了預期。

如果您想避免這種特殊性,那麼我建議您按照CodesInChaos 的建議使用具有固定密鑰的 HMAC 構造而不是直接使用 SHA-256。例如,使用 SHA-3 (Keccak) 無法進行長度擴展攻擊,您可能可以使用它而無需恢復為 HMAC。

筆記

  • SHA-2 的內部狀態基本上是輸出(在填充和包含消息大小之後);所以 32 字節的輸入本身當然不是問題,因為內部狀態的大小完全相同。
  • 您的方案可能具有一些可以與基於散列的 PRNG進行比較的屬性

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