
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 已经使用“机会性 TLS”来保护从发送服务器到接受服务器的邮件传输。
然而,“机会性”的部分意味着如果发送服务器无法协商安全连接,我们将以纯文本发送邮件。如果您想强制邮件全程安全,这是不合适的。您可以查看哪些信箱提供商声称支持 TLS,哪些实际支持。假设收件人的服务器确实支持 TLS,那么您的消息将像这样得到保护:

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

S/MIME 使用收件人的公钥加密信息主体。未经收件人的私钥,主体无法被解码——没有任何处于中间的人,如您的 ISP、SparkPost 或收件人的邮件服务器,可以解码。
私钥从不透露;它仅由收件人拥有。加密信息通过互联网传送到接收邮件服务器。当它到达收件人的收件箱时,它会(通常是自动地)用收件人的私钥解密并变得可读。
一些 S/MIME 的注意事项:
S/MIME 加密的一个副作用是防止基于服务器的传入信息扫描,以防止恶意软件,因为信息负载是加密形式的,因此无法识别。
请注意,信息头部(例如:From、To、Subject 等)没有被加密,因此主题行内容需要考虑这点。
签名——身份验证
S/MIME 还为收件人提供了检查信息发送者身份的能力,确认他们是谁。
发件人的电子邮件附带一个证书,这就像安全网站上的证书,可以追溯到颁发机构。您可以在 此处找到签名过程的完整说明。
我们将采用首先签名邮件然后加密它的方法,因此该过程看起来是这样的。

不可否认性
签名对收件人的另一个有用的好处是不可否认性。考虑一种情形,即一封电子邮件被用来批准合同。收件人从发件人收到了带有合同的信息。如果发件人后来试图说,“不,我从未发送过那条信息给你”,那么接收到的信息显示发件人的证书实际上已被使用。
信息完整性
签名过程创建了一个原始信息源的指纹(称为信息摘要),使用发件人的私钥加密该摘要,并将其包括在传送的信息中。收件人的邮件客户端可以判断信息主体是否被篡改。
也许您会说,“我以为 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在消息中解码签名。
Microsoft Outlook/Hotmail的消费者版本会提醒您有S/MIME签名的存在,但不会给予您完整的访问权限来查看或检查证书。

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

点击图标会给您更多信息:


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

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

点击信封/挂锁可显示关于消息的信息:

Thunderbird有自己的密钥存储,在每个平台上访问方式相近:
Mac通过“Preferences / Advanced / Certificates / Manage Certificates”
PC: 菜单(“汉堡”在右上角),“Advanced / Certificates / Manage Certificates”
Linux: 菜单(“汉堡”在右上角),“Preferences / Advanced / Manage Certificates”
Mac Mail
Mac Mail也支持S/MIME。它依靠Mac钥匙串来保存您的密钥。

iOS Mail
首先,像这样导入您的电子邮件帐户证书,然后您可以查看S/MIME签名和加密的邮件。在查看屏幕上,它们看起来没有太大区别。


