L'opération de hachage est le processus de génération d'une sortie de taille fixe à partir d'une entrée de taille variable. Ce processus est réalisé à travers une formule mathématique appelée « fonction de hachage » (mise en œuvre par un algorithme de hachage).
Toutes les fonctions de hachage n'impliquent pas l'utilisation de la cryptographie, mais les « fonctions de hachage cryptographiques » sont au cœur des cryptomonnaies. Grâce aux fonctions de hachage cryptographiques, l'intégrité et la sécurité des données dans les blockchain et autres systèmes distribués peuvent atteindre un niveau élevé.
Les fonctions de hachage traditionnelles et les fonctions de hachage cryptographiques sont à la fois déterministes. La déterminisme signifie que tant que l'entrée ne change pas, l'algorithme de hachage générera toujours la même sortie (également appelée « résumé » ou « valeur de hachage »).
En général, les algorithmes de hachage des cryptomonnaies sont conçus comme des fonctions unidirectionnelles, ce qui signifie qu'il est difficile de les inverser sans un temps et des ressources de calcul considérables. En d'autres termes, il est très facile de créer une sortie à partir d'une entrée, mais il est relativement difficile de générer une entrée à partir d'une sortie. En général, plus il est difficile de trouver une entrée, plus l'algorithme de hachage est sécurisé.
Comment fonctionnent les fonctions de hachage ?
Différentes fonctions de hachage génèrent des sorties de tailles variées, mais la taille de la sortie de chaque algorithme de hachage reste constante. Par exemple, l'algorithme SHA-256 ne peut générer qu'une sortie de 256 bits, tandis que SHA-1 génère toujours un résumé de 160 bits.
Pour illustrer cela, nous exécutons les mots « Binance » et « binance » à travers l'algorithme de hachage SHA-256 (l'algorithme utilisé dans Bitcoin).
Veuillez noter qu'un léger changement de casse dans les lettres produira des valeurs de hachage complètement différentes. Quelle que soit la longueur des valeurs d'entrée, la sortie de l'utilisation de SHA-256 reste toujours fixe à 256 bits (ou 64 caractères). De plus, peu importe combien de fois l'algorithme exécute ces deux mots, les sorties restent constantes.
En revanche, si nous exécutons la même entrée à travers l'algorithme de hachage SHA-1, nous obtenons les résultats suivants :
Veuillez noter que « SHA » est l'acronyme de l'algorithme de hachage sécurisé (Secure Hash Algorithms). Cet algorithme fait référence à un ensemble de fonctions de hachage cryptographiques, y compris les algorithmes SHA-0 et SHA-1, ainsi que les groupes SHA-2 et SHA-3. SHA-256 et SHA-512, ainsi que d'autres variantes, font partie du groupe SHA-2. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.
Quelle est l'importance des fonctions de hachage ?
Les fonctions de hachage traditionnelles ont de nombreux cas d'utilisation, y compris la recherche dans des bases de données, l'analyse de gros fichiers et la gestion des données. Les fonctions de hachage cryptographiques sont largement utilisées dans les applications de sécurité de l'information, telles que la vérification des messages et les empreintes numériques. En ce qui concerne le Bitcoin, les fonctions de hachage cryptographiques sont une partie essentielle du processus de minage, influençant la génération de nouvelles adresses et clés.
Les opérations de hachage révèlent leur véritable puissance lorsqu'il s'agit de traiter d'énormes quantités d'informations. Par exemple, en exécutant une fonction de hachage sur un gros fichier ou un ensemble de données, puis en utilisant sa sortie pour vérifier rapidement l'exactitude et l'intégrité des données. Les fonctions de hachage sont déterministes, ce qui les rend efficaces : une entrée génère toujours une sortie simplifiée compressée (c'est-à-dire une valeur de hachage). Cette technique élimine le besoin de stocker et de « mémoriser » une grande quantité de données.
Les opérations de hachage sont particulièrement utiles dans le domaine de la technologie blockchain. La blockchain Bitcoin comporte de nombreuses opérations impliquant des fonctions de hachage, dont la plupart se déroulent pendant le minage. En fait, presque tous les protocoles de cryptomonnaie s'appuient sur des opérations de hachage pour relier des groupes de transactions et les compresser dans des blocs, tout en générant des liens cryptographiques entre les blocs, créant ainsi efficacement une blockchain.
Fonction de hachage cryptographique
De même, les fonctions de hachage déployées avec des techniques cryptographiques peuvent être définies comme des fonctions de hachage cryptographiques. En général, le cassage d'une fonction de hachage cryptographique nécessite d'innombrables tentatives de force brute. Pour « inverser » une fonction de hachage cryptographique, vous devez deviner l'entrée par essai et erreur jusqu'à ce que vous produisiez la sortie correspondante. Cependant, différentes entrées peuvent également produire exactement la même sortie, ce qui entraîne un « conflit ».
Techniquement, une fonction de hachage cryptographique doit posséder trois propriétés pour garantir la sécurité. Les trois principales propriétés sont la résistance aux collisions, la résistance à la préimage et la résistance à la seconde préimage.
Avant de discuter chaque propriété séparément, faisons un bref résumé de la logique de chaque propriété.
Résistance aux collisions : Il est impossible que deux entrées différentes produisent la même sortie de valeur de hachage.
Résistance à la préimage : Il est impossible d'« inverser » une fonction de hachage (c'est-à-dire qu'il est impossible de trouver l'entrée à partir d'une sortie donnée).
Résistance à la seconde préimage : Il est impossible de trouver une autre entrée qui entre en conflit avec une entrée spécifique.
Résistance aux collisions
Comme mentionné précédemment, un conflit se produit lorsque différentes entrées génèrent exactement la même valeur de hachage. Par conséquent, tant que personne ne découvre de conflit, la fonction de hachage est considérée comme ayant une résistance aux collisions. Notez que, comme les entrées possibles sont infinies, tandis que les sorties possibles sont limitées, il y a toujours des conflits dans les fonctions de hachage.
Si la probabilité de découvrir un conflit est si basse qu'il faudrait des millions d'années de calcul, on peut dire que la fonction de hachage a une résistance aux collisions. Ainsi, bien qu'il n'existe pas de fonction de hachage sans conflit dans la réalité, tant que certaines d'entre elles (comme SHA-256) sont suffisamment puissantes, elles sont considérées comme ayant une résistance aux collisions.
Parmi les différents algorithmes SHA, les groupes SHA-0 et SHA-1 ont rencontré des conflits, donc ne sont plus sûrs. Actuellement, les groupes SHA-2 et SHA-3 sont considérés comme ayant une résistance aux collisions.
Résistance à la préimage
La propriété de résistance à la préimage est liée au concept de fonction unidirectionnelle. Si la probabilité de trouver une entrée qui génère une sortie spécifique est extrêmement faible, alors la fonction de hachage est considérée comme ayant une résistance à la préimage.
Veuillez noter que les attaquants examineront la sortie donnée pour deviner l'entrée, donc cette propriété est différente de la résistance aux collisions. De plus, deux entrées différentes générant la même sortie créeront un conflit, mais peu importe quelle entrée est utilisée.
La propriété de résistance à la préimage est précieuse pour la protection des données, car elle permet de prouver l'authenticité d'un message sans révéler d'informations ; la simple valeur de hachage du message suffit. Dans la pratique, de nombreux fournisseurs de services et applications web stockent et utilisent des valeurs de hachage générées par des mots de passe plutôt que les mots de passe en clair.
Résistance à la seconde préimage
En termes simples, la résistance à la seconde préimage se situe entre les deux propriétés mentionnées ci-dessus. Si quelqu'un peut trouver une entrée spécifique dont la sortie est identique à celle d'une autre entrée connue, alors une attaque de seconde préimage se produit.
En d'autres termes, une attaque de seconde préimage est liée à la découverte de conflits, mais elle ne concerne pas la recherche de deux entrées aléatoires générant la même valeur de hachage. Cela concerne plutôt la recherche d'une autre entrée générant la même valeur de hachage qu'une entrée spécifique déjà connue.
Les attaques de seconde préimage impliquent généralement des conflits. Par conséquent, toute fonction de hachage ayant une résistance aux collisions résistera également à une attaque de seconde préimage. Cependant, le fait qu'une fonction ait une résistance aux collisions signifie qu'elle peut déterminer une entrée unique à partir d'une sortie unique, donc un attaquant peut toujours tenter une attaque de préimage contre une fonction ayant une résistance aux collisions.
Minage de cryptomonnaie
Dans le minage de Bitcoin, plusieurs étapes utilisent des fonctions de hachage, comme vérifier les soldes, connecter les entrées et sorties des transactions, et hacher les transactions au sein d'un même bloc pour former un arbre de Merkle. Cependant, l'une des principales raisons pour lesquelles la blockchain Bitcoin est sécurisée est que les mineurs doivent effectuer d'innombrables opérations de hachage pour finalement trouver une solution valide au prochain bloc.
Plus précisément, les mineurs doivent essayer plusieurs entrées différentes lors de la création de la valeur de hachage du bloc candidat. Essentiellement, seules les valeurs de hachage produites qui commencent par un certain nombre de zéros permettront aux mineurs de valider le bloc. Le nombre de zéros détermine la difficulté du minage et change avec le taux de hachage dédié au réseau.
Dans ce cas, le taux de hachage représente la puissance de calcul consacrée au minage de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté du minage pour que le temps moyen de création de blocs reste proche de 10 minutes. En revanche, si plusieurs mineurs décident d'arrêter le minage, entraînant une forte baisse du taux de hachage, la difficulté du minage sera réduite jusqu'à ce que le temps moyen de création de blocs revienne à 10 minutes.
Veuillez noter que les mineurs peuvent générer plusieurs valeurs de hachage comme sorties valides (commençant par un certain nombre de zéros), donc ils n'ont pas besoin de rechercher des conflits. Un bloc a plusieurs solutions possibles, mais selon le seuil de difficulté du minage, les mineurs n'ont qu'à trouver l'une de ces solutions.
Le minage de Bitcoin est une tâche coûteuse, et il n'est pas nécessaire pour les mineurs de tromper le système, ce qui entraînerait plutôt des pertes économiques importantes. Plus il y a de mineurs qui rejoignent la blockchain, plus la blockchain est grande et robuste.
Résumé
Il ne fait aucun doute que les fonctions de hachage sont des outils essentiels en informatique, avec une capacité remarquable à traiter de vastes quantités de données. Combinés à la cryptographie, les algorithmes de hachage peuvent avoir de nombreuses applications, garantissant la sécurité et fournissant une authentification de diverses manières. Pour presque tous les réseaux de cryptomonnaie, les fonctions de hachage cryptographiques sont cruciales. Par conséquent, si vous êtes intéressé par la technologie blockchain, comprendre les propriétés et les mécanismes de fonctionnement des fonctions de hachage cryptographiques sera d'une grande aide.

