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 的支持。 此调用会向 WiFiCx 报告 Wi-Fi 直接功能。 驱动程序必须在 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_SAEWDI_AUTH_ALGO_RSNA_PSK。 在这种情况下,驱动程序必须通过信标和探测响应播发对安全协议的支持,并且必须允许使用 WPA2-PSK 或 WPA3-SAE 进行客户端身份验证。

AKM 支持

AKM 0xac0f08 (RSNA_AKM_SAE_PMK256) 是 WPA3 SoftAP 唯一支持的 AKM。 驱动程序不得播发对其他 AKM 的支持。

受保护的管理帧 (PMF) 功能检测

操作系统没有在 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 and Peck 支持

OS 不提供仅在 AP 启动参数中使用 H2E 的特定标志。 因此,驱动程序必须始终表明它们支持 SoftAP 的 H2E 和 Hunt and 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 设置:

如果 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 任务后,驱动程序允许设备在 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。

在运行 favorOverSta 标志的 SoftAP 启动时,OS 可能会发送 OID_WDI_SET_CONNECTION_QUALITY 任务来请求 SoftAP 链接上的优化性能。 驱动程序应履行此任务,但还应努力增强 SoftAP 链接,即使它未通过 OID_WDI_SET_CONNECTION_QUALITY 任务接收特定要求。

漫游 STA 端口时的预期行为

OS 请求“any”频段/通道:

  • 考虑到当前配置和 STA 连接,驱动程序应在最佳频段/通道上启动 SoftAP。 通常,最佳频段/通道是 STA 链接使用的频段/通道。 然后,驱动程序应成功完成 OID_WDI_TASK_START_AP 任务。

    如果移动 STA 可能会改善 SoftAP 链接,驱动程序可以使用 NDIS_STATUS_WDI_INDICATION_ROAMING_NEEDED 将漫游请求发送到 OS。 漫游成功后,驱动程序可以将 SoftAP 链接移动到可优化性能的新频段/通道。

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。 驱动程序通过发送带有相关原因代码(通常为 WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE)的 NDIS_STATUS_WDI_INDICATION_STOP_AP 来通知操作系统。

当 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 任务失败。

如果因为 STA 在与所请求的频段/通道不兼容的频段/通道上运行而无法启动 SoftAP,并且没有合理的候选项可用于漫游,则驱动程序应使 OID_WDI_TASK_START_AP 任务失败,错误代码为 STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLESTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE

如果由于其他原因(不支持的频段/通道、泛型驱动程序问题等)而无法启动 SoftAP,驱动程序应使用泛型错误代码,例如 STATUS_NOT_SUPPORTED

如果由于需要漫游 STA 连接但漫游失败而导致无法持续 SoftAP,驱动程序应停止 SoftAP,原因代码为 WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE