CN108039947B - 一种利用协处理器抗攻击的sm2签名方法 - Google Patents
一种利用协处理器抗攻击的sm2签名方法 Download PDFInfo
- Publication number
- CN108039947B CN108039947B CN201711265584.5A CN201711265584A CN108039947B CN 108039947 B CN108039947 B CN 108039947B CN 201711265584 A CN201711265584 A CN 201711265584A CN 108039947 B CN108039947 B CN 108039947B
- Authority
- CN
- China
- Prior art keywords
- result
- generated
- coprocessor
- control
- 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/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
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- 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/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种利用协处理器抗攻击的SM2签名方法,涉及信息安全领域。所述方法包括:CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据第一随机结果和签名哈希值生成第三结果,由根据随机数生成器生成的第四随机数、用户签名私钥和第三结果生成的第十结果与根据随机数生成器生成的第一随机数和第四随机数生成第八结果生成第十一结果;由第十一结果与根据第二常数、用户签名私钥和随机数生成器生成的第四随机数生成的第七结果生成十二结果,CPU输出以第三结果和第十二结果为坐标的签名值;达到防御SPA、DPA和FA等侧信道攻击的目的。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种利用协处理器抗攻击的SM2签名方法。
背景技术
SM2算法是国家密码管理局发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法。SM2算法数字签名生成过程为:计算e=Hv(M),产生随机数k,计算椭圆曲线点(x1,y1)=[k]G,计算r=(e+x1)modn,计算s=((1+dA)-1·(k-r·dA))modn,输出消息M的签名为(r,s)。SM2算法中最基本的运算是点乘运算,点乘运算由点加运算和点倍运算组成,而执行一个点加运算和一个点倍运算所消耗的时间和能量是不一样的,这就很容易通过SPA、DPA、FA等侧信道攻击将敏感数据泄露出来;此外,当SM2运算涉及到私钥等敏感数据操作时,如果不对私钥等敏感数据进行保护,也很容易遭受DPA等侧信道攻击。
SM2算法中,包含以下运算:点乘运算为计算k个P相加的过程记作kP,这一计算称为点乘或标量乘k是一个整数,P是定义在椭圆曲线上的一个点;点加运算为计算P+Q的过程称,其中P,Q是定义在椭圆曲线上的两个不同的点;点倍运算为计算P+P=2P的过程称,其中P是定义在椭圆曲线上的点;模乘运算为计算a*b mod n的过程称;模加运算为计算(a+b)mod n的过程称;模减运算为计算(a-b)mod n的过程称。
SPA(Simple Power Analysis)攻击:简单能量分析攻击,直接观察数据输入到输出的能量信号获取一些算法相关信息的分析方法;DPA(Differential Power Analysis)攻击:差分能量分析攻击,比SPA攻击更有效,因为它不需要知道算法执行的具体细节,同时又具有一定的屏蔽噪声的功能,综合利用统计方法使它更容易从杂乱无章的能量信号中获得密钥相关的信息;FA(Fault Analysis)攻击:错误分析攻击,密码芯片设备中通过在密码算法中引入错误,导致密码设备产生错误结果,对错误结果进行分析从而得到密钥。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种利用协处理器抗攻击的SM2签名方法。
本发明提供了一种利用协处理器抗攻击的SM2签名方法,包括以下步骤:
步骤S1:CPU根据读取存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果;
步骤S2:所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果;
步骤S3:所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,根据生成的所述第十结果和生成的所述第八结果生成第十一结果;
步骤S4:所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,所述CPU判断生成的所述第十二结果是否为第一预设值,是则输出生成的所述第十二结果和生成的所述第三结果组成的签名值,否则返回步骤S2;
所述方法中,所述步骤S4之前,还包括:所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果。
本发明又提供了一种利用协处理器抗攻击的SM2签名装置,包括:CPU、协处理器、存储器和随机数生成器;
所述CPU包括读取模块、控制模块、生成模块、第一判断模块和输出模块;
所述存储器,用于存储用户基本信息和待签名信息;
所述读取模块,用于读取所述存储器得到所述用户基本信息和所述待签名信息;
所述生成模块,用于根据所述读取模块读取所述存储器所得的所述用户基本信息和所述读取模块读取所述存储器所得的所述待签名信息生成预处理结果;
所述随机数生成器,用于生成第三随机数;
所述控制模块,用于控制所述协处理器进行工作;
所述协处理器,用于在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;
所述协处理器,还用于在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;
所述随机数生成器,还用于生成第一随机数和第四随机数;
所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第一随机数、所述随机数生成器生成的所述第四随机数生成第八结果;
所述存储器,还用于存储用户签名私钥;
所述读取模块,还用于读取所述存储器得到所述用户签名私钥;
所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第四随机数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述协处理器在所述控制模块的控制下生成的所述第三结果生成第十结果;
所述协处理器,还用于在所述控制模块的控制下根据所述协处理器在所述控制模块的控制下生成的所述第十结果和所述协处理器在所述控制模块的控制下生成的所述第八结果生成第十一结果;
所述存储器,还用于存储第二常数;
所述读取模块,还用于读取所述存储器得到所述第二常数;
所述协处理器,还用于在所述控制模块的控制下根据所述读取模块读取所述存储器所得的所述第二常数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述随机数生成器生成的所述第四随机数生成第七结果;
所述协处理器,还用于在所述控制模块的控制下根据在所述控制模块的控制下生成的所述第七结果和在所述控制模块的控制下所述协处理器生成的所述第十一结果生成第十二结果;
所述第一判断模块,用于判断所述协处理器在所述控制模块的控制下生成的所述第十二结果是否为第一预设值;
所述协处理器,还用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果不为第一预设值时,在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;
所述输出模块,用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果为第一预设值时,输出所述协处理器在所述控制模块的控制下生成的所述第三结果和所述协处理器在所述控制模块的控制下生成的所述第十二结果组成的签名值。
本发明与现有技术相比,具有以下优点:本发明针对SM2签名方法中可能存在的侧信道攻击,提出了一种有效的防御SPA、DPA、FA等侧信道攻击的方法,其对涉及到的用户签名私钥等敏感信息使用随机数据进行掩码,提高了SM2签名方法的安全性,达到了防御SPA、DPA、FA等侧信道攻击的目的。
附图说明
图1为本发明实施例二提供的一种利用协处理器抗攻击的SM2签名方法流程图;
图2为本发明实施例三提供的一种利用协处理器抗攻击的SM2签名装置方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种利用协处理器抗攻击的SM2签名方法,包括以下步骤:
步骤S1:CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息生成预处理结果;
进一步地,本实施例中的步骤S1中,CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息生成预处理结果,具体为:CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息进行拼接运算,生成预处理结果。
步骤S2:CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的第一随机结果和生成的预处理结果生成第三结果;
进一步地,本实施例中的步骤S2中,CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,具体为:CPU控制协处理器对椭圆曲线的基点和随机数生成器生成的第三随机数进行点乘运算,生成第一随机结果。
进一步地,本实施例中的步骤S2中,CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果之后,根据生成的第一随机结果和生成的预处理结果生成第三结果之前,还包括:
步骤A1:CPU判断CPU控制协处理器生成的第一随机结果是否与椭圆曲线的基点相等,是则执行CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤A2;
步骤A2:CPU控制协处理器对椭圆曲线的基点进行逆运算生成逆元;
步骤A3:CPU判断CPU控制协处理器生成的第一随机结果和生成的逆元是否相等,是则执行CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行根据生成的第一随机结果和生成的预处理结果生成第三结果。
进一步地,本实施例中的步骤S2之后,步骤S3之前,还包括:CPU判断生成的第三结果是否等于第二预设值,是则执行CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。
进一步地,本实施例中的步骤S2中,根据生成的第一随机结果和生成的预处理结果生成第三结果,具体包括:
步骤B1:CPU控制协处理器对椭圆曲线的基点和生成的第一随机结果进行点加运算,生成第二随机结果;对生成的第一随机结果进行逆运算,生成第三随机结果;
步骤B2:CPU控制协处理器对随机数生成器生成的第二随机数和读取存储器所得的第一常数进行乘法运算,生成第一结果,对生成的第一结果和随机数生成器生成的第一随机数进行加法运算,生成第二结果,根据生成的第二结果对生成的第二随机结果进行更新运算,生成更新后的第二随机结果;
步骤B3:CPU控制协处理器对生成的更新后的第二随机结果和生成的第三随机结果进行点加运算,生成第四随机结果,对生成的第四随机结果的横坐标和生成的预处理结果进行模加运算,生成第三结果。
更进一步地,本实施例中的步骤B2中,根据生成的第二结果对生成的第二随机结果进行更新运算,生成更新后的第二随机结果,具体包括:
步骤C1:CPU控制协处理器对椭圆曲线的基点和生成的第三随机结果进行点加运算,生成第五随机结果;
步骤C2:CPU控制协处理器对生成的第二随机结果进行点倍运算,更新第二随机结果;
步骤C3:CPU判断二进制表示的第二结果的第i比特位上的数据是否为1,是则执行步骤C4,否则执行步骤C5;
步骤C4:CPU控制协处理器对生成的第二随机结果和生成的第五随机结果进行点加运算,更新第二随机结果,执行步骤C6;
步骤C5:CPU控制协处理器对生成的第二随机结果和生成的第三随机结果进行点加运算,更新第二随机结果,执行步骤C6;
步骤C6:CPU控制协处理器对变量i进行减1运算,更新i,CPU判断更新后的i是否大于或者等于0,是则返回步骤C2,否则执行步骤B3。
进一步地,本实施例中的在步骤S2之后,步骤S3之前,还包括:
CPU控制协处理器对随机数生成器生成的第一随机数和生成的第三结果进行加法运算,生成第四结果,CPU判断生成的第四结果与读取存储器所得的第一常数是否相等,是则执行步骤S2中的CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。
步骤S3:CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取存储器所得的用户签名私钥和生成的第三结果生成第十结果,根据生成的第十结果和生成的第八结果生成第十一结果;
进一步地,本实施例中的步骤S3中,CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,具体为:CPU控制协处理器对随机数生成器生成的第一随机数和随机数生成器生成的第四随机数进行模乘运算,生成第八结果。
进一步地,本实施例中的步骤S3中,根据随机数生成器生成的第四随机数、读取存储器所得的用户签名私钥和生成的第三结果生成第十结果,具体为:CPU控制协处理器对随机数生成器生成的第四随机数和读取存储器所得的用户签名私钥进行模乘运算,生成第九结果,对生成的第九结果和生成的第三结果进行模乘运算,生成第十结果。
进一步地,本实施例中的步骤S3中,根据生成的第十结果和生成的第八结果生成第十一结果,具体为:CPU控制协处理器对生成的第十结果和生成的第八结果进行模减运算,生成第十一结果。
步骤S4:CPU控制协处理器根据生成的第七结果和生成的第十一结果生成第十二结果,CPU判断生成的第十二结果是否为第一预设值,是则输出生成的第十二结果和生成的第三结果组成的签名值,否则返回步骤S2;
进一步地,本实施例中的步骤S4中,CPU控制协处理器根据生成的第七结果和生成的第十一结果生成第十二结果,具体为:CPU控制协处理器对生成的第七结果和生成的第十一结果进行模乘运算,生成第十二结果。
进一步地,本实施例中的步骤S4中,输出生成的第十二结果和生成的第三结果组成的签名值,具体为:CPU输出读取存储器所得的待签名信息和以生成的第三结果为横坐标,以生成的第十二结果为纵坐标的签名值。
方法中,步骤S4之前,还包括:CPU控制协处理器根据读取存储器所得的第二常数、读取存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果。
进一步地,本实施例中的CPU控制协处理器根据读取存储器所得的第二常数、读取存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果,具体为:CPU控制协处理器对读取存储器所得的第二常数和读取存储器所得的用户签名私钥进行模加运算,对模加运算生成的第五结果和随机数生成器生成的第四随机数进行模乘运算,生成第六结果,对生成的第六结果进行逆运算,生成第七结果。
本发明针对SM2签名方法中可能存在的侧信道攻击,提出了一种有效的防御SR1A、DR1A、FA等侧信道攻击的方法,其对涉及到的用户签名私钥等敏感信息使用随机数据进行掩码,提高了SM2签名方法的安全性,达到了防御SPA、DPA、FA等侧信道攻击的目的。
实施例二
本发明实施例二提供一种利用协处理器抗攻击的SM2签名方法,如图1所示,包括以下步骤:
步骤201:CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息进行拼接运算,生成待哈希数据,存储生成的待哈希数据至存储器,对读取存储器所得的待哈希数据进行哈希运算得到签名哈希值,存储签名哈希值至存储器;
具体地,本实施例中,在步骤201之前,还包括:根据用户的可辨别标识、第一常数和用户的公钥进行哈希运算得到用户基本信息,存储用户基本信息至存储器;用户的可辨别标识可以无歧义辨别用户身份的信息,第一常数为部分椭圆曲线参数,存储在存储器中;待签名信息预置于存储器;
例如,本实施例中,用户基本信息为:
b2e14c5c79c6df5b85f4fe7ed8db7a262b9da7e07ccb0ea9f4747b8ccda8a4f3;
待签名信息为:6D65737361676520646967657374;
可选地,本实施例中,步骤201之后还包括:CPU控制数据转换器将签名哈希值转换为整数;
例如,本实施例中,哈希运算为SM3函数,则签名哈希值为:
F0B43E94BA45ACCAACE692ED534382EB17E6AB5A19CE7B31F4486FDFC0D28640;
具体地,本实施例中,步骤201可以替换为:CPU根据读取存储器所得的用户基本信息和读取存储器所得的待签名信息进行拼接运算,生成待哈希数据,存储生成的待哈希数据至存储器,CPU控制协处理器对读取存储器所得的待哈希结果进行哈希运算得到签名哈希值,存储签名哈希值至存储器;
步骤202:CPU控制协处理器对读取存储器所得的第二随机数和读取存储器所得的第一常数进行乘法运算,存储生成的第一结果至存储器;对读取存储器所得的第一结果和读取存储器所得的第一随机数进行加法运算,得到第二结果,存储第二结果至存储器;
具体地,第二结果大于256bit,且其二进制表示的最高位为1,
例如,本实施例中,第二结果为:
9D5A60A4BBCD0D82D506861A16680F3A827A6D941EE43F7AA7032DDF54B2959B86EFD7B;
第二结果的二进制表示为:
(100111010101101001100000101001001011101111001101000011011000001011010101000001101000011000011010000101100110100000001111001110101000001001111010011011011001010000011110111001000011111101111010101001110000001100101101110111110101010010110010100101011001101110000110111011111101011110110000)2;
具体地,本实施例中,步骤202之前还包括:CPU控制随机数生成器产生第一预设固定长度的第一随机数和第二预设固定长度的第二随机数,存储第一随机数到存储器和第二随机数到存储器中;第一随机数∈,[1,n-1],其中,n为椭圆曲线参数;
例如,本实施例中,第一随机数为:
59276E27D506861A16680F3AD9C02DCCEF3CC1FA3CDBE4CE6D54B80DEAC1BC21;
优选地,本实施例中,第二预设固定长度为32比特;
例如,本实施例中,第二随机数为:9d5a60a5;
步骤203:CPU控制协处理器对椭圆曲线的基点与读取存储器所得的第三随机数进行点乘运算,生成第一随机结果,存储第一随机结果至存储器;对椭圆曲线的基点和读取存储器所得的第一随机结果进行点加运算,生成第二随机结果,存储生成的第二随机结果至存储器;对读取存储器所得的第一随机结果进行逆运算,生成第三随机结果,存储生成的第三随机结果至存储器;
具体地,本实施例中,步骤203之前还包括:CPU控制随机数生成器生成第三预设长度的第三随机数,存储第三随机数存储至存储器;
优选地,本实施例中,第三预设长度为32比特;
例如,本实施例中,第三随机数为:60b28832;
例如,本实施例中,第一随机结果的坐标为:
(B436CE6079B06F1E1434E08EFEBE7EC4B6E5C1E23220EC7D2FB06B61EB075641,
EEA9E55526D6B2C93283D69AB7BDC2490E2DBBA90DB99CAA066F9C9D2F9AA67F);
第二随机结果的坐标为:
(47FA9EC077D1579BA6966A9F88C0414DDF6266A6C1CC6E2DDCA237E7E3D3E4CC,
783A9273C25BF63C922F4D04785645498D82AD991243B0765D77BD36176E4A11);
第三随机结果的坐标为:
(B436CE6079B06F1E1434E08EFEBE7EC4B6E5C1E23220EC7D2FB06B61EB075641,
11561AA9D9294D36CD7C296548423DB6F1D24455F2466356F9906362D0655980);
具体地,CPU控制协处理器对椭圆曲线的基点与读取存储器所得的第三随机数进行点乘运算,生成第一随机结果,存储第一随机结果至存储器;对椭圆曲线的基点和读取存储器所得的第一随机结果进行点加运算,生成第二随机结果,存储第二随机结果至存储器之前,还包括以下步骤:
步骤a1:CPU判断读取存储器所得的第一随机结果是否与椭圆曲线的基点相等,是则返回步骤202,否则执行步骤a2;
例如,在本实施例中,第一随机结果与椭圆曲线的基点不相等。
步骤a2:CPU控制协处理器对椭圆曲线的基点进行逆运算生成逆元,存储生成的逆元至存储器;
例如,本实施例中,基点的逆元为:
(32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7,
43C8C95C0B098863A642311C9496DEAC2F56788239D5B8C0FD20CD1ADEC60F5F);
步骤a3:CPU判断读取存储器所得的第一随机结果与读取存储器所得的逆元是否相等,是则返回步骤202,否则执行步骤204;
例如,在本实施例中,第一随机结果与基点的逆元不相等;
步骤204:CPU控制协处理器根据读取存储器所得的第二结果对读取存储器所得的第二随机结果进行更新运算,生成更新后的第二随机结果,存储更新后的第二随机结果至存储器;
例如,本实施例中,更新后的第二随机结果的坐标为:
(91168335F253A6940D543E33D148549E6729864E02E7A5750756F8C613E5E3E7,
EAFCBEB2F4CB859B0DB470AFA9AC8CC586D31203A39922A8B4CC213BCBB37CE8);
具体地,步骤204包括以下步骤:
步骤b1:CPU控制协处理器对椭圆曲线的基点和读取存储器所得的第三随机结果进行点加运算,生成第五随机结果,存储生成的第五随机结果至存储器;
例如,本实施例中,第五随机结果的坐标为:
(F28ECBFC3D464165AFE55B7088C02ADA3D07573AC01DCB66A58949F791583C50,
5BA7A58587052CB61AF37B75DD857AD66635C4224C13757D3EEFACADDBD84318);
步骤b2:CPU控制协处理器对读取存储器所得的第二随机结果进行点倍运算,更新第二随机结果,存储更新后的第二随机结果至存储器;
例如,本实施例中,更新后的第二随机结果的坐标为:
(D5E01D8F6ED030B0C33431AC41A54627FB539A3ABA5392C9C191C4D1862B5C89,
3C6D89EAE48EA8355A849F861E076A0B388B7820513FC291327B53BE935F4DF8);
步骤b3:CPU判断二进制表示的读取存储器所得的第二结果的第i比特位上的数据是否为1,是则执行步骤b4,否则执行步骤b5;
具体地,本实施例中,i为变量且为整数;i的最大值为第二结果的二进制长度-2;
步骤b4:CPU控制协处理器对读取存储器所得的更新后的第二随机结果和读取存储器所得的第五随机结果点加运算,更新第二随机结果,存储更新后的第二随机结果至存储器,执行步骤b6;
步骤b5:CPU控制协处理器对读取存储器所得的更新后的第二随机结果和读取存储器所得的第三随机结果进行点加运算,更新第二随机结果,存储更新后的第二随机结果至存储器,执行步骤b6;
步骤b6:CPU控制协处理器对变量i继续减1运算,更新i,CPU判断更新后的i是否大于或者等于0,是则返回步骤b2,否则执行步骤205;
例如,本实施例中,第二结果的的二进制长度为288比特,i=288-2=286;则第二结果的第286比特位的数据为0,执行步骤b5,更新后的第二随机结果的坐标为:
(13CE5135E56BB79DD755E4FBF4C57F4682243336189424E96BC50A776DE5C707,
164942DA671B0496E102304BEAFF7042172F3669C699917E6549F00EB3F2FA86);
执行步骤b6,i=i-1=286-1=285,而285大于0,返回步骤b2,执行过b2之后,第二随机结果的坐标为:
(CB918B626504CD7D5D87837361741E8A97A471B16B691629AFBDE7AC26002E72,
1DAFCE51148CE4763DE7FA231B9C67ACB9D9F1D105868EA838C29D7E8A9AC5CD);
此时,第二结果的第285比特位的数据为0,执行步骤b5,更新后的第二随机结果的坐标为:
(C9A0E6984918564DAFF4B10A69CAB91D60CDC40633B6C10DB1985A8C9E7878FD,
3F7B8F1E445BE0781C95FE7445D52F48B04F328C726D182F580B02D2B64892A8);
执行步骤b6,i=i-1=285-1=284,而284大于0,返回步骤b2,执行过b2之后,第二随机结果的坐标为:
(36951FB9AB5F49341379BA6F8A9533E401F70BDEF9FD970A574D5FC33D103D07,
B8541A54891AA5293BD6F1B0DE10595CE8119406F719A69DC5124A98F7B2CB9D);
此时,第二结果的第284比特位的数据为1,执行步骤b4,更新后的第二随机结果的坐标为:
(D05D71864F980788190AAF60C72B5A708AD063D7306190E0B350645D66556579,
4FCB7FB67C317CBFF6DE8734A6DF213FC487843EA6797137DF398886AE1656A4);
以此方式循环,最终得到第二随机结果的坐标为:
(91168335F253A6940D543E33D148549E6729864E02E7A5750756F8C613E5E3E7,
EAFCBEB2F4CB859B0DB470AFA9AC8CC586D31203A39922A8B4CC213BCBB37CE8);
可选地,在本实施例中,步骤204的具体实现表述中,步骤b3可以替换为:CPU判断二进制表示的读取存储器所得的第二结果的第i比特位上的数据是否为0,是则执行步骤b5,否则执行步骤b4;
可选地,在本实施例中,步骤204中对二进制表示的第二结果可以从高位向低位一次进行判断相应比特位上的值,例如步骤b1-b6;也可以从低位向高位判断相应比特位上的数据是否为1或者是0,具体过程与步骤b1-b6步骤类似;
步骤205:CPU控制协处理器对读取存储器所得的更新后第二随机结果和读取存储器所得的第三随机结果进行点加运算,生成第四随机结果,存储生成的第四随机结果至存储器;对读取存储器所得的签名哈希值和读取存储器所得的第四随机结果的横坐标进行模加运算,生成第三结果,存储生成的第三随机结果至存储器,判断读取存储器所得的第三结果是否等于0,是则返回步骤202,否则执行步骤206;
例如,本实施例中,第四随机结果为:
(04EBFC718E8D1798620432268E77FEB6415E2EDE0E073C0F4F640ECD2E149A73,
E858F9D81E5430A57B36DAAB8F950A3C64E6EE6A63094D99283AFF767E124DF0);
第三结果为:
F5A03B0648D2C4630EEAC513E1BB81A15944DA3827D5B74143AC7EACEEE720B3;
步骤206:CPU控制协处理器对读取存储器所得的第一随机数和读取存储器所得的第三结果进行加法运算,生成第四结果,存储生成的第四结果至存储器,判断读取存储器所得的第四结果与读取存储器所得的第一常数是否相等,是则返回步骤202,否则执行步骤207;
例如,本实施例中,第四结果为:
4EC7A92F1DD94A7D2552D44EBB7BAF6ED67DBCC742EB96E45D4542B19FD39BB1;
步骤207:CPU控制协处理器对读取存储器所得的第二常数和读取存储器所得的用户签名私钥进行模加运算,生成第五结果,存储第五结果至存储器,对读取存储器所得的第五结果与读取存储器所得的第四随机数进行模乘运算,生成第六结果,存储第六结果至存储器,并对读取存储器所得的第六结果进行逆运算,生成第七结果,存储生成的第七结果至存储器;
具体地,本实施例之前,还包括:CPU控制随机数生成器产生第四预设长度的第四随机数,存储第四随机数至存储器;CPU存储用户签名私钥至存储器;
具体地,本实施例中,第一随机数∈,[1,n-1],其中,第一常数为椭圆曲线的参数;
例如,本实施例中,第四随机数为:
E460CDD50CFD3CE4D2E28604587E41A7B3F072C87481BC807962C9E5F3A9F729;
例如,本实施例中,第五结果为:
3945208F7B2144B13F36E38AC6D39F95889393692860B51A42FB81EF4DF7C5B9;
第六结果为:
2E8B1ED3CC87D42992CBD46070BAAF56544CFEC1E6EDBEFFE0B72531948EE30A;
第七结果为:
5923827DF5E41AE4EB6C580F8226CAAC27EB95FEB18E533D895AB458B9308421;
具体地,本步骤210之前,还包括:CPU存储第二常数至存储器;
步骤208:CPU控制协处理器对读取存储器所得的第一随机数和读取存储器所得的第四随机数进行模乘运算,生成第八结果,存储第八结果至存储器;对读取存储器所得的第四随机数和读取存储器所得的用户签名私钥进行模乘运算,生成第九结果,存储生成的第九结果至存储器;对读取存储器所得的第九结果和读取存储器所得的第三结果进行模乘运算,生成第十结果,存储第十结果至存储器;对读取存储器所得的第八结果和读取存储器所得的第十结果进行模减运算,生成第十一结果,存储生成的第十一结果至存储器;
例如,本实施例中,第八结果为:
7F85D23BEBEF9C9E7A2F051C73CB08E10A6E12331E51EACE67E8D087650B5BE8;
第九结果为:
4A2A50FDBF8A9744BFE94E5C183C6DAE12606B64943207AABB104F54DABA2D04;
第十结果为:
427D1AB289896C00835DEF2B70C8D9D8D6087385D0E320310408D5BECB2945EF;
第十一结果为:
3D08B7896266309DF6D115F103022F0834659EAD4D6ECA9D63DFFAC899E215F9;
步骤209:CPU控制协处理器对读取存储器所得的第七结果与读取存储器所得的第十一结果进行模乘运算,生成第十二结果,存储第十二结果至存储器,判断读取存储器所述的第十二结果是否为0,是则输出读取存储器所得的待签名信息和横坐标为读取存储器所得的第三结果,纵坐标为读取存储器所得的第十二结果的签名值,否则返回步骤202;
例如,本实施例中,第十二结果为:
B1B6AA29DF212FD8763182BC0D421CA1BB9038FD1F7F42D4840B69C485BBC1AA;
待签名信息为:6D65737361676520646967657374;
签名值的坐标为:
(F5A03B0648D2C4630EEAC513E1BB81A15944DA3827D5B74143AC7EACEEE720B3,
B1B6AA29DF212FD8763182BC0D421CA1BB9038FD1F7F42D4840B69C485BBC1AA)。
本发明针对SM2签名方法中可能存在的侧信道攻击,提出了一种有效的防御SR1A、DR1A、FA等侧信道攻击的方法,其对涉及到的用户签名私钥等敏感信息使用随机数据进行掩码,提高了SM2签名方法的安全性,达到了防御SPA、DPA、FA等侧信道攻击的目的。
实施例三
本发明实施例三提供一种利用协处理器抗攻击的SM2签名装置,如图2所示,包括:CPU、协处理器306、存储器307和随机数生成器308;
CPU包括读取模块301、控制模块302、生成模块303、第一判断模块304和输出模块305;
存储器307,用于存储用户基本信息和待签名信息;
读取模块301,用于读取存储器307得到用户基本信息和待签名信息;
生成模块303,用于根据读取模块301读取存储器307所得的用户基本信息和读取模块301读取存储器307所得的待签名信息生成预处理结果;
进一步地,本实施例中的生成模块303,具体用于根据读取模块301读取存储器307所得的用户基本信息和读取模块301读取存储器307所得的待签名信息进行拼接运算,生成预处理结果。
随机数生成器308,用于生成第三随机数;
控制模块302,用于控制协处理器306进行工作;
协处理器306,用于在控制模块302的控制下根据椭圆曲线的基点和随机数生成器308生成的第三随机数生成第一随机结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对椭圆曲线的基点和随机数生成器308生成的第三随机数进行点乘运算,生成第一随机结果。
协处理器306,还用于在控制模块302的控制下根据协处理器306生成的第一随机结果和生成模块303生成的预处理结果生成第三结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对椭圆曲线的基点和协处理器306在控制模块302的控制下生成的第一随机结果进行点加运算,生成第二随机结果;
协处理器306,具体用于在控制模块302的控制下对协处理器306在控制模块302的控制下生成的第一随机结果进行逆运算,生成第三随机结果;
随机数生成器308,还用于生成第二随机数;
存储器307,还用于存储第一常数;
读取模块301,还用于读取存储器307得到第一常数;
协处理器306,还用于在控制模块302的控制下对随机数生成器308生成的第二随机数和读取模块301读取存储器307所得的第一常数进行乘法运算,生成第一结果,对生成的第一结果和随机数生成器308生成的第一随机数进行加法运算,生成第二结果,根据生成的第二结果对在控制模块302的控制下协处理器306生成的第二随机结果进行更新运算,生成更新后的第二随机结果;
协处理器306,具体用于在控制模块302的控制下对在控制模块302的控制下协处理器306生成的更新后的第二随机结果和在控制模块302的控制下协处理器306生成的第三随机结果进行点加运算,生成第四随机结果,对生成的第四随机结果的横坐标和生成模块303生成的预处理结果进行模加运算,生成第三结果。
随机数生成器308,还用于生成第一随机数和第四随机数;
协处理器306,还用于在控制模块302的控制下根据随机数生成器308生成的第一随机数、随机数生成器308生成的第四随机数生成第八结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对随机数生成器308生成的第一随机数和随机数生成器308生成的第四随机数进行模乘运算,生成第八结果。
存储器307,还用于存储用户签名私钥;
读取模块301,还用于读取存储器307得到用户签名私钥;
协处理器306,还用于在控制模块302的控制下根据随机数生成器308生成的第四随机数、读取模块301读取存储器307所得的用户签名私钥和协处理器306在控制模块302的控制下生成的第三结果生成第十结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对随机数生成器308生成的第四随机数、读取模块301读取存储器307所得的用户签名私钥进行模乘运算,生成第九结果,对生成的第九结果和在控制模块302的控制下协处理器306生成的第三结果进行模乘运算,生成第十结果。
协处理器306,还用于在控制模块302的控制下根据协处理器306在控制模块302的控制下生成的第十结果和协处理器306在控制模块302的控制下生成的第八结果生成第十一结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第八结果和在控制模块302的控制下协处理器306生成的第十结果进行模减运算,生成第十一结果。
存储器307,还用于存储第二常数;
读取模块301,还用于读取存储器307得到第二常数;
协处理器306,还用于在控制模块302的控制下根据读取模块301读取存储器307所得的第二常数、读取模块301读取存储器307所得的用户签名私钥和随机数生成器308生成的第四随机数生成第七结果;
进一步地,本实施例中,协处理器306,具体用于在控制模块302的控制下对读取模块301读取存储器307所得的第二常数、读取模块301读取存储器307所得的用户签名私钥进行模加运算,对模加运算生成的第五结果和随机数生成器308生成的第四随机数进行模乘运算,生成第六结果,对生成的第六结果进行逆运算,生成第七结果。
协处理器306,还用于在控制模块302的控制下根据在控制模块302的控制下生成的第七结果和在控制模块302的控制下协处理器306生成的第十一结果生成第十二结果;
进一步地,本实施例中的协处理器306,具体用于在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第七结果和在控制模块302的控制下协处理器306生成的十一结果进行模减运算,生成第十二结果。
第一判断模块304,用于判断协处理器306在控制模块302的控制下生成的第十二结果是否为第一预设值;
协处理器306,还用于当第一判断模块304判定协处理器306在控制模块302的控制下生成的第十二结果不为第一预设值时,在控制模块302的控制下根据协处理器306生成的第一随机结果和生成模块303生成的预处理结果生成第三结果;
输出模块305,用于当第一判断模块304判定协处理器306在控制模块302的控制下生成的第十二结果为第一预设值时,输出协处理器306在控制模块302的控制下生成的第三结果和协处理器306在控制模块302的控制下生成的第十二结果组成的签名值。
进一步地,本实施例中的输出模块305,具体用于当第一判断模块304判定协处理器306在控制模块302的控制下生成的第十二结果为第一预设值时,输出读取模块301读取存储器307所得的待签名信息和以协处理器306在控制模块302的控制下生成的第三结果为横坐标和以协处理器306在控制模块302的控制下生成的第十二结果为纵坐标的签名值。
进一步地,本实施例中的CPU还包括第二判断模块和第三判断模块;
第二判断模块,用于判断协处理器306在控制模块302的控制下生成的第一随机结果是否与椭圆曲线的基点相等;
协处理器306,还用于当判定协处理器306在控制模块302的控制下生成的第一随机结果与椭圆曲线的基点相等时,在控制模块302的控制下根据椭圆曲线的基点和随机数生成器308生成的第三随机数生成第一随机结果;
协处理器306,还用于当判定协处理器306在控制模块302的控制下生成的第一随机结果与椭圆曲线的基点不相等时,在控制模块302的控制下对椭圆曲线的基点进行逆运算生成逆元;
第三判断模块,用于判断协处理器306在控制模块302的控制下生成的第一随机结果和协处理器306在控制模块302的控制下生成的基点的逆元是否相等;
协处理器306,还用于当第三判断模块判定协处理器306在控制模块302的控制下生成的第一随机结果和协处理器306在控制模块302的控制下生成的逆元相等时,在控制模块302的控制下根据椭圆曲线的基点和随机数生成器308生成的第三随机数生成第一随机结果;
协处理器306,具体用于当第三判断模块判定协处理器306在控制模块302的控制下生成的第一随机结果和协处理器306在控制模块302的控制下生成的逆元不相等时,在控制模块302的控制下根据协处理器306生成的第一随机结果和生成模块303生成的预处理结果生成第三结果。
进一步地,本实施例中,CPU还包括第四判断模块;
第四判断模块,用于判断协处理器306在控制模块302的控制下生成的第三结果是否等于第二预设值;
协处理器306,还用于当第四判断模块判定协处理器306在控制模块302的控制下生成的第三结果等于第二预设值时,在控制模块302的控制下根据椭圆曲线的基点和随机数生成器308生成的第三随机数生成第一随机结果;
协处理器306,还用于当第四判断模块判定协处理器306在控制模块302的控制下生成的第三结果不等于第二预设值时,在控制模块302的控制下根据随机数生成器308生成的第一随机数、随机数生成器308生成的第四随机数生成第八结果;
更进一步地,本实施例中,CPU还包括第五判断模块和第六判断模块,协处理器306包括第一协处理模块、第二协处理模块、第三协处理模块、第四协处理模块和第五协处理模块;
第一协处理模块,用于在控制模块302的控制下对椭圆曲线的基点和在控制模块302的控制下协处理器306生成的第三随机结果进行点加运算,生成第五随机结果;
第二协处理模块,用于在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第二随机结果进行点倍运算,更新第二随机结果;
第五判断模块,用于判断二进制表示的第二结果的第i比特位上的数据是否为1;
第三协处理模块,用于当第五判断模块判定二进制表示的第二结果的第i比特位上的数据为1时,在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第二随机结果和在控制模块302的控制下协处理器306生成的第五随机结果进行点加运算,更新第二随机结果;
第四协处理模块,用于当第五判断模块判定二进制表示的第二结果的第i比特位上的数据不为1时,在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第二随机结果和在控制模块302的控制下协处理器306生成的第三随机结果进行点加运算,更新第二随机结果;
第五协处理模块,用于在控制模块302的控制下更新第二随机结果时,在控制模块302的控制下对变量i进行减1运算,更新i;
第六判断模块,用于判断协处理器306在控制模块302的控制下更新的i是否大于或者等于0;
第二协处理模块,还用于当第六判断模块判定协处理器306在控制模块302的控制下更新的i大于或者等于0时,在控制模块302的控制下对在控制模块302的控制下协处理器306生成的第二随机结果进行点倍运算,更新第二随机结果;
协处理器306,还用于当第六判断模块判定协处理器306在控制模块302的控制下更新的i小于0时,对在控制模块302的控制下协处理器306生成的更新后的第二随机结果和在控制模块302的控制下协处理器306生成的第三随机结果进行点加运算,生成第四随机结果。
进一步地,本实施例中的CPU还包括第七判断模块;
协处理器306,还用于在控制模块302的控制下对随机数生成器308生成的第一随机数和在控制模块302的控制下协处理器306生成的第三结果进行加法运算,生成第四结果;
第七判断模块,用于判断协处理器306在控制模块302的控制下生成的第四结果与读取模块301读取存储器307所得的第一常数是否相等;
协处理器306,还用于当第七判断模块判定协处理器306在控制模块302的控制下生成的第四结果与读取模块301读取存储器307所得的第一常数相等时,在控制模块302的控制下根据椭圆曲线的基点和随机数生成器308生成的第三随机数生成第一随机结果;
协处理器306,还用于当第七判断模块判定协处理器306在控制模块302的控制下生成的第四结果与读取模块301读取存储器307所得的第一常数不相等时,在控制模块302的控制下根据随机数生成器308生成的第一随机数、随机数生成器308生成的第四随机数生成第八结果。
本发明与现有技术相比,具有以下优点:本发明针对SM2签名方法中可能存在的侧信道攻击,提出了一种有效的防御SPA、DPA、FA等侧信道攻击的方法,其对涉及到的用户签名私钥等敏感信息使用随机数据进行掩码,提高了SM2签名方法的安全性,达到了防御SPA、DPA、FA等侧信道攻击的目的。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (26)
1.一种利用协处理器抗攻击的SM2签名方法,其特征在于,包括以下步骤:
步骤S1:CPU根据读取存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果;
步骤S2:所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果;
步骤S3:所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,根据生成的所述第十结果和生成的所述第八结果生成第十一结果;
步骤S4:所述CPU控制协处理器根据生成的第七结果和生成的所述第十一结果生成第十二结果,所述CPU判断生成的所述第十二结果是否为第一预设值,是则输出生成的所述第十二结果和生成的所述第三结果组成的签名值,否则返回步骤S2;
所述方法中,所述步骤S4之前,还包括:所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果;
所述步骤S2中,所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果,具体包括:
步骤B1:所述CPU控制协处理器对椭圆曲线的基点和生成的所述第一随机结果进行点加运算,生成第二随机结果;对生成的所述第一随机结果进行逆运算,生成第三随机结果;
步骤B2:所述CPU控制协处理器对随机数生成器生成的第二随机数和读取所述存储器所得的第一常数进行乘法运算,生成第一结果,对生成的所述第一结果和随机数生成器生成的所述第一随机数进行加法运算,生成第二结果,根据生成的所述第二结果对生成的所述第二随机结果进行更新运算,生成更新后的第二随机结果;
步骤B3:所述CPU控制协处理器对生成的更新后的所述第二随机结果和生成的所述第三随机结果进行点加运算,生成第四随机结果,对生成的所述第四随机结果的横坐标和生成的所述预处理结果进行模加运算,生成所述第三结果。
2.如权利要求1所述的方法,其特征在于,所述步骤S1中,所述CPU根据读取所述存储器所得的用户基本信息和读取所述存储器所得的待签名信息生成预处理结果,具体为:所述CPU根据读取所述存储器所得的用户基本信息和读取所述存储器所得的待签名信息进行拼接运算,生成所述预处理结果。
3.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,具体为:所述CPU控制协处理器对椭圆曲线的基点和随机数生成器生成的第三随机数进行点乘运算,生成所述第一随机结果。
4.如权利要求1所述的方法,其特征在于,所述步骤S2中,所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果之后,所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果之前,还包括:
步骤A1:所述CPU判断CPU控制协处理器生成的所述第一随机结果是否与椭圆曲线的基点相等,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤A2;
步骤A2:所述CPU控制协处理器对椭圆曲线的基点进行逆运算生成逆元;
步骤A3:所述CPU判断CPU控制协处理器生成的所述第一随机结果和生成的逆元是否相等,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行所述根据生成的所述第一随机结果和生成的所述预处理结果生成第三结果。
5.如权利要求1所述的方法,其特征在于,所述步骤S2之后,所述步骤S3之前,还包括:所述CPU判断生成的所述第三结果是否等于第二预设值,是则执行所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。
6.如权利要求1所述的方法,其特征在于,所述步骤B2中,所述根据生成的第二结果对生成的所述第二随机结果进行更新运算,生成更新后的第二随机结果,具体包括:
步骤C1:所述CPU控制协处理器对椭圆曲线的基点和生成的所述第三随机结果进行点加运算,生成第五随机结果;
步骤C2:所述CPU控制协处理器对生成的所述第二随机结果进行点倍运算,更新第二随机结果;
步骤C3:所述CPU判断二进制表示的第二结果的第i比特位上的数据是否为1,是则执行步骤C4,否则执行步骤C5;
步骤C4:所述CPU控制协处理器对生成的所述第二随机结果和生成的所述第五随机结果进行点加运算,更新第二随机结果,执行步骤C6;
步骤C5:所述CPU控制协处理器对生成的所述第二随机结果和生成的所述第三随机结果进行点加运算,更新第二随机结果,执行步骤C6;
步骤C6:所述CPU控制协处理器对变量i进行减1运算,更新i,CPU判断更新后的i是否大于或者等于0,是则返回步骤C2,否则执行步骤B3。
7.如权利要求1所述的方法,其特征在于,在所述步骤S2之后,所述步骤S3之前,还包括:
所述CPU控制协处理器对随机数生成器生成的第一随机数和生成的所述第三结果进行加法运算,生成第四结果,所述CPU判断生成的所述第四结果与读取所述存储器所得的第一常数是否相等,是则执行所述步骤S2中的所述CPU控制协处理器根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果,否则执行步骤S3。
8.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述CPU控制协处理器根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果,具体为:所述CPU控制协处理器对随机数生成器生成的第一随机数和随机数生成器生成的所述第四随机数进行模乘运算,生成第八结果。
9.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据随机数生成器生成的第四随机数、读取所述存储器所得的用户签名私钥和生成的所述第三结果生成第十结果,具体为:所述CPU控制协处理器对随机数生成器生成的所述第四随机数和读取所述存储器所得的用户签名私钥进行模乘运算,生成第九结果,对生成的第九结果和生成的所述第三结果进行模乘运算,生成所述第十结果。
10.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述根据生成的所述第十结果和生成的所述第八结果生成第十一结果,具体为:所述CPU控制协处理器对生成的所述第十结果和生成的所述第八结果进行模减运算,生成所述第十一结果。
11.如权利要求1所述的方法,其特征在于,所述步骤S4中,所述CPU控制协处理器根据生成的所述第七结果和生成的所述第十一结果生成第十二结果,具体为:所述CPU控制协处理器对生成的所述第七结果和生成的所述第十一结果进行模乘运算,生成所述第十二结果。
12.如权利要求1所述的方法,其特征在于,所述步骤S4中,所述输出生成的所述第十二结果和生成的所述第三结果组成的签名值,具体为:所述CPU输出读取所述存储器所得的待签名信息和以生成的所述第三结果为横坐标,以生成的所述第十二结果为纵坐标的签名值。
13.如权利要求1所述的方法,其特征在于,所述CPU控制协处理器根据读取所述存储器所得的第二常数、读取所述存储器所得的用户签名私钥和随机数生成器生成的第四随机数生成第七结果,具体为:所述CPU控制协处理器对读取所述存储器所得的第二常数和读取所述存储器所得的用户签名私钥进行模加运算,对模加运算生成的第五结果和随机数生成器生成的所述第四随机数进行模乘运算,生成第六结果,对生成的所述第六结果进行逆运算,生成第七结果。
14.一种利用协处理器抗攻击的SM2签名装置,其特征在于,所述装置包括:CPU、协处理器、存储器和随机数生成器;
所述CPU包括读取模块、控制模块、生成模块、第一判断模块和输出模块;
所述存储器,用于存储用户基本信息和待签名信息;
所述读取模块,用于读取所述存储器得到所述用户基本信息和所述待签名信息;
所述生成模块,用于根据所述读取模块读取所述存储器所得的所述用户基本信息和所述读取模块读取所述存储器所得的所述待签名信息生成预处理结果;
所述随机数生成器,用于生成第三随机数;
所述控制模块,用于控制所述协处理器进行工作;
所述协处理器,用于在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;
所述协处理器,还用于在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;
所述随机数生成器,还用于生成第一随机数和第四随机数;
所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第一随机数、所述随机数生成器生成的所述第四随机数生成第八结果;
所述存储器,还用于存储用户签名私钥;
所述读取模块,还用于读取所述存储器得到所述用户签名私钥;
所述协处理器,还用于在所述控制模块的控制下根据所述随机数生成器生成的所述第四随机数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述协处理器在所述控制模块的控制下生成的所述第三结果生成第十结果;
所述协处理器,还用于在所述控制模块的控制下根据所述协处理器在所述控制模块的控制下生成的所述第十结果和所述协处理器在所述控制模块的控制下生成的所述第八结果生成第十一结果;
所述存储器,还用于存储第二常数;
所述读取模块,还用于读取所述存储器得到所述第二常数;
所述协处理器,还用于在所述控制模块的控制下根据所述读取模块读取所述存储器所得的所述第二常数、所述读取模块读取所述存储器所得的所述用户签名私钥和所述随机数生成器生成的所述第四随机数生成第七结果;
所述协处理器,还用于在所述控制模块的控制下根据在所述控制模块的控制下生成的所述第七结果和在所述控制模块的控制下所述协处理器生成的所述第十一结果生成第十二结果;
所述第一判断模块,用于判断所述协处理器在所述控制模块的控制下生成的所述第十二结果是否为第一预设值;
所述协处理器,还用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果不为第一预设值时,在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果;
所述输出模块,用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果为第一预设值时,输出所述协处理器在所述控制模块的控制下生成的所述第三结果和所述协处理器在所述控制模块的控制下生成的所述第十二结果组成的签名值;
所述协处理器,具体用于在所述控制模块的控制下对椭圆曲线的基点和所述协处理器在所述控制模块的控制下生成的所述第一随机结果进行点加运算,生成第二随机结果;
所述协处理器,具体用于在所述控制模块的控制下对所述协处理器在所述控制模块的控制下生成的所述第一随机结果进行逆运算,生成第三随机结果;
所述随机数生成器,还用于生成第二随机数;
所述存储器,还用于存储第一常数;
所述读取模块,还用于读取所述存储器得到所述第一常数;
所述协处理器,还用于在所述控制模块的控制下对所述随机数生成器生成的第二随机数和所述读取模块读取所述存储器所得的第一常数进行乘法运算,生成第一结果,对生成的第一结果和随机数生成器生成的第一随机数进行加法运算,生成第二结果,根据生成的第二结果对在所述控制模块的控制下所述协处理器生成的所述第二随机结果进行更新运算,生成更新后的第二随机结果;
所述协处理器,具体用于在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的更新后的所述第二随机结果和在所述控制模块的控制下所述协处理器生成的所述第三随机结果进行点加运算,生成第四随机结果,对生成的第四随机结果的横坐标和所述生成模块生成的所述预处理结果进行模加运算,生成第三结果。
15.如权利要求14所述的装置,其特征在于,所述生成模块,具体用于根据所述读取模块读取所述存储器所得的用户基本信息和所述读取模块读取所述存储器所得的所述待签名信息进行拼接运算,生成所述预处理结果。
16.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对椭圆曲线的基点和所述随机数生成器生成的所述第三随机数进行点乘运算,生成所述第一随机结果。
17.如权利要求14所述的装置,其特征在于,所述CPU还包括第二判断模块和第三判断模块;
所述第二判断模块,用于判断所述协处理器在所述控制模块的控制下生成的第一随机结果是否与椭圆曲线的基点相等;
所述协处理器,还用于当判定所述协处理器在所述控制模块的控制下生成的所述第一随机结果与椭圆曲线的基点相等时,在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;
所述协处理器,还用于当判定所述协处理器在所述控制模块的控制下生成的所述第一随机结果与所述椭圆曲线的基点不相等时,在所述控制模块的控制下对椭圆曲线的基点进行逆运算生成逆元;
所述第三判断模块,用于判断所述协处理器在所述控制模块的控制下生成的所述第一随机结果和所述协处理器在所述控制模块的控制下生成的基点的所述逆元是否相等;
所述协处理器,还用于当所述第三判断模块判定所述协处理器在所述控制模块的控制下生成的所述第一随机结果和所述协处理器在所述控制模块的控制下生成的所述逆元相等时,在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的所述第三随机数生成第一随机结果;
所述协处理器,具体用于当所述第三判断模块判定所述协处理器在所述控制模块的控制下生成的所述第一随机结果和所述协处理器在所述控制模块的控制下生成的所述逆元不相等时,在所述控制模块的控制下根据所述协处理器生成的所述第一随机结果和所述生成模块生成的所述预处理结果生成第三结果。
18.如权利要求14所述的装置,其特征在于,所述CPU还包括第四判断模块;
所述第四判断模块,用于判断所述协处理器在所述控制模块的控制下生成的第三结果是否等于第二预设值;
所述协处理器,还用于当所述第四判断模块判定所述协处理器在所述控制模块的控制下生成的所述第三结果等于第二预设值时,在所述控制模块的控制下根据椭圆曲线的基点和随机数生成器生成的第三随机数生成第一随机结果;
所述协处理器,还用于当所述第四判断模块判定所述协处理器在所述控制模块的控制下生成的所述第三结果不等于第二预设值时,在所述控制模块的控制下根据所述随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果。
19.如权利要求14所述的装置,其特征在于,所述CPU还包括第五判断模块和第六判断模块,所述协处理器包括第一协处理模块、第二协处理模块、第三协处理模块、第四协处理模块和第五协处理模块;
所述第一协处理模块,用于在所述控制模块的控制下对椭圆曲线的基点和在所述控制模块的控制下所述协处理器生成的所述第三随机结果进行点加运算,生成第五随机结果;
所述第二协处理模块,用于在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第二随机结果进行点倍运算,更新所述第二随机结果;
所述第五判断模块,用于判断二进制表示的第二结果的第i比特位上的数据是否为1;
所述第三协处理模块,用于当所述第五判断模块判定二进制表示的第二结果的第i比特位上的数据为1时,在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第二随机结果和在所述控制模块的控制下所述协处理器生成的所述第五随机结果进行点加运算,更新所述第二随机结果;
所述第四协处理模块,用于当所述第五判断模块判定二进制表示的第二结果的第i比特位上的数据不为1时,在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第二随机结果和在所述控制模块的控制下所述协处理器生成的所述第三随机结果进行点加运算,更新所述第二随机结果;
所述第五协处理模块,用于在所述控制模块的控制下更新所述第二随机结果时,在所述控制模块的控制下对变量i进行减1运算,更新i;
所述第六判断模块,用于判断所述协处理器在所述控制模块的控制下更新的i是否大于或者等于0;
所述第二协处理模块,还用于当所述第六判断模块判定所述协处理器在所述控制模块的控制下更新的所述i大于或者等于0时,在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第二随机结果进行点倍运算,更新所述第二随机结果;
所述协处理器,还用于当所述第六判断模块判定所述协处理器在所述控制模块的控制下更新的所述i小于0时,对在所述控制模块的控制下所述协处理器生成的所述更新后的所述第二随机结果和在所述控制模块的控制下所述协处理器生成的所述第三随机结果进行点加运算,生成第四随机结果。
20.如权利要求14所述的装置,其特征在于,所述CPU还包括第七判断模块;
所述协处理器,还用于在所述控制模块的控制下对所述随机数生成器生成的所述第一随机数和在所述控制模块的控制下所述协处理器生成的所述第三结果进行加法运算,生成第四结果;
所述第七判断模块,用于判断所述协处理器在所述控制模块的控制下生成的第四结果与所述读取模块读取所述存储器所得的第一常数是否相等;
所述协处理器,还用于当所述第七判断模块判定所述协处理器在所述控制模块的控制下生成的第四结果与所述读取模块读取所述存储器所得的第一常数相等时,在所述控制模块的控制下根据椭圆曲线的基点和所述随机数生成器生成的第三随机数生成第一随机结果;
所述协处理器,还用于当所述第七判断模块判定所述协处理器在所述控制模块的控制下生成的第四结果与所述读取模块读取所述存储器所得的第一常数不相等时,在所述控制模块的控制下根据随机数生成器生成的第一随机数、随机数生成器生成的第四随机数生成第八结果。
21.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对所述随机数生成器生成的第一随机数和所述随机数生成器生成的第四随机数进行模乘运算,生成第八结果。
22.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对所述随机数生成器生成的所述第四随机数、所述读取模块读取所述存储器所得的所述用户签名私钥进行模乘运算,生成第九结果,对生成的所述第九结果和在所述控制模块的控制下所述协处理器生成的所述所述第三结果进行模乘运算,生成第十结果。
23.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第八结果和在所述控制模块的控制下所述协处理器生成的所述第十结果进行模减运算,生成第十一结果。
24.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对在所述控制模块的控制下所述协处理器生成的所述第七结果和在所述控制模块的控制下所述协处理器生成的所述十一结果进行模减运算,生成第十二结果。
25.如权利要求14所述的装置,其特征在于,所述输出模块,具体用于当所述第一判断模块判定所述协处理器在所述控制模块的控制下生成的所述第十二结果为第一预设值时,输出所述读取模块读取所述存储器所得的待签名信息和以所述协处理器在所述控制模块的控制下生成的所述第三结果为横坐标和以所述协处理器在所述控制模块的控制下生成的第十二结果为纵坐标的签名值。
26.如权利要求14所述的装置,其特征在于,所述协处理器,具体用于在所述控制模块的控制下对所述读取模块读取所述存储器所得的第二常数、所述读取模块读取所述存储器所得的用户签名私钥进行模加运算,对模加运算生成的第五结果和所述随机数生成器生成的所述第四随机数进行模乘运算,生成第六结果,对生成的第六结果进行逆运算,生成第七结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711265584.5A CN108039947B (zh) | 2017-12-05 | 2017-12-05 | 一种利用协处理器抗攻击的sm2签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711265584.5A CN108039947B (zh) | 2017-12-05 | 2017-12-05 | 一种利用协处理器抗攻击的sm2签名方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108039947A CN108039947A (zh) | 2018-05-15 |
CN108039947B true CN108039947B (zh) | 2020-10-13 |
Family
ID=62095438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711265584.5A Active CN108039947B (zh) | 2017-12-05 | 2017-12-05 | 一种利用协处理器抗攻击的sm2签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108039947B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109600232B (zh) * | 2018-12-05 | 2021-08-06 | 北京智慧云测科技有限公司 | 针对sm2签名算法的攻击验证、防护方法及装置 |
CN112131616B (zh) * | 2020-09-15 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 一种sm2算法的掩码运算方法及装置 |
CN112131613B (zh) * | 2020-09-15 | 2022-02-22 | 郑州信大捷安信息技术股份有限公司 | 一种针对sm2算法的掩码运算方法及装置 |
CN114844650B (zh) * | 2022-05-24 | 2023-12-01 | 北京宏思电子技术有限责任公司 | 一种设备签名方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104836666A (zh) * | 2015-04-20 | 2015-08-12 | 成都信息工程学院 | 一种针对sm2解密算法的能量分析攻击的方法 |
CN104852805A (zh) * | 2015-05-11 | 2015-08-19 | 中国科学院软件研究所 | 一种抵抗基于格的错误攻击的sm2签名算法防护方法 |
CN107147488A (zh) * | 2017-03-24 | 2017-09-08 | 广东工业大学 | 一种基于sm2加解密算法的签名验签系统和方法 |
CN107302437A (zh) * | 2017-07-31 | 2017-10-27 | 飞天诚信科技股份有限公司 | 一种脱机认证数据的个人化方法及个人化设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898468B2 (en) * | 2009-12-08 | 2014-11-25 | Bae Systems Information And Electronic Systems Integration Inc. | Method for ensuring security and privacy in a wireless cognitive network |
-
2017
- 2017-12-05 CN CN201711265584.5A patent/CN108039947B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104836666A (zh) * | 2015-04-20 | 2015-08-12 | 成都信息工程学院 | 一种针对sm2解密算法的能量分析攻击的方法 |
CN104852805A (zh) * | 2015-05-11 | 2015-08-19 | 中国科学院软件研究所 | 一种抵抗基于格的错误攻击的sm2签名算法防护方法 |
CN107147488A (zh) * | 2017-03-24 | 2017-09-08 | 广东工业大学 | 一种基于sm2加解密算法的签名验签系统和方法 |
CN107302437A (zh) * | 2017-07-31 | 2017-10-27 | 飞天诚信科技股份有限公司 | 一种脱机认证数据的个人化方法及个人化设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108039947A (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108039947B (zh) | 一种利用协处理器抗攻击的sm2签名方法 | |
KR101712850B1 (ko) | 화이트 박스로부터 암호화설비를 보호하는 시스템 및 그 방법 | |
Medwed et al. | Template attacks on ECDSA | |
US8402287B2 (en) | Protection against side channel attacks | |
JP7123959B2 (ja) | 楕円曲線点乗算デバイス及び方法 | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
JPWO2006077651A1 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
KR20090006176A (ko) | 평문 판정 방법 | |
EP3874364A1 (en) | Constant time secure arithmetic-to-boolean mask conversion | |
JP2010164904A (ja) | 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法 | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
KR20100117589A (ko) | 시그너처 구조를 갖는 비대칭 암호화를 위한 대응조치 방법 및 디바이스 | |
EP3698262B1 (en) | Protecting modular inversion operation from external monitoring attacks | |
US20120039462A1 (en) | Rsa signature method and apparatus | |
KR20080012634A (ko) | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 | |
KR20080012633A (ko) | 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 소수 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치 | |
KR102006222B1 (ko) | 타원곡선 암호와 rsa 공개키 암호를 통합 구현하기 위한 연산장치 및 방법 | |
Boscher et al. | Fault resistant RSA signatures: Chinese remaindering in both directions | |
Jyotiyana et al. | Fault attack for scalar multiplication over finite field (E (F q)) on Elliptic Curve Digital Signature Algorithm | |
CN112131613B (zh) | 一种针对sm2算法的掩码运算方法及装置 | |
Al-Muhammed et al. | Secure Encryption Technique Based on Artificially Induced Chaos and Nature-Inspired Triggering Method. Symmetry 2022, 14, 218 | |
JP2008141385A (ja) | 暗号方法、暗号装置および暗号プログラム | |
JP2008224830A (ja) | 耐タンパーベキ乗演算方法 | |
JP2014178506A (ja) | 楕円曲線暗号装置 |
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 |