给定一个使用默认 ASP.NET Membership Provider 的站点,并且成员密码格式配置为使用散列,并且散列算法是 SHA1(默认值;LinkedIn 使用的相同),并且假设成员数据库被破坏,是否有任何额外的可以采取哪些措施来进一步减少对所述数据的利用?
从快速查看成员模式来看,密码似乎使用了盐键。这个措施够吗?
简而言之:对于存储密码,您永远不应该使用 MD5、SHA1、SHA256、SHA512、SHA-3 等... bcrypt是存储密码的唯一安全方法。
以下是上述肯定的原因:
自从我不久前的问题
我开始使用BCrypt作为我的密码哈希码,从我一直阅读的内容来看,即使你掌握了 users 表,也很难从中获得存储密码的纯文本。
我在我的自定义会员提供程序中使用它,所以我可以托管我自己的密码。
来自博客文章:
为什么选择 BCrypt?最流行的密码存储方案基于快速散列算法,例如MD5和SHA-1。BCrypt 是一种计算成本高的自适应散列方案,它利用Blowfish 分组密码。它非常适合密码存储,因为其缓慢的初始化时间严重限制了暴力破解密码尝试的有效性。它增加了多少开销是可配置的(即自适应部分),因此测试密码候选所需的计算资源可以随着硬件功能的进步而增长。
从 codahale.com,您还可以阅读如何安全地存储密码......
顺便说一句,BCrypt 项目在 Codeplex