Sha-256
重複執行 SHA-256 時有什麼弱點嗎?
如果您知道輸入是 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進行比較的屬性