Les fonctions de hachage sont des fonctions largement utilisées en cryptographie. Rares sont les protocoles cryptographiques sans fonction de hachage. Ces fonctions jouent essentiellement deux rôles :
- transformer un bloc de données de taille arbitraire en un bloc de taille fixe
- créer des empreintes de données
Le premier point est assez clair. Une
fonction de hachage permet de condenser un élément de taille variable, par exemple un texte, en un bloc de données de n bits où n est un nombre fixé. En pratique, les différentes valeurs de n sont 128, 160, 256, 384 ou 512. Ce condensé de données permettra de les intégrer à divers protocoles où des normes régissent la taille des données en entrée des algorithmes.
Le deuxième mérite un peu plus d'explications. Les fonctions de hachage permettent donc de créer des empreintes de documents c'est à dire qu'une telle fonction envoie un texte (de taille arbitraire) en un bloc de données de taille fixe et à chaque texte correspond un bloc de données unique. On crée donc une empreinte du document c'est à dire que cette empreinte caractérise le texte haché (résultat d'une
fonction de hachage) puisqu'elle sera différente pour chaque texte, même si deux textes ne diffèrent que de quelques caractères. En revanche, cette opération n'est pas inversible et c'est pourquoi on désigne aussi les fonctions de hachage par le terme fonctions de hachage à sens unique. À partir d'une empreinte il est très difficile de retrouver le texte original. Cette propriété, qui à première vue peut paraître contraignante, est très utilisée pour la vérification de l'intégrité d'un message (c'est à dire si le texte n'a pas été altéré) ou dans les protocoles de signature.
Signalons qu'il existe deux grandes classes de fonctions de hachage :
- les MDC (pour Modification dectection codes) utilisées pour vérifier l'intégrité d'un message
- les MAC (pour Message authentification codes) utilisées pour vérifier l'intégrité d'un message et l'émetteur du message. De plus, les fonctions de hachage MAC nécessitent une clé pour fonctionner contrairement aux fonctions MDC.
Pour la suite et la découverte des différentes fonctions que nous aborderons, vous devrez bien garder à l'esprit que les fonctions de hachage (MDC ou
MAC) sont des fonctions possédant au moins les deux propriétes suivantes :
- Compression : la fonction prend une entrée de taille variable et le résultat à une taille fixe donnée
- Facilité de calcul : le haché (résultat d'une fonction de hachage) doit être facile et donc rapide à calculer
Les fonctions de hachage sont très étudiées en
cryptologie et l'attention qui leur est portée est d'autant plus grande que leur rôle est indissociable d'applications critiques comme la signature numérique. En effet, lorsque l'on signe un message, ce n'est pas le message entier qui est signé mais son empreinte c'est à dire le résultat d'une
fonction de hachage. Pour se prémunir de la falsification de signature, il faut imposer certaines conditions aux fonctions de hachage : par exemple étant donnée une empreinte il doit être difficile de construire un message différent du message mais ayant la même empreinte sinon on pourrait signer un message à la place d'une personne en y joignant le nouveau message trouvé.