电子邮件的安全服务

228 阅读10分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情

现在大多数电子邮件都不能提供所必须的安全服务,即使是一些专门设计的安全电子邮件系统也只提供其中的若干种。

  • 私有性(机密性)

  • 认证

  • 完整性(integrity):向接收者保证发送者发送的邮件消息在传输过程中没有被修改过。

  • 非否认

    • 邮件提交证据
    • 邮件投递证据
  • 消息流的机密性(message flow confidentiality):隐私保护的扩展。Carol不仅无法知道Alice发送给bob的邮件中的内容,甚至不能确定Alice是否给bob发过邮件。

  • 匿名性(anonymity):邮件的接收者无法得知发送者的身份

  • 防泄漏(containment):网络能够保证具有某种安全级别的信息不泄漏到特定区域的能力。

  • 审计(audit):网络具有的能够记录安全相关事件的能力。

  • 计费(accounting):邮件系统维护系统使用记录的能力。

  • 自毁(self destruct):系统提供的一个选项,发方可规定邮件到达收方后邮件被销毁,这样Alice就可给bob发一个bob不能转发和存储的邮件。该特性可以采用这样的方式实现:把邮件消息标志为自毁消息,收方的邮件程序配合工作,显示该消息之后将其删除。

  • 消息序列完整性(Message sequency integrity):保证一系列消息按照传输顺序到达,不会丢失。

建立密钥

  • 建立公开密钥

    • 如果Alice想给bob发送签名的消息,那么Alice只需要对消息签名然后发送即可,并不期望bob已经拥有其证书,也不会在邮件消息中包含其证书。

    • 如果Alice希望给bob发送加密的消息,那么在构造邮件消息之前,Alice必须知道bob的公钥,Alice得到bob公钥的方法有多种:

      • 采用某种安全的带外机制接收bob公钥,并将其安装在自己的工作站上。
      • Alice可以通过PKI获得bob的公钥
      • 邮件系统允许在邮件消息中捎带证书和CRL。
  • 建立秘密密钥

    • 通过带外方式传输,但参与者很多时就没有办法使用了。
    • Alice设法从某个KDC获得BOB的门票,并且在发送给BOB第一个消息时将门票发送给BOB。

私有性

面临的威胁:

  • 搭线者能够获取在网络上传输的邮件消息。
  • 中继结点可能安装了保存邮件消息的软件,并将邮件泄漏给第三者。这种的情况的发生一是由于该中继结点已经被攻击者侵入,也可能是该结点故意设定了这样的功能。如中继节点可能是安全网关,出于安全的考虑,网关的拥有者希望能够监视进出网络的邮件消息。
  • 安全需求之间经常存在冲突。例如,Alice希望保证其发送给bob的邮件内容的保密性,但Alice的领导可能希望能够监视她的邮件内容,以确保Alice没有泄漏公司的商业秘密。

端到端的私有性

  • 如Alice想发送加密的邮件消息给Bob,自然的想法就是Alice用BOB的公钥或者双方商定的共享密钥加密邮件消息。但是,邮件加密通常并不采用这种方式,因为:

    • 如果Alice要向多个接收者发送一个邮件,那么Alice需要针对每个接收者分别加密邮件消息,结果是发送给每个接收者的消息都不相同。
    • 公钥加密比私密密钥加密慢得多,因此即使BOB拥有公钥,人们还是希望能使用秘密密钥加密邮件消息。
    • 如非必要,最好不使用长期密钥。所以,为了延长Alice和BOB之间共享的长期密钥的生命周期,最好是尽可能少地使用这种更新代价昂贵的密钥加密消息。
  • 邮件系统做法是:由Alice选择一个随机的秘密密钥S,该密钥只用来对一条消息进行加密处理。

    • Alice首先使用S加密邮件消息,然后使用BOB的公钥加密S,再把加密的消息和加密的密钥都发给BOB。这样即使Alice需要向多个接收者发送消息,她只需要使用密钥S对消息进行一次加密。但是Alice仍然需要分别使用接收者的密钥加密S,并且在邮件消息中包含加密的密钥S。

源认证

在传统的邮件系统中,发送者是可以更改发送给他人的邮件的FROM域的。因此,邮件系统需要进行源认证。

  • 基于公钥技术的源认证 采用对邮件消息进行数字签名,这种方式可以推广到多个接收者
  • 基于私密密钥的源认证 使用共享密钥对邮件消息进行某种密码运算,运算的结果可以用于完整性校验MIC或MAC。
  • 分发列表的源认证 如采用公钥机制较为简单,签名机制仍有效。 如采用秘密密钥机制,利用Alice与分发站点之间的共享密钥对消息进行签名,分发站点在转发邮件之前须删除Alice添加的认证信息,然后针对每一个接收者添加其自己的认证信息。 接收者只能相信分发站点发出的“该消息的确源自于Alice”的声明

抗抵赖

  • 抵赖(repudiation)是指用户不承认发送过某个消息的行为。
  • 邮件系统提供抗抵赖(non-repudiation)功能是指Alice给Bob发送了一个消息,那么她以后就不能否认她的发送行为,Bob可以向第三方证明Alice的确发过消息。

