RC4

RC4
Rivest Cipher 4 / ARC4
设计者
Ron Rivest (RSA Security)
首次发布
1987年 (保密)
1994年 (泄露)
类别
流密码
密钥长度
40 - 2048 bit
内部状态
256 字节 S-box
速度
极快(极简实现)
安全状态
已弃用

RC4是 Ron Rivest 于 1987 年为 RSA Security 设计的流密码,曾是最广泛使用的流密码之一。RC4 算法极其简洁,仅使用字节级操作(交换、加法),因此实现简单、速度极快。

⚠ 安全警告:RC4 于 2015 年被 IETF 在 TLS 中正式禁止使用(RFC 7465)。多项研究揭示了 RC4 的严重统计偏差,使其不再安全。
算法
KSA (Key-Scheduling Algorithm): S[i] = i (i = 0..255) j = 0 for i = 0 to 255: j = (j + S[i] + key[i mod keylen]) mod 256 swap(S[i], S[j]) PRGA (Pseudo-Random Generation Algorithm): i = j = 0 while 需要密钥流: i = (i + 1) mod 256 j = (j + S[i]) mod 256 swap(S[i], S[j]) output S[(S[i] + S[j]) mod 256]
已知攻击
  • Fluhrer-Mantin-Shamir 攻击(2001):利用 WEP 中的 IV 弱点,可在数分钟内破解 WEP 无线网络
  • 统计偏差:RC4 密钥流的第 2 个字节偏向 0 的概率为 1/128(而非 1/256)
  • RC4 NOMORE(2015):AlFardan 等展示了在约 52 小时内破解 TLS RC4 的方法
  • 多个密钥流偏差:数千字节内存在可测量的非均匀分布
参考文献
  1. Popov, A. (2015). "Prohibiting RC4 Cipher Suites". RFC 7465.
  2. Fluhrer, S., Mantin, I., Shamir, A. (2001). "Weaknesses in the Key Scheduling Algorithm of RC4". SAC 2001.