多重密码哈希

3
我目前正在开发一个需要高安全性的Web应用程序,我一直在思考密码处理。使用哈希密码和足够大的盐是必须的,但是使用不同的盐或不同的算法多次哈希密码是否有益呢?
我不是指你应该多次哈希密码来生成密码哈希值,例如Hash(Hash(Hash(salt + psw)))=pswhash,而是考虑使用Hash(Hash(Hash(salt1 + psw)))=pswhash1Hash(Hash(Hash(salt2 + psw)))=pswhash2,然后在登录时将两者进行比较。使用此例程,攻击者不仅必须找到一个生成pswhash的密码,还必须找到一个能正确生成两个哈希值的密码。这样,冲突的可能性几乎为零,但攻击者可以使用第二个哈希值确定第一个哈希值的密码是否正确。
关于应用程序的其他信息: 该应用程序主要是我们公司的内部应用程序。所有连接都使用https处理,所有用户名对于此应用程序都是唯一的(因此您无法选择用户名),所有密码对于此应用程序也是唯一的(随机生成的,您不能选择它们)。我们主要担心在我们做出反应之前有人未经授权就能访问系统。如果我们有时间做出反应,那么找到确切的密码并不是什么大问题。

1
这个关于编程的问题在Programmers网站上有详细的优缺点解释:http://programmers.stackexchange.com/questions/115406/is-it-more-secure-to-hash-a-password-multiple-times - Alex Feinman
2个回答

5

使用经过验证的技术,例如PBKDF2,而不是尝试自己开发。


谢谢,但我并不想创建自己的密码或KDF。我只是想知道是否可以从多个方面受益于哈希/加密密码,并进行双重(或更多)比较。 - Lobo
1
@Lobo:我的观点是,使用像PBKDF2这样的已建立技术将比你提出的方法更简单且(可能)更安全。 - LukeH

0

你应该对密码进行多次哈希,足够多次以占用好几分之一秒的时间。这样,即使黑客能够访问你的数据库,也无法逐个破解密码,因为所需的处理能力呈指数级增长。

请参阅相关信息的此问题

我认为使用多个盐进行哈希基本上是另一种重新哈希的方式,是通过混淆来实现安全性,而不是这样做,我会坚持重新哈希。


我并不是在追求重复问题。我在考虑碰撞风险(尽管很小),如果比较多个哈希以避免碰撞是否有益或有风险。 - Lobo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接