1.本技术涉及云计算技术领域,特别是涉及一种数据处理方法、计算节点、系统、计算机设备和存储介质。
背景技术:
2.一种典型的云平台外包数据服务场景为:数据计算服务提供者(data computing service provider,dcsp)租用云服务提供商(cloud service provider,csp)提供的iaas层服务、租用多个节点部署平台即服务(platform as a service,paas)平台、以软件即服务(software as a service,saas)模式向数据拥有者(data owner,do)提供外包数据计算服务。
3.在该模式下,do通过客户端将数据上传至paas平台的hadoop分布式文件系统(hadoop distributed file system,hdfs)中等待处理,而数据的最终处理过程是在分布式计算节点中进行。在此过程中,dcsp拥有paas平台的完全控制权限,恶意攻击者可能利用该paas平台漏洞获取到管理权限窃取用户数据;恶意csp或dcsp内部管理员也可能利用管理权限向paas平台中植入恶意的数据计算程序,或破坏该paas平台相关应用程序和文件的完整性来获取用户的隐私数据。因此,有必要提出一种方法,能够保证云外包数据服务场景下数据处理的安全执行,防止用户隐私数据泄露。
技术实现要素:
4.基于此,有必要针对上述技术问题,提供一种数据处理方法、计算节点、系统、计算机设备和存储介质。能够保证云外包数据服务场景下数据处理的安全执行,防止用户隐私数据的泄露。
5.一种数据处理方法,所述方法包括:第一计算节点接收来自客户端的初始数据。所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境。所述第一计算节点确定所述多个共享数据的类型匹配的多个第二计算节点,并向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。
6.一种数据处理方法,所述方法包括:第二计算节点接收来自第一计算节点的加密密钥以及共享数据。所述第二计算节点调用与所述共享数据对应的容器接口,利用所述加密密钥获取所述共享数据对应的分片数据,并对所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。
7.一种计算节点,包括:
8.获取单元,用于接收来自客户端的初始数据。
9.处理单元,用于调用与所述初始数据对应的容器接口,对所述获取单元接收的所
述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境。
10.所述处理单元,还用于确定所述多个共享数据的类型匹配的多个第二计算节点。
11.发送单元,用于向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据。
12.一种计算节点,包括:
13.获取单元,用于接收来自第一计算节点的加密密钥以及共享数据。
14.处理单元,用于调用与所述共享数据对应的容器接口,利用所述获取单元获取的所述加密密钥获取所述共享数据对应的分片数据。
15.运算单元,用于对所述处理单元获取的所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。
16.一种数据处理系统,包括上述的计算节点。
17.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
18.第一计算节点接收来自客户端的初始数据。
19.所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境。
20.所述第一计算节点确定所述多个共享数据的类型匹配的多个第二计算节点,并向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。
21.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
22.第二计算节点接收来自第一计算节点的加密密钥以及共享数据。
23.所述第二计算节点调用与所述共享数据对应的容器接口,利用所述加密密钥获取所述共享数据对应的分片数据,并对所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。
24.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
25.第一计算节点接收来自客户端的初始数据。
26.所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境。
27.所述第一计算节点确定所述多个共享数据的类型匹配的多个第二计算节点,并向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。
28.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
29.第二计算节点接收来自第一计算节点的加密密钥以及共享数据。
30.所述第二计算节点调用与所述共享数据对应的容器接口,利用所述加密密钥获取所述共享数据对应的分片数据,并对所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。
31.上述数据处理方法、计算节点、系统、计算机设备和存储介质,第一计算节点配置与初始数据对应的容器,为初始数据提供可信执行环境,在需要第一计算节点对初始数据进行处理时,可通过调用初始数据对应的容器接口,对初始数据进行数据拆解处理,得到多个分片数据,并对多个分片数据进行加密处理获得多个共享数据。本技术的数据处理方法能够为客户端的特定数据提供安全的数据处理环境,以便保证数据的处理能够安全执行,防止了用户隐私数据的泄露。
附图说明
32.图1为一个实施例中数据处理系统的结构示意图;
33.图2为一个实施例中云平台外包数据服务场景;
34.图3为一个实施例中数据处理的流程示意图;
35.图4为一个实施例中数据处理方法的流程示意图;
36.图5为一个实施例中远程证明的架构图;
37.图6为一个实施例中计算节点的结构示意图;
38.图7为一个实施例中计算节点的结构示意图;
39.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
40.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
41.可以理解,本技术所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
42.为了便于使用本实施例,参见图1所示的数据处理系统的架构,在数据处理系统中,可以包括多个计算节点。多个计算机节点形成服务集群20,每个计算机节点中配置有容器20a;其中,多个计算节点20包括第一计算节点21以及第一计算节点对应的一个或多个第二计算节点22。每个计算机节点可以是具有一定计算能力的计算机设备;第一计算节点21负责实现服务集群中的管理控制工作。例如负责对第二计算节点22分配数据的计算资源以及数据的计算任务等。第二计算节点22负责实现数据的计算工作,如利用第一计算节点21分配的数据计算的资源以及数据的计算任务对数据进行计算。在本技术的一个实施例中,由多个计算机节点所形成的服务集群20可以是kubernetes集群(即k8s集群),其中,kubernetes集群包括至少一个master节点(即第一计算节点21)和至少一个slave节点(即第二计算节点22)。
43.在一个实施例中,第一计算机节点21及其对应的一个或多个第二计算机节点22均可以为独立的计算机设备,或者部署于计算机设备中的装置;该装置可以是虚拟装置,如虚拟机;也可以为实体装置,如芯片系统。第一计算机节点21可以与其对应的一个或多个第二
计算机节点22部署于同一计算机设备中,也可以部署于不同的计算机设备中,本技术实施例对此不作限定。进一步的,参照图1,该数据处理系统还可以包括客户端10。通常情况下,客户端部署于终端设备中,该终端设备可以是一种具有无线收发功能的设备。该终端设备可以有不同的名称,例如用户设备(user equipment,ue)、接入设备、终端单元、终端站、移动站、移动台、远方站、远程终端、移动设备、无线通信设备、终端代理或终端装置等。终端设备可以被部署在陆地上,包括室内或室外、手持或车载;也可以被部署在水面上(如轮船等);还可以被部署在空中(例如飞机、气球和卫星上等)。终端设备包括具有无线通信功能的手持式设备、车载设备、可穿戴设备或者计算设备。例如,终端设备可以是手机(mobile phone)、平板电脑或带无线收发功能的电脑。终端设备还可以是虚拟现实(virtual reality,vr)设备、增强现实(augmented reality,ar)设备、工业控制中的无线终端、无人驾驶中的无线终端、远程医疗中的无线终端、智能电网中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
44.另外,系统架构还可以包括网络30,网络30用以在多个计算机节点以及客户端之间提供通信链路的介质。网络30可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
45.为了方便描述本技术实施例所提供的方案,以图2所示的数据处理系统应用于云平台外包数据服务场景中,具体以openstack iaas云平台部署hadoop数据服务平台为例进行说明,但不限于其他云外包数据服务场景。对于openstack iaas云平台部署hadoop分布式集群数据服务平台的云平台外包数据服务场景下,dcsp租用csp提供的iaas层服务、租用多个节点部署paas平台、以saas模式向do提供外包数据计算服务。在该场景下的数据处理流程可参照图3,do通过主master节点对应的客户端提交初始数据至分布式文件系统hdfs中,该初始数据可以包含需要计算的数据,由hadoop集群服务平台中的master节点(即第一计算节点)分配数据计算任务对初始数据进行分解,将分解之后的多个分片数据、各分片数据对应的数据计算程序jar包以及各分片数据对应的数据配置文件上传至hdfs中等待对应的从slave节点(即第二计算节点1或第二计算节点2或第二计算节点3)进行拉取,master节点确定用于处理各分片数据的slave节点后,通知处理各分片数据的slave节点的数据计算任务。之后,由slave节点调用映射规约mapreduce程序执行数据计算任务。
46.其中,参照图3,mapreduce程序在slave节点内存中的执行流程主要分为映射map阶段和规约reduce阶段。其中,map阶段主要包括:负责读取hdfs中对应的分片数据,然后调用对应的map方法处理数据,处理完成后输出中间结果。reduce阶段主要包括:将map阶段输出的中间结果作为reduce阶段的输入数据,调用对应的reduce方法进行数据处理,最终将输出结果上传至hdfs中。而在上述的处理数据的过程中,为了能够在reduce阶段可以并行处理map阶段输出的结果,在map和reduce两个阶段中,还包括:slave节点会对map阶段输出的中间结果进行排序与分割后,再进入对应的洗牌shuffle阶段进行处理,该过程即为shuffle阶段。其中,shuffle阶段对map阶段输出的中间结果进行排序,可称为映射洗牌mapshuffle,对数据进行分割可称为规约洗牌reduceshuffle。
47.需要说明的是,针对上述的map和reduce两个阶段对应的slave节点可以是同一个slave节点,也可以是不同的节点,本技术实施例对此不作限定。
48.示例性的,假设有3个分片数据,分别为分片数据1、分片数据2、分片数据3,需要提
取各数据分片中的a,b,c三个数据。在map阶段,需要3个slave节点对进行处理,3个slave节点分别为slave11、slave12、slave13。slave11、slave12、slave13依次对应处理分片数据1、分片数据2、分片数据3。slave11对分片数据1中关于a,b,c的字符串进行截取,如截取到a,c,b,在mapshuffle阶段对其进行排序得到a,b,c。slave12对分片数据2中关于a,b,c的字符串进行截取,如截取到a,b,b,在mapshuffle阶段对其进行排序的到a,b,b。slave13对分片数据3中关于a,b,c的字符串进行截取,如截取到c,b,b。在mapshuffle阶段对其进行排序的到b,b,c。之后,在reduceshuffle阶段对数据进行分割,slave11、slave12以及slave13分别将其各自处理获取的数据a存储的分区1中,数据b存储的分区2中,数据a存储的分区3中。假设,slave11在reduce阶段处理数据a,slave12在reduce阶段处理数据b,slave13在reduce阶段处理数据c。则slave11从分区1中获取数据a,并对数据a进行处理(比如获取所有数据a中的最大值),其他节点同理,此处不再赘述。
49.综上,在对数据进行处理时,dcsp拥有该paas平台的完全控制权限,恶意攻击者可能利用paas平台漏洞获取到管理权限窃取用户数据;恶意csp或dcsp内部管理员也可能利用管理权限向平台中植入恶意的数据计算程序,或破坏paas平台相关应用程序和文件的完整性来获取用户的隐私数据。因此,有必要提出一种方法,能够保证云外包数据服务场景下数据处理的安全执行,防止用户隐私数据泄露。
50.因此,为了保证数据处理的安全执行,参照图4,本技术实施例提供一种数据处理方法,该方法包括:
51.s11、第一计算节点接收来自客户端的初始数据。
52.可选的,客户端可以将初始数据直接发送至第一计算节点;或者,客户端将初始数据上传至对应的存储系统;如hdfs中,并发送相应的提示信息至第一计算节点,以便通知第一计算节点从hdfs中获取初始数据。其中,该提示信息中可以包含初始数据对应的标识,该标识用于第一计算节点从hdfs存储的文件中识别出初始数据。本技术实施例对第一计算节点获取来自客户端的初始数据的方式不做任何限定。
53.s12、第一计算节点调用与初始数据对应的容器接口,对初始数据进行数据拆解处理,获得多个分片数据,并对多个分片数据进行加密处理获得多个共享数据;容器用于提供初始数据的可信执行环境。
54.需要说明的是,第一计算节点对接收到的初始数据进行数据拆解处理,具体是指将初始数据分成至少两个分片数据。示例性的,对初始数据进行数据拆解处理的方式可以为:根据划号分段的方式确定分片数据。根据划号分段的方式确定数据分片是指每个节点上存放相同大小的号段区间,比如,把键值(key)在[1,1000]的数据放在第一个节点上,把键值在[10001,2000]的数据放在第二个节点上,依次类推,直到将所有数据划分完毕。或者,可以为:根据取模算法确定分片数据。根据取模算法确定数据分片是指假设有n个节点,编号为0至n-1,通过哈希值公式即可确定数据所在的节点编号,从而对数据进行划分,示意性的,哈希值公式可以是:hash(key)%n。本技术实施例对初始数据进行数据拆解处理的方式不做任何限定。
[0055]
需要说明的是,上述的一个节点可以对应一个计算机设备,或者,多个节点对应一个计算机设备,本技术实施例对此不作限定。在一个实施例中,与初始数据对应的容器具体是(英文名为:enclave)由第一计算节点利用软件保护拓展(software guard extensions,
sgx)技术在其本地的存储空间中创建得到。sgx是intel架构新的扩展,在原有架构上增加了一组新的指令集和内存访问机制,这些扩展允许应用程序实现一个被称为enclave的容器,在应用程序的地址空间中划分出一块被保护的区域,为容器内的代码和数据提供机密性和完整性的保护,免受拥有特殊权限的恶意软件的破坏。enclave是一个被保护的内容容器,用于存放应用程序敏感数据和代码。sgx允许应用程序指定需要保护的代码和数据,第一计算节点在创建enclave之前,无需对这些代码和数据进行检查或分析,但加载到enclave中去的代码和数据必须被度量。当应用程序需要保护的代码和数据加载到enclave后,sgx保护它们不被外部软件所访问。enclave可以向远程认证者证明自己的身份,并提供必需的功能结构用于安全地提供密钥。用户也可以请求独有的密钥,这个密钥通过结合enclave身份和平台的身份做到独一无二,可以用来保护存储在enclave之外的密钥或数据。
[0056]
s13、第一计算节点确定多个共享数据的类型匹配的多个第二计算节点,并向第二计算节点发送与第二计算节点匹配的共享数据对应的加密密钥。
[0057]
可选的,将对多个分片数据进行加密处理获得多个共享数据,直接发送至对应第二计算节点中,或者,将其存储至指位置,如hadoop分布式文件系统中,由第二计算节点获取对应的共享数据。进一步的,在hadoop分布式文件系统中,多个共享数据可以存储在一个或多个存储节点上。
[0058]
需要说明的是,第一计算节点可基于第二计算节点的数据处理能力确定与共享数据的类型匹配的第二计算节点。例如,当需要对分片数据中的预设字段进行提取时,可将具备提取预设字段能力的节点确定为第二计算节点。在提取预设字段之后,当需要对提取的预设字段进行对比或统计时,则将具备对比或统计能够的节点确定为第二计算节点。
[0059]
s14、第二计算节点接收来自第一计算节点的加密密钥以及共享数据。
[0060]
示例性的,第二计算节点接收由第一计算节点直接发送的加密密钥以及共享数据;或者,第二计算节点从指定位置获取其对应的加密密钥以及共享数据;如从hadoop分布式文件系统中获取。
[0061]
s15、第二计算节点调用与共享数据对应的容器接口,利用加密密钥获取共享数据对应的分片数据,并对分片数据进行运算,容器用于提供分片数据的可信执行环境。
[0062]
需要说明的是,与共享数据对应的容器具体是由第二计算节点利用软件保sgx技术在其本地的存储空间中创建得到。
[0063]
上述数据处理方法,通过在第一计算节点中配置初始数据对应的容器,为初始数据提供可信执行环境,在需要第一计算节点对初始数据进行处理时,可通过调用初始数据对应的容器接口,对初始数据进行数据拆解处理,得到多个分片数据,并对多个分片数据进行加密处理获得多个共享数据,并将共享数据交由第二计算节点处理。之后,第二计算节点配置与共享数据对应的容器,调用与共享数据对应的容器接口,利用加密密钥获取共享数据对应的分片数据,并对分片数据进行运算。因此本技术实施例的数据处理方法能够为客户端的特定数据提供安全的数据处理环境,实现对数据传输过程和数据运算过程的全流程保密,有效保障数据安全,防止了用户隐私数据的泄露。
[0064]
在一个实施例中,s11之前,还包括:第一计算节点创建客户端对应的容器;容器用于提供客户端的源数据的可信执行环境,初始数据为源数据;或,第一计算节点创建预设数
据类型对应的容器;容器用于提供预设类型的数据的可信执行环境,初始数据为预设类型的数据。
[0065]
可选的,第一计算节点的中央处理器(central processing unit,cpu)中都配置有可信执行环境(trusted execution environment,tee)。可信执行环境是基于第一计算节点的cpu的一种指令集扩展,它可以在第一计算节点的cpu中划分出一块与外部完全隔离的安全区域(即容器)作为一个安全的执行环境,任何程序或数据均可以运行或存储在该安全区域中。第一计算节点创建与客户端对应的容器具体为:第一计算节点的cpu确定与客户端对应的容器地址范围。第一计算节点使用该处理器确定的容器地址范围来创建与客户端对应的容器。需要说明的是,第一计算节点创建预设数据类型对应的容器可参照上述第一计算节点创建与客户端对应的容器的说明,此处不再赘述。
[0066]
作为一个示例,可信执行环境可以是基于英特尔(intel)芯片的软件保护扩展(software guard extension,sgx)生成的。sgx通过在intel架构上增加新的指令集和内存访问机制,允许应用程序实现一个被称为enclave的容器,同时会在相应应用程序的地址空间中划分出一块被保护的专属区域,为enclave容器中的程序和数据提供机密性和完整性的保护,这样,即使节点设备的操作系统被攻破也不会影响enclave容器中的程序和数据。
[0067]
示例性的,预设数据类型为可以包括但不限于:用户注册信息、交易信息中的一项或多项。
[0068]
本实施例中,第一计算节点创建客户端对应的容器或者创建预设数据类型对应的容器,为初始数据提供可信执行环境,从而有效的防止初始数据的泄露问题。
[0069]
在一个实施例中,s24之前,还包括:第二计算节点创建客户端对应的容器;容器用于提供第二计算节点的源数据的可信执行环境,分片数据为源数据;或,第二计算节点创建预设数据类型对应的容器;容器用于提供预设类型的数据的可信执行环境,分片数据为预设类型的数据。
[0070]
可选的,每个第二计算节点的cpu中都配置有可信执行环境。可信执行环境是基于第二计算节点的cpu的一种指令集扩展,它可以在第二计算节点的cpu中划分出一块与外部完全隔离的安全区域(即容器)作为一个安全的执行环境,任何程序或数据均可以运行或存储在该安全区域中。第二计算节点创建与客户端对应的容器具体为:第二计算节点的cpu确定与客户端对应的容器地址范围。第二计算节点使用该处理器确定的容器地址范围来创建与客户端对应的容器。需要说明的是,第二计算节点创建预设数据类型对应的容器可参照上述第二计算节点创建与客户端对应的容器的说明,此处不再赘述。
[0071]
作为一个示例,在第一计算节点与第二计算节点均需要创建容器情况下,在第一计算节点创建的是客户端对应的容器时,则第二计算节点同样创建的是客户端对应的容器;在第一计算节点创建的是预设类型的数据对应的容器时,则第二计算节点同样创建的是预设类型的数据对应的容器。
[0072]
本实施例中,第一计算节点创建客户端对应的容器或者创建预设数据类型对应的容器,为分片数据提供可信执行环境,从而有效的防止分片数据的泄露问题。
[0073]
在一个实施例中,s11之前,还包括:第一计算节点向客户端发送容器的可信证明;可信证明用于向客户端证明第一计算节点能够提供初始数据的可信执行环境。
[0074]
需要说明的是,第一计算节点向客户端发送容器的可信证明的远程证明流程可参
照下述,此处暂不叙述。
[0075]
本实现方式,第一计算节点向客户端发送容器的可信证明,以便向客户端证明第一计算节点能够为初始数据提供可信执行环境。
[0076]
在一个实施例中,s14之前,还包括:第二计算节点向第一计算节点发送容器的可信证明;可信证明用于向第一计算节点证明第二计算节点能够提供分片数据的可信执行环境。在一种实现方式中,结合图3所描述的mapreduce程序在slave节点内存中的执行流程,初始数据在传输master节点后数据流向执行map阶段的slave节点,并从执行map阶段的slave节点传输至执行reduce结算的slave节点,因此,本技术实施例在数据流向各节点之前,需要执行远程证明流程。具体的,远程证明流程主要包括分别是1)在do通过客户端上传初始数据之前对master节点进行远程证明;具体包括:s1、do通过客户端向master节点请求远程验证master节点;s2、master节点返回可信证明。2)执行map阶段之前,master节点对执行map阶段的slave节点进行远程证明;3)执行reduce阶段之前,master节点对执行reduce节点的slave节点进行远程证明。
[0077]
参照图5,本技术实施例提供一种远程证明的架构图,该架构图中包括第三方验证节点、master节点、slave节点、英特尔inter节点以及客户端。其中,第三方验证节点、master节点、slave节点中均包含引用飞地(quoting enclave,qe);第三方验证节点还包括provisione;master节点和slave节点中均包含atteste以及enclave。需要说明的是,master节点和slave节点中的enclave在进行对应其他节点的远程证明时,可通过所属节点的atteste生成相应的可信证明,将该可信证明发送至对应的其他节点进行远程证明。
[0078]
这里,atteste用于对所属节点中的enclave进行验证。
[0079]
进一步的,在执行远程证明流程之前,需要进行第三方验证节点中的配置enclave(provision enclave,provisione)对intel节点的远程证明(以下称之为注册阶段)以及intel节点通过第三方验证节点的配置enclave对master节点和slave节点中的atteste进行远程证明(以下称之为准备阶段)。
[0080]
注册阶段具体包括以下步骤:
[0081]
步骤1.1、第三方验证节点首先将当前时间戳作为provisione的时间戳。
[0082]
步骤1.2、第三方验证节点调用provisione的接口,生成私钥和相应的组公钥,生成的私钥代表一个增强的隐私标识(enhanced privacy identification,epid)组的组私钥,该组私钥用于为各个atteste生成epid成员私钥,同时provisione为epid组生成组验证证书(gvcert),组验证证书中包含组公钥。
[0083]
这里,master节点和slave节点构成epid组中的成员,即epid成员。
[0084]
步骤1.3、第三方验证节点调用provisione的接口随机产生一个随机数,并计算组公钥、时间戳以及随机数的第一哈希值。之后,第三方验证节点调用quoting enclave接口,生成签名密钥以及基于第一哈希值生成第一quote(即第一自荐信息),使用签名密钥对第一quote进行签名,并将第一quote以及签名发送到intel节点,对provisione进行验证。
[0085]
步骤1.4、intel节点验证完成后,向第三方验证节点返回的验证报告。之后,第三方验证节点比较验证报告中的时间戳和provisione的时间戳的差值,如果差值在预设范围内(该预设范围可根据具体场景进行设置),则生成证书。至此注册阶段结束,进入准备阶段。
[0086]
其中,生成的证书包括组公钥,provisione的时间戳,随机数以及验证报告。
[0087]
注册阶段具体包括以下步骤:
[0088]
步骤2.1、master节点调用atteste的接口向第三方验证节点发送epid私钥配置请求。
[0089]
步骤2.2、第三方验证节点收到配置请求后,调用provisione接口随机产生一个随机数,并将随机数和gvcert一起发送到master节点。
[0090]
其中,gvcert为上述步骤1.2的gvcert。
[0091]
步骤2.3、master节点调用atteste的接口验证gvcert的真实性,并利用随机数生成epid私钥,利用知识证明方法通过调用atteste的接口生成私钥的证明,并生成该证明的哈希值,master节点调用quoting enclave的接口基于证明的哈希值生成第二quote,将第二quote和证明发送给第三方验证节点。
[0092]
步骤2.4、第三方验证节点调用provisione的接口将第二quote和证明转发至intel节点进行验证。intel节点在对第二quote验证通过后,向第三方验证节点返回验证报告,第三方验证节点调用provisione的接口根据验证报告对master节点的atteste进行身份验证,证明master节点的atteste在sgx平台上运行。最后,第三方验证节点调用provisione的接口生成master节点的atteste的epid私钥的证书,并将其发送至master节点。
[0093]
步骤2.5、master节点调用atteste的接口将epid私钥的证书进行存储。
[0094]
通过上述步骤2.1至步骤2.5流程完成intel节点通过第三方验证节点的配置enclave对master节点中的atteste的远程证明。需要说明的是,intel节点通过第三方验证节点的配置enclave对slave节点中的atteste进行远程证明可参考上述步骤2.1至步骤2.5,此处不再赘述。
[0095]
在完成上述的注册阶段以及准备阶段后,执行远程证明流程,这里以do通过客户端对master节点进行远程证明为例进行说明,master节点对执行map阶段的slave节点的远程证明以及master节点对执行reduce节点的slave节点的远程证明同理,不再赘述。do通过客户端对master节点进行远程证明的过程同时生成用于对初始数据进行加解密的共享密钥,共享密钥采用椭圆曲线diffie-hellman(ecdh)方法生成。do通过客户端对master节点进行远程证明流程具体包括:
[0096]
步骤3.1、do通过客户端生成一个随机数和ecdh公私钥对(a,ga),并将随机数和ecdh公钥ga发送给master节点。
[0097]
步骤3.2、master节点通过调用enclave(即容器)接口,生成一个公私密钥对(b,gb),并根据ecdh私钥b和ecdh公钥ga生成一个遵循标准ecdh协议的共享ecdh密钥g
ab
=(ga)b。
[0098]
步骤3.3、master节点通过调用atteste的接口将ecdh公钥ga、ecdh公钥gb和随机数生成报告。
[0099]
步骤3.4、master节点的atteste验证报告,确定enclave与atteste运行于同一节点的情况下,至少根据ecdh公钥gb和随机数生成第三quote,并基于quote、ecdh公钥gb和gvcert生成可信证明发送至客户端。
[0100]
步骤3.5:do通过客户端根据可信证明对master节点进行验证。
[0101]
其中,根据可信证明对master节点的验证方式包括但不限于以下至少一项:
[0102]
1)gvcert是否有效:gvcert中包含了来自intel的签名数据,能够报告gvcert的完整性和真实性;
[0103]
2)确认epid签名有效;
[0104]
3)provisione和atteste中的时间戳在预设时间内;
[0105]
4)enclave报告中的度量的有效性;
[0106]
5)使用接收到的ecdh公钥gb解密随机数与do通过客户端生成的随机数是否匹配。
[0107]
步骤3.6、验证通过之后,接收来自master节点的共享密钥g
ab
,并将共享密钥g
ab
确定为第一密钥。本实现方式,第二计算节点向第一计算节点发送容器的可信证明,以便向第一计算节点证明第二计算节点能够为初始数据提供可信执行环境。
[0108]
在一个实施例中,第一计算节点调用与初始数据对应的容器接口,对初始数据进行数据拆解处理,获得多个分片数据,包括:第一计算节点调用与初始数据对应的容器接口,利用第一密钥对初始数据解密,并对解密后的初始数据进行数据拆解处理,获得多个分片数据。
[0109]
可选的,第一密钥为第一计算节点与客户端之间协商的共享密钥。该共享密钥的生成方式可参考上述的do通过客户端对master节点进行远程证明流程,此处不再赘述。
[0110]
进一步的,第一计算节点在对初始数据解密之前,可调用与初始数据对应的容器接口利用sgx的密钥密封机制对第一密钥进行加密保存;在对初始数据解密时,可调用与初始数据对应的容器接口利用sgx的密钥解封机制对加密保存的第一密钥进行解密,以获取第一密钥。
[0111]
在实际应用中,客户端上传初始数据时,同时携带对第一计算节点的远程证明挑战值。该远程证明挑战值用于第一计算节点对获取到的初始数据进行来源的真实性验证,以便证明初始数据来源于客户端,防止初始数据在传输的过程中被篡改,而第一计算节点无法识别初始数据真实性的问题。示例性的,远程证明挑战值可基于第一计算节点的可信证明中的预设字符生成。
[0112]
本实施例中,在客户端与第一计算节点的数据交互过程,采用共享的第一密钥对数据进行加密,从而有效的防止数据传输过程中的泄露问题。
[0113]
在一个实施例中,第二计算节点调用与共享数据对应的容器接口,利用加密密钥获取共享数据对应的分片数据,包括:第二计算节点调用与共享数据对应的容器接口,利用第二密钥解密加密密钥,得到第一密钥,并根据第一密钥对共享数据进行解密,得到分片数据。
[0114]
可选的,第二密钥为第一计算节点与第二计算节点之间协商的共享密钥。该共享密钥的生成方式可参考上述的do通过客户端对master节点进行远程证明流程,此处不再赘述。
[0115]
进一步的,第二计算节点在对共享数据解密之前,可调用与共享数据对应的容器接口利用sgx的密钥密封机制对第二密钥进行加密保存;在对初始数据解密时,可调用与初始数据对应的容器接口利用sgx的密钥解封机制对加密保存的第二密钥进行解密,以获取第二密钥。
[0116]
在实际应用中,第一计算节点上传共享数据时,同时携带对第二计算节点的远程
证明挑战值。该远程证明挑战值用于第二计算节点对获取到的共享数据进行来源的真实性验证,以便证明共享数据来源于第一计算节点,防止共享数据在传输的过程中被篡改,而第二计算节点无法识别共享数据真实性的问题。示例性的,该远程证明挑战值可基于第二计算节点的可信证明中的预设字符生成。
[0117]
本实施例中,在第一计算节点与第二计算节点的数据交互过程,利用第二密钥解密加密密钥,得到第一密钥,并根据第一密钥对共享数据进行解密,得到分片数据,从而有效的防止数据传输过程中的泄露问题。
[0118]
在一个实施例中,s11之前还包括:第一计算节点接收来自客户端的第一公钥;之后,第一计算节点调用初始数据对应的容器接口,生成第二私钥,并根据第一公钥以及第二私钥生成第一密钥,以及发送第一密钥至客户端。
[0119]
需要说明的是,本实施例中的说明可参考上述的do通过客户端对master节点进行远程证明流程中共享密钥的生成过程,此处不再赘述。
[0120]
本实施例中,第一计算节点通过调用初始数据对应的容器接口,在初始数据对应的容器中生成第二私钥,并根据来自客户端的第一公钥以及第二私钥生成第一密钥,从而保证第一密钥生成过程的安全性。并且,通过采用相同的第一密钥对在客户端与第一计算节点之间传输的数据进行加解密,在保证数据传输过程的安全性的基础上,能够降低对数据加解密的计算量。
[0121]
在一个实施例中,s14之前还包括:第二计算节点接收来自第一计算节点的第二公钥;第二计算节点调用分片数据对应的容器接口,生成第三私钥,并根据第二公钥以及第三私钥生成第二密钥,以及发送第二密钥至第一计算节点。
[0122]
需要说明的是,本实施例中的说明可参考上述的do通过客户端对master节点进行远程证明流程中共享密钥的生成过程,此处不再赘述。
[0123]
本实施例中,第二计算节点通过调用分片数据对应的容器接口,在分片数据对应的容器接口中生成第三私钥,并根据来自第一计算节点的第二公钥以及第三私钥生成第二密钥,从而保证第二密钥生成过程的安全性。可选的,加密秘钥的生成方式包括:第一计算节点利用第二密钥对第一密钥加密,得到加密密钥。这样通过第二密钥对第一密钥加密获得加密密钥的方式,能够保证第一密钥从第一计算节点传输至第二计算节点的安全性。
[0124]
应该理解的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0125]
在一个实施例中,如图6所示,提供了一种计算节点60,该计算节点60包括:获取单元601、处理单元602以及发送单元603;其中,
[0126]
获取单元601,用于接收来自客户端的初始数据。
[0127]
处理单元602,用于调用与初始数据对应的容器接口,对获取单元601接收的初始数据进行数据拆解处理,获得多个分片数据,并对多个分片数据进行加密处理获得多个共享数据;容器用于提供初始数据的可信执行环境。
[0128]
处理单元602,还用于确定多个共享数据的类型匹配的多个第二计算节点。
[0129]
发送单元603,用于向第二计算节点发送与第二计算节点匹配的共享数据对应的加密密钥,使得第二计算节点根据加密密钥获取共享数据对应的分片数据。
[0130]
可选的,处理单元602,还用于创建客户端对应的容器;容器用于提供客户端的源数据的可信执行环境,初始数据为源数据;或,
[0131]
处理单元602,还用于创建预设数据类型对应的容器;容器用于提供预设类型的数据的可信执行环境,初始数据为预设类型的数据。
[0132]
可选的,发送单元603,还用于向客户端发送容器的可信证明;可信证明用于向客户端证明第一计算节点能够提供初始数据的可信执行环境。
[0133]
可选的,处理单元602,具体用于第一计算节点调用与初始数据对应的容器接口,利用第一密钥对初始数据解密,并对解密后的初始数据进行数据拆解处理,获得多个分片数据。
[0134]
可选的,获取单元601,还用于接收来自客户端的第一公钥。
[0135]
处理单元602,用于调用初始数据对应的容器接口,生成第二私钥,并根据获取单元601接收的第一公钥以及第二私钥生成第一密钥,以及发送第一密钥至客户端。
[0136]
在一个实施例中,如图7所示,提供了一种计算节点70,该计算节点70包括:获取单元701、处理单元702、运算单元703以及发送单元704;其中,
[0137]
获取单元701,用于接收来自第一计算节点的加密密钥以及共享数据。
[0138]
处理单元702,用于调用与共享数据对应的容器接口,利用获取单元701获取的加密密钥获取共享数据对应的分片数据。
[0139]
运算单元703,用于对处理单元702获取的分片数据进行运算,容器用于提供分片数据的可信执行环境。
[0140]
可选的,处理单元702,还用于创建客户端对应的容器;容器用于提供第二计算节点的源数据的可信执行环境,分片数据为源数据;或,
[0141]
处理单元702,还用于创建预设数据类型对应的容器;容器用于提供预设类型的数据的可信执行环境,分片数据为预设类型的数据。
[0142]
可选的,发送单元704,用于向第一计算节点发送容器的可信证明;可信证明用于向第一计算节点证明第二计算节点能够提供分片数据的可信执行环境。
[0143]
可选的,处理单元702,还用于调用与共享数据对应的容器接口,利用第二密钥解密加密密钥,得到第一密钥,并根据第一密钥对共享数据进行解密,得到分片数据。
[0144]
可选的,获取单元701,还用于接收来自第一计算节点的第二公钥。
[0145]
处理单元702,用于调用分片数据对应的容器接口,生成第三私钥,并根据获取单元701接收的第二公钥以及第三私钥生成第二密钥,以及发送第二密钥至第一计算节点。
[0146]
关于计算节点的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述计算机设备中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0147]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其
中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储初始数据,计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
[0148]
本领域技术人员可以理解,图8示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0149]
在一个实施例中,提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
[0150]
第一计算节点接收来自客户端的初始数据。
[0151]
第一计算节点调用与初始数据对应的容器接口,对初始数据进行数据拆解处理,获得多个分片数据,并对多个分片数据进行加密处理获得多个共享数据;容器用于提供初始数据的可信执行环境。
[0152]
第一计算节点确定多个共享数据的类型匹配的多个第二计算节点,并向第二计算节点发送与第二计算节点匹配的共享数据对应的加密密钥,使得第二计算节点根据加密密钥获取共享数据对应的分片数据。
[0153]
在一个实施例中,提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
[0154]
第二计算节点接收来自第一计算节点的加密密钥以及共享数据。
[0155]
第二计算节点调用与共享数据对应的容器接口,利用加密密钥获取共享数据对应的分片数据,并对分片数据进行运算,容器用于提供分片数据的可信执行环境。
[0156]
在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0157]
第一计算节点接收来自客户端的初始数据。
[0158]
第一计算节点调用与初始数据对应的容器接口,对初始数据进行数据拆解处理,获得多个分片数据,并对多个分片数据进行加密处理获得多个共享数据;容器用于提供初始数据的可信执行环境。
[0159]
第一计算节点确定多个共享数据的类型匹配的多个第二计算节点,并向第二计算节点发送与第二计算节点匹配的共享数据对应的加密密钥,使得第二计算节点根据加密密钥获取共享数据对应的分片数据。
[0160]
在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0161]
第二计算节点接收来自第一计算节点的加密密钥以及共享数据。
[0162]
第二计算节点调用与共享数据对应的容器接口,利用加密密钥获取共享数据对应的分片数据,并对分片数据进行运算,容器用于提供分片数据的可信执行环境。
[0163]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0164]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0165]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种数据处理方法,其特征在于,所述方法包括:第一计算节点接收来自客户端的初始数据;所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境;所述第一计算节点确定所述多个共享数据的类型匹配的多个第二计算节点,并向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。2.根据权利要求1所述的数据处理方法,其特征在于,所述第一计算节点接收客户端发送的初始数据之前,还包括:所述第一计算节点创建所述客户端对应的所述容器;所述容器用于提供所述客户端的源数据的可信执行环境,所述初始数据为所述源数据;或,所述第一计算节点创建预设数据类型对应的所述容器;所述容器用于提供所述预设类型的数据的可信执行环境,所述初始数据为所述预设类型的数据。3.根据权利要求1或2所述的数据处理方法,其特征在于,所述第一计算节点接收客户端发送的初始数据之前,还包括:所述第一计算节点向所述客户端发送所述容器的可信证明;所述可信证明用于向所述客户端证明所述第一计算节点能够提供所述初始数据的可信执行环境。4.根据权利要求1或2所述的数据处理方法,其特征在于,所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,包括:所述第一计算节点调用与所述初始数据对应的容器接口,利用第一密钥对所述初始数据解密,并对解密后的所述初始数据进行数据拆解处理,获得所述多个分片数据。5.根据权利要求4所述的数据处理方法,其特征在于,所述第一计算节点接收来自客户端的初始数据之前,还包括:所述第一计算节点接收来自所述客户端的第一公钥;所述第一计算节点调用所述初始数据对应的容器接口,生成第二私钥,并根据所述第一公钥以及所述第二私钥生成所述第一密钥,以及发送所述第一密钥至所述客户端。6.根据权利要求4或5所述的数据处理方法,其特征在于,所述加密秘钥的生成方式,包括:所述第一计算节点利用第二密钥对所述第一密钥加密,得到所述加密密钥。7.一种数据处理方法,其特征在于,所述方法包括:第二计算节点接收来自第一计算节点的加密密钥以及共享数据;所述第二计算节点调用与所述共享数据对应的容器接口,利用所述加密密钥获取所述共享数据对应的分片数据,并对所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。8.根据权利要求7所述的数据处理方法,其特征在于,所述第二计算节点接收来自第一计算节点的加密密钥以及共享数据之前,还包括:
所述第二计算节点创建所述客户端对应的所述容器;所述容器用于提供所述第二计算节点的源数据的可信执行环境,所述分片数据为所述源数据;或,所述第二计算节点创建预设数据类型对应的所述容器;所述容器用于提供所述预设类型的数据的可信执行环境,所述分片数据为所述预设类型的数据。9.根据权利要求7或8所述的数据处理方法,其特征在于,所述第二计算节点接收来自第一计算节点的加密密钥以及共享数据之前,还包括:所述第二计算节点向所述第一计算节点发送所述容器的可信证明;所述可信证明用于向所述第一计算节点证明所述第二计算节点能够提供所述分片数据的可信执行环境。10.根据权利要求7或8所述的数据处理方法,其特征在于,所述第二计算节点调用与所述共享数据对应的容器接口,利用所述加密密钥获取所述共享数据对应的分片数据,包括:所述第二计算节点调用与所述共享数据对应的容器接口,利用第二密钥解密所述加密密钥,得到第一密钥,并根据所述第一密钥对所述共享数据进行解密,得到所述分片数据。11.根据权利要求10所述的数据处理方法,其特征在于,所述第二计算节点接收来自第一计算节点的加密密钥以及共享数据之前,还包括:所述第二计算节点接收来自所述第一计算节点的第二公钥;所述第二计算节点调用所述分片数据对应的容器接口,生成第三私钥,并根据所述第二公钥以及所述第三私钥生成所述第二密钥,以及发送所述第二密钥至所述第一计算节点。12.一种计算节点,其特征在于,包括:获取单元,用于接收来自客户端的初始数据;处理单元,用于调用与所述初始数据对应的容器接口,对所述获取单元接收的所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境;所述处理单元,还用于确定所述多个共享数据的类型匹配的多个第二计算节点;发送单元,用于向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。13.一种计算节点,其特征在于,包括:获取单元,用于接收来自第一计算节点的加密密钥以及共享数据;处理单元,用于调用与所述共享数据对应的容器接口,利用所述获取单元获取的所述加密密钥获取所述共享数据对应的分片数据;运算单元,用于对所述处理单元获取的所述分片数据进行运算,所述容器用于提供所述分片数据的可信执行环境。14.一种数据处理系统,其特征在于,包括权利要求12以及权利要求13所述的计算节点。15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要1-6任一项所述的方法的步骤;或者,所述处理器执行所述计算机程序时实现权利要7-11任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法的步骤;或者,所述计算机程序被处理器执行时实现权利要求7-11任一项所述的方法的步骤。
技术总结
本申请涉及一种数据处理方法、计算节点、系统、计算机设备和存储介质。涉及云计算技术领域,能够保证云外包数据服务场景下数据处理的安全执行,防止用户隐私数据的泄露。该数据处理方法包括:第一计算节点接收来自客户端的初始数据。所述第一计算节点调用与所述初始数据对应的容器接口,对所述初始数据进行数据拆解处理,获得多个分片数据,并对所述多个分片数据进行加密处理获得多个共享数据;所述容器用于提供所述初始数据的可信执行环境。所述第一计算节点确定所述多个共享数据的类型匹配的多个第二计算节点,并向所述第二计算节点发送与所述第二计算节点匹配的共享数据对应的加密密钥,使得所述第二计算节点根据所述加密密钥获取所述共享数据对应的分片数据。密钥获取所述共享数据对应的分片数据。密钥获取所述共享数据对应的分片数据。
技术研发人员:樊旭东 苏建明 蒋家堂 卓越
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2021.10.15
技术公布日:2022/3/8