Le hachage est le processus de conversion d'une entrée de lettres et de caractères de taille non fixe pour produire une sortie de taille fixe. Ce processus est effectué à l'aide de formules mathématiques telles que des fonctions de hachage (implémentées sous forme d'algorithmes de hachage).
Bien que toutes les fonctions de hachage n'utilisent pas la cryptographie, les fonctions de hachage cryptographiques sont au cœur de la cryptomonnaie. Grâce à eux, la blockchain et d'autres systèmes distribués peuvent atteindre un haut niveau d'intégrité et de sécurité des données.
Les fonctions de hachage traditionnelles ainsi que les fonctions de hachage cryptographique sont déterministes. Le déterminisme signifie que, tant que l'entrée reste constante, l'algorithme de hachage donne toujours le même résultat (également appelé représentation ou hachage).
En règle générale, les algorithmes de hachage de crypto-monnaie sont conçus comme des fonctions de hachage unidirectionnelles, ce qui signifie qu'ils ne peuvent pas être reconvertis facilement sans consommer beaucoup de temps et de ressources de calcul. En d’autres termes, il est facile de créer une sortie à partir des données d’entrée, mais il n’est pas possible de transformer dans le sens opposé (pour retrouver les données d’entrée à partir uniquement du résultat de sortie). En général, plus il est difficile de retrouver les données d’entrée, plus l’algorithme de hachage est sécurisé.
Comment fonctionne la fonction de hachage ?
Différentes fonctions de hachage produiront des sorties de tailles différentes, mais la taille des sorties pouvant être obtenues est toujours fixe. Par exemple, l'algorithme SHA-256 ne peut produire que des sorties de 256 bits, tandis que l'algorithme SHA-1 produira toujours une représentation de 160 bits.
Pour illustrer, exécutons les mots « Binance » et « binance » via l'algorithme de hachage SHA-256 (l'algorithme utilisé dans Bitcoin).
On peut voir qu'un petit changement (mise en majuscule de la première lettre) entraîne une valeur de hachage complètement différente. Cependant, comme nous utilisons SHA-256, les sorties ont toujours une taille fixe de 256 bits (ou 64 caractères), quelle que soit la taille des données d'entrée. Ces deux sorties restent les mêmes quel que soit le nombre de fois que nous exécutons ces deux mots via cet algorithme.
À l’inverse, lorsque nous exécutons ces entrées via l’algorithme de hachage SHA-1, nous obtenons les résultats suivants :
SHA est l'acronyme de Secure Hash Algorithms. Il s'agit d'un ensemble de fonctions de hachage cryptographique, comprenant les fonctions de hachage SHA-0, SHA-1 et les groupes de fonctions de hachage SHA-2 et SHA-3. SHA-256, avec SHA-512 et d'autres fonctions de hachage, appartient au groupe de fonctions de hachage SHA-2. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme des groupes de fonctions de hachage sécurisés.
Quelle est l’importance de la fonction de hachage ?
Les fonctions de hachage traditionnelles ont de nombreux cas d'utilisation, notamment les recherches dans des bases de données, l'analyse de fichiers volumineux et la gestion des données. D’un autre côté, les fonctions de hachage cryptographique sont également largement utilisées dans les applications de sécurité de l’information, telles que l’authentification des messages et la prise d’empreintes numériques. Lorsqu'elles sont utilisées dans Bitcoin, les fonctions de hachage cryptographique constituent une partie essentielle du processus de minage et contribuent également à la génération de nouvelles adresses et clés.
Le hachage est véritablement un outil puissant lorsqu’il s’agit de traiter de grandes quantités d’informations. Par exemple, nous pouvons exécuter un fichier ou un ensemble de données volumineux via une fonction de hachage, puis utiliser le résultat de celui-ci 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 se traduira toujours par une sortie concise et simplifiée (hachage). Grâce à cette technique, il ne sera plus nécessaire de stocker et de « mémoriser » de grandes quantités d’informations.
Le hachage est un processus particulièrement utile dans la technologie blockchain. La blockchain Bitcoin comporte un certain nombre d’opérations qui utilisent le processus de hachage, dont la plupart ont lieu pendant le processus d’extraction. En fait, presque tous les protocoles de crypto-monnaie s'appuient sur le hachage pour lier et réduire des groupes de transactions en blocs et également pour créer des liens cryptographiques entre chaque bloc, créant ainsi une blockchain efficace à guichet unique.
Fonctions de hachage cryptographique
Encore une fois, une fonction de hachage qui implémente des techniques cryptographiques peut être définie comme une fonction de hachage cryptographique. En général, briser une fonction de hachage cryptographique nécessite des efforts de force brute. Pour qu’une personne puisse « récupérer » une fonction de hachage cryptographique, elle devrait deviner quelle était l’entrée par essais et erreurs jusqu’à ce que la sortie correspondante soit produite. Cependant, il est également possible que différents intrants produisent le même résultat, une situation connue sous le nom de « collision ».
Techniquement, une fonction de hachage cryptographique doit posséder les trois propriétés suivantes pour être considérée comme sécurisée. Ces trois attributs sont anti-conflit, anti-image et anti-seconde image.
Avant de parler de chaque attribut, résumons ces attributs.
Protection contre les collisions : deux entrées différentes ne peuvent pas produire le même hachage.
Anti-inversion d'image : le hachage ne peut pas être « récupéré » (l'entrée ne peut pas être déterminée en fonction de la sortie).
Inversion d'image anti-seconde : impossible de trouver une deuxième entrée en conflit avec une entrée donnée.
Anti-conflit
Comme décrit, les collisions se produisent lorsque différentes entrées produisent le même code de hachage. Par conséquent, une fonction de hachage est considérée comme à l’épreuve des collisions jusqu’à ce que quelqu’un trouve une collision. Notez que les collisions existeront toujours dans n'importe quelle fonction de hachage, car les entrées sont infinies, tandis que les sorties possibles sont finies.
En d’autres termes, une fonction de hachage est considérée comme à l’épreuve des collisions lorsque la probabilité de trouver une collision est très faible et que cela peut prendre des millions d’années de calcul pour trouver une collision. Par conséquent, même si aucune fonction de hachage n’est totalement exempte de collision, certaines fonctions sont suffisamment puissantes pour être considérées comme résistantes aux collisions (par exemple, SHA-256).
Parmi les nombreux algorithmes SHA, les groupes SHA-0 et SHA-1 ne sont plus sécurisés car des conflits ont été trouvés dans ce groupe. Actuellement, les groupes SHA-2 et SHA-3 sont considérés comme à l'épreuve des conflits.
Empêcher la manipulation d'images
La propriété anti-image est liée à la notion de fonctions unidimensionnelles. Une fonction de hachage est considérée comme anti-inverse lorsque la probabilité de trouver les données d'entrée d'une certaine sortie est très faible.
Cet attribut est différent du premier attribut, l'attaquant utilisera cet attribut pour tenter de deviner les données d'entrée en fonction du résultat de sortie connu. Pendant ce temps, une collision se produit lorsque deux données d’entrée différentes produisent le même résultat, mais peu importe les données d’entrée utilisées.
La propriété anti-image est importante pour la protection des données, car seul le hachage d'un message est nécessaire pour prouver son authenticité, sans révéler l'information. En fait, de nombreuses applications Web et fournisseurs de services stockent et utilisent les mots de passe sous forme de hachage plutôt que de texte brut.
Anti-inversion de la deuxième image
En termes simples, la deuxième anti-image se situe entre les deux premiers attributs. La deuxième attaque par inversion d'image se produit lorsqu'une personne trouve une entrée particulière qui produit une sortie identique à la sortie d'une autre entrée qu'elle connaît déjà.
En d’autres termes, la deuxième attaque de pré-image consiste à trouver une collision, mais au lieu de trouver deux entrées aléatoires produisant le même hachage, ils recherchent une entrée produisant le même hachage avec le hachage d’une entrée qu’ils connaissent déjà.
Par conséquent, toute fonction de hachage qui évite les collisions évite également les attaques par inversion de seconde image, car l’inversion de seconde image signifie également que des collisions se produiront. Cependant, il est toujours possible d'effectuer une attaque par inversion sur une fonction anti-image, car cela signifie trouver une entrée unique basée sur une sortie unique.
Creuser
Dans Bitcoin, de nombreuses étapes utilisent les fonctions de hachage minier, telles que la vérification des soldes, la liaison des entrées et des sorties de transactions et le hachage des transactions dans un bloc pour former un arbre Merkle. Mais l’une des raisons pour lesquelles la blockchain Bitcoin est sécurisée est que les mineurs doivent créer d’innombrables hachages pour finalement trouver une solution valide pour le bloc suivant.
Plus précisément, un mineur doit essayer un certain nombre d'entrées différentes lors de la génération d'un hachage pour son bloc potentiel. Essentiellement, les mineurs ne peuvent valider leur bloc que s'ils génèrent un hachage de sortie commençant par quelques zéros. Le nombre de zéros détermine la difficulté du minage, et la difficulté varie en fonction du taux de hachage du réseau.
Dans ce cas, le taux de hachage représente la quantité de puissance de calcul utilisée pour extraire du Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté du minage afin que le temps moyen nécessaire pour miner un bloc reste à 10 minutes. À l’inverse, si certains mineurs arrêtent de miner, entraînant une diminution significative du taux de hachage, alors la difficulté du minage sera ajustée, rendant le minage plus facile (jusqu’à ce que le temps moyen pour miner un bloc revienne à 10 minutes).
Notez que les mineurs n'ont pas besoin de trouver des collisions car ils peuvent produire de nombreux hachages comme sorties valides (en commençant par un certain nombre de zéros). Il existe donc plusieurs solutions pour miner un bloc particulier, et les mineurs n'ont besoin d'en trouver qu'une seule - selon un seuil déterminé par la difficulté du minage.
Le minage de Bitcoin étant 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 blockchain, plus cette blockchain devient forte.
Conclure
On peut affirmer que les fonctions de hachage sont des outils essentiels en informatique, notamment lorsqu’il s’agit de traiter d’énormes volumes de données. Lorsqu’ils sont combinés à la cryptographie, les algorithmes de hachage peuvent être utilisés de manière flexible, assurant ainsi la sécurité et l’authentification de diverses manières. Pour cette raison, les fonctions de hachage cryptographique sont essentielles à la plupart des réseaux de crypto-monnaie, donc comprendre leurs propriétés et leurs mécanismes de fonctionnement sera certainement bénéfique pour ceux qui s'intéressent à la technologie blockchain.

