Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Décontamination - Antivirus - Protection - Protection de la Vie Privée Assiste.com - Sécurité informatique préventive - Décontamination - Antivirus - Protection - Protection de la Vie Privée

Dictionnaire (Attaque de mots de passe par dictionnaire)

Dernière mise à jour : 2018-10-12T14:52 - 12.10.2018
20.07.2014 - 00h00 - Paris - (Assiste - Pierre Pinard) - Mise à jour

Dictionnaire (Attaque de mots de passe par dictionnaire)

Dictionnaire (Attaque de mots de passe par dictionnaire)Dictionnaire (Attaque de mots de passe par dictionnaire)Dictionnaire (Attaque de mots de passe par dictionnaire)

L'attaque des "mots de passe" par dictionnaire est une forme d'attaque dirigée contre les "mots de passe" en clair, pas contre le chiffrement des mots de passe (pas contre les "hashcodes"). On se limite à tenter des mots existants réellement dans un dictionnaire au lieu de tenter, en aveugle (en "force brute" pure), toutes les combinaisons possibles de caractères.

L'idée est qu'un utilisateur aura tendance, naturellement, à aller vers la facilité et donc à utiliser quelque chose de facile à retenir, quelque chose existant déjà, au lieu d'une suite barbare de caractères impossibles à mémoriser (ce qui est, pourtant, l'une des règles de bonne pratique avec les mots de passe).

L'attaque par dictionnaire cherche donc à pallier le problème du temps soulevé par les attaques en "force brute". Elle risque de passer à côté de mots de passe tarabiscotés, mais est beaucoup plus rapide que la "force brute". Seul le compromis temps/mémoire par "Tables Arc-en-ciel" arrive à casser relativement rapidement tous les mots de passe.

Nombre de combinaisons possibles lors d'une attaque par dictionnaire
Dans une attaque en "force brute" de mots de passe de 8 caractères de long utilisant un jeu de caractères simpliste, de 26 lettres uniquement (majuscules ou minuscules - insensibles à la case) et les 10 chiffres, il y a déjà 2 901 713 047 668 combinaisons possibles.

Dans une attaque par dictionnaire, on va tenter tous les mots présents dans de simples dictionnaires de la langue de l'utilisateur attaqué ainsi que les mots de passe faibles habituels (mots de passe par défaut des équipements, dates, immatriculations de véhicules, dictionnaires de noms d'animaux, dictionnaires des patronymes d'un pays ou d'une culture, dictionnaire des prénoms, etc. ...).

