我知道不允许进行无限次密码尝试的原因-暴力尝试不是肉类漏洞,而是计算机安全问题-但是它们从何处获得第三名?

是否有一项艰苦的研究表明在锁定一个平衡实际安全威胁与可用性的帐户之前,可以选择最佳的数量或范围?

通过仔细考虑,我认为在当今普遍使用的密码复杂性方面,在3次尝试和20次尝试之间没有可测量的安全性差异。

(我知道这可以避开主观性,但是我正在寻找基于度量的意见)

评论

我脑子里也有同样的问题...并且认为3还不够:1.错误地输入了大写锁定,2.错误地输入了大写锁定,3.错误地输入了可能导致帐户被锁定的错误信息。 ..

@Nivas:两次失败之后,您应该放慢速度,观察自己在做什么,而不是恐慌打字。另外,通常锁定仅持续一段时间。您可能会被锁定一个小时,这会将暴力破解帐户的速度限制为每小时尝试3次,并且真正的用户可以在一个小时后重新登录(如果他们那时能记住真实的密码)。
@MarkRipley限时锁定很有意义。

@MarkRipley我们的薪资系统要求使用大写字母,常规字母,数字和特殊字符以及最小长度为16个字符的密码。并且在3次签名后,他们将永久锁定您,因此您需要亲自联系薪资公司以取回您的帐户。可笑。

#1 楼

最近,在奥兰治县举行的OWASP AppSec 2010会议上,AT&T的Bill Cheswick详细讨论了这个问题。他的一些想法,旨在减轻帐户锁定的麻烦:


不计算重复的密码尝试次数(他们可能以为输入错了)
对主要密码进行密码提示,并且没有次要(弱)
允许受信任方担保用户,以便他可以更改密码。
以递增的时间增量锁定帐户
提醒用户密码规则。


评论


我绝对讨厌“密码提示”。该机制实际上有用吗?

–安德鲁(Andrew J. Brehm)
2010年11月19日,9:47

是。 penny-arcade.com/comic/2006/7/12一个很好的提示可能会很有用,而无需向黑客提供任何真实信息。它在很少使用的站点中特别有用,在该站点中,“我的密码是什么?

–旅行
2010年11月19日下午13:39

+1000“提醒用户密码规则。”当我长时间在网站上尝试仅使用文本密码时,我发现它必须有一个数字,我对此很讨厌。然后,我记得我使用了哪个密码并登录。

– Echo说恢复莫妮卡
2010年11月19日17:33

@Echo:也许您应该研究LastPass

– BlueRaja-Danny Pflughoeft
2011-2-23在17:46

“提醒用户密码规则”的另一个障碍。但是,我的情况实际上与@Echo的相反。通常,我尝试使用我的一个更安全(更长,更复杂)的密码,并最终发现该站点的身份验证系统的功能受到限制。当我重设该密码时,尤其令人沮丧的是,该网站没有说明任何限制-让我设置另一个不会“正确”记住的密码,或者想知道为什么我的密码不会被使用。

– Iszi
2011年6月2日14:33

#2 楼

任何符合PCI数据安全标准的网站都必须遵守





8.5.13(通过多次尝试后锁定用户ID来限制重复访问尝试) )

8.5.14(将锁定持续时间设置为30分钟,或者直到管理员启用用户ID)。锁定策略,即使他们的设计人员不一定同意他们实施的策略也是如此。接受卡的网站。

评论


令人恐惧和沮丧的发现。他们需要钢制门,后门需要多个钥匙,但前门未锁定。为了慈善起见,是否有可能存在财务(欺诈和盗窃)数据来支持6次尝试限制?

–布拉德利·克雷德(Bradley Kreider)
2010年11月19日15:08

就是说,如果我失败6次尝试并且必须等待30分钟,那还算不错。这不像需要显式管理员解锁的锁定。我很乐意看到他们的研究虽然导致了第六名...?

–丹·麦克格拉思(Dan McGrath)
2010年11月19日在22:28



如果可能,PCI通常会设置一个最小的基准,最小公分母。尽管我怀疑数字6是否如此重要并受到研究的支持,但出于他们的目的,他们必须输入一些数字,否则强制遵守的意义何在? 1000次尝试同样有效,但毫无意义(尽管可能仍然具有相同的数学效果)。另请参阅security.stackexchange.com/q/622/33

–AVID♦
2010-11-22 10:48

在进行六次尝试后将帐户锁定30分钟,而在第六次尝试后每五分钟允许一次锁定,是否有安全优势?两者都需要花费相同的时间来进行暴力破解,但是后者会使拒绝服务攻击的效率降低。

–超级猫
2014年2月2日在21:21

