Cbc

使用可預測但加密的 IV 攻擊 CBC

  • May 22, 2015

令 P 為安全分組密碼,例如 AES-128。

假設伺服器有一個 CBC 加密預言機,它使用攻擊者選擇但唯一的 nonce 來為每條消息生成 IV = P(key, nonce)。相同的密鑰用於從 nonce 生成 IV 以加密消息。

對於可以選擇明文和隨機數的攻擊者,該系統在語義上並不安全(規定所有隨機數必須是唯一的)。

具有可預測(但未加密)IV的類似系統存在攻擊者可以猜測目標密文內容的漏洞。

這個系統有類似的攻擊嗎?

如果隨機數只是可預測的(即計數器)而不是選擇攻擊者,這種攻擊是否仍然有效?

如果對向預言機發送包含零向量的塊有限制,這種攻擊能否奏效?

通過加密計數器為 CBC 模式生成 IV 是NIST SP 800-38A附錄 C 中推薦的 IV 生成方法之一:

“有兩種推薦的方法來生成不可預測的 IV。第一種方法是在用於加密明文的相同密鑰下將前向密碼函式應用於隨機數。隨機數必須是唯一的數據塊“

該方案也得到了 Bellare等人的經典論文的認可。“對稱加密的具體安全處理”(2000 年):

“要製作正確的 CBC 計數器版本,可以讓初始化向量為 $ y_0 = f(ctr) $ 並增加 $ ctr $ 每次加密後都有一個。該方案最多能夠加密 $ 2^l $ 消息。然後可以模擬定理 17。如果密鑰用於確定 $ y_0 $ 與用於 CBC 加密的其餘部分的密鑰是分開的。”

唉,他們的證明對於普通讀者來說有點難以理解,坦率地說,Wooding 在“舊模式的新證明”(2008 年)中給出的替代證明也好不了多少。1 至少作者好心總結一下他們的結論:

“我們證明,如果使用加密計數器代替隨機字元串作為每條消息的 IV,CBC 模式仍然是安全的。”

事實上,對於一個合理可讀的證明草圖,你可能比在 crypto.SE 上查看 Seth 的這個答案更糟糕。


然而,所有這些證明都假設計數器序列是預先確定的。如果攻擊者可以選擇計數器值,事情就會崩潰。

特別是,給定一個已知的明文/密文對 $ (P = P_1 P_2 \dots P_n, C = C_1 C_2 \dots C_n) $ ,攻擊者可以強制IV等於任何密文塊 $ C_i $ (為了 $ i \ge 2 $ ) 通過選擇 $ C_{i-1} \oplus P_i $ 作為隨機數。

除其他外,這允許攻擊者檢查密文是否被阻止 $ c_j $ (和前面的塊 $ c_{j-1} $ ) 在另一條消息中對應於一個猜測的明文 $ p_j $ 通過送出消息 $ c_{j-1} \oplus p_j \oplus C_i $ 用於加密,使用隨機數 $ C_{i-1} \oplus P_i $ ,並檢查結果密文的第一個塊是否等於 $ c_j $ . 這與您在問題中提到的基於可預測 IV 的攻擊完全相同。


  1. 實際上,Wooding 論文的主要問題是大量的符號。如果你能記住所有變數和函式代表什麼,那實際上是相當清楚的。儘管如此,我還是想知道誰(顯然,除了作者之外)考慮過類似“ $ \scriptstyle \mathcal E\text-CBCH^{\mathcal P^\ell,c,V_0}_{n_L,0,n_E} $ " 加密方案的合理表示法。

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