优化的蒙哥马利模乘方法、模平方方法和模乘硬件技术

技术编号:9990833 阅读:210 留言:0更新日期:2014-05-02 03:55
本发明专利技术公开了一种优化的蒙哥马利模乘方法、模平方方法和模乘硬件,在原始FIOS(Finely?integrated?operand?scanning)算法基础上进行了优化,模乘硬件主要包括3个单端口SRAM和一个双端口SRAM,一个32位乘法器,一个34位加法器,一个4-2压缩器,一个64位寄存器以及6个32位寄存器。本发明专利技术采用两级并行流水线的高基模乘器,第一级32位乘法器完成AB操作,第二级加法器完成T+AB+C运算,实现32-2048位的模乘运算,不仅减少了芯片的面积,也提高了模乘运算性能。

【技术实现步骤摘要】
优化的蒙哥马利模乘硬件
本专利技术涉及公钥密码技术,具体涉及一种优化的蒙哥马利模乘方法、模平方方法和模乘硬件
技术介绍
随着信息技术的发展与应用,网上交易如网上银行、电子商务和电子政务也变得越来越普遍,其安全问题也越来越受到人们的重视。为了提高网上交易的安全性,传统的分组密码算法逐渐被公钥密码算法替代。公钥密码算法的优点是安全性高,缺点是加密速度比分组密码慢很多,所以人们一直在研究如何提升公钥密码算法的运算速度。目前,公钥密码算法主要有两种,一种是RSA,另外一种就是椭圆曲线密码ECC(EllipticCurveCryptography)。上述两种公钥密码算法都需要使用模乘计算(A*BmodN)。实现模乘算法的方法有很多种,其中蒙哥马利算法是使用最广泛的方法。在1996年,Koc总结了蒙哥马利算法的五种实现方法,分别为SOS(Separatedoperandscanning),CIOS(Coarselyintegratedoperandscanning),FIOS(Finelyintegratedoperandscanning),FIPS(Finelyintegratedproductscanning),CIHS(Coarselyintegratedhybridscanning)。其中FIOS易于硬件实现而得到广泛应用。原始FIOS算法描述目前,大多数的模乘器都是基于蒙哥马利算法及其变形算法设计的,没有很好的考虑性能与面积的平衡,要么性能很好,但是面积很大,要么相反。
技术实现思路
基于上述问题,本专利技术提供一种优化的蒙哥马利模乘方法、模平方方法和模乘硬件,在减少面积的同时又提高了模乘的性能,。为实现上述目的,本专利技术的技术解决方案如下:一种优化的蒙哥马利模乘方法,其特点在于,乘数A、乘数B和模数N都是n位的二进制数,w为每次处理的字长,s为模数N的字长个数,n0为w位的常数,中间变量m、中间变量S均为w位的二进制数,中间变量C为(w+1)位的二进制数,最终结果T为n位的二进制数,i、j为循环变量,运算前,标量C、S、T均赋值0,该方法包括以下步骤:步骤1、令i为0开始外循环;步骤2、将A的第0个字与B的第0个字相乘,乘积结果再与T的第0个字相加,将相加结果的低w位赋给S,高(w+1)位赋给C;步骤3、将S与n0相乘后,取低w位赋给m;步骤4、将m与N的第0个字相乘,乘积结果与(C,S)组成的(2w+1)位二进制数相加后,低w位赋给S,高(w+1)位赋给C;步骤5、令j为1开始内循环;步骤6、将m与N的第j个字相乘,乘积结果与C的第j个字相加后,再与T的第j个字相加,相加结果的低w位赋给S,高(w+1)位赋给C;步骤7、将A的第j个字与B的第j个字相乘,乘积结果与(C,S)组成的(2w+1)位二进制数相加,相加结果的低w位赋给S,高(w+1)位赋给C,并将S赋给T的第(j-1)个字,循环变量j加1,重复内循环直至j等于(s-1),退出内循环;步骤8、将T的第s个字与C进行相加,相加结果的低w位赋给S,高(w+1)位赋给C;步骤9、将s赋给T的第(s-1)个字,将C的低w位赋给T的第s个字,循环变量i加1,重复内循环直至i等于(s-1),退出外循环;步骤10、如果T>N,则将T减N之后再赋值给T。一种优化的蒙哥马利模平方方法,其特点在于,乘数A、乘数B和模数N都是n位的二进制数,w为每次处理的字长,s为模数N的字长个数,n0为w位的常数,中间变量m、中间变量S为w位的二进制数,中间变量C为(w+1)位的二进制数,最终结果T为n位的二进制数,i、j为循环变量,运算前,标量C、S、T均赋值0,该方法包括如下步骤:步骤1、令i为0开始外循环;步骤2、将A的第0个字与B的第0个字相乘,乘积结果再与T的第0个字相加,将相加结果的低w位赋给S,高(w+1)位赋给C;步骤3、将S与n0相乘后,取低w位赋给m;步骤4、将m与N的第0个字相乘,乘积结果与(C,S)组成的(2w+1)位二进制数相加后,低w位赋给S,高(w+1)位赋给C;步骤5、令j为1开始内循环;步骤6、将m与N的第j个字相乘,乘积结果与C的第j个字相加,再与T的第j个字相加,相加结果的低w位赋给S,高(w+1)位赋给C;步骤7、如果i等于0或者i等于j,则将A的第j个字与B的第j个字相乘,乘积结果与(C,S)组成的(2w+1)位二进制数相加,相加结果的低w位赋给S,高(w+1)位赋给C;如果i小于j,则将A的第j个字与B的第j个字相乘,乘积结果的2倍再与(C,S)组成的(2w+1)位二进制数相加,相加结果的低w位赋给S,高(w+1)位赋给C,接下来将S赋给T的第(j-1)个字;循环变量j加1,重复内循环直至j等于(s-1),退出内循环;步骤8、将T的第s个字与C进行相加,相加结果的低w位赋给S,高(w+1)位赋给C;步骤9、将s赋给T的第(s-1)个字,将C的低w位赋给T的第s个字,循环变量i加1,重复内循环直至i等于(s-1),退出外循环;步骤10、如果T>N,则将T减N之后再赋值给T。本专利技术另一方面的目的在于一种优化的蒙哥马利模乘硬件,包括第一单端口SRAM、第二单端口SRAM、第三单端口SRAM、双端口SRAM、第一至第五32位寄存器、3位寄存器、32位乘法器、34位加法器、4-2压缩器和64位寄存器;所述的第一单端口SRAM用来存放乘数A,所述的第二单端口SRAM用来存放乘数B,所述的第三单端口SRAM用来存放模数N,所述的双端口SRAM用来存放结果T;所述的第一32位寄存器、第二32位寄存器用来存储需要运算的乘数和被乘数,该第一32寄存器的数据源在控制电路的控制下来分别来自第一单端口SRAM、第三32位寄存器和是第四32位寄存器,该第二32寄存器的数据源在控制电路的控制分别来自第二单端口SRAM和第三单端口SRAM;所述的32位乘法器用来对所述的第一32位寄存器和第二32位寄存器的输入进行乘法处理,并将处理结果存储在64位寄存器。所述的第三32位寄存器存储中间结果m,在控制电路的控制下所述的64位寄存器的低32位数据存入该第三32位寄存器中;所述的4-2压缩器用来处理在控制电路的控制下选择的4个输入数据,并将处理得到的两个34位数据结果经所述的34位加法器进行加法处理,将低32位存储在所述的第五32位寄存器中、高3位存储在所述的3位寄存器中,并在控制电路下将该第五32位寄存器中的数据分别写入所述的双端口SRAM和所述的第四32位寄存器。所述的4个输入数据是:所述的64位寄存器的低32位、上一个时钟所述的64位寄存器的高32位、上一个时钟写入所述的双端口SRAM的结果T和所述的3位寄存器,或者是所述的64位寄存器的低32位、上一个时钟所述的64位寄存器的高32位、所述的第四32位寄存器和3位寄存器。所述的4-2压缩器的具体操作步骤如下,其操作数都是32位二进制数:步骤1、步骤2、步骤3、C=(TEMP&Co)|(TEMP)|(I0&I1|I2&I3);步骤4、Co=(I0|I1)&(I2|I3);其中I0,I1,I2,I3分别是所述的4-2压缩器的4个输入数据,SUM和C是所述的4-2压缩器的两个输本文档来自技高网...
优化的蒙哥马利模乘方法、模平方方法和模乘硬件

