7.2 无线局域网的安全威胁和安全机制

7.2.1 安全威胁

由于无线局域网(WLAN)通过无线电波传递信息,所以在数据发射机覆盖区域内的几乎任何WLAN用户都能接触到这些数据。WLAN所面临的基本安全威胁主要有信息泄露、完整性破坏、拒绝服务和非法使用。主要的可实现的具体威胁包括无授权访问、窃听、伪装、篡改信息、否认、重放、重路由、错误路由、删除消息、网络泛洪等,具体含义如表7-1所示。

表7-1 主要的无线局域网可实现安全威胁

7.2.2 WEP加密机制

在IEEE 802.111999年版本的协议中,规定了安全机制WEP(Wired Equivalent Privacy),中文名为有线等价加密。WEP提供3个方面的安全保护:数据机密性、访问控制和数据完整性。其核心是RC4序列密码算法,用密钥作为种子通过伪随机数产生器(PRNG)产生伪随机密钥序列(PRKS)和明文相异或后得到密文序列。WEP协议加密流程如图7-1所示。

图7-1 WEP协议加密流程

由于在序列算法中,同一伪随机序列不能使用两次,因此WEP中将RC4的输入密钥K分为两部分:24b的初始向量(IV)和40b的密钥(SK),IV||SK=K,每加密一次IV需改变一次,IV以明文的形式随着密文数据帧一起发往接收方。SK为BSS中各STA所共享的秘密信息,通常由管理员手工配置和分发。为了保证数据的完整性,WEP中采用CRC32算法作为消息认证算法,并将数据的消息认证码ICV作为明文的一部分一同加密。接收端在解密密文之后,重新计算消息认证码ICV′,并和收到的ICV比较,若不符合则抛弃接收的数据。协议的设计者希望该协议能够提供给用户与有线网络相等价的安全性。然而,研究分析表明,WEP机制存在如下较大的安全漏洞。

(1)WEP加密是可选功能,在大多数的实际产品中默认为关闭,因此用户数据完全暴露在攻击者面前。

(2)WEP对RC4的使用方式不正确,易受IV Weakness攻击而被完全恢复秘密密钥(SK)。RC4中存在弱RC4密钥。一个弱密钥是一个种子,并且RC4利用此种子产生的输出看起来并不随机。也就是说,当使用一个弱密钥作为种子输入RC4时,产生的前面几位可以推断出种子的其他位。由于此原因,安全专家建议抛弃RC4输出的前256位。

(3)IEEE 802.11协议没有规定WEP中秘密密钥(SK)如何产生和分发。在绝大多数产品中,密钥有两种方法产生:一种是直接由用户写入40b或108b的SK;另一种是由于用户愿意采用方便的第二种方法,但由于生成器设计的失误造成40b的SK实际上只有21b的安全性,从而使穷举攻击成为可能。普通用户还喜欢用生日、电话号码等作为密钥词组,这使得字典攻击也是一种有效的方法。

(4)SK可以由用户手工输入,也可以自动生成,无论怎样都容易遭受穷举攻击。而且SK为用户分享,很少变动,因而容易泄露。

(5)初始向量(Initialization Vector,IV)空间太小。流加密算法的一个重要缺陷是如果使用相同的IV||SK加密两个消息时,攻击者可以获得。

C1C2={P1⊕RC4(IV||SK)}⊕{P2⊕RC4(IV||SK)}=P1P2

如果其中的一个消息明文已知,另一个消息的明文立即就可以获得。为了防止这种攻击,WEP采用IV-SK作为密钥,其中SK不变,IV每传输一次获得不同的密钥流,IV以明文的方式传送。但是WEP协议中的IV空间只有24b,在实际的产品中IV一般用计数器实现,24b的空间使得在繁忙的WLAN中每过几个小时IV就会循环重复出现一次(IV只有24b,这意味着只有大约17000000种可能的IV值。一个WLAN设备每秒可以传送大约500个完整帧,因此,完整IV空间被用尽仅需要几个小时。一旦所有IV都被使用,就要开始重复使用,而重复使用IV意味着重复使用伪随机序列进行加密)。在很多网络中,每一个设备在潜在不同的IV下仅使用一个密钥,因此,IV空间将被消耗得更快。在SK不变时,同一IV意味着产生同一伪随机密钥序列(PRKS),而这在序列加密算法中是不允许的。

