在https://passwordsgenerator.net/上,它说


弱密码示例:qwert12345,Gbt3fC79ZmMEFUFJ,1234567890、987654321,nortonpassword


第一个,第三个和第四个示例显然很弱。但是,我看不到第二个缺点。

,实际上,我目前唯一的问题是它没有任何特殊符号。这样足以使密码成为weak吗?

评论

仅向所有人发出一点警告(在阅读完以下良好答案后):不要用Google刚刚生成的随机密码来查找它是否已被使用。因此,可能会发生碰撞。但是更高的风险是,搜索词以某种形式保存,从而使其立即成为字典词(与其他搜索引擎相同)。出于同样的原因,一旦您有了新名称的好主意,就应该避免使用域查找-尤其是在未知页面上...

评论不作进一步讨论;此对话已移至聊天。进一步的评论将被删除

//,@DanielAlder,我已经被域查找示例烧死了。我不知道它适用于密码!我将在单独的StackExchange帖子中进行介绍,因为它是有价值的信息。

也许加上整个段落?即包括引言“5。请勿在密码中使用任何词典词。强密码示例:ePYHc〜dS *)8 $ + V-',qzRtC {6rXN3N \ RgL,zbfUMZPE6`FC%)sZ”。很明显,主题是词典单词(而不是其他任何东西,例如熵,长度,特定于应用程序等)。

旁注,如果您正在考虑使用此站点-在您控制范围之外的系统上生成的任何密码都可能是弱密码。使用已知声誉的本地密码管理器(即不会将您生成的密码传输到在线存储库)

#1 楼

我对同一件事感到好奇,因此我将Gbt3fC79ZmMEFUFJ放到Google中,瞧!并且发现它不仅仅是“不要使用此密码”建议的措辞-密码本身嵌入在示例源代码中,该源代码演示了如何向服务器发送密码! (链接到页面和下面的屏幕快照)原因是熵低或不包含符号,Unicode或表情符号或其他任何东西:仅是提醒您不要使用在某个地方发布的密码,尤其是作为“示例”密码发布的密码!
[更新:这是故意的屏幕快照,而不仅仅是代码片段;代码的内容远不如在用户的网站上逐字显示要重要!]

评论


评论不作进一步讨论;此对话已移至聊天。您可以在此处继续对话,但此处的其他评论将被删除。

–Rory Alsop♦
19年1月11日在13:24



#2 楼

正如您所注意到的,它没有任何符号,这使其比具有相同长度的密码更弱,但是此密码没有其他“明显”缺陷。密码只要足够长(不必强制使用XKCD链接),就不必使用符号来使强度变高。 ,很可能某些攻击者会将其包含在字典中。毕竟,可能会有一些不太精通英语或大胆类型的用户,他们仍然使用此密码,因为它看起来随机且相当长。这样,说“ Gbt3fC79ZmMEFUFJ是一个弱密码”是一种自我实现的预言。

评论


评论不作进一步讨论;此对话已移至聊天。进一步的评论将被删除。

–Rory Alsop♦
19年1月11日,13:25



#3 楼

除了在互联网上的某个地方发布之外,此密码没有其他问题。密码为大写,小写和数字不同的16个字符。这等于6216的搜索空间,或约95位的熵。这是巨大的,并且不能被强行强制执行。在互联网上发布不可能是原因。还包括“好密码”列表,这些列表显然也已发布在Internet上,使用这种思路便使其立即成为“坏密码”。不能理解密码的熵,并认为密码必须包含特殊字符。这是完全错误的。熵是可能符号数和AND长度的函数。

如果随机生成,则熵(以位为单位)可以通过log2(符号数长度)来计算。对于具有可变大小写的字母数字,它只是log2(6216)或大约95。有用。

评论


附录:如果您的计算器没有专用的log2(),则可以通过执行log(x ^ y)/ log(2)获得相同的结果,其中log()为log10。

–用户
19年1月13日在6:11

谢谢!我记得很多年前在数学课上学到的东西,从一个日志转换为另一个日志是可能的,但是对我而言,我不记得怎么做。

– Steve Sether
19年1月14日在4:56



如果它没有出现在havenbeenpwn上,那岂不是更可能意味着没有人使用它,而是给出了密码质量的任何指示吗?由于服务器端存在安全漏洞,许多人拥有了很好的密码。

–craq
19年1月15日在18:00

