Aller au contenu
HandfulTools

Vérifier un téléchargement avec une somme de contrôle (SHA-256, MD5)

S'assurer qu'un installeur ou une image ISO n'a pas été corrompu ni modifié, en comparant son empreinte SHA-256 avec celle publiée par l'éditeur.

· 6 min de lecture

Les éditeurs de logiciels publient souvent une « somme de contrôle » ou « empreinte » à côté de leurs téléchargements — une longue chaîne du type e3b0c442…b855. Calculer la même empreinte sur le fichier que vous avez reçu, puis comparer les deux, vous dit si vous disposez exactement des octets que l'éditeur a mesurés. Cela ne vous dit rien sur la fiabilité de l'éditeur, ni sur celle de la page où vous avez lu l'empreinte.

La méthode rapide : déposez votre fichier dans le calculateur d'empreinte de fichier. Il calcule les empreintes MD5, SHA-1, SHA-256, SHA-384 et SHA-512 localement — le fichier n'est jamais envoyé — et si vous collez la valeur publiée dans Empreinte attendue, il la compare à tous les algorithmes et indique Correspondance ou Aucune correspondance.

Ce qu'est une empreinte

Une fonction de hachage cryptographique lit un fichier de n'importe quelle taille et produit une empreinte de longueur fixe. La même entrée donne toujours la même sortie, et la moindre modification change entièrement le résultat.

Le changement est bien total, et non proportionnel. Le texte hello haché en SHA-256 donne 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 ; en changeant la dernière lettre pour hellp, on obtient fdd7585e08c4e2afd71dcabdb4636c89d557a3f42db9e2040c8bbd1708aa4ce7. Ces deux valeurs diffèrent sur 131 de leurs 256 bits, soit environ la moitié : exactement ce qu'on attendrait de deux nombres sans rapport. Une empreinte ne peut pas être « presque » identique : elle correspond, ou elle ne correspond pas.

Ce que cela prouve, et ce que cela ne prouve pas

Question Une empreinte identique y répond-elle ?
Le téléchargement a-t-il été corrompu en route ou sur le disque ? Oui
Est-ce le même fichier que celui mesuré par l'éditeur ? Oui
Le fichier provient-il bien de l'éditeur ? Non
Le logiciel est-il sans danger ? Non

Une empreinte apporte l'intégrité, pas l'authenticité. Si un attaquant peut remplacer le téléchargement, il peut généralement remplacer aussi l'empreinte publiée sur la même page, et les deux concorderont. L'empreinte ne vaut que ce que vaut le canal dont elle provient : privilégiez le site HTTPS de l'éditeur, et mieux encore un fichier d'empreintes signé avec la clé GPG du projet, que vous vérifiez ensuite avec une clé en laquelle vous avez déjà confiance.

Un compromis utile en pratique : lisez l'empreinte sur le site officiel en HTTPS, et téléchargez le fichier depuis le miroir le plus rapide. Cette combinaison détecte un miroir compromis ou périmé, qui est le cas le plus courant.

Les commandes, système par système

Système Commande
Windows (invite de commandes) certutil -hashfile fichier SHA256
Windows (PowerShell) Get-FileHash -Algorithm SHA256 fichier
macOS shasum -a 256 fichier
Linux sha256sum fichier

Sous Linux et macOS, vous pouvez aussi vérifier toute une liste d'un coup. Les projets qui publient un fichier SHA256SUMS prévoient cet usage :

sha256sum -c SHA256SUMS

qui affiche nomdufichier : OK pour chaque fichier trouvé et conforme. Les chiffres hexadécimaux n'ont pas de casse propre : une empreinte peut donc s'afficher en majuscules ou en minuscules selon l'outil, et certaines commandes insèrent des espaces entre les paires d'octets. Rien de tout cela ne change la valeur : ignorez la casse et les espaces lors de la comparaison, ou collez l'empreinte dans l'outil ci-dessus, qui s'en charge.

SHA-256, MD5 et les autres

Algorithme Empreinte Caractères hexadécimaux À utiliser ?
MD5 128 bits 32 Détection de corruption seulement
SHA-1 160 bits 40 Ancien ; à éviter aujourd'hui
SHA-256 256 bits 64 Oui, le choix par défaut actuel
SHA-512 512 bits 128 Oui ; souvent plus rapide sur processeur 64 bits

