2024年2月10日发(作者:)

WPA-PSK详解

WPA/WPA2安全认证加密原理详解

加密版本介绍

WPA加密算法的的两个版本介绍

WPA = 802.1x + EAP + TKIP +MIC

Pre-shared Key + TKIP + MIC

802.11i(WPA2)

802.1x + EAP + AES + CCMP

Pre-shared Key + AES + CCMP

l802.1x + EAP,Pre-shared Key是身份校验算法(WEP没有设置有身份验证机制)lTKIP和AES是数据传输加密算法(类似于WEP加密的RC4算法)

lMIC和CCMP数据完整性编码校验算法(类似于WEP中CRC32算法)

认证方式

802.1x + EAP(工业级的,安全要求高的地方用。需要认证服务器)

Pre-shared Key(家庭用的,用在平安要求低的中央。不需求服务器)

EAP扩展当真协议,是一种架构。而不是定义了算法。常见的有LEAP,MD5,TTLS,TLS,PEAP,SRP,SIM,AKA其中的TLS和TTLS是双向认证模式。这个和网络银行的平安方式差未几。这个认证方式是不怕网络挟制和字典攻击的。而md5是单向认证的。不抗网络挟制,中间人攻击。关于企业级的若何破解就不讨论了。因为论坛上也很少提到。本身EAP模式是个协议,不是算法。

-PSK

论坛上破解WPA也主要是集中在这个模式上的。我们都知道破解WPA-PSK不是和WEP一样抓很多包就可以破解的。关键是要获得握手包,这个握手包叫4way-XXX四次握手包。那末我们就从这个四次握手包入手下手。

4.四次握手

通信进程如下

3.4.1 WPA-PSK初始化事情

使用SSID和passphares使用以下算法产生PSK(预共享密钥)在WPA-PSK中PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)

3.4.2第一次握手

AP广播SSID,AP_MAC(AA)→STATION

XXX端

使用承受到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK

PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)

3.4.3第二次握手

XXX发送一个随机数SNonce,STATION_MAC(SA)→AP

AP端

接受到SNonce,STATION_MAC(SA)后产生一个随机数ANonce

然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce用以下算法产生PTKPTK=SHA1_PRF(PMK,Len(PMK),"Pairwise key n",MIN(AA,SA)||Max(AA,SA) ||

Min(ANonce,SNonce) || Max(ANonce,SNonce))

XXX=PTK前16个字节

提取这个PTK前16个字节组成一个MIC KEY

3.4.4第三次握手

AP发奉上面产生的ANonce→STATION

XXX端

用吸收到ANonce和以前产生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同样的算法产生PTK。提取这个PTK前16个字节构成一个MICKEY使用以下算法产生MIC值用这个MIC KEY和一个802.1x data数据帧使用以下算法取得MIC值

MIC = HMAC_MD5(MIC Key,16,802.1x data)

3.4.5第四次握手

XXX发送802.1x data,MIC→AP

XXX端

用上面那个准备好的802.1x数据帧在最后填充上MIC值和两个字节的(十六进制)让后发送这个数据帧到AP。

AP端

收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上(十六进制)这时用这个802.1xdata数据帧,和用上面AP产生的MIC KEY使用同样的算法得出MIC’。如果MIC’等于XXX发送过来的MIC。那末第四次握手胜利。若不等申明则AP和STATION的密钥不相同,或XXX发过来的数据帧受到过中间人攻击,原数据被篡改过。握手失败了。的派生进程

lPSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)

lPTK=SHA1_PRF(PMK,Len(PMK),"Pairwise key n",MIN(AA,SA) || Max(AA,SA) || Min(ANonce,SNonce) ||

Max(ANonce,SNonce))

XXX=提取PTK的前16个字节

lMIC = HMAC_MD5(MIC Key,16,802.1x data)

和STATION之间的加密通信

EAPOL-KEY包(EAP over LAN key):AP同STA之间通过EAPoL-key报文进行密钥协商。安全规则

针对于WEP的平安毛病XXX也相应更新了平安划定规矩:

A.增强至48bit的IV。

