本发明涉及信息安全领域用的模乘算法,尤其涉及适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法。
背景技术:
在信息安全芯片进行国密运算时,蒙哥马利模乘器是调用频率最高最耗时的模块,虽然通用算法可以适配任何国密曲线参数,但是针对使用频率占绝对优势的国密推荐曲线sm2p256v1,现有的信息安全芯片使用嵌套循环的计算方式,提高了时间复杂度,使得系统性能较差,同时芯片的功耗较大。
技术实现要素:
本发明的目的在于,大量减少信息安全芯片中蒙哥马利模乘器耗时的乘法运算,从而提高在国密sm2p256v1曲线参数下蒙哥马利模乘器的运算效率,减少相同运算过程的功耗。
本发明的发明目的是通过以下技术方案实现的:适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法,通过信息安全芯片中的蒙哥马利乘模器来实现,经过优化运算方法,从而降低芯片的运算功耗,其特征在于,蒙哥马利乘模器运算包括以下步骤:
s1:进行初始化操作;
s2:完成大数乘法运算;
s3:进行一次循环累加计算;
s4:进行一次无符号大数减法运算。
进一步的,所述的初始化操作具体为:首先初始化z=(z16,...,z0)=0,z是数据位宽为544bit的大数,初始化进位寄存器carry=0,carry的数据位宽为32bit.
进一步的,所述的大数乘法运算为:z=(z16,...,z0)=a×b,z=(z16,...,z0)为循环累加所需的中间变量,a和b为两个n-bit输入,均为位宽为256bit大整数。
进一步的,所述的循环累加计算为:在每一轮循环累加前,初始化进位寄存器c为0,其中c的数据位宽为32bit,并分别通过公式t=zi、x1=t<<32-t和x2=x1-t计算x1和x2,其中x1和x2为临时变量,数据位宽均为64bit,然后按照以下步骤依次计算出(zi+8,...,zi+0):
s41:(c,zi+0)=zi+0+x1+c;
s42:(c,zi+1)=zi+1+x1+c;
s43:(c,zi+2)=zi+2+0+c;
s44:(c,zi+3)=zi+3+x1+c;
s45:(c,zi+4)=zi+4+x1+c;
s46:(c,zi+5)=zi+5+x1+c;
s47:(c,zi+6)=zi+6+x1+c;
s48:(c,zi+7)=zi+7+x2+c;
s49:(carry,zi+8)=zi+8+c+caary;
如s41中(c,zi+0)=zi+0+x1+c,其中其中zi、zi+0的数据位宽均为32bit,c的数据位宽为64bit,步骤s42~s49以此类推,zi为32bit中间变量。
进一步的,所述的无符号的大数运算具体为:循环完成8次上述运算过程后,计算z16=carry,然后判断如果(z16,...,z8)≥m,则r=(z16,...,z8)-m,否则r=(z15,...,z8),最后输出r,其中m是n-bit模数。
有益效果:本发明将信息安全芯片中原有的蒙哥马利模乘器中的嵌套循环改进为一次循环累加的计算,从而大量减少蒙哥马利模乘器中耗时的乘法运算,并且提高了信息安全芯片在运算国密sm2p256v1曲线参数时蒙哥马利模乘器的运算效率,减少相同运算过程的功耗,在降低芯片运算功耗的基础上可以相应的简化信息安全芯片的内部结构,从而降低芯片的生产制造成本。基于sm2p256v1曲线参数的蒙哥马利模乘方法中的m×t运算,仅需要1次移位操作,2次减法运算,以及6次进位累加操作,该方法可以在椭圆曲线运算的软件程序中实施,也可以在可编程逻辑器件中实施,以sm2签名为例,使用该方法每次签名可以减少20万次左右的乘法运算。
具体实施方式
对本发明做进一步的描述,但本发明的保护范围不局限于以下所述。
本发明的发明目的是通过以下技术方案实现的:适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法,通过信息安全芯片中的蒙哥马利乘模器来实现,经过优化运算方法,从而降低芯片的运算功耗,其特征在于,蒙哥马利乘模器运算包括以下步骤:
s1:进行初始化操作;
s2:完成大数乘法运算;
s3:进行一次循环累加计算;
s4:进行一次无符号大数减法运算。
进一步的,所述的初始化操作具体为:首先初始化z=(z16,...,z0)=0,z是数据位宽为544bit的大数,初始化进位寄存器carry=0,carry的数据位宽为32bit。
进一步的,所述的大数乘法运算为:z=(z16,...,z0)=a×b,z=(z16,...,z0)为循环累加所需的中间变量,a和b为两个n-bit输入,均为位宽为256bit大整数。
进一步的,所述的循环累加计算为:在每一轮循环累加前,初始化进位寄存器c为0,其中c的数据位宽为32bit,并分别通过公式t=zi、x1=t<<32-t和x2=x1-t计算x1和x2,其中x1和x2为临时变量,数据位宽均为64bit,然后按照以下步骤依次计算出(zi+8,...,zi+0):
s41:(c,zi+0)=zi+0+x1+c;
s42:(c,zi+1)=zi+1+x1+c;
s43:(c,zi+2)=zi+2+0+c;
s44:(c,zi+3)=zi+3+x1+c;
s45:(c,zi+4)=zi+4+x1+c;
s46:(c,zi+5)=zi+5+x1+c;
s47:(c,zi+6)=zi+6+x1+c;
s48:(c,zi+7)=zi+7+x2+c;
s49:(carry,zi+8)=zi+8+c+caary;
如s41中(c,zi+0)=zi+0+x1+c,其中zi、zi+0的数据位宽均为32bit,x1和c的数据位宽均为64bit,步骤s42~s49以此类推,zi为32bit中间变量。
进一步的,所述的无符号的大数运算具体为:循环完成8次上述运算过程后,计算z16=carry,然后判断如果(z16,...,z8)≥m,则r=(z16,...,z8)-m,否则r=(z15,...,z8),最后输出r,其中m是n-bit模数。
进一步的,所述的国密sm2p256v1算法是国密推荐的素数域256位椭圆曲线参数,椭圆曲线方程为y2=x3+ax+b,曲线参数如下:
p=fffffffeffffffffffffffffffffffffffffffff00000000ffffffffffffffff
a=fffffffeffffffffffffffffffffffffffffffff00000000fffffffffffffffc
b=28e9fa9e9d9f5e344d5a9e4bcf6509a7f39789f515ab8f92ddbcbd414d940e93
n=fffffffeffffffffffffffffffffffff7203df6b21c6052b53bbf40939d54123
gx=32c4ae2c1f1981195f9904466a39c9948fe30bbff2660be1715a4589334c74c7
gy=bc3736a2f4f6779c59bdcee36b692153d0a9877cc62a474002df32e52139f0a0
其中参数p为蒙哥马利模乘中需要固定使用参数。
进一步的,适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法的执行流程为:
输入:整数m=(ms-1,...,m0)r,a=(as-1,...,a0)r,b=(bs-1,...,b0)r,其中0≤a,b≤m,r=2w,
输出:a×b×r-1modm;
计算过程:
有益效果:本发明将信息安全芯片中原有的蒙哥马利模乘器中的嵌套循环改进为一次循环累加计算,从而大量减少蒙哥马利模乘器中耗时的乘法运算,并且提高了信息安全芯片在运算国密sm2p256v1曲线参数时蒙哥马利模乘器的运算效率,减少相同运算过程的功耗,在降低芯片运算功耗的基础上可以相应的简化信息安全芯片的内部结构,从而降低芯片的生产制造成本。基于sm2p256v1曲线参数的蒙哥马利模乘方法中的m×t运算,仅需要1次移位操作,2次减法运算,以及6次进位累加操作,该方法可以在椭圆曲线运算的软件程序中实施,也可以在可编程逻辑器件中实施,以sm2签名为例,使用该方法每次签名可以减少20万次左右的乘法运算。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。