Hmac

MAC 大小 128 位或更多?

  • March 22, 2018

只是一個簡單的問題:我已經看到實現了 BouncyCastle 的 AeadParameters 類,MAC 長度為 128 位,據稱這是推薦的。雖然當我在 CBCBlockCipher 中查找 HMac 以實現我自己的 MAC 時,我發現人們使用 HMac 時只有 SHA256,這導致 MAC 的長度只有32 個字節。

那麼我應該走什麼路線呢?我應該實現類似 SHA512 的東西來獲得一些 MAC 長度嗎?

看來這只是位和字節之間的誤會。32 字節是 256 位,所以 32 字節綽綽有餘。

HMAC的安全性很強;安全性與密鑰大小和 HMAC 輸出大小的最小值直接相關。所以使用 32 字節/256 位作為輸出大小就可以了。您可以為身份驗證標籤使用更少的字節(使用最左邊的字節是預設值),但建議保持預設值。對於 64 位機器上的較大消息,使用 SHA-512/256 可能是一個好主意。如果您需要較小的身份驗證標籤,則 SHA-224 也可以是一個選項。對於較新的協議,您可以使用 KMAC / SHA-3。

AEAD 密碼幾乎專門使用分組密碼進行最終計算以生成身份驗證標籤。如果使用 AES 或 AES 入圍者,則塊大小將為 128 位 - 這意味著 128 位是支持的最大身份驗證標籤。對於實時協議或嵌入式設備協議,您可以選擇小於 128 的身份驗證標籤。在這種情況下,不建議使用 GCM,因為如果將較小的標籤尺寸用於該模式,則會存在安全問題。CCM 或 EAX 模式對於較小的身份驗證標籤更有意義。這些模式分別使用 CBC-MAC 和 CMAC。

請注意,應使用恆定時間比較來執行身份驗證標籤的驗證。

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