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

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

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.下面结合附图,对本说明书提供的技术方案进行描述。
32.首先描述混淆电路的逻辑原理。图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个混淆表。
33.另外,在混淆方和计算方的计算过程中,混淆方将本地输入对应的真值比特(如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

34.在图1的示例中,计算方b仅出现一个输入比特,则在电路计算过程中,需要通过不经意传输协议(以下也称ot)获取一次输入标签。在计算方b持有多个输入比特的情况下,可以通过多次不经意传输协议获取相应的输入标签。通常,计算方b获取输入标签可以通过混淆方a直接发送两个候选比特(0、1)对应的两个标签,将混淆方a作为发送方、计算方b作为接收方通过不经意传输方式由计算方b选择与输入比特对应的一个。
35.实际业务过程中,一个业务可能需要多个算子,例如一个具体业务可以包含1000个乘法算子、5000个加法算子、30个比较算子等。单个算子可以通过多个门电路实现,单个算子对应的电路整体例如可以记为单个算子电路。实际的电路执行过程可能情况复杂,例如一个电路的输出线为后续一个或多个电路的输入线,而后续电路的输入线可以包括前面电路的输出线,也可以包括由输入数据确定的或与前面的电路无关的输入线。常规技术中,可能通过将输出标签拆分为两方共同持有的数据,在后续电路执行中合并等方式连接不同的算子电路。例如,在预定位上,输出比特对应的0标签和1标签的异或值为1,则计算方可以取输出标签在预定位上的比特值,混淆方取0标签在预定位上的比特值,作为输出比特拆分的两个比特,这两个比特进行异或合并的情况下可以还原出输出比特,该输出比特即为后续电路的输入比特。实践中为保护数据隐私并不真实还原,而是将拆分比特作为输入比特,生成混淆表,计算方通过不经意传输方式确定本地拆分比特对应的输入标签,并进行候选电路计算。
36.如此,如果一个具体业务(如联合训练业务模型等)包含大量算子电路,对于这种连接前后两个电路的输入输出线,可能产生大量冗余通信,增加通信负担。为此,本说明书
提出一种布尔电路连续执行的技术构思,将具有关联关系的前后两个电路的混淆表关联存储,且在前面电路的输出线作为后续电路输入线的情况下,将前面电路的输出标签与后续电路的输入标签设置为相同。这样,可以连续执行各个电路。
37.参考图2所示,是一个基于混淆电路的布尔电路连续执行的具体例子示意。如图2所示,x、y、z、w可以是4个算子电路(如乘法算子电路、加法算子电路、比较算子电路等),并在一个具体业务中依次执行。单个算子电路可以包括多个门电路,对应着多个输入线及多个输出线。图2中,通过箭头方向指示输入线、输出线,指向算子电路的为其输入线,远离算子电路的为其输出线。从图2可以看出,t1、t2、t3、t4、t5既是一个算子电路的输出线,也是另一个算子电路的输入线。
38.以t1为例,在作为算子电路x的输出线时,其可以对应输出线的备选标签如o
t10
、o
t11
,而在作为算子电路y的输入线时,其可以对应输出线的备选标签如i
t10
、i
t11
。这样,在常规技术中,在算子电路x、y的混淆表相互独立的情况下,可以以前文描述的拆分、组合的方式进行转换。转换过程引入冗余通信。在本说明书的技术构思下,可以令o
t10
=i
t10
、o
t11
=i
t11
,则针对算子电路y生成混淆表时,依赖于算子电路x的标签执行结果。因此,在生成混淆表时,对算子电路y生成的混淆表与算子电路x生成的混淆表相互关联。也就是说,电路x的混淆表和电路y的混淆表应关联存储。举例而言,假设对算子电路x和算子电路y各生成1000个混淆表,则单个算子电路y的混淆表所使用的i
t10
、i
t11
需与单个算子电路x的混淆表中的o
t10
、o
t11
一致,这两个混淆表中有一个被选中,另一个也需要被选中,以保持计算的一致性。同理,图2中,算子电路w的混淆表也需要与算子电路x的混淆表通过t2两端对应的备选标签一致而相关联,算子电路z、算子电路w的混淆表需要与算子电路y的混淆表相关联。
39.可以理解的是,为了节约业务处理过程中的通信资源,混淆方和计算方进行业务处理的过程可以分为离线准备阶段和在线业务处理阶段。在离线准备阶段,混淆方和计算方可以准备在线所需数据。这里,离线可以理解为布尔电路连续执行过程未开始,例如未向预测模型提供输入数据进行业务预测等,而不是双方不联网、不交互。在线业务处理阶段则是双方获取输入数据,由计算方得到各个输入标签并进行计算的过程。
40.根据以上构思,以图2为例,本说明书提供的基于混淆电路的布尔电路连续执行方案,混淆方可以在离线准备阶段完成以下准备:
41.对算子电路x(如记为第一算子电路)的各个输入线分别随机生成相应的备选标签,其中,单个输入线对应两个备选标签,分别对应比特值0、1;
42.依次执行算子电路x的各个门电路,得到算子电路x的各条输出线各自对应的备选标签,其中,对于输出线t1(如记为第一输出线),例如得到候选比特0、1的两个备选标签o
t10
、o
t11
,对于输出线t2(如记为第二输出线),例如得到备选标签o
t20
、o
t21

43.针对算子电路x中的各个门电路,各自利用相应输入标签加密相应输出标签后进行乱序,从而为算子电路x生成一份混淆表(如记为第一混淆表);
44.对算子电路y(如记为第二算子电路)中t1之外的各个输入线分别随机生成相应的备选标签,另外,令输入线t1(如记为第一输入线)的备选标签i
t10
=o
t10
、i
t11
=o
t11

45.按顺序执行算子电路y的各个门电路,依次得到算子电路y的各个输出线的备选标签,其中,对于输出线t5,例如得到备选标签o
t50
、o
t51
,从而为算子电路y生成一份混淆表(如记为第二混淆表);
46.……
47.对算子电路w中t2、t5之外的各个输入线分别随机生成相应的备选标签,令输入线t2的备选标签i
t20
=o
t20
、i
t21
=o
t21
,令输入线t5的备选标签i
t50
=o
t50
、i
t51
=o
t51

48.按顺序执行算子电路w的各个门电路,依次得到算子电路w的各个输出线的备选标签,从而为算子电路y生成一份混淆表;
49.……
50.直至针对各个算子电路均生成相应的混淆表。这些混淆表中,前后具有诸如t1、t2、t3、t4、t5示出的输入线、输出线连接关系的算子电路,其标签和混淆表相互关联。从数据上说,混淆表相互关联可以体现在标签上。参考图2所示,以t1线为例,假设其为算子电路y中门电路y的一个输入线,门电路y还包括一条输入线s0,一条输出线g,则针对门电路y生成混淆表时,通过t1线的备选标签也是o
t10
、o
t11
,以及输入线s0的备选标签i
s00
、i
s01
加密输出线g的备选标签o
g0
、o
g1
。从存储来说,相关联的混淆表可以关联存储,例如设定相同或相关的标识(如表标识、标记位等)。如,相关联的混淆表都标记为1表,并按照不同的子标记区分,如1x、1y、1z、1w为相关联的混淆表,其间有部分输出输入线相连接。在可选的实施例中,如果一个业务中多次使用一个类型(如乘法)的算子电路,相应的混淆表还可以标记使用顺序,例如对算子电路x的混淆表标记为1x1、1x2等等。
51.将以上相互关联的混淆表称为一组混淆表(包含相应标签),则混淆方重复以上过程,可以预先生成多组混淆表。可以理解的是,在整个业务处理过程所涉及的算子电路中,还可能存在一些完全独立的算子电路,如图2中与x、y、z、w等均无关联的算子电路,则这些算子电路的混淆表可以和相应组混淆表对应存储,也可以独立生成并存储。一个算子电路的混淆表可以由混淆方在生成后单独提供给估算方,也可以在全部生成之后一次性提供给混淆方,本说明书对此不做限定。根据混淆电路的执行原理可知,相互关联混淆表在使用时,需计算方在同一次计算中使用。例如,在当前业务为联合训练业务模型的情况下,相互关联的混淆表可以在同一个周期使用。
52.在一个可能的设计中,在离线准备阶段,混淆方和计算方还可以执行随机的不经意传输协议(rondom ot,简称rot),以将rot执行结果用于在线业务执行阶段对计算方的输入比特确定相应的输入标签。在一次rot过程中,可以由计算方在混淆方生成的两个参考字符串(如l0、l1)中选择一个,选择结果与计算方从混淆方选择的候选比特(0、1)一致,如选择比特记为c,则选择的参考字符串可以记为lc。这样,经过一次rot操作,混淆方持有两个候选比特对应的两个参考字符串,计算方持有选择数据,即从两个候选比特中选择的选择比特,以及两个参考字符串中与选择比特一致的选择字符串。其中,混淆方不知道计算方选择的选择比特c以及选择字符串lc。在c=0时lc可以为l0,c=1时lc可以为l1。
53.一次rot结果可以用于计算方在接收到相应输入比特时,从混淆方与两个候选比特对应的两个备选标签中选择与输入比特对应的标签作为输入标签。其在一个实施例中的具体原理如下:计算方将输入比特与选择比特的异或结果发送至混淆方,混淆方根据该异或结果确定两个备选标签(分别对应两个候选比特0、1)的密文提供给计算方。两个备选标签对应的两份密文由混淆方根据输入比特和选择比特的异或结果,通过两个参考字符串分别对两个备选标签通过异或方式加密得到。例如,在输入比特和选择比特的异或结果为0的情况下,用0比特对应的参考字符串加密0标签,用1比特对应的参考字符串加密1标签,在输
入比特和选择比特的异或结果为1的情况下,用0比特对应的参考字符串加密1标签,用1比特对应的参考字符串加密0标签。如此,可以保证计算方通过选择字符串正确解密本地输入比特对应的密文,得到相应的备选标签作为输入标签。
54.作为参考字符串的一个示例,对于一条输入线,假设混淆方生成的0标签和1标签分别为m0、m1,参考字符串为l0、l1,计算方通过不经意传输(如rot)选择一个候选比特c以及相应的选择字符串lc,c可以为0或1,对应的lc为l0或l1。在确定计算方的输入比特对应的输入标签时,计算方可以将输入比特与c进行比较(如执行异或操作),并将比较结果发送至混淆方。在比较结果为相同(如异或结果是0)的情况下,混淆方将l0对m0的加密结果如m0=l0^m0、l1对m1的加密结果如m1=l1^m1发送至计算方,由计算方通过lc^m0或lc^m1正确解密m0、m1中的一个得到输入比特对应的输入标签。同理,在比较结果为不同(如异或结果是1)的情况下,混淆方可以将l0对m1的加密结果如m0=l0^m1、l1对m0的加密结果如m1=l1^m0发送至计算方,由计算方通过lc^m0或lc^m1正确解密m0、m1中的一个得到输入比特对应的输入标签。
55.混淆方和计算方可以在离线准备阶段预先准备参考字符串。也就是说,混淆方和计算方在离线准备阶段可以通过多次执行rot操作,得到多组混淆方的参考字符串(l0,l1)及计算方相对应的(c、lc)。
56.在以上离线准备操作执行完毕之后,混淆方、计算方可以基于所生成的混淆表,进行算子电路的连续计算,以进行业务处理。其中,混淆方的输入标签由混淆方根据备选标签直接发送至计算方,计算方的输入数据对应的输入标签基于不经意传输协议从混淆方的备选标签中选择。可选地,计算方的输入数据对应的输入标签基于rot执行结果确定。从图2可以看出,该说明书的技术构思针对顺次执行的布尔电路提出,尤其适用于靠前电路的输出线作为后续电路的输入线的布尔电路连续执行过程。
57.图3示出了根据本说明书一个实施例的基于混淆电路的布尔电路连续执行流程,用于描述在线业务处理阶段,计算方执行的计算流程。由于布尔电路的输入标签由混淆方提供,该过程在混淆方的配合下完成。
58.如图3所示,假设连续的布尔电路中包括第一算子电路和第二算子电路,第一算子电路的第一输出线为第二算子电路的第一输入线,计算方执行的基于混淆电路的布尔电路连续执行流程可以包括:步骤301,根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的输出比特的第一输出标签,第一输出标签是混淆方针对第一输出线生成的两个备选标签之一,第一输出标签的两个备选标签同时为第一输入线的备选标签;步骤302,获取针对第二算子电路的输入数据中在第一输入线之外的其他输入数据对应的其他输入标签;步骤303,根据预先从混淆方获取的第二混淆表、第一输出标签以及其他输入标签执行第二算子电路,其中,第二混淆表针对第二算子电路生成且与第一混淆表基于所述两个备选标签相互关联。
59.首先,通过步骤301,根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的输出比特的第一输出标签。其中,第一混淆表是混淆方针对第一算子电路生成的混淆表。第一混淆表可以包含各个门电路的输入标签加密的输出标签。可以理解,计算方针对第一算子电路存储的混淆表可以有多份,第一混淆表是其中的一份。其中,第一混淆表可以是由混淆方或计算方一方选定或指定并告知另一方,也可以由双方通过协
商等方式确定,在此不做限定。
60.混淆方本地则存储有各个输入线的备选标签。对于混淆方的输入数据,混淆方可以直接向计算方提供相应的输入标签,例如混淆方在一个门电路中提供一个输入比特1,则提供相应输入线对应的两个备选标签中与候选比特1相对应的备选标签作为相应输入标签。而计算方的输入数据对应的输入比特,可以通过不经意传输方式从混淆方的相应备选标签中选择相应输入标签,而混淆方不知道计算方选的哪一个。可选地,计算方可以通过前文的rot确定的选择数据,通过不经意传输方式从混淆方的相应备选标签中选择相应输入标签。
61.计算方根据各个输入标签可以依次解密各个门电路的输出标签,从而执行第一算子电路(例如是图2中的算子电路x)。计算方对第一算子电路的执行结果可以包括多个输出标签,一个输出标签代表一个比特的真值,多个输出标签的真值描述相应输出结果。第一输出标签可以是第一算子电路的任一个输出线(记为第一输出线)对应的输出标签。可以理解,该第一输出标签是混淆方针对第一输出线生成的两个备选标签之一。本实施例中假设该第一输出线同时作为第二算子电路(如图2中的y)的第一输入线。则,第一输出线的两个备选标签同时为第一输入线的两个备选标签,而第一输出标签同时为第一输入线对应的输入标签。
62.接着,在步骤302中,获取针对第二算子电路的输入数据中在第一输入线之外的其他输入数据对应的其他输入标签。
63.可以理解,对于第一输入线,其输入标签为第一输出线的输出标签,计算方通过对第一算子电路的执行结果可以得到。第二算子电路中还可以包含在第一输入线之外的其他输入线,对应其他输入标签。其他输入线对应的是其他输入数据。其他输入数据可以包括以下至少一项:来自于第一算子电路或其他靠前算子电路的输出数据、来自混淆方或计算方的原始输入数据。其中:来自于第一算子电路或其他靠前算子电路的输出线的输入标签和第一输入线的标签一样,基于对第一算子电路的执行结果得到;来自混淆方的输入数据的输入标签可以由混淆方直接提供;来自计算方的输入数据的输入标签可以由计算方通过不经意传输协议(如基于rot结果的got)从混淆方获得。
64.然后,经由步骤303,根据预先从混淆方获取的针对第二算子电路的第二混淆表、第一输出标签以及从混淆方获取的输入标签执行第二算子电路。
65.这里,第二混淆表与第一混淆表都可以预先从混淆方获取,并关联存储。根据本说明书的技术构思,关联存储的混淆表可以有多组。容易理解,由于第一混淆表与第二混淆表关联存储,在第一混淆表被选定的时候,第二混淆表也同样被选定。因此,计算方在本步骤中可以使用第二混淆表,并利用第一输出标签作为第一输入线的输入标签,和其他标签一起执行第二算子电路。
66.值得说明的是,图3的示例中的步骤先后顺序并不对方案的实质做出限定。具体而言,在步骤302、步骤303中,由于获取当前需要的输入标签是执行门电路的必要条件,因此,在执行某个门电路之前,需要先获取相应的输入标签。而在一个算子电路设计的门电路较复杂的情况下,一些输入标签也可能是在针对算子电路的执行过程中获取的。因此,步骤302、步骤303并没有先后执行顺序的限定,实践中,可以先通过步骤302获取第二算子电路的全部其他输入标签后,再通过步骤303执行第二算子电路,也可以在由步骤301之后执行
步骤303,并在执行第二算子电路的过程中,获取需要的其他输入标签。
67.回顾以上过程,在基于混淆电路的业务处理过程中,对各个算子电路通过在离线准备阶段预先生成混淆表等,并在生成混淆表过程中,对于有关联关系的算子电路,以相互关联的方式生成混淆表。具体地,在靠前电路的输出线作为靠后电路的输入线的情况下,将靠前电路的相应输出标签与靠后电路的相应输入标签设为一致,并将靠前电路的混淆表与靠后电路的混淆表关联存储。从而,使得计算方对各个算子电路的执行能够连续执行。这种方式下,靠前的算子电路的输出线作为后续算子电路的输入线的情况下,靠前算子电路的输出标签作为后续算子电路的输入标签,因此不需要在算子电路之间增加拆分、组合电路,减少冗余通信,提高业务处理效率。
68.根据另一方面的实施例,还提供一种设于计算方的基于混淆电路的布尔电路连续执行装置。图4示出了一个实施例的基于混淆电路的布尔电路连续执行装置400,可以设于计算方。假设连续的布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线为第二算子电路的第一输入线,如图4所示,装置400包括:
69.执行单元401,配置为根据预先从混淆方获取的第一混淆表执行第一算子电路,得到第一输出线对应的第一输出标签,第一输出标签是混淆方针对第一输出线生成的两个备选标签之一,两个备选标签同时为第一输入线的备选标签;
70.获取单元402,配置为获取混淆方针对第二算子电路的输入数据中在第一输入线之外的其他输入数据对应的其他输入标签;
71.执行单元401还配置为,根据预先从混淆方获取的第二混淆表、第一输出标签以及其他输入标签执行第二算子电路,其中,第二混淆表针对第二算子电路生成且与第一混淆表基于两个备选标签相互关联。
72.在一些可选的实现方式中,执行单元401还配置为:
73.在布尔电路的执行过程中,从混淆方获取基于相应输入线的备选标签提供的混淆方对应的输入标签,经由不经意传输方式从混淆方获取计算方对应的输入标签。
74.根据一个实施例,计算方存储有预先通过不经意传输方式从混淆方获取的选择数据集,选择数据集中的单条选择数据包括从两个候选比特中选择的单个选择比特,以及相应的两个参考字符串中与单个选择比特对应的单个选择字符串,计算方针对本地的单个输入比特对应的单个输入标签基于单条选择数据确定。
75.根据一个进一步的实施例,由计算方提供的输入比特包括第一比特,获取单元402配置为通过以下方式确定第一比特对应的第一输入标签:
76.从选择数据中随机选择对应有第一选择比特和第一选择字符串的第一选择数据;
77.将第一比特与第一选择比特对应的第一异或结果提供给混淆方,以供混淆方根据第一异或结果向计算方提供两个候选比特分别对应的两份密文,两份密文由第一选择数据对应的两个参考字符串分别对相应的两个备选标签加密得到;
78.用第一选择字符串基于两份密文解密得到第一输入标签。
79.在一个实施方式中,第一混淆表和第二混淆表通过相同的表标识记录,以在同一次布尔电路执行过程中使用。
80.值得说明的是,图4所示的装置400与图3描述的方法相对应,图3的方法实施例中的相应描述同样适用于装置400,在此不再赘述
81.根据又一方面的实施例,还提供一种设于混淆方的连续执行的布尔电路的混淆表生成装置。图5示出了一个实施例的连续执行的布尔电路的混淆表生成装置500,可以设于混淆方。假设连续的布尔电路包括第一算子电路和第二算子电路,第一算子电路的第一输出线为第二算子电路的第一输入线,如图5所示,装置500包括:
82.生成单元501,配置为为第一算子电路的各条输入线分别随机生成备选标签;
83.执行单元502,配置为利用各条输入线的备选标签依次执行第一算子电路中的各个门电路,得到第一算子电路中的各条输出线各自对应的备选标签,其中,第一输出线对应有分别对应两个候选比特的两个备选标签;
84.混淆单元503,配置为针对第一算子电路中的各个门电路,各自利用相应输入标签加密相应输出标签后进行乱序,从而生成第一混淆表;
85.生成单元501还配置为,为第二算子电路中第一输入线之外的其他各条输入线分别随机生成其他备选标签;
86.执行单元502还配置为,利用两个备选标签作为第一输入线的备选标签,和其他备选标签一起依次执行第二算子电路中的各个门电路,以由混淆单元503得到第二算子电路对应的第二混淆表。
87.根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3等所描述的方法。
88.根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3等所描述的方法。
89.本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
90.以上所述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1