Dériver une clé d’un mot de passe : Argon2, sel et coût
Un mot de passe n’est pas une clé. Comment le transformer en clé robuste, résistante au brute force.
On ne chiffre jamais directement avec un mot de passe : il est trop court, trop prévisible. On le transforme en clé cryptographique via une fonction de dérivation (KDF). Aujourd’hui, la référence s’appelle Argon2.
Le rôle d’une KDF
Une KDF prend un mot de passe et produit une clé de taille fixe (par ex. 256 bits), de façon déterministe mais coûteuse à calculer. Ce coût est volontaire : il ralentit les attaques par force brute.
Le sel : contre les tables précalculées
On ajoute un sel aléatoire, unique par utilisateur, mélangé au mot de passe avant dérivation. Conséquence : deux personnes avec le même mot de passe obtiennent des clés différentes, et les « rainbow tables » précalculées deviennent inutiles. Le sel se stocke en clair, sans danger.
sel = random(16 octets)
clé = Argon2id(mot_de_passe, sel,
mémoire = 64 Mo,
itérations = 3,
parallélisme = 4)
Pourquoi Argon2 plutôt qu’un hash classique
Un simple SHA-256 est trop rapide : un attaquant en teste des milliards par seconde sur GPU. Argon2 est memory-hard : il exige beaucoup de mémoire, ce qui neutralise l’avantage des cartes graphiques et des circuits dédiés.
Régler les facteurs de coût
- Mémoire : le levier principal contre les attaques matérielles.
- Itérations : le temps de calcul.
- Parallélisme : le nombre de threads.
On les règle aussi haut que l’expérience utilisateur le tolère (quelques centaines de millisecondes). Plus c’est coûteux pour toi, plus c’est dissuasif pour l’attaquant.
Le maillon humain
Même la meilleure KDF ne sauve pas un mot de passe « 123456 ». Argon2 protège un mot de passe raisonnable contre le brute force — il ne remplace pas un bon mot de passe.
Envie d’aller plus loin avec SecretVault ?
Découvrir SecretVault