掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、设备、存储介质和程序产品

文献发布时间:2023-06-19 12:19:35


数据处理方法、装置、设备、存储介质和程序产品

技术领域

本发明涉及计算机技术,尤其涉及一种数据处理方法、装置、设备、存储介质和程序产品。

背景技术

随着互联网技术的迅猛发展,全球各行业的数据量呈现井喷式发展,Kafka作为LinkedIn设计的一个高吞吐量、分布式、基于发布订阅式的消息系统被众多厂商所应用。同时,越来越多的开源分布式处理系统都支持与Kafka集成,如Flume+kafka、SparkStreaming+Kafka等都是当前主流的架构。

互联网给我们带来极大便利的同时,也对系统的安全性有更高的要求。当前,经常有发生安全漏洞、系统机密数据泄露等问题,因此,数据安全已经成为系统选型必须考虑的一个要素。在现有技术中,引入了身份认证的机制以增强Kafka的安全性。其中,身份认证是指消费终端与服务器之间的连接进行身份认证,包括Broker与consumer之间的连接认证、Broker之间的连接认证、Broker与zookeeper之间的连接认证。

然而,上述的方式,仅仅是对消费终端与服务器的身份的合法性进行认证,在Broker与consumer之间传输数据时,可能存在数据被监听或篡改的现象,导致数据的传输安全性不高。

发明内容

为解决现有技术中存在的问题,本发明提供一种数据处理方法、装置、设备、存储介质和程序产品,可以防止数据被监听或篡改,提高了数据传输的安全性。

第一方面,本申请实施例提供了一种数据处理方法,应用于第一服务器,所述方法包括:

接收终端设备发送的数据访问请求;

根据所述数据访问请求,确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息;

根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

通过所述至少一个目标中继节点,向所述终端设备发送加密后的数据。

可选的,所述根据所述数据访问请求,确定至少一个目标中继节点,包括:

根据多个中继节点中每个中继节点的特征信息,从所述多个中继节点中依次选择所述特征信息满足预设条件的预设数量个目标中继节点,其中,所述特征信息包括响应时间或热度信息。

可选的,所述特征信息包括响应时间;

所述根据多个中继节点中每个中继节点的特征信息,从所述多个中继节点中依次选择所述特征信息满足预设条件的预设数量个目标中继节点,包括:

在每次选择目标中继节点时,根据所述每个中继节点的响应时间,确定多个终端组中每个终端组对应的响应时间,所述每个终端组中包括至少两个中继节点;

选择所述多个终端组中响应时间最小的目标终端组;

将所述目标终端组中响应时间最小的中继节点确定为所述目标中继节点。

可选的,所述预设数量为至少两个;

所述分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息,包括:

在每选择出一个目标中继节点,并控制所述目标中继节点与前一个节点建立通信链路时,获取所述目标中继节点的加密信息,所述前一个节点包括除所述目标中继节点之外的其他目标中继节点或者所述第一服务器;

控制最后选择出的目标中继节点与所述终端设备建立通信链路时,获取所述终端设备的加密信息。

可选的,所述目标中继节点为首个选择的中继节点,所述前一个节点包括所述第一服务器;

所述在每选择出一个目标中继节点,并控制所述目标中继节点与前一个节点建立通信链路时,获取所述目标中继节点的加密信息,包括:

在选择出所述目标中继节点时,向所述目标中继节点发送第一链路建立请求,所述第一链路建立请求用于指示建立所述目标中继节点与所述第一服务器之间的通信链路;

接收所述目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点为非首个选择的中继节点,所述前一个节点包括其他目标中继节点;

所述在每选择出一个目标中继节点,并控制所述目标中继节点与前一个节点建立通信链路时,获取所述目标中继节点的加密信息,包括:

在选择出所述目标中继节点后,向所述目标中继节点的前一个其他目标中继节点发送数据包,所述数据包中包括所述目标中继节点的地址信息,所述地址信息采用所述前一个其他目标中继节点的加密信息进行加密,所述数据包用于指示所述其他前一个目标中继节点向所述目标中继节点发送第二链路建立请求,所述第二链路建立请求用于指示建立所述目标中继节点与所述前一个其他目标中继节点之间的通信链路;

接收所述目标中继节点通过所述前一个其他目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点的数量为至少两个;

所述根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密,包括:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

按照与至少两个目标中继节点的确定顺序相反的逆顺序,依次根据所述至少两个目标中继节点各自对应的加密信息,对第一层加密后的数据执行至少两次加密操作。

可选的,所述目标中继节点的数量为一个;

所述根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密,包括:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

根据所述目标中继节点对应的加密信息对第一层加密后的数据进行加密。

第二方面,本申请实施例提供了一种数据处理方法,应用于终端设备,所述方法包括:

向第一服务器发送数据访问请求,所述数据访问请求用于指示所述第一服务器确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息,并根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

通过所述至少一个目标中继节点,接收所述第一服务器发送的加密后的数据;

对所述加密后的数据进行解密,得到所述待发送数据。

可选的,所述方法还包括:

接收所述终端设备的前一个目标中继节点发送的链路建立请求;

根据所述链路建立请求生成加密信息和解密信息;

将所述加密信息发送给所述前一个目标中继节点,以使所述前一个目标中继节点将所述加密信息发送给第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密;

所述对所述加密后的数据进行解密,得到所述待发送数据,包括:

采用所述解密信息对所述加密后的数据进行解密,得到所述待发送数据。

第三方面,本申请实施例提供了一种数据处理方法,应用于中继节点,所述方法包括:

接收加密后的数据;

根据所述中继节点对应的解密信息,对所述加密后的数据进行解密;

获取所述中继节点的下一个中继节点或终端设备的地址信息,并根据所述中继节点的下一个中继节点或终端设备的地址信息将解密后的数据发送给所述下一个中继节点或终端设备。

可选的,所述方法还包括:

接收链路建立请求;

根据所述链路建立请求生成加密信息和所述解密信息;

将所述加密信息发送给所述第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密。

可选的,所述中继节点为所述第一服务器非首个选择的中继节点,所述方法还包括:

接收所述第一服务器发送的数据包,所述数据包中包括下一个中继节点的地址信息,所述地址信息采用所述中继节点的加密信息进行加密;

根据所述解密信息对所述数据包进行解密,得到所述下一个中继节点的地址信息;

根据所述下一个中继节点的地址信息,向所述下一个中继节点发送链路建立请求。

第四方面,本申请实施例提供了一种数据处理装置,包括:

接收模块,用于接收终端设备发送的数据访问请求;

确定模块,用于根据所述数据访问请求,确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息;

加密模块,用于根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

发送模块,用于通过所述至少一个目标中继节点,向所述终端设备发送加密后的数据。

可选的,所述确定模块,具体用于:

根据多个中继节点中每个中继节点的特征信息,从所述多个中继节点中依次选择所述特征信息满足预设条件的预设数量个目标中继节点,其中,所述特征信息包括响应时间或热度信息。

可选的,所述特征信息包括响应时间;所述确定模块,具体用于:

在每次选择目标中继节点时,根据所述每个中继节点的响应时间,确定多个终端组中每个终端组对应的响应时间,所述每个终端组中包括至少两个中继节点;

选择所述多个终端组中响应时间最小的目标终端组;

将所述目标终端组中响应时间最小的中继节点确定为所述目标中继节点。

可选的,所述预设数量为至少两个;所述确定模块,具体用于:

在每选择出一个目标中继节点,并控制所述目标中继节点与前一个节点建立通信链路时,获取所述目标中继节点的加密信息,所述前一个节点包括除所述目标中继节点之外的其他目标中继节点或者所述第一服务器;

控制最后选择出的目标中继节点与所述终端设备建立通信链路时,获取所述终端设备的加密信息。

可选的,所述目标中继节点为首个选择的中继节点,所述前一个节点包括所述第一服务器;

所述确定模块,具体用于:在选择出所述目标中继节点时,向所述目标中继节点发送第一链路建立请求,所述第一链路建立请求用于指示建立所述目标中继节点与所述第一服务器之间的通信链路;

