August 7, 2021

Hachage cryptographique

5 MIN READ – TEAM XSL LABS

Share on twitter
Share on telegram
Share on email
Share on linkedin
Share on facebook

Hachage cryptographique

Les fonctions de hachage font partie de notre quotidien, sans même que nous en soyons conscients, c’est par exemple fréquemment le cas dès que nous créons un mot de passe sur Internet, quand nous signons électroniquement des données ou encore lorsque nous téléchargeons certains fichiers

Nous avons évoqué dans plusieurs de nos articles relatifs à des technologies utilisées par XSL Labs, notamment l’IPFSi et à la cryptographie asymétriqueii, la notion de hachage cryptographique.

Dans ce billet, nous nous attarderons sur cette notion pour comprendre l’utilité et les propriétés des fonctions de hachage cryptographique et passerons également en revue les principales fonctions utilisées jusqu’à aujourd’hui.

Une fonction de hachage est une fonction qui permet de calculer une empreinte numérique à partir de données.

Dans l’exemple ci-dessus, le texte en bleu passe par une fonction de hachage (ici SHA-1) pour devenir la suite de caractères du cadre vert : l’empreinte.

Les fonctions de hachage cryptographique sont plus spécifiquement des fonctions à sens unique : il s’agit de fonctions qu’il est presque impossible d’inverser. Ainsi, on ne peut pas retrouver à partir de l’empreinte le texte d’origine.

On peut alors se demander à quoi peuvent servir ces fonctions et ces empreintes, car à première vue, de telles suites de caractères n’ont aucun sens, ne sont pas intelligibles.

Une première réponse serait que ces empreintes permettent notamment d’identifier facilement les données en question.

Pour expliquer ce phénomène, prenons l’exemple du stockage des mots de passe sur Internet. Nous évoquons assez fréquemment le piratage des bases de données sur notre blog, mais savez-vous qu’en 2021 encore, certains sites Internet stockent vos mots de passe « en clair » ? Ceci signifie que lorsque vous créez un compte, ou que vous modifiez votre mot de passe, celui-ci est envoyé directement pour être inscrit dans la base de données du site ou service en question.

Une base de données stockant des mots de passe directement en clair est une cible idéale pour des pirates informatiques, puisqu’elle permet de retrouver des couples d’identifiants et mots de passe directement, de façon lisible.

Pour pallier ce problème, plusieurs solutions existent, tels le recours à un chiffrement via une clé spécifique, ou encore le hachage cryptographique qui est davantage sécurisé.

Dans un tel cas de figure, le mot de passe est transformé par une fonction de hachage pour devenir une empreinte, c’est cette empreinte qui sera stockée.

Ici, le mot de passe n’est pas stocké en clair, une attaque informatique ne permettra pas de le trouver facilement. Du côté de l’utilisateur, il est tout aussi simple de se connecter une fois le compte créé : lorsque l’utilisateur entre son identifiant et son mot de passe, son mot de passe subit la même fonction de hachage, et l’empreinte ainsi obtenue est alors comparée à l’empreinte enregistrée dans la base de donnée. Si les empreintes correspondent, la connexion est établie. Dans le cas contraire, cela signifie que le mot de passe entré n’était pas le bon, la connexion est refusée.

Les fonctions de hachage cryptographiques répondent à plusieurs propriétés.

  • La première est celle de la longueur de l’empreinte : quelle que soit la taille du fichier initial, l’empreinte obtenue par une fonction de hachage aura une longueur fixe qu’on calcule en bits.
  • La seconde, appelée « résistance à la pré-image », et qui correspond à une propriété d’irréversibilité, implique qu’il est quasiment impossible de retrouver les données initiales à partir des empreintes : c’est pour cela qu’on parle de fonctions à sens unique.
  • La troisième propriété est appelée le déterminisme de la fonction de hachage. Cette propriété implique qu’un fichier auquel sera appliquée la fonction de hachage aura toujours la même empreinte. Cette propriété, outre le cas des mots de passe évoqué plus haut, est très utile par exemple lors du téléchargement d’un fichier afin de garantir que le fichier a été intégralement transmis sans erreur ni modification. Par exemple, Ubuntu, qui met à disposition ses systèmes d’exploitation en téléchargement, propose un système de vérification de type « SHA256 checksum » qui permet de confronter l’empreinte du fichier que nous téléchargeons à l’empreinte initiale :

Si le message obtenu correspond bien à la dernière ligne, les empreintes sont bien les mêmes, on peut en conclure qu’il n’y a pas eu d’erreur lors du téléchargement du fichier, l’installation du système d’exploitation ne souffrira pas de problèmes de corruption.

  • Dans le même esprit, la quatrième propriété implique qu’une modification même mineure des données initiales modifiera grandement l’empreinte, c’est ce qu’on appelle également l’effet avalanche.

Prenons pour exemple la création d’empreintes via l’algorithme SHA-256 pour la phrase suivante :

Si nous ajoutons un caractère dans cette phrase (ici, une virgule), nous obtenons une empreinte radicalement différente.

