為什麼 WPA-PSK 不使用 Diffie-Hellman 密鑰交換?
有沒有一個原因,為什麼在預共享密鑰模式下,Wi-Fi 會話密鑰不受 Diffie-Hellman 之類的保護,而是從 PSK 密鑰派生而來,並且在登錄期間清楚地交換了一些資訊?
正如 Thomas 在他的評論中指出的那樣,在 WPA-PSK 中,各方已經有一個共享密鑰(預共享密鑰),所以不需要經過 Diffie-Hellman 密鑰交換的步驟——除非你想要完美前向保密 (PFS)(見下文更新)。
在 WPA 中,客戶端和接入點通過稱為“4 次握手”的步驟來驗證對方是否擁有預共享密鑰並為實際(加密/身份驗證)派生會話密鑰用法。此步驟涉及來自雙方的隨機數和一些密碼計算,最終結果是 1)雙方都可以驗證對方是否擁有共同秘密,並且 2)他們都已經導出了他們將使用的共享會話密鑰用於實際加密。
下圖顯示了此過程中的步驟。Supplicant 是客戶端,Authenticator 是接入點。PMK 是共享密鑰。在典型的家庭使用者設置中,PMK 通常來自使用PBKDF的密碼(此密碼是您在連接到無線網路時通常輸入的密碼)。PTK 是他們最終實際用於加密的派生密鑰。
更新
正如評論中提到的,上面實際上並沒有回答為什麼WPA-PSK 不使用 DH。然而,在討論之前,讓我們澄清一下 DH 必須提供什麼而不是目前使用的內容,以及為什麼使用預共享密鑰會削弱其中的一些優勢。我聲稱使用 DH 的一大優勢是,如果提供完美的前向保密 (PFS),而在同一個 WLAN 上“分離”使用者的能力則更值得商榷。
首先,我們需要清楚我們想要——並且能夠——能夠防禦的攻擊類型。
- **局外人,即不知道 PSK 的攻擊者:*如果 PSK 包含足夠的熵(從大密鑰空間完全隨機抽取或從足夠長/複雜的密碼導出)並且PSK 保持安全且永不洩露,則DH 不提供目前解決方案的任何內容。但是,如果 PSK 失去或源自弱密碼,則目前系統完全崩潰。原因是會話密鑰完全來自 PSK,因此任何知道這一點的人都可以解密所有流量。更糟糕的是,由於它不提供 PFS,攻擊者可以返回所有之前的解密*交通也是如此。使用 DH 可以防止這種情況發生。由於實際上大多數家庭 WLAN 使用弱密碼來導出 PSK,因此 DH 確實是一種升級。
- **內部人員,即知道 PSK 的攻擊者:現在考慮攻擊者知道 PSK 的場景。那麼握手能提供什麼?如上所述,對於目前系統,答案是什麼。那麼DH呢?假設在這種情況下,PSK 僅用於驗證 DH 交換(例如使用 MAC),DH 仍將提供針對被動攻擊者的安全性,而對主動攻擊者則沒有。為什麼?在被動情況下,攻擊者必須破壞我們認為難以處理的 DH 交換。另一方面,在主動場景中,攻擊者可以進行經典的中間人攻擊,因為他可以偽造有效的握手消息。因此,在正式安全模型中採用的典型保守方法下,我們會得出結論,DH 提供由於我們總是假設攻擊者處於活動狀態,因此目前方案沒有安全優勢。**然而,在實踐中,進行主動中間人攻擊有時會很棘手。因此,使用 DH 顯著增加了攻擊者的成本和難度。由於它迫使他在握手期間積極參與,這也防止了大規模的被動窺探。
總而言之,使用 DH 將在提供 PFS 的意義上提供巨大的好處。此外,只要攻擊者保持被動,它還可以對內部攻擊提供一定程度的保護。
那麼,為什麼 4WHS 不是為使用 DH 而設計的呢?
完全披露:這只是我的猜測,因為我不知道 IEEE 802.1i 標準的設計決策中的論點。
我猜想在設計 WPA(或更準確地說是 IEEE 802.11 RSNA)的時候,PFS 的價值可能還沒有被完全理解。國安局的爆料事後看來,我們現在當然很容易理解它的重要性,但當時可能還沒有那麼清楚。因此,如果您不需要 PFS,並且您已經擁有可用於您的協議的 PSK,那麼不使用 DH 的一個非常簡單的原因是:效率。對稱原語比公鑰原語高效得多,因此,如果您只使用它就可以逃脫,那麼選擇是顯而易見的。
順便說一下,IEEE 802.11 標準確實支持*基於 DH 的密鑰交換,該密鑰交換建立在名為 Dragonfly 的基於密碼的 AKE 之上。但是,此變體僅在網路處於 ad-hoc 模式時使用。