![随机生成的密码安全吗?](https://linux22.com/image/1274243/%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90%E7%9A%84%E5%AF%86%E7%A0%81%E5%AE%89%E5%85%A8%E5%90%97%EF%BC%9F.png)
像 Roboform 这样的应用程序可以生成随机密码。也许有一些黑客程序很聪明,知道密码生成器的工作原理,这让他们更容易破解密码?也许他们知道一些模式?
另外,您对 LastPass 有什么看法?您的密码存储在云的某个地方。谁知道那里会发生什么……管理员可能会好奇,或者黑客可能会入侵云。
答案1
有可能。它是随机的,可能会出现password1
!
或者更准确地说,是的,它们是安全的。它们并不是真正的伪随机密码(或者至少不是任何好的生成器,就像您在适当的密码管理应用程序中找到的一样),而是遵循旨在创建非随机但很难猜到的密码的规则。
密码破解是已知的、可预测的事情,你可以利用这一点来创建能够有效抵御密码破解的密码。密码不是字典里的单词,不是很长的、带有符号的、字母大小写的、数字的等等。生成一个现代机器需要几百万年才能破解的密码并不是一个困难的挑战——因为编写破解器的人知道生成器的工作原理,编写生成器的人也知道破解器的工作原理。
至于 lastpass,据我所知,您的密码容器是在本地加密和解密的,因此被泄露的可能性非常小。不幸的是,您不能使用 lastpass 来保护您的 lastpass 容器,因此您必须依靠自己的密码生成技能来记住它!
答案2
我是随机密码生成网站的作者http://passwordcreator.org。以下是我在创建该网站的过程中学到的有关创建安全随机密码的知识:
随机源
计算机上的大多数随机数生成器都是伪随机的。它们基于算法,不适合生成密码。它们通常以当前时间为种子。如果知道(或可以猜出)这一信息,就可以重现它们的输出并查看将要生成的密码。
要生成密码,加密安全伪随机数生成器 (CPRNG)应该使用。从维基百科来看,这种类型的随机数生成器有两个要求:
- 给定一个随机序列的前 k 位,没有多项式时间算法可以预测第 (k+1) 位并且成功率高于 50%。
- 如果部分或全部状态已被揭露(或被正确猜出),则应该不可能重建揭露之前的随机数流。此外,如果运行时有熵输入,则应该不可能使用输入状态的知识来预测 CSPRNG 状态的未来情况。
现代网络浏览器(Internet Explorer 除外)现在具有具有加密安全随机数生成器的 JavaScript 可用的加密 API。这使得像我这样的网站可以轻松生成唯一且不可猜测的密码,只要知道密码生成的时间和地点即可。
密码长度
一种常见的密码攻击是攻击者获取存储加密(哈希)密码的数据库的访问权限。然后攻击者可以生成猜测值,使用相同的哈希算法对猜测值进行哈希处理,并查看是否有匹配项。 这里有一篇文章,显示了有多少密码容易受到此类攻击。 如今,计算机的性能已经非常强大,攻击者每秒可以尝试 1000 亿次密码。秘密军事和间谍机构的计算机可能能够执行更多数量级的破解。
从实用角度来看,这意味着密码需要从千万亿种可能性中选择一个。键盘上可以输入的 96 个字符只能使用八个字符的密码产生千万亿种可能性。为了安全起见,今天的密码必须比过去更长。计算机将来会变得更加强大,您可能希望选择比您今天感到安全所需的密码更长的密码,以便将来也不会轻易被破解。我建议基于 96 个可能字符的随机密码长度至少为 10,但使用 12 或 14 的长度对未来的安全性来说会更好。
答案3
如果密码生成例程的 itake 参数完全独立于生成密码的上下文(例如:它不要求网站网址和登录名,并且在生成密码时以可重复的方式包含这些数据),那么可以相对确定该例程生成的任何密码都足够强(只要有足够的长度和复杂性)。
如果上述场景中涉及的任何机器以任何方式受到威胁,那么密码能够提供任何级别安全性的确定性就会降低。