我总是听到“密码越长越好,密码越长越好”。但是,是否存在诸如“密码太长了,它变得不安全”或“密码足够长,使它不再重要”之类的事情?

我对密码的安全性感兴趣密码仅用于破解。
如果密码会导致散列时DoS过载,或者供应商认为不正确,则不会。

还假设密码不包含任何字典,因此无论如何都要发表评论。使用最佳做法存储的单词,具有强烈而独特的盐分,并且每个字符都具有相关的熵。用户如何记住/重新调用/存储密码也无关紧要。

我同意更长的/密码/更安全。我在问上限。

是否存在长度(或熵大小),使得不再需要更长的密码(甚至如此),甚至削弱了密码的安全性?我知道这取决于哈希算法,如果给定算法的上限存在并且已知,那又是什么呢?

评论

假设密码是散列的,那么是。请参阅security.stackexchange.com/questions/42154/…和crypto.stackexchange.com/questions/25252/…

我希望您在询问有关如何随着长度增加而降低安全性时询问技术问题。发生这种情况的一种非技术性方法是,较长的密码可能更难以记住,这可能会鼓励用户将其写下来,而这种方式不太安全。

这取决于哈希的大小。令f为您的哈希函数,如果您固定哈希中的位数,则长度为n,使得f(Σ¹∪...∪Σⁿ)= f(Σ⁺),即每个具有n个以上字符的字符串都具有一个较短的字符串,长度为k,具有相同的哈希值。到那时,暴力破解只会找到较短的字符串,而所有的n-k个额外字符完全没有用。超过m个字符仅对非真正随机的密码生成器有用。

如果您的密码包含整个词典,则肯定太长了。

@ToddWilcox并将粘滞便笺放在其监视器上。 AviD的可用性规则:“以可用性为代价的安全性以牺牲安全性为代价。”

#1 楼

128位(熵)

较长密码的主要目的是防止暴力攻击。人们普遍认为,128位超出了任何人的暴力能力,并且在可预见的未来仍将如此。您可以在几个地方看到这个数字,例如具有128位或更长密钥长度的SSL密码被视为“高安全性”,OWASP建议会话令牌至少为128位。所有这些的推理都是相同的-128位可防止暴力攻击。

实际上,如果密码是由大小写字母,数字和一点点标点组成的,则大约每个字符6位熵,因此128位密码由22个字符组成。

密码可以通过蛮力以外的其他方式来泄露。客户端系统上可能有一个键盘记录程序,或者用户被骗了。密码长度对这些攻击几乎没有影响-甚至可以捕获到相同的1000位密码。而且这些攻击在实践中很常见,因此使用太长的密码确实不值得。

实际上,您可以使用少于128位的密码。如果使用bcrypt之类的慢速散列函数对密码进行散列,这会使蛮力攻击更加困难,因此100位(或大约100位)完全可以防止蛮力攻击。如果您只关心在线攻击,并且该站点具有锁定策略,那么您可以使用更少的静态访问量-64位将完全防止速率受限的在线暴力攻击。

评论


@PhilLello-人们很少在密码中使用Unicode字符(我曾经不得不调试一个在遇到一个应用程序时出错的应用程序)如果您使用它们,则只需要调整每个字符的熵估计即可。假设您使用完整的BMP(65k个字符),每个字符16位,那么8个字符的密码将为您提供128位的熵。

–paj28
16 Mar 24 '16 at 14:34

如果您添加一个单词,我会投票赞成。熵。重要的是128位熵,而不是长度。例如,我可以创建一个全为1或全为128位的全0的密码。但是它遵循一种众所周知的模式,因此它没有太多的熵。通常,密码长度必须比密码熵长,因为人工生成的密码不是随机的,而是遵循模式(减少每个字符的熵)。

– Steve Sether
16 Mar 24 '15:20