还要注意,如果您走得足够高,则计算器可能不支持x ^ y,因此您可能必须使用其他对数标识,并执行y * log(x)/ log(2)。对于以62为底的双精度浮点数,您会发现62 ^ 171是可计算的,而62 ^ 172是无穷大,因此这很可能在此问题/答案所需的范围内,但是如果您的计算器碰巧是单精度浮点那么62 ^ 21将是可计算的,但62 ^ 22将是Infinity,这仍在合理的密码期望范围之内。

–CR Drost
19年1月16日在21:32



我认为这是一个比公认的答案更好的答案。接受的答案根本没有任何意义-如果书中没有解释密码弱的原因,那么认为发布是作者意图的原因是很愚蠢的。

–user91988
19年1月18日在20:59

#4 楼

看起来该密码由高度聚集在一起的QWERTZ / QWERTY / AZERTY键盘上的随机键入字符组成。
在QWERTZ键盘上最明显的是:

图像来自Wiki Commons,来自Wiki Germany。变成绿色)。
您会看到这些字符聚集在一起,并且对于具有类似色相的字符(即,密码中彼此接近的字符)来说,这一点更为明显。除此之外,这些群集似乎在键盘的原始位置附近聚集。

我必须承认我对密码破解软件/密码数据库不了解,无法确切地说出这些群集考虑到了这一点,但是至少当我尝试在键盘上键入随机字符时,我注意到自己,这些字符实际上最终并不是很随机。而且,如果我注意到了这一点,可能还有些密码数据库的作者也有。

评论


我不知道这是否是真正的集群,或者仅仅是巧合。让我们假设它是。如果仅使用群集模式(我使用37个可能的符号进行计数),那么您仍将获得约83位的熵,即约10 ^ 25。那仍然是一个庞大的搜索空间,并且可能远远超过99.9 +%的用户密码的熵。如果您能以某种方式猜测出每秒数万亿个可能性的密码,那么搜索所有可能性仍需要30万年。

– Steve Sether
19年1月18日在19:23

#5 楼

完整的段落是:



不要在密码中使用任何词典词。强密码示例:ePYHc〜dS *)8 $ + V-',qzRtC {6rXN3N \ RgL,zbfUMZPE6`FC%)sZ。弱密码示例:qwert12345,Gbt3fC79ZmMEFUFJ,1234567890、987654321,nortonpassword。 ”。乍一看,我看不到那里的任何单词。但是,我尝试在Wikipedia(英语)上查找其各个部分,并且似乎所有部分都有相关文章。 />
但是,这将是牵强的。就像是说,以Wikipedia为单词词典时,六个单词的密码短语是不安全的。没门!维基百科中包含随机条目的六词密码短语将非常安全,您当然可以说该密码现在是不安全的,因为它是在互联网上编写的,但那时所有其他可能的例子都是如此。强密码。我还尝试在haveibeenpwned上查找它,结果是:“此密码在加载到“我已被拥有”中的所有已拥有密码中均未找到”。另一个解释(可能是给出该示例的真正原因)是,如果您使用Google密码(请参见此处),则可以在某些代码中在线找到该密码(如另一个答案所指出)。因此,“词典密码”可能意味着“任何曾经写在某个地方(包括互联网)的密码”。但是,这仍然是荒谬的建议:您应该如何遵循该建议?您是否应该在很多地方(包括Google,甚至可能在历史记录中留下痕迹)开始查找密码,以确保密码没有出现在任何地方?听起来这不是一件好事。

结论:这是一个不好的例子,并且是在错误的上下文中给出的。人们将看到并解释为“哦,没有符号,我应该使用符号”。但是,将其包含在该列表中的真正原因尚不清楚,并且似乎没有真正有意义的解释。如果有人想浪费时间,可以尝试联系该网站的所有者并询问他们。

评论


如我在回答中所述,我实际上确实尝试与网站所有者联系,并且网站上或Whois查找中的任何地方都没有联系信息。

–TheHansinator
19年1月20日在2:19

正如其他人可能已经发现的那样,第5段只是草率的英语语法。它破坏了“一个段落,一个想法”的经验法则。主要句子是关于字典单词的。第二句话是强密码,第三句话是弱密码。这只是不好的写作,第二句话与字典术语无关。因此,没有给出Gbt3fC79ZmMEFUFJ作为包含词典术语的凭证的示例。

