Mots de Passe

Transcription

Mots de Passe
Mots de Passe*
Chamseddine Talhi
École de technologie supérieure (ÉTS)
Dép. Génie logiciel et des TI
*Quelques acétates sont adaptées de la présentation de Nicolas Pioch [1] citée dans la section références
Un grand merci à Yosr Jarraya (http://users.encs.concordia.ca/~y_jarray/) qui a développé une grande
partie de cette présentation!
1
Mot de passe
Pourquoi utiliser des mots de passe ??
•
Question de coût :
– les mots de passe sont gratuits
•
C’est nous qui les choisissons et non pas le contraire
•
A cause de leur caractère pratique :
– un administrateur système peut réinitialiser un mot de
passe plus facilement que d’attribuer un nouveau
doigt à un utilisateur…
2
Mot de passe
Source: http://www.kweeper.com/calvin/image/243431
3
Mot de passe
• Rapport Verizon 2012 sur les brèches de données dans
les petites organisations
Source: http://www.verizonbusiness.com/resources/reports/rp_data-breach-investigations-report-2012_en_xg.pdf
4
Mot de passe
Problématique des mots de passe
Selon C. Kaufman, R. Perlman, M. Speciner:
Network Security: Private Communication in a Public World, 2nd Edition. C.
Kaufman, R. Perlman, and M. Speciner. Prentice-Hall
« Les humains sont incapables de stocker de façon sécurisée des clés
cryptographiques de haute qualité; leur vitesse et leur précision lors de
l’exécution d’opérations cryptographiques sont inacceptables. (Ils sont
aussi volumineux et chers à l’entretien, difficiles à gérer, et ils
polluent l’environnement. Il est étonnant que de tels systèmes
continuent à être fabriqués et déployés.) Mais leur omniprésence nous
oblige à concevoir nos protocoles pour contourner leurs limitations. »
5
Mot de passe
Comparaison clés vs. mots de passe
• Clés cryptographiques, par exemple 64 bits
– Il y a 264 clés différentes possibles
– La clé peut être choisie aléatoirement : un attaquant doit alors tenter
263 clés en moyenne
• Mots de passe, par exemple de 8 caractères
– Chaque caractère a en théorie 8 bits soit 256 valeurs possibles
différentes : il y a donc en théorie 2568 = 264 mots de passe
possibles
– Mais les utilisateurs ne choisissent pas leur mot de passe
aléatoirement : un attaquant a nettement moins de 263 mots de
passe à tester (attaques par dictionnaire)
6
Mot de passe
Choix de mots de passe
Étude sur les mots de passes choisis par 218 étudiants en 1ère année de
psychologie :
• 45% utilisent leur propre nom pour au moins l’un de leurs mots
de passe
• 2/3 des mots de passe sont conçus à partir d’une caractéristique
personnelle, la plupart du reste l’étant à partir de celles de
proches
• Noms propres et dates d’anniversaire sont les principales
informations utilisées pour construire 50% des mots de passe
7
Mot de passe
Choix de mots de passe
• Quasiment tous les sondés réutilisent des mots de passe, et 2/3
des mots de passe sont des doublons (e.g., HelloHello)
• 1/3 des sondés ont déjà oublié un mot de passe, et plus de la
moitié les conservent par écrit
Source: Alan S. Brown, Elisabeth Bracken, Sandy Zoccoli, King Douglas
(2004). Generating and remembering passwords. Applied Cognitive
Psychology, 18, 641-651.
8
Mot de passe
Étude sur 10,000 comptes de Windows
Live capturés en 2009
• La liste contenait initialement 10 028 entrées.
• Après suppression des entrées sans mot de passe, il restait 9843
entrées valides (mots de passe).
• Il y a 8.931 (90%) des mots de passe uniques dans la liste.
• Le plus long mot de passe est de 30 caractères:
lafaroleratropezoooooooooooooo.
• Le plus court des mot de passe est de longueur seulement 1
caractère :)
Source: http://www.acunetix.com/blog/news/statistics-from-10000-leaked-hotmail-passwords/#
9
Mot de passe
Étude sur 10,000 comptes de Windows
Live capturés en 2009
TOP 10 – Mot de passe vs. frequence
La plupart des mots de passes sont de longueur
de 6 à 9 caractères. En moyenne 8 caractères.
42 %; utilisent seulement les lettres minuscules
: de ‘a’ jusqu’à ‘z’.
3 %; utilisent un mélange de lettres minuscules et
majuscules.
19 %; des mots de passe numériques
30 %; mélange de lettres et de chiffres
6 %; mélange de lettres et de chiffres et autres
caractères.
123456
64
123456789
18
alejandra
11
111111
10
alberto
9
tequiero
9
alejandro
9
12345678
9
1234567
8
estrella
7
Source: http://www.acunetix.com/blog/news/statistics-from-10000-leaked-hotmail-passwords/#
10
Mot de passe
source:
http://idilix.net/fr/gestion-mot-de-passe-sur-inoubliable
http://xkcd.com/936/
11
Mot de passe
Top 25
1. Password
2. 123456
3. 12345678
4. qwerty
5. abc123
6. monkey
7. 1234567
8. Letmein
9. trustno1
10. dragon
11.Baseball
12.111111
13. iloveyou
14. master
15. sunshine
16. ashley
17. bailey
18. passw0rd
19. shadow
20. 123123
21. 654321
22. superman
23. qazwsx
24.michael
25. football
SplashData Inc. a révélé son top 25 des pires
mots de passe de l’année 2011,
avec 'Password' (Oui, c’est ca) et '123456' en
tête de liste
Source: http://splashdata.com/splashid/worst-passwords/
Password est encore dans le top
des tops en 2012!!!
12
Mot de passe
http://howsecureismypassword.net/
source: http://didoune.fr/blog/tag/mot-de-passe/
13
Mot de passe
Qualité des mots de passe
Mots de passe
Pour le craquer il faut Un PC
P4s$W0Rd
En 3 jours
W$W2012W%z
En 58 années
MGR850$%CoursA12
En 12 trillion d’années
$MgR850$X-A12_etS
En 931 trillion years
14
Mot de passe
Qualité des mots de passe
Source: http://www.ghacks.net/2012/04/07/how-secure-is-your-password/
15
Mot de passe
• Loi de Moore (Intel)
Théoriquement, le nombre de transistors qui
peuvent être montés dans un circuit intégré double
approximativement tous les deux ans.
‒ Facteurs accélérant la faiblesse des mots de
passe:
 Popularité des quad core (et nombre de cœurs encore
‒
plus élevé) processeurs.
 Les nouvelles méthodes de programmation qui
