CN113656823B - 用于联邦学习和隐私计算的密态加法计算装置及系统 - Google Patents
用于联邦学习和隐私计算的密态加法计算装置及系统 Download PDFInfo
- Publication number
- CN113656823B CN113656823B CN202111195447.5A CN202111195447A CN113656823B CN 113656823 B CN113656823 B CN 113656823B CN 202111195447 A CN202111195447 A CN 202111195447A CN 113656823 B CN113656823 B CN 113656823B
- Authority
- CN
- China
- Prior art keywords
- data distribution
- modular multiplication
- module
- data
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种用于联邦学习和隐私计算的密态加法计算装置及系统。该计算装置包括:至少一层蒙哥马利化域模乘运算模块,配置成对同批次的多个密文进行蒙哥马利化运算和蒙哥马利化域模乘运算以及输出多个密文的蒙哥马利化域模乘运算结果。该至少一层蒙哥马利化域模乘运算模块包括第一层蒙哥马利化域模乘运算模块,其包括并行的多个模乘计算引擎和与其连接的第一层数据分发模块。第一层数据分发模块配置成每次发送多个密文中的一个并按照轮询的方式选择多个模乘计算引擎中的一个以接收被发送的密文,还配置成在发送全部密文后生成批次完成信号并发送给多个模乘计算引擎中的每一个。如此提高了资源利用效率和并行计算速度。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于联邦学习和隐私计算的密态加法计算装置及系统。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习(Federated Learning,FL)的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习相关应用场景中,各个拥有数据的参与方通常采用同态加密的方式对原始数据也叫明文进行加密,再将加密后的密态数据也叫密文用在联合网络模型训练、梯度计算、模型参数训练等。同态加密意味着不需要访问原始数据本身就可以对密态数据进行加工,并且等效于对原始数据本身进行加工。例如,Paillier算法是满足加法同态性的同态加密算法。加法同态性意味着在加密后的密态数据上进行任意数量的加法运算,再对密态数据的加法运算最终结果进行解密后得到的结果等于对加密前的原始数据进行同样加法操作的结果。同态加密密态下的密态计算式包括密态乘法计算和密态加法计算两种基本形式,而这两种基本形式的组合可以构成更复杂的密态计算式。其中,在加密密态下,密态乘法计算是明文和密文的乘法,等效于以明文为幂指数以密文为幂底数的模幂运算;密态加法计算是密文之间的求和运算,目的是实现对相应的明文之间的求和运算,等效于模乘运算。同态加密密态下的密态加法计算涉及到大量高纬度数据且相关模数往往有较大的比特位宽如2048比特,并且需要海量的大整数位宽的模幂运算和模乘运算。这些给用于联邦学习的硬件和处理装置的计算性能提出了很大的挑战,例如与运算相关的数据量可达到数亿级。为此,需要一种用于联邦学习和隐私计算的密态加法计算装置及系统,不仅能够高效处理与运算相关的海量数据量而且能够应对实际应用中复杂多变的需求。
发明内容
第一方面,本申请实施例提供了一种密态加法计算装置,用于联邦学习和隐私计算。所述计算装置包括:至少一层蒙哥马利化域模乘运算模块,其中,所述至少一层蒙哥马利化域模乘运算模块配置成对同批次的多个密文进行蒙哥马利化运算和蒙哥马利化域模乘运算以及输出所述多个密文的蒙哥马利化域模乘运算结果。其中,所述至少一层蒙哥马利化域模乘运算模块包括第一层蒙哥马利化域模乘运算模块,所述第一层蒙哥马利化域模乘运算模块包括第一层模乘计算模块和第一层数据分发模块,所述第一层数据分发模块与所述第一层模乘计算模块连接,所述第一层模乘计算模块包括并行的多个模乘计算引擎。其中,所述第一层数据分发模块配置成每次发送所述多个密文中的一个密文并按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收被发送的密文,所述第一层数据分发模块还配置成在发送所述多个密文中的全部密文后生成批次完成信号并将所述批次完成信号发送给所述多个模乘计算引擎中的每一个模乘计算引擎。
第一方面所描述的技术方案,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且通过批次完成信号来区分开不同批次的密文,结合轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时通过数据流驱动的方式来简化控制设计以及进一步提高并行处理速度。
根据第一方面所描述的技术方案,在一种可能的实施方式中,所述计算装置还包括:去蒙哥马利化运算模块,其中,所述去蒙哥马利化运算模块配置成对所述多个密文的蒙哥马利化域模乘运算结果进行去蒙哥马利化运算。在一种可能的实施方式中,所述第一层数据分发模块根据配置信息生成所述批次完成信号,所述配置信息被添加到与所述多个密文对应的数据流中并标识所述多个密文中的最后一个被发送的密文。在一种可能的实施方式中,所述配置信息包括数据标志位,所述数据标志位被添加到所述多个密文中的最后一个被发送的密文上。
在一种可能的实施方式中,所述配置信息还标识所述多个密文中的第一个被发送的密文,所述配置信息包括数据标志位,所述数据标志位包括首标志位和尾标志位,所述首标志位被添加到所述多个密文中的第一个被发送的密文上,所述尾标志位被添加到所述多个密文中的最后一个被发送的密文上。在一种可能的实施方式中,所述第一层数据分发模块根据配置信息生成所述批次完成信号,所述配置信息通过相对于与所述多个密文对应的数据流的额外配置信息通道被提供给所述第一层数据分发模块,所述配置信息标识该数据流的第一个数据和最后一个数据。在一种可能的实施方式中,所述第一层数据分发模块包括第一级数据分发模块和第二级数据分发模块,所述第一级数据分发模块包括至少一个数据分发单元,所述第二级数据分发模块包括多个数据分发单元,所述第一级数据分发模块的每一个数据分发单元分别与所述第二级数据分发模块的至少两个数据分发单元连接,所述第一级数据分发模块的每一个数据分发单元每次发送所述多个密文中的一个密文并按照轮询的方式选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元以接收被发送的密文。在一种可能的实施方式中,所述第一级数据分发模块的每一个数据分发单元包括各自的通道选择计数器,所述第一级数据分发模块的每一个数据分发单元根据该数据分发单元的通道选择计数器的计数选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元并且在选择后将该通道选择计数器的计数加一。在一种可能的实施方式中,所述第一层模乘计算模块的多个模乘计算引擎各自根据所接收的一个或者多个密文生成与该一个或者多个密文对应的蒙哥马利化域模乘运算结果从而得到所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果,所述至少一层蒙哥马利化域模乘运算模块还包括第二层蒙哥马利化域模乘运算模块,所述第二层蒙哥马利化域模乘运算模块配置成对所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行蒙哥马利化域模乘运算从而得到所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果。在一种可能的实施方式中,所述第一级数据分发模块和所述第二级数据分发模块各自所包括的数据分发单元的数量以及所述第一级数据分发模块的数据分发单元与所述第二级数据分发模块的数据分发单元之间的连接关系,根据以下至少之一进行调整:所述多个模乘计算引擎的数量,所述多个密文的数量,所述多个密文的数据位宽。
根据第一方面所描述的技术方案,在一种可能的实施方式中,所述第一级数据分发模块的每一个数据分发单元从与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元接收反馈信号并且根据该数据分发单元的反馈信号判断是否暂停通过该数据分发单元发送密文。
第二方面,本申请实施例提供了一种密态计算系统,用于联邦学习和隐私计算。所述密态计算系统包括:密态加法装置,用于进行密态加法计算,其中,所述密态加法装置是根据第一方面中任一项所述的计算装置;密态乘法装置,用于进行密态乘法计算;和管理模块,用于将密态计算式拆分成密态加法计算式和密态乘法计算式的组合,以及调用所述密态加法装置来完成所述密态加法计算式和调用所述密态乘法装置来完成所述密态乘法计算式。
第二方面所描述的技术方案,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且通过批次完成信号来区分开不同批次的密文,结合轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时通过数据流驱动的方式来简化控制设计以及进一步提高并行处理速度。
第三方面,本申请实施例提供了一种密态加法计算装置,用于联邦学习和隐私计算。所述密态加法计算装置包括:第一层蒙哥马利化域模乘运算模块,其中,所述第一层蒙哥马利化域模乘运算模块包括第一层模乘计算模块和第一层数据分发模块,所述第一层数据分发模块与所述第一层模乘计算模块连接,所述第一层模乘计算模块包括并行的多个模乘计算引擎,所述第一层数据分发模块配置成每次发送所述多个密文中的一个密文并按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收被发送的密文,所述第一层模乘计算模块的多个模乘计算引擎各自根据所接收的一个或者多个密文生成与该一个或者多个密文对应的蒙哥马利化域模乘运算结果从而得到所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果;第二层蒙哥马利化域模乘运算模块,其中,所述第二层蒙哥马利化域模乘运算模块配置成对所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行蒙哥马利化域模乘运算从而得到所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果;和去蒙哥马利化运算模块,其中,所述去蒙哥马利化运算模块配置成对所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行去蒙哥马利化运算。
第三方面所描述的技术方案,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的基于蒙哥马利化域模乘运算实现密态加法计算的方法的流程示意图。
图2示出了本申请实施例提供的第一层蒙哥马利化域模乘运算模块的结构框图。
图3示出了本申请实施例提供的计算装置的结构框图。
图4示出了本申请实施例提供的另一种实施方式的计算装置的结构框图。
图5示出了本申请实施例提供的密态计算系统的结构框图。
具体实施方式
本申请实施例为了解决不仅能够高效处理与运算相关的海量数据量而且能够应对实际应用中复杂多变的需求,提供了需要一种用于联邦学习和隐私计算的密态加法计算装置及系统。所述计算装置包括:至少一层蒙哥马利化域模乘运算模块,其中,所述至少一层蒙哥马利化域模乘运算模块配置成对同批次的多个密文进行蒙哥马利化运算和蒙哥马利化域模乘运算以及输出所述多个密文的蒙哥马利化域模乘运算结果。其中,所述至少一层蒙哥马利化域模乘运算模块包括第一层蒙哥马利化域模乘运算模块,所述第一层蒙哥马利化域模乘运算模块包括第一层模乘计算模块和第一层数据分发模块,所述第一层数据分发模块与所述第一层模乘计算模块连接,所述第一层模乘计算模块包括并行的多个模乘计算引擎。其中,所述第一层数据分发模块配置成每次发送所述多个密文中的一个密文并按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收被发送的密文,所述第一层数据分发模块还配置成在发送所述多个密文中的全部密文后生成批次完成信号并将所述批次完成信号发送给所述多个模乘计算引擎中的每一个模乘计算引擎。如此,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且通过批次完成信号来区分开不同批次的密文,结合轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时通过数据流驱动的方式来简化控制设计以及进一步提高并行处理速度。
本申请实施例可用于以下应用场景,包括但是不限于,联邦学习,隐私计算,同态加密算法如Paillier加密算法,密态计算特别是密态加法计算,涉及大量大整数模乘运算的其它应用场景等。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的基于蒙哥马利化域模乘运算实现密态加法计算的方法的流程示意图。其中,图1所示的方法100的相关说明需要参考下面公式(1)至公式(6)。
公式(1)表示同态加密密态下的密态加法计算的基本形式,V是多个密文进行求和运算的结果,C1、C2、C3直到CK是密文,K是进行密态加法计算的密文的总数。C1、C2、C3直到CK适用同一密钥,可以理解为在经过同一加密过程加密后得到的数据组或者同一批次的密文。在加密密态下,公式(1)所示的密态加法计算等价于公式(2)所示的模乘运算。在公式(2)中,C1、C2、C3直到CK是密文,N是加密过程中生成的密钥也是模数N。公式(2)说明任意数量的密文之间的求和运算可以等价于这些密文之间的模乘运算。
应当理解的是,上述公式(1)和公式(2)是同态加密密态下的密态加法计算的基本形式及其等价的模乘运算式。同态加密密态下的密态计算式包括密态乘法计算和密态加法计算这两种基本形式,而任意的密态计算式都可以表示成这两种基本形式的组合或者构成。另外,公式(1)和公式(2)是针对密文数据是一维向量形式的情况,但是可应用于包括一维向量形式和/或二维矩阵形式的求和运算,例如均是一维向量形式或二维矩阵形式的两个密文数据相加,又例如一维向量形式的密文数据和二维矩阵形式的密文数据相加。因此,同态加密密态下的任意密态加法计算式或者任意密态计算式中与密态加法相关部分均可以被拆分后基于公式(1)所示的密态加法计算和公式(2)所示的等价模乘运算来实现。
公式(2)所示的模乘运算可以基于蒙哥马利化域模乘运算实现。设公式(1)中的K为3,也就是3个密文C1、C2和C3进行求和运算。首先在公式(3)中对密文C1、C2和C3分别进行蒙哥马利化得到蒙哥马利化密文MC1、MC2和MC3。在公式(3)中,N是加密过程中生成的密钥也是模数N,R是共用的参数。参数R的计算参考公式(4)。对特定密文进行蒙哥马利化就是将该特定密文和参数R进行以N为模数的模乘运算。在公式(4)中,N表示模数N;n表示模数N的实际位宽。在公式(5)中,在得到蒙哥马利化密文MC1、MC2和MC3之后,先对其中两个蒙哥马利化密文进行蒙哥马利化域模乘运算,例如对蒙哥马利化密文MC1和MC2进行蒙哥马利化域模乘运算,所得到的中间结果再与第三个蒙哥马利化密文MC3进行蒙哥马利化域模乘运算,由此得到的是蒙哥马利化密文MC1、MC2和MC3的蒙哥马利化域模乘运算结果MV。最后在公式(6)中,对蒙哥马利化域模乘运算结果MV进行去蒙哥马利化运算,对蒙哥马利化域模乘运算结果MV和正整数1进行模乘运算,得到去蒙哥马利化后的模乘结果。设有第四个密文或者更多密文进行求和运算,也就是K大于3,则更多的密文先被蒙哥马利化再与其它密文的蒙哥马利化域模乘运算的中间结果进行蒙哥马利化域模乘运算,当所有的密文都被蒙哥马利化并进行蒙哥马利化域模乘运算后,再对最终的蒙哥马利化域模乘运算结果进行去蒙哥马利化运算,从而得到去蒙哥马利化后的模乘运算结果。下面结合上述公式(1)至公式(6)来说明基于蒙哥马利化域模乘运算实现密态加法计算的方法100的各个步骤。
步骤S102:获得进行求和运算的多个密文并计算参数R,其中,所述多个密文属于同批次加密数据组且共用密钥N,N是模乘运算的模数,参数R根据模数N计算。
其中,参考上述公式(1)和公式(4),多个密文也就是C1、C2、C3直到CK进行求和运算,这些多个密文适用同一密钥,可以理解为在经过同一加密过程加密后得到的数据组或者同一批次的密文,也就是说是同批次加密数据组且共用密钥N。参数R的计算参考公式(4),其中N表示模数N;n表示模数N的实际位宽。
步骤S104:针对所述多个密文的每一个密文,将该密文和参数R进行模数N的模乘运算得到该密文的蒙哥马利化结果;将该密文的蒙哥马利化结果和蒙哥马利化域模乘运算中间结果进行模数N的模乘运算从而更新蒙哥马利化域模乘运算中间结果。
其中,参考上述公式(3)和公式(5),对特定密文进行蒙哥马利化就是将该特定密文和参数R进行以N为模数的模乘运算,得到该特定密文的蒙哥马利化结果或者称作蒙哥马利化的密文。例如,在公式(3)中对密文C1、C2和C3分别进行蒙哥马利化得到蒙哥马利化密文MC1、MC2和MC3。如上所述,多个密文的求和运算或者密态加法计算在加密密态下等效于如公式(2)所示的多个密文的模乘运算而且可以基于蒙哥马利化域模乘运算实现。其中,首先对其中两个蒙哥马利化密文进行模数N的模乘运算得到蒙哥马利化域模乘运算中间结果,然后对其它密文逐个的将蒙哥马利化的密文与蒙哥马利化域模乘运算中间结果进行模数N的模乘运算并用模乘运算结果来更新蒙哥马利化域模乘运算中间结果,直至所有的密文都被蒙哥马利化并用于更新蒙哥马利化域模乘运算中间结果。例如,在公式(5)中,在得到蒙哥马利化密文MC1、MC2和MC3之后,先对其中两个蒙哥马利化密文进行蒙哥马利化域模乘运算如对蒙哥马利化密文MC1和MC2进行蒙哥马利化域模乘运算,所得到的中间结果再与第三个蒙哥马利化密文MC3进行蒙哥马利化域模乘运算,由此得到的是蒙哥马利化密文MC1、MC2和MC3的蒙哥马利化域模乘运算结果MV。
步骤S106:对蒙哥马利化域模乘运算中间结果和和正整数1进行模数N的模乘运算,得到所述多个密文的模乘运算结果。
其中,参考上述公式(6),当所述多个密文的所有密文都被蒙哥马利化并用于更新蒙哥马利化域模乘运算中间结果,最终的蒙哥马利化域模乘运算中间结果代表所有密文进行了蒙哥马利化域模乘运算,因此对蒙哥马利化域模乘运算中间结果进行去蒙哥马利化运算,从而得到去蒙哥马利化后的模乘运算结果也就是所述多个密文的模乘运算结果。
结合上面公式(1)至公式(6)以及步骤S102至步骤S106可知,对于任意数量的密文的求和运算,也就是K为任意数量的同批次加密数据组,在步骤S104处需要进行总计K次的蒙哥马利化运算从而得到K个密文各自的蒙哥马利化结果或者叫做K个蒙哥马利化密文,以及进行K-1次的更新蒙哥马利化域模乘运算中间结果。其中,同一批次的多个密文中的第一个密文的蒙哥马利化结果可以作为该批次的多个密文所对应的蒙哥马利化域模乘运算中间结果的初始值,而第二密文的蒙哥马利化结果与蒙哥马利化域模乘运算中间结果的初始值也就是第一个密文的蒙哥马利化结果进行模数为N的模乘运算并更新蒙哥马利化域模乘运算中间结果。也就是说,只有第一个密文的蒙哥马利化结果是直接用来更新蒙哥马利化域模乘运算中间结果,后续的密文直到同批次的多个密文中的最后一个密文,都是需要先将该密文进行蒙哥马利化,再将该密文的蒙哥马利化结果与蒙哥马利化域模乘运算中间结果进行模数为N的模乘运算,因此涉及K-1次的更新蒙哥马利化域模乘运算中间结果。而且,对于同批次加密数据组,模数N是加密过程中生成的密钥,同批次的密文共用同一个模数N,而n表示模数N的实际位宽,因此根据公式(4)计算的参数R也在同批次的密文中共用。因此,通过将同态加密密态下的密态加法计算转换为等价的模乘运算,再将该等价的模乘运算基于蒙哥马利化域模乘运算实现,从而展开为多次迭代计算,多次迭代计算与同批次的多个密文一一对应,在每次迭代计算中将该密文和共用的参数R进行共用的模数N的模乘运算得到该密文的蒙哥马利化结果,再将该密文的蒙哥马利化结果和蒙哥马利化域模乘运算中间结果进行模数N的模乘运算从而更新蒙哥马利化域模乘运算中间结果(第一次迭代计算中直接将该密文的蒙哥马利化结果作为蒙哥马利化域模乘运算中间结果)。如此,实现了参数复用和中间结果复用,有利于简化每次迭代计算的运算量和控制复杂度,而且可以适应任意数量的同批次的加密数据组,有利于应对复杂多变的应用场景。下面结合本申请实施例所提供的密态加法计算装置的结构框图来说明如何从算法映射到硬件架构上,从而利用上述基于蒙哥马利化域模乘运算实现密态加法计算的方法100在算法层面的改进以及结合硬件设计层面的改进,进而通过软硬件结合实现了高效处理与运算相关的海量数据量而且能够应对实际应用中复杂多变的需求。
请参阅图2,图2示出了本申请实施例提供的第一层蒙哥马利化域模乘运算模块的结构框图。如图2所示,第一层蒙哥马利化域模乘运算模块200可以划分成三大部分,其中第一部分与数据分发相关或称之为第一层数据分发模块,其中包括第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206;第二部分与模乘计算有关,包括第一层模乘计算模块210;第三部分与数据合并有关或称之为第一层数据合并模块,其中包括第一级数据合并模块222,第二级数据合并模块224以及第三级数据合并模块226。第一层蒙哥马利化域模乘运算模块200还包括参数计算分发模块201,用于计算共用的参数并分发下去。此外,可能还存在其他的模块,例如任务管理模块用于解析上级命令、将输入数据分发下去并对计算结果进行处理;又例如内存管理模块用于存储上级命令、输入数据及计算结果;又例如数据传输模块用于进行命令和数据的传输,如采用高速串行计算机扩展总线标准(peripheral component interconnect express,PCIE)和直接内存访问(DirectMemory Access,DMA)的数据传输方式。这些其他的模块未示出在图2中,这些其他的模块可以单独提供也可以作为第一层蒙哥马利化域模乘运算模块200的一部分或者补充,也可以将这些其他的模块的功能和必须电路结构添加到图2中所示的模块中。例如,第一级数据分发模块202可以具有PCIE DMA的数据接口以便高速接收输入数据。这些改动应理解为本申请公开内容的一部分,并且可以根据实际需求或者应用场景进行调整,在此不做具体限定。
请继续参阅图2,第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206将用于计算的输入数据以轮询的方式逐级向下发放,具体地,每一级数据分发模块以轮询方式将输入数据发送到下一级数据分发模块。这里,输入数据可以理解为密态计算特别是密态加法计算中的密文。以轮询的方式发送数据到下一级数据分发模块,指的是以轮询机制或称轮询法来做出如何发送数据的决策。其中,除了第一级数据分发模块可能只具有一个数据分发单元以外,其它的每一级数据分发模块一般来说包括多个数据分发单元(也即两个或者更多个数据分发单元)。以轮询的方式发送数据到下一级数据分发模块意味着,按照特定次序询问下一级数据分发模块的每一个数据分发单元是否适合接收输入数据,如果适合接收输入数据则发送输入数据并结束本次询问,然后再等下一次有输入数据要发送时开始新的一轮查询。其中最后一级数据分发模块与第一层模乘计算模块连接,第一层模乘计算模块包括多个模乘计算引擎,最后一级数据分发模块的多个数据分发单元中的每一个数据分发单元与一个或者多个模乘计算引擎连接。最后一级数据分发模块以轮询的方式发送数据到模乘计算引擎,具体地,最后一级数据分发模块的某个数据分发单元按照特定次序询问与该数据分发单元连接的一个或者多个模乘计算引擎的每一个模乘计算引擎是否适合接收输入数据,如果适合接收输入数据则发送输入数据并结束本次询问,然后再等下一次有输入数据要发送时开始新的一轮查询。应当理解的是,图2中所示的第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206各自所包括的数据分发单元的数量以及上一级的数据分发单元与下一级的数据分发单元之间的连接关系,都仅是说明性和示例性的,而不是限制性的。在另外一些示例性实施例中,图2中所示的数据分发单元的数量和连接关系以及在不同级的数据分发模块之间的分布,都是可以根据实际需求和具体应用场景做出调整,而这些可能的改动或者调整也应理解为本申请公开内容的一部分。
请继续参阅图2,第一级数据分发模块202包括一个数据分发单元A1,第二级数据分发模块204包括两个数据分发单元,分别是数据分发单元B1和数据分发单元B2。第一级数据分发模块202的数据分发单元A1与第二级数据分发模块204的数据分发单元B1和数据分发单元B2连接。数据分发单元A1接收输入数据并以轮询方式将输入数据发送给数据分发单元B1和数据分发单元B2,也就是说,数据分发单元A1先询问数据分发单元B1是否适合接收,如果适合则发送输入数据给数据分发单元B1,如果不适合则接着询问数据分发单元B2。第三级数据分发模块206包括四个数据分发单元,分别是数据分发单元C1、数据分发单元C2、数据分发单元C3以及数据分发单元C4。其中,数据分发单元B1与数据分发单元C1和数据分发单元C2连接,当数据分发单元B1接收到上一级的数据分发模块的数据分发单元所发出的查询请求后,数据分发单元B1也以轮询方式来查询数据分发单元C1和数据分发单元C2,例如先查询数据分发单元C1再查询数据分发单元C2。第一层模乘计算模块210包括多个模乘计算引擎,编号为PE1、PE2、PE3直到PE10。其中,数据分发单元C1与模乘计算引擎PE1和模乘计算引擎PE2连接,数据分发单元C2与模乘计算引擎PE3和模乘计算引擎PE4连接。当数据分发单元C1接收到上一级的数据分发模块的数据分发单元所发出的查询请求后,数据分发单元C1也以轮询方式查询与数据分发单元C1连接的模乘计算引擎PE1和模乘计算引擎PE2,例如先查询模乘计算引擎PE1再查询模乘计算引擎PE2,如果模乘计算引擎PE1适合接收输入数据则发送输入数据给模乘计算引擎PE1。这里,某个模乘计算引擎是否适合接收输入数据的判断依据是该模乘计算引擎已经完成之前的输入数据也即密文的计算任务并可以接收新的输入数据和开始新的计算任务。如此,第一级的数据分发模块202的数据分发单元A1以轮询方式查询第二级数据分发模块204的数据分发单元B1和数据分发单元B2,第二级数据分发模块204的数据分发单元B1以轮询方式查询第三级数据分发模块206的数据分发单元C1和数据分发单元C2,第三级数据分发模块206的数据分发单元C1以轮询的方式查询相连接的模乘计算引擎PE1和模乘计算引擎PE2。也就说,第一级的数据分发模块202的数据分发单元A1在进行轮询时,通过询问数据分发单元B1就可以得到与数据分发单元B1连接的下一级的数据分发单元的查询结果,进而获得与数据分发单元C1连接的模乘计算引擎PE1和PE2以及与数据分发单元C2连接的模乘计算引擎PE3和PE4的查询结果。换句话说,当与数据分发单元C1连接的模乘计算引擎PE1和PE2以及与数据分发单元C2连接的模乘计算引擎PE3和PE4之中的任一个模乘计算引擎处于适合接收输入数据的情况,则数据分发单元B1的查询结果就是适合的,则数据分发单元A1在查询数据分发单元B1并得到适合的查询结果后会将输入数据发送给数据分发单元B1,然后再发送给数据分发单元C1或者数据分发单元C2,最终发送给查询结果为适合的模乘计算引擎。如此,通过配置多级的数据分发模块,在每一级的数据分发模块中有多个数据分发单元且每一个数据分发单元与位于下一级的数据分发模块中的多于一个(两个或者更多个)的数据分发单元连接,则查询该数据分发单元等效于查询与该数据分发单元连接的位于下一级的多于一个的数据分发单元,依次类推,可以继续以轮询的方式逐级查询直到最后一级的数据分发模块的数据分发单元查询与之连接的模乘计算引擎的情况,这样就可以在一次查询中确定多个模乘计算引擎中是否存在至少一个模乘计算引擎适合接收输入数据。并且,因为每一级的数据分发模块的数据分发单元都是按照特定次序询问,也就说轮询的方式是固定的或者说预先设定的,所以有利于控制设计和硬件实现,也有利于确保最大限度地利用空闲的计算资源也就是空闲的模乘计算引擎。
请继续参阅图2,第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206各自具有的数据分发单元,这些不同级的数据分发单元之间的连接关系,还有最后一级数据分发模块也就是第三级数据分发模块206与第一层模乘计算模块210所具有的模乘计算引擎之间的连接关系,可以用来标识在进行轮询时需要查询的对象,或者理解为轮询的查询结果所能标识的对象的状态。例如,数据分发单元B2与数据分发单元C3和数据分发单元C4连接,因此数据分发单元B2的查询结果意味着要查询数据分发单元C3和数据分发单元C4,而数据分发单元C3与模乘计算引擎PE5、PE6以及PE7连接,这意味着数据分发单元C3的查询结果意味着查询模乘计算引擎PE5、PE6以及PE7。类似地,数据分发单元C4的查询结果意味着查询模乘计算引擎PE8、PE9以及PE10。因此,数据分发单元B2的查询结果意味着查询模乘计算引擎PE5、PE6、PE7、PE8、PE9以及PE10,并且对数据分发单元B2的查询只有当乘计算引擎PE5、PE6、PE7、PE8、PE9以及PE10全部都是不适合的前提下才会得到数据分发单元B2的查询结果是不适合。如此,通过构建不同级的数据分发单元之间的连接关系,可以确定采用轮询方式时所查询的对象包括所查询的模乘计算引擎,也可以通过一次查询结果就确定多个模乘计算引擎是否适合接收输入数据,有利于提高资源利用效率和提升并行计算效果。
应当理解的是,图2中所示的第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206各自具有的数据分发单元的数量以及不同级的数据分发单元之间的连接关系,仅是示例性。在另一些示例性实施例中,可以分布任意数量的数据分发单元,但是整体上看从第一级数据分发模块到最后一级数据分发模块(也就是与模乘计算引擎直接连接的最后一级数据分发模块),其中各级所具有的数据分发单元应保持增长或者至少不减少的趋势,从而可以有利于通过轮询机制来一次查询多个模乘计算引擎的情况。例如,第一级数据分发模块可以有两个数据分发单元,第二级数据分发模块可以有75个数据分发单元,第三级数据分发模块可以有150个数据分发单元并与300个模乘计算引擎连接。而其中第一级数据分发模块的两个数据分发单元,可以分别与35个和40个位于第二级的数据分发单元连接,或者分别与25个和50个位于第二级的数据分发单元连接。同一级的各个数据分发单元各自与下一级的数据分发单元连接的数量可以是一致的也可以是不一致的。例如,图2中所示的位于第二级数据分发模块的数据分发单元B1和数据分发单元B2均有两个连接数,也就是说数据分发单元B1和数据分发单元B2各自与两个下一级也即第三级的数据分发单元连接。相对地,位于第三级数据分发模块的数据分发单元C1和数据分发单元C2均有两个连接数,而同一级的数据分发单元C3和数据分发单元C4均有三个连接数。因此,某个级的数据分发模块所具有的数据分发单元的数量,以及该级的数据分发单元各自的连接数(某个数据分发单元的连接数是与该数据分发单元相连接的下一级的数据分发单元的数量或者模乘计算引擎的数量)都是可调整的也是可变的,例如可以根据实际需求和应用场景调整,或者根据可用的计算资源如模乘计算引擎的总数调整,或者根据待计算的输入数据也就是同批次的密文的数量调整,或者根据计算需求例如多个批次的密态计算所带来的整体上的计算需求或者预期的资源时间损耗。通过灵活地根据各种因素调整各级的数据分发单元的数量以及这些数据分发单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。在一些示例性实施例中,可以根据模乘计算引擎的配置来确定如何进行分发或者说确定各级的数据分发模块所具有的数据分发单元的数量。例如设有100个模乘计算引擎,这意味着分发机制需要将数据分发到该100个模乘计算引擎。可以设定第一级数据分发模块可以有两个数据分发单元,再设第一个数据分发单元负责分发数据到其中40个模乘计算引擎,而第二个数据分发单元负责分发数据到其中60个模乘计算引擎。相应地根据模乘计算引擎的配置来涉及分发机制的计数值,也就是控制将40个数据发给第一个数据分发单元并将60个数据分发给第二个数据分发单元。当100个数据都发完后,则重新进行分发轮询。并且,第一级数据分发模块的第一个数据分发单元还可以进一步通过第二级数据分发模块进行更细化的分发,例如将20个数据发给一个数据分发单元再将另外20个发给另一个数据分发单元。另外,考虑到可能出现后级模块的计算时间过长而导致前级模块难以进行数据分发操作,可以提供基于反馈信号的控制。通过改变该反馈信号,例如拉高,来指示暂停往该模块发送数据。反馈信号可以作为两个相邻模块间能否发送数据的条件。具体地,在一些示例性实施例中,可以设定第一级数据分发模块的每一个数据分发单元从与该数据分发单元所连接的第二级数据分发模块的数据分发单元(例如至少两个数据分发单元)接收反馈信号并且根据该数据分发单元的反馈信号判断是否暂停通过该数据分发单元发送密文。
进一步地,不仅特定级的数据分发模块(例如图2所示的第二级数据分发模块204)所具有的数据分发单元的数量,以及该级的数据分发单元各自的连接数是可调整且可变的,而且在另一些实施例中可以有与图2所示的三级数据分发模块所不同的分级构造。例如,在另一些示例性实施例中,可以有两级数据分发模块或者四级数据分发模块或者更多分级数据分发模块,只要最后一级数据分发模块用于连接模乘计算引擎,并且其中各级所具有的数据分发单元应保持增长或者至少不减少的趋势,从而可以有利于通过轮询机制来一次查询多个模乘计算引擎的情况。
请继续参阅图2,图2所示的与数据合并有关的部分包括第一级数据合并模块222,第二级数据合并模块224以及第三级数据合并模块226,这些数据合并模块各自包括多个数据合并单元。对于同一个蒙哥马利化域模乘运算模块而言,其中的与数据合并部分有关的多级数据合并模块的构造、各级数据合并模块所具有的数据合并单元以及相邻级的数据合并单元之间的连接关系各自与数据分发部分有关的相似因素之间是相对于模乘计算模块成镜像对称关系。具体地,以图2为例,第一级数据合并模块222与第一层模乘计算模块210连接且与第三级数据分发模块206成镜像对称关系。具体地,第一级数据合并模块222所包括的数据合并单元D1、D2、D3和D4分别与第三级数据分发模块206的数据分发单元C1、C2、C3和C4成镜像对称关系,包括连接相同的模乘计算引擎如数据合并单元D1和数据分发单元C1均与模乘计算引擎PE1和PE2连接。依此类推,第二级数据合并模块224与第二级数据分发模块204成镜像对称关系。具体地,第二级数据合并模块224所包括的数据合并单元E1和E2分别与第二级数据分发模块204所包括的数据分发单元B1和B2成镜像对称关系。总的来说,对于同一个蒙哥马利化域模乘运算模块而言,例如图2所示的第一层蒙哥马利化域模乘运算模块200,以该蒙哥马利化域模乘运算模块的模乘计算模块(第一层蒙哥马利化域模乘运算模块200的第一层模乘计算模块210)为分界线,各级的数据分发模块将输入数据逐级发送到该模乘计算模块,该模乘计算模块将计算结果经各级的数据合并模块逐级传递出去。所以从最早接受输入数据的第一级数据分发模块经该模乘计算模块最后到最后传递计算结果的最后一级数据合并模块,可以定义为该蒙哥马利化域模乘运算模块内部的数据流向或者数据传递方向,其中按照该数据流向可以定义发送数据的某级是上游而接收该数据的另一级是下游。沿着这样定义的数据流向,以模乘计算模块为分界线,从该模乘计算模块出发沿着该数据流向的反向(从下游往上游或者说从该模乘计算模块往第一级数据分发模块)上分布的各级数据分发模块所包括的数据分发单元的数量及各自的连接数,与从该模乘计算模块出发沿着该数据流向的正向(从上游往下游或者说从该模乘计算模块往最后一级数据合并模块)上分布的各级数据合并模块所包括的数据合并单元的数量及各自的连接数,是一一对应的。以图2为例,从第一级数据分发模块202经第一层模乘计算模块210到第三级数据合并模块226,可以定义为第一层蒙哥马利化域模乘运算模块200内部的数据流向或者数据传递方向。沿着该数据流向,以第一层模乘计算模块210为分界线,从第一层模乘计算模块210出发沿着该数据流向的反向(从第一层模乘计算模块210往第一级数据分发模块202)上分布的各级数据分发模块所包括的数据分发单元的数量及各自的连接数,与从第一层模乘计算模块210出发沿着该数据流向的正向(从第一层模乘计算模块210往第三级数据合并模块226)上分布的各级数据合并模块所包括的数据合并单元的数量及各自的连接数,是一一对应的,如第三级数据分发模块206所包括的数据分发单元的数量及各自的连接数与第一级数据合并模块222所包括的数据合并单元的数量及各自的连接数对应。
请继续参阅图2,在模乘计算引擎满足计算完成条件时将计算结果输出到相连接的数据合并单元,各级数据合并模块如图2中所示的第一级数据合并模块222,第二级数据合并模块224以及第三级数据合并模块226将计算结果以轮询的方式逐级向下发放。具体地,每一级数据合并模块以轮询方式将计算结果发送到下一级数据合并模块。这里,计算结果可以理解为模乘计算引擎对输入数据或称密文进行执行相应计算任务后且满足计算完成条件时的计算结果。以轮询的方式发送计算结果到下一级数据合并模块,指的是以轮询机制或称轮询法来做出如何发送计算结果的决策。其中,除了最后一级数据合并模块可能只具有一个数据合并单元以外,其它的每一级数据合并模块一般来说包括多个数据合并单元(也即两个或者更多个数据合并单元)。以轮询的方式发送计算结果到下一级数据合并模块意味着,按照特定次序询问下一级数据合并模块的每一个数据合并单元是否适合接收计算结果,如果适合接收计算结果则发送计算结果并结束本次询问,然后再等下一次有计算结果要发送时开始新的一轮查询。其中第一级数据合并模块与第一层模乘计算模块连接,第一层模乘计算模块包括多个模乘计算引擎,第一级数据合并模块的多个数据合并单元中的每一个数据合并单元与一个或者多个模乘计算引擎连接。第一级数据合并模块从模乘计算引擎接收计算结果并以轮询方式向下发送。应当理解的是,图2中所示的第一级数据合并模块222,第二级数据合并模块224以及第三级数据合并模块226各自所包括的数据合并单元的数量以及上一级的数据合并单元与下一级的数据合并单元之间的连接关系,都仅是说明性和示例性的,而不是限制性的。在另外一些示例性实施例中,图2中所示的数据合并单元的数量和连接关系以及在不同级的数据合并模块之间的分布,都是可以根据实际需求和具体应用场景做出调整,而这些可能的改动或者调整也应理解为本申请公开内容的一部分。并且,如上所述,对于同一个蒙哥马利化域模乘运算模块而言,其中的与数据合并部分有关的多级数据合并模块的构造、各级数据合并模块所具有的数据合并单元以及相邻级的数据合并单元之间的连接关系各自与数据分发部分有关的相似因素之间是相对于模乘计算模块成镜像对称关系。
请继续参阅图2,第一层模乘计算模块210所包括的各个模乘计算引擎接收到输入数据也即密文后,会进行两步计算,其中第一步计算是进行密文的蒙哥马利化运算,也就是将该密文和参数R进行模数N的模乘运算得到该密文的蒙哥马利化结果。应当理解的是,整个运算流程中只需要第一次进行蒙哥马利化和最后进行去蒙哥马利化。因此这里要求第一层模乘计算模块210是对输入数据也就是密文进行初次运算的部件,也就是对这些密文进行第一次的蒙哥马利化。而当存在多于一层的模乘计算模块情况下,这意味着相对于第一层模乘计算模块210存在后级模块,而作为前级模块的第一层模乘计算模块210则不需要进行去蒙哥马利化。这里,参数R和模数N是同批次密文共用的参数,其中模数N是加密过程中生成的密钥,参数R根据上述公式(4)计算也在同批次的密文中共用。如上所述,第一层蒙哥马利化域模乘运算模块200还包括参数计算分发模块201,用于计算共用的参数并分发下去。图2中所示的参数计算分发模块201与第二级数据分发模块204连接并将共用的参数R和模数N通过第二级数据分发模块204也逐级分发下去。在另一些示例性实施例中,参数计算分发模块201也可以与第一级数据分发模块202连接并通过第一级数据分发模块202将同一批次密文所共用的参数和模数等发送下去,或者通过其它任意合适的方式完成共用的参数和模数的发送。模乘计算引擎在完成第一步计算后,也就是进行密文的蒙哥马利化运算,第一步计算的结果也就是该密文的蒙哥马利化结果。接下来,模乘计算引擎进行第二步计算,也就是将该密文的蒙哥马利化结果与该模乘计算引擎的存储器中的中间结果进行模数N的模乘运算并用模乘运算结果来更新存储器中的中间结果。这里,如果该密文是该模乘计算引擎所接收的同批次的密文中的第一个,则该密文的蒙哥马利化结果是直接用来更新存储器中的中间结果。该模乘计算引擎的存储器中的中间结果是针对同批次的密文的蒙哥马利化域模乘运算中间结果。如上所述,通过将同态加密密态下的密态加法计算转换为等价的模乘运算,再将该等价的模乘运算基于蒙哥马利化域模乘运算实现,从而展开为多次迭代计算,多次迭代计算与同批次的多个密文一一对应,在每次迭代计算中将该密文和共用的参数R进行共用的模数N的模乘运算得到该密文的蒙哥马利化结果,再将该密文的蒙哥马利化结果和蒙哥马利化域模乘运算中间结果进行模数N的模乘运算从而更新蒙哥马利化域模乘运算中间结果(第一次迭代计算中直接将该密文的蒙哥马利化结果作为蒙哥马利化域模乘运算中间结果)。因此,利用蒙哥马利化域模乘运算式中可以按照任意的先后次序进行不同密文的蒙哥马利化域模乘运算而不影响最终结果,只要同批次的所有密文最后都完成了蒙哥马利化域模乘运算,这一特性,可以利用多个并行的模乘计算引擎来并行处理不同密文的蒙哥马利化域模乘运算。这里,每个模乘计算引擎都具有存储器用于存储中间结果也就是同批次的密文的蒙哥马利化域模乘运算中间结果。每个模乘计算引擎每次接收到密文后,先进行第一步计算进行该密文的蒙哥马利化,再进行第二步计算将该密文与之前所接收的同批次的其它密文的蒙哥马利化域模乘运算中间结果进行蒙哥马利化域模乘运算,从而更新所存储的蒙哥马利化域模乘运算中间结果。如此,模乘计算引擎相当于对同批次的密文中的一个或者多个密文分别进行了蒙哥马利化并对该一个或者多个密文进行了蒙哥马利化域模乘运算。也就是说,第一层模乘计算模块210所包括的模乘计算引擎完成的是累加模乘运算,每次用接收到的密文和参数进行模乘运算后将结果暂存并在接收到下一个密文时再次进行模乘运算。
请继续参阅图2,利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将密文经多级数据分发模块逐级传递到模乘计算引擎,通过按照轮询方式来将模乘计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于模乘计算模块而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源如模乘计算引擎的总数、待计算的输入数据也就是同批次的密文的数量、计算需求如多个批次的密态计算所带来的整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。
请继续参阅图2,为了提高数据吞吐速率,图2所示的第一层蒙哥马利化域模乘运算模块200需要按批次接收不同批次的密文,也就是以整体上串行的方式处理多个批次的密文,并且不同批次的密文一般适用不同的密钥因此也需要配置不同的参数。对于同一批次的密文而言,第一层蒙哥马利化域模乘运算模块200将该批次的所有密文逐个经多级数据分发模块逐级发送到第一层模乘计算模块210进行处理,如上所述多级数据分发模块例如其中的第一级数据分发模块202以轮询方式进行密文发送。当该批次的所有密文中的最后一个密文也被第一级数据分发模块202所发放后,则第一层蒙哥马利化域模乘运算模块200会开始处理下一批次的密文。为了能区分不同批次的密文,主要是为了避免模乘计算引擎混淆不同批次的密文,但是同时为了简化控制设计以及为了确保最大化并行处理速度,因此将区分不同批次密文的必要控制添加到数据流中,通过数据流驱动的方式而不是通过控制流方式来实现流水式处理不同批次的密文,下面详细说明。
请继续参阅图2,同一批次的密文按照每次一个密文的方式经多级数据分发模块发送下去,由此生成的数据流对应该批次的密文。对与该批次的密文对应的数据流添加配置信息,包括在该数据流的第一个数据上增加数据标志位,定义为首标志位(batch_sop);在该数据流的最后一个数据上也增加数据标志位,定义为尾标志位(batch_eop)。通过在每个批次的密文所对应的数据流中增加首标志位和尾标志位,可以通过首标志位和尾标志位标识该批次的密文的发送的开始和结束。例如,待发送的数据位宽设为1024比特,而单数的数据通道位宽设为64比特,需要按照高低位拼接的方式来通过单数的数据通道发送待发送的数据位宽。可以另外增加8比特的信息在数据通道上来记录标志位的信息,对于同批次的密文中的第一个密文或称第一个待发送的数据,可以将记录标志位的信息的该8比特的其中一个比特设置为高位如设置为1。如此,可以通过增加数据信息实现增加数据标志位从而标识每个批次的密文的发送的开始和结束,进而区分开不同批次的密文。在一些示例性实施例中,可以在数据通道以外配置额外的配置信息通道,该配置信息通道传输的是待发送数据的长度信息,并且每一批次的密文发送完毕后会额外发送一个配置信息,称之为批次完成信号(batch_end)。在一种可能的实施方式中,配置信息被添加到与同批次的多个密文对应的数据流中并标识多个密文中的最后一个被发送的密文。例如,配置信息包括数据标志位,数据标志位被添加到多个密文中的最后一个被发送的密文上。另外,配置信息还可以标识多个密文中的第一个被发送的密文,并且配置信息包括数据标志位,数据标志位包括首标志位和尾标志位。首标志位被添加到多个密文中的第一个被发送的密文上,尾标志位被添加到多个密文中的最后一个被发送的密文上。在另一种可能的实施方式中,配置信息通过相对于与多个密文对应的数据流的额外配置信息通道被提供,配置信息标识该数据流的第一个数据和最后一个数据。下面结合上述的轮询机制详细说明如何通过数据标志位和批次完成信号实现数据流驱动的控制方法。
请继续参阅图2,多级数据分发模块中的特定级数据分发模块的特定数据分发单元,每次发送完一个数据也就是发送完该批次的密文中的一个密文,就会让通道选择计数器加1,直到该次循环内每个通道都已经发送数据,则循环结束且对通道选择计数器清零,并且当该批次的数据全部发送后再额外发送批次完成信号,批次完成信号不对通道做选择而是群发给所有通道。例如图2所示的第二级数据分发模块204的数据分发单元B1,数据分发单元B1与下一级的数据分发单元C1和数据分发单元C2连接,所以有两个可轮询的数据通道:发送给数据分发单元C1或者发送给数据分发单元C2。上面提到轮询机制是按照特定次序询问所有可查询的对象,这里为了最大化利用资源,在数据分发单元B1处设置通道选择计数器。当数据分发单元B1发送一个密文给数据分发单元C1后,则让通道选择计数器加1,这样发送下一个密文时根据加1后的通道选择计数器会先询问数据分发单元C2,且当也发送密文给数据分发单元C2后对通道选择计数器清零。在一种可能的实施方式中,可以根据数据分发单元B1的最大通道数,也就是上述的数据分发单元B1的连接数或者说与数据分发单元B1相连接的下级数据分发单元的数量,而设置通道选择计数器自动清零的阈值,例如设置数据分发单元B1的通道选择计数器在数到2后清零,这样每次发送密文给数据分发单元C2后通道选择计数器会自动清零。数据分发单元B1可以根据上述的数据标志位来识别该批次的密文的发送的开始和结束,从而当该批次的密文都发送完毕后(即使该批次的密文的最后一个密文不是由数据分发单元B1所发送的)可以发送批次完成信号。数据分发单元B1在识别到该批次的密文的发送已经结束并发送批次完成信号后,也对通道选择计数器进行清零。总之,通过每批次的密文的数据标志位,每个数据分发单元可以识别该批次的密文的发送的开始和结束,并且通过通道选择计数器加1和清零机制可以实现每发送一次密文后就将下次询问的第一个对象设为特定次序上的下一位,且当所有通道都发送过密文后清零从头开始。而且当该批次的密文的发送已经结束时,也会对通道选择计数器清零从头开始。应当理解的是,通道选择计数器每次加1就会使得下次轮询时第一个查询的对象按照特定次序变化,这一效果也可以通过其他合适的技术手段实现,例如通过查表法等其他合适的方式,在此不做具体限定。
如上所述,模乘计算引擎对接收到的密文进行两步计算,进行密文的蒙哥马利化运算以及将该密文的蒙哥马利化结果与该模乘计算引擎的存储器中的中间结果进行蒙哥马利化域模乘运算。当模乘计算引擎接收到批次完成信号也就是batch_end的配置信息,则将模乘计算引擎的存储器中的中间结果作为该模乘计算引擎的计算结果发送给相连接的数据合并单元,并且将所接收的批次完成信号也发送给相连接的数据合并单元,也对该模乘计算引擎的存储器进行清零以便准备下一个批次的密文计算。前面提到,计算结果可以理解为模乘计算引擎对输入数据或称密文进行执行相应计算任务后且满足计算完成条件时的计算结果。这里,计算完成条件就是模乘计算引擎接收到批次完成信号,而模乘计算引擎的计算任务是在收到批次完成信号之前对所接收的密文进行上述的两步计算。另外,模乘计算引擎收到批次完成信号之后所接收到的下一个密文必然是该模乘计算引擎所接收的同批次的密文中的第一个,所以该密文的蒙哥马利化结果是直接用来更新存储器中的中间结果。如此,通过数据标志位和批次完成信号,结合上述的轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能。下面结合表1来示例性说明图2的第三级数据分发模块206的数据分发单元C1和与之相连接的模乘计算引擎PE1和PE2如何基于数据流驱动来完成上述分发和计算功能。
如表1所示,前后两个批次的数据通过数据分发单元C1发送下去。其中,第一个批次的数据中M1、M2、M3、M4和M5通过数据分发单元C1发送。由表1可知,通过数据分发单元C1的通道选择计数器,让模乘计算引擎PE1处理M1、M3和M5,而让模乘计算引擎PE2处理M2和M4。并且,当模乘计算引擎PE1接收到M3后会进行M3与M1之间的蒙哥马利化域模乘运算并更新中间结果。当第一个批次的数据发送完毕,数据分发单元C1识别到发送完成的数据标志位,对通道选择计数器进行清零并发送批次完成信号,批次完成信号群发给模乘计算引擎PE1和模乘计算引擎PE2。模乘计算引擎PE1在处理完M5后接收到批次完成信号,将模乘计算引擎PE1的中间结果作为计算结果也就是M1、M3和M5的蒙哥马利化域模乘运算结果;模乘计算引擎PE2接收到批次完成信号,将模乘计算引擎PE2的中间结果作为计算结果也就是M2和M4的蒙哥马利化域模乘运算结果。第二批次的数据L1和L2通过数据分发单元C1发送,则让模乘计算引擎PE1处理L1,让模乘计算引擎PE2处理L2。如此,通过添加数据标志位到每个批次的密文的数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能,并且输出合适的蒙哥马利化域模乘运算结果。
与分级数据分发模块相似,分级数据合并模块也通过通道选择计数器加1和清零机制来配合轮询机制,当收到批次完成信号后也对通道选择计数器清零。分级数据合并模块的最后一级数据合并模块不输出批次完成信号,也就是说,批次完成信号仅用于协调同一个蒙哥马利化域模乘运算模块内部的多级数据分发模块、模乘计算模块以及多级数据合并模块之间的运行。
总体来说,利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将密文经多级数据分发模块逐级传递到模乘计算引擎,通过按照轮询方式来将模乘计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于模乘计算模块而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源如模乘计算引擎的总数、待计算的输入数据也就是同批次的密文的数量、计算需求如多个批次的密态计算所带来的整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。进一步地,通过增加数据信息实现增加数据标志位从而标识每个批次的密文的发送的开始和结束,进而区分开不同批次的密文,结合上述的轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能。这样,通过数据流驱动的方式有利于简化控制设计以及确保最大化并行处理速度。
请参阅图3,图3示出了本申请实施例提供的计算装置的结构框图。如图3所示,计算装置300包括第一层蒙哥马利化域模乘运算模块310和第二层蒙哥马利化域模乘运算模块320。其中,第一层蒙哥马利化域模乘运算模块310包括第一层多级数据分发模块311,第一层模乘计算模块312以及第一层多级数据合并模块313。其中,第一层模乘计算模块312包括多个并行的模乘计算引擎。在一些示例性实施例中,第一层蒙哥马利化域模乘运算模块310与图2所示的第一层蒙哥马利化域模乘运算模块200具有相似结构。具体地,第一层多级数据分发模块311可以包括三级数据分发模块分别对应图2所示的第一级数据分发模块202,第二级数据分发模块204以及第三级数据分发模块206。第一层多级数据合并模块313可以包括三级数据合并模块分别对应图2所示的第一级数据合并模块222,第二级数据合并模块224以及第三级数据合并模块226。在另一些示例性实施例中,第一层蒙哥马利化域模乘运算模块310可以具有不同数量的数据分发模块或者数据合并模块,或者特定级的数据分发模块所具有的数据分发单元的数量以及该级的数据分发单元各自的连接数有所不同,或者特定级的数据合并模块所具有的数据合并单元的数量以及该级的数据合并单元各自的连接数有所不同,或者第一层模乘计算模块312所具有的模乘计算引擎数量不同。
应当理解的是,尽管具体构造有所不同,第一层蒙哥马利化域模乘运算模块310具有与图2所示的第一层蒙哥马利化域模乘运算模块200的类似有益技术效果及实现这些有益效果的必要特征,包括:利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将密文经多级数据分发模块逐级传递到模乘计算引擎,通过按照轮询方式来将模乘计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于模乘计算模块而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源如模乘计算引擎的总数、待计算的输入数据也就是同批次的密文的数量、计算需求如多个批次的密态计算所带来的整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。进一步地,通过增加数据信息实现增加数据标志位从而标识每个批次的密文的发送的开始和结束,进而区分开不同批次的密文,结合上述的轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能。这样,通过数据流驱动的方式有利于简化控制设计以及确保最大化并行处理速度。
请继续参阅图3,第二层蒙哥马利化域模乘运算模块320包括第二层多级数据分发模块321,第二层模乘计算模块322以及第二层多级数据合并模块323。第二层蒙哥马利化域模乘运算模块320与第一层蒙哥马利化域模乘运算模块310相比,可以具有不同的构造,例如具有不同数量的数据分发模块或者数据合并模块,或者特定级的数据分发模块所具有的数据分发单元的数量以及该级的数据分发单元各自的连接数有所不同,或者特定级的数据合并模块所具有的数据合并单元的数量以及该级的数据合并单元各自的连接数有所不同,或者模乘计算引擎数量不同,但是第二层蒙哥马利化域模乘运算模块320具有上述有益技术效果及实现这些有益效果的必要特征。并且,第二层蒙哥马利化域模乘运算模块320也通过增加的数据标志位来识别每个批次的密文的发送的开始和结束,也因此可以生成自身的批次完成信号或者类似的信号,用于实现将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能,因此通过数据流驱动的方式有利于简化控制设计以及确保最大化并行处理速度。
例如,在一种可能的实施方式中,第一层蒙哥马利化域模乘运算模块310的第一层模乘计算模块312具有100个并行的模乘计算引擎,而第一层多级数据分发模块311可以有三级数据分发模块或者四级数据分发模块甚至更多级的数据分发模块从而将多个批次的密文按批次逐个密文地发送,也就是同批次的密文是逐个密文地发送。如上所述,第一层多级数据合并模块313具有与第一层多级数据分发模块311的以第一层模乘计算模块312为分界线的镜像对称结构,例如当第一层多级数据分发模块311有四级数据分发模块时则第一层多级数据合并模块313也有四级数据合并模块。如此,同一个批次的密文按照轮询的方式发送给第一层模乘计算模块312的100个并行的模乘计算引擎,接收了密文的模乘计算引擎进行密文的蒙哥马利化运算以及将该密文的蒙哥马利化结果与该模乘计算引擎的存储器中的中间结果进行蒙哥马利化域模乘运算。因此,第一层模乘计算模块312所提供的计算结果还需要经第一层多级数据合并模块313进行合并后传送给第二层蒙哥马利化域模乘运算模块320进行进一步地处理。第二层蒙哥马利化域模乘运算模块320也通过第二层多级数据分发模块321和轮询机制将需要进一步处理的计算结果发送给第二层模乘计算模块322的模乘计算引擎(假设有20个)。则第二层模乘计算模块322的20个模乘计算引擎对接收的数据进行累加模乘运算,具体地将所接收的数据与模乘计算引擎的存储器中的中间结果进行蒙哥马利化域模乘运算。应当理解的是,第二层模乘计算模块322的模乘计算引擎只进行一次计算也就是蒙哥马利化域模乘运算,从而将由第一层模乘计算模块312所提供的一个或者多个密文的蒙哥马利化域模乘运算结果进行进一步地合并,得到更多个密文的蒙哥马利化域模乘运算结果。只有第一层模乘计算模块312需要对所接收的密文进行两次计算,也就是先进行密文的蒙哥马利化运算再进行累加模乘运算。第二层模乘计算模块322所输出的计算结果经过第二层多级数据合并模块323合并之后输出给第三层模乘计算模块330。第三层模乘计算模块330进行去蒙哥马利化运算,也就是对蒙哥马利化域模乘运算中间结果和和正整数1进行模数N的模乘运算,得到所述多个密文的模乘运算结果。第三层模乘计算模块330也可以理解为去蒙哥马利化运算模块。
请参阅图3,计算装置300还包括参数计算分发模块302用于计算共用的参数并分发下去例如上述的共用的参数R和模数N。参数计算分发模块302与第一层蒙哥马利化域模乘运算模块310的第一层分级数据分发模块311连接,还与第二层蒙哥马利化域模乘运算模块320的第二层分级数据分发模块321连接,以及与第三层模乘计算模块330连接,用于分享共用的参数。此外,计算装置300可能还具有其他的模块,例如任务管理模块用于解析上级命令、将输入数据分发下去并对计算结果进行处理;又例如内存管理模块用于存储上级命令、输入数据及计算结果;又例如数据传输模块用于进行命令和数据的传输,如采用PCIEDMA的数据传输方式。这些其他的模块未示出在图3中,这些其他的模块可以单独提供也可以作为计算装置300的一部分或者补充,也可以将这些其他的模块的功能和必须电路结构添加到图3中所示的模块中。这些改动应理解为本申请公开内容的一部分,并且可以根据实际需求或者应用场景进行调整,在此不做具体限定。
请参阅图4,图4示出了本申请实施例提供的另一种实施方式的计算装置的结构框图。如图4所示,计算装置400包括第一层蒙哥马利化域模乘运算模块402,第二层蒙哥马利化域模乘运算模块404,第三层蒙哥马利化域模乘运算模块406以及去蒙哥马利化运算模块410。其中,第一层蒙哥马利化域模乘运算模块402用于对同批次的密文进行蒙哥马利化并对一个或者多个密文进行蒙哥马利化域模乘运算,接着由第二层蒙哥马利化域模乘运算模块404对第一层蒙哥马利化域模乘运算模块402所计算得到的蒙哥马利化域模乘运算结果进行进一步的蒙哥马利化域模乘运算,然后由第三层蒙哥马利化域模乘运算模块406进行更进一步的蒙哥马利化域模乘运算,最后由去蒙哥马利化运算模块410进行去蒙哥马利化得到同批次的密文的模乘运算结果。其中,只有第一层蒙哥马利化域模乘运算模块402需要进行密文的蒙哥马利化运算。并且,计算装置400所包括的各个蒙哥马利化域模乘运算模块均具有与图2所示的第一层蒙哥马利化域模乘运算模块200的类似有益技术效果及实现这些有益效果的必要特征,包括:利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将密文经多级数据分发模块逐级传递到模乘计算引擎,通过按照轮询方式来将模乘计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于模乘计算模块而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源如模乘计算引擎的总数、待计算的输入数据也就是同批次的密文的数量、计算需求如多个批次的密态计算所带来的整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。进一步地,通过增加数据信息实现增加数据标志位从而标识每个批次的密文的发送的开始和结束,进而区分开不同批次的密文,结合上述的轮询机制,实现了将必要的控制信息添加到数据流中,从而使得在处理不同批次的密文的数据流时,让分级数据分发模块和模乘计算模块可以区分不同批次的密文并且完成相应的分发和计算功能。这样,通过数据流驱动的方式有利于简化控制设计以及确保最大化并行处理速度。
请参阅图3和图4,计算装置300和计算装置400的整体架构,也就是各自所具有的蒙哥马利化域模乘运算模块的数量是可变的,例如计算装置300具有两个或者说两层蒙哥马利化域模乘运算模块,而计算装置400具有三个或者说三层蒙哥马利化域模乘运算模块。通过灵活的配置计算装置的整体架构包括调整蒙哥马利化域模乘运算模块的数量,以及调整特定的蒙哥马利化域模乘运算模块的分级构造也就是该蒙哥马利化域模乘运算模块内的多级数据分发模块和多级数据合并模块的构造,还有调整该蒙哥马利化域模乘运算模块内的并行模乘计算引擎的数量,可以使得计算装置能应对各种复杂多变的环境也能充分提高可用的计算资源的效率。例如,通过FPGA的可编程可配置技术,可以通过增加更多层的蒙哥马利化域模乘运算模块同时减少各层蒙哥马利化域模乘运算模块内的模乘计算引擎数量,从而满足特定计算需求,还可以通过增加分级数据分发模块和分级数据合并模块的级数或者调整其中各级的数据合并单元和数据分发单元的数量来满足数据传递需求。因此,本申请实施例所公开的用于联邦学习和隐私计算的密态加法计算装置,其框架和设计原理,使得其能够高效处理与运算相关的海量数据量而且能够应对实际应用中复杂多变的需求。
请参阅图5,图5示出了本申请实施例提供的密态计算系统的结构框图。如图5所示,密态计算系统500包括接口装置502,管理模块504,密态加法计算装置510以及密态乘法计算装置520。其中,接口装置502用于接收密态计算任务例如密态计算式以及相应的数据和参数。管理模块504用于对密态计算式进行拆分,将其转化成密态乘法计算和密态加法计算两种基本形式。密态加法计算装置510用于完成密态加法计算,而密态乘法计算装置520用于完成密态乘法计算。如此,通过调用密态加法计算装置510以及密态乘法计算装置520,密态计算系统500可以应对较复杂的密态计算式,能够应对实际应用中复杂多变的需求。并且,密态加法计算装置510与图3所示的计算装置300或者图4所示的计算装置400具有相似的结构和功能,也因此具有上述有益技术效果。因此,密态计算系统500能够高效处理与运算相关的海量数据量而且能够应对实际应用中复杂多变的需求。
本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。
本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (21)
1.一种密态加法计算装置,用于联邦学习和隐私计算,其特征在于,所述计算装置包括:
至少一层蒙哥马利化域模乘运算模块,其中,所述至少一层蒙哥马利化域模乘运算模块配置成对同批次的多个密文中的一个或者多个密文分别进行蒙哥马利化运算和对蒙哥马利化的该一个或者多个密文进行蒙哥马利化域模乘运算从而完成对该一个或者多个密文的累加模乘运算并输出所述多个密文的蒙哥马利化域模乘运算结果,
其中,所述至少一层蒙哥马利化域模乘运算模块包括第一层蒙哥马利化域模乘运算模块,所述第一层蒙哥马利化域模乘运算模块包括第一层模乘计算模块和第一层数据分发模块,所述第一层数据分发模块与所述第一层模乘计算模块连接,所述第一层模乘计算模块包括并行的多个模乘计算引擎,
其中,所述第一层数据分发模块配置成每次发送所述多个密文中的一个密文并按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收被发送的密文,所述第一层数据分发模块还配置成在发送所述多个密文中的全部密文后生成批次完成信号并将所述批次完成信号发送给所述多个模乘计算引擎中的每一个模乘计算引擎。
2.根据权利要求1所述的计算装置,其特征在于,所述计算装置还包括:
去蒙哥马利化运算模块,其中,所述去蒙哥马利化运算模块配置成对所述多个密文的蒙哥马利化域模乘运算结果进行去蒙哥马利化运算。
3.根据权利要求1所述的计算装置,其特征在于,所述第一层数据分发模块根据配置信息生成所述批次完成信号,所述配置信息被添加到与所述多个密文对应的数据流中并标识所述多个密文中的最后一个被发送的密文。
4.根据权利要求3所述的计算装置,其特征在于,所述配置信息包括数据标志位,所述数据标志位被添加到所述多个密文中的最后一个被发送的密文上。
5.根据权利要求3所述的计算装置,其特征在于,所述配置信息还标识所述多个密文中的第一个被发送的密文,所述配置信息包括数据标志位,所述数据标志位包括首标志位和尾标志位,所述首标志位被添加到所述多个密文中的第一个被发送的密文上,所述尾标志位被添加到所述多个密文中的最后一个被发送的密文上。
6.根据权利要求1所述的计算装置,其特征在于,所述第一层数据分发模块根据配置信息生成所述批次完成信号,所述配置信息通过相对于与所述多个密文对应的数据流的额外配置信息通道被提供给所述第一层数据分发模块,所述配置信息标识该数据流的第一个数据和最后一个数据。
7.根据权利要求1所述的计算装置,其特征在于,所述第一层数据分发模块包括第一级数据分发模块和第二级数据分发模块,所述第一级数据分发模块包括至少一个数据分发单元,所述第二级数据分发模块包括多个数据分发单元,所述第一级数据分发模块的每一个数据分发单元分别与所述第二级数据分发模块的至少两个数据分发单元连接,所述第一级数据分发模块的每一个数据分发单元每次发送所述多个密文中的一个密文并按照轮询的方式选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元以接收被发送的密文。
8.根据权利要求7所述的计算装置,其特征在于,所述第一级数据分发模块的每一个数据分发单元包括各自的通道选择计数器,所述第一级数据分发模块的每一个数据分发单元根据该数据分发单元的通道选择计数器的计数选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元并且在选择后将该通道选择计数器的计数加一。
9.根据权利要求7所述的计算装置,其特征在于,所述第一级数据分发模块的每一个数据分发单元从与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元接收反馈信号并且根据该数据分发单元的反馈信号判断是否暂停通过该数据分发单元发送密文。
10.根据权利要求1所述的计算装置,其特征在于,所述第一层模乘计算模块的多个模乘计算引擎各自根据所接收的一个或者多个密文生成与该一个或者多个密文对应的蒙哥马利化域模乘运算结果从而得到所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果,所述至少一层蒙哥马利化域模乘运算模块还包括第二层蒙哥马利化域模乘运算模块,所述第二层蒙哥马利化域模乘运算模块配置成对所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行蒙哥马利化域模乘运算从而得到所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果。
11.根据权利要求7所述的计算装置,其特征在于,所述第一级数据分发模块和所述第二级数据分发模块各自所包括的数据分发单元的数量以及所述第一级数据分发模块的数据分发单元与所述第二级数据分发模块的数据分发单元之间的连接关系,根据以下至少之一进行调整:所述多个模乘计算引擎的数量,所述多个密文的数量,所述多个密文的数据位宽。
12.一种密态计算系统,用于联邦学习和隐私计算,其特征在于,所述密态计算系统包括:
密态加法装置,用于进行密态加法计算,其中,所述密态加法装置是根据权利要求1至11中任一项所述的计算装置;
密态乘法装置,用于进行密态乘法计算;和
管理模块,用于将密态计算式拆分成密态加法计算式和密态乘法计算式的组合,以及调用所述密态加法装置来完成所述密态加法计算式和调用所述密态乘法装置来完成所述密态乘法计算式。
13.一种密态加法计算装置,用于联邦学习和隐私计算,其特征在于,所述密态加法计算装置包括:
第一层蒙哥马利化域模乘运算模块,其中,所述第一层蒙哥马利化域模乘运算模块包括第一层模乘计算模块和第一层数据分发模块,所述第一层数据分发模块与所述第一层模乘计算模块连接,所述第一层模乘计算模块包括并行的多个模乘计算引擎,所述第一层数据分发模块配置成每次发送多个密文中的一个密文并按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收被发送的密文,所述第一层模乘计算模块的多个模乘计算引擎各自对所接收的一个或者多个密文进行蒙哥马利化运算并且生成与该一个或者多个密文对应的蒙哥马利化域模乘运算结果从而得到所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果;
第二层蒙哥马利化域模乘运算模块,其中,所述第二层蒙哥马利化域模乘运算模块配置成对所述第一层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行蒙哥马利化域模乘运算从而得到所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果;和
去蒙哥马利化运算模块,其中,所述去蒙哥马利化运算模块配置成对所述第二层蒙哥马利化域模乘运算模块的蒙哥马利化域模乘运算结果进行去蒙哥马利化运算。
14.根据权利要求13所述的密态加法计算装置,其特征在于,所述第一层数据分发模块还配置成在发送所述多个密文中的全部密文后生成批次完成信号并将所述批次完成信号发送给所述多个模乘计算引擎中的每一个模乘计算引擎。
15.根据权利要求13所述的密态加法计算装置,其特征在于,所述第一层数据分发模块根据配置信息生成批次完成信号,所述配置信息通过相对于与所述多个密文对应的数据流的额外配置信息通道被提供给所述第一层数据分发模块,所述配置信息标识该数据流的第一个数据和最后一个数据。
16.根据权利要求13所述的密态加法计算装置,其特征在于,所述第一层数据分发模块根据配置信息生成批次完成信号,所述配置信息标识所述多个密文中的第一个被发送的密文和最后一个被发送的密文,所述配置信息包括数据标志位,所述数据标志位包括首标志位和尾标志位,所述首标志位被添加到所述多个密文中的第一个被发送的密文上,所述尾标志位被添加到所述多个密文中的最后一个被发送的密文上。
17.根据权利要求13所述的密态加法计算装置,其特征在于,所述第一层数据分发模块包括第一级数据分发模块和第二级数据分发模块,所述第一级数据分发模块包括至少一个数据分发单元,所述第二级数据分发模块包括多个数据分发单元,所述第一级数据分发模块的每一个数据分发单元分别与所述第二级数据分发模块的至少两个数据分发单元连接,所述第一级数据分发模块的每一个数据分发单元每次发送所述多个密文中的一个密文并按照轮询的方式选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元以接收被发送的密文。
18.根据权利要求17所述的密态加法计算装置,其特征在于,所述第一级数据分发模块的每一个数据分发单元包括各自的通道选择计数器,所述第一级数据分发模块的每一个数据分发单元根据该数据分发单元的通道选择计数器的计数选择与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元中的一个数据分发单元并且在选择后将该通道选择计数器的计数加一。
19.根据权利要求17所述的计算装置,其特征在于,所述第一级数据分发模块的每一个数据分发单元从与该数据分发单元所连接的所述第二级数据分发模块的至少两个数据分发单元接收反馈信号并且根据该数据分发单元的反馈信号判断是否暂停通过该数据分发单元发送密文。
20.根据权利要求17所述的密态加法计算装置,其特征在于,所述第一级数据分发模块和所述第二级数据分发模块各自所包括的数据分发单元的数量以及所述第一级数据分发模块的数据分发单元与所述第二级数据分发模块的数据分发单元之间的连接关系,根据以下至少之一进行调整:所述多个模乘计算引擎的数量,所述多个密文的数量,所述多个密文的数据位宽。
21.一种密态计算系统,用于联邦学习和隐私计算,其特征在于,所述密态计算系统包括:
根据权利要求13至20中任一项所述的密态加法计算装置;
密态乘法装置,用于进行密态乘法计算;和
管理模块,用于将密态计算式拆分成密态加法计算式和密态乘法计算式的组合,以及调用所述密态加法装置来完成所述密态加法计算式和调用所述密态乘法装置来完成所述密态乘法计算式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195447.5A CN113656823B (zh) | 2021-10-14 | 2021-10-14 | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195447.5A CN113656823B (zh) | 2021-10-14 | 2021-10-14 | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656823A CN113656823A (zh) | 2021-11-16 |
CN113656823B true CN113656823B (zh) | 2022-02-08 |
Family
ID=78494552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111195447.5A Active CN113656823B (zh) | 2021-10-14 | 2021-10-14 | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656823B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900828B (zh) * | 2021-12-08 | 2022-03-04 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085210A (en) * | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112733161A (zh) * | 2020-12-30 | 2021-04-30 | 深圳致星科技有限公司 | 用于联邦学习密文运算的装置及方法 |
CN113032848A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法和用于数据处理的芯片 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112865954B (zh) * | 2021-04-26 | 2021-07-06 | 深圳致星科技有限公司 | 用于Paillier解密的加速器、芯片及系统 |
-
2021
- 2021-10-14 CN CN202111195447.5A patent/CN113656823B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085210A (en) * | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112733161A (zh) * | 2020-12-30 | 2021-04-30 | 深圳致星科技有限公司 | 用于联邦学习密文运算的装置及方法 |
CN113032848A (zh) * | 2021-05-20 | 2021-06-25 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法和用于数据处理的芯片 |
Non-Patent Citations (1)
Title |
---|
蒙哥马利算法在RSA中的应用研究;贺令亚;《现代计算机(专业版)》;20141015;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113656823A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008717B (zh) | 支持隐私保护的决策树分类服务系统及方法 | |
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
CN113688999B (zh) | 一种横向联邦xgboost决策树的训练方法 | |
CN112070222B (zh) | 用于联邦学习的处理装置、加速器及方法 | |
CN112988237B (zh) | 一种Paillier解密系统、芯片和方法 | |
JP6795863B1 (ja) | 秘密計算用変換装置、秘密計算システム、秘密計算用変換方法、および秘密計算用変換プログラム | |
CN114021734B (zh) | 用于联邦学习和隐私计算的参数计算装置、系统及方法 | |
CN113946846B (zh) | 用于联邦学习和隐私计算的密文计算装置及方法 | |
Hu et al. | Automatic search for a variant of division property using three subsets | |
CN112883408B (zh) | 用于隐私计算的加解密系统和芯片 | |
CN110166223A (zh) | 一种国密sm4的快速软件实现方法 | |
CN113656823B (zh) | 用于联邦学习和隐私计算的密态加法计算装置及系统 | |
CN112733161A (zh) | 用于联邦学习密文运算的装置及方法 | |
CN113078996B (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
WO2023174018A1 (zh) | 一种纵向联邦学习方法、装置、系统、设备及存储介质 | |
CN115098649A (zh) | 基于双密钥不经意伪随机函数的关键词搜索方法和系统 | |
WO2018061800A1 (ja) | 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム | |
Gerault et al. | Using constraint programming to solve a cryptanalytic problem | |
CN115834062B (zh) | 一种用于数据托管服务的企业数据传输加密方法 | |
CN113900828B (zh) | 联邦学习专用处理器、联邦学习处理芯片及芯片 | |
CN114358323A (zh) | 联邦学习环境中基于第三方高效皮尔森系数计算方法 | |
CN114944934A (zh) | 一种联邦学习方法和系统、第一隐私计算平台和第二隐私计算平台 | |
CN117077161B (zh) | 基于动态规划求解的隐私保护深度模型构建方法与系统 | |
EP3729715B1 (en) | Distributed computation method and system | |
CN115242374A (zh) | 支持fhe的智能合约引擎实现方法及系统 |
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 |