Skip to content

Latest commit

 

History

History
64 lines (36 loc) · 8.44 KB

File metadata and controls

64 lines (36 loc) · 8.44 KB

PKI体系

公开密钥基础设施 (Public key infrastructure)简称PKI,又称公开密钥基础架构、公钥基础设施或公钥基础架构,是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书。能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。简单来说PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务,包括身份证书和密钥管理、机密性、完整性、身份认证和数字签名等。

PKI提供了一种安全体系,通过一系列的手段来保证通信双方的安全可靠,PKI是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架,并不代表某个特定的密码学技术和流程。实现了 PKI 规范的平台可以安全可靠地管理网络中用户的密钥和证书。目前包括多个具体实现和规范,知名的有 RSA 公司的 PKCS(Public Key Cryptography Standards)标准和 OpenSSL 等开源工具。

这一套安全体系对于区块链来说并不是必须的,对于公链来说数字证书认证机构 (CA)显然太过于中心化了,并不符合公链的设计思想。但是对于联盟链或者私有链来说,多个机构可以自建CA,大大提高了区块链系统的安全性,也易于对链上数据进行审计,监管。基于这些优势联盟链大多都采用PKI体系,其中最为典型的例子就是超级账本(Hyperledger Fabric)。

PKI 通过数字证书认证机构 (CA) 将用户的个人身份跟公开密钥链接在一起。对每个证书中心用户的身份必须是唯一的。链接关系由注册和发布过程确定,取决于担保级别,链接关系可能由 CA 的各种软件或在人为监督下完成。

  • 节点1:被称为订阅人或者叫最终实体,是指那些需要证书来提供安全服务的团体,维护服务端的人。

  • 登记机构 (registration authority - RA): 主要是完成一些证书签发的相关管理工作。例如, RA 会首先对用户进行必要的身份验证,然后才会去找 CA 签发证书。在某些情况下,当 CA 希望在用户附近建立一个分支机构时(例如在不同的国家建立当地登记中心),我们也称 RA 为本地登记机构(local registration authority,LRA)。实际上,很多 CA 也执行 RA 的职责。RA 确保公开密钥和个人身份链接,可以防抵赖。

  • 凭证签发请求文件 (Certificate Signing Request - CSR): 一种包含凭证签发时所需的公钥、组织信息、个人信息 (域名) 等信息的 (.csr) 文件,不含私钥信息。

  • 证书颁发机构 (certification authority - CA): 是指我们都信任的证书颁发机构,CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等,确认申请用户的身份之后再签发证书。同时 CA 会在线提供其所签发证书的最新吊销信息,这样信赖方就可以验证证书是否仍然有效。

  • 证书 (certificate) 包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名(使用散列函数计算公开的明文信息的信息摘要,然后采用 CA 的私钥对信息摘要进行加密,此密文即签名)。证书 = 公钥 + 申请者与颁发者信息 + 签名

  • 节点2:也被称为信赖方 (relying party)是指那些证书使用者。一般是指那些需要证书验证的网页浏览器、其他程序以及操作系统。他们通过维护根可信证书库来执行验证,这些证书库包含某些 CA 的最终可信证书(信任密钥,trust anchor)。更广泛地说,信赖方是指那些需要通过证书在互联网上进行安全通信的最终用户。用户接收到证书后,读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性;然后去查询证书的吊销情况。

  • 证书吊销列表 (Certificate Revocation List - CRL): 一个单独的文件。该文件包含了 CA 已经吊销的证书序列号 (唯一) 与吊销日期,同时该文件包含生效日期并通知下次更新该文件的时间,当然该文件必然包含 CA 私钥的签名以验证文件的合法性。证书中一般会包含一个 URL 地址 CRL Distribution Point,通知使用者去哪里下载对应的 CRL 以校验证书是否吊销。该吊销方式的优点是不需要频繁更新,但是不能及时吊销证书,因为 CRL 更新时间一般是几天,这期间可能已经造成了极大损失。

  • 证书状态在线查询协议 (Online Certificate Status Protocol - OCSP): 一个实时查询证书是否吊销的方式。请求者发送证书的信息并请求查询,服务器返回正常、吊销或未知中的任何一个状态。证书中一般也会包含一个 OCSP 的 URL 地址,要求查询服务器具有良好的性能。部分 CA 或大部分的 自签 CA (根证书) 都是未提供 CRL 或 OCSP 地址的,对于吊销证书会是一件非常麻烦的事情。

在一个依赖PKI体系的区块链中,每个节点既作为订阅人又作为信赖方,为其他节点提供安全服务的同时又为信赖其它节点。

证书链

CA 根证书和服务器实体证书中间增加一层证书机构,即中介证书,证书的产生和验证原理不变,只是增加一层验证,只要最后能够被任何信任的 CA 根证书验证合法即可

服务器证书 server.pem 的签发者为中间证书机构 inter,inter 根据证书 inter.pem 验证 server.pem 确实为自己签发的有效证书; 中间证书 inter.pem 的签发 CA 为 root,root 根据证书 root.pem 验证 inter.pem 为自己签发的合法证书; 客户端内置信任 CA 的 root.pem 证书,因此服务器证书 server.pem 被信任。

通过浏览器可以比较直观的看到申请过CA认证网站的证书链,以必应(cn.bing.com)为例,点击浏览器地址栏的小锁就可以查看网站的证书链。

二级证书结构存在的优势:

  • 减少根证书结构的管理工作量,可以更高效的进行证书的审核与签发;
  • 根证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救;
  • 中介证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书;
  • 证书链四级以内一般不会对 HTTPS 的性能造成明显影响;

服务器一般提供一条证书链,但也有多条路径的可能。以 交叉证书 为例,一条可信路径可以一直到 CA 的主要根证书,另外一条则是到可选根证书上。 CA 有时候会为同样的密钥签发多张证书,例如现在最常使用的签名算法是 SHA1,因为安全原因正在逐步迁移到 SHA256, CA 可以使用同样的密钥签发出不同签名的新证书。如果信赖方恰好有两张这样的证书,那么就可以构建出两条不同的可信路径。

本章小节

在这一章中,我们介绍了由{ M,C,K,E,D }构成的基本密码体系,讨论了如何通过TLS/SSL安全传输层协议, ECDH密钥协商算法,数字证书认证等方式,解决网络连接中窃听,篡改,冒充的风险, 保证了网络连接安全性。我们日常访问网站,发送邮件都用到了这些技术。比特币,以太坊,超级账本等区块链平台除了在网络通信之外,在交易,智能合约,共识模块中也大量的采用了这些技术。

当我们有能力基于这些技术建立一个双向的可信连接后,就可以在这个基础上继续扩展,建立更大范围的可信网络。

Links

目录