Hmac

如果我選擇密文或純文字作為消息,HMAC 是否重要?

  • June 15, 2018

我正在使用 HMAC 創建消息身份驗證程式碼。我的問題是,我使用cipher text + encryption keyor有關係plain text + encryption key嗎?我查看了一個實現,據我所知,它們只是連接值(消息和加密密鑰)並散列它們。

有 3 個與 MAC 使用相關的術語:encrypt-then-mac、mac-then-encrypt 和 encrypt-and-mac。最後一個不適用於 HMAC,它指的是單個算法同時進行加密和身份驗證的情況。

在我看來,Encrypt-then-mac 總是更可取,原因如下:

  1. 您可以拒絕偽造,而無需解密它們。
  2. 如果您的 MAC 算法洩漏了有關消息的資訊(通過側通道),那麼洩漏的消息只是密文,即已經“公開”的資訊。
  3. 需要擔心的“活動元件”更少。您不需要加密 mac 結果。您可以使用不需要隨機數的 MAC 算法來防止洩露某人是否兩次發送相同的消息。*

如果每個實現細節都完美完成,那麼這三個選項中的任何一個都可以工作。特別是對於 HMAC… 1 是一個很好的理由。2 可能不是 HMAC 特別關注的問題,因為可能沒有在沒有物理訪問或接近的情況下無法利用的側通道。對於 3,我注意到你寫的是“plaintext + key”而不是“plaintext + nonce + key”。這是一個重要的缺陷。HMAC 是確定性的,因此如果明文1 = 明文2,則兩個消息標籤將相等。

密碼末日原則也可能是一本有趣的讀物。

  • 但是,如果您通過網路發送隨機數,則無論如何都應該包含它。如果同一個密鑰加密多條消息,您的加密算法應該始終使用隨機數。

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