Les fonctions de hachage

L'empreinte d'un fichier

Chiffrer protège le secret. Mais comment prouver qu'un fichier n'a pas été modifié en route ? C'est une autre question, et elle demande un autre outil.

La définition

Une fonction de hachage transforme une donnée de taille quelconque en une empreinte de taille fixe.

"Bonjour"                → 2a1d5f...  (64 caractères)
un film de 4 Go          → 9c8e01...  (64 caractères)

SHA-256 produit toujours 256 bits, quelle que soit l'entrée.

Les quatre propriétés attendues

  1. Déterministe — la même entrée donne toujours la même empreinte.
  2. Rapide à calculer.
  3. À sens unique — de l'empreinte, on ne peut pas remonter à l'entrée.
  4. Sans collision praticable — on ne sait pas trouver deux entrées différentes ayant la même empreinte.

L'effet avalanche

Changer un seul bit de l'entrée doit bouleverser l'empreinte entière :

"Bonjour"  → 2a1d5f4e...
"Bonjoux"  → f70b93c1...

Aucune ressemblance. C'est ce qui rend impossible de deviner l'entrée par tâtonnement progressif : on ne « chauffe » jamais.

Une remarque importante

Une empreinte n'est pas un chiffrement. Il n'y a pas de clé, et surtout pas d'opération inverse : l'information est perdue. Un film de 4 Go ne tient pas dans 256 bits.

Nécessairement, plusieurs entrées partagent donc la même empreinte — ce sont les collisions. Elles existent mathématiquement ; toute la question est qu'on ne sache pas en fabriquer.

C'est là que MD5 et SHA-1 ont échoué : on sait aujourd'hui produire des collisions à volonté. Ils sont à proscrire. SHA-256 reste solide.