MD5 ou SHA-256 : quel hachage utiliser ?
MD5 et SHA-256 transforment tous deux un fichier en une courte empreinte, mais un seul reste fiable quand quelqu’un cherche à vous tromper. Nous avons chronométré sept fonctions de hachage et regardé ce que « cassé » veut vraiment dire.
Pages de téléchargement, outils de sauvegarde et rapports d’expertise citent tous des hachages, parfois MD5, parfois SHA-256, parfois les deux. Ils se ressemblent, de longues suites de lettres et de chiffres, mais ils ne sont pas interchangeables. Nous avons chronométré sept fonctions de hachage dans le navigateur et regardé ce que « cassé » veut vraiment dire pour MD5, afin de savoir quand chacune est le bon choix.
Ce qu’est un hachage
Une fonction de hachage transforme n’importe quelle quantité de données en une empreinte courte de longueur fixe. Les mêmes données donnent toujours la même empreinte, et la moindre modification en donne une complètement différente. Changer une seule majuscule suffit :
MD5 Tooloat dc73decfa67455e9850e5c5436f0f352
MD5 tooloat 3cf2985ef86fe54d497628b19ec2ffa3
SHA-256 Tooloat 593679c12c57025648598e66c6fdd88b1dcbf8b58543a3c150817e8dd48be2db
SHA-256 tooloat 31f0fbc2bb921f2f1083df2e23a4dd3bdc2a626ae71b6b8cd90849a5efc831efC’est ce qui rend les hachages utiles pour vérifier des fichiers. Si le SHA-256 de votre téléchargement correspond à celui qu’affiche l’éditeur, le fichier est bien celui qu’il a publié, jusqu’au dernier bit.
Ce que « cassé » veut dire pour MD5
Un hachage sûr doit rendre pratiquement impossible de trouver deux entrées différentes avec la même empreinte, une collision. Pour MD5, ce n’est plus vrai depuis 2004, quand des chercheurs ont publié les premières collisions. Depuis, les attaques n’ont fait que progresser :
- 2008 : des chercheurs ont utilisé des collisions MD5 pour créer une fausse autorité de certification à laquelle les navigateurs auraient fait confiance.
- 2012 : le logiciel espion Flame a utilisé une collision MD5 pour forger un certificat de signature de code Microsoft et passer pour une mise à jour de Windows.
- Aujourd’hui : des outils gratuits génèrent en quelques secondes, sur un ordinateur portable ordinaire, une paire de fichiers différents avec le même MD5.
SHA-1 a suivi. En 2017, une équipe de Google et du CWI d’Amsterdam a publié deux fichiers PDF différents avec le même SHA-1, et en 2020 l’attaque était devenue praticable contre des formats réels. SHA-256, de la famille SHA-2, n’a aucune collision connue, pas plus que SHA-512 ou BLAKE3.
L’attaque a une limite importante. Une collision signifie que quelqu’un a créé deux fichiers qui correspondent l’un à l’autre. Elle ne permet pas de créer un nouveau fichier qui corresponde à un MD5 que vous avez déjà, un problème bien plus difficile que personne n’a résolu pour MD5. Cette distinction décide quand MD5 reste acceptable.
Vitesse
Le générateur de hachage de Tooloat sur un Intel Xeon de 2013, lisant le fichier par morceaux de 2 Mo. La lecture seule tournait à 325 Mo/s.
MD5 était ici 1,8 fois plus rapide que SHA-256. Concrètement, une vidéo de 4 Go prend environ 22 secondes avec MD5 et environ 40 avec SHA-256. L’écart se réduit sur les processeurs récents, dont beaucoup intègrent des instructions dédiées à SHA-256. Le SHA-256 natif du navigateur, du code natif plutôt que du WebAssembly, atteignait déjà 228 Mo/s sur la même vieille machine. Sur les gros fichiers, c’est de toute façon souvent le disque qui limite.
Que SHA-512 soit plus rapide que SHA-256 n’est pas une erreur : il travaille sur des nombres de 64 bits, qui conviennent aux processeurs modernes, et traite plus de données à chaque étape. BLAKE3, le plus récent du groupe, est conçu pour être encore plus rapide avec plusieurs cœurs et des instructions larges, ce que notre test sur un seul fil n’utilise pas.
Quand MD5 convient et quand il ne convient pas
| Usage | MD5 ou SHA-1 | À utiliser plutôt |
|---|---|---|
| Vérifier un téléchargement avec la somme de contrôle de l’éditeur | Seulement si c’est tout ce qu’il publie | SHA-256 |
| Repérer des dégâts accidentels dans des sauvegardes ou transferts | Convient | N’importe lequel, y compris CRC-32 |
| Trouver des fichiers en double sur votre propre disque | Convient | N’importe lequel |
| Signatures numériques et certificats | Dangereux | SHA-256 ou plus fort |
| Prouver qu’un document n’a pas été modifié par quelqu’un d’autre | Dangereux | SHA-256 ou plus fort |
| Stocker des mots de passe | Dangereux | Argon2id, bcrypt ou scrypt |
La règle simple : si quelqu’un pourrait préparer délibérément un fichier pour tromper la vérification, utilisez SHA-256. Si le seul danger est l’accident, comme un câble, un disque ou un réseau qui inverse un bit, MD5 le détecte encore, tout comme le bien plus simple CRC-32.
Comment vérifier le hachage d’un fichier
- Ouvrez le générateur de hachage et déposez le fichier. Il est lu par petits morceaux dans votre navigateur : même les gros fichiers fonctionnent et rien n’est envoyé.
- Choisissez les algorithmes nécessaires. Ils sont tous calculés en une seule passe : en ajouter coûte peu.
- Collez la somme de contrôle de la page de téléchargement dans Vérifier avec une somme de contrôle, ou tout le contenu d’un fichier SHA256SUMS. L’outil trouve l’algorithme d’après la correspondance et indique si elle concorde.
Si la somme de contrôle ne concorde pas, n’ouvrez pas le fichier. Téléchargez-le à nouveau, et s’il diffère toujours, ce n’est pas le fichier qu’a publié l’éditeur.
Questions et réponses
MD5 est-il encore sûr ?
Pour détecter une corruption accidentelle, oui. Pour tout ce qu’on pourrait préparer délibérément, comme des signatures, des certificats ou des contrôles de sécurité, non : des collisions MD5 se créent en quelques secondes.
SHA-256 est-il plus rapide que MD5 ?
Non. Dans notre test dans le navigateur, MD5 tournait à 186 Mo/s et SHA-256 à 104 Mo/s. Les processeurs avec des instructions SHA réduisent l’écart, et le SHA-256 intégré au navigateur atteignait 228 Mo/s sur la même machine.
Deux fichiers peuvent-ils avoir le même hachage SHA-256 ?
En théorie, puisqu’il existe plus de fichiers possibles que de hachages, mais aucune paire n’a jamais été trouvée, et en trouver une dépasse de loin toute méthode connue.
Quel hachage utiliser pour les sommes de contrôle ?
SHA-256. C’est la norme pour les sommes de contrôle publiées, tous les systèmes d’exploitation savent le calculer, et il résiste aux falsifications délibérées.
Les outils de cet article
À lire aussi sur le blog
Comment supprimer la position et les autres métadonnées des photos
Chaque photo contient des données cachées sur l’appareil, l’heure et souvent le lieu. Nous avons lu ce que neuf photos publiées révélaient encore, ajouté une position pour montrer sa précision et vérifié que la retirer laisse l’image intacte.
Combien de temps faut-il pour craquer un mot de passe ?
La force d’un mot de passe dépend du nombre de mots de passe qui auraient pu être choisis, pas de son air compliqué. Nous avons calculé combien de temps les types courants résistent à une carte graphique moderne, et pourquoi ceux qu’on invente tombent en premier.
Les convertisseurs en ligne envoient-ils vos fichiers ?
La plupart des convertisseurs en ligne envoient votre fichier à un serveur ; certains font le travail dans votre navigateur. Voici comment savoir en une minute à quel type un site appartient, et à quoi ressemblait chaque requête quand nous avons converti une photo sur notre site.