Wifi 4 way handshake 四次握手


參考鏈接

https://www.wifi-professionals.com/2019/01/4-way-handshake

https://kysonlok.gitbook.io/blog/wireless/4_way_handshake

KEY介紹

鏈路層加密協議使用了兩種密鑰。

成對密鑰(pairwise key)用來保護工作站與AP之間的往來數據。

組密鑰(group key)用來保護AP至所關聯工作站之間的廣播或組播數據。

PSK使用SSID和passphares作為入參,通過哈希算法產生。在WPA-PSK 中PSK=PMK=pdkdf2_SHA1(passphrase, SSID, SSID length, 4096)

PTK (Pairwise Transit Key)
PTK 用來加密 AP 和 Station 通訊的單播數據包,AP 與每個 Station 通訊用的 PTK 都是唯一的。我們來看一下生成 PTK 的函數,參數是生成 PTK 需要的信息:
PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac(SA))
PRF是 pseudo-random function 的縮寫,表示偽隨機函數,PMK、ANonce、SNonce、Mac(AA) 和Mac(SA) 作為它的輸入參數;
PMK 下面會談到;
ANonce是 AP 生成的隨機數,A 表示 authenticator;
SNonce 是 Station 生成的隨機數,S 表示 supplicant;
Mac(AA) 是 AP 的 Mac 地址;
Mac(SA) 是 Station 的 Mac 地址;
由此可知,生成 PTK 依賴 PMK。
GTK (Group Temporal Key)
GTK 用來加密 AP 和 Station 通訊的多播/廣播數據包,連接該 AP 的所有 Station 共享一個 GTK。生成 GTK 的公式:
GTK = PRF(GMK + ANonce + Mac(AA))
與 PTK 不同的是沒有 SNonce 和 Mac(SA),GTK 也依賴 GMK。
PMK (Pairwise Master Key)
PMK 是由 MSK 生成,WPA2/PSK 的情況下,當 supplicant 和 authenticator 身份驗證后,PSK 變成 PMK。PMK 會駐留在 AP 和所有 Station,不需要進行 key 交換,用它來生成用於加密單播數據的PTK。
GMK (Group Master Key)
GMK 用在四次握手來生成 GTK,GTK 在 AP 端由 MSK 生成,所有連接到該 AP 的 Station 共享。
MSK (Master Session Key)
由 802.1X/EAP 或 PSK 身份認證后生成的第一個密鑰。
MIC(Message Integrity Check)
消息完整性校驗,針對一組需要保護的數據計算出的散列值,用來防止數據遭篡改。

Key分層

四次握手過程

無線 WiFi 的四次握手就是 key exchange 的過程,上面我們已經了解了相關的 key,現在我們就可以具體分析一下四次握手的過程。
假設 AP 用的是 WPA2/PSK 加密方式,SSID 為 Test,用一台電腦連接它。整個過程分為身份認證(authentication)、關聯(association)和安全驗證(security validation)。四次握手不是直接將密碼發送到 AP,而是通過 EAPOL(Extensible authentication protocol over LAN)進行消息交換。

先是身份認證(authentication),身份認證階段不需要考慮安全問題,因為在這個階段只是 AP 要確認 Station 是不是 802.11 設備,確認彼此可以正常通訊。
接着是關聯(association),Station 與 AP 關聯以便獲得網絡的完全訪問權,關聯成功后,Station 會收到AP的響應,包含了成功的狀態碼和關聯標識符。

4-Way Handshake Message 1

由 AP 發起四次握手,AP 發送一條包含 ANonce 的消息到 Station,Station 用它生成 PTK,前面已經提到生成 PTK 的公式:PTK = PRF (PMK + ANonce + SNonce + Mac (AA)+ Mac (SA)),由於在 4 次握手之前已經經歷了認證和關聯的階段,因此 Station 是知道 AP 的 Mac 地址,所以只需要 ANonce就可以生成 PTK 了。

4-Way Handshake Message 2

一旦 Station 創建了自己的 PTK,它會立即響應一條 EAPOL 消息給 AP,包含了 SNonce 和 MIC。AP 用 SNonce 生成自己的 PTK,MIC 是用來校驗 Station 發來的消息的完整性,除了 1/4,從 2/4 報文開始,后面的每個報文都會有 MIC。AP 收到 SNonce 之后,生成的 PTK 就可以用來加密后面兩次握手的 key 了。

4-Way Handshake Message 3

這次握手主要是把 GTK 發送給 Station,並且告知 Station 安裝 PTK 和 GTK。由於第二次握手生成了 PTK,可以用來加密數據了,所以這里對 GTK 進行了加密。

4-Way Handshake Message 4

第四次是最后一條 EAPOL 消息,相當於一個確認包,告訴 AP PTK 已經安裝好,AP 收到該消息后,也安裝 PTK。安裝的意思是指使用 PTK 和 GTP 來對數據進行加密。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM