Authenticated-Encryption
如何正確使用 GCM 模式和關聯數據
我目前正在遷移一個項目以使用充氣城堡GCM 模式。我了解使用身份驗證模式無需 HMAC,但我想確保我正確使用了此模式。將 HMAC 應用於密文時,我知道必須在 HMAC 數據中包含任何可能影響解密結果的參數(IV、塊大小、算法名稱等)。充氣城堡 GCM 實現接受AEAD參數,其中之一是“關聯文本”。
使用經過身份驗證的模式,是否正確:
- 使用加密參數作為關聯文本
- 加密明文(不附加參數)
- 將參數附加到密文(明文)以方便將來解密
我假設這個工作流程也適用於 EAX 模式?
GCM 模式已經包含了任何可能影響解密結果的參數。相關的經過身份驗證的數據允許您依賴上下文進行解密。
例如,假設您正在加密與使用者關聯的一些記錄。您可能希望包含使用者的數據庫 ID 作為已驗證的數據。如果使用者找到一種方法將另一個使用者的數據和密鑰複製到他自己的記錄中,由於他的數據庫 ID 不同,它仍然無法解密。
一般來說,您希望它是與隨機數和密文分開管理的東西。