具有截斷輸出的 SHA-2 的不同初始雜湊值可以防止哪些攻擊?
NIST 指定具有截斷輸出的 SHA-2 雜湊函式。這些雜湊使用不同於 SHA-256 或 SHA-512 的初始化值。SHA-224 基於 SHA-256。SHA-384、SHA-512/224 和 SHA-512/256 都是基於 SHA-512。
雖然我看到了關於為什麼截斷的 SHA-2 函式使用不同的初始值的鬆散評論,但我沒有看到任何強有力的推理。我唯一能正式找到的是來自RFC 3874 的引用:“A 224-bit One-way Hash Function: SHA-224”,“1.1.Usage Considerations”部分:
使用不同的初始值可確保截斷的 SHA-256 消息摘要值不會被誤認為是在相同數據上計算的 SHA-224 消息摘要值。
但該引用沒有列出任何具體的攻擊,也不是 SHA-2 安全審查的一部分。
誰能解釋通過為 SHA-2 變體選擇不同的初始值來防止哪些攻擊?
我專門尋找表明初始值如何幫助減輕攻擊的答案。更重要的是,我正在尋找權威的答案,即:可以指向安全評估或 SHA-2 證明的答案。
該問題的引用可能是為相同內部塊大小的 SHA-2 變體選擇不同初始起始值的原因。不同的雜湊函式產生獨立的結果本身就是一個有效的目標,只有知道它們的共同輸入才能連結。不必考慮特定的攻擊來做出這種保守的選擇。
另有說明:對於知道某個秘密的 SHA-1 的攻擊者,找到該秘密的 SHA-256 的最佳選擇是找到該秘密。如果攻擊者知道 SHA-224 散列而不是 SHA-1 散列,則使用不同的初始值使得同樣適用。這可以稱為散列函式的(域)分離。
建構人工協議很容易,這種預防措施可以節省一天的時間。例如:Alice 繪製一個 80 字節的隨機字元串 $ S $ ,顯示其 SHA-224(例如,作為承諾或密鑰檢查值),然後使用 $ S $ 作為以 SHA-256 作為基礎雜湊的 HMAC 密鑰。HMAC 將從散列開始 $ S $ 使用 SHA-256,然後將其用作其內部密鑰。使用 SHA-224 和 SHA-256 中不同的初始化值,Alice 是安全的。否則,她將走向災難,因為除了 32 位的 HMAC 密鑰外,其他所有位都與洩露的 SHA-224 一致。