B.Sequence Counter,防止IV反复。

C.Dynamic key management,动态key办理机制。

D.Per-Packet Key加密机制,每个包都使用不同的key加密。

XXX ),信息编码完整性机制。

解说:动态key办理机制

在通信时代:

如果侦测到MIC错误,将会执行如下步伐。

记实并登录MIC错误,60秒內发生两次MIC错误。

反制措施会立即停止所有的TKIP通讯。

然后更新数据加密的用的XXX。

平安机制造用

a.加密通信流程图、Per-PacketKey加密机制、动态key管理机制使得使用类似于WEP中分析子密码攻击的方案,在WPA中将变得异常困难,和不可实现。

b.身份考证机制杜绝了-1fakeauth count attack mode,建立伪连的攻击。

c.增强至48bit的IV、防止IV反复、MIC信息编码完全性机制。使得要假造一个正当数据包变得异常的艰巨。同时也致使-2 Interactive,-4 Chopchop,5 Fragment此类攻击对于WPA无效。

解说:

a.虽然TKIP使用的是和WEP一样的加密算法RC4,可是TKIP中使用Per-Packet Key加密机制共同RC4.这样补偿了RC4加密算法的不足。抵抗基于RC4毛病的攻击。WPA2中的AES比TKIP有更高的平安性,对他的破解难度就更高了。

b.使用非线性的MIC信息编码完整性算法,取代线性的CRC-32.增加了攻击者伪造合法数据的难度。

9.针对XXX的破解攻击

a)抓取数据传输包进行破解

上面已经明白的指出不管数据传输算法是TKIP照旧AES。使用类似于WEP中捕获数据包进行阐发破解的方式对于WPA简直是不可能的。

b)抓取XXX-PSK的四次握手包进行破解

能够说XXX-PSK安部分系是非常美满的。但他始终是用一个密码保护的。对于这种用密码保护的XXX分系。一般情况下我们都能够用一种叫字典攻击的常规攻击手段。所以针对XXX-PSK能够进行的直接攻击,现在就只有字典攻击这一种方式。而这种常规的攻击方式将在字典攻击里详细讨论。固然我们WPA-PSK的设计者也很明白这点,所以在WPA-PSK的安部分系中插手了潜划定规矩加以对抗。这点将在攻击预算里做详细的讨论。在WPA-PSK的四次握手包中包罗着和密码有联系的信息,依靠这个信息进行字典攻击。

c)断线攻击

由于WPA-PSK是单向认证的。所以可以使用-0 XXX攻击。这样有助于我们获取握手包。在获得握手包时-0攻击不

要太多,否则适得其反的。有些AP几次握手不成就会认为有攻击。禁止客户端和AP的链接30秒。(可能基于WPA EAP

TLS这样双向认证的就不怕断线攻击了)

的窃听

WP-PSK没有密码几乎没法窃听他的通信。在有了密码的情况下XXX的窃听也不具有WEP中窃听的随意性。在WPA中SNonce,XXX也很好的起到了加密数据防止窃听的作用,所以作为攻击者我们必须从握手开始窃听。而且会同步更替数据加密密钥。所以WPA-PSK的安全性都依赖于密码。

11.字典攻击

a)寻找可以攻击的信息元素

字典攻击作为一种常用的攻击手段要明白的是从那里入手下手攻击。要寻找和密码有有联系的信息元素。在WPA中和密码有联系的信息稀有据的传送包和四次握手包。由于无法知道明文,和WPA的数据加密算法的庞大性。在数据传输包上要找到能够攻击的信息元素根本上很难实现。所以只能在握手包里寻找有密码有联系的信息。在上面的四次握手包的图片中很分明的表明,在四川握手中主要通报的有如下数据:SSID,AP_MAC,STATION_MAC,SNonce,ANonce,802.1xdata,MIC。前面6个元素很分明,一般不会和密码有联系的。只有

最后一个MIC和密码有所联系。通过MIC的派生图我们知道,MIC是通过上面六个信息元素和密码通过三个主要的算法派生出来的。那末我们是否是只需找到这三个算法的逆反算法就可以够根据上面的7

