一种基于秘密分享和排序网络的安全排序方法及系统与流程

文档序号:33639378发布日期:2023-03-29 01:37阅读:128来源:国知局
一种基于秘密分享和排序网络的安全排序方法及系统与流程

1.本发明涉及隐私计算技术领域,具体而言,涉及一种基于秘密分享和排序网络的安全排序方法及系统。


背景技术:

2.在隐私计算中,安全排序算法指的是两个或多个参与方,在不暴露自己的数据的前提下,对彼此的数据进行排序。最后排序的结果为一组有序的秘密分享。将秘密共享恢复后可以得到有序的数组。
3.安全排序算法的应用有很多,比如隐私保护的拍卖、竞标。多个参与方分别出价,但互相不知道对方的出价价格,在各自的出价上面运算一个安全排序算法,最后排序后数组中第一位就是中拍者/中标者。
4.除此之外,安全排序也可以用于其他的算法中作为基础算子,比如在纵向的联邦学习中,使用全流程的安全多方计算方法来做机器学习算法的训练和预测。里面会有诸如maxpool、argmax、argsort这些算子,直接使用安全多方计算的加法和乘法比较难构造,因此需要使用安全排序算法。
5.现有的安全排序算法中,通常是要求所有的输入都是一个完整的输入,而不是一个秘密分享的碎片。这就极大地限制了安全排序的应用。因为在很多情况下,进行排序的双方并不一定是数据的拥有者,因此要求使用完整的输入会将数据暴露给排序的参与方,造成了很大的隐私泄露问题。
6.而另一种基于混淆电路构造的安全排序方案中,虽然不会暴露输入给排序的参与方,但是这种方案需要将整个排序的过程都表达为电路的形式,整个电路非常地复杂,排序需要的时间太长,效率较低。且在更改排序数据的数量时,需要重新构造电路,是一个不实用的方法。因此,如何提出一种安全排序算法,以满足通用性和高效性是目前亟需解决的问题。


技术实现要素:

7.本发明的目的在于提供一种基于秘密分享和排序网络的安全排序方法及系统,其能够支持整数输入和秘密分享输入,通过双调排序网络以及比较并交换协议的结合,构造可并行的排序方案,以满足安全排序算法的通用性和高效性。
8.本发明的实施例是这样实现的:
9.第一方面,本技术实施例提供一种基于秘密分享和排序网络的安全排序方法,其包括如下步骤:
10.任一参与方通过秘密分享生成秘密碎片,并将秘密碎片发送至互相不窜通的两个计算方;
11.当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络;
12.按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并
交换算法;
13.通过双调排序网络输出前预设数量个秘密碎片作为排序后的数组。
14.在本发明的一些实施例中,上述当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络的步骤包括:
15.若秘密碎片的数量为n,则将秘密碎片的数量扩充为2的幂次n

,其中,
16.构造一个n

大小的排序网络,分为2log n

层结构,其中,每一层包含n

/2对数据。
17.在本发明的一些实施例中,上述按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法的步骤包括:
18.构造一个两方的整数比较方案cmp(x,y);
19.通过整数比较方案cmp(x,y),设计秘密碎片比较方案scmp(x(i),y(i));
20.通过调用秘密碎片比较方案scmp(x(i),y(i)),实现比较并交换方案scmp_swap(x(i),y(i))。
21.在本发明的一些实施例中,上述构造一个两方的整数比较方案cmp(x,y)的步骤包括:
22.输入第一计算方有一个输入x∈{0,1}
l
,第二计算方有一个输入y∈{0,1}
l
,输出为第一计算方得到w
(1)
,第二计算方得到w
(2)
,其中,w
(1)
+w
(2)
=1{x<y};
23.分别将x和y分为m比特大小的分片,x=x
q-1
||...||x0,y=y
q-1
||...||y0,其中,xi,yi∈{0,1}m,q=l/m;
24.令m=2m;
25.对于i∈{0,...,q-1},第一计算方与第二计算方调用的0t算法得到lti=1{xi<yi}和eqi=1{xi=yi};
26.根据lti=1{xi<yi}和eqi=1{xi=yi}合并计算,得到}合并计算,得到和1{x
i+1
||xi=y
i+1
||yi}=1{x
i+1
=y
i+1
}∧1{xi=yi}两个合并算法;
27.通过二分法调用两个合并算法,得到1{x<y},令w
(1)
+w
(2)
=1{x<y}作为算法的输出,满足当x<y时,w
(1)
+w
(2)
=1,当x≥y时,w
(1)
+w
(2)
=0。
28.在本发明的一些实施例中,上述通过整数比较方案cmp(x,y),设计秘密碎片比较方案scmp(x(i),y(i))的步骤包括:
29.第一计算方输入x
(1)
、y
(1)
,第二计算方输入x
(2)
、y
(2)
,其中,x
(1)
+x
(2)
=x mod 2
l
,y
(1)
+y
(2)
=y mod 2
l
,输出为第一计算方得到w
(1)
,第二计算方得到w
(2)
,其中,w
(1)
+w
(2)
=1{x<y};
30.计算z(i)=x
(i)-y(i);
31.将z(i)分为最高位msb(z(i))与其余部分z(i)′
,则z(i)=msb(z(i))||z(i)′

