WEP详解

来源:互联网 发布:java md5加密是否可逆 编辑:程序博客网 时间:2024/04/28 08:30

AUTHOR:   Jeffrey.zhu

                                    BLOG:http://blog.csdn.net/gueter/

1 WEP 概述

    WEPWired Equivalent Privacy叫做有线等效加密,是一种可选的链路层安全机制,用来提供访问控制、数据加密和安全性检验等功能,是无线领域第一个安全协议。WEP的实现在802.11中是可选项,其MPDU格式如下所示:

 

 

 

2 密钥派生与分发

    WEP的密钥在802.111999)以前的版本中规定为64bits40bits 静态Key +24bits IV),后来有些厂家将静态共享Key拓展到了104bits,再加上24bits初始化向量便构成128bitsWEP密钥。关于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 SystemShared KeyOpen System无任何安全性可言,任何STA都可以接入网络;Shared Key则通过共享40bits104bits静态密钥来实现认证。两者认证过程如下图所示:

 

 

   上图中的challegeAP发送给STA的一个128bits的随机数,然后STAWEP密钥进行加密后返回到AP端,AP验证成功后,则返回认证成功的消息给STA,从而完成认证。

以上认证过程中所用管理帧的帧体格式如下所示:

 

    其中,Algorithm Number用于标识认证类型:0Open System1Shared Key

         Transaction Sequence用于标识认证的步骤;

         Status Code:用于最后一帧标识认证是否成功;

         Challenge Text field128bits伪随机数。

 

4 封装/解封装流程

    WEP封装过程如图所示:

 

    IV为初始化向量,WEP Key为密钥,种子密钥Seed64128bits=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 校验

    WEPMPDU的最后添加了4个字节的CRC (Cyclic Redundancy Check)校验,用于保证数据的完整性:

 

 

 

6 安全性分析

    WEP加密算法实际上是利用RC4流密钥算法作为伪随机数产生器,将初始化向量IVWEP密钥组合而成的种子密钥输入到该随机数产生器中生成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值的现象叫做初始化向量碰撞,这种现象对数据的机密性有极大的危害,假设我们知道发生初始化向量碰撞的两段密文值Ciphertext1Ciphertext2,由于明文是有统计规律的语言,结合字典攻击,就能够以极大概率猜测到明文Plaintext1Plaintext2的值,并可以使用明文的CRC校验值来判断得到的猜测值是否正确。许多攻击实例证明:利用已知的初始化向量IV和第一个字节密钥流输出,并结合RC4流密钥算法的特点,可以通过计算确定WEP密钥。

    此外,WEPCRC校验算法也存在攻击缺陷,首先,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在被动攻击和主动攻击中的破解都已经得到了证实,其安全弱点可以归纳成以下几点:

1802.2头信息和简单的RC4流密码算法,导致攻击者在客户端并获取到大量有效通信数据时,便可分析出WEP的密码;

2IV重复使用,导致在攻击者在有客户端且通信量少或者没有通讯时,可以使用ARP重放的方法获得大量有效数据;

3)无(弱)身份认证机制,导致攻击者能和AP建立伪链接,进而获得XOR后的输出文件;

4)使用线性函数CRC32进行完整性校验,导致攻击者能用XOR文件伪造一个ARP包捕获大量有效数据。

原创粉丝点击