[发明专利]基于FPGA的高基模乘器无效
申请号: | 201310696478.8 | 申请日: | 2013-12-18 |
公开(公告)号: | CN103645883A | 公开(公告)日: | 2014-03-19 |
发明(设计)人: | 吴汶泰 | 申请(专利权)人: | 四川卫士通信息安全平台技术有限公司 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 成都金英专利代理事务所 51218 | 代理人: | 袁英 |
地址: | 610000 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 fpga 高基模乘器 | ||
技术领域
本发明涉及通信、电子信息安全领域加解密算法中的功能部件,特别是涉及一种基于FPGA的高基模乘器。
背景技术
在大多数非对称加密算法中,大数模乘是最基本的运算,例如RSA(公钥加密算法)利用多次大数模乘运算实现大数的模幂运算,又如ECC(椭圆曲线加密算法)利用多次大数模乘运算实现点加、倍点等运算。大数模乘运算在RSA中占算法开销90%以上,在ECC中则占75%以上,可见模乘器的性能高低直接决定算法性能。随着电子信息近20年来的飞速发展,512位密钥长度的RSA加密算法安全性早已受到威胁,在高安全性的应用中必须将密钥长度增加到2048位;而高安全性的ECC加密算法则要求模长至少为256位。这些都对模乘器性能提出了更高的要求。
由于大整数模乘运算中运算量很大,1985 年Montgomery 提出了一种计算模乘的有效算法,其设计思想是借助一个特殊的剩余项,将普通模乘转换为易于计算的特殊模乘,即通过乘法和加法完成的模乘运算。模乘运算的首要原则就是要避免直接计算A*B。
现有的硬件蒙哥马利模乘器性能/资源消耗比较小,不利于构建蒙哥马利模乘器集群;现有的基于流水线的蒙哥马利模乘器大多采用较小的基进行运算,运算效率有限。
发明内容
本发明的目的在于克服现有技术的不足,提供一种实现高基、高流水度的基于FPGA的高基模乘器,它根据基的不同,可以通过具体的硬件资源实现高性能、高资源比的模乘运算,也有利于构建大规模的模乘器集群。
本发明的目的是通过以下技术方案来实现的:基于FPGA的高基模乘器,用于计算大数模乘式A*B %N,其中A≥0,B<N,A、B和N均为二进制无符号大数,它包括MMM_CONTROL模块、第一乘法器、第一加法器、第二乘法器、第二加法器、Cbuf update模块和DATA_OUT模块,数据输入MMM_CONTROL模块中,MMM_CONTROL模块的输出端分别与第一乘法器、第二乘法器和Cbuf update模块相连,MMM_CONTROL模块用于对输入的数据进行管理,并控制数据的模乘过程,第一乘法器用于完成Bi*Aj的运算,第一乘法器的输出端通过第一加法器与Cbuf update模块相连,第一加法器用于完成Bi*Aj与进位Carry的和运算,Cbuf update模块用于存储、更新运算结果,并控制每一次循环运算,Cbuf update模块通过第二乘法器与第二加法器相连,第二乘法器用于完成q*Nj的运算,第二加法器用于完成q*Nj与进位Carry的和运算,第二加法器的输出与Cbuf update模块相连,更新Cbuf update模块中的数据,Cbuf update模块在每一次更新后读入一个新的Bi数据送给第一乘法器,在第一乘法器中进行Bi*Aj的运算,DATA_OUT模块的输入端与Cbuf update模块的数据输出端相连,接收并处理Cbuf update模块输出的数据,产生最终结果。
所述的MMM_CONTROL模块包括DATA_IN子模块、Init子模块、Counter control子模块、A_BUF子模块和N_BUF子模块,数据A、B、N、n0通过DATA_IN子模块输入,Init子模块用于完成计数器的初始化,以及对Cbuf全部清零的命令,Counter control子模块用于控制模乘运算的启动或停止,A_BUF子模块用于存储数据A,N_BUF子模块用于存储数据N。
所述的DATA_OUT模块包括Cbuf-N子模块和比较模块,Cbuf-N子模块用于接收Cbuf update模块输出的Cbuf数据、进位Carry数据和N数据,对Cbuf数据和N数据进行借位减法操作,并在完成循环借位减法操作后产生借位数据C,比较模块用于判断进位Carry数据与借位数据C的关系,并产生最终结果。
所述的比较模块产生最终结果具体包括:①若进位Carry==1,则直接输出Cbuf数据和N数据进行借位减法所产生的结果;②若进位Carry==0且借位数据C==0,则直接输出Cbuf数据和N数据进行借位减法所产生的结果;③进位Carry==0且借位数据C==1,则直接输出Cbuf数据。
在计算大数模乘式A*B %N时,将求A*B %N转换为C'=(C'+A*B+q*N)/r,并将C'=(C'+A*B+q*N)/r分解为以下三个式子进行计算:
(1)C'=C'+A*B;
(2)C'=C'+q*N;
(3)C'= C'/r,其中q=(C'[0]+A*B[0])*m %r,r为任何值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川卫士通信息安全平台技术有限公司,未经四川卫士通信息安全平台技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310696478.8/2.html,转载请声明来源钻瓜专利网。