一种对数据进行RSA安全签名的方法、装置及安全芯片与流程

文档序号:12039392阅读:245来源:国知局
一种对数据进行RSA安全签名的方法、装置及安全芯片与流程
本发明涉及数据处理技术,尤其涉及一种对数据进行RSA安全签名的方法、装置及安全芯片。

背景技术:
RSA公钥加密算法是一种主流的公钥密码算法,广泛应用于信息认证和加密领域。基于RSA公钥密码算法实现的对数据进行签名的RSA安全签名方法,在应用于智能卡芯片、USBKey芯片等安全芯片中时,需要能够抵御多种对于所述安全芯片的攻击行为,这些攻击行为的目的是获取上述芯片中的RSA私钥或RSA私钥的部分信息。上述对于安全芯片的攻击行为主要可以分为两类:第一类是侧信道攻击(SideChannelAttacks,SCA),SCA通过观测和分析密码运算过程中的功耗、时序、电磁辐射等侧信道信息来获取RSA私钥或RSA私钥的部分信息,SCA包括简单功耗分析/攻击(SimplePowerAnalysis/Attack,SPA)、差分功耗分析/攻击(DifferentialPowerAnalysis/Attack,DPA)、(ElectromagneticAnalysis/Attack,EMA)、时序分析/攻击(TimingAnalysis/Attack,TA)等;SCA不主动干扰安全芯片的运行,属于被动攻击。第二类是错误分析/攻击(FaultAnalysis/Attacks,FA),FA引入错误干扰密码运算过程,通过观测和分析密码运算设备对错误的反应和可能返回的隐含错误的结果来获取密钥或密钥的部分信息;FA主动干扰安全芯片的运行,属于主动攻击。现有技术中,RSA私钥主要都是在模幂运算阶段泄露的。例如,假设RSA的私钥为d、p和q,其中p和q为两个大素数,则对应的RSA公钥为e和N=p*q。RSA私钥d参与的关键运算是mdmodN,如果采用中国剩余定理(CRT)计算mdmodN,则在RSA安全签名处理中需要计算mdpmodp和mdqmodq,其中dp=dmod(p-1)、dq=dmod(q-1)。不管是SCA还是FA,都是在模幂运算mdmodN、mdpmodp和mdqmodq过程中获取RSA私钥或RSA私钥的部分信息的。因此,现有技术中一般在模幂运算中加入防御措施以保证RSA安全签名方法的安全性,其中常用的一种防御措施是在进行模幂运算时使用采用随机数对底数或运算结果存储单元的初始值进行随机化的安全模幂算法进行RSA安全签名过程中的模幂运算。但是,发明人发现采用上述安全模幂算法实现的RSA安全签名方法对数据进行RSA安全签名时,运算时间长,运算性能差。

