CN113676335B - 一种在安全芯片内实现签名的方法及装置 - Google Patents
一种在安全芯片内实现签名的方法及装置 Download PDFInfo
- Publication number
- CN113676335B CN113676335B CN202111224144.1A CN202111224144A CN113676335B CN 113676335 B CN113676335 B CN 113676335B CN 202111224144 A CN202111224144 A CN 202111224144A CN 113676335 B CN113676335 B CN 113676335B
- Authority
- CN
- China
- Prior art keywords
- data
- modular multiplication
- main processor
- multiplication result
- register
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种在安全芯片内实现签名的方法及装置,涉及信息安全领域。该方法包括:主处理器接收上位机发送的待签名数据,从存储器中获取预置的签名私钥;根据签名私钥和固定点生成第一中间点;对第一中间点进行点转换处理得到签名公钥;根据签名公钥、待签名数据、生成的随机数、固定点生成第二中间点;对第二中间点进行点转换处理得到第三中间值;根据签名公钥、待签名数据、第三中间值生成签名结果并返回给上位机。本发明技术方案适用非素数阶群的椭圆曲线,大数据处理过程需要协处理器的参与,提高了运算速度,使得公钥和私钥一一对应、每对公私钥都各不相同,保证了签名过程的安全性,使得用户进行身份认证和网络数据传输过程更加安全可靠。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种在安全芯片内实现签名的方法及装置。
背景技术
随着通信技术和信息处理技术的发展,信息在传输过程中的安全性越来越受到关注,需要一种技术来保证信息在通信过程中不被窃听、篡改和仿造,而密码技术能很好的满足这方面的要求。
在传统互联网中,为了保护用户网上业务的安全性和用户身份的可靠性,往往采用基于PKI(英文全称:Public Key Infrastructure,中文全称:公开密钥基础设施)的数字签名和加解密等密码技术,来验证用户身份的真实性,保证信息的机密性、完整性和签名者的不可否认性等。
现有身份认证和网络数据传输过程所使用的椭圆曲线签名算法中,有些算法采用的椭圆曲线不是素数阶群的椭圆曲线,即同一个私钥可对应多个公钥,也就是说同一个私钥的签名数据可以用多个公钥进行验签,会导致身份认证和网络数据传输存在安全风险;现有技术中解决用多个公钥进行验签的问题需要安全芯片进行其他处理过程,导致安全芯片的工作效率降低。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种在安全芯片内实现签名的方法及装置。
第一方面,本发明实施例提供了一种在安全芯片内实现签名的方法,包括:
步骤S1:主处理器接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
步骤S2:所述主处理器根据所述签名私钥和固定点使用点乘模块生成第一中间点;
步骤S3:所述主处理器对所述第一中间点进行点转换处理得到签名公钥;
步骤S4:所述主处理器根据所述签名公钥、所述待签名数据、生成的随机数、所述固定点使用点乘模块生成第二中间点;
步骤S5:所述主处理器对所述第二中间点进行点转换处理得到第三中间值;
步骤S6:所述主处理器根据所述签名公钥、所述待签名数据、所述第三中间值生成签名结果并返回给所述上位机;
所述进行点转换处理的实现过程包括以下步骤:
步骤A1:所述主处理器将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用所述协处理器对所述第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
步骤A2:所述主处理器利用所述协处理器对所述第一寄存器中的待转换点、所述第五模乘结果、所述第六模乘结果和所述第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
步骤A3:所述主处理器判断所述第十二模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A4,否则执行步骤A5;
步骤A4:所述主处理器将所述第九模乘结果、所述第十模乘结果、所述第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A5:所述主处理器将待转换点的第一数据、第二数据、所述第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A6:所述主处理器利用所述协处理器对所述第二预设值和所述第三寄存器中的第一中间数据进行计算得到第十三模乘结果,所述主处理器判断所述第十三模乘结果中第一字节数据的最低位是否为所述设定值,是则执行步骤A7,否则执行步骤A8;
步骤A7:所述主处理器利用所述协处理器对所述第二预设值、固定值和所述第四寄存器中的第二中间数据进行运算,并用运算结果更新所述第四寄存器中的第二中间数据,执行步骤A8;
步骤A8:所述主处理器利用所述协处理器对所述第二预设值、所述第一寄存器中的待转换点、所述第四寄存器中的第二中间数据和所述第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
步骤A9:所述主处理器判断所述第十四模乘结果中第一字节数据的最低位是否为所述设定值,是则执行步骤A10,否则执行步骤A11;
步骤A10:所述主处理器利用所述协处理器对所述第二预设值、所述固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
步骤A11:所述主处理器将所述第十四模乘结果作为点转换处理的结果数据。
第二方面,本发明实施例又提供一种在安全芯片内实现签名的装置,包括:
接收获取模块,用于接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
第一点乘运算模块,用于根据所述签名私钥和固定点使用点乘模块进行运算得到第一中间点;
第一转换处理模块,用于对所述第一中间点进行点转换处理得到签名公钥;
第二点乘运算模块,用于根据所述签名公钥、所述待签名数据、生成的随机数、所述固定点使用点乘模块生成第二中间点;
第二转换处理模块,用于对所述第二中间点进行点转换处理得到第三中间值;
生成返回模块,用于根据所述签名公钥、所述待签名数据、所述第三中间值生成签名结果并返回给所述上位机;
作为利用模块,用于在点转换处理过程中将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用所述协处理器对所述第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
第一利用模块,用于在点转换处理过程中利用所述协处理器对所述第一寄存器中的待转换点、所述第五模乘结果、所述第六模乘结果和所述第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
第一判断模块,用于在点转换处理过程中判断所述第十二模乘结果中第一字节数据的最低位是否为设定值,是则触发第一作为传输模块,否则触发第二作为传输模块;
所述第一作为传输模块,用于将所述第九模乘结果、所述第十模乘结果、所述第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
所述第二作为传输模块,用于将所述第一寄存器中的待转换点的第一数据、第二数据、所述第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
所述利用判断模块,用于在点转换处理过程中利用所述协处理器对所述第二预设值和所述第三寄存器中的第一中间数据进行计算得到第十三模乘结果,判断所述第十三模乘结果中第一字节数据的最低位是否为所述设定值,是则触发第二利用模块,触发第三利用模块;
所述第二利用模块,用于利用所述协处理器对所述第二预设值、固定值和所述第四寄存器中的第二中间数据进行运算,并用运算结果更新所述第四寄存器中的第二中间数据,触发第三利用模块;
所述第三利用模块,用于利用所述协处理器对所述第二预设值、所述第一寄存器中的待转换点、所述第四寄存器中的第二中间数据和所述第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
第一判断模块,用于在点转换处理过程中判断所述第十四模乘结果中第一字节数据的最低位是否为所述设定值,是则触发利用作为模块,否则触发第一作为模块;
所述利用作为模块,用于利用所述协处理器对所述第二预设值、固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
所述第一作为模块,用于将所述第十四模乘结果作为点转换处理的结果数据。
第三方面,本发明实施例又提供一种签名设备,所述签名设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现上述在安全芯片内实现签名的方法。
第四方面,本发明实施例又提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当所述计算机程序在签名设备上运行时,使得所述签名设备执行上述在安全芯片内实现签名的方法。
第五方面,本发明实施例又提供一种芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行上述在安全芯片内实现签名的方法。
本发明与现有技术相比,具有以下优点:
本发明技术方案适用非素数阶群的椭圆曲线,该方案通过协处理器对大数据进行处理,不仅提高了运算速度,为主处理器的工作效率提供保障,而且将不固定点变成唯一固定点,使得公钥和私钥一一对应、每对公私钥都各不相同,保证了签名过程的安全性,使得用户进行身份认证和网络数据传输过程更加安全可靠。
附图说明
图1为本发明实施例一提供的一种在安全芯片内实现签名的方法流程图;
图2为本发明实施例一中的进行点转换处理的实现过程流程图;
图3为本发明实施例二提供的一种在安全芯片内实现签名的方法流程图;
图4至图7为本发明实施例二中的步骤205的具体实现过程流程图。
具体实施方式
本申请提出了一种在安全芯片内实现签名的方法及装置,下面结合附图,对本申请具体实施方式进行详细说明。所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例一提供了一种在安全芯片内实现签名的方法,如图1所示,包括:
步骤S1:主处理器接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
步骤S2:主处理器根据签名私钥和固定点使用点乘模块生成第一中间点;
在本实施例中,步骤S2包括:
步骤S21:主处理器对签名私钥进行哈希运算得到第一哈希值,并将第一哈希值拆分成长度相等的两部分,分别记作第一拆分数据和第二拆分数据;
步骤S22:主处理器对第一拆分数据进行转化处理得到第三拆分数据;
具体的,本实施例中的步骤S22包括:
步骤S22-1:主处理器对第一拆分数据的第一字节数据与第一常数进行与运算并用与运算结果替换第一拆分数据的第一字节数据;
步骤S22-2:主处理器对第一拆分数据的最末字节数据与第二常数进行与运算,并用与运算结果替换第一拆分数据的最末字节数据;主处理器将第一拆分数据从高位端到低位端记为第一字节到最末字节;
步骤S22-3:主处理器将第一拆分数据的最末字节的次高位设为设定值;
步骤S22-4:主处理器设置第一临时存储器的初值为0,将第一拆分数据的最末字节数据作为当前字节数据并保存到原始存储区中;
步骤S22-5:主处理器对当前字节数据与第三常数进行与运算并将与运算结果保存到第二临时存储器;
步骤S22-6:主处理器将原始存储区中的字节数据右移3位并用右移结果替换原始存储区中的字节数据;
步骤S22-7:主处理器用原始存储区中的字节数据加上第一临时存储器中的数据的结果替换原始存储区中的字节数据,用原始存储区中的字节数据替换第一拆分数据中的当前字节数据;
步骤S22-8:主处理器将第二临时存储器的数据左移5位并用左移结果替换第一临时存储器中的数据;
步骤S22-9:主处理器判断第一拆分数据的所有字节数据是否处理完成,是则将第一拆分数据作为第三拆分数据,否则将当前字节数据前面的相邻字节数据作为当前字节数据,返回步骤S22-5;
步骤S23:主处理器根据第三拆分数据和固定点使用点乘模块进行运算得到第一中间点;
可选的,本实施例中的点乘模块实现过程与现有技术中的点乘运算过程相同,在此不再赘述;
步骤S3:主处理器对第一中间点进行点转换处理得到签名公钥;
步骤S4:主处理器根据签名公钥、待签名数据、生成的随机数、固定点使用点乘模块生成第二中间点;
具体的,在本实施例中,步骤S4包括:
步骤S41:主处理器将签名公钥、待签名数据、生成的随机数进行哈希运算得到第二哈希值;
步骤S42:主处理器对第二哈希值与第一预设值进行求模运算得到第二中间值;
步骤S43:主处理器根据第二中间值与固定点使用点乘模块进行运算得到第二中间点;
可选的,在本实施例中,步骤S4之前还包括:主处理器生成随机数;
步骤S5:主处理器对第二中间点进行点转换处理得到第三中间值;
步骤S6:主处理器根据签名公钥、待签名数据、第三中间值生成签名结果并返回给上位机;
具体的,在本实施例中,步骤S6包括:
步骤S61:主处理器将签名公钥、待签名数据、第三中间值进行哈希运算得到第三哈希值;
步骤S62:主处理器将第三哈希值与第一预设值进行模运算得到第四中间值并传输到协处理器的第六寄存器中,并利用协处理器以第一预设值为模对第三拆分数据与第六寄存器中的第四中间值进行模乘运算得到第五中间值;
具体的,在本实施例中,协处理器以第一预设值为模对第三拆分数据与第四中间值进行模乘运算得到第五中间值并返回给主处理器;
步骤S63:主处理器利用协处理器以第一预设值为模,对第五中间值与第二中间值进行模加运算得到第六中间值;
具体的,在本实施例中,协处理器以第一预设值为模对第五中间值与第二中间值进行模加运算得到第六中间值返回给主处理器;
步骤S64:主处理器对第六中间值进行转换处理得到第七中间值,将第三中间值与第七中间值进行拼接并作为签名结果返回给上位机;
进一步地,主处理器对第六中间值进行转换处理得到第七中间值,具体为:主处理器将第六中间值的最末字节的最高位设置为设定值得到第七中间值。
本实施例中进行点转换处理的实现过程如图2所示,包括以下步骤:
步骤A1:主处理器将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用协处理器对第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
其中,本实施例中的步骤A1包括:
步骤A1-1:主处理器将中间点作为待转换点并传输到协处理器的第一寄存器中,利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据并返回给主处理器;
步骤A1-2:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据并返回给主处理器;
步骤A1-3:主处理器利用协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果;
步骤A1-4:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的第一待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果并返回给主处理器;
步骤A1-5:主处理器利用协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算得到第三模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算得到第三模乘结果并返回给主处理器;
步骤A1-6:主处理器利用协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算得到第四模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算得到第四模乘结果并返回给主处理器;
步骤A1-7:主处理器以第二预设值为模,对第四模乘结果进行反平方根运算得到第三临时数据并传输到协处理器的第二寄存器中,利用协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算得到第五模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算得到第五模乘结果并返回给主处理器;
步骤A1-8:主处理器利用协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算得到第六模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算得到第六模乘结果并返回给主处理器;
步骤A2:主处理器利用协处理器对第一寄存器中的待转换点、第五模乘结果、第六模乘结果和第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
具体的,本实施例中的步骤A2包括:
步骤A2-1:主处理器利用协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算得到第七模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算得到第七模乘结果并返回给主处理器;
步骤A2-2:主处理器利用协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的待转换点的第四数据进行模乘运算得到第八模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的第一待转换点的第四数据进行模乘运算得到第八模乘结果并返回给主处理器;
步骤A2-3:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果并返回给主处理器;
步骤A2-4:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算得到第十模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算得到第十模乘结果并返回给主处理器;
步骤A2-5:主处理器利用协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果并返回给主处理器;
步骤A2-6:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算得到第十二模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算得到第十二模乘结果并返回给主处理器;
步骤A3:主处理器判断第十二模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A4,否则执行步骤A5;
例如,本实施例中的设定值为1;
步骤A4:主处理器将第九模乘结果、第十模乘结果、第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A5:主处理器将第一寄存器中的待转换点的第一数据、第二数据、第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A6:主处理器利用协处理器对第二预设值和第三寄存器中的第一中间数据进行计算得到第十三模乘结果,主处理器判断第十三模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A7,否则执行步骤A8;
具体的,本实施例中的步骤A6包括:
步骤A6-1:主处理器利用协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算得到第十三模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算得到第十三模乘结果并返回给主处理器;
步骤A6-2:主处理器判断第十三模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A7,否则执行步骤A8;
本实施例中的设定值为1;
步骤A7:主处理器利用协处理器对第二预设值、固定值和第四寄存器中的第二中间数据进行运算,并用运算结果更新第四寄存器中的第二中间数据,执行步骤A8;
具体的,本实施例中的步骤A7包括:主处理器利用协处理器以第二预设值为模,对固定值和第四寄存器中的第二中间数据进行模减运算,并用运算结果更新第四寄存器中的第二中间数据;
在本实施例中,协处理器对第二预设值、固定值和第四寄存器中的第二中间数据进行模减运算并用运算结果更新第四寄存器中的第二中间数据,将更新后的第四寄存器中的第二中间数据返回给主处理器;
步骤A8:主处理器利用协处理器对第二预设值、第一寄存器中的待转换点、第四寄存器中的第二中间数据和第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
具体的,本实施例中的步骤A8包括:
步骤A8-1:主处理器利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算得到第一模减结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算得到第一模减结果并返回给主处理器;
步骤A8-2:主处理器利用协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算得到第十四模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算得到第十四模乘结果并返回给主处理器;
步骤A9:主处理器判断第十四模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A10,否则执行步骤A11;
步骤A10:主处理器利用协处理器对第二预设值、固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
具体的,本实施例中的步骤A10包括:主处理器利用协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算,并将运算结果作为点转换处理的结果数据;
在本实施例中,协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算,用运算结果更新第十四模乘结果,并将更新后的第十四模乘结果返回给主处理器,主处理器接收将接收到的第十四模乘结果作为点转换处理的结果数据;
步骤A11:主处理器将第十四模乘结果作为点转换处理的结果数据。
本发明技术方案适用非素数阶群的椭圆曲线,该方案通过协处理器对大数据进行模加、模减、模乘等处理,不仅提高了运算速度,为主处理器的工作效率提供保障,而且将不固定点变成唯一固定点,使得公钥和私钥一一对应、每对公私钥都各不相同,保证了签名过程的安全性,使得用户进行身份认证和网络数据传输过程更加安全可靠。
实施例二
本发明实施例二提供一种在安全芯片内实现签名的方法,如图3所示,包括:
步骤201:主处理器接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
例如,本实施例中的待签名数据为:96E51B0BB04BAB44424050C5985E7C36556E515D52B6AA607995653F008C2643,签名私钥为:C6B3F9F6F3F66762EE21E2C5A42484657EF1A02EEDD13A40A470ADE578C1A0D5;
步骤202:主处理器对签名私钥进行哈希运算得到第一哈希值,并将第一哈希值拆分成长度相等的两部分,分别记作第一拆分数据和第二拆分数据;
例如,本实施例中主处理器对签名私钥C6B3F9F6F3F66762EE21E2C5A42484657EF1A02EEDD13A40A470ADE578C1A0D5进行哈希运算得到的第一哈希值为CA785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFCE18A67E830DF44C2B7B157D5DEDFB9628F28894B06F4CFC54D3C24E9B06DB8BA,将该第一哈希值拆分成均等的两份得到的第一拆分数据和第二拆分数据分别为:CA785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFC和E18A67E830DF44C2B7B157D5DEDFB9628F28894B06F4CFC54D3C24E9B06DB8BA;
步骤203:主处理器对第一拆分数据进行转化处理得到第三拆分数据;
例如,本实施例中的主处理器对第一拆分数据CA785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFC进行转化处理得到的第三拆分数据为:19EF0AA81534C1A3C6A7BC2D63D87A691C09C7733E5179F82389D99FE046890F;
具体为,本实施例的步骤203包括:
步骤203-1:主处理器对第一拆分数据的第一字节数据与第一常数进行与运算并用与运算结果替换第一拆分数据的第一字节数据;
可选的,本实施例中的第一常数为F8;
例如,本实施例中的主处理器将第一拆分数据CA785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFC的第一字节数据CA与第一常数F8进行与运算得到与运算结果C8,用与运算结果C8替换第一拆分数据的第一字节数据,替换后的第一拆分数据为C8785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFC;
步骤203-2:主处理器对第一拆分数据的最末字节数据与第二常数进行与运算,并用与运算结果替换第一拆分数据的最末字节数据;
可选的,本实施例中的第二常数为3F;
例如,本实施例中的主处理器将第一拆分数据CA785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374AFC的最末字节数据FC与第二常数3F进行与运算得到与运算结果3C,用与运算结果3C替换第一拆分数据的最末字节数据,替换后的第一拆分数据为C8785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374A3C;
具体的,在本实施例中,主处理器将第一拆分数据从高位端到低位端记为第一字节到最末字节;
步骤203-3:主处理器将第一拆分数据的最末字节的次高位设为设定值;
例如,本实施例中的设定值为1,主处理器将当前第一拆分数据C8785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374A3C的最末字节的次高位设置1,设置后的第一拆分数据:C8785740ADA0091E353EE56D19C3D64BE348389EF389CAC31F49CCFE04374A7C;
步骤203-4:主处理器设置第一临时存储器的初值为0,将第一拆分数据的最末字节数据作为当前字节数据并保存到原始存储区中;
例如,本实施例中的当前字节数据为7C;该步骤中原始存储区中的字节数据为7C;
步骤203-5:主处理器对当前字节数据与第三常数进行与运算,并将与运算结果保存到第二临时存储器;
可选的,本实施例中的第三常数为07;
例如,本实施例中的当前字节数据7C与第三常数07进行与运算得到的与运算结果为04;此时该步骤中第二临时存储器中的数据为04;
步骤203-6:主处理器将原始存储区中的当前字节数据右移3位并用右移结果替换原始存储区中的字节数据;
例如,本实施例中的当前字节数据7C右移3位得到的右移结果为0F,此时该步骤中原始存储区中的字节数据为0F;
步骤203-7:主处理器用原始存储区中的字节数据加上第一临时存储器的数据的结果替换原始存储区中的字节数据,用原始存储区中的字节数据替换第一拆分数据中的当前字节数据;
例如,本实施例中主处理器用原始存储区中的字节数据0F加上第一临时存储器的数据00的结果为0F,此时该步骤中原始存储区中的字节数据为0F,用原始存储区中的字节数据0F替换第一拆分数据中的当前字节数据7C,替换之后的第一拆分数据为:C8785740ADA0091E353EE56D19C3D64BE348389EF89CAC31F49CCFE04374A0F;
步骤203-8:主处理器将第二临时存储器的数据左移5位并用左移结果替换第一临时存储器中的数据;
例如,本实施例中的主处理器将第二临时存储器的数据04左移5位得到左移结果00,此时该步骤中第一临时存储器中的数据为00;
步骤203-9:主处理器判断第一拆分数据的所有字节数据是否处理完成,是则将第一拆分数据作为第三拆分数据,否则将当前字节数据前面的相邻字节数据作为当前字节数据,返回步骤203-5;
例如,本实施例中,主处理器将第一拆分数据的所有字节数据均处理完成得到的第三拆分数据为19EF0AA81534C1A3C6A7BC2D63D87A691C09C77335179F82389D99FE046890F;
步骤204:主处理器根据第三拆分数据和固定点使用点乘模块生成第一中间点;
在本实施例种,固定点包括四个数值,分别为:第一数值、第二数值、第三数值、第四数值;第一中间点包括四个数据,分别为:第一数据、第二数据、第三数据、第四数据;
例如,该步骤中第三拆分数据为19EF0AA81534C1A3C6A7BC2D63D87A691C09C7733E5179F82389D99FE046890F,第一数值为1AD5258F602D56C9B2A7259560C72C695CDCD6FD31E2A4C0FE536ECDD3366921、第二数值为5866666666666666666666666666666666666666666666666666666666666666、第三数值为0100000000000000000000000000000000000000000000000000000000000000、第四数值为A3DDB7A5B38ADE6DF5525177809FF0207DE3AB648E4EEA6665768BD70F5F8767;第一数据为454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245,第二数据为48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D,第三数据为1012FBAAF8090AC909E8CC736BA4D158C0FC6BAB8A746853C8F6DCB3352F830E,第四数据为265CAD1045DF2F24BA009E0D1186C4CEAE3AB38BEA5F40E90ED4396187D1423E;
步骤205:主处理器对第一中间点进行点转换处理得到签名公钥;
例如,该步骤中得到的签名公钥为:DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B;
具体的,在本实施例中,步骤205的具体实现过程如图4至图7所示,包括:
步骤301:主处理器将第一中间点作为待转换点并传输到协处理器的第一寄存器中,通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算;
例如,本实施例中的待转换点包括:第一数据454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245,第二数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D,第三数据1012FBAAF8090AC909E8CC736BA4D158C0FC6BAB8A746853C8F6DCB3352F830E,第四数据265CAD1045DF2F24BA009E0D1186C4CEAE3AB38BEA5F40E90ED4396187D1423E;
步骤302:协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据并返回给主处理器;
例如, 协处理器以第二预设值为EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对待转换点的第三数据1012FBAAF8090AC909E8CC736BA4D158C0FC6BAB8A746853C8F6DCB3352F830E和第二数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D进行模加运算得到的第一临时数据为58D63D74B61F3406C830DF1749913C13D0331DEC81CF7BCC8D551A2E816BB74B;
步骤303:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算;
步骤304:协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据并返回给主处理器;
例如, 本实施例中协处理器以第二预设值为EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对待转换点的第三数据1012FBAAF8090AC909E8CC736BA4D158C0FC6BAB8A746853C8F6DCB3352F830E和第二数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D进行模减运算得到的第二临时数据为B54DB8E13AF4DF8B4B9FBACF8DB7669EB0C5BA6A931955DA02989F39EAF24E51;
步骤305:主处理器通知协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算;
步骤306:协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第一临时数据58D63D74B61F3406C830DF1749913C13D0331DEC81CF7BCC8D551A2E816BB74B和第二临时数据B54DB8E13AF4DF8B4B9FBACF8DB7669EB0C5BA6A931955DA02989F39EAF24E51进行模乘运算得到的第一模乘结果为5761B0DF7F82481DE94FE240CD3E405A7EA2EA3F03D9017ACC7AFCDE03341B20;
步骤307:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算;
步骤308:协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对待转换点的第一数据454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245和第二数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D进行模乘运算得到的第二模乘结果为B3A48326E7847705C28CFD3F7BC444BEE59A1D167241B42082317A93F8C45431;
步骤309:主处理器通知协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算;
步骤310:协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算得到第三模乘结果并返回给主处理器;
例如,该步骤中主处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第二模乘结果B3A48326E7847705C28CFD3F7BC444BEE59A1D167241B42082317A93F8C45431和第二模乘结果B3A48326E7847705C28CFD3F7BC444BEE59A1D167241B42082317A93F8C45431进行模乘运算得到的第三模乘结果为:31A178F004E8492ACCCAB58580BFCC146FB670E4211530D4C81052760757073E;
步骤311:主处理器通知协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算;
步骤312:协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算得到第四模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第三模乘结果31A178F004E8492ACCCAB58580BFCC146FB670E4211530D4C81052760757073E和第一模乘结果5761B0DF7F82481DE94FE240CD3E405A7EA2EA3F03D9017ACC7AFCDE03341B20进行模乘运算得到的第四模乘结果为:59889AC4124FE203775275F4D6DC88B46B060C40E16395F1F6DF04C3137F6372;
步骤313:主处理器以第二预设值为模,对第四模乘结果进行反平方根运算得到第三临时数据并传输到协处理器的第二寄存器中,通知协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算;
例如,该步骤中主处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第四模乘结果5761B0DF7F82481DE94FE240CD3E405A7EA2EA3F03D9017ACC7AFCDE03341B20进行反平方根运算得到的第三临时数据为:88BD75E5E2D0362FEA988CA8D223B0F792C89328E99B1CC93734D8B4EA8AF25F;
步骤314:协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算得到第五模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第三临时数据88BD75E5E2D0362FEA988CA8D223B0F792C89328E99B1CC93734D8B4EA8AF25F和第一模乘结果5761B0DF7F82481DE94FE240CD3E405A7EA2EA3F03D9017ACC7AFCDE03341B20进行模乘运算得到的第五模乘结果为:851436D2D0BCA6FFCA0A1EC9B3A93DCD37976B3250C5C3E5793E6C6F54A73333;
步骤315:主处理器通知协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算;
步骤316:协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算得到第六模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第三临时数据88BD75E5E2D0362FEA988CA8D223B0F792C89328E99B1CC93734D8B4EA8AF25和第二模乘结果59889AC4124FE203775275F4D6DC88B46B060C40E16395F1F6DF04C3137F6372进行模乘运算得到第六模乘结果为5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D;
步骤317:主处理器通知协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算;
步骤318:协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算得到第七模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第五模乘结果851436D2D0BCA6FFCA0A1EC9B3A93DCD37976B3250C5C3E5793E6C6F54A73333和第六模乘结果5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D进行模乘运算得到的第七模乘结果为5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D;
步骤319:主处理器通知协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的待转换点的第四数据进行模乘运算;
步骤320:协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的待转换点的第四数据进行模乘运算得到第八模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第七模乘结果5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D和第四数据265CAD1045DF2F24BA009E0D1186C4CEAE3AB38BEA5F40E90ED4396187D1423E进行模乘运算得到的第八模乘结果为5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D;
步骤321:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算;
步骤322:协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第一数据454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245和第三预设值B0A00E4A271BEEC478E42FAD0618432FA7D7FB3D99004D2B0BDFC14F8024832B进行模乘运算得到的第九模乘结果D92F6BF0136D2BFD9284E5E291F2CED34392C2CD004E287B1D15C62C2422330C;
步骤323:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算;
步骤324:协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算得到第十模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第二数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D和第三预设值B0A00E4A271BEEC478E42FAD0618432FA7D7FB3D99004D2B0BDFC14F8024832B进行模乘运算得到的第十模乘结果为348F550A01E05BDED52FFFE4A9D1DDDA829E9B240AA53FF4EA18740F57E32124;
步骤325:主处理器通知协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算;
步骤326:协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第五模乘结果5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D和第四预设值EA405D80AAFDC899BE72415A17162F9D40D801FE917BC216A2FCAFCF05896C78进行模乘运算得到的第十一模乘结果为E95AE96EF6C2F647CDB607D9F348BD6FB0C04D3D8318C1C285AA54261F3C006D;
步骤327:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算;
步骤328:协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算得到第十二模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对待转换点的第四数据265CAD1045DF2F24BA009E0D1186C4CEAE3AB38BEA5F40E90ED4396187D1423E和第八模乘结果5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D进行模乘运算得到的第十二模乘结果为427D0C87B734DD1D91D896566067C89898D0C831DE082A20FA37078BF21FF923;
步骤329:主处理器判断第十二模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤330,否则执行步骤331;
例如,本实施例中,设定值为1,第十二模乘结果427D0C87B734DD1D91D896566067C89898D0C831DE082A20FA37078BF21FF923的第一字节最低位为0则执行步骤331;
步骤330:主处理器将第九模乘结果作为第一中间数据,将第十模乘结果作为第二中间数据,将第十一模乘结果作为第三中间数据,并将第一中间数据、第二中间数据和第三中间数据分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤332;
步骤331:主处理器将待转换点的第一数据作为第一中间数据,将待转换点的第二数据作为第二中间数据,将第六模乘结果作为第三中间数据,并将第一中间数据、第二中间数据和第三中间数据分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤332;
例如,该步骤中的第一中间数据为454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245,第二中间数据为48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D,第三中间数据为5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D;
步骤332:主处理器通知协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算;
步骤333:协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算得到第十三模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第一中间数据454368370ED595AB7D06B0E4866608F4CD2BAF6470F281AEF618EB26EF7D0245和第八模乘结果5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D进行模乘运算得到的第十三模乘结果为0B5CEB49F6240DE590CFB918AE80B64CD09F7D5742B36EEDA0702FA36421AC4A;
步骤334:主处理器判断第十三模乘结果中第一字节数据的最低位是否为设定值,是则通知协处理器以第二预设值为模,对固定值和第四寄存器中的第二中间数据进行模减运算并用模减结果更新第二寄存器中的第二中间数据,执行步骤335,否则执行步骤336;
例如,本实施例中,设定值为1第十三模乘结果0B5CEB49F6240DE590CFB918AE80B64CD09F7D5742B36EEDA0702FA36421AC4A中第一字节数据的最低位为1则执行步骤335;
步骤335:协处理器以第二预设值为模,对固定值和第四寄存器中的第二中间数据进行模减运算并用模减结果更新第二寄存器中的第二中间数据,并将更新后的第二寄存器中的第二中间数据返回给主处理器,执行步骤336;
例如,本实施例中的固定值为0;该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对固定值00和第二中间数据48C442C9BD152A3DBE4812A4DDEC6ABA0F37B140F75A1379C55E3D7A4B3C343D进行模减运算得到的模减结果为A53BBD3642EAD5C241B7ED5B22139545F0C84EBF08A5EC863AA1C285B4C3CB42,该步骤后的第二中间数据为A53BBD3642EAD5C241B7ED5B22139545F0C84EBF08A5EC863AA1C285B4C3CB42;
步骤336:主处理器通知协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算;
步骤337:协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算得到第一模减结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对待转换点的第三数据1012FBAAF8090AC909E8CC736BA4D158C0FC6BAB8A746853C8F6DCB3352F830E和第二中间数据A53BBD3642EAD5C241B7ED5B22139545F0C84EBF08A5EC863AA1C285B4C3CB42进行模减运算得到的第一模减结果为58D63D74B61F3406C830DF1749913C13D0331DEC81CF7BCC8D551A2E816BB74B;
步骤338:主处理器通知协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算;
步骤339:协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算得到第十四模乘结果并返回给主处理器;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对第三中间数据5DFA9F2AE54D16E7BE559B64830D610A1283D9192C0999280B59C15537C4BF5D和第一模减结果58D63D74B61F3406C830DF1749913C13D0331DEC81CF7BCC8D551A2E816BB74B进行模乘运算得到的第十四模乘结果为13C4BCFEC06C5B95D5CF2F329444B23E47266CC30005CA12A6C3FB72F889DD14;
步骤340:主处理器判断第十四模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤341,否则执行步骤343;
例如,本实施例中设定值为1,该步骤中第十四模乘结果为13C4BCFEC06C5B95D5CF2F329444B23E47266CC30005CA12A6C3FB72F889DD14中第一字节数据的最低位为1,执行步骤341;
步骤341:主处理器通知协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算;
步骤342:协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算,并用运算结果更新第十四模乘结果,并将更新后的第十四签名结果返回给主处理器,执行步骤343;
例如,该步骤中协处理器以第二预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F为模,对固定值00和第十四模乘结果13C4BCFEC06C5B95D5CF2F329444B23E47266CC30005CA12A6C3FB72F889DD14进行模减运算得到的运算结果为DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B,该步骤之后的第十四模乘结果为DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B;
步骤343:主处理器将第十四模乘结果作为签名公钥;
例如,本实施例中国的签名公钥为DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B;
步骤206:主处理器将签名公钥、待签名数据、生成的随机数进行哈希运算得到第二哈希值;
可选的,在本实施例中,步骤206之前还包括:主处理器生成随机数;
例如,该步骤中主处理器将签名公钥DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B、待签名数据96E51B0BB04BAB44424050C5985E7C36556E515D52B6AA607995653F008C2643、生成的随机数355FC60FF8A59C0F1CCF5952457F1FC37278BD97679C9CA09A0FDC30F58D1BB0进行哈希运算得到的第二哈希值为4557275B28C8B9611D72C692C90D9989BF89B1DE20DB3A9D948F98599EA238BA;
步骤207:主处理器对第二哈希值与第一预设值进行求模运算得到第二中间值;
例如,该步骤中主处理器对第二哈希值4557275B28C8B9611D72C692C90D9989BF89B1DE20DB3A9D948F98599EA238BA与第一预设值EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F进行求模运算得到的第二中间值为163C975C0686EF98E7B42292385104A4BE89B1DE20DB3A9D948F98599EA2380A;
步骤208:主处理器根据第二中间值与固定点使用点乘模块生成第二中间点;
例如,固定点包括为第一数值1AD5258F602D56C9B2A7259560C72C695CDCD6FD31E2A4C0FE536ECDD3366921、第二数值5866666666666666666666666666666666666666666666666666666666666666、第三数值0100000000000000000000000000000000000000000000000000000000000000、第四数值A3DDB7A5B38ADE6DF5525177809FF0207DE3AB648E4EEA6665768BD70F5F8767;
该步骤中主处理器根据第二中间值163C975C0686EF98E7B42292385104A4BE89B1DE20DB3A9D948F98599EA2380A与固定点使用点乘模块进行运算得到的第二中间点包括:第一数据B298D0A9E0970F03EC7BDF0296F651CFD5311353A7374EDD3C64F656D2EDBA7C、第二数据992BF82ED49CF9FC2A4C8B39FC5C2FCBC2CECF162446DDFA4EEE1B6027EE0D5E、第三数据345AB00C9A77E8B8BD1ED9F7C89EF1EA22E04A5289ED484251EE7827233FAA62、第四数据A2A610EA784E169C5B9B1BB85B137C25A5DDAFC4A2445D343EA9F19BA8BB8D64;
步骤209:主处理器对第二中间点进行点转换处理得到第三中间值;
具体的,本实施例中的步骤209的实现过程与步骤205一致,在此不再赘述;
例如,该步骤中得到的第三中间值为3A5205A3BED1E4D4C1015C88C35F15850DE0FDBC70D14DDF9F6A2F4348678C4E;
步骤210:主处理器将签名公钥、待签名数据、第三中间值进行哈希运算得到第三哈希值;
例如,该步骤中主处理器将签名公钥DA3B43013F93A46A2A30D0CD6BBB4DC1B8D9933CFFFA35ED593C048D0776226B、待签名数据96E51B0BB04BAB44424050C5985E7C36556E515D52B6AA607995653F008C2643、第三中间值3A5205A3BED1E4D4C1015C88C35F15850DE0FDBC70D14DDF9F6A2F4348678C4E进行哈希运算得到的第三哈希值为7314CD547E8B40A782F0AEF6AD457626612D017469D34B1587D5FE3C43E6D64D0A6456E3AB50931307104E8C20406829473CF73A57AB6F81609A7192BBD3841E;
步骤211:主处理器将第三哈希值与第一预设值进行模运算得到第四中间值并传输到协处理器的第六寄存器中,并通知协处理器以第一预设值为模,对第三拆分数据与第六寄存器中的第四中间值进行模乘运算;
例如,该步骤中主处理器将第三哈希值7314CD547E8B40A782F0AEF6AD457626612D017469D34B1587D5FE3C43E6D64D0A6456E3AB50931307104E8C20406829473CF73A57AB6F81609A7192BBD3841E与第一预设值EDD3F55C1A631258D69CF7A2DEF9DE1400000000000000000000000000000010进行模运算得到的第四中间值为55EE83AA11CFD45403E6C04FA891911AAD34552E93D617EE4C4F1CEA962D1F0C;
步骤212:协处理器以第一预设值为模,对第三拆分数据与第六寄存器中的第四中间值进行模乘运算得到第五中间值并返回给主处理器;
例如,该步骤中协处理器以第一预设值EDD3F55C1A631258D69CF7A2DEF9DE1400000000000000000000000000000010为模对第三拆分数据19EF0AA81534C1A3C6A7BC2D63D87A691C09C7733E5179F82389D99FE046890F与第四中间值55EE83AA11CFD45403E6C04FA891911AAD34552E93D617EE4C4F1CEA962D1F0C进行模乘运算得到的第五中间值为176A5165A6872BDD044D3AAA94A579B4360D1CB9FEF88CFCDFF89AC123D6AB09;
步骤213:主处理器通知协处理器以第一预设值为模,对第五中间值与第二中间值进行模加运算;
步骤214:协处理器以第一预设值为模对第五中间值与第二中间值进行模加运算得到第六中间值返回给主处理器;
例如,该步骤中协处理器以第一预设值EDD3F55C1A631258D69CF7A2DEF9DE1400000000000000000000000000000010为模对第五中间值176A5165A6872BDD044D3AAA94A579B4360D1CB9FEF88CFCDFF89AC123D6AB09与第二中间值163C975C0686EF98E7B42292385104A4BE89B1DE20DB3A9D948F98599EA2380A进行模加运算得到的第六中间值为40D2F26492AA081E16656599EEFC9E43F596CD971FD4C7997488331BC278E403;
步骤215:主处理器对第六中间值进行转换处理得到第七中间值,将第三中间值与第七中间值进行拼接并作为签名结果返回给上位机。
在本实施例中,主处理器对第六中间值进行转换处理得到第七中间值,具体为:主处理器将第六中间值的最末字节最高位设置为设定值得到第七中间值;
例如,该步骤中,设定值为1,主处理器对第六中间值40D2F26492AA081E16656599EEFC9E43F596CD971FD4C7997488331BC278E403进行转换处理得到的第七中间值为40D2F26492AA081E16656599EEFC9E43F596CD971FD4C7997488331BC278E483,将第三中间值3A5205A3BED1E4D4C1015C88C35F15850DE0FDBC70D14DDF9F6A2F4348678C4E与第七中间值40D2F26492AA081E16656599EEFC9E43F596CD971FD4C7997488331BC278E483进行拼接得到的签名结果为3A5205A3BED1E4D4C1015C88C35F15850DE0FDBC70D14DDF9F6A2F4348678C4E40D2F26492AA081E16656599EEFC9E43F596CD971FD4C7997488331BC278E483。
本发明技术方案适用非素数阶群的椭圆曲线,该方案通过协处理器对大数据进行点转换处理,不仅提高了运算速度,为主处理器的工作效率提供保障,而且将不固定点变成唯一固定点,使得公钥和私钥一一对应、每对公私钥都各不相同,保证了签名过程的安全性,使得用户进行身份认证和网络数据传输过程更加安全可靠。
实施例三
本发明实施例三提供一种在安全芯片内实现签名的装置,包括:
接收获取模块,用于接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
第一运算模块,用于根据签名私钥和固定点使用点乘模块进行运算得到第一中间点;
具体的,在本实施例中,第一运算模块包括:
哈希拆分子模块,用于对签名私钥进行哈希运算得到第一哈希值,并将第一哈希值拆分成长度相等的两部分,分别记作第一拆分数据和第二拆分数据;
第一转化子模块,用于对第一拆分数据进行转化处理得到第三拆分数据;
进一步地,本实施例中的第一转化子模块包括:
第一运算替换单元,用于对第一拆分数据的第一字节数据与第一常数进行与运算并用与运算结果替换第一拆分数据的第一字节数据;
第二运算替换单元,用于对第一拆分数据的最末字节数据与第二常数进行与运算,并用与运算结果替换第一拆分数据的最末字节数据;主处理器将第一拆分数据从高位端到低位端记为第一字节到最末字节;
第一设置单元,用于将第一拆分数据的最末字节的次高位设为设定值;
第一设置保存单元,用于设置第一临时存储器的初值为0,将第一拆分数据的最末字节数据作为当前字节数据并保存到原始存储区中;
第一运算保存单元,用于对当前字节数据与第三常数进行与运算并将与运算结果保存到第二临时存储器;
右移替换单元,用于将原始存储区中的字节数据右移3位并用右移结果替换原始存储区中的字节数据;
第三运算替换单元,用于用原始存储区中的字节数据加上第一临时存储器中的数据的结果替换原始存储区中的字节数据,用原始存储区中的字节数据替换第一拆分数据中的当前字节数据;
左移替换单元,用于将第二临时存储器的数据左移5位并用左移结果替换第一临时存储器中的数据;
判断作为单元,用于判断第一拆分数据的所有字节数据是否处理完成,是则将第一拆分数据作为第三拆分数据,否则将当前字节数据前面的相邻字节数据作为当前字节数据,触发第一运算保存单元;
第一运算子模块,用于根据第三拆分数据和固定点使用点乘模块进行运算得到第一中间点;
第一转换处理模块,用于对第一中间点进行点转换处理得到签名公钥;
第二运算模块,用于根据签名公钥、待签名数据、生成的随机数、固定点使用点乘模块生成第二中间点;
具体的,在本实施例中,第二运算模块包括:
第一哈希子模块,用于将签名公钥、待签名数据、生成的随机数进行哈希运算得到第二哈希值;
第二运算子模块,用于对第二哈希值与第一预设值进行求模运算得到第二中间值;
第三运算子模块,用于根据第二中间值与固定点使用点乘模块进行运算得到第二中间点;
可选的,在本实施例中,该装置还包括:随机数生成模块,用于生成随机数;
第二转换处理模块,用于对第二中间点进行点转换处理得到第三中间值;
生成返回模块,用于根据签名公钥、待签名数据、第三中间值生成签名结果并返回给上位机;
具体的,在本实施例中,生成返回模块包括:第一哈希子模块、第一运算传输子模块、第一利用模加子模块和转换拼接子模块;
第一哈希子模块,用于将签名公钥、待签名数据、第三中间值进行哈希运算得到第三哈希值;
第一运算传输子模块,用于将第三哈希值与第一预设值进行模运算得到第四中间值并传输到协处理器的第六寄存器中,并利用协处理器以第一预设值为模对第三拆分数据与第四中间值进行模乘运算得到第五中间值;
具体的,在本实施例中,协处理器以第一预设值为模对第三拆分数据与第四中间值进行模乘运算得到第五中间值并返回给主处理器;
第一利用模加子模块,用于利用协处理器以第一预设值为模对第五中间值与第二中间值进行模加运算得到第六中间值;
具体的,在本实施例中,协处理器以第一预设值为模对第五中间值与第二中间值进行模加运算得到第六中间值返回给主处理器;
转换拼接子模块,用于对第六中间值进行转换处理得到第七中间值,将第三中间值与第七中间值进行拼接并作为签名结果返回给上位机;
进一步地,转换拼接子模块具体用于将第六中间值的最末字节的最高位设为设定值得到第七中间值,将第三中间值与第七中间值进行拼接并作为签名结果返回给上位机。
作为利用模块,用于在点转换处理过程中将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用协处理器对第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
进一步地,作为利用模块包括:第一传输利用子模块、第一利用子模块、第二利用子模块、第三利用子模块、第四利用子模块、第五利用子模块、第一运算传输利用子模块和第六利用子模块;
第一传输利用子模块,用于将中间点作为待转换点并传输到协处理器的第一寄存器中,利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据;
在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据并返回给主处理器;
第一利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据并返回给主处理器;
第二利用子模块,用于利用协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果并返回给主处理器;
第三利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果并返回给主处理器;
第四利用子模块,用于利用协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算得到第三模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二模乘结果和第二模乘结果进行模乘运算得到第三模乘结果并返回给主处理器;
第五利用子模块,用于利用协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算得到第四模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第三模乘结果和第一模乘结果进行模乘运算得到第四模乘结果并返回给主处理器;
第一运算传输利用子模块,用于以第二预设值为模,对第四模乘结果进行反平方根运算得到第三临时数据,并传输到协处理器的第二寄存器中,利用协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算得到第五模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第一模乘结果进行模乘运算得到第五模乘结果并返回给主处理器;
第六利用子模块,用于利用协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算得到第六模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第二寄存器中的第三临时数据和第二模乘结果进行模乘运算得到第六模乘结果并返回给主处理器;
第一利用模块,用于在点转换处理过程中利用协处理器对第一寄存器中的待转换点、第五模乘结果、第六模乘结果和第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
具体的,本实施例中的第一利用模块包括:第七利用子模块、第八利用子模块、第九利用子模块、第十利用子模块、第十一利用子模块、第十二利用子模块;
第七利用子模块,用于利用协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算得到第七模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五模乘结果和第六模乘结果进行模乘运算得到第七模乘结果并返回给主处理器;
第八利用子模块,用于利用协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的待转换点的第四数据进行模乘运算得到第八模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第七模乘结果和第一寄存器中的待转换点的第四数据进行模乘运算得到第八模乘结果并返回给主处理器;
第九利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果并返回给主处理器;
第十利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算得到第十模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第二数据和第三预设值进行模乘运算得到第十模乘结果并返回给主处理器;
第十一利用子模块,用于利用协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果并返回给主处理器;
第十二利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算得到第十二模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第四数据和第八模乘结果进行模乘运算得到第十二模乘结果并返回给主处理器;
第一判断模块,用于在点转换处理过程中判断第十二模乘结果中第一字节数据的最低位是否为设定值,是则触发第一作为传输模块,否则触发第二作为传输模块;
第一作为传输模块,用于将第九模乘结果、第十模乘结果、第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
第二作为传输模块,用于将第一寄存器中的待转换点的第一数据、第二数据、第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
利用判断模块,用于在点转换处理过程中利用协处理器对第二预设值和第三寄存器中的第一中间数据进行计算得到第十三模乘结果,判断第十三模乘结果中第一字节数据的最低位是否为设定值,是则触发第二利用模块,触发第三利用模块;
具体的,本实施例中的利用判断模块包括:第十三利用子模块和第一判断子模块;
第十三利用子模块,用于利用协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算得到第十三模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第三寄存器中的第一中间数据和第八模乘结果进行模乘运算得到第十三模乘结果并返回给主处理器;
第一判断子模块,用于判断第十三模乘结果中第一字节数据的最低位是否为设定值,是则触发第二利用模块,触发第三利用模块;
具体的,本实施例中的设定值为1;
第二利用模块,用于利用协处理器对第二预设值、固定值和第四寄存器中的第二中间数据进行运算并用运算结果更新第四寄存器中的第二中间数据,触发第三利用模块;
在本实施例中,第二利用模块具体用于利用协处理器以第二预设值为模,对固定值和第四寄存器中的第二中间数据进行模减运算并用运算结果更新第四寄存器中的第二中间数据,触发第三利用模块;
具体的,在本实施例中,协处理器以第二预设值为模,对固定值和第四寄存器中的第二中间数据进行模减运算并用运算结果更新第四寄存器中的第二中间数据,将更新后的第四寄存器中的第二中间数据返回给主处理器,触发第三利用模块;
第三利用模块,用于利用协处理器对第二预设值、第一寄存器中的待转换点、第四寄存器中的第二中间数据和第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
具体的,本实施例中的第三利用模块包括:第十四利用子模块和第十五利用子模块;
第十四利用子模块,用于利用协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算得到第一模减结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第一寄存器中的待转换点的第三数据和第四寄存器中的第二中间数据进行模减运算得到第一模减结果并返回给主处理器;
第十五利用子模块,用于利用协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算得到第十四模乘结果;
具体的,在本实施例中,协处理器以第二预设值为模,对第五寄存器中的第三中间数据和第一模减结果进行模乘运算得到第十四模乘结果并返回给主处理器;
第一判断模块,用于在点转换处理过程中判断第十四模乘结果中第一字节数据的最低位是否为设定值,是则触发利用作为模块,否则触发第一作为模块;
利用作为模块,用于利用协处理器对第二预设值、固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
具体的,本实施例中的第四利用模块具体用于利用协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算并将运算结果作为点转换处理的结果数据;
具体的,在本实施例中,协处理器以第二预设值为模,对固定值和第十四模乘结果进行模减运算,用运算结果更新第十四模乘结果,并将更新后的第十四模乘结果返回给主处理器,主处理器将接收到的第十四模乘结果作为点转换处理的结果数据;
第一作为模块,用于将第十四模乘结果作为点转换处理的结果数据。
可选的,本申请的实施例还提供了一种签名设备,签名设备包括至少一个处理器、存储器及存储在该存储器上并可被至少一个处理器执行的指令,至少一个处理器执行该指令以实现上述实施例中的在安全芯片内实现签名的方法。该签名设备是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定;该芯片与存储器耦合,用于执行存储器中存储的计算机程序,以执行上述实施例中公开的在安全芯片内实现签名的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机程序。在签名设备上加载和执行计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机程序可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个基站、签名设备、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个基站、签名设备、服务器或数据中心进行传输。所述计算机可读存储介质可以是签名设备能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、 或者半导体介质(例如固态硬盘(solid state disk,SSD))等。本申请实施例中,签名设备可以包括前面所述的装置。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (17)
1.一种在安全芯片内实现签名的方法,其特征在于,包括:
步骤S1:主处理器接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
步骤S2:所述主处理器根据所述签名私钥和固定点使用点乘模块生成第一中间点;
步骤S3:所述主处理器对所述第一中间点进行点转换处理得到签名公钥;
步骤S4:所述主处理器根据所述签名公钥、所述待签名数据、生成的随机数、所述固定点使用点乘模块生成第二中间点;
步骤S5:所述主处理器对所述第二中间点进行点转换处理得到第三中间值;
步骤S6:所述主处理器根据所述签名公钥、所述待签名数据、所述第三中间值生成签名结果并返回给所述上位机;
所述进行点转换处理的实现过程包括以下步骤:
步骤A1:所述主处理器将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用所述协处理器对所述第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
步骤A2:所述主处理器利用所述协处理器对所述第一寄存器中的待转换点、所述第五模乘结果、所述第六模乘结果和所述第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
步骤A3:所述主处理器判断所述第十二模乘结果中第一字节数据的最低位是否为设定值,是则执行步骤A4,否则执行步骤A5;
步骤A4:所述主处理器将所述第九模乘结果、所述第十模乘结果、所述第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A5:所述主处理器将待转换点的第一数据、第二数据、所述第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,执行步骤A6;
步骤A6:所述主处理器利用所述协处理器对所述第二预设值和所述第三寄存器中的第一中间数据进行计算得到第十三模乘结果,所述主处理器判断所述第十三模乘结果中第一字节数据的最低位是否为所述设定值,是则执行步骤A7,否则执行步骤A8;
步骤A7:所述主处理器利用所述协处理器对所述第二预设值、固定值和所述第四寄存器中的第二中间数据进行运算,并用运算结果更新所述第四寄存器中的第二中间数据,执行步骤A8;
步骤A8:所述主处理器利用所述协处理器对所述第二预设值、所述第一寄存器中的待转换点、所述第四寄存器中的第二中间数据和所述第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
步骤A9:所述主处理器判断所述第十四模乘结果中第一字节数据的最低位是否为所述设定值,是则执行步骤A10,否则执行步骤A11;
步骤A10:所述主处理器利用所述协处理器对所述第二预设值、所述固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
步骤A11:所述主处理器将所述第十四模乘结果作为点转换处理的结果数据。
2.如权利要求1所述的方法,其特征在于,所述步骤S2包括:
步骤S21:所述主处理器对所述签名私钥进行哈希运算得到第一哈希值,并将所述第一哈希值拆分成长度相等的两部分,分别记作第一拆分数据和第二拆分数据;
步骤S22:所述主处理器对所述第一拆分数据进行转化处理得到第三拆分数据;
步骤S23:所述主处理器根据所述第三拆分数据和所述固定点使用点乘模块进行运算得到第一中间点。
3.如权利要求2所述的方法,其特征在于,所述步骤S22包括:
步骤S22-1:所述主处理器对所述第一拆分数据的第一字节数据与第一常数进行与运算并用与运算结果替换所述第一拆分数据的第一字节数据;
步骤S22-2:所述主处理器对所述第一拆分数据的最末字节数据与第二常数进行与运算,并用与运算结果替换所述第一拆分数据的最末字节数据;
步骤S22-3:所述主处理器将所述第一拆分数据的最末字节的次高位设为设定值;
步骤S22-4:所述主处理器设置第一临时存储器的初值为0,将所述第一拆分数据的最末字节数据作为当前字节数据并保存到原始存储区中;
步骤S22-5:所述主处理器对当前字节数据与第三常数进行与运算并将与运算结果保存到第二临时存储器;
步骤S22-6:所述主处理器将所述原始存储区中的字节数据右移3位并用右移结果替换所述原始存储区中的字节数据;
步骤S22-7:所述主处理器用所述原始存储区中的字节数据加上所述第一临时存储器中的数据的结果替换所述原始存储区中的字节数据,用所述原始存储区中的字节数据替换所述第一拆分数据中的当前字节数据;
步骤S22-8:所述主处理器将所述第二临时存储器的数据左移5位并用左移结果替换所述第一临时存储器中的数据;
步骤S22-9:所述主处理器判断所述第一拆分数据的所有字节数据是否处理完成,是则将第一拆分数据作为第三拆分数据,否则将当前字节数据前面的相邻字节数据作为当前字节数据,返回步骤S22-5。
4.如权利要求3所述的方法,其特征在于,所述步骤S4包括:
步骤S41:所述主处理器将所述签名公钥、所述待签名数据、生成的随机数进行哈希运算得到第二哈希值;
步骤S42:所述主处理器对所述第二哈希值与第一预设值进行求模运算得到第二中间值;
步骤S43:所述主处理器根据所述第二中间值与所述固定点使用点乘模块进行运算得到第二中间点。
5.如权利要求1所述的方法,其特征在于,所述步骤A1包括:
步骤A1-1:所述主处理器将所述中间点作为待转换点并传输到协处理器的第一寄存器中,利用协处理器以第二预设值为模,对所述第一寄存器中的待转换点的第三数据和第二数据进行模加运算得到第一临时数据;
步骤A1-2:所述主处理器利用协处理器以所述第二预设值为模,对所述第一寄存器中的待转换点的第三数据和第二数据进行模减运算得到第二临时数据;
步骤A1-3:所述主处理器利用所述协处理器以所述第二预设值为模,对第一临时数据和第二临时数据进行模乘运算得到第一模乘结果;
步骤A1-4:所述主处理器利用所述协处理器以所述第二预设值为模,对第一寄存器中的待转换点的第一数据和第二数据进行模乘运算得到第二模乘结果;
步骤A1-5:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第二模乘结果和所述第二模乘结果进行模乘运算得到第三模乘结果;
步骤A1-6:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第三模乘结果和所述第一模乘结果进行模乘运算得到第四模乘结果;
步骤A1-7:所述主处理器以所述第二预设值为模,对所述第四模乘结果进行反平方根运算得到第三临时数据并传输到所述协处理器的第二寄存器中,利用所述协处理器以所述第二预设值为模,对所述第二寄存器中的第三临时数据和所述第一模乘结果进行模乘运算得到第五模乘结果;
步骤A1-8:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第二寄存器中的第三临时数据和所述第二模乘结果进行模乘运算得到第六模乘结果。
6.如权利要求1所述的方法,其特征在于,所述步骤A2包括:
步骤A2-1:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第五模乘结果和所述第六模乘结果进行模乘运算得到第七模乘结果;
步骤A2-2:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第七模乘结果和所述第一寄存器中的待转换点的第四数据进行模乘运算得到第八模乘结果;
步骤A2-3:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第一寄存器中的待转换点的第一数据和第三预设值进行模乘运算得到第九模乘结果;
步骤A2-4:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第一寄存器中的待转换点的第二数据和所述第三预设值进行模乘运算得到第十模乘结果;
步骤A2-5:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第五模乘结果和第四预设值进行模乘运算得到第十一模乘结果;
步骤A2-6:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第一寄存器中的待转换点的第四数据和所述第八模乘结果进行模乘运算得到第十二模乘结果。
7.如权利要求6所述的方法,其特征在于,所述步骤A6包括:
步骤A6-1:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第三寄存器中的第一中间数据和所述第八模乘结果进行模乘运算得到第十三模乘结果;
步骤A6-2:所述主处理器判断所述第十三模乘结果中第一字节数据的最低位是否为所述设定值,是则执行步骤A7,否则执行步骤A8。
8.如权利要求1所述的方法,其特征在于,所述步骤A7包括:
所述主处理器利用所述协处理器以所述第二预设值为模,对固定值和所述第四寄存器中的第二中间数据进行模减运算,并用运算结果更新所述第四寄存器中的第二中间数据。
9.如权利要求1所述的方法,其特征在于,所述步骤A8包括:
步骤A8-1:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第一寄存器中的待转换点的第三数据和所述第四寄存器中的第二中间数据进行模减运算得到第一模减结果;
步骤A8-2:所述主处理器利用所述协处理器以所述第二预设值为模,对所述第五寄存器中的第三中间数据和所述第一模减结果进行模乘运算得到第十四模乘结果。
10.如权利要求1所述的方法,其特征在于,所述步骤A10包括:
所述主处理器利用所述协处理器以所述第二预设值为模,对所述固定值和所述第十四模乘结果进行模减运算,并将运算结果作为点转换处理的结果数据。
11.如权利要求1所述的方法,其特征在于,所述步骤S4之前还包括:
所述主处理器生成随机数。
12.如权利要求4所述的方法,其特征在于,所述步骤S6包括:
步骤S61:所述主处理器将所述签名公钥、所述待签名数据、所述第三中间值进行哈希运算得到第三哈希值;
步骤S62:所述主处理器将所述第三哈希值与第一预设值进行模运算得到第四中间值并传输到所述协处理器的第六寄存器中,利用所述协处理器以所述第一预设值为模,对所述第三拆分数据与所述第六寄存器中的第四中间值进行模乘运算得到第五中间值;
步骤S63:所述主处理器利用所述协处理器以所述第一预设值为模,对所述第五中间值与所述第二中间值进行模加运算得到第六中间值;
步骤S64:所述主处理器对所述第六中间值进行转换处理得到第七中间值,将所述第三中间值与第七中间值进行拼接并作为签名结果返回给上位机。
13.如权利要求12所述的方法,其特征在于,所述主处理器对所述第六中间值进行转换处理得到第七中间值,具体为:所述主处理器将所述第六中间值的最末字节的最高位设置为设定值得到第七中间值。
14.一种在安全芯片内实现签名的装置,其特征在于,包括:
接收获取模块,用于接收上位机发送的待签名数据,并从存储器中获取预置的签名私钥;
第一点乘运算模块,用于根据所述签名私钥和固定点使用点乘模块进行运算得到第一中间点;
第一转换处理模块,用于对所述第一中间点进行点转换处理得到签名公钥;
第二点乘运算模块,用于根据所述签名公钥、所述待签名数据、生成的随机数、所述固定点使用点乘模块生成第二中间点;
第二转换处理模块,用于对所述第二中间点进行点转换处理得到第三中间值;
生成返回模块,用于根据所述签名公钥、所述待签名数据、所述第三中间值生成签名结果并返回给所述上位机;
作为利用模块,用于在点转换处理过程中将中间点作为待转换点并传输到协处理器的第一寄存器中,并利用所述协处理器对所述第一寄存器中的待转换点和第二预设值进行计算得到第五模乘结果和第六模乘结果;
第一利用模块,用于在点转换处理过程中利用所述协处理器对所述第一寄存器中的待转换点、所述第五模乘结果、所述第六模乘结果和所述第二预设值进行计算得到第九模乘结果、第十模乘结果、第十一模乘结果和第十二模乘结果;
第一判断模块,用于在点转换处理过程中判断所述第十二模乘结果中第一字节数据的最低位是否为设定值,是则触发第一作为传输模块,否则触发第二作为传输模块;
所述第一作为传输模块,用于将所述第九模乘结果、所述第十模乘结果、所述第十一模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
所述第二作为传输模块,用于将所述第一寄存器中的待转换点的第一数据、第二数据、所述第六模乘结果分别作为第一中间数据、第二中间数据、第三中间数据,并分别传输到协处理器的第三寄存器、第四寄存器和第五寄存器中,触发利用判断模块;
所述利用判断模块,用于在点转换处理过程中利用所述协处理器对所述第二预设值和所述第三寄存器中的第一中间数据进行计算得到第十三模乘结果,判断所述第十三模乘结果中第一字节数据的最低位是否为所述设定值,是则触发第二利用模块,触发第三利用模块;
所述第二利用模块,用于利用所述协处理器对所述第二预设值、固定值和所述第四寄存器中的第二中间数据进行运算,并用运算结果更新所述第四寄存器中的第二中间数据,触发第三利用模块;
所述第三利用模块,用于利用所述协处理器对所述第二预设值、所述第一寄存器中的待转换点、所述第四寄存器中的第二中间数据和所述第五寄存器中的第三中间数据进行计算得到第十四模乘结果;
第一判断模块,用于在点转换处理过程中判断所述第十四模乘结果中第一字节数据的最低位是否为所述设定值,是则触发利用作为模块,否则触发第一作为模块;
所述利用作为模块,用于利用所述协处理器对所述第二预设值、固定值和第十四模乘结果进行运算并将运算结果作为点转换处理的结果数据;
所述第一作为模块,用于将所述第十四模乘结果作为点转换处理的结果数据。
15.一种签名设备,其特征在于,所述签名设备包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,所述至少一个处理器执行所述指令以实现权利要求1至13任一项所述的在安全芯片内实现签名的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当所述计算机程序在签名设备上运行时,使得所述签名设备执行如权利要求1至13任一项所述的在安全芯片内实现签名的方法。
17.一种芯片系统,其特征在于,所述芯片系统包括芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行权利要求1-13任一项所述的在安全芯片内实现签名的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224144.1A CN113676335B (zh) | 2021-10-21 | 2021-10-21 | 一种在安全芯片内实现签名的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224144.1A CN113676335B (zh) | 2021-10-21 | 2021-10-21 | 一种在安全芯片内实现签名的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113676335A CN113676335A (zh) | 2021-11-19 |
CN113676335B true CN113676335B (zh) | 2021-12-28 |
Family
ID=78550708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111224144.1A Active CN113676335B (zh) | 2021-10-21 | 2021-10-21 | 一种在安全芯片内实现签名的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113676335B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844650B (zh) * | 2022-05-24 | 2023-12-01 | 北京宏思电子技术有限责任公司 | 一种设备签名方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104753684A (zh) * | 2015-04-15 | 2015-07-01 | 飞天诚信科技股份有限公司 | 一种实现数字签名和验签的方法 |
CN111162907A (zh) * | 2019-12-28 | 2020-05-15 | 飞天诚信科技股份有限公司 | 一种协商密钥的生成方法及智能卡设备 |
CN112769553A (zh) * | 2020-12-30 | 2021-05-07 | 北京宏思电子技术有限责任公司 | 嵌入式系统中加快sm9双线性对运算的实现方法及装置 |
CN113221193A (zh) * | 2021-06-02 | 2021-08-06 | 上海交通大学 | 基于gpu的sm2数字签名与验签快速实现方法及系统 |
CN113343259A (zh) * | 2021-06-17 | 2021-09-03 | 北京宏思电子技术有限责任公司 | 基于sm2的联合签名实现方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2542556C (en) * | 2005-06-03 | 2014-09-16 | Tata Consultancy Services Limited | An authentication system executing an elliptic curve digital signature cryptographic process |
US7856101B2 (en) * | 2007-02-07 | 2010-12-21 | King Fahd University Of Petroleum And Minerals | Method for elliptic curve scalar multiplication |
-
2021
- 2021-10-21 CN CN202111224144.1A patent/CN113676335B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104753684A (zh) * | 2015-04-15 | 2015-07-01 | 飞天诚信科技股份有限公司 | 一种实现数字签名和验签的方法 |
CN111162907A (zh) * | 2019-12-28 | 2020-05-15 | 飞天诚信科技股份有限公司 | 一种协商密钥的生成方法及智能卡设备 |
CN112769553A (zh) * | 2020-12-30 | 2021-05-07 | 北京宏思电子技术有限责任公司 | 嵌入式系统中加快sm9双线性对运算的实现方法及装置 |
CN113221193A (zh) * | 2021-06-02 | 2021-08-06 | 上海交通大学 | 基于gpu的sm2数字签名与验签快速实现方法及系统 |
CN113343259A (zh) * | 2021-06-17 | 2021-09-03 | 北京宏思电子技术有限责任公司 | 基于sm2的联合签名实现方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113676335A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8190895B2 (en) | Authenticated key exchange with derived ephemeral keys | |
CN109150499B (zh) | 动态加密数据的方法、装置、计算机设备和存储介质 | |
US8713323B2 (en) | Codeword-enhanced peer-to-peer authentication | |
JP2776491B2 (ja) | タグの決定方法及び装置 | |
CN103490892B (zh) | 数字签名方法和系统、应用服务器和云密码服务器 | |
CN107888381B (zh) | 一种密钥导入的实现方法、装置及系统 | |
US20070033403A1 (en) | Extended authenticated key exchange | |
WO2013180413A1 (ko) | 아이디 기반 암호 시스템을 위한 비밀키 생성 장치 및 그 방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 | |
CN113676335B (zh) | 一种在安全芯片内实现签名的方法及装置 | |
US10917231B2 (en) | Data storage method, apparatus, system and device | |
CN111010277B (zh) | 密钥交换方法、装置和存储介质、计算装置 | |
EP1626524A1 (en) | Method of generating a key for device authentication and apparatus using the method, and device authentication method and device authentication apparatus | |
CN111314050B (zh) | 一种加解密方法及装置 | |
CN114553590A (zh) | 数据传输方法及相关设备 | |
CN109600225B (zh) | 一种密钥交换方法、装置和存储介质 | |
CN111753317A (zh) | 一种等长数字加密的实现方法 | |
CN112364387B (zh) | 一种基于区块链网络的身份认证方法及装置、介质和设备 | |
CN107508819B (zh) | 加密方法和加密装置 | |
CN114257562A (zh) | 即时通讯方法、装置、电子设备和计算机可读存储介质 | |
CN107147493B (zh) | 一种有限资源下的数字签名方法、装置及系统 | |
CN111953497B (zh) | 一种基于hmac算法的消息认证码生成装置及方法 | |
CN111798236B (zh) | 交易数据加、解密方法、装置及设备 | |
US10979233B2 (en) | Monitoring time certificate generation requests | |
CN111931204A (zh) | 用于分布式系统的加密去重存储方法、终端设备 | |
CN115694813B (zh) | 一种多芯片密钥管理系统 |
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 |