Comment vérifier l'intégrité d'un fichier avec des hash
Quand vous téléchargez un logiciel, un firmware ou des documents importants, comment savez-vous que le fichier est exactement ce que l'éditeur a voulu ? Le hachage de fichier vous donne une empreinte cryptographique, une chaîne unique qui change si même un seul octet du fichier diffère. Vérifier un hash prend quelques secondes et peut vous éviter d'installer un logiciel altéré, de flasher un firmware corrompu qui bricke un appareil, ou de faire confiance à une sauvegarde altérée qui échoue quand vous en avez vraiment besoin.
Une brève histoire des fonctions de hachage
L'idée d'une somme de contrôle est plus vieille que l'informatique, les comptables utilisaient des sommes de chiffres pour détecter les erreurs de transcription bien avant qu'il y ait des fichiers à vérifier. Les hashs cryptographiques sont apparus à la fin des années 1980. Ron Rivest a publié MD4 en 1990 et MD5 en 1991, qui sont devenus la somme de contrôle de fait pendant deux décennies. Le NIST a standardisé SHA-0 en 1993, puis l'a rapidement retiré en faveur de SHA-1 en 1995 après la découverte d'une faille. La famille SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) a suivi en 2001 pour répondre à la faiblesse imminente de SHA-1.
Chaque génération a été retirée par des attaques qui se sont révélées moins coûteuses que prévu. Les collisions MD5 ont été démontrées en 2004, rendues pratiques pour les certificats numériques en 2008, et sont désormais triviales. SHA-1 est tombé sous l'attaque SHAttered de Google en 2017, quand des chercheurs ont produit deux PDF différents avec des empreintes SHA-1 identiques. SHA-2 tient depuis 2001, et SHA-3 (Keccak, standardisé en 2015) fournit un repli structurellement différent au cas où SHA-2 casserait. La leçon est que les algorithmes de hachage ont une durée de vie ; le bon algorithme aujourd'hui pourrait devoir être remplacé d'ici une décennie.
Comment fonctionne le hachage de fichier
Une fonction de hachage lit chaque octet d'un fichier et produit une chaîne de longueur fixe. Le même fichier produit toujours le même hash. Changez un octet, et le hash change complètement, c'est ce qu'on appelle l'effet d'avalanche et c'est la propriété qui rend les hashs utiles pour la vérification.
Exemple :
- Fichier original (SHA-256) :
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - Même fichier, un octet changé :
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
Les deux hashs ne partagent aucun motif reconnaissable même si les fichiers diffèrent d'un seul bit. Cette sensibilité est ce qui rend la vérification possible : générez le hash, comparez-le au hash publié, et vous savez instantanément si le fichier est authentique.
En interne, les fonctions de hachage modernes découpent le fichier en blocs de taille fixe (64 octets pour SHA-256, 128 pour SHA-512), font passer chaque bloc dans une fonction de compression et enchaînent l'état. La sortie est l'état final après que le dernier bloc a été incorporé. Comme la chaîne dépend de chaque octet, aucun raccourci ne permet à un attaquant de changer le contenu sans réécrire tout le hash.
Comment vérifier un fichier
- Trouvez le hash officiel, l'éditeur de logiciel liste typiquement les hashs de fichier sur sa page de téléchargement, souvent étiquetés "somme de contrôle SHA-256" ou "fichier SHA256SUMS".
- Téléversez votre fichier téléchargé : sélectionnez le fichier dans le calculateur de hash. Le hash est calculé localement dans votre navigateur ; le fichier ne quitte jamais votre machine.
- Comparez les hashs : si votre hash calculé correspond exactement au hash officiel, le fichier est authentique et non corrompu. Copiez-collez les deux dans un diff de texte si les chaînes sont longues.
- Correspondez l'algorithme : les hashs SHA-256 ne correspondent qu'à d'autres hashs SHA-256. Si l'éditeur vous donne SHA-512, générez aussi SHA-512 ; mélanger les algorithmes est l'erreur de "ils ne correspondent pas" la plus courante.
- Vérifiez le hash publié lui-même quand c'est possible : un fichier SHA256SUMS signé (signé avec la clé GPG de l'éditeur) vous dit que la liste de hashs n'a pas été altérée, ce que le hash nu sur une page de téléchargement ne fait pas.
Quand vérifier les hashs de fichier
- Téléchargements de logiciels : vérifiez que les installateurs et mises à jour n'ont pas été altérés ou corrompus pendant le téléchargement. Quiconque vous sert le binaire, votre FAI, un CDN, un miroir, pourrait en théorie le remplacer par quelque chose d'hostile.
- Mises à jour de firmware : un fichier firmware corrompu peut bricker un appareil. Vérifiez toujours avant de flasher un routeur, un appareil IoT ou un BIOS de carte mère, la récupération nécessite souvent du matériel spécial.
- Images ISO : les images de système d'exploitation doivent être vérifiées avant gravure sur USB ou installation. Les distributions Linux publient universellement à la fois des hashs SHA-256 et des signatures GPG sur ces hashs ; vérifiez les deux.
- Documents juridiques et financiers : vérifiez que les contrats, rapports d'audit ou états financiers n'ont pas été altérés après signature ou partage. Les hashs fournissent un reçu inviolable.
- Vérification de sauvegarde, confirmez que les fichiers de sauvegarde sont identiques aux originaux. La corruption silencieuse de disque est réelle, et une sauvegarde dont le hash a dérivé depuis la création peut ne pas se restaurer proprement.
- Artefacts CI/CD : fixer un artefact de build par son SHA-256 dans un pipeline de déploiement garantit que le binaire testé est le binaire déployé. Les images de conteneur font cela par conception avec leurs empreintes adressables par contenu.
- Audits de chaîne d'approvisionnement logicielle : quand un avis de sécurité dit "cette version a le hash X", la seule façon de confirmer ce qui est sur vos serveurs est de hasher le fichier là-bas et de comparer. Sans ça, vous faites confiance à la chaîne de version, que l'attaquant contrôle.
Algorithmes pris en charge
| Algorithme | Longueur du hash | Bits de sortie | Recommandation |
|---|---|---|---|
| MD5 | 32 hex | 128 | Hérité uniquement, cassé, corruption accidentelle seulement |
| SHA-1 | 40 hex | 160 | Hérité uniquement, cassé, ne pas faire confiance pour la sécurité |
| SHA-224 | 56 hex | 224 | De niche ; préférez SHA-256 |
| SHA-256 | 64 hex | 256 | Standard général recommandé |
| SHA-384 | 96 hex | 384 | Haute sécurité, utilisé dans les suites de chiffrement TLS 1.3 |
| SHA-512 | 128 hex | 512 | Force maximale de SHA-2, rapide sur CPU 64 bits |
| SHA3-256 | 64 hex | 256 | Conception interne différente de SHA-2, à l'épreuve du temps |
| BLAKE2b/BLAKE3 | variable | 256 ou 512 | Hashs modernes les plus rapides, utilisés par rsync, restic |
| CRC32 | 8 hex | 32 | Détection d'erreur seulement, pas un hash de sécurité |
Si vous avez le choix, SHA-256 est le bon défaut. Utilisez SHA-512 sur machines 64 bits pour des performances légèrement meilleures (l'algorithme est réglé pour les mots 64 bits). Tendez vers BLAKE3 quand le débit compte le plus, il peut saturer les SSD NVMe modernes d'une manière que SHA-256 ne peut pas.
Hash vs signature numérique
Un hash vous dit si un fichier a changé. Une signature numérique vous dit s'il a changé ET qui a créé le hash. Une signature est un hash qui a été chiffré avec la clé privée de l'éditeur ; vous le déchiffrez avec sa clé publique, recalculez le hash, et vérifiez que les deux correspondent. S'ils correspondent, vous savez que le fichier est intact ET que l'éditeur (ou quelqu'un avec sa clé privée) l'a approuvé.
Quand une page de téléchargement montre à la fois un hash SHA-256 et un fichier .sig ou .asc, le hash protège contre la corruption et l'altération accidentelle, mais la signature protège contre un attaquant qui a percé le serveur de téléchargement. L'attaquant peut échanger le fichier et mettre à jour le hash affiché ; il ne peut pas falsifier une signature valide sans la clé de l'éditeur.
Pièges courants
- Comparer le mauvais algorithme, MD5 et SHA-256 produisent des chaînes de longueur différente ; les algorithmes mal assortis ne correspondront jamais, même sur des fichiers identiques.
- Faire confiance au hash servi depuis le même endroit que le fichier, si les deux sont sur le même miroir compromis, les deux peuvent être remplacés. Chaque fois que possible, récupérez le hash depuis un domaine différent (la page de releases GitHub du projet, un fichier SHA256SUMS signé).
- Sensibilité à la casse hex, les hashs sont insensibles à la casse (
a3fetA3Freprésentent le même octet). La comparaison de chaînes peut quand même les marquer comme différents. Mettez en minuscules les deux côtés ou comparez en octets. - Espaces de fin et BOM, un hash copié avec un saut de ligne final ou un caractère invisible aura l'air identique mais ne correspondra pas. Coupez les deux côtés avant de comparer.
- Hasher le mauvais fichier, sur Windows, le chemin de téléchargement peut être
Téléchargements\fichier (1).exeplutôt queTéléchargements\fichier.exesi vous l'avez téléchargé deux fois. Vérifiez le chemin avant de hasher. - Traiter MD5 ou SHA-1 comme garanties de sécurité, un attaquant peut produire un fichier d'apparence bénigne avec le même MD5 qu'un malveillant en quelques secondes. Pour la sécurité, utilisez toujours SHA-256 ou plus fort.
- Vérifier la mauvaise chose, si l'éditeur hashe le
.tar.gzcompressé et que vous hashez le contenu extrait, aucun ne correspondra. Hashez ce qui a été hashé ; généralement l'archive téléchargée elle-même. - Ignorer la signature GPG, beaucoup de gens vérifient le hash mais sautent la signature. La signature est ce qui défend contre l'attaquant qui contrôle le miroir.
- Échecs silencieux de corruption réseau, un téléchargement tronqué peut correspondre à un hash de fichier partiel si les deux ont été tronqués identiquement. Hashez toujours le fichier complet que vous comptez utiliser, pas un morceau.
- Mise en cache navigateur d'anciens téléchargements, un fichier en cache obsolète peut tromper une étape de vérification. Forcez un téléchargement frais si le hash ne correspond pas et que vous soupçonnez le cache.
Outils et contextes alternatifs
Un calculateur de hash web est le chemin le plus rapide quand vous avez un fichier à vérifier. Pour une utilisation répétée ou du scripting, les outils en ligne de commande sont le standard.
| Outil | Plateforme | Force | À surveiller |
|---|---|---|---|
| Calculateur de hash web | Navigateur | Sans installation, le fichier ne s'envoie jamais | Un fichier à la fois |
sha256sum | Linux | Rapide, scriptable, GNU coreutils | --check lit les fichiers SHA256SUMS |
shasum -a 256 | macOS, BSD | Inclus, même format de sortie | Nom de binaire différent de Linux |
Get-FileHash | Windows PowerShell | De première classe sur Windows | Format de sortie différent de sha256sum |
certutil -hashfile | Windows cmd | Disponible sur tout Windows | Sortie verbeuse à parser |
openssl dgst -sha256 | Multiplateforme | Si vous avez déjà OpenSSL | Plus lent que les outils dédiés |
b3sum | Multiplateforme | BLAKE3, débit multi-GB/s | Plus récent, moins omniprésent |
rhash | Multiplateforme | Calcule plusieurs algorithmes à la fois | Installation supplémentaire |
Dans les pipelines CI/CD, la même tâche tourne généralement comme sha256sum file > file.sha256 pendant le build et sha256sum -c file.sha256 pendant la vérification, parfois enveloppé dans un manifeste signé. Le principe (calculer, publier, comparer à la récupération) est identique à ce que l'outil navigateur fait interactivement.
Vie privée et le calculateur de hash
Le calculateur de hash tourne entièrement dans votre navigateur. Le fichier que vous sélectionnez est lu avec l'API FileReader, passé dans l'interface SubtleCrypto de Web Crypto, et le hash résultant vous est montré. Les octets du fichier ne voyagent jamais vers nos serveurs, il n'y a pas de téléversement, pas de journal des fichiers hashés, et pas d'analytique sur les tailles ou extensions de fichier. Pour le matériel sensible, contrats, dossiers médicaux, clés privées, la différence entre un outil qui téléverse et un qui hashe localement est la différence entre faire confiance à un tiers et n'en faire confiance à aucun. Un hash est une sortie minuscule (64 caractères hex pour SHA-256), mais l'entrée qu'il résume peut être très révélatrice. Garder cette entrée côté client est le bon défaut pour toute tâche de vérification.
Questions fréquentes
Comment comparer un hash de fichier à l'officiel ?
Après avoir généré le hash, comparez-le caractère par caractère avec le hash publié par la source (généralement sur la page de téléchargement). Si tous les caractères correspondent, le fichier est authentique et non corrompu. Une seule différence signifie que le fichier a été modifié.
Quel algorithme de hash utiliser ?
SHA-256 est le standard pour la vérification de fichiers. Utilisez celui que fournit l'éditeur. Si vous avez le choix, SHA-256 offre un bon équilibre sécurité/performance.
Un fichier corrompu peut-il avoir le bon hash ?
C'est théoriquement possible (une collision) mais statistiquement négligeable avec SHA-256. Les chances sont si astronomiquement faibles que, en pratique, des hashs identiques garantissent des fichiers identiques.
Mon fichier est-il envoyé sur un serveur ?
Non. Le hash est calculé entièrement dans votre navigateur. Votre fichier ne quitte jamais votre appareil, ce qui le rend sûr pour tout type de document, y compris sensible.
What is the difference between a hash and a digital signature?
A hash proves a file has not changed since the hash was computed; anyone can verify it. A digital signature proves both integrity AND identity, the publisher signs the hash with their private key, and you verify with their public key. Hashes alone do not protect against a hacker who replaced both the file and the published hash on the same compromised mirror.
Why are MD5 and SHA-1 considered insecure?
Researchers have demonstrated practical collision attacks for both. In 2017 Google produced two different PDFs with identical SHA-1 hashes (the SHAttered attack), and MD5 collisions can be generated in seconds on a laptop. For deliberate-tamper detection use SHA-256 or stronger; MD5 and SHA-1 still work for catching accidental corruption but should never be trusted as security boundaries.