GnuPG 的最佳加密和签名算法:RSA/RSA 还是 DSA/Elgamal?

The*_*e-Q 46 security encryption rsa gnupg dsa

我发现了这个相对古老的问题,即 RSA 还是 DSA 是使用 GnuPG 进行签名和加密的首选算法。

使用 时gpg --gen-key,两个相关选择是“RSA 和 RSA”或“DSA 和 Elgamal”。哪个更好?各自的优缺点是什么?自 2009 年以来有什么变化吗?

Jen*_*rat 74

值得信赖的推荐

在上一篇文章的时候,仍然存在关于更改网络存档中仍然存在的默认算法的争论,这些算法已经达成了粗略的共识,切换到默认的RSA 2k 密钥已经执行。

Debian建议在他们关于使用子密钥debian-keys自述文件的文档中使用 4k RSA 密钥。debian 开发人员密钥环中大约四分之三的密钥中的绝大多数是(仍然)DSA/Elgamal(通过 gpg 的输出进行 grepping 计数)。

在接受 iX(德国计算机科学杂志,第 11/2013 期,也可免费在线获取)的采访中,PGP 的发明者Phil Zimmermann建议“使用 RSA 时至少长度为 3k”,尽管 1k 密钥尚未破解。但他们“触手可及的攻击者拥有丰富的资源”。

关于安全

现在,据说两者对于足够的密钥大小都是安全的(RSA 建议使用 4k,DSA2 需要 2k,否则您将使用使用 SHA-1 的 DSA1)。

要选择RSA 密钥长度,请查看NIST 提供的实际强度概述(第 64 页)。很容易看出强度不会随着密钥长度(和计算时间)线性增长,所以双倍大小并不意味着“双倍安全”。

Debian 上的 OpenSSL 的 DSA 实现存在问题,但这是由使用错误的随机数据引起的,RSA 也可能发生这种情况。

在 RSA 和 DSA2 之间选择

亲 RSA

  • RSA 更为广泛,虽然在 OpenPGP 标准中不是必需的,但所有主要实现都可以处理它;DSA2 没有(还)
  • RSA 提供更快的签名检查

亲 DSA2

  • 较小的签名,但无论如何它们都很小;对于电子邮件和代码签名可能可以忽略不计
  • 更快的密钥创建(可能与低功耗和嵌入式设备相关,如手机和路由器)
  • 签名速度稍快

我自己的决定

最近在创建一个新的 OpenPGP 密钥时,我决定使用 8k RSA 作为主键,将 4k RSA 作为日常使用的子键。无论如何,RSA 签名的验证速度很快,巨大的 8k 签名仅用于签署其他密钥,但 8k 应该被认为足够长时间使用。4k 适合当前的子密钥,因为在不丢失所有签名的情况下撤销它很便宜。

在我的 Core 2 Duo T9300 上创建 8k 密钥大约需要 20 分钟,所以请花点时间做一些工作(用于提供随机源)。