Les mots de passe sont le mécanisme d'authentification le plus courant, à l'interface entre les utilisateurs humains et les protocoles cryptographiques. Choisir et gérer des mots de passe, et les utiliser pour authentifier des utilisateurs, est un travail complexe. Dans cette présentation, nous verrons comment choisir un bon mot de passe, estimer son entropie, et l'utiliser dans un protocole d'authentification. Nous verrons aussi comment on attaque des mots de passe (dictionnaires, "rainbow tables") et comment on se protège de ces attaques. Nous finirons par un aperçu des protocoles dits "PAKE" (Password-Authenticated Key Exchange) qui permettent de résoudre le problème intrinsèque des mots de passe, à savoir l'augmentation de puissance des ordinateurs face à la stagnation de la puissance des cerveaux humains.
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
Mots de passe et mécanismes d’authentification (Thomas Pornin)
1. ´
Mots de passe et mecanismes d’authentification
Thomas Pornin
Hackfest 2010
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 1 / 29
2. Plan
1 Notions fondamentales
2 Stockage
3 Authentification
4 Conclusion
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 2 / 29
3. Notions fondamentales
´
Definition
´
Definition
Un mot de passe est une information confidentielle, qu’un utilisateur
´ ´ ´ ´
peut memoriser et reproduire precisement dans un dispositif d’entree.
´
Il s’agit de faire le lien entre une identite physique et le monde
´
numerique (des 0 et des 1...).
Mot et passphrase
NIP
mots de passe graphiques
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 3 / 29
4. Notions fondamentales
´
Concurrent : biometrie
´ ´ `
Biometrie : des informations attachees a l’utilisateur :
empreintes digitales
reconnaissance faciale
´
scan retinien
`
Problemes :
´ ´
L’information est specifique mais pas forcement confidentielle.
´ ´
L’information biometrique n’est pas precise.
´ ´ ´ `
La specificite n’est pas verifiable a distance.
´
L’information n’est pas detachable.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 4 / 29
5. Notions fondamentales
`
Concurrent : carte a puce
` ` ˆ ´
Carte a puce : l’information secrete est sous le controle d’un materiel
´ ´
blinde capable de s’en servir pour des operations cryptographiques
complexes.
`
Problemes :
Cout (production, distribution).
ˆ
Importante latence initiale.
La carte n’est pas attachee a l’utilisateur −→ on rend l’utilisateur
´ `
responsable.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 5 / 29
6. Notions fondamentales
Entropie
´
Definition
ˆ
L’entropie est une mesure de ce qu’un mot de passe aurait pu etre.
entropie de n bits = en essayant des mots de passe possibles, on
trouve le bon en, en moyenne, 2n−1 essais.
´
L’entropie qualifie le processus de selection du mot de passe, pas le
ˆ
mot de passe lui-meme.
Les utilisateurs choisissent des mots de passe de faible entropie.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 6 / 29
7. Notions fondamentales
Entropie : exemples et mesure
6 lettres minuscules : 266 ≈ 228.2
Deux lettres, deux chiffres, deux lettres, deux chiffres :
ix71yn45 di30lz43 to71sy30 np37kj76
entropie : 264 × 104 ≈ 232.1
´
Quand tous les mots de passe possibles ne sont pas equiprobables, la
´
mesure de l’entropie est plus compliquee.
John the Ripper : outil de craquage par essais de mots courants et
variantes.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 7 / 29
8. Notions fondamentales
Faiblesse des mots de passe
1980 :
vs
25 kOps/s
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 8 / 29
9. Notions fondamentales
Faiblesse des mots de passe
1980 :
vs
25 kOps/s
2010 :
vs
25 GOps/s
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 8 / 29
10. Notions fondamentales
Faiblesse des mots de passe
1980 :
vs
25 kOps/s
2010 :
vs
25 GOps/s
Les mots de passe sont devenus un million de fois plus faibles en
30 ans.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 8 / 29
11. Notions fondamentales
Imposer un bon mot de passe
Encadrer le choix est difficile (quality meter vs entropie).
L’utilisateur est hostile :
´ ´ ´
la securite n’est pas une fonctionnalite
´ ` ´ ´ ı ´
le perimetre de securite est mal maˆtrise
´
grand inventivite dans le contournement
On peut tenter de responsabiliser l’utilisateur (inapplicable dans de
nombreux contextes).
Entropie atteignable en pratique : environ 32 bits.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 9 / 29
12. Stockage
Contexte : stockage
password, data
´ ´ ` `
Contexte : authentification sur un canal protege aupres d’un systeme
` ˆ ´
sur . On s’inquiete des conditions de stockage cote serveur.
ˆ
serveur Web SSL (https://)
/etc/passwd ou /etc/shadow
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 10 / 29
13. Stockage
Hachage
Une fonction de hachage est une transformation :
´
portant sur des donnees binaires arbitraires
avec une sortie de taille fixe
´
publique et deterministe
rapide
´
irreversible et sans collisions
Exemples : MD5, SHA-1, SHA-256, Tiger. On peut aussi
´
deriver un hachage d’une fonction de chiffrement par blocs.
´
Principe : on stocke le mot de passe hache. On recalcule le hachage
´
lors de la verification.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 11 / 29
14. Stockage
Attaque efficace
Attaque basique : on essaye des mots de passe possibles.
PC Intel Core2 Q6600 : 48 millions SHA-1 par seconde
GPU NVidia 9800 GTX+ : 160 millions SHA-1 par seconde
´
Un mot de passe de 32 bits d’entropie ne resiste que 13 secondes !
Contremesure : rendre le hachage plus lent :
´
hacher la concatenation de 10000 copies du mot de passe
´
hacher la sortie recursivement
´
Ceci ralentit l’attaquant et l’utilisateur legitime.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 12 / 29
15. Stockage
Attaques et partage
Partage : l’attaquant fait un hachage pour attaquer plusieurs mots de
passe.
`
Attaque parallele : l’attaquant a une copie de /etc/passwd
`
(/etc/shadow) et cherche a obtenir le mot de passe d’un
utilisateur quelconque.
´ ´
Table precalculee : les hachages de nombreux mots de passe
´ ´
courants sont stockes dans une table triee : l’attaque est une
simple lecture.
´ ´
Google est une grosse table precalculee. Exemple : chercher
721a9b52bfceacc503c056e3b9b93cfa .
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 13 / 29
16. Stockage
´
Compromis temps/memoire de Hellman (1980)
´
Le compromis temps/memoire de Hellman est une technique de
´ ´
compression d’une table precalculee.
H R H R H H R H
π1 −→ v1 −→ π2 −→ v2 −→ π3 −→ · · · −→ vt−1 −→ πt −→ vt
´
On ne stocke que les debuts et fins de chaˆne (π1 , vt ). Pour l’attaque,
ı
´
on part du hachage attaque et on recalcule la chaˆne correspondante.
ı
Pour supporter les collisions de chaˆnes, il faut plusieurs fonctions de
ı
´
reduction R, et plusieurs tables. Cout :
ˆ
´
stockage divise par t
l’attaque necessite t 2 invocations de H
´
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 14 / 29
17. Stockage
Rainbow tables (2003)
Une rainbow table est une optimisation sur le compromis de Hellman :
H 1 R H 2 R H H Rt−1 H
π1 −→ v1 −→ π2 −→ v2 −→ π3 −→ · · · −→ vt−1 −→ πt −→ vt
Moins de collisions de chaˆnes, donc moins de tables. Le cout CPU est
ı ˆ
´
divise par deux.
Variantes : fuzzy / thick / thin rainbow tables.
Cout initial
ˆ
La construction de la table doit passer par tous les mots de passes
attaquables.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 15 / 29
18. Stockage
Salt
´
Definition
`
Une salt est un parametre public qui modifie le hachage d’un mot
´
de passe (la salt selectionne la fonction de hachage).
´
Idealement, chaque mot de passe utilise une salt unique.
´
Moyen simple : choisir une salt aleatoire de taille suffisante pour que la
´
reutilisation soit hautement improbable :
16 octets sont plus que suffisants
´´ ´
une nouvelle salt pour chaque mot de passe cree ou change
´ ´
la salt est stockee en clair avec le hache
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 16 / 29
19. Stockage
Exemple
`
Obtenu sur un systeme Linux (Ubuntu 10.04) :
$6$NmmN5L0O$vqOf3DuGNf.CHVpIcJZ9u2LmVS.NWhifwipwp
fmZVMMQxamKXAlVGg0VMo1ScMQsSBtdXbrssLO/MpSKh7rLz.
$ ´
separateur
6 fonction de hachage (6 = SHA-512)
NmmN5L0O salt
vqOf3D... ´
mot de passe hache (encodage Base64)
´
Le hachage est une mixture compliquee qui implique environ 5000
invocations de SHA-512 et de multiples insertions du mot de passe et
de la salt.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 17 / 29
20. Authentification
Contexte : authentification
password, data
`
Contexte : authentification a distance ; l’attaquant peut agir sur le
canal de transmission.
HTTP
PPP (RTC, ADSL)
appariment Bluetooth
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 18 / 29
21. Authentification
HTTP : Basic
´ ´
Specifie dans la RFC 2617.
1 ˆ
Le client envoie sa requete.
2 ´
Le serveur repond 401 (Unauthorized) avec :
WWW-Authenticate: Basic realm="Foo"
3 ` ˆ
Le client envoie a nouveau sa requete avec :
Authorization: Basic dXNlcjpwYXNz
(encodage Base64 de username:password).
´ ´ ´
Simple presentation du mot de passe en clair. Securite nulle dans la
plupart des cas. HTTPS quasiment obligatoire.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 19 / 29
22. Authentification
HTTP : Digest
´ ´
Specifie dans la RFC 2617.
´
Principe : le serveur envoie un nonce ; le client repond par
H(π||n||u) (n = nonce, u = nom de l’utilisateur et URL requise).
ˆ ´ ´
auth-int : controle d’integrite optionnel :
ˆ
un nouveau nonce par requete
ˆ ´
le hachage couvre le corps de la requete ou de la reponse
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 20 / 29
23. Authentification
HTTP : Digest
Hachage simple : mauvaise protection face aux attaques par
dictionnaire.
Gestion de multiples nonce (complexe, sensible aux pannes).
auth-int ne couvre que le corps :
changer les nonces
forcer l’utilisation d’une fonction de hachage
forcer l’utilisation de auth
ˆ
modifier d’autres entetes (Redirect...)
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 21 / 29
24. Authentification
HTTP : Digest
Hachage simple : mauvaise protection face aux attaques par
dictionnaire.
Gestion de multiples nonce (complexe, sensible aux pannes).
auth-int ne couvre que le corps :
changer les nonces
forcer l’utilisation d’une fonction de hachage
forcer l’utilisation de auth
ˆ
modifier d’autres entetes (Redirect...)
HTTP Digest n’est que marginalement plus sure que Basic. SSL/TLS
ˆ
quasiment indispensable.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 21 / 29
25. Authentification
Attaques offline et online
´
Attaque offline : l’attaquant peut verifier un mot de passe sur ses
` `
propres systemes. Exemple : retrouver le mot de passe a partir de
´
son hache.
´
Attaque online : l’attaquant ne peut verifier un mot de passe qu’en
`
interagissant avec un systeme qui connaˆt ce mot de passe. Ce
ı
` ´ ´
systeme peut limiter arbitrairement le debit des reponses
`
(exemple : code PIN sur carte a puce).
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 22 / 29
26. Authentification
PAKE
´
Password-Authenticated Key Exchange designe un protocole
´ ´
d’etablissement de cle avec authentification mutuelle selon un secret
´
partage.
`
Les protocoles PAKE protegent contre les attaques offline.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 23 / 29
27. Authentification
EKE
´
Encrypted Key Exchange : publie par Bellovin et Merritt en 1992.
´
Principe : on chiffre symetriquement (avec le mot de passe comme
´ ´ ´
cle) les messages d’un protocole d’etablissement de cle.
´ ˆ ´
Le chiffrement symetrique doit etre unverifiable.
L’attaquant (actif) doit choisir a priori un mot de passe, sous peine
ˆ ` ´ ´
d’etre a l’exterieur de l’etablissement de cle. ´
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 24 / 29
28. Authentification
Diffie-Hellman
p nombre premier, grand (1024 bits)
q nombre premier, moins grand (160 bits), q divise p − 1
g generateur d’ordre q (1 < g < p, g q = 1 mod p)
´ ´
A B
a
g mod p
a ∈R [1, q-1]
g b mod p
b ∈R [1, q-1]
K = (g a )b = (g b )a = g ab mod p
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 25 / 29
29. Authentification
Full Domain Hash
´
Definition
Un Full Domain Hash est une fonction de hachage dont la sortie est
´ ´ ´ ´ `
precisement un ensemble specifique donne, ou chaque valeur est
´
equiprobable.
´
Soit H une fonction de hachage. On calcule F (x) pour une entree x :
1 Soit y = H(1||x)||H(2||x)||...||H(n||x) ou n est choisi pour que la
`
´ ` ´ `
taille de y soit legerement superieure a celle de p (par exemple, p
a 1024 bits et y fait 1536 bits).
2 ´
Soit z = y mod p (interpretation des bits en un entier, puis
´
reduction modulaire).
3 F (x) = z (p−1)/q mod p.
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 26 / 29
30. Authentification
EKE avec Diffie-Hellman
p nombre premier, grand (1024 bits)
q nombre premier, moins grand (160 bits), q divise p − 1
g generateur d’ordre q (1 < g < p, g q = 1 mod p)
´ ´
w ´
mot de passe hache : w = F (π||A||B)
A B
a
w·g mod p
a ∈R [1, q-1]
w·g b mod p
b ∈R [1, q-1]
K = (g a )b = (g b )a = g ab mod p
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 27 / 29
31. Authentification
EKE avec Diffie-Hellman
´ ´ ´ ˆ ´
Une fois la cle echangee, elle doit etre utilisee dans un protocole
´ ´ ´
assurant l’integrite (et la confidentialite).
´
L’authentification est implicite : pas de garantie d’avoir parle avec le
´ ´
vrai client / serveur avant d’avoir echange des messages proteges ´ ´
par K .
´ ´
Un autre protocole PAKE standard : SRP (RFC 2945, integre dans
TLS avec RFC 5054).
Mais il y a des brevets...
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 28 / 29
32. Conclusion
Conclusion
` ´
Les mots de passe ne sont pas un probleme resolu.
`
Les mots de passe sont un probleme qui s’aggrave avec le temps.
` ´
Les systemes et protocoles doivent devenir resistants aux attaques
offline.
`
On ne connaˆt pas de systeme de remplacement indiscutable.
ı
Thomas Pornin ´
Mots de passe et mecanismes d’authentification Hackfest 2010 29 / 29