基于TLS协议实现加密通信的方法及装置与流程

文档序号:19075234发布日期:2019-11-08 21:22阅读:446来源:国知局
导航: X技术> 最新专利> 电子通信装置的制造及其应用技术
基于TLS协议实现加密通信的方法及装置与流程

本发明涉及互联网技术领域,特别是涉及基于TLS协议实现加密通信的方法及装置。



背景技术:

安全传输层协议TLS用于在两个通信应用程序之间提供保密性和数据完整性,TLS正在越来越广泛的用于保障互联网数据安全。

TLS协议的基本过程包括:(1)客户端向服务器端索要并验证公钥;(2)双方协商生成"对话密钥";(3)双方采用"对话密钥"进行加密通信。上面过程的前两步,又称为"握手阶段"(handshake),"握手阶段"涉及如下四次通信过程:

H1、客户端发出请求(ClientHello)

客户端(通常是浏览器)先向服务器发出加密通信的请求,这被叫做ClientHello请求。该请求中包括客户端支持的协议版本,比如TLS 1.0版;一个客户端生成的随机数,稍后用于生成"对话密钥";客户端支持的加密方法,比如RSA公钥加密;客户端支持的压缩方法等信息。

H2、服务器回应(SeverHello)

服务器收到客户端请求后,向客户端发出回应,该回应中包含服务器端确认使用的加密通信协议版本,比如TLS 1.0版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通信;一个服务器生成的随机数,稍后用于生成"对话密钥";确认使用的加密方法,比如RSA公钥加密;以及一张数字证书。

H3、客户端回应

客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信;如果证书没有问题,客户端就会从证书中取出服务器的公钥,然后向服务器发送下面信息:

一个随机数(也称作pre-master key)。该随机数用服务器公钥加密,防止被窃听;编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送;客户端握手结束通知,表示客户端的握手阶段已经结束。

H4、服务器的最后回应

服务器收到客户端的随机数pre-master key之后,计算生成本次会话所用的"会话密钥"。然后向客户端最后发送下面信息:

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送;服务器握手结束通知,表示服务器的握手阶段已经结束。

至此,握手阶段全部结束。接下来客户端与服务器进入加密通信,相当于使用普通的HTTP协议,不同的是采用"会话密钥"加密通信内容。

然而目前TLS协议中所定义的标准密码算法均为国外设计的密码算法,其安全性尚未得到充分的证明。并且由于现有TLS协议的服务器端软件和客户端软件也绝大多数都由国外开发和维护,导致其难以兼容其他密码算法。



技术实现要素:

基于此,本发明实施例提供基于TLS协议实现加密通信的方法及装置,能够扩展TLS协议的密码算法。

本发明一方面提供基于TLS协议实现加密通信的方法,包括:

将预设的计算模块配置到服务器端软件中,所述计算模块兼容TLS标准的密码算法,还兼容自定义的密码算法;

接收客户端的加密通信请求,根据所述加密通信请求识别所述客户端支持的加密方法;

从所述计算模块兼容的密码算法中选择出与所述客户端支持的加密方法相适应的密码算法,采用选出的密码算法与所述客户端进行加密通信。

本发明还提供一种基于TLS协议实现加密通信的方法,包括:

读取预设的配置项信息,判断本端是否支持自定义的密码算法;

向服务器端发送加密通信请求,接收服务器对所述加密通信请求的回应消息;

若本端支持自定义的密码算法,检测所述数字证书中是否存在用于存放自定义的非对称密码算法对应的公钥和自定义的对称密码算法标识的扩展项;若存在,缓存自定义的非对称密码算法对应的公钥和自定义的对称密码算法标识到本地;

构造自定义非对称密码算法加密结果SecretTLS,并根据缓存的公钥对所述SecretTLS加密得到自定义密文SelfCipher;将所述自定义密文SelfCipher作为TLS协议中定义的客户端密钥交换消息ClientKeyExchange中的一部分;发送所述ClientKeyExchange消息至服务器;

采用自定义的密码算法与服务器端进行加密通信。

本发明还提供一种TLS协议的服务器端装置,包括:

