PKI 是一个看似复杂但逻辑非常清晰的体系。要真正理解它,需要从一个根本性的问题出发:在一个互不相识的网络世界里,两个人如何安全地建立信任?
这个问题的答案,是几千年密码学演进的终点,也是 PKI 诞生的起点。
一、密码学简史:从古代战场到信息时代
传统密码学:换位与替换
密码技术最早的驱动力是军事保密通信。传统密码学只有两种基本手法:
| 类型 | 原理 | 典型案例 |
|---|---|---|
| 换位加密 | 不改变字符本身,只改变排列顺序 | 古希腊 Scytale 棒、中国藏头诗 |
| 替换加密 | 保持顺序,用其他符号替换原字符 | 凯撒密码(单表)、维吉尼亚密码(多表) |
公元9世纪,阿拉伯数学家肯迪在《解码手册》中提出频率分析法:不同字母在文本中出现的频率是固定的,通过统计密文中字符频率就能推导出替换规则。这一方法成为破解单表替换密码的利器,也推动了多表替换密码的发展。
两次世界大战将密码学推向了机械化时代。德国“隐谜”密码机、英国“炸弹”破译机——这场以数学和电气工程为武器的博弈,标志着传统手工密码的终结。
现代密码学:三类算法
二战结束后,随着计算机的出现,密码学完成了一次彻底的范式转变。加密对象从“文字书写”变成了“数字化比特流”,数学成为核心工具。
现代密码学的设计遵循科考夫原则(Kerckhoffs’s Principle):即使算法和系统设计公开,只要密钥仍然安全,密码系统也应保持安全。密钥保密是核心前提,但实现质量、随机数、参数选择和密钥生命周期同样会影响最终安全性。
现代密码学按技术特征分为三类:
1. 对称算法(密码密钥算法 / 单密钥算法)
加密密钥和解密密钥相同,又分为:
- 流密码:生成密钥流并与数据组合;RC4 是历史代表,但已不应在新系统中使用
- 分组密码:将明文分成固定长度的块处理,现代常见算法包括 AES、SM4;DES 只适合作为历史案例
对称加密速度快,适合大量数据加密,但密钥分发是核心难题——双方要在安全的前提下共享同一个密钥。
2. 非对称算法(公钥算法)
加密密钥和解密密钥不同,一个可公开(公钥),另一个必须保密(私钥)。从公钥很难推导出私钥。代表算法:RSA、ECC、SM2。
公钥密码从根本上改变了密钥管理方式:公钥不需要保密,但仍需解决“如何确认这把公钥确实属于目标主体”的真实性问题。
3. 摘要算法(哈希函数)
将任意长度的输入转化为固定长度的输出(哈希值),通常不使用密钥。MD5、SHA-1 是重要的历史算法,但其抗碰撞能力已不适合新的数字签名系统;现代方案应根据适用标准选择 SHA-2、SHA-3、SM3 等算法。
用途:验证数据完整性(内容一旦改变,哈希值就会变化)。
二、密钥管理:从对称到非对称
密钥生命周期
在算法公开的现代密码学中,安全性的核心是密钥安全。密钥管理覆盖其整个生命周期:
针对口令或密钥空间的常见猜测方式:
- 穷举攻击:尝试所有可能的密钥组合
- 字典攻击:只尝试人们最常用的密码集合
这只是密钥攻击的一部分。真实系统还要面对随机数缺陷、私钥窃取、侧信道、错误配置和社会工程等风险;除了选择足够的密钥长度,还需要可靠的随机源、受控存储、用途分离、轮换和审计。
密钥备份的三种方式:
- 密钥托管:交第三方中心保管
- 密钥分割:拆成碎片分开存储,合并才能使用
- 密钥共享(门限方案):拆成 n 份,知道任意 m 份即可恢复,知道少于 m 份则无法恢复
对称密钥管理的瓶颈
对称密钥管理常见的两种组织方式各有明显扩展性代价:
| 模式 | 密钥数量 | 核心问题 |
|---|---|---|
| 无中心模式 | 最多 N(N-1)/2 对 | 如果任意两方都使用独立共享密钥,用户数增加时密钥数量快速增长 |
| 有中心模式 | 约 N 个长期共享密钥 | 建立新会话通常依赖在线密钥分发中心,中心的可用性和安全性成为系统风险 |
非对称密钥管理的优势与残留问题
公钥可以公开,解决了密钥传输泄露的风险——但仍有一个关键问题没有解决:
如何证明一个公钥确实属于某个特定的人,而不是被人伪造或替换?
这就是 PKI 要解决的核心问题。
三、PKI 的本质:把非对称密钥管理标准化
PKI(Public Key Infrastructure,公钥基础设施)通过引入一系列标准化组件,解决了“公钥与用户映射关系容易被篡改”的问题,同时解决了集中服务性能瓶颈和脱机状态查询等问题。
核心组件
CA(证书权威)
CA(Certification Authority)是 PKI 中负责签发证书的关键角色。它拥有自己的签发密钥,使用私钥为用户、设备或下级 CA 签发数字证书。
数字证书的签发过程:
- 将用户身份信息 + 用户公钥,按特定格式组成数据 D
- 根据证书模板确定签名算法及参数
- CA 使用私钥和该签名算法对 D 生成数字签名 S;算法内部通常包含摘要与签名编码步骤
- 将身份信息、公钥信息和签名 S 打包成数字证书
CA 对证书进行全生命周期管理:签发、更新、吊销和状态发布;部分业务系统还会在自身管理层实现冻结/解冻等状态。
数字证书
数字证书是一种经过签名的结构化数据对象;PKI 中最常见的是 X.509 证书。它包含三类信息:
- 用户身份信息:姓名/名称、单位、城市、国家等
- 用户公钥信息:与私钥对应的公钥
- CA 私钥的数字签名:防伪标记
数字证书的两个关键特性:
- 防伪性:用 CA 公钥验证签名,立即可知是否被篡改
- 可分发性:证书不包含私钥,通常需要提供给验证方;但 Subject、SAN 或自定义扩展可能包含个人信息或内部标识,发布范围仍需遵守隐私和业务策略
可以把数字证书暂时理解成“公钥的身份证明”,但这个类比有边界:证书是否被接受,最终取决于验证方预置的信任锚、证书策略和具体业务规则。
CA 自签名证书:根 CA 常用自签名证书承载自己的名称、公钥和约束信息,但自签名本身不会自动产生信任。根证书之所以成为信任锚,是因为它通过操作系统、浏览器、企业配置或其他可信的带外渠道被预先接受。
【重要】密钥对的归属:谁的钥匙归谁用
PKI 中同时存在多个相互独立的密钥对,初学时很容易把它们混为一谈。理清这一点是理解整个体系的关键。
从角色上看,至少有两类相互独立的密钥对:CA 的签发密钥,以及证书主体的一组或多组业务密钥:
| CA 的密钥对 | 用户的密钥对 | |
|---|---|---|
| 私钥由谁控制 | CA 自己控制,绝不对外 | 用户或其受控设备控制 |
| 私钥的用途 | 给用户证书“盖章”(签名) | 用户签署数据 / 解密数据 |
| 公钥的用途 | 让任何人验证证书是否被篡改 | 让任何人向用户加密数据 / 验证用户签名 |
| 公钥存放在哪 | CA 证书或验证方的信任锚信息中 | 用户的数字证书里 |
CA 密钥与用户密钥之间没有数学派生关系。在双证书体系中,同一用户还会分别持有签名密钥和加密密钥。
证书申请流程(从密钥视角看):
关键一句话:证书里的公钥是用户自己的公钥 PK_用户,CA 只是用自己的私钥给这个证书盖了个章。CA 的私钥本身从不出现在证书中,只有 CA 的签名出现。
**验证证书时:**验证方使用签发者证书中的公钥执行签名验证,并继续构建到本地信任锚的认证路径。签名正确只能证明证书内容与签发时一致;还要检查路径、有效期、吊销状态、用途和业务授权。
KMC(密钥管理中心)
当解密私钥丢失时,使用对应公钥加密的数据可能永久无法恢复。在书中介绍的国内双证书体系中,KMC(Key Management Center)负责加密密钥的生成、托管、备份和恢复。KMC 不是所有 PKIX 部署都必须具有的通用组件。
这引出一组相互冲突的需求:
- 签名私钥:强调签名人专有控制,通常不应由中心托管恢复
- 加密私钥:业务可能要求可恢复,否则历史密文会永久丢失
书中的体系用双证书机制分离这两类职责:
| 签名证书 | 加密证书 | |
|---|---|---|
| 用途 | 仅用于签名/验签 | 仅用于加密/解密 |
| 密钥对由谁生成 | 用户自己(或硬件设备内部) | KMC |
| 证书中的公钥 | 用户自己的公钥 PK_sign | KMC 生成的公钥 PK_enc |
| 私钥交给谁 | 留在用户手里,KMC 不知道 | KMC 移交给用户,KMC 保留备份 |
| CA 知道私钥吗 | 不知道(从不接触 SK_sign) | 不知道(SK_enc 由 KMC 生成和托管) |
| 备份策略 | 通常不由 KMC 托管,恢复能力受严格限制 | KMC 加密备份,经授权流程恢复 |
| 目的 | 强化专有控制,降低身份冒用风险 | 保证可恢复性,防止数据丢失 |
在这种双证书部署中,三个角色各司其职:CA 使用自己的 SK_CA 签发证书;用户 控制签名私钥;KMC 按策略生成、托管和恢复加密私钥。具体申请、交付和恢复流程由系统设计及 CP/CPS 决定,并非所有 PKI 都采用同样编排。
LDAP(轻量目录访问协议)
证书和 CRL 可以发布到独立的 Repository,避免让外部查询直接访问 CA 核心系统。LDAP 是一种访问分布式目录服务的协议,沿用了 X.500 的数据与服务模型,并以更轻量的方式运行在 TCP/IP 等传输之上。它适合组织和检索目录条目,但具体性能取决于实现、索引、复制和部署方式,协议本身不承诺固定的读写性能倍数。
CRL 与 OCSP:证书状态查询
当用户私钥泄露,CA 需要将该证书标记为失效。用户如何知道对方证书是否失效?
CRL(证书作废列表,Certificate Revocation List)
- 包含:已吊销证书的标识与时间等信息 + 下次 CRL 生成时间 + CRL 签发者签名
- CA 定期生成,用户下载后可本地脱机验证
- 缺点:存在滞后性——私钥泄露到下次 CRL 生成之间有时间窗口
OCSP(在线证书状态协议,Online Certificate Status Protocol)
- 相比周期性下载 CRL,可以提供更及时的状态信息
- 用户查询 CA 授权的 OCSP Responder,获得带时间信息和签名的
good、revoked或unknown响应 - 适用于高实时性、高风险的交易场景
good 只表示响应者没有把该证书报告为已吊销,并不自动证明证书确实已签发、仍在有效期或适合当前用途;验证方还需检查响应签名者、thisUpdate/nextUpdate 和证书路径。
RA(注册中心)
RA(Registration Authority)是 CA 可选的注册与审核前端,负责受理证书申请和作废请求、核实身份,再将审核结果提交 CA。身份核验既可能在线下完成,也可能通过受控的线上流程完成;在网银等场景中,RA 功能通常与业务流程集成。
各角色整体流转图
下面以书中的一种双证书部署为例,展示用户、RA、CA、KMC、LDAP/CRL 之间可能的交互。它用于解释职责边界,不代表 PKIX 规定的唯一流程;真实系统可能拆分申请、采用不同交付通道,或者完全不部署 KMC。
读图要点:
- 这是部署示例,不是协议要求:是否合并申请、是否让用户确认、由 RA 还是 CA 编排,都由具体系统和 CP/CPS 决定
- 策略约束流程:证书策略与操作规程应明确哪些主体需要加密证书,以及 KMC 生成、交付、备份和恢复密钥时的授权条件
- CA 的私钥 SK_CA 始终留在 CA 内部,仅用于签名,从不流出
- LDAP/CRL 属于发布与查询服务层,可按证书策略向依赖方或公众提供证书和吊销状态
四、数字签名与电子签名法
数字签名的原理
数字签名要求签名私钥在签署时由签名人控制。软件私钥在技术上可以被复制,使用 HSM、USB Key 等不可导出设备,是为了降低复制和冒用风险,而不是让私钥在数学上“无法复制”。
签名:使用私钥和签名算法,对待签数据生成签名值 验签:使用对应公钥和验证算法,检查签名值与待签数据是否匹配
签名与加密是不同的密码方案。即使 RSA 的底层运算形式相似,也不能把签名概括成“私钥加密”;ECDSA、EdDSA、SM2 等签名算法更不存在这种对称说法。
【重要】两层签名,各有分工
PKI 中存在两种签名,用途完全不同,很容易混淆:
第一层:用户对数据签名(证明“这份数据是我发出的”)
第二层:CA 对证书签名(证明“这张证书本身是真的”)
为什么两层缺一不可?
假设没有第二层(CA 签名),攻击者 Mallory 可以:
- 自己生成一对密钥(SK_mallory, PK_mallory)
- 伪造一张证书,写上“PK_mallory 属于 Alice”
- 用 SK_mallory 签署文件
- Bob 用 PK_mallory 验签——通过!但 Bob 实际上验证的是 Mallory 的签名,不是 Alice 的
CA 的签名正是堵住这个漏洞的重要一环:攻击者无法在没有签发私钥的情况下伪造有效签名。但验证方还必须确认签发者位于受信任路径中,并检查身份审核范围、证书状态、用途和业务策略。
完整的签名验证流程因此是两步:
CA 签名回答的是“签发者是否对这组身份与公钥信息作出了声明?”,用户签名回答的是“当前签名是否由对应私钥生成,数据是否保持完整?”。至于声明和业务行为能否被接受,还要由信任路径、状态、用途和业务授权共同决定。
电子签名与手写签名的实现方式不同:
- 电子签名是与数据电文关联的电子数据,需要软件和密码算法验证
- 签名值可以复制,但把它附到另一份数据上通常无法通过验证;可靠方案应能发现签名和原文的改动
- 电子签名可以远程完成,但其法律与证据效力仍取决于私钥控制、身份核验、时间和记录保存
可靠的电子签名(法律效力)
《中华人民共和国电子签名法》自 2005 年 4 月 1 日施行,后经 2015 年和 2019 年两次修正。现行法律规定,可靠的电子签名与手写签名或者盖章具有同等法律效力;当事人也可以约定使用符合其约定可靠条件的电子签名,不能简单理解为其他形式一律无效。
可靠的电子签名需满足四个条件:
- 签名制作数据(私钥)属于签名人专有
- 签署时签名制作数据仅由签名人控制
- 签署后对签名的任何改动能够被发现
- 签署后对数据电文内容和形式的任何改动能够被发现
五、数字证书的四种安全功能
基于数字证书,可以实现四种基本安全功能:
1. 身份认证
出示数字证书 + 用私钥签名一次性挑战 → 对方验签并检查证书路径、状态和用途 → 证明当前一方控制对应私钥;再结合证书身份与业务账户映射完成认证。
2. 保密性
通常先用随机会话密钥加密数据,再用接收方证书中的公钥封装会话密钥;只有掌握对应私钥的一方才能恢复会话密钥。这种数字信封方式比直接用公钥算法加密大块数据更实用。
3. 完整性
用私钥对数据签名 → 任何篡改都会导致验签失败。
4. 抗抵赖性(不可否认性)
交易时要求对方用受控私钥签名,并保存原文、签名、证书路径、状态信息、可信时间和审计记录。发生纠纷时,这些材料可以共同构成证据;单凭一次数学验签不能自动得出“绝对无法抵赖”的法律结论。
六、PKI 信任模型
PKI 的核心是“信任传递”。用户因为信任 CA,所以信任 CA 签发的证书。这条从 CA 到用户证书的信任路径,称为信任链(或认证路径、证书路径)。
常见的 PKI 信任组织方式包括:
根 CA 信任模型(严格层次)
信任链示例:根CA → 子CA1 → 用户A证书
交叉认证信任模型
根 CA 之间互相签发交叉认证证书,在不增加信任锚的前提下,将信任传递到其他 CA 管理域。
缺点:N 个根 CA 时,最多需要签发 N(N-1) 个交叉认证证书,随规模增长而爆炸。
桥 CA 信任模型
引入独立的桥 CA 作为虚拟根 CA,所有根 CA 只与桥 CA 互发交叉证书。
优势:N 个根 CA 只需 2N 个交叉认证证书,扩展性更好。
信任列表信任模型
用户可以拥有多个信任锚。Web PKI 是典型案例:浏览器或操作系统通过各自的根证书计划维护受信任 CA 集合,具体数量和策略会持续变化。
七、PKI 标准体系
PKI 涉及多层标准,下面列出书中使用的主要规范族。编号和算法状态会演进,实施时应继续核对现行版本:
国际标准:
- PKCS 系列(最初由 RSA 实验室推动):PKCS#1(RSA)、PKCS#7/CMS(消息语法)、PKCS#8(私钥格式)、PKCS#10(证书请求)、PKCS#11(Token 接口)、PKCS#12(个人信息交换)等
- IETF PKIX 系列:RFC 5280(证书与CRL格式)、RFC 6960(OCSP)等
- ISO/IEC 7816:IC 卡相关标准
国内标准(书中列举的 2012 年前后商密标准):
- SM2 椭圆曲线公钥算法(GM/T 0003)
- SM3 密码杂凑算法(GM/T 0004)
- SM4 分组密码算法(GM/T 0002)
- 数字证书认证系统密码协议规范(GM/T 0014)
- 基于 SM2 的数字证书格式规范(GM/T 0015)
八、其他非对称密钥管理体系
除 X.509/PKIX 外,还有其他几种模式:
PGP(Pretty Good Privacy)
PGP 是一种基于“信任网(Web of Trust)“的去中心化公钥管理方式。
核心思想:
- 每个用户可以用自己的私钥对他人公钥签名,表示“我认识这个人,这个公钥是他的”
- 公钥的信任程度由“介绍人”的可信程度决定
- 模拟现实社会中人们的社交关系
适用场景:互联网上独立的小圈子内部使用,规模有限。
EMV(银行 IC 卡)
EMV 标准用于银行 IC 卡支付,采用两级非对称密钥体系:
- 根 CA 系统:签发发卡行证书
- 发卡行 CA 系统:管理 IC 卡应用密钥
与网银 PKI 证书的主要区别:
- EMV 的公钥证书采用支付体系定义的固定格式和签名恢复流程;这里的“恢复”用于验证签名数据,并不表示它是为了保密而生成的密文。X.509 则采用 ASN.1/DER 结构
- 证书格式完全不同(EMV 固定长度 vs X.509 DER 编码)
- 应用场景不同:EMV 主要用于线下 POS/ATM 脱机交易,X.509 主要用于互联网在线业务
小结
PKI 的本质是:把非对称密钥的身份绑定、生命周期和验证流程标准化。CA 与数字证书承载公钥声明,Repository/LDAP 等服务负责分发,CRL/OCSP 等机制提供吊销状态信息,应用依据本地策略完成最终验证和授权。
整个体系从验证方预置的信任锚出发,通过证书路径传递受约束的信任。CA 私钥安全是必要条件,但不是充分条件;身份审核、密钥保护、算法与实现、状态服务、证书策略、终端安全和审计运营共同决定 PKI 是否可信。
参考资料
- RFC 5280:Internet X.509 公钥基础设施证书与 CRL Profile
- RFC 6960:在线证书状态协议 OCSP
- RFC 8017:PKCS #1 RSA 密码规范 2.2
- RFC 4511:LDAPv3 协议
- RFC 7465:禁止在 TLS 中使用 RC4
- NIST SP 800-131A Rev.2:密码算法与密钥长度迁移建议
- 《中华人民共和国电子签名法》(2019 年修正)
笔记整理自《PKI_CA与数字证书技术大全》第一部分
系列文章
- 本篇:理解 PKI 的整体框架
- 下一篇:从 ASN.1 到 DER,读懂数字证书的编码方式
