数字证书相关知识

了解公钥加密

本主题从较高的层次讲述了与邮件安全明确相关的公钥加密元素。此外,还有其他一些资料,您可以参考这些资料,以便更深入地了解该主题。

密码学是一门研究如何通过使用代码和密码来保护信息的学科。密码学形成了邮件安全的基础部分。

简单来说,编码是系统地更改信息以使其不可读(并无从了解该信息是如何改变的)的过程。最早也是最简单的代码之一(称为恺撒密码)是通过采用字母表并使所有字母移动固定的位数而产生的。发件人和收件人均应了解移动了多少个字母,并因此能够使用该代码来更改信息,从而使他们中的每个人都能够读懂该信息,但其他任何人都读不懂该信息。将信息更改为代码的这一过程称为加密,而将代码重新更改为信息的过程则称为解密。原始邮件称为“纯文本”。更改后的邮件称为“密码”。用于将纯文本更改为密码的信息称为“密钥”。密钥更改信息时所采用的特定方法称为“算法”。

Aa998077.note(zh-cn,EXCHG.65).gif注意:
不应将本上下文中的纯文本(或明文)与谈及电子邮件格式时所提到的纯文本混为一谈。在后一种上下文中,纯文本用于区别邮件的 HTML 格式或 RTF 格式。在讨论邮件安全性的上下文中,纯文本用于区别密码,以指出该文本未加密。

例如,如果发件人希望使用此方法加密邮件,那么发件人需要知道纯文本中的字母 A 的每个实例都将被密钥更改为密码中的字母 D;纯文本中的字母 B 的每个实例都将更改为密码中的字母 E,依此类推。使用此密钥(采用“将字母前移三位”的算法),纯文本中的单词“help”将加密为“khos”密码。

当收件人收到密码邮件时,需要将它重新转换为纯文本,方法是使用密钥来解密信息,在本例中即是将字母后移三位,从而撤消更改。

在本例中,发件人和收件人必须将密钥保存在隐秘的地方,因为任何知道密钥的人都可以使用它来解密并阅读邮件。密钥丢失会使得加密变得毫无价值。此外,算法的强度也很重要。未经授权的一方可以获取加密后的密码,并通过根据密码来确定密钥的方法,设法破解加密。

请注意,发件人和收件人使用的是相同的密钥。此类加密称为“对称密钥”加密,因为双方使用相同的密钥。

虽然这只是一个简单的示例,但它说明了密码学的核心概念和功能。密码学最新的进步和提高是逐步产生的。

1976 年,Whitfield Diffe 和 Martin Hellman 创建了公钥加密。公钥加密是重大的创新,因为它从根本上改变了加密和解密的过程。

Diffe 和 Hellman 提议使用两个密钥,而不是使用一个共享的密钥。一个密钥(称为“私钥”)是保密的。它只能由一方保存,而不能各方共享。第二个密钥(称为“公钥”)不是保密的,可以广泛共享。这两个密钥(称为“密钥对”)在加密和解密操作中配合使用。密钥对具有特殊的互补关系,从而使每个密钥都只能与密钥对中的另一个密钥配合使用。这一关系将密钥对中的密钥彼此唯一地联系在一起:公钥与其对应的私钥组成一对,并且与其他任何密钥都不关联。

由于公钥和私钥的算法之间存在特殊的数学关系,从而使得这种配对成为可能。密钥对在数学上彼此相关,例如,配合使用密钥对可以实现两次使用对称密钥的效果。密钥必须配合使用:不能使用每个单独的密钥来撤消它自己的操作。这意味着每个单独密钥的操作都是单向操作:不能使用一个密钥来撤消它的操作。此外,设计两个密钥使用的算法时,特意设计无法使用一个密钥确定密钥对中的另一个密钥。因此,不能根据公钥确定出私钥。但是,使得密钥对成为可能的数学原理也使得密钥对具有对称密钥所不具有的一个缺点。这就是,所使用的算法必须足够强大,才能使人们无法通过强行尝试,使用已知的公钥来解密通过它加密的信息。公钥利用数学复杂性以及它的单向特性来弥补它是众所周知的这样一个事实,以防止人们成功地破解使用它编码的信息。

如果将此概念应用于前面的示例,则发件人将使用公钥将纯文本加密成密码。然后,收件人将使用私钥将密码重新解密成纯文本。

