密码基础知识【公钥基础设施】

公钥基础设施

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

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

1.PKI系统组件

1)证书认证机构(Certification Authority,CA)

具有自己的公私钥对,负责为其他人签发证书,用自己的密钥来证实用户的公钥信息。

一个PKI系统中可能会有多级CA,包括根CA和各级子CA。

2)证书持有者(Certificate Holder)

证书持有者拥有自己的证书和与证书中公钥匹配的私钥。

证书持有者的身份信息和对应的公钥会出现在证书中。也成为用户。

3)依赖方(Relying Part)

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

4)证书注册机构(Registration Authority,RA)

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

5)资料库(Repository)

用于实现证书分发,负责存储所有的证书,供依赖方下载。

6)证书撤销列表(Certificate Revocation List,CRL)

包含了当前所有被撤销证书的标识。验证者根据最新的CRL就能够判断证书是否被撤销。

7)在线证书状态协议(Online Certificate Status Protocol,OSCP)

一种实时检查证书撤销状态的协议标准。该协议是一种“请求-响应”协议,证书验证者向OCSP服务器查询某一张特定证书是否被撤销,服务器返回的响应消息表明该证书撤销状态(正常,撤销,未知。)

OCSP和CRL都是为了解决证书撤销状态查询的问题,相比较而言,OCSP的实时性更高,部署起来也相对复杂。

8)轻量目录访问协议(Lightweight Directory Access Protocol,LDAP)

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

9)密钥管理系统(Key Management System,KM)

为PKI系统中其他实体提供专门的密钥服务,包括生成,备份,恢复,托管等多种功能。

2.数字证书结构

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

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

证书数据结构由 tbsCertifcate、signatureAlgorithm 和 signatureValue 三个域构成,如图 1-20 所示。在这里插入图片描述
① tbsCertifcate 域包含了主体名称和颁发者名称、主体的公钥、证书的有效期及其他相关信息。

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

③ signatureValue 域包含了对 tbsCertifcate 域进行数字签名的结果。采用 ASN.1 DER 编码的 tbsCertifcate 作为数字签名的输入,而签名的结果则按照 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系统采用的就是双证书体系。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值