Attaque par force brute

Un article de Wikipédia, l'encyclopédie libre.

Deep Crack, circuit dédié à l'attaque par force brute de DES.
Deep Crack, circuit dédié à l'attaque par force brute de DES.

L'attaque par force brute est une méthode utilisée en cryptanalyse pour trouver un mot de passe ou une clé. Il s'agit de tester, une à une, toutes les combinaisons possibles. Cette méthode de recherche exhaustive ne réussit que dans les cas où le mot de passe cherché est constitué de peu de caractères. Ces programmes tentent toutes les possibilités de mot de passe dans un ordre aléatoire afin de berner les logiciels de sécurité qui empêchent de tenter tous les mots de passe dans l'ordre.

Pour contrer cette méthode, il suffit simplement de choisir des mots de passe d'une grande longueur ou des clés suffisamment grandes. Ainsi, l'attaquant devra mettre beaucoup de temps pour trouver le bon mot de passe. Cette méthode est très sensible aux capacités de calcul des machines effectuant l'algorithme.

Cette méthode est souvent combinée avec l'attaque par dictionnaire et par table arc-en-ciel pour obtenir de meilleurs résultats.

Cette méthode n'est pas une attaque à proprement parler car elle se contente de définir le plus petit temps qu'il faudra pour trouver le secret. Cette méthode étant applicable à n'importe quel algorithme, lui donner le titre d'attaque signifierait que tous les protocoles sont attaqués et donc non fiables. Il s'agit donc d'un abus de langage fréquent.

Sommaire

[modifier] Explication mathématique

Si le mot de passe contient N caractères, indépendants (la présence d'un caractère ne va pas influencer un autre) et uniformément distribués (aucun caractère n'est privilégié), le nombre maximum d'essais nécessaires se monte alors à :

  • 26N si le mot de passe ne contient que des lettres de l'alphabet totalement en minuscules ou en majuscules
  • 52N si le mot de passe ne contient que des lettres de l'alphabet, avec un mélange de minuscules et de majuscules
  • 62N si le mot de passe mélange les majuscules et les minuscules ainsi que les chiffres

