将私钥存储在云端有什么问题?

信息安全 加密 密码 密钥管理 云计算
2021-08-31 16:41:54

我知道这听起来像是一个愚蠢的问题,但它有什么问题呢?假设所有私有数据都使用 PBE AES256 加密(由客户端),那么这个方案是否比在本地计算机上存储密钥更容易受到攻击?

优点:

  • 您的所有设备(智能手机、笔记本电脑、相机?)都可以访问相同的密钥,而无需到处复制它们并保护多个设备
  • 假设密钥服务器由了解安全性的人托管,则数据应该比您的智能手机或笔记本电脑更安全

缺点:

  • 一次成功的攻击可以一次性删除数百万个(加密的)密钥(远程攻击、恶意员工等)

我对当前情况的理解是,您在本地计算机上使用密码(*.JKS、*.BKS、secring.gpg 等)保护您的私钥。攻击者可以编写一个木马,将您的所有私钥文件上传到他控制的服务器。这最近开始发生在比特币钱包文件中,因此它可能发生在密钥存储中是合理的。这将使攻击者一次性获得许多密钥存储,这与对密钥服务器的成功攻击相同,并且据我所知,其复杂性大致相同。此外,当前的密钥存储文件并没有提供比 AES256 更多的攻击保护,因为它们都围绕用户的密码短语。

在我看来,这里真正的弱点是用户的密码,而不一定是密钥的存储位置。我错了吗?我知道这不是理想的情况,但我将其与当前情况进行比较。

2个回答

使用 PBE 加密的任何内容(如“基于密码的加密”)都可能成为离线字典攻击的对象(即:攻击者尝试潜在的密码)。这是一个令人担忧的问题,除非你有一个超强密码,这并不像看起来那么容易,因为你还必须记住它,并定期输入它(如果你在某处记下它,它并不是真的超强)。使用重量级的密钥派生函数(例如bcrypt )可以在一定程度上缓解密码不那么强的缺点。

“足够强”意味着“具有 128 位或更多的熵”,这意味着“您使用的密码生成方案可能已经生成了至少 2 128个其他不同的密码”——所以我们不是在谈论 8 或 10 个字符,而是 20完全随机的字符,或 10 个随机选择的“常用词”的列表。说到这一点,在那种情况下坚持使用 AES-256 是没有意义的:AES-128 已经可以了(即弱点将是密码,而不是 AES)。

如果您有足够强的密码,您可以在云中存储您希望使用此密码相对加密的任何机密数据,包括私钥。您仍然必须相信云管理器不会丢失您的文件,但平均而言,云中的数据比您在街上挥舞的昂贵手机的内脏更安全(请记住,即使手机被盗比汽车更常见)。当然,除非云管理员对你怀恨在心。

归根结底,这一切都归结为信任。如果正如@Thomas 所说,您对事物进行了足够的加密,那么您就无需信任云提供商,但是如果您信任云提供商为您安全地加密数据,我会更加担心。不是因为我不认为他们可以,而是因为有太多的层执行可能会失败。攻击者可以尝试破坏所有这些 - 并且可能在实际瞄准该云提供商托管的其他东西时访问您的密钥和数据 - 因此您被入侵的可能性增加。

如果我将我的私钥存储在只有我可以访问的设备上,我可以控制风险级别(通过采取预防措施),但也是一个小得多的目标,因为很少有攻击者想要追捕我。

最后,这并不是一个真正的技术问题,而是一个风险和信任问题。尽管风险状况有所提高,您是否相信云中的实施可以保护您?