6太低了。我必须登录许多站点,尽管我很少登录,但其中一些站点需要我定期更改密码。本质上,我必须至少拥有20个密码组合。我不会将它们写下来,所以会很乐意坐下来尝试多种组合。然后只有某些网站将我拒之门外(通常不告诉我他们已经这样做了)。我更希望看到至少10次尝试。

–克里斯·内维尔(Chris Nevill)
2014年7月2日在21:20

#3 楼

我的经验是,锁定机制的流行度正在下降(至少对于Web应用程序而言)。您无需询问一系列失败尝试后就锁定帐户,而是开始要求其他信息以成功进行身份验证。

评论


我看到一些网站要求您在几次密码尝试失败后解决验证码;这对我来说很有意义。

– beetstra
11年5月23日在17:23

@ beetstra,ocr和人类农场可以解决验证码。

– JSON C11
16-09-17在21:56

#4 楼

如果它来自棒球的“三击”规则,而不是技术问题,那也不会感到惊讶。

一个理由(无论如何都用于字母数字密码)是

通常,失败的尝试是类型错误或CAPS开/关问题。因此,您尝试登录并被拒绝(1),然后再次尝试输入,因为您认为键入错误(2),然后意识到CAPS密钥已打开,因此您进行了第三次尝试。

通常在输入数字代码时,并不能真正从网络上解锁手机。

更好的建议是连续两次尝试登录失败之间的延迟会越来越大。首先,您允许即时重试,然后是1秒,2、4、8...。您在两次尝试之间迅速等待一分钟,足以表示任何蛮力攻击。

评论


确保您考虑了攻击者更改用户名的情况。暴力攻击不一定要先深入。他们可以先广度,选择密码并更改用户名。

–丹·麦克格拉思(Dan McGrath)
2010年11月19日13:21

@DanMcGrath与此相关的一些注意事项:强Web密码能完成任何工作吗?

–浓汤
2011-11-30 8:55

#5 楼

