一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多方安全计算方法、电子设备及可读存储介质与流程

2022-06-11 14:59:28 来源:中国专利 TAG:


1.本发明属于计算机安全领域,特别涉及一种多方安全计算方法、电子设备及可读存储介质。


背景技术:

2.现有技术中,在安全多方计算的实现中,先将任务划分为n个子任务,然后将子任务分发给n个节点(包括计算发起方和计算参与方)分别进行计算并返回计算结果,考虑到应用场景等,传统多方计算的mpc协议(安全多方计算协议)主要针对仅2方或仅3方等的限制计算节点的情况,当需要扩展到更多方计算时,则需要大量修改调整,以实现算子的主要逻辑的改动,甚至有的mpc协议可能都无法扩展应对,且调整后数据存在完全出门的风险,需要重新进行算法设置。


技术实现要素:

3.本发明要解决的技术问题是为了克服现有技术中的上述缺陷,提供一种多方安全计算方法、电子设备及可读存储介质。
4.本发明是通过下述技术方案来解决上述技术问题:一种多方安全计算方法,所述多方安全计算方法包括:确定参与计算的n个参与方;将每个参与方的参与计算的原始数据拆分得到n个数据碎片;对任一参与方,保留自身的1个第一数据碎片,并接收剩余n-1个参与方发送的n-1个第二数据碎片;所述任一参与方基于所述第一数据碎片和所述第二数据碎片执行计算。
5.较佳地,所述多方安全计算方法还包括:获取每个参与方的地址信息,根据数值n和所述地址信息动态生成对应的集群配置信息;其中,每个参与方基于所述集群配置信息实现与任意参与方的通信,以实现任意两个参与方之间的数据传输。
6.较佳地,所述多方安全计算方法还包括:所述任一参与方配置生成至少一组与三个三元组种子对应的三元组碎片;其中,所述三个三元组种子包括第一种子、第二种子和第三种子,第一种子和第二种子的乘积等于第三种子;当多方计算包括乘法计算和/或与操作时,所述任一参与方基于所述第一数据碎片和所述第二数据碎片执行计算的步骤具体包括:所述任一参与方基于所述第一数据碎片、所述第二数据碎片、对应的三元组碎片执行计算。
7.较佳地,若n不小于3,所述任一参与方配置生成至少一组与三个三元组种子对应
的三元组碎片的步骤具体包括:所述任一参与方配置生成与所述三个三元组种子对应的多组三元组碎片;所述任一参与方基于所述第一数据碎片、所述第二数据碎片、对应的三元组碎片执行计算的步骤具体包括:从所述任一参与方持有的数据碎片中选取与任意两个原始数据对应的数据碎片作为目标数据碎片;选取任意一组三元组碎片作为目标三元组碎片;基于两个目标数据碎片和一组目标三元组碎片计算得到一中间碎片;将从剩余的数据碎片中任意选取的一个数据碎片和所述中间碎片作为新的目标数据碎片,并返回所述选取任意一组三元组碎片作为目标三元组碎片的步骤,直至所有数据碎片全部执行完计算。
8.较佳地,所述基于两个目标数据碎片和一组目标三元组碎片计算得到一中间碎片的步骤具体包括:确定第个参与方持有的两个目标数据碎片为 ,;其中, 为第个参与方持有的与原始数据对应的数据碎片,为第个参与方持有的与原始数据 对应的数据碎片,∈0~n-1;确定第 个参与方持有的目标三元组碎片为 、、;其中,;、、分别为第 个参与方持有的与种子a、b、c对应的三元组碎片;计算得到第 个参与方的中间数据 和 ;其中,, ;计算得到所有参与方的总中间数据 和 ;其中,, ;得到第 个参与方的中间碎片的计算结果为 。
9.较佳地,所述任一参与方配置生成至少一组与三个三元组种子对应的三元组碎片的步骤中:若原始数据为数值型数据且多方计算为乘法计算,则生成数值型的三元组碎片;若原始数据为布尔型数据且多方计算为与操作,则生成布尔型的三元组碎片。
10.较佳地,所述任一参与方配置生成至少一组与三个三元组种子对应的三元组碎片具体包括:所述任一参与方随机生成与第一种子和第二种子对应的第一三元组碎片和第二三元组碎片;所述任一参与方生成一对公钥和私钥;所述任一参与方将所述第一三元组碎片或所述第二三元组碎片经公钥加密后发送至剩余参与方;所述任一参与方根据自身的第一三元组碎片、第二三元组碎片和剩余参与方发送的加密后的三元组碎片执行计算得到多个计算结果;所述任一参与方基于私钥对剩余参与方返回的基于加密后的三元组碎片得到的计算结果进行解密;所述任一参与方基于自身的计算结果和剩余参与方返回的解密后的计算结果,得
到与第三种子对应的第三三元组碎片。
11.较佳地,所述多方安全计算方法还包括:原始数据为数值型数据时,设定多方计算的计算精度;基于所述计算精度对原始数据进行扩展处理;其中,所述扩展处理包括将预设参数与所述原始数据相乘得到扩展后的数据,不同计算精度对应不同的预设参数,所述计算精度与所述预设参数成正比。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的多方安全计算方法。
13.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的多方安全计算方法。
14.本发明的积极进步效果在于:数据节点与计算节点绑定,并且数据节点与计算节点是等量,因此不会发生参与的数据方超过计算方可能导致的数据完全出门情况,另外,因为数据方始终持有1/n碎片在自己本节点不出门,其他参与方即使发生n-1方的合谋,都很难破解真实的原始数据,因此能够应对合谋的风险场景。再者,n作为变量参数使得本方案能够平滑支持n方的安全计算,既能应对2方、3方的计算,而且可以在保证数据安全前提下,平滑扩展至4方及以上的多方安全计算,更具通用性。
附图说明
15.图1为本发明实施例1的多方安全计算方法的流程图。
16.图2为本发明实施例1的多方安全计算方法的一种具体实现方式的流程图。
17.图3为本发明实施例1的多方安全计算方法中三元组碎片生成示意图。
18.图4为本发明实施例1的多方安全计算方法中n不小于3时步骤141的具体实现流程图。
19.图5为本发明实施例2的电子设备的结构示意图。
具体实施方式
20.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
21.实施例1一种多方安全计算方法,如图1所示,多方安全计算方法包括:步骤11、确定参与计算的n个参与方;步骤12、将每个参与方的参与计算的原始数据拆分得到n个数据碎片;步骤13、对任一参与方,保留自身的1个第一数据碎片,并接收剩余n-1个参与方发送的n-1个第二数据碎片;需要说明的是,剩余n-1个参与方为参与计算的除了任一参与方自身外的其他参与方。
22.步骤14、任一参与方基于第一数据碎片和第二数据碎片执行计算。
23.本实施例中,步骤11之后,参见图1,多方安全计算方法还包括:步骤111、获取每个参与方的地址信息,根据数值n和地址信息动态生成对应的集
群配置信息;其中,每个参与方基于集群配置信息实现与任意参与方的通信,以实现任意两个参与方之间的数据传输。
24.其中,1个节点既是参与方角色同时也是计算方角色,参与方与计算方进行角色绑定,参与方节点提供数据,计算方节点参与协同计算,参与方数量决定了计算方数量。根据参与方的地址信息,生成计算方的集群配置信息,该n方计算以集群配置信息作为参数,触发mpc协议中n方算子的配置初始化。
25.上述方案中,参与方1将其持有的原始数据x,通过算法运算的方式拆分为(x-x2-x3
‑……‑
xn)、x2、x3

