三连击安全性的弱点


10

我一直在阅读有关安全性的一些文献,特别是密码安全性/加密,而且我一直想知道一件事:三击规则是密码安全性的完美解决方案吗?也就是说,如果将密码尝试的次数限制为一小部分,之后将不接受所有身份验证请求,那是否不能保护用户免受入侵?我意识到获得对某些内容的访问权或控制权并不总是意味着要通过身份验证系统,但是此功能是否会使字典/蛮力攻击过时?有什么我想念的吗?


3
最好在安全性处问这个问题,以备将来参考。
maple_shaft

1
正如我所发现的,总有一个更适合问的地方。不过,谢谢,我会尽力记住这一点。
prelic 2012年

Answers:


13

是的,它将使登录机制无法进行字典攻击。(不过,如果他们获得对数据库的访问权限并不重要。为了安全起见,您需要适当地对密码进行哈希处理和加盐处理。)

它还允许针对特定用户的DOS攻击。假设我想阻止您登录。我要做的就是对您的帐户进行3次伪造的登录尝试,然后在每次您进行必要的操作以重置登录名时再次进行。处理该问题比较棘手。


1
谢谢!出于好奇,将如何处理您描述的后一个问题?举一个真实的例子,大量的在线论坛使用公共用户名作为登录ID(而不是附在acct上的电子邮件或其他内容),这意味着我可以看到每个用户都在使用什么登录。是什么使我无法将每个用户锁定在他们的帐户之外?好的管理员?将每个用户锁定在站点之外似乎很容易。
prelic 2012年

@prelic:好吧,为解决该问题,我将实施类似“如果某个IP地址进行过多无效登录尝试的操作,将其阻止”。这将停止您提到的情况,但不会像僵尸网络那样处理严重的黑客尝试。为此,您需要更高的安全性。
梅森惠勒

4
通常的解决方案是将给定用户的尝试速率从固定ip限制为每分钟5次。它不是完美的,但是通常您不会给其他用户造成问题,除非您碰巧是同一个代理背后的对象
Andrea 2012年

另一种方法是在同一IP两次登录尝试失败后提供验证码-但是,坚定的攻击者可以为此目的租用破坏验证码的机械土耳其人,此外,很难找到一个可以使机器保持有效的验证码出来。
tdammers

3

我也同意,它会使字典攻击作为在没有适当权限的情况下获得帐户访问权限的方式无效。然而:

  • 如果实施不当,这种方法可能会将字典攻击变成针对系统的DOS攻击,从而阻止访问。例如,服务器可能充斥着身份验证尝试。解决此问题的一种方法是让身份验证服务控制对锁定帐户的后续访问的流程。例如,如果一个帐户被锁定,请在每次后续登录尝试之前提出一个延迟。但是,可能会在尝试登录和“拒绝访问”之间设置延迟,这为分布式拒绝服务攻击打开了大门,在此攻击中,攻击者会发起许多同时进行的身份验证尝试。

  • 正如在另一个答案中提到的那样,这也可能使字典攻击变成针对被攻击帐户的合法所有者的原始DOS。减轻对合法所有者的影响的方法包括:

    • 通过不提供有关用户名或密码错误的线索来减慢用户名的运行。这使罪魁祸首猜测用户名的攻击更容易被管理员看到,而效率更低。
    • 在固定次数的失败尝试之后,不锁定帐户,而只是锁定该身份验证模式。换句话说,要求使用其他(可能涉及更多但更不容易受到攻击的)方法来攻击遭到攻击的用户帐户进行身份验证。一个很好的例子是,Android手机在无法使用屏幕解锁图案或PIN进行身份验证后,将要求用户使用其Google登录信息。从理论上讲,这有点像要求被攻击的用户要求其帐户被解锁,但是,它不需要系统管理员的立即干预。
    • 锁定不是尝试锁定帐户(或者对于这种特定的身份验证模式,除了锁定帐户以外,请参见上文),而是尝试从发起攻击的位置进行身份验证。例如,如果通过网络通过用户名和密码进行身份验证,则在尝试失败三次后,您可以防止来自同一IP或子网的用户使用用户名或密码进行进一步尝试。如果很可能有多个用户(包括攻击者)使用相同的IP或子网,则只可以在一段时间内禁用该IP或子网的用户名/密码身份验证,从而使更多涉及的身份验证方法为无辜的攻击者附近的用户。
  • 如果您担心无意中将健忘的用户视为攻击者,那么可以使用登录尝试的频率作为帐户受到攻击的证据,而不是控制一定次数的失败尝试后失败的登录尝试的流量。例如,如果在一秒钟内看到10次身份验证尝试,则可以使用上述方法之一来防止进一步的相似身份验证尝试。或者,您可以使用这种大量的登录尝试作为开始控制流的信号。这种方法在论坛上越来越流行,而在从特定IP进行一定数量的失败登录尝试之后,该IP在短时间内无法进行身份验证。

  • 最后,防止用户反复受到DOS攻击的一种好方法是允许用户重置其密码和用户名。换句话说,将用户名和密码都视为秘密。如果用户名在其他地方使用(例如,在论坛中,如果用户名是用户的显示名称),则只需将此显示名称视为单独的名称即可。这种方法通常用于社交网络,其中身份验证中使用的用户名是一个人的电子邮件地址(可以更改,但很少共享),而网站上使用的显示名是用户定义的,可能会也可能不会被改变。

无论如何,我希望将这些方法中的一种或几种组合派上用场。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.