AES-GCM-SIV 中的 SIV 在哪裡?
這是我對合成 IV 的理解
你有 2 把鑰匙 $ K_1 $ & $ K_2 $ .
$ F $ 是一個 PRF
您無需選擇單獨的 IV,而是從 PlainText 生成 IV。
$ IV = F(K_1, m) $
$ c = E(K_2, m, IV) $
您不需要單獨的標籤/雜湊來進行身份驗證。因為 IV 是使用 PT 本身生成的,所以在解密 CT 後,您可以在解密端生成 IV,並檢查它是否與 IV 隨 CT 一起發送。
我在看 AES-GCM-SIV - https://www.rfc-editor.org/rfc/rfc8452
在這裡,IV 似乎作為輸入傳遞給加密算法並且不是從 PT 生成的。
AES-GCM-SIV 加密採用 16 或 32 字節的密鑰生成密鑰、96 位隨機數、明文和可變長度的附加數據字節字元串。
它似乎也產生了一個標籤
計算 S_s = POLYVAL(message-authentication-key, X_1, X_2, …)。S_s 的前 12 個字節與 nonce 進行異或,並清除最後一個字節的最高有效位。使用消息加密密鑰使用 AES 加密結果以生成標籤。
那麼為什麼這個加密被命名為 SIV 方案呢?
您描述的 SIV 是通常專門為密鑰包裝指定的方式。但是,您總是希望有一個 IV,因為對同一消息進行兩次加密應該會產生不同的密文。如果您只從消息和密鑰中派生 IV,那麼對於同一條消息,它總是相同的。通過從輸入 IV、消息和密鑰導出有效 IV,您可以保證不同的消息和不同的 IV 總是給出不同的密文,唯一的“缺陷”是相同的消息使用相同的 IV 加密兩次(在這種情況下) ,只有這個事實被揭示)。這是最佳的 nonce-reuse 阻力。
請注意,IV 是 AES-GCM-SIV 的輸入,但它用於從標籤派生一個“有效”IV,它實際上用於加密消息。您引用的 RFC 中的延續是“加密的明文是使用 AES 生成的,帶有消息加密密鑰,在計數器模式下(請參閱
$$ SP800-38A $$,第 6.5 節)關於未填充的明文。初始計數器塊是最後一個字節的最高有效位設置為 1 的標記。”(注意初始計數器塊是標記…) AES-GCM-SIV 還從輸入 IV 進行持續的密鑰派生,以獲得更好的安全界限。然而,這是一個正交問題。