基于混淆电路的布尔电路连续执行方法及装置与流程

文档序号:29413783发布日期:2022-03-26 12:32阅读:143来源:国知局
基于混淆电路的布尔电路连续执行方法及装置与流程

1.本说明书一个或多个实施例涉及安全计算技术领域,尤其涉及基于混淆电路的布尔电路连续执行方法及装置。


背景技术:

2.混淆电路(garbled circuit,gc)是一种安全多方计算协议,通过布尔电路构造安全函数计算,从而使得参与者可以针对输入数值来计算结果,而不需要知道他们在计算式中输入的具体数字。混淆电路可以用于多方安全计算过程中。安全多方计算(secure multi-party computation)也可以称为多方安全计算(mpc),可以针对无可信第三方的情况下,安全地计算一个约定函数的问题。安全多方计算可以应用于联合训练模型、隐私求交、安全比较等多种业务场景。使用混淆电路方法进行布尔电路连续执行过程中,根据业务场景的复杂程度,布尔电路的数量也不同。对于计算量较大的业务场景而言,计算过程中的通信量及通信效率直接影响着安全计算的布尔电路连续执行效率。


技术实现要素:

3.本说明书一个或多个实施例描述了一种基于混淆电路的布尔电路连续执行方法及装置,用以解决背景技术提到的一个或多个问题。
4.根据第一方面,提供了一种基于混淆电路的布尔电路连续执行方法,所述布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线对应第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有的第一随机字符串;所述方法由计算方执行,包括:根据预先从混淆方获取的第一混淆表执行第一算子电路,得到所述第一输出线对应的第一输出标签,所述第一输出标签是混淆方在生成所述第一混淆表过程中针对所述第一输出线确定的两个备选标签之一;与混淆方同步对第二算子电路对应的第二混淆表的选择结果,以获取混淆方针对所述第一输出线、所述第一输入线提供的第一转换字符串,所述第一转换字符串用于描述所述第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间的转换关系;根据所述第一转换字符串与所述第一输出标签的异或结果确定所述第一输入线对应的第一输入标签;基于所述第一输入标签和所述第二混淆表执行所述第二算子电路。
5.在一个实施例中,所述布尔电路的执行过程中,从混淆方获取基于相应输入线的备选标签提供的混淆方对应的输入标签,经由不经意传输方式从混淆方获取计算方对应的输入标签。
6.在一个进一步的实施例中,计算方存储有预先通过不经意传输方式从混淆方获取的选择数据集,所述选择数据集中的单条选择数据包括从两个候选比特中选择的单个选择比特,以及相应的两个参考字符串中与所述单个选择比特对应的单个选择字符串,计算方针对本地的单个输入比特对应的单个输入标签基于单条选择数据确定。
7.在一个实施例中,由计算方提供的输入比特包括第一比特,所述第一比特对应的
第二输入标签通过以下方式确定:从所述选择数据中随机选择对应有第一选择比特和第一选择字符串的第一选择数据;将所述第一比特与所述第一选择比特对应的第一异或结果提供给混淆方,以供混淆方根据所述第一异或结果向计算方提供两个候选比特分别对应的两份密文,所述两份密文由所述第一选择数据对应的两个参考字符串分别对相应的两个备选标签加密得到;用所述第一选择字符串基于所述两份密文解密得到所述第二输入标签。
8.其中,在所述第一比较结果为相同的情况下,混淆方使用两个参考字符串按照相对应的候选比特对两个备选标签分别加密,得到所述两份密文;在所述第一比较结果为不同的情况下,混淆方使用两个参考字符串对两个备选标签按照候选比特交叉加密,得到所述两份密文。
9.在一个实施例中,所述第一算子电路为第一类型的算子电路,所述第一混淆表从混淆方为第一类型的算子电路生成的多份混淆表中确定;所述第二算子电路为第二类型的算子电路,所述第二混淆表从混淆方为第二类型的算子电路生成的多份混淆表中确定。
10.在一个实施例中,所述第一混淆表、所述第二混淆表由混淆方、计算方中的一方选定或指定并告知另一方,或者由双方通过协商确定。
11.根据第二方面,提供一种基于混淆电路的布尔电路连续执行方法,所述布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线对应第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有的第一随机字符串;所述方法由混淆方执行,包括:与计算方同步对第二算子电路对应的第二混淆表的选择结果;根据所述第二混淆表的选择结果,确定用于描述所述第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间的转换关系的第一转换字符串;向计算方提供所述第一转换字符串,以供计算方基于所述第一字符串确定所述第一输出线的第一输出标签,从而执行所述第二算子电路。
12.在一个实施例中,所述第一转换字符串为所述第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间进行异或操作得到的字符串。
13.根据第三方面,提供一种基于混淆电路的布尔电路连续执行装置,所述布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线对应第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有的第一随机字符串;所述装置设于计算方,包括:
14.执行单元,配置为根据预先从混淆方获取的第一混淆表执行第一算子电路,得到所述第一输出线对应的第一输出标签,所述第一输出标签是混淆方在生成所述第一混淆表过程中针对所述第一输出线确定的两个备选标签之一;
15.选择单元,配置为与混淆方同步对第二算子电路对应的第二混淆表的选择结果,以获取混淆方针对所述第一输出线、所述第一输入线提供的第一转换字符串,所述第一转换字符串用于描述所述第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间的转换关系;
16.确定单元,配置为根据所述第一转换字符串与所述第一输出标签的异或结果确定所述第一输入线对应的第一输入标签;
17.所述执行单元,还配置为基于所述第一输入标签和所述第二混淆表执行所述第二算子电路。
18.根据第四方面,提供一种基于混淆电路的布尔电路连续执行装置,所述布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线对应第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有的第一随机字符串;所述装置设于混淆方,包括:
19.选择单元,配置为与计算方同步对第二算子电路对应的第二混淆表的选择结果;
20.确定单元,配置为根据所述第二混淆表的选择结果,确定用于描述所述第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间的转换关系的第一转换字符串;
21.提供单元,配置为向计算方提供所述第一转换字符串,以供计算方基于所述第一字符串确定所述第一输出线的第一输出标签,从而执行所述第二算子电路。
22.根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
23.根据第六方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
24.通过本说明书实施例提供的方法和装置,在多方安全计算的业务处理过程中,基于混淆电路将业务处理过程拆分为多个算子电路的连续执行过程。在业务执行过程开始之前,可以预先存储大量混淆表数据。其中,在靠前电路的输出线作为靠后电路的输入线的情况下,由混淆方确定靠前电路输出线对应的备选标签和靠后电路输入线的备选标签之间的关联关系,并由靠前电路根据执行结果中的输出标签及该关联关系确定靠后电路的输入线对应的输入标签。这种方式下,各个相邻算子电路的混淆表之间相互独立,且传输数据量较少。从而,可以使得计算方对各个算子电路的执行连续执行的基础上,使得混淆表灵活组合,减少冗余通信,提高业务处理效率。
附图说明
25.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
26.图1示出一个具体例子的混淆电路逻辑示意图;
27.图2示出一个具体例子的基于混淆电路的连续执行的布尔电路示意图;
28.图3示出根据一个实施例的计算方执行的基于混淆电路的布尔电路连续执行方法流程图;
29.图4示出根据一个实施例的混淆方执行的基于混淆电路的布尔电路连续执行方法流程图;
30.图5示出根据一个实施例的设于计算方的基于混淆电路的布尔电路连续执行装置的示意性框图;
31.图6示出根据一个实施例的设于混淆方的基于混淆电路的布尔电路连续执行装置的示意性框图。
具体实施方式
32.下面结合附图,对本说明书提供的技术方案进行描述。
33.首先描述混淆电路的逻辑原理。图1示出一个具体例子的混淆电路示意图。如图1所示,在该具体应用场景中,涉及多个门电路的组合。其中共有3个输入a0、b0、c0,由4个门电路最终输出c1。其中共涉及7条输入、输出线路a0、b0、c0、d、e、f、c1。假设混淆方(garbler)记为a,计算方(evaluator)记为b,对于每个线路都可以由a方生成相应的预定长度的字符串,如记为x
i0
、x
i1
,分别表示真值0和真值1,i=a0、b0、c0、d、e、f、c1。然后,混淆方a可以对各个门电路分别生成混淆表。例如,假设初始的输入比特a0、c0由混淆方a持有,b0由计算方b持有,对于输入为a0、c0,输出为d的与非门电路,真值具有4种情形,a0、c0、d的取值分别为:(0,0,0)、(0,1,1)、(1,0,1)、(1,1,0)。混淆方a用各个预定长度的字符串作为相应真值的标签,用来标识相应真值。将该真值对应关系用字符串表示可以为:(x
a00
,x
c00
,x
d0
)、(x
a00
,x
c01
,x
d1
)、(x
a01
,x
c00
,x
d1
)、(x
a01
,x
c01
,x
d0
)。进一步地,用输入标签加密输出标签,如用x
a00
、x
c00
加密x
d0
记为类似地,对4种情形分别进行加密,并打乱顺序,即混淆。如此,可以得到针对a0、c0与非门电路的混淆表发送给计算方。图1示出的例子中,混淆方a可以为计算方b提供与4个门电路一一对应的4个混淆表。
34.另外,在混淆方和计算方的计算过程中,混淆方将本地输入对应的真值比特(如a0=0)对应的标签发送给计算方b,计算方b并不知道该标签代表的真值。对于计算方持有的输入值(如b0),可以通过不经意传输协议,从混淆方a选择其对应的标签,而混淆方a不知道其选择的哪个标签,如不知道选择的是x
b01
还是x
b00
。计算方得到各个门电路的混淆表和输入标签后,沿着电路进行解密,对每个电路的混淆表,有一行是可以被解密得到相应标签的。如针对图1的电路,假设计算方b得到的输入标签为x
a01
,x
b01
,x
c00
,据此可以依次解密x
d1
、x
e1
、x
f1
、x
c10
。之后,混淆方a和计算方b可以共享结果,例如计算方b向混淆方a分享x
c10
,或者混淆方a向计算方b分享x
c10
、x
c11

