Les fonctions de hachage conventionnelles et cryptographiques sont déterministes. Cela signifie que tant que l'entrée ne change pas, l'algorithme de hachage produira toujours la même sortie (aussi connue sous le nom de hachage ou d'empreinte).
En général, les algorithmes de hachage des crypto-monnaies sont conçus comme des fonctions à sens unique, ce qui signifie qu'ils ne peuvent être facilement révoqués sans de grandes quantités de temps et de ressources informatiques. En d'autres termes, il est assez facile de créer une sortie à partir d'une entrée, mais relativement difficile d'aller dans la direction opposée (pour générer l'entrée à partir de la sortie seule). Globalement, plus il est difficile de trouver l'entrée, plus l'algorithme de hachage est considéré comme sûr.
Comment fonctionne une fonction de hachage ?
Différentes fonctions de hachage produiront des sorties de tailles différentes, mais les tailles de sortie possibles propres à chaque algorithme de hachage sont toujours constantes. Par exemple, l'algorithme SHA-256 ne peut produire que des sorties de 256 bits, tandis que le SHA-1 génèrera toujours une empreinte de 160 bits.
Pour illustrer, appliquons une fonction de hachage SHA-256 (utilisé pour Bitcoin) aux mots Binance et binance.
SHA-256 | |
Entrée | Sortie (256 bits) |
Binance | f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191 |
binance | 59bba357145ca539dcd1ac957abc1ec58339ddcae7f5e8b5da0c36624784b2 |
Notez comme un changement mineur (ici la casse de la première lettre) a entraîné une valeur de hachage totalement différente. Puisque 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 le nombre de fois que l'on applique cet algorithme à ces mots en particulier, les deux sorties seront toujours les mêmes.
Par contre, si nous utilisons les mêmes entrées à travers l'algorithme de hachage SHA-1, on obtiendrait les résultats suivant:
SHA-1 | |
Entrée | Sortie (160 bits) |
Binance | 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1 |
binance | e58605c14a76ff98679322cca0eae7b3c4e08936 |
L'acronyme SHA signifie Secure Hash Algorithms, pour algorithmes de hachage sécurisés. Cela réfère à un set de fonctions cryptographiques qui incluent 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 les SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.
Pourquoi sont-ils importants?
La véritable puissance du hachage se révèle lorsqu'il s'agit de traiter d'énormes quantités d'informations. Par exemple, on peut exécuter un fichier ou un set de données à travers une fonction de hachage et ensuite utiliser sa sortie pour vérifier rapidement l'exactitude et l'intégrité des données. Ceci est possible en raison de la nature déterministe des fonctions de hachage : l'entrée entraînera toujours une sortie simplifiée et condensée (hachage). Une telle technique supprime la nécessité de stocker et de se souvenirde grandes quantités de données.
Le hachage est particulièrement utile dans le contexte de la technologie de la blockchain. La blockchain Bitcoin a plusieurs opérations qui impliquent du hachage, la plupart intervenant dans le processus de minage. En fait, presque tous les protocoles de crypto-monnaie dépendent du hachage pour relier et condenser les groupes de transactions en blocs, ainsi que pour produire des liens cryptographiques entre chaque bloc pour finalement créer une blockchain, une chaîne de blocs.
Fonctions de hachage cryptographique
Une fonction de hachage qui déploie des techniques de cryptographie peut être définie comme une fonction de hachage cryptographique. En général, la rupture d'une fonction de hachage cryptographique nécessite une myriade de tentatives de force brute. Pour qu'un individu arrive à inverser une fonction de hachage cryptographique, il aurait besoin de deviner quelle était l'entrée au travers de nombreuses tentatives et d'échecs jusqu'à produire la bonne sortie. Cependant, il existe aussi une possibilité de différentes entrées produisant l'exacte même sortie, dans ce cas une collusion 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 celle-ci comme: une résistance à la collision, une résistance à la préimage et une résistance à la seconde préimage.
Avant de discuter de chaque propriété, résumons leur logique en trois phrases courtes.
Résistance à la collision : il est infaisable de trouver deux entrées distinctes qui produisent le même hachage en tant que sortie.
Résistance de la préimage :il est impossible d'inverser la fonction de hachage (trouver l'entrée à partir d'une sortie donnée).
Résistance de la seconde préimage: il est impossible de trouver une seconde entrée qui entre en collision avec une entrée spécifiée.
Résistance à la collision
Comme mentionné, une collision se produit lorsque des entrées différentes produisent l'exact même hachage. Ainsi, une fonction de hachage est considérée comme résistante à la collision jusqu'à ce que quelqu'un trouve une collision. Notez que les collisions existeront toujours pour n'importe quelle fonction de hachage car les entrées possibles sont infinies, tandis que les sorties possibles sont finies.
En d'autres termes, une fonction de hachage est résistante à la collision lorsque la possibilité de trouver une collision est si faible qu'elle nécessiterait des millions d'années de calcul. Alors, bien qu'il n'y ait pas de fonction de hachage sans collision, certaines d'entre elles sont assez fortes pour être considérées comme résistantes (par exemple SHA-256).
Résistance à la préimage
La propriété de la résistance à la préimage est liée au concept de fonctions à sens unique. Une fonction de hachage est considérée comme résistante à l'image lorsqu'il y a une probabilité très faible de trouver l'entrée qui a généré une sortie particulière.
Notez que cette propriété est différente de la précédente, car ici un attaquant hypothétique essayerait de deviner l'entrée en regardant une sortie donnée. Une collision, par contre, se produit lorsque quelqu'un trouve deux entrées différentes qui génèrent la même sortie, mais il n'y pas d'importance spécifique quand à l'entrée qui a été utilisée.
La propriété de résistance à la préimage est précieuse pour protéger les données parce que le simple hachage d'un message peut prouver son authenticité, sans avoir à en divulguer le contenu. En pratique, de nombreux fournisseurs de services et applications Web stockent et utilisent des hachages générés à partir de mots de passe plutôt que des 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 quelque part entre les deux autres propriétés. Une attaque de seconde préimage se produit lorsque quelqu'un est en mesure de trouver une entrée spécifique qui génère la même sortie qu'une autre entrée qu'il connaît déjà.
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 hachage, on cherche une entrée qui génère le même hachage qu'une autre entrée spécifique.
Par conséquent, toute fonction de hachage résistante aux collisions est également résistante aux attaques de seconde préimage, car celles-ci impliqueront toujours une collision. Cependant, on peut toujours effectuer une attaque de préimage sur une fonction résistante à la collision, car elle implique de trouver une seule entrée à partir d'une seule sortie.
Minage
Dans ce cas, le taux de hachage représente le montant d'énergie informatique investie dans le minage de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté de miange afin que le temps moyen nécessaire pour miner un bloc reste proche de 10 minutes. Par contre, si plusieurs mineurs décident d'arrêter de miner, en entraînant une baisse significative du taux de hachage, la difficulté de minage sera ajustée, ce qui facilitera le minage (jusqu'à ce que le temps de bloc moyen soit ramené à 10 minutes).
Notez que les mineurs n'ont pas besoin de chercher d'éventuelles collisions parce qu'il existe de multiples hachages qu'ils peuvent générer en tant que sortie valide (commençant avec un nombre de zéros spécifique). Il y a donc plusieurs solutions possibles pour un certain bloc, et les mineurs doivent en trouver une - selon le seuil déterminé par la difficulté minière.
Étant donné que le minage de Bitcoin est une tâche à impliquant des coûts élevés, les mineurs n'ont aucune raison de tricher au sein du système car cela entraînerait des pertes financières importantes. Plus il y a de mineurs dans une blockchain, et donc plus elle grossit, et plus elle devient solide.
Pour conclure
Il ne fait aucun doute que les fonctions de hachage sont des outils essentiels en informatique, surtout lorsqu'il s'agit de traiter des quantités énormes de données. En combinaison avec la cryptographie, les algorithmes de hachage peuvent être assez polyvalents, en particulier pour la sécurité et l'authentification, et ce de plusieurs façons. Ainsi, les fonctions de hachage cryptographique sont vitales pour presque tous les réseaux de crypto-monnaie, de sorte que la compréhension de leurs propriétés et mécanismes de travail est certainement utile pour toute personne intéressée par la technologie de la blockchain.