傳播密碼塊連結操作模式 (PCBC) 的正確性
我正在查看有關塊密碼操作模式的 Wikipedia 文章,我想知道您如何從加密中獲得 $ C_i = E_K(P_i \oplus P_{i-1}\oplus C_{i-1}) $ 得到解密 $ P_i = D_K(C_i) \oplus P_{i-1}\oplus C_{i-1} $ ?
有沒有辦法從加密中解密(反之亦然)?
PPCBC 模式的工作原理
Propagating Cipher Block Chaining mode of operation (PCBC) 與消息索引一樣工作,從 1 開始;
- 對於 PCBC 加密,我們有;
$$ C_i = E_K(P_i \oplus P_{i-1}\oplus C_{i-1})\text{ and } \color{red}{C_0 = P_0 \oplus IV} $$
- 對於PCBC解密已經有了;
$$ P_i = D_K(C_i) \oplus P_{i-1}\oplus C_{i-1}\text{ and } \color{red}{C_0 = P_0 \oplus IV} $$
給定 $ C_1 $ 解密 $ P_1 $
$$ P_1 = D_K(C_1) \oplus P_{0}\oplus C_{0} = P_1 $$
給定 $ C_2 $ 解密 $ P_2 $
$$ P_2 = D_K(C_2) \oplus P_{1} \oplus C_{1} $$現在我們可以解決,因為我們知道, $ P_1 $ 我們都有 $ C_i $ s。
等等…
您的問題中缺少紅色部分。
PCBC模式的正確性
加密方案必須滿足正確性要求;每把鑰匙 $ k $ 密鑰生成算法和每條消息的輸出 $ m \in \mathcal{M} $ ( $ \mathcal{M} $ 是消息空間),以下必須成立;
$$ D_k(E_k(m)) = m $$
看PCBC是否正確;拿
$$ C_i = E_K(P_i \oplus P_{i-1}\oplus C_{i-1}) $$兩邊取解密
$$ D_K(C_i)= \color{red}{D_K}(\color{red}{E_K}(P_i \oplus P_{i-1}\oplus C_{i-1})) $$用 Dec. 取消 Enc。
$$ D_K(C_i)= P_i \oplus P_{i-1}\oplus C_{i-1} $$
所以:
$$ P_i = D_K(C_i) \oplus P_{i-1}\oplus C_{i-1} $$
既然我們知道,所有 $ C_{i} $ s,之前解密的 $ P_{i-1} $ .
如果是第一種情況 $ (i=1) $ , 那麼我們已經知道了 $ \color{red}{C_0 = P_0 \oplus IV} $