密码,盐,哈希,DB:第百万次

时间:2012-02-14 21:04:48

标签: database hash passwords

我知道这个话题已被讨论了一百万次。但这对我来说是新的,我读的越多,我就越不了解实际发生或应该发生的事情。

我将每用户salt添加到用户密码的散列存储中,因此存储的密码散列如下所示:hash(password + perusersalt)。 这导致不同用户的相同密码被存储为DB中的不同字符串。凉。但我并不担心有人闯入数据库并查找散列密码。我担心有人在我的服务器上查询用户名和密码的组合。在这种情况下,密码和散列的密码存储是无用的,因为用户名和密码的正确组合将产生成功的登录。正确?

我认为在这种情况下,盐是无用的,这是正确的吗?因为服务器只接受接口上的用户名和密码(没有传输盐),正常的字典攻击会发生,对吗?

因此盐只是用来模糊用户的密码(只能通过反向彩虹表查找)来访问有权访问数据库的人。 HMM。

相关:我的网络应用甚至不传输普通密码。密码已经在客户端进行了哈希处理,只是完全拒绝对某人被盗密码的责任,整个事情都使用SSL。

这是否意味着我或多或少处于最高安全级别,因为用户名和密码的正确组合当然必须成功登录?

感谢您清理我脑子里的烂摊子。

2 个答案:

答案 0 :(得分:2)

你对蛮力攻击的假设是正确的。如果用户有一个简单的密码,那么salt和hash就不重要了。字典攻击会猜测“密码”并允许攻击者进入。你必须要求用户提供安全密码,然后进行单向加密(用盐哈希),并像你一样使用SSL。

答案 1 :(得分:0)

“密码是[...]哈希客户端[...]拒绝对某人被盗密码的责任,整个事情都使用SSL。”

客户端是否发送散列(密码+盐)?

通过这种设计,客户端并不真正需要密码才能成功登录,它只需要哈希。因此,您可能仍然有责任泄露真实密码(哈希)。