Skip to content

Qu'est-ce qu'un sel dans le hachage de mots de passe, pourquoi l'utilise-t-on, et qu'est-ce qu'un poivre ?

Réponse courte

Un sel est une valeur aléatoire unique générée par utilisateur et combinée au mot de passe avant le hachage. Il garantit que des mots de passe identiques produisent des hachages différents et rend inutiles les attaques précalculées comme les tables arc-en-ciel, puisque l'attaquant aurait besoin d'une table distincte par sel. Les sels sont stockés à côté du hachage. Un poivre est une valeur secrète supplémentaire, la même pour tous les utilisateurs, conservée séparément (par exemple, dans la config de l'application ou un HSM) de sorte qu'une fuite de base de données seule ne suffise pas.

Cette question sépare les candidats qui connaissent les mots de ceux qui comprennent quelle attaque chaque défense arrête. Le salage et le poivrage visent des menaces différentes, et le dire avec précision est ce qui rapporte le point.

Contre quoi un sel défend

Sans sel, le même mot de passe se hache toujours en la même valeur. Deux conséquences en découlent. Premièrement, les attaquants peuvent précalculer des tables arc-en-ciel — d'énormes tables de correspondance hachage-vers-mot-de-passe — et casser tout hachage non salé par recherche. Deuxièmement, si deux utilisateurs partagent un mot de passe, leurs hachages identiques révèlent ce fait dans une base de données fuitée.

Un sel est une valeur aléatoire unique générée par utilisateur et mélangée au mot de passe avant le hachage. Désormais des mots de passe identiques produisent des hachages différents, donc une table précalculée est sans valeur — un attaquant aurait besoin d'une table fraîche par sel, ce qui ruine entièrement l'économie de l'attaque. Le sel n'est pas secret ; il est stocké juste à côté du hachage et c'est très bien, car son rôle est de rendre chaque hachage unique, pas d'être caché.

Ce qu'un sel ne fait pas

Le salage ne ralentit pas de manière significative une attaque par force brute contre un seul hachage ciblé — l'attaquant inclut simplement le sel connu pendant qu'il devine. C'est pourquoi le salage doit être associé à une fonction de hachage lente (bcrypt, scrypt, Argon2). Le sel arrête le précalcul de masse ; le facteur de travail arrête la devinette rapide.

Ce qu'un poivre ajoute

Un poivre est une valeur secrète supplémentaire mélangée pendant le hachage, mais contrairement au sel il est le même pour tous les utilisateurs et stocké séparément de la base de données — dans la configuration de l'application, une variable d'environnement, ou idéalement un module de sécurité matériel. L'objectif est la défense en profondeur : si seule la base de données de mots de passe fuit, il manque le poivre à l'attaquant et il ne peut pas vérifier ses essais hors ligne. Cela n'aide que s'il est réellement gardé à l'écart des hachages.

Ce que recherchent les recruteurs

L'unicité par utilisateur, la logique table arc-en-ciel et hachage identique, le fait que les sels peuvent être publics tandis que les poivres doivent être secrets et séparés, et la nuance que le salage seul n'arrête pas la force brute ciblée.

Questions de suivi probables

  • Pourquoi est-il sûr de stocker le sel à côté du hachage, mais pas le poivre ?
  • Le salage ralentit-il une attaque par force brute ciblée contre un seul utilisateur ?
  • Pourquoi les sels doivent-ils être uniques par utilisateur plutôt qu'un sel global unique ?

Sources

Certifications

Recevez 100 questions d'entretien en cybersécurité + réponses

Laissez votre e-mail et nous vous enverrons le pack PDF gratuit et le jeu de flashcards.

Pas de spam. Désabonnez-vous à tout moment.