1.11 PKI体系
公开密钥基础设施(Public Key Infrastructure,PKI),又称公开密钥基础架构、公钥基础设施或公钥基础架构。PKI是软件和硬件及管理政策与流程组成的基础架构,其目的在于有效地对数字证书进行创造、分配、使用、存储和撤销。PKI能够为所有的网络应用提供加密和数字签名等密码服务需要的密钥和证书。简单来说,PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务。
PKI体系是一种安全体系,通过一系列的手段来保证通信双方的安全可靠,PKI体系建立在公私钥基础之上,是实现安全可靠传递消息和身份确认的一个通用框架,并不代表某个特定的密码学技术和流程。实现了PKI体系的平台可以安全可靠地管理网络中用户的密钥和证书。目前PKI体系包括多个具体规范和实现,知名的有RSA公司的PKCS(Public Key Cryptography Standards)规范和OpenSSL开源实现。
PKI体系对于区块链来说并不是必要的。对于公有链来说,CA显然过于中心化,并不符合公有链的设计思想。但是对于联盟链或私有链来说,多个机构可以自建CA或接入现有成熟CA,大大提高了区块链系统的安全性,也易于对链上数据进行审计和监管。基于这些优势,联盟链大多都采用PKI体系,其中典型的例子是超级账本(Hyperledger Fabric)。
PKI体系通过CA将用户的个人身份与公钥链接在一起,对于每个证书中心来说,用户的身份必须是唯一的。链接关系由注册和发布过程确定,链接关系可以由CA的各种软件或在人为监督下完成。PKI体系如图1-6所示。
节点1:被称为订阅人或最终实体,是指那些需要证书来提供安全服务的团体或服务端节点。
登记机构(Registration Authority,RA):主要完成一些证书签发的相关管理工作。例如,RA首先会对用户进行必要的身份验证,然后才会去找CA签发证书。在某些情况下,当CA希望在用户附近建立一个分支机构时(如在不同的国家建立当地登记中心),我们也称RA为本地登记机构(Local Registration Authority,LRA)。实际上,很多CA也执行RA的职责。RA确保公钥和个人身份链接,可以防止抵赖。
图1-6 PKI体系
证书签名申请(Certificate Signing Request,CSR):一种包含证书签发时所需的公钥、组织信息、个人信息(域名)等资料的文件,需要特别说明的是CRS不含私钥信息。
证书颁发机构(Certification Authority,CA):是指双方都信任的证书颁发机构。CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法、是否拥有域名的所有权等,待确认申请者的身份之后再签发证书。同时,CA会在线提供其所签发证书的最新吊销信息,这样信赖方就可以验证证书是否仍然有效。
证书(Certificate)包含申请者公钥、申请者的组织信息和个人信息、CA的信息、有效期、证书序列号等信息的明文,同时包含一个签名(使用散列函数计算公开的明文信息的信息摘要,然后采用CA的私钥对信息摘要进行加密,此密文即签名)。简单来说,证书=公钥+申请者与颁发者信息+签名。
节点2:也被称为证书的信赖方(Relying Party),是指证书的使用者,一般是指那些需要证书验证的网页浏览器、其他程序及操作系统。信赖方通过维护可信自签名证书库来执行验证,这些证书库中包含某些CA的最终可信证书(信任密钥)。更广泛地说,信赖方是指那些需要通过证书在互联网上进行安全通信的最终用户。用户接收到证书后,读取证书中的相关明文信息,采用相同的散列函数计算得到信息摘要,然后利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性。验证证书合法后,还要去查询证书的吊销情况。证书超出有效期后会作废,或者用户可以主动向CA申请吊销某证书文件。由于CA无法强制收回已经颁发出去的证书,因此,为了实现证书的作废,往往还需要维护一个吊销证书列表(Certificate Revocation List,CRL),用于记录已经吊销的证书序列号。
证书吊销列表:一个单独的文件。该文件包含CA已经吊销的证书序列号(唯一)与吊销日期,同时该文件包含生效日期和下次更新该文件的时间,当然该文件必然包含CA私钥的签名以验证文件的合法性。证书中一般会包含一个URL地址,通知使用者去哪里下载对应的CRL以校验证书是否吊销。这种吊销方式的优点是不需要频繁更新,但是不能及时吊销证书。因为CRL更新时间一般是几天,这期间可能已经造成了极大损失。
为了方便同步CRL信息,IETF提出了在线证书状态协议(Online Certificate Status Protocol,OCSP):一个实时查询证书是否吊销的方式。请求者发送证书的信息并请求查询,服务器返回正常、吊销或未知中的任何一个状态。证书中一般也会包含一个OCSP的URL地址,要求查询服务器是否具有良好的性能。部分CA或大部分的CA自签名证书都是未提供CRL地址或OCSP的,这对于吊销证书会是一件非常麻烦的事情。
在一个依赖PKI体系的区块链中,每个节点既作为数字证书的订阅人,又作为数字证书的信赖方,为其他节点提供安全服务的同时信赖其他节点。
在以超级账本为代表的联盟链中依赖PKI体系实现区块链网络的节点证书的管理,以此来达到对网络节点进行准入的目的。在超级账本项目中,既允许启动超级账本项目提供的Fabric CA,又允许和用户已有的CA系统进行结合。