本发明专利技术公开了一种用于大数乘法的数论变换电路,包括主控单元,接收变换前数据并存储入主存,向地址生成单元发送数论变换开始信号;主存,存储数论变换前\中\后的数据;基16运算单元,实现16点的数论变换并存入第一随机存储器;地址生成单元,生成取数地址,将取数地址作为存储地址发送给转置及旋转因子相乘单元,生成旋转因子只读存储器地址发送给旋转因子只读存储器;转置及旋转因子相乘单元,读取第一随机存储器中矩阵,完成矩阵的转置,以及矩阵和旋转因子的点乘并根据存储地址将结果存入主存;旋转因子只读存储器读取旋转因子发送给转置及旋转因子相乘单元。本发明专利技术实现786432bits数字乘法的数论变换,提高运算利用率,节省电路逻辑及存储资源。
A number theory transformation circuit for multiplication of large numbers
【技术实现步骤摘要】
一种用于大数乘法的数论变换电路
本专利技术涉及一种用于乘法的电路结构,特别是涉及一种用于大数乘法的数论变换电路。
技术介绍
在信息安全日益重要的今天,现代加密手段层出不穷,已有科学家研究超过100kbit(超过106356)的加密手段。在加密算法中,常用的运算有加法、减法、乘法、平方、取模等。其中乘法和平方运算数量占到了整个运算的53%-62%。因此,大数乘法的硬件加速是当前加密领域的一个需要攻克的难题。大数乘法除了传统的长乘法,Karatsuba算法、Toom-Cook算法和-Strassen算法。传统的长乘法算法复杂度为O(n2),Karatsuba算法的算法复杂度为O(n1.58),Toom-Cook算法的算法复杂度为O(n1.46),–Strassen算法的算法复杂度为O(n·logn·loglogn)。以上算法的复杂度依次减低,实现复杂度依次增加。–Strassen算法的核心是将两数数论变换后相加,再将合做逆数论变换,通过数论变换,把大数乘法转换为大数加法。数论变换是传统的数字傅里叶变换(DFT)在有限域上的一般化。数论变换用旋转因子(modp)来等价DFT运算中的其中W是模素数p的原根,由于p是素数,根据狄利克雷定理,其原根W一定存在。N点数论变换的计算式为其中,0≤k≤N-1,WN是第N个单位根。现有技术中采用数论变换的电路结构有公开号为CN103870438A的中国专利“一种利用数论变换计算循环卷积的电路结构”,该专利方案利用数论变换计算循环卷积。其处理的输入数据为8bits,通过蝶形运算单元得到65bits数据,使用了费马数F=232+1取模后,输出数据为32bit。该结构能够承载的数据宽度有限。另外还有《电子与信息学报》2019年的文章《大整数乘法器FPGA设计与实现》。该论文描述了一种基于–Strassen算法的大整数乘法器硬件架构。论文将65536点的数论变换,分解成64点与1024点的形式,1024点数论变换使用2级基-32运算单元串行构建的结构。该结构同时使用了64点和32点运算单元,运算利用率较低。
技术实现思路
针对上述现有技术的缺陷,本专利技术的目的是提供一种用于大数乘法的数论变换电路,实现786432bits数字乘法的数论变换,提高运算利用率,节省电路逻辑及存储资源。本专利技术的技术方案是这样的:一种用于大数乘法的数论变换电路,包括:主控单元,接收变换前数据并存储入主存,向地址生成单元发送数论变换开始信号;主存,存储数论变换前的数据或者变换中的中间数据或者变换后的结果数据;基16运算单元,根据地址生成单元发送的取数地址从所述主存中取数,实现16点的数论变换并存入第一随机存储器;地址生成单元,接收数论变换开始信号生成取数地址发送给所述基16运算单元,将所述取数地址作为存储地址发送给转置及旋转因子相乘单元,生成旋转因子只读存储器地址发送给旋转因子只读存储器;转置及旋转因子相乘单元,读取第一随机存储器中所述基16运算单元计算得到的矩阵,完成矩阵的转置,以及矩阵和旋转因子的点乘并根据存储地址将结果存入所述主存;第一随机存储器,存储所述基16运算单元计算得到的矩阵;和旋转因子只读存储器,由所述旋转因子只读存储器地址读取旋转因子发送给所述转置及旋转因子相乘单元。进一步地,所述转置及旋转因子相乘单元包括依次连接的转置单元、第二随机存储器和旋转因子相乘单元,所述转置单元读取所述第一随机存储器中所述基16运算单元计算得到的矩阵,完成矩阵的转置并存入第二随机存储器,所述旋转因子相乘单元从所述第二随机存储器读取矩阵的转置,并将其与旋转因子点乘,所述地址生成单元将存储地址发送给所述旋转因子相乘单元,所述旋转因子相乘单元将点乘结果存入所述主存的存储地址。进一步地,所述转置及旋转因子相乘单元包括依次连接的旋转因子相乘单元、第二随机存储器和转置单元,所述旋转因子相乘单元读取所述第一随机存储器中所述基16运算单元计算得到的矩阵,并将其与旋转因子点乘,点乘结果存入所述第二随机存储器,所述转置单元从所述第二随机存储器读取点乘结果完成矩阵的转置,所述地址生成单元将存储地址发送给所述转置单元,所述转置单元将转置结果存入所述主存的存储地址。进一步地,所述第一随机存储器包括两组存储器,所述两组存储器做乒乓操作。进一步地,所述主存为65536点主存,所述第一随机存储器为16×16点存储器,所述第二随机存储器为16×16点存储器。本专利技术所提供的技术方案的优点在于,本专利技术实现了786432bits的数论变换,使用单一的基16运算单元,运算单元的运算利用率高,节省电路逻辑资源;在主存进行存储操作时使用了原位存储,整个电路始终只需要与原始数据相同点数的主存,节省了电路存储资源。附图说明图1为用于大数乘法的数论变换电路结构示意图。图2为用于大数乘法的数论变换电路第一优选实施例结构示意图。图3为用于大数乘法的数论变换电路第二优选实施例结构示意图。具体实施方法下面结合实施例对本专利技术作进一步说明,但不作为对本专利技术的限定。786432=3×216bit的乘法强度足够满足当前互联网环境的加密要求。采用数论变换计算786432bits的乘法,将3×216bit的数,以12bit为一个单位切成65536段,这样一个786432bits的数就可以用65536阶的多项式表达。在做数论变换时,需要65536点的变换,每个点的输入数据宽度是12bit。N点数论变换的计算式为其中,0≤k≤N-1,WN是第N个单位根。应用N=65536将n和k的索引重新写为k=4096k1+256k2+16k3+k4由于单位根的特性,其中m是正整数。将上面的公式代入数论变换的计算式,可以得到65536点的数量变换计算为:本专利技术实施例涉及一种用于大数乘法的数论变换电路,实现以上的数论变换计算式。请结合图1所示,该数论变换电路包括主控单元1、主存2、基16运算单元3、地址生成单元4、转置及旋转因子相乘单元5、第一随机存储器6和旋转因子只读存储器7。主控单元1负责将变换前的数据按照顺序存入主存2,控制数论变换开始,以及按照顺序将变换后的数据从主存2中读取并输出。主存2的存储容量是65536点,存储数论变换前的数据或者变换中的中间数据或者变换后的结果数据。基16运算单元3根据地址生成单元4发送的取数地址从主存2中取数,实现16点的数论变换,即并将结果存入第一随机存储器6,是数论变换的运算核心。在素数p的选择上,通常选择Solinas素数p=264-232+1。因为该素数支持高效的取模操作,如2192modp=1,296modp=-1,264modp=232-1。利用该素数计算得到的单位根W16=212是2的幂次方,因此可以通过做移位和模加操作实现数论转换,本文档来自技高网...
【技术保护点】
1.一种用于大数乘法的数论变换电路,其特征在于,包括:/n主控单元,接收变换前数据并存储入主存,向地址生成单元发送数论变换开始信号;/n主存,存储数论变换前的数据或者变换中的中间数据或者变换后的结果数据;/n基16运算单元,根据地址生成单元发送的取数地址从所述主存中取数,实现16点的数论变换并存入第一随机存储器;/n地址生成单元,接收数论变换开始信号生成取数地址发送给所述基16运算单元,将所述取数地址作为存储地址发送给转置及旋转因子相乘单元,生成旋转因子只读存储器地址发送给旋转因子只读存储器;/n转置及旋转因子相乘单元,读取第一随机存储器中所述基16运算单元计算得到的矩阵,完成矩阵的转置,以及矩阵和旋转因子的点乘并根据存储地址将结果存入所述主存;/n第一随机存储器,存储所述基16运算单元计算得到的矩阵;/n和旋转因子只读存储器,由所述旋转因子只读存储器地址读取旋转因子发送给所述转置及旋转因子相乘单元。/n
【技术特征摘要】
1.一种用于大数乘法的数论变换电路,其特征在于,包括:
主控单元,接收变换前数据并存储入主存,向地址生成单元发送数论变换开始信号;
主存,存储数论变换前的数据或者变换中的中间数据或者变换后的结果数据;
基16运算单元,根据地址生成单元发送的取数地址从所述主存中取数,实现16点的数论变换并存入第一随机存储器;
地址生成单元,接收数论变换开始信号生成取数地址发送给所述基16运算单元,将所述取数地址作为存储地址发送给转置及旋转因子相乘单元,生成旋转因子只读存储器地址发送给旋转因子只读存储器;
转置及旋转因子相乘单元,读取第一随机存储器中所述基16运算单元计算得到的矩阵,完成矩阵的转置,以及矩阵和旋转因子的点乘并根据存储地址将结果存入所述主存;
第一随机存储器,存储所述基16运算单元计算得到的矩阵;
和旋转因子只读存储器,由所述旋转因子只读存储器地址读取旋转因子发送给所述转置及旋转因子相乘单元。
2.根据权利要求1所述的用于大数乘法的数论变换电路,其特征在于,所述转置及旋转因子相乘单元包括依次连接的转置单元、第二随机存储器和旋转因子相乘单元,所述转置单元读取所述第一随机存储器中所述基16运算单元计算得到的矩阵,完成矩阵的转置并存入第二随机存储器,所述旋转因子相乘单元从所述第二随机存储器读取矩阵的...
【专利技术属性】
技术研发人员:华斯亮,张猛蛟,徐健,卞九辉,张静亚,洪学鹍,张慧国,刘玉声,
申请(专利权)人:常熟理工学院,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。