PKI,全称是Public Key Infrastructure,可译为公钥基础设施。它是因特网中节点通信的安全保障机制,HTTPS中的‘S’就来源于PKI。
要去学习一个技术,首先要从它的源头考虑——为什么需要PKI?它存在的价值是什么?我们知道,在网络通信或电子商务中,信息交互的双方需要保证对方真的是自己想要通信的人,以及通信的内容没有被篡改过,即(1)信息源头可靠(2)信息内容可靠。就此,才发展出了一套安全的通信机制PKI,说它是机制,因为它不是一项单一的技术,而是一系列安全技术的组合品,首先我们来看它的架构:
先来总体介绍PKI架构,我们先它的4个关键组成元素:
(1)Certificate Authority(证书授权机构):负责发放证书的机构
(2)Digital Certificate(电子证书):证明用户身份的电子证明,由Certificate Authority发放(通常遵循X.509标准)
(3)Public key & Private key(公钥&私钥):每个用户的公钥和私钥,其中公钥包含在由CA授予的Digital Certificate中
(4)Certificate Revocation List(撤销证书列表):列出哪些用户的证书已经被撤销,不再有效。由CA负责保存
一上来引入这些概念和名词似乎会让人摸不到头脑,这和我们所说的安全通信有什么关系,这些东西组合到一起怎么就能保证我们的通信安全了?要理清这个问题,我们还要理清这中间省略的一部分逻辑。
在Fabric网络中,要求节点提供自己的身份证明,通过Identity这种机制来管理组织的访问权限,让我们从最基本的技术开始推演。我们首先想到的就是用非对称密钥对中的私钥来对自己传输的信息进行签名,然后信息的接受方要想认证发送者身份的有效性只要用发送方的公钥来进行解密,那就可以确认对方的身份,这就是基本的数字签名的思路。但是这种基本的方法有一个关键的缺陷,即我们并不知道我们获取到“公钥”是否就是发送者自己的,为了解决对公钥的信任问题,我们就引入了CA(Certificate Authority)证书授权机构来对网络节点使用的公钥授予信任,(通过发放证书的形式)而这个CA,也就是PKI机制的信任基础。
CA给注册申请Identity的组织或个人颁发电子证书来证明他们的身份,证书中包含了证书持有者的用户名、公钥信息、有效期以及CA自身的数字签名等。同时CA还提供密钥的管理功能,包括密钥的产生、密钥的备份和恢复以及密钥的更新。
其中CA还要维护一份CRL(Certificate Revocation List),该list记录了除了因证书过期外其他一切原因而撤销的证书信息,通常存储在CA系统的LDAP服务上供用户查询和下载,当然,CRL还在通信时检验证书是否是有效的过程中起关键作用。
如此,我们再回到开头,PKI机制,顾名思义,为网络安全通信中公钥信任问题提供了一套完整的解决方案,基于这个机制,可以和其他的很多技术或机制配合,在不同的应用中来构建自己的安全通信体系。