一种模幂运算的处理方法、装置及密码设备的制造方法_2

文档序号:9379942阅读:来源:国知局
采用不同运算规则的乘法算法,所述N个乘法算法中也可以包含至少两个采用相同运算规则的乘法算法。
[0052]本发明实施例中,当N = 2时,预设的2个乘法算法可以为(I1 = (A-r) *A mod η和d2 = (r-A)*A mod n,这2个乘法算法是2个采用不同运算规则的乘法算法,这2个乘法算法中包括了模乘和模减运算。
[0053]当N = 2时,预设的2个乘法算法可以为Cl1 = (A+r) *A mod η和d2 = (A+r) *2A modn,这2个乘法算法是2个采用不同运算规则的乘法算法,这2个乘法算法中包括了模乘和模加运算。
[0054]当N = 2时,预设的2个乘法算法可以为(I1 = (A-r) * (A+r) mod η和d2 =(r-A) * (A+r) mod n,这2个乘法算法是2个采用不同运算规则的乘法算法,这2个乘法算法中包括了模乘、模加和模减运算。
[0055]当N = 3,预设的 3 个乘法算法可以为 Cl1 = 2A*A mod n、d2 = _4A*A mod n、d3 =2A*A mod n,这3个乘法算法中有2个采用相同运算规则的乘法算法,这3个乘法算法中只包括了模乘运算。
[0056]密码设备中还包括一个第一校验模块、一个第一异常处理模块和一个第一输出模块,该第一校验模块采用预设的校验条件对该N个模方中间计算结果进行验证,如果验证通过,则表示密码设备没有遭遇到DFA攻击,该N个模方中间计算结果均正确,则可以根据第R个乘法算法和第R个模乘中间计算结果计算得到本次模方运算的结果,并通过所述第一输出模块输出本次模方运算的结果;如果验证没有通过,则第一校验模块通知第一异常处理模块进行异常处理,该异常处理模块可产生中断或者进行报警等。
[0057]其中,R小于等于N,R大于等于I。
[0058]校验条件可以是判断N个模方中间计算结果之和是否为0,也可以是不为O的校验方式,在此不做限制。比如,当(I1= (A_r) *A mod n、d2 = (r_A) *A mod n时,可以将山+(12等于O作为校验条件;当(I1 = 2A*A mod n、d2 = _4A*A mod n时,可以将山+(12等于-(I1作为校验条件。
[0059]在步骤S102中,在进行模乘运算时,先采用预设的N个乘法算法,对模乘运算中的第一操作数和第二操作数进行处理,得到N个模乘中间计算结果,再根据预设的校验条件验证所述N个模乘中间计算结果是否满足预设的校验条件,如果满足预设的校验条件,则根据第R个乘法算法和第R个模乘中间计算结果计算得到本次模乘运算的结果。
[0060]在本发明实施例中,密码设备中还包括N个第二乘法模块,该N个第二乘法模块与步骤SlOl中的N个第一乘法模块中执行的乘法算法完全相同。
[0061]如,本发明实施例中,当N = 2时,预设的2个乘法算法可以为(I1 = (A-r) *B modη 和 d2 = (r-A) mod n。当 N = 3,预设的 3 乘法算法可以为 Cl1 = 2A*B mod n、d2 = _4A*Bmod n、d3 = 2A^Bmod n。
[0062]密码设备中还包括一个第二校验模块、一个第二异常处理模块和一个第二输出模块,该第二校验模块采用预设的校验条件对该N个模乘中间计算结果进行验证,如果验证通过,则表示密码设备没有遇到DFA攻击,该N个模乘中间计算结果均正确,则可以根据第R个乘法算法和第R个模乘中间计算结果计算得到本次模乘运算的结果,并通过第二输出模块输出本次模乘运算的结果;如果验证没有通过,则第二校验模块通知第二异常处理模块进行异常处理。
[0063]其中,R小于等于N,R大于等于I。
[0064]校验条件可以是判断N个模乘中间计算结果之和是否为0,也可以是不为O的校验方式,在此不做限制。比如,当(I1 = (A-r) *B mod n、d2 = (r-A) *B modn时,可以将(I^d2等于O作为校验条件;当(I1 = 2A*B mod n、d2 = -4A*B mod n时,可以将山+(12等于-(I1作为校验条件。
[0065]另外,需要说明的是,本实施例中,进行模幂的运算时,先执行步骤S101,再根据判定条件I判断是否执行步骤S102,如果是,执行完步骤S102后,可以根据判定条件2再判断是否执行步骤SlOl,直至判定条件I或2中的一个不成立为止,最后一次计算得到的模方运算的结果或者模乘运算的结果是模幂运算的结果,这是现有技术,判定条件I和判定条件2均在现有技术中有说明,本实施例中不加以详细介绍。另外,在验证密码设备遭遇到DFA攻击时,可以选择由第一异常处理模块和第二异常处理模块中的其中一个进行异常处理,这样可以节省成本。
[0066]在步骤S103中,将最后一次计算得到的模乘运算的结果或模方运算的结果作为模幂运算的结果。
[0067]下面以N = 2为例,来说明模方运算的结果和模乘运算的结果的计算过程,如图2所示。
[0068]其中,模方运算单元包括2个第一乘法模块、与该2个第一乘法模块均保持连接的第一校验模块、与所述第一校验模块连接的第一输出模块和与所述第一校验模块连接的第一异常处理模块,该2个第一乘法模块分别为第一乘法模块I和第一乘法模块2。通过模方运算单元可以计算得到一次模方运算的结果,也可以检测到密码设备是否遭受到DFA攻击。
[0069]模乘运算单元包括2个第二乘法模块、与该2个第二乘法模块均保持连接的第二校验模块、与所述第二校验模块连接的第二输出模块和与所述第二校验模块连接的第二异常处理模块,该2个第二乘法模块分别为第二乘法模块I和第二乘法模块2。通过模乘运算单元可以计算得到一次模乘运算的结果,也可以检测到密码设备是否遭受到DFA攻击。
[0070]其中,第二乘法模块I中执行的乘法算法与第一乘法模块I中执行的乘法算法相同,第二乘法模块2中执行的乘法算法与第一乘法模块2中执行的乘法算法相同。
[0071]其中,模方A2mod η的计算步骤如下:
[0072]步骤11、将A输入到第一乘法模块I和2进行模减和模乘操作:
[0073]第一乘法模块1:先计算模减(A-r) mod η,再计算模乘(A_r) *A mod η,得到(I1 ;
[0074]第一乘法模块2:先计算模减(r-A) mod η,再计算模乘(r_A) *A mod n,得到d2。
[0075]步骤12、将两个第一乘法模块的运算结果Clpd2均输入到第一校验模块进行校验:
[0076]首先计算山、d2的和山+(12,即(A_r) *A mod n+ (r~A) *Α mod η。
[0077]接下来判断上述结果是否为0,如果为0,则通过校验,说明没有遭受DFA攻击;如果不为0,则校验不通过,认为密码设备遭受DFA攻击。
[0078]步骤3、如果通过校验,则进入第一输出模块,在第一输出模块中根据预设的第I个乘法算法进行一个模乘和一个模加操作,得到模方A2mod η:
[0079]模乘操作:计算A*r mod η
[0080]模加操作:计算(c^+A^^1mod n = (A-r) *A mod n+A*r mod n = A2mod n。
[0081]当然,也可以根据需要,根据预设的第2个乘法算法进行一个模乘和一个模减操作,得到模方A2H1d η,在此不做限制。
[0082]步骤4、如果未通过校验,则进入第一异常处理模块,第一异常处理模块可产生中断或进行报警等。
[0083]模乘A*Bmod η的计算步骤如下:
[0084]步骤1、将Α、B分别输入到第二乘法模块I和2进行模减和模乘操作:
[0085]第二乘法模块1:先计算模减(A-r) mod η,再计算模乘(A_r) *B mod n,得到(I1 ;
[0086]第二乘法模块2:先计算模减(r-A) mod η,再计算模乘(r_A) *B mod n,得到d2。
[0087]步骤2、将两个第二乘法模块的运算结果山、d2均输入到第二校验模块进行校验:
[0088]首先计算山、d2的和山+(12,即((A-r)*B+(r-A)*B)mod η ;
[0089]接下来判断上述结果是否为0,如果为0,则通过校验;如果不为0,则校验不通过,认为密码设备遭受DFA攻击。
[0090]步骤3、如果通过校验,则进入第二输出模块,在第二输出模块中根据预设的第I个乘法算法进行一个模乘和一个模加操作,得到模乘A*B mod η:
[0091]模乘操作:计算B*r mod η
[0092]模加操作:计算(c^+B^1modn = (A-r) *B mod n+B*r mod n = A*B mod n。
[0093]当然,也可以在第二输出模块中根据预设的第2个乘法算法进行一个模乘和一个模减操作得到:
[0094]模乘操作:计算B*r mod η
[0095]模加操作:计算 B*r mod n-山=B*r mod n_ (r-A) *B mod n = A*B mod n
[0096]当然,也可以根据需要,根据预设的第2个乘法算法进行一个模乘和一个模减操作,得到模方A*B mod η,具体采用何种方式不做限制,只要第二输出模块中采用的算法是预设的N个乘法算法中的一个即可,
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1