– Mac
12月3日18:13



#6 楼

这是一个误导性陈述。实际上,“ Gbt3fC79ZmMEFUFJ”是一个强密码。除了强力攻击(没有字典单词)外,它什么也不会被捕获,它只有16个字符,这比我看到的通用标准(8或6)要高得多。仅当攻击者以某种方式知道未使用任何符号时,才可以将此密码视为弱密码。如果此密码附加到的帐户公开显示为“仅数字和大写/小写字母”,则此密码为示例目的似乎较弱,但实际上仍比8位数密码更好。 />因此,对于使用大写字母,小写字母和0-9数字的16个字符的密码,熵为6216 =(48×1027),而对所有符号使用8个字符的密码(我们甚至假设96,而不是72个字符)是968 =(7×1015)。这是一个巨大的差异。

造成这种混乱的原因是该示例过度简化了使用大写字母,小写字母,数字和符号的基本建议。实际上,密码的长度更为重要,而且在实践中,攻击者将无法知道未使用完整字符集,并且实际上仍然必须强行使用9616。

#7 楼

虽然Gbt3fC79ZmMEFUFJ现在肯定不是一个很好的密码选择,但鉴于您的问题在Stack Exchange上引起了很多活动,并因此广泛发布了密码,我认为没有任何明显的原因可以确定为什么该网站首先会说它是不好的,因为坦率地说,它不是一个可靠的来源。中等质量。一些提示是不错的(例如,尽可能使用两步身份验证,离开时锁定计算机和手机),但是其中一些已受到安全专家的质疑(例如,每10周更改一次密码,至少使用一次)一个大写/小写/数字/符号)和很多看起来完全是偏执狂(例如提示22),该提示指出,如果您家中有WiFi路由器,附近的攻击者可以检测到您输入的密码是由于移动您的手产生的WiFi信号以及使用具有随机布局的屏幕键盘会缓解这种情况。拼写错误和标点符号不一致),这是一个绝对没有引用任何提示并且整个网站都是匿名的问题。没有安全专家的报价,也没有我们可以阅读的文章以获取更多信息或讨论。而且该网站绝对不包含任何作者信息-在网站的任何地方,甚至在网站的Whois注册中,都没有任何联系作者或什至知道他们是谁的方法。

从本质上讲,这意味着我们几乎没有办法确定提示“ Gbt3fC79ZmMEFUFJ是弱密码”的好坏或什至是什么意思。我们当然没有办法联系该网站的作者并亲自问他们,实际上,我怀疑这样做是否有用。我认为最好不要理会这个建议,只取而代之的是不要使用Gbt3fC79ZmMEFUFJ,因为我们已经讨论了这么长的时间。 Internet上的一个匿名陌生人-只需忽略它即可。


作为附录,您可能会对我在检查网站本身时发现的其他内容感兴趣,以便更好地了解过去,也许在此上找到更多信息。我发现不是很愉快:


该网站提供了一个选项(默认为选中,但仍为该选项),以便不在服务器上生成密码。我确实在“开发工具”窗口中查看了源代码和网络流量视图,实际上,它确实满足了此请求,但是没有办法说出它实际上是在没有阅读它的情况下完成的。
生成器用户Math.random()Math.random()是一种密码不安全的随机数生成器,使生成的密码出人意料地可预测,并且实际上比您认为的数量少得多-例如,如果Math.random()的实现只有32位状态,那么无论使用什么设置您使用的密码只能生成40亿个唯一密码,这意味着超过7个左右的任意数量的字符都是没有意义的。真正的随机密码生成器应该改用window.crypto.getRandomValues()调用,该调用从计算机中某个地方的真实熵源获取密码的每一位。
密码生成器也奇怪地放置在页面上-生成器本身的代码已最小化,但配置密码的代码却没有。网站作者似乎从另一个来源(例如另一个网站)复制了最小化密码模块。
该网站还出于某种奇怪的原因而尝试使用Google Ads。它实际上并没有调用它们-它的底部只有一个签名,用于将Google Ads ID添加到window对象-但是,即使投放了该页面,实际广告的存在也可能会破坏输入到该页面中的所有数据通过HTTPS。


#8 楼

大多数人已经对密码的强度/熵分散了注意力(看起来大多数密码管理器都会吐出一些东西)。最佳答案的发现使您的密码薄弱的原因是,几乎可以肯定它是已知密码数据库的一部分。


