windows网络适配器驱动开发-WiFiCx WPA3-SAE 身份验证
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 MulticastMgmtAlgorithmsListWPA3-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_PARAMSSAE 身份验证失败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_PARAMSSAE 身份验证失败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 连接才完成。 与之前一样驱动程序发送以下有关连接或漫游任务结论的指示NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULTNDIS_STATUS_WDI_INDICATION_CONNECT_COMPLETE错误处理重新发送 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。