接收所述目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点为非首个选择的中继节点,所述前一个节点包括其他目标中继节点;

所述确定模块,具体用于:在选择出所述目标中继节点后,向所述目标中继节点的前一个其他目标中继节点发送数据包,所述数据包中包括所述目标中继节点的地址信息,所述地址信息采用所述前一个其他目标中继节点的加密信息进行加密,所述数据包用于指示所述其他前一个目标中继节点向所述目标中继节点发送第二链路建立请求,所述第二链路建立请求用于指示建立所述目标中继节点与所述前一个其他目标中继节点之间的通信链路;

接收所述目标中继节点通过所述前一个其他目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点的数量为至少两个;

所述加密模块,具体用于:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

按照与至少两个目标中继节点的确定顺序相反的逆顺序,依次根据所述至少两个目标中继节点各自对应的加密信息,对第一层加密后的数据执行至少两次加密操作。

可选的,所述目标中继节点的数量为一个;

所述加密模块,具体用于:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

根据所述目标中继节点对应的加密信息对第一层加密后的数据进行加密。

第五方面,本申请实施例提供了一种数据处理装置,包括:

发送模块,用于向第一服务器发送数据访问请求,所述数据访问请求用于指示所述第一服务器确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息,并根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

接收模块,用于通过所述至少一个目标中继节点,接收所述第一服务器发送的加密后的数据;

解密模块,用于对所述加密后的数据进行解密,得到所述待发送数据。

可选的,所述装置还包括生成模块,其中:

所述接收模块,还用于接收所述终端设备的前一个目标中继节点发送的链路建立请求;

所述生成模块,用于根据所述链路建立请求生成加密信息和解密信息;

所述发送模块,还用于将所述加密信息发送给所述前一个目标中继节点,以使所述前一个目标中继节点将所述加密信息发送给第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密;

所述解密模块,具体用于:

采用所述解密信息对所述加密后的数据进行解密,得到所述待发送数据。

第六方面,本申请实施例提供了一种数据处理装置,包括:

接收模块,用于接收加密后的数据;

解密模块,用于根据所述中继节点对应的解密信息,对所述加密后的数据进行解密;

获取模块,用于获取所述中继节点的下一个中继节点或终端设备的地址信息;

发送模块,用于根据所述中继节点的下一个中继节点或终端设备的地址信息将解密后的数据发送给所述下一个中继节点或终端设备。

可选的,所述装置还包括生成模块,其中:

所述接收模块,还用于接收链路建立请求;

所述生成模块,用于根据所述链路建立请求生成加密信息和所述解密信息;

所述发送模块,还用于将所述加密信息发送给所述第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密。

可选的,所述中继节点为所述第一服务器非首个选择的中继节点;

所述接收模块,还用于接收所述第一服务器发送的数据包,所述数据包中包括下一个中继节点的地址信息,所述地址信息采用所述中继节点的加密信息进行加密;

所述解密模块,还用于根据所述解密信息对所述数据包进行解密,得到所述下一个中继节点的地址信息;

所述发送模块,还用于根据所述下一个中继节点的地址信息,向所述下一个中继节点发送链路建立请求。

第七方面,本申请实施例还提供了一种服务器,该服务器可以包括处理器和存储器;其中,

所述存储器,用于存储计算机程序。

所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行上述第一方面任一种可能的实现方式中所述的数据处理方法。

第八方面,本申请实施例还提供了一种终端设备,该终端设备可以包括处理器和存储器;其中,

所述存储器,用于存储计算机程序。

所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行上述第二方面任一种可能的实现方式中所述的数据处理方法。

第九方面,本申请实施例还提供了一种中继节点,该中继节点可以包括处理器和存储器;其中,

所述存储器,用于存储计算机程序。

所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行上述第三方面任一种可能的实现方式中所述的数据处理方法。

第十方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述第一方面任一种可能的实现方式至上述第三方面任一种可能的实现方式中所述的数据处理方法。

第十一方面,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述第一方面任一种可能的实现方式至上述第三方面任一种可能的实现方式中所述的数据处理方法。

本申请提供的数据处理方法、装置、设备、存储介质和程序产品,通过接收终端设备发送的数据访问请求,并根据该数据访问请求,确定至少一个目标中继节点,并分别获取终端设备和至少一个目标中继节点各自对应的加密信息,从而根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行加密,并通过至少一个目标中继节点,向终端设备发送加密后的数据。由于在服务器和请求访问数据的终端设备之间,确定至少一个目标中继节点,并将加密后的数据通过这些目标中继节点发送给终端设备,从而可以避免现有技术中端到端的数据发送方式,一方面,通过至少一个目标中继节点进行数据的中转,可以在保证数据传输效率的前提下,还可以提高数据传输的安全性。另一方面,在数据发送过程中,可以根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行多层加密,这样,对于每个目标中继节点来说,其只能根据自身的解密信息对加密数据进行一层解密,而无法得到最终的数据,由此可以避免数据在传输过程中被监听、窃取或者篡改的现象,进一步提高了数据传输的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为Kafka集群的架构示意图;

图2为本申请实施例提供的一种数据处理方法的信令流程图;

图3为本申请实施例提供的目标中继节点对加密后的数据进行解密的流程示意图;

图4为数据发送的一示意图;

图5为数据发送的另一示意图;

图6为数据发送的又一示意图;

图7为本申请实施例提供的一种数据处理装置的结构示意图;

图8为本申请实施例提供的另一种数据处理装置的结构示意图;

图9为本申请实施例提供的又一种数据处理装置的结构示意图;

图10为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了帮助本领域技术人员更好地理解本申请的技术方案,下面将对本申请技术方案涉及的相关内容进行介绍。

(1)Kafka:Kafka是当前广泛使用的一个开源流处理平台技术,它可以处理消费者在网站中的所有动作流数据,实现提供高吞吐量、分布式、基于发布订阅式的消息系统。

(2)Broker:也称为代理者,Kafka集群包含一个或多个服务器,这种服务器被称为broker。

(3)Producer:也称为生产者,是Kafka集群中负责发布消息到Kafka broker的终端设备。

(4)Consumer:也称为消费者,是Kafka集群中从Kafka broker拉取数据并进行处理的终端设备。每个consumer属于一个特定的consumer group(消费者组,或者终端组),其中,可以为每个consumer指定组名(group name),若某个consumer不指定组名,则认为其属于默认的组。

(5)Tor网络(洋葱网络):Tor网络由大量的志愿者贡献自己的PC/服务器运行洋葱路由协议的节点(node)而组成,Tor客户端(如嵌入Tor的浏览器)随机的从Tor网络中选取3台路由器形成一个私有网络路径传输加密的流量,每台节点路由器只知道数据送往的下一节点,不知道发送数据的来源。这样就保证了这3个节点均无法获知完整的数据传输路径。也就是说,Tor网络将数据的源地址与目的地址进行了隔断,从而无法根据截取的流量进行源地址追踪。

图1为Kafka集群的架构示意图,如图1所示,在Kafka集群中,包括的生产者(producer)、代理者(broker)和消费者(consumer)均为分布式架构,生产者(producer)、代理者(broker)和消费者(consumer)均可以为多个。其中,生产者(Producer)可以包括n个生产终端,其中,这些生产终端将产生的数据缓存至本地的消息队列,并通过采取批量异步发送的方式,主动将数据推送给Kafka服务器。代理者(broker)可以包括多个Kafka服务器或者Kafka服务器集群,例如包括p个服务器。应理解,Kafka支持水平扩展,一般Kafka服务器的数量越多,Kafka集群的吞吐率越高。代理者(broker)可以根据业务类型将生产者(Producer)传送的数据在多台服务器之间进行分配,服务器可以将这些数据进行持久化操作,例如写入日志文件中,以供数据消费者(consumer)使用。消费者(consumer)按照组(group)的方式对终端进行管理,例如包括终端组1、终端组2、终端组3、……、终端组m,每个终端组内,又可以包括至少一个消费终端,在实际部署中,可能由多个物理机(虚拟机)组成,各个物理机(虚拟机)的处理器、存储器及网络协议(Internet Protocol,IP)相互独立,属于同一个终端组(group)。例如,终端组1中包括消费终端1、消费终端2、……、消费终端q。其中,消费者(Consumer)通过拉取的方式,从Kafka服务器中订阅或获取数据,并对获取的数据进行处理。

