Qu'est-ce que le hachage?
Accueil
Articles
Qu'est-ce que le hachage?

Qu'est-ce que le hachage?

Avancé
Publié le Jul 29, 2019Mis à jour le Jan 31, 2023
7m
Le hachage fait référence au processus de génération d'une sortie de taille fixe à partir d'une entrée de taille variable. Un tel procédé est acompli au travers de l'utilisation de formules mathématiques connues en tant que fonctions de hachage (implémentées en tant qu'algorithmes de hachage). 
Bien que toutes les fonctions de hachage n'incluent pas systématiquement l'utilisation de la cryptographie, les fonctions de hachage cryptographiques sont au cœur des crypto-monnaies. Grâce à ces fonctions, les blockchains et d'autres types de systèmes distribués sont en mesure d'atteindre des niveaux significatifs d'intégrité des données et de sécurité.

Les fonctions de hachage conventionnelles et cryptographiques sont déterministes. Cela signifie que tant que l'entrée ne change pas, l'algorithme de hachage produira toujours la même sortie (aussi connue sous le nom de hachage ou d'empreinte).

En général, les algorithmes de hachage des crypto-monnaies sont conçus comme des fonctions à sens unique, ce qui signifie qu'ils ne peuvent être facilement révoqués sans de grandes quantités de temps et de ressources informatiques. En d'autres termes, il est assez facile de créer une sortie à partir d'une entrée, mais relativement difficile d'aller dans la direction opposée (pour générer l'entrée à partir de la sortie seule). Globalement, plus il est difficile de trouver l'entrée, plus l'algorithme de hachage est considéré comme sûr.


Comment fonctionne une fonction de hachage ?

Différentes fonctions de hachage produiront des sorties de tailles différentes, mais les tailles de sortie possibles propres à chaque algorithme de hachage sont toujours constantes. Par exemple, l'algorithme SHA-256 ne peut produire que des sorties de 256 bits, tandis que le SHA-1 génèrera toujours une empreinte de 160 bits.

Pour illustrer, appliquons une fonction de hachage SHA-256 (utilisé pour Bitcoin) aux mots Binance et binance.

SHA-256

Entrée

Sortie (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec58339ddcae7f5e8b5da0c36624784b2


Notez comme un changement mineur (ici la casse de la première lettre) a entraîné une valeur de hachage totalement différente. Puisque nous utilisons SHA-256, les sorties auront toujours une taille fixe de 256 bits (ou 64 caractères) - indépendamment de la taille de l'entrée. De plus, peu importe le nombre de fois que l'on applique cet algorithme à ces mots en particulier, les deux sorties seront toujours les mêmes.

Par contre, si nous utilisons les mêmes entrées à travers l'algorithme de hachage SHA-1, on obtiendrait les résultats suivant:

SHA-1

Entrée

Sortie (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


L'acronyme SHA signifie Secure Hash Algorithms, pour algorithmes de hachage sécurisés. Cela réfère à un set de fonctions cryptographiques qui incluent les algorithmes SHA-0 et SHA-1 ainsi que les groupes SHA-2 et SHA-3. Le SHA-256 fait partie du groupe SHA-2, avec les SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.


Pourquoi sont-ils importants?

Les fonctions de hachage conventionnelles ont une large gamme de cas d'utilisation, incluant les recherches au sein de bases de données, les analyses de fichiers de grande envergure et la gestion de données. D'autre part, les fonctions de hachage cryptographiques sont largement utilisées dans les applications de sécurité de l'information, comme l'authentification des messages et l'impression d'empreintes digitales. En ce qui concerne Bitcoin, les fonctions de hachage cryptographiques sont une partie essentielle du processus de minage et jouent également un rôle dans la génération de nouvelles adresses et clés.

La véritable puissance du hachage se révèle lorsqu'il s'agit de traiter d'énormes quantités d'informations. Par exemple, on peut exécuter un fichier ou un set de données à travers une fonction de hachage et ensuite utiliser sa sortie pour vérifier rapidement l'exactitude et l'intégrité des données. Ceci est possible en raison de la nature déterministe des fonctions de hachage : l'entrée entraînera toujours une sortie simplifiée et condensée (hachage). Une telle technique supprime la nécessité de stocker et de se souvenirde grandes quantités de données.

Le hachage est particulièrement utile dans le contexte de la technologie de la blockchain. La blockchain Bitcoin a plusieurs opérations qui impliquent du hachage, la plupart intervenant dans le processus de minage. En fait, presque tous les protocoles de crypto-monnaie dépendent du hachage pour relier et condenser les groupes de transactions en blocs, ainsi que pour produire des liens cryptographiques entre chaque bloc pour finalement créer une blockchain, une chaîne de blocs.


Fonctions de hachage cryptographique

Une fonction de hachage qui déploie des techniques de cryptographie peut être définie comme une fonction de hachage cryptographique. En général, la rupture d'une fonction de hachage cryptographique nécessite une myriade de tentatives de force brute. Pour qu'un individu arrive à inverser une fonction de hachage cryptographique, il aurait besoin de deviner quelle était l'entrée au travers de nombreuses tentatives et d'échecs jusqu'à produire la bonne sortie. Cependant, il existe aussi une possibilité de différentes entrées produisant l'exacte même sortie, dans ce cas une collusion se produit.

Techniquement, une fonction de hachage cryptographique doit suivre trois propriétés pour être considérée comme efficacement sécurisée. Nous pouvons décrire celle-ci comme: une résistance à la collision, une résistance à la préimage et une résistance à la seconde préimage.

Avant de discuter de chaque propriété, résumons leur logique en trois phrases courtes.

  • Résistance à la collision : il est infaisable de trouver deux entrées distinctes qui produisent le même hachage en tant que sortie.

  • Résistance de la préimage :il est impossible d'inverser la fonction de hachage (trouver l'entrée à partir d'une sortie donnée).

  • Résistance de la seconde préimage: il est impossible de trouver une seconde entrée qui entre en collision avec une entrée spécifiée.


Résistance à la collision

Comme mentionné, une collision se produit lorsque des entrées différentes produisent l'exact même hachage. Ainsi, une fonction de hachage est considérée comme résistante à la collision jusqu'à ce que quelqu'un trouve une collision. Notez que les collisions existeront toujours pour n'importe quelle fonction de hachage car les entrées possibles sont infinies, tandis que les sorties possibles sont finies.

En d'autres termes, une fonction de hachage est résistante à la collision lorsque la possibilité de trouver une collision est si faible qu'elle nécessiterait des millions d'années de calcul. Alors, bien qu'il n'y ait pas de fonction de hachage sans collision, certaines d'entre elles sont assez fortes pour être considérées comme résistantes (par exemple SHA-256).

Parmi les différents algorithmes SHA, les groupes SHA-0 et SHA-1 ne sont plus considérés comme sécurisés parce que des collisions ont été trouvées. Actuellement, les groupes SHA-2 et SHA-3 sont considérés comme résistants aux collisions.


Résistance à la préimage

La propriété de la résistance à la préimage est liée au concept de fonctions à sens unique. Une fonction de hachage est considérée comme résistante à l'image lorsqu'il y a une probabilité très faible de trouver l'entrée qui a généré une sortie particulière.

Notez que cette propriété est différente de la précédente, car ici un attaquant hypothétique essayerait de deviner l'entrée en regardant une sortie donnée. Une collision, par contre, se produit lorsque quelqu'un trouve deux entrées différentes qui génèrent la même sortie, mais il n'y pas d'importance spécifique quand à l'entrée qui a été utilisée.

La propriété de résistance à la préimage est précieuse pour protéger les données parce que le simple hachage d'un message peut prouver son authenticité, sans avoir à en divulguer le contenu. En pratique, de nombreux fournisseurs de services et applications Web stockent et utilisent des hachages générés à partir de mots de passe plutôt que des mots de passe en texte clair.


Résistance à la seconde préimage

Pour simplifier, nous pouvons dire que la résistance à la seconde préimage se situe quelque part entre les deux autres propriétés. Une attaque de seconde préimage se produit lorsque quelqu'un est en mesure de trouver une entrée spécifique qui génère la même sortie qu'une autre entrée qu'il connaît déjà.

En d'autres termes, une attaque de seconde préimage implique de trouver une collision, mais au lieu de chercher deux entrées aléatoires qui génèrent le même hachage, on cherche une entrée qui génère le même hachage qu'une autre entrée spécifique.

Par conséquent, toute fonction de hachage résistante aux collisions est également résistante aux attaques de seconde préimage, car celles-ci impliqueront toujours une collision. Cependant, on peut toujours effectuer une attaque de préimage sur une fonction résistante à la collision, car elle implique de trouver une seule entrée à partir d'une seule sortie.


Minage

Il y a de nombreuses étapes dans le minage de Bitcoin qui impliquent des fonctions de hachage, comme la vérification des soldes, la constitution du lien entrées/sorties des transactions, et le hachage des transactions dans un bloc pour former un Arbre de Merkle. Mais l'une des principales raisons qui fait que la blockchain Bitcoin est sécurisée tient dans le fait que les mineurs doivent effectuer une myriade d'opérations de hachage afin de trouver une solution valide pour créer et ajouter bloc.
Plus précisément, un mineur doit essayer plusieurs entrées différentes lors de la création d'une valeur de hachage pour le bloc auquel il candidate. En substance, ils ne pourront valider leur bloc que s'ils génèrent un hash de sortie qui commence par un certain nombre de zeros. Le nombre de zeros est ce qui détermine la difficulté de minage, et il varie selon le taux de hachage consacré au réseau.

Dans ce cas, le taux de hachage représente le montant d'énergie informatique investie dans le minage de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté de miange afin que le temps moyen nécessaire pour miner un bloc reste proche de 10 minutes. Par contre, si plusieurs mineurs décident d'arrêter de miner, en entraînant une baisse significative du taux de hachage, la difficulté de minage sera ajustée, ce qui facilitera le minage (jusqu'à ce que le temps de bloc moyen soit ramené à 10 minutes).

Notez que les mineurs n'ont pas besoin de chercher d'éventuelles collisions parce qu'il existe de multiples hachages qu'ils peuvent générer en tant que sortie valide (commençant avec un nombre de zéros spécifique). Il y a donc plusieurs solutions possibles pour un certain bloc, et les mineurs doivent en trouver une - selon le seuil déterminé par la difficulté minière.

Étant donné que le minage de Bitcoin est une tâche à impliquant des coûts élevés, les mineurs n'ont aucune raison de tricher au sein du système car cela entraînerait des pertes financières importantes. Plus il y a de mineurs dans une blockchain, et donc plus elle grossit, et plus elle devient solide.


Pour conclure

Il ne fait aucun doute que les fonctions de hachage sont des outils essentiels en informatique, surtout lorsqu'il s'agit de traiter des quantités énormes de données. En combinaison avec la cryptographie, les algorithmes de hachage peuvent être assez polyvalents, en particulier pour la sécurité et l'authentification, et ce de plusieurs façons. Ainsi, les fonctions de hachage cryptographique sont vitales pour presque tous les réseaux de crypto-monnaie, de sorte que la compréhension de leurs propriétés et mécanismes de travail est certainement utile pour toute personne intéressée par la technologie de la blockchain.