Compartilhar via


SoftAP WPA3 WiFiCx

O recurso SoftAP WPA3 permite que os dispositivos configurem um SoftAP (Soft Access Point) usando o protocolo de segurança WPA3-SAE (Wi-Fi Protected Access 3 - Simultaneous Authentication of Equals). Esse SoftAP pode operar na banda de 2,4 GHz ou 5 GHz. Do WDI versão 2.0.11 e WiFiCx versão 1.1 em diante, você pode integrar a funcionalidade SoftAP WPA3 no driver do cliente WiFiCx.

SoftAP WPA3 suporta WPA3-SAE e um modo de transição de WPA3-SAE para compatibilidade com versões anteriores. O modo de transição acomoda os métodos de autenticação WPA2-PSK e WPA3-SAE, garantindo conectividade Wi-Fi segura em vários dispositivos e ambientes.

SoftAP WPA3 só está disponível no modelo de driver WiFiCx. Este artigo descreve como adicionar suporte para SoftAP WPA3 no driver WiFiCx.

Detecção de capacidade de SoftAP WPA3

Seu driver cliente indica o suporte para SoftAP WPA3 quando chama WifiDeviceSetWiFiDirectCapabilities. Essa chamada relata recursos de Wi-Fi Direct para WiFiCx. O driver deve incluir o par de autenticação e criptografia DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP na lista UnicastAlgorithms dentro da estrutura WIFI_WIFIDIRECT_CAPABILITIES.

Um driver que suporta WPA2-PSK e WPA3-SAE com SoftAP deve relatar os seguintes pares de algoritmos unicast:

  • DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_CCMP
  • DOT11_AUTH_ALGO_RSNA_PSK + DOT11_CIPHER_ALGO_CCMP

Listar esses pares sinaliza ao WiFiCx que o driver aceita o recurso SoftAP no modo de transição WPA3.

Parâmetros AP start

O Windows modifica a tarefa OID_WDI_TASK_START_AP da seguinte maneira:

  • O TLV WDI_TLV_AUTH_ALGO_LIST poderá incluir WDI_AUTH_ALGO_WPA3_SAE se o driver indicar suporte para SoftAP WPA3.
  • O TLV WDI_TLV_AUTH_ALGO_LIST pode incluir WDI_AUTH_ALGO_WPA3_SAE e WDI_AUTH_ALGO_RSNA_PSK. Nesse caso, o driver deve anunciar suporte para ambos os protocolos de segurança por meio de beacons e respostas de investigação e deve permitir a autenticação do cliente usando WPA2-PSK ou WPA3-SAE.

Suporte a AKM

AKM 0xac0f08 (RSNA_AKM_SAE_PMK256) é o único AKM suportado para SoftAP WPA3. O driver não deve anunciar suporte para outros AKMs.

Detecção de capacidade de PMF (quadros de gerenciamento protegidos)

O sistema operacional não fornece um sinalizador específico para PMF nos parâmetros de início do ponto de acesso. O driver deve anunciar os recursos do PMF da seguinte maneira:

Algoritmo de autenticação presente PMF necessário Com capacidade para PMF
WPA2-PSK Não Não
WPA3-SAE + WPA2-PSK Não Sim
WPA3-SAE Sim Yes

Se o driver relatar a capacidade para WPA3-SAE no SoftAP, o sistema operacional vai esperar que o driver ofereça suporte a PMF. Não há capacidade de driver adicional para PMF.

Autenticação de SAE para SoftAP WPA3

Esta seção descreve as atualizações de autenticação de SAE para cenários de SoftAP WPA3.

Suporte a H2E (Hash-to-Element) e Hunt and Peck

O sistema operacional não fornece um sinalizador específico para usar H2E apenas nos parâmetros de início do ponto de acesso. Portanto, os drivers devem indicar consistentemente que suportam os métodos H2E e Hunt e Peck para SoftAP.

Tokens anti-sobrecarga

O sistema operacional pode responder a uma solicitação de compromisso de ponto a ponto solicitando um token anti-sobrecarga. O sistema operacional chama OID_WDI_SET_SAE_AUTH_PARAMS com:

  • O tipo de solicitação WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS ou WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS_H2E (se H2E for usado).
  • O quadro de compromisso StatusCode (WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_STATUS_CODE) definido para DOT11_FRAME_STATUS_ANTI_CLOGGING_TOKEN_REQUIRED.

