Cbc
DES/CBC 中是否有等效的 IV?
我正在使用帶有 DES/CBC 的 CryptoPP 庫,我注意到對於某些數據集,如果我用 Key1、IV1 解密密文,我會得到一個很好的明文結果——但如果我解密相同的密文使用 Key1、IV2,我得到了同樣好的明文結果。
我覺得這非常令人驚訝。如此之多,以至於我認為我做錯了什麼。
我想檢查我的假設:我一直認為即使更改 IV 的 1 位也會改變解密結果。這不是真的嗎?
是否有“等效”IV這樣的東西?
在CBC 模式解密過程中,每個密文塊首先與塊密碼解密,然後第一個解密塊與 IV 異或,而後面的塊與前一個密文塊異或:
因此,明文的第一個塊計算為:
$$ P_1 = IV \oplus D_K(C_1). $$ 等效地,我們可以解這個方程為 $ IV $ 獲得:
$$ IV = P_1 \oplus D_K(C_1). $$ 這意味著,對於任何密文和密鑰,總是可以選擇 IV,以便第一個塊將解密為我們想要的任何明文。
這也意味著 CBC 模式具有微弱的可塑性:可以修改加密消息的攻擊者可以通過翻轉 IV 的相應位來翻轉明文第一個塊中的任意位。特別是,如果攻擊者可以猜出原始的第一個明文塊,他們可以在不知道密鑰的情況下重寫它以說出他們想要的任何內容。(對於後面的塊也可以進行類似的攻擊,但它往往會隨機打亂前一個明文塊。)
這種延展性是 CBC 和所有其他非認證密碼模式的一般特徵。為了防止它,有必要使用MAC驗證密文的完整性,或者使用組合的認證加密模式。