

Le hashing désigne le processus permettant de générer une sortie de taille fixe à partir d’une entrée de taille variable. Il repose sur des formules mathématiques appelées fonctions de hachage, mises en œuvre via des algorithmes de hashing.
Si toutes les fonctions de hachage ne relèvent pas de la cryptographie, les fonctions dites cryptographiques sont essentielles au fonctionnement des cryptomonnaies. Elles permettent aux blockchains et autres systèmes distribués d’atteindre des niveaux élevés d’intégrité et de sécurité des données.
Les fonctions de hachage, qu’elles soient classiques ou cryptographiques, sont déterministes. Cela signifie que tant que l’entrée ne change pas, l’algorithme de hashing produira toujours la même sortie (également appelée « digest » ou « hash »).
En général, les algorithmes de hashing utilisés dans les cryptomonnaies sont conçus comme des fonctions à sens unique, ce qui les rend difficilement réversibles sans une puissance de calcul et des ressources considérables. Autrement dit, il est aisé de calculer la sortie à partir de l’entrée, mais il est relativement complexe de retrouver l’entrée à partir de la seule sortie. Plus il est difficile de retrouver l’entrée, plus l’algorithme de hashing est jugé sécurisé.
Chaque fonction de hachage produit des sorties de taille fixe, propres à son algorithme, quelles que soient les données d’entrée. Par exemple, SHA-256 génère uniquement des sorties de 256 bits, tandis que SHA-1 produit toujours un digest de 160 bits.
Pour illustrer, appliquons l’algorithme SHA-256 (celui de Bitcoin) aux mots « ExampleText » et « exampletext ».
| Entrée | Sortie (256 bits) |
|---|---|
| ExampleText | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 |
| exampletext | 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2 |
Un simple changement (ici la casse de la première lettre) génère un hash totalement différent. Mais avec SHA-256, la sortie reste toujours de 256 bits (soit 64 caractères), indépendamment de la taille de l’entrée. Par ailleurs, l’algorithme produit systématiquement les mêmes sorties pour les mêmes entrées, quel que soit le nombre d’exécutions.
À l’inverse, si l’on applique SHA-1 aux mêmes entrées, on obtient :
| Entrée | Sortie (160 bits) |
|---|---|
| ExampleText | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 |
| exampletext | e58605c14a76ff98679322cca0eae7b3c4e08936 |
L’acronyme SHA (Secure Hash Algorithms) désigne une famille de fonctions de hachage cryptographiques, comprenant les algorithmes SHA-0, SHA-1, ainsi que les groupes SHA-2 et SHA-3. SHA-256 fait partie du groupe SHA-2, aux côtés de SHA-512 et d’autres variantes. À ce jour, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.
Les fonctions de hachage classiques s’utilisent notamment pour les recherches en base de données, l’analyse de gros fichiers ou la gestion de données. Les fonctions de hachage cryptographiques sont, elles, fondamentales dans les applications de sécurité de l’information, telles que l’authentification des messages ou l’empreinte numérique. Dans Bitcoin, ces fonctions sont centrales dans le processus de minage et la génération de nouvelles adresses et clés.
Le potentiel du hashing se révèle dans le traitement de grandes quantités d’informations. Par exemple, il suffit de soumettre un volumineux fichier ou jeu de données à une fonction de hachage, puis d’utiliser le résultat pour vérifier rapidement l’intégrité et la fiabilité des données. Cela est possible grâce au caractère déterministe du hashing : chaque entrée conduit toujours à un résultat simplifié et condensé (le hash). Cette méthode évite d’avoir à stocker d’importants volumes de données.
Le hashing est particulièrement utile dans l’environnement blockchain. La blockchain Bitcoin recourt à plusieurs opérations de hashing, surtout dans le minage. Pratiquement tous les protocoles de cryptomonnaie s’appuient sur le hashing pour regrouper et condenser des transactions en blocs, puis lier cryptographiquement ces blocs afin de former une blockchain.
Une fonction de hachage mobilisant des techniques cryptographiques est dite cryptographique. En pratique, casser une telle fonction requiert d’innombrables tentatives par force brute. Pour « inverser » une fonction de hachage cryptographique, il faut retrouver l’entrée par essais successifs jusqu’à obtenir la sortie correspondante. Il arrive également que des entrées différentes produisent exactement la même sortie : c’est ce que l’on appelle une « collision ».
Une fonction de hachage cryptographique doit satisfaire trois propriétés pour être considérée comme sécurisée : résistance aux collisions, résistance à la préimage et résistance à la seconde préimage.
Avant d’entrer dans le détail, résumons ces propriétés en trois points :
Une collision survient lorsque deux entrées différentes génèrent exactement le même hash. Une fonction de hachage est jugée résistante aux collisions tant qu’aucune collision n’a été découverte. Notons que des collisions existent toujours, car les entrées possibles sont infinies alors que les sorties sont en nombre fini.
Autrement dit, une fonction est résistante aux collisions si la probabilité d’en trouver une est si faible qu’il faudrait des millions d’années de calculs pour y parvenir. Il n’existe pas de fonction sans collision, mais certaines, comme SHA-256, sont suffisamment robustes pour être considérées comme résistantes.
Parmi les algorithmes SHA, SHA-0 et SHA-1 ne sont plus jugés sûrs, car des collisions y ont été identifiées. Aujourd’hui, seuls les groupes SHA-2 et SHA-3 sont réputés résistants aux collisions.
La résistance à la préimage renvoie au principe de fonction à sens unique. Une fonction de hachage est résistante à la préimage lorsqu’il est hautement improbable de retrouver l’entrée à partir d’une sortie particulière.
Cette propriété diffère de la précédente : dans une attaque par préimage, l’attaquant cherche à deviner l’entrée à partir d’une sortie donnée, tandis qu’une collision implique la découverte de deux entrées différentes produisant la même sortie, sans considération de l’entrée d’origine.
La résistance à la préimage protège les données : un simple hash d’un message suffit à en garantir l’authenticité sans exposer l’information. Concrètement, de nombreux services et applications web stockent les hashes issus des mots de passe, plutôt que les mots de passe eux-mêmes.
La résistance à la seconde préimage se situe entre les deux propriétés précédentes. Une attaque de seconde préimage consiste à trouver une entrée spécifique produisant le même hash qu’une autre entrée connue.
Autrement dit, il s’agit non pas de rechercher deux entrées aléatoires générant le même hash, mais de trouver une entrée qui aboutisse au même hash qu’une entrée précise déjà identifiée.
Toute fonction résistante aux collisions l’est aussi aux attaques de seconde préimage, puisque celle-ci implique une collision. Toutefois, une attaque par préimage reste possible sur une fonction résistante aux collisions, puisqu’il s’agit alors de retrouver une entrée unique à partir d’une sortie unique.
Le minage de Bitcoin implique de nombreuses étapes utilisant des fonctions de hachage : vérification des soldes, chaînage des entrées et sorties de transactions, hachage des transactions d’un bloc pour constituer un arbre de Merkle, etc. Mais ce qui confère à la blockchain Bitcoin sa sécurité, c’est que les mineurs doivent effectuer d’innombrables opérations de hashing pour finir par découvrir une solution valable pour le bloc suivant.
Un mineur doit tester de nombreuses entrées différentes pour créer la valeur de hash de son bloc candidat. Il ne validera son bloc que s’il génère un hash débutant par un certain nombre de zéros. Ce nombre de zéros détermine la difficulté de minage, variable selon le taux de hash du réseau.
Le taux de hash correspond à la puissance de calcul allouée au minage de Bitcoin. Si ce taux augmente, le protocole Bitcoin ajuste automatiquement la difficulté pour que le temps moyen de création d’un bloc reste proche de 10 minutes. À l’inverse, si des mineurs se retirent et que le taux chute, la difficulté sera abaissée afin de maintenir ce même temps moyen de bloc.
Les mineurs n’ont pas à trouver de collisions : il existe plusieurs hashes valides (commençant par un certain nombre de zéros) qui peuvent convenir pour un bloc donné. Il suffit qu’un mineur trouve l’une de ces solutions, selon le seuil fixé par la difficulté.
Le minage de Bitcoin étant coûteux, les mineurs n’ont aucun intérêt à manipuler le système, sous peine de lourdes pertes financières. Plus il y a de mineurs sur une blockchain, plus le réseau devient étendu et robuste.
Les fonctions de hachage sont des outils incontournables en informatique, surtout pour la gestion de grands volumes de données. Associés à la cryptographie, les algorithmes de hashing offrent une grande polyvalence, assurant sécurité et authentification sous diverses formes. Les fonctions de hachage cryptographiques sont donc essentielles à la quasi-totalité des réseaux de cryptomonnaies, et comprendre leurs propriétés et leur fonctionnement est capital pour tout acteur du secteur blockchain.
Le hashing est une fonction qui convertit des données de n’importe quelle taille en une sortie de taille fixe. Il assure l’intégrité et la sécurité des données dans la blockchain en générant des empreintes numériques uniques. Même une modification minime des données produit un hash radicalement différent, ce qui en fait un outil idéal pour la vérification et la protection cryptographique.
Les fonctions de hachage traitent les données d’entrée pour générer une sortie de longueur fixe à l’aide d’algorithmes mathématiques. La même entrée génère systématiquement la même sortie grâce au caractère déterministe de ces fonctions : elles appliquent des règles de calcul constantes, garantissant reproductibilité et fiabilité dans les opérations cryptographiques.
Le hashing est utilisé pour vérifier l’intégrité des données, les signatures numériques, l’authentification des mots de passe et la sécurité des blockchains. Il permet de s’assurer que les données n’ont pas été altérées et facilite la vérification sécurisée de l’identité dans les systèmes cryptographiques.
Le hashing produit une sortie de longueur fixe et irréversible, utilisé pour vérifier l’intégrité des données. Le chiffrement, lui, est réversible et vise à protéger la confidentialité. Le hashing ne permet pas de récupérer les données d’origine, tandis que le chiffrement autorise leur restitution à l’aide de la clé appropriée.
Une fonction de hachage efficace doit être résistante aux collisions, garantir qu’une modification minime génère une sortie totalement différente, et offrir une grande rapidité d’exécution pour l’accès aux données.
Les principaux algorithmes de hashing sont MD5, SHA-1 et SHA-256. MD5 génère des hashes sur 128 bits mais présente des failles de sécurité reconnues. SHA-256 offre des hashes sur 256 bits et une sécurité accrue. SHA-1 est obsolète. SHA-256 est privilégié dans la blockchain pour sa robustesse et sa résistance aux collisions.











