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_SAE 및 WDI_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를 사용하는 경우).
- SaeStatus 를 WDI_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 설정됩니다.
- SaeStatus 는 WDI_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_PARAMS 및 WDI_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를 유지할 수 없는 경우 다음 조건이 충족되면 검사 합니다.
- STA가 로밍할 수 있는 대체 BSS를 사용할 수 있습니다.
- 드라이버는 STA 링크를 로밍한 후 OS 요청 밴드/채널에서 SoftAP를 유지할 수 있습니다.
- 로밍이 실패할 가능성은 거의 없습니다.
이러한 조건이 충족되면 드라이버는 성공적으로 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를 중지해야 합니다.