Decoding the Joke #1 : Le (mauvais) test de Turing
Régulièrement, des proches qui n'ont pas forcément de connaissances en développement me demandent pourquoi tel ou tel mème de "dev" est drôle. J'ai donc eu l'idée de cette série de posts, Decoding the Joke, où je vous expliquerai un mème qui me fait rire, tout en vous apportant quelques connaissances vulgarisées. Le premier de cette série est probablement l'un de ceux qui me fait le plus rire.
"Hey ! Qu'est ce qu'il se passe ?"
"Espèce de grand malade !"
Sur cette image, on voit un développeur proposer une solution pour se protéger des attaques par force brute (brute-force) qui réside dans le code suivant :
if isPasswordCorrect && isFirstLoginAttempt {
Error("Wrong Login or password")
}Si je devais vous traduire ce code, il voudrait dire : si le mot de passe est correct ET que c'est la première tentative de connexion, alors affiche l'erreur "Mauvais login ou mot de passe".
Ce mème me fait beaucoup rire à cause de la simplicité du raisonnement, présenté comme si c'était du génie. Le développeur part du postulat que lors d'une attaque brute-force, le script se fiche de recevoir une erreur : s'il en rencontre une, il passe simplement à la combinaison suivante. L'humain, par contre, va se dire dans 99,9 % des cas : "Mince, j'ai dû me tromper en tapant mon mot de passe". Il va donc le saisir à nouveau et, cette fois, il pourra se connecter car il ne remplira plus la condition "première tentative".
Cette protection repose sur l'idée que seul un humain peut être déstabilisé par un mensonge. Un script, lui, ne traite que des faits (succès ou échec). Le développeur punit ainsi 100 % des utilisateurs. C'est terrible en termes d'expérience utilisateur (UX) et, en plus, cette protection ne serait viable que si le script ne testait le mot de passe qu'une seule fois. Ce n'est jamais le cas : ce mot de passe se retrouvera sûrement dans une autre liste que le script finira par tester plus tard.
Maintenant, vous vous demandez sûrement : c'est quoi une attaque brute-force ? Voici la définition de la CNIL : "Une attaque par force brute consiste à tester, l’une après l’autre, chaque combinaison possible d’un mot de passe ou d’une clé pour un identifiant donné afin de se connecter au service ciblé." Dans le monde du développement, un hacker ne va pas tester lui-même des milliers de combinaisons ; il va faire appel à un script qui envoie des requêtes de connexion en boucle. Il peut ainsi tester des centaines, voire des milliers de combinaisons par seconde.
Plus un mot de passe est simple, plus il est facile à craquer. C'est pour cela qu'on recommande des mots de passe d'au moins 12 à 15 caractères, générés au hasard et regroupant des minuscules, des majuscules, des chiffres et des symboles. De cette manière, le temps nécessaire pour trouver le mot de passe se compte en décennies ou en siècles. Vous pouvez aussi essayer les phrases de passe tel que Banane-Spatule-Bleue-2026! par exemple.
