当我输入错误密码两次以上时,某些网站会显示剩余密码重试次数。例如,显示在锁定我的帐户之前还有 3 次重试。从安全角度来看,这很危险吗?
显示剩余密码重试次数是否存在安全风险?
首先,锁定帐户是个坏主意。 通过使用暴力攻击将“猜测”密码的“坏人”拒之门外,您似乎正在使您的组织更加安全,但您真正解决了什么?即使有这个策略和一个从不犯安全错误的完美用户群,攻击者也可以通过重复使用密码“aaa”来锁定关键用户的帐户,从而对您的组织执行拒绝服务攻击。考虑一下如果您的攻击者获得了您整个 IT 部门的用户名列表的副本会发生什么:突然间,IT 本身——原本能够解锁其他用户的组织——本身就完全关闭了。
在实施策略之前,请始终考虑威胁模型是什么。决心伤害您的组织的“坏人”会找到其他攻击媒介。你的封锁政策甚至不会让民族国家的行为者(如俄罗斯、中国或美国国家安全局)感到不安;一个坚定的黑客只会找到其他方法(比如社会工程);并且它只会伤害您服务的合法用户,无论您设置的锁定计数器多低或多高。
故事的寓意: 不要锁定帐户。 相反,做苹果对 iPhone 所做的事情:每次登录尝试都会使登录延迟加倍,因此在十多次失败后,您必须在每次连续尝试之间等待一小时。这足以防止“坏人”进行暴力攻击,但仍然足够短,合法用户可以花那个小时弄清楚他们的密码是什么,并在午餐后正确输入密码——或者联系 IT 并道歉寻求帮助. (类似地,“泛滥”策略通常可以在防火墙的 IP 地址级别实施,而不仅仅是在软件中的用户帐户级别,如果您担心专门的攻击者试图暴力破解许多不同的帐户.)
如果你不锁定账户,你就不需要有一个柜台——或者显示它。
[另请参阅:关于类似问题的出色答案]
这取决于您的锁定机制。如果无效登录在一段时间后被重置并且锁定的帐户未解锁,则显示计数器可以帮助攻击者不锁定帐户。但是熟练的攻击者会预先确定锁定策略,并在猜测密码时将其考虑在内。所以影响是有限的。
此外,依靠它来保护您的登录机制是没有意义的。您应该有一个合适的密码策略和一个与之匹配的锁定策略。如果密码策略很强,攻击者将不得不猜测很多次才能正确。如果您在尝试 20 次后锁定帐户,则几乎没有机会受到威胁。
您必须问自己:向真正的用户展示这些信息有什么好处?通常,发生锁定问题是因为尝试次数设置得太低。3 或 5 是常见的选择。NIST(由于政府关闭而目前不可用,因此还没有直接参考)建议少于 100 次尝试。
NIST 有一点:想一个密码,攻击者在 3 次尝试中都不会猜到,但他们会在 100 次尝试中猜到。所有攻击者都使用不同的字典和方法。如果密码不安全,无法承受 100 次猜测,也可以使用更少的尝试来破解它——尽管这种可能性较小。因此,一个好的密码策略是必须的。
当站点恢复时,我将添加 NIST 参考。Troy Hunt有一些很好的博客文章,其中总结了密码和登录机制。他也是 NIST 指南的粉丝。
原则上,不,它不应该是安全风险。如果是这样,那么您将通过默默无闻(隐藏信息)来依赖安全性。
隐藏计数充其量只会给对手带来轻微的不便。
相反,隐藏计数可能会给合法用户带来很大的不便。有时我输入错误的密码,然后再重新输入几次,假设我打错了,这种情况并不少见。如果我知道我将因再次尝试错误而被锁定,我会查找我的密码并复制/粘贴或仔细输入。但是,如果我无意中将自己锁定在帐户之外,那么现在我需要经历很多额外的麻烦才能将其解锁。
从另一个角度来看:对于熟练的攻击者来说并不重要。
今天的在线帐户通常是如何被盗用的1?一种常用的技术有两种变体。
带有密码哈希(或明文密码)的数据库被盗,并被攻击者离线破解。成功破解哈希后,第一次尝试将正确的密码提供给登录机制,因此该控制无效。
这可以是相关服务的数据库,也可以是其他服务的数据库。不幸的是,人们倾向于在多个服务中重复使用他们的密码,因此机会很高,一旦密码与电子邮件地址匹配,它就可以在另一个站点上使用。攻击者可能有两个或三个密码可供选择,但可能不是 20 个。同样,这种控制是无效的。
那么这个控制建立了什么样的安全级别呢?防止没有经验的脚本小子、恶意的前合伙人和爱管闲事的父母想要查看您的个人帐户并随机尝试五个密码的必要级别。不多,但也不少。
1 当然,还有其他更“先进”的技术,如键盘记录、(矛)网络钓鱼、MitM 等,这些控制也无法缓解。