两方安全比较的方法及系统与流程

文档序号:28816601发布日期:2022-02-09 06:22阅读:349来源:国知局
两方安全比较的方法及系统与流程

1.本说明书一个或多个实施例涉及安全技术领域,尤其涉及一种两方安全比较的方法及系统。


背景技术:

2.安全多方计算(secure multi-party computation,mpc),允许多个数据所有者在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其它任何信息。换句话说,mpc可以获取数据使用价值,却不泄露原始数据内容。
3.mpc可基于混淆电路(garbled circuit,gc)而实现。gc是一种两方安全多方计算协议,对实现一个计算函数的布尔电路用密码函数生成混淆表,对两方输入计算出结果,并且在计算过程中一方输入不会泄漏给另一方。在传统的gc方案中,安全多方计算的各参与方需要进行复杂的交互,这导致gc方案的网络代价过高,严重影响mpc的应用广度。


技术实现要素:

4.本说明书一个或多个实施例描述了一种两方安全比较的方法及系统,用以在保证安全多方计算的安全性的情况下,降低网络通信代价。
5.第一方面,提供了一种两方安全比较的方法,包括:
6.第一方向第二方发送比较请求;其中包括n个标识和l个基值;所述n个标识包括目标标识和n-1个混淆标识;所述l个基值至少基于所述目标标识对应的第一数据的l位二进制数而确定;
7.所述第二方获取所述n个标识对应的n个第二数据;
8.所述第二方生成布尔电路,用于对所述第一数据与所述n个第二数据进行比较;
9.所述第二方基于所述l个基值生成所述布尔电路的混淆表,并将其提供给所述第一方;
10.所述第一方利用与所述l个基值关联生成的l个本地选择标签,解密所述混淆表,并至少根据解密结果,确定所述目标标识对应的第二数据与所述第一数据的目标比较结果。
11.第二方面,提供了一种两方安全比较的系统,包括:
12.第一方,用于向第二方发送比较请求;其中包括n个标识和l个基值;所述n个标识包括目标标识和n-1个混淆标识;所述l个基值至少基于所述目标标识对应的第一数据的l位二进制数而确定;
13.所述第二方,用于获取所述n个标识对应的n个第二数据;
14.所述第二方,还用生成布尔电路,用于对所述第一数据与所述n个第二数据进行比较;
15.所述第二方,还用于基于所述l个基值生成所述布尔电路的混淆表,并将其提供给
所述第一方;
16.所述第一方,还用于利用与所述l个基值关联生成的l个本地选择标签,解密所述混淆表,并至少根据解密结果,确定所述目标标识对应的第二数据与所述第一数据的目标比较结果。
17.第三方面,提供了一种计算机存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
18.第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
19.本说明书一个或多个实施例提供的两方安全比较的方法及系统,第一方同时向第二方发送n个标识,可以实现数据的匿名比较,也即第二方不仅无法获知第一方的数据,还无法获知第一方想要与第二方的哪个数据进行比较,这进一步确保了数据的安全性。此外,第二方基于由第一方发送的l个基值,来生成布尔电路的混淆表,以及第一方利用其本地与l个基值关联生成的l个选择标签解密混淆表,可以降低第一方与第二方之间的通信量和计算量。
附图说明
20.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
21.图1a示出1-out-of-2类型ot协议示意图;
22.图1b示出1-out-of-n类型ot协议示意图;
23.图2示出rot协议示意图;
24.图3为本说明书一个实施例提供的实施场景示意图;
25.图4示出根据一个实施例的两方安全比较的方法交互图;
26.图5示出根据一个实施例的本地选择标签更新方法示意图;
27.图6示出根据一个实施例的布尔电路示意图;
28.图7示出根据一个实施例的两方安全比较的系统示意图。
具体实施方式
29.下面结合附图,对本说明书提供的方案进行描述。
30.在描述本说明书实施例提供的方案之前,先对本方案的发明构思作以下说明。
31.首先,为进一步加强第一方(也称数据请求方)的隐私保护,本技术的发明人提出,第一方同时向第二方发送n个标识,该n个标识包括目标标识和n-1个混淆标识,由此可以使得第二方(也称数据持有方),无法获知第一方所请求比较的数据。此外,在比较结束之后,第一方只能获得与目标标识对应的数据的比较结果,而不能获取到与其它标识对应的数据的比较结果。
32.此外,为解决传统的gc方案中网络代价过高的问题,本技术的发明人提出,基于满足随机(oblivious transfer,ot)协议的ot标签,来生成和解密混淆表。这里的随机ot协议
(简称rot)为ot协议的一种,其之所以称为随机ot协议是因为在ot协议中引入了随机数。以下先对ot协议进行说明。
33.ot协议,又称不经意传输协议,是安全多方计算的基础技术,是一个两方协议。其具体为接收方(receiver)与发送方(sender)之间的交互协议。由于ot协议可以保证双方数据的安全性,从而其被广泛应用到各个领域中。
34.ot协议,按照功能,可以将其分为如下两种类型:二选一(1-out-of-2)类型和n选一(1-out-of-n)类型。图1a示出1-out-of-2类型ot协议示意图,图1b示出1-out-of-n类型ot协议示意图。
35.图1a中,receiver的输入为选择比特c∈{0,1},sender的输入为一对消息(m0,m1),其中m0、m1为待发送的明文消息(比如为128比特的比特串)。通过ot协议,receiver最终可以获得mc。
36.显然,通过ot协议,可以满足如下两方面的安全性:(1)receiver选择比特c的保密性,即通过ot协议,sender不能获知receiver选择的是哪一个消息。(2)sender未被选择消息的保密性,即通过ot协议,receiver只能获得(m0,m1)中的一个消息mc,不能获知另一个消息的信息。
37.在图1b中,通过1-out-of-n类型ot协议,receiver可以根据自己的选择c∈{1,2,

,n}获得sender的消息元组(m1,m2,

,mn)中的一个消息mc,但不能获知其余n-1个消息的信息。sender不能获知receiver选择的是哪一个消息,即不能获知receiver选择c的信息。
38.以下再对rot协议进行说明。
39.图2示出rot协议示意图。图2中,sender首先拥有a和a,其中,a=ag。这里的g也称基点,其是从椭圆曲线中选取得到的,且由双方约定。a为随机数,且a∈zp。之后,sender可以将a发给receiver。在receiver缓存a之后,双方通过交互就可以生成各自的ot标签。
40.具体地,receiver首先选取随机数b,b∈zp,计算b=bg+ca,并计算目标标签keyc=h(ba)。这里的h()为双方约定的哈希函数。之后,receiver向sender发送b。最后,sender根据b进行n次迭代计算之后,可以得到n个标签{key0,key1,

,keyn-1}。其中任意的第m个标签为:keym=h(ab-maa)。
41.通过简单推导可知,上述目标标签keyc始终与{key0,key1,

keyn-1}中下标为c的标签值保持一致。比如,当c=0时,keyc=key0,当c=1时,keyc=key1。此外,sender不能获知receiver选择c的信息,receiver只能获得sender的一组标签中的一个标签keyc,也即满足ot协议,因此,receiver计算得到的目标标签也可以称为目标ot标签,sender计算得到的n个标签也可以称为n个ot标签,该两者共同构成一组rot标签。
42.需要说明,可以在sender和receiver之间重复多次地执行rot协议,且每次执行过程中,a不变,但随机数b的取值可不同,从而receiver可以生成若干不同的目标标签,sender可以得到若干组ot标签,其中每组包括n个ot标签。
43.上述基于ot标签,来生成和解密混淆表具体可以包括:由gc的garbler(即第二方)作为ot协议的sender生成若干对ot标签,并基于该若干对ot标签,对gc的evaluator(即第一方)的各输入线进行标注,进而生成混淆表。之后由第一方将其作为ot协议的receiver所生成的若干目标ot标签,确定为其拥有的各输入线的真值的标注字符串,来解密混淆表。由
于在该方法中,第二方不需要发送第一方拥有的输入线的真值的标注字符串,从而可以大大节约通信量。
44.以上就是本说明书实施例提供的方案的发明构思,以下对该方案进行详细说明。
45.图3为本说明书一个实施例提供的实施场景示意图。图3中,第一方和第二方可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。
46.具体地,第一方可以向第二方发送比较请求,其中包括n个标识:id1、id2、

