2023年7月11日发(作者:)
WPAWPA2安全认证加密原理详解1. WPA加密版本介绍WPA加密的的两个版本介绍WPA = 802.1x + EAP + TKIP +MIC= Pre-shared Key + TKIP + MIC802.11i(WPA2)= 802.1x + EAP + AES + CCMP= Pre-shared Key + AES + CCMPl 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)→STATIONSTATION 端使⽤接受到的SSID,AP_MAC(AA)和passphares使⽤同样算法产⽣PSKPSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)3.4.3 第⼆次握⼿STATION 发送⼀个随机数SNonce,STATION_MAC(SA)→APAP端接受到SNonce,STATION_MAC(SA)后产⽣⼀个随机数ANonce然后⽤PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce ⽤以下算法产⽣PTKPTK=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 KEY3.4.4 第三次握⼿AP发送上⾯产⽣的ANonce→STATIONSTATION 端⽤接收到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→APSTATION 端⽤上⾯那个准备好的802.1x 数据帧在最后填充上MIC值和两个字节的0(⼗六进制)让后发送这个数据帧到AP。AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(⼗六进制)这时⽤这个802.1xdata 数据帧,和⽤上⾯AP产⽣的MICKEY 使⽤同样的算法得出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,-4Chopchop,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 个。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689072577a203152.html
评论列表(0条)