技术

理解PKI:从密码学历史到公钥基础设施

从古代保密通信到现代 PKI 体系,梳理密码学演进脉络,拆解 CA、数字证书、信任链、CRL/OCSP 等核心概念,理解公钥基础设施的本质。

发布
阅读约 14 分钟
理解PKI:从密码学历史到公钥基础设施
章节索引页面导航1 / 34
一、密码学简史:从古代战场到信息时代1 / 34

PKI 是一个看似复杂但逻辑非常清晰的体系。要真正理解它,需要从一个根本性的问题出发:在一个互不相识的网络世界里,两个人如何安全地建立信任?

这个问题的答案,是几千年密码学演进的终点,也是 PKI 诞生的起点。


一、密码学简史:从古代战场到信息时代

传统密码学:换位与替换

密码技术最早的驱动力是军事保密通信。传统密码学只有两种基本手法:

类型原理典型案例
换位加密不改变字符本身,只改变排列顺序古希腊 Scytale 棒、中国藏头诗
替换加密保持顺序,用其他符号替换原字符凯撒密码(单表)、维吉尼亚密码(多表)

公元9世纪,阿拉伯数学家肯迪在《解码手册》中提出频率分析法:不同字母在文本中出现的频率是固定的,通过统计密文中字符频率就能推导出替换规则。这一方法成为破解单表替换密码的利器,也推动了多表替换密码的发展。

两次世界大战将密码学推向了机械化时代。德国“隐谜”密码机、英国“炸弹”破译机——这场以数学和电气工程为武器的博弈,标志着传统手工密码的终结。

现代密码学:三类算法

二战结束后,随着计算机的出现,密码学完成了一次彻底的范式转变。加密对象从“文字书写”变成了“数字化比特流”,数学成为核心工具。

现代密码学的设计遵循科考夫原则(Kerckhoffs’s Principle):即使算法和系统设计公开,只要密钥仍然安全,密码系统也应保持安全。密钥保密是核心前提,但实现质量、随机数、参数选择和密钥生命周期同样会影响最终安全性。

现代密码学按技术特征分为三类:

1. 对称算法(密码密钥算法 / 单密钥算法)

加密密钥和解密密钥相同,又分为:

对称加密速度快,适合大量数据加密,但密钥分发是核心难题——双方要在安全的前提下共享同一个密钥。

2. 非对称算法(公钥算法)

加密密钥和解密密钥不同,一个可公开(公钥),另一个必须保密(私钥)。从公钥很难推导出私钥。代表算法:RSA、ECC、SM2。

公钥密码从根本上改变了密钥管理方式:公钥不需要保密,但仍需解决“如何确认这把公钥确实属于目标主体”的真实性问题。

3. 摘要算法(哈希函数)

将任意长度的输入转化为固定长度的输出(哈希值),通常不使用密钥。MD5、SHA-1 是重要的历史算法,但其抗碰撞能力已不适合新的数字签名系统;现代方案应根据适用标准选择 SHA-2、SHA-3、SM3 等算法。

用途:验证数据完整性(内容一旦改变,哈希值就会变化)。


二、密钥管理:从对称到非对称

密钥生命周期

在算法公开的现代密码学中,安全性的核心是密钥安全。密钥管理覆盖其整个生命周期:

产生 → 传输 → 验证 → 更新 → 存储 → 备份 → 使用 → 销毁
plaintext

针对口令或密钥空间的常见猜测方式:

这只是密钥攻击的一部分。真实系统还要面对随机数缺陷、私钥窃取、侧信道、错误配置和社会工程等风险;除了选择足够的密钥长度,还需要可靠的随机源、受控存储、用途分离、轮换和审计。

密钥备份的三种方式:

对称密钥管理的瓶颈

对称密钥管理常见的两种组织方式各有明显扩展性代价:

