国密浏览器如何完成SM2国密SSL协议协商

时间:2024-04-09 13:33:35

国密浏览器需要遵循国密SSL协议规范GM/T 0024-2014。GM/T 0024-2014没有单独规范 SSL协议的文件,而是在SSL v*n技术规范中定义了国密SSL协议。国密SSL协议(SSL v*n协议)包括握手协议、密码规格变更协议、报警协议、网关到网关协议和记录层协议。握手协议用于身份鉴别和安全参数协商;密码规格变更协议用于通知安全参数的变更;报警协议用于关闭通知或对错误进行报警;网关到网关协议用于建立网关和网关的传输层隧道;记录层协议用于传输数据的分段、压缩及解压缩、加密及解密、完整性校验等。

一、SSL握手协议的过程

国密SSL握手协议过程如下:

(1)交换Hello消息来协商密码套件,交换随机数,决定是否会话重用;

(2)交换必要的参数,协商预主**

(3)交换证书信息,用于验证对方

(4)使用预主**和交换的随机数生成主**

(5)向记录层提供安全参数

(6)验证双方计算的安全参数的一致性、握手过程的真实性和完整性

国密浏览器客户端发送Hello消息给服务端,服务端回应服务端Hello消息。国密浏览器客户端Hello和服务端hello用于在客户端和服务端进行基于ECC算法(或其他密码算法)的协商,以及确定安全传输能力,包括协议版本、会话表示、密码套件等属性,并产生和交换随机数。

在客户端hello和服务端hello之后是身份验证和**交换过程。包括服务端证书、服务端**交换,客户端证书、客户端**交换。在服务端发送完hello之后,发送自己的证书消息,服务端**交换消息。如果服务端需要验证客户端身份,则向客户端发送证书请求信息,客户端返回消息。

然后国密浏览器客户端发生**交换消息,协商**交换算法。接着客户端发送密码规格变更消息,然后客户端立即使用刚协商的算法和**,加密并发送握手结束消息。服务端回应密码规格变更消息,使用刚协商的算法和**加密并发送握手结束消息。至此,握手过程结束,服务端和客户端开始数据安全传输。

国密浏览器如何完成SM2国密SSL协议协商

二、国密标准支持的密码套件

国密SSL协议规范要求,客户端(国密浏览器)所支持的密码套件列表,按照密码套件使用的优先级顺序排列,优先级最高的密码套件排在首位。每个密码套件包括一个密码交换算法、一个加密算法和一个校验算法。服务器端将在密码套件列表中选择一个与之匹配的密码套件,如果没有可匹配的密码套件,应返回握手失败报警消息并关闭连接。GMT 0024-2014国密标准支持的密码套件如下表所示。其中,实现ECC和ECDHE的算法为SM2,实现IBC和IBSDH的算法为SM9,RSA算法的使用应符合国家密码管理主管部门的要求。

国密浏览器如何完成SM2国密SSL协议协商

三、国密浏览器展示国密SSL证书的效果

使用密信国密浏览器访问配置国密SSL证书的站点(国密SSL测试站点sm2test.ovss.cn),实现SM2 SSL证书的显示效果如下图。点击浏览器安全锁标识,详情中显示该连接使用GM/T 0024-2014(国密SM2),使用ECC_SM4_SM3进行加密,同时使用SM3进行讯息身份验证并使用SM2作为**交换机制。

国密浏览器如何完成SM2国密SSL协议协商