保留多个版本的 KeePass 数据库是否不安全?

信息安全 守望先锋
2021-08-26 03:18:05

我将我的 KeePass.kdb数据库保存在远程位置,并且我从不覆盖旧版本,我只是将日期附加到我正在上传的新版本中。所以它看起来像这样:

db.kdb_2015-01-01
db.kdb_2015-02-01
db.kdb_2015-02-04
db.kdb_2015-04-01
db.kdb_2015-05-02
....

有几十个这样的。所有人都有相同的密码,并且两个连续的密码之间略有不同。我保留它们以防有一天我发现我删除/编辑了我不应该拥有的东西。

那么,一组.kdb具有相同密码的非常相似的文件比一个更容易“破解”吗?

3个回答

简短的回答:
这可能没问题,但请确保定期删除非常旧的文件。

长答案:这可能
是一个问题 有几个原因为了说明某些情况,让我们假设攻击者掌握了所有这些文件,而不仅仅是一个(即最近的一个)。什么可能导致您的方法不太安全?以下是一些假设的可能性(将来可能会成为现实):

  • KeePass 的早期版本中存在一个漏洞,该漏洞已被修补,但以不安全的方式存储数据。这可能会导致该版本之前的密码被泄露,而删除旧版本的密码将无效。

  • KeePass 对密码进行加密,但有一些密码学上较弱的密码存储方式。例如,假设它不使用随机加密。这意味着存在信息泄漏:攻击者可以通过查看文件之间的差异(假设密码的顺序保持不变)来查看添加或删除帐户的时间。

KeePass 维基百科页面说 AES 或 TwoFish 可以用作密码。这些可以被认为是安全的,但上述更大的问题是如何使用它们。可能存在更多潜在的加密漏洞(看看我们近年来在 SSL/TLS 中看到的问题)。但是,这些可能是理论上的,并且可能会影响您只有一个文件的情况和您有多个文件的情况。因此,除非您存储极其敏感的密码,否则保留一些备份文件可能不会受到伤害。

让我们假设攻击者知道所有数据库文件的密码是相同的。当我们有多个使用相同密钥加密的密文时,您想到的是两次密码攻击。

幸运的是,KeePass 使用的现代密码(如 AES)旨在抵御此类攻击。AES 甚至用于通过 SSL/TLS 加密 HTTP 数据包。每次您安全浏览网站时,都会使用相同的会话密钥对数千个此类数据包进行加密,然后进行传输。攻击者可以轻松嗅探这些数据包,并且他们知道所有这些数据包都使用相同的密钥加密,但他们仍然无法破解它。这表明此类密码可以抵抗此类攻击。

对这种攻击较弱的密码的一个例子是著名的一次性密码。因此,您不应该重复使用该垫。但是,在处理现代密码时没有这样的限制。

让我们假设 Keepass 不是 100% 安全的(这是一个安全的假设,因为没有什么是 100% 安全的)。如果攻击者拥有您的 Keepass 数据库的一份副本,那么这就是他必须使用的全部内容。

如果攻击者拥有您的 Keepass 数据库的两个不同副本,则攻击者可能能够攻击:

  • 最新副本。
  • 较早的副本。据推测,这不会更容易,但你不知道。
  • 两者的区别。

现在,如果攻击者还知道您何时注册 Ashley Madison(或 Gawker 或任何其他已被黑客入侵的网站),黑客可能能够找到之前创建的 Keepass 文件和您注册之后创建的文件,识别差异,并且会对差异的纯文本有一个很好的了解。这可能会大大降低破解加密的难度(希望仍然足够困难,但它仍然可以帮助攻击者很多)。