模式密钥数量核心问题
无中心模式最多 N(N-1)/2 对如果任意两方都使用独立共享密钥,用户数增加时密钥数量快速增长
有中心模式约 N 个长期共享密钥建立新会话通常依赖在线密钥分发中心,中心的可用性和安全性成为系统风险

非对称密钥管理的优势与残留问题

公钥可以公开,解决了密钥传输泄露的风险——但仍有一个关键问题没有解决:

如何证明一个公钥确实属于某个特定的人,而不是被人伪造或替换?

这就是 PKI 要解决的核心问题。


三、PKI 的本质:把非对称密钥管理标准化

PKI(Public Key Infrastructure,公钥基础设施)通过引入一系列标准化组件,解决了“公钥与用户映射关系容易被篡改”的问题,同时解决了集中服务性能瓶颈和脱机状态查询等问题。

核心组件

CA(证书权威)

CA(Certification Authority)是 PKI 中负责签发证书的关键角色。它拥有自己的签发密钥,使用私钥为用户、设备或下级 CA 签发数字证书

数字证书的签发过程:

  1. 将用户身份信息 + 用户公钥,按特定格式组成数据 D
  2. 根据证书模板确定签名算法及参数
  3. CA 使用私钥和该签名算法对 D 生成数字签名 S;算法内部通常包含摘要与签名编码步骤
  4. 将身份信息、公钥信息和签名 S 打包成数字证书

CA 对证书进行全生命周期管理:签发、更新、吊销和状态发布;部分业务系统还会在自身管理层实现冻结/解冻等状态。

数字证书

数字证书是一种经过签名的结构化数据对象;PKI 中最常见的是 X.509 证书。它包含三类信息:

数字证书的两个关键特性:

可以把数字证书暂时理解成“公钥的身份证明”,但这个类比有边界:证书是否被接受,最终取决于验证方预置的信任锚、证书策略和具体业务规则。

CA 自签名证书:根 CA 常用自签名证书承载自己的名称、公钥和约束信息,但自签名本身不会自动产生信任。根证书之所以成为信任锚,是因为它通过操作系统、浏览器、企业配置或其他可信的带外渠道被预先接受。


【重要】密钥对的归属:谁的钥匙归谁用

PKI 中同时存在多个相互独立的密钥对,初学时很容易把它们混为一谈。理清这一点是理解整个体系的关键。

从角色上看,至少有两类相互独立的密钥对:CA 的签发密钥,以及证书主体的一组或多组业务密钥:

CA 的密钥对用户的密钥对
私钥由谁控制CA 自己控制,绝不对外用户或其受控设备控制
私钥的用途给用户证书“盖章”(签名)用户签署数据 / 解密数据
公钥的用途让任何人验证证书是否被篡改让任何人向用户加密数据 / 验证用户签名
公钥存放在哪CA 证书或验证方的信任锚信息中用户的数字证书

CA 密钥与用户密钥之间没有数学派生关系。在双证书体系中,同一用户还会分别持有签名密钥和加密密钥。

证书申请流程(从密钥视角看):

① 用户生成自己的密钥对:SK_用户(私钥)+ PK_用户(公钥)

② 用户提交 CSR(证书签名请求)给 CA
   CSR 内容通常包括用户身份信息 + PK_用户 + 用户对请求数据的签名

③ CA 验证用户身份后,用【CA 自己的私钥 SK_CA】对(身份信息 + PK_用户)的摘要签名
   → 生成数字签名 S

④ CA 将(用户身份信息 + PK_用户 + 签名 S)打包成证书,返回给用户

⑤ 用户拿到证书,并按策略保护对应私钥;签名私钥通常应在用户设备或 HSM 内生成并保持不可导出
plaintext

关键一句话:证书里的公钥是用户自己的公钥 PK_用户,CA 只是用自己的私钥给这个证书盖了个章。CA 的私钥本身从不出现在证书中,只有 CA 的签名出现。

