CN111475854B - 保护两方数据隐私的协同计算方法及*** - Google Patents
保护两方数据隐私的协同计算方法及*** Download PDFInfo
- Publication number
- CN111475854B CN111475854B CN202010587170.XA CN202010587170A CN111475854B CN 111475854 B CN111475854 B CN 111475854B CN 202010587170 A CN202010587170 A CN 202010587170A CN 111475854 B CN111475854 B CN 111475854B
- Authority
- CN
- China
- Prior art keywords
- matrix
- party
- elements
- private
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本说明书实施例公开了保护两方数据隐私的协同计算方法及***,可应用于多方模型训练。第一方持有第一私密矩阵和私钥,第二方持有第二私密矩阵。两方分别对第一私密矩阵和第二私密矩阵进行放大处理,得到第一输入映射矩阵和第二输入映射矩阵。第一方处理第一输入映射矩阵得到第一密文矩阵并将其发送给第二方。第二方处理第一密文矩阵得到第二密文矩阵并将其发送给第一方。第一方基于第二密文矩阵和私钥计算待近似矩阵,对待近似矩阵进行近似得到第一输出映射矩阵。第一方对第一输出映射矩阵进行缩小处理得到第一输出矩阵并将其作为第一私密矩阵和第二私密矩阵的乘积的第一分片。第二方获得第二输出矩阵作为该乘积的第二分片。
Description
技术领域
本说明书涉及信息技术领域,特别涉及一种保护两方数据隐私的协同计算方法及***。
背景技术
在一些场景下,需要联合多个合作方的私密数据完成计算任务,例如,联合多个数据提供方的样本数据进行分布式模型训练。为了保护各方的数据隐私,任一合作方的私密数据可被拆分成多个分片,各合作方各执一片。在多方联合计算的过程中,基于各方私密数据的一个或多个计算结果(某些计算结果若被公开会有隐私泄露风险,故也可视为私密数据)也可以分片的形式存储于各方。上述保护数据隐私的计算方式被称为秘密分享,核心思想是使私密的输入/输出以分片(share)的形式分布于多个合作方。
目前,希望提供一种以秘密分享方式计算两方私密矩阵的乘积的方案。
发明内容
本说明书实施例之一提供一种保护两方数据隐私的协同计算方法,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵中的元素和所述第二私密矩阵中的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述方法由所述第一方的计算设备执行,其包括:将第一私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵;获得第一小范数矩阵,所述第一小范数矩阵的范数小于第一阈值且所述第一小范数矩阵的元素属于目标商群;将所述第一输入映射矩阵、所述第一小范数矩阵以及与所述私钥匹配的公钥进行第一运算,得到第一密文矩阵;将所述第一密文矩阵发送给所述第二方的计算设备,以使:所述第二方的计算设备将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及所述公钥进行第二运算,得到第二密文矩阵,其中,所述第二输入映射矩阵的元素属于目标商群且其数值相对所述第二私密矩阵的元素数值放大了p倍,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群,所述第二输出映射矩阵存储于所述第二方的计算设备,所述第二输出映射矩阵的元素属于目标商群且其数值缩小p2倍后仍属于所述目标商群;从所述第二方的计算设备接收所述第二密文矩阵;将所述第二密文矩阵以及所述私钥进行第三运算,得到待近似矩阵;将目标矩阵空间中最接近所述待近似矩阵的矩阵确定为第一输出映射矩阵;所述目标矩阵空间中矩阵的元素属于所述目标商群且其数值缩小p2倍后仍属于所述目标商群;将所述第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积的第一分片,所述目标乘积为所述第一私密矩阵和所述第二私密矩阵的乘积。
本说明书实施例之一提供一种保护两方数据隐私的协同计算***,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵中的元素和所述第二私密矩阵中的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述***在所述第一方的计算设备上执行,其包括:第一输入映射矩阵获得模块,用于将第一私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵;第一小范数矩阵获得模块,用于获得第一小范数矩阵,所述第一小范数矩阵的范数小于第一阈值且所述第一小范数矩阵的元素属于目标商群;第一密文矩阵计算模块,用于将所述第一输入映射矩阵、所述第一小范数矩阵以及与所述私钥匹配的公钥进行第一运算,得到第一密文矩阵;第一发送模块,用于将所述第一密文矩阵发送给所述第二方的计算设备,以使:所述第二方的计算设备将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及所述公钥进行第二运算,得到第二密文矩阵,其中,所述第二输入映射矩阵的元素属于目标商群且其数值相对所述第二私密矩阵的元素数值放大了p倍,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群,所述第二输出映射矩阵存储于所述第二方的计算设备,所述第二输出映射矩阵的元素属于目标商群且其数值缩小p2倍后仍属于所述目标商群;第一接收模块,用于从所述第二方的计算设备接收所述第二密文矩阵;待近似矩阵计算模块,用于将所述第二密文矩阵以及所述私钥进行第三运算,得到待近似矩阵;近似模块,用于将目标矩阵空间中最接近所述待近似矩阵的矩阵确定为第一输出映射矩阵;所述目标矩阵空间中矩阵的元素属于所述目标商群且其数值缩小p2倍后仍属于所述目标商群;第一输出矩阵获得模块,用于将所述第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积的第一分片,所述目标乘积为所述第一私密矩阵和所述第二私密矩阵的乘积。
本说明书实施例之一提供一种保护两方数据隐私的协同计算装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的由第一方的计算设备执行的保护两方数据隐私的协同计算方法。
本说明书实施例之一提供一种保护两方数据隐私的协同计算方法,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵的元素和所述第二私密矩阵的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述方法由所述第一方的计算设备执行,其包括:将第二私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵;获得第二小范数矩阵,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群;从所述第一方的计算设备接收第一密文矩阵;获得第二输出映射矩阵以及作为目标乘积的第二分片的第二输出矩阵,其中,所述第二输出映射矩阵的元素数值相对所述第二输出矩阵的元素数值放大了p2倍,所述第二输出映射矩阵的元素和所述第二输出矩阵的元素属于所述目标商群;将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及与所述私钥匹配的公钥进行第二运算,得到第二密文矩阵;将所述第二密文矩阵发送给所述第一方的计算设备,以使所述第一方的计算设备获得作为所述目标乘积的第一分片的第一输出矩阵。
本说明书实施例之一提供一种保护两方数据隐私的协同计算***,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵的元素和所述第二私密矩阵的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述***在所述第一方的计算设备上实现,其包括:第二输入映射矩阵获得模块,用于将第二私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵;第二小范数矩阵获得模块,用于获得第二小范数矩阵,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群;第二接收模块,用于从所述第一方的计算设备接收第一密文矩阵;第二获得模块,用于获得第二输出映射矩阵以及作为目标乘积的第二分片的第二输出矩阵,其中,所述第二输出映射矩阵的元素数值相对所述第二输出矩阵的元素数值放大了p2倍,所述第二输出映射矩阵的元素和所述第二输出矩阵的元素属于所述目标商群;第二密文矩阵计算模块,用于将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及与所述私钥匹配的公钥进行第二运算,得到第二密文矩阵;第二发送模块,用于将所述第二密文矩阵发送给所述第一方的计算设备,以使所述第一方的计算设备获得作为所述目标乘积的第一分片的第一输出矩阵。
本说明书实施例之一提供一种保护两方数据隐私的协同计算装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一项所述的由第二方的计算设备执行的保护两方数据隐私的协同计算方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的计算***的应用场景示意图;
图2是根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图;
图3是根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图;
图4是根据本说明书一些实施例所示的两方协同计算M1M2的分片的示例性流程图;
图5是根据本说明书一些实施例所示的涉及第三方服务器的矩阵乘法协议的原理示意图;
图6是根据本说明书一些实施例所示的保护两方数据隐私的协同计算***的模块图;
图7是根据本说明书一些实施例所示的保护两方数据隐私的协同计算***的模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“***”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
为了便于阐述本说明书中的实施例,首先对其中涉及的数学知识进行介绍。
在数学中,群(以下用G表示)规定有一种二元运算,通常可以使用乘法符号“*”(在无歧义时可省略)或加法符号“+”作为该二元运算的符号,但需要注意的是,该二元运算不能直接等同于四则运算中的乘法或加法。若干元素通过一次或多次二元运算产生的结果可称为合值,每个元素可称为合值的分片。
群的二元运算满足:1.封闭律,对于G中的任意元素a、b,a*b仍在G中;2.结合律,对于G中的任意元素a、b,有(a*b)*c=a*(b*c);3.有单位元,G中存在元素e,使得e*a=a*e=a;4.有逆元,对于G中的任一元素a,G中存在b,使得a*b=b*a=e,a、b互为逆元。值得说明的是,对于“+”表示的二元运算,e也可称为零元,逆元也可称为负元,对于G中的任意元素a、b,a-b可以表示a+(b的逆元)。阿贝尔群除了具有以上4个性质外,还具有交换律,即对于阿贝尔群中的任意元素a、b,a*b=b*a。
进一步地,本说明书涉及一种基于整数阿贝尔群的商群,以二进制为例,商群的数学表示可以是G:=2-kZ/2N-kZ,其中,Z为整数集合,k为非负整数,N为正整数且N-k>0。当k=0时商群G的数学表示可简化为2NZ。商群G中的元素为非负的二进制定点数,其小数位有k位(k=0时无小数部分)且整数位有N-k位,在二进制计算设备中可使用1个N位(bit)的存储单元来保存商群G中任一定点数。商群G的二元运算包括群乘法和群加法,与四则运算的区别在于取模:群加法的数学表示为(a+b)mod2N-k,在无歧义的时候可简化为a+b,mod表示左边的值相对右边的值取模,(a+b)里的“+”属于四则运算;群乘法的数学表示为(a*b)mod2N-k,在无歧义时可简化成a*b或ab,(a*b)里的“*”属于四则运算。另外,a-b可以视为群减法的简化数学表示,等效于(a-b)mod2N-k,(a-b)里的“-”属于四则运算。
值得说明的是,由于计算设备通常使用固定位数(如bit)来存储计算过程中产生的数值,多方协同计算时会频繁使用涉及取模的群加法、群乘法、群减法等等。本说明书中,在没有特别说明额情况下,涉及符号的数学表示可优先按群加法、群乘法、群减法而非四则运算来理解。
图1是根据本说明书一些实施例所示的计算***的应用场景示意图。如图1所示,计算***100可以包括至少两个(即n不小于2)参与方的计算设备110-1、110-2、…、110-(n-1)、110-n以及网络130。
计算***100中任意两个参与方的计算设备可以协同计算两方私密矩阵的乘积。为了便于描述,本说明书中将两方协同计算中使用自身私钥进行计算的一方记为第一方,另一方则记为第二方。第一方可以向第二方公开第一方的公钥,以使第二方可以利用第一方的公钥对接收到的数据进行处理。当然,第一方的计算设备需要预先生成一对公私钥。
第一方和第二方可分别获得两方私密矩阵的乘积的一个分片。应当理解,任一方假若得知两方私密矩阵的乘积,可通过矩阵乘法的逆运算得到出另一方的私密矩阵,从而造成数据隐私的泄露。因此,参与协同计算的任一方仅获得两方私密矩阵的乘积的一个分片,可以有效得保护双方的数据隐私。
仅作为示例,在分布式神经网络训练场景下,对于同一样本ID,N(N不小于2)个数据提供方分别持该样本ID的特征数据(可用矩阵表示,以下也称为特征值矩阵)。这里,不妨将N个数据提供方持有的同一样本ID的特征值矩阵分别记为X'1、X'2、...、X'N,下标1~N可分别作为N个数据提供方的编号,本说明书其他位置出现的与某个数据提供方对应的数据(如,X、W等)也可采用这种标注方式。N个数据提供方想联合所有的特征数据进行模型训练以提升模型效果,但任一数据提供方持有的特征数据X'i(i≤N)都属于私密数据,不能对外泄露。
为了保护数据隐私,对于任一样本ID,任一数据提供方i可将自身持有的该样本ID的特征值矩阵X'i拆分成N个分片,将其中一个分片作为本地分片(不妨设为X'ii)保存并将其余N-1个分片分配给其他N-1个数据提供方,即任一数据提供方对自身持有的特征值矩阵进行秘密分享。其中,不妨将N个分片分别记为X'i1、X'i2、...、X'iN,满足,第一个下标(如i)指示分片由哪个数据提供方拆分得到,第二个下标(如j)表示分片被分配给哪个数据提供方,本说明书中的其他分片(双下标)也可采用这种标注方式。进而,任一数据提供方可拼接保存的本地分片X'ii和来自其他N-1个数据提供方的该样本ID对应的分片X'ji(j≤N且j≠i),得到该样本ID对应的特征值分片Xi,其中满足。
应当理解,对于任一样本ID,在不考虑隐私保护的情况下,通过拼接X'1、X'2、...、X'N得到X再将X拆分为N个分片X1、X2、...、XN,每个特征值分片Xi(i≤N)可分配给一个数据提供方,其中满足。
对于有监督训练,N个数据提供方中的某一方(以下称为标签方)可持有标签数据,标签数据同样被拆分成N个分片,标签方保存其中一片作为本地分片,其他N-1个数据提供方各执一片。
神经网络的调参可包括前向传播和反向传播两个过程。其中,前向传播过程包括逐层计算输入矩阵X和参数矩阵W的乘积(记为X*W),输入层(即神经网络的第一层)的输入矩阵即特征值矩阵。输入矩阵X的每一行可对应于一个样本在神经网络相应层(记为第i层)的输入,输入矩阵X的列数为第i层的节点数量。当样本分批次训练时,输入矩阵X的行数可以是批次大小(即一个批次包含的样本数量)。参数矩阵的行数可以是第i层的节点数量,参数矩阵的列数可以是第i+1层的节点数量。
由于集中式训练会导致隐私泄露,分布式训练中各数据提供方只逐层计算了X*W的一部分(即一个分片)。其中,每个数据提供方训练一个本地模型,N个数据提供方的本地模型对应一个联合等效模型且本地模型和联合等效模型的结构(如,层数、对应层的节点数、节点间的连接关系等)相同,任一数据提供方的本地模型任一层的输入/输出/参数相当于该联合等效模型对应层的输入/输出/参数的分片。
对于任一层,N个数据提供方可将本说明书实施例提供的协同计算方法应用于分布式神经网络训练中的前向传播。具体地,针对神经网络的某一层(隐藏层或输出层),通过展开关系式(X1+X2+...XN)*(W1+W2+...+WN)=。可以看出,展开得到的乘积项包括两类:Xi*Wi(共N项)和Xi*Wj(i≠j)。其中:Xi*Wi可在数据提供方i本地计算,可称为本地乘积项;Xi*Wj(可称为交叉乘积项)的两个因子Xi、Wj属于不同数据提供方的私密矩阵(秘密),仍需要数据提供方i和数据提供方j进行秘密分享计算,即在***露双方隐私的前提下,数据提供方i获得Xi*Wj的一个分片<Xi*Wj>i,数据提供方j获得Xi*Wj的一个分片<Xi*Wj>j。针对神经网络的某一层(隐藏层或输出层),任一数据提供方i获得输出分片Yi=。
值得说明的是,任一参与方既可以作为第一方,与第二方协同计算以得到两方私密矩阵乘积的分片,也可以作为第二方计算,与第一方协同计算以得到两方私密矩阵乘积的分片。例如,在上述分布式神经网络训练场景下,任一数据提供方i既可以作为第一方,与第二方(如数据提供方j)协同计算以得到Xi*Wj的分片,也可以作为第二方,与第一方(如数据提供方j)协同计算以得到Xj*Wi的分片。因此,本说明书实施例提供的由第一方执行的协同计算方法和由第二方执行的协同计算方法可以通过运行同一份协议实现(即,协议包括与第一方对应的第一部分和与第二方对应的第二部分),即各参与方的计算设备110可以安装同一份协议并且每次会以特定的身份(第一方或第二方)运行协议。
网络130连接***的各组成部分,使得各部分之间可以进行通讯。在***中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络130可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。
图2是根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图。第一方的计算设备存储有第一私密矩阵P1和私钥S(矩阵形式),与私钥S匹配的公钥可对第二方公开,第二方的计算设备存储有第二私密矩阵P2。流程200可以由第一方的计算设备执行,以获得目标乘积P1P2的第一分片。在一些实施例中,流程200可以由图6所示的***600实现。如图2所示,流程200可以包括:
步骤210,将第一私密矩阵P1中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵M1。在一些实施例中,步骤210可以由第一输入映射矩阵获得模块610实现。
类似地,第二方的计算设备可将第二私密矩阵P2中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵M2。
P1和P2中的元素均属于同一商群,不妨记为初始商群。(范围上)目标商群大于初始商群,即,“提升”意味着使用更多的存储单元来存储同一数值。应当理解,目标商群的具体范围可以根据放大倍数p确定,由于要M1、M2相对P1、P2分别放大了p倍且要基于目标商群计算M1*M2的分片,目标商群的最大元素相对初始商群的最大元素至少放大了p2倍,即可视为(范围上)目标商群相对初始商群至少放大了p2倍。例如,提升前P1和P2中的元素属于初始商群Z/qZ,提升后M1和M2属于目标商群Z/dZ,其中可满足d=p2q。
步骤220,获得第一小范数矩阵R。在一些实施例中,步骤220可以由第一小范数矩阵获得模块620实现。
第一小范数矩阵R的范数小于第一阈值。在一些实施例中,第一阈值可以为p,又或者远小于p,如取0.1p、0.01p,或者更小。在一些实施例中,可以随机生成R。
步骤230,将第一输入映射矩阵M1、第一小范数矩阵R以及与私钥S匹配的公钥进行第一运算,得到第一密文矩阵。在一些实施例中,步骤230可以由第一密文矩阵计算模块630实现。
所述公钥可基于私钥S和误差项(也可称为错误项,记为e)得到,误差项e与前文所述第一小范数矩阵R和后文所述第二小范数矩阵H0同为小范数矩阵。在一些实施例中,可以随机生成误差项e。在一些实施例中,与第一小范数矩阵R类似,e的范数可以小于p。关于构造公私钥对的具体方式,可以参考图4及其相关描述。
第一运算的作用包括对第一输入映射矩阵M1进行加密。用于加密M1的R作为第一方的私密数据不对第二方公开,因此第二方拿到第一密文矩阵后无法获知M1(进而也无法获知第一私密矩阵P1)。应当理解,由于私密矩阵的放大倍数p是公开参数,第一输入映射矩阵M1的暴露可进一步导致第一私密矩阵P1的暴露,因此需要对第一输入映射矩阵M1进行加密。
根据群的封闭性,共同参与运算的R中的元素、所述公钥中的元素与M1中的元素都属于目标商群。类似地,参考后续的步骤(如步骤240~260),M2、H0、H1中的元素也属于目标商群。
步骤240,将第一密文矩阵发送给第二方的计算设备,以使第二方的计算设备获得第二密文矩阵U。在一些实施例中,步骤240可以由第一发送模块640实现。
步骤250,从第二方的计算设备接收第二密文矩阵U。在一些实施例中,步骤250可以由第一接收模块650实现。
第二密文矩阵U为第一密文矩阵、第二输入映射矩阵M2、第二小范数矩阵H0、第二输出映射矩阵H1以及所述公钥的第二运算结果。类似于第一运算,第二运算的作用包括对第二输入映射矩阵M2进行加密。用于加密M2的H0、H1作为第二方的私密数据不对第一方公开,因此第一方拿到第二密文矩阵后无法获知M2(进而也无法获知第二私密矩阵P2)。应当理解,由于私密矩阵的放大倍数p是公开参数,第二输入映射矩阵M2的暴露可进一步导致第二私密矩阵P2的暴露,因此需要对第二输入映射矩阵M2进行加密。
第二输入映射矩阵M2的元素属于目标商群且其数值相对第二私密矩阵P2的元素数值放大了p倍,第二小范数矩阵H0的范数小于第二阈值且第二小范数矩阵H0的元素属于目标商群,第二输出映射矩阵H1存储于第二方的计算设备,第二输出映射矩阵H1的元素属于目标商群且其数值缩小p2倍后仍属于目标商群。第二阈值可以与第一阈值相同或不同。
步骤260,将第二密文矩阵U以及私钥S进行第三运算,得到待近似矩阵V。在一些实施例中,步骤260可以由待近似矩阵计算模块660实现。
根据前述内容,第一运算的输入包含M1、R以及所述公钥,第二运算的输入包含第一运算的输出(即第一密文矩阵)、M2、H0、H1以及所述公钥,则通过设计特定组合的第一运算、第二运算以及第三运算,可以使得:第三运算的输出V等效于M1M2-H1和第三小范数矩阵的合值。其中,第三小范数矩阵可基于第一小范数矩阵R、第二小范数矩阵H0以及误差项e得到,由于R、H0、e同为小范数矩阵,R、H0、e的运算结果仍可以是小范数矩阵(即第三小范数矩阵)。
步骤270,将目标矩阵空间中最接近待近似矩阵V的矩阵确定为第一输出映射矩阵。在一些实施例中,步骤270可以由近似模块670实现。
目标矩阵空间中矩阵的元素属于目标商群且其数值缩小p2倍后仍属于目标商群。换言之,相对于目标商群中的元素的数值尺度(与相邻元素间的距离正相关,记为l0),目标矩阵空间中矩阵的元素的数值尺度(记为l1)放大了p2倍。以目标商群为整数群Z/dZ(即l0=1)为例,目标矩阵空间中矩阵的元素的数值尺度为p2。通过对第一小范数矩阵R、第二小范数矩阵H0、误差项e的范数等进行约束,可以使得在第三小范数矩阵的元素数值远小于l1(例如,小于0.5、0.01倍或更小倍的l1),即在数值上第三小范数矩阵(如后文中的eT(RTM2+H0))相对M1M2-H1而言是可忽略的扰动,故第一方通过步骤270的近似处理可以得到M1M2-H1作为M1M2的第一分片。由于第一方本地的M1M2的第一分片和第二方本地的M1M2的第二分片H1均不对外不公开,可以保护双方的数据隐私。
应当理解,在一些实施例中,在误差允许的范围内,可以允许第三小范数矩阵中的少量(相对矩阵规模而言)元素未达到数值要求,即允许近似结果与M1M2-H1在少量矩阵元素上存在偏差。
步骤280,将第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积P1P2的第一分片。在一些实施例中,步骤280可以由第一输出矩阵获得模块680实现。
类似地,第二方的计算设备可在本地将第二输出映射矩阵H1的元素数值缩小p2倍,得到第二输出矩阵并将其作为目标乘积P1P2的第二分片。
应当理解,由于M1M2的元素数值相对于P1P2的元素数值放大了p2倍,要得到P1P2的分片,可将第一、第二输出映射矩阵的元素数值缩小p2倍。既然第一输出矩阵和第二输出矩阵的数值缩小了p2倍,意味着可以使用较少的存储单元进行存储,因此在一些实施例中,可以将第一输出矩阵以及第二输出矩阵落回到初始商群。
需要注意的是,本说明书中提及的某个矩阵的元素数值和另一个矩阵的元素数值的倍数关系,具体是指两个相同规模的矩阵同行同列的元素间都满足此倍数关系。
图3是根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图。流程300可以由第二方的计算设备执行,以获得目标乘积P1P2的第二分片。在一些实施例中,流程300可以由图7所示的***700实现。如图3所示,流程300可以包括:
步骤310,将第二私密矩阵P2中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵M2。在一些实施例中,步骤310可以由第二输入映射矩阵获得模块710实现。
步骤320,获得第二小范数矩阵H0。在一些实施例中,步骤320可以由第二小范数矩阵获得模块720实现。
在一些实施例中,可以随机生成H0。
步骤330,从第一方的计算设备接收第一密文矩阵。在一些实施例中,步骤330可以由第二接收模块730实现。
步骤340,获得第二输出映射矩阵H1以及作为目标乘积P1P2的第二分片的第二输出矩阵。在一些实施例中,步骤340可以由第二获得模块740实现。
第二输出映射矩阵中的元素相对于第二输出矩阵中的元素数值放大了p2倍。在一些实施例中,由于第二输出映射矩阵H1及其元素数值缩小p2倍后得到的第二输出矩阵均属于目标商群,即第二输出映射矩阵H1属于尺度较大的目标矩阵空间,因此第二方的计算设备可以先获得目标矩阵空间中的任一矩阵作为第二输出映射矩阵H1,再将H1的元素数值缩小p2倍得到第二输出矩阵。其中,第二输出映射矩阵H1是作为M1M2的第二分片存储于第二方的计算设备,第二输出矩阵是作为目标乘积P1P2的第二分片存储于第二方的计算设备。在一些实施例中,可以在目标矩阵空间中随机生成H1。
在一些实施例中,第二方的计算设备也可以先获得元素数值属于目标商群的第二输出矩阵,再将第二输出矩阵的元素数值放大p2倍以得到第二输出映射矩阵H1。当然,需保证元素数值放大后仍属于目标商群,才可得到属于目标矩阵空间的第二输出映射矩阵H1。在一些实施例中,可以随机生成第二输出矩阵。
步骤350,将第一密文矩阵、第二输入映射矩阵M2、第二小范数矩阵H0、第二输出映射矩阵H1以及与私钥S匹配的公钥进行第二运算,得到第二密文矩阵V。在一些实施例中,步骤350可以由第二密文矩阵计算模块750实现。
步骤360,将第二密文矩阵V发送给第一方的计算设备,以使第一方的计算设备获得作为目标乘积P1P2的第一分片的第一输出矩阵。在一些实施例中,步骤360可以由第二发送模块760实现。
关于流程300的更多细节,可以参考流程200、图4及其相关描述。
图4是根据本说明书一些实施例所示的两方协同计算M1M2的分片的示例性流程图。其中,第一输入映射矩阵M1为n1×m维的矩阵,第二输入映射矩阵M2为m×n2维的矩阵,带有双下标的M表示矩阵(Matrix),两个下标分别表示矩阵的规模(即行数和列数),图4括号中的商群为矩阵元素所在的所述目标商群(图4中是以整数群Z/dZ为例),⊕表示矩阵的左右拼接,small对应小范数矩阵,p2M表示矩阵位于所述目标矩阵空间。如图4所示,流程400可以包括:
步骤410,生成公钥。
第一方的计算设备可以生成私钥S、A、误差项e,其中,A可作为与私钥S匹配的公钥的第一部分,误差项e为小范数矩阵。然后,第一方的计算设备可按b=AS+e计算所述公钥的第二部分b,所述公钥可对第二方公开。
步骤420,获得第一小范数矩阵R。
步骤430,计算第一密文矩阵。
第一方的计算设备可以按计算RA得到X,计算Rb+M1得到Y。在一些实施例中,如图4所示,第一方的计算设备可以将拼接X和Y得到的(X,Y)作为第一密文矩阵发送给第二方的计算设备。在一些实施例中,第一方的计算设备也可以将X和Y直接作为(2个)第一密文矩阵发送给第二方的计算设备。
步骤440,获得第二小范数矩阵H0和第二输出映射矩阵H1。
步骤450,计算第二密文矩阵。
步骤460,计算待近似矩阵V。
步骤470,近似得到第一输出映射矩阵。
当满足以及b=AS+e,可以证明(-ST,I)U=M1M2+eT(RTM2+H0)-H1成立(I表示单位矩阵)。其中,由于e、R、H0均为小范数矩阵,它们的运算结果仍可以是小范数矩阵。当eT(RTM2+H0)的元素数值小于目标矩阵空间中矩阵的元素的数值尺度l1(例如,小于0.5、0.01倍或更小倍的l1,l1=p2l0)时,在数值上eT(RTM2+H0)相对M1M2-H1而言是可忽略的扰动,故第一方的计算设备可以通过将V近似到目标矩阵空间中最接近的矩阵上,而将eT(RTM2+H0)去掉,进而将目标矩阵空间中最接近V(即(-ST,I)U的计算结果)的矩阵确定为第一输出映射矩阵(等于M1M2-H1)。
在一些实施例中,即便无法满足eT(RTM2+H0)的每个矩阵元素均小于目标矩阵空间对应的数值尺度l1时,也可以将V近似到目标矩阵空间中最接近的矩阵上,只要近似后的矩阵与M1M2-H1的差异在工程允许的范围内即可。根据工程应用的大多数情况,这里不妨假设目标商群为整数群Z/dZ,按照近似的理想情况,若满足eT(RTM2+H0)的每个矩阵元素小于0.5p2这一条件,如此通过四舍五入(即将每个矩阵元素小于0.5p2的部分舍去且大于0.5p2的部分提高至p2)可以得到M1M2-H1。那么,结合每个矩阵元素小于0.5p2的理想条件以及矩阵规模,可以计算出eT(RTM2+H0)的范数要求(即小于某个阈值)。另外,M2的范数范围可以根据目标商群的最大元素以及矩阵规模计算得到。进而,根据eT(RTM2+H0)的范数要求、M2的范数范围,可以确定小范数矩阵e、R、T的范数要求(即小于某个阈值)。通过试验发现,当随机生成e、R、T并约束e、R、T的范数均小于p以及p大于q(如p大于10q或更大倍的q)时,eT(RTM2+H0)中的元素超过0.5p2的概率较低,即eT(RTM2+H0)中只会出现少量(相对矩阵规模而言)数值超过0.5p2的元素。因此,将目标矩阵空间中最接近V的矩阵确定为第一输出映射矩阵(等于M1M2-H1)是可行的。
可以理解,参与运算的各个小范数矩阵对应的阈值可以基于p确定,阈值越小,计算结果的准确度越高,但是数据的安全性也会变差,反之,阈值越高,计算结果的准确度下降,但数据的安全性提高。在实践中,可以基于需要设置各小范数矩阵对应的阈值,以满足现实需要。
如图4所示,第一方和第二方的计算设备间交互的矩阵包括第一密文矩阵和第二密文矩阵,其中,第一密文矩阵包括2个m×n1维的矩阵P1和P2,第二密文矩阵为2n1×n2维的矩阵,双方总共需要传输2mn1+2n1n2个矩阵元素。以所述目标商群为Z/dZ且数值存储采用二进制为例,双方总共需要使用(2mn1+2n1n2)log2d位(bit)来传输第一密文矩阵和第二密文矩阵。
图5为根据本说明书一些实施例所示的涉及第三方服务器的矩阵乘法协议的原理示意图。
如图5所示,第一方的计算设备存储有第一私密矩阵a,第二方的计算设备存储有第二私密矩阵b。通过运行矩阵乘法协议,第一方的计算设备获得ab的第一分片c0,第二方的计算设备获得ab的第二分片c1。下面介绍详细的交互过程:
第三方服务器随机生成待发送给第一方的计算设备的第一随机矩阵u,以及待发送给第二方的计算设备的第二随机矩阵v。第三方服务器计算uv,并将uv拆分(具体可将每个矩阵元素按群加法拆分)成待发送给第一方的计算设备的第一分片z0,以及待发送给第二方的计算设备的第二分片z1。即,u、v、z0、z1满足uv=z0+z1。
第三方服务器将第一随机矩阵u和第一分片z0发送给第一方的计算设备,将第二随机矩阵v和第二分片z1发送给第二方的计算设备。
第一方的计算设备计算a-u(记为e),并将e发送给第二方的计算设备。第二方的计算设备计算b-v(记为f),并将f发送给第一方的计算设备。
第一方的计算设备计算uf+z0,作为ab的第一分片c0。第二方的计算设备计算eb+z1,作为ab的第二分片c1。可以推算,c0+c1=uf+eb+z0+z1=uf+eb+uz=u(b-v)+(a-u)b+uz=ab,即c0+c1=ab。
如图5所示,假设a为n1×m维的矩阵且b为m×n2维的矩阵,则:u和e为n1×m维的矩阵,v和f为m×n2维的矩阵,z0和z1为n1×n2维的矩阵。第三方服务器与第一方/第二方的计算设备之间以及第一方和第二方的计算设备之间交互的矩阵包括u、v、z0、z1、e、f,各方总共需要传输2mn1+2mn2+2n1n2个矩阵元素。以矩阵元素所在的商群为Z/qZ(即所述初始商群)为例且数值存储采用二进制为例,各方总共需要使用(2mn1+2mn2+2n1n2)log2q位(bit)来传输矩阵。可以证明,当时,由于第三方服务器的加入,数据传输量明显增加(反映在2mn2这一项,通常情况下d相对q的放大倍数p2使得log2q和log2d对大小关系的影响接近)。例如,在分布式神经网络训练场景下,神经网络输入层的特征维度(输入层节点数量,即m)可以达到几千万,第一隐层的节点数量(即n2)可以达到几千,单个批次的样本数量(即n1)通常为几十(样本不分批次训练时,n1=1)。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,第一方的计算设备可以对X和Y进行拼接,也可以不对X和Y进行拼接。
图6是根据本说明书一些实施例所示的保护两方数据隐私的协同计算***的模块图。***600可以在第一方的计算设备上实现。如图6所示,***600可以包括第一输入映射矩阵获得模块610、第一小范数矩阵获得模块620、第一密文矩阵计算模块630、第一发送模块640、第一接收模块650、待近似矩阵计算模块660、近似模块670和第一输出矩阵获得模块680。
第一输入映射矩阵获得模块610可以用于将第一私密矩阵P1中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵M1。
第一小范数矩阵获得模块620可以用于获得第一小范数矩阵R。
第一密文矩阵计算模块630可以用于将第一输入映射矩阵M1、第一小范数矩阵R以及与私钥S匹配的公钥进行第一运算,得到第一密文矩阵。
第一发送模块640可以用于将第一密文矩阵发送给第二方的计算设备,以使第二方的计算设备获得第二密文矩阵U。
第一接收模块650可以用于从第二方的计算设备接收第二密文矩阵U。
待近似矩阵计算模块660可以用于将第二密文矩阵U以及私钥S进行第三运算,得到待近似矩阵V。
近似模块670可以用于将目标矩阵空间中最接近待近似矩阵V的矩阵确定为第一输出映射矩阵。
第一输出矩阵获得模块680可以用于将第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积P1P2的第一分片。
关于***600及其模块的更多细节,可以参考图2及其相关描述,这里不再赘述。
图7是根据本说明书一些实施例所示的保护两方数据隐私的协同计算***的模块图。***700可以在第二方的计算设备上实现。如图7所示,***700可以包括第二输入映射矩阵获得模块710、第二小范数矩阵获得模块720、第二接收模块730、第二获得模块740、第二密文矩阵计算模块750和第二发送模块760。
第二输入映射矩阵获得模块710可以用于将第二私密矩阵P2中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵M2。
第二小范数矩阵获得模块720可以用于获得第二小范数矩阵H0。
第二接收模块730可以用于从第一方的计算设备接收第一密文矩阵。
第二获得模块740可以用于获得第二输出映射矩阵H1以及作为目标乘积P1P2的第二分片的第二输出矩阵。
第二密文矩阵计算模块750可以用于将第一密文矩阵、第二输入映射矩阵M2、第二小范数矩阵H0、第二输出映射矩阵H1以及与私钥S匹配的公钥进行第二运算,得到第二密文矩阵V。
第二发送模块760可以用于将第二密文矩阵V发送给第一方的计算设备,以使第一方的计算设备获得作为目标乘积P1P2的第一分片的第一输出矩阵。
关于***700及其模块的更多细节,可以参考图3及其相关描述,这里不再赘述。
应当理解,图6、图7所示的***及其模块可以利用各种方式来实现。例如,在一些实施例中,***及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和***可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的***及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于***及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解***的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子***与其他模块连接。例如,在一些实施例中,图6所示的待近似矩阵计算模块660和近似模块670可以是一个***中的不同模块,也可以是一个模块实现这两个模块的功能。又如,在一些实施例中,图7所示的第二密文矩阵计算模块750和第二发送模块760可以是两个模块,也可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)提供了以秘密分享方式计算两方私密矩阵乘积的方法,可以有效保护双方数据隐私;(2)无需第三方协助,且可以有效减小数据传输量。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“***”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行***、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、PythoN等,常规程序化编程语言如C语言、VisualBasic、FortraN2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如PythoN、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (14)
1.一种保护两方数据隐私的协同计算方法,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵中的元素和所述第二私密矩阵中的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述方法由所述第一方的计算设备执行,其包括:
将第一私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵;
获得第一小范数矩阵,所述第一小范数矩阵的范数小于第一阈值且所述第一小范数矩阵的元素属于目标商群;
将所述第一输入映射矩阵、所述第一小范数矩阵以及与所述私钥匹配的公钥进行第一运算,得到第一密文矩阵;
将所述第一密文矩阵发送给所述第二方的计算设备,以使:所述第二方的计算设备将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及所述公钥进行第二运算,得到第二密文矩阵;其中,所述第二输入映射矩阵的元素属于目标商群且其数值相对所述第二私密矩阵的元素数值放大了p倍,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群,所述第二输出映射矩阵存储于所述第二方的计算设备,所述第二输出映射矩阵的元素属于目标商群且其数值缩小p2倍后仍属于所述目标商群;
从所述第二方的计算设备接收所述第二密文矩阵;
将所述第二密文矩阵以及所述私钥进行第三运算,得到待近似矩阵;
将目标矩阵空间中最接近所述待近似矩阵的矩阵确定为第一输出映射矩阵;所述目标矩阵空间中矩阵的元素属于所述目标商群且其数值缩小p2倍后仍属于所述目标商群;
将所述第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积的第一分片,所述目标乘积为所述第一私密矩阵和所述第二私密矩阵的乘积。
2.如权利要求1所述的方法,其中,所述公钥基于所述私钥和误差项得到,所述误差项的范数小于第三阈值。
3.如权利要求2所述的方法,其中,所述初始商群为整数群Z/qZ,所述目标商群为整数群Z/p2qZ,其中,p大于q;所述第一小范数矩阵、所述第二小范数矩阵和所述误差项的范数小于p。
4.如权利要求1所述的方法,其中,所述将所述第一输入映射矩阵、所述第一小范数矩阵以及与所述私钥匹配的公钥进行第一运算,包括:
计算RA,得到X;
计算Rb+M1,得到Y;
其中,A表示所述公钥的第一部分,b表示所述公钥的第二部分,b=AS+e,S表示所述私钥,e表示误差项,R表示所述第一小范数矩阵,M1表示所述第一输入映射矩阵,(X,Y)表示所述第一密文矩阵。
6.一种保护两方数据隐私的协同计算***,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵中的元素和所述第二私密矩阵中的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述***在所述第一方的计算设备上执行,其包括:
第一输入映射矩阵获得模块,用于将第一私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第一输入映射矩阵;
第一小范数矩阵获得模块,用于获得第一小范数矩阵,所述第一小范数矩阵的范数小于第一阈值且所述第一小范数矩阵的元素属于目标商群;
第一密文矩阵计算模块,用于将所述第一输入映射矩阵、所述第一小范数矩阵以及与所述私钥匹配的公钥进行第一运算,得到第一密文矩阵;
第一发送模块,用于将所述第一密文矩阵发送给所述第二方的计算设备,以使:所述第二方的计算设备将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及所述公钥进行第二运算,得到第二密文矩阵;其中,所述第二输入映射矩阵的元素属于目标商群且其数值相对所述第二私密矩阵的元素数值放大了p倍,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群,所述第二输出映射矩阵存储于所述第二方的计算设备,所述第二输出映射矩阵的元素属于目标商群且其数值缩小p2倍后仍属于所述目标商群;
第一接收模块,用于从所述第二方的计算设备接收所述第二密文矩阵;
待近似矩阵计算模块,用于将所述第二密文矩阵以及所述私钥进行第三运算,得到待近似矩阵;
近似模块,用于将目标矩阵空间中最接近所述待近似矩阵的矩阵确定为第一输出映射矩阵;所述目标矩阵空间中矩阵的元素属于所述目标商群且其数值缩小p2倍后仍属于所述目标商群;
第一输出矩阵获得模块,用于将所述第一输出映射矩阵的元素数值缩小p2倍,得到第一输出矩阵并将其作为目标乘积的第一分片,所述目标乘积为所述第一私密矩阵和所述第二私密矩阵的乘积。
7.一种保护两方数据隐私的协同计算装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如权利要求1~5中任一项所述的方法。
8.一种保护两方数据隐私的协同计算方法,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵的元素和所述第二私密矩阵的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述方法由所述第一方的计算设备执行,其包括:
将第二私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵;
获得第二小范数矩阵,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群;
从所述第一方的计算设备接收第一密文矩阵;
获得第二输出映射矩阵以及作为目标乘积的第二分片的第二输出矩阵;其中,所述第二输出映射矩阵的元素数值相对所述第二输出矩阵的元素数值放大了p2倍,所述第二输出映射矩阵的元素和所述第二输出矩阵的元素属于所述目标商群;
将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及与所述私钥匹配的公钥进行第二运算,得到第二密文矩阵;
将所述第二密文矩阵发送给所述第一方的计算设备,以使所述第一方的计算设备获得作为所述目标乘积的第一分片的第一输出矩阵。
9.如权利要求8所述的方法,其中,所述公钥基于所述私钥和误差项得到,所述误差项的范数小于第三阈值。
10.如权利要求9所述的方法,其中,所述第二小范数矩阵和所述误差项的范数小于p。
11.如权利要求8所述的方法,其中,所述第一密文矩阵(X,Y)=(RA,Rb+M1),其中,(X,Y)表示所述第一密文矩阵,A表示所述公钥的第一部分,b表示所述公钥的第二部分,b=AS+e,S表示所述私钥,e表示错误项,R表示范数小于第一阈值的第一小范数矩阵,M1表示第一输入映射矩阵,所述第一输入映射矩阵的元素数值相对所述第一私密矩阵的元素数值放大了p倍;
所述将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及与所述私钥匹配的公钥进行第二运算,包括:
12.如权利要求8所述的方法,其中,所述获得第二输出映射矩阵以及作为目标乘积的第二分片的第二输出矩阵,包括:获得目标矩阵空间中的矩阵作为所述第二输出映射矩阵,所述目标矩阵空间中矩阵的元素属于所述目标商群且其数值缩小p2倍后仍属于所述目标商群;
将所述第二输出映射矩阵的元素数值缩小p2倍,得到所述第二输出矩阵。
13.一种保护两方数据隐私的协同计算***,其中,第一方的计算设备存储有第一私密矩阵和私钥,第二方的计算设备存储有第二私密矩阵,所述第一私密矩阵的元素和所述第二私密矩阵的元素属于初始商群,所述私钥的元素属于目标商群,所述目标商群大于所述初始商群;所述***在所述第一方的计算设备上实现,其包括:
第二输入映射矩阵获得模块,用于将第二私密矩阵中元素提升到目标商群且将其数值放大p倍,得到第二输入映射矩阵;
第二小范数矩阵获得模块,用于获得第二小范数矩阵,所述第二小范数矩阵的范数小于第二阈值且所述第二小范数矩阵的元素属于目标商群;
第二接收模块,用于从所述第一方的计算设备接收第一密文矩阵;
第二获得模块,用于获得第二输出映射矩阵以及作为目标乘积的第二分片的第二输出矩阵;其中,所述第二输出映射矩阵的元素数值相对所述第二输出矩阵的元素数值放大了p2倍,所述第二输出映射矩阵的元素和所述第二输出矩阵的元素属于所述目标商群;
第二密文矩阵计算模块,用于将所述第一密文矩阵、第二输入映射矩阵、第二小范数矩阵、第二输出映射矩阵以及与所述私钥匹配的公钥进行第二运算,得到第二密文矩阵;
第二发送模块,用于将所述第二密文矩阵发送给所述第一方的计算设备,以使所述第一方的计算设备获得作为所述目标乘积的第一分片的第一输出矩阵。
14.一种保护两方数据隐私的协同计算装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如权利要求8~12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010587170.XA CN111475854B (zh) | 2020-06-24 | 2020-06-24 | 保护两方数据隐私的协同计算方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010587170.XA CN111475854B (zh) | 2020-06-24 | 2020-06-24 | 保护两方数据隐私的协同计算方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475854A CN111475854A (zh) | 2020-07-31 |
CN111475854B true CN111475854B (zh) | 2020-10-20 |
Family
ID=71765294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010587170.XA Active CN111475854B (zh) | 2020-06-24 | 2020-06-24 | 保护两方数据隐私的协同计算方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475854B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859035B (zh) * | 2020-08-12 | 2022-02-18 | 华控清交信息科技(北京)有限公司 | 数据处理方法及装置 |
CN111723404B (zh) * | 2020-08-21 | 2021-01-22 | 支付宝(杭州)信息技术有限公司 | 联合训练业务模型的方法及装置 |
CN112800466B (zh) * | 2021-02-10 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护的数据处理方法、装置和服务器 |
CN112561085B (zh) * | 2021-02-20 | 2021-05-18 | 支付宝(杭州)信息技术有限公司 | 一种基于多方安全计算的多分类模型训练方法和*** |
CN113094739B (zh) * | 2021-03-05 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 基于隐私保护的数据处理方法、装置和服务器 |
CN112685788B (zh) * | 2021-03-08 | 2021-05-28 | 支付宝(杭州)信息技术有限公司 | 数据处理方法和装置 |
CN113094763B (zh) * | 2021-04-12 | 2022-03-29 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的选择问题处理方法和*** |
CN113158254B (zh) * | 2021-05-18 | 2022-06-24 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的选择问题处理方法和*** |
CN113312641B (zh) * | 2021-06-02 | 2023-07-18 | 杭州趣链科技有限公司 | 多点多方的数据交互方法、***、电子装置和存储介质 |
CN114021198B (zh) * | 2021-12-29 | 2022-04-08 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的确定共有数据的方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130014266A1 (en) * | 2011-07-07 | 2013-01-10 | Mitel Networks Corporation | Collaboration privacy |
CN105007270B (zh) * | 2015-07-13 | 2018-04-10 | 西安理工大学 | 格上多权威的密钥策略基于属性的加密方法 |
CN107317666B (zh) * | 2017-05-25 | 2020-04-10 | 深圳前海大道金融服务有限公司 | 一种支持浮点运算的并行全同态加解密方法 |
CN109426861A (zh) * | 2017-08-16 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 数据加密、机器学习模型训练方法、装置及电子设备 |
CN108055118B (zh) * | 2017-12-11 | 2020-06-05 | 东北大学 | 一种隐私保护的图数据交集计算方法 |
CN108280366B (zh) * | 2018-01-17 | 2021-10-01 | 上海理工大学 | 一种基于差分隐私的批量线性查询方法 |
CN108985929B (zh) * | 2018-06-11 | 2022-04-08 | 创新先进技术有限公司 | 训练方法、业务数据分类处理方法及装置、电子设备 |
CN110210248B (zh) * | 2019-06-13 | 2020-12-25 | 重庆邮电大学 | 一种面向隐私保护的网络结构去匿名化***及方法 |
CN111162896B (zh) * | 2020-04-01 | 2020-06-26 | 支付宝(杭州)信息技术有限公司 | 双方联合进行数据处理的方法及装置 |
CN111178549B (zh) * | 2020-04-10 | 2020-07-07 | 支付宝(杭州)信息技术有限公司 | 保护数据隐私的双方联合训练业务预测模型的方法和装置 |
CN111177790B (zh) * | 2020-04-10 | 2020-07-10 | 支付宝(杭州)信息技术有限公司 | 保护两方数据隐私的协同计算方法、***及装置 |
CN111241570B (zh) * | 2020-04-24 | 2020-07-17 | 支付宝(杭州)信息技术有限公司 | 保护数据隐私的双方联合训练业务预测模型的方法和装置 |
-
2020
- 2020-06-24 CN CN202010587170.XA patent/CN111475854B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111475854A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475854B (zh) | 保护两方数据隐私的协同计算方法及*** | |
CN111177790B (zh) | 保护两方数据隐私的协同计算方法、***及装置 | |
CN111512589B (zh) | 用于利用spdz的快速安全多方内积的方法 | |
CN113158239B (zh) | 保护数据隐私的选择问题处理方法 | |
RU2534944C2 (ru) | Способ обеспечения безопасности связи в сети, используемые для этого устройство связи, сеть и компьютерная программа | |
CN111539041B (zh) | 一种安全选择方法和*** | |
CN109067538B (zh) | 安全协议方法、计算机设备及存储介质 | |
JP7259876B2 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
CN113761469B (zh) | 一种保护数据隐私的最高位进位计算方法 | |
CN113591113B (zh) | 一种隐私计算方法、装置、***及电子设备 | |
CN112070222A (zh) | 用于联邦学习的处理架构、加速器及方法 | |
EP3944553A1 (en) | Method and system for key agreement utilizing semigroups | |
CN114021734B (zh) | 用于联邦学习和隐私计算的参数计算装置、***及方法 | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
EP3369207B1 (en) | An information secure protocol for mobile proactive secret sharing with near-optimal resilience | |
Wu et al. | On the improvement of wiener attack on rsa with small private exponent | |
EP3379408A1 (en) | Updatable random functions | |
CN113094763A (zh) | 一种保护数据隐私的选择问题处理方法和*** | |
CN116032639A (zh) | 基于隐私计算的消息推送方法及装置 | |
CN113158254B (zh) | 一种保护数据隐私的选择问题处理方法和*** | |
CN112989421A (zh) | 一种安全选择问题处理方法和*** | |
CN112990260A (zh) | 一种基于多方安全计算的模型评估方法和*** | |
CN113626841A (zh) | 基于多方安全计算的选择问题处理方法 | |
CN113609503B (zh) | 一种保护数据隐私的最高位进位计算方法 | |
Selvi et al. | Hyper elliptic curve based homomorphic encryption scheme for cloud data security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40034544 Country of ref document: HK |