首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >散列密码和处理重复密码

散列密码和处理重复密码
EN

Security用户
提问于 2015-11-20 11:14:00
回答 4查看 2.2K关注 0票数 8

目前,我的项目仍然使用MD5哈希加密密码。是的,我知道。

我计划更新密码系统,以便在PHP中使用更新的password_hashpassword_verify函数,这将提高用户密码的安全性。

然而,我的主持人团队表达了一个担忧:由于我们的核心规则之一禁止用户拥有多个帐户,他们需要知道两个帐户是否属于同一个人。他们使用的一种方法是检查两个可疑帐户上的MD5哈希是否相同--如果是,那么帐户具有相同的密码,猜疑加剧。但有了拟议的新系统,这将不再可能,因为这两个帐户将产生不同的散列。

为了找到一个折衷方案,是否有任何方法可以使用password_hash的更好的安全性,同时仍然为版主团队提供了一种方法来检测两个帐户何时共享相同的密码?

目前,我的想法是以其他方式对密码进行散列,从而生成相同密码的哈希,但我担心这会重新引入与我们试图从MD5中逃脱的漏洞相同的漏洞。这里是否有任何选择,或者我是否必须使用行政决策权来推翻这一关切?

EN

回答 4

Security用户

回答已采纳

发布于 2015-11-20 11:39:29

password_hash对相同密码产生不同结果的原因之一是防止信息泄漏,如果攻击者获得哈希,密码就更难破解。你真的不想损害这个安全特性--它不仅会减少对客户数据的保护,而且还会滚动你自己的解决方案,而不是使用得到良好支持和接受的解决方案。

使用相同的密码来检测同一个帐户持有人的多个帐户是个坏主意--它必然会导致误报并导致您阻塞合法帐户。

票数 39
EN

Security用户

发布于 2015-11-20 17:07:30

X-Y问题

您拥有的是经典的X问题 (xyproblem.info)。您希望防止用户拥有多个帐户,并且错误地认为,实现已损坏的密码系统和比较散列将帮助您解决这个问题。所以你问如何检测相同的密码。正如@Ggd的答案所描述的那样,尝试这样做会导致错误,很容易被规避,并迫使您放弃尝试过的和真实的密码处理方法。

解决您真正的问题

你的问题背后的问题是“我如何阻止用户拥有多个帐户?”这个问题被问到在此之前。然而,一个问题是2008年的问题,甚至提到了“具有相同密码的帐户”作为缓解的一个因素,而另一个问题没有详细说明/选择,因此似乎应该重新讨论这个问题。

正如你和你的公司已经发现的那样,没有简单和简单的解决方案。你可以做的是有一个聪明的多前线努力,以尽量减少问题。有效检查包括:

  • IP日志记录:这可以为共享单个公开IP的组创建假阳性,也可以通过使用代理、tor或DHCP请求来避免。然而,这可能是调查这种可能性的良好的第一步。
  • 电子邮件验证:要求用户提供并单击通过电子邮件验证是另一个有效的,但容易路由-周围,检查。
  • 手机验证:类似于电子邮件,但需要通过短信对注册(较少的侵入性)或登录(更多的侵入性,可能的DoS,如果手机/信号不可用)。
  • 跟着钱:需要信用卡或链接到一个有效的PayPal (或其他服务)帐户。可能执行一个微事务,并要求详细信息,以证明帐户是在控制的用户。
  • 特定域证书:用户是否需要认证(例如,注册护士的网站可能需要一个有效的许可证号码)?

解决你的问题的实际办法无疑需要一个平衡。除非你更关心的是“一个人,一个账户”,而不是增长和牵引力,否则你不想阻止那些门槛太高的用户。作为这种权衡的一部分,你绝对不想用一个糟糕的密码系统来危害你的用户的帐户安全:非法入侵的法律、财务和声誉成本远远超过任何(可疑的)利益。

票数 21
EN

Security用户

发布于 2015-11-20 19:29:46

我要说,有一种方法可以安全地做到这一点-基于你问题中的这一声明:

他们使用的一种方法是检查两个可疑帐户上的MD5散列是否相同。

这并不是一种使用相同密码自动识别任意一对帐户的方法。您只需要一种方法,以决定一对帐户是否共享相同的密码,一旦已经存在怀疑。

基于此,我会这样解决这个问题:

  1. 使用咸散列安全地存储密码。
  2. 创建一个额外的表,列出涉嫌使用相同密码的帐户对,以及每对帐户的状态。
  3. 当怀疑一对密码使用相同的密码时,将其插入到状态设置为未知的可疑表中。
  4. 每次登录成功后,搜索可疑表中的用户。
  5. 如果在可疑表中找到用户,则对该对中的其他用户测试密码。如果状态未知,则将其更改为相同或不同。

当然,正如其他人所指出的,密码相同只是许多人中的一个信号。最可靠的方法是将许多不同的信号结合起来。我在这里提出的核查方法只有在怀疑低于或超过采取行动的门槛时才应作为最后的措施。

如果其他信号可以清楚地将帐户对放在阈值的一边,而不管密码的等效性如何,那么首先就没有必要将其放在可疑表中。

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

https://security.stackexchange.com/questions/106026

复制
相关文章

相似问题

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