解析新一代WLAN安全技术IEEE802.11i、WPA和WAPI
来源:<a href='http://bbs.hqew.com/viewthread.php?tid=470485' target='_blank'>guanyanxiao</a>
作者:华仔
浏览:1207
时间:2016-08-10 14:18
标签:
摘要:
由PTK分解出来的这一组(五个)密钥是AP与该STA之间使用的密钥(所以也叫每用户密钥,用于AP与STA之间的单播报文的加密),这些密钥永远也不会以任何形式出现在无线网络上。在确认双方所持的PMK一致后,AP会根据自身是否支持每用户密钥的能力来指示STA是否安装并使用这个每用户密钥。为了使现有的设备能够通过软件/固件升级实现WPA,协议规定AP可以不采用PTK方式,而是利用下面将要描述的GTK作为AP向STA发送单播报文时的密钥。如果
由PTK分解出来的这一组(五个)密钥是AP与该STA之间使用的密钥(所以也叫每用户密钥,用于AP与STA之间的单播报文的加密),这些密钥永远也不会以任何形式出现在无线网络上。在确认双方所持的PMK一致后, AP会根据自身是否支持每用户密钥的能力来指示STA是否安装并使用这个每用户密钥。
为了使现有的设备能够通过软件/固件升级实现WPA,协议规定AP可以不采用PTK方式,而是利用下面将要描述的GTK作为AP向STA发送单播报文时的密钥。如果AP通知STA安装并使用PTK,那么STA在向AP发送一个EAPOL-KEY相应报文后,再把相应的密钥安装到无线网卡中。
四次握手成功后,AP要生成一个256位的GTK(Group Transient Key),GTK是一组全局加密密钥,所有与该AP建立关联的STA均使用相同的GTK,AP用这个GTK来加密所有与它建立关联的STA的通信报文, STA则使用这个GTK来解密由AP发送的报文并检验其MIC。该密钥可以分解为三种不同用途的密钥, 最前面的128位作为构造全局“每报文密钥”(Per-packet Encryption Key)的基础密钥(Base Key),后面的两个64位的密钥分别作为计算和检验WPA数据报文的MIC的密钥。AP使用EAPOL-KEY加密密钥将GTK加密并发送给STA,并指明该GTK是否允许STA用作发送报文所使用,STA成功接收到该报文,将GTK解密后,向AP发送应答报文,并根据AP所指示的Key Index将其安装无线网卡的相应位置,如果AP使用GTK作为向某一STA单播传输的密钥,则该STA也需要使用GTK作为向AP发送单播报文的密钥。
TKIP并不直接使用由PTK/GTK分解出来的密钥作为加密报文的密钥,而是将该密钥作为基础密钥(Base Key),经过两个阶段的密钥混合过程,从而生成一个新的每一次报文传输都不一样的密钥,该密钥才是用做直接加密的密钥。 通过这种方式可以进一步增强WLAN的安全性。密钥的生成方式如图4所示。
在WPA中,AP支持WPA和WEP无线客户端的混合接入。在STA与AP建立关联时,AP可以根据STA的Association Request中是否带有WPA信息元素来确定哪些客户端支持使用WPA。但是在混合接入的时候,所有WPA客户端所使用的加密算法都得使用WEP,这就降低了无线局域网的整体安全性。
尽管WPA在安全性方面相较WEP有了很大的改善和加强,但Wi-Fi联盟承认目前使用TKIP的WPA只是一个临时的过渡性方案。据来自Wi-Fi联盟的消息,预计在2004年第四季度推出的WPA v2中将会全面采用AES机制。
WAPI——中国提出的WLAN安全标准
除了国际上的IEEE 802.11i和WPA安全标准之外,我国也在今年5月份提出了无线局域网国家标准GB15629.11,这是目前我国在这一领域惟一获得批准的协议。标准中包含了全新的WAPI(WLAN Authentication and Privacy Infrastructure)安全机制,这种安全机制由WAI(WLAN Authentication Infrastructure)和WPI(WLAN Privacy Infrastructure)两部分组成,WAI和WPI分别实现对用户身份的鉴别和对传输的数据加密。WAPI能为用户的WLAN系统提供全面的安全保护。WAPI安全机制包括两个组成部分。
WAI采用公开密钥密码体制,利用**来对WLAN系统中的STA和AP进行认证。WAI定义了一种名为ASU(Authentication Service Unit)的实体,用于管理参与信息交换各方所需要的**(包括**的产生、颁发、吊销和更新)。**里面包含有**颁发者(ASU)的公钥和签名以及**持有者的公钥和签名(这里的签名采用的是WAPI特有的椭圆曲线数字签名算法),是网络设备的数字身份凭证。
在具体实现中,STA在关联到AP之后,必须相互进行身份鉴别。先由STA将自己的**和当前时间提交给AP,然后AP将STA的**、提交时间和自己的**一起用自己的私钥形成签名,并将这个签名连同这三部分一起发给ASU。
所有的**鉴别都由ASU来完成,当其收到AP提交来的鉴别请求之后,会先验证AP的签名和**。当鉴别成功之后,进一步验证STA的**。最后,ASU将STA的鉴别结果信息和AP的鉴别结果信息用自己的私钥进行签名,并将这个签名连同这两个结果发回给AP。
AP对收到的结果进行签名验证,并得到对STA的鉴别结果,根据这一结果来决定是否允许该STA接入。同时AP需要将ASU的验证结果转发给STA,STA也要对ASU的签名进行验证,并得到AP的鉴别结果,根据这一结果来决定是否接入AP。
从上面的描述我们可以看出,WAI中对STA和AP进行了双向认证,因此对于采用“假”AP的攻击方式具有很强的抵御能力。
在STA和AP的**都鉴别成功之后,双方将会进行密钥协商。首先双方进行密钥算法协商。随后,STA和AP各自会产生一个随机数,用自己的私钥加密之后传输给对方。最后通信的两端会采用对方的公钥将对方所产生的随机数还原,再将这两个随机数模2运算的结果作为会话密钥,并依据之前协商的算法采用这个密钥对通信的数据加密。
由于会话密钥并没有在信道上进行传输,因此就增强了其安全性。为了进一步提高通信的保密性,WAPI还规定,在通信一段时间或者交换一定数量的数据之后,STA和AP之间可以重新协商会话密钥。
WPI采用对称密码算法实现对MAC层MSDU进行的加、解密操作。