一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式安全多方计算的制作方法

2022-08-17 08:20:46 来源:中国专利 TAG:


1.本说明书涉及一种用于提供分布式数据处理服务以执行安全多方计算的计算机实现的方法,以及相关联的系统和计算机可读介质。


背景技术:

2.安全多方计算(mpc)是一种使得多方能够在私有输入上联合计算函数的密码计算技术。例如,假设相对于至少一个未受损方,spdz协议可以针对多方计算的多个受损方提供安全性。
3.然而,mpc的引擎通常是作为可执行文件交付的学术原型,旨在特定的研究应用场景中操作。这些原型不便于并入当代计算栈。这意味着mpc的实际应用在很多情形下是不实际的。因此,可以进一步改进安全多方计算。


技术实现要素:

4.根据第一方面,提供了一种用于提供分布式数据处理服务的计算机实现的方法,所述分布式数据处理服务用于使用经由通信网络通信地耦合的至少第一和第二计算引擎对私有输入数据的至少第一和第二项执行函数的安全多方计算。该方法包括:-通过将至少第二计算引擎绑定到第一计算引擎,使用第一计算引擎建立分布式数据处理服务;-使用由对应的第一和第二计算引擎管理的第一和第二密码引擎提供的分布式密码生成服务,生成在安全多方计算的在线阶段期间所需的多个密码原语,其中在安全多方计算之前的离线阶段期间生成一部分密码原语,并且所述多个密码原语用由相应的第一和第二计算引擎管理的对应的至少第一和第二密码数据存储提供的分布式密码数据存储服务来存储;-由分布式数据处理服务获得安全多方计算的服务调用以及私有输入数据的至少第一和第二项;-在由对应的第一和第二计算引擎管理的至少第一和第二对象存储引擎提供的分布式数据处理服务的分布式对象存储服务中存储私有输入数据的至少第一和第二项;-在在线阶段期间,使用由对应的第一和第二计算引擎管理的第一和第二多方计算引擎提供的分布式数据处理服务的多方计算服务对私有输入数据的至少第一和第二项执行分布式安全多方计算,其中第一多方计算引擎与至少第二多方计算引擎一起执行安全多方计算;和-经由分布式对象存储服务存储安全多方计算的至少一个结果,和/或向至少第一或第二客户端输出所述至少一个结果。
5.有利的是,说明书中详述的安全mpc技术可以提供可扩展、容错和可灵活部署的安全计算解决方案。
6.特别地,安全mpc和秘密共享协议的组合使得mpc计算能够跨多个不同的计算引擎
上分解。计算引擎可以包括常规的服务器,或者使用例如kubernetes(tm)容器编排器或mesos(tm)或docker swarm(tm)的更灵活的弹性计算资源。换言之,mpc算法的组成部分及其辅助服务可以跨多个微服务上分解。这使得能够根据给定的工作负载独立地横向扩展服务。例如,相对于分布式mpc实现的其他服务,i/o密集型工作负载内的系统可以具有高度扩展的对象存储服务。计算密集型工作负载可能依赖于扩大数量的并行、并发、多方计算服务和分布式密码生成服务。
7.另一个优点是,例如,将密码原语(材料)的生成分离到分布式密码生成服务,并且分布式多方计算服务对密码的消耗使得能够在预期未来计算负载的情况下积累适量的密码材料。在分布式多方竞争服务不活动的时段中,大量密码原语可以被储备在分布式密码数据存储服务中,以使能分布式多方计算的快速初始化。
8.另外的优点是,由于基于容器的计算的特性,分布式安全mpc服务的组件服务可以可选地以保存环境的方式被快速初始化或中止。
9.另外的优点是,使用例如统一命令行客户端向客户端呈现了到分布式多方计算服务的统一接口。
10.此外,将spdz类型的mpc算法从单个处理器实现适配到容器化云计算环境可能引起附加的考虑,诸如如何为不同的工作负载和不同的容器配置在“离线”和“在线”阶段之间分配任务。当在多个容器之间分发时的spdz实现的数据存储和分发布置的一致性也在本说明书中被解决。例如,在多个计算引擎上生成密码原语,尽管密码生成服务被呈现为对高级算法的统一服务。
11.本说明书的另外贡献是提供服务网格32来改进每个计算引擎vcp1、vcp2内部的通信。例如,spdz方法需要在每个vcp的子模块内部、例如在mpc1、cgs1、cda1和ose1之间增加进程间通信,例如以使能共享秘密的分发或分布式计算的性能。本文提出的服务网格32方法改进了在spdz计算的执行期间进程间通信的效率。此外,该服务可以透明地保护微服务之间的通信信道。当多个计算实例并发运行时,该服务还可以促进路由。
12.附加地,使能在给定vcp内部的模块之间的通信的服务网格32的提供和容器化方法使得分布式数据处理服务能够快速地重新配置。例如,应用的计算负载可能从主要基于计算的负载改变为主要基于i/o的负载。在该情况下,分布式数据处理服务可以减少在每个vcp中所需的多方计算引擎(mce)的数量,并增加在每个vcp中的对象存储引擎的数量,可选地使用kubernetes(tm)编排方法。
13.因此,实现mpc的分布式数据处理服务可以快速将其自身重新配置为不同的计算作业。
14.根据第二方面,提供了如独立系统权利要求11限定的一种用于提供分布式数据处理服务的系统,该分布式数据处理服务用于对私有输入数据的至少第一和第二项执行函数的安全多方计算,读者现在应该参考该系统。
15.根据第三方面,提供了如独立的计算机实现的方法权利要求13限定的一种第一计算引擎的计算机实现的方法,该第一计算引擎用于协调分布式数据处理服务,读者现在应该参考该方法。
16.根据第四方面,提供了如独立的计算机实现的方法权利要求14限定的一种用于参与分布式数据处理服务的第二计算引擎的计算机实现的方法,该分布式数据处理服务用于
执行函数的安全多方计算,读者现在应该参考该方法。
17.根据第五方面,提供了一种计算机可读介质或数据信号,其上编码有限定机器可读指令的至少一个计算机程序,所述机器可读指令当由计算机处理器执行时,能够实行第一、第三和第四方面的计算机实现的方法。
18.从属权利要求和详细描述限定了前述方面的另外实施例。
19.在以下应用中,“分布式数据处理服务”意指由一个或多个服务器托管的持久计算机程序,所述一个或多个服务器托管在有时也称为计算云的一个或多个数据中心内。分布式数据处理服务的客户端可以上传数据并对数据调用计算,并最终从分布式数据处理服务下载经变换的数据。
20.在下面的应用中,“安全多方计算”意指在从多方提供的私有输入上联合计算函数。安全mpc可以基于例如spdz协议或其变体。spdz协议的特性是,在接收到私有输入之前,密码原语的费力计算可以离线执行。例如,如在us 2019/0372760 a1(特此通过引用并入)中讨论的spdz协议的变体可以使能容错spdz,即使当一些方在在线阶段期间变得不可用时也允许执行安全的mpc。
21.在以下应用中,“虚拟云(vc)”意指多个边缘设备(例如客户端)可以向其上传数据、从其下载数据以及在其中进行计算的逻辑域或模拟网络。例如,虚拟云托管在一个或多个服务器上,数据中心连接到因特网。典型地,虚拟云是可扩展的,并且具有对于诸如kubernetes(tm)的容器编排服务的支持。
22.在以下应用中,“服务”可以与“计算引擎”相关联,或者由“计算引擎”执行。特别地,诸如“第一对象存储引擎”的“引擎”表示对数据执行计算的真正的计算机逻辑。“引擎”可能具有分配给它的一个或可变数量的单核或多核处理器。“引擎”可以是抽象,诸如包含或指向逻辑计算元素的kubernetes(tm)容器。另一方面,“服务”是一个或多个引擎和需要调用一个或多个引擎的行动者之间的统一接口。换言之,给定的数据处理服务“服务”限定了任何类型的一个服务(诸如“密码生成服务”),其充当到底层计算引擎集合的接口。当调用给定服务时,容器编排器将数据和控制命令从给定服务的接口分发到底层计算引擎。
23.在下面的应用中,“分布式密码生成服务(cgs)”意味着例如能够生成具有相关随机性的原语的服务。换言之,服务生成一次性的密码原语。例如,可以使用相关随机性来保护来自和去往客户端的数据的i/o,和/或快速和安全地执行mpc。在实施例中,本文提出的cgs应用mp-spdz算法实现来生成元组类型的实例。在实施例中,每个“虚拟云提供商”(vcp)被组织成主vcp和n-1个从vcp,其中n是vcp的总数。主vcp监视存储在其他计算引擎上的分布式密码数据存储cds的其他从实例中的不同类的密码原语(具有相关随机性)的可用性。后续将进一步描述分布式密码生成服务的操作。
24.在实施例中,主vcp使用遥测api询问cds。在询问之后,选择密码原语生成策略,密码原语生成作业由主vcp发起,并在从vcp中复制。在实施例中,密码原语生成作业跨分布式数据处理服务的所有vcp上以相同的次序排队以供执行。在实施例中,主vcp遵循实现基于阈值的品质因数,该品质因数跟踪给定类的多少密码原语保留在每个vcp的每个计算引擎的cds中。
25.在实施例中,当主vcp检测到在任何一个cds中第一类型的密码原语(诸如反转原语(inversion primitive))的数量已经下落到以下时,该计算引擎的对应vcp被主vcp指令
生成预定数量的额外密码反转原语。
26.在实施例中,当主vcp检测到在任何一个cd中第二类型的密码原语(诸如beaver乘法三元组)的数量已经达到上阈值时,所有计算引擎的对应vcp被主vcp指令停止在所有其他vcp中生成第二类型的原语。可选地,对应的vcp可以取而代之被指令开始生成不同类型的额外密码原语。本领域技术人员将领会,可以使用跟踪密码原语的数量和检测何时生成更多密码原语的其他方法。在实施例中,密码原语生成作业由每个vcp中的计算引擎获取并联合执行。这样的作业的一致排序可以确保vcp保持一致。
27.在下面的应用中,“分布式密码数据存储服务(cds)”作用于接收和存储由相同计算引擎上的对应cgs生成的密码原语。它是存储服务,用于在计算期间消耗的一次性密码原语。此外,cds被配置为按需求或根据时间表向分布式对象存储服务(oss)(这将在后续讨论)和/或多方计算服务提供存储的密码原语。可选地,密码原语是一次性原语。
28.因此,cgs提供oss和/或多方计算服务(mcs)所需的密码原语,所述密码原语是对于执行调解对oss的访问的安全i/o协议以及还对于使用例如mp-spdz算法在mcs内执行mpc程序的安全执行所需要的。在示例中,密码原语以不同的类型生成,以用于不同的目的。密码原语可以是输入掩码、乘法三元组、beaver乘法三元组或平方三元组之一。例如,cgs还可以被配置为生成用作种子的随机值。cds可选地为每个类型的密码原语维护存储对象。个体密码原语在本文档中可以称为元组,因为它们是依赖于类型元数的元组。
29.在实施例中,cds揭示了被配置为上传和/或下载密码原语的应用编程接口(api)。以与oss相同的方式,在该实施例中,cds对接到由亚马逊(tm)s3或谷歌(tm)对象存储提供的对象存储,该对象存储将数据作为具有相关联元数据的对象来管理。在实施例中,cds实现用于协调向请求服务或引擎(诸如mcs或oss)递送密码原语的次序的共识协议。后续将进一步描述“分布式密码数据存储服务(cds)”的操作。
30.在下面的应用中,“分布式对象存储服务(oss)”意指用于存储来自多个客户端的私有输入数据并支持由分布式多方计算服务使用的mpc协议确定的秘密共享方案的对象存储。可选地,输出数据也存储在oss中。因此,oss类似于由亚马逊(tm)s3或谷歌(tm)对象存储提供的对象存储,该对象存储将数据作为具有相关联元数据的对象来管理。在实施例中,oss是到例如亚马逊(tm)s3或谷歌(tm)对象存储的外部对象存储的网关。oss支持由mpc协议确定的秘密共享方案,其中秘密共享在操作于客户端vcc1、vcc2上的客户端软件上执行。在实施例中,假定存在至少一个诚实的(未受损)vcp,则oss应用附加秘密共享来安全地存储跨多个vcp上的数据,以满足在任何第n方vc中没有(n-1)个vcp联盟可以重建原始数据的条件。
31.此外,由每个vcp执行的oss及其实现引擎(ose)提供的i/o协议使能在客户端-服务器环境中进行抗错误的mpc计算。一个示例是如发布的。这使得存储和计算能够由无限数量的客户端委托给vc中的mpc引擎的小集合。
32.在实施例中,oss被配置为将第一vcp的请求多路复用到vc中的多个或所有其他vcp。在这种情况下,其他vcp的秘密共享被加密,使得第一vcp不能重建秘密。然后,oss被配置为从vc中的多个或所有其他vcp接收响应,在转发检索到的请求信息之前评估检索到的请求信息的一致性。在该实施例中,仅非敏感元数据可以被检查一致性。
33.在实施例中,对象存储服务暴露api,该api允许在“秘密共享”ss协议的环境中,第一或第二或完全不同的客户端获取秘密共享并重新组合它们以重建秘密。这是否被允许是由访问控制机制(例如,acl)控制的,该访问控制机制(例如,acl)在(例如,通过openid connect)认证的身份之上工作。
34.在下面的应用中,为简单起见,举例并且说明了最小数量的vcp,即两个。然而,学校的人将意识到vcp的数量可以大于二。
35.在下面的应用中,“分布式多方计算服务”(mcs)是一种无服务器的安全多方计算服务。在实施例中,mcs是“knative”(tm)的扩展,“knative”(tm)是一种用于在kubernetes(tm)上构建和运行无服务器应用的软件框架。
36.在实施例中,第一vcp1中的mpc使用通信网络或结构经由vc与第二vcp2中的mpc通信,以经由vc提供“功能即服务”部署模型。在示例中,每个vcp包括服务网格32,用于支持vcp内的mpc计算,以及mcs和oss、cds和cgs内的进程间通信。
37.在示例中,每个vcp使用“istio”(tm)作为服务网格32,用于在至少mpc1、cgs1、cds1和ose1之间的至少第一计算引擎vcp1内部的进程间通信。istio是用于连接计算引擎(诸如kubernetes容器)的可适应服务网格32,该计算引擎(诸如kubernetes容器)可以快速扩大和缩小规模,从而例如提供发现、故障恢复、路由、监视和负载平衡。替代地,与诸如“linkerd”(tm)或“kuma”(tm)的替代服务网格组合的诸如“openfaas”(tm)或“kubless”(tm)的faas框架。
38.在实施例中,计算在主/从布置中编排,其中一个计算引擎vcp1的mcs1组织和/或调度与其他mcs和vcp的通信。
39.因此,mcs实现了用于协调多个多方计算引擎的编排逻辑。在示例中,mcs可以应用mp-spdz mpc引擎。例如,可以应用在论文中讨论的mpc算法。也可以应用其他mpc框架的实现,诸如“fresco”或“scale mamba”。mcs继承了所应用的mpc框架算法的安全特性。当使用mp-spdz时,假定至少一个vcp保持诚实(不与n方vc中的其余(n-1)方勾结),则机密性是有保证的。此外,系统是主动安全的。恶意方可以任意偏离协议。
40.在mpc程序执行期间,每个vcp中的本地多方计算引擎彼此通信。因此,被指定为“主”的vcp的mcs被配置为执行发现服务以交换网络端点信息,并与可能被指定为“从”的其他vcp交互。因此,mcs可以被配置为使用服务网格来编排网络设置。主vcp的服务可以配置
为协调后续vcp的mpc服务,以协调整个mpc执行,如将在后续讨论。
41.每个vcp的mpc还被配置为从vcp的相应对象存储(oss)读取数据和/或向其写入数据。例如,个体vcp的客户端可以借助于唯一的oss对象标识符提供oss输入对象的有序列表。在mcs借助于例如网络套接字连接执行mpc例程之前,vcp的mpc服务可以从vcp中并置的oss读取将被存储在oss中的对应对象秘密共享。在mpc例程的执行结束时,mpc可选地将对象写入并置的oss。输出对象共享的唯一对象标识符例如可以确定性地从客户端在触发执行时提交的执行标识符导出。
42.在下面的申请中,“spdz算法”指代特定的,这样的算法具有“离线阶段”和“在线阶段”,或者换言之包括至少两个阶段。在“离线”阶段中,计算密码原语,诸如乘法三元组。“离线阶段”被认为是spdz协议的更计算密集型的阶段。在“在线”阶段中,每个vcp的mpc使用密码原语来执行安全的mpc。在离线和在线阶段之前,应当生成密码密钥,所述密码密钥包括公共密码参数、公钥、私钥共享(由每个客户端方拥有)和mac密钥共享(由每个客户端方拥有)。
43.关于使用spdz的容错多方计算的另外细节在us专利公开us 2019/0372760 a1中给出,该us专利公开us 2019/0372760 a1通过引用特此并入。
44.在各图中描绘了本发明的示例性实施例,各图不应被解释为限制权利要求,并且在下面被更详细地解释。
附图说明
45.图1a示意性地图示了根据第二方面的用于提供分布式数据处理服务的系统。
46.图1b示意性地图示了分布式数据处理服务的服务栈。
47.图2示意性地图示了根据第一方面的计算机实现的方法。
48.图3示意性地图示了包括两个虚拟云提供商的示例性分布式数据处理服务的概览。
49.图4示意性地图示了分布式数据处理服务。
50.图5示意性地图示了vc计算执行协议的示例。
51.图6示意性地图示了密码生成服务的示例。
52.图7示意性地图示了分布式密码数据存储服务的示例。
53.图8示意性地图示了分布式对象存储服务的示例。
54.图9示意性地图示了多方计算服务的示例。
55.图10示意性地图示了密码原语分发方案的概要。
56.图11示意性地图示了密码原语分发操作期间的操作序列。
57.图12示意性地图示了在密码原语分发操作期间计算引擎之间的信令。
58.图13示意性地图示了在密码原语分发操作期间计算引擎之间的信令。
具体实施方式
59.概览图1a示意性地图示了用于提供分布式数据处理服务的系统。第一虚拟云客户端vcc1(诸如例如,智能电话)处于第一方12a(第一用户)控制。第二虚拟云客户端vcc2(例如,“边缘云”)处于第二方12b(第二用户)控制。第一虚拟云客户端vcc1(例如,经由客户端库14a和14b以及因特网)通信地耦合到第一计算引擎和第二计算引擎,第一计算引擎也称为虚拟云提供商vcp1,第二计算引擎也称为虚拟云提供商vcp2。第二虚拟云客户端vcc2(例如,经由客户端库14a和14b以及因特网)通信地耦合到第二计算引擎vcp2和第一计算引擎vcp1。在本说明书中,术语虚拟云提供商与术语“计算引擎”同义。第一个经由通信网络11连接到第一和第二虚拟云客户端。在具有多个虚拟云客户端vcc和多个计算引擎vcp的系统中,每个虚拟云客户端经由通信网络11与每个计算引擎通信地耦合。
60.每个vcp运行分布式数据处理服务的实例。
61.使用至少vcp1和vcp2之间的绑定过程18来建立虚拟云vc。在实施例中,绑定过程是对称的或对等的。
62.虚拟云vc为作为服务暴露的软件片段提供执行环境。vcr暴露的服务由所有组成的vcp联合和协作提供。
63.每个vcp被配置为提供服务栈20。
64.为了调用分布式数据处理服务,vcc1和vcc2调用多个vcp上的每个vc服务实例。该协议由客户端库14a、14b封装,并且将不进一步阐明。可选地,vcp1和vcp2基础架构是独立的。在实施例中,仅当两个vcp都独立地准许关于它们的本地服务的指示时,才准许服务和位置。数据使用秘密共享在vcp之间安全地分发。虚拟云vc提供的分布式数据处理服务可以借助于安全多方计算协议对存储在vcp1和vcp2中的数据进行操作。
65.特别地,提供了第一和第二虚拟云提供商vcp 1和vcp 2,其旨在托管如在服务栈20中阐述的云基础设施,并在下面讨论。本领域技术人员将领会,可以提供多于两方、客户端和vcp。在实施例中,每个虚拟云客户端vcc经由其相关联的客户端库14连接到每个虚拟云提供商vcp。
66.取决于所应用的多方协议的类型,系统可以继承不同的安全保证。例如,在实施例中,只要一个vcp保持未受损,系统就决不允许任何联盟的vcp访问数据。
67.服务栈图1b示意性地图示了分布式数据处理服务的服务栈20。
68.特别地,较低的云基础设施层可以例如由亚马逊aws(tm)计算云或微软azure(tm)计算云中的一个或两个组成。作为示例,在提供该云基础设施后,组件集用于向sdk层提供一致的执行环境,诸如用于编排旨在运行时保存vcp1和vcp2的可重新配置的多个容器的kubernetes(tm)框架26、用于执行云应用的knative(tm)框架30以及用于服务通信和提供通信网络的istio(tm)框架的组合。建立在基础设施层上的是根据本文讨论的方面提供oss、mcs、cgs和cds服务的sdk层。
69.图2示意性地图示了根据第一方面的计算机实现的方法。
70.根据第一方面,提供了一种用于提供分布式数据处理服务的计算机实现的方法200,该分布式数据处理服务用于使用经由通信网络通信地耦合的至少第一和第二计算引擎对私有输入数据的至少第一和第二项执行函数的安全多方计算,该方法包括:-使用第一计算引擎,通过将至少第二计算引擎绑定到第一计算引擎来建立202分布式数据处理服务;-使用由对应的第一和第二计算引擎管理的第一和第二密码引擎提供的分布式密
码生成服务,生成204在安全多方计算的在线阶段期间所需的多个密码原语,其中在安全多方计算之前的离线阶段期间生成一部分密码原语,并且所述多个密码原语用由相应的第一和第二计算引擎管理的对应的至少第一和第二密码数据存储提供的分布式密码数据存储服务来存储;-由分布式数据处理服务获得206安全多方计算的服务调用以及私有输入数据的至少第一和第二项;-在由对应的第一和第二计算引擎管理的至少第一和第二对象存储引擎提供的分布式数据处理服务的分布式对象存储服务中存储208私有输入数据的至少第一和第二项;-在在线阶段期间,使用由对应的第一和第二计算引擎管理的第一和第二多方计算引擎提供的分布式数据处理服务的多方计算服务,对私有输入数据的至少第一和第二项执行210分布式安全多方计算,其中第一多方计算引擎与至少第二多方计算引擎一起执行安全多方计算;和-经由分布式对象存储服务存储212安全多方计算的至少一个结果,和/或向至少第一或第二客户端输出所述至少一个结果。
71.分布式数据处理服务30使得多个vcp能够联合建立虚拟云vcp,该虚拟云vcp提供包括多方计算和秘密共享的存储和处理服务,以便隐藏由客户端提交或从对象存储引擎获得的私有输入数据。在存储、处理和输出期间,数据对其他参与的vcp是隐藏的。
72.客户端认证机制在实施例中,对分布式数据处理服务(30,vc)的资源的访问可能受到限制,因为通常该系统是多租户客户端/服务器系统。通过使用在每个vcp上操作的认证和授权机制来应用该限制。
73.在实施例中,可以使用openid连接来执行认证。
74.在实施例中,在客户端vcc1能够消耗vcp的资源之前,它获取用于标识请求方的访问令牌。为每个vcp获取访问令牌,因为对于所有vcp使用相同的令牌将允许vcp模拟客户端。
75.利用访问令牌,可以准许客户端通过向vcp提交包括相应访问令牌的请求来消耗分布式数据处理服务30 vc资源。在实施例中,资源由ods(存储)、mpc服务(mpc功能的调用)和cds服务(密码原语存储)暴露。
76.在实施例中,可以使用例如启动和下载对象的不同操作来访问每个资源。为了做出访问决策,生成由元组(用户、资源、操作)组成的访问控制列表(acl)。这样的元组的存在意味着请求客户端对资源的操作是允许的。当然,在不失一般性的情况下,也可以使用其他访问控制机制(例如oauth2)。此外,在实施例中,可以采用基于角色的访问控制或基于属性的访问控制。
77.在实施例中,访问控制决策由个体vcp自行决定。在这种情况下,不存在明确的共识机制。然而,存在隐含的问题,例如,作为客户端,仅在被授权从所有的vcp获取秘密共享的情况下才能够重建秘密,或者仅当它可以触发在所有vcp上的执行时才执行功能。这可以在另一个实施例中通过利用分布式分类账来实现。在实施例中,与spdz mpc协议组合的byzantine容错分类账容许最大1/3的方不诚实。在该情况下,尽管只要存在至少一个诚实的方,spdz就保证安全性,但只要多于1/3的方(= vcp)被破坏,这就无关紧要了。
78.根据实施例,假定至少第一和第二计算引擎中的至少一个保持未受损,则用于执行安全多方计算的分布式数据处理服务30保证第一私有输入数据对第一客户端是机密的,并且第二私有输入数据对第二客户端是机密的。
79.在实施例中,输入数据的第一和第二项是从通信地耦合到分布式数据处理服务30的相应的第一vcc1和第二vcc2客户端获得的。例如,在拍卖计算中,分别从第一和第二客户端获得两个拍卖值。拍卖功能由第一和第二多方计算引擎协作执行,并且拍卖的赢家或输家被报告给第一和第二客户端,而不向第一和第二客户端中的每一个暴露相互对立的客户端的出价是多少。
80.在实施例中,从第一对象存储引擎ose1的持久数据记录获得输入数据的至少一个项。换言之,每个计算引擎vcp都从通信地耦合到分布式数据处理服务30的客户端vcc接收输入不是必须的。私有输入数据也可以从分布式数据处理服务30的对象存储服务oss获得。
81.在实施例中,从多个对象存储引擎ose1、ose2的多个持久数据记录获得来自多个客户端vcc1、vcc2的多个输入数据项的多方计算。
82.在实施例中,私有输入数据可以从分布式数据处理服务30内部或外部的数据库(未图示)获得。例如,至少一个客户端vcc可以向数据库的记录传送查找位置,并且然后数据库提供包含在记录中的数据作为私有输入数据。
83.图3示意性地图示了包括两个虚拟云提供商的示例性分布式数据处理服务的概览。
84.每个vc服务由每个vcp提供的并行本地服务集联合(并行)实现。每个本地vcp使用容器编排器(kubernetes(tm))、服务网格32(istio(tm))和无服务器计算运行时(knative(tm))来实现。这使得vcp 1和vcp 2提供的分布式数据处理服务能够独立扩展。附加地,可以复制服务来提供容错。
85.建立202分布式数据处理服务30涉及通过将至少vcp1绑定到vcp2以及反之将vcp2绑定到vcp1来建立虚拟云。
86.在实施例中,安全多方计算的服务调用是从至少第一和第二客户端获得的,其中服务调用包括私有输入数据的至少第一和第二项。例如,服务调用包括密码数据存储cds中元素的对象标识符。替代地,或者另外,服务调用可以源自分布式数据处理服务30内的第一vcp1或第二vcp1计算引擎。在实施例中,服务调用源自至少一个多方计算引擎mpc1、mpc 2。
[0087] vcp1和vcp2使用密码机制(诸如同态加密或不经意传输)预生成提供相关随机性的密码原语。相关随机性随后被用于使能在多方计算引擎mpc1、2和对象存储引擎ose 1、2之间的安全和快速的i/o操作。
[0088]
随后,客户端向vc注册并授权,以获得调用vc提供的服务(诸如私有数据的上传或下载)的资格,并触发计算。
[0089]
在实施例中,密码生成服务cgs1、2被配置为监视密码数据存储服务cds1、2,以监视至少一个类型的密码原语的可用性。密码生成服务cgs1、2被配置为生成至少一个类型的密码原语,并将其存储在密码数据存储服务中。
[0090]
第一客户端vcc1可以从第一对象存储引擎ose1存储或读取私有数据。第一对象存储引擎ose1被配置为从密码数据存储服务cds1获得输入掩码。第一客户端c1可以通过向多方计算引擎mpc1发信号来触发执行。第一多方计算引擎mpc1与从对象存储引擎ose1获得对
象数据同步地从密码数据存储cds1读取密码原语。第一多方计算引擎mpc1与vcp2中的第二多方计算引擎mpc2通信,使得mpc2中的类似计算能够同步。在实施例中,在计算结束时,mpc1和mpc2将它们相应的结果写入相应的对象存储引擎ose1和ose2。在实施例中,在计算结束时,包含计算结果的ose对象的标识符被传送给触发多方计算的一个或多个客户端。在实施例中,在计算结束时,计算的结果被传送给触发多方计算的一个或多个客户端。随后,计算的私有结果被传送给相应的客户端c1和c2。
[0091]
在实施例中,对象以共享秘密的形式存储在第一和第二对象存储引擎ose1、2中。在示例中,存储在第一和第二对象存储引擎ose1、2中的对象是不可变的,但是可以使用公共标签进行注释。
[0092]
在示例中,私有结果存储在对象存储引擎ose1、2内。在示例中,在使用mpc1、2进行计算之后,私有结果被直接返回给相应的客户端。
[0093]
分布式数据处理服务图4示意性地图示了分布式数据处理服务30。
[0094]
在图4中,使用“微服务”设计模式图示了分布式数据处理服务30。命令行接口52与对象存储服务的第一边缘客户端53、分布式多方计算服务的第二边缘客户端54和分布式密码数据存储服务的第三边缘客户端55对接。可选地,使用rest/https接口来执行边缘客户端和包括第一计算引擎vcp1和第二计算引擎vcp2的虚拟云vc之间的接口。可选地,vcp1和vcp2是kubernetes(tm)容器。可选地,在云侧的通信接口56a、56b包括istio服务。
[0095]
第一计算引擎vcp1包括分布式多方计算服务(mcs)的实例,使用例如rest/https接口通信地耦合到分布式密码数据存储服务cds和分布式对象存储服务oss,尽管也可以使用其他信令格式。分布式密码数据存储服务cds通信地耦合到分布式密码生成服务,也可选地使用rest/https接口。类似的通信连接可选地经由跨vcp api在云vcp内进行到第二计算引擎vcp2。当然,图4中图示的微服务可以可选地依赖于诸如rdbms、k/v和安全凭证存储之类的附加服务,为了清楚起见,已经省略了所述附加服务。
[0096]
根据实施例,建立202分布式数据处理服务包括实例化包括至少第一和第二计算引擎的虚拟云,和/或将至少第二计算引擎绑定到第一计算引擎包括建立和交换初始密码原语以在至少第一和第二计算引擎之间建立至少一个认证的通信信道,其中初始密码原语可选地包括一个或多个同态密钥或共享消息认证码mac密钥。
[0097]
例如,可以通过交换用于认证vcp间通信信道的公钥证书来建立至少一个认证的通信信道。
[0098]
更详细地,分布式数据处理服务30的对象存储服务被配置为将虚拟云vc内的数据作为秘密共享保存在所有虚拟云提供商vcp(计算引擎)之上。在实施例中,对象存储服务与分布式密码数据存储服务集成,以实现用于安全数据上传和/或下载的专用密码协议。
[0099]
在实施例中,对象存储服务提供用于存储任意大小的任意数量的对象的手段。在实施例中,对象存储服务允许元数据被附接到存储在其中的对象。可选地,元数据对象可以以非共享明文形式存储。元数据可以使用由密钥/值对构成的标签附接到对象。标签可以用于对象的服务器侧过滤。可选地,标签以明文存储,并且因此不是秘密共享的,但是仍然在分布式数据处理服务30(虚拟云)内包括的每个vcp之间复制。可选地,如果标签在vcp之间不一致,则在为对象获取标签时将其省略。可选地,标签数据存储在sql数据库中。
[0100]
对象存储服务被配置为加密静态数据,并且此外被配置为实现安全的数据上传和下载协议。在实施例中,对象存储服务暴露可以由https上的分布式数据处理服务30的客户端使用的rest api。
[0101]
秘密共享的安全上传和下载需要使用协议来确保vcp(计算引擎)不能导出关于上传或下载的秘密的信息。因此,在实施例中,对象存储服务被配置为每当执行秘密共享上传或下载时连接到分布式密码数据存储服务。
[0102]
更详细地,分布式密码数据存储服务是专门的存储服务,用于先前由分布式密码生成服务生成的称为元组的相关随机密码材料(原语)。
[0103]
在实施例中,当执行安全对象上传或下载时,密码原语(诸如元组)随后被分布式对象存储服务消耗。当执行多方计算时,也消耗密码原语。
[0104]
在实施例中,密码数据存储引擎的主cds1被配置为根据主/从方法跨所有计算引擎vcp之上执行在线协调。当在涉及密码原语的情况下执行操作时,分布式密码数据存储服务被配置为将对应的密码原语共享递送给请求服务。
[0105]
在实施例中,分布式密码数据存储服务被配置为以任意大小的批量递送密码原语。在该实施例中,其他服务被配置为获取分布式数据处理服务中的至少第一vcp1和第二vcp1计算引擎之间的特定协调动作的相关密码原语(诸如相关三元组)。
[0106]
在实施例中,分布式密码数据存储服务暴露密码原语遥测数据,诸如一个类型的密码原语的当前可用性和一个类型的密码原语的当前消耗率。其他服务可以读取密码原语遥测数据。可选地,如果多方计算服务标识出不存在足够的特定类型的密码原语来成功地开始或完成给定的多方计算,则多方计算服务将等待预定的时间段,并向分布式密码生成服务发送信号以生成所需类型的更多密码原语。可选地,如果多方计算服务标识出不存在足够的特定类型的密码原语来成功地开始或完成给定的多方计算,则多方计算服务被配置为中止计算。
[0107]
在实施例中,分布式密码数据存储服务在密码原语静止时对其进行加密。在实施例中,分布式密码数据存储服务被配置为同时向两个、直到五个、直到十个、直到五十个、直到一百个或任意数量的处理器核递送密码原语。
[0108]
根据实施例,用于执行函数的安全多方计算的分布式数据处理服务应用spdz协议中的一项,特别是fresco实现或scale mamba实现。
[0109]
根据实施例,提供分布式密码生成服务、分布式密码数据存储服务、分布式对象存储服务和分布式安全多方计算服务中的每一个的部分的至少第一和第二计算引擎使用基于容器编排的服务来实现,该基于容器编排的服务可选地包括kubernetes(tm)、mesos(tm)或docker swarm(tm)。
[0110]
分布式发现协议图5示意性地图示了三个vcp之间的mpc计算协议的示例,尽管该协议也在两个或更多vcp的情况下起作用。
[0111]
根据实施例,进一步提供了在建立分布式数据处理服务之后执行发现过程,其中发现过程包括:-经由第一多方计算引擎mpc1编排发现协议,以标识虚拟云中至少第二多方计算引擎mpc2的存在以及第二计算引擎和/或第二多方计算引擎的通信端点标识符;-建立通信信道,以将第一多方计算引擎(mpc1)通信地耦合到至少第二多方计算引擎mpc2和-经由第一多方计算引擎,使用在通信信道上通信的至少第一和第二多方计算引擎来编排安全多方计算。
[0112]
例如,参与计算的所有vcp mpc服务都将他们自己注册为被称为“游戏”的mpc执行的“玩家”。在该游戏中,vcp1扮演主角色。vcp2和vcpn扮演从角色。
[0113]
在第一阶段40中,玩家向他们在网络设立阶段中可用的对应网络端点注册他们自己(信号“新玩家”)。
[0114]
在实施例中,网络设立阶段由istio虚拟服务执行。istio虚拟服务提供商向网络暴露多方计算引擎端点。一旦n vcp vc中的所有n个vcp都注册了,主就宣布所有玩家都准备好(信号“玩家准备好”)。端点标识符可以是例如通过例如网络地址和端口号所限定的tcp套接字。然而,可以使用能够标识vcp的任何其他地址格式。
[0115]
在第二阶段42中,执行相互可达性检查。特别是,这是必要的,因为vcp1、vcp2和vcpn的mpc引擎是异步启动的,并且如果其他方不可达,则将失败。在示例中,相互可达性检查可以包括基于tcp的“ping”协议。一旦向伙伴玩家发送tcp“ping”的所有方都接收到了对应的“pong”消息(“tcpchecksuccess”),就可以认为所有玩家之间的相互网络连接已经被验证。
[0116]
在游戏执行阶段44中,主vcp1宣布游戏准备好执行(发信号通知“gameready(游戏准备好)”)。mpc引擎执行mpc计算的执行。在对应vcp中的mpc程序的每次成功终止之后,相应的vcp向主vcp1发信号通知信号“playersuccess(玩家成功)”。在示例中,“playersuccess”信号暗示多方计算已经在没有安全损害的情况下被执行,否则这将使用spdz算法被标识。
[0117]
然后,主向分布式数据处理服务30宣布“gamesuccess(游戏成功)”,发信号通知游戏成功执行。在实施例中,网络设立可以保持活动,以便在后续执行期间重新使用,从而减少重复的mpc计算中的信令开销。
[0118]
分布式密码生成服务(cgs)图6示意性地图示了使用“微服务”设计模式的分布式密码生成服务cgs的示例。
[0119]
分布式密码生成服务cgs的目的是与至少第一vcp1和第二vcp2计算引擎(虚拟云提供商)协作,安全地生成具有相关随机性的密码原语(例如,乘法三元组或输入掩码),并将它们提供给分布式密码数据存储服务cds,以供分布式对象存储服务oss(当读取和写入去往或来自vcp的服务网格或分布式多方计算服务mcs数据时)随后消耗。当cgs生成了密码原语时,应该将其上传到cgs。cgs至少能够生成采用秘密共享的spdz协议所需的所有不同类型的三元组。
[0120]
根据实施例,进一步提供了:-经由分布式密码生成服务的负载监视器,监视分布式密码生成服务、分布式密码数据存储服务、分布式对象存储服务和分布式安全多方计算中的一个或多个上的当前或预期的计算负载;-如果负载监视器确定当前或预期的计算负载超过或将超过上负载阈值:-适当时,指令容器编排器增加提供分布式密码生成服务、分布式密码数据存储服
务、分布式对象存储服务和分布式安全多方计算中的一个或多个的容器的数量;和/或-如果负载监视器确定当前或预期的计算负载落入下负载阈值以下或将落入下负载阈值以下:-适当时,指令容器编排器减少提供分布式密码生成服务、分布式密码数据存储服务、分布式对象存储服务和分布式安全多方计算中的一个或多个的容器的数量。
[0121]
在实施例中,cgs包括控制器实例62。
[0122]
cgs被配置为执行密码原语生成作业(或元组生成作业)。这样的作业描述了应该生成什么密码原语类型以及以什么数量生成。每个作业都具有唯一标识符。作业的大小可以相等,以允许生成器65a、65n取决于作业队列长度被缩放一个数字。可选地,作业由控制器实例62创建,并由生成器65a、65n消耗。
[0123]
控制器实例62负责控制cgs的生成器65a、65n。在示例中,作业由控制器实例62添加到队列,并由生成器65a、65n以fifo的次序从队列移除,尽管也可以应用其他方案。在虚拟云环境中,第一计算引擎vcp1上的控制器62的一个本地实例被配置成主实例。将密码生成作业添加到贯穿虚拟云中的队列的过程(例如,在诸如第二计算引擎vcp2的从属vcp中)是由主实例执行的,因此需要本地密码引擎的本地控制实例之间的控制通信。
[0124]
在示例中,被配置成主机的计算引擎vcp1的密码引擎cgs的控制器实例62周期性地获得分布式密码数据存储服务中的可用密码原语的级别。可选地,主控制器实例62周期性地获取密码原语的提取率。可选地,跨一个或多个元组类型的提取率和/或可用密码原语的级别。主控制器实例62的生成器功能返回将被添加到fifo的密码原语生成作业集。可选地,主控制器实例62遵循预定的密码原语生成策略。可选地,作业队列存储在数据库64b中,使能复制主控制器实例62以改进容错性。在示例中,在主控制器实例62已经计算出将被添加到作业队列的作业之后,主控制器实例62在虚拟云内的密码引擎的从控制实例上发起一致的队列更新。
[0125]
在该示例中,主控制器实例62被配置为为新创建的作业选择唯一标识符。唯一标识符跨虚拟云之上传播。该标识符用作块标识符,用于标识根据给定作业生成的密码原语,以便稍后通过虚拟云上传到密码数据存储服务。
[0126]
如果cgs经由连接到cgs的遥测api 60检测到在cgs中已经达到给定密码原语类型的密码原语的上限,则cgs暂停密码原语的生成。
[0127]
在实施例中,本地vcp cgs服务的mac密钥共享用于生成密码原语。
[0128]
根据实施例,进一步提供了:-经由分布式密码生成服务生成多个第一类型的密码原语和多个第二类型的密码原语,其中所述类型可选地选自以下各项的组:输入掩码、乘法三元组、beaver三元组、随机位和/或平方三元组。
[0129]
在实施例中,cgs自动适配对于密码原语的不同需求,以确保在mcs中的mpc例程的执行不由于缺少密码原语而受阻。在实施例中,cgs专门用于在mpc例程的离线阶段中生成密码原语,诸如spdz算法。
[0130]
在实施例中,上述负载监视步骤由控制器实例62执行。在实施例中,cgs包括作业队列api 64a和相关联的作业队列数据库64b。在实施例中,cgs包括一个或多个密码引擎65a、65n。可选地,密码引擎的数量基于作业队列的长度进行缩放。
[0131]
在实施例中,cgs与远程密码引擎通信61。在实施例中,cgs与远程计算引擎vcp2通信63。
[0132]
分布式密码数据存储服务图7示意性地图示了分布式密码数据存储服务70 cds的示例。
[0133]
在示例中,分布式密码数据存储服务70暴露了可以由https上的客户端消耗的restful api。该api为各种密码原语类型提供rest资源。
[0134]
在示例中,分布式密码数据存储服务70经由客户端api 72可访问。应该跨虚拟云vc中的分布式密码数据存储服务来协调密码原语递送,以确保一致性。为了实现此,一个密码数据存储cds1被指定为主。主服务负责选择将递送给请求方(如连接到vcp的客户端)或分布式多方计算服务的密码原语。密码原语的递送是多步骤的过程。
[0135]
最初,主服务cds1选择密码原语(元组)块。在示例中,块可以是三元组序列,因为它们存储在存储后端中。随后,主服务cds1将密码原语序列标记为预留。接下来,预留数据(例如,对象存储位置)被广播到所有从cds服务(如cds2)。在接收到在主cds1中预留的密码原语序列的预留数据之后,至少一个从cds2尝试预留匹配的密码原语。
[0136]
在尝试在所有从服务中预留块成功的情况下,主cds1将密码原语递送给请求服务,并向从服务cds2发信号以进行相同的操作。如果在一个或多个从cds2中,按照主cds1指令预留块的尝试失败,则该过程中止。可选地,该过程可以重试限定的次数。可选地,如果任何重试都不成功,则该过程中止,并向请求方发送错误消息。
[0137]
在实施例中,如果一方请求了与适合单个块的密码原语相比更多的密码原语,则使用相同的过程,其中不同之处在于预留了多个密码原语块。
[0138]
在实施例中,如果一方输入了与适合单个块的密码原语相比更少的密码原语,则该块被补充以标记,该标记指定密码原语块中有多少密码原语已经被预留和/或消耗。
[0139]
在实施例中,存在于第一计算引擎vcp1中的密码原语与存在于第二计算引擎vcp2或分布式数据处理服务中的所有计算引擎中的密码原语之内一致的相同唯一标识符相关联。
[0140]
在实施例中,可以检测到碰撞。换言之,从计算引擎vcp2的cds可能已经包括具有预期标识符的密码原语块。在这种情况下,从计算引擎vcp2的cds中的相关块被可选地丢弃,并且错误消息被可选地递送给请求客户端。
[0141]
密码原语块可选地存储在存储后端74中。在实施例中,存储后端74与aws s3(tm)兼容。替代地,密码原语块可以存储在诸如“minio”(tm)的私有云对象存储服务器中。因此,分布式密码生成服务(cgs)继承了外部云服务的高可用性、持久性和可扩展性。
[0142]
在minio被用作存储密码原语块的后端的情况下,分布式密码数据存储服务(cds)可以应用诸如擦除编码和/或更好的检测之类的质量以便密码原语块的持久性。替代地,诸如谷歌云存储(tm)或azure blob存储(tm)的公共云对象存储可以用作存储后端。
[0143]
在实施例中,至少一个密码数据存储cds1包括负载监视器,该负载监视器被配置为基于当前或预期的需求来增加或减少对密码数据存储服务cds可用的计算实例的数量。
[0144]
根据实施例,进一步提供了:-在由第一计算引擎管理的第一密码引擎处,监视分别存储在至少第一和第二密码数据存储中的密码原语的级别;-在第一密码引擎处,基于跨至少第一和第二密码数据存储之上存储的密码原语的级别,生成一个或多个密码原语生成时间表;-将所述一个或多个密码原语生成时间表分发到至少第二密码引擎;和-根据所述一个或多个密码原语生成时间表,使用第一密码引擎与使用第二密码引擎的第二多个密码原语同步地生成第一多个密码原语。
[0145]
分布式密码生成服务(cgs)包括遥测服务76,该遥测服务76被配置为向分布式密码生成服务cgs传输关于密码原语的剩余数量(可选地,每种类型的密码原语,并且包括消耗率)的信息。替代地,分布式密码生成服务cgs监视每个密码数据存储cds1、2