Cette propriété rend ainsi les données initiales infalsifiables, toute modification créera une empreinte des données qui ne correspondra plus du tout à l’empreinte attendue.

  • Enfin, évoquons une cinquième propriété qui consiste en la résistance aux collisions.

    Pour expliquer cette propriété, considérons le « paradoxe des anniversaires ». Il s’agit d’un problème de probabilités mathématiques, à l’origine de Richard von Mises, qui vise à calculer la probabilité d’avoir au sein d’un groupe deux personnes qui ont la même date d’anniversaire.

    Les calculs de probabilités permettent d’indiquer que pour une année de 365 jours (donc 365 dates d’anniversaires possibles), il suffit que le groupe compte 23 personnes pour que la probabilité que 2 personnes aient la même date d’anniversaire soit de plus de 50 %. On pourrait penser d’emblée que cette probabilité est beaucoup plus faible, c’est pour cela que ce problème est appelé « paradoxe ». En outre, à partir de 57 personnes, les calculs estiment qu’on dépasse les 99 % de chances que deux personnes partagent la même date d’anniversaire.

    Le tableau ci-contre exprime, pour un nombre de personnes N, différentes probabilités que deux personnes aient la même date d’anniversaire.

Ceci constitue un risque de « collision », qui doit être pris en compte pour créer des fonctions cryptographiques afin de résister à ces probabilités. Il faut que des données différentes n’aient quasiment aucun risque de donner la même empreinte, sans quoi il pourrait devenir possible de modifier des données initiales tout en gardant la même empreinte : on ne pourrait plus vérifier l’intégrité des données par leur empreinte.

Dans les faits, jusqu’à aujourd’hui il est toujours virtuellement possible de générer des données et des empreintes de données jusqu’à trouver des collisions. L’exemple des anniversaires peut être repris pour expliquer ceci : nous sommes limités à 365 jours par an, donc si le groupe de personnes dépasse ce nombre, on est certains qu’il y aura au moins une collision dans tous les cas. Le même raisonnement s’applique aux empreintes : quelle que soit l’empreinte, il y aura toujours potentiellement plus de données initiales que d’empreintes possibles.

A ce titre, l’impossibilité de trouver des données différentes qui auront la même empreinte s’entend comme une impossibilité au regard des ressources matérielles existantes : une fonction de hachage cryptographique fiable empêche que les plus puissants des ordinateurs et calculateurs puissent calculer des collisions : ceci serait tellement coûteux en temps et en ressources qu’il n’y aurait aucun intérêt à tenter de le faire.

Maintenant que nous avons expliqué les différentes propriétés des fonctions de hachage cryptographiques, nous allons nous intéresser aux fonctions les plus courantes.

La première est appelée MD5, pour « Message Digest 5 », et permet de générer des empreintes de 128 bits. Inventée par Ronald Rivest en 1991 et normalisée en 1992iii, cette fonction de hachage cryptographique n’est plus considérée sûre aujourd’hui. En 2004, une attaque a permis de trouver une collision en moins d’une heure, et en 2006, quelques minutes à peine étaient suffisantes pour en créer une sur un ordinateur portableiv. Le MD5 n’est aujourd’hui plus utilisé – ou en tout cas ne devrait plus l’être – pour sécuriser des données, à part pour trouver des erreurs lors de la copie d’un fichier par exemple, puisqu’il est très facile pour des pirates de modifier un fichier tout en gardant la même empreinte.

En 1995, le National Institute of Standards and Technology (NIST) dévoile le SHA-1 (pour Secure Hash Algorithm), conçu par la NSA pour pallier les problèmes liés à MD5. Cette fonction de hachage cryptographique a longtemps résisté aux attaques, mais dès 2011, elle n’est plus considérée suffisamment sûre par le NIST. En 2017, un groupe de chercheurs lié à l’institut Google Research réussit à créer deux fichiers PDF qui génèrent la même empreinte via la fonction SHA-1v. Cette collision volontaire a définitivement démontré la vulnérabilité de la fonction.

En 2002, la NSA fait normaliser deux nouvelles fonctions de hachage, sous l’appellation SHA-2, qui permettent de créer des empreintes de 256 et 512 bits. Cette norme SHA-2 est encore aujourd’hui considérée comme sûre, la fonction SHA-256 est typiquement utilisée par Bitcoin pour vérifier les transactions du réseau.

XSL Labs utilisera par exemple cette fonction de hachage dans le cadre des VC Traces comme expliqué dans notre whitepapervi. Celles-ci devront être créées par l’émetteur de VC lors de l’envoi de références vérifiables au sujet SDI.
La VC Trace sera déposée dans le contrat intelligent des SDI et permettra de vérifier son horodatage et l’identité de son émetteur, ce qui rendra possible la vérification de son profil public.
Elle permettra également d’authentifier et de vérifier l’intégrité des données transmises, pour assurer la chaîne de confiance au sein de l’écosystème SYL.

 
Copyright © 2020 XSL Labs – All rights reserved