Chapitre 03 : Les fonctions de hachage

Présentation générale

Une fonction de hachage prend en paramètre des données de n’importe quelle taille et retourne une chaîne de caractère unique avec une taille fixe : une sorte d’empreinte digitale de la donnée originale.

Vous pouvez trouver un exemple classique d’utilisation du hachage si vous téléchargez une version de la distribution Linux Ubuntu. Vous trouverez sur la page de téléchargement un lien “Vérifier votre téléchargement” qui vous indiquera tout simplement le hash du fichier que vous avez téléchargé.

L’idée ici est de vous permettre de vérifier par vous-mêmes que le fichier qui se trouve sur votre disque dur n’a pas été corrompu et qu’il s’agit bien du même fichier que celui créé par les équipes d’Ubuntu.

Comment cela fonctionne ? Les équipes Ubuntu après avoir produit le fichier ont calculé son hachage et l’ont mis sur la page. De votre côté, vous pouvez calculer le hachage du fichier que vous venez de télécharger avec la commande : sha256sum ubuntu-22.04-desktop-amd64.iso. Bien que le fichier iso fasse presque 4 GO, si un seul octet est différent du fichier crée par les équipes Ubuntu, les deux hachages seront complètement différents.

Cette fonction nous permet donc de vérifier l’intégrité et l’authenticité d’une donnée grâce ce que l’on appelle la “résistance à la seconde pré-image” qui implique qu’il est statistiquement impossible de trouver deux chaînes de texte qui a la même valeur de hachage. Pour faire simple, si je vous donne un hachage d’une chaine de caractère, vous ne pouvez statiquement pas trouver une autre chaine de caractère différente qui donnera le même résultat pour son hachage.

Dans notre example, nous avons utilisé sha256 qui produira, peu importe la taille de la donnée en entrée, une sortie de 256 bits. Il est important de noter que ces fonctions ne fonctionnent que dans un sens. Cela signifie qu’à partir d’un hash, il est impossible de retrouver la chaine d’origine, c’est ce que l’on appelle la “résistance à la préimage”.

La troisième propriété d’une fonction de hachage (après la “résistance à la préimage” et la “résistance à la seconde pré-image”) est la resistance à la collision, elle garantit que personne n’est capable de créer deux entrées qui donneront la même valeur de hachage.

SHA-2

SHA-2 est la fonction de hachage la plus utilisée. Elle a été développée par la NSA et standardisée par le NIST en 2001. Elle succède à SHA-1 qui ne doit plus être utilisé, car il a été cassé à plusieurs reprises par des chercheurs qui ont montré qu’ils arrivaient à produire des collisions grâce à une plus grande puissance de calcul, mais grâce aussi à des failles dans leur conception.

SHA-2 est disponible dans 4 versions différentes : 224, 256, 384 & 512. La version 256 est la plus utilisée.

SHA-3

SHA-3 est la suite de SHA-2 et a pout objectif de corriger ses problèmes et d’offrir une meilleure sécurité. Cet algorithme est basé sur les permutations et il utilise les “constructions en éponges” qui n’ont rien à voir avec les procédés Merkle-Damgard utilisés par SHA-2.