CN104598199A - 一种用于智能卡的Montgomery模乘器的数据处理方法及系统 - Google Patents

一种用于智能卡的Montgomery模乘器的数据处理方法及系统 Download PDF

Info

Publication number
CN104598199A
CN104598199A CN201510006990.4A CN201510006990A CN104598199A CN 104598199 A CN104598199 A CN 104598199A CN 201510006990 A CN201510006990 A CN 201510006990A CN 104598199 A CN104598199 A CN 104598199A
Authority
CN
China
Prior art keywords
low
result
stored
stores
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.)
Granted
Application number
CN201510006990.4A
Other languages
English (en)
Other versions
CN104598199B (zh
Inventor
龚宗跃
王振
顾申
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Microelectronics Technology Co Ltd
Original Assignee
Datang Microelectronics Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Datang Microelectronics Technology Co Ltd filed Critical Datang Microelectronics Technology Co Ltd
Priority to CN201510006990.4A priority Critical patent/CN104598199B/zh
Publication of CN104598199A publication Critical patent/CN104598199A/zh
Application granted granted Critical
Publication of CN104598199B publication Critical patent/CN104598199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种用于智能卡的Montgomery模乘器的数据处理方法及系统,包括:通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果;通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。通过本发明的方案,能够在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高。

Description

一种用于智能卡的Montgomery模乘器的数据处理方法及系统
技术领域
本发明涉及公钥密码学领域,尤其涉及一种用于智能卡的Montgomery模乘器的数据处理方法及系统。
背景技术
W.Diffie和M.Hellman于1976年提出了公钥密码学。模乘算法是公钥密码体制的核心,广泛应用于RSA,Diffie-Hellman,ElGamal和ECC等公钥算法当中。P.L.Montgomery在1985年提出了Montgomery模乘算法,利用移位代替了传统模乘算法中的除法运算,十分适合于硬件实现。
Montgomery算法计算a·b·r-1mod n的值,其中a,b<n并且gcd(n,r)=1。在公钥密码体系中,n通常为素数,为了保证r和n互素,一般取r为2的整数次幂。例如,n为一个k-bit的整数,即2k-1≤n<2k,则r=2k。Montgomery算法的计算过程如下:
函数MonPro(a,b)
输入:a、b、n
输出:a·b·r-1mod n
1.t=a·b
2.u=(t+(t·n’mod r)·n)/r
3.如果u≥n,返回u–n;否则返回u
其中n’需要满足r·r-1-n·n’=1。整数r-1和n’都可以用扩展欧几里得算法计算得出。从算法中可以看出,Montgomery模乘使用移位替代了除法,大大提高了算法的执行速度。
Montgomery算法的计算结果是a·b·r-1mod n,因此如果要计算a·b mod n,需要将a,b都变换到Montgomery域中进行计算,即
1.a1=a·r mod n,b1=b·r mod n
2.c1=MonPro(a1,b1)=a·r·b·r·r-1mod n=a·b·r mod n
3.c=MonPro(c1,1)=a·b·r·1·r-1mod n=a·b mod n
从上述计算过程中可以看出,Montgomery算法对于计算一次a·b mod n,并不占有优势。但是进行多次模乘运算时(例如模幂运算),将数据变换到Montgomery域中进行计算,算法运行的速度会大大提高。
Montgomery算法有多种硬件实现方式。等人在“Analyzing andComparing Montgomery Multiplication Algorithm”中归纳了5种Montgomery算法的实现方式(SOS,CIOS,FIOS,FIPS,CIHS),给出了每种算法所需要的乘法、加法次数,存储器读写次数,以及所需的存储器空间等。C.Mclvor在“Modified Montgomery Modular Multiplication and RSA ExponentiationTechniques”中提出了基-2的Montgomery硬件实现方法。浙江大学薛念等人实现了基-4的Montgomery模乘器的设计。S.Kawamura等人提出了基于剩余数系统(RNS)Montgomery算法,具有较快的速度。A.F.Tenca等人提出了一种基于流水线的可配置Montgomery算法硬件实现,提高了算法的应用范围和灵活性。Miaoqing Huang等对Tenca的算法硬件实现进行了改进,提高了算法的速度。此外,还有一些基于脉动阵列结构的Montgomery模乘器设计。
这些方法分别应用在不同场合。例如,基于RNS算法的Montgomery模乘器适用于对速度要求较高的情况;Tenca等提出的方法适用于数据长度可变的情况。但这些算法都需要较大的存储器单元来保存中间数据,并且控制逻辑复杂,否则无法达到预期的速度性能要求。像智能卡这中对资源要求较高的产品,一般使用Koc等人总结的方法设计Montgomery模乘器。其中FIPS方法由于使用乘加结构,适合于硬件实现,因此应用较为广泛。FIPS算法由两个大循环和一个减法循环组成,通过积扫描方式计算a·b和m·n的乘积,以及它们的和。每次内循环结束之后执行一次写memory操作,最终结果保存在m或u之中。
目前,在智能卡产品中基于FIPS方法的Montgomery模乘器,由于从RAM读取数据效率较低,需要使用两个时钟周期才能获得进行乘法运算的两个乘数。算法循环中每次进行乘法运算之前都需要额外的时钟周期来读取每次进行乘法运算的乘数,限制了模乘器的性能。
清华大学李树国等人在专利“VLSI用的蒙格玛丽模乘算法及智能卡模乘器的VLSI结构”中基于FIPS算法设计了一种高效Montgomery模乘器。该设计采用两个32位宽的乘法器和三级并行流水线结构能够在1216个时钟周期内完成一次1024位的模乘运算。但该实现中,两个32位宽的乘法器并行执行需要一个时钟周期内读出至少4个输入数据,因此要求4个位宽为32位的存储器或一个位宽为128位的存储器;并且两个乘法器并行运算虽然减少了模乘的时钟数,但增加了芯片的面积和功耗,不适合像智能卡这种对硬件资源和功耗要求比较高的场合。
Shigeo Ohyama在“Arithmetic Circuit for Montgomery Multiplication andEncryption Circuit”中采用CIOS方法实现Montgomery算法。该设计采用2块单端口RAM(Random Access Memory)和一个高基乘法器,但其实现速度仅与普通的FIPS算法相同,因此并不具有竞争力。
发明内容
为了解决上述问题,本发明提出了一种用于智能卡的Montgomery模乘器的数据处理方法及系统,能够在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高。
为了达到上述目的,本发明提出了一种用于智能卡的Montgomery模乘器的数据处理方法,该方法包括:
通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。
通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整。
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1。
所述w为64位。
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
优选地,采用32x32位的乘法器计算出axb的w位结果包括以下四个步骤:
21、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储w位数据的高32位,t0存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t1,t0中;相加结果的进位存储在进位保存寄存器C0中。
22、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t2、t1中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储w位数据的高32位,t1存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t2、t1中;相加结果的进位存储在进位保存寄存器C1中。
23、a[2j]*b[2(i-j)+1]的过程与步骤22相同。
24、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储w位数据的高32位,t2存储w位数据的低32位;将第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将第二相加结果的高32位与低32位分别存储在中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中;其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1。
MOH、MOL、t3、t2、t1、t0是6个w/2位的所述中间结果寄存器,C2、C1分别为不小于log2(3s)、log2(4s)位的进位保存寄存器,C0为1位的进位保存寄存器,中间结果寄存器与进位保存寄存器的初始值均为0。
在获得Montgomery模乘器的运算结果的高位2s个字的运算过程中,i的取值范围为:0到s-1;j的取值范围为:i+1到s-1。
优选地,该方法还包括:低位计算模块每次需要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;低位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储所述高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位。
优选地,该方法还包括:高位计算模块每执行一次运算,将第二计算模块产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储运算结果的高32位,m[2i]存储运算结果的低32位;高位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储w位数据的高32位,n[2i]存储w位数据的低32位;将相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中,相减的结果的借位存储在借位寄存器B中。
优选地,通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位。
在第一个时钟周期内,数据a的低w/2位与数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位。
在第二个时钟周期内,数据a的高w/2位与数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位。
在第三个时钟周期内,数据a的低w/2位与数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的数据n的低w/2位。
在第四个时钟周期内,数据a的高w/2位与数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的数据m的高w/2位。
将第一乘法结果、第二乘法结果、第三乘法结果以及第四乘法结果相加获得2w位的最终乘法结果。
优选地,该方法还包括:采用两级流水线硬件结构,并行执行乘法运算和加法运算。
本发明还提出一种用于智能卡的Montgomery模乘器的数据处理系统,该系统包括:低位计算模块和高位计算模块。
低位计算模块,用于通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字。
高位计算模块,用于通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字。
低位计算模块包括第一算法模块,用于采用32x32位的乘法器分别计算出axb和mxn的w位结果。
高位计算模块包括第二算法模块,用于执行与所述第一计算模块相同的运算过程。
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整。
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1。
所述w为64位。
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
优选地,第一计算模块通过以下步骤实现采用32x32位的乘法器计算出axb的w位结果,mxn与axb的计算方法相同:
81、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储w位数据的高32位,t0存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t1、t0中;相加结果的进位存储在进位保存寄存器C0中。
82、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t2、t1中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储w位数据的高32位,t1存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t2、t1中;相加结果的进位存储在进位保存寄存器C1中。
83、a[2j]*b[2(i-j)+1]的过程与步骤82相同。
84、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储w位数据的高32位,t2存储w位数据的低32位;将第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将第二相加结果的高32位与低32位分别存储在中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中。
其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1。
MOH、MOL、t3、t2、t1、t0是6个w/2位的中间结果寄存器,C2、C1分别为不小于log2(3s)、log2(4s)位的所述进位保存寄存器,C0为1位的进位保存寄存器,中间结果寄存器与进位保存寄存器的初始值均为0。
其中,第二计算模块在获得Montgomery模乘器的运算结果的高位2s个字的运算过程中,i的取值范围为:0到s-1;j的取值范围为:i+1到s-1。
优选地,低位计算模块还用于:每次都要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;低位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储所述高w位中的高32位,t2存储所述高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位。
优选地,高位计算模块还用于,每执行一次运算,将第二计算模块产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储运算结果的高32位,m[2i]存储运算结果的低32位;高位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储w位数据的高32位,n[2i]存储w位数据的低32位;将相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中;相减的结果的借位存储在借位寄存器B中。
优选地,第一计算模块通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位。
在第一个时钟周期内,数据a的低w/2位与数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位。
在第二个时钟周期内,数据a的高w/2位与数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位。
在第三个时钟周期内,数据a的低w/2位与数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的数据n的低w/2位。
在第四个时钟周期内,数据a的高w/2位与数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的所述数据m的高w/2位。
将第一乘法结果、第二乘法结果、第三乘法结果以及第四乘法结果相加获得2w位的最终乘法结果。
优选地,该系统还包括结构配置模块:采用两级流水线硬件结构,并行执行乘法运算和加法运算。
与现有技术相比,本发明包括:通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果;通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。通过本发明的方案,能够在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为本发明的用于智能卡的Montgomery模乘器的数据处理方法流程图;
图2为本发明的用于智能卡的Montgomery模乘器的数据处理系统框图;
图3为本发明的32×32位乘法器四个周期计算64x64位乘法示意图;
图4为本发明的两级流水线硬件结构并行执行乘法运算和加法运算示意图;
图5为本发明的用于智能卡的Montgomery模乘器的数据处理系统硬件工作示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。
模乘器是公钥密码算法(RSA,ECC等)的核心部件,其性能直接影响算法的执行效率。Montgomery模乘算法利用移位替代传统模乘算法中的除法运算,提高了算法执行速度,并且十分适合硬件实现。本发明主要解决的问题是通过对FIPS(Finely Integrated Product Scanning)算法进行改进,在硬件实现过程中消除访问RAM的影响。
本发明采用FIPS算法实现Montgomery模乘器。由于智能卡硬件资源有限,并且双端口存储器面积大于同等容量的单端口存储器,因此本发明基于单端口存储器进行设计。FIPS算法提高速度的瓶颈在于从RAM读取数据效率较低,需要使用两个时钟周期才能获得进行乘法运算的两个乘数,因此提高算法速度的关键在于消除访问RAM的影响,并且提高时钟频率。本发明通过对FIPS算法进行改进,消除了访问RAM的影响。采用32x32位乘法器在四个时钟周期内实现64x64位的数据乘法,在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高;采用流水线设计,并行执行乘法运算和加法运算,减小了关键路径延迟,提高了算法执行的时钟频率,使其在某些高频率场合下进一步提高算法执行速度。
具体地,本发明提出了一种用于智能卡的Montgomery模乘器的数据处理方法,该方法包括:
S101、通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。
S102、通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果。
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整。
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1。
所述w为64位。
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
优选地,采用32x32位的乘法器计算出axb的w位结果包括以下四个步骤:
21、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储w位数据的高32位,t0存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t1、t0中;相加结果的进位存储在进位保存寄存器C0中。
22、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t2、t1中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储w位数据的高32位,t1存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t2、t1中;相加结果的进位存储在进位保存寄存器C1中。
23、a[2j]*b[2(i-j)+1]的过程与步骤22相同。
24、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储w位数据的高32位,t2存储w位数据的低32位;将第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将第二相加结果的高32位与低32位分别存储在中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中。
其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1。
MOH、MOL、t3、t2、t1、t0是6个w/2位的中间结果寄存器,C2、C1分别为不小于log2(3s)、log2(4s)位的进位保存寄存器,C0为1位的进位保存寄存器,中间结果寄存器与进位保存寄存器的初始值均为0。
其中,在获得Montgomery模乘器的运算结果的高位2s个字的运算过程中,i的取值范围为:0到s-1;j的取值范围为:i+1到s-1。
优选地,该方法还包括:低位计算模块每次需要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;低位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储所述低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位。
优选地,该方法还包括:高位计算模块每执行一次运算,将第二计算模块产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储运算结果的高32位,m[2i]存储运算结果的低32位;高位计算模块每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储所述高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储w位数据的高32位,n[2i]存储w位数据的低32位;将相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中,相减的结果的借位存储在借位寄存器B中。
优选地,通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位。
在第一个时钟周期内,数据a的低w/2位与数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位。
在第二个时钟周期内,数据a的高w/2位与数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位。
在第三个时钟周期内,数据a的低w/2位与数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的数据n的低w/2位。
在第四个时钟周期内,数据a的高w/2位与数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的数据m的高w/2位。
将第一乘法结果、第二乘法结果、第三乘法结果以及第四乘法结果相加获得2w位的最终乘法结果。
优选地,该方法还包括:采用两级流水线硬件结构,并行执行乘法运算和加法运算。
本发明还提出一种用于智能卡的Montgomery模乘器的数据处理系统01,该系统包括:低位计算模块02和高位计算模块03。
低位计算模块02,用于通过4s2+7s次乘法运算获得所述Montgomery模乘器的运算结果的低位2s个字。
高位计算模块03,用于通过4s2-4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字。
低位计算模块02包括第一算法模块04,用于采用32x32位的乘法器分别计算出axb和mxn的w位结果。
高位计算模块03包括第二算法模块05,用于执行与第一计算模块04相同的运算过程。
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整。
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1。
所述w为64位。
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
优选地,第一计算模块04通过以下步骤实现采用32x32位的乘法器计算出axb的w位结果,mxn与axb的计算方法相同:
81、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储w位数据的高32位,t0存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t1、t0中;相加结果的进位存储在进位保存寄存器C0中。
82、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t2、t1中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储w位数据的高32位,t1存储w位数据的低32位;将相加结果的高32位与低32位分别存储在中间结果寄存器t2、t1中;相加结果的进位存储在进位保存寄存器C1中。
83、a[2j]*b[2(i-j)+1]的过程与步骤82相同。
84、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在中间结果寄存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储w位数据的高32位,t2存储w位数据的低32位;将第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将第二相加结果的高32位与低32位分别存储在中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中。
其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1。
MOH、MOL、t3、t2、t1、t0是6个w/2位的中间结果寄存器,C2、C1分别为不小于log2(3s)、log2(4s)位的进位保存寄存器,C0为1位的进位保存寄存器,中间结果寄存器与进位保存寄存器的初始值均为0。
其中,第二计算模块05在获得Montgomery模乘器的运算结果的高位2s个字的运算过程中,i的取值范围为:0到s-1;j的取值范围为:i+1到s-1。
优选地,低位计算模块02还用于:每次都要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;低位计算模块02每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位。
优选地,高位计算模块03还用于,每执行一次运算,将第二计算模块05产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储运算结果的高32位,m[2i]存储运算结果的低32位;高位计算模块03每执行一次运算,运算结果的高w位存储在中间结果寄存器t3、t2中,其中,t3存储高w位中的高32位,t2存储高w位中的低32位;运算结果的低w位存储在中间结果寄存器t1、t0中,其中,t1存储低w位中的高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且将运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储w位数据的高32位,n[2i]存储w位数据的低32位;将相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中;相减的结果的借位存储在借位寄存器B中。
优选地,第一计算模块04通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位。
在第一个时钟周期内,数据a的低w/2位与数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位。
在第二个时钟周期内,数据a的高w/2位与数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位。
在第三个时钟周期内,数据a的低w/2位与数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的所述数据n的低w/2位。
在第四个时钟周期内,数据a的高w/2位与数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的数据m的高w/2位。
将第一乘法结果、第二乘法结果、第三乘法结果以及第四乘法结果相加获得2w位的最终乘法结果。
优选地,该系统还包括结构配置模块06:用于采用两级流水线硬件结构,并行执行乘法运算和加法运算。
下面通过具体实施例对本发明的方案进一步说明。
公钥密码学中的模乘运算通常是大数运算,需要将大数分解成位宽一定的字,变换为“多精度”数。若双字的位宽为w,则大整数可以用基为W=2w的2s(s=n/64)个字表示,n是要运算的模数的长度。该改进算法的核心思想是采用32x32位乘法器在四个时钟周期内实现64x64位的数据乘法,利用流水线方式设计,并行执行乘法运算和加法运算,在硬件规模和功耗基本不变的情况下,提高算法执行速度。基于FIPS算法的改进算法描述如下:
a、b、n为2s位的232进制数;
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
MOH,MOL,t3,t2,t1,t0是6个w/2位的中间结果寄存器,C2,C1分别为不小于log2(3s),log2(4s)位的进位保存寄存器,C0为1位的进位保存寄存器,初始值均为0。
n0=-{n[1],n[0]}-1mod W,n0[1],n0[0]分别为n0的高w/2位和低w/2位。
该改进算法由两个大循环组成,每个大循环中嵌套一个内循环。第一个大循环用4s2+7s次乘法运算完成乘积结果的低位2s个字,第二个大循环用4s2-4s次乘法运算完成乘积结果的高位2s个字。第一个内循环中采用32x32位的乘法器分别计算出axb和mxn的w位结果,第一个内循环中axb和mxn计算方法相同,需要四步来实现:
第一步,将a[2j]*b[2(i-j)的结果低32位和高32位分别存在中间寄存器MOL和MOH中,同时中间寄存器{t1,t0}和{MOH,MOL}相加,结果保存在寄存器{C0,t1,t0}中。
第二步,将a[2j+1]*b[2(i-j)]的结果存在中间寄存器{MOH,MOL}中,同时寄存器{C1,t2,t1}和{MOH,MOL}相加,结果保存在寄存器{C1,t2,t1}中。
第三步,a[2j]*b[2(i-j)+1]的过程和第二步相同。
第四步,将a[2j+1]*b[2(i-j)+1]结果存在中间寄存器{MOH,MOL}中,同时寄存器{C2,t3,t2}、{MOH,MOL}、C0相加,结果保存在寄存器{C2,t3,t2}中。
内循环结束之后进入第一个大循环运算,在第一个大循环运算中每次需要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的{m[2i+1],m[2i]}位置。第一个大循环每执行一次,结果被保存在寄存器{C2,t3,t2,t1,t0}中,每执行一次大循环,运算结果右移w位。
当运算完成乘积结果的低位2s个字之后,进入第二个大循环。在第二个大循环中,内循环的运算过程和第一个内循环相同。第二个大循环每执行一次,将内循环产生w位的运算结果保存在数据m的{m[2i+1],m[2i]}存储位置。同时,将运算结果{C2,t3,t2,t1,t0}右移w位,并将{m[2i+1],m[2i]}和{n[2i+1],n[2i]}相减,结果保存在寄存器{B,b[2i+1],b[2i]}中。其中,B为借位寄存器。由上述改进算法可以看出,该算法将减法循环合并在第二个大循环中去运算,可以减少s个时钟周期。最终,通过B和t0进行判断计算结果保存在m或b之中。该算法采用乘加结构,每次内循环结束之后执行一次写存储器的操作。算法由两个大循环组成,第一个大循环中需要4s2+7s次乘法,第二个大循环中需要4s2-4s次乘法,两个循环共用8s2+3s次乘法。
FIPS算法速度的瓶颈在于从RAM读取数据效率较低,通过上述改进算法可以看出,该算法采用32x32位乘法器在四个时钟周期内实现64x64位的数据乘法。同时,本发明在硬件设计中采用流水线设计,并行执行乘法运算和加法运算,在乘法运算的同时从存储器中读取下次需要进行乘法的数据,完全可以消除访问RAM对性能的影响。
以下为本发明方案的具体实施程序:
图3所示为32×32位乘法器四个周期计算64x64位乘法示意图,首先从存储器中读取w位数据a的高w/2位(aH)和低w/2位(aL)以及w位数据b的低w/2位(bL)。第一个时钟周期a的低w/2位(aL)与b的低w/2位(bL)相乘,得到w位的部分乘法结果,同时读取b的高w/2(bH)或下次需要进行乘法的数据n的高w/2(nH);第二个时钟周期a的高w/2位(aH)与b的低w/2位(bL)相乘,得到w位的部分乘法结果,同时读取下次需要进行乘法数据m的低w/2(mL);第三个时钟周期a的低w/2位(aL)与b的高w/2位(bH)相乘,得到w位的部分乘法结果,同时读取下次需要进行乘法数据n的低w/2(nL);第四个时钟周期a的高w/2位(aH)与b的高w/2位(bH)相乘,得到w位的部分乘法结果,同时读取下次需要进行乘法数据m的高w/2(mH);将四部分乘法结果相加即可得到2w位的最终乘法结果。在乘法运算的同时从存储器中读取下次需要进行乘法的数据,该方法可以消除访问RAM的影响,从而提高算法执行速度。而且,乘法器面积和电路功耗基本不受影响。
从上述改进算法结构中可以看出,算法的核心是循环的乘加操作。为提高算法执行效率,硬件实现可以采用两级流水线结构,并行执行乘法运算和加法运算。如图4所示,循环开始,首先从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位(第1、2、3步);第4步执行乘法操作,即a与b的低w/2位相乘,同时读取数据b的高w/2位;第5步执行乘法操作和加法操作,即a高w/2位与b的低w/2位相乘,第4步的乘法结果与{t1,t0}相加,同时读取数据m的低w/2位;第6、7、8步同样执行乘法操作和加法操作,第6步中a的低w/2位与b的高w/2位相乘,第5步的乘法结果与{c1,t2,t1}相加,同时读取数据n的低w/2位;第7步中a的高w/2位与b的高w/2位相乘,第6步的乘法结果与{c1,t2,t1}相加,同时读取数据m的高w/2位;第8步中m的低w/2位与n的低w/2位相乘,第7步的乘法结果与{c2,t3,t2}和C0相加,同时读取数据n的高w/2位;之后跳转到步骤1继续执行,乘加操作与第5步执行方式相同,直到跳出内循环为止。图2中的虚线框表示在循环的第一轮不执行乘法或加法操作;图中c0为1位进位寄存器,c1,c2为两个进位累加寄存器,它们用来保存加法结果的进位值。c1,c2的位宽与循环执行的次数相关,由于内循环中乘法的次数不超过2s,并且每次内循环中分别有4次和3次的加法进位值需要c1和c2来寄存,因此c1,c2位宽分别选为log2(4s)和log2(3s);t3,t2,t1,t0是4个w/2位的中间结果寄存器,用来保存加法运算结果。乘法器(MULT)的输出结果位宽为w位,{c1,t2,t1}位宽为log2(4s·2w),因此加法器(ADD)的位宽选为log2(4s·2w)位;当内循环结束后,在外循环中需要将{c2,t3}和c1中保存的结果进行相加,右移w位后,作为新的t2,t1,t0参与下次循环运算。
图5为内循环乘加硬件结构示意图。如图所示,第一级流水线由一个32x32位乘法器,三个输入寄存器以及乘法结果保存寄存器{MOH,MOL}组成。输入端分别包含w位数据a的高w/2位aH和低w/2位aL,b的高w/2位bH和低w/2位bL,m的高w/2位mH和低w/2位mL,n的高w/2位nH和低w/2位nL。第二级流水线由一个log2(4s·2w)位和两个log2(3s·2w)位加法器,以及加法结果寄存器和加法进位寄存器组成;根据执行执行步骤,加法器选择不同的输入和结果保存寄存器。当内循环的乘法和加法执行结束之后,在外循环部分将{c2,t3}寄存器和c1寄存器中保存的结果相加。
由于硬件中仅有一个位宽为w/2的同步存储器,因此算法速度提高的瓶颈在于消除访问存储器的影响。算法中有4个数据a、b、m、n参加乘法运算,因此需要8个时钟周期才能读出w位的待运算数据。在第一个大循环中,共有s个外循环和(s2-s)/2次内循环,每个内循环需要8个时钟周期,每个外循环由于需要接续内循环未完成操作以及自身的乘加运算需要14个时钟,因此第一个大循环共需要4s2+10s个时钟周期;第二个大循环包含s个外循环和(s2-s)/2次内循环,每个内循环需要8个时钟周期,每个外循环由于需要接续内循环未完成操作以及减法操作需要6个时钟,因此第二个大循环共需要4s2+2s个时钟周期因此本发明执行所需时钟周期数约为8s2+12s个时钟周期。
本发明与现有技术相比具有以下优点:
(1)改进FIPS算法,采用32x32位乘法器在四个时钟周期内实现64x64位的数据乘法,在电路面积和功耗基本不变的情况下,大幅提高了算法执行速度,适合对硬件资源和性能要求较高的场合应用。
(2)采用流水线乘加结构设计,减小关键路径延迟,提高了芯片运行频率。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。

Claims (12)

1.一种用于智能卡的Montgomery模乘器的数据处理方法,其特征在于,所述方法包括:
通过4s2+7s次乘法运算获得所述Montgomery模乘器的运算结果的低位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果;
通过4s2-4s次乘法运算获得所述Montgomery模乘器的运算结果的高位2s个字;采用32x32位的乘法器分别计算出axb和mxn的w位结果;
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整;
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1;
所述w为64位;
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
2.如权利要求1所述的方法,其特征在于,所述采用32x32位的乘法器计算出axb的w位结果包括以下四个步骤:
21、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储所述w位数据的高32位,t0存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t1,t0中;所述相加结果的进位存储在进位保存寄存器C0中;
22、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将所述中间结果寄存器t2、t1中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储所述w位数据的高32位,t1存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t2、t1中;所述相加结果的进位存储在进位保存寄存器C1中;
23、a[2j]*b[2(i-j)+1]的过程与步骤22相同;
24、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将所述中间结果寄存器t3、t2中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储所述w位数据的高32位,t2存储所述w位数据的低32位;将所述第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将所述第二相加结果的高32位与低32位分别存储在所述中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中;其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1;
所述MOH、MOL、t3、t2、t1、t0是6个w/2位的所述中间结果寄存器,所述C2、C1分别为不小于log2(3s)、log2(4s)位的所述进位保存寄存器,所述C0为1位的所述进位保存寄存器,所述中间结果寄存器与所述进位保存寄存器的初始值均为0;
在获得所述Montgomery模乘器的运算结果的高位2s个字的运算过程中,所述i的取值范围为:0到s-1;所述j的取值范围为:i+1到s-1。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:低位计算模块每次需要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;所述低位计算模块每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且将所述运算结果右移w位。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:高位计算模块每执行一次运算,将第二计算模块产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储所述运算结果的高32位,m[2i]存储所述运算结果的低32位;所述高位计算模块每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且所述运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储所述w位数据的高32位,n[2i]存储所述w位数据的低32位;将所述相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中,所述相减的结果的借位存储在借位寄存器B中。
5.如权利要求2所述的方法,其特征在于,通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位;
在第一个时钟周期内,所述数据a的低w/2位与所述数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取所述数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位;
在第二个时钟周期内,所述数据a的高w/2位与所述数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位;
在第三个时钟周期内,所述数据a的低w/2位与所述数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的所述数据n的低w/2位;
在第四个时钟周期内,所述数据a的高w/2位与所述数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的所述数据m的高w/2位;
将所述第一乘法结果、所述第二乘法结果、所述第三乘法结果以及所述第四乘法结果相加获得2w位的最终乘法结果。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:采用两级流水线硬件结构,并行执行乘法运算和加法运算。
7.一种用于智能卡的Montgomery模乘器的数据处理系统,其特征在于,所述系统包括:低位计算模块和高位计算模块;
所述低位计算模块,用于通过4s2+7s次乘法运算获得所述Montgomery模乘器的运算结果的低位2s个字;
所述高位计算模块,用于通过4s2-4s次乘法运算获得所述Montgomery模乘器的运算结果的高位2s个字;
所述低位计算模块包括第一算法模块,用于采用32x32位的乘法器分别计算出axb和mxn的w位结果;
所述高位计算模块包括第二算法模块,用于执行与所述第一计算模块相同的运算过程;
其中,a、b、n为2s位的232进制数;s=k/64,k是要运算的模数的长度,s向上取整;
m=t·n’mod r;gcd(n,r)=1,r为2的整数次幂,n’满足r·r-1-n·n’=1;
所述w为64位;
a=(a[2s-1],a[2s-2],…,a[1],a[0]);
b=(b[2s-1],b[2s-2],…,b[1],b[0]);
n=(n[2s-1],n[2s-2],…,n[1],n[0]);
m=(m[2s-1],m[2s-2],…,m[1],m[0])。
8.如权利要求7所述的系统,其特征在于,所述第一计算模块通过以下步骤实现采用32x32位的乘法器计算出axb的w位结果,所述mxn与所述axb的计算方法相同:
81、将a[2j]*b[2(i-j)]的结果的低32位和高32位分别存储在中间结果寄存器MOL和MOH中,将中间结果寄存器t1、t0中存储的w位数据分别和MOH、MOL中存储的w位数据相加,其中t1存储所述w位数据的高32位,t0存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t1、t0中;所述相加结果的进位存储在进位保存寄存器C0中;
82、将a[2j+1]*b[2(i-j)]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将所述中间结果寄存器t2、t1中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加,其中t2存储所述w位数据的高32位,t1存储所述w位数据的低32位;将相加结果的高32位与低32位分别存储在所述中间结果寄存器t2、t1中;所述相加结果的进位存储在所述进位保存寄存器C1中;
83、a[2j]*b[2(i-j)+1]的过程与步骤82相同;
84、将a[2j+1]*b[2(i-j)+1]的结果的高32位和低32位分别存储在所述中间结果寄存器MOH和MOL中,将所述中间结果寄存器t3、t2中存储的w位数据分别和所述中间结果寄存器MOH、MOL中存储的w位数据相加获得第一相加结果,其中t3存储所述w位数据的高32位,t2存储所述w位数据的低32位;将所述第一相加结果与进位保存寄存器C0中存储的数据相加获得第二相加结果,将所述第二相加结果的高32位与低32位分别存储在所述中间结果寄存器t3、t2中;两次相加结果的进位存储在进位保存寄存器C2中;
其中,i的取值范围为:0到s-1;j的取值范围为:0到i-1;
所述MOH、MOL、t3、t2、t1、t0是6个w/2位的所述中间结果寄存器,所述C2、C1分别为不小于log2(3s)、log2(4s)位的所述进位保存寄存器,所述C0为1位的所述进位保存寄存器,所述中间结果寄存器与所述进位保存寄存器的初始值均为0;
其中,所述第二计算模块在获得所述Montgomery模乘器的运算结果的高位2s个字的运算过程中,所述i的取值范围为:0到s-1;所述j的取值范围为:i+1到s-1。
9.如权利要求8所述的系统,其特征在于,所述低位计算模块还用于:每次都要计算{a[2i+1],a[2i]}x{b[1],b[0]}和{m[2i+1],m[2i]}x{n[1],n[0]},并且计算出下次运算所需的m[2i+1]和m[2i],存储在m的m[2i+1]、m[2i]位置;所述低位计算模块每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且将所述运算结果右移w位。
10.如权利要求9所述的系统,其特征在于,所述高位计算模块还用于,每执行一次运算,将所述第二计算模块产生的w位的运算结果保存在数据m的m[2i+1]、m[2i]存储位置,其中m[2i+1]存储所述运算结果的高32位,m[2i]存储所述运算结果的低32位;所述高位计算模块每执行一次运算,运算结果的高w位存储在所述中间结果寄存器t3、t2中,其中,所述t3存储所述高w位中的高32位,所述t2存储所述高w位中的低32位;所述运算结果的低w位存储在所述中间结果寄存器t1、t0中,其中,所述t1存储所述低w位中的高32位,所述t0存储所述低w位中的低32位;所述运算结果的进位存储在所述进位保存寄存器C2中,并且将所述运算结果右移w位,并将m[2i+1]、m[2i]存储的w位数据和n[2i+1]、n[2i]存储的w位数据相减,其中,n[2i+1]存储所述w位数据的高32位,n[2i]存储所述w位数据的低32位;将所述相减的结果的高32位存储在b[2i+1]中,低32位存储在b[2i]中;所述相减的结果的借位存储在借位寄存器B中。
11.如权利要求7所述的系统,其特征在于,所述第一计算模块通过以下方法实现采用32×32位乘法器计算出64x64位乘法结果:
从存储器中读取w位数据a的高w/2位和低w/2位以及w位数据b的低w/2位;
在第一个时钟周期内,所述数据a的低w/2位与所述数据b的低w/2位相乘,得到w位的第一乘法结果,同时读取所述数据b的高w/2位和下次大循环中需要进行乘法的数据n的高w/2位;
在第二个时钟周期内,所述数据a的高w/2位与所述数据b的低w/2位相乘,得到w位的第二乘法结果,同时读取下次大循环中需要进行乘法的数据m的低w/2位;
在第三个时钟周期内,所述数据a的低w/2位与所述数据b的高w/2位相乘,得到w位的第三乘法结果,同时读取下次需要进行乘法的所述数据n的低w/2位;
在第四个时钟周期内,所述数据a的高w/2位与所述数据b的高w/2位相乘,得到w位的第四乘法结果,同时读取下次需要进行乘法的所述数据m的高w/2位;
将所述第一乘法结果、所述第二乘法结果、所述第三乘法结果以及所述第四乘法结果相加获得2w位的最终乘法结果。
12.如权利要求7所述的系统,其特征在于,所述系统还包括结构配置模块:采用两级流水线硬件结构,并行执行乘法运算和加法运算。
CN201510006990.4A 2015-01-07 2015-01-07 一种用于智能卡的Montgomery模乘器的数据处理方法及系统 Active CN104598199B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510006990.4A CN104598199B (zh) 2015-01-07 2015-01-07 一种用于智能卡的Montgomery模乘器的数据处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510006990.4A CN104598199B (zh) 2015-01-07 2015-01-07 一种用于智能卡的Montgomery模乘器的数据处理方法及系统

Publications (2)

Publication Number Publication Date
CN104598199A true CN104598199A (zh) 2015-05-06
CN104598199B CN104598199B (zh) 2018-06-01

Family

ID=53124024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510006990.4A Active CN104598199B (zh) 2015-01-07 2015-01-07 一种用于智能卡的Montgomery模乘器的数据处理方法及系统

Country Status (1)

Country Link
CN (1) CN104598199B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109814838A (zh) * 2019-03-28 2019-05-28 贵州华芯通半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统
CN116610290A (zh) * 2023-07-20 2023-08-18 南京邮电大学 蒙哥马利算法在有限域中实现四则运算的硬件实现方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061706A (en) * 1997-10-10 2000-05-09 United Microelectronics Corp. Systolic linear-array modular multiplier with pipeline processing elements
CN1392472A (zh) * 2002-07-31 2003-01-22 清华大学 Vlsi用的蒙格玛丽模乘算法及智能卡模乘器的vlsi结构
CN2566363Y (zh) * 2002-07-31 2003-08-13 清华大学 Vlsi用的智能卡模乘器结构
CN1492316A (zh) * 2003-09-09 2004-04-28 大唐微电子技术有限公司 一种蒙格玛丽模乘算法及其模乘、模幂运算电路
WO2006103288A1 (fr) * 2005-04-01 2006-10-05 Thales Dispositif implementant la multiplication modulaire de montgomery
CN103761068A (zh) * 2014-01-26 2014-04-30 上海交通大学 优化的蒙哥马利模乘方法、模平方方法和模乘硬件

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061706A (en) * 1997-10-10 2000-05-09 United Microelectronics Corp. Systolic linear-array modular multiplier with pipeline processing elements
CN1392472A (zh) * 2002-07-31 2003-01-22 清华大学 Vlsi用的蒙格玛丽模乘算法及智能卡模乘器的vlsi结构
CN2566363Y (zh) * 2002-07-31 2003-08-13 清华大学 Vlsi用的智能卡模乘器结构
CN1492316A (zh) * 2003-09-09 2004-04-28 大唐微电子技术有限公司 一种蒙格玛丽模乘算法及其模乘、模幂运算电路
WO2006103288A1 (fr) * 2005-04-01 2006-10-05 Thales Dispositif implementant la multiplication modulaire de montgomery
CN103761068A (zh) * 2014-01-26 2014-04-30 上海交通大学 优化的蒙哥马利模乘方法、模平方方法和模乘硬件

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KOC C K, ACAR T, KALISKI B S.: "Analyzing and comparing Montgomery multiplication algorithms", 《IEEE MICRO》 *
薛念,潘赟,张宇弘,严晓浪: "基于Montgomery模乘的RSA加密处理器", 《计算机工程》 *
谷荧柯,白国强,陈弘毅: "适于流水线结构的改进FIPS算法及其实现", 《微电子学》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109814838A (zh) * 2019-03-28 2019-05-28 贵州华芯通半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统
CN109814838B (zh) * 2019-03-28 2024-04-12 贵州华芯半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统
CN116610290A (zh) * 2023-07-20 2023-08-18 南京邮电大学 蒙哥马利算法在有限域中实现四则运算的硬件实现方法
CN116610290B (zh) * 2023-07-20 2023-09-22 南京邮电大学 蒙哥马利算法在有限域中实现四则运算的硬件实现方法

Also Published As

Publication number Publication date
CN104598199B (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
Lee et al. A 1ynm 1.25 V 8Gb, 16Gb/s/pin GDDR6-based accelerator-in-memory supporting 1TFLOPS MAC operation and various activation functions for deep-learning applications
Tenca et al. High-radix design of a scalable modular multiplier
JP2009026308A (ja) 高速かつ効率的な行列乗算ハードウェアモジュール
CN103226461B (zh) 一种用于电路的蒙哥马利模乘方法及其电路
CN103793199B (zh) 一种支持双域的快速rsa密码协处理器
Seo et al. Multi-precision multiplication for public-key cryptography on embedded microprocessors
CN112464296B (zh) 一种用于同态加密技术的大整数乘法器硬件电路
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
Gutub et al. Scalable VLSI architecture for GF (p) Montgomery modular inverse computation
CN104598199A (zh) 一种用于智能卡的Montgomery模乘器的数据处理方法及系统
Oksuzoglu et al. Parametric, secure and compact implementation of RSA on FPGA
US20070233772A1 (en) Modular multiplication acceleration circuit and method for data encryption/decryption
WO2009101147A1 (en) An apparatus and a method for calculating a multiple of a point on an elliptic curve
CN102063284A (zh) 一种除法运算方法及装置
CN114527956B (zh) 抗spa攻击的sm2算法中非定点标量乘法的计算方法
CN110232289A (zh) 椭圆曲线密码的高速倍点运算方法
Nedjah et al. High-performance hardware of the sliding-window method for parallel computation of modular exponentiations
Ma et al. Fast implementation for modular inversion and scalar multiplication in the elliptic curve cryptography
KR20000000770A (ko) 모듈러 곱셈장치
Gutub High speed hardware architecture to compute galois fields GF (p) montgomery inversion with scalability features
CN103176768B (zh) 计算经典模乘的模乘方法以及可扩展模乘器
Monfared et al. A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication
Zhou et al. New algorithm and fast VLSI implementation for modular inversion in galois field GF (p)
Yi et al. A compact and efficient architecture for elliptic curve cryptographic processor
Nedjah et al. Efficient hardware for modular exponentiation using the sliding-window method with variable-length partitioning

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200727

Address after: 2505 COFCO Plaza, No.2, nanmenwai street, Nankai District, Tianjin

Patentee after: Xin Xin finance leasing (Tianjin) Co.,Ltd.

Address before: 100094 No. 6 Yongjia North Road, Beijing, Haidian District

Patentee before: DATANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211021

Address after: 100094 No. 6 Yongjia North Road, Beijing, Haidian District

Patentee after: DATANG MICROELECTRONICS TECHNOLOGY Co.,Ltd.

Address before: 300110 2505 COFCO Plaza, No. 2, nanmenwai street, Nankai District, Tianjin

Patentee before: Xin Xin finance leasing (Tianjin) Co.,Ltd.

TR01 Transfer of patent right