配置模块,用于将预设的计算模块配置到服务器端软件中,所述计算模块兼容TLS标准的密码算法,还兼容自定义的密码算法;

请求接收模块,用于接收客户端的加密通信请求,根据所述加密通信请求识别所述客户端支持的加密方法;

算法选择模块,用于从所述计算模块兼容的密码算法中选择出与所述客户端支持的加密方法相适应的密码算法,采用选出的密码算法与所述客户端进行加密通信。

本发明还提供一种TLS协议的客户端装置,包括:

检测模块,用于读取预设的配置项信息,判断本端是否支持自定义的密码算法;

加密请求模块,用于向服务器端发送加密通信请求,接收服务器对所述加密通信请求的回应消息,所述回应消息包括服务器端的数字证书;

证书解析模块,用于若本端支持自定义的密码算法,检测所述数字证书中是否存在用于存放自定义的非对称密码算法对应的公钥和自定义的对称密码算法标识的扩展项;若存在,缓存自定义的非对称密码算法对应的公钥和自定义的对称密码算法标识到本地;

回应模块,用于构造自定义非对称密码算法加密结果SecretTLS,并根据缓存的公钥对所述SecretTLS加密得到自定义密文SelfCipher;将所述自定义密文SelfCipher作为TLS协议中定义的客户端密钥交换消息ClientKeyExchange中的一部分;发送所述ClientKeyExchange消息至服务器;

通信模块,用于采用自定义的密码算法与服务器端进行加密通信。

上述技术方案,通过将预设的计算模块配置到服务器端软件中,所述计算模块兼容TLS标准的密码算法,还兼容自定义的密码算法;当接收客户端的加密通信请求时,根据所述加密通信请求识别所述客户端支持的加密方法;并能够从所述计算模块兼容的密码算法中选择出与所述客户端支持的加密方法相适应的密码算法,使得服务器端采用选出的密码算法与所述客户端进行加密通信。仅需为主流的服务器端软件(如:Weblogic,Tomcat,IIS等)配置具有兼容功能的计算模块,即可使得服务器端同时支持TLS标准密码算法和自定义密码算法,同时为支持自定义密码算法和不支持自定义密码算法的客户端提供服务,有利于自定义密码算法在实际应用环境中的推广。

附图说明

图1为一实施例的基于TLS协议实现加密通信的方法的示意性流程图;

图2为另一实施例的基于TLS协议实现加密通信的方法的示意性流程图;

图3为一实施例的TLS协议的服务器端装置的示意性结构图;

图4为一实施例的TLS协议的客户端装置的示意性结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一实施例的基于TLS协议实现加密通信的方法的示意性流程图;在该实施例中,是以该方法应用于TLS系统中服务器端为例进行说明。如图1所示,本实施例中的基于TLS协议实现加密通信的方法包括步骤:

S11,将预设的计算模块配置到服务器端软件中,所述计算模块兼容TLS标准的密码算法,还兼容自定义的密码算法;

本实施例中所述TLS标准的密码算法、自定义的密码算法均包括对称密码算法和非对称密码算法。TLS标准的非对称密码算法和自定义的非对称密码算法为满足以下条件一或条件二的算法:

条件一:在TLS系统不需支持TLS标准对称密码算法与自定义对称密码算法的兼容的情况下,要求自定义非对称密码算法对TLS协议中pre_master_secret数据的加密结果的长度小于等于TLS标准非对称密码算法对pre_master_secret加密结果的长度;其中,pre_master_secret为TLS协议中用于产生主密钥的一段随机数。

条件二:在TLS系统需支持TLS标准对称密码算法与自定义对称密码算法的兼容的情况下,则要求自定义非对称密码算法对TLS协议中pre_master_secret、client_random以及server_random这三段数据以及一个字节的描述信息的加密结果的长度小于等于TLS标准非对称密码算法对pre_master_secret加密结果的长度;其中,client_random为TLS协议中定义的客户端随机数;server_random为TLS协议中定义的服务器端随机数;

所述TLS标准对称密码算法和自定义对称密码算法为满足以下条件三的算法:

条件三:若需支持TLS标准对称密码算法与自定义对称密码算法的兼容,则要求TLS标准对称密码算法与自定义对称密码算法的密钥长度相等;当对称密码算法为分组密码算法时,还需在密钥长度相等的基础上进一步要求TLS标准对称密码算法与自定义对称密码算法的分组长度相等。

优选的,其中TLS标准的非对称密码算法例如RSA算法,TLS标准的对称密码算法例如AES128算法;自定义的非对称密码算法例如国密SM2算法,自定义的对称密码算法例如国密SM4算法。

优选的,将预设的计算模块配置到服务器端软件中之后,在为服务器端配置TLS标准的非对称密码算法的密钥对时,还需配置所述自定义的非对称密码算法对应的密钥对;并且,还需在服务器端的数字证书中增设对应的自定义扩展项,用于存放自定义的非对称密码算法的公钥,以及存放自定义对称密码算法的标识。例如:若所述TLS标准密码算法包括RSA算法和AES128算法;所述自定义密码算法包括国密SM2算法(也称SM2椭圆曲线公钥密码算法)和国密SM4算法(也称SM4分组密码算法),则在为服务器端配置RSA密钥对,还需配置对应的SM2密钥对;在服务器端的RSA公钥签发的数字证书中增设两个自定义扩展项,一个用于存放SM2公钥,另一个用于存放SM4算法标识。

由于对现有的自定义非对称算法而言,可根据其对应的公钥长度判断其算法类型,因此可不用存放自定义非对称算法的标识。当然,若是难以根据其对应的公钥长度判断其算法类型的自定义非对称算法,则还需在自定义扩展项中存放该自定义非对称算法的标识。

S12,接收客户端的加密通信请求,根据所述加密通信请求识别所述客户端支持的加密方法;

本实施例中,客户端通过两个配置项来分别确定自身是否支持自定义的非对称密码算法和自定义的对称密码算法。上述加密通信请求中包含该配置项信息。

S13,从所述计算模块兼容的密码算法中选择出与所述客户端支持的加密方法相适应的密码算法,采用选出的密码算法与所述客户端进行加密通信。

本实施例中,若客户端不支持自定义的非对称密码算法和自定义的对称密码算法,则服务器端选择TLS标准非对称密码算法或TLS标准对称密码算法与所述客户端进行加密通信;若客户端支持自定义的非对称密码算法和自定义的对称密码算法,则服务器端选择自定义的非对称密码算法或自定义的对称密码算法与所述客户端进行加密通信。

下面对实现上述实施例基于TLS协议实现加密通信的方法的进行进一步的说明。实现所述基于TLS协议实现加密通信的方法所对应的TLS系统包括三部分:配置具有兼容功能的计算模块、将所述计算模块应用于TLS协议时的对TLS系统进行配置、以及客户端与服务器端基于所述TLS系统的交互方案。下面分别对这三部分进行示例性说明。

一)、配置具有兼容功能的计算模块

本实施例的计算模块支持非对称密码算法和对称密码算法,其中非对称密码算法兼容TLS标准非对称密码算法(以RSA为例)和自定义非对称密码算法(以国密SM2为例),对称密码算法兼容TLS标准对称密码算法算法(以AES128为例)和自定义对称密码算法(以国密SM4为例)。具体设计见下面3个部分的描述:

1.自定义密文(以下也由SelfCipher表示)的格式:设置自定义密文的总长度等于TLS标准非对称密码算法对TLS协议中pre_master_secret加密结果的长度;所述密文SelfCipher的结构至少包含cipher和padding两个部分,其中cipher表示SecretTLS的自定义非对称密码算法加密结果;padding为填充字节,填充字节数大于等于0,用于保证自定义密文的长度等于TLS标准非对称密码算法对TLS协议中pre_master_secret加密结果的长度。所述SecretTLS由必须存在的pre_master_secret部分以及可能存在的infoBytes、client_random、server_random部分构成;infoBytes、client_random、server_random作为一个整体,三者同时存在或者同时不存在。pre_master_secret表示TLS协议定义的pre_master_secret,即TLS协议中用于产生主密钥的一段随机数;infoBytes为至少一个字节的描述信息,用于描述当前TLS版本、自定义对称算法类型等信息;client_random表示TLS协议定义的客户端随机数client_random;server_random表示TLS协议定义的服务器端随机数server_random。

