安全多方计算的实现方法和装置转让专利

申请号 : CN202010759188.3

文献号 : CN111737011B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谭晋王磊

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书提供一种安全多方计算的实现方法,应用在安全多方计算参与方的代表节点上,所述方法包括:确定本参与方符合安全多方计算协议的密态计算任务;将所述密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算;接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。

权利要求 :

1.一种安全多方计算的实现方法,应用在安全多方计算参与方的代表节点上,所述方法包括:确定本参与方符合安全多方计算协议的密态计算任务;所述安全多方计算协议为同态加密协议;

将所述密态计算任务拆分为至少两个子任务,将子任务采用明文数据分发给至少两个辅助节点进行计算,并将本参与方的同态加密私钥下发给所述至少两个辅助节点;所述子任务包括:采用本参与方的同态加密私钥进行加密运算,得到本子任务的执行结果;所述代表节点与辅助节点属于同一安全域;

接收辅助节点采用明文数据返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。

2.根据权利要求1所述的方法,所述代表节点与辅助节点之间采用信息传递接口MPI来进行子任务的分发和子任务执行结果的返回。

3.根据权利要求1所述的方法,所述代表节点和辅助节点构成树形、心形、或两两相连的计算网格。

4.根据权利要求1所述的方法,所述方法还包括:将所述密态计算任务的计算结果发送给其他参与方。

5.一种安全多方计算的实现装置,应用在安全多方计算参与方的代表节点上,所述装置包括:密态任务确定单元,用于确定本参与方符合安全多方计算协议的密态计算任务;所述安全多方计算协议为同态加密协议;

子任务分发单元,用于将所述密态计算任务拆分为至少两个子任务,将子任务采用明文数据分发给至少两个辅助节点进行计算,并将本参与方的同态加密私钥下发给所述至少两个辅助节点;所述子任务包括:采用本参与方的同态加密私钥进行加密运算,得到本子任务的执行结果;所述代表节点与辅助节点属于同一安全域;

子任务结果合并单元,用于接收辅助节点采用明文数据返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。

6.根据权利要求5所述的装置,所述代表节点与辅助节点之间采用信息传递接口MPI来进行子任务的分发和子任务执行结果的返回。

7.根据权利要求5所述的装置,所述代表节点和辅助节点构成树形、心形、或两两相连的计算网格。

8.根据权利要求5所述的装置,所述装置还包括:密态任务结果发送单元,用于将所述密态计算任务的计算结果发送给其他参与方。

9.一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1到4任意一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1到4任意一项所述的方法。

说明书 :

安全多方计算的实现方法和装置

技术领域

[0001] 本说明书涉及网络通信技术领域,尤其涉及一种安全多方计算的实现方法和装置。

背景技术

[0002] 互联网的普及和移动互联的发展使得生产经营、日常生活都在源源不断的产生数据。海量数据已成为企业的资产,同时由于这些数据中常常包含用户的敏感信息,保护这些数据也成为企业的责任。而有些数据挖掘项目需要以不同企业的数据为基础,在企业参与这样的数据挖掘项目时,要确保己方的原始数据不会泄露。
[0003] 安全多方计算(MPC,Secure Muti-party Computation)针对这种数据孤岛现象提供了一种解决方案,允许多个数据所有者在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其他任何信息。MPC能够让多个数据所有者在保护各自原始数据内容隐私的条件下可以获取所有数据的使用价值。
[0004] MPC的一个重要应用场景是安全的模型训练和预测。在这些应用场景中,通常每个MPC的参与方不仅要提供原始数据,还要负责大量的计算。而某个参与方的计算能力不足,会影响整个模型的训练和预测效率。

发明内容

[0005] 有鉴于此,本说明书提供一种安全多方计算的实现方法,应用在安全多方计算参与方的代表节点上,所述方法包括:
[0006] 确定本参与方符合安全多方计算协议的密态计算任务;
[0007] 将所述密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算;
[0008] 接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。
[0009] 本说明书还提供了一种安全多方计算的实现装置,应用在安全多方计算参与方的代表节点上,所述装置包括:
[0010] 密态任务确定单元,用于确定本参与方符合安全多方计算协议的密态计算任务;
[0011] 子任务分发单元,用于将所述密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算;
[0012] 子任务结果合并单元,用于接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。
[0013] 本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述应用在参与方代表节点上的安全多方计算的实现方法所述的步骤。
[0014] 本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述应用在参与方代表节点上的安全多方计算的实现方法所述的步骤。
[0015] 由以上技术方案可见,本说明书的实施例中,由安全多方计算的参与方的代表节点将本参与方的密态计算任务拆分为两个或两个以上的子任务,并将子任务交由至少两个辅助节点负责计算,在收集各辅助节点的子任务执行结果后,代表节点即可生成本参与方密态计算任务的计算结果,从而能够利用各个辅助节点的计算能力来完成本参与方的密态计算任务,加快了计算速度,提高了密态计算的效率。

