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小时监视 ...
随机推荐
- WinForm------如何打开子窗体的同时关闭父窗体
方法: 如何打开子窗体的同时关闭父窗体 this.Hide(); new Frm_Management().ShowDialog(); this.Close();
- __del__()
__del__() 是类的内置函数,用于定义在脚本退出之前要执行的代码,因为有这个特性,通常被用来在脚本退出前关闭文件.关闭数据库连接.关闭网络连接等操作 [root@localhost ~]$ ca ...
- 适配iOS 8备忘录 开始启动(持续更新。。。1130)
本文转载至 http://www.cocoachina.com/bbs/read.php?tid=229352 PS:大家都说看到那么多图标很头痛,我来给大家解决这个问题:直接下载我的这个包Image ...
- IDEA破解后无法启动
在网上找了破解IDEA的方法 原文:https://blog.csdn.net/qq_38637558/article/details/78914772 ①到这个地方下载 IntelliJ IDEA ...
- asynDBCenter(不断跟新)
GameServer以前访问DBcenter时同步的,这样服务器都要等待DBcenter返回结果,经理在DBcenter和GameServer之间加了一个asynDBCenter,就实现了异步,感觉还 ...
- Assembly中Load, LoadFrom, LoadFile以及AppDomain, Activator类中相应函数的区别
Assembly和AppDomain的一些关于动态加载程序集的函数有些令人头疼,但细细研究后还是可以将他们区分的. 这些函数大致可以分为四类: 第一类:加载到Load Context内 Load Co ...
- android studio升级时提示 Connection failed. Please check your network connection and try again
原文地址 http://www.eyeapk.com/android-studio-update.html Mac OSX中修改文件路径为 bin/idea.vmoptions ,添加如下内容,如果无 ...
- 160530、memcached集群(spring集成的配置)
第一步:在linux机或windows机上安装memcached服务端(server) linux中安装memcached:centos中命令 yum -y install memcached 如果没 ...
- 关于ios7 UINavigationController.interactivePopGestureRecognizer手势集成
因为公司业务需求,结合网上的资料整理了一下. 如果自定义过navbar的leftbarbutton 或者backbarbutton 原生interactivePopGestureRecognizer默 ...
- ubuntu安装wine的方法
使用命令行安装: 1.打开终端,使用命令:sudo apt-get install wine 2.它可能会出现选择哪个版本的安装,develop是开发版本,stable是稳定版本. 通常我们选择sta ...