基于全同态加密的多方计算方法、系统及相关设备与流程

文档序号:30598125发布日期:2022-07-01 21:06阅读:184来源:国知局
基于全同态加密的多方计算方法、系统及相关设备与流程

1.本技术涉及数据加密技术领域和数据处理技术领域,具体涉及一种基于全同态加密的多方计算方法、系统及相关设备。


背景技术:

2.随着人工智能的发展,数据的价值越来越受到重视。并且不同领域的数据往往存在着很大的互补性,不同组织间有着有很大的数据融合需求。然而基于隐私保护、自身利益和政策监管等因素考虑,各组织间很难将数据进行直接聚合。这种数据孤岛问题给人工智能研究者们提出了很大挑战。
3.近年来,在隐私学习方面,以联邦学习为例,联邦学习利用密码学、机器学习等知识,力求在保证数据隐私安全及合法合规的前提下提升ai模型的实际效果。同态加密因为其支持在密文上的直接计算,已成为业界联邦学习中使用最为广泛的隐私保护技术,但联邦学习的计算效率和通信量仍然很大程度受同态加密效率和密文长度的影响,因此,如何提升算法运算效率的问题亟待解决。


技术实现要素:

4.本技术实施例提供了一种基于全同态加密的多方计算方法、系统及相关设备,可以提算法运算效率。
5.第一方面,本技术实施例提供一种基于全同态加密的多方计算方法,应用于多方计算系统,所述多方计算系统包括1个协助方和n个参与方,所述n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,所述方法包括:通过所述协助方生成全同态加密的公钥和私钥;通过所述n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,对所述内积进行处理,得到第一内积结果和第二内积结果,利用所述公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第二加密内积结果;通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果;通过所述n个参与方根据所述部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过所述n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据;通过所述协助方利用所述私钥解密所述n个第二密文梯度数据,得到n个明文梯度数据;通过所述n个参与方中的每一参与方根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据所述真实梯度数据分别更新对应的本地模型的模型参数;
通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值;根据所述密文损失值控制模型训练操作。
6.第二方面,本技术实施例提供了一种基于全同态加密的多方计算系统,所述多方计算系统包括1个协助方和n个参与方,所述n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,其中,所述协助方,用于生成全同态加密的公钥和私钥;所述n个参与方中的每一参与方,用于各自本地计算其本地模型的模型参数与特征数据之间的内积,对所述内积进行处理,得到第一内积结果和第二内积结果,利用所述公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第二加密内积结果;所述数据需求方,用于将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果;所述n个参与方,用于根据所述部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过所述n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据;所述协助方,用于利用所述私钥解密所述n个第二密文梯度数据,得到n个明文梯度数据;所述n个参与方中的每一参与方,用于根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据所述真实梯度数据分别更新对应的本地模型的模型参数;所述数据需求方,用于对所述n个第二加密内积结果进行处理,得到密文损失值,以及根据所述密文损失值控制模型训练操作。
7.第三方面,本技术实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本技术实施例第一方面中的步骤的指令。
8.第四方面,本技术实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本技术实施例第一方面中所描述的部分或全部步骤。
9.第五方面,本技术实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本技术实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
10.实施本技术实施例,具备如下有益效果:可以看出,本技术实施例中所描述的基于全同态加密的多方计算方法、系统及相关设备,应用于多方计算系统,多方计算系统包括1个协助方和n个参与方,n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,通过协助方生成全同态加密的公钥和私钥,通过n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,对内积进行处理,得到第一内积结果和第二内积结果,利用公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第
二加密内积结果,通过数据需求方将n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果,通过n个参与方根据部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据,通过协助方利用私钥解密n个第二密文梯度数据,得到n个明文梯度数据,通过n个参与方中的每一参与方根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据真实梯度数据分别更新对应的本地模型的模型参数,通过数据需求方对n个第二加密内积结果进行处理,得到密文损失值,根据密文损失值控制模型训练操作,有助于提升算法运算效率。
附图说明
11.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
12.图1是本技术实施例提供的一种用于实现基于全同态加密的多方计算方法的多方计算系统的结构示意图;图2是本技术实施例提供的一种基于全同态加密的多方计算方法的流程示意图;图3是本技术实施例提供的另一种基于全同态加密的多方计算方法的流程示意图;图4是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
13.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
14.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
15.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
16.本技术实施例所描述计算节点可以为电子设备,电子设备可以包括智能手机(如android手机、ios手机、windows phone手机等)、平板电脑、掌上电脑、行车记录仪、交通指挥平台、服务器、笔记本电脑、移动互联网设备(mid,mobile internet devices)或穿戴式设备(如智能手表、蓝牙耳机)等,上述仅是举例,而非穷举,包含但不限于上述电子设备,该
电子设备也可以为云服务器,或者,该电子设备也可以为计算机集群。
17.本技术实施例中,同态加密的目标是创建一种加密算法,允许对密文执行任意计算,解密后与明文做同样运算得到的结果一致。根据支持的密文计算类型,可分为半同态加密、部分同态加密和全同态加密。其中,只支持一种运算的加密算法称为半同态加密,如paillier(只支持加法运算),ras(只支持乘法);能同时支持两种运算,但对计算电路深度有限制的加密算法称为部分同态加密,如bgn方案。能支持任意运算的加密算法叫做全同态加密算法。全同态加密的实现目前都遵循gentry提出的蓝图,即先构造一类部分同态加密方案,然后通过自举(bootstrapping)将其转换为全同态加密。实际中使用的大多是(层次型)的部分同态加密算法,如bgv/bfv、ckks等。下文的全同态加密算法均指此类算法。
18.下面对本技术实施例进行详细介绍。
19.请参阅图1,图1是本技术实施例提供的一种用于实施基于全同态加密的多方计算方法的多方计算系统的架构示意图,如图所示,本多方计算系统可以包括1个协助方和n个参与方,所述n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,n-1个数据提供方分别为:数据提供方1、数据提供方2、