另外,在Kafka集群中,还包括有配置服务器(Zookeeper),其用于管理Kafka集群的配置,如管理Kafka服务器以及消费终端的配置。

其中,上述的生产终端和消费终端,可以是个人计算机、服务器、平板、手机、掌上电脑(Personal Digital Assistant,PDA)、笔记本或其它任何具有联网功能的计算设备。生产者(producer)、代理者(broker)和消费者(consumer)之间所使用的网络可以包括各种类型的有线和无线网络,例如但不局限于:互联网、局域网、无线保真(Wireless Fidelity,WIFI)、无线局域网(Wireless Local Area Networks,WLAN)、蜂窝通信网络(通用分组无线服务技术(General Packet Radio Service,GPRS)、码分多址(Code Division MultipleAccess,CDMA)、2G/3G/4G/5G蜂窝网络)、卫星通信网络等等。

基于上述Kafka集群的架构可知,目前的Kafka集群中,消费终端从Kafka服务器中获取数据时,通常都是通过端到端的方式主动拉取,这种端到端的数据传输方式,会存在数据被监听、窃取或者篡改的风险,导致数据传输的安全性不高。目前,为了提升数据的安全性,引入了身份认证的机制,例如:在验证消费终端和Kafka服务器的身份合法之后,再从Kafka服务器中主动拉取数据,当发现消费终端和/或Kafka服务器的身份不合法时,禁止从Kafka服务器中主动拉取数据。上述方式虽然从一定程度上提高了数据的安全性,但是该方式并没有解决数据在传输过程中被监听、窃取或者篡改,导致数据传输的安全性较低的问题。

本申请实施例考虑到这一问题,提出了一种数据处理方法,在该方法中,改变了现有技术中端到端的数据传输方式,而是采用Tor网络中多点数据传输方式,将数据的源地址与目的地址进行隔断,从而在数据传输过程中无法根据截取的数据进行源地址追踪,由此可以避免数据在传输过程中被监听、窃取或者篡改的问题。具体的,可以在服务器和请求访问数据的终端设备之间,确定至少一个目标中继节点,并将加密后的数据通过这些目标中继节点发送给终端设备,这样,对于所有的设备来说,其只知道该数据送往的下一节点,而不知道发送数据的来源,也即无法获知完整的数据传输路径,避免了数据在传输过程中被监听、窃取或者篡改的现象,提高了数据传输的安全性。

本申请实施例提供的数据处理方法,可以应用于基于Kafka集群进行数据处理的场景中,尤其可以应用于基于Kafka集群进行数据处理时,对数据安全性要求较高的场景中,以及应用与对数据安全性要求较高的复杂流数据处理网络中,例如金融领域、医疗领域等。

基于上述技术构思,本申请实施例提供一种数据处理方法,下面,将通过具体的实施例对本申请提供的数据处理方法进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图2为本申请实施例提供的一种数据处理方法的信令流程图,如图2所示,本申请实施例提供的数据处理方法包括如下步骤:

步骤201:终端设备向第一服务器发送数据访问请求。

在本步骤中,终端设备为图1中的任意一个消费终端,第一服务器为图1中的任意一个Kafka服务器。当终端设备从第一服务器订阅或者获取数据时,会向第一服务器发送数据访问请求。

步骤202:第一服务器根据数据访问请求,确定至少一个目标中继节点,并分别获取终端设备和至少一个目标中继节点各自对应的加密信息。

在本实施例中,第一服务器向终端设备发送数据时,将不会采用现有技术中的端到端的数据传输方式,而是在接收到数据访问请求后,需要确定至少一个目标中继节点,从而通过这至少一个目标中继节点向终端设备发送数据。其中,目标中继节点为除终端设备之外的其他消费终端,其负责中转数据包,也可以将目标中继节点理解为代理节点。应理解,目标中继节点的数量越多,由于数据传输时经过的设备就越多,数据在传输的过程中就越不容易被监听、篡改或者窃取,数据传输的安全性就越高。

在一种可能的实现方式中,在确定至少一个目标中继节点时,可以根据多个中继节点中每个中继节点的特征信息,从多个中继节点中依次选择特征信息满足预设条件的预设数量个目标中继节点,其中,特征信息包括响应时间或热度信息。

其中,预设数量可以固定值,例如可以为3或者4,也即每次进行数据传输时,第一服务器都会通过3步或4步跳转,也即经过3个或者4个中继节点,将数据传输到终端设备。另外,该预设数量也可以为非固定值,具体的,可以预先在第二服务器中配置最小步数min和最大步数max,第一服务器每次新建数据传输路径时,会从第二服务器中获取预先配置的最小步数min和最大步数max,并根据最小步数min和最大步数max随机确定预设数量n,其中,n大于或等于最小步数min,且小于或等于最大步数max。此时,第一服务器和终端设备之间,通过n步跳转完成数据的传输。例如,若预先配置的min为2,max为6,则在建立数据传输路径时,第一服务器可以随机在2到6之间进行选择,以确定预设数量,如选择3。

可以理解的是,上述的最小步数min可以理解为第一服务器发送的数据,最少需要经过min个中继节点才能传输到终端设备,上述的最大步数max可以理解为第一服务器发送的数据,最多需要经过max个中继节点才能传输到终端设备。

其中,中继节点的响应时间,可以理解为中继节点在接收到某一消息时,对该消息的响应处理时间,该响应时间也可以理解为中继节点的延迟时间。在第二服务器中存储有各个中继节点的响应时间,而且各中继节点的响应时间是不断进行更新的,在具体的实现过程中,可以各中继节点可以实时的将自己的响应时间发送给第二服务器,也可以定时的将自己的响应时间发送给第二服务器,其中,若为定时发送时,各中继节点可以计算预设时间段内的响应时间的平均值,将该平均值发送给第二服务器。

其中,第二服务器中保存有Tor网络中所有中继节点列表及相关信息、传输路径方案的选择信息。第二服务器可以与Zookeeper服务器相同,也可以与Zookeeper服务器不同,其可以为单独的服务器,也可以为服务器集群。

可以放在Zookeeper服务器上,也可以单独放在一个服务器上,或者放在稳定运行的Broker或Consumer上,只要保证有足够的资源,稳定的运行控制节点即可。控制节点B是一种电子设备,包括存储器以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中。

若特征信息包括响应时间,则预设条件为响应时间最小。具体的,在确定目标中继节点时,首先会从第二服务器中确定响应时间最小的中继节点作为第一个目标中继节点。在确定出第一个目标中继节点后,控制第一服务器与第一个目标中继节点建立通信链路,并继续从除已经选择的第一个目标中继节点之外的其他中继节点中,确定响应时间最小的第二个目标中继节点,然后控制第一个中继节点和第二个中继节点建立通信链路,并继续从第二服务器中选择其他中继节点中,响应时间最小的第三个目标中继节点,第一服务器不断重复执行上述过程,直至选择出的目标中继节点的数量为预设数量为止。应理解,由于各个中继节点的响应时间是动态变化的,为了保证每次选择出的目标中继节点都是响应时间最小的,因此,需要在先选择出的目标中继节点建立通信链路的过程中,再选择后续的目标中继节点。

进一步的,根据kafka的实现原理,kafka中的消费终端是分组管理的,各终端组内的消费终端通常具备相似的逻辑性。为了避免采用响应时间较低的方法选择的多个目标中继节点集中在同一个终端组中,在选择目标中继节点时,可以在不同终端组内进行选择。示例性的,在每次选择目标中继节点时,根据每个中继节点的响应时间,确定多个终端组中每个终端组对应的响应时间,该每个终端组中包括至少两个中继节点,并选择多个终端组中响应时间最小的目标终端组,将目标终端组中响应时间最小的中继节点确定为目标中继节点。