“与[以前]相比,它与以前有很大不同。这些庞大的密码列表。”渗透测试公司Errata Security首席执行官Rob Graham说。 “我们从来没有一个非常大的密码列表可用于工作。现在,我们正在学习如何消除它们的熵。在我们黑暗地猜测之前,破解的技术水平要微妙得多。 。”


如果某人有数据泄露事件,则破解者将从已知的密码列表开始,然后从那里进行反向操作。这就是密码管理器成为安全性新标准的原因:您每次都会生成一个随机且唯一的密码。

评论


但是,我的问题是:为什么网站没有提供正确的建议:使用密码管理器来生成密码,而不是选择一些弱项。 ?

– NH。
19年1月15日在22:13

是几乎可以肯定的是,它是已知密码数据库的一部分,还是属于一组可能是人工构造的先验密码。

–克雷格·希克斯(Craig Hicks)
19年5月6日在19:42

#9 楼

强或弱在某种程度上是任意的,因为它基于随机猜测所需的时间长短,这是密码熵的函数。您可以通过增加字符长度或增加密码中的字符池来使之花费更长的时间。之62。共有16个字符,所以这是6216个可猜测的组合。添加特殊符号(比如说10),使组合最多达到7216。 。

#10 楼

由于同一站点上的第2款,网站认为Gbt3fC79ZmMEFUFJ是“弱”的:“使用至少具有一个特殊符号的密码。”该示例没有符号,因此作者说它很弱。
正如其他人指出的那样,不应将Gbt3fC79ZmMEFUFJ当作其他原因使用,除非它已经在互联网上发布。仅这个事实就有效地将其熵降为零。低熵凭证毫无价值。现在,如果尚未发布,则对其进行一些分析可能很有帮助,以查看它可能具有多少熵。
键空间为6216或4.77×1028排列。 (复杂度为62,长度为16。)现在,如果我们假装由真正的随机过程(滚动赌场骰子,使用CSPRNG等)产生的密码,则将为16个符号中的每个分配5.9542位熵,使用对数基数2。(在您的JavaScript控制台中键入Math.log2(62)会很容易地向您显示。)总复杂度将是5.9542乘以长度,即大约95.2672位。换句话说,这是一个强度为295.2672的密码,在任何人的书中都是赢家。
这是最大熵,而Gbt3fC79ZmMEFUFJ仅在以下情况下具有这么大的熵: Hashcat软件利用的模式
,它是由真正的随机过程产生的。

,但让我们看看另一个极端,并假装密码是由任何非
在一个非随机过程中,普遍的智慧表明,熵要低得多,每个字符约有2.3位(Shannon,1950)。与6位相差甚远! (实际上,更新的分析将其进一步降低到每个字符1.1位,正如Takahira等人在2016年发布的那样)。
因此,如果我们假设每个字符为2.3位,则Gbt3fC79ZmMEFUFJ的总熵将约为37位(36.8),平均需要59,823,779,182个猜测才能发现。当然,这太可怕了。除非您毫无疑问地知道是随机创建的密码,否则应该假定不是,并且为每个字符分配一个较低的熵(2.3位)。
...它没有任何符号,您说。如果Gbt3fC79ZmMEFUFJ具有某些特殊符号,则肯定会更难破解。会吗让我们看看...
让我们将Gbt3fC79ZmMEFUFJ修改为Gbt3fC79ZmME-*,J。现在,我们的16个字符的密码的复杂性跃升至95,并且键空间为9516或4.40×1031排列。密码是随机的(具有最大程度的混乱或熵),其强度当然是一流的。非随机制作,很烂。您会发现,添加符号-*,并不能改善以下事实:字符熵每个仍仅为2.3位,总熵仍约为37位,平均需要59,823,779,182个猜测才能发现。
所有这些这么说,就无法查看密码,而“眼球”是密码的强项-必须对其进行分析。熵不是密码内容的函数,而是创建过程本身的函数。
为了说明这一点,请考虑从真正的随机过程创建的密码也可能包含有害模式。 12个字符的术语q\UD73b9(Js^既是100%随机的,也是100%无价值的。它恰好与一个非常常见的拓扑模式(ls ud d l d ls)相匹配,并且拓扑中的每个密码(全部11个四倍)将被匹配不到9小时就被屠杀了!