商用密码应用与安全性评估
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 密钥管理

密钥的安全是保证密码算法安全的基础。如何对密钥进行安全管理是密码产品、密码应用的设计开发人员关注的重点,也往往是不了解或刚涉入密码领域的人所忽视的一项重要内容。本节首先介绍密钥在其生命周期各个环节的管理要点,然后分别介绍对称密钥管理和公钥管理的相关内容。

1.5.1 密钥生命周期管理

密钥生命周期指的是密钥从生成到销毁的时间跨度。不同的密钥有不同的生命周期:签名密钥对可能有数年的生命周期;而一些临时密钥(如IPSec协议中的会话密钥)的生命周期为单次会话,使用完毕后立即销毁。一般而言,使用频率越高的密钥要求其生命周期尽量短。单个密钥的生命周期也不是固定的,如果密钥泄露,其生命周期应立即终止并销毁密钥。

此外,有些与安全相关的敏感参数也应该视同密钥进行安全防护,包括但不限于用户口令、密钥生成和密码计算过程中使用的随机数或中间结果(如SM2签名算法中使用的随机数和密钥协商过程中生成的共享秘密)。

根据GM/T 0054-2018《信息系统密码应用基本要求》,信息系统中的密钥在其生命周期内涉及到生成、存储、导入和导出、分发、使用、备份和恢复、归档、销毁等环节,以下具体介绍每个环节。

1.密钥生成

密钥生成是密钥生命周期的起点,所有密钥都应当直接或间接地根据随机数生成。密钥生成的方式包括利用随机数直接生成、通过密钥派生函数(Key Derivation Function,KDF)生成。其中,后一种方式被认为是随机数间接生成,因为派生函数使用的主密钥、共享秘密信息的生成都与随机数相关。无论采用何种生成方式,密钥都应在密码产品内部产生。此外,利用用户口令派生密钥也是一种常见的方式:通过实体唯一标识和其他相关信息,从口令中派生出密钥。口令生成密钥的密钥空间依赖于口令的复杂度,但是相比于密钥的预期复杂度(比如SM4密钥空间为2128),口令仅提供小得多的熵(8位数字口令提供227的密钥空间),极大地降低了穷举搜索攻击的难度。因此,这种密钥派生方式不推荐使用,尤其不能用于网络通信数据的保护,仅在某些特定环境(如加密存储设备)中使用。

密钥生成时,一般会伴随生成密钥控制信息,包括但不限于密钥拥有者、密钥用途、密钥索引号、生命周期起止时间,这些信息可以不进行保密性保护,但是应进行完整性保护以确保密钥被正确使用。下面介绍密钥生成的两种主要方式。

1)利用随机数直接生成

利用随机数直接生成是密钥生成的常见方式,密钥的安全性直接取决于随机数发生器的质量,因此需要使用核准的随机数发生器进行密钥生成。在使用随机数直接作为密钥时,应检查密钥是否符合具体算法的要求(如SM2、SM9算法私钥值须小于椭圆曲线群的阶),必要的时候进行调整或者重新生成新的随机数作为密钥。

2)通过KDF生成

在有些场景中,密钥可能不是由随机数发生器直接生成的,而是通过某个秘密值进行派生。该秘密值与其他相关数据(如随机数、计数器等)一同作为KDF的输入,由KDF生成指定长度的密钥。KDF的设计应保证从派生的密钥无法推断出秘密值本身,同时,也必须保证从某个派生的密钥无法推断出其他派生的密钥。KDF一般基于对称密码算法或密码杂凑算法来构造。

使用KDF生成密钥主要有以下两类情形。

(1)在密钥协商过程中从共享秘密派生密钥。这种情形主要发生在密钥协商过程中。通信双方在密钥协商过程中,首先利用Diffie-Hellman、MQV等算法获得一个共享秘密。该共享秘密一般不直接作为密钥,而是将该共享秘密作为密钥材料利用KDF生成密钥。这种密钥派生方式的主要示例包括SM2/SM9的密钥协商和公钥加密算法中使用的基于SM3的KDF。