例如,自定义SM2密文SelfCipher的总长度等于RSA私钥的模长,要求模长不小于2048比特(256字节),定义为以下ASN.1结构的DER编码结构:

其中各项的定义为:

version:1个字节用于标识自定义SM2密文格式的版本;

cipher:SecretTLS的SM2加密结果,即cipher=SM2Enc(SecretTLS),SecretTLS的定义见后;

cipher CRC32:cipher的4个字节CRC32校验码;

padding:填充字节,填充字节数大于等于0,用于保证自定义SM2密文的长度正好等于RSA私钥的模长;

SecretTLS定义为以下ASN.1结构的DER编码结构:

其中各项的定义为:

versionTLS:1个字节用于标识TLS协议的版本;

symmAlgo:1个字节非0值用于标识自定义对称密码算法的类型,若该值为0则表示不支持自定义对称密码算法;

pre_master_secret:TLS协议定义的pre_master_secret,对RSA算法目前定义为48字节;

client_random:TLS协议定义的客户端随机数,目前定义为32字节;

server_random:TLS协议定义的服务器端随机数,目前定义为32字节。

2.将对称密钥表的每条记录配置为由以下4个数据列构成:

SymmAlgo、RecordTime、client_write_key、server_write_key,

其中每个列的含义如下:

SymmAlgo:用于标识自定义对称密码算法的类型,定义为非0正整数值;

RecordTime:用于标识该条记录创建时的时间;

client_write_key:TLS协议中所定义的client_write_key,即TLS协议中客户端进行写操作时,对数据进行加密所使用的密钥;

server_write_key:TLS协议中所定义的server_write_key,即TLS协议中服务器端进行写操作时对数据进行加密所使用的密钥。

优选的,还可设置所述计算模块的维护机制为:还每隔一段时间定时清除对称密钥表中存在时长超出设定限值的记录,可根据计算模块内部维护的当前时间与记录的RecordTime来计算出记录在对称密钥表中的存在时长。该维护机制有利于整个系统保持长时间的正常运行。

3.配置服务器端的计算逻辑,包括:

3.1、计算模块进行自定义非对称密码算法解密计算时,对输入数据进行分析并执行相应的计算,计算模块完成一次自定义非对称密码计算的过程由以下若干个步骤完成:

步骤1,对输入数据的内容进行分析,输入数据可分为三种情况:

(1)自定义密文,跳到步骤3;(2)TLS标准待签名格式数据,跳到步骤2;(3)不符合上面(1)(2)两种格式的其它数据,跳到步骤2;

步骤2,对输入数据执行TLS标准的非对称密码算法解密计算,输出计算结果,跳到步骤7;

步骤3,解析自定义密文SelfCipher得到cipher,然后使用自定义非对称密码算法私钥对cipher进行解密计算,可得到pre_master_secret以及可能存在的infoBytes、client_random、server_random,然后执行步骤4;

步骤4,判断步骤3解密得到的结果中是否包含infoBytes、client_random、server_random,若包含,跳到步骤5;若不包含,跳到步骤6。

步骤5,按步骤3解密得到的infoBytes中所描述的TLS协议版本中定义的相关算法,通过pre_master_secret、client_random、server_random计算出client_write_key和server_write_key,然后将其记录到对称密钥表中。具体计算方法可参见TLS协议原文中的以下相关内容:

跳到步骤7;

步骤6,将步骤3解密得到的pre_master_secret重新按TLS标准非对称密码算法解密结果格式标准进行组装,并将组装结果作为TLS标准非对称密码算法解密计算的输出结果,跳到步骤7;

步骤7.TLS标准非对称密码算法解密计算结束;

3.2、计算模块进行TLS标准非对称密码算法验证签名计算时,不对输入数据进行分析,对输入数据全部执行TLS标准非对称密码算法验证签名计算。

3.3、计算模块进行自定义对称密码加密或解密计算的过程由以下若干个步骤完成:

步骤1,首先在当前对称密钥表中查询是否存在输入的对称密钥。若不存在,跳到步骤2;若存在,跳到步骤3;

步骤2,使用TLS标准对称密码算法对输入数据进行计算,输出计算结果,跳到步骤4;

步骤3,计算模块内部自动切换为使用自定义的对称密码算法对输入数据进行计算,输出计算结果,跳到步骤4;

步骤4,自定义对称密码计算结束。

二)对TLS系统进行配置

TLS系统的配置有以下4个部分需要配置:

1.将上述计算模块配置到服务器端软件中;

2.在为服务器端配置TLS标准的非对称密码算法的密钥对时,还为服务器配置所述自定义的非对称密码算法对应的密钥对;

例如:在为服务器端计算模块配置RSA密钥对的同时,也为其配置对应的SM2密钥对;

3.在服务器端的数字证书中增设自定义扩展项,用于存放所述自定义的非对称密码算法的公钥和自定义对称密码算法的标识;

例如:在为服务器端计算模块的RSA公钥签发的数字证书中增加两个自定义扩展项,其中一个自定义扩展项用于存放SM2公钥,另一个自定义扩展项用于存放服务器端所支持的自定义对称密码算法标识(如:SM4)。

4.客户端通过两个配置项来分别确定自身是否支持自定义的非对称密码算法和自定义的对称密码算法。

三)TLS系统交互方案

若客户端不支持自定义的非对称密码算法,则与服务器端完全按标准TLS协议进行交互。若客户端支持自定义的非对称密码算法,则客户端需在TLS交互过程的若干环节中进行自定义处理,具体如下:

处理1.客户端缓存ClientHello消息中的随机数ClientHello.random;

处理2.客户端缓存服务器端返回的ServerHello消息中的随机数ServerHello.random;

处理3.客户端解析服务器端返回的Certificate消息中数字证书的自定义扩展项,若证书中不存在存放自定义非对称密码算法公钥和自定义对称密码算法标识的自定义扩展项,则在后续交互过程中与服务器端完全按标准TLS协议进行交互,不再进行下面的自定义处理;反之,则缓存证书中的自定义非对称密码算法公钥和自定义对称密码算法标识,并在后续交互过程中进行下面的自定义处理。

处理4.客户端生成ClientKeyExchange消息时,按前面缓存的数据及自身配置构造自定义非对称密码算法加密结果SecretTLS,并用服务器端数字证书中的自定义非对称密码算法公钥对该SecretTLS加密,并最终构造出自定义密文SelfCipher,将自定义密文SelfCipher作为ClientKeyExchange消息的一部分;ClientKeyExchange为TLS协议中定义的客户端密钥交换消息。若客户端以及服务器端数字证书表示其中任一方不支持自定义密码算法,则在后续交互过程中与服务器端完全按标准TLS协议进行交互,不再进行下面的自定义处理;反之,则在后续交互过程中进行下面的自定义处理。

处理5.客户端在Application Data过程中,使用自定义密码算法(如:SM4)进行加密和解密计算。

通过上述实施例的基于TLS协议实现加密通信的方法,仅需为主流的服务器端软件(如:Weblogic,Tomcat,IIS等)配置兼容的计算模块,即可使得服务器端同时支持TLS标准密码算法和自定义密码算法,同时为支持自定义密码算法和不支持自定义密码算法的客户端提供服务,有利于自定义密码算法在实际应用环境中的推广。

图2为本发明另一实施例的基于TLS协议实现加密通信的方法的示意性流程图,本实施例是以该方法应用于TLS系统中客户端端为例进行说明。如图2所示,所述基于TLS协议实现加密通信的方法包括步骤:

S21、读取预设的配置项信息,判断本端是否支持自定义的密码算法;

本实施例中,若检测出本端不支持自定义的密码算法,则采用TLS标准的密码算法与服务器端进行加密通信,无需检测服务器返回的数字证书中否存在用于存放自定义的非对称密码算法对应的公钥的扩展项和自定义对称密码算法标识的扩展项。

S22、向服务器端发送加密通信请求,接收服务器对所述加密通信请求的回应消息,所述回应消息包括服务器端的数字证书;

