Encryption

“修復”PCBC模式?

  • September 23, 2021

PCBC 模式下,一個加密和解密通過 $$ C_i = E(P_i \oplus P_{i-1} \oplus C_{i-1}) \Longleftrightarrow P_i = D(C_i) \oplus P_{i-1} \oplus C_{i-1} $$(在哪裡 $ P_0 \oplus C_0 = IV $ ),在修改任何 $ C_i $ 將打破所有的解密 $ P_j $ 在哪裡 $ j \ge i $ .

但是,該交換存在一個錯誤 $ C_i $ 和 $ C_{i+1} $ 影響後續明文的解密 $ P_j $ (為了 $ j > i + 1 $ )。維基百科也提到了這一點,說

在以 PCBC 方式加密的消息上,如果兩個相鄰的密文塊交換,不影響後續塊的解密。

$$ 27 $$因此,Kerberos v5 中不使用 PCBC。

但是,如果我們改為在加密*後進行“異或”呢?*換句話說,加密/解密通過 $$ C_i = E(P_i) \oplus P_{i-1} \oplus C_{i-1} \Longleftrightarrow P_i = D(C_i \oplus P_{i-1} \oplus C_{i-1}) $$(在哪裡 $ P_0 \oplus C_0 = IV $ )。似乎這個簡單的更改可以修復 PCBC 的那些密文交換錯誤,並且仍然保留其出色的錯誤傳播屬性……

似乎這個方案解決了“密文交換”問題,它允許修改密文的第一個塊 $ C_1 $ 和 $ IV $ 完全不影響消息的解密。

這是因為第一塊明文 $ P_1 = D(C_1 \oplus IV) $ , 所以因此 $ C_1 $ 和 $ IV $ 可以“一起”修改而不改變 $ (C_1 \oplus IV) $ 所以完全不影響消息中任何內容的解密……

**編輯:正如 fgrieu 在評論中指出的那樣,這種密碼模式甚至不是 CPA 安全的。例如,如果我們提供帶有重複塊的明文 $ P_i = P_{i+1} = \cdots $ ,那麼密文將有 $ C_j = C_{j+2} $ 對所有人 $ j > i+1 $

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