Rc4
在 RC4 中使用密文回饋是否安全?
考慮以下對 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 $ (基本上,我們可以對幾個狀態字節進行一些假設,並根據所選明文的密文確認或排除);或者那個曲子上的東西。很可能,發起攻擊需要更少的選擇明文。
甚至可以在沒有密鑰重用的情況下進行迭代選擇的明文攻擊。