具体的,上述中继节点即为消费终端。在kafka集群中,消费终端是分组管理的,也即每个终端组中包括多个中继节点,对于每个终端组来说,其对应的响应时间可以为该终端组内包括的所有中继节点的响应时间的平均值。由于每个中继节点的响应时间是实时更新的,因此,第二服务器也需要根据每个中继节点实时更新的响应时间,更新每个终端组对应的响应时间。

在选择第一个目标中继节点时,第一服务器将从第二服务器中获取所有终端组对应的响应时间,并根据这些响应时间,确定响应时间最小的目标终端组,然后从该目标终端组中,选择响应时间最小的中继节点,从而将该中继节点确定为第一个目标中继节点。在确定出第一个目标中继节点后,控制第一服务器与第一个目标中继节点建立通信链路,并继续从除已经选择的终端组之外的其他终端组中,确定响应时间最小的目标终端组,并从这一目标终端组中选择响应时间最小的第二个目标中继节点,然后控制第一个中继节点和第二个中继节点建立通信链路,并继续从第二服务器中选择其他终端组中,响应时间最小的目标终端组,第一服务器不断重复执行上述过程,直至选择出的目标中继节点的数量为预设数量为止。同样的,由于各个终端组对应的响应时间以及每个中继节点的响应时间是动态变化的,为了保证每次选择出的目标中继节点都是响应时间最小的,因此,需要在先选择出的目标中继节点建立通信链路的过程中,再选择后续的目标中继节点。

需要进行说明的是,为了保证选择的多个目标中继节点属于不同的终端组,在该方式中,需要保证终端组的数量大于或等于目标中继节点对应的预设数量。

其中,对于各个中继节点建立通信链路的过程,将在下文中进行详细介绍。

在本实施例中,在选择目标中继节点时,可以按照终端组进行选择,每次从不同的终端组内选择目标中继节点,可以保证选择出的多个目标中继节点属于不同的终端组,从而保证了目标中继节点的分散性,提高了监控和数据分析的难度,从而使得第一服务器发送的数据不易被破解,提升了数据传输的安全性。

示例性的,中继节点的热度信息,可以理解为中继节点的使用频率,也可以理解为使用该中继节点转发数据的次数。中继节点的热度信息越小,表示该中继节点的使用次数越少或者使用频率越低,中继节点的热度信息越大,表示该中继节点的使用次数越多或使用频率越高。另外,在第二服务器中会存储有各个中继节点的热度信息,其中,每个中继节点在被选择用于转发数据后,其会将热度信息进行更新,如将使用次数加1,并将更新后的热度信息发送给第二服务器,以保证第二服务器中存储的热度信息的准确性。

若特征信息包括热度信息,则预设条件为热度信息最小。具体的,在确定目标中继节点时,首先会从第二服务器中确定热度信息最小的中继节点作为第一个目标中继节点。在确定出第一个目标中继节点后,控制第一服务器与第一个目标中继节点建立通信链路,并继续从除已经选择的第一个目标中继节点之外的其他中继节点中,确定热度信息最小的第二个目标中继节点,然后控制第一个中继节点和第二个中继节点建立通信链路,并继续从第二服务器中选择其他中继节点中热度信息最小的第三个目标中继节点,第一服务器不断重复执行上述过程,直至选择出的目标中继节点的数量为预设数量为止。应理解,由于各个中继节点的热度信息是动态变化的,为了保证每次选择出的目标中继节点都是热度信息最小的,因此,需要在先选择出的目标中继节点建立通信链路的过程中,再选择后续的目标中继节点。

在本实施例中,可以根据每个中继节点的特征信息,从多个中继节点中依次选择特征信息满足预设条件的预设数量个目标中继节点,一方面,由于每个中继节点的特征信息都是动态变化的,因此,与一次性选择出多个目标中继节点的方式相比,本申请实施例中在考虑了这种动态变化的基础上,依次选择出预设数量个目标中继节点,从而使得选择出的目标中继节点更加准确。另一方面,由于考虑了每个中继节点的特征信息的动态变化,使得每次在建立传输路径时,第一服务器选择的目标中继节点都不同,这使得攻击者难以通过单个或少数中继节点来获取用户的完整访问记录,从而使得传输数据更难被追踪、监听或盗用,提高了数据传输的安全性。

进一步的,为了提高数据传输的安全性,第一服务器还需要获取终端设备的加密信息和至少一个目标中继节点各自对应的加密信息。

在一种可能的实现方式中,若只有一个目标中继节点时,可以通过如下方式获取终端设备和该目标中继节点的加密信息:

第一服务器根据第二服务器中存储的所有中继节点的响应时间或热度信息,确定出响应时间或热度信息最小的目标中继节点,第一服务器向该目标中继节点发送链路建立请求,目标中继节点根据该链路建立请求,验证第一服务器合法之后,将会生成加密信息和解密信息,并将该加密信息返回给第一服务器。其中,解密信息用于对第一服务器发送的采用加密信息加密后的数据进行解密。

第一服务器在接收到目标中继节点发送的加密信息后,会向该目标中继节点发送数据包,该数据包中包括终端设备的地址信息,其中,为了提高安全性,第一服务器可以采用目标中继节点的加密信息对终端设备的地址信息进行加密,目标中继节点接收到数据包,并对该数据包采用解密信息进行解密后,若确定出该数据包是用于指示目标中继节点建立与终端设备之间的通信链路的数据包,则将根据终端设备的地址信息,向终端设备发送链路建立请求,从而建立目标中继节点与终端设备之间的通信链路。

在上述方式中,第一服务器在目标中继节点与第一服务器建立通信链路的过程中,可以获取到目标中继节点的加密信息,在目标中继节点与终端设备建立通信链路的过程中,可以获取到终端设备的加密信息。

示例性的,加密信息可以为公钥,解密信息可以为私钥,或者,加密信息可以为私钥,解密信息可以为公钥,当然,加密信息和解密信息也可以为其他信息,只要能对需要传输的数据进行加解密即可,对于加密信息和解密信息的具体内容,本申请实施例在此不做限制。

在另一种可能的实现方式中,若预设数量为至少两个,也即目标中继节点有至少两个时,可以通过如下方式获取终端设备和各个目标中继节点的加密信息:

在每选择出一个目标中继节点,并控制目标中继节点与前一个节点建立通信链路时,获取目标中继节点的加密信息,其中,前一个节点包括除目标中继节点之外的其他目标中继节点或者第一服务器,控制最后选择出的目标中继节点与终端设备建立通信链路时,获取终端设备的加密信息。

具体的,在目标中继节点的数量为两个或者两个以上时,各个目标中继节点将在其与其他目标中继节点建立通信链路的过程中,生成加密信息和解密信息,并将生成的加密信息发送给第一服务器,将解密信息进行保存,以用于解密第一服务器发送的数据。

下面,将分别以目标中继节点为首个选择的中继节点,以及非首个选择的中继节点时,第一服务器如何获取各个目标中继节点的加密信息的过程进行详细说明。

示例性的,若目标中继节点为首个选择的中继节点,前一个节点包括第一服务器时,在获取目标中继节点的加密信息时,可以在选择出目标中继节点后,向目标中继节点发送第一链路建立请求,该第一链路建立请求用于指示建立目标中继节点与第一服务器之间的通信链路,接收目标中继节点发送的所述目标中继节点的加密信息。

示例性的,若目标中继节点为非首个选择的中继节点,前一个节点包括其他目标中继节点时,在获取目标中继节点的加密信息时,可以在选择出目标中继节点后,向目标中继节点的前一个其他目标中继节点发送数据包,该数据包中包括目标中继节点的地址信息,该地址信息采用前一个其他目标中继节点的加密信息进行加密,该数据包用于指示其他前一个目标中继节点向目标中继节点发送第二链路建立请求,第二链路建立请求用于指示建立目标中继节点与前一个其他目标中继节点之间的通信链路,接收目标中继节点通过前一个其他目标中继节点发送的目标中继节点的加密信息。

