结合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分析的更多相关文章

  1. (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭

    原文:https://blog.csdn.net/Nedved_L/article/details/81110603 SSL/TLS 漏洞“受戒礼” 一.漏洞分析事件起因2015年3月26日,国外数据 ...

  2. RC4弱密码套件检测

    一.漏洞分析 事件起因 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HAT ASIA 2015发表论文<Attacking SSL when ...

  3. SSL/TLS 漏洞“受戒礼”,RC4算法关闭

    SSL/TLS 漏洞"受戒礼" 一.漏洞分析 事件起因 2015年3月26日,国外数据安全公司Imperva的研究员Itsik Mantin在BLACK HAT ASIA 2015 ...

  4. 完美前向保密PFS

    ===========来自网友=========== “前向安全性”应当是叫做“forward security”.该定义最早是由Mihir Bellare和Sara K. Miner在 CRYPTO ...

  5. Cells Not Under Attack

    Cells Not Under Attack Vasya has the square chessboard of size n × n and m rooks. Initially the ches ...

  6. python通过人脸识别全面分析好友,一起看透你的“朋友圈”

    微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友 ...

  7. C++基础知识面试精选100题系列(21-30)[C++ basics]

    [本文链接] http://www.cnblogs.com/hellogiser/p/100-interview-questions-of-cplusplus-basics-21-30.html [题 ...

  8. 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByName

    按照name属性获取多元素 -- getElementsByName 标准 DOM 1 定义在HTMLDocument Interface 中,原型NodeList getElementsByName ...

  9. 越狱Season 1-Episode 20: Tonight

    Season 1, Episode 20: Tonight -Pope: I want him under 24hour surveillance. surveillance: 监视 保证24小时监视 ...

随机推荐

  1. 简易博客开发(8)----django1.9 博客部署到pythonanywhere上

    准备工作 首先需要注册一下,pythonanywhere的免费账户有一定的限制,只能创建一个web app,不能绑定独立域名,不能通过ssh连接,不过只是搭一个project也是够用了. 注册成功之后 ...

  2. Android笔记——Activity中的回传数据案例(装备选择)

    1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  3. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

  4. 编程之美 set 16 拈游戏分析(1)

    题目 N 个石头排成一行, 每块石头有固定的位置和编号, 两个玩家依次取石头, 每个玩家可以取其中的任一块石头, 或者相邻的两个石头. 石头在游戏过程中不能移位, 最后将剩下的石头依次取光的玩家获胜 ...

  5. swift开发之--Protocol(协议)

    使用object-c语言的同学们肯定对协议都不陌生,但在swift中苹果将protocol这种语法发扬的更加深入和彻底. Swift中的protocol不仅能定义方法还能定义属性,配合extensio ...

  6. DLL入口函数

    BOOL APIENTRY DllMain(HINSTANCE hInst     /* Library instance handle. */, DWORD reason        /* Rea ...

  7. PMP 质量管理7张图 很形象

    PMP 质量管理 中的因果图.控制图.流程图.核查表.直方图.帕累托图.散点图

  8. 【BZOJ2287】【POJ Challenge】消失之物 背包动规

    [BZOJ2287][POJ Challenge]消失之物 Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了 ...

  9. 160317(一)、在非action中获取request

    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes() ...

  10. Spring在Web应用中使用的原理

    那Spring如何在web应用中使用 ①加入Spring web应用的特定jar包spring-web-4.0.0.RELEASE.jar.spring-webmvc-4.0.0.RELEASE.ja ...