Guides Sécurité

Comment fonctionne le hachage

Ce que fait une fonction de hachage, l'effet avalanche avec une vraie sortie SHA-256, quels algorithmes restent sûrs, HMAC et le stockage des mots de passe.

Dernière vérification:

AdSense Placeholder
Slot: header_reference_page
Sur cette page

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. hello haché en SHA-256 donne toujours 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.
  • 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. hello et hellp diffè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 dog avec la clé key vaut f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. 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.

Essayez ces outils

Voir aussi

  • Glossaire Hachage (hash)
    Un hachage (hash) est l'empreinte de longueur fixe qu'une fonction de hachage calcule à partir de n'importe quelle entrée.
  • Glossaire Sel (salt)
    Un sel (salt) est une valeur aléatoire unique ajoutée à un mot de passe avant le hachage.
  • Glossaire HMAC
    Le HMAC (code d'authentification de message fondé sur un hachage) est un hachage calculé avec une clé secrète.
  • Glossaire Somme de contrôle (checksum)
    Une somme de contrôle (checksum) est une petite valeur calculée à partir d'un bloc de données et utilisée pour détecter des erreurs.
  • Guide Comment fonctionnent les JSON Web Tokens (JWT)
    Les trois parties d'un JWT avec un exemple réel décodé, les claims enregistrés, comment les serveurs vérifient la signature.

Questions fréquemment posées

Pas mathématiquement, mais les entrées faibles peuvent être retrouvées en hachant des essais jusqu'à ce que l'un corresponde. C'est pourquoi les mots de passe demandent un sel et un algorithme lent.

AdSense Placeholder
Slot: footer_leaderboard