Comprendre les fonctions de hachage dans la cryptomonnaie

Le hachage est un processus qui génère des sorties de taille fixe à partir d'entrées de taille variable en utilisant des formules mathématiques connues sous le nom de fonctions de hachage. Bien que toutes les fonctions de hachage n'impliquent pas la cryptographie, les fonctions de hachage cryptographiques sont fondamentales pour les cryptomonnaies, permettant aux blockchains et à d'autres systèmes distribués d'atteindre des niveaux significatifs d'intégrité et de sécurité des données.

Les fonctions de hachage régulières et cryptographiques sont déterministes, ce qui signifie que tant que les données d'entrée restent inchangées, l'algorithme de hachage produira toujours le même résultat ( également connu sous le nom de résumé ou hash).

Les algorithmes de hashage des cryptomonnaies sont généralement conçus comme des fonctions à sens unique, ce qui les rend difficiles à inverser sans un temps et des ressources informatiques substantiels. En d'autres termes, il est relativement facile de générer une sortie à partir d'une entrée, mais considérablement difficile de revenir en arrière. En général, plus il est difficile de trouver l'entrée, plus l'algorithme de hash est considéré comme sécurisé.

Comment fonctionne une fonction de hachage ?

Différentes fonctions de hachage produisent des résultats de tailles variées, mais les tailles de sortie possibles pour chaque algorithme de hachage 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ère toujours un hachage de 160 bits.

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

SHA-256

Sortie

Sortie (256 bits)

Gate

7f43e4e2c9d9e6249ba0df8a911b46400f6fd5e9993a5f1ea65e4633e2de5a6c

Gate

9c6b057a2b9d96746c38a3f4e466678e1b4c4425ff8fe9659e96c903e7a1f3cc

Notez qu'un léger changement ( dans la casse de la première lettre ) a entraîné une valeur de hachage complètement différente. Mais comme nous avons utilisé SHA-256, les sorties auront toujours une taille fixe de 256 bits ( ou 64 caractères ) indépendamment de la taille d'entrée. De plus, peu importe combien de fois nous passons les deux mots par l'algorithme, les deux sorties resteront constantes.

Et si nous passons les mêmes entrées à travers l'algorithme de hachage SHA-1, nous obtenons les résultats suivants :

SHA-1

Sortie

Sortie (160 bits)

Gate

f8e4eba8d46e2b1079e6a1a8abf0a0d8c3a81d73

Gate

b7e23ec29af22b0b4e41da31e868d57226121c84

Il est intéressant de noter que SHA signifie Algorithmes de Hachage Sécurisés. C'est un ensemble de fonctions de hachage cryptographiques qui comprend les algorithmes SHA-0 et SHA-1, ainsi que les groupes SHA-2 et SHA-3. SHA-256 fait partie de la famille SHA-2, avec SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sécurisés.

Pourquoi cette technologie est-elle importante ?

Les fonctions de hachage conventionnelles ont une large gamme d'utilisations, y compris les recherches dans les bases de données, l'analyse de grands fichiers et la gestion des données. D'autre part, les fonctions de hachage cryptographique sont largement utilisées dans les applications de sécurité de l'information, telles que l'authentification des messages et l'empreinte digitale numérique. En ce qui concerne Bitcoin, les fonctions de hachage cryptographique font partie intégrante du processus d'extraction et jouent également un rôle dans la génération de nouvelles adresses et clés.

Le véritable pouvoir du hachage se révèle lorsqu'il s'agit de traiter de grandes quantités d'informations. Par exemple, vous pouvez exécuter un grand fichier ou un ensemble de données à travers une fonction de hachage et ensuite utiliser ses résultats 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 : l'entrée aboutit toujours à une sortie compressée et simplifiée (le hash). Cette méthode élimine le besoin de stocker et de "mémoriser" de grands volumes de données.

Le hachage est particulièrement utile dans le contexte de la technologie blockchain. La blockchain Bitcoin a plusieurs opérations liées au hachage, dont la plupart sont effectuées dans le processus de minage. En fait, presque tous les protocoles de cryptomonnaie reposent sur le hachage pour lier et combiner des groupes de transactions en blocs et pour créer des liens cryptographiques entre chaque bloc, créant ainsi une chaîne de blocs.