技术实现要素:
本发明实施例中提供了一种对数据进行RSA安全签名的方法、装置及安全芯片,能够缩短对数据进行RSA安全签名的运算时间,提高对数据进行RSA安全签名的运算性能。本发明实施例提供一种对数据进行RSA安全签名的方法,其特征在于,包括:预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;存储所述RSA私钥、所述n个原始随机数及其逆元;当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。其中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名包括:产生一个第一小随机数,所述第一小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算所述原始随机数的第一小随机数次幂,得到签名所需随机数;计算所述原始随机数的逆元的第一小随机数次幂,得到所述签名所需随机数的逆元;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名包括:计算所述原始随机数的m1次幂,得到签名所需随机数;计算所述原始随机数的逆元的m1次幂,得到所述签名所需随机数的逆元;m1为大于1的自然数;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名包括:产生第二小随机数和第三小随机数,所述第二小随机数和第三小随机数均是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算第一原始随机数的第二小随机数次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的第二小随机数次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的第三小随机数次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的第三小随机数次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名包括:计算第一原始随机数的m2次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的m2次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的m3次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的m3次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。还包括:更新存储的所述n个原始随机数及其逆元。所述更新存储的所述n个原始随机数及其逆元包括:重新产生n个原始随机数,并计算重新产生的n个原始随机数中每个随机数的逆元;将存储的所述n个原始随机数及其逆元替换为重新产生的所述n个原始随机数及其逆元。所述更新存储的所述n个原始随机数及其逆元包括:产生第四小随机数,所述第四小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;对于每个原始随机数及其逆元,计算该原始随机数的第四小随机数次幂作为新的原始随机数,计算该原始随机数的逆元的第四小随机数次幂作为所述新的原始随机数的逆元;使用计算得到的所述新的原始随机数及其逆元替换存储的所述n个原始随机数及其逆元。存储所述RSA私钥、所述n个随机数及其逆元包括:将所述RSA私钥、所述n个随机数及其逆元存储在非易失性存储器中。本发明实施例还提供一种对数据进行RSA安全签名的装置,包括:预处理单元,用于预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;存储单元,用于存储所述RSA私钥、所述n个原始随机数及其逆元;签名单元,用于当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。其中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述签名单元具体用于:产生一个第一小随机数,所述第一小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算所述原始随机数的第一小随机数次幂,得到签名所需随机数;计算所述原始随机数的逆元的第一小随机数次幂,得到所述签名所需随机数的逆元;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述签名单元具体用于:计算所述原始随机数的m1次幂,得到签名所需随机数;计算所述原始随机数的逆元的m1次幂,得到所述签名所需随机数的逆元;m1为大于1的自然数;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述签名单元具体用于:产生第二小随机数和第三小随机数,所述第二小随机数和第三小随机数均是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算第一原始随机数的第二小随机数次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的第二小随机数次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的第三小随机数次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的第三小随机数次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述签名单元具体用于:计算第一原始随机数的m2次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的m2次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的m3次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的m3次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。还包括:更新单元,用于更新所述存储单元存储的所述n个原始随机数及其逆元。所述更新单元具体用于:重新产生n个原始随机数,并计算重新产生的n个原始随机数中每个随机数的逆元;将存储的所述n个原始随机数及其逆元替换为重新产生的所述n个原始随机数及其 逆元。所述更新单元具体用于:产生第四小随机数,所述第四小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;对于每个原始随机数及其逆元,计算该原始随机数的第四小随机数次幂作为新的原始随机数,计算该原始随机数的逆元的第四小随机数次幂作为所述新的原始随机数的逆元;使用计算得到的所述新的原始随机数及其逆元替换存储的所述n个原始随机数及其逆元。所述存储单元通过非易失性存储器实现。本发明实施例还提供一种安全芯片,包括上述任一种对数据进行RSA安全签名的装置。本实施例中,预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;存储所述RSA私钥、所述n个原始随机数及其逆元;当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。由于本发明实施例中将产生原始随机数、计算原始随机数逆元的过程预先完成,在对所述数据进行RSA安全签名的过程中,无需产生用于随机化底数或运算结果存储单元的初始值的随机数,也无需计算随机数的逆元,从而缩短了对数据进行RSA安全签名的运算时间,提高了对数据进行RSA安全签名的运算性能。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1A为本发明实施例的应用环境示例图;图1为本发明对数据进行RSA安全签名的方法第一实施例示意图;图2为本发明对数据进行RSA安全签名的方法第二实施例示意图;图3为本发明对数据进行RSA安全签名的装置第一实施例示意图;图4为本发明对数据进行RSA安全签名的装置第二实施例示意图。具体实施方式现有技术中,采用随机数对底数或运算结果存储单元的初始值进行随机化的安全模 幂算法一般需要在计算中使用随机数r及其逆元r-1modM,而逆元r-1modM的计算时间与RSA安全签名方法未使用上述安全模幂算法时模幂运算的运算时间相当,大幅降低了RSA安全签名方法的运算性能,增加了RSA安全签名方法的运算时间,降低了此类RSA安全签名方法的实用性。为此,本发明实施例提供一种对数据进行RSA安全签名的方法及装置,能够提高RSA安全签名的运算性能,减少RSA安全签名运算时间。需要说明的是,本发明实施例中出现了多种随机数的名称,如原始随机数、小随机数、第一小随机数~第四小随机数、签名所需随机数、签名所需第一随机数、签名所需第二随机数等,这些都是随机数,仅是产生的时机或者用途不同,通过不同的名称以便对产生时机或用途不同的随机数进行区分。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了更好的说明本发明所述方法、装置及安全芯片的实现,首先对本发明所述方法、装置及安全芯片的应用环境举例说明,参见图1A,其中,安全芯片110设置于数据发送设备120中,当数据发送设备120需要进行数据的发送时,由安全芯片110对需要发送的数据进行RSA安全签名,之后,由数据发送设备120将进行了RSA安全签名的数据发送至数据接收设备130。参见图1,为本发明对数据进行RSA安全签名的方法第一实施例示意图,该方法一般应用于不同的安全芯片中,该方法包括:步骤101:预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;步骤102:存储所述RSA私钥、所述n个原始随机数及其逆元;步骤103:当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。所述预先是指在步骤103中对数据进行RSA安全签名之前。本实施例中,预先产生n个原始随机数,计算每个所述原始随机数的逆元,将所述n个原始随机数及其逆元与RSA私钥一起存储,之后,当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。由于本发明实施例中将产生原始随机数、计算原始随机数逆元的过程预先完成,在对所述数据进行RSA安全签名的过程中,无需产生用于随机化底数或运算结果存储单元的初始值的 随机数,也无需计算随机数的逆元,从而缩短了对数据进行RSA安全签名的运算时间,提高了对数据进行RSA安全签名的运算性能。参见图2,为本发明对数据进行RSA安全签名的方法第二实施例示意图,以该方法应用于安全芯片为例;该方法包括:步骤201:安全芯片预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元。其中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1,也即安全芯片仅产生一个原始随机数;当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2,也即安全芯片产生2个原始随机数,以下本发明实施例中将产生的2个原始随机数分别称为第一原始随机数和第二原始随机数。其中,所述第一原始随机数与第二原始随机数可以相同或不同,这里不限定,但是最好第一原始随机数与第二原始随机数不同。步骤202:安全芯片将所述RSA私钥、所述n个原始随机数及其逆元存储在非易失性存储器中。步骤203:当安全芯片需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。其中,本步骤中对所述数据进行RSA安全签名时,可以直接使用所述n个原始随机数及其逆元作为RSA安全签名所需的随机数及其逆元,进行RSA签名中的模幂运算,实现对所述数据的RSA安全签名;或者,为了能够保证RSA安全签名中所使用的随机数的随机性,也可以对所述n个原始随机数及其逆元进行运算处理后,将运算处理得到的随机数及其逆元作为RSA安全签名所需的随机数及其逆元,对所述数据进行RSA安全签名,此时,在第一种可能的实现方式中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名可以包括:产生一个第一小随机数,所述第一小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算所述原始随机数的第一小随机数次幂,得到签名所需随机数;计算所述原始随机数的逆元的第一小随机数次幂,得到所述签名所需随机数的逆元;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。在该种实现方式中,将原始随机数及其逆元的第一小随机数次幂作为新的随机数和逆元参与RSA安全签名中的模幂运算,以增加随机数的随机性。假设RSA的私钥为d、p和q,其中p和q为两个大素数,则对应的RSA公钥为e 和N=p*q。那么,假设原始随机数为r,原始随机数的逆元为r-1,产生的第一小随机数为t,则,计算得到的签名所需随机数为rt,签名所需随机数的逆元为(r-1)t。原始随机数和原始随机数的逆元所使用的模为N。在第二种可能的实现方式中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名可以包括:计算所述原始随机数的m1次幂,得到签名所需随机数;计算所述原始随机数的逆元的m1次幂,得到所述签名所需随机数的逆元;m1为大于1的自然数;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。在该种实现方式中,将原始随机数及其逆元的m1次幂作为新的随机数和逆元参与RSA安全签名中的模幂运算,以增加随机数的随机性。而且,相对于第一种可能的实现方式,该种实现方式中无需产生第一小随机数,从而进一步缩短了对数据进行RSA安全签名的运算时间。假设RSA的私钥为d、p和q,其中p和q为两个大素数,则对应的RSA公钥为e和N=p*q,那么,假设原始随机数为r,原始随机数的逆元为r-1,则,计算得到的签名所需随机数为rm1,签名所需随机数的逆元为(r-1)m1。原始随机数和原始随机数的逆元所使用的模为N。在第三种可能的实现方式中,当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名可以包括:产生第二小随机数和第三小随机数,所述第二小随机数和第三小随机数均是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算第一原始随机数的第二小随机数次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的第二小随机数次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的第三小随机数次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的第三小随机数次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。其中,所述第二小随机数和第三小随机数可以相同或不同,这里并不限定,但是,第二小随机数和第三小随机数最好不同。在该种实现方式中,将第一原始随机数及其逆元的第二小随机数次幂、第二原始随机数及其逆元的第三小随机数次幂作为新的随机数和逆元参与RSA安全签名中的模幂运算,以增加随机数的随机性。假设RSA的私钥为d、p和q,其中p和q为两个大素数,则对应的RSA公钥为e和N=p*q,那么,假设第一原始随机数为r1,第二原始随机数为r2,第一原始随机数的逆元为r1-1,第二原始随机数的逆元为r2-1,第二小随机数为t1,第三小随机数为t2,则,计算得到的签名所需随机数分别为r1t1、r2t2,签名所需随机数的逆元分别为(r1-1)t1、(r2-1)t2。第一原始随机数及其逆元的模为p,第二原始随机数及其逆元的模为q。在第四种可能的实现方式中,当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名可以包括:计算第一原始随机数的m2次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的m2次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的m3次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的m3次幂,得到所述签名所需第二随机数的逆元;m2、m3可以为大于1的自然数;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。在该种实现方式中,将第一原始随机数及其逆元的m2次幂、第二原始随机数及其逆元的m3次幂作为新的随机数和逆元参与RSA安全签名中的模幂运算,以增加随机数的随机性。而且,相对于第三种可能的实现方式,该种实现方式中无需产生第二小随机数和第三小随机数,从而进一步缩短了对数据进行RSA安全签名的运算时间。假设RSA的私钥为d、p和q,其中p和q为两个大素数,则对应的RSA公钥为e和N=p*q,那么,假设第一原始随机数为r1,第二原始随机数为r2,第一原始随机数的逆元为r1-1,第二原始随机数的逆元为r2-1,则,计算得到的签名所需随机数分别为r1m2、r2m3,签名所需随机数的逆元分别为(r1-1)m2、(r2-1)m3。第一原始随机数及其逆元的模为p,第二原始随机数及其逆元的模为q。步骤204:安全芯片更新存储的所述n个原始随机数及其逆元。其中,所述安全芯片更新存储的所述n个原始随机数及其逆元的时机包括但不限于以下实现方式:安全芯片对数据进行一次RSA安全签名后更新、安全芯片对数据进行预设次数次RSA安全签名后更新、按照预设周期定时更新、或者不定时更新等。其中,所述预设次数以及所述预设周期的具体数值可以在实际应用中自主设定,本发明实施例并不限制。在第一种可能的实现方式中,所述更新存储的所述n个原始随机数及其逆元可以包括:重新产生n个原始随机数,并计算重新产生的n个原始随机数中每个随机数的逆元;将存储的所述n个原始随机数及其逆元替换为重新产生的所述n个原始随机数及其逆元。在第二种可能的实现方式中,所述更新存储的所述n个原始随机数及其逆元可以包括:产生第四小随机数,所述第四小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;对于每个原始随机数及其逆元,计算该原始随机数的第四小随机数次幂作为新的原始随机数,计算该原始随机数的逆元的第四小随机数次幂作为所述新的原始随机数的逆元;使用计算得到的所述新的原始随机数及其逆元替换存储的所述n个原始随机数及其逆元。其中,以上本发明实施例中所述的第一小随机数~第四小随机数,其比特数一般需要小于所述n个原始随机数中每个原始随机数的比特数的随机数;最好上述小随机数的比特数远远小于所述n个原始随机数中每个原始随机数的比特数的随机数,以便在保证所述随机数的随机性的同时,降低安全芯片的数据处理量,提高安全芯片对数据进行RSA安全签名的运算时间。例如,现有技术中RSA安全签名中所需使用的随机数及其逆元的比特数一般可以达到1000比特(bit)以上,那么所述小随机数的比特数可以为8bit、16bit、32bit、64bit等。其中,如果步骤203通过上述第一种可能的实现方式实现,则每次执行步骤203产生的所述第一小随机数可以与上一次执行步骤203产生的所述第一小随机数相同或不同,但最好不同。同样的,如果步骤203通过上述第三种可能的实现方式实现,则每次执行步骤203产生的所述第二小随机数可以与上一次执行步骤203产生的所述第二小随机数相同或不同,但最好不同;每次执行步骤203产生的所述第三小随机数可以与上一次执行步骤203产生的所述第三小随机数相同或不同,但最好不同。其中,一旦存储了所述n个原始随机数及其逆元,一般需要在第一次执行步骤203之前对各个原始随机数的逆元进行验证,以保证所存储的n个原始随机数的逆元的准确性,进而保证RSA安全签名的准确性。对于本发明实施例中的步骤201~步骤204:步骤201和步骤202为准备步骤,一般可以在安全芯片确定RSA私钥的同时,产生所述n个原始随机数并计算其逆元,进而存储所述RSA私钥和n个原始随机数及其逆元。一般的,一旦步骤201和步骤202预先执行完毕后,无需每次执行步骤203之前都执行所述步骤201和步骤202。而每次安全芯片所在的数据发送设备向外发送数据时,安全芯片都需要执行步骤203对所需发送的数据进行RSA安全签名,因此,步骤203可以在实际应用中多次执行。步骤204与步骤203之间的执行顺序与步骤204中安全芯片更新所述n个原始随机数及其逆元的时机有关,例如,如果更新所述n个原始随机数及其逆元的时机为安全芯片对数据进行一次RSA安全签名后更新,则每次执行步骤203之后都需要执行步骤204;如果更新所述n个原始随机数及其逆元的时机为安全芯片对数据进行预设次数次RSA安全签名后更新,则安全芯片每执行步骤203所述预设次数次后执行一次步骤204;而如果更新所述n个原始随机数及其逆元的时机为所述定时或不定时更新时,步骤204的执行依照时间确定,与步骤203之间将没有必然的执行顺序关系。本实施例中,预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;存储所述RSA私钥、所述n个原始随机数及其逆元;当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。由于本发明实施例中将产生原始随机数、计算原始随机数逆元的过程预先完成,在对所述数据进行RSA安全签名的过程中,无需产生用于随机化底数或运算结果存储单元的初始值的随机数,也无需计算随机数的逆元,从而缩短了对数据进行RSA安全签名的运算时间,提高了对数据进行RSA安全签名的运算性能。并且,安全芯片更新存储的所述n个原始随机数及其逆元,保证了RSA安全签名中所使用随机数的随机性。与上述方法相对应的,本发明实施例还提供一种对数据进行RSA安全签名的装置,参见图3,该装置300包括:预处理单元310,用于预先确定RSA安全签名所使用的RSA私钥,并且,预先产生n个原始随机数,计算每个所述原始随机数的逆元;n为1或2;存储单元320,用于存储所述RSA私钥、所述n个原始随机数及其逆元;签名单元330,用于当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。在第一种可能的实现方式中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述签名单元330具体可以用于:产生一个第一小随机数,所述第一小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算所述原始随机数的第一小随机数次幂,得到签名所需随机数;计算所述原始随机数的逆元的第一小随机数次幂,得到所述签名所需随机数的逆元;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。在第二种可能的实现方式中,当所述RSA安全签名是不采用CRT的RSA安全签名时,所述n的取值为1;所述签名单元330具体可以用于:计算所述原始随机数的m1次幂,得到签名所需随机数;计算所述原始随机数的逆元的m1次幂,得到所述签名所需随机数的逆元;m1为大于1的自然数;根据所述RSA私钥、所述签名所需随机数及其逆元对所述数据进行RSA安全签名。在第三种可能的实现方式中,当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述签名单元330具体可以用于:产生第二小随机数和第三小随机数,所述第二小随机数和第三小随机数均是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;计算第一原始随机数的第二小随机数次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的第二小随机数次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的第三小随机数次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的第三小随机数次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。在第四种可能的实现方式中,当所述RSA安全签名是采用CRT的RSA安全签名时,所述n的取值为2;所述2个原始随机数分别为第一原始随机数和第二原始随机数;所述签名单元330具体可以用于:计算第一原始随机数的m2次幂,得到签名所需第一随机数;计算第一原始随机数的逆元的m2次幂,得到所述签名所需第一随机数的逆元;计算第二原始随机数的m3次幂,得到签名所需第二随机数;计算第二原始随机数的逆元的m3次幂,得到所述签名所需第二随机数的逆元;根据所述RSA私钥、所述签名所需第一随机数及其逆元、所述签名所需第二随机数及其逆元对所述数据进行RSA安全签名。优选地,参见图4所示,该装置300还可以包括:更新单元340,用于更新所述存储单元320存储的所述n个原始随机数及其逆元。在第一种可能的实现方式中,所述更新单元340具体可以用于:重新产生n个原始随机数,并计算重新产生的n个原始随机数中每个随机数的逆元;将存储的所述n个原始随机数及其逆元替换为重新产生的所述n个原始随机数及其逆元。在第二种可能的实现方式中,所述更新单元340具体可以用于:产生第四小随机数,所述第四小随机数是比特数小于所述n个原始随机数中每个原始随机数的比特数的随机数;对于每个原始随机数及其逆元,计算该原始随机数的第四小随机数次幂作为新的原始随机数,计算该原始随机数的逆元的第四小随机数次幂作为所述新的原始随机数的逆 元;使用计算得到的所述新的原始随机数及其逆元替换存储的所述n个原始随机数及其逆元。优选地,所述存储单元可以通过非易失性存储器实现。本实施例中,预先产生n个原始随机数,计算每个所述原始随机数的逆元,将所述n个原始随机数及其逆元与RSA私钥一起存储,之后,当需要对数据进行RSA安全签名时,根据存储的所述RSA私钥、所述n个原始随机数及其逆元对所述数据进行RSA安全签名。由于本发明实施例中将产生原始随机数、计算原始随机数逆元的过程预先完成,从而在对所述数据进行RSA安全签名的过程中,无需产生用于随机化底数或运算结果存储单元的初始值的随机数,也无需计算随机数的逆元,从而缩短了对数据进行RSA安全签名的运算时间,提高了对数据进行RSA安全签名的运算性能。另外,本发明实施例还提供一种安全芯片,所述安全芯片包括图3和图4所示的装置。详细描述参见图3和图4,这里不赘述。本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1