共用方式為


WiFiCx WPA3 SoftAP

WPA3 SoftAP 功能可讓裝置使用Wi-Fi保護存取 3 - 同時驗證 Equals (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 支援。 此呼叫會向WiFiCx報告Wi-Fi直接功能。 驅動程式必須在 WIFI_WIFIDIRECT_CAPABILITIES 結構內的 UnicastAlgorithms 清單中,包含驗證和加密組DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP。

支援 WPA2-PSK 和 WPA3-SAE 與 SoftAP 的驅動程式必須報告下列單播演算法組:

  • 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_SAEWDI_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 No No
WPA3-SAE + WPA2-PSK No Yes
WPA3-SAE Yes Yes

如果驅動程序報告SoftAP上的WPA3-SAE功能,OS預期驅動程序支援PMF。 PMF 沒有額外的驅動程式功能。

WPA3 SoftAP 的 SAE 驗證

本節說明 WPA3 SoftAP 案例的 SAE 驗證更新。

哈希到元素 (H2E) 和 Hunt 和 Peck 支援

OS 不會在AP啟動參數中提供使用 H2E 的特定旗標。 因此,驅動程式必須一致地指出它們同時支援SoftAP的H2E和 Hunt 和Peck方法。

反堵塞令牌

OS 可能會藉由要求反堵塞令牌來回應對等認可要求。 OS 會使用下列專案呼叫 OID_WDI_SET_SAE_AUTH_PARAMS

  • 要求類型 WDI_SAE_REQUEST_TYPE_COMMIT_PARAMSWDI_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不支援的群組,則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
  • 要DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP的認可框架 StatusCodeWDI_TLV_SAE_COMMIT_PARAMS WDI_TLV_SAE_STATUS_CODE>)。
  • 拒絕群組的認可框架 FiniteCyclicGroup (WDI_TLV_SAE_COMMIT_PARAMS WDI_TLV_SAE_FINITE_CYCLIC_GROUP>)(不會與 RejectedGroups 字段混淆,其中包含對等拒絕的群組)。

如果 OS 從包含 OS 實際支援的 RejectedGroups 欄位中包含群組的對等接收認可框架,OS 仍然會失敗 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的驗證演算法清單中設定DOT11_AUTH_ALGO_WPA3_SAE,驅動程式會允許裝置傳送 SAE 驗證畫面。 驅動程式會 使用NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示,將SAE驗證參數傳遞至OS。

Windows 會使用 WDI_SAE_COMMIT_PARAMS 和 WDI_SAE_CONFIRM_PARAMS 呼叫 OID_WDI_SET_SAE_AUTH_PARAMS,以完成 SAE 交換。

驅動程式從 OS 收到確認參數並將其傳送至對等之後,即可接受關聯要求,並將它指示給 OS。

高效能SoftAP

針對擴增實境(AR)或虛擬實境(VR)等案例,驅動程式應盡可能優化SoftAP效能,並將它優先於STA連線。 此程式牽涉到在啟動SoftAP時的策略性決策,例如頻帶/通道選擇,以及與STA連線共存。 它也牽涉到優化,同時維持SoftAP。

OS 會指出在OID_WDI_TASK_START_AP工作中,使用新旗標 favorOverSta 需要高效能 SoftAP 的案例。

OS 不會決定驅動程式應如何優化SoftAP連結,而將它基本上留給驅動程式的任意權。 驅動程式可能會降低 STA 連結,以改善 SoftAP 連結。

當 OS 以 favorOverSta 旗標設定起始 SoftAP 時,如果驅動程式增強 SoftAP 連結,則會獲得授權並鼓勵將 STA 連線漫遊至不同的頻帶/通道。

如果 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,它應該檢查是否符合下列條件。

    1. 替代的 BSS 可供 STA 漫遊。
    2. 驅動程式可以在漫遊 STA 鏈接之後,在 OS 要求的頻帶/通道上維持 SoftAP。
    3. 漫遊不太可能失敗。

    如果符合這些條件,驅動程式應該順利完成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_ALLOWEDSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED而失敗OID_WDI_TASK_START_AP工作。

如果無法啟動SoftAP,因為STA是在與要求頻帶/通道不相容的頻帶/通道上運作,而且沒有合理的候選專案可供漫遊,驅動程式應該會因為錯誤碼 STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLESTATUS_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