WiFiCx WPA3-SAE 身份验证
WiFiCx 支持 WPA3-SAE,也称为 WPA3-Personal。 在 Windows 中完成 SAE (Secure Authentication of Equals) 身份验证的帧内容生成和分析,但 OS 要求驱动程序支持发送和接收 WPA3-SAE 身份验证帧。
WPA3-SAE 功能
WiFiCx 驱动程序通过执行以下操作表示 SAE 支持:
设置 SAE 支持的功能。
驱动程序在调用 WifiDeviceSetDeviceCapabilities 期间在 WIFI_DEVICE_CAPABILITIES 中设置 SAEAuthenticationSupported 功能。设置 MFP 功能。
驱动程序在调用 WifiDeviceSetStationCapabilities 期间在 WIFI_STATION_CAPABILITIES 中设置 MFPCapable 功能。添加 WDI_AUTH_ALGO_WPA3_SAE 密码。
驱动程序在调用 WifiDeviceSetStationCapabilities 中返回的身份验证密码组合列表中包括 WDI_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP 对。 这应添加到以下结构中:- WIFI_STATION_CAPABILITIES ->NumSupportedUnicastAlgorithms + UnicastAlgorithmsList
驱动程序在调用 WifiDeviceSetStationCapabilities 中返回的身份验证密码组合列表中也包括 WDI_AUTH_ALGO_WPA3_SAE + WDI_CIPHER_ALGO_BI 对。 它应被添加到以下结构中:
- WIFI_STATION_CAPABILITIES ->NumSupportedMulticastMgmtAlgorithms + MulticastMgmtAlgorithmsList
WPA3-SA 身份验证流
连接启动
SAE 连接通过 OID_WDI_TASK_CONNECT 或 OID_WDI_TASK_ROAM 启动。 当驱动程序需要执行 SAE 身份验证时,WDI 将 WDI_AUTH_ALGO_WPA3_SAE 指定为身份验证方法。 如果 WDI 在连接/Roam 任务中的 BSS 列表中提供 PMKID,则驱动程序将跳过 SAE 身份验证并改为执行开放身份验证,然后是与 PMKID 的重新关联请求。
身份验证流
SAE 参数的初始请求
驱动程序首先选择要连接到或漫游的 BSS,如果 WDI 未为该 BSS 提供 PMKID,驱动程序会使用 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 从 WDI 请求提交参数。 在此初始指示中,驱动程序将指示类型设置为 WDI_SAE_INDICATION_TYPE_COMMIT_REQUEST_PARAMS_NEEDED。 作为响应,WDI 使用以下选项之一将 OID_WDI_SET_SAE_AUTH_PARAMS 发送到驱动程序。
- 发送提交请求 (WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS)
- SAE 身份验证失败 (WDI_SAE_REQUEST_TYPE_FAILURE)
收到提交响应后
收到提交响应时,驱动程序会发送 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED,类型设置为WDI_SAE_INDICATION_TYPE_COMMIT_FRAME。 作为响应,WDI 使用以下请求之一发送 OID_WDI_SET_SAE_AUTH_PARAMS:
- 发送提交请求 (WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS)
- 发送确认请求 (WDI_SAE_REQUEST_TYPE_CONFIRM_PARAMS)
- SAE 身份验证失败 (WDI_SAE_REQUEST_TYPE_FAILURE)
收到确认响应后
收到确认响应时,驱动程序会发送 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED,类型设置为WDI_SAE_INDICATION_TYPE_CONFIRM_FRAME。 然后,WDI 发送 OID_WDI_SET_SAE_AUTH_PARAMS,SAE 状态字段设置为成功或失败。 如果因超时或其他原因导致驱动程序中的 SAE 身份验证失败,驱动程序会发送 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示,该指示的类型设置为WDI_SAE_INDICATION_TYPE_ERROR,失败原因在 WDI_TLV_SAE_STATUS 中指定。
超时和重新传输
这些由驱动程序处理。
WPA3-SAE 关联
设备使用以下选项之一连接到 SAE 网络。
SAE 交流后(重新)关联
这通常是与 SAE 网络的第一次关联尝试。 驱动程序在关联请求帧的 RSN IE 中设置 SAE AKM。
使用 PMKID(重新)关联
如果 WDI 为连接/漫游任务中的 BSS 条目提供了 PMKID,驱动程序将执行以下操作:
- 驱动程序执行 Open 身份验证,随后在(重新)关联请求中包含 PMKID。
- 如果设备在短时间内未收到来自 AP 的响应,或者 AP 在响应中返回关联错误,驱动程序将跳过对此 AP 的 SE 身份验证,并移动到另一个 AP,或回退到使用此 AP 执行完整的 SAE 身份验证。
SAE 身份验证/关联完成后,SAE 连接即完成。 与之前一样,在连接或漫游任务结束时,驱动程序会发送以下指示:
错误处理
重新发送 SAE 提交请求帧
如果驱动程序因超时而需要重新发送提交帧,则它可以重新发送 WDI 提供的原始标量/元素值,或者使用 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示从 WDI 请求一组新的 Scalar/Element 值。
重新发送 SAE 确认响应帧
如果驱动程序因超时而需要重新发送 Confirm 帧,则应使用 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示从 WDI 请求一组新的 SendConfirm 和 Confirm 值,并将类型设置为 WDI_SAE_INDICATION_TYPE_CONFIRM_REQUEST_RESEND_REQUEST。
Wi-Fi 7 SAE 身份验证更改
有关 Wi-Fi 7 SAE 身份验证更新,请参阅 WiFiCx Wi-Fi 7 功能要求。