Encryption
CBC第一塊延展性
讓 $ m_1 = \underbrace{ {0,1}^n \times \cdots \times {0,1}^n }_{L\text{ times}} $ 成為空間的訊息 $ \mathcal{M}^L $ , 在哪裡 $ \mathcal{M} = {0,1}^n $ .
讓 $ c_1 $ 是加密的 $ m_1 $ 使用CBC模式。
讓 $ x \in \mathcal{K} $ 是一些二進製字元串。
最後,讓 $ m_2 $ 是另一條消息,例如:
- $ m_2[1] = m_1[1] \oplus x $
- $ m_2[i] = m_1[i] $ 為了 $ i = 2, … ,n $
我該如何修改 $ c_1 $ 成為一個 $ c_2 $ 那就是加密 $ m_2 $ ?
不知道怎麼修改 $ c_1 $ 直接,我只能想像 $ \oplus $ 使用初始化向量 $ x $ , 所以 $ c_2 $ 會以某種方式同時擁有 $ m[1] $ 和 $ x $ 在其計算的第一個塊中使用。
是的,您可以修改初始化向量以實現您的目標(如評論中所述,初始化向量是密文的第一個塊)。所以,通過計算一個新的初始化向量, $ IV_2 = IV_1 \oplus x $ , 密文/IV 對 $ (c_1, IV_2) $ 是一個有效的加密 $ m_2 $ CBC模式。這是因為 $ m_2[1] = m_1[1] \oplus x $ , 所以
$$ m_2[1] \oplus IV_2 = (m_1[1] \oplus x) \oplus (IV_1 \oplus x) = m_1[1] \oplus IV_1 $$這樣,塊密碼的第一個輸入塊對於兩條消息都是相同的( $ \oplus $ ’d 及其各自的 IV),並且加密的輸出對兩條消息都有效。