本实施例中,通过上述加密通信请求向服务器提供以下信息:

(1)支持的协议版本,比如TLS 1.0版;(2)一个客户端生成的随机数,稍后用于生成"对话密钥";(3)支持的加密方法,比如RSA公钥加密;(4)支持的压缩方法。

S23、若步骤S21中检测出本端支持自定义的密码算法,检测所述数字证书中是否存在用于存放自定义非对称密码算法对应的公钥和自定义对称算法标识的扩展项;若存在,缓存自定义非对称密码算法对应的公钥和自定义对称算法标识到本地;

本实施例中,收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信;如果证书没有问题,再检测服务器返回的数字证书中是否存在用于存放自定义非对称密码算法对应的公钥和自定义对称算法标识的扩展项。

S24、构造自定义非对称密码算法加密结果SecretTLS,并根据缓存的公钥对所述SecretTLS加密,得到SelfCipher;将所述自定义密文SelfCipher作为TLS协议中定义的客户端密钥交换消息ClientKeyExchange中的一部分;发送所述ClientKeyExchange消息至服务器,表示随后的信息都将用双方商定的加密方法和密钥发送;

此外,还需向服务器发送以下信息:(1)一个随机数(又称"pre-master key"),该随机数用服务器公钥加密,防止被窃听;(2)客户端握手结束通知,表示客户端的握手阶段已经结束,这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

S25、采用自定义的非对称密码算法或自定义的对称密码算法与服务器端进行加密通信。

即客户端在Application Data过程中,可使用自定义对称密码算法(如:国密SM4)进行加密/解密计算,或者使用自定义非对称密码算法(如:国密SM2)进行加密/解密计算。

通过本实施例,客户端既可通过TLS标准密码算法与服务器端进行加密通信,还可通过自定义密码算法与服务器端通过TLS标准密码算法进行加密通信,提高了客户端的灵活性,并有利于提高通信的安全性。

需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。

基于与上述实施例中的基于TLS协议实现加密通信的方法相同的思想,本发明还提供基于TLS协议实现加密通信的装置,该装置可用于执行上述基于TLS协议实现加密通信的方法。为了便于说明,基于TLS协议实现加密通信的装置实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

图3为本发明一实施例的TLS协议的服务器端装置的示意性结构图,该装置包括:

配置模块310,用于将预设的计算模块配置到服务器端软件中,所述计算模块兼容TLS标准的非对称密码算法和TLS标准对称密码算法,还兼容自定义的非对称密码算法和自定义的对称密码算法;

请求接收模块320,用于接收客户端的加密通信请求,根据所述加密通信请求识别所述客户端支持的加密方法;

以及,算法选择模块330,用于从所述计算模块兼容的密码算法中选择出与所述客户端支持的加密方法相适应的密码算法,采用选出的密码算法与所述客户端进行加密通信。

优选的,所述配置模块还可用于:在为服务器端配置TLS标准的非对称密码算法的密钥对时,还为服务器配置所述自定义的非对称密码算法对应的密钥对;以及,用于在服务器端的数字证书中增设自定义扩展项,用于存放所述自定义的非对称密码算法的公钥和自定义对称密码算法的标识。例如可在服务器端的数字证书中增设两个对应的自定义扩展项,一个用于存放所述自定义的非对称密码算法的公钥,另一个用于存放自定义对称密码算法的标识。

本实施例中,所述TLS标准的密码算法、自定义的密码算法均包括对称密码算法和非对称密码算法。TLS标准的非对称密码算法和自定义的非对称密码算法为满足以下条件一或条件二的算法:

条件一:在TLS系统不需支持TLS标准对称密码算法与自定义对称密码算法的兼容的情况下,要求自定义非对称密码算法对TLS协议中pre_master_secret数据的加密结果的长度小于等于TLS标准非对称密码算法对pre_master_secret加密结果的长度;

条件二:在TLS系统需支持TLS标准对称密码算法与自定义对称密码算法的兼容的情况下,则要求自定义非对称密码算法对TLS协议中pre_master_secret、client_random以及server_random这三段数据以及一个字节的描述信息的加密结果的长度小于等于TLS标准非对称密码算法对pre_master_secret加密结果的长度;

