Urban Legend
Par Sid,
mercredi 30 août 2006 à 06:57 :: Wi-Fi
:: lu 5074 fois :: #115
:: rss
:: atom
Read it in english with Google

'ai rédigé un précédent billet sur l'attaque du WEP par fragmentation pour tenter de faire un sort à cette histoire de casser les clé WEP en quelques secondes. J'espère être parvenu, chers lecteurs, à vous convaincre. Mais plus loin que les articles que je citais, je me suis évidemment attardé sur les commentaires. Inévitablement, j'en ai trouvé des gratinés. Pour autant, mon but n'est pas ici de vous faire un Best Of, mais plutôt de corriger une autre idée qui, semble-t-il, circule elle aussi.
Je suis en effet tombé sur deux commentaires en particulier, le premier sur LinuxFR et le second sur PCInpact, tous deux affirmant que WPA n'offrirait qu'une authentification unilatérale permettant au point d'accès d'authentifier une station, mais pas le contraire, rendant le protocole vulnérable aux attaques par insertion (MiM).
Qu'en est-il ?
Évidemment, je ne réagis pas à tous les commentaires faux que je peux lire. D'abord parce que c'est fastidieux, time consuming, et surtout parce que ça demande souvent de passer par la case création de compte. Mais là, deux fois la même chose, l'envie de répondre me démangeait. Elle me démangeait d'autant plus que le second commence par "En lisant ce qui se dit ici, je me rends compte que même parmi les gens qui bidouillent, pas mal de fausses vérités circulent.". Je ne peux donc résister à l'envie de réagir ici, ni à celle de citer la portion incriminée du commentaire :
"Certains alors disent de mettre un radius avec WPA (ou avec WEP !!! là, c'est n'importe quoi). C'est une bonne solution, mais qui a ses limites. Déjà, un radius, ça ne se fait pas tout seul, c'est compliqué, surtout si on l'interface avec un LDAP. Après, il existe des attaques. Par exemple du man in the middle : WPA n'identifie que le supplicant, pas l'access point. Du coup, un attaquant peut se faire passer pour la borne.
Pour l'instant, la seule méthode pour avoir du wifi vraiment sécurisé, c'est TKIP (802.11i) avec WPA. Ce qui suppose quand même d'avoir le matériel adéquat et cher, et que celui ci ait une implémentation qui soit pas pourrie."
Il est d'ailleurs assez intéressant de rapprocher ces deux commentaires qui avancent pratiquement les mêmes affirmations en faisant référence au même ouvrage, l'excellent Wi-Foo. Bref...
Examinons donc cette phase d'authentification. WPA, comme je l'expliquais dans un billet précédent, propose deux méthodes d'authentification :
- authentification par clé partagée, dite WPA-PSK ou WPA Personal ;
- authentification EAP, sur un serveur d'authentification, dite WPA-EAP ou WPA Enterprise.
WPA-EAP repose sur 802.1x et le protocole d'authentification EAP. Il s'agit d'une configuration dans laquelle le point d'accès sert de relais, et de relais seulement, entre le client et un serveur d'authentification RADIUS placé en backend. Il appartient à l'administrateur de la plate-forme de choisir une méthode d'authentification entre le client et le RADIUS qui satisfasse ses besoins de sécurité parmi les nombreuses disponibles (plus d'une soixantaine), les plus populaires étant certainement PEAP et EAP-TLS. Sans entrer dans les détails, ces deux méthodes fournissent une authentification mutuelle dans laquelle le client authentifie le serveur RADIUS et inversement. Il existe certes des méthodes comme par exemple EAP-MD5 qui, entre autres faiblesses, est unidirectionelle. Et c'est précisément de cette méthode que parle Wi-Foo, pointant ses limites, citant d'autres méthodes faibles[1] et ce qu'il faut utiliser à la place. Encore une fois, savoir lire ne fait pas de mal non plus... Quoi qu'il en soit, le protocole WPA n'est en rien responsable des mauvais choix de l'administrateur, en particulier sur des points qui n'entrent pas dans son scope. D'ailleurs, si par exemple vous prenez une machine Windows XP, il ne vous proposera tout simplement pas EAP-MD5 pour un réseau WiFi. Premier point donc, quand on s'authentifie en WPA-EAP sur un RADIUS, on a une authentification mutuelle entre le client et le serveur d'authentification.
Les lecteurs pointilleux me répondront que l'authentification a lieu entre le client et le serveur RADIUS, pas le point d'accès. À ce stade, le client n'est donc pas capable de vérifier l'identité du point d'accès, ce qui est tout à fait exact. C'est pourquoi il reste des choses à faire. Continuons donc dans le processus d'authentification. Une fois l'authentification EAP réussie, une clé dite Pairwise Master Key (PMK) commune est négociée entre le client et le RADIUS, lequel la transmet au point d'accès. Vient alors que vient ce qu'on appelle le 4-Way Handshake, un échange de quatre messages destiné, entre autres choses, à vérifier la possession par les deux parties de la même PMK, et ce de façon mutuelle encore une fois. Ce qui veut tout simplement dire qu'une fois cet échange terminé, le client et le point d'accès se seront authentifié l'un l'autre : le client aura vérifié que le point d'accès fait bien partie de l'infrastructure en ce qu'il aura reçu la même PMK que celle générée avec le RADIUS et le point d'accès aura vérifié que le client est bien celui authentifié par la RADIUS. Deuxième point donc, quand on s'authentifie en WPA-EAP sur un RADIUS, on a une authentification mutuelle entre le client et le point d'accès.
Reste donc maintenant l'authentification en WPA-PSK. Typiquement, la mise en œuvre de WPA-EAP, sans être compliquée[2], n'en demeure pas moins une affaire d'utilisateur averti. C'est pourquoi WPA-PSK existe. C'est comme précisé plus tôt une méthode reposant sur un secret partagé sous la forme d'une passphrase[3], d'une longueur comprise entre 8 et 63 caractères, qui ne nécessite pas l'utilisation d'un serveur d'authentification extérieur. En fait, ce secret va être hashé une bon millier de fois pour permettre à chaque partie d'en dériver une même PMK. L'algorithme effectuant cette dérivation étant connu, on peut raisonnablement affirmer que ce secret, la passphrase, représente directement la PMK. Si bien qu'il est prévu par la norme la possibilité de fournir directement la PMK elle-même en tant que secret partagé. À partir de là, le processus d'authentification va être réalisé par le 4-Way Handshake qui, ai-je besoin de le rappeler, permet la vérification mutuelle de la possession de la bonne PMK et donc du même secret partagé. En fait, WPA-PSK se déroule exactement comme WPA-EAP, la phase d'authentification EAP en moins. Troisième point donc, quand on s'authentifie en WPA-PSK, on a une authentification mutuelle entre le client et le point d'accès.
On voit donc bien que l'affirmation selon laquelle WPA ne fournit pas d'authentification mutuelle est fausse. Point, à la ligne. Tout a justement été fait pour que ce soit le cas, puisque l'absence d'authentification mutuelle est une faille bien connue de WEP qu'il fallait corriger. Pour chacune des deux modes d'authentification, une attaque de type MiM échouera lamentablement, sur l'échange EAP pour WPA-EAP ou le 4-Way Handshake pour WPA-PSK. À moins évidemment que l'administrateur n'ait choisi une méthode EAP particulièrement faible puisque ni WPA, ni WPA2, ne vous protègent de la potentielle catastrophe ambulante située entre la chaise et le clavier. On notera également que que les mécanismes d'authentification de WPA et WPA2 sont, à deux détails techniques mineurs[4], rigoureusement les mêmes. Donc affirmer que 802.11i corrigerait une éventuelle faille dans la process d'authentification de WPA a donc assez peu de sens.
La dernière phrase est également intéressante, dans la mesure ou TKIP n'a rien à voir avec l'authentification. Il s'agit d'une des méthodes de chiffrement proposées avec CCMP[5] (reposant sur AES), dans WPA et WPA2 (802.11i). Elle repose sur le bon vieux moteur RC4 des cartes WiFi, constituant ainsi un espèce de patch de compatibilité avec le matériel ne supportant pas le chiffrement AES. Sans être spécialement faible, il s'agit tout de même d'un mécanisme compliqué qui ne saurait être plus sûr que CCMP qu'on lui préférera dans la mesure du possible. Quant à l'affirmation sur le matériel cher, c'est également faux. Tout matériel certifié Wi-Fi, ce qui représente l'essentiel du parc matériel[6], devant supporter WPA depuis 2003 et WPA2 depuis 2005, il supporte de facto TKIP. En pratique, toutes les cartes WiFi et les points d'accès que j'ai pu tester récemment supportent au minimum WPA-PSK et WPA-EAP, la plupart supportant également WPA2 dans ces deux modes. Même mon D-Link DWL-G730AP supporte tout ça dans 8x6x1.7cm pour un prix tout à fait modique. Et si vous avez l'âme d'un bidouilleur, vous pourrez acquérir un de ces routeurs WiFi supportés par OpenWRT, les flasher avec cet excellent système et y installer les quelques packages nécessaires à en faire un point d'accès WPA/WPA2 avec serveur RADIUS embarqué. Point besoin de matériel de folie ni de salle machine dans votre cave pour atteindre les meilleurs niveaux de sécurité pour votre réseau WiFi.
Par contre, je dois bien avouer que certains matériels font l'objet d'une piêtre implémentation, que ce soit les drivers ou les firmwares. J'ai par exemple une excellente carte Netgear dont le seul défaut est de souffrir d'un bien piêtre driver Windows. Bien qu'annonçant le support[7] de WPA2, il se révèle incapable de fonctionner en chiffrement AES lorsque le réseau est partagé par des clients utilisant TKIP. Manifestement, il n'est pas capable de gérer deux chiffrements différents pour l'unicast et le multicast, nécessitant sa reconfiguration en TKIP manuelle. Et paf.
Notes
[2] Il existe par exemple des packages tout prêt pour OpenWRT.
[3] Qu'on choisira évidemment longue et compliquée, forcément...
[4] Négociation RSN des paramètres de sécurité et PMK Caching pour accélerer le roaming
[5] 802.11i propose également WRAP dont on sait qu'il n'est pas plus sûr que CCMP et souffre d'être sujet à des disputes de brevets.
[6] Hors matériels non informatiques et autres gadgets produits par des constructeurs un poil feignants.
[7] Non certifié, forcément...
Commentaires
1. Le mercredi 30 août 2006 à 11:41, par jme
2. Le jeudi 7 septembre 2006 à 14:02, par Jco
3. Le mercredi 8 août 2007 à 14:17, par somebodyishere
Ajouter un commentaire