Bar Mitzvah Attack分析
结合RC4算法实现,简单分析一下Bar Mitzvah Attack攻击的原理,并以WEP破解过程来举例说明通用的破解方式。(个人觉得RC4早已经过时,要想避免该攻击,应该采用更好的加密算法,如:ccmp)
另外,TLS协议是EAP协议的扩展,是一种身份认证机制,与具体的加密算法无关。WEP是业界破解较多的RC4实现,现在基于RC4的WEP已经逐步被后续的优化版TKIP算法和更加安全的ccmp所取代(基于AES)。WEP是WLAN领域最先引入的加密算法,本文以WEP作为入手点进行分析,以无线安全为例对Bar Mitzvah Attack进行简单说明。
一、Bar Mitzvah Attack攻击原理
按照我个人理解,Bar Mitzvah Attack攻击实际上是利用了RC4算法在PRGA阶段生成的随机密钥流的统计特征进行的。PRGA伪随机密钥流的统计特征 + 协议数据中的共工明文 + 简单的秘钥长度,可以通过统计、回放等方式一步一步的计算、推导出真是秘钥。
RC4存在很多安全漏洞,尤其是RC4与CRC相结合使用的时候,存在更多安全问题。
二、RC4算法原理
RC4按照信息论中“一次一密”的原理设计,采用流秘钥的方式进行加密。RC4主要有两个部分:秘钥调度算法(KSA)、随机序列生成算法(PRGA)。秘钥调度算法根据用户的密码,进行混淆,产生一个256B的秘钥数组。随机序列生成算法将秘钥生成算法产生的秘钥数组进行混淆,256B的伪随机序列,用于对明文进行加密。RC4的加密方式就是将伪随机序列与明文进行循环的按位与操作。
RC4工作原理图
秘钥调度算法(KSA):KSA主要是对用户秘钥进行混淆,产生一个128B的秘钥数组。从而使得原始秘钥的统计特征减弱。代码如下:
上图中s[]初始被置为0-255(顺序自增),key为用户密码。这段代码执行完之后,s[]变为一个无序序列。
随机序列生成算法(PRGA):是将KSA产生态的无序状态s[]转化为随机秘钥流,用于对明文进行加密。其原理仍然是交换s[]中内容,代码如下:
RC4采用流秘钥方式,一个字节一个字节的对明文进行加密处理,加密方式为明文与随机秘钥流按位与操作。
三、RC4安全性分析
由上边的代码可以知道:1)给定的密码,KSA的结果是固定的;2)由于s[]固定,PRGA对于相同明文加密结果是相同的;3)s[]的计算是针对数据包的,并非是全局的,所以s[]并非真正随机。(s[]是针对每个数据包初始化一次,也就是每个数据包的s[]相同,这样PRGA得到的随机密钥流就是有规律可循的,甚至可以重放)
结合Bar Mitzvah Attack的说明,我个人觉得其攻击类型与WEP的破解是同一原理,都是根据s[]和PRGA的伪随机特性,使用统计分析和重放,分析出部分密码,然后利用这部分密码进行迭代,进而可以得到完整密码或者明文内容。
下边以WEP为例说明这种破解过程。
四、WEP的破解过程
WEP的破解主要是利用RC4的伪随机密钥流、弱的CRC进行统计和猜测。(几乎所有针对WEP的破解过程都是通过RC4实现的。)
WEP的破解理论(01 年8月)
S.Fluhrer,I.Martin和A.Shamir合作研究发现了对无线局域网安全性最致命的攻击。利用WEP 帧的数据负载中部分已知信息来计算出该WEP帧所使用的WEP密钥。由于WEP加密算法实际上是利用RC4流密码算法作为伪随机数产生器,将由初始矢量IV 和WEP 密钥组合而成的种子生成WEP 密钥流,再由该密钥流与WEP 帧数据负载进行异或运算来完成加密运算。而RC4 流密码算法是将输入种子密钥进行某种置换和组合运算来生成WEP 密钥流的。由于WEP 帧中数据负载的第一个字节是逻辑链路控制的802.2 头信息,这个头信息对于每个WEP帧都是相同的,攻击者很容易猜测,利用猜的第一个明文字节和WEP 帧数据负载密文就可以通过异或运算得到PRNG 生成的密钥流中的第一字节。
另外,种子密钥中的24比特初始矢量是以明文形式传送的,攻击者可以将其截获,存到初始矢。S.Fluhrer, I.Martin 和A.Shamir 证明:利用已知的初始矢量IV 和第一个字节密钥流输出,并结合RC4 密钥方案的特点,攻击者通过计算就可以确定WEP密钥。
CRC-32 算法缺陷
CRC-32 算法作为数据完整性检验算法,由于其本身的特点非但未使WEP 安全性得到加强,反而进一步恶化。首先CRC 检验和是有效数据的线性函数,这里所说的线性主要针对异或操作而言的,即C(x?y)=C(x)?C(y)。利用这个性质,恶意的攻击者可篡改原文P 的内容。特别地,如果攻击者知道要传送的数据,会更加有恃无恐。其次,CRC-32检验和不是加密函数,只负责检查原文是否完整,并不对其进行加密。若攻击者知道P,就可算出RC4(v,k) (RC4(v,k)=P?(P?RC4(v,k)),然后可构造自己的加密数据C'=(P',C(P'))? RC4(v,k)和原来的IV一起发送给接收者(802.11b 允许IV重复使用)。
WEP密码如何被破解出来的
l 监听模式被动破解(这个就是有客户端并有大量有效通信)
根据已知的的信息。我们知道要还原出WEP的密码关键是要收集足够的有效数据帧,从这个数据帧里我们可以提取IV 值和密文。与对于这个密文对应的明文的第一个字节是确定的他是逻辑链路控制的802.2 头信息。通过这一个字节的明文,还有密文我们做XOR运算能得到一个字节的WEP密钥流,由于rc4 流密码产生算法只是把原来的密码给打乱的次序。所以我们获得的这一次字节的密码就是就IV+PASSWORD 的一部分。但是由于RC4 的打乱。不知道这一个字节具体的位置很排列次序。当我们收集到足够多的IV 值还有碎片密码时,就可以进行统计分析运算了。用上面的密码碎片重新排序配合IV使用RC4算法得出的值和多个流密码位置进行比较。最后得到这些密码碎片正确的排列次序。这样WEP的密码就被分析出来了。下图就是WEP破解过程。有助于你理解破解WEP通过分析子密码还原密码的过程。
l 主动攻击(有客户端。少量通信或者没有通讯)
ARP-request attack mode攻击抓取合法客户端的arp请求包。如果发现合法客户端发给AP的arp请求包,攻击者就会向AP重放这个包。由于802.11b 允许IV重复使用。所以AP接到这样的arp请求后就会回复客户端。这样攻击者就能搜集到更多的IV了。当捕捉到足够多的IV就可以按上面的2.9.1里的进行破解了。如果没有办法获取arp请求包我们就可以用-0 攻击使得合法客户端和AP断线后重新连接。-0 Deautenticate攻击实际就是无线欺骗。这样我们就有机会获得arp请求包了。
l 主动攻击(没有客户端的模式)
先和AP进行伪链接-1 fakeauth count attack mode。这样就能产生数据包了。收集两个IV 相同的的WEP 包,把这两个包里的密文做XOR 运算。得到一个XOR 文件。用这个XOR文件配合伪造arp包的工具。利用CRC-32的特点伪造一个arp包和原来的IV一起发给AP。这样就可以按上面2.9.2 里的进行破解了。其中-2 Interactive,-4 Chopchop,-5 Fragment 都是属于上面这个攻击类型的。
Bar Mitzvah Attack分析的更多相关文章
- (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭
原文:https://blog.csdn.net/Nedved_L/article/details/81110603 SSL/TLS 漏洞“受戒礼” 一.漏洞分析事件起因2015年3月26日,国外数据 ...
- RC4弱密码套件检测
一.漏洞分析 事件起因 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HAT ASIA 2015发表论文<Attacking SSL when ...
- SSL/TLS 漏洞“受戒礼”,RC4算法关闭
SSL/TLS 漏洞"受戒礼" 一.漏洞分析 事件起因 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HAT ASIA 2015 ...
- 完美前向保密PFS
===========来自网友=========== “前向安全性”应当是叫做“forward security”.该定义最早是由Mihir Bellare和Sara K. Miner在 CRYPTO ...
- Cells Not Under Attack
Cells Not Under Attack Vasya has the square chessboard of size n × n and m rooks. Initially the ches ...
- python通过人脸识别全面分析好友,一起看透你的“朋友圈”
微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...
- C++基础知识面试精选100题系列(21-30)[C++ basics]
[本文链接] http://www.cnblogs.com/hellogiser/p/100-interview-questions-of-cplusplus-basics-21-30.html [题 ...
- 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByName
按照name属性获取多元素 -- getElementsByName 标准 DOM 1 定义在HTMLDocument Interface 中,原型NodeList getElementsByName ...
- 越狱Season 1-Episode 20: Tonight
Season 1, Episode 20: Tonight -Pope: I want him under 24hour surveillance. surveillance: 监视 保证24小时监视 ...
随机推荐
- Qualcomm Vuforia SDK背景
参考视频:http://edu.csdn.net/course/detail/1467/23125?auto_start=1 一:概述 官网:www.vuforia.com 应用方向:产品交互.虚拟购 ...
- MathType中输入不了汉字如何处理
MathType作为一款常见的数学公式编辑器在编辑数学公式时,不仅可以输入英文字符,对中文也有很好的兼容性.但是有些用户在使用MathType编辑公式时,发现一些汉字是输入不进去的,这个时候我们就需要 ...
- Eclipse & Visual Studio
VS中的解决方案 vs Eclipse中的workspace Maven包管理 vs Nuget类库管理 build path vs
- linux下源代码搭建php环境之mysql(一)
如今已经大半夜了,五一劳动节挺无聊的. 折腾一下吧.实在是睡不着.于是乎在电脑上安装个虚拟机,然后呢,在虚拟机上搭建一个php环境. 首先我得安装MYSQL吧. 发现遇到的问题真多. .待我娓娓道来. ...
- 工作流JBPM_day01:1-说明_MyProcessDesigner_流程设计器
工作流JBPM_day01:1-说明 先只做请假功能,怎么做? (请假可以和考勤整合到一起) 1,银行(拿号---叫号---办理) 2,餐馆(点菜---上菜---结账) 3,网购(下订单--配送--收 ...
- Struts2_day01--导入源文件_Struts2的执行过程_查看源代码
导入源文件 选中按ctrl + shift + t进入 Struts2执行过程 画图分析过程 过滤器在服务器启动时创建,servlet在第一次访问时创建 查看源代码 public class Stru ...
- malloc free, new delete 的异同点
相同点: 都可以动态的申请并释放内存 不同点: 1. 用法不同 <1> malloc 函数为 void* malloc(size_t size), 用于申请一块长度为 size 字节的内存 ...
- oracle修改用户密码
1.使用oracle用户登录,连接数据库 [oracle@wuzj ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Th ...
- PE导入表分析
A.dll 导入 B.dll 导出函数 A.dll 表内容 这个结构指向的B导出函数的地址 Hook这个位置 等同于 Hook B.dll导出函数
- uva 110 Meta-Loopless Sorts 用程序写程序 有点复杂的回溯水题
题目要求写一个直接用比较排序的pascal程序,挺有趣的一题. 我看题目数据范围就到8,本来以为贪个小便宜,用switch输出. 然后发现比较次数是阶乘级别的,8的阶乘也是挺大的,恐怕会交不上去. 于 ...