当我尝试在密码中使用带重音符号的字符时,@ PhilLello很多网站都死了:(

– SztupY
16 Mar 24 '16 at 16:08

@ paj28:并非整个Unicode BMP中的所有字符都被同等使用,或者使用单个键盘布局即可轻松键入。如果您必须多次切换键盘布局以键入随机生成的统一Unicode密码,那不仅比使用带有基本字母的更长密码更容易输入。

– Lie Ryan
16-3-24在16:21



@PhilLello-该应用程序的用户主要是说英语的人。我认为绊倒的那些怪人是故意使用时髦人物的安全意识强的人

–paj28
16 Mar 24 '16 at 17:31

#2 楼

密码可以不安全吗?是。

当您查看组织中广泛的安全性时,安全性不仅仅意味着“使用不可猜测的密码保护帐户”。安全必须通过机密性,完整性和可用性的“ CIA Triad”来保护整个组织。超过一定的密码长度阈值,机密性和完整性在统计上不会得到改善,而可用性由于可用性差而降低。无法登录的系统与关闭的系统一样不可用。

如果强制用户键入由所有随机,大小写混合的字母,数字和符号组成的22个字符的密码,您的用户将更容易出错。考虑到用户可能有压力要立即对紧急情况做出反应。使用长密码弄乱密码可能会导致3次尝试锁定,并导致用户花费大量时间进行重置,以致他们无法及时解决问题,从而导致灾难。太长的密码阻碍了可用性。而不是保护组织会造成伤害。

您的用户浪费多少时间输入密码?密码越长,输入速度越慢。从底线中减去该费用。那是安全成本的一部分,这笔钱本可以花在其他地方。 100个字符的密码将花费您20个字符以上的密码,同时不会降低任何风险。时间和金钱是资产,太长的密码会浪费它们,而不会产生额外的好处。

我主张4位PIN码的安全性差,因此用户更快,更快乐,并且少犯错误?当然不是。您需要做的是平衡密码提供的熵和使用密码的心理。

虽然大多数用户将无法记住由70个字母,数字和符号组成的12个字符的密码,但他们可能仍会记住一个5字的密码短语。因此,请考虑使用Diceware方法来实现类似的熵。与12个随机符号相比,五个随机但熟悉的单词可能更容易记住和输入,同时提供五百亿个可能的组合。六个骰子词比12个字符的密码提供的安全性更高。

如果出于某种原因必须是字符,请确保从明确的字符集中选择它们。不要强迫用户在Shift键上跳舞或输入随机符号。如果您需要从[az] [AZ] [0-9] [!-*]提取的12个随机字符密码中获得熵,则只需使用[az]并将其扩展为15个字符,就可以达到类似的熵水平。

或者考虑使用其他工具,例如验证令牌,生物识别技术或智能卡,并为这些工具补充较短的PIN。

安全系统必须可用,否则会干扰组织的利益。

评论


将易用性视为安全功能而非平衡力量的有趣方法。

– Peter Cordes
16 Mar 25 '16 at 5:31

@PeterCordes,一个太难使用的系统也会被好心人绕开,这可能会导致漏洞。例如,他们可能下载免费的密码管理器只是为了完成工作,而没有意识到它是受Trojan感染的。用户是任何安全工作不可或缺的一部分;我们必须始终认识到他们首先是人,他们需要被使能而不是战斗。

–约翰·迪特斯
16 Mar 25 '16 at 13:12

XKCD估计一个44位的四位随机字密码(这意味着可以选择2000个单词)。一个七个符号的密码比四个随机字具有更多的可能组合。

–西蒙G。
16 Mar 25 '16 at 17:45

尽管此答案的内容不错,但我认为OP打算通过写“用户如何记住/重新调用/存储密码也无关紧要”来避免此类答案。我将此问题解释为意味着OP正在寻找技术原因,原因是长密码可能不安全。

–乔恩·本特利
16 Mar 25 '16 at 20:35

我认为OP出于好奇是出于技术/数学/计算机问题,而不是像@JonBentley建议的那样作为实用的安全问题。 OP寻求的答案可能很有趣,即使实际上没有用,我也认为OP用肯定这一点的方式表达了这个问题。

– Peter Cordes
16 Mar 26'0:00



#3 楼

越来越长的密码不会变得不安全,但是在某些时候它们不再变得更加安全。

基于您提到的假设,密码似乎是真正随机的,并使用bcrypt(状态为艺术密码存储)。 Bcrypt的长度限制在50到72个字符之间,具体取决于实现方式。因此,不允许使用更长的密码,或者仅使用前N个字符对密码进行散列或类似操作。基本上,更长的时间不会更好(尽管不会变得更糟)。

人们还可以说,一旦密码从现在开始到最后一直受到安全保护,可以防止对密码哈希的暴力攻击从密码的角度来看,更长的密码并不能使其更安全。即使您对攻击者的硬件做出了疯狂的假设,直到20世纪30年代末,真正安全的20到30个字符的随机密码也将是安全的。因此,较长的密码不会更安全。

评论


确实。在DES时代,某些/所有UNIX用于将密码截断为8个字符。

– Phil Lello
16 Mar 24 '16 at 14:25

只是为了好玩而提到这一点,如果密码足够长,对于攻击者来说,保存或破坏他的代码可能太大了!例如1kb的字符串可能会在保存到SQL Server中时遇到一些麻烦(因为保存方法通常是静态的)!否则10Gb字符串实际上可能没有空间可以保存!!

–aliqandil
16 Mar 25 '16 at 11:33

@PhilLello还有旧的基于DES的LM哈希限制为14个字符(两个7个字符的块)。

–鲍勃
16 Mar 25 '16 at 13:35

“使用前N个字符散列”可能是完全不安全的,因为前N个字符可能不包含任何熵。您可能要指出,这些实现明显是恶意的。

– djechlin
16-3-26的1:02

#4 楼

较长的密码实际上可能比预期的要弱的一种情况是系统截断了您作为密码输入的字符串。请考虑

passwordsogoodtahtittakestrillionyearstobreakitgoaheadtryme


此密码非常好1,除非您的系统实际上将其视为

password


>因为它仅接受8个字符。其余的内容将被静默丢弃,因此您总是输入passwordsogoodtahtittakestrillionyearstobreakitgoaheadtryme,系统会从中接受password,每个人都很高兴。比受数学障碍的安全顾问推广的一些无用的大写字母-特殊字符三元组更容易记住的单词

评论


存储介质与这个问题无关。该站点假定没有欺骗手段和最佳实践。只是密码长度与安全性。甚至与用户如何记住这么长的密码都不相关。

– Mindwin
16-3-24在20:25

@Mindwin:OP说:“我对仅用于破解密码的安全性感兴趣。”我介绍了一种情况,密码较长可能会很危险,因为密码较长(因为它可能更容易破解)

– WoJ
16年3月24日在20:30

我在一个有此缺陷的系统中工作-许多人使用了安全的长密码,但是我们古老的DES加密机制却被截断为仅8个字符,容易破解。由具有附加随机性的关键字组成的安全密钥短语和密码(这是密码创建的一种非常常见的模式,尽管较弱:“ password1234!”)比较短但随机性更高的那些关键字更容易被此系统破解:它们由于随机性而被提升。这建立在其他回答的基础之上,这些回答说安全性仅与哈希中熵的位数一样好。

– Dewi Morgan
16 Mar 25 '16 at 21:18

@WoJ,这不是更长的密码更危险的情况;密码和密码都将与您建议的非常长的密码一样危险。而是,额外的长度不会减少预期的危险。 (可以肯定的是,这是标题中要求的一部分,但是我认为这仍然是一个重要的区别。)

– Lspice
16 Mar 27 '16 at 21:18

@LSpice:我认为这种情况下,较长的密码更危险。人们引诱人们认为,较长的密码会更安全,而事实并非如此-在这种情况下,较短的密码(但更复杂)会更好。多余的长度假定将考虑所有密码。但是我们这里可能会涉及到语义:)

