Les premiers articles critiquant la sécurité de WEP sont publiés dès 2000. Il devient très vite évident qu'un nouveau standard est nécessaire. L'IEEE se met donc au travail et planche sur WEP2, qui donnera TKIP, et sur 802.11i. Cependant, le processus est lent. En 2003, la Wi-Fi Alliance, un groupement marketing, comprenant que le WiFi ne sera pas adopté par les entreprises sans solution de sécurité, va émettre une recommandation appelé WPA (Wi-Fi Protected Access) s'appuyant sur les travaux de l'IEEE. Enfin, en 2004, 802.11i va être publié, et la Wi-Fi Alliance va traduire ce nouveau standard en une recommandation appelée WPA2. Voilà pour le paysage historique. Entre temps, on aura vu apparaître des WEP+ et des WEP2 avec des clés de 256 bits, des IV de 128 bits ou encore la suppression des IV faibles, mais qui ne présenteront pas franchement d'amélioration sensible du niveau de sécurité.

Qu'est-ce que WPA et WPA2 ?

WPA est un système destiné à remplacer WEP, avec comme contrainte sous-jacente qu'il puisse fonctionner sur tout matériel existant supportant le chiffrement WEP à 128 bits. WPA va donc définir :

  • un nouveau mécanisme d'authentification soit par secret partagé dit WPA-PSK (ou WPA Personal), soit par 802.1x dit WPA-EAP (ou WPA Enterprise) ;
  • un nouveau système de chiffrement utilisant un nouveau système de rotation de clés appelé TKIP permettant la réutilisant des moteurs de chiffrement WEP existant, mais avec des vraies clés de 128 bits ;
  • un nouveau système de contrôle d'intégrité appelé Michael.

Il doit être noté que WPA introduit un véritable concept de session complètement absent de WEP. À l'issue de la phase d'authentification, chaque client se retrouve avec une clé de session propre qui servira soit à initialiser TKIP pour finalement chiffrer en RC4, soit directement à opérer le chiffrement en AES. WPA adresse également les problèmes de rejeu et d'injection de trafic, mais n'est pas applicable aux réseaux Ad-hoc. Ce manque sera comblé par l'introduction d'un mécanisme de fait non standardisé communément appelé WPA-None, c'est à dire un WPA sans phase d'authentification où le secret partagé servira directement de clé de session. C'est pas forcément top, mais c'est toujours mieux que rien.

WPA2 est l'implémentation de 802.11i recommandée par la Wi-Fi Alliance. WPA2 fonctionne un peu différemment de WPA, en particulier dans la phase d'authentification. Il fournit un mode d'authentification par secret partagé (WPA2-PSK ou WPA2 Personal) et un par 802.1x (WPA2-EAP ou WPA2 Enterprise) via un RADIUS externe, introduit le chiffrement en AES, qui sera backporté sur WPA[1], et propose également TKIP, et un contrôle d'intégrité par AES ou Michael. Pour la jouer courte (mais pas forcément exactement juste), c'est du WPA amélioré avec un support AES complet. Enfin, WPA2 propose la protection des liens Ad-hoc.

Mon matériel supporte-t-il ces mécanismes ?

WPA ayant été conçu avec le soucis de compatibilité descendante, la réponse est le plus souvent affirmative. Seuls les matériels ne supportant pas le WEP à 128 bits ne sont pas capables de faire du WPA, et ils ne courent pas les rues. Ça, c'est la théorie. Dans la pratique, un matériel a besoin d'une couche logicielle pour fonctionner. S'il s'agit d'une carte 802.11, il faudra un OS et un driver supportant le WPA. S'il s'agit d'un AP ou d'un routeur, il faudra que le firmware le supporte. S'il s'agit enfin d'un matériel autre avec support Wi-Fi (lecteur de DVD, lapin qui clignote, téléphone, etc.), c'est la même chanson. Il va falloir que le constructeur ait introduit le support WPA, et ce n'est pas forcément gagné d'avance...

