다음을 통해 공유


WiFiCx WPA3 SoftAP

WPA3 SoftAP 기능을 사용하면 디바이스가 Wi-Fi 보호 액세스 3 - WPA3-SAE(동시 인증) 보안 프로토콜을 사용하여 SoftAP(소프트 액세스 지점)를 설정할 수 있습니다. 이 SoftAP는 2.4GHz 또는 5GHz 대역에서 작동할 수 있습니다. 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에 대한 지원을 나타냅니다. 이 호출은 Wi-Fi 직접 기능을 WiFiCx에 보고합니다. 드라이버는 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

이러한 쌍을 나열하면 드라이버가 WPA3 전환 모드에서 SoftAP 기능을 지원한다는 신호를 WiFiCx에 표시합니다.

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(보호된 관리 프레임) 기능 검색

OS는 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(해시-요소) 및 헌트 및 펙 지원

OS는 AP 시작 매개 변수에서만 H2E를 사용하기 위한 특정 플래그를 제공하지 않습니다. 따라서 드라이버는 H2E와 Hunt 및 Peck 메서드를 모두 SoftAP에 지원한다는 것을 일관되게 나타내야 합니다.

로깅 방지 토큰

OS는 로깅 방지 토큰을 요청하여 피어 커밋 요청에 응답할 수 있습니다. OS는 다음을 사용하여 OID_WDI_SET_SAE_AUTH_PARAMS 호출합니다.

  • 요청 유형 이 WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS 또는 WDI_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 시나리오에서는 커밋 매개 변수에 막힘 방지 토큰이 포함되면 스칼라/요소 값이 생성되지 않습니다. 따라서 이러한 필드는 WDI_TLV_SAE_COMMIT_PARAMS TLV에서 선택 사항이며 드라이버는 액세스하기 전에 현재 상태를 검사 합니다. 이 변경 내용은 기존 드라이버와 호환되는 기본. 새 드라이버는 모든 경로에 이러한 선택적 필드가 있는지 확인해야 합니다.

거부된 그룹

OS는 그룹 19만 지원합니다. OS가 OS에서 지원하지 않는 그룹을 나타내는 피어로부터 커밋 프레임을 받으면 OS는 OID_WDI_SET_SAE_AUTH_PARAMS 명령을 보냅니다. 명령에서 OS는 다음을 설정합니다.

  • WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS 또는 WDI_SAE_REQUEST_TYPE_COMMIT_H2E_PARAMS WDI_SAE_REQUEST_TYPE(H2E를 사용하는 경우).
  • SaeStatusWDI_SAE_STATUS_COMMIT_MESSAGE_UNSUPPORTED_FINITE_GROUP.
  • DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP 커밋 프레임 StatusCode(WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_STATUS_CODE)입니다.
  • 거부된 그룹에 대한 커밋 프레임 FiniteCyclicGroup(WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_FINITE_CYCLIC_GROUP)입니다(피어가 거부하는 그룹을 포함하는 RejectedGroups 필드와 혼동하지 않음).

OS가 실제로 지원하는 RejectedGroups 필드 내에 그룹이 포함된 피어에서 커밋 프레임을 수신하는 경우 OS는 여전히 SAE 인증에 실패합니다. OS는 다음을 사용하여 OID_WDI_SET_SAE_AUTH_PARAMS 명령을 보냅니다.

  • WDI_SAE_REQUEST_TYPE WDI_SAE_REQUEST_TYPE_FAILURE 설정됩니다.
  • SaeStatusWDI_SAE_STATUS_COMMIT_MESSAGE_INVALID_REJECTED_GROUP 설정됩니다.

SAE 인증 시퀀스

OID_WDI_TASK_START_AP 작업이 호출되면 드라이버는 DOT11_AUTH_ALGO_WPA3_SAE OID_WDI_TASK_START_AP 인증 알고리즘 목록에 설정된 경우 디바이스에서 SAE 인증 프레임을 보낼 수 있도록 허용합니다. 드라이버는 NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED 표시를 사용하여 SAE 인증 매개 변수를 OS에 전달합니다.

Windows는 saE 교환을 완료하기 위해 WDI_SAE_COMMIT_PARAMSWDI_SAE_CONFIRM_PARAMS OID_WDI_SET_SAE_AUTH_PARAMS 호출합니다.

