无线局域网安全(三)————CCMP加密

来源:互联网 发布:网络教育报名流程2017 编辑:程序博客网 时间:2024/06/16 16:37

Counter Mode with Cipher-Block Chaining Message Authentication Code Protocol(CCMP)

CCMP加密在802.11i修正案中定义,用于取代TKIP和WEP加密。CCMP使用AES块加密算法取代WEP和TKIP的RC4流算法,它也是WAP2指定的加密方式,因为AES加密算法是和处理器相联系的,所以旧的设备中可以支持WEP和TKIP,但是不能支持CCMP/AES加密,关于AES算法的详细介绍可以查看文档《FIPS PUB 197-2001 》。值得注意的是,在CCMP加密使用的AES算法中都是使用的128bit的密钥和128bit的加密块,关于CCM的定义请参考《IETF RFC 3610 》。

CCM主要有两个参数:M=8,表示MIC是8个字节;L=2,表示长度域是两个字节一共16位,这样就可以满足MPDU最大的长度。
同时CCM需要给每个session指定不同的temporal key,而且每一个被加密的MPDU都需要一个指定的临时值,所以CCMP使用了一个48bit的PN(packet number),对同一个PN的使用将会使安全保证失效。
CTR(CounterMode ):用于提供数据保密性

CBC(Cipher-Block Chaining

CBC-MAC(Cipher-Block Chaining Message Authentication Code ):用于认证和完整性


下图是CCMP的加密过程:

它的主要输入包括:

MAC header:802.11 MAC 头部

plaintext Data(MSDU):  需要发送的playload

PN(packet number): 长度128bit,它和TKIP中TSC(TKIP sequence number )很相似,它是每个帧的标识,而且它会随着帧的发送过程不断递增,他可以防止回放和注入攻击

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头部


下面我们来看看主要加密过程:

1. 每一个新的MPDU需要发送时,都会重新创建一个48bit的PN,如果是重传的MPDU,则使用原来发送MPDU的PN

2. 使用MPDU的头部构建AAD,如下图所示,它是MAC Header的构成,其中深灰色部分会被用来构建AAD,而且会被CCM保密;其中一些浅灰色的也会用于构建AAD,根据帧的类型不同,其中一些字段可能没有使用,那么就会用0覆盖。

这样计算出来的MIC,不仅确保了MAC Header的完整性,也确保了frame body的完整性,而且所有的MAC address(包括BSSID)都有受到保护,同时MAC Header的其他一些域也有受到保护。接收端也会对这些受保护的MAC Header进行完整性校验,比如frame type and the distribution bits两个位是受保护的,那么接收端就会对这两个受保护的位进行校验,需要注意的是,AAD并不包括MAC头部的Duration 字段,因为在正常的IEEE 802.11 操作中,Duration 字段是会随时变动的。

通常在Frame Control域中的一些子域,Sequence Control域和Qos Control 域会覆盖为0,因此这些域不会受到保护,比如Retry bit and Power Management bits不会受到保护。

3. 由PN(packet number,48bit), Qos中的优先级字段(8bit)和TK(transmitter address , 48bit,Address 2)这三个字段组合生成一个Nonce

4. 构建8个字节的8-octet CCMP 头部,这个头部由Key ID 和PN构成,PN有被分成6个字段。你会发现它和8个字节的TKIP头部很相似

5. 使用temporal key, AAD, nonce, and MPDU data 作为输入和AES clock cipher 算法,生成8个字节的MIC和加密的MSDU,这个过程叫CCM originator processing
6. 将CCMP头部追加到MAC头部后面,尾随的是加密的MSDU和加密的MIC。接下来的是FCS,它是通过计算全部的头部的帧体而来,也就是计算FSC字段前面的所有字段,没有CRC字段,或者说CRC字段被FCS字段给覆盖了


下图是CCMP MPDU的帧格式:

下图是802.11官方文档中的CCMP MPDU帧结构图,可以对照着看,其实上图省略了一个Rsvd字节,它应该有两个Rsvd字段,一个是8bit,一个是3bit(后面称为Rsvd1和Rsvd2),如下:


从图中可以看到,前32个字节的MAC头部并没有任何变化,帧体由三个部分构成,CCMP Header + MSDU Payload + MIC , 其中CCMP的头部由Key ID和PN构成(PN被分为6个字段,分别放置)。CCMP的头部是没有被加密的,有加密的部分是MSDU Payload和MIC。

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

通过上面的分析,我们可以看出,TKIP加密是基于MSDU的加密,而CCMP加密是基于MPDU的加密,这样就避免了针对MSDU的攻击,解决了在MSDU加密中不能解决的问题。

下面是使用CCMP加密时,omnipeer抓包工具抓的两个加密包,该工具使用的是小端decode,从抓包来看,很难区分是用的哪种加密,因为它是从TKIP,但是我们可以从认证过程中的4路握手进行了解,我们先来分析一下这个加密数据包:

PN0=0x3A

PN1=0x00

Rsvd1=0x00

Rsvd2=0b00000

has  Ext IV=0b1

Key ID=0b00

PN2-PN5全部是0 

Encrypted Data=87 bytes, 其中MIC占8个字节



下面将对其中一些主要的步骤进行一些具体的分析:

PN processing
它是一个主动的自增计数器,每一个新发送的MPDU都会生成一个新的PN,如果是重传的MPDU就会使用旧的PN继续进行发送。如果在一系列的MPDUs发送过程中,使用的temporal key 是同一个,那么不同MPDUs必须使用不同的PN,也就是PN不会重复。


Construct AAD
前面我们由提到,AAD是从MAC头部其出相关字段进行构建的,下面是其中取出来的字段:

对于不同的网络架构和帧类型来说,有些字段并没有使用,也就是为空,比如QoS Control字段(2字节)和A4字段(6字节),所以AAD的长度也会因为是否有这些字段而不同(基于22字节,加上0,2或者6):

AAD是从MPDU构建而来的,它构建不包括Duration字段,因为这个字段会随着实际情况而变动,比如在重传的时候,速率发生了变化,Duration就会发生改变,那么AAD就会和原来的不一样,这样会导致后面的验证失败。同时AAD也不包括HT Control field,它也会在实际情况中随着速率变化而动态改变,同理,MAC头部的一些会动态改变的子域就不会纳入AAD的构建而以0进行覆盖,下面是构建AAD所使用的主要字段:

a) FC – MPDU Frame Control field, with
1) Subtype bits (bits 4 5 6) in a Data MPDU masked to 0
2) Retry bit (bit 11) masked to 0
3) Power Management bit (bit 12) masked to 0
4) More Data bit (bit 13) masked to 0
5) Protected Frame bit (bit 14) always set to 1
6) Order bit (bit 15) as follows:
i) Masked to 0 in all data MPDUs containing a QoS Control field
ii) Unmasked otherwise
b) A1 – MPDU Address 1 field.
c) A2 – MPDU Address 2 field.
d) A3 – MPDU Address 3 field.
e) SC – MPDU Sequence Control field, with the Sequence Number subfield (bits 4–15 of the Sequence
Control field) masked to 0. The Fragment Number subfield is not modified.
f) A4 – MPDU Address field, if present.

