wep et cracker des mots de passe - diensfouque/wep+rainbow.pdf · initialisation (ksa algo) •...

Post on 03-Aug-2020

7 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

WEP et Cracker des mots de passe

Pierre-Alain Fouque

mercredi 27 novembre 13

WEP, WPA et RC4...

mercredi 27 novembre 13

RC4-WEP• Réseaux sans fil IEEE 802.11

• WEP Wired Equivalent Privacy

• Authentification et Chiffrement

• WEP: Clé 64 bits (24 bits d’IV + 40 bits de clé)

• 5 heures pour exhauster

• Crackers: Wep_crack, Wepdecrypt, AirSnort

• Clé plus longues (128 à 256 bits) ne sont pas des solutions !

mercredi 27 novembre 13

WPA• Wi-Fi protected access ⊂ IEEE 802.11i

• Fonctionne 802.11b (11 Mbit/s sur bande 2,4 Ghz), 802.11a (54 Mbit/s sur 5 Ghz),...

• Mise à jour logicielle

• améliore confidentialité et authentification

• Chiffrement: TKIP (chiffrement), MIC (Message Integrity Check), IV=48 bits (évite rejeu)

mercredi 27 novembre 13

TKIP (Temporal Key Integrity Protocol)

• Clé temporaire 128 bits (partagée entre clients et point d’accès radio)

• Combine la clé avec adresse MAC du client et IV de 16 octets pour fournir la clé

• TKIP utilise RC4 (comme WEP) mais la clé temporaire est changée tous les 10 000 paquets

• WEP utilise une clé statique (rarement modifiée)

• Authentification (absente dans WEP): 802.1x

• EAP (Extensible Authentication Protocol)

mercredi 27 novembre 13

802.11i

• Nouveau standard: modification matérielle

• utilisation de l’AES (coprocesseur dédié)

• Mode CCM (Counter mode with CBCMAC)

mercredi 27 novembre 13

RC4 PRGA• Stream cipher conçu par Ron Rivest (Ron’s Cipher 4)

• très facile d’implémentation en logiciel

• PRGA Algo: S initialisé à une permutation aléatoirei := 0j := 0while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap values of S[i] and S[j] K := S[(S[i] + S[j]) mod 256] output Kendwhile

mercredi 27 novembre 13

Initialisation (KSA Algo)

• RC4-WEP: IV suivi de la clé K

• Si longueur de clé <256 octets, on boucle

• Attaque de Fluhrer, Matin, Shamir (2001)

• Fréquence des premiers octets sorties non random

• Klein (2005): aircrack-ptw: 128-bit keys (<1 minute)

for i from 0 to 255 S[i] := iendforj := 0for i from 0 to 255 j := (j + S[i] + key[i mod keylength]) mod 256 swap values of S[i] and S[j]endfor

Permutation initiale

Permutation finale aléatoire

mercredi 27 novembre 13

Attaque FMS (2001)• 128 bits = 3 octets d’IV initialement et 13 de clés k

• Supposons qu’on connaisse les n octets de début de la clé K et on veut retrouver l’octet K[n]=k[n-3](K[0]=IV[0],K[1]=IV[1],K[2]=IV[2],K[3]=k[0],...K[n-1]=k[n-4])

• Rem: on peut connaître l’état de la permutation S à l’issu de la n-ième étape de l’algo KSA et la valeur j

• Supposons: K[0]=IV[0]=n et K[1]=IV[1]=255. Supposons les valeurs de S ne sont modifiées qu’une seule fois dans KSA (aux indices 0,1, et n)

mercredi 27 novembre 13

Attaque FMS 2001

• Supposons: K[0]=IV[0]=n et K[1]=IV[1]=255. Supposons les valeurs de S ne sont modifiées qu’une seule fois dans KSA (aux indices 0,1, et n)

• Alors z1=Sn-1[jn-1+Sn-1[n]+K[n]] avec jk la valeur de j à la k-ième itération de la boucle KSA et Sk la valeur de la table S à cette itération

• Les valeurs en bleues sont connues et en rouge ce qu’on recherche

• Facile de trouver K[n]

mercredi 27 novembre 13

Analyse Attaque FMS• Sachant que IV[0]=n et IV[1]=255 (valeurs qui

ne sont pas chiffrées), quelle est la probabilité que les 3 valeurs ne soient pas modifiées plus d’une fois ? ≈1/e3

• Attaque: il faut utiliser plusieurs IV pour calculer la fréquence d’apparition de la bonne valeur de K[n]

