首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安全检测密码匹配的账号?

如何安全检测密码匹配的账号?
EN

Stack Overflow用户
提问于 2013-01-16 04:05:23
回答 2查看 215关注 0票数 1

在我们的留言板上,我们使用密码匹配来帮助检测具有多个注册的成员,并针对恶意木偶帐户执行我们的规则。当我们有SHA256散列和每个站点的salt时,它工作得很好。但我们最近遇到了一个令人难堪的安全漏洞,其中许多密码散列都落入了字典攻击的陷阱。因此,我们强制更改密码,并切换到bcrypt +每个用户的盐。

当然,现在密码匹配不再起作用了。我没有接受过密码学或计算机科学方面的正规教育,所以我想问一下是否有安全的方法来解决这个问题。与我共事的人建议使用松散散列算法的第二个密码字段,这种算法故意有很多冲突,但在我看来,这要么会导致大量的误报,要么会大大减少搜索空间,使其不安全。我的想法是坚持使用bcrypt,但存储第二个密码散列,该散列使用每个站点的盐和极高的迭代计数(比如在现代硬件上生成10+秒)。这样,拥有相同密码的用户将拥有相同的散列,但不能通过字典攻击轻松推断。

我只是想知道这是否有明显的问题,或者是否有人比我更有知识的人有任何建议,以更好的方式来处理事情?在我看来,它似乎可以工作,但我已经了解到,当涉及到安全性时,可能会有很多隐藏的陷阱。:P谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-16 04:51:56

简短的回答

任何允许您检测两个用户是否具有相同密码的算法也将允许攻击者检测两个用户是否具有相同的密码。这实际上是一种预计算攻击。因此,您的问题不是可以安全地解决的。

示例

假设我已经破解了你的密码,我已经知道了你的哈希值是如何计算出来的。

如果我可以将您的密码转换算法应用于" password“,并快速辨别哪些用户使用" password”作为他们的密码,那么系统就容易受到某种形式的预计算攻击。

如果我必须进行昂贵的计算来确定每个用户的密码,而计算用户A的密码所花费的工作并不能使计算用户B的密码变得更容易,那么系统是安全的(抵御这些类型的攻击)。

进一步考虑

您将每个站点的salt与bcrypt和高迭代次数一起使用的想法乍一看可能很吸引人,但它就是不能扩展。即使在10秒内,也就是每分钟6次密码猜测,每小时360次,每天8640次,或者每年3M次(这是很多)。这只是一台机器。在这个问题上抛出一个由机器组成的僵尸网络,或者一些GPU,这个数字就会突然飙升。仅300台机器/核心/GPU就可以在一天内消除250万次猜测。

因为您将对每个密码使用相同的盐,所以您允许攻击者一次破解您用户的所有密码。通过仅使用每个用户的salt,攻击者一次只能有效地尝试破解单个用户的密码。

票数 1
EN

Stack Overflow用户

发布于 2013-01-17 03:57:25

上面给出的简短答案假设攻击者始终具有与服务器相同的访问权限,这可能是不合理的。如果服务器以永久的方式被破坏(归攻击者所有),那么没有任何方案可以拯救您-攻击者可以检索用户设置的所有密码。更常见的模型是,攻击者能够在有限的时间内访问您的服务器,即服务器上线后的某个时间点。这带来了执行您所询问的密码匹配的机会,而无需提供对攻击者有用的信息。

如果在注册或更改密码时,您的服务器可以访问明文形式的密码,那么服务器可以遍历系统上的所有用户帐户,用每个用户的盐对新密码进行哈希处理,并测试它们是否相同。

这不会引入任何弱点,但只有当您的防止多个虚假帐户的算法可以将其用作一次性输入(“此密码与这些帐户匹配”)时,它才会对您有用。

存储这些信息以供以后分析显然是一个弱点(因为如果攻击者可以获得您的密码数据库,他们很可能也可以使用相同的密码获得此帐户列表)。一种中间立场可能是存储信息以供每日审查-减少可用于临时破坏您的存储的攻击者可用的全部有用信息。

所有这些都是没有意义的,如果加盐和散列发生在客户端-那么服务器就不能执行测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14345923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档