Le terme hachage fait référence au processus de création de sorties de taille fixe à partir d'entrées de taille variable. Cela se fait en utilisant des formules mathématiques connues sous le nom de fonctions de hachage (appliquées en tant qu'algorithmes de hachage).

Bien que toutes les fonctions de hachage n'utilisent pas le cryptage, les fonctions de hachage cryptographiques sont au cœur des crypto-monnaies. Grâce à elles, les blockchains et d'autres systèmes distribués peuvent atteindre de grands niveaux d'intégrité et de sécurité des données.

Les fonctions de hachage traditionnelles et cryptographiques sont déterministes. Cela signifie que tant que l'entrée (les entrées) ne change pas, l'algorithme de hachage produira toujours les mêmes sorties (également connu sous le nom de Digest ou Hachage).

Les algorithmes de hachage pour les crypto-monnaies sont généralement conçus comme des fonctions à sens unique, ce qui signifie qu'il est difficile de revenir en arrière sans un investissement considérable en temps et en ressources de calcul. En d'autres termes, il est très facile d'obtenir des sorties à partir d'entrées, mais il est relativement difficile de faire l'inverse (obtenir des entrées à partir de sorties uniquement). En général, plus il est difficile de trouver des entrées, plus l'algorithme de hachage est sécurisé.


Comment fonctionnent les fonctions de hachage ?

Différentes fonctions de hachage produisent des sorties de tailles différentes, mais les tailles de sortie possibles pour chaque algorithme de hachage sont toujours fixes. Par exemple, l'algorithme SHA-256 ne peut produire que des sorties de 256 bits, tandis que SHA-1 crée toujours un résumé de 160 bits.

Pour illustrer, essayons de passer le mot "Binance" et "binance" à travers l'algorithme de hachage SHA-256 (qui est utilisé dans Bitcoin).

SHA-256

Entrée

