国密双证书体系(基于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`。

六、总结口诀

签名管“我是谁”,私钥在手不可推;    

加密管“给你听”,公钥分发需备份。    

两证同属一个人,用途分离保合规。

这种双证书设计虽然增加了管理复杂度,但满足了电子签名法对“本人特有、仅本人控制”的要求,同时兼顾了加密场景下的密钥恢复需求,是国密体系成熟的标志之一。