Je vais donner un peu différente sur ce.
J'ai toujours stocker le sel mélangé avec le salé-hachage de mot de passe.
Par exemple, je vais placer la première moitié du sel avant de le salé-hachage du mot de passe, et la dernière moitié du sel après la salée hachage du mot de passe. L'application est au courant de cette conception peut donc récupérer ces données, et d'obtenir le sel et le salé-hachage de mot de passe.
Mon justification de cette approche:
Si le mot de passe/hachage de données est compromise et tombe dans les mains d'un attaquant, l'attaquant ne sais pas ce que le sel est en regardant les données. De cette façon, un attaquant est pratiquement impossible d'effectuer une attaque par force brute pour obtenir un mot de passe qui correspond au hachage, car il ne sait pas la valeur de hachage pour commencer avec, et n'a aucun moyen de savoir quelles sont les parties des données sont les parties du sel, ou de parties de l'salé-hachage de mot de passe (à moins qu'il ne sais de votre application logique d'authentification).
Si la salé-hachage de mot de passe est stocké en tant que-est, puis une attaque par force brute peut être exécuté de manière à obtenir un mot de passe que quand salées et hachées produit les mêmes données que le salé-hachage de mot de passe.
Cependant, par exemple, même si la salé-hachage de mot de passe est stocké en tant que-est, mais pré-entrée avec une seule aléatoire octet, aussi longtemps que l'attaquant est pas au courant que ce premier octet est à jeter, ce serait également augmenter la difficulté de l'attaque. Votre demande de savoir à jeter le premier octet de données utilisées pour authentifier l'utilisateur.
La conclusion de cette..
1) ne Jamais stocker les données que votre application d'authentification utilise dans sa forme exacte.
2) Si possible, gardez votre logique d'authentification secret pour plus de sécurité.
Aller une étape plus loin..
Si vous ne pouvez pas garder votre application logique d'authentification secret que beaucoup de gens savent comment vos données sont stockées dans la base de données. Et supposons que vous avez décidé de stocker le salé-hachage de mot de passe mélangé avec le sel avec un peu de sel en ajoutant le sel hachage de mot de passe, et le reste de l'ajout de sel.
Lors de la génération aléatoire de sel, vous pourriez aussi au hasard décider quelle est la proportion de votre sel que vous allez stocker avant/après le salé-hachage de mot de passe.
Par exemple, vous générez un hasard sel de 512 octets. Vous ajoutez le sel à votre mot de passe, et d'obtenir le SHA-512 hash de votre salé-mot de passe. Vous aussi générer un entier aléatoire de 200. Vous stockez ensuite les 200 premiers octets du sel, suivie par le salé-hachage de mot de passe, suivi par le reste du sel.
Lors de l'authentification d'un utilisateur de saisie mot de passe, votre application va passer au-dessus de la chaîne, et d'assumer la première 1 octet de données est la première 1 octet, le sel, suivie par le sel de hachage. Ce pass sera un échec. L'application va continuer en utilisant les 2 premiers octets des données comme les 2 premiers octets du sel, et répéter jusqu'à ce qu'un résultat positif est constaté après l'utilisation de la première tranche de 200 octets, comme les 200 premiers octets du sel. Si le mot de passe est incorrect, l'application va continuer à essayer jusqu'à ce que toutes les permutations n'en trouve aucun.
Les avantages de cette approche:
L'accroissement de la sécurité - même si votre logique d'authentification est connu, exactement la logique n'est pas connu au moment de la compilation. Il est pratiquement impossible d'effectuer une attaque par force brute, même avec la connaissance exacte de la logique. Augmentation des longueurs de sel, va augmenter la sécurité.
Les inconvénients de cette approche:
Depuis l'exacte logique est déduit au moment de l'exécution, cette approche est très gourmand en temps PROCESSEUR. Plus la longueur de la le sel, les plus gourmandes en ressources PROCESSEUR, cette approche devient.
L'authentification des mots de passe incorrects impliquera la plus élevée du PROCESSEUR. Cela peut être contre-productif aux demandes légitimes, mais augmente la sécurité contre les pirates.
Cette approche peut être mis en œuvre de diverses manières, et peut être encore plus sécurisée à l'aide de largeur variable sels et/ou salés-hachage de mots de passe.