Encryption

對 CBC 的剪切粘貼攻擊範例

  • February 6, 2020

我正在閱讀 Stamp 的密碼學書,並且有一個剪切粘貼攻擊 $ ECB $ 這很容易理解,因為 $ ECB $ 比較簡單,問題是我想看一個這樣的例子 $ CBC $ 模式。有一個簡單的例子來說明這一點嗎?

這是來自 efail 展示文稿的一個很好的解釋,感謝 Jens 和 Chris!這適用於 CBC,但對於 CFB 來說看起來幾乎相同。

所以這裡是 CBC 解密: CBC解密 現在如果你稍微翻一下 $ C_1 $ 你可以翻轉相同的位 $ P_1 $ : 翻轉一點 但它也會導致 $ P_0 $ 解密後看起來像隨機垃圾。 其他塊被破壞

但如果你知道什麼 $ P_1 $ 一開始你基本上可以用你想要的任何東西對其進行異或運算,從而將塊插入到解密的明文中,代價是隨機化每個其他塊。所以密文顯然是可延展的。

如果可以在應用程序級別或類似級別上以某種方式轉義隨機塊,則可以利用這一點。又是一張來自 efail 展示文稿的圖片: 充分利用 這裡隨機塊被忽略了,因為它們被放在引號內,並且 HTML 解析器忽略了沒有屬性名稱的帶引號的字元串。

在剪切和粘貼中,密文的一部分被另一個具有已知(或至少已知可讀)明文的密文替換,因此生成的消息對於加密消息的接收者俱有不同的含義。應該通過使用經過身份驗證的加密來避免這種情況。

CBC 可能不會以與 ECB 類似的方式直接複製和粘貼攻擊。CBC 的明文是在與前一個密文塊進行異或後檢索的。因此,您不必只是剪切和粘貼前一個塊,目標塊就有意義了。然而,由於該塊也被解密,使用之前的塊,明文塊之前的塊現在是隨機的。類似地,更改塊之後的塊也被更改(儘管至少以對手已知的方式)。

現在,如果以 IV 為前綴,那麼您可以在密碼的開頭替換任意數量的塊,並且它們將被轉換為已知的明文 - 如果該明文對於使用相同密鑰加密的另一個密文是已知的。唯一的問題是此後的塊也發生了變化。顯然,同樣的推理適用於最後一個塊。


這是否意味著 CBC 對這種剪切粘貼攻擊無懈可擊?嗯,不。在許多情況下,隨機數據是完全可以接受的。假設我們有一條消息,該消息包含一個帶有任何可能值的大數字,後跟一個表示某種訪問條件的布爾值。現在我們可以用隨機數據替換模數的字節,並用已知值替換布爾值,比如true代替false. 我想這是一個你可以接受的例子,因為它甚至可以與隨機 IV 一起使用。

Plaintext 1:                    [ number         ][ number | true  ]
Ciphertext 1: [ IV1            ][ CT1 / 1        ][ CT1 / 2        ]
Plaintext 2:                    [ number         ][ number | false ]
Ciphertext 2: [ IV2            ][ CT2 / 1        ][ CT2 / 2        ]

Attacked:     [ IV2            ][ CT1 / 1        ][ CT1 / 2        ]
Decrypted:                      [ random         ][ number | true  ]

但是,如果我們進一步研究這個問題,我們會發現這個問題實際上更大。假設它false由一個字節值表示,00並且由除(嗨,C 程序員)true以外的任何值表示。00在這種情況下,您可以隨機化最後一個塊,並以 256 中的 255 的可能性更改值。所以我們根本不需要剪切和粘貼。

Attacked:     [ IV2            ][ CT2 / 1        ][ random         ]
Decrypted:                      [ number         ][ random | bool? ]

其中256 中bool? = false的機會 1 和 256bool? = true中的機會 255。

更糟糕的是,使用明文和填充預言機攻擊,我們甚至可以使用諸如此類的攻擊來解密整個消息。


所以答案是:不,確切的剪切和粘貼技術可能不適用於人類閱讀的文本資訊。但是,現代密碼學通常不針對此類消息,並且 CBC 確實容易受到與剪切和粘貼技術非常相似的攻擊。

通過在 IV 上使用的位翻轉攻擊,攻擊者可能仍然能夠在初始塊中將一個字母更改為另一個字母,而不會干擾明文的任何其他部分。

這就是為什麼我們現在使用創建身份驗證標籤來保護消息的完整性和真實性。幾乎有無數種方式可以使未檢測到的消息更改對系統造成嚴重破壞。


即使具有完整性和身份驗證,您也可以隨時剪切和粘貼整個消息,包括 IV 和身份驗證標籤。這是一種重放攻擊,您需要單獨的措施,例如獨特的會話計數器來避免這些。

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