7. 802.11:RSN、TKIP、CCMP
1.概述
临时密钥完整性协议(TKIP)
计数模块及密码块链消息认证码协议(CCMP)
2.TKIP与WEP的差异
密钥层次结构与自动密钥管理
不同于WEP直接使用单一主密钥(master key)的做法,TKIP使用到了多个主密钥。最后用来加密帧的密钥是从这些
主密钥派生而来。另外,TKIP也提供密钥管理操作。使得主密钥的更新可以在安全的情况下进行。
每帧生成密钥
它会为每个帧(从主密钥)派生出特有的RC4密钥。为每个帧准备独特密钥的过程称为密钥混合。
序列号计数器
为每个帧编序列号即可识别出次序错乱的帧,如此便能防范所谓的重放攻击(replay attack),亦即攻击者先拦截
有效封包,等一段时间在予以重传的攻击。
新的消息完整性校验
TKIP以一种比较牢靠的称为Michael的完整性校验散列算法,取代WEP所使用的线性散列算法。
3.TKIP的数据处理与操作
TKIP会以下列项目作为输入项
· 帧
· 用来加密的临时密钥
· Michael用来保护帧的内容的MIC密钥,TKIP与WEP的不同之处在于MIC使用了密钥
· 发送端地址也会被当成TKIP的输入项,因为必须用它来进行身份验证
· 由驱动程序或固件所维护的序列号计数器
4.TKIP的密钥混合过程与密钥的构造
TKIP会为所传送的每一个帧构造一把独特的密钥。此密钥派生字初始向量/序列号计数器、帧的发送端地址(未必是帧的来源)以及临时密钥。
TKIP将混合密钥的计算过程分为两阶段,第一阶段以发送端地址、序列号的前32位及128位的临时密钥作为输入项,输出项则是一个长度为80位的值。
密钥混合的第二阶段必须对每个帧进行计算。第二阶段所计算的结果、临时密钥与序列号的最后16位为输入项。
密钥混合过程第二阶段的输出值是128位的RC4密钥,可以作为WEP的随机数种子。最后16位则是用来产生一个WEP IV的高字节和低字节。WEP IV中间的字节是一个值固定的虚设字节,用来避免产生RC4弱密钥。
5.TKIP的数据传送
最前面的3字节记载了部分的TKIP序列号以及目前使用的密钥编号。虽然TKIP支持多组密钥,但实际上只有KeyID 0会被分配使用。至于Extended IV()
1.将802.11帧放在队列中等待传送。其中包含帧头以及有效载荷(payload)
2.计算消息完整性校验值(简称MIC)。
3.赋予每个帧一个序列号。TKIP的序列号计数器会随每个帧片段累加。如果帧无需分段,那么只要编一个序列号即可,如果帧被分割为数个片段、计数器则会依片段数量累加。
4.每个帧均会以其独有的WEP密钥进行加密。通过密钥混合过程,TKIP为每个帧产生WEP密钥。每个帧所拥有的密钥(per-frame key)将会传给WEP以作为IV与密钥之用。对每个帧而言,这两者均会随之变动。
5.帧本身加上步骤2所得到的Michael消息完整性校验值以及步骤4所得到的RC4密钥一并传给WEP,由WEP进行帧封装操作。这意味着受TKIP保护的帧将会同时包含WEP的成分。
6.TKIP的接收
1.一旦无线接口接收到帧,如果通过帧检查确认它不曾损毁将会将其交付给TKIP做进一步的验证。
2.TKIP采取的第一个步骤就是检查序列号以防范重放攻击。TKIP的重放攻击保护机制要求帧的接收必须依循相当严格的次序。如果帧序列号小于或等于最近已接收到的有效帧,就会因为可能遭到重放攻击而被摒弃。
3.还原用来加密封包的WEP随机数种子。借由发送端地址,临时密钥以及序列号,接收端即可解锁以恢复WEP随机数种子。
4.WEP随机数种子到手后,就可以除去帧外围所包裹的WEP层,然后还原内容。在还原内容的过程中,WEP ICV必须接受校验。虽然WEP的完整性校验并不牢靠,但是还是可以用来防范一些无谓的攻击。
5.如果涉及到帧分段,那么在重组完整有效载荷之前,必须等到所以片段接收完成。不过帧分段在802.11中并不常用。
6.帧重组之后,将会依赖内容计算其Michael值。如果计算出来的值与封包所记载的MIC值相符则会将帧传递给较上层协议并且将序列号设成帧当中所记载的序列号。如果无法通过MIC校验,则会触发对策。
7.计数器模式及密码块链消息认证码协议(CCMP)
这个以AES为基础的链路层安全协议称为 Counter Mode with CBC-MAC Protocol(计数器模块及密码块链消息认证码协议,简称CCMP)
8.CCMP的数据处理
CCMP以下列项目作为输入项
· 帧
· 临时密钥(temporal key)
· 密钥标识符(key identifiter)
· 封包编号(packet number)
CCMP的数据传输
1.将802.11帧至于队列中待传(queued for transmission)。其中包含帧头(frame header)以及有效载荷(payload)
2.赋予一个48位的封包号码(Packet number,简称PN)。和TKIP序列号一样,同样一个临时密钥不会重复使用PN。每次传送后PN就会累加,它同时也用来侦测重放攻击。
3.构造附加认证数据(Additional Authentication Data,简称AAD)字段
4.下一步构造CCMP,所谓nonce,是指少数的数据位,以确保加密操作确实作用域某些独特的数据。
5.接着,构建CCMP标头。它会将构成PN(封包编号)的6个字节拆开,然后将Key ID(密钥标识符)置于其中。和WEP一样,CCMP中也包含4个密钥槽。Extended IV(扩展初始化向量)位在CCMP中永远被设为1,因为要能够容纳PN这么大的字段必定需要使用到8个字节的标头。
6.至此,CCM加密引擎所需要的输入项均已备齐。它以128位的临时密钥,步骤4所产生的nonce,步骤3所产生的附加认证数据(AAD)以及帧主体作为输入项。所有这些数据是以长度为8字节的MIC(消息完整性检查码)来确保其真实性,帧主体与MIC也经过加密。
7.以原始的MAC标头、CCMP标头与步骤6中产生的加密数据来组成待传送的加密帧,帧产生之后就会交付无线接口传送。
9.CCMP的接收
CCMP的解密过程就是图7-6的直接逆转
1.一旦无线接口接收到帧,如果通过帧校验序列(frame check sequence)确定它为曾受损,就会将其交付给CCMP进行验证。
2.从所接受到的帧还原出AAD(附加认证数据)。其中只包含帧头而且未经过加密。
3.从帧还原出CCMP nonce。其中包含封包编号、发送端地址以及QoS字段的内容,这三者均可自未加密的帧头中取得。
4.接收端解读密文。此时需要临时密钥、步骤3所还原nonce、步骤2所得到的认证数据、当然还有加密过的帧主体。此过程完成后,接收端就会得到一份经解密后的帧副本以及经解密后的完整性校验码。
完整性校验是针对明文数据与附加认证数据进行计算的。如果计算出的完整性校验值与步骤4所得到的完整性校验值相符,就继续进行,否则就终止过程。
6.由MAC标头与步骤4所还原的数据组成明文帧。