• TP: simuler les chiffrements avec ces IVs• http://perso.eleves.ens-rennes.fr/~pkarp892/rc4KR1729.c (fichier seul complet)

• http://perso.eleves.ens-rennes.fr/~pkarp892/RC4KR.tar.bz2 (archive avec le squelette du fichier et le PRNG & Makefile)

mercredi 27 novembre 13

Mots de passe

mercredi 27 novembre 13

Entropie et nombre de mot de passe

• Généralement peu d’entropie

• alphabet de (26*2+10+8)=70 caractères

• longueur 6 caractères: (70)6=117649000000≈236.8

• longueur 8 caractères:708=249

• En général, pas complètement aléatoire... et l’entropie est réduite: H(X)=-∑ipilog(pi) X=source

• pi=fréquence d’apparition des lettres, si pi=1/#A, H(X)=36.8 pour longueur 6 caractères

mercredi 27 novembre 13

NTLM mot de passe• En général, les mots de passe ne sont pas salés• LM Hash: Ne gère pas la casse

• Le mot de passe est séparé en deux éléments de 7 caractères.

• Si le mot de passe a une longueur inférieure à 14 caractères il est complété par des caractères nuls.

• Le hash de chaque morceau est calculé séparément. Ces valeurs sont utilisées pour créer 2 clés DES, une pour chaque 7-

octet. Chacune des deux clés est utilisée pour chiffrer la chaîne constante “KGS!@#$%”

• Les deux hashs concaténés forment le hash LM sur 128 bits.

• Salage: on stocke Hash(pw || sel)=h, sel

• Quand on reçoit pw’, on vérifie si H(pw’||sel)=h ?

• Coûte cher à l’adversaire de tester les sels

mercredi 27 novembre 13

Authentification Windows• LM Hash: si on utilise les 95 caractères imprimables ASCII, il y

a 9514≈292 hachés différents

• Comme on découpe en 2 parties, il y a 957≈246 mots de passe de 7 caractères et comme la casse ne compte pas, seulement 697≈243

• Cassage par force brute en quelques heures...

• Attaque par dictionnaire: précalculer tous les hachés

• Pas de sels: technique pour éviter les attaques par dictionnaire

• Détecter petit mot de passe: termine par le chiffré de la clé 0, 0xAAD3B435B51404EE

• NTLM hash: MD4(mot de passe)=haché sur 128 bitsmercredi 27 novembre 13

Rainbow Table

• Amélioration par rapport aux tables de Hellman (1977) pour rechercher des clés DES si on connaît un bloc A, DESK(A)

• Proposée par Philippe Oeschlin à l’EPFL en 2003

• Idée principale: Faire un gros précalcul en calculant toutes les valeurs (K,DESK(A)) et faire un compromis temps/mémoire efficace

mercredi 27 novembre 13

Tables de Hellman• Idée: Faire des chaînes et ne retenir que la

première et la dernière valeurs

• Supposer que la valeur recherchée est quelque part dans la table, itérer la fonction et vérifier si on tombe sur une valeur finale d’une chaîne qui est dans la table

• Si c’est le cas, à partir de la valeur initiale de la chaîne correspondante, itérer la fonction f jusqu’à retrouver C=DESK(A)

• En général: f(K)=lsb(DESK(A)) de poids faibles

mercredi 27 novembre 13

Analyse et Problèmes

• Analyse de complexité: N taille espace de recherche

• supposons que t soit la longueur des chaînes

• si on a m chaînes, on couvre une fraction mt/N

• si mt2≈N, on va avoir des collisions

• t tables avec t fonctions f différentes et chaque table contient mt valeurs

mercredi 27 novembre 13

Rainbow tables• Arranger différemment les calculs pour

réduire qu’une collision interne devienne une collision pour le reste de la chaîne

mercredi 27 novembre 13

Mots de passe et Rainbow Tables• Trouver un mot de passe à partir de son empreinte

(haché). Eg. le mot de passe Fgpyyih804423 est retrouvé en 160 secondes...

mercredi 27 novembre 13

Conclusions• RC4+WEP:

• RC4 rapide (mais sécurité non maîtrisée)

• Initialisation mauvaise: Mettre la clé avant l’IV

• Rainbow Tables:

• Inverser une fonction avec taille de l’entrée petite ou faible entropie

• Fonctionne aussi avec de petites clés par exemple communications GSM avec A5/1

• Saler les mots de passe !mercredi 27 novembre 13

top related