Le hash : concept fondamental en cryptographie et blockchain

Le hashing est un processus qui transforme des données de n'importe quelle taille en une chaîne de longueur fixe. Ce procédé est réalisé grâce à des formules mathématiques connues sous le nom de fonctions hash, mises en œuvre sous forme d'algorithmes.

Bien que toutes les fonctions hash n'impliquent pas la cryptographie, les fonctions hash cryptographiques dites sont essentielles dans le monde des cryptomonnaies. Grâce à elles, les chaînes de blocs et d'autres systèmes décentralisés parviennent à des niveaux élevés d'intégrité et de sécurité des données.

Les fonctions hash, tant conventionnelles que cryptographiques, sont déterministes. Cela signifie que, tant que l'entrée ne change pas, l'algorithme produira toujours la même sortie ( également appelée digest ou hash).

En général, les algorithmes hash dans les cryptomonnaies sont conçus comme des fonctions à sens unique, ce qui implique qu'ils ne peuvent pas être facilement inversés sans une quantité significative de temps et de ressources informatiques. En d'autres termes, il est relativement simple de générer la sortie à partir de l'entrée, mais extrêmement complexe de faire le contraire. En termes généraux, plus il est difficile de trouver l'entrée originale, plus l'algorithme hash est considéré comme sûr.

Fonctionnement d'une fonction hash

Différentes fonctions hash génèrent des résultats de tailles différentes, mais les tailles de sortie possibles pour chaque algorithme hash sont toujours constantes. Par exemple, l'algorithme SHA-256 ne peut produire que des résultats de 256 bits, tandis que SHA-1 générera toujours un digest de 160 bits.

Pour illustrer, passons les mots "Gate" et "Gate" par l'algorithme hash SHA-256 ( utilisé dans Bitcoin).

SHA-256

Entrée

Sortie (256 bits)

Gate

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Gate

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Remarquez qu'un changement minimal (la majuscule de la première lettre) a entraîné une valeur hash complètement différente. Cependant, lors de l'utilisation de SHA-256, les sorties auront toujours une taille fixe de 256 bits (ou 64 caractères), peu importe la taille d'entrée. De plus, peu importe combien de fois nous exécutons les deux mots à travers l'algorithme, les deux sorties resteront constantes.

En contraste, si nous exécutons les mêmes entrées à travers l'algorithme hash SHA-1, nous obtiendrions les résultats suivants :

SHA-1

Entrée

Sortie (160 bits)

Gate

3a7bd3e2360a3d29eea436fcfb7e44c735d117c4

Gate

5df9954f1ca26eabf18c663cc9258ba7f7712c45

Il est important de mentionner que SHA signifie Secure Hash Algorithms. Cela fait référence à un ensemble de fonctions de hachage cryptographiques qui comprennent 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 le SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.

Importance du hashing

Les fonctions hash conventionnelles ont un large éventail d'applications, y compris la recherche dans les bases de données, l'analyse de fichiers volumineux et la gestion des données. D'autre part, les fonctions hash cryptographiques sont largement utilisées dans les applications de sécurité de l'information, telles que l'authentification des messages et la prise d'empreintes digitales. Dans le contexte de Bitcoin, les fonctions hash cryptographiques sont une partie essentielle du processus de minage et jouent également un rôle crucial dans la génération de nouvelles adresses et clés.

Le véritable pouvoir du hashing se manifeste lorsqu'il s'agit d'énormes quantités d'informations. Par exemple, on peut exécuter un fichier ou un ensemble de données volumineux à travers une fonction hash et ensuite utiliser sa sortie pour vérifier rapidement la précision et l'intégrité des données. Cela est possible en raison de la nature déterministe des fonctions hash : l'entrée produira toujours une sortie simplifiée et condensée (hash). Cette technique élimine le besoin de stocker et de "se souvenir" de grandes quantités de données.

Le hashing est particulièrement utile dans le contexte de la technologie blockchain. La chaîne de blocs de Bitcoin a plusieurs opérations qui impliquent hash, la plupart d'entre elles étant dans le processus de minage. En fait, presque tous les protocoles de cryptomonnaies reposent sur hash pour lier et condenser des groupes de transactions en blocs, et également pour produire des liens cryptographiques entre chaque bloc, créant ainsi effectivement une chaîne de blocs.

Fonctions de hash cryptographiques

Une fonction hash qui implémente des techniques cryptographiques peut être définie comme une fonction hash cryptographique. En général, casser une fonction hash cryptographique nécessite d'innombrables tentatives de force brute. Pour qu'une personne "inverse" une fonction hash cryptographique, elle devrait deviner quelle a été l'entrée par essais et erreurs jusqu'à ce que la sortie correspondante soit produite. Cependant, il existe également la possibilité que différentes entrées produisent exactement le même résultat, auquel cas une "collision" se produit.

Techniquement, une fonction de hachage cryptographique doit respecter trois propriétés pour être considérée comme effectivement sécurisée. Nous pouvons les décrire comme la résistance aux collisions, la résistance à la préimage et la résistance à la seconde préimage.

