除了缺乏原生 Outlook 支持之外,为什么人们更喜欢 S/MIME 而不是 PGP/MIME 来处理电子邮件?

信息安全 tls 电子邮件 pgp 微笑
2021-08-26 09:39:52

从我(仍然很主观)的角度来看,GnuPG/PGP 优于 SSL(或者更具体地说,PGP/MIME 优于 S/MIME;也许在其他领域 SSL 是更好的选择),例如由于支持子键单独的签名和加密证书以及信任网络,而不必盲目信任 CA - 包括在没有 CRL 或 OCSP 的情况下撤销证书的能力。

但与 S/MIME 相比,PGP(MIME 与否)需要一些额外的用户努力,并且 Outlook ≥ 2010 中的无缝集成(例如 Thunderbird 中的 Enigmail)(不幸的是在商业世界中广泛使用)需要一个插件(唯一可用的我发现的一个是Outlook 隐私插件,它目前只支持纯文本 PGP)。

但除了这个可用性问题之外,是否有合理的理由更喜欢 S/MIME 而不是 PGP/MIME?

2个回答

偏爱一种技术而不是另一种技术的主要原因可用性。无论您使用何种工具,电子邮件的安全性主要取决于用户的合作程度——他们电子邮件的大部分机密性取决于他们不对数据做任何愚蠢的事情以及在异常情况下做出适当反应的能力。只有当他们使用的工具可用、易于使用且可靠时,您才能获得良好的安全性。因此,很难在抽象中比较 S/MIME 和 OpenPGP 。

但是,我们仍然可以对PKI 模型进行一些区分。S/MIME 依赖于X.509,这是一个标准的庞然大物,旨在支持具有受控信任委托的分层 PKI,来自一组有限的信任锚和短路径。OpenPGP 使用分散的信任网络。您的“盲目信任 CA”表达了很多关于您自己的偏好,但非常主观。

如果你看看 X.509 和 OpenPGP 是如何运作的,你会发现在 Web of Trust 中,每个人都是 CA;因此,在 X.509 中,您信任少数 CA,而在信任网络中,您信任……每个人?那是因为大多数人忘记了 WoT 系统的一半。在真正的 WoT 中,认证图(即谁签署谁的密钥)应该是过度连接的。

当你想验证某人的公钥时(我们称他为 Bob),那么你需要找到从你到 Bob 的认证路径;这样的路径以您的公钥(您“绝对”知道)开始,每一步都是根据路径中下一个个人的公钥计算的签名。WoT 模型中的安全性来自于许多人的验证所有路径都由您开始并在 Bob 上结束,但没有其他个人与任何两条路径相同。当每个人都可以充当 CA 时,任何单一路径都是“潜在可疑的”:当人们在深夜和酗酒的情况下签署其他人的钥匙时,你不能期望所有路径都是 100% 可靠的。意图为 Bob 伪造假密钥的攻击者只需要找到一些容易上当或陶醉的人。WoT 的信条是“群众是对的”:攻击者可能会颠覆某些人,但不是大多数人。因此,如果您可以找到许多通往 Bob 的有效路径,那么 Bob 的密钥可能是真实的,因为贿赂或欺骗很多人“可能太难了”。

底线是信任网络是困难的。上面的描述使用了模糊的术语“很少”、“很多”、“大多数”和“可能”。我们不知道如何估计为达到给定安全级别而必须构建的路径数量;事实上,我们不知道如何量化一个“安全级别”。目前还不清楚 WoT 是否可以工作。OpenPGP 实现倾向于使用“可靠性百分比”,这是一种完全未经证实的猜测。当然,在实践中,没有人会花时间重建许多链;如果你找到一条链子,你已经很幸运了。

当我必须与客户交换机密数据时,我使用 OpenPGP,但不使用 Web of Trust。我使用 OpenPGP 是因为通常的实现能够将密钥永久绑定到身份:如果我能确保密钥是真实的,那么我的软件会记住它,此后一切都会安全。因此,当我们亲自见面或通过电话会面时,客户和我会交换密钥指纹(我们认为这不会被冒充——窃听在这里不是问题)。

S/MIME 实现不支持此类绑定。他们可以做到(尽管证书到期会稍微困难一些),但他们没有。它不是 X.509 固有的(X.509 模型可以五分钟更改一次证书,但它不是强制的);但是部署的实现以这种方式工作。正如我上面所说,可用性胜过 PKI 模型,所以这对我来说是 OpenPGP。

注意:在另一种情况下,HTTPS依赖于带有几十个硬编码信任锚的 X.509 分层 PKI,同样的问题也出现在那里;例如,参见Convergence,这是一个确实将密钥绑定到服务器的提议以半永久性的方式,并且依赖于与 WoT 相同的“群众是正确的”口头禅。然而他们使用 X.509 证书这样做,这表明证书的实际格式并不那么重要。)

正如 Thomas Pornin 所指出的,比起 PGP 加密电子邮件,更喜欢 S/MIME 的主要原因是可用性。可用性至关重要,因为可用性低是用户不使用加密的主要原因。我想详细说明为什么S/MIME 的可用性(目前)优于 PGP。

S/MIME 和 PGP 之间的最大区别在于,S/MIME 享有每个平台上几乎每个电子邮件客户端的内置支持。另一方面,PGP 几乎总是需要安装额外的软件。

因此,让您的通信伙伴使用 S/MIME 会容易得多,因为他们不需要安装额外的软件,但他们只需要学习如何在他们已经使用和知道的软件中设置现有的支持。

在某些情况下,不可能使用 PGP,因为

  • 不允许用户在他们的计算机上安装软件(通常在公司中)
  • PGP 支持与他们的电子邮件客户端(例如在 iOS 设备上)没有很好地集成或根本没有集成,这使得它无法用于日常使用

关于 S/MIME 和 PGP 不同的信任模型,一方面,S/MIME 不需要受层次模型的限制:

使用自签名 CA,无需信任任何大型 CA。当然,您的通信伙伴必须(手动)信任您的自签名 CA,但这只需执行一次,并且从安全的角度来看,信任由您认识的人颁发的证书不是更安全吗?一些被其他人定义为值得信赖的 CA?

另一方面,PGP 中的信任网络有其众所周知的问题,例如伪造的 PGP 密钥、实际上不可撤销的密钥以及未经验证的密钥。虽然有一些尝试来克服这些问题(比如在 keys.openpgp.org 上验证密钥服务器)。信任网络模型相当复杂,许多用户并不真正了解或至少不完全了解它。

但是,PGP 有一个方面具有更好的可用性,那就是密钥的分配。使用密钥服务器,用户可以自动获取另一个人的密钥并立即使用它进行加密,而使用 S/MIME,证书通常只能从公司内部的目录(通常是 LDAP)中获取。然而,对于大多数用户来说,使用签名电子邮件交换 S/MIME 证书并不太复杂或要求很高。

最终,S/MIME 和 PGP 之间的选择取决于场景。我们两者都使用,但大多数时候,我发现 S/MIME 比 PGP 更方便、更易于使用。