Passer au contenu principal
AnalyseObjet mathématique · Glossaire

fonction de hachage

Une fonction de hachage transforme de façon déterministe un message de longueur arbitraire en une empreinte de taille fixe. Dans le cas cryptographique, elle est conçue pour rendre calculatoirement difficile la recherche d’un message à partir de son empreinte ou de deux messages distincts ayant la même empreinte, et une faible modification de l’entrée change fortement le résultat. Elle sert notamment à vérifier l’intégrité de données.
Une lettre change, l'empreinte bascule Deux messages différant par la casse de leur dernière lettre produisent deux empreintes SHA-256 très différentes. Une lettre change, l'empreinte bascule Rendez-vous à 10 h SHA-256 e5be91b5ac9b24f7c705e748ae4ff7eb b4def15f3a34f8ea1ea393e64944007a Rendez-vous à 10 H SHA-256 996c316a0479a741195b4c7d713a5e1d 046a6e04ffc1b04802004dbf2169d1e6 Même longueur de sortie : 256 bits, soit 64 caractères hexadécimaux
Une seule lettre change dans le message, tandis que l'ensemble de l'empreinte SHA-256 est bouleversé.
Sommaire

Ce que vous allez apprendre

  • Relier un message de longueur variable à un condensé de taille fixe.
  • Refaire un exemple SHA-256 sur deux messages presque identiques.
  • Distinguer hachage, chiffrement, encodage et MAC.
  • Repérer les collisions, les différences d'octets et les usages qui exigent un procédé spécialisé.

En clair

Prenez le message « Rendez-vous à 10 h » et faites-le passer dans SHA-256. Vous obtenez une empreinte de 64 caractères hexadécimaux. Le même message redonne toujours cette empreinte, mais remplacer le « h » final par « H » bouleverse le résultat.
Cette empreinte de taille fixe joue le rôle d'un témoin : on compare deux condensés pour détecter une modification sans confondre le condensé avec le message lui-même.

Définition

Une fonction de hachage associe à chaque message d'un domaine donné un condensé appartenant à un ensemble de taille fixe. Si l'on note m le message, h la fonction et n le nombre de bits du condensé, la relation s'écrit h(m){0,1}nh(m) \in \{0,1\}^n. La longueur de m peut varier, tandis que n est fixé par la fonction choisie.
Le déterminisme impose qu'une même suite de données produise toujours le même condensé. Pour un usage cryptographique, on recherche aussi la résistance à la préimage, la résistance à la recherche d'une seconde préimage et la résistance aux collisions. Une collision existe lorsque deux messages distincts m1 et m2 ont le même condensé : m1m2eth(m1)=h(m2)m_1 \ne m_2 \quad \text{et} \quad h(m_1)=h(m_2). La sensibilité aux petites modifications est appelée effet d'avalanche.
Ces résistances sont des objectifs calculatoires, non des impossibilités absolues. MD5, SHA-1, SHA-256 et SHA-3 appartiennent à la famille des fonctions cryptographiques, mais leur simple présence dans une liste ne garantit pas qu'elles offrent toutes le même niveau de sécurité.

De quoi c'est fait

Le mécanisme réunit quatre éléments. Le message est la suite de données d'entrée. La fonction fixe la règle de transformation. Le condensé est la sortie de longueur constante. Enfin, les propriétés de sécurité précisent quelles recherches doivent rester impraticables, par exemple retrouver une préimage ou construire une collision.
La fonction choisie détermine la longueur et le calcul du condensé ; le moindre changement du message peut donc changer toute l'empreinte. Le couple formé par la fonction et le message suffit à recalculer le condensé, mais celui-ci ne suffit généralement pas à reconstituer l'entrée. La couleur ou la présentation d'une empreinte ne fait pas partie de sa définition : seule compte la suite de bits, souvent affichée en hexadécimal.

Un exemple, pas à pas

