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 )<Michael>,信息编码完整性机制。
解说:动态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 个。
————————————————
版权声明:本文为CSDN博主「B08514」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/B08514/article/details/17553439