PKI基础知识概述

各位好,我是老张。做PKI相关开发这些年,踩过不少坑,也攒了不少经验。这一章我们先把地基打牢——公钥基础设施到底是个啥?它由哪些零件组成?信任怎么建立?密码学背后那几套核心算法又是怎么工作的?

说白了,PKI就是一套“数字身份证”的发行与管理体系。你想想看,互联网上两个人没见过面,怎么确认对方就是声称的那个人?怎么保证传输的消息没被篡改?PKI就是解决这些问题的。

1.1 公钥基础设施定义

公钥基础设施(Public Key Infrastructure,简称PKI)是一套结合了硬件、软件、策略和服务的完整框架。它的核心目标是为网络通信提供身份认证、数据完整性、机密性和不可否认性。

我个人习惯把它理解成“数字世界的公安户籍系统”。公安局发身份证(数字证书)、存档指纹(公钥)、提供查询(证书库)、吊销证件(证书撤销)。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 信任模型

信任模型解决“凭什么相信这个证书”的问题。常见的模型有三种,我按实际项目中的使用频率排个序:

  1. 层次信任模型(Hierarchical):最常用。一个根CA,下面挂二级CA,再挂终端实体。信任链条从根一路传递下来。根CA自签名,所有信任最终锚定在根证书上。
  2. 网状信任模型(Mesh/Web of Trust):节点之间相互交叉认证。PGP就是这种。适合小圈子,但大规模管理起来复杂度爆炸。
  3. 桥CA模型(Bridge CA):不同PKI域之间通过一个“桥”建立跨域信任。政府部门之间经常用,我几年前给某省政务平台做对接就用了这个方案。
我的建议: 跨平台SDK做兼容测试时,优先测试层次信任模型。90%的企业客户都用这个。网状和桥CA场景相对少,但遇到了千万不要简化——我曾经因为没测桥CA的路径构建,导致客户生产环境证书验证失败。

1.4 核心密码学概念

PKI的底层是密码学。你不需要成为密码学专家,但这些概念必须吃透。我见过不少开发把对称加密和非对称加密混为一谈,调试时一头雾水。

对称加密

加密和解密用同一个密钥。速度快,适合加密大量数据。常见算法:AES、DES、SM4(国密)。
缺点:怎么把密钥安全传给对方?——这就是PKI要解决的核心问题之一。

注意: 在SDK兼容测试中,对称加密的密钥长度、工作模式(如GCM、CBC)、IV处理方式都容易因平台差异出问题。我踩过iOS和Android在AES-GCM nonce截断规则不一致的坑,非常隐蔽。

非对称加密

用公钥加密,私钥解密(反之亦然)。公钥可以公开,私钥必须保密。常见算法:RSA、ECC、SM2。速度慢,适合加密小数据或用于密钥交换。

为什么需要两种?举个例子:用非对称加密安全地协商出一个对称密钥,然后用对称密钥加密业务数据。这就是混合加密。SSL/TLS就是这么干的。

哈希(Hash)

把任意长度的数据映射成固定长度的摘要。不可逆、防碰撞。常见算法:SHA-256、SM3。哈希本身不提供机密性,但可以保证完整性——文件变了,哈希值就会变。

我习惯把哈希比喻成“数据指纹”。两个人比对指纹就能知道是不是同一份文件,不需要看全文。

数字签名

签名过程:先对消息做哈希,然后用签名者的私钥加密哈希值。验证过程:用公钥解密得到哈希值,再对比自己算的哈希值。相等则签名有效。

数字签名提供了三个保证:

  • 完整性:消息没被改过
  • 身份认证:确实是私钥持有者签的
  • 不可否认性:签名者不能抵赖

你想想看,数字证书本身就是一份被CA签名的数据。CA用自己的私钥给你的公钥和其他信息签名,得到证书。别人拿到证书后用CA公钥验证,就相信你的公钥是真的。这就是PKI的核心逻辑。

1.5 PKI整体框架图

下面这张SVG图把PKI的组成要素和核心流程串起来了。画的是常见的企业级层次信任模型,你可以对照着理解。

PKI 基础架构与信任链 根CA(自签名) 二级CA RA(注册机构) 证书库 终端实体 A(服务器) 终端实体 B(客户端) 底层密码学支撑 对称加密(AES) | 非对称加密(RSA/ECC) | 哈希(SHA-256) | 数字签名 审核请求 发布证书 TLS 握手(证书交换)
看图提示: 信任流向是自上而下的:根CA信任二级CA,二级CA信任终端实体。RA负责审核但不上链。证书库作为基础设施为所有实体提供证书查询服务。底层密码学为每一层提供安全算法支撑。

1.6 本章总结

PKI不是某个单一技术,而是一个体系。它的核心构成包括CA、RA、证书库和终端实体。信任模型决定了证书验证的路径。而对称加密、非对称加密、哈希和数字签名这四块密码学基石,支撑起整个PKI的安全能力。

做跨平台SDK兼容测试时,每到一个新平台,我建议先确认它对证书格式(DER/PEM)、密钥长度、签名算法的支持情况。别等到上层接口调通了,才发现底层算法不兼容——这种坑我填了不止一次。