Le traitement de hachage fait référence au processus de génération d'une sortie de taille fixe à partir d'une entrée de taille différente. Cela se fait grâce à l'utilisation d'une formule mathématique connue sous le nom de fonction de hachage (implémentée sous la forme d'un  algorithme de hachage).

Bien que toutes les fonctions de hachage ne soient pas liées à l'utilisation de la cryptographie, celles connues sous le nom de fonctions de hachage cryptographique sont au cœur des crypto-monnaies. Grâce à cela, la blockchain et d'autres systèmes distribués sont capables d'atteindre des niveaux importants d'intégrité et de sécurité des données.

Les fonctions de hachage conventionnelles et les hachages cryptographiques sont identiques : déterministes. Être déterministe signifie que tant que l'entrée ne change pas, l'algorithme de hachage produira toujours la même sortie (autrement appelée résumé ou hachage).

En particulier, l’algorithme de hachage des crypto-monnaies est conçu comme une fonction à sens unique, ce qui signifie qu’il ne peut pas être facilement inversé sans un temps de calcul et des ressources énormes. En d’autres termes, il est très facile de produire un extrant à partir d’un intrant, mais relativement difficile de faire l’inverse (générer un intrant uniquement à partir d’un extrant). En général, plus il est difficile de trouver l’entrée, plus l’algorithme de hachage sera sécurisé.


Comment fonctionne une fonction de hachage ?

Différentes fonctions de hachage produiront des sorties de tailles différentes, mais la taille de sortie possible de chaque algorithme de hachage est toujours constante. Par exemple, l'algorithme SHA-256 ne produira qu'une sortie de 256 bits, tandis que SHA-1 produira toujours un résumé de 160 bits.

Pour illustrer cela, exécutons les mots « Binance » et « binance » via l'algorithme de hachage SHA-256 (celui utilisé dans Bitcoin).

SHA-265

Saisir

Sortie (256 bits)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

Binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Notez que de petits changements (taille de la première lettre) entraînent des valeurs de hachage très différentes. Mais comme nous utilisons SHA-256, la sortie aura 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 ces deux mots dans l’algorithme, les deux sorties seront toujours constantes.

En revanche, si nous exécutons les entrées via l'algorithme de hachage SHA-1, nous obtiendrons les résultats ci-dessous :

SHA-1

Saisir

Sortie (160 bits)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

Binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Plus précisément, l'acronyme SHA signifie Secure Hash Algorithms. Il fait référence à un ensemble de fonctions de hachage cryptographique qui inclut les algorithmes SHA-0 et SHA-1 ainsi que les groupes SHA-2 et SHA-3. SHA-256 fait partie du groupe SHA-2, avec SHA-512 et d'autres variantes. Actuellement, seuls les groupes SHA-2 et SHA-3 sont considérés comme sûrs.


Pourquoi est-ce important?

Les fonctions de hachage conventionnelles ont une grande variété de cas d'utilisation, notamment la recherche dans des bases de données, l'analyse de données volumineuses 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 une partie importante du processus de minage et contribuent à la génération de nouvelles adresses et clés.

La véritable puissance de hachage est visible lorsqu’il s’agit de très grandes quantités d’informations. Par exemple, on peut exécuter un fichier ou un ensemble de données volumineux via une fonction de hachage, puis utiliser le résultat pour vérifier rapidement l'exactitude et l'intégrité des données. Ceci est possible grâce à la nature déterministe des fonctions de hachage : l'entrée produit toujours une sortie simple et concise (hachage). Des techniques comme celle-ci éliminent le besoin de stocker et de « mémoriser » de très grandes quantités de données.

Le hachage est particulièrement utile dans la technologie blockchain. La blockchain Bitcoin comporte plusieurs processus impliquant le hachage, dont la plupart sont liés au processus de minage. En fait, presque tous les protocoles de crypto-monnaie s'appuient sur le hachage pour connecter des groupes compacts de transactions en blocs, ainsi que pour générer des liens cryptographiques entre des blocs individuels, créant ainsi une blockchain.


Fonctions de hachage cryptographique

Encore une fois, 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 tonne d’efforts de force brute. Si quelqu’un veut « inverser » une fonction de hachage cryptographique, il doit alors deviner quelle est l’entrée par essais et erreurs jusqu’à ce que la sortie appropriée soit produite. Cependant, il est également possible que différentes entrées produisent exactement le même résultat, donc dans ce cas, une « collision » se produit.

Techniquement, une fonction de hachage cryptographique doit respecter trois propriétés pour être considérée comme sécurisée et efficace. Nous pouvons les décrire comme la résistance aux collisions, la résistance à la pré-image et la résistance à la pré-image secondaire.

Avant de discuter de chaque trait, résumons cette logique en trois phrases courtes.

  • Résistance aux collisions : il n'est pas facile de trouver deux entrées différentes qui produisent le même hachage en sortie.

  • Résistance à la pré-image : il n'est pas facile d'"inverser" une fonction de hachage (trouver l'entrée à partir de la sortie disponible).

  • Résistance à la deuxième pré-image : il n'est pas facile de trouver une deuxième entrée qui entre en conflit avec l'entrée spécifiée.


Résistance aux collisions

Comme mentionné, une collision se produit lorsque différentes entrées produisent le même hachage. Ainsi, la fonction de hachage est considérée comme résistante aux collisions jusqu’à ce qu’une collision se produise. Veuillez noter que ces collisions existeront toujours pour toute fonction de hachage car les entrées possibles sont infinies, tandis que les sorties possibles sont limitées.

En d’autres termes, une fonction de hachage est dite anti-collision lorsque la probabilité de trouver une collision est très faible, car elle nécessite des millions d’années de calcul. Ainsi, malgré le fait qu'il n'existe pas de fonctions de hachage sans collision, certaines d'entre elles sont très puissantes et peuvent être considérées comme robustes (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é découvertes. Actuellement, les groupes SHA-2 et SHA-3 sont considérés comme résistants aux chocs.


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 aux pré-images lorsque la probabilité qu'une personne trouve une entrée résultant d'une sortie particulière est très faible.

Veuillez noter que cette propriété est différente de la précédente car l'attaquant tentera de deviner quelle est l'entrée en regardant la sortie disponible. En revanche, une collision se produit lorsqu'une personne rencontre deux entrées différentes qui produisent le même résultat, mais peu importe l'entrée utilisée.

La propriété de résistance à la pré-image est très utile pour protéger les données car un simple hachage d'un message peut prouver l'authenticité, sans avoir à révéler l'information. En pratique, de nombreux fournisseurs de services et applications Web stockent et utilisent les hachages de mots de passe résultants plutôt que les mots de passe en texte brut.


Deuxième aperçu de la résistance

En termes simples, on peut dire que cette deuxième résistance Préimage se situe entre les deux propriétés évoquées précédemment. La deuxième attaque de pré-image se produit lorsqu'une personne est capable de trouver une entrée particulière qui produit la même sortie qu'une autre sortie à partir d'une entrée différente déjà connue.

En d’autres termes, la deuxième attaque de pré-image consiste à trouver des collisions, mais au lieu de rechercher deux entrées aléatoires qui produisent le même hachage, elles recherchent des entrées qui produisent le même hachage produit 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. Cependant, on peut toujours effectuer une attaque par pré-image sur une fonction résistante aux collisions car cela signifie également 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 transactions d'entrée et de sortie 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 un grand nombre d'opérations de hachage pour finalement trouver la bonne solution pour le bloc suivant.

Plus précisément, un mineur doit essayer plusieurs entrées différentes lors de la génération de valeurs de hachage pour ses blocs candidats. Essentiellement, il ne peut valider son bloc que s'il produit un hachage de sortie commençant par un certain nombre de zéros. Le nombre de zéros détermine la difficulté du minage, et celui-ci varie en fonction du taux de hachage propre au réseau.

Dans ce cas, le taux de hachage représente la quantité d’énergie informatique utilisée pour le minage de Bitcoin. Si le taux de hachage du réseau augmente, le protocole Bitcoin ajustera automatiquement la difficulté de minage, de sorte que le temps moyen requis pour miner un bloc restant soit plus proche de 10 minutes. A l’inverse, si certains mineurs décident d’arrêter le minage, cela entraîne une diminution drastique du taux de hachage, la difficulté du minage s’ajustera, le rendant plus facile (jusqu’à ce que le temps de blocage moyen revienne à 10 minutes).

Veuillez comprendre que les mineurs n'ont pas à rencontrer de collisions car ils peuvent produire de nombreux hachages comme sortie valide (en commençant par un certain nombre de zéros). Il existe donc plusieurs solutions possibles pour un bloc particulier, et les mineurs n'ont qu'à trouver une seule solution en fonction du seuil déterminé par le niveau de difficulté du minage.

Étant donné que l’exploitation minière de Bitcoin est une entreprise coûteuse, les mineurs n’ont aucune raison de tromper le système, cela entraînerait des pertes financières importantes. Plus il y aura de mineurs rejoignant la blockchain, plus elle deviendra grande et forte.


Idée de clôture

Il ne fait aucun doute que les fonctions de hachage constituent un outil très important en informatique, notamment lorsqu’il s’agit de traiter de grandes quantités de données. Lorsqu’ils sont combinés à la cryptographie, les algorithmes de hachage peuvent être polyvalents, offrant sécurité et authenticité de diverses manières. Ainsi, les fonctions de hachage cryptographique sont essentielles à presque tous les réseaux de crypto-monnaie, donc comprendre leurs propriétés et leur fonctionnement est très utile pour toute personne intéressée par la technologie blockchain.