g) QC – QoS Control field, if present, a 2-octet field that includes the MSDU priority. The QC TID is
used in the construction of the AAD. When both the STA and its peer have their SPP A-MSDU
Capable fields equal to 1, bit 7 (the A-MSDU Present field) is used in the construction of the AAD.
The remaining QC fields are masked to 0 for the AAD calculation (bits 4 to 6, bits 8 to 15, and bit 7
when either the STA or its peer has the SPP A-MSDU Capable field equal to 0).


Construct CCM nonce
Nonce由13个字节构成,它的组成如下:

其中Nonce Flags一共8位,主要内容如下:

Priority subfield :如果没有支持Qos Control,那么这个位置0;如果由支持Qos Control,那么这个需要根据QC TID设成0-3

Management field :如果是管理帧,这个位置1

Reserved:保留位清0

A2和PN就不再解释了


CCM originator processing
这个处理过程由4个输入
a)
Key: the temporal key (16 octets).
b)
Nonce: the nonce (13 octets) constructed as described in 11.4.3.3.4.
c)
Frame body: the frame body of the MPDU.
d)
AAD: the AAD (22–30 octets) constructed from the MPDU header as described in 11.4.3.3.3.

下面是CCMP的解密过程,理解加密过程后,可查询文档了解


下面介绍一下PN和回放攻击检测:

a) 每一个MPDU都一个对应的PN

b) 每一个发送端都应该分别为PTKSA, GTKSA, and STKSA 维护一个PN生成器

c) PN应该是一个48-bit的非负整数,每次初始化或者更新temporal key时都会被置1

d) 每一个接收端都应该分别为PTKSA, GTKSA, and STKSA 维护一个PN生成器,用于回复包,如果有给某个STA重置temporal key,那么他们的PN需要初始化成0

e) 对于不同优先级的MSDU or A-MSDU,也要维护对应的PN计数器,回复的PN不应该小于或等于收到的PN值


CCMP的加密就介绍到这里,有时间可能还会继续整理802.1x加密,毕竟它号称是当今商用最安全的加密方式。

了解到这里,应该知道使用WEP,TKIP或者CCMP加密时,数据报文是怎么封装的了,后面将继续分析Wlan认证的4路握手过程,看看是怎么完成密钥的交互的。

0 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开车门碰到旁边车门怎么办 美团退款后 物品怎么办 倒车影像是反的怎么办 荒野行动cp版玩着玩着关机怎么办 王者荣耀点击开始游戏就闪退怎么办 电脑遥控游玩ps4画面抖动怎么办 ps4特典不能用了怎么办 苹果x出现的分屏怎么办 电脑注册表文件丢失或损坏怎么办 cad绘图反应很慢怎么办 拍到货商家下架怎么办 电动车头太活了怎么办 快捷方式在根目录找不到了怎么办 神秘海域4卡bug了怎么办 地下城老是闪退怎么办 强制关机后电脑打不开了怎么办 文明5地中海的海军怎么办 文明5被贸易禁运怎么办 文明5海里的食物怎么办 文明5遗址没了怎么办 ⅰpad屏幕动不了怎么办 苹果6plus满了怎么办 cf的fps低怎么办win7 游戏倒闭冲的钱怎么办 一闭眼就做噩梦怎么办 吃鸡游戏上瘾了怎么办 使命召唤7很卡怎么办 w10升级系统卡死怎么办 答题卡写错位置怎么办 高考答错区域该怎么办 荒野行动画面中间有条横怎么办 荒野行动pc闪退怎么办 幽灵行动荒野子弹没了怎么办 看门狗2枪没子弹怎么办 爱奇艺不小心删除了本地视频怎么办 80岁老太太就爱闹肚子怎么办? 皇牌空战5弹药不够怎么办 辐射4玩着头晕怎么办 官司打赢了法院不给钱怎么办 电脑玩dnf太卡怎么办 soul被禁止私聊怎么办