一种安全的RSA运算实现方法及装置制造方法及图纸

技术编号:20430688 阅读:27 留言:0更新日期:2019-02-23 10:40
本发明专利技术公开一种安全的RSA运算实现方法及装置,方法包括:根据输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果;根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;根据第四随机数、第五随机数、第三随机数、第二随机素数、RSA私钥和RSA公钥的第二数据生成第二中间数据;根据第一中间数据、第二中间数据和RSA公钥的第二数据生成结果数据;根据结果数据和RSA公钥生成第三中间数据;判断第三中间数据是否与输入数据一致,是则输出结果数据,否则报错。

A Secure RSA Operating Method and Device

The invention discloses a secure RSA operation implementation method and device. The method includes: calculating the third random number according to the input data and the second data of RSA public key to obtain the mask result; generating the first intermediate data according to the first random number, the second random number, the first random prime number, the mask result, the second data of RSA private key and RSA public key; The fourth random number and the fifth random number, the second random prime of the preset length; the second intermediate data is generated from the second data of the fourth random number, the fifth random number, the third random number, the second random prime number, the RSA private key and the RSA public key; the result data is generated from the first intermediate data, the second intermediate data and the second data of the RSA public key; and the first intermediate data and the RSA public key are generated from the result data and the RSA public key. Three intermediate data; judging whether the third intermediate data is consistent with the input data, is the output result data, otherwise the error will be reported.

【技术实现步骤摘要】
一种安全的RSA运算实现方法及装置
本专利技术涉及信息安全领域,尤其涉及一种安全的RSA运算实现方法及装置。
技术介绍
RSA加密算法是一种非对称加密算法,它既能用于加密,也能用于数字签名。RSA的安全基于大数分解的难度,RSA公钥和RSA私钥是一对大素数的函数。从一个RSA公钥和密文恢复出明文的难度相当于分解两个大素数之积。其中,RSA的RSA公钥是(e,n),RSA的RSA私钥是(d,n),RSA的加密公式为:C=m^emodn,标准的RSA的解密公式为:m=C^dmodn,其中e是RSA公钥数值,n是模,d是RSA私钥数值,C是密文,m是明文。RSA在javacard上的计算过程中很容易被攻击者使用模板攻击、错误注入等手段识别出RSA私钥,存在安全隐患。
技术实现思路
本专利技术的目的是为了克服现有技术的不足,提供一种安全的RSA运算方法及装置。本专利技术提供了一种安全的RSA运算实现方法,包括:步骤S1:装置获取RSA私钥、RSA公钥和输入数据;生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;步骤S2:所述装置根据所述输入数据、RSA公钥的第二数据对所述第三随机数进行掩码计算得到掩码结果;步骤S3:所述装置根据所述第一随机数、所述第二随机数、所述第一随机素数、所述掩码结果、所述RSA私钥和所述RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;根据所述第四随机数、所述第五随机数、所述第三随机数、所述第二随机素数、所述RSA私钥和所述RSA公钥的第二数据生成第二中间数据;步骤S4:所述装置根据所述第一中间数据、所述第二中间数据和所述RSA公钥的第二数据生成结果数据;根据所述结果数据和所述RSA公钥生成第三中间数据;步骤S5:所述装置判断所述第三中间数据是否与所述输入数据一致,是则输出所述结果数据,否则报错。进一步地,所述步骤S1中的获取RSA私钥、RSA公钥,包括:步骤S1-1:所述装置获取RSA私钥;步骤S1-2:所述装置判断是否获取到RSA私钥的全部数据,是则根据RSA私钥生成RSA公钥,否则返回步骤S1-1。进一步地,所述根据RSA私钥生成RSA公钥包括:所述装置将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据。进一步地,所述步骤S2具体为:所述装置通过协处理器根据所述输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果;所述步骤S3具体为:所述装置通过协处理器根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;通过协处理器根据第四随机数、第五随机数、第三随机数、第二随机素数、RSA私钥和RSA公钥的第二数据生成第二中间数据;所述步骤S4具体为:所述装置通过协处理器根据第一中间数据、第二中间数据和RSA公钥的第二数据生成结果数据;根据所述结果数据和所述RSA公钥生成第三中间数据。进一步地,所述步骤S2中的根据所述输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果,包括:所述装置用所述输入数据和所述第三随机数的乘积对所述RSA公钥的第二数据进行模运算得到掩码结果。进一步地,所述步骤S3中的根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据,包括:步骤A1:所述装置用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;步骤A2:所述装置将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;步骤A3:所述装置以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;步骤A4:所述装置将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;步骤A5:所述装置用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以所述第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;步骤A6:所述装置对第七中间数据和第十中间数据进行计算得到第十一中间数据;步骤A7:所述装置用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据。进一步地,所述步骤A3包括:步骤P1:所述装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;步骤P2:所述装置判断第五中间数据的当前位的值是否为1,是则执行步骤P4,否则执行步骤P3;步骤P3:所述装置用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,执行步骤P5;步骤P4:所述装置用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,执行步骤P5;步骤P5:所述装置判断第六中间数据的当前位的值是否为1,是则执行步骤P6,否则执行步骤P7;步骤P6:所述装置用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,执行步骤P8;步骤P7:所述装置用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,执行步骤P8;步骤P8:所述装置用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;步骤P9:所述装置判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则执行步骤P10,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,返回步骤P2;步骤P10:所述装置判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束。进一步地,在所述步骤P1中还包括:设置所述第三临时数据、所述第四临时数据、所述第五临时数据、所述第六临时数据的初始值均为1;在所述步骤P2之前还包括步骤P20:所述装置判断所述第二临时数据、所述第三临时数据、所述第四临时数据是否均为0,如均不为0则执行步骤P2,否则报错;在所述步骤P5之前还包括步骤P50:所述装置判断所述第二临时数据、所述第五临时数据、所述第六临时数据是否均为0,本文档来自技高网...

