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

文档序号:8269715阅读:524来源:国知局
一种用于智能卡的Montgomery模乘器的数据处理方法及系统的制作方法
【技术领域】
[0001] 本发明涉及公钥密码学领域,尤其涉及一种用于智能卡的Montgomery模乘器的 数据处理方法及系统。
【背景技术】
[0002] W. Diffie和M. HelIman于1976年提出了公钥密码学。模乘算法是公钥密码体制的 核心,广泛应用于RSA,Diff ie-Hellman,ElGamal和ECC等公钥算法当中。P. L. Montgomery 在1985年提出了 Montgomery模乘算法,利用移位代替了传统模乘算法中的除法运算,十分 适合于硬件实现。
[0003] Montgomery 算法计算 a *b T-1Inod η 的值,其中 a, b〈n 并且 gcd(n, r) = 1。在公 钥密码体系中,η通常为素数,为了保证r和η互素,一般取r为2的整数次幂。例如,η为 一个k-bit的整数,即2 k-l < n〈2k,则r = 2k。Montgomery算法的计算过程如下:
[0004] 函数 MonPro (a, b)
[0005] 输入:a、b、η
[0006] 输出:a · b · r-1mod η
[0007] I. t = a · b
[0008] 2. u = (t+(t · n,mod r) · n)/r
[0009] 3.如果u彡η,返回u_n ;否则返回u
[0010] 其中η'需要满足r Ttn · η' = 1。整数夕和η'都可以用扩展欧几里得算法 计算得出。从算法中可以看出,Montgomery模乘使用移位替代了除法,大大提高了算法的 执行速度。
[0011] Montgomery算法的计算结果是a · b · rHmod η,因此如果要计算a · b mod η,需 要将a, b都变换到Montgomery域中进行计算,即
[0012] I. al = a · r mod n, bl = b · r mod η
[0013] 2. cl = MonPro (al, bl) = a*r*b*r* r_1mod n = a · b · r mod n
[0014] 3. c = MonPro (cl, I) = a*b*r*l* r_1mod n = a · b mod n
[0015] 从上述计算过程中可以看出,Montgomery算法对于计算一次a · b mod n,并不占 有优势。但是进行多次模乘运算时(例如模幂运算),将数据变换到Montgomery域中进行 计算,算法运行的速度会大大提高。
[0016] Montgomery算法有多种硬件实现方式。ζλΚ. Koc等人在"Analyzing and Comparing Montgomery Multiplication Algorithm" 中归纳了 5 种 Montgomery 算法的 实现方式(S0S,CI0S,FI0S,FIPS,CIHS),给出了每种算法所需要的乘法、加法次数,存储 器读写次数,以及所需的存储器空间等。C.Mclvor在"Modified Montgomery Modular Multiplication and RSA Exponentiation Techniques,'中提出了基-2 的 Montgomery 硬 件实现方法。浙江大学薛念等人实现了基-4的Montgomery模乘器的设计。S. Kawamura等 人提出了基于剩余数系统(RNS)Montgomery算法,具有较快的速度。A. F. Tenca等人提出 了一种基于流水线的可配置Montgomery算法硬件实现,提高了算法的应用范围和灵活性。 Miaoqing Huang等对Tenca的算法硬件实现进行了改进,提高了算法的速度。此外,还有 一些基于脉动阵列结构的Montgomery模乘器设计。
[0017] 这些方法分别应用在不同场合。例如,基于RNS算法的Montgomery模乘器适用 于对速度要求较高的情况;Tenca等提出的方法适用于数据长度可变的情况。但这些算 法都需要较大的存储器单元来保存中间数据,并且控制逻辑复杂,否则无法达到预期的速 度性能要求。像智能卡这中对资源要求较高的产品,一般使用Koc等人总结的方法设计 Montgomery模乘器。其中FIPS方法由于使用乘加结构,适合于硬件实现,因此应用较为广 泛。FIPS算法由两个大循环和一个减法循环组成,通过积扫描方式计算a · b和m · η的乘 积,以及它们的和。每次内循环结束之后执行一次写memory操作,最终结果保存在m或u 之中。
[0018] 目前,在智能卡产品中基于FIPS方法的Montgomery模乘器,由于从RAM读取数据 效率较低,需要使用两个时钟周期才能获得进行乘法运算的两个乘数。算法循环中每次进 行乘法运算之前都需要额外的时钟周期来读取每次进行乘法运算的乘数,限制了模乘器的 性能。
[0019] 清华大学李树国等人在专利"VLSI用的蒙格玛丽模乘算法及智能卡模乘器的 VLSI结构"中基于FIPS算法设计了一种高效Montgomery模乘器。该设计采用两个32位宽 的乘法器和三级并行流水线结构能够在1216个时钟周期内完成一次1024位的模乘运算。 但该实现中,两个32位宽的乘法器并行执行需要一个时钟周期内读出至少4个输入数据, 因此要求4个位宽为32位的存储器或一个位宽为128位的存储器;并且两个乘法器并行运 算虽然减少了模乘的时钟数,但增加了芯片的面积和功耗,不适合像智能卡这种对硬件资 源和功耗要求比较高的场合。
[0020] Shigeo Ohyama在"Arithmetic Circuit for Montgomery Multiplication and Encryption Circuit"中采用CIOS方法实现Montgomery算法。该设计采用2块单端口 RAM (Random Access Memory)和一个高基乘法器,但其实现速度仅与普通的FIPS算法相同, 因此并不具有竞争力。