(2)从主密钥派生密钥。这种密钥派生的方法也称为密钥分散。对于一些需要生成大量对称密钥的场景,比如大规模分发智能IC卡时,发卡方无法保存每个实体的密钥。一种常见做法就是发卡方保存主密钥,根据实体唯一标识和其他相关信息,从主密钥中派生出每个实体单独的密钥。使用时,发卡方可以根据主密钥、实体唯一标识重新生成该密钥,然后进行身份鉴别或者加密通信等后续操作。

2.密钥存储

为了保证密钥存储安全,可以将密钥存储在核准的密码产品中,或者在对密钥进行保密性和完整性保护后,存储在通用存储设备或系统(如数据库)中。需要指出的是,并非所有密钥都需要存储,一些临时密钥或一次一密的密钥在使用完就要立即进行销毁。

1)存储在密码产品中

密码产品的密钥防护机制,可以用于保护密钥在存储过程中的保密性和完整性。密码产品中的密钥一般采取分层次的方式,逐层进行保护:下层的密钥利用上层的密钥加密密钥进行保护;对于顶层的密钥加密密钥,则需要采取严格的安全防护措施(如微电保护)在密码产品中明文存储,以防止密钥被非授权地获取和篡改。

2)加密保存在通用存储设备中

对于某些应用场景,由于密钥数量较大,密码产品本身只负责密码计算,而将密钥存储在通用存储设备或系统(如数据库)中。这种情况下,需要利用密码算法对密钥进行必要的保密性和完整性保护。需要指出的是,不能简单地只采用密码杂凑算法进行完整性保护,因为它无法阻止恶意的篡改。

3.密钥导入和导出

密钥的导入和导出主要指密钥在密码产品中的进出,既可以在同一个密码产品中进行密钥的导入和导出(用于密钥的外部存储、备份和归档),也可以将密钥从一个密码产品导出后再导入到另一个密码产品中(用于密钥的分发)。为了保证密钥的安全性,密钥一般不能明文导出到密码产品外部。安全的密钥导入和导出方式包括加密传输和知识拆分。

1)加密传输

利用加密算法进行密钥的导入和导出是最简单和高效的方法。对称加密技术和非对称加密技术都可以完成密钥的导入和导出,但前提是通信双方需要预先共享一个密钥加密密钥或获取被导入方的公钥。同时,为了保证密钥的完整性,在密钥的导入和导出过程中,需要加入完整性保护和校验机制。利用非对称加密技术完成的密钥加密一般称为数字信封。SM2加密和解密算法自身具有完整性校验的功能,可以直接用于密钥加密传输。

2)知识拆分

知识拆分是指将密钥拆分为几个独立的密钥分量,导出到密码产品外部;导入时,每个密钥分量单独导入,最终在密码产品内部进行合成。常见的知识拆分方法有以下两类。

①将密钥K拆分成若干个与其长度一致的分量K1,…,Kn,导入时利用异或计算恢复出原有密钥,即K=K1⊕…⊕Kn

②利用门限算法进行拆分:例如,利用Shamir秘密分享方案,将K拆分为n个密钥分量,只有大于等于ttn)个密钥分量才能恢复出K

需要注意的是,知识拆分不应当降低密钥的安全性,简单地将密钥截取为若干段的方式是不允许的,如将一个128比特的SM4密钥拆成两个64比特的密钥分量。因为对于任何一个密钥分量的持有者而言,该密钥的密钥空间从2128降低到264,极大降低了穷举搜索攻击的难度。

除了禁止密钥的明文进出,高安全等级的密码产品(如符合GM/T 0028-2014安全三/四级的密码模块)还要求,进行知识拆分后的密钥分量要通过可信信道传输。可信信道在密码模块和发送者或接收者之间建立安全可信的通信链接,用以安全传输未受保护的关键安全参数、密钥分量和鉴别数据。可信信道能够在模块定义的输入或输出端之间及模块到目的终端的通信链路上,防止窃听以及来自恶意实体、恶意进程或其他装置的物理篡改或逻辑篡改。

4.密钥分发

