Openssl 加密算法库编程精要 11 PKI 体系概述
本章旨在介绍 PKI 体系和支持 PKI 体系的各项标准
参考资料
- Openssl 官方网站
- Openssl 官方文档
- 《PKI/CA 与数字证书技术大全》 – 张明德、刘伟 编著
- 维基百科 – 词条 “PKI”
- 维基百科 – 词条 “PKCS”
- 维基百科 – 词条 “Directory service”
- 维基百科 – 词条 “X.500”
- 《TCP/IP 详解 卷一:协议》– W.RichardStevens 著
- 全国标准信息公共服务平台
11.1 PKI 体系介绍
PKI(Publick Key Infrastructure)中文名为公钥基础设施,它是由用户及组织角色、法律政策、硬件设施、软件设施以及特定的程序组成的一套体系和标准。建立这个体系的目的是为了解决现实世界中各个实体之间在网络上的信任问题和数据的安全通信问题。因此 PKI 被广泛应用在电子政务、电子商务、银行、互联网等多个领域。
PKI 体系依托于数字证书(digital certificate)技术来搭建,数字证书是由一个权威机构为特定的角色颁发,用以证明角色身份的一段电子数据。目前主流的数字证书标准是 X.509 证书标准,该标准定义了数字证书的数据格式。数字证书可以被相关机构创建、管理、分发、存储以及吊销,分发到用户手中的数字证书可以满足用户在网络通信中的身份认证、数据加密、抗抵赖等安全需求。
11.2 数字证书
根据公开密钥算法的特性,已知一段被私钥加密或处理的数据和对应的公钥,可以使用公钥解密出私钥加密的数据,从而证明这对公钥和私钥的对应关系。但是由于公钥是随机产生的,单纯使用公钥并不能直接判断用户的身份,所以 PKI 引入了数字证书来解决这一问题。数字证书包含了用户身份信息,用户的公钥,和权威颁发者的签名。在数字证书颁发时,颁发者会用自己的私钥将整个证书文件加密,结果保存在数字证书里,然后再颁发给用户。第三方机构为了验证该用户的证书合法性,会使用权威颁发者的公钥对证书内容进行验证。
数字证书的权威颁发者称为 CA(Certificate Authority),CA 可以对数字证书进行签发和管理,同时负责对数字证书生命周期的各个阶段进行把控。在实际情况下,CA 有可能会把一部分关于用户申请办理证书理请求、证书吊销或暂停证书的请求、证书审核等业务委托给专门的机构来完成,这个机构被称为 RA(Rigistration Authority)。当然,RA 只负责接受用户请求,并不负责证书的签发,这几个机构的逻辑关系如图所示:
由上图可知,用户会将自己的身份信息提交给 RA 以申请证书,RA 录入并审核完毕后将证书请求提交给 CA,然后 CA 为这个用户生成用户密钥并签发证书,然后用户利用自己的证书访问 “shop.com” ,shop.com 网站会将用户证书提交给 VA(Validation Authority)验证(VA是一个第三方验证机构),验证通过后网站会和用户协商一个随机的会话密钥(Session Key),这个会话密钥用于加解密用户和网站之间的数据,保证用户可以安全的访问网站,这是 PKI 技术的一个典型的应用场景。
11.3 目录服务
CA 中心在签发证书的后会将其保存,为了方便用户可以快速查询和下载证书,PKI 引入了目录服务(directory service)。目录服务又叫名称服务(name service),它是将网络资源的名称映射到各自的网络地址上的一种共享信息基础设施。目录服务主要用于定位、组织以及管理各种资源,这些资源包括卷、文件夹、文件、打印机、用户、用户组、设备、电话号码和其他对象。目录服务是网络操作系统的重要组成部分。
在上世纪 80 年代,ITU 和 ISO 创建了一系列目录服务的标准 X.500,最初是为了支持运营商之间的电子消息传递和网络名称的查找,后来由于完整的 X.500 协议在工程上实现起来过于复杂,且目前网络传输协议多采用 TCP 四层模型,所以 X.500 协议逐渐被更加轻量级的 LDAP(Lightweight Directory Access Protocol)协议替代,成为目前主流的目录访问协议。
对于 LDAP 在 PKI 系统中扮演的角色,我们可以将其看成一个专门存储证书和其用户信息的关系型数据库。之所以选择 LDAP 主要是因为 LDAP 擅长查询数据,查询速度比关系型数据库更快,对于 PKI 体系而言,一旦证书被签发存储,一般情况下是不会轻易修改和删除的,所以大量的业务都集中在查询业务,非常适合采用 LDAP 协议来查询证书。
11.4 PKCS 标准
20世纪90年代初,美国 RSA 公司为了推广他们拥有专利的公开密钥算法技术(比如 RSA 算法)的使用,制定了一系列的技术规范,这些规范被称为 PKCS (Public Key Cryptography Standards)。目前,部分 PKCS 规范已经基本成为业界事实上的行业标准,被大量的引用和实施,PKCS 规范主要包含以下标准:
- PKCS #1: RSA 密码算法标准
- PKCS #2: 并入 PKCS #1 已经撤销
- PKCS #3: DH 密钥协商标准
- PKCS #4: 并入 PKCS #1 已经撤销
- PKCS #5: 基于口令的密码标准
- PKCS #6: 扩展证书的语法标准
- PKCS #7: 密码消息语法标准
- PKCS #8: 私钥信息语法标准
- PKCS #9: 可供选择的属性类型
- PKCS #10: 证书请求语法标准
- PKCS #11: 密码 Token 接口标准
- PKCS #12: 个人信息交换语法标准
- PKCS #13: 椭圆曲线密码标准(基本被废弃了)
- PKCS #14: 伪随机数生成(基本被废弃)
- PKCS #15: 密码 Token 信息格式标准
11.5 国家信息安全技术系列规范
我们国内也为建立 PKI 体系出台了大量相应的标准,这些标准大多由全国信息安全标准化技术委员会牵头制订,部分标准如下所示:
- 《信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则》
- 《信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法》
- 《信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议》
- 《信息安全技术 SM2椭圆曲线公钥密码算法 第4部分:公钥加密算法》
- 《信息安全技术 SM2椭圆曲线公钥密码算法 第5部分:参数定义》
- 《信息安全技术 SM2密码算法使用规范》
- 《信息安全技术 SM2密码算法加密签名消息语法规范》
- 《信息安全技术 SM3密码杂凑算法》
- 《信息安全技术 SM4分组密码算法》
- 《信息安全技术 密码应用标识规范》
- 《信息安全技术 智能密码钥匙应用接口规范》
- 《信息安全技术 密码设备应用接口规范》
- 《信息安全技术 公钥基础设施 数字证书格式》
- 《信息安全技术 公钥基础设施 时间戳规范》
- 《信息安全技术 公钥基础设施 电子签名格式规范》
- 《信息安全技术 公钥基础设施 标准符合性测评》
- 《信息安全技术 公钥基础设施 桥CA体系证书分级规范》
- 《信息安全技术 公钥基础设施 数字证书策略分类分级规范》
- 《信息安全技术 公钥基础设施 远程口令鉴别与密钥建立规范》
- 《信息安全技术 公钥基础设施 签名生成应用程序的安全要求》
还有很多其他的国标,这里不一一列出,有兴趣的读者可以查阅官方网站阅读。