CN112865954A - 用于Paillier解密的加速器、芯片及*** - Google Patents
用于Paillier解密的加速器、芯片及*** Download PDFInfo
- Publication number
- CN112865954A CN112865954A CN202110453655.4A CN202110453655A CN112865954A CN 112865954 A CN112865954 A CN 112865954A CN 202110453655 A CN202110453655 A CN 202110453655A CN 112865954 A CN112865954 A CN 112865954A
- Authority
- CN
- China
- Prior art keywords
- module
- parameter
- public key
- ciphertext data
- montgomery
- 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.)
- Granted
Links
Images
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)
- Storage Device Security (AREA)
Abstract
本申请涉及一种用于Paillier解密的加速器、芯片及***。加速器包括:模幂计算模块,通过多个并行模幂计算引擎输出模幂计算结果;减法模块,对模幂计算结果进行减法运算并输出减法运算结果;除法模块,对减法运算结果进行除法运算并输出除法运算结果;蒙哥马利化模块,对除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果,对从管理模块接收的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥;其中,针对多组密文数据的每一个密文数据,在除法模块输出与该密文数据对应的除法运算结果之前,蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥。如此提高Paillier解密运算的模块利用率和数据吞吐速度。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于Paillier解密的加速器、芯片及***。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习相关应用场景中,拥有数据的各个参与方通过隐私保护技术来保护数据安全和用户隐私,例如采用同态加密方法对原始数据也叫明文进行加密后再将加密后的密态数据也叫密文用在模型训练、梯度计算、参数计算等。同态加密方法允许直接在密文上进行代数运算等有效操作例如加法运算和乘法运算,并且直接对密文进行计算的结果等效于解密后对明文进行计算的结果,从而仅根据公钥和密文进行计算而无需知道密钥。一种常见的同态加密方法是Paillier算法。Paillier算法满足加法同态和数乘同态,在数据加密和隐私保护方面有很高的安全性并获得了广泛的应用。Paillier算法包括Paillier加密和Paillier解密两个部分。其中,Paillier加密基于高阶剩余类的公钥对明文进行加密。Paillier解密的计算流程涉及模幂计算、除法运算和取模运算等运算复杂度较高的算子操作,而且这些复杂运算的运算位数往往是1024比特或者2048比特甚至更长的大整数。
现有技术中,用于执行Paillier解密的计算流程或者相关软件层操作的硬件难以应对大整数位宽的复杂算子操作如模幂计算和除法运算。例如,基于指令集体系的中央处理器(Central Processing Unit,CPU)需要将复杂算子操作转换成指令集体系内的各种简单指令的组合,计算能力低下且耗时较多。适合进行大规模并行运算的图形处理器(Graphics Processing Unit,GPU)成本高且功耗大,而且GPU用于需要串行处理的大整数位宽的复杂运算会造成效率低下和资源浪费。为此,需要一种用于Paillier解密的加速器、芯片及***,既能高效处理海量的大整数模幂计算和除法运算等复杂运算,又能做到耗时较少功耗低。
发明内容
本申请实施例为了解决既能高效处理海量的大整数模幂计算和除法运算等复杂运算又能做到耗时较少功耗低这一难题,通过提供一种用于Paillier解密的加速器、芯片及***,从而通过流水式对多组密文数据进行Paillier解密运算而提高模块利用率和数据吞吐速度。
第一方面,本申请实施例提供了一种加速器,应用于Paillier解密。所述加速器包括:模幂计算模块,其中,所述模幂计算模块包括多个并行模幂计算引擎,所述模幂计算模块配置成通过所述多个并行模幂计算引擎进行模幂计算并输出模幂计算结果;减法模块,其中,所述减法模块配置成对所述模幂计算结果进行减法运算并输出减法运算结果;除法模块,其中,所述除法模块配置成对所述减法运算结果进行除法运算并输出除法运算结果;管理模块,其中,所述管理模块配置成将多组密文数据按照每次一个密文数据的方式连续地发送给所述模幂计算模块,所述多组密文数据的每一组密文数据包括多个密文数据并且同一组密文数据的多个密文数据之间共享公钥和私钥;蒙哥马利化模块,其中,所述蒙哥马利化模块配置成对所述除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果,所述蒙哥马利化模块还配置成从所述管理模块接收私钥和对从所述管理模块接收的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥;其中,针对所述多组密文数据的每一个密文数据,在所述除法模块输出与该密文数据对应的除法运算结果之前,所述管理模块将该密文数据的私钥发送给所述蒙哥马利化模块并且所述蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥。
第一方面所描述的技术方案,通过将Paillier解密的计算流程展开后用多个模块依次完成相应的运算步骤从而可以流水式对多组密文数据进行解密运算,同时通过在除法模块输出与该密文数据对应的除法运算结果之前由蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥,有助于提高模块利用率和数据吞吐速度。
根据第一方面,在一种可能的实现方式中,所述蒙哥马利化模块还包括模乘计算单元,所述蒙哥马利化模块通过复用所述模乘计算单元来对所述除法运算结果进行蒙哥马利化运算和对从所述管理模块接收的私钥进行蒙哥马利化运算。如此,通过复用模乘计算单元实现了节省计算资源。
根据第一方面,在一种可能的实现方式中,所述蒙哥马利化模块还包括除法运算结果先进先出FIFO存储器用于存储从所述除法模块接收的除法运算结果,私钥FIFO存储器用于存储从所述管理模块接收的私钥,以及数据选择器,其中,所述数据选择器与所述除法运算结果FIFO存储器和所述私钥FIFO存储器连接,所述数据选择器根据选择信号来选择所述除法运算结果FIFO存储器的输出或者所述私钥FIFO存储器的输出作为第一参数,所述模乘计算单元根据所述第一参数和第二参数进行模乘计算。如此,通过FIFO存储器实现了提高各个模块进行相应运算的利用率,从而提高单位时间内数据处理量,提高整体数据吞吐速度和运行效率。
根据第一方面,在一种可能的实现方式中,所述蒙哥马利化模块还包括分发选择器,所述分发选择器根据所述选择信号来选择所述模乘计算单元的输出作为所述蒙哥马利化除法运算结果或者所述蒙哥马利化私钥。如此,通过分发选择器和选择信号实现了选择性输出相应模乘计算结果。
根据第一方面,在一种可能的实现方式中,所述蒙哥马利化模块还包括第二参数生成器,所述第二参数生成器从所述管理模块接收公钥并输出与从所述管理模块接收的公钥对应的第二参数。如此,通过第二参数生成器实现了生成与公钥对应的第二参数。
根据第一方面,在一种可能的实现方式中,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,其中,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较从所述管理模块接收的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与从所述管理模块接收的公钥相同。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
根据第一方面,在一种可能的实现方式中,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与从所述管理模块接收的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与从所述管理模块接收的公钥对应的第二参数。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
根据第一方面,在一种可能的实现方式中,所述公钥比较器确定所述多个预存公钥与从所述管理模块接收的公钥均不相同时,所述第二参数计算器根据从所述管理模块接收的公钥计算新的第二参数,所述新的第二参数作为与从所述管理模块接收的公钥对应的第二参数,所述第二参数索引存储器将从所述管理模块接收的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
根据第一方面,在一种可能的实现方式中,所述加速器还包括模乘计算模块,其中,所述模乘计算模块配置成对与同一个密文数据相对应的所述蒙哥马利化除法运算结果和所述蒙哥马利化私钥进行蒙哥马利化域模乘运算得到蒙哥马利化域模乘运算结果,对所述蒙哥马利化域模乘运算结果进行去蒙哥马利化运算得到解密结果。如此,通过模乘计算模块实现了蒙哥马利化域的平方乘计算,从而得到解密结果也就是明文数据。
根据第一方面,在一种可能的实现方式中,所述模幂计算模块,所述减法模块,所述除法模块以及所述模乘计算模块各自包括FIFO存储器用于连续地处理所述管理模块所发送的密文数据。如此,通过FIFO存储器实现了提高各个模块进行相应运算的利用率,从而提高单位时间内数据处理量,提高整体数据吞吐速度和运行效率。
第二方面,本申请实施例提供了一种用于联邦学习的加解密***,其特征在于,所述加解密***包括根据第一方面中任一项所述的加速器,用于执行Paillier解密任务。
第二方面所描述的技术方案,利用第一方面的加速器来执行Paillier解密任务,可以流水式对多组密文数据进行解密运算并且有助于提高模块利用率和数据吞吐速度。
第三方面,本申请实施例提供了一种芯片。所述芯片包括:接口模块,其中,所述接口模块用于接收多组密文数据,所述多组密文数据的每一组密文数据包括多个密文数据并且同一组密文数据的多个密文数据之间共享公钥和私钥;管理模块,其中,所述管理模块与所述接口模块连接;模幂计算模块,其中,所述模幂计算模块包括多个并行模幂计算引擎,所述模幂计算模块配置成通过所述多个并行模幂计算引擎进行模幂计算并输出模幂计算结果;减法模块,其中,所述减法模块配置成对所述模幂计算结果进行减法运算并输出减法运算结果;除法模块,其中,所述除法模块配置成对所述减法运算结果进行除法运算并输出除法运算结果;以及蒙哥马利化模块,其中,所述蒙哥马利化模块配置成对所述除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果;其中,针对所述多组密文数据的每一个密文数据,所述管理模块将该密文数据,该密文数据的公钥以及该密文数据的私钥发送给所述模幂计算模块,所述管理模块将该密文数据的公钥发送给所述除法模块,所述管理模块将该密文数据的公钥和该密文数据的私钥发送给所述蒙哥马利化模块,其中,所述蒙哥马利化模块还配置成,在所述除法模块输出与该密文数据对应的除法运算结果之前,对该密文数据的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥。
第三方面所描述的技术方案,通过将Paillier解密的计算流程展开后用多个模块依次完成相应的运算步骤从而可以流水式对多组密文数据进行解密运算,同时通过在除法模块输出与该密文数据对应的除法运算结果之前由蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥,有助于提高模块利用率和数据吞吐速度。
根据第三方面,在一种可能的实现方式中,所述蒙哥马利化模块包括模乘计算单元,所述模乘计算单元根据第一参数和第二参数进行模乘计算,所述第一参数是所述除法运算结果或者该密文数据的私钥,所述第二参数与该密文数据的公钥对应。如此,通过复用模乘计算单元实现了节省计算资源。
根据第三方面,在一种可能的实现方式中,所述管理模块或者所述蒙哥马利化模块还包括第二参数生成器,所述第二参数生成器输出与该密文数据的公钥对应的第二参数,其中,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较该密文数据的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与该密文数据的公钥相同。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
根据第三方面,在一种可能的实现方式中,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与该密文数据的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与该密文数据的公钥对应的第二参数。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
根据第三方面,在一种可能的实现方式中,当所述公钥比较器确定所述多个预存公钥与该密文数据的公钥均不相同时,所述第二参数计算器根据该密文数据的公钥计算新的第二参数,所述新的第二参数作为与该密文数据的公钥对应的第二参数,所述第二参数索引存储器将该密文数据的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。如此,通过与多个预存公钥的比较从而有利于实现参数复用,节省资源和时间。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的用于Paillier解密的加速器的结构框图。
图2示出了本申请实施例提供的图1所示的加速器的模幂计算模块的模幂计算引擎的结构框图。
图3示出了本申请实施例提供的利用图1所示的加速器的模幂计算模块进行模幂计算的流程示意图。
图4示出了本申请实施例提供的图1所示的加速器的蒙哥马利化模块的结构框图。
图5示出了本申请实施例提供的另一种实施方式的用于Paillier解密的加速器的结构框图。
具体实施方式
本申请实施例为了解决既能高效处理海量的大整数模幂计算和除法运算等复杂运算又能做到耗时较少功耗低这一难题,提供了一种用于Paillier解密的加速器、芯片及***。所述加速器包括:模幂计算模块,其中,所述模幂计算模块包括多个并行模幂计算引擎,所述模幂计算模块配置成通过所述多个并行模幂计算引擎进行模幂计算并输出模幂计算结果;减法模块,其中,所述减法模块配置成对所述模幂计算结果进行减法运算并输出减法运算结果;除法模块,其中,所述除法模块配置成对所述减法运算结果进行除法运算并输出除法运算结果;管理模块,其中,所述管理模块配置成将多组密文数据按照每次一个密文数据的方式连续地发送给所述模幂计算模块,所述多组密文数据的每一组密文数据包括多个密文数据并且同一组密文数据的多个密文数据之间共享公钥和私钥;蒙哥马利化模块,其中,所述蒙哥马利化模块配置成对所述除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果,所述蒙哥马利化模块还配置成从所述管理模块接收私钥和对从所述管理模块接收的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥;其中,针对所述多组密文数据的每一个密文数据,在所述除法模块输出与该密文数据对应的除法运算结果之前,所述管理模块将该密文数据的私钥发送给所述蒙哥马利化模块并且所述蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥。如此,通过将Paillier解密的计算流程展开后用多个模块依次完成相应的运算步骤从而可以流水式对多组密文数据进行解密运算,同时通过在除法模块输出与该密文数据对应的除法运算结果之前由蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥,有助于提高模块利用率和数据吞吐速度。
本申请实施例可用于以下应用场景,包括但是不限于,基于Paillier算法的加解密***、软件层操作、多方安全计算、隐私计算框架或算法、与联邦学习有关的机器学习模型训练,以及其它任意需要用到Paillier算法或者可以等效为Paillier算法的同态加密算法。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的用于Paillier解密的加速器的结构框图。如图1所示,加速器100包括接口模块102,主存储器104、管理模块106、模幂计算模块110、减法模块111、除法模块112、蒙哥马利化模块120以及模乘计算模块130。接口模块102用于接收需要进行Paillier解密操作的数据也就是待解密的密文数据。密文数据可以按照每次一组的方式发送给接口模块102,也可以按照每次多组的方式发送给接口模块102。同一组的密文数据被认为是同一批次,适用于同一密钥对,也就是适用于同一公钥对和同一私钥对。例如,接口模块102可以同时接收三组密文数据,第一组密文数据是采用第一私钥对进行加密且第一私钥对与第一公钥对相对应,第二组密文数据是采用第二私钥对进行加密且第二私钥对与第二公钥对相对应,第三组密文数据是采用第三私钥对进行加密且第三私钥对与第三公钥对相对应。接口模块102将接收到的一组或者多组密文数据和相应的私钥对公钥对存储到主存储器104中。主存储器104与管理模块106连接。管理模块106可以一次从主存储器104读取一组密文数据和相应的私钥对公钥对,也可以一次读取多组密文数据和相应的私钥对公钥对。管理模块106与模幂计算模块110、除法模块112和蒙哥马利化模块120连接并且发送数据和参数。管理模块106还与模乘计算模块130连接并且接收计算结果作为Paillier解密的计算结果,然后将该计算结果发送给主存储器104。主存储器104可以在接收到该计算结果后直接发送给接口模块102输出到外部,也可以先存储在主存储器104中,等同一时间接收的多组密文数据的各自的Paillier解密的计算结果都出来后再一起发送给接口模块102输出到外部。
请继续参阅图1,模幂计算模块110包括多个并行的模幂计算引擎,编号为模幂计算引擎1、模幂计算引擎2直到模幂计算引擎NUM,其中NUM为正整数并表示模幂计算模块110所包括的模幂计算引擎的总数。模幂计算模块110还包括数据分发模块(未示出)和数据合并模块(未示出)。模幂计算模块110将数据分发后发送给多个并行的模幂计算引擎,可以提高并行处理效率,加速模幂计算的运算速度,再将数据合并后发送给减法模块111。应当理解的是,模幂计算模块110所包括的模幂计算引擎的总数NUM可以是任意正整数,这些可以根据实际需要设定,在此不做具体限定。减法模块111用于对模幂计算模块110所发送的模幂计算结果进行减去正整数1的操作。减法模块111可以包括进位寄存器(未示出),并按照下面方式将减去正整数1的操作通过与进位寄存器的值进行逐位比较的操作实现。具体地,首先设置进位寄存器的值为1,被减数是要进行减去正整数1的操作的对象也即模幂计算模块110所发送的模幂计算结果,从被减数的二进制最低比特位开始向着最高比特位逐位位移,每次将被减数的二进制当前比特位和进位寄存器的值进行比较并根据比较结果设定减法运算结果的相应的比特位,当循环结束也即移动到被减数的最高比特位,则完成对减法运算结果从最低比特位到最高比特位的设定,结束循环并输出减法运算结果。其中,将被减数的二进制当前比特位和进位寄存器的值进行比较并根据比较结果设定减法运算结果的相应的比特位,包括:如果被减数的二进制当前比特位小于进位寄存器的值则设置进位寄存器的值为1并且设置减法运算结果的当前比特位为1;如果被减数的二进制当前比特位等于进位寄存器的值则设置进位寄存器值为0并且设置减法运算结果的当前比特位为0;如果被减数的二进制当前比特位大于进位寄存器的值则设置进位寄存器值为0并且设置减法运算结果的当前比特位为0。第一次循环时,被减数的二进制当前比特位也就是被减数的二进制最低比特位,进位寄存器的值在循环开始时被设置为1然后按照上述方式进行调整,而减法运算结果的相应的比特位也是减法运算结果的最低比特位。在第一次循环结束后,从被减数的二进制最低比特位移位到被减数的二进制次低比特位,开始第二次循环,而进位寄存器的值在第一次循环结束后根据第一次循环时的比较结果被设定。如此类推,直到循环结束也即移动到被减数的最高比特位,则完成减去正整数1的操作。
请继续参阅图1,除法模块112用于对减法模块111所输出的减法运算结果进行除法运算操作并发送除法运算结果,被除数是减法模块111所输出的减法运算结果,除数是同组密文数据或者同一批次数据的公钥。这些可以采用任意合适的电路、逻辑元件、算法或者硬件实现,在此不做具体限定。蒙哥马利化模块120用于对除法模块112所输出的除法运算结果进行蒙哥马利化运算操作,也用于对管理模块106提供的私钥进行蒙哥马利化运算操作。关于蒙哥马利化模块120的更多细节,会在下面具体实施例做进一步说明。模乘计算模块130用于对蒙哥马利化模块120所提供的蒙哥马利化运算结果进行模乘计算。具体地,模乘计算模块130从蒙哥马利化模块120所接收的蒙哥马利化运算结果可以是对除法运算结果进行蒙哥马利化运算操作得到的第一种蒙哥马利化运算结果,也可以是对私钥进行蒙哥马利化运算操作得到的第二种蒙哥马利化运算结果。同组密文数据或者同一批次数据的第一种蒙哥马利化运算结果和第二种蒙哥马利化运算结果也是相对应的。模乘计算模块130将属于同一批次数据也即彼此对应的第一种蒙哥马利化运算结果和第二种蒙哥马利化运算结果分别作为用于模乘计算的两个参数,以及将公钥作为模数进行第一次模乘计算,得到蒙哥马利化域下的混淆运算结果,再将该混淆运算结果和正整数1分别作为用于模乘计算的两个参数,以及将公钥作为模数进行第二次模乘计算,得到去蒙哥马利化运算结果也就是最终的Paillier解密后的明文数据。
请继续参阅图1,下面结合Paillier解密算法进一步说明图1所示的加速器100的运行原理。其中,Paillier解密算法参考下面公式(1)至公式(8)。
其中,同一组密文数据或者同一批次数据适用同一公钥对和同一私钥对,并且同一批次数据的公钥对与私钥对是对应的。公式(1)表示公钥对与私钥对(λ,μ)对应,其中N是在Paillier加密时使用的满足特定条件的两个素数的乘积,而N本身和N的二次方都可以作为取模运算中的模数,因此这两者都为公钥,而且显然N的二次方可以从N推导得出。私钥对(λ,μ)是在Paillier加密时生成,用于后续解密的密钥。关于Paillier加密和公钥对及私钥对的生成,可以采用任意合适的Paillier算法或者其改进算法,在此不做具体限定。
Paillier解密公式表示为公式(2)。其中,m表示Paillier解密结果也就是明文数据,C表示加密后的密文数据,N和N的二次方是公钥,λ和μ是私钥。公式(2)意味着根据公钥和私钥对对密文数据C进行解密得到明文m。其中公式(2)采用公式(3)的函数L(X)的表达形式,将公式(3)代入公式(2)后得到公式(4)。公式(4)表明有两次取模运算,一次是以N的二次方为模数,另一次是以N为模数。公式(4)展开后可以分步骤用公式(5)至公式(8)完成。同一批次的数据或者同组的密文数据可以适用相同的公钥和私钥对,也就是可以利用公式(4)计算同组的密文数据,并且每次计算仅需要输入新的密文数据C而保留其它参数公钥和私钥对不变,每次计算得到的结果就是与密文数据C对应的明文数据m。具体地,首先根据公式(5)计算R1,公式(5)意味着进行模幂计算,其中密文数据C是幂底数,私钥λ是幂指数,mod表示取模运算,N的二次方是公钥也是模数。公式(5)的模幂计算可以通过模幂计算模块110的多个并行的模幂计算引擎进行加速处理,模幂计算模块110所发送的模幂计算结果就是R1。公式(6)意味着进行对R1减去正整数1的操作。公式(6)的减法运算可以通过减法模块111进行,得到的减法运算结果就是R2。公式(7)意味着对R2进行除法运算,除数是公钥N,公式(7)的除法运算可以通过除法模块112进行,得到的除法运算结果就是R3。公式(8)意味着模乘计算操作,除法模块112所提供的除法运算结果R3和私钥μ是用于模乘计算的两个参数,而公钥N是模数。公式(8)的模乘计算可以通过蒙哥马利化模块120和模乘计算模块130进行。利用蒙哥马利模乘原理,将公式(8)的模幂计算转换成先对R3和私钥μ分别进行蒙哥马利化,再通过蒙哥马利化域下的混淆运算得到混淆运算结果,最后对该混淆运算结果进行去蒙哥马利化,得到公式(8)的模乘计算结果,也就是公式(4)的Paillier解密结果也即明文数据m。应当理解的是,公式(5)的模幂计算通过模幂计算模块110的多个并行的模幂计算引擎可以并行加速处理,但是公式(6)的减法运算和公式(7)的除法运算只能分别通过减法模块111和除法模块112进行串行处理。而公式(8)的运算展开后涉及两次蒙哥马利化运算,一次混淆运算和一次去蒙哥马利化运算。其中两次蒙哥马利化运算可以通过蒙哥马利化模块120进行,而一次混淆运算和一次去蒙哥马利化运算则可以通过复用模乘计算模块130进行。另外,因为公式(4)所表示的Paillier解密公式被展开后按照次序分成多个步骤,分别用公式(5)至公式(8)表示。也就是说,对于同一批次的数据或者同组密文数据,在适用相同的公钥和私钥对的情况下,必须对每一个密文数据C逐个执行公式(5)至公式(8)的运算,因此公式(5)至公式(8)的运算各自对应的模块也必须等待前一步骤对应的模块运算完成才能开始运算。具体地,同一批次的密文数据C通过管理模块106发送给模幂计算模块110之后,减法模块111只能等待模幂计算模块110对当前密文数据C完成模幂计算之后才能开始减法运算,而除法模块112只有等减法模块对当前密文数据C完成减法运算之后才能开始除法运算。因此,基于Paillier解密公式展开后的计算流程,图1所示的加速器100可以通过流水式对多个批次的数据或者多组密文数据进行解密运算,从而提高整体运行效率。
请继续参阅图1,为了流水式对多个批次的数据或者多组密文数据进行解密运算,模幂计算模块110、减法模块111、除法模块112、蒙哥马利化模块120以及模乘计算模块130各自包括先进先出(First Input First Output,FIFO)存储器,每个模块的FIFO存储器依照接收次序将所接收的数据存储到FIFO序列中,越早接收的数据在FIFO序列中排位越靠前越早被移出,每次进行运算时从FIFO序列中读取下一个数据,未处理的数据则在FIFO序列中等待,在当前运算完成后将所读取的数据移出FIFO序列,并将当前运算结果发送给下一级模块。每个模块的FIFO存储器从所连接的上一级模块接收运算结果并写入该FIFO存储器的FIFO序列。例如,减法模块111只能等待模幂计算模块110对当前密文数据C完成模幂计算之后才能开始减法运算,因此减法模块111的FIFO存储器从模幂计算模块110接收模幂计算结果并存入减法模块111的FIFO存储器的FIFO序列中。下面结合表1来说明这些模块通过FIFO存储器的运行原理。
表1
如表1所示,假设有两个批次的数据要进行处理,第一批次的数据是第一组密文数据C1、C2和C3,第二批次的数据是第二组密文数据D1、D2和D3。第一批次的数据和第二批次的数据不适用同一密钥对,因此需要将各自适用的参数通过管理模块106发送给相应模块进行参数配置。例如,模幂计算模块110对第一组密文数据C1、C2和C3进行公式(5)所示的模幂计算,适用相同的私钥λ作为幂指数和相同的N的二次方作为模数,只需要每次输入密文数据。而模幂计算模块110对第二组密文数据D1、D2和D3进行公式(5)所示的模幂计算,则需要进行新的参数配置以适用新的幂指数和模数。如表1所示,模幂计算模块110在周期1和周期4分别进行参数配置从而可以复用同一批次的数据所共享的参数,提高运算效率。模幂计算模块110的FIFO存储器在每个新的周期都接收新的密文数据并移出上一次计算相应的密文数据。相对的,减法模块111和除法模块112则只有等前一级模块的运算完成之后才能对开始对前一级模块的运算所对应的密文数据进行运算。如减法模块111只有在周期2才对C1相关的上一级模块的运算结果进行运算,在周期5才对D1相关的上一级模块的运算结果进行运算。管理模块106负责将密文数据发送到模幂计算模块110,也负责向各个模块发送参数。管理模块106可以内设全局时钟周期的电路或者模块或者接收外部的全局时钟周期信号,或者存在单独提供的其它模块或者电路,用于协调各个模块的FIFO存储器进行相应的写入和读取操作。如此,通过基于Paillier解密公式展开后的计算流程以及基于FIFO存储器的读取写入机制,图1所示的加速器100可以通过流水式对多个批次的数据或者多组密文数据进行解密运算,并且提高各个模块进行相应运算的利用率,从而提高单位时间内数据处理量,提高整体数据吞吐速度和运行效率。
请参阅图2,图2示出了本申请实施例提供的图1所示的加速器的模幂计算模块的模幂计算引擎的结构框图。如图2所示,模幂计算引擎200 包括模幂控制单元210,模乘计算单元220,参数x2选择器230和参数y2选择器240。其中,参数x2选择器230提供参数x2,参数y2选择器240提供参数y2,模幂控制单元210提供模数N2到模乘计算单元220。这里,参数x2和参数y2分别表示用于模乘计算的两个参数,而模数N2表示进行取模运算的模数。通过参数x2选择器230和参数y2选择器240来分别选择相应的参数x2和y2,以及通过复用模乘计算单元220并将每次模乘计算结果反馈回模幂控制单元210,可以实现模幂计算。模幂控制单元210还包括模数N2存储器211用于存储模数N2;R存储器212用于存储参数R,参数R用于蒙哥马利化;幂底数C2存储器213用于存储幂底数C2;蒙哥马利化幂底数MC2存储器214用于存储蒙哥马利化幂底数MC2;以及蒙哥马利模乘结果u2存储器215用于存储蒙哥马利模乘结果u2。应当理解的是,模乘计算单元220每次进行模乘计算结果得到的结果可以作为蒙哥马利模乘结果u2被反馈回模幂控制单元210后存入蒙哥马利模乘结果u2存储器215所存储的蒙哥马利模乘结果u2,或者可以作为蒙哥马利化幂底数MC2存入蒙哥马利化幂底数MC2存储器214所存储的蒙哥马利化幂底数MC2。
请继续参阅图2,参数x2选择器230从模幂控制单元210接收三个参数:幂底数C2存储器213所存储的幂底数C2,蒙哥马利模乘结果u2存储器215所存储的蒙哥马利模乘结果u2,以及正整数1。参数y2选择器240从模幂控制单元210接收三个参数:R存储器212所存储的参数R,蒙哥马利模乘结果u2存储器215所存储的蒙哥马利模乘结果u2,以及蒙哥马利化幂底数MC2存储器214所存储的蒙哥马利化幂底数MC2。模幂计算引擎200通过让参数x2选择器230和参数y2选择器240来选择性地接收不同的输入作为参数x2和参数y2,并将参数x2和参数y2输入到模乘计算单元220进行模乘运算。如此,通过设置参数x2选择器230和参数y2选择器240来分别对不同的参数组合进行接收和选择,从而有利于提高运算效率和灵活性。
应当理解的是,通过灵活配置模幂计算引擎200的参数x2选择器230和参数y2选择器240来分别对不同的参数组合进行接收和选择,可以将模幂计算转换成多次模乘计算,从而可以复用模乘计算单元220。并且,可以通过多个并行的模幂计算引擎200进行高效的并行计算,从而提高处理速度。并且,可以选择性的将多个并行的模幂计算引擎200所提供的并行计算与其它运算模块的串行计算结合,从而实现并行操作和串行操作的各种组合。
请参阅图3,图3示出了本申请实施例提供的利用图1所示的加速器的模幂计算模块进行模幂计算的流程示意图。如图3所示,模幂计算的方法300包括以下步骤。其中,相关运算参考下列公式(9)、公式(10)和公式(11)。
其中,公式(9)表示模幂计算的通用公式。e表示幂指数e;r表示幂底数r;mod表示取模运算;N表示模数N。公式(9)表示根据幂指数e、幂底数r和模数N进行模幂计算。在公式(10)和公式(11)中,u0表示平方乘算法迭代过程中蒙哥马利模乘结果u的初始值;R表示用于计算幂底数r的蒙哥马利化时需要用到的参数;mod表示取模运算;N表示模数N;n表示模数N的实际位宽。下面结合公式(9)、公式(10)和公式(11)详细说明模幂计算的方法300的各个步骤。
步骤S310:接收同批次的幂指数e和模数N,并计算初始参数u0和参数R,将共有的初始参数u0、参数R、幂指数e和模数N共享到各个并行的模幂计算引擎,以及将幂底数r均匀分发到各个模幂计算引擎。
其中,各个并行的模幂计算引擎均参考图2所示的模幂计算引擎200的结构,也就是各自包括一个模乘计算单元用于进行模乘计算。并且,各个并行的模幂计算引擎通过灵活配置各自的模幂计算引擎的参数x2选择器和参数y2选择器来分别对不同的参数组合进行接收和选择,可以实现下面所述的相关运算。其中,为了能协同调用各个并行的模幂计算引擎进行并行计算,需要共享用于同批次并行处理的参数,包括初始参数u0、参数R、幂指数e和模数N。为此需要将共有的初始参数u0、参数R、幂指数e和模数N共享给各个并行的模幂计算引擎。针对幂底数r,则需要将幂底数r均匀地分发到各个模幂计算引擎。其中,初始参数u0和参数R的计算分别参考上述公式(10)和公式(11)。
步骤S312:将幂底数r、参数R以及模数N输入到模乘计算单元进行模乘计算,得到蒙哥马利化的幂底数Mr。
其中,请参阅图2所示的模幂计算引擎200的结构,在步骤S312进行幂底数r的蒙哥马利化,选择幂底数r作为参数x2(对应幂底数C2存储器213所存储的幂底数C2)和选择参数R作为参数y2(对应R存储器212所存储的参数R),进行模乘计算的输出结果为蒙哥马利化的幂底数Mr(对应蒙哥马利化幂底数MC2存储器214所存储的蒙哥马利化幂底数MC2)。
步骤S314:将蒙哥马利模乘结果u和模数N输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果u,其中,蒙哥马利模乘结果u的初始值是初始参数u0。
其中,请参阅图2所示的模幂计算引擎200的结构,在步骤S314进行平方乘算法迭代过程中的第一次模乘计算,选择蒙哥马利模乘结果u作为参数x2(对应蒙哥马利模乘结果u2存储器215所存储的蒙哥马利模乘结果u2)和选择蒙哥马利化的幂底数Mr作为参数y2(对应蒙哥马利化幂底数MC2存储器214所存储的蒙哥马利化幂底数MC2),进行模乘计算的输出结果被用来更新蒙哥马利模乘结果u。在初次迭代中进行第一次模乘计算时,用平方乘算法迭代过程中蒙哥马利模乘结果u的初始值u0作为参数x2进行计算。
步骤S316:判断二进制化的幂指数e的当前最高位的比特位值是否为1。如果是1则执行步骤S318,如果不为1则执行步骤S320。
其中,根据二进制化后的幂指数e的当前最高位的比特位值是否为1来判断是否执行第二次模乘计算。如果幂指数e的当前最高位的比特位值是1则进行第二次模乘计算并执行步骤S318,如果幂指数e的当前最高位的比特位值不为1则不进行第二次模乘计算并执行步骤S320。
步骤S318:将蒙哥马利模乘结果u、蒙哥马利化的幂底数Mr和模数N输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果u。
其中,请参阅图2所示的模幂计算引擎200的结构,在步骤S318进行平方乘算法迭代过程中的第二次模乘计算,选择蒙哥马利模乘结果u作为参数x2和选择蒙哥马利化的幂底数Mr作为参数y2,进行模乘计算的输出结果来更新蒙哥马利模乘结果u。
步骤S320:将二进制化的幂指数e向着最低比特位位移一位。
其中,在一种可能的实施方式中,从二进制化的幂指数e的最高位的1(非零比特位)开始向最低位逐位移位。在另一种可能的实施方式中,从二进制化的幂指数e的最高位(可能为零或者非零比特位)开始向最低位逐位移位。
步骤S322:判断二进制化的幂指数e的所有比特位是否都已经移位。如果所有比特位都已经移位则意味着模幂计算结束,如果还有比特位没有移位则执行步骤S314。
其中,通过循环执行步骤S314至步骤S322,逐位移位二进制化的幂指数e,直到二进制化的幂指数e的所有比特位都已经移位,也就是已经移位到最低位。另外,在每一个比特位根据其值是1或0来分别进行两次或者一次模乘计算。当所有比特位都已经移位,则意味着循环结束,否则返回步骤S314继续执行。
应当理解的是,在执行完步骤S322并判断模幂计算已经结束后,各个并行的模幂计算引擎各自的结束时间可能不一致,当同批次的各个并行的模幂计算引擎均结束各自的模幂计算后,可以将各个并行的模幂计算引擎所输出的计算结果进行合并,得到完整的模幂计算结果。
如此,通过平方乘和蒙哥马利算法,将模幂计算转换成多次模乘计算,通过在每次迭代过程中将二进制化的幂指数e向着最低比特位位移一位,并在每一个比特位根据其值是1或0来分别进行两次或者一次模乘计算,以及通过对每一次模乘计算的输入参数的选择,以及利用模乘计算结果更新蒙哥马利模乘结果,从而实现了通过多个并行的模幂计算引擎进行高效的模幂计算。另外,该模幂计算可以采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现,从而可以利用高并行计算和流水特性来提高整体算力,例如利用多GPU并行计算或者基于FPGA的多任务并行处理***。另外,可以避开直接对大整数取模运算,而以乘法、加法和移位运算代替,从而减少运算复杂度和提高计算效率。另外,在使用基于蒙哥马利化域的大数模乘计算实现时,可以对位宽、流水级数和/或循环次数进行配置,从而可以在考虑FPGA资源、器件等级、流水级数及主频因素的情况下,对位宽大小、流水级数和/或循环次数进行调整,由此实现最佳的性能提升比。
结合图1、图2和图3,同一批次的数据也叫做同一组密文数据适用同一密钥对,包括公钥N及公钥N的二次方、私钥对λ和μ。接口模块102可以流水式接收多个批次的数据以及相应的公钥对和私钥对。管理模块106将同一批次的数据发送给模幂计算模块110,由模幂计算模块110进行模幂计算之后,再依次由减法模块111进行减法运算,再由除法模块112进行除法运算,得到的除法运算结果被发送给蒙哥马利化模块120。对于该批次的数据来说,该批次数据及中间结果在加速器100内遵循特定数据流,该数据流的流向是依次经过管理模块106、模幂计算模块110、减法模块111以及除法模块112,在该数据流中每一级模块接收上一级模块的运算结果并写入各自的FIFO存储器。如此,公式(5)、公式(6)和公式(7)所表示的运算通过在该数据流上的多个模块实现了流水式处理,每个批次的数据从管理模块106开始,依次经过模幂计算模块110、减法模块111以及除法模块112,最后得到与该批次数据对应的除法运算结果,也即公式(7)和公式(8)中的R3。另外,在模幂计算模块110可以通过图2所示的多个并行的模幂计算引擎200实现加速并行处理,从而提高整体运算效率。应当理解的是,当该批次的数据遵循该数据流而依次经过模幂计算模块110、减法模块111以及除法模块112时,蒙哥马利化模块120可以同步对公式(8)中的私钥μ进行蒙哥马利化,并在除法模块112完成除法运算后再对除法运算结果也就是R3进行蒙哥马利化。下面结合蒙哥马利化模块120的具体细节进一步说明。
请参阅图4,图4示出了本申请实施例提供的图1所示的加速器的蒙哥马利化模块的结构框图。其中,图4所示的蒙哥马利化模块420对应图1所示的蒙哥马利化模块120。如图4所示,蒙哥马利化模块420包括参数R生成器440,公钥FIFO存储器450,除法运算结果FIFO存储器451,私钥FIFO存储器452,模乘计算单元460,数据选择器461,分发选择器462以及选择信号寄存器463。其中,公钥FIFO存储器450从图1所示的管理模块106接收公钥N。除法运算结果FIFO存储器451从图1所示的除法模块112接收除法运算结果div,私钥FIFO存储器452从管理模块106接收私钥μ。应当理解的是,蒙哥马利化模块420的公钥FIFO存储器450,除法运算结果FIFO存储器451以及私钥FIFO存储器452各自依照接收次序将所接收的数据存储到各自的FIFO序列中,越早接收的数据在FIFO序列中排位越靠前越早被移出,每次进行运算时从FIFO序列中读取下一个数据,未处理的数据则在FIFO序列中等待,在当前运算完成后将所读取的数据移出FIFO序列。除法运算结果FIFO存储器451只有等上一级模块除法模块112运算结束才能接收新的除法运算结果div。公钥FIFO存储器450和私钥FIFO存储器452可以同时从管理模块106接收成对的公钥N和私钥μ。如上所述管理模块106还负责将同一批次的数据发送给模幂计算模块110进行模幂计算,管理模块106在发送密文数据给模幂计算模块110同时可以将与该批次的数据对应的公钥N和私钥μ发送给蒙哥马利化模块120也即图4所示的蒙哥马利化模块420。
请继续参阅图4,公钥FIFO存储器450将公钥N发送给参数R生成器440。参数R生成器440还包括公钥比较器441,参数R计算器442和参数R索引存储器443。其中,参数R索引存储器443保存有多个公钥N和相匹配的参数R。这里,参数R的计算公式参考上述公式(11),其中mod表示取模运算,N表示模数N,n表示模数N的实际位宽。从公式(11)可知,参数R由公钥N决定。同一批次的数据也是同一组密文数据使用相同的密钥对,包括私钥对和公钥对,因此也适用相同的参数R。但是,不同批次的数据,或者不同组的密文数据,可能适用不同的密钥对,而私钥对和公钥对在Paillier算法中是对应。也就是说,通过比较公钥对或者私钥对是否相同,可以判断是否适用相同的参数R。为此,公钥比较器441将从公钥FIFO存储器450接收的公钥N与存储在参数R索引存储器443中多个公钥进行比较并确定是否存在相同的公钥。如果公钥比较器441发现在参数R索引存储器443中存在一致的公钥,则可以指示参数R索引存储器443将与该公钥相匹配的参数R发送给模乘计算单元460。如果公钥比较器441发现在参数R索引存储器443中不存在一致的公钥,则指示参数R计算器442根据所接收的公钥N和公式(11)计算新的参数R,并将所接收的公钥N和计算所得的参数R存入参数R索引存储器443中,并将计算所得的参数R发送给模乘计算单元460。参数R索引存储器443可以用堆栈的方式来更新所存储的公钥和相匹配的参数R,也可以用其它方式例如用新输入的公钥覆盖当前最早存储的公钥。这些可以根据具体应用场景进行调整,在此不做具体限定。
请继续参阅图4,模乘计算单元460有两个输入接口,一个连接参数R生成器440用于接收参数R,另一个连接数据选择器461。数据选择器461可以是任意具有二选一功能的数据选择器。数据选择器461从除法运算结果FIFO存储器451和私钥FIFO存储器452接收输入并选择其中之一发送给模乘计算单元460。如此,模乘计算单元460根据数据选择器461的选择而将除法运算结果div或者私钥μ与参数R一起进行模乘运算。模乘计算单元460进行模乘运算需要模数N,模数N也就是与除法运算结果div、私钥μ还有参数R属于同一批次数据的公钥。模乘计算单元460可以从公钥FIFO存储器450接收公钥N,或者可以从参数R生成器440接收与参数R相匹配的公钥N。如此,通过选择性的让除法运算结果div或者私钥μ与参数R一起输入到模乘计算单元460进行模乘计算,实现了复用同一个蒙哥马利化模块420进行除法运算结果div的蒙哥马利化或者私钥μ的蒙哥马利化。分发选择器462负责将当前模乘计算单元460所计算的结果通过指定接口,其中除法运算结果div的蒙哥马利化通过除法运算结果div蒙哥马利化结果输出端口470输出并发送给下一级模块,私钥μ的蒙哥马利化通过私钥μ蒙哥马利化结果输出端口472输出并发送给下一级模块。数据选择器461和分发选择器462都与选择信号寄存器463连接。选择信号寄存器463同时控制数据选择器461和分发选择器462从而选择让模乘计算单元460进行除法运算结果div的蒙哥马利化或者私钥μ的蒙哥马利化并选择相应的指定端口输出。选择信号寄存器463可以接收管理模块106的控制信号,也可以将控制信号夹带在数据流中一起传递,例如夹带在私钥μ的数据流中。在一种可能的实施方式中,选择信号寄存器463通过循环变化的控制逻辑来实现选择功能,或者类似有限状态机的机制,例如首先将选择信号寄存器463设置为1,数据选择器461读取到1后选择私钥μ进行模乘计算,分发选择器462读取到1后选择私钥μ蒙哥马利化结果输出端口472输出;当上一级的除法模块完成运算而除法运算结果FIFO存储器451接收到新的除法运算结果div,则将选择信号寄存器463设置为0,数据选择器461读取到0后选择除法运算结果div进行模乘计算,分发选择器462读取到0后选择除法运算结果div蒙哥马利化结果输出端口470输出。
应当理解的是,在同一批次的数据发送给模幂计算模块110进行模幂计算的同时可以让蒙哥马利化模块420先计算与该批次的数据相应的私钥μ以及根据与该批次的数据相应的模数N来生成参数R(计算新的参数R或者从已经存储的参数R中选择)。如此,可以在等待该批次的数据依次完成模幂计算模块110、减法模块111以及除法模块112各自的运算并发送该批次数据的除法运算结果div的同时,就利用蒙哥马利化模块420完成私钥μ的蒙哥马利化以及计算参数R。当该批次的数据除法运算结果div到达时,就可以直接进行除法运算结果div的蒙哥马利化并发送给下一级模块。对于下一级的模乘计算模块,因为从除法运算结果div蒙哥马利化结果输出端口470和私钥μ蒙哥马利化结果输出端口472分别获得同一批次的数据的R3和私钥μ的蒙哥马利化结果,可以进行一次混淆运算和一次去蒙哥马利化运算从而完成公式(8)的运算。为了区别对待不同批次的数据或者不同组的密文数据在蒙哥马利化模块420中各自的计算流程,利用公钥FIFO存储器450,除法运算结果FIFO存储器451和私钥FIFO存储器452的先进先出特性,以及通过选择信号寄存器463的控制功能,可以结合其他模块的流水式运算,从而实现通过基于Paillier解密公式展开后的计算流程以及基于FIFO存储器的读取写入机制,通过流水式对多个批次的数据或者多组密文数据进行解密运算,并且提高各个模块进行相应运算的利用率,从而提高单位时间内数据处理量,提高整体数据吞吐速度和运行效率。为了说明蒙哥马利化模块420的运行原理,下面结合表2进行说明。
表2
表2与上述表1内容基本一致,不同之处在于表2增加了蒙哥马利化模块在每个时钟周期的运算。如表2所示,蒙哥马利化模块120也即图4所示的蒙哥马利化模块420在模幂计算模块110逐个计算同一组的密文数据C1、C2和C3各自的模幂计算结果同时,则在逐个计算C1、C2和C3各自的私钥的蒙哥马利化。当密文数据C1在除法模块112中的运算结束后,下一个周期开始逐个计算同一组的密文数据C1、C2和C3各自的除法运算结果的蒙哥马利化。因为可以通过选择信号寄存器463来选择蒙哥马利化模块在每个时钟周期的运算以及相应的指定输出接口,所以下一级的模乘计算模块可以相应地利用FIFO存储器来分别存储各个密文数据的各自私钥的蒙哥马利化结果以及除法运算结果的蒙哥马利化结果,从而实现相同批次的私钥的蒙哥马利化结果和除法运算结果的蒙哥马利化结果之间的混淆运算和去蒙哥马利化运算。并且,对于特定密文数据C1而言,在除法模块112输出与密文数据C1对应的除法运算结果之前,蒙哥马利化模块120已经完成了对密文数据C1的蒙哥马利化运算,这样有助于提高模块利用率和数据吞吐速度。
应当理解的是,图4所示的蒙哥马利化模块420的参数R生成器440可以如图4所示集成于蒙哥马利化模块420内,在另一种实施方式中也可以单独设置。在一些示例性实施例中,参数R生成器440可以集成于图1所示的管理模块106内,在管理模块106接收新的批次的数据后通过比较公钥是否相同而选择现有的参数R或者计算新的参数R,然后将适用于该批次的数据的参数R发送给模幂计算模块110和蒙哥马利化模块120,用于后续计算流程。参数R生成器440还可以作为一个单独的模块,其从主存储器104获取新的批次的数据并生成参数R,然后将适用于该批次的数据的参数R发送给模幂计算模块110和蒙哥马利化模块120。这些可以根据具体应用场景进行调整,在此不做具体限定。
请参阅图1至图4,通过基于Paillier解密公式展开后的计算流程,基于FIFO存储器的读取写入机制,以及基于图4所示的蒙哥马利化模块420的复用机制,图1所示的加速器100可以通过流水式对多个批次的数据或者多组密文数据进行解密运算,并且提高各个模块进行相应运算的利用率,从而提高单位时间内数据处理量,提高整体数据吞吐速度和运行效率。并且,通过图4所示的蒙哥马利化模块420的参数R生成器,可以通过比较公钥来判断是否可以复用参数R,进一步提高数据复用效率,提升整体运行速度节约能耗。
请参阅图5,图5示出了本申请实施例提供的另一种实施方式的用于Paillier解密的加速器的结构框图。图5所示的加速器500与图1所示的加速器100基本一致,区别在于加速器500将图1所示的加速器100的蒙哥马利化模块120和模乘计算单元130合并为后处理模块520。其中,后处理模块520从上一级的除法模块接收除法运算结果,也从管理模块506接收公钥和私钥,并执行上述公式(8)的运算,包括两次蒙哥马利化运算,一次混淆运算和一次去蒙哥马利化运算。后处理模块520可以只包括一个模乘计算单元,并通过复用该模乘计算单元来实现这些运算,只需要每次输入不同的参数作为模乘计算的参数。这些可以根据具体应用场景进行调整,在此不再赘述。
本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的***总线或数据传输***。***总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,***总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是***的一部分,也可以是其它设备或装置的一部分。
本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共***。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或***的具体限定。在本申请另一些实施例中,有关装置或***可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (24)
1.一种加速器,应用于Paillier解密,其特征在于,所述加速器包括:
模幂计算模块,其中,所述模幂计算模块包括多个并行模幂计算引擎,所述模幂计算模块配置成通过所述多个并行模幂计算引擎进行模幂计算并输出模幂计算结果;
减法模块,其中,所述减法模块配置成对所述模幂计算结果进行减法运算并输出减法运算结果;
除法模块,其中,所述除法模块配置成对所述减法运算结果进行除法运算并输出除法运算结果;
管理模块,其中,所述管理模块配置成将多组密文数据按照每次一个密文数据的方式连续地发送给所述模幂计算模块,所述多组密文数据的每一组密文数据包括多个密文数据并且同一组密文数据的多个密文数据之间共享公钥和私钥;
蒙哥马利化模块,其中,所述蒙哥马利化模块配置成对所述除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果,所述蒙哥马利化模块还配置成从所述管理模块接收私钥和对从所述管理模块接收的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥;
其中,针对所述多组密文数据的每一个密文数据,在所述除法模块输出与该密文数据对应的除法运算结果之前,所述管理模块将该密文数据的私钥发送给所述蒙哥马利化模块并且所述蒙哥马利化模块输出与该密文数据的私钥对应的蒙哥马利化私钥。
2.根据权利要求1所述的加速器,其特征在于,所述蒙哥马利化模块还包括模乘计算单元,所述蒙哥马利化模块通过复用所述模乘计算单元来对所述除法运算结果进行蒙哥马利化运算和对从所述管理模块接收的私钥进行蒙哥马利化运算。
3.根据权利要求2所述的加速器,其特征在于,所述蒙哥马利化模块还包括除法运算结果先进先出FIFO存储器用于存储从所述除法模块接收的除法运算结果,私钥FIFO存储器用于存储从所述管理模块接收的私钥,以及数据选择器,其中,所述数据选择器与所述除法运算结果FIFO存储器和所述私钥FIFO存储器连接,所述数据选择器根据选择信号来选择所述除法运算结果FIFO存储器的输出或者所述私钥FIFO存储器的输出作为第一参数,所述模乘计算单元根据所述第一参数和第二参数进行模乘计算。
4.根据权利要求3所述的加速器,其特征在于,所述蒙哥马利化模块还包括分发选择器,所述分发选择器根据所述选择信号来选择所述模乘计算单元的输出作为所述蒙哥马利化除法运算结果或者所述蒙哥马利化私钥。
5.根据权利要求4所述的加速器,其特征在于,所述蒙哥马利化模块还包括第二参数生成器,所述第二参数生成器从所述管理模块接收公钥并输出与从所述管理模块接收的公钥对应的第二参数。
6.根据权利要求5所述的加速器,其特征在于,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,其中,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较从所述管理模块接收的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与从所述管理模块接收的公钥相同。
7.根据权利要求6所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与从所述管理模块接收的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与从所述管理模块接收的公钥对应的第二参数。
8.根据权利要求7所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥与从所述管理模块接收的公钥均不相同时,所述第二参数计算器根据从所述管理模块接收的公钥计算新的第二参数,所述新的第二参数作为与从所述管理模块接收的公钥对应的第二参数,所述第二参数索引存储器将从所述管理模块接收的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。
9.根据权利要求1所述的加速器,其特征在于,所述加速器还包括模乘计算模块,其中,所述模乘计算模块配置成对与同一个密文数据相对应的所述蒙哥马利化除法运算结果和所述蒙哥马利化私钥进行蒙哥马利化域模乘运算得到蒙哥马利化域模乘运算结果,对所述蒙哥马利化域模乘运算结果进行去蒙哥马利化运算得到解密结果。
10.根据权利要求9所述的加速器,其特征在于,所述模幂计算模块,所述减法模块,所述除法模块以及所述模乘计算模块各自包括FIFO存储器用于连续地处理所述管理模块所发送的密文数据。
11.根据权利要求1所述的加速器,其特征在于,在所述除法模块输出与该密文数据对应的除法运算结果之前,所述管理模块还将该密文数据的公钥发送给所述蒙哥马利化模块,所述蒙哥马利化模块包括模乘计算单元,所述模乘计算单元根据第一参数和第二参数进行模乘计算,所述第一参数是所述除法运算结果或者从所述管理模块接收的私钥,所述第二参数与从所述管理模块接收的公钥对应。
12.根据权利要求11所述的加速器,其特征在于,所述蒙哥马利化模块还包括第二参数生成器,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,其中,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较从所述管理模块接收的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与从所述管理模块接收的公钥相同。
13.根据权利要求12所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与从所述管理模块接收的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与从所述管理模块接收的公钥对应的第二参数。
14.根据权利要求13所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥与从所述管理模块接收的公钥均不相同时,所述第二参数计算器根据从所述管理模块接收的公钥计算新的第二参数,所述新的第二参数作为与从所述管理模块接收的公钥对应的第二参数,所述第二参数索引存储器将从所述管理模块接收的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。
15.根据权利要求1所述的加速器,其特征在于,所述蒙哥马利化模块包括模乘计算单元,所述模乘计算单元根据第一参数和第二参数进行模乘计算,所述第一参数是所述除法运算结果或者从所述管理模块接收的私钥,所述第二参数与该密文数据的公钥对应,其中,在所述除法模块输出与该密文数据对应的除法运算结果之前,所述管理模块还将所述第二参数发送给所述蒙哥马利化模块。
16.根据权利要求15所述的加速器,其特征在于,所述管理模块还包括第二参数生成器,所述第二参数生成器输出与该密文数据的公钥对应的第二参数,其中,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较该密文数据的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与该密文数据的公钥相同。
17.根据权利要求16所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与该密文数据的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与该密文数据的公钥对应的第二参数。
18.根据权利要求17所述的加速器,其特征在于,当所述公钥比较器确定所述多个预存公钥与该密文数据的公钥均不相同时,所述第二参数计算器根据该密文数据的公钥计算新的第二参数,所述新的第二参数作为与该密文数据的公钥对应的第二参数,所述第二参数索引存储器将该密文数据的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。
19.一种用于联邦学习的加解密***,其特征在于,所述加解密***包括根据权利要求1-18中任一项所述的加速器,用于执行Paillier解密任务。
20.一种芯片,其特征在于,所述芯片包括:
接口模块,其中,所述接口模块用于接收多组密文数据,所述多组密文数据的每一组密文数据包括多个密文数据并且同一组密文数据的多个密文数据之间共享公钥和私钥;
管理模块,其中,所述管理模块与所述接口模块连接;
模幂计算模块,其中,所述模幂计算模块包括多个并行模幂计算引擎,所述模幂计算模块配置成通过所述多个并行模幂计算引擎进行模幂计算并输出模幂计算结果;
减法模块,其中,所述减法模块配置成对所述模幂计算结果进行减法运算并输出减法运算结果;
除法模块,其中,所述除法模块配置成对所述减法运算结果进行除法运算并输出除法运算结果;以及
蒙哥马利化模块,其中,所述蒙哥马利化模块配置成对所述除法运算结果进行蒙哥马利化运算并输出蒙哥马利化除法运算结果;
其中,针对所述多组密文数据的每一个密文数据,所述管理模块将该密文数据,该密文数据的公钥以及该密文数据的私钥发送给所述模幂计算模块,所述管理模块将该密文数据的公钥发送给所述除法模块,所述管理模块将该密文数据的公钥和该密文数据的私钥发送给所述蒙哥马利化模块,
其中,所述蒙哥马利化模块还配置成,在所述除法模块输出与该密文数据对应的除法运算结果之前,对该密文数据的私钥进行蒙哥马利化运算并输出蒙哥马利化私钥。
21.根据权利要求20所述的芯片,其特征在于,所述蒙哥马利化模块包括模乘计算单元,所述模乘计算单元根据第一参数和第二参数进行模乘计算,所述第一参数是所述除法运算结果或者该密文数据的私钥,所述第二参数与该密文数据的公钥对应。
22.根据权利要求21所述的芯片,所述管理模块或者所述蒙哥马利化模块还包括第二参数生成器,所述第二参数生成器输出与该密文数据的公钥对应的第二参数,其中,所述第二参数生成器包括公钥比较器,第二参数计算器以及第二参数索引存储器,所述第二参数索引存储器保存多个预存公钥和与所述多个预存公钥一一对应的多个第二参数,所述公钥比较器比较该密文数据的公钥和所述多个预存公钥并确定所述多个预存公钥中是否存在一个预存公钥与该密文数据的公钥相同。
23.根据权利要求22所述的芯片,其特征在于,当所述公钥比较器确定所述多个预存公钥中存在一个预存公钥与该密文数据的公钥相同时,所述多个第二参数中与该预存公钥相对应的第二参数作为与该密文数据的公钥对应的第二参数。
24.根据权利要求23所述的芯片,其特征在于,当所述公钥比较器确定所述多个预存公钥与该密文数据的公钥均不相同时,所述第二参数计算器根据该密文数据的公钥计算新的第二参数,所述新的第二参数作为与该密文数据的公钥对应的第二参数,所述第二参数索引存储器将该密文数据的公钥和所述新的第二参数分别添加到所述多个预设公钥和所述多个第二参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110453655.4A CN112865954B (zh) | 2021-04-26 | 2021-04-26 | 用于Paillier解密的加速器、芯片及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110453655.4A CN112865954B (zh) | 2021-04-26 | 2021-04-26 | 用于Paillier解密的加速器、芯片及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112865954A true CN112865954A (zh) | 2021-05-28 |
CN112865954B CN112865954B (zh) | 2021-07-06 |
Family
ID=75992908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110453655.4A Active CN112865954B (zh) | 2021-04-26 | 2021-04-26 | 用于Paillier解密的加速器、芯片及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112865954B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467752A (zh) * | 2021-05-31 | 2021-10-01 | 深圳致星科技有限公司 | 用于隐私计算的除法运算装置、数据处理***及方法 |
CN113656823A (zh) * | 2021-10-14 | 2021-11-16 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密态加法计算装置及*** |
CN114021734A (zh) * | 2021-10-14 | 2022-02-08 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的参数计算装置、***及方法 |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114793155A (zh) * | 2022-04-12 | 2022-07-26 | 支付宝(杭州)信息技术有限公司 | 多方安全计算的方法及装置 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
CN115276960A (zh) * | 2022-08-02 | 2022-11-01 | 山东大学 | 一种sm2蒙哥马利域上的快速模逆芯片实现装置及方法 |
CN116719502A (zh) * | 2023-08-11 | 2023-09-08 | 蓝象智联(杭州)科技有限公司 | 一种基于隐私保护的数据相减运算方法 |
CN117527192A (zh) * | 2024-01-08 | 2024-02-06 | 蓝象智联(杭州)科技有限公司 | 一种基于GPU的Paillier解密方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216754A (zh) * | 2007-12-27 | 2008-07-09 | 广州杰赛科技股份有限公司 | 模乘运算的处理方法、数据加解密处理的方法、装置 |
CN102207847A (zh) * | 2011-05-06 | 2011-10-05 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
US20200073560A1 (en) * | 2018-09-04 | 2020-03-05 | Genetic Intelligence, Inc. | Methods for decentralized genome storage, distribution, marketing and analysis |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理*** |
CN112491543A (zh) * | 2020-11-24 | 2021-03-12 | 杭州电子科技大学 | 基于改进的蒙哥马利模幂电路的ic卡解密方法 |
CN112667995A (zh) * | 2020-12-31 | 2021-04-16 | 中国科学技术大学 | 受限Paillier加密***及其在密钥分发和身份认证中的应用方法 |
-
2021
- 2021-04-26 CN CN202110453655.4A patent/CN112865954B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216754A (zh) * | 2007-12-27 | 2008-07-09 | 广州杰赛科技股份有限公司 | 模乘运算的处理方法、数据加解密处理的方法、装置 |
CN102207847A (zh) * | 2011-05-06 | 2011-10-05 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
US20200073560A1 (en) * | 2018-09-04 | 2020-03-05 | Genetic Intelligence, Inc. | Methods for decentralized genome storage, distribution, marketing and analysis |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN112346833A (zh) * | 2020-09-30 | 2021-02-09 | 深圳致星科技有限公司 | 用于隐私计算的任务处理方法、处理器及异构处理*** |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112491543A (zh) * | 2020-11-24 | 2021-03-12 | 杭州电子科技大学 | 基于改进的蒙哥马利模幂电路的ic卡解密方法 |
CN112667995A (zh) * | 2020-12-31 | 2021-04-16 | 中国科学技术大学 | 受限Paillier加密***及其在密钥分发和身份认证中的应用方法 |
Non-Patent Citations (4)
Title |
---|
NIR DRUCKER等: ""Paillier-encrypted databases with fast aggregated queries"", 《IEEE》 * |
邢欢: ""基于隐私保护的关联规则挖掘研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
陈诚: ""椭圆曲线点乘算法的旁路分析研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
高雪寒: ""大数相除快速算法在RSA中的应用与研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467752A (zh) * | 2021-05-31 | 2021-10-01 | 深圳致星科技有限公司 | 用于隐私计算的除法运算装置、数据处理***及方法 |
CN113656823A (zh) * | 2021-10-14 | 2021-11-16 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密态加法计算装置及*** |
CN114021734A (zh) * | 2021-10-14 | 2022-02-08 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的参数计算装置、***及方法 |
CN114021734B (zh) * | 2021-10-14 | 2022-04-12 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的参数计算装置、***及方法 |
CN114327370A (zh) * | 2022-03-10 | 2022-04-12 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114327370B (zh) * | 2022-03-10 | 2022-06-21 | 湖北芯擎科技有限公司 | 计算蒙哥马利模乘算法中mr值的方法及电路 |
CN114793155A (zh) * | 2022-04-12 | 2022-07-26 | 支付宝(杭州)信息技术有限公司 | 多方安全计算的方法及装置 |
CN114880686A (zh) * | 2022-05-30 | 2022-08-09 | 杭州医康慧联科技股份有限公司 | 基于联邦学习的硬件加速数据传输方法 |
CN115276960A (zh) * | 2022-08-02 | 2022-11-01 | 山东大学 | 一种sm2蒙哥马利域上的快速模逆芯片实现装置及方法 |
CN115276960B (zh) * | 2022-08-02 | 2024-03-15 | 山东大学 | 一种sm2蒙哥马利域上的快速模逆芯片实现装置及方法 |
CN116719502A (zh) * | 2023-08-11 | 2023-09-08 | 蓝象智联(杭州)科技有限公司 | 一种基于隐私保护的数据相减运算方法 |
CN116719502B (zh) * | 2023-08-11 | 2023-10-20 | 蓝象智联(杭州)科技有限公司 | 一种基于隐私保护的数据相减运算方法 |
CN117527192A (zh) * | 2024-01-08 | 2024-02-06 | 蓝象智联(杭州)科技有限公司 | 一种基于GPU的Paillier解密方法 |
CN117527192B (zh) * | 2024-01-08 | 2024-04-05 | 蓝象智联(杭州)科技有限公司 | 一种基于GPU的Paillier解密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112865954B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及*** | |
CN112988237B (zh) | 一种Paillier解密***、芯片和方法 | |
CN112070222B (zh) | 用于联邦学习的处理装置、加速器及方法 | |
CN112883408B (zh) | 用于隐私计算的加解密***和芯片 | |
CN114021734B (zh) | 用于联邦学习和隐私计算的参数计算装置、***及方法 | |
CN112733161A (zh) | 用于联邦学习密文运算的装置及方法 | |
CN104579656A (zh) | 一种椭圆曲线公钥密码sm2算法的硬件加速协处理器 | |
CN113467750A (zh) | 用于基数为4的srt算法的大整数位宽除法电路及方法 | |
CN113946846B (zh) | 用于联邦学习和隐私计算的密文计算装置及方法 | |
CN101304312B (zh) | 一种适用于精简指令集处理器的加密单元 | |
Pu et al. | Fastplay-a parallelization model and implementation of smc on cuda based gpu cluster architecture | |
Li et al. | Research in fast modular exponentiation algorithm based on FPGA | |
CN111079934B (zh) | 应用于环域上误差学习加密算法的数论变换单元和方法 | |
CN110266481A (zh) | 基于矩阵的后量子加、解密方法与解密装置 | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理***及方法 | |
WO2023003737A2 (en) | Multi-lane cryptographic engine and operations thereof | |
CN107463354A (zh) | 一种面向ECC的双域并行度可变的Montgomery模乘电路 | |
CN1696894B (zh) | 大数模乘计算乘法器 | |
CN105373366A (zh) | 一种生成大素数的方法及装置 | |
Kamal et al. | Enhanced implementation of the NTRUEncrypt algorithm using graphics cards | |
CN104346134A (zh) | 用于执行缩小和舍入算术运算的数据处理装置和方法 | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
TWI403952B (zh) | A large integer modulus index chip structure for signature cryptography | |
Zhang et al. | High-Performance Hardware Acceleration Architecture for Cross-Silo Federated Learning | |
CN118233081A (zh) | 一种基于neon指令集的国密sm2底层模乘优化方法 |
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 |