当用户在某个地方输入一个新的密码时,提供系统接收到的字符数量的反馈是很有帮助的。
在我刚刚运行的用户体验(UX)测试中,我的用户在她的密码管理器中创建了一个密码,然后尝试将它粘贴到终端中的新密码提示中。但是,由于没有对当前系统提供反馈(即光标没有显示输入的点),所以粘贴不起作用并不明显。
因此,从UX的角度来看,最好是显示一些点,这样用户就可以知道实际出现了哪些字符。
这种反馈会以任何显著的方式降低安全性吗?显然,它会给肩部冲浪者的长度,可以用来缩小攻击范围,但我希望对更好的UX影响是最小的。
为了提供一些上下文,这是如果用于终端命令行接口(CLI),特别是交互式输入提示。它现在没有提供任何反馈,但是我正在考虑打开一个特性请求来这样做,并且想知道安全性的影响。
发布于 2021-08-31 18:53:11
知道密码的长度对猜测或破解密码的容易程度并没有太大的影响。
如果密码是很容易猜测或在字典中,那么长度是无关的。
如果密码是随机的,并且您试图强行执行(以某种方式获得了哈希),那么知道长度不会有多大影响,因为破解时间随长度增长的速度有多快。
例如,假设您知道密码有8个字符长,但是您不知道密码是由什么样的字符组成的。野蛮-强迫一个8个字符的密码(假设每个字符有95个可能的选项),以600亿散列每秒(从MD5到一个像样的GPU)将需要大约31个小时。
如果您不知道密码的长度,那么您可能会尝试蛮干--首先强制使用较短的密码。但暴力-强迫所有的密码从一个字符到七个字符只需20分钟,因为每增加一个字符使攻击时间延长95倍。
因此,通过隐藏密码的长度,您只会获得非常小的好处(即大约1%),并且只在一个非常特定的情况下(攻击者试图对哈希进行暴力攻击)。
发布于 2021-08-31 23:48:22
具有这种行为的UI确实存在。我见过几个没有提供任何视觉反馈的。我也看到过一些随机反馈。
这是安全问题吗?好吧,想想密码的长度。我认为8-15个字符是用户的合理期望(有些用户会用更长的密码破解银行,但我们暂时跳过它们)。在该范围内有8个可能的密码长度,这意味着您正在“泄漏”3位信息。
考虑到我不相信有任何密码强度算法可以使结果准确地在3位内,我认为有很好的理由,为什么几乎所有的密码输入泄漏这些信息。用户体验的价值足以超过安全性的好处(请记住,可用性和安全性始终是平衡的。你不能只关注其中一个)。
事实上,我发现越来越多的系统提供了你的密码,如果你点击一个按钮。因此,如果说有什么区别的话,实际的系统将开始远离“模糊密码的长度”。
我所能想到的唯一真正有意义的攻击是,如果我碰巧在一家公司承担了密码的长度,并利用它来优先处理较短的密码,首先尝试破解密码。但即便是在那时,也很难争论到底是哪一个问题:显示的密码长度,或者它最初是一个弱密码。
发布于 2021-08-31 15:17:19
威胁的情况极为有限。一个人必须是实际存在的,并且能够数出“点”才能得到长度。这比能够读懂课文要困难得多,因为大脑没有模式可以有效地解析。那他们还得用暴力强制密码。
即使攻击者获得了大致长度范围的知识,以这种方式提供反馈也不会以任何重要方式降低凭据的风险。
https://security.stackexchange.com/questions/254788
复制相似问题