Tout savoir sur le hachage

08/2023
6 min de lecture
Team Paymium
L'équipe de rédaction

Le hachage : définition, propriétés et intérêt pour la blockchain

Le hachage est aujourd'hui utilisé par tous, mais reste méconnu du grand public. Indispensables dans le domaine de la sécurité informatique, les fonctions de hachage garantissent l'intégrité des transferts ainsi que le stockage des informations nécessitant un haut niveau de protection. Elles sont utilisées pour l'authentification d'un utilisateur ou la signature électronique. Essentielles dans le domaine des cryptomonnaies pour éviter les malversations, elles garantissent aux blockchains un haut niveau de sécurité. Mais qu'est-ce que le hachage ? Retour sur l'historique et les faiblesses des systèmes précédents, les critères indispensables à une bonne fonction de hachage et son intérêt pour la blockchain. Un point complet dans cet article.

Qu'est-ce que le hachage ?

Le hachage est un processus informatique et mathématique qui permet de compresser la taille des données à traiter grâce à la fonction de cryptage. Associé à des fonctions mathématiques, qui sont les « fonctions de hachage », il permet de générer, à partir d'une entrée de taille variable, un résultat de taille fixe, quelle que soit la longueur de la chaîne. L'input , qui peut être un texte, est transformé, avec la fonction hachage, en chaînes de caractères alphanumériques, dont la longueur et la structure sont fixes. La valeur obtenue, l'output, est appelée selon le contexte, valeur de hachage, somme de contrôle, résumé de message, hash ou encore empreinte. La fonction modulo n, qui consiste à ordonner un grand nombre de données dans un tableau de n cases, est un exemple classique. Si l'élément i est rangé dans la case n° (i modulo n), il ne sera plus nécessaire de parcourir tous les éléments pour retrouver l'élément i, mais juste de parcourir les éléments de la case n° (i modulo n) et gagner beaucoup de temps. Il existe plusieurs fonctions de hachage, répondant à une succession d'opérations mathématiques différentes, donnant lieu à des empreintes distinctes, plus ou moins efficaces en termes de niveau de sécurité.

Evolution des fonctions de hachage cryptographiques : du MD4 au SH3

Le précurseur de la fonction de hachage est Donald Rivest, professeur au MIT et cryptographe, qui a inventé, au début des années 1990, la fonction de hachage MD4 (Message Digest 4) pour assurer la sécurité des données lors des transmissions électroniques, puis le MD5. S'inspirant de ces fonctions de hachage, la NSA (National Security Agency) a mis au point en 1995 un algorithme générant une chaîne de longueur fixe de 160 bits pour toute donnée en entrée, nommée SHA-1 (Secure Hash Algorithm 1). Le SHA-1 a été utilisé pendant de nombreuses années, notamment pour le hachage des mots de passe et leur stockage. À chaque nouvelle connexion, le mot de passe est haché et comparé à celui qui a été stocké "l'empreinte numérique". La découverte de collisions successives, issues de deux messages différents produisant le même hachage, a conduit à l'abandon progressif du SHA-1. La mise en cause de l'algorithme était préoccupante pour toutes les signatures électroniques et les transactions financières. Dès 2015, Google annonce que les certificats HTTPS utilisant le SHA-1 seront bloqués. La fin de l'utilisation du SHA-1 est définitive avec Microsoft qui le retire de tous ses produits en 2020. Le SHA-2 et le SHA-3 sont des algorithmes de hachage plus sécurisés, grâce à des tailles de sortie de 224, 256, 324 et 512 bits et d'un processus plus complexe. Le SHA-256 est à la base de la fondation de l'algorithme du bitcoin.

Les vulnérabilités du SHA-1 face à la sécurité informatique

La résistance à la collision mise en cause

Malgré les 160 bits de longueur du SHA-1 produisant un nombre important d'empreintes numériques différentes et garantissant une sécurité maximum, une première collision a été mise en évidence par des chercheurs chinois en 2005. Elle se produit lorsque, lors d'une attaque, deux messages différents peuvent produire le même résultat, ce qui peut permettre à un cybercriminel de se faire passer pour une personne ou une entité de confiance. Dès lors, le SHA-1 n'apporte plus les garanties de sécurité suffisantes pour être utilisé dans les systèmes critiques. C'est un tournant dans l'histoire de la cryptographie.

Une résistance limitée aux attaques par force brute

Une attaque par force brute vise à tester diverses combinaisons pour cracker un mot de passe, un nom d'utilisateur ou une page web cachée. L'automatisation des outils permet à un cybercriminel de rapidement enchaîner les tentatives de connexion en testant différentes combinaisons pour trouver une correspondance et accéder aux informations d'identification.

Les critères des fonctions de hachage

