Cbc

澄清這次預言機填充攻擊中“01”的起源?

  • July 9, 2016

我在這裡找到了我認為是對 oracle padding 攻擊的簡單解釋:http ://robertheaton.com/2013/07/29/padding-oracle-attack/

然而,我對這裡的專家應該很容易發現的東西感到困惑。

當您打開連結並瀏覽到標題為“操縱密文”的小節時,有一個聲明說…

如果伺服器說我們生成了一個帶有有效填充的明文,那麼我們可以很確定它P2'[16]必須是01.

我無法理解為什麼值01會暗示填充是好的。我知道根據 PKCS#5,我們可以獲得01最後一個字節的唯一方法是只有 1 個字節的填充。但是根據此頁面上的範例,我沒有看到任何表明數據具有 1 字節填充的內容。所以,我不明白為什麼 01 的結果被認為是成功的。

是否有人能夠查看該文件並告知其01來源?

實際上,我們並不關心原始消息的填充量;我們關心修改後的明文(即修改後的密文的解密結果)是否具有良好的填充。

如果最後一個塊具有以下模式之一,則填充將有效:

XX XX XX XX XX XX XX 01

XX XX XX XX XX XX 02 02

XX XX XX XX XX 03 03 03

XX XX XX XX 04 04 04 04

XX XX XX 05 05 05 05 05

ETC

(其中 XX 是任何字節值)。如果我們修改密文,然後解密器解密並分組並找到有效的填充,那麼我們知道最後一個塊中的值是這些模式之一。

現在,為什麼我們最初認為一個是第一個,而基本上忽略了其他的?好吧,對於隨機變化(也就是說,如果攻擊者處於該攻擊的初始階段,並且可能沒有關於解密的資訊),那麼最後一個塊將以011/256 的機率擁有最後一個字節;總體而言,其餘替代方案的發生機率小於 1/65280,因此以相當高的機率,接受的密文表明明文的最後一個字節是01.

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