Une fonction de hachage cryptographique transforme une donnée de taille quelconque en une empreinte de taille fixe, de façon déterministe et à sens unique. La même entrée donne toujours la même empreinte ; l'opération inverse n'est pas calculable en pratique. SHA-256 et SHA-3 en sont des exemples courants.
Les trois propriétés attendues
- Résistance à la préimage : à partir d'une empreinte, on ne retrouve pas l'entrée ;
- Résistance à la seconde préimage : à partir d'une entrée donnée, on ne trouve pas une autre entrée produisant la même empreinte ;
- Résistance aux collisions : on ne trouve pas deux entrées quelconques de même empreinte.
Un effet dit d'avalanche complète l'ensemble : modifier un seul bit de l'entrée change la moitié des bits de l'empreinte en moyenne. MD5 et SHA-1 ne satisfont plus la résistance aux collisions et sont proscrits pour tout usage de signature.
Le cas particulier des mots de passe
Hacher un mot de passe avec SHA-256 est une erreur classique : la fonction est conçue pour être rapide, donc l'attaquant qui obtient la base teste des milliards de candidats par seconde. Il faut une fonction de dérivation lente et paramétrable — Argon2, scrypt, bcrypt ou PBKDF2 — associée à un sel unique par entrée.
Côté résistance quantique, l'algorithme de Grover réduit de moitié la sécurité effective d'une fonction de hachage : d'où l'usage d'empreintes plus longues, et l'intérêt des fonctions de hachage composées qui combinent plusieurs primitives plutôt que d'en dépendre d'une seule.
Aller plus loin : définition du salage · définition de l'algorithme de Grover · cryptographie post-quantique · l'authentification cognitive