具体的,第一服务器从第二服务器选择出特征信息满足预设条件的第一个目标中继节点后,第一服务器会向第一个目标中继节点发送第一链路建立请求,第一个目标中继节点根据该第一链路建立请求,会进行第一服务器身份合法性的验证,在验证第一服务器合法后,生成加密信息和解密信息,并将生成的加密信息发送给第一服务器,这样,第一服务器即可获取到第一个目标中继节点的加密信息。另外,第一个目标中继节点的解密信息用于对第一服务器发送的加密信息进行解密处理。

其中,在选择出首个目标中继节点后,该目标中继节点可以将生成的加密信息发送给第一服务器,这样,第一服务器可以根据加密信息对待发送数据进行加密处理,从而可以进一步提高数据传输的安全性。

进一步的,第一服务器在接收到首个目标中继节点发送的加密信息后,第一服务器会再次从第二服务器中查询除已经选择的首个目标中继节点之外的其他目标中继节点中特征信息满足预设条件的第二个目标中继节点,并向第一个目标中继节点发送数据包,该数据包中包括有第二个目标中继节点的地址信息,且该地址信息采用第一个目标中继节点的加密信息进行加密。另外,该数据包中还包括有第一服务器的标识信息。第一个目标中继节点在接收到数据包后,对该数据包进行解析,确定出该数据包是用于指示建立链路请求的,则第一个目标中继节点将采用自身的解密信息对加密后的地址信息进行解密,从而得到第二个目标中继节点的地址信息,并根据该地址信息,向第二个目标中继节点发送第二链路建立请求,以请求建立第一个目标中继节点和第二个目标中继节点之间的通信链路。

第二个目标中继节点在接收到第二链路建立请求后,将生成加密信息和解密信息,并将生成的加密信息发送给第一个目标中继节点,第一个目标中继节点再将第二个目标中继节点的加密信息发送给第一服务器,这样,第一服务器即可获取到第二个目标中继节点的加密信息。另外,第二个目标中继节点的解密信息用于对第一服务器发送的加密后的地址信息以及对第一个目标中继节点发送的解密后的待发送数据进行解密处理。

第一服务器在接收到第二个目标中继节点发送的加密信息后,第一服务器会再次从第二服务器中查询除已经选择的首个目标中继节点和第二个目标中继节点之外的其他目标中继节点中,特征信息满足预设条件的第三个目标中继节点,并重复执行前述步骤,直至选择出预设数量个目标中继节点,并获取到最后一个目标中继节点的加密信息。

在本实施例中,在选择出非首个目标中继节点后,每个目标中继节点可以将生成的加密信息发送给第一服务器,这样,第一服务器可以根据前一个目标中继节点的加密信息对后一个目标中继节点的地址信息进行加密,从而可以提高后一个目标中继节点地址信息的安全性,使得攻击者不容易获取到后一个目标中继节点,从而使得传输数据更难被追踪、监听或盗用,提高了数据传输的安全性。

进一步的,对于终端设备的加密信息,也可以按照前述方式获取。具体的,在第一服务器接收到最后一个目标中继节点发送的加密信息后,会向最后一个目标中继节点发送数据包,该数据包中包括有终端设备的地址信息,该地址信息采用最后一个目标中继节点的加密信息进行加密,最后一个目标中继节点在接收到数据包后,对该数据包进行解析,确定出该数据包是用于指示建立链路请求的,则最后一个目标中继节点将采用自身的解密信息对加密后的地址信息进行解密,从而得到终端设备的地址信息,并根据该地址信息,向终端设备发送链路建立请求,以请求建立最后一个目标中继节点和终端设备之间的通信链路。终端设备接收到链路建立请求后,将生成加密信息和解密信息,并将生成的加密信息发送给第一服务器。其中,解密信息用于对最后一个目标中继节点发送的加密后的待发送数据进行解密。

在本实施例中,可以在建立通信链路的过程中,获取各个目标中继节点的加密信息或者终端设备的加密信息,这样,第一服务器后续可以根据加密信息对待发送数据进行加密处理,从而可以进一步提高数据传输的安全性。

步骤203:第一服务器根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行加密。

在本步骤中,在确定出终端设备的加密信息以及至少一个目标中继节点各自对应的加密信息后,将根据这些加密信息对待发送数据进行加密。

在一种可能的实现方式中,若仅有一个目标中继节点,第一服务器在对待发送数据进行加密时,可以先采用终端设备的加密信息对待发送数据进行第一层加密,然后采用目标中继节点的加密信息对第一层加密后的数据进行第二层加密。

在本实施例中,由于第一服务器在向终端设备发送数据时,改变了现有技术中端到端的发送方式,而是采用目标中继节点进行数据转发,而且在转发的过程中会对数据进行多层加密,进而保证了数据传输过程中的安全性。

在另一种可能的实现方式中,若目标中继节点的数量为至少两个,第一服务器在对待发送数据进行加密时,可以先根据终端设备的加密信息对待发送数据进行第一层加密,然后按照与至少两个目标中继节点的确定顺序相反的逆顺序,依次根据至少两个目标中继节点各自对应的加密信息,对第一层加密后的数据执行至少两次加密操作。

具体的,为了使得数据在传输过程中不容易被破解或者攻击,因此,第一服务器需要根据每个目标中继节点的加密信息和终端设备的加密信息,对需要发送的待发送数据进行加密处理。由于第一服务器在发送数据时,是按照目标中继节点的确定顺序依次发送给终端设备的,因此,为了能使各个目标中继节点能进行解密,在对数据进行加密时,加密的顺序与数据发送时经过的各个设备节点的顺序相反。

例如,假设总共有3个目标中继节点,且第一个目标中继节点的加密信息为A1,第二个目标中继节点的加密信息为A2,第三个目标中继节点的加密信息为A3,终端设备的加密信息为A4,则第一服务器对待发送数据data进行加密时,先采用A4对待发送数据进行第一层加密,得到A4(data),再依次采用A3、A2和A1对待发送数据进行三层加密,从而得到加密后的数据A1A2A3A4(data)。

在本实施例中,第一服务器在经过至少两个目标中继节点向终端设备发送待发送数据时,可以按照与数据发送时经过的各个设备节点的顺序相反的逆顺序,对待发送数据进行多层加密,由于加密的顺序与数据发送时经过的各个设备节点的顺序相反,所以,可以保证每个设备节点都能用自身的解密信息进行正确的解密。另外,通过对待发送数据进行多层加密,从而可以进一步提高数据传输的安全性。

步骤204:第一服务器通过至少一个目标中继节点,向终端设备发送加密后的数据。

下面,对任意一个目标中继节点接收到加密数据后,如何进行数据的解密以及发送的过程进行详细说明。

图3为本申请实施例提供的目标中继节点对加密后的数据进行解密的流程示意图,如图3所示,该方法包括:

步骤2041:接收加密后的数据。

在本步骤中,若目标中继节点为首个选择的中继节点,则该目标中继节点将接收第一服务器发送的加密后的数据。若目标中继节点为非首个选择的中继节点,则该目标中继节点将接收前一个目标中继节点发送的加密后的数据。

步骤2042:根据中继节点对应的解密信息,对加密后的数据进行解密。

步骤2043:获取中继节点的下一个中继节点或终端设备的地址信息,并根据中继节点的下一个中继节点或终端设备的地址信息将解密后的数据发送给下一个中继节点或终端设备。

其中,若目标中继节点仅有一个,第一服务器在进行数据发送时,第一服务器将经过两层加密的加密数据发送给目标中继节点,由于第二次加密时是采用目标中继节点的加密信息,因此,目标中继节点接收到加密数据后,根据自身的解密信息对该加密数据进行第一层解密,从而得到解密后的数据。并基于之前建立的通信链路以及建立通信链路时获取到的终端设备的地址信息,将经过第一层解密后的数据发送给终端设备,终端设备根据自身的解密信息,对接收到的经过第一层解密后的数据再次进行解密,从而可以得到第一服务器发送的数据。

若目标中继节点的数量为至少两个,第一服务器在进行数据发送时,第一服务器将经过多层加密的加密数据发送给第一个目标中继节点,由于在加密时,是按照与数据发送时经过的各个设备节点的顺序相反的逆顺序进行多层加密的,因此,最后一次加密时采用的加密信息是第一个目标中继节点的加密信息,第一个目标中继节点接收到加密数据后,根据自身的解密信息对该加密数据进行第一层解密,从而可以得到第一层解密后的数据,并基于之前建立的通信链路以及建立通信链路时获取到的第二个目标中继节点的地址信息,将经过第一层解密后的数据发送给第二个目标中继节点。第二个目标中继节点根据自身的解密信息,对接收到的经过第一层解密后的数据再次进行解密,并将再次解密后的数据发送给第三个目标中继节点,以此类推,最后终端设备对接收到的数据进行解密后即可得到第一服务器发送的数据。

继前述的例子,假设第一个目标中继节点的解密信息为B1,第二个目标中继节点的解密信息为B2,第三个目标中继节点的解密信息为B3,终端设备的解密信息为B4,则第一服务器对加密后的数据A1A2A3A4(data)进行解密时,先采用B1对加密后的数据A1A2A3A4(data)进行第一层解密,得到A2A3A4(data),再采用B2对A2A3A4(data)进行第二层解密,得到A3A4(data),再采用B3对A3A4(data)进行第三层解密,得到A4(data),再采用B4对A4(data)进行第四层解密,得到data。

本申请实施例提供的数据处理方法,通过接收终端设备发送的数据访问请求,并根据该数据访问请求,确定至少一个目标中继节点,并分别获取终端设备和至少一个目标中继节点各自对应的加密信息,从而根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行加密,并通过至少一个目标中继节点,向终端设备发送加密后的数据。由于在服务器和请求访问数据的终端设备之间,确定至少一个目标中继节点,并将加密后的数据通过这些目标中继节点发送给终端设备,从而可以避免现有技术中端到端的数据发送方式,一方面,通过至少一个目标中继节点进行数据的中转,可以提高数据传输的安全性。另一方面,在数据发送过程中,可以根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行多层加密,这样,对于每个目标中继节点来说,其只能根据自身的解密信息对加密数据进行一层解密,而无法得到最终的数据,由此可以避免数据在传输过程中被监听、窃取或者篡改的现象,进一步提高了数据传输的安全性。

需要进行说明的是,在本申请实施例中,数据的传输路径会定时拆除并重新选择目标中继节点建立新路径,这使得攻击者难以通过单个或少数中继节点来获取用户的完整访问记录。另外,传输路径的重建的时间间隔可以预先进行设置,该时间间隔时间越长,重建路径的频率越低,建立链路的资源消耗越少,用于发送数据的有效传输效率越高,从而传输路径的变化频率越低,抗追踪性就越低。

下面,分别以特征信息为响应时间和热度信息,加密信息为公钥,解密信息为私钥为例,对本申请实施例的方案进行详细说明。

示例性的,特征信息为响应时间时,在第二服务器中配置有最小步数min和最大步数max,假设min=2,max=6,则第一服务器在传输数据时,将随机选择2到6之间的整数作为步数。其中,第二服务器中存储有每个中继节点的响应时间L,并定时进行刷新。

图4为数据发送的一示意图,如图4所示,第一服务器B1接收到终端设备An发送的数据访问请求后,第一服务器B1在建立通信链路时,第一服务器B1首先与第二服务器B建立链接,并从第二服务器B中查询出响应时间最小的目标中继节点A1作为第一个目标中继节点,其中,若有多个目标中继节点的响应时间相同,则可以随机选择一个。

第一服务器B1向目标中继节点A1发送链路建立请求,目标中继节点A1验证第一服务器B1的合法性后生成一对密钥,其中,公钥为pubkey_B1_A1、私钥为prikey_B1_A1,然后将公钥pubkey_B1_A1发送给第一服务器B1。

第一服务器B1再次从第二服务器B中查询出响应时间最小的目标中继节点A2,并向目标中继节点A1发送建立链接命令的数据包,该数据包中包括目标中继节点A2的地址信息,且该地址信息使用目标中继节点A1的公钥pubkey_B1_A1进行加密。

目标中继节点A1接收到数据包后,使用目标中继节点A1的私钥prikey_B1_A1对数据包进行解密,解析后发现是建立链接的请求,则目标中继节点A1将向目标中继节点A2发送链路建立请求,目标中继节点A2验证目标中继节点A1的合法性后生成一对密钥,其中,公钥为pubkey_A1_A2、私钥为prikey_A1_A2,然后将公钥pubkey_A1_A2发送给目标中继节点A1,目标中继节点A1再将公钥pubkey_A1_A2发送给第一服务器B1。

第一服务器B1再次从第二服务器B中查询出响应时间最小的目标中继节点A3,并重复上述过程,从而可以建立目标中继节点A2与目标中继节点A3、目标中继节点A3与目标中继节点A4,...,目标中继节点An-1与终端设备An之间的通信链路,并接收到这些目标中继节点以及终端设备的公钥pubkey_A2_A3,pubkey_A3_A4,...,pubkey_An-1_An。

至此,第一服务器B1与n-1个目标中继节点、终端设备之间的通信链路已经成功建立,而且第一服务器B1拥有n把公钥:pubkey_B1_A1,pubkey_A1_A2,...,pubkey_An-1_An。

第一服务器B1在发送数据包时,将待发送数据data经过n层加密包裹,其中,第一层:使用pubkey_An-1_An加密data,得到pubkey_An-1_An(data);第二层:使用pubkey_An-2_An-1加密第一层加密后的数据,得到pubkey_An-2_An-1(pubkey_An-1_An(data));以此类推,第n层:使用pubkey_B1_A1加密第n-1层机密后的数据,得到pubkey_B1_A1(pubkey_A1_A2(...pubkey_An-1_An(data)...))。

目标中继节点A1接收到第一服务器B1发送的数据包后使用私钥prikey_B1_A1对数据包进行解密,得到目标中继节点A2的地址信息,目标中继节点A1就将解密后的数据包发送给目标中继节点A2;目标中继节点A2接收到目标中继节点A1发送的数据包后,使用私钥prikey_A1_A2对数据包进行解密,得到目标中继节点A3的地址信息;以此类推,终端设备An接收到数据包后,使用私钥prikey_An-1_An对数据包进行解密,此时,解密后的数据包即为第一服务器B1发送给终端设备An的真实数据包data。

需要进行说明的是,终端设备向第一服务器发送数据的方式,与上述第一服务器向终端设备发送数据的过程类似,此处不再赘述。

图5为数据发送的另一示意图,本实施例与图4所示实施例的区别在于,在图5所示实施例中,可以采用固定的步数,而且采用分组跳转(路由)传输的、非对称加密传输的方式,采用该方式确定出的每个目标中继节点属于不同的终端组。其中,固定步数可以是预先设置的。如图5所示,根据kafka的实现原理,kafka中的消费终端是分组管理的,各终端组内的消费终端通常具备相似的逻辑性。为了避免采用响应时间最小的方法选择的目标中继节点A集中在同一个终端组中,本实施例中每次都选择不同终端组内的目标中继节点,以保证目标中继节点的分散性,提高了监控和流量分析的难度,从而不易破解,提升数据传输的安全性。应理解,采用本实施例中的方式,需要终端组的组数大于或等于步数。下面以步数n=3为例,介绍本实施例中的实现方式,其中第二服务器中存放有每个目标中继节点A的分组值G,和每个终端组的平均响应时间L。另外,每个终端组的平均响应时间L以及每个终端组内包括的各个消费终端的响应时间均是动态更新的,示例性的,每个终端组的平均响应时间,可以为终端组内的所有消费终端的响应时间的平均值。

