Hmac

使用 HMAC 作為隨機數和 AES-CTR encrypt-and-MAC

  • November 29, 2015

假設我使用以下加密和 MAC 結構:

$ E(k_1, k_2, n, m) = E_\text{AES256-CTR}(k_1, n, m) | \text{HMAC-SHA256}(k_2, m) $ , 在哪裡:

$ k_1 $ 和 $ k_2 $ 是 256 位密鑰

$ n $ 是一個隨機數

$ m $ 是任意長度的消息。

如果我使用 MAC 作為 nonce,會發生什麼安全損失?(IE $ n = \text{HMAC-SHA256}(k_2, m) $ ,但截斷到適當的長度)與典型的認證加密(例如 AES-GCM)相比,該方案是否還有其他缺點?

顯然,該方案在選擇明文攻擊下是可區分的,因為相同的明文總是加密為相同的密文。這在我的應用程序中是可以接受的,但我很想知道是否還有其他問題。

您所描述的內容與SIV 分組密碼模式非常相似。它還使用消息的確定性函式來導出用於 CTR 加密的隨機數。在一些相當廣泛接受的關於 HMAC-SHA256 的假設下,這是實現確定性認證加密的完美方式。它不符合 IND-CPA(正如您所指出的),但如果您的申請可以接受,您應該沒問題。

缺點主要在效率方面。您建議的模式需要兩次通過明文來生成密文,但 GCM 只需要一次。像 OCB 這樣的模式也只需要一次通過身份驗證的加密,但也是可並行的。再次,這種影響取決於您的應用程序。

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