、idn和l个基值。该n个标识包括目标标识idx和n-1个混淆标识,其中,x∈{1,2,

,n}。上述l个基值基于目标标识idx对应的第一数据recx的l位二进制数(p1、p2、

、p
l
)而确定。第二方在接收到比较请求之后,可以获取n个标识对应的n个第二数据:inf1、inf2、

、infn。生成布尔电路(boolean circuit),用于对第一数据recx与n个第二数据:inf1、inf2、

、infn进行比较。以及基于l个基值,生成布尔电路的混淆表,并将其提供给第一方。此外,还可以向第一方提供n个第二数据各自对应的l位真值的标注字符串,表示为{k
bi
}
n*l

47.第一方利用与l个基值关联生成的l个本地选择标签和{k
bi
}
n*l
,解密混淆表。之后可以根据解密结果,确定目标标识对应的第二数据infx与第一数据recx的目标比较结果。
48.本说明书所述的布尔电路是一组用连接线连接的逻辑门的集合,能对一组输入完成函数计算并输出结果。逻辑门包括与门(and)、异或门(xor)、非门(not)等实现布尔函数的门,一般一个函数可以编译成一组与门、异或门和非门完成计算。在一个示例中,该布尔电路可以采用混淆电路的执行方式。
49.关于布尔电路中的异或门,在一种优化的实现方式中,其可以实现为free-xor门。需要说明,当该异或门实现为free-xor门时,gc的garbler无需针对其生成对应的混淆表,由此可以降低双方之间的通信代价。但free-xor门的每根线(包括输入线和输出线)需满足如下要求:每根线的真值1对应的标注字符串等于其真值0对应的标注字符串异或偏移值。在一个示例中,该偏移值的预定位是1。以预定位为最低位为例来说,该偏移值可以为1001、0001或0101。
50.从图3可以看出,在本说明书实施例提供的比较方案中,第二方既无法获知第一方的第一数据recx,还无法获知第一方想要进行比较的第二数据infx,由此可以进一步提升数据的安全性。此外,第一方只能获取到上述目标比较结果而不能获知其它比较结果。可见,本方案可以加强数据的隐私保护。最后,在该方案中,第一方和第二方只需要进行一轮通信(即第一方-》第二方,第二方-》第一方),即可实现两方数据的安全比较,需要任何预计算和缓存,由此可以大大降低通信代价。
51.图4示出根据一个实施例的两方安全比较的方法交互图。如图4所示,该方法至少可以包括如下步骤。
52.步骤402,第一方向第二方发送比较请求。
53.这里的第一方对应于ot协议中的receiver,以及对应于gc中的evaluator。上述第二方对应于ot协议中的sender,以及对应于gc中的garbler。
54.上述比较请求中可以包括n个标识:id1、id2、

