- A+
WEP的加密、完整性检测和鉴别机制存在安全隐患,于是有了安全性更高的802.11i,802.11i在加密、完整性检测和身份鉴别机制中做了以下相应的改进:
1.加密机制
针对WEP加密机制存在的两个主要问题:一是密钥静态配置,二是一次性密钥集中只有2^ 24次方个一次性密钥。802.11i的解决思路:一是基于用户配置密钥,且密钥采取动态配置机制;二是将一次性密钥集中的一次性密钥增加到2^48个。
2.完整性检测机制
一是802.11i用于实现数据完整性检测的完整性检验值具有报文摘要的特性,即报文摘要算法的抗碰撞性。二是数据传输过程中将完整性检验值加密运算后的密文作为消息鉴别码。
3.身份鉴别机制:
一是802.11i采用基于扩展鉴别协议(Extensible Authentication Protocol,EAP)的802.11X作为鉴别协议,允许采用多种鉴别机制:CHAP、TLS;二是采用的鉴别机制是针对用户的;三是采用双向鉴别机制。
802.11i加密和完整性检测机制:
目前80.2.11i定义了两种加密和完整性检测机制,分别是临时密钥完整性协议(Temporal Key Integrity Protocol,TKIP)和CCMP(CTR with CBC-MAC Protocol)
一、TKIP
1.加密过程:
整个过程可以分成两个部分,第一部分是WEP128位随机数种子的生成过程,第二部分是明文分段和WEP加密过程。
WEP128位随机数种子由两级密钥混合函数生成,第一级密钥混合函数的输入是48位的序号计数器(TSC)的高32位、128位的临时密钥(TK)、发送端地址(TA)。输出是80位的中间密钥TTAK。
第二级密钥混合函数的输入是TSC的第16位、TTAK、TK,输出是128位的WEP的随机数种子,作为WEP加密输入的一部分。
MIC生成:MAC帧的净荷字段、MAC的源MAC地址(SA)、MAC帧的目的MAC地址(DA)和1B的优先级串接在一起构成数据序列,作为Michael函数的输入,然后Michael基于MIC密钥计算数据序列的报文摘要,产生8Bde MIC。
如果需要,可以对MIC和数据明文串接结果进行分段,作为WEP加密的输入。
用密文作为TKIP协议数据单元(MAC Protocol Data Unit,MPDU)的净荷构成发送端用于发送的TKIP MPDU。
2.完整性检测过程:
建立终端与AP之间的安全关联后,如果安全关联采用TKIP,安全关联两段之间传输的MAC帧就是TKIP MPDU。
当接收端接收到MAC帧之后,从MAC帧中分离出TA和TSC,根绝TA找到TK,用和发送端同样的方法计算出WEP随机数种子,通过WEP解密数据过程还原出数据和ICV明文,根据数据明文和G(x)重新计算ICV’,将ICV’和MAC帧中的ICV进行对比,如果相等,则接受该帧。
Michael函数将数据明文和MIC串接结果中的数据明文、SA、DA和优先级进行基于MIC密钥的报文摘要计算,得到8B的MIC’,用MIC’和MAC帧中的MIC进行对比,如果相等,则完整性检测通过。(如果该MAC帧携带的数据时诗句明文和MIC串接的结果,,可以直接进行完整性检测,如果接收到的是分段数据明文和MIC串接后产生的某个数据段,则要等所有数据段全部接收成功,并将这些数据拼接为数据明文和MIC串接结果在进行完整性检测)
二、CCMP
WEP和TKIP采用的加密方式是基于流密码体制的,但是流密码的一次性密钥集空间总是有限的;一次性密钥是由伪随机数生成器根据随机数种子计算得到的,由于伪随机数生成器算法是公开的,并且攻击者能通过嗅探到一部分一次性密钥,及其对应的IV或TSC,给攻破WEP和TKIP提供了可能。而CCMP采用的加密算法(AES)是基于公钥体制的,密钥的安全性更高。
1.MIC算法:
CCMP MIC算法首先将要进行完整性检测的数据序列分成长度为16B的数据段(B(0)、B(1)、….B(N)),然后对数据段进行加密分组链接运算。具体运算过程如下:
X(0)=〖AES〗_TK(B(0))
X(1)=〖AES〗_TK(X(0)⊕B(1))
…….
X(N)=〖AES〗_TK(X(N-1)⊕B(N))
2.CCMP加密:
1)由1B标志字节、13B随机数(6B发送端地址(A2)、6B报文编号(PN)和1B目前固定为0的优先级)和2B计数器值构成一个数据段A(i)。
2)用AES基于TK对A(0)进行加密,得到8B的S(0),S(0)再和T(T=X(N)的高64位)进行异或运算得到MIC。
3)然后再将S(1)到S(N)串接成和数据一样长度的密码流,并和数据进行异或运算,产生密文。
CCMP工作过程如下图所示
加鉴别数据是MAC帧首部中需要保证完整性的字段,包括各种地址字段、控制字段以及其他传输过程中保持不变的字段。
随机数由6B发送端地址(A2)、6B报文编号(PN)和1B目前固定为0的优先级组成。
发送端为每一个安全关联配置报文编号计数器,每发送一帧MAC帧,报文编号计数器+1,一方面保证不同的密钥流加密不同的MAC帧,另一方面可以用报文编号检测重放攻击。
3.CCMP完整性检测:
1)接收端从MAC帧首部首先得到附件鉴别数据,从CCMP首部中得到报文编号、发送地址和固定优先级组成随机数。
2)CCMP根据前面产生密钥流的方法产生密钥流,并将其和MAC帧中的密文进行异或操作,得到明文。
3)同时根据MAC帧中的MIC还原出T。
4)将附加鉴别数据和明文重新构成数据序列,并计算出T’,将计算得到的T’和MAC帧中MIC还原的T进行比较,如果相同,完整性检验正确。