我想对我们的电子邮件使用 S/MIME 加密。我认为我了解事情的运作方式,并且当安装了所有必要的证书时,我能够在人们之间发送加密的邮件。
但在现实生活中,当开始节目时,人们可能没有在他们的设备上安装我的 S/MIME 证书。他们如何得到它们?
选项 1) 我是否必须使用标准电子邮件将证书发送给他们并将证书作为附件发送?(例如,Microsoft Outlook 默认情况下不允许这样做...)
选项 2) 一旦我安装了公钥,它们是否会自动附加到我的邮件中?(但是随后,我会收到很多很多带有公钥附件的电子邮件......)
选项 3) 如果我的邮件(使用我的私钥)加密,我的公钥是否会自动附加到我的邮件中?我认为这将是最简单的解决方案。但事实真的是这样吗?
如果上述情况均不成立,收件人如何获取我的证书以便解密我的邮件?
通常有两种方法可以使某人的 S/MIME 证书和公钥可供其他电子邮件用户使用。
1. 签名的电子邮件
在电子邮件客户端中设置 S/MIME 后,通常会将其配置为对所有外发电子邮件进行签名。大多数(如果不是全部)邮件客户端都会自动将 S/MIME 证书嵌入到该 S/MIME 签名中。
收件人收到签名的电子邮件并可以导入嵌入的 S/MIME 证书。某些邮件客户端可以配置为自动执行此操作,但始终应该手动执行此操作。导入 S/MIME 证书后,收件人就可以开始向证书所有者发送加密的电子邮件。
2. 目录
S/MIME 证书可以在基于 LDAP 的目录中发布,邮件客户端可以配置为自动从目录中检索它们。
通过这种方法,在建立加密通信之前无需先交换签名的电子邮件。但是,它需要将两个电子邮件客户端配置为查找正确的目录。此方法通常用于同一组织内的用户。有时,多个组织共享一个公共目录,以启用和简化用户之间的加密通信。
然而,实际上并没有像公共 S/MIME 目录这样的东西,因为有用于 PGP 加密的 PGP 密钥服务器。我知道Open Keys Initiative (ldap.openkeys.de) 和Zertificon Global Trustpoint (ldap.globaltrustpoint.com),但我怀疑它们是否被广泛使用。
PKI 和信任
S/MIME 和 PGP 电子邮件加密之间的主要区别是它们各自的公钥基础设施 (PKI)。S/MIME 依赖根证书作为信任锚,而 PGP 使用分布式信任方法(“信任网络”),每个用户或多或少自己决定是否可以信任某个密钥。
消息不会使用您的私钥(或任何私钥)进行加密。它们只能用一个来解密。
(但是,它们是使用您的私钥进行签名的- 但这是 S/MIME 中的一个单独功能,不要与加密相混淆!签名消息的内容可能以类似于加密消息的方式进行打包,但这并不意味着其中任何内容实际上都是加密的。)
收件人不需要您的证书来解密您的邮件。他们只需要自己的证书 - 或者更确切地说,附带的私钥。
相反,您需要收件人的证书,以便为该特定收件人加密邮件。
因此,您将任何内容与消息一起发送是没有意义的(当然不是私钥 -公钥系统的全部要点是私钥永远不会发送到任何地方);相反,收件人必须先向您发送他们的证书。
您可能会将 S/MIME 加密与签名混淆,这在很多方面都是相反的:您使用自己的私钥创建数字签名,而收件人确实需要您的证书,以便他们可以验证该签名。(但不一定要阅读该消息 - 如果他们愿意,他们可以在未经验证的情况下打开它。事实上,大多数收到签名消息的人都不会验证它。)
在对消息进行签名时,您自己的证书确实可以包含在签名数据中;我相信大多数邮件应用程序默认都使用 S/MIME 进行此操作。此操作的前提是您的证书是由收件人“信任”的 CA 颁发的。(对于 OpenPGP,这也是一种选择,但由于 OpenPGP 证书验证的不同性质,并不常见。)
这也是您收集证书进行加密的一种方法 - 对方向您发送签名的“Hello!”,您对其进行验证,并且希望您的邮件客户端将该人的证书存储在地址簿中。(至少某些邮件客户端可以选择手动或自动执行此操作。)