Lorsque vous stockez les informations d'identification de l'utilisateur dans une base de données, nous savons tous que le hachage du mot de passe est le strict minimum, mais il est préférable de le saler avant le hachage. Le sel doit être généré de manière aléatoire, suffisamment long et unique pour chaque utilisateur.
Je me souviens d'avoir lu quelque part (mais je ne me souviens plus où) un article sur l'utilisation de deux sels (tous deux suffisamment longs et générés aléatoirement):
Le hachage résultant serait: hash(globalSalt + password + uniqueSalt)
(l'ordre de concaténation n'est pas vraiment important).
Y a-t-il une raison pour laquelle cela serait plus sûr que d'avoir simplement un sel unique par entrée? Nous supposons que l'attaquant a accès aux fichiers de code où le sel global est stocké.
J'ai écrit une réponse, puis lu un peu plus, et modifié ma réponse de manière substantielle. Cette question a déjà été débattue sur Stack Overflow. Le réponse acceptée sur cette question est un bon point de départ, suivez les liens.
Ma prise est que:
Le sel statique (que vous appelez global) a une certaine valeur, car:
Le sel par mot de passe est important pour les raisons suivantes:
Un autre conseil utile que j'ai appris des discussions sur le dépassement de pile est le cryptage du nom d'utilisateur si possible. Je n'y avais pas vraiment pensé, mais cela a du bon sens dans certains scénarios.
EDIT: Veuillez lire l'excellent article "Assez avec les tables arc-en-ciel: Ce que vous devez savoir sur les systèmes de mots de passe sécurisés" . La majeure partie de ce qui est dit sur le hachage du mot de passe est erronée, y compris l'approche "MD5/SHA256 avec sel" utilisée si souvent
Ceci a déjà été posé à StackOverflow: Double-sel pour les mots de passe de hachage?
Je viens de lire cette question et elle m'a rappelé une question que j'ai posée sur SO il y a environ un an: informations complètes sur les sels de hachage . Vous voudrez peut-être relire la question et ses réponses car elle contient d'autres informations qui pourraient être très utiles à quiconque souhaite en savoir plus sur le hachage.
Je dois également noter que la mise en œuvre de l’authentification des utilisateurs en général n’est pas une chose à laquelle vous voulez vraiment vous attaquer par vous-même si vous pouvez l’éviter. Rappelez-vous toujours Ne réinventez pas la roue, sauf si vous envisagez d'en apprendre davantage sur les roues .