同态加密方法、设备、介质及计算机程序产品与流程

文档序号:27976776发布日期:2021-12-15 00:51阅读:157来源:国知局
同态加密方法、设备、介质及计算机程序产品与流程

1.本技术涉及金融科技(fintech)的数据处理技术领域,尤其涉及一种同态加密方法、设备、介质及计算机程序产品。


背景技术:

2.随着金融科技及互联网技术的迅速发展,越来越多的技术(如分布式、大数据、人工智能、区块链blockchain等)应用在金融领域,以实现各种数据处理和业务处理。
3.同态加密是应用非常广的密码学工具,其可以在密文状态下进行数乘运算。然而,在密文数据和明文数据进行数乘运算时,由于密文数据和明文数据通常为大整数(即比特位数较大),其需要大量的模幂运算,从而导致同态加密下密文数乘运算效率过低,进而导致同态加密无法应用于及时性要求高的场景。因此,如何提高同态加密下密文数乘运算的效率,以提高同态加密的适用性,是目前亟需解决的问题。


技术实现要素:

4.本技术的主要目的在于提供一种同态加密方法、设备、介质及计算机程序产品,旨在解决同态加密下密文数乘运算效率过低的技术问题,从而提高同态加密的适用性。
5.为实现上述目的,本技术提供一种同态加密方法,应用于第一设备,所述同态加密方法包括以下步骤:
6.获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据,所述密文数据为对所述明文标量进行同态加密的数据;
7.对所述明文标量中各明文元素进行预设进制的分解,得到各所述明文元素对应的数位序列,一所述数位序列对应一所述明文元素,一所述数位序列包括若干所述预设进制的数位;
8.对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到同态加密结果,并将所述同态加密结果发送至第二设备。
9.可选地,所述对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到同态加密结果的步骤包括:
10.将所述密文数据作为幂运算底数,将一所述数位序列中的若干数位作为幂运算指数;
11.基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干第一幂运算结果;
12.将所述若干第一幂运算结果进行乘法运算,得到一所述明文元素对应的数乘运算结果;
13.返回将一所述数位序列中的若干数位作为幂运算指数的步骤,直至各所述数位序列均进行幂运算;
14.基于各所述明文元素对应的数乘运算结果,确定所述密文数据和所述明文标量对
应的同态加密结果。
15.可选地,所述基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干第一幂运算结果的步骤包括:
16.基于所述幂运算底数和若干所述幂运算指数,获取预先存储的若干幂运算结果,所述预先存储的若干幂运算结果为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干第一幂运算结果。
17.可选地,所述预设进制为二进制,所述基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干第一幂运算结果的步骤包括:
18.将若干所述幂运算指数的数量与当前明文元素的二进制比特位数进行比较,所述当前明文元素为若干所述幂运算指数对应的明文元素;
19.若所述二进制比特位数的一半小于所述数量,则基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前明文元素的二进制数确定预先存储的若干零比特幂运算结果,所述零比特幂运算结果为所述二进制数中比特数为零对应的幂运算结果,所述零比特幂运算结果的幂运算底数为所述密文数据,所述零比特幂运算结果的幂运算指数为所述二进制数中比特数为零对应的二进制位数的负数;
20.将所述最大幂运算结果和所述若干零比特幂运算结果作为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干第一幂运算结果。
21.可选地,所述对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到同态加密结果的步骤之前,还包括:
22.对所述明文标量的最大值进行预设进制的分解,得到对应的最大值数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;
23.基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算,得到多个第二幂运算结果;
24.将所述多个第二幂运算结果进行存储,以供基于所述多个第二幂运算结果,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算。
25.可选地,所述基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算,得到多个第二幂运算结果的步骤包括:
26.基于所述最大值数位序列中数位从小到大的顺序,确定所述最大值数位序列中待进行幂运算的当前数位,所述最大值数位序列中最小数位对应的幂运算结果为所述密文数据;
27.将前一数位对应的幂运算结果自乘预设次数,得到所述当前数位对应的幂运算结果,所述前一数位为按照数位从小到大进行排序的最大值数位序列中位于所述当前数位之前的数位,所述预设次数由所述预设进制进行确定;
28.返回基于所述最大值数位序列中数位从小到大的顺序,确定所述最大值数位序列中待进行幂运算的当前数位的步骤,直至所述最大值数位序列中所有数位均得到对应的幂运算结果;
29.基于各所述当前数位对应的幂运算结果,确定作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算得到的多个第二幂运算结果。
30.可选地,所述第一设备为参与联邦学习的设备,所述获取所述第一设备待发送的
明文标量,并获取与所述明文标量进行数乘运算的密文数据的步骤包括:
31.接收参与联邦学习的第二设备发送的密文数据,并获取所述第一设备待发送的明文标量,以将所述明文标量与所述密文数据进行数乘运算。
32.此外,为实现上述目的,本技术还提供一种同态加密设备,所述同态加密设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同态加密程序,所述同态加密程序被所述处理器执行时实现如上所述的同态加密方法的步骤。
33.此外,为实现上述目的,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有同态加密程序,所述同态加密程序被处理器执行时实现如上所述的同态加密方法的步骤。
34.此外,为实现上述目的,本技术还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上所述的同态加密方法的步骤。
35.本技术提供一种同态加密方法、设备、介质及计算机程序产品,通过获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,由于密文数据为对明文标量进行同态加密的数据,因此,密文数据和明文标量可以直接进行数乘运算,即可以直接对密文进行处理,同时使数乘运算结果也为加密的结果;然后,对明文标量中各明文元素进行预设进制的分解,得到各明文元素对应的数位序列,一数位序列对应一明文元素,一数位序列包括若干预设进制的数位;最后,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,得到同态加密结果,并将同态加密结果发送至第二设备,与现有技术直接将明文元素作为幂运算指数进行幂运算相比,本技术对明文元素进行预设进制的分解,可以使作为幂运算指数的各数位的位数小于原本作为幂运算指数的明文元素,从而降低计算复杂度,进而提高同态加密下密文数乘运算的效率,以使同态加密可以应用于及时性要求高或性能要求高的应用场景,从而提高同态加密的适用性。
附图说明
36.图1为本技术实施例方案涉及的硬件运行环境的终端结构示意图;
37.图2为本技术同态加密方法第一实施例的流程示意图;
38.图3为本技术同态加密方法第二实施例的流程示意图。
39.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
40.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
41.参照图1,图1为本技术实施例方案涉及的硬件运行环境的终端结构示意图。
42.本技术实施例终端为同态加密设备,该同态加密设备可以为pc(personal computer,个人计算机)、微型计算机、笔记本电脑、服务器等具有处理功能的终端设备。
43.如图1所示,该终端可以包括:处理器1001,例如cpu(central processing unit,中央处理器),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi

