[Wi-Fi] 4-way handshake 802.11i Security

STA 成功與AP關聯上後,接著就是4-way handshake了

4-way handshake (802.11i)

4-way handshake是AP(authenticator)和STA(supplicant)之間交換 4 條消息以生成一些加密密鑰的過程,這些密鑰可用於加密透過Wireless medium發送的實際數據。 這些透過 4 次握手生成的密鑰是由一些將在後面討論的Source密鑰材料生成的。 如果您不想對 4 次握手中使用的術語感到困惑,讓我們看看我們可能會遇到哪些術語來理解 4 次握手。

密鑰生成從上到下生成圖 https://www.wifi-professionals.com/wp-content/uploads/2019/01/Hierarchy-768x489.png

  • MSK (Master Session Key)

Master Session Key是從 802.1X/EAP生成或從 PSK 身份驗證派生的第一個密鑰。 MSK 生成的二級密鑰是 PMK 和 GMK。

PMK用於生成PTK,GMK用於創建GTK,屬於第三級密鑰是用於數據加密的實際密鑰。

  • PMK (Pairwise Master Key)

由MSK 生成的二級密鑰

Pairwise master key 是由MSK所生成的。 在 WPA2/PSK 的情況下,當STA透過AP進行身份驗證時,PSK 變為 PMK。

Point to Remember: PMK 駐留在所有STA以及AP上,因此在加密的過程中不需要共享此資訊。 我們使用這些訊息來建立用於unicast traffic加密的 PTK。

  • GMK (Group Master Key)

在4-way handshake中使用GMK來建立 GTK。 GTK 在每個AP上生成並與連接到此 AP 的STA共享。

  • PTK (Pairwise Transit Key)

Pairwise transit key用於加密客戶端STA和AP之間的所有unicast traffic。 PTK 在STA和AP之間是獨一無二的。 要生成 PTK,STA和AP需要使用以下式子:

PTK = PRF (PMK + Anonce + SNonce + Mac (AA)+ Mac (SA))

Anonce 是由AP(authenticator)生成的隨機數,Snonce 是由STA(supplicant)生成的隨機數。STA(supplicant)的 MAC 地址和AP(authenticator)的 MAC 地址。 PRF 是一個偽隨機函數,適用於所有輸入。

  • GTK (Group Temporal Key)

Group temporal key用於AP和多個STA之間的所有broadcast和multicast的加密。每個AP,將有一組不同的GTK 將在與其AP連結的STA之間共享。

實際的加密過程

一旦我們了解了重要的密鑰以及它們是如何生成的,現在讓我們來看看實際的 4-way handshake。 想像一下,一個AP配置了 WPA2/PSK,並且STA正在嘗試連接到它。 在我們的範例中,它的 SSID為PRINTERS 密碼為 printer123。

使用者點擊PRINTERS,很快進行了從身份驗證到關聯(Wi-Fi Connect)再到安全驗證。 這是 4-way handshake發生的地方,不是將密碼發送到AP,而是使用 EAPOL(Extensible authentication protocol over LAN)來進行消息的交換。



4-way handshake flow

STA 狀態:

STA經歷從身份驗證到關聯的狀態。 一旦STA通過身份驗證和關聯,現在將檢查安全性,並開始 4 次握手。

4-way handshake Wireshark view:

Message1:AP向STA發送帶有 Anonce(隨機數)的 EAPOL 訊息以生成 PTK。 不要忘記客戶端設備知道 AP 的 MAC,因為它已連接到它。 它有 PMK、Snonce 和自己的 MAC 地址。 一旦它從接入點接收到 Anonce,它就會擁有創建 PTK 的所有輸入。

PTK = PRF (PMK + Anonce + SNonce + Mac (AA)+ Mac (SA))

(Anonce from AP to the device)

Message2:一旦STA創建了它的 PTK,它就會發出 SNonce,接入點也需要它來生成 PTK。 設備使用 MIC(Message Integrity Check)向 AP 發送第二筆的EAPOL,以確保AP可以驗證此消息是否已損壞或修改。 一旦 AP 接收到 SNonce,它也可以生成 PTK 以及用於單播流量(unicast traffic)加密。

這是從客戶端設備到 AP 的第二條消息,Snonce 和 MIC 字段設置為 1。

(Message 2)

Message3: EAPOL message3 從AP 發送到包含GTK 的客戶端設備。 AP 在 GMK 客戶不參與的情況下創建 GTK。

(Message 3)

Message4: Fourth and last EPOL message 將從客戶端發送到 AP,以確認密鑰已安裝。

4-way handshake Result:

Control port unlocked:一旦 4 次握手成功完成,阻止所有流量的虛擬控制端口將打開,現在加密的流量可以流動。 現在,所有單播流量都將使用 PTK 進行加密,所有多播流量都將通過在 4 次握手過程中創建的 GTK 進行加密。

 Summary:

讓我們總結一下我們上面討論的所有內容。 我已經廣播了 PRINTERS SSID 並嘗試連接到它。 AP 正在發送Beacon SSID,當我點擊 PRINTERS SSID 進行連接時,我們可以看到帶有ACK的完整對話。

設備正在請求連接到PRINTERS,而AP正在以probe response進行回覆。 現在STA經歷從未經身份驗證和未關聯到經過身份驗證和關聯的狀態。

一旦通過身份驗證和關聯,它就會通過安全檢查並發生 4 次握手,在成功 4 次握手後,現在控制端口將開放進行流量的傳輸。

(Full conversation from association to complete 4-way handshake)

 

Reference

  1. 4-way-handshake
  2. Wiki- WPA
  3. https://mrncciew.com/2014/08/16/decrypt-wpa2-psk-using-wireshark/

 

發佈留言