xn等n份,各碎片求和为原始x值。然后参与方1将这n份碎片分别传输给n个计算方,使得每一个计算方有且仅有一份碎片。由于参与方角色与计算方角色绑定,因此,参与方1与计算方1是同一个节点,不涉及通信,即碎片1相当于是保留在参与方1的本地,只有n-1份碎片涉及通信传输。由于数据节点与计算节点绑定,并且数据节点与计算节点是等量,因此不会发生参与的数据方超过计算方可能导致的数据完全出门情况,另外,因为数据方始终持有1/n碎片在自己本节点不出门,其他参与方即使发生n-1方的合谋,都很难破解真实的原始数据,因此能够应对合谋的风险场景。再者,n作为变量参数使得本方案能够平滑支持n方的安全计算,既能应对2方、3方的计算,而且可以在保证数据安全前提下,平滑扩展至4方及以上的多方安全计算,更具通用性。
26.需要说明的是,对不同的数据类型,做了两种不同的数据拆分方式,对于数值型的数据拆分,通过上述的减法实现,而对于布尔型的数据拆分,通过异或的方式进行分碎片。比如原始数据为布尔型的xb,分碎片方式如下:xb=(xb^xb2^xb3^

^xbn)^xb2^xb3^

^xbn,即数据碎片1为xb^xb2^xb3^

