之前802.1X解决了无线局域网的身份验证问题,而802.11i则是为了解决之前WEP链路层数据加密问题,有2种方式:
TKIP是为了弥补WEP缺陷的临时性协议,是在WEP的补丁,采用和WEP同样硬件,这样老的支持WEP的设备就可以通过软件升级到支持TKIP。
可以把TKIP理解成用软件的方式在WEP外包了再一层,提高安全性。
WEP直接使用单一主密钥(master key),TKIP使用多个主密钥,而最后用来加密帧的密钥是从这些主密钥派生而来。且TKIP提供了密钥管理操作来安全的跟新主密钥。
TKIP会为每个帧(从主密钥)派生出特有RC4密钥,这个过程称为密钥混合(key mixing)
为每个帧都标上序列号以此来识别次序错乱的帧,防止重放攻击(replay attack)
TKIP采用称为Michael的完整性校验算法,取代WEP使用的线性算法,源地址、目标地址、MSDU priority、和没有加密的MSDU通过Michael算计计算的结果,8个自己标记M0~M7
当MIC校验失败是,TKIP设计了对策(countermeasure)来应对。
TKIP将IV从24位增加至48位,再通过密钥混合生产不同的RC4密钥来加密帧,密钥混合会加入传送者MAC地址,这样即使IV相同,也会有不同的RC4密钥
TKIP的IV也充当序列号计数器作用,每次有新的主密钥,初始向量/序列号计数器会被重置位1,每穿一个帧,序列号计数器随之加1.
序列号计数器也可以防范重放攻击,当收到帧的序列号大于当前值就给予接受,否则丢弃。
把MIC追加到MSDU尾部,看作MSDU’ 如果需要分片,则将MSDU’ 分片,那么plaintext MSDU和MIC就可能分别再2个MPDU被发送出去,接收端会将MPDU重组生成原来的MSDU’ 。每个分片的MPDU使用相同的extended IV,但是每个MPDU的TSC会单调递增。
和WEP一样,会在每个MPDU后加上ICV
TKIP通过phase1和phase2 生产WEP seed
组后将keystream和plainte MPDU,ICV,IV(TSC0,TSC1 Key ID),extended IV, MIC进行异或计算生成最后用于发送的Encrypted MPDU
下面是经过TKIP加密以后生成的加密MPDU:
从图中可以看到,该帧主要由802.11 MAC Header(前32个字节)、Frame Body 和CRC三个部分构成,Frame Body部分主要由以下5部分组成:
(a)IV/Key ID
(b)Extended IV
(c)MSDU payload
(d)MIC
(e)ICV
(1)第一部分是802.11 MAC Header(前32个字节),可以看出头部并没有作任何改动
(2)IV/Key ID : 它的长度是4个字节,和WEP加密中的IV长度一样,但是其中的内容并不一样,它的前三个字节分别是TSC1,WEP Seed和 TSC0 (TSCn后面分析);最后一个字节分别由Reserved(5bit),EXT IV 1bit,Key ID 2bit; EXT IV是用来指定是否传送后面的Extended IV,对于WEP来说不需要这部分,所以设为0,对于TKIP加密来说,Extended IV是必须的,所必须设为1;Key ID是key index缩写,是从WEP继承而来的,在WEP中可以用于指定使用第几个key,但是在TKIP中一般设为0。
TSC5是TSC最高有效位,而TSC0是TSC最低有效位。
WEP Seed是(TSC1 | 0x20) & 0x7f的结果
(3)Extended IV: 它的长度4个字节,它是从48-bit TKIP sequence counter (TSC2 through TSC5)派生而来的;从图中可以看出IV/Key ID和Extended IV字段都是没有加密的,我们也可将这两个字段一共8个字节看成TKIP的头部
(4)接下来是加密的payload MSDU
(5)MSDU后面是MIC,8个字节,当它追加到MSDU后面时,就成了MSDU的一部分,用于后面的MPDU分片
(6)Frame Body的最后是Integrity Check Value (ICV),4个字节,它是通过计算整个MPDU而来的。MSDU upper-layer payload和 MIC及ICV一样,都有进行加密
(7)帧的最后一部分是CRC,它是4个字节的FCS,它是通过计算全部的帧头和帧体部分得来的(calculated over all the fields of the header and frame body )
由于额外的IV(4字节),Extended IV(4字节),MIC(8字节)和ICV(4字节),一共20个字节。也就是说TKIP加密额外的给数据帧体添加了20个字节,那么TKIP加密的数据帧中MSDU‘ 的最大值将会达到2324字节(802.11规定一个帧中MSDU的最大size是2304字节)。
上图a是计算mic需要参数,b是MSDU需要分片时的情况。
TKIP头部(8字节)和MIC(8字节)和WEP ICV部分是基于原来的帧多出部分,当开启TKIP加密的时候,那么MPDU的frame body部分将会增大20个字节,这样所允许的最大frame body将是2304+20=2324个字节。
下面时TKIP的解密,主要时输入TA、TK、TSC和已经加密的MPDU
CCMP以AES算法取代WEP、TKIP中的RC4,其中AES密钥和使用128bits
主要输入有