具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
本说明书实施例提供的方案提出了一种中心在通过可信密态计算(TrustEdCryptographic Computing,简称TECC)的方式,对数据提供方的数据进行计算时,对中心使用的计算逻辑进行约束的方案。
TECC是一种安全高效的密态计算方法,能够为多个数据提供方计算一个共同的结果,而不泄露任何一方的数据。可信密态计算结合了系统安全和密码学两种技术,比只使用一种技术更好地平衡了安全性和性能,最终达到了“安全性足够、性能非常快”的理想状态。
使用密码学能够构建数学上可证明安全的方案,但是这种方案的计算性能较差。因为数学的固有性质,很难提升到理想的状态,即满足大部分场景的需求。因此,我们寻求一种“足够的、但不强求数学上可证的”方案。以TEE(Trusted Execution Environment,可信执行环境)为代表构建的可信安全技术,因其安全所依赖的代码量少,安全性较常见的操作系统有大幅提升,是一种可选的思路。但是实验证明,TEE等仍然存在被攻破的可能。TECC将两者结合,使得当TEE被攻破时,安全性仍然有保障,满足绝大多数场景的需求。另一方面,TECC也继承了可信技术高性能的特点,在合理的资源膨胀下,能够达到近似明文计算的性能。
图1示出根据一个实施例的TECC示意图。图1中, 数据提供方U在本地将数据随机地拆分成多个数据分片:U1、U2和U3。2)数据提供方U与多个TEE建立安全信道,并将每个数据分片分别传递给一个TEE。比如,将U1、U2和U3分别提供给TEEX、TEEY和TEEZ。其它数据提供方也可以将各自的每个数据分片分别传递给一个TEE。3)各TEE在获取到所有的数据提供方的数据分片后,执行基于秘密共享的MPC (Secure Multi-Party Computation,安全多方计算)协议,完成计算。
需要说明,在TECC中,数据提供方通过TEE技术能够确保其数据只在TEE中存在,TEE的宿主、拥有者等都无法获取数据明文(在TEE不被攻破的情况)。另一方面,每个TEE 从始至终都只接触过数据分片,也就说,即便攻击者攻破一个TEE,并长期窃取或修改它,也不能获得有效信息。在实践中,这种防御程度几乎无法突破。TECC的高性能主要得益于它的公网交互非常少,一般只需要一次,在数据预先上传的情况,也可以不进行公网交互。另一个原因是,TECC支持高并发,使得其在合理的资源膨胀下,可以达到近似明文的性能。
图2为本说明书一个实施例披露的实施场景示意图。图2中,数据提供方U可以向可信计算中心上传加密数据,可信计算中心可以基于计算逻辑,对该加密数据进行计算。这里的数据提供方U可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。可信计算中心可以包括数据存储中心和三个可信计算节点,分别表示为:TEEX、TEEY以及TEEZ。此外,可信计算中心还可以包括代码存储中心以及管理中心。其中,代码存储中心用于存储各可信计算节点中运算的计算逻辑。管理中心用于管理各可信计算节点。
具体地,数据提供方U可以将对应的隐私数据拆分成三个隐私分片,分别表示为:U1、U2和U3,以及针对该三个隐私分片,对应生成三个随机的加密秘钥:K1、K2和K3。之后,数据提供方U可以使用三个加密秘钥,对应加密三个隐私分片,获得三个加密分片,分别表示为:ENC(K1, U1)、ENC(K2, U2)、ENC(K3, U3),以及将该三个加密分片分别上传至可信计算中心中的数据存储中心。
在完成各加密分片上传之后,数据提供方U可以对任一计算逻辑进行审查,然后保存经过审查的计算逻辑的代码哈希。之后,数据提供方U可以分别获取TEEX、TEEY以及TEEZ中运行的计算逻辑的代码哈希,并在获取的代码哈希与保存的代码哈希相一致的情况下,向TEEX、TEEY以及TEEZ分别提供数据的加密秘钥K1、K2和K3,从而TEEX、TEEY以及TEEZ获得基于其中运行的计算逻辑,对U1、U2和U3进行计算的权限。也即各TEE获得了对应的数据授权。
此外,TEEX、TEEY以及TEEZ还可以分别利用各自的专属秘钥,对应加密K1、K2和K3,从而得到Seal(K1)、Seal(K2)和Seal(K3),以及将各自的经过加密的加密秘钥存储到数据存储中心,以供后续进行联合计算时使用。
需要说明,由于数据提供方U在获取的代码哈希与保存的代码哈希相一致的情况下,才向各TEE提供各加密秘钥,而因为保存的代码哈希对应的计算逻辑已通过数据提供方U审查,从而可以实现针对可信计算中心使用的计算逻辑的约束或者控制。
同理,其它数据提供方也可以将各自的加密分片上传至可信计算中心,且在获取的代码哈希与保存的代码哈希相一致的情况下,向各TEE提供对应的加密秘钥,本说明书在此不复赘述。
此外,应理解,图2只是一种示例性说明,在实际应用中,TEE的数目也可以为两个或更多个,相应地,也可以将数据拆分成两个隐私分片或者更多个隐私分片等等。此外,加密秘钥的数目也可以与TEE的数目不相等,而与TEE的角色分类数目相等,从而属于同一角色分类的各TEE之间共享同一加密秘钥。
图3为本说明书另一个实施例披露的实施场景示意图。图3中,数据提供方U可以向可信计算中心上传加密数据,可信计算中心可以基于计算逻辑,对该加密数据进行计算。这里的数据提供方U可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。可信计算中心可以包括数据存储中心和三个可信计算节点以及各自的代理节点。这里的三个可信计算节点分别表示为:TEEX、TEEY以及TEEZ,以及对应的各代理节点分别表示为:TEEA、TEEB以及TEEC。此外,可信计算中心还可以包括代码存储中心以及管理中心。其中,代码存储中心用于存储各可信计算节点中运算的计算逻辑。管理中心用于管理各可信计算节点。
具体地,数据提供方U可以将对应的隐私数据拆分成三个隐私分片,分别表示为:U1、U2和U3,以及针对该三个隐私分片,对应生成三个随机的加密秘钥:K1、K2和K3。之后,数据提供方U可以使用三个加密秘钥,对应加密三个隐私分片,获得三个加密分片,分别表示为:ENC(K1, U1)、ENC(K2, U2)、ENC(K3, U3),以及将该三个加密分片分别上传至可信计算中心中的数据存储中心。
此外,数据提供方U还可以分别向TEEA、TEEB以及TEEC发送加密秘钥K1、K2和K3,从而TEEA、TEEB以及TEEC可以分别利用各自的专属秘钥,对应加密K1、K2和K3,从而得到Seal(K1)、Seal(K2)和Seal(K3),以及将各自的经过加密的加密秘钥存储到数据存储中心,以供后续对对应的可信计算节点进行数据授权时使用。以及TEEX、TEEY以及TEEZ可以预先在存证中心对其中运行的计算逻辑的代码哈希进行存证。
之后,各代理节点可以分别从对应的各可信计算节点获取其中运行的计算逻辑的代码哈希以及其存证的代码哈希,并在运行的代码哈希与存证的代码哈希相一致的情况下,向TEEX、TEEY以及TEEZ分别提供数据的加密秘钥K1、K2和K3,从而TEEX、TEEY以及TEEZ获得基于其中运行的计算逻辑,对U1、U2和U3进行计算的权限。也即各可信计算节点获得了对应的数据授权。
数据提供方U随时可以从存证中心获取各可信计算节点已存证的代码哈希,然后基于获取的代码哈希从代码存储中心拉取对应的计算逻辑进行审查。也就是说,数据提供方U是在事后对可信计算中心使用的计算逻辑进行审查的,由此也可以实现对可信计算中心使用的计算逻辑的约束或者控制。且该事后审查的方法,可以避免数据提供方与可信计算中心进行频繁的交互。
同理,其它数据提供方也可以将各自的加密分片上传至可信计算中心,且在获取的代码哈希与存证的代码哈希相一致的情况下,向各可信计算节点提供对应的加密秘钥,本说明书在此不复赘述。
应理解,图3只是一种示例性说明,在实际应用中,可信计算节点的数目也可以为两个或更多个,相应地,也可以将数据拆分成两个隐私分片或者更多个隐私分片等等。此外,代理节点的数目与可信计算节点的数目也可以不相等,比如,各可信计算节点共同对应一个代理节点。最后,也可以将可信计算节点和代理节点合并成一种,从而代码哈希存证的判断由数据提供方U来执行等等,本说明书对此不作限定。
总之,在上述两种场景下,均可实现对可信计算中心使用的计算逻辑进行约束和控制,由此可以确保数据提供方的数据的安全性。
通过上述两种实施场景可以看出,数据提供方是针对其预先上传的加密数据来进行授权的,因此以下先对数据提供方上传加密数据的方法进行说明。
图4示出根据一个实施例的上传加密数据的方法交互图。图4中,该方法至少可以包括如下步骤。
步骤402,第一提供方将待存储的第一隐私数据拆分成若干隐私分片。
在一个示例中,可以结合参与多方安全计算的各可信计算节点的数目,确定隐私分片的数目。比如,在图2或图3的场景下,假设TEEX、TEEY以及TEEZ均参与多方安全计算,那么可以将第一隐私数据拆分成三个隐私分片,分别表示为:U1、U2和U3。
步骤404,第一提供方针对各隐私分片,对应生成各加密秘钥。
比如,第一提供方针对上述三个隐私分片:U1、U2和U3,对应生成三个随机的加密秘钥:K1、K2和K3。
步骤406,第一提供方利用各加密秘钥,对应加密各隐私分片,并将得到的各加密分片提供给可信计算中心。
比如,利用K1加密U1,从而得到ENC(K1, U1),利用K2加密U2,从而得到ENC(K2,U2),以及利用K3加密U3,从而得到ENC(K3, U3)。
当然,在实际应用中,第一提供方还可以将各加密秘钥对应的各秘钥标识提供给第一提供方。在一个例子中,任一加密秘钥的秘钥标识可以是通过哈希运算得到的,从而该秘钥标识即为对应加密秘钥的哈希值。
步骤408,可信计算中心将各加密分片保存在数据存储中心。
当可信计算中心还接收到各秘钥标识时,可以对各加密分片与各秘钥标识进行对应保存。在一个例子中,该对应关系可以如表1所示。
表1
ENC(K1,U1) |
K1_ID |
ENC(K2,U2) |
K2_ID |
ENC(K3,U3) |
K3_ID |
类似地,其它数据提供方也可以将各自的加密分片上传至可信计算中心进行保存。以及每个数据提供方可以上传多个数据对应的加密分片。因此,上述表1还可以包括数据提供方的标识以及数据的标识等等,本说明书对此不作限定。
在第一提供方将任意的第一隐私数据的加密分片上传至可信计算中心后,第一提供方可以通过两种方式控制可信计算中心使用的计算逻辑。第一种,自主控制级。第二种,事后追责级。
以下先以图2示出的实施场景为例,对第一种方式(即自主控制级)进行说明。
在第一种方式中,可信计算中心每次更改计算逻辑的时候,均需要与数据提供方进行交互,以获得数据授权。以下进行详细说明。
图5示出根据一个实施例的获取数据授权的方法交互图。如图5所示,该方法至少可以包括如下步骤。
步骤502,若干可信计算节点中任意的第一计算节点,从第一提供方接收认证请求。
这里的第一计算节点可以是具有一定隔离能力从而保证计算安全性的计算模块或计算设备。在一个示例中,第一计算节点实现为可信围圈enclave。更具体的,可信围圈enclave例如采用SGX或Trust Zone等技术而实现。在其它示例中,第一计算节点可以通过其他形式实现,例如采用了安全隔离手段的虚拟机或者运行实例。
以图2为例来说,上述第一计算节点可以为TEEX、TEEY以及TEEZ中的任一节点。
步骤504,向第一提供方返回认证信息,其中至少包括第一计算节点中运行的第一计算逻辑的第一代码哈希。
这里的第一计算逻辑即为程序代码,其例如可以用于求平均、求最大最小值或者求平方差等等。通常情况下,第一计算逻辑中的任何一行代码发生变化,其对应的代码哈希就会不同,从而基于第一代码哈希,可以针对第一计算逻辑进行是否符合预期的判断。
此外,上述认证信息还可以包括第一计算节点的签名信息以及由第一计算节点生成的公私钥对中的公钥等等。其中,该签名信息可以通过各种签名方式得到,例如哈希算法、加密算法等。
第一提供方在接收到上述认证信息之后,可以基于该认证信息对第一计算节点进行可信认证,这里的可信认证可以包括,校验签名信息和/或校验公私钥对中的公钥等等。
此外,第一提供方还可以对第一代码哈希进行正确性校验,该正确性校验可以包括,将第一代码哈希与预先存储的、经过第一提供方审查的目标计算逻辑的目标代码哈希进行比对,若比对一致,则该第一代码哈希通过正确性校验,否则不通过。
应理解,这里第一提供方将接收的第一代码哈希与预先保存的目标代码哈希进行比对,可以实现对第一计算逻辑的实时审查,进而可以实现对可信计算中心使用的计算逻辑进行约束或者控制。
步骤506,接收第一提供方在确定第一计算节点通过可信认证,且第一代码哈希通过正确性验证后发送的通道建立请求。
步骤508,根据通道建立请求,建立与第一提供方之间的第一可信通道。
这里的第一可信通道通常也称为加密通道,其通常是基于普通连接而建立的。
步骤510,通过第一可信通道,接收若干加密分片对应的各加密秘钥中的目标加密秘钥,从而获得基于第一计算逻辑,对目标加密秘钥对应的目标加密分片进行计算的权限。
以图2为例来说,在第一计算节点为TEEX时,其接收的目标加密秘钥可以为K1;而在第一计算节点为TEEY时,其接收的目标加密秘钥可以为K2。
应理解,第一计算节点在接收到目标加密秘钥之后,还可以从若干可信计算节点中,确定出与第一计算节点属于同一角色分类的第二计算节点。将目标加密秘钥共享给第二计算节点,以使得第二计算节点获得基于第一计算逻辑,对目标加密分片进行计算的权限。由此可以避免第一提供方需要向每个可信计算节点发送加密秘钥,进而浪费通信资源的问题。
此外,第一计算节点在接收到目标加密秘钥之后,可以利用对应于第一计算节点以及第一计算逻辑的专属秘钥,加密目标加密秘钥。将经过加密的目标加密秘钥存储至数据存储中心。数据存储中心可以记录各可信计算节点与各自加密的加密秘钥之间的对应关系。
本说明书所述的第一计算节点提供Seal能力,这里的Seal能力是指使用可信计算节点的专属秘钥进行加密。该专属秘钥在TEE外部是无法访问的。
需要说明,上述专属秘钥通常与设备环境(如,CPU和内存等)和计算逻辑相关,也就是说,随着设备环境或者计算逻辑的不同,对应的专属秘钥也不一致。由此可以确保在各可信计算节点运行相同的计算逻辑时,每个可信计算节点只能解密通过其加密的加密秘钥,进而只能获得针对该加密秘钥对应的隐私分片进行计算的权限,由此可以确保数据的安全性。
还以图2为例来说,当TEEX、TEEY以及TEEZ均运行相同的计算逻辑时,其针对各自接收的加密秘钥K1、K2和K3进行加密所使用的专属秘钥不同。原因在于,不同的可信计算节点其设备环境通常是不同的。
当然,第一计算节点在接收到目标加密秘钥之后,也可以不存储到数据存储中心,而直接将其保留在内存当中。
应理解,上述是针对各可信计算节点获取数据授权的过程的说明。
需要说明,可信计算中心(即各可信计算节点)每更改一次计算逻辑,就重复执行一次步骤502-步骤510,以获得针对当前计算逻辑的数据授权。
此外,由于在获取数据授权的过程中,数据提供方与可信计算节点之间的传输量与数据提供方的数据量无关,通常是一个较小的常数,从而本方案可以在节约针对数据提供方的数据的使用成本。
应理解,在各可信计算节点获得数据授权之后,就可以针对各自的授权隐私分片联合进行计算,以下对该计算过程进行说明。
先针对目标加密秘钥保存到数据存储中心进行说明。
还以上述第一计算节点为例来说,第一计算节点可以从管理中心接收计算请求。响应于该计算请求,通过查询各可信计算节点与各自加密的加密秘钥之间的对应关系,从数据存储中心读取经过加密的目标加密秘钥,并利用对应于专属秘钥的解密秘钥对其进行解密,得到目标加密秘钥。基于目标加密秘钥的秘钥标识,从数据存储中心读取对应的目标加密分片,并利用该目标加密秘钥对其进行解密,得到对应的目标明文分片。基于第一计算逻辑,对目标明文分片和其它明文分片进行计算。
首先,在一个示例中,第一计算节点可以根据对应的节点标识,从数据存储中心读取通过其加密的目标加密秘钥。
当然,第一计算节点也可能通过某种方式会获取到其它可信计算节点的标识,进而可以获取到其它可信计算节点上传的经过加密的加密秘钥,但是由于该第一计算节点无法获知其它可信计算节点的专属秘钥,从而其并不能进行解密。也就是说,本方案中,第一计算节点使用专属秘钥,对对应的目标加密秘钥进行加密,可以确保加密秘钥的安全性。
此外,上述目标加密秘钥的秘钥标识可以是由第一计算节点,利用与第一提供方约定的哈希算法针对目标加密秘钥计算得到的。
再针对目标加密秘钥直接保留在内存中进行说明。
第一计算节点可以从管理中心接收计算请求。响应于该计算请求,基于目标加密秘钥的秘钥标识,从数据存储中心读取对应的目标加密分片,并利用该目标加密秘钥对其进行解密,得到对应的目标明文分片。基于第一计算逻辑,对目标明文分片和其它明文分片进行计算。
以第一计算节点为图2中的TEEX为例来说,TEEX可以基于K1的秘钥标识K1_ID,从表1中读取对应的加密分片ENC(U1,K1),之后可以利用K1对其进行解密,从而得到隐私分片U1。类似地,TEEY可以解密得到隐私分片U2,TEEZ可以解密得到隐私分片U3。之后,TEEX、TEEY以及TEEZ可以基于第一计算逻辑,联合对隐私分片U1、U2和U3进行计算。
应理解,在TEEX、TEEY以及TEEZ还获取到其它数据提供方的隐私分片的加密秘钥时,各TEE还可以进行基于秘密分享的计算。
综上,本说明书实施例提供的获取数据授权的方法,数据提供方通过与可信计算中心进行实时地交互,对可信计算中心使用的计算逻辑进行审查,也即约束可信计算中心使用的计算逻辑,由此可以确保数据提供方的数据的安全性。
以下再以图3示出的实施场景为例,对第二种方式(即事后追责级)进行说明。
在第二种方式中,数据提供方和可信计算中心可以通过合同约定允许使用的计算逻辑,从而可信计算中心在更改计算逻辑时无需与数据提供方交互,但要求可信计算中心使用的计算逻辑可被数据提供者实时追查。以下进行详细说明。
图6示出根据另一个实施例的获取数据授权的方法交互图。如图6所示,该方法至少可以包括如下步骤。
步骤602,各代理节点中任意的第一代理节点,从第一提供方获得若干加密分片对应的各加密秘钥中的目标加密秘钥。
可选地,在步骤602之前,第一提供方可以先对第一代理节点进行可信认证以及代码哈希的正确性验证。这里的代码哈希对应的程序代码,是指第一代理节点中运行的验证逻辑。该验证逻辑用于判断对应的第一计算节点中运行的第一计算逻辑的第一代码哈希是否已存证。
上述可信认证和正确性验证的具体方法可以参见上述步骤502和步骤504,本说明书在此不复赘述。
在确定第一代理节点通过可信认证,验证逻辑通过正确性验证后,第一提供方可以与第一代理节点建立可信通道,并通过该可信通道向第一代理节点发送目标加密秘钥。
类似地,第一提供方可以与其它代理节点建立可信通道,并向其它代理节点发送加密秘钥。
以图3为例来说,第一提供方在对各代理节点TEEA、TEEB以及TEEC进行可信认证和代码哈希的正确性验证后,可以分别向各代理节点发送加密秘钥K1、K2和K3。从而在上述第一代理节点为TEEA时,其接收的目标加密秘钥为K1;以及在上述第一代理节点为TEEB时,其接收的目标加密秘钥为K2。
此外,第一代理节点在接收到目标加密秘钥之后,还可以利用对应于第一代理节点以及验证逻辑的专属秘钥,加密目标加密秘钥。将经过加密的目标加密秘钥存储至数据存储中心。数据存储中心可以记录各代理节点与各自加密的加密秘钥之间的对应关系。
当然,第一代理节点在接收到目标加密秘钥之后,也可以不存储到数据存储中心,而直接将其保留在内存当中。
步骤604,第一代理节点向对应的第一计算节点发送认证请求。
比如,在第一代理节点为TEEA时,其可以向对应的第一计算节点TEEX发送认证请求。
步骤606,第一代理节点接收第一计算节点返回的认证信息,其中至少包括第一计算节点中运行的第一计算逻辑的第一代码哈希。
这里的第一计算逻辑即为程序代码,其例如可以用于求平均、求最大最小值或者求平方差等等。通常情况下,第一计算逻辑中的任何一行代码发生变化,其对应的代码哈希就会不同,从而基于第一代码哈希,可以针对第一计算逻辑进行是否符合预期的判断。
此外,上述认证信息还可以包括第一计算节点的签名信息以及由第一计算节点生成的公私钥对中的公钥等等。其中,该签名信息可以通过各种签名方式得到,例如哈希算法、加密算法等。
步骤608,第一代理节点基于认证信息,对第一计算节点进行可信认证,以及判断第一代码哈希是否已存证。
这里的可信认证可以包括,校验签名信息和/或校验公私钥对中的公钥等等。
上述判断第一代码哈希是否已存证可以包括,从第一计算节点获取其预先存储的存证凭证,其中至少包括第一计算逻辑的第二代码哈希。将第一代码哈希与第二代码哈希进行比对,若比对一致,则确定第一代码哈希已存证。
在一个示例中,第一计算节点获取存证凭证过程可以为:可信计算中心认可的第三方(可以为任一设备或角色)或管理员,将第一计算逻辑的第二代码哈希提供给存证中心,并接收存证中心返回的存证凭证,该存证凭证包含第二代码哈希。之后,可信计算中心认可的第三方或管理员,将存证凭证提供给第一计算节点,并由第一计算节点对其保存。
步骤610,在可信认证通过,且第一代码哈希已存证的情况下,第一代理节点建立与第一计算节点之间的第一可信通道。
这里的第一可信通道通常也称为加密通道,其通常是基于普通连接而建立的。
步骤612,第一代理节点通过第一可信通道,将目标加密秘钥发送给第一计算节点,从而第一计算节点获得基于第一计算逻辑,对目标加密秘钥对应的目标加密分片进行计算的权限。
在目标加密秘钥存储到数据存储中心时,第一代理节点可以查询各代理节点与各自加密的加密秘钥之间的对应关系,以从数据存储中心读取由其加密的目标加密秘钥,并利用对应于专属秘钥的解密秘钥对其进行解密,得到明文的目标加密秘钥。之后,向第一计算节点提供目标加密秘钥。
在目标加密秘钥直接保存在内存时,第一代理节点可以直接从内存中读取目标加密秘钥,并将其提供给第一计算节点。
以图3为例来说,在第一代理节点为TEEA时,可以将目标加密秘钥K1发送给第一计算节点TEEX;而在第一代理节点为TEEB时,可以将目标加密秘钥K2发送给第一计算节点TEEY。
同样地,第一计算节点在接收到目标加密秘钥之后,可以将其共享给与第一计算节点属于同一角色分类的其它可信计算节点。
此外,第一计算节点可以将该目标加密秘钥保留在内存当中,也可以将目标加密秘钥存储到数据存储中心,具体存储方法参照第一代理节点针对目标加密秘钥的存储方法,本说明书在此不复赘述。
至此,完成了针对各可信计算节点的数据授权。
需要说明,可信计算中心每更改一次计算逻辑,就重复执行一次步骤604-步骤612,以获得针对当前计算逻辑的数据授权。
此外,在该实施例中,数据提供方预先将各加密秘钥分发给代理节点,可以使得在获取数据授权的过程中,代理节点与可信计算节点之间的传输量与数据提供方的数据量无关,通常是一个较小的常数,从而本方案可以在节约针对数据提供方的数据的使用成本。
应理解,在各可信计算节点获得数据授权之后,就可以针对各自的授权隐私分片联合进行计算,以下对该计算过程进行说明。
还以上述第一计算节点为例来说,第一计算节点可以从管理中心接收计算请求。响应于该计算请求,基于其从第一代理节点接收的目标加密秘钥的秘钥标识,从数据存储中心读取对应的目标加密分片,并利用该目标加密秘钥对其进行解密,得到对应的目标明文分片。基于第一计算逻辑,对目标明文分片和其它明文分片进行计算。这里的其它明文分片可以是其它可信计算节点利用其接收的加密秘钥,对对应的加密分片进行解密得到的。
应理解,上述是针对目标加密秘钥直接保留在内存的情况的说明。当然,如果第一计算节点将目标加密秘钥存储到数据存储中心,那么先从数据存储中心读取经过加密的目标加密秘钥并解密,之后基于解密得到的目标加密秘钥的秘钥标识,读取目标加密分片。
以第一计算节点为图3中的TEEX为例来说,TEEX可以基于K1的秘钥标识K1_ID,从表1中读取对应的加密分片ENC(U1,K1),之后可以利用K1对其进行解密,从而得到隐私分片U1。类似地,TEEY可以解密得到隐私分片U2,TEEZ可以解密得到隐私分片U3。之后,TEEX、TEEY以及TEEZ可以基于第一计算逻辑,联合对隐私分片U1、U2和U3进行计算。
应理解,在TEEX、TEEY以及TEEZ还获取到其它数据提供方的隐私分片的加密秘钥时,各TEE还可以进行基于秘密分享的计算。
应理解,在本实施例提供的授权方法中,第一提供方并没有对可信计算中心使用的计算逻辑进行实时审查,而进行了代码哈希是否存证的判断,其审查过程是事后进行的,该事后审查的具体过程如下:
第一提供方从存证中心获取第一计算节点已存证的第二代码哈希,向代码存储中心发送数据获取请求,其中至少包括上述第二代码哈希。响应于数据获取请求,代码存储中心将对应的第一计算逻辑提供给第一提供方,以供第一提供方对第一计算逻辑进行合法性审查。
在一个示例中,第一提供方可以基于其与可信计算中心签署的合同来进行上述合法性审查。该合同用于记录双方共同协商的能够进行的计算逻辑。
综上,本说明书实施例提供的获取数据授权的方法,数据提供方可以事后对可信计算中心使用的计算逻辑进行审查,由此可以使得可信计算中心仅需在数据提供方上传数据分片和秘钥时进行两次交互,之后在可信计算中心(即各可信计算节点)更改计算逻辑时,仅在代理节点与可信计算节点之间进行交互即可,也即仅在可信计算中心内部进行通信,而可信计算中心内部的交互通常是基于高速网进行的,由此可以大大提升数据授权的效率,且可以达到节约通信资源的目的。
此外,在该实施例中,只有代理节点才能获得数据提供方的加密密钥。 代理节点只有验证了可信计算节点的存证凭证过之后,并且可信计算节点的代码哈希正确,才会将加密密钥发给可信计算节点。而可信计算节点为了获得存证凭证,就必须去存证中心将自己的代码哈希存证。 那么,数据提供方就能够从存证中心,获得所有可信计算节点的代码哈希,也就能够知道计算逻辑是否符合最初的约定。
与上述获取数据授权的方法对应地,本说明书一个实施例还提供的一种获取数据授权的装置,设置于可信计算中心中任意的第一计算节点。该可信计算中心包括数据存储中心和若干可信计算节点,数据存储中心至少维护有第一提供方的第一隐私数据的若干加密分片。如图7所示,该装置可以包括:
接收单元702,用于从第一提供方接收认证请求。
发送单元704,用于向第一提供方返回认证信息,其中至少包括第一计算节点中运行的第一计算逻辑的第一代码哈希。
接收单元702,还用于接收第一提供方在确定第一计算节点通过可信认证,且第一代码哈希通过正确性验证后发送的通道建立请求。
其中,该正确性验证包括,将第一代码哈希与预先存储的、经过第一提供方审查的目标计算逻辑的目标代码哈希进行比对。
建立单元706,用于根据通道建立请求,建立与第一提供方之间的第一可信通道。
接收单元702,还用于通过第一可信通道,接收若干加密分片对应的各加密秘钥中的目标加密秘钥,从而获得基于第一计算逻辑,对目标加密秘钥对应的目标加密分片进行计算的权限。
可选地,该装置还可以包括:
加密单元708,用于利用对应于第一计算节点以及第一计算逻辑的专属秘钥,加密目标加密秘钥。
存储单元710,用于将经过加密的目标加密秘钥存储至数据存储中心。
可选地,上述可信计算中心还包括管理中心,该管理中心用于管理若干可信计算节点。上述数据存储中心还维护有若干加密分片对应的各秘钥标识。该装置还包括:读取单元712和计算单元714。
接收单元702,还用于从管理中心接收计算请求。
读取单元712,用于响应于计算请求,从数据存储中心读取经过加密的目标加密秘钥,并利用对应于专属秘钥的解密秘钥对其进行解密,得到目标加密秘钥。
读取单元712,还用于基于目标加密秘钥的秘钥标识,从数据存储中心读取对应的目标加密分片,并利用目标加密秘钥对其进行解密,得到对应的目标明文分片。
计算单元714,用于基于第一计算逻辑,对目标明文分片和其它明文分片进行计算。
可选地,该装置还可以包括:
确定单元716,用于从若干可信计算节点中,确定出与第一计算节点属于同一角色分类的第二计算节点。
共享单元718,用于将目标加密秘钥共享给第二计算节点,以使得第二计算节点获得基于第一计算逻辑,对目标加密分片进行计算的权限。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的获取数据授权的装置,可以在节约通信成本的情况下,从数据提供方获取对应的数据授权。
与上述获取数据授权的方法对应地,本说明书一个实施例还提供的一种获取数据授权的系统。如图8所示,该系统包括数据存储中心802、若干可信计算节点804以及对应的各代理节点806。数据存储中心802至少维护有第一提供方的第一隐私数据的若干加密分片。
各代理节点806,用于从第一提供方,获得若干加密分片对应的各加密秘钥。
各代理节点806中任意的第一代理节点806,用于向对应的第一计算节点804发送认证请求,并接收第一计算节点804返回的认证信息,其中至少包括第一计算节点804中运行的第一计算逻辑的第一代码哈希。
第一代理节点806,还用于基于认证信息,对第一计算节点804进行可信认证,以及判断第一代码哈希是否已存证。
第一代理节点806具体用于:
从第一计算节点804获取其预先存储的存证凭证,其中至少包括第一计算逻辑的第二代码哈希;
将第一代码哈希与第二代码哈希进行比对,若比对一致,则确定第一代码哈希已存证。
该存证凭证是在系统认可的第三方或管理员将第二代码哈希提供给存证中心后,由第三方或管理员从存证中心接收并转发至第一计算节点804的。
第一代理节点806,还用于在可信认证通过,且第一代码哈希已存证的情况下,建立与第一计算节点804之间的第一可信通道。
第一代理节点806,还用于通过第一可信通道,将其接收的目标加密秘钥发送给第一计算节点804。
第一计算节点804,用于获得基于第一计算逻辑,对目标加密秘钥对应的目标加密分片进行计算的权限。
可选地,该系统还包括代码存储中心,其中至少维护有第一计算逻辑;
代码存储中心,用于从第一提供方接收数据获取请求,其中至少包括第一提供方从存证中心获取的第二代码哈希。
代码存储中心,还用于响应于数据获取请求,将第一计算逻辑提供给第一提供方,以供第一提供方对第一计算逻辑进行合法性审查。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的获取数据授权的系统,可以在节约通信成本的情况下,从数据提供方获取对应的数据授权。
与上述获取数据授权的方法对应地,本说明书一个实施例还提供的一种获取数据授权的装置,设置于可信计算中心中任意的第一代理节点。该可信计算中心包括数据存储中心、若干可信计算节点以及对应的各代理节点。该数据存储中心至少维护有第一提供方的第一隐私数据的若干加密分片。如图9所示,该装置包括:
获取单元902,用于从第一提供方获得若干加密分片对应的各加密秘钥中的目标加密秘钥。
发送单元904,用于向对应的第一计算节点发送认证请求。
接收单元906,用于接收第一计算节点返回的认证信息,其中至少包括第一计算节点中运行的第一计算逻辑的第一代码哈希。
判断单元908,用于基于认证信息,对第一计算节点进行可信认证,以及判断第一代码哈希是否已存证。
建立单元910,用于在可信认证通过,且第一代码哈希已存证的情况下,建立与第一计算节点之间的第一可信通道。
发送单元904,还用于通过第一可信通道,将目标加密秘钥发送给第一计算节点,从而第一计算节点获得基于第一计算逻辑,对目标加密秘钥对应的目标加密分片进行计算的权限。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的获取数据授权的装置,可以在节约通信成本的情况下,从数据提供方获取对应的数据授权。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图4至图6中任一项所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图4至图6中任一项所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。