Rc4

在 RC4 中使用密文回饋是否安全?

  • November 18, 2015

考慮以下對 RC4 的修改,給出一些“密文回饋”

i ← 0
j ← 0
C ← 0  -- We will remember the previous output ciphertext byte.
repeat
   i ← (i + 1) mod 256
   j ← (j + S[i] + C) mod 256  -- Use the previous ciphertext byte
                               -- for "ciphertext feedback".
   S[i] ↔ S[j]
   input P                     -- Read the next byte of plaintext
   C ← S[(S[i] + S[j]) mod 256] xor P
   output C                    -- Output the next byte of ciphertext

能夠在這種依賴明文的模式下使用 RC4 會很好,以避免各種流密碼的弱點,同時仍然擁有易於實現的廉價密碼。

這裡有什麼明顯(或不明顯)的問題嗎?

$$ Edit: Other than my ability to write appropriate pseudocode on the first try. $$

至少有一件事情是非常錯誤的:如果攻擊者可以獲得一些短的選擇明文的密文和相同的重用密鑰/初始狀態,則允許重建狀態,因為索引以受控方式變化。如果我們獲得了 $ 2^{24} $ 由 3 個字節組成的明文 $ u $ $ v $ $ w $ $ 0 $ (基本上,我們可以對幾個狀態字節進行一些假設,並根據所選明文的密文確認或排除);或者那個曲子上的東西。很可能,發起攻擊需要更少的選擇明文。

甚至可以在沒有密鑰重用的情況下進行迭代選擇的明文攻擊。

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