Mac

如果 MAC 標籤保密,Carter–Wegman MAC 是否允許密鑰重用?

  • February 18, 2016

Poly1305(和 GHASH)是安全驗證器,但僅用於一種用途。因此,Poly1305-AES、ChaCha20-Poly1305 和 AES-GCM 中的 nonce 重用都揭示了身份驗證密鑰。然而,我的理解是,這是因為(在 Poly1305-AES、ChaCha20-Poly1305 和 AES-GCM 中)散列函式的輸出是使用流密碼加密的,因此隨機數重用會放棄散列的 XOR。

假設使用 ECB 模式中的 AES 來加密身份驗證標籤(使用與其他密鑰、消息和 nonce 無關的密鑰)。在這種情況下,nonce 重用不會洩露任何資訊,除非 auth 標籤發生衝突(這只會發生在大約 $ 2^{-56} $ 或者)。類似地,可以使用 Blake2 或 Keccak 對隨機數、密鑰和標籤進行散列,以生成更大的標籤。

至少這是我的全部理解。我不是密碼學家,我可能是錯的!我是嗎?

注意:我不打算在任何實際軟體中使用它。

您可以使用一些方法來隱藏不需要隨機數的多項式散列的輸出,例如使用匹配塊大小的塊密碼進行加密或使用密鑰散列 (PRF) 對其進行散列。

不使用 nonce 會降低安全界限(隨著攻擊者使用相同的密鑰看到更多消息,安全性會降低),使其與流密碼不兼容並增加延遲,但避免了由於 nonce 重用而導致完全失敗的風險。

您可以通過對 nonce 和多項式雜湊輸出進行散列處理來避免降低安全界限,同時保持 nonce 誤用阻力,但其他缺點仍然存在。

Poly1305 論文證明了使用 nonce 的合理性如下:

Poly1305-AES 使用隨機數有幾個原因。

首先,沒有隨機數的可比較協議的安全邊界看起來像 $ C ( C + D ) L / 2^{106} $ 而不是 $ D L / 2^{106} $ - 這裡 $ C $ 是發件人認證的消息數量, $ D $ 是偽造嘗試的次數,並且 $ L $ 是最大消息長度——因此不能放心地用於大消息 $ C $ .

其次,nonce 允許 AES 的呼叫與 Poly1305-AES 中的大多數其他操作並行執行,從而減少了許多情況下的延遲。

第三,出於各種原因,大多數協議無論如何都具有隨機數:例如,安全加密需要隨機數,並且隨機數允許對重播消息進行微不足道的拒絕。

在流行的 XSalsa20Poly1305 組合中,如果您重用 nonce,您已經遇到了嚴重的機密性故障,因此在此之上的 MAC 故障似乎沒什麼大不了的。您可以使用 Salsa20 作為散列而不是流密碼來隱藏多項式散列輸出,但這會增加不可並行化的 Salsa20 計算(Salsa20 的 SIMD 實現受益於並行性,即使在軟體中也是如此),這使得小消息變得昂貴.

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