本文提出了用于检测密码数据库是否已被破坏的 Honeywords 的概念。
据我了解,它的工作原理是这样的:
您为每个用户保存 n 个密码哈希,其中一个实际上包含真实密码,而 n-1 个包含所谓的 honeywords(假密码)。正确的密码哈希存储在这些 Honeyword 哈希之间的随机索引中。
如果现在在登录尝试中使用其中一个 Honeywords 而不是真实密码,则服务器可以禁止该帐户,触发静默警报或将攻击者重定向到某种蜜罐。无论哪种方式,服务器都会知道密码数据库已被破坏。
为了检查密码是否真实,服务器确定给定密码哈希的索引并联系另一个“安全”服务器,该服务器确认这是否是该用户的正确索引(或 Honeyword 索引)。
这种方法真的增加了任何现实生活中的安全利益吗?
这是论文中的攻击场景,honeywords 应该提供帮助:
密码哈希文件被盗:攻击者能够以某种方式窃取密码哈希文件,并使用离线蛮力计算解决许多密码问题。他可能更普遍地能够窃取许多系统上的密码哈希文件,或者在不同时间窃取一个系统上的密码哈希文件。
在这种情况下,攻击者显然已经获得了对系统的访问权限。
- 那么他真的需要密码数据吗?
- 如果他能够访问密码存储,那么他是否也能够访问识别真实密码的“安全”索引存储?仅仅在两台服务器上分发身份验证对我来说似乎并不安全。
- 如果受感染的系统可以找出哪个是正确的索引,那么攻击者当然也可以。
也许我在这个概念中遗漏了一些东西,但是确保密码被安全地散列并且第一层安全性首先阻止攻击者不是更有用吗?
Honeywords 是否值得考虑将它们放入现实生活中的 Web 应用程序中?