我一直在网上搜索,希望找到一个安全可靠的答案:我知道很多网站都会检查,但没有一个网站显示相同的结果,我怎么知道我的密码是否安全?
我找到了这个这真的很有趣,让我意识到我错了,我以为包含大写、数字、符号等的密码会更安全。
让我们以 2 个密码为例。第一个密码(称为密码 A)是 9 个字符的密码,它不是单词,也不包含单词,而只是一组随机的大写字母、非大写字母、数字和符号。第二个密码(称为密码 B)是 4 个随机字典单词组合在一起(没有意义/句子),长度为 30 个字符(只有非大写字母和空格)。
在密码计:
- 密码 A = 71%
- 密码 B = 40%
在我的密码有多安全:
- 密码A = 1年。
- 密码 B = 154 亿年。
使用密码测试:
- 密码 A 的标准攻击需要 118 年
- 密码 B 经过标准攻击后需要 7×10^24 千年(假设空格不是符号)。
因此,所有这些网站都会给出不同的结果。
我进一步做了一个简单的计算:
使用 Stack Exchange 问题,我取 95 作为每个字符的可能性数。
- 对于密码AI得到:
95^9 = 630249409724609000
- 对于密码,BI 使用法语并得到了 50,000 个不同的单词,这基本上是错误的,因为只有小型词典才得到这个数字:
50000^4 = 6250000000000000000
。 - 但使用小写字母和空格我得到了:
27^30 = 8727963568087710000000000000000000000000000
在 2 种情况下,密码 B 的强度要高得多。
一个无意义的句子作为密码是否比 10 多个随机的大写字母、小写字母、符号等更准确(因为这些密码很难记住)?
相同的帖子和答案这里
答案1
没有一种真正的方法来衡量密码强度,有很多因素会影响密码强度,更重要的是密码破解。实际上,大多数网站只是根据他们认为重要的规则(长度、字符类别、交替类别等)向您显示一个指标。
最原始的方法是纯粹的蛮力攻击,毫无智慧。使用这种方法,为了得到组合数,你需要将字母表的大小乘以密码字符数的幂。
但是,大多数攻击者不会先猜测A
,然后猜测B
,然后猜测C
,然后继续猜测。他们会使用字典中的单词。许多攻击者会使用常见的“leet 语言”字符替换,例如$ = S
或@ = A
。有些攻击者会使用字典中的单词,然后在单词的开头或结尾添加随机字符序列。
另一个问题是,你想测量什么?有多少种密码组合?破解密码需要多长时间?破解时间取决于密码的存储方式和破解的硬件。我可以用大约 1000 美元的显卡硬件轻松缩短暴力破解 SHA1 密码的时间。你可以想象,专业黑客、公司或政府可以投入大量预算购买硬件,以便快速破解。
实际上,最好的密码是使用网站允许的最大字母表构建的长而真正随机的密码。使用 LastPass、1Password 或 KeyPass 等密码管理器可以帮助您更轻松地生成和记住长密码。
答案2
因此,所有这些网站都会给出不同的结果。
向五个不同的人提出同一个问题,你会得到五个不同的答案。这一切都归结于所使用的分析方法以及你觉得最适合的基准。
说实话,我在网上从事这类工作已经 20 多年了,而且几乎所有的在线工具都是为了总是让您觉得您还能做一件事。无论是网站速度测试、密码检查器还是许多其他我几乎无法跟踪的测试。
事实上,你应该设计一个适合你的密码方案(不一定是密码),并确保经常更改它。该方案可以是任何几十种东西:一个单词、一个短语、一个数字等……但是一旦你有一个合适的方案,就使用它。不要太担心。