CN1230736C - 智能卡模乘器vlsi结构的计算机实现方法 - Google Patents
智能卡模乘器vlsi结构的计算机实现方法 Download PDFInfo
- Publication number
- CN1230736C CN1230736C CN 02125399 CN02125399A CN1230736C CN 1230736 C CN1230736 C CN 1230736C CN 02125399 CN02125399 CN 02125399 CN 02125399 A CN02125399 A CN 02125399A CN 1230736 C CN1230736 C CN 1230736C
- Authority
- CN
- China
- Prior art keywords
- multiplier
- mod
- vlsi
- result
- multiplication
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 17
- 239000000047 product Substances 0.000 claims 3
- 239000012467 final product Substances 0.000 claims 1
- 238000009825 accumulation Methods 0.000 abstract 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
VLSI用的蒙格玛丽(Montgomery)模乘算法及智能卡模乘器VLSI实现结构,适用于智能卡加/解密技术领域。其特征在于:它是一种适合于VLSI实现的高并性度算法,它把原始的Montgomery模乘算法的3次大数乘分解为2s2+s次小数乘,s是r进制数的位数;所述的智能卡模乘器的VLSI结构是一种用32位乘法器来实现1024位模乘运算且数据通道采用三级并行流水结构的高基模乘器。第一级为两个32乘法器并行执行。第二级为一个64的加法器累加两个64位的积并产生一个进位,第三级为一个求总的累加和的76位加法器。与现有结构相比,它有效地降低了芯片面积和模乘的时钟数,从而可在智能卡中实现RSA算法的数字签名与认证。
Description
技术领域
VLSI用的蒙格玛丽(montgomery)模乘算法及智能卡模乘器VLSI结构可用于智能卡加/解密技术领域
背景技术
1公开密钥加密技术
1976年,斯坦福大学的M.E.Hellman,W.Diffe和R.Merkle提出了“公开密码密钥体制”,也叫非对称密码体制,还叫双密钥密码体制。在这种密码体制中,一个加密系统的加密和解密能力是分开的。加密和解密分别通过两个不同的密钥实现,并且由其中的一个密钥推导出另一个密钥是不可行的。采用非对称的密码体制的每一个用户,都有一对选定的密钥,其中一个是公开的,成为公钥。另一个由用户自己秘密保存。称为密钥。公开密钥密码体制有如下的一些优点:(1)密钥分发简单。由于加密和解密密钥不同,而且不能从加密密钥中推导出解密密钥,因而加密密钥可以象电话号码簿一样分发。(2)秘密保存的密钥量减少。每个用户只需保存自己的解密密钥。如N个智能卡和M个主机相互鉴别只需产生(N+M)对密钥。(3)公钥的出现使得非对称密码体制可以适应开放性的使用环境。(4)可以实现数字签名。所谓数字签名,主要是为了保证接收方能够对公正的对第三方证明其收到的报文的真实性和发送源的真实性而采取的一种安全措施。它的使用可以解决那种由于收发方的不诚实而产生的争执,即可以保证发放不能根据自己的利益来否认或伪造报文。
现代密码学用密钥解决了加密问题,密钥用K表示。K可以是很多数值。密钥K的可能值的范围叫做密钥空间(keyspace)。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加解密函数变为:
Ek1(M)=C
Dk2(C)=M
其中,Ek1是依赖于密钥k1的加密函数,M(Message)是被加密的明文
Dk2是依赖于密钥k2的解密函数,C(Crypto)是加密后的密文
其加密过程,具有如图1所示的特性:实现公钥密码体制的算法很多,比较典型的是RSA算法和椭圆曲线算法。RSA算法是1978年2月,由美国麻省里工学院(MIT)的研究小组成员Riverst,Shamir和Adleman三位专家提出,并用他们名字的头字母命名为RSA算法。它既能用于加密也能用于数字签名。RSA的安全是基于大素数分解的难度,其公开密钥和私人密钥是一对大素数(100到200个大素数或更大)的函数。关于RSA硬件实现目前已经制造出了许多RSA加密的芯片,RSA算法的正确性已被实践和理论所证明。
在公钥加/解密体制中,存在着一个大数模幂乘运算Pe mod N,这个运算造成了公钥加解密运算的巨大运算量。大数模幂乘运算速度决定了公钥加解密的应用性能。从国内外的研究现状来看,由于公钥加解密的安全性强,使得大数模幂乘运算应用非常广泛。
2大数模幂乘Pe mod N的分解
公钥密码体制加解密就是进行大数模幂乘运算,大数模幂乘运算(Pe mod N)速度决定公钥加密的可用性。大数模幂乘运算(Pe mod N)可分解为大数模乘运算AB mod N,它的分解形式为:
begin
C=1;//C先赋值常数1
for i=0 to u-1 do
{
if(ei=1) C=X·C(mod N) //第一个AB mod N的形式
X=X·X(mod N) //第二个AB mod N的形式
}
return C
end
其中,e=(enen-1...ei.....e0),从求Xe mod N分解的算法中,可以看出存在着一种基本的运算形式AB mod N。因为AB的运算是一种普通两数相乘运算。有关相乘算法的研究较为成熟和普遍,这样在获得AB之积X时,求模运算X mod N就变成基本的操作。通常,在已知X值时,通过X-N的循环递减运算,而最终获得X mod N。这种运算通常称为模减运算。一般实际应用中,令X=AB,所以在进行模减运算前,先进行乘运算AB,再进行减运算,这种模运算称之为模乘运算。因此,模乘运算AB mod N就成为一个值的研究的问题。
3 Montgomery的模乘算法
RSA加密算法是目前在理论和实际应用中较为成功的一种公钥密码体制,它的安全性是基于数论中大整数分解为素数因子的困难性上。它有一对密钥,即公钥或加密密钥(e,N)和私钥或解密密钥(d,N)。
对明文m,其加密过程:c≡E(m)=me mod N式中c表示密文
而解密过程:m≡D(c)=cd mod N m表示明文由Euler定理可以证明加/解密过程的一致性。RSA算法加密/解密过程实质上就是一个计算模幂me mod N或cd mod N的过程。但是由于m,e,c,d,N等操作数大于1024比特,直接的模幂运算已不可能,必须先将其分解为基本的大数模乘运算AB mod N。Montgomery算法正是为解决大数模乘运算AB mod N而提出的。
原始的Montgomey模乘算法
设N为模数且N>1,R是与N互素的一个基,通常,R=2u,u是N的位数;R-1和N满足0<R-1<N,0<N′<R,R R-1 -N N′=1,即RR-1(mod N)=1或N N′(mod R)=-1;对给定大整数T,且O≤T<RN
Montgomery算法如下:
function REDC(T)
m←(T mod R)N′mod R
t←(T+mN)/R
if t≥N then t-N else return t
上述算法从表面上看仅有两次大数乘法TN′和mN,但由于模乘运算时T=AB,0≤A<N,0≤B<N,所以算法共进行三次大数乘法运算。当A,B和N都为1024位以上的大整数时,大数相乘给硬件实现带来了困难,因此必须对大数进行分解。另外,由于算法的返回结果是Montgomery积ABR-1 mod N,而不是模乘积AB mod N,所以使用时还应消除Montgomery积的常数项R-1而变为模乘积。
目前,申请大数模乘的专利国外较多,国内较少。国内有关大数模乘的专利有两项。这两项专利分别是“高速模乘方法及装置(96109838.4)”,“模乘法的电路及装置(99808871.4)”。这两项专利与我们要申请专利相比,我们的专利先进于这两项专利,并且适合于大规模集成电路VLSI实现。
随着智能卡的日益普及,智能卡交易中的数据安全变得越来越重要。由于公钥密码体制RSA(Rivest,Shamir,Adleman)解决了数字签名、信息验证和身份认证,因此智能卡采用公钥密码体制的RSA实施数据加密越来越必要。但是,智能卡采用公钥密码体制RSA进行加密目前存在两个主要问题:1)RSA密码协处理器的VLSI(Very Large Scale Integration)实现面积过大2)RSA密码协处理器的模幂乘运算速度较低。本申请分析和改进大数模乘的Montgomery算法,提出了一种新的高基模乘器结构。这种结构不仅降低了芯片面积,而且还减少了模幂乘运算的时钟周期数,适合于智能卡应用。
发明内容
本发明的目的是针对智能卡的专用模乘器设计提出一种VLSI用的蒙格玛丽(montgomery)模乘算法及智能卡模乘器的VLSI结构。本发明针对Koc提出的基于单处理器的Montgomery的软件实现算法FIPS(Finely Integrated Product Scanning),提出了一种用于VLSI实现的高并行度算法,也称改进的FIPS算法。
本发明所提出的Montgomery模乘算法其特征在于:
它是一种适合于VLSI实现的高并行度算法,其实质在于把原始的三次大数乘法运算分解为2s2+s次小整数乘,它依次含有以下步骤:
设A,B分别为s位r进制整数:
A=(as-1 as-2…a1a0),B=(bs-1 bs-2…b1b0)
模N也为s位r进制整数,
N=(ns-1 ns-2…n1n0),且R=rs
则有N<R,n0 n0′mod r=-1,并使A<N,B<N,
S:=0,n′[0]:=-n[0]-1 mod r //求n0的模逆
有(A)用s2-s次乘法计算乘积结果的低位S个,可用中间结果m[i]表示:
A.1 i=0,......s-1
A.2 j=0,......i-1
A.2.1 S:=S+a[j]b[i-j]+m[j]n[i-j]
A.3 S:=S+a[i]b[0]
A.4 m[i]:=S n′[O] mod r
A.5 S:=S+m[i]n[0]
A.6 S:=S/r //右移一个r进制位
(B)用s2-s次乘法计算乘积结果的高S位,用存储变量m表示:
B.1 i=s,...,2s-1
B.2 j=i-s+1,...,s-1
B.2.1 S:=S+a[j]b[i-j]+m[j]n[i-j]
B.3 m[i-s]:=S mod r
B.4 S:=S/r //右移一个r进制位
(C)用s次加法把蒙格玛丽(Montgomery)模乘积由:[0,2N)调整到[0,N)
C.1 r进制位t0:=S mod r //t0是一个r进制位
C.2 进位Cy=1
C.3 j=0,…,s-1
C.3.1 (Cy,b[j]):=m[j]+not(n[j])+Cy
//Cy为进位位, 随进位而变
t0:=t0+not[0]+Cy
C.4 若t0=0
则 返回(b[s-1]b[s-2]…b[1]b[0])
否则 返回(m[s-1]m[s-2]…m[1]m[0])
本发明所提出的智能卡模乘器的VLSI结构,其特征在于:
它是一种用32位乘法器来实现1024位模乘运算且数据通路采用三级流水结构的高基模乘器,其第一级由两个输入分别为a,b和m,n的32位乘法器,以及输入端分别与上述两个乘法器的输出端相连的两个64位寄存器组成;第二级由累加两个64位的积并产生一个进位Cy的64位加法器和与该64位加法器输出端相连的65位寄存器构成。第三级由输入端与上述65位寄存器的输出端相连以求总的累加和的76位加法器以及与该76位加法器交互相连而输出端输出乘积结果的76位寄存器构成。
使用证明它己达到了预期的目的。
附图说明
图1,使用两个密钥的加/解密过程。
图2,s=3时改进的FIPS模乘方法
图3~图5,本发明提出的VLSI目的Montgomery模乘算法的计算机流程框图。
图6,RSA模乘器Monpro的结构示意图
图7,R=rs=2ks下模幂Me mod N的计算机流程框图
图8,RSA加密处理器的结构示意图
具体实施方式
请见图2。它是s=3时改进的FIPS方法的一个实例。它分为A、B、C三部分。A对应于图2中点划线右侧的计算,即计算乘积结果的低位s个字;B对应于点划线左侧的计算,及计算乘积结果的高位s个字。为节省存储空间高位s个字的存储空间借用了存储变量m,最后Montgomery积存储在(m[s-1]m[s-2]…m[1]m[0])。由于Montgomery积只能保证在[0,2N)的范围,所以还应将其调整到[0,N)的范围内。C正是完成该调整功能的。
上述算法的计算瓶颈是乘法的次数。A需要进行s2+2s次乘法,B需要进行s2-s次乘法,共进行2s2+s次乘法。C需要进行s次加法以调整模乘积由[0,2N]到[0,N]。
改进FIPS算法的实质是把原始的Montgomery算法的3次大数乘分解为2s2+s次小整数乘,以利于VLSI实现。图3~图5是其计算机实现时的流程框图。
模乘器是RSA密码协处理器核心运算部件。模乘运算AB mod N速度取决于模乘运算的时钟周期数,所以模乘器设计目标应在规定的面积下尽可能降低模乘运算的时钟周期数。在VLSI实现算法中,由于A,B,N都是r进制整数,因此称r为基,而通常取r=2k。若r=2k且k≥16,则称r为高基。基于高基的模乘器就为高基模乘器。在本设计中,大数A,B,N各为u个二进制位,从数据的安全考虑,我们确定取u=1024比特。这样A,B,N就可以表示成由s=u/k个字组成的多精度数,A=(as-1,as-2,...ai...a1a0)r,而ai=(āk-1,āk-2,...,ā1ā0).即每个ai(0≤i<s)可表示k个二进制位。k值越大,硬件的VLSI实现规模也就越大。
在VLSI实现算法中,当s=u/k时,总乘法次数2s2+s就变为2(u/k)2+u/k。当u固定时,乘法次数2(u/k)2+u/k将随着k的增大而减少,相应的运算时间也就越少,这是我们所希望的。但是,由于k值与VLSI的硬件实现规模成正比,k值过大会导致VLSI的实现面积和时延较大。因此,k的取值应在面积的约束下尽可能的降低运算的时钟数。
选取
那么2(u/k)2+u/k就变为
取u的平方根的理由是:在忽略
时(当u≥1024时,
与u相比很小),乘法次数就从非线性的u2变为线性的u,这种变化对降低运算时钟数很有利。当
时,基于TSMC的0.35μm的标准单元库进行综合,结果表明密码协处理器硬件面积约为38K门。若再增加k的取值,在相同的实验条件下进行综合,密码协处理器模乘器硬件面积将变得更大。因此,设计中我们确定
由于确定了u=1024比特,那么基r=2k=232,所以用32位的乘法器来实现1024位的模乘运算。在VLSI实现算法中,Part A和Part B各含有共同的乘积项a[j]b[i-j]和m[j]n[i-j],由于这两个乘积项无数据相关,因此,可用两个32位乘法器同时并行地进行乘法运算如图6所示,于是在一个时钟周期内可完成两次乘法运算。
在VLSI实现算法Part A中,由于a[j]b[i-j]和m[j]n[i-j]两项可并行执行,这样,完成a[j]b[i-j]和m[j]n[i-j]的s2-s次乘仅需(s2-s)/2个时钟周期。而其它三个乘积项a[i]b[0]、Sn′[0]和m[i]n[0]之间存在两次数据相关,即a[i]b[0]相关Sn′[0]和Sn′[0]相关m[i]n[0],依据图6的三级流水结构,每次相关需要等待3个时钟周期,故两次相关共需6个时钟周期。又由于a[i]b[0]、Sn′[0]和m[i]n[0]需要循环s次,所以完成这三个乘积项的累加需要6s个时钟周期。简言之,Part A的乘加运算需要6s+(s2-s)/2个时钟周期,即(s2+11s)/2个时钟周期。
在VLSI实现算法Part B中, 仅存在可并行执行的乘积项a[j]b[i-j]和m[j]n[i-j],所以,(s2-s)次乘仅需(s2-s)/2个时钟周期。而在Part C中,将模乘积调整到[0,N)应进行s次加法,还需s个时钟周期。因此,算法中的Part A,B,C三项所耗的时钟数之和为s2+6s或者
个时钟周期。(将s=u/k,
代入式s2+6s得
)
在VLSI实现算法Part A中,由于Sn′[0]这s次乘积并没有计入累加和S中,累加和应为2s2+s-s=2s2次乘积之和,因此,用作累加的加法器位宽至少应大于log2(2s2264),而 所以,log2(2s2264)=75,于是选择用于累加的加法器位宽为76位。见图6。
模乘器的数据通路采用三级流水结构,以增强模乘器的并行性。即mu132=>adder64=>adder76,第一级为两个32乘法器并行执行,第二级一个64位的加法器累加两个64位的积并产生一位进位Cy,第三级一个76位的加法器求总的累加和。模乘器的控制通路采用状态机模型控制循环叠代以及模乘器与存储器之间的数据交换。总之,模乘器完成一次模乘运算需要
个时钟周期。
当u=1024比特时,一次模乘运算需要1216个时钟周期。
根据本发明提出的RSA模乘器Monpro,基于此模乘器实现的模幂Me mod N硬件实现算法如下;R=rs=2ks
function MonExp(M,e,N,R) /*N是奇数*/
步骤1:
M:=M·R mod N
步骤2:
x:=1·R mod N
步骤3:for i=u-1 downto 0
步骤4:
x:=MonPro(
x,
x)
步骤5:if(ei=1)then
x:=MonPro(
M,
x)
步骤6:x:=MonPro(
x,1)
步骤7:return x
相应的计算机实现的程序流程图见图7,而其RSA加幂处理器的结构示意图见图8。图8中的mux表示2选1的多路器,Monpro表示图6的模乘器结构。(e,N)为加密密钥。模幂算法从左到右扫描e=(eu-1…ei…e0)来调用图6中的RSA模乘器MonPro,由于Montgomery积不是模乘积,因此步骤1、2、6用来消去Montgomery积中的R-1乘积项使之变为模乘积。模幂算法的VLSI实现就是RSA密码协处理器,如图8所示。模幂算法中的ei和图8中的ei′关系是:当ei=0时,ei′=0,即只进行一次模乘运算,当ei=1时,ei′=01,进行两次模乘运算。
在平均的情况下,对任意的i,ei=1或ei=0的概率各半,所以平均需进行1.5次模乘运算,则完成模幂运算所需的时钟周期数:
在最坏的情况下,对任意的i,所有的ei=1,全都进行2次模乘运算,则完成模幂运算所需的时钟周期数:
基于5MHz的工作时钟,加密u=1024位,平均执行时间为:
最坏执行时间为
1024位RSA密码协处理器,用Cadence工具Verilog-XL进行仿真,验证了加/解密M≡Med modN的一致性和正确性。基于0.35μm TSMC标准单元库,用Synopsys工具进行综合,实验结果表明:RSA密码协处理器共用38K门,它完成一次1024位模乘运算需要1216个时钟周期。它的最大时延为32位乘法器的组合逻辑时延,其值为15ns,所以RSA密码协处理器最高可允许65MHz,满足智能卡20MHz的工作频率。在基于外部5MHz的工作时钟下,RSA密码协处理器加密1024位的明文平均需要374ms。
Claims (1)
1、VLSI用的蒙格玛丽模乘方法,其特征在于:它是一种实现VLSI的高并行度方法,其实质在于把原始的三次大数乘法运算分解为2s2+s次小整数乘,所述方法依次含有以下步骤:
首先设定A,B分别为s位r进制整数;
A=(as-1as-2…a1a0),B=(bs-1bs-2…b1b0);
模N也为s位r进制整数,
N=(ns-1ns-2…n1n0),且R=rs,
则有N<R,n0 n0′mod r=-1,并使A<N,B<N,
以下描述中用
a[s-1]a[s-2].…a[1]a[0]来表示as-1as-2…a1a0;
b[s-1]b[s-2].…b[1]b[0]来表示bs-1bs-2…b1b0;
n[s-1]n[s-2].…n[1]n[0]来表示ns-1ns-2…n1n0;
//求n0的模逆,可表示为:
n′[0]:=-n[0]-1mod r //求n0的模逆;
有(A)用s2+2s次乘法,计算乘积结果的低位s个字,可用中间结果m[i]表示:
A.1 for i=0 to s-1;
A.2 for j=0 to i-1;
A.2.1 S:=S+a[j]b[i-j]+m[j]n[i-j];
表达式S:=S+a[j]b[i-j]+m[j]n[i-j]在智能卡模乘器VLSI实现结构分以下4个步骤来描述:
步骤1:a[j]b[i-j]对应的结构实现;
a[j]b[i-j]表示a[j]与b[i-j]两数相乘,用第一个32位乘法器mul32来实现,乘法器mul32有两个输入a,b;分别用a[j]来替换a;用b[i-j]来替换b,也即a=a[j],b=b[i-j]此时乘法器的输出结果就是a[j]b[i-j],该结果存放在第一个64位寄存器reg64;
步骤2:m[j]n[i-j]对应的结构实现;
m[j]n[i-j]表示m[j]与n[i-j]两数相乘,用第二个32位乘法器mul32来实现该乘法器mul32也有两个输入m,n;分别用m[j]来替换m,用n[i-j]来替换n,也即m=m[j],n=n[i-j]此时乘法器的输出结果就是m[j]n[i-j],该结果存放在第二个64位寄存器reg64;
步骤3:表达式a[j]b[i-j]+m[j]n[i-j]结构实现;
把步骤1,步骤2的两个64位的寄存器的输出分别作为加法器adder64的两个输入,
得到的结果就是a[j]b[i-j]+m[j]n[i-j],并存入一个65位的寄存器reg65;
步骤4:S:=S+a[j]b[i-j]+m[j]n[i-j]结构实现;
把步骤3的寄存器reg65的结果以及寄存器reg76的结果S作为加法器adder76的输入,得到的结果就为S:=S+a[j]b[i-j]+m[j]n[i-j],并把该结果存入到76位的加法器reg76,作为下一次循环迭代累加时用的S值;
A.3 S:=S+a[i]b[0];
把表达式S:=S+a[j]b[i-j]+m[j]n[i-j]中的m[j],n[i-j]的置初值0,并输入到第2个32位的乘法器mul32,再按上述A.2.1的步骤1~4,计算出所述的S+a[i]b[0];
A.4 m[i]:=Sn′[0]mod r;
一个乘法器mul32的两个输入a,b分别用S,n′[0]来替换,另一个乘法器mul32的两个输入m,n分别用0,0来替换,重复A.2.1的步骤1~4,就可得到Sn′[0]的结果,mod r操作,就是取S的低32位数字;
A.5 S:=S+m[i]n[0];
S:=S+m[i]n[0]是A.2.1中S:=S+a[j]b[i-j]+m[j]n[i-j]的表达式实现步骤1~4步骤的一个特例,只是对实现a[j]b[i-j]的乘法器mul32的两个输入a,b赋初值0即可;
A.6 S:=S/r //右移一个r进制位;
寄存器reg76右移一个r进制位,即可实现;
(B)用s2-s次乘法计算乘积结果的高位s个字,用存储变量m表示;
B.1 for i=s to 2s-1;
B.2 for j=i-s+1,to s-1;
B.2.1 S:=S+a[j]b[i-j]+m[j]n[i-j];
同A.2.1的结构实现步骤1~4完全相同;
B.3 m[i-s]:=S mod r;
mod r操作,就是取S的低32位数字;
B.4 S:=S/r //右移一个r进制位;
寄存器reg76右移一个r进制位,即可实现;
(C)用s次加法把蒙格玛丽模乘积由[0,2N)调整到[0,N);
C.1 r进制位t0:=S mod r //t0是一个r进制位;
mod r操作,就是取S的低32位数字;
C.2 进位Cy=1;
C.3 for j=0 to s-1;
C.3.1 (Cy,b[j]):=m[j]+not(n[j])+Cy;
一个乘法器mul32的两个输入a,b分别用m[j],1来替换,另一个乘法器mul32的两个输入m,n分别用not(n[j]),1来替换,重复A.2.1的步骤1~4,就可得到(Cy,b[j])的结果;
//Cy为进位位,随进位而变;
t0:=t0+not[0]+Cy;
一个乘法器mul32的两个输入a,b分别用t0,1来替换,另一个乘法器mul32的两个输入m,n分别用not[0],1来替换,重复A.2.1的步骤1~4,就可得到t0的结果;
C.4 若t0=0;
则 返回(b[s-1]b[s-2]…b[1]b[0]);
否则 返回(m[s-1]m[s-2]…m[1]m[0]);上述的VLSI用的蒙格玛丽模乘方法在VLSI实现时,要被模幂Memod N所调用,为叙述方便,把“VLSI用的蒙格玛丽模乘方法”简称为MonPro,模幂Memod N实现步骤如下:
在模幂Memod N实现步骤中,调用MonPro关系如下;
其中R=rs=2ks;
function MonExp(M,e,N,R) /*N是奇数*/
步骤1:
M:=M·R mod N;
步骤2:
x:=1·R mod N;
步骤3:for i=u-1 downto 0;
步骤4:
x:=MonPro(
x,
x);
步骤5:if(ei=1)then
x:=MonPro(
M,
x);
步骤6:x:=MonPro(
x,1);
步骤7:return x;
在上述由步骤3,步骤4,步骤5和步骤6组成的循环体中,共2次调用了MonPro;
第一次调用执行MonPro(
x,
x);
第二次调用要由ei的值来确定执行何种运算;
在ei=1时,执行MonPro(
M,
x)运算,
在ei≠1时,执行MonPro(
x,1),
这个特点使每次循环执行2次MonPro调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02125399 CN1230736C (zh) | 2002-07-31 | 2002-07-31 | 智能卡模乘器vlsi结构的计算机实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02125399 CN1230736C (zh) | 2002-07-31 | 2002-07-31 | 智能卡模乘器vlsi结构的计算机实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1392472A CN1392472A (zh) | 2003-01-22 |
CN1230736C true CN1230736C (zh) | 2005-12-07 |
Family
ID=4745548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02125399 Expired - Fee Related CN1230736C (zh) | 2002-07-31 | 2002-07-31 | 智能卡模乘器vlsi结构的计算机实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1230736C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1696894B (zh) * | 2004-05-10 | 2010-04-28 | 华为技术有限公司 | 大数模乘计算乘法器 |
US7725624B2 (en) * | 2005-12-30 | 2010-05-25 | Intel Corporation | System and method for cryptography processing units and multiplier |
US7849125B2 (en) * | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
CN101488225B (zh) * | 2009-03-05 | 2012-03-28 | 山东大学 | 一种位平面编码器的vlsi系统 |
CN102571342B (zh) * | 2010-12-27 | 2016-01-06 | 北京中电华大电子设计有限责任公司 | 一种rsa算法数字签名方法 |
CN103440359B (zh) * | 2013-07-18 | 2016-03-02 | 北京空间飞行器总体设计部 | 一种实现迭代算法的fpga并行计算电路自动生成方法 |
CN103888246A (zh) * | 2014-03-10 | 2014-06-25 | 深圳华视微电子有限公司 | 低功耗小面积的数据处理方法及其数据处理装置 |
CN104598199B (zh) * | 2015-01-07 | 2018-06-01 | 大唐微电子技术有限公司 | 一种用于智能卡的Montgomery模乘器的数据处理方法及系统 |
CN117234458B (zh) * | 2023-11-09 | 2024-02-23 | 深圳大普微电子股份有限公司 | 乘法阵列、数据处理方法、处理终端及存储介质 |
-
2002
- 2002-07-31 CN CN 02125399 patent/CN1230736C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1392472A (zh) | 2003-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110519058B (zh) | 一种对于基于格的公钥加密算法的加速方法 | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
CN101216754B (zh) | 基于模乘运算的数据加解密处理的方法及装置 | |
US20080240443A1 (en) | Method and apparatus for securely processing secret data | |
CN113032848B (zh) | 一种数据处理方法和用于数据处理的芯片 | |
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
CN1230736C (zh) | 智能卡模乘器vlsi结构的计算机实现方法 | |
KR100508092B1 (ko) | 저전력 모듈로 곱셈을 수행하는 연산장치 | |
JP4177526B2 (ja) | 乗算剰余演算方法および乗算剰余回路 | |
Panjwani | Scalable and parameterized hardware implementation of elliptic curve digital signature algorithm over prime fields | |
CN2566363Y (zh) | Vlsi用的智能卡模乘器结构 | |
JPH11212456A (ja) | モンゴメリ法による乗算剰余計算装置 | |
Farzam et al. | Fast supersingular isogeny Diffie–Hellman and key encapsulation using a customized pipelined montgomery multiplier | |
Wu et al. | Fast parallel exponentiation algorithm for RSA public-key cryptosystem | |
JPH11143688A (ja) | 演算装置並びにこれを利用したrsa暗号演算装置及び楕円暗号演算装置 | |
Mondal et al. | Hardware-Software co-implementation of a high performance and light-weight scalable Systolic-Montgomery based modified RSA for portable IoT devices | |
Vollala et al. | High-radix modular exponentiation for hardware implementation of public-key cryptography | |
Munjal et al. | Analysing RSA and PAILLIER homomorphic Property for security in Cloud | |
Taheri et al. | Efficient hardware implementations of Legendre symbol suitable for MPC applications | |
Aswathy et al. | Modified RSA public key algorithm | |
CN1525307A (zh) | 一种模乘运算电路和一种运用该模乘运算电路的加密方法 | |
CN114513306B (zh) | 数据加密传输方法、系统 | |
Cai et al. | High-speed ASIC implementation of Paillier cryptosystem with homomorphism | |
CN117992990B (zh) | 一种高效的电力数据同态加密方法、处理器及存储介质 | |
Raiashree et al. | Elliptic Curve Scalar Multiplication over Prime Field for both Affine and Jacobian Coordinates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20051207 |