**验证证书时:**验证方使用签发者证书中的公钥执行签名验证,并继续构建到本地信任锚的认证路径。签名正确只能证明证书内容与签发时一致;还要检查路径、有效期、吊销状态、用途和业务授权。


KMC(密钥管理中心)

当解密私钥丢失时,使用对应公钥加密的数据可能永久无法恢复。在书中介绍的国内双证书体系中,KMC(Key Management Center)负责加密密钥的生成、托管、备份和恢复。KMC 不是所有 PKIX 部署都必须具有的通用组件。

这引出一组相互冲突的需求:

书中的体系用双证书机制分离这两类职责:

签名证书加密证书
用途仅用于签名/验签仅用于加密/解密
密钥对由谁生成用户自己(或硬件设备内部)KMC
证书中的公钥用户自己的公钥 PK_signKMC 生成的公钥 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)

OCSP(在线证书状态协议,Online Certificate Status Protocol)

good 只表示响应者没有把该证书报告为已吊销,并不自动证明证书确实已签发、仍在有效期或适合当前用途;验证方还需检查响应签名者、thisUpdate/nextUpdate 和证书路径。

RA(注册中心)

RA(Registration Authority)是 CA 可选的注册与审核前端,负责受理证书申请和作废请求、核实身份,再将审核结果提交 CA。身份核验既可能在线下完成,也可能通过受控的线上流程完成;在网银等场景中,RA 功能通常与业务流程集成。


各角色整体流转图

下面以书中的一种双证书部署为例,展示用户、RA、CA、KMC、LDAP/CRL 之间可能的交互。它用于解释职责边界,不代表 PKIX 规定的唯一流程;真实系统可能拆分申请、采用不同交付通道,或者完全不部署 KMC。

sequenceDiagram
    actor 用户
    participant RA as RA<br/>注册中心
    participant CA as CA<br/>证书权威
    participant KMC as KMC<br/>密钥管理中心
    participant DIR as LDAP / CRL<br/>目录与状态服务

    rect rgb(219, 234, 254)
        Note over 用户,CA: 阶段一:签名证书申请
        用户->>用户: ① 硬件设备内生成密钥对<br/>SK_sign(私钥,不可导出)<br/>PK_sign(公钥)
        用户->>RA: ② 提交一次申请<br/>身份信息 + PK_sign
        RA->>RA: ③ 核实用户真实身份
        RA->>CA: ④ 审核通过,转交 CSR(签名证书)
        CA->>CA: ⑤ 用 SK_CA 签名<br/>生成签名证书(内含 PK_sign)
        CA-->>RA: ⑥ 返回签名证书
        CA-->>DIR: 发布签名证书
    end

    rect rgb(254, 243, 199)
        Note over CA,KMC: 阶段二:一种加密证书申请示例
        Note right of CA: 业务流程依据 CP/CPS 判断:<br/>此类用户是否需要加密证书
        CA->>KMC: ⑦ 经授权流程请求:<br/>为该用户生成加密密钥对
        KMC->>KMC: ⑧ 生成 SK_enc + PK_enc
        KMC-->>CA: ⑨ 返回 PK_enc
        CA->>CA: ⑩ 用 SK_CA 签名<br/>生成加密证书(内含 PK_enc)
        CA-->>DIR: 发布加密证书
        CA-->>KMC: ⑪ 通知证书已签发<br/>KMC 备份保留 SK_enc
        CA-->>RA: ⑫ 同时返回<br/>签名证书 + 加密证书
        RA-->>用户: ⑬ 一次性交付<br/>签名证书 + 加密证书 + SK_enc<br/>(写入 USB Key / IC 卡)
        Note over 用户: USB Key 内含:<br/>SK_sign(硬件生成,不可导出)<br/>SK_enc(KMC 生成,已写入)<br/>签名证书 + 加密证书
    end

    rect rgb(220, 252, 231)
        Note over 用户,DIR: 阶段三:证书吊销(私钥泄露时)
        用户->>RA: 报告私钥泄露 / 申请注销
        RA->>CA: 提交吊销申请
        CA->>CA: 将该证书加入黑名单
        CA-->>DIR: 更新 CRL(定期)<br/>OCSP 实时响应状态查询
    end
