WPA/WPA2 握手 - 為什麼 Nonce 不加密?
在 WPA/WPA2 握手期間,客戶端和 AP 在交換用於計算最終密鑰的 Nonce 之前計算 256 位預共享主密鑰 (PMK)。假設主機已經有一個共享密鑰(PMK);他們為什麼不使用它來加密 Nonce?攻擊者利用這些隨機數進行字典攻擊——如果隨機數被加密,攻擊似乎會更加困難。
不幸的是,這並不會真正取得多大成就。要了解原因,我們先回顧一下常用字典攻擊WPA/WPA2-PSK的步驟。
在 WPA/WPA2-PSK 中,密鑰層次結構如下所示:
- 密碼- 這是整個協議中的基本秘密,所有其他密鑰最終都由此派生。因此,協議的安全性本質上歸結為該值的保密性。
- PMK = PSK = PBKDF2(密碼、SSID、SSID 長度、4096、256)。
- PTK = PRF( PMK , “成對密鑰擴展”, MAC1 || MAC2 || Nonce1 || Nonce2)。此處使用的確切 PRF 並不重要,但它基於 HMAC-SHA1。
請注意,作為攻擊者,如果您知道密碼,那麼您就擁有了首先導出 PMK 所需的所有資訊(因為進入 PBKDF2 函式的所有其他內容都是公開的),然後是 PTK(因為 MAC 和隨機數)是公開的)。然後,這導致了眾所周知的字典攻擊:猜測密碼,從這個猜測中推導出 PMK 和 PTK,然後在一些擷取的數據上使用 PTK 來驗證您的猜測(例如,通過重新計算其中一個4WHS 的消息認證碼)。如果驗證未通過,請嘗試再次猜測密碼。
現在,根據您的建議,nonce 不會立即清晰可見。然而,這只會稍微改變上述攻擊:攻擊者再次猜測密碼並像以前一樣推導出 PMK。但是,現在它不能立即繼續派生 PTK,因為它沒有隨機數。但這不是問題,因為 nonces 的加密只依賴於 PMK,它現在已經猜到了。因此,使用這個猜測的 PMK,它簡單地解密加密的隨機數,並像以前一樣繼續攻擊,推導出 PTK 並驗證對擷取數據的猜測。如果猜測的密碼正確,那麼攻擊者將獲得所有正確的數據,最終驗證將校驗。而如果猜錯了,最終的驗證肯定會失敗。
因此,攻擊或多或少是相同的,只是增加了一個需要解密隨機數的步驟。此外,此處進行的唯一計算密集型計算是對 PBKDF2 函式的評估。與此相比,額外解密隨機數所需的時間相形見絀。