Comment fonctionne WEP

Le protocole WEP (Wired Equivalent Privacy) est le premier protocole sécuritaire qui a vu le jour. Son but était de chiffrer les informations envoyées entre votre PC et l’antenne du routeur de telle manière qu’une personne tierce ne puisse comprendre le contenu de vos communications. Ce protocole repose sur l’utilisation d’une clé WEP d’une longueur allant de 64 à 256 bits. On dit de ce protocole qu’il est "assez fort" (dans le sens ou on ne peut pas brute force la clé WEP), "à synchronisation automatique" (chaque paquet peut être déchiffré indépendamment des autres), "efficace" (le chiffrement/déchiffrement est rapide) et   "optionnel" (on peut ne pas l’utiliser).

Le chiffrement WEP peut-être résumé en un calcul :

P = RC4(IV + K) XOR (M + ICV(M))

Où:
- P est la data chiffrée
- IV est une valeur supposée aléatoire de 24 bits
- K est la clé de chiffrement utilisée d'une taille minimale de 40 bits
- M est le message à chiffrer
- IVC(M) est une fonction permettant de calculer l'intégrité du message M
- + est l'opérateur de concaténation

Nous avons donc un message M:

 

Afin de s'assurer de l'intégrité de ce message (c'est à dire qu'un attaquant n'en a pas modifié le contenu) un hash, l'ICV (Integrity Controled Vector) du message M est généré à l'aide de l'algorithme CRC-32 puis concaténé au message M initial:

Nous obtenons ainsi le premier élément de notre calcul:

M + ICV(M)

Pour créer le second élément nous allons avoir de la clé de chiffrement K ainsi que d'un IV (Initialization Vector). Le vecteur d'initialisation est utilisé afin de ne pas chiffrer de données directement à l'aide de la clé et donc empêcher la récupération de a clé de chiffrement en cas de cassage du message chiffré. Ce vecteur d'initialisation a une taille fixe de 24 bits et est concaténé à la clé de chiffrement:

Le résultat de cette concaténation est ensuite passé au travers de l'algorithme RC4. Globalemnt l'algorithme derrière RC4 est assez simple à comprendre. Tout d'abord nous allons remplir un tableau de 256 bits en utilisant la concaténation de l’IV avec la clé.

Ensuite des opérations mathématiques simples seront effectuées de manière à mélanger le tableau. Ces opérations sont vraiment basiques (addition, soustraction échange etc…). Une fois le mélange effectué on sélectionnera plusieurs bits qui deviendront notre nouvelle clé pseudo aléatoire de chiffrement définitive:

Nous obtenons ainsi le deuxième élément de notre calcul:

RC4(IV + K)

Il ne nous reste plus qu'à xorer les deux éléments entre eux afin d'obtenir le message chiffré. Au résultat du XOR seront ensuite concaténées, les header l'IV, ainsi que le numéro de la clé de chiffrement WEP utilisée en clair:

La trame envoyée contient aussi un header MAC dans lequel se trouve, entre autres, la nature de la trame et les adresses de la source et de la destination. Je l'ai cependant omi dans le schéma ci-dessus pour ne pas l'allourdir. L'IV et le numéro de la clé de chiffremnet sont envoyés en clair tandisque la donnée et l'ICV sont envoyés chiffrés.

De son côté le point d'accès n'aura plus qu'à exécuter l'opération inverse pour déchiffrer la donnée.