- Attaque par force brute
-
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 trouver le secret plus rapidement.
Sommaire
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 62 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 2N où N 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.
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 infructueux, 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.
En théorie et avec suffisamment de temps, l'attaquant peut toujours 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.
Le problème est tout autre si l'attaquant récupère directement le fichier des hashs des mots de passe ; plus rien ne l'empêche alors de tester chez lui des mots de passe à la vitesse de son(es) ordinateur(s). C'est pourquoi dans tous les UNIX modernes ces hashs sont généralement situés dans le fichier /etc/shadow, lisible uniquement par l'utilisateur root. Une compromission de cet utilisateur permet par conséquent de récupérer ce fichier, et ainsi de lancer une attaque par force brute sur son contenu.
Notes et références
Voir aussi
Articles connexes
- Cassage de mot de passe
- Attaque par dictionnaire
- Authentification forte
- Robustesse d'un mot de passe
Liens externes
- (fr) Programme qui génère des mots de passe, en évalue et en améliore la robustesse
- (fr) Calculer une bonne taille de clef (www.keylength.com)
Wikimedia Foundation. 2010.