数据代理方法、装置、设备及存储介质转让专利
申请号 : CN201911351815.3
文献号 : CN111131455B
文献日 : 2021-06-04
发明人 : 何海生
申请人 : 深信服科技股份有限公司
摘要 :
权利要求 :
1.一种数据代理方法,其特征在于,所述数据代理方法包括:获取当前代理连接业务中目标处理数据的非对称上下文信息;
对分离处理函数和所述非对称上下文信息进行加密并打包生成目标数据包,所述分离处理函数为不参与本地运算的处理函数;
将传递数据相同的上下文参数从所述非对称上下文信息中提取出,并生成目标上下文信息;
对所述目标上下文信息和所述分离处理函数进行序列化,获得序列化结果;
根据预设摘要值将列出的所述上下文参数进行标记,并将标记后的上下文参数并入所述序列化结果中,生成新的序列化结果;
根据预设对称密钥将所述新的序列化结果进行加密并打包生成目标数据包;
将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理。
2.如权利要求1所述的数据代理方法,其特征在于,所述获取当前代理连接业务中目标处理数据的非对称上下文信息,包括:获取当前代理连接业务的目标CPU数据;
根据所述目标CPU数据获取当前代理连接业务中目标处理数据的非对称上下文信息。
3.如权利要求2所述的数据代理方法,其特征在于,所述根据所述目标CPU数据获取当前代理连接业务中目标处理数据的非对称上下文信息,包括:根据预设消耗阈值与所述目标CPU数据确定所述当前代理连接业务中安全套接层中间代理交互过程的目标处理数据;
从所述目标处理数据中获得非对称上下文信息。
4.如权利要求1所述的数据代理方法,其特征在于,所述将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理,包括:根据预设配置参数将所述目标处理数据的处理函数替换为分离处理函数;
对所述分离处理函数和所述非对称上下文信息进行加密并打包生成目标数据包;
根据预设分离异步引擎将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理并生成运算结果。
5.如权利要求4所述的数据代理方法,其特征在于,所述根据预设分离异步引擎将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理并生成运算结果,包括:
根据预设分离异步引擎将所述目标数据包发送给目标运算端,以使所述目标运算端调用预设开源软件库的预设运算函数对所述目标数据包进行运算,并生成运算结果。
6.如权利要求5所述的数据代理方法,其特征在于,所述根据预设分离异步引擎将所述目标数据包发送给目标运算端,以使所述目标运算端调用预设开源软件库的预设运算函数对所述目标数据包进行运算,并生成运算结果之前,所述数据代理方法还包括:根据预设安装脚本对各运算端进行安装部署,并在各运算端中设置主控节点和多个计算节点,建立所述主控节点与各计算节点之间的连接;
通过预设分离异步引擎利用预设对称秘钥对所述目标数据包进行反序列化,并生成反序列化结果;
若所述反序列化结果中存在参数摘要值,则根据所述参数摘要值获得对应的当前缓存参数;
根据所述当前缓存参数获得所述计算节点的当前CPU数据和内存资源,并根据所述当前CPU数据和所述内存资源从各计算节点中挑选出不超过预设资源阈值的运算端节点作为目标运算端。
7.如权利要求4所述的数据代理方法,其特征在于,所述将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理之后,所述数据代理方法还包括:将所述当前代理连接业务挂起;
若接收到所述目标运算端反馈的运算结果,则调用所述当前代理连接业务的预设处理逻辑对所述运算结果进行逻辑处理。
8.如权利要求7所述的数据代理方法,其特征在于,所述若接收到所述目标运算端反馈的运算结果,则调用所述当前代理连接业务的预设处理逻辑对所述运算结果进行逻辑处理,包括:
若接收所述目标运算端反馈的运算结果,则对所述运算结果进行解密;
若检测到所述运算结果为运算失败,则利用本地CPU重新运算所述目标数据包,并获得本地运算结果;
若检测到所述运算结果为运算成功,则根据目标协程唤醒目标任务,并获得异地运算结果;
调用所述当前代理连接业务的预设处理逻辑对所述本地运算结果或所述异地运算结果进行逻辑处理。
9.如权利要求7所述的数据代理方法,其特征在于,所述将所述当前代理连接业务挂起之前,所述数据代理方法还包括:对预设分离异步引擎进行初始化,以使所述预设分离异步引擎与进行安全套接层中间代理操作的安全套接层中间人代理端匹配。
10.如权利要求9所述的数据代理方法,其特征在于,所述对预设分离异步引擎进行初始化,包括:
获取预设运算端配置参数和地址信息;
根据安全套接层协议连接到目标运算端,根据所述预设运算端配置参数和地址信息进行所述目标运算端的接入认证;
若完成所述目标运算端的接入认证,则发送请求命令至所述目标运算端;
若接收到所述目标运算端反馈的系统常规信息,则保持与所述目标运算端的当前连接。
11.一种数据代理装置,其特征在于,所述数据代理装置包括:数据获取模块,用于获取当前代理连接业务中目标处理数据的非对称上下文信息;
打包模块,用于对分离处理函数和所述非对称上下文信息进行加密并打包生成目标数据包,所述分离处理函数为不参与本地运算的处理函数;
处理模块,用于将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理;
所述打包模块,还用于将传递数据相同的上下文参数从所述非对称上下文信息中提取出,并生成目标上下文信息;对所述目标上下文信息和所述分离处理函数进行序列化,获得序列化结果;根据预设摘要值将列出的所述上下文参数进行标记,并将标记后的上下文参数并入所述序列化结果中,生成新的序列化结果;根据预设对称密钥将所述新的序列化结果进行加密并打包生成目标数据包。
12.一种数据代理设备,其特征在于,所述数据代理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据代理程序,所述数据代理程序配置为实现如权利要求1‑10中任一项所述的数据代理方法的步骤。
13.一种存储介质,其特征在于,所述存储介质上存储有数据代理程序,所述数据代理程序被处理器执行时实现如权利要求1‑10中任一项所述的数据代理方法的步骤。
说明书 :
数据代理方法、装置、设备及存储介质
技术领域
背景技术
Socket Layer,HTTPS)、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)、因特
网信息访问协议(Internet Message Access Protocol,IAMP)等数据的审计和控制,防止
内部机密信息泄露,以及后续对泄密人员的追溯,由于SSL中间人代理使用了SSL/传输层安
全性协议(Transport Layer Security,TLS),而这些协议都需要先进行秘钥协商,最终使
用协商后的对称秘钥进行数据加密从而达到保护用户数据安全的目的;在整个SSL协议交
互的过程中,秘钥协商需要使用非对称秘钥来进行签名和校验,例如常用的非对称加密算
法(Rivest Shamir Adleman,RSA)、数字签名算法(Digital Signature Algorithm,DSA)、
被广泛应用于数字签名的加密算法(Elliptic Curve Digital Signature Algorithm,
ECDSA)等,而这些算法在运算过程中需要消耗大量的中央处理器(Central Processing
Unit,CPU)资源;通过对一个完整的SSL短连接进行性能抽样,90%的CPU资源都消耗在秘钥
协商过程中非对称秘钥的签名、校验中,这也是当前业界所公认的结果;在当前互联网对用
户数据安全越来越重视的大前提下,HTTPS流量在国外可高达70%以上,在国内也在50%左
右并且有快速上涨趋势;因此,SSL中间人代理所面临的性能挑战会越来越严峻,低价高效
的优化方法势在必行;
秘钥算法的运算,不能有效释放本地的CPU资源;
且也会增加网络部署的复杂度,引入新的故障点。
发明内容
成本和新的故障的技术问题。
运算结果之前,所述数据代理方法还包括:
作为目标运算端。
数据代理程序配置为实现如上文所述的数据代理方法的步骤。
送给目标运算端,以使所述目标运算端对所述目标数据包进行处理,能够进行CPU消耗转
移,提升SSL代理性能的效果,可以节约成本开支,还能把空置资源充分利用。
附图说明
具体实施方式
标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行处理,能够进行
CPU消耗转移,提升SSL代理性能的效果,可以节约成本开支,还能把空置资源充分利用,解
决了现有技术中SSL中间人加速不能有效释放本地的CPU资源,会增加网络部署的复杂度、
客户成本和新的故障的技术问题。
通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括标准的有线接
口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真
(WIreless‑FIdelity,WI‑FI)接口)。存储器1005可以是高速的随机存取存储器(Random
Access Memory,RAM)存储器,也可以是稳定的存储器(Non‑volatile Memory,NVM),例如磁
盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
置。
为从所述目标处理数据筛选出来的非对称计算上下文对应的信息。
RSA、DSA、ECDSA等,而这些算法在运算过程中需要消耗大量的CPU资源;一般可以通过对一
个完整的SSL短连接进行性能抽样,获取目标CPU数据。
加以限制;所述预设消耗阈值为预先设置的用于判断CPU消耗数据高低的阈值,通过所述预
设消耗阈值可以将所述目标CPU数据超过所述预设消耗阈值对应的运算部分作为目标处理
数据,进而可以获得与所述目标处理数据对应的非对称上下文信息。
标运算端对所述目标数据包中的相关数据进行计算,获得相应的计算结果。
目标运算端,以使所述目标运算端对所述目标数据包进行处理,能够进行CPU消耗转移,提
升SSL代理性能的效果,可以节约成本开支,还能把空置资源充分利用。
骤:
与本地运算的处理函数,例如RSA_sign、RSA_verify等函数替换为RSA_sign_remote、RSA_
verify_remote,替换方式通过OPENSSL提供的函数替换接口实现。
减少目标运算端的运算量,通过将序列化结果进行加密打包生成目标数据包,能够加快运
算转移的过程,缩减运算时间,提高了SSL协议处理的速度和效率。
进行不必要的序列化处理,减少了后续运算的运算量;所述预设摘要值为预先设置的摘要
值,用于对所述上下文参数进行标记,从而可以在目标数据包生成时,直接纳入进去,即将
标记后的上下文参数并入所述序列化结果中。
即通过安全套接层SSL进行当前代理连接业务,被攻击者完全控制的通讯的两端(Man In
The Middle attack,MITM)(MITM在密码学和处理机安全领域中是指攻击者与通讯的两端
分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密
的连接与对方直接对话,但事实上整个会话都被攻击者完全控制)代理程序接受到一个新
的连接后,SSL‑MITM通过RSA、DSA及ECDSA等算法通过把需要进行算法分离的处理函数替换
为分离处理函数,与算法运算端(Remote Algorithm Decrypt,RAD)引擎建立连接,算法运
算端引擎与算法运算端主机相连,所述算法运算端主机用于对运算端资源进行分发调度,
并记录各运算端的负载情况,所述算法运算端主机下发多个运算端电脑,每个运算端电脑
可以进行不同加密算法的加密和解密过程;相应的,所述算法运算端引擎对应有引擎核心,
所述算法运算端主机对应有运算端核心,所述运算端电脑对应有电脑核心,所述引擎核心
与所述运算端核心之间通过交互通道互相传输数据,所述运算端核心与所述电脑核心之间
通过交互通道互相传输数据。
语言所写成,实现了基本的加密功能,实现了SSL与TLS协议)握手逻辑里调用了步骤1中已
替换的处理函数时,新的函数不再直接进行本地运算,而是把所有运算所需要的参数以及
整个函数调用的上下文进行保存,生成一个和这个连接对应的任务job,这里的参数就是密
码学函数的输入,根据步骤1中替换的运算函数的不同会有不同的参数;然后把算法需要的
上下文信息、参数进行序列化,再使用步骤1中获取到的高级加密标准(Advanced
Encryption Standard,AES)对称秘钥进行加密打包;其中,参数的序列化包括了秘钥、向量
的序列化,也就是把C语言的数据类型转化为可以用于网络传输的字符串格式而不丢失任
何信息的一种常用方式,序列号后的字符串可以通过反序列化还原为原来的C语言数据类
型;如果运算端是由第三方提供并且是商业化的,这里就需要对序列化打包进行优化,这是
由于序列化后包的大小直接影响到网络带宽的使用,需要尽可能降低数据包大小来降低带
宽成本;经过对算法上下文的详细分析可知,有部分参数(例如私钥大数结构体),每一次传
递都是一样的,通过对每个算法进行详细的分析后可以获得这部分不变的参数,接着在每
次需要序列化时先不把这部分加入序列化,而是加入一个4字节的摘要值;运算端在反序列
化把网络传输过来的字符串数据还原为C语言的数据结构后,优先提取这个摘要值,从本地
缓存查询如果存在那么直接获取并进行处理,如果不存在那么发起一个更新参数请求,代
理端收到请求后重新把这些参数序列化后传输给运算端,运算端接收到后进行缓存并把摘
要值作为哈希值;优化前,序列化后的数据包大小平均为1260字节左右,优化后数据包只有
250字节左右,节约了80%的传输带宽,大大降低带宽成本。
打包发送给算法运算端处理,所述预设开源软件库为预先设置的开放源代码的软件库包,
应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份,其主
要库是以C语言所写成,实现了基本的加密功能,实现了SSL与TLS协议;通过所述预设开源
软件库中的预设运算函数可对所述目标数据包进行运算进而生成运算结果。
的参数;如果参数不存在,那么需要向用户反馈一个参数请求信息,当前已序列化后的数据
先临时存放起来直到参数请求回复;在算法上下文信息都齐全后,主控节点会根据处理节
点当前的CPU、内存资源来选择一个低负载的节点,把算法运算请求交给节点进行处理;处
理节点在收到运算请求后,调用OPENSSL库的运算函数进行处理,运算完成后把结果反馈给
主控节点,主控节点在接受到处理节点的运算结果后,通过步骤1的AES对称秘钥进行加密
并返回给用户;至此,一个完整的用户处理请求就结束了;当然还可以有其他扩展功能,例
如,针对商用运算端,可增加用户解密次数、接入时长、解密流量等功能,并根据这些统计信
息进行计费,本实施例对此不加以限制。
算,并生成运算结果之前,所述数据代理方法还包括以下步骤:
作为目标运算端。
用的Linux程序安装包,通过执行安装脚本即可一键安装部署;部署后,还需要进行简单的
配置,设置当前节点是主控节点还是计算节点,如果配置为计算节点还需要填写主控节点
的IP信息,即在各运算端中设置主控节点和多个计算节点,建立所述主控节点与各计算节
点之间的连接。
多用于商用运算端场景;首次接入后,运算端会反馈当前的CPU资源、内存资源以及后续传
输计算数据的AES对称秘钥,接受到一个用户运算请求后,先通过协商的AES对称秘钥进行
解密,接着对数据包进行反序列化,如果存在参数摘要值,那么先根据摘要值查找当前的缓
存是否存在对应的参数;如果参数不存在,那么需要向用户反馈一个参数请求信息,当前已
序列化后的数据先临时存放起来直到参数请求回复,若所述反序列化结果中存在参数摘要
值,则根据所述参数摘要值获得对应的当前缓存参数;根据所述当前缓存参数获得所述计
算节点的当前CPU数据和内存资源,并根据所述当前CPU数据和所述内存资源从各计算节点
中挑选出不超过预设资源阈值的运算端节点作为目标运算端。
和所述非对称上下文信息进行加密并打包生成目标数据包;从预设运算端节点信息列表中
挑选出当前负载最低或当前延迟最低的运算端节点作为目标运算端;根据预设分离异步引
擎将所述目标数据包发送给目标运算端,以使所述目标运算端对所述目标数据包进行运算
并生成运算结果,能够加快运算转移的过程,缩减运算时间,提高了SSL协议处理的速度和
效率。
数据代理方法还包括以下步骤:
资源的效果,一般的可以在检测到所述目标数据包发送成功后,将所述当前代理连接业务
的目标任务保存,并将所述目标任务通过目标协程挂起。
程。
本地运算结果;若运算成功,则根据所述目标协程唤醒所述目标任务,并获得异地运算结
果;然后调用所述当前代理连接业务的预设处理逻辑对所述本地运算结果或所述异地运算
结果进行逻辑处理;在实际操作中,一般通过对称秘钥进行解密,读取结果数据找到对应的
job,如果运算结果失败,那么会重新使用当前CPU来运算得到结果,如果成功那么直接通过
协程来唤醒挂起的连接,进行后续的SSL流程,唤醒后的SSL连接正常交互,直到连接正常关
闭,至此一个连接的完整处理过程结束。
把处理结果加密后返回给对应的用户;运算端可以是一台独立的处理机,也可以由一个处
理机集群组成,可以是闲置的处理资源,也可以由企业构建并商业化;如果作为商业化来构
建,不仅可以充分利用CPU资源,还可以增加常用的硬件解密卡,最大化压榨解密卡性能。
行逻辑处理,能够进行CPU消耗转移,提升SSL代理性能的效果,可以节约成本开支,还能把
空置资源充分利用。
数据代理方法还包括以下步骤:
的速度和效率。
标运算端配置参数和地址信息进行所述目标运算端的接入认证;若完成所述目标运算端的
接入认证,即认证成功,则发送请求命令至所述目标运算端;若接收到所述目标运算端反馈
的系统常规信息,即认证失败,则保持与所述目标运算端的当前连接。
发送账号、密码信息完成接入认证后,发送请求命令去请求运算端的系统常规信息,例如运
算端当前的负载指数、可用的CPU、内存资源、以及后续交互的AES对称秘钥等并保存到本地
内存中,最后这个SSL连接除非断开重连,否者一直保持存活状态,并定时获取上述信息;至
此,引擎的初始化工作结束。
提高SSL处理的速度和效率。
为从所述目标处理数据筛选出来的非对称计算上下文对应的信息。
标运算端对所述目标数据包中的相关数据进行计算,获得相应的计算结果。
置第一实施例,该数据代理装置还包括:
资源的效果,一般的可以在检测到所述目标数据包发送成功后,将所述当前代理连接业务
的目标任务保存,并将所述目标任务通过目标协程挂起。
程。
理装置第一实施例,该数据代理装置中的处理模块30包括:
与本地运算的处理函数,例如RSA_sign、RSA_verify等函数替换为RSA_sign_remote、RSA_
verify_remote,替换方式通过OPENSSL提供的函数替换接口实现。
器执行时实现数据代理的步骤。
且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有
的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。
术领域,均同理包括在本发明的专利保护范围内。