Hachage des mots de passe Avec ASP.NET MVC 3
Je suis maintenant dans le processus d'essayer de comprendre la meilleure façon de hachage du mot de passe de mon ASP.NET MVC 3 application. De ce que j'entends, il est bon d'utiliser le mot de passe et un hasard de sel, puis stocker le mot de passe haché et le sel ensemble. Ma question est de ne pas que faire de l'aléatoire de sel inutile? Je veux dire la raison pour hacher un mot de passe est parce que si quelqu'un pénétrer dans votre base de données, ils n'ont pas la plaine des mots de passe et le sel font qu'il est beaucoup beaucoup plus difficile à inverser la valeur de hachage pour obtenir le mot de passe mais si je stocker le hash du mot de passe, ce qui est le point de sel (à ma connaissance sur le hachage est chaque limité, donc je pourrais être complètement hors de la base avec ma façon de penser).
Ma deuxième question est ce que la méthode de hachage est le meilleur à utiliser? J'ai lu que MD5 (qui est ce que j'ai toujours utilisé) est très simple à déchiffrer. J'entends le bcrypt/sha512 sont très bonnes. Que l'on doit utiliser? Je sais que C# est livré par défaut avec le sha512 de hachage. De ce que je peux voir, bcrypt n'est pas inclus dans le .NET de la bibliothèque, il y a toutes les bonnes bibliothèques de C# et de bcrypt?
OriginalL'auteur ryanzec | 2011-06-18
Vous devez vous connecter pour publier un commentaire.
il n'est pas nécessaire de stocker le sel dans un autre emplacement, vous devez toujours considérer le sel dans connu par un attaquant de toute façon, et son but est de ne pas être un supplément de mot de passe!!!!
.NET cette API va faire tout ce dont vous avez besoin, il va créer de gros de chiffrement aléatoire de sel ainsi que HMACSHA512 de hachage de clé et s'étendant via échange d'octets avant chaque chiffrement AES passer 🙂
http://sourceforge.net/projects/pwdtknet/
+1
pour la belle réponse, surtout "il faut toujours assumer le sel dans connu par un attaquant".La bonne réponse. Tout le sel il y a à faire est de faire de l'acte de la création de tables arc-en-plus difficile, par exemple, si vous avez un sel pour tous les utilisateurs (ou pas de sel) puis pour le crack de 1000 mots de passe, vous ne devez 1 arc-en-ciel de la table. Lorsque vous stockez aléatoire sel avec le mot de passe que vous devez 1000 rainbow tables pour le crack de 1000 mots de passe.
OriginalL'auteur hdizzle
Le salage augmenter la résistance à l'encontre d'un arc-en-ciel/attaque par dictionnaire. Quelques failles de sécurité qui ont eu lieu cette année, parce que l'application web de la base de données contenait les mots de passe sans sel et ils ont été fait avec l'algorithme md5. Ainsi, un simple arc-en-ciel attaque a produit le mot de passe en quelques secondes pour un petit nombre d'utilisateurs qui ont utilisé terrible des mots de passe.
Pour fournir l'authentification de l'utilisateur avec MVC 3, vous devriez vraiment utiliser le cadre pour ce genre de chose. Venir avec votre propre fournisseur d'authentification personnalisé pourrait causer des problèmes si vous ne le faites pas droit.
Prendre un coup d'oeil à
http://msdn.microsoft.com/en-us/library/ff398049%28v=VS.98%29.aspx et http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx. Si vous utilisez l' .NET le système d'adhésion, vous n'avez pas besoin de faire du bas niveau de la base de données ou de gestion de mot de passe. Il suffit de mettre [Autoriser] tags autour du contrôleur actions qui doivent être auth d et votre fait.
OriginalL'auteur mattypiper
Voici une belle C# de mise en œuvre de bcrypt:
http://bcrypt.codeplex.com/
OriginalL'auteur gram
SHA512 est un bon choix pour le hachage .net et si vous stockez le sel avec le mot de passe c'est un peu inutile (mais le "décryptage" encore aurait besoin de plus de temps), mais vous pouvez stocker le sel quelque part d'autre, de sorte que le DB n'est pas assez:
Mise à JOUR:
Comme Mike déjà dit que je suis mal avec le "inutile" énoncé ci-dessus. Même lorsque le sel est connu, il rendra Table Arc-En-Ciel les Attaques inutiles (ou beaucoup plus rare), de sorte que vous devriez toujours utiliser un sel de même lors de l'enregistrement du sel juste à côté de la table de hachage (linux par exemple ne stocker les mots de passe utilisateur dans le fichier de l'ombre dans une forme de "$id$salt$haché")!
OriginalL'auteur ChrFin
J'ai toujours utilisé l'approche suivante pour stocker les mots de passe
Il n'a jamais été une question si il est possible de rétablir le hachage de mot de passe d'origine.
J'ai lu ce post et je peux supposer que 1) si quelqu'un va stocker la base de données, il/elle peut brutforde les mots de passe dans le cas de l'utilisation de la crypto méthode sans une clé secrète. De ce point de vue MD5 et SHA1 et SHA256 avoir la même force à la force brutale. 2) la seule façon d'avoir un très fort de mots de passe à l'aide de la méthode de hachage de la largeur d'une clé secrète qui seront stockées dans l'application (et non dans la base de données). Ensuite, si la base de données sera volé personne ne force brute peut casser votre mot de passe.
OriginalL'auteur Anubis
Si ils piraté dans votre base de données de sécurité pour voler les gens du hachage de mot de passe, alors il est peu probable qu'ils seraient vraiment besoin du mot de passe à ce point. Ils ont déjà accès à toutes les données dans la base de données la plus probable. Un hachage MD5 est probablement pas un problème pour la moyenne site web si c'est quelque chose de simple avec des données qui n'est pas valable. D'autres plus difficile de hachage méthodes serait bien pour des données qui sont plus susceptibles d'être précieux.
OriginalL'auteur Tampa Mike