O par fornece um token anti-sobrecarga como parte dos parâmetros de compromisso.

Em um cenário de SoftAP, quando um token anti-sobrecarga é incluído nos parâmetros de compromisso, os valores de escalonamento/elemento não são gerados. Esses campos são, portanto, opcionais no TLV WDI_TLV_SAE_COMMIT_PARAMS, e o driver deve verificar sua presença antes de acessá-los. Essa alteração permanece compatível com os drivers existentes. Novos drivers devem validar a presença dos campos opcionais em todos os caminhos.

Grupos rejeitados

O sistema operacional suporta apenas o Grupo 19. Se o sistema operacional receber um quadro de compromisso de um par que indique um grupo que o sistema operacional não suporta, o sistema operacional enviará um comando OID_WDI_SET_SAE_AUTH_PARAMS. No comando, o sistema operacional define:

  • WDI_SAE_REQUEST_TYPE como WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS ou WDI_SAE_REQUEST_TYPE_COMMIT_H2E_PARAMS (se H2E for usado).
  • SaeStatus como WDI_SAE_STATUS_COMMIT_MESSAGE_UNSUPPORTED_FINITE_GROUP.
  • O quadro de compromisso StatusCode (WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_STATUS_CODE) como DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP.
  • O quadro de compromisso FiniteCyclicGroup (WDI_TLV_SAE_COMMIT_PARAMS>WDI_TLV_SAE_FINITE_CYCLIC_GROUP) como o grupo rejeitado (não deve ser confundido com o campo RejectedGroups, que contém os grupos que o par rejeita).

Se o sistema operacional receber um quadro de compromisso de um par que inclua um grupo dentro do campo RejectedGroups que o sistema operacional realmente suporta, o sistema operacional ainda falhará na autenticação de SAE. O sistema operacional enviará um comando OID_WDI_SET_SAE_AUTH_PARAMS com:

  • WDI_SAE_REQUEST_TYPE definido como WDI_SAE_REQUEST_TYPE_FAILURE.
  • SaeStatus definido como WDI_SAE_STATUS_COMMIT_MESSAGE_INVALID_REJECTED_GROUP.

Sequência de autenticação de SAE

Quando a tarefa OID_WDI_TASK_START_AP é chamada, o driver permite que os dispositivos enviem quadros de autenticação de SAE caso DOT11_AUTH_ALGO_WPA3_SAE seja definido na lista de algoritmos de autenticação em OID_WDI_TASK_START_AP. O driver usa a indicação NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED para transmitir os parâmetros de autenticação de SAE para o sistema operacional.

O Windows chama OID_WDI_SET_SAE_AUTH_PARAMS com WDI_SAE_COMMIT_PARAMS e WDI_SAE_CONFIRM_PARAMS para concluir a troca de SAE.

Depois que o driver recebe os parâmetros de confirmação do sistema operacional e os envia para o par, ele pode aceitar uma solicitação de associação e indicá-la ao sistema operacional.

SoftAP de alto desempenho

Para cenários como Realidade Aumentada (AR) ou Realidade Virtual (VR), os drivers devem otimizar o desempenho do SoftAP o máximo possível e priorizá-lo em relação à conexão STA. Esse processo envolve decisões estratégicas ao iniciar o SoftAP, como seleção de banda/canal e coexistência com a conexão de STA. Ele também envolve otimização ao sustentar o SoftAP.

O sistema operacional indica cenários que exigem SoftAP de alto desempenho usando um novo sinalizador, favorOverSta, na tarefa OID_WDI_TASK_START_AP.

O sistema operacional não dita como o driver deve otimizar o link SoftAP, deixando-o em grande parte a critério do driver. O driver pode degradar o link STA para melhorar o link SoftAP.

Quando o sistema operacional inicia o SoftAP com o sinalizador favorOverSta definido, o driver será autorizado e incentivado a fazer roaming da conexão STA para uma banda/canal diferente se aprimorar o link SoftAP.

