2. 签名链路基础:数字签名原理、公钥基础设施(PKI)、X.509证书结构

在IDP制品签名链路中,回滚机制的核心前提是可验证的签名链。如果签名本身无法被独立验证,回滚操作将面临信任崩塌的风险。本章从数字签名原理、PKI体系到X.509证书结构,逐层构建签名链路的技术基础。

2.1 数字签名原理

数字签名并非对原始数据进行“加密”,而是通过哈希摘要与非对称加密的组合,实现完整性、真实性和不可否认性。其核心流程如下:

  1. 签名方(Signer):对制品内容计算哈希值(如SHA-256),使用自己的私钥对哈希值加密,生成签名。
  2. 验证方(Verifier):使用签名方的公钥解密签名,得到原始哈希值;同时对收到的制品重新计算哈希值,两者比对。
  3. 结果:哈希一致则证明制品未被篡改,且签名确实来自私钥持有者。
回滚场景提示: 回滚时,验证方必须持有签名时使用的公钥。如果公钥已轮换或撤销,旧签名将无法验证,导致回滚失败。因此,签名链路必须保留历史公钥的时间戳锚定。
数字签名流程示意图 签名方(私钥) 制品内容 SHA-256 哈希 私钥加密 → 签名 验证方(公钥) 公钥解密签名 比对哈希值 关键点 1. 私钥签名 2. 公钥验证 3. 哈希比对 4. 不可否认性 5. 完整性保证

2.2 公钥基础设施(PKI)

PKI是数字签名的信任骨架。在IDP制品签名链路中,PKI解决了“公钥属于谁”的问题。没有PKI,攻击者可以伪造公钥,使回滚验证形同虚设。

PKI组件 角色 在签名链路中的职责
证书颁发机构(CA) 信任锚点 签发X.509证书,证明公钥与实体的绑定关系
注册机构(RA) 身份审核 验证签名方身份,向CA提交证书请求
证书吊销列表(CRL) 撤销状态 记录已失效的证书,回滚时需检查证书是否被吊销
在线证书状态协议(OCSP) 实时验证 提供证书即时状态查询,比CRL更实时
证书存储库 历史归档 保存历史证书,支持回滚时的旧签名验证
回滚风险: 如果CA根证书过期或私钥泄露,整个信任链将崩溃。IDP必须设计根证书离线存储和交叉签名机制,确保回滚时仍能追溯信任。

2.3 X.509证书结构

X.509是PKI中最广泛使用的证书标准。每个证书包含以下核心字段,这些字段在签名验证和回滚决策中直接使用:

  • 版本号(Version):通常为V3,支持扩展字段。
  • 序列号(Serial Number):CA颁发的唯一标识,用于CRL吊销查询。
  • 签名算法(Signature Algorithm):如sha256WithRSAEncryption,指定签名使用的哈希和加密算法。
  • 颁发者(Issuer):签发该证书的CA名称。
  • 有效期(Validity):notBefore 和 notAfter,回滚时必须确认签名时间在有效期内。
  • 主体(Subject):证书持有者身份,如制品签名服务名称。
  • 公钥信息(Subject Public Key Info):包含算法和公钥值,是验证签名的直接依据。
  • 扩展(Extensions):如密钥用法(Key Usage)、证书策略(Certificate Policies)、CRL分发点等。
X.509证书结构示意图 X.509 V3 证书结构 版本号 (V3) 序列号 签名算法 颁发者 (Issuer) 有效期 (Validity) 主体 (Subject) 主体公钥信息 (算法 + 公钥值) 扩展 (Extensions) 密钥用法 / CRL分发点 / 策略 CA签名 (对以上所有字段的签名) 回滚关键:验证签名时间是否在有效期内,且证书未被吊销

2.4 证书链与信任锚

在IDP制品签名链路中,签名证书通常不是由根CA直接签发,而是通过中间CA签发,形成证书链:

根CA证书 (自签名, 信任锚)
  └── 中间CA证书 (由根CA签发)
        └── 制品签名证书 (由中间CA签发)
              └── 制品签名 (由签名证书私钥生成)

验证时,验证方必须持有根CA证书作为信任锚,逐级验证证书链中每个证书的签名,直到制品签名证书。回滚场景下,如果中间CA证书已过期,但根CA仍在有效期内,且签名时间在中间CA证书有效期内,则签名仍然有效。

最佳实践: 在IDP中,建议将根CA证书离线存储,仅使用中间CA签发制品签名证书。回滚时,即使中间CA证书轮换,只要根CA不变,历史签名仍可验证。同时,所有证书和CRL应归档至不可变存储,防止回滚时因证书缺失导致验证失败。

2.5 签名链路在回滚中的关键约束

约束项 说明 回滚影响
时间有效性 签名时间必须在证书有效期内 回滚时必须保留签名时间戳,否则无法判断证书是否当时有效
证书吊销 签名时证书未被吊销 回滚时需查询历史CRL或OCSP响应,确认签名时刻的证书状态
算法兼容性 签名算法在验证时仍被支持 回滚时验证环境必须支持旧算法(如SHA-1可能已被弃用)
密钥轮换 签名私钥可能已轮换 回滚时必须使用签名时的公钥,而非当前公钥
信任链完整性 证书链中所有证书均可验证 回滚时需保留完整的证书链,包括已过期的中间CA证书