Le pouvoir du hash dans le monde des jetons

Le hashing est un processus fondamental dans le domaine des cryptomonnaies qui transforme des données de n'importe quelle taille en résultats de longueur fixe. Ce processus est réalisé à l'aide de 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 l'écosystème des jetons. Grâce à elles, les blockchains et d'autres systèmes décentralisés atteignent des niveaux significatifs d'intégrité et de sécurité des données.

Les fonctions hash, tant les conventions que les cryptographiques, sont déterministes. Cela signifie que, tant que les données d'entrée ne changent pas, l'algorithme hash produira toujours le même résultat, également connu sous le nom de digest ou hash.

Les algorithmes de hash utilisés dans les monnaies numériques sont généralement conçus comme des fonctions à sens unique, ce qui implique qu'ils ne peuvent pas être inversés sans une quantité considérable de temps et de ressources informatiques. En d'autres termes, il est relativement facile de générer une sortie à partir d'une entrée, mais extrêmement difficile de faire l'inverse. En général, plus il est compliqué de trouver l'entrée, plus l'algorithme de hash est considéré comme sûr.

Fonctionnement d'une fonction hash

Différentes fonctions hash produisent des résultats de longueurs différentes, mais les tailles de sortie possibles de chaque algorithme hash sont toujours constantes. Par exemple, l'algorithme SHA-256 ne peut générer que des résultats de 256 bits, tandis que SHA-1 produira toujours un condensé de 160 bits.

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

SHA-256

Entrée

Sortie (256 bits)

Gate

7f98b5c76e1f90c0e51e5947eae545f3b6f4b4736c774c504d7e6741f5070861

Gate

e77b9a9ae9e30b0dbdb6f510a264ef9de781501d7b6b92ae89eb059c5ab743a0

Remarquez qu'un petit changement (la majuscule initiale) a entraîné une valeur hash complètement différente. Cependant, comme 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 deux sorties resteront constantes.

Si nous passons les mêmes entrées à travers l'algorithme hash SHA-1, nous obtenons les résultats suivants :

SHA-1

Entrée

Sortie (160 bits)

Gate

96a296d224f285c67bee93c30f8a309157f0daa7

Gate

5f42c325eef7e85610308428b407748b77d8c98e

Il est intéressant de noter que SHA signifie Secure Hash Algorithms (Algorithmes de Hash Sécurisés). C'est un ensemble de fonctions hash cryptographiques qui comprend les algorithmes SHA-0 et SHA-1, ainsi que les familles SHA-2 et SHA-3. SHA-256 fait partie de la famille SHA-2, avec SHA-512 et d'autres variantes. Actuellement, seules les familles SHA-2 et SHA-3 sont considérées comme sûres.

Importance de cette technologie

Les fonctions hash conventionnelles ont une large gamme d'applications, y compris les recherches dans les bases de données, l'analyse de gros fichiers et la gestion de l'information. D'autre part, les fonctions hash cryptographiques sont largement utilisées dans des applications de sécurité de l'information, telles que l'authentification des messages et la génération d'empreintes digitales. Dans le contexte de Bitcoin, les fonctions hash cryptographiques sont une partie intégrante 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 potentiel du hashing se révèle lorsqu'on travaille avec de grands volumes d'informations. Par exemple, il est possible de passer un fichier volumineux ou un ensemble de données à travers une fonction hash et ensuite d'utiliser ses résultats pour vérifier rapidement l'exactitude et l'intégrité des données. Cela est possible en raison de la nature déterministe des fonctions hash : l'entrée produit toujours une sortie compressée et simplifiée (le hash). Cette méthode élimine la nécessité de stocker et de "mémoriser" 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 implique plusieurs opérations liées au hashing, dont la plupart sont réalisées pendant le processus de minage. En fait, presque tous les protocoles de cryptomonnaies dépendent du hashing pour lier et regrouper les transactions en jetons et pour créer des liens cryptographiques entre chaque jeton, formant ainsi une chaîne de blocs.

Fonctions de hash cryptographiques

Une fonction hash qui utilise des techniques cryptographiques peut être définie comme une fonction hash cryptographique. En général, déchiffrer une fonction hash cryptographique nécessite de nombreuses tentatives de force brute. Pour "inverser" une fonction hash cryptographique, il est nécessaire de sélectionner des entrées par essai et erreur jusqu'à obtenir une sortie appropriée. Cependant, il existe également la possibilité que différentes entrées produisent le même résultat, auquel cas une "collision" se produit.

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

Avant de décrire chaque propriété, résumons sa logique en trois phrases brèves:

  • Résistance aux collisions : impossibilité de trouver deux entrées différentes produisant le même hash.

  • Résistance à la préimage : incapacité de "revenir" à la fonction hash ( pour trouver l'entrée à partir d'une sortie donnée ).

  • Résistance à la seconde préimage : impossibilité de trouver une seconde entrée ayant le même hash que la première.

