一种基于支持硬件加速国密算法的TLS协议实现方法技术

技术编号:35508152 阅读:19 留言:0更新日期:2022-11-09 14:21
本发明专利技术公开了一种基于支持硬件加速国密算法的TLS协议实现方法,包括以下步骤:步骤1、配置客户端协议版本、签名算法、密码套件列表;步骤2、客户端生成公私钥、密钥交换参数;步骤3、客户端生成握手请求消息传至服务端;步骤4、服务端选择通讯协议、签名证书、密码套件;步骤5、服务端生成公私钥、密钥交换参数、共享密钥;步骤6、服务端生成握手回应消息传至客户端并得到会话密钥;步骤7、服务端对签名证书进行加密传至客户端;步骤8、客户端息得到会话密钥;步骤9、客户端通过会话密钥对服务端签名证书进行解密和验证完成握手;步骤10、服务端、客户端进行消息交互。本发明专利技术既能保证通信的安全性,又提升了运行效率。又提升了运行效率。又提升了运行效率。

【技术实现步骤摘要】
一种基于支持硬件加速国密算法的TLS协议实现方法


[0001]本专利技术涉及通讯协议方法领域,具体是一种基于支持硬件加速国密算法的TLS协议实现方法。

技术介绍

[0002]国密算法,即国家商用密码算法,是由国家密码管理局认定和公布的密码算法标准及其应用规范,包括SM系列等。TLS是国际标准的通讯传输层安全协议,在保护用户数据机密性、完整性以及身份鉴别等方面发挥了重大作用。目前国际标准的TLS1.3协议中的密钥协商以及配套的密码套件并不支持国密算法;而现行对应TLS的国家标准GB/T 38636

2020信息安全技术传输层密码协议(TLCP),其握手过程类似TLS1.2,并没有引入TLS1.3的新特性;同时目前国内大部分基于golang的国密TLS协议实现,使用的国密算法仍是纯软实现,性能上相较对应的国际算法有差距。

技术实现思路

[0003]本专利技术的目的是提供一种于支持硬件加速国密算法的TLS协议实现方法,以解决现有技术纯软国密算法套件实现的TLS协议安全性和性能表现较差的问题。
[0004]为了达到上述目的,本专利技术所采用的技术方案为:
[0005]一种基于支持硬件加速国密算法的TLS协议实现方法,包括以下步骤:
[0006]步骤1、配置客户端的TLS协议版本列表、签名算法列表、密码套件列表,其中客户端的TLS协议版本列表中以TLS1.3协议作为优先级最高的通讯协议,客户端的签名算法列表中以签名证书SM2

with
‑<br/>SM3作为优先级最高的签名证书,客户端的密码套件列表中以国密密码套件TLS_SM4_GCM_SM3作为优先级最高的密码套件;
[0007]步骤2、客户端采用密钥算法生成客户端的公钥、私钥以及密钥交换参数;
[0008]步骤3、客户端将步骤1中TLS协议版本列表信息、签名算法列表信息、密码套件列表信息以及步骤2中密钥算法信息和密钥交换参数,组合为握手请求消息,并由客户端将所述握手请求消息传输至服务端;
[0009]步骤4、服务端收到客户端发送的握手请求消息后,根据握手请求消息包含的内容,选择优先级最高的TLS1.3协议作为服务端与客户端之间的通讯协议、选择签名证书SM2

with

SM3作为服务端的签名证书,以及选择国密密码套件TLS_SM4_GCM_SM3作为服务端的密码套件;
[0010]步骤5、服务端根据握手请求消息包含的内容,采用与客户端相同的密钥算法生成服务端的公钥、私钥以及密钥交换参数,并结合客户端的密钥交换参数计算出客户端、服务端双方的共享密钥;
[0011]步骤6、服务端将步骤4中服务端的通讯协议信息、签名证书信息、密码套件信息以及步骤5中的密钥算法信息、密钥交换参数,组合为握手回应消息,由服务端将握手回应消息传输至客户端,并且服务端通过步骤5得到的共享密钥派生得到会话密钥;
[0012]步骤7、服务端通过步骤6得到的会话密钥对服务端选择的签名证书进行加密,并由服务端将加密的签名证书传输至客户端;
[0013]步骤8、客户端收到服务端发送的握手回应消息后,根据握手回应消息的内容,采用密钥算法,基于服务端的密钥交换参数、客户端的公钥,计算得到所述共享密钥,并通过共享密钥派生得到所述会话密钥;
[0014]步骤9、客户端通过步骤8得到的会话密钥,对收到的服务端的签名证书进行解密和验证,验证通过完成服务端、客户端的握手;
[0015]步骤10、握手完成后,服务端、客户端双方进行消息交互,消息交互时通过所述会话密钥对信息进行加解密和验证。
[0016]进一步的,步骤1所述的国密密码套件TLS_SM4_GCM_SM3中,使用SM4算法作为握手成功后的通信用对称加密算法,使用SM3作为作为GCM分组模式中的验证算法。
[0017]进一步的,所述密钥算法为椭圆曲线加密算法,具体采用SM2曲线SM2