^xbn,数据碎片2为xb2,数据碎片3为xb3,数据碎片n为xbn。
27.以三方加法算子为例,三个数据方alice、bob、clare,假如alice持有x,bob持有y,clare持有z,那么要秘密求和,经过碎片化分发:alice持有x1、y1、z1三份碎片;bob持有x2、y2、z2三份碎片;clare持有x3、y3、z3三份碎片。其中x=x1 x2 x3,y=y1 y2 y3,z=z1 z2 z3。
28.各节点在本地执行各自的碎片加法,即:alice:a=x1 y1 z1,bob:b=x2 y2 z2,clare:c=x3 y3 z3。
29.然后,各自接收其他方的计算结果,完成最终计算:sum_result=a b c,其中,原始数据不出门实现求和,其他参与方无法破解原始的x、y、z数据。
30.本实施例中,提供多方安全计算方法的一种具体实现方式,如图2所示,步骤14之前,多方安全计算方法还包括:步骤131、任一参与方配置生成至少一组与三个三元组种子对应的三元组碎片;其中,所述三个三元组种子包括第一种子、第二种子和第三种子,第一种子和第二种子的乘积等于第三种子;当多方计算包括乘法计算和/或与操作时,步骤14具体包括:步骤141、任一参与方基于第一数据碎片、第二数据碎片、对应的三元组碎片执行计算。
31.其中,若原始数据为数值型数据且多方计算为乘法计算,则步骤131中生成数值型的三元组碎片;若原始数据为布尔型数据且多方计算为与操作,则步骤131中生成布尔型的
三元组碎片。另外,若多方计算涉及多步计算,如果在数值型数据计算后进行布尔型数据计算,则将数值型数据转换为布尔型数据进行后续的计算,反之也同样执行对应的数据转换。
32.本实施例中,前述触发的mpc 协议预配置模块还用于生成n 方三元组种子(基于同态加密方式生成三元组碎片),并将其加入到集群配置信息中,该配置信息包含n 方的三元组碎片,因此可以提供所需n 个计算方数量信息,共同完成上述的触发mpc 协议中n 方算子的配置初始化。
33.具体的,参见图2,步骤131具体包括:步骤1311、任一参与方随机生成与第一种子和第二种子对应的第一三元组碎片和第二三元组碎片;步骤1312、任一参与方生成一对公钥和私钥;步骤1313、任一参与方将第一三元组碎片或第二三元组碎片经公钥加密后发送至剩余参与方;需要说明的是,剩余参与方为参与计算的除了任一参与方自身外的其他参与方。
34.步骤1314、任一参与方根据自身的第一三元组碎片、第二三元组碎片和剩余参与方发送的加密后的三元组碎片执行计算得到多个计算结果;步骤1315、任一参与方基于私钥对剩余参与方返回的基于加密后的三元组碎片得到的计算结果进行解密;步骤1316、任一参与方基于自身的计算结果和剩余参与方返回的解密后的计算结果,得到与第三种子对应的第三三元组碎片。
35.需要说明的是,三元组碎片生成过程中,任一参与方还生成与剩余参与方对应的随机数以用于三元组碎片的生成过程。
36.需要说明的是,本实施例中,三个三元组种子是一个虚拟中间变量,实际运行过程中,基于同态加密的方式在每个参与方分别配置生成两个随机三元组碎片,也即与第一种子对应的第一碎片以及与第二种子对应的第二碎片,所有参与方的第一碎片之和与所有参与方的第二碎片之和的乘积等于第三种子碎片之和。需要说明的是,碎片由各参与方自行配置,在运算过程中,会将其中一个碎片进行加密发送至其他参与方进而得到第三种子碎片。
37.举个具体示例进行说明,参见图3,参与方包括:p1

pn;以p1参与方为例,随机生成与第一种子和第二种子对应的第一三元组碎片a1和第二三元组碎片b1,并生成一对公钥puk1和私钥prk1;p1将a1经公钥加密后得到pa1并发送至其他参与方;图中r12