32.第一计算方与第二计算方分别调用c
(1)
,c
(2)
=cmp(2
l-1-1-z
(1)
,z
(2)
)后,第一计算方返回第二计算方返回
33.在本发明的一些实施例中,上述通过调用秘密碎片比较方案scmp(x(i),y(i)),实现比较并交换方案scmp_swap(x(i),y(i))的步骤包括:
34.第一计算方输入x
(1)
、y
(1)
,第二计算方输入x
(2)
、y
(2)
,其中,x
(1)
+x
(2)
=x mod 2
l
,y
(1)
+y
(2)
=y mod 2
l
,输出为第一计算方得到a
(1)
、b
(1)
,第二计算方得到a
(2)
、b
(2)
,其中,a=a
(1)
+a
(2)
,b=b
(1)
+b
(2)
,若x<y,则a=x,b=y,若x≥y,则a=y,b=x;
35.第一计算方和第二计算方分别调用并得到w(i)=scmp(x(i),y(i));
36.第一计算方令u
(1)
=1-w
(1)
,第二计算方令u
(2)
=w
(2)

37.第一计算方和第二计算方分别计算a(i)=mul(w(i),x(i))+mul(u(i),y(i)),同时第一计算方和第二计算方分别计算b(i)=mul(u(i),x(i))+mul(w(i),y(i)),其中,mul为秘密分享的乘法协议。
38.第二方面,本技术实施例提供一种基于秘密分享和排序网络的安全排序系统,其包括:
39.秘密碎片生成模块,用于任一参与方通过秘密分享生成秘密碎片,并将秘密碎片发送至互相不窜通的两个计算方;
40.双调排序网络构造模块,用于当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络;
41.网络运行模块,用于按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法;
42.输出模块,用于通过双调排序网络输出前预设数量个秘密碎片作为排序后的数组。
43.第三方面,本技术实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
44.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
45.相对于现有技术,本发明的实施例至少具有如下优点或有益效果:
46.本发明提出了一种基于秘密分享和排序网络的安全排序方法及系统,其包括如下步骤:任一参与方通过秘密分享生成秘密碎片,并将秘密碎片发送至互相不窜通的两个计算方。当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络。按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法。通过双调排序网络输出前预设数量个秘密碎片作为排序后的数组。该方法及系统只使用了ot协议和秘密分享协议构造安全的比较与交换协议,不依赖耗时的公钥操作。且所有的排序操作支持秘密分享的碎片作为输入,或者明文作为输入,方案的灵活性比现有技术更强。并且采用了双调排序的排序网络,允许多个比较协议并行执行,达到了更高的效率。通过该方法及系统构造在秘密碎片上比较并交换的方案,在引入排序网络的双调排序算法中可并行的比较并交换数据,使得在多线程情况下的比较并交换协议的调用复杂度达到对数级别。而且构造了安全排序方案,输入可以是完整输入也可以是秘密碎片,满足通用性,同时使用双调排序,达到了更高的排序效率。从而满足了安全排序算法的通用性和高效性。
附图说明
47.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
48.图1为本发明实施例提供的一种基于秘密分享和排序网络的安全排序方法的流程图;
49.图2为本发明实施例提供的另一种基于秘密分享和排序网络的安全排序方法的流程图;
50.图3为本发明实施例提供的一种双调排序示意图;
51.图4为本发明实施例提供的一种基于秘密分享和排序网络的安全排序系统的结构框图;
52.图5为本发明实施例提供的一种电子设备的示意性结构框图。
53.图标:110-秘密碎片生成模块;120-双调排序网络构造模块;130-网络运行模块;140-输出模块;101-存储器;102-处理器;103-通信接口。
具体实施方式
54.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
55.实施例
56.请参照图1和图2,图1所示为本发明实施例提供的一种基于秘密分享和排序网络的安全排序方法的流程图,图2所示为本发明实施例提供的另一种基于秘密分享和排序网络的安全排序方法的流程图。本技术实施例提供一种基于秘密分享和排序网络的安全排序方法,其包括如下步骤:
57.s110:任一参与方通过秘密分享生成秘密碎片,并将秘密碎片发送至互相不窜通的两个计算方;
58.具体的,令所有参与排序的数据为d1,d2,...,dn,将每个数据分享为和且满足这里2
l
是数据的取值范围。将发送给第一计算方,发送给第二计算方。
59.s120:当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络;
60.具体的,当计算方得到秘密碎片后,计算方将数据扩充到2的幂次个,并生成一个双调排序网络。
61.在本实施例的一些实施方式中,上述当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络的步骤包括:若秘密碎片的数量为n,则将秘密碎片的数量扩充为2
的幂次n