35.在图1的示例中,计算方b仅出现一个输入比特,则在电路计算过程中,需要通过不经意传输协议(以下也称ot)获取一次输入标签。在计算方b持有多个输入比特的情况下,可以通过多次不经意传输协议获取相应的输入标签。通常,计算方b获取输入标签可以通过混淆方a直接发送两个候选比特(0、1)对应的两个标签,将混淆方a作为发送方、计算方b作为接收方通过不经意传输方式由计算方b选择与输入比特对应的一个。
36.可以理解的是,为了节约业务处理过程中的通信资源,混淆方和计算方进行业务处理的过程可以分为离线准备阶段和在线业务处理阶段。在离线准备阶段,混淆方和计算方可以准备在线所需混淆表等数据。这里,离线可以理解为布尔电路连续执行过程未开始,例如未向预测模型提供输入数据以进行业务预测等,而不是双方不联网、不交互。在线业务处理阶段则是双方获取输入数据,由计算方得到各个输入标签并进行计算的过程。
37.实际业务过程中,一个业务可能需要多个算子,例如一个具体业务可以包含5000个乘法算子、8000个加法算子、1000个比较算子等。单个算子可以通过多个门电路实现,单个算子对应的电路整体例如可以记为单个算子电路。实际的电路执行过程可能情况复杂,例如一个电路的输出线为后续一个或多个电路的输入线,而后续电路的输入线可以包括前面电路的输出线,也可以包括由输入数据确定的或与前面的电路无关的输入线。常规技术中,可能通过将输出标签拆分为两方共同持有的数据,在后续电路执行中通过门电路(如异
或门)的合并等方式连接不同的算子电路。这样,可能为算子电路的执行增加一部分冗余计算和冗余通信。如果一个具体业务(如联合训练业务模型等)包含大量算子电路,对于这种连接前后两个电路的输入输出线,如果产生冗余通信,则可能增加通信负担。
38.参考图2所示,是一个基于混淆电路的布尔电路连续执行的具体例子示意。如图2所示,x、y、z、w可以是4个算子电路(如各自为乘法算子电路、加法算子电路、比较算子电路等中的一种),并在一个具体业务中依次执行。单个算子电路可以包括多个门电路,对应着多个输入线及多个输出线。图2中,通过箭头方向指示输入线、输出线,指向算子电路的为其输入线,远离算子电路的为其输出线。从图2可以看出,t1、t2、t3、t4、t5既是一个算子电路的输出线,也是另一个算子电路的输入线。换句话说,对于输出结果本身而言,前一个算子电路的输出结果对应着另一个算子电路的输入数据。
39.以t1为例,算子电路x与t1对应的输出比特的真值为0,则算子电路y与t1对应的输入比特的真值也为0,算子电路x与t1对应的输出比特的真值为1,则算子电路y与t1对应的输入比特的真值也为1。在作为算子电路x的输出线时,t1可以对应输出线的备选标签如o
t10
、o
t11
,而在作为算子电路y的输入线时,t1可以对应输出线的备选标签如i
t10
、i
t11
。在常规技术中,在算子电路x、y的混淆表相互独立的情况下,可以以前文描述的拆分、组合的方式进行转换。该转换过程例如通过将x中t1对应的输出标签拆分为混淆方和计算方各自存储的一个比特,再将这两个比特分别作为两方的输入比特,利用混淆方提供的一个及通过不经意传输方式确定的计算方的另一个输入标签,经由门电路(如异或门)的处理得到算子电路x在t1上对应的输入标签。该方式至少引入了一个门电路的冗余通信。
40.为此,本说明书提出一种布尔电路连续执行的技术构思,在前面电路的输出线作为后续电路输入线的情况下,通过前面电路的输出标签和后续电路的备选标签由计算方安全获取后续电路的输入标签。
41.根据本说明书的技术构思,在离线准备阶段,混淆方可以针对各种类型的算子电路生成混淆表。其中,针对一种类型的算子电路,可以生成多份混淆表。在单份混淆表中,随机生成各个输入线的备选标签,单个输入线对应两个备选标签,分别是对应于候选比特0、1的0标签(如对应0比特)和1标签(如对应1比特)。在按照输入线的备选标签执行相应算子电路的情况下,可以得到相应算子电路的各个输出线的备选标签。参考图1所示,对于一个门电路而言,通过输入线的备选标签加密相应输出线的备选标签并打乱顺序,可以得到该门电路对应的混淆表。一个算子电路中各个门电路的混淆表构成该类型算子电路的一份混淆表。
42.其中,为了便于通过连续算子电路中靠前电路的输出标签确定后续电路的输入标签,如通过图2中算子电路x的输出先t1对应标签得到算子电路y中的输入线t1对应的输入标签,混淆方可以在生成输入线的备选标签过程中,保持单个输入线的0标签和1标签的异或值为固定的随机字符串,这样,各条输出线备选的0标签和1标签的异或值也是该固定的随机字符串。
43.值得说明的是,混淆方可以将混淆表提供给计算方,以供计算方执行相应算子电路,但以上的随机字符串通常不能泄露给计算方,以免泄露混淆方数据隐私。在计算方执行算子电路时,针对混淆方提供输入数据的输入线,混淆方将相应输入标签发送至计算方。而针对计算方提供输入数据的输入线,可以由混淆方和计算方通过执行不经意传输协议,从
混淆方的备选标签中秘密选择与本地输入比特对应的输入标签。
44.在以上离线准备操作执行完毕之后,混淆方、计算方可以基于所生成的混淆表,进行算子电路的连续计算,以进行业务处理。其中,混淆方的输入标签由混淆方根据备选标签直接发送至计算方,计算方的输入数据对应的输入标签基于不经意传输协议从混淆方的备选标签中选择。从图2可以看出,该说明书的技术构思针对顺次执行的布尔电路提出,尤其适用于靠前电路的输出线作为后续电路的输入线的布尔电路连续执行过程。
45.图3示出了根据本说明书一个实施例的基于混淆电路的布尔电路连续执行流程,用于描述在线业务处理阶段,计算方执行的计算流程。由于布尔电路的输入标签由混淆方提供,该过程在混淆方的配合下完成。
46.如图3所示,假设连续的布尔电路中包括第一算子电路和第二算子电路,第一算子电路的第一输出线为第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有(对计算方保密)的第一随机字符串,则计算方执行的基于混淆电路的布尔电路连续执行流程可以包括:步骤301,根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的第一输出标签,第一输出标签是基于所述第一混淆表的、针对第一输出线确定的两个备选标签之一;步骤302,与混淆方同步对第二算子电路对应的第二混淆表的选择结果,以获取混淆方针对第一输出线、第一输入线提供的第一转换字符串,第一转换字符串用于描述第一输出线、第一输入线对应于相同的候选比特的备选标签之间的转换关系;步骤303,根据第一转换字符串与第一输出标签的异或结果确定第一输入线对应的第一输入标签;步骤304,基于第一输入标签和第二混淆表执行第二算子电路。
47.首先,通过步骤301,根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的第一输出标签。其中,第一混淆表是混淆方针对第一算子电路或第一算子电路对应的第一算子类型生成的混淆表。第一混淆表可以包含各个门电路的输入标签加密的输出标签。可以理解,计算方针对第一算子电路存储的混淆表可以有多份,第一混淆表是其中的一份。第一混淆表可以是由混淆方或计算方一方选定或指定并告知另一方,也可以由双方通过协商等方式确定,在此不做限定。
48.混淆方本地存储有各个输入线、输出线的备选标签。对于混淆方的输入数据,混淆方可以直接向计算方提供相应的输入标签,例如混淆方在一个门电路中提供一个输入比特1,则提供相应输入线对应的两个备选标签中与候选比特1相对应的备选标签作为相应输入标签。而计算方的输入数据对应的输入比特,可以通过不经意传输方式从混淆方的相应备选标签中选择相应输入标签,而混淆方不知道计算方选的哪一个。
49.在一个可能的设计中,在离线准备阶段,混淆方和计算方还可以执行随机的不经意传输协议(rondom ot,简称rot),以将rot执行结果用于在线业务执行阶段对计算方的输入比特确定相应的输入标签。在一次rot过程中,可以由计算方在混淆方生成的两个参考字符串(如l0、l1)中选择一个,选择结果与计算方从混淆方选择的候选比特(0、1)一致,如选择比特记为c,则选择的参考字符串可以记为lc。这样,经过一次rot操作,混淆方持有两个候选比特对应的两个参考字符串,计算方持有选择数据,即:从两个候选比特中选择的选择比特,以及两个参考字符串中与选择比特一致的选择字符串。其中,混淆方不知道计算方选择的选择比特c以及选择字符串lc。在c=0时lc可以为l0,c=1时lc可以为l1。
50.一次rot结果可以用于计算方在接收到相应输入比特时,从混淆方与两个候选比特对应的两个备选标签中选择与输入比特对应的标签作为输入标签。其在一个实施例中的具体原理如下:计算方将输入比特与选择比特的比较结果(如通过异或值表示)发送至混淆方,混淆方根据该比较结果确定两个备选标签(分别对应两个候选比特0、1)的密文提供给计算方。两个备选标签对应的两份密文由混淆方根据以上比较结果,通过两个参考字符串分别对两个备选标签通过异或方式加密得到。例如,在输入比特和选择比特的比较结果为相同(如异或值为0)的情况下,用0比特对应的参考字符串加密0标签,用1比特对应的参考字符串加密1标签,在输入比特和选择比特的比较结果为不同(如异或值为1)的情况下,用0比特对应的参考字符串加密1标签,用1比特对应的参考字符串加密0标签。如此,可以保证计算方通过选择字符串正确解密本地输入比特对应的密文,得到相应的备选标签作为输入标签。
51.作为参考字符串的一个示例,对于一条输入线,假设混淆方生成的0标签和1标签分别为m0、m1,参考字符串为l0、l1,计算方通过不经意传输(如rot)选择一个候选标签c以及相应的选择字符串lc,c可以为0或1。在确定计算方的输入比特对应的输入标签时,计算方可以将输入比特与c进行比较,并将比较结果发送至混淆方。在输入比特与c相同的情况下,混淆方将l0与m0的异或结果m0=l0^m0及l1与m1异或结果m1=l1^m1发送至计算方,由计算方通过lc^m0或lc^m1正确解密m0、m1中的一个得到输入比特对应的输入标签。另一方面,混淆方在输入比特与c不同的情况下,将l0与m1的异或结果m0=l0^m1、l1与m0异或结果m1=l1^m0发送至计算方,由计算方通过lc^m0或lc^m1正确解密m0、m1中的一个得到输入比特对应的输入标签。
52.混淆方和计算方可以在离线准备阶段预先准备参考字符串。也就是说,混淆方和计算方在离线准备阶段可以通过多次执行rot操作,得到多组混淆方的参考字符串(l0,l1)及计算方相对应的(c、lc)。
53.如此,计算方可以通过前文的rot确定的选择数据,通过不经意传输方式从混淆方的相应备选标签中选择相应输入标签。
54.进一步地,在计算方执行算子电路过程中,可以根据各个输入标签可以依次解密各个门电路的输出标签,从而执行第一算子电路(例如是图2中的算子电路x)。计算方对第一算子电路的执行结果可以包括多个输出标签,一个输出标签代表一个比特的真值,多个输出标签的真值描述相应输出结果。第一输出标签可以是第一算子电路的任一个输出线(记为第一输出线)对应的输出标签。可以理解,该第一输出标签是混淆方针对第一输出线生成的两个备选标签之一。
55.接着,在步骤302中,与混淆方同步为第二算子电路选择的第二混淆表,以获取混淆方针对第一输出线、第一输入线提供的第一转换字符串。其中,第二混淆表是混淆方针对第二算子电路生成的混淆表。第二混淆表可以包含第二算子电路各个门电路的输入标签加密且乱序的输出标签。可以理解,计算方针对第二算子电路存储的混淆表可以有多份,第二混淆表是其中的任一份。第二混淆表的选择与第一混淆表的选择相互独立,可以是由混淆方或计算方一方选定或指定并告知另一方,也可以由双方通过协商等方式确定,在此不做限定。
56.第二混淆表选定后,混淆方可以确定第一转换字符串并提供给计算方。第一转换
字符串可以是混淆方独立生成并提供的,用于描述第一输出线、第一输入线对应于相同的候选比特的备选标签之间的转换关系。具体地,第一转换字符串可以是用于第一输出线、第一输入线的候选比特0对应的两个0标签之间转换的字符串,或者是用于第一输出线、第一输入线的候选比特1对应的两个1标签之间转换的字符串。举例而言,对于图2示出的电路,混淆方针对算子电路x的输出线t1确定的备选标签例如为o
t10
、o
t11
,其中,这两个备选标签的异或结果o
t10
∧o
t11
为混淆方生成的随机字符串r,混淆方针对算子电路y的输入线t1确定的备选标签例如为i
t10
、i
t11
,i
t10
与i
t11
的异或结果i
t10
∧i
t11
也是r。“∧”表示对其两边的字符串进行异或操作。针对0比特,第一转换字符串可以为t1作为x的输出线的0标签o
t10
与t1作为y的输出线的0标签i
t10
通过异或操作进行转换的字符串,例如可以为o
t10
∧i
t10
。同理,针对1比特,第一转换字符串可以为t1作为x的输出线的1标签o
t11
与t1作为y的输出线的1标签i
t11
通过异或操作进行转换的字符串,例如可以为o
t11
∧i
t11