드라이버가 OS에서 확인 매개 변수를 수신하고 피어로 보내면 연결 요청을 수락하고 OS에 표시할 수 있습니다.

고성능 SoftAP

AR(증강 현실) 또는 VR(Virtual Reality)과 같은 시나리오의 경우 드라이버는 가능한 한 SoftAP 성능을 최적화하고 STA 연결보다 우선 순위를 지정해야 합니다. 이 프로세스에는 대역/채널 선택 및 STA 연결과의 공존과 같은 SoftAP를 시작할 때의 전략적 결정이 포함됩니다. 또한 SoftAP를 유지하는 동안 최적화가 포함됩니다.

OS는 OID_WDI_TASK_START_AP 작업에서 새 플래그 favorOverSta를 사용하여 고성능 SoftAP가 필요한 시나리오를 나타냅니다.

OS는 드라이버가 SoftAP 링크를 최적화하는 방법을 지시하지 않으므로 드라이버의 재량에 크게 좌우됩니다. 드라이버는 STA 링크를 저하시켜 SoftAP 링크를 향상시킬 수 있습니다.

OS가 favorOverSta 플래그 집합으로 SoftAP를 시작하면 드라이버에 권한이 부여되고 SoftAP 링크를 향상하는 경우 다른 밴드/채널로 STA 연결을 로밍하는 것이 좋습니다.

OS 요청 대역/채널 매개 변수가 현재 STA 연결과 충돌하는 경우 드라이버는 STA 연결을 로밍하면 요청된 매개 변수를 사용하여 SoftAP를 시작할 수 있는지 여부를 고려해야 합니다.

softAP가 favorOverSta 플래그로 시작된 경우 OS는 OID_WDI_SET_CONNECTION_QUALITY 작업을 보내 SoftAP 링크에서 최적화된 성능을 요청할 수 있습니다. 드라이버는 이 작업을 준수해야 하지만, OID_WDI_SET_CONNECTION_QUALITY 작업을 통해 특정 요구 사항을 받지 못하더라도 SoftAP 링크를 향상시키기 위해 노력해야 합니다.

STA 포트를 로밍할 때 예상되는 동작

OS는 "any" 밴드/채널을 요청합니다.

  • 드라이버는 현재 구성 및 STA 연결을 고려하여 최상의 밴드/채널에서 SoftAP를 시작해야 합니다. 일반적으로 최상의 밴드/채널은 STA 링크에서 사용하는 밴드입니다. 그러면 드라이버가 OID_WDI_TASK_START_AP 작업을 성공적으로 완료해야 합니다.

    STA를 이동하면 SoftAP 링크가 향상될 수 있는 경우 드라이버는 NDIS_STATUS_WDI_INDICATION_ROAMING_NEEDED 사용하여 OS에 로밍 요청을 보낼 수 있습니다. 로밍이 성공하면 드라이버는 SoftAP 링크를 성능을 최적화하는 새 밴드/채널로 이동할 수 있습니다.

OS는 특정 밴드/채널을 요청합니다.

  • 드라이버가 적절한 성능으로 OS 요청 밴드/채널에서 SoftAP를 유지할 수 있는 경우 OID_WDI_TASK_START_AP 작업을 성공적으로 완료해야 합니다.

  • 드라이버가 현재 요청된 밴드/채널에서 SoftAP를 유지할 수 없는 경우 다음 조건이 충족되면 검사 합니다.

    1. STA가 로밍할 수 있는 대체 BSS를 사용할 수 있습니다.
    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_ALLOWED 또는 STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED OID_WDI_TASK_START_AP 작업에 실패해야 합니다.

STA가 요청된 밴드/채널과 호환되지 않는 밴드/채널에서 작동하며 로밍에 적합한 후보가 없기 때문에 SoftAP를 시작할 수 없는 경우 드라이버는 오류 코드 STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE 또는 STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE OID_WDI_TASK_START_AP 작업에 실패해야 합니다.

다른 이유(지원되지 않는 대역/채널, 일반 드라이버 문제 등)로 인해 SoftAP를 시작할 수 없는 경우 드라이버는 STATUS_NOT_SUPPORTED 같은 일반 오류 코드를 사용해야 합니다.

STA 연결을 로밍해야 했으나 로밍이 실패했기 때문에 SoftAP를 유지할 수 없는 경우 드라이버는 코드 가 WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE 이유와 함께 SoftAP를 중지해야 합니다.