WPA3-SAE 身份验证

WPA3-SAE(也称为 WPA3 个人版)在 WDI 版本 1.1.8 及更高版本的 Windows 中受支持。 针对 SAE 的帧内容生成和分析 (Equals) 身份验证的安全身份验证是在 Windows 中完成的,但 OS 需要驱动程序支持来发送和接收 WPA3-SAE 身份验证帧。

WPA3-SAE 功能

微型端口驱动程序通过执行以下操作来指示 SAE 支持:

  1. 设置 SAE 支持的功能。
    驱动程序在调用 OID_WDI_GET_ADAPTER_CAPABILITIES 期间在 WDI_TLV_INTERFACE_ATTRIBUTES 中设置 SAEAuthenticationSupported功能。
  2. 设置 MFP 功能。
    驱动程序在调用 OID_WDI_GET_ADAPTER_CAPABILITIES 期间,在 WDI_TLV_STATION_ATTRIBUTES 中设置 MFPCapable 功能。
  3. 添加 WDI_AUTH_ALGO_WPA3_SAE 身份验证方法。
    驱动程序在调用 OID_WDI_GET_ADAPTER_CAPABILITIES 时返回的身份验证密码组合列表中包含 WDI_AUTH_ALGO_WPA3_SAE。 这应该在以下部分中添加:

WPA3-SAE 身份验证流

连接启动

SAE 连接通过 OID_WDI_TASK_CONNECTOID_WDI_TASK_ROAM启动。 当驱动程序需要执行 SAE 身份验证时,WDI 将 WDI_AUTH_ALGO_WPA3_SAE 指定为身份验证方法。 如果 WDI 在连接/漫游任务的 BSS 列表中提供 PMKID,则驱动程序会跳过 SAE 身份验证并改为执行开放式身份验证,然后执行与 PMKID 的重新关联请求。

身份验证流

WPA3-SAE 身份验证流。

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_REQUEST)
  • WDI_SAE_REQUEST_TYPE_FAILURE) 的 SAE 身份验证 ( 失败

收到 Commit 响应时

收到 Commit 响应时,驱动程序发送 类型设置为 WDI_SAE_INDICATION_TYPE_COMMIT_RESPONSENDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED。 作为响应,WDI 使用以下请求之一发送 OID_WDI_SET_SAE_AUTH_PARAMS

  • 发送提交请求 (WDI_SAE_REQUEST_TYPE_COMMIT_REQUEST)
  • 发送确认请求 (WDI_SAE_REQUEST_TYPE_CONFIRM_REQUEST)
  • WDI_SAE_REQUEST_TYPE_FAILURE) 的 SAE 身份验证 ( 失败

收到确认响应时

收到 Confirm 响应时,驱动程序发送 类型设置为 WDI_SAE_INDICATION_TYPE_CONFIRM_RESPONSENDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED。 然后,WDI 发送 OID_WDI_SET_SAE_AUTH_PARAMS ,其中 SAE 状态字段设置为成功或失败。 如果驱动程序中的 SAE 身份验证由于超时或其他原因而失败,驱动程序会发送 一个NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示,指示类型为 se WDI_SAE_INDICATION_TYPE_ERROR ,以及 WDI_TLV_SAE_STATUS中指定的失败原因。

超时和重新传输

这些由驱动程序处理。

WPA3-SAE 关联

设备使用以下选项之一连接到 SAE 网络。

SAE 交换后 (再) 协会

这通常是首次尝试与 SAE 网络关联。 驱动程序在关联请求帧的 RSN IE 中设置 SAE AKM。

使用 PMKID (重新) 关联

如果 WDI 为连接/漫游任务中的 BSS 条目提供了 PMKID,则驱动程序将执行以下操作:

  1. 驱动程序执行 Open 身份验证,然后将 PMKID 包含在 (Re) 关联请求中。
  2. 如果设备在短时间内未收到来自 AP 的响应,或者 AP 在响应中返回关联错误,则驱动程序将跳过使用此 AP 的 SE 身份验证,并移动到另一个 AP,或回退到使用此 AP 执行完整的 SAE 身份验证。

SAE 身份验证/关联完成后,SAE 连接将完成。 与以前一样,驱动程序会在连接或漫游任务结束时发送以下指示:

错误处理

重新发送 SAE 提交请求帧

如果驱动程序由于超时而需要重新发送提交帧,它可以重新发送 WDI 提供的原始标量/元素值,或者通过 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 指示从 WDI 请求一组新的标量/元素值。

重新发送 SAE 确认响应帧

如果驱动程序由于超时而需要重新发送确认帧,则应从 WDI 请求一组新的 SendConfirmConfirm 值,并指示 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED ,并将类型设置为 WDI_SAE_INDICATION_TYPE_CONFIRM_REQUEST_RESEND_REQUEST