Modes-of-Operation

使用具有 CFB 模式的可預測 IV 是否安全?

  • July 7, 2015

在寫這個答案時,我注意到NIST SP 800-38A說(強調我的):

“**對於 CBC 和 CFB 模式,IV 必須是不可預測的。**特別是對於任何給定的明文,在生成 IV 之前一定不可能預測將與明文相關聯的 IV。”

對於 CBC 模式,使用可預測的 IV 允許利用 IV 與第一個塊組合的方式進行眾所周知的選擇明文攻擊。但是,我看不出類似的攻擊如何適用於 CFB 模式。事實上,正如我在之前的回答中觀察到的,CFB、OFB 和 CTR 模式對於第一個塊是等效的。

事實上,在這個答案中,Thomas Pornin 寫道(再次強調我的):

" CFB 和 OFB 只需要唯一性:對於給定的密鑰,每個 IV 值最多只能使用一次。不需要不可預測性或統一性,因為 IV 首先“按原樣”加密(在使用明文進行任何操作之前)和使用攻擊者不知道的密鑰對具有良好分組密碼的值序列進行加密是一種很好的 PRNG。”

那麼,Thomas 錯了,還是 NIST 錯了,或者僅僅是過於謹慎了?如果通過使用具有 CFB 模式的可預測 IV 來啟用攻擊,它是如何工作的?

托馬斯是對的;如果您可以預測 IV,則不會對 CFB 模式進行攻擊;NIST 只是保持謹慎。

使用CBC,第一個加密塊的值 $ C_0 = E_k( IV \oplus P_0) $ , 在哪裡 $ IV $ 是用於該數據包的 IV, $ P_0 $ 是第一個明文塊的值,並且 $ E_k $ 是分組密碼的評估。

如果攻擊者可以預測 $ IV $ 提前,並且可以影響價值 $ P_0 $ ,那麼他就可以得到值 $ E_k(Q) $ , 對於任何值 $ Q $ . 方法如下;他學會了價值 $ IV $ ,然後注入一條消息,其第一個明文值 $ P_0 = IV \oplus Q $ . 加密器將生成一條加密消息,其第一個塊是 $ C_o = E_k( IV \oplus P_0 ) = E_k( Q ) $ .

使用此加密預言機,攻擊者可以驗證對先前消息可能解密的猜測。

相反,在 CFB 模式下,第一個加密塊是 $ C_0 = E_k(IV) \oplus P_0 $ . 雖然這看起來很相似,但攻擊者沒有類似的機會來選擇呈現給塊密碼的塊。如果攻擊者事先知道 IV,他就知道將呈現給塊密碼的第一個塊的值;他不能通過為第一個明文塊選擇任何特定值來影響它。現在,如果攻擊者可以控制 IV 的值,那麼是的,他可以直接使用它來創建加密預言機;他通常不允許攻擊者這樣做。

另外,如果我們重複使用同一個IV,那麼還有一個弱點(除了第一個塊比較明顯的洩漏之外);第二個密文塊是 $ C_1 = E_k( E_k(IV) \oplus P_0 ) \oplus P_1 $ ; 如果 $ IV $ 是恆定的,所以是 $ E_k(IV) $ ,因此攻擊者可以選擇帶有 $ P_0 = E_k(IV) \oplus Q $ ,還創建了一個加密預言機。

底線:可預測的 IV 在 CFB 模式下是安全的,只要它們不重複,並且您不允許攻擊者選擇它們。

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