Hmac

使用 base 64 加密然後 MAC

  • January 7, 2021

在 CBC 模式下使用 HMAC-SHA-256 和 AES-128 時,我對 Encrypt-then-MAC 方法存在疑問,如https://en.wikipedia.org/wiki/Authenticated_encryption中所示。

我需要在 base 64 中對生成的密文進行編碼,以便與 HMAC 一起發送。我應該在以 base 64 編碼密文之前還是之後生成 HMAC?它甚至重要嗎?

例如:1 - Encrypt-then-encode-then-MAC,或 2 - Encrypt-then-MAC-then-encode。

提前致謝。


編輯:我使用 JSON 來分隔消息和 HMAC,例如:

{
 "payload":"base64-encoded-ciphertext-goes-here",
 "hmac":"base64-encoded-HMAC-goes-here"
}

最後真的沒關係。編碼步驟不會增加任何安全性,也不會帶走任何東西。

先編碼後 MAC 的一個好處是您可以在解碼之前檢查 MAC。如果 MAC 未檢出,則無需解碼。如果你反過來做,你總是必須解碼整個密文,然後檢查 MAC。

也就是說,Maarten提出了一些重要的實際考慮因素,您絕對應該考慮這些因素。MAC 之前的編碼意味著您對計算 MAC 的密文進行了一些擴展,這會增加成本。還有圍繞 JSON 的編碼等問題。

最後,由於他指定的原因,我認為 Maarten 對 MAC then encode 的建議是更好的答案。

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