On nous rabâche souvent qu’il faut choisir méticuleusement ses mots de passe sur internet. On nous demande de mettre des chiffres, des majuscules, des caractères spéciaux, des mots qui n’existent pas dans le dictionnaire, pas de date de naissance, ni le nom du chat, ni rien… En gros, on ne doit choisir que des mots de passe compliqués à retenir.
Pourquoi des majuscules, des chiffres et des caractères spéciaux?
=> En partie parce qu’il y a des attaques par force brute. Ces attaques consistent à tester tous les caractères, un par un, jusqu’à trouver le bon mot de passe. Le programme va donc tester les mots suivants : a puis b puis c puis d, …, puis z puis aa puis ab, ac,…,az puis ba, bb, bc, etc. jusqu’à zzzzzzzzzzzzzzzzzzzzz et ainsi trouver le bon mot de passe. On comprend donc facilement que plus la longueur du mot de passe est petite et plus il risque d’être trouvé facilement. On comprend également que rajouter des majuscules, des chiffres et des caractères spéciaux va obliger le programme à tester plus de possibilités et donc à allonger le temps de traitement. L’objectif est que le pirate abandonne son piratage car cela lui prendrait trop de temps. En effet, s’il lui faut 26 ans pour trouver votre mot de passe alors on peut imaginer qu’il va se désintéresser de votre cas et se focaliser sur un mot de passe plus facile à trouver…
On nous demande donc régulièrement de choisir des mots de passe compliqués à deviner (et donc compliqués à retenir) car ils contiennent des caractères qui n’ont pas vraiment d’équivalent phonétiquement : la virgule ou l’accolade sont difficilement prononçables par exemple. Pourtant nous pouvons nous rendre la vie un peu plus simple tout en la compliquant pour le pirate.
Je vais vous montrer un tableau qui va comparer le temps maximum que va mettre un programme pour trouver un mot de passe en fonction de différents critères. Je parle de temps « maximum » car le programme peut trouver votre mot de passe du premier coup s’il a vraiment de la chance :-)
Comparons des mots de passe et calculons le nombre maximum d’essais ainsi que le temps de crackage maximum (pour un clavier français). On prend comme postulat qu’un programme peut tester 10 000 000 000 mots de passe par secondes (ce qui est déjà pas mal à la date où j’écris).
Nombre de caractères dans le mot de passe |
Nombre de possibilités | Temps crackage |
---|---|---|
1 caractère | 26 | 0sec |
3 caractères | 17 576 | 0sec |
6 caractères | 308 915 776 | 0sec |
9 caractères | 5 429 503 678 976 | ~ 9min |
12 caractères | 95 428 956 661 682 176 | ~ 3 mois |
15 caractères | 1 677 259 342 285 726 023 680 | ~ 5 318 années |
Nombre de caractères dans le mot de passe |
Nombre de possibilités | Temps crackage |
---|---|---|
1 caractère | 52 | 0sec |
3 caractères | 140 608 | 0sec |
6 caractères | 19 770 609 664 | ~ 1sec |
9 caractères | 2 779 905 883 635 712 | ~ 3 jours |
12 caractères | 390 877 006 486 250 192 896 | ~ 1 239 années |
15 caractères | 54 960 434 128 018 670 343 946 240 | ~ 174 278 393 années |
Nombre de caractères dans le mot de passe |
Nombre de possibilités | Temps crackage |
---|---|---|
1 caractère | 62 | 0sec |
3 caractères | 238 328 | 0sec |
6 caractères | 56 800 235 584 | ~ 5sec |
9 caractères | 13 537 086 546 263 552 | ~ 15 jours |
12 caractères | 3 226 266 762 397 899 816 960 | ~ 10 230 années |
15 caractères | 768 909 704 948 766 630 184 222 720 | ~ 2 438 196 679 années |
Nombre de caractères dans le mot de passe |
Nombre de possibilités | Temps crackage |
---|---|---|
1 caractère | 118 | 0sec |
3 caractères | 1 643 032 | 0sec |
6 caractères | 2 699 554 153 024 | ~ 4min |
9 caractères | 4 435 453 859 151 328 768 | ~ 14 années |
12 caractères | 7 287 592 625 109 126 055 198 720 | ~ 23 108 804 années |
15 caractères | 11 973 747 886 018 296 712 672 055 394 304 | ~ 37 968 505 473 168 années |
Alors oui on voit que plus il y a de caractères différents et plus les mots de passe sont longs à craquer mais on s’aperçoit aussi que plus on ajoute de caractères et plus le temps que vont mettre les hackeurs à cracker un mot de passe va être long. Il faut donc mieux écrire un mot de passe sur 15 caractères tout en minuscule qu’un mot de passe sur 9 caractères avec tous les caractères possibles.
Le mot de passe « hF5;Bu~xW » est beaucoup plus facile à trouver pour un programme informatique de force brute que le mot de passe « toncrayonvivant » . Cela semble étonnant non? Le premier à 9 caractères, le second en a 15.
Vous pouvez donc utiliser des mots de passe encore plus long, une phrase entière par exemple, quand le site internet ou l’application le permet : « le chat liquide est sur la machine »
Bon, tout cela semble formidable car ce type de mots de passe est beaucoup plus facile à retenir que 7è%*$Ev-9 non?
En réalité, ce n’est pas si simple.
Pourquoi?
Le problème c’est que ces programmes informatiques ne fonctionnent pas qu’en force brute, ils sont un peu plus malins. Ils savent, par exemple, que les gens, s’ils sont obligés de mettre des chiffres, vont mettre leur date de naissance à la fin du mot de passe « toto1985« . Pour gagner du temps, ils vont tester en priorité les mots de passe en mettant 4 chiffres à la fin et vont ainsi raccourcir considérablement le temps de calcul.
Voici une liste non exhaustive des techniques employées pour trouver un mot de passe plus facilement :
- les programmes vont évidemment tester en premier les mots de passe les plus courants comme 123456, azerty, 111111, etc… ainsi que les mots de passe par défaut comme 000000 ou password
1. 123456
2. password
3. 12345678
4. qwerty
5. abc123
6. 123456789
7. 111111
8. 1234567
9. iloveyou
10. adobe123
11. 123123
12. Admin
13. 1234567890
14. letmein
15. photoshop
16. 1234
17. monkey
18. shadow
19. sunshine
20. 12345
21. password1
- ils utilisent également des dictionnaires pour éviter de perdre du temps à tester des mots qui n’existent pas. Le dictionnaire français contient environ 47 000 mots => temps de crackage pour avoir utiliser un mot du dictionnaire : 0 seconde. Ils vont également tester les les fautes les plus courantes.
- ils vont aussi tenter les 13 000 prénoms les plus courants, ce qui ne leur prendra que… 0 seconde!
- ils vont tester les 13 000 prénoms les plus courants commençant par un majuscule et suivi de 4 chiffres (de 1940 à 2014), comme Mathilde1995 ou Alexandre2001. Cela leur prendra environ… 0 seconde ! (13 000 x 74 = 962 000 possibilités). Si jamais un de vos mots de passe est de ce type, il est fortement conseillé de le changer rapidement :-) …et pourtant ce type de mot de passe respecte ce que l’on nous demande de mettre en permanence : des minuscules, des majuscules et des chiffres.
- …
Bon alors comment faire?
Il suffit de prendre une phrase pour mot de passe, et de préférence un phrase qui ne veut rien dire du genre : mon écran bleu transpire vieux. Cette phrase de 30 lettres ne veut rien dire mais sera vraiment très dure à trouver car elle est longue, contient des accents et même un verbe conjugué (les verbes conjugués n’apparaissent pas dans les dictionnaires classiques). Du coup ~ 454 625 312 144 620 890 392 643 666 963 152 464 548 724 736 années pour le trouver en force brute, ça devrait refroidir les pirates… En revanche, elle est très simple à retenir. Pour une attaque par dictionnaire, le temps sera considérablement raccourci : 727 248 années… bon ça va quand même…
Si le site vous interdit de mettre plus de 10 caractères (ce qui est assez abérant), vous pouvez choisir les initiales des mots de la phrase auxquelles vous ajouter le nombre de lettre de chaque mot : mon écran bleu transpire vieux devient mébtv35495 ou encore mieux : m3é5b4t9v5 (l’initiale de chaque mot suivi de son nombre de lettres) ~ 1 659 années pour le trouver quand même. Vous pouvez choisir la deuxième lettre de chaque mot ou la première du premier mot puis la deuxième du deuxième mot, etc. Dans ce cas là, le mot de passe deviendra m3c5e4n9x5
La seule chose que vous ayez à retenir est votre phrase et la manière de l’écrire !
Un autre gros bémol sur les mots de passe
Vous pouvez choisir le mot de passe le plus compliqué et le plus long qui soit, vous serez de toutes façons dépendant de la manière dont il sera stocké dans la base de données du site (ou de l’application) à qui vous le confiez.
- si le site décide de ne pas crypter les mots de passe, alors, si quelqu’un met la main sur la base de données, votre mot de passe sera très facilement récupérable car directement lisible par un œil humain.
- Si le site décide de crypter les mots de passe avec une manière peu renforcée, alors le résultat ne sera pas beaucoup mieux. Prenons un exemple pour bien comprendre. De nombreux site utilise le hashage md5 qui est très pratique. Pour résumé, le hashage convertit un mot ou une phrase en une autre suite de caractères, ce hashage est irréversible : il n’existe pas d’algorithme pour revenir en arrière.
Par exemple le mot de passe toto deviendra f71dbe52628a3f83a77ab494817525c6
C’est cette chaine de caractères (appelée aussi empreinte) qui sera stockée et non le mot de passe lui-même. La probabilité pour que 2 mots de passe aient la même empreinte est très faible. Les sites stockent donc les empreintes plutôt que le mot de passe. Comme l’opération est irréversible, une fois l’empreinte générée, les sites n’ont plus connaissance de votre mot de passe (c’est pour cette raison qu’ils ne peuvent vous redonner votre mot de passe quand vous l’avez perdu, vous êtes obligés d’en choisir un nouveau).
Comment peuvent-ils vous authentifier alors?
C’est assez simple : les sites vous demandent votre mot de passe, appliquent le hashage sur ce dernier, puis comparent le résultat avec l’empreinte dans leur base de donnée => si les 2 chaines de caractères sont identiques alors l’utilisateur est authentifié. La méthode semble plutôt efficace. Le problème (car il y a toujours un problème) c’est qu’il existe sur internet des bases de données de hashage qui vont permettre pouvoir revenir en arrière : les rainbow table. Ce sont ni plus ni moins que des tables faisant la correspondance entre un hash et le mot de passe correspondant. Exemple :Mot de passe hash Mathilde1995 4541d432567d2973e2ddab5cd4e54564 Mon petit chien s’appelle JUJU 3652f741663c9c530b68b589c2b1f6dc password 5f4dcc3b5aa765d61d8327deb882cf99 kiki44 2d25fd8ebeb5b05aa21f6841be2ad6cd … … Le hacker met la main sur la table contenant les empreintes. Comme l’opération est irréversible, il ne peut en théorie récupérer le mot de passe original… en théorie seulement car en pratique… :-) Il lui suffit de rechercher 4541d432567d2973e2ddab5cd4e54564 dans sa rainbow table. Celle-ci lui retourne Mathilde1995 en une fraction de seconde. Les rainbow tables sont publiques et tout le monde peut en générer comme il le souhaite… Chercher 5f4dcc3b5aa765d61d8327deb882cf99 (le hash du mot password) sur Google, vous serez étonné du nombre de résultats… Arghhhh… mais alors? On est fichu? Non pas encore, il faut juste rajouter un petit grain de sel.
- si le site ajoute un grain de sel au mot de passe alors, cela va se compliquer pour le hacker qui ne pourra pas utiliser une rainbow table connue.
Explication : puisque chaque mot de passe produit un hash différent, il suffit de lui ajouter un grain de sel, c’est à dire une petite chaine de caractères. de cette manière le hacker ne peut utiliser une rainbow table connue. Au lieu de hasher kiki44, le site va hasher kiki44-apfyus ou -apfyus est une chaine générée aléatoirement, ça sera le grain de sel. Le hash résultant n’est alors pas du tout identique au précédent. Le site vous demande votre mot de passe, vous saisissez kiki44, le site y ajoute automatiquement -apfyus et hash le résultat. S’il est identique à celui présent en base alors vous pouvez vous connecter. L’intérêt est alors que le hacker sera obligé de généré lui-même sa propre rainbow table pour pouvoir trouver les mots de passe d’origine. Cela va lui prendre un temps fou. Et si le grain de sel est différent pour chaque utilisateur (ce qu je fais sur les sites que je développe) alors cela signifie une rainbowtable pour chaque utilisateur, ce qui est statistiquement impossible à réaliser. Reprenons l’exemple précédent :Mot de passe hash Mathilde1995 4541d432567d2973e2ddab5cd4e54564 Mathilde1995-apfyus a872263844d8cbfab12d9032efdeedb9 Les hash sont différents. Grâce à ce grain de sel, on a potentiellement créé une nouvelle rainbow table que le pirate devra lui aussi re-généré afin de pouvoir trouver votre mot de passe. Si le jeu n’en vaut pas la chandelle, il abandonnera pour se focaliser sur des mots de passe plus simple à trouver.
Pour info, en tant qu’utilisateur, vous pouvez ajouter votre propre grain de sel à vos mots de passe, il faudra juste s’en rappeler.
Ce que les sites devraient faire
Ils devraient, afin de sécuriser les données de leurs utilisateurs, effectuer un contrôle intelligent du mot de passe : aucun type de caractère ne devrait être imposé à l’utilisateur. En revanche, s’il n’y a que des minuscules, alors le mot de passe devra faire au moins 15 caractères. Il pourra n’être que de 9 caractères s’il contient des majuscules, minuscules , caractères spéciaux et chiffres. Une bonne pratique pour les développeurs est d’avoir un grain de sel propre à chaque utilisateur. Il peut être généré aléatoirement ou pas, peut importe. Il est stocké en clair dans la base, cela n’a pas d’importance. Ce qui est important c’est que le hash généré (motdepasse+grain de sel) ne puisse pas permettre de récupérer le mot de passe.
Je me suis inscrit très récemment sur le site d’une mutuelle où on m’a envoyé mon mot de passe provisoire par courrier postal (ok pourquoi pas, enfin un mail aurait sans doute suffit…). Pour accéder au site, je devais changer ce mot de passe rapidement : exactement 6 caractères constitués uniquement de chiffres… j’étais sidéré… 1 000 000 – 100 000 = 900 000 possibilités par mot de passe ! 10 mots de passe crackés par seconde… hallucinant… Et, pastèque sur le gâteau, vous pensez que les gens vont mettre quoi comme mot de passe pour 6 chiffres? et bien leur date de naissance pardi… bingo ! Ce n’est pas ce que j’ai mis mais j’en tout de même été obligé de ne mettre que des chiffres, j’étais dépendant du site pour mon mot de passe, j’ai été obligé de donner un mot de passe très très faiblement sécurisé…
Maj du 16 aout 2017
Yahouuuuuu ! ! Ca y est ! Ils viennent d’admettre qu’ils se sont plantés :-)))
Lisez-ça : http://www.clubic.com/antivirus-securite-informatique/actualite-834560-mots-bonnes-pratiques-bonnes.html