From d8343980aaa4f4b4b771d0c2f8b319c71417fbb7 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Tue, 13 Dec 2022 01:22:15 +0100 Subject: [PATCH] Add wifi lesson --- content/secu_reseaux/8_wifi/index.md | 124 +++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 content/secu_reseaux/8_wifi/index.md diff --git a/content/secu_reseaux/8_wifi/index.md b/content/secu_reseaux/8_wifi/index.md new file mode 100644 index 0000000..8728d90 --- /dev/null +++ b/content/secu_reseaux/8_wifi/index.md @@ -0,0 +1,124 @@ +--- +title: "Sécurité des réseaux : les réseaux Wifi" +date: 2022-11-15 +tags: ["authetification", "WPA", "wifi"] +categories: ["Sécurité des réseaux", "Cours"] +matjax: true +--- + +Contrairement à un réseau filaire, tout le monde (avec une carte réseau Wifi) +peut observer le trafic réseau. Il faut donc chiffrer les communication c'est le +rôle des différents protocoles: WEP, WPA, WPA2 etc. + +La contrainte énergétique est importante et guide les chois techniques. + +## WEP -- Wired Equivalent Privacy + +(Non! Non! ce n'est pas une blague) + +Les clients et la borne partagent une clé statique de 64 ou 128 bits. Le +chiffrement est basé sur *RC4* et la détection d'erreur sur CRC. C'est un +protocole **cassé depuis longtemps** + +Au niveau de l'émetteur: + + 1. Calculer la somme de contrôle du paquet et les ajouter à ce dernier + 2. Calculer un nouvel *Initialisation Vector* et l'ajouter à la clé pour former + une clé + 3. Utiliser l'algorithme RC4 pour former une clé de flux donc la longueur est + égale à celle de la trame (données + CRC) + 4. obtenir la trame chiffrée : \\(trame \xor cle_flux \\) + 5. Ajouter l'IV dans l'entête de la trame chiffrée. + +Le récepteur récupère l'IV de l'entête pour reconstituer la clé de flux puis +réalise les opération de l'émetteur dans le sens inverse. + +La seule variable ici est l'*IV* d'une taille de 24 bits seulement. Un attaquant +peut alors récupérer des trames et tester des collisions pour faire baisser +l'entropie (attaque passive). + +## WPA + +Le changement est simple : on passe d'un *IV* statique à un *IV* dynamique et +un meilleur algorithme de somme de contrôle (pour l'intégrité). Ce protocole est +dérivé de la norme 802.1x. + +Deux modes existes : + + * **personnel**: la même clé est utilisé pour tous les protagoniste; + * **entreprise**: établissement d'une connexion TLS puis identification. + +### Poignée de main + +Dans le cadre d'une connexion par **phrase de passe**, celle-ci est transformée +en PSK (*Pre-Shared Key*). Ensuite le système génère une clé temporelle: la +*PTK* : + +\\(PTK = PSK, @MAC_{client}, @MAC_{borne}, N_{client}, N_{borne}\\) + +L'*IV* est remplacé par le TSC, un compteur sur 128 bits + +\\( keystream = f(TSC, PTK)\\) + +*PTK* est renégociée lorsque *TSC* est au bout ou presque. + +Pour garantir l'intégrité des messages, *WPA* utilise MIC don l'implémentation +(*MIChael) est dérivée de *HMAC-SHA1*. Le MIC est calculé sur le paquet +**avant** fragmentation. + +## WPA2 + +C'est le même protocole que WPA mais avec des algorithme de cryptographie à +jour: `AES` et `SHA-256`. + +## Les attaques sur WPA 1/2 + +Le rejeu est casi-impossible à cause de *TSC*. Cependant en 2014, `Chop-Chop` +est adaptée à WPA. + +Avec l'arrivée des bornes multi-canaux, les constructeurs ont implémentés un +*TSC* par compteur. Il est donc possible de rejouer un paquet provenant d'un +canal avec un gros TSC sur un canal avec un TSC plus petit. Il suffit de choisir +un petit paquet pour éviter la fragmentation et observer ensuite ce qui se +passe. + +### KRACK! + +Ici l'attaquant se position en MitM sur un canal de la borne. Il commence à +rejouer les paquets tel quel entre la borne et le client. Lors de l'installation +de la *PTK* puis son envoi, l'attaquant de transmet pas les paquets au client. + +Le serveur va redemander les paquets au client qu'il va lui envoyer **en +clair**. L'attaquant dispose alors d'une version chiffrée et en clair d'un même +paquet. Il est possible **d'en déduire la keystream*. + +### WPA3 + +C'est globalement la même base que *WPA2*' mis à part la poignée de main. + +Dans WPA2 nous avons \\(PSK \to PMK \to PTK\\), la PMK est commune à tous les +clients (la *PTK* est propre à chacun d'eux). Dans WPA3 nous voulons que la +*PMK* soit **différente** pour chaque client et aussi **se débarrasser de la +phrase de passe dans la poignée** de main. Un peu la manière de *Kerberos*. + +### poignée de main + +3 modes de fonctionnement: + + 1. ouvert (chiffrement opportuniste); + 2. personnel SAE (dragonfly) + 3. entreprise + +Avant le dq'ebut de la poignée de main, il y a un échange de clé *Diffie +-Hellman*. Puis vien ensuite la poigné de main du type *4 way hanhshake* + +Pour générer \\(g_{client}\\) et \\(g_{borne}\\) on applique fonction pour +dériver la phrase de passe. La poignée de main est **maintenant chiffrée**. + +L'inconvénient est la puissance de calcul nécessaire pour mettre en place le +canal sécurisé est importante, surtout pour du matériel emparqué. Un attaque +possible serait de bonbarder la borne de demande de poignée de main pour la +saturer: une attaque par déni de service. + +WPA3 reste tout de même compatible avec WPA2, une attaque **par downgrade** est +donc possible.