CN113746620B - 同态加密方法、设备、介质及计算机程序产品 - Google Patents
同态加密方法、设备、介质及计算机程序产品 Download PDFInfo
- Publication number
- CN113746620B CN113746620B CN202111078984.1A CN202111078984A CN113746620B CN 113746620 B CN113746620 B CN 113746620B CN 202111078984 A CN202111078984 A CN 202111078984A CN 113746620 B CN113746620 B CN 113746620B
- Authority
- CN
- China
- Prior art keywords
- plaintext
- exponentiation
- homomorphic encryption
- scalar
- power operation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000004590 computer program Methods 0.000 title claims abstract description 13
- 238000012163 sequencing technique Methods 0.000 claims abstract description 7
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 9
- 238000007477 logistic regression Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种同态加密方法、设备、介质及计算机程序产品,该方法包括:获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据;对明文标量明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列;将明文标量排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列;对作为幂运算底数的明文标量密文数据和作为幂运算指数的明文标量相减后的明文元素序列进行幂运算,得到多个幂运算结果;将明文标量多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将同态加密结果发送至第二设备。本申请提高了同态加密下密文数乘运算的效率,从而提高同态加密的适用性。
Description
技术领域
本申请涉及金融科技(Fintech)的数据处理技术领域,尤其涉及一种同态加密方法、设备、介质及计算机程序产品。
背景技术
随着金融科技及互联网技术的迅速发展,越来越多的技术(如分布式、大数据、人工智能、区块链Blockchain等)应用在金融领域,以实现各种数据处理和业务处理。
同态加密是应用非常广的密码学工具,其可以在密文状态下进行数乘运算。然而,在密文数据和明文数据进行数乘运算时,由于密文数据和明文数据通常为大整数(即比特位数较大),其需要大量的模幂运算,从而导致同态加密下密文数乘运算效率过低,进而导致同态加密无法应用于及时性要求高的场景。因此,如何提高同态加密下密文数乘运算的效率,以提高同态加密的适用性,是目前亟需解决的问题。
发明内容
本申请的主要目的在于提供一种同态加密方法、设备、介质及计算机程序产品,旨在解决同态加密下密文数乘运算效率过低的技术问题,从而提高同态加密的适用性。
为实现上述目的,本申请提供一种同态加密方法,应用于第一设备,所述同态加密方法包括以下步骤:
获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据,所述密文数据为对所述明文标量进行同态加密的数据;
对所述明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列;
将所述排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,所述两两相减的过程为后一明文元素减去前一明文元素;
对作为幂运算底数的所述密文数据和作为幂运算指数的所述相减后的明文元素序列进行幂运算,得到多个幂运算结果,所述多个幂运算结果的顺序与所述相减后的明文元素序列中元素的顺序一致;
将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将所述同态加密结果发送至第二设备。
可选地,所述对作为幂运算底数的所述密文数据和作为幂运算指数的所述相减后的明文元素序列进行幂运算,得到多个幂运算结果的步骤包括:
对所述相减后的明文元素序列中各元素进行预设进制的分解,得到各所述元素对应的数位序列,一所述数位序列对应一所述元素,一所述数位序列包括若干所述预设进制的数位;
对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果。
可选地,所述对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果的步骤包括:
将所述密文数据作为幂运算底数,将一所述数位序列中的若干数位作为幂运算指数;
基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干子幂运算结果;
将所述若干子幂运算结果进行乘法运算,得到一所述元素对应的幂运算结果;
返回将一所述数位序列中的若干数位作为幂运算指数的步骤,直至各所述数位序列均进行幂运算;
基于各所述元素对应的幂运算结果,得到多个幂运算结果。
可选地,所述获取需要进行数乘运算的密文数据和明文标量的步骤之后,还包括:
对所述明文标量中各明文元素进行定点化处理;
所述将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果的步骤之后,还包括:
对所述同态加密结果进行反定点化处理。
可选地,所述获取需要进行数乘运算的密文数据和明文标量的步骤之后,还包括:
将所述明文标量进行数组转换,以使所述明文标量为明文数组。
可选地,所述将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果的步骤之后,还包括:
基于所述明文标量中各明文元素未排序前的顺序,对所述同态加密结果中各运算结果进行排序。
可选地,所述第一设备为参与联邦学习的设备,所述获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据的步骤包括:
接收参与联邦学习的第二设备发送的密文数据,并获取所述第一设备待发送的明文标量,以将所述明文标量与所述密文数据进行数乘运算。
此外,为实现上述目的,本申请还提供一种同态加密设备,所述同态加密设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同态加密程序,所述同态加密程序被所述处理器执行时实现如上所述的同态加密方法的步骤。
此外,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有同态加密程序,所述同态加密程序被处理器执行时实现如上所述的同态加密方法的步骤。
此外,为实现上述目的,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上所述的同态加密方法的步骤。
本申请提供一种同态加密方法、设备、介质及计算机程序产品,通过获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,由于密文数据为对明文标量进行同态加密的数据,因此,密文数据和明文标量可以直接进行数乘运算,即可以直接对密文进行处理,同时使数乘运算结果也为加密的结果;然后,对明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列,以使后续可以对各明文元素进行两两相减的处理;之后,将排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,其中,两两相减的过程为后一明文元素减去前一明文元素;之后对作为幂运算底数的密文数据和作为幂运算指数的相减后的明文元素序列进行幂运算,得到多个幂运算结果,多个幂运算结果的顺序与相减后的明文元素序列中元素的顺序一致;最后,将多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将同态加密结果发送至第二设备,与现有技术直接将明文元素作为幂运算指数进行幂运算相比,本申请对明文元素进行进行两两相减的处理,可以使幂运算指数的位数小于原本作为幂运算指数的明文元素,即降低幂运算的幂指数大小,从而降低计算复杂度,进而提高同态加密下密文数乘运算的效率,以使同态加密可以应用于及时性要求高或性能要求高的应用场景,从而提高同态加密的适用性。
附图说明
图1为本申请实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本申请同态加密方法第一实施例的流程示意图;
图3为本申请实施例涉及的密文数乘运算流程图;
图4为本申请同态加密方法第二实施例的流程示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,图1为本申请实施例方案涉及的硬件运行环境的终端结构示意图。
本申请实施例终端为同态加密设备,该同态加密设备可以为PC(personalcomputer,个人计算机)、微型计算机、笔记本电脑、服务器等具有处理功能的终端设备。
如图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的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及同态加密程序。
在图1所示的终端中,处理器1001可以用于调用存储器1005中存储的同态加密程序,并执行本申请以下实施例提供的同态加密方法中的步骤。
基于上述硬件结构,提出本申请同态加密方法的各个实施例。
本申请提供一种同态加密方法。
参照图2,图2为本申请同态加密方法第一实施例的流程示意图。
在本实施例中,该同态加密方法应用于第一设备,该同态加密方法包括:
步骤S10,获取需要进行数乘运算的密文数据和明文标量,所述密文数据为同态加密下的数据;
在本实施例中,该同态加密方法应用于同态加密的场景下。进一步地,可以应用于联邦学习下的加密过程、安全计算或隐私计算中,或者应用于非联邦学习下的隐私计算中,此处不作具体限定。其中,同态加密的算法可以为Paillier(帕耶)算法,即加法同态的算法;同态加密的算法还可以为Gentry算法,即全同态的算法(包括加法同态和乘法同态的算法);当然,同态加密的算法还可以为其他同态加密算法,在本实施例及以下实施例以Paillier算法为例进行说明。
具体地,该同态加密方法可以应用于隐私性要求高或者数据量大的交互场景中,例如,图像识别、文本识别、语音识别等场景。也就是说,所述明文标量可以为图像数据、文本数据、语音数据等。当然,该同态加密方法的应用场景并不限定,可以应用于任何交互场景中,从而提高各场景下同态加密的性能。
进一步地,该同态加密方法可以应用于构建图像识别模型的联邦学习场景,或者应用于构建文本识别模型的联邦学习场景,或者应用于构建语音识别模型的联邦学习场景,或者应用于其他识别模型或预测模型的联邦学习场景。也就是说,所述明文标量可以为联邦学习对应的中间参数。具体的,参考下述第四实施例,此处不再一一赘述。
需要说明的是,明文标量是第一设备需要加密和发送的数据,而密文数据可以是其他方发送的密文(可以是其他方同样利用同态加密得到的密文,也可以是密钥或密钥相关参数)或者第一设备自身的进行同态加密的密钥。
在一实施例中,所述同态加密方法应用于参与联邦学习的第一设备,上述步骤S10包括:
接收参与联邦学习的第二设备的密文数据,并获取需要进行数乘运算的明文标量,所述密文数据为与所述明文标量进行数乘运算的数据。其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到密文数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该密文数乘运算结果也为密文,当然,第一设备还可以再对该密文数乘运算结果进行同态加密。
需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为A方,第二设备为B方,可以把B方的数据发给A方,因为B方的数据是密文,发给A方是没有风险的;A方会对数据进行计算,因为得到的结果仍然是密文,所以A方可以安全的去发给B方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在A方和B方的基础上可以加一个协调方C方,来进行逻辑回归运算。
在另一实施例中,所述同态加密方法应用于参与联邦学习的第一设备,上述步骤S10包括:
获取需要进行数乘运算的密文数据和明文标量,所述密文数据为同态加密的公钥。需要说明的是,密文数据为同态加密的公钥时,当前的数乘运算即对明文标量进行同态加密,从而得到该明文标量对应的密文。例如,第一设备为数据提供方,第一设备利用公钥对自身的明文标量进行同态加密,即进行数乘运算等价的模幂运算,从而得到该明文标量对应的密文,该模幂运算的模数也可以为同态加密的公钥,最后,第一设备将会将该密文发送给另一联邦学习的参与方。
在本实施例中,获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,密文数据为对明文标量进行同态加密的数据。其中,密文数据可以为进行同态加密后得到的密文;也可以为进行同态加密的公钥,或者为进行同态加密的相关密钥参数。
需要说明的是,同态加密密态下的密文数乘运算(密文乘法运算)是明文数据和密文数据的乘法,其可以等价于做模幂运算,即可以将明文作为幂指数进行幂次方运算。具体的,参考下述公式:
d*b≡db mod m;
其中,d为密文数据,b为明文标量,≡为等价符号,mod表示取模运算,m为模数,该模数m可以为同态加密过程中生成的密钥数据。
此外,还需要说明的是,对于取模运算来说,重复取模的结果不变,因此,若密文数据为进行模幂运算得到的数据,则同态加密密态下的密文数乘运算可以等价于做幂次方运算,即直接将密文数据作为幂运算底数,将明文标量中的明文元素作为幂运算指数,进行幂运算即可。具体的,参考下述公式:
d*b≡db;
其中,d为密文数据,b为明文标量,≡为等价符号。
在本实施例中,密文数据为一个密文元素。若在其他实施例中,密文数据为标量,则将密文数据中各密文元素单独与明文标量进行数乘运算,从而得到各密文元素对应的数乘运算结果。其中,密文数据的标量或明文标量包括一维向量形式、二维矩阵形式或更高维的标量形式。
进一步地,在上述步骤S10之后,所述同态加密方法还包括:
步骤A60,将所述明文标量进行数组转换,以使所述明文标量为明文数组。
在本实施例中,将明文标量进行数组转换,以使明文标量为明文数组。需要说明的是,若明文标量为二维矩阵形式或更高维的标量形式,则可以将明文标量进行数组转换,以将明文标量转换为明文数组,从而提升密文数乘运算的效率,且便于后续对明文标量中各明文元素按照从小到大的顺序进行排序。相应的,后续将数乘运算结果转化为明文标量进行数组转换之前的标量形式。
在一实施例中,在上述步骤S10之后,所述同态加密方法还包括:
若所述明文标量为明文矩阵,则将所述明文矩阵转化为明文数组,以使所述明文标量为明文数组。可以理解,将明文矩阵转化为明文数组,可提升数乘运算的效率。
相应的,在下述步骤S30之后,所述同态加密方法还包括:
将所述数乘运算结果转化为矩阵形式的运算结果。需要说明的是,将所述数乘运算结果转化为矩阵形式的转化过程与将所述明文矩阵转化为明文数组的过程对应,此处不作具体赘述。
在一些实施例中,在上述步骤S10之后,所述同态加密方法还包括:
步骤A70,对所述明文标量中各明文元素进行定点化处理。
在本实施例中,由于明文标量中可能存在浮点数,即明文元素可能为浮点数,基于此,为便于进行计算,对明文标量中各明文元素进行定点化处理,以得到定点化的明文元素。需要说明的是,无论明文标量中是否存在浮点数,均对明文标量中各明文元素进行定点化处理,后续只需对数乘运算结果进行相应的反定点化即可。
相应的,在下述步骤S50之后,所述同态加密方法还包括:
步骤A80,对所述同态加密结果进行反定点化处理。
在本实施例中,由于之前对明文标量中各明文元素进行定点化处理,因此,在得到同态加密结果之后,也需对同态加密结果进行反定点化处理。
在另一实施例中,上述步骤A70包括
若所述明文标量中各明文元素中存在浮点数,则将所述浮点数进行定点化,以使所述明文标量中各明文元素均为定点数。也就是说,用整数来模拟浮点数,对浮点数进行定点化,以得到定点数,从而提高密文数乘运算的效率。
步骤S20,对所述明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列;
在本实施例中,对明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列。其中,明文元素序列可以以数组形式进行表示,或者以数列等其他形式进行表示。该明文元素序列中各明文元素从小到大进行排列。
需要说明的是,无论明文标量是二维数组还是三维矩阵或者更高维的标量形式,均可以对明文标量中各明文元素按照从小到大的顺序进行排序。具体的,获取所述明文标量中各明文元素,将所述各明文元素按照从小到大的顺序进行排序,并基于排序后的各明文元素,生成排序后的明文元素序列。当然,将明文标量进行数组转换,以使明文标量为明文数组,可以进一步提高排序的效率。
相应的,在下述步骤S50之后,所述同态加密方法还包括:
步骤A90,基于所述明文标量中各明文元素未排序前的顺序,对所述同态加密结果中各运算结果进行排序。
在本实施例中,由于之前对明文标量中各明文元素按照从小到大的顺序进行排序,且后续进行幂运算也是基于排序后的明文元素序列,因此,在得到同态加密结果之后,也需基于明文标量中各明文元素未排序前的顺序,对同态加密结果中各运算结果进行排序,也就是说,恢复成原本明文标量中元素的排列顺序。
步骤S30,将所述排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,所述两两相减的过程为后一明文元素减去前一明文元素;
在本实施例中,将排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,两两相减的过程为后一明文元素减去前一明文元素。其中,由于明文元素序列从小到大进行排序,因此,邻接的明文元素为在所有明文元素中大小接近的两个明文元素。例如,明文元素序列为{7、15、30、35},则各邻接的明文元素包括{7、15}、{15、30}、{30、35},两两相减后,得到8、15、15,此时,相减后的明文元素序列为{7、8、15、15},其中,相减后的明文元素序列的第一个元素与排序后的明文元素序列的第一个元素相同。
步骤S40,对作为幂运算底数的所述密文数据和作为幂运算指数的所述相减后的明文元素序列进行幂运算,得到多个幂运算结果,所述多个幂运算结果的顺序与所述相减后的明文元素序列中元素的顺序一致;
在本实施例中,对作为幂运算底数的密文数据和作为幂运算指数的相减后的明文元素序列进行幂运算,得到多个幂运算结果,多个幂运算结果的顺序与相减后的明文元素序列中元素的顺序一致。其中,相减后的明文元素序列中一个元素对应一个幂运算结果,即相减后的明文元素序列的数量与多个幂运算结果的数量一致,因此,多个幂运算结果的顺序与相减后的明文元素序列中元素的顺序一致。
需要说明的是,明文元素序列有多少个元素,则构建多少个幂运算式,每个幂运算式的幂运算底数均是密文数据,而每个幂运算式的幂运算指数则对应不同的元素,基于此,可得到不同的幂运算结果。
在一实施例中,基于幂运算底数和多个幂运算指数利用计算单元分别进行幂运算,得到多个幂运算结果。
在另一实施例中,可以对所述相减后的明文元素序列中各元素进行预设进制的分解,得到各所述元素对应的数位序列,一所述数位序列对应一所述元素,一所述数位序列包括若干所述预设进制的数位;对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果。具体的执行过程参照下述第二实施例,此处不再一一赘述。
需要说明的是,同态加密密态下的密文数乘运算可以等价于做幂次方运算,即直接将密文数据作为幂运算底数,将明文标量中的明文元素作为幂运算指数,进行幂运算即可,而此时明文标量中的各明文元素进行排序和两两相减后得到相减后的明文元素序列,基于此,将相减后的明文元素序列作为幂运算指数。
此外,还需要说明的是,作为幂运算底数的密文数据和作为幂运算指数的明文元素的二进制位数往往比较大,例如1024比特、2048比特,因此本实施例用于提升密文数乘运算效率的收益较大,具有实用价值。基于此,若密文数据或明文元素的二进制位数越大,则本实施例用于提升密文数乘运算效率的收益越大。
可以理解,对作为幂运算底数的密文数据和作为幂运算指数的相减后的明文元素序列进行幂运算,由于相减后的明文元素序列中作为幂运算指数的各元素的位数小于原本作为幂运算指数的明文元素,因此,可以减少密文数乘运算的计算复杂度。
步骤S50,将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将所述同态加密结果发送至第二设备。
在本实施例中,将多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将同态加密结果发送至第二设备。其中,由于将排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,且幂运算结果是基于相减后的明文元素序列得到的,所以也需要将多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到数乘运算结果(即同态加密结果)。
其中,邻接的幂运算结果为在多个幂运算结果中顺序接近的两个幂运算结果。例如,多个幂运算结果为{8、16、32、64},则各邻接的幂运算结果包括{8、16}、{16、32}、{32、64},两两相乘后,得到128、512、2048,此时,数乘运算结果(即同态加密结果)为{8、128、512、2048},其中,数乘运算结果的第一个数乘运算结果与多个幂运算结果的第一个幂运算结果相同。
为便于理解,参照图3,图3为本申请实施例涉及的密文数乘运算流程图。其中,明文标量中各明文元素为x0、x1、x2、x3、x4、x5、x6、...、xn,然后,对明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列{x0'、x1'、x2'、x3'、x4'、x5'、x6'、...、xn'},之后,将排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列{x0'、x1'-x0'、x2'-x1'、...、xn'-xn-1'},之后,对作为幂运算底数的密文数据和作为幂运算指数的相减后的明文元素序列进行幂运算,得到多个幂运算结果{D^x0'、D^x1'-x0'、D^x2'-x1'、...、D^xn'-xn-1'},最后,将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘(即与前一个元素相乘),得到数乘运算结果{D^x0'、D^x1'、D^x2'、...、D^xn'}。
本申请实施例提供一种同态加密方法,通过获取第一设备待发送的明文标量,并获取与明文标量进行数乘运算的密文数据,由于密文数据为对明文标量进行同态加密的数据,因此,密文数据和明文标量可以直接进行数乘运算,即可以直接对密文进行处理,同时使数乘运算结果也为加密的结果;然后,对明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列,以使后续可以对各明文元素进行两两相减的处理;之后,将排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,其中,两两相减的过程为后一明文元素减去前一明文元素;之后对作为幂运算底数的密文数据和作为幂运算指数的相减后的明文元素序列进行幂运算,得到多个幂运算结果,多个幂运算结果的顺序与相减后的明文元素序列中元素的顺序一致;最后,将多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将同态加密结果发送至第二设备,与现有技术直接将明文元素作为幂运算指数进行幂运算相比,本申请对明文元素进行进行两两相减的处理,可以使幂运算指数的位数小于原本作为幂运算指数的明文元素,即降低幂运算的幂指数大小,从而降低计算复杂度,进而提高同态加密下密文数乘运算的效率,以使同态加密可以应用于及时性要求高或性能要求高的应用场景,从而提高同态加密的适用性。
进一步地,基于上述第一实施例,提出本申请同态加密方法的第二实施例。
参照图4,图4为本申请同态加密方法第二实施例的流程示意图。
在本实施例中,上述步骤S40包括:
步骤S41,对所述相减后的明文元素序列中各元素进行预设进制的分解,得到各所述元素对应的数位序列,一所述数位序列对应一所述元素,一所述数位序列包括若干所述预设进制的数位;
在本实施例中,对相减后的明文元素序列中各元素进行预设进制的分解,得到各元素对应的数位序列,一数位序列对应一元素,一数位序列包括若干预设进制的数位。其中,若干预设进制的数位包括一个或多个数位。
需要说明的是,预设进制可以包括二进制、八进制或十六进制等。为进一步提高数乘运算的效率,可以将预设进制设定为二进制,以符合当前计算设备的计算进制,当然,也可以设定为其他更高次幂进制,同样便于计算设备处理。
在一实施例中,上述步骤S41包括:
对所述相减后的明文元素序列中各元素进行二进制的分解,得到各所述元素对应的二进制数位序列,一所述二进制数位序列对应一所述元素,一所述二进制数位序列包括若干所述二进制的数位。其中,若干二进制的数位包括一个或多个数位。
需要说明的是,相减后的明文元素序列中各元素可以看成一组二进制的数字,即二进制数位序列。例如,该相减后的明文元素序列中一元素为7,则7=1+2+4=2^0+2^1+2^2;该相减后的明文元素序列中一元素为19,则19=16+2+1=2^4+2^1+2^0。
此外,还需要说明的是,数位序列中各数位之间的关系为加法关系,例如,数位序列为{2^0、2^1、2^2},则数位序列中各数位相加的结果为2^0+2^1+2^2=1+2+4=7。也就是说,将相减后的明文元素序列中各元素拆解为二进制数位相加的结果。具体的,相减后的明文元素序列中一元素b为:
其中,i表示当前比特所处的位置,n表示元素b的比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为1,若bi的取值为0则代表对应比特数为0。
可以理解,对于更高次幂的进制分解与二进制分解的执行过程基本相同,此处不再一一赘述。例如,预设进制为八进制时,相减后的明文元素序列中一元素b为:
其中,i表示当前比特所处的位置,n表示元素b的比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为非0数,若bi的取值为0则代表对应比特数为0。
步骤S42,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果。
在本实施例中,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,得到多个幂运算结果。
为便于理解,以所述预设进制为二进制为例进行说明,在相减后的明文元素序列中一元素b为:
其中,i表示当前比特所处的位置,n表示元素b的比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为1,若bi的取值为0则代表对应比特数为0。基于此,可以转化为各幂运算结果的乘积。具体的,参考下述公式:
其中,d为密文数据,b为相减后的明文元素序列中一元素,i表示元素b中当前比特所处的位置,n表示元素b的比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为1,若bi的取值为0则代表对应比特数为0。例如,元素b的比特位数n为53比特,参考下述公式:
具体的,基于上述进行幂运算的推导公式可知,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,可以转化作幂运算和乘法运算。即上述步骤S42包括:对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算和乘法运算,得到多个幂运算结果。
需要说明的是,作为幂运算底数的密文数据和作为幂运算指数的元素的二进制位数往往比较大,例如1024比特、2048比特,因此本实施例用于提升密文数乘运算效率的收益较大,具有实用价值。基于此,若密文数据或元素的二进制位数越大,则本实施例用于提升密文数乘运算效率的收益越大。
可以理解,对作为幂运算底数的密文数据和作为幂运算指数的各数位序列进行幂运算,由于数位序列中作为幂运算指数的各数位的位数小于原本作为幂运算指数的元素,因此,可以减少密文数乘运算的计算复杂度。具体的,将元素设定为n,则原本直接将元素作为幂运算指数进行幂运算的计算复杂度为n,即进行n次乘法,而将进行预设进制分解后的各数位序列作为幂运算指数进行幂运算的计算复杂度为log(n),即进行log(n)次乘法。
进一步地,上述步骤S42包括:
步骤A421,将所述密文数据作为幂运算底数,将一所述数位序列中的若干数位作为幂运算指数;
在本实施例中,将密文数据作为幂运算底数,将一数位序列中的若干数位作为幂运算指数。其中,一数位序列中可以包括1个或多个数位。例如,上述步骤S41的预设进制为二进制,相减后的明文元素序列中一元素为4,则其数位序列包括一个2^2;相减后的明文元素序列中一元素为7,则其数位序列包括2^0、2^1和2^2。又例如,上述步骤S41的预设进制为八进制,相减后的明文元素序列中一元素为64,则其数位序列包括一个8^2;相减后的明文元素序列中一元素为75,则其数位序列包括8^1、8^2和3。
步骤A422,基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干子幂运算结果;
在本实施例中,基于幂运算底数和若干幂运算指数进行幂运算,得到若干子幂运算结果。其中,若干幂运算指数的数量与若干子幂运算结果的数量一一对应。
需要说明的是,有多少个幂运算指数,则构建多少个幂运算式,每个幂运算式的幂运算底数均是密文数据,而每个幂运算式的幂运算指数则对应不同的数位,基于此,可得到不同的子幂运算结果。
在一实施例中,基于幂运算底数和若干幂运算指数利用计算单元分别进行幂运算,得到若干子幂运算结果。
在另一实施例中,上述步骤A422包括:
基于所述幂运算底数和若干所述幂运算指数,获取预先存储的若干子幂运算结果,所述预先存储的若干幂运算结果为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干子幂运算结果。具体的,基于幂运算底数和若干幂运算指数,可以确定对应的若干幂运算式,进而基于该若干幂运算式获取预先存储的若干子幂运算结果,其中,预先存储的若干子幂运算结果也为基于幂运算底数和若干幂运算指数进行幂运算得到的若干子幂运算结果。
需要说明的是,在基于幂运算底数和若干幂运算指数进行幂运算时,无需再利用计算单元再计算子幂运算结果,只需复用提前计算并存储好的子幂运算结果,从而可以节省计算流程和计算资源,进而进一步提高密文数乘运算效率。
相应的,为获取预先存储的若干子幂运算结果,在所述基于所述幂运算底数和若干所述幂运算指数,获取预先存储的若干子幂运算结果的步骤之前,所述同态加密方法还包括:
对所述明文标量的最大值进行预设进制的分解,得到对应的最大值数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值数位序列进行幂运算,得到多个子幂运算结果;将所述多个子幂运算结果进行存储,以供基于所述多个子幂运算结果,对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算。
在另一实施例中,所述预设进制为二进制,上述步骤A422包括:
将若干所述幂运算指数的数量与当前元素的二进制比特位数进行比较,所述当前元素为若干所述幂运算指数对应的元素;若所述二进制比特位数的一半小于所述数量,则基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前元素的二进制数确定预先存储的若干零比特幂运算结果,所述零比特幂运算结果为所述二进制数中比特数为零对应的幂运算结果,所述零比特幂运算结果的幂运算底数为所述密文数据,所述零比特幂运算结果的幂运算指数为所述二进制数中比特数为零对应的二进制位数的负数;将所述最大幂运算结果和所述若干零比特幂运算结果作为基于所述幂运算底数和若干所述幂运算指数进行幂运算得到的若干子幂运算结果。
具体的,判断当前元素的二进制比特数是1更多还是0更多,若1更多,则当前元素的二进制比特位数的一半小于若干幂运算指数的数量;若0更多,则当前元素的二进制比特位数的一半大于若干幂运算指数的数量。若幂运算底数为d,二进制比特位数为n,则最大幂运算结果为基于当前元素的二进制数确定二进制数中为0的比特数,并获取为0的比特数上对应的二进制位数,然后,基于密文数据和该二进制位数确定对应的幂运算式,最后,基于该幂运算式获取对应的零比特幂运算结果。
其中,二进制比特位数表示当前元素的比特长度,例如,当前元素的二进制数为111110,则二进制比特位数为6。
需要说明的是,若干幂运算指数的数量表示当前元素进行二进制分解后得到的数位序列的数位数量。具体的,参考下述公式:
其中,b表示当前元素,i表示当前比特所处的位置,n表示当前元素b的二进制比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为1,若bi的取值为0则代表对应比特数为0。基于此,当前元素b在i=0至i=n位置上比特数为1则对应bi为1,进而数位序列中存在对应数位2i,进而存在对应的幂运算指数2i。例如,当前元素的二进制比特数为111110,则该当前元素对应的数位序列的数位数量为5,相应的,若干幂运算指数的数量也为5。
其中,最大幂运算结果为该当前元素的二进制比特位数对应的最大值,例如密文数据为d,二进制比特位数为4,则对应的最大幂运算结果为d15,二进制比特位数为5,则对应的最大幂运算结果为d31。
其中,当前元素的二进制数为当前元素的二进制表示形式,例如当前元素的二进制比特位数为4,当前元素的十进制数为14,则当前元素的二进制数为1110。零比特幂运算结果为该当前元素的二进制数上比特数为零对应的幂运算结果,例如密文数据为d,若当前元素的二进制数为1110,则零比特幂运算结果为d-1,若当前元素的二进制数为11100,则零比特幂运算结果为d-1和d-2,若当前元素的二进制数为11010,则零比特幂运算结果为d-1和d-3。
其中,二进制位数从1开始递增,即当前元素的二进制数的最低位的二进制位数为1.
例如,幂运算底数(密文数据)为2,当前元素的二进制比特位数为4,则最大幂运算结果为215,若当前元素的二进制数为1110,则零比特幂运算结果为2-1,且只有一个零比特幂运算结果,以便后续最大幂运算结果215与零比特幂运算结果为2-1相乘得到214。又例如,幂运算底数(密文数据)为4,当前元素的二进制比特位数为4,则最大幂运算结果为415,若当前元素的二进制数为1110,则零比特幂运算结果为4-1,且只有一个零比特幂运算结果,以便后续最大幂运算结果415与零比特幂运算结果为4-1相乘得到414。
可以理解,若当前元素的二进制比特位数的一半小于幂运算指数的数量,则表示当前元素的二进制数1多0少,此时如果直接基于幂运算底数和若干幂运算指数进行幂运算,则后续将若干子幂运算结果进行乘法运算的乘法运算次数一定大于n/2,其中,n为当前元素的二进制比特位数;而通过本实施例,由于若干零比特幂运算结果一定小于n/2,相应的,后续将若干子幂运算结果进行乘法运算的乘法运算次数一定小于n/2,因此,本实施例可进一步提高密文数乘运算效率。
相应的,在所述若所述二进制比特位数的一半小于所述数量,则基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前元素的二进制数确定预先存储的若干零比特幂运算结果的步骤之前,所述同态加密方法还包括:
获取所述明文标量的最大值,并基于所述明文标量的比特位数确定负数数位序列,所述明文标量的最大值由所述明文标量的比特位数进行确定;基于作为幂运算底数的所述密文数据和作为幂运算指数的所述最大值进行幂运算,得到最大幂运算结果;并基于作为幂运算底数的所述密文数据和作为幂运算指数的所述负数数位序列进行幂运算,得到若干零比特幂运算结果;将所述最大幂运算结果和所述若干零比特幂运算结果进行存储,以供基于所述幂运算底数和所述二进制比特位数确定预先存储的最大幂运算结果,并基于所述当前元素的二进制数确定预先存储的若干零比特幂运算结果。也就是说,计算并将结果储存下来作为最大幂运算结果,计算d-1、d-2、d-3至d-n的结果作为各个零比特幂运算结果,其中,d为密文数据,n为明文标量的比特位数。
可以理解,由于存储的最大幂运算结果和零比特幂运算结果可以复用,所以当明文标量的维度更高时,由于明文标量包含的明文元素更多,复用性更强,以使本实施例用于提升密文数乘运算效率的收益更大,更具有实用价值。同时,作为幂运算底数的密文数据和作为幂运算指数的元素的二进制位数往往比较大,例如1024比特、2048比特,因此利用存储的最大幂运算结果和零比特幂运算结果可复用的特点,以使本实施例用于提升密文数乘运算效率的收益提升。基于此,若密文数据或当前元素的二进制位数越大,则本实施例用于提升密文数乘运算效率的收益越大。
此外,还需要说明的是,后续需要将若干子幂运算结果进行乘法运算,得到一元素对应的幂运算结果,基于此,最大幂运算结果和若干零比特幂运算结果的乘积等于基于幂运算底数和若干幂运算指数进行幂运算得到的若干子幂运算结果的乘积,因此,可将最大幂运算结果和所述若干零比特幂运算结果作为若干子幂运算结果,即一个最大幂运算结果对应一个子幂运算结果,一个零比特幂运算结果对应一个子幂运算结果,若干子幂运算结果的数量为若干零比特幂运算结果的数量加一。
为便于理解,例如幂运算底数(密文数据)为2,当前元素的二进制比特位数为4,则最大幂运算结果为215,若当前元素的二进制数为1110,则零比特幂运算结果为2-1,且只有一个零比特幂运算结果,以便后续最大幂运算结果215与零比特幂运算结果为2-1相乘得到214。基于此,若干幂运算指数分别为2、4、8,对应的若干子幂运算结果为22、24、28,后续将若干子幂运算结果22、24、28进行相乘得到214,因此,采取上述实施例或者采取本实施例所得到的数乘运算结果均一样。
步骤A423,将所述若干子幂运算结果进行乘法运算,得到一所述元素对应的幂运算结果;
在本实施例中,将若干子幂运算结果进行乘法运算,得到一元素对应的幂运算结果。具体的,将若干子幂运算结果依次进行乘法运算,最终得到一元素对应的幂运算结果。
需要说明的是,参考上述分析得到的公式:
其中,d为密文数据,b为数位序列中一元素,i表示元素b中当前比特所处的位置,n表示元素b的比特位数,bi的取值为1或0,若bi的取值为1则代表对应比特数为1,若bi的取值为0则代表对应比特数为0。基于此,可以得知,在计算得到若干子幂运算结果时,还需要对若干子幂运算结果/>进行累乘,从而得到一元素对应的幂运算结果。
步骤A424,返回将一所述数位序列中的若干数位作为幂运算指数的步骤,直至各所述数位序列均进行幂运算;
在本实施例中,返回上述步骤A421中,将一数位序列中的若干数位作为幂运算指数的步骤,直至各数位序列均进行幂运算。需要说明的是,上述步骤A422和A423是用于计算一元素对应的幂运算结果,而相减后的明文元素序列包括若干元素,每一个元素对应一数位序列,因此,需要循环执行上述计算一元素对应的幂运算结果的步骤,直至各数位序列均进行幂运算,并均得到对应的幂运算结果。
步骤A425,基于各所述元素对应的幂运算结果,得到多个幂运算结果。
在本实施例中,基于各元素对应的幂运算结果,确定多个幂运算结果。
本实施例中,与现有技术直接将排序后的明文元素序列中的元素作为幂运算指数进行幂运算相比,本申请对元素进行预设进制的分解,可以使作为幂运算指数的各数位的位数小于原本作为幂运算指数的元素,从而降低计算复杂度,进而进一步提高同态加密下密文数乘运算的效率。
进一步地,基于上述第一实施例,提出本申请同态加密方法的第三实施例。
在本实施例中,所述第一设备为参与联邦学习的设备,在上述步骤S10之前,该同态加密方法还包括:
在接收到参与联邦学习的第二设备的密文数据时,进入获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据的步骤,以得到逻辑回归模型。具体的,在接收到参与联邦学习的第二设备的密文数据时,该密文数据即需要进行数乘运算的密文数据。该密文数据为第二设备对自身明文数据进行同态加密得到的数据,该明文数据为第二设备所需发送和共享的数据。
其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的明文数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该数乘运算结果也为密文,当然,第一设备还可以再对该数乘运算结果进行同态加密。
需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为A方,第二设备为B方,可以把B方的数据发给A方,因为B方的数据是密文,发给A方是没有风险的;A方会对数据进行计算,因为得到的结果仍然是密文,所以A方可以安全的去发给B方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在A方和B方的基础上可以加一个协调方C方,来进行逻辑回归运算,以得到逻辑回归模型。
在一实施例中,逻辑回归模型如下所述:
其中,wTx为联邦学习的中间参数,wTx为第一设备与第二设备需要交互的数据,例如,第二设备自身的wTx设定为uA,第二设备对uA进行同态加密得到[[uA]],然后第一设备接收[[uA]],并将该密文数据[[uA]]与自身的明文数据进行运算,例如自身的明文数据为wTx(设定为uB)。
需要说明的是,对损失函数和梯度做泰勒展开,进行多项式近似,从而支持同态加密,即只有数乘和加减法。可以理解,损失函数和梯度均包括逻辑回归模型中的wTx,因此,构建逻辑回归模型之后,可以对第一设备和/或第二设备的模型进行模型训练和模型预测等。具体的,同态加密在联邦学习的应用非常广泛,此处不再一一赘述。
在一些实施例中,所述第一设备为参与联邦学习的设备,上述步骤S10包括:
步骤A11,接收参与联邦学习的第二设备发送的密文数据,并获取所述第一设备待发送的明文标量,以将所述明文标量与所述密文数据进行数乘运算。
在本实施例中,接收参与联邦学习的第二设备发送的密文数据,并获取第一设备待发送的明文标量,以将明文标量与所述密文数据进行数乘运算。其中,参与联邦学习的第一设备可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。相应的,参与联邦学习的第二设备也可以为联邦学习的参与方,即数据方(数据提供方或数据应用方)或协作方(协调方)。例如,第一设备作为数据应用方,第二设备作为数据提供方,首先,第二设备对自身的数据进行同态加密得到密文数据,然后,第二设备将该密文数据发送至第一设备,以供第一设备接收第二设备的密文数据,最后,第一设备将该密文数据与自身的明文数据进行数乘运算,以得到密文数乘运算结果,可以理解,密文数据与明文数据运算得到的结果也为加密的数据,即该密文数乘运算结果也为密文,当然,第一设备还可以再对该密文数乘运算结果进行同态加密。
需要说明的是,第二设备的密文数据为第二设备对自身的明文数据进行同态加密得到的密文。此外,密文数据与明文标量进行数乘运算称为标量的同态,即用一个明文乘一个密文,仍然得到一个密文。例如,第一设备为A方,第二设备为B方,可以把B方的数据发给A方,因为B方的数据是密文,发给A方是没有风险的;A方会对数据进行计算,因为得到的结果仍然是密文,所以A方可以安全的去发给B方,因为这两方都是持有了公钥,并不能对该数据进行解密;当然,在A方和B方的基础上可以加一个协调方C方,来进行逻辑回归运算。
本实施例中,将同态加密方法应用于联邦学习的场景中,以解决同态加密的逻辑回归中,计算密文数据与明文数据的乘积的运算瓶颈,进而解决联邦学习中,同态加密下密文数乘运算效率过低的问题。
本申请还提供一种计算机可读存储介质,该计算机可读存储介质上存储有同态加密程序,所述同态加密程序被处理器执行时实现如以上任一项实施例所述的同态加密方法的步骤。
本申请计算机可读存储介质的具体实施例与上述同态加密方法各实施例基本相同,在此不作赘述。
本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序产品被处理器执行时实现如以上任一项实施例所述的同态加密方法的步骤。
本申请计算机程序产品的具体实施例与上述同态加密方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种同态加密方法,其特征在于,应用于第一设备,所述同态加密方法包括以下步骤:
获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据,所述密文数据为对所述明文标量进行同态加密的数据;
对所述明文标量中各明文元素按照从小到大的顺序进行排序,得到排序后的明文元素序列;
将所述排序后的明文元素序列中各邻接的明文元素进行两两相减,得到相减后的明文元素序列,所述两两相减的过程为后一明文元素减去前一明文元素;
对作为幂运算底数的所述密文数据和作为幂运算指数的所述相减后的明文元素序列进行幂运算,得到多个幂运算结果,所述多个幂运算结果的顺序与所述相减后的明文元素序列中元素的顺序一致;
将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果,并将所述同态加密结果发送至第二设备。
2.如权利要求1所述的同态加密方法,其特征在于,所述对作为幂运算底数的所述密文数据和作为幂运算指数的所述相减后的明文元素序列进行幂运算,得到多个幂运算结果的步骤包括:
对所述相减后的明文元素序列中各元素进行预设进制的分解,得到各所述元素对应的数位序列,一所述数位序列对应一所述元素,一所述数位序列包括若干所述预设进制的数位;
对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果。
3.如权利要求2所述的同态加密方法,其特征在于,所述对作为幂运算底数的所述密文数据和作为幂运算指数的各所述数位序列进行幂运算,得到多个幂运算结果的步骤包括:
将所述密文数据作为幂运算底数,将一所述数位序列中的若干数位作为幂运算指数;
基于所述幂运算底数和若干所述幂运算指数进行幂运算,得到若干子幂运算结果;
将所述若干子幂运算结果进行乘法运算,得到一所述元素对应的幂运算结果;
返回将一所述数位序列中的若干数位作为幂运算指数的步骤,直至各所述数位序列均进行幂运算;
基于各所述元素对应的幂运算结果,得到多个幂运算结果。
4.如权利要求1所述的同态加密方法,其特征在于,获取需要进行数乘运算的密文数据和明文标量的步骤之后,还包括:
对所述明文标量中各明文元素进行定点化处理;
所述将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果的步骤之后,还包括:
对所述同态加密结果进行反定点化处理。
5.如权利要求1所述的同态加密方法,其特征在于,获取需要进行数乘运算的密文数据和明文标量的步骤之后,还包括:
将所述明文标量进行数组转换,以使所述明文标量为明文数组。
6.如权利要求1所述的同态加密方法,其特征在于,所述将所述多个幂运算结果中各邻接的幂运算结果进行两两相乘,得到同态加密结果的步骤之后,还包括:
基于所述明文标量中各明文元素未排序前的顺序,对所述同态加密结果中各运算结果进行排序。
7.如权利要求1至6中任一项所述的同态加密方法,其特征在于,所述第一设备为参与联邦学习的设备,所述获取所述第一设备待发送的明文标量,并获取与所述明文标量进行数乘运算的密文数据的步骤包括:
接收参与联邦学习的第二设备发送的密文数据,并获取所述第一设备待发送的明文标量,以将所述明文标量与所述密文数据进行数乘运算。
8.一种同态加密设备,其特征在于,所述同态加密设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同态加密程序,所述同态加密程序被所述处理器执行时实现如权利要求1至7中任一项所述的同态加密方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有同态加密程序,所述同态加密程序被处理器执行时实现如权利要求1至7中任一项所述的同态加密方法的步骤。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的同态加密方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111078984.1A CN113746620B (zh) | 2021-09-13 | 2021-09-13 | 同态加密方法、设备、介质及计算机程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111078984.1A CN113746620B (zh) | 2021-09-13 | 2021-09-13 | 同态加密方法、设备、介质及计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113746620A CN113746620A (zh) | 2021-12-03 |
CN113746620B true CN113746620B (zh) | 2024-04-23 |
Family
ID=78738979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111078984.1A Active CN113746620B (zh) | 2021-09-13 | 2021-09-13 | 同态加密方法、设备、介质及计算机程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746620B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965314B (zh) * | 2021-12-22 | 2022-03-11 | 深圳市洞见智慧科技有限公司 | 同态加密处理方法及相关设备 |
CN114172631B (zh) * | 2022-02-14 | 2022-05-06 | 支付宝(杭州)信息技术有限公司 | 一种基于秘密分享的排序方法和*** |
CN114584284A (zh) * | 2022-04-15 | 2022-06-03 | 支付宝(杭州)信息技术有限公司 | 同态加密操作方法、装置和电子设备 |
CN116150795B (zh) * | 2023-04-17 | 2023-07-14 | 粤港澳大湾区数字经济研究院(福田) | 基于同态加密的数据处理方法、***及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109936435A (zh) * | 2019-01-24 | 2019-06-25 | 中国人民武装警察部队工程大学 | 具有快速同态运算过程ntru型多密钥全同态加密方法 |
CN111339562A (zh) * | 2020-02-28 | 2020-06-26 | 中国工商银行股份有限公司 | 保序/揭序密文恢复方法及装置 |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
US10936744B1 (en) * | 2010-04-21 | 2021-03-02 | Stanley Trepetin | Mathematical method for performing homomorphic operations |
-
2021
- 2021-09-13 CN CN202111078984.1A patent/CN113746620B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936744B1 (en) * | 2010-04-21 | 2021-03-02 | Stanley Trepetin | Mathematical method for performing homomorphic operations |
CN109936435A (zh) * | 2019-01-24 | 2019-06-25 | 中国人民武装警察部队工程大学 | 具有快速同态运算过程ntru型多密钥全同态加密方法 |
CN111339562A (zh) * | 2020-02-28 | 2020-06-26 | 中国工商银行股份有限公司 | 保序/揭序密文恢复方法及装置 |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
Non-Patent Citations (2)
Title |
---|
Efficient Private Comparison Queries Over Encrypted Databases Using Fully Homomorphic Encryption With Finite Fields;Benjamin Hong Meng Tan等;IEEE Transactions on Dependable and Secure Computing ( Volume: 18, Issue: 6, 01 Nov.-Dec. 2021);20200117;全文 * |
杨强等.《联邦学习实战》.2021,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113746620A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113746620B (zh) | 同态加密方法、设备、介质及计算机程序产品 | |
US10554390B2 (en) | Homomorphic factorization encryption | |
US7995765B2 (en) | Sharing a secret using hyperplanes over GF(q) | |
US8352529B2 (en) | Modular multiplication calculation apparatus used for montgomery method | |
CN111368336B (zh) | 基于秘密共享的训练方法、装置、电子设备及存储介质 | |
US7995764B2 (en) | Sharing a secret using hyperplanes over GF(2m) | |
CN114696990B (zh) | 基于全同态加密的多方计算方法、***及相关设备 | |
CN112769542B (zh) | 基于椭圆曲线的乘法三元组生成方法、装置、设备及介质 | |
CN103973439B (zh) | 一种多变量公钥加密方法 | |
Pashakolaee et al. | Hyper-chaotic Feeded GA (HFGA): a reversible optimization technique for robust and sensitive image encryption | |
CN113965331B (zh) | 密态预测验证方法、装置、设备及存储介质 | |
Cahyono et al. | A cryptographic algorithm using wavelet transforms over max-plus algebra | |
Bos et al. | The matrix reloaded: Multiplication strategies in FrodoKEM | |
CN113434886A (zh) | 联合生成用于安全计算的数据元组的方法及装置 | |
CN113794548A (zh) | 同态加密方法、设备、介质及计算机程序产品 | |
CN111859440A (zh) | 基于混合协议的分布式隐私保护逻辑回归模型的样本分类方法 | |
CN114726524B (zh) | 目标数据的排序方法、装置、电子设备及存储介质 | |
CN116684062A (zh) | 基于代理重加密的云计算外包和数据动态分享方法及*** | |
CN114726580B (zh) | 数据处理方法和装置 | |
CN114221753B (zh) | 密钥数据处理方法和电子设备 | |
CN115996119A (zh) | 一种具有隐私保护的模型预测方法、装置、设备及介质 | |
CN116842532A (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
CN115134471A (zh) | 图像加密、解密方法以及相关设备 | |
CN114584284A (zh) | 同态加密操作方法、装置和电子设备 | |
CN115918028A (zh) | 对同态密文执行统计操作的装置及其方法 |
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 |