
S/MIME 是一种基于公共互联网标准的长期 established 方法,用于发送加密和签名的电子邮件。我们经常遇到 S/MIME 的需求,特别是来自银行、卫生和金融等受规管行业。
S/MIME 是一种基于公共互联网标准的长期存在的加密和签名电子邮件发送方法。我们经常遇到对S/MIME的需求,特别是在诸如银行、健康和金融等受监管行业中。例如,在企业与政府机构之间通信时,通常需要使用S/MIME。
另一种安全邮件标准,PGP (有趣地被称为“Pretty Good Privacy”),更多用于安全的个人对个人通信。由于消费者版本的流行基于网站的电子邮件客户端(如Gmail和Outlook/Hotmail)无法显示加密邮件,因此它现在不太流行。这就是为什么许多需要隐私的个人对个人通信转向WhatsApp(以及许多其他)提供本地端到端加密的平台的原因之一。
PGP和S/MIME都需要可以使用密钥和证书的邮件客户端。许多桌面和移动客户端,包括Apple Mail、Microsoft Outlook 和 Mozilla Thunderbird 都符合要求,一些网络客户端的企业版本如Microsoft Office 365也符合要求。设置密钥需要工作,但尽管最近的漏洞披露要求阻止加载远程内容的补救措施,许多组织仍然认为这是值得的。
S/MIME自1995年就已经存在并经历了几次修订;当前版本由RFC 5751覆盖。它需要交换公共密钥,这是一个通常需要IT团队或类似资源支持的非简单任务。对于运行本地电子邮件基础设施的组织,实施S/MIME需要为诸如PowerMTA和Momentum这样的平台进行额外的考虑,我们在本地安全电子邮件的S/MIME指南中对此进行了介绍。然而,也有一些自动化方法可以简化这一过程,比如通过基于电子邮件的系统来收集接收者的公共密钥,这可以简化应用生成的邮件流的密钥管理。这就是来自SparkPost合作伙伴Virtru和Echoworkx等公司的商业解决方案发挥作用的地方,使个人到个人的企业邮件安全更简单(有关更多信息,请参阅我们的SparkPost/Echoworkx操作指南)。
也就是说,让我们更深入地研究一下传统的S/MIME,看我们能对它做些什么。
为什么我应该关心?
简短版:
隐私
如果您的消息不包含任何个人、隐私或法律重要的信息,那么您可能不需要考虑 S/MIME。现代电子邮件传输系统如 SparkPost 已经使用“opportunistic TLS”来确保从发送服务器到接收服务器的消息传输安全。
然而,“opportunistic”部分确实意味着如果发送服务器无法协商安全连接,我们将以纯文本发送邮件。如果您想确保消息在整个过程中都安全,这不适用。您可以看一下 哪些邮箱提供商声称支持TLS 和哪些 实际上支持。假设收件人的服务器支持TLS,您的消息是这样被保护的:

TLS确保邮件服务器之间的对话安全(这就是为什么它被称为传输层安全)。MIME(包括 S/MIME)关注信息内容及其处理,可以被认为是“展示层”的一部分。
S/MIME保护消息 内容 从消息来源到收件人邮件客户端的整个过程,将消息主体进行封装。

S/MIME 使用收件人的公钥加密消息主体。消息主体不能在没有收件人私钥的情况下解码——不能被任何“中间人”如您的ISP、SparkPost或收件人的邮件服务器。
私钥永不泄露,它由接收者独占持有。加密的消息通过互联网传输到接收邮件服务器。当它到达收件人的收件箱时,它通常会自动使用他们的私钥解密并变得可读。
需要注意一些 S/MIME 的问题:
S/MIME 加密的一个副作用是防止服务器的入站消息扫描病毒,因为消息载荷是加密形式的,因此不可识别。
注意消息 头(From:, To:, Subject:等)没有被加密,因此需要考虑主题行的内容。
签名 – 验证身份
S/MIME也提供给接收者检查消息发送者 是否是他们所说的人 的能力。
发送者的电子邮件附有证书,该证书就像安全网站上的证书,可以追溯到颁发机构。有关签名过程的完整描述,请参见 S/MIME签名过程PDF。
我们将采取先签署邮件,然后加密的方式,因此流程如下所示。

