Configuration requise pour les fonctionnalités Wi-Fi 7 WiFiCx
WiFiCx prend en charge les fonctionnalités Wi-Fi 7, qui offrent une connectivité plus rapide, une latence plus faible et une sécurité améliorée. WiFiCx donne accès à la fonctionnalité Multi-Link Operation (MLO) qui offre une différenciation de l’itinérance pour exploiter plusieurs canaux simultanés vers le point d’accès (AP) Wi-Fi et des fonctionnalités améliorées pour une authentification WPA3-SAE et un chiffrement sans fil opportuniste (OWE) via chiffrement GCMP-256.
Cet article décrit les modifications qu'il est nécessaire d'apporter au pilote pour prendre en charge ces fonctionnalités.
Détection des fonctionnalités Wi-Fi 7
Le pilote doit prendre en charge WDI Version 2.0.12 pour la configuration de la connexion Wi-Fi 7.
Pour indiquer la prise en charge des connexions MLO Wi-Fi, le pilote doit définir les fonctionnalités suivantes dans la structure WIFI_STATION_CAPABILITIES :
- Le nombre d’entrées dans MLOAddressesList doit correspondre à MaxMLOLinksSupported, qui indique si le pilote est capable de configurer des liaisons MLO.
- Le nombre d’entrées dans AkmsList doit correspondre à NumAkmsSupported. Cette liste doit inclure toutes les suites AKM prises en charge par le pilote, ainsi que AKM 24 si le système d’exploitation est censé prendre en charge l'authentification SAE avec une PMK de 384 bits.
Pour pouvoir prendre en charge des connexions SAE via AKM 24 ou AKM 8 avec un chiffrement GCMP-256, le pilote doit ajouter les paires authentification-chiffrement suivantes lors de l’appel de de WifiDeviceSetStationCapabilities :
- Dans UnicastAlgorithmsList : DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_GCMP_256
- Dans MulticastMgmtAlgorithmsList : DOT11_AUTH_ALGO_WPA3_SAE + DOT11_CIPHER_ALGO_GCMP_256
Pour pouvoir prendre en charge des connexions OWE avec un chiffrement GCMP-256, le pilote doit ajouter la paire de chiffrement d’authentification suivante lors de l’appel de de WifiDeviceSetStationCapabilities :
- Dans UnicastAlgorithmsList : DOT11_AUTH_ALGO_OWE + DOT11_CIPHER_ALGO_GCMP_256
Adresses MAC de trames
Lorsque le pilote indique des trames de gestion, utiliser l’adresse MAC de liaison. Pour les trames de données, y compris dans les cas de négociation à quatre voies et D'authentification 802.1x, utiliser l’adresse MAC MLD.
Pour les trames de données, y compris dans les cas de négociation à quatre voies et d'authentification 802.1x, l'adresse MAC est l’adresse MAC MLD.
Lorsque Windows utilise des adresses MAC aléatoires, il fournit un ensemble d’adresses aléatoires dans WDI_TLV_CONFIGURED_MLO_LINK_MAC_ADDRESS lorsqu’il envoie la tâche OID_WDI_TASK_DOT11_RESET.
Découverte du point d'accès
Windows analyse les éléments d'information de la balise pour y détecter Multi-Link et RNR. S'ils sont présents, le point d'accès est marqué comme prenant en charge la MLO.
Configuration d'une connexion à liaisons multiples
Windows fournit un paramètre dans la tâche OID_WDI_TASK_CONNECT qui indique si le pilote peut se connecter via MLO. Ce paramètre est représenté par l’indicateur MloConnectionSupported dans WDI_TLV_CONNECTION_SETTINGS. Lorsque la valeur de MloConnectionSupported est true, le pilote ne peut utiliser que les paires AKM/chiffrement spécifiées par WDI_TLV_RSNA_AKM_CIPHER_SUITE dans les requêtes OID_WDI_TASK_CONNECT et OID_WDI_TASK_ROAM. La seule exception est si l’authentification/chiffrement ne fait pas partie de l'élément d'information RSNA.
Pour les connexions basées sur SAE, Windows définit la paire AKM-chiffrement dans la requête de validation SAE, afin d'indiquer au pilote que c'est celle qu'il faudra utiliser ultérieurement dans la requête d’association.
Authentification
Pour l’authentification SAE via Wi-Fi 7 MLO, Windows définit la paire AKM-chiffrement dans WDI_TLV_SAE_COMMIT_PARAMS lors de l’appel de OID_WDI_SET_SAE_AUTH_PARAMS. Ces valeurs sont spécifiées dans les TLV WDI_TLV_RSNA_AKM_SUITE et WDI_TLV_CIPHER_ALGORITHM. Le pilote utilise ces valeurs ultérieurement dans la requête d’association.
Dans l’indication NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED, le pilote doit :
- Définir le BSSID (WDI_TLV_BSSID) comme étant l’adresse MAC de liaison du point d'accès.
- Définir localMloLinkBssId (WDI_TLV_MLO_LINK_BSSID) comme étant l’adresse MAC de liaison locale.
Inclure le ou les éléments d'information Multi-Link dans les trames d’authentification lors de la connexion pour MLO.
Association
Lorsque Windows envoie les tâches OID_WDI_TASK_CONNECT et OID_WDI_TASK_ROAM, le pilote ne doit se connecter à un point d'accès via MLO Wi-Fi 7 que si celui-ci prend en charge la connectivité Multi-Link avec les AKM répertoriés dans la liste WDI_TLV_RSNA_AKM_CIPHER_SUITE de la TLV WDI_TLV_CONNECT_PARAMETERS.
Le pilote inclut le ou les éléments d'information Multi-Link dans les trames d’association lors de la connexion pour MLO. À l’issue de l’association, Windows vérifie les éléments d'information Multi-Link dans les trames de requête/réponse d’association de l’indication NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULT pour déterminer si la connexion s'est déroulée via MLO.
Windows a besoin que le pilote précise les trames de requête et réponse d’association dans WDI_TLV_ASSOCIATION_RESULT au moment de l’indication NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULT.
Pour l’association via Wi-Fi 7 MLO, le pilote doit définir les valeurs suivantes dans NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULT :
- Définir le BSSID (WDI_TLV_BSSID) dans WDI_TLV_ASSOCIATION_RESULT comme étant l’adresse MAC de liaison du point d'accès. Il ne doit y avoir qu’une seule instance de l’entrée AssociationResultsContainer dans NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULT.
- Définir le LocalLinkBssId (WDI_TLV_MLO_LINK_BSSID) dans WDI_TLV_ASSOCIATION_RESULT comme étant l'adresse MAC de liaison locale.
Remarque : si localLinkBssId n’est pas défini, Windows ne peut pas assurer de connexion via MLO.
Négociation à quatre voies
Windows prend en charge GCMP-256 dans la négociation à quatre voies. Il a également mis à jour l’interface WDI pour fournir des informations sur la liaison lors de la définition des clés GTK/IGTK/BIGTK.
Au moment de la définition des clés de groupe (GTK/IGTK/BIGTK) pour les connexions MLO, Windows appelle la commande OID_WDI_SET_ADD_CIPHER_KEYS avec un tableau d’éléments (un pour chaque clé ajoutée).
Indication de l’état de la liaison
L’indication NDIS_STATUS_WDI_INDICATION_LINK_STATE_CHANGE fournit désormais les informations suivantes pour chaque liaison dans WDI_TLV_LINK_INFO :
- ID de la liaison
- Bande/canal utilisé par la connexion
- Indicateur de la force du signal reçu (RSSI, Received Signal Strength Indicator)
- Bande passante actuelle
- Tx MCS actuel
- MCS Rx actuel
Pour les connexions MLO, l’indication d’état de la liaison fournit des informations pour chaque liaison. Pour les connexions non MLO, les informations qu'il fournit correspondent à une liaison unique.
Dissociation
Le pilote n'envoie l’indication NDIS_STATUS_WDI_INDICATION_DISASSOCIATION qu'une fois que toutes les liaisons ont été dissociées. Si le pilote se connecte via une nouvelle liaison ou se déconnecte d’une liaison en cours, il envoie simplement une notification NDIS_STATUS_WDI_INDICATION_LINK_STATE_CHANGE pour mettre à jour l’ensemble des liaisons auxquelles il est actuellement associé.
Lorsque le pilote envoie l’indication NDIS_STATUS_WDI_INDICATION_DISASSOCIATION, l'adresse MAC qu'il doit définir dans WDI_TLV_DISASSOCIATION_INDICATION_PARAMETERS doit être l'adresse MAC MLD du point d'accès.
Modifications apportées à l’authentification SAE
Envoi d’une trame d’authentification SAE
Les types et les TLVs suivants ont été renommés pour la commande OID_WDI_SET_SAE_AUTH_PARAMS :
- WDI_SAE_REQUEST_TYPE_COMMIT_REQUEST renommé en WDI_SAE_REQUEST_TYPE_COMMIT_PARAMS dans l'énum. WDI_SAE_REQUEST_TYPE.
- WDI_SAE_REQUEST_TYPE_CONFIRM_REQUEST renommé en WDI_SAE_REQUEST_TYPE_CONFIRM_PARAMS dans l'énum. WDI_SAE_REQUEST_TYPE.
- WDI_TLV_SAE_COMMIT_REQUEST renommé en WDI_TLV_SAE_COMMIT_PARAMS. Cette TLV est utilisée pour envoyer aussi bien des trames requête-validation que des trames réponse-validation.
- WDI_TLV_SAE_CONFIRM_REQUEST renommé en WDI_TLV_SAE_CONFIRM_PARAMS. Cette TLV est utilisée pour envoyer aussi bien des trames requête-confirmation que des trames réponse-confirmation.
Indication d’une trame d’authentification SAE
Les types et les TLVs suivants ont été renommés pour l'indication NDIS_STATUS_WDI_INDICATION_SAE_AUTH_PARAMS_NEEDED :
- WDI_SAE_INDICATION_COMMIT_RESPONSE renommé en WDI_SAE_INDICATION_COMMIT_FRAME dans l'énum- WDI_SAE_INDICATION_TYPE.
- WDI_SAE_INDICATION_CONFIRM_RESPONSE renommé en WDI_SAE_INDICATION_CONFIRM_FRAME dans l'énum. WDI_SAE_INDICATION_TYPE.
- WDI_TLV_SAE_COMMIT_RESPONSE renommé en WDI_TLV_SAE_COMMIT_FRAME.
- WDI_TLV_SAE_CONFIRM_RESPONSE renommé en WDI_TLV_SAE_CONFIRM_FRAME.
Dans l’appel à WDI_SET_SAE_AUTH_PARAMS, le système d’exploitation fournit l'AKM et le chiffrement en tant que paramètres facultatifs que le pilote utilisera pour l’envoi de la demande d’association. La combinaison AKM/chiffrement sera déterminée pendant l’échange SAE.
Connexion OWE
Pour les connexions OWE, Windows vérifie si le point d'accès prend en charge le chiffrement GCMP-256. Si c'est le cas, Windows tente tout d'abord d’utiliser le Groupe 20 pour l’association. Si le point d'accès rejette l'association et que l’erreur DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP (77) apparaît, le système d’exploitation revient au Groupe 19.
Dans OID_WDI_TASK_CONNECT, le système d’exploitation définit tout d'abord les paramètres DH pour OWE sur le Groupe 20. Si le point d'accès rejette la requête d'association et qu'une erreur de groupe non pris en charge apparaît, le système d’exploitation envoie l'OID OID_WDI_SET_OWE_DH_IE au pilote avec les informations OWE mises à jour pour le Groupe 19. Le pilote doit utiliser les informations OWE mises à jour pour la requête d’association suivante.
Remarque : pour que le système d’exploitation puisse traiter correctement l’erreur DOT11_FRAME_STATUS_UNSUPPORTED_FINITE_CYCLIC_GROUP, le pilote doit également définir l’état WDI dans l’indication NDIS_STATUS_WDI_INDICATION_ASSOCIATION_RESULT sur WDI_ASSOC_STATUS_ASSOC_FAILED_BY_PEER.