一、协议基础与标准
标准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年初发布