Une fonction de hachage transforme n'importe quelle entrée, d'une simple lettre à un film entier, en une courte empreinte de taille fixe. La même entrée donne toujours la même empreinte ; une entrée différente en donne une complètement différente ; et il n'existe aucun moyen pratique de remonter de l'empreinte à l'entrée. Créez-en une avec le Générateur de Hachage.
Propriétés d'un bon hachage
- Déterministe.
hellohaché en SHA-256 donne toujours2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824. - Longueur fixe. Le hachage d'une chaîne vide et celui d'un fichier de 4 Go font tous deux 64 caractères hexadécimaux (256 bits) avec SHA-256.
- Effet avalanche. Changez une lettre et environ la moitié des bits de sortie basculent.
helloethellpdiffèrent d'un caractère, pourtant leurs hachages SHA-256 diffèrent de 131 bits sur 256 :fdd7585e08c4e2afd71dcabdb4636c89d557a3f42db9e2040c8bbd1708aa4ce7. - À sens unique. Connaître le hachage ne permet pas de retrouver l'entrée, sauf en devinant des entrées et en les hachant.
- Résistant aux collisions. Il devrait être impossible de trouver deux entrées différentes de même hachage.
Algorithmes courants
| Algorithme | Taille de sortie | Longueur hex | Statut |
|---|---|---|---|
| MD5 | 128 bits | 32 | Cassé : les collisions sont faciles. Acceptable seulement pour des sommes de contrôle sans enjeu de sécurité |
| SHA-1 | 160 bits | 40 | Cassé pour les signatures : des collisions pratiques existent. À éviter |
| SHA-256 | 256 bits | 64 | Sûr ; le choix standard |
| SHA-512 | 512 bits | 128 | Sûr ; souvent plus rapide que SHA-256 sur les processeurs 64 bits |
| SHA3-256 | 256 bits | 64 | Sûr ; une conception différente de la famille SHA-2 |
À quoi servent les hachages
- Vérifier l'intégrité d'un fichier. Publiez le SHA-256 d'un téléchargement pour que chacun confirme avoir obtenu le fichier exact. Un seul bit modifié donne un hachage différent.
- Signatures numériques. On signe le hachage d'un message plutôt que le message entier.
- Déduplication et cache. Un contenu identique a un hachage identique.
- Stocker des mots de passe, mais seulement avec les méthodes spéciales ci-dessous. Un simple SHA-256 est le mauvais outil.
- Authentification de messages. HMAC mêle une clé secrète au hachage : le HMAC-SHA-256 de
The quick brown fox jumps over the lazy dogavec la clékeyvautf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Seul qui détient la clé peut le produire ou le vérifier.
Hacher n'est pas chiffrer
Le chiffrement s'inverse avec une clé ; un hachage ne s'inverse pas du tout. Un hachage ne dit pas non plus qu'un fichier est sûr, seulement qu'il est inchangé depuis le calcul du hachage.
Stocker correctement les mots de passe
Le problème, ce sont les hachages rapides : un attaquant disposant d'une base volée peut tester des milliards d'essais SHA-256 par seconde avec une carte graphique, et les mots de passe courants tombent instantanément.
- Ajoutez un sel (salt), une valeur aléatoire unique par utilisateur stockée avec le hachage. Deux utilisateurs ayant le même mot de passe obtiennent alors des hachages différents et les « tables arc-en-ciel » précalculées sont inutiles.
- Utilisez un hachage de mot de passe volontairement lent et gourmand en mémoire : Argon2id (à privilégier), scrypt, bcrypt ou PBKDF2 avec beaucoup d'itérations. Essayez bcrypt avec le Générateur Bcrypt.
- N'inventez jamais votre propre schéma et ne stockez pas les mots de passe en clair, chiffrés de façon réversible, ni avec MD5 ou SHA-1.
Évaluez à quel point un mot de passe est devinable avec l'Auditeur de Force et d'Entropie des Mots de Passe.
Erreurs courantes
- Utiliser MD5 ou SHA-1 là où la sécurité compte.
- Comparer des hachages avec une comparaison de chaînes ordinaire quand ils protègent des secrets. Utilisez une comparaison en temps constant pour éviter les fuites par chronométrage.
- Hacher des entrées courtes ou prévisibles (un numéro de téléphone, une date de naissance) et appeler le résultat anonyme. N'importe qui peut hacher toutes les valeurs possibles et chercher.
Voyez Hachage (hash), Sel (salt) et HMAC.