Se os parâmetros de banda/canal solicitados pelo sistema operacional entrarem em conflito com a conexão de STA atual, o driver deverá considerar se o roaming da conexão de STA permitiria iniciar o SoftAP com os parâmetros solicitados.

Quando um SoftAP iniciado com o sinalizador favorOverSta está em execução, o sistema operacional pode enviar uma tarefa OID_WDI_SET_CONNECTION_QUALITY para solicitar desempenho otimizado no link SoftAP. O driver deve honrar essa tarefa, mas também deve se esforçar para melhorar o link SoftAP, mesmo que não receba requisitos específicos por meio de uma tarefa OID_WDI_SET_CONNECTION_QUALITY.

Comportamento esperado durante roaming da porta STA

O sistema operacional solicita uma banda/canal:

  • O driver deve iniciar o SoftAP na melhor banda/canal, considerando a configuração atual e a conexão de STA. Normalmente, a melhor banda/canal é a utilizada pelo link de STA. O driver deve, então, concluir com êxito a tarefa OID_WDI_TASK_START_AP.

    Se mover o STA puder melhorar o link do SoftAP, o driver poderá enviar uma solicitação de roaming para o sistema operacional usando NDIS_STATUS_WDI_INDICATION_ROAMING_NEEDED. Quando o roaming é bem-sucedido, o driver pode mover o link de SoftAP para uma nova banda/canal que otimizaria o desempenho.

O sistema operacional solicita uma banda/canal específico:

  • Se o driver puder sustentar o SoftAP na banda/canal solicitado pelo sistema operacional com desempenho razoável, deverá concluir com êxito a tarefa OID_WDI_TASK_START_AP.

  • Se o driver não puder manter o SoftAP na banda/canal solicitado, deverá verificar se as seguintes condições são atendidas.

    1. Um BSS alternativo está disponível para o STA fazer roaming.
    2. O driver pode sustentar o SoftAP na banda/canal solicitado pelo sistema operacional depois de fazer roaming do link de STA.
    3. É improvável que ocorra falha no roaming.

    Se essas condições forem atendidas, o driver deverá concluir OID_WDI_TASK_START_AP com êxito e enviar uma solicitação de roaming para mover a conexão STA.

    Caso contrário, o driver deverá falhar na tarefa OID_WDI_TASK_START_AP com um código de erro relevante.

Depois que o driver concluir a tarefa OID_WDI_TASK_START_AP, poderá enviar uma solicitação de roaming para mover a conexão de STA para manter ou aprimorar o desempenho do SoftAP.

Se o roaming falhar e o driver não conseguir sustentar o SoftAP sem mover a conexão de STA, o driver deverá interromper o SoftAP. O driver informa o sistema operacional enviando NDIS_STATUS_WDI_INDICATION_STOP_AP com um código de motivo relevante (normalmente, WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE).

Quando o SoftAP é interrompido, os usuários podem notar um efeito de "cintilação", onde o SoftAP inicia e é interrompido quase instantaneamente. Esse comportamento deve ser evitado ao máximo. Se o driver precisar de um roaming para sustentar o SoftAP, o driver deverá confiar que o roaming será bem-sucedido antes de concluir a tarefa OID_WDI_TASK_START_AP.

Códigos de erro de SoftAP

Se o SoftAP não puder ser iniciado porque a banda/canal não é permitida por um motivo regulamentar, o driver deverá apresentar falha na tarefa OID_WDI_TASK_START_AP com o código de erro STATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED ou STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED.

Se o SoftAP não puder ser iniciado porque o STA está operando em uma banda/canal que é incompatível com a banda/canal solicitado e nenhum candidato razoável estiver disponível para roaming, o driver deverá falhar na tarefa OID_WDI_TASK_START_AP com o código de erro STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE ou STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE.

Se o SoftAP não puder ser iniciado por outro motivo (banda/canal não suportado, problema de driver genérico, etc.), o driver deverá usar um código de erro genérico, como STATUS_NOT_SUPPORTED.

Se o SoftAP não puder ser sustentado porque foi necessário fazer roaming da conexão de STA, mas o roaming tiver falhado, o driver deverá parar o SoftAP com o código de motivo WDI_STOP_AP_REASON_FREQUENCY_NOT_AVAILABLE.