所述TLS标准对称密码算法和自定义对称密码算法为满足以下条件三的算法:

条件三:若需支持TLS标准对称密码算法与自定义对称密码算法的兼容,则要求TLS标准对称密码算法与自定义对称密码算法的密钥长度相等;当对称密码算法为分组密码算法时,还需在密钥长度相等的基础上进一步要求TLS标准对称密码算法与自定义对称密码算法的分组长度相等。

优选的,其中TLS标准的非对称密码算法例如RSA算法,TLS标准的对称密码算法例如AES128算法;自定义的非对称密码算法例如国密SM2算法,自定义的对称密码算法例如国密SM4算法。

对应的,所述服务器端装置还包括计算模块配置模块(图中未示出),用于预先配置所述计算模块,具体包括:

1.自定义密文的格式:设置自定义密文的总长度等于TLS标准非对称密码算法对TLS协议中pre_master_secret加密结果的长度;所述密文结构至少包含cipher和padding两个部分,其中cipher表示SecretTLS的自定义非对称密码算法加密结果;padding为填充字节,填充字节数大于等于0用于保证自定义密文的长度等于TLS标准非对称密码算法对TLS协议中pre_master_secret加密结果的长度。所述SecretTLS由必须存在的pre_master_secret部分以及可能存在的infoBytes、client_random、server_random部分构成。pre_master_secret表示TLS协议定义的pre_master_secret;infoBytes为至少一个字节的描述信息,用于描述当前TLS版本、自定义对称算法类型等信息;client_random表示TLS协议定义的客户端随机数;server_random表示TLS协议定义的服务器端随机数;

2.将对称密钥表的每条记录配置为由以下4个数据列构成:

SymmAlgo、RecordTime、client_write_key、server_write_key,

其中每个列的含义如下:

SymmAlgo:用于标识自定义对称密码算法的类型,定义为非0正整数值;

RecordTime:用于标识该条记录创建时的时间;

client_write_key:TLS协议中所定义的client_write_key;

server_write_key:TLS协议中所定义的server_write_key。

3.配置服务器端的计算逻辑,包括:

3.1、计算模块进行自定义非对称密码算法解密计算时,对输入数据进行分析并执行相应的计算,计算模块完成一次自定义非对称密码计算的过程由以下若干个步骤完成:

步骤1,对输入数据的内容进行分析,输入数据可分为三种情况:

(1)自定义密文,跳到步骤3;(2)TLS标准待签名格式数据,跳到步骤2;(3)不符合上面(1)(2)两种格式的其它数据,跳到步骤2;

步骤2,对输入数据执行TLS标准的非对称密码算法解密计算,输出计算结果,跳到步骤7;

步骤3,解析自定义密文SelfCipher得到cipher,然后使用自定义非对称密码算法私钥对cipher进行解密计算,可得到pre_master_secret以及可能存在的infoBytes、client_random、server_random,然后执行步骤4;

步骤4,判断步骤3解密得到的结果中是否包含infoBytes、client_random、server_random,若包含,跳到步骤5;若不包含,跳到步骤6。

步骤5,按步骤3解密得到的infoBytes中所描述的TLS协议版本中定义的相关算法,通过pre_master_secret、client_random、server_random计算出client_write_key和server_write_key,然后将其记录到对称密钥表中。

3.2、计算模块进行TLS标准非对称密码算法验证签名计算时,不对输入数据进行分析,对输入数据全部执行TLS标准非对称密码算法验证签名计算。

3.3、计算模块进行自定义对称密码加密或解密计算的过程由以下若干个步骤完成:

步骤1,首先在当前对称密钥表中查询是否存在输入的对称密钥。若不存在,跳到步骤2;若存在,跳到步骤3;

步骤2,使用TLS标准对称密码算法对输入数据进行计算,输出计算结果,跳到步骤4;

步骤3,计算模块内部自动切换为使用自定义的对称密码算法对输入数据进行计算,输出计算结果,跳到步骤4;

步骤4,自定义对称密码计算结束。