、idn和l个基值:s1、s2、

、s
l
。这里的n个标识包括目标标识idx和n-1个混淆标识。其中,x∈{1,2,

n}。
55.上述l个基值是由第一方至少基于目标标识对应的第一数据的l位二进制数而确定。在一个示例中,这里的l位二进制数可以是由第一方按比较最小精度获取的。比如,假设
比较精度为10,那么可以先计算recx/2
10
,然后对计算结果进行上取整,再按小端取l个比特,即可以得到l位二进制数,分别表示为:p1、p2、

、p
l

56.在一个示例中,第i个基值si可以是基于第一数据的第i位二进制数和约定随机数而确定。比如,可以是根据图2中b的计算公式来获取,即si=sig+pia,其中的si为计算第i个基值时选取的随机数,si∈zp,g为第一方和第二方预先约定的基点,pi为第一数据的第i位二级制数,a为双方的约定随机数,且a=ag。该随机数可以是由第一方从
57.步骤404,第二方获取n个标识对应的n个第二数据。
58.在上述示例性场景中,这里的n个第二数据例如可以为n个用户的存款额度:inf1、inf2、

、infn,这里的n个用户包括目标用户。
59.应理解,针对每个存款额度,可以按比较最小精度对其做上取整和截断,可以得到各存款额度各自对应的l位二进制数。
60.步骤406,第二方生成布尔电路,用于对第一数据与n个第二数据进行比较。
61.在一个示例中,上述布尔电路包括n个比较单元,其中的第j个比较单元用于对第一数据recx与第j个第二数据infj进行比较。关于每个比较单元的具体结构后续说明。
62.步骤408,第二方基于l个基值生成布尔电路的混淆表,并将其提供给第一方。
63.应理解,这里可以是针对布尔电路中全部或部分门生成对应的混淆表。在一个示例中,可以先对布尔电路中的每根线(包括输入线和输出线)进行标注,然后针对每个需要生成混淆表的门,先生成对应的真值表,然后用每根线的标注字符串替换真值表中的真实值,并通过两次对称加密和乱序混淆之后得到对应的混淆表。
64.为节约通信代价,本说明书实施例中,针对布尔电路中对应于第一方的第一数据的输入线,利用满足rot协议的ot标签对其进行标注。具体地,第二方利用与第一方约定的标签生成器,基于l个基值,生成l对ot标签。根据l对ot标签,确定对应于第一数据的l根输入线的标注字符串。
65.需要说明,上述标签生成器可以对应于约定的哈希函数。l对ot标签的生成过程具体可以为:基于第i个基值并利用约定的哈希函数,确定第一标签。基于第i个基值与约定随机数之差,并利用约定的哈希函数,确定第二标签。上述第一标签和第二标签构成第i对ot标签。类似地,可以生成其它对ot标签。
66.在一个示例中,第一标签的生成公式可以为:l0i=h(asi),第二标签的生成公式可以为:l1i=h(as
i-aa)。其中,a为第二方预先选取的随机数,其满足如下条件:a=ag。这里的a(双方的约定随机数)、g(双方约定的基点,选取自椭圆曲线)和si(第i个基值)的定义可以同上文所述。
67.应理解,这里的l0i和l1i的计算公式实际上就是图2中keym的计算公式,即l0i为m=0的情况,l1i为m=1的情况。
68.需要说明,在第二方生成l对ot标签的过程中或者之前,第一方可以利用上述标签生成器,与l个基值关联地生成l个本地选择标签,其中第i个本地选择标签,是第i对ot标签所含标签之一。
69.在一个示例中,第i个本地选择标签的生成公式可以为:li=h(sia),其中,si为第一方计算第i个基值时选取的随机数,a为双方的约定随机数。应理解,这里的li的计算公式实际上就是图2中keyc的计算公式。
70.应理解,在基于图2中keym的计算公式计算l0i和l1i,以及基于keyc的计算公式计算li时,可以确保在pi=0时,li=l0i,以及pi=1时,li=l1i。
71.在获取到l对ot标签之后,可以通过如下两种方式,来确定对应于第一数据的l根输入线的标注字符串。
72.在一种实现方式中,可以将第i对ot标签中的第一标签(即l0i),作为第i根输入线的真值0对应的标注字符串。将第i对ot标签中的第二标签(即l1i),作为第i根输入线的真值1对应的标注字符串。类似地,可以确定出其它每根输入线的两个标注字符串。
73.应理解,在通过该种方式确定对应于第一数据的l根输入线的标注字符串时,第二方需要针对异或门也生成对应的混淆表,但不需要针对该l根输入线发送对应的标注字符串。原因如下:
74.首先,上文给出pi=0时,li=l0i,pi=0说明第一方拥有第i根输入线的真值0,l0i为第二方针对第i根输入线的真值0所标注的标注字符串,而又因为li=l0i,从而第一方拥有的第i个本地选择标签,即为第二方针对第i根输入线的真值0所标注的标注字符串,从而第二方不需要向第一方发送l0i。
75.其次,上文给出pi=1时,li=l1i,pi=1说明第一方拥有第i根输入线的真值1,l1i为第二方针对第i根输入线的真值1所标注的标注字符串,而又因为li=l1i,从而第一方拥有的第i个本地选择标签,即为第二方针对第i根输入线的真值1所标注的标注字符串,从而第二方不需要向第一方发送l1i。
76.总之,在该方式下,第i个本地选择标签始终为第一方拥有的第i根输入线的真值所对应的标注字符串。
77.在另一种实现方式中,可以先将第i对ot标签中的第一标签与偏移值进行异或运算,得到第三标签。然后将第i对ot标签中的第一标签,作为第i根输入线的真值0对应的标注字符串。将计算得到的第三标签,作为第i根输入线的真值1对应的标注字符串。
78.应理解,在通过该种方式确定对应于第一数据的l根输入线的标注字符串时,第二方不需要针对异或门生成对应的混淆表。原因是:第i根输入线的真值1对应的标注字符串等于其真值0对应的标注字符串异或偏移值。也即满足free-xor门对输入线的要求。
79.但是在该种方式下,需要对第一方的l个本地选择标签进行更新。比如,在第i个本地选择标签为第i对ot标签中的第二标签时,需要将第i个本地选择标签更新为第三标签,以确保第i个本地选择标签始终为第一方拥有的第i根输入线的真值所对应的标注字符串。具体更新方法后续说明。
80.至此,第二方就完成了针对第一方的第一数据的输入线的标注。此外,第二方还可以针对每个第二数据的输入线,以及每根输出线进行标注,其标注方法可以采用已知的任一种方法。应理解,当布尔电路中的异或门实现为free-xor门时,要求每根线的真值1对应的标注字符串等于其真值0对应的标注字符串异或偏移值。
81.在完成布尔电路中每根线的标注之后,就可以针对布尔电路中全部或部分门生成对应的混淆表,并将其提供给第一方。此外,还可以将n个第二数据各自对应的l位真值的标注字符串提供给第一方,以供第一方基于接收的标注字符串和本地选择标签解密混淆表。
82.需要说明,在上述第二种实现方式中,第二方在向第一方发送混淆表的同时,还可以发送对应于第一数据的l根输入线的l个加密字符串,以便于第一方根据l个加密字符串,
更新l个本地选择标签。其中,任意的第i根输入线的加密字符串通过对第i对ot标签中的第一标签、第二标签以及偏移值进行异或运算得到。
83.其中,第一方更新l个本地选择标签的过程具体可以如下:
84.对于第i个本地选择标签,若与其相关联的第i个基值基于二进制数0而确定,也即第一方拥有的第i根输入线的真值为0,则第一方将第i个本地选择标签作为更新的第i个本地选择标签。否则,若第一方拥有的第i根输入线的真值为1,则第一方对第i个本地选择标签与第i个加密字符串进行异或运算,并将异或结果作为更新的第i个本地选择标签。
85.以下通过图5来对上述更新方法的正确性进行说明。
86.图5示出根据一个实施例的本地选择标签更新方法示意图。图5中,假设garbler(即第二方)已生成一对ot标签:l0和l1,evaluator(即第一方)已生成本地选择标签lc,选择(choice)为c,且当c=0时,lc=l0;c=1时,lc=l1。此外,还假设garbler将evaluator的输入线的k0设为l0,将k1设为l0^r,其中,r为偏移值。其中,将k0设为l0,表示将evaluator的输入线的真值0对应的标注字符串设为l0,将k1设为l0^r,表示将evaluator的输入线的真值1对应的标注字符串设为l0^r。那么,garbler可以向evaluator发送密文y=l0^l1^r。之后,若evaluator针对上述输入线拥有真值0,也即input==0,则将lc作为其针对该输入线获取的标注字符串,即k=lc。而若evaluator针对上述输入线拥有真值1,也即input==1,则将lc^y作为其针对该输入线获取的标注字符串,即k=lc^y。
87.当然,上述更新本地选择标签的方法有个前提条件是:evaluator针对上述输入线拥有的真值与选择c相同,也即input=c。在满足该条件的情况下,那么在input==0时,c=0,从而k=l0。在input==1时,c=1,从而k=l1^y=l1^l0^l1^r=l0^r。也即基于密文y,可以使得evaluator始终能获取到garbler针对evaluator拥有的输入值所标注的字符串。
88.回到图4中,步骤404生成的布尔电路可以具有n根输出线,其中的第i根输出线用于输出第一数据与第i个第二数据的第i个比较结果。第二方可以获取该n根输出线各自的真值0对应的第一字符串的最低比特,并将得到的n个比特(记为pb1、pb2、

、pbn),作为第一数据与n个第二数据的n个比较结果对应的n个第一结果分片。之后,第一方通过与第二方执行ot协议,可以从中选取出第一目标分片。这里的第一目标分片是指第一数据与目标标识对应的第二数据的目标比较结果的第一结果分片。最后,第一方根据混淆表的解密结果和第一目标分片,确定目标标识对应的第二数据与第一数据的目标比较结果。
89.上述第一方通过与第二方执行ot协议,从中选取出第一目标分片具体可以包括:第二方利用标签生成器,基于其它基值,生成n个ot标签。第二方利用n个ot标签,加密n个第一结果分片。第一方利用与其它基值关联生成的目标ot标签,对加密结果进行解密,得到第一目标分片。这里的目标ot标签是n个ot标签中之一。
90.首先,上述其它基值s
out
可以是由第一方连通上述l个基值一起发送给第二方的。该其它基值s
out
可以是由第一方基于目标标识的位置序号和约定随机数而确定。比如,其可以是根据图2中b的计算公式来获取,即s
out
=s
out
g+p
out
a,其中的s
out
为选取的随机数,s
out
∈zp,g为第一方和第二方预先约定的基点,p
out
为目标标识在n个标识中的位置序号,即p
out
∈{0,1,

,n-1},a为双方的约定随机数,且a=ag。该随机数可以是由第一方从本地文件中读取得到,也可以是预先设定的。
91.此外,上述基于其它基值,生成n个ot标签具体可以包括:迭代地执行n轮标签生成,其中第j轮标签生成包括,对其它基值与当前轮次和约定随机数的乘积求差,并基于差值,利用哈希函数,确定本轮生成的ot标签。在一个示例中,上述标签生成公式可以表示为:lj=h(as
out-jaa),其中,j为当前轮次,j∈{0,1,

,n-1}。a为第二方预先选取的随机数,其满足如下条件:a=ag。这里的a(双方的约定随机数)、g(双方约定的基点,选取自椭圆曲线)和s
out
(其它基值)的定义可以同上文所述。
92.在上述n轮迭代结束之后,就可以得到n个ot标签。
93.应理解,这里的lj的计算公式实际上就是图2中keym的计算公式。
94.接着,上述第二方利用n个ot标签,加密n个第一结果分片具体可以包括:分别获取n个ot标签各自的最低比特。对该n个第二ot标签各自的最低比特与n个第一结果分片进行异或运算,得到加密结果,即得到加密的n个第一结果分片。
95.最后,上述第一方利用与其它基值关联生成的目标ot标签,对加密结果进行解密,可以包括:依次对该目标ot标签与加密的n个第一结果分片进行异或运算。其中,只有当该目标ot标签与加密的第一目标分片进行异或运算时,可以获取到明文的第一目标分片sbx。原因如下:
96.上述目标ot标签的生成公式可以为:lout=h(s
out
a),其中,s
out
为第一方计算上述其它基值时选取的随机数,a为双方的约定随机数。应理解,这里的lout的计算公式实际上就是图2中keyc的计算公式。
97.应理解,在基于图2中keym的计算公式计算lj,以及基于keyc的计算公式计算lout时,可以确保在p
out
=0时,lout=l0,以及p
out
=1时,lout=l1,依次类推。从而第一方利用lout可以解密出利用n个ot标签中与其相同的标签所加密的第一结果分片(即第一目标分片)。原理是:某个数与同一个数异或两次之后,其结果仍然为该数本身。
98.步骤410,第一方利用与l个基值关联生成的l个本地选择标签,解密混淆表,并至少根据解密结果,确定目标标识对应的第二数据与第一数据的目标比较结果。
99.当然,如果第一方对l个本地选择标签进行了更新,那么可以利用更新的l个本地选择标签,解密混淆表。
100.需要说明,由于初始的或更新的第i个本地选择标签,始终为第一方拥有的、对应于第一数据的第i根输入线的真值的标注字符串。从而第一方可以基于l个本地选择标签,解密混淆表。当然,在实际应用中,第一方还可以结合第二方发送的n个第二数据各自对应的l位真值的标注字符串,来解密混淆表,得到解密结果。
101.在一个示例中,上述解密结果可以包括第一方算出的n根输出线各自的目标字符串。上述确定目标标识对应的第二数据与第一数据的目标比较结果可以包括:获取n根输出线各自的目标字符串的最低比特,并将得到的n个比特作为n个比较结果对应的n个第二结果分片(记为:sb1、sb2、

、sbn)。对第一目标分片pbx与第二目标分片sbx进行异或运算,得到目标比较结果res。这里的第二目标分片sbx是根据目标标识的位置序号,从n个第二结果分片中选取得到的。
102.至此两方安全比较的方法描述完成,以下对上述布尔电路的具体结构进行说明。
103.图6示出根据一个实施例的布尔电路示意图。图6中,该布尔电路包括n个比较单元,其中的第i个比较单元用于对第一数据recx与第i个第二数据infi进行比较,以得到比
较结果r[i]。
[0104]
以任意的第i比较单元为例来说,其可以包括:
[0105]
最低位比较子单元,利用单个与门,确定第i个第二数据的最低位是否小于第一数据的最低位的中间比较结果。
[0106]
非最低位比较子单元,对于第i个第二数据和第一数据的l-1个非最低位,基于中间比较结果,按照从低位到高位的顺序分别执行l-1轮比较处理。
[0107]
结果确定单元,用于根据针对最高位进行比较处理之后的中间比较结果,确定对应的第i比较结果。
[0108]
上述最低位比较子单元进一步包括:
[0109]
第一非门,接收第i个第二数据的最低位d[i][0],输出第一中间结果t0;
[0110]
第一与门,接收第一中间结果t0和第一数据的最低位p[0],输出第二中间结果t1;
[0111]
第二非门,接收第二中间结果t1,输出最低位对应的中间比较结果part_res。
[0112]
可以理解的是,最低位比较子单元用于执行如下处理:
[0113]
t0=inv(d[i][0]),该处理由第一非门执行;
[0114]
t1=and(t0,p[0]),该处理由第一与门执行;
[0115]
part_res=inv(t1),该处理由第二非门执行;
[0116]
从而使得只有d[i][0]==0且p[0]==1时,part_res=0,否则part_res=1。
[0117]
此外,上述非最低位比较子单元进一步包括:
[0118]
第一异或门,接收上一位对应的中间比较结果part_res和第i个第二数据的当前位d[i][j],输出第三中间结果t0;
[0119]
第二异或门,接收上一位对应的中间比较结果part_res和第一数据的当前位p[j],输出第四中间结果t1;
[0120]
第三非门,接收第四中间结果t1,输出第五中间结果t2;
[0121]
第二与门,接收第三中间结果t0和第五中间结果t2,输出第六中间结果t3;
[0122]
第三异或门,接收上一位对应的中间比较结果part_res和第六中间结果t3,输出当前位对应的中间比较结果part_res。
[0123]
可以理解的是,非最低位比较子单元用于执行如下处理:
[0124]
for j in range(1,l-1):
[0125]
t0=xor(part_res,d[i][j])
[0126]
t1=xor(part_res,p[j])
[0127]
t2=inv(t1)
[0128]
t3=and(t0,t2)
[0129]
part_res=xor(part_res,t3)
[0130]
上述处理依次对应于前述第一异或门、第二异或门、第三非门、第二与门、第三异或门的处理,从而使得对于第j位,只有d[i][j...0]《p[j...0]时,part_res=0,否则part_res=1。
[0131]
应理解,当非最低位比较子单元执行全部处理之后,也即针对第l-1位比较处理完成之后,结果确定单元可以将最终得到的part_res作为最终的第i比较结果。即r[i]=part_res。类似地,可以得到其它第二数据与第一数据的比较结果。
[0132]
以下再对本方案的计算量和通信量进行说明。
[0133]
关于计算量:
[0134]
第一方需要计算l个基值和l个本地选择标签,其中,l个基值的计算过程包含了l个定点点乘,l个本地选择标签的计算过程包含了l个非定点点乘和l个哈希运算。此外,第一方还需要计算1个其它基值和1个目标ot标签。其中,1个其它基值的计算过程包含了1个定点点乘,1个目标ot标签的计算过程包含了1个非定点点乘和1个哈希运算。综上,第一方的计算量为:l+1个定点点乘、l+1个非定点点乘以及l+1个哈希运算。
[0135]
第二方需要计算l对ot标签,其中的每对ot标签的计算过程包含l个非定点点乘和2l个哈希运算。此外,第二方还需要计算n个ot标签,该计算过程包含1个非定点点乘和n个哈希。综上,第二方的计算量为:l+1个非定点点乘以及2l+n个哈希运算。
[0136]
对第一方和第二方的计算量进行汇总之后,得到总计算量:2l+2个非定点点乘、l+1个定点点乘以及3l+n个哈希运算。
[0137]
关于通信量(用比特表示):
[0138]
首先,第一方需要向第二方发送n个id、l个基值和1个其它基值,对应的通信量分别表示为:n*len(id)、l*2k、2k,其中,k表示安全参数。从而该次发送的通信量为:n*len(id)+2(l+1)k。
[0139]
其次,第二方需要向第一发送l个加密字符串、第二方的输入的标注字符串、混淆表(n*l个与门)以及加密的n个第一结果分片,对应的通信量分别表示为:l*k、n*l*k、n*l*2k以及n。从而该次发送的通信量为:(3n*l+l)*k+n。
[0140]
关于上述混淆表的通信量,之所以基于n*l个与门确定,是因为目前混淆电路最优的实现方案,对异或门(比如,free-xor们)和非门不需要通信,只需要本地计算,与门需要调用密码计算并进行通信,并且在一般应用场景中通信量是吞吐量上限的瓶颈。混淆电路的通信量与布尔电路的与门数正相关。
[0141]
综合以上,本说明书实施例提供的两方安全比较的方法,第一方同时向第二方发送n个标识,可以实现数据的匿名比较,也即第二方不仅无法获知第一方的数据,还无法获知第一方想要与第二方的哪个数据进行比较,这进一步确保了数据的安全性。此外,第二方基于由第一方发送的l个基值,来生成布尔电路的混淆表,以及第一方利用其本地与l个基值关联生成的l个选择标签解密混淆表,可以使得第二方无需针对第一方的输入发送对应的标注字符串,或者可以只发对应输入的一个加密字符串,由此可以解决传统技术中,gc的garbler需要针对evaluator的输入发送两个标注字符串而耗费通信资源的问题。最后,本方案中,第一方与第二方只需要进行一轮通信,且布尔电路中与门数量达到最少(只需n*l个),由此可以降低通信代价(包括通信量和通信轮数)。
[0142]
与上述两方安全比较的方法对应地,本说明书一个实施例还提供的一种两方安全比较的系统,如图7所示,该系统可以包括:
[0143]
第一方702,用于向第二方704发送比较请求,其中包括n个标识和l个基值,n个标识包括目标标识和n-1个混淆标识,l个基值至少基于目标标识对应的第一数据的l位二进制数而确定。
[0144]
第二方704,用于获取n个标识对应的n个第二数据。
[0145]
第二方704,还用于生成布尔电路,用于对第一数据与n个第二数据进行比较定。
[0146]
第二方704,还用于基于l个基值生成布尔电路的混淆表,并将其提供给第一方702。
[0147]
第二方704具体用于:
[0148]
利用与第一方702约定的标签生成器,基于l个基值,生成l对ot标签。根据l对ot标签,确定对应于第一数据的l根输入线的标注字符串。
[0149]
第一方702还用于利用标签生成器,与l个基值关联地生成l个本地选择标签,其中,第i个本地选择标签,是第i对ot标签所含标签之一。
[0150]
第一方702,还用于利用与l个基值关联生成的l个本地选择标签,解密混淆表,并至少根据解密结果,确定目标标识对应的第二数据与第一数据的目标比较结果。
[0151]
可选地,l个基值中的第i个基值,基于第一数据的第i位二进制数和约定随机数而确定,上述标签生成器对应于约定的哈希函数;
[0152]
第二方704还具体用于:
[0153]
基于第i个基值并利用哈希函数,确定第一标签;
[0154]
基于第i个基值与约定随机数之差,并利用哈希函数,确定第二标签,第一标签和第二标签构成第i对ot标签。
[0155]
可选地,任意的第i对ot标签包括第一标签和第二标签;
[0156]
第二方704还具体用于:
[0157]
将第一标签,作为第i根输入线的真值0对应的标注字符串;
[0158]
将第二标签,作为第i根输入线的真值1对应的标注字符串。
[0159]
可选地,任意的第i对ot标签包括第一标签和第二标签;
[0160]
第二方704,还用于将第一标签与偏移值进行异或运算,得到第三标签;
[0161]
第二方704还具体用于:
[0162]
将第一标签,作为第i根输入线的真值0对应的标注字符串;
[0163]
将第三标签,作为第i根输入线的真值1对应的标注字符串。
[0164]
可选地,第二方704,还用于对第一标签、第二标签以及偏移值进行异或运算,得到第i根输入线的加密字符串;
[0165]
将l根输入线的l个加密字符串提供给第一方702。
[0166]
第一方702,还用于根据l个加密字符串,更新l个本地选择标签;
[0167]
第一方702具体用于:
[0168]
利用更新的l个本地选择标签,解密混淆表。
[0169]
第一方702还具体用于:
[0170]
对于第i个本地选择标签,若与其相关联的第i个基值基于二进制数0而确定,则将第i个本地选择标签作为更新的第i个本地选择标签;否则,对第i个本地选择标签与第i个加密字符串进行异或运算,并将异或结果作为更新的第i个本地选择标签。
[0171]
可选地,上述布尔电路具有n根输出线;
[0172]
第二方704,还用于获取n根输出线各自的真值0对应的第一字符串的最低比特,并将得到的n个比特,作为第一数据与n个第二数据的n个比较结果对应的n个第一结果分片;
[0173]
第一方702,还用于通过与第二方704执行ot协议,从n个第一结果分片中选取第一目标分片;
[0174]
第一方702还具体用于:
[0175]
根据解密结果以及第一目标分片,确定目标比较结果。
[0176]
可选地,上述比较请求还包括1个其它基值;
[0177]
第二方704,还用于利用标签生成器,基于其它基值,生成n个ot标签;
[0178]
第二方704,还用于利用n个ot标签,加密n个第一结果分片,得到加密结果;
[0179]
第一方702,还用于利用与其它基值关联生成的目标ot标签,对加密结果进行解密,得到第一目标分片,该目标ot标签是n个ot标签中之一。
[0180]
可选地,上述其它基值,基于目标标识的位置序号和约定随机数而确定;
[0181]
第二方704还具体用于:
[0182]
迭代地执行n轮标签生成,其中第j轮标签生成包括,对其它基值与当前轮次和约定随机数的乘积求差,并基于差值,利用哈希函数,确定本轮生成的ot标签。
[0183]
第二方704还具体用于:
[0184]
分别获取n个ot标签各自的最低比特;
[0185]
对n个ot标签各自的最低比特与n个第一结果分片进行异或运算,得到加密结果。
[0186]
可选地,上述解密结果包括第一方702算出的n根输出线各自的目标字符串;
[0187]
第一方702还具体用于:
[0188]
获取n根输出线各自的目标字符串的最低比特,并将得到的n个比特作为n个比较结果对应的n个第二结果分片;
[0189]
对第一目标分片与第二目标分片进行异或运算,得到目标比较结果;第二目标分片是根据目标标识的位置序号,从n个第二结果分片中选取得到的。
[0190]
可选地,上述布尔电路包括n个比较单元,其中的每个比较单元用于对第一数据与n个第二数据中的1个第二数据进行比较。
[0191]
上述n个第二数据均为l位二进制数,任意的第i比较单元包括:
[0192]
最低位比较子单元,用于利用单个与门,确定第i个第二数据的最低位是否小于所述第一数据的最低位的中间比较结果;
[0193]
非最低位比较子单元,用于对于第i个第二数据和第一数据的l-1个非最低位,基于中间比较结果,按照从低位到高位的顺序分别执行l-1轮比较处理;
[0194]
结果确定单元,用于根据针对最高位进行比较处理之后的中间比较结果,确定对应的第i比较结果。
[0195]
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
[0196]
本说明书一个实施例提供的两方安全比较的系统,用以在保证安全多方计算的安全性的情况下,降低网络通信代价。
[0197]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图4所描述的方法。
[0198]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图4所述的方法。
[0199]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0200]
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
[0201]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0202]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0203]
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1