转载出处http://blog.sina.com.cn/s/blog_afd4c4ef0102w20n.html



定义

公钥基础设施PKI(Public Key Infrastructure),是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。

目的

PKI技术能够为网络通信和网络交易,特别是电子政务和电子商务业务,透明地提供一整套安全服务,主要包括身份认证、保密、数据完整性和不可否认性。

作为一种基础设施,PKI的应用范围非常广泛,并且在不断发展之中,下面给出几个常见的应用场景。

  1. 虚拟专用网络×××(Virtual Private Network)

    ×××是一种构建在公用通信基础设施上的专用数据通信网络,利用网络层安全协议(如IPSec)和建立在PKI上的加密与数字签名技术来获得机密性保护。

  2. 安全电子邮件

    电子邮件的安全也要求机密、完整、认证和不可否认,而这些都可以利用PKI技术来实现。目前发展很快的安全/多用途Internet邮件扩充协议S/MIME(Secure/Multipurpose Internet Mail Extensions),是一个允许发送加密和有签名邮件的协议,该协议的实现需要依赖于PKI技术。

  3. Web安全

    为了透明地解决Web的安全问题,在两个实体进行通信之前,先要建立SSL(Secure Sockets Layer,安全套接层)连接,以此实现对应用层透明的安全通信。利用PKI技术,SSL协议允许在浏览器和服务器之间进行加密通信。此外,服务器端和浏览器端通信时双方可以通过数字证书确认对方的身份。

受益
  • 用户受益

    • 通过PKI证书认证技术,用户可以验证接入设备的合法性,从而可以保证用户接入安全、合法的网络中。

    • 通过PKI加密技术,可以保证网络中传输的数据的安全性,数据不会被篡改和窥探。

    • 通过PKI签名技术,可以保证数据的私密性,未授权的设备和用户无法查看该数据。

  • 企业受益

    • 企业可以防止非法用户接入企业网络中。

    • 企业分支之间可以建立安全通道,保证企业数据的安全性。


PKI基本概念


公钥加密算法

公钥加密算法,又叫非对称加密算法或双钥加密算法,是指加密密钥和解密密钥为两个不同密钥的密码算法。

公钥加密算法使用了一对密钥:一个用于加密信息,另一个则用于解密信息,其中加密密钥公之于众,称为公钥;解密密钥由解密人私密保存,称为私钥。用其中任一个密钥加密的信息只能用另一个密钥进行解密。

RSA密钥对

数字证书机制依赖于公共密钥体制,PKI系统中应用最广泛的公共密钥体制为RSA加密系统。

RSA加密系统使用一个非对称的RSA密钥对,包括一个RSA公钥和一个RSA私钥。当实体申请数字证书时,证书请求中必须包含RSA公钥信息。

RSA密钥对的模数,即RSA密钥的长度(单位bit)。模数越大,密钥越安全,同时设备生成密钥、加密、解密花费的时间也越长。

数字指纹

数字指纹是指通过某种算法对数据信息进行综合计算得到的一个固定长度的数字序列,这个序列有时也称信息摘要,常采用单向哈希算法对原始数据进行散列计算得出数字指纹。

数字签名

数字签名是指信息发送方用自己的私钥对原始数据的数字指纹进行加密后所得的数据。

信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后,获得数字指纹,然后与自己用同样算法对原始数据计算生成的数据指纹进行匹配,根据匹配结果,便可确定原始信息是否被篡改。

数字证书

数字证书是一个经认证机构CA(Certificate Authority)签名的,包含实体公开密钥及相关身份信息的文件,它建立了实体身份信息与其公钥的关联,是使用PKI系统的用户建立安全通信的信任基础。CA对数字证书的签名保证了证书的合法性和权威性。

数字证书中包含多个字段,包括证书签发者的名称、主体的公钥信息、CA对证书的数字签名、证书的有效期等。

 说明:


本手册中涉及两类数字证书:本地(local)证书和CA(Certificate Authority)证书。本地证书是CA签发给实体的数字证书;CA证书是CA自身的证书。若PKI系统中存在多个CA,则会形成一个CA层次结构,最上层的CA是根CA,它拥有一个CA“自签名”的证书。

证书废除列表CRL

由于实体名称的改变、私钥泄漏或业务中止等原因,需要存在一种方法将现行的证书撤消,即撤消公开密钥及相关的实体身份信息的绑定关系。在PKI中,所使用的这种方法为证书废除列表CRL(Certificate Revocation List)。

任何一个证书被废除以后,CA就要发布CRL来声明该证书是无效的,并列出所有被废除的证书的序列号。CRL提供了一种检验证书有效性的方式。

当一个CRL的撤消信息过多时会导致CRL的发布规模变得非常庞大,且随着CRL大小的增加,网络资源的使用性能也会随之下降。为了避免这种情况,允许一个CA的撤消信息通过多个CRL发布出来,并且使用CRL发布点CDP(CRL Distribution Point)来指出这些CRL的位置。

CRL发布点

CRL发布点CDP,是数字证书中的信息,它描述了如何获取证书的CRL列表。

最常用的CDP是HTTP URL和LDAP URL,也可以是其他类型的URL或LDAP目录说明。一个CDP包含一个URL或目录说明。

PKI体系架构

 

PKI架构

