Sécurité sans fil – Fonctionnement du WEP

Comme vous le savez probablement déjà, la confidentialité équivalente filaire (WEP) est utilisée par les entreprises pour protéger leurs connexions sans fil contre les attaques de reniflement. Vous avez probablement également entendu dire que ce n’est pas très sécurisé. Dans la première partie de cette série de 2 parties, j’expliquerai le fonctionnement interne du WEP et le suivrai le mois prochain avec les raisons pour lesquelles il n’est pas sûr.

Comme vous le savez probablement déjà, Wired Equivalent Privacy (WEP) est utilisé par les entreprises pour sécuriser leurs connexions sans fil contre les attaques de reniflement. Vous avez probablement également entendu dire que ce n’est pas très sécurisé. Dans la première partie de cette série de 2 parties, j’expliquerai le fonctionnement interne du WEP et le suivrai le mois prochain avec les raisons pour lesquelles il n’est pas sûr.

Ai-je besoin de WEP du tout?

Utilisateur authentique, Bob utilise son ordinateur portable pour consulter son compte Gmail tous les jours. Il a une carte sans fil dans son ordinateur portable qui détecte automatiquement le point d’accès sans fil (WAP) de son FAI juste de l’autre côté de la rue. Une fois qu’il est connecté au WAP, il peut aller de l’avant et vérifier son e-mail. Alice est une utilisatrice sournoise qui ne veut pas payer le FAI pour accéder à Internet. Elle sait cependant que le FAI de l’autre côté de la rue dispose d’un point d’accès auquel tout le monde peut se connecter et accéder à Internet. Elle branche son ordinateur portable et télécharge bientôt de la musique sur Internet. WEP a été conçu pour s’assurer que les utilisateurs s’authentifient avant d’utiliser les ressources, pour bloquer Alice et autoriser Bob. Voyons comment cela fonctionne.

Fonctionnement du WEP

Le WEP utilise l’algorithme RC4 pour chiffrer les paquets d’informations lorsqu’ils sont envoyés à partir du point d’accès ou de la carte réseau sans fil. Dès que le point d’accès reçoit les paquets envoyés par la carte réseau de l’utilisateur, il les déchiffre.

Chaque octet de données sera chiffré à l’aide d’une clé de paquet différente. Cela garantit que si un pirate parvient à déchiffrer cette clé de paquet, la seule information divulguée est celle qui est contenue dans ce paquet.

La logique de chiffrement réelle dans RC4 est très simple. Le texte brut est XOR-ed avec un flux de touches infiniment long. La sécurité de RC4 provient du secret de la clé de paquet dérivée de la chaîne de clés.

Alors, qu’est-ce qu’une clé de paquet?

La clé de paquet est formée en combinant un mot de passe pré-partagé, un tableau d’états et un vecteur d’initialisation (IV). Comprenons d’abord chacun de ces termes :

Mot de passe pré-partagé: Le même mot de passe pré-partagé est utilisé par tous les utilisateurs pour chaque paquet transmis.

Tableau d’états: C’est une série de nombres qui sont brouillés puis utilisés par RC4 pour construire le flux de clés.

Vecteur d’initialisation (IV) : Le IV est un nombre aléatoire de 3 octets généré par l’ordinateur. Il est ajouté ou ajouté au texte chiffré et envoyé au destinataire qui supprime l’IV avant de déchiffrer le texte chiffré.

L’algorithme RC4 se compose de 2 parties principales :

L’algorithme de planification des clés: Le processus KSA consiste à créer un tableau d’états brouillés. Ce tableau d’états sera maintenant utilisé comme entrée dans la deuxième phase, appelée phase PRGA.

L’algorithme de génération pseudo aléatoire : Le tableau d’états du processus KSA est utilisé ici pour générer un flux de clés final. Chaque octet du flux de clés généré est ensuite Xoré avec l’octet de texte brut correspondant pour produire le texte de chiffrement souhaité.

Algorithme de planification des clés

L’IV est calculé à l’aide d’un tableau d’états et des propriétés du mot de passe pré-partagé. Ceci est accompli en créant un tableau de valeurs égales à l’index que vous souhaitez utiliser dans l’algorithme. L’index pour WEP par défaut est 256. Les composants requis pour le KSA sont les valeurs des variables i et j, la valeur d’index, le mot de passe pré-partagé et sa longueur. L’algorithme qui utilise ces valeurs pour générer un flux de clés final est décrit ci-dessous.

Initialisation:

For i=0 ... index-1
S=i
J=0

Brouillage:

For i=0 ... index-1
J = j + state + K
Swap(state , state)

Une boucle s’exécute d’abord de 0 à index-1 pour initialiser le tableau d’états avec des valeurs de 0 à index. Par exemple. Si index = 4, le tableau d’états sera rempli de valeurs de 0 à 3. Par conséquent, les valeurs du tableau seront les suivantes:

s=0 s=1 s=2 s=3 

