Aes

給定密鑰、明文和密文,我可以計算 CBC 模式下使用的 IV 嗎?

  • December 24, 2019

如果我有純文字、密文和 AES-128 CBC 操作的密鑰,我是否可以確定 IV,即使我不知道填充(假設填充遵循更常見的格式之一)?

我相信這應該是可能的,因為我的理解是 IV 僅用作加密中純文字的初始 XOR,因此應該能夠像這樣使用:

AESDecrypt(key, ciphertext) => (PlainText XOR IV);
IV = ((Plaintext XOR IV) XOR (Plaintext))

這個對嗎?

很簡單。

只需在模式下解密前 8 個字節的加密緩衝區(1 個塊)ECB(您只需要加密的緩衝區和密鑰即可),然後將結果與輸入緩衝區進行異或運算。結果將是IV

在解密時CBCIV只影響第一個塊。這就是為什麼在你的情況下只有第一個塊是不正確的。

我可以確定 IV

在 CBC 塊密碼操作模式下,不受 AES 限制,第一個塊的解密是

$$ P_1=Dec(K,C_1)\oplus \text{IV} $$

在哪裡 $ P_1 $ 是第一個明文和 $ C_1 $ 它的加密 $ P_1 $ 用鑰匙 $ K $ 在CBC操作模式下。所以

$$ \text{IV} = P_1 \oplus Dec(K,C_1) $$

即使我不知道填充

如果您知道明文,則可以使用一些標準填充方案來確定 IV,例如

如果明文多於一個塊,則不需要考慮填充來計算IV。第一個明文塊足以計算 IV。

IV 僅用作加密中純文字的初始 XOR

很快,是的。長長的;CBC是一種傳播模式,CBC模式下的加密過程為

$$ \begin{align} C_1 &= Enc_k(P_1 \oplus IV)\ C_i &= Enc_k(P_i \oplus C_{i-1}),;; 1 < i \leq nb, \end{align} $$ 在哪裡 $ nb $ 是塊的數量。IV用於第一個塊,其餘加密使用IV的先前密文,連結。

CBC模式下的解密過程為 $$ \begin{align} P_1 =& Dec_k(C_1) \oplus IV\ P_i =& Dec_k(C_i) \oplus C_{i-1},;; 1 < i \leq nb, \end{align} $$ 在哪裡 $ nb $ 是塊的數量。

儘管 IV 僅在第一個塊中使用,但它會影響所有其他塊 - 傳播。如果我們擴展加密方程,我們可以更好地看到這一點

$$ C_j = Enc_k(P_j \oplus Enc_k(P_{j-1} \oplus \cdots Enc_k(P_1 \oplus IV)\cdots)). $$

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