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.
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é.
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.
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 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 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 :
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 :
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.