密钥分发主要用于不同密码产品间的密钥共享。根据分发方法,密钥分发主要分为人工(离线)分发和自动(在线)分发。这两者的主要区别在于人工分发方式需要人工参与,在线下通过面对面等方式完成密钥的安全分发;而自动的分发方式一般借助密码技术在线自动完成密钥分发。

1)人工分发

人工分发密钥指的是利用加密传输、知识拆分等手段通过人工将密钥从一个密码产品(如密钥管理系统、密钥分发系统等)分发到其他产品中,实现密钥共享。人工分发的效率较低,只适用于少量密钥的分发,一般用于根密钥(密钥加密密钥)的分发。人工分发过程必须保证以下几点:

①密钥由授权的分发者分发,并由授权的接收者接收。

②进行人工分发的实体是可信的。

③有足够的机制(如加密、紧急销毁机制等)保证密钥的安全性,提供对截取、假冒、篡改、重放等攻击手段的对抗能力。

2)自动分发

对称密钥和公钥加密密钥对的私钥可以通过数字信封、对称密钥加密等方式进行自动加密分发。自动分发的安全性主要通过密码技术本身来保证。

5.密钥使用

密钥一般只能在核准的密码产品内部使用。用于核准的密码算法的密钥,不能再被非核准的密码算法使用,因为这些算法可能导致密钥泄露。特别是,不同类型的密钥不能混用,一个密钥不能用于不同用途(加密、签名、MAC等),这主要有以下几个原因。

①将一个密钥用于不同的用途,可能会降低密钥的安全性。

②不同用途的密钥对密钥的要求互不相同。比如,加密密钥对可能会将其私钥归档以解密历史数据,而签名密钥对的私钥在其生命周期结束时应当立即销毁;如果一个密钥对同时用作加密和签名,将会产生矛盾。

③限制密钥的用途可以降低密钥泄露时可能造成的损害。

此外,虽然不需要保护公钥的保密性,但在使用前(如签名验证或者密钥协商过程)需要验证公钥的完整性,以及实体与公钥的关联关系,以确保公钥来源的真实性。

6.密钥备份和恢复

密钥备份的主要目的是保护密钥的可用性,作为密钥存储的补充以防止密钥的意外损坏。密钥备份与密钥存储非常类似,只不过备份的密钥处于不激活状态(不能直接用于密码计算),只有完成恢复后才可以激活。密钥备份需要保护备份密钥的保密性、完整性及其与拥有者身份和其他信息的关联关系。密钥备份时一般将备份的密钥存储在外部存储介质中,需要有安全机制保证仅有密钥拥有者才能恢复出密钥明文。密钥备份或恢复时应进行记录,并生成审计信息;审计信息应包括备份或恢复的主体、备份或恢复的时间等。

7.密钥归档

密钥在其生命周期结束时,应当进行销毁。但是出于解密历史数据和验证历史签名的需要,有些不在生命周期内的密钥可能需要持续保存,需要注意的是签名密钥对的私钥不应进行归档。

密钥归档与密钥备份在形式上类似,主要区别在于密钥归档是在密钥的生命周期之外(销毁之后)对密钥进行保存,在现有系统中该密钥已经不再使用;而密钥备份则针对仍在生命周期内的密钥。密钥归档时,也应当继续对这些密钥提供安全保护,以保证历史加密数据的安全性。密钥归档时应进行记录,并生成审计信息,审计信息应包括归档的密钥和归档时间等。

8.密钥销毁

密钥的销毁是密钥生命周期的终点。密钥生命周期结束后,要对原始密钥进行销毁,并根据情况重新生成密钥,完成密钥更换。密钥进行销毁时,应当删除所有密钥副本(但不包括归档的密钥副本)。密钥销毁主要有两种情况。

①正常销毁。密钥在设计的使用截止时间到达时自动进行销毁,比如,临时密钥在使用完毕时应当立即销毁。

②应急销毁。密钥在已经泄露或存在泄露风险时进行的密钥销毁。对于存储在密码产品中的密钥,一般配备了紧急情况下自动销毁密钥的机制;当密钥所有者发现密钥存在泄露风险时,可能需要手动提前终止密钥的生命周期,进行密钥销毁。

