Sécurité web

Salage (sel cryptographique)

Définition

Le salage consiste à ajouter à chaque mot de passe une valeur aléatoire unique, le sel, avant d’en calculer l’empreinte. Deux mots de passe identiques donnent ainsi des empreintes différentes, ce qui rend inutiles les tables précalculées et oblige l’attaquant à traiter chaque compte séparément.

Salage (sel cryptographique), Sécurité web

Un site ne doit jamais conserver les mots de passe en clair : il garde seulement leur empreinte, calculée par une fonction à sens unique. À la connexion, il recalcule l’empreinte du mot de passe saisi et compare. Sans sel, ce procédé a un défaut majeur : deux personnes qui ont choisi le même mot de passe obtiennent exactement la même empreinte, et un attaquant peut préparer à l’avance des tables d’empreintes des mots de passe les plus courants. Le sel règle ces deux problèmes.

Comment fonctionne le salage

Au moment de l’inscription ou d’un changement de mot de passe, le site tire au hasard une chaîne unique, le sel, et l’ajoute au mot de passe avant de calculer l’empreinte. Le sel est stocké avec l’empreinte, en clair : il n’a pas besoin d’être secret. Son rôle est de rendre chaque calcul unique.

Comparaison en deux colonnes : sans sel, Alice et Bruno qui utilisent le même mot de passe obtiennent la même empreinte, qu’une table précalculée casse d’un coup ; avec un sel différent pour chacun, les empreintes diffèrent et chaque compte doit être attaqué séparément
Le même mot de passe, avec deux sels différents, donne deux empreintes sans rapport.
  • Les tables précalculées deviennent inutiles : l’attaquant devrait les recalculer pour chaque sel.
  • Les mots de passe identiques ne se voient plus dans une base volée.
  • Chaque compte doit être attaqué séparément, ce qui multiplie le travail d’une attaque hors ligne.

Le sel ne rend pas un mot de passe faible solide pour autant : « Soleil2024 » reste parmi les premiers essais d’une attaque par force brute. C’est pourquoi on l’associe à une fonction volontairement lente, comme bcrypt, scrypt ou Argon2, qui intègrent le sel automatiquement.

Sel, poivre et recommandations

OWASP distingue le sel, unique pour chaque mot de passe et stocké avec lui, du poivre (pepper), un secret commun conservé hors de la base de données, par exemple dans un coffre de secrets. Le poivre ajoute une défense en profondeur si seule la base fuit. En France, la recommandation de la CNIL sur les mots de passe (délibération du 21 juillet 2022) demande de ne jamais les stocker en clair et de les transformer par une fonction cryptographique non réversible et sûre, intégrant un sel ou une clé.

Vidéo : « Comment les sites web sécurisent-ils les mots de passe ? Hashage et salage expliqués » (WeLoveDevs)

Pour WordPress

Dans WordPress, le mot « sel » désigne deux choses qu’il ne faut pas confondre.

Le sel des mots de passe

Depuis WordPress 6.8, les mots de passe des utilisateurs sont hachés avec bcrypt par la fonction PHP password_hash(), qui génère un sel aléatoire pour chaque mot de passe et le range dans l’empreinte elle-même. Vous n’avez rien à régler : le salage est automatique.

Les clés et sels de wp-config.php

Le fichier wp-config.php contient huit constantes : AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY et leurs pendants AUTH_SALT, SECURE_AUTH_SALT, LOGGED_IN_SALT, NONCE_SALT. Malgré leur nom, ces valeurs ressemblent davantage à un poivre : elles sont secrètes et servent à signer les cookies de connexion et les nonces. Si elles fuient, quelqu’un peut tenter de forger des cookies valides.

  • Générez-les avec le service officiel api.wordpress.org/secret-key/1.1/salt/ ou la commande wp config shuffle-salts de WP-CLI.
  • Changez-les après une intrusion : tous les cookies existants deviennent invalides et chaque utilisateur doit se reconnecter.
  • Ne les copiez pas d’un site à l’autre et ne les publiez jamais dans un dépôt de code.

Notre article sur les réglages de sécurité de wp-config.php détaille ces constantes et les autres options utiles. Pour l’autre versant du problème, les mots de passe réutilisés d’un site à l’autre, voyez les fuites de mots de passe et leurs parades : un sel ne protège pas un mot de passe déjà connu de l’attaquant, d’où l’intérêt du credential stuffing pour les pirates.

Pour aller plus loin

  • Article wp-config.php : les réglages de sécurité qui comptent vraiment

Sources

  1. OWASP : Password Storage Cheat Sheet (lien externe, nouvel onglet)
  2. CNIL : Mots de passe, recommandations pour maîtriser sa sécurité (lien externe, nouvel onglet)
  3. Code source de WordPress : wp-config-sample.php (clés et sels) (lien externe, nouvel onglet)
  4. WP-CLI : wp config shuffle-salts (lien externe, nouvel onglet)

Toutes les définitions

La sécurité WordPress, sans le bruit

Un e-mail quand ça compte : nouvelles attaques observées, mises à jour de l’extension et guides pratiques. Pas de spam, désinscription en un clic.

Commencez gratuitement, passez à Pro quand vous êtes prêt

La version gratuite masque déjà WordPress et déplace la page de connexion. Pro ajoute alias, double authentification et surveillance.