Qu'est-ce qu'une attaque par dictionnaire ?

Pour vous authentifier sur un site Web, vous devez fournir un nom d'utilisateur et un mot de passe. Le site vérifie ensuite les détails d'authentification que vous avez fournis en les comparant avec les détails qu'il a stockés dans sa base de données. Si les détails correspondent, l'accès est accordé. Si les détails ne correspondent pas, l'accès est refusé.

Malheureusement, les violations de données sont un phénomène relativement courant. Les violations de données peuvent être un gros problème car l'une des données les plus couramment ciblées sont les données de l'utilisateur, en particulier la liste des noms d'utilisateur et des mots de passe. Si les mots de passe sont simplement stockés tels quels, en clair, toute personne ayant accès à la base de données peut alors accéder au compte de tout autre utilisateur. C'est comme si on leur remettait un trousseau de clés avec la clé de chaque porte d'un immeuble.

Bien que de nombreux efforts soient déployés pour prévenir les violations de données en premier lieu, une stratégie de défense en profondeur est recommandée. Plus précisément, les conseils de sécurité stipulent que les mots de passe doivent être hachés, seul le hachage du mot de passe étant stocké. Une fonction de hachage est une fonction unidirectionnelle qui convertit toujours la même entrée en la même sortie. Cependant, même un changement mineur dans l'entrée produit une sortie entièrement différente. Surtout, il n'y a aucun moyen d'inverser la fonction et de remettre le hachage généré dans l'entrée d'origine. Ce que vous pouvez faire, cependant, est de hacher une nouvelle entrée et de voir si la sortie correspond au hachage stocké dans la base de données. Si c'est le cas, vous connaissez le mot de passe correspondant, sans jamais connaître le mot de passe réel.

Cela signifie également que si un attaquant viole la base de données, il n'obtient pas une liste de mots de passe immédiatement utiles, il obtient des hachages à la place. Pour pouvoir utiliser ces hachages, ils doivent être crackés.

Craquer les hachages de mot de passe avec smarts

Le craquage d'un hachage de mot de passe consiste à déterminer ce que représente le mot de passe original représenté par le hachage. Parce qu'il n'y a aucun moyen d'inverser la fonction de hachage et de transformer le hachage en mot de passe. La seule façon de déchiffrer un hachage est de deviner le mot de passe. Une méthode consiste à utiliser une attaque par force brute. Cela implique littéralement d'essayer tous les mots de passe possibles. Cela signifie partir de "a", essayer chaque lettre, dans les deux cas, et chaque chiffre et symbole. Ensuite, l'attaquant doit essayer toutes les combinaisons à deux caractères, les combinaisons à trois caractères, etc. L'augmentation des combinaisons possibles de caractères est exponentielle à chaque fois que vous ajoutez un caractère. Il est donc difficile de deviner efficacement les mots de passe longs, même lorsque des algorithmes de hachage rapides sont utilisés avec de puissantes plates-formes de craquage GPU.

Certains efforts peuvent être épargnés en examinant les exigences de mot de passe du site et en n'essayant pas des mots de passe qui seraient trop courts pour être autorisés ou qui ne comportent pas de numéro, par exemple. Cela permettrait de gagner du temps et s'inscrit toujours dans la classe d'une attaque par force brute essayant tous les mots de passe autorisés. Les attaques par force brute, bien que lentes, finiront par casser n'importe quel mot de passe, si elles sont laissées suffisamment longtemps avec beaucoup de puissance de traitement, car toutes les combinaisons possibles seront essayées.

Le problème avec les attaques par force brute est qu'elles ne sont pas très intelligentes. Une attaque par dictionnaire est une variante beaucoup plus ciblée. Au lieu de simplement essayer n'importe quel mot de passe possible, il essaie une liste de mots de passe spécifiés. Le succès de ce type d'attaque dépend de la liste des mots de passe et du dictionnaire en question.

Faire des suppositions éclairées

Les dictionnaires de mots de passe sont généralement construits à partir de mots de passe précédemment piratés à partir d'autres violations de données. Ces dictionnaires peuvent contenir des milliers ou des millions d'entrées. Cela s'appuie sur le concept selon lequel les gens sont mauvais pour créer des mots de passe uniques. Les preuves de violations de données montrent que c'est également le cas, malheureusement. Les gens utilisent encore des variantes du mot « mot de passe ». D'autres sujets courants sont les équipes sportives, les noms d'animaux de compagnie, les noms de lieux, les noms d'entreprises, la haine de votre travail et les mots de passe basés sur la date. Ce dernier a spécifiquement tendance à se produire lorsque les gens sont obligés de changer régulièrement leurs mots de passe.

L'utilisation d'un dictionnaire de mots de passe réduit considérablement le nombre de suppositions à faire par rapport à une attaque par force brute. Les dictionnaires de mots de passe ont également tendance à contenir des mots de passe courts et longs, ce qui signifie que certains mots de passe pourraient être essayés et ne seraient pas atteints même avec des années ou des devinettes par force brute. L'approche s'avère également fructueuse. Les statistiques varient en fonction de la violation de données et de la taille et de la qualité du dictionnaire utilisé, mais les taux de réussite peuvent dépasser 70 %.

Les taux de réussite peuvent être encore plus élevés avec des algorithmes de manipulation de mots. Ces algorithmes prennent chaque mot du dictionnaire de mots de passe, puis le modifient un peu. Ces modifications ont tendance à être des remplacements de caractères standard et l'ajout de chiffres ou de symboles à la fin. Par exemple, il est courant que les gens remplacent la lettre "e" par un "3" et un "s" par un "$" ou ajoutent un point d'exclamation à la fin. Les algorithmes de manipulation de mots créent des doublons de chaque entrée dans le dictionnaire de mots de passe. Chaque doublon a une variante différente de ces remplacements de caractères. Cela augmente considérablement le nombre de mots de passe à deviner et augmente également le taux de réussite, dans certains cas au-dessus de 90 %.

Conclusion

Une attaque par dictionnaire est une variante ciblée d'une attaque par force brute. Plutôt que de tenter toutes les combinaisons de caractères possibles, un sous-ensemble de combinaisons de caractères est testé. Ce sous-ensemble est une liste de mots de passe qui ont déjà été trouvés et si nécessaire piratés lors de violations de données passées. Cela réduit considérablement le nombre de suppositions à faire tout en couvrant les mots de passe qui ont déjà été utilisés et, dans certains cas, souvent vus. Une attaque par dictionnaire n'a pas un taux de réussite aussi élevé qu'une attaque par force brute. Cependant, cela suppose que vous disposiez d'un temps et d'une puissance de traitement illimités. Une attaque par dictionnaire a tendance à obtenir un taux de réussite décemment élevé beaucoup plus rapidement qu'une attaque par force brute. C'est parce qu'il ne perd pas de temps sur des combinaisons de caractères extrêmement improbables.

L'une des principales choses que vous devez faire lorsque vous créez un mot de passe est de vous assurer qu'il n'apparaîtra pas sur une liste de mots. Une façon de faire est de créer un mot de passe complexe, une autre est de créer un mot de passe long. Généralement, la meilleure option est de créer un long mot de passe composé de quelques mots. Il est juste important que ces mots ne forment pas une phrase réelle car cela pourrait être deviné. Ils devraient être complètement indépendants. Il est recommandé de choisir un mot de passe de plus de 10 caractères avec 8 comme strict minimum absolu.