1.5.2 对称密钥管理

密钥管理因所使用的密码体制(对称密码体制和公钥密码体制)不同,管理方式也有很大区别。相对于公钥管理,对称密钥管理中最具有特色的是对称密钥的分发,即通信双方建立起相同的对称密钥进行安全通信。因此,本小节着重介绍对称密钥的分发。

对称密码在一些特殊系统中应用广泛,如门禁系统、金融系统等。在门禁系统中,GM/T 0036-2014《采用非接触卡的门禁系统密码应用技术指南》规定了基于对称密钥体系的密钥分散过程。一般来说,首先通过门禁后台管理系统使用密钥管理子系统的密码设备生成门禁系统根密钥,然后将根密钥安全导入安全模块。在门禁卡发卡时,通过后台管理系统使用对称加密算法对系统根密钥进行密钥分散,实现一卡一密,即为每个卡片生成唯一卡片密钥。具体而言,可以利用根密钥对门禁卡的唯一标识(UID)以及用于密码分散的特定发行信息(如有)进行加密,获得卡片的唯一对称密钥,并将对称密钥安全下载到门禁卡中,实现门禁系统中对称密钥的分散。

在金融系统中,对称密钥管理标准有美国国家标准ANSI X9.17《金融机构密钥管理(零售)》,这个标准为用于加密密钥的保护和交换规定了统一的处理方式,不仅适用于金融机构间的互操作,而且也可保证金融机构和大宗用户间的互操作。我国关于对称密钥管理相关的标准有GB/T 17901.1-1999《信息技术安全技术密钥管理 第1部分:框架》,针对金融系统发布了国家标准GB/T 27909.2-2011《银行业务密钥管理(零售)第2部分:对称密码及其密钥管理和生命周期》。

接下来将结合上述标准着重介绍一下金融系统中的对称密钥分发,可以作为其他系统中对称密钥管理体系的参考。

在金融机构密钥使用过程中,用于加密大部分数据的密钥需要频繁更改(例如,每天更改一次或每次会话更改一次),这些密钥不适用于通过人工分发密钥来完成,因为这种实现方式的代价太高。因此,在银行业务的对称密钥管理体系中一般将密钥分成两类:数据密钥(Data Key,DK)和密钥加密密钥(Key Encrypting Key,KEK)。数据密钥用于保护数据,有时也称为会话密钥;密钥加密密钥用于保护数据密钥。对称密钥分发主要有两种基本结构,一种是点到点结构,另一种是基于密钥中心的结构。

1.点到点结构

点到点结构如图1-17所示。在这种结构中,通信双方共享一个通过人工分发的KEK,当双方需要通信时,通信发起方产生新的DK,用KEK加密DK,并将加密后的DK发送给另一方,实现DK的在线自动建立。

点到点结构存在的一个主要问题是,如果有n个成员组成的团体希望互相通信,那么需要人工分发的KEK数为nn-1)/2。在一个大型的网络中,KEK的分发问题就变得极难处理。

图1-17 点到点结构

2.基于密钥中心的结构

为解决点对点结构中大量KEK分发困难的问题,在密钥加密密钥分发结构中引入了密钥中心,这就是第二类结构。在这类结构中,每个通信方和密钥中心共享一个人工分发的KEK,但是通信方之间无共享的KEK。因此,对于一个由n个成员组成的团体,人工分发的KEK数量仅为n

密钥中心结构有两种:密钥转换中心(Key Translation Centre,KTC)和密钥分发中心(Key Distribution Centre,KDC)。

在密钥转换中心结构中,数据密钥DK由通信发起方产生,如图1-18所示。密钥分发过程如下:①当A希望和B进行通信时,由通信发起方A产生一个DK,产生的DK利用A与KTC共享的KEKA进行加密保护,A将加密后的DK发送给KTC;②KTC解密得到DK,用KTC和B共享的KEKB重新加密DK,KTC直接将加密后的DK传给B;或者,③KTC解密得到DK,用KTC和B共享的KEKB重新加密DK,KTC将加密后的DK返回给A,由A再传送给B使用。