57.对于随机字符串r,可以是由混淆方随机生成的、与备选标签位数一致的字符串。实践中,可以在本次运算的全部混淆表中通用一个随机字符串r。在一个实施例中,针对算子电路中的一个输入线,在生成其相对应的两个备选标签时,可以先随机生成一个备选标签,如随机生成0标签,然后对0标签和r执行异或操作,异或操作结果作为另一个备选标签,如1标签。在另一个实施例中,在生成混淆表时,先针对第一个输入线生成两个备选标签,两个备选标签的异或结果作为随机字符串r,后续输入线沿用该随机字符串r生成备选标签。这样,全部混淆表中,单个输入线或单个输出线的两个备选标签之间的异或结果均为r。
58.然后,在步骤303中,根据第一转换字符串与第一输出标签的异或结果确定第一输入线对应的第一输入标签。这里,通过第一转换字符串将第一算子电路中的第一输出线的第一输出标签,转换为第二算子电路中的第一输入线对应的第一输入标签。转换方法为,第一输入标签为第一转换字符串与第一输出标签的异或结果。
59.作为示例,如图2示出的电路x作为第一算子电路、y作为第二算子电路,共用的第一输出线和第一输入线为t1,假设第一转换字符串为o
t10
∧i
t10
,则在第一输出标签为o
t10
对应0比特的情况下,计算方根据o
t10
与o
t10
∧i
t10
的异或结果,得到第一输入标签i
t10
,刚好对应0比特,在第一输出标签为o
t11
对应1比特的情况下,计算方根据o
t11
与o
t10
∧i
t10
的异或结果,得到第一输入标签为r∧i
t10
=i
t11
,刚好对应1比特。同理,第一转换字符串为o
t11
∧i
t11
,可以得到相同的结果。如此,保证第一输出线的输出标签和第一输入线的输入标签对应的真值比特一致,从而将第一算子电路的输出标签有效转换为第二算子电路的输入标签。
60.进一步地,通过步骤304,基于第一输入标签和第二混淆表执行第二算子电路。可以理解,第二混淆表对应着一份混淆表,包括第二算子电路中各个门电路的混淆表。计算方可以利用第二混淆表按照各个门电路顺次解密相应的输出标签,从而执行第二算子电路。
61.其中,第二算子电路中还可以包含在第一输入线之外的其他输入线,对应其他输入标签。其他输入线对应的是其他输入数据。其他输入数据可以包括以下至少一项:来自于第一算子电路或其他靠前算子电路的输出数据、来自混淆方或计算方的原始输入数据。其中:来自于第一算子电路或其他靠前算子电路的输出线的输入标签和第一输入线的标签一样,基于对第一算子电路的执行结果得到;来自混淆方的输入数据的输入标签可以由混淆方直接提供;来自计算方的输入数据的输入标签可以由计算方通过不经意传输协议(如基于rot结果的got)从混淆方获得。
62.值得说明的是,在执行某个门电路之前,需要先获取相应的输入标签。而在一个算子电路设计的门电路较复杂的情况下,一些输入标签也可能是在针对算子电路的执行过程中获取的。实践中,可以先获取第二算子电路的全部其他输入标签后,再执行第二算子电路,也可以在执行第二算子电路的过程中,获取需要的其他输入标签。
63.与图3相配合地,图4示出一个由混淆方执行的基于混淆电路的布尔电路连续执行流程。如图4所示,该流程可以包括:
64.步骤401,与计算方同步对第二算子电路对应的第二混淆表的选择结果;
65.步骤402,根据第二混淆表,确定用于描述第一输出线、第一输入线对应于相同的候选比特的备选标签之间的转换关系的第一转换字符串;
66.步骤403,向计算方提供第一转换字符串,以供计算方基于第一字符串确定第一输出线的第一输出标签,从而执行第二算子电路。
67.其中,在一个实施例中,第一转换字符串为第一输出线、所述第一输入线对应于相同的候选比特的备选标签之间进行异或操作得到的字符串。
68.回顾以上过程,在基于混淆电路的业务处理过程中,对各个算子电路通过在离线准备阶段预先生成多份混淆表等,各份混淆表相互独立。对于有关联关系的算子电路,巧妙利用布尔电路的性质确定输出标签和输入标签之间的转换关系,从而将靠前电路的输出标签转换为靠后电路的输入标签,并在计算方不知道输出比特真值的情况下,使得转换前后的输出标签、输入标签对应同一个真值比特。这种方式下,对于包含多个算子电路的业务处理过程,可以针对各个类型的算子电路各自预先生成多份混淆表,并在业务处理过程中可以灵活组合,减少冗余通信,从而提高业务处理效率。
69.根据另一方面的实施例,还提供一种设于计算方的基于混淆电路的布尔电路连续执行装置。图5示出了一个实施例的基于混淆电路的布尔电路连续执行装置500,可以设于计算方。假设连续的布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线为第二算子电路的第一输入线,混淆方针对单个输出线/单个输入线确定的两个备选标签之间的异或值为仅在本地持有的第一随机字符串。
70.如图5所示,装置500包括:
71.执行单元501,配置为根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的第一输出标签,第一输出标签是混淆方在生成第一混淆表过程中针对第一输出线确定的两个备选标签之一;
72.选择单元502,配置为与混淆方同步对第二算子电路对应的第二混淆表的选择结果,以获取混淆方针对第一输出线、第一输入线提供的第一转换字符串,第一转换字符串用于描述第一输出线、第一输入线对应于相同的候选比特的备选标签之间的转换关系;
73.确定单元503,配置为根据第一转换字符串与第一输出标签的异或结果确定第一输入线对应的第一输入标签;
74.执行单元501,还配置为基于第一输入标签和第二混淆表执行第二算子电路。
75.在一个可选的实现方式中,第一算子电路为第一算子类型,第一混淆表从混淆方为第一算子类型生成的多份混淆表中确定;第二算子电路为第二算子类型,第二混淆表从混淆方为第二算子类型生成的多份混淆表中确。
76.在一个可选的实现方式中,第一混淆表、第二混淆表由混淆方、计算方中的一方选
定或指定并告知另一方,或者由双方通过协商确定。
77.与装置500相对应地,本说明书还提供一种设于混淆方的基于混淆电路的布尔电路连续执行装置。图6示出了一个实施例的基于混淆电路的布尔电路连续执行装置600,可以设于混淆方。
78.如图6所示,装置600包括:
79.选择单元601,配置为与计算方同步对第二算子电路对应的第二混淆表的选择结果;
80.确定单元602,配置为根据第二混淆表的选择结果,确定用于描述第一输出线、第一输入线对应于相同的候选比特的备选标签之间的转换关系的第一转换字符串;
81.提供单元603,配置为向计算方提供第一转换字符串,以供计算方基于第一字符串确定第一输出线的第一输出标签,从而执行第二算子电路。
82.值得说明的是,图5、图6所示的装置500、600与图3、图4描述的方法相对应,图3、图4的方法实施例中的相应描述同样适用于装置500、600,在此不再赘述
83.根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3、图4等所描述的方法。
84.根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3、图4等所描述的方法。
85.本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
86.以上所述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1