2. WEP协议:从加密原理到破解实战

WEP,全称Wired Equivalent Privacy,有线等效保密。名字起得挺响亮,但实际效果嘛……我当年第一次在实验室里破解WEP时,整个过程不到五分钟。嗯,咱们今天就来聊聊这个“老熟人”。

2.1 WEP加密原理:它到底是怎么工作的?

WEP的核心目标很简单:让无线通信跟有线一样安全。它用了两个技术:RC4流加密和CRC-32完整性校验。说白了,就是把数据先搅乱,再贴个防伪标签。

加密流程大致分四步:

  1. 计算完整性校验值(ICV):对原始数据做CRC-32,得到一个4字节的校验和,拼在数据后面。
  2. 生成初始化向量(IV):随机选一个24位的IV,跟预共享密钥(PSK)拼接,作为RC4的种子。
  3. RC4加密:用种子生成密钥流,跟数据(含ICV)做异或,得到密文。
  4. 封装发送:把IV(明文)和密文一起发出去。

关键点:IV是24位,只有约1600万个可能值。这在当时看来不少,但实际用起来……你想想看,一个繁忙的AP,几小时就能把IV池用光。

2.2 RC4算法:WEP的加密引擎

RC4是个流密码,由Ron Rivest在1987年设计。它的实现非常简单,我当年在嵌入式设备上移植时,只用了不到100行C代码。但简单不代表安全。

RC4分两个阶段:

  • 密钥调度算法(KSA):用种子初始化一个256字节的S盒。
  • 伪随机生成算法(PRGA):从S盒中不断输出伪随机字节,形成密钥流。

WEP的用法是:IV(24位)+ 密钥(40位或104位)作为种子。注意,IV是明文的,攻击者可以直接看到。

// RC4 KSA 伪代码示例
for i from 0 to 255
    S[i] = i
j = 0
for i from 0 to 255
    j = (j + S[i] + key[i mod keylen]) mod 256
    swap(S[i], S[j])

// RC4 PRGA 伪代码示例
i = 0
j = 0
while generating output
    i = (i + 1) mod 256
    j = (j + S[i]) mod 256
    swap(S[i], S[j])
    output S[(S[i] + S[j]) mod 256]

我的经验:RC4本身不是完全不可救药,但WEP对它的使用方式有大问题。IV太短、密钥直接拼接、没有身份验证——这三个漏洞叠加,让WEP成了纸糊的盾牌。

2.3 WEP漏洞分析:为什么它不堪一击?

WEP的漏洞不是单一问题,而是一连串设计缺陷的叠加。我把它归纳为四大类:

漏洞类别 具体问题 攻击利用方式
IV重用 24位IV空间太小,繁忙AP几小时就会重复 收集相同IV的密文,通过异或分析明文
RC4弱密钥 特定IV值会导致密钥流前几个字节可预测 Fluhrer-Mantin-Shamir(FMS)攻击
无重放保护 ICV不包含序列号,攻击者可重放旧包 重放攻击,诱导AP泄露更多信息
ICV缺陷 CRC-32是线性函数,可被比特翻转攻击绕过 修改密文后重新计算ICV,AP无法检测

为什么会这样?我举个例子。假设你用同一个密钥加密两条消息,攻击者拿到两个密文后做异或,密钥流就抵消了,剩下的就是两条明文的异或。再结合一些统计技巧,明文就出来了。

避坑指南:我曾经在2005年帮一家公司做无线安全审计,他们还在用WEP。我告诉他们这玩意跟没加密差不多,他们不信。结果我用一台普通笔记本,装了BackTrack,15分钟就拿到了密钥。从那以后,他们再也没提过WEP。

2.4 破解演示:实战WEP密钥恢复

咱们来走一遍典型的WEP破解流程。工具用的是aircrack-ng套件,这是无线安全审计的标配。我建议你在自己的实验环境里操作,别在别人的网络上试——那是违法的。

破解步骤:

  1. 开启监听模式:把无线网卡切换到monitor模式。
  2. 抓包:用airodump-ng捕获目标AP的流量。
  3. 注入ARP包:用aireplay-ng发送伪造的ARP请求,迫使AP生成大量新IV。
  4. 收集足够IV:通常需要2万到5万个唯一IV。
  5. 运行aircrack-ng:用收集到的IV破解WEP密钥。
# 步骤1:查看无线接口
iwconfig

# 步骤2:开启监听模式
airmon-ng start wlan0

# 步骤3:抓包,保存到文件
airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w wep_crack wlan0mon

# 步骤4:打开新终端,注入ARP包
aireplay-ng -3 -b 00:11:22:33:44:55 -h 你的MAC地址 wlan0mon

# 步骤5:收集足够数据后,运行破解
aircrack-ng wep_crack-01.cap

关键点:破解速度取决于IV收集速度。用ARP注入法,每秒可以产生几百个新IV。我见过最快的记录是3分钟破解64位WEP,8分钟破解128位WEP。

破解成功后,aircrack-ng会输出密钥。注意,它显示的是十六进制格式,你需要转换成ASCII才能用。比如密钥是"12:34:56:78:9A",对应的ASCII可能是乱码——因为WEP密钥不一定是可打印字符。

2.5 WEP的遗产:我们学到了什么?

WEP的失败给后来的协议设计留下了深刻教训。我个人总结了三条:

  • 密码学不能自己拼凑:把RC4和CRC-32简单组合,不等于安全。
  • 密钥管理是核心:静态密钥、短IV、无更新机制,这些都是致命伤。
  • 安全协议需要公开审查:WEP的算法在发布前没有经过充分密码分析,结果漏洞很快就被发现了。

现在你明白了吧?WEP不是“不够安全”,而是“根本不安全”。如果你还在维护老设备,赶紧升级到WPA2或WPA3。别等到被攻破了才后悔。

WEP加密与破解流程 明文数据 CRC-32计算ICV IV + 密钥 → RC4种子 RC4加密(异或) 发送:IV(明文)+密文 监听模式抓包 ARP注入加速IV生成 收集2万+唯一IV FMS/KoreK攻击分析 恢复WEP密钥 攻击者截获 核心漏洞:IV重用 + RC4弱密钥 + 无身份验证 破解时间:64位WEP约3分钟,128位WEP约8分钟(ARP注入条件下)