
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 指南中有介绍。然而,也有自动化方法可以简化这一过程,例如通过基于电子邮件的系统收集收件人的公钥,可以简化应用生成的电子邮件流的密钥管理。这就是 Virtru 和 Echoworkx 等 SparkPost 合作伙伴的商业解决方案发挥作用的地方,使企业邮件的安全性更容易(有关详细信息,请参阅我们的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 还使接收者能够验证消息发送者的身份是否如他们所说。
发件人的电子邮件附有证书,这有点像安全网站上的证书,可以追溯到签发机构。这里有对签名过程的完整描述here。
我们将采取先签名邮件,然后加密的方法,因此过程如下所示。

不可否认性
对接收者而言,签名的另一个有益之处是来源不可否认性。考虑一种情况,其中电子邮件消息被用于批准合同。收件人在消息中收到来自发件人的合同。如果发件人后来试图说,“不,我从未将该消息发送给您”,那么接收的消息证明事实上使用了发件人的证书。
消息完整性
签名过程为纯源消息创建一个指纹(称为消息摘要),使用发件人的私钥加密该摘要,并将其包含在传递的消息中。接收者的邮件客户端可以判断消息主体是否被篡改。
也许您会说,“我以为 DKIM 给我提供了消息完整性检查!”嗯,是的,DKIM 提供了消息主体和消息头完整性检查 – 防篡改保障。然而,DKIM 失败(或缺失)通常不会导致传入消息被标记为完全无效,...除非DMARC 策略为 `p=reject`(有关 DMARC 的更多信息here)。DKIM 是由 ISP 用于可靠分配域信誉的众多因素中的一个,当然是您消息堆栈的重要组成部分。
如果 S/MIME 消息未通过签名检查,您的邮件客户端会显著地显示:

总结:端到端 (S/MIME) vs 服务器到服务器 (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(例如Windows的2010版)有效:

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


在Outlook 2010 / Windows中,证书存储通过File / Options / Trust Center / Trust Center Settings / Email Security / Import / Export访问。

Thunderbird – cross-platform and free
如果您在寻找一个免费客户端,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签名和加密的电子邮件。在查看屏幕上,它们的显示没有什么不同。


