当前位置:  开发笔记 > 运维 > 正文

为什么检查错误的密码比检查正确的密码需要更长的时间?

如何解决《为什么检查错误的密码比检查正确的密码需要更长的时间?》经验,为你挑选了5个好方法。

这个问题一直困扰着我.

在Linux上,当被要求输入密码时,如果您的输入是正确的,它会立即检查,几乎没有延迟.但是,另一方面,如果输入错误的密码,则需要更长的时间来检查.这是为什么?

我在我尝试过的所有Linux发行版中都观察到了这一点.



1> paxdiablo..:

实际上,这是为了防止暴力攻击每秒尝试数百万个密码.我们的想法是限制密码的检查速度,并且应该遵循许多规则.

成功的用户/密码对应立即成功.

可以检测到的失败原因应该没有明显区别.

最后一个特别重要.这意味着没有有用的消息,如:

Your user name is correct but your password is wrong, please try again

要么:

Sorry, password wasn't long enough

在"无效用户和密码"和"有效用户但无效密码"失败原因之间甚至没有时间差异.

每次失败都应该提供完全相同的信息,文本和其他信息.

有些系统甚至更进一步,在每次故障时增加延迟,或者只允许三次故障,然后在允许重试之前有大量延迟.


BCS:如果您已经拥有足够权限的有效登录来执行您的建议,那么您可能不再需要暴力攻击(因为您可以使用其他攻击媒介).延迟对外部攻击者最有用.
它不会阻止任何人,但你仍然需要延迟"一段时间".即使是微小的延迟也会导致检查数百万个密码无效,如果您在登录时这样做,您将被检测到 - 您是否认为登录失败没有记录任何内容?

2> RossFabrican..:

这使得猜测密码需要更长的时间.



3> Daniel Brück..:

我不确定,但是在输入错误的密码之后整合延迟以使攻击更加困难是很常见的.这使得攻击实际上是不可行的,因为它只需要很长时间来检查几个密码.

即使尝试一些密码 - 生日,猫的名字,以及类似的东西 - 也变得毫无乐趣.



4> 小智..:

基本上是为了减轻暴力和字典攻击.

来自Linux-PAM应用程序开发人员指南:

计划延误

extern int pam_fail_delay(pam_handle_t *pamh, unsigned int micro_sec);

Linux-PAM提供此功能,以便在调用pam_authenticate()失败并且控制返回给应用程序之前延迟时间延迟.使用此功能时,应用程序员应检查它是否可用,

#ifdef PAM_FAIL_DELAY
    ....
#endif /* PAM_FAIL_DELAY */

通常,应用程序通过调用pam_authenticate()或pam_chauthtok()来请求Linux-PAM对用户进行身份验证.这些函数调用相关Linux-PAM配置文件中列出的每个堆叠认证模块.按照此文件的指示,其中一个模块可能会失败,导致pam _...()调用返回错误.期望在应用程序继续之前还存在暂停.这种延迟的主要原因是安全:延迟主要是为了阻止暴力字典攻击,但也有助于阻止定时(隐蔽频道)攻击.



5> Adam Liss..:

这是一种非常简单,几乎毫不费力的方式来大大提高安全性.考虑:

    系统A没有延迟.攻击者有一个程序可以创建用户名/密码组合.以每分钟数千次尝试的速度,只需几个小时即可尝试每个组合并记录所有成功的登录.

    B每次不正确的猜测后,系统会产生5秒的延迟.攻击者的效率已经降低到每分钟12次,有效地削弱了蛮力攻击.而不是几个小时,可能需要几个月才能找到有效的登录信息.如果黑客是那么耐心,那么他们就会变得合法.:-)

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有