Pgp
AES 128 GCM - 具有靜態 IV/nonce 的動態密鑰
我正在開發一個項目來升級目前使用 RC4 使用隨機會話密鑰加密有效負載的現有系統。然後使用非對稱公鑰加密 (RSA PKCS#1 OAEP) 對會話密鑰進行加密。然後,加密的對作為令牌通過不安全的通道傳輸。
我正在尋找用 AES-128-GCM 替換 RC4 部分。這是使用標準化認證公鑰消息交換框架(例如 OpenPGP 或 JOSE JWE)的臨時解決方案。
為了通過保持消息語法相同來減少實現 AES-128-GCM 所需的工作量,我正在考慮使用發送者和接收者共享的靜態 IV/nonce。由於會話密鑰是唯一的,我知道這與使用帶有靜態密鑰的隨機 IV 一樣安全。
這是一個可接受的解決方案嗎?
是的。您甚至可以使用隨機數 0,並跳過發送方和接收方之間的共享狀態。當您使用它時,請考慮使用 AES-256-GCM 而不是 AES-128-GCM 來限制多目標攻擊的危險。
並停在那裡;不要把時間浪費在令人痛苦的過時 OpenPGP 或無可救藥的侏儒 JOSE 上。如果您真的想切換到現有庫,請考慮使用帶有隨機隨機數的NaCl/libsodium crypto_box或libsodium crypto_box_seal(它沒有隨機數,並且,正如您所描述的,它會為每條消息獨立隨機生成一個會話密鑰)。