用于实现两方多分支条件的布尔电路的制作方法

文档序号:28160140发布日期:2021-12-24 19:23阅读:265来源:国知局
用于实现两方多分支条件的布尔电路的制作方法

1.本说明书一个或多个实施例涉及计算机领域,尤其涉及用于实现两方多分支条件的布尔电路。


背景技术:

2.安全多方计算又称为多方安全计算,即多方共同计算出一个函数的结果,而不泄露这个函数各方的输入数据,计算的结果公开给其中的一方或多方。其中,各方的输入数据常常为隐私数据。
3.两方多分支条件是安全多方计算中用户运算逻辑的基本运算功能之一,用于根据顺次执行的n个分支条件中成立的分支条件,从按顺序排列的n+1个数值中返回该成立的分支条件对应的数值,其中任一分支条件包括对两方各自持有的隐私数据的大小比较。


技术实现要素:

4.本说明书一个或多个实施例描述了一种用于实现两方多分支条件的布尔电路,能够在保护隐私数据的前提下,实现两方多分支条件。
5.第一方面,提供了一种用于实现两方多分支条件的布尔电路,所述布尔电路包括:
6.比较单元,用于确定n个分支条件中的每个分支条件的比较结果;其中,n个分支条件分别对应顺序排列的n个数值,任一分支条件包括对第一方和第二方各自持有的隐私数据的大小比较;
7.选择单元,用于以第n+1个数值为中间结果的初始值,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,其中第n+1个数值为所有分支条件全部不成立时的一个值;每轮选择处理包括:根据当前数值对应的分支条件的比较结果,从当前数值和上一轮的中间结果中选择之一作为本轮的中间结果;将所述n轮选择处理之后的中间结果作为多分支条件的处理结果。
8.在一种可能的实施方式中,所述比较单元进一步包括分别对应于n个分支条件的n个比较子单元;
9.每个比较子单元,接收其对应的分支条件需要比较的隐私数据,输出该分支条件对应的比较结果。
10.在一种可能的实施方式中,所述n+1个数值中的每个数值为l位;所述选择单元进一步包括分别对应于所述n个数值中的各个位的n乘以l个选择子单元;
11.每个选择子单元,接收当前数值对应的分支条件的比较结果、当前数值的目标位和上一轮的中间结果的所述目标位,通过单个与门,输出本轮的中间结果的所述目标位。
12.进一步地,所述选择子单元进一步包括:第一异或门、第一与门作为所述单个与门和第二异或门;
13.所述第一异或门,接收当前数值的目标位和上一轮的中间结果的所述目标位,输出第一中间值;
14.所述第一与门,接收所述第一中间值和当前数值对应的分支条件的比较结果,输出第二中间值;
15.所述第二异或门,接收所述第二中间值和当前数值的目标位,输出本轮的中间结果的所述目标位。
16.在一种可能的实施方式中,所述布尔电路还包括:
17.拆分单元,用于将多分支条件的处理结果拆分为对应的分片分别输出给第一方和第二方。
18.在一种可能的实施方式中,所述第一方具有第一隐私数据集合中的n个隐私数据,所述第二方具有第二隐私数据集合中的n个隐私数据,所述比较结果基于所述第一隐私数据集合中的第一隐私数据和所述第二隐私数据集合中的第二隐私数据之间是否满足预设比较关系表征。
19.进一步地,所述预设比较关系包括如下至少一种:
20.小于、小于等于、等于、大于等于、大于。
21.在一种可能的实施方式中,所述布尔电路采用混淆电路的执行方式。
22.第二方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机实现第一方面的布尔电路。
23.第三方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的布尔电路。
24.通过本说明书实施例提供的布尔电路,所述布尔电路包括:比较单元,用于确定n个分支条件中的每个分支条件的比较结果;其中,n个分支条件分别对应顺序排列的n个数值,任一分支条件包括对第一方和第二方各自持有的隐私数据的大小比较;选择单元,用于以第n+1个数值为中间结果的初始值,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,其中第n+1个数值为所有分支条件全部不成立时的一个值;每轮选择处理包括:根据当前数值对应的分支条件的比较结果,从当前数值和上一轮的中间结果中选择之一作为本轮的中间结果;将所述n轮选择处理之后的中间结果作为多分支条件的处理结果。由上可见,本说明书实施例,通过比较单元确定n个分支条件中的每个分支条件的比较结果,通过选择单元,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,从而提供了一种通过布尔电路实现两方多分支条件的具体方式,能够在保护隐私数据的前提下,实现两方多分支条件。
附图说明
25.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
26.图1为本说明书披露的一个实施例的实施场景示意图;
27.图2示出根据一个实施例的用于实现两方多分支条件的布尔电路结构示意图;
28.图3示出根据一个实施例的选择子单元的结构示意图。
具体实施方式
29.下面结合附图,对本说明书提供的方案进行描述。
30.图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及用于实现两方多分支条件的布尔电路。已有技术通常顺次执行n个分支条件,当某个分支条件成立时,从按顺序排列的n+1个数值中返回该成立的分支条件对应的数值,其中任一分支条件包括对第一方和第二方各自持有的隐私数据的大小比较。参照图1,第一方和第二方各自具有n个隐私数据,用于构造n个分支条件,第一方具有a0,

