一、协议基础与标准

标准TLS(Transport  Layer  Security)是国际通用的传输层安全协议,由IETF制定,采用RSA、ECDSA、AES、SHA等国际算法。

TLCP(Transport  Layer  Cryptography  Protocol)是中国国家标准《GB/T  38636-2020  信息安全技术  传输层密码协议》,全面采用国密算法体系(SM2/SM3/SM4),是国密SSL协议(GM/T  0024)的升级和标准化成果。

注意:实际部署中常提到的"国密SSL"、"GMSSL"、"NTLS"等概念,本质上都是指基于国密算法的安全传输协议体系,TLCP是其中最具代表性的国家标准。

二、核心区别对比

对比维度      标准TLS        TLCP(国密)  

算法体系          RSA、ECDSA、AES、SHA等国际算法  |  SM2(非对称)、SM4(对称)、SM3(哈希)  

证书机制          单证书:一张证书同时承担身份认证和密钥交换          双证书:签名证书(身份认证)+  加密证书(密钥交换)  

协议版本          TLS  1.2(0x0303)、TLS  1.3(0x0304)      TLCP  1.1(0x0101)  

前向安全          TLS  1.3原生支持  |  TLCP  1.1不支持前向安全  

合规要求          无特殊合规要求        满足《密码法》《商用密码管理条例》等国内法规  

浏览器支持          Chrome、Edge、Firefox等主流浏览器全面支持      仅部分国产浏览器(如360安全浏览器、奇安信浏览器)支持  

2.1  双证书体系的本质

TLCP将传统TLS中单证书的功能拆分为两份:

签名证书:证明服务端身份,对握手关键参数进行签名——"证明我是谁"

加密证书:用于密钥交换,加密预主密钥等敏感数据——"给我发秘密时用这把公钥加密"

加密证书的密钥对通常由外部密钥管理机构(KMC)生成并由外部认证机构签发。

2.2  密码套件差异

TLCP的典型密码套件包括:

  `TLCP_ECC_SM4_GCM_SM3`:SM4-GCM模式  +  SM3哈希

  `TLCP_ECC_SM4_CBC_SM3`:SM4-CBC模式  +  SM3哈希

而标准TLS  1.3的典型套件如  `TLS_AES_128_GCM_SHA256`。基于RFC  8998的国密TLS  1.3则使用  `TLS_SM4_GCM_SM3`(0x00C6)等IANA分配的套件编号。

三、部署配置要点

3.1  核心配置差异

配置项      标准TLS    TLCP

证书数量          1张(含私钥)      2张(签名证书  +  加密证书,各含私钥)  

协议标识          `TLSv1.2`  /  `TLSv1.3`      `TLCP`  

密码套件          `TLS_AES_128_GCM_SHA256`  等      `TLCP_ECC_SM4_GCM_SM3`  等  

底层密码库          OpenSSL  /  BoringSSL      Tongsuo(铜锁)/  BabaSSL  /  openHiTLS  /  GMSSL  

3.2  服务器改造前提

Nginx、Apache等主流Web服务器不原生支持TLCP,需通过以下方式改造:

1.  替换底层密码库:使用国密版OpenSSL(Tongsuo/BabaSSL/openHiTLS/GMSSL)重新编译Nginx

2.  或使用国密网关:部署国密SSL网关进行协议转换

3.  或使用已适配的发行版:如Tengine  +  BabaSSL组合原生支持NTLS

3.3  双证书配置示例(Nginx  +  openHiTLS)

nginx

server  {

        listen  443  ssl;

        server_name  example.com;

            签名证书(身份认证)

        ssl_certificate  /path/to/server_sign.crt;

        ssl_certificate_key  /path/to/server_sign.key;

              加密证书(密钥交换)

        ssl_certificate_enc  /path/to/server_enc.crt;

        ssl_certificate_enc_key  /path/to/server_enc.key;

            协议与套件

        ssl_protocols  TLCPv1.1;

        ssl_ciphers  TLCP_ECC_SM4_GCM_SM3:TLCP_ECC_SM4_CBC_SM3;

}

注意:具体指令名称(如  `ssl_certificate_enc`)取决于所使用的国密密码库实现,不同实现可能有所差异。

3.4  双协议栈部署(兼容模式)

实际部署中常采用双协议栈方案,同时启用TLS  1.2/1.3和TLCP,兼顾国密合规与国际兼容性:

  国际用户/浏览器  →  TLS协议  +  国际算法证书

  国密合规用户/国产浏览器  →  TLCP协议  +  国密双证书

四、主流国密实现方案

实现方案      说明  

Tongsuo(铜锁)          阿里系开源国密密码库,支持TLCP双证书  

BabaSSL          蚂蚁/阿里开源密码库,统称NTLS(TLCP+0024)  

openHiTLS          开源国密密码库,提供nginx-with-openHiTLS方案  

GMSSL          国密开源SSL库  

五、重要提醒:TLCP的前向安全缺陷

TLCP协议(对标TLS  1.2)不支持前向安全(Forward  Secrecy)  。这意味着一旦证书私钥泄露,攻击者可解密所有历史加密数据。

应对方案:

1.  短期:关注基于RFC  8998的国密TLS  1.3标准,该标准已支持前向安全

2.  长期:密码行业标准化技术委员会已启动基于TLS  1.3的国密协议修订,预计2027年底至2028年初发布