【技术保护点】
1.一种安全的RSA运算实现方法,其特征在于,包括:步骤S1:装置获取RSA私钥、RSA公钥和输入数据;生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;步骤S2:所述装置根据所述输入数据、RSA公钥的第二数据对所述第三随机数进行掩码计算得到掩码结果;步骤S3:所述装置根据所述第一随机数、所述第二随机数、所述第一随机素数、所述掩码结果、所述RSA私钥和所述RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;根据所述第四随机数、所述第五随机数、所述第三随机数、所述第二随机素数、所述RSA私钥和所述RSA公钥的第二数据生成第二中间数据;步骤S4:所述装置根据所述第一中间数据、所述第二中间数据和所述RSA公钥的第二数据生成结果数据;根据所述结果数据和所述RSA公钥生成第三中间数据;步骤S5:所述装置判断所述第三中间数据是否与所述输入数据一致,是则输出所述结果数据,否则报错。

【技术特征摘要】
1.一种安全的RSA运算实现方法,其特征在于,包括:步骤S1:装置获取RSA私钥、RSA公钥和输入数据;生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;步骤S2:所述装置根据所述输入数据、RSA公钥的第二数据对所述第三随机数进行掩码计算得到掩码结果;步骤S3:所述装置根据所述第一随机数、所述第二随机数、所述第一随机素数、所述掩码结果、所述RSA私钥和所述RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;根据所述第四随机数、所述第五随机数、所述第三随机数、所述第二随机素数、所述RSA私钥和所述RSA公钥的第二数据生成第二中间数据;步骤S4:所述装置根据所述第一中间数据、所述第二中间数据和所述RSA公钥的第二数据生成结果数据;根据所述结果数据和所述RSA公钥生成第三中间数据;步骤S5:所述装置判断所述第三中间数据是否与所述输入数据一致,是则输出所述结果数据,否则报错。2.如权利要求1所述的方法,其特征在于,所述步骤S1中的获取RSA私钥、RSA公钥,包括:步骤S1-1:所述装置获取RSA私钥;步骤S1-2:所述装置判断是否获取到RSA私钥的全部数据,是则根据RSA私钥生成RSA公钥,否则返回步骤S1-1。3.如权利要求2所述的方法,其特征在于,所述根据RSA私钥生成RSA公钥包括:所述装置将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据。4.如权利要求1所述的方法,其特征在于,所述步骤S2具体为:所述装置通过协处理器根据所述输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果;所述步骤S3具体为:所述装置通过协处理器根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;通过协处理器根据第四随机数、第五随机数、第三随机数、第二随机素数、RSA私钥和RSA公钥的第二数据生成第二中间数据;所述步骤S4具体为:所述装置通过协处理器根据第一中间数据、第二中间数据和RSA公钥的第二数据生成结果数据;根据所述结果数据和所述RSA公钥生成第三中间数据。5.如权利要求1所述的方法,其特征在于,所述步骤S2中的根据所述输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果,包括:所述装置用所述输入数据和所述第三随机数的乘积对所述RSA公钥的第二数据进行模运算得到掩码结果。6.如权利要求1所述的方法,其特征在于,所述步骤S3中的根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据,包括:步骤A1:所述装置用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;步骤A2:所述装置将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;步骤A3:所述装置以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;步骤A4:所述装置将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;步骤A5:所述装置用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以所述第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;步骤A6:所述装置对第七中间数据和第十中间数据进行计算得到第十一中间数据;步骤A7:所述装置用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据。7.如权利要求6所述的方法,其特征在于,所述步骤A3包括:步骤P1:所述装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;步骤P2:所述装置判断第五中间数据的当前位的值是否为1,是则执行步骤P4,否则执行步骤P3;步骤P3:所述装置用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,执行步骤P5;步骤P4:所述装置用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,执行步骤P5;步骤P5:所述装置判断第六中间数据的当前位的值是否为1,是则执行步骤P6,否则执行步骤P7;步骤P6:所述装置用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,执行步骤P8;步骤P7:所述装置用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,执行步骤P8;步骤P8:所述装置用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;步骤P9:所述装置判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则执行步骤P10,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,返回步骤P2;步骤P10:所述装置判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束。8.如权利要求7所述的方法,其特征在于,在所述步骤P1中还包括:设置所述第三临时数据、所述第四临时数据、所述第五临时数据、所述第六临时数据的初始值均为1;在所述步骤P2之前还包括步骤P20:所述装置判断所述第二临时数据、所述第三临时数据、所述第四临时数据是否均为0,如均不为0则执行步骤P2,否则报错;在所述步骤P5之前还包括步骤P50:所述装置判断所述第二临时数据、所述第五临时数据、所述第六临时数据是否均为0,如均不为0则执行步骤P5,否则报错;所述步骤P9包括:所述装置判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则执行步骤P10,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,返回步骤P20。9.如权利要求6所述的方法,其特征在于,所述步骤A6包括:步骤T1:所述装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对所述第一临时值进行模运算得到第二临时值;步骤T2:所述装置用所述第二临时值与RSA私钥的第五数据的乘积对所述第一临时值进行模运算得到第三临时值;步骤T3:所述装置将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。10.如权利要求1所述的方法,其特征在于,所述步骤S3中的根据第四随机数、第五随机数、第三随机数、第二随机素数、RSA私钥和RSA公钥的第二数据生成第二中间数据,包括:步骤B1:所述装置用第三随机数对RSA私钥的第一数据进行模运算得到第十二中间数据;步骤B2:所述装置将第四随机数与RSA私钥的第一数据减1之差的乘积作为第七中间值,将RSA私钥的第三数据的负值与第七中间值之和作为第十三中间数据;将第五随机数与RSA私钥的第一数据减1之差的乘积作为第八中间值,用第八中间值与RSA私钥的第三数据之和再减1的差值作为第十四中间数据;步骤B3:所述装置以第十二中间数据为底数、第十三中间数据为指数进行幂运算得到第九中间值,用第九中间值对RSA私钥的第一数据与第二随机素数的乘积做模运算得到第十五中间数据;步骤B4:所述装置将第四随机数与RSA私钥的第二数据减1之差的乘积作为第十中间值,将RSA私钥的第四数据的负值与第十中间值之和作为第十六中间数据;将第五随机数与RSA私钥的第二数据减1之差的乘积作为第十一中间值,用第十一中间值加上RSA私钥的第四数据再减1的差值作为第十七中间数据;步骤B5:所述装置用第三随机数对RSA私钥的第二数据进行模运算得到第二十中间数据;以第二十中间数据为底数、第十六中间数据为指数进行幂运算得到第十二中间值,用第十二中间值对RSA私钥的第二数据与第二随机素数的乘积做模运算得到第十八中间数据;步骤B6:所述装置对第十五中间数据和第十八中间数据进行计算得到第十九中间数据;步骤B7:所述装置用第十九中间数据对RSA公钥的第二数据进行模运算得到第二中间数据。11.如权利要求1所述的方法,其特征在于,所述步骤S4包括:所述装置用第一中间数据和第二中间数据的乘积对RSA公钥的第二数据进行模运算得到结果数据;以所述结果数据为底数,RSA公钥的第一数据为指数进行幂运算,用幂运算结果对RSA公钥的第二数据进行模运算得到第三中间数据。12.一种安全的RSA运算实现装置,其特征在于,包括:第一获取模块,用于获取RSA私钥、RSA公钥和输入数据;第一生成模块,用于生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;第一计算模块,用于根据所述第一获取模块获取的输入数据、RSA公钥的第二数据对所述第一生成模块生成的第三随机数进行掩码计算得到掩码结果;...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1