是否值得通過 HMAC 的性能打擊來獲得額外的安全性?
似乎 SHA-512 截斷為 256 位可用作 MAC [ 1 ]。優點是它在 64 位 CPU 上比 HMAC-SHA-256 快約 50%,在短輸入上比 HMAC-SHA-512 快約 50%。(我的案例主要涉及短輸入。)
[然而,HMAC 結構在底層散列函式 2 ]發生衝突的情況下提供了額外的保護層。當在 MD5 和 SHA-1 中發現弱點時,這種額外的保護最終變得非常有用。
因此,使用截斷的 HMAC-SHA-512 似乎比使用截斷的 SHA-512 更好。這是一個合理的(例如,不過分偏執)的選擇嗎?
如果我們假設1和2為真,那麼 HMAC-SHA-512 是更好的選擇。
對於時間比較,如 Paul Uzsak 所述,如果沒有特定的時間相關問題,則不應考慮快約 50% 左右。如果更安全,請使用它。
供您發表評論;
對 SHA-1的粉碎攻擊需要散列數據在 PDF 中具有一定程度的自由度。這種攻擊可能適用於其他格式,也可能不適用於其他格式,但仍然認為 SHA-1 被破壞並且它已經是非標準的,踢出去。
對於相同前綴衝突攻擊,您可能無法使用此方法偽造MAC。我們還沒有看到任何使用粉碎攻擊來破壞其他結構的複雜攻擊。
SHA-1 的輸出是 160 位,它在我們的計算能力的通用生日攻擊範圍內,特別是對於像比特幣礦工這樣的集體來說 $ 2^{91.6} $ 每年 2018 年 9 月 25 日的 SHA-256 雜湊值。
512 位不容易受到一般的衝突攻擊。這將需要 $ 2^{256} $ 散列以找到機率為 50% 的碰撞。對於 SHA-256,對於今天的標準來說仍然是不切實際的 $ 2^{128} $ 這等於將 AES-128 暴力破解到某個常數。
當雜湊函式發生新的攻擊時,我們必須查看它,以便在 HMAC 構造中使用雜湊函式時可以使用什麼攻擊。然而,正如森林所指出的
特別是,與許多其他應用程序相比,HMAC 對雜湊函式的安全保證要求要弱得多。它只需要底層雜湊的弱抗碰撞性。
對於安全案例您應該準備好採用新標準。即使沒有將碰撞攻擊帶入 HMAC 結構的攻擊,您也應該立即從該散列函式移至更安全的散列函式。
注:抗碰撞性較弱是第二個抗前像性:
找到與任何指定輸入具有相同輸出的任何第二個輸入在計算上是不可行的,即給定 $ x $ , 找到第二個原像 $ x’ \neq x $ 這樣 $ h(x) = h(x’) $ .