a(n

1)共n个隐私数据,第二方具有b0,

b(n

1)共n个隐私数据,每个分支条件对应一个其成立时返回的数值,n个分支条件均不成立时对应有返回的数值,共有n+1个可能的返回的数值,可表示为c0,

cn,这n+1个数值全部由第一方或第二方提供,或者,这n+1个数值中部分由第一方提供,另一部分由第二方提供,例如,第一方提供c0,c1,c2,第二方提供c3,

cn,图中仅示出这n+1个数值全部由第一方提供的场景。上述多分支条件执行后返回的数值可以直接提供给第一方和第二方,或者,上述多分支条件执行后返回的数值可以以分片的形式分布在第一方和第二方,第一方得到的数值的分片记为r0,第二方得到的数值的分片记为r1,r0与r1合并之后即为上述返回的数值。
31.可以理解的是,上述数值的分片可以为加法分片或异或分片。加法分片(addshare),一个数在模2
n
空间的整数环上用减法拆分为两个加法分片,这两个加法分片在模2
n
空间的整数环上相加可以获得原数,两方各持有一个加法分片。加法分片是无符号数。异或分片(xorshare),一个比特串用异或拆分为的两个比特分片。两个异或分片做异或可以获得原比特串,两方各持有一个异或分片。
32.上述分支条件包括比较操作,可以为<、<=、==、>=、>等比较操作,以各分支条件包括的比较操作都为<为例,多分支条件可以用于完成如下计算:
33.if a0<b0
34.return c0
35.elif a1<b1
36.return c1
37.……
38.elif a(n

1)<b(n

1)
39.return c(n

1)
40.else
41.return cn
42.可以理解是,上述多分支条件包括顺次执行的n个分支条件,第一个分支条件为a0<b0,先确定该分支条件对应的比较结果,如果比较结果表明a0<b0成立,那么返回的数值为c0,并且无需执行后续的分支条件,如果比较结果表明a0<b0不成立,则执行第二个分支条件;第二个分支条件为a1<b1,如果a1<b1成立,那么返回的数值为c1,并且无需执行后续的分支条件,如果a1<b1不成立,则执行第三个分支条件;
……
;第n个分支条件为a(n

1)<b(n

1),如果a(n

1)<b(n

1)成立,那么返回的数值为c(n

1),如果a(n

1)<b(n

1)不成立,那么返回的数值为cn。
43.布尔电路(boolean circuit):是一组用连接线连接的逻辑门的集合,能对一组输
入完成函数计算并输出结果。逻辑门包括与门(and)、异或门(xor)、非门(not)等实现布尔函数的门,一般一个函数可以编译成一组与门、异或门和非门完成计算。
44.本说明书实施例,通过比较单元确定n个分支条件中的每个分支条件的比较结果,通过选择单元,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,从而提供了一种通过布尔电路实现两方多分支条件的具体方式,能够在保护隐私数据的前提下,实现两方多分支条件。
45.下面将基于图2详细说明本发明的布尔电路的结构。
46.图2示出根据一个实施例的用于实现两方多分支条件的布尔电路结构示意图,该实施例可以基于图1所示的实施场景。如图2所示,该布尔电路200包括:
47.比较单元21,用于确定n个分支条件中的每个分支条件的比较结果;其中,n个分支条件分别对应顺序排列的n个数值,任一分支条件包括对第一方和第二方各自持有的隐私数据的大小比较;
48.选择单元22,用于以第n+1个数值为中间结果的初始值,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,其中第n+1个数值为所有分支条件全部不成立时的一个值;每轮选择处理包括:根据当前数值对应的分支条件的比较结果,从当前数值和上一轮的中间结果中选择之一作为本轮的中间结果;将所述n轮选择处理之后的中间结果作为多分支条件的处理结果。
49.可以理解的是,上述n轮选择处理与通常的多分支条件的执行顺序相反,按照从后到前的顺序执行n轮选择处理,以实现多分支条件的顺次执行。
50.可选地,作为一个实施例,所述比较单元21进一步包括分别对应于n个分支条件的n个比较子单元;
51.每个比较子单元,接收其对应的分支条件需要比较的隐私数据,输出该分支条件对应的比较结果。
52.可以理解的是,通过n个比较子单元确定出n个比较结果,可以表示为si=cmp_circuit(ai,bi),其中,i的取值为0到n