,其中,构造一个n

大小的排序网络,分为2log n

层结构,其中,每一层包含n

/2对数据。由于每一层涉及到n

/2对数据两两之间的相互比较和交换,则在经过几层的比较交换后,得到一个有序的秘密分享数组。
62.s130:按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法;
63.请参照图3,图3所示为本发明实施例提供的一种双调排序示意图。在本实施例的一些实施方式中,上述按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法的步骤包括:构造一个两方的整数比较方案cmp(x,y)。通过整数比较方案cmp(x,y),设计秘密碎片比较方案scmp(x(i),y(i))。通过调用秘密碎片比较方案scmp(x(i),y(i)),实现比较并交换方案scmp_swap(x(i),y(i))。
64.具体的,首先构造了一个两方的整数比较方案cmp(x,y),然后通过整数比较方案设计了秘密碎片比较方案scmp(x(i),y(i)),通过调用秘密碎片比较方案可以实现比较并交换方案scmp-swap(x(i),y(i))。
65.在本实施例的一些实施方式中,上述构造一个两方的整数比较方案cmp(x,y)的步骤包括:输入第一计算方有一个输入x∈{0,1}
l
,第二计算方有一个输入y∈{0,1}
l
,输出为第一计算方得到w
(1)
,第二计算方得到w
(2)
,其中,w
(1)
+w
(2)
=1{x<y}。构造过程为:a.分别将x和y分为m比特大小的分片,x=x
q-1
||...||x0,y=y
q-1
||...||y0,其中,xi,yi∈{0,1}m,q=l/m。b.令m=2m。c.对于i∈{0,...,q-1},第一计算方与第二计算方调用的ot算法得到lti=1{xi<yi}和eqi=1{xi=yi}。d.根据lti=1{xi<yi}和eqi=1{xi=yi}合并计算,得到和1{x
i+1
||xi=y
i+1
||yi}=1{x
i+1
=y
i+1
}∧1{xi=yi}两个合并算法。e.通过二分法调用两个合并算法,得到1{x<y},令w
(1)
+w
(2)
=1{x<y}作为算法的输出,满足当x<y时,w
(1)
+w
(2)
=1,当x≥y时,w
(1)
+w
(2)
=0。
66.在本实施例的一些实施方式中,上述通过整数比较方案cmp(x,y),设计秘密碎片比较方案scmp(x(i),y(i))的步骤包括:第一计算方输入x
(1)
、y
(1)
,第二计算方输入x
(2)
、y
(2)
,其中,x
(1)
+x
(2)
=x mod 2
l
,y
(1)
+y
(2)
=y mod 2
l
,输出为第一计算方得到w
(1)
,第二计算方得到w
(2)
,其中,w
(1)
+w
(2)
=1{x<y}。构造秘密碎片的比较算法w(i)=scmp(x(i),y(i))的过程为:计算z(i)=x
(i)-y(i)。将z(i)分为最高位msb(z(i))与其余部分z(i)′
,则z(i)=msb(z(i))||z(i)′
。第一计算方与第二计算方分别调用c
(1)
,c
(2)
=cmp(2
l-1-1-z
(1)
,z
(2)
)后,第一计算方返回第二计算方返回
67.在本实施例的一些实施方式中,上述通过调用秘密碎片比较方案scmp(x(i),y(i)),实现比较并交换方案scmp_swap(x(i),y(i))的步骤包括:第一计算方输入x
(1)
、y
(1)
,第二计算方输入x
(2)
、y
(2)
,其中,x
(1)
+x
(2)
=x mod 2
l
,y
(1)
+y
(2)
=y mod 2
l
,输出为第一计算方得到a
(1)
、b
(1)
,第二计算方得到a
(2)
、b
(2)
,其中,a=a
(1)
+a
(2)
,b=b
(1)
+b
(2)
,若x<y,则a=x,b=y,若x≥y,则a=y,b=x。实现比较并交换方案scmp_swap(x(i),y(i))的过程为:第一计算方和第二计算方分别调用并得到w(i)=scmp(x(i),y(i))。第一计算方令u
(1)
=1-w
(1)
,第二计算方令u
(2)
=w
(2)
。第一计算方和第二计算方分别计算a(i)=mul(w(i),x(i))+mul(u(i),y(i)),同时第一计算方和第二计算方分别计算b(i)=mul(u(i),x(i))+mul(w(i),y(i)),其中,mul为秘密分享的乘法协议。
68.s140:通过双调排序网络输出前预设数量个秘密碎片作为排序后的数组。
69.具体的,输出前n个秘密碎片,即为有序的数组。
70.上述实现过程中,该方法只使用了ot协议和秘密分享协议构造安全的比较与交换协议,不依赖耗时的公钥操作。且所有的排序操作支持秘密分享的碎片作为输入,或者明文作为输入,方案的灵活性比现有技术更强。并且采用了双调排序的排序网络,允许多个比较协议并行执行,达到了更高的效率。通过该方法构造在秘密碎片上比较并交换的方案,在引入排序网络的双调排序算法中可并行的比较并交换数据,使得在多线程情况下的比较并交换协议的调用复杂度达到对数级别。而且构造了安全排序方案,输入可以是完整输入也可以是秘密碎片,满足通用性,同时使用双调排序,达到了更高的排序效率。从而满足了安全排序算法的通用性和高效性。其中,通用性指算法是对于安全多方计算通用的,即所有的输入和输出可以都是秘密分享的形式,高效性指的是针对大量数据的排序,排序算法的复杂度是对数级别的。
71.请参照图4,图4所示为本发明实施例提供的一种基于秘密分享和排序网络的安全排序系统的结构框图。本技术实施例提供一种基于秘密分享和排序网络的安全排序系统,其包括:
72.秘密碎片生成模块110,用于任一参与方通过秘密分享生成秘密碎片,并将秘密碎片发送至互相不窜通的两个计算方;
73.双调排序网络构造模块120,用于当计算方得到秘密碎片后,根据秘密碎片的数量构造双调排序网络;
74.网络运行模块130,用于按照双调排序网络中的每一层结构,对数据并行的两两秘密碎片之间运行比较并交换算法;
75.输出模块140,用于通过双调排序网络输出前预设数量个秘密碎片作为排序后的数组。
76.上述实现过程中,该系统只使用了ot协议和秘密分享协议构造安全的比较与交换协议,不依赖耗时的公钥操作。且所有的排序操作支持秘密分享的碎片作为输入,或者明文作为输入,方案的灵活性比现有技术更强。并且采用了双调排序的排序网络,允许多个比较协议并行执行,达到了更高的效率。通过该系统构造在秘密碎片上比较并交换的方案,在引入排序网络的双调排序算法中可并行的比较并交换数据,使得在多线程情况下的比较并交换协议的调用复杂度达到对数级别。而且构造了安全排序方案,输入可以是完整输入也可以是秘密碎片,满足通用性,同时使用双调排序,达到了更高的排序效率。从而满足了安全排序算法的通用性和高效性。其中,通用性指算法是对于安全多方计算通用的,即所有的输入和输出可以都是秘密分享的形式,高效性指的是针对大量数据的排序,排序算法的复杂度是对数级别的。
77.请参照图5,图5为本技术实施例提供的电子设备的一种示意性结构框图。电子设备包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一
条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,如本技术实施例所提供的一种基于秘密分享和排序网络的安全排序系统对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
78.其中,存储器101可以是但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
79.处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
80.可以理解,图5所示的结构仅为示意,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。
81.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
82.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
83.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
84.对于本领域技术人员而言,显然本技术不限于上述示范性实施例的细节,而且在不背离本技术的精神或基本特征的情况下,能够以其它的具体形式实现本技术。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本技术的范围由所附权
利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本技术内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1