、数据提供方n-1。
20.基于上述多方计算系统,可以包括如下功能:所述协助方,用于生成全同态加密的公钥和私钥;所述n个参与方中的每一参与方,用于各自本地计算其本地模型的模型参数与特征数据之间的内积,对所述内积进行处理,得到第一内积结果和第二内积结果,利用所述公钥分别对各个参与方的第一内积结果和第二内积结果进行全同态加密处理,得到n个第一加密内积结果和n个第二加密内积结果;所述数据需求方,用于将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果;所述n个参与方,用于根据所述部分梯度结果以及其对应的本地明文特征数据进行全同态加密处理,得到n个第一密文梯度数据,通过所述n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据;所述协助方,用于利用所述私钥解密所述n个第二密文梯度数据,得到n个明文梯度数据;所述n个参与方中的每一参与方,用于根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据所述真实梯度数据分别更新对应的本地模型的模型参数;所述数据需求方,用于对所述n个第二加密内积结果进行处理,得到密文损失值,以及根据所述密文损失值控制模型训练操作。
21.可选的,所述根据所述密文损失值控制模型训练操作,包括:在所述密文损失值小于预设阈值时,确定所述本地模型收敛,则停止所述本地模型的迭代过程,以及通知其他参与方均停止迭代过程。
22.可选的,所述系统还具体用于:获取待计算数据,将所述待计算数据分块处理成明文数据向量;根据所述明文数据向量、所述明文数据向量对应的向量长度和预设运算容量,将所述明文数据向量转化为多个短向量,所述多个短向量的向量长度之和等于所述明文数据
向量对应的向量长度;根据所述多个短向量确定所述特征数据。
23.可选的,所述对所述内积进行处理,得到第一内积结果和第二内积结果,包括:通过参与方i获取其对应的内积i,确定所述内积i与预设第一系数之间的乘积,根据所述乘积确定所述参与方i的第一内积结果,所述参与方i为所述n-1个参与方中的任一参与方;确定所述内积i的平方值,根据所述平方值确定所述参与方i的第二内积结果。
24.可选的,所述通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果,包括:通过所述数据需求方将所述n个第一加密内积结果进行汇总求和,得到第一参考加密内积结果;根据预设第二系数确定第一标签加密值;根据所述第一参考加密内积结果和所述第一标签加密值确定所述全同态加密的部分梯度结果。
25.可选的,所述通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值,包括:通过所述数据需求方将所述n个第二加密内积结果进行汇总求和,得到第二参考加密内积结果;根据预设第三系数确定第二标签加密值;根据所述第二参考加密内积结果和所述第二标签加密值确定所述密文损失值。
26.本实施例的多方计算系统的各个参与方或者协助方可以为硬件模块或者程序模块。
27.举例说明下,以联邦学习算法为例,全同态的单个密文的加密效率慢、密文长度大且随着需要支持的乘法次数增加,这些缺点会越发明显,直接应用到联邦学习中会有很大的效率问题,因此,主流联邦学习架构中多采用半同态加密方案,一方面单个明文的半同态加密效率比全同态加密高很多,另一方面联邦学习的很多算法通过改造,可以只需要用到密文加法,而无需密文乘法。然而,目前联邦学习的计算效率和通信量仍然很大程度地受同态加密效率和密文长度的影响。
28.而本技术实施例中,针对联邦学习算法,结合全同态高吞吐高压缩的特点,且能够使得联邦学习中最多需要执行一次密文乘法运算,能够针对联邦学习架构,克服了全同态加密单个明文加密效率低且密文长度大以及实际应用效率慢的问题,进而,极大提升了联邦学习的模型训练效率,同时降低了联邦学习过程中各参与方的通信量。
29.请参阅图2,图2是本技术实施例提供的一种基于全同态加密的多方计算方法的流程示意图,应用于图1所示的多方计算系统,所述多方计算系统包括1个协助方和n个参与方,所述n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,如图所示,本多方计算方法包括:201、通过所述协助方生成全同态加密的公钥和私钥。
30.具体实现中,协助方可以生成全同态加密的公钥和私钥,并将公钥分别发送给n个参与方中的每一参与方。
31.202、通过所述n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,对所述内积进行处理,得到第一内积结果和第二内积结果,利用所述公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第二加密内积结果。
32.其中,本地模型可以包括以下至少一种:联邦学习模型、深度神经网络学习模型、隐私计算模型等等,在此不做限定。不同的本地模型则对应不同的模型参数,模型参数可以用于实现模型的精度调节或者模型的运算效率调节。不同的模型可以对应不同的特征数据。n个参与方对应的本地模型可以不同。
33.其中,特征数据可以理解为样本的各个维度的特征,即用于描述一个样本的特征。举例说明下如:一个叫张三的人,他的年龄是25岁,身高180cm,收入1000元,张三是一个样本,(年龄,身高,收入)是他的特征,(25,180,1000)是这些特征的取值,很多个样本和其特征的取值构成了这里面的特征数据。模型参数就是(年龄,性别,收入)分别应该对应什么样的权重(w1,w2,w3),使得w1*25+w2*180+w3*1000(即模型参数与特征数据间的内积)的值与目标值最接近,如目标1,则可计算上述1与上述内积的结果最接近,当然,上述内积结果之后还可以有一些其他处理。
34.具体实现中,n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,再对内积进行不同处理,得到第一内积结果和第二内积结果,利用公钥分别对各个参与方的第一内积结果和第二内积结果进行全同态加密处理,得到n个第一加密内积结果和n个第二加密内积结果,再由各个数据提供方将其对应的第一加密内积结果和第二加密内积结果发送给数据需求方。为使后续计算只涉及最多一次密文乘法,例如,可以将内积乘以0.25,得到第一内积结果,以及计算内积的平方,得到第二内积结果,并将这两类结果利用同态加密公钥进行加密。
35.可选的,上述步骤202,对所述内积进行处理,得到第一内积结果和第二内积结果,可以包括如下步骤:21、通过参与方i获取其对应的内积i,确定所述内积i与预设第一系数之间的乘积,根据所述乘积确定所述参与方i的第一内积结果,所述参与方i为所述n-1个参与方中的任一参与方;22、确定所述内积i的平方值,根据所述平方值确定所述参与方i的第二内积结果。
36.其中,预设第一系数可以预先设置或者系统默认。具体实现中,为了避免使用非线性运算,可以将原始逻辑回归损失函数计算公式进行逼近,例如,可以用泰勒展开进行逼近得到预设第一系数。此时,预设第一系数即为0.25。
37.具体实现中,以参与方i为例,参与方i则可以为n-1个参与方中的任一参与方,进而,可以通过参与方i获取其对应的内积i,确定内积i与预设第一系数之间的乘积,可以将该乘积确定为参与方i的第一内积结果,再确定内积i的平方值,将该平方值确定为参与方i的第二内积结果。
38.203、通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果。
39.具体实现中,数据需求方可以将n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果,例如,可以对n个参与方加密的0.25倍内积汇总求和,并计算-0.5倍
的标签加密值,两个密文求和,得到部分梯度结果,并将加密的部分梯度结果发送给数据提供方b。
40.可选的,上述步骤203,通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果,可以包括如下步骤:31、通过所述数据需求方将所述n个第一加密内积结果进行汇总求和,得到第一参考加密内积结果;32、根据预设第二系数确定第一标签加密值;33、根据所述第一参考加密内积结果和所述第一标签加密值确定所述全同态加密的部分梯度结果。
41.具体实现中,预设第二系数可以预先设置或者系统默认,第一标签加密值可以预先设置或者系统默认。具体实现中,为了避免使用非线性运算,可以将原始逻辑回归梯度计算公式进行逼近,例如,可以用泰勒展开进行逼近得到预设第二系数。此时,预设第二系数为-0.5。
42.具体的,数据需求方可以将n个第一加密内积结果进行汇总求和,得到第一参考加密内积结果,再获取参考标签加密值,将预设第二系数与参考标签加密值之间的乘积作为第一标签加密值,进而,可以根据第一参考加密内积结果和第一标签加密值确定全同态加密的部分梯度结果,例如,可以将第一参考加密内积结果和第一标签加密值进行求和,得到全同态加密的部分梯度结果。
43.接着,可以通过数据需求方将部分梯度结果发送给各个数据提供方。
44.204、通过所述n个参与方根据所述部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过所述n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据。
45.具体实现中,n个参与方则可以接收部分梯度数据,再利用该部分梯度数据与其对应的本地明文特征数据进行全同态密文运算,即利用该部分梯度数据与其对应的本地明文特征数据进行全同态的密文矩阵乘法运算,得到相应的第一密文梯度数据,再由n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,例如,将每一密文梯度数据加入对应的掩码,得到n个第二密文梯度数据,再通过n个参与方将其对应的第二密文梯度数据发送给协助方。
46.205、通过所述协助方利用所述私钥解密所述n个第二密文梯度数据,得到n个明文梯度数据。
47.具体实现中,协助方可以利用私钥解密n个第二密文梯度数据,得到n个明文梯度数据,再将n个明文梯度数据分别发送给对应的参与方。
48.206、通过所述n个参与方中的每一参与方根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据所述真实梯度数据分别更新对应的本地模型参数。
49.具体实现中,n个参与方中的每一参与方可以根据其对应的明文梯度数据和其对应的掩码进行运算,例如,可以将n个参与方中的每一参与方根据其对应的明文梯度数据减去其对应的掩码,得到真实梯度数据。进而,再根据真实梯度数据分别更新对应的本地模型参数得到真实梯度数据。
50.207、通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值;具体实现中,数据需求方可以对n个第二加密内积结果进行处理,得到密文损失值。
51.可选的,上述步骤207,通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值,可以包括如下步骤:71、通过所述数据需求方将所述n个第二加密内积结果进行汇总求和,得到第二参考加密内积结果;72、根据预设第三系数确定第二标签加密值;73、根据所述第二参考加密内积结果和所述第二标签加密值确定所述密文损失值。
52.具体实现中,预设第三系数可以预先设置或者系统默认,第二标签加密值可以预先设置或者系统默认。具体实现中,为了避免使用非线性运算,可以将原始逻辑回归损失函数计算公式进行逼近,例如,可以用泰勒展开进行逼近得到预设第三系数。此时,预设第三系数为-2。
53.208、根据所述密文损失值控制模型训练操作。
54.具体实现中,密文损失值反映了模型的精度,进而,通过密文损失值反映模型是否训练到位,进而,控制模型训练操作,例如,控制本地模型的模型训练操作,和/或,还可以控制其他参与方的模型训练操作。
55.可选的,上述步骤208,根据所述密文损失值控制模型训练操作,可以包括如下步骤:在所述密文损失值小于预设阈值时,确定所述本地模型收敛,则停止所述本地模型的迭代过程,以及通知其他参与方均停止迭代过程。
56.具体实现中,预设阈值可以预先设置或者系统默认。在密文损失值小于预设阈值时,则可以确定本地模型收敛,则可以停止本地模型的迭代过程,当然,还通知其他参与方也停止迭代过程。反之,在密文损失值大于或等于预设阈值,则说明本地模型不收敛,则可以继续执行步骤202-步骤208,直到本地模型收敛为止。
57.实际应用中,密文计算效率和通信量是联邦学习中的主要性能瓶颈,尽管相较半同态加密,全同态对单个明文的加密效率慢,密文长度也相对较大。但是很多全同态方案中(如bgv、bfv、ckks等)都支持密文“打包”(packing)或称作“批处理”(batching),可以将多个明文加密转换成单个密文。加密后的密文支持执行密文运算、在向量中移动元素等操作。这些同态方案具有较好的代数结构,能够支持单指令多数据流(single instruction multiple data,simd)操作。当加密的数据量足够大时,具有很高的分摊性能。
58.本技术实施例中,以联邦学习为例,考虑到联邦学习算法中多为大数据量级的批次运算,结合全同态加密的高吞吐(同时加密多个明文)和高压缩(加密为一个密文)特点,本技术实施例中,则是可以针对联邦学习架构,极大提升了联邦学习的模型训练效率,同时降低了联邦学习过程中各参与方的通信量。另一方面,全同态加密方案中,每次的批处理明文量是有限的,即slots大小有限(与同态加密的参数配置有关),当一次打包的明文数超过slots时,该密文的使用就会有限制(如无法进行乘法运算),本技术实施例中,则可以利用
分块计算的逻辑,解决该问题。
59.举例说明下,如图3所示,以两方(nodeb(简称b)、nodec(简称c))纵向逻辑回归算法为例,其中,a方为协助方,b方、c方为参与方且c方为数据需求方,b方为数据提供方,只有数据需求方c拥有本次建模的目标标签y(如是否违约、违约次数等),引入第三方(nodea(简称a))用于协助生成同态加密公私钥,及密文的加解密,可以包括如下步骤:1、协助方(a)生成全同态加密公钥和私钥,将公钥发送给nodec和nodeb;2、参与方(b、c)各自本地计算其模型参数和特征数据的内积,为使后续计算只涉及最多一次密文乘法,还需要将内积乘以0.25,以及计算内积的平方,并将两个结果利用同态加密公钥进行加密;其中,对于nodec而言,可以按照如下公式分别计算:和,i表示训练数据中的第i个样本,表示第i个样本nodecc的模型参向量,维度与特征维数一致,且不同样本间的模型参数也是一致的,、表示nodec的两个内积值,对其进行加密得到和;其中,对于nodeb而言,可以按照如下公式分别计算:和,i表示训练数据中的第i个样本,、表示nodeb的两个内积值;3、数据提供方b将加密后的0.25倍内积和内积平方发送给数据需求方c,即将内积值和,再将其加密后得到和,再将其发送给数据需求方c;4、数据需求方c对两方加密的和的0.25倍内积汇总求和,并计算-0.5倍的标签加密值,两个密文求和,得到部分梯度结果,并将加密的部分梯度结果发送给数据提供方b,具体的如下:,其中,表示标签值,并计算部分梯度:,其中,表示部分梯度结果;另外,表示加密的部分梯度结果;5、参与方(b、c)利用加密的部分梯度乘以自己本地明文特征数据,得到密文梯度数据,加入掩码发送给协助方a;其中,nodeb加密计算梯度,即,并加入掩码
,为nodeb的密文梯度数据,为nodeb的本地明文特征数据;其中,nodec加密计算提取,即,并加入掩码,为nodec的密文梯度数据,为nodec的本地明文特征数据;6、协助方a利用私钥解密接收到的梯度,并将梯度发送回给对应参与方,具体可以解密梯度:;7、参与方(b、c)接收解密后的梯度并减去掩码得到真实梯度,利用梯度更新本地模型参数;为nodeb去掉掩码前的梯度;为nodec去掉掩码前的梯度;其中,nodeb可以通过如下公式更新本地模型参数,其中,为nodeb的本地模型参数,为常数,一般在0到1之间,其可以预先设置或者系统默认;其中,nodec可以通过如下公式更新本地模型参数,其中,为nodec的本地模型参数,为常数,一般在0到1之间,其可以预先设置或者系统默认;8、数据需求方c对两方加密的内积平方汇总求和,并计算-2倍的标签加密值,利用图3中公式,得到密文损失,发送给协作者,具体即可对两方加密的和汇总求和得到,并计算:,并计算:其中,表示处理后的标签加密值,loss表示密文损失;9、协助方a解密接收的损失,依据损失值是否小于预设的阈值,判断模型训练是否收敛,若小于,则停止迭代,并将停止信息同步各参与方,各参与方也立刻停止迭代。
60.可选的,在上述步骤201之前,还可以包括如下步骤:a1、获取待计算数据,将所述待计算数据分块处理成明文数据向量;a2、根据所述明文数据向量、所述明文数据向量对应的向量长度和预设运算容量,将所述明文数据向量转化为多个短向量,所述多个短向量的向量长度之和等于所述明文数据向量对应的向量长度;a3、根据所述多个短向量确定所述特征数据。
61.具体实现中,预设运算容量可以预先设置或者系统默认。待计算数据可以理解为需要计算的数据,例如,针对一个人群的统计数据或者一个片区的销售数据,则可以将待计
算数据分块处理成明文数据向量,再根据明文数据向量、明文数据向量对应的向量长度和预设运算容量,按照如下举例方式将明文数据向量转化为多个短向量,多个短向量的向量长度之和等于明文数据向量对应的向量长度,可以将多个短向量作为特征数据,将多个短向量可以分配给不同的参与方。
62.举例说明下,以联邦学习为例,假设联邦学习中批次计算的明文数据向量为data,向量长度为batch,全同态加密方案的单个密文容量(slots)为n,当batch》n时,则可以按照如下方式操作:可以将data按n划分为m个短向量[data1,data2,

,datam],再使得各短向量长度的和相加为batch,且每个短向量的元素个数均小于等于n,例如,可以将batch优先按n划分,不足n时,则剩余的为一个短向量。进而,可以基于该短向量列表的加密运算、向量乘法和加法运算,均只需遍历各短向量对应操作即可。
[0063]
具体实现中,当涉及到密文向量与明文矩阵的乘法运算时(计算梯度时的运算),则可以将明文矩阵的行方向也按照前述划分规则进行划分,与对应短向量进行矩阵乘法运算,最后再将各元素结果求和。
[0064]
进而,本技术实施例,则可以采取上述分块策略,则克服了全同态加密实际应用效率慢的问题,在本地模型为联邦学习模型的时候,还可以极大提升了联邦学习的模型训练效率,且降低了联邦学习过程中各参与方的通信量。
[0065]
本技术实施例中,以联邦学习为例,利用全同态加密高吞吐高压缩的特性,用以实现全同态加密的联邦学习架构,从而极大提升了联邦学习的模型训练效率,同时降低了联邦学习过程中各参与方的通信量。
[0066]
本技术实施例中,利用全同态加密高吞吐高压缩的特性,且以联邦学习算法为例,相当于改造现有联邦学习算法流程(即改造成了只需要一次密文乘法,之前的联邦学习算法流程中需要多次密文乘法计算),且高吞吐即可以一次加密多个明文,以及高压缩即多个明文加密后,可以只用一个密文表示,这样计算的过程中也只需要计算一次,所以,可以提升运算效率。
[0067]
可以看出,本技术实施例中所描述的基于全同态加密的多方计算方法,应用于多方计算系统,多方计算系统包括1个协助方和n个参与方,n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,通过协助方生成全同态加密的公钥和私钥,通过n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,对内积进行处理,得到第一内积结果和第二内积结果,利用公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第二加密内积结果,通过数据需求方将n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果,通过n个参与方根据部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据,通过协助方利用私钥解密n个第二密文梯度数据,得到n个明文梯度数据,通过n个参与方中的每一参与方根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据真实梯度数据分别更新对应的本地模型的模型参数,通过数据需求方对n个第二加密内积结果进行处理,得到密文损失值,根据密文损失值控制模型训练操作,有助于提升算法运算效率。
[0068]
与上述实施例一致地,请参阅图4,图4是本技术实施例提供的一种电子设备的结
构示意图,如图所示,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,应用于多方计算系统,所述多方计算系统包括1个协助方和n个参与方,所述n个参与方中包括1个数据需求方和n-1个数据提供方,n为大于1的整数,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,本技术实施例中,上述程序包括用于执行以下步骤的指令:通过所述协助方生成全同态加密的公钥和私钥;通过所述n个参与方中的每一参与方各自本地计算其本地模型的模型参数与特征数据之间的内积,对所述内积进行处理,得到第一内积结果和第二内积结果,利用所述公钥分别对各个参与方的第一内积结果和第二内积结果进行加密处理,得到n个第一加密内积结果和n个第二加密内积结果;通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,得到全同态加密的部分梯度结果;通过所述n个参与方根据所述部分梯度结果以及其对应的本地明文特征数据进行全同态密文运算,得到n个第一密文梯度数据,通过所述n个参与方将其对应的第一密文梯度数据与其对应的掩码进行处理,得到n个第二密文梯度数据;通过所述协助方利用所述私钥解密所述n个第二密文梯度数据,得到n个明文梯度数据;通过所述n个参与方中的每一参与方根据其对应的明文梯度数据和其对应的掩码进行运算,得到真实梯度数据,并根据所述真实梯度数据分别更新对应的本地模型的模型参数;通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值;根据所述密文损失值控制模型训练操作。
[0069]
可选的,在所述根据所述密文损失值控制模型训练操作方面,上述程序包括用于执行以下步骤的指令:在所述密文损失值小于预设阈值时,确定所述本地模型收敛,则停止所述本地模型的迭代过程,以及通知其他参与方均停止迭代过程。
[0070]
可选的,上述程序还包括用于执行以下步骤的指令:获取待计算数据,将所述待计算数据分块处理成明文数据向量;根据所述明文数据向量、所述明文数据向量对应的向量长度和预设运算容量,将所述明文数据向量转化为多个短向量,所述多个短向量的向量长度之和等于所述明文数据向量对应的向量长度;根据所述多个短向量确定所述特征数据。
[0071]
可选的,在所述对所述内积进行处理,得到第一内积结果和第二内积结果方面,上述程序包括用于执行以下步骤的指令:通过参与方i获取其对应的内积i,确定所述内积i与预设第一系数之间的乘积,根据所述乘积确定所述参与方i的第一内积结果,所述参与方i为所述n-1个参与方中的任一参与方;确定所述内积i的平方值,根据所述平方值确定所述参与方i的第二内积结果。
[0072]
可选的,在所述通过所述数据需求方将所述n个第一加密内积结果进行汇总处理,
得到全同态加密的部分梯度结果方面,上述程序包括用于执行以下步骤的指令:通过所述数据需求方将所述n个第一加密内积结果进行汇总求和,得到第一参考加密内积结果;根据预设第二系数确定第一标签加密值;根据所述第一参考加密内积结果和所述第一标签加密值确定所述全同态加密的部分梯度结果。
[0073]
可选的,在所述通过所述数据需求方对所述n个第二加密内积结果进行处理,得到密文损失值方面,上述程序包括用于执行以下步骤的指令:通过所述数据需求方将所述n个第二加密内积结果进行汇总求和,得到第二参考加密内积结果;根据预设第三系数确定第二标签加密值;根据所述第二参考加密内积结果和所述第二标签加密值确定所述密文损失值。
[0074]
本技术实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
[0075]
本技术实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
[0076]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0077]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0078]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0079]
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0080]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0081]
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0082]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-only memory ,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
[0083]
以上对本技术实施例进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1