Il suffit en fait d'élever la taille de « l'alphabet » utilisé à la puissance N. Il s'agit ici d'une borne supérieure et en moyenne, il faut deux fois moins d'essais pour trouver le mot de passe (si celui-ci est aléatoire). En réalité, bien peu de mots de passe sont totalement aléatoires et le nombre d'essais est bien inférieur aux limites données ci-dessus (grâce à la possibilité d'une attaque par dictionnaire).

Le tableau ci-dessous donne le nombre maximum d'essais nécessaires pour trouver des mots de passe de longueurs variables.

Type 3 caractères 6 caractères 9 caractères
lettres minuscules 17 576 308 915 776 5,4 × 1012
lettres minuscules et chiffres 46 656 2 176 782 336 1,0 × 1014
minuscules, majuscules et chiffres 238 328 5,6 × 1010 1,3 × 1016

Un ordinateur personnel est capable de tester plusieurs centaines de milliers voire quelques millions de mots de passe par seconde. Cela dépend de l'algorithme utilisé pour la protection mais on voit qu'un mot de passe de seulement 6 caractères, eux-mêmes provenant d'un ensemble de 36 symboles (minuscules ou majuscules accompagnés de chiffres), ne tiendrait pas très longtemps face à une telle attaque.

Dans le cas des clés utilisées pour le chiffrement, la longueur est souvent donnée en bits. Dans ce cas, le nombre de possibilités (si la clé est aléatoire) à explorer est de l'ordre de 2NN est la longueur de la clé en bits. Une clé de 128 bits représente déjà une limite impossible à atteindre avec la technologie actuelle et l'attaquant doit envisager d'autres solutions cryptanalytiques si celles-ci existent. Il faut cependant prendre en compte que la puissance du matériel informatique évolue sans-cesse (voir Loi de Moore) et un message indéchiffrable à un moment donné peut l'être par le même type d'attaque une dizaine d'années plus tard.

[modifier] Limiter la recherche exhaustive

Pour éviter des attaques par force brute, la meilleure solution est:

  • d'allonger le mot de passe ou la clé si cela est possible;
  • utiliser la plus grande gamme de symboles possibles (minuscules, majuscules, ponctuations, chiffres); l'introduction de caractères nationaux (Â, ÿ...) rend plus difficile le travail des pirates (mais parfois aussi l'entrée de son mot de passe quand on se trouve à l'étranger);
  • pour éviter d'avoir à faire face à une attaque par dictionnaire, faire en sorte que le mot de passe soit aléatoire;
  • et pour une sécurité optimum, empêcher de dépasser un nombre maximal d'essais en un temps ou pour une personne donnée.

Dans les applications, on peut aussi introduire un temps d'attente entre l'introduction du mot de passe par l'utilisateur et son évaluation. L'éventuel attaquant devrait dans ce cas attendre plus longtemps pour pouvoir soumettre les mots de passe qu'il génère. Le système peut aussi introduire un temps d'attente après plusieurs essais infructueux, ceci dans le but de ralentir l'attaque. Les systèmes de mots de passe comme celui d'Unix utilisent une version modifiée du chiffrement DES. Chaque mot de passe est accompagné d'une composante aléatoire appelée sel dont le but est de modifier la structure interne de DES et éviter ainsi une recherche exhaustive en utilisant du matériel spécialement conçu pour DES.

Deux brevets principaux existent à ce sujet :

  • Un des laboratoires Bell consistant à doubler le temps d'attente après chaque essai infructeux, pour le faire redescendre ensuite en vol plané après un certain temps sans attaques.
  • Un de la compagnie IBM consistant à répondre "Mot de passe invalide" après N essais infructueux en un temps T, y compris si le mot de passe est valide[1] : le pirate a alors toutes les chances de rayer de façon erronée le mot de passe valide en le considérant invalide. De plus, cette méthode empêche toute attaque visant à un déni de service pour l'utilisateur.

Avec suffisamment de temps, l'attaquant peut toujours (en théorie) trouver le mot de passe, mais lorsque ce temps dépasse la décennie, il ne pourra pas en escompter un grand profit, et le mot de passe aura de toute façon changé. Il change même à chaque fois si l'on emploie le principe du masque jetable.

Tout autre serait le problème si l'attaquant récupérait directement le fichier des hashs des mots de passe, car plus rien ne l'empêcherait chez lui de tester des mots de passe à la vitesse de son(es) ordinateur(s). C'est pourquoi dans tous les UNIX modernes ce fichier qui était dans /etc/passwd (à lecture universelle) est déplacé dans /etc/shadow/passwd - ou autre - (à lecture par le seul module de login). Un tel fichier reste cependant récupérable par la méthode dite de session hijacking[2].

[modifier] Notes

  1. http://www.freepatentsonline.com/EP1209551.html
  2. (en) session hijacking

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Liens externes


Mesures de sécurité cryptographique
Cryptographie : Preuve de sécurité | Sécurité inconditionnelle | IND-CPA | IND-CCA | Kerckhoffs | Malléabilité | Sécurité calculatoire | Hypothèses calculatoires | Confusion et diffusion
Cryptanalyse de base : Biais statistique | Corrélation | Dictionnaire | Force brute | Fréquence | Indice de coïncidence | Interpolation | Mot probable
Cryptanalyse par canal auxiliaire : Canaux auxiliaires : Acoustique | Consommation | Émanations EM | Faute | Sondage | Temporel
Cryptanalyse ciblée : Clé apparentée | Clé faible | EFF | Enigma | Glissement | Intégrale | Linéaire / Différentielle / Différentielle impossible / Différentielle-linéaire / Boomerang | Modes opératoires | Modulo n | Quadratique | Rectangle | Rencontre au milieu | Vigenère | χ²
Systèmes asymétriques : Clé apparentée | Clé faible | Homme au milieu | Sécurité sémantique
Fonctions de hachage : Effet avalanche | Linéaire / Différentielle | Paradoxe des anniversaires | Pseudo-collision
Autres : Anonymat | Confidentialité | Intégrité | Sécurité par l'obscurité