permettent à n'importe quel PC d’utiliser le GPU sur
certaines cartes graphiques
16
Mot de passe
• Il a été prouvé possible de cracker des mots de passes
a l’aide de carte graphique (GPGPU computing )
 Exemple avec une carte graphique Radeon 5770 et d’outil de
brute-force et le NTLM hash des mots de passe
 Le mot de passe “fjR8n” peut etre craquer
‒ Avec un CPU: 24 seconds, à un taux de 9.8 million d’essaies
de mot de passe par seconde.
‒ Avec le GPU, moins d’1 seconde à un taux de 3.3 billion
d’essaies de mot de passe par seconde.
 Un mot de passe de 6 caractères (pYDbL6),
‒ Un CPU : 1 heure 30 minutes
‒ GPU: seulement 4 secondes
 Un mot de passe de 7 caractères (fh0GH5h),
‒ CPU : 4 jours,
‒ GPU: 17 minutes 30 seconds
Source: http://mytechencounters.wordpress.com/2011/04/03/gpu-password-cracking-crack-a-windows-password-using-a-graphic-card/
17
Mot de passe
Politique de gestion des mots de passe
Un message d’erreur peut s’afficher sur Windows 2000 configuré pour
s’authentifier sur un domaine MIT Kerberos
“Error Message:
Your password must be at least 18770 characters and cannot
repeat any of your previous 30689 passwords.
Please type a different password.
Type a password that meets these requirements in both text boxes.” 
Bug corrigé seulement Windows 2000 SP3
Microsoft Knowledge Base article Q276304 source:
http://support.microsoft.com/default.aspx?scid=kb;en-us;276304
19
Mot de passe
Attaques sur les mots de passe
Un attaquant peut :
• Cibler un compte particulier
• Cibler n’importe quel compte sur le système
• Cibler n’importe quel compte sur n’importe quel système
• Un seul mot de passe vulnérable peut suffire!
Chemin d’attaque usuel :
• Extérieur -> compte utilisateur -> compte administrateur
20
Mot de passe
Échecs répétés d’authentification
Supposons que le système verrouille un compte utilisateur après 3
échecs d’authentification (mot de passe invalide).
Combien de temps doit durer ce verrouillage ?
• 15 secondes
• 15 minutes
• Jusqu’à ce que l’administrateur déverrouille manuellement le
compte utilisateur ?
Avantages et inconvénients de chaque approche ?
21
Mot de passe
Piratage de Twitter, 5 janvier 2009
http://www.wired.com/threatlevel/2009/01/professed-twitt/
• Un américain de 18 ans a piraté twitter par force brute
• Cause : Twitter autorisait un nombre illimité d’échecs
d’authentification consécutifs
• Le mot de passe du compte administrateur ‘Crystal’ a été facile a
deviner ‘happiness’… !
• Il a ensuite réinitialisé les mots de passe des comptes ‘officiels’ de
Barack Obama, Britney Spears et Fox News… et a commencé à
diffuser de faux messages…
22
Mot de passe
Stockage des mots de passe
• Ce n’est pas une bonne idée de stocker les mots de passe de tous
les utilisateurs tels quels au risque que le fichier tombe entre les
mains de mauvaises personnes …
• Comment valider le mot de passe présenté par un utilisateur ?
• Solution cryptographique :
– stocker la valeur de hachage du mot de passe de chaque utilisateur : h(MdP)
23
Mot de passe
Stockage des mots de passe
• Quand un utilisateur s’authentifie, on calcule la valeur de hachage du
mot de passe fourni et on la compare à la valeur stockée h(MdP)
• Si un pirate capture le fichier de mots de passe, il n’obtient que les
valeurs hachées
• Il lui faut alors trouver un mot de passe m’ tel que h(m’) soit égal à
la valeur stockée dans le fichier : une attaque par dictionnaire est
toujours possible.
24
Mot de passe
Une attaque par dictionnaire plus rapide…
• L’attaquant peut accélérer considérablement la vitesse d’une attaque
par dictionnaire en pré-calculant une table (Rainbow table) contenant
les valeurs de hachage de tous les mots du dictionnaire.
– Taille de NTHASH tables ~ 8.5 GB
• Ce calcul n’est à faire qu’une seule fois : la table ainsi constituée peut
être réutilisée pour chaque nouvelle attaque
• Ainsi, lorsqu’il obtient un fichier contenant les valeurs de hachage, il
lui suffit de les rechercher dans sa table pour trouver un mot de passe
acceptable
25
Hachage + sel naïf
• L'ajout d'un sel (salt) consiste à concaténer une chaîne
aléatoire au mot de passe avant de l'envoyer dans la
fonction de hachage
• Le sel est stocké avec le mot de passe dans la base de
données
define('SALT', '377fba9d324d42e92dd21a003ec414a9');
function computeHash($plainText) {
return sha1(SALT . $plainText);
}
• Résout le problème des rainbow tables populaires
• Augmente la complexité de l'attaque dictionnaire
26
Sel naïf - Problèmes
•
Sel (salt) global: permet toujours le pré-calcul de rainbow
tables:
•
Permet d'attaquer la base de données en entier avec une attaque
de dictionnaire ou exhaustive
•
Mot de passes identiques vont toujours être évidents à
l'œil
•
CWE-760: Use of a One-Way Hash with a Predictable Salt
27
Sel naïf - Solution
• Ajouter un sel (salt) different pour chaque mot de passe au
lieu de globalement.
• On stocke le sel directement dans le champ password.
• Les attaquants doivent maintenant tenter de craquer chaque
entrée de la table de mot de passe séparément
define('SALT_LENGTH', 9);
function generateHash($plainText, $salt = null) {
if ($salt == null) {
$salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
} else {
$salt = substr($salt, 0, SALT_LENGTH);
}
return $salt . sha1($salt . $plainText);
}
C'est une très bonne solution! Améliorations possibles?
28
Key stretching
• Problème: Les fonctions de hachage ont été conçues pour
être performantes pourtant la vitesse est votre ennemi ici
car rapide veut dire qu'un attaquant peut rapidement faire
son attaque exhaustive (rainbow table rapidement calculer)
• Solution
o En plus du sel par mot de passe,
o On fait 1000 itérations de l'empreinte dans une boucle
o ou encore, on concatène 1000 fois le mot de passe et le
sel avant de faire l'empreinte
• Ici on ralentit l'attaquant de 1000 fois mais on peut se
permettre se genre de ressources pour authentifier un
usager
Presque parfait, que manque-t-il?
29
Conclusion
• La réutilisation de mots de passe est un fait
confirmé. Afin de défendre ses utilisateurs, il
faut appliquer une méthode de hachage
appropriée
• Si vous faites "j'ai oublié mon mot de
passe" et que vous recevez votre mot de
passe en clair, pensez-y bien!
30
Mot de passe
Contre-mesure
• Stocker les mots de passe des utilisateurs hachés avec un ‘sel’
aléatoire s, différent pour chaque utilisateur : h(s || MdP)
• Pour chaque utilisateur, on stocke (s, h(s || MdP)) : s n’est pas secret,
cela ressemble à un vecteur d’initialisation (IV)
• On peut valider facilement le mot de passe fourni par un utilisateur
pour s’authentifier
• Un attaquant sera obligé de recalculer un dictionnaire de valeurs de
hachage complet pour chaque utilisateur
31
Références
1. Nicolas Pioch, Authetification, 19 mai 2009,
http://maubkn.imingo.net/phpdown/rubrique.php?id_rubrique=61
2. How a cheap graphics card could crack your password in under a
second. PC Pro blog
http://www.pcpro.co.uk/blogs/2011/06/01/how-a-cheap-graphicscard-could-crack-your-password-in-under-asecond/#ixzz2BJgguqDM
3. http://howsecureismypassword.net/
32
Références
4. Password Reuse Is All Too Common, Research
Shows, http://www.pcworld.com/businesscenter/article/2193
03/password_reuse_is_all_too_common_research_shows.h
tml
5. CWE-257: Storing Passwords in a Recoverable
Format, http://cwe.mitre.org/data/definitions/257.html
6. Password lists,
http://www.skullsecurity.org/wiki/index.php/Passwords
7. Rainbow Tables, http://en.wikipedia.org/wiki/Rainbow_table
8. Free Rainbow
Tables, http://www.freerainbowtables.com/en/tables2/
9. IGHASHGPU, attaques exhaustives par GPU,
http://www.golubev.com/hashgpu.htm
33
Références
CWE-522: Insufficiently Protected Credentials,
http://cwe.mitre.org/data/definitions/522.html
CWE-759: Use of a One-Way Hash without a Salt,
http://cwe.mitre.org/data/definitions/759.html
CWE-760: Use of a One-Way Hash with a Predictable Salt,
http://cwe.mitre.org/data/definitions/760.html
CAPEC-49: Password Brute Forcing, http://capec.mitre.org/data/definitions/49.html
The Importance of Being Canonical, Robert David Graham,
http://erratasec.blogspot.com/2009/02/importance-of-being-canonical.html
Enough With The Rainbow Tables: What You Need To Know About Secure Password
Schemes, Thomas Ptacek, http://chargen.matasano.com/chargen/2007/9/7/enoughwith-the-rainbow-tables-what-you-need-to-know-about-s.html
PHP Security Consortium: Password Hashing,
http://phpsec.org/articles/2005/password-hashing.html
Portable PHP password hashing framework, Openwall,
http://www.openwall.com/phpass/
Passwords lists and dictionaries,
http://www.skullsecurity.org/wiki/index.php/Passwords
Stronger Key Derivation via Sequential Memory-Hard Functions, Colin Percival,
http://www.tarsnap.com/scrypt/scrypt.pdf
34