【发明内容】

[0021] 为了解决上述问题,本发明提出了一种用于智能卡的Montgomery模乘器的数据 处理方法及系统,能够在硬件规模和功耗基本不变的情况下,使算法执行速度大幅提高。
[0022] 为了达到上述目的,本发明提出了一种用于智能卡的Montgomery模乘器的数据 处理方法,该方法包括:
[0023] 通过4s2+7s次乘法运算获得Montgomery模乘器的运算结果的低位2s个字;采用 32x32位的乘法器分别计算出axb和mxn的w位结果。
[0024] 通过4s2_4s次乘法运算获得Montgomery模乘器的运算结果的高位2s个字;采用 32x32位的乘法器分别计算出axb和mxn的w位结果。
[0025] 其中,a、b、n为2s位的232进制数;s = k/64,k是要运算的模数的长度,s向上取 整。
[0026] m = t · n' mod r ;gcd(n, r) = 1,r 为 2 的整数次幂,η' 满足 r · r-1_n · η' = 1。
[0027] 所述w为64位。
[0028] a = (a[2s_l],a[2s_2],...,a[l],a[0]);
[0029] b = (b [2s_l],b [2s_2],...,b [1],b [0]);
[0030] n = (n [2s_l],n [2s_2],...,n [1],n [0]);
[0031] m = (m[2s_l],m[2s_2],...,m[l],m[0])。
[0032] 优选地,采用32x32位的乘法器计算出axb的w位结果包括以下四个步骤:
[0033] 21、将a[2j]*b[2(i_j)]的结果的低32位和高32位分别存储在中间结果寄存器 MOL和MOH中,将中间结果寄存器tl、t0中存储的w位数据分别和MOH、MOL中存储的w位 数据相加,其中tl存储w位数据的高32位,t0存储w位数据的低32位;将相加结果的高 32位与低32位分别存储在中间结果寄存器tl,t0中;相加结果的进位存储在进位保存寄 存器CO中。
[0034] 22、将a[2j+l]*b[2(i_j)]的结果的高32位和低32位分别存储在中间结果寄存 器MOH和MOL中,将中间结果寄存器t2、tl中存储的w位数据分别和中间结果寄存器Μ0Η、 MOL中存储的w位数据相加,其中t2存储w位数据的高32位,tl存储w位数据的低32位; 将相加结果的高32位与低32位分别存储在中间结果寄存器t2、tl中;相加结果的进位存 储在进位保存寄存器Cl中。
[0035] 23、a[2j]*b[2(i_j)+l]的过程与步骤 22 相同。
[0036] 24、将a[2j+l]*b[2(i_j)+l]的结果的高32位和低32位分别存储在中间结果寄 存器MOH和MOL中,将中间结果寄存器t3、t2中存储的w位数据分别和中间结果寄存器Μ0Η、 MOL中存储的w位数据相加获得第一相加结果,其中t3存储w位数据的高32位,t2存储w 位数据的低32位;将第一相加结果与进位保存寄存器CO中存储的数据相加获得第二相加 结果,将第二相加结果的高32位与低32位分别存储在中间结果寄存器t3、t2中;两次相 加结果的进位存储在进位保存寄存器C2中;其中,i的取值范围为:0到s-1 ;j的取值范围 为:〇到i-1。
[0037] MOH、MOL、t3、t2、tl、tO是6个w/2位的所述中间结果寄存器,C2、C1分别为不小 于Iog2 (3s)、Iog2 (4s)位的进位保存寄存器,CO为1位的进位保存寄存器,中间结果寄存器 与进位保存寄存器的初始值均为0。
[0038] 在获得Montgomery模乘器的运算结果的高位2s个字的运算过程中,i的取值范 围为:〇到s-1 ;j的取值范围为:i+l到s-1。
[0039] 优选地,该方法还包括:低位计算模块每次需要计算{a[2i+l],a[2i]} x{b[l],b[0]}和{111[21+1],111[21]:^{11[1],11[0]},并且计算出下次运算所需的 111[21+1]和 m[2i],存储在m的m[2i+l]、m[2i]位置;低位计算模块每执行一次运算,运算结果的高w位 存储在中间结果寄存器t3、t2中,其中,t3存储所述高w位中的高32位,t2存储高w位中 的低32位;运算结果的低w位存储在中间结果寄存器tl、t0中,其中,tl存储低w位中的 高32位,t0存储低w位中的低32位;运算结果的进位存储在进位保存寄存器C2中,并且 将运算结果右移w位。
[0040] 优选地,该方法还包括:高位计算模块每执行一次运算,将第二计算模块产生的w 位的运算结果保存在数据m的m[2i+l]、m[2i]存储位置,其中m[2i+l]存储运算结果的高 32位,m[2i]存储运算结果的低32位;高位计算模块
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1