一种数据处理方法和用于数据处理的芯片转让专利
申请号 : CN202110552731.7
文献号 : CN113032848B
文献日 : 2021-08-10
发明人 : 黄熹之 , 李艺
申请人 : 华控清交信息科技(北京)有限公司
摘要 :
权利要求 :
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任一所述的数据处理方法。
说明书 :
一种数据处理方法和用于数据处理的芯片
技术领域
背景技术
合剩余类的困难问题,也即大数分解的困难性假设,可以满足密文相乘对应明文相加。一个
示例中,Paillier加密方案的私钥是两个素数p和q,假设为1024位,则其公钥是n=pq为2048
2
位。可将一个数据x(0
2
的密文,只需要运算Encrypt(x+y) = (Encrypt(x) * Encrypt(y))(mod n)。注意到,对密
文进行同态加法即进行4096位乘4096位并模上4096位的模乘运算。同理,同态数乘即为反
复进行同态加法,那么明文上的数乘对应密文的指数运算,即Encrypt(y*x) = (Encrypt
y 2
(x)) (mod n),其中y为已知的明文。可以看出,在Paillier半同态加密体系中,加解密操
作均同时要用到模乘和模幂,同态加法操作即为模乘,同态数乘操作即为模幂。
候(比如100万次的4096位为底数和模数、4096位为指数的模幂),即便使用了蒙哥马利算法
进行加速,在实际应用场景中隐私计算系统的性能仍难以满足隐私计算的需求。
发明内容
核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模
乘单元和蒙哥马利模幂单元,所述方法包括:
模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单
元;
通过应用层预计算得到。
每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以
独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬
件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层
仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、
硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足
隐私计算在实际场景中大数据量运算的需求。
附图说明
例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
具体实施方式
明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本发明保护的范围。
换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、
“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可
以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表
示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三
种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是
指两个或两个以上,其它量词与之类似。
算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利
模乘单元和蒙哥马利模幂单元,所述方法具体可以包括如下步骤:
算单元独立实现模运算。
对批量模运算中需要用到的参数进行预计算,得到批量模运算的输入参数,并且将批量模
运算的输入参数写入硬件(芯片)的运算核,每个运算核根据模运算的类型,调用相应的基
本模运算单元,分别独立进行模运算,进而可以得到批量模运算的结果,可以极大提高批量
模运算的计算效率。此外,只要模数不变,预计算的参数只需要计算一次就可以反复使用,
可以进一步提高计算效率。
当然,本发明实施例可以适用于全同态加密算法和半同态加密算法。其中,全同态加密算法
是指同时支持在密文上进行加法和乘法的同态加密算法。半同态加密算法是指仅支持在密
文上进行加法或仅进行乘法的同态加密算法。
算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,通过组合调用这些基本
模运算单元,可以实现不同的批量模运算。本发明实施例通过软硬件结合的方式,将同态加
密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计
算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而
极大提高同态加密运算的性能。
Integrated Circuit,专用集成电路)芯片等。
个运算核。
模乘、常数模乘、模幂、常数模幂等模运算。所述芯片接收到批量模运算的输入参数之后,通
过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批
量模运算的结果。通过软硬件结合的方式,极大提高了批量模运算的效率,进而可以提高密
文计算系统进行同态加密运算的性能。
加单元的输出为(a+b)(mod p)。
出。例如,可以复用加数a的存储空间来存储模加单元的输出。在具体实现中可以不需要为
模加单元的输出开辟额外空间,以提高芯片的空间资源利用率。
蒙哥马利模乘运算的辅助参数,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)。
‑1
bitcount是模数的位长。该函数的输出为(a*b*R )(mod p)。
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 。
(mod p),而是(a*b*R )(mod p),因此,可以通过多次调用蒙哥马利模乘单元得到真正的模
乘结果。
模乘单元的输出。需要说明的是,对于蒙哥马利模乘单元,需要在硬件中开辟一块大于a的
‑1
空间来存储中间变量(如用于存储(a*b*R )(mod p)的中间变量)。因为蒙哥马利模乘的具
体算法中,涉及到的中间变量的位数会略大于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的固定数据。
2
r_square = R (mod p),e_bitcount是指数的位长,p_bitcount是模数的位长。该函数的
e
输出为(a * R)(mod p)。
以利用中间变量的存储空间来存储蒙哥马利模幂单元的输出结果,以节省芯片存储空间,
以及节省内存拷贝时间。
而通过对基本模运算单元的组合调用,可以实现通用的批量模运算。
应用层的运算开销,由软件应用层对输入参数进行预计算,如可以预计算一些辅助参数,如
辅助参数n_prime。由于基数k固定,在模数p不变的情况下,n_prime也不变,那么批量模乘
运算下仅需要在软件应用层预计算一次n_prime,可以减少预计算的计算量。同样的,蒙哥
马利模幂单元输入的辅助参数r_square在模数p不变的情况下,也仅需要预计算一次。这些
辅助参数在同一套加密体系中可以反复使用,利用蒙哥马利算法在同一套参数中大批量运
算的高效性,使得此软硬件结合的密文计算系统能够充分发挥软件灵活、硬件高效的特点,
提高隐私计算的效率。
态运算的最基本单元,蒙哥马利模幂单元则复用了蒙哥马利模乘单元来实现。
算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常数模幂运算、模乘法点积运
算、模指数点积运算、批量生成模随机数运算的接口。上述接口通过对基本模运算单元的组
合调用,可以实现批量模加运算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常
数模幂运算、模乘法点积运算、模指数点积运算、批量生成模随机数运算等批量模运算。
现批量模运算,提高批量模运算的效率。
对操作数,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个运算核的模加单元来实现。
i取值为1至count;
作数的批量模乘运算的结果。
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中,以此类推。
在软件中预计算一次n_prime,蒙哥马利模幂的输入参数r_square也类似。
数,b为常数,i取值为1至count;
对操作数的批量常数模乘运算的结果。
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中,以此类推。相对于批
量模乘运算,批量常数模乘运算中每个常数模乘运算所调用的蒙哥马利模乘单元次数会适
当减少。
指数,i取值为1至count;
幂运算,得到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中,以此类推。
a为常数,ei为指数,i取值为1至count;
数模幂运算,得到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比特。相对于
批量模幂运算,批量常数模幂运算中每个常数模幂运算所调用的蒙哥马利模乘单元和蒙哥
马利模幂单元的次数会适当减少。
一操作数序列和第二操作数序列分别包括count个操作数;
积运算,得到第一操作数序列和第二操作数序列基于模数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个运算结果。
数点积[(Encrypt(x1)^y1) * (Encrypt(x2)^y2) * … * (Encrypt(xn)^yn)](mod p)即可
得到x1*y1+x2*y2+…+xn*yn的密文,即为明文x和y进行内积的密文。
一操作数序列和第二操作数序列分别包括count个操作数;
模指数点积运算,得到第一操作数序列和第二操作数序列基于模数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比特的值。
还可以包括随机数生成单元。每个运算核可以独立生成模随机数(如模数p意义下的随机
数)。
生成随机数再传入硬件进行运算会增加时间开销,本发明实施例通过硬件(芯片)提供随机
数可以提高计算效率,并且减少时间开销。
的运算核的个数为80,则可以通过预设的调度算法,批量调度这80个运算核的模加单元对
100个数据的输入参数进行并行的模加运算。具体的调度算法本发明实施例不做限制,如
FCFS(First Come First Serve,先来先服务)的调度算法等。
以理解的是,在具体实施中,不同批量模运算的输入参数的具体数值可以并不相同。
算核,每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,
可以独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过
软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应
用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件
灵活、硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以
满足隐私计算在实际场景中大数据量运算的需求。
据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该
知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施
例所必须的。
个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元2011和蒙哥马利模
乘单元2012和蒙哥马利模幂单元2013;
核通过组合调用其内部的基本模运算单元独立实现模运算,所述输入参数通过应用层预计
算得到。
(mod p)。
助参数,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)。
prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_
2
square = R (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_
e
bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(a * R)
(mod p)。
果。
算,得到count对操作数的批量模乘运算的结果。
count;
乘运算,得到count对操作数的批量常数模乘运算的结果。
ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。
为1至count;
ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。
作数序列分别包括count个操作数;
序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点
积运算的结果。
作数序列分别包括count个操作数;
二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的
模指数点积运算的结果。
模运算。
每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以
独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬
件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层
仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、
硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足
隐私计算在实际场景中大数据量运算的需求。
模运算的输入参数,所述输入参数通过应用层预计算得到;通过批量调度至少两个运算核
的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个
运算核通过组合调用其内部的基本模运算单元独立实现模运算。
者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识
或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的
权利要求指出。
是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发
明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理
解为对本发明的限制。