Command Center

Search for a vulnerability, tool, or protocol...

Defensive

Hachage cryptographique robuste — Bonnes pratiques

Différences hashing/chiffrement, choix d’algorithmes (Argon2id/bcrypt/scrypt vs SHA-2), salage, pepper, HMAC, et anti-patterns (MD5/SHA1).

14 mars 2026Peran2 min de lecture
#hashing#argon2#bcrypt#scrypt#sha256#hmac#password-storage

Hashing vs chiffrement (ne pas confondre)

  • Hachage : fonction à sens unique (objectif : empreinte, intégrité, stockage mots de passe).
  • Chiffrement : réversible avec une clé (objectif : confidentialité).

Deux grands usages (et deux stratégies)

1) Stockage de mots de passe

Exigences : résister aux attaques offline (GPU/ASIC), donc algorithmes lents et “mémoire-durs”.

Recommandations (selon vos contraintes) :

  • Argon2id (souvent recommandé quand disponible)
  • bcrypt (très répandu, robuste)
  • scrypt (mémoire-dur)

Bonnes pratiques :

  • Sel unique par mot de passe.
  • Paramètres adaptés (coût) et réévaluation régulière.
  • Optionnel : pepper (secret côté serveur, séparé de la DB).

Anti-patterns :

  • MD5 / SHA1 / SHA256 “tout seul” pour les mots de passe.
  • Sel global partagé.

2) Intégrité de fichiers / messages

Ici, un hash rapide peut être OK (ex : SHA-256) si l’objectif est “détecter une corruption”.

Mais pour l’authenticité (empêcher un attaquant de forger), il faut une clé :

  • HMAC-SHA-256 (ou SHA-512 selon contexte)

Quand utiliser SHA-256 / SHA-512

  • Empreinte de contenu (checksum) : SHA-256 / SHA-512.
  • Déduplication / cache keys : SHA-256 (souvent suffisant).

Attention : “intégrité” ≠ “authenticité”. Sans clé, un attaquant peut recalculer un hash.

Salage (salt) et pepper

  • Salt : non secret, unique par entrée, stocké avec le hash.
  • Pepper : secret, stocké séparément (ex : variable sécurisée / HSM / vault).

Exemple de schéma (conceptuel)

password_hash = KDF(password, salt, cost)
# Optionnel
password_hash = KDF(password + pepper, salt, cost)

Migration et montée en coût

  • Stocker le “format” et les paramètres avec le hash.
  • À la prochaine connexion, si paramètres trop faibles : re-hasher avec coûts modernes.

Voir aussi