– WoJ
16年3月28日在18:30

#5 楼

我看到一些有关此的评论,但没有明确说明的答案,因此我将其添加在这里。

是的,在添加密码之前,可以添加的长度是有限制的如果对密码进行了哈希处理(那么我们希望是这样),您将再也无法从中获得更多的安全性。这是因为攻击者不需要知道您的密码,他/她只需要知道散列到相同输出的字符串即可。因此,如果您的密码的熵比哈希算法的输出大,则几乎肯定会有一个较短的字符串,由于哈希冲突而产生相同的输出。那时,无论您输入密码多长时间,您仍然只会获得相同的输出熵。

当然,这意味着攻击者将不得不对哈希进行暴力破解,直到找到冲突为止,这对于安全的加密哈希实际上是不可能的,但是您要求的是理论上的限制,而不是实际的限制。

#6 楼

Landauer限制指定了在给定能量下可以进行的理论最大单位更改位数。假设您可以使用世界上20个最强大的电站,并且全部满负荷运行100年。那将给您5 * 10 ^ 20焦耳的能量来进行计算。假设您有一台现代计算机,其能耗仅为理论要求的一百万倍。有了这么多的能量,一台好的计算机冷却到-270摄氏度,物理定律说,您只能通过2 ^ 124个输入组合进行工作。

