国密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`)的正确配置。同时,要特别留意协议版本号可能带来的兼容性问题。