【技术保护点】

【技术特征摘要】
1.一种优化的蒙哥马利模乘装置,其特征在于,包括第一单端口SRAM(1)、第二单端口SRAM(2)、第三单端口SRAM(3)、双端口SRAM(4)、第一至第五32位寄存器(5、6、7、8、9)、3位寄存器(10)、32位乘法器(11)、34位加法器(12)、4-2压缩器(13)和64位寄存器(14);所述的第一单端口SRAM(1)用来存放乘数A,所述的第二单端口SRAM(2)用来存放乘数B,所述的第三单端口SRAM(3)用来存放模数N,所述的双端口SRAM(4)用来存放结果T;所述的第一32位寄存器(5)、第二32位寄存器(6)用来存储需要运算的乘数和被乘数,该第一32位寄存器(5)的数据源在控制电路的控制下分别来自第一单端口SRAM(1)、第三32位寄存器(7)和第四32位寄存器(8),该第二32位寄存器(6)的数据源在控制电路的控制下分别来自第二单端口SRAM(2)和第三单端口SRAM(3);所述的32位乘法器(11)用来对所述的第一32位寄存器(5)和第二32位寄存器(6)的输入进行乘法处理,并将处理结果存储在64...

【专利技术属性】
技术研发人员:刘红明周玉洁朱念好
申请(专利权)人:上海交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1