On veut contrôler si le message « Rendez-vous à 10 h » a changé. Les données sont le texte exact, son encodage en octets, la fonction SHA-256 et une empreinte de référence de 256 bits, affichée par 64 caractères hexadécimaux.
1. Appliquez SHA-256 au message sans saut de ligne final.
2. Le condensé obtenu est e5be91b5ac9b24f7c705e748ae4ff7ebb4def15f3a34f8ea1ea393e64944007a.
3. Remplacez seulement le dernier « h » par « H ».
4. Le second condensé est 996c316a0479a741195b4c7d713a5e1d046a6e04ffc1b04802004dbf2169d1e6.
5. Comparez les deux chaînes : elles diffèrent largement, donc les deux entrées ne sont pas identiques.
Le contrôle est refaisable : recalculer SHA-256 sur le premier texte, avec exactement les mêmes octets, doit redonner les 64 caractères de référence. Un espace ou un saut de ligne supplémentaire constituerait déjà un autre message.

En pratique

Pour vérifier un fichier téléchargé, on recalcule son condensé puis on le compare à une empreinte obtenue par une voie fiable. Si les valeurs divergent, le fichier a changé ; une comparaison directe des fichiers reste l'alternative lorsque les deux copies sont disponibles.
Dans une signature numérique, le condensé représente le message dans l'opération de signature. Pour authentifier un message avec un secret partagé, on emploie un MAC, et non un hachage ordinaire isolé.
Pour conserver des mots de passe, une empreinte rapide destinée aux fichiers n'est pas le choix adapté. On préfère un procédé spécialisé qui ralentit les essais et associe une valeur aléatoire propre à chaque mot de passe.

À ne pas confondre

Chiffrement. Un chiffrement est conçu pour être inversé avec la clé adéquate afin de retrouver le message. Une fonction de hachage produit au contraire un condensé sans opération normale de déchiffrement.
Encodage. Un encodage change la représentation de données et se renverse selon une règle publique. Si la transformation doit restituer exactement le texte d'origine, il s'agit d'encodage, pas de hachage.
MAC. Un code d'authentification de message dépend d'une clé secrète et atteste à la fois l'intégrité et l'authenticité. Un condensé sans clé peut signaler une différence, mais un adversaire capable de modifier le message peut aussi le recalculer.

Limites et pièges

Une collision doit exister. Le nombre de messages possibles dépasse celui des condensés de taille fixe. Le symptôme n'est donc pas l'existence d'une collision, mais la possibilité d'en construire une avec des ressources réalistes. Il faut choisir une fonction dont la résistance correspond à l'usage.
Une empreinte égale n'est pas une preuve absolue d'identité. Deux entrées distinctes peuvent partager un condensé. Pour une fonction adaptée, cette éventualité doit être calculatoirement difficile à provoquer ; une exigence de preuve parfaite appelle une comparaison des données elles-mêmes.
Les octets exacts comptent. Dans l'exemple, ajouter un saut de ligne au message produit f910b4ffe1357d06076fcdaee10df45209cda9f53999a434f429c5c9ff7e3f26. Quand un résultat paraît incohérent, il faut contrôler l'encodage, les espaces et les fins de ligne avant d'accuser la fonction.
Une fonction connue n'est pas automatiquement un choix actuel. Les propriétés attendues dépendent de la fonction et de l'usage. Il faut distinguer la vérification d'intégrité, l'authentification et le stockage des mots de passe avant de sélectionner le procédé.

Pour aller plus loin

La cryptographie replace le hachage parmi les procédés qui protègent l'information et précise les objectifs de confidentialité, d'intégrité et d'authentification.
La signature numérique montre comment un condensé intervient dans un mécanisme qui relie un message à son signataire.
La notion d'algorithme aide à distinguer la règle abstraite de hachage de sa mise en œuvre calculatoire.
Continuez avec Tangente

Explorez les mathématiques autrement

Retrouvez nos magazines, podcasts et jeux pour explorer les mathématiques autrement.

Découvrir les offres