【发布时间】:2017-01-25 17:01:01
【问题描述】:
当用户在我们的网站上注册时,我们会遵循一些明确定义的安全标准:
- 生成盐
- 哈希(盐+密码)
- 在数据库中存储散列密码和盐
最近,一个热门话题是“密码拓扑”。例如,我们应该阻止用户生成像Ullllldd(大写,5 倍小写,两位数)这样的密码,因为如果攻击者只关注该拓扑,它们很常见并且更容易被暴力破解。我们现在想生成有关我们网站上使用的最常见拓扑的信息。显然,我们不能在我们的数据库中使用散列密码信息——我们无法从该散列中恢复密码信息。我们的想法是保留一个在新用户注册时填充的拓扑表。例如:
用户“joe”使用密码“pass”注册。我们看看拓扑“uuuu”是否已经存在。如果没有,将其添加到数据库表中,count = 1。如果有,则将 count 增加 1。这当然有点冒险:如果我们的数据库受到威胁,我们的攻击者会突然知道我们最常见的拓扑!
所以我的问题是:如何在不产生新的安全风险的情况下收集和存储密码拓扑信息?
【问题讨论】:
-
密码 => 拓扑 => 具有固定盐的哈希拓扑 => 发送到单独的存储机制 => 用加密保存在那里。这意味着这两种存储机制都必须被破坏。
标签: security passwords password-protection