一种数据处理方法和用于数据处理的芯片转让专利

申请号 : CN202110552731.7

文献号 : CN113032848B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄熹之李艺

申请人 : 华控清交信息科技(北京)有限公司

摘要 :

本发明实施例提供一种数据处理方法和用于数据处理的芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元,所述方法包括:接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算。本发明实施例可以提高批量模运算的效率,进而提高同态加密运算的性能。

权利要求 :

1.一种数据处理方法,其特征在于,应用于芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元,所述方法包括:

接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;

通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算。

2.根据权利要求1所述的方法,其特征在于,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模加单元的输出为(a+b)(mod p)。

3.根据权利要求1所述的方法,其特征在于,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,n_prime为应用层基于模数p预计算得到,p_‑1 k n+k ‑1 ‑(n+k)bitcount是模数的位长,n_prime= ‑p  (mod r),r = 2 ,k为固定基数,R=2 ,R  = 2  ‑1

(mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R )(mod p)。

4.根据权利要求1所述的方法,其特征在于,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利2

模幂运算的辅助参数,r_square = R (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元e

的输出为(a * R)(mod p)。

5.根据权利要求1所述的方法,其特征在于,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结果。

6.根据权利要求1所述的方法,其特征在于,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,i取值为1至count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运算,得到count对操作数的批量模乘运算的结果。

7.根据权利要求1所述的方法,其特征在于,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘数,b为常数,i取值为1至count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模乘运算,得到count对操作数的批量常数模乘运算的结果。

8.根据权利要求1所述的方法,其特征在于,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为指数,i取值为1至count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai, ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。

9.根据权利要求1所述的方法,其特征在于,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且a为常数,ei为指数,i取值为1至count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a, ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。

10.根据权利要求1所述的方法,其特征在于,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点积运算的结果。

11.根据权利要求1所述的方法,其特征在于,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的模指数点积运算的结果。

12.根据权利要求1所述的方法,其特征在于,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数count;

所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:

通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。

13.根据权利要求1所述的方法,其特征在于,所述蒙哥马利模幂单元通过复用蒙哥马利模乘单元实现。

14.根据权利要求1所述的方法,其特征在于,所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,包括:若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度所有运算核对所述输入参数进行顺序的批量模运算。

15.一种用于数据处理的芯片,其特征在于,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元;

所述芯片用于接收批量模运算的输入参数,并通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算,所述输入参数通过应用层预计算得到。

16.根据权利要求15所述的芯片,其特征在于,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模加单元的输出为(a+b)(mod p)。

17.根据权利要求15所述的芯片,其特征在于,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,n_prime为应用层基于模数p预计算得到,p_‑1 k n+k ‑1 ‑(n+k)bitcount是模数的位长,n_prime= ‑p  (mod r),r = 2 ,k为固定基数,R=2 ,R  = 2  ‑1

(mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R )(mod p)。

18.根据权利要求15所述的芯片,其特征在于,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥2

马利模幂运算的辅助参数,r_square = R (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂e

单元的输出为(a * R)(mod p)。

19.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结果。

20.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,i取值为1至count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运算,得到count对操作数的批量模乘运算的结果。

21.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘数,b为常数,i取值为1至count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模乘运算,得到count对操作数的批量常数模乘运算的结果。

22.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为指数,i取值为1至count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai, ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。

23.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且a为常数,ei为指数,i取值为1至count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a, ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。

24.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点积运算的结果。

25.根据权利要求15所述的芯片,其特征在于,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的模指数点积运算的结果。

26.根据权利要求15所述的芯片,其特征在于,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数count;

所述芯片具体用于通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。

27.根据权利要求15所述的芯片,其特征在于,所述蒙哥马利模幂单元通过复用蒙哥马利模乘单元实现。

28.根据权利要求15所述的芯片,其特征在于,所述芯片具体用于若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度所有运算核对所述输入参数进行顺序的批量模运算。

29.一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1至14任一所述的数据处理方法。

说明书 :

一种数据处理方法和用于数据处理的芯片

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种数据处理方法和用于数据处理的芯片。

背景技术

[0002] 同态加密是保持数据在密文状态下,能通过一些特殊操作从而实现明文之间的加法、乘法等基本运算。
[0003] 例如,Paillier半同态加密算法能够满足加法和数乘同态,在基于同态加密的隐私计算中,通常需要进行大整数模幂、模乘等基本运算。如Paillier半同态加密算法基于复
合剩余类的困难问题,也即大数分解的困难性假设,可以满足密文相乘对应明文相加。一个
示例中,Paillier加密方案的私钥是两个素数p和q,假设为1024位,则其公钥是n=pq为2048
2
位。可将一个数据x(0密为一个4096位的密文。假设拥有另一个明文数据y的密文Encrypt(y),那么想要得到x+y
2
的密文,只需要运算Encrypt(x+y) = (Encrypt(x) * Encrypt(y))(mod n)。注意到,对密
文进行同态加法即进行4096位乘4096位并模上4096位的模乘运算。同理,同态数乘即为反
复进行同态加法,那么明文上的数乘对应密文的指数运算,即Encrypt(y*x) = (Encrypt
y 2
(x)) (mod n),其中y为已知的明文。可以看出,在Paillier半同态加密体系中,加解密操
作均同时要用到模乘和模幂,同态加法操作即为模乘,同态数乘操作即为模幂。
[0004] 而模运算由于计算量较大通常需要耗费大量时间,为了提高隐私计算的效率,可以采用蒙哥马利算法对这些模幂、模乘等基本运算进行加速。然而,当运算数据量很大的时
候(比如100万次的4096位为底数和模数、4096位为指数的模幂),即便使用了蒙哥马利算法
进行加速,在实际应用场景中隐私计算系统的性能仍难以满足隐私计算的需求。

发明内容

[0005] 本发明实施例提供一种数据处理方法和用于数据处理的芯片,以提高批量模运算的效率,进而提高同态加密运算的性能。
[0006] 为了解决上述问题,本发明实施例公开了一种数据处理方法,所述方法应用于芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算
核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模
乘单元和蒙哥马利模幂单元,所述方法包括:
[0007] 接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;
[0008] 通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果。
[0009] 另一方面,本发明实施例公开了一种用于数据处理的芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本
模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单
元;
[0010] 所述芯片用于接收批量模运算的输入参数,并通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,所述输入参数
通过应用层预计算得到。
[0011] 又一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的数据处理方法。
[0012] 本发明实施例包括以下优点:
[0013] 本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,
每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以
独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬
件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层
仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、
硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足
隐私计算在实际场景中大数据量运算的需求。

附图说明

[0014] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
[0015] 图1是本发明的一种数据处理方法实施例的步骤流程图;
[0016] 图2是本发明的一种用于数据处理的芯片200实施例的结构框图。

具体实施方式

[0017] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本发明保护的范围。
[0018] 本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互
换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、
“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可
以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表
示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三
种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是
指两个或两个以上,其它量词与之类似。
[0019] 方法实施例
[0020] 参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,所述方法应用于芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运
算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利
模乘单元和蒙哥马利模幂单元,所述方法具体可以包括如下步骤:
[0021] 步骤101、接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;
[0022] 步骤102、通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运
算单元独立实现模运算。
[0023] 本发明实施例提供的数据处理方法可应用于同态加密的密文计算系统,比如需要执行一个密文计算任务,该密文计算任务中包括批量模运算,那么,可以先利用软件应用层
对批量模运算中需要用到的参数进行预计算,得到批量模运算的输入参数,并且将批量模
运算的输入参数写入硬件(芯片)的运算核,每个运算核根据模运算的类型,调用相应的基
本模运算单元,分别独立进行模运算,进而可以得到批量模运算的结果,可以极大提高批量
模运算的计算效率。此外,只要模数不变,预计算的参数只需要计算一次就可以反复使用,
可以进一步提高计算效率。
[0024] 本发明实施例对同态加密算法的具体类型不做限制,只要是利用到模乘和模幂的同态加密算法均可适用,尤其是Paillier半同态加密算法等利用大数模运算实现的算法。
当然,本发明实施例可以适用于全同态加密算法和半同态加密算法。其中,全同态加密算法
是指同时支持在密文上进行加法和乘法的同态加密算法。半同态加密算法是指仅支持在密
文上进行加法或仅进行乘法的同态加密算法。
[0025] 本发明针对同态加密运算设计了芯片接口,通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计
算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,通过组合调用这些基本
模运算单元,可以实现不同的批量模运算。本发明实施例通过软硬件结合的方式,将同态加
密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计
算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而
极大提高同态加密运算的性能。
[0026] 本发明实施例对所述芯片的类型不做限制,例如所述芯片可以包括FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片或ASIC(Application Specific 
Integrated Circuit,专用集成电路)芯片等。
[0027] 在实际应用中,每个芯片包含的运算核的数量,根据芯片类型和芯片大小不同而不同。如Xilinx U250 FPGA,可以容纳上百个运算核;又如,定制的ASIC芯片,可以容纳上千
个运算核。
[0028] 在本发明实施例中,所述芯片可以包括至少两个硬件的运算核,每个运算核可以独立进行计算。例如,每个运算核通过其内部封装的基本模运算单元,可以独立进行模加、
模乘、常数模乘、模幂、常数模幂等模运算。所述芯片接收到批量模运算的输入参数之后,通
过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批
量模运算的结果。通过软硬件结合的方式,极大提高了批量模运算的效率,进而可以提高密
文计算系统进行同态加密运算的性能。
[0029] 在本发明的一种可选实施例中,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模
加单元的输出为(a+b)(mod p)。
[0030] 以C语言为例,模加单元的实现函数可以表示如下:
[0031] void _mod_add_unit(char *a, char *b, char *p, int p_bitcount);
[0032] 其中,a和b是加数,a和b可以是同态加密的密文或者明文,p是同态加密的模数,p_bitcount是模数的位长,该函数的输出为(a+b)(mod p)。
[0033] 需要说明的是,本发明实施例对基本模运算单元的实现函数的编程语言不做限制,本发明实施例中均以C语言为例。
[0034] 在实际应用中,为便于进行模加计算,a和b默认要满足小于p。此外,由于硬件空间有限,为了尽可能节省空间,本发明实施例通过复用加数的存储空间来存储模加单元的输
出。例如,可以复用加数a的存储空间来存储模加单元的输出。在具体实现中可以不需要为
模加单元的输出开辟额外空间,以提高芯片的空间资源利用率。
[0035] 在本发明的一种可选实施例中,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是
蒙哥马利模乘运算的辅助参数,n_prime为应用层基于模数p预计算得到,p_bitcount是模
‑1 k n+k ‑1 ‑(n+k)
数的位长, n_prime= ‑p  (mod r),r = 2 ,k为固定基数,R=2 ,R  = 2  (mod p),n=
‑1
p_bitcount,蒙哥马利模乘单元的输出为(a*b*R )(mod p)。
[0036] 以C语言为例,蒙哥马利模乘单元的实现函数可以表示如下:
[0037] void _mon_mod_mul_unit(char *a, char *b, char *p, int p_bitcount, char *n_prime);
[0038] 其中,a和b是两个乘数,a和b可以是同态加密的密文或者明文,p是同态加密的模数,n_prime是蒙哥马利模乘运算的辅助参数,基于模数p在软件应用层中预先计算出来。p_
‑1
bitcount是模数的位长。该函数的输出为(a*b*R )(mod p)。
[0039] 在具体实现中,蒙哥马利模乘需要实现大数乘法,而在硬件中大数乘法需要分块进行,因此需要设置一个固定的基数k,k为数据分块的位长,可以为64或128比特。那么令r 
k ‑1
= 2 ,则可在软件应用层中预计算参数n_prime = ‑p  (mod r),即为一个k比特的数据。同
n+k ‑1 ‑(n+k) ‑1
时R=2 ,R  = 2  (mod p),n=p_bitcount。R 为R  (mod p)的模逆。R为一个基于
bitcount的固定数据,bitcount包括p_bitcount和具体蒙哥马利模乘实现中硬件运算分块
(p_bitcount+64)
大小,比如一个大数在硬件中以每64比特为1个块进行分块,那么此处的R=2 。
[0040] 在本发明实施例中,蒙哥马利模乘单元输出的结果并不是真正的模乘结果(a*b)‑1
(mod p),而是(a*b*R )(mod p),因此,可以通过多次调用蒙哥马利模乘单元得到真正的模
乘结果。
[0041] 对于蒙哥马利模乘单元,本发明实施例通过复用乘数的存储空间来存储蒙哥马利模乘单元的输出,以节省存储空间。例如,可以通过复用乘数a的存储空间来存储蒙哥马利
模乘单元的输出。需要说明的是,对于蒙哥马利模乘单元,需要在硬件中开辟一块大于a的
‑1
空间来存储中间变量(如用于存储(a*b*R )(mod p)的中间变量)。因为蒙哥马利模乘的具
体算法中,涉及到的中间变量的位数会略大于p_bitcount,所以硬件运算中的中间变量存
储区的大小要略大于乘数a的位数。
[0042] 在本发明的一种可选实施例中,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底
数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂
2
运算的辅助参数,r_square = R (mod p),n_prime和r_square分别为应用层基于模数p预
计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出
e
为(a * R)(mod p)。R为一个基于bitcount的固定数据。
[0043] 以C语言为例,蒙哥马利模幂单元的实现函数可以表示如下:
[0044] void _mon_mod_exp_unit(char *a, char *e, int e_bitcount, char *p, int p_bitcount, char *n_prime, char *r_square, char *output);
[0045] 其中,a是底数,e是指数,a和e可以是同态加密的密文或者明文,p是同态加密的模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,
2
r_square = R (mod p),e_bitcount是指数的位长,p_bitcount是模数的位长。该函数的
e
输出为(a * R)(mod p)。
[0046] 在具体实施中,蒙哥马利模幂算法是蒙哥马利模乘的多次循环。可选地,所述蒙哥马利模幂单元可以通过复用蒙哥马利模乘单元实现。
[0047] 由于蒙哥马利模幂单元是通过复用蒙哥马利模乘单元实现的,因此,不能直接复用乘数的存储空间,可以单独开辟存储空间来存储蒙哥马利模幂单元的输出结果,或者可
以利用中间变量的存储空间来存储蒙哥马利模幂单元的输出结果,以节省芯片存储空间,
以及节省内存拷贝时间。
[0048] 本发明实施例将上述三种基本模运算单元封装在芯片运算核中,由于单元操作易实现和便于组合,因此,可以将一些通用的批量模运算分解为对基本模运算单元的操作,进
而通过对基本模运算单元的组合调用,可以实现通用的批量模运算。
[0049] 本发明实施例通过设计批量模运算的接口,实现对基本模运算单元的组合调用,该接口能够覆盖多种批量或组合的同态运算,通过软硬件结合的方式,尽可能地减少软件
应用层的运算开销,由软件应用层对输入参数进行预计算,如可以预计算一些辅助参数,如
辅助参数n_prime。由于基数k固定,在模数p不变的情况下,n_prime也不变,那么批量模乘
运算下仅需要在软件应用层预计算一次n_prime,可以减少预计算的计算量。同样的,蒙哥
马利模幂单元输入的辅助参数r_square在模数p不变的情况下,也仅需要预计算一次。这些
辅助参数在同一套加密体系中可以反复使用,利用蒙哥马利算法在同一套参数中大批量运
算的高效性,使得此软硬件结合的密文计算系统能够充分发挥软件灵活、硬件高效的特点,
提高隐私计算的效率。
[0050] 本发明设计的批量模运算接口主要基于上述三个基本单元运算:模加单元、蒙哥马利模乘单元和蒙哥马利模幂单元,其中模加单元和蒙哥马利模乘单元是硬件实现批量同
态运算的最基本单元,蒙哥马利模幂单元则复用了蒙哥马利模乘单元来实现。
[0051] 以下给出本发明实施例中批量模运算接口的具体实现,这些接口的实现主要由上述三个基本模运算单元来实现。本发明定义的批量模运算接口包括但不限于:批量模加运
算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常数模幂运算、模乘法点积运
算、模指数点积运算、批量生成模随机数运算的接口。上述接口通过对基本模运算单元的组
合调用,可以实现批量模加运算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常
数模幂运算、模乘法点积运算、模指数点积运算、批量生成模随机数运算等批量模运算。
[0052] 在本发明实施例中,芯片中的每个运算核可以独立实现模加、模乘、常数模乘、模幂、常数模幂、模乘法点积、模指数点积、生成模随机数的运算。通过调度多个运算核可以实
现批量模运算,提高批量模运算的效率。
[0053] 在本发明的一种可选实施例中,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;
[0054] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0055] 通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结果。
[0056] 以C语言为例,批量模加运算接口的设计如下:
[0057] void mod_add(int count, char *p, int p_bitcount, char *data, char *output);
[0058] 其中,批量模加运算接口的输入参数包括count、data、p、p_bitcount;count为批量模加操作的数目,data里存储了count对操作数(ai, bi),i = 1,2,…,count;ai和bi为一
对操作数,ai和bi是两个加数。每对操作数可以由一个序号si来标识,每个操作数有p_
bitcount比特,p为固定的模数,长度为p_bitcount比特。p_bitcount一般为1024或2048等2
的幂次。批量模加运算的输出结果(ai+bi)(mod p)共count个值与对应序号si存储在output
当中。例如,输出结果(a1+b1)(mod p)与对应序号s1存储在output中,输出结果(a2+b2)(mod 
p)与对应序号s2存储在output中,以此类推。批量模加运算的实现只需要将count对操作数
分别写入芯片count个运算核中,直接调用count个运算核的模加单元即可。也即,在批量操
作的数目为count时,批量模加运算可以通过并行调用count个运算核的模加单元来实现。
[0059] 在本发明的一种可选实施例中,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,
i取值为1至count;
[0060] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0061] 通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运算,得到count对操
作数的批量模乘运算的结果。
[0062] 以C语言为例,批量模乘运算接口的设计如下:
[0063] void mod_mul(int count, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0064] 其中,批量模乘运算接口的输入参数包括count、data、p、p_bitcount、n_prime、r_square;count为批量操作的数目,data里存储了count对操作数(ai, bi),i = 1,2,…,
count。ai和bi为一对操作数,ai和bi是两个乘数。每对操作数可以由一个序号si来标识,每个
操作数有p_bitcount比特,p为固定的模数,长度为p_bitcount比特。n_prime和r_square均
为软件应用层预计算得到的辅助参数,其中n_prime有k比特,r_square有p_bitcount比特。
批量模乘运算的输出结果(ai*bi)(mod p)共count个值与对应序号si存储在output当中。例
如,输出结果(a1*b1)(mod p)与对应序号s1存储在output中,输出结果(a2*b2)(mod p)与对
应序号s2存储在output中,以此类推。
[0065] 对于蒙哥马利模乘单元,其输入参数中的辅助参数n_prime为软件应用层预计算得到,由于基数k固定,在模数p不变的情况下,n_prime也不变,那么批量模乘运算下仅需要
在软件中预计算一次n_prime,蒙哥马利模幂的输入参数r_square也类似。
[0066] 在本发明的一种可选实施例中,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘
数,b为常数,i取值为1至count;
[0067] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0068] 通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模乘运算,得到count
对操作数的批量常数模乘运算的结果。
[0069] 以C语言为例,批量常数模乘运算接口的设计如下:
[0070] void mod_mul_const(int count, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0071] 其中,批量常数模乘运算接口的输入参数包括count、data、p、p_bitcount、n_prime、r_square;count为批量操作的数目,data里存储了count对操作数(ai, b),i = 1,
2,…,count。ai和b为一对操作数,ai和b是两个乘数,b是一个p_bitcount比特的常数。每对
操作数可以由一个序号si来标识,每个值有p_bitcount比特,p为固定的模数,长度为p_
bitcount比特。n_prime和r_square均为软件应用层预计算得到的辅助参数,其中n_prime
有k比特,r_square有p_bitcount比特。批量常数模乘运算的输出结果(ai*b)(mod p)共
count个值与对应序号si存储在output当中。例如,输出结果(a1*b)(mod p)与对应序号s1存
储在output中,输出结果(a2*b)(mod p)与对应序号s2存储在output中,以此类推。相对于批
量模乘运算,批量常数模乘运算中每个常数模乘运算所调用的蒙哥马利模乘单元次数会适
当减少。
[0072] 在本发明的一种可选实施例中,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为
指数,i取值为1至count;
[0073] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0074] 通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai, ei)进行并行的模
幂运算,得到count对操作数的批量模幂运算的结果。
[0075] 以C语言为例,批量模幂运算接口的设计如下:
[0076] void mod_exp(int count, int e_bitcount, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0077] 其中,批量模幂运算接口的输入参数包括count、data、e_bitcount、p、p_bitcount、n_prime、r_square;count为批量操作的数目,data里存储了count对底数和指数
(ai, ei),i = 1,2,…,count。每对底数和指数可以由一个序号si来标识,底数ai的每个值
有p_bitcount比特,指数ei的每个值有e_bitcount,p为固定的模数,长度为p_bitcount比
特。n_prime和r_square与模乘类似,均为软件应用层预计算得到的辅助参数,其中n_prime
有k比特,r_square有p_bitcount比特。批量模幂运算的输出结果(ai^ei)(mod p)共count个
值与对应序号si存放在output当中。例如,输出结果(a1^e1)(mod p)与对应序号s1存储在
output中,输出结果(a2^e2)(mod p)与对应序号s2存储在output中,以此类推。
[0078] 在本发明的一种可选实施例中,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且
a为常数,ei为指数,i取值为1至count;
[0079] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0080] 通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a, ei)进行并行的常
数模幂运算,得到count对操作数的批量常数模幂运算的结果。
[0081] 以C语言为例,批量常数模幂运算接口的设计如下:
[0082] void mod_const_exp(int count, int e_bitcount, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0083] 其中,批量常数模幂运算接口的输入参数包括count、data、e_bitcount、p、p_bitcount、n_prime、r_square;count为批量操作的数目,data里存储了count对底数和指数
(a, ei),i = 1,2,…,count。每对底数和指数可以由一个序号si来标识,底数a为p_
bitcount比特,a为1个p_bitcount比特的常数作为模幂的底数。指数ei的每个值有e_
bitcount,p为固定的模数,长度为p_bitcount比特。n_prime和r_square与模乘类似,均为
软件应用层预计算得到的辅助参数,n_prime有k比特,r_square有p_bitcount比特。相对于
批量模幂运算,批量常数模幂运算中每个常数模幂运算所调用的蒙哥马利模乘单元和蒙哥
马利模幂单元的次数会适当减少。
[0084] 在本发明的一种可选实施例中,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第
一操作数序列和第二操作数序列分别包括count个操作数;
[0085] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0086] 通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模乘法点
积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点积运算的结果。
[0087] 以C语言为例,模乘法点积运算接口的设计如下:
[0088] void mod_dot(int count, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0089] 其中,模乘法点积运算接口的输入参数包括a1,a2,…,acount和b1,b2,…,bcount,模乘法点积运算接口的输出为(a1*b1+a2*b2+…+acount*bcount)(mod p)。在具体实施中,输入的
data中首先存储一个序号标识s,紧接着顺序存储a1,b1,a2,b2,…,acount,bcount,每个值均为
p_bitcount比特;由于模乘法点积只会输出1个结果,所以不用对每组a、b设置1个s,只需要
对所有的a和b设置1个独特的s即可。比如s是1个64比特的随机数,而后紧跟着模乘乘数a1,
b1,a2,b2,…,acount,bcount。s仅用来标识这组运算数及其运算结果。p为固定的模数,长度为
p_bitcount比特。n_prime和r_square与模乘类似,均为软件应用层预计算得到的辅助参
数,其中n_prime有k比特,r_square有p_bitcount比特。输出首先在output中存储序号标识
s,再存储点积结果即1个p_bitcount比特的值。输出仍然是那个64比特的随机数s,而后紧
跟着p_bitcount比特的1个运算结果。
[0090] 本发明实施例提供的批量模运算的接口在同态加密的密文计算系统中具有通用性。以Paillier半同态加密为例,对于数据x1,x2,…,xn的密文及明文y1,y2,…,yn,进行模指
数点积[(Encrypt(x1)^y1) * (Encrypt(x2)^y2) * … * (Encrypt(xn)^yn)](mod p)即可
得到x1*y1+x2*y2+…+xn*yn的密文,即为明文x和y进行内积的密文。
[0091] 在本发明的一种可选实施例中,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第
一操作数序列和第二操作数序列分别包括count个操作数;
[0092] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0093] 通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行
模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的模指数点积运算的
结果。
[0094] 以C语言为例,模指数点积运算接口的设计如下:
[0095] void mod_exp_dot(int count, int e_bitcount, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
[0096] 其中,模指数点积运算接口的输入参数包括a1,a2,…,acount和e1,e2,…,ecount,模指数点积运算接口的输出为[(a1^e1)*(a2^e2)*…*(acount^ecount)](mod p)。在具体实施中,输
入的data中首先存储一个序号标识s,紧接着顺序存储a1,e1,a2,e2,…,acount,ecount,每个值
均为p_bitcount比特,p为固定的模数,长度为p_bitcount比特。n_prime和r_square与模乘
类似,均为软件应用层预计算得到的辅助参数,其中n_prime有k比特,r_square有p_
bitcount比特。输出首先在output中存储序号标识s,再存储指数点积结果即1个p_
bitcount比特的值。
[0097] 在本发明的一种可选实施例中,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数n;
[0098] 所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
[0099] 通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p 进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。
[0100] 在本发明实施例中,还可以设置用于生成随机数的随机数生成单元,如,每个运算核中除了包括模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元这三个基本模运算单元,
还可以包括随机数生成单元。每个运算核可以独立生成模随机数(如模数p意义下的随机
数)。
[0101] 本发明实施例提供的批量模运算的接口在同态加密的密文计算系统中具有通用性。以Paillier半同态加密为例,对数据的加密要生成随机数来掩盖明文信息,而在软件中
生成随机数再传入硬件进行运算会增加时间开销,本发明实施例通过硬件(芯片)提供随机
数可以提高计算效率,并且减少时间开销。
[0102] 在本发明的一种可选实施例中,所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,包括:
[0103] 若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算。
[0104] 批量模运算的并行数指需要并行进行模运算的个数,也即上述各批量模运算中的count。一个示例中,对于批量模加运算,批量模运算的并行数count为100,而芯片当前可用
的运算核的个数为80,则可以通过预设的调度算法,批量调度这80个运算核的模加单元对
100个数据的输入参数进行并行的模加运算。具体的调度算法本发明实施例不做限制,如
FCFS(First Come First Serve,先来先服务)的调度算法等。
[0105] 需要说明的是,本发明实施例在描述不同批量模运算的实现接口时,对于有些输入参数采用了相同的描述符号,例如,模数p、批量操作的数目count、操作数(ai, bi)等。可
以理解的是,在具体实施中,不同批量模运算的输入参数的具体数值可以并不相同。
[0106] 综上,本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运
算核,每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,
可以独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过
软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应
用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件
灵活、硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以
满足隐私计算在实际场景中大数据量运算的需求。
[0107] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依
据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施
例所必须的。
[0108] 装置实施例
[0109] 参照图2,示出了本发明的一种用于数据处理的芯片200实施例的结构框图,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核201,每
个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元2011和蒙哥马利模
乘单元2012和蒙哥马利模幂单元2013;
[0110] 所述芯片用于接收批量模运算的输入参数,并通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算
核通过组合调用其内部的基本模运算单元独立实现模运算,所述输入参数通过应用层预计
算得到。
[0111] 可选地,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模加单元的输出为(a+b)
(mod p)。
[0112] 可选地,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是蒙哥马利模乘运算的辅
助参数,n_prime为应用层基于模数p预计算得到,p_bitcount是模数的位长, n_prime= ‑
‑1 k n+k ‑1 ‑(n+k)
p  (mod r),r = 2 ,k为固定基数,R=2 ,R  = 2  (mod p),n=p_bitcount,蒙哥马利
‑1
模乘单元的输出为(a*b*R )(mod p)。
[0113] 可选地,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_
prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_
2
square = R (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_
e
bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(a * R)
(mod p)。
[0114] 可选地,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;
[0115] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结
果。
[0116] 可选地,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,i取值为1至count;
[0117] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运
算,得到count对操作数的批量模乘运算的结果。
[0118] 可选地,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘数,b为常数,i取值为1至
count;
[0119] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模
乘运算,得到count对操作数的批量常数模乘运算的结果。
[0120] 可选地,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为指数,i取值为1至count;
[0121] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai, 
ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。
[0122] 可选地,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且a为常数,ei为指数,i取值
为1至count;
[0123] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a, 
ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。
[0124] 可选地,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操
作数序列分别包括count个操作数;
[0125] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数
序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点
积运算的结果。
[0126] 可选地,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操
作数序列分别包括count个操作数;
[0127] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第
二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的
模指数点积运算的结果。
[0128] 可选地,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数count;
[0129] 所述芯片具体用于通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。
[0130] 可选地,所述蒙哥马利模幂单元通过复用蒙哥马利模乘单元实现。
[0131] 可选地,所述芯片具体用于若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度所有运算核对所述输入参数进行顺序的批量
模运算。
[0132] 本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,
每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以
独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬
件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层
仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、
硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足
隐私计算在实际场景中大数据量运算的需求。
[0133] 对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0134] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0135] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0136] 一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的数据处理方法。
[0137] 一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种数据处理方法,所述方法包括:接收批量
模运算的输入参数,所述输入参数通过应用层预计算得到;通过批量调度至少两个运算核
的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个
运算核通过组合调用其内部的基本模运算单元独立实现模运算。
[0138] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或
者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识
或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的
权利要求指出。
[0139] 应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
[0140] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0141] 以上对本发明所提供的一种数据处理方法和用于数据处理的芯片,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只
是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发
明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理
解为对本发明的限制。