Qu’est-ce qu’un hachage cryptographique ?
Un hachage cryptographique est une méthode de calcul qui transforme des données en une empreinte de longueur fixe. Que l’entrée soit une simple phrase ou un gros fichier, un même algorithme de hachage produit toujours un résultat de la longueur qu’il définit. Ce résultat s’appelle valeur de hachage ou empreinte.
Cela fonctionne un peu comme une « empreinte digitale » des données : tant que l’entrée ne change pas, la valeur calculée ne change pas, et modifier ne serait-ce qu’un caractère de l’entrée produit généralement un résultat visiblement différent. Une autre personne peut donc recalculer la valeur de hachage pour vérifier que les données reçues correspondent à l’original, sans comparer tout le contenu caractère par caractère.
La métaphore a ses limites. Une valeur de hachage n’est pas un abrégé des données et ne permet pas de retrouver le texte d’origine ; ce n’est pas non plus un identifiant absolument unique. Ce que vise un hachage cryptographique sûr, c’est rendre très difficile en pratique de remonter à l’entrée ou de trouver volontairement le même résultat — et non garantir mathématiquement qu’aucune collision ne peut survenir.
L’entrée et la sortie d’un calcul de hachage
Un algorithme de hachage travaille sur une suite déterminée de données binaires. Texte, images et transactions doivent tous être convertis en octets avant le calcul ; un encodage de caractères différent, un autre ordre de champs, ou une autre façon d’agencer en octets une information structurée produisent une entrée différente, donc un résultat différent. Ce processus d’agencement s’appelle généralement la sérialisation.
SHA-256, par exemple, produit toujours 256 bits, soit 32 octets. Les valeurs de hachage sont souvent écrites sous forme de 64 caractères hexadécimaux, plus lisibles pour les personnes comme pour les logiciels. Les deux entrées ci-dessous ne diffèrent que par la casse d’une lettre, et les résultats sont pourtant totalement différents :
| Entrée | Valeur de hachage SHA-256 |
|---|---|
hello |
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
Hello |
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 |
Une même entrée donne de façon fiable le même résultat : différents participants peuvent donc vérifier de manière indépendante. Un résultat nettement différent rend facile à repérer un changement dans l’entrée. Mais « avoir l’air aléatoire » ne suffit pas à établir qu’un algorithme est sûr ; la sécurité dépend aussi de sa résistance à des attaques précises.
Trois propriétés importantes d’un hachage cryptographique
Un hachage cryptographique doit généralement rendre difficiles, dans les conditions de calcul réelles, les trois opérations suivantes :
- À partir d’une valeur de hachage, trouver une entrée produisant ce résultat doit être difficile. C’est la résistance à la préimage. Autrement dit, une valeur de hachage n’est pas un fichier compressé qu’il suffirait de décoder.
- À partir d’une entrée connue, trouver une seconde entrée différente donnant la même valeur de hachage doit être difficile. C’est la résistance à la seconde préimage.
- Trouver deux entrées différentes quelconques donnant la même valeur de hachage doit être difficile. C’est la résistance aux collisions.
Comme le nombre d’entrées possibles dépasse de loin le nombre de sorties de longueur fixe, les collisions existent nécessairement sur le plan mathématique. L’objectif de sécurité n’est pas de les supprimer, mais d’empêcher un attaquant de trouver une collision exploitable à un coût réalisable.
« Difficile à inverser » ne signifie pas non plus qu’un hachage peut cacher tous les secrets. Si l’éventail des entrées est réduit ou facile à deviner — des mots de passe courants, par exemple —, un attaquant peut essayer les candidats un par un et comparer les résultats. Conserver des mots de passe exige donc généralement un schéma de hachage dédié aux mots de passe, avec l’ajout de données aléatoires propres à chaque enregistrement (un sel) et un paramétrage du volume de calcul requis par essai (un paramètre de coût). Un seul hachage rapide ordinaire d’un mot de passe ne suffit pas.
Différences entre hachage, chiffrement, signature numérique et somme de contrôle
Ces techniques peuvent toutes servir à traiter ou vérifier des données, mais elles répondent à des problèmes différents :
| Méthode | Rôle principal | Les données d’origine peuvent-elles être récupérées | Une clé est-elle nécessaire |
|---|---|---|---|
| Hachage cryptographique | Produit une empreinte des données pour vérifier l’intégrité ou construire d’autres mécanismes cryptographiques | Conçu pour qu’on ne puisse pas déduire l’entrée de l’empreinte | Non pour un hachage ordinaire |
| Chiffrement | Empêche les personnes non autorisées de lire le contenu | Déchiffrable avec la bonne clé | Oui |
| Signature numérique | Montre qu’une partie détenant la clé privée correspondante a autorisé des données précises, et vérifie si elles ont été modifiées | Une signature ne sert pas à récupérer les données d’origine | Signature et vérification utilisent une paire de clés |
| Somme de contrôle ordinaire | Détecte les erreurs accidentelles de transmission ou de stockage | Ne permet pas de récupérer les données d’origine | Généralement non |
Un hachage seul ne peut pas établir qui a créé les données. Un système de signature numérique calcule d’ordinaire d’abord une empreinte des données, puis fait signer par la clé privée le résultat associé à ces données ; le vérificateur a en outre besoin de la clé publique et des règles de signature pour contrôler le rapport d’autorisation. Une somme de contrôle ordinaire protège surtout contre une corruption accidentelle et ne résiste généralement pas à un attaquant qui modifie les données volontairement.
Comment les blockchains utilisent le hachage
Une blockchain ne tient pas son registre à l’aide d’une seule valeur de hachage. Le hachage est normalement employé conjointement avec signatures numériques, validation par le réseau, consensus et structures de données, où il assume les tâches suivantes.
Identifier des transactions ou d’autres données
Certains réseaux calculent un identifiant à partir des données de transaction agencées au format du protocole. Ainsi, l’identifiant de transaction Bitcoin (TXID) provient d’un hachage des données sérialisées de la transaction. Tant que les participants appliquent les mêmes règles aux mêmes données, ils peuvent calculer le même identifiant de façon indépendante.
Un « hachage de transaction » n’est pourtant pas un numéro universel pour lequel tous les réseaux emploieraient le même algorithme ou le même format d’entrée. Le nom du réseau, l’algorithme et les règles de sérialisation font partie du sens : copier une simple chaîne de caractères peut ne pas suffire à désigner un objet sans ambiguïté.
Relier les blocs et faire apparaître les modifications de l’historique
Un bloc peut conserver le hachage de l’en-tête du bloc précédent. Si les données du bloc précédent changent, son hachage change aussi, et la valeur conservée par les blocs suivants ne correspond plus. Les en-têtes de bloc Bitcoin comme les blocs Ethereum contiennent une information de hachage pointant vers le bloc antérieur.
Ce chaînage rend les modifications de l’historique faciles à repérer, mais n’empêche physiquement personne de recalculer des hachages. Déterminer quel historique le réseau retient finalement requiert encore des règles de validation, un mécanisme de consensus et l’appréciation de l’état du réseau par les participants.
Résumer de grandes quantités de données et fournir des preuves d’inclusion
Des structures telles que les arbres de Merkle combinent et hachent plusieurs éléments couche par couche pour aboutir à un unique hachage racine. Un vérificateur peut utiliser un petit nombre de hachages intermédiaires pour contrôler qu’un élément figure dans un ensemble de données déjà engagé, sans transférer chaque fois tout le contenu. L’arbre de Merkle Patricia d’Ethereum est une structure qui relie les données d’état par hachage.
Un hachage racine ne peut établir qu’une chose : si des données données sont cohérentes avec cet engagement cryptographique. Il ne peut pas établir que l’information d’entrée vient d’une source fiable, ni qu’un événement hors chaîne s’est réellement produit.
Participer à la preuve de travail
Dans un système à preuve de travail, les participants ajustent de façon répétée des données du bloc candidat et calculent des hachages, à la recherche d’un résultat satisfaisant la condition de difficulté du protocole. Les autres nœuds peuvent vérifier rapidement si le résultat est conforme. Le hachage fournit ici un problème reproductible et un résultat vérifiable, mais le bloc que le réseau accepte reste déterminé par l’ensemble des règles de consensus.
Les algorithmes de hachage ne sont pas interchangeables
SHA-256, SHA-3 et les autres hachages cryptographiques sont des familles d’algorithmes différentes. Même lorsque deux algorithmes produisent tous deux 256 bits, ils ne donnent pas le même résultat pour la même entrée. Une consigne de protocole ou de vérification de fichier doit indiquer à la fois le nom de l’algorithme et le mode de traitement de l’entrée ; « calculer un hachage » ne suffit pas.
Parmi les algorithmes de hachage sûrs couramment employés figurent les familles SHA-2 et SHA-3. Le Secure Hash Standard du National Institute of Standards and Technology (NIST) des États-Unis couvre la famille SHA-2, et la norme SHA-3 couvre la famille SHA-3. Des noms d’algorithmes proches n’impliquent pas non plus des détails d’implémentation identiques. Un système doit employer l’algorithme que son protocole exige explicitement et qui reste adapté à l’usage actuel ; qu’un algorithme ancien produise encore un résultat ne signifie pas qu’il satisfait toujours aux exigences de sécurité.
FAQ
Une valeur de hachage peut-elle être déchiffrée ?
Un hachage cryptographique ordinaire ne peut pas être « déchiffré », car le hachage n’est pas du chiffrement et il n’existe pas de clé de déchiffrement correspondante. Un attaquant peut trouver une valeur concordante en devinant l’entrée, en épuisant un petit espace d’entrées ou en exploitant une faiblesse de l’algorithme, mais ce n’est pas retrouver le texte d’origine directement à partir de l’empreinte.
Si deux données ont la même valeur de hachage, leur contenu est-il forcément identique ?
Pas au sens d’une certitude mathématique, car une sortie de longueur fixe autorise nécessairement des collisions. Lorsque l’algorithme conserve une résistance aux collisions suffisante et que les deux parties utilisent bien le même encodage et les mêmes règles de calcul, une valeur de hachage identique peut généralement servir de preuve solide que les données concordent.
Voir une valeur de hachage suffit-il à confirmer qu’un fichier est sûr ?
Non. Il faut aussi savoir d’où provient la valeur de hachage attendue. Si un attaquant a remplacé à la fois le fichier et la valeur affichée sur la page, le recalcul peut encore « correspondre ». Le hachage permet de vérifier la cohérence de données avec une empreinte connue, mais cette empreinte doit être obtenue par un canal fiable.
Si une blockchain utilise le hachage, l’information en chaîne est-elle vraie pour autant ?
Non. Le hachage aide à vérifier si des données ont changé et si différentes structures de données concordent, mais il ne peut pas juger si le contenu d’entrée décrit le monde réel. Provenance des données, autorisation par signature, validation réseau et consensus restent à apprécier séparément.
Concepts associés
Poursuis avec bloc, blockchain, clé publique et clé privée, ou reviens au glossaire des cryptomonnaies.
Sources
- NIST : définition d’une fonction de hachage cryptographique — empreintes de longueur fixe, résistance à la préimage, à la seconde préimage et aux collisions.
- NIST FIPS 180-4 : Secure Hash Standard — famille SHA-2, longueurs d’empreinte et usages d’intégrité.
- NIST FIPS 202 : norme SHA-3 — famille SHA-3 et son rapport avec SHA-2.
- NIST SP 800-63B : vérificateurs de mots de passe — schémas de hachage de mots de passe, sels et paramètres de coût.
- Bitcoin Developer Reference : transactions — données de transaction sérialisées et TXID.
- Bitcoin Developer Reference : chaîne de blocs — hachage de l’en-tête du bloc précédent, racine de Merkle et preuve de travail.
- Ethereum.org : blocs — hachage du bloc antérieur ainsi que racines d’état et de transactions.
- Ethereum.org : arbre de Merkle Patricia — structures de données reliées par hachage et preuves d’inclusion.