mermaid

读图要点:


四、数字签名与电子签名法

数字签名的原理

数字签名要求签名私钥在签署时由签名人控制。软件私钥在技术上可以被复制,使用 HSM、USB Key 等不可导出设备,是为了降低复制和冒用风险,而不是让私钥在数学上“无法复制”。

签名:使用私钥和签名算法,对待签数据生成签名值 验签:使用对应公钥和验证算法,检查签名值与待签数据是否匹配

签名与加密是不同的密码方案。即使 RSA 的底层运算形式相似,也不能把签名概括成“私钥加密”;ECDSA、EdDSA、SM2 等签名算法更不存在这种对称说法。

【重要】两层签名,各有分工

PKI 中存在两种签名,用途完全不同,很容易混淆:

第一层:用户对数据签名(证明“这份数据是我发出的”)

Alice 用 SK_alice(自己的私钥)对文件签名
Bob   用 PK_alice(Alice 证书里的公钥)验签
→ 确认:文件确实由持有 SK_alice 的人签署,内容未被篡改
plaintext

第二层:CA 对证书签名(证明“这张证书本身是真的”)

CA    用 SK_CA(CA 自己的私钥)对证书签名
Bob   用签发者公钥验证 CA 签名,并将路径构建到本地信任锚
→ 确认:证书内容由该签发者签署;路径、状态、用途等检查通过后,才能接受公钥绑定
plaintext

为什么两层缺一不可?

假设没有第二层(CA 签名),攻击者 Mallory 可以:

  1. 自己生成一对密钥(SK_mallory, PK_mallory)
  2. 伪造一张证书,写上“PK_mallory 属于 Alice”
  3. 用 SK_mallory 签署文件
  4. Bob 用 PK_mallory 验签——通过!但 Bob 实际上验证的是 Mallory 的签名,不是 Alice 的

CA 的签名正是堵住这个漏洞的重要一环:攻击者无法在没有签发私钥的情况下伪造有效签名。但验证方还必须确认签发者位于受信任路径中,并检查身份审核范围、证书状态、用途和业务策略。

完整的签名验证流程因此是两步:

第一步:验证证书(建立对公钥的信任)
  从本地信任锚出发构建路径 → 逐级验证证书签名、约束、时间和状态
  → 在目标用途和策略范围内接受 PK_alice 与 Alice 的绑定

第二步:验证数据(确认数据来源)
  使用 PK_alice(刚刚确认过的证书中的公钥)→ 验证文件上 Alice 的签名
  → 确认文件由 Alice 签署,内容完整
plaintext

CA 签名回答的是“签发者是否对这组身份与公钥信息作出了声明?”,用户签名回答的是“当前签名是否由对应私钥生成,数据是否保持完整?”。至于声明和业务行为能否被接受,还要由信任路径、状态、用途和业务授权共同决定。

电子签名与手写签名的实现方式不同:

可靠的电子签名(法律效力)

《中华人民共和国电子签名法》自 2005 年 4 月 1 日施行,后经 2015 年和 2019 年两次修正。现行法律规定,可靠的电子签名与手写签名或者盖章具有同等法律效力;当事人也可以约定使用符合其约定可靠条件的电子签名,不能简单理解为其他形式一律无效。

可靠的电子签名需满足四个条件:

  1. 签名制作数据(私钥)属于签名人专有
  2. 签署时签名制作数据仅由签名人控制
  3. 签署后对签名的任何改动能够被发现
  4. 签署后对数据电文内容和形式的任何改动能够被发现

五、数字证书的四种安全功能

基于数字证书,可以实现四种基本安全功能:

