一种rsa-crt签名方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及信息安全领域,尤其涉及一种RSA-CRT签名方法及装置。
【背景技术】
[0002]RSA算法是目前应用最广泛的公钥密码算法。一般在解密或者签名阶段为了提高签名(解密)效率,可以使用中国剩余定理(简称CRT)对其加速。使用中国剩余定理方法的RSA签名(解密)算法比标准的RSA算法速度要快约4倍,但是使用CRT方法面临故障(Fault-attack,简称FA)攻击,攻击者只需要在签名(解密)过程中对CRT方法中模幂算法中注入一个错误,产生了一个错误的输出结果,然后对这个错误的输出结果进行公钥运算,最后求公钥运算的结果与模数的最大公约数,即可分解出素因子。因此,使用RSA-CRT所面临的FA攻击是目前要解决的问题。
【发明内容】
[0003]本发明针对现有技术中在RSA算法中使用CRT方法面临的FA攻击提出了相应的防御方法,该方法可以有效地防御RSA-CRT故障攻击,同时还可以防御RSA-CRT 二阶故障攻击。
[0004]本发明的技术方案如下:
[0005]本发明提供了一种RSA-CRT签名方法,当获取到待签名数据、第一私钥数据、第二私钥数据、第三私钥数据和第四私钥数据时,生成随机数,并执行以下步骤:
[0006]步骤SI,根据所述待签名数据、所述第一私钥数据、所述第二私钥数据、所述第三私钥数据和所述随机数计算得到第一模幂运算结果和第二模幂运算结果;
[0007]步骤S2,根据所述第一模幂运算结果、所述第二模幂运算结果和所述随机数计算得到第一运算结果和第二运算结果;
[0008]步骤S3,判断所述第一运算结果和所述第二运算结果是否相等,是则执行步骤S4,否则报错,结束;
[0009]步骤S4,根据所述第一私钥数据、所述第二私钥数据、所述第一模幂运算结果和所述第二模幂运算结果计算得到第一取模结果和第二取模结果;根据所述第一取模结果、所述第二取模结果、所述第一私钥数据、所述第二私钥数据和所述第四私钥数据计算得到签名值;
[0010]步骤S5,根据所述签名值、所述第一私钥数据和所述第一模幂运算结果计算得到第三运算结果和第四运算结果,根据所述签名值、所述第二私钥数据和所述第二模幂运算结果计算得到第五运算结果和第六运算结果;
[0011]步骤S6,判断是否满足所述第三运算结果与所述第四运算结果相等且所述第五运算结果与所述第六运算结果相等,是则执行步骤S7,否则报错,结束;
[0012]步骤S7,输出所述签名值,结束。
[0013]所述第一私钥数据、第二私钥数据、第三私钥数据和第四私钥数据分别存储在第一存储器、第二存储器、第三存储器和第四存储器中,所述步骤SI之前还包括:随机生成第一素数和第二素数并分别作为第一私钥数据和第二私钥数据存储在第一存储器和第二存储器;对所述第一素数减I的结果与所述第二素数减I的结果做乘法运算得到第一中间计算结果,选取满足预设条件的数值,对选取的所述数值做模数为所述第一中间计算结果的模逆运算,将得到的模逆运算结果作为第三私钥数据存储在第三存储器;对所述第二素数做模数为所述第一素数的模逆运算,将得到的模逆运算结果作为第四私钥数据存储在第四存储器。
[0014]上述步骤SI具体包括:
[0015]对所述第一私钥数据和所述随机数做乘法运算得到第一相乘结果,对所述第二私钥数据和所述随机数做乘法运算得到第二相乘结果;对所述待签名数据做模数为所述第一相乘结果的模运算得到第二中间计算结果,对所述待签名数据做模数为所述第二相乘结果的模运算得到第三中间计算结果;
[0016]对所述第一私钥数据减I的结果与所述随机数减I的结果做乘法运算得到第三相乘结果,对所述第二私钥数据减I的结果与所述随机数减I的结果做乘法运算得到第四相乘结果;对所述第三私钥数据做模数为所述第三相乘结果的模运算得到第四中间计算结果,对所述第三私钥数据做模数为所述第四相乘结果的模运算得到第五中间计算结果;
[0017]对所述第二中间计算结果做模数为所述第一相乘结果、幂指数为所述第四中间计算结果的模幂运算得到第一模幂运算结果,对所述第三中间计算结果做模数为所述第二相乘结果、幂指数为所述第五中间计算结果的模幂运算得到第二模幂运算结果。
[0018]上述步骤S2具体包括:
[0019]对所述第一模幂运算结果做模数为所述随机数的模运算得到第一运算结果,对所述第二模幂运算结果做模数为所述随机数的模运算得到第二运算结果。
[0020]上述步骤S4中所述根据所述第一私钥数据、所述第二私钥数据、所述第一模幂运算结果和所述第二模幂运算结果计算得到第一取模结果和第二取模结果具体包括:对所述第一模幂运算结果做模数为所述第一私钥数据的模运算得到第一取模结果,对所述第二模幂运算结果做模数为所述第二私钥数据的模运算得到第二取模结果。步骤S4中所述根据所述第一取模结果、所述第二取模结果、所述第一私钥数据、所述第二私钥数据和所述第四私钥数据计算得到签名值具体为,根据以下公式计算得到签名值S:S= (sp_sq)*(qinv modP)*q+sq,其中,sp为所述第一取模结果,sq为所述第二取模结果,P为所述第一私钥数据,q为所述第二私钥数据,qinv为所述第四私钥数据。
[0021 ] 上述步骤S5具体包括:
[0022]对所述签名值做模数为所述第一私钥数据的模运算得到第三运算结果,对所述第一模幂运算结果做模数为所述第一私钥数据的模运算得到第四运算结果,对所述签名值做模数为所述第二私钥数据的模运算得到第五运算结果,对所述第二模幂运算结果做模数为所述第二私钥数据的模运算得到第六运算结果。
[0023]本发明还提供了一种RSA-CRT签名装置,包括获取模块、随机数生成模块、模幂运算模块、第一运算模块、第一判断模块、签名模块、第二运算模块、第二判断模块和输出模块;
[0024]所述获取模块,用于获取待签名数据、第一私钥数据、第二私钥数据、第三私钥数据和第四私钥数据;
[0025]所述随机数生成模块,用于生成随机数;
[0026]所述模幂运算模块,用于根据所述待签名数据、所述第一私钥数据、所述第二私钥数据、所述第三私钥数据和所述随机数计算得到第一模幂运算结果和第二模幂运算结果;
[0027]所述第一运算模块,用于根据所述第一模幂运算结果、所述第二模幂运算结果和所述随机数计算得到第一运算结果和第二运算结果;
[0028]所述第一判断模块,用于判断所述第一运算结果和所述第二运算结果是否相等,是则触发所述签名模块工作,否则报错;
[0029]所述签名模块,用于根据所述第一私钥数据、所述第二私钥数据、所述第一模幂运算结果和所述第二模幂运算结果计算得到第一取模结果和第二取模结果;以及根据所述第一取模结果、所述第二取模结果、所述第一私钥数据、所述第二私钥数据和所述第四私钥数据计算得到签名值;
[0030]所述第二运算模块,用于根据所述签名值、所述第一私钥数据和所述第一模幂运算结果计算得到第三运算结果和第四运算结果,根据所述签名值、所述第二私钥数据和所述第二模幂运算结果计算得到第五运算结果和第六运算结果;
[0031]所述第二判断模块,用于判断所述第三运算结果是否与所述第四运算结果相等,以及判断所述第五运算结果是否与所述第六运算结果相等,若两次判断结果均为相等则触发所述输出模块工作,否则报错;
[0032]所述输出模块,用于输出所述签名值。
[0033]本发明提供的所述装置还包括第一存储器、第二存储器、第三存储器、第四存储器和私钥数据计算模块;
[0034]所述随机数生成模块还用于生成第一素数和第二素数,并将所述第一素数和第二素数分别作为第一私钥数据和第二私钥数据存储在第一存储器和第二存储器;
[0035]所述私钥数据计算模块,用于对所述第一素数减I的结果与所述第二素数减I的结果做乘法运算得到第一中间计算结果,选取满足预设条件的数值,对选取的所述数值做模数为所述第一中间计算结果的模逆运算,将得到的模逆运算结果作为第三私钥数据存储在第三存储器;以及用于对所述第二素数做模数为所述第一素数的模逆运算,将得到的模逆运算结果作为第四私钥数据存储在第四存储器。
[0036 ]本发明的有益效果在于:本发明提供的RSA-CRT签名方法及装置可以有效检测到攻击的发生,避免输出错误的签名值而被分解出私钥数据,从而有效地防御RSA-CRT故障攻击,并且本发明提供的签名方法仍然只需两次模幂运算,计算签名的效率高。
【附图说明】
[0037]图1是实施例1提供的一种RSA-CRT签名方法的流程图;
[0038]图2是实施例2提供的一种私钥数据生成流程图;
[0039]图3是实施例2提供的一种数字签名流程图;
[0040]图4是本实施例3提供的一种RSA-CRT签名装置的模块组成图。
【具体实施方式】
[0041]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明提供的实施例中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或数量或先后顺序。
[0042]实施例1
[0043]本实施例提供的一种RSA-CRT签名方法,当签名装置获取到待签名数据、第一私钥数据、第二私钥数据、第三私钥数据和第四私钥数据时,生成随机数,然后如图1所示执行以下步骤:
[0044]其中,所述第一私钥数据、第二私钥数据和随机数均为素数,且第一私钥数据和第二私钥数据的长度相等。例如,本实施例中待签名数据为m,第一私钥数据为p,第二私钥数据为q,第三私钥为d,第四私钥为qinv,随机数为r;优选的,第一私钥数据、第二私钥数据、第三私钥数据和第四私钥数据分别为预先存储在第一存储器、第二存储器、第三存储器和第四存储器中的数据,或者分别为由私钥数据生成装置生成并存储在第一存储器、第二存储器、第三存储器和第四存储器中的数据。
[0045]步骤SI,根据待签名数据、第一私钥数据、第二私钥数据、第三私钥数据和随机数计算得到第一模幂运算结果和第二模幂运算结果;
[0046]具体的,第一模幂运算结果为spl,第二模幂运算结果为sql,并根据以下公式计算得到:
[0047]pi =p*r ;ql =q*r ;mpl =m mod pl;mql=m mod ql ;
[0048]fi(pl) = (p-l)*(r-l),fi(ql) = (q_l )*(r_l);
[0049]dpi =d mod fi(pl) ,dql=d mod fi(ql);
[0050]spl=(mpl)'dpi mod pi;spl=(m mod(p*r))'(d mod((p_l)*(r_l)))mod(p*r);
[0051]sql = (mql)'dql mod ql。
[0052]步骤S2,根据所述第一模幂运算结果、所述第二模幂运算结果和所述随机数计算得到第一运算结果和第二运算结果;