一、why EALOP 4-way handshake
為了解決無線傳輸不安全,需要對無線連接配接的接入進行控制,并實作幀傳播的加解密。WPA 4-way handshake有點相當于一個“安全”地協商“交換”秘鑰的過程。這個秘鑰就是PTK(PairwiseTransient Key),成對傳輸秘鑰。
二、WPA 4-way handshake過程
1. 一個簡單的4-way handshake圖
以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位。
參考