图1-18 密钥转换中心结构

在密钥分发中心结构中,数据密钥DK由KDC产生,如图1-19所示。密钥分发过程如下:①当A希望和B建立一个对称密钥时,A向KDC申请一个与B的共享密钥;②KDC产生一个DK,分别用与A、B共享的KEK加密DK,并分别返回给A和B。

图1-19 密钥分发中心结构

在对称密钥分发过程中,密钥管理协议需要能抵抗旧密钥传输的重放攻击,防范方法有以下几种。

①密钥计数器。用于传输消息的密钥都有一个标记它的序列号,该序列号被附加到使用该密钥的一对用户所传输的每一个消息上。

②密钥调整。将一个与KEK有关的计数序列与KEK进行异或后,再加密所分配的DK。接收者在解密之前也同样地用计数序列调整KEK。

③时间戳。每个传输消息有一个标记它的时间戳,时间戳太旧的消息将被接收者拒绝接收。

1.5.3 公钥基础设施

公钥基础设施(Public Key Infrastructure,PKI)是基于公钥密码技术实施的具有普适性的基础设施,可用于提供信息的保密性、信息来源的真实性、数据的完整性和行为的不可否认性等安全服务。

PKI主要解决公钥属于谁的问题。需要强调的是,这里所说的公钥属于谁,实际上是指谁拥有与该公钥配对的私钥,而不是简单的公钥持有。确认公钥属于谁是希望确认谁拥有对应的私钥。

目前,国内外有很多标准化组织为PKI的实施和应用制定了一系列标准。ITU-T标准化部门制定的X.509标准,为解决X.500目录中的身份鉴别和访问控制问题而设计,是目前使用最广泛、最成功的证书格式。IETF公钥基础实施工作组(PKIX)为互联网上使用的公钥证书定义了一系列标准,旨在使X.509标准中所做的证书和证书撤销列表工作,满足在互联网环境中建立PKI需要。美国RSA公司制定的公钥密码学标准(Public Key Cryptography Standards,PKCS)对PKI体系的加密和解密、签名、密钥交换、分发格式及行为等内容进行了规范。我国制定的GM/T 0034-2014《基于SM2密码算法的证书认证系统密码及其相关安全技术规范》等系列标准对我国公众服务的数字证书认证系统的设计、建设、检测、运行及管理进行了规范。

1.PKI系统组件

PKI系统包括以下几类组件。

①证书认证机构(Certification Authority,CA)。具有自己的公私钥对,负责为其他人签发证书,用自己的密钥来证实用户的公钥信息。一个PKI系统中可能会有多级CA,包括根CA和各级子CA。

②证书持有者(Certificate Holder)。证书持有者拥有自己的证书和与证书中公钥匹配的私钥。证书持有者的身份信息和对应的公钥会出现在证书中,也称为用户。

③依赖方(Relying Party)。一般将PKI应用过程中使用其他人的证书来实现安全功能(保密性、身份鉴别等)的通信实体称为依赖方,或者证书依赖方。

④证书注册机构(Registration Authority,RA)。作为CA与申请者的交互接口,专门负责各种信息的检查和管理工作。只有在对申请者的各种检查通过之后,RA才会将信息发送给CA,要求CA签发证书。

⑤资料库(Repository)。用于实现证书分发,负责存储所有的证书,供依赖方下载。

⑥证书撤销列表(Certificate Revocation List,CRL)。包含了当前所有被撤销证书的标识,验证者根据最新的CRL就能够判断证书是否被撤销。

⑦在线证书状态协议(Online Certificate Status Protocol,OCSP)。一种实时检查证书撤销状态的协议标准。该协议是一种“请求-响应”协议,证书验证者向OCSP服务器查询某一张特定证书是否被撤销,服务器返回的响应消息表明该证书的撤销状态(正常、撤销或者未知)。OCSP和CRL都是为了解决证书撤消状态查询的问题,相比较而言,OCSP的实时性更高,部署起来也相对更复杂一些。

