在多个 Ubuntu 版本上都多次观察到了这个问题。如果您在 UI 模式或终端中输入错误的密码,它会花一点时间才会显示密码错误。
正确密码检查几乎是即时的,但错误密码检查需要的时间稍长一些。虽然时间不长,但仍然比正确密码要长得多。
为什么会这样?
答案1
正如 Marc 已经提到的,这种机制应该可以减慢自动密码猜测的速度。
Linux 通常使用pam_unix
模块来检查本地用户的密码。此模块(以及许多其他身份验证模块)的默认设置是
[...] 请求大约两秒的故障延迟。
如上所述pam_unix 的手册页(见参数nodelay
)
因此,攻击者的速度会大大减慢(每分钟猜测次数不超过 30 次)。某些实现还会增加输入正确密码之前的延迟时间。
答案2
这是一项安全功能,可以防止或至少减慢使用暴力或字典破解密码的尝试。
如果您手动输入密码,那么接受密码和不接受密码之间的延迟差异可能很小。但是,如果没有此安全功能,自动化系统每秒可能会尝试数千个密码。
在 stackoverflow 上的这个问题中有更多详细信息: 为什么检查错误密码比检查正确密码花费的时间更长?