用于联邦学习和隐私计算的密文计算装置及方法与流程

文档序号:28545929发布日期:2022-01-19 15:04阅读:255来源:国知局
用于联邦学习和隐私计算的密文计算装置及方法与流程

1.本技术涉及数据安全和隐私保护技术领域,具体涉及一种用于联邦学习和隐私计算的密文计算装置及方法。


背景技术:

2.随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习(federated learning,fl)的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
3.在联邦学习和隐私计算相关应用场景中,各个拥有数据的参与方通常采用同态加密(homomorphic encryption,he)的方式对原始数据也叫明文进行加密,再将加密后的密态数据也叫密文用在联合网络模型训练、梯度计算、模型参数训练等。he算法满足密文同态运算性质,也即对明文进行同态加密得到密文,对密文进行特定的计算得到的密文计算结果进行对应的同态解密后等同于对该明文直接进行相同的计算。支持对密文进行任意形式的计算的he算法叫做全同态加密(fully homomorphic encryption,fhe)。仅支持加法、乘法或有限次加法和乘法的he算法叫做半同态加密(somewhat homomorphic encryption,swhe)或部分同态加密(partially homomorphic encryption,phe)。常见的swhe算法包括例如rsa算法、elgamal算法、paillier算法等。一般地,对密文进行的任意计算均可通过加法和乘法构造也就是展开为密态乘法和密态加法两种基本形式以及由这两种基本形式组成的更复杂的形式。但是,密文计算特别是基于he算法的密文计算涉及到大量高纬度数据且相关模数往往有较大的比特位宽如2048比特,并且需要海量的大整数位宽的模幂运算和模乘运算,与运算相关的数据量可达到数亿级。这些给存储资源和计算性能提出了很大的挑战,为此,需要一种用于联邦学习和隐私计算的密文计算装置及方法,能够应对复杂多变的情况且高效处理密文计算需求。


技术实现要素:

