WiFiCx 支持 WPA3-SAE,也称为 WPA3-Personal。 SAE(平等方安全认证,Secure Authentication of Equals)的帧内容生成和解析在 Windows 系统中完成,但操作系统需要驱动程序支持发送和接收 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-SAE 身份验证流
连接初始化
SAE 连接通过 OID_WDI_TASK_CONNECT 或 OID_WDI_TASK_ROAM启动。 当驱动程序需要执行 SAE 身份验证时,WDI 将 WDI_AUTH_ALGO_WPA3_SAE 指定为身份验证方法。 如果 WDI 在 Connect/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)
收到提交响应后
当收到 Commit 响应时,驱动程序会发送 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 身份验证,随后在 (Re) 关联请求中包含 PMKID。
- 如果设备在短时间内未收到来自 AP 的响应,或者 AP 在响应中返回关联错误,驱动程序会跳过此 AP 的 SE 身份验证,然后移动到另一个 AP,或回退到使用此 AP 执行完整的 SAE 身份验证。
SAE 身份验证/关联完成后,SAE 连接才完成。 与之前一样,驱动程序发送以下有关连接或漫游任务结论的指示:
错误处理
重新发送 SAE 提交请求帧
如果驱动程序因超时而需要重新发送提交帧,则可以选择重新发送 WDI 提供的原始标量/元素值,或者通过 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示从 WDI 请求一组新的标量/元素值。
重新发送 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 功能要求。