Comment vérifier l'intégrité d'un fichier avec des hash

· 9 min de lecture

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 :

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

  1. 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".
  2. 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.
  3. 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.
  4. 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.
  5. 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

Algorithmes pris en charge

AlgorithmeLongueur du hashBits de sortieRecommandation
MD532 hex128Hérité uniquement, cassé, corruption accidentelle seulement
SHA-140 hex160Hérité uniquement, cassé, ne pas faire confiance pour la sécurité
SHA-22456 hex224De niche ; préférez SHA-256
SHA-25664 hex256Standard général recommandé
SHA-38496 hex384Haute sécurité, utilisé dans les suites de chiffrement TLS 1.3
SHA-512128 hex512Force maximale de SHA-2, rapide sur CPU 64 bits
SHA3-25664 hex256Conception interne différente de SHA-2, à l'épreuve du temps
BLAKE2b/BLAKE3variable256 ou 512Hashs modernes les plus rapides, utilisés par rsync, restic
CRC328 hex32Dé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

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.

OutilPlateformeForceÀ surveiller
Calculateur de hash webNavigateurSans installation, le fichier ne s'envoie jamaisUn fichier à la fois
sha256sumLinuxRapide, scriptable, GNU coreutils--check lit les fichiers SHA256SUMS
shasum -a 256macOS, BSDInclus, même format de sortieNom de binaire différent de Linux
Get-FileHashWindows PowerShellDe première classe sur WindowsFormat de sortie différent de sha256sum
certutil -hashfileWindows cmdDisponible sur tout WindowsSortie verbeuse à parser
openssl dgst -sha256MultiplateformeSi vous avez déjà OpenSSLPlus lent que les outils dédiés
b3sumMultiplateformeBLAKE3, débit multi-GB/sPlus récent, moins omniprésent
rhashMultiplateformeCalcule plusieurs algorithmes à la foisInstallation 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.