CN113032848B - 一种数据处理方法和用于数据处理的芯片 - Google Patents
一种数据处理方法和用于数据处理的芯片 Download PDFInfo
- Publication number
- CN113032848B CN113032848B CN202110552731.7A CN202110552731A CN113032848B CN 113032848 B CN113032848 B CN 113032848B CN 202110552731 A CN202110552731 A CN 202110552731A CN 113032848 B CN113032848 B CN 113032848B
- Authority
- CN
- China
- Prior art keywords
- modular
- batch
- count
- modulus
- prime
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
Abstract
本发明实施例提供一种数据处理方法和用于数据处理的芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元,所述方法包括:接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算。本发明实施例可以提高批量模运算的效率,进而提高同态加密运算的性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法和用于数据处理的芯片。
背景技术
同态加密是保持数据在密文状态下,能通过一些特殊操作从而实现明文之间的加法、乘法等基本运算。
例如,Paillier半同态加密算法能够满足加法和数乘同态,在基于同态加密的隐私计算中,通常需要进行大整数模幂、模乘等基本运算。如Paillier半同态加密算法基于复合剩余类的困难问题,也即大数分解的困难性假设,可以满足密文相乘对应明文相加。一个示例中,Paillier加密方案的私钥是两个素数p和q,假设为1024位,则其公钥是n=pq为2048位。可将一个数据x(0<x<n)作为明文,密文是在mod n2意义下,也就是Encrypt(x),即对x加密为一个4096位的密文。假设拥有另一个明文数据y的密文Encrypt(y),那么想要得到x+y的密文,只需要运算Encrypt(x+y) = (Encrypt(x) * Encrypt(y))(mod n2)。注意到,对密文进行同态加法即进行4096位乘4096位并模上4096位的模乘运算。同理,同态数乘即为反复进行同态加法,那么明文上的数乘对应密文的指数运算,即Encrypt(y*x) = (Encrypt(x))y (mod n2),其中y为已知的明文。可以看出,在Paillier半同态加密体系中,加解密操作均同时要用到模乘和模幂,同态加法操作即为模乘,同态数乘操作即为模幂。
而模运算由于计算量较大通常需要耗费大量时间,为了提高隐私计算的效率,可以采用蒙哥马利算法对这些模幂、模乘等基本运算进行加速。然而,当运算数据量很大的时候(比如100万次的4096位为底数和模数、4096位为指数的模幂),即便使用了蒙哥马利算法进行加速,在实际应用场景中隐私计算系统的性能仍难以满足隐私计算的需求。
发明内容
本发明实施例提供一种数据处理方法和用于数据处理的芯片,以提高批量模运算的效率,进而提高同态加密运算的性能。
为了解决上述问题,本发明实施例公开了一种数据处理方法,所述方法应用于芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元,所述方法包括:
接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;
通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果。
另一方面,本发明实施例公开了一种用于数据处理的芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元;
所述芯片用于接收批量模运算的输入参数,并通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,所述输入参数通过应用层预计算得到。
又一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的数据处理方法。
本发明实施例包括以下优点:
本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足隐私计算在实际场景中大数据量运算的需求。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种数据处理方法实施例的步骤流程图;
图2是本发明的一种用于数据处理的芯片200实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
方法实施例
参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,所述方法应用于芯片,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元,所述方法具体可以包括如下步骤:
步骤101、接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;
步骤102、通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算。
本发明实施例提供的数据处理方法可应用于同态加密的密文计算系统,比如需要执行一个密文计算任务,该密文计算任务中包括批量模运算,那么,可以先利用软件应用层对批量模运算中需要用到的参数进行预计算,得到批量模运算的输入参数,并且将批量模运算的输入参数写入硬件(芯片)的运算核,每个运算核根据模运算的类型,调用相应的基本模运算单元,分别独立进行模运算,进而可以得到批量模运算的结果,可以极大提高批量模运算的计算效率。此外,只要模数不变,预计算的参数只需要计算一次就可以反复使用,可以进一步提高计算效率。
本发明实施例对同态加密算法的具体类型不做限制,只要是利用到模乘和模幂的同态加密算法均可适用,尤其是Paillier半同态加密算法等利用大数模运算实现的算法。当然,本发明实施例可以适用于全同态加密算法和半同态加密算法。其中,全同态加密算法是指同时支持在密文上进行加法和乘法的同态加密算法。半同态加密算法是指仅支持在密文上进行加法或仅进行乘法的同态加密算法。
本发明针对同态加密运算设计了芯片接口,通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,通过组合调用这些基本模运算单元,可以实现不同的批量模运算。本发明实施例通过软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而极大提高同态加密运算的性能。
本发明实施例对所述芯片的类型不做限制,例如所述芯片可以包括FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列)芯片或ASIC(Application SpecificIntegrated Circuit,专用集成电路)芯片等。
在实际应用中,每个芯片包含的运算核的数量,根据芯片类型和芯片大小不同而不同。如Xilinx U250 FPGA,可以容纳上百个运算核;又如,定制的ASIC芯片,可以容纳上千个运算核。
在本发明实施例中,所述芯片可以包括至少两个硬件的运算核,每个运算核可以独立进行计算。例如,每个运算核通过其内部封装的基本模运算单元,可以独立进行模加、模乘、常数模乘、模幂、常数模幂等模运算。所述芯片接收到批量模运算的输入参数之后,通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果。通过软硬件结合的方式,极大提高了批量模运算的效率,进而可以提高密文计算系统进行同态加密运算的性能。
在本发明的一种可选实施例中,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模加单元的输出为(a+b)(mod p)。
以C语言为例,模加单元的实现函数可以表示如下:
void _mod_add_unit(char *a, char *b, char *p, int p_bitcount);
其中,a和b是加数,a和b可以是同态加密的密文或者明文,p是同态加密的模数,p_bitcount是模数的位长,该函数的输出为(a+b)(mod p)。
需要说明的是,本发明实施例对基本模运算单元的实现函数的编程语言不做限制,本发明实施例中均以C语言为例。
在实际应用中,为便于进行模加计算,a和b默认要满足小于p。此外,由于硬件空间有限,为了尽可能节省空间,本发明实施例通过复用加数的存储空间来存储模加单元的输出。例如,可以复用加数a的存储空间来存储模加单元的输出。在具体实现中可以不需要为模加单元的输出开辟额外空间,以提高芯片的空间资源利用率。
在本发明的一种可选实施例中,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,n_prime为应用层基于模数p预计算得到,p_bitcount是模数的位长, n_prime= -p-1 (mod r),r = 2k,k为固定基数,R=2n+k,R-1 = 2-(n+k) (mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R-1)(mod p)。
以C语言为例,蒙哥马利模乘单元的实现函数可以表示如下:
void _mon_mod_mul_unit(char *a, char *b, char *p, int p_bitcount,char *n_prime);
其中,a和b是两个乘数,a和b可以是同态加密的密文或者明文,p是同态加密的模数,n_prime是蒙哥马利模乘运算的辅助参数,基于模数p在软件应用层中预先计算出来。p_bitcount是模数的位长。该函数的输出为(a*b*R-1)(mod p)。
在具体实现中,蒙哥马利模乘需要实现大数乘法,而在硬件中大数乘法需要分块进行,因此需要设置一个固定的基数k,k为数据分块的位长,可以为64或128比特。那么令r= 2k,则可在软件应用层中预计算参数n_prime = -p-1 (mod r),即为一个k比特的数据。同时R=2n+k,R-1 = 2-(n+k) (mod p),n=p_bitcount。R-1为R (mod p)的模逆。R为一个基于bitcount的固定数据,bitcount包括p_bitcount和具体蒙哥马利模乘实现中硬件运算分块大小,比如一个大数在硬件中以每64比特为1个块进行分块,那么此处的R=2(p_bitcount+64)。
在本发明实施例中,蒙哥马利模乘单元输出的结果并不是真正的模乘结果(a*b)(mod p),而是(a*b*R-1)(mod p),因此,可以通过多次调用蒙哥马利模乘单元得到真正的模乘结果。
对于蒙哥马利模乘单元,本发明实施例通过复用乘数的存储空间来存储蒙哥马利模乘单元的输出,以节省存储空间。例如,可以通过复用乘数a的存储空间来存储蒙哥马利模乘单元的输出。需要说明的是,对于蒙哥马利模乘单元,需要在硬件中开辟一块大于a的空间来存储中间变量(如用于存储(a*b*R-1)(mod p)的中间变量)。因为蒙哥马利模乘的具体算法中,涉及到的中间变量的位数会略大于p_bitcount,所以硬件运算中的中间变量存储区的大小要略大于乘数a的位数。
在本发明的一种可选实施例中,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_square = R2 (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(ae * R)(mod p)。R为一个基于bitcount的固定数据。
以C语言为例,蒙哥马利模幂单元的实现函数可以表示如下:
void _mon_mod_exp_unit(char *a, char *e, int e_bitcount, char *p, intp_bitcount, char *n_prime, char *r_square, char *output);
其中,a是底数,e是指数,a和e可以是同态加密的密文或者明文,p是同态加密的模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_square = R2 (mod p),e_bitcount是指数的位长,p_bitcount是模数的位长。该函数的输出为(ae * R)(mod p)。
在具体实施中,蒙哥马利模幂算法是蒙哥马利模乘的多次循环。可选地,所述蒙哥马利模幂单元可以通过复用蒙哥马利模乘单元实现。
由于蒙哥马利模幂单元是通过复用蒙哥马利模乘单元实现的,因此,不能直接复用乘数的存储空间,可以单独开辟存储空间来存储蒙哥马利模幂单元的输出结果,或者可以利用中间变量的存储空间来存储蒙哥马利模幂单元的输出结果,以节省芯片存储空间,以及节省内存拷贝时间。
本发明实施例将上述三种基本模运算单元封装在芯片运算核中,由于单元操作易实现和便于组合,因此,可以将一些通用的批量模运算分解为对基本模运算单元的操作,进而通过对基本模运算单元的组合调用,可以实现通用的批量模运算。
本发明实施例通过设计批量模运算的接口,实现对基本模运算单元的组合调用,该接口能够覆盖多种批量或组合的同态运算,通过软硬件结合的方式,尽可能地减少软件应用层的运算开销,由软件应用层对输入参数进行预计算,如可以预计算一些辅助参数,如辅助参数n_prime。由于基数k固定,在模数p不变的情况下,n_prime也不变,那么批量模乘运算下仅需要在软件应用层预计算一次n_prime,可以减少预计算的计算量。同样的,蒙哥马利模幂单元输入的辅助参数r_square在模数p不变的情况下,也仅需要预计算一次。这些辅助参数在同一套加密体系中可以反复使用,利用蒙哥马利算法在同一套参数中大批量运算的高效性,使得此软硬件结合的密文计算系统能够充分发挥软件灵活、硬件高效的特点,提高隐私计算的效率。
本发明设计的批量模运算接口主要基于上述三个基本单元运算:模加单元、蒙哥马利模乘单元和蒙哥马利模幂单元,其中模加单元和蒙哥马利模乘单元是硬件实现批量同态运算的最基本单元,蒙哥马利模幂单元则复用了蒙哥马利模乘单元来实现。
以下给出本发明实施例中批量模运算接口的具体实现,这些接口的实现主要由上述三个基本模运算单元来实现。本发明定义的批量模运算接口包括但不限于:批量模加运算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常数模幂运算、模乘法点积运算、模指数点积运算、批量生成模随机数运算的接口。上述接口通过对基本模运算单元的组合调用,可以实现批量模加运算、批量模乘运算、批量常数模乘运算、批量模幂运算、批量常数模幂运算、模乘法点积运算、模指数点积运算、批量生成模随机数运算等批量模运算。
在本发明实施例中,芯片中的每个运算核可以独立实现模加、模乘、常数模乘、模幂、常数模幂、模乘法点积、模指数点积、生成模随机数的运算。通过调度多个运算核可以实现批量模运算,提高批量模运算的效率。
在本发明的一种可选实施例中,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结果。
以C语言为例,批量模加运算接口的设计如下:
void mod_add(int count, char *p, int p_bitcount, char *data, char *output);
其中,批量模加运算接口的输入参数包括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)(modp)与对应序号s2存储在output中,以此类推。批量模加运算的实现只需要将count对操作数分别写入芯片count个运算核中,直接调用count个运算核的模加单元即可。也即,在批量操作的数目为count时,批量模加运算可以通过并行调用count个运算核的模加单元来实现。
在本发明的一种可选实施例中,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,i取值为1至count;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运算,得到count对操作数的批量模乘运算的结果。
以C语言为例,批量模乘运算接口的设计如下:
void mod_mul(int count, char *p, int p_bitcount, char *n_prime, char*r_square, char *data, char *output);
其中,批量模乘运算接口的输入参数包括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中,以此类推。
对于蒙哥马利模乘单元,其输入参数中的辅助参数n_prime为软件应用层预计算得到,由于基数k固定,在模数p不变的情况下,n_prime也不变,那么批量模乘运算下仅需要在软件中预计算一次n_prime,蒙哥马利模幂的输入参数r_square也类似。
在本发明的一种可选实施例中,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘数,b为常数,i取值为1至count;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模乘运算,得到count对操作数的批量常数模乘运算的结果。
以C语言为例,批量常数模乘运算接口的设计如下:
void mod_mul_const(int count, char *p, int p_bitcount, char *n_prime,char *r_square, char *data, char *output);
其中,批量常数模乘运算接口的输入参数包括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中,以此类推。相对于批量模乘运算,批量常数模乘运算中每个常数模乘运算所调用的蒙哥马利模乘单元次数会适当减少。
在本发明的一种可选实施例中,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为指数,i取值为1至count;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai, ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。
以C语言为例,批量模幂运算接口的设计如下:
void mod_exp(int count, int e_bitcount, char *p, int p_bitcount, char*n_prime, char *r_square, char *data, char *output);
其中,批量模幂运算接口的输入参数包括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中,以此类推。
在本发明的一种可选实施例中,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且a为常数,ei为指数,i取值为1至count;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a, ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。
以C语言为例,批量常数模幂运算接口的设计如下:
void mod_const_exp(int count, int e_bitcount, char *p, int p_bitcount, char *n_prime, char *r_square, char *data, char *output);
其中,批量常数模幂运算接口的输入参数包括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比特。相对于批量模幂运算,批量常数模幂运算中每个常数模幂运算所调用的蒙哥马利模乘单元和蒙哥马利模幂单元的次数会适当减少。
在本发明的一种可选实施例中,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点积运算的结果。
以C语言为例,模乘法点积运算接口的设计如下:
void mod_dot(int count, char *p, int p_bitcount, char *n_prime, char*r_square, char *data, char *output);
其中,模乘法点积运算接口的输入参数包括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个运算结果。
本发明实施例提供的批量模运算的接口在同态加密的密文计算系统中具有通用性。以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进行内积的密文。
在本发明的一种可选实施例中,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的模指数点积运算的结果。
以C语言为例,模指数点积运算接口的设计如下:
void mod_exp_dot(int count, int e_bitcount, char *p, int p_bitcount,char *n_prime, char *r_square, char *data, char *output);
其中,模指数点积运算接口的输入参数包括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比特的值。
在本发明的一种可选实施例中,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数n;
所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,包括:
通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p 进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。
在本发明实施例中,还可以设置用于生成随机数的随机数生成单元,如,每个运算核中除了包括模加单元和蒙哥马利模乘单元和蒙哥马利模幂单元这三个基本模运算单元,还可以包括随机数生成单元。每个运算核可以独立生成模随机数(如模数p意义下的随机数)。
本发明实施例提供的批量模运算的接口在同态加密的密文计算系统中具有通用性。以Paillier半同态加密为例,对数据的加密要生成随机数来掩盖明文信息,而在软件中生成随机数再传入硬件进行运算会增加时间开销,本发明实施例通过硬件(芯片)提供随机数可以提高计算效率,并且减少时间开销。
在本发明的一种可选实施例中,所述通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,包括:
若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算。
批量模运算的并行数指需要并行进行模运算的个数,也即上述各批量模运算中的count。一个示例中,对于批量模加运算,批量模运算的并行数count为100,而芯片当前可用的运算核的个数为80,则可以通过预设的调度算法,批量调度这80个运算核的模加单元对100个数据的输入参数进行并行的模加运算。具体的调度算法本发明实施例不做限制,如FCFS(First Come First Serve,先来先服务)的调度算法等。
需要说明的是,本发明实施例在描述不同批量模运算的实现接口时,对于有些输入参数采用了相同的描述符号,例如,模数p、批量操作的数目count、操作数(ai, bi)等。可以理解的是,在具体实施中,不同批量模运算的输入参数的具体数值可以并不相同。
综上,本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足隐私计算在实际场景中大数据量运算的需求。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图2,示出了本发明的一种用于数据处理的芯片200实施例的结构框图,所述芯片置于同态加密的密文计算节点,用于执行同态加密运算,所述芯片包括运算核201,每个运算核中包括基本模运算单元,所述基本模运算单元包括:模加单元2011和蒙哥马利模乘单元2012和蒙哥马利模幂单元2013;
所述芯片用于接收批量模运算的输入参数,并通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算,所述输入参数通过应用层预计算得到。
可选地,所述模加单元的输入包括字符数组表示的数据a、b、p、以及int型数据p_bitcount,其中,a和b是加数,p是模数,p_bitcount是模数的位长,模加单元的输出为(a+b)(mod p)。
可选地,所述蒙哥马利模乘单元的输入包括字符数组表示的数据a、b、p、n_prime、以及int型数据p_bitcount,其中,a和b是乘数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,n_prime为应用层基于模数p预计算得到,p_bitcount是模数的位长, n_prime= -p-1 (mod r),r = 2k,k为固定基数,R=2n+k,R-1 = 2-(n+k) (mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R-1)(mod p)。
可选地,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_square = R2 (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(ae * R)(mod p)。
可选地,所述批量模运算包括批量模加运算,所述输入参数包括模数p和count对操作数(ai, bi),其中,ai和bi为加数,i取值为1至count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的模加单元,对模数p和count对操作数(ai, bi)进行并行的模加运算,得到count对操作数的批量模加运算的结果。
可选地,所述批量模运算包括批量模乘运算,所述输入参数包括模数p、count对操作数(ai, bi)、辅助参数n_prime和r_square,其中,ai和bi为乘数,i取值为1至count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, bi)进行并行的模乘运算,得到count对操作数的批量模乘运算的结果。
可选地,所述批量模运算包括批量常数模乘运算,所述输入参数包括模数p、count对操作数(ai, b)、辅助参数n_prime和r_square,其中,ai和b是乘数,b为常数,i取值为1至count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p和count对操作数(ai, b)进行并行的常数模乘运算,得到count对操作数的批量常数模乘运算的结果。
可选地,所述批量模运算包括批量模幂运算,所述输入参数包括模数p、count对操作数(ai, ei)、辅助参数n_prime和r_square,其中,ai为底数,ei为指数,i取值为1至count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(ai,ei)进行并行的模幂运算,得到count对操作数的批量模幂运算的结果。
可选地,所述批量模运算包括批量常数模幂运算,所述输入参数包括模数p、count对操作数(a, ei)、辅助参数n_prime和r_square,其中,a为底数且a为常数,ei为指数,i取值为1至count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模幂单元和蒙哥马利模乘单元,利用辅助参数n_prime和r_square对模数p 和count对操作数(a,ei)进行并行的常数模幂运算,得到count对操作数的批量常数模幂运算的结果。
可选地,所述批量模运算包括模乘法点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和模加单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模乘法点积运算,得到第一操作数序列和第二操作数序列基于模数p的模乘法点积运算的结果。
可选地,所述批量模运算包括模指数点积运算,所述输入参数包括模数p、第一操作数序列、第二操作数序列、辅助参数n_prime和r_square,其中,第一操作数序列和第二操作数序列分别包括count个操作数;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的蒙哥马利模乘单元和蒙哥马利模幂单元,利用辅助参数n_prime和r_square对模数p与第一操作数序列和第二操作数序列进行模指数点积运算,得到第一操作数序列和第二操作数序列基于模数p的模指数点积运算的结果。
可选地,所述基本模运算单元还包括:随机数生成单元,所述批量模运算包括批量生成模随机数运算,所述输入参数包括模数p和随机数个数count;
所述芯片具体用于通过批量调度至少两个运算核中各运算核的随机数生成单元,对所述模数p进行并行的生成模随机数运算,得到count个模数p意义下的随机数结果。
可选地,所述蒙哥马利模幂单元通过复用蒙哥马利模乘单元实现。
可选地,所述芯片具体用于若所述芯片包括的运算核的个数小于所述批量模运算的并行数,则通过预设的调度算法,批量调度所有运算核对所述输入参数进行顺序的批量模运算。
本发明实施例通过软硬件结合的方式,从基本的模运算单元出发,将一些基本的模运算单元封装在芯片中。所述芯片置于同态加密的密文计算节点,所述芯片包括运算核,每个运算核中包括基本模运算单元,每个运算核通过组合调用这些基本模运算单元,可以独立实现模运算,进而通过批量调用运算核可以实现批量模运算。本发明实施例通过软硬件结合的方式,将同态加密运算中时间消耗较大的操作集成到高效的芯片中,软件应用层仅需要进行少量的预计算。由此,使得采用该芯片的密文计算系统能够充分发挥软件灵活、硬件高效的特点,从而极大提高同态加密运算的性能,使得隐私计算系统的性能可以满足隐私计算在实际场景中大数据量运算的需求。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的数据处理方法。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种数据处理方法,所述方法包括:接收批量模运算的输入参数,所述输入参数通过应用层预计算得到;通过批量调度至少两个运算核的基本模运算单元对所述输入参数进行并行的模运算,得到批量模运算的结果,其中,每个运算核通过组合调用其内部的基本模运算单元独立实现模运算。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上对本发明所提供的一种数据处理方法和用于数据处理的芯片,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (29)
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_bitcount是模数的位长,n_prime= -p-1 (mod r),r = 2k,k为固定基数,R=2n+k,R-1 = 2-(n+k)(mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R-1)(mod p)。
4.根据权利要求1所述的方法,其特征在于,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_square = R2 (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(ae * 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_bitcount是模数的位长,n_prime= -p-1 (mod r),r = 2k,k为固定基数,R=2n+k,R-1 = 2-(n+k)(mod p),n=p_bitcount,蒙哥马利模乘单元的输出为(a*b*R-1)(mod p)。
18.根据权利要求15所述的芯片,其特征在于,所述蒙哥马利模幂单元的输入包括字符数组表示的数据a、e、p、n_prime、r_square、以及int型数据e_bitcount和p_bitcount,其中,a是底数,e是指数,p是模数,n_prime是蒙哥马利模乘运算的辅助参数,r_square是蒙哥马利模幂运算的辅助参数,r_square = R2 (mod p),n_prime和r_square分别为应用层基于模数p预计算得到,e_bitcount是指数的位长,p_bitcount是模数的位长,蒙哥马利模幂单元的输出为(ae * 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任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110552731.7A CN113032848B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法和用于数据处理的芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110552731.7A CN113032848B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法和用于数据处理的芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032848A CN113032848A (zh) | 2021-06-25 |
CN113032848B true CN113032848B (zh) | 2021-08-10 |
Family
ID=76455411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110552731.7A Active CN113032848B (zh) | 2021-05-20 | 2021-05-20 | 一种数据处理方法和用于数据处理的芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032848B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656823B (zh) * | 2021-10-14 | 2022-02-08 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
CN113704174A (zh) * | 2021-10-25 | 2021-11-26 | 华控清交信息科技(北京)有限公司 | 一种芯片和数据处理方法 |
CN114579078A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 一种加速器、加速方法和电子设备 |
CN114793155A (zh) * | 2022-04-12 | 2022-07-26 | 支付宝(杭州)信息技术有限公司 | 多方安全计算的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3531611A1 (en) * | 2016-12-13 | 2019-08-28 | Shenzhen FHE Technologies Co., Ltd | Modulo operation-based fully homomorphic encryption processing method |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
CN112733161A (zh) * | 2020-12-30 | 2021-04-30 | 深圳致星科技有限公司 | 用于联邦学习密文运算的装置及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102019159B1 (ko) * | 2013-12-23 | 2019-09-09 | 한국전자통신연구원 | 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법 |
CN109525386B (zh) * | 2018-11-29 | 2021-05-18 | 东北大学 | 一种基于Paillier同态加密私有交集和的方法 |
CN110493201B (zh) * | 2019-07-29 | 2022-03-18 | 北京多思安全芯片科技有限公司 | 一种数据的处理方法、装置和系统 |
-
2021
- 2021-05-20 CN CN202110552731.7A patent/CN113032848B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3531611A1 (en) * | 2016-12-13 | 2019-08-28 | Shenzhen FHE Technologies Co., Ltd | Modulo operation-based fully homomorphic encryption processing method |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
CN112733161A (zh) * | 2020-12-30 | 2021-04-30 | 深圳致星科技有限公司 | 用于联邦学习密文运算的装置及方法 |
Non-Patent Citations (1)
Title |
---|
基于paillier 的隐私保护下关联规则挖掘方法;邢欢等;《网络与信息安全学报》;20160131;第2卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113032848A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113032848B (zh) | 一种数据处理方法和用于数据处理的芯片 | |
JP3784156B2 (ja) | モジュラ掛け算方法 | |
JP3014391B2 (ja) | 暗号法及びこの方法の実施のための暗号プロセツサ | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
Salarifard et al. | An efficient low-latency point-multiplication over curve25519 | |
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
CN110519038B (zh) | 一种数据的同态处理装置和系统 | |
CN113031920B (zh) | 一种芯片和用于芯片的批量模运算方法 | |
Cenk et al. | Improved three-way split formulas for binary polynomial and Toeplitz matrix vector products | |
JP2002229445A (ja) | べき乗剰余演算器 | |
KR100508092B1 (ko) | 저전력 모듈로 곱셈을 수행하는 연산장치 | |
JP3302043B2 (ja) | 暗号通信方法及びそのシステム | |
JP2000010479A (ja) | モンゴメリ・リダクション装置及び記録媒体 | |
WO2022146436A1 (en) | A low footprint hardware architecture for kyber-kem | |
CN1230736C (zh) | 智能卡模乘器vlsi结构的计算机实现方法 | |
CN101809638A (zh) | 运算方法和运算装置 | |
KR20040055550A (ko) | 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기 | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
JPH11143688A (ja) | 演算装置並びにこれを利用したrsa暗号演算装置及び楕円暗号演算装置 | |
US20020114449A1 (en) | Modular multiplier and an encryption/decryption processor using the modular multiplier | |
US10318245B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
CN113434886A (zh) | 联合生成用于安全计算的数据元组的方法及装置 | |
Li et al. | Shift-sub modular multiplication algorithm and hardware implementation for rsa cryptography | |
Aswathy et al. | Modified RSA public key algorithm |
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 |