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;
步骤15、所述64位乘法器模块根据所述输出数据R″′i、所述反变换旋转因子数据进行模乘得到r项位宽为2w位的输出数据步骤16、所述128位数据模减模块对所述输出数据 进行模P处理,得到r项位宽为w位的输出数据步骤17、所述数据转置模块对输出数据 进行转置处理输出数据步骤18、将i+1赋值给i后,判断i>4是否成立,若成立,则执行步骤19;否则,返回步骤
13.4;
步骤19、将j+1赋值给j后,判断j>k是否成立,若成立,则将k次的输出数据构成数据集#合R中;否则,返回步骤11。