La valeur de j est définie sur 0. Une autre boucle est alors lancée. Pour chaque fois que la boucle est parcourue, la valeur de j est calculée et la valeur du tableau conservée dans l’état est échangée contre la valeur conservée dans l’état.

Algorithme de génération pseudo-aléatoire (PRGA)

Un générateur de nombres pseudo-aléatoires (PRNG) est un algorithme qui génère une séquence aléatoire de nombres. Le PRGA est responsable de la création des valeurs de streaming utilisées pour chiffrer le texte en clair, qui est basé sur le tableau d’états, la sortie du KSA. La méthodologie suivie par le PRGA est décrite ci-dessous.

Initialisation:

I=0 j=0 index=4 

Algorithme de génération

I=(i+1) mod index
J=(j+state) mod index
Swap(state, state)
Z=state + statemod index]

La valeur de diffusion est créée en parcourant en boucle l’algorithme pour chaque octet du paquet. Les variables i et j sont initialisées à 0. Pour chaque paquet, la valeur de j est calculée, et la valeur de tableau conservée dans l’état est échangée contre la valeur conservée dans l’état. La sortie z est alors calculée pour chaque paquet. À la fin du processus, nous avons un flux PRGA.

Le flux PRGA est ensuite xoré avec le texte brut pour générer du texte chiffré qui est transmis à l’autre partie.

Un exemple

Illustrons les concepts ci-dessus sous la forme d’un exemple. Le texte brut qui doit être chiffré est TEST. Le mot de passe qui sera utilisé ici est 6258. Les valeurs initiales de notre variable sont les suivantes:

i=0 j=0 password=6258 pass length=4 index=4 

En suivant l’algorithme, nous obtenons:

Étape-1

State array: State=0 State=1 State=2 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 6 mod 4 = 2
Swap(State , State) = Swap(0,2)
State=2 State=1 State=0 State=3

Étape-2

i=1 j=2
State array: State=2 State=1 State=0 State=3
Password: K=6 K=2 K=5 K=8
j = + K] mod 4 = 5 mod 4 = 1
Swap(State, State) = Swap(1,0)
State=2 State=0 State=1 State=3

Étape 3

i=2 j=1
State array: State=2 State=0 State=1 State=3
Password: K=6 K=2 K=5 K=8
j = + K]mod 4 = 7 mod 4 = 3
Swap(State, State) = Swap(1,3)
State=2 State=0 State=3 State=1

Étape 4

i=3 j=3
State array: State=2 State=0 State=3 State=1
Password: K=6 K=2 K=5 K=8
j = +K]mod 4 = 12 mod 4 = 0
Swap(State, State) = Swap(1,2)
State=1 State=0 State=3 State=2
Final State Array: State=1 State=0 State=3 State=2

Une fois que le tableau d’états KSA est prêt, la procédure PRGA est initialisée. La procédure est la suivante:

Initially i=0 j=0
K=6 K=2 K=5 K=8

Première Boucle:

State=1 State=0 State=3 State=2
i=1 j=0+State=0+0=0
Swap(State, State) = Swap(0,1)
State=0 State=1 State=3 State=2
z = State + State mod 4] = State = 1
z1 = 00000001

Deuxième Boucle:

State=0 State=1 State=3 State=2
i=2 j=0+State=3
Swap(State, State) = Swap(3,2)
State=0 State=1 State=2 State=3
z = State + State mod 4] = State = 1
z2 = 00000001

Troisième boucle:

State=0 State=1 State=2 State=3
i=3 j=3+State=6 mod 4 = 2
Swap(State,State) = Swap(3,2)
State=0 State=1 State=3 State=2
z = State + State] mod 4 = State = 1
z3=00000001

Quatrième Boucle:

State=0 State=1 State=3 State=2
i=4 j=2+State=2+State = 2+State = 2
Swap(State,State) = Swap(State,State) = Swap(0,3)
State=3 State=1 State=0 State=2
z4 = State + State] = State +
State] = State = 2
z4=00000010

Les sorties z1-z4 à la fin de chaque boucle doivent être Xor’ed avec l’ASCII de chaque caractère de texte brut qui dans notre cas est TEST. Par conséquent, le texte chiffré pour le TEST en texte brut sera le suivant:

T xor z1 = 01010100 xor 00000001 = 01010101 = U
E xor z2 = 01000101 xor 00000001 = 01000100 = D
S xor z3 = 01010011 xor 00000001 = 01010010 = R
T xor z4 = 01010100 xor 00000010 = 01010110 = U

Le mot TEST lorsqu’il est chiffré avec WEP est UDRU.

Cet article n’était qu’une introduction au WEP et à la procédure exacte dans laquelle le cryptage a lieu dans le WEP. Dans la partie suivante, nous aborderons la question qui est la plus importante dans votre esprit: « Pourquoi le WEP n’est-il pas sûr? À quels risques suis-je exposé si j’utilise WEP? »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.