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 )<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
總結
以上是生活随笔為你收集整理的WPA/WPA2安全认证加密原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux history 历史命令行查
- 下一篇: 802.11协议中的广播与tcp/ip中