附图说明

[0016] 图1是本说明书实施例应用场景的一种网络结构示例图;
[0017] 图2是本说明书实施例中一种应用在参与方代表节点上的安全多方计算的实现方法的流程图;
[0018] 图3是本说明书应用示例中一种参与方代表节点、辅助节点的结构示意图;
[0019] 图4是运行本说明书实施例的设备的一种硬件结构图;
[0020] 图5是本说明书实施例中一种应用在参与方代表节点上的安全多方计算的实现装置的逻辑结构图。

具体实施方式

[0021] 本说明书的实施例提出一种新的安全多方计算的实现方法,在安全多方计算参与方的代表节点确定本参与方的密态计算任务后,将该密态计算任务拆分为两个或更多的子任务发送给辅助节点,辅助节点在完成子任务执行后将执行结果返回给代表节点,代表节点由各个辅助节点的执行结果得到本参与方密态计算任务的计算结果,从而将本参与方的计算性能由代表节点的性能扩展为代表节点与所有辅助节点的性能总和,极大的加快了计算速度,提高了密态计算的效率。
[0022] 本说明书的实施例中,一个安全多方计算项目有两个或两个以上的参与方,每个参与方属于一个安全域(即该参与方的数据可以明文共享而不会影响数据安全的网络节点的集合)。每个参与方有一个代表节点,与其他参与方的代表节点按照该安全多方计算项目所采用的安全多方计算协议相互通信,各参与方的代表节点负责启动、执行该安全多方计算项目,并获取该安全多方计算项目的计算结果。
[0023] 其中,安全多方计算项目可以是机器学习模型的训练、机器学习模型的预测、或数据检索,还可以是其他计算任务;代表节点可以是一个物理节点,也可以是一个逻辑节点(如由计算机集群构成的逻辑节点)等,均不做限定。
[0024] 安全多方计算项目的每个参与方负责执行各自的密态计算任务,密态计算任务根据安全多方计算协议生成。某个参与方的密态计算任务可以是生成密钥、加密原始数据、使用原始数据进行演算、使用加密数据进行演算、生成安全多方计算项目的结果中的一个到多个。安全多方计算项目的所有密态计算任务由多个参与方分别完成,在项目的所有密态计算任务完成后,除提供原始数据的参与方外,其他参与方无需了解原始数据,即可获知使用所有原始数据计算得到的项目结果。
[0025] 本说明书的实施例中,至少一个参与方除代表节点外还包括至少两个辅助节点,辅助节点可以与本参与方的代表节点属于同一个安全域,也可以属于不同的安全域,不做限定。辅助节点可以是一个物理节点,也可以是一个逻辑节点。此外,辅助节点可以与代表节点运行在不同的物理或逻辑节点上,也可以与代表节点运行在同一个物理或逻辑节点上(在这种情况下,代表节点与辅助节点可以看做是运行在一个物理或逻辑节点上的两个软件功能模块)。
[0026] 图1所示为本说明书实施例应用场景的一种网络结构示例,一个安全多方计算项目包括三个参与方:参与方A、参与方B和参与方C,其代表节点分别为AP、BP和CP,AP、BP和CP之间按照安全多方计算协议进行通信。参与方A有3个辅助节点AA0、AA1和AA2,参与方B有2个辅助节点BA0和BA1,而参与方C没有辅助节点。参与方A的代表节点AP与3个辅助节点AA0、AA1和AA2之间采用参与方A的内部协议进行通信,参与方B的的代表节点AP与2个辅助节点之间采用参与方B的内部协议进行通信。参与方A的内部协议可以与参与方B的内部协议相同,也可以不同。
[0027] 本说明书的实施例中,各个参与方的代表节点之间、每个代表节点与其所属参与方的辅助节点之间能够进行通信。其中,代表节点或辅助节点可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等物理设备上;还可以运行在由两个或两个以上物理设备构成的逻辑设备上。
[0028] 本说明书的实施例中,安全多方计算的实现方法的流程如图2所示,该方法应用在安全多方计算参与方的代表节点上。
[0029] 步骤210,确定本参与方符合安全多方计算协议的密态计算任务。
[0030] 本说明书的实施例中,各个参与方的代表节点通常按照安全多方计算项目所采用的安全多方计算协议来进行信息交换,相互协作以确定由哪个参与方负责执行哪个密态计算任务。具体的信息交换过程和确定密态计算任务的过程遵循安全多方计算协议的规定,不再赘述。其中,安全多方计算协议可以是混淆电路、同态加密、秘密分享、不经意传输等协议;而各个参与方的代表节点通常采用基于分布式语义的密态协议来进行信息交换和协作,如MPI(Message Passing Interface,信息传递接口)。各个参与方的代表节点之间常常采用密文数据进行信息交互。
[0031] 对某个参与方的代表节点而言,根据该安全多方计算项目所采用的安全多方计算协议,代表节点可能是自行生成由本参与方负责执行的密态计算任务,也可能是基于与其他代表节点通信获得的信息生成本参与方负责执行的密态计算任务,还可能是接收由其他代表节点分派的密态计算任务,不做限定。
[0032] 如前所述,具体的密态计算任务可以是安全多方计算中任意能够独立进行的计算过程,如生成密钥、加密数据、使用数据进行演算、合成安全多方计算项目结果中的一个到多个。
[0033] 步骤220,将密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算。
[0034] 代表节点可以按照采用分布式计算来执行某个任务时将任务分解为多个部分的方式,来将本参与方的密态计算任务拆分为两个或两个以上的子任务。类似的,也可以采用分布式计算中分发部分任务的方式,来将子任务分发给 各个辅助节点。换言之,可以认为该参与方的代表节点和辅助节点构成一个分布式计算网格,而该参与方的密态计算任务即是由这个分布式计算网格负责执行的计算任务。
[0035] 其中,代表节点和辅助节点构成的分布式计算网格可以具有任意的结构,如树形结构、心形结构、两两相连的结构等。代表节点与辅助节点可以基于任意的分布式协议来实现本参与方密态计算任务的执行,本说明书的实施例不做限定。
[0036] 接收到子任务的辅助节点分别执行分发给己方的子任务,将子任务的执行结果返回给代表节点。代表节点与辅助节点之间可以采用任何一种支持分布式计算的接口来进行子任务的分发和子任务执行结果的返回,例如,在参与方内部,代表节点与辅助节点之间也可以采用MPI来实现分布式计算。
[0037] 如前所述,各个参与方代表节点之间的交互按照所采用的安全多方计算协议来进行,而一个参与方内部,其代表节点与辅助节点之间的交互则可以按照该参与方内部的协议来进行。某个参与方可以只有代表节点对其他参与方是可见的,而辅助节点则对其他参与方不可见。对某个参与方的辅助节点,既可以获知自己接收、执行的子任务是密态计算任务的一部分,也可以对这一点完全不知情,而只将接收、执行的子任务作为普通分布式任务中的部分来处理。
[0038] 例如,对采用秘密分享协议的安全多方计算项目,代表节点之间传输的内容由秘密分享协议规定,包括各自持有的份额(share,也称碎片piece或影子shadow),代表节点了解份额是某个秘密的一部分。而对某个参与方的辅助节点,则不需要了解自己处理的信息是否秘密有关,是否是在进行密态计算。
[0039] 再如,对采用同态加密协议的安全多方计算项目,通常各个个参与方有自己的同态加密私钥,不同参与方的代表节点之间传输的内容包括采用所属参与方的同态加密私钥加密后的信息。这些参与方的密态计算任务中包括以本参与方的同态加密私钥加密信息。代表节点可以将本参与方的同态加密私钥下发给本参与方的辅助节点,并在分发给辅助节点的子任务中包括采用该同态加密密钥对要加密的信息或部分信息进行加密运算,以借助辅助节点的的算力来加速加密过程。辅助节点可以不感知其执行的子任务属于同态加密计算,而只作为一个加密任务来完成执行过程。
[0040] 当本参与方的代表节点与辅助节点属于不同的安全域时,代表节点与辅助节点之间需要采用密文数据进行子任务的分发和子任务执行结果的返回。当本参与的代表节点与辅助节点都属于同一个安全域时,代表节点与辅助节点之间可以采用明文数据,也可以采用密文数据来进行子任务的分发和子任务执行结果的返回。
[0041] 步骤230,接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。
[0042] 代表节点在收到执行子任务的所有辅助节点返回的子任务执行结果后,采用与拆分子任务相对应的方式,来以各个辅助节点返回的子任务执行结果为基础,生成本参与方密态计算任务的计算结果。所生成的计算结果符合该安全多方计算项目所采用的安全多方计算协议。
[0043] 按照所采用的安全多方协议的规定,代表节点可以将本参与方密态计算任务的计算结果发送给其他参与方,从而使得各个参与方都能得到该安全多方计算项目的项目结果。
[0044] 可见,本说明书的实施例中,由安全多方计算的参与方的代表节点确定本参与方的密态计算任务,并将其拆分为两个或两个以上的子任务发送给辅助节点,辅助节点在完成子任务执行后将执行结果返回给代表节点,代表节点即可生成本参与方密态计算任务的计算结果,从而能够利用各个辅助节点的计算能力来完成本参与方的密态计算任务,极大的加快了计算速度,提高了密态计算的效率。
[0045] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0046] 在本说明书的一个应用示例中,有两个参与方需要基于同态加密协议对数据进行函数f的处理。如图3所示,参与方1的代表节点为Alice,Alice运行在一台性能强劲的小型机上,参与方1没有辅助节点;参与方2的代表节点为Bob,与3个辅助节点B0、B1和B2组成一个分布式集群。
[0047] 根据同态加密协议,Bob生成本参与方的密态计算任务,即以参与方2的同态加密私钥加密要进行函数f处理的数据。Bob将该密态计算任务拆分为3个子任务发送给本参与方的辅助节点B0、B1和B2,由B0、B1和B2采用本参与方的同态加密私钥分别来完成对要进行函数f处理的数据的加密运算。
[0048] 具体而言,Bob将要进行函数f处理的数据分为3个部分,将各个部分数据与参与方2的同态加密密钥分别发送给辅助节点B0、B1和B2,指令B0、B1和B2进行加密运算。由于Bob与B0、B1和B2属于同一个安全域,数据的传递采用明文进行。
[0049] 辅助节点B0、B1和B2将加密运算的执行结果返回给Bob。按照同态加密协议,Bob将收到的3个执行结果合并后得到完整的密文数据。同样按照同态加密协议,Bob将密文数据和函数f发送给Alice。
[0050] Alice在本地利用密文数据进行函数f处理,并且将密文处理结果发送给Bob。
[0051] Bob利用本参与方的同态加密私钥对密文处理结果进行解密,得到明文处理结果。
[0052] 在上述过程中,除各自的代表节点外,参与方1和参与方2的内部结构对对方是保密的。而参与方2的代表节点Bob会持有两个分布式通信的句柄,一个用于和Alice通信(传递的是符合同态加密协议的密文),一个用于和本参与方的辅助节点通信(传递的是明文)。
[0053] 本应用示例中,各个代表节点组成的一层分布式结构,而参与方内部代表节点与辅助节点组成了另一层分布式结构,并且这两层分布式结构相互解耦合,在代表节点组成的分布式结构采用安全多方计算协议进行密态计算,而参与方内部的分布式结构则可以采用普通的分布式协议进行常规计算。这样,本应用示例能够在无需改动安全多方计算协议的基础上,保证各个参与方内部的高性能运算,并且每个参与方可以非常灵活的组织本参与方的计算能力。
[0054] 与上述流程实现对应,本说明书的实施例还提供了一种应用在参与方代表节点上的安全多方计算的实现装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及存储器之外,安全多方计算的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
[0055] 图5所示为本说明书实施例提供的一种安全多方计算的实现装置,应用在安全多方计算参与方的代表节点上,所述装置包括密态任务确定单元、子任务分发单元和子任务结果合并单元,其中:密态任务确定单元用于确定本参与方符合安全多方计算协议的密态计算任务;子任务分发单元用于将所述密态计算任务拆分为至少两个子任务,并将子任务分发给至少两个辅助节点进行计算;子任务结果合并单元用于接收辅助节点返回的子任务的执行结果,根据子任务的执行结果生成符合安全多方计算协议的密态计算任务的计算结果。
[0056] 可选的,所述安全多方计算协议为同态加密协议;所述子任务包括:采用本参与方的同态加密私钥进行加密运算,得到本子任务的执行结果。
[0057] 可选的,所述代表节点与辅助节点之间采用信息传递接口MPI来进行子任务的分发和子任务执行结果的返回。
[0058] 可选的,所述代表节点和辅助节点构成树形、心形、或两两相连的计算网格。
[0059] 可选的,所述代表节点与辅助节点属于同一安全域,所述子任务的分发和子任务执行结果采用明文数据进行。
[0060] 可选的,所述装置还包括密态任务结果发送单元,用于将所述密态计算任务的计算结果发送给其他参与方。
[0061] 本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中应用在参与方代表节点上的安全多方计算的实现方法的各个步骤。对应用在参与方代表节点上的安全多方计算的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
[0062] 本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中应用在参与方代表节点上的安全多方计算的实现方法的各个步骤。对应用在参与方代表节点上的安全多方计算的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
[0063] 以上所述仅为本说明书的较佳实施例而已,并不用以限制请求保护的其他实施例,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在请求保护的范围之内。
[0064] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0065] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0066] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0067] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0068] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。