zoukankan      html  css  js  c++  java
  • Bar Mitzvah Attack分析

    结合RC4算法实现,简单分析一下Bar Mitzvah Attack攻击的原理,并以WEP破解过程来举例说明通用的破解方式。(个人觉得RC4早已经过时,要想避免该攻击,应该采用更好的加密算法,如:ccmp

    另外,TLS协议是EAP协议的扩展,是一种身份认证机制,与具体的加密算法无关。WEP是业界破解较多的RC4实现,现在基于RC4WEP已经逐步被后续的优化版TKIP算法和更加安全的ccmp所取代(基于AES)。WEPWLAN领域最先引入的加密算法,本文以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对于相同明文加密结果是相同的;3s[]的计算是针对数据包的,并非是全局的,所以s[]并非真正随机。(s[]是针对每个数据包初始化一次,也就是每个数据包的s[]相同,这样PRGA得到的随机密钥流就是有规律可循的,甚至可以重放

    结合Bar Mitzvah Attack的说明,我个人觉得其攻击类型与WEP的破解是同一原理,都是根据s[]PRGA的伪随机特性,使用统计分析和重放,分析出部分密码,然后利用这部分密码进行迭代,进而可以得到完整密码或者明文内容。

    下边以WEP为例说明这种破解过程。

    四、WEP的破解过程

    WEP的破解主要是利用RC4的伪随机密钥流、弱的CRC进行统计和猜测。(几乎所有针对WEP的破解过程都是通过RC4实现的。)

    WEP的破解理论(01 年8月)

    S.FluhrerI.MartinA.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 算法缺陷

    CRC32 算法作为数据完整性检验算法,由于其本身的特点非但未使WEP 安全性得到加强,反而进一步恶化。首先CRC 检验和是有效数据的线性函数,这里所说的线性主要针对异或操作而言的,即C(x?y)=C(x)?C(y)。利用这个性质,恶意的攻击者可篡改原文的内容。特别地,如果攻击者知道要传送的数据,会更加有恃无恐。其次,CRC-32检验和不是加密函数,只负责检查原文是否完整,并不对其进行加密。若攻击者知道P,就可算出RC4(vk) (RC4(vk)=P?(P?RC4(vk)),然后可构造自己的加密数据C'=(P'C(P'))? RC4(vk)和原来的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请求包。如果发现合法客户端发给AParp请求包,攻击者就会向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 都是属于上面这个攻击类型的。

     

     

     

  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/jackyzzy/p/4428834.html
Copyright © 2011-2022 走看看