了解数字证书

 

上一次修改主题: 2005-05-19

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

在 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 对其特定证书所使用的特征。

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

使用数字证书实现邮件安全性

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

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

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

35451fb8-5e11-4d67-ba6e-e5d4da6febca

  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 从发件人的数字证书中检索发件人的私钥。
  4. 使用发件人的私钥加密哈希值。
  5. 将加密的哈希值作为数字签名附加到邮件中。
  6. 发送邮件。

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

d1b14a27-5cfb-4df2-89f7-990219378716

  1. 接收邮件。
  2. 从邮件中检索包含加密哈希值的数字签名。
  3. 检索邮件。
  4. 计算邮件的哈希值。
  5. 从发件人的数字证书中检索发件人的公钥。
  6. 使用发件人的公钥解密加密的哈希值。
  7. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  8. 如果值匹配,则说明邮件有效。

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

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

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

21058391-2d70-42f9-bf25-8ead79705b27

  1. 捕获邮件。
  2. 从收件人的数字证书中检索公钥。
  3. 生成一次性对称会话密钥。
  4. 使用会话密钥对邮件执行加密操作。
  5. 使用收件人的公钥加密会话密钥。
  6. 将加密的会话密钥包含在加密的邮件中。
  7. 发送邮件。

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

50f0afca-e520-46b5-8e12-6e295dfe86d9

  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 从收件人的数字证书中检索收件人的私钥。
  4. 使用收件人数字证书中的收件人私钥解密会话密钥。
  5. 使用解密的会话密钥解密邮件。
  6. 将未加密的邮件返回给收件人。

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

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

e81cca9b-c780-49d9-a3f9-69cc3c442183

  1. 捕获邮件。
  2. 计算邮件的哈希值。
  3. 从发件人的数字证书中检索发件人的私钥。
  4. 从收件人的数字证书中检索收件人的公钥。
  5. 使用发件人的私钥加密哈希值。
  6. 将加密的哈希值作为数字签名附加到邮件中。
  7. 生成一次性对称会话密钥。
  8. 使用会话密钥对邮件执行加密操作。
  9. 使用收件人的公钥加密会话密钥。
  10. 将加密的会话密钥包含在加密的邮件中。
  11. 发送邮件。

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

97705e57-0a94-4197-99c3-40bb58a9eaa0

  1. 接收邮件。
  2. 从邮件中检索加密的邮件和加密的会话密钥。
  3. 从收件人的数字证书中检索收件人的私钥。
  4. 使用收件人数字证书中的收件人私钥解密会话密钥。
  5. 使用解密的会话密钥解密邮件。
  6. 从邮件中检索包含加密哈希值的数字签名。
  7. 计算邮件的哈希值。
  8. 从发件人的数字证书中检索发件人的公钥。
  9. 使用发件人的公钥解密加密的哈希值。
  10. 将解密的哈希值与接收邮件时产生的哈希值进行比较。
  11. 如果值匹配,则说明邮件有效。
  12. 将未加密的邮件返回给收件人。

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