基于公开密钥技术的抗抵赖

  • 基于公开密钥技术的抗抵赖

    • 通过数字签名实现
    • 任何知道Alice公钥的人都可以校验Alice的签名
  • 基于公开密钥技术的可抵赖邮件消息

    • Alice选择一个秘密密钥S,并在处理消息m时使用
    • Alice使用Bob的公钥加密S,得到{S}Bob
    • Alice使用其私钥对签名{S}Bob ,得到[{S}Bob] Alice
    • Alice使用S计算消息m的MAC(如可用DES计算消息的CBC留数)
    • Alice把MAC, [{S}Bob] Alice和m发送给Bob

    Bob将知道该消息来自于Alice,因为Alice对加密的S进行了签名,但Bob不能向他人证明Alice发送过该消息,他只能在某种程度上证明Alice发送过密钥S消息,但不一定发送过消息m,因为一旦Bob得到了[{S}Bob] Alice ,他就能构造任何他想构造的消息并使用密钥S构造消息的完整性校验验码。

基于秘密密钥技术的抗抵赖

假设Alice要向Bob发送消息,并且Bob能够向第三方证明Alice的确发送过消息。这时需要一个Bob和第三方都信任的公证人(notary)N. 有两种方法可以使得Bob确信该消息的确是经过N证明的,而且Bob能够在需要的时候向第三方证明N证明了该消息

  • Bob和N可建立一个共享密钥,N使用这个密钥对Alice的名称、消息本身和封印的串接结果产生MAC.因为Bob也知道这个共享密钥,因此他可以通过校验MAC的方式校验封印的有效性。
  • Bob可以在接收到该消息之后向N发送一个请求消息询问N的封印的真实性,这个请求当然必须包含Alice的名称、消息本身和封印。
  • 封印:N使用只有自己才知道的SN对Alice的消息和Alice的名称进行某种运算,计算的结果称为N对该消息的封印(如N的封印可以是Alice的名称、消息本身和SN串接以后的消息摘要)

邮件提交证据

为了实现邮件提交证据(Proof of Submission)服务,邮件系统可将邮件信息与其它有用的信息串接起来,然后计算消息摘要并对其进行签名。用户可以使用该证据来证明该消息已被发送。

安全邮件系统

  • PEM (Privacy Enhanced Mail)是internet社团在20世纪80年代末和90年代初期开发的邮件系统。增加加密、源认证和完整性保护功能。PEM文档包括四个部分:

    • RFC1421描述了消息格式
    • RFC1422描述了CA的层次结构
    • RFC1423描述了PEM中使用的基本密码算法
    • RFC1424描述了请求证书以及请求和发布CRL的邮件消息格式

名称与地址

  • MIME(Multipurpose Internet Mail Extension,RFC2405)规定了一种在电子邮件中嵌入图片、丰富文本、视频片断、二进制文件等任意数据的标准方法。该规范还规定了指明邮件中的数据为何种类型的方法,以便接收者能对数据进行相应的处理。
  • S/MIME(RFC2633)采用了PEM的基本设计思想,并支持MIME规范,把签名数据和加密数据作为新的数据类型嵌入到邮件中。
  • 为了解决X.509证书中的名称不是邮件接收者的电子邮件地址这个问题,S/MIME标准规定电子邮件地址应当作为备用名出现在证书中。证书的签发者需要像仔细审查证书的主体名称(X.500名称)与密钥的关联关系那样,仔细检查备用名(电子邮件地址)与密钥的关系。根据该标准的规定,电子邮件系统在使用这样的证书时,可以忽略证书中的主体名称(X.500名称)。
  • X.509 V3中在证书格式中支持备用名比S/MIME协议的大规模应用要晚。因此S/MIME没有使用备用名这个域,而是在X.500名称中新增加了一个部件,使能包含电子邮件地址。例如,/C=US/O=CIA/OU=drugs/PN=‘Manuel Noriega’ /E=Alice@Wonderland.edu.

检验消息的真正发送时间

  • 防止时间推后 借助于一公证人。如果发方否认,则收方就可以向法官出示经过公证的Alice的订单消息以及Alice的证书和CRL,这样法官就能从法律上确定Alice的确在这个时间发送过该消息。 如收方担心Alice可能会控制为其签发证书的CA,从而能够伪造证书或CRL的时间,则可以要求公证人对Alice的证书和CRL也进行时间签名操作。
  • 防止时间提前 要证明某个消息是在某一特定时间之后生成的,可以在消息中嵌入一个在这个时间之前还不知道的东西。

安全电子邮件工作模式

一般情况下,安全电子邮件的发送必须经过邮件签名和邮件加密两个过程,而对于接收到的安全电子邮件,则要经过邮件解密和邮件验证两个过程,其工作模式为:

1.jpg

邮件签名

对于一封已格式化好的电子邮件,用相应摘要算法(MD5、SHA-1)计算MD,然后用发送者的私钥对MD采取加密得到该邮件的数字签名,最后合成数字签名和原邮件体得到已签名的邮件。

2.jpg