Flux RSS - La vie du site - Nouveautés et mises à jour
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 par dictionnaire exhaustif

L'attaque des mots de passe par dictionnaire est dirigée contre les mots de passe en clair, pas contre les hashcodes. On construit les combinaisons de caractères possibles pour générer tous les hashcodes possibles au moins en MD5, SHA-1 et SHA-256.

10.11.2009 - Révision 30.07.2021 - Révision mineure 18.09.2021. Auteur : Pierre Pinard.

L'attaque des « mots de passe » par dictionnaire exhaustif 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 »). Pour des longueurs de mots de passe réalistes imposés par les autorités d'authentification (8 à 16 caractères généralement), on construit un dictionnaire exhaustif de toutes les combinaisons possibles de caractères et on calcule leurs hashcodes dans tous les algorithmes de chiffrement utilisés en ce domaine (au moins MD5, SHA-1 et SHA-256 ainsi que quelques autres.

La taille de tels dictionnaires est monstrueuse et impossible à mettre en oeuvre sauf si l'on a les moyens financiers et matériels d'un état.

Une autre forme d'attaque par dictionnaire est celle de numériser tous les mots des dictionnaires existants (langues, patronymes, prénoms, noms d'animaux, numéros minéralogiques, numéros de téléphone, dates, etc.). Là on obtient des dictionnaires exhaustifs de tous les termes existants réellement et considérés comme très faibles et normalement interdits en que mots de passe. 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 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...

GMZ - attaque réussie par dictionnaire - MdP administrateur Twitter
Autorisez cette vidéo à être lue avec le lecteur universel
VLC (un lecteur multimédia gratuit, open source et libre).


Attaque par dictionnaire exhaustif - Dictionnaires inverses de hashcodes

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.

Attaque par dictionnaire exhaustif - Numériser des dictionnaires réels

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




Attaque par dictionnaire exhaustif - Ressources


# Ailleurs sur le Web #

  1. #Attaque par dictionnaire exhaustif#