跳转到主要内容
Chinese, Simplified
SEO Title

GnuPG和Age之间的主要区别是简单性(或者复杂性,如果你愿意的话):

  1. 在Age中使用的文件格式比GnuPG(即OpenPGP)使用的格式简单得多,后者相当复杂,因为它必须支持许多用例和许多遗留问题;参见RFC 4880,与age v1相比;
  2. 密码学套件在Age中非常“固执己见”(每个目的只有一个算法,主要是ChaCha20和Curve25519,两者都由Daniel J.Bernstein开发),而GnuPG(因为它必须实现OpenPGP)支持相当广泛的算法(其中一些不是很“现代”,可能有弱点);因此,当使用GnuPG时,尤其是对于敏感数据,必须知道使用了什么实际算法;
  3. (与前一点有点关系)可用的加密参数(算法、强度、轮次、密钥大小等)由Age开发人员根据常见的最佳实践进行选择,同时在GnuPG中(由于OpenPGP的支持),人们可以选择(因此很可能是因为不知道削弱加密的含义),默认值更“保守”;
  4. 然而Age是比GnuPG年轻得多的设计和实现,这既有优势(更干净的代码、当前的最佳实践、当前的密码学等),也有劣势(可能发现潜在问题的审查和审计较少;)(例如,GnuPG试图通过Linux上的mlock使用内存锁定来确保加密材料(即密钥字节)不会泄露给交换;搜索Age的问题和代码以查找mlock或安全内存或内存锁定不会产生任何结果;)
  5. GnuPG的一个主要优势(这让我个人陷入困境)是存在缓存密钥材料的gpg代理,因此我可以执行多次加密/解密,而无需多次提供密码(或使用无密码身份文件);
  6. 显然,Age只支持加密/解密,但GnuPG也支持签名;(对于这个用例,可以使用以类似于Age的方式构建的minisign;)

关于您关于Age密码套件安全性的问题,正如Age所说(基于规范):

  • ChaCha20-Poly1305(RFC 7539)(由D.J.Bernstein开发)——用于加密实际数据(基于密码和私钥/公钥模式);
  • X25519(RFC 7748)(由D.J.Bernstein开发)——用于私钥/公钥加密;
  • scrypt(RFC 7914)——用于密码推导;
  • HKDF-SHA-256(RFC 5869)——用于各种密钥派生(而非密码);

因此,所有的算法都是基于RFC的(因此,至少听起来符合目的),并且所有算法都是“现代的”,因为社区不建议从它们转向更好的替代方案。(唯一的小例外可能是向Argon2推进的scrypt。)

另一个重要的观察结果是,ChaCha20-Poly1305和X25519都是由D.J.Berstein开发的,这两个似乎都是当前许多开源项目“最喜欢”的密码套件。(尽管密码学不是一场流行竞赛。):)

我是否从GnuPG切换到Age?

目前我一直和GnuPG呆在一起。对于一个单一的用例,我已经使用了Age,如果不是因为#256问题(即无法从文件描述符中读取密码),我会将更多的用例迁移到Age(包括在我的个人笔记本电脑上解密磁盘加密的密钥)。

目前,Age缺少一些用户体验关键功能(至少对我来说):

  • 它没有代理来缓存密钥材料;(因此,我只能重复输入密码或使用无密码的身份文件;)
  • 它不支持从文件描述符中读取密码;(密码仍然提供了一些,但在早期Linux启动的情况下,必须通过systemd询问密码;)

此外,我仍在观望Age如何进一步发展。Age在GnuPG上的最初特点(至少对我来说)是简单:一个二进制文件可以完成它所支持的所有功能,没有配置文件,没有$HOME强制要求;最近几个月,我在Age的讨论中看到了很多提到的“插件”,因此我担心GnuPG的复杂性会通过这些“可选插件”重新出现。(事实上,文件描述符中的密码被暗示为“插件”,对于早期的系统引导用例来说,这似乎太复杂了。)

原文地址
https://github.com/FiloSottile/age/discussions/432
本文地址
Article

微信

知识星球

微信公众号

视频号