1. 身份认证

出示数字证书 + 用私钥签名一次性挑战 → 对方验签并检查证书路径、状态和用途 → 证明当前一方控制对应私钥;再结合证书身份与业务账户映射完成认证。

2. 保密性

通常先用随机会话密钥加密数据,再用接收方证书中的公钥封装会话密钥;只有掌握对应私钥的一方才能恢复会话密钥。这种数字信封方式比直接用公钥算法加密大块数据更实用。

3. 完整性

用私钥对数据签名 → 任何篡改都会导致验签失败。

4. 抗抵赖性(不可否认性)

交易时要求对方用受控私钥签名,并保存原文、签名、证书路径、状态信息、可信时间和审计记录。发生纠纷时,这些材料可以共同构成证据;单凭一次数学验签不能自动得出“绝对无法抵赖”的法律结论。


六、PKI 信任模型

PKI 的核心是“信任传递”。用户因为信任 CA,所以信任 CA 签发的证书。这条从 CA 到用户证书的信任路径,称为信任链(或认证路径、证书路径)。

常见的 PKI 信任组织方式包括:

根 CA 信任模型(严格层次)

根CA(自签名)
├── 子CA1
│   └── 用户A证书
└── 子CA2
    ├── 子CA3
    │   ├── 用户B证书
    │   └── 用户C证书
    └── 子CA4
        └── 用户D证书
plaintext

信任链示例:根CA → 子CA1 → 用户A证书

交叉认证信任模型

根 CA 之间互相签发交叉认证证书,在不增加信任锚的前提下,将信任传递到其他 CA 管理域。

缺点:N 个根 CA 时,最多需要签发 N(N-1) 个交叉认证证书,随规模增长而爆炸。

桥 CA 信任模型

引入独立的桥 CA 作为虚拟根 CA,所有根 CA 只与桥 CA 互发交叉证书。

优势:N 个根 CA 只需 2N 个交叉认证证书,扩展性更好。

信任列表信任模型

用户可以拥有多个信任锚。Web PKI 是典型案例:浏览器或操作系统通过各自的根证书计划维护受信任 CA 集合,具体数量和策略会持续变化。


七、PKI 标准体系

PKI 涉及多层标准,下面列出书中使用的主要规范族。编号和算法状态会演进,实施时应继续核对现行版本:

国际标准:

国内标准(书中列举的 2012 年前后商密标准):


八、其他非对称密钥管理体系

除 X.509/PKIX 外,还有其他几种模式:

PGP(Pretty Good Privacy)

PGP 是一种基于“信任网(Web of Trust)“的去中心化公钥管理方式。

核心思想:

适用场景:互联网上独立的小圈子内部使用,规模有限。

EMV(银行 IC 卡)

EMV 标准用于银行 IC 卡支付,采用两级非对称密钥体系

  1. 根 CA 系统:签发发卡行证书
  2. 发卡行 CA 系统:管理 IC 卡应用密钥

与网银 PKI 证书的主要区别:


小结

PKI 的本质是:把非对称密钥的身份绑定、生命周期和验证流程标准化。CA 与数字证书承载公钥声明,Repository/LDAP 等服务负责分发,CRL/OCSP 等机制提供吊销状态信息,应用依据本地策略完成最终验证和授权。

整个体系从验证方预置的信任锚出发,通过证书路径传递受约束的信任。CA 私钥安全是必要条件,但不是充分条件;身份审核、密钥保护、算法与实现、状态服务、证书策略、终端安全和审计运营共同决定 PKI 是否可信。


参考资料

笔记整理自《PKI_CA与数字证书技术大全》第一部分


系列文章


正在加载留言…


上一篇
【每周一书】你是你吃出来的
下一篇
【地铁时光】最好的时光在路上

搜索文章...

⌘K / Ctrl K

使用上下方向键选择结果,按 Enter 打开,按 Esc 关闭

搜索结果