BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

快速哈希算法破坏了加密的安全性

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2012年8月5日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

像MD5、SHA和SHA1之类的快速哈希算法的用意并不在安全性——保护重要的信息,特别是密码,哈希算法必须有意地减慢反向暴力破解速度。Troy Hunt是一位微软的MVP,它演示了SqlMembershipProvider所提供的密码哈希值如何易于被暴力破解。

SqlMembershipProvider是VS 2010中ASP.NET web应用程序模板中的默认成员(membership)提供程序。Troy在他的文章《我们的密码哈希值没有遮挡(Our password hashing has no clothes)》中演示了经过SqlMembershipProvider中SHA1哈希算法处理的密码安全性是如何被破解的,其中使用的是GPU、名为hashkiller的字典以及暴力破解算法。在规模为40000条的真实密码样本中(来自于之前的一次攻击),算法在45分钟内破解了24710个,占总体样本的67%。 其中包括被认为是很强壮的密码:

像“volleyball6”,有11个字符,两种字符类型。甚至还有“zaq1@WSX”——由八个字符组成,其中有大写、小写、数字和符号,肯定足以通过大多数安全策略,但是即便被存储为“安全的”哈希值,也完全没用。

问题在于你拥有了可能的密码字典之后可以快速创建新的哈希值,并且硬件变得越来越快。

那么如何来解决这个问题呢? 密钥延伸(Key stretching),通过多次迭代哈希算法,能够提供一种方式来让哈希算法变得足够慢,使得暴力破解更加困难。BcryptPBKDF2都是这样的算法——它们叫做适应性算法,因为通过增加迭代的次数,会随着时间推移而变得更慢(因为硬件变得更快)。Bcrypt.NET实现了前者,而DefaultMembershipProvider实现了后者。 DefaultMembershipProvider对SHA1使用了1000次迭代,它是VS2012的ASP.NET MVC 4模板政所提供的默认选项。Troy的文章《.NET中更强的密码哈希算法(Stronger password hashing in .NET)》说明了如何使用这些方法,以及如何把应用程序迁移到使用更强壮的哈希算法,而不会破坏你的身份验证过程。

查看英文原文:Fast Hashes Kill Cryptographic Security

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT