掌桥专利:专业的专利平台
掌桥专利
首页

实现异或分片输入输出的布尔电路、方法和系统

文献发布时间:2023-06-19 13:46:35


实现异或分片输入输出的布尔电路、方法和系统

技术领域

本说明书一个或多个实施例涉及计算机领域,尤其涉及实现异或分片输入输出的布尔电路、方法和系统。

背景技术

安全多方计算又称为多方安全计算,即多方共同计算出一个函数的结果,而不泄露这个函数各方的输入数据,计算的结果公开给其中的一方或多方。其中,各方的输入数据常常为隐私数据。

在基于布尔电路实现多方安全计算时,可能需要布尔电路的输入是两方的异或分片,布尔电路的输出也是两方的异或分片。

发明内容

本说明书一个或多个实施例描述了一种实现异或分片输入输出的布尔电路、方法和系统,能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片。

第一方面,提供了一种实现异或分片输入输出的布尔电路,该布尔电路包括:

输入处理单元,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;

计算单元,接收所述输入处理单元得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果,使得所述布尔电路执行后,所述计算结果的第一结果分片由所述第一方持有,所述计算结果的第二结果分片由所述第二方持有。

在一种可能的实施方式中,所述预设函数计算用于实现以下至少一种功能:

数学运算、比较运算、选择运算。

在一种可能的实施方式中,所述布尔电路采用混淆电路的执行方式。

进一步地,对于所述布尔电路中每根线,由所述第一方针对真值0标注有第一标注字符串,针对真值1标注有第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或偏移值;不同的线对应于相同的所述偏移值。

第二方面,提供了一种拆分数据分片的方法,用于拆分第一方面所述的布尔电路的计算结果,包括:

所述第一方选择全局的偏移值,所述偏移值的预定位是1;

所述第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;

所述第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片;

所述第二方从所述第一方获取各输入线的实际真值对应的第三标注字符串,根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串,根据所述第四标注字符串的预定位确定所述第二结果分片。

在一种可能的实施方式中,所述预定位是最低位。

在一种可能的实施方式中,所述第一结果分片异或所述第二结果分片等于所述计算结果。

在一种可能的实施方式中,所述计算结果对应多条输出线;

所述第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片,包括:

所述第一方组合所述多条输出线的真值0对应的第一标注字符串的预定位,得到所述第一结果分片;

所述第二方根据所述第四标注字符串的预定位确定所述第二结果分片,包括:

所述第二方组合所述多条输出线的所述第四标注字符串的预定位,得到所述第二结果分片。

第三方面,提供了一种拆分数据分片的系统,用于拆分第一方面所述的布尔电路的计算结果,包括:

所述第一方,用于选择全局的偏移值,所述偏移值的预定位是1;确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片;

所述第二方,用于从所述第一方获取各输入线的实际真值对应的第三标注字符串,根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串,根据所述第四标注字符串的预定位确定所述第二结果分片。

第四方面,提供了一种实现异或分片输入输出的布尔电路,所述布尔电路包括:

输入处理单元,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;

计算单元,接收所述输入处理单元得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果;

拆分单元,接收所述计算单元得到的计算结果和所述第一方输入的所述计算结果的第一结果分片,通过与所述计算结果的位数相同数目个第二异或门,得到所述计算结果的第二结果分片,并将所述第二结果分片提供给所述第二方;其中,每个所述第二异或门,接收所述计算结果的目标位和所述第一结果分片的所述目标位,输出所述第二结果分片的所述目标位。

在一种可能的实施方式中,所述预设函数计算用于实现以下至少一种功能:

数学运算、比较运算、选择运算。

在一种可能的实施方式中,所述布尔电路采用混淆电路的执行方式。

在一种可能的实施方式中,对于所述布尔电路中每根线,由所述第一方针对真值0标注有第一标注字符串,针对真值1标注有第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或偏移值;不同的线对应于相同的所述偏移值。

第五方面,提供了一种拆分数据分片的方法,用于拆分第四方面所述的布尔电路的计算结果,包括:

所述第一方选择全局的偏移值;

所述第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;

所述第一方随机生成所述计算结果的第一结果分片;

所述第二方基于从所述第一方获得的所述第二异或门的输入线中第一结果分片对应的第三标注字符串,以及所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的真值对应的标注字符串,并根据该标注字符串确定所述第二结果分片。

第六方面,提供了一种拆分数据分片的系统,用于拆分第四方面所述的布尔电路的计算结果,包括:

所述第一方,用于选择全局的偏移值;确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;随机生成所述计算结果的第一结果分片;

所述第二方,用于基于从所述第一方获得的所述第二异或门的输入线中第一结果分片对应的第三标注字符串,以及所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的真值对应的标注字符串,并根据该标注字符串确定所述第二结果分片。

第七方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面或第五方面的方法。

第八方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面或第五方面的方法。

通过本说明书实施例提供的布尔电路、方法和系统,一种布尔电路包括:输入处理单元,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;计算单元,接收所述输入处理单元得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果,使得所述布尔电路执行后,所述计算结果的第一结果分片由所述第一方持有,所述计算结果的第二结果分片由所述第二方持有。由上可见,该布尔电路的结构中,输入处理单元通过异或门来进行数据分片的合并,从而实现布尔电路能够接收异或分片的输入;计算单元得到计算结果,该计算结果不需要通过额外的电路结构进行拆分,在该布尔电路执行后,第一方和第二方分别获得计算结果的一个结果分片。能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片。此外,由于合并数据分片未用到与门,拆分计算结果不需要额外的电路结构,从而该布尔电路在执行过程中通信代价小。

相应地,一种拆分数据分片的方法,用于拆分前述布尔电路的计算结果,首先第一方选择全局的偏移值,所述偏移值的预定位是1;然后第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;接着第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片;最后第二方从所述第一方获取各输入线的实际真值对应的第三标注字符串,根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串,根据所述第四标注字符串的预定位确定所述第二结果分片。由上可见,本说明书实施例,第一方通过对标注字符串特别的选取方式,从而使得每根线的真值0对应的标注字符串和真值1对应的标注字符串,二者的预定位不同,相应地,输出线的真值0对应的标注字符串的预定位,与输出线的实际真值对应的标注字符串的预定位,二者的异或就是输出线的实际真值,因此在该布尔电路执行后,第一方和第二方分别获得计算结果的一个结果分片。

另一种布尔电路包括:输入处理单元,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;计算单元,接收所述输入处理单元得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果;拆分单元,接收所述计算单元得到的计算结果和所述第一方输入的所述计算结果的第一结果分片,通过与所述计算结果的位数相同数目个第二异或门,得到所述计算结果的第二结果分片,并将所述第二结果分片提供给所述第二方;其中,每个所述第二异或门,接收所述计算结果的目标位和所述第一结果分片的所述目标位,输出所述第二结果分片的所述目标位。由上可见,该布尔电路的结构中,输入处理单元通过异或门来进行数据分片的合并,从而实现布尔电路能够接收异或分片的输入;计算单元得到计算结果,该计算结果由拆分单元通过异或门进行拆分,使得第一方和第二方分别获得计算结果的一个结果分片。能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片。此外,由于合并数据分片和拆分计算结果都未用到与门,从而该布尔电路在执行过程中通信代价小。

相应地,一种拆分数据分片的方法,用于拆分前述布尔电路的计算结果,首先第一方选择全局的偏移值;然后第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;接着第一方随机生成所述计算结果的第一结果分片;最后第二方基于从所述第一方获得的所述第二异或门的输入线中第一结果分片对应的第三标注字符串,以及所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的真值对应的标注字符串,并根据该标注字符串确定所述第二结果分片。由上可见,本说明书实施例,利用异或门拆分计算结果,第一方通过对标注字符串特别的选取方式,从而使得第一方不必向第二方传输异或门对应的混淆表,第二方基于从所述第一方获得的异或门的输入线对应的标注字符串,通过异或计算得到异或门的输出线对应的标注字符串,该标注字符串可确定出结果分片,该方法具有较小的通信代价。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本说明书披露的一个实施例的实施场景示意图;

图2示出根据一个实施例的实现异或分片输入输出的布尔电路结构示意图;

图3示出根据一个实施例的拆分数据分片的方法交互示意图;

图4示出根据一个实施例的拆分数据分片的系统的示意性框图;

图5示出根据另一个实施例的实现异或分片输入输出的布尔电路结构示意图;

图6示出根据另一个实施例的拆分数据分片的方法交互示意图;

图7示出根据另一个实施例的拆分数据分片的系统的示意性框图。

具体实施方式

下面结合附图,对本说明书提供的方案进行描述。

图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及实现异或分片输入输出的布尔电路,其中,该布尔电路的输入为两方提供的异或分片,该布尔电路的执行通过两方联合进行多方安全计算实现,该布尔电路输出的异或分片也由两方所持有,各方可以实现为任何具有计算处理能力的设备、平台、服务器或设备集群。异或分片(XORShare),一个比特串用异或拆分为的两个比特分片。两个异或分片做异或可以获得原比特串,两方各持有一个异或分片。布尔电路(Boolean Circuit),是一组用连接线连接的逻辑门的集合,能对一组输入完成函数计算并输出结果。逻辑门包括与门(AND)、异或门(XOR)、非门(NOT)等实现布尔函数的门,一般一个函数可以编译成一组与门、异或门和非门完成计算。

参照图1,该布尔电路的输入为两方提供的异或分片,其中,第一方提供n位的数据分片a0,第二方提供n位的数据分片a1,上述数据分片为异或分片,可以理解的是,a0和a1做异或可以得到输入数据。该布尔电路的执行通过两方联合进行多方安全计算实现,例如,采用混淆电路的执行方式,得到计算结果r。该布尔电路输出的异或分片也由两方所持有,其中,第一方得到的结果分片为r0,第二方得到的结果分片为r1,可以理解的是,r0和r1做异或可以得到计算结果r。

混淆电路(Garbled Circuit,GC),是一种两方安全多方计算协议,对实现一个计算函数的布尔电路用密码函数生成混淆表,对两方输入计算出结果,并且在计算过程一方输入不会泄漏给另一方。目前混淆电路最优的实现方案,对异或门和非门不需要通信,只需要本地计算,与门需要调用密码计算并进行通信,并且在一般应用场景中通信量是吞吐量上限的瓶颈。混淆电路的通信量与布尔电路的与门数正相关。

本说明书实施例提供了实现异或分片输入输出的布尔电路,能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片,该布尔电路在执行过程中通信代价小。通信代价包括通信量和通信轮数。

图2示出根据一个实施例的实现异或分片输入输出的布尔电路结构示意图,可以基于图1所示的实施场景,用于接收输入数据的数据分片,并在进行预设函数计算后,得到计算结果,输出计算结果的结果分片。如图2所示,该布尔电路200包括:

输入处理单元21,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;

计算单元22,接收所述输入处理单元21得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果,使得所述布尔电路执行后,所述计算结果的第一结果分片由所述第一方持有,所述计算结果的第二结果分片由所述第二方持有。

可以理解的是,单个第一异或门的输入为第一数据分片和第二数据分片的第i位,输出为第一数据分片和第二数据分片合并后得到的输入数据的第i位。

异或门:c=XOR(a,b),表示c=a^b。

对于两方输入的数据分片a0和a1,输入处理单元21计算a[i]=XOR(a0[i],a1[i]),0<=i<=len(a0)。其中,a0[i]代表a0的第i位,a1[i]代表a1的第i位,a[i]代表输入数据a的第i位。

在一个示例中,所述预设函数计算用于实现以下至少一种功能:

数学运算、比较运算、选择运算。

该示例中,上述数学运算可以但不限于包括加、减、乘、除等运算,布尔电路可以作为多方安全计算的一个计算算子,实现上述预设函数计算的功能。布尔电路实现一个计算算子时,电路的输入可能是安全输入,即两方的分片,同时输出一般也是两方的分片,即不会泄漏中间结果,避免结果获取方反推出布尔电路的输入,同时作为下一步安全计算的起点。布尔电路使用异或分片,使对输入和输出处理的计算和通信代价小。

在一个示例中,所述布尔电路采用混淆电路的执行方式。

进一步地,对于所述布尔电路中每根线,由所述第一方针对真值0标注有第一标注字符串,针对真值1标注有第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或偏移值;不同的线对应于相同的所述偏移值。

该示例中,第一方对应于混淆电路中的Garbler方,第二方对应于混淆电路中的Evaluator方。

本说明书实施例提供的布尔电路,该布尔电路的结构中,输入处理单元21通过异或门来进行数据分片的合并,从而实现布尔电路能够接收异或分片的输入;计算单元22得到计算结果,该计算结果不需要通过额外的电路结构进行拆分,在该布尔电路执行后,第一方和第二方分别获得计算结果的一个结果分片。能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片。此外,由于合并数据分片未用到与门,拆分计算结果不需要额外的电路结构,从而该布尔电路在执行过程中通信代价小。

图3示出根据一个实施例的拆分数据分片的方法交互示意图,该方法可以基于图1所示的实施场景,用于拆分图2所示的布尔电路的计算结果。如图3所示,该实施例中拆分数据分片的方法包括以下步骤:步骤31,第一方选择全局的偏移值,所述偏移值的预定位是1;步骤32,第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;步骤33,第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片;步骤34,第二方从所述第一方获取各输入线的实际真值对应的第三标注字符串;步骤35,第二方根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串;步骤36,第二方根据所述第四标注字符串的预定位确定所述第二结果分片。下面描述以上各个步骤的具体执行方式。

首先在步骤31,第一方选择全局的偏移值,所述偏移值的预定位是1。可以理解的是,不同的线对应于相同的所述偏移值。

其中,第一方对应于混淆电路中的Garbler方。

本说明书实施例,偏移值和各标注字符串均为具有相同位的二进制数,可以将偏移值的任一位指定为上述预定位。

在一个示例中,所述预定位是最低位。该示例中,偏移值的最低位的比特值是1,以偏移值为4位二进制数为例,偏移值可以选取为1001、0001、0101,但是不可以选取为1000、0000、0100。

然后在步骤32,第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值。可以理解的是,上述每根线既包括布尔电路的输入线,也包括布尔电路的输出线。

本说明书实施例,第一方选择一个全局的偏移值△,对电路中每根线的真值0的标注字符串L0和真值1的标注字符串L1,有L1=L0^△,△的预定位是1,所以同一根线的L0和L1的预定位不同。

接着在步骤33,第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片。可以理解的是,如果计算结果对应的输出线只有一条,那么可以直接将上述预定位作为所述第一结果分片。

在一个示例中,所述计算结果对应多条输出线;

所述第一方根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片,包括:

所述第一方组合所述多条输出线的真值0对应的第一标注字符串的预定位,得到所述第一结果分片。

再在步骤34,第二方从所述第一方获取各输入线的实际真值对应的第三标注字符串。可以理解的是,布尔电路通常具有多条输入线,第一方具有部分输入线的实际真值,第二方具有其他输入线的实际真值,第一方可以直接将自己具有的部分输入线的实际真值对应的标注字符串发送给第二方,由于第二方具有其他输入线的实际真值,第一方可以通过不经意传输的方式,将第二方具有的其他输入线的实际真值对应的标注字符串发送给第二方。

其中,第二方对应于混淆电路中的Evaluator方。

举例来说,布尔电路具有两条输入线,分别记为L1和L2。第一方具有L1的实际真值0,第二方具有L2的实际真值1,第一方可以直接将L1的真值0对应的标注字符串发送给第二方,由于第二方具有L2的实际真值1,第一方可以通过不经意传输的方式,将第二方具有的L2的真值1对应的标注字符串发送给第二方。由此,第二方就获得了所有输入线的实际真值对应的标注字符串。

再在步骤35,第二方根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串。可以理解的是,第二方可以通过解密混淆表的方式,算出输出线的实际真值对应的标注字符串;或者,可以通过逻辑运算的方式,算出输出线的实际真值对应的标注字符串;或者,可以结合以上两种方式,算出输出线的实际真值对应的标注字符串。

本说明书实施例,第一方可以针对布尔电路中的全部布尔门或者部分布尔门分别生成混淆表,然后将各个布尔门对应的混淆表发送给第二方,以便第二方可以通过解密混淆表的方式,算出输出线的实际真值对应的标注字符串。

最后在步骤36,第二方根据所述第四标注字符串的预定位确定所述第二结果分片。可以理解的是,如果计算结果对应的输出线只有一条,那么可以直接将上述预定位作为所述第二结果分片。

在一个示例中,所述计算结果对应多条输出线;

所述第二方根据所述第四标注字符串的预定位确定所述第二结果分片,包括:

所述第二方组合所述多条输出线的所述第四标注字符串的预定位,得到所述第二结果分片。

在一个示例中,所述第一结果分片异或所述第二结果分片等于所述计算结果。

举例来说,第一方选择一个全局的偏移值△,对电路中每根线的真值0的标注字符串L0和真值1的标注字符串L1,有L1=L0^△,△的预定位是1,所以同一根线的L0和L1的预定位不同。以上述预定位是最低位为例,L0的最低比特叫permute bit,第一方知道输出线的permutebit,第二方算出输出线实际真值对应的标注字符串Li,Li的最低比特叫selectbit,输出线的实际真值bit=permute bit^selectbit。

本说明书实施例提供的方法,第一方通过对标注字符串特别的选取方式,从而使得每根线的真值0对应的标注字符串和真值1对应的标注字符串,二者的预定位不同,相应地,输出线的真值0对应的标注字符串的预定位,与输出线的实际真值对应的标注字符串的预定位,二者的异或就是输出线的实际真值,因此在该布尔电路执行后,第一方和第二方分别获得计算结果的一个结果分片。

根据另一方面的实施例,还提供一种拆分数据分片的系统,用于拆分图2所示的布尔电路的计算结果,所述系统包括第一方和第二方,用于执行本说明书实施例提供的图3所示的方法中第一方和第二方执行的动作。图4示出根据一个实施例的拆分数据分片的系统的示意性框图。如图4所示,该系统400包括:

第一方41,用于选择全局的偏移值,所述偏移值的预定位是1;确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;根据所述计算结果的输出线的真值0对应的第一标注字符串的预定位,确定所述第一结果分片;

第二方42,用于从所述第一方41获取各输入线的实际真值对应的第三标注字符串,根据各输入线的第三标注字符串算出输出线的实际真值对应的第四标注字符串,根据所述第四标注字符串的预定位确定所述第二结果分片。

可选地,作为一个实施例,所述预定位是最低位。

可选地,作为一个实施例,所述第一结果分片异或所述第二结果分片等于所述计算结果。

可选地,作为一个实施例,所述计算结果对应多条输出线;

所述第一方41,具体用于组合所述多条输出线的真值0对应的第一标注字符串的预定位,得到所述第一结果分片;

所述第二方42,具体用于组合所述多条输出线的所述第四标注字符串的预定位,得到所述第二结果分片。

图5示出根据另一个实施例的实现异或分片输入输出的布尔电路结构示意图,可以基于图1所示的实施场景,用于接收输入数据的数据分片,并在进行预设函数计算后,得到计算结果,经过对计算结果拆分后,输出计算结果的结果分片。如图5所示,该布尔电路500包括:

输入处理单元51,接收第一方输入的n位第一数据分片和第二方输入的n位第二数据分片,通过n个第一异或门,得到输入数据;其中,每个所述第一异或门,接收所述第一数据分片的目标位和所述第二数据分片的所述目标位,输出所述输入数据的所述目标位;

计算单元52,接收所述输入处理单元51得到的所述输入数据,针对所述输入数据进行预设函数计算,得到计算结果;

拆分单元53,接收所述计算单元52得到的计算结果和所述第一方输入的所述计算结果的第一结果分片,通过与所述计算结果的位数相同数目个第二异或门,得到所述计算结果的第二结果分片,并将所述第二结果分片提供给所述第二方;其中,每个所述第二异或门,接收所述计算结果的目标位和所述第一结果分片的所述目标位,输出所述第二结果分片的所述目标位。

可以理解的是,单个第一异或门的输入为第一数据分片和第二数据分片的第i位,输出为第一数据分片和第二数据分片合并后得到的输入数据的第i位。

异或门:c=XOR(a,b),表示c=a^b。

对于两方输入的数据分片a0和a1,输入处理单元51计算a[i]=XOR(a0[i],a1[i]),0<=i<=len(a0)。其中,a0[i]代表a0的第i位,a1[i]代表a1的第i位,a[i]代表输入数据a的第i位。

可以理解的是,单个第二异或门的输入为计算结果和第一结果分片的第i位,输出为第二结果分片的第i位。

对于计算单元52得到的计算结果r和第一方输入的第一结果分片r0,拆分单元53计算r1[i]=XOR(r[i],r0[i]),0<=i<=len(r)。其中,r[i]代表r的第i位,r0[i]代表r0的第i位,r1[i]代表第二结果分片r1的第i位。

在一个示例中,所述预设函数计算用于实现以下至少一种功能:

数学运算、比较运算、选择运算。

该示例中,上述数学运算可以但不限于包括加、减、乘、除等运算,布尔电路可以作为多方安全计算的一个计算算子,实现上述预设函数计算的功能。布尔电路实现一个计算算子时,电路的输入可能是安全输入,即两方的分片,同时输出一般也是两方的分片,即不会泄漏中间结果,避免结果获取方反推出布尔电路的输入,同时作为下一步安全计算的起点。布尔电路使用异或分片,使对输入和输出处理的计算和通信代价小。

在一个示例中,所述布尔电路采用混淆电路的执行方式。

进一步地,对于所述布尔电路中每根线,由所述第一方针对真值0标注有第一标注字符串,针对真值1标注有第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或偏移值;不同的线对应于相同的所述偏移值。

该示例中,第一方对应于混淆电路中的Garbler方,第二方对应于混淆电路中的Evaluator方。

采用混淆电路的执行方式执行布尔电路时,Garbler方保留第一结果分片r0作为上述计算结果的异或分片,Evaluator方计算出各输出线的标注字符串,并在Garbler方的协助下获得各输出线的真值比特串r1,r0和r1是r的异或分片。

本说明书实施例提供的布尔电路,该布尔电路的结构中,输入处理单元51通过异或门来进行数据分片的合并,从而实现布尔电路能够接收异或分片的输入;计算单元52得到计算结果,该计算结果由拆分单元53通过异或门进行拆分,使得第一方和第二方分别获得计算结果的一个结果分片。能够在保护隐私数据的前提下,实现布尔电路能够接收异或分片的输入,并且输出异或分片。此外,由于合并数据分片和拆分计算结果都未用到与门,从而该布尔电路在执行过程中通信代价小。

图6示出根据另一个实施例的拆分数据分片的方法交互示意图,该方法可以基于图1所示的实施场景,用于拆分图5所示的布尔电路的计算结果。如图6所示,该实施例中拆分数据分片的方法包括以下步骤:步骤61,第一方选择全局的偏移值;步骤62,第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;步骤63,第一方随机生成所述计算结果的第一结果分片;步骤64,第二方从所述第一方获得所述第二异或门的输入线中第一结果分片对应的第三标注字符串;步骤65,第二方基于第三标注字符串,以及通过计算得到的所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的实际真值对应的标注字符串;步骤66,第二方根据该标注字符串确定所述第二结果分片。下面描述以上各个步骤的具体执行方式。

首先在步骤61,第一方选择全局的偏移值。可以理解的是,不同的线对应于相同的所述偏移值。

其中,第一方对应于混淆电路中的Garbler方。

本说明书实施例,偏移值和各标注字符串均为具有相同位的二进制数,对于偏移值的各位的取值没有限制。

然后在步骤62,第一方确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值。可以理解的是,上述每根线既包括布尔电路的输入线,也包括布尔电路的输出线。

本说明书实施例,第一方选择一个全局的偏移值△,对电路中每根线的真值0的标注字符串L0和真值1的标注字符串L1,有L1=L0^△。

接着在步骤63,第一方随机生成所述计算结果的第一结果分片。可以理解的是,第一结果分片作为计算结果的一个异或分片,由第一方持有。

再在步骤64,第二方从所述第一方获得所述第二异或门的输入线中第一结果分片对应的第三标注字符串。可以理解的是,第一方具有第一结果分片对应的实际真值,因此可以直接将上述第三标注字符串发送给第二方。

其中,第二方对应于混淆电路中的Evaluator方。

再在步骤65,第二方基于第三标注字符串,以及通过计算得到的所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的实际真值对应的标注字符串。可以理解的是,上述第四标注字符串是第二方在执行布尔电路的过程中计算得到的,通过对第二异或门的两条输入线的真值的标注字符串进行异或计算,可以得到第二异或门的输出线的真值对应的标注字符串,这一过程不涉及解密混淆表。

举例来说,异或门的两条输入线分别记作L1和L2,其中,L1的真值0对应的标注字符串为a,L1的真值1对应的标注字符串为a^△,L2的真值0对应的标注字符串为b,L1的真值1对应的标注字符串为b^△,第二方得到的第三标注字符串为a,第四标注字符串为b^△,通过异或计算得到异或门的输出线的实际真值对应的标注字符串为a^b^△。

最后在步骤66,第二方根据该标注字符串确定所述第二结果分片。可以理解的是,第二方可以在第一方的协助下获得各输出线的真值比特串。

本说明书实施例提供的方法,利用异或门拆分计算结果,第一方通过对标注字符串特别的选取方式,从而使得第一方不必向第二方传输异或门对应的混淆表,第二方基于从所述第一方获得的异或门的输入线对应的标注字符串,通过异或计算得到异或门的输出线对应的标注字符串,该标注字符串可确定出结果分片,该方法具有较小的通信代价。

根据另一方面的实施例,还提供另一种拆分数据分片的系统,用于拆分图5所示的布尔电路的计算结果,所述系统包括第一方和第二方,用于执行本说明书实施例提供的图6所示的方法中第一方和第二方执行的动作。图7示出根据另一个实施例的拆分数据分片的系统的示意性框图。如图7所示,该系统700包括:

第一方71,用于选择全局的偏移值;确定所述布尔电路中每根线的真值0对应的第一标注字符串和真值1对应的第二标注字符串,对于每根线满足第二标注字符串等于第一标注字符串异或所述偏移值;随机生成所述计算结果的第一结果分片;

第二方72,用于基于从所述第一方71获得的所述第二异或门的输入线中第一结果分片对应的第三标注字符串,以及所述第二异或门的输入线中所述计算结果对应的第四标注字符串,通过异或计算得到所述第二异或门的输出线的真值对应的标注字符串,并根据该标注字符串确定所述第二结果分片。

根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3或图6所描述的方法。

根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3或图6所描述的方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

技术分类

06120113807613