我們可以在 CTR 模式下替換從加法到 XOR 增加的 IV 嗎?
在 CTR 模式下(不是基於 nonce),如果我們有 $ {IV}\stackrel{$}{\leftarrow}{0,1}^{128} $ 並且想要加密消息塊 $ M_1, M_2, …, M_\ell \in{0,1}^{128} $ :
密文是 $ IV\parallel C_1\parallel C_2\parallel…\parallel C_\ell $ , 在哪裡 $ C_i=AES_k(IV+i-1)\oplus M_i $ .
注意 $ IV $ 這裡是隨機的。
把CTR模式改成下面的算法怎麼樣?
密文是 $ IV\parallel C_1\parallel C_2\parallel…\parallel C_\ell $ , 在哪裡 $ C_i=AES_k(\boxed{IV\oplus(i-1)_{128}})\oplus M_i $ .
這裡, $ (i-1)_{128} $ 表示一個 128 位塊具有 $ (i-1) $ 在它的低位。
這樣的改變有一個好處:更容易實施 $ (IV\oplus1) $ 比實施 $ (IV+1) $ 使用CPU指令或亂碼電路。
我想知道是否有任何安全證據表明這種結構等於 CTR。目前,我什至找不到合適的關鍵字。
注意:一個答案我們如何在 CTR 模式下計算 IV+1?提到了這個變化。我覺得有必要進行一些安全討論。
實現 CTR 模式的一種相當常見的方法是通過採用每個消息的隨機數(例如 96 位)並在其右側附加 32 個零位來構造 IV。然後,對於消息中的每個密碼塊,這 32 個最低有效位都會增加 1。
該方法的有用特性是,如果從不重複使用隨機數,並且如果沒有消息包含超過 2 32 個密碼塊,則可以保證計數器值永遠不會重複。
出於您的目的,此方法的另一個有用功能是,只要上述條件成立(即只要 $ i \le 2^{32} $ 並且IV的最低32位全為零),那麼 $ IV + (i-1) = IV \oplus (i-1) $ . 因此,是否使用加法或 XOR 組合 IV 和塊計數器,或者甚至只是將 nonce 直接與 32 位塊計數器連接起來,都沒有區別。