WEP详解
1 WEP 概述
WEP ( Wired Equivalent Privacy ) 叫做 有线等效加密 ,是一种可选的链路层安全机制,用来提供访问控制、数据加密和安全性检验等功能,是无线领域第一个安全协议。 WEP 的实现在 802.11 中是可选项,其 MPDU 格式如下所示:
2 密钥派生与分发
WEP 的密钥在 802.11 ( 1999 )以前的版本中规定为 64bits ( 40bits 静态 Key +24bits IV ),后来有些厂家将静态共享Key 拓展到了 104bits ,再加上 24bits 初始化向量便构成 128bits 的 WEP 密钥。关于 WEP 的密钥类别划分以及密钥名称容易混淆,各类参考资料规范不一,本文主要参考标准定义,分为如下两类密钥:
Default Key(s)
Key mapping Key(s)
两者区别如下图所示:
Default Keys 常用于构建小到中型网络, 802.11 规定每个系统中应该有四个 Default Keys ,但事实上只需要一个,支持多个 Default Key 主要是便于平滑改变密钥,我们把起作用的密钥称作为 Active Key 。
Key mapping Keys 的基本原则是每个移动设备都有属于自己的密钥,该种方式常用于构建大型网络,这样可以克服 Default Key 所带来的密钥维护、更新困难问题,但并不是所有的厂家都支持 Key mapping Keys ,每个移动设备中使用不同的密钥在广播处理中会带来一些不可避免的计算问题,且 AP 上需要存储每个 STA 端的密钥,目前,对于广播包的处理比较可取的方法是使用 Default Key ,所以目前大多数产品都只支持 Default Key 。
3 认证
WEP 的认证方式有两种: Open System 及 Shared Key 。 Open System 无任何安全性可言,任何 STA 都可以接入网络;Shared Key 则通过共享 40bits 或 104bits 静态密钥来实现认证。两者认证过程如下图所示:
上图中的 challege 为 AP 发送给 STA 的一个 128bits 的随机数,然后 STA 用 WEP 密钥进行加密后返回到 AP 端, AP验证成功后,则返回认证成功的消息给 STA ,从而完成认证。
以上认证过程中所用管理帧的帧体格式如下所示:
其中, Algorithm Number 用于标识认证类型: 0 : Open System ; 1 : Shared Key ;
Transaction Sequence 用于标识认证的步骤;
Status Code :用于最后一帧标识认证是否成功;
Challenge Text field : 128bits 伪随机数。
4 封装 / 解封装流程
WEP 封装过程如图所示:
IV 为初始化向量, WEP Key 为密钥,种子密钥 Seed ( 64 或 128bits ) =IV+WEP Key , Key Stream= RC4PRGA (Seed)的伪随机数密钥流, Plaintext 为明文, CRC-32=CRC32(Plaintext) 为明文的完整性校验值, XOR 为异或运算, Ciphertext为最终的密文,最后,将 IV+Ciphertext 一起发送出去。
WEP 解封装过程如图所示:
Ciphertext 为密文,它采用与加密相同的算法产生解密伪随机数密钥流,再将密文与之 XOR 得到明文,将明文按照 CRC32算法计算得到完整性校验值 CRC-32′ ,如果加密密钥与 解密密钥相同,且 CRC-32′= CRC-32 ,则接收端就得到了原始明文数据,否则解密失败。
5 校验
WEP 在 MPDU 的最后添加了 4 个字节的 CRC (Cyclic Redundancy Check) 校验,用于保证数据的完整性:
6 安全性分析
WEP 加密算法实际上是利用 RC4 流密钥算法作为伪随机数产生器,将初始化向量 IV 和 WEP 密钥组合而成的种子密钥输入到该随机数产生器中生成 WEP 密钥流,再由该密钥流与 WEP 帧数据负载进行异或运算来完成加密的。其中, RC4 流密钥算法是将种子密钥进行某种置换和组合运算来生成 WEP 密钥流的,由于 WEP 帧中数据负载的第一个字节是 LLC 头,这个头信息对于每个 WEP 帧都是相同的,攻击者利用猜的第一个明文字节和 WEP 帧数据负载密文进行异或运算就可得到 PRNG 生成的密钥流中的第一字节,此外,种子密钥中的 24 比特初始化矢量 IV 是以明文形式传送的,攻击者可以将其截获,分析可知, 224 个数据包后肯定会出现重复的 IV 值,而且在实际实现中 IV 值重复的概率远远大于 224 ,那么根据生日悖论,大约212 个数据包后出现相同的 IV 值的概率将大于 0.5 ,假设处于繁忙工作状态下的 AP 每秒钟可以发送 1000 个数据包,则在 5秒后相同的 IV 值出现的概率就大于 0.5 ,即使 IV 采用累加的方式,隔几个小时也会出现重复的 IV 值,重复出现 IV 值的现象叫做初始化向量碰撞,这种现象对数据的机密性有极大的危害,假设我们知道发生初始化向量碰撞的两段密文值Ciphertext1 、 Ciphertext2 ,由于明文是有统计规律的语言 ,结合字典攻击,就能够以极大概率猜测到明文 Plaintext1 、Plaintext2 的值,并可以使用明文的 CRC 校验值来判断得到的猜测值是否正确。许多攻击实例证明:利用已知的初始化向量IV 和第一个字节密钥流输出,并结合 RC4 流密钥算法的特点,可以通过计算确定 WEP 密钥。
此外, WEP 的 CRC 校验算法也存在攻击缺陷,首先, CRC 检验和是有效数据的线性函数(针对异或操作而言,即 C(x +y)=C(x) + C(y) ),利用这个性质,攻击者可篡改明文 P 的内容,若攻击者知道要传送的明文 Plaintext 的具体内容(已知明文攻击),就可算出 RC4PRGA (Seed) , RC4PRGA (Seed)= Plaintext + (Plaintext + RC4PRGA (Seed)) ,然后可构造自己的加密数据 Ciphertext '=( Plaintext ',CRC32(Plaintext ')) + RC4PRGA (Seed) 和原来的 IV 一起发送给接收者 (802.11 允许 IV 重复使用 ) 。
总之,目前 WEP 在被动攻击和主动攻击中的破解都已经得到了证实,其安全弱点可以归纳成以下几点:
1 ) 802.2 头信息和简单的 RC4 流密码算法,导致攻击者在客户端并获取到大量有效通信数据时,便可分析出 WEP 的密码;
2 ) IV 重复使用,导致在攻击者在有客户端且通信量少或者没有通讯时,可以使用 ARP 重放的方法获得大量有效数据;
3 )无(弱)身份认证机制,导致攻击者能和 AP 建立伪链接,进而获得 XOR 后的输出文件;
4 )使用线性函数 CRC32 进行完整性校验,导致攻击者能用 XOR 文件伪造一个 ARP 包捕获大量有效数据。