Aes

對 DES/AES 的選擇明文攻擊

  • October 18, 2018

PERSON A 使用 AES、CBC、PKCS5Padding 向 PERSON B 發送消息,其中 IV 在每條消息後遞增 1。如果 PERSON Z 知道任何消息的純文字的第一個塊是“是”或“否”,她是否可以發起攻擊以解密給定消息的第一個塊?提示:選擇明文攻擊

我的回答是,由於雪崩效應,我認為不可能發起解密第一個塊的攻擊。任何變化,無論是大小還是內容,CT中至少有50%的內容髮生了變化。

我的答案有什麼遺漏或完全錯誤嗎?

假設我們有一條使用 CBC 使用 IV 加密的消息(由人 A 發送) $ x $ ,並且消息的第一個塊是“是”或“否”。我們還假設攻擊者有能力請求對任意選擇的明文進行加密(儘管他不控制 IV——它總是在每次加密請求後遞增)。讓我們也說IV是攻擊者可預測的(只要攻擊者總是知道和/或可以控制何時使用加密函式,遞增的IV是可預測的)。換句話說,攻擊者知道,如果他請求加密某些明文,那麼用於加密的 IV 將是 $ x \oplus k $ 為了一些價值 $ k $ . 讓我們表示如果攻擊者通過以下方式發出請求,將使用攻擊者預測的 IV $ IV_z $ (“z”代表人 Z),即 $ IV_z = x \oplus k $ .

在這種情況下,攻擊很簡單:請求加密第一個塊為“是”的明文 $ \oplus $ $ k $ . 由於 CBC 的工作原理,密文的第一個塊, $ C_z $ , 將會: $ C_z = E(Yes \oplus k \oplus IV_z) = E(Yes \oplus k \oplus x \oplus k) = E(Yes \oplus x) $ .

現在攻擊者比較 $ C_z $ 到人 A 發送的加密消息的第一個塊,我們將其表示為 $ C_a $ . 如果人 A 發送的消息以“是”開頭,那麼 $ C_a = E(Yes \oplus IV_a) = E(Yes \oplus x) $ . 因此,如果消息以“是”開頭,那麼 $ C_z = C_a $ . 相反,如果消息以“否”開頭,則 $ C_z \neq C_a $ . 所以簡單地通過比較 $ C_z $ 和 $ C_a $ 攻擊者可以很容易地確定消息的第一個塊。

在 CBC 模式下使用非隨機(即攻擊者可預測的)IV 是不安全的。請記住:它將被異或到下一個塊中。

請參閱為什麼將非隨機 IV 與 CBC 模式一起使用是一個漏洞?了解更多資訊。

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