发起不否认
签名对接收者的另一个有用好处是起源的不否认。考虑一种情况,电子邮件消息用于批准合同。接收者收到了来自发送者的消息中的合同。如果发送者稍后试图说,“不,我从未向您发送过该消息”,那么已收到的消息表明实际上使用了发送者的证书。
消息完整性
签名过程创建纯源消息的指纹(称为消息摘要),使用发送者的私钥加密并包括在传递的消息中。收件人的邮件客户端可以判断消息主体是否被篡改。
您可能会说,“我认为 DKIM 给我消息完整性检查!”是的,DKIM 提供消息主体和 消息头 的完整性检查——反篡改保证。然而,DKIM 失败(或缺失)通常不会导致传入消息被标记为完全无效……除非正在执行 DMARC 策略的p=reject(参见我们的博客文章 DMARC: 如何保护您的电子邮件声誉)。DKIM是许多因素中的一个,用于ISP可靠地分配域声誉,并且当然是您消息传输堆栈中的必要部分。
如果 S/MIME 消息失败签名检查,您的邮件客户端将显眼地显示:

总结:端到端(S/MIME)与服务器到服务器(DKIM,DMARC,TLS)
S/MIME是一种演示层能力,可以在两个电子邮件终端用户之间工作(具有有效的证书/密钥),无需电子邮件管理员的任何操作。S/MIME提供加密和签名,每位用户个人使用。
S/MIME绑定到完整的发送地址(本地部分和域部分),例如,alice@bigcorp.com 和 bob@bigcorp.com 需要不同的证书。相比之下,DKIM 验证邮件来自签名域。DKIM 是一个完整的主题,这篇文章是一个好的起点。
DKIM 和 DMARC 的设置由您的邮件管理员完成(在邮件服务器和DNS记录上工作)。设置完成后,它们对域有效,而不是针对个人用户。
这与SparkPost有什么关系?
哪些客户支持 S/MIME?
Consumer Gmail
普通的 Gmail 网页客户端会显示传入邮件签名(见下),但是它未设置为持有你的私钥以读取加密信息。即使可以通过第三方插件实现,从安全角度来看,上传私钥也不是一个好主意。

我无法让 Yahoo! Mail 解码信息中的签名。
微软 Outlook/Hotmail 消费者版本会提醒你 S/MIME 签名的存在,但不会给你完全访问或查看证书的权限。

Hosted business mail
对于托管邮件的组织,Microsoft Office 365 和 G Suite Enterprise 支持 S/MIME。
Outlook mail clients
基于客户端的 Microsoft Outlook(如 Windows 的2010)可正常工作:

点击图标可以获得更多信息:


在 Outlook 2010 / Windows 上,证书存储通过文件 / 选项 / 信任中心 / 信任中心设置 / 邮件安全性 / 导入 / 导出访问。

Thunderbird – 跨平台且免费
如果你在找一个免费的客户端,Mozilla Thunderbird 是个好选择。它可以在 PC、Mac 和 Linux 上使用,并支持所有这些平台上的 S/MIME。以下是 Mac 上邮件的外观。“密封信封”图标表示邮件已签名,而挂锁表示邮件已加密。

点击信封/挂锁可以显示有关邮件的信息:

Thunderbird 有自己的密钥存储,在每个平台的访问方式类似:
Mac 通过偏好设置 / 高级设置 / 证书 / 管理证书
PC:菜单(“汉堡”右上方),高级设置 / 证书 / 管理证书
Linux:菜单(“汉堡”右上方),偏好设置 / 高级设置 / 管理证书
Mac Mail
Mac Mail 也支持 S/MIME。它依靠你的 Mac 钥匙链持有你的密钥。

iOS Mail
首先,这样导入你的电子邮件帐户的证书,然后你可以查看 S/MIME 签名和加密的电子邮件。它们在查看屏幕上的外观没有什么不同。


