WPA 4-way handshake
dlmu2001
tomorrow_cyz@163.com
一、why EALOP 4-way handshake
為了解決無線傳輸不安全,需要對無線連接的接入進行控制,並實現幀傳播的加解密。
WPA 4-way handshake有點相當於一個“安全”地協商“交換”秘鑰的過程。
這個秘鑰就是PTK(PairwiseTransient Key),成對傳輸秘鑰。
二、WPA 4-way handshake過程
1. 一個簡單的4-way handshake圖
圖1 4-wayshake overview
以WPA/WPA2-PSK為例,AP/STA在4-wayshake前各自都知道密碼(也就是用戶連接某SSID輸入的密碼)
1)AP(Authenticator)在1/4的時候把自己的隨機數(ANonce)傳給STA,STA在收到ANonce后,已經可以生成PTK
2)2/4的時候把自己的隨機數(SNonce)傳給AP,同時加了MIC(對應於PTK中的KCK,也就是秘鑰確認秘鑰)。AP收到SNonce以后,就可以生成PTK了,將收到的MIC和自己生成的MIC比較進行完整性校驗,如果校驗失敗,握手失敗。校驗成功,AP生成PTK和GTK(GroupTransient Key,用來加密組播和廣播)
3)3/4中將GTK和MIC一起發給STA,因為此時雙方都已經知道PTK,所以會對
GTK進行KEK加密。
4)STA發送ACK進行確認
4次握手完成以后,之后的幀傳播就都會以加密的方式進行。
2 . 4-way shake在AP/STA通訊中的位置
1) open方式下的connect
圖2 open方式的connect過程
a. Open System AuthencicationProcess ,就好比把網線插入AP的有線口
b. Association:完成802.11layer-2的negotiation,建鏈,成功后AP會分配給STA一個AssociationID
c. 開始真正的數據傳輸
2) wpa/wpa2-psk方式下的connect
圖3wpa/wpa2-psk方式下的connect
a.Authenciation,同上
b. Association,同上
c EAPOL 4-way shake
d.真正的數據傳輸
3)wpa/wpa2-eap方式下的connect
圖4wpa/wpa2-eap方式下的connect
在2)的基礎上,wpa/wpa2-eap有個802.1x的auth過程,用於在認證服務器上認證,以獲取MSK
三、具體
1. PTK的生成
生成PTK,需要5個必要元素,PMK,ANonce(Nonce 1,AP生成的隨機數),SNonce(Nonce2,STA生成的隨機數),AuthenticateMAC(MAC1,如AP的MAC),SupplicantMAC(MAC2,如STA的MAC)。
圖5 PTK的生成
圖的四個輸出里面,DataEncr和DataMIC合起來就是前面提到的TK,EAPOLEncr/MIC分別對應KEK和KCK。
2. PTK的組成
圖4的輸出就是PTK的組成。主要產生兩種秘鑰,一種在EAPOL4-way shake的時候用,一種在數據傳輸的時候用。每種又分成加密用和計算完整性用。PTK共64位,具體可以分成如下4個部分
1) EAPOLKCK(key confirmation key),16位,對應於圖5中的EAPOLMIC,以及圖1中的MIC,用來在EAPOL4-way shake時校驗完整性
2) EAPOLKEK(key encryption key),16位,對應於圖5中的EAPOLEncr,用於在EAPOL4-way shake的3/4的時候來加密GTK等數據
3) TK(TemporaryKey),16位,對應於圖5中的DataEncr,用於加密單播數據
4) Data Mic,16位,對應於圖5中的DataMIC,具體又可分為8位的Tx key和8位的Rx key,用於數據傳輸的時候TKIP方式的Michael完整性校驗。CCMP不用。
3. PMK的生成
PMK,PairwiseMaster Key
在WPA-PSK中,PMK=pdkdf2_SHA1(passphrase,SSID, SSID length, 4096)
而在802.1x+EAP中,PMK=L(MSK,0,256)
其中MSK(Mastersession key)由802.1x交換獲得
在4-wayhandshake前,AP/STA已經知道了PMK。
4. GTK
GTK,GroupTransient Key,用於對組播和廣播加解密
在圖5中,AP在3/4的時候會生成GTK,傳給STA
GTK由GMK(Groupmaster key)和成對秘鑰擴展獲得
GTK=PRF-X(GMK,”Group key expanision”,AA|GN)
其中GN是Authenticator生成的Nonce,AA是Authenticator的MAC
GMK=MMK?
GTK只包含數據傳輸部分的Key,也就是GroupEncryption Key(加解密)和Michael Authenticator MIC Key(完整性校驗),沒有包含EAP-Key部分,所以只有32位。
參考
1. https://en.wikipedia.org/wiki/IEEE_802.11i-2004
3. http://blog.csdn.net/kyokowl/article/details/8500557