OpenPGP 私钥能否足够安全地公开存储?

信息安全 pgp gnupg
2021-08-24 14:26:27

OpenPGP(私有)密钥格式存储对称加密的密钥。“迭代和加盐”设置从密码短语派生此密钥,采用“八位字节计数”参数确定将密码短语扩展为对称密钥的复杂性。使用此参数的最高值(约 6500 万),我的计算机 (GPG) 上的密钥扩展大约需要一秒钟。

使用这种设置,是否有可能让暴力破解让私钥公开可用是明智的?

我希望答案取决于密码短语的复杂性。例如,如果您以某种方式设法拥有一个具有 256 位熵的密码,那么攻击者最好只猜测派生密钥而不是密码——在这种情况下,这相当于暴力破解 AES 密钥(我会考虑很难做到“安全”)。所以问题可能真的是“你的密码必须有多复杂才能保证安全?”。

1个回答

你已经回答了你自己的问题。问题变成了,攻击者可以投入多少资源来破解您的密码,以及人们选择密码的能力如何?

目前最大的超级计算机有大约 300 万个内核。假设每个内核的处理能力与您的工作站大致相同。那是每秒 300 万次裂纹。

在一年内,这样的机器可以通过大约 47 位的熵来运转。在 10 年内,这个数字只会上升到 50 位熵。使用 64 位的熵,破解时间可达一百万年。当然,计算机变得更快,所以如果我们假设 1.5 年的倍增时间,你可以每 3 年去除 2 位熵。所以 10 年后,53 位密钥将在一年内被破解。在 20、60 位密钥中。所以这听起来真的很棒,对吧?如果人们使用简单的 xkbcd 漫画http://xkcd.com/936/,则 64 位熵非常容易

现在......现实是大多数人不会选择好的密码,也不了解熵。他们仍然会选择“password123”、他们的狗名或电话号码。他们不了解离线攻击。这些都是低熵源,即使使用花园式 PC 也可以很容易地被单个人破解。

那么你自己能以 1/秒的速度用你那微不足道的 PC 破解什么呢?在一天之内,您可以尝试 86,000 次,或者大字典中的所有单词。一个月,你可以尝试260万。

因此,我想说,如果您要发布加密的私钥供任何人下载,那您就是在自找麻烦。保护这些密钥的其他一些方法会更合适。