⑧轻量目录访问协议(Lightweight Directory Access Protocol,LDAP)。一种开放的应用协议,提供访问控制和维护分布式信息的目录信息。CA通过把新签发的证书与证书撤销链送到LDAP目录服务器,供用户查询、下载。

⑨密钥管理系统(Key Management System,KM)。为PKI系统中其他实体提供专门的密钥服务,包括生成、备份、恢复、托管等多种功能。

2.数字证书结构

数字证书也称公钥证书,在证书中包含公钥持有者信息、公开密钥、有效期、扩展信息以及由CA对这些信息进行的数字签名。PKI通过数字证书解决密钥归属问题。在PKI中,CA也具有自己的公私钥对,对每一个“公钥证明的数据结构”进行数字签名,实现了公钥获得的数据起源鉴别、数据完整性和不可否认性。由于证书上带有CA的数字签名,用户可以在不可靠的介质上存储证书而不必担心被篡改,可以离线验证和使用,不必每一次使用都向资料库查询。

我国数字证书结构和格式遵循GM/T 0015-2012《基于SM2密码算法的数字证书格式规范》标准,标准中采用GB/T 16262系列标准的特定编码规则(DER)对证书项中的各项信息进行编码,组成特定的证书数据结构。ASN.1DER编码是关于每个元素的标记、长度和值的编码系统。

证书数据结构由tbsCertificate、signatureAlgorithm和signatureValue三个域构成,如图1-20所示。

图1-20 数字证书结构

①tbsCertificate域包含了主体名称和颁发者名称、主体的公钥、证书的有效期及其他相关信息。

②signatureAlgorithm域包含了证书签发机构签发该证书所使用密码算法的标识符。该域的算法标识符必须与tbsCertificate中的signature标识的签名算法项相同。签名算法如为SM2,其算法标识符为1.2.156.10197.1.301。

③signatureValue域包含了对tbsCertificate域进行数字签名的结果。采用ASN.1DER编码的tbsCertificate作为数字签名的输入,而签名的结果则按照ASN.1编码成BIT STRING类型并保存在证书签名值域内。

3.数字证书生命周期

证书的生命周期从证书的起始时间开始进入有效状态,在有效状态下的证书可以进行各种操作,生命周期的结束是当前时间进入了数字证书的失效日期或是数字证书被撤销,表明数字证书进入无效阶段。

数字证书的各种操作可归纳为五个方面:证书的产生、证书的使用、证书的撤销、证书的更新及证书的归档。

1)证书的产生

证书的产生主要包括密钥生成、提交申请、审核检查和证书签发四个步骤。

(1)密钥生成。证书申请者在本地生成一个公私密钥对。此公钥应包含在申请材料中,如果申请成功,CA所颁发的数字证书中将把此公钥和申请者的个人信息绑定。

(2)提交申请。证书的申请者向CA或者RA提交申请材料。CA一般会提供在线或者离线的提交方式以供选择。在线方式是指用户通过互联网等登录到用户注册管理系统后申请证书;离线方式是指用户到指定的RA申请证书。

(3)审核检查。CA(或被授权的RA)应对申请材料进行相应的审核,判断资料来源和申请者身份的真实性,以及审定可签发的数字证书种类。

(4)证书签发。证书签发可进一步细分成证书的签署和证书的发布。证书的签署是指CA首先按照数字证书的标准格式组合出证书所需的各项数据内容,然后用自己的私钥对这些数据内容的杂凑值进行签名,并在数据内容后附上签名结果。这些反映公钥和身份的内容及CA的签名结果组合在一起就构成了证书。CA签署证书后就应把证书公开发布,供各依赖方使用。CA会给申请者本人发送其获得的数字证书,同时CA也会把该证书放入数字证书资料库中供其他人获取。数字证书发布的方式相对灵活,可以在线发布和离线发布。由于数字证书的公开性质,数字证书的发布不必采用保密信道。

2)证书的使用

证书的使用操作包括证书获取、验证使用和证书存储。