Ceci étant, comment savoir si tout ça support vraiment le WPA ? Il suffit de regarder si le matériel a reçu une certification de la Wi-Fi Alliance, c'est à dire s'il arbore le logo Wi-Fi Certified qui illustre cet article. En effet, cette certification impose le support WPA, et depuis peu le support WPA2. Mieux, on peut aussi aller vérifier sur la page du site de la Wi-Fi Alliance qui répertorie tous les matériels certifiés, avec les fonctionnalités vérifiées. Y'a plus qu'à regarder. Ceci étant, ce n'est pas parce qu'un produit n'est pas certifié qu'il ne supporte pas ces fonctionnalité. Mais au moins, si vous prévoyez un achat, vous serez sûr de votre coup.

La théorie, c'est bien, mais dans la pratique, la plupart des matériels dont on dispose ou qu'on achète n'ont pas le support WPA out-of-the-box, c'est à dire quand on les branche. Il va souvent falloir passer par la case Update. Vous devrez donc aller faire un tour sur le site du constructeur et chercher le dernier driver/firmware pour le télécharger et ainsi mettre à jour le support de son matériel.

Mon système d'exploitation supporte-t-il WPA/WPA2 ?

Les systèmes d'exploitation doivent également supporter WPA et/ou WPA2. Aujourd'hui, et pour autant que je sache, voilà comment se présentent les choses :

  • Windows XP supporte le WPA en SP1 (modulo une mise à jour dans Windows Update) et SP2 ; le support WPA2 n'est quant à lui disponible que sur SP2 par l'application d'un patch (pas dans Windows Update par contre) ;
  • Windows 2000 ne semble pas avoir de support WPA/WPA2, mais on peut utiliser wpa_supplicant, ou un autre supplicant commercial ;
  • pour les autres Windows, on dispose de supplicants commerciaux ou on peut essayer wpa_supplicant sans garantie de résultat ;
  • MacOS X supporte le WPA depuis la 10.3 (Panther) et le WPA2 en 10.4 (Tiger), quelques updates ultérieures ne feront pas de mal non plus ;
  • FreeBSD et NetBSD supportent WPA et WPA2 en utilisant wpa_supplicant ;
  • OpenBSD ne supporte toujours pas le WPA, et donc encore moins le WPA2, les développeurs privilégiant l'utilisation IPSEC ;
  • GNU/Linux supporte WPA et WPA2 sur la plupart de ses drivers libres, avec wpa_supplicant ; à défaut ndiswrapper fera l'affaire, toujours avec le même supplicant.

Update :

  • Windows Vista, qui ne figure pas dans cette liste, supporte WPA et WPA2 en standard. Sa pile 802.11 a été backportée pour Windows XP SP2 et le patch correspondant, qui remplace celui mentionné plus tôt, n'est toujours pas disponible via Windows Update.
  • Côté clients mobiles, tels que Smartphones et autres PDA...
    • Windows Mobile 2003 SE supporte WPA ;
    • Windows Mobile 5.0 supporte WPA et WPA2 (modulo mise à jour) ;
    • Symbian supporte WPA2 depuis la S60.

Et maintenant, comment je configure tout ça ?

Côté AP/routeur, prenez voter interface web et allez jouer avec les menus déroulant pour sélectionner le niveau de sécurité souhaité, à savoir WPA-PSK ou WPA2-PSK pour l'authentification par secret partagé. Les modes EAP (ou Enterprise) sont certes plus puissants mais nécessitent l'installation d'un serveur d'authentification RADIUS qui peut se révéler rapidement fastidieuse. Le secret partagé peut être fourni à l'équipement sous forme de passphrase d'une longueur comprise entre 8 et 63 caractères ou d'une chaîne de 64 caractères hexadécimaux (32 octets ou 256bits). Évidemment, toute votre sécurité repose sur ce secret. Le deviner permet certes de s'associer à votre réseau mais également (avec peu de travail) de déchiffrer toutes les communications, d'où la nécessité d'en choisir un long (une 30e de caractères minimum) et difficile à découvrir ou brute-forcer. Dans la mesure où il ne vous servira pas souvent, vous pouvez vous permettre d'en choisir un très compliqué.

