国密双证书体系(基于SM2算法)是PKI体系中的一种特殊设计,核心是将传统单证书的“认证”与“加密”功能拆分为两个独立的数字证书——签名证书和加密证书。这种分工主要源于SM2算法中同一对密钥无法同时满足签名和加密的合规性及安全需求。
一、核心区别对比
维度 签名证书 加密证书
核心用途 身份认证、数字签名、不可否认性 数据加密、密钥传输、保密性
密钥对生成方 用户终端(私钥永远不出设备) 密钥管理中心(KMC)或用户(可备份)
私钥存储 硬件介质(如USB Key、SE),不可导出 加密机或密钥库,支持合规备份
公钥传递 用于验证签名 用于加密数据或会话密钥
生命周期 较短(如1-3年),到期必须更换密钥对 较长(如3-5年),可基于原密钥对续期
密钥更新 重新生成新密钥对 可沿用原密钥对(需CA重签证书)
丢失后果 身份被冒用,历史签名失效 历史密文无法解密(若未备份)或泄露
备份要求 禁止备份(防冒签) 强制备份(防数据丢失)
二、为什么需要两套证书?
国密标准 GB/T 20518-2018 明确要求:同一对SM2密钥不能同时用于签名和加密。原因有二:
1. 防抵赖性要求:签名私钥必须由用户唯一持有且不可备份,否则无法证明签名是用户本人所为。而加密私钥往往需要被KMC或单位备份,以防员工离职导致加密文档丢失——两者需求冲突。
2. 抗量子计算远期风险:签名与加密的密钥使用模式不同,分开后可独立升级(如签名切到SM3+SM2,加密切到SM9或抗量子算法)。
三、实际分工场景举例
以某国密SSL VPN接入为例:
握手阶段:客户端使用自己的签名私钥对握手消息摘要进行签名,服务器用客户端的签名证书公钥验证身份(认证谁在连接)。
密钥协商:客户端生成临时会话密钥(如用于SM4),然后用服务器的加密证书公钥加密该会话密钥后发送给服务器。服务器用其加密私钥解密得到会话密钥(确保密钥仅目标服务器能解开)。
四、常见误区澄清
误区1:“签名证书不能加密?”
签名证书的公钥理论上也可用于加密,但绝不能用于保护业务数据,因为签名私钥若被用于解密(即暴露在解密流程中),就破坏了不可否认性的法律效力。国密规范禁止混用。
误区2:“加密证书不能签名?”
同理,加密私钥如果用于签名,那么该签名无法具备法律上的唯一性(因为加密私钥可能被多人备份持有)。因此加密证书的密钥Usage扩展中必须不含`digitalSignature`。
五、查看证书区分方法
在Windows或OpenSSL中查看国密双证书:
签名证书:`KeyUsage` = `Digital Signature, Non-Repudiation`
`ExtendedKeyUsage` = `id-kp-clientAuth` 或 `id-kp-emailProtection`(签名用途)
加密证书:`KeyUsage` = `Key Encipherment, Data Encipherment`
`ExtendedKeyUsage` = `id-kp-encryptionOnly` 或 `id-kp-keyAgreement`
注:国密标准中签名证书的`KeyUsage`通常不包含`KeyEncipherment`,加密证书不包含`DigitalSignature`。
六、总结口诀
签名管“我是谁”,私钥在手不可推;
加密管“给你听”,公钥分发需备份。
两证同属一个人,用途分离保合规。
这种双证书设计虽然增加了管理复杂度,但满足了电子签名法对“本人特有、仅本人控制”的要求,同时兼顾了加密场景下的密钥恢复需求,是国密体系成熟的标志之一。