Les fonctions de hachage doivent répondre à un certain nombre de caractéristiques, pour remplir leur mission et faire face à l'avancée technologique. Le résultat obtenu doit être :

  • efficace et immédiat, pour éviter au maximum le ralentissement du système.
  • déterministe : à chaque input entré, il doit être invariable en toutes circonstances, quel que soit le moment, le nombre de fois ou la personne
  • il doit résister à la préimage : pour une valeur de sortie spécifiée, il est impossible de trouver la valeur d'entrée qui a produit cette valeur, sauf à essayer une par une toutes les possibilités, ce qui est impossible ;
  • il doit résister à la collision : deux entrées distinctes ne peuvent avoir une valeur de hachage identique ;
  • il doit être facilement différencié : deux entrées très similaires doivent avoir des empreintes différentes, facilement différenciables.

L'intérêt du hachage dans la fonction blockchain

De nombreuses applications ont recours aux algorithmes de hachage, notamment cryptographiques, pour un besoin d'uniformisation de la longueur des contenus ou d'identification. Elles sont utilisées pour l'identification des mots de passe, la recherche d'informations dans les bases de données ou l'analyse de fichiers volumineux, mais aussi pour la génération de signatures électroniques. En cryptographie, les contraintes sont plus strictes, en raison notamment de la taille des empreintes nécessaires. Les fonctions de hachage cryptographiques sont donc essentielles dans le fonctionnement des crypto-monnaies. Elles permettent de sécuriser les transferts d'informations entre plusieurs systèmes, garantissant aux blockchains l'intégrité des données et un haut niveau de sécurité. Répondant au critère de déterminisme, elles sont aussi à sens unique. Générer une sortie à partir d'une entrée est facile, l'inverse est complexe à réaliser et nécessite une importante puissance de calcul, ainsi que du temps. Ce double critère les rend particulièrement sécurisées. Chaque crypto actif utilise des fonctions de hachage, dont les détails varient. La fonction de hachage SHA-256 est largement utilisé pour son équilibre entre temps, coûts de production et sécurité, notamment dans l'écosystème bitcoin dans deux domaines :

  • Le processus de génération de l'adresse Bitcoin via la fonction de hachage est utilisé jusqu'à 3 fois. Cela permet, entre autres, de réduire la taille de l'adresse par rapport à la clé publique dont elle provient.
  • Le minage du bitcoin : Elle est essentielle pour le mécanisme de la preuve de travail. Le minage est assuré par des personnes « les mineurs » qui mettent leur puissance de calcul au service du bitcoin, pour vérifier et valider les transactions. En préalable au minage, le mineur insère dans le nouveau bloc l'empreinte SHA-256 du bloc précédent ainsi que l'empreinte de la somme des empreintes des transactions effectuées. Cela permet de s'assurer du bon ordre des blocs et de la présence de l'ensemble des transactions. Toute modification sur le réseau nécessite de modifier l'ensemble des blocs et des hashs correspondants. Pour valider le bloc, le mineur doit trouver l'empreinte correspondante, déterminée en fonction des valeurs numériques associées aux lettres et chiffres la composant. Pour cela, il doit choisir un nonce, chaîne de caractères, choisi aléatoirement dont l'empreinte est calculée. Ce processus permet de varier les données d'entrée du hachage cryptographique et d'en augmenter le caractère aléatoire. Pour trouver le hash valide correspondant à la solution mathématique et valider le bloc, le mineur doit procéder à des centaines, voire des millions de hachages. Le processus de mining est répétitif et nécessite une puissance de calcul élevée. Le hachage est fondamental pour l'intégralité du processus de la blockchain : constitution, création des blocs et de liens cryptographiques pour les relier entre eux. Il est à la base de la preuve de travail : grâce à la production de hash de transactions et à la validation, la blockchain apparaît comme inaltérable.

Mixer plusieurs fonctions de hachage, ayant des propriétés différentes est possible, pour les cryptomonnaies : système hexadécimal, longueur de chaîne.. Par exemple, la fonction Scrypt est utilisée par Litecoin pour le minage et SHA-256 pour la création d'adresses.

Les fonctions de hachage jouant un rôle essentiel dans le bon fonctionnement des crypto-monnaies, il est donc indispensable de connaître la fonction qui régit les cryptos actifs dans lesquels vous souhaitez investir et vérifier si la version est la plus récente. Si la fonction SHA-256 paraît sécurisée aujourd'hui, elle n'est pas la seule et de nombreux cryptographes étudient des solutions alternatives, en termes de rapidité et de sécurité. La fonction SHA-3, appelée Keccak, est aujourd'hui utilisée par Ethereum.

Envie de se lancer?
Découvrez la première plateforme d'échange de crypto-monnaie en Europe.