P

256。
[0018]步骤2中,客户端将椭圆曲线ID和客户端公钥作为客户端的密钥交换参数;步骤5中,服务端将椭圆曲线ID和服务端的公钥作为服务端的密钥交换参数。
[0019]步骤5中,服务端根据椭圆曲线、客户端密钥交换参数中包含的公钥、服务端的私钥计算得到共享密钥;步骤8中,客户端根据椭圆曲线、服务端密钥交换参数中包含的服务端公钥、客户端的公钥计算得到所述共享密钥。
[0020]进一步的,步骤6中,服务端派生得到的会话密钥根据需要进行更新。
[0021]本专利技术提供了一种基于支持硬件加速国密算法的TLS协议实现方法。本专利技术实现了支持硬件加速的国密算法SM2、SM3、SM4,以提升运算效率;然后将前述国密算法应用于TLS1.3协议的实现,既能保证通信的安全性,又提升了运行效率。因此,本专利技术相比现有技术基于golang的国密TLS协议,具有以下优点:
[0022]1.相比国际标准的TLS1.3,本专利技术方法的密钥协商过程支持国密椭圆曲线SM2

P

256,并采用国密算法的密码套件TLS_SM4_GCM_SM3,在安全自主可控上有明显优势。
[0023]2.相比国家标准的TLCP,本专利技术方法的握手过程支持TLS1.3的新特性,更加安全,也更加高效。(使用更少的通信来回,协商出更安全的会话密钥)
[0024]3.相比目前基于golang的主流的国密TLS实现库,通过使用支持硬件加速功能的国密算法,有效提高了TLS握手过程的性能表现。
附图说明
[0025]图1是本专利技术实施例方法流程框图。
具体实施方式
[0026]下面结合附图和实施例对本专利技术进一步说明。
[0027]如图1所示,本实施例提供了一种将国密算法应用于TLS1.3协议的实现方法,基本过程与TLS1.3标准(RFC 8446)一致,但在服务端与客户端进行密钥协商过程中,支持使用SM2

P

256曲线进行密钥交换,并添加了密码套件TLS_SM4_GCM_SM3,该密码套件使用支持硬件加速的国密算法SM3与SM4,本实施例具体包括以下步骤:
[0028](1)配置客户端支持的TLS协议版本列表,TLS协议版本列表包括优先级最高的通
讯协议TLS1.3。
[0029]开始握手之前,客户端需要准备握手请求消息ClientHello,从支持的TLS协议版本列表开始,通过配置客户端的TLS协议版本列表,使TLS协议版本列表支持的最高版本是TLS1.3。
[0030](2)配置客户端支持的签名算法列表,加入支持硬件加速的签名证书SM2

with

SM3。
[0031]国际标准的TLS1.3支持的签名算法没有支持硬件加速的国密签名算法SM2

with

SM本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于支持硬件加速国密算法的TLS协议实现方法,其特征在于,包括以下步骤:步骤1、配置客户端的TLS协议版本列表、签名算法列表、密码套件列表,其中客户端的TLS协议版本列表中以TLS1.3协议作为优先级最高的通讯协议,客户端的签名算法列表中以签名证书SM2

with

SM3作为优先级最高的签名证书,客户端的密码套件列表中以国密密码套件TLS_SM4_GCM_SM3作为优先级最高的密码套件;步骤2、客户端采用密钥算法生成客户端的公钥、私钥以及密钥交换参数;步骤3、客户端将步骤1中TLS协议版本列表信息、签名算法列表信息、密码套件列表信息以及步骤2中密钥算法信息和密钥交换参数,组合为握手请求消息,并由客户端将所述握手请求消息传输至服务端;步骤4、服务端收到客户端发送的握手请求消息后,根据握手请求消息包含的内容,选择优先级最高的TLS1.3协议作为服务端与客户端之间的通讯协议、选择签名证书SM2

with

SM3作为服务端的签名证书,以及选择国密密码套件TLS_SM4_GCM_SM3作为服务端的密码套件;步骤5、服务端根据握手请求消息包含的内容,采用与客户端相同的密钥算法生成服务端的公钥、私钥以及密钥交换参数,并结合客户端的密钥交换参数计算出客户端、服务端双方的共享密钥;步骤6、服务端将步骤4中服务端的通讯协议信息、签名证书信息、密码套件信息以及步骤5中的密钥算法信息、密钥交换参数,组合为握手回应消息,由服务端将握手回应消息传输至客户端,并且服务端通过步骤5得到的共享密钥派生得到会话密钥;步骤7、服务端通过步骤6得到的会话密钥对服务端选择的签名证书进行加密,并由服务端将加密的签名证书传输至客户端;步骤8、客户端收到服务端发送的握手回应消息后,根...

【专利技术属性】
技术研发人员:董仁武赵春黄正任志魁柏付刚
申请(专利权)人:安徽科大国创软件科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1