由于密钥对中的私钥和公钥之间所存在的特殊关系,因此一个人可以在与许多人交往时使用相同的密钥对,而不必与每个人分别使用不同的密钥。只要私钥是保密的,就可以随意分发公钥,并让人们放心地使用它。使许多人使用同一个密钥对代表着密码学上的一个重大突破,因为它显著降低了密钥管理的需求,大大提高了密码学的可用性。用户可以与任意数目的人员共享一个密钥对,而不必为每个人单独设立一个密钥。

公钥加密是邮件安全中的一个基本要素。如果没有公钥加密,那么是否存在实用的邮件安全解决方案是值得怀疑的,因为在公钥加密出现之前,密钥管理是一件很麻烦的事情。在了解了公钥加密的基本概念之后,接下来便是了解如何借助这些概念来实现邮件安全性。

公钥加密和数字签名

前一部分已讨论了,数字签名的核心是能够唯一地标识邮件的发件人。密钥对关系中的互补性本质使得通过公钥加密实现这种唯一标识成为可能。

由于密钥对中的私钥只属于一方,因此,任何时候只要显示已使用了私钥,就可以断定使用该密钥的即是它的所有者。这样,私钥的使用便类似于书面签名,因为只有签名的所有者才真正能够进行该签名。签名代表了它的所有者,就像私钥代表了它的所有者一样。

如果在加密和解密操作中成功地使用了密钥对,那么必定在操作的某个部分使用了密钥对中的私钥。由于公钥仅仅与一个私钥关联,因此可以使用对应的公钥来识别与它相关的唯一私钥。如果在加密和解密操作中成功地使用了特定的公钥,那么可以推断出在操作的某个部分使用了对应的私钥。因为只有密钥所有者可以使用私钥,所以,这意味着只有密钥所有者能够执行加密和解密操作中的特定部分。

使用私钥确定身份说明已成功地完成整个加密和解密操作。完整的操作意味着必须使用私钥将纯文本加密成密码,然后使用对应的公钥将密码重新解密成纯文本。如果显示此操作已成功完成,则说明使用了私钥,并且仅使用了私钥。

要说明已成功执行了加密和解密操作,那么加密和解密操作前的纯文本必须与加密和解密操作后的纯文本匹配。必须直接对两组纯文本进行比较,并且必须显示两者完全匹配。必须存在一个用来进行比较和验证的控件。

在电子邮件中,此控件就是实际的邮件。由于邮件对于发件人和收件人而言均可用,因此是一个很方便的控件元素。

若要在此比较操作中使用邮件,需要对邮件进行“哈希”转换,即将其全部文本转换成数字形式。完全相同的邮件文本将生成完全相同的哈希值。

通过在发送时获取邮件的哈希值并将它与私钥组合在一起,私钥的所有者就能够证明是他或她发送的该邮件。

将邮件与私钥组合是通过使用发件人的私钥加密哈希值(创建实际的数字签名)来完成的。根据发件人电子邮件系统的配置,数字签名将附加到邮件的底部(创建“明文签名”邮件),或者与原始邮件组合成一个二进制附件(创建“不透明签名”邮件)。

由于明文签名邮件的数字签名作为附件添加到原始邮件中,因此不支持 S/MIME 的电子邮件客户端能够阅读此类邮件。非 S/MIME 客户端将丢弃签名并显示原始邮件。但是,无法对邮件进行验证;它本质上与未签名的邮件相同。明文签名邮件的缺点是:干预邮件网关以改变邮件,从而使签名无效的可能性越来越大。

相反,在不透明签名邮件中,由于邮件和数字签名被视为一个二进制附件,因此在传送过程中不太可能被改变。但是,只有 S/MIME 客户端能够阅读该附件。如果非 S/MIME 客户端收到了不透明签名邮件,该邮件将是不可读的。

在某种程度上,创建不透明签名邮件是为了解决以下电子邮件系统问题:即电子邮件在传送过程中邮件正文发生改变。在此应当指出的是,遵守 S/MIME 标准的当前电子邮件解决方案不会改变邮件正文。不过,有许多客户端无法阅读不透明签名的电子邮件。因此,建议您发送明文签名的邮件。

