我的问题不在于密码的数学强度,这显然取决于所选择的歌词以及如何对其进行密码化,而更多的是关于可能弹出的密码总量的可预测性这种方法。
这是一个很好的问题,我将在这里打破常规,戴上我的锡纸帽子,说“不,这不是一个好主意”。为什么?让我们在斯诺登泄密的背景下来看它。
因为GCHQ 监视着英国互联网上的所有流量,并且根据斯诺登泄密事件,您的互联网流量与五只眼睛共享。即使您使用的是 HTTPS,这也是个坏主意。
“但是马克布法罗,你又是一个疯狂的锡纸帽子演员!” 想想看。破解密码的时间突然显着减少。如何?
- GCHQ 记录您的在线搜索历史。借助 XKeyscore,他们可能知道您何时注册了某个网站。
如果他们知道您何时注册该网站,他们会看到您在那个时候访问了 Google.com 并搜索了歌词。即使您使用的是 HTTPS,您大约在那个时候连接到 google.com,然后访问了一个托管歌词的网站,这就是他们开始破解您的密码所需要的一切。
- 即使他们无法查看流量,他们仍然可以看到您已连接。即使您使用的是 HTTPS,这也不会阻止他们自己托管歌词网站。这也不会阻止公司记录您的搜索结果,也不会阻止公司将这些结果提供给任何人。如果他们知道您喜欢或不喜欢哪种歌曲,那就更容易了。
现在他们可以编写一个算法来破解你的密码,这比暴力破解所有可能的组合要容易得多。或者更好的是,使用现成的密码破解程序和提供的这些结果字典。
但是马克布法罗,政府没有监视我!
这一切都很好,花花公子。除非您是罪犯,否则您通常无需担心它们。或者你很注重隐私。或者你是一名安全研究员。
还有一个重要的方面你需要考虑,我认为这比政府要糟糕得多:广告公司和黑客“但是 Mark Buffalo,我使用 NoScript(很棒)和 Ghostery(Ghostery 出售你的信息)!” 大多数人不使用这些。许多这样做的人在使用智能手机时也不使用这些工具。
到处都有数据踪迹,尤其是如果您拥有智能手机(尤其是安卓),并且有很多邪恶的营销公司会在他们一有机会就将您的数据卖掉。或者也许他们不是邪恶的公司,但他们被黑客入侵了。
任何有“需要”的人都可以购买这些数据,而那些足够成熟的人可以窃取它。虽然对于大多数人来说这似乎是为这么一件小事而疯狂担心,但当你深入研究联邦承包领域时,情况会变得更糟。这是安全漏洞开始的方式之一。
前面列出的所有步骤都可以在没有XKeyscore 的情况下完成。它们可以通过庞大的营销数据库轻松完成。
别再用锡纸了,马克。
如果我现在戴着我的锡纸帽子,我相信这篇文章是故意削弱标准的计划的一部分。我个人认为,削弱标准是一种国家安全风险,尤其是当联邦承包商采用这些削弱标准时。
就个人而言,我更担心邪恶的营销公司和黑客,而不是政府。尤其是当故意削弱标准有助于潜在敌对国家未经授权访问关键基础设施和知识产权时。
但说真的,这会让你的密码变弱
现在让我们谈谈数字和社会工程学。
使用此密码的正常蛮力,根据此密码策略,您可能需要以下字符:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=
那是 76 个可能的字符。使用这种密码方法,假设大多数人将使用 6-7 个单词来生成密码,并且可能添加 1 个符号(!@#$%^&*()
最常见的)加上一个数字,您需要测试 - 以获得 8 个字符的密码 -1,127,875,251,287,708
组合以耗尽密码空间。这可能需要很长时间,具体取决于散列算法和硬件。
让我们以md5为例(它很糟糕,但它的计算成本很低。请不要使用md5;我只是作为一个例子)。要耗尽 8 个字符密码的字符空间,使用便宜的工作站需要 4 年才能破解。大约 4 年 25 天 7 小时 46 分 54 秒。如果将密码长度增加到 9,则需要 309 年以上。请记住,处理能力正在迅速增长。
了解有关用户密码的额外参数可以简化此操作。假设您选择以下歌曲:baby hit me one time。这是你最喜欢的歌曲,我知道这一点是因为我通过社会工程让你告诉我。让我们选择一个可预测的歌词短语来创建密码: 再打我一次宝贝。这成为HmBomT
. 现在让我们添加一些带有数字的leet。现在我们有了H@BomT3
. 现在我们知道了您最喜欢的歌曲和您最喜欢的短语,这就是您的密码字母空间变成的样子:
hHmMbBoOmMtT1234567890!@#$%^&*()-_+=
如您所见,这个字母空间显着减少。如果您知道密码以哪个字符开头,这会快得多,但我们假设您不知道。让我们进一步假设它是随机的。现在您已经减少了将密码空间用于2,901,713,047,668
组合所需的时间,使用便宜的工作站破解密码需要 3 天。让我们把它升级到 9 个字符。现在需要 137 天 15 小时 47 分钟。
您可以自己计算(字符集:自定义)。此外,所有这些都假设您没有专用的 GPU 集群。
编辑:
我注意到现在有证据表明专门用于破解 bcrypt 的定制硬件解决方案,其中一个比 25-GPU 阵列便宜得多,功耗更低,并且在各个方面都非常优越。如果您想了解更多信息,请阅读这篇精彩的文章。
但是我们不应该简单地增加密码长度吗?
是的,你可以。说实话,当您增加密码长度时,它会大大增加熵。
但是,进入会变得很烦人——尤其是对于每次离开计算机时都需要注销的公司环境。最重要的是,很难记住这个密码。
在输入不同的密码并被迫每隔几个月更改一次后,您最终可能会忘记它。更糟糕的是,您可能会立即忘记它,并被迫访问 IT 帮助台以重置您的密码。这会导致业务成本和生产力损失。
事实上,更好的方法是xkcd's correct horse battery staple
。您可以在某处使用大写字母,在其他地方使用数字,或者您可以在增加熵的同时使其更容易:例如correct horse battery staple gasoline
. 它很容易记住,很容易打字,而且电脑很难破解。还要记住,这应该是从 2048 个单词列表中随机生成的。
对于网站,我会推荐一个密码管理器,比如 KeePass。我不会使用 LastPass,因为它容易受到网络钓鱼攻击。网站可以知道您已启用 LastPass,因为您的浏览器会在请求时将此信息发送到网站!这是浏览器指纹工作原理的一部分。
对于您无法使用密码管理器的公司和其他登录名,我会推荐一个correct horse battery staple
带有额外单词的变体。也许correct horse battery staple gasoline
?更容易记住。