如果您想完全破坏整个输入行星,以完美的效率转换为能量,并拥有一台在Landauer极限运行的计算机,再次冷却至-270摄氏度,那么您可以列举2 ^ 213种可能的输入组合。

如果您可以某种方式破坏整个宇宙中的所有物质并收获所有暗能量,那么您理论上完美的计算机仍然只能通过2 ^ 233种组合来工作。

因此,2 ^ 233组合是在足够的时间和精力投入下不再保证暴力攻击成功的地步。没有足够的可能的投资。

总是有运气。无论您有多少位,都可能是正确的猜测。因此,人们选择了可接受的风险。从根本上讲,没有办法实现零风险,也没有办法用通用术语来定义“可接受的”。在不到两分钟的时间内输入256位密码。但是,正如刚刚计算出的那样,宇宙中没有足够的力量来做出这种努力。用理论上理想的设备进行破解所需的时间并没有给我们“可接受的”限制。

奥巴马总统下令在2025年之前制造出exaflop计算机,希望它建成后将成为世界上最快的计算机。 exaflop电脑在太阳爆炸前剩下的50亿年中,有什么机会破解2 ^ 233位密码?好吧,这是1.6 * 10 ^ 34个猜测或少于2 ^ 114个猜测。那是2 ^ 119(6 * 10 ^ 35)的一次在太阳爆炸之前破解密码的机会。

可以接受吗?谁说?很难将这种可能性纳入考虑范围,因为这种可能性很小。在本周,下周以及之后的一周中赢彩票大奖吗?比从现在开始爆炸50亿年之前破解密码的可能性更大。

233位的熵可以用从95个可打印的US-ASCII字符中提取的36个字符来表示。攻击者即使使用整个宇宙的所有资源也无法保证通过蛮力破解此类密码,而仅使用当今现有技术破解密码的可能性很小。

这是我所知道的唯一限制,不是由算法的选择或必须记住密码的人决定的,而是由宇宙的实际物理定律施加的。

评论


您的结论段落无效。为了论证,我将您的数字视为正确的,即在给定宇宙中所有可用能量的情况下,以38个字符为强力的限制。但是,对于蛮力期间的每次尝试,都有一定的可能性会成功,并且搜索可以在完成之前结束。 39个字符仍然比38个字符更安全,因为它降低了这种可能性。

–乔恩·本特利
16年3月25日在21:19

@JonBentley您是正确的,我已经对答案进行了编辑,因为昨天由于某种原因我无法计算对数。 OP要求限制,这是我所知道的唯一限制。

–西蒙G。
16 Mar 27 '16 at 14:30

#7 楼

默认情况下,使用密码可以发生的问题的答案是“ [XYZ坏事]”。总是有可以发表具体评论的余地,但是事实仍然是,密码是赋予人的最不自然的安全任务之一,而且几乎可以肯定的是,该人将优先考虑效率而不是安全。您选择了不在词典中的长密码,则该密码很可能是一个随机字符串,很难记住。结果,用户将需要找到快捷方式来实际使用他的系统而不会感到过于困惑(对用户而言,安全性通常是实现实际上有价值的任务的障碍):写下来,将其保存在剪贴板上,插入一个可以自动键入密码的USB加密狗...您给它命名。

电池马钉XKCD漫画因生产更长的密码而闻名,该密码更令人难忘,但结果是,正确的密码被放入每个字典。因此,一般来说,很难生成可用的长密码。

这是实际的责任。现在让我们看一些数字。假设您没有以明文形式存储密码,而是对它进行哈希处理和加盐处理。一般而言,让我们破解密码存储的方法没有比对存储的密码发生冲突的方法更容易的了。在这种情况下,每个密码哈希将具有固定的长度:假设SHA-256为256位。然后,您最多要存储2256个值。当然,这很多,但这也是您的“极限”。如果您存储的密码具有超过256位的熵,则不会在任何地方保留该额外的熵。它的安全性同样不错,但是,正如尼尔(Neil)针对bcrypt所指出的那样,更长的密码不会有任何好处。

评论


Sérgio,检查关于这个问题的假设。排除字典,并假定它是存储的最佳实践。但是您对最大哈希熵有一个很好的了解。

– Mindwin
16 Mar 24 '16 at 20:24

