Initialization-Vector
不可預測性和非秘密 IV
初始化向量 (IV) 有兩個主要屬性:隨機性和可預測性。在大多數情況下,IV 不會被保密,任何人都知道。說對於 CBC 模式,我們需要確保 IV 是不可預測的,因為(自適應)選擇了明文攻擊。那麼,既然 IV 是已知的,那麼可預測性如何解決攻擊呢?相反,為什麼在通常已知的情況下仍需要預測 IV 的值?我很困惑,希望能更好地理解,謝謝。
在自適應選擇明文攻擊中,攻擊者有機會向預言機查詢攻擊者選擇的消息的加密。在針對 CBC 的 CPA 攻擊中,對於每個查詢,預言機隨機選擇一個新的 IV,CBC 用該 IV 加密對手的消息,並返回以 IV 為前綴的密文。
這樣做的一個後果是,對手在進行查詢後才知道選擇加密其明文的 IV 。這就是“非秘密但不可預測”在這種情況下的含義。
可預測的 IV 意味著攻擊者能夠在選擇要查詢的消息之前了解將使用什麼 IV。在這種情況下,攻擊者可以通過將它們的二進制補碼與他們查詢的消息的第一個塊進行異或來取消 IV 的影響。例如,如果對手知道下一個 IV 將是 $ \mathrm{IV}_i $ 他們可以查詢 $ \overline{\mathrm{IV}_i} \oplus P_i $ (對於單塊明文 $ P_i $ ),他們得到:
$$ \begin{align} C_i &= \mathrm{IV}_i | E_k(\mathrm{IV}_i \oplus \overline{\mathrm{IV}_i} \oplus P_i) \ C_i &= \mathrm{IV}_i | E_k(P_i) \end{align} $$ 所以他們基本上欺騙了神諭來揭示什麼 $ P_i $ 使用全零 IV 加密。