4.第一方面,本技术实施例提供了一种密文计算装置,应用于联邦学习和隐私计算。所述密文计算装置包括:蒙哥马利化模幂运算模块,其中,所述蒙哥马利化模幂运算模块包括第一层数据分发模块和与所述第一层数据分发模块连接的第一层模幂计算模块,所述第一层模幂计算模块包括并行的多个模幂计算引擎,所述第一层数据分发模块配置成每次发送多个密文明文对中的一个密文明文对并按照轮询的方式选择所述多个模幂计算引擎中的一个模幂计算引擎以接收被发送的密文明文对,被选择的模幂计算引擎对所述被发送的密文明文对中的密文进行蒙哥马利化运算得到蒙哥马利化密文以及对该蒙哥马利化密文和所述被发送的密文明文对中的明文进行蒙哥马利化模幂运算得到被选择的模幂计算引擎的蒙哥马利化模幂运算结果,所述多个模幂计算引擎各自生成的蒙哥马利化模幂运算结果被整合得到所述多个密文明文对的蒙哥马利化模幂运算结果;累加模乘运算模块,其中,所述累加模乘运算模块包括第二层数据分发模块和与所述第二层数据分发模块连接的第二层模乘计算模块,所述第二层模乘计算模块包括并行的多个模乘计算引擎,所述第二层数据分发模块配置成选择所述多个模乘计算引擎中的一个模乘计算引擎以接收所述多个密文明文对的蒙哥马利化模幂运算结果,被选择的模乘计算引擎对所述多个密文明文对的蒙哥马利化模幂运算结果进行累加模乘运算得到所述多个密文明文对的累加模乘运算结果;和去蒙哥马利化运算模块,其中,所述去蒙哥马利化运算模块被配置为对所述多个密文明文对的累加模乘运算结果进行去蒙哥马利化运算得到所述多个密文明文对的密文计算结果。
5.第一方面所描述的技术方案,能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
6.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个密文明文对根据要进行密态乘法的密文数据组和明文数据组确定。
7.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个密文明文对根据要进行密态矩阵乘法的密文矩阵的行向量和明文矩阵的列向量确定,或者,所述多个密文明文对根据所述密文矩阵的列向量和所述明文矩阵的行向量确定。
8.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个模幂计算引擎的数量和所述多个模乘计算引擎的数量均可调整。
9.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述密文计算装置还包括:参数计算分发模块,用于参数计算并通过所述第一层数据分发模块分发用于模幂计算的参数给所述第一层模幂计算模块以及通过所述第二层数据分发模块分发用于模乘计算的参数给所述第二层模乘计算模块。
10.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述密文计算装置还包括:任务管理模块,用于生成与所述多个密文明文对相对应的配置信息,所述配置信息包括数据头标识和数据尾标识,所述数据头标识指示了所述多个密文明文对中第一个被发送的密文明文对,所述数据尾标识指示了所述多个密文明文对中最后一个被发送的密文明文对。
11.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述配置信息还包括数据位宽和密文计算模式标识符。
12.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述第一层数据分发模块根据所述配置信息生成第一层批次完成信号并在发送完所述多个密文明文对后将所述第一层批次完成信号发送给所述多个模幂计算引擎中的每一个模幂计算引擎,所述第二层数据分发模块根据所述配置信息生成第二层批次完成信号并在发送所述多个密文明文对的蒙哥马利化模幂运算结果后将所述第二层批次完成信号发送给被选择的模乘计算引擎。
13.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个模幂计算引擎中的每一个模幂计算引擎根据所述第一层批次完成信号来判断该模幂计算引擎是否适合接收新的用于模幂计算的参数,所述多个模乘计算引擎中的每一个模乘计算引擎根据所述第二层批次完成信号来判断该模幂计算引擎是否适合接收新的用于模乘计算的参数。
14.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述配置信息被添加到与所述多个密文明文对相对应的数据流中从而与所述多个密文明文对一起被发送给所述第一层数据分发模块,或者,所述配置信息通过配置信息通道被发送给所述第一层数据分发模块,所述配置信息通道不同于所述多个密文明文对被发送给所述第一层数据分发模块所经过的数据通道。
15.根据第一方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述第二层数据分发模块配置成选择所述多个模乘计算引擎中的一个模乘计算引擎以接收所述多个密文明文对的蒙哥马利化模幂运算结果,包括:所述第二层数据分发模块配置成按照轮询的方式选择所述多个模乘计算引擎中的一个模乘计算引擎以接收所述多个密文明文对的蒙哥马利化模幂运算结果。
16.第二方面,本技术实施例提供了一种密文计算系统。所述密文计算系统包括:密态加法器,用于进行密态加法计算;根据第一方面中任一项所述的密文计算装置;和主处理器,用于将密态计算式拆分成密态加法计算式和密态乘法计算式的组合,以及调用所述密态加法器来完成所述密态加法计算式和调用所述密文计算装置来完成所述密态乘法计算式。
17.第二方面所描述的技术方案,能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
18.第三方面,本技术实施例提供了一种密文计算方法,应用于联邦学习和隐私计算。所述方法包括:获得要进行密态乘法的多个密文明文对;通过第一层数据分发模块,每次发送多个密文明文对中的一个密文明文对并按照轮询的方式选择第一层模幂计算模块所包括的并行的多个模幂计算引擎中的一个模幂计算引擎以接收被发送的密文明文对,其中,所述第一层模幂计算模块与所述第一层数据分发模块连接;通过被选择的模幂计算引擎,对所述被发送的密文明文对中的密文进行蒙哥马利化运算得到蒙哥马利化密文以及对该蒙哥马利化密文和所述被发送的密文明文对中的明文进行蒙哥马利化模幂运算得到被选择的模幂计算引擎的蒙哥马利化模幂运算结果;将所述多个模幂计算引擎各自生成的蒙哥马利化模幂运算结果整合得到所述多个密文明文对的蒙哥马利化模幂运算结果;通过第二层数据分发模块,选择第二层模乘计算模块所包括的并行的多个模乘计算引擎中的一个模乘计算引擎以接收所述多个密文明文对的蒙哥马利化模幂运算结果,其中,所述第二层模
乘计算模块与所述第二层数据分发模块连接;通过被选择的模乘计算引擎,对所述多个密文明文对的蒙哥马利化模幂运算结果进行累加模乘运算得到所述多个密文明文对的累加模乘运算结果;和通过去蒙哥马利化运算模块,对所述多个密文明文对的累加模乘运算结果进行去蒙哥马利化运算得到所述多个密文明文对的密文计算结果。
19.第三方面所描述的技术方案,能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
20.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个模幂计算引擎的数量和所述多个模乘计算引擎的数量均可调整。
21.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述方法还包括:通过参数计算分发模块进行参数计算,和通过所述第一层数据分发模块分发用于模幂计算的参数给所述第一层模幂计算模块以及通过所述第二层数据分发模块分发用于模乘计算的参数给所述第二层模乘计算模块。
22.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述方法还包括:通过任务管理模块生成与所述多个密文明文对相对应的配置信息,其中,所述配置信息包括数据头标识和数据尾标识,所述数据头标识指示了所述多个密文明文对中第一个被发送的密文明文对,所述数据尾标识指示了所述多个密文明文对中最后一个被发送的密文明文对。
23.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述配置信息还包括数据位宽和密文计算模式标识符。
24.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述第一层数据分发模块根据所述配置信息生成第一层批次完成信号并在发送完所述多个密文明文对后将所述第一层批次完成信号发送给所述多个模幂计算引擎中的每一个模幂计算引擎,所述第二层数据分发模块根据所述配置信息生成第二层批次完成信号并在发送所述多个密文明文对的蒙哥马利化模幂运算结果后将所述第二层批次完成信号发送给被选择的模乘计算引擎。
25.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述多个模幂计算引擎中的每一个模幂计算引擎根据所述第一层批次完成信号来判断该模幂计算引擎是否适合接收新的用于模幂计算的参数,所述多个模乘计算引擎中的每一个模乘计算引擎根据所述第二层批次完成信号来判断该模幂计算引擎是否适合接收新的用于模乘计算的参数。
26.根据第三方面的技术方案的一种可能的实现方式,本技术实施例还提供了所述配置信息被添加到与所述多个密文明文对相对应的数据流中从而与所述多个密文明文对一起被发送给所述第一层数据分发模块,或者,所述配置信息通过配置信息通道被发送给所述第一层数据分发模块,所述配置信息通道不同于所述多个密文明文对被发送给所述第一层数据分发模块所经过的数据通道。
附图说明
27.为了说明本技术实施例或背景技术中的技术方案,下面将对本技术实施例或背景技术中所需要使用的附图进行说明。
28.图1示出了本技术实施例提供的密文计算装置的结构框图。
29.图2示出了本技术实施例提供的包括图1所示的密文计算装置的密文计算系统的结构框图。
30.图3示出了本技术实施例提供的密文计算方法的流程示意图。
具体实施方式
31.本技术实施例为了解决在联邦学习和隐私计算相关应用场景中如何能够应对复杂多变的情况且高效处理密文计算需求,这样的技术难题,提供了一种用于联邦学习和隐私计算的密文计算装置及方法。如此,实现了能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
32.本技术实施例可用于以下应用场景,包括但是不限于,联邦学习,隐私计算,基于同态加密算法的密文计算,涉及大量大整数模乘运算的其它应用场景等。
33.本技术实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
34.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术的实施例进行描述。
35.图1示出了本技术实施例提供的密文计算装置的结构框图。如图1所示,密文计算装置100包括蒙哥马利化模幂运算模块110,累加模乘运算模块120以及去蒙哥马利化运算模块130,密文计算装置100还包括参数计算分发模块102和任务管理模块104。密文计算装置100用于对输入数据进行密文计算并输出计算结果。其中,输入数据可以理解为多个密文或者称作加密后数据组(c1,c2直到cn)以及多个明文(k1,k2直到kn),其中n是要进行密文计算的密文或者明文的总数。对输入数据进行密文计算就是进行密态乘法计算,也就是对输入数据的每一个密文与明文进行乘法运算,然后再对乘法运算结果进行求和运算,最后再取模。可以基于蒙哥马利化域模乘运算来实现密态乘法计算,因此先对密文和明文进行模幂运算,再对模幂运算结果进行模乘运算。具体地,输入数据可以理解为多个密文明文对,其中的每一个密文明文对包括成对的密文c和明文k,先对密文c做蒙哥马利化得到mc然后对mc和明文k做模幂运算得到模幂运算结果v;对多个密文明文对的每一个密文明文对的模幂运算结果v进行累加模乘;最后进行去蒙哥马利化运算就得到计算结果。应当理解的是,同态加密密态下的密态计算式包括密态乘法计算式和密态加法计算式这两种基本形式,而任意的密态计算式都可以表示成这两种基本形式的组合或者构成。另外,输入数据可以是一维向量,也可以包括一维向量和/或二维矩阵,例如均是一维向量或二维矩阵的输入数据进行密态乘法计算。通过提取矩阵中的相应行向量或者列向量,可以将密态矩阵乘法转化为要进行密态乘法的密文数据组和明文数据组。例如,所述多个密文明文对根据要进行密态乘法的密文数据组和明文数据组确定。再例如,所述多个密文明文对根据要进行密态矩阵乘法的密文矩阵的行向量和明文矩阵的列向量确定,或者,所述多个密文明文对根据所述密文矩阵的列向量和所述明文矩阵的行向量确定。下面结合图1进一步说明密文计算装置100的构造和运行原理。
36.请参阅图1,蒙哥马利化模幂运算模块110包括第一层数据分发模块112和与第一层数据分发模块112连接的第一层模幂计算模块114。第一层模幂计算模块114包括并行的
多个模幂计算引擎(未示出)。第一层数据分发模块112配置成每次发送多个密文明文对中的一个密文明文对并按照轮询的方式选择多个模幂计算引擎中的一个模幂计算引擎以接收被发送的密文明文对。被选择的模幂计算引擎对被发送的密文明文对中的密文进行蒙哥马利化运算得到蒙哥马利化密文以及对该蒙哥马利化密文和被发送的密文明文对中的明文进行蒙哥马利化模幂运算得到被选择的模幂计算引擎的蒙哥马利化模幂运算结果。多个模幂计算引擎各自生成的蒙哥马利化模幂运算结果被第一层数据合并模块116整合得到多个密文明文对的蒙哥马利化模幂运算结果。其中,第一层数据分发模块112配置成每次发送多个密文明文对中的一个密文明文对并按照轮询的方式选择多个模幂计算引擎中的一个模幂计算引擎以接收被发送的密文明文对,这意味着按照特定次序询问多个模幂计算引擎中的下一个模幂计算引擎是否适合接收被发送的密文明文对,如果适合接收则发送密文明文对并结束本次询问,然后等下一次有新的被发送的密文明文对时开始新的一轮询问。这里,某个模幂计算引擎是否适合接收被发送的密文明文对的判断依据是该模幂计算引擎已经完成之前的计算任务并可以开始新的计算任务。
37.请继续参阅图1,在一种可能的实施方式中,第一层数据分发模块112内部还可以包括一级或者多级数据分发模块(未示出)。这些一级或者多级数据分发模块将用于计算的输入数据以轮询的方式逐级向下发放,具体地,每一级数据分发模块以轮询方式将输入数据发送到下一级数据分发模块。这些一级或者多级数据分发模块各自可以包括一个或者数据分发单元。以轮询的方式发送数据到下一级数据分发模块意味着,按照特定次序询问下一级数据分发模块的每一个数据分发单元是否适合接收输入数据,如果适合接收输入数据则发送输入数据并结束本次询问,然后再等下一次有输入数据要发送时开始新的一轮查询。其中,第一层数据分发模块所包括的一级或者多级数据分发模块中的最后一级数据分发模块用于将输入数据发送给第一层模幂计算模块114。具体地,最后一级数据分发模块所包括的多个数据分发单元中的每一个数据分发单元与多个模幂计算引擎中的一个或者多个模幂计算引擎连接。如此,通过为第一层数据分发模块112配置多级的数据分发模块,在每一级的数据分发模块中有多个数据分发单元且每一个数据分发单元与位于下一级的数据分发模块中的多于一个(两个或者更多个)的数据分发单元连接,则查询该数据分发单元等效于查询与该数据分发单元连接的位于下一级的多于一个的数据分发单元;依次类推,可以继续以轮询的方式逐级查询直到最后一级的数据分发模块的数据分发单元查询与之连接的模幂计算引擎的情况;这样就可以在一次查询中确定多个模幂计算引擎中是否存在至少一个模幂计算引擎适合接收输入数据。并且,因为每一级的数据分发模块的数据分发单元都是按照特定次序询问,也就说轮询的方式是固定的或者说预先设定的,所以有利于控制设计和硬件实现,也有利于确保最大最大限度地利用空闲的计算资源。并且多级的数据分发模块各自具有的数据分发单元的数量以及不同级的数据分发单元之间的连接关系,都是可调整的,例如通过fpga进行硬件编程或者再配置。在另一些示例性实施例中,可以分布任意数量的数据分发单元,但是整体上看从第一级数据分发模块到最后一级数据分发模块,其中各级所具有的数据分发单元应保持增长或者至少不减少的趋势,从而可以有利于通过轮询机制来一次查询多个模幂计算引擎的情况。例如,第一级数据分发模块可以有两个数据分发单元,第二级数据分发模块可以有75个数据分发单元,第三级数据分发模块可以有150个数据分发单元并与300个模幂计算引擎连接。而其中第一级数据分发模块的两个
数据分发单元,可以分别与35个和40个位于第二级的数据分发单元连接,或者分别与25个和50个位于第二级的数据分发单元连接。同一级的各个数据分发单元各自与下一级的数据分发单元连接的数量可以是一致的也可以是不一致的。具体地,某级的数据分发模块所具有的数据分发单元的数量,以及该级的数据分发单元各自的连接数(某个数据分发单元的连接数是与该数据分发单元相连接的下一级的数据分发单元的数量或者模幂计算引擎的数量)都是可调整的也是可变的,例如可以根据实际需求和应用场景调整,或者根据可用的计算资源调整,或者根据待计算的输入数据调整,或者根据计算需求调整。通过灵活地根据各种因素调整各级的数据分发单元的数量以及这些数据分发单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。
38.请继续参阅图1,在一种可能的实施方式中,第一层数据合并模块116内部也可以包括一级或者多级数据合并模块(未示出),并且每一级数据合并模块以轮询方式将计算结果发送到下一级数据合并模块。在一些示例性实施例中,对于同一个蒙哥马利化模幂运算模块110而言,以该蒙哥马利化域模乘运算模块110的第一层模幂计算模块114为分界线,各级的数据分发模块将输入数据逐级发送到该第一层模幂计算模块114,该第一层模幂计算模块114将计算结果经各级的数据合并模块逐级传递出去。所以从最早接受输入数据的第一级数据分发模块经该第一层模幂计算模块114最后到最后传递计算结果的最后一级数据合并模块,可以定义为该蒙哥马利化模幂运算模块110内部的数据流向或者数据传递方向,其中按照该数据流向可以定义发送数据的某级是上游而接收该数据的另一级是下游。沿着这样定义的数据流向,以第一层模幂计算模块114为分界线,从该第一层模幂计算模块114出发沿着该数据流向的反向(从下游往上游或者说从该第一层模幂计算模块114往第一级数据分发模块)上分布的各级数据分发模块所包括的数据分发单元的数量及各自的连接数,与从该第一层模幂计算模块114出发沿着该数据流向的正向(从上游往下游或者说从该第一层模幂计算模块114往最后一级数据合并模块)上分布的各级数据合并模块所包括的数据合并单元的数量及各自的连接数,是一一对应的。如此,通过以第一层模幂计算模块114为分界线而镜像分布的各级数据分发模块和各级数据合并模块,或者说第一层数据分发模块112的内部构造与第一层数据合并模块116的内部构造之间以第一层模幂计算模块114为分界线而成镜像对称的关系。
39.请参阅图1,蒙哥马利化模幂运算模块110利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将输入数据经多级数据分发模块逐级传递到模幂计算引擎,通过按照轮询方式来将模幂计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于第一层模幂计算模块114而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源、待计算的输入数据、整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并
单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。
40.请继续参阅图1,累加模乘运算模块120包括第二层数据分发模块122和与第二层数据分发模块122连接的第二层模乘计算模块124。第二层模乘计算模块124包括并行的多个模乘计算引擎(未示出)。第二层数据分发模块122配置成选择多个模乘计算引擎中的一个模乘计算引擎以接收多个密文明文对的蒙哥马利化模幂运算结果。第二层数据分发模块122与第一层数据合并模块116连接以接收被整合后得到的多个密文明文对的蒙哥马利化模幂运算结果。被选择的模乘计算引擎对多个密文明文对的蒙哥马利化模幂运算结果进行累加模乘运算得到多个密文明文对的累加模乘运算结果。累加模乘运算模块120还包括第二层数据合并模块126用于将多个密文明文对的累加模乘运算结果整合后发送给去蒙哥马利化运算模块130。第二层数据分发模块122可以通过任意合适的方式选择第二层模乘计算模块124所包括的多个模乘计算引擎中的一个模乘计算引擎。
41.在一种可能的实施方式中,第二层数据分发模块122和第一层数据分发模块112类似,也就是包括一级或者多级数据分发模块(未示出)。第二层数据合并模块126和第一层数据合并模块116类似,也就是包括一级或者多级数据合并模块(未示出)。并且,第二层数据分发模块122所包括的一级或者多级数据分发模块以及第二层数据合并模块126所包括的一级或者多级数据合并模块均以轮询的方式逐级向下发放。其中,第二层数据分发模块122所包括的一级或者多级数据分发模块中的最后一级数据分发模块用于将输入数据发送给第二层模乘计算模块124。具体地,第二层数据分发模块122的最后一级数据分发模块所包括的多个数据分发单元中的每一个数据分发单元与多个模乘计算引擎中的一个或者多个模乘计算引擎连接。如此,通过为第二层数据分发模块122配置多级的数据分发模块,在每一级的数据分发模块中有多个数据分发单元且每一个数据分发单元与位于下一级的数据分发模块中的多于一个(两个或者更多个)的数据分发单元连接,则查询该数据分发单元等效于查询与该数据分发单元连接的位于下一级的多于一个的数据分发单元;依次类推,可以继续以轮询的方式逐级查询直到最后一级的数据分发模块的数据分发单元查询与之连接的模乘计算引擎的情况;这样就可以在一次查询中确定多个模乘计算引擎中是否存在至少一个模乘计算引擎适合接收输入数据。最后一级数据分发模块所包括的多个数据分发单元可以按照预设规则选择适合接收输入数据的至少一个模乘计算引擎中的一个模乘计算引擎来接收多个密文明文对的蒙哥马利化模幂运算结果,例如默认选择序号最小的或者空闲程度最大的,在此不做具体限定。并且,因为每一级的数据分发模块的数据分发单元都是按照特定次序询问,也就说轮询的方式是固定的或者说预先设定的,所以有利于控制设计和硬件实现,也有利于确保最大最大限度地利用空闲的计算资源。并且多级的数据分发模块各自具有的数据分发单元的数量以及不同级的数据分发单元之间的连接关系,都是可调整的,例如通过fpga进行硬件编程或者再配置。在另一些示例性实施例中,可以分布任意数量的数据分发单元,但是整体上看从第一级数据分发模块到最后一级数据分发模块,其中各级所具有的数据分发单元应保持增长或者至少不减少的趋势,从而可以有利于通过轮询机制来一次查询多个模乘计算引擎的情况。另外,在一些示例性实施例中,通过以第二层模乘计算模块124为分界线而镜像分布的各级数据分发模块和各级数据合并模块,或者说第二层数据分发模块122的内部构造与第二层数据合并模块126的内部构造之间以第二层模
乘计算模块124为分界线而成镜像对称的关系。
42.请参阅图1,累加模乘运算模块120利用多级数据分发模块和多级数据合并模块,通过按照轮询方式来将输入数据经多级数据分发模块逐级传递到模乘计算引擎,通过按照轮询方式来将模乘计算引擎达成计算完成条件时输出的计算结果经多级数据合并模块逐级传递下去,实现了通过轮询机制来提高单次查询的效果,有利于提高资源利用效率和并行速度。并且,各级的数据分发模块所包括的数据分发单元的数量及连接数与各级的数据合并模块所包括的数据合并单元的数量及连接数相对于第二层模乘计算模块124而言分别沿着数据流向的反向和正向是镜像对称分布的,这样有利于发挥轮询机制的效果。并且,多级数据分发模块和多级数据合并模块的内部结构,包括有多少级的数据分发模块或者数据合并模块,各级的数据分发模块或者数据合并模块所包括的数据分发单元或者数据合并单元的数量及连接数,都是可以调整的,并且可以根据以下因素之一或者其组合进行调整:实际需求、应用场景、可用计算资源、待计算的输入数据、整体上的计算需求、预期的资源时间损耗等。如此,通过灵活地根据各种因素调整各级的数据分发单元或数据合并单元的数量以及这些数据分发单元或数据合并单元各自的连接数,可以更好地适应需求以便最大化资源利用效率和并行计算速度。
43.请继续参阅图1,去蒙哥马利化运算模块130与第二层数据合并模块126连接并且被配置为对所述多个密文明文对的累加模乘运算结果进行去蒙哥马利化运算得到所述多个密文明文对的密文计算结果。如此,通过上述蒙哥马利化模幂运算模块110,累加模乘运算模块120以及去蒙哥马利化运算模块130之间的协作,密文计算装置100实现了基于蒙哥马利化域模乘运算来实现密态乘法计算,也就是先对密文和明文进行模幂运算,再对模幂运算结果进行模乘运算。并且,密文计算装置100可以适用于多种类型的输入数据,例如,所述多个密文明文对根据要进行密态乘法的密文数据组和明文数据组确定;再例如,所述多个密文明文对根据要进行密态矩阵乘法的密文矩阵的行向量和明文矩阵的列向量确定,或者,所述多个密文明文对根据所述密文矩阵的列向量和所述明文矩阵的行向量确定。并且,密文计算装置100还包括了在轮询机制、多级数据分发模块和多级数据合并模块、镜像对称分布以及可调整的内部结构(例如,多个模幂计算引擎的数量和多个模乘计算引擎的数量均可调整)等优化,从而更好地适应需求以便最大化资源利用效率和并行计算速度,有利于在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。另外,通过轮询机制来选择后级模块可以通过任意合适的实现方式,例如可以通过通道选择计数器,每次发送一个数据到所选择的一个后级模块后,将通道选择计数器加1,直到每个通道均已发送数据则对通道选择计数器清零。
44.请继续参阅图1,参数计算分发模块102用于参数计算并通过第一层数据分发模块112分发用于模幂计算的参数给第一层模幂计算模块114以及通过第二层数据分发模块122分发用于模乘计算的参数给第二层模乘计算模块124。例如,参数计算分发模块102可以将计算出的参数发送给第一层数据分发模块112的第二级数据分发模块(如果有)。任务管理模块104用于生成与所述多个密文明文对相对应的配置信息。所述配置信息包括数据头标识和数据尾标识,所述数据头标识指示了所述多个密文明文对中第一个被发送的密文明文对,所述数据尾标识指示了所述多个密文明文对中最后一个被发送的密文明文对。应当理解的是,为了提高数据吞吐速率,本技术实施例提供了通过增加数据信息也就是配置信息,
配置信息包括数据头标识和数据尾标识,从而使得:第一层数据分发模块112根据配置信息生成第一层批次完成信号并在发送完多个密文明文对后将第一层批次完成信号发送给多个模幂计算引擎中的每一个模幂计算引擎,第二层数据分发模块122根据配置信息生成第二层批次完成信号并在发送多个密文明文对的蒙哥马利化模幂运算结果后将第二层批次完成信号发送给被选择的模乘计算引擎。第一层批次完成信号由第一层数据分发模块112根据配置信息生成,用于使得多个模幂计算引擎中的每一个模幂计算引擎根据第一层批次完成信号来判断该模幂计算引擎是否适合接收新的用于模幂计算的参数;第二层批次完成信号由第二层数据分发模块122根据配置信息生成,用于使得多个模乘计算引擎中的每一个模乘计算引擎根据第二层批次完成信号来判断该模乘计算引擎是否适合接收新的用于模乘计算的参数。如此,通过添加配置信息,可以让密文计算装置100流水式处理不同批次的输入数据并能区分开不同批次的输入数据,这样有利于增加数据吞吐速率以及充分利用可用计算资源。并且,第一层批次完成信号可用于指示接收到第一层批次完成信号的模幂计算引擎进行必要操作以区分开不同批次的输入数据,相当于将控制操作等效地转化为了数据流驱动的控制流程,有利于简化控制设计。类似地,第二层批次完成信号可用于指示接收到第二层批次完成信号的模乘计算引擎进行必要操作以区分开不同批次的输入数据。在一些示例性实施例中,第一层数据分发模块112根据配置信息生成第一层批次完成信号,可以通过识别当前批次的输入数据的配置信息中的数据尾标识以及识别下一个批次的输入数据的配置信息中的数据头标识。另外,配置信息还可以包括数据位宽和密文计算模式标识符以及任意合适的信息。如此,通过添加配置信息,有利于实现流水式处理不同批次的输入数据并能区分开不同批次的输入数据,从而增加数据吞吐速率以及充分利用可用计算资源。应当理解的是,配置信息可以被添加到与多个密文明文对相对应的数据流中从而与多个密文明文对一起被发送给第一层数据分发模块,或者,配置信息通过配置信息通道被发送给第一层数据分发模块。配置信息通道不同于多个密文明文对被发送给第一层数据分发模块所经过的数据通道。例如,设待传输的数据位宽是1024比特而单数数据通道位宽是64比特,可以在数据通道上增加8比特来体现配置信息,从而使得配置信息可以被添加到与多个密文明文对相对应的数据流中。或者,可以在数据通道之外额外增加一个通道作为配置信息通道。
45.应当理解的是,图1所示的密文计算装置100可能还包括其它模块(未示出)用于提供各种辅助性功能或者控制功能,包括但是不限于,例如任务管理模块用于解析上级命令、将输入数据分发下去并对计算结果进行处理;又例如内存管理模块用于存储上级命令、输入数据及计算结果;又例如数据传输模块用于进行命令和数据的传输,如采用高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)和直接内存访问(direct memory access,dma)的数据传输方式。这些其他的模块未示出,这些其他的模块可以单独提供也可以作为图1中已示出的模块的一部分或者补充,也可以将这些其他的模块的功能和必要的电路结构添加到图1中所示的模块中。例如,第一级数据分发模块112或者任务管理模块104可以具有pcie dma的数据接口以便高速接收输入数据。这些改动应理解为本技术公开内容的一部分,并且可以根据实际需求或者应用场景进行调整,在此不做具体限定。
46.图2示出了本技术实施例提供的包括图1所示的密文计算装置的密文计算系统的
结构框图。如图2所示,密文计算系统210包括密文计算装置200,密态加法器212以及主处理器214。密文计算系统210还包括接收模块216。其中,密文计算装置200与图1所示的密文计算装置100具有相似的结构和功能,因此也具有上述的有益技术效果,在此不再赘述。密态加法器212用于进行密态加法计算。主处理器214用于将密态计算式拆分成密态加法计算式和密态乘法计算式的组合,以及调用所述密态加法器来完成所述密态加法计算式和调用所述密文计算装置来完成所述密态乘法计算式。因此,密文计算系统210能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
47.图3示出了本技术实施例提供的密文计算方法的流程示意图。如图3所示,密文计算方法300包括以下步骤。
48.s310:获得要进行密态乘法的多个密文明文对。
49.s312:通过第一层数据分发模块,每次发送多个密文明文对中的一个密文明文对并按照轮询的方式选择第一层模幂计算模块所包括的并行的多个模幂计算引擎中的一个模幂计算引擎以接收被发送的密文明文对,其中,所述第一层模幂计算模块与所述第一层数据分发模块连接。
50.s314:通过被选择的模幂计算引擎,对所述被发送的密文明文对中的密文进行蒙哥马利化运算得到蒙哥马利化密文以及对该蒙哥马利化密文和所述被发送的密文明文对中的明文进行蒙哥马利化模幂运算得到被选择的模幂计算引擎的蒙哥马利化模幂运算结果。
51.s316:将所述多个模幂计算引擎各自生成的蒙哥马利化模幂运算结果整合得到所述多个密文明文对的蒙哥马利化模幂运算结果。
52.s318:通过第二层数据分发模块,选择第二层模乘计算模块所包括的并行的多个模乘计算引擎中的一个模乘计算引擎以接收所述多个密文明文对的蒙哥马利化模幂运算结果,其中,所述第二层模乘计算模块与所述第二层数据分发模块连接。
53.s320:通过被选择的模乘计算引擎,对所述多个密文明文对的蒙哥马利化模幂运算结果进行累加模乘运算得到所述多个密文明文对的累加模乘运算结果。
54.s322:通过去蒙哥马利化运算模块,对所述多个密文明文对的累加模乘运算结果进行去蒙哥马利化运算得到所述多个密文明文对的密文计算结果。
55.其中,图3所示的密文计算方法300所示的方法的各个步骤,其中细节可以参考图1所示的密文计算装置100的结构和功能。因此,密文计算方法300能够高效处理与运算相关的海量数据量而且在联邦学习和隐私计算相关应用场景中能够应对复杂多变的情况且高效处理密文计算需求。
56.本技术提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本技术具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(dsp),专用集成电路(asic),现场可编程门阵列(fpga)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本技术具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线
和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本技术具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。
57.本技术提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本技术具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本技术具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(ram),闪存,只读存储器(rom),可擦可编程只读存储器(eprom),电可擦可编程只读存储器(eeprom),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(cd),数字多功能光盘(dvd),大容量存储介质设备或任何其他形式的合适存储介质。
58.以上是本技术实施例的实施方式,应当指出,本技术具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本技术实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本技术另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本技术具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本技术实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1