(6)WEP中的CRC32算法原本是通信中用于检查随机误码的,是一个线性的校验,并不具有抗恶意攻击所需要的消息认证功能。首先,CRC32算法是一个线性函数,因此攻击者可以任意修改密文而不被发现。其次,由于CRC32算法是一个不需要密钥的函数,任何人如果知道消息都可以自行计算消息的校验和。如果攻击者获得一个传输帧对应的明文,它就可以在无线网络中传输任意的数据。加密消息可以写为M||CRC(M)⊕K,其中M为消息,K是一个伪随机序列,RC4算法由IV和密钥得来。CRC(·)表示CRC函数,||表示连接。CRC关于XOR运算是现行的,这意味着CRC(XY)=CRC(X)⊕CRC(Y)。于是在没有得到消息内容的情况下,攻击者可以通过调换某些比特而操纵消息。下面描述消息变化ΔM的情况。攻击者希望从窃取的原始保护消息(M||CRC(M))⊕K中得到((M⊕ΔM)||CRC(M⊕ΔM))⊕K。完成此目的,首先计算CRC(ΔM),然后将ΔM||CRC(ΔM)与原始保护的消息异或。下面的推导说明这样做为什么可行:

((M||CRC(M))⊕K)⊕(ΔM||CRC(ΔM))