fi接口)。存储器1005可以是高速
ram存储器,也可以是稳定的存储器(non

volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
44.本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
45.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及同态加密程序。
46.在图1所示的终端中,处理器1001可以用于调用存储器1005中存储的同态加密程序,并执行本技术以下实施例提供的同态加密方法中的步骤。
47.基于上述硬件结构,提出本技术同态加密方法的各个实施例。
48.本技术提供一种同态加密方法。
49.参照图2,图2为本技术同态加密方法第一实施例的流程示意图。
50.在本实施例中,该同态加密方法应用于第一设备,该同态加密方法包括:
51.步骤s10,获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据,所述密文数据为对所述明文标量进行同态加密的数据;
52.在本实施例中,该同态加密方法应用于同态加密的场景下。进一步地,可以应用于联邦学习下的加密过程、安全计算或隐私计算中,或者应用于非联邦学习下的隐私计算中,此处不作具体限定。其中,同态加密的算法可以为paillier(帕耶)算法,即加法同态的算法;同态加密的算法还可以为gentry算法,即全同态的算法(包括加法同态和乘法同态的算法);当然,同态加密的算法还可以为其他同态加密算法,在本实施例及以下实施例以paillier算法为例进行说明。
53.具体地,该同态加密方法可以应用于隐私性要求高或者数据量大的交互场景中,例如,图像识别、文本识别、语音识别等场景。也就是说,所述明文标量可以为图像数据、文本数据、语音数据等。当然,该同态加密方法的应用场景并不限定,可以应用于任何交互场景中,从而提高各场景下同态加密的性能。
54.进一步地,该同态加密方法可以应用于构建图像识别模型的联邦学习场景,或者应用于构建文本识别模型的联邦学习场景,或者应用于构建语音识别模型的联邦学习场景,或者应用于其他识别模型或预测模型的联邦学习场景。也就是说,所述明文标量可以为联邦学习对应的中间参数。具体的,参考下述第四实施例,此处不再一一赘述。
55.需要说明的是,明文标量是第一设备需要加密和发送的数据,而密文数据可以是其他方发送的密文(可以是其他方同样利用同态加密得到的密文,也可以是密钥或密钥相关参数)或者第一设备自身的进行同态加密的密钥。
56.在一实施例中,所述同态加密方法应用于参与联邦学习的第一设备,上述步骤s10包括:
57.接收参与联邦学习的第二设备的密文数据,并获取需要进行数乘运算的明文标量,所述密文数据为与所述明文标量进行数乘运算的数据。其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送
至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到密文数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该密文数乘运算结果也为密文,当然,第一设备还可以再对该密文数乘运算结果进行同态加密。
58.需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为a方,第二设备为b方,可以把b方的数据发给a方,因为b方的数据是密文,发给a方是没有风险的;a方会对数据进行计算,因为得到的结果仍然是密文,所以a方可以安全的去发给b方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在a方和b方的基础上可以加一个协调方c方,来进行逻辑回归运算。
59.在另一实施例中,所述同态加密方法应用于参与联邦学习的第一设备,上述步骤s10包括:
60.获取需要进行数乘运算的密文数据和明文标量,所述密文数据为同态加密的公钥。需要说明的是,密文数据为同态加密的公钥时,当前的数乘运算即对明文标量进行同态加密,从而得到该明文标量对应的密文。例如,第一设备为数据提供方,第一设备利用公钥对自身的明文标量进行同态加密,即进行数乘运算等价的模幂运算,从而得到该明文标量对应的密文,该模幂运算的模数也可以为同态加密的公钥,最后,第一设备将会将该密文发送给另一联邦学习的参与方。
61.在本实施例中,获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,密文数据为对明文标量进行同态加密的数据。其中,密文数据可以为进行同态加密后得到的密文;也可以为进行同态加密的公钥,或者为进行同态加密的相关密钥参数。
62.需要说明的是,同态加密密态下的密文数乘运算(密文乘法运算)是明文数据和密文数据的乘法,其可以等价于做模幂运算,即可以将明文作为幂指数进行幂次方运算。具体的,参考下述公式:
63.d*b≡d
b mod m;
64.其中,d为密文数据,b为明文数据,≡为等价符号,mod表示取模运算,m为模数,该模数m可以为同态加密过程中生成的密钥数据。
65.此外,还需要说明的是,对于取模运算来说,重复取模的结果不变,因此,若密文数据为进行模幂运算得到的数据,则同态加密密态下的密文数乘运算可以等价于做幂次方运算,即直接将密文数据作为幂运算底数,将明文标量中的明文元素作为幂运算指数,进行幂运算即可。具体的,参考下述公式:
66.d*b≡d
b

67.其中,d为密文数据,b为明文数据,≡为等价符号。
68.在本实施例中,密文数据为一个密文元素。若在其他实施例中,密文数据为标量,则将密文数据中各密文元素单独与明文标量进行数乘运算,从而得到各密文元素对应的数乘运算结果。其中,密文数据的标量或明文标量包括一维向量形式、二维矩阵形式或更高维的标量形式。
69.在一实施例中,在上述步骤s10之后,所述同态加密方法还包括:
70.若所述明文标量为明文矩阵,则将所述明文矩阵转化为明文数组,以使所述明文标量为明文数组。可以理解,将明文矩阵转化为明文数组,可提升数乘运算的效率。
71.相应的,在下述步骤s30之后,所述同态加密方法还包括:
72.将所述数乘运算结果转化为矩阵形式的运算结果。需要说明的是,将所述数乘运算结果转化为矩阵形式的转化过程与将所述明文矩阵转化为明文数组的过程对应,此处不作具体赘述。
73.在一些实施例中,在上述步骤s10之后,所述同态加密方法还包括:
74.若所述明文标量中各明文元素中存在浮点数,则将所述浮点数进行定点化,以使所述明文标量中各明文元素均为定点数。也就是说,用整数来模拟浮点数,对浮点数进行定点化,以得到定点数,从而提高密文数乘运算的效率。当然,也可以对浮点数和整数均进行定点化,即对各明文元素进行定点化。后续只需对数乘运算结果进行相应的反定点化即可。
75.步骤s20,对所述明文标量中各明文元素进行预设进制的分解,得到各所述明文元素对应的数位序列,一所述数位序列对应一所述明文元素,一所述数位序列包括若干所述预设进制的数位;
76.在本实施例中,对明文标量中各明文元素进行预设进制的分解,得到各明文元素对应的数位序列,一数位序列对应一明文元素,一数位序列包括若干预设进制的数位。其中,一个明文标量中包括若干明文元素,该若干明文元素包括一个或多个明文元素。若干预设进制的数位包括一个或多个数位。
77.需要说明的是,预设进制可以包括二进制、八进制或十六进制等。为进一步提高数乘运算的效率,可以将预设进制设定为二进制,以符合当前计算设备的计算进制,当然,也可以设定为其他更高次幂进制,同样便于计算设备处理。
78.在一实施例中,上述步骤s20包括:
79.对所述明文标量中各明文元素进行二进制的分解,得到各所述明文元素对应的二进制数位序列,一所述二进制数位序列对应一所述明文元素,一所述二进制数位序列包括若干二进制的数位。其中,若干二进制的数位包括一个或多个数位。
80.需要说明的是,明文标量中一明文元素可以看成一组二进制的数字,即二进制数位序列。例如,该明文元素为7,则7=1+2+4=2^0+2^1+2^2;该明文元素为19,则19=16+2+1=2^4+2^1+2^0。
81.此外,还需要说明的是,数位序列中各数位之间的关系为加法关系,例如,数位序列为{2^0、2^1、2^2},则数位序列中各数位相加的结果为2^0+2^1+2^2=1+2+4=7。也就是说,将每个明文元素拆解为二进制数位相加的结果。具体的,明文元素b为:
[0082][0083]
其中,i表示当前比特所处的位置,n表示明文元素b的比特位数,b
i
的取值为1或0,若b
i
的取值为1则代表对应比特数为1,若b
i
的取值为0则代表对应比特数为0。
[0084]
可以理解,对于更高次幂的进制分解与二进制分解的执行过程基本相同,此处不再一一赘述。例如,预设进制为八进制时,明文元素b为:
[0085][0086]
其中,i表示当前比特所处的位置,n表示明文元素b的比特位数,b
i
的取值为1或0,
若b
i
的取值为1则代表对应比特数为非0数,若b
i
的取值为0则代表对应比特数为0。
[0087]
步骤s30,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到同态加密结果,并将所述同态加密结果发送至第二设备。
[0088]
在本实施例中,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,得到同态加密结果,并将同态加密结果发送至第二设备。需要说明的是,通过上述对同态加密的分析可知,同态加密密态下的密文数乘运算可以等价于做幂次方运算,即直接将密文数据作为幂运算底数,将明文标量中的明文元素作为幂运算指数,进行幂运算即可。具体的,参考下述公式:
[0089]
d*b≡d
b

[0090]
其中,d为密文数据,b为明文数据,≡为等价符号。基于此,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,可以得到数乘运算结果(即同态加密结果)。该数乘运算结果(即同态加密结果)包括明文标量中各明文元素与密文数据的数乘运算结果。
[0091]
为便于理解,以所述预设进制为二进制为例进行说明,在明文元素b为:
[0092][0093]
其中,i表示当前比特所处的位置,n表示明文元素b的比特位数,b
i
的取值为1或0,若b
i
的取值为1则代表对应比特数为1,若b
i
的取值为0则代表对应比特数为0。基于此,可以将数乘运算结果转化为各幂运算结果的乘积。具体的,参考下述公式:
[0094][0095]
其中,d为密文数据,b为明文数据,i表示明文元素b中当前比特所处的位置,n表示明文元素b的比特位数,b
i
的取值为1或0,若b
i
的取值为1则代表对应比特数为1,若b
i
的取值为0则代表对应比特数为0。例如,明文元素b的比特位数n为53比特,参考下述公式:
[0096][0097]
具体的,基于上述进行幂运算的推导公式可知,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,可以转化作幂运算和乘法运算。即上述步骤s30包括:对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算和乘法运算,得到数乘运算结果。具体的执行过程可以参照下述第二实施例,此处不再一一赘述。
[0098]
需要说明的是,作为幂运算底数的密文数据和作为幂运算指数的明文元素的二进制位数往往比较大,例如1024比特、2048比特,因此本实施例用于提升密文数乘运算效率的收益较大,具有实用价值。基于此,若密文数据或明文元素的二进制位数越大,则本实施例
用于提升密文数乘运算效率的收益越大。
[0099]
可以理解,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,由于数位序列中作为幂运算指数的各数位的位数小于原本作为幂运算指数的明文元素,因此,可以减少密文数乘运算的计算复杂度。具体的,将明文元素设定为n,则原本直接将明文元素作为幂运算指数进行幂运算的计算复杂度为n,即进行n次乘法,而将进行预设进制分解后的各数位序列作为幂运算指数进行幂运算的计算复杂度为log(n),即进行log(n)次乘法。
[0100]
本技术实施例提供一种同态加密方法,通过获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,由于密文数据为对明文标量进行同态加密的数据,因此,密文数据和明文标量可以直接进行数乘运算,即可以直接对密文进行处理,同时使数乘运算结果也为加密的结果;然后,对明文标量中各明文元素进行预设进制的分解,得到各明文元素对应的数位序列,一数位序列对应一明文元素,一数位序列包括若干预设进制的数位;最后,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,得到同态加密结果,并将同态加密结果发送至第二设备,与现有技术直接将明文元素作为幂运算指数进行幂运算相比,本技术对明文元素进行预设进制的分解,可以使作为幂运算指数的各数位的位数小于原本作为幂运算指数的明文元素,从而降低计算复杂度,进而提高同态加密下密文数乘运算的效率,以使同态加密可以应用于及时性要求高或性能要求高的应用场景,从而提高同态加密的适用性。
[0101]
进一步地,基于上述第一实施例,提出本技术同态加密方法的第二实施例。
[0102]
参照图3,图3为本技术同态加密方法第二实施例的流程示意图。
[0103]
在本实施例中,上述步骤s30中,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到同态加密结果,包括:
[0104]
步骤s31,将所述密文数据作为幂运算底数,将一所述数位序列中的若干数位作为幂运算指数;
[0105]
在本实施例中,将密文数据作为幂运算底数,将一数位序列中的若干数位作为幂运算指数。其中,一明文元素对应的一数位序列中可以包括1个或多个数位。例如,上述步骤s20的预设进制为二进制,明文元素为4,则其数位序列包括一个2^2;明文元素为7,则其数位序列包括2^0、2^1和2^2。又例如,上述步骤s20的预设进制为八进制,明文元素为64,则其数位序列包括一个8^2;明文元素为75,则其数位序列包括8^1、8^2和3。
[0106]
步骤s32,基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干第一幂运算结果;
[0107]
在本实施例中,基于幂运算底数和若干幂运算指数进行幂运算,得到若干第一幂运算结果。其中,若干幂运算指数的数量与若干第一幂运算结果的数量一一对应。
[0108]
需要说明的是,有多少个幂运算指数,则构建多少个幂运算式,每个幂运算式的幂运算底数均是密文数据,而每个幂运算式的幂运算指数则对应不同的数位,基于此,可得到不同的第一幂运算结果。
[0109]
在一实施例中,基于幂运算底数和若干幂运算指数利用计算单元分别进行幂运算,得到若干第一幂运算结果。
[0110]
在另一实施例中,上述步骤s32包括:
[0111]
步骤a321,基于所述幂运算底数和若干所述幂运算指数,获取预先存储的若干幂运算结果,所述预先存储的若干幂运算结果为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干第一幂运算结果。
[0112]
在本实施例中,基于幂运算底数和若干幂运算指数,可以确定对应的若干幂运算式,进而基于该若干幂运算式获取预先存储的若干幂运算结果,其中,预先存储的若干幂运算结果也为基于幂运算底数和若干幂运算指数进行幂运算得到的若干第一幂运算结果。
[0113]
需要说明的是,在基于幂运算底数和若干幂运算指数进行幂运算时,无需再利用计算单元再计算幂运算结果,只需复用提前计算并存储好的幂运算结果,从而可以节省计算流程和计算资源,进而进一步提高密文数乘运算效率。
[0114]
相应的,为获取预先存储的若干幂运算结果,在上述步骤s30之前,所述同态加密方法还包括:
[0115]
对所述明文标量的最大值进行预设进制的分解,得到对应的最大值数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算,得到多个第二幂运算结果;将所述多个第二幂运算结果进行存储,以供基于所述多个第二幂运算结果,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算。具体的执行过程参照下述第三实施例,此处不再一一赘述。
[0116]
在另一实施例中,所述预设进制为二进制,上述步骤s32包括:
[0117]
步骤a322,将若干所述幂运算指数的数量与当前明文元素的二进制比特位数进行比较,所述当前明文元素为若干所述幂运算指数对应的明文元素;
[0118]
在本实施例中,将若干幂运算指数的数量与当前明文元素的二进制比特位数进行比较,当前明文元素为若干所述幂运算指数对应的明文元素。具体的,判断当前明文元素的二进制比特数是1更多还是0更多,若1更多,则当前明文元素的二进制比特位数的一半小于若干幂运算指数的数量;若0更多,则当前明文元素的二进制比特位数的一半大于若干幂运算指数的数量。
[0119]
其中,二进制比特位数表示当前明文元素的比特长度,例如,当前明文元素的二进制数为111110,则二进制比特位数为6。
[0120]
需要说明的是,若干幂运算指数的数量表示当前明文元素进行二进制分解后得到的数位序列的数位数量。具体的,参考下述公式:
[0121][0122]
其中,b表示当前明文元素,i表示当前比特所处的位置,n表示当前明文元素b的二进制比特位数,b
i
的取值为1或0,若b
i
的取值为1则代表对应比特数为1,若b
i
的取值为0则代表对应比特数为0。基于此,当前明文元素b在i=0至i=n位置上比特数为1则对应b
i
为1,进而数位序列中存在对应数位2
i
,进而存在对应的幂运算指数2
i
。例如,当前明文元素的二进制比特数为111110,则该当前明文元素对应的数位序列的数位数量为5,相应的,若干幂运算指数的数量也为5。
[0123]
步骤a323,若所述二进制比特位数的一半小于所述数量,则基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前明文元素的二进
制数确定预先存储的若干零比特幂运算结果,所述零比特幂运算结果为所述二进制数中比特数为零对应的幂运算结果,所述零比特幂运算结果的幂运算底数为所述密文数据,所述零比特幂运算结果的幂运算指数为所述二进制数中比特数为零对应的二进制位数的负数;
[0124]
在本实施例中,若二进制比特位数的一半小于幂运算指数的数量,则基于幂运算底数和二进制比特位数确定预先存储的最大幂运算结果,具体的,若幂运算底数为d,二进制比特位数为n,则最大幂运算结果为并基于当前明文元素的二进制数确定预先存储的若干零比特幂运算结果,零比特幂运算结果为二进制数中比特数为零对应的幂运算结果,零比特幂运算结果的幂运算底数为密文数据,零比特幂运算结果的幂运算指数为二进制数中比特数为零对应的二进制位数的负数,具体的,基于当前明文元素的二进制数确定二进制数中为0的比特数,并获取为0的比特数上对应的二进制位数,然后,基于密文数据和该二进制位数确定对应的幂运算式,最后,基于该幂运算式获取对应的零比特幂运算结果。
[0125]
其中,最大幂运算结果为该当前明文元素的二进制比特位数对应的最大值,例如密文数据为d,二进制比特位数为4,则对应的最大幂运算结果为d
15
,二进制比特位数为5,则对应的最大幂运算结果为d
31

[0126]
其中,当前明文元素的二进制数为当前明文元素的二进制表示形式,例如当前明文元素的二进制比特位数为4,当前明文元素的十进制数为14,则当前明文元素的二进制数为1110。零比特幂运算结果为该当前明文元素的二进制数上比特数为零对应的幂运算结果,例如密文数据为d,若当前明文元素的二进制数为1110,则零比特幂运算结果为d
‑1,若当前明文元素的二进制数为11100,则零比特幂运算结果为d
‑1和d
‑2,若当前明文元素的二进制数为11010,则零比特幂运算结果为d
‑1和d
‑3。
[0127]
其中,二进制位数从1开始递增,即当前明文元素的二进制数的最低位的二进制位数为1.
[0128]
例如,幂运算底数(密文数据)为2,当前明文元素的二进制比特位数为4,则最大幂运算结果为2
15
,若当前明文元素的二进制数为1110,则零比特幂运算结果为2
‑1,且只有一个零比特幂运算结果,以便后续最大幂运算结果2
15
与零比特幂运算结果为2
‑1相乘得到2
14
。又例如,幂运算底数(密文数据)为4,当前明文元素的二进制比特位数为4,则最大幂运算结果为4
15
,若当前明文元素的二进制数为1110,则零比特幂运算结果为4
‑1,且只有一个零比特幂运算结果,以便后续最大幂运算结果4
15
与零比特幂运算结果为4
‑1相乘得到4
14

[0129]
可以理解,若当前明文元素的二进制比特位数的一半小于幂运算指数的数量,则表示当前明文元素的二进制数1多0少,此时如果直接基于幂运算底数和若干幂运算指数进行幂运算,则后续将若干第一幂运算结果进行乘法运算的乘法运算次数一定大于n/2,其中,n为当前明文元素的二进制比特位数;而通过本实施例,由于若干零比特幂运算结果一定小于n/2,相应的,后续将若干第一幂运算结果进行乘法运算的乘法运算次数一定小于n/2,因此,本实施例可进一步提高密文数乘运算效率。
[0130]
相应的,在上述步骤a323之前,所述同态加密方法还包括:
[0131]
获取所述明文标量的最大值,并基于所述明文标量的比特位数确定负数数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;基于作为幂运算底数的
所述密文数据和作为幂运算指数的所述最大值进行幂运算,得到最大幂运算结果;并基于作为幂运算底数的所述密文数据和作为幂运算指数的所述负数数位序列进行幂运算,得到若干零比特幂运算结果;将所述最大幂运算结果和所述若干零比特幂运算结果进行存储,以供基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前明文元素的二进制数确定预先存储的若干零比特幂运算结果。也就是说,计算并将结果储存下来作为最大幂运算结果,计算d
‑1、d
‑2、d
‑3至d

n
的结果作为各个零比特幂运算结果,其中,d为密文数据,n为明文标量的比特位数。
[0132]
可以理解,由于存储的最大幂运算结果和零比特幂运算结果可以复用,所以当明文标量的维度更高时,由于明文标量包含的明文元素更多,复用性更强,以使本实施例用于提升密文数乘运算效率的收益更大,更具有实用价值。同时,作为幂运算底数的密文数据和作为幂运算指数的明文元素的二进制位数往往比较大,例如1024比特、2048比特,因此利用存储的最大幂运算结果和零比特幂运算结果可复用的特点,以使本实施例用于提升密文数乘运算效率的收益提升。基于此,若密文数据或明文元素的二进制位数越大,则本实施例用于提升密文数乘运算效率的收益越大。
[0133]
步骤a324,将所述最大幂运算结果和所述若干零比特幂运算结果作为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干第一幂运算结果。
[0134]
在本实施例中,将最大幂运算结果和若干零比特幂运算结果作为基于幂运算底数和若干幂运算指数进行幂运算得到的若干第一幂运算结果。需要说明的是,后续需要将若干第一幂运算结果进行乘法运算,得到一明文元素对应的数乘运算结果,基于此,最大幂运算结果和若干零比特幂运算结果的乘积等于基于幂运算底数和若干幂运算指数进行幂运算得到的若干第一幂运算结果的乘积,因此,可将最大幂运算结果和所述若干零比特幂运算结果作为若干第一幂运算结果,即一个最大幂运算结果对应一个第一幂运算结果,一个零比特幂运算结果对应一个第一幂运算结果,若干第一幂运算结果的数量为若干零比特幂运算结果的数量加一。
[0135]
为便于理解,例如幂运算底数(密文数据)为2,当前明文元素的二进制比特位数为4,则最大幂运算结果为2
15
,若当前明文元素的二进制数为1110,则零比特幂运算结果为2
‑1,且只有一个零比特幂运算结果,以便后续最大幂运算结果2
15
与零比特幂运算结果为2
‑1相乘得到2
14
。基于此,若干幂运算指数分别为2、4、8,对应的若干第一幂运算结果为22、24、28,后续将若干第一幂运算结果22、24、28进行相乘得到2
14
,因此,采取上述实施例或者采取本实施例所得到的数乘运算结果均一样。
[0136]
在一些实施例中,在上述步骤a322之后,所述同态加密方法还包括:
[0137]
若所述二进制比特位数的一半大于所述数量,则基于所述幂运算底数和若干所述幂运算指数,获取预先存储的若干幂运算结果,所述预先存储的若干幂运算结果为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干第一幂运算结果。具体的,参照上述步骤a321的实施例。
[0138]
或者,若所述二进制比特位数的一半大于所述数量,则基于所述幂运算底数和若干所述幂运算指数,利用计算单元分别进行幂运算,得到若干第一幂运算结果。具体的,可以参照上述第一实施例。
[0139]
步骤s33,将所述若干第一幂运算结果进行乘法运算,得到一所述明文元素对应的
数乘运算结果;
[0140]
在本实施例中,将若干第一幂运算结果进行乘法运算,得到一明文元素对应的数乘运算结果。具体的,将若干第一幂运算结果依次进行乘法运算,最终得到一明文元素对应的数乘运算结果。
[0141]
需要说明的是,参考上述分析得到的公式:
[0142][0143]
其中,d为密文数据,b为明文数据,i表示明文元素b中当前比特所处的位置,n表示明文元素b的比特位数,b
i
的取值为1或0,若b
i
的取值为1则代表对应比特数为1,若b
i
的取值为0则代表对应比特数为0。基于此,可以得知,在计算得到若干第一幂运算结果时,还需要对若干第一幂运算结果进行累乘,从而得到一明文元素对应的数乘运算结果。
[0144]
步骤s34,返回将一所述数位序列中的若干数位作为幂运算指数的步骤,直至各所述数位序列均进行幂运算;
[0145]
在本实施例中,返回上述步骤s31中,将一数位序列中的若干数位作为幂运算指数的步骤,直至各数位序列均进行幂运算。需要说明的是,上述步骤s32和s33是用于计算一明文元素对应的数乘运算结果,而明文标量包括若干明文元素,每一个明文元素对应一数位序列,因此,需要循环执行上述计算一明文元素对应的数乘运算结果的步骤,直至明文标量中各明文元素均进行幂运算,并均得到对应的数乘运算结果。
[0146]
步骤s35,基于各所述明文元素对应的数乘运算结果,确定所述密文数据和所述明文标量对应的同态加密结果。
[0147]
在本实施例中,基于各明文元素对应的数乘运算结果,确定密文数据和明文标量对应的同态加密结果。其中,一明文元素对应的数乘运算结果为一个元素,而明文标量对应的同态加密结果为一个标量,该标量中包括多个元素。具体的,若明文标量为二维数组,则明文标量对应的同态加密结果也为二维数组;若明文标量为三维矩阵,则明文标量对应的同态加密结果也为三维矩阵;若明文标量为其他更高维的标量,则明文标量对应的同态加密结果也为对应的标量。
[0148]
当然,若明文标量被转化为数组,则此时明文标量对应的同态加密结果也为数组。因此,后续可以将明文标量对应的同态加密结果转化为明文标量被转化之前的标量形式,例如明文标量由矩阵转化为数组,则后续可以将明文标量对应的同态加密结果转化为矩阵。
[0149]
本实施例中,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算和乘法运算,得到数乘运算结果,与现有技术直接将明文元素作为幂运算指数进行幂运算相比,本技术对明文元素进行预设进制的分解,可以使基于幂运算底数和若干幂运算指数进行幂运算,得到若干第一幂运算结果中的幂运算指数进的位数小于原本作为幂运算指数的明文元素,从而降低计算复杂度,进而提高密文数乘运算的效率。进一步地,利用
预先存储的若干幂运算结果作为基于幂运算底数和若干幂运算指数进行幂运算得到的若干第一幂运算结果,使用提前计算好的结果,从而进一步提高密文数乘运算的效率。进一步地,若当前明文元素的二进制比特位数的一半小于幂运算指数的数量,则表示当前明文元素的二进制数1多0少,此时如果直接基于幂运算底数和若干幂运算指数进行幂运算,则后续将若干第一幂运算结果进行乘法运算的乘法运算次数一定大于n/2,其中,n为当前明文元素的二进制比特位数;而通过本实施例,由于若干零比特幂运算结果一定小于n/2,相应的,后续将若干第一幂运算结果进行乘法运算的乘法运算次数一定小于n/2,因此,本实施例可进一步提高密文数乘运算效率。
[0150]
进一步地,基于上述第一实施例,提出本技术同态加密方法的第三实施例。
[0151]
在本实施例中,在上述步骤s30之前,该同态加密方法还包括:
[0152]
步骤a40,对所述明文标量的最大值进行预设进制的分解,得到对应的最大值数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;
[0153]
在本实施例中,对明文标量的最大值进行预设进制的分解,得到对应的最大值数位序列,明文标量的最大值由明文标量的比特位数进行确定。其中,明文标量的最大值为明文标量中明文元素在当前比特位数下所能达到的最大值,例如,明文标量的比特位数为n,则明文标量的最大值为2
n
‑1。
[0154]
具体的,上述步骤a40包括:
[0155]
基于所述明文标量的比特位数,确定所述明文标量的最大值;对所述最大值进行预设进制的分解,得到对应的最大值数位序列。
[0156]
其中,最大值数位序列包括多个数位。
[0157]
需要说明的是,预设进制可以包括二进制、八进制或十六进制等。为进一步提高数乘运算的效率,可以将预设进制设定为二进制,以符合当前计算设备的计算进制,当然,也可以设定为其他更高次幂进制,同样便于计算设备处理。
[0158]
在一实施例中,上述步骤a40包括:
[0159]
对所述明文标量的最大值进行二进制的分解,得到对应的最大值数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定。
[0160]
需要说明的是,明文标量的最大值可以看成一组二进制的数字,即二进制数位序列,此处称为最大值数位序列。例如,该明文标量的最大值为15,则15=1+2+4+8=2^0+2^1+2^2+2^3;该明文标量的最大值为7,则7=1+2+4=2^0+2^1+2^2。
[0161]
此外,还需要说明的是,最大值数位序列中各数位之间的关系为加法关系,例如,最大值数位序列为{2^0、2^1、2^2},则最大值数位序列中各数位相加的结果为2^0+2^1+2^2=1+2+4=7。也就是说,将明文标量的最大值拆解为二进制数位相加的结果。具体的,明文标量的最大值b为:
[0162][0163]
其中,i表示当前比特所处的位置,n表示明文标量的最大值b的比特位数。也就是说,最大值数位序列为{20,21,...,2
n
‑1}。
[0164]
可以理解,对于更高次幂的进制分解与二进制分解的执行过程基本相同,此处不再一一赘述。例如,预设进制为八进制时,明文标量的最大值b为:
[0165][0166]
其中,i表示当前比特所处的位置,n表示明文标量的最大值b的比特位数。
[0167]
步骤a50,基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算,得到多个第二幂运算结果;
[0168]
在本实施例中,基于作为幂运算底数的密文数据和作为幂运算指数的最大值数位序列进行幂运算,得到多个第二幂运算结果。其中,最大值数位序列的数量与多个第二幂运算结果的数量一一对应。
[0169]
需要说明的是,最大值数位序列有多少个数位,则构建多少个幂运算式,每个幂运算式的幂运算底数均是密文数据,而每个幂运算式的幂运算指数则对应不同的数位,基于此,可得到不同的第二幂运算结果。
[0170]
在一实施例中,基于作为幂运算底数的密文数据和作为幂运算指数的最大值数位序列利用计算单元分别进行幂运算,得到多个第二幂运算结果
[0171]
在另一实施例中,上述步骤a50包括:
[0172]
步骤a51,基于所述最大值数位序列中数位从小到大的顺序,确定所述最大值数位序列中待进行幂运算的当前数位,所述最大值数位序列中最小数位对应的幂运算结果为所述密文数据;
[0173]
在本实施例中,基于最大值数位序列中数位从小到大的顺序,确定最大值数位序列中待进行幂运算的当前数位,最大值数位序列中最小数位对应的幂运算结果为密文数据。具体的,基于最大值数位序列中数位从小到大的顺序,依次获取最大值数位序列中的数位作为幂运算指数,以与作为幂运算底数的密文数据进行幂运算。
[0174]
需要说明的是,最大值数位序列中数位最小为1,即b0=1,b为预设进制,基于此,最大值数位序列中最小数位对应的幂运算结果为d1,d为密文数据,即最大值数位序列中最小数位对应的幂运算结果为密文数据。
[0175]
例如,以预设进制为二进制为例进行说明,明文标量的最大值b为:
[0176][0177]
其中,i表示当前比特所处的位置,n表示明文标量的最大值b的比特位数。基于此,最大值数位序列从小到大的顺序为20,21,...,2
n
‑1。
[0178]
步骤a52,将前一数位对应的幂运算结果自乘预设次数,得到所述当前数位对应的幂运算结果,所述前一数位为按照数位从小到大进行排序的最大值数位序列中位于所述当前数位之前的数位,所述预设次数由所述预设进制进行确定;
[0179]
在本实施例中,将前一数位对应的幂运算结果自乘预设次数,得到当前数位对应的幂运算结果,前一数位为按照数位从小到大进行排序的最大值数位序列中位于当前数位之前的数位,预设次数由预设进制进行确定。其中,预设次数与预设进制一一对应,若预设进制为2进制,则预设次数为2,若预设进制为八进制,则预设次数为8。
[0180]
需要说明的是,在计算最大值数位序列中每一数位的幂运算结果时,d为作为幂运算底数的密文数据,b为预设进制,i为当前数位的数位位置(最小为0),则
例如预设进制为二进制,则基于此,将前一数位对应的幂运算结果自乘预设次数,可以得到当前数位对应的幂运算结果。
[0181]
可以理解,原本计算最大值数位序列中每一数位对应的幂运算结果的计算复杂度为n,则计算最大值数位序列中所有数位对应的幂运算结果的计算复杂度为n2。而通过本实施例,计算最大值数位序列中所有数位对应的幂运算结果的计算复杂度为n,即进行n次乘法。因此,本实施例可以减少密文数乘运算的计算复杂度,进而进一步提高密文数乘运算的效率。
[0182]
例如,以预设进制为二进制为例进行说明,最大值数位序列从小到大的顺序为20,21,...,2
n
‑1,当前数位为21,则前一数位为20,而前一数位20的幂运算结果为密文数据,此时,当前数位21的幂运算结果为密文数据的平方,即密文数据自乘两次,之后,当前数位为22,则前一数位为21,而前一数位21的幂运算结果如上所述(密文数据的平方),此时,当前数位22的幂运算结果为前一数位21的幂运算结果的平方,即前一数位21的幂运算结果自乘两次。又例如,以预设进制为八进制为例进行说明,最大值数位序列从小到大的顺序为80,81,...,8
n
‑1,当前数位为81,则前一数位为80,而前一数位80的幂运算结果为密文数据,此时,当前数位81的幂运算结果为密文数据的八次方,即密文数据自乘八次。
[0183]
步骤a53,返回基于所述最大值数位序列中数位从小到大的顺序,确定所述最大值数位序列中待进行幂运算的当前数位的步骤,直至所述最大值数位序列中所有数位均得到对应的幂运算结果;
[0184]
在本实施例中,返回基于最大值数位序列中数位从小到大的顺序,确定最大值数位序列中待进行幂运算的当前数位的步骤,直至最大值数位序列中所有数位均得到对应的幂运算结果。需要说明的是,最大值数位序列中包括多个数位,每一个数位均需计算对应的幂运算结果,因此,需要循环执行上述步骤a51和步骤a52,以使最大值数位序列中所有数位均得到对应的幂运算结果。
[0185]
步骤a54,基于各所述当前数位对应的幂运算结果,确定作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算得到的多个第二幂运算结果。
[0186]
在本实施例中,基于各当前数位对应的幂运算结果,确定作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算得到的多个第二幂运算结果。也就是说,每一个当前数位对应的幂运算结果为一个第二幂运算结果,各当前数位对应的幂运算结果为多个第二幂运算结果。
[0187]
步骤a60,将所述多个第二幂运算结果进行存储,以供基于所述多个第二幂运算结果,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算。
[0188]
在本实施例中,将多个第二幂运算结果进行存储,以供基于多个第二幂运算结果,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,具体的可以参照上述第二实施例,此处不再一一赘述。
[0189]
需要说明的是,本实施例通过计算d^(2^0)、d^(2^1)、d^(2^2)、d^(2^3)、....、d^(2^n),并将各幂运算结果储存下来,以使在基于幂运算底数和若干幂运算指数进行幂运算时,无需再利用计算单元再计算幂运算结果,只需复用提前计算并存储好的幂运算结果,从而可以节省计算流程和计算资源,进而进一步提高密文数乘运算效率。
[0190]
本实施例中,预先存储基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算得到的多个第二幂运算结果,以使后续在密文数乘运算过程中,利用预先存储的若干幂运算结果作为基于幂运算底数和若干幂运算指数进行幂运算得到的若干第一幂运算结果,使用提前计算好的结果,从而进一步提高密文数乘运算的效率。
[0191]
进一步地,基于上述第一实施例,提出本技术同态加密方法的第四实施例。
[0192]
在本实施例中,所述第一设备为参与联邦学习的设备,在上述步骤s10之前,该同态加密方法还包括:
[0193]
在接收到参与联邦学习的第二设备的密文数据时,进入获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据的步骤,以得到逻辑回归模型。具体的,在接收到参与联邦学习的第二设备的密文数据时,该密文数据即需要进行数乘运算的密文数据。该密文数据为第二设备对自身明文数据进行同态加密得到的数据,该明文数据为第二设备所需发送和共享的数据。
[0194]
其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的明文数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该数乘运算结果也为密文,当然,第一设备还可以再对该数乘运算结果进行同态加密。
[0195]
需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为a方,第二设备为b方,可以把b方的数据发给a方,因为b方的数据是密文,发给a方是没有风险的;a方会对数据进行计算,因为得到的结果仍然是密文,所以a方可以安全的去发给b方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在a方和b方的基础上可以加一个协调方c方,来进行逻辑回归运算,以得到逻辑回归模型。
[0196]
在一实施例中,逻辑回归模型如下所述:
[0197][0198]
其中,w
t
x为联邦学习的中间参数,w
t
x为第一设备与第二设备需要交互的数据,例如,第二设备自身的w
t
x设定为u
a
,第二设备对u
a
进行同态加密得到[[u
a
]],然后第一设备接收[[u
a
]],并将该密文数据[[u
a
]]与自身的明文数据进行运算,例如自身的明文数据为w
t
x(设定为u
b
)。
[0199]
需要说明的是,对损失函数和梯度做泰勒展开,进行多项式近似,从而支持同态加密,即只有数乘和加减法。可以理解,损失函数和梯度均包括逻辑回归模型中的w
t
x,因此,构建逻辑回归模型之后,可以对第一设备和/或第二设备的模型进行模型训练和模型预测等。具体的,同态加密在联邦学习的应用非常广泛,此处不再一一赘述。
[0200]
在一些实施例中,所述第一设备为参与联邦学习的设备,上述步骤s10包括:
[0201]
步骤a11,接收参与联邦学习的第二设备发送的密文数据,并获取所述第一设备待发送的明文标量,以将所述明文标量与所述密文数据进行数乘运算。
[0202]
在本实施例中,接收参与联邦学习的第二设备发送的密文数据,并获取第一设备待发送的明文标量,以将明文标量与所述密文数据进行数乘运算。其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到密文数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该密文数乘运算结果也为密文,当然,第一设备还可以再对该密文数乘运算结果进行同态加密。
[0203]
需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为a方,第二设备为b方,可以把b方的数据发给a方,因为b方的数据是密文,发给a方是没有风险的;a方会对数据进行计算,因为得到的结果仍然是密文,所以a方可以安全的去发给b方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在a方和b方的基础上可以加一个协调方c方,来进行逻辑回归运算。
[0204]
本实施例中,将同态加密方法应用于联邦学习的场景中,以解决同态加密的逻辑回归中,计算密文数据与明文数据的乘积的运算瓶颈,进而解决联邦学习中,同态加密下密文数乘运算效率过低的问题。
[0205]
本技术还提供一种计算机可读存储介质,该计算机可读存储介质上存储有同态加密程序,所述同态加密程序被处理器执行时实现如以上任一项实施例所述的同态加密方法的步骤。
[0206]
本技术计算机可读存储介质的具体实施例与上述同态加密方法各实施例基本相同,在此不作赘述。
[0207]
本技术还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序产品被处理器执行时实现如以上任一项实施例所述的同态加密方法的步骤。
[0208]
本技术计算机程序产品的具体实施例与上述同态加密方法各实施例基本相同,在此不作赘述。
[0209]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0210]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0211]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0212]
以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1