1,分别对应于n个分支条件,ai和bi代表对应的分支条件需要比较的隐私数据,si代表该分支条件对应的比较结果。举例来说,第一个分支条件为a0<b0,如果a0<b0成立,那么比较结果s0为0,如果a0<b0不成立,那么比较结果s0为1;第二个分支条件为a1<b1,如果a1<b1成立,那么比较结果s1为0,如果a1<b1不成立,那么比较结果s1为1;
……
;第n个分支条件为a(n

1)<b(n

1),如果a(n

1)<b(n

1)成立,那么比较结果s(n

1)为0,如果a1<b1不成立,那么比较结果s(n

1)为1。
53.可选地,作为一个实施例,所述第一方具有第一隐私数据集合中的n个隐私数据,所述第二方具有第二隐私数据集合中的n个隐私数据,所述比较结果基于所述第一隐私数据集合中的第一隐私数据和所述第二隐私数据集合中的第二隐私数据之间是否满足预设比较关系表征。
54.进一步地,所述预设比较关系包括如下至少一种:
55.小于、小于等于、等于、大于等于、大于。
56.本说明书实施例,所述n个分支条件中的每个分支条件可以对应于相同的预设比较关系,例如,均为小于,也可以对应于不同的预设比较关系,例如,一个分支条件对应的预设比较关系为小于,另一个分支条件对应的预设比较关系为大于。
57.可选地,作为一个实施例,所述n+1个数值中的每个数值为l位;所述选择单元22进一步包括分别对应于所述n个数值中的各个位的n乘以l个选择子单元;
58.每个选择子单元,接收当前数值对应的分支条件的比较结果、当前数值的目标位和上一轮的中间结果的所述目标位,通过单个与门,输出本轮的中间结果的所述目标位。
59.举例来说,所述n+1个数值依次为c0,c1,

c(n

1),cn,每个数值为l位,以c0为例,其各位可以分别记作c0[0],c0[1],

c0[l

1],以cn为例,其各位可以分别记作cn[0],cn[1],

