Bcrypt vs SHA-256 : Pourquoi la vitesse de hachage met en danger vos mots de passe
C’est l’histoire d’un grand malentendu qui hante les bases de données de milliers d’applications web. Un développeur conçoit un espace membre, sait qu’il ne faut jamais stocker un mot de passe en clair, et applique machinalement une fonction de hachage populaire : le SHA-256. Soulagement général, le site est en ligne, les mots de passe ressemblent à de longues suites de caractères incompréhensibles. La sécurité est assurée.
En réalité, c’est une bombe à retardement.
À l’ère des supercalculateurs et des cartes graphiques (GPU) grand public surpuissantes, confier la sécurité de vos utilisateurs à des algorithmes de hachage traditionnels est devenu un pari extrêmement risqué. Voyons pourquoi et comment y remédier.
1. Le paradoxe de la vitesse : Quand l’efficacité devient un défaut
Pour comprendre la faille, il faut comprendre le but originel de fonctions comme MD5, SHA-1 ou SHA-256. Elles n’ont pas été inventées pour crypter des identifiants, mais pour vérifier l’intégrité de fichiers volumineux. Leur objectif premier ? Être le plus rapide possible.
C’est précisément cette vitesse chirurgicale qui se retourne contre vous lors d’une fuite de données (data breach).
Si un pirate parvient à voler votre table d’utilisateurs contenant des empreintes SHA-256, il n’essaiera pas de “décoder” l’algorithme (ce qui est mathématiquement impossible). Il va faire du hachage à la chaîne (Attaque par force brute).
Vitesse d’attaque estimée sur un ordinateur grand public moderne : ┌───────────────────────────┬────────────────────────────────────────┐ │ Algorithme de hachage │ Nombre de clés testées par seconde │ ├───────────────────────────┼────────────────────────────────────────┤ │ SHA-256 │ ~ 1 000 000 000 à 5 000 000 000+ │ ├───────────────────────────┼────────────────────────────────────────┤ │ Bcrypt (Cost Factor 10) │ ~ 10 à 20 │ └───────────────────────────┴────────────────────────────────────────┘
Grâce à cette puissance de calcul, un dictionnaire regroupant les millions de maux de passe les plus courants couplé à des tables de correspondances (Rainbow Tables) permettra au hacker de retrouver les accès de 80% de vos utilisateurs en un claquement de doigts.
2. L’ingénierie de Bcrypt : Ralentir l’attaquant par le calcul
Pour neutraliser cette force brute, les cryptographes ont dû inverser leur logique : créer un algorithme volontairement lent et gourmand en ressources. C’est l’acte de naissance de Bcrypt.
Bcrypt intègre nativement deux boucliers qui paralysent les serveurs des pirates :
- Le Salage (Salt) automatique et unique : Avant chaque opération de hachage, Bcrypt génère une chaîne aléatoire qu’il fusionne avec le mot de passe. Si deux utilisateurs choisissent exactement le même mot de passe (comme l’indémodable
azerty), leurs empreintes stockées en base seront totalement différentes. Les Rainbow Tables deviennent instantanément obsolètes. - Le Facteur de Coût ajustable (Work Factor) : C’est le paramètre magique de Bcrypt. Il détermine le nombre d’itérations (de boucles mathématiques) que l’algorithme doit exécuter. Configuré à un coût standard de 10 ou 12, le calcul prend environ 100 millisecondes. Pour un utilisateur légitime qui se connecte, ce délai est strictement imperceptible. Pour un hacker qui doit tester des milliards de combinaisons, le mur du temps devient infranchissable.
3. Comment tester vos empreintes de développement proprement ?
Pendant la conception de vos architectures logicielles, lors de l’écriture de vos scripts de migration ou lorsque vous devez injecter manuellement un accès administrateur en urgence, manipuler des hashs Bcrypt est monnaie courante.
Cependant, coller un mot de passe secret ou une empreinte sur un outil cloud tiers est une hérésie en termes de sécurité. Si le site distant enregistre les logs, vos clés d’accès se retrouvent dans la nature.
En exploitant la puissance du front-end moderne en circuit fermé, vous pouvez exécuter ces calculs cryptographiques lourds directement au sein de la sandbox isolée de votre navigateur. Aucune donnée ne transite par un réseau externe, vous garantissant une souveraineté numérique absolue, du code de développement jusqu’à vos utilisateurs finaux.