Résistance aux collisions

Comme mentionné précédemment, une collision se produit lorsque différentes entrées produisent le même hash. La fonction hash est alors considérée comme résistante aux collisions jusqu'à ce que quelqu'un découvre une telle collision. Il est important de noter qu'il existera toujours des collisions pour toute fonction hash en raison du nombre infini d'entrées et du nombre fini de sorties.

Par conséquent, une fonction hash est résistante aux collisions lorsque la probabilité de détecter une collision est si basse qu'elle nécessiterait des millions d'années de calcul. Pour cette raison, bien qu'il n'existe pas de fonctions hash sans collisions, certaines sont si robustes qu'elles peuvent être considérées comme stables ( par exemple, SHA-256 ).

Parmi les différents algorithmes SHA, les familles SHA-0 et SHA-1 ne sont plus considérées comme sûres car des collisions ont été détectées. Actuellement, seules les familles SHA-2 et SHA-3 sont considérées comme résistantes aux collisions.

Résistance à la préimage

Cette propriété est étroitement liée au concept de fonctions unidirectionnelles. Une fonction hash est considérée comme résistante à la préimage tant qu'il existe une probabilité très faible que quelqu'un puisse trouver l'entrée en utilisant la sortie générée.

Notez que cette propriété est différente de la précédente car l'attaquant doit deviner l'entrée basée sur une sortie spécifique. La collision, en revanche, se produit lorsque quelqu'un trouve deux entrées différentes qui produisent la même sortie, peu importe quelle entrée particulière a été utilisée.

La propriété de résistance à la préimage est précieuse pour la sécurité des données, car un simple hash d'un message peut prouver son authenticité sans avoir besoin de révéler des informations supplémentaires. 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 les utiliser sous forme de texte brut.

Résistance à la seconde préimage

Ce type de résistance se situe entre les deux propriétés précédentes. L'attaque de seconde préimage consiste à trouver une entrée spécifique avec laquelle il est possible de générer une sortie qui a déjà été produite en utilisant une autre entrée connue auparavant.

En d'autres termes, une attaque de seconde préimage implique la détection de collisions, mais au lieu de trouver deux entrées aléatoires qui génèrent le même hash, l'attaque vise à trouver une entrée qui peut reproduire un hash qui a déjà été généré par une autre entrée.

Par conséquent, toute fonction hash qui est résistante aux collisions l'est aussi à l'attaque de seconde préimage, car cette dernière nécessite toujours une collision. Cependant, il est encore possible de réaliser une attaque de préimage sur une fonction résistante aux collisions, car cela implique de rechercher une entrée pour une sortie donnée.

Minage

Il existe de nombreuses étapes dans le minage de Bitcoin qui se font par des fonctions hash. Celles-ci incluent la vérification des soldes, la liaison des entrées et des sorties des transactions, et la combinaison de toutes les transactions dans un bloc pour former un arbre de Merkle. Mais l'une des principales raisons pour lesquelles la blockchain de Bitcoin est sécurisée est que les mineurs doivent effectuer autant d'opérations de hash que possible pour finalement trouver la bonne solution pour le bloc suivant.

Un mineur doit utiliser diverses entrées pour générer un hash pour son bloc candidat. Le bloc ne pourra être vérifié que si la sortie générée correctement sous forme de hash commence par un certain nombre de zéros. La quantité de zéros détermine la difficulté de l'extraction et varie en fonction du hashrate du réseau.

Dans ce contexte, le hashrate est une mesure de la puissance de calcul investie dans le minage de Bitcoin. Si le hashrate commence à augmenter, le protocole Bitcoin ajustera automatiquement la difficulté de minage pour que le temps moyen nécessaire pour miner un bloc soit d'environ 10 minutes. Si plusieurs mineurs décident d'arrêter de miner, entraînant une chute significative du hashrate, la difficulté de minage sera ajustée pour faciliter temporairement le calcul ( jusqu'à ce que le temps moyen de formation des blocs revienne à 10 minutes ).

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

Étant donné que le minage de Bitcoin est une tâche coûteuse, les mineurs n'ont pas d'incitations à tromper le système, car cela entraînerait des pertes financières significatives. Par conséquent, plus il y a de mineurs qui rejoignent la blockchain, plus elle deviendra grande et robuste.

Conclusion

Il est indéniable que les fonctions hash sont l'un des outils fondamentaux en informatique, en particulier lorsqu'il s'agit de traiter de grands volumes de données. Lorsqu'elles sont combinées avec la cryptographie, les algorithmes hash s'avèrent extrêmement utiles, car ils offrent sécurité et authentification de diverses manières. Par conséquent, les fonctions hash cryptographiques sont essentielles pour presque tous les réseaux de cryptomonnaies, et comprendre leurs propriétés et mécanismes de fonctionnement est certainement précieux pour quiconque s'intéresse à la technologie blockchain.

EL0.02%
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)