WiFiCx WPA3 SoftAP
WPA3 SoftAP 功能可讓裝置使用 Wi-Fi 受保護存取 3 - 同時認證等同體(WPA3-SAE)安全性通訊協定,來設定軟體存取點(SoftAP)。 此 SoftAP 可在 2.4 GHz 或 5 GHz 頻帶上運作。 從 WDI 2.0.11 版和 WiFiCx 1.1 版開始,您可以在 WiFiCx 用戶端驅動程式中整合 WPA3 SoftAP 功能。
WPA3 SoftAP 支援 WPA3-SAE 和 WPA3-SAE 轉換模式,以提供回溯相容性。 轉換模式同時容納 WPA2-PSK 和 WPA3-SAE 驗證方法,確保各種裝置和環境之間的安全 Wi-Fi 連線。
WPA3 SoftAP 僅適用於WiFiCx驅動程式模型。 本文說明如何在WiFiCx驅動程式中新增WPA3 SoftAP的支援。
WPA3 SoftAP 功能偵測
當客戶端驅動程式呼叫 WifiDeviceSetWiFiDirectCapabilities 時,表示支援 WPA3 SoftAP。 此呼叫會報告 Wi-Fi 的直接能力給 WiFiCx。 驅動程式必須在 WIFI_WIFIDIRECT_CAPABILITIES 結構中的 UnicastAlgorithms 列表內,包含驗證和加密配對 DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP。
使用 SoftAP 同時支援 WPA2-PSK 和 WPA3-SAE 的驅動程式必須報告下列單播演算法群組:
- DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP
- DOT11_AUTH_ALGO_RSNA_PSK + DOT11_CIPHER_ALGO_CCMP
列出這些配對即向WiFiCx發出信號,表示驅動程式在WPA3過渡模式下支援SoftAP功能。
AP 啟動參數
Windows 會修改 OID_WDI_TASK_START_AP 工作,如下所示:
- 如果驅動程式指出 WPA3 SoftAP 支援,則 WDI_TLV_AUTH_ALGO_LIST TLV 可能包含 WDI_AUTH_ALGO_WPA3_SAE。
- WDI_TLV_AUTH_ALGO_LIST TLV 可能包含 WDI_AUTH_ALGO_WPA3_SAE 與 WDI_AUTH_ALGO_RSNA_PSK。 在此情況下,驅動程式必須透過指標和探查回應公告對安全性通訊協議的支援,而且必須使用 WPA2-PSK 或 WPA3-SAE 來允許客戶端驗證。
AKM 支援
AKM 0xac0f08 (RSNA_AKM_SAE_PMK256) 是唯一支援 WPA3 SoftAP 的 AKM。 驅動程式不得聲明支援其他 AKM。
受保護的管理框架 (PMF) 功能偵測
OS 不會在 AP 啟動參數中提供 PMF 的特定旗標。 驅動程序必須公告 PMF 功能,如下所示:
驗證演算法存在 | PMF 是必需的 | 具有PMF功能 |
---|---|---|
WPA2-PSK | 不 | 不 |
WPA3-SAE + WPA2-PSK | 不 | 是的 |
WPA3-SAE | 是的 | 是的 |
如果驅動程序回報 SoftAP 上 WPA3-SAE 的功能,OS 預期驅動程式支援 PMF。 PMF 沒有額外的驅動程式功能。
WPA3 SoftAP 的 SAE 驗證
本節說明 WPA3 SoftAP 案例的 SAE 驗證更新。
哈希到元素 (H2E) 和 Hunt 和 Peck 支援
OS 在 AP 启动参数中不会提供仅用于使用 H2E 的特定标志。 因此,驅動程式必須一致地指出它們同時支援 SoftAP 的 H2E 和“搜尋與拾取”方法。
反堵塞令牌
OS 可能會藉由要求反堵塞令牌來回應對等認可要求。 OS 會使用下列項目呼叫 OID_WDI_SET_SAE_AUTH_PARAMS:
- 要求類型 WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS 或 WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS_H2E(如果使用 H2E)。
- 認可框架 StatusCode (WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_STATUS_CODE) 設定為 DOT11_FRAME_STATUS_ANTI_CLOGGING_TOKEN_REQUIRED。
對等節點提供反阻塞令牌作為認可參數的一部分。
在 SoftAP 場景中,當提交參數中包含反堵塞令牌時,不會生成 Scalar/Element 數值。 因此,這些欄位在WDI_TLV_SAE_COMMIT_PARAMS TLV 中是選擇性的,驅動程式應該先檢查其是否存在,再存取它們。 這項變更仍與現有的驅動程式相容。 新的驅動程式應該驗證所有路徑中這些選擇性欄位是否存在。
拒絕的群組
OS 僅支援群組 19。 如果 OS 收到來自一個對等端的提交框架,表明不支援的群組,則 OS 會傳送 OID_WDI_SET_SAE_AUTH_PARAMS 命令。 在命令中,OS 會設定:
- WDI_SAE_REQUEST_TYPE 轉為 WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS 或 WDI_SAE_REQUEST_TYPE_COMMIT_H2E_PARAMS(如果使用 H2E)。
- SaeStatusWDI_SAE_STATUS_COMMIT_MESSAGE_UNSUPPORTED_FINITE_GROUP。
- 認可框架 StatusCode(WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_STATUS_CODE)到 DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP。
- 將提交框架 FiniteCyclicGroup(WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_FINITE_CYCLIC_GROUP)分配給被拒絕的群組(這與 RejectedGroups 欄位不同,該欄位包含對等拒絕的群組)。
如果作業系統收到來自對等方的提交框架,其中包括在 RejectedGroups 字段內包含作業系統實際支援的群組,則作業系統仍然會失敗於 SAE 驗證。 OS 會傳送命令 OID_WDI_SET_SAE_AUTH_PARAMS,包含下列參數:
- WDI_SAE_REQUEST_TYPE 設定為 WDI_SAE_REQUEST_TYPE_FAILURE。
- SaeStatus 設定為 WDI_SAE_STATUS_COMMIT_MESSAGE_INVALID_REJECTED_GROUP。
SAE 驗證順序
呼叫 OID_WDI_TASK_START_AP 工作之後,如果 DOT11_AUTH_ALGO_WPA3_SAE 是在 OID_WDI_TASK_START_AP 的驗證演算法清單中設定,驅動程式會允許裝置傳送 SAE 驗證畫面。 驅動程式會使用 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示,將 SAE 驗證參數傳遞至作業系統。
Windows 會呼叫 OID_WDI_SET_SAE_AUTH_PARAMS,並使用 WDI_SAE_COMMIT_PARAMS 和 WDI_SAE_CONFIRM_PARAMS 以完成 SAE 交換。
驅動程式從 OS 收到確認參數並將其傳送至對等之後,即可接受關聯要求,並將它指示給 OS。
高效能SoftAP
針對擴增實境(AR)或虛擬實境(VR)等案例,驅動程式應盡可能優化SoftAP效能,並將它優先於STA連線。 此程式牽涉到在啟動SoftAP時的策略性決策,例如頻帶/通道選擇,以及與STA連線共存。 它也涉及在維持SoftAP的同時進行優化。
在 OID_WDI_TASK_START_AP 工作中,OS 表示在使用新旗標 favorOverSta的情況下,需要高效能 SoftAP 的案例。
OS 不會決定驅動程式應如何優化SoftAP連結,而將它基本上留給驅動程式的任意權。 驅動程式可能會降低 STA 連結,以改善 SoftAP 連結。
當作業系統使用設定 favorOverSta 旗標來起始 SoftAP 時,如果漫遊 STA 連線至不同的頻帶/通道可以增強 SoftAP 連結,則驅動程式會獲得授權和鼓勵這麼做。
如果 OS 要求的頻帶 / 通道參數與目前的 STA 連線衝突,驅動程式應該考慮漫遊 STA 連線是否會讓它能夠使用要求的參數啟動 SoftAP。
當 SoftAP 以 favorOverSta 旗標啟動時,OS 可能會傳送 OID_WDI_SET_CONNECTION_QUALITY 工作,以要求 SoftAP 連接上的優化效能。 驅動程式應該履行這項任務,但也應該努力提升SoftAP連結,即使沒有透過OID_WDI_SET_CONNECTION_QUALITY任務收到具體需求。
漫遊 STA 埠時的預期行為
OS 要求「任何」頻帶/通道:
驅動程式應該在最佳頻帶/通道上啟動SoftAP,並考慮目前的組態和STA連線。 通常,最佳頻帶/通道是 STA 連結所使用的通道。 驅動程式應該會順利完成 OID_WDI_TASK_START_AP 工作。
如果移動 STA 可能會改善 SoftAP 鏈接,驅動程式可以使用 NDIS_STATUS_WDI_INDICATION_ROAMING_NEEDED將漫遊要求傳送至 OS。 漫遊成功時,驅動程式可以將SoftAP連結移至可優化效能的新頻帶/通道。
OS 會要求特定的頻帶/通道:
如果驅動程式可以在 OS 要求的頻帶/通道上維持 SoftAP 且具有合理效能,它應該會順利完成OID_WDI_TASK_START_AP工作。
如果驅動程式目前無法在要求的頻帶/通道上維持SoftAP,它應該檢查是否符合下列條件。
- 替代的 BSS 可供 STA 漫遊。
- 驅動程式可以在漫遊 STA 鏈接之後,在 OS 要求的頻帶/通道上維持 SoftAP。
- 漫遊不太可能失敗。
如果符合這些條件,驅動程式應該順利完成 OID_WDI_TASK_START_AP,並傳送漫遊請求以切换 STA 連線。
否則,驅動程式應該會失敗OID_WDI_TASK_START_AP工作,並顯示相關的錯誤碼。
驅動程式完成OID_WDI_TASK_START_AP工作之後,可以傳送漫遊要求來移動STA連線,以維護或增強SoftAP效能。
如果漫遊失敗,且驅動程式無法在不移動 STA 連線的情況下維持 SoftAP,則驅動程式應該停止 SoftAP。 驅動程式會傳送 NDIS_STATUS_WDI_INDICATION_STOP_AP 與相關原因代碼來通知作業系統(通常是 WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE)。
當 SoftAP 停止時,使用者可能會注意到「閃爍」效果,其中 SoftAP 會啟動,然後幾乎立即停止。 應盡可能避免這種行為。 如果驅動程式需要進行漫遊以維持SoftAP,那麼驅動程式應在完成OID_WDI_TASK_START_AP任務之前,確信漫遊能夠成功。
SoftAP 錯誤碼
如果無法啟動SoftAP,因為頻帶/通道因法規原因不允許,驅動程式應該會因為錯誤碼 STATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED 或 STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED而失敗OID_WDI_TASK_START_AP工作。
如果無法啟動SoftAP,因為STA是在與要求頻帶/通道不相容的頻帶/通道上運作,而且沒有合理的候選專案可供漫遊,驅動程式應該會因為錯誤碼 STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE 或 STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE而使OID_WDI_TASK_START_AP工作失敗。
如果基於其他原因而無法啟動 SoftAP(不支援的頻帶/通道、泛型驅動程式問題等),驅動程式應該使用泛型錯誤碼,例如 STATUS_NOT_SUPPORTED。
如果無法維持 SoftAP,因為必須漫遊 STA 連線,但漫遊失敗,驅動程式應停止 SoftAP,原因代碼 WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE。