Le hachage, ou hash functions en anglais, est une fonction ou un algorithme mathématique qui produit un résultat unique appelé empreinte ou signature (un hash). Le hachage est un outil indispensable dans tous les procédés cryptographiques. Il est apparu en informatique au cours des années 1950/1960 dans le but de réduire la taille des fichiers et désormais fortement utilisé dans la blockchain.
L’objectif principal de ces fonctions est de sécuriser un transfert de données ou d’information entre deux systèmes qui à priori n’ont rien pour sécuriser l’échange. Il existe de nombreuses fonctions de hachage. Parmi les plus connues, la fonction SHA-256 est celle qui permet au Bitcoin de sécuriser complètement les échanges.
Lire Plus : Qu’est-ce que la cryptographie ?
Comment fonctionne le hachage (hash) ?
Le hachage (hash) est en réalité un processus automatisé qui peut être assimilé aux messages codés envoyés pendant la guerre. En théorie, il suffirait donc d’ajouter, de décaler, ou encore de transformer les caractères d’un message pour en obtenir un code complètement différent et unique.
Le hachage permet de générer un code de taille fixe, à partir d’une entrée de taille complètement variable.
Que la longueur de la chaîne soit de 5 lettres ou de 500 mots, elle renverra toujours un résultat de taille unique.
Les fonctions de hachage (hash) ont toutes les mêmes propriétés. Elles sont :
- Déterministes : une fois passé dans la moulinette de la fonction, le résultat du message doit être invariable en toute circonstance : moment, lieux, répétition, …
- Résistantes : Le résultat de la fonction ne doit pas permettre de remonter au message initial.
- Distinctes : Le résultat de la fonction pour deux messages très similaires doit être très différent et facilement identifiable.
- Uniques : deux messages différents ne peuvent pas ressortir avec le même résultat.
- Efficaces : le résultat obtenu doit être immédiat.
L’intérêt du hachage (hash) est donc d’uniformiser les contenus en un nombre de caractères identiques et d’identifier les données de manière unique d’un message à l’autre.
Exemple de hash avec 2 fonctions
La fonction SHA256 est utilisée pour miner du bitcoin. La longueur de la réponse est de 64 caractères.
On remarque donc aisément que l’ensemble des propriétés sont respectées et que le résultat est complétement différent selon le message initial.
Message d’entrée | Résultat avec la fonction SHA-256 |
Start in Blockchain | 311e8e15a417cdf8df16d70979eb8a7ec45c4eb6ac06cef683d87b75a2823ab3 |
start in blockchain | 2cce54c9d545983d04a903b4b94fd05ead15668a820aba1d5d5b1a12936b663b |
Comme vous le voyez, transformer les majuscules en minuscules a généré un hash totalement différent ! Si on décide de hasher une phrase plus longue, on aperçoit qu’il y a toujours le même nombre de caractères.
Suivez Start in Blockchain sur les réseaux ! | 9eb5e445d23f5f78ef2b69a5817a6aeb34c8ff08cda4458b03f33ea2344ce2e5 |
Et le hash dans la production de cryptomonnaies
Prenons un exemple concret pour commencer. Pour le bitcoin, le hash obtenu après insertion dans la fonction SHA 256 permet de valider les transactions par la méthode de la preuve de travail. Pour ce faire, les mineurs vont ajouter une chaîne de caractères dans le message que l’on appelle : un nonce. Ce nonce, choisi de manière aléatoire, permet de trouver la solution au problème mathématique et peut être plus ou moins difficile à trouver. C’est ce qu’on appelle alors la preuve de travail.
Lire plus : Proof of Work VS Proof of Stake : quelle différence ?
L’intérêt du hachage
Le hachage (hash) permet donc de sécuriser les transactions passées, en cours et à venir mais surtout de ne pas les modifier à postériori. Dès lors qu’une modification est effectuée sur le réseau, il sera nécessaire de modifier l’ensemble des blocs précédents et leur hash associé. Si une modification a été faite sur le réseau, le hash généré sera différent du vôtre. Il vous suffira de comparer votre hash et celui du réseau pour ne pas être d’accord et ne pas valider une transaction !
Par ailleurs, le hash est un des éléments essentiels dans la constitution d’un arbre de Merkel. Il est possible pour quelques cryptomonnaies de mixer plusieurs fonctions de hachage ayant des propriétés différentes : longueur de chaîne, être hexadécimal, etc.
Le hachage (hash) est l’élément principal et nécessaire au bon fonctionnement des cryptomonnaies. Chaque bloc de la blockchain contient le hash de l’intégralité de la chaîne avant ce bloc. Il permet donc de lier les différents blocs pour former la blockchain, et est détenu par l’intégralité des membres du réseau.