Hmac

為什麼 WPA2-PSK 使用 4 次握手而不是 2 次握手

  • February 10, 2016

我似乎不明白為什麼 WPA2-PSK 中的 PTK 握手是 4 路而不是 2 路。僅僅有這兩個步驟還不夠:

  1. 第一方將 Nonce1 發送給另一方
  2. 第二方使用 KCK 向第一方發送 Nonce2 和 HMAC(Nonce1,Nonce2,其他參數)。

我不明白為什麼第一方必須確認它收到了 nonce 並且它知道共享的秘密。事實上,即使是 HMAC(Nonce1、Nonce2 等)計算也不是非常必要的。或者是嗎?我的意思是即使他們不共享相同的秘密,他們也無法閱讀彼此的消息。當然,通信不會發生,但也沒有資訊洩漏。或者有嗎?

不,兩條消息不足以實現 WPA2-PSK 4WHS 應該做的事情:相互認證的密鑰交換

這裡的關鍵術語是相互認證。請記住,在 WPA2-PSK 握手開始時,我們有兩個實體,接入點和客戶端,持有(希望)相同的密鑰,也稱為成對主密鑰(PMK)。現在他們想通過證明他們都擁有 PMK 來驗證自己。這是 4WHS 的重點(除了建立會話密鑰)。

現在讓我們考慮您的建議: (1) 第一方(假設這是接入點,如 WPA2 中)發送隨機數 $ N_A $ 給另一方(客戶)。(2) 客戶用自己的 nonce 響應 $ N_C $ , 接入點隨機數 $ N_A $ 可能還有其他一些東西,並使用 PMK 在其上計算 HMAC 標籤。(3) 接入點使用 PMK 驗證來自客戶端的響應。此時,雙方能確定什麼?

對於客戶,答案是:**沒有!**請記住,客戶看到的只是一個孤獨的隨機數 $ N_A $ . 這可能是由任何人創建和發送的。因此,客戶端不能保證他實際上是在與正確的接入點通話。

對於接入點,情況稍好一些。由於他收到了他自己創建的隨機數( $ N_A $ ),他可以合理地確定響應的新鮮度(即這不是重放),並且由於 HMAC 標記檢查出,他可以確定客戶端也必須擁有 PMK。(題外話:然而,直接在您的密碼計算中使用長期密鑰(如 PMK)​​是一種不好的形式。通常會派生臨時密鑰來代替使用。這也在 WPA2 中完成)。希望這也能說明為什麼我們需要 HMAC 標籤。它可以讓對方相信它擁有 PMK(當然也可以檢測篡改,但這不是重點)。

更一般地,在基於隨機數的認證協議中,至少需要三個消息才能建立相互認證。對於兩條或更少的消息,您還必須使用時間戳之類的東西來確保相互身份驗證(但是,在實踐中正確地做到這一點並非易事,而且在理論上更難建模,例如:Modeling Time ,或邁向 OTP 和 Kerberos 的基於縮減的安全證明的一步)。為什麼 WPA2 使用 4 條消息而不是 3 條我不確定,但是它類似於 TLS 中的 4WHS,它也使用最後一條消息來“安裝”生成的密鑰。

引用自:https://crypto.stackexchange.com/questions/11956