
1.本说明书涉及信息安全技术领域,特别涉及一种隐私保护的多方安全计算方法和系统。
背景技术:2.安全多方计算又称为多方安全计算,即多方共同计算出一个函数的结果,而不泄露这个函数各方的输入数据,计算的结果以和共享形式存储于多方或公开给其中的一方或多方。因此,通过安全多方计算,能够让参与的各方在不暴露各自原始数据的情况下,计算出函数的结果。
3.在多方安全计算过程中会涉及到多方之间的数据传输,如何减少计算过程中的数据传输量成为目标亟需解决的问题。
技术实现要素:4.本说明书实施例的一个方面提供一种隐私保护的多方安全计算方法。其中,第一参与方拥有私有的第一变换因子,第二参与方拥有私有的第一变换对象,所述方法由第一参与方执行,该方法包括:将所述第一变换因子进行分解,得到多个分解因子的第一变换序列;与第二参与方协同,基于所述第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第一分片;所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果。
5.本说明书实施例的另一个方面提供一种隐私保护的多方安全计算系统。第一参与方拥有私有的第一变换因子,第二参与方拥有私有的第一变换对象,该系统由第一参与方实现,该系统包括:分解模块,可以用于将所述第一变换因子进行分解,得到多个分解因子的第一变换序列;第一协同计算模块,可以用于第一参与方与第二参与方协同,基于所述第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第一分片;所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果。
6.本说明书实施例的一个方面提供一种隐私保护的多方安全计算方法,第一参与方拥有私有的第一变换因子,第二参与方拥有私有的第一变换对象,所述方法由第二参与方执行,其包括:与第一参与方协同,基于第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第二分片;所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果;其中,所述第一变换序列包括第一参与方将所述第一变换因子进行分解得到的多个分解因子。
7.本说明书实施例的另一个方面提供一种隐私保护的多方安全计算系统。第一参与方拥有私有的第一变换因子,第二参与方拥有私有的第一变换对象,所述系统由第二参与方实现,其包括:第二协同计算模块,用于与第一参与方协同,基于第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第二分片;所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果;其中,所述第一变换序列包括第
一参与方将所述第一变换因子进行分解得到的多个分解因子。
8.本说明书实施例的另一个方面提供一种隐私保护的多方安全计算装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现基于知识视图的知识图谱数据处理方法。
9.本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行基于知识视图的知识图谱数据处理方法。
附图说明
10.本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
11.图1是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性应用场景图;
12.图2是根据本说明书一些实施例所示的第二多方安全乘法协议的示例性交互流程图;
13.图3是根据本说明书的一些实施例所示的一种隐私保护的多方安全计算方法的示例性交互流程图;
14.图4是根据本说明书一些实施例所示的第一多方安全计算协议的示例性交互流程图;
15.图5是根据本说明书一些实施例所示的第三多方安全计算协议的示例性交互流程图;
16.图6是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性模块图;
17.图7是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性模块图。
具体实施方式
18.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
19.应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
20.如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者
设备也可能包含其它的步骤或元素。
21.本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
22.多方安全计算一个典型的应用是隐私保护的多方数据的联合统计分析和机器学习。多方安全计算能让参与的各方在不暴露各自原始数据的情况下,计算出基于各方联合数据的统计结果、机器学习结果。其中多方安全计算的函数可以是统计运算的函数、机器学习模型等。
23.在机器学习中,经常需要计算矩阵乘法。例如,多方安全计算其中的一方持有私密的特征数据,特征数据可以表示为矩阵,另一方持有私密的模型参数,如神经网络模型、线性回归模型或逻辑回归模型等,模型参数可以表示为向量或矩阵(对于神经网络模型,模型参数则可表示为多个向量,每一个向量对应一层神经元的权重系数,或者表示为矩阵)。双方(或称为参与方)可以基于多方安全计算完成对机器学习模型的训练或基于特征数据的机器模型预测。在一些实施例中,双方可以以自身持有的特征数据和模型参数,在第三方(或称为协助方)协助下,基于多方安全乘法协议进行矩阵乘法的计算,进而获得模型预测结果。在基于多方安全乘法协议进行计算时,其涉及到的通信量包括offline通信量和online通信量。offline通信量表示参与方与第三方之间的通信量,online通信量表示参与的计算方之间的通信量。假设第一方拥有m
×
n的矩阵,第二方拥有n维的向量,在基于多方安全乘法协议的计算过程中,一轮多方安全乘法协议的计算的offline通信量为m log|a|,online通信量为mn log|a|+m log|a|,a为矩阵或向量元素所属的集合或群,log|a|表示传输一个元素时占用的位数,log简略表示以计算以2为底的对数。因为通信量中存在mn这一项,实际应用时产生的通信量将非常大,比如,m为64,n为5000,mn=320000。
24.需要说明的是,上述以矩阵乘法为例介绍了本技术方案的背景,但是在一些场景中,多方安全计算并不限于参与方之间的矩阵乘法,而是可以看作是其中一参与方持有的隐私数据对另一参与方持有的隐私数据进行某种变换的结果,如,第一参与方的持有变换因子,第二参与方持有变换对象,基于变换因子可以对变换对象进行元素的位置变换、元素的筛选等处理,得到元素位置变更后的结果或者筛选结果,作为变换结果。因此,不应将矩阵乘法作为对本说明书的限制。当然,在很多实施例中,抽象的变换亦可等效为具体的矩阵运算。
25.因此,本说明书中的一些实施例提供了一种隐私保护的多方安全计算方法和系统,可以有效地减少基于隐私保护的数据变换过程中的通信量开销。以下通过对附图的解释详细阐述本说明书实施例所披露的技术方案。
26.图1是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性应用场景图。
27.如图1所示,隐私保护的多方安全计算场景100可以包括计算设备110、计算设备120以及网络140,计算设备110和计算设备120可以是参与多方安全计算的参与方的设备。
28.计算设备可以包括各类具备计算能力的设备,如服务器、个人计算机等。在一些实施例中,服务器可以是独立的服务器或者服务器组,该服务器组可以是集中式的或者分布
式的。在一些实施例中,服务器可以是区域的或者远程的。在一些实施例中,服务器可在云平台上执行。例如,该云平台可包括私有云、公共云、混合云、社区云、分散式云、内部云等中的一种或其任意组合。在一些实施例中,计算设备110可以是参与多方安全计算的第一参与方拥有的计算设备,计算设备120可以是参与多方安全计算的第二参与方拥有的计算设备。
29.网络140连接系统的各组成部分,使得各部分之间可以进行通讯。在系统中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络140可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(lan)、广域网络(wan)、无线局域网络(wlan)、城域网(man)、公共交换电话网络(pstn)、蓝牙网络、紫蜂网络(zigbee)、近场通信(nfc)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。
30.在一些实施例中,计算场景100还可以包括半可信第三方设备130,半可信第三方设备130可协助参与方的计算设备运行安全计算协议,例如,半可信第三方设备130可以生成随机数、中间结果分片、计算分片值、分发随机数和/或分片值给计算设备110、计算设备120等。
31.在一些实施例中,第一参与方拥有私有的第一变换因子,第二参与方拥有私有的第一变换对象。第一参与方可以将所述第一变换因子进行分解,得到包含多个分解因子的第一变换序列。第一参与方可以与第二参与方协同,基于所述第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第一分片。
32.第一变换因子可以是指第一参与方拥有的私有数据。在一些实施例中,第一变换因子可以是第一参与方用于机器学习模型训练的特征数据,可以表征为矩阵。
33.第一变换对象可以是指第二参与方拥有的隐私数据。在一些实施例中,第一变换对象可以是第二参与方拥有的机器学习模型的模型参数,可以表征为矩阵或者向量。在涉及一些具体实施例时,本说明书将主要以第一变换因子可以为矩阵,第一变换对象可以为向量为例进行说明,当第一变换对象表征为矩阵时,运算原理与向量类似。
34.第一变换结果等同于第一变换因子对第一变换对象直接进行变换的结果。在一些实施例中,第一参与方与第二参与方协同计算得到的第一变换结果可以以和共享的形式存储于第一参与方和第二参与方,第一参与方持有第一变换结果的第一分片,第二参与方持有第一变换结果的第二分片。
35.在一些实施例中,对第一变换因子进行分解得到的多个分解因子中,至少一个分解因子来自n阶对称群,n为某一正整数,第一变换结果等同于第一变换因子与第一变换对象进行矩阵乘法的结果。
36.有限集合到自身的一一映射称为一个置换。由n个元素的有限集合中各元素的全部置换所构成的群,称为n阶对称群。群可以是指在数学中表示一个拥有满足封闭性、满足结合律、有单位元、有逆元的二元运算的代数结构,包括阿贝尔群、同态和共轭类。其中,通常可以使用乘法符号
“×
或*”(在无歧义时可省略)或加法符号“+”作为该二元运算的符号,但需要注意的是,该二元运算不一定等同于四则运算中的乘法或加法。在一些实施例中,n阶对称群的元素个数为n!,这意味着只需要log(n!)位便可传输一个来自n阶对称群的元素。在一些实施例中,n阶对称群的元素可以等效表示为n
×
n的矩阵。具体的,可以将n
×
n的单位矩阵(对角线上的元素为1,其余元素为0)中的行或列随机调换位置,可以得到n!个不
同的矩阵,这n!个矩阵可以等效对应为n阶对称群sn中的元素。将来自这其中的某个矩阵与其他矩阵或向量相乘时,等效于将其他矩阵或向量的元素进行位置置换。也就是说,在一些多方安全矩阵相乘的计算过程中,可以将其中一个矩阵视为变换因子并进行分解,当分解因子包含前述矩阵时,则可以视为n阶对称群的元素,进而在进行多方安全计算时,可以显著减小通信量。
37.在一些实施例中,在计算第一变换结果的迭代变换中,至少一轮迭代变换可以基于第二多方安全计算协议实现。第二多方安全协议适用于一方拥有属于有限群g的元素,另一方拥有属于有限g-module群b的元素,且存在一个群g在群b上的作用能映射回群b(即g
×a→
a,
×
指代作用,而不应仅视为乘法)且该作用满足分配律,则双方可以按照图2所示的流程安全的计算出群g在群b上作用的结果,结果以和共享分片形式为双方持有。第二多方安全协议使得双方在计算过程中只需要一轮全双工通信,有效提高了通信效率。关于第二多方安全协议的说明可以参见下文图2的相关描述。
38.图2是根据本说明书一些实施例所示的第二多方安全乘法协议的示例性交互流程图,涉及多方之间的数据交互。在一些实施例中,流程200可以由处理设备(例如,设备110或设备120)执行。例如,流程200可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程200。流程200可以包括以下操作。下面主要从第一参与方的角度对流程进行说明,期间会涉及第二参与方执行的步骤。在一些实施例中,第一参与方与第二参与方执行的步骤内容可以对换。
39.步骤202,获取随机因子以及第一中间结果的第一分片。
40.所述第一中间结果的第一分片与所述第二参与方的第一中间结果的第二分片为基于所述随机因子对随机对象进行变换的结果的和共享分片。
41.在一些实施例中,随机因子为元素属于有限群g的随机矩阵h,随机对象为元素属于含1交换环a的随机向量e,其中,交换环a满足有限g-module群的性质,相当于前述的群b。在一些实施例中,可以由第三方(第三方可以是半可信的第三方设备,例如,第三方半可信设备130)随机生成随机因子和随机对象。例如,第三方通过预设的随机数种子生成随机矩阵h和随机向量e中的元素,进而得到随机因子和随机对象。
42.在一些实施例中,第三方可以基于随机因子h对随机对象e进行变换,得到变换的结果。变换的结果依然属于有限g-module群,进一步,第三方可以对所述乘积结果进行拆解,得到第一中间结果的第一分片与第一中间结果的第二分片,两个分片也属于有限g-module群。第一中间结果的第一分片与第一中间结果的第二分片可以是和共享分片,即第一分片与第二分片的和等于第一中间结果。
43.之后,第三方可以将随机因子以及第一中间结果的第一分片发送给第一参与方,将随机对象以及第一中间结果的第二分片发送给第二参与方。以h表示随机因子,e表示随机对象,则运算的和共分片可以表示为:d0+d1=h。然后,第三方将随机因子h和第一中间结果的第一分片d0发送至第一参与方;将随机对象b和第一中间结果的第二分片d1发送至第二参与方。
44.为了进一步减小步骤202中数据传输量,在一些实施例中,参与方可以通过伪随机数算法,基于随机数种子生成随机数。在伪随机数算法中,需要预先设置一组伪随机数据种子,各方再基于预设好的随机数种子,生成一组随机数。当输入相同的随机数种子时,所生
成的随机数序列也是相同的。作为示例,各方基于相同的随机数种子各生产5个随机数,那么各方生成的随机数对应相同,如其中一方的第一个随机数与另一方的第一个随机数相同。
45.具体的,第一参与方拥有第一随机数种子与第三随机数种子,第二参与方拥有第二随机数种子与第四随机数种子,第三方拥有第一~四随机数种子。在一些实施例中,第一参与方可以通过第一随机数种子生成多个随机数,作为随机矩阵h的元素,进而得到随机因子,以及通过预设的第三随机数种子生成多个随机数,作为第一中间结果的第一分片d0中的元素,进而得到第一中间结果的第一分片d0。第二参与方可以通过第二随机数种子生成多个随机数,作为随机向量e的元素,进而得到随机对象。第三方通过第一随机数种子、第二随机数种子和第三随机数种子对应生成h、e以及d0,并基于d1=he-d0得到第一中间结果的第二分片d1,因此第二参与方可以从第三方获取第一中间结果的第二分片d1,此时第二参与方持有随机对象b和第一中间结果的第二分片d1,完成随机数及分片的分发。在一些替代性的实施例中,还可以是第一中间结果的第一分片d0为第一参与方从第三方获取,所述第一中间结果的第二分片d1为第二参与方通过所述预设的随机对象种子生成。
46.在利用伪随机数算法实现随机数及分片的分发过程中,仅有一方从第三方处获取第一中间结果的第一分片d0或第一中间结果的第二分片d1,因此步骤202的传输量可以进一步减轻系统传输开销。
47.步骤204,发送第一传输数据至所述第二参与方。
48.在一些实施例中,第一传输数据基于当前轮迭代变换的分解因子对所述随机因子的逆进行叠加变换得到。
49.分解因子为第一参与方拥有的隐私数据,亦可视为第二多方安全计算协议的输入数据g。在一些实施例中,随机因子h来自与输入数据g相同的群,随机因子h的逆可以表示为h-1
,则第一传输数据f可以基于g与h-1
进行群乘法得到,g为分解因子,第一传输数据可以表示为f=gh-1
。
50.在一些实施例中,第一参与方可以通过网络将第一传输数据f发送至另一方。
51.步骤206,获取所述第二参与方的第二传输数据。
52.在一些实施例中,第二传输数据i可以基于a-e得到,即第二传输数据可以表示为i=a-e,a表示第二多方安全计算协议的另一输入数据,具体可以是当前轮第二参与方持有的变换对象。随机对象e来自与输入数据a相同的群,且与输入数据a同维。关于当前轮第二参与方持有的变换对象或输入数据a的详细说明可以在本说明书中的其他地方找到。
53.在一些实施例中,第一参与方可以通过网络从第二参与方获取得到第二传输数据并执行步骤208~212,得到ga的第一分片。第二参与方可以通过网络从第一参与方获得第一传输数据,并基于此得到ga的第二分片。在一些实施例中,ga应当理解为基于g对a进行变换的变换结果,示例性的,所述变换可以是乘法。
54.步骤208,基于所述分解因子对所述第二传输数据进行变换,得到第二中间结果。
55.在一些实施例中,变换方式可以是将分解因子,即输入数据g作用于第二传输数据i,得到第二中间结果。第二中间结果可以表示为gi。在一些实施例中,输入数据g来自n阶对称群,则所述第二中间结果为基于输入数据对第二传输数据进行位置置换的结果;在一些实施例中,输入数据g来自半直积,则基于输入数据g的第二子元素对第二传输数据进行位
置置换,再将输入数据g的第一子元素与置换结果按位相乘,得到第二中间结果。
56.步骤210,基于第一传输数据对第一中间结果的第一分片进行变换,得到第三中间结果。
57.在一些实施例中,变换方式可以是将第一传输数据f作用于第一中间结果的第一分片d0,得到第三中间结果。第三中间结果可以表示为fd0。在一些实施例中,输入数据g来自n阶对称群,则第一传输数据f也来自该群,所述第三中间结果为基于第一传输数据f对第一中间结果的第一分片进行位置置换的结果;在一些实施例中,输入数据g来自半直积,则第一传输数据f也来自该群,则基于第一传输数据f的第二子元素对第一中间结果的第一分片进行位置置换,再将第一传输数据f的第一子元素与置换结果按位相乘,得到第三中间结果。
58.步骤212,基于所述第二中间结果与所述第三中间结果,得到当前轮迭代变换结果的第一分片。
59.在一些实施例中,当前轮迭代变换结果的第一分片c0可以用第二中间结果和第三中间结果的和的形式进行表示。即,当前轮迭代变换结果的第一分片c0基于gi+fd0得到,c0=gi+fd0。
60.第二参与方可以基于fd1得到当前轮迭代变换结果的第二分片c1,c1=fd1,(c0,c1)即为当前轮迭代变换结果。该协议的原理可以表示为:ga=c0+c1=(gi+fd0)+fd1=g(a-e)+gh-1
d0+gh-1
d1=g(a-e)+gh-1
he。
61.由上述步骤可知,在第二多方安全计算协议的执行过程中,一方生成数据时无需另一方的数据参与。因此,可以实现全双工,即两方可以同时向对方发送数据,减少了交互次数,降低了系统延迟产生的影响。
62.在一些实施例中,在获取第一变换结果的和共享分片过程中,可以将涉及的分解因子进行不止一次的分解,以获得更多的来自n阶对称群的分解因子,进而更大限度的减少安全计算过程中的通信量,在又一些实施例中,在第一参与方基于来自n阶对称群的分解因子对第二参与方持有的变换对象进行变换时,双方基于第二多方安全计算协议进行协同,可以进一步提高通信效率。换句话说,在获取第一变换结果的和共享分片时会多次运用第二多方安全计算协议,后续将在具体步骤中对其做更具体的说明。需要说明的是,在不同迭代过程中,n的取值可以不同,这里使用n仅仅旨在代替某一正整数。
63.图3是根据本说明书的一些实施例所示的一种隐私保护的多方安全计算方法的示例性交互流程图,涉及多方之间的数据交互。在一些实施例中,流程300可以由处理设备(例如,设备110或设备120)执行。例如,流程300可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程300。流程300可以包括以下操作。
64.在一些实施例中,第一变换因子可以是矩阵,第二变换因子可以是矩阵或向量。示例性的,第一变换因子可以为m
×
n(即m行n列)矩阵,所述矩阵中的元素均来自a的乘法子群,或称为a里的乘法可逆元全体。第一变换对象为n维向量,向量中的元素来自a。a为含1交换环。此时,第一变换结果等同于第一变换因子与第一变换对象进行矩阵乘法的结果。本说明书涉及的群、环均为数学概念,满足数学中对其的一般定义和性质。例如,群满足加法封
闭性等一些加法性质,交换环则是满足一些乘法性质的群,如满足乘法封闭性、乘法交换律等。具体的,环是一类包含两种运算(加法和乘法)的代数系统。交换环可以是指乘法可交换的环。交换环中的元素的乘法满足乘法封闭性、乘法结合律、乘法分配律以及乘法交换律。例如,对于交换环a,其中的任意元素a和b,满足ab=ba。含1交换环a则是指a中的元素包括1。
65.存在以下定理:
66.设m为a上的m
ⅹ
n矩阵,有k1个非0行,k2个非0列,l个非0元素,则m可分解为:m=pλσq。
67.其中,右因子q为l
ⅹ
n的0-1矩阵,有k2个非0列,每行有且仅有一个1,且每行的1的列坐标单调不减。列坐标单调不减可以是指每一行中的1的列坐标(或所在的列的序号)相对于上一行1的列坐标的坐标大小相同或更大。例如,第一行中的1的列坐标为1,则第二行中的1的列坐标大于等于1;若第二行中的1的列坐标为2,则第三行中的1的列坐标大于等于2。
68.第二中间因子σ为l
×
l的矩阵。在一些实施例中,可以将l
×
l的单位矩阵(对角线上的元素为1,其余元素为0)中的行或列随机调换位置,可以得到l!个不同的矩阵,第二中间因子σ则是其中的一个矩阵。根据前面的描述,第二中间因子σ可以视作来自l阶对称群s
l
,以便在协同计算时能有效降低通信量。
69.第一中间因子λ为l
×
l的对角矩阵,对角线元素均非0。在一些实施例中,第一中间因子λ的对角线元素为m
×
n矩阵中的非0元素。
70.左因子p为m
ⅹ
l的0-1矩阵,有k1个非0行,每列有且仅有一个1,且每列的1的行坐标单调不减。行坐标单调不减可以是指每一列中的1的行坐标(或所在的行的序号)相当于上一列1的行坐标的坐标大小相同或更大。例如,第一列中的1的行坐标为1,则第二列中的1的行坐标大于等于1;若第二列中的1的行坐标为2,则第三列中的1的行坐标大于等于2。
71.其中,m、n、l、k1以及k2为正整数。
72.在一些实施例中,第一参与方的处理设备(例如,处理设备110)可以基于前述定理对第一变换因子进行分解,得到第一变换序列中的左因子、第一中间因子、第二中间因子以及右因子。
73.仅作为示例,对第一变换因子进行分解的结果可以如下所示:
74.假设a上的m
ⅹ
n矩阵m为则按照以上定理可以将矩阵m分解为
其中,σ=(25),表示对变换对象的第二行和第五行进行互换。在一些实施例中,σ=(25)可等效表示为将6
×
6的单位矩阵的第二行和第五行互换。
75.第一参与方获得第一变换序列后,可以与第二参与方协同,通过执行步骤300,基于所述第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第一分片。步骤300可以包括以下步骤。
76.步骤302a,基于右因子,与第二参与方基于第一变换对象,通过第一多方安全计算协议,获得右因子变换结果的第一分片;第二参与方获得右因子变换结果的第二分片。
77.在一些实施例中,第一参与方可以基于右因子,与第二参与方基于第一变换对象,基于图4所示的第一多方安全计算方法,计算得到右因子变换结果的第一分片;其中,右因子作为第一多方安全计算方法的变换因子,第一变换对象作为变换对象,第二参与方获得右因子变换结果的第二分片。第一分片和第二分片是指以和共享形式存在与第一参与方和第二参与方的数据分片。在第一多方安全计算协议中,第一参与方可以将右因子做进一步分解,得到若干公共因子和私有因子,其中私有因子均可视作来自n阶对称群中的元素,而公共因子可以由双方持有,进而降低双方基于第一多方安全计算协议进行协同运算时产生的通信量。关于第一多方安全计算协议的详细说明,可以参见本说明书图4及其相关描述,此处不再赘述。
78.相应的,第二参与方可以通过执行步骤302b,获得右因子变换结果的第二分片。
79.步骤302b,基于第一变换对象,与第一参与方基于右因子,通过第一多方安全计算方法,获得右因子变换结果的第二分片;第一参与方获得右因子变换结果的第一分片。
80.关于详细的计算过程的说明,可以参见图4及其相关描述,此处不再赘述。
81.在一些实施例中,可以用x来表示第一变换对象,则右因子变换结果可以表示为y=qx。
82.其中,y表示右因子变换结果,q为右因子,x为第一变换向量。则右因子变换结果的第一分片可以表示为y1=(qx)1,右因子变换结果的第二分片可以表示为y2=(qx)2,右因子变换结果y=y1+y2。
83.步骤304a,基于所述第一中间因子和所述第二中间因子,获得同构因子。
84.在一些实施例中,第一参与方可以基于第一中间因子确定第一中间向量,所述第一中间向量的元素为第一中间因子的对角元素。在一些实施例中,可以参与方可以将第一中间因子对角线上的元素顺序排列,得到第一中间向量。续前例,第一参与方可以基于第一中间因子得到第一中间向量(3,5,1,11,7,9)。进一步,第一参与方可以将第一中间向量作为所述同构因子的第一子元素,将所述第二中间因子作为所述同构因子的第二子元素。
85.在一些实施例中,第一中间向量的元素来自a的乘法子群,第二中间因子则可视为来自i阶对称群,同构因子可以看作是第一中间向量和第二中间因子的组合,因此同构因子可以视为来自i阶对称群和i阶a的乘法子群的半直积,记为s
l
×
(a
x
)
l
,a
x
为a的乘法子群,(a
x
)
l
表示1个a
x
的笛卡尔积或直积,s
l
为i阶对称群,
×
表示半直积,s
l
×
(a
x
)
l
为有限群,(a
x
)
l
或a
l
为s
l
×
(a
x
)
l-module群。将第一中间向量和第二中间因子等同为同构因子后,可以使得双方协同运算时相比原来的矩阵降低了通信量,同时还可以适用于第二多方安全计算协议。
86.更一般的,可以将半直积s
l
×
(a
x
)
l
中的元素表示为(α,σ)。其中,第一子元素α来自(a
x
)
l
,第二子元素σ来自s
l
。
87.步骤306a,基于同构因子以及右因子变换结果的第一分片,获得中间变换结果的本地分片。
88.在一些实施例中,根据从右到左的计算顺序,中间变换结果可以表示为z=λσy。
89.其中,z表示中间变换结果,λ表示第一中间因子,σ表示第二中间因子,y表示右因子变换结果。
90.将y=y1+y2代入其中可得z=λσ(y1+y2)=λσy1+λσy2。
91.其中,λσ为第一参与方本地拥有,y1为第一参与方拥有的右因子变换结果的第一分片,因此,σy1可以由第一参与方在其本地计算得到,即,中间变换结果的本地分片。
92.如上所述,λσ可以用同构因子进行表示,对应的同构因子用第一子元素和第二子元素表示为(α,σ),右因子变换结果的第一分片为y1,在计算时,首先可以基于同构因子中的第二子元素σ对右因子变换结果的第一分片y1进行位置置换,然后可以将同构因子中的第一子元素α与置换结果按位相乘,得到中间变换结果的本地分片。
93.步骤308a,基于同构因子,与第二参与方基于右因子变换结果的第二分片,通过第二多方安全计算协议,获得中间变换结果的第一分片;第二参与方获得中间变换结果的第二分片。
94.如上述实施例所述,中间变换结果可以表示为λσy=λσy1+λσy2,其中,λσy1可以由第一参与方在其本地直接计算得到。由于右因子变换结果的第二分片y2的元素来自a
x
或a,右因子变换结果的第二分片y2来自(a
x
)
l
或a
l
,为s
l
×
(a
x
)
l-module群,因此,对于λσy2,则可以由第一参与方基于同构因子,与第二参与方基于右因子变换结果的第二分片,通过第二多方安全计算协议计算获得。
95.在一些实施例中,第一参与方将私有的同构因子(α,σ)作为第二多方安全计算协议的输入数据g,第二参与方私有的右因子变换结果的第二分片y2作为第二多方安全计算协议的输入数据a,通过第二多方安全计算协议协同计算,得到中间变换结果的第一分片(λσy2)1;第二参与方可以通过执行步骤308b,获得中间变换结果的第二分片(λσy2)2。关于第二多方安全计算协议的详细说明,可以参见本说明书图2及其相关描述,此处不再赘述。
96.步骤308b,基于右因子变换结果的第二分片,与第一参与方基于同构因子,通过第二多方安全计算协议,获得中间变换结果的第二分片。
97.在一些实施例中,第一参与方与第二参与方协同计算得到的中间变换结果的分片λσy2以和共享形式可以表示为λσy2=(λσy2)1+(λσy2)2。
98.步骤310a,基于左因子、中间变换结果的本地分片以及中间变换结果的第一分片,获得左变换结果的本地分片。
99.第一变换因子对第一变换对象的变换可以表示为mx=pλσqx时,经过上述实施例中的步骤,已经计算得到λσqx,即λσqx=λσy=λσ(y1+y2)=λσy1+(λσy2)1+(λσy2)2,
其中,第一参与方持有λσy1、(λσy2)1,第二参与方持有(λσy2)2。
100.将左因子作用于已经计算得到的λσqx即可得到左变换结果,如,
101.pλσqx=p(λσy1+(λσy2)1+(λσy2)2)=p(λσy1+(λσy2)1)+p(λσy2)2102.其中,左因子为p,中间变换结果的本地分片为λσy1,中间变换结果的第一分片为(λσy2)1,其都为第一参与方拥有,因此,第一参与方可以直接在其本地计算得到p(λσy1+(λσy2)1),即,左变换结果的本地分片。
103.步骤312a,基于左因子,与第二参与方基于所述中间变换结果的第二分片,通过第三多方安全计算协议,获得左变换结果的第一分片,同时第二参与方获得左变换结果的第二分片。
104.在一些实施例中,左变换结果为p(λσy1+(λσy2)1)+p(λσy2)2,其中,p(λσy1+(λσy2)1)为左变换结果的本地分片,已经可以计算得到,而p(λσy2)2中,p为左因子,由第一参与方持有;(λσy2)2为中间变换结果的第二分片,由第二参与方持有,其各自并不会向对方透露,因此,左变换结果的一部分p(λσy2)2需要由第一参与方与第二参与方基于第三多方安全计算协议协同计算得到。
105.在一些实施例中,左变换结果的p(λσy2)2部分可以表示为p(λσy2)2=(p(λσy2)2)1+(p(λσy2)2)2。
106.其中,(p(λσy2)2)1为左变换结果的第一分片,由第一参与方持有;(p(λσy2)2)2为左变换结果的第二分片,由第二参与方持有。
107.在一些实施例中,(p(λσy2)2)1可以由第一参与方基于左因子,与第二参与方基于所述中间变换结果的第二分片,通过第三多方安全计算方法计算得到。(p(λσy2)2)2则可以由第二参与方通过执行步骤312b计算得到。
108.步骤312b,基于所述中间变换结果的第二分片,与第一参与方基于左因子,通过第三多方安全计算方法,获得左变换结果的第二分片。
109.在执行第三多方安全计算方法时,左因子作为变换因子,中间变换结果的第二分片作为变换对象。在第三多方安全计算协议中,第一参与方可以将左因子做进一步分解,得到若干公共因子和私有因子,其中私有因子均可视作来自n阶对称群中的元素,而公共因子可以由双方持有,进而降低双方基于第三多方安全计算协议进行协同运算时产生的通信量。关于第三多方安全计算方法的详细说明,可以参见图5及其相关描述,此处不再赘述。
110.步骤314a,基于左变换结果的本地分片以及左变换结果的第一分片,获得第一变换结果的第一分片。
111.示例性地,沿用上述步骤中的示例,第一变换结果的第一分片可以表示为p(λσy1+(λσy2)1)+(p(λσy2)2)1;第一变换结果的第二分片可以表示为(p(λσy2)2)2,由第二参与方获得。
112.在一些实施例中,第一参与方可以将所述左变换结果的本地分片和左变换结果的第一分片进行相加,即可得到第一变换结果的第一分片p(λσy1+(λσy2)1)+(p(λσy2)2)1。
113.在一些实施例中,第二参与方可以通过执行步骤314b,获得第一变换结果的第二分片。
114.步骤314b,基于左变换结果的第二分片,获得第一变换结果的第二分片。
115.在一些实施例中,第二参与方可以直接将左变换结果的第二分片作为第一变换结
果的第一分片。
116.在一些实施例中,第一参与方与第二参与方协同执行第一多方安全计算协议或第三多方安全计算协议的过程可以如下文所示。
117.第一参与方可以将变换因子进行分解,得到包含多个分解因子的第二变换序列。所述多个分解因子包括私有因子和公共因子,所述公共因子同时为第二参与方持有。
118.分解因子可以是指对变换因子进行分解后得到的分解项。在一些实施例中,多个分解因子可以包括私有因子和公共因子。私有因子是指仅有第一参与方持有的因子,公共因子除第一参与方可以持有以外,同时还可以被第二参与方持有。示例性的,变换因子以矩阵表示时,其可以被分解成多个矩阵相乘的形式,分解得到的多个矩阵为分解因子。
119.在一些实施例中,第一参与方可以按照预设分解规则对变换因子进行分解。示例性地,对变换因子进行分解的结果可以如下文所示。
120.当第一参与方拥有的变换因子,如矩阵q时,可以按照引理1对其进行分解。
121.引理1:存在σ1∈sn,σ2∈s
l
,使得变换因子q可以被分解为以下形式。
122.q=∫σ2jδσ1123.其中,∫、σ2、j、δ、σ1分别表示分解后得到的多个分解因子,按照从右到左的顺序依次为第一分解因子σ1、第二分解因子δ、第三分解因子j、第四分解因子σ2和第五分解因子∫。
124.其中,sn、s
l
分别表示n阶对称群和i阶对称群,关于对称群的定义可以参见图2的相关说明,在此不再赘述。其中,第一分解因子σ1可以表征为n
×
n的矩阵,第四分解因子σ2可以表征为i
×
i的矩阵。第五分解因子第三分解因子第三分解因子表示k2×
k2的单位阵,第二分解因子的单位阵,第二分解因子
125.其中,第二分解因子δ、第三分解因子j和第五分解因子∫不会随q的变化而变化,即这些分解因子不会携带变换因子q的信息,因此可以与第二参与方共享,这些因子又可称为公共因子。第一分解因子σ1和第四分解因子σ2跟随着q的变化而变化,这些因子会携带变换因子q的信息,因此为第一参与方私有。
126.在对变换因子进行分解后,第一参与方可以基于分解得到的多个分解因子,与第二参与方协同,依次基于所述变换序列中的多个分解因子对变换对象进行迭代变换,进而获得变换结果的第一分片,同时第二参与方获得变换结果的第二分片。变换结果等同于利用变换因子对变换对象进行变换的结果。
127.其中,涉及公共因子的变换,由参与方独自完成;涉及私有因子的变换,由参与方基于多方安全计算协议完成。
128.在一些实施例中,所述变换因子可以是第一变换因子分解得到的左因子p,变换对象可以是第二参与方在流程300中获得的中间变换结果的第二分片。
129.在一些实施例中,第一参与方同样可以将变换因子p进行分解,得到多个分解因子。
130.引理2:存在σ1∈s
l
,σ2∈sm,使得变换因子p可以被分解为以下形式。
131.p=σ2δkσ1∫
132.其中,σ2、δ、k、σ1、∫分别表示分解后得到的多个分解因子,按照从右到左的顺序依次为第一分解因子∫、第二分解因子σ1、第三分解因子k、第四分解因子δ和第五分解因子σ2。
133.其中,s
l
、sm分别表示i阶对称群、m阶对称群,其中,第二分解因子σ1可以表征为i
×
i的矩阵,第五分解因子σ2可以表征为m
×
m的矩阵。第一分解因子第三分解因子表示k1×
k1的单位阵,第四分解因子其中,第一分解因子∫、、第三分解因子k和第四分解因子δ为公共因子,第二分解因子σ1和第五分解因子σ2为私有因子。
134.在对变换因子进行分解后,第一参与方可以与第二参与方协同,依次基于所述第二变换序列中的多个分解因子对变换对象进行迭代变换,进而获得变换结果的第一分片。其中,涉及公共因子的变换,由参与方(如第一参与方或第二参与方)独自完成;涉及私有因子的变换,由参与方基于第二多方安全计算协议完成。
135.在一些实施例中,变换结果等同于利用变换因子对变换对象进行变换的结果。其中,在第一多方安全计算协议中,变换因子为右因子,变换对象为第一变换对象;在第三多方安全计算协议中,变换因子为左因子,变换对象为中间变换结果的第二分片。
136.在一些实施例中,当涉及私有因子的变换时,双方基于第二多方安全计算协议,完成当前轮的迭代变换。
137.以下将通过附图4和附图5分别对第一多方安全计算协议和第三多方安全计算协议进行详细阐述。
138.图4是根据本说明书一些实施例所示的第一多方安全计算协议的示例性交互流程图,涉及多方之间的数据交互。在一些实施例中,流程400可以由处理设备(例如,设备110或设备120)执行。例如,流程400可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程400。流程400可以包括以下操作。
139.在一些实施例中,当第一参与方拥有私有的变换因子,第二参与方拥有私有的变换对象时,第一参与方可以按照如下文实施例所描述步骤400a的方式与第二参与方按照下文实施例所描述的步骤400b的方式计算得到变换结果。其中,变换结果等同于利用变换因子对变换对象进行变换的结果。变换可以理解基于变换因子与变换对象进行计算,计算方式可包括但不限于四则运算,例如变换可以是矩阵乘法。
140.在一些实施例中,变换因子可以通过对第一变换因子进行分解得到,即,变换因子
可以是第一变换因子的分解结果中的一部分。关于第一变换因子的更多内容可以参见图2及其相关描述,此处不再赘述。在一些实施例中,变换因子可以是第一变换因子分解得到的右因子q,变换对象可以是第一变换对象x。
141.在第一多方安全计算协议中,第二变换序列中的第一分解因子为私有因子。
142.步骤402a,基于第一分解因子,与第二参与方基于所述变换对象,通过第二多方安全计算协议,获得第一迭代变换结果的第一分片,同时第二参与方获得第一迭代变换结果的第二分片。
143.第一迭代变换结果可以是指将第一分解因子作用于变换对象所得到的结果。
144.在一些实施例中,第一分解因子σ1与变换对象x满足第二多方安全计算协议的条件,即n阶对称群为有限群,变换对象x来自an,可视为n阶对称群-module,且第一分解因子σ1对变换对象x的作用结果依然属于an,且满足分配律。因此,第一参与方可以基于第一分解因子σ1与第二参与方基于变换对象x,通过第二多方安全协议协同计算,得到第一迭代变换结果。其中,第一迭代变换结果可以以和共享的形式存在于第一参与方和第二参与方。第一迭代变换结果的第一分片由第一参与方持有,第一迭代变换结果的第二分片由第二参与方持有。
145.在一些实施例中,第二参与方可以通过执行步骤402b获得第一迭代变换结果的第二分片。
146.步骤402b,基于所述变换对象,与第一参与方基于所述第一分解因子,通过第二多方安全计算协议,获得第一迭代变换结果的第二分片。
147.在一些实施例中,变换可以是矩阵乘法。因此,第一迭代变换结果可以表示为σ1x=(σ1x)1+(σ1x)2,其中,(σ1x)1为第一参与方持有的第一迭代变换结果的第一分片,(σ1x)2为第二参与方持有的第一迭代变换结果的第二分片。
148.在当前迭代变换过程中执行第二多方安全计算协议时,第一分解因子σ1作为输入数据g,变换对象x作为输入数据a。关于基于第二多方安全计算协议可以参见图2及其相关描述,此处不再赘述。
149.在一些实施例中,所述第二变换序列包括5个分解因子,其中第一分解因子和第四分解因子为私有因子,其余分解因子为公共因子。因此,流程400进一步包括:
150.步骤404a,基于第二分解因子以及第一迭代变换结果的第一分片,获得第二迭代变换结果的第一分片。
151.在一些实施例中,第二分解因子为n
×
n的矩阵,且对角线元素为1,第i+1行第i列的元素为-1,其余元素为0,i取1~(n-1)的整数。
152.第二迭代变换结果可以是指将第二分解因子δ作用于第一迭代变换结果得到的结果。其中,第二迭代变换结果可以表示为δσ1x=δ((σ1x)1+(σ1x)2)。
153.进一步对其进行展开可得δσ1x=δ(σ1x)1+δ(σ1x)2,其中,由于δ为公共因子,第一参与方和第二参与方都可以持有,因此,δ(σ1x)1可以由第一参与方直接在其本地计算得到,即,第二迭代变换结果的第一分片;第二迭代变换结果的第二分片δ(σ1x)2则可以由第二参与方基于第二分解因子和第一迭代变换结果的第二分片在其本地计算得到。
154.在一些实施例中,第二参与方可以通过执行步骤404b获得第二迭代结果的第二分片。
155.步骤404b,基于第二分解因子以及第一迭代变换结果的第二分片,获得第二迭代变换结果的第二分片。
156.第二迭代变换结果的第二分片可以直接由第二参与方在其本地计算得到。
157.步骤406a,基于第三分解因子以及第二迭代变换结果的第一分片,获得第三迭代变换结果的第一分片。
158.在一些实施例中,第三分解因子为l
×
n的矩阵,且前k2行与前k2列的公共元素组成的矩阵块的对角线元素为1,其余元素为0。
159.第三迭代变换结果可以是指将第三分解因子j作用于第二迭代变换结果的结果。在一些实施例中,第三迭代变换结果可以表示为jδσ1x=j(δ(σ1x)1+δ(σ1x)2)=jδ(σ1x)1+jδ(σ1x)2。
160.第三分解因子j为公共因子,第一参与方和第二参与方均可以持有。那么在以上例子中的jδ(σ1x)1表示的第三迭代变换结果的第一分片,可以直接由第一参与方在其本地基于第三分解因子和第二迭代变换结果的第一分片计算得到;jδ(σ1x)2表示的第三迭代变换结果的第二分片,可以直接由第二参与方在其本地基于第三分解因子和第二迭代变换结果的第二分片计算得到。
161.具体地,第二参与方可以通过执行步骤406b获得第三迭代变换结果的第二分片。
162.步骤406b,基于第三分解因子以及第二迭代变换结果的第二分片,获得第三迭代变换结果的第二分片。
163.步骤408a,基于第四分解因子以及所述第三迭代变换结果的第一分片,获得第四迭代变换结果的本地分片。
164.在一些实施例中,第四分解因子来自i阶对称群,表征为l
×
l的矩阵。
165.第四迭代变换结果可以是指将第四分解因子作用于第三迭代变换结果的结果。
166.在一些实施例中,由于第四分解因子σ2为第一参与方持有的私有因子,对于第二参与方而言,其并不能得知关于第四分解因子σ2的相关信息。因此,第四分解因子σ2作用于第三迭代变换结果的计算过程中会涉及到与第二参与方的协同计算。具体地,第四迭代变换结果可以用以下形式进行表示。
167.σ2jδσ1x=σ2(jδ(σ1x)1+jδ(σ1x)2)=σ2jδ(σ1x)1+σ2jδ(σ1x)2168.其中,σ2为第四分解因子,由第一参与方持有,jδ(σ1x)1为第三迭代变换结果的第一分片,也由第一参与方持有。
169.在一些实施例中,第一参与方可以在其本地,直接基于第四分解因子和第三迭代变换结果的第一分片,计算得到第四迭代变换结果的本地分片σ2jδ(σ1x)1。
170.步骤410a,基于第四分解因子,与第二参与方基于所述第三迭代变换结果的第二分片,通过第二多方安全计算协议,获得第四迭代变换结果的第一分片,同时第二参与方获得第四迭代变换结果的第二分片。
171.基于步骤408a中的描述可知,第四迭代变换结果可以由两部分组成,一部分为由第一参与方在其本地直接计算得到的第四迭代变换结果的本地分片,另一部分为第一参与方与第二参与方协同计算得到,该另一部分可以表示为σ2jδ(σ1x)2。
172.其中,第四分解因子σ2由第一参与方持有,第三迭代变换结果的第二分片jδ(σ1x)2由第二参与持有。第四分解因子σ2与第三迭代变换结果的第二分片满足第二多方安全计算
协议的条件,即i阶对称群为有限群,第三迭代变换结果的第二分片来自a
l
,可视为i阶对称群-module,且第四分解因子σ2对第三迭代变换结果的第二分片的作用结果依然属于a
l
,且满足分配律。因此,第一参与方与第二参与方可以基于其所拥有的数据,基于第二多方安全计算协议计算得到第四迭代变换结果的所述另一部分。
173.计算结果仍然可以以和共享的形式存在于第一参与方和第二参与方之间,如下所示。
174.σ2jδ(σ1x)2=(σ2jδ(σ1x)2)1+(σ2jδ(σ1x)2)2175.其中,(σ2jδ(σ1x)2)1表示第四迭代变换结果的第一分片,由第一参与方持有;(σ2jδ(σ1x)2)2表示第四迭代变换结果的第二分片,由第二参与方持有。在一些实施例中,第二参与方可以通过执行步骤410b获得第四迭代变换结果的第二分片。
176.步骤410b,基于所述第三迭代变换结果的第二分片,与第一参与方基于第四分解因子,通过第二多方安全计算协议,获得第四迭代变换结果的第二分片。
177.在当前轮迭代变换过程中,执行第二多方安全计算协议时,第四分解因子作为输入数据g,第三迭代变换结果的第二分片作为输入数据a。关于第二多方安全计算协议的内容可参见图2及其相关描述,此处不再赘述。
178.步骤412a,基于第五分解因子、第四迭代变换结果的本地分片、以及第四迭代变换结果的第一分片,获得所述变换结果的第一分片。
179.在一些实施例中,第五分解因子为l
×
l的矩阵,且对角线元素以及对角线下方的元素为1,其余元素为0。
180.接上述步骤中的描述,变换结果可以表示为qx=∫σ2jδσ1x。将上述步骤中得到的第四迭代变换结果代入其中可得:qx=∫σ2jδσ1x=∫(σ2jδ(σ1x)1+σ2jδ(σ1x)2),对其进行展开可得:qx=∫σ2jδ(σ1x)1+∫σ2jδ(σ1x)2=∫σ2jδ(σ1x)1+∫(σ2jδ(σ1x)2)1+∫(σ2jδ(σ1x)2)2。
181.第五分解因子∫为公共因子,第一参与方和第二参与方均可以持有,第四迭代变换结果的本地分片为σ2jδ(σ1x)1,第四迭代变换结果的第一分片为(σ2jδ(σ1x)2)1。第一参与方可以将第五分解因子分别与第四迭代变换结果的本地分片和第四迭代变换结果的第一分片进行计算后得到变换结果的第一分片∫σ2jδ(σ1x)1+∫(σ2jδ(σ1x)2)1。
182.在一些实施例中,第二参与方可以通过执行步骤412b获得变换结果的第二分片。
183.步骤412b,基于第五分解因子、以及第四迭代变换结果的第二分片,获得所述变换结果的第二分片。
184.在一些实施例中,第二参与方可以将第五分解因子作用于第四迭代变换结果的第二分片后得到变换结果的第二分片∫(σ2jδ(σ1x)2)2。
185.在本说明书一些实施例中,基于隐私保护的多方安全计算方法计算得到的变换因子q与变换对象x的计算结果可以表示为qx=∫σ2jδ(σ1x)1+∫(σ2jδ(σ1x)2)1+∫(σ2jδ(σ1x)2)2=∫σ2jδσ1x。
186.图5是根据本说明书一些实施例所示的第三多方安全计算协议的示例性交互流程图,涉及多方之间的数据交互。在一些实施例中,流程500可以由处理设备(例如,设备110或设备120)执行。例如,流程500可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程500。流程500可以包括以下操作。
187.在一些实施例中,在第三多方安全计算协议中,所述第二变换序列中的第一分解因子为公共因子,第二分解因子为私有因子。
188.第一参与方可以执行流程500a,获得变换结果的第一分片;第二参与方可以执行流程500b,获得变换结果的第二分片。在一些实施例中,变换可以是矩阵乘法。
189.步骤501b,基于第一分解因子以及变换对象获得第一迭代变换结果。
190.第一分解因子为l
×
l的矩阵,且对角线元素以及对角线下方的元素为1,其余元素为0。第一分解因子也就是上述示例中的∫。在一些实施例中,由于第一分解因子∫为公共因子,且变换对象为第二参与方持有,因此,第二参与方可以直接计算得到第一迭代变换结果为
191.步骤502a,基于第二分解因子,与第二参与方基于第一迭代变换结果,通过第二多方安全计算协议,获得第二迭代变换结果的第一分片,同时第二参与方获得第二迭代变换结果的第二分片。
192.所述第一迭代变换结果由第二参与方基于第一分解因子以及所述变换对象获得。
193.在一些实施例中,第二分解因子来自l阶对称群,表征为l
×
l的矩阵。
194.第二迭代变换结果可以是指将第二分解因子σ1作用于第一迭代变换结果的结果。在一些实施例中,第二迭代变换结果可以表示为
195.在一些实施例中,l阶对称群为有限群,第一迭代变换结果来自a
l
,为l阶对称群-module,因此,第一参与方与第二参与方可以基于第二多方安全计算协议计算得到的第二迭代变换结果,并以和共享的形式存在于两方,例如,迭代变换结果,并以和共享的形式存在于两方,例如,其中,第一参与方获得第二迭代变换结果的第一分片第二参与方获得第二迭代变换结果的第二分片
196.在一些实施例中,第二参与方可以通过执行步骤502b获得第二迭代变换结果的第二分片。
197.步骤502b,基于所述第一迭代变换结果,与第一参与方基于第二分解因子,通过第二多方安全计算协议,获得第二迭代变换结果的第二分片。
198.在当前轮迭代变换的过程中,当执行第二多方安全计算协议时,第二分解因子作为输入数据g,第一迭代变换结果作为输入数据a。关于第二多方安全计算协议的详细内容,可以参见图2及其相关描述,此处不再赘述。
199.在一些实施例中,对变换序列进行分解得到的分解因子可以包括5个分解因子,其中,第二分解因子和第五分解因子为私有因子,其余分解因子为公共因子。5个分解因子可以如上文所示,即,p=σ2δkσ1∫。第一参与方可以继续通过执行步骤504a至512a,获得变换结果的第一分片,对应的,第二参与方可以继续通过执行步骤504b至512b,获得变换结果的第二分片。
200.步骤504a,基于第三分解因子以及第二迭代变换结果的第一分片,获得第三迭代变换结果的第一分片。
201.在一些实施例中,第三分解因子为m
×
l的矩阵,且倒数k1行与倒数k1列的公共元素组成的矩阵块的对角线元素为1,其余元素为0。
202.第三迭代变换结果可以是指将第三分解因子k作用于第二迭代变换结果的结果。
203.在一些实施例中,第三迭代变换结果可以表示为在一些实施例中,第三迭代变换结果可以表示为对其进行分解可得
204.由于第三分解因子k为公共因子,因此,第一参与方和第二参与方可以直接基于其各自所拥有的数据计算得到第三迭代变换结果的分片。其中,第一计算方计算得到第三迭代变换结果的第一分片第二参与方计算得到第三迭代变换结果的第二分片
205.在一些实施例中,第二参与方可以通过执行步骤504b获得第三迭代变换结果的第二分片。
206.步骤504b,基于第三分解因子以及第二迭代变换结果的第二分片,获得第三迭代变换结果的第二分片。
207.步骤506a,基于第四分解因子以及第三迭代变换结果的第一分片,获得第四迭代变换结果的第一分片。
208.在一些实施例中,第四分解因子为m
×
m的矩阵,对角线元素为1,第i+1行第i列的元素为-1,其余元素为0,i取1~(m-1)的整数。
209.第四迭代变换结果可以是指将第四分解因子作用于第三迭代变换结果的结果。
210.在一些实施例中,第四迭代变换结果可以表示为对其进行展开,即,将第三迭代变换结果的第一分片和第三迭代变换结果的第二分片代入其中可得,
211.为第四迭代变换结果的第一分片,为第四迭代变换结果的第二分片。由于第四分解因子δ为公共因子,第一参与方和第二参与方均可以持有,因此,第一参与方和第二参与方均可以在其本地计算得到对应的第四迭代结果的分片。
212.在一些实施例中,第二参与方可以通过执行步骤506b获得第四迭代变换结果的第二分片。
213.步骤506b,基于第四分解因子以及第三迭代变换结果的第二分片,获得第四迭代变换结果的第二分片。
214.步骤508a,基于第五分解因子以及所述第四迭代变换结果的第一分片,获得第五迭代变换结果的本地分片。
215.在一些实施例中,第五分解因子为私有因子,由第一参与方持有,第二参与方并不得知第五分解因子。
216.在一些实施例中,第五分解因子来自m阶对称群,表征为m
×
m的矩阵。
217.第五迭代变换结果可以是指将第五分解因子作用于第四迭代变换结果的结果。
218.示例性地,第五分解因子为σ2,第四迭代变换结果为第五迭代变换结果可以表示为将第四迭代结果的分片代入其中可得:
[0219][0220]
其中,第五分解因子σ2为私有因子,和第四迭代变换结果的第一分片由第一参与方持有,因此,可以由第一参与方在其本地直接计算得到。即为第五迭代变换结果的本地分片。为第五迭代变换结果的另一部分,以和共享的形式存在于第一参与方和第二参与方,计算方式可见后文步骤510a中的描述。
[0221]
步骤510a,基于第五分解因子,与第二参与方基于所述第四迭代变换结果的第二分片,通过第二多方安全计算协议,获得第五迭代变换结果的第一分片,同时第二参与方获得第五迭代变换结果的第二分片。
[0222]
如上所述,第五迭代变换结果的另一部分可以表示为其中的第五分解因子σ2由第一参与方持有,第四迭代变换结果的第二分片由第二参与方持有,m阶对称群为有限群,第四迭代变换结果的第二分片来自am,为m阶对称群-module,因此,第一参与方和第二参与方可以基于第二多方安全计算协议进行计算。此时,第五分解因子作为输入数据g,第四迭代变换结果的第二分片作为输入数据a。关于第二多方安全计算协议的内容可以参见图2的相关描述,此处不再赘述。
[0223]
在一些实施例中,第五分解因子σ2与第四迭代变换结果的第二分片的计算结果可以表示为
[0224]
其中,表示第五迭代变换结果的第一分片,由第一参与方获得;表示第五迭代变换结果的第二分片,由第二参与方获得。
[0225]
在一些实施例中,第二参与方可以通过执行步骤510b获得第五迭代变换结果的第二分片。
[0226]
步骤510b,基于所述第四迭代变换结果的第二分片,与第一参与方基于第五分解因子,通过第二多方安全计算协议,获得第五迭代变换结果的第二分片。
[0227]
步骤512a,基于第五迭代变换结果的本地分片以及第五迭代变换结果的第一分片,获得所述变换结果的第一分片。
[0228]
在一些实施例中,第一参与方将第五迭代变换结果的本地分片和第五迭代变换结果的第一分片求和可以得到变换结果的第一分片。
[0229]
示例性地,变换结果的第一分片可以表示为由第一参与方持有。
[0230]
相应的,第二参与方可以通过执行步骤512b获得变换结果的第二分片。
[0231]
步骤512b,基于所述第五迭代变换结果的第二分片,获得所述变换结果的第二分片。
[0232]
在一些实施例中,第二参与方可以直接将第五迭代变换结果的第二分片作为变换结果的第二分片。
[0233]
在本说明书一些实施例中,变换因子p与变换对象的乘积可以表示为的乘积可以表示为可以是流程200中的中间变换结果的第二分片。
[0234]
在本说明书一些实施例中,通过对要变换的矩阵进行分解,得到的属于n阶对称群的分解因子对向量的变换满足第二多方安全计算协议,避免了普通安全乘法协议会产生与矩阵维度成正比的通信量,使得计算过程中所涉及到的通信量中不会涉及到矩阵的行列相乘项,极大地减少了矩阵乘向量计算过程中所涉及到的通信开销。
[0235]
以流程400中的第一轮迭代变换为例,第一参与方向第二参与方发送第一传输数据时,产生的通信量为logn!,第三方向第一参与方或第二参与方发送第一中间结果的第一分片或第二分片时,产生的通信量为nlog|a|,第二参与方向第一参与方发送第二传输数据时,产生的通信量为nlog|a|,因此,流程400中通过第二多方安全计算协议实现的第一轮迭代变换的通信量为logn!+2nlog|a|。以此类推,流程400中通过第二多方安全计算协议实现的第四轮迭代变换的通信量为logl!+2llog|a|。流程500中通过第二多方安全计算协议实现的第二轮迭代变换的通信量为logl!+2llog|a|。流程500中通过第二多方安全计算协议实现的第五轮迭代变换的通信量为logm!+2mlog|a|。
[0236]
相应的,可以确定流程400涉及的通信量为2(n+l)log|a|+logl!+logn!,流程500涉及的通信量为2(m+l)log|a|+logm!+logl!。流程300所涉及到的通信量主要包括分别基于右因子、同构因子以及左因子与第二参与方计算时的通信量,其中,基于右因子与第二参与方进行计算时的通信量与流程400相同;基于左因子和第二参与方的变换结果进行计算时的通信量与流程500相同,基于同构因子与第二参与方进行计算时的通信量为logl!+3llog|a|。因此,流程300中所有的通信量总计为(2m+2n+7l)log|a|+logm!+logn!+3logl!。从以上通信量中可以直接看出,所有的通信过程中的通信量均不含有mn项,相较于两项相乘所带来的通信量,本说明书实施例所披露的技术方案中所需要的通信量在实际应用时能有效地被减少。
[0237]
应当注意的是,上述有关各流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
[0238]
图6是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性模块图。如图6所示,系统600可以包括分解模块610和第一协同计算模块620。
[0239]
分解模块610可以用于将所述第一变换因子进行分解,得到包含多个分解因子的第一变换序列。
[0240]
第一协同计算模块620可以用于与第二参与方协同,基于所述第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第一分片。
[0241]
其中,所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果。
[0242]
图7是根据本说明书一些实施例所示的一种隐私保护的多方安全计算系统的示例性模块图。如图7所示,系统700可以包括第二协同计算模块710。
[0243]
第二协同计算模块710可以用于与第一参与方协同,基于第一变换序列中的分解因子对第一变换对象进行迭代变换,进而获得第一变换结果的第二分片。
[0244]
在一些实施例中,所述第一变换结果等同于第一变换因子对第一变换对象进行变换的结果。
[0245]
其中,所述第一变换序列包括第一参与方将所述第一变换因子进行分解得到的多个分解因子。
[0246]
关于以上所示的系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图2至图5的相关说明。
[0247]
应当理解,图6和图7所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
[0248]
需要注意的是,以上对于隐私保护的多方安全计算系统的示例性模块图系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,分解模块610和第一协同计算模块620可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,分解模块610和第一协同计算模块610可以是两个模块,也可以是一个模块同时具有分解和协同计算功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
[0249]
本说明书实施例可能带来的有益效果包括但不限于:(1)通过对要变换的矩阵进行分解,使得得到的分解因子对向量的变换满足第二多方安全计算协议,避免了普通安全乘法协议会产生与矩阵维度成正比的通信量,使得计算过程中所涉及到的通信量中不会涉及到矩阵的行列相乘项,极大地减少了矩阵乘向量计算过程中所涉及到的通信开销;(2)基于多方安全计算协议进行计算,可以有效地保护各参与方所拥有的数据的隐私安全。
[0250]
需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
[0251]
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能
会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
[0252]
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0253]
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
[0254]
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。
[0255]
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb.net、python等,常规程序化编程语言如c语言、visual basic、fortran 2003、perl、cobol 2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。
[0256]
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
[0257]
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要
求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
[0258]
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
[0259]
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
[0260]
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。