Fonction de hachage cryptographique

Encore une fois, une fonction de hachage qui utilise des techniques cryptographiques peut être définie comme une fonction de hachage cryptographique. En général, déchiffrer une fonction de hachage cryptographique nécessite de nombreuses tentatives par force brute. Pour "déplier" une fonction de hachage cryptographique, il est nécessaire de sélectionner des entrées par essais et erreurs jusqu'à ce qu'une sortie appropriée soit obtenue. Cependant, il existe également la possibilité que différentes entrées produisent le même résultat, auquel cas une "collision" se produira.

Techniquement, une fonction de hachage cryptographique doit répondre à trois propriétés pour être considérée comme sécurisée. Nous pouvons les décrire comme : résistance aux collisions et résistance aux attaques de première et de seconde préimage.

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

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

  • Première résistance à l'image préliminaire : incapacité à "inverse" la fonction de hachage ( trouver l'entrée à partir d'une sortie donnée ).

  • Résistance à la seconde préimage : incapacité à 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 de hachage est alors considérée comme résistante aux collisions jusqu'à ce que quelqu'un découvre une telle collision. Notez que des collisions existeront toujours pour toute fonction de hachage en raison du nombre infini d'entrées et du nombre fini de sorties.

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

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

Résistance à la première image

Cette propriété est étroitement liée au concept de fonctions à sens unique. Une fonction de hachage est considérée comme forte pour trouver la première préimage tant qu'il y a une très faible probabilité 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 en fonction d'une sortie spécifique. Ce type de collision 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 première 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 divulguer des informations supplémentaires. En pratique, de nombreux fournisseurs de services web et applications stockent et utilisent des hashes générés à partir de mots de passe au lieu de les utiliser au format texte.

Résistance à la seconde préimage

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

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 de hachage qui est résistante aux collisions est également résistante aux attaques de seconde préimage, car cette dernière nécessite toujours une collision. Cependant, il est toujours possible d'effectuer une attaque de première préimage sur une fonction tolérante aux collisions, car cela implique de rechercher une entrée avec une sortie.

Minage

Il y a de nombreuses étapes dans le minage de Bitcoin qui sont effectuées en utilisant des fonctions de hachage. Celles-ci incluent la vérification du solde, le lien entre les entrées et les sorties de transaction, 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 Bitcoin est sécurisée est que les mineurs doivent effectuer autant d'opérations de hachage que possible pour finalement trouver la solution correcte pour le prochain bloc.

Un mineur doit utiliser plusieurs entrées différentes lors de la génération d'un hash pour son bloc candidat. Il sera possible de vérifier le bloc uniquement si la sortie générée correctement sous la forme d'un hash commence par un certain nombre de zéros. Le nombre de zéros détermine la difficulté de minage et varie en fonction du hashrate du réseau.

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

Notez que les mineurs n'ont pas besoin de chercher des collisions car il existe plusieurs hash qu'ils 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 besoin de trouver qu'une seule d'entre elles, selon un seuil déterminé par la difficulté de minage.

Puisque le minage de Bitcoin est une tâche coûteuse, les mineurs n'ont aucune raison de tricher le système, car cela entraînerait des pertes financières importantes. Par conséquent, plus il y a de mineurs qui rejoignent la blockchain, plus celle-ci deviendra grande et forte.

Conclusion

Il ne fait aucun doute que les fonctions de hachage sont l'un des principaux outils en informatique, en particulier lorsqu'il s'agit de travailler avec de grandes quantités de données. Lorsqu'elles sont combinées avec la cryptographie, les algorithmes de hachage peuvent être très utiles, car ils offrent sécurité et authentification de diverses manières. Par conséquent, les fonctions de hachage cryptographiques sont essentielles à presque tous les réseaux de cryptomonnaie, et comprendre leurs propriétés et mécanismes de fonctionnement est certainement utile pour quiconque s'intéresse à la technologie blockchain.

IN9.18%
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)