Encryption
如何為協議消息提供部分機密性和完全完整性?
我想為協議提供機密性和完整性。我不想加密整個協議消息。我不想加密協議消息的標頭和時間戳,但我希望擁有整個協議消息的完整性。因此,我執行以下操作:
1- encrypt the message except for the header and timestamp by using CBC. 2- digest the entire message (header, timestamp and encrypted message) by using HMAC.
這是好習慣嗎?如果否,最佳做法是什麼?
這是好習慣嗎?
如果您對 HMAC 和 CBC 使用不同且獨立的密鑰,並在摘要中包含用於 CBC 的 IV,並為兩個傳輸方向使用不同的密鑰對,那麼是的,這是一個很好的加密方案。
最佳做法是什麼?
正如Eugene Styer 在他們的回答中指出的那樣,最好的做法是使用現成的經過身份驗證的加密與AES-GCM、AES-EAX、AES-CCM、ChaCha20-Poly1305 等相關數據 (AEAD) ……為此,您可以將您的標題輸入為“關聯數據”,將您的消息輸入為純文字。您的環境可能已經提供了一個包含 AEAD 功能的 NaCl/Sodium 庫。