公钥基础设施(PKI)基础概念:信任模型、证书体系与安全服务
概述
公钥基础设施(Public Key Infrastructure, PKI)是基于公钥密码学的一种安全管理框架,它为数字证书的申请、签发、管理、使用存储和吊销提供了一套完整的基础设施。PKI 是现代信息安全体系的核心组成部分,广泛应用于身份认证、数据加密、数字签名、安全通信等领域。
PKI 的核心价值在于解决了"如何信任一个公钥属于某个特定实体"的问题。在没有 PKI 的世界中,Alice 无法确定她收到的公钥确实属于 Bob 而不是中间人 Eve。PKI 通过引入受信任的第三方(证书颁发机构,CA)来建立这种信任关系。
PKI 的核心组件
1. 证书颁发机构(CA)
证书颁发机构(Certificate Authority, CA)是 PKI 体系中最核心的信任锚。CA 负责:
- 证书签发:验证申请者身份后,将申请者的公钥与其身份信息绑定,生成数字证书
- 证书吊销:在证书有效期内,因密钥泄露、信息变更等原因吊销证书
- 证书更新:证书到期前协助用户续期
| CA 类型 | 信任级别 | 作用 | 示例 |
|---|---|---|---|
| 根 CA(Root CA) | 最高 | 信任锚,自签名证书 | DigiCert Global Root、中国金融认证中心(CFCA) |
| 中间 CA(Intermediate CA) | 中等 | 受根 CA 授权,负责实际签发 | 各业务线 CA、地域性 CA |
| 注册机构(RA) | 最低 | 验证申请者身份,不签发证书 | 企业内部的证书审批系统 |
2. 数字证书
数字证书是 PKI 体系中身份与公钥绑定的载体,遵循 X.509 标准格式。国密体系下使用 GM/T 0015-2023《数字证书格式》定义的国密 X.509 证书。
X.509 证书的核心字段:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, -- 证书主题信息
signatureAlgorithm AlgorithmIdentifier, -- 签名算法
signatureValue BIT STRING -- CA 签名值
}
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT INTEGER, -- v3
serialNumber INTEGER, -- 证书序列号
signature AlgorithmIdentifier, -- 签名算法(SM2/RSA)
issuer Name, -- 颁发者 DN
validity Validity, -- 有效期
subject Name, -- 主体 DN
subjectPublicKeyInfo SubjectPublicKeyInfo, -- 公钥信息
extensions [3] EXPLICIT Extensions OPTIONAL
}国密 X.509 证书与标准 X.509 的主要区别:
| 字段 | 标准 X.509 | 国密 X.509(GM/T 0015) |
|---|---|---|
| 签名算法 | RSA/ECDSA | SM2 |
| 密钥算法 | RSA/ECC | SM2 |
| 哈希算法 | SHA-256 | SM3 |
| 证书格式 | DER/PEM | DER/PEM(国密编码) |
| 扩展项 | 标准扩展 | 国密扩展(含算法标识 OID) |
3. 证书吊销机制
PKI 必须解决"证书有效期内如何撤销信任"的问题。主要有两种方式:
CRL(Certificate Revocation List):证书吊销列表,由 CA 定期发布,包含所有已被吊销但尚未过期的证书序列号。
OCSP(Online Certificate Status Protocol):在线证书状态协议,实时查询单个证书的吊销状态,相比 CRL 更高效但隐私性较差。
| 对比维度 | CRL | OCSP | OCSP Stapling |
|---|---|---|---|
| 查询方式 | 下载完整列表 | 实时 HTTP 查询 | 服务器主动附带 |
| 延迟 | 高(需下载完整列表) | 中(需额外请求) | 低(随握手发送) |
| 隐私 | 好(本地查询) | 差(CA 知道访问记录) | 好(服务器代为查询) |
| 带宽 | 高(完整列表) | 低(单个查询) | 低(单个响应) |
| 适用场景 | 离线验证 | 实时验证 | TLS 服务器端 |
4. 密钥管理
PKI 的密钥管理涵盖密钥的完整生命周期:
密钥生成 → 密钥存储 → 密钥分发 → 密钥使用 → 密钥更新 → 密钥归档 → 密钥销毁国密体系下的密钥管理要求:
- 密钥生成:必须使用经认证的密码模块(GM/T 0028),密钥长度符合 SM2 要求(256 位)
- 密钥存储:私钥必须存储在安全硬件中(USB Key、HSM、安全芯片)
- 密钥备份:重要 CA 密钥必须采用门限方案备份(GM/T 0034)
- 密钥恢复:在合法授权下支持密钥恢复,但需记录审计日志
PKI 信任模型
1. 层次型信任模型(Hierarchical Model)
最经典的 PKI 信任模型,采用树状结构:
┌─────────────┐
│ 根 CA (Root) │ ← 信任锚(Trust Anchor)
└──────┬──────┘
│
┌──────┴──────┐
│ 中间 CA 1 │
└──────┬──────┘
│
┌──────┴──────┐
│ 终端实体证书 │ ← Alice 的证书
└─────────────┘特点:
- 单一根 CA 作为信任锚
- 证书链验证路径唯一
- 管理简单,适合单一组织内部使用
- 根 CA 单点故障风险高
2. 桥接型信任模型(Bridge Model)
解决多层次 PKI 互操作问题的方案:
┌──────────┐ ┌──────────┐
│ PKI A │ │ PKI B │
│ Root CA │ │ Root CA │
│ │ │ │ │ │
│ └─────┼─────┘ │ │
│ Bridge CA (桥接 CA) │ │
│ │ │ ┌────┘ │
│ │ │ │ │
└────┘ └─────┘ │
│ │
▼ ▼
实体 A 实体 B特点:
- 通过桥接 CA 实现不同 PKI 体系间的信任传递
- 桥接 CA 持有所有参与 PKI 体系的证书
- 适合跨国、跨组织的互操作场景
3. 网状信任模型(Web of Trust)
PGP/GPG 采用的去中心化信任模型:
Alice ──信任──▶ Bob ──信任──▶ Charlie
▲ │ ▲
│ │ │
└────信任──────┘ │
│
Dave ──┘特点:
- 无中心 CA,信任由用户间直接建立
- 通过签名传递信任(Alice 签名 Bob 的证书 = Alice 信任 Bob)
- 适合小规模社群,大规模部署困难
证书链验证
验证流程
当客户端收到一个证书时,需要验证其完整信任链:
步骤 1: 获取证书链(终端实体 → 中间 CA → 根 CA)
步骤 2: 验证根 CA 证书是否在本地的信任存储中
步骤 3: 从上到下依次验证每层证书的签名:
- 用上级 CA 的公钥验证下级证书的签名
- 检查证书有效期
- 检查证书吊销状态(CRL/OCSP)
- 检查扩展项约束(Basic Constraints、Key Usage、EKU)
步骤 4: 验证终端实体证书的 Subject/SubjectAltName 是否与目标匹配关键扩展项
| 扩展项 | OID | 作用 | 国密 OID |
|---|---|---|---|
| Basic Constraints | 2.5.29.19 | 标识 CA 证书 | 1.2.156.10197.1.501 |
| Key Usage | 2.5.29.15 | 限制密钥用途 | 1.2.156.10197.1.502 |
| Extended Key Usage | 2.5.29.37 | 扩展密钥用途 | 1.2.156.10197.1.503 |
| Subject Alternative Name | 2.5.29.17 | 主体别名 | 1.2.156.10197.1.504 |
| Certificate Policies | 2.5.29.32 | 证书策略 | 1.2.156.10197.1.505 |
国密双证书体系
国密 PKI 体系中常见的双证书设计:
┌─────────────────────────────────────────────┐
│ 签名证书(Signature Certificate) │
│ - 用途:数字签名、验签 │
│ - 密钥:SM2 签名密钥对 │
│ - 有效期:较短(1-2 年) │
├─────────────────────────────────────────────┤
│ 加密证书(Encryption Certificate) │
│ - 用途:数据加密、解密 │
│ - 密钥:SM2 加密密钥对 │
│ - 有效期:较长(3-5 年) │
└─────────────────────────────────────────────┘双证书设计的原因:
- 密钥分离:签名密钥和加密密钥独立,降低密钥泄露风险
- 有效期差异化:签名密钥频繁使用,需更短有效期;加密密钥使用较少
- 合规要求:GM/T 0034 明确要求签名和加密使用不同密钥对
PKI 应用场景
1. TLS/HTTPS 安全通信
最常见的 PKI 应用场景,服务器使用数字证书证明身份:
- 标准 TLS:RSA/ECC 证书 + RSA/ECDHE 密钥交换
- 国密 TLS:SM2 证书 + SM2 密钥交换(GM/T 0024)
- 双证书 TLS:签名证书用于身份认证,加密证书用于密钥封装
2. 代码签名
软件开发者和固件供应商使用 PKI 对代码进行签名:
- Windows: Authenticode 代码签名证书
- macOS/iOS: Apple Developer Certificate
- 国密场景: 嵌入式固件 SM2 签名验证(GM/T 0010)
3. 电子邮件安全
- S/MIME:使用 X.509 证书加密和签名邮件
- 国密场景: 基于 SM2 的国密邮件安全协议
4. 物联网设备认证
- 设备证书:每台 IoT 设备预置 SM2/X.509 证书
- 双向认证:设备与服务器相互验证证书
- 批量部署:中间 CA 证书用于批量签发设备证书
PKI 与国密标准的映射
| 国密标准 | 内容 | PKI 中的作用 |
|---|---|---|
| GM/T 0009-2023 | SM2 密码算法使用规范 | 规定 SM2 证书中密钥的使用方式 |
| GM/T 0010-2023 | SM2 密码算法加密签名消息语法 | 定义 SM2 CMS 格式证书 |
| GM/T 0015-2023 | 数字证书格式 | 国密 X.509 证书结构 |
| GM/T 0034-2023 | 基于 SM2 的证书认证系统 | CA 系统架构和安全要求 |
| GM/T 0018-2023 | 密码设备应用接口规范 | SDF 接口用于证书操作 |
| GM/T 0033-2023 | 时间戳接口规范 | 时间戳服务集成 |
| GM/T 0028-2014 | 密码模块安全技术要求 | CA 硬件密码模块安全等级 |
安全威胁与防护
常见威胁
| 威胁类型 | 描述 | 防护措施 |
|---|---|---|
| 证书伪造 | 攻击者伪造 CA 签发恶意证书 | 证书透明度(CT)日志 |
| 私钥泄露 | CA 私钥被窃取,可签发任意证书 | 硬件密码模块保护、门限签名 |
| 中间人攻击 | 拦截 TLS 握手,伪造服务器证书 | 证书链验证、HSTS |
| 过期证书 | 使用已过期但仍被信任的证书 | 严格的有效期管理、自动续期 |
| 吊销绕过 | 攻击者阻止 OCSP/CRL 查询 | OCSP Stapling、预吊销检查 |
国密 PKI 的特殊安全要求
- 密钥分离:签名密钥和加密密钥必须使用不同的 SM2 密钥对(GM/T 0034)
- 硬件保护:根 CA 和中级 CA 的私钥必须存储在通过 GM/T 0028 认证的安全模块中
- 审计追踪:所有证书签发、吊销操作必须记录审计日志
- 时间戳绑定:重要证书操作必须附加可信时间戳(GM/T 0033)
相关实践
- GM/T 0034-2014 基于 SM2 的证书认证系统密码及安全规范 — CA 系统架构详解
- GM/T 0015-2023 数字证书格式标准解读 — 国密 X.509 证书结构
- GM/T 0009-2023 SM2 密码算法使用规范 — SM2 证书密钥使用
- 国密双证书 TLS 部署实践 — 双证书在实际部署中的应用
- 证书吊销机制深度解析 — CRL/OCSP 工程实践
参考来源
- GM/T 0034-2023《基于 SM2 密码算法的证书认证系统密码及其相关安全技术规范》,国家密码管理局
- GM/T 0015-2023《数字证书格式》,国家密码管理局
- GM/T 0009-2023《SM2 密码算法使用规范》,国家密码管理局
- RFC 5280 "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"
- RFC 6960 "Online Certificate Status Protocol (OCSP)"
- GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》
- 国家密码管理局 - 商用密码标准体系