一种https动态加密的传输方法与流程

文档序号:25033353发布日期:2021-05-11 17:04阅读:133来源:国知局
一种https动态加密的传输方法与流程

本发明涉及https加密领域,特别涉及一种https动态加密的传输方法。



背景技术:

https为安全的超文本传输协议,使用ssl协议对http协议所传输的数据进行加密,保证会话过程中的安全,用户通常是直接使用ssl协议,而未把数据做其它处理。单纯的ssl协议严重依赖第三方机构所颁发的证书,且加密算法公开,无法保证特定领域的数据传输安全,或者防止伪设备的攻击等。

专利“一种https加密访问方法、系统及装置”(申请号:200710187240.7,公开号:cn101436933a),公开了一种保密性较好的加密方法:首先客户端与https代理设备建立专用加密ssl通道,然后持续侦听指定的https服务端口,之后将侦听到的https报文进行回环处理,通过专用的加密算法进行再次加密,最后将加密后的报文发送出去,https代理设备按此过程逆向解码数据。但该方法只适用于浏览器访问的https报文加密;且需要https代理服务,非点对点直接通信,增加了第三方服务这一环节的风险,如数据可能会丢失、手动配置错误等等;另外通过监听指定端口来获取数据,效率低、灵活度不高。



技术实现要素:

本发明要解决的技术问题是提供了一种保密性能好且灵活度高的https动态加密的传输方法。

本发明的技术方案如下:

一种https动态加密的传输方法,包括以下步骤:

步骤s1、制作原始编码表,并将原始编码表分别保存在发送端设备与接收端设备中;

步骤s2、自定义一种编码表算法,所述编码表算法以原始编码表作为算法的常量,以至少一个ssl握手过程中产生的随机数作为算法的自变量;

步骤s3、在openssl库中增加获取ssl握手过程中产生的随机数的接口;

步骤s4、发送端设备与接收端设备通过ssl握手建立https连接;

步骤s5、发送端设备和接收端设备采用编码表算法生成相同的动态编码表;

步骤s6、发送端设备根据动态编码表对原始数据进行重新编码,生成加密数据并发送出去;

步骤s7、接收端设备接收加密数据,并通过动态编码表解密出原始数据。

进一步的,所述原始编码表的制作方法包括以下步骤:

步骤s101、获取ascii表或base64编码表;

步骤s102、将ascii表或base64编码表作为原始编码表,或者采用预定的编码规则对ascii表或base64编码表进行变换,生成原始编码表。

进一步的,所述预定的编码规则包括定长编码、变长编码或熵编码。

进一步的,所述原始编码表的制作方法包括以下步骤:

将待发送的数据根据压缩算法生成压缩表头,以压缩表头作为原始编码表。

进一步的,所述编码表算法为哈希算法。

进一步的,在linux环境下,在openssl库中增加获取ssl握手过程中产生的随机数的接口包括以下步骤:

步骤s301、下载openssl库在linux环境下的源代码openssl-1.1.1d.tar.gz,并解压;

步骤s302、在statem_clnt.c文件中定义第一全局二维数组变量,并指定tls_process_server_hello函数中收到的随机数和tls_construct_client_hello函数中产生的随机数分别保存在第一全局二维数组变量的对应位置中;

步骤s303、在statem_srvr.c文件中定义第二全局二维数组变量,并指定tls_process_client_hello函数中收到的随机数和tls_construct_server_hello函数中产生的随机数分别保存在第二全局二维数组变量的对应位置中;

步骤s304、在rand.h文件中将第一全局二维数组变量和第二全局二维数组变量作为外部接口使用;

步骤s305、编译修改好的源代码,生成openssl库。

进一步的,发送端设备与接收端设备通过ssl握手建立https连接的过程为:

发送端设备与接收端设备进行ssl握手,且发送端设备与接收端设备保存ssl握手过程中产生的随机数,如果握手成功则发送端设备与接收端设备建立https连接,并执行步骤s5;如果握手失败则发送端设备和接收端设备清空ssl握手过程中产生的随机数,并终止https连接。

有益效果:本发明中,采用预定算法制作原始编码表,并采用自定义的算法根据ssl协议所产生的随机数和原始编码表得到动态编码表,采用动态编码表对待发送的原始数据进行加密或对接收的加密数据进行解密。从而可以达到动态加密的目的,并高效的加密和解密,保证数据传输的安全性。由于制作原始编码表的编码规则和生成动态编码表的算法均能够自行定义,因此具有极高的安全性,可以有效的保护用户所传输的数据,防止伪信任用户盗取数据,无需采用专网传输数据,可直接适用于物联网等公用网络。

附图说明

图1为本发明的一个优选实施例的流程图;

图2为本发明的另一优选实施例的流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

在本发明的描述中,除非另有规定和限定,需要说明的是,术语“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

实施例1

本实施例采用linux系统,如图1所示,本发明一种https动态加密的传输方法的一个实施例包括以下步骤:

步骤s1、制作原始编码表,并将原始编码表分别保存在发送端设备与接收端设备中。

所述原始编码表的制作方法包括以下步骤:

步骤s101、获取ascii表或base64编码表;

步骤s102、将ascii表或base64编码表作为原始编码表,或者采用预定的编码规则对ascii表或base64编码表进行变换,生成原始编码表。本实施例以直接采用base64编码表作为原始编码表进行说明。