如图5所示,第一服务器B3接收到终端设备发送的数据访问请求后,第一服务器B3在建立通信链路时,将会与第二服务器建立链接,并从第二服务器中确定出平均响应时间最小的终端组2,并从终端组2中选择响应时间最小的目标中继节点A

第一服务器B3向目标中继节点A1发送链路建立请求,目标中继节点A1验证第一服务器B3的合法性后生成一对密钥,其中,公钥为pubkey_B3_A1、私钥为prikey_B3_A1,然后将公钥pubkey_B3_A1发送给第一服务器B3。

第一服务器B3再次从第二服务器B查询出平均响应时间最小的终端组G-1,从终端组G-1中选择一个响应时间最小的目标中继节点A

目标中继节点A1接收到数据包后,使用目标中继节点A1的私钥prikey_B3_A1对数据包进行解密,解析后发现是建立链接的请求,则目标中继节点A1将向目标中继节点A2发送链路建立请求,目标中继节点A2验证目标中继节点A1的合法性后生成一对密钥,其中,公钥为pubkey_A1_A2、私钥为prikey_A1_A2,然后将公钥pubkey_A1_A2发送给目标中继节点A1,目标中继节点A1再将公钥pubkey_A1_A2发送给第一服务器B3。

第一服务器B3再次从第二服务器B中查询出平均响应时间最小的终端组,并重复上述过程,从而可以建立目标中继节点A2与目标中继节点A3之间的通信链路,并接收到这些目标中继节点的公钥pubkey_A2_A3。

至此,第一服务器B3与3个目标中继节点、终端设备之间的通信链路已经成功建立,而且第一服务器B3拥有3个目标中继节点的公钥:pubkey_B3_A1,pubkey_A1_A2和pubkey_A2_A3,以及终端设备An的公钥pubkey_An-1_An。

第一服务器B3在发送数据包时,将待发送数据data经过4层加密包裹,其中,第一层:使用pubkey_An-1_An加密data,得到pubkey_An-1_An(data),第二层:使用pubkey_A2_A3加密pubkey_An-1_An(data),得到pubkey_A2_A3(pubkey_An-1_An(data));第三层:使用pubkey_A1_A2加密第二层加密后的数据,得到pubkey_A1_A2(pubkey_A2_A3(pubkey_An-1_An(data)));第四层:使用pubkey_B3_A1加密第三层加密后的数据,得到pubkey_B3_A1(pubkey_A1_A2(pubkey_A2_A3(pubkey_An-1_An(data))))。

目标中继节点A1接收到第一服务器B3发送的数据包后使用私钥prikey_B3_A1对数据包进行解密,得到目标中继节点A2的地址信息,目标中继节点A1就将解密后的数据包发送给目标中继节点A2;目标中继节点A2接收到目标中继节点A1发送的数据包后,使用私钥prikey_A1_A2对数据包进行解密,得到目标中继节点A3的地址信息;以此类推,终端设备An接收到数据包后,使用私钥prikey_An-1_An对数据包进行解密,此时,解密后的数据包即为第一服务器B3发送给终端设备An的真实数据包data。

需要进行说明的是,终端设备向第一服务器发送数据的方式,与上述第一服务器向终端设备发送数据的过程类似,此处不再赘述。

示例性的,特征信息为热度信息时,在第二服务器中存储有各个中继节点的热度信息H,其中,在初始化时,将每个中继节点的热度信息H设置为0,在每个中继节点完成一次传输后,则该中继节点的热度值增加1,在每次进行传输路径选择时,优先选择H值较低的中继节点作为目标中继节点,H值相同的中继节点选择延时最低或者响应时间最小的中继节点。为了避免H值溢出边界,可设置冷却时间T,每间隔T所有中继节点的H值归零,重新开始计算。通过本实施例中的方法,通过频繁转换传输路径可以增强安全性。另外,可以配置固定步数n,每次数据传输均采用n步跳转,完成传输。本方法保证中继节点的变化性,提高了监控和流量分析的难度,从而不易破解,提升数据传输的安全性。例如,n=3,则每次数据传输都经历3个中继节点。下面以n=3为例,介绍本实施例的实现方式。

图6为数据发送的又一示意图,本实施例中,如图6所示,第一服务器B2接收到终端设备An发送的数据访问请求后,第一服务器B2在建立通信链路时,第一服务器B2首先与第二服务器B建立链接,并从第二服务器B中查询出热度H最小的目标中继节点A1作为第一个目标中继节点,且第二服务器B将目标中继节点A1的值加1。其中,若有多个目标中继节点的热度H相同,则可以随机选择一个。

第一服务器B2向目标中继节点A1发送链路建立请求,目标中继节点A1验证第一服务器B2的合法性后生成一对密钥,其中,公钥为pubkey_B2_A1、私钥为prikey_B2_A1,然后将公钥pubkey_B2_A1发送给第一服务器B2。

第一服务器B2再次从第二服务器B中查询出热度H最低的目标中继节点A2作为第二个目标中继节点,第二服务器B将目标中继节点A2的热度H值增加1。第一服务器B2向目标中继节点A1发送建立链接命令的数据包,该数据包中包括目标中继节点A2的地址信息,且该地址信息使用目标中继节点A1的公钥pubkey_B1_A1进行加密。

目标中继节点A1接收到数据包后,使用目标中继节点A1的私钥prikey_B1_A1对数据包进行解密,解析后发现是建立链接的请求,则目标中继节点A1将向目标中继节点A2发送链路建立请求,目标中继节点A2验证目标中继节点A1的合法性后生成一对密钥,其中,公钥为pubkey_A1_A2、私钥为prikey_A1_A2,然后将公钥pubkey_A1_A2发送给目标中继节点A1,目标中继节点A1再将公钥pubkey_A1_A2发送给第一服务器B2。

第一服务器B2再次从第二服务器B中查询出热度H最小的目标中继节点A3,并重复上述过程,从而可以建立目标中继节点A2与目标中继节点A3,目标中继节点A3与终端设备An之间的通信链路,并接收到这些目标中继节点的公钥pubkey_A2_A3,以及终端设备的公钥pubkey_An-1_An。

至此,第一服务器B2与3个目标中继节点以及终端设备之间的通信链路已经成功建立,而且第一服务器B2拥有4把公钥:pubkey_B1_A1,pubkey_A1_A2,pubkey_A2_A3,pubkey_An-1_An。

第一服务器B2在发送数据包时,将待发送数据data经过4层加密包裹,其中,第一层:使用pubkey_An-1_An加密data,得到pubkey_An-1_An(data),第二层:使用pubkey_A2_A3加密pubkey_An-1_An(data),得到pubkey_A2_A3(pubkey_An-1_An(data));第三层:使用pubkey_A1_A2加密第二层加密后的数据,得到pubkey_A1_A2(pubkey_A2_A3(pubkey_An-1_An(data)));第四层:使用pubkey_B2_A1加密第三层加密后的数据,得到pubkey_B2_A1(pubkey_A1_A2(pubkey_A2_A3(pubkey_An-1_An(data))))。

目标中继节点A1接收到第一服务器B2发送的数据包后使用私钥prikey_B2_A1对数据包进行解密,得到目标中继节点A2的地址信息,目标中继节点A1就将解密后的数据包发送给目标中继节点A2;目标中继节点A2接收到目标中继节点A1发送的数据包后,使用私钥prikey_A1_A2对数据包进行解密,得到目标中继节点A3的地址信息;以此类推,终端设备An接收到数据包后,使用私钥prikey_An-1_An对数据包进行解密,此时,解密后的数据包即为第一服务器B2发送给终端设备An的真实数据包data。

需要进行说明的是,终端设备向第一服务器发送数据的方式,与上述第一服务器向终端设备发送数据的过程类似,此处不再赘述。

