Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

Attaque des mots de passe par dictionnaire exhaustif

Attaque par dictionnaire exhaustif : dirigée contre les mots de passe en clair. On génère tous les hashcodes, au moins en MD5, SHA-1 et SHA-256.

cr  10.11.2009      r+  05.11.2022      r-  27.04.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

L'attaque des « mots de passe » par dictionnaire (exhaustif ou non) est une forme d'attaque en clair dirigée contre les « mots de passe » en clair, hors chiffrement (hors calcul dehashcodes [hors pratique duhash-coding] pour les camoufler). On se limite à tenter des mots existants réellement dans des dictionnaires au lieu de tenter, en aveugle (en « force brute »), toutes les combinaisons possibles de caractères.

L'idée est que de nombreux utilisateurs ont tendance à aller vers la facilité et utiliser un mot existant déjà et qui a une signification pour eux (nom ou prénom d'un membre de la famille, d'une relation, d'un animal de compagnie, d'une activité préférée, d'une date remarquable, etc.), donc facile à retenir, au lieu d'une suite barbare de caractères impossibles à mémoriser, du genre Z#tO[&]sQf?ç=<W6 (16 caractères barbares, ce qui est, pourtant, la règle de bonne pratique avec les mots de passe). Avec un tel mot de passe et avec la puissance des centres de calcul actuels, il faudra plusieurs centaines de billions de siècles pour le décoder, seule l'attaquer en« force brute » étant possible. Voir :Tests de solidité des mots de passe.

L'attaque par dictionnaire cherche donc à pallier le problème du temps de calcul soulevé par les attaques en « force brute » en limitant considérablement le nombre de combinaisons possibles de caractères uniquement à des mots existant dans un dictionnaire. C'est un appauvrissement considérable de la fonction de protection d'accès, de vol de données et d'usurpations d'identité. L'attaque par dictionnaire passera à côté de mots de passe tarabiscotés, mais est beaucoup plus rapide que la « force brute ». Seul le compromis temps/mémoire par attaques avec des tables arc-en-ciel arrive à casser relativement rapidement toutes les formes de mots de passe, y compris ceux tarabiscotés.


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 (ça, c'est une énorme faute de l'administrateur/créateur/exploitant du système de protection par identification forte des données concernées), 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écuqui 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 (dictionnaire en fichier numérique commercialisé.)

    • Environ 1.500.000 patronymes (dictionnaire en fichier numérique commercialisé.)

    • Les noms d'animaux (nombre ?) (dictionnaire en fichier numérique commercialisé.)

    • 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 (en quelques secondes).


Exemple illustré :
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 :


L'attaque des « mots de passe » par dictionnaire (exhaustif ou non) est une forme d'attaque en clair dirigée contre les « mots de passe » en clair, hors chiffrement (hors calcul dehashcodes [hors pratique duhash-coding] pour les camoufler). On se limite à tenter des mots existants réellement dans des dictionnaires au lieu de tenter, en aveugle (en « force brute »), toutes les combinaisons possibles de caractères.

L'idée est que de nombreux utilisateurs ont tendance à aller vers la facilité et utiliser un mot existant déjà et qui a une signification pour eux (nom ou prénom d'un membre de la famille, d'une relation, d'un animal de compagnie, d'une activité préférée, d'une date remarquable, etc.), donc facile à retenir, au lieu d'une suite barbare de caractères impossibles à mémoriser, du genre Z#tO[&]sQf?ç=<W6 (16 caractères barbares, ce qui est, pourtant, la règle de bonne pratique avec les mots de passe). Avec un tel mot de passe et avec la puissance des centres de calcul actuels, il faudra plusieurs centaines de billions de siècles pour le décoder, seule l'attaquer en« force brute » étant possible. Voir :Tests de solidité des mots de passe.

L'attaque par dictionnaire cherche donc à pallier le problème du temps de calcul soulevé par les attaques en « force brute » en limitant considérablement le nombre de combinaisons possibles de caractères uniquement à des mots existant dans un dictionnaire. C'est un appauvrissement considérable de la fonction de protection d'accès, de vol de données et d'usurpations d'identité. L'attaque par dictionnaire passera à côté de mots de passe tarabiscotés, mais est beaucoup plus rapide que la « force brute ». Seul le compromis temps/mémoire par attaques avec des tables arc-en-ciel arrive à casser relativement rapidement toutes les formes de mots de passe, y compris ceux tarabiscotés.


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 (ça, c'est une énorme faute de l'administrateur/créateur/exploitant du système de protection par identification forte des données concernées), 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écuqui 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 (dictionnaire en fichier numérique commercialisé.)

    • Environ 1.500.000 patronymes (dictionnaire en fichier numérique commercialisé.)

    • Les noms d'animaux (nombre ?) (dictionnaire en fichier numérique commercialisé.)

    • 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 (en quelques secondes).