优选的,所述服务器端装置还包括系统配置模块(图中未示出),用于对TLS系统进行配置;具体用于将上述计算模块配置到服务器端软件中;以及用于在为服务器端配置TLS标准的非对称密码算法的密钥对时,还为服务器配置所述自定义的非对称密码算法对应的密钥对;以及用于在服务器端的数字证书中增设自定义扩展项,用于存放所述自定义的非对称密码算法的公钥和自定义对称密码算法的标识。

图4为本发明一实施例的TLS协议的客户端端装置的示意性结构图,该装置包括:

检测模块410,用于读取预设的配置项信息,判断本端是否支持自定义的密码算法;

加密请求模块420,用于向服务器端发送加密通信请求,接收服务器对所述加密通信请求的回应消息,所述回应消息包括服务器端的数字证书;

证书解析模块430,用于若本端支持自定义的密码算法,检测所述数字证书中是否存在用于存放自定义的非对称密码算法对应的公钥的扩展项和自定义对称密码算法标识的扩展项;若存在,缓存自定义的非对称密码算法对应的公钥和自定义对称密码算法标识到本地;

回应模块440,用于构造自定义非对称密码算法加密结果SecretTLS,并根据缓存的公钥对所述SecretTLS加密,得到SelfCipher;将自定义密文SelfCipher作为TLS协议中定义的客户端密钥交换消息ClientKeyExchange中的一部分;发送所述ClientKeyExchange消息至服务器;

以及,通信模块450,用于采用自定义的密码算法与服务器端进行加密通信。

需要说明的是,上述示例的基于TLS协议实现加密通信的装置的实施方式中,各模块/单元之间的信息交互、执行过程等内容,由于与本发明前述方法实施例基于同一构思,其带来的技术效果与本发明前述方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

可以理解的是,上述实施案例基于单向认证方式对本发明基于TLS协议实现加密通信的方法进行了阐述,本领域技术人员基于上述实施例的思想,还可在客户端配置同样的数字证书,扩展为通过双向认证的方式实现本发明的基于TLS协议实现加密通信的方法,此类扩展也应当属于本发明的保护范畴内。

此外,上述示例的基于TLS协议实现加密通信的装置的实施方式中,各功能模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的功能模块完成,即将所述基于TLS协议实现加密通信的装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。其中各功能模既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,作为独立的产品销售或使用。所述程序在执行时,可执行如上述各方法的实施例的全部或部分步骤。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。可以理解,其中所使用的术语“第一”、“第二”等在本文中用于区分对象,但这些对象不受这些术语限制。

以上所述实施例仅表达了本发明的几种实施方式,不能理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

完整全部详细技术资料下载
当前第1页 1  2  3 
相关技术
  • 应用日志的收集、发送方法、装...
  • 一种加密的方法及装置与流程
  • 一种RSSI拟合系统的制作方...
  • 多系统通知消息处理方法及装置...
  • 基于分层多分辨率经验模式分解...
  • 一种确定重传调度监听次数的方...
  • 打印装置及打印装置的控制方法...
  • 一种终端的处理方法、系统及终...
  • 网络数据的展示方法和装置与流...
  • 基于POE系统的PSE供电方...
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1

深圳SEO优化公司延安企业网站建设多少钱镇江网站关键词优化价格宜春至尊标王公司黔西南网站优化按天收费哪家好北京百度网站优化排名汕头百度竞价价格岳阳建设网站木棉湾营销型网站建设推荐雅安关键词按天扣费大浪百姓网标王多少钱金昌关键词按天扣费哪家好宁德网站优化推广哪家好塘坑seo网站优化公司乌海网站优化按天扣费哪家好来宾品牌网站设计公司遂宁SEO按天收费哪家好太原网站优化软件公司南昌网站优化按天扣费价格黑河网站优化推广哪家好亳州SEO按天计费哪家好阜阳推广网站多少钱清远营销型网站建设多少钱南山网站搜索优化哪家好金华网站优化按天收费哪家好西安seo网站优化广州SEO按效果付费伊春外贸网站建设推荐邢台SEO按天扣费公司松岗营销网站多少钱昆明英文网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化