Encryption
密碼塊連結 - 如何更改所有塊的明文?
我剛剛閱讀了有關 CBC 加密和解密的內容,想知道如何更改每個明文塊?
假設您有一個初始化向量,3 個密文塊,知道每個塊密碼解密,並且您也知道每個明文塊。然後你有一些字元串,你想將這些給定的明文更改為。編輯:假設還有一個可用的填充預言。
如果我理解正確,更改第一個明文塊將非常容易:您將初始化向量的每個字節與第一個明文塊的每個字節進行異或,並與您想要將這些明文更改為的字元串的字元進行異或。將所有這些新字節放在一起,這就是新的初始化向量,並將這個新的初始化向量與第一個密文塊進行異或,我們將得到另一個明文;我們想要的那個。
iv的變化對下一個密文塊的明文沒有影響。但是現在為了改變下一個,即第二個明文,我們必須對第一個密文塊進行更改,這將可悲地破壞第一個明文塊……如果我們移動到下一個密文塊和嘗試更改其明文。所以,最後,只會有垃圾明文或根本沒有,格式不好。但我沒有看到任何其他方式可以正確更改所有明文塊?:/
我主要將自己定位在來自維基百科的這張漂亮的圖表上:
如果這就是你所擁有的,那麼我認為你不能。您可以輕鬆獲得第 1 和第 3 塊。更改第二個密文以獲得第三個塊的所需結果,並更改 IV 以獲得第一個所需的結果。但是更改密文塊意味著您不再擁有塊密碼解密的結果。
但是,如果您對解密預言機的訪問權限有限,那麼您只需要對兩個塊進行試用解密。塊 2 的密文使第三塊成為你想要的。然後給定它,您選擇塊 1 的密文,將其發送到解密以計算所需的 IV。