MD5 et SHA-1 détectent encore parfaitement un téléchargement tronqué ou un bit inversé. Ce à quoi ils ne résistent plus, c'est à une attaque délibérée : des collisions pratiques pour MD5 sont publiques depuis 2004, et une collision complète sur SHA-1 a été démontrée en 2017. Un attaquant capable de fabriquer deux fichiers de même empreinte peut faire approuver l'un et livrer l'autre. SHA-256 compte 2^256 sorties possibles, soit environ 1,16 × 10^77, et aucune attaque de ce type n'est connue contre lui.

Si un éditeur ne propose que du MD5, servez-vous-en comme contrôle d'intégrité et cherchez une signature ailleurs, plutôt que de considérer la correspondance comme une preuve d'origine.

Étape par étape

  1. Trouvez l'empreinte sur le site officiel de l'éditeur, généralement intitulée SHA-256. Repérez l'algorithme : une valeur de 32 caractères est un MD5, une valeur de 64 caractères un SHA-256.
  2. Déposez le fichier téléchargé dans le calculateur d'empreinte de fichier, ou lancez la commande correspondant à votre système.
  3. Comparez. Collez la valeur publiée dans Empreinte attendue plutôt que de lire 64 caractères à l'œil — ou, si vous avez les deux empreintes sous forme de texte, collez-les dans Comparer deux textes, qui met en évidence les caractères différents.

Ne comparez pas seulement les premiers et les derniers caractères. Cela suffit à repérer un mauvais fichier, mais c'est précisément le raccourci qu'un fichier substitué serait conçu pour tromper.

Quand cela ne correspond pas

  • Retéléchargez, de préférence depuis la source officielle. Un transfert interrompu est la cause la plus fréquente.
  • Vérifiez que vous avez haché le bon fichier : un installeur contenu dans un .zip n'a pas la même empreinte que le .zip lui-même.
  • Vérifiez l'algorithme. Une valeur SHA-256 ne correspondra jamais à une empreinte MD5, et l'outil indique quel algorithme a correspondu.
  • Méfiez-vous d'un fichier vide. e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 est l'empreinte SHA-256 d'une entrée vide : la voir signifie que le téléchargement n'a rien produit.
  • Si cela ne correspond toujours pas, n'exécutez pas le fichier. Signalez-le plutôt à l'éditeur.

Hacher du texte plutôt qu'un fichier

Pour hacher une chaîne — vérifier la signature d'un webhook, comparer deux valeurs de configuration, reproduire une empreinte issue d'une documentation — utilisez le générateur d'empreintes. Notez que les empreintes ne sont pas toujours présentées en hexadécimal : le champ integrity de npm et les attributs Subresource Integrity les publient en Base64, sous la forme sha512-…, que l'encodeur Base64 et le guide Le Base64 expliqué vous aideront à lire.

Un usage pour lequel ces empreintes ne conviennent pas : le stockage des mots de passe. SHA-256 est conçu pour être rapide, soit l'inverse de ce qu'exige le stockage d'un mot de passe, qui réclame une fonction volontairement lente et salée comme bcrypt, scrypt ou Argon2. Le guide Comment créer un mot de passe solide traite l'autre versant du problème.

Questions fréquentes

Mon fichier est-il envoyé pour être vérifié ? Non. Il est lu et haché dans votre navigateur, jusqu'à environ 500 Mo selon la mémoire de votre appareil. Au-delà, la ligne de commande est préférable.

Pourquoi le calcul est-il si long ? Le fichier doit être lu en entier. La durée dépend surtout de la vitesse du disque et de la taille : une image ISO de plusieurs gigaoctets prendra du temps avec n'importe quel outil.

Deux fichiers différents peuvent-ils avoir la même empreinte SHA-256 ? Mathématiquement oui, puisqu'il existe plus de fichiers possibles que d'empreintes. Personne n'a jamais exhibé une telle paire pour SHA-256.

Le nom du fichier compte-t-il ? Non. L'empreinte porte uniquement sur le contenu : renommer un fichier ne change jamais sa somme de contrôle.

Pour aller plus loin

Outils utilisés dans ce guide

← Tous les guides