Mac
我可以減少 TLS 中的 MAC 大小嗎?
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 變體,您可能會降低,但您應該只對小的、不常見的消息這樣做。這反過來意味著您必須確保攻擊者無法觸發您使用更多/更大的消息。