Exemple illustré :
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 :





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 hashcodes (condensats) dans tous les algorithmes de hachage (au moins les algorithmes les plus uilisés, tels que MD5, SHA-1 et SHA-256SHA-256) ?

Parce que de tels dictionnaires ont une taille folle et 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 peut construire un tel dictionnaire et il ne semble pas très long à 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 08 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 09 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

Il s'agirait donc de disposer d'un véritable centre de données (data center) !

]




Pourquoi ne pas numériser, une bonne fois pour toutes, tous les termes de tous les dictionnaires des langues et de quelques autres dictionnaires (prénoms, patronymes, noms d'animaux, etc.) ?

Rien que pour la France et le français :

  • 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

  • À raison de 365 jours par ans pour les 100 dernières années il y a 36500 dates, à multiplier pour les évoquer sous diverses formes (01 01 00, 01 01 2000, 01.01.00, 01.01.2000, 01/01/00, 01/01/2000) et en exprimant les jours de la semaine et les mois en toutes lettres et en abrégé.

  • Numéros de téléphone à 10 chiffres, soit 9 999 999 999 termes + différentes codifications.

  • Et tous les autres dictionnaires...

Arrondissons à 30 millions de mots et combinaisons (majuscules, minuscules, initiale en majuscule...) d'une moyenne de 10 caractères et construisons tous les hashcodes MD5 (128 bits soit 16 caractères), SHA-1 (160 bits soit 20 caractères) et SHA-256 (256 bits soit 32 caractères).

  • 30 000 000 mots encodés en MD5 (128 bits) soit 480 000 000 caractères (octets) et un total de 510 000 000 caractères (octets).

  • 30 000 000 mots encodés en SHA-1 (160 bits) soit 600 000 000 caractères (octets) et un total de 900 000 000 caractères (octets).

  • 30 000 000 mots encodés en SHA-256 (256 bits) soit 960 000 000 caractères (octets) et un total de 1 260 000 000 caractères (octets).

Donc un total d'un peu moins de 3 téraoctets (un disque dur ou un SSD). On obtient donc quelque chose de relativement compact, mais limité à des mots de passe présents dans des dictionnaires, donc faibles et interdits.

]




Dossier (collection) : Mots de passe

Introduction au dossier

Concepts, attaques, défenses
16 formes d'attaques des mots de passe
Attaque en force brute
Attaque Man in the Middle
Attaque par authentification faible
Attaque par authentification frauduleuse
Attaque par caméra de surveillance
Attaque par dictionnaire exhaustif
Attaque par espionnage humain
Attaque par ingénierie sociale
Attaque par keylogger
Attaque par keylogger acoustique
Attaque par keylogger électromagnétique
Attaque par le virus PEBCAK
Attaque par phishing
Attaque par sniffing sur protocole HTTPS
Attaque par tables arc-en-ciel
Attaques célèbres et réussies de mots de passe
Décrypter un hashcode
Double authentification
Générateur de hashcode cryptographique
Générateur de mots de passe
Générateur d'identifiant (pseudo)
Heartbleed (faille dans OpenSSL) affecte les mots de passe
Identifiant
Identifier l'algorithme de hachage utilisé
Jeux de caractères utilisés dans les mots de passe
Logiciels craqueurs de mots de passe
Mot de passe
Mot de passe : test de solidité
Mots de passe imbéciles
Mots de passe par défaut (usine, constructeur, éditeur)
Risque juridique de complicité passive de l'internaute
Virer le mot de passe protégeant le BIOS

Termes (encyclopédie)
CRC
CRC-1
CRC-12
CRC-16
CRC-32
CRC-64
MD5
NTLM
SHA-1
SHA-2
SHA-224
SHA-256
SHA-384
SHA-512
BIOS
Chiffre clé
Clavier virtuel
CMOS
Condensat
Cryptographie
Exploit
Hack
Hacker
Hashcode
Heartbleed
Identifiant
Ingénierie sociale
Keylogger
Login
Mots de passe
Password Cracker
Password Revealer
Password Stealer
Phishing
Rainbow Tables (Tables Arc-en-ciel)
Spyware
UEFI

Logithèque
HashTab - Calcul de condensats (Windows)
SummerProperties - Calcul de condensats