Sortie (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Notez qu'un léger changement (sous la forme de la première lettre) a conduit à une valeur de hachage totalement différente. Mais étant donné que 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 combien de fois nous exécutons les deux mots à travers l'algorithme, les sorties resteront constantes.

Inversement, si nous faisons passer les mêmes entrées à travers l'algorithme de hachage SHA-1, nous obtiendrons les résultats suivants :

SHA-1

Entrée

Sortie (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Il convient de noter que le terme SHA est l'acronyme des algorithmes Secure Hash. Il fait référence à un ensemble de fonctions de hachage cryptographiques qui incluent les algorithmes SHA-0 et SHA-1 avec les ensembles SHA-2 et SHA-3. SHA-256 fait partie de l'ensemble SHA-2 ainsi que SHA-512 et d'autres variantes. Actuellement, les ensembles SHA-2 et SHA-3 sont considérés comme sûrs.


Pourquoi est-ce important ?

Les fonctions de hachage traditionnelles ont un large éventail de cas d'utilisation, y compris la recherche dans des bases de données, l'analyse de gros fichiers et la gestion des données. D'autre part, les fonctions de hachage cryptographiques sont largement utilisées dans les applications de sécurité de l'information telles que l'authentification des messages et les empreintes numériques. Pour Bitcoin, les fonctions de hachage cryptographiques sont une partie essentielle du processus d'extraction et jouent également un rôle dans la création d'adresses et de clés nouvelles.

La véritable puissance du hachage se manifeste lorsqu'il s'agit de traiter d'énormes quantités d'informations. Par exemple, un gros fichier ou un ensemble de données peut être passé à travers une fonction de hachage, puis son résultat peut être utilisé pour vérifier rapidement l'exactitude et l'intégrité des données. Cela est possible grâce à la nature déterministe des fonctions de hachage : les entrées mènent toujours à des sorties simplifiées et condensées (hachage). Cette technique élimine le besoin de stocker et de se souvenir de grandes quantités de données.

Le hachage est particulièrement utile dans le contexte de la technologie blockchain. La blockchain Bitcoin contient de nombreuses opérations qui impliquent le hachage, la plupart d'entre elles se produisant lors du processus d'extraction. En effet, presque tous les protocoles de crypto-monnaies s'appuient sur le hachage pour relier et condenser des ensembles de transactions en blocs. De plus, pour créer des liens cryptés entre chaque bloc, ce qui permet de créer efficacement une blockchain.


Fonctions de hachage cryptographiques

Encore une fois, une fonction de hachage (hachage) qui utilise des techniques de cryptage peut être définie comme une fonction de hachage cryptographique. Pour casser une fonction de hachage cryptographique, il faut un nombre incalculable de tentatives d'attaques par force brute. Pour inverser une fonction de hachage cryptographique, ils doivent deviner quelles étaient les entrées par essai et erreur jusqu'à ce que les sorties correspondantes soient produites. Mais il est également possible que des entrées différentes produisent les mêmes sorties, et dans ce cas, un "collision" 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 ces propriétés comme suit : résistance aux collisions, résistance à l'image originale et résistance à la seconde image.

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

  • Résistance aux collisions : il ne peut y avoir aucune paire d'entrées différentes générant le même hachage en sortie.

  • Résistance à l'image originale : il n'est pas possible de "renverser" la fonction de hachage (de retrouver les entrées à partir de sorties spécifiques).

  • Résistance à la seconde image : il ne peut y avoir aucune seconde entrée qui entre en collision avec une autre entrée donnée.


Résistance aux collisions

Comme mentionné précédemment, une collision se produit lorsque des entrées différentes produisent exactement le même hachage. Par conséquent, une fonction de hachage est considérée comme résistante aux collisions jusqu'à ce qu'une personne trouve une collision. Notez que des collisions existeront toujours pour toute fonction de hachage, car les entrées possibles sont infinies tandis que les sorties possibles sont limitées.

En d'autres termes, une fonction de hachage est résistante aux collisions lorsque la probabilité de trouver une collision est si faible qu'elle nécessiterait des millions d'années de calculs. Ainsi, bien qu'il n'existe pas de fonctions de hachage exemptes de collision, certaines sont suffisamment robustes pour être considérées comme résistantes (par exemple, SHA-256).

Parmi les différents algorithmes SHA, les ensembles SHA-0 et SHA-1 ne sont plus sûrs en raison de l'existence de collisions. Actuellement, les ensembles SHA-2 et SHA-3 sont considérés comme résistants aux collisions.


Résistance à l'image originale

La propriété de résistance à l'image originale est liée au concept de fonctions à sens unique. Une fonction de hachage est considérée comme résistante à l'image originale lorsqu'il y a une très faible probabilité que quelqu'un puisse retrouver les entrées qui produisent des sorties spécifiques.

En gardant à l'esprit que cette propriété diffère de la précédente car un attaquant essaiera de deviner les entrées en regardant des sorties spécifiques. D'autre part, une collision se produit lorsque quelqu'un trouve des entrées différentes qui génèrent les mêmes sorties, mais les entrées utilisées n'ont pas d'importance.

La propriété de résistance à l'image originale est précieuse pour la protection des données car un hachage simple d'un message peut prouver son authenticité sans révéler d'informations. Lors de son application pratique, de nombreux fournisseurs de services et applications web stockent et utilisent les hachages générés à partir de mots de passe au lieu des mots de passe en texte clair.


Résistance à la seconde image

Pour simplifier, nous pourrions dire que la résistance à la seconde image se situe quelque part entre les autres propriétés précédentes. Une attaque de seconde image se produit lorsqu'une personne parvient à trouver une entrée spécifique qui génère le même résultat qu'une autre entrée qu'elle connaît déjà.

En d'autres termes, une attaque de seconde image implique de trouver une collision, mais au lieu de rechercher deux entrées aléatoires qui produisent le même hachage en sortie, elles recherchent une entrée qui génère le même hachage créé par une autre entrée spécifique.

Ainsi, toute fonction de hachage résistante aux collisions sera également résistante aux attaques de seconde image, car cette dernière impliquerait toujours une collision. Mais les attaquants peuvent encore exécuter une attaque précoce sur une fonction résistante aux collisions, car cela implique de trouver une entrée à partir d'une seule sortie.


Extraction

Il y a de nombreuses étapes dans le processus d'extraction de Bitcoin qui impliquent des fonctions de hachage, telles que la vérification des soldes, la liaison des entrées et des sorties aux transactions, et le hachage des transactions à l'intérieur d'un bloc pour former un Merkle Tree. Mais l'une des principales raisons pour lesquelles la blockchain Bitcoin est plus sécurisée est le fait que les mineurs ont besoin d'innombrables hachages pour trouver une solution valide pour le prochain bloc.

Plus précisément, le mineur doit essayer plusieurs entrées différentes lors de la création d'une valeur de hachage pour leur bloc candidat. En essence, ils ne pourront valider leur bloc que s'ils créent un hachage dont la sortie commence par un certain nombre de zéros. Le nombre de zéros détermine la difficulté d'extraction et varie en fonction du taux de hachage alloué au réseau.

Dans ce cas, le taux de hachage représente la quantité de puissance de calcul investie dans l'extraction de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté d'extraction afin que le temps moyen nécessaire pour extraire un bloc reste proche de 10 minutes. En revanche, si de nombreux mineurs décident d'arrêter l'extraction, ce qui entraînerait une baisse significative du taux de hachage, la difficulté d'extraction sera ajustée, facilitant ainsi le processus d'extraction (jusqu'à ce que le temps moyen d'extraction d'un bloc revienne à 10 minutes).

Notez qu'il n'est pas nécessaire pour les mineurs de trouver des collisions, car il existe de nombreux hachages qu'ils peuvent générer en tant que sorties valides (commençant par un certain nombre de zéros). Il existe donc de nombreuses solutions possibles pour un bloc donné, et les mineurs n'ont pas besoin d'en trouver un spécifique en fonction du début défini par la difficulté d'extraction.

Étant donné que le processus d'extraction de Bitcoin est extrêmement coûteux, les mineurs n'ont pas de raison suffisante de tromper le système, car cela entraînerait d'énormes pertes financières. Plus il y a de mineurs qui rejoignent la blockchain, plus elle devient forte.


Idées finales

Il ne fait aucun doute que les fonctions de hachage sont des outils essentiels en informatique, en particulier lorsqu'il s'agit de traiter d'énormes volumes de données. Les algorithmes de hachage peuvent être polyvalents lorsqu'ils sont combinés avec le cryptage, offrant sécurité et authentification de plusieurs manières différentes. En ce sens, les fonctions de hachage cryptographiques sont extrêmement importantes pour presque tous les réseaux de crypto-monnaies. Par conséquent, comprendre leurs propriétés et leurs mécanismes de fonctionnement est certainement utile pour quiconque s'intéresse à la technologie blockchain.