Avant d'analyser chaque propriété, résumons sa logique en trois phrases courtes :

  • Résistance à la collision : il n'est pas faisable de trouver deux entrées distinctes qui produisent le même hash en sortie.

  • Résistance à l'image précédente : il n'est pas faisable de "revenir en arrière" dans la fonction hash ( pour trouver l'entrée d'une sortie déterminée ).

  • Résistance à la seconde préimage : il n'est pas possible de trouver une seconde entrée qui entre en collision avec une entrée spécifique.

Résistance à la collision

Une collision se produit lorsque différentes entrées produisent exactement le même hash. Par conséquent, une fonction hash est considérée comme résistante aux collisions jusqu'à ce que quelqu'un trouve une collision. Il est important de noter qu'il existera toujours des collisions pour toute fonction hash car les entrées possibles sont infinies, tandis que les sorties possibles sont finies.

En d'autres termes, une fonction hash est résistante aux collisions lorsque la possibilité de trouver une collision est si faible qu'elle nécessiterait des millions d'années de calculs. Donc, bien qu'il n'existe pas de fonctions hash exemptes de collisions, certaines d'entre elles sont suffisamment robustes 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ûrs car 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 préalable à l'image

La propriété de la résistance à la préimage est liée au concept de fonctions directionnelles. Une fonction hash est considérée comme résistante à la préimage lorsque la probabilité qu'une personne trouve l'entrée qui a généré une sortie particulière est très faible.

Il est important de noter que cette propriété est différente de la précédente car un attaquant essaierait de deviner quelle a été l'entrée en observant une sortie donnée. Une collision, en revanche, se produit lorsque quelqu'un trouve deux entrées différentes qui génèrent la même sortie, mais peu importe quelles entrées ont été utilisées.

La propriété de résistance à la préimage est précieuse pour protéger les données car un simple hash d'un message peut prouver son authenticité, sans avoir besoin de révéler l'information. En pratique, de nombreux fournisseurs de services et applications web stockent et utilisent des hashes générés à partir de mots de passe au lieu de 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 à un certain point intermédiaire entre les deux autres propriétés. Une attaque de seconde préimage se produit lorsqu'une personne est capable de trouver une entrée spécifique qui génère la même sortie qu'une autre entrée déjà connue.

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 hash, elle cherche une entrée qui génère le même hash produit par une autre entrée spécifique.

Par conséquent, toute fonction hash qui est résistante aux collisions le sera également aux attaques de seconde préimage, car ces dernières impliqueront toujours une collision. Cependant, il est toujours possible d'effectuer une attaque de préimage sur une fonction résistante aux collisions, car cela implique de trouver une entrée unique à partir d'une sortie unique.

Minage et hashing

Le processus de minage de Bitcoin implique de nombreuses opérations de hash, telles que la vérification des soldes, le lien entre les entrées et sorties des transactions, et le hashing des transactions à l'intérieur d'un bloc pour former un arbre de Merkle. Cependant, l'une des principales raisons pour lesquelles la chaîne de blocs de Bitcoin est sécurisée est le fait que les mineurs doivent effectuer un grand nombre d'opérations de hash pour finalement trouver une solution valide pour le prochain bloc.

Spécifiquement, un mineur doit tester plusieurs entrées différentes pour créer une valeur hash pour son bloc candidat. En essence, ils ne pourront valider leur bloc que s'ils génèrent un hash de sortie qui commence par un certain nombre de zéros. Le nombre de zéros détermine la difficulté de la minage et varie en fonction du taux de hash dédié au réseau.

Dans ce contexte, le taux de hash représente combien de puissance de calcul est investie dans le minage de Bitcoin. Si le taux de hash du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté d'extraction pour que le temps moyen nécessaire pour extraire un bloc reste proche de 10 minutes. Au contraire, si plusieurs mineurs décident d'arrêter de miner, ce qui fait chuter significativement le taux de hash, la difficulté de minage sera ajustée, rendant plus facile le minage ( jusqu'à ce que le temps moyen de bloc revienne à 10 minutes).

Il est important de souligner que les mineurs n'ont pas à trouver des collisions car il y a plusieurs hashes qui peuvent générer comme sortie valide ( commençant par un certain nombre de zéros ). Par conséquent, il existe plusieurs solutions possibles pour un bloc donné, et les mineurs n'ont qu'à en trouver une, selon le seuil déterminé par la difficulté de minage.

Étant donné que le minage de Bitcoin est une tâche coûteuse, les mineurs n'ont aucune raison de tromper le système, car cela entraînerait des pertes financières importantes. Plus il y a de mineurs qui rejoignent une chaîne de blocs, plus celle-ci devient grande et forte.

Réflexions finales

Sans aucun doute, les fonctions hash sont des outils fondamentaux en informatique, en particulier lorsqu'il s'agit de grands volumes de données. Lorsqu'elles sont combinées avec la cryptographie, les algorithmes hash peuvent être assez polyvalents et offrent sécurité et authentification de nombreuses manières différentes. En tant que tel, les fonctions hash cryptographiques sont vitales pour presque tous les réseaux de cryptomonnaies, il est donc sans aucun doute utile de comprendre leurs propriétés et mécanismes de fonctionnement pour quiconque s'intéresse à la technologie blockchain.

EL2.16%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Reposter
  • Partager
Commentaire
0/400
Aucun commentaire
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)