Théorie et chiffrement WPA/WPA2

On le sait, le protocole WEP est dorénavant obsolète. Hors c’était le seul protocole qui permettait l’utilisation d’une connexion Wi-Fi à peu près sécurisée. Il fallait donc créer un nouveau protocole de communication et ce rapidement. Cependant les recherches sont lentes et ne mènent à rien… Jusqu’en 2003 ou l’IEEE créa le protocole WPA puis par la suite le protocole WPA2. Dans cet article nous verrons comment fonctionnent ces deux protocoles et comment les cracker.

Deux méthodes d'authentification sont disponibles avec WPA/2.

La première c’est l’identification classique via un mot de passe. Cette authentification est destinée aux petits réseaux, les réseaux domestiques (entres autres) et nécessite donc l’utilisation d’un mot de passe qui permet de se connecter au réseau. C’est ce qu’on appelle WPA PSK (Pre Shared Keys) ou aussi WPA Personnal.

La seconde est destinée aux larges réseaux (entreprise, hôpitaux, hôtels etc…). C’est une méthode d’identification beaucoup plus sécurisée (puisqu’elle ne repose pas sur un mot de passe) mais aussi plus compliquée à mettre en œuvre. On l’appelle WPA MGT ou encore WPA enterprise. Il existe beaucoup de déclinaisons de WPA MGT et la plus courante utilise un serveur RADIUS.

Un serveur RADIUS (Remote Autentification Dial-In User Service) est un serveur dont le seul but est de gérer l’authentification. Pour se connecter il suffit d’avoir un couple login/mot de passe valide (donné par l’administrateur réseau).

Ce serveur était à l’origine utilisé par les fournisseurs d’accès afin de permettre à leurs clients de se connecter au réseau à distance. Il est toujours utilisé et son fonctionnement est assez simple à comprendre.

Un serveur RADIUS gère l’authentification (qui parle), l’autorisation (que peut-il faire) et l’accouting (que fait-il).

Donc lorsqu’un utilisateur va vouloir se connecter au réseau, il va passer par un client RADIUS qui va lui demander son identifiant et son mot de passe. Le client RADIUS va transmettre (de manière chiffrée) les informations au serveur RADIUS qui va s’occuper de vérifier l’exactitude des données. Pour cela il va interroger une base de données. Puis le serveur RADIUS va renvoyer 3 types de réponse, une réponse positive (l’utilisateur est connecté au réseau), une réponse négative (l’utilisateur n’est pas connecté) ou une réponse dites « challenge ». Dans ce cas-là le serveur RADIUS va demander des informations supplémentaires à l’utilisateur comme par exemple un autre login/mot de passe.

Voici un schéma récapitulatif :

 

Une autre méthode d’identification est appelée EAP-TLS. EAP est un protocole de communication réseau qui permet de s’authentifier via de nombreuses méthodes. Dans notre cas ça sera la méthode TLS. L’administrateur réseau vous fournit un fichier qui contient une clé personnelle. Vous devrez par la suite soumettre votre certificat à un logiciel d’accès distant.

Pour résumer le tout voici un schéma récapitulatif :

wpa1.png
Tout comme pour WEP, WPA utilise l’algorithme de chiffrement RC4. On est donc en droit de se demander ce qu’il y a de différents entre WEP et WPA. Vous allez voir que même si le principe reste identique il y a beaucoup de différences.

Tout d’abord la longueur de la clé ainsi que du vecteur d’initialisation ont été augmenté (de respectivement 64 et 24 bits à 128 et 48 bits). Ensuite la clé utilisée pour chiffrer les communications est modifiée tous les 10 Ko de données envoyées via l’algorithme TKIP. Concrètement cela veut dire que l’on va utiliser une nouvelle clé à chaque fois que l’on va envoyer un nouveau paquet de données (nous en reparlerons plus tard). De plus le vecteur d’initialisation est haché contrairement à WEP où il passe en clair. Enfin un nouveau protocole dénommé MIC (Mickaël) est utilisé afin d’empêcher la modification des données au sein du paquet (encore grâce à TKIP).

Ce qui est intéressant avec WPA ce n’est pas le chiffrement de données mais plutôt comment sont créées les clés de chiffrement. Voyons ça en détails :

Lorsqu’un client va se connecter au point d’accès, une première clé va être créée : la PMK (Pair Wise Master Key). Elle est obtenue en appliquant cette fonction :

PMK=PBKDF2(HMAC SHA1, mot_de_passe, nom_du_SSID, 4096,256) ;

Ok, quelques explications s’imposent. PBKDF2 est une fonction de dérivation de clé utilisée pour le hachage de mot de passe ou dans notre cas la génération de clés de chiffrement de données.

HMAC SHA1  est la fonction de hachage a utilisé, le mot de passe c’est celui utilisé pour se connecter au réseau Wi-Fi, le nom du SSID c’est l’identifiant de votre point d’accès, 4096 c’est le nombre de fois que l’on va hacher et 256 correspond à la longueur de la clé que l’on souhaite récupérer.

A partie de là il faudra faire la distinction entre réseau Wi-FI Ad-Hoc et Infrastructure. Ad Hoc veut dire que les matériels informatiques peuvent communiquer directement entre eux sans passer par le point d’accès. En mode infrastructure, les équipements sont obligés de passer par le point d’accès pour atteindre un autre équipement.

Avec la PMK on va créer une nouvelle clé, la PTK (Pair Wise Transient Key de 512 octets) obtenue ainsi :

PTK = PMK + APnonce + STAnonce + APMAC adresse + STAMAC adresse

Avec « + » l’opérateur de concaténation à ne pas confondre avec l’addition. Les APnonce et STAnonce sont des nombre arbitraires pseudo aléatoires utilisés une seule fois lors de la connexion entre le client et le point d’accès et les APMAC et STAMAC sont les adresses MAC du client et du point d’accès.

Une fois qu’on a la PTK, on va la découper en quatre nouvelles clés :

-La KCK (Key Confirmation Key) qui sert à authentifier la provenance des paquets
-La KEK (Key Encryption Key) qui sert à chiffrer les données sensibles envoyées  (qui permettent la création des différentes clés)
-La TK (Transmission Key) qui sert à chiffrer les flux de données (Deux clés)

Encore une fois un schéma pour récapituler le tout :

wpa2.pngDans le cas ou on utilise un réseau Ad-Hoc alors on générera en plus de la PTK une GMK et une GTK (Group Master/Transien Key).

Et c’est là qu’entre en jeu le protocole TKIP qui va permettre d’effectuer un roulement de clés (dont je vous ai parlé au début) à partir de la TK. Pour cela TKIP va créer des nouvelles clés dérivées de la TK en utilisant successivement deux fonctions de hachage. Je m’arrête ici pour la partie théorie, si vous voulez aller plus loin je vous conseille ce pdf. Le principale est là et voici un schéma récapitulatif :

wpa3.pngOn voit donc ici que le fonctionnement est bien différent de celui de WEP. De nombreuses protections ont été implémentés pour empêcher les attaques par rejeu par exemple. Pourtant WPA PSK est faillible. Mais qu'en est-il de WPA2 ? WPA2 est identique dans le fonctionnement à WPA, cependant WPA2 n’utilise pas le protocole TKIP mais CCMP.

CCMP (Counter-Mode/CBC-Mac protocol) est un protocole qui -tout comme TKIP- gère le roulement des clés de chiffrement ainsi que le contrôle d’intégrité des messages. Ce protocole est basé sur l’algorithme AES pour Advanced Encryption Standard. C’est un algorithme extrêmement puissant considéré comme étant le plus sûr actuellement.