MD5 vaut-il encore la peine d'être cassé en 2026 ?
MD5 est une empreinte rapide et non salée qui traîne partout. Pourquoi le casser relève de la préimage, pas de la collision, et que faire côté défense.
On répète que MD5 est mort. C'est à moitié vrai, et la moitié fausse est précisément celle qui compte quand vous fixez un dump de chaînes hexadécimales de 32 caractères.
MD5 est une empreinte de message rapide et non salée. Conçu en 1991 pour être véloce, il l'est. Cette seule propriété explique pourquoi il reste l'une des choses les plus rentables à trouver sur une cible, et aussi pourquoi aucune équipe sérieuse ne devrait y stocker un mot de passe.
Les collisions ne sont pas l'attaque que vous menez
Quand quelqu'un annonce que « MD5 est cassé », il parle presque toujours de sa résistance aux collisions. On peut fabriquer deux entrées différentes qui produisent la même empreinte. Cela casse les signatures numériques, les chaînes de certificats et tout schéma qui fait confiance à une empreinte pour identifier un fichier de façon unique. Flame a exploité exactement cela en 2012.
Casser un hash de mot de passe est un problème tout autre. Vous ne cherchez pas deux entrées quelconques qui entrent en collision. Vous avez une empreinte précise et vous voulez l'entrée unique qui l'a produite. C'est un problème de préimage, et la résistance de MD5 à la préimage n'a jamais été sérieusement entamée. On ne le casse donc pas par des mathématiques astucieuses. On le casse en devinant, vite.
Confondre ces deux idées est la méprise la plus courante autour de MD5. Résistance aux collisions et aptitude au stockage de mots de passe sont deux axes distincts. MD5 échoue au premier pour des raisons cryptographiques et au second pour des raisons de performance, et ces raisons ne se recoupent pas.
Pourquoi la devinette gagne : le débit brut
Tout se joue sur le débit. Un GPU moderne calcule MD5 à des dizaines de milliards de hash par seconde. Une seule RTX 4090 dépasse confortablement 60 GH/s sur -m 0. Un petit cluster transforme n'importe quel mot de passe choisi par un humain en consultation quasi instantanée.
hashcat -m 0 -a 0 dump.txt rockyou.txt -r rules/best64.rule
Pointez cela sur du MD5 non salé et les mots de passe courants disparaissent avant la fin de votre café. Rien d'exotique. L'algorithme offre à l'attaquant tant de vitesse que même une wordlist maladroite plus un jeu de règles épuise les deux tiers faciles de la plupart des dumps. C'est le visage concret de la raison pour laquelle les hash rapides sont dangereux : la vitesse est tout l'avantage de l'attaquant, et MD5 la donne gratuitement.
On le croise encore partout
Si MD5 avait disparu, ce serait académique. Ce n'est pas le cas. On le trouve dans des applis web héritées dont le code d'authentification a été écrit il y a dix ans et jamais retouché. Dans des plugins CMS maison, des forums antérieurs à l'ère bcrypt, des outils internes que plus personne ne maintient. On le trouve aussi à faire un travail parfaitement légitime de somme de contrôle non sécuritaire : manifestes d'intégrité de fichiers, clés de déduplication, invalidation de cache. Ces usages sont corrects. MD5 comme empreinte de contenu, là où les collisions adverses sont sans enjeu, est raisonnable et rapide. MD5 comme stockage de mot de passe est une faute professionnelle.
Le souci : un MD5 brut et un MD5 de somme de contrôle sont identiques, 32 caractères hexadécimaux. La chaîne seule ne dit rien de l'intention. Le contexte, si.
Le MD5 salé change le mode, pas la difficulté
Dès qu'un développeur greffe un sel sur MD5, le format sur disque change, et votre mode hashcat aussi. Un sel ne ralentit pas MD5 essai par essai. Il tue seulement les rainbow tables précalculées et empêche deux mots de passe identiques de partager une empreinte. Le GPU continue d'avaler des milliards de tentatives par seconde.
Ce qu'il exige, c'est d'identifier la construction correctement. md5($sel.$pass) est -m 10. md5($pass.$sel) est -m 20. Les constructions imbriquées façon vBulletin ont leurs propres modes. Choisissez mal et hashcat rejette la ligne ou ne casse rien en silence. Quand la disposition est ambiguë, suivez la méthode pour trouver le bon mode hashcat plutôt que de deviner, car un MD5 salé dans le mauvais mode gâche un run et vous fait croire que les mots de passe sont solides alors qu'ils ne le sont pas.
Le versant défensif est court
Ne stockez jamais un mot de passe en MD5, salé ou non. Le sel ne vous achète rien contre le problème de débit. Si vous héritez d'un système qui le fait, considérez chaque identifiant comme déjà compromis et migrez.
Passez à une fonction lente, salée et gourmande en mémoire : bcrypt à un coût raisonnable, ou Argon2id si possible. La voie de migration propre consiste à envelopper les empreintes MD5 existantes dans bcrypt à la prochaine connexion, ou à re-hacher de façon transparente après une authentification réussie, puis à supprimer la colonne MD5. N'inventez pas votre propre schéma. N'itérez pas MD5 mille fois en l'appelant un KDF.
MD5 en 2026 ne vaut pas la peine d'être défendu et vaut tout à fait la peine d'être cassé. Il est rapide, il est partout, et la seule chose entre un attaquant et le clair, c'est la qualité du mot de passe. Un pari que les défenseurs perdent bien plus souvent qu'ils ne le devraient.