Le hachage fait référence au processus de génération d'une sortie de taille fixe à partir d'une entrée de taille variable. Cela se fait grâce à l'utilisation de formules mathématiques appelées fonctions de hachage (implémentées sous forme d'algorithmes de hachage).
Bien que toutes les fonctions de hachage n'impliquent pas l'utilisation de la cryptographie, les fonctions de hachage cryptographiques sont au cœur des crypto-monnaies. Grâce à eux, les blockchains et autres systèmes distribués sont capables d'atteindre des niveaux significatifs d'intégrité et de sécurité des données.
Les fonctions de hachage conventionnelles et cryptographiques sont déterministes. Être déterministe signifie que tant que l'entrée ne change pas, l'algorithme de hachage produira toujours le même résultat (également appelé résumé ou hachage).
En règle générale, les algorithmes de hachage des crypto-monnaies sont conçus comme des fonctions unidirectionnelles, ce qui signifie qu’ils ne peuvent pas être facilement annulés sans une grande quantité de temps et de ressources de calcul. En d’autres termes, il est assez simple de créer la sortie à partir de l’entrée, mais relativement difficile d’aller dans la direction opposée (générer l’entrée à partir de la seule sortie). D’une manière générale, plus il est difficile de retrouver l’entrée, plus l’algorithme de hachage est considéré comme sécurisé.
Comment fonctionne une fonction de hachage ?
Différentes fonctions de hachage produiront des sorties de tailles différentes, 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 sorties de 256 bits, tandis que le SHA-1 générera toujours un résumé de 160 bits.
Pour illustrer, exécutons les mots « Binance » et « binance » via l’algorithme de hachage SHA-256 (celui utilisé dans Bitcoin).
Notez qu'un changement mineur (la casse de la première lettre) a entraîné une valeur de hachage totalement différente. Mais puisque nous utilisons SHA-256, les sorties auront toujours une taille fixe de 256 bits (ou 64 caractères), quelle que soit la taille de l'entrée. De plus, peu importe le nombre de fois que nous exécutons les deux mots dans l’algorithme, les deux sorties resteront constantes.
À l’inverse, si nous exécutons les mêmes entrées via l’algorithme de hachage SHA-1, nous aurions les résultats suivants :
Notamment, l’acronyme SHA signifie Secure Hash Algorithms. Il fait référence à un ensemble de fonctions de hachage cryptographique 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 le SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sécurisés.
Pourquoi sont-ils importants ?
Les fonctions de hachage conventionnelles ont un large éventail de cas d'utilisation, notamment les recherches dans des bases de données, les analyses de fichiers volumineux 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 les empreintes digitales numériques. Lorsqu'il s'agit de Bitcoin, les fonctions de hachage cryptographique constituent un élément essentiel du processus de minage et jouent également un rôle dans la génération de nouvelles adresses et clés.
Le véritable pouvoir du hachage réside dans le traitement d’énormes quantités d’informations. Par exemple, on peut exécuter un gros fichier ou un ensemble de données via une fonction de hachage, puis 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 se traduira toujours par une sortie simplifiée et condensée (hachage). Une telle technique supprime le besoin de stocker et de « mémoriser » de grandes quantités de données.
Le hachage est particulièrement utile dans le contexte de la technologie blockchain. La blockchain Bitcoin comporte plusieurs opérations qui impliquent le hachage, la plupart dans le cadre du processus de minage. En fait, presque tous les protocoles de cryptomonnaie s’appuient sur le hachage pour relier et condenser des groupes de transactions en blocs, mais aussi pour produire des liens cryptographiques entre chaque bloc, créant ainsi une blockchain.
Fonctions de hachage cryptographique
Là encore, une fonction de hachage qui déploie 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 une myriade de tentatives de force brute. Pour qu’une personne puisse « annuler » une fonction de hachage cryptographique, elle devra deviner quelle était l’entrée par essais et erreurs jusqu’à ce que la sortie correspondante soit produite. Cependant, il existe également la possibilité que différentes entrées produisent exactement le même résultat, auquel cas une « collision » se produit.
Techniquement, une fonction de hachage cryptographique doit respecter trois propriétés pour être considérée comme efficacement sécurisée. Nous pouvons les décrire comme la résistance aux collisions, la résistance à la pré-image et la résistance à la seconde pré-image.
Avant de discuter de chaque propriété, résumons leur logique en trois phrases courtes.
Résistance aux collisions : il est impossible de trouver deux entrées distinctes produisant le même hachage en sortie.
Résistance à la pré-image : impossible de « inverser » la fonction de hachage (trouver l'entrée à partir d'une sortie donnée).
Résistance à la deuxième pré-image : impossible de trouver une deuxième entrée entrant en collision avec une entrée spécifiée.
Résistance aux collisions
Comme mentionné, une collision se produit lorsque différentes entrées produisent exactement le même hachage. Ainsi, une fonction de hachage est considérée comme résistante aux collisions jusqu'au moment où quelqu'un trouve une collision. Notez que des collisions existeront toujours pour toute 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 aux collisions lorsque la possibilité de trouver une collision est si faible qu’elle nécessiterait des millions d’années de calculs. Ainsi, même s’il n’existe pas de fonctions de hachage sans collision, certaines d’entre elles sont suffisamment puissantes pour être considérées comme résistantes (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é trouvées. Actuellement, les groupes SHA-2 et SHA-3 sont considérés comme résistants aux collisions.
Résistance à la pré-image
La propriété de résistance pré-image est liée au concept de fonctions unidirectionnelles. Une fonction de hachage est considérée comme résistante à la pré-image lorsqu'il existe une très faible probabilité que quelqu'un trouve 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 un attaquant tenterait de deviner quelle était l'entrée en regardant une sortie donnée. En revanche, une collision se produit lorsque quelqu’un trouve deux entrées différentes qui génèrent le même résultat, mais peu importe quelles entrées ont été utilisées.
La propriété de résistance à la pré-image est précieuse pour la protection des données car un simple hachage d'un message peut prouver son authenticité, sans qu'il soit nécessaire de divulguer l'information. 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 brut.
Résistance à la deuxième 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 lorsqu'une personne est capable de trouver une entrée spécifique qui génère la même sortie qu'une autre entrée qu'elle connaît déjà.
En d’autres termes, une attaque de seconde pré-image implique de trouver une collision, mais au lieu de rechercher deux entrées aléatoires générant le même hachage, elle recherche une entrée qui génère le même hachage que celui généré par 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 ces dernières impliqueront toujours une collision. Cependant, on peut toujours effectuer une attaque par pré-image sur une fonction résistante aux collisions car cela implique de trouver une seule entrée à partir d'une seule sortie.
Exploitation minière
Le minage de Bitcoin comporte de nombreuses étapes qui impliquent des fonctions de hachage, telles que la vérification des soldes, la liaison des entrées et des sorties de transactions et le hachage des transactions au sein d'un bloc pour former un arbre Merkle. Mais l'une des principales raisons pour lesquelles la blockchain Bitcoin est sécurisée est le fait que les mineurs doivent effectuer une myriade d'opérations de hachage afin de finalement trouver une solution valable pour le bloc suivant.
Plus précisément, un mineur doit essayer plusieurs entrées différentes lors de la création d'une valeur de hachage pour son bloc candidat. Essentiellement, ils ne pourront valider leur bloc que s’ils génèrent un hachage de sortie commençant par un certain nombre de zéros. Le nombre de zéros est ce qui détermine la difficulté du minage, et il varie en fonction du taux de hachage consacré au réseau.
Dans ce cas, le taux de hachage représente la quantité de puissance informatique investie dans le minage de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté de minage afin que le temps moyen nécessaire pour miner un bloc reste proche de 10 minutes. En revanche, si plusieurs mineurs décident d'arrêter le minage, entraînant une baisse significative du taux de hachage, la difficulté du minage sera ajustée, rendant le minage plus facile (jusqu'à ce que le temps de blocage moyen revienne à 10 minutes).
Notez que les mineurs n'ont pas besoin de trouver de collisions car ils peuvent générer plusieurs hachages comme sortie valide (en commençant par un certain nombre de zéros). Il existe donc plusieurs solutions possibles pour un bloc donné, et les mineurs n'ont qu'à en trouver une - en fonction du seuil déterminé par la difficulté de 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 les mineurs rejoignent une blockchain, plus elle devient grande et forte.
Pensées finales
Il ne fait aucun doute que les fonctions de hachage sont des outils essentiels en informatique, notamment lorsqu’il s’agit de traiter d’énormes quantités de données. Lorsqu’ils sont combinés à la cryptographie, les algorithmes de hachage peuvent être très polyvalents, offrant sécurité et authentification de différentes manières. En tant que telles, les fonctions de hachage cryptographique sont vitales pour presque tous les réseaux de crypto-monnaies. Comprendre leurs propriétés et leurs mécanismes de fonctionnement est donc certainement utile pour toute personne intéressée par la technologie blockchain.

