Mac

我可以減少 TLS 中的 MAC 大小嗎?

  • July 6, 2015

MAC 大小在truncated_hmac 擴展中減少到 80 位,它表示“無法離線進行 MAC 值的偽造:在 TLS 中,單個失敗的 MAC 猜測將導致 TLS 會話立即終止。”

問題 1(主要問題):那麼我可以將 MAC 大小減小到更小,比如 32 位嗎?

問題 2: truncated_hmac 擴展不影響 AEAD。我可以減小 AEAD 中標籤的大小,例如 GCM 或 CHACHA-POLY?

如果不更改 TLS,則無法更改雜湊大小:

來自:附錄 C. 密碼套件定義

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

因此,儘管 mac_length 是SecurityParameters結構的一部分,但大小仍然是預先確定的。另一端的實現可能不支持截斷的 MAC 值。

對於 AEAD/GCM 密碼,標籤的大小在 RFC 5116 “Authenticated encryption”(規範性參考)中確定:

使用長度為 16 個八位字節(128 位)的身份驗證標籤。

RFC 5116 相當嚴格(我認為太嚴格了),因為它假定身份驗證標籤是密文的一部分。它也不允許更改身份驗證標籤的大小。


您當然可以根據自己的目的隨意更改規範。在這種情況下,問題很簡單:對於“2 ^ 14字節或更少”的密文,我應該使用什麼大小的身份驗證標籤 - 如 $ 2^{14} $ 是 TLS 1.2 的(數據)片段的最大大小。在這種情況下,它取決於所使用的 MAC 結構。

對於 GCM,最小值為 64 位,但最好使用更大的標籤大小。對於 HMAC 變體,您可能會降低,但您應該只對小的、不常見的消息這樣做。這反過來意味著您必須確保攻擊者無法觸發您使用更多/更大的消息。

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