WLAN安全技术剖析(续3)--802.11i无线安全的救命稻草?

      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数据加密流程
     从上图中可以看出 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 ,然后重新组装完成新的数据帧。然后这样便可以通过无线接口发送了。
MAC Header
CCMP Header
Data
MIC
FCS
                802.11i 加密后的数据帧
 
(未完待续---请关注下篇:WAPI凭什么跟802.11i博弈)

你可能感兴趣的:(网络,安全,wlan,休闲,802.11i)