CN112464296B - 一种用于同态加密技术的大整数乘法器硬件电路 - Google Patents
一种用于同态加密技术的大整数乘法器硬件电路 Download PDFInfo
- Publication number
- CN112464296B CN112464296B CN202011502986.4A CN202011502986A CN112464296B CN 112464296 B CN112464296 B CN 112464296B CN 202011502986 A CN202011502986 A CN 202011502986A CN 112464296 B CN112464296 B CN 112464296B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- ntt
- bit
- output data
- 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
-
- 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/76—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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于同态加密技术的大整数乘法器硬件电路,包括:数据存储模块、64K‑NTT模块、读地址生成模块、写地址生成模块、旋转因子数据生成模块和全局控制模块;其中64K‑NTT模块包括:16‑NTT模块、192位数据模减模块、64位乘法器模块、128位数据模减模块以及数据转置模块;全局控制模块控制整个系统;数据存储模块用于存储数据;读写地址生成模块生成读写存储地址和标签;旋转因子数据生成模块生成旋转因子数据;64K‑NTT模块对数据进行快速数论变换、取模、模乘和转置处理。本发明旨在于提升大整数乘法器的性能,加快计算速度,减少片上存储空间,并尽可能减少消耗的硬件平台的资源。
Description
技术领域
本发明属于加密硬件电路设计领域,尤其涉及一种应用于同态加密的大整数乘法器硬件电路设计及其数据处理方法。
背景技术
随着云计算的迅猛发展,人们在将自己数据外包给其他服务时,为了安全需要对自己的数据进行加密。全同态加密方案(Fully Homomorphic Encryption,FHE)是一种可以实现在加密数据上进行计算的技术,可以很好的保护隐私。但是FHE要实现很好的加密效果需要进行大量成千上万比特的乘法,使得这种技术在实现时,延时太大,难以获得高性能。设计一种高效、快速并且计算范围大的整数乘法是必然的需求。
自从同态加密方案由于安全、隐私性被重视起来之后,研究一种能够提高加密性能的大数乘法算法在国内外快速发展起来。基于传统的按位乘法Grammar-School中,需要将一个操作数的每一位乘以另一个操作数据的每一位并累加,算法复杂度达到了Nlog(N)log(logN),这对大数乘法来说是不可接受的。因此现阶段大多数现场可编程逻辑门阵列FPGA或者专用集成电路ASIC大整数设计方案都采用了一种基于数论变换NumberTheoretical Transform,NTT实现的大整数–Strassen算法,通过基数将大数拆分成一组长度为M的数据,之后补零扩展成2M的一组数,经过NTT变化之后,在与经过同样处理的另一组数点积,经过数论变换InverseNTT、INTT之后,在与对应的基数的幂相乘累加得到最后结果。
目前众多研究大整数乘法的重点都转向了如何对质数的取模运算进行缩减和如何对模乘、模幂算法做出优化。然而他们采用的众多技术中,或为了简化逻辑设计而使用双端口RAM,存储面积无法接受,或为了减小电路面积采用单端口RAM,但是直接存储旋转因子数据,保存的数据量巨大,或是直接通过在硬件上直接计算旋转因子达到减少存储数据目的,但是花费了众多周期在数据运算上面,导致速度下降,这些设计都没有在硬件资源和计算速度上达到一个很好的平衡。
发明内容
本发明为克服现有技术的不足之处,提出了一种用于同态加密技术的大整数乘法器硬件电路,以期能提升大整数乘法器的性能,加快计算速度,减少片上存储空间,并尽可能减少消耗的硬件平台的资源。
为达到上述发明目的,本发明所采用的技术方案如下:
本发明一种用于同态加密技术的大整数乘法器硬件电路的特点包括:数据存储模块、64K-NTT模块、读地址生成模块、写地址生成模块、旋转因子数据生成模块和全局控制模块;
所述数据存储模块接收外部输入的两个位宽为W位的多项式数据X1和X2,且所述多项式数据X1和X2为两个大整数,按照基数H将所述多项式数据X1分割成z项位宽为w的原始数据Q1和z项位宽为w的填充零数据q1,将所述原始数据Q1存储在第一存储块的随机存储器RAM_0中,将所述填充零数据q1存储在第一存储块的随机存储器RAM_1中;
按照基数B将多项式数据X2分割成z项位宽为w的原始数据Q2和z项位宽为w的填充零数据q2,将所述原始数据Q2存储在第二存储块的随机存储器RAM_0中,将所述填充零数据q2存储在第二存储块的随机存储器RAM_1中;且z=N/2;N为所述多项式数据X1和X2的项数;
所述全局控制模块发出使能信号;
所述读地址生成模块根据所述使能信号,生成读存储块地址和标签,从而根据所述读存储块地址和标签从所述数据存储模块中读出多项式数据X1或X2并传递给64K-NTT模块;
所述旋转因子数据生成模块根据所述使能信号生成正变换旋转因子数据和反变换旋转因子数据;
所述64K-NTT模块根据所述正变换旋转因子数据、反变换旋转因子数据和所述多项式数据X1和X2,从所述多项式数据X1和X2中分别重复k次选取r个子项并与所述正变换旋转因子数据一起依次进行正变换处理、取模、模乘、取模和转置操作后依次得到k次结果所构成的数据集合Y#和T#,再将数据集合Y#和T#中的k次结果分别与所述反变换旋转因子一起进行模乘和取模后再依次进行逆变换处理、取模、模乘、取模和转置操作后相应输出处理后的k次结果并构成数据集合R#;
所述写地址生成模块根据所述使能信号,生成写存储块地址和标签,从而根据所述写存储块地址和标签从64K-NTT模块中将成数据集合R#写入到数据存储模块中。
本发明所述的用于同态加密技术的大整数乘法器硬件电路的特点也在于,所述64K-NTT模块由16-NTT模块、192位数据模减模块、64位乘法器模块、128位数据模减模块以及数据转置模块组成;所述16-NTT模块中包含4组16-NTT子模块,每组16-NTT子模块包含8个2-NTT模块;所述64K-NTT模块按如下过程进行数据处理:
步骤1、定义当前循环次数为j,并初始化j=1;
步骤2、16-NTT模块对所述多项式数据X1进行正变换操作:
步骤2.1、定义变量i,并初始化i=1;
步骤2.2、第i组16-NTT子模块从所述多项式数据X1中第j次选取r个子项并进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i组r项位宽为3w的输出数据Yi;
步骤2.3、第i+1组16-NTT子模块对输出数据Yi进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i+1组r项位宽为3w的输出数据Yi+1;
步骤3、所述192位数据模减模块对所述输出数据Yi进行模P处理,得到r项w位输出数据Yi′;
步骤4、所述64位乘法器模块对所述输出数据Yi′、所述多项式数据X1中第j次选取的r个子项、所述正变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据Yi″;
步骤5、所述128位数据模减模块对所述输出数据Yi″进行模P处理,得到r项位宽为w位的输出数据Yi″′;
步骤6、所述数据转置模块对输出数据Yi″进行转置处理输出数据Yi *;
步骤7、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤8;否则,返回步骤2.3;
步骤8、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合Y#中;否则,返回步骤2.1;
步骤9、按照步骤2-步骤8的处理过程,对所述多项式数据X2进行相同的处理,从而得到数据集合T#;
步骤10、初始化j=1;
步骤11、所述64位乘法器模块对数据集合Y#和T#中第j次选取的r个子项和反变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据R;
步骤12、所述128位数据模减模块对输出数据R进行模P处理,得到r项位宽为w位的输出数据R′;
步骤13、16-NTT模块对所述多项式数据X1进行逆变换操作:
步骤13.1、初始化i=1;
步骤13.2、第i组16-NTT子模块对所述输出数据R′进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i组r项位宽为3w的输出数据R″i;
步骤13.4、第i+1组16-NTT子模块对输出数据R″i进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i+1组r项位宽为3w的输出数据R″i+1;
步骤14、所述192位数据模减模块对所述输出数据R″i进行模P处理,得到r项w位输出数据R″′i;
步骤18、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤19;否则,返回步骤13.4;
步骤19、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合R#中;否则,返回步骤11。
与现有技术相比,本发明的有益技术效果体现在:
1、本发明提出了64K-NTT正逆变换序列兼容的单端口地址算法,统一了正变换和逆变换的硬件结构,减少了数据排序的次数,也是节省了硬件实现大整数乘法器的周期数以及读写大存储空间的随机存储器RAM块的次数,达到了降低读写随机存储器RAM时产生的读写功耗,一定程度上加速了整个乘法器的速度。
2、本发明提出了一种快速流水线结构的16-NTT硬件实现方法,不同传统的直接累加进位结构,本发明通过对16-NTT在基2-NTT上的拆分,成功将16-NTT在算法上拆分成4个阶段的8个2-NTT算法实现,极大节省了硬件电路部署空间,提高了大整数乘法器成功部署在硬件上的可能性。
3、本发明采用了模数P=18446744069414584321,保证了16-NTT原根和2-NTT原根都为2的幂次方,从而让16-NTT在实现时,只需要通过加法和移位实现,极大的节省了硬件资源,提高了计算的速度,本发明采用的流水线结构在速度上相比传统结构有8倍的提升。
附图说明
图1本发明采用的大整数整体硬件结构图;
图2本发明采用的16-NTT数据流图;
图3本发明采用的192位数据模减电路图;
图4本发明采用的64位乘法器结构图;
图5本发明采用的128位数据模减电路图;
图6本发明采用的矩阵转置电路图。
具体实施方式
本实施例中,如图1所示,一种用于同态加密技术的大整数乘法器硬件电路,包括:数据存储模块、64K-NTT模块、读地址生成模块、写地址生成模块、旋转因子数据生成模块和全局控制模块;大整数乘法器实现功能是通过采用SSA(-StrassenAlogrithm)多项式乘法计算算法,完成输入数据位宽为786K比特的乘法操作;SSA是一种基于NTT的多项式乘法算法,该算法为大整数设计提供了一种有效的并行计算方案;
数据存储模块接收外部输入的两个位宽为768K位的多项式数据X1和X2,且多项式数据X1和X2为两个大整数,按照基数H=224将多项式数据X1分割成32768项位宽为64比特的原始数据Q1和32768项位宽为64比特的填充零数据q1,根据式(1),得到随机存储器RAM的存储标签和地址,并按照存储标签和地址将原始数据Q1存储在第一存储块的随机存储器RAM_0中,将填充零数据q1存储在第一存储块的随机存储器RAM_1中;
式(1)中,Mb为随机存储器RAM的存储标签,Ma为随机存储器RAM的存储地址,nm-s-1为项数索引值的比特位,m=16,s=4;
按照基数B将多项式数据X2分割成32768项位宽为64比特的原始数据Q2和32768项位宽为64比特的填充零数据q2,根据式(1),得到随机存储器RAM的存储标签和地址,并按照存储标签和地址将原始数据Q2存储在第二存储块的随机存储器RAM_0中,将填充零数据q2存储在第二存储块的随机存储器RAM_1中;
全局控制模块发出使能信号;
读地址生成模块根据使能信号,利用式(2)生成读存储块地址和标签,从而根据读存储块地址和标签从数据存储模块中读出多项式数据X1或X2并传递给64K-NTT模块;
其中BN为随机存储器RAM标签,MA为随机存储器RAM地址,Gray(x)函数功能是取x的格雷码,RR(x,y)功能是将x循环右移y比特位;
旋转因子数据生成模块根据使能信号生成正变换旋转因子数据和反变换旋转因子数据;
64K-NTT模块根据正变换旋转因子数据、反变换旋转因子数据和多项式数据X1和X2,从多项式数据X1和X2中分别重复4096次选取16个子项并与正变换旋转因子数据一起依次进行正变换处理、取模、模乘、取模和转置操作后依次得到4096次结果所构成的数据集合Y#和T#,再将数据集合Y#和T#中的k次结果分别与反变换旋转因子一起进行模乘和取模后再依次进行逆变换处理、取模、模乘、取模和转置操作后相应输出处理后的4096次结果并构成数据集合R#;
写地址生成模块根据使能信号,利用式(3)生成写存储块地址和标签,从而根据写存储块地址和标签从64K-NTT模块中将成数据集合R#写入到数据存储模块中。
其中BN为随机存储器RAM标签,MA为随机存储器RAM地址,Gray(x)函数功能是取x的格雷码,RR(x,y)功能是将x循环右移y比特位;
本实施例中,64K-NTT模块由16-NTT模块、192位数据模减模块、64位乘法器模块、128位数据模减模块以及数据转置模块组成;16-NTT模块中包含4组16-NTT子模块,每组16-NTT子模块包含8个2-NTT模块;64K-NTT模块按如下过程进行数据处理:
步骤1、定义当前循环次数为j,并初始化j=1;
步骤2、16-NTT模块对多项式数据X1进行正变换操作:
步骤2.1、定义变量i,并初始化i=1;
步骤2.2、第i组16-NTT子模块从多项式数据X1中第j次选取16个子项并进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i组16项位宽为3w的输出数据Yi;
步骤2.3、第i+1组16-NTT子模块对输出数据Yi进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i+1组16项位宽为3w的输出数据Yi+1;
如图2所示,正变换四组如下操作:
当i=1时,第1组16-NTT子模块对多项式数据X1中的16个子项进行处理;将16个子项分成8小组,分小组索引为[[0,8],[4,12],[2,10],[6,14],[1,9],[5,13],[3,11],[7,15]],8小组16个子项数据并行进行2-NTT计算得到8小组输出数据,再将索引为[12,14,13,15]的输出数据右移48位,从而产生第1组16项位宽为192比特的输出数据Y1;
当i=2时,第2组16-NTT子模块对输出数据Y1进行处理,将16个子项分成8小组,分小组索引为[[0,4],[8,12],[2,6],[10,14],[1,5],[9,13],[3,7],[11,15]],8小组16个子项数据并行进行2-NTT计算得到8小组输出数据,再将索引为[2,3]输出数据左移1位,索引为[10,11]输出数据左移24位,索引为[6,7]输出数据左移48位,索引为[2,3]输出数据左移72位,从而产生第2组16项位宽为192比特的输出数据Y2;
当i=3时,第3组16-NTT子模块对输出数据Y2进行处理,将16个子项分成8小组,分组索引为[[0,2],[8,10],[4,6],[12,14],[1,3],[9,11],[5,7],[13,15]],8小组16个子项数据并行进行2-NTT计算得到8小组输出数据,再将索引为[1]输出数据左移1位,索引为[9]输出数据左移12位,索引为[5]输出数据左移24位,索引为[13]输出数据左移36位,索引为[3]输出数据左移48位,索引为[11]输出数据左移60位,索引为[7]输出数据左移72位,索引为[15]输出数据左移84位,从而产生第3组16项位宽为192比特的输出数据Y3;
当i=4时,第4组16-NTT子模块对输出数据Y3进行处理,将16个子项分成8小组,分组索引为[[0,1],[8,9],[4,5],[12,13],[2,3],[10,11],[6,7],[14,15]],8小组16个子项数据并行进行2-NTT计算得到8小组输出数据,从而产生第4组16项位宽为192比特的输出数据Y4;
步骤3、192位数据模减模块对输出数据Yi进行模P处理,如图3所示,将模减模块拆分成3级流水,对p取模运算可以转化成32bit数据的移位和加法,根据式(3),得到16项64位比特输出数据Yi′;
Y≡[(232e+f)+232d+a-(232b+c)-(232a+d)]modP (4)
式(3)中,X为输入数据,Y为输出数据,a=X[191:160],b=X[159:128],c=X[127:96],d=X[95:64],e=X[63:32],f=X[31:0];
步骤4、64位乘法器模块对输出数据Yi′、多项式数据X1中第j次选取的r个子项、正变换旋转因子数据进行模乘,如图4所示,通过4个32bit的乘法以及4个32bit的加法实现,根据式(4),得到16项位宽为128比特的输出数据Yi″;
C=Amsb×Bmsb×264+(Amsb×Blsb+Alsb×Bmsb)×232+Alsb×Blsb (5)
式(4)中,A,B为输入数据,C为输出数据,Amsb=A[63:32],Alsb=A[31:0],Bmsb=B[63:32],Blsb=B[31:0],p为系数;
步骤5、128位数据模减模块对输出数据Yi″进行模P处理,如图5所示,一个128bit数据通过32bit的加法减法以及移位操作,被降低为64bit数据,这样计算过程中每一个NTT16模块的输入输出位宽都可以统一为64bit,根据式(5),得到16项位宽为64比特的输出数据Yi″′;
Y≡(b+c)×232+(d-b-a)mod P (6)
式(5)中,X为输入数据,Y为输出数据,a=X[127:96],b=X[95:64],c=X[63:32],d=X[31:0],p为系数;
步骤6、如图6所示,数据转置模块对输出数据Yi″进行转置处理,为了满足流水线设计,当写使能拉高的时候,每一个周期需要写入一个16*64bit的数据,并且这16个数据来自前面16个周期分别输出的结果,因此等待16个周期之后,才能开始写入,在当前寄存器阵列写入数据到RAM的时候,下一个寄存器阵列需要开始接受输入数据开始转置数据,以便在下一个16周期开始写入数据,这样两个寄存器阵列交替工作,可以实现转置和写数据流水线操作,转置处理完成后输出数据Yi *;
步骤7、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤8;否则,返回步骤2.3;
步骤8、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合Y#中;否则,返回步骤2.1;
步骤9、按照步骤2-步骤8的处理过程,对多项式数据X2进行相同的处理,从而得到数据集合T#;
步骤10、初始化j=1;
步骤11、64位乘法器模块对数据集合Y#和T#中第j次选取的r个子项和反变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据R;
步骤12、128位数据模减模块对输出数据R进行模P处理,得到r项位宽为w位的输出数据R′;
步骤13、16-NTT模块对多项式数据X1进行逆变换操作:
步骤13.1、初始化i=1;
步骤13.2、第i组16-NTT子模块对输出数据R′进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i组r项位宽为3w的输出数据R″i;
步骤13.4、第i+1组16-NTT子模块对输出数据R″i进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i+1组r项位宽为3w的输出数据R″i+1;
当i=1时,第1组16-NTT子模块对输出数据R′进行处理,将16个子项分成8小组,分小组索引为[[0,8],[4,12],[2,10],[6,14],[1,9],[5,13],[3,11],[7,15]],8小组输入数据并行进行2-NTT计算得到8组输出数据,再将索引为[12,14,13,15]输出数据右移144位,从而产生第1组16项位宽为192比特的输出数据R″1;
当i=2时,第2组16-NTT子模块对输出数据R1″进行处理,将16个子项分成8小组,分小组索引为[[0,4],[8,12],[2,6],[10,14],[1,5],[9,13],[3,7],[11,15]],8组输入数据并行进行2-NTT计算得到8组输出数据,再将索引为[2,3]输出数据左移1位,索引为[10,11]输出数据左移168位,索引为[6,7]输出数据左移144位,索引为[2,3]输出数据左移120位,从而产生第2组16项位宽为192比特的输出数据R″2;
当i=3时,第3组16-NTT子模块对输出数据R″2进行处理,将16个子项分成8小组,分小组索引为[[0,2],[8,10],[4,6],[12,14],[1,3],[9,11],[5,7],[13,15]],8组输入数据并行进行2-NTT计算得到8组输出数据,再将索引为[1]输出数据左移1位,索引为[9]输出数据左移180位,索引为[5]输出数据左移168位,索引为[13]输出数据左移156,索引为[3]输出数据左移144位,索引为[11]输出数据左移132位,索引为[7]输出数据左移120位,索引为[15]输出数据左移108位,从而产生第3组16项位宽为192比特的输出数据R″3;
当i=4时,第4组16-NTT子模块对输出数据R″3进行处理,将16个子项分成8小组,分小组索引为[[0,1],[8,9],[4,5],[12,13],[2,3],[10,11],[6,7],[14,15]],从而产生第4组16项位宽为192比特的输出数据R″4;
步骤14、192位数据模减模块对输出数据R″i进行模P处理,得到r项w位输出数据R″′i;
步骤18、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤19;否则,返回步骤13.4;
步骤19、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合R#中;否则,返回步骤11。
全局控制模块发出使能信号,写地址生成模块接收使能信号,根据式(2)生成写随机存储器RAM地址和标签,从而根据写随机存储器RAM地址和标签从64K-NTT模块中将处理后的数据R#写入到数据存储模块中。
将数据存储模块中的数据R#的所有子项进行累加输出最终结果。
Claims (2)
1.一种用于同态加密技术的大整数乘法器硬件电路,其特征包括:数据存储模块、64K-NTT模块、读地址生成模块、写地址生成模块、旋转因子数据生成模块和全局控制模块;
所述数据存储模块接收外部输入的两个位宽为W位的多项式数据X1和X2,且所述多项式数据X1和X2为两个大整数,按照基数H将所述多项式数据X1分割成z项位宽为w的原始数据Q1和z项位宽为w的填充零数据q1,将所述原始数据Q1存储在第一存储块的随机存储器RAM_0中,将所述填充零数据q1存储在第一存储块的随机存储器RAM_1中;
按照基数B将多项式数据X2分割成z项位宽为w的原始数据Q2和z项位宽为w的填充零数据q2,将所述原始数据Q2存储在第二存储块的随机存储器RAM_0中,将所述填充零数据q2存储在第二存储块的随机存储器RAM_1中;且z=N/2;N为所述多项式数据X1和X2的项数;
所述全局控制模块发出使能信号;
所述读地址生成模块根据所述使能信号,生成读存储块地址和标签,从而根据所述读存储块地址和标签从所述数据存储模块中读出多项式数据X1或X2并传递给64K-NTT模块;
所述旋转因子数据生成模块根据所述使能信号生成正变换旋转因子数据和反变换旋转因子数据;
所述64K-NTT模块根据所述正变换旋转因子数据、反变换旋转因子数据和所述多项式数据X1和X2,从所述多项式数据X1和X2中分别重复k次选取r个子项并与所述正变换旋转因子数据一起依次进行正变换处理、取模、模乘、取模和转置操作后依次得到k次结果所构成的数据集合Y#和T#,再将数据集合Y#和T#中的k次结果分别与所述反变换旋转因子一起进行模乘和取模后再依次进行逆变换处理、取模、模乘、取模和转置操作后相应输出处理后的k次结果并构成数据集合R#;
所述写地址生成模块根据所述使能信号,生成写存储块地址和标签,从而根据所述写存储块地址和标签从64K-NTT模块中将成数据集合R#写入到数据存储模块中。
2.根据权利要求1所述的用于同态加密技术的大整数乘法器硬件电路,其特征是,所述64K-NTT模块由16-NTT模块、192位数据模减模块、64位乘法器模块、128位数据模减模块以及数据转置模块组成;所述16-NTT模块中包含4组16-NTT子模块,每组16-NTT子模块包含8个2-NTT模块;所述64K-NTT模块按如下过程进行数据处理:
步骤1、定义当前循环次数为j,并初始化j=1;
步骤2、16-NTT模块对所述多项式数据X1进行正变换操作:
步骤2.1、定义变量i,并初始化i=1;
步骤2.2、第i组16-NTT子模块从所述多项式数据X1中第j次选取r个子项并进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i组r项位宽为3w的输出数据Yi;
步骤2.3、第i+1组16-NTT子模块对输出数据Yi进行分组、索引、2-NTT并行计算和利用正旋转因子数据移位操作,从而产生第i+1组r项位宽为3w的输出数据Yi+1;
步骤3、所述192位数据模减模块对所述输出数据Yi进行模P处理,得到r项w位输出数据Yi′;
步骤4、所述64位乘法器模块对所述输出数据Yi′、所述多项式数据X1中第j次选取的r个子项、所述正变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据Yi″;
步骤5、所述128位数据模减模块对所述输出数据Yi″进行模P处理,得到r项位宽为w位的输出数据Yi″′;
步骤6、所述数据转置模块对输出数据Yi″进行转置处理输出数据Yi *;
步骤7、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤8;否则,返回步骤2.3;
步骤8、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合Y#中;否则,返回步骤2.1;
步骤9、按照步骤2-步骤8的处理过程,对所述多项式数据X2进行相同的处理,从而得到数据集合T#;
步骤10、初始化j=1;
步骤11、所述64位乘法器模块对数据集合Y#和T#中第j次选取的r个子项和反变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据R;
步骤12、所述128位数据模减模块对输出数据R进行模P处理,得到r项位宽为w位的输出数据R′;
步骤13、16-NTT模块对所述多项式数据X1进行逆变换操作:
步骤13.1、初始化i=1;
步骤13.2、第i组16-NTT子模块对所述输出数据R′进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i组r项位宽为3w的输出数据R″i;
步骤13.4、第i+1组16-NTT子模块对输出数据R″i进行分组、索引、2-NTT并行计算和利用反旋转因子数据移位操作,从而产生第i+1组r项位宽为3w的输出数据R″i+1;
步骤14、所述192位数据模减模块对所述输出数据R″i进行模P处理,得到r项w位输出数据R″′i;
步骤18、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤19;否则,返回步骤13.4;
步骤19、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集合R#中;否则,返回步骤11。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011502986.4A CN112464296B (zh) | 2020-12-18 | 2020-12-18 | 一种用于同态加密技术的大整数乘法器硬件电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011502986.4A CN112464296B (zh) | 2020-12-18 | 2020-12-18 | 一种用于同态加密技术的大整数乘法器硬件电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112464296A CN112464296A (zh) | 2021-03-09 |
CN112464296B true CN112464296B (zh) | 2022-09-23 |
Family
ID=74803908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011502986.4A Active CN112464296B (zh) | 2020-12-18 | 2020-12-18 | 一种用于同态加密技术的大整数乘法器硬件电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112464296B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112883408B (zh) * | 2021-04-29 | 2021-07-16 | 深圳致星科技有限公司 | 用于隐私计算的加解密系统和芯片 |
CN113343262B (zh) * | 2021-06-22 | 2022-10-11 | 海光信息技术股份有限公司 | 同态加密装置、同态加密芯片及同态加密方法 |
CN114185514B (zh) * | 2021-12-13 | 2024-03-08 | 合肥工业大学 | 一种基于费马模数的多项式乘法器 |
US11764944B2 (en) * | 2021-12-30 | 2023-09-19 | Huawei Technologies Co., Ltd. | Field-programmable gate array (FPGA) clusters and methods of using an FPGA cluster for homomorphic encryption acceleration |
CN114936350B (zh) * | 2022-02-08 | 2024-02-27 | 西北工业大学 | 一种基于gpu快速数论转换的全同态加密门自举方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110543291A (zh) * | 2019-06-11 | 2019-12-06 | 南通大学 | 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法 |
WO2020012104A1 (fr) * | 2018-07-10 | 2020-01-16 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Circuit de génération de facteurs de rotation pour processeur ntt |
CN110892393A (zh) * | 2017-04-11 | 2020-03-17 | 多伦多大学管理委员会 | 用于在同态加密下加速安全计算的同态处理单元(hpu) |
-
2020
- 2020-12-18 CN CN202011502986.4A patent/CN112464296B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110892393A (zh) * | 2017-04-11 | 2020-03-17 | 多伦多大学管理委员会 | 用于在同态加密下加速安全计算的同态处理单元(hpu) |
WO2020012104A1 (fr) * | 2018-07-10 | 2020-01-16 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Circuit de génération de facteurs de rotation pour processeur ntt |
CN110543291A (zh) * | 2019-06-11 | 2019-12-06 | 南通大学 | 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法 |
Non-Patent Citations (1)
Title |
---|
大数乘法的GPU加速实现;唐天泽等;《计算机应用研究》;20171010(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112464296A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112464296B (zh) | 一种用于同态加密技术的大整数乘法器硬件电路 | |
US6901422B1 (en) | Matrix multiplication in a vector processing system | |
CA2741698C (en) | Method and apparatus for modulus reduction | |
CN102043760B (zh) | 数据处理方法及系统 | |
CN103793199B (zh) | 一种支持双域的快速rsa密码协处理器 | |
KR102075848B1 (ko) | 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 | |
CN114297571A (zh) | 一种适用于格密码算法的多项式乘法硬件实现系统 | |
CN110543291A (zh) | 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法 | |
US7912891B2 (en) | High speed low power fixed-point multiplier and method thereof | |
CN117240601B (zh) | 加密处理方法、加密处理电路、处理终端及存储介质 | |
CN112799634B (zh) | 一种基于基22mdc ntt结构的高性能环多项式乘法器 | |
CN117155572A (zh) | 一种基于gpu并行实现密码技术中大整数乘法的方法 | |
RU2299461C1 (ru) | Умножитель по модулю | |
CN109379191B (zh) | 一种基于椭圆曲线基点的点乘运算电路和方法 | |
CN116561819A (zh) | 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器 | |
Simka et al. | Hardware factorization based on elliptic curve method | |
CN109284085B (zh) | 一种基于fpga的高速模乘和模幂运算方法及装置 | |
Venkatesh et al. | Reconfigurable architecture to speed-up modular exponentiation | |
CN114422315B (zh) | 一种超高吞吐量ifft/fft调制解调方法 | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
WO2017037729A1 (en) | Concurrent architecture of vedic multiplier-an accelerator scheme for high speed computing | |
CN118233081B (zh) | 一种基于neon指令集的国密sm2底层模乘优化方法 | |
KR100297110B1 (ko) | 모듈러곱셈기 | |
Sanu et al. | Parallel montgomery multipliers | |
CN114185514B (zh) | 一种基于费马模数的多项式乘法器 |
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 |