(1)证书获取。

①根CA自签名证书:由于无法通过PKI系统的技术手段对其进行验证,所以只能采用带外方式获取。

②用户证书:可以从CA的数字证书资料库获取证书,也可以是证书的持有者通过其他途径发送给依赖方。

(2)验证使用。

数字证书存在的目的是能被用来验证该公钥确实属于证书持有者。单个数字证书验证的基本内容包括证书中数字签名的有效性、证书的有效期和证书的撤销状态。

①在进行证书验证时,应首先验证证书中数字签名的有效性,只有签名有效性验证通过之后,才能进一步提取出证书中的其他信息进行验证。具体验证过程为:首先从签发该证书的CA证书中获得公钥,然后从证书中提取出签名算法信息,再对证书除去签名算法和签名结果的部分进行签名验证。如果验证通过,那么就能确保证书的完整性,可以继续对证书进行其他方面的验证;如果验证不通过,那就说明证书是伪造的或被篡改的,不用进行其他的检查,直接认为此证书无效。

②证书有效期的验证主要是检查当前时间是否在证书中有效期字段对应的时间段内。如果当前时间在有效期内,就对证书的其他内容进行进一步验证;否则,认为证书是无效的。

③证书撤销状态的查询通常可以采用查询CRL、OCSP的方式。通过证书撤销状态查询,如果发现证书已经被撤销,那么证书就是无效的,用户不能使用该证书。

在实际应用中,大部分PKI系统都是采用多层次CA结构,根CA用自己的私钥对下级CA的证书签名,下级CA再用自己的私钥对下下级CA的证书签名,以此生成一条证书认证路径。因此在进行证书验证时需要沿着这条路径验证每一个上级CA的证书,直到信任路径的终点,即根CA证书。因此,证书的验证是一个复杂的流程,实际应用中这些复杂的流程大多都由PKI系统自动完成。

(3)证书存储。

用户将证书存储在本地以便日后使用。主要的使用形式就是直接发送给其他实体,供其鉴别自己的身份。除了数字证书在本地进行存储之外,用户的私钥也将存储在本地,以便进行后继签名或者解密等。不同于证书的存储,用户的私钥由于其保密性的要求,在本地必须以安全的形式进行存储。一般来说,可以用硬件设备保护、对称加密保护的方式来保障私钥在本地的存储安全。

3)证书的撤销

数字证书的“生命”不一定会持续到失效日期。当用户个人身份信息发生变化或用户私钥丢失、泄露或者疑似泄露时,证书用户应及时向CA提出证书撤销请求,CA也应及时把此证书放入公开发布的CRL或更新OCSP服务内容。证书撤销也表示了证书生命的终结。

4)证书的更新

证书的更新必然需要CA签发一份新的证书,但是此时的审核签发过程与用户第一次申请不同。更新后的证书与原证书内容基本一样,甚至可沿用以前的公钥,不同之处仅在于序列号、生效和失效日期。

5)证书的归档

PKI系统必须支持对曾有数据的归档处理,以能在需要的时候为PKI系统依赖方找到所需要的旧的数字证书和CRL为原则。证书的归档没有固定的形式,但是是必不可少的。

4.双证书体系

公钥密码的密钥既可以用于加密应用,又可以用于签名应用。然而,一方面,监管和用户自身的密钥恢复需求要求私钥在用户之外得到备份;另一方面,数字签名应用的私钥不能在用户之外再有备份。作为同时满足加密和签名两方面看似矛盾的需求解决方案,能够区分签名证书和加密证书的“双证书体系”得以引入。目前我国PKI系统采用的就是双证书体系。

在我国双证书体系中,用户同时具有两个私钥,分别称为签名私钥和加密私钥。签名私钥由用户在本地生成并专有掌握,对应的证书被称为“签名证书”;加密私钥用于解密和密钥交换,由专门的可信机构(如密钥管理中心)生成并和用户共同掌握,对应的证书被称为“加密证书”。可信机构保存的加密私钥可用于密钥恢复,可信机构需保证所保存的加密私钥的安全性。