中剩余的密码原语。在实施例中,密码原语被生成并上传到分布式密码数据存储服务(cds)。
[0146]
密码原语分发对于需要密码原语(元组)的任何操作,如秘密共享、上传和下载秘密或执行mpc操作,由相应的多个vcp支持的密码数据存储服务cds需要将由密码生成服务cgs生成的对应元组共享递送给请求服务。
[0147]
在实施例中,cds使用主/从方法跨所有vcp执行在线协调。元组存储为跨虚拟云(vc)中所有虚拟云提供商(vcp)之上的秘密共享(在下文中也称为元组共享)。在cds中,元组共享存储在包含一个到多个元组共享的所谓的“tuplechunk(元组块)”内。cds与其主机vcp的接口是cds客户端。
[0148]
图10示意性地图示了密码原语分发方案的概要。
[0149]
当上传元组共享(新的tuplechunk)集时,持有相同元组集共享的vc的所有vcp中的cds客户端可以在上传到它们的个体cds之前就标识符达成一致。在实施例中,标识符可以是128位uuid类型4的实例,尽管也可以应用其他格式。
[0150]
标识符用于匹配属于跨vcp的相同元组集的分布式tuplechunk,并且因此对于每个相关tuplechunk是相同的,但是在每个单vcp的cds内是唯一的。
[0151]
在接收到tuplechunk供应请求时,每个cds客户端传输标识符、在相应cds客户端中的实际元组共享以及被传输的元组的类型。
[0152]
最初,新接收的tuplechunk以称为非活动的状态存储,这将防止给定块的元组被消耗。
[0153]
为了激活给定的tuplechunk,所有的vcp必须同意每个vcp已经接收到相关元组集的其个体tuplechunk。
[0154]
然后,cds客户端必须发送具有特定id的tuplechunk的状态更新请求,并将状态设置为已激活(例如,通过设置密码原语状态标志),以便使包含的元组共享可用于稍后使用。因此,仅当所有vcp的个体tuplechunk已成功上传时,tuplechunk才被激活。
[0155]
在cds内,tuplechunk的状态与元数据对象中的实际元组共享数据分离存储。该元数据还保存附加信息,诸如存储了哪种类型的元组、在块内存储了多少元组共享、给定tuplechunk中的哪些元组共享已经被使用以及哪些元组共享已经被分配用于将来的使用。
[0156]
当从cds下载元组共享时,每个vcp中的cds执行过程以就请求标识符达成一致,所述请求标识符可选地再次是在本示例性实现中的128位uuid类型4的实例以及将被获取的元组的数量。在该示例中,请求作为http(s)请求被发送到相应的cds服务。
[0157]
vcp被配置为以正确的次序返回对应的元组共享。
[0158]
因此,相关联的主vcp中的cds主被配置为生成“tuplereservation(元组预留)”对象,并且然后作为http(s)请求与从cds实例共享该对象。tuplereservation由与客户端用于初始元组共享请求的标识符相同的标识符来标识。这确保了跨所有vcps之上使用相同的标识符。预留包含关于将为给定请求返回单独存储的tuplechunk的哪些元组共享的信息。然而,仅有激活的tuplechunk将用于此目的。
[0159]
以相同的方式,tuplereservation最初存储为非活动,并且一旦主服务可以成功与所有vcp共享tuplereservation,就被激活。诸如将tuplereservation标记为预留之类的附加的内部措施确保这样的tuplereservation引用的所有元组共享将不被任何其他tuplereservation引用,并且因此可以重新使用。cds客户端必须等待该过程在返回任何元组共享之前在后台发生。在请求的元组共享被发送到客户端之前,存储的tuplechunk的对应区段将被标记为已经在内部消耗。
[0160]
图11示意性地图示了在密码原语分发操作期间的操作序列。尽管为了简单起见,图示了两个计算引擎vcp1和vcp2之间的密码原语分发操作,但是本领域技术人员将领会,密码原语分发操作可以利用三个、四个、五个、六个或更多个vcp参与者来执行。
[0161]
在图11中,作为示例,密码数据存储服务cds1、2被图示为与密码原语共享存储cds1、2 ts、预留存储cds1、2 rs和元数据存储cds1、2 ms对接。本领域技术人员将领会,这是可以应用的许多存储架构中的一个存储架构。现在将参考图11描述第一和第二计算引擎vcp1、vcp2之间的典型密码原语共享操作(秘密共享操作)。
[0162]
最初,在步骤120,相应的第一和第二计算引擎vcp1、vcp2中的第一和第二cds客户端就唯一的请求标识符达成一致。在第一个选项中,客户端位于vcp外部,诸如包含在智能电话vcc1或边缘云 vcc2中。在第一种情况下,两个客户端都是从相同的呼叫者联系的,可以约定公共标识符。在第二种情况下,多个客户端被认为是在vcp内。在这种情况下,标识符是从需要元组的执行的标识符导出的。
[0163]
在步骤122,第一计算引擎vcp1中的cds客户端从充当主机的第一计算引擎vcp1的第一密码数据存储cgs1发出元组请求。
[0164]
在步骤124,密码数据存储cds1更新元数据存储器cds1 ms,并将所请求的区段标记为预留。
[0165]
在步骤126,密码数据存储cds1将预留存储在预留存储cds1 rs中。
[0166]
在步骤128,第一计算引擎vcp1的密码数据存储cds1与第二计算引擎vcp2的密码数据存储cds2共享预留。
[0167]
在步骤130,第二密码数据存储cds2将预留存储在第二计算引擎vcp2的预留存储cds2 rs中。
[0168]
在步骤132,第二计算引擎vcp2的密码数据存储cds2向第一计算引擎vcp1的密码数据存储cds1传输预留确认。
[0169]
在步骤134,第一密码数据存储cds1从第一计算引擎的密码原语共享存储cds1 ts获取密码原语共享。
[0170]
在步骤136,第一密码数据存储cds1更新元数据存储cds1 ms,并将密码原语标记为已经被消耗。
[0171]
在步骤138,第一密码数据存储cds1将密码原语共享发送到第一计算引擎vcp1的
cds客户端。
[0172]
在步骤140,第二计算引擎vcp2的cds客户端从第二计算引擎cds2的密码数据存储cds2请求密码原语。
[0173]
在步骤142,第二计算引擎vcp2的密码数据存储cds2从第二计算引擎vcp2的预留存储cds2 rs获取预留。
[0174]
在步骤144,第二计算引擎vcp2的密码数据存储cds2从第二计算引擎vcp2的密码原语数据存储cds2获取密码原语共享。
[0175]
在步骤146,第二计算引擎vcp2的密码数据存储cds2更新第二元数据存储cds2 ms中的元数据,以将对应的密码原语标记为已经被消耗。
[0176]
在步骤148,第二计算引擎vcp2的密码数据存储cds2向第二计算引擎vcp2的cds客户端发送密码原语共享。
[0177]
图12示意性地图示了在密码原语分发操作期间计算引擎之间的信令。
[0178]
图13示意性地图示了在密码原语分发操作期间计算引擎之间的信令。
[0179]
因此,在实施例中,根据第一方面的计算机实现的方法200进一步包括通过以下各项跨分布式数据处理服务30供应密码原语集:-从第一计算引擎vcp1向至少第二计算引擎vcp2传输密码原语块供应请求;-在第一计算引擎vcp1和至少第二计算引擎vcp2之间就密码原语标识符达成一致;该密码原语标识符标识跨至少第一计算引擎vcp1和至少第二计算引擎vcp2之上的共享密码原语;-在至少第一和第二计算引擎之间发送用于具有特定密码原语标识符的密码原语块的状态更新请求;和-将密码原语块的状态标志设置为激活状态,以便使包含的元组共享可用于后续使用。
[0180]
根据另外的实施例,计算机实现的方法进一步包括通过以下各项使用密码原语:-从第一计算引擎vcp1向至少第二计算引擎vcp2传输密码原语预留请求;-将密码原语预留所引用的第二计算引擎vcp2的密码数据存储cds中的密码原语标记为预留;-当第一计算引擎vcp1确定密码原语预留已经与至少第二计算引擎vcp2成功共享时,在第一和第二计算引擎中激活由密码原语预留所引用的密码原语;和-一旦所请求的密码原语已经被发送到第一计算引擎vcp1,就将第二计算引擎vcp2中的对应密码原语标记为已消耗。
[0181]
分布式对象存储服务(oss)图8示意性地图示了分布式对象存储服务的示例。
[0182]
分布式对象存储服务经由分布式对象存储api 80暴露给分布式数据处理服务30的剩余部分。分布式对象存储api 80提供用于存储任何数量的任意大小的对象的服务,并且使能将元数据(可选地以明文)附接到对象。服务对静态存储的数据加密,并实现安全的数据上传和下载协议。
[0183]
由于安全多方计算的分布式性质,所有对象存储引擎ose 1、2应该可用,以使能分布式对象存储api 80的可用性。
[0184]
在每个本地计算引擎vcp1中,对象存储服务oss依赖于对象存储引擎ose1。对象存储引擎ose1尤其组织对由分布式多方计算服务mcs操作的多方竞争算法所需的秘密共享的存储。因此,对象存储引擎ose1与存储后端82交互,存储后端82能够与上面讨论的与cds的存储后端74相关的服务之一交互。
[0185]
在实施例中,给定计算引擎vcp1中的每个对象存储引擎ose1通信地耦合到数据库84,该数据库84被配置为在存储后端74中存储与秘密共享相关联的元数据。可选地,存储在数据库84中的数据是纯文本。
[0186]
在实施例中,给定计算引擎vcp1中的每个对象存储引擎ose1能够从相应的本地密码数据存储cds1获得输入掩码。在实施例中,作为秘密共享协议的部分,对象存储引擎ose1将从本地密码数据存储cds1获得的输入掩码应用于存储在cds的存储后端74中的数据。
[0187]
多方计算服务(mcs)图9示意性地图示了多方计算服务的示例。
[0188]
多方计算服务经由多方计算客户端90对分布式数据处理服务30可用。多方计算客户端通信地耦合到虚拟云vc中的所有计算引擎vcp1、2。多方计算客户端90被配置为跨例如作为分布式数据处理服务30(vc)的部分的所有计算引擎vcp1、vcp2的kubernetes(tm)api服务器之上分派api调用。
[0189]
在实施例中,对于每个多方计算功能,客户端生成唯一的执行标识符。唯一的执行标识符可以用于关联跨每个计算引擎vcp1、vcp2之上的执行。
[0190]
多方计算引擎的主要组件是网络控制器91、发现服务92和功能容器93。辅助组件由诸如(可选地使用kubernetes实现的)容器编排器94之类的底层技术提供。此外,每个多方计算引擎包括用于执行计算机操作的无服务器引擎95。在实施例中,服务引擎95使用knative来实现。
[0191]
在实施例中,功能容器由能够向服务引擎95返回度量98(诸如计算队列长度)的队列监视器97监视。
[0192]
功能容器93被配置为执行安全多方计算。它接受一个或多个输入参数,从对象存储服务oss获取和写入一个或多个秘密共享,编译安全多方计算的源代码(它限定了将被执行的精确计算),从对象存储服务oss获得秘密共享:实施例,功能容器93暴露了通信点(诸如http端点),该通信点(诸如http端点)使能触发包含在功能容器93内的mpc程序的执行。在实施例中,容器的实例作为由服务引擎95(诸如knative(tm))创建的“功能吊舱(function pod)”启动。吊舱的数量由服务引擎95的自动缩放100控制。在实施例中,吊舱可以跨几个请求之上保持活动,在这种情况下,减少了功能调用等待时间。
[0193]
功能容器被配置为接收用户提供的多方计算程序。在一个实现中,功能容器的实例被初始化为由服务引擎95创建的功能吊舱99的部分。
[0194]
在实施例中,吊舱的数量由服务引擎95中的自动缩放器100控制。在实施例中,服务引擎95被配置为响应于来自队列监视器97的队列在预定阈值以上的指示,增加执行安全多方计算的功能吊舱99的数量。在实施例中,服务引擎95被配置为响应于来自队列监视器97的队列在预定阈值以下的指示,减少执行安全多方计算的功能吊舱99的数量。
[0195]
网络控制器服务91表示能够管理网络定制资源限定的编排控制器(诸如kubernetes (tm)控制器)。在一个示例中,网络控制器服务91可以与istio服务96交互,以
打开端口并允许玩家之间的网络流量。
[0196]
在实施例中,mpc服务暴露了用于使用分布式数据处理服务30(vc)跨所有玩家执行多方计算协议的tcp端点101。在实施例中,网络控制器服务91被配置为暴露端口范围,以使能跨随后的功能吊舱特定的tcp端口进行访问。
[0197]
发现服务92被配置为协调去往安全多方计算的“主”vpc和“从”vcp之间的计算步骤,并配置使得去往安全多方计算的各方之间能够通信所必需的各种网络参数。例如,发现服务92可以执行如图5中图示的vc游戏执行协议。
[0198]
例如,发现服务92贯穿分布式数据处理服务30(vc)中收集和分发玩家端点信息。发现服务92可以暴露https端点105。给定功能吊舱93的tcp端点信息向发现服务92注册。一旦从其他计算引擎(vcp2)接收到给定执行的注册,发现服务92就接收给定执行的所有注册玩家的端点列表。
[0199]
在执行给定功能吊舱93内的多方计算的计算之前,从分布式密码数据存储服务cds获得相关随机性(诸如beaver三元组或其他密码原语202)。从cds获得的密码原语的类型和数量可以例如由服务引擎95指定。在实施例中,使用与至少一个mpc计算重叠的流式处理来获得相关随机性,以减少执行等待时间。
[0200]
包含在功能吊舱93内的多方计算可以经由i/o功能103读取和写入到对象存储服务oss。
[0201]
在实施例中,分布式多方计算服务的服务引擎95被配置为分析第一或第二计算引擎中的一个或多个的未决工作负荷。如果服务引擎95发现未决工作负载将超过预定的i/o接口使用阈值,则服务引擎95被配置为使得引起一个或多个附加容器来支持分布式对象存储服务。
[0202]
在实施例中,分布式多方计算服务的服务引擎95被配置为分析第一或第二计算引擎中的一个或多个的未决工作负荷。如果服务引擎95发现未决工作负载将超过预定的使用阈值,则服务引擎95被配置为使得引起一个或多个附加容器来支持分布式密码数据存储服务、分布式多方计算服务和/或分布式密码数据存储服务。
[0203]
在实施例中,至少一个多方计算引擎mpc1包括负载监视器,该负载监视器被配置为基于当前或预期的需求来增加或减少对多方计算服务可用的计算实例的数量。
[0204]
执行标识符当客户端在vc中发送mpc程序的服务调用时,它向每个vcp的多方计算服务发送消息,例如http(s)请求。这些服务调用各自包括执行标识符。在实施例中,标识符可以是128位uuid类型4的实例,尽管也可以使用其他标识类型。
[0205]
从足够大的潜在值空间随机采样标识符,以保持低碰撞风险。
[0206]
在由每个计算引擎vcp1、vcp2托管的mpc服务已经接收到请求之后,它们使用执行标识符来确保mpc引擎可以学习哪些远程计算引擎(在给定的时间,可以存在至少两个活动的mpc,用于服务各种客户端请求)。在实施例中,mpc引擎可以合作。为了该目的,使用了类似于先前概览的分布式发现服务(dds)。dds可选地由每个vpc的mpc协调,尽管这不是必须的。每个mpc服务实例都向dds注册自己。
[0207]
当dds从给定执行标识符的vcp中的所有vcp接收到所有注册时,它向所有vcp广播所有注册的列表。在具有该可用的信息的情况下(并且在每个vcp中的服务网格被相应地配
置之后),多方计算服务mpc引擎可以建立用于执行mpc协议的相互连接。
[0208]
在实施例中,执行标识符还用于从相应vcp的密码数据存储导出用于获取所需离线密码原语(元组)的标识符。
[0209]
在实施例中,执行标识符还用于为由给定vcp上的多方计算服务生成的任何输出对象进行导出。为了生成标识符来询问对象数据存储,利用了所有的mpc执行是跨vcp同步执行的事实(因为乘法需要mpc方之间的同步通信)。
[0210]
因此,多个输出指令跨每个vcp之上用相同的次序。
[0211]
换言之,连续的数字被分配给跨所有vcp之上一致的计算的n个输出。对象存储对象标识符是使用映射函数导出的。
[0212]
在实施例中,在vcp外部的客户端vcc1可以通过向vc内的vcp的对象存储服务请求具有标识符的对象来获取具有执行标识符eid的计算的第i个结果的秘密共享。相同的通信原理被用于在多方计算服务的程序执行期间从密码数据存储cds请求一致的元组块以供消耗。
[0213]
系统图1a示意性地图示了根据第二方面的用于提供分布式数据处理服务的系统。
[0214]
根据第二方面,提供了一种用于提供分布式数据处理服务30 vc的系统10,用于对私有输入数据的至少第一项x1和第二项x2执行函数的安全多方计算,包括:-至少第一vcc1和第二vcc2客户端终端;-至少第一vcp1和第二vcp2计算引擎;和-通信网络11,被配置为通信地耦合至少第一vcc1和第二vcc2客户端终端以及至少第一vcp1和第二vcp2计算引擎。
[0215]
至少第一vcp1和第二vcp2计算引擎被配置为建立绑定18以提供分布式数据处理服务vc。
[0216]
至少第一vcp1和第二vcp2计算引擎包括第一和第二密码引擎,第一和第二密码引擎被配置为提供分布式密码生成服务,该分布式密码生成服务被配置为提供在安全多方计算的在线阶段期间所需的多个密码原语。
[0217]
在安全多方计算之前的离线阶段期间生成一部分密码原语,并且多个密码原语由分布式密码数据存储服务cds存储,该分布式密码数据存储服务cds由相应的第一和第二计算引擎管理的对应的至少第一和第二密码数据存储cds1、2提供。
[0218]
分布式数据处理服务30被配置为获得安全多方计算的服务调用以及私有输入数据的至少第一和第二项。
[0219]
第一vcp1和第二vcp2计算引擎被配置为使用分布式数据处理服务的分布式对象存储服务来存储私有输入数据的至少第一和第二项,该分布式对象存储服务通过由对应的第一和第二计算引擎管理的至少第一和第二对象存储引擎提供。
[0220]
第一和第二计算引擎被配置为在在线阶段期间,使用由对应的第一和第二计算引擎管理的第一和第二多方计算引擎提供的分布式数据处理服务的分布式多方计算服务对私有输入数据的至少第一和第二项执行分布式安全多方计算,其中第一多方计算引擎与至少第二多方计算引擎一起执行安全多方计算的一部分。
[0221]
该系统进一步被配置为经由分布式对象存储服务存储安全多方计算的至少一个
结果,和/或向至少第一或第二客户端输出该至少一个结果。
[0222]
根据第三方面,提供了一种第一计算引擎的计算机实现的方法,该方法用于协调分布式数据处理服务,以使用经由通信网络通信地耦合的至少第一和第二计算引擎对私有输入数据的至少第一和第二项执行函数的安全多方计算,该方法包括:-通过与至少第二计算引擎通信,通过将至少第二计算引擎绑定到第一计算引擎来建立分布式数据处理服务;-使用由第一计算引擎管理的第一密码引擎生成第一计算引擎在安全多方计算的在线阶段期间所需的第一多个密码原语,其中在安全多方计算之前的离线阶段期间生成一部分密码原语,并且由第一计算引擎生成的多个密码原语用由相应的第一引擎管理的第一密码数据存储来存储;-由分布式数据处理服务从至少第一客户端获得安全多方计算的服务调用和私有输入数据项;-将私有输入数据项存储在由第一计算引擎管理的第一对象存储引擎中;-在在线阶段期间,使用由对应的第一和第二计算引擎管理的第一和第二多方计算引擎提供的分布式数据处理服务的分布式多方计算服务,对私有输入数据的至少第一和第二项执行分布式安全多方计算,其中第一多方计算引擎执行安全多方计算的第一部分;和-经由分布式对象存储服务存储安全多方计算的第一结果,和/或向第一客户端输出至少第一结果。
[0223]
根据第四方面,提供了一种用于参与分布式数据处理服务的第二计算引擎的计算机实现的方法,所述分布式数据处理服务用于使用经由通信网络通信地耦合的至少第一和第二计算引擎对私有输入数据的至少第一和第二项执行函数的安全多方计算,该方法包括:-从第一计算引擎接收绑定到第一计算引擎的请求,并且将至少第二计算引擎绑定到第一计算引擎以初始化分布式数据处理服务;-在第一计算引擎的命令下并使用第二计算引擎的第二密码引擎,生成第二计算引擎在安全多方计算的在线阶段期间所需的多个密码原语,其中在安全多方计算之前的离线阶段期间生成一部分密码原语,并且由第二计算引擎生成的第二多个密码原语用由第二计算引擎管理的第二密码数据存储来存储;-由分布式数据处理服务从第二客户端获得安全多方计算的服务调用和私有输入数据的另外项;-在由第二计算引擎管理的第二对象存储引擎中存储私有输入数据的另外项;-在在线阶段期间,使用由对应的第一和第二计算引擎管理的第一和第二多方计算引擎提供的分布式数据处理服务的分布式多方计算服务,对私有输入数据的至少第一和第二项执行分布式安全多方计算,其中第二多方计算引擎执行安全多方计算的第二部分;和-经由分布式对象存储服务存储安全多方计算的第二结果,和/或向第二客户端输出第二结果。
[0224]
如上所述,每个秘密共享向每个计算引擎vcp1、vcp2提供每个值的一部分的加密
版本。密码密钥数据包括第一计算引擎vcp1的加密mac密码密钥的共享、公钥pk和私钥sk的共享;其与第一计算引擎vcp1共享。
[0225]
第二计算引擎vcp2包括具有相似数据结构的存储器,除了它存储私有数据的不同集、秘密值共享的不同集以及密码密钥数据中私有密钥和mac密钥的不同共享之外。
[0226]
根据第五方面,提供了一种计算机可读介质或数据信号,其上编码有限定机器可读指令的至少一个计算机程序,所述机器可读指令当由计算机处理器执行时,能够实行(i)根据第一方面的计算机实现的方法或其实施例和/或(ii)根据第三方面的计算机实现的方法和/或(iii)根据第四方面的计算机实现的方法。
[0227]
在示例中,第一vcp1和第二vcp2计算引擎可以是服务器、基于云的服务器、个人计算机或嵌入式计算机。处理发生在一个物理处理器上不是必须的。例如,计算引擎可以跨相同处理器上的多个处理器核或者跨多个不同的处理器或虚拟机来划分处理任务。处理器可以支持可选地在商业云处理服务上提供的kubernetes(tm)服务。
[0228]
更详细地参考第一计算引擎vcp1和/或第二计算引擎vcp2,计算引擎包括可操作地连接到网络接口设备和存储器的处理器。处理器通常是具有一个或多个处理核的中央处理单元(cpu),该一个或多个处理核执行存储在存储器中的程序指令以实现本文描述的实施例。然而,处理器的其他实施例可选地使用不同的处理元件来代替或附加于包括图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp)和被配置为执行本文描述的操作的任何其他数字逻辑器件的cpu。
[0229]
在一些实施例中,处理器实现硬件随机数生成器(rng)或使用软件随机数生成器或伪随机数生成器(prng)来生成随机值,用于向第一和第二密码引擎提供相关随机性。在本文的描述中,对随机值的生成或随机值的使用的任何引用指代rng或prng以从预定数值范围(例如有限域fp)选择的均匀随机的方式生成值的操作。
[0230]
网络接口设备将第一计算引擎vcp1和/或第二计算引擎vcp2连接到诸如局域网(lan)或广域网(wan)之类的数据网络以使能图1的第一计算引擎vcp1和第二计算引擎vcp2之间的通信,并且连接到执行本文描述的过程的附加引擎。
[0231]
网络接口设备的非限制性实施例包括诸如以太网适配器的有线网络设备或诸如无线lan或无线wan网络适配器的无线网络设备。在系统10中,假设通过通信网络11进行的所有数据传输都被第三方对手观察到,该第三方对手可以记录从第一计算引擎vcp1和第二计算引擎vcp2传输的数据的一部分,尽管第一计算引擎vcp1和/或第二计算引擎vcp2可以使用传输层安全(tls)加密和认证信道或防止窃听者观察或变更经由网络11的通信的其他等效通信信道进行通信。
[0232]
存储器包括诸如随机存取存储器(ram)的一个或多个易失性存储器设备和诸如磁盘或固态存储器设备的非易失性存储器设备,其存储程序指令、私有明文数据、密码密钥数据和多方计算的计算结果。
[0233]
虽然已经在附图和前面的描述中详细图示和描述了本公开,但是应当认为它们在性质方面是说明性的,并且不是限制性的。应当理解,仅呈现了优选实施例,并且在本公开精神内的所有改变、修改和另外的应用都期望受到保护。附图中提供的和前述书面描述中描述的示例旨在提供对本说明书原理的理解。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献