本发明涉及信息安全技术领域,尤其涉及一种基于半诚实mascot协议的安全数据共享计算方法及系统。
背景技术:
安全多方计算(securemulti-partycomputation,mpc)技术可以实现在不存在可信第三方的情况下,并在保护数据隐私性的前提下,多方通过自己的秘密输入联合计算某个函数的输出值。n个参与方p1,p2,...,pn,各自持有秘密输入x1,x2,…,xn,想要联合计算公开函数f(x1,x2,...,xn),同时保证自己的秘密输入xi不被其他参与方获知,并且保证所得函数结果的正确性。mpc技术在云、大数据和人工智能等领域有着非常重要的应用。目前针对mpc协议的研究表明它的安全性和性能已经满足了工业产品化的初步要求。spdz系列协议是针对算术电路的著名的mpc协议之一,其包含spdz、mascot、spdz2k等。
spdz协议是由
keller等人提出的半诚实版本的mascot协议虽然可以高效的实现安全多方计算的功能,但是该协议并不是完备的。这是因为在实际应用环境中,会存在新的参与方在协议执行期间加入运算,也会存在部分原有的参与方因为特殊情况需要退出计算过程的情况。而mascot协议并没有考虑到这两种实际应用环境,因此在其运行过程中,新的参与方无法加入,且原有参与方的退出将使得协议运行出错。
技术实现要素:
鉴于此,本发明实施例提供了一种基于半诚实mascot协议的安全数据共享计算方法及系统,以消除或改善现有技术中存在的一个或更多个缺陷。
本发明的技术方案如下:
根据本发明的一方面,提供一种基于半诚实mascot协议的安全数据共享计算方法,该方法包括以下步骤:
在预处理阶段接收到携带新参与方的标识信息的新参与方加入请求的情况下,安全多方计算的预定参与方提取所有已得到的数据分片和对应的键值;
针对提取的每一键值下的每个数据分片,所述预定参与方随机选择有限域中的值来生成新参与方的相应键值下的数据分片,并向所述新参与方发送生成的数据分片和对应的键值;
基于向新参与方发送的数据分片,预定参与方将每一键值下自身对应的数据分片的值进行更新;
在预处理阶段接收到新参与方的加入请求之后,所述预定参与方提取已经获得的多元组分片及对应的键值;
针对提取的每一键值下的每个多元组分片,所述预定参与方随机选择有限域中的多个值来生成新参与方的相应键值下的多元组分片,并向所述新参与方发送生成的多元组分片和对应的键值;
所述预定参与方基于向所述新参与方发送的多元组分片将每一键值下自身对应的多元组分片进行更新。
可选地,所述方法还包括:在预处理阶段接收到携带参与方标识信息的参与方退出请求的情况下,预定参与方接收所述待退出参与方发送的所有已获得的数据分片和对应的键值;基于待退参与方发送的数据分片,预定参与方将每一键值下对应的数据分片的值进行更新;在预处理阶段接收到待退出参与方的退出请求之后,预定参与方接收所述待退出参与方发送的所有已获得多元组分片和对应的键值;预定参与方基于来自所述待退出参与方发送的多元组分片和对应的键值将每一键值下自身的多元组分片的值进行更新。
可选地,所述预定参与方基于向所述新参与方发送的多元组分片将每一键值下自身对应的多元组分片进行更新的步骤包括:预定参与方将每一键值下自身对应的数据分片x(m)的值更新为x(m)-x(s),其中,m表示所述预定参与方的标识,s表示所述新参与方的标识,x(s)为预定参与方向新参与方发送的数据分片;所述预定参与方基于来自所述待退出参与方发送的多元组分片和对应的键值将每一键值下自身的多元组分片的值进行更新的步骤包括:所述预定参与方将每一键值下自身的多元组分片z(m)的值更新为z(m)+z(t),其中,z表示多元组分片的元素,m表示所述预定参与方的标识,t表示待退出参与方的标识,z(t)为待退出参与方向预定参与方发送的多元组分片。
可选地,所述预定参与方为当前所有参与方中键值最小的参与方。
可选地,所述方法还包括:在计算阶段接收到至少携带新参与方的标识信息的待参与方的加入请求的情况下,安全多方计算的预定参与方提取所有已得到的数据分片和对应的键值;针对提取的每一键值下的每个数据分片,所述预定参与方随机选择有限域中的值来生成新参与方的相应键值下的数据分片,并向所述新参与方发送生成的数据分片和对应的键值;基于向所述新参与方发送的数据分片,所述预定参与方将每一键值下自身对应的数据分片的值进行更新;由新参与方发起,预定参与方负责,将所述三元组分片转换为多一个分片的三元组分片;以及新参与方随机生成用于传输数据分片的掩码分片,并分发给其他所有参与方。
可选地,所述方法还包括:在计算阶段接收到携带待退出参与方的标识信息的待退出参与方的退出请求的情况下,预定参与方接收所述待退出参与方发送的所有已获得的数据分片和对应的键值;基于从待退出参与方接收的数据分片和对应的键值,预定参与方将每一键值下其对应分片的值进行更新;待退出参与方将分发数据时利用的随机数发送给预定参与方;待退出参与方将拥有的所有三元组分片发送给预定参与方。
根据本发明的另一方面,本发明还提供一种基于半诚实mascot协议的安全数据共享计算方法,该方法包括以下步骤:
在预处理阶段接收到携带待退出参与方的标识信息的待退出参与方的退出请求的情况下:预定参与方接收所述待退出参与方发送的所有已获得数据分片和对应的键值;并且所述预定参与方基于来自所述待退出参与方发送的多元组分片和对应的键值将每一键值下其对应多元组分片的值进行更新;
在计算阶段接收到携带待退出参与方的标识信息的待退出参与方的退出请求的情况下:预定参与方接收所述待退出参与方发送的所有已获得数据分片和对应的键值;并且所述预定参与方基于从待退出参与方接收的数据分片和对应的键值将每一键值下其对应数据分片的值进行更新。
可选地,所述预定参与方基于来自所述待退出参与方发送的多元组分片和对应的键值将每一键值下自身的多元组分片的值进行更新的步骤包括:所述预定参与方将每一键值下自身的多元组分片z(m)的值更新为z(m)+z(t),其中,z表示多元组分片的元素,m表示所述预定参与方的标识,t表示待退出参与方的标识,z(t)为待退出参与方向预定参与方发送的多元组分片。
本发明的另一方面,还提供一种基于半诚实mascot协议的安全数据共享计算系统,该装置包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该系统实现如前所述方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前所述方法的步骤。
本发明提供的基于半诚实mascot协议的安全数据共享计算方法及系统,可以实现在mascot协议运行时加入新的参与方和/或退出原有参与方的功能,更贴近实际需求。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在书面说明及其权利要求书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。附图中的部件不是成比例绘制的,而只是为了示出本发明的原理。为了便于示出和描述本发明的一些部分,附图中对应部分可能被放大,即,相对于依据本发明实际制造的示例性装置中的其它部件可能变得更大。在附图中:
图1为本发明一实施例中基于半诚实mascot协议的预处理阶段的参与方增加方法的流程示意图。
图2为本发明一实施例中基于半诚实mascot协议的预处理阶段的参与方退出方法的流程示意图。
图3为本发明一实施例中基于半诚实mascot协议的在线阶段的参与方增加方法的流程示意图。
图4为本发明一实施例中基于半诚实mascot协议的在线阶段的参与方退出方法的流程示意图。
图5为本发明一实施例的基于半诚实mascot协议实现参与方增减的整体框架图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在介绍本发明提出的基于半诚实mascot协议的可增删参与方的安全多方计算协议之前,首先引入基本的符号介绍。符号pi表示第i个参与方,在协议运行之初,进行协议的n个参与方分别记作p1,p2,…,pn。协议中包含的运算都是基于有限域的,在接下来的描述中,将有限域统一记成
由于本发明提出的安全多方计算协议基于原始的mascot协议,而mascot协议修改了spdz协议的预处理阶段,因此下面简单介绍一下半诚实版本的spdz协议。spdz协议在执行时分为预处理阶段和在线阶段,预处理阶段主要用来生成在线阶段所需要的信息,在线阶段用于计算所要计算的函数值。在在线阶段运行期间,为了达到安全多方计算的目的,所有参与方均不应知道函数计算过程中每一个数据
在本发明实施例中,在预处理阶段,不仅仅要完成其需要为在线阶段所做的任务,还要能够处理新的参与方加入或者部分原有参与方退出的实际应用情况。在本发明的mascot协议中,预处理阶段包括两个子协议π[·]和πtriple,其中协议π[·]用来将有限域上的某个值x生成分片[x]分发得到各个参与方,并且可以通过所有参与方的参与揭示其真实值;协议πtriple可用来生成满足条件c=a·b的三元组([a],[b],[c])。在mpc协议将来支持包括4个以上元素的更多元组(如四元组或五元组等)的情况下,本发明实施例中的协议πtriple同样可用于生成三元以上的多元组。
下面描述本发明实施例中的协议π[·]和πtriple。
一、协议π[·]
(一)分发过程:参与方pi各输入值x以分片的形式分发给其他参与方
该协议从参与方pi处得到输入(input,id,x,n,pi),从其他参与方pj(j≠i)处得到输入(input,id,n,pi),其中,x表示数据,id表示要生成的分片对应的身份标识号(id号)。
然后,执行以下过程:
(1)参与方pi随机选择n-1个有限域
(2)参与方pi计算
(3)参与方pi将分片x(j)的值发送给pj;
(4)所有参与方在键值id下存储得到的分片。
示例:假设有p1、p2、p3、p4、p5五方参与运算,即n=5。此时,p1向其他参与方分发输入值x1的过程如下:
该协议从p1处得到输入(input,1,x1,5,p1),从其他参与方pj(j≠1)处得到输入(input,1,5,p1),然后执行以下过程;
(1)参与方p1随机选择4个有限域
(2)参与方p1计算
(3)参与方p1将分片
(4)所有参与方在其键值id下存储得到的分片。即,p1拥有
同样,其他参与方p2~p4可以向包括自己在内的所有参与方分别生成并发送xl(l=2,3,4,5)的分片。
(二)揭示过程:所有参与方共同揭示id下对应的值
协议从所有参与方处得到输入(open,id,n),然后执行以下过程:
每一个参与方提取在键值id下存储的分片,然后广播他们的分片给其他参与方;
每一参与方计算
示例:假设有p1、p2、p3、p4、p5五方参与运算,即n=5。此时,所有参与方欲揭示id下对应的值,过程如下:
该协议从p1、p2、p3、p4、p5处分别得到相同的输入(open,1,5),然后执行以下过程:
(1)所有参与方分别提取在键值1下存储的分片,即:p1提取得到x(1),p2提取得到x(2),p3提取得到x(3),p4提取得到x(4),p5提取得到x(5);
(2)所有参与方将自己拥有的分片广播给其他参与方,此时每个参与方都拥有x的所有分片;
(3)每一参与方计算得到
(三)参与方增加:新参与方ps加入协议,需得到原有参与方已分发值的分片
在本发实施例中,对协议π[·]进行了改进,增加了新参与方加入协议的功能,如果有新的参与方要在预处理阶段加入到运算中,则如图1所示,基于该改进的协议提出的多方安全运算包括如下步骤:
步骤s110,在预处理阶段接收到新参与方加入请求的情况下,安全多方计算的预定参与方提取所有已得到的数据分片和对应的键值。
该加入请求可以是新参与方输入的携带加入指示和新参与方标识的广播消息。
此处,预定参与方可以是事先约定好的参数方,如p1或其他参与方,该预定参与方用于基于自己已得到的数据分片为新参与方分配分片。
在本发明一实施例中,也可以按照预定的优先级顺序约定用于为新参与方分配分片的参与方,例如,可以按照参与方的键值的顺便,在优先级最高的p1已退出的情况下,选择当前优先级次高的参与方p2作为预定参与方。
步骤s120,针对提取的每一键值下的每个分片,预定参与方随机选择有限域中的值来生成新参与方的相应键值下的数据分片,并向新参与方发送生成的数据分片和对应的键值。
通过本步骤,新参与方获得用于进行安全多方计算的数据的分片,以便参与安全多方计算。
步骤s130,基于向新参与方发送的数据分片,预定参与方将每一键值下对应的数据分片的值进行更新。
例如,预定参与方将每一键值下自身对应的数据分片x(m)的值更新为x(m)-x(s),其中,m表示所述预定参与方的标识,s表示所述新参与方的标识,x(s)为预定参与方向新参与方发送的数据分片。
更具体地,协议π[·]从新参与方ps(s>n,例如可以是n+1)处得到输入(add,ps),然后执行以下过程:
(1)参与方p1提取所有已得到的数据分片以及对应的键值(id,x(1))。
(2)对于每一个(id,x(1)),参与方p1随机选择有限域
示例:
假设最初只有p1、p2、p3、p4、p5五方参与运算,新参与方p6欲参与进来。此时,p1已完成数据x1的分发,p2已完成数据x2的分发,p3已完成数据x3的分发,p4、p5尚未分发。对于p1、p2、p3、p4、p5这五方而言,每一方都拥有x1、x2、x3的一个分片,即:
参与方p1拥有
参与方p2拥有
参与方p3拥有
参与方p4拥有
参与方p5拥有
新的参与方p6加入进来后,需要得到x1、x2、x3的一个分片。此时,参与方p1负责给参与方p6生成x1、x2、x3的一个分片,具体过程如下:
(1)参与方p1提取键值id=1下的分片
(2)参与方p1提取键值id=2下的分片
(3)参与方p1提取键值id=3下的分片
参与进来之后,参与方p4、p5进行输入值的分发时,可直接针对全部的6个参与方生成输入值的分片并分发给各个参与方。
(四)参与方退出:原参与方pt(t≤n)退出协议,并将其拥有的分片发给预定参与方
本发明实施例的多方安全运算方法还包括在参与方在预处理阶段退出的过程,如图2所示,该过程包括如下步骤:
步骤s210:在预处理阶段接收到原参与方的退出请求的情况下,由预定参与方接收待退出参与方发送的所有已获得分片和对应的键值。
退出请求可以是待退出参与方输入的携带退出指示和参与方标识的广播消息。预定参与方例如为p1,但并不限于此。
步骤s230,基于待退参与方发送的分片,预定参与方将每一键值下对应的分片的值进行更新。
例如,预定参与方将每一键值下自身的数据分片x(m)的值更新为x(m)+x(t),其中,m表示所述预定参与方的标识,t表示待退出参与方的标识,x(t)为待退出参与方向预定参与方发送的分片。
更具体地,协议从原参与方pt处得到输入(quit,pt),然后执行以下过程:
(1)参与方pt将所有已得到的分片以及对应的键值(id,x(t))发送给p1;
(2)对于每一个id,参与方p1更新对应分片的值为x(1)+x(t)。
示例:
假设最初只有p1、p2、p3、p4、p5五方参与运算,参与方p2欲退出。此时,p1已完成输入值x1的分发,p2已完成输入值x2的分发,p3已完成输入值x3的分发,p4、p5尚未分发。对于p1、p2、p3、p4、p5这五方而言,每一个方都拥有x1、x2、x3的一个分片,即:
p1拥有
p2拥有
p3拥有
p4拥有
p5拥有
参与方p2欲退出,需要将其拥有的所有分片都发送给预定参与方p1,具体过程如下:
(1)参与方p2提取键值id=1下的分片
(2)参与方p2提取键值id=2下的分片
(3)参与方p2提取键值id=3下的分片
由此,在预处理阶段,无论是原参与方退出,还是新参与方加入,与现有半诚实版本的mascot协议相比,可以处理协议π[·]运行时加入新的参与方及退出原有参与方的实际需求,更贴近现实环境。
二、πtriple协议
πtriple协议执行过程中用到的是随机不经意传输协议(rot),不经意传输(以下简称ot)协议是其他密码学协议的基础,尤其在安全双方(多方)计算协议中得到了广泛的应用。最常见的ot协议是二择一ot协议,即:发送方输入两个消息m0、m1,接收方输入一个选择比特c,在协议执行结束后,接收方得到了消息mc但对m1-c一无所知,而发送方不会得知接受方究竟获得是m0还是m1。如果发送方发送的消息个数增加到n个,那么该协议就是n择一ot协议。随机ot协议与ot协议类似但又有不同。以二择一随机ot协议为例,在协议执行开始时,发送方并不拥有消息,但接收方依然输入一个选择比特c,执行结束后,发送方得到了协议随机生成的两个消息m0、m1,而接收方只获得了其中一个消息mc,对m1-c同样一无所知。在本发明实施例中,使用符号
(一)πtriple协议的三元组生成:所有参与方共同生成一组三元组
πtriple协议的三元组生成过程如下:
(1)每一个参与方pi随机选择有限域
(2)对于每一对有序的参与方(pi,pj),利用随机ot执行下述操作:
(2.1)参与方pi(相当于随机ot协议中的发送方)和pj(相当于随机ot协议中的接收方)调用
(2.2)对每一个h∈{1,2,…,k}(h代表随机ot协议执行的是第几次),pj会得到有限域
(2.3)对每一个h∈{1,2,…,k},pj计算
对每一个h∈{1,2,…,k},pi计算
(2.4)记
(2.5)pi计算
(3)每一参与方pi计算
(4)每一参与方pi在键值id下存储(a(i),b(i),c(i)),注意到此时有等式∑ic(i)=(∑ia(i))·(∑ib(i))成立,即生成了一组三元组([a],[b],[c]),其中∑ia(i)=a,∑ib(i)=b,∑ic(i)=c。
由于该三元组生成过程为现有过程,在此不再过多解释和说明,但本发明不限于如上生成三元组生成过程,在三元组或多元组生成过程有变化的情况下,同样适用于本发明。
(二)参与方增加:新参与方ps加入协议,需对已生成的三元组处理成多一个分片的三元组,并分发给新参与方ps。
如图1所示,在预处理阶段接收到新参与方的加入请求之后,本发明实施例的多方安全运算包括如下步骤:
步骤s140,预定参与方提取已经获得的多元组分片及对应的键值。
预定参与方pi例如可以为p1,当然,也可以是其他参与方。
步骤s150,针对提取的每一键值下的每个多元组分片,预定参与方随机选择有限域中的多个值来生成新参与方的相应键值下的多元组分片,并向新参与方发送生成的多元组分片和对应的键值。
步骤s160,预定参与方基于向新参与方发送的多元组分片将每一键值下自身对应的多元组分片进行更新。
更具体地,预定参与方为p1的情况下,协议从新参与方ps处得到输入(add,ps)之后,执行以下过程:
(1)参与方p1提取所有已得到的三元组分片以及对应的键值(id,a(1),b(1),c(1));
(2)对于每一个(id,a(1),b(1),c(1)),参与方p1随机选择三个有限域
示例:
假设最初只有p1、p2、p3、p4、p5五方参与运算,新参与方p6欲参与进来。
参与方p1拥有5组三元组分片,这些分片分别在id=1,2,3,4,5下存放分片值:
id=1下存放的分片值
id=2下存放的分片值
id=3下存放的分片值
id=4下存放的分片值
id=5下存放的分片值
新的参与方p6加入进来后,需要得到三元组的一个分片。此时,参与方p1负责给参与方p6生成三元组的一个分片,具体过程如下:
(1)参与方p1提取键值id=1下的三元组分片
(2)参与方p1提取键值id=2下的三元组分片
对于键值id=3,4,5下的三元组分片,参与方p1进行同样的操作,不再一一赘述。
由此,新参与方p6便拥有了相应的5组三元组分片,从而可与其他参与方一样参与运算。
(三)参与方退出:原参与方pt退出协议,需将其拥有的三元组分片发给p1
再参照图2,在预处理阶段接收到原参与方的退出请求之后,本发明实施例的多方安全运算还包括如下步骤:
步骤s230,预定参与方接收待退出参与方发送的所有已获得多元组分片和对应的键值。
预定参与方例如为p1。
步骤s240,预定参与方基于来自待退出参与方发送的多元组分片和对应的键值将每一键值下自身的多元组分片的值进行更新。
更具体地,协议从原参与方pt处得到输入(quit,pt)之后,执行以下过程:
(1)原参与方pt将所有已得到的三元组分片以及对应的键值(id,a(t),b(t),c(t))发送给参与方p1;
(2)对于每一个id,p1更新对应三元组分片的值为(a(1)+a(t),b(1)+b(t),c(1)+c(t))。
若以z来表示多元组分片的各个元素,如[a],[b],[c],则更新的对应三元组分片的值都可以表示为z(m)+z(t)。
该过程与参与方加入是相反的过程,在此不再一一赘述。
上述可知,本发明实施例中,协议π[·]和πtriple均具有“参与方增加”和“参与方退出”功能,基于如上的预处理阶段的“参与方增加”和“参与方退出”流程,可以解决现有的半诚实版本的mascot协议在其运行过程中,新的参与方无法加入,且原有参与方的退出将使得协议运行出错的问题。
此外,本发明实施例中,还同样提出了在线阶段的参与方加入和退出机制,即在协议πonline中增加了“参与方增加”和/或“参与方退出”功能。下面结合对协议πonline的介绍来说明本发明在在线阶段的参与方加入和退出方法。
三、协议πonline
πonline协议用于在线阶段,n个参与方p1,p2,...,pn共同完成公开函数f(x1,x2,...,xn)的计算。
(一)现有流程
协议πonline具有初始化步骤,即:各参与方pi调用预处理阶段中的协议πtriple生成多组三元组([a],[b],[c]),其中每个参与方只拥有相应三元组的其中一组三元组分片;各参与方随机选择自己的掩码值ri,并利用预处理阶段中的协议π[·]将其分发给其他参与方。
在此阶段发生增删参与方的行为时,调用相应协议的“参与方增加”或“参与方退出”功能,以达到增删参与方的实际应用要求。
该πonline协议执行计算的流程如下:
(1)输入:每个参与方pi利用自己随机选择并分发好的掩码值ri将秘密输入xi共享,需执行以下过程:
参与方pi计算ε=xi-ri,然后广播ε的值给其余所有参与方;
所有参与方pj利用已知的ri的分片
(4)加法计算:
为计算两个元素x和y的加和,每个参与方只需在本地计算。每个参与方pi找到相应的分片x(i)和y(i),然后计算z(i)=x(i)+y(i),并存储该中间状态的分片值。
(5)乘法计算:
为计算两个元素x和y的乘积,需执行以下过程:
每个参与方pi找到相应的分片x(i)和y(i),并找到具有相同键值的一个三元组分片(a(i),b(i),c(i));
每个参与方pi计算ε(i)=x(i)-a(i),ρ(i)=y(i)-b(i);
所有参与方调用协议π[·]的“揭示”功能得到ε和ρ的值;
每个参与方pi计算z(i)=c(i)+ε·b(i)+ρ·a(i)+ε·ρ,并存储该中间状态的分片值。
(6)输出计算结果
为输出最终结果z,所有参与方调用协议
(二)参与方增加
在本发明实施例中,当在在线计算阶段有待参与方请求加入运算时,如图3所示,对应的多方安全运算包括以下步骤:
步骤s310,预定参与方提取所有已得到的中间值分片和对应的键值。
预定参与方例如为p1。
步骤s320,针对提取的每一键值下的每个分片,预定参与方随机选择有限域中的值来生成新参与方的相应键值下的分片,并向新参与方发送生成的分片和对应的键值。
步骤s330,基于向新参与方发送的分片,预定参与方将每一键值下自身对应的分片的值进行更新。
步骤s340,由新参与方发起,预定参与方负责,将三元组分片转换为多一个分片的三元组分片。
由此,新参与方便可以采用现有的计算流程进行在线计算,例如,在步骤s350,新参与方随机生成用于传输数据分片的掩码分片,并分发给其他所有参与方,由此可利用掩码分片分发自己的秘密输入并可进行进一步计算。
更具体地,协议若从新参与方ps处得到输入(add,ps)(参与方加入请求),然后执行以下过程:
(1)在步骤s310中,参与方p1提取所有已得到的中间值分片以及对应的键值(id,x(1))。
(2)在步骤s320~s330中,对于每一个(id,x(1)),参与方p1随机选择有限域
(3)在步骤s340中,新参与方ps调用协议πtriple的“参与方增加”功能,将所有三元组分片转换成多一个分片的三元组分片。
(4)在步骤s350中,新参与方ps随机生成有限域
由此,参与方ps调用协议πonline的“输入”功能,可利用rs分发自己的秘密输入xs,从而可以进行进一步计算。
示例:
假设最初只有p1、p2、p3、p4、p5五方参与运算,新参与方p6欲参与进来。此时预处理阶段已经完成,且在线阶段正在进行中。这意味着每个参与方均拥有多组三元组的分片,且拥有中间计算值的分片(包含其他参与方的秘密输入值的分片,下文不再赘述这一点)。新参与方的加入,需要完成三个主要任务:(1)通过与p1的交互,得到所有中间计算值的分片;(2)通过与p1的交互,得到所有三元组的一个分片;(3)分发自己的秘密输入x6。假设p1拥有的中间值的分片为
(1)对于id=1,2,3,参与方p1随机选择有限域
(2)对于id=4,5,6,7,参与方p1调用协议πtriple的“参与方增加”功能,将所有三元组分片转换成多一个分片的三元组分片并将对应分片发送给p6;
(3)新参与方p6随机生成有限域
(4)参与方p6调用协议πonline的“输入”功能,可利用r6分发自己的秘密输入x6,从而可以进行进一步计算。
(三)参与方退出:
在本发明实施例中,当在在线阶段(或称计算阶段)有原参与方请求退出运算时,如图4所示,对应的多方安全运算包括以下步骤:
步骤s410,在在线阶段接收到原参与方的退出请求的情况下,预定参与方接收待退出参与方发送的所有已获得分片和对应的键值。
该退出请求可以使原参与方pt输入的携带退出标识和待退出参与方标识信息(quit)的消息,如输入的(quit,pt)信息。
步骤s420,基于接收的分片和对应的键值,预定参与方pm将每一键值下其对应分片的值进行更新;
步骤s430,待退出参与方将分发数据时利用的随机数发送给预定参与方;
步骤s440,待退出参与方将拥有的所有三元组分片发送给预定参与方。
例如,在待退出的原参与方pt向预定参与方pm发送的所有已获得分片x(t)和对应的键值的情况下,预定参与方pm将每一键值下其对应分片x(m)的值更新为x(m)+x(t)。
更具体地,协议从原参与方pt处得到输入(quit,pt),然后执行以下过程:
(1)原参与方pt将所有已得到的中间值分片以及对应的键值(id,x(t))发送给p1;
(2)对于每一个id,p1更新对应分片的值为x(1)+x(t);
(3)原参与方pt将分发秘密输入时利用的随机数rt发送给p1;
(4)原参与方pt调用协议πtriple的“参与方退出”功能,将所有三元组分片发送给p1。
示例:
假设最初有p1、p2、p3、p4、p5五方参与运算,参与方p2欲退出,预定参与方为p1。此时预处理阶段已经完成,且在线阶段正在进行中。这意味着每个参与方均拥有多组三元组的分片,且拥有中间计算值的分片(包含其他参与方的秘密输入值的分片,下文不再赘述这一点)。原参与方的退出,需要完成三个主要任务:(1)通过与p1的交互,将所有中间计算值的分片发给p1;(2)通过与p1的交互,将所有三元组的一个分片发给p1;(3)将分发自己秘密输入x2所利用的r2发给p1。假设p2拥有的中间值的分片为
(1)对于id=1,2,3,参与方p2将
(2)对于id=4,5,6,7,参与方p2调用协议πtriple的“参与方退出”功能,将所有三元组分片发送给p1;
(3)参与方p2将r2发送给p1。
如图5所示,本发明实施例对协议π[·]、πtriple以及πonline都进行了改进,均增加了参与方增加和参与方退出功能,使得无论在预处理阶段还是在线阶段,均可以进行参与方的增加和退出。
与现有半诚实版本的mascot协议相比,本发明的如上所述的实施例可以处理协议运行时加入新的参与方及退出原有参与方的实际需求,从而解决现有半诚实版本的mascot协议在其运行过程中,新的参与方无法加入,且原有参与方的退出将使得协议运行出错的问题,并且,本发明实施例更贴近现实环境。
相应地,本发明还提供一种基于半诚实mascot协议的参与方增加和退出系统,该系统包括处理器和存储器,存储器中用于存储计算机指令,处理器用于执行存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如前所述方法的步骤。
在协议安全性方面,如果不发生增删参与方,本协议的安全性与半诚实版本的mascot协议的安全性一致。在发生增删参与方的行为时,由于增加的参与方以及退出的原有参与方的信息将被参与方p1控制或获取,因此安全性略有降低。在协议执行效率方面,如果不发生增删参与方,本协议的执行效率与半诚实版本的mascot协议的执行效率一致。在发生增删参与方的行为时,由于需要执行额外的操作,因此执行效率略有降低。但是,需要注意的是,本协议可以实现半诚实版本mascot协议不能实现的功能,可以处理半诚实版本mascot协议不能应对的现实应用情况,因此略有降低的安全性和执行效率与功能上的完备和更贴近实际应用环境相比,是完全可以忽略的。
本公开还涉及存储介质,其上可以存储有计算机程序代码,当程序代码被执行时可以实现本发明的方法的各种实施例,该存储介质可以是有形存储介质,诸如光盘、u盘、软盘、硬盘等。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。