图1所示,一个PKI体系由终端实体、认证机构、注册机构和证书/CRL存储库四部分共同组成。

                          wKioL1fg9uKx-gAaAABX97A8Hhg827.png-wh_50

                图1 PKI体系架构

  • 终端实体

    终端实体是PKI产品或服务的最终使用者,可以是个人、组织、设备(如路由器、交换机)或计算机中运行的进程。

  • 认证机构CA(Certificate Authority

    CA是PKI的信任基础,是一个用于签发并管理数字证书的可信实体。其作用包括:发放证书、规定证书的有效期和通过发布CRL确保必要时可以废除证书。

  • 注册机构RA(Registration Authority)

    RA是CA的延伸,可作为CA的一部分,也可以独立。RA功能包括个人身份审核、CRL管理、密钥对产生和密钥对备份等。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,这样可以增强应用系统的安全性。

  • 证书/CRL存储库

    证书/CRL存储库负责证书和CRL的存储、管理、查询等。

认证机构


  • 认证机构层次

    认证机构是PKI体系的核心,通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为根CA和从属CA。上级认证机构负责签发和管理下级认证机构的证书,最下一级的认证机构直接面向用户。每一份数字证书都与上一级的数字签名证书相关联,最终通过证书链追溯到一个根认证机构,根CA通常持有一个自签名证书。

    在建立CA时,从属CA要通过上级CA获得自己的CA证书,而根CA则是创建自签名的证书。

    • 根CA是公钥体系中第一个证书颁发机构,它是信任的起源。根CA可以为其它CA颁发证书,也可以为其它计算机、用户、服务颁发证书。对大多数基于证书的应用程序来说,使用证书的认证都可以通过证书链追溯到根。

    • 从属CA必须从根CA或者从一个已由根CA授权可颁发从属CA证书的从属CA处获取证书。


  • 认证机构类型

    认证机构CA的类型包括以下三种:

    • 自签名CA:在自签名CA中,证书中的公钥和用于验证证书签名的公钥是相同的。

    • 从属CA:在从属CA中,证书中的公钥和用于验证证书签名的公钥是不同的。

    • 根CA:根CA是一种特殊的CA,它受到客户无条件地信任,位于证书层次结构的最高层。所有证书链均终止于根CA。根CA必须对它自己的证书签名,因为在证书层次结构中再也没有更高的认证机构。


  • 认证机构功能

    CA的核心功能就是发放和管理数字证书,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、CRL的发布等。具体描述如下:

    • 证书申请处理:接收、验证用户数字证书的申请。

    • 证书审批处理:确定是否接受用户数字证书的申请。

    • 证书颁发处理:向申请者颁发或拒绝颁发数字证书。

    • 证书更新处理:接收、处理用户的数字证书更新请求。

    • 证书查询和撤销处理:接收用户数字证书的查询、撤销。

    • 发布CRL:产生和发布证书废除列表(CRL)。

    • 证书的归档:数字证书的归档。

    • 密钥的备份和恢复。

    • 历史数据归档。


注册机构

RA是数字证书注册审批机构,RA是CA面对用户的窗口,是CA的证书发放、管理功能的延伸,它负责接受用户的证书注册和撤销申请,对用户的身份信息进行审查,并决定是否向CA提交签发或撤销数字证书的申请。

RA作为CA功能的一部分,实际应用中,通常RA并不一定独立存在,而是和CA合并在一起。RA也可以独立出来,分担CA的一部分功能,减轻CA的压力,增强CA系统的安全性。


PKI工作机制

 

工作过程

针对一个使用PKI的网络,配置PKI的目的就是为指定的实体向CA申请一个本地证书,并由设备对证书的有效性进行验证。PKI的工作过程如下:

  1. 实体向注册机构RA提出证书申请。

  2. RA审核实体身份,将实体身份信息和公开密钥以数字签名的方式发送给CA。

  3. CA验证数字签名,同意实体的申请,颁发证书。

  4. RA接收CA返回的证书,通知实体证书发行成功。

  5. 实体获取证书,利用该证书可以与其它实体使用加密、数字签名进行安全通信。

  6. 实体希望撤消自己的证书时,向CA提交申请。CA批准实体撤消证书,并更新CRL。


工作原理

PKI的目标就是要充分利用公钥密码学的理论基础,建立起一种普遍适用的基础设施,为各种网络应用提供全面的安全服务。

对于公钥加密算法,由于公钥是公开的,需要在网上传送,故公钥的管理问题就是公钥加密体制所需要解决的关键问题。目前,PKI系统中引出的数字证书机制就是一个很好的解决方案。PKI的核心技术就围绕着数字证书的申请、颁发、使用与撤销等整个生命周期进行展开。


证书注册

证书注册即证书申请,就是一个实体向CA自我介绍并获取数字证书的过程。实体向CA提供身份信息,以及相应的公钥,这些信息将成为颁发给该实体证书的主要组成部分。

实体向CA提出证书申请,有离线和在线两种方式。离线申请方式下,CA允许申请者通过带外方式(如电话、磁盘、电子邮件等)向CA提供申请信息。在线证书申请有手工发起和自动发起两种方式。以下是常用的证书注册方式:

  • PKCS#10方式(离线注册方式)

    当无法通过SCEP协议向CA在线申请证书时,可以使用PKCS#10格式打印出本地的证书申请信息。用户以PKCS#10格式保存证书申请信息到文件中,并通过带外方式发送给CA进行证书申请。

  • SCEP方式(在线注册/下载方式)

    通过简单证书注册协议SCEP(Simple Certification Enrollment Protocol),利用HTTP协议与CA或RA通信,发送证书注册请求或证书下载请求消息,下载CA/RA证书、本地证书,或者申请本地证书。SCEP方式是最常用的证书自动注册方式。

  • 自签名证书

    PKI设备为自己颁发一个自签名证书,即证书签发者和证书主题相同。


证书更新

设备在证书即将过期前,先申请一个证书作为“影子证书”,在当前证书过期后,影子证书成为当前证书,完成证书更新功能。

申请“影子证书”的过程,实质上是一个新的证书注册的过程。

证书更新功能需要CA服务器的支持,即CA服务器必须支持证书更新功能。


证书下载

证书下载是指终端实体通过SCEP协议,向CA服务器查询并下载已颁发的证书,或者通过CDP指定机制和地址,下载已颁发的证书。该证书可以是自己的证书,也可以是CA证书,或其他终端实体的证书。


证书撤销

由于用户身份、用户信息或者用户公钥的改变、用户业务中止等原因,用户需要将自己的数字证书撤消,即撤消公钥与用户身份信息的绑定关系。在PKI中,CA撤销证书使用的方法为证书废除列表CRL,终端实体撤销自己的证书是通过带外方式申请的。

为了撤销自己的证书,终端实体必须采用带外方式通知CA服务器管理员。

管理员要求终端实体提供自己的Challenge Password(Challenge Password在证书注册时已作为PKCS10证书请求的属性发给了CA)。

如果终端实体提供的Challenge Password与CA服务器保存的一致,CA发布CRL来撤销证书。


CRL下载

CA/RA不会主动把CRL发布给终端实体,而是由终端实体主动发起CRL查询。有两种下载CRL的方法:CDP方式、SCEP方式。

CA如果支持CDP,在为终端实体颁发证书时,把CRL发布点的URL地址编码成CDP属性封装在证书中,终端实体根据CDP来下载CRL。

如果证书中未携带CDP信息,并且设备本地也没有配置CDP的URL地址,则设备通过SCEP协议向CA服务器请求CRL。终端实体通过SCEP协议获取证书时,以证书签发者名字和证书序列号作为查询关键字。


证书状态检查方式

当终端实体验证对端证书时,经常需要检查对端证书是否有效,例如对端证书是否过期、是否被加入证书黑名单中,即检查证书的状态。通常终端实体检查证书状态的方式有三种:CRL方式、OCSP方式、None方式。

  • CRL方式

    如果CA支持CDP,那么当CA签发证书时,在证书中会包含CDP信息,描述了获取该证书CRL的途径和方式。终端实体利用CDP中指定的机制和地址来定位和下载CRL。

    如果PKI域下配置了CDP的URL地址,该地址将覆盖证书中携带的CDP信息,终端实体使用配置的URL来获取CRL。

  • 在线证书状态协议OCSP(Online Certificate Status Protocol)方式

    如果CA不支持CDP,即证书中没有指定CDP,并且PKI域下也没有配置CRL的URL地址,终端实体可以使用OCSP协议检查证书状态。

  • None方式

    如果终端实体没有可用的CRL和OCSP服务器,或者不需要检查对端证书状态,可以采用None方式,即不检查证书是否被撤销。


证书合法性验证

终端实体获取对端证书后,当需要对对端进行证书认证时,例如需要与对端建立安全隧道或安全连接,通常需要验证对端证书和证书签发者的合法性。如果证书签发者的证书无效或过期,则由该CA签发的所有证书都不再有效。但在CA证书过期前,设备会自动更新CA/RA证书,异常情况下才会出现CA证书过期现象。

为完成证书验证,除了需要对端证书外,本地设备需要下面的信息:信任的CA证书、CRL、本端数字证书及其私钥、证书认证相关配置信息。

证书验证的主要过程如下:

  1. 使用CA证书的公钥验证认证机构的签名是否正确。

  2. 根据证书的有效期,验证证书是否过期。

  3. 检查证书的状态,即通过CRL、OCSP、None等方式检查证书是否被撤销。


证书链验证

为验证一个数字证书的合法性,首先需要获得签发这个证书的CA的公钥(即获得CA证书),以便检查该证书上CA的签名。一个CA可以让另一个更高层次的CA来证明其数字证书的合法性,这样顺着证书链,验证数字证书就变成了一个叠代过程,最终这个链必须在某个“信任点”(一般是持有自签名证书的根CA或者是实体信任的中间CA)处结束。

所谓的证书链,是指从终端实体证书到根证书的一系列可信任证书构成的证书序列。任何终端实体,如果它们共享相同的根CA或子CA,并且已获取CA证书,都可以验证对端证书。一般情况下,当验证对端证书链时,验证过程在碰到第一个可信任的证书或CA机构时结束。

证书链的验证过程是一个从目标证书(待验证的实体证书)到信任点证书逐层验证的过程。