当前位置: 首页 > news >正文

安全攻防 - 02 标准背景:国际 TLS、RFC 8998 与中国 TLCP

文章目录

  • 1. 国际 TLS:普通 HTTPS 的主流基础
    • 1.1 TLS 1.2
    • 1.2 TLS 1.3
  • 2. RFC 8998:TLS 1.3 里怎么用国密算法
  • 3. 中国 TLCP:GB/T 38636-2020
  • 4. SM2、SM3、SM4 分别负责什么
    • 4.1 SM2
    • 4.2 SM3
    • 4.3 SM4
  • 5. TLCP、GMSSL、NTLS 名字怎么对齐
  • 6. 为什么本工程选 Tencent Kona
  • 7. 标准和实现之间的关系
  • 8. 对接时的判断题
    • 8.1 对方说“我们是国密双证书”
    • 8.2 对方说“我们是 TLS 1.3 国密套件”
    • 8.3 对方只说“SM2 证书”
    • 8.4 对方给你 `.cer` 文件
  • 9. 本篇小结

这一篇回答一个经常让新手困惑的问题:

国密 SSL、TLCP、GMSSL、NTLS、TLS 1.3 国密套件、SM2 证书,到底是不是一回事?

结论先说:不是一回事。它们有关联,但不能混用。


1. 国际 TLS:普通 HTTPS 的主流基础

1.1 TLS 1.2

TLS 1.2 对应 RFC 5246,发布于 2008 年。它长期是互联网 HTTPS 的主力版本。

TLS 1.2 的特点是密码套件名字里通常包含很多信息,例如:

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

这个名字大概说明:

  • 用 ECDHE 做临时密钥交换;
  • 用 RSA 做认证;
  • 用 AES-128-GCM 做对称加密;
  • 用 SHA-256 做摘要/伪随机函数相关工作。

1.2 TLS 1.3

TLS 1.3 对应 RFC 8446,发布于 2018 年。它废弃了很多旧算法,握手流程也比 TLS 1.2 更现代。

TLS 1.3 的密码套件名字更短,例如:

TLS_AES_128_GCM_SHA256

为什么少了 RSA/ECDHE?因为 TLS 1.3 把“密钥交换、签名算法、对称加密”拆到不同扩展里协商,不再像 TLS 1.2 那样全塞在一个套件名里。


2. RFC 8998:TLS 1.3 里怎么用国密算法

RFC 8998 讲的是在 TLS 1.3 中使用 ShangMi/SM 算法的方式,包括:

TLS_SM4_GCM_SM3 TLS_SM4_CCM_SM3

它涉及:

  • SM2:签名/认证;
  • SM3:杂凑;
  • SM4:对称加密;
  • ECDHE over SM2 curve:密钥交换相关机制。

但是要特别注意:RFC 8998 是TLS 1.3 profile,不是 TLCP。

它也不是 IETF 标准轨文档,而是 informational RFC。RFC 8998 页面明确说明它不是 Internet Standards Track 规范,并且 SM 算法的使用不代表 IETF 推荐。

所以当对方说“国密 TLS 1.3”时,你要确认是不是 RFC 8998;当对方说“TLCP/GMSSL/NTLS”时,就不是 RFC 8998 这条线。


3. 中国 TLCP:GB/T 38636-2020

中国国家标准 GB/T 38636-2020《信息安全技术 传输层密码协议(TLCP)》 于 2020-04-28 发布,2020-11-01 实施,状态为现行。

TLCP 可以理解为一种“TLS-like”的传输层密码协议,但它不是普通 TLS 1.2,也不是 TLS 1.3。

Tencent Kona 的 README 里也解释过命名:GB/T 38636-2020 定义的名称是Transport layer cryptography protocol,在 Kona 项目里协议名叫TLCP,版本是1.1;历史上很多人也叫 GMSSL / GMSSL 1.1。

本工程配置的是:

protocol:TLCPv1.1enabled-protocols:-TLCPv1.1

所以本工程主线是TLCP v1.1 客户端接入,不是 TLS 1.3 + RFC 8998。


4. SM2、SM3、SM4 分别负责什么

国密 SSL/TLCP 里常见的算法是 SM2、SM3、SM4。

4.1 SM2

SM2 是椭圆曲线公钥密码算法系列。常见用途:

  • 数字签名;
  • 公钥加密;
  • 密钥交换;
  • 证书公钥算法。

标准入口:

  • GB/T 32918.2-2016 SM2 第 2 部分:数字签名算法
  • GB/T 32918.5-2017 SM2 第 5 部分:参数定义

在 TLCP 里,SM2 常用于服务端证书签名验证、ServerKeyExchange 签名验证,以及加密预主密钥等环节。

4.2 SM3

SM3 是密码杂凑算法。标准入口:GB/T 32905-2016 SM3 密码杂凑算法。

你可以把 SM3 类比为国密体系里的 SHA-256 角色:把任意长度输入压缩成固定长度摘要,用于签名、消息认证、密钥派生等场景。

本工程里一个关键配置是:

client-signature-schemes:-sm2sig_sm3

它会写入 Kona 系统属性:

com.tencent.kona.ssl.client.signatureSchemes=sm2sig_sm3

作用是让 ClientHello 告诉服务端:客户端支持 SM2 + SM3 的签名算法。

4.3 SM4

SM4 是分组密码算法。标准入口:GB/T 32907-2016 SM4 分组密码算法。

在 TLCP 里,SM4 是握手后真正加密业务数据的对称算法。常见模式:

SM4-GCM SM4-CBC

本工程默认套件:

TLCP_ECC_SM4_GCM_SM3 TLCP_ECC_SM4_CBC_SM3

5. TLCP、GMSSL、NTLS 名字怎么对齐

不同生态里名字不完全一致:

名字常见来源大概含义
TLCP国家标准、Tencent KonaGB/T 38636-2020 传输层密码协议
GMSSL / GMSSL 1.1历史称呼、部分库/业务方通常指国密 SSL/TLCP 一类协议
NTLSTongsuo/OpenSSL 衍生生态Tongsuo 中符合 GM/T 0024 SSL VPN 和 TLCP 的安全通信协议实现命名
TLS 1.3 + SMRFC 8998、部分云产品普通 TLS 1.3 框架中使用 SM2/SM3/SM4 套件

Tongsuo TLCP 使用手册 中说明,NTLS 在 Tongsuo 里指符合 GM/T 0024 SSL VPN 和 TLCP 协议的安全通信协议,并强调其特征是加密证书/私钥与签名证书/私钥分离。

所以你和服务端沟通时,不要只问:

你们是不是国密?

应该问:

你们端口跑的是 TLCP/GMSSL/NTLS,还是 TLS 1.3 + RFC 8998? 协议版本字符串是什么?服务端密码套件名称是什么?

6. 为什么本工程选 Tencent Kona

Java 里要做 TLCP,核心问题是 JDK 默认 Provider 不够。

Tencent Kona SM Suite 的官方 README 说明它是一组 Java 安全 Provider,覆盖 SM2、SM3、SM4、TLCP/GMSSL、TLS 1.3 with RFC 8998 等能力,并拆成多个模块:

Provider本工程用途
KonaCryptoSM2/SM3/SM4 基础算法
KonaPKIX国密证书、证书链、KeyStore
KonaSSLTLCP SSLContext、TrustManagerFactory、KeyManagerFactory

本工程没有直接依赖一个“万能国密客户端”,而是按 Java 安全体系拼装:

Security Provider → CertificateFactory / KeyStore / TrustManagerFactory → SSLContext → SSLSocketFactory → OkHttp → Forest

这样好处是:

  • 和 Java 生态兼容;
  • 可以明确看到哪个环节失败;
  • 可以在 Web 诊断页面展示证书、Provider、握手信息;
  • 业务层仍然用 Forest 发 HTTP 请求,不需要重写 multipart。

7. 标准和实现之间的关系

标准告诉你“协议应该是什么样”,实现告诉你“这门语言里怎么用”。

以本工程为例:

层次标准/实现在工程中的落点
协议标准GB/T 38636-2020 TLCPprotocol: TLCPv1.1
算法标准SM2/SM3/SM4 国家标准TLCP_ECC_SM4_GCM_SM3sm2sig_sm3
Java ProviderTencent KonaKonaProviderInitializer注册 Provider
HTTP 客户端Forest + OkHttpDdFileUploadClient/InteractiveUploadService
兼容补丁项目自定义 socket/session 包装TlcpProtocolMaskingSsl*

也就是说:标准没有直接告诉你怎么绕过 OkHttp 的枚举;实现代码必须处理这些生态边界。


8. 对接时的判断题

8.1 对方说“我们是国密双证书”

大概率是 TLCP/GMSSL/NTLS。你要继续问:

  • 服务端签名证书和加密证书是否都配好了?
  • 客户端是否需要双证书?
  • 支持哪些套件:ECC 还是 ECDHE?
  • 端口是否只跑 TLCP?

8.2 对方说“我们是 TLS 1.3 国密套件”

可能是 RFC 8998。你要继续问:

  • 支持TLS_SM4_GCM_SM3还是TLS_SM4_CCM_SM3
  • 是否要求 SM2 证书?
  • Java 客户端使用哪个 Provider?
  • 是否支持普通浏览器访问?

8.3 对方只说“SM2 证书”

这不够。SM2 证书可以出现在不同协议里。你要问协议版本和密码套件。

8.4 对方给你.cer文件

这也不够。你要问它是:

  • 根 CA?
  • 中间 CA?
  • 服务端签名证书?
  • 服务端加密证书?
  • 客户端证书?

不同证书放的位置完全不同。


9. 本篇小结

  • 国际 HTTPS 主流基础是 TLS 1.2/1.3。
  • RFC 8998 是 TLS 1.3 中使用国密算法的一种 profile,不等于 TLCP。
  • TLCP 是 GB/T 38636-2020 定义的传输层密码协议,本工程使用TLCPv1.1
  • SM2、SM3、SM4 分别覆盖公钥、杂凑、对称加密能力。
  • GMSSL、NTLS、TLCP 常在不同生态里混叫,对接时必须问清协议版本和套件。
  • 本工程用 Tencent Kona 把国密算法、证书、TLCP SSLContext 接入 Java,再桥接到 OkHttp/Forest。

下一篇我们进入 TLCP 握手本身,重点看双证书和密码套件。

http://www.jsqmd.com/news/888797/

相关文章:

  • Jetson Nano/Orin避坑指南:手把手解决Realsense D435i IMU数据丢失和realsense-viewer黑屏问题
  • Tims天好中国股权曝光:腾讯持股12% 2025年净亏4亿 资金流动性趋紧
  • 从SSC到SEE:高通Sensor架构演进对Android驱动工程师意味着什么?
  • 构建低成本高可用网络爬虫系统:从架构设计到成本控制实战
  • 中国医学科学研究院考研辅导班靠谱推荐:高性价比与良好口碑实力选择 - michalwang
  • 为自托管AI构建安全Shell沙盒:Docker容器隔离实践
  • DeepSeek模型训练数据溯源指南:如何在48小时内完成IP权属链路审计?
  • Android 11 WiFi MAC地址随机化失效了?手把手教你排查与修复(附配置属性详解)
  • 创客匠人:当知识付费遇上AI:学习这件事正在悄悄改变
  • 一篇看懂Linux下的IIC驱动
  • 2026年京东云618活动时间、活动入口、优惠活动详细解读
  • CentOS7 OpenSSL 1.1.1 ABI冲突与安全隔离部署指南
  • HarmonyOS ClickUtil 节流与防抖:彻底搞懂按钮防重复点击
  • 从文本到PDF:极简文档转换工具的技术实现与设计哲学
  • 2026年亲测有效:3种高效降论文AIGC率的方法 - 降AI实验室
  • JMeter高并发压测脚本设计范式:可伸缩、可观测、可诊断
  • 如何快速定位手机号码地理位置:终极开源工具使用指南
  • 从零到一:手把手教你用Playwright+Pytest+Yaml+Allure搭建一个能跑起来的UI自动化框架(保姆级避坑指南)
  • 从零实现五子棋AI:极小化极大算法与Alpha-Beta剪枝实战
  • 2026 年福建莆田全屋高端定制家居设计与选材选型指南
  • 3步解锁百度网盘真实下载速度:告别龟速下载的技术秘籍
  • Java集合全解析:体系架构+分类详解+底层原理+使用场景
  • 01-认知篇-总览-HybridCLR是什么
  • 基于大语言模型的GitHub PR描述自动生成工具设计与实践
  • 微信聊天记录误删别慌!官方恢复方法实操指南
  • 安全攻防 - 03 TLCP 握手:双证书、密码套件与常见术语
  • 用Xilinx Artix-7 FPGA驱动TDC-GPX2:一个完整的状态机SPI控制模块实现
  • 学生党免费降AI工具实测:靠谱降重降AI首选推荐
  • 2026年昭通市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • 三步实现百度网盘高速下载:告别龟速,拥抱全速时代