步骤s2、自定义一种编码表算法,所述编码表算法以原始编码表作为算法的常量,以至少一个ssl握手过程中产生的随机数作为算法的自变量,使每次所生成的动态编码表都不一样。编码表算法需要满足加密和解密的相关要求,且需兼顾加密及解密的效率,优选为采用哈希算法,以实现高效的加密和解密;例如,可自定义编码表算法为value=(num+rand)%63。其中num为base64编码表序号值,rand为根据ssl握手过程中产生的随机数生成的数值(由于openssl产生的随机数最多为32字节,为简单起见,可只取ssl握手过程中保存的最后一个随机数,并将该随机数的每一个字节进行异或,将最终得到的一个字节作为rand;当然,也可取其他的随机数进行计算,或者多取几个随机数,以增加破译的难度),value为最终获得的编码表序号值。

步骤s3、在openssl库中增加获取ssl握手过程中产生的随机数的接口;由于openssl标准库的接口没有提供获取随机数的方法,因此这里需要修改openssl标准库的源代码,并结合开发环境,重新编译源代码库。下面以linux环境下修改openssl库方法为例进行说明,增加获取ssl握手过程中产生的随机数的接口包括以下步骤:

步骤s301、下载openssl库在linux环境下的源代码openssl-1.1.1d.tar.gz,并解压;

步骤s302、在statem_clnt.c文件中定义第一全局二维数组变量client_random_dat,并指定tls_process_server_hello函数中收到的随机数保存在client_random_data[0],即服务端随机数;指定tls_construct_client_hello函数中产生的随机数保存在client_random_data[1],即客户端随机数;

步骤s303、在statem_srvr.c文件中定义第二全局二维数组变量server_random_data,并指定tls_process_client_hello函数中收到的随机数保存在server_random_data[0];即客户端随机数,指定tls_construct_server_hello函数中产生的随机数保存在server_random_data[1],即服务端随机数;

步骤s304、在rand.h文件中将第一全局二维数组变量client_random_dat和第二全局二维数组变量server_random_data作为外部接口使用;

步骤s305、编译修改好的源代码,生成新的openssl库。

步骤s4、发送端设备与接收端设备建立https连接,具体过程如下:

发送端设备与接收端设备进行ssl握手,且发送端设备与接收端设备保存ssl握手过程中产生的随机数,如果握手成功则发送端设备与接收端设备建立https连接,并执行步骤s5;如果握手失败则发送端设备和接收端设备清空ssl握手过程中产生的随机数,即client_random_data和server_random_data中的值,并终止https连接;如要继续建立https连接则需要重新进行ssl握手。

步骤s5、发送端设备和接收端设备采用编码表算法生成相同的动态编码表;根据本实施例中的编码表算法,生成动态编码表的过程如下:

将保存的随机数的第一个字节与第二个字节进行异或,异或后的值与第三个字节进行异或,异或后的值与第四个字节进行异或,以此类推,最后将最终得到的异或值作为rand,生成新的base64编码表,即动态编码表;由于每次ssl握手过程中产生的随机数都是不同的,所以每次所得到的动态编码表都会不一样。

步骤s6、发送端设备将待发送的原始数据通过base64编码规则,以动态编码表作为base64编码表,生成加密数据并发送出去。或者以原始编码表作为base64编码表,生成待加密数据,然后根据动态编码表,将待加密的数据逐一替换并发送出去。

步骤s7、接收端设备接收加密数据,并根据动态编码表,以及base64编码规则,还原出原始数据。

本实施例中,采用预定的编码规则制作原始编码表,并采用自定义的算法根据ssl协议所产生的随机数和原始编码表得到动态编码表,采用动态编码表对待发送的原始数据进行加密或对接收的加密数据进行解密。从而可以达到动态加密的目的,并高效的加密和解密,保证数据传输的安全性。由于制作原始编码表的编码规则和生成动态编码表的算法均能够自行定义,因此具有极高的安全性,可以有效的保护用户所传输的数据,防止伪信任用户盗取数据,无需采用专网传输数据,可直接适用于物联网等公用网络。

实施例2

本实施例采用linux系统,如图1所示,本发明一种https动态加密的传输方法的一个实施例包括以下步骤:

步骤s1'、制作原始编码表,并将原始编码表分别保存在发送端设备与接收端设备中。

所述原始编码表的制作方法包括以下步骤:

将待发送的数据根据压缩算法生成压缩表头,以压缩表头作为原始编码表;下面以霍夫曼压缩算法为例进行说明,当然,也可采用其他压缩算法。将待发送的数据根据霍夫曼压缩算法生成霍夫曼前缀码,霍夫曼前缀码及其所代表的具体字符构成了压缩表头,以压缩表头作为原始编码表。

步骤s2'、自定义一种编码表算法,所述编码表算法以原始编码表作为算法的常量,以至少一个ssl握手过程中产生的随机数作为算法的自变量,使每次所生成的动态编码表都不一样。例如,可自定义编码表算法为value=(data+rand1+rand2)%127。其中data为原始编码表的具体值,rand1为某一指定的随机数(例如ssl握手过程中保存的最后一个随机数)的第一个字节,rand2为该随机数的第二个字节,value为经计算后得到的值;当然,编码表算法也可多取几个随机数,并增加更多的字节进行计算。

步骤s3'、在openssl库中增加获取ssl握手过程中产生的随机数的接口;具体步骤与实施例1相同。

步骤s4'、发送端设备与接收端设备建立https连接,具体过程与实施例1相同。

步骤s5'、发送端设备和接收端设备采用编码表算法生成相同的动态编码表;由于每次ssl握手过程中产生的随机数都是不同的,所以每次所得到的动态编码表都会不一样。

步骤s6'、发送端设备将待发送的原始数据通过霍夫曼压缩算法生成压缩数据(不含压缩表头),然后将压缩表头与压缩数据一并发送出去。

步骤s7'、接收端设备接收加密数据,并根据动态编码表及自定义算法,逆向还原出压缩表头,然后根据霍夫曼压缩算法,还原出原始数据。

本发明未描述部分与现有技术一致,在此不做赘述。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明的专利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1