国密SSL通信的协议版本选择并非单一,而是经历了一个演进过程,主要涉及 TLCP 1.1 和 国密TLS 1.2 这两个核心版本。
一、国密SSL的协议演进
国密SSL协议的发展可以大致分为三个阶段:
1. 早期版本 (TLCP 1.1):这是目前国内广泛部署的国密SSL协议版本。它以 TLS 1.1 为蓝本进行修改,因此也被称为“国密SSL 1.1”。其技术规范主要定义在 GM/T 0024-2014《SSL VPN技术规范》中。
2. 过渡版本 (国密TLS 1.2):该版本兼容了TLS 1.2的协议框架,是在TLCP 1.1基础上向国际标准靠拢的产物。
3. 最新进展 (国密TLS 1.3):2021年发布的 RFC 8998 标准,正式将国密算法引入TLS 1.3,标志着国密SSL与国际最新TLS标准的融合。
二、核心版本对比:TLCP 1.1 vs 国密TLS 1.2
这两个版本是当前选择的核心,它们的主要区别如下:
特性 TLCP 1.1 (早期广泛部署) 国密TLS 1.2 (过渡版本)
基础协议 以 TLS 1.1 为蓝本 兼容 TLS 1.2 框架
技术规范 GM/T 0024-2014《SSL VPN技术规范》 无独立规范,在GM/T 0024-2014基础上演进
协议版本号 0x0101 沿用TLS 1.2的版本号 0x0303
核心特性 - 双证书体系(签名证书+加密证书)<br>- 取消DH密钥交换<br>- 使用SM2/SM3/SM4国密算法 - 支持单/双证书<br>- PRF算法与TLS 1.2类似,但哈希固定为SM3
前向安全性 不支持 取决于具体密码套件实现
三、版本号的特殊性:0x0101
国密SSL选择了一个特殊的版本号 `0x0101`,而非标准TLS的 `0x0301`、`0x0302`、`0x0303`。这主要是为了避免与未来TLS版本号冲突。
然而,这个选择也带来了兼容性问题:许多标准网络库会将 `0x0101` 视为无效版本,导致握手失败。因此,在实际开发中,需要修改代码以识别和处理这个特殊的版本号。
四、总结与选择建议
如何选择:如果你的系统需要与较早的国密生态(如特定版本的国密浏览器、网关)互通,TLCP 1.1 是必须支持的基础版本。如果追求更好的性能和与国际TLS生态的兼容性,国密TLS 1.2 是更现代的选择。对于新系统,可关注基于 RFC 8998 的国密TLS 1.3,它提供了更好的安全性和性能。
实施要点:无论选择哪个版本,都需注意其双证书体系(签名证书和加密证书)以及国密算法套件(如 `ECC_SM4_SM3`)的正确配置。同时,要特别留意协议版本号可能带来的兼容性问题。