CN109379185B - 一种安全的rsa运算实现方法及装置 - Google Patents
一种安全的rsa运算实现方法及装置 Download PDFInfo
- Publication number
- CN109379185B CN109379185B CN201811226714.9A CN201811226714A CN109379185B CN 109379185 B CN109379185 B CN 109379185B CN 201811226714 A CN201811226714 A CN 201811226714A CN 109379185 B CN109379185 B CN 109379185B
- Authority
- CN
- China
- Prior art keywords
- data
- temporary
- private key
- rsa
- random number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种安全的RSA运算实现方法及装置,方法包括:根据输入数据、RSA公钥的第二数据对第三随机数进行掩码计算得到掩码结果;根据第一随机数、第二随机数、第一随机素数、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据;生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;根据第四随机数、第五随机数、第三随机数、第二随机素数、RSA私钥和RSA公钥的第二数据生成第二中间数据;根据第一中间数据、第二中间数据和RSA公钥的第二数据生成结果数据;根据结果数据和RSA公钥生成第三中间数据;判断第三中间数据是否与输入数据一致,是则输出结果数据,否则报错。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种安全的RSA运算实现方法及装置。
背景技术
RSA加密算法是一种非对称加密算法,它既能用于加密,也能用于数字签名。RSA的安全基于大数分解的难度,RSA公钥和RSA私钥是一对大素数的函数。从一个RSA公钥和密文恢复出明文的难度相当于分解两个大素数之积。其中,RSA的RSA公钥是(e,n),RSA的RSA私钥是(d,n),RSA的加密公式为:C=m^e mod n,标准的RSA的解密公式为:m=C^d mod n,其中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,如均不为0则执行步骤P5,否则报错;
所述步骤P9包括:所述装置判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则执行步骤P10,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,返回步骤P20。
进一步地,所述步骤A6包括:
步骤T1:所述装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对所述第一临时值进行模运算得到第二临时值;
步骤T2:所述装置用所述第二临时值与RSA私钥的第五数据的乘积对所述第一临时值进行模运算得到第三临时值;
步骤T3:所述装置将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。
进一步地,所述步骤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公钥的第二数据进行模运算得到第二中间数据。
进一步地,所述步骤S4包括:所述装置用第一中间数据和第二中间数据的乘积对RSA公钥的第二数据进行模运算得到结果数据;以所述结果数据为底数,RSA公钥的第一数据为指数进行幂运算,用幂运算结果对RSA公钥的第二数据进行模运算得到第三中间数据。
本发明又提供了一种安全的RSA运算实现装置,包括:
第一获取模块,用于获取RSA私钥、RSA公钥和输入数据;
第一生成模块,用于生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;
第一计算模块,用于根据所述第一获取模块获取的输入数据、RSA公钥的第二数据对所述第一生成模块生成的第三随机数进行掩码计算得到掩码结果;
第二生成模块,用于根据所述第一生成模块生成的第一随机数、第二随机数、第一随机素数、所述第一计算模块计算得到的掩码结果、所述第一获取模块获取到的RSA私钥和RSA公钥的第二数据生成第一中间数据;
第三生成模块,用于生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;
第四生成模块,用于根据所述第三生成模块生成的第四随机数、第五随机数、所述第一生成模块生成的第三随机数、第二随机素数、所述第一获取模块获取的RSA私钥和RSA公钥的第二数据生成第二中间数据;
第五生成模块,用于根据所述第二生成模块生成的第一中间数据、所述第四生成模块生成的第二中间数据和所述第一获取模块获取的RSA公钥的第二数据生成结果数据;
第六生成模块,用于根据所述第五生成模块生成的结果数据和所述第一获取模块获取的RSA公钥生成第三中间数据;
第一判断模块,用于判断所述第六生成模块生成的第三中间数据是否与所述第一获取模块获取的输入数据一致,是则输出所述结果数据,否则报错。
进一步地,所述第一获取模块包括:
第一获取子模块,用于获取RSA私钥;
第一判断子模块,用于判断是否获取到RSA私钥的全部数据,是则触发第一生成子模块,否则触发所述第一获取子模块;
所述第一生成子模块,用于根据RSA私钥生成RSA公钥;
第二获取子模块,用于获取输入数据。
进一步地,所述第一生成子模块具体用于将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据。
进一步地,所述第一计算模块具体用于通过协处理器根据所述第一获取模块获取的输入数据、RSA公钥的第二数据对所述第一生成模块生成的第三随机数进行掩码计算得到掩码结果;
所述第二生成模块具体用于通过协处理器根据所述第一生成模块生成的第一随机数、第二随机数、第一随机素数、所述第一计算模块计算得到的掩码结果、所述第一获取模块获取到的RSA私钥和RSA公钥的第二数据生成第一中间数据;
所述第四生成模块具体用于通过协处理器根据所述第三生成模块生成的第四随机数、第五随机数、所述第一生成模块生成的第三随机数、第二随机素数、所述第一获取模块获取的RSA私钥和RSA公钥的第二数据生成第二中间数据;
所述第五生成模块具体用于通过协处理器根据所述第二生成模块生成的第一中间数据、所述第四生成模块生成的第二中间数据和所述第一获取模块获取的RSA公钥的第二数据生成结果数据。
进一步地,所述第一计算模块具体用于用所述第一获取模块获取的输入数据和所述第一生成模块生成第三随机数的乘积对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到掩码结果。
进一步地,所述第二生成模块包括:
第一运算子模块,用于用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;
第一作为子模块,用于将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;
第二运算子模块,用于以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;
第二作为子模块,用于将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;
第三运算子模块,用于用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以所述第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;
第一计算子模块,用于对第七中间数据和第十中间数据进行计算得到第十一中间数据;
第四运算子模块,用于用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据。
进一步地,所述第二运算子模块包括:
第一运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;
第一判断单元,用于判断所述第一运算单元的第五中间数据的当前位的值是否为1,是则触发第二运算更新单元,否则触发第一运算更新单元;
所述第一运算更新单元,用于用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,触发第二判断单元;
所述第二运算更新单元,用于用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,触发第二判断单元;
所述第二判断单元,用于判断所述第一运算单元的第六中间数据的当前位的值是否为1,是则触发第三运算更新单元,否则触发第四运算更新单元;
所述第三运算更新单元,用于用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,触发第五运算更新单元;
所述第四运算更新单元,用于用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,触发第五运算更新单元;
所述第五运算更新单元,用于用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;
第三判断单元,用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发所述第一判断单元;
所述第四判断单元,用于判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束。
进一步地,所述第二运算子模块还包括:
第一设置单元,用于设置所述第三临时数据、所述第四临时数据、所述第五临时数据、所述第六临时数据的初始值均为1;
第五判断单元,用于在判断所述第一运算单元的第二临时数据、所述第一设置单元的第三临时数据和第四临时数据是否均为0,如均不为0则触发所述第一判断单元,否则报错;
第六判断单元,用于判断所述第一运算单元的第二临时数据、所述第一设置单元的第五临时数据和第六临时数据是否均为0,如均不为0则触发所述第二判断单元,否则报错;
所述第三判断单元,具体用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发所述第五判断单元。
进一步地,所述第一计算子模块包括:
第二运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对所述第一临时值进行模运算得到第二临时值;
第三运算单元,用于用所述第二临时值与RSA私钥的第五数据的乘积对所述第一临时值进行模运算得到第三临时值;
第一作为单元,用于将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。
进一步地,所述第四生成模块包括:
第五运算子模块,用于用第三随机数对RSA私钥的第一数据进行模运算得到第十二中间数据;
第三作为子模块,用于将第四随机数与RSA私钥的第一数据减1之差的乘积作为第七中间值,将RSA私钥的第三数据的负值与第七中间值之和作为第十三中间数据;将第五随机数与RSA私钥的第一数据减1之差的乘积作为第八中间值,用第八中间值与RSA私钥的第三数据之和再减1的差值作为第十四中间数据;
第六运算子模块,用于以第十二中间数据为底数、第十三中间数据为指数进行幂运算得到第九中间值,用第九中间值对RSA私钥的第一数据与第二随机素数的乘积做模运算得到第十五中间数据;
第四作为子模块,用于将第四随机数与RSA私钥的第二数据减1之差的乘积作为第十中间值,将RSA私钥的第四数据的负值与第十中间值之和作为第十六中间数据;将第五随机数与RSA私钥的第二数据减1之差的乘积作为第十一中间值,用第十一中间值加上RSA私钥的第四数据再减1的差值作为第十七中间数据;
第七运算子模块,用于用第三随机数对RSA私钥的第二数据进行模运算得到第二十中间数据;以第二十中间数据为底数、第十六中间数据为指数进行幂运算得到第十二中间值,用第十二中间值对RSA私钥的第二数据与第二随机素数的乘积做模运算得到第十八中间数据;
第二计算子模块,用于对第十五中间数据和第十八中间数据进行计算得到第十九中间数据;
第八运算子模块,用于用第十九中间数据对RSA公钥的第二数据进行模运算得到第二中间数据。
进一步地,所述第五生成模块具体用于用所述第二生成模块生成的第一中间数据和所述第四生成模块生成的第二中间数据的乘积对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到结果数据;
所述第六生成模块具体用于以所述第五生成模块生成的结果数据为底数,所述第一获取模块获取的RSA公钥的第一数据为指数进行幂运算,用幂运算结果对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到第三中间数据。
本发明与现有技术相比,具有以下优点:
本方法采用RSA公钥来校验RSA运算,使用随机数掩码输入数据,能识别出在RSA运算过程中的数据是否被篡改,通过随机数参与运算可防止模板分析、侧信道攻击等攻击,保护了RSA的正常使用。
附图说明
图1为本发明实施例一提供的一种安全的RSA运算实现方法流程图;
图2为本发明实施例一中的步骤104的细化流程图;
图3为本发明实施例一中的步骤106的细化流程图;
图4为本发明实施例一中的步骤A3的细化流程图;
图5为本发明实施例一中的步骤A6的细化流程图;
图6为本发明实施例二提供的一种安全的RSA运算实现装置方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种安全的RSA运算实现方法,适用于java卡,如图1所示,本实施例的方法包括:
步骤101:装置获取RSA私钥(P、Q、DP、DQ、PQ)和RSA公钥(E、N),获取输入数据(m);
优选的,在本实施例中,获取的RSA私钥(P、Q、DP、DQ、PQ)和RSA公钥(E、N)均为RSACRT(使用中国剩余定理计算RSA的方法称为RSA CRT)的RSA私钥和RSA CRT的RSA公钥;
在本实施例中,其中,RSA私钥包括RSA私钥的第一数据(P)、RSA私钥的第二数据(Q)、RSA私钥的第三数据(DP)、RSA私钥的第四数据(DQ)、RSA私钥的第五数据(PQ),RSA公钥包括RSA公钥的第一数据(E)和RSA公钥的第二数据(N);
例如,本实施例中的RSA私钥的第一数据为:FC4C5DFBB1F01AE184F16F82B052B5EE7D9B3A3EC9BBDED425D22D7251998E6FEB473351AB517B341A516ED4AD655CD0A3622D23233A868FAE976111EEE4BC0B;RSA私钥的第二数据为:E8E27B63A6DE8A3E9919CDE96D7571F254B408799717143155F80F478D1AB06B1FE90AFCDB63067856D7EB7A1DF7B43AD21147CC14C07A9D47D5DA3CEAC5CA93;RSA私钥的第三数据为:C066947D6F12C5CD198EED14E2D6107BD139E14F2494AAB76A2840141FFA544F314358F57D0A64443595C84953FA2AAFC9090396FA34958D58FD843F22C93845;RSA私钥的第四数据为:84E1EE4C0F443E17B7DE5C7B0C450E6E9ADC5B559DDBC25EE051F9CDF6FABA9D7588D10734DB8D2E8F47070B181C660F861BEC1ECBDC845A484A030BED5E4CD7;RSA私钥的第五数据为:4CAE41E97AFCF1735D0351D807BDAAB05A8AD72FFB671D919230FF0ED0D411A40E4BB995D6D62EEA499DFEF92BA5F4ACD31896DC97BE0BD108616B76F361713B;RSA公钥的第一数据为:010001;RSA公钥的第二数据为:E5846A31F899CC91DA086D5F2D17AF69BF81D246E6A087DC71E2BA68837070B4D2C3143776291B138FEAA7BD6F6F30996F8C1249EAAB7B70426255AFACE13DE001141B15DCA59ECCC9314AD5D69F3922FB11AB3806A445C3109D61ECA495E9436C5B070D0B0358E3EA641FA26B935DB3C6DF68164466285612933E476C2FA851;输入数据为:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B8557B54B66836C1FBDD13D2441D9E1434DC62CA677FB68F5FE66A464BAADECDBD00576F8D6B5AC3BCC80844B7D50B1CC6603444BBE7CFCF8FC0AA1EE3C636D9E339;
在本实施例中,步骤101中的获取RSA私钥(P、Q、DP、DQ、PQ)和RSA公钥(E、N)具体包括:
步骤101-1:装置获取RSA私钥(P、Q、DP、DQ、PQ);
步骤101-2:装置判断是否获取到RSA私钥的全部数据,是则根据RSA私钥生成RSA公钥,否则返回步骤101-1;
具体的,根据RSA私钥生成RSA公钥包括:装置将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据;
例如,在本实施例中,输入数据(m)可以为应用中的用户加密信息;
步骤102:装置生成符合预设条件的第一随机数(r1)和第二随机数(r2)、第三随机数(r)、预设长度的第一随机素数(s1);
具体的,在本实施例中,预设条件为:第一随机数和第二随机数的长度均为64bit且第二随机数不小于第一随机数与2的和;第一随机素数的长度为32bit;
在本实施例中,步骤101和步骤102的顺序可调整;
例如,本实施例中的第一随机数为:81C103FD4D571903;第二随机数为:8B2BB992F498A1A5;第三随机数为:E4A0D82F1DEE99798EA8F494733D374253FF9F91F63F9B5EDDF7F4F763790BEDCE90778539719F2A575FECE908DDD5585A0DEBD44EF253E588BC736E98E7F8A31EB3909CD4F00D81EA25C870365646137CB47A152B799277B7F5C090E61231449285AE87EF12132DAF51F4E8D4694A03A51554DD54D11AAE4F357938236619B1;第一随机素数为:8B2BB9C9;
步骤103:装置根据输入数据(m)、RSA公钥的第二数据(n)对第三随机数(r)进行掩码计算得到掩码结果(M);
具体的,在本实施例中,步骤103包括:装置用输入数据和第三随机数的乘积对RSA公钥的第二数据进行模运算得到掩码结果;可选的,本实施例中步骤103的计算过程通过协处理器来实现;
例如,本实施例中计算得到的掩码结果为:D5AAEDE55A6BF6E64407236817FB96C25EF42F5C4B2EE0A8D6336E689106DD96A4DFF85F7CC5B929E9AAD0F3C13E62D572133C74462AC83A8D114A708413965B5F7EB77DB0F8052A96E31DE4A02BE72BFA27756C665BAC4A49B354D9503ADA8EE904230BEB02E4F8EEA1F9FB8D39A9F451C22D4FD08B41612EBAEF995EED8016;
步骤104:装置根据第一随机数(r1)和第二随机数(r2)、第一随机素数(s1)、掩码结果、RSA私钥和RSA公钥的第二数据生成第一中间数据;
可选的,本实施例中步骤104的计算过程通过协处理器来实现;
例如,本实施例中的第一中间数据为:97877EE641298FEA08B93EF8DBE93E7E2B3B8D1980A1C945BF7E5CBA3C3D12D740F015A92109691B4712D8F9669CF232E859921136100B24A71832CC1ACE91356AA05E7B8A75C1ABB7DBD1728F37A58C51BA9027DDE1FC9C7996473A34D6C43A730F72BCD87398A83033059925005DAFB940F695CF89836EA5FF1697DE53744E;
如图2所示,在本实施例中,步骤104具体包括:
步骤A1:装置用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;
可选的,本实施例中步骤A1的计算过程通过协处理器来实现;
例如,本实施例中的第四中间数据为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;
步骤A2:装置将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;
例如,本实施例中的第一中间值为:7FE0B4DD3836C743A1BF77A7A35B7B78E722612035A5DAABC6CD01C3F4FC8CC105A7F33D3860DD271EA48D7A3219CB988E184DA895189668C2D01C4C9CCFFB18C9FFD3B70C712E1E;第五中间数据为:7FE0B4DD3836C74462260C25126E414600B14E35187BEB279806E313199137786FD03351585B31764FE7E66FAF242FDCC3AE15F1E912C1188BD91FE3970490A622FD57F62F3A6663;第二中间值为:89288EBF776BF5494CCB181A953DC63AAE4D131EAEC043877194BC92D8746FEDB3C1499D02AF0E414E7D5FC76D6D7B23B45F35D542F272EE57A7FC0D5D45AE3203FA2A8A019F7C72;第六中间数据为:89288EBF776BF5488C64839D262B006D94BE2609CBEA330BA05ADB43B3DFC53649990988E2B4B9F21D3A06D1F06316DF7EC96D8BEEF8483E8E9EF876631118A4AAFCA64ADED6442C;
步骤A3:装置以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;
可选的,本实施例中步骤A3的计算第七中间数据的过程通过协处理器来实现;
例如,本实施例中的第七中间数据为:7EC8DDCFE9E0FAF65E8BDEB4EB90AC50BF8E8982F011299042E6BBE75E2569070C5E07F7CFFFCC8DA1EBC8B4FE0ACD3B71C83FB58914E660489F601988DCEB0F397D34EB;
步骤A4:装置将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;
例如,本实施例中的第四中间值为:7609B68D52D868B60AA79B8BF87C76531271C317D829465AB3439B932B3EA641B1713E39672A96416A263E600E1FD8B2E527428C41E96D80643EA82FBE6B9752D80DB113D2B7A1B6;第八中间数据为:7609B68D52D868B68F8989D807C0B46ACA501F92E46E54C94E1FF6E8C91A68A091C338075E2550DEDFAF0F6742FB65E1746E49975A05D38FEA5A944E8A481BAD2057B41FC015EE8D;第五中间值为:7E9ABFDB302FF5FDFA41318C8CA13F09AB1389E2E43C57CDC449EF909DF421C33E7EFD1E549CC1D9C3DE3A6CA436499647C86BA6556EC702550C2BC46167BD258FBCECB12491621A;第九中间数据为:7E9ABFDB302FF5FD755F43407D5D00F1F3352D67D7F7495F296D943B00185F645E2D03505DA2073C4E5569656F5ABC67B881649B3D5260F2CEF03FA5958B38CB4772E9A537331542;
步骤A5:装置用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;
可选的,本实施例中步骤A5的计算第二十一中间数据和第十中间数据的过程通过协处理器来实现;
在本实施例中,步骤A2、步骤A3和步骤A4、步骤A5的顺序可调换,步骤A1可放在步骤A3和步骤A5之前的任意位置;
例如,本实施例中的第二十一中间数据为:314650D77D535F7BD6A53EDD082C2CE01EBB524C9FEB7AF5B585041C6D8D1560129C311D99D10B3D57AF7A6077A48C9157D23742188CB5C8D9E92381D3471DF6;第十中间数据为:74075264ED702AE1F9B7CDC5CEC13D5E28C780889F33CAE0C80787584E35B433309C1923848B46D2A60147AB87B46D5F6103C3BB624F294619A48B878816F5FCE4056DB7;
步骤A6:装置对第七中间数据和第十中间数据进行计算得到第十一中间数据;
例如,本实施例中的第十一中间数据为:47875E17DFDC48D38077B13FEEC296C7CE1D460AE91BEC4D4D85002C8575B4E9650938C7CCFFA22E003D62572527C12D40D7A822D0FD22BECCF284D56C8F10CD03366982512E7BF2492A657D8209573B56D078FE16607E7702100B4533A82A9752C2C8F0430E4B4D3A08227207A93544B90EDD6E34BFC37495072A78969695A6378E0DEE;
步骤A7:装置用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据;
可选的,本实施例中步骤A7的计算过程通过协处理器来实现;
例如,本实施例中的第一中间数据为:97877EE641298FEA08B93EF8DBE93E7E2B3B8D1980A1C945BF7E5CBA3C3D12D740F015A92109691B4712D8F9669CF232E859921136100B24A71832CC1ACE91356AA05E7B8A75C1ABB7DBD1728F37A58C51BA9027DDE1FC9C7996473A34D6C43A730F72BCD87398A83033059925005DAFB940F695CF89836EA5FF1697DE53744E;
步骤105:装置生成符合预设条件的第四随机数(r4)和第五随机数(r5)、预设长度的第二随机素数(s2);
例如,本实施例中的第四随机数为:25B98F758BB1396E;第五随机数为:39C02A95AF0187A1;第二随机素数为:701FFED3;
步骤106:装置根据第四随机数(r4)和第五随机数(r5)、第三随机数(r)、第二随机素数(s2)、RSA私钥和RSA公钥的第二数据生成第二中间数据;
可选的,本实施例中步骤106的计算过程通过协处理器来实现;
例如,本实施例中的第二中间数据为:AEA73F8AA8825D93ACA7A81477AF09A0AA9DA15C420EE2ACA1C8CFD9FD98848951FE381413B519B1988F3A94C65D5571BB81AAED6C3DBD6197FCD3D65FB6F01833E5171CAEE42AAE43FDE6C5CCBBFD664538A45D7F9E3A9F2F913E4F97035A8FE217E14072B0366964E6AC2DA9B85D850457941E0CF16E11E65795C7FF9CA5E8;
如图3所示,步骤106具体包括:
步骤B1:装置用第三随机数对RSA私钥的第一数据进行模运算得到第十二中间数据;
可选的,本实施例中步骤B1的计算过程通过协处理器来实现;
例如,本实施例中的第十二中间数据为:753CC697FB33EE0A6A48089D817DD114BA53DA7F229EF5514E3A4B5D645BB041AC15573FEAC6080636FE2FC1AB275D492C69F805D6181CA512F5B8FFF8871624;
步骤B2:装置将第四随机数与RSA私钥的第一数据减1之差的乘积作为第七中间值,将RSA私钥的第三数据的负值与第七中间值之和作为第十三中间数据;将第五随机数与RSA私钥的第一数据减1之差的乘积作为第八中间值,用第八中间值与RSA私钥的第三数据之和再减1的差值作为第十四中间数据;
例如,本实施例中的第七中间值为:252DEA27CCADF74185510C4C0CD31D44AB986823BE2708BFBAB98C51D2680AF4B867B53EB1D01C48270620D993A35C73A46C1F8FBDC0C7E526A329165024CC18DC9298B70511064C;第十三中间数据为:252DEA27CCADF740C4EA77CE9DC0577792097B0EDB50F843E97FAB02ADD3603D4E3F752A91D5C7F8F5C2C7E41698F82F6ED6574669C69D355D9A257F55F0368B83951477E247CE07;第八中间值为:38EA642B93BB9EF6B31BC66A830865A472830FAB7CAA1ECE98EC9E5CDF096F0F6171BB76A7371700A0D8D6A3F71ABEA5EE1A78F55DF0A2B2BD8A9A4F035A196E183FE2836F0D884A;第十四中间数据为:38EA642B93BB9EF773825AE7F21B2B718C11FCC05F802F4A6A267FAC039E19C6CB99FB8AC7316B4FD21C2F99742522EA23B0413EB1EACD6286939DE5FD8EAEFB713D66C291D6C08E;
步骤B3:装置以第十二中间数据为底数、第十三中间数据为指数进行幂运算得到第九中间值,用第九中间值对RSA私钥的第一数据与第二随机素数的乘积做模运算得到第十五中间数据;
可选的,本实施例中步骤B3的计算第十五中间数据的过程通过协处理器来实现;
例如,本实施例中的第十五中间数据为:62A5A681AAE7E649980E1AF0442BB432401F6E5C495BC74B22E77EEBF80C5706966F03DC4211F04C1CF8BB8646A810DD47E6984A3EA680645B532876D224C04ACF855934;
步骤B4:装置将第四随机数与RSA私钥的第二数据减1之差的乘积作为第十中间值,将RSA私钥的第四数据的负值与第十中间值之和作为第十六中间数据;将第五随机数与RSA私钥的第二数据减1之差的乘积作为第十一中间值,用第十一中间值加上RSA私钥的第四数据再减1的差值作为第十七中间数据;
例如,本实施例中的第十中间值为:22518A0203A501637096EE70C022C7CCA473932385188CA1074179D90C359173F4D8C22FF6395FD623EA9E0E402525CB50AA1E5B9EC6CAA8E748DD0FC05A8120B92230EB40098CBC;第十六中间数据为:22518A0203A50162EBB50024B0DE89B4EC9536A878D37E326C651E836E59CF151486C861FF3EA538AE61CD070B49989CC163175086AA6499612CF0F0F47DFCC670D82DDF52AB3FE5;第十一中间值为:34893E130E2914ADC1353BCB6201943DA935FFBB23CF30EE37575F4E1F1706DE85BA36ED14FB577E709A852F401730313A8FE26BC62CB0C3A6D0182BAFAAA83CFA295B578CC963D2;第十七中间数据为:34893E130E2914AE46172A177145D25561145C3630143F5CD233BAA3BCF2C93D660C30BB0BF6121BE623563674F2BD5FC9D6E976DE4916D32CEC044A7B872C9742735E637A27B0A8;
步骤B5:装置用第三随机数对RSA私钥的第二数据进行模运算得到第二十中间数据;以第二十中间数据为底数、第十六中间数据为指数进行幂运算得到第十二中间值,用第十二中间值对RSA私钥的第二数据与第二随机素数的乘积做模运算得到第十八中间数据;
可选的,本实施例中步骤B5的计算第二十中间数据和第十八中间数据的过程通过协处理器来实现;
例如,本实施例中的第二十中间数据为:D16D80DC0590EDCD1E42255CB23041E90FF0BD66107344D14E1F808F62C8AA15061250A21D0A930834AF3EFDD42D203E7D1211C6FB7A2DFD18E75ECA765AC09B;第十八中间数据为:3C8CFA34E87818C314D56B5F5172D402787368F3FCBE3CE11FA3A2FFF292027746C8EA88D07550F64C842359D35355C13A76D3FFD5302AC106EADE2BFCFBE483AC128E3B;
步骤B6:装置对第十五中间数据和第十八中间数据进行计算得到第十九中间数据;
例如,本实施例中的第十九中间数据为:3E5EF43E066B8982CE1A5DAAE0482DC41C7CCC23F4CD301B0D83DED768C9191B71D68ECDF6B6EC751DB0E927901CEC7BCF0C8885AC871AF8EB8E538B084ABD2B0B2774B9C7166E8091DBC74ED27C4E9CF18216BB774AA8937DAE5D8E7C6F2138986782F2598FC9C8CF65E2946402214E54320E848C42E2329D37B6AC53BEA9B058B8BAC3;
步骤B7:装置用第十九中间数据对RSA公钥的第二数据进行模运算得到第二中间数据;
可选的,本实施例中步骤B7的计算过程通过协处理器来实现;
例如,本实施例中的第二中间数据为:AEA73F8AA8825D93ACA7A81477AF09A0AA9DA15C420EE2ACA1C8CFD9FD98848951FE381413B519B1988F3A94C65D5571BB81AAED6C3DBD6197FCD3D65FB6F01833E5171CAEE42AAE43FDE6C5CCBBFD664538A45D7F9E3A9F2F913E4F97035A8FE217E14072B0366964E6AC2DA9B85D850457941E0CF16E11E65795C7FF9CA5E8;
其中,生成第一中间数据的过程和第二中间数据的过程没有先后顺序,两个过程的先后顺序可调换,优选的,本实施例中以先生成第一中间数据再生成第二中间数据为例进行说明;
步骤107:装置根据第一中间数据、第二中间数据和RSA公钥的第二数据生成结果数据;根据结果数据和RSA公钥生成第三中间数据;
具体的,在本实施例中,步骤107包括:装置用第一中间数据和第二中间数据的乘积对RSA公钥的第二数据进行模运算得到结果数据;以结果数据为底数,RSA公钥的第一数据为指数进行幂运算,用幂运算结果对RSA公钥的第二数据进行模运算得到第三中间数据;
可选的,本实施例中步骤107的计算结果数据的过程通过协处理器来实现;具体的,在上述细化步骤中的计算结果数据和第三中间数据的过程通过协处理器来实现;
例如,本实施例中的结果数据为:AB905CE83AEA2F76F5C66DA46C2614555E9D3F106DEC68436733B2A206BDA7E32A68C81AEAFA16CFE71BCBE92CC0AF567E0A6190F5698F4E690269BAA4AD192DB681E46D2ADA76029F20D279C70ADEB767454EF8BD697B594D8AF57086B26B9FAFB26C74ABA9DCF29E99DD679A209D84FE8BB9E52B4A2CD8AEBD8A4C26821EED;第三中间数据为:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B8557B54B66836C1FBDD13D2441D9E1434DC62CA677FB68F5FE66A464BAADECDBD00576F8D6B5AC3BCC80844B7D50B1CC6603444BBE7CFCF8FC0AA1EE3C636D9E339;
步骤108:装置判断第三中间数据是否与输入数据一致,是则输出结果数据,否则报错;
例如,本实施例中的结果数据可以为应用中的用户解密信息即用户明文信息。
在本实施例中,步骤A3、A5、B3、B5的实现过程相同,本实施例以步骤A3为例进行详细说明,如图4所示,步骤A3包括:
步骤P1:装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;
可选的,本实施例中步骤P1的计算第二临时数据的过程通过协处理器来实现;
优选的,在步骤P1中还包括:设置第三临时数据、第四临时数据、第五临时数据、第六临时数据的初始值均为1;
例如,本实施例中的第一临时数据为:89288EF4BAC4F0223002803D8BD685B543AC92B8AC0CFFA0C6B4BCE1495F60DBBB0BE4B925BA5482610D05C89AE6DFB6446A65E1E3BB86F09220011D84BA7F3D6C5497A3;第二临时数据为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;第五中间数据为:7FE0B4DD3836C74462260C25126E414600B14E35187BEB279806E313199137786FD03351585B31764FE7E66FAF242FDCC3AE15F1E912C1188BD91FE3970490A622FD57F62F3A6663;第六中间数据为:89288EBF776BF5488C64839D262B006D94BE2609CBEA330BA05ADB43B3DFC53649990988E2B4B9F21D3A06D1F06316DF7EC96D8BEEF8483E8E9EF876631118A4AAFCA64ADED6442C;
步骤P2:装置判断第五中间数据的当前位的值是否为1,是则执行步骤P4,否则执行步骤P3;
优选的,在本实施例中,步骤P2之前还包括:
步骤P20:装置判断第二临时数据、第三临时数据、第四临时数据是否均为0,如均不为0则执行步骤P2,否则报错;
步骤P3:装置用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,执行步骤P5;
可选的,本实施例中步骤P3中的模运算过程通过协处理器来实现;
具体的,在本实施例中,第三临时数据的初始值为1;
例如,本实施例的该步骤中的模运算结果为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;
步骤P4:装置用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,执行步骤P5;
可选的,本实施例中步骤P4中的模运算过程通过协处理器来实现;
具体的,在本实施例中,第四临时数据的初始值为1;
例如,本实施例的该步骤中的模运算结果为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;
步骤P5:装置判断第六中间数据的当前位的值是否为1,是则执行步骤P6,否则执行步骤P7;
优选的,在本实施例中,步骤P5之前还包括:
步骤P50:装置判断第二临时数据、第五临时数据、第六临时数据是否均为0,如均不为0则执行步骤P2,否则报错;
步骤P6:用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,执行步骤P8;
可选的,本实施例中步骤P6中的模运算过程通过协处理器来实现;
例如,本实施例的该步骤中的模运算结果为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;
具体的,在本实施例中,第五临时数据的初始值为1;
步骤P7:装置用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,执行步骤P8;
可选的,本实施例中步骤P7中的模运算过程通过协处理器来实现;
具体的,在本实施例中,第六临时数据的初始值为1;
例如,本实施例的该步骤中的模运算结果为:031DAA08D2BF59DEEE74916644A0FFCF167556069D4DDD70F19C731A690FEE5D62C2459D6F6D6363E4D81E1A9398B51ACFCD9AFC85592B72491D0EE757F1108D;
步骤P8:装置用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;
例如,本实施例的该步骤中的模运算结果为:19CB3A25C106372CFA53B05CA4854BBCB591532C168EA895B1C540EB45EF92124D00166F52C26815DF2FD97B9E7F1EAB4B43D738791C8A1DF146B7F8B59233AF9B348470;
步骤P9:装置判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则执行步骤P10,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,返回步骤P2;
优选的,在本实施例中,如步骤P2之前包括步骤P20,步骤P5之前包括步骤P50,则步骤P9判断为否时不返回步骤P2而是返回步骤P20;
步骤P10:装置判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束;
在本实施例中,步骤A6、B6的实现过程相同,本实施例以步骤A6为例进行详细说明,如图5所示,步骤A6包括:
步骤T1:装置用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对第一临时值进行模运算得到第二临时值;
可选的,本实施例中步骤T1中的模运算过程通过协处理器来实现;
例如,本实施例中的第一临时值为:89288EF4BAC4F0223002803D8BD685B543AC92B8AC0CFFA0C6B4BCE1495F60DBBB0BE4B925BA5482610D05C89AE6DFB6446A65E1E3BB86F09220011D84BA7F3D6C5497A3;第二临时值为:0AC18B6AFC70D01464D410EF1CCF6EF296C708FA50DD5EAF7ADF348F0FEFB4D3DBC1EED44B7485BAFBEA810976565FDC10C47BFA26C5BD1A2EFAD49200C5F5125577C734;
步骤T2:装置用第二临时值与RSA私钥的第五数据的乘积对第一临时值进行模运算得到第三临时值;
可选的,本实施例中步骤T2中的模运算过程通过协处理器来实现;
例如,本实施例中的第三临时值为:4EA0E37CD709B98BCAD8C2D0B095FCFBBB75121B62271E69383388CF69F2B53421D87C9367BC62821678B7310BF2D03BF30AB65484890F8F7957E2E41CBE2731E84FC64D;
步骤T3:装置将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。
可选的,本实施例中步骤T3中的模运算过程通过协处理器来实现;
例如,本实施例中的第四临时值为:47875E17DFDC48D38077B13FEEC296C7CE1D460AE91BEC4D4D85002C8575B4E9650938C7CCFFA22E003D62572527C12D40D7A822D0FD22BECCF284D56C8F10CC8F2F171D63BE51104F7297B7B34819DD2E08F875772CB3963A0883ECE57276642226AFCCBE83047A9406DAC67FF4C7E5580B19B2D2709A2E7B629EF10E7F9FA95388A037;第十一中间数据为:47875E17DFDC48D38077B13FEEC296C7CE1D460AE91BEC4D4D85002C8575B4E9650938C7CCFFA22E003D62572527C12D40D7A822D0FD22BECCF284D56C8F10CD03366982512E7BF2492A657D8209573B56D078FE16607E7702100B4533A82A9752C2C8F0430E4B4D3A08227207A93544B90EDD6E34BFC37495072A78969695A6378E0DEE;
该实施例方法可应用在解密过程或签名过程,如应用在解密过程,则输入数据为加密数据,结果数据为解密结果;如应用在签名过程,则输入数据为待签名数据,结果数据为签名结果。
本发明技术方案将现有技术中的m=C^d mod n这个大数模运算替换成sp=(C^dp)mod p、sq=(C^dq)mod q、sp=(sp*(q^(p-1))mod n)mod n、sq=(sq*(p^(q-1))mod n)mod n、m=(sp+sq)mod n一系列的模运算,其中sp为第七中间数据、C为结果数据、dp为RSA私钥的第三数据、p为RSA私钥的第一数据、dq为RSA私钥的第四数据、sq第十中间数据、q为RSA私钥的第二数据、n为RSA公钥的第二数据、m为输入数据。假设d是1024位,p、q、dp、dq、pq就是512位,虽然模运算的次数多了,但是位数少了,大大缩短了模运算的时间。
实施例二
本发明实施例二提供一种安全的RSA运算实现装置,如图6所示,包括:
第一获取模块601,用于获取RSA私钥、RSA公钥和输入数据;
在本实施例中,第一获取模块601包括:
第一获取子模块,用于获取RSA私钥;
第一判断子模块,用于判断是否获取到RSA私钥的全部数据,是则触发第一生成子模块,否则触发第一获取子模块;
第一生成子模块,用于根据RSA私钥生成RSA公钥;
具体的,第一生成子模块具体用于将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据;
第二获取子模块,用于获取输入数据;
第一生成模块602,用于生成符合预设条件的第一随机数、第二随机数、第三随机数、预设长度的第一随机素数;
第一计算模块603,用于根据第一获取模块601获取的输入数据、RSA公钥的第二数据对第一生成模块602生成的第三随机数进行掩码计算得到掩码结果;
在本实施例中,第一计算模块603具体用于用第一获取模块601获取的输入数据和第一生成模块602生成第三随机数的乘积对第一获取模块601获取的RSA公钥的第二数据进行模运算得到掩码结果;
第二生成模块604,用于根据第一生成模块602生成的第一随机数、第二随机数、第一随机素数、第一计算模块603计算得到的掩码结果、第一获取模块601获取到的RSA私钥和RSA公钥的第二数据生成第一中间数据;
第三生成模块605,用于生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;
第四生成模块606,用于根据第三生成模块605生成的第四随机数、第五随机数、第一生成模块602生成的第三随机数、第二随机素数、第一获取模块601获取的RSA私钥和RSA公钥的第二数据生成第二中间数据;
第五生成模块607,用于根据第二生成模块604生成的第一中间数据、第四生成模块606生成的第二中间数据和第一获取模块601获取的RSA公钥的第二数据生成结果数据;
在本实施例中,第五生成模块607具体用于用第二生成模块604生成的第一中间数据和第四生成模块606生成的第二中间数据的乘积对第一获取模块601获取的RSA公钥的第二数据进行模运算得到结果数据;
第六生成模块608,用于根据第五生成模块607生成的结果数据和第一获取模块601获取的RSA公钥生成第三中间数据;
在本实施例中,第六生成模块608具体用于以第五生成模块607生成的结果数据为底数,第一获取模块601获取的RSA公钥的第一数据为指数进行幂运算,用幂运算结果对第一获取模块601获取的RSA公钥的第二数据进行模运算得到第三中间数据;
第一判断模块609,用于判断第六生成模块608生成的第三中间数据是否与第一获取模块601获取的输入数据一致,是则输出结果数据,否则报错。
优选的,在本实施例中,第一计算模块603具体用于通过协处理器根据第一获取模块601获取的输入数据、RSA公钥的第二数据对第一生成模块602生成的第三随机数进行掩码计算得到掩码结果;
第二生成模块604具体用于通过协处理器根据第一生成模块602生成的第一随机数、第二随机数、第一随机素数、第一计算模块603计算得到的掩码结果、第一获取模块601获取到的RSA私钥和RSA公钥的第二数据生成第一中间数据;
第四生成模块606具体用于通过协处理器根据第三生成模605块生成的第四随机数、第五随机数、第一生成模块602生成的第三随机数、第二随机素数、第一获取模块601获取的RSA私钥和RSA公钥的第二数据生成第二中间数据;
第五生成模块607具体用于通过协处理器根据第二生成模块604生成的第一中间数据、第四生成模块606生成的第二中间数据和第一获取模块601获取的RSA公钥的第二数据生成结果数据。
具体的,在本实施例中,第二生成模块604包括:
第一运算子模块,用于用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;
第一作为子模块,用于将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;
第二运算子模块,用于以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;
第二作为子模块,用于将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;
第三运算子模块,用于用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;
第一计算子模块,用于对第七中间数据和第十中间数据进行计算得到第十一中间数据;
第四运算子模块,用于用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据。
其中,第二运算子模块包括:
第一运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;
第一判断单元,用于判断第一运算单元的第五中间数据的当前位的值是否为1,是则触发第二运算更新单元,否则触发第一运算更新单元;
第一运算更新单元,用于用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,触发第二判断单元;
第二运算更新单元,用于用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,触发第二判断单元;
第二判断单元,用于判断第一运算单元的第六中间数据的当前位的值是否为1,是则触发第三运算更新单元,否则触发第四运算更新单元;
第三运算更新单元,用于用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,触发第五运算更新单元;
第四运算更新单元,用于用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,触发第五运算更新单元;
第五运算更新单元,用于用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;
第三判断单元,用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发第一判断单元;
第四判断单元,用于判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束。
可选的,第二运算子模块还包括:
第一设置单元,用于设置第三临时数据、第四临时数据、第五临时数据、第六临时数据的初始值均为1;
第五判断单元,用于在判断第一运算单元的第二临时数据、第一设置单元的第三临时数据和第四临时数据是否均为0,如均不为0则触发第一判断单元,否则报错;
第六判断单元,用于判断第一运算单元的第二临时数据、第一设置单元的第五临时数据和第六临时数据是否均为0,如均不为0则触发第二判断单元,否则报错;
第三判断单元,具体用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发第五判断单元。
其中,第一计算子模块包括:
第二运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对第一临时值进行模运算得到第二临时值;
第三运算单元,用于用第二临时值与RSA私钥的第五数据的乘积对第一临时值进行模运算得到第三临时值;
第一作为单元,用于将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。
具体的,在本实施例中,第四生成模块606包括:
第五运算子模块,用于用第三随机数对RSA私钥的第一数据进行模运算得到第十二中间数据;
第三作为子模块,用于将第四随机数与RSA私钥的第一数据减1之差的乘积作为第七中间值,将RSA私钥的第三数据的负值与第七中间值之和作为第十三中间数据;将第五随机数与RSA私钥的第一数据减1之差的乘积作为第八中间值,用第八中间值与RSA私钥的第三数据之和再减1的差值作为第十四中间数据;
第六运算子模块,用于以第十二中间数据为底数、第十三中间数据为指数进行幂运算得到第九中间值,用第九中间值对RSA私钥的第一数据与第二随机素数的乘积做模运算得到第十五中间数据;
第四作为子模块,用于将第四随机数与RSA私钥的第二数据减1之差的乘积作为第十中间值,将RSA私钥的第四数据的负值与第十中间值之和作为第十六中间数据;将第五随机数与RSA私钥的第二数据减1之差的乘积作为第十一中间值,用第十一中间值加上RSA私钥的第四数据再减1的差值作为第十七中间数据;
第七运算子模块,用于用第三随机数对RSA私钥的第二数据进行模运算得到第二十中间数据;以第二十中间数据为底数、第十六中间数据为指数进行幂运算得到第十二中间值,用第十二中间值对RSA私钥的第二数据与第二随机素数的乘积做模运算得到第十八中间数据;
第二计算子模块,用于对第十五中间数据和第十八中间数据进行计算得到第十九中间数据;
第八运算子模块,用于用第十九中间数据对RSA公钥的第二数据进行模运算得到第二中间数据。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (22)
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公钥的第二数据对所述第一生成模块生成的第三随机数进行掩码计算得到掩码结果;
第二生成模块,用于根据所述第一生成模块生成的第一随机数、第二随机数、第一随机素数、所述第一计算模块计算得到的掩码结果、所述第一获取模块获取到的RSA公钥的第二数据和RSA私钥生成第一中间数据;
第三生成模块,用于生成符合预设条件的第四随机数和第五随机数、预设长度的第二随机素数;
第四生成模块,用于根据所述第三生成模块生成的第四随机数、第五随机数、所述第一生成模块生成的第三随机数、第二随机素数、所述第一获取模块获取的RSA公钥的第二数据和RSA私钥生成第二中间数据;
第五生成模块,用于根据所述第二生成模块生成的第一中间数据、所述第四生成模块生成的第二中间数据和所述第一获取模块获取的RSA公钥的第二数据生成结果数据;
第六生成模块,用于根据所述第五生成模块生成的结果数据和所述第一获取模块获取的RSA公钥生成第三中间数据;
第一判断模块,用于判断所述第六生成模块生成的第三中间数据是否与所述第一获取模块获取的输入数据一致,是则输出所述结果数据,否则报错。
13.如权利要求12所述的装置,其特征在于,所述第一获取模块包括:
第一获取子模块,用于获取RSA私钥;
第一判断子模块,用于判断是否获取到RSA私钥的全部数据,是则触发第一生成子模块,否则触发所述第一获取子模块;
所述第一生成子模块,用于根据RSA私钥生成RSA公钥;
第二获取子模块,用于获取输入数据。
14.如权利要求13所述的装置,其特征在于,所述第一生成子模块具体用于将RSA私钥的第一数据和RSA私钥的第二数据的乘积作为RSA公钥的第一数据,用RSA私钥的第三数据对RSA私钥的第一数据减1的差值做模逆运算得到RSA公钥的第二数据。
15.如权利要求12所述的装置,其特征在于,所述第一计算模块具体用于通过协处理器根据所述第一获取模块获取的输入数据、RSA公钥的第二数据对所述第一生成模块生成的第三随机数进行掩码计算得到掩码结果;
所述第二生成模块具体用于通过协处理器根据所述第一生成模块生成的第一随机数、第二随机数、第一随机素数、所述第一计算模块计算得到的掩码结果、所述第一获取模块获取到的RSA公钥的第二数据和RSA私钥生成第一中间数据;
所述第四生成模块具体用于通过协处理器根据所述第三生成模块生成的第四随机数、第五随机数、所述第一生成模块生成的第三随机数、第二随机素数、所述第一获取模块获取的RSA公钥的第二数据和RSA私钥生成第二中间数据;
所述第五生成模块具体用于通过协处理器根据所述第二生成模块生成的第一中间数据、所述第四生成模块生成的第二中间数据和所述第一获取模块获取的RSA公钥的第二数据生成结果数据。
16.如权利要求12所述的装置,其特征在于,所述第一计算模块具体用于用所述第一获取模块获取的输入数据和所述第一生成模块生成第三随机数的乘积对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到掩码结果。
17.如权利要求12所述的装置,其特征在于,所述第二生成模块包括:
第一运算子模块,用于用掩码结果对RSA私钥的第一数据进行模运算得到第四中间数据;
第一作为子模块,用于将第一随机数与RSA私钥的第一数据减1之差的乘积作为第一中间值,将RSA私钥的第三数据与第一中间值之和作为第五中间数据;将第二随机数与RSA私钥的第一数据减1之差的乘积作为第二中间值,用第二中间值减去RSA私钥的第三数据再减1的差值作为第六中间数据;
第二运算子模块,用于以第四中间数据为底数、第五中间数据为指数进行幂运算得到第三中间值,用第三中间值对RSA私钥的第一数据与第一随机素数的乘积做模运算得到第七中间数据;
第二作为子模块,用于将第一随机数与RSA私钥的第二数据减1之差的乘积作为第四中间值,将RSA私钥的第四数据与第四中间值之和作为第八中间数据;将第二随机数与RSA私钥的第二数据减1之差的乘积作为第五中间值,用第五中间值减去RSA私钥的第四数据再减1的差值作为第九中间数据;
第三运算子模块,用于用掩码结果对RSA私钥的第二数据进行模运算得到第二十一中间数据;以所述第二十一中间数据为底数、第八中间数据为指数进行幂运算得到第六中间值,用第六中间值对RSA私钥的第二数据与第一随机素数的乘积做模运算得到第十中间数据;
第一计算子模块,用于对第七中间数据和第十中间数据进行计算得到第十一中间数据;
第四运算子模块,用于用第十一中间数据对RSA公钥的第二数据进行模运算得到第一中间数据。
18.如权利要求17所述的装置,其特征在于,所述第二运算子模块包括:
第一运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时数据;用第四中间数据对第一临时数据进行模运算得到第二临时数据;将第五中间数据的最高位作为第五中间数据的当前位,将第六中间数据的最高位作为第六中间数据的当前位;
第一判断单元,用于判断所述第一运算单元的第五中间数据的当前位的值是否为1,是则触发第二运算更新单元,否则触发第一运算更新单元;
所述第一运算更新单元,用于用第三临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第三临时数据,触发第二判断单元;
所述第二运算更新单元,用于用第四临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第四临时数据,触发第二判断单元;
所述第二判断单元,用于判断所述第一运算单元的第六中间数据的当前位的值是否为1,是则触发第三运算更新单元,否则触发第四运算更新单元;
所述第三运算更新单元,用于用第五临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第五临时数据,触发第五运算更新单元;
所述第四运算更新单元,用于用第六临时数据与第二临时数据的乘积对第一临时数据进行模运算,并用模运算结果更新第六临时数据,触发第五运算更新单元;
所述第五运算更新单元,用于用第二临时数据的二次方值对第一临时数据进行模运算,并用模运算结果更新第二临时数据;
第三判断单元,用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发所述第一判断单元;
所述第四判断单元,用于判断用第三临时数据与第四临时数据的乘积对第一临时数据模运算的结果是否与用第五临时数据与第六临时数据的乘积对第一临时数据模运算的结果一致,是则将第三临时数据作为第七中间数据,否则报错,结束。
19.如权利要求18所述的装置,其特征在于,所述第二运算子模块还包括:
第一设置单元,用于设置所述第三临时数据、所述第四临时数据、所述第五临时数据、所述第六临时数据的初始值均为1;
第五判断单元,用于在判断所述第一运算单元的第二临时数据、所述第一设置单元的第三临时数据和第四临时数据是否均为0,如均不为0则触发所述第一判断单元,否则报错;
第六判断单元,用于判断所述第一运算单元的第二临时数据、所述第一设置单元的第五临时数据和第六临时数据是否均为0,如均不为0则触发所述第二判断单元,否则报错;
所述第三判断单元,具体用于判断是否处理完第五数据中所有位的值和第六数据中所有位的值,是则触发第四判断单元,否则将第五数据的当前位的相邻次低位作为第五数据的当前位,将第六数据的当前位的相邻次低位作为第六数据的当前位,触发所述第五判断单元。
20.如权利要求17所述的装置,其特征在于,所述第一计算子模块包括:
第二运算单元,用于用RSA私钥的第一数据与第一随机素数的乘积得到第一临时值;用第七中间数据与第十中间数据的差值对所述第一临时值进行模运算得到第二临时值;
第三运算单元,用于用所述第二临时值与RSA私钥的第五数据的乘积对所述第一临时值进行模运算得到第三临时值;
第一作为单元,用于将第三临时值与RSA私钥的第二数据的乘积作为第四临时值,计算第十中间数据和第四临时值的和作为第十一中间数据。
21.如权利要求12所述的装置,其特征在于,所述第四生成模块包括:
第五运算子模块,用于用第三随机数对RSA私钥的第一数据进行模运算得到第十二中间数据;
第三作为子模块,用于将第四随机数与RSA私钥的第一数据减1之差的乘积作为第七中间值,将RSA私钥的第三数据的负值与第七中间值之和作为第十三中间数据;将第五随机数与RSA私钥的第一数据减1之差的乘积作为第八中间值,用第八中间值与RSA私钥的第三数据之和再减1的差值作为第十四中间数据;
第六运算子模块,用于以第十二中间数据为底数、第十三中间数据为指数进行幂运算得到第九中间值,用第九中间值对RSA私钥的第一数据与第二随机素数的乘积做模运算得到第十五中间数据;
第四作为子模块,用于将第四随机数与RSA私钥的第二数据减1之差的乘积作为第十中间值,将RSA私钥的第四数据的负值与第十中间值之和作为第十六中间数据;将第五随机数与RSA私钥的第二数据减1之差的乘积作为第十一中间值,用第十一中间值加上RSA私钥的第四数据再减1的差值作为第十七中间数据;
第七运算子模块,用于用第三随机数对RSA私钥的第二数据进行模运算得到第二十中间数据;以第二十中间数据为底数、第十六中间数据为指数进行幂运算得到第十二中间值,用第十二中间值对RSA私钥的第二数据与第二随机素数的乘积做模运算得到第十八中间数据;
第二计算子模块,用于对第十五中间数据和第十八中间数据进行计算得到第十九中间数据;
第八运算子模块,用于用第十九中间数据对RSA公钥的第二数据进行模运算得到第二中间数据。
22.如权利要求12所述的装置,其特征在于,所述第五生成模块具体用于用所述第二生成模块生成的第一中间数据和所述第四生成模块生成的第二中间数据的乘积对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到结果数据;
所述第六生成模块具体用于以所述第五生成模块生成的结果数据为底数,所述第一获取模块获取的RSA公钥的第一数据为指数进行幂运算,用幂运算结果对所述第一获取模块获取的RSA公钥的第二数据进行模运算得到第三中间数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226714.9A CN109379185B (zh) | 2018-10-22 | 2018-10-22 | 一种安全的rsa运算实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226714.9A CN109379185B (zh) | 2018-10-22 | 2018-10-22 | 一种安全的rsa运算实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109379185A CN109379185A (zh) | 2019-02-22 |
CN109379185B true CN109379185B (zh) | 2021-04-27 |
Family
ID=65401253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811226714.9A Active CN109379185B (zh) | 2018-10-22 | 2018-10-22 | 一种安全的rsa运算实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109379185B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110048840B (zh) * | 2019-04-28 | 2021-10-15 | 苏州国芯科技股份有限公司 | 一种基于rsa算法的信息处理方法、***及相关组件 |
CN113630261B (zh) * | 2021-10-13 | 2021-12-17 | 环球数科集团有限公司 | 基于沙盒内签名和非对称加密技术的离线检测票务*** |
CN114844650B (zh) * | 2022-05-24 | 2023-12-01 | 北京宏思电子技术有限责任公司 | 一种设备签名方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106452789A (zh) * | 2016-11-02 | 2017-02-22 | 北京宏思电子技术有限责任公司 | 一种多方位防侧信道攻击的签名方法 |
CN106685643A (zh) * | 2015-11-07 | 2017-05-17 | 上海复旦微电子集团股份有限公司 | Crt模式下公钥验证的方法及装置 |
CN108111309A (zh) * | 2018-02-28 | 2018-06-01 | 北京融通高科微电子科技有限公司 | Rsa私钥掩码运算方法、协处理器及rsa运算装置 |
CN108155994A (zh) * | 2017-12-22 | 2018-06-12 | 青岛大学 | 应用于rsa解密的安全外包计算方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2154604A1 (en) * | 2008-08-06 | 2010-02-17 | Gemalto SA | Countermeasure securing exponentiation based cryptography |
WO2011089143A1 (en) * | 2010-01-20 | 2011-07-28 | Intrinsic Id B.V. | Device and method for obtaining a cryptographic key |
-
2018
- 2018-10-22 CN CN201811226714.9A patent/CN109379185B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685643A (zh) * | 2015-11-07 | 2017-05-17 | 上海复旦微电子集团股份有限公司 | Crt模式下公钥验证的方法及装置 |
CN106452789A (zh) * | 2016-11-02 | 2017-02-22 | 北京宏思电子技术有限责任公司 | 一种多方位防侧信道攻击的签名方法 |
CN108155994A (zh) * | 2017-12-22 | 2018-06-12 | 青岛大学 | 应用于rsa解密的安全外包计算方法 |
CN108111309A (zh) * | 2018-02-28 | 2018-06-01 | 北京融通高科微电子科技有限公司 | Rsa私钥掩码运算方法、协处理器及rsa运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109379185A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109379185B (zh) | 一种安全的rsa运算实现方法及装置 | |
EP2553866B1 (en) | System and method for protecting cryptographic assets from a white-box attack | |
EP2442484A1 (en) | Authenticated encryption for digital signatures with message recovery | |
CN109818730B (zh) | 盲签名的获取方法、装置和服务器 | |
US7218735B2 (en) | Cryptography method on elliptic curves | |
CN101632255A (zh) | 密码方法及*** | |
EP2503730A1 (en) | Binding data to an ECDSA signature component | |
CN106209371B (zh) | 应用于rsa算法生成密钥的外包方法 | |
CN108039947B (zh) | 一种利用协处理器抗攻击的sm2签名方法 | |
JP2020510879A (ja) | 楕円曲線点乗算デバイス及び方法 | |
KR20100113130A (ko) | 비대칭 암호화를 위한 대응조치 방법 및 디바이스 | |
Balamurugan et al. | Enhancing security in text messages using matrix based mapping and ElGamal method in elliptic curve cryptography | |
EP3698262B1 (en) | Protecting modular inversion operation from external monitoring attacks | |
CN112653546A (zh) | 一种基于功耗分析的故障攻击检测方法 | |
CN110677243B (zh) | 一种支持异构公钥***的代理重签名方案的构造方法 | |
JP4988448B2 (ja) | 一括検証装置、プログラム及び一括検証方法 | |
US7903814B2 (en) | Enhancing the security of public key cryptosystem implementations | |
CN104821884A (zh) | 基于非对称密钥体系的私钥保护方法 | |
CN104717060A (zh) | 一种攻击椭圆曲线加密算法的方法和攻击设备 | |
CN105337734B (zh) | 包括错误检测的椭圆曲线加密方法 | |
CN107465508B (zh) | 一种软硬件结合构造真随机数的方法、***和设备 | |
CN110798313B (zh) | 基于秘密动态共享的包含秘密的数的协同生成方法及*** | |
KR101344402B1 (ko) | Rsa 서명 방법 및 장치 | |
KR20080012633A (ko) | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 | |
KR20080012634A (ko) | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |