keepass 随机密码生成器是否完全安全且值得信赖?

信息安全 密码 密码学 随机的 守望先锋
2021-08-12 11:44:00

使用 keepass 生成密码是否安全?例如我的帐户,我使用 keepass 生成的密码是否安全?我未来的 Keepass 万能钥匙能否在 keepass 中安全生成?使用什么方法?适用于 Windows 和 Linux 的 Keepass 2.30。

谢谢,非理性偏执的 Keepass 用户。

1个回答

tl; dr:是的,它相当安全。

当攻击者知道您使用 KeePass 时,他们可能还会假设您使用密码生成器的标准设置。这告诉他们长度和字符集 [a-zA-Z0-9]。这使得破解比不知道长度以及如果他们期望你也使用特殊字符更容易破解。但即使有了这些知识,生成的密码仍然强大而无法暴力破解。

但是密码究竟是如何生成的呢?如果它是一个可预测的伪随机数生成器,那可能是一个攻击点。

查看KeePass 2.30 的源代码,密码生成器似乎是在KeePassLib\Cryptography\PasswordGenerator\PwGenerator.cs. KeePassLib\Cryptography\CryptoRandomStream.cs它使用来自流密码Salsa20的类 CryptoRandomStream作为随机数生成器。

密码生成器的工作方式如下:

  1. 生成一个随机数(PwGenerator.cs第 65 行)。它使用.NET 框架( )中的标准RNGCryptoServiceProvider 。CryptoRandom.cs
  2. 生成的随机数与一些额外的熵(如果可用)相结合。我没有费心去找出这个熵的来源(通常使用不可预测的用户行为,如鼠标移动或按键),但显然并不认为熵总是可用的。
  3. SHA256 哈希是从具有熵的随机值生成的(CryptoRandomStream.cs第 114-118 行)。
  4. 该哈希用作 Salsa20 流密码的加密密钥(CryptoRandomStream.cs第 119 行)。
  5. Salsa20Cipher.cs通过重复将其输出作为输入(第 176-196 行),流密码被用作随机数生成器。

要预测密码,需要破解微软的加密随机数生成器预测熵(如果使用)。

或者,如果有人破解了 Salsa20 密码,则可以从之前的密码中预测出密码。根据维基百科“截至 2015 年,没有针对 Salsa20 的公开攻击”

最好的问候, 非理性勤奋的软件开发人员。