L’attaque par force brute (bruteforce en anglais) consiste à essayer exhaustivement toutes les possibilités contre un secret (par exemple un mot de passe) jusqu’à trouver la bonne.
Un pirate voulant trouver votre mot de passe sur un site Web peut trivialement essayer séquentiellement toutes les possibilités : «a», «b», «c», ... «A», «B», ... «0», «1», ... «aa», «ab», «ac», ... «aA», «aB», ... «a0», «a1», ...etc.
En deux mots c’est ça la force brute. On dit aussi qu’il essaye de «bruteforcer» votre mot de passe.
Le jargon plus professionnel peut parfois employer les termes «d’attaque exhaustive» ou «d’attaque itérative».
Mais ça va être super long me direz-vous ?
En fait, il ne teste pas ces mots de passe lui-même (où il aurait du mal à réaliser plus d’un essai par seconde). Il va utiliser un programme pour automatiser ça. Et donc là, le fait que ce soit long ou pas va dépendre de la vitesse à laquelle il peut tester et de la complexité de votre mot de passe.
Certaines attaques peuvent atteindre les 10 milliards d’essais par seconde. Donc si votre mot de passe c’est le nom de votre fille : «Laura!», le pirate mettra 19 heures pour tester toutes les combinaisons de minuscules, majuscules, chiffres et ponctuation avant de tomber sur la bonne.
Initialement j’ai donné l’exemple d’un bruteforce contre le mot de passe de votre compte sur un site Web (Instagram, Tiktok, LinkedIn, ...). Mais c’est généralisable à tout ce qui est un secret : un mot de passe donc, mais aussi une clé de chiffrement, un code PIN ou encore le nom d’une ville (si par exemple votre question de sécurité est «la ville de naissance de votre mère»).
Seulement, une attaque par force brute a forcément besoin d’un truc pour marcher : un «oracle». C’est-à-dire quelque chose qui lui indique si la possibilité testée est la bonne ou pas.
Quand un pirate essaye de bruteforcer un compte sur un site Web, c’est ce site Web qui va agir comme un oracle : il lui indiquera «mot de passe incorrect» chaque fois que le candidat testé sera mauvais et «bienvenue» quand il aura trouvé le bon.
Si je veux brutefocer la combinaison d’un cadenas, ce cadenas agit comme oracle car il m’indique qu’un essai est mauvais en ne s’ouvrant pas.
Cela peut sembler trivial dit comme ça, mais il existe en fait plein de configurations où les pirates ne disposent d’aucun oracle pour réaliser une attaque par force brute.
Par exemple, si un pirate veut bruteforcer votre code PIN, mais qu’il n’a pas votre téléphone sous la main, alors il n’a pas d’oracle. Il peut alors bien itérer toutes les combinaisons possibles s’il veut, il n’a nulle part où les tester pour distinguer la bonne.
Réussir une attaque par force brute nécessite un niveau d’interaction minimal avec la cible.
Ce type d’attaque existe depuis très longtemps et de plusieurs protections ont été mises en place au fil du temps pour s’en prémunir.
La plus connue est de limiter le nombre d’essais. Si au bout de 3 mots de passe essayés, le site Web vous répond «compte bloqué», même si vous pouvez tester des milliards d’essais par seconde, vous n’êtes pas plus avancé.
Il existe d’autres types d’attaque contre les mots de passe.
L’alternative la plus fréquente est l’attaque par dictionnaire (wordlist). Le pirate va itérer les candidats d’une liste de mots plutôt que de tester séquentiellement toutes les possibilités. Par exemple, pour une attaque contre un mot de passe, il pourra utiliser la liste des 1 millions de mots de passe les plus couramment utilisés.
L’autre alternative est l’attaque par mot probable. Le pirate glane toutes les informations qu’il peut sur vous et s’en sert pour construire une liste de mots de passe probables : le nom de votre chien, de vos enfants, votre date de naissance, le lieu où vous avez grandi, etc. Il peut aussi les combiner et les dériver (toulouse, TOULOUSE, Toulouse, T0ul0use, Toulouse!, tou1ou$3, ...).