S/MIME技术流程是什么

Fanly 问答 2022-05-05 21:28:47 阅读(...)

S/MIME协议是端对端协议,也就是说,只有发送人和接收人都支持S/MIME协议,才可以使用S/MIME协议收发邮件,如果接收人不支持S/MIME协议,对方会收到一封只有附件的邮件,附件名为:smime.p7m。

MIME 协议是一个互联网标准,全称是多用途互联网邮件扩展(Multipurpose Internet Mail Extensions),它扩展了电子邮件标准,使其能够支撑更多形式的信息(如二进制,声音,图像等),而 S/MIME 则是在 MIME 的基础上支持签名和加密,他们的关系类似 http 和 https 的关系。

SMIME

为什么要使用 S/MIME 协议

S/MIME 主要提供两种安全服务:

数字签名可以保证邮件内容不被篡改,从而保证邮件的发件人和发件内容不被伪造(这同时也保证可以邮件确实出自发件人,即可以用来作为发件人发件的证据), 邮件加密可以保证邮件内容不会泄露,只有邮件的接收人可以看到邮件的内容,从而保证邮件的安全性。

特别说明:S/MIME 协议是端对端协议,也就是说,只有发送人和接收人都支持 S/MIME 协议,才可以使用 S/MIME 协议收发邮件,如果接收人不支持 S/MIME 协议,对方会收到一封只有附件的邮件,附件名为:smime.p7m。

S/MIME 协议工作流程

S/MIME 分发送方和接受方,发送方需要签名和加密:

  1. 捕获邮件。
  2. 检索用来唯一标识发件人的信息。
  3. 检索用来唯一标识收件人的信息。
  4. 使用发件人的唯一信息对邮件执行签名操作,以产生数字签名。
  5. 将数字签名附加到邮件中。
  6. 使用收件人的信息对邮件执行加密操作,以产生加密的邮件。
  7. 用加密后的邮件替换原始邮件。
  8. 发送邮件。

这里第 2,3,7 需要特殊说明一下。
2 中,检索唯一标识发件人的信息,要求发件人要在发件客户端安装私钥,用于邮件签名。
3 中,检索用来唯一标识收件人的信息,需要在发件客户端安装收件人证书,用于邮件加密。
7 中,为了让接收方能够验证签名,需要在邮件中附上发送方的证书。

对于接受方,需要解密和验证签名:

  1. 接收邮件。
  2. 检索加密邮件。
  3. 检索用来唯一标识收件人的信息。
  4. 使用收件人的唯一信息对加密邮件执行解密操作,以产生未加密的邮件。
  5. 返回未加密的邮件。
  6. 将未加密的邮件返回给收件人。
  7. 从未加密的邮件中检索数字签名。
  8. 检索用来标识发件人的信息。
  9. 使用发件人的信息对未加密的邮件执行签名操作,以产生数字签名。
  10. 将邮件所附带的数字签名与收到邮件后所产生的数字签名进行比较。
  11. 如果数字签名匹配,则说明邮件有效。

这里 4,9 需要进行特殊说明。
4 中,需要在接收端客户端安装接收人的私钥,用来给加密邮件进行解密,只有解密后的邮件才能进行签名校验。
9 中,解密邮件后,可以拿到邮件签名和发送方证书,接收方需要对证书进行验证,验证有效后,即可利用证书的公钥对邮件的签名进行校验,校验通过则说明邮件没有被篡改,是可信的。

S/MIME 证书

看了前面的收发信流程,你是否有如下问题?

  1. 如何保证加密结果只有收件人能解密?
  2. 使用发件人提供的证书校验签名,如何确认证书不是和邮件一起被篡改的?
  3. 如何确定证书是可信任的?

非对称加密

对于第一个问题,S/MIME 协议如何保证邮件内容只有收件人可以解密呢?这里实际上采用的是非对称加密算法。

在 S/MIME 协议中,每一个人申请证书时,都会收到至少两个证书:公钥证书和私钥证书,公钥证书是可以公开的,私钥证书是需要自己保存并且不能泄露的。

在给收件人发送邮件时,需要先获取到收件人公钥,公钥可以先找收件人提供,或者通过服务器获取(协议中没有规定如何获取收件人公钥,因此获取方法也不是固定的)。

拿到公钥加密后,密文内容就只有收件人的私钥可以解密了,因此能看到密文内容的人,就只有持有收件人私钥的人了。

签名校验

我们知道,签名算法是私钥签名,公钥按照特定算法计算得到签名,然后比较私钥签名结果和公钥签名,相同即可确认签名有效。

从这个算法可以看出,当邮件内容签名可以用公钥验证时,至少可以保证邮件内容与私钥-公钥是对应的(如果公钥被篡改,原来的私钥校验肯定不通过),此时我们假设公钥是正确的,没有被篡改,说明邮件内容是可信的,没有被篡改。

如何确定证书是可信的

在签名校验的环节,我们假设了证书是可靠的,没有被篡改,因此得出邮件内容是可靠的,没有被篡改,那么如何用验证证书是可靠的这个假设呢?

这里就涉及证书校验的知识了。

严格来说,证书没有可靠和不可靠的说法,只有信任和不信任,什么样的证书是受信任的,什么样的证书是不受信任的,这里就不仅仅涉及技术问题了,也有一些约定的关系。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • SMIME 安全多用途互联网邮件扩展

    S/MIME是什么

    多用途网际邮件扩充协议(S/MIME)是一个Internet标准,MIME给web浏览器提供了查阅多格式文件的方法。它扩展了电子邮件标准,可让您发送和接收安全的电子邮件。使用证书时,S/MIME 允许发件人加密和发送只能在到达收件人后加密的邮件。
  • electronic signature 电子签名

    电子签名是数字签名吗

    数字签名是电子签名技术的一种,也是比较成熟且全球应用最为普遍的电子签名技术。大多数应用场景提到的电子签名,实际指的就是数字签名。
  • 数字签名 Digital Signature

    数字签名是什么

    数字签名(Digital Signature)又称公钥数字签名,是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。数字签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。
  • Digital Signature 数字签名

    数字签名是什么意思

    数字签名保证数字通信中电子文档或消息的真实性,并使用加密技术提供原始和未修改文档的证明。数字签名用于电子商务,软件分发,金融交易和依赖伪造或篡改检测技术的其他情况。数字签名也称为电子签名。
  • 数字签名标准(DSS)

    数字签名标准是什么

    数字签名标准(DSS)由美国国家安全局开发,用于生成验证电子文档的数字签名的程序和标准的集合。被美国国家标准与技术研究院(NIST)指定为联邦信息处理标准186,已成为美国政府对电子文档进行身份验证的标准。
  • digital certificate 数字证书

    数字证书有什么作用

    数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性,数字证书是CA机构发行的一种电子文档,是一串能够表明网络用户身份信息的数字,提供了一种在计算机网络上验证网络用户身份的方式。