当收到邮件时,可以检索数字签名,并在解密操作中应用发件人的公钥,从而产生出邮件的原始哈希值。然后,可以将此哈希值与收到的邮件的哈希值进行比较。由于只有一个私钥可以与公钥对应,并且只有公钥的所有者能够用它来成功地加密哈希值,因此使用公钥解密哈希值意味着加密该哈希值的是私钥的所有者。由于哈希值是邮件文本的数字表示形式,因此,如果加密的哈希值与已收到邮件的哈希值匹配,则意味着发送的邮件文本与收到的文本匹配。考虑到只有私钥所有者能够发送该邮件,因此结果便是收件人确信只有密钥所有者发送了该邮件,从而提供了身份验证,并因此而提供认可功能。它还显示出邮件未被更改,从而提供了数据完整性。如果哈希值不匹配,那么收件人便知道邮件在传送过程中被改变,或者所使用的公钥与所使用的私钥不匹配。在这两种情况下,收件人知道邮件无效,不应信任。

因此,可以看出公钥加密是通过什么途径提供组成数字签名的安全服务。

下图显示在添加了公钥加密的支持元素的情况下进行签名的顺序。

公钥加密以及电子邮件的数字签名
Aa998077.35451fb8-5e11-4d67-ba6e-e5d4da6febca(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 检索发件人的私钥。
  4. 用发件人的私钥加密哈希值。
  5. 将加密的哈希值作为数字签名附加到邮件中。
  6. 发送邮件。

下图显示在添加了公钥加密的支持元素的情况下进行验证的顺序。

公钥加密以及验证电子邮件的数字签名
Aa998077.d1b14a27-5cfb-4df2-89f7-990219378716(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索包含加密哈希值的数字签名。
  3. 检索邮件。
  4. 计算邮件的哈希值。
  5. 检索发件人的公钥。
  6. 用发件人的公钥解密加密的哈希值。
  7. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  8. 如果值匹配,则说明邮件有效。

该序列操作显示了公钥加密如何提供必要的功能,以使数字签名具备其核心的安全服务:身份验证、认可和数据完整性。

公钥加密和邮件加密

与数字签名不同,公钥加密和邮件加密之间的关系通常更为简单,因为加密是公钥加密的核心功能。但是,邮件加密不仅是通过使用密钥对来加密和解密邮件而完成的。密钥对用于邮件加密中,而不用于整个邮件。

由于邮件加密的目的是确保只有已经授权的收件人能够查看邮件,因此每个收件人的私钥都适合于提供该服务。由于只有私钥所有者能够成功地使用私钥,因此在阅读邮件的过程中使用该密钥确保了只有该密钥的所有者能够阅读该邮件。此功能提供了作为邮件加密基础的保密性。此外,由于公钥可以广泛地分发,因此它使得任意数目的人都可以向一个私钥持有者发送信息。

但是,密钥对不是用在整个邮件中。这是因为,由于密钥算法所必需的复杂性,从而使得使用密钥对进行加密和解密操作是一个昂贵的过程。虽然需要使用密钥对,但它不是必须用在整个邮件中。它需要成为信息“锁定”和“解锁”过程中的一部分。只要在提供私钥前邮件不可读,便满足邮件加密的目的。

本主题前面的“公钥加密的工作原理”已提到,公钥使用强算法来弥补它广为人知这一特性。这些强算法意味着它们比原来的对称密钥更大,因此使用它们进行计算的速度也更慢。由于私钥仅仅用于在查看信息之前解锁信息,而不是用在整个邮件中,因此,确保在提供私钥之前信息不可用的同时,对尽可能少的信息使用密钥对、而对尽可能多的信息使用速度更快的对称密钥则更为经济一些。

对称密钥使用一个双方必须都知道的密钥。此过程有时称为“密钥协商”。如果使用密钥对,则没有密钥协商过程,因为一个公钥可以被许多人使用。密钥对还可以与对称密钥配合使用,以实现密钥协商。可以选择对称密钥,并且可以使用密钥对的公钥对该密钥进行加密,然后将其发送给私钥的所有者。当发送给多个收件人时,可以对所有收件人使用该对称密钥,然后使用每个特定收件人的公钥对该对称密钥进行加密。由于只有私钥所有者可以解密对称密钥,因此对称密钥对于未经授权的人而言仍然是保密的。可以在特定的操作或会话期间生成用于一次性使用的对称密钥。这种对称密钥称为“会话密钥”。公钥加密可以增强对称密钥加密的效应,而不是将其取而代之。

邮件加密的目标是确保在出示私钥之前,邮件不可读。在对称密钥协商中可以使用私钥,以便安全地传送对称密钥。由于可以安全地将对称密钥传送给收件人,因此,可以使用对称密钥加密邮件,然后使用密钥对中的公钥加密该对称密钥。只有私钥持有者可以解锁对称密钥,然后使用解锁后的对称密钥解密邮件。此操作的作用就好像使用密钥对对整个邮件进行加密和解密。但是,由于它对大多数信息使用速度更快的对称密钥,因此此操作比其他操作方法的速度要快。在此过程中,邮件在出示私钥之前一直处于被保护状态,从而提供了保密性,这是邮件加密的基本服务。由于加密和解密过程,在加密后改变邮件会导致解密操作失败,从而提供数据完整性。

虽然人们通常都想不到使用对称密钥,并且它的优势不会立即就显示出来,但是它可以在不损失邮件安全性的情况下提高邮件加密的速度,从而增强了邮件安全性。下图显示在具有公钥加密的支持元素的情况下进行加密的顺序。

公钥加密以及电子邮件的加密
Aa998077.21058391-2d70-42f9-bf25-8ead79705b27(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 检索收件人的公钥。
  3. 生成一次性对称会话密钥。
  4. 用会话密钥对邮件执行加密操作。
  5. 用收件人的公钥加密会话密钥。
  6. 加密的会话密钥包含在加密的邮件中。
  7. 发送邮件。

下图显示在添加了公钥加密的支持元素的情况下进行解密的顺序。

公钥加密以及解密电子邮件
Aa998077.50f0afca-e520-46b5-8e12-6e295dfe86d9(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 检索收件人的私钥。
  4. 用收件人的私钥解密会话密钥。
  5. 用解密的会话密钥解密邮件。
  6. 将未加密的邮件返回给收件人。

这一系列活动显示出公钥加密如何为邮件加密的下列核心服务提供支持:保密性和数据完整性。

了解如何将公钥加密同时用于数字签名和邮件加密

数字签名和邮件加密是倍受赞誉的服务。在考虑如何将公钥加密分别用于每个服务后,考虑这些服务如何一起使用会对您有所帮助。

下图显示在添加了公钥加密的支持元素的情况下进行签名和加密的顺序。

公钥加密以及对电子邮件进行数字签名和加密
Aa998077.e81cca9b-c780-49d9-a3f9-69cc3c442183(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 检索发件人的私钥。
  4. 检索收件人的公钥。
  5. 用发件人的私钥加密哈希值。
  6. 将加密的哈希值作为数字签名附加到邮件中。
  7. 生成一次性对称会话密钥。
  8. 用会话密钥对邮件执行加密操作。
  9. 用收件人的公钥加密会话密钥。
  10. 加密的会话密钥包含在加密的邮件中。
  11. 发送邮件。

下图显示在添加了公钥加密的支持元素的情况下对数字签名进行解密和验证的顺序。

公钥加密以及解密电子邮件和验证数字签名
Aa998077.97705e57-0a94-4197-99c3-40bb58a9eaa0(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 检索收件人的私钥。
  4. 用收件人的私钥解密会话密钥。
  5. 用解密的会话密钥解密邮件。
  6. 从邮件中检索包含加密哈希值的数字签名。
  7. 计算邮件的哈希值。
  8. 检索发件人的公钥。
  9. 用发件人的公钥解密加密的哈希值。
  10. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  11. 如果值匹配,则说明邮件有效。
  12. 将未加密的邮件返回给收件人。

这一系列活动显示出公钥加密如何使得数字签名和邮件加密成为可能。

请注意双方是如何基于特定的操作而需要另一方的公钥或私钥的。例如,发件人必须使用他或她的私钥对电子邮件进行数字签名,但是必须使用收件人的公钥发送加密的电子邮件。由于此过程会让人产生混淆,因此,下图中显示了一个图表,该图表说明了具体的操作过程中哪一方需要什么密钥。

基于角色和操作的密钥需求
Aa998077.ef4e76b6-4799-45a9-90f8-ec7af508152a(zh-cn,EXCHG.65).gif

要了解的下一个元素是数字证书。数字证书通过分发密钥对,从而使数字签名和加密成为可能。

 

了解数字证书

虽然公钥加密通过允许许多人使用一个密钥来简化了密钥管理,但存在一个问题:如何分发公钥,以便用户可以找到它并知道它是有效的。

在 S/MIME 中,此问题的解决方案是使用数字证书。数字证书是 S/MIME 与其他许多竞争的邮件安全解决方案的不同之处。

数字证书是数字形式的标识,与护照或驾驶员执照十分类似。数字证书是数字凭据,它提供有关实体标识的信息以及其他支持信息。数字证书是由称为证书颁发机构 (CA) 的权威机构颁发的。由于数字证书由证书权威机构颁发,因此由该权威机构担保证书信息的有效性。此外,数字证书只在特定的时间段内有效。

数字证书对公钥加密提供支持,因为数字证书包含证书中所标识的实体的公钥。由于证书将公钥与特定的个人匹配,并且该证书的真实性由颁发机构保证,因此,数字证书为如何找到用户的公钥并知道它是否有效这一问题提供了解决方案。这些问题通过用户从数字证书中获取另一用户的公钥来解决。该用户知道它是有效的,因为该证书是由可信任的证书颁发机构颁发的。

此外,数字证书依赖公钥加密来证明证书自己的身份。当颁发数字证书时,证书颁发机构使用它自己的私钥对证书进行签名。若要验证数字证书的真实性,用户可以获取该证书颁发机构的公钥,并对证书使用该公钥,以确定它是否是由该证书颁发机构签名的。

了解数字证书的结构

要使数字证书有用,它的结构必须采用一种可理解且可靠的形式,以便人们可以轻松地检索并理解证书内的信息。例如,护照采用这样一种结构:人们可以轻松地理解以前从未见过的那一类护照中的信息。同样,只要数字证书是标准化的,则无论颁发该证书的是哪个机构,人们都可以阅读并理解该证书。

S/MIME 标准规定:用于 S/MIME 的数字证书应遵守国际电信同盟 (ITU) X.509 标准。S/MIME 版本 3 明确要求数字证书应遵循 X.509 的第 3 版。由于 S/MIME 依赖于已建立的数字证书结构公认标准,因此 S/MIME 标准建立在该标准的发展之上,从而提高了它的认可度。

X.509 标准规定数字证书应包含标准化信息。具体地说,X.509 版本 3 证书包含下列字段:

  • 版本号 证书所遵循的 X.509 标准的版本。
  • 序列号 唯一标识证书且由证书颁发机构颁发的编号。
  • 证书算法标识 证书颁发机构用来对数字证书进行签名的特定公钥算法的名称。
  • 颁发者名称 实际颁发该证书的证书颁发机构的标识。
  • 有效期 数字证书保持有效的时间段,并包含起始日期和过期日期。
  • 使用者名称 数字证书所有者的姓名。
  • 使用者公钥信息 与数字证书所有者关联的公钥以及与该公钥关联的特定公钥算法。
  • 颁发者唯一标识符 可以用来唯一标识数字证书颁发者的信息。
  • 使用者唯一标识符 可以用来唯一标识数字证书所有者的信息。
  • 扩充信息 与证书的使用和处理有关的其他信息。
  • 证书颁发机构的数字签名 使用证书算法标识符字段中指定的算法以及证书颁发机构的私钥进行的实际数字签名。

由于 S/MIME 需要 X.509 v3 证书,因此该信息还描述了 S/MIME 对其特定证书所使用的特征。

Bb123848.note(zh-cn,EXCHG.65).gif重要信息:
X.509 v3 标准是统管数字证书的标准。它没有为特定于 S/MIME 的证书提供标准。有关特定于 S/MIME 的数字证书的信息在 S/MIME RFC 中说明。

虽然数字证书是电子的,但请记住,由于数字证书是标准化的,因此可以用在大量设备上,而不仅仅是个人计算机上。数字证书可以用在手持设备、手机和便携式卡(称为智能卡)上。智能卡可以用在各种不同的设备上,并且在某些方面,很适合用于数字证书。智能卡使得数字证书可以像传统的驾驶员执照或护照一样便于携带,便于使用。

对于 S/MIME 的成功,通过 S/MIME RFC 和 X.509 版本 3 标准实现的 S/MIME 证书标准化是一个关键要素,因为它使得任何遵守该标准的应用程序都能理解数字证书。

数字证书和公钥基础结构

公钥加密的优势之一是,由于用一个密钥对取代了大量的对称密钥,因此减少了密钥管理的工作量。数字证书进一步增强了这一优势,它解决了公钥的分发和管理问题。但是,数字证书无法进行自我管理。由于数字证书固有的广为分发的特点,因此,设计这些证书的管理方案时,必须考虑到数字证书的分发性这一特点。数字证书需要一种有效的基础结构,以便在证书的使用环境中管理证书。公钥基础结构 (PKI) 与数字证书是不可分割的。PKI 负责颁发证书,它通过目录确保这些证书的分发,并验证证书。PKI 负责基础工作,其中包括支持数字证书,并使它们可以提供 S/MIME 等服务所依赖的功能。

由于 PKI 的规模大,而且很复杂,因此超过了本书所讲述的范围。这里所提供的信息着重讲述 PKI 和数字签名如何配合工作,以实现邮件安全性。有许多很优秀的资源讲述了 PKI。您可以从 PKI 供应商的文档以及其他专门涉及 PKI 的信息源中获取有关 PKI 的详细信息。

PKI 通过颁发证书,并使证书可以通过目录进行访问,来提供使数字证书得以使用的方式。PKI 还通过验证证书的真实性、证书的有效性并因此而验证证书的可信性来验证数字证书。这些服务对于数字证书非常关键,因为数字证书使用第三方证书颁发机构,从而依赖于分布式模型。

颁发数字证书并将其发布到目录中的特定方式取决于特定的 PKI 产品及其实现方法。通常,PKI 会颁发数字证书,并将有关这些证书的信息发布到目录中,以便其他应用程序可以从目录中访问该信息。其中的部分信息用于验证数字证书。如了解公钥加密中的“使用公钥加密实现邮件的安全性”中所讨论,邮件安全操作需要访问发件人和收件人双方的公钥。由于数字证书提供此信息,因此访问用户的数字证书对于邮件安全系统而言至关重要。通过提供数字证书的可访问性,PKI 利用了公钥加密在简化密钥管理(无需手动交换密钥)方面所具有的优势。PKI 通过目录来使数字证书可用,以便应用程序可以在需要时检索数字证书。

若要了解 PKI 如何验证证书,请记住证书颁发机构在颁发数字证书方面的角色。如本主题前面的“了解数字证书与公钥加密”中所讨论,证书颁发机构担保标识的有效性,并通过使用其公钥对数字证书进行签名来说明这一点。检查证书的真实性意味着必须验证证书颁发机构的数字签名。PKI 通过为验证证书颁发机构的签名提供手段来验证证书。如果无法验证签名,则可以将证书视为不可信。

如本主题开头所述,任何安全方法都不是十全十美的。数字证书的安全性可能被破坏,这通常发生在私钥丢失的情况下。要使数字证书可信,必须存在一种在数字证书过期前将其取消或“吊销”的方法,就好像可以取消被盗的信用卡。证书吊销是 PKI 用来支持数字证书的另一关键服务,也是数字证书验证过程的另一部分。

由于 PKI 确保数字证书可信,因此 PKI 是数字证书不可或缺的一个部分。如果没有 PKI,您将无法使用数字证书。由于 Exchange Server 2003 支持 X.509 v3 证书,因此具体哪些 PKI 支持 Exchange 安装将取决于 Exchange 所使用的数字证书。但是,从邮件安全性的角度来看,所有 PKI 都提供这些基础服务以支持数字证书。具体的 PKI 之间的差异与实现和设计有关,并与每一个 PKI 部署的具体情况有关。

了解数字证书以及它如何支持公钥加密后,下一步便是将该信息应用于邮件安全领域。下一部分向您介绍数字证书如何为核心安全服务(包括数字签名和邮件加密)提供支持。

如何将数字证书用于数字签名

了解公钥加密中的“公钥加密和数字签名”中所讨论,公钥与用户私钥的关系使得收件人可以识别并验证发件人的邮件。数字证书通过提供可靠的公钥分发和访问方式来提供对公钥加密的支持。发件人对邮件进行签名时,将提供与数字证书上可用的公钥关联的私钥。反过来,当收件人验证邮件上的数字签名时,将从发件人的数字证书中获取公钥以执行验证。下图显示在添加了数字证书的支持元素的情况下进行签名的顺序。

数字证书以及电子邮件的数字签名
Bb123848.35451fb8-5e11-4d67-ba6e-e5d4da6febca(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 从发件人的数字证书中检索发件人的私钥。
  4. 使用发件人的私钥加密哈希值。
  5. 将加密的哈希值作为数字签名附加到邮件中。
  6. 发送邮件。

下图显示在添加了数字证书的支持元素的情况下进行验证的顺序。

数字证书以及验证电子邮件的数字签名
Bb123848.d1b14a27-5cfb-4df2-89f7-990219378716(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索包含加密哈希值的数字签名。
  3. 检索邮件。
  4. 计算邮件的哈希值。
  5. 从发件人的数字证书中检索发件人的公钥。
  6. 使用发件人的公钥解密加密的哈希值。
  7. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  8. 如果值匹配,则说明邮件有效。

这一系列操作显示,数字证书可以为验证数字签名而让验证过程访问公钥。

如何将数字证书用于邮件加密

就像数字证书通过使公钥可用于验证过程来支持数字签名一样,数字证书还通过使公钥可用于加密过程来支持邮件加密。如了解公钥加密中的“公钥加密和邮件加密”中所讨论,发件人可以访问收件人的公钥,这使得发件人可以加密邮件,从而确保只有收件人能够解密该邮件。这一次,使加密成为可能的是收件人的数字证书。与数字签名一样,数字证书中的公钥使得此操作成为可能。下图显示在具有数字证书的支持元素的情况下进行加密的顺序。

数字证书以及电子邮件的加密
Bb123848.21058391-2d70-42f9-bf25-8ead79705b27(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 从收件人的数字证书中检索公钥。
  3. 生成一次性对称会话密钥。
  4. 使用会话密钥对邮件执行加密操作。
  5. 使用收件人的公钥加密会话密钥。
  6. 将加密的会话密钥包含在加密的邮件中。
  7. 发送邮件。

下图显示在添加了数字证书的支持元素的情况下进行解密的顺序。

数字证书以及电子邮件的解密
Bb123848.50f0afca-e520-46b5-8e12-6e295dfe86d9(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 从收件人的数字证书中检索收件人的私钥。
  4. 使用收件人数字证书中的收件人私钥解密会话密钥。
  5. 使用解密的会话密钥解密邮件。
  6. 将未加密的邮件返回给收件人。

如何将数字证书用于数字签名和邮件加密

数字签名和邮件加密互为补充。下图显示在添加了数字签名的支持元素的情况下进行签名和加密的顺序。

数字证书以及对电子邮件进行数字签名和加密
Bb123848.e81cca9b-c780-49d9-a3f9-69cc3c442183(zh-cn,EXCHG.65).gif
  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 从发件人的数字证书中检索发件人的私钥。
  4. 从收件人的数字证书中检索收件人的公钥。
  5. 使用发件人的私钥加密哈希值。
  6. 将加密的哈希值作为数字签名附加到邮件中。
  7. 生成一次性对称会话密钥。
  8. 使用会话密钥对邮件执行加密操作。
  9. 使用收件人的公钥加密会话密钥。
  10. 将加密的会话密钥包含在加密的邮件中。
  11. 发送邮件。

下图显示在添加了公钥加密的支持元素的情况下对数字签名进行解密和验证的顺序。

数字证书以及解密电子邮件和验证数字签名
Bb123848.97705e57-0a94-4197-99c3-40bb58a9eaa0(zh-cn,EXCHG.65).gif
  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 从收件人的数字证书中检索收件人的私钥。
  4. 使用收件人数字证书中的收件人私钥解密会话密钥。
  5. 使用解密的会话密钥解密邮件。
  6. 从邮件中检索包含加密哈希值的数字签名。
  7. 计算邮件的哈希值。
  8. 从发件人的数字证书中检索发件人的公钥。
  9. 使用发件人的公钥解密加密的哈希值。
  10. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  11. 如果值匹配,则说明邮件有效。
  12. 将未加密的邮件返回给收件人。

通过了解数字证书如何实现公钥加密,以及公钥加密如何为数字签名和邮件加密提供基本的安全服务,您已了解 S/MIME 邮件安全的工作原理。这些概念共同组成了邮件安全的基础核心。

posted @ 2009-03-06 13:17  chunchill  阅读(1226)  评论(0编辑  收藏  举报