黄学强 发表于 2011-12-23 01:32

无线WEP,WPA加密算法

<DIV>
<TABLE style="mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm" class=MsoNormalTable border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD style="BORDER-BOTTOM: #ffffff; BORDER-LEFT: #ffffff; PADDING-BOTTOM: 0cm; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; BORDER-TOP: #ffffff; BORDER-RIGHT: #ffffff; PADDING-TOP: 0cm">
<P style="TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; mso-pagination: widow-orphan" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 7.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang=EN-US><FONT size=4>1&nbsp;</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 7.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><FONT size=4>概述</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>目前情况下:</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>的破解为利用加密体制缺陷,通过收集足够的数据包,使用分析密算法还原出密码。</FONT><SPAN lang=EN-US><BR><FONT size=4>WPA</FONT></SPAN><FONT size=4>目前没有加密体制的缺陷可被利用,破解<SPAN lang=EN-US>WPA</SPAN>密码使用的是常规的字典攻击法。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>所以在破解方式上<SPAN lang=EN-US>WEP</SPAN>和<SPAN lang=EN-US>WPA</SPAN>有很大差异。</FONT><SPAN lang=EN-US><BR><FONT size=4>2&nbsp;WEP<BR>2.1&nbsp;</FONT></SPAN><FONT size=4>(<SPAN lang=EN-US>Wired&nbsp;EquIValent&nbsp;PrIVacy</SPAN>,<SPAN lang=EN-US>WEP</SPAN>)</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>叫做有线等效加密。掌握<SPAN lang=EN-US>WEP</SPAN>破解的人,肯能会说<SPAN lang=EN-US>WEP</SPAN>不如有线的安全性高。但这</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>发生在<SPAN lang=EN-US>WEP</SPAN>的很多弱点被发现之后。也是由于<SPAN lang=EN-US>WEP</SPAN>的弱点导致<SPAN lang=EN-US>WPA</SPAN>的出现。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.2&nbsp;</FONT></SPAN><FONT size=4>(<SPAN lang=EN-US>WEP</SPAN>)算法</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>算法是一种可选的链路层安全机制,用来提供访问控制,数据加密和安全性检验</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>等。<SPAN lang=EN-US>802.11&nbsp;</SPAN>定义了<SPAN lang=EN-US>WEP&nbsp;</SPAN>算法对数据进行加密。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.3&nbsp;</FONT></SPAN><FONT size=4>加密过程如图所示。</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>IV</FONT></SPAN><FONT size=4>为初始化向量,<SPAN lang=EN-US>PASSWORD&nbsp;</SPAN>为密码<SPAN lang=EN-US>KSA=IV+PASSWORD</SPAN>。<SPAN lang=EN-US>DATA&nbsp;</SPAN>为明文</FONT><FONT size=4><SPAN lang=EN-US>CRC-32<BR></SPAN>为明文的完整性校验值<SPAN lang=EN-US>PRGA=RC4(KSA)&nbsp;</SPAN>的伪随机数密钥流<SPAN lang=EN-US>XOR&nbsp;</SPAN>异或的加密算法。</FONT><SPAN lang=EN-US><BR><FONT size=4>ENCRYPTED&nbsp;DATA&nbsp;</FONT></SPAN><FONT size=4>为最后的密文。最后<SPAN lang=EN-US>IV+ENCRYPTED&nbsp;DATA</SPAN>一起发送出去。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.4&nbsp;</FONT></SPAN><FONT size=4>接收端的解密过程如图所示。</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>CIPHERTEXT&nbsp;</FONT></SPAN><FONT size=4>为密文。它采用与加密相同的办法产生解密密钥序列,再将密文与之</FONT><SPAN lang=EN-US><BR><FONT size=4>XOR&nbsp;</FONT></SPAN><FONT size=4>得到明文,将明文按照<SPAN lang=EN-US>CRC32&nbsp;</SPAN>算法计算得到完整性校验值<SPAN lang=EN-US>CRC-32′</SPAN>,如果加密密</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>钥与解密密钥相同,且<SPAN lang=EN-US>CRC-32′=&nbsp;CRC-32</SPAN>,则接收端就得到了原始明文数据,否则解密失</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>败。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.5&nbsp;WEP</FONT></SPAN><FONT size=4>算法通过以上的操作试图达到以下的目的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>采用<SPAN lang=EN-US>WEP</SPAN>加密算法保证通信的安全性,以对抗窃听。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>采用<SPAN lang=EN-US>CRC32</SPAN>算法作为完整性检验,以对抗对数据的篡改。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.6&nbsp;WEP&nbsp;</FONT></SPAN><FONT size=4>算法之死</FONT><SPAN lang=EN-US><BR><FONT size=4>95&nbsp;9&nbsp;</FONT></SPAN><FONT size=4>月<SPAN lang=EN-US>RC4&nbsp;</SPAN>潜在的威胁性</FONT><FONT size=4><SPAN lang=EN-US>(wanger)<BR>00&nbsp;10&nbsp;</SPAN>月通过分析<SPAN lang=EN-US>wpe</SPAN>包获取密码</FONT><FONT size=4><SPAN lang=EN-US>(walker)<BR>01&nbsp;5&nbsp;</SPAN>月针对于明文攻击的一个推论</FONT><FONT size=4><SPAN lang=EN-US>(Arbaugh)<BR>01&nbsp;7&nbsp;</SPAN>月针对于<SPAN lang=EN-US>CRC32</SPAN>的攻击<SPAN lang=EN-US>(Borisov</SPAN>,<SPAN lang=EN-US>&nbsp;Goldberg</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>Wagner)<BR>01&nbsp;8&nbsp;</SPAN>月针对于<SPAN lang=EN-US>RC4</SPAN>的攻击<SPAN lang=EN-US>(S</SPAN>。<SPAN lang=EN-US>Fluhrer</SPAN>,<SPAN lang=EN-US>&nbsp;I</SPAN>。<SPAN lang=EN-US>Martin&nbsp;</SPAN>和<SPAN lang=EN-US>&nbsp;A</SPAN>。</FONT><FONT size=4><SPAN lang=EN-US>Shamir)<BR>01&nbsp;8&nbsp;</SPAN>月<SPAN lang=EN-US>airosnort</SPAN>发布</FONT><SPAN lang=EN-US><BR><FONT size=4>02&nbsp;2&nbsp;</FONT></SPAN><FONT size=4>月改进的攻击算法</FONT><FONT size=4><SPAN lang=EN-US>(h1kari)<BR>04&nbsp;8&nbsp;</SPAN>月<SPAN lang=EN-US>chopchop</SPAN>攻击出现</FONT><SPAN lang=EN-US><BR><FONT size=4>04&nbsp;7/8&nbsp;</FONT></SPAN><FONT size=4>月<SPAN lang=EN-US>aircrack</SPAN>出现<SPAN lang=EN-US>(Devine</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>Sanchez&nbsp;)<BR>2.7&nbsp;WEP</SPAN>的破解理论是在<SPAN lang=EN-US>01&nbsp;</SPAN>年<SPAN lang=EN-US>8</SPAN>月就变得可行了</FONT><SPAN lang=EN-US><BR><FONT size=4>S.Fluhrer</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>&nbsp;I.Martin&nbsp;</SPAN>和<SPAN lang=EN-US>A.Shamir&nbsp;</SPAN>合作研究发现了对无线局域网安全性最致命的攻击。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>利用<SPAN lang=EN-US>WEP&nbsp;</SPAN>帧的数据负载中部分已知信息来计算出该<SPAN lang=EN-US>WEP&nbsp;</SPAN>帧所使用的<SPAN lang=EN-US>WEP&nbsp;</SPAN>密钥。由于</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP&nbsp;</FONT></SPAN><FONT size=4>加密算法实际上是利用<SPAN lang=EN-US>RC4&nbsp;</SPAN>流密码算法作为伪随机数产生器,将由初始矢量<SPAN lang=EN-US>IV&nbsp;</SPAN>和</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP&nbsp;</FONT></SPAN><FONT size=4>密钥组合而成的种子生成<SPAN lang=EN-US>WEP&nbsp;</SPAN>密钥流,再由该密钥流与<SPAN lang=EN-US>WEP&nbsp;</SPAN>帧数据负载进行异或</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>运算来完成加密运算。而<SPAN lang=EN-US>RC4&nbsp;</SPAN>流密码算法是将输入种子密钥进行某种置换和组合运算来生</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>成<SPAN lang=EN-US>WEP&nbsp;</SPAN>密钥流的。由于<SPAN lang=EN-US>WEP&nbsp;</SPAN>帧中数据负载的第一个字节是逻辑链路控制的<SPAN lang=EN-US>802.2&nbsp;</SPAN>头信</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>息,这个头信息对于每个<SPAN lang=EN-US>WEP</SPAN>帧都是相同的,攻击者很容易猜测,利用猜的第一个明文字</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>节和<SPAN lang=EN-US>WEP&nbsp;</SPAN>帧数据负载密文就可以通过异或运算得到<SPAN lang=EN-US>PRNG&nbsp;</SPAN>生成的密钥流中的第一字节。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>另外,种子密钥中的<SPAN lang=EN-US>24</SPAN>比特初始矢量是以明文形式传送的,攻击者可以将其截获,存到初</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>始矢。<SPAN lang=EN-US>S.Fluhrer</SPAN>,<SPAN lang=EN-US>&nbsp;I.Martin&nbsp;</SPAN>和<SPAN lang=EN-US>A.Shamir&nbsp;</SPAN>证明:利用已知的初始矢量<SPAN lang=EN-US>IV&nbsp;</SPAN>和第一个字节密钥</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>流输出,并结合<SPAN lang=EN-US>RC4&nbsp;</SPAN>密钥方案的特点,攻击者通过计算就可以确定<SPAN lang=EN-US>WEP</SPAN>密钥。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.8&nbsp;CRC</FONT></SPAN><FONT size=4>-<SPAN lang=EN-US>32&nbsp;</SPAN>算法缺陷</FONT><SPAN lang=EN-US><BR><FONT size=4>CRC</FONT></SPAN><FONT size=4>-<SPAN lang=EN-US>32&nbsp;</SPAN>算法作为数据完整性检验算法,由于其本身的特点非但未使<SPAN lang=EN-US>WEP&nbsp;</SPAN>安全性</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>得到加强,反而进一步恶化。首先<SPAN lang=EN-US>CRC&nbsp;</SPAN>检验和是有效数据的线性函数,这里所说的线性主</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>要针对异或操作而言的,即<SPAN lang=EN-US>C(x?y)=C(x)?C(y)</SPAN>。利用这个性质,恶意的攻击者可篡改原文</FONT><SPAN lang=EN-US><BR><FONT size=4>P&nbsp;</FONT></SPAN><FONT size=4>的内容。特别地,如果攻击者知道要传送的数据,会更加有恃无恐。其次,<SPAN lang=EN-US>CRC-32</SPAN>检验</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>和不是加密函数,只负责检查原文是否完整,并不对其进行加密。若攻击者知道<SPAN lang=EN-US>P</SPAN>,就可算</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>出<SPAN lang=EN-US>RC4(v</SPAN>,<SPAN lang=EN-US>k)&nbsp;(RC4(v</SPAN>,<SPAN lang=EN-US>k)=P?(P?RC4(v</SPAN>,<SPAN lang=EN-US>k))</SPAN>,然后可构造自己的加密数据<SPAN lang=EN-US>C'=(P'</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>C(P'))<BR>?&nbsp;RC4(v</SPAN>,<SPAN lang=EN-US>k)</SPAN>和原来的<SPAN lang=EN-US>IV</SPAN>一起发送给接收者<SPAN lang=EN-US>(802.11b&nbsp;</SPAN>允许<SPAN lang=EN-US>IV</SPAN>重复使用<SPAN lang=EN-US>)</SPAN>。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.9&nbsp;WEP</FONT></SPAN><FONT size=4>密码如何被破解出来的</FONT><SPAN lang=EN-US><BR><FONT size=4>2.9.1&nbsp;</FONT></SPAN><FONT size=4>监听模式被动破解<SPAN lang=EN-US>(</SPAN>这个就是有客户端并有大量有效通信</FONT><FONT size=4><SPAN lang=EN-US>)<BR></SPAN>根据已知的的信息。我们知道要还原出<SPAN lang=EN-US>WEP</SPAN>的密码关键是要收集足够的有效数据</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>帧,从这个数据帧里我们可以提取<SPAN lang=EN-US>IV&nbsp;</SPAN>值和密文。与对于这个密文对应的明文的第一个</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>字节是确定的他是逻辑链路控制的<SPAN lang=EN-US>802.2&nbsp;</SPAN>头信息。通过这一个字节的明文,还有密文我</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>们做<SPAN lang=EN-US>XOR</SPAN>运算能得到一个字节的<SPAN lang=EN-US>WEP</SPAN>密钥流,由于<SPAN lang=EN-US>rc4&nbsp;</SPAN>流密码产生算法只是把原来的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>密码给打乱的次序。所以我们获得的这一次字节的密码就是就<SPAN lang=EN-US>IV+PASSWORD&nbsp;</SPAN>的一部</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>分。但是由于<SPAN lang=EN-US>RC4&nbsp;</SPAN>的打乱。不知道这一个字节具体的位置很排列次序。当我们收集到足</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>够多的<SPAN lang=EN-US>IV&nbsp;</SPAN>值还有碎片密码时,就可以进行统计分析运算了。用上面的密码碎片重新排</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>序配合<SPAN lang=EN-US>IV</SPAN>使用<SPAN lang=EN-US>RC4</SPAN>算法得出的值和多个流密码位置进行比较。最后得到这些密码碎片</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>正确的排列次序。这样<SPAN lang=EN-US>WEP</SPAN>的密码就被分析出来了。下图就是<SPAN lang=EN-US>WEP</SPAN>破解过程。有助于</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>你理解破解<SPAN lang=EN-US>WEP</SPAN>通过分析子密码还原密码的过程。</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>2.9.2&nbsp;</FONT></SPAN><FONT size=4>主动攻击<SPAN lang=EN-US>(</SPAN>有客户端。少量通信或者没有通讯</FONT><FONT size=4><SPAN lang=EN-US>)<BR>-3&nbsp;ARP-request&nbsp;attack&nbsp;mode</SPAN>攻击抓取合法客户端的<SPAN lang=EN-US>arp</SPAN>请求包。如果发现合法客户</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>端发给<SPAN lang=EN-US>AP</SPAN>的<SPAN lang=EN-US>arp</SPAN>请求包,攻击者就会向<SPAN lang=EN-US>AP</SPAN>重放这个包。由于<SPAN lang=EN-US>802.11b&nbsp;</SPAN>允许<SPAN lang=EN-US>IV</SPAN>重复使</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>用。所以<SPAN lang=EN-US>AP</SPAN>接到这样的<SPAN lang=EN-US>arp</SPAN>请求后就会回复客户端。这样攻击者就能搜集到更多的</FONT><FONT size=4><SPAN lang=EN-US>IV<BR></SPAN>了。当捕捉到足够多的<SPAN lang=EN-US>IV</SPAN>就可以按上面的<SPAN lang=EN-US>2.9.1</SPAN>里的进行破解了。如果没有办法获取</FONT><FONT size=4><SPAN lang=EN-US>arp<BR></SPAN>请求包我们就可以用<SPAN lang=EN-US>-0&nbsp;</SPAN>攻击使得合法客户端和<SPAN lang=EN-US>AP</SPAN>断线后重新连接。<SPAN lang=EN-US>-0&nbsp;Deautenticate</SPAN>攻</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>击实际就是无线欺骗。这样我们就有机会获得<SPAN lang=EN-US>arp</SPAN>请求包了。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.9.3&nbsp;</FONT></SPAN><FONT size=4>主动攻击<SPAN lang=EN-US>(</SPAN>没有客户端的模式</FONT><FONT size=4><SPAN lang=EN-US>)<BR></SPAN>先和<SPAN lang=EN-US>AP</SPAN>进行伪链接<SPAN lang=EN-US>-1&nbsp;fakeauth&nbsp;count&nbsp;attack&nbsp;mode</SPAN>。这样就能产生数据包了。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>收集两个<SPAN lang=EN-US>IV&nbsp;</SPAN>相同的的<SPAN lang=EN-US>WEP&nbsp;</SPAN>包,把这两个包里的密文做<SPAN lang=EN-US>XOR&nbsp;</SPAN>运算。得到一个<SPAN lang=EN-US>XOR&nbsp;</SPAN>文</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>件。用这个<SPAN lang=EN-US>XOR</SPAN>文件配合伪造<SPAN lang=EN-US>arp</SPAN>包的工具。利用<SPAN lang=EN-US>CRC-32</SPAN>的特点伪造一个<SPAN lang=EN-US>arp</SPAN>包和原</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>来的<SPAN lang=EN-US>IV</SPAN>一起发给<SPAN lang=EN-US>AP</SPAN>。这样就可以按上面<SPAN lang=EN-US>2.9.2&nbsp;</SPAN>里的进行破解了。其中<SPAN lang=EN-US>-2&nbsp;Interactive</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>-4&nbsp;Chopchop</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>-5&nbsp;Fragment&nbsp;</SPAN>都是属于上面这个攻击类型的。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.10&nbsp;WEP</FONT></SPAN><FONT size=4>的安全弱点</FONT><SPAN lang=EN-US><BR><FONT size=4>A.802.2&nbsp;</FONT></SPAN><FONT size=4>头信息和简单的<SPAN lang=EN-US>rc4&nbsp;</SPAN>流密码算法</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>导致攻击者在有客户端并有大量有效通信时,可以分析出<SPAN lang=EN-US>WEP</SPAN>的密码。</FONT><SPAN lang=EN-US><BR><FONT size=4>B.IV</FONT></SPAN><FONT size=4>重复使用</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>导致在攻击者在有客户端。少量通信或者没有通讯时,可以使用<SPAN lang=EN-US>arp&nbsp;</SPAN>重放的方法获得大</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>量有效数据。</FONT><SPAN lang=EN-US><BR><FONT size=4>C</FONT></SPAN><FONT size=4>.无身份验证机制,使用线性函数<SPAN lang=EN-US>CRC32</SPAN>进行完整性校验。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>无身份验证机制,导致攻击者能使用<SPAN lang=EN-US>-1&nbsp;fakeauth&nbsp;count&nbsp;attack&nbsp;mode</SPAN>和<SPAN lang=EN-US>AP</SPAN>建立伪链接。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>进而获得<SPAN lang=EN-US>XOR&nbsp;</SPAN>文件。使用线性函数<SPAN lang=EN-US>CRC32&nbsp;</SPAN>进行完整性校验,导致攻击者能用<SPAN lang=EN-US>XOR&nbsp;</SPAN>文</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>件伪造一个<SPAN lang=EN-US>arp</SPAN>包。然后依靠这个包去捕获大量有效数据。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.11&nbsp;WEP</FONT></SPAN><FONT size=4>窃听</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>由于<SPAN lang=EN-US>&nbsp;WEP&nbsp;</SPAN>全局都是用<SPAN lang=EN-US>IV+WEP&nbsp;</SPAN>密码来保护明文的。当有了密码后攻击者可以使用同</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>样的算法能随时任意窃听任意<SPAN lang=EN-US>STATION&nbsp;</SPAN>至<SPAN lang=EN-US>AP&nbsp;</SPAN>之间的通讯。这样的窃听对于网银这样的双</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>向认证的安全不会有影响。但是在<SPAN lang=EN-US>ip&nbsp;</SPAN>包里的明文用户名和密码就很容易被窃听到了。例如</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>登录<SPAN lang=EN-US>AP&nbsp;</SPAN>的用户名和密码。由于无线网络窃听的存在,在使用交换机的有线网络中用关闭</FONT><SPAN lang=EN-US><BR><FONT size=4>dhcp&nbsp;</FONT></SPAN><FONT size=4>设置陌生网段的来禁止非法访问的方式。不在适合于无线网络。攻击者完全能根据窃</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>听到的合法客户端数据包配合已知密码来分析出<SPAN lang=EN-US>ip</SPAN>的真实配置。</FONT><SPAN lang=EN-US><BR><FONT size=4>2.12&nbsp;WEP</FONT></SPAN><FONT size=4>的现状</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>真的不是一种强壮的加密方式对于那种不怀好意的攻击者。无法胜任在安全有求</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>比较高的场所。对于安全较低的厂所只能说有胜于无。</FONT><SPAN lang=EN-US><BR><FONT size=4>3&nbsp;WPA<BR>3.1&nbsp;WPA</FONT></SPAN><FONT size=4>加密算法的的两个版本介绍</FONT><SPAN lang=EN-US><BR><FONT size=4>WPA&nbsp;=&nbsp;802.1x&nbsp;+&nbsp;EAP&nbsp;+&nbsp;TKIP&nbsp;+&nbsp;MIC<BR>=&nbsp;Pre-shared&nbsp;Key&nbsp;+&nbsp;TKIP&nbsp;+&nbsp;MIC<BR>802.11i(WPA2)<BR>=&nbsp;802.1x&nbsp;+&nbsp;EAP&nbsp;+&nbsp;AES&nbsp;+&nbsp;CCMP<BR>=&nbsp;Pre-shared&nbsp;Key&nbsp;+&nbsp;AES&nbsp;+&nbsp;CCMP<BR></FONT></SPAN><FONT size=4>这里<SPAN lang=EN-US>802.1x&nbsp;+&nbsp;EAP</SPAN>,<SPAN lang=EN-US>Pre-shared&nbsp;Key</SPAN>是身份校验算法(<SPAN lang=EN-US>WEP</SPAN>没有设置有身份验证机制)</FONT><SPAN lang=EN-US><BR><FONT size=4>TKIP</FONT></SPAN><FONT size=4>和<SPAN lang=EN-US>AES</SPAN>是数据传输加密算法(类似于<SPAN lang=EN-US>WEP</SPAN>加密的<SPAN lang=EN-US>RC4&nbsp;</SPAN>算法)</FONT><SPAN lang=EN-US><BR><FONT size=4>MIC</FONT></SPAN><FONT size=4>和<SPAN lang=EN-US>CCMP</SPAN>数据完整性编码校验算法(类似于<SPAN lang=EN-US>WEP</SPAN>中<SPAN lang=EN-US>CRC32</SPAN>算法)</FONT><SPAN lang=EN-US><BR><FONT size=4>3.2&nbsp;WPA&nbsp;</FONT></SPAN><FONT size=4>认证方式</FONT><SPAN lang=EN-US><BR><FONT size=4>802.1x&nbsp;+&nbsp;EAP&nbsp;</FONT></SPAN><FONT size=4>(工业级的,安全要求高的地方用。需要认证服务器)</FONT><SPAN lang=EN-US><BR><FONT size=4>Pre-shared&nbsp;Key&nbsp;</FONT></SPAN><FONT size=4>(家庭用的,用在安全要求低的地方。不需要服务器)</FONT><SPAN lang=EN-US><BR><FONT size=4>EAP&nbsp;</FONT></SPAN><FONT size=4>扩展认真协议,是一种架构。而不是定义了算法。常见的有<SPAN lang=EN-US>LEAP</SPAN>,<SPAN lang=EN-US>MD5</SPAN>,<SPAN lang=EN-US>TTLS</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>TLS</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>PEAP</SPAN>,<SPAN lang=EN-US>SRP</SPAN>,<SPAN lang=EN-US>SIM</SPAN>,<SPAN lang=EN-US>AKA&nbsp;</SPAN>其中的<SPAN lang=EN-US>TLS&nbsp;</SPAN>和<SPAN lang=EN-US>TTLS&nbsp;</SPAN>是双向认证模式。这个和网络银行的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>安全方式差不多。这个认证方式是不怕网络劫持和字典攻击的。而<SPAN lang=EN-US>md5&nbsp;</SPAN>是单向认证的。不</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>抗网络劫持,中间人攻击。关于企业级的如何破解就不讨论了。因为论坛上也很少提到。本</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>身<SPAN lang=EN-US>EAP</SPAN>模式是个协议,不是算法。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.3&nbsp;WPA-PSK<BR></FONT></SPAN><FONT size=4>论坛上破解<SPAN lang=EN-US>WPA&nbsp;</SPAN>也主要是集中在这个模式上的。我们都知道破解<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>不是和</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>一样抓很多包就能破解的。关键是要获取握手包,这个握手包叫<SPAN lang=EN-US>4way-handshake&nbsp;</SPAN>四次</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>握手包。那么我们就从这个四次握手包开始。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.4&nbsp;</FONT></SPAN><FONT size=4>四次握手</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>通信过程如图</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>3.4.1&nbsp;WPA-PSK&nbsp;</FONT></SPAN><FONT size=4>初始化工作</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>使用<SPAN lang=EN-US>&nbsp;SSID&nbsp;</SPAN>和<SPAN lang=EN-US>passphares</SPAN>使用以下算法产生<SPAN lang=EN-US>PSK&nbsp;</SPAN>在<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>中</FONT><FONT size=4><SPAN lang=EN-US>PMK=PSK<BR>PSK=PMK=pdkdf2_SHA1(passphrase</SPAN>,<SPAN lang=EN-US>SSID</SPAN>,<SPAN lang=EN-US>SSID&nbsp;length</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>4096)<BR>3.4.2&nbsp;</SPAN>第一次握手</FONT><SPAN lang=EN-US><BR><FONT size=4>AP</FONT></SPAN><FONT size=4>广播<SPAN lang=EN-US>SSID</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>AP_MAC(AA)→STATION<BR>STATION&nbsp;</SPAN>端</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>使用接受到的<SPAN lang=EN-US>SSID</SPAN>,<SPAN lang=EN-US>AP_MAC(AA)</SPAN>和<SPAN lang=EN-US>passphares</SPAN>使用同样算法产生</FONT><FONT size=4><SPAN lang=EN-US>PSK<BR>3.4.3&nbsp;</SPAN>第二次握手</FONT><SPAN lang=EN-US><BR><FONT size=4>STATION&nbsp;</FONT></SPAN><FONT size=4>发送一个随机数<SPAN lang=EN-US>SNonce</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>STATION_MAC(SA)→AP<BR>AP</SPAN>端</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>接受到<SPAN lang=EN-US>SNonce</SPAN>,<SPAN lang=EN-US>STATION_MAC(SA)</SPAN>后产生一个随机数</FONT><FONT size=4><SPAN lang=EN-US>ANonce<BR></SPAN>然后用<SPAN lang=EN-US>PMK</SPAN>,<SPAN lang=EN-US>AP_MAC(AA)</SPAN>,<SPAN lang=EN-US>STATION_MAC(SA)</SPAN>,<SPAN lang=EN-US>SNonce</SPAN>,<SPAN lang=EN-US>ANonce&nbsp;</SPAN>用以下算</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>法产生</FONT><FONT size=4><SPAN lang=EN-US>PTK<BR>PTK=SHA1_PRF(PMK</SPAN>,<SPAN lang=EN-US>&nbsp;Len(PMK)</SPAN>,<SPAN lang=EN-US>&nbsp;"Pairwise&nbsp;key&nbsp;expansion"</SPAN>,<SPAN lang=EN-US>MIN(AA</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>SA)&nbsp;||<BR>Max(AA</SPAN>,<SPAN lang=EN-US>SA)&nbsp;||&nbsp;Min(ANonce</SPAN>,<SPAN lang=EN-US>SNonce)&nbsp;||&nbsp;Max(ANonce</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>SNonce))<BR></SPAN>提取这个<SPAN lang=EN-US>PTK&nbsp;</SPAN>前<SPAN lang=EN-US>16&nbsp;</SPAN>个字节组成一个</FONT><FONT size=4><SPAN lang=EN-US>MIC&nbsp;KEY<BR>3.4.4&nbsp;</SPAN>第三次握手</FONT><SPAN lang=EN-US><BR><FONT size=4>AP</FONT></SPAN><FONT size=4>发送上面产生的</FONT><FONT size=4><SPAN lang=EN-US>ANonce→STATION<BR>STATION&nbsp;</SPAN>端</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>用接收到<SPAN lang=EN-US>ANonce&nbsp;</SPAN>和以前产生<SPAN lang=EN-US>PMK</SPAN>,<SPAN lang=EN-US>SNonce</SPAN>,<SPAN lang=EN-US>AP_MAC(AA)</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>STATION_MAC(SA)<BR></SPAN>用同样的算法产生<SPAN lang=EN-US>PTK</SPAN>。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>提取这个<SPAN lang=EN-US>PTK&nbsp;</SPAN>前<SPAN lang=EN-US>16&nbsp;</SPAN>个字节组成一个</FONT><FONT size=4><SPAN lang=EN-US>MIC&nbsp;KEY<BR></SPAN>使用以下算法产生<SPAN lang=EN-US>MIC</SPAN>值</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>用这个<SPAN lang=EN-US>MIC&nbsp;KEY&nbsp;</SPAN>和一个<SPAN lang=EN-US>802.1x&nbsp;data&nbsp;</SPAN>数据帧使用以下算法得到<SPAN lang=EN-US>MIC</SPAN>值</FONT><SPAN lang=EN-US><BR><FONT size=4>MIC&nbsp;=&nbsp;HMAC_MD5(MIC&nbsp;Key</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>16</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>802.1x&nbsp;data)<BR>3.4.5&nbsp;</SPAN>第四次握手</FONT><SPAN lang=EN-US><BR><FONT size=4>STATION&nbsp;</FONT></SPAN><FONT size=4>发送<SPAN lang=EN-US>802.1x&nbsp;data&nbsp;</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>MIC→AP<BR>STATION&nbsp;</SPAN>端</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>用上面那个准备好的<SPAN lang=EN-US>802.1x&nbsp;</SPAN>数据帧在最后填充上<SPAN lang=EN-US>MIC</SPAN>值和两个字节的<SPAN lang=EN-US>0</SPAN>(十六进</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>制)让后发送这个数据帧到<SPAN lang=EN-US>AP</SPAN>。</FONT><SPAN lang=EN-US><BR><FONT size=4>AP</FONT></SPAN><FONT size=4>端</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>收到这个数据帧后提取这个<SPAN lang=EN-US>MIC</SPAN>。并把这个数据帧的<SPAN lang=EN-US>MIC</SPAN>部分都填上<SPAN lang=EN-US>0</SPAN>(十六进</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>制)这时用这个<SPAN lang=EN-US>802.1x&nbsp;data&nbsp;</SPAN>数据帧,和用上面<SPAN lang=EN-US>AP</SPAN>产生的<SPAN lang=EN-US>MIC&nbsp;KEY&nbsp;</SPAN>使用同样的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>算法得出<SPAN lang=EN-US>MIC’</SPAN>。如果<SPAN lang=EN-US>MIC’</SPAN>等于<SPAN lang=EN-US>STATION&nbsp;</SPAN>发送过来的<SPAN lang=EN-US>MIC</SPAN>。那么第四次握手成</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>功。若不等说明则<SPAN lang=EN-US>AP&nbsp;</SPAN>和<SPAN lang=EN-US>STATION&nbsp;</SPAN>的密钥不相同,或<SPAN lang=EN-US>STATION&nbsp;</SPAN>发过来的数据帧</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>受到过中间人攻击,原数据被篡改过。握手失败了。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.4.6&nbsp;MIC</FONT></SPAN><FONT size=4>的派生图</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>SSID&nbsp;passphares<BR>PSK=PMK=pdkdf2_SHA1(passphr<BR>ase</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>&nbsp;SSID</SPAN>,<SPAN lang=EN-US>&nbsp;SSID&nbsp;length</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>&nbsp;4096)<BR>PTK=SHA1_PRF(PMK</SPAN>,<SPAN lang=EN-US>&nbsp;Len(PMK)</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>"Pairwise&nbsp;key&nbsp;expansion"</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>MIN(AA</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>SA)&nbsp;||&nbsp;Max(AA</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>SA)&nbsp;||&nbsp;Min(ANonce</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>SNonce)&nbsp;||&nbsp;Max(ANonce</FONT></SPAN><FONT size=4>,</FONT><FONT size=4><SPAN lang=EN-US>SNonce))<BR>MIC&nbsp;KEY=</SPAN>提取<SPAN lang=EN-US>PTK&nbsp;</SPAN>的前<SPAN lang=EN-US>16&nbsp;</SPAN>个字节</FONT><SPAN lang=EN-US><BR><FONT size=4>MIC&nbsp;=&nbsp;HMAC_MD5(MIC&nbsp;Key</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>16</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>802.1x&nbsp;data)<BR>SNonce<BR>STATION&nbsp;MAC&nbsp;APMAC<BR>ANonce<BR>802.1x&nbsp;data<BR><BR>3.5&nbsp;AP</FONT></SPAN><FONT size=4>和<SPAN lang=EN-US>STATION&nbsp;</SPAN>之间的加密通信</FONT><SPAN lang=EN-US><BR><FONT size=4>3.5.1&nbsp;</FONT></SPAN><FONT size=4>通讯使用的临时<SPAN lang=EN-US>KEY&nbsp;</SPAN>的派生图</FONT><SPAN lang=EN-US><BR><FONT size=4></FONT><BR><FONT size=4>3.5.2&nbsp;</FONT></SPAN><FONT size=4>使用<SPAN lang=EN-US>&nbsp;KEY&nbsp;</SPAN>进行加密通信</FONT><SPAN lang=EN-US><BR><FONT size=4>3.5.2.1&nbsp;TKIP<BR></FONT><BR><FONT size=4>3.5.2.2&nbsp;CCMP<BR></FONT><BR><FONT size=4>PTK&nbsp;–&nbsp;X&nbsp;bit<BR>Pairwise&nbsp;Transcient&nbsp;Key<BR>EAPOL-Key<BR>confirmtion&nbsp;Key<BR>128&nbsp;bits<BR>EAPOL-Key<BR>Encryption&nbsp;Key<BR>128&nbsp;bits<BR>Temporal<BR>Encryption&nbsp;Key<BR>128&nbsp;bits<BR>Temporal&nbsp;AP<BR>Tx&nbsp;MIC&nbsp;Key<BR>64&nbsp;bits<BR>Temporal&nbsp;AP<BR>Tx&nbsp;MIC&nbsp;Key<BR>64&nbsp;bits<BR>X&nbsp;=&nbsp;512&nbsp;(TKIP)<BR>X&nbsp;=&nbsp;384&nbsp;(CCMP)<BR>Bit&nbsp;128-256<BR>KEK<BR>Bit&nbsp;256-384<BR>TEK(=TK)<BR>Bit&nbsp;384-447<BR>TMK1<BR>Bit&nbsp;447-511<BR>TMK2<BR>Bit&nbsp;0-127<BR>KCK<BR>3.5.3&nbsp;WPA</FONT></SPAN><FONT size=4>安全规则</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>针对于<SPAN lang=EN-US>WEP</SPAN>的安全漏洞<SPAN lang=EN-US>WPA&nbsp;</SPAN>也相应更新了安全规则:</FONT><SPAN lang=EN-US><BR><FONT size=4>A</FONT></SPAN><FONT size=4>.<SPAN lang=EN-US>&nbsp;</SPAN>增强至<SPAN lang=EN-US>48bit</SPAN>的<SPAN lang=EN-US>IV</SPAN>。</FONT><SPAN lang=EN-US><BR><FONT size=4>B</FONT></SPAN><FONT size=4>.<SPAN lang=EN-US>Sequence&nbsp;Counter</SPAN>,防止<SPAN lang=EN-US>IV</SPAN>重复。</FONT><SPAN lang=EN-US><BR><FONT size=4>C</FONT></SPAN><FONT size=4>.<SPAN lang=EN-US>Dynamic&nbsp;key&nbsp;management</SPAN>,动态<SPAN lang=EN-US>key</SPAN>管理机制。</FONT><SPAN lang=EN-US><BR><FONT size=4>D</FONT></SPAN><FONT size=4>.<SPAN lang=EN-US>Per-Packet&nbsp;Key</SPAN>加密机制,每个包都使用不同的<SPAN lang=EN-US>key</SPAN>加密。</FONT><SPAN lang=EN-US><BR><FONT size=4>E</FONT></SPAN><FONT size=4>.<SPAN lang=EN-US>MIC&nbsp;(Message&nbsp;Integrity&nbsp;Code&nbsp;)&lt;Michael&gt;</SPAN>,信息编码完整性机制。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>解说:动态<SPAN lang=EN-US>key</SPAN>管理机制</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>在通讯期间:</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>如果侦测到<SPAN lang=EN-US>MIC</SPAN>错误,将会执行如下程序。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>记录并登录<SPAN lang=EN-US>MIC</SPAN>错误,<SPAN lang=EN-US>60&nbsp;</SPAN>秒內发生两次<SPAN lang=EN-US>MIC</SPAN>错误。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>反制措施会立即停止所有的<SPAN lang=EN-US>TKIP</SPAN>通讯。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>然后更新数据加密的用的<SPAN lang=EN-US>TEK</SPAN>。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.5.4&nbsp;WPA&nbsp;</FONT></SPAN><FONT size=4>安全机制作用</FONT><SPAN lang=EN-US><BR><FONT size=4>a.&nbsp;</FONT></SPAN><FONT size=4>加密通信流程图、<SPAN lang=EN-US>Per-Packet&nbsp;Key&nbsp;</SPAN>加密机制、动态<SPAN lang=EN-US>key&nbsp;</SPAN>管理机制使得使用类似</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>于<SPAN lang=EN-US>WEP</SPAN>中分析子密码攻击的方案,在<SPAN lang=EN-US>WPA&nbsp;</SPAN>中将变得异常困难,和不可实现。</FONT><SPAN lang=EN-US><BR><FONT size=4>b.&nbsp;</FONT></SPAN><FONT size=4>身份验证机制杜绝了<SPAN lang=EN-US>-1&nbsp;fakeauth&nbsp;count&nbsp;attack&nbsp;mode</SPAN>,建立伪连的攻击。</FONT><SPAN lang=EN-US><BR><FONT size=4>c.&nbsp;</FONT></SPAN><FONT size=4>增强至<SPAN lang=EN-US>48bit&nbsp;</SPAN>的<SPAN lang=EN-US>IV</SPAN>、防止<SPAN lang=EN-US>IV&nbsp;</SPAN>重复、<SPAN lang=EN-US>MIC&nbsp;</SPAN>信息编码完整性机制。使得要伪造一</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>个合法数据包变得异常的困难。同时也致使<SPAN lang=EN-US>-2&nbsp;Interactive</SPAN>,<SPAN lang=EN-US>-4&nbsp;Chopchop</SPAN>,</FONT><FONT size=4><SPAN lang=EN-US>5<BR>Fragment&nbsp;</SPAN>此类攻击对于<SPAN lang=EN-US>WPA&nbsp;</SPAN>无效。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>解说:</FONT><SPAN lang=EN-US><BR><FONT size=4>a.&nbsp;</FONT></SPAN><FONT size=4>虽然<SPAN lang=EN-US>TKIP</SPAN>使用的是和<SPAN lang=EN-US>WEP</SPAN>一样的加密算法<SPAN lang=EN-US>RC4</SPAN>,但是<SPAN lang=EN-US>TKIP</SPAN>中使用</FONT><FONT size=4><SPAN lang=EN-US>Per-Packet<BR>Key</SPAN>加密机制配合<SPAN lang=EN-US>RC4</SPAN>。这样弥补了<SPAN lang=EN-US>RC4&nbsp;</SPAN>加密算法的不足。抵抗基于<SPAN lang=EN-US>RC4&nbsp;</SPAN>漏</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>洞的攻击。<SPAN lang=EN-US>WPA2&nbsp;</SPAN>中的<SPAN lang=EN-US>AES</SPAN>比<SPAN lang=EN-US>TKIP</SPAN>有更高的安全性,对他的破解难度就更高</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>了。</FONT><SPAN lang=EN-US><BR><FONT size=4>b.&nbsp;</FONT></SPAN><FONT size=4>使用非线性的<SPAN lang=EN-US>MIC</SPAN>信息编码完整性算法,取代线性的<SPAN lang=EN-US>CRC-32</SPAN>。增加了攻击者</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>伪造合法数据的难度。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>有以上结论我们不难得出一个事实。类似于<SPAN lang=EN-US>WEP</SPAN>中的无客户端破解密码的做</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>法在<SPAN lang=EN-US>WPA&nbsp;</SPAN>中是不存在的。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.6&nbsp;</FONT></SPAN><FONT size=4>针对<SPAN lang=EN-US>&nbsp;WPA</SPAN>的破解攻击</FONT><SPAN lang=EN-US><BR><FONT size=4>3.6.1&nbsp;</FONT></SPAN><FONT size=4>抓取数据传输包进行破解</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>上面已经明确的指出无论数据传输算法是<SPAN lang=EN-US>TKIP</SPAN>还是<SPAN lang=EN-US>AES</SPAN>。使用类似于<SPAN lang=EN-US>WEP</SPAN>中捕</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>获数据包进行分析破解的方式对于<SPAN lang=EN-US>WPA</SPAN>几乎是不可能的。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.6.2&nbsp;</FONT></SPAN><FONT size=4>抓取<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>的四次握手包进行破解</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>可以说<SPAN lang=EN-US>&nbsp;WPA-PSK&nbsp;</SPAN>安全体系是十分完善的。但他始终是用一个密码保护的。对于</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>这种用密码保护的安全体系。一般情况下我们都可以用一种叫字典攻击的常规攻击手</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>段。所以针对<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>可以进行的直接攻击,目前就只有字典攻击这一种方式。而这</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>种常规的攻击方式将在字典攻击里详细讨论。当然我们<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>的设计者也很明确这</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>点,所以在<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>的安全体系中加入了潜规则加以对抗。这点将在攻击预算里做详</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>细的讨论。在<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>的四次握手包中包含着和密码有联系的信息,依靠这个信息进</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>行字典攻击。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.6.3&nbsp;</FONT></SPAN><FONT size=4>断线攻击</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>由于<SPAN lang=EN-US>&nbsp;WPA-PSK&nbsp;</SPAN>是单向认证的。所以可以使用<SPAN lang=EN-US>-0&nbsp;Deautenticate</SPAN>攻击。这样有助于</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>我们获取握手包。在获得握手包时<SPAN lang=EN-US>-0&nbsp;</SPAN>攻击不要太多,否则适得其反的。有些<SPAN lang=EN-US>AP</SPAN>几次握</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>手不成就会认为有攻击。禁止客户端和<SPAN lang=EN-US>AP</SPAN>的链接<SPAN lang=EN-US>30</SPAN>秒。(可能基于<SPAN lang=EN-US>WPA&nbsp;EAP&nbsp;TLS&nbsp;</SPAN>这</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>样双向认证的就不怕断线攻击了)</FONT><SPAN lang=EN-US><BR><FONT size=4>3.6.4&nbsp;</FONT></SPAN><FONT size=4>间接攻击</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>例子:别人输密码你在哪里偷看。使用美人计骗取密码。有技术含量点的。原来</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>时他的计算机有漏洞你给他下了木马。改成<SPAN lang=EN-US>WPA&nbsp;</SPAN>后木马把密码发给你的。或你整</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>天窃听他的<SPAN lang=EN-US>WEP</SPAN>通信,他改密<SPAN lang=EN-US>WPA&nbsp;</SPAN>模式时发给路由的密码让你截获了。比较狠一点的,</FONT><SPAN lang=EN-US><BR><FONT size=4>AP</FONT></SPAN><FONT size=4>是你卖给他的<SPAN lang=EN-US>AP</SPAN>的系统里添加了你的后门。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.7&nbsp;WPA</FONT></SPAN><FONT size=4>安全性的前景</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP&nbsp;</FONT></SPAN><FONT size=4>由原来的安全到今天的不安全。你是否同样也会担心是不是很多年之后的</FONT><FONT size=4><SPAN lang=EN-US>WPA<BR></SPAN>也会是同样的命运。但我们也要看到<SPAN lang=EN-US>WEP&nbsp;</SPAN>的破解不是某个算法的漏洞导致的。而是整个</FONT><SPAN lang=EN-US><BR><FONT size=4>WEP</FONT></SPAN><FONT size=4>的安全体系有很多漏洞所共同导致的。而<SPAN lang=EN-US>WPA</SPAN>的安全体系很强壮。使用的大多是混合</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>算法。所以某一个算法的弱点往往不能给<SPAN lang=EN-US>WPA&nbsp;</SPAN>这样的安全体系以致命的打击。<SPAN lang=EN-US>WPA&nbsp;</SPAN>这种依</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>靠算法的安全体系也许某一天会被破解。但是可能<SPAN lang=EN-US>WPA&nbsp;</SPAN>被完全破解的那一天比<SPAN lang=EN-US>WPA&nbsp;</SPAN>废弃</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的那一天都晚。如果这样的话,那么的确该说<SPAN lang=EN-US>WPA&nbsp;</SPAN>是一种很强壮的安全体系。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.8&nbsp;WPA&nbsp;</FONT></SPAN><FONT size=4>的窃听</FONT><SPAN lang=EN-US><BR><FONT size=4>WP-PSK&nbsp;</FONT></SPAN><FONT size=4>没有密码几乎没法窃听他的通信。在有了密码的情况下<SPAN lang=EN-US>WPA&nbsp;</SPAN>的窃听也不具</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>有<SPAN lang=EN-US>WEP&nbsp;</SPAN>中窃听的随意性。在<SPAN lang=EN-US>WPA&nbsp;</SPAN>中<SPAN lang=EN-US>SNonce</SPAN>,<SPAN lang=EN-US>ANonce&nbsp;</SPAN>也很好的起到了加密数据防止窃听</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的作用,所以作为攻击者我们必须从握手开始窃听。而且会同步更替数据加密密钥。所以</FONT><SPAN lang=EN-US><BR><FONT size=4>WPA-PSK&nbsp;</FONT></SPAN><FONT size=4>的安全性都依赖于密码。</FONT><SPAN lang=EN-US><BR><FONT size=4>3.9&nbsp;WPA</FONT></SPAN><FONT size=4>评价</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>无论是<SPAN lang=EN-US>WPA</SPAN>还是<SPAN lang=EN-US>WPA2&nbsp;</SPAN>在目前都是有很好的安全性的。企业级<SPAN lang=EN-US>EAP</SPAN>的安全模式更为</FONT><SPAN lang=EN-US><BR><FONT size=4>WPA</FONT></SPAN><FONT size=4>的安全性如虎添翼。我很欣赏<SPAN lang=EN-US>WPA&nbsp;=&nbsp;PSK&nbsp;+&nbsp;TKIP&nbsp;+&nbsp;MIC</SPAN>这个模式。因为原来<SPAN lang=EN-US>WEP</SPAN>的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>设备只需要更换代码就能升级到这个模式了。所以这个模式使用较低的成本就可以实现很高</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的安全性,还有便捷性。成本当然也是一个东西是否能普及重要因素。而</FONT><FONT size=4><SPAN lang=EN-US>WPA2&nbsp;AES+CCMP<BR></SPAN>的更高的安全性对硬件的要求也是要高一点的。</FONT><SPAN lang=EN-US><BR><FONT size=4>4&nbsp;</FONT></SPAN><FONT size=4>字典攻击</FONT><SPAN lang=EN-US><BR><FONT size=4>4.1&nbsp;</FONT></SPAN><FONT size=4>寻找可以攻击的信息元素</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>字典攻击作为一种常用的攻击手段要明白的是从那里开始攻击。要寻找和密码有有联系</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的信息元素。在<SPAN lang=EN-US>WPA&nbsp;</SPAN>中和密码有联系的信息有数据的传送包和四次握手包。由于无法知道</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>明文,和<SPAN lang=EN-US>WPA</SPAN>的数据加密算法的复杂性。在数据传输包上要找到可以攻击的信息元素基本</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>上很难实现。所以只能在握手包里寻找有密码有联系的信息。在上面的四次握手包的图片中</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>很清楚的表明,在四川握手中主要传递的有如下数据:<SPAN lang=EN-US>SSID</SPAN>,<SPAN lang=EN-US>AP_MAC</SPAN>,<SPAN lang=EN-US>STATION_MAC</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>SNonce</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>ANonce</SPAN>,<SPAN lang=EN-US>802.1x&nbsp;data</SPAN>,<SPAN lang=EN-US>MIC</SPAN>。前面<SPAN lang=EN-US>6&nbsp;</SPAN>个元素很清楚,一般不会和密码有联系的。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>只有最后一个<SPAN lang=EN-US>MIC</SPAN>和密码有所联系。通过<SPAN lang=EN-US>MIC</SPAN>的派生图我们知道,<SPAN lang=EN-US>MIC</SPAN>是通过上面六个信</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>息元素和密码通过三个主要的算法派生出来的。那么我们是不是只要找到这三个算法的逆反</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>算法就可以根据上面的<SPAN lang=EN-US>7&nbsp;</SPAN>个信息元素把密码计算出来了呢。的确实这样。但是这三个算法有</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>一个共同的名字叫<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.1.1&nbsp;HASH&nbsp;</FONT></SPAN><FONT size=4>函数</FONT><SPAN lang=EN-US><BR><FONT size=4>HASH&nbsp;</FONT></SPAN><FONT size=4>函数是不可能从生产的散列值来唯一的确定输入值。</FONT><SPAN lang=EN-US><BR><FONT size=4>a.&nbsp;</FONT></SPAN><FONT size=4>单向性<SPAN lang=EN-US>(one-way)</SPAN>。<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数是没有反函数的。</FONT><SPAN lang=EN-US><BR><FONT size=4>b.&nbsp;</FONT></SPAN><FONT size=4>抗冲突性<SPAN lang=EN-US>(collision-resistant)</SPAN>。要寻找两个<SPAN lang=EN-US>hash</SPAN>值相同的原值十分困难。</FONT><SPAN lang=EN-US><BR><FONT size=4>c.&nbsp;</FONT></SPAN><FONT size=4>映射分布均匀性和差分分布均匀性。不像普通函数那样数值分布有一定规</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>律。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>由于上面的<SPAN lang=EN-US>pdkdf2_SHA1,SHA1_PRF,HMAC_MD5</SPAN>是<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数。所以我们就基</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>本上无法直接计算出密码。对于<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数比较有效的攻击就是建立<SPAN lang=EN-US>HASH&nbsp;</SPAN>字典攻击。</FONT><SPAN lang=EN-US><BR><FONT size=4>HASH&nbsp;</FONT></SPAN><FONT size=4>字典就是把预先算好的<SPAN lang=EN-US>HASH&nbsp;</SPAN>值按照线性排列然后组成一个数据库。当我们知道</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>一个<SPAN lang=EN-US>HASH&nbsp;</SPAN>值时在这个数据库里能马上找到他的原值。当然这个过程是通过数据库实现</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的而不是<SPAN lang=EN-US>HASH&nbsp;</SPAN>的逆反函数。所以有些<SPAN lang=EN-US>HASH&nbsp;</SPAN>值在这样的数据库里是找不到原值的。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>由于<SPAN lang=EN-US>HASH&nbsp;</SPAN>库是线性的所以。所以在<SPAN lang=EN-US>HASH&nbsp;</SPAN>库里找数据是十分迅速的。下面的链接让</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>你体验一下<SPAN lang=EN-US>HASH&nbsp;</SPAN>线性库的速度<SPAN lang=EN-US><A href="http://www.cmd5.com/" target=_blank><SPAN style="COLOR: black; TEXT-DECORATION: none; mso-bidi-font-size: 12.0pt; text-underline: none">http://www.cmd5.com/</SPAN></A></SPAN>。还有一点有的人也知道的国内</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的王小云教授对于部分<SPAN lang=EN-US>HASH&nbsp;</SPAN>算法有突出贡献的。她的主要贡献是寻找碰撞值。暴力破</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>解的话就是大概需要<SPAN lang=EN-US>2^80&nbsp;</SPAN>量级的<SPAN lang=EN-US>MD5&nbsp;HASH&nbsp;</SPAN>运算。被王教授提高到只需要<SPAN lang=EN-US>2^69&nbsp;</SPAN>量级</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的<SPAN lang=EN-US>MD5&nbsp;HASH&nbsp;</SPAN>运算就能够找到一个碰撞。我们有这样两个对付<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数的方法。那</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>么对我们破解我怕密码是不是如虎添翼了呢?</FONT><SPAN lang=EN-US><BR><FONT size=4>4.1.2&nbsp;HMAC&nbsp;(HASH&nbsp;Message&nbsp;Authentication&nbsp;Code)</FONT></SPAN><FONT size=4>哈希消息校验算法</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>这里我承认我刚才有骗过你。<SPAN lang=EN-US>pdkdf2_SHA1,SHA1_PRF,HMAC_MD5&nbsp;</SPAN>不是</FONT><FONT size=4><SPAN lang=EN-US>HASH<BR></SPAN>函数。当然我骗你我也有我的理由啦。第一我以前被别人骗过,某论坛上说建立</FONT><FONT size=4><SPAN lang=EN-US>HASH<BR></SPAN>库然后进行<SPAN lang=EN-US>WPA</SPAN>破解的。能建立<SPAN lang=EN-US>HASH&nbsp;</SPAN>库那三个函数不是<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数那是什么啊。第</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>二我不是故意的。了解<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数,有助于你理解<SPAN lang=EN-US>HMAC&nbsp;</SPAN>算法。所以</FONT><SPAN lang=EN-US><BR><FONT size=4>pdkdf2_SHA1,SHA1_PRF,HMAC_MD5</FONT></SPAN><FONT size=4>是<SPAN lang=EN-US>HMAC</SPAN>算法。不是<SPAN lang=EN-US>HASH&nbsp;</SPAN>函数。<SPAN lang=EN-US>HMAC</SPAN>算法</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>就是用一个密码,和一个消息。最后生成一个<SPAN lang=EN-US>HASH</SPAN>值。由上面的介绍,我们可以看出,</FONT><SPAN lang=EN-US><BR><FONT size=4>HMAC</FONT></SPAN><FONT size=4>算法更象是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的</FONT><SPAN lang=EN-US><BR><FONT size=4>HASH&nbsp;</FONT></SPAN><FONT size=4>算法。所以上面对<SPAN lang=EN-US>HASH&nbsp;</SPAN>的攻击,对于<SPAN lang=EN-US>HMAC&nbsp;</SPAN>是没有效果的。<SPAN lang=EN-US>HMAC&nbsp;</SPAN>特别是</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>象<SPAN lang=EN-US>“</SPAN>挑战<SPAN lang=EN-US>/</SPAN>响应<SPAN lang=EN-US>”</SPAN>身份认证应用中,由于攻击者无法事先获得<SPAN lang=EN-US>HMAC&nbsp;</SPAN>的计算结果,对系</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>统的攻击只能使用穷举或<SPAN lang=EN-US>“</SPAN>生日攻击<SPAN lang=EN-US>”</SPAN>的方法,但计算量巨大,基本不可行。所以,在</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>目前的计算能力下,可以认为<SPAN lang=EN-US>HMAC</SPAN>算法在<SPAN lang=EN-US>“</SPAN>挑战<SPAN lang=EN-US>/</SPAN>响应<SPAN lang=EN-US>”</SPAN>身份认证应用中是安全的。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.1.3&nbsp;</FONT></SPAN><FONT size=4>四次握手包</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>有上面的<SPAN lang=EN-US>HMAC&nbsp;</SPAN>的特性我们也不难得出<SPAN lang=EN-US>SSID</SPAN>,<SPAN lang=EN-US>AP_MAC</SPAN>,<SPAN lang=EN-US>STATION_MAC</SPAN>,</FONT><SPAN lang=EN-US><BR><FONT size=4>SNonce</FONT></SPAN><FONT size=4>,<SPAN lang=EN-US>ANonce</SPAN>,<SPAN lang=EN-US>802.1x&nbsp;data</SPAN>,这些信息元素都是上面的<SPAN lang=EN-US>HMAC</SPAN>算法里的消息。</FONT><FONT size=4><SPAN lang=EN-US>HMAC<BR></SPAN>算法里的密码在<SPAN lang=EN-US>pdkdf2_SHA1&nbsp;</SPAN>算法里是<SPAN lang=EN-US>WPA&nbsp;</SPAN>的密码,在<SPAN lang=EN-US>SHA1_PRF&nbsp;</SPAN>算法里是<SPAN lang=EN-US>PMK</SPAN>,</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>在<SPAN lang=EN-US>HMAC_MD5</SPAN>算法里是<SPAN lang=EN-US>PTK</SPAN>。最后才得出<SPAN lang=EN-US>MIC</SPAN>值。由于这些消息和这个<SPAN lang=EN-US>MIC</SPAN>值都有</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>关联性。所以四次握手吧的后面三次是缺一不可的。而且是有时效性的。不能把不是同</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>一次的握手包拼起来使用的。当然第一次握手包的<SPAN lang=EN-US>SSID&nbsp;</SPAN>和<SPAN lang=EN-US>AP-MAC</SPAN>是可以后获取的。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>这里你也明白了四次握手中根本是不是在传递一个简单的<SPAN lang=EN-US>HASH&nbsp;</SPAN>值。而是要传递一个</FONT><SPAN lang=EN-US><BR><FONT size=4>HMAC&nbsp;</FONT></SPAN><FONT size=4>值。如果是传递一个简单的<SPAN lang=EN-US>HASH&nbsp;</SPAN>值,那么我们只要获取后重播这个值就可以</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>欺骗<SPAN lang=EN-US>AP&nbsp;</SPAN>获得认证了。都不要知道这个<SPAN lang=EN-US>HASH&nbsp;</SPAN>值对应的原值。但我的这么好的想法被</FONT><SPAN lang=EN-US><BR><FONT size=4>HMAC</FONT></SPAN><FONT size=4>给打破了。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.1.4&nbsp;</FONT></SPAN><FONT size=4>面向于四次握手包的字典攻击。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>字典攻击,就是把密码的可能性罗列起来组成一个密码字典。然后把字典里的密</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>码和<SPAN lang=EN-US>SSID</SPAN>,<SPAN lang=EN-US>AP_MAC</SPAN>,<SPAN lang=EN-US>STATION_MAC</SPAN>,<SPAN lang=EN-US>SNonce</SPAN>,<SPAN lang=EN-US>ANonce</SPAN>,<SPAN lang=EN-US>802.1x&nbsp;data</SPAN>,这些信息元</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>素。通过<SPAN lang=EN-US>pdkdf2_SHA1,SHA1_PRF,HMAC_MD5&nbsp;</SPAN>这些算法最后生成<SPAN lang=EN-US>MIC’</SPAN>(具体过程看</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>上面<SPAN lang=EN-US>MIC</SPAN>派生图)。当在字典里找到一个密码他的<SPAN lang=EN-US>MIC’</SPAN>等于握手包中的<SPAN lang=EN-US>MIC</SPAN>。这时字</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>典破解成功。这就是我们要的那个密码。如果把字典里的所有密码都找遍了还有没有符</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>合上述条件的。那么破解失败。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.2&nbsp;WPA-PSK&nbsp;</FONT></SPAN><FONT size=4>密码规范和可能的密码空间</FONT><SPAN lang=EN-US><BR><FONT size=4>4.2.1&nbsp;HEX&nbsp;</FONT></SPAN><FONT size=4>模式</FONT><SPAN lang=EN-US><BR><FONT size=4>64&nbsp;</FONT></SPAN><FONT size=4>个的十六进制数字。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.2.2&nbsp;ASCII</FONT></SPAN><FONT size=4>模式</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>密码至少<SPAN lang=EN-US>8</SPAN>位最大不能超过<SPAN lang=EN-US>63</SPAN>位。字符要求<SPAN lang=EN-US>a</SPAN>~<SPAN lang=EN-US>z</SPAN>,<SPAN lang=EN-US>A</SPAN>~<SPAN lang=EN-US>Z</SPAN>,任意字符包括空格。所</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>以一共可是使用的字符个数为<SPAN lang=EN-US>95&nbsp;</SPAN>个。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>这两种模式的密码的穷举字典(罗列所有的可能性)是超乎想象的大(不包括那</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>想象特别大的人)。我们就拿<SPAN lang=EN-US>HEX&nbsp;</SPAN>模式的穷举打个比方吧。如果用一个水分子比作是一</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>个密码的话。那么穷举字典里的密码组成一个圆球。这个球的直径是<SPAN lang=EN-US>2.4</SPAN>光年。而</FONT><FONT size=4><SPAN lang=EN-US>ASCII<BR></SPAN>模式密码空间,你别逗了!我们可能观察到的最广阔宇宙空间的直径只可能在<SPAN lang=EN-US>150</SPAN>亿光</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>年这样的范围之内。这样水球都还需要在那个基础上在大上百万倍。密码空间有时会形</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>成超天文数字的。当然我们不需要尝试像上面一样如此多的数值。因为<SPAN lang=EN-US>MIC</SPAN>值只有</FONT><FONT size=4><SPAN lang=EN-US>128<BR></SPAN>位,我们只需要上面的球和月亮这么大的尝试就能找到一个符合的<SPAN lang=EN-US>MIC</SPAN>。但是这个找到</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的值可能可以成功握手。但不一定能正常通讯。这样的值可能就是一个<SPAN lang=EN-US>MIC</SPAN>的碰撞值。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>他的<SPAN lang=EN-US>MIC&nbsp;</SPAN>是相同的但是<SPAN lang=EN-US>PMK&nbsp;</SPAN>是不同的。所以需要尝试所有<SPAN lang=EN-US>PMK&nbsp;</SPAN>的可能性,而<SPAN lang=EN-US>256&nbsp;</SPAN>位</FONT><SPAN lang=EN-US><BR><FONT size=4>PMK&nbsp;</FONT></SPAN><FONT size=4>的穷举组成的水球直径还是<SPAN lang=EN-US>2.4&nbsp;</SPAN>光年。根据<SPAN lang=EN-US>WPA</SPAN>的密码规范,使用字典攻击法,</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>如此大的密码空间足以让人类计算机的总和望而却步。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.3&nbsp;</FONT></SPAN><FONT size=4>弱密码字典</FONT><SPAN lang=EN-US><BR><FONT size=4>WPA-PSK</FONT></SPAN><FONT size=4>的密码空间用浩瀚来形容一点不为过,所以直接进行字典攻击是傻子的行为。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>但是作为一个密码对字典攻击来说有强密码和弱密码的区别。强密码就是破解希望极其渺茫</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的密码。弱密码是很有希望破解的密码。当然强弱也是个相对概念,他也是依赖于加安全制</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的。银行的密码一般都为<SPAN lang=EN-US>6&nbsp;</SPAN>位。像这样密码空间如此小的密码。普通情况下都为弱密码。但</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>是银行的<SPAN lang=EN-US>ATM&nbsp;</SPAN>一天只让你试三次。三次密码不对锁卡。有这样的机制。<SPAN lang=EN-US>6&nbsp;</SPAN>位的就不再是弱</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>密码了。由弱密码组成的字典叫弱密码字典。当然一般的弱密码有以下几种。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.3.1&nbsp;</FONT></SPAN><FONT size=4>密码空间太小的密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>什么叫密码空间。密码可能字符个数为<SPAN lang=EN-US>n&nbsp;</SPAN>密码的位数为<SPAN lang=EN-US>p&nbsp;</SPAN>那么<SPAN lang=EN-US>n&nbsp;</SPAN>的<SPAN lang=EN-US>p&nbsp;</SPAN>次幂就是密</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>码空间,例如一个<SPAN lang=EN-US>6&nbsp;</SPAN>位数子的的密码他的密码空间<SPAN lang=EN-US>6M</SPAN><SPAN lang=EN-US>=10^6</SPAN>。密码空间的大小也是个相</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>对概念,这个和安全体制有关系的。还有就是尝试密码的速度。在<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>的破解中。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>我们可以无限次的尝试。尝试密码的速度也和设备有关系。<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>分布式破解无疑</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>是用速度来换取同等时间里更大的密码尝试空间。在下面的攻击预算里会对这一部分内</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>容做详细的补充。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.3.2&nbsp;</FONT></SPAN><FONT size=4>社会工程学的弱密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>就是密码中带有一定的社会工程学属性。也就是说密码中带有和个人有关系的信</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>息。这里列出一个<SPAN lang=EN-US>mm</SPAN>做的社会工程学字典方便理解。</FONT><SPAN lang=EN-US><BR><FONT size=4>19602008.txt&nbsp;1960-2008&nbsp;</FONT></SPAN><FONT size=4>年的生日组合</FONT><SPAN lang=EN-US><BR><FONT size=4>mydic.txt&nbsp;</FONT></SPAN><FONT size=4>自己弄的常用字典</FONT><SPAN lang=EN-US><BR><FONT size=4>abc-birth.txt&nbsp;</FONT></SPAN><FONT size=4>任意三字母+所有的生日组合</FONT><FONT size=4><SPAN lang=EN-US>;<BR>shouji10.txt&nbsp;10</SPAN>位的手机号</FONT><SPAN lang=EN-US><BR><FONT size=4>shouji11.txt&nbsp;11&nbsp;</FONT></SPAN><FONT size=4>位的手机号</FONT><SPAN lang=EN-US><BR><FONT size=4>shouji.txt&nbsp;</FONT></SPAN><FONT size=4>上海的手机号</FONT><SPAN lang=EN-US><BR><FONT size=4>8</FONT></SPAN><FONT size=4>-<SPAN lang=EN-US>af16.txt&nbsp;8</SPAN>位的<SPAN lang=EN-US>abcdef</SPAN>和<SPAN lang=EN-US>123456&nbsp;</SPAN>的任意组合</FONT><SPAN lang=EN-US><BR><FONT size=4>8</FONT></SPAN><FONT size=4>-</FONT><FONT size=4><SPAN lang=EN-US>qrafzv.txt&nbsp;qwerasdfz<BR></SPAN>当然你可以看到社会工程学字典中穷举法的影子。<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>破解中一般情况下我</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>们没有办法知道设置密码的人的具体信息。所以<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>破解就没法生成针对性很强</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的社会工程学字典。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.3.3&nbsp;</FONT></SPAN><FONT size=4>有一定联系性规律性弱密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>例子:有人曾破如此一个<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>密码<SPAN lang=EN-US>IX1V7051242</SPAN>。如果你不了解这个密码的</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>背景你肯能会觉得很神奇,这么强的密码也能破。这样的密码是在西班牙的<SPAN lang=EN-US>tele2&nbsp;</SPAN>这样</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>的<SPAN lang=EN-US>AP&nbsp;</SPAN>上有<SPAN lang=EN-US>,</SPAN>而且这样<SPAN lang=EN-US>AP_ESSID&nbsp;</SPAN>里都有<SPAN lang=EN-US>tele2&nbsp;</SPAN>字段。这样的密码后面的<SPAN lang=EN-US>8&nbsp;</SPAN>位是相同的有</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>真正的密码只有四位。四位密码其密码空间很小很容易被字典攻击出来。这个也是</FONT><FONT size=4><SPAN lang=EN-US>AP<BR></SPAN>的默认密码。所以这个密码被破解是因为<SPAN lang=EN-US>AP</SPAN>本身产生的随机密码就是个弱密码。是</FONT><FONT size=4><SPAN lang=EN-US>AP<BR></SPAN>的厂家自己降低了安全性的做法。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.3.4&nbsp;</FONT></SPAN><FONT size=4>暴露过的强密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>密码这个名字就告诉我们他是不能见光的。见光即死。见光的方式很多被<SPAN lang=EN-US>***</SPAN>了,</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>被窃听了等。这里讲个典型点的例子:有些人具备一定的安全知识的。知道要设置一个</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>密码空间很大的强密码如<SPAN lang=EN-US><A href="mailto:acdess!@#$%" target=_blank><SPAN style="COLOR: black; TEXT-DECORATION: none; mso-bidi-font-size: 12.0pt; text-underline: none">acdess!@#$%</SPAN></A></SPAN>,这个密码破之实在不易。但是这个<SPAN lang=EN-US>AP&nbsp;</SPAN>的密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>还是被破解了。原因何在。因为这个人比较懒,他在任何地方都是使用的这个强密码。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>由此他注册了一个论坛。习惯性的输入自己的强密码。但是那个不怀好意的论坛的后台</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>有个密码收集工具。他的密码被收录进字典。用这样的字典破他的<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>不是很容</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>易吗。你是不是这样的人啊?至少我碰到一个就是他的<SPAN lang=EN-US>blog</SPAN>密码和银行卡是一个密码。</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>《剑鱼行动》中那个黑客是如何在一分钟进入国家安全信息网的啊。就是网络上工作着</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>为他收集密码的程序。而他就是通过这样的字典迅速破解的。而这样的字典真正的黑客</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>也是不愿意发布出来的。原因还是那句话密码见光即死。</FONT><SPAN lang=EN-US><BR><FONT size=4>4.4&nbsp;</FONT></SPAN><FONT size=4>强密码</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>看名字你就应该知道破解强密码的希望是十分渺茫的。怎么样的密码算一个强密码,第</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>一肯定不能有上面弱密码的属性。第二是需要足够的密码空间。关于<SPAN lang=EN-US>WPA-PSK&nbsp;</SPAN>中什么</FONT><SPAN lang=EN-US><BR></SPAN><FONT size=4>形式的密码可以被称之为强密码了,在下面的攻击预算里会指出来的。</FONT><SPAN lang=EN-US><BR><BR></SPAN><FONT size=4>转自</FONT><SPAN lang=EN-US><A href="http://www.wlanbbs.com/" target=_blank><SPAN style="TEXT-DECORATION: none; mso-bidi-font-size: 12.0pt; text-underline: none"><FONT size=4>www.wlanbbs.com</FONT></SPAN></A><BR></SPAN><FONT size=4>论坛</FONT><FONT size=4><SPAN lang=EN-US>&nbsp;ID&nbsp;0o90o9&nbsp;QQ3040165<BR></SPAN>梵音天</FONT><SPAN lang=EN-US><BR><FONT size=4>2008</FONT></SPAN><FONT size=4>年<SPAN lang=EN-US>9&nbsp;</SPAN>月<SPAN lang=EN-US>23&nbsp;</SPAN>日<SPAN lang=EN-US> </SPAN></FONT></SPAN></P></TD></TR></TBODY></TABLE></DIV>
页: [1]
查看完整版本: 无线WEP,WPA加密算法