我同意OP。如果您考虑锁定可以保护您的利益,则3次或20次尝试(或100次尝试)之间没有区别。
通过这些锁定,您获得的所有成就,除了惩罚健忘的用户外,还可以防止蛮力攻击。
您也可以使用它来触发正在进行攻击的警告,但这不是主要目的(如果确实如此,则意味着您故意对用户进行DoSing只是为了

如果有人拥有您的密码数据库,并且可以离线破解它,那么他们可以进行无限次尝试。您的20个猜想极限在那里没有什么用。响应,或者足够长的时间让攻击者放弃。

Conficker密码数据库IIRC略低于200个密码,并且其中充满了地球上一些最愚蠢的密码。现在,假设您的密码不在此列表中。如果您允许20次密码尝试(例如每15分钟一次)而不进行锁定,则攻击者仅两个多小时就可以通过该列表。

实际上,即使您缩小猜测范围从有关该用户的相关信息(例如,kidsname02,birthday99等)获得的密码,您最终仍将至少获得几十个密码,从而将字典攻击的时间延长到一个小时或更长时间。随着时间的流逝,触发警报的原因应该是几分钟,而不是一小会儿输入错误的密码。许多错误的密码尝试。

就我个人而言,我在15点画了一条线。这完全是任意的,并且几乎是一件实际的事情:我发现任何真正的用户在此之前就已经放弃了。通常,如果尝试的次数很多,则可能是一个过程或会话挂着旧凭据。如果不是这种情况,那么我们可以谈谈寻找攻击的方法。

#6 楼

这是一个愚蠢的任意规则,带有一种奇怪的DDOS攻击风险。可以说Marv讨厌网站X,而网站X的尝试锁定策略次数为Y。 Marv让脚本自动使用伪造的密码随机尝试Y次,可能会引起严重后果。即使密码有效,Marv也可能不会在意并忽略它。这将有效地将许多用户锁定在网站X上,并引起很多用户的沮丧,如果您需要重新设置密码,他们会帮助他们。我很惊讶没有人尝试过这个。

评论


我认为使用“ 3”作为最大尝试次数的任意性已经被大多数先前的张贴者所回答,但是我确实想支持AmaDaden的DoS方案。这是一项技术含量较低的攻击,可能会在业务方面造成大量损失,尤其是在网站没有足够的备用资源来处理它的情况下。

–多米尼克
2011年5月22日在22:44

#7 楼

我相信我要参加这场辩论,但是希望在这里添加一些有用的内容。

帐户锁定政策(大多数情况下,连续无效尝试的次数通常在个位数的范围内组织不是专门针对自动蛮力攻击而设计的。攻击者可以通过猜测个人用于选择其密码的方式,通过


肩膀冲浪来获得密码碎片。毕竟,一次使用密码的顺序是多少次,例如password#01,password#02等等。拒绝提供服务以及相关的业务成本。 Microsoft发布的“帐户锁定最佳实践”白皮书提供的建议值为10。它还说明了如何使用Windows帐户锁定策略中的参数来估计成功攻击的可能性:


例如,假设
管理员使用
LockoutDuration注册表值将帐户锁定为
时重置管理员密码。 >值设置为0,而
LockoutThreshold注册表值设置为
20,恶意用户就有20个猜测
可以使用该密码。如果
锁定持续时间为30分钟,则
恶意用户每30分钟
会对该密码进行20次猜测,直到更改为止。这对
恶意用户可用的
猜测总数有很大的不同。


将最长密码期限设置为42天,第一个
恶意用户针对任何给定密码只有20个猜测
,而
第二个恶意用户有40,320个猜测(20次尝试永久锁定,
每天乘以48个锁定,
乘以用户
更改密码前的42天)。使用
默认密码设置,大约有
10 ^ 12个可能的密码。
这意味着恶意用户具有
大约.000004%(%)
猜测密码的机会。使用
优化的猜测方案,这个
百分比很可能会是一个更大的百分比。选择合适的数字,应该仔细考虑这些决定。因此,可以安全地假定某些组织没有努力计算其帐户锁定策略的货币影响,以及在保留其提供的安全性利益的同时放松其政策的相关利益。

#8 楼

这有两个方面;正如您所提到的,第一是防止暴力攻击。

为此,实际上可以进行任何尝试-3、5、20、2000 ...使用适当的密码策略(长度+复杂度+ ...),并提供足够大的密钥空间,任何形式的节流(每小时X次尝试)都将确保强行强行占领整个空间需要数十年的时间。 (算一算)。

即使-这应该是必需的-锁定只是暂时的,并且在短时间后会自动解锁。

因此,锁定前尝试的次数是任意的。

但是,这里还有另一个更微妙的非数学问题在发挥作用:


对于单个用户而言,重复放置完全没有意义错误密码连续输入2000次。


也就是说,如果您任意选择2000,那么很早就知道这不是合法用户。因此,这实际上归结为有意义的业务以及以业务为中心的风险分析权衡。

我认为,从历史上看,这种权衡更倾向于风险方面-因为密码更短,更简单,所以3或10的差异更大。而且,人们的密码更少,因此更容易记住...而且,用户通常在技术上更精通。

如今,考虑到业务影响,三个确实没有意义。这实际上是一个问题,它对您的应用有意义,什么类型的用户,他们登录的频率等等。我通常建议找出可能的失败次数,合法尝试次数,然后再加倍。

(如@realworldcoder所述,PCI任意选择了六个,如果您要使用PCI,则此处没有太多决定。否则,请选择一个对您有意义的数字。)

#9 楼

关于增加“锁定”时间以延迟连续失败尝试并从而防止暴力破解的建议,请记住这仅适用于有针对性的用户攻击。

如果攻击者仅关心获得进入系统后,他们可以执行广度优先攻击(在循环到下一个密码之前,循环所有已知/猜测的用户名)。补充说,如果做得好,它可能来自分布式的机器网络,很容易看到延迟系统也不起作用。尽早发现攻击的尝试至关重要。

是的,3次尝试是很随意的,并且会带来DoS风险。我真的希望人们不再使用面向公众的系统...请!

另一种解决方案:2因子识别。 RSA令牌。如果只有我们有办法亲自拥有一个带有“ id number”的RSA令牌。然后,我们可以在任何系统上注册此“ id号”,然后将需要令牌中的当前值以及密码来登录。

但这为实现带来了许多其他问题和信任...

评论


好点。它甚至不必那么复杂。他们可以进行广度优先攻击,也可以进行间隔数周的攻击。但是,延迟确实会为您提供已知的最大攻击率(如果您忽略源IP)。如果您连续10000次失败(任何高位数)后锁定帐户,则可以使用DoS(如果管理员不注意)进行破解(假设2个因素无法达到)。

–布拉德利·克雷德(Bradley Kreider)
2010年11月19日下午13:39

#10 楼

上市公司(在证券交易所出售股票)受《萨班斯-奥克斯利法案》(Sarbanes-Oxley Act)监管,并每年接受几次审核以确保合规。关键软件应用程序必须符合某些安全功能,其中之一就是在尝试失败的密码后锁定帐户。

这些应用程序的大多数工作是集成到已经启用了功能的公司Active Directory中。 。

#11 楼

这是一篇非常不错的读物,涵盖了我认为您要寻找的内容。他们使用三击,十击和无限击策略从大学生那里获取数据,以建议我们将数字从三增加到十(因为它成功登录的数量大约是三倍)。
在这里回到主观观点...

为什么大多数地方都采用三击政策?随着时间的流逝,这肯定只是一种启发。对于管理员和用户而言,三种尝试或多或少是中间立场,因为三种机会已足够。您确实不需要尝试超过一次。我知道犯错了,但是在战争中……您实际上只有一次机会证明自己是盟友,对吧?

#12 楼

他们必须随机选择3个。这是极低的。也许他们过去曾遇到过安全问题,所以选择了较低的锁定数量而不是正确解决或解决问题。但是,我不会将其从用户名中删除,而是使用此人的IP地址,因为该人可能正在尝试多个用户名。我将锁定时间设置为(无效登录尝试次数)^ 2秒,一旦用户达到5次无效尝试。如果用户在相对较少的尝试中不知道自己的密码,则在该站点提供密码恢复工具的情况下,他们通常会使用密码恢复工具。如果这是一次真正的黑客尝试,它将使黑客感到沮丧,最终他们将放弃。僵尸程序会尝试很多次,几乎几乎永远不会被允许登录...例如,如果他们尝试了1000个密码(无论如何实际上都要花很长时间),他们将不得不等待11 1/2天才能尝试第1001个密码。您可以通过将乘数提高到^ 3来轻松地提高威慑能力。对于有效的人类使用者,上述任何内容都可能变得过高。

评论


根据IP进行锁定的问题在于,它也可以被绕开或滥用。例如。分布式攻击...如果一个IP由许多用户共享,例如公司代理人?

–AVID♦
2010-11-22在11:03

如果您没有适当的位置,则分布式攻击将更加残酷。无论您做什么,都将始终提高威胁的程度。 /如果用户隐藏在代理后面,则只需等待。可能是使用代理而不是真实用户的黑客。事情是你永远不知道,这就是匿名的结果。您不应该为了方便而牺牲安全性。

–拉什·弗里斯比(Rush Frisby)
2011年8月10日在22:38



这并不是要破坏安全性,它的实施措施与您要防止的威胁没有任何关系。是的,分布式攻击将是残酷的,但是从DoS的角度来看,这不是密码暴力。用户常常被迫使用代理,而常常甚至根本不了解代理-他们没有“隐藏”在代理后面。

–AVID♦
2011年8月10日23:06



安全胜过遗憾。

–拉什·弗里斯比(Rush Frisby)
16-09-20在13:56

不幸的是,这是最破坏性的误解之一,这种误解是如此受欢迎。如果没有其他相关的成本或弊端,“比遗憾更好安全”可能是有效的(可以辩驳)。在这种情况下,肯定有,您最终会得到一个更糟糕的解决方案。 “以可用性为代价的安全性以牺牲安全性为代价”。

–AVID♦
16-09-21在10:12

#13 楼

不久前,我实现了一个遵循以下基本规则的登录安全方案:


第一次失败的尝试会立即给出反馈。

第二到第五次失败尝试导致响应每次失败尝试延迟一秒钟。例如。 2秒,3秒,4秒...

如果第五次尝试失败,则会话结束,并且向他们显示一条消息,指示他们必须关闭浏览器并重试。 br />
对我来说,这足以防止暴力攻击;最终用户最多会感到不便,并且不会创建任何其他支持工作。

评论


暴力破解的尝试很可能并非来自单一端点,这使“关闭浏览器”成为一个争论点。

–丹·麦克格拉思(Dan McGrath)
2010年11月19日下午13:39

@Dan,您是对的-但它们甚至可能来自SAME端点,但没有浏览器。而且,无会话-每个请求都是一个新会话。所以“会议结束”也没有意义

–AVID♦
2010-11-22 10:53

在这种特殊情况下,如果没有启用会话就不可能达到这一点。但是,公认的一种更好的方法是在数据库中维护锁定统计信息。对于我们来说,我们已经记录并监视了一组特定的事件ID。如果在任何时候都对同一用户进行了大量尝试……我们很快就会知道。

–乔什
2010-11-22 14:02

我认为AviD的要点是会话组件可以实现自动化,在这种情况下,您只能通过浏览器来克服暴力破解(即,尝试暴力破解或自动化浏览器的人)。另一个问题是,响应延迟更可能打击有效用户,而不是阻止自动暴力攻击。如果99%的用户在10次尝试中就可以正确使用它,而您又不能在10次尝试中被强行使用,最好将限制设置为10(例如,由数字组成)。

–布拉德利·克雷德(Bradley Kreider)
2010-11-22 15:27