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字段给覆盖了

下图是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路握手过程,看看是怎么完成密钥的交互的。
————————————————
版权声明:本文为CSDN博主「奔跑的路」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lee244868149/article/details/52733277

无线局域网安全(三)————CCMP加密相关推荐

  1. 计算机无线网络拓扑图试题,无线局域网期末复习试题库.doc

    WORD格式整理 专业资料 值得拥有 复习纲要 本试卷的题分布在本教材前八章里,第1章里占20%,第2章里的内容占20%,第3章里的内容占10%,第4章里的内容占10%,第5章里的内容占10%,第6章 ...

  2. WLAN无线局域网IEEE802.11协议三无线局域网

    3.无线局域网 组成WLAN的基本单元是基本服务集(BSS),BSS包含一个固定的AP和多个终端. 3.1.基本概念: AP(Access Point,无线访问节点):无线接入点,常见是我们家用的带有 ...

  3. 【计算机网络】第三部分 数据链路层(14) 无线局域网和蓝牙技术

    文章目录 14.1 IEEE 802.11 14.1.1 体系结构 14.1.2 MAC层 1. 分布式协调功能 (1) CSMA/CA处理流程图 (2) 帧交换时序 (3) 网络分配矢量 2. 点协 ...

  4. 实验三 无线局域网组网与管理实验

    无线网络技术教程第四版实验四 无线局域网组网与管理实验 目录 无线网络技术教程第四版实验四 无线局域网组网与管理实验 1 实验要求和目的 2 实验原理和背景 3 实验环境和软件 4 实验过程和记录 i ...

  5. 计算机网络 王道考研2021 第三章:数据链路层 -- 局域网基本概念和体系结构、以太网(一种常用的局域网技术)、无线局域网、跨省短信通知原因、MAC

    文章目录 1. 局域网基本概念和体系结构 1.1 局域网 1.2 局域网拓扑结构 1.3 局域网传输介质 1.4 局域网介质访问控制方法 1.5 局域网的分类 1.6 IEEE802标准 1.7 MA ...

  6. 无线局域网技术分析及攻击实战

    文章目录 开始阅读前的注意事项 无线局域网安全协议分析及攻击实战 0.摘要 1.无线局域网安全协议分析 1.1 安全协议背景 1.2 WEP协议分析 1.2.1 安全网络操作流程 1.2.2 加解密原 ...

  7. WLAN——一篇让你从0到1了解无线局域网的文章

    WLAN WLAN定义和基本架构 WLAN定义 WLAN基本架构 FAT AP FAT AP优劣及应用场景 FIT AP WLAN射频和信道 射频 信道 WLAN标准协议 WLAN常用概念 SSID( ...

  8. wifi无线网络的认证和加密方式

    一.Open System 完全不认证也不加密,任何人都可以连到无线基地台使用网络. 二.WEP (Wired Equivalent Privacy) 有线等效加密 最基本的加密技术,手机用户.笔记型 ...

  9. [文摘20080428]无线局域网的相关网络安全技术应用指南

    无线局域网(WirelessLocalAreaNetwork,WLAN)具有可移动性.安装简单.高灵活性和扩展能力,作为对传统有线网络的延伸,在许多特殊环境中得到了广泛的应用. 随着无线数据网络解决方 ...

  10. 局域网ip冲突检测工具_软考网络工程师之局域网与城域网(无线局域网,网桥,VLAN)...

    IEEE802项目体系结构 使用相同的LLC,802.1定义了体系结构 与传输介质无关的部分集中在LLC子层 MAC子层负责数据帧的封装与解封装.帧的校验 802.3和以太网 1.以太网工作原理 以太 ...

最新文章

  1. Swift 单元测试
  2. HDU 1856 More is better【并查集】
  3. linux一键重装系统脚本,一键重装CentOS纯净版系统shell脚本
  4. 动态 SQL、EXECUTE IMMEDIATE、using、into、returning
  5. 『设计模式』设计模式--原型模式
  6. 快速排序在最坏的情况下时间复杂度(Ω(nlgn)(算法导论第三版9.3-3))
  7. delphi excel取批注所在的行列_35个Excel使用技巧
  8. 错误类型、混淆矩阵及目标检测常用评价指标
  9. jQuery向动态生成的内容添加事件响应(jquery live方法简介)
  10. Docker学习总结(52)—— Docker容器环境变量相关知识点的总结
  11. Elasticsearch 动态映射——自动检测
  12. fftw3 嵌入式linux安装,Ubuntu18.04下快速的安装UHD与GnuRadio并连接USRP设备
  13. Android Studio 3.4.1设置背景颜色为保护色
  14. 汽车工况电量计算-转速扭矩图
  15. java生成密码生成
  16. 网记者采访时,一直称李某萍为“妻子”
  17. 箩筐火车免费wifi v4.3.0
  18. 机器学习(二)--新加坡国立大学寒假学习项目总结
  19. STM32串口屏应用
  20. 简化ETL工作,编写一个Canal胶水层

热门文章

  1. AI-语音处理理论和应用-语音识别、语音合成
  2. Windows的重要服务端口135/137/138/139/445
  3. index 0 is out of bounds for axis 0 with size 0
  4. Tushare股票数据全生命周期MACD等指标动态获取计算-前复权
  5. java实现将PDF文件拆分成图片
  6. GitHub中国区前100名到底是什么样的人?
  7. 计算机硬盘分区显示不全,windows7系统磁盘分区图标显示不正常的两种解决方法【图】...
  8. Scapy:send函数剖析(参数、返回值、应用)
  9. Java基础(数组)数组缩减
  10. Flutter学习笔记 数据储存shared_preferences