RC4
RC4
Rivest Cipher 4 / ARC4
Rivest Cipher 4 / ARC4
设计者
Ron Rivest (RSA Security)
首次发布
1987年 (保密)
1994年 (泄露)
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 的方法
- 多个密钥流偏差:数千字节内存在可测量的非均匀分布
参考文献
- Popov, A. (2015). "Prohibiting RC4 Cipher Suites". RFC 7465.
- Fluhrer, S., Mantin, I., Shamir, A. (2001). "Weaknesses in the Key Scheduling Algorithm of RC4". SAC 2001.