当前,所有安全专家都在说同样的话:制作长字符,混合字符,高熵密码。如果您考虑使用RSA密钥或可以离线解密的密钥,那么这很有意义,但是当我们谈论在线帐户密码时,这真的很重要吗?
例如,我们创建一个密码Gmail仅使用英文字母中的6个字母。这大约是26 ^ 6 = 3.09亿个组合。如果我们认为每秒可以测试1个密码(如果考虑到Gmail验证码,我认为它比实际速度要快),则我们最多需要10年才能破解,平均需要5年。
要考虑的要点:
如果您在不同的网站上使用相同的密码,则另一个网站可能会被黑客入侵,并且您的密码暴露。我假设密码是唯一的。仅与Gmail一起使用。
如果有人可以获取数据库,他们可能会离线强制破解密码的哈希值。我以为该网站至少使用了盐渍哈希(黑客不太可能尝试破解所有密码)和/或数据库不太可能被黑客入侵(这是Gmail的合理假设)
我还假设您的密码不是字典单词或容易猜到的东西。这应该排除多个帐户的暴力行为(例如,跨多个帐户测试相同的通用密码)。
可以安全地假设我们不需要很长的网站密码是否遵循其他安全措施?
如果我们建议人们使用长密码只是因为他们通常不遵循其他安全建议(在帐户中使用相同的密码,等等)。我们不是真的要尝试解决症状而不是原因吗?
PS:其他一些问题几乎解决了同一件事,但答案始终认为此人在各个网站上使用相同的密码,或者网站数据库很容易被盗。
#1 楼
以下内容并不能真正做到这一点,但总而言之……在理想的世界中,在线资源不需要复杂的密码。
在这个理想的世界中,我们依靠系统管理员来加固系统以防止未经授权的用户访问“密码文件”,以下操作可以最大程度地降低风险:
安全地配置基础架构;
立即应用补丁;
具有某种形式的监视,以发现在零日漏洞利用情形下的危害(以便可以“告诉”用户更改密码);
具有并遵循“安全的”编程/开发方法;
仅雇用值得信赖的个人。
对于许多站点而言,不可能完全结合。
弱点在于上面的列表可能会导致能够完全绕过密码的漏洞利用,但是无论成功的漏洞利用的性质如何,在不做任何事情之后,都是可以肯定的经授权的系统攻击者将尝试窃取密码文件,并随后对其进行暴力破解,以帮助其他系统(通过利用密码回收利用)继续受到损害。
因此,虽然不能保证强大的安全性( er)密码可以防止所有不良行为,它可以帮助缓解提供商解决方案中的弱点(无论是否为人所知)。
为避免疑问,我们还依靠服务提供商来做以下内容:
对密码应用哈希和加盐;
确保永远不会以明文形式交换密码。
我猜大多数情况下-用户对密码复杂性和长度的决定将取决于站点(以及密码)所允许访问的信息。
我的建议是:如果很重要,请使用复杂的密码,以便在系统受到威胁时,首先发现其他人的密码。但是,如果要使琐碎和便捷的事情变得更为重要,则可以尝试使用较弱的密码,但要接受黑客攻击可能会导致无法访问该帐户和/或从该帐户释放信息。
对于许多网站所有者,我怀疑要求使用复杂密码的决定是将FUD与希望通过增加暴力破解密码的时间量来最大程度地减少控件严重故障的影响结合在一起的,从而延长了纠正时间并最大限度地减少了实际使用时间。用户帐户泄露(尽管如果攻击者可以访问密码哈希,则他们可能具有足够的系统访问权,无论如何也可以通过其他方式破坏系统)。
评论
您忘记了“没有程序员会犯错误”。
–用户
2014年11月5日在21:02
到目前为止,唯一的答案实际上解决了让服务处理保护客户的问题。
–扎克
2014年11月5日在21:47
@MichaelKjörling我有点讽刺意味吗?但是,是的,同意并进行了更新。谢谢。
– R15
2014年11月6日7:59
@ R15只是讽刺意味。一个简单的事实是,程序员在代码错误部分中的任何错误都可能导致可利用的弱点,而且即使在进行代码审查的情况下,也很难在有人设法利用它们之前就发现了此类错误,并转化为错误。一个重大问题。不需要任何开发人员的恶意。
–用户
2014年11月6日9:38
@Falco该列表的初衷是为了说明我们对服务提供商的依赖性,我不想将其限制为只是密码方面的事情,以防将来有人将其用作滴答列表。用于配置服务。我将编辑答案以使其更具体(尽管我不同意您的分析)。
– R15
2014年11月7日下午13:46
#2 楼
长密码的建议是,如果有人可以访问该密码的哈希,则可以防止密码被破解。像hashcat这样的工具可以轻松地(使用gpu)测试93800M c / s md5哈希
作为用户,通常您不知道该站点如何存储密码,因此最好使用长密码来缓解这些攻击。
评论
希望您使用的任何站点都不会以纯文本格式存储密码,这将是非常糟糕的,并说明了需要使用不同的密码。
–乔纳森
2014年11月5日12:47
以这种方式思考,我们可以假设我们不需要为gmail之类的服务使用长密码。因为他们的数据库极不可能被黑客入侵,即使遭到黑客入侵,也不太可能有人将您的用户名作为目标。这样对吗?还是这个假设过于乐观?
– drpexe
2014年11月5日下午13:17
@drpexe但话又说回来,人们对LinkedIn可能也这么说。
– Dennis Jaheruddin
2014年11月5日在16:02
这种假设太乐观了@drpexe ...假设每个密码都会被黑客入侵,这是最安全的方法,因为可能会被黑客入侵,但是没有真正好的方法来预测最终密码。
–贫民窟
2014年11月5日17:05
@drpexe您不能假定Gmail(或任何其他提供商)将不会被黑客入侵。实际上,谷歌之前已经被黑客入侵。
–迈克尔·汉普顿
2014年11月5日在17:14
#3 楼
选择好的密码很难。人类和我们对模式的偏爱根本不是很擅长。将其乘以我们随时间累积的数十个帐户,这就是问题的根源。所以是的,消除错误的密码和密码重用可以解决创建软目标的问题,但并不能解决维护所有这些帐户和密码的根本问题,这导致了首先是错误的密码和密码重用。因此,说“只遵循良好的密码安全策略”就很好了,这很安全,但是如果不解决帐户管理问题,那么您什么都不会解决。
那么,答案是什么?使用密码管理器。这样就解决了问题。当您将密码创建和管理问题转移到专门为此目的设计的工具上时,默认情况下您会获得强密码,并且不再需要再次使用密码。这不是一个完美的解决方案(什么都没有),但这是我们目前拥有的最好的解决方案,并提出了密码复杂性和长度争议的问题,因为当您不必创建和记住密码时,您就不再在乎了它的复杂性和持续时间长短,只有它具有足够的熵来增强强度,然后密码管理器才能为您提供。
评论
@drpexe然后,您没有满足您提出的“容易猜测”的安全要求。六个字符的“易于记忆”的密码没有足够的熵使它们变强。特别是一旦您开始谈论几十到一百甚至更多。
– Xander
2014年11月5日15:39
@drpexe当然,我并不是说它对任何人都无效……当然可以。这不是解决该问题的好方法。
– Xander
2014年11月5日在16:20
这似乎并没有真正回答核心问题。
– Liilienthal
2014年11月5日在21:16
@Lilienthal我主要是指出该提案的基本前提存在缺陷,从而使具体内容无关紧要。
– Xander
2014年11月5日在21:26
更明确地说,问题在于,记住许多6个字符的密码似乎很容易。但是,即使是十个完全由熵组成的6个字符的密码,对于人类来说也是不可能的。我建议在您的答案中指出这一点,因为这实际上是OP所建议的,并且您没有明确指出这是有问题的地方。
–djechlin
2014年11月5日22:57
#4 楼
对于使用本地密码身份验证的任何Web开发人员,唯一理智的假设是:其用户将对所有内容使用相同的密码;
该站点已被使用妥协,即使他们还没有写完;并且
,该妥协的后果将产生一些非常昂贵的法律责任。
(请注意,我并不是在暗示,我也不是在暗示所有或什至任何一个- Web开发人员是理智的或对自己的工作了解得足够多,以至于认识到自己所做的事情将是疯狂的,简单的哈希(无论是纯文本还是盐渍的)在计算上都与纯文本足够接近,因此不会这些天没事了,但是人们仍然发现纯文本,未加盐的MD5等散布在网络上的所谓“教程”中,人们正在应对并将其粘贴到世界各地的服务器上。(
这些假设意味着,即使我运行的站点具有极其本地化的应用程序,专门用于允许人们列出关于有机,自由放养,本地种植的无麸质仓鼠零食的推荐,我也必须将您的密码视为您的密码PayPal,eBay和电子邮件帐户都结合在一起了(因为有效的可能性很大)。这意味着为了保护我自己的宝贵财富,无论您是否喜欢,我都必须至少采取一些最小的步骤来保护您的宝贵财富。理想情况下,这意味着使您的密码变得无法被蛮力地强加(使用加密随机盐和昂贵的密钥派生函数),并对字符数设置绝对下限(理想情况下,没有上限) ),同时仍然允许您使用一些容易记住的内容(其中“没有一个必须至少使用一个带重音符号,一个表情符号和一个平假名”)。换句话说,允许您使用非常短的密码会使我的臀部暴露在不必要的危险之下,所以不要指望我允许它。那就是我的网站除了您的密码之外没有任何秘密。如果我要负责与您相关的任何实际个人数据,请期待我代表您的偏执狂急剧增加。
#5 楼
您的一些假设有一些问题。如果发生离线攻击,3.09亿是一个可笑的小数目。在离线攻击中,即使盐分较高,攻击者也将首先追赶低落的果实。就是找到词典中的密码,然后是短密码,然后是其他简单密码。但是,有多少问题值得商--拥有访问密码数据库的攻击者也有可能访问他所追求的其他一切,这是一个很好的机会。 -假设没有发生密码重用。
正如您所指出的那样,3.09亿的搜索空间太大,无法在线攻击中强行使用。但是,导致该数字的假设是令人怀疑的。作为一个物种,我们在两个相关任务上非常贫穷。仔细考虑随机序列并重新标记随机序列。这意味着,如果您选择6个字符的密码,则您的熵将大大降低。如果您使用密码管理器或类似的实用程序,可以避免这种情况,但是在这种情况下,您也可以使用更长的密码来防止脱机攻击。
密码是否具有良好的熵取决于熵pr字符和密码的长度。 -如果每个字符的熵都很好,则可以接受较短的密码。但是,这种方法不太适合大多数人,因为我们记住每个字符的熵较低的较长字符串要好于每个字符的熵较高的较短字符串。我们还可以生成随机字符串,并且您引用的建议适用于不使用密码管理器生成密码的人。
#6 楼
对单个安全站点使用复杂的密码就像在公寓门上使用特殊的锁一样,这会使开门时间更长,并能更好地保护您免受1%的窃贼的侵害。大多数答案可以解决所有问题多种攻击情形,可能会破坏您的密码,但是要确定如果仅在一个具有良好安全性的站点上使用一个较小的密码(6个字符)是否足够,我们只需要比较一个数字即可:
使用弱密码比使用强密码有多少次攻击显着更好?
如果在线暴力保护足够强大(这是前提),则唯一相关的攻击情形是离线暴力破解。在所有其他攻击情形(明文密码读取,会话盗窃,社交工程,网络钓鱼,用户伪造)中,密码的复杂性不起作用(如果它不是标准密码)
您的帐户或gmail上有多少%的攻击可能会使用可行的离线暴力破解密码?可能几乎没有。暴力破解仅适用于密码的哈希或加密版本。您密码的其他任何地方都是纯文本格式(因此无关紧要)或根本不相关(例如,会话ID,从内部人员直接访问邮件存储服务器的权限)
唯一的密码实例被加密或散列的是1.在数据库中加盐的哈希,并且2.通过HTTPS传输密码。在数据库中的盐散哈希
如果黑客确实获得了对存储所有用户密码的数据库(可能是基础架构中最佳的安全点之一),但无法访问任何其他服务(例如活动的会话ID或直接帐户访问权限),然后使用暴力攻击会很快使用您的密码。
HTTP传输
不太可能,因为攻击者必须强行使用HTTPS流来隔离您的密码,因此密码长度很可能无关紧要。
因此,只有长密码才能真正保护您的唯一方案是指有人在没有任何人注意的情况下访问了(可能)最安全的基础架构数据存储,并且没有足够的访问权限来更轻松地访问您的帐户。我想说这种情况确实不太可能,因为在针对您帐户的大量漏洞和攻击中,这只是一种不太可能的攻击类型。
评论
大公司去年至少发生过7次这样的可能性很小。以下是主要违规列表。您可能会注意到GMail在该列表中。虽然它只占所有攻击的一小部分,但一旦发生,它就会暴露数百万个密码。如果您查看任何给定人员在漏洞站点上拥有帐户的可能性,则实际赔率非常高。该列表包括yahoo,adobe,gmail和gmail。我认为,在过去两年中,任何给定密码泄露的人都非常有可能。
– Kyeotic
2014年11月7日17:07
在这种情况下,@ Tyrsius具有“复杂”密码会有什么不同?随着时间的流逝,我更倾向于相信最安全的密码..是不存在的密码。
– prusswan
2014年11月7日18:23
@prusswan是的,拥有复杂的密码可以让您有更多时间来确定密码。这使您可以在被破坏的站点上更改密码。越复杂,您就有更多时间。足够的复杂性与适当的密码哈希方法(如bCrypt)相结合,将使它变得如此困难,以至于它可能无法在攻击者放弃之前完成。关键是,这种情况很可能会发生在您身上,最好使用难以破解的密码进行准备。如果密码是唯一的,甚至更好,破解它只会暴露被破坏的帐户。
– Kyeotic
2014年11月7日在21:16
@Tyrsius没有证据表明gmail已被破坏。如果您遵循有关“ Gmail列表”的讨论,则没有证据表明pw散列实际上是被盗的,并且大多数人都指出登录名可能来自xtube或其他站点。
– Falco
2014年11月8日,9:39
@Falco很高兴知道。我认为我的观点仍然存在:虽然这些攻击的频率较低,但当它们发生时,它们会导致成千上万个,有时甚至数百万个被破坏的凭据。与其查看攻击的频率,不如查看每年受影响的人数。它可以更好地表明您受到此类攻击的可能性。
– Kyeotic
2014年11月10日下午16:51
#7 楼
我的回答是肯定的。您不能假设站点使用盐化的哈希方法。例如,MD5仍在野外使用,人们认为它是完全可以接受的。但是,由于使用了严格的哈希机制,即使有人使用它,也无法获得实际的密码是低碳证。尤其是如果您的服务器受到适当保护,并且您的api采取了适当的预防措施以防止暴力攻击,那么尤其如此。
#8 楼
虽然使用复杂的密码更安全,但我始终建议同时使它们变得容易,并且每个网站都具有唯一性。这将是一个唯一的漏洞,如果您陷入网络钓鱼骗局,这就是为什么拥有多种方法来恢复您的电子邮件地址很重要的原因,因为您的电子邮件是您恢复其他帐户的方法。以下是我个人使用的规则:
至少8个或10个字符,最好是12个或更多
使用对您有意义的东西
缩写或使用数字代替字母可能很容易但有效。
如果需要,可以使用前缀或后缀来使密码保持唯一性
因此,例如:
ThisIsMyPassword14si
用途:大写字母,数字和si的后缀,用于堆栈交换,并且有一年的含义对个人而言是有意义的。这种密码通常始终显示为强密码。
还有更多服务可让您使用其他基于令牌的服务登录。我认为这是个好主意,因为您可以随时注销以删除任何访问权限,并且无需为每个服务都输入密码(假设开发人员已正确设计了流程)。
但是,您必须更加谨慎地使用该服务的密码,并为该服务提供多个恢复选项,以防万一您出于某种原因而松开它。恢复选项和两因素身份验证。问题是,如果您不注意请求信息的实际页面,几乎可以欺骗任何东西。
希望将来,您可以使用像手机这样的设备来充当Web服务的安全许可。应用程序是由发行商控制的,因此每个平台上只有一个应用程序可以获取访问请求并征得您的许可,这是将来处理该应用程序的正确方法,因此我们不必担心此密码会一切都废话。
...有一天...
#9 楼
别忘了某人不需要暴力攻击一个目标。他们可以在许多目标上尝试使用相同的密码,从而使最常用密码的用户容易受到攻击。评论
仅当用户使用密码如“ 123456”或非常常见的密码时,此方法才有效。
– drpexe
2014年11月6日在8:44
@drpexe您高估了用户的努力程度:stricture-group.com/files/adobe-top100.txt
–purpur先生
2014年11月6日21:58
#10 楼
您忘记了本地人身攻击!较长的复杂密码使发现肩膀的可能性大大降低。即使有人盯着我的键盘,除非他是Rainman,否则他也不会获得我的密码。(无法评论)
#11 楼
使用可靠的两因素身份验证系统时,使用不太安全的密码是合理的。仍然最好使用由密码生成器生成的难于使用的密码,该密码使用大写和小写,数字和符号。不会使用这种安全密码的人;在提供两因素身份验证的服务的情况下,那些人会感到相当安全。
#12 楼
您无法通过大规模组合来保护密码,为此您必须对密码进行加密。一些常见的加密算法为md5,SHA-1,SHA-256 stc。但是仍然不是100%安全的。攻击者可以解密使用上面提到的具有高GPU的哈希猫之类的工具来加密您的密码。因此,在坚果壳中,没有一种算法是100%安全的。但是您可以通过将盐与现有的加密算法结合使用来生成强大的密码机制。这是一些著名的隐窝算法。
http://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions
评论
散列与加密不同
– drpexe
2014年11月6日在8:46
评论
您认为多长时间?在您的示例中,使用8个字符长的字母数字密码会使在线暴力攻击变得不可行。但这并不是攻击的可能。虽然gmail具有适当的安全措施是正确的,但也确实是gmail是邪恶分子的主要目标,并且很可能每天受到某种形式的攻击。我认为在有人想出一种容易记住但很难破解的密码之前,密码管理器是必经之路(必填XKCD链接:xkcd.com/936)。仅仅因为站点或服务似乎具有适当的对策并不意味着它们不会被黑客入侵或遭受系统(或人为)错误。或者当然是破坏活动。
没有好的答案。不幸的是,随机密码(例如“ pl3sqzjwAb”)往往难以记住和键入。大多数人可能会更喜欢“密码短语”,但是出于各种原因,无论好坏,很多网站都不允许使用它们。
当前,所有安全专家都在说同样的话:制作长字符,混合字符,高熵密码[需要引用]
有趣的是,对于由于密码薄弱而导致的实际实际暴露/渗透次数以及安全性中的所有其他漏洞,进行了一些可信的分析。目前尚不清楚Target,Home Depot等公司的数百万客户的渗透率是否与弱密码有关。