cn[l

1]。
[0060]
本说明书实施例,可以通过赋值门来给中间结果赋值。赋值门是一种常见的逻辑门,可以表示为:c=eqw(a),c=a。
[0061]
以第n+1个数值为中间结果的初始值,可以通过l个赋值门实现将第n+1个数值赋值给中间结果。可表示为如下的赋值语句:
[0062]
for i in range(0,l

1):
[0063]
w[i]=eqw(cn[i])
[0064]
可以理解的是,cn代表第n+1个数值,cn[i]代表cn的第i位,w代表中间结果,w[i]代表w的第i位。
[0065]
进一步地,所述选择子单元进一步包括:第一异或门、第一与门作为所述单个与门和第二异或门;
[0066]
所述第一异或门,接收当前数值的目标位和上一轮的中间结果的所述目标位,输出第一中间值;
[0067]
所述第一与门,接收所述第一中间值和当前数值对应的分支条件的比较结果,输出第二中间值;
[0068]
所述第二异或门,接收所述第二中间值和当前数值的目标位,输出本轮的中间结果的所述目标位。
[0069]
本说明书实施例,可以通过两个异或门和一个与门来实现每轮选择处理中针对数值的某一位的选择。异或门和与门是常见的逻辑门,异或门可以表示为:c=xor(a,b),c=a^b;与门可以表示为:c=and(a,b),c=a&b。
[0070]
n个比较子单元和n乘以l个选择子单元可以对应于如下的循环语句:
[0071]
for i in range(0,n

1):
[0072]
si=cmp_circuit(ai,bi)
[0073]
for j in range(0,l

1):
[0074]
t0=xor(w[j],ci[j])
[0075]
t1=and(t0,si)
[0076]
w[j]=xor(t1,ci[j])
[0077]
可以理解的是,n代表分支条件的数目,ai和bi代表分支条件i需要比较的隐私数据,si代表分支条件i对应的比较结果,ci代表分支条件i对应的数值,ci[j]代表ci的第j位,w代表中间结果,w[j]代表w的第j位,t0代表第一中间值,t1代表第二中间值。
[0078]
本说明书实施例,与通常的循环语句的执行顺序不同,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,第一轮选择处理时,w为cn,ci为c(n

1),si为0时,第一轮的中间结果为c(n

1),si为1时,第一轮的中间结果为cn。对于其他各轮
的选择处理,可以以此类推,在此不做赘述。
[0079]
图3示出根据一个实施例的选择子单元的结构示意图。参照图3,选择子单元包括:第一异或门31、第一与门32和第二异或门33;
[0080]
所述第一异或门31,接收当前数值的目标位ci[j]和上一轮的中间结果的所述目标位w[j],输出第一中间值t0;
[0081]
所述第一与门32,接收所述第一中间值t0和当前数值对应的分支条件的比较结果si,输出第二中间值t1;
[0082]
所述第二异或门33,接收所述第二中间值t1和当前数值的目标位ci[j],输出本轮的中间结果的所述目标位w[j]。
[0083]
可以理解的是,选择单元22包括的分别对应于所述n个数值中的各个位的n乘以l个选择子单元具有相同的结构,因此共需要n乘以l个与门。
[0084]
需要说明的是,本说明书实施例提供的电路结构并不唯一,在图3所示的电路结构基础上进行略微改动,也能实现上述选择子单元的功能,只要保证单个与门即可。
[0085]
可选地,作为一个实施例,所述布尔电路还包括:
[0086]
拆分单元,用于将多分支条件的处理结果拆分为对应的分片分别输出给第一方和第二方。
[0087]
可选地,作为一个实施例,所述布尔电路采用混淆电路的执行方式。
[0088]
混淆电路(garbled circuit,gc),是一种两方安全多方计算协议,对实现一个计算函数的布尔电路用密码函数生成混淆表,对两方输入计算出结果,并且在计算过程一方输入不会泄漏给另一方。目前混淆电路最优的实现方案,对异或门和非门不需要通信,只需要本地计算,与门需要调用密码计算并进行通信,并且在一般应用场景中通信量是吞吐量上限的瓶颈。混淆电路的通信量与布尔电路的与门数正相关。
[0089]
本说明书实施例通过布尔电路实现任意多分支条件,对于n个分支,即n个比较,要选择的数值是n+1个,每个数值为l位,其选择单元只需要n*l个与门。该电路通过混淆电路一轮能完成计算,能够达到最小通信代价。
[0090]
通过本说明书实施例提供的布尔电路,所述布尔电路包括:比较单元21,用于确定n个分支条件中的每个分支条件的比较结果;其中,n个分支条件分别对应顺序排列的n个数值,任一分支条件包括对第一方和第二方各自持有的隐私数据的大小比较;选择单元22,用于以第n+1个数值为中间结果的初始值,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,其中第n+1个数值为所有分支条件全部不成立时的一个值;每轮选择处理包括:根据当前数值对应的分支条件的比较结果,从当前数值和上一轮的中间结果中选择之一作为本轮的中间结果;将所述n轮选择处理之后的中间结果作为多分支条件的处理结果。由上可见,本说明书实施例,通过比较单元确定n个分支条件中的每个分支条件的比较结果,通过选择单元,对于n个分支条件对应的n个数值按照从后到前的顺序分别执行n轮选择处理,从而提供了一种通过布尔电路实现两方多分支条件的具体方式,能够在保护隐私数据的前提下,实现两方多分支条件。
[0091]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机实现结合图2所描述的布尔电路。
[0092]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器
中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所描述的布尔电路。
[0093]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0094]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1