模逆算法的无符号处理方法及模逆加速器的制造方法

文档序号:9813933阅读:389来源:国知局
模逆算法的无符号处理方法及模逆加速器的制造方法
【技术领域】
[0001] 本发明设及公钥密码算法技术领域,尤其是设及模逆算法的无符号处理方法及模 逆加速器。
【背景技术】
[0002] 在RSA、ECC等公钥密码算法中,一般使用拓展的欧几里得算法来实现模逆运算,拓 展的欧几里得算法如下所示:
[0003] 输入:v,u
[0004] 输出:v-imod u;u-imod V.
[0005] 步骤一、初始化中间变量Xl,X2,X3,Yl,Y2,Y3,使其分别为:Xl = I;X2 = 0;X3 = V; Yl=0;Y2 = l;Y3 = u;
[0006] 步骤二、判断X3和Y3的值:若X3和Y3同时不为I,跳转至步骤S;否则进入步骤四;
[0007] 步骤=、依次判断W下条件并执行相关操作:
[000引条件1.若X3为偶数:如果Xl,X2也都是偶数,则计算:X1 =Xl/2,X2 = X2/2,X3 = X3/ 2,否则计算:Xl =Xl+u,X2 = X2-v。若X3不是偶数,则判断条件2。
[0009] 条件2:若Y3为偶数:如果Y1,Y2也都是偶数,则计算:Y1=Y1/2,Y2 = Y2/2,Y3 = Y3/ 2,否则计算:Yl = Y1+U,Y2 = Y2-V。若Y3不是偶数,则判断条件3。
[0010] 条件3:若X3大于Y3,则计算Xl =Xl-Yl,X2=X2-Y2,X3=X3-Y3;
[0011] 否则计算:Yl =Yl-Xl,Y2 = Y2-X2,Y3 = Y3-X3;
[0012] 步骤S结束,跳转回步骤二;
[OOU]步骤四:若X3等于 1,输出结果:Xl=v-imod u,X2 = u-imod V;否则输出:Yl=V-Imod u,Y2 = u_imod V。
[0014] 拓展的欧几里得算法的迭代过程由大整数的移位、加法、减法来完成,在集成电路 的实现中有效的避免了乘法或者除法运算单元的资源耗费,然而也存在W下不足之处:
[0015] 1)在RSA、ECC等公钥密码算法中,包括模逆在内的几乎所有运算都是基于有限素 数域的,即输入和输出全部都是有限素数域[1,門内的正整数,也就是说所有基本运算都是 无符号数的运算,然而在上述算法的迭代过程中的减法操作可能会产生负数结果,而运个 负数会作为输入数据,参与到加法运算或者移位,运就意味着整个迭代过程实际上是有符 号的加、减、移位运算,运就需要增加额外的电路处理符号问题,使得集成电路繁琐;
[0016] 2)上述算法中加法操作有:X1=X1+U;Y1=Y1+U;运些加法操作会产生进位;上述 算法中减法操作有:Y2 = Y2-v;X2 = X2-v;Xl =Xl-Yl ;X2 = X2-Y2;X3 = X3-Y3; Yl = Yl-Xl ;Y2 =Y2-X2; Y3 = Y3-X3;运些减法操作中会产生借位;每一轮迭代结果的借位或者进位在下一 轮迭代过程中有可能被抵消,也有可能被叠加,在不断的重复中,运种叠加是不可预见的; 在集成电路中实现该算法时为了保证计算的正确性,往往不得不拓宽借位和进位的位宽、 增加额外的电路的方式来处理该问题;
[0017] 3)上述算法,对于两个输入数据V和U,可W得到V对于U的乘法逆元V-Imod U,也可 W得到U对于V的乘法逆元IfVod V,然而RSA、ECC等公钥密码算法中的模逆运算只需要求得 有限素数域巧内的数a的乘法逆元a^mod P即可,因此上述欧几里得扩展求模逆的算法对于 公钥密码算法而言存在一些不必要的计算,在集成电路应用中运些多余的计算使得算法整 体耗时也耗费资源。

【发明内容】

