多方安全计算的方法、装置及系统与流程

文档序号:29406724发布日期:2022-03-26 10:48阅读:207来源:国知局
多方安全计算的方法、装置及系统与流程

1.本说明书一个或多个实施例涉及安全技术领域,尤其涉及一种多方安全计算的方法、装置及系统。


背景技术:

2.多方安全计算(secure multi-party computation,mpc)又称为安全多方计算,即多方共同计算出一个函数的结果,而不泄露这个函数各方的输入数据,计算的结果公开给其中的一方或多方。
3.混淆电路和秘密分享(secret sharing)都可实现多方安全计算,两者各有优缺点,可以配合一起使用。比如,先基于混淆电路进行第一安全运算,然后针对计算结果进行基于秘密分享的第二安全运算。需要说明,为了实现数据的隐私保护,上述计算结果不能暴露给任何一方,这就需要将混淆电路的计算结果转换为秘密分享分片。
4.传统技术中,为了实现上述转换,通常需要在混淆电路中引入额外的运算,比如减法,这极大地影响了多方安全计算效率。


技术实现要素:

5.本说明书一个或多个实施例描述了一种多方安全计算的方法、装置及系统,可以提高多方安全计算效率。
6.第一方面,提供了一种多方安全计算的方法,包括:
7.针对混淆电路的n根输出线中任意的第i输出线,第一方随机生成第一比特串作为该第i输出线对应的第一方分片,其中,所述n根输出线的实际真值构成所述混淆电路计算结果的n个比特;
8.所述第一方基于所述第一比特串,确定两个第二比特串,该两个第二比特串分别对应于所述第i输出线的两个真值;
9.所述第一方利用所述混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密所述两个第二比特串,并将两个加密结果提供给第二方;
10.所述第二方利用该第i输出线的实际真值对应的实际混淆串,解密所述两个加密结果,得到第i输出线对应的第二方分片;其中,所述实际混淆串通过与所述第一方联合执行所述混淆电路而获得;
11.所述第一方和第二方,各自分别基于所述n根输出线中各输出线对应的本方分片,确定所述计算结果的本方分片。
12.第二方面,提供了一种多方安全计算的方法,包括:
13.针对混淆电路的n根输出线中任意的第i输出线,随机生成第一比特串作为该第i输出线对应的第一方分片,其中,所述n根输出线的实际真值构成所述混淆电路计算结果的n个比特;
14.基于所述第一比特串,确定两个第二比特串,该两个第二比特串分别对应于所述
第i输出线的两个真值;
15.利用所述混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密所述两个第二比特串,并将两个加密结果提供给第二方,以供所述第二方通过解密所述两个加密结果得到第i输出线对应的第二方分片,进而确定出所述计算结果的第二方分片;
16.基于所述n根输出线中各输出线对应的第一方分片,确定所述计算结果的第一方分片。
17.第三方面,提供了一种多方安全计算的系统,包括:
18.第一方,用于针对混淆电路的n根输出线中任意的第i输出线,随机生成第一比特串作为该第i输出线对应的第一方分片,其中,所述n根输出线的实际真值构成所述混淆电路计算结果的n个比特;
19.所述第一方,还用于基于所述第一比特串,确定两个第二比特串,该两个第二比特串分别对应于所述第i输出线的两个真值;
20.所述第一方,还用于利用所述混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密所述两个第二比特串,并将两个加密结果提供给第二方;
21.所述第二方,用于利用该第i输出线的实际真值对应的实际混淆串,解密所述两个加密结果,得到第i输出线对应的第二方分片;其中,所述实际混淆串通过与所述第一方联合执行所述混淆电路而获得;
22.所述第一方和第二方,还用于各自分别基于所述n根输出线中各输出线对应的本方分片,确定所述计算结果的本方分片。
23.第四方面,提供了一种多方安全计算的装置,包括:
24.生成单元,用于针对混淆电路的n根输出线中任意的第i输出线,随机生成第一比特串作为该第i输出线对应的第一方分片,其中,所述n根输出线的实际真值构成所述混淆电路计算结果的n个比特;
25.确定单元,用于基于所述第一比特串,确定两个第二比特串,该两个第二比特串分别对应于所述第i输出线的两个真值;
26.加密单元,用于利用所述混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密所述两个第二比特串,并将两个加密结果提供给第二方,以供所述第二方通过解密所述两个加密结果得到第i输出线对应的第二方分片,进而确定出所述计算结果的第二方分片;
27.所述确定单元,还用于基于所述n根输出线中各输出线对应的第一方分片,确定所述计算结果的第一方分片。
28.第五方面,提供了一种计算机存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
29.第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
30.本说明书一个或多个实施例提供的多方安全计算的方法、装置及系统,第一方针对混淆电路的各输出线,随机生成第一比特串作为对应的第一方分片,之后第一方还针对各输出线,确定出对应于各输出线的两个真值的两个第二比特串,并将其加密后提供给第
二方,从而第二方通过解密两个加密结果,得到各输出线对应的第二方分片。最后第一方和第二方各自分别基于各输出线对应的本方分片,确定混淆电路的计算结果的本方分片。可见,在本说明书实施例中,无需在混淆电路中引入额外的运算,即可实现将混淆电路的计算结果转换为秘密分享分片,由此可以大大提升多方安全计算效率。
附图说明
31.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
32.图1示出根据一个实施例的门电路示意图;
33.图2为本说明书一个实施例披露的实施场景示意图;
34.图3示出根据一个实施例的多方安全计算的方法交互图;
35.图4示出根据一个实施例的多方安全计算的系统示意图;
36.图5示出根据一个实施例的多方安全计算的装置示意图。
具体实施方式
37.下面结合附图,对本说明书提供的方案进行描述。
38.在描述本说明书实施例提供的方案之前,先对混淆电路和秘密分享两种多方安全计算方法作以下说明。
39.秘密分享也称为秘密分割、秘密共享,这一密码学技术最初是用于秘密信息的管理。它的基本原理是将秘密拆分成多个分片(share),分别交给不同人保管。只有超过门限数量的人将它们的分片合并,才能恢复秘密,少于门限数量的人则无法恢复秘密的任何信息。多方安全计算中,门限数量通常与参与方数量相同。
40.秘密分享用于多方安全计算时,采用了分片转换(share conversion)技术。首先,各方的输入数据分别拆分成分片,并互相交换分片。然后各方分别对本地的多个分片进行转换运算,各自得到一个新分片。最后,各方合并所有新分片,得到运算结果。
41.需要说明,基于秘密分享的多方安全计算,可以包括安全乘法和加减法,但不支持其它运算。
42.混淆电路(garbled circuit,gc)通过用计算机模拟专用集成电路(application specific integrated circuit,asic)来实现多方安全计算。任何给定的计算任务都可以用为其设计的asic来实现,即按照运算逻辑将多个运算门(与门、异或门等)连接起来构成门电路,使用门电路来进行运算。例如s=a and b and d这一运算可以用如图1示出的门电路来计算。
43.图1中,该电路由2个与门组成。与门1的输入线(wire)为a、b,输出线为c。与门2的输入线为c、d,输出线为s。混淆电路将运算任务表示为门电路,并对门的每根线进行加密(也称标注),加密后的门电路称为混淆电路。最终通过用计算机来执行混淆电路的运算,实现多方安全计算。
44.具体而言,基于混淆电路实现的多方安全计算主要包括混淆表生成和运算两个阶
段。参与多方安全计算的两方中的一方作为混淆电路生成方(以下称电路生成方),在混淆表生成阶段生成混淆电路;另一方作为混淆电路执行方(以下称电路执行方),在运算阶段执行混淆电路。
45.以下先对电路生成方生成混淆表的过程进行说明。
46.每个运算门的运算逻辑可以用真值表来表示和执行。例如,图1中与门1的真值表可以如表1所示。
47.表1
48.abc000010100111
49.一个运算门的真值表表明了该门的两根输入线(如,a和b)取任何值时,输出线(如,c)的对应真值。真值表的每一行对应两根输入线的一种输入值组合。
50.为了在电路的运算过程中,隐藏各根线的实际真值,每根线的真值0和1分别用两个随机比特串(以下称混淆串)进行标注,每根线所标注的混淆串不同。在一个例子中,在对图1中的各根线进行标注之后,表1示出的真值表可以如下。表2中,不同上下标的x表示不同的混淆串。
51.表2
52.abcx
0a
x
0b
x
0c
x
0a
x
1b
x
0c
x
1a
x
0b
x
0c
x
1a
x
1b
x
1c
53.接着,对上表的每一行,使用两根输入线的混淆串作为秘钥,加密输出线的混淆串,就得到了表3示出的混淆表。
54.表3
[0055][0056][0057]
最后,打乱每行的顺序,与门1的混淆表就准备好了。
[0058]
从表3可以得出,如果获得输入线a的一个混淆串和输入线b的一个混淆串,只能解
密出一行,得到输出线c的一个混淆串。在此过程中,从混淆串得不到原始的真值。
[0059]
混淆表准备好后,电路生成方将所有门的混淆表发送给电路执行方。
[0060]
以上是对混淆表生成过程的说明,以下再对电路执行方的运算过程进行说明。
[0061]
首先,电路执行方获取门电路每根初始输入线的实际真值的实际混淆串。这里的初始输入线是指对应于双方输入数据的各输入线,如,图1中的a,b和d。
[0062]
具体地,对于对应于电路生成方输入数据的各根输入线,电路生成方将各根输入线的实际真值的实际混淆串发送给电路执行方。
[0063]
对于对应于电路执行方输入数据的每根输入线,双方执行一次1-out-of-2 ot协议。在执行该协议的过程中,电路生成方作为ot协议发送方,准备真值0的混淆串和真值1的混淆串作为ot协议的两个输入。电路执行方作为ot协议的接收方,将其拥有的实际真值作为ot选项。ot协议的执行结果是:电路执行方获得其拥有的实际真值的实际混淆串。
[0064]
其次,电路执行方根据其获取的初始输入线的实际真值的实际混淆串,解密电路的每个门的混淆表中的一行,获得输出线的一个混淆串。比如,获得图1中输出线s的一个混淆串。
[0065]
比如,在图1示出的例子中,可以先利用输入线a和b的混淆串,解密与门1的混淆表的一行,得到输入线c的一个混淆串。然后利用输入线c和d的混淆串,解密与门2的混淆表的一行,得到s的一个混淆串。
[0066]
最后,电路执行方将电路的输出线的混淆串发送给电路生成方,电路生成方将混淆串翻译回对应的真值,即为运算结果。
[0067]
通常情况下,基于混淆电路的多方安全计算可以为任意计算,但是通信量非常大。
[0068]
由于混淆电路和秘密分享各有优缺点,因此可以将该两者结合使用。当前最流行的结合方式是aby这一多方安全计算框架,以下结合例子对该结合方式进行说明。
[0069]
假设第一方和第二方需要安全计算c=g(f(a,b)),其中,函数f()的运算基于混淆电路来实现,函数g()的运算基于秘密分享来实现。且第一方是电路生成方,a是第一方的输入数据;第二方是电路执行方,b是第二方的输入数据。
[0070]
令d=f(a,b)。应理解,为实现隐私保护,d不能暴露给任何一方。因此,现有技术采用混淆电路安全计算d2=f1(a,b,d1)。其中,f1(a,b,d1)=f(a,b)-d1,这里的d1由第一方随机生成,作为d的第一方分片。f1的安全计算结果是d的第二方分片d2,该结果由第二方获得。之后,双方采用秘密分享的技术安全计算函数g1(d1,d2)=g1(d1+d2)。
[0071]
由此可以看出,现有技术在结合使用混淆电路和秘密分享时,需要引入额外的计算,比如,f(a,b)-d1,以将混淆电路的计算结果转换为秘密分享分片。然而实现减法运算的混淆电路其性能通常较差,因为一个减法需要t个and门,t为秘密分享分片的比特数,由此会影响多方安全计算的计算效率。
[0072]
为此,本技术的发明人提出一种更高效地安全计算方案,该方案无需在混淆电路中引入额外的运算,即可实现将将混淆电路的计算结果转换为秘密分享分片。以下进行详细说明。
[0073]
图2为本说明书一个实施例披露的实施场景示意图。图2中,第一方和第二方可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。
[0074]
具体地,第一方针对混淆电路的各输出线,随机生成对应的各第一比特串:d[0]1、
d[1]1、

