【问题标题】:Collecting password topologies from users in a secure way以安全的方式从用户那里收集密码拓扑
【发布时间】:2017-01-25 17:01:01
【问题描述】:

当用户在我们的网站上注册时,我们会遵循一些明确定义的安全标准:

  • 生成盐
  • 哈希(盐+密码)
  • 在数据库中存储散列密码和盐

最近,一个热门话题是“密码拓扑”。例如,我们应该阻止用户生成像Ullllldd(大写,5 倍小写,两位数)这样的密码,因为如果攻击者只关注该拓扑,它们很常见并且更容易被暴力破解。我们现在想生成有关我们网站上使用的最常见拓扑的信息。显然,我们不能在我们的数据库中使用散列密码信息——我们无法从该散列中恢复密码信息。我们的想法是保留一个在新用户注册时填充的拓扑表。例如:

用户“joe”使用密码“pass”注册。我们看看拓扑“uuuu”是否已经存在。如果没有,将其添加到数据库表中,count = 1。如果有,则将 count 增加 1。这当然有点冒险:如果我们的数据库受到威胁,我们的攻击者会突然知道我们最常见的拓扑!

所以我的问题是:如何在不产生新的安全风险的情况下收集和存储密码拓扑信息?

【问题讨论】:

  • 密码 => 拓扑 => 具有固定盐的哈希拓扑 => 发送到单独的存储机制 => 用加密保存在那里。这意味着这两种存储机制都必须被破坏。

标签: security passwords password-protection


【解决方案1】:

您的数据库应该是每个使用过的拓扑的计数,而不是存储附加在拓扑中的用户 ID。在第二个表上,存储该数据库中表示的用户 ID。

诀窍在于填充和更新数据库。每当用户更改他们的密码时,收集和存储有关密码拓扑的信息。在这里,您将能够计算旧拓扑和新拓扑并减少/增加计数。如果用户没有被表示到数据库中,添加他们,然后简单地将他们的新拓扑添加到计数中。

【讨论】:

  • 这并不能解决我的安全问题:如果数据库被入侵,所有已知的拓扑都会泄露给黑客,黑客可能会滥用这些信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2019-07-17
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2015-07-29
  • 2015-07-13
相关资源
最近更新 更多