Ensuite, vous passez côté station. Sous Windows XP et MacOS X, rien de difficile normallement. Ces deux systèmes d'exploitation vous proposent un gestionnaire de réseau WiFi qui va vous afficher les réseaux disponibles. Il suffira de choisir le votre, cliquer sur "Connexion" et fournir votre secret lorsqu'il vous sera demandé. Attention cependant sous Windows où certains drivers s'installent avec leur propre gestionnaire. Dans tous les cas que j'ai pu rencontrer, il s'est toujours avéré que celui de XP était plus simple et efficace à utiliser. Il suffira alors de cocher la case "Utiliser Windows pour configurer mon réseau sans fil" dans l'onglet "Réseau sans-fil" des propriétés de l'interface (de mémoire). Mais bon, c'est principalement une question de feeling.

Côtés Unix libres, on va utiliser wpa_supplicant. La configuration se fait par le biais d'un fichier (wpa_supplicant.conf) dans lequel on déclare ses réseaux favoris et leurs paramètres. La configuration pour un réseau en WPA-PSK utilisant un chiffrement TKIP sera la suivante :

network={
       ssid="Exemple de WPA-PSK"
       proto=WPA
       key_mgmt=WPA-PSK
       pairwise=TKIP
       group=TKIP
       psk="ma super passphrase"
}

Pour un réseau en WPA2-PSK avec chiffrement AES (CCMP) :

network={
        ssid="Exemple de WPA2-PSK"
        proto=WPA2
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        psk="ma super passphrase"
}

Ceci étant, le fichier de configuration par défaut explicite toutes les options disponibles et des exemples sont fournis. Je vous laisse donc les découvrir.

Update : Un détail cependant qui me semble utile de préciser pour wpa_supplicant. Si, comme certains AP/routeurs le proposent, vous voulez proposer un service mixte proposant WPA2 (éventuellement WPA en plus) avec des chiffrements TKIP et AES, vous devrez ajouter le support des clés de groupe en TKIP en plus de CCMP (group=CCMP TKIP). En effet, dans la mesure où vous proposez les deux types de chiffrement, si un client se pointe en TKIP, il faudra bien que tout le monde parle le même langage pour les communication de groupe. Et il semble que Windows ait du mal à gérer du chiffrement en CCMP et des clés de groupes en TKIP, et que ça ne marche qu'en TKIP intégrale...

Conclusion

La conclusion, c'est que le support WPA/WPA2 n'est souvent qu'une question de mise à jour. Je ne dis pas que c'est simple, il faut parfois passer du temps sur le site du constructeur et même parfois chercher des drivers génériques si ce dernier a abandonné le support du matériel en question. Et même encore aujourd'hui en 2006, on trouve des cartes ou des routeurs qui, bien que certifiés par la Wi-Fi Alliance, n'auront pas ces fonctionnalités sans mise à jour. Et je ne parle pas des équipements plus spécialisés dont certains ne supportent toujours pas le WPA (et ne le supporteront sans doute jamais) ou pour lesquels il a fallu attendre longtemps (n'est-ce pas Livebox, Freebox et compagnie).

En tout cas, si vous prévoyez d'installer un réseau WiFi, allez vérifier la liste des matériels certifiés. Faites l'effort des mises à jour, c'est un one shot initial certes fastidieux, mais au moins après, une fois votre réseau sécurisé correctement, vous pourrez vous gausser des reportages douteux et dormir sur vos deux oreilles.


PS : Ce billet est un billet, et non un super manuel ou un HOWTO. Il s'adresse principalement aux non spécialistes qui ont du mal avec WPA et WPA2. C'est pourquoi je passe donc rapidement sur plein de choses, en oublie volontairement certaines, comme les configurations en 802.1x-EAP, en essayant de ne retenir que l'essentiel. Il se peut cependant que j'ai commis des inexactitudes concernant les OS grand public que je n'utilise pas. Signalez-les moi, je me ferai un plaisir de les corriger.

Notes

[1] On peut donc avoir du WPA avec un chiffrement AES...