GPG 对称加密最强大的可用算法是什么?

信息安全 gnupg 密码
2021-09-09 21:41:23

GPG 对称加密最强大的可用算法是什么(作为 的参数给出--cipher-algo)?

可能的密码:

  1. 主意
  2. 3DES
  3. CAST5
  4. 河豚
  5. AES
  6. AES192
  7. AES256
  8. 双鱼
  9. CAMELLIA128
  10. CAMELLIA192
  11. 山茶花256
2个回答

使用AES-256(因为它阻止人们向您讲授量子计算机)。

如果您没有特别的(性能)要求,那么 256 位 AES 是一个不错且安全的选择。但这并不意味着存在针对其他密码的实际攻击。归根结底,这是个人喜好的问题,因为没有人可以预测哪些理论观察可能会在未来成为实际攻击。

事实上,您也可以安全地使用 AES-128,它的速度提高了 30% 左右。是否值得从 AES-128 切换到 AES-256 存在一些分歧:将密钥大小加倍并不能阻止任何当前的攻击,因为无论哪种方式搜索密钥空间都不实用。然而,当未来量子计算机可能能够执行Grover 算法时,这种差异变得很重要,该算法有效地将密钥大小减半,因此可以使针对 AES-128 的暴力攻击变得可行。但这是理论上的未来情景。文章“猜猜我们为什么要迁移到 256 位 AES 密钥”是关于 AES 密钥大小的好读物。

与@SteffenUllrich 类似,我对 AES 系列感到满意,因为由于它作为 NIST 标准的地位,AES 已经被广泛研究,并且已经存在了很长一段时间,但没有任何人发布任何相关的弱点。

GnuPG FAQ也有一个意见:

11.10 GnuPG 中最好的算法是什么?

如果可能,应避免使用 MD5 和 SHA-1,对于批量加密,最好使用 Camellia、Twofish 或 AES。除了这些指导之外,GnuPG 中没有“最佳算法”。这有点像问哥斯拉还是金刚更擅长恐吓城市:没有明确的赢家。

不过,这并不是说您不应该有偏好。只能说 GnuPG 的算法设计得非常好,以至于没有单一的“最佳”。有很多个人的主观选择。

您应该使用其中一种 AES 变体,因为它是迄今为止最常见的现代密码,因此:

  1. 比大多数替代方案都受到更严格的审查;
  2. AES 有相当多的硬件支持。例如,英特尔 CPU 和许多 ARM 移动 CPU 多年来一直采用硬件 AES 加速。

GnuPG 2.1 版使用 AES(128 位密钥)作为默认值,因此如果您拥有该版本,则根本不需要调整默认值。旧版本默认为 CAST5,但如果它们支持 AES,则值得覆盖该默认值。(不过,忽视这一点不应引起恐慌。)


现在,回顾一下其他选择:

  • IDEA、3DES、CAST5 和 Blowfish 具有 64 位块大小。最好避免使用此类密码,即使它们在技术上不被认为是不安全的。 Matthew Green 有一篇关于这个主题的可访问的博客文章。
  • 除了 64 位块大小之外,3DES 非常慢。使用 3DES 的唯一充分理由是大量遗留系统使用普通 DES(这是不安全的),而 3DES 是一种无需大量投资即可升级这些系统安全性的方法。
  • Camellia 和 AES 一样支持更现代的 128 位块大小。Camellia 没有什么明显的坏处,但它的使用量几乎没有 AES 那么多,因此它不会从由此产生的网络效应中受益。