01 · 演进脉络与标准定位
1.1 从GM/T 0024到GB/T 38636-2020
国密传输层协议的演进分两步走:GM/T 0024-2014《SSL VPN技术规范》首次系统化定义国密SSL协议——其协议框架参照TLS 1.1(协议版本标识为0x0101,GMVer 1.1),在握手协议中增加ECC(SM2证书)与IBC(SM9标识)两类认证模式及配套密钥交换模式,取消传统DH密钥交换,并针对SSL VPN场景增加了网关-网关协议。GB/T 38636-2020 TLCP在此基础上完成国家标准化升级:去除产品要求、检测要求等产品化内容,将标准对象聚焦于密码协议本身;增加对可鉴别加密(GCM)的支持与密码套件优化;标准化表述全面规范化。TLCP不再局限于SSL VPN场景,而是作为通用传输层密码协议适用于各类网络服务,成为"国密HTTPS"的协议基石。
1.2 TLCP标准起草阵容反映的产业生态
GB/T 38636-2020的主要起草单位包括山东得安、格尔软件、信安世纪、卫士通、吉大正元、三未信安、海泰方圆、江南天安、中金金融认证中心(CFCA)、天融信等——基本涵盖国产密码产品主力厂商与头部CA,说明TLCP从诞生起就是"产业共识型"标准而非单一机构产物。这一生态结构对第5页的CA生态分析与第6页的改造选型均有参考意义。
02 · 协议架构解析
2.1 分层结构
TLCP沿用了TLS式分层:上层为握手协议族(握手协议、密码规格变更协议、报警协议),下层为记录层协议。记录层负责分片、压缩(可选)、MAC/AEAD保护、加密与传输;握手层负责算法协商、身份认证(双证书)与会话密钥建立。
2.2 密码套件体系
| 套件 | 密钥交换 | 加密/MAC | 认证模式 |
|---|---|---|---|
| ECC_SM4_SM3 | SM2密钥交换(静态加密证书密钥) | SM4-CBC + HMAC-SM3 | ECC(双证书) |
| ECDHE_SM4_SM3 | SM2临时密钥交换(前向安全) | SM4-CBC + HMAC-SM3 | ECC(双证书) |
| IBC_SM4_SM3 | SM9标识密钥交换 | SM4-CBC + HMAC-SM3 | IBC(SM9) |
| GCM变体套件 | 对应上述交换方式 | SM4-GCM可鉴别加密(AEAD) | ECC/IBC |
2.3 套件标识速查(GB/T 38636-2020 密码套件列表)
| 套件名称 | 套件标识 | 说明 |
|---|---|---|
| ECDHE_SM4_CBC_SM3 | 0xE011 | SM2临时密钥交换(前向安全)+SM4-CBC+SM3 |
| ECDHE_SM4_GCM_SM3 | 0xE051 | SM2临时密钥交换+SM4-GCM(AEAD一体化) |
| ECC_SM4_CBC_SM3 | 0xE013 | SM2静态加密密钥+SM4-CBC+SM3(无前向安全) |
| ECC_SM4_GCM_SM3 | 0xE053 | SM2静态加密密钥+SM4-GCM |
| IBSDH_SM4_CBC_SM3 / GCM | 0xE015 / 0xE055 | SM9标识密钥交换(DH协商型) |
| IBC_SM4_CBC_SM3 / GCM | 0xE017 / 0xE057 | SM9标识密钥交换(加密传输型) |
| RSA_SM4_CBC_SM3 等兼容套件 | 0xE019 / 0xE059等 | 过渡兼容性质,密评场景不应默认启用 |
注:套件标识经GB/T 38636-2020套件列表与GmSSL、gotlcp、Wireshark等公开实现源码交叉核对(Wireshark源码epan/dissectors/packet-tls-utils.c收录全部0xE0xx国密套件)。
套件演进体现两个趋势:①从前向安全性较弱的静态密钥交换(ECC_SM4_SM3)向前向安全的临时交换(ECDHE_SM4_SM3)迁移;②从CBC+MAC的"加密与校验分离"向GCM的AEAD一体化迁移。这与国际TLS 1.2→1.3的演进方向同构,但节奏与驱动力不同——国密侧由标准化进程与密评合规共同驱动。
2.3 密钥计算
TLCP密钥计算采用"主密钥→工作密钥"两级结构:握手协商产生预主密钥,经PRF(基于SM3/HMAC-SM3)派生主密钥,再由主密钥派生记录层的加密密钥、MAC密钥与IV。SM3在此承担全部密钥派生函数的杂凑底座,算法组合保持全链路国密化。
03 · 双证书握手流程
3.1 服务端认证握手(ECC模式)
3.2 双证书在握手中的分工
- 签名证书:用于ServerKeyExchange等握手消息的签名——证明"握手的对方确实持有该主体私钥",承担身份认证职能;
- 加密证书:其公钥用于加密客户端生成的预主密钥(或承载SM2密钥交换的静态密钥分量),承担密钥传输/协商职能——这正对应第3页所述"签名密钥自持、加密密钥KM托管"的架构在协议层的投射。
3.3 双向认证(客户端证书)
TLCP保留客户端认证能力:高安全场景(网银专业版、政务内网接入、SSL VPN)可要求客户端出示其SM2双证书,服务端验证客户端签名证书——实现通信双方的双向身份鉴别。这也是国密SSL VPN区别于普通HTTPS部署的核心能力之一,对钓鱼防护的含义将在第8页展开(双向认证使"仅仿冒服务端"的钓鱼成本显著抬高)。
04 · 与国际TLS及RFC 8998国密套件对比
4.1 协议层对比
| 维度 | TLS 1.2 | TLS 1.3 | TLCP(GB/T 38636-2020) |
|---|---|---|---|
| 握手往返 | 2-RTT(完整握手) | 1-RTT,支持0-RTT恢复 | 2-RTT级(参照TLS 1.1架构) |
| 密码套件 | 大量历史套件,含弱套件 | 仅5个AEAD套件,弱化协商 | 国密套件族(ECC/IBC × CBC/GCM) |
| 证书形态 | 单证书 | 单证书 | 双证书(签名+加密) |
| 前向安全 | 依赖套件(ECDHE套件具备) | 强制前向安全 | ECDHE_SM4_SM3套件具备 |
| 中间件兼容 | 成熟 | 成熟 | 国际设备/中间盒识别能力弱,常需透传或专用网关 |
| 可观测性 | CT强制(2018起) | CT强制 | 无CT机制 |
4.2 RFC 8998:走向国际框架的国密套件
IETF RFC 8998《ShangMi (SM) Cipher Suites for TLS 1.3》(2021年3月发布)定义了两个国密套件:TLS_SM4_GCM_SM3(0x00,0xC6)与TLS_SM4_CCM_SM3(0x00,0xC7)。其设计要点:保留TLS 1.3的1-RTT握手、0-RTT恢复与强制前向安全骨架;命名曲线注册curveSM2(0x0029);签名方案注册sm2sig_sm3(0x0708);服务端在TLS 1.3框架下使用双证书——签名证书用于握手签名,加密证书承载密钥交换所需的静态密钥。这一路线使国密算法可以运行在国际TLS 1.3协议栈之上,大幅降低国际互操作成本,是"算法自主+协议接轨"的代表性方案(Tongsuo/铜锁等已实现)。
选型启示:新建系统若需兼顾国际客户端与合规要求,可评估"RFC 8998套件+双证书"路线(国密TLS 1.3);对接存量国密生态(国密浏览器、SSL VPN网关)则以TLCP套件为主。二者并存期的协商策略设计详见第6页双栈部署。
05 · 部署模式与工程要点
5.1 典型部署拓扑
| 模式 | 结构 | 适用场景 |
|---|---|---|
| 网关代理模式 | 国密SSL卸载网关部署于业务前端,后端为明文或传统TLS | 存量系统快速改造、集中证书管理 |
| 服务端直改模式 | 应用服务器直接加载国密双证书(Tongsuo/GmSSL改造Nginx等) | 新建系统、性能敏感场景 |
| 双栈并存模式 | 同站点同时提供国际TLS与国密TLCP(同端口协商或分端口) | 需同时服务国际与国密客户端 |
| SSL VPN模式 | 网关-网关或客户端-网关国密隧道,支持双向认证 | 跨域互联、移动办公接入 |
5.2 工程要点清单
- 证书配置:服务端须同时正确配置签名证书与加密证书,两证书密钥用法不得错配(第3页红线);证书链需包含至国密根。
- 套件收敛:生产环境仅启用必要套件(优先ECDHE/GCM变体),禁用弱套件与静态交换套件的默认启用,除非对端兼容强制要求。
- SNI与域名:国密网关须正确处理SNI以支持多站点;证书CN/SAN与实际域名严格一致。
- 中间盒穿越:部分国际厂商负载均衡/WAF不能识别TLCP,需配置TCP透传或在网关层终结;上线前做全链路探测。
- 调试工具:主流Wireshark版本可解析GM/T 0024/TLCP流量;亦可使用Tongsuo/openssl s_client的-ntls选项联调。
- 性能:SM2握手比RSA-2048握手轻量(签名短、验签快),但国密算法在国产品密卡中的性能差异大,高并发场景应做压测基线。
server {
listen 443 ssl;
# 国际证书(单证书)
ssl_certificate rsa.crt;
ssl_certificate_key rsa.key;
# 国密双证书(签名+加密)
ssl_sign_certificate sm2_sign.crt;
ssl_sign_certificate_key sm2_sign.key;
ssl_enc_certificate sm2_enc.crt;
ssl_enc_certificate_key sm2_enc.key;
# 同时启用国密TLS与国际套件,按客户端能力协商
ssl_ciphersuites "TLS_SM4_GCM_SM3:TLS_AES_128_GCM_SHA256";
enable_ntls on;
}06 · 安全性分析
6.1 协议层风险
| 风险 | 说明 | 缓解 |
|---|---|---|
| 静态套件无前向安全 | ECC_SM4_SM3套件使用静态加密密钥参与交换,长期私钥泄露可回溯解密历史会话 | 优先ECDHE套件;对保密性要求高的通道禁用静态套件 |
| 协商降级 | 双栈部署中攻击者可能强制降级到非国密通道或弱套件 | 回退白名单+审计留痕(第6页);强制国密场景关闭国际通道 |
| 私钥集中存放 | 网关模式下一台设备承载大量服务端私钥(含KM托管接口),成为高价值目标 | 网关HSM化;私钥分级;访问与操作审计 |
| 实现缺陷 | 部分早期国密SSL实现对证书链校验、时间窗校验不严格 | 以标准符合性测试用例回归;选用过检测认证的产品 |
| 可观测性缺失 | 无CT机制使伪造/误签国密证书难以被全网发现 | CA侧签发监控+国密浏览器黑名单生态(第8页) |
6.2 与国际TLS的同构教训
国际TLS三十年的安全史(子课题04)表明:传输协议的实际安全水位由"默认配置、实现质量、密钥管理"三者决定,协议文本本身只是上限。TLCP同样遵循这一规律——密评与产品检测认证制度(第7页)正是为把"实现质量"纳入强制轨道而设。研究者与使用者应把关注重心从"协议是否国密"转向"套件是否收敛、私钥是否合规托管、回退是否受控、审计是否留痕"。
07 · 开源实现生态对照
| 项目 | 背景 | 协议/能力支持 | 典型用途 |
|---|---|---|---|
| Tongsuo(铜锁) | 蚂蚁集团开源,OpenSSL衍生 | TLCP双证书(NTLS)、RFC 8998套件、OpenSSL兼容API | 服务端/Nginx国密改造主流选项 |
| GmSSL | 北京大学团队开源 | GB/T 38636-2020 TLCP(版本标识0x0101)、国密X.509、SM9、ZUC | 协议研究、嵌入式与教学 |
| gotlcp | Go语言社区开源实现 | TLCP全部国密套件(0xE011~0xE05A)、双证书服务端/客户端 | Go服务端国密接入 |
| TencentKona国密套件 | 腾讯开源 | TLCP双证书、RFC 8998、PKCS#12/JKS国密证书密钥库、CRL/OCSP | Java/Android生态国密改造 |
| openHiTLS | 社区开源密码学套件 | TLCP 1.1(0x0101)、curveSM2、sm2sig_sm3、KeyUsage强制校验开关 | 终端与轻量化场景 |
| Wireshark | 开源网络分析工具 | 内置0xE0xx国密套件解析(含CBC/GCM全族) | TLCP流量抓取与联调分析 |
合规边界:开源实现适用于研发、联调与协议验证;生产环境承载商密业务的密码产品(SSL VPN网关、服务器密码机、签名验签服务器等)仍须选用具备商用密码产品认证证书的合规产品(第5、7页),开源组件与商用产品混用时须明确合规责任界面。
本节参考来源(本页)
以下均为真实可查的权威来源,用于支撑本页协议事实。
GB/T 38636-2020《信息安全技术 传输层密码协议(TLCP)》(2020-04-28发布,2020-11-01实施):国家标准全文公开系统 openstd.samr.gov.cn。
GM/T 0024-2014《SSL VPN技术规范》(TLCP前身,参照TLS 1.1架构):密码行业标准文本渠道 oscca.gov.cn。
IETF RFC 8998《ShangMi (SM) Cipher Suites for TLS 1.3》(2021年3月):rfc-editor.org/rfc/rfc8998。
Tongsuo(铜锁)项目NTLS/双证书部署文档:github.com/Tongsuo-Project/Tongsuo。
RFC 8446(TLS 1.3)与RFC 6066/7919等国际协议对照背景:rfc-editor.org。
国密套件标识(0xE011/0xE013/0xE051等)交叉验证来源:GmSSL源码(github.com/guanzhi/GmSSL)、gotlcp套件定义(gitee.com/Trisia/gotlcp)、Wireshark packet-tls-utils.c。
TencentKona国密套件开源公告(TLCP双证书与RFC 8998支持、PKCS#12/JKS国密证书密钥库):github.com/tencent/TencentKonaSMSuite。