用于长期存储的 PGP 安全性

信息安全 加密 电子邮件 pgp 贮存 RSA
2021-08-15 06:36:05

PGP/GPG 加密邮件的安全性如何?

我意识到这对于常规电子邮件场景可能没问题,但是在更长的时间段(> 30 年)内的安全性呢?GPG 的 RSA 密钥的 4096 位限制是否会成为问题(鉴于无法使用仅对称加密)?另外,如果我没有误解任何内容,GPG 不会验证密文(它只对纯文本进行 RSA 签名)?

这里的使用场景是我想将密码存储在我的邮件帐户中(作为给我自己的 PGP 加密邮件),以便在任何地方都可以访问它们。我已经为大多数帐户使用了 Firefox Sync(它使用了一种相当高级的方案),但它只存储了一个 URL 的用户名/密码组合。有时我也需要保存一些额外的细节,因此不能使用 FF Sync,尽管它在其他方面很棒。

据我所知,对于邮件加密,除了 PGP 和 S/MIME 之外,没有其他替代方案,对吗?(S/MIME 不是一个选项,看看Thunderbird 目前对它的支持有多差)

2个回答

GPG 的 RSA 密钥的 4096 位限制不会成为安全问题,除非发现了一种新的、更好、更快的破解 RSA 密钥的算法,然后任何关于某些特定密钥大小提供的强度的断言都是过度推测的. 破解 RSA 的新算法并不经常出现;上一次是大约 1989 年的通用数域筛(自 80 年代后期以来 GNFS 的大部分科学进展都是关于 GNFS 的实际实现和许多小规模优化,但核心算法从那时起就没有改变) .

请注意,非对称加密并不能解决机密性问题;它只是移动它:您仍然必须将私钥存储在某个地方。最终,对于存储密码的问题,您将使用“主密码”保护您的私钥,这就是对称加密。您可以通过直接在充满密码的文件上应用对称加密来简化整个过程(GnuPG支持它)。仅当您想从无法访问私钥且不想在其上键入密码的机器上存储新密码时,完全不对称才是有趣的(在您的上下文中)。

无论哪种方式,一个棘手的问题是使用存储的密码。您必须在某些系统上执行解密。该系统最好没有任何恶意软件,因为键盘记录器会获取您的密码和/或您的私钥(如果您使用非对称加密)。理想情况下,您应该仅通过您自己的设备执行此操作。这就是我在旅行时所做的:

  • 我自己的设备是基于 Linux 的上网本。
  • /tmp目录是一个基于内存的文件系统(所以我在其中写入的内容永远不会进入 SSD)。
  • 没有配置交换(所以 RAM 中的内容也永远不会写入 SSD)。
  • 我在 中解密(对称)我的密码文件/tmp,读取密码,然后输入密码,然后删除解密的文件。

当然,如果那时您有自己的设备,为什么需要将加密文件存储在电子邮件中?您可以将其直接保存在您的设备上。

(说到这一点,由于电子邮件可以将任意文件存储为附件,因此您无需将自己限制为特定于电子邮件的格式OpenPGPS/MIME。使用这些只会使事情变得更简单,因为您可能希望您的邮件应用程序能够执行解密,而不必求助于一些命令行工具。但是,我可能会争辩说,命令行工具可以让您更好地控制数据的去向,例如在 RAM 支持的/tmp文件系统中。)

希望我不会离题太远,更详细地讨论您问题的最后一部分,因为我认为汤姆涵盖了其他所有内容。

我也找不到 gpg 在密文上使用 MAC 的任何迹象。

最近,我一直在使用scrypt 实用程序使用密码加密文件(密码文件和用于备份的 tar 文件)。没有我知道的 Windows 版本(我猜 cygwin 会工作),我也不知道支持它生成的特定文件格式的任何其他应用程序。与我能够找到并可能为您工作的其他实用程序相比,它仍然更接近我正在寻找的东西。它故意很少有选择;IMO,它可以使用验证选项,因为现在您必须解密到 /dev/null 才能做到这一点。文档不是很好。您必须查看源分发中的 FORMAT 文件以了解它实际在做什么,它使用随机 256 位盐对密码运行 scrypt 以获取两个 256 位密钥,一个用于 CTR 中的 AES-256固定随机数为 0 的模式,另一个用于 HMAC-SHA256。还,-t 参数使用的时间估计不准确;我发现我需要使用 -t 25 来获得 5 秒的按键强化。另一件烦人的事情是,将解密输出通过管道传输到 less 并不完全有效,因此当您查看和编辑解密输出时,您需要找到某个地方来存储解密的输出。我使用了内存文件系统(没有或加密交换,无论如何这都是一个好主意)或加密的主目录。它使用从作者的其他类似实用程序复制的 openssl AES 实现和其他加密代码,但没有构建为单独的库(这很好;其他人这样做了,但我现在找不到链接)。主要的好处是它在相当少量的代码中完成了基本的“加强密码然后加密然后验证”的事情。

我以前使用过但不推荐使用seccure,它使用基于椭圆曲线加密并直接从密码派生的公钥(不幸的是,仅通过单轮 SHA256)。它看起来被遗弃了,产生了损坏的文件,并且需要一堆锁定的内存才能工作。我喜欢它尝试做的事情,并希望有一个工作版本。

我还没有找到具有集成“加密然后 MAC”和现代加密来处理文件漏洞和 UNIX 权限等问题的优秀存档器。我认为如果您只想要 zip 样式归档但我没有具体建议,情况会更好。

希望在接下来的几年中,将有标准的广泛可用的实用程序来轻松地完成这种事情,它们不像当前的选项那么复杂并使用当前的加密货币。