简析无线网络加密算法之CCMP加密算法
原文地址:http://www.jiamisoft.com/blog/2586-ccmpjiamisuanfa.html [导读] 为了加强无线网络的安全性,增加被破解的难度,局域网/城域网标准委员会提出了新的无线网络加密算法CCMP。详细说明该算法加密解密的实现过程,并给出相应代码。 无线网络产品因其灵活、便捷、无线等特点,正在被越来越多的人所使用。但是在我们享受无线网络带给我们诸多好处的同时,安全问题也给我们带来了巨大困惑。为局域网/城域网标准委员会先后给无线网络提出了3个标准的加密算法,即WEP、TKIP、CCMP加密算法,用来保护我们的无线网络。由于CCMP加密算法采用了比TKIP更高级的加密标准CCMP加密算法,CCMP被认为是目前无线网络比较安全和可靠的加密算法。在这里我将对这个加密算法给大家简单介绍一下。 在我们分析CCMP的加密解密过程之前,我们先说明一下CCMP核心加密算法AES,因为MIC和文件加密解密都需要使用该算法。 一、AES加密算法 AES加密算法其目的是开发一种新的能保证政府信息安全的编码算法。密钥长度可为128、192、256bit。它的输出更具有随机性,对该密文破解需要几乎整个密码本及相关的不知道密钥的密文,加解密的密码本分开。安全性很高。 AES加密算法的具体算法说明可以从NIST的FIPS _PUB 197 _nAd—vanced _encry ption standard文档得到的。 ∥加密 Cipher(byte in(4*Nbj, byte out[4*Nb], word w[Nb*(Nr+lyyfm)]为原文out[]为密文 Begin// _ _ _ _ _ w[]是由密钥扩展的密钥串 byte state[4,Nb] state=m AddRoundKey(srate, w[0, Nb-1D//与第一行密钥串异或 for round=lstepl to Nr? SubBytes(state)//state的S盒置换 ShiftRows(state)//接行移位 MixColumns(state)//按列变换 AddRoundKey(state, w[round*Nb, (round+ lyNb -1])//与第round行密钥串异或 end for SubBytes(state) ShiIIRows(state) AddRoundKey(slaLe, w[NPNb, (Nr+l)*Nb-ll) out= sLate end ∥解密 InvCipher(bytc m[4*Nb], byte out[4*Nb], wordw[Nb* (Nr+I)D begin byte swe[4,Nb] state= in AddRoundKey(state, w[Nr*Nb, (Nr+l)*Nb-lD for round – Nr-1 step -l downt01 InvStuftRows(staLe)//按行移位的逆变换 InvSubBytes(state)//S盒置换的逆变换 AddRourtd Key(state,w[round*Nb, (round+I)*Nb-1]) InvMixColumns(sWe),,按列变换的逆变换 end for InvShitIRows(staLe) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) out= state end 目前广泛使用的是rijndnal编写的AES加密算法,这个可以很轻松的从网上得到。 二、CCMP加密算法 了解了AES的加密和解密过程,接下来我们就开始说明CCMP的加密解密以及MIC的生成过程。CCMP的加密:首先我们从mpdu的MAC _Header提取结构AAD以及Nonce。如图1所示。AAD和Nonce提取办法如下: 然后我们计算出MIC,把它加入到数据域后面。生成8字节的CCMP Header与MAC Header组成加密帧的验证部分,这部分不需要加密。然后对数据域和MIC进行CTR( counter)模式的AES加密,量后加上FCS校验就生成了加密帧。 1、 MIC计算 CCMP的MIC计算是MPDUlevel的,与TKIP的MSDUlevel区射,提供更好的完叠性校验。首先把(Nonce,AAD,P(数据域原文))从左刭右组成一个序列,然后再补上一些D字节,使之成为16字节倍数的序列。然后把它分隔成n个16字节块,用BO,B1,…,Bn表示。接着使用CBC-MAC计算出MIC使用的T(MAC值),按照下列的算法计算: x:= AES(k1 b0) —k.|- AES(x,x? Bi) fori=l.,.,,n T:= first-M-bytes( X~.) 其中AES(K,B)为密钥K的AES加密。T取X序列的低M个字节。M为MIC的长度。 特别的.B0,B1一……Bn序列中.B0是由Nonee组成的MIC IV.Bl.B2是由MAC Header也即AAD组成的MIC HEADERI,2;B3从开始就是数据域原文分翻成的16字节块。 Adata位当AAD长度大千0时置l,否列为0。后面3bit为NUC长度域,值为(M-2),2。最后为信息的长度域,值为1-1.2为信息长度的范围。一般M=8.L=2,列Flag为Ox59.量终的MIC值还需要将个值与后续CTR加密的so值【前M个字节)异或。表示如下: MIC=T? _flrsL-M-bytes(SO). 2、CTR加密 取得7 MiC之后,就可以对数据域和MIC进行CTR加密.首先把数据城分钠成16个字节块,量后囊余的字节不用朴零.用Ai表示.MIC部分是单独CTR计算的。 Si= AES(K,CTR_PRELOAD(i)); //i从O刭m Ei=Si? Ai;UEi为加密好的16字节块 特别的对于数据域量后一个16字节块,可能不满16个字节,只有x(O<x<16)个字节,郝异或时,只要取Si中的前x个字节。 对予MIC部分 E(MIC)= S0:? MLC CTR_PRELOAD(i)的结构如下: Counter从i=0开始不断自增1 1个字节的Flag域: 只有最后3个bir的信息长度城。当L-2时,Flag值 为Ox01. 3、CCMP的解密 从加密的MPDU中得到CCMP Header与MACHeader.然后计算出AAD.Nonce.算出每个CTR PRELOAD.从而通过ctrR解密得到数据域原文以及rvnc.使用前一节MIC的计算方法算出当前的MIC.与解密后的rvnc比较,进行校验.在这里我们给出CTR解密的过程。 CTRN解密 对加密的数据城进行16字节分割,用EI表示。加密的rvnc.FCS前的8个字节,用E(MIC)表示,单独取出进行CTR解密,数据域的原文16宇节块,用Ai表示。 则解密过程如下: si= AES(K,CTI乙PRELOAD(i》;仇从0到m Ai=Si7 Ei=Si? Si? Ai; 特别的对于加密的数据域最后一个16字节块.可能不满16个字节,只有y(O<y<16)个字节,鄢异或时,只要取Si中的前y个字节。 对于MJC部分 MIC=S0?E(MIC) 通过上面的表述,你基本可以知道CCMP如何操作的。 CCMP的计算还是比较复杂,一方面可能增加了成本,一方面却大大加强了无线网络的安全.目前,它一般会和身份验证服务RADIUS以及密钢管理一起提供一个安全、可靠、可以信赖的无线环境。 小知识之CCMP : CCMP(Counter CBC-MAC Protocol) 计数器模式密码块链消息完整码协议。 |
简析无线网络加密算法之CCMP加密算法相关推荐
- Retrofit网络请求框架使用简析——Android网络请求框架(四)
题记:-- 很累,累到想要放弃,但是放弃之后将会是一无所有,又不能放弃, 唯有坚持,唯有给自忆打气,才能更勇敢的走下去,因为无路可退,只能前行, 时光一去不复返,每一天都不可追回,所以要更珍惜每一存光 ...
- Volley网络请求框架简析——Android网络请求框架(三)
题记-- 人来到这个世界上,只有两件事情,生与死, 一件事完了,另一件事还急什么? 有缘而来,无缘而去, 识自本心,见自本性 不起妄缘,无心无为 自由自在,动静自如 冷暖自知,则是修行 1.初始化一个 ...
- NoHttp使用简析——Android网络请求框架(二)
题记-- 静坐窗前,与明月为伴. 每一天都是一个新的开始,每一天都是一个新的心态,每一天的目标都是品好每一杯白开水. 生活的价值是活的有意义,而活的有意义就是生命的折腾. 在功夫的世界中,唯快不破,在 ...
- Okhttp使用简析——Android网络请求框架(一)
题记-- 慢慢地,我们都会变老,从起点走向终点,自然而必然,成长的途中,匆匆而又忙忙,跌跌而又撞撞,奔波而双小心,劳累而又费心,一生,留下什么,又得到什么,人生的脆弱和坚强都超乎自己的想象,看淡心境, ...
- 无线网络拓扑结构简析
拓扑一词源自几何学,原意是指研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科.它只考虑物体间的位置关系而不考虑它们的形状和大小.而我们耳熟能详的网络拓扑,则描述的是网络中不同节点之间 ...
- 无线网络WPA加密算法基础
2013-11-13 23:08 (分类:网络安全) 对无线没什么认识,总听说有人蹭网,还有卖蹭网器的,于是补充一下知识. 无线加密有两类:WEP WAP,目前采用WEP加密的非常少了,WEP应该只是 ...
- 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)——Web网络系列学习笔记
数字签名是什么? 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥. 2. 鲍勃把公钥送给他的朋友们--帕蒂.道格.苏珊--每人一把. 3. 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果. 4 ...
- SIGMOD 2021 论文简析:当公交网络连接满足通勤需求时的公共交通规划 Public Transport Planning
SIGMOD-2021 论文简析:当公交网络连接满足通勤需求时的公共交通规划 - Public Transport Planning: When Transit Network Connectivit ...
- 《Android 网络开发与应用实战详解》——2.1节简析Android安装文件
本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.1节简析Android安装文件,作者 王东华,更多章节内容可以访问云栖社区"异步社区" ...
最新文章
- 这样写的博客才有更多的人愿意看
- CentOS 卸载OpenJdk和Tomcat开机启动
- 03_Influxdb数据库的简单操作
- Struts标签入门
- pcl如何设置colorbar_突然加更 | 子图、colorbar和标题
- Android手机模拟器如何把语言设置为中文
- linux qt读取显示图片,QT学习篇(二) 使用QPixmap显示一张图片
- python虚拟环境--virtualenv
- 部署单节点OpenStack
- 【ADS使用:PA的大信号仿真的基本设置】
- node mysql 坑_菜鸟Node.js MySQL教程遇到的坑
- 舵机控制原理/舵机内部电路原理
- 【转】全国最佳医院排名
- 如何打开cmd窗口及一些常用Dos命令
- 工业器械视觉检测方案
- 如何进行不同容量硬盘对拷
- 通过TWRP清除手机锁屏密码
- UT/UTC/GMT的区别和联系
- 【英语词组】恋恋不忘Day 3-3
- 山西应用科技学院计算机应用在哪个校区,山西应用科技学院有几个校区,哪个校区最好及各校区介绍...
热门文章
- 一共81个,开源大数据处理工具汇总(下)转
- 王峰 阜阳师范学院计算机,《阜阳师范学院学报》投稿_学报投稿网
- 安全狗再次入选中国数字安全百强报告
- hihoCoder #1692 : 第K小分数
- 超链接一般有两种表现形式_超链接有哪几种类型,各有什么作用
- 微信小程序的开发使用第三方组件库
- 20200722-Java面经-被血虐-面试问题及总结
- Integrator积分器测试(Simulink仿真)
- 三菱FX3U PLC 位置式PID算法(ST语言)
- android启动微信应用程序,android 从微信分享的网页中启动APP