Hmac

MD5、SHA1、SHA224|256|384|512 的 HMAC 密鑰大小

  • June 14, 2018

我正在嘗試為以下每種散列算法找到 HMAC 密鑰大小的權威來源。專門用於 HMAC 的 TLS 實現。

我在RFC5246中找到了這張表:

MAC       Algorithm    mac_length  mac_key_length
--------  -----------  ----------  --------------
NULL      N/A              0             0
MD5       HMAC-MD5        16            16
SHA       HMAC-SHA1       20            20
SHA256    HMAC-SHA256     32            32

這讓我可以填充這些資訊:

MD5 HMAC uses a 128 bit Key and produces 128 bit digest
SHA1 HMAC uses a 160 bit key and produces 160 bit digest
SHA224 HMAC uses a ____ bit key and produces a 256 bit digest, truncated to 224 bits
SHA256 HMAC uses a 256 bit key and produces a 256 bit digest
SHA384 HMAC uses a ____ bit key and produces a 512 bit digest, truncated to 384 bits
SHA512 HMAC uses a ____ bit key and produces a 512 bit digest

但我無法找到 SHA224、SHA384 和 SHA512 的確定密鑰大小。

HMAC RFC (2104)列出了這一點:

我們用 B 表示這些塊的字節長度(對於所有上述雜湊函式的範例,B = 64),並用 L 表示雜湊輸出的字節長度(對於 MD5,L = 16,對於 SHA-1,L = 20 )。身份驗證密鑰 K 的長度可以達到 B … K 的最小推薦長度是 L 字節(作為散列輸出長度)。有關鍵的更多資訊,請參見第 3 節。

這意味著密鑰大小必須至少是散列算法的摘要大小,並確認我在上面“填寫”的內容。

我認為,鑑於上述情況,在所有情況下,HMAC 密鑰大小應至少是摘要的長度,這將使 SHA384 HMAC 密鑰大小至少為 384 位,但我似乎無法找到對這一事實的明確確認.

我正在嘗試為以下每種散列算法找到 HMAC 密鑰大小的權威來源

好問題。事實證明,TLS 總是使用與散列函式長度相同的密鑰長度(因此 HMAC-SHA384 將使用 48 字節的密鑰)。

但是,我也找不到任何實際說明這一點的 RFC。RFC5246(承認 HMAC-SHA384 和 HMAC-SHA512 是潛在的 MAC 算法,但沒有定義任何使用它們的密碼套件)和 RFC5289(我能找到的最早的 RFC,它實際上確實將 HMAC-SHA384 的密碼套件定義為 MAC算法)實際解決它。

我懷疑這只是從裂縫中掉下來的東西。RFC5246 僅針對當時實際定義的密碼套件的 MAC 進行了定義;RFC5289 的作者顯然忽略了這個問題。

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