[0018] 本发明是为了解决拓展的欧几里得算法在硬件电路的实现需要专口处理符号和 多位进位问题的情况,提供一种便于实现硬件电路的、简化的、不需要专口处理符号和多位 进位问题的模逆算法的无符号处理方法及模逆加速器。
[0019] 为了实现上述目的,本发明提出了模逆算法的无符号处理方法,基于公钥密码算 法中拓展的欧几里得算法,采用模减运算代替拓展的欧几里得算法的步骤=、条件3中的减 法运算,剔除拓展的欧几里得算法的步骤S、条件1和条件2中的关于临时变量X2和Y2的相 关运算。
[0020] 作为优选,修改后的算法如下:
[0021] 输入:素数 p,ae[l,p-l];
[0022] 输出:a-imod P;
[002;3]步骤一、初始化中间变量Xl,X3,Yl,Y3,使其分别为:Xl = 1;X3 = a; Yl = 0; Y3 = P;
[0024] 步骤二、判断Y3的值不为0,跳转至步骤否则进入步骤四;
[0025] 步骤=、依次判断W下条件并执行相关操作:
[00%]条件1:若X3是偶数,完成W下操作:1.计算X3 = X3/2; 2.若Xl也是偶数,计算Xl = X1/2,否则先计算Xl =Xl+p后再计算Xl =Xl/2。若X3不是偶数,判断条件2;
[0027]条件2:若Y3是偶数,完成W下操作:1.计算Y3 = Y3/2;2.若Yl也是偶数,计算Yl = Y1/2,否则先计算Yl =Yl+p后再计算Yl =Yl/2.若Y3不是偶数,判断条件3;
[002引条件3:若X3大于Y3,则计算Xl = Xl-Yl mod p,X3 = X3-Y3。否则计算:¥1=¥1-Xlmod p,Y3 = Y3-X3;
[0029] 步骤S结束,跳转回步骤二;
[0030] 步骤四:输出结果:X1 mod P。
[0031] 修改后的算法采用模减运算代替原算法的步骤二、条件3中的减法运算,避免减法 运算引起的符号问题;剔除拓展的欧几里得算法的步骤二、条件1和条件2中的关于临时变 量X2和Y2的相关运算,使得算法简化;拓展的欧几里得算法的步骤二、条件1和条件2中的加 法运算的特点是:如果X1、Y1是偶数,那么将其减半,即向右移1位;如果XUYl是奇数,那么 加上素数P,此时得到的结果将是一个可能带有进位的偶数,在下一轮迭代中,若X3或者Y3 为偶数,上述结果作为输入数据,右移1位,上一轮产生的进位刚好被消除,但若X3、Y3都不 是偶数,则将进行减法操作,而此时的Xl和Yl都可能带有进位,若被减数是一个没有不带进 位的较小数,减数是一个带进位的较大数,那么该减法结果为负,且产生新的借位,与减数 自带的进位叠加,最后得到了一个借位为2的负数,如果再和运里产生的符号问题叠加,多 轮迭代后,或产生更大借位或者进位;本方案修改后的算法对于Xl和Yl处理的特点为:如果 XUYl是偶数,那么将其减半,即向右移1位;如果XUYl是奇数,那么加上素数P,此时得到的 结果将是一个可能带有进位的偶数,然后直接右移1位,此时移位前带有的进位亦被消除, 而不用等到下一轮,也就避免了新产生的借位、进位与上一轮产生的借位、进位叠加的问 题,解决了多次迭代后产生进位叠加的问题。
[0032] 完成权利要求1或2的模逆加速器,包括依次连接的总线接口、运算控制层、数据通 路、存储器接口,所述的运算控制层由相互连通的模逆运算控制模块和子运算模块组成,所 述的数据通路由连通的N位寄存器和N位加法器组成。本方案为有限素数域的模逆加速器架 构,可W支持素数域32-2048位的模逆运算,运算控制层由模逆运算控制模块和子运算模块 组成,模逆运算控制模块的控制流程中欲调用子模块进行某种运算时,向子运算模块传输 运算所需要的数据在存储器中的地址并拉高使能信号;子运算模块在运算过程中,按照模 逆运算控制模块提供的数据地址给数据通路分配地址,确保数据读写正常;子模块运算结 束后拉高完成信号,并且向模逆运算控制模块传输计算结果的状态(even、zero、cmp_r等), 模逆运算控制模块再根据运些状态来控制运算流程;存储器的读数据总线在数据通路中连 接N位寄存器的D端和N位加法器的其中一个数据端口,寄存器的Q端接加法器的另一个数据 端口,加法器的输出端口连接存储器的写数据总线;N是数据通路的基数,是基本运算中数 据的最小位宽,比如16、32、64等,具体取决于运算速度和资源占用等实际应用中的需求。
[0033] 作为优选,所述的子运算模块的操作类型包括加法操作。该加法操作类型适用于 本方案修改后的算法中所述的运算:Xl = Xl +P; Yl = Yl +P。
[0034] 作为优选,所述的子运算模块的操作类型包括模减法操作。该模减法操作类型适 用于本方案修改后的算法中所述的运算:X1 =Xl-Yl mod P;Yl =Yl-Xl mod P。
[0035] 作为优选,所述的子运算模块的操作类型包括移位操作。该移位操作类型适用于 本方案修改后的算法中所述的运算:Xl=Xl/2;X3 = X3/2;Yl=Yl/2;Y3 = Y3/2。
[0036] 作为优选,所述的子运算模块的操作类型包括减法操作。该减法
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1