=((M⊕ΔM||(CRC(M)⊕CRC(ΔM)))⊕K

=((M⊕ΔM||CRC(M⊕ΔM))⊕K

在最后一步中,使用了CRC函数的线性特征。因为CRC(ΔM)可以在没有密钥的情况下计算出来,尽管有加密和ICV机制,攻击者也可以成功。同时,WEP没有使用任何重放监测机制,因此,攻击者可以重放任何前面记录的消息,并且可以被AP接收。

7.2.3 WEP认证机制

无线网络协议IEEE 802.11指定的认证技术可用于独立服务集(IBSS)中的工作站(STA)之间的认证,也可用于基本服务集(BSS)中的STA和无线局域网的接入设备(AP)之间的认证。

IEEE 802.11共指定两种认证方式:开放系统认证和共享密钥认证。开放系统认证这种方式实际上没有认证,是一种最简单的情况,也是默认方式,其认证过程如图7-2所示。

图7-2 开放系统认证

共享密钥认证方式采用WEP加密算法,其过程如图7-3所示。

图7-3 共享密钥认证

(1)请求工作站发送认证帧。

(2)AP收到后,返回一个验证帧,其帧体包括:认证算法标识=“共享密钥”、认证处理序列号=2、认证状态码=“成功”、认证算法依赖信息=“质询文本”,如果认证状态码是其他状态,则表明认证失败(比如根据MAC地址访问控制列表认为用户MAC地址非法),而质询文本也将不会发送,这样整个认证过程就此结束。

(3)如果第(2)步中的状态码=“成功”,则请求工作站将从该帧中获得质询文本并用共享密钥WEP算法将其加密,然后发送一个认证管理帧。其帧体包括:认证算法标识=“共享密钥认证”、认证事务序列号=3、认证算法依赖信息=“加密的质询文本”。

(4)AP在接收到第三个帧后,使用共享密钥对质询文本解密,若和自己发送的相同,则认证成功,否则认证失败。同时相应工作站发送一个认证管理帧,其帧体包括:认证算法标识=“共享密钥认证”、认证事务序列号=4、认证状态码=“成功/失败”。

WEP认证机制存在如下问题。

(1)身份认证是单向的,即AP对申请接入的移动客户端进行身份认证,而移动客户端并不能对AP的身份进行认证。因此,这种单向的认证方式导致可能存在假冒的AP。

(2)从WEP协议身份认证过程可以发现,由于AP会以明文的形式把128B的随机序列流发给移动客户端,所以如果能够监听一个成功的移动客户端与AP之间身份验证的全过程,截获它们之间双方互相发送的数据包,就可以得到加密密钥流。而拥有了该加密密钥流,任何人都可以向AP提出访问请求(即监听到的相同的序列)。因而,WEP协议身份认证方式对于监听攻击失效。

7.2.4 IEEE 802.1X认证机制

由于IEEE 802.11 WEP协议的认证机制存在安全隐患,为了解决无线局域网用户的接入认证问题,IEEE工作组于2001年6月公布了802.1X协议。IEEE 802.1X协议称为基于端口的访问控制协议(Port Based Network Access Control Protocol),它不但可以提供访问控制功能,而且可以提供用户认证和计费的功能。IEEE 802.1X其实可应用于无线网络和有线网络,其核心是可扩展认证协议(Extended Authentication Protocol,EAP)。

7.2.4.1 IEEE 802.1X协议的体系结构

IEEE 802.1X协议是针对以太网而提出的基于端口进行网络访问控制的安全性标准。基于端口的网络访问控制指的是利用物理层特性对连接到局域网端口的设备进行身份认证。如果认证成功,则允许该设备访问局域网资源,否则禁止该设备访问局域网资源。802.1X标准最初是为有线以太网设计的,后来发现它也适用于符合802.11标准的无线局域网,于是被视为是无线局域网的一种增强网络安全的解决方案。802.1X协议的体系结构如图7-4所示。

图7-4 802.1X协议体系结构

IEEE 802.1X协议的体系结构包括3个实体:客户端系统(Supplicant System)、认证系统(Authentication System)和认证服务器系统(Authentication Server System)。

(1)客户端系统(称为请求者)。一般为一个用户终端系统,该系统通常要安装一个客户端软件,用户通过启动这个客户端软件发起IEEE 802.1X协议的认证过程。为了支持基于端口的接入控制,客户端系统必须支持基于局域网的扩展认证协议(Extensible Authentication Protocol Over LAN,EAPOL)。

(2)认证系统(称为认证者)。在无线局域网中就是无线接入点(Access Point,AP),为了支持IEEE 802.1X协议的网络设备。在认证过程中只起到“转发”的功能,所有的实质性认证工作在请求者和认证服务器上完成。

(3)认证服务器系统。为认证者提供认证服务的实体,经常采用远程身份验证来拨入用户服务(Remote Authentication Dial In User Service,RADIUS)。认证服务器对请求方进行鉴权,然后通知认证者这个请求者是否为授权用户。

基于双端口的IEEE 802.1X认证协议是一种对用户进行认证的方法和策略,可以是物理端口(如以太网交换机的以太网口),也可以是逻辑端口(如根据用户端MAC地址的接入逻辑)。通常将网络访问端口分为两个虚拟端口:非受控端口和受控端口。非受控端口允许认证者和局域网上其他计算机之间交换数据,而无须考虑计算机的身份验证状态如何;非受控端口始终处于双向连通状态(开放状态),主要用来传递EAPOL协议帧(即把EAP包封装在局域网上),可保证客户端始终可以发出或接受认证。受控端口允许经验证的局域网用户和验证者之间交换数据;受控端口平时处于关闭状态,只有在客户端认证通过后才打开,为用户传递数据和提供服务。根据不同需要,受控端口可以配置为双向受控和单向受控。如果用户未通过认证,则受控端口处于未认证(即关闭)状态,则用户无法访问认证系统提供的服务。

在认证时用户通过非受控端口和AP交互数据,请求者和认证者之间传EAPOL协议帧,认证者和认证服务器同样运行EAP协议,认证者将EAP封装到其他高层协议中,如RADIUS,以便EAP协议穿越复杂的网络到达认证服务器,称为EAPoverRADIUS。若用户通过认证,则AP为用户打开一个受控端口,用户可通过受控端口传输各种类型的数据帧(如HTTP、POP)。扩展认证协议EAP只是一种封装协议,在具体应用中可以选择EAP/TLS、EAP-SIM、Kerberos等任意一种认证协议。

7.2.4.2 IEEE 802.1X协议的认证过程

IEEE 802.1X协议实际上是一个可扩展的认证框架,并没有规定具体的认证协议,具体采用什么认证协议可由用户自行配置,因此具有相当好的灵活性。IEEE 802.1X认证过程如图7-5所示。

图7-5 IEEE 802.1X认证过程

(1)申请者向认证者发送EAPOL-Start帧,启动认证流程。

(2)认证者发出请求,要求申请者提供相关身份信息。

(3)申请者回应认证者的请求,将自己的相关身份信息发送给认证者。

(4)认证者将申请者的身份信息封装至RADIUS-Access-Request帧中,发送至AS。

(5)RADIUS服务器验证申请者身份的合法性,在此期间可能需要多次通过认证者与用户进行信息交互。

(6)RADIUS服务器告知认证者认证结果。

(7)认证者向申请者发送认证结果,如果认证通过,那么认证者将为申请者打开一个受控端口,允许申请者访问认证者所提供的服务。反之,则拒绝申请者的访问。

7.2.4.3 IEEE 802.1X协议的特点

IEEE 802.1X协议能很好地适应现代网络用户数量急剧增加和业务多样性的要求,与传统的PPPoE(Point to Point Protocol over Ethernet)和Web/Protal认证方式相比,具有以下优点。

(1)协议实现简单。IEEE 802.1X协议为两层协议,对设备的整体性能要求不高,可以有效降低建网成本。

(2)业务灵活。IEEE 802.1X的认证体系结构中采用了“控制端口”和“非控制端口”的逻辑功能,从而可以实现业务与认证的分离。用户通过认证后,业务流和认证流实现分离,对后续的数据包处理没有特殊要求,业务可以很灵活,尤其在开展宽带组播等方面的业务有很大的优势,所有业务都不受认证限制。

(3)成本低。IEEE 802.1X协议解决了传统PPPoE和Web/Protal认证方式带来的问题,消除了网络瓶颈,减轻了网络的封装开销,降低了建网成本。

(4)安全可靠。具体表现在如下几个方面。

①用户身份识别取决于用户名,而不是MAC地址,从而可以实现基于用户的认证、授权和计费。

②支持可扩展的认证、无口令认证,如公钥证书和智能卡、互联网密钥交换协议(IKE)、生物测定学、信用卡等,同时也支持口令认证,如一次性口令认证、通用安全服务应用编程接口(GSS API)方法(包括Kerberos协议)。

③动态密钥生成保证每次会话密钥各不相同,并且不必储存于NIC和AP中。

④全局密钥(Global Key)可以在会话密钥的加密下安全地从接入点传给用户。

⑤相互认证有效防止了中间人攻击和假冒接入点AP,还可以防范地址欺骗攻击、目标识别和拒绝服务攻击等,并支持针对每个数据包的认证和完整性保护。

⑥可以在不改变网络接口卡的情况下,插入新认证和密钥管理方法。

7.2.5 WAPI协议

针对IEEE 802.11 WEP安全机制的不足,2003年我国首次提出无线局域网安全标准(Wireless LAN Authentication and Privacy Infrastructure,WAPI)。在WAPI中,一个重要的部分就是认证基础结构(Wireless Authentication Infrastructure,WAI),用来实现用户的身份认证。WAI认证结构其实类似于IEEE 802.1X结构,也是基于端口的认证模型。整个系统由移动终端(STA)、接入点(AP)和认证服务单元(Authentication Service Unit,ASU)组成,其中ASU是可信第三方,用于管理参与交换所需要的证书。AP提供STA连接到认证服务单元(ASU)的端口(即非受控端口),确保只有通过认证的STA才能使用AP提供的数据端口(即受控端口)访问网络。

当STA关联AP时,AP和STA必须进行双向认证。只有认证成功后,AP才允许STA接入,同时STA也才允许通过该AP收发数据。整个认证过程由证书鉴别、单播密钥协商和组播密钥通告三部分组成,如图7-6所示。

图7-6 WAPI认证过程

7.2.5.1 证书认证过程

(1)认证激活。当STA关联或重新关联至AP时,由AP向STA发送认证激活以启动整个认证过程。

(2)接入认证请求。STA向AP发出接入认证请求,将STA证书与当前接入认证请求一同发送给AP。

(3)证书认证请求。AP收到STA接入认证请求后,首先记录认证请求时间,然后向ASU发出证书认证请求,即将STA证书、接入认证请求、AP证书及AP的私钥对它们的签名构成证书认证请求发送给ASU。

(4)证书认证响应。ASU收到AP的证书认证请求后,验证AP的签名和AP证书有效性,若不正确,则认证失败,否则进一步验证STA证书,验证完毕,ASU将STA证书认证结果信息(包括STA证书和认证结果)、AP证书认证结果信息(包括AP证书、认证结果及接入认证请求时间)和ASU对它们的签名构成证书认证响应发回给AP。

(5)接入认证响应。AP对ASU返回的证书认证响应进行签名验证,得到STA证书的认证结果,根据此结果对STA进行接入控制,从而完成了对STA的认证。AP将收到的证书认证响应回送至STA。STA验证ASU的签名后,得到AP证书的认证结果,根据该认证结果决定是否接入该AP,从而完成对AP的认证。

至此,STA与AP之间完成了证书认证过程。值得注意的是,认证是双向的。证书认证成功后,AP向STA发送密钥协商请求分组开始与STA协商单播密钥。

7.2.5.2 单播密钥协商过程

(1)密钥协商请求。AP采用伪随机数生成算法生成伪随机数R1,利用STA的公钥将其加密。AP将密钥协商标识、单播密钥索引、加密信息和安全参数索引等用私钥生成签名发送给STA。

(2)密钥协商响应。STA首先检查当前状态、安全参数索引和AP签名的有效性。然后查看分组是证书认证成功后的首次密钥协商还是密钥更新协商请求,并且对密钥协商标识字段值进行比较。最后使用私钥解密得到R1,STA产生R2,将R1R2的结果进行扩展得到单播会话密钥。AP将单播密钥索引、下次密钥协商标识、消息鉴别码、用AP公钥加密的R2等发送给AP。

AP收到密钥协商响应消息后,使用私钥解密得到R2,扩展R1R2得到单播会话密钥和消息鉴别密钥,计算消息鉴别码,将其和响应分组中的消息鉴别码字段进行比较。最后比较会话算法标识,判断下次密钥协商标识是否单调递增,保存下次密钥协商标识作为下次单播密钥更新时的密钥协商标识。在单播密钥协商成功后,开始组播密钥协商过程。AP首先向STA发送组播密钥通告分组通告组播密钥。

7.2.5.3 组播密钥通告

(1)组播密钥通告。AP将组播密钥索引、单播密钥索引、组播密钥通告标识、用STA公钥加密的组播密钥通告数据、消息鉴别码等发送给STA。

(2)组播密钥分组。STA首先检查当前状态,用单播密钥索引中标识的消息鉴别密钥计算消息鉴别码,并与分组中的鉴别码进行比较,以确定分组的有效性。若该分组不是证书鉴别成功后的首次组播密钥通告,则比较组播密钥通告标识STA保存的上次组播通告中的组播密钥通告标识字段值。相同则重传上次的组播密钥响应分组,若该分组是证书鉴别成功后的首次组播密钥通告或者组播密钥通告标识字段严格单调递增,则利用私钥解密得到组播主密钥,并且将其扩展得到组播会话密钥。STA将组播密钥索引、单播密钥索引、组播密钥通告标识、消息鉴别码等发送给AP。

AP通过单播密钥索引中标识的消息鉴别密钥计算消息鉴别码,并与分组中的消息鉴别码值进行比较,然后比较响应分组与通告分组中的组播密钥通告标识、组播密钥索引字段,如果相同则表示组播密钥通告成功。

另外一个特别值得注意的是,WAPI中使用的加密算法是我国自己制定的分组加密算法SMS4。2006年我国国家密码管理局公布了WAPI中使用的SMS4密码算法,该算法是我国拥有自有知识产权的加密算法,作为W API的一部分发布。这是我国第一次公布自己的商用密码算法,其意义重大,标志着我国商用密码管理更加科学化和与国际接轨。

7.2.6 IEEE 802.11i TKIP和CCMP

在我国提出WAPI标准的同时,针对IEEE 802.11 WEP安全机制所暴露出的安全隐患,IEEE 802工作组于2004年初发布了新一代安全标准IEEE 802.11i。该协议将IEEE 802.1X协议引入到WLAN安全机制中,增强了WLAN中身份认证和接入控制的能力;增加了密钥管理机制,可以实现密钥的导出及密钥的动态协商和更新等,大大地增强了网络的安全性。为解决WEP存在的严重的安全隐患,IEEE 802.11i提出了两种加密机制:临时密钥集成协议(Temporal Key Integrity Protocol,TKIP)和计数模式/CBC MAC协议(Counter Mode/CBC MAC Protocol,CCMP)。其中,TKIP是一种临时过渡性的可选方案,兼容WEP设备,可在不更新硬件设备的情况下升级至IEEE 802.11i;而CCMP机制则完全废除了WEP,采用新型加密标准(Advanced Encryption Standard,AES)来保障数据的安全传输,但是AES对硬件要求较高,CCMP无法在现有设备的基础上通过直接升级来实现(需要更换硬件设备),它是IEEE 802.11i机制中必须实现的安全机制。下面对IEEE 802.11i加密机制进行分析,认证协议主要采用802.1X。

7.2.6.1 TKIP加密机制

TKIP协议是IEEE 802.11i标准采用的过渡安全解决方案,它是包裹在WEP协议外的一套算法,用于改进WEP算法的安全性。它可以在不更新硬件设备的情况下,通过软件升级的方法实现系统安全性的提升。TKIP与WEP一样都是基于RC4加密算法,但是为了增强安全性,将初始化矢量IV的长度由24位增加到48位,WEP密钥长度由40位增加到了128位,同时对现有的WEP协议进行了改进,新引入了4个算法来提升安全性。

(1)防止出现弱密钥的单包密钥(Per Packet Key)生成算法。

(2)防止数据遭非法篡改的消息完整性校验码(Message Integrity Code,MIC)。

(3)可防止重放攻击的具有序列功能的IV。

(4)可以生成新鲜的加密和完整性密钥,防止IV重用的再密钥(rekeying)机制。

加密过程如图7-7所示。

图7-7 TKIP加密过程

TKIP的加密过程主要包括如下几个步骤。

(1)媒体访问控制协议数据单元(Medium Access Control Protocol Data Unit,MPDU)的生成:首先发送方根据源地址(SA)、目的地址(DA)、优先级(Priority)和MAC服务数据单元(MAC Service Data Unit,MSDU),利用MIC密钥(MIC Key)通过Michael算法计算出消息完整性校验码(MIC),并将MIC添加到MSDU后面,一起作为WEP算法的加密对象,如果MSDU加上MIC的长度超出MAC帧的最大长度,可以对MPDU进行分段。

(2)WEP种子的生成:TKIP将临时密钥(Temporal Key)、发送方地址(TA)及TKIP序列计数器(TSC)经过两级密钥混合(Key Mixing)函数后,得到用于WEP加密的WEP种子(Seeds)。对于每个MPDU,TKIP都将计算出相应的WEP种子。

(3)WEP封装(WEP Encapsulation):TKIP计算得出的WEP种子分解成WEP IV和RC4密钥的形式,然后把它和对应的MPDU一起送入WEP加密器进行加密,得到密文MPDU并按规定格式封装后发送。

7.2.6.2 CCMP加密机制

在802.11环境下,采用流密码的RC4算法并不合适,应当采用分组密码算法。AES是美国NIST指定的用于取代DES的分组加密算法,CCMP是基于AES的CCM模式,它完全废除了WEP,能够解决目前WEP所表现出来的所有不足,可以为WLAN提供更好的加密、认证、完整性和抗重放攻击的能力,是IEEE 802.11i中必须实现的加密方式,同时也是IEEE针对WLAN安全的长远解决方案。CCMP加密过程如图7-8所示。

图7-8 CCMP加密过程

(1)为保证每个MPDU都可以使用新的包号码(Packet Number,PN),增加PN值,使每个MPDU对应一个新的PN,这样即使对于同样的临时密钥,也不会出现相同的PN。

(2)用MPDU帧头的各字段为CCM生成附加鉴别数据(Additional Authentication Data,AAD),CCM为AAD的字段提供完整性保护。

(3)用PN、A2和MPDU的优先级字段计算出CCM的使用一次的随机数(Nonce)。其中,A2表示地址2,优先级字段作为保留值置为0。

(4)用PN和Key Id构建8字节的CCMP头(header)。

(5)由TK、AAD、Nonce和MPDU数据生成密文,并计算MIC值。最终的消息由MAC头、CCMP头、加密数据及MIC连接构成。

7.2.6.3 TKIP和AES-CCMP的比较

TKIP与AES-CCMP都是用数据加密和数据完整性密钥保护STA及AP之间传输数据包的完整性和保密性。然而,它们使用的是不同的密码学算法。TKIP与WEP一样,使用RC4,但是与WEP不同的是,提供了更多的安全性。TKIP的优势为经过一些固件升级后,可以在WEP硬件上运行。AES-CCMP需要支持AES算法的新硬件,但是其与TKIP相比,提供了一个更清晰、更高雅、更强健的解决方案。

TKIP修复WEP中的缺陷包括如下两种。

(1)完整性。TKIP引进了一种新的完整性保护机制,称为Michael。Michael运行在服务数据单元(SDU)层,可在设备驱动程序中实现。

为了能检测重放攻击,TKIP使用IV作为一个序列号。因此,IV用一些初始值进行初始化,然后每发送一个消息后自增。接收者记录最近接收消息的IV。如果最新接收到消息的IV值小于存储的最小IV值,则接收者扔掉此消息;然而,如果IV大于储存的最大IV值,则保留此消息,并且更新其存储的IV值,如果刚收到消息的IV值介于最大值和最小值之间,则接收者检查IV是否已经存储;如果有记录,则扔掉此消息;否则,保留此消息,并且存储新的IV。

(2)保密性。WEP加密的主要问题为IV空间太小,并且RC4存在弱密钥并没有考虑。为了克服第一个问题,在TKIP中,IV从24位增加到48位。这似乎是一个很简单的解决方案,但困难的是,WEP硬件仍然期望一个128位的RC4种子。因此,48位IV与104位密钥必须用某种方式压缩为128位。对弱密钥的问题,在TKIP中,各消息加密密钥都不相同。因此,攻击者不能观察到具有使用相同的密钥的足够数量的消息。消息密钥由PTK的数据加密密钥产生。

TKIP的新IV机制及消息密钥的生成如图7-9所示。48位IV分为上32位(upper 32 bits)和下16位(lower 16 bits)。IV的上部分与PTK的128位数据加密密钥和STA的MAC地址相联合(Key-mix phase 1)。然后,将此计算结果与IV下部分相联合(Keymix phase 2),得到104位消息密钥。TKIP的RC4种子由消息密钥、IV的下部分(分成两字节)及一个虚假填充字节(dummy byte,防止出现RC4弱密钥)拼接而来。

图7-9 TKIP的新IV机制

AES-CCMP的设计要比TKIP简单,因为它不必为兼容WEP硬件所束缚。因此,它取代了RC4,使用基于AES的分组加密。并为AES定义了一个新的工作模式,称为CCM,它由两种工作模式结合而来:CTR(计数)加密模式和CBC-MAC(加密块链接-消息认证码)模式。在CCM模式中,消息发送方计算出消息的CBC-MAC值,并将其附加到消息上面,然后将其用CTR模式加密。CBC-MAC的计算也只设计消息头,然而加密只应用到消息本身。CCM模式确保了保密性和完整性。重放攻击检测由消息的序列号得以保证,通过将序列号加入到CBC-MAC计算的初始块中来完成。