公钥基础设施PKI(Public Key Infrastructure)是以不对称秘钥加密技术为基础,以数据机密性,完整性、身份认证,行为不可抵赖性为安全目的,来提供安全服务的具有普遍适用性的安全基础设施。它的主要内容包括数字证书、不对称密码技术、认证中心。证书和秘钥的管理、安全代理软件、不可否认服务、时间戳服务,相关的信息标准等,具体来说,PKI解决了信息传递中一系列必须解决的问题,例如:接收信息的人是否就是应该接收该信息的人?接收信息的人是否具有相应的安全等级来看这些信息?数据在传输和保存时,是否本人暗中修改过?数据的加密措施是否可靠?等等!必须承认,要解决上述问题虽然PKI不是唯一的方案,但是可以说PKI是目前最完善的唯一最可行的技术。PKI的主要构成如下:
第一、数字证书
是由认证机构经过数字签名后发给网上信息交易主体(企业或者个人,设备或者程序)的一段电子文档。这段文档包括主体名称、证书序列号、发证机构名称、证书有效期、秘钥算法标识、公钥和私钥信息等。签名证书和加密证书分开,最常用的证书格式为X.509 v3,x.509的证书结构如下图所示:
X.509证书格式
版本1、2、3
序列号
在CA内部唯一
签名算法标识符
指该证书中的签名算法
签发人名字
CA的名字
有效时间
起始和终止时间
个体名字
个体的公钥信息
算法
参数
密钥
签发人唯一标识符
个体唯一标识符
扩展域
签名
第二、认证中心(CA Certification Atuthority)
CA是PKI的核心。它是公正、权威、可信的第三方网上认证机构,负责数字证书的签发、撤销、生命周期管理、秘钥管理和证书在线查询等服务;CA为使用公开密钥的用户发放数字证书,以此证明证书中列出的用户名称与证书中列出的公开密钥相对应;CA在数字证书上的数字签名使得攻击者不能伪造和篡改数字证书;
CA还负责数字证书的撤销,公布列入CRL的证书
CA的主要职责如下:
接收验证最终用户数字证书的申请。
确定是否接受最终用户数字证书的申请-证书的审批。
向申请者颁发、拒绝颁发数字证书-证书的发放。
接收、处理最终用户的数字证书更新请求-证书的更新。
接收最终用户数字证书的查询、撤销。
产生和发布证书废止列表CRL(Certificate Revocation List) 。
数字证书的归档。
密钥归档。
历史数据归档。
第三、证书注册审批机构(RA Rregistration Authority)
RA是CA的数字证书发放、管理的延伸。它负责数字证书申请者的信息录入、审核、以及数字证书的发放工作,同时对发放的数字证书进行管理。RA系统是整个CA中心正常运营不可缺少的一部分,是CA和用户的接口。
主体注册证书的个人认证,确认主体所提供的信息的有效性。这里的信息可以是书面形式的,也可以是电子形式的。但签发证书所需的公钥必须是电子形式的。
根据请求信息,验证请求者的身份检查请求信息是否完整和正确。如果正确,则进行下一步,否则,退回请求。对该请求分配一个身份识别符,且该身份识别符是唯一的,并对该请求信息、数字公钥和身份识别符进行签名。将上述签名连同以上信息提交给证书机构CA,并把提交信息在本地做一个备份,在这里信息提交的信道应该是加密的,而且对提交的请求应做数字签名
第四、端实体
包括持有者和验证者两种。持有者是证书的拥有者,是证书所声明的主体。持有者向管理实体申请并获得证书,也可以在需要时请求更新或撤销证书。持有者使用证书向对方证实自己的身份,从而获得相应的权利。验证者通常是授权的,确认对方所提供的证书的有效性和对方是否为该证书的真正拥有者,只有在成功鉴别之后才可授权对方。
第五、证书库
证书库中存取的对象是证书和CRL,其完整性由数字签名保证,因此对证书库的操作可在无特殊安全保护的信道上传输。
不同的实体间通过PKI操作完成证书的请求、确认、发布和撤销、更新和获取等过程。PKI操作分为存取操作和管理操作两类。前者涉及管理实体、终端实体与证书库之间的交互,操作的目的是向证书库存放证书和CRL,或从证书库中读取证书和CRL;后者涉及管理实体与端实体之间或管理实体内部的交互,操作的目的是完成证书的各项管理任务和建立证书链。各实体共同构成了一个PKI系统。
第六、其它
秘钥和证书管理工具:管理和审计数字证书的工具,认证中心使用它来管理一个CA上的证书。
双证书体系:PKI采用双证书体系,非对称算法支持RSA和ECC算法,对称秘钥算法支持国家密码管理委员后制定的算法。
产生、验证和分发密钥方式:
用户自己产生密钥对:用户自己生成密钥对,然后将公钥以安全的方式传送给CA,该过程必须保证用户公钥的可验证性和完整性。
CA为用户产生密钥对: CA替用户生成密钥对,然后将其安全地传给用户,该过程必须确保密钥对的机密性、完整性和可验证性。该方式下由于用户的私钥为CA所知,故对CA的可信性要求更高。
CA(包括PAA、PCA、CA)自己产生自己的密钥对
双秘钥证书的生成过程:
1、用户使用客户端产生双秘钥对
2、用户的签名私钥保存在客户端
3、用户将签名秘钥对中的公钥发给CA中心
4、CA中心为用户的公钥签名,产生签名证书
5、CA中心将该签名证书传给客户端保存
6、KMC为用户产生加密秘钥对
7、KMC备份加密秘钥用于密钥恢复
8、CA中心为加密秘钥对生成加密证书
9、CA中心将用户的加密私钥和加密证书打包成标准格式PKCS#12格式
10、将打包后的文件传给客户端
11、用户客户端装入加密公钥证书和加密私钥
用到的关键技术
数字时间戳技术
时间戳是用来标明一个事件发生的日期和时间的一种记号,它一般是同生成该记号的人或机构的身份联系在一起的。这个标记一般被附加在消息的后面,或以某种方式使其与消息形成逻辑上的关联。
时间戳是由交易各方、可信任的第三方以及电信服务提供商们为了某种目的而生成的。
可信任的第三方会让专门的时间戳服务机构在消息或摘要里附上时间数据后,再对结果进行数字签名。这种时间戳就可以用来作为支持不可否认性的证据。
数字签名
利用发信者的私钥和可靠的秘钥算法对待发送信息或者电子摘要进行加密处理,这个过程和结果就称为数字签名。收信者可以利用发信者的公钥对收到的信息进行解密从而辨别真伪。经过数字签名后的信息具有真实性和不可否认性。 如下图所示,显示了一个完整的验证过程:
首先,甲需要验证乙所用证书的真伪。当乙在网络上将证书传送给甲时,甲使用CA的公钥解开证书上的数字签名,如果签名通过验证,则证明乙持有的证书是真的;其次,甲还需要验证乙身份的真伪。乙可以将自己的口令用自己的私钥进行数字签名传送给甲,甲已经从乙的证书中或从证书库中查得了乙的公钥,甲就可以用乙的公钥来验证乙的数字签名,如果该签名通过验证,乙在网络中的真实身份就能够确定,并能获得甲的的信任,反之,当乙确定了甲的真实身份后,甲乙双方就可以建立相互信任关系