GnuPG/OpenPGP 关键实践

信息安全 密码学 密钥管理 pgp
2021-09-07 21:29:01

我正在寻找有关 GnuPG (gpg) 最佳实践的意见。在 gnupg-users 邮件列表中已经讨论过一些问题,但我想获得尽可能多样化的观点,所以我想把这个话题带给 SE 的专家。

我正在转换电子邮件帐户,并认为现在也是转换我的 GPG 密钥的好时机。我目前有一个 RSA-4k 密钥,用于签名、认证和加密合二为一。

我目前的想法是生成一个新密钥,其中包含一个仅用于认证的主密钥,该主密钥将保持离线状态,并单独加密和签名子密钥以供日常使用。我认为这将使我的 Web of Trust 发展得最好,同时仍然保护我的数据。此外,它会在我被迫交出一个密钥的(不太可能的)事件中将我的加密和签名分开。

有没有我没有考虑过的优点/缺点?如果我决定使用智能卡,使用 RSA3k 会更好吗?

2个回答

从理论上讲,您所设想的是“正确的方式”:最安全的主要密钥,仅用于验证或撤销您将实际使用的密钥。然而,在实践中,撤销并不奏效:已经与您交换过电子邮件的人将保留您的公钥副本,并且不会自动收到您的撤销通知。

您可能希望对加密密钥和签名密钥有不同的存储过程。如果您丢失了加密私钥(例如硬盘崩溃),那么您将无法再解密传入的电子邮件,包括您已经收到的电子邮件。所以加密密钥应该备份在某个地方。在另一方面,签名密钥应该不会在任何地方备份的:失去的签名私钥是一个小麻烦(你只需要创建一个新的密钥,并证明它),但它并不否定先前发出的签名,这继续是可验证.

4096 位,甚至 3072 位,对于 RSA、DSA 或 ElGamal 来说都是多余的。2048 位已经足以确保免受使用基于地球技术的攻击者的攻击。说更长的密钥“更安全”纯粹是对未来未知攻击可能是什么样子的猜测,如果我们知道它们的样子,它们就不会是未知的。

一般来说,我建议人们使用 S/MIME 而不是 GnuPG,因为 S/MIME 已集成到当今广泛使用的每个电子邮件客户端中。然而,由于尚不完全清楚的原因,一大群人一直坚持使用 GnuPG 来确保电子邮件安全。(我用它来签署源代码分发,但仅此而已。)

但是,您要求最佳实践,所以这里是:

  • 创建一个大的主密钥来签署您的其他密钥。使用该密钥签署您的其他密钥。

  • 为您的密钥创建吊销证书并将其离线存储。这样,如果您丢失了私钥,您将拥有它们。

  • 说服您可能想要与之交换邮件的每个人都安装 GnuPG 插件并签署您的密钥。(现在很恐慌,因为您刚刚公开记录了您与任何获得您钥匙的人的关系。)

  • 将您的密钥上传到密钥服务器。(并希望没有其他人使用您的电子邮件地址上传密钥。)

如果您阅读以上内容,您会看到我对 GnuPG 模型的另外两个抱怨 --- 它泄露了私人信息(您的朋友是谁),并且密钥服务器模型只是被削弱了。

祝你好运。