J'ai du mal à comprendre le but d'un sel sur un mot de passe. Je crois comprendre que l'utilisation principale est d'entraver une attaque de table arc-en-ciel. Cependant, les méthodes que j'ai vues pour implémenter cela ne semblent pas vraiment rendre le problème plus difficile.
J'ai vu de nombreux tutoriels suggérant que le sel soit utilisé comme suit:
$hash = md5($salt.$password)
Le raisonnement étant que le hachage ne correspond plus au mot de passe d'origine, mais à une combinaison du mot de passe et du sel. Mais dites $salt=foo
et $password=bar
et $hash=3858f62230ac3c915f300c664312c63f
. Maintenant, quelqu'un avec une table arc-en-ciel pourrait inverser le hachage et trouver l'entrée "foobar". Ils pourraient alors essayer toutes les combinaisons de mots de passe (f, fo, foo, ... oobar, obar, bar, ar, ar). Cela peut prendre quelques millisecondes de plus pour obtenir le mot de passe, mais pas grand-chose d'autre.
L'autre utilisation que j'ai vue concerne mon système Linux. Dans / etc / shadow, les mots de passe hachés sont réellement stockés avec le sel. Par exemple, un sel de « foo » et le mot de passe de « bar » serait hachage à ceci: $1$foo$te5SBM.7C25fFDu6bIRbX1
. Si un pirate était en mesure de mettre la main sur ce fichier, je ne vois pas à quoi sert le sel, car le hachage inversé de te5SBM.7C25fFDu6bIRbX
est connu pour contenir "foo".
Merci pour toute lumière que tout le monde peut apporter à ce sujet.
EDIT : Merci pour l'aide. Pour résumer ce que je comprends, le sel rend le mot de passe haché plus complexe, ce qui le rend beaucoup moins susceptible d'exister dans une table arc-en-ciel précalculée. Ce que j'ai mal compris avant, c'est que je supposais qu'une table arc-en-ciel existait pour TOUS les hachages.