天天看点

802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP

概述

之前802.1X解决了无线局域网的身份验证问题,而802.11i则是为了解决之前WEP链路层数据加密问题,有2种方式:

  • Temporal Key Integrity Protocol(临时密钥完整性协议,简称 TKIP)
  • Counter Mode with CBC-MAC Protocol(计数器模式及密码块链消息认证码协议,检称CCMP)

临时密钥完整性协议(TKIP)

TKIP是为了弥补WEP缺陷的临时性协议,是在WEP的补丁,采用和WEP同样硬件,这样老的支持WEP的设备就可以通过软件升级到支持TKIP。

TKIP与WEP差异

可以把TKIP理解成用软件的方式在WEP外包了再一层,提高安全性。

密钥层次结构与自动密钥管理

WEP直接使用单一主密钥(master key),TKIP使用多个主密钥,而最后用来加密帧的密钥是从这些主密钥派生而来。且TKIP提供了密钥管理操作来安全的跟新主密钥。

每帧生产密钥(per-frame keying)

TKIP会为每个帧(从主密钥)派生出特有RC4密钥,这个过程称为密钥混合(key mixing)

序列号计数器(sequence counter)

为每个帧都标上序列号以此来识别次序错乱的帧,防止重放攻击(replay attack)

新的消息完整性校验(message integrity check,简称MIC)

TKIP采用称为Michael的完整性校验算法,取代WEP使用的线性算法,源地址、目标地址、MSDU priority、和没有加密的MSDU通过Michael算计计算的结果,8个自己标记M0~M7

消息完整性校验失败对策

当MIC校验失败是,TKIP设计了对策(countermeasure)来应对。

TKIP初始向量的使用与密钥混合

TKIP将IV从24位增加至48位,再通过密钥混合生产不同的RC4密钥来加密帧,密钥混合会加入传送者MAC地址,这样即使IV相同,也会有不同的RC4密钥

TKIP序列计数器与重放攻击保护

TKIP的IV也充当序列号计数器作用,每次有新的主密钥,初始向量/序列号计数器会被重置位1,每穿一个帧,序列号计数器随之加1.

序列号计数器也可以防范重放攻击,当收到帧的序列号大于当前值就给予接受,否则丢弃。

TKIP加密解密

802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP
  • TSC0-TSC5,分别是TSC的每个字节,TSC由TKIP序列计数器生成,为每一个MPDU递增生成6字节TSC序列号。
  • TK(temporal key)临时密钥,由PTK或者GTK派生而来,PTK是由SSID和预设共享密钥计算出来的
  • TA 发射地址
  • keyplaintext MSDU,还没加密的MSDU(就是frame body)
  • MIC key,从TK中取出指定位,

    A STA shall use bits 128–191 of the temporal key as theMichael key for MSDUs from the Authenticator’s STA to the Supplicant’s STA.

    A STA shall use bits 192–255 of the temporal key as the Michael key for MSDUs from the Supplicant’s STA to the Authenticator’s STA.

  • SA 源地址
  • DA目地地址

把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无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP

从图中可以看到,该帧主要由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字节)。

802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP

上图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

802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP

CCMP(计数器模块及密码块链消息认证码协议)

CCMP以AES算法取代WEP、TKIP中的RC4,其中AES密钥和使用128bits

主要输入有

  • MAC header:802.11 MAC 头部(WEP、TKIP都没有)
  • plaintext Data(MSDU): 需要发送的playload
  • PN(packet number),长度128bits,和KTIP中TSC相似,防止回放和注入攻击
  • TK(temporal key):和TKIP加密一样,CCMP也有一个128bit的TK,它可能是由SSID+passphase计算来的PTK(pairwise transient key ),也可能是GTK(group temporal key ),两者分别用于单播数据加密和组播数据加密
  • Key ID: 和TKPIP中的一样,用于指定加密用的key,注意这个ID是index的缩写,一般设为0
  • Nonce:他是一个随机数,而且只生成一次,它一共长104bit,是由PN(packet number,48bit), Qos中的优先级字段(8bit)和TK(transmitter address , 48bit)这三个字段组合来的,需要注意,不要和4路握手的Nonce混淆
  • AAD Additional authentication data (AAD):它是由MPUD的头部构建而来的,它用于确保MAC头部的数据完整性,接收端会使用这个字段来检验MAC头部

    下面时CCMP加密

    802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP
    下图是CCMP MPDU的帧格式:
    802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP

    CCMP头部(8字节)和MIC(8字节)部分是基于原来的帧多出部分,当开启CCMP加密的时候,那么MPDU的frame body部分将会增大16个字节,这样所允许的最大frame body将是2304+16=2320个字节。

    下面是CCMP的解密过程:

    802.11无线权威指南读书笔记(7)802.11:RSN、TKIP、CCMP