PKI基础知识概述
各位好,我是老张。做PKI相关开发这些年,踩过不少坑,也攒了不少经验。这一章我们先把地基打牢——公钥基础设施到底是个啥?它由哪些零件组成?信任怎么建立?密码学背后那几套核心算法又是怎么工作的?
说白了,PKI就是一套“数字身份证”的发行与管理体系。你想想看,互联网上两个人没见过面,怎么确认对方就是声称的那个人?怎么保证传输的消息没被篡改?PKI就是解决这些问题的。
1.1 公钥基础设施定义
公钥基础设施(Public Key Infrastructure,简称PKI)是一套结合了硬件、软件、策略和服务的完整框架。它的核心目标是为网络通信提供身份认证、数据完整性、机密性和不可否认性。
我个人习惯把它理解成“数字世界的公安户籍系统”。公安局发身份证(数字证书)、存档指纹(公钥)、提供查询(证书库)、吊销证件(证书撤销)。PKI干的事,本质上跟这个一模一样。
1.2 组成要素
PKI有四个核心组件,缺一不可。我在项目中见过只搭了CA就上线的情况,结果证书出问题没人能管,最后整个系统崩了。
| 组件 | 英文全称 | 职责 | 真实世界类比 |
|---|---|---|---|
| CA | Certificate Authority | 签发、管理、吊销证书 | 公安局户籍科 |
| RA | Registration Authority | 审核申请者身份,不一定签证书 | 派出所/街道办事处 |
| 证书库 | Certificate Repository | 存储证书和CRL,支持查询 | 全国人口信息库 |
| 终端实体 | End Entity | 证书持有者或依赖方 | 你我他 |
CA(证书颁发机构)
CA是PKI的核心。它负责生成自签名根证书、签发下级CA证书或终端用户证书、维护证书撤销列表(CRL)。我曾经遇到过一个项目,CA服务器时间没同步NTP,签出来的证书有效期全是错的……嗯,从那以后我每次部署CA都会先检查系统时间。
RA(注册机构)
RA负责身份验证。比如你申请一张企业证书,RA会核实营业执照、域名所有权等。RA不做加密签名,只做审核。审核通过后把请求转给CA。说白了,RA帮CA分担脏活累活。
证书库
证书库通常是一个LDAP目录或Web服务器,存放已颁发的证书和CRL。依赖方可以通过证书库拿到公钥、验证证书状态。注意,证书库不需要加密保护,但必须高可用——证书查不到比查不到更麻烦。
1.3 信任模型
信任模型解决“凭什么相信这个证书”的问题。常见的模型有三种,我按实际项目中的使用频率排个序:
- 层次信任模型(Hierarchical):最常用。一个根CA,下面挂二级CA,再挂终端实体。信任链条从根一路传递下来。根CA自签名,所有信任最终锚定在根证书上。
- 网状信任模型(Mesh/Web of Trust):节点之间相互交叉认证。PGP就是这种。适合小圈子,但大规模管理起来复杂度爆炸。
- 桥CA模型(Bridge CA):不同PKI域之间通过一个“桥”建立跨域信任。政府部门之间经常用,我几年前给某省政务平台做对接就用了这个方案。
1.4 核心密码学概念
PKI的底层是密码学。你不需要成为密码学专家,但这些概念必须吃透。我见过不少开发把对称加密和非对称加密混为一谈,调试时一头雾水。
对称加密
加密和解密用同一个密钥。速度快,适合加密大量数据。常见算法:AES、DES、SM4(国密)。
缺点:怎么把密钥安全传给对方?——这就是PKI要解决的核心问题之一。
非对称加密
用公钥加密,私钥解密(反之亦然)。公钥可以公开,私钥必须保密。常见算法:RSA、ECC、SM2。速度慢,适合加密小数据或用于密钥交换。
为什么需要两种?举个例子:用非对称加密安全地协商出一个对称密钥,然后用对称密钥加密业务数据。这就是混合加密。SSL/TLS就是这么干的。
哈希(Hash)
把任意长度的数据映射成固定长度的摘要。不可逆、防碰撞。常见算法:SHA-256、SM3。哈希本身不提供机密性,但可以保证完整性——文件变了,哈希值就会变。
我习惯把哈希比喻成“数据指纹”。两个人比对指纹就能知道是不是同一份文件,不需要看全文。
数字签名
签名过程:先对消息做哈希,然后用签名者的私钥加密哈希值。验证过程:用公钥解密得到哈希值,再对比自己算的哈希值。相等则签名有效。
数字签名提供了三个保证:
- 完整性:消息没被改过
- 身份认证:确实是私钥持有者签的
- 不可否认性:签名者不能抵赖
你想想看,数字证书本身就是一份被CA签名的数据。CA用自己的私钥给你的公钥和其他信息签名,得到证书。别人拿到证书后用CA公钥验证,就相信你的公钥是真的。这就是PKI的核心逻辑。
1.5 PKI整体框架图
下面这张SVG图把PKI的组成要素和核心流程串起来了。画的是常见的企业级层次信任模型,你可以对照着理解。
1.6 本章总结
PKI不是某个单一技术,而是一个体系。它的核心构成包括CA、RA、证书库和终端实体。信任模型决定了证书验证的路径。而对称加密、非对称加密、哈希和数字签名这四块密码学基石,支撑起整个PKI的安全能力。
做跨平台SDK兼容测试时,每到一个新平台,我建议先确认它对证书格式(DER/PEM)、密钥长度、签名算法的支持情况。别等到上层接口调通了,才发现底层算法不兼容——这种坑我填了不止一次。