802.11i是无线安全的救命稻草?
那么前面也说到了,TKIP只是为了弥补WEP缺陷所做的一种补救措施,治标不治本。WPA的命运就像他的草案命运一样注定会被标准所取代,这个千呼万唤才出来的标准就是802.11i。
其实802.11i是WPA第二代,也就是所谓的WPA2。802.11i完全放弃了WEP甚至对WPA的改善想法,所有的处理方式都试图开创出一种全新的机制,尤其是数据的加密方面,完全剔除RC4流加密,而是采用了CCMP(Counter Mode with CBC-MAC Protocol,计数器模式及密码快链消息认证码协议)算法。其实CCMP主要有两种算法组成,分别是CTR-Mode(计数器模式的高级加密AES标准算法)和CBC-MAC mode(块加密链信息验证码算法),前者采用AES快加密算法负责数据的加密处理,而后者则是一种完整性校验算法。另一方面依然保留了WPA身份认证机制802.1x及PSK。所以所谓的802.11i便可以简短的标识为:
802.11i(WPA2)= 802.1x + EAP + AES + CCMP
= Pre-shared Key + AES + CCMP
其中1X跟PSK认证过程跟WPA一样,同时利用
EAPOL-Key协商CCMP的密钥协商主密钥PMK。此过程也跟前面的TKIP的处理方式一样。当然CCMP用于加密及验证的密钥的生成还需要经过四次握手的过程。这个在后面会讲到。下面主要描述一下CCMP的数据处理过程。
从上图中可以看出CCMP的处理需要做如下几个方面的准备:
1. 构造附加认证数据ADD(Additional Authentication Data),其中包含帧头中的一些字段,这些字段必须通过真实性的校验,但又不能经过加密,否则802.11协议便无法进行操作。接收端会同样使用AAD字段,以确认这些字段在传送过程中未被改动。AAD字段会保护801.11协议版本、帧类型、分布式系统位及片段与次序位。它也会保护来自MAC标头的地址字段,同时会将序列号设为零以保护顺序控制字段。
2. 构建CCMP nonce。加密学上的nonce就是一个用过即丢的随机数。Nonce不应该在相同密钥中重复使用。在CCMP中nonce由封包编号PN及发送端地址组合而成。如此不同的STA也可以使用相同的PN,增加的随机性。
图 CCMP nonce数据生成
3. Packet number(PN)。用来防重放。构造nonce及构建CCMP Header。
4. 构建CCMP Header。如图中示,CCMP标头由PN中间添加了key id及扩展IV组合而成。
5. Temporal Key:由密钥衍生算法派生出来的密钥。
6. CCMP计数器Counter的生成:
图 CCMP加密计数器的生成
有了以上的准备,便可以交给CCMP进行加密及完整性校验数据处理。前面提到CCMP由两个算法组成,一个为CTR-Mode,一个为CBC-MAC Mode。
CTR-Mode全名为Adcanced Eneryption Standand (AES)in Counter Mode(计数器模式的高级加密AES标准算法)。AES是一种块加密算法,跟RC4流加密不同之处就在于在流加密中把加密数据当作流,然后采用等长流密码依次跟数据流做异或等算法计算。而块加密则把整个数据分成等长的块,然后对分割的块进行加解密处理。CCMP对数据的加密除了密钥外另外还多了Counter值,进一步增加了密钥的随机性。而这儿的这个计数值就是在上面flag,nonce,length of payload构建的Initial Counter字段。如下图所示,数据被分割以后逐块跟AES密钥异或处理得到加密块,没计算一个块数据计数器加1,这样每个数据块都会用不同的密钥进行加密处理。直至最后一个数据块。
图 CTR encryption 处理流程
CTR并没有提供完整性校验机制,而CCMP也提供了另外一种CBC-MAC Mode(Cipher Block Chaining Message Authentication Code),正如其名,CBC-MAC主要针对消息块经由block cipher algorithm加密运算,再把输出给下一个block当作输入使用,最后输出消息验证码,以达到验证消息的效果。下图正式完成了这个过程:
图 CBC-MAC 的处理流程
一开始第一个块没有input,所以IV用0代替在CCMP里会把低64bits无条件去掉,只取高位64bits当作MIC使用。
至此CTR完成了数据加密,将加密块串联后便得到了完整的数据帧,CBC-MAC最后计算得到了数据完整性校验码MIC,PN和Key id构成了CCMP Header,然后重新组装完成新的数据帧。然后这样便可以通过无线接口发送了。
图 802.11i加密后的数据帧
(未完待续---请关注下篇:WAPI凭什么跟802.11i博弈)