En nombre, cela donne :

  • 200.000 combinaisons existant réellement dans la langue française, noms propres inclus (selon l'Académie Française, ici). Et encore... un dictionnaire d'écolier, avec 20.000 mots, est suffisant ! Et encore... dans une attaque contre un mot de passe que l'autorité de vérification limite à 8 caractères, il faudrait ne tenir compte que des mots de moins de 9 caractères !

  • Ajoutons à cela les "mots de passe" les plus bêtes, construits à partir de dates. Généralement, ce sont les dates anniversaires de naissance ou d'un évènement vécu qui sont utilisées. On se limitera donc aux 100 dernières années soit, à raison de 365 dates par an, 36.500 dates. Combien êtes-vous à utiliser la date de la prise d'Uxellodunum comme mot de passe ?

  • Dans le pire des cas, si l'attaque est robotisée, ajoutons :

    • Environ 20.000 prénoms
    • Environ 1.500.000 patronymes
    • Les noms d'animaux (nombre ?)
    • Les immatriculations possibles de véhicules (nombre ?)
    • Les juxtapositions et permutations de patronymes/prénoms ou prénoms/patronymes ou leurs initiales
Si ces attaques prennent, normalement, beaucoup de temps, même si elles en prennent beaucoup moins que les attaques en "force brute", le hasard peut s'en mêler et l'attaque peut aboutir rapidement. Il en est ainsi de l'attaque par dictionnaire faite par un pirate dont le pseudo était GMZ, en janvier 2011, contre le réseau social Twitter. Assis devant son écran, et après une seule nuit d'attaque contre le compte d'un administrateur dont le pseudo est "Crystal", GMZ trouva son mot de passe, "happiness", un mot que l'on trouve dans un dictionnaire basique anglais (donc un "mot de passe" très faible !). Une vidéo de cette attaque existe :

Chargement...

Attaque réussie, par dictionnaire


Pourquoi ne pas construire, une bonne fois pour toutes, des dictionnaires inverses utilisant toutes les combinaisons possibles de caractères pour les mots de passe et en calculant à l'avance tous leurs hascodes ?
Parce que de tels dictionnaires sont impossibles à stocker !

Pourrait-on établir un dictionnaire de toutes les combinaisons possibles de caractères (pour des mots de passe d'une longueur maximum donnée utilisant un jeu de caractères donné) et mettre ça sur un CD-Rom avec le calcul de tous leurs hashcodes ? Ainsi, lorsque l'on se trouvera en présence d'un hashcode donné, il suffira de le chercher dans le dictionnaire pour, en moins d'un pouième de seconde, trouver le mot de passe convoité à l'origine du hashcode. En théorie, on peu construire un tel dictionnaire et il n'est pas très lent à construire. Dans la pratique, non ! Dès qu'un mot de passe est un peu long, les tailles de tels dictionnaires sont gigantesques, délirantes.

Par exemple, la mémoire de stockage d'un seul de ces dictionnaires, pour toutes les combinaisons possibles de mots de passe d'une longueur donnée et leurs hashcodes SHA-1, dans un jeu de seulement 36 caractères (les 26 majuscules ou les 26 minuscules + les 10 chiffres), serait de :

Mots de passe de 8 caractères : 81 248 téraoctets (2 901 713 047 668 combinaisons de mots de passe de 8 caractères + 20 caractères pour le hash SHA-1 soit 2 901 713 047 668 x 28 = 81 247 965 334 704 caractères ! Le temps de recherche dans de tels dictionnaires n'est pas excessivement long (s'ils pouvaient être construits) : tri préalable sur le hash puis recherches par dichotomie en accès direct (le hash étant en binaire, il est incompressible et une recherche par arbre-B (B-Tree) doublerait la taille du dictionnaire pour un gain, en vitesse d'accès, assez faible ).
Mots de passe de 9 caractères : 3 029 388 téraoctets
Mots de passe de 10 caractères : 112 818 603 téraoctets
Mots de passe de 11 caractères : 4 196 852 043 téraoctets
Mots de passe de 12 caractères : 155 960 437 193 téraoctets
Mots de passe de 13 caractères : 5 790 031 230 781 téraoctets
Mots de passe de 14 caractères : 214 757 522 014 427 téraoctets


Pourquoi ne pas construire, une bonne fois pour toutes, des dictionnaires inverses utilisant tous les mots du dictionnaire de la langue et de quelques autres dictionnaires (prénoms, patronymes...) ?

Multiplions les 200.000 mots de la langue française par 10 (pour tenir compte des masculins/féminins/singuliers/pluriels/conjugaisons, etc. ...)
Il existerait plus de 20.000 prénoms
Il y aurait environ 1.500.000 patronymes
365 jours par ans pour les 100 dernières années soit 36500 dates
Arrondissons à 30 millions de mots et combinaisons, sans tenir compte de détails inutiles ici) :

Mots de passe de 8 caractères : 840 GO (30.000.000 * (8 caractères + 20 caractères pour le hash SHA-1) soit 30.000.000 x 28 = 840 000 000 caractères - Ca tient sur un petit Disque dur courant. Le temps de recherche dans de tels dictionnaires n'est pas significatif : tri préalable sur le hash puis recherches par dichotomie en accès direct (le hash étant en binaire, il est incompressible et une recherche par arbre-B (B-Tree) doublerait la taille du dictionnaire pour un gain, en vitesse d'accès, assez faible).
Mots de passe de 9 caractères : 870 GO
Mots de passe de 10 caractères : 900 GO
Mots de passe de 11 caractères : 930 GO
Mots de passe de 12 caractères : 960 GO
Mots de passe de 13 caractères : 990 GO
Mots de passe de 14 caractères : 1020 GO


Contre mesuresContre-mesures" Contre mesures "


Derrière le rideauDerrière le rideauDerrière le rideau


RéférencesRéférences" Références "


RessourcesRessources" Ressources "


 Requêtes similairesRequêtes similaires" Requêtes similaires "