本申请实施例提供的数据处理方法,通过接收终端设备发送的数据访问请求,并根据该数据访问请求,确定至少一个目标中继节点,并分别获取终端设备和至少一个目标中继节点各自对应的加密信息,从而根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行加密,并通过至少一个目标中继节点,向终端设备发送加密后的数据。由于在服务器和请求访问数据的终端设备之间,确定至少一个目标中继节点,并将加密后的数据通过这些目标中继节点发送给终端设备,从而可以避免现有技术中端到端的数据发送方式,一方面,通过至少一个目标中继节点进行数据的中转,可以提高数据传输的安全性。另一方面,在数据发送过程中,可以根据终端设备和至少一个目标中继节点各自对应的加密信息对待发送数据进行多层加密,这样,对于每个目标中继节点来说,其只能根据自身的解密信息对加密数据进行一层解密,而无法得到最终的数据,由此可以避免数据在传输过程中被监听、窃取或者篡改的现象,进一步提高了数据传输的安全性。

图7为本申请实施例提供的一种数据处理装置70的结构示意图,示例的,请参见图7所示,该数据处理装置70可以包括:

接收模块701,用于接收终端设备发送的数据访问请求;

确定模块702,用于根据所述数据访问请求,确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息;

加密模块703,用于根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

发送模块704,用于通过所述至少一个目标中继节点,向所述终端设备发送加密后的数据。

可选的,所述确定模块702,具体用于:

根据多个中继节点中每个中继节点的特征信息,从所述多个中继节点中依次选择所述特征信息满足预设条件的预设数量个目标中继节点,其中,所述特征信息包括响应时间或热度信息。

可选的,所述特征信息包括响应时间;所述确定模块702,具体用于:

在每次选择目标中继节点时,根据所述每个中继节点的响应时间,确定多个终端组中每个终端组对应的响应时间,所述每个终端组中包括至少两个中继节点;

选择所述多个终端组中响应时间最小的目标终端组;

将所述目标终端组中响应时间最小的中继节点确定为所述目标中继节点。

可选的,所述预设数量为至少两个;所述确定模块702,具体用于:

在每选择出一个目标中继节点,并控制所述目标中继节点与前一个节点建立通信链路时,获取所述目标中继节点的加密信息,所述前一个节点包括除所述目标中继节点之外的其他目标中继节点或者所述第一服务器;

控制最后选择出的目标中继节点与所述终端设备建立通信链路时,获取所述终端设备的加密信息。

可选的,所述目标中继节点为首个选择的中继节点,所述前一个节点包括所述第一服务器;

所述确定模块702,具体用于:在选择出所述目标中继节点时,向所述目标中继节点发送第一链路建立请求,所述第一链路建立请求用于指示建立所述目标中继节点与所述第一服务器之间的通信链路;

接收所述目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点为非首个选择的中继节点,所述前一个节点包括其他目标中继节点;

所述确定模块702,具体用于:在选择出所述目标中继节点后,向所述目标中继节点的前一个其他目标中继节点发送数据包,所述数据包中包括所述目标中继节点的地址信息,所述地址信息采用所述前一个其他目标中继节点的加密信息进行加密,所述数据包用于指示所述其他前一个目标中继节点向所述目标中继节点发送第二链路建立请求,所述第二链路建立请求用于指示建立所述目标中继节点与所述前一个其他目标中继节点之间的通信链路;

接收所述目标中继节点通过所述前一个其他目标中继节点发送的所述目标中继节点的加密信息。

可选的,所述目标中继节点的数量为至少两个;所述加密模块703,具体用于:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

按照与至少两个目标中继节点的确定顺序相反的逆顺序,依次根据所述至少两个目标中继节点各自对应的加密信息,对第一层加密后的数据执行至少两次加密操作。

可选的,所述目标中继节点的数量为一个;所述加密模块703,具体用于:

根据所述终端设备的加密信息对所述待发送数据进行第一层加密;

根据所述目标中继节点对应的加密信息对第一层加密后的数据进行加密。

本申请实施例提供的数据处理装置70,可以执行上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

图8为本申请实施例提供的另一种数据处理装置80的结构示意图,示例的,请参见图8所示,该数据处理装置80可以包括:

发送模块801,用于向第一服务器发送数据访问请求,所述数据访问请求用于指示所述第一服务器确定至少一个目标中继节点,并分别获取所述终端设备和所述至少一个目标中继节点各自对应的加密信息,并根据所述终端设备和所述至少一个目标中继节点各自对应的加密信息对待发送数据进行加密;

接收模块802,用于通过所述至少一个目标中继节点,接收所述第一服务器发送的加密后的数据;

解密模块803,用于对所述加密后的数据进行解密,得到所述待发送数据。

可选的,所述装置还包括生成模块804,其中:

所述接收模块802,还用于接收所述终端设备的前一个目标中继节点发送的链路建立请求;

所述生成模块804,用于根据所述链路建立请求生成加密信息和解密信息;

所述发送模块801,还用于将所述加密信息发送给所述前一个目标中继节点,以使所述前一个目标中继节点将所述加密信息发送给第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密;

所述解密模块803,具体用于:

采用所述解密信息对所述加密后的数据进行解密,得到所述待发送数据。

本申请实施例提供的数据处理装置80,可以执行上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

图9为本申请实施例提供的又一种数据处理装置90的结构示意图,示例的,请参见图9所示,该数据处理装置90可以包括:

接收模块901,用于接收加密后的数据;

解密模块902,用于根据所述中继节点对应的解密信息,对所述加密后的数据进行解密;

获取模块903,用于获取所述中继节点的下一个中继节点或终端设备的地址信息;

发送模块904,用于根据所述中继节点的下一个中继节点或终端设备的地址信息将解密后的数据发送给所述下一个中继节点或终端设备。

可选的,所述装置还包括生成模块905,其中:

所述接收模块901,还用于接收链路建立请求;

所述生成模块905,用于根据所述链路建立请求生成加密信息和所述解密信息;

所述发送模块904,还用于将所述加密信息发送给所述第一服务器,所述加密信息用于指示所述第一服务器对待发送数据进行加密。

可选的,所述中继节点为所述第一服务器非首个选择的中继节点;

所述接收模块901,还用于接收所述第一服务器发送的数据包,所述数据包中包括下一个中继节点的地址信息,所述地址信息采用所述中继节点的加密信息进行加密;

所述解密模块902,还用于根据所述解密信息对所述数据包进行解密,得到所述下一个中继节点的地址信息;

所述发送模块904,还用于根据所述下一个中继节点的地址信息,向所述下一个中继节点发送链路建立请求。

本申请实施例提供的数据处理装置90,可以执行上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

图10为本申请实施例提供的一种电子设备100的结构示意图,其中,该电子设备100可以为服务器、终端设备或中继节点。示例的,请参见图10所示,该电子设备100可以包括处理器1001和存储器1002;其中,

所述存储器1002,用于存储计算机程序。

所述处理器1001,用于读取所述存储器1002存储的计算机程序,并根据所述存储器1002中的计算机程序执行上述任一实施例中的数据处理方法的技术方案。

可选地,存储器1002既可以是独立的,也可以跟处理器1001集成在一起。当存储器1002是独立于处理器1001之外的器件时,电子设备还可以包括:总线,用于连接存储器1002和处理器1001。

可选地,本实施例还包括:通信接口,该通信接口可以通过总线与处理器1001连接。处理器1001可以控制通信接口来实现上述电子设备的获取和发送的功能。

本申请实施例所示的电子设备,可以执行上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述任一实施例中的数据处理方法的技术方案,其实现原理以及有益效果与数据处理方法的实现原理及有益效果类似,可参见数据处理方法的实现原理及有益效果,此处不再进行赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所展示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元展示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例方法的部分步骤。

应理解的是,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital SignalProcessor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。

总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。

上述计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 数据处理方法、装置、电子设备、存储介质及程序产品
  • 数据处理方法、装置、电子设备、存储介质及程序产品
技术分类

06120113255396