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

1.  WPA加密版本介绍

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

l  802.1x + EAP,Pre-shared Key是身份校验算法(WEP没有设置有身份验证机制)

l  TKIP和AES是数据传输加密算法(类似于WEP加密的RC4 算法)

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

2.  WPA 认证方式

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

Pre-shared Key (家庭用的,用在安全要求低的地方。不需要服务器)

EAP 扩展认真协议,是一种架构。而不是定义了算法。常见的有LEAP,MD5,TTLS,

TLS,PEAP,SRP,SIM,AKA 其中的TLS 和TTLS 是双向认证模式。这个和网络银行的

安全方式差不多。这个认证方式是不怕网络劫持和字典攻击的。而md5 是单向认证的。不

抗网络劫持,中间人攻击。关于企业级的如何破解就不讨论了。因为论坛上也很少提到。本

身EAP模式是个协议,不是算法。

3.  WPA-PSK

论坛上破解WPA 也主要是集中在这个模式上的。我们都知道破解WPA-PSK 不是和

WEP一样抓很多包就能破解的。关键是要获取握手包,这个握手包叫4way-handshake 四次

握手包。那么我们就从这个四次握手包开始。

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

STATION 端

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

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

3.4.3 第二次握手

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

AP端

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

然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下算法产生PTK

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

MIC Key=PTK前16个字节

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

3.4.4 第三次握手

AP发送上面产生的ANonce→STATION

STATION 端

用接收到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 第四次握手

STATION 发送802.1x data ,MIC→AP

STATION 端

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

AP端

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

5.  MIC的派生过程

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

l  PTK=SHA1_PRF(PMK, Len(PMK),"Pairwise key expansion",MIN(AA,SA) || Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))

l  MIC KEY=提取PTK 的前16 个字节

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

6.  AP和STATION 之间的加密通信

 

(有待补充)

 

7.  WPA安全规则

针对于WEP的安全漏洞WPA 也相应更新了安全规则:

A. 增强至48bit的IV。

B.Sequence Counter,防止IV重复。

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

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

E.MIC (Message IntegrityCode ),信息编码完整性机制。

解说:动态key管理机制

在通讯期间:

如果侦测到MIC错误,将会执行如下程序。

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

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

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

8.   WPA 安全机制作用

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.  针对WPA的破解攻击

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

上面已经明确的指出无论数据传输算法是TKIP还是AES。使用类似于WEP中捕获数据包进行分析破解的方式对于WPA几乎是不可能的。

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

可以说 WPA-PSK 安全体系是十分完善的。但他始终是用一个密码保护的。对于这种用密码保护的安全体系。一般情况下我们都可以用一种叫字典攻击的常规攻击手段。所以针对WPA-PSK 可以进行的直接攻击,目前就只有字典攻击这一种方式。而这种常规的攻击方式将在字典攻击里详细讨论。当然我们WPA-PSK 的设计者也很明确这点,所以在WPA-PSK 的安全体系中加入了潜规则加以对抗。这点将在攻击预算里做详细的讨论。在WPA-PSK 的四次握手包中包含着和密码有联系的信息,依靠这个信息进行字典攻击。

c)  断线攻击

由于 WPA-PSK 是单向认证的。所以可以使用-0 Deautenticate攻击。这样有助于我们获取握手包。在获得握手包时-0 攻击不要太多,否则适得其反的。有些AP几次握手不成就会认为有攻击。禁止客户端和AP的链接30秒。(可能基于WPA EAP TLS 这样双向认证的就不怕断线攻击了)

10. WPA的窃听

WP-PSK 没有密码几乎没法窃听他的通信。在有了密码的情况下WPA 的窃听也不具有WEP 中窃听的随意性。在WPA 中SNonce,ANonce 也很好的起到了加密数据防止窃听的作用,所以作为攻击者我们必须从握手开始窃听。而且会同步更替数据加密密钥。所以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  抗冲突性(collision-resistant)。要寻找两个hash值相同的原值十分困难。

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

c)  HMAC(HASH Message Authentication 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后面添加0来创建一个字长为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 值对应的原值。但我的这么好的想法被HMAC给打破了。

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

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

12.  WPA-PSK 密码规范和可能的密码空间

a)  HEX 模式

64 个的十六进制数字。

b)  ASCII模式

密码至少8位最大不能超过63位。字符要求a~z,A~Z,任意字符包括空格。所以一共可是使用的字符个数为95 个。

你可能感兴趣的:(WPA/WPA2安全认证加密原理详解)