个信息元素把密码计较出来了呢。的的确这样。可是这三个算法有一个共同的名字叫HASH函数。

b)。HASH函数

HASH函数是不可能从出产的散列值来唯一的确定输入值。

l单向性(one-way)。HASH函数是没有反函数的。

l抗冲突性(n-resistant)。要寻找两个hash值相同的原值十分困难。

l映射分布均匀性和差分分布均匀性。不像普通函数那样数值分布有一定规律。

c)。HMAC(HASH Message n Code)哈希消息校验算法

pdkdf2_SHA1,SHA1_PRF,HMAC_MD5是HMAC算法。不是HASH函数。HMAC算法就是用一个密码,和一个消息。最后生成一个HASH值。由上面的介绍,我们可以看出,HMAC算法更象是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的HASH算法。所以上面对HASH的攻击,对于HMAC是没有效果的。HMAC特别是象“挑战/

响应”身份认证应用中,由于攻击者无法事先获得HMAC的计算结果,对系统的攻击只能使用穷举或“生日攻击”的方法,但计算量巨大,基本不可行。所以,在目前的计算能力下,可以认为HMAC算法在“挑战/响应”身份认证应用中是安全的。

HMAC算法

定义

定义HMAC需求一个加密用散列函数(表示为H,能够是MD5大概SHA-1)和一个密钥K。我们用B来表示数据块的字节数。(以上所提到的散列函数的支解数据块字长B=64),用L来表示散列函数的输出数据字节数(MD5中L=16,SHA-1中L=20)。辨别密钥的长度能够是小于等于数据块字长的任何正整数值。应用步伐中使用的密钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。一般情况下,推荐的最小密钥K长度是L个字节。我们将定义两个固定且分歧的字符串ipad,opad:(‘i','o'标志内部与外部)

ipad = the byte 0x36重复B次

opad = the byte 0x5C重复B次.

计算‘text'的HMAC:

HMAC=H( K XOR opad。H(K XOR ipad。text))

即为以下步骤:

1)在密钥K后面添加来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节0x00)

2)将上一步生成的B字长的字符串与ipad做异或运算。

3)将数据流text填充至第二步的成效字符串中。

4)用H作用于第三步生成的数据流。

5)将第一步生成的B字长字符串与opad做异或运算。

6)再将第四步的结果填充进第五步的结果中。

7)用H作用于第六步生成的数据流,输出最终结果

d)四次握手包

有上面的HMAC的特性我们也不难得出SSID,AP_MAC,STATION_MAC,SNonce,ANonce,802.1x data,这些信息元素都是上面的HMAC算法里的消息。HMAC算法里的密码在pdkdf2_SHA1算法里是WPA的密码,在SHA1_PRF算法里是PMK,在HMAC_MD5算法里是PTK。最后才得出MIC值。由于这些消息和这个MIC值都有关联性。所以四次握手吧的后面三次是缺一不可的。而且是有时效性的。不能把不是同一次的握手包拼起来使用的。当然第一次握手包的SSID和

AP-MAC是可以后获取的。这里你也明白了四次握手中根本是不是在传递一个简单的HASH

值。而是要通报一个HMAC值。如果是通报一个简单的HASH值,那末我们只需获得后重播这个值就可以够欺骗AP取得认证了。都不要知道这个HASH值对应的原值。但我的这么好的设法主意被XXX给突破了。

e)面向于四次握手包的字典攻击。

字典攻击,就是把密码的可能性罗列起来组成一个密码字典。然后把字典里的密码和SSID,AP_MAC,STATION_MAC,SNonce,ANonce,802.1x data,这些信息元素。通过pdkdf2_SHA1,SHA1_PRF,HMAC_MD5这些算法最后生成MIC’(具体过程看上面MIC派生图)。当在字典里找到一个密码他的MIC’等于握手包中的MIC。这时字典破解成功。这就是我们要的那个密码。如果把字典里的所有密码都找遍了还有没有符合上述条件的。那么破解失败。-PSK密码规范和可能的密码空间

a)。HEX模式

64个的十六进制数字。

b)。ASCII模式