r1n为p1对其他参与方生成的随机数。
38.p1根据a1、b1和其他参与方发送pa2

pan执行计算得到z11、z12

z1n,然后接收其他参与方返回的将z21

zn1,基于自身的私钥prk21对z21

zn1进行解密,然后根据z11和解密后的z21

zn1计算得到c1。
39.关于三元组碎片的有效性检验如下:a*b=(a1 a2 a3 ... an)*(b1 b2 b3 ... bn)=a1*b1 a1*b2 a1*b3 ... a1*bn a2*b1 a2*b2 a2*b3 ... a2*bn a3*b1 a3*b2 a3*b3 ... a3*bn an*b1 an*b2 an*b3 ... an*bn
=a1*b1 a1*b2 a1*b3 ... a1*bn (r21 r31 ... rn1)-(r12 r13 ... r1n) a2*b1 a2*b2 a2*b3 ... a2*bn (r12 r32 ... rn2)-(r21 r23 ... r2n) a3*b1 a3*b2 a3*b3 ... a3*bn (r13 r23 ... rn3)-(r31 r32 ... r3n) an*b1 an*b2 an*b3 ... an*bn (r1n r2n r3n ...)-(rn1 rn2 rn3 ...)=c1 c2 c3 ... cn=c本实施例中,若n不小于3,步骤131具体包括:任一参与方配置生成与三个三元组种子对应的多组三元组碎片;需要说明的是,上述实现方式中,优选的是生成n-1组三元组碎片,进而对任意两个原始数据的碎片计算时,分别使用不同的三元组碎片加入计算,亦或者生成小于n-1组的三元组碎片,部分三元组碎片重复执行不同的数据计算也是可行的,需要说明的是,在重复使用同一组三元组碎片的情况下,要随机的比如基于洗牌式的方式进行挑选,避免连续选取同一组碎片进行计算,以避免数据被解密攻破。
40.另外,若某一参与方存有多个原始数据并参与到多方计算的情况下,针对每个原始数据分别生成与一随机的三元组种子对应的三元组碎片以参与到多方计算中。
41.进一步的,如图4所示,步骤141具体包括:步骤1411、从任一参与方持有的数据碎片中选取与任意两个原始数据对应的数据碎片作为目标数据碎片;步骤1412、选取任意一组三元组碎片作为目标三元组碎片;步骤1413、基于两个目标数据碎片和一组目标三元组碎片计算得到一中间碎片;步骤1414、将从剩余的数据碎片中任意选取的一个数据碎片和中间碎片作为新的目标数据碎片,并返回步骤1412选取新的目标三元组碎片,直至所有数据碎片全部执行完计算。
42.其中,步骤143具体包括:确定第 个参与方持有的两个目标数据碎片为 , ;其中,为第个参与方持有的与原始数据对应的数据碎片, 为第个参与方持有的与原始数据对应的数据碎片,∈0~n-1;确定第 个参与方持有的目标三元组碎片为 、 、 ;其中, ; 、 、 分别为第 个参与方持有的与种子a、b、c对应的三元组碎片;计算得到第 个参与方的中间数据 和 ;其中, , ;计算得到所有参与方的总中间数据 和 ;其中,
ꢀꢀ
, ;得到第个参与方的中间碎片的计算结果为 。
43.上述方案中,乘法以及与操作的计算算子借助beaver三元组来执行计算。以两方乘法为例,对beaver三元组进行介绍,然后结合多方计算举个具体示例阐述上述方案。
44.以alice、bob两方为例,假如各方持有原始数据x,y。
45.1)经过碎片化并分发:alice:《x》0,《y》0,bob:《x》1,《y》1;
2)各参与方通过同态加密方式生成三元组碎片,其中,三元组种子为a、b、c:alice:《a》0,《b》0,《c》0,bob:《a》1,《b》1,《c》1;3)每一方持有的碎片信息为:alice:《x》0,《y》0,《a》0,《b》0,《c》0,bob:《x》1,《y》1,《a》1,《b》1,《c》1;4)三方各自计算自己的《e》=《x》-《a》,《f》=《y》-《b》,用来盲化原始数据《x》,《y》,得到各方持有:alice:《x》0,《y》0,《a》0,《b》0,《c》0,《e》0,《f》0,bob:《x》1,《y》1,《a》1,《b》1,《c》1,《e》1,《f》1;5)三方共享自己的《e》,《f》,计算出e,f,得到各方持有:alice:《x》0,《y》0,《a》0,《b》0,《c》0,e,f,bob:《x》1,《y》1,《a》1,《b》1,《c》1,e,f;6)各方自行执行计算,各方持有:alice:《z》1=f*《a》0 e*《b》0 《c》0,bob:《z》2=e*f f*《a》1 e*《b》1 《c》1;7)计算最终结果《z》1 《z》2=f*《a》0 e*《b》0 《c》0 e*f f*《a》1 e*《b》1 《c》1=e*f f*a e*b c=(x-a)*(y-b) (y-b)*a (x-a)*b c=xy-bx-ay ab ay-ab bx-ab c=xy-ab c=xy-ab ab=xy由此,可以得证:两方乘法成立。
46.需要说明的是,当拓展到n方计算时,执行两两原始数据对应的数据碎片依次执行计算即可完成对所有数据的计算。
47.本实施例中,多方安全计算方法还包括:原始数据为数值型数据时,设定多方计算的计算精度;基于计算精度对原始数据进行扩展处理;其中,扩展处理包括将预设参数与原始数据相乘得到扩展后的数据,不同计算精度对应不同的预设参数,计算精度与预设参数成正比。
48.需要说明的是,mpc的运算一般是基于整型碎片,浮点型数值会通过fixed-point被转成整型。比如若涉及12.345677*13.892832,计算得到的数值带有多位小数,那么,在mpc计算过程中,若直接进行整型处理然后计算,在浮点型数值初始转换的过程就会有部分精度丢失,但由于整型类型的限制,比如64bit,保留过多在计算过程中会发生数值溢出。为了尽可能提高精度,会尽可能多得保留小数位数。通过扩展,能够支持更多小数位数保留,且计算过程中不发生溢出,在恢复结果进行rescale,就可以尽可能逼近真实的小数位数,比如可达到15位小数。目前采取fixed-point方式进行控制,比如64bit下,原值12.3456会通过12.3456*2
13
进行扩大后再保留整数部分,丢弃小数部分,在最终恢复的时候进行rescale。
49.另外,前述部分列举了加法和乘法的执行逻辑,阐述了如何将密态计算任务拆分为n个子任务执行。另外,基于加法、乘法、与操作等基础算子,可以进一步衍生实现更复杂
的n方运算算子,如减法、求和、除法、平方、指数、多项式函数等运算;或者是联合统计算子,如中位数、排序等。
50.本实施中,数据节点与计算节点绑定,并且数据节点与计算节点是等量,因此不会发生参与的数据方超过计算方可能导致的数据完全出门情况,另外,因为数据方始终持有1/n碎片在自己本节点不出门,其他参与方即使发生n-1方的合谋,都很难破解真实的原始数据,因此能够应对合谋的风险场景。再者,n作为变量参数使得本方案能够平滑支持n方的安全计算,既能应对2方、3方的计算,而且可以在保证数据安全前提下,平滑扩展至4方及以上的多方安全计算,更具通用性。
51.实施例2一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例1所述的多方安全计算方法。
52.图5为本实施例提供的一种电子设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性电子设备90的框图。图5显示的电子设备90仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
53.如图5所示,电子设备90可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备90的组件可以包括但不限于:至少一个处理器91、至少一个存储器92、连接不同系统组件(包括存储器92和处理器91)的总线93。
54.总线93包括数据总线、地址总线和控制总线。
55.存储器92可以包括易失性存储器,例如随机存取存储器(ram)921和/或高速缓存存储器922,还可以进一步包括只读存储器(rom)923。
56.存储器92还可以包括具有一组(至少一个)程序模块924的程序工具925,这样的程序模块924包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
57.处理器91通过运行存储在存储器92中的计算机程序,从而执行各种功能应用以及数据处理。
58.电子设备90也可以与一个或多个外部设备94(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口95进行。并且,电子设备90还可以通过网络适配器96与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器96通过总线93与电子设备90的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备90使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
59.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
60.实施例3一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实施例1所述的多方安全计算方法。
61.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机
存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
62.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1所述的多方安全计算方法。
63.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
64.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献