我了解这种方法,但这就是电池稳定示例的观点。即使密码不在词典中,也可能会被使用。如果您认为密码是可打印字符的均匀分布的字符串,那么它不是密码,而是奇怪编码的密码密钥。在这种情况下,重点将仅在于熵(以及代中的随机性),但是可用性的意义将是巨大的。

– Sergio A. Figueroa
16-3-24在21:17

@Mindwin词典攻击不仅包含给定语言中的单词,还将包含更多的“硬编码”值。例如。其中将包含“ 12345678”及其子字符串。 “密码”,“密码”,“ P @ ssword1”和许多其他变体也将出现在“字典”中。每当您看到最常用的X个密码的列表时,提到的所有密码都会添加到词典中的某个地方,以供以后参考。因此,排除字典单词并不意味着您就排除了字典攻击。

– Shaz
16-3-25在19:38

可悲的是,这些攻击被称为“字典”攻击,而不是“单词列表”攻击。我曾经相信,因为威尔士地名不是词典中的单词,所以我很好地将它们用作密码。 ...我变得更好了!

– Dewi Morgan
16年3月25日在21:19

我只能假设它受到以下事实的影响:“词典”在几种语言中都是可以翻译成单词本的组合词。或者尝试与现实世界中的事物进行类比。但这可能会产生误导,这是事实。

– Sergio A. Figueroa
16 Mar 25 '16 at 21:28

#8 楼

没有限制,实际上。对于已知的弱哈希值,该限制值是可能的,在这种情况下,替换攻击已得到充分证明和可衡量。

评论


我相信这是不正确的阿列克谢。某些密码存储算法确实具有输入长度限制。

–尼尔·史密斯汀(Neil Smithline)
16 Mar 24 '16 at 14:03

特定的算法可能会有限制。但总的来说-没有限制

–阿列克谢·韦斯宁(Alexey Vesnin)
16 Mar 24 '16 at 14:05

#9 楼

在谈论密码时,考虑所有向量很重要。

例如,密码“ password”将需要2.17秒才能被强行使用。 “ p455w0rd”花费29.02秒,“ p455w0Rd!”需要2.4个月。重要提示:在谈论暴力破解密码时,这三个示例在基于字典的攻击中花费的时间少于一秒钟。

相比之下,“ thisisalongpassword”需要250万个世纪,而“ th1sIs4l0ngPa55w0rd”则需要36.72个世纪。但是,通过使用更复杂的密码,您可能会增加有人将其写在便笺上并将其粘贴在监视器上的可能性。

因此,从蛮力的角度来看,较大的熵更好,但它确实会通过增加人们成为人们和做不安全的事情的可能性来降低系统的整体安全性,从而增加系统的脆弱性。其他攻击媒介。

再来看一个例子,假设您强迫用户使用密码短语长度密码。因此,用户选择“ tobeornottobe”。如果黑客仅凭蛮力就去,那将花费9.85个月。但是由于黑客会使用字典攻击和其他启发式方法,因此可能会花费很多时间。如果同一用户使用“ 2b0n2b”,则仅暴力破解将花费0.02秒,但是字典攻击将毫无用处。目的是在易于记忆,蛮力破解和字典难解之间找到一个最佳选择。如果您使密码策略偏离了那些目标之一,那么您使整体密码变得更弱了。

答案

没有上限,更多的熵会使密码变弱。在现实世界中谈论使用密码时有一个上限。上限是指系统用户不再使用某些不安全的方式即可记住密码的情况下,便无法再使用该密码,从而为其他攻击手段打开了大门。

暴力破解密码的时间基于https://www.grc.com/haystack.htm,位于“离线快速攻击方案”中。

#10 楼

是的,在某些情况下,较长的密码不太安全,但如今却没人应该使用DES密码,因为无论如何它们都很容易破解。实际上,当密码长度超过八个字符时,DES的某些实现实际上不太安全,使用的熵也更少!解决方法是在哈希之前将密码截断为八个字符。如果发现有人仍在使用基于DES的密码哈希,那么他们也会遇到其他问题。从理论上讲,类似的漏洞也可能会影响其他密码哈希算法(我认为某些版本的lanman也存在类似的问题),但是大多数设计密码哈希的人都是从历史课程中学到的,而且我不了解此问题的密码哈希功能。

评论


嘿,希尔德雷德,感谢您的参与,但问题是假设当前社区接受的最佳做法(抄写+盐/等)。

– Mindwin
16-3-28在19:15

在实施时,这是最佳做法。

–躲藏
16-3-28在19:17