、d[n-1]1作为对应的各第一方分片,之后第一方还针对各输出线,确定出对应于各输出线的两个真值0和1的两个第二比特串{0-d[0]1,1-d[0]1}、{0-d[1]1,1-d[1]1}、

、{0-d[n-1]1,1-d[n-1]1},并将其加密后提供给第二方,从而第二方通过解密两个加密结果,得到各输出线对应的各第二方分片:d[0]2、d[1]2、

、d[n-1]2。最后第一方和第二方各自分别基于各输出线对应的本方分片,确定混淆电路的计算结果的本方分片d1和d2。
[0075]
在第一方和第二方分别确定出各自的本方分片d1和d2后,第一方和第二方可以基于各自确定的本方分片d1和d2,联合执行基于秘密分享的目标运算。这里的目标运算可以包括乘法以及加减法等等。
[0076]
需要说明,由于在上述安全计算的过程中,第一方只能计算得到计算结果的第一方分片d1,第二方只能计算得到计算结果的第二方分片d2,双方均无法获知计算结果d,从而可以实现计算结果的隐私保护。
[0077]
图3示出根据一个实施例的多方安全计算的方法交互图。如图3所示,该方法至少可以包括如下步骤。
[0078]
步骤302,针对混淆电路的n根输出线中任意的第i输出线,第一方随机生成第一比特串作为该第i输出线对应的第一方分片。
[0079]
其中,n根输出线的实际真值构成混淆电路计算结果的n个比特。
[0080]
上述混淆电路可以是由第一方生成,其可以用于对第一方的第一数据和第二方的第二数据进行任意的安全计算,比如,安全乘法、安全比较以及安全加减法等等。
[0081]
在一个示例中,上述第一比特串可以包括t个比特,其中,t≥n。
[0082]
步骤304,第一方基于第一比特串,确定两个第二比特串,该两个第二比特串分别对应于第i输出线的两个真值。
[0083]
如前所述,第i输出线的两个真值可以包括真值0和真值1,上述确定两个第二比特串具体可以包括:将真值0与第一比特串的差值,作为两个第二比特串中的一个第二比特串。将真值1与第一比特串的差值,作为两个第二比特串中的另一个第二比特串。
[0084]
举例来说,假设t=4,且第一比特串为d[i]1=0110,那么上述一个第二比特串为:0-d[i]1=0-0110=1010。上述另一个第二比特串为:0-d[i]1=1-0110=1011。
[0085]
步骤306,第一方利用混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密两个第二比特串,并将两个加密结果提供给第二方。
[0086]
在一个示例中,上述两个混淆串可以表示为l[i]0和l[i]1,该两个混淆串各自所包含的比特数基于安全参数的大小而确定。比如,如果安全参数的大小为128比特,那么该混淆串所包含的比特数为128。
[0087]
上述对应加密两个第二比特串可以包括:利用针对第i输出线的真值0标注的第一混淆串,加密上述一个第二比特串。利用针对第i输出线的真值1标注的第二混淆串,加密上述另一个第二比特串。
[0088]
在一个示例中,可以将第一混淆串截短成预定长度后再与一个第二比特串进行异或运算,并将异或运算的结果作为上述一个第二比特串的加密结果。另一个第二比特串的加密方法类似。
[0089]
在另一个示例中,也可以对第一混淆串进行哈希运算,之后对获得的哈希值与一个第二比特串进行异或运算,以及将异或运算的结果作为上述一个第二比特串的加密结
果。另一个第二比特串的加密方法类似。
[0090]
此外,上述在加密两个第二比特串的过程中,可以加密两个第二比特串各自的全部比特,也可以只加密两个第二比特串各自的部分比特。比如,只加密两个第二比特串各自的从最低位开始的t-i个比特。其中,0≤i≤n-1。
[0091]
应理解,在只加密两个第二比特串各自的从最低位开始的t-i个比特时,那么可以将两个第二比特串各自的经过加密的t-i个比特,作为上述两个加密结果。
[0092]
最后,第一方在获得两个加密结果之后,还可以打乱该两个加密结果的顺序,然后将乱序后的两个加密结果提供给第二方。
[0093]
步骤308,第二方利用该第i输出线的实际真值对应的实际混淆串,解密两个加密结果,得到第i输出线对应的第二方分片。
[0094]
其中,上述实际混淆串可以是由第二方通过与第一方联合执行混淆电路而获得。其中,第二方与第一方联合执行混淆电路的步骤可以与步骤302-步骤306同时执行,也可以在步骤302之前执行,本说明书对此不作限定。
[0095]
第二方和第一方联合执行混淆电路具体可以包括:第一方对混淆电路中的每根线(包括输入线和输出线)进行标注,然后针对每个需要生成混淆表的门(比如,与门),先生成对应的真值表,然后用每根线的混淆串替换真值表中的真值,并通过两次对称加密和乱序混淆之后得到对应的混淆表。之后,第一方可以将各混淆表发送给第二方。
[0096]
第二方先获取初始输入线(对应于双方输入数据的各输入线)的实际真值的实际混淆串,然后利用其解密电路的每个门的混淆表中的一行,获得每根输出线的实际真值对应的实际混淆串。
[0097]
在一个示例中,第二方可以先根据实际混淆串,从两个加密结果中选取其中一个,然后,利用该实际混淆串解密选取的其中一个加密结果,得到第i输出线对应的第二方分片。
[0098]
在另一个示例中,第二方针对两个加密结果都进行解密,之后再结合预定规则,比如,解密结果的格式是否符合预定规范,从中选取一个解密结果作为第i输出线对应的第二方分片。
[0099]
以下结合上述另一个示例,对第二方的解密过程作如下说明:
[0100]
如果上述两个加密结果是通过将两个混淆串截短成预定长度后再与两个第二比特串进行异或运算得到,那么第二方可以通过将实际混淆串截短成预定长度后再与两个加密结果进行异或运算来进行解密。而如果上述两个加密结果是通过将两个混淆串先进行哈希运算,然后将得到的两个哈希值与两个第二比特串进行异或运算得到,那么第二方可以先对实际混淆串进行哈希运算,然后将得到的哈希值与两个加密结果进行异或运算进行解密。
[0101]
应理解,由于第二方获得的实际混淆串,为第一方针对第i输出线的两个真值分别标注的两个混淆串中的一个,从而第二方只能解密出加密结果中的一个。
[0102]
此外,还需要说明,如果步骤306中针对两个第二比特串各自的全部比特进行了加密,那么第二方解密得到的第二方分片包括t个比特。以下结合前述例子进行说明。
[0103]
若第二方获得的实际混淆串与真值0相对应,则第二方解密得到的第二方分片为d[i]2=1010,而若第二方获得的实际混淆串与真值1相对应,则第二方解密得到的第二方分
片为d[i]2=1011,该两者均包括t个比特。
[0104]
而如果骤306中只针对两个第二比特串各自的从最低位开始的t-i个比特进行了加密,那么第二方解密得到的第二方分片包括t-i个比特。以下结合前述例子进行说明。
[0105]
若第二方获得的实际混淆串与真值0相对应,且i等于1,则第二方解密得到的第二方分片为d[i]2=010;而若第二方获得的实际混淆串与真值1相对应,且i等于1,则第二方解密得到的第二方分片为d[i]2=011,该两者均包括4-1=3个比特。
[0106]
至此,第一方获得了n根输出线中第i输出线对应的第一方分片,第二方获得了n根输出线中第i输出线对应的第二方分片。类似地,第一方和第二方各自分别还可以获得其它输出线的本方分片。
[0107]
步骤310,第一方和第二方,各自分别基于n根输出线中各输出线对应的本方分片,确定计算结果的本方分片。
[0108]
应理解,在实际应用中,第一方确定计算结果的本方分片的步骤可以在步骤302之后任意时刻执行。
[0109]
具体地,第一方确定计算结果的本方分片可以包括:针对第i输出线,第一方计算2的i次方与对应的第一方分片的乘积,得到第i个第一乘积。其中,0≤i≤n-1。基于针对n根输出线计算得到的n份第一乘积,确定计算结果的第一方分片。
[0110]
第二方确定计算结果的本方分片可以包括:针对第i输出线,第二方计算2的i次方与对应的第二方分片的乘积,得到第i个第二乘积。基于针对n根输出线计算得到的n份第二乘积,确定计算结果的第二方分片。
[0111]
在一个示例中,如果两个第二比特串各自的全部比特均被加密,或者说,第二方解密得到的第二方分片包括t个比特,那么第一方确定计算结果的第一方分片具体可以包括:对n份第一乘积求和,并将求和结果作为计算结果的第一方分片。以及第二方确定计算结果的第二方分片可以包括:对n份第二乘积求和,并将求和结果作为计算结果的第二方分片。
[0112]
当然,在实际应用中,也可以对上述求和结果对2
t
取模,然后将取模结果作为第一方分片或第二方分片。
[0113]
在一个例子中,可以根据如下公式确定计算结果的第一方分片:
[0114][0115]
其中,d1为计算结果的第一方分片,n为混淆电路的输出线数目,d[i]1为第i输出线的第一方分片。
[0116]
以及,根据如下公式确定计算结果的第二方分片:
[0117][0118]
d2为计算结果的第一方分片,n为混淆电路的输出线数目,d[i]2为第i输出线的第二方分片。
[0119]
在另一个示例中,如果两个第二比特串各自的从最低位开始的t-i个比特被加密,或者说,第二方解密得到的第二方分片包括t-i个比特,那么第一方确定计算结果的第一方分片具体可以包括:对n份第一乘积求和,并将求和结果对2的t次方取模后的取模结果,作为计算结果的第一方分片。以及第二方确定计算结果的第二方分片可以包括:对n份第二乘积求和,并将求和结果对2的t次方取模后的取模结果,作为计算结果的第二方分片。
[0120]
当然,在实际应用中,也可以先对每份第一乘积或者第二乘积对2的t次方取模,之后对取模结果求和,并将求和结果再一次地对2的t次方取模,得到第一方分片或者第二方分片。
[0121]
需要说明,本说明书实施例在步骤306之所以可以加密两个第二比特串各自的部分比特,是因为在确定计算结果的第一方分片和第二方分片时,将各输出线的第一方分片或第二方分片与2的i次方相乘,且对该乘积或者最后的求和结果进行了取模运算。
[0122]
本领域技术人员公知,将二进制比特串与2的i次方相乘,相当于是对二进制比特串进行了左移i位的操作,对左移后的二进制串再对2的t次方取模,相当于去除了从最高位开始的i个比特,也即实际参与求和运算的仅仅为从最低位开始的t-i个比特,因此,第一方可以只加密两个第二比特串各自的从最低位开始的t-i个比特,从而第二方只获取其中一个第二比特串的从最低位开始的t-i个比特,作为对应的第二方分片。
[0123]
以下结合例子对本方案的正确性进行说明。
[0124]
先以加密全部比特为例来说,假设n=3,t=4,则t=0,1,2;还假设计算结果为7,从而对应的二进制数为:111,即d[0]=1,d[1]=1,d[2]=1,以及d[0]1=r1,d[1]1=r2,d[2]1=r3,那么d[0]2=1-r1,则d[1]2=1-r2,d[2]2=1-r3;其中,r1、r2和r3可以为任意进制表示。
[0125]
从而按照公式1,则d1=20·
r1+21·
r2+22·
r3
[0126]
=r1+2r2+4r3;
[0127]
以及按照公式2,d2=20·
(1-r1)+21·
(1-r2)+22·
(1-r3)
[0128]
=1-r1+2-2r2+4-4r3;
[0129]
最后,d1+d2=1+2+4=7。
[0130]
再以加密从最低位开始的t-i个比特为例来说,假设n=3,t=4,则t=0,1,2;还假设计算结果为7,从而对应的二进制数为:111,即d[0]=1,d[1]=1,d[2]=1,以及d[0]1=0110,d[1]1=1011,d[2]1=1100,那么d[0]2=1011(即包括4-0=4个比特),则d[1]2=110(即包括4-1=3个比特),d[2]2=01(即包括4-2=2个比特)。其中,原始的d[0]2、d[1]2以及d[2]2分别为:1011、0110以及0101。
[0131]
从而d1=(20·
(0110)+21·
(1011)+22·
(1100))%10000
[0132]
=(00110+10110+110000)%10000
[0133]
=1100
[0134]
d2=(20·
(1011)+21·
(110)+22·
(01))%10000
[0135]
=(1011+1100+0100)%10000
[0136]
=1011
[0137]
最后,d1+d2=(01100+1011)%10000=7。
[0138]
应理解,上述只是示例性说明,在实际应用中,也可以先对各个乘积取模,然后再对求和结果取模,本说明书对此不作限定。比如:
[0139]
d1=(20·
(0110)+21·
(1011)+22·
(1100))%10000
[0140]
=(00110%10000+10110%10000+110000%10000)%10000
[0141]
=(0110+0110+0000)%10000
[0142]
=1100
[0143]
需要说明的是,在按照取模来确定上述d1和d2时,那么求和结果d1+d2也应对2的t次方取模。
[0144]
应理解,上述只是一种示例性说明,在实际应用中,n的取值范围可以为[1,128],t的取值范围可以为[8,128],且始终满足t≥n。
[0145]
综上,本说明书实施例提供的多方安全计算的方法,无需在混淆电路中引入额外的运算,即可实现将混淆电路的计算结果转换为秘密分享分片,由此可以大大提升多方安全计算效率。此外,本方案在向第二方提供两个第二比特串的过程中,只加密部分比特的方法,可以进一步确保数据的安全性。
[0146]
与上述多方安全计算的方法对应地,本说明书一个实施例还提供的一种多方安全计算的系统,如图4所示,该系统可以包括:
[0147]
第一方402,用于针对混淆电路的n根输出线中任意的第i输出线,随机生成第一比特串作为该第i输出线对应的第一方分片,其中,n根输出线的实际真值构成混淆电路计算结果的n个比特。
[0148]
第一方402,还用于基于第一比特串,确定两个第二比特串,该两个第二比特串分别对应于第i输出线的两个真值。
[0149]
其中,第i输出线的两个真值包括真值0和真值1;第一方402具体用于:
[0150]
将真值0与第一比特串的差值,作为两个第二比特串中的一个第二比特串;
[0151]
将真值1与第一比特串的差值,作为两个第二比特串中的另一个第二比特串。
[0152]
第一方402,还用于利用混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密两个第二比特串,并将两个加密结果提供给第二方404。
[0153]
第一方402具体用于:
[0154]
利用针对第i输出线的真值0标注的第一混淆串,加密一个第二比特串;
[0155]
利用针对第i输出线的真值1标注的第二混淆串,加密另一个第二比特串。
[0156]
第二方404,用于利用该第i输出线的实际真值对应的实际混淆串,解密两个加密结果,得到第i输出线对应的第二方分片。其中,实际混淆串通过与第一方402联合执行混淆电路而获得。
[0157]
第一方402和第二方404,还用于各自分别基于n根输出线中各输出线对应的本方分片,确定计算结果的本方分片。
[0158]
第一方402具体用于:
[0159]
针对第i输出线,计算2的i次方与对应的第一方分片的乘积,得到第i个第一乘积。基于针对n根输出线计算得到的n份第一乘积,确定计算结果的第一方分片;其中,0≤i≤n-1。
[0160]
第二方404具体用于:
[0161]
针对第i输出线,计算2的i次方与对应的第二方分片的乘积,得到第i个第二乘积。基于针对n根输出线计算得到的n份第二乘积,确定计算结果的第二方分片。
[0162]
其中,上述两个第二比特串各自的全部比特均被加密;
[0163]
第一方402还具体用于:
[0164]
对n份第一乘积求和,并将求和结果作为计算结果的第一方分片。
[0165]
第二方404还具体用于:
[0166]
对n份第二乘积求和,并将求和结果作为计算结果的第二方分片。
[0167]
可选地,第二比特串包括t个比特,且n≤t;
[0168]
第一方402具体用于:
[0169]
利用两个混淆串,对应加密两个第二比特串各自的从最低位开始的t-i个比特;
[0170]
将两个第二比特串各自的经过加密的t-i个比特,作为两个加密结果。
[0171]
第一方402还具体用于:
[0172]
对n份第一乘积求和,并将求和结果对2的t次方取模后的取模结果,作为计算结果的第一方分片。
[0173]
第二方404还具体用于:
[0174]
对n份第二乘积求和,并将求和结果对2的t次方取模后的取模结果,作为计算结果的第二方分片。
[0175]
可选地,第一方402具体用于:
[0176]
将两个加密结果乱序后提供给第二方404。
[0177]
第二方404具体用于:
[0178]
利用第i输出线的实际真值对应的实际混淆串,解密乱序后的两个加密结果。
[0179]
可选地,第一方402和第二方404,还用于基于各自确定的计算结果的本方分片,联合执行基于秘密分享的目标运算。
[0180]
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
[0181]
本说明书一个实施例提供的多方安全计算的系统,可以大大提升多方安全计算效率。
[0182]
与上述多方安全计算的方法对应地,本说明书一个实施例还提供的一种多方安全计算的装置,如图5所示,该装置可以包括:
[0183]
生成单元502,用于针对混淆电路的n根输出线中任意的第i输出线,随机生成第一比特串作为该第i输出线对应的第一方分片,其中,n根输出线的实际真值构成混淆电路计算结果的n个比特。
[0184]
确定单元504,用于基于第一比特串,确定两个第二比特串,该两个第二比特串分别对应于第i输出线的两个真值。
[0185]
加密单元506,用于利用混淆电路中针对该第i输出线的两个真值分别标注的两个混淆串,对应加密两个第二比特串,并将两个加密结果提供给第二方,以供第二方通过解密两个加密结果得到第i输出线对应的第二方分片,进而确定出计算结果的第二方分片。
[0186]
确定单元504,还用于基于n根输出线中各输出线对应的第一方分片,确定计算结果的第一方分片。
[0187]
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
[0188]
本说明书一个实施例提供的多方安全计算的装置,可以大大提升多方安全计算效率。
[0189]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
[0190]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3所述的方法。
[0191]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0192]
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
[0193]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0194]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0195]
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1