CN111835518A - 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统 - Google Patents

椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统 Download PDF

Info

Publication number
CN111835518A
CN111835518A CN202010662468.2A CN202010662468A CN111835518A CN 111835518 A CN111835518 A CN 111835518A CN 202010662468 A CN202010662468 A CN 202010662468A CN 111835518 A CN111835518 A CN 111835518A
Authority
CN
China
Prior art keywords
signature
algorithm
error injection
time
signature data
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.)
Granted
Application number
CN202010662468.2A
Other languages
English (en)
Other versions
CN111835518B (zh
Inventor
周诗扬
韩绪仓
张行
王飞宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Financial Certification Authority Co ltd
Original Assignee
China Financial Certification Authority Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Financial Certification Authority Co ltd filed Critical China Financial Certification Authority Co ltd
Priority to CN202010662468.2A priority Critical patent/CN111835518B/zh
Publication of CN111835518A publication Critical patent/CN111835518A/zh
Application granted granted Critical
Publication of CN111835518B publication Critical patent/CN111835518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates

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)
  • Storage Device Security (AREA)

Abstract

本发明公开了椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统,涉及技术领域信息安全,用以解决基于现有技术在椭圆曲线密码的安全性测评中攻击测评实施较困难的问题。方法包括:获取一组签名数据的步骤,签名值可用性分析的步骤,使用所述的一组可用签名值恢复密钥的步骤。系统包括:获取一组签名数据的单元,签名值可用性分析的单元,恢复密钥的单元。本发明利用错误注入绕过随机数更新步骤,使前后两次签名使用同一个随机数k。对于测评者来说,使用两次正确的签名就可以求得私钥dA。本发明可用有效绕开签名的反向校验防护,可用于SM2签名算法的安全性测评,提高SM2算法实现的安全性。

Description

椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统
技术领域
本发明涉及技术领域信息安全,特别涉及椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统。
背景技术
N.Koblitz和V.Miller在1985年分别独立提出椭圆曲线密码(ECC,Ellipticcurve cryptosystem),即将椭圆曲线应用于公钥密码系统中。椭圆曲线公钥密码的安全性基于椭圆曲线离散对数问题(ECDLP)。与有限域上的大数分解问题以及离散对数问题存在亚指数级求解算法相比,而ECDLP的求解难度要大得多,目前所知求解的最好方法是指数级的。因此同等安全条件下,椭圆曲线公钥密码所需较小位数的密钥。在2010年,国家密码管理局发布了基于ECC的公钥密码算法标准《GMT 0003.4-2012SM2椭圆曲线公钥密码算法》。其在2014年正式成为国标,并在2017年正式成为ISO/IEC国际标准。SM2算法已广泛应用于金融、社保等国家信息安全重要领域中。
SM2签名过程如下,其中M为待签名消息,ZA为关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值,(r,s)为签名输出:
1、置
Figure BDA0002579125570000011
2、计算
Figure BDA0002579125570000012
3、用随机数发生器产生随机数k∈[1,n-1] 公式3;
4、计算椭圆曲线点(x1,y1)=[k]G 公式4;
5、计算r=(e+x1)mod n 公式5;若r=0或r+k=n,则返回公式3;
6、计算s=(1+dA)-1·(k-rdA)mod n公式6;若s=0,则返回公式3;
7、输出M的签名值(r,s) 公式7。
密码系统的实际安全性,除了对其进行数学分析保证算法安全性外,还需要考虑其实现的安全性。密码算法实现过程中将会泄露出算法内部状态的信息,利用这些信息可以获取密钥。在安全性测评中,常用的针对密码算法实现的攻击方法可以分为侧信道攻击和错误注入攻击两类。侧信道攻击利用算法执行过程中产生的功耗与算法执行过程中的数据依赖性和操作依赖性获得密钥。错误注入攻击通过激光、电磁等多种方法瞬时给芯片引入一个电流,干扰芯片运行,从而导致芯片运行出错输出异常结果,攻击者利用该信息进行攻击,获得密钥。
在安全性测评中,针对SM2签名算法的错误攻击方法主要攻击多倍点[k]G运算,例如:1)弱曲线攻击,通过错误注入改变椭圆曲线的参数(例如G的坐标),使其变为弱椭圆曲线E′上的G′,从而通过求解E′上的ECDLP问题恢复出k,进而攻出密钥;2)通过将k的某些比特置为0,从而构造出一种特殊的格,通过格基约简算法攻出密钥d。这些安全性测评方法的攻击难度较大,对安全性测者和攻击设备的要求都很高,需要精确注入错误,并且产生的错误为某种类型的错误。这就要求安全性测者非常精通密码设备的物理器件特性和低层算法详细结构,攻击才有可能成功。此外,由于椭圆曲线的特殊结构(例如仿射坐标与雅可比坐标之间的转换),以及其它防护措施的存在(例如掩码),椭圆曲线签名算法为非确定性签名算法(k为随机数),等都会造成内部数据随机,攻击测评实施困难。
发明内容
本发明提供了椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统,用以解决基于现有技术在椭圆曲线密码的安全性测评中攻击测评实施较困难的问题。
为达到上述目的,本发明提供以下技术方案:
本发明提供了一种椭圆曲线公钥密码算法安全性测评中的错误注入方法,包括:获取一组签名数据的步骤:使用私钥和第一次签名数据执行第一次SM2签名算法,得到第一次签名值;使用相同的所述私钥和第二次签名数据执行第二次SM2签名算法并进行错误注入,得到第二次签名值;签名值可用性分析的步骤:若上述两次SM2签名算法满足ri-ri+1=Hv(mi)-Hv(mi+1),则所述的第一次签名值和第二次签名值为一组可用的签名值,否则返回所述获取一组签名数据的步骤;使用所述的一组可用签名值恢复密钥的步骤:dA=(si-si+1)(ri+1+si+1-ri-si)-1mod n;其中,dA表示私钥、mi表示第一次签名数据、mi+1表示第二次签名数据、(ri、si)表示第一次签名值、(ri+1、si+1)表示第二次签名值、Hv表示SM2签名算法所用的hash函数。
更为优选的,还包括:确定错误注入位置的步骤:使用相同的所述私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析,在时间轴上找到执行更新随机数k语句的位置,并记录该位置在时间轴上对应的时刻;以及,在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。或者,确定错误注入位置的步骤:通过测试量覆盖错误注入的位置,并记录该位置在时间轴上对应的时刻;以及,在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。或者,确定错误注入位置的步骤:通过功耗特征匹配产生触发,实时检测错误注入的位置,并记录该位置在时间轴上对应的时刻;以及,在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。
更为优选的,所述的第一次签名数据和第二次签名数据不相同。
更为优选的,所述签名值可用性分析的步骤中,若上述两次SM2签名算法不满足ri-ri+1=Hv(mi)-Hv(mi+1),则先变换签名数据,再返回所述获取一组签名数据的步骤。
本发明还提供了一种椭圆曲线公钥密码算法安全性测评中的错误注入系统,包括:获取一组签名数据的单元,用于使用私钥和第一次签名数据执行第一次SM2签名算法,得到第一次签名值;使用相同的所述私钥和第二次签名数据执行第二次SM2签名算法并进行错误注入,得到第二次签名值;签名值可用性分析的单元,用于在所述获取一组签名数据的单元执行的两次SM2签名算法满足ri-ri+1=Hv(mi)-Hv(mi+1)时,则所述的第一次签名值和第二次签名值为一组可用的签名值,否则所述获取一组签名数据的单元重新完成两次SM2签名算法;恢复密钥的单元,用于使用所述的一组可用签名值以及公式dA=(si-si+1)(ri+1+si+1-ri-si)-1mod n获取私钥;其中,dA表示私钥、mi表示第一次签名数据、mi+1表示第二次签名数据、(ri、si)表示第一次签名值、(ri+1、si+1)表示第二次签名值、Hv表示SM2签名算法所用的hash函数。
更为优选的,还包括:确定错误注入位置的单元,用于使用相同的所述私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析,在时间轴上找到执行更新随机数k语句的位置,记录该位置在时间轴上对应的时刻,并将所述时刻发给所述获取一组签名数据的单元;在所述获取一组签名数据的单元执行第二次SM2签名算法时,在所述时刻进行错误注入。
本发明实施例的椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统,错误注入的对象是软件算法库中随机数更新语句,而非某个特定硬件的存储单元。测评者不必再考虑硬件特性、构造等详细的设计细节,这大大降低了攻击测评的难度和成本。其次,得到的可用签名值符合SM2签名标准,签名值(ri、si),(ri+1、si+1)虽然不是随机的但是正确的,可以通过验证,两次结果都可以被外部攻击测评者获得,从而绕开了错误注入的反向校验防护。因此,本发明实施例的椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统可应用于信息安全领域对密码算法实现安全性要求较高的场合中,对SM2签名算法进行安全性测评,以提高SM2签名算法实现的安全性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例1的椭圆曲线公钥密码算法安全性测评中的错误注入方法流程图;
图2为本发明实施例2的椭圆曲线公钥密码算法安全性测评中的错误注入方法流程图;
图3为本发明实施例3的椭圆曲线公钥密码算法安全性测评中的错误注入系统结构示意图;
图4为本发明实施例4的椭圆曲线公钥密码算法安全性测评中的错误注入系统结构示意图。
具体实施方式
在安全芯片或其它安全信息载体中校验为椭圆曲线密码中针对错误注入攻击的主要防护策略。一旦发生校验错误,密码设备将进入一个安全状态,清除存储器内容,不对外输出可利用的签名结果。
上述公式1-6中,只有第6步公式6的s=(1+dA)-1·(k-rdA)使用了私钥dA。要使用该算式求得dA,需要已知其他3个变量(s、k、r),其中(r,s)是签名算法的输出,即签名值,对于测评者是已知的变量;k是算法第3步公式3中产生的随机数,每次执行签名都会更新并且存在算法内部,对于测评者来说是未知的并且每个签名都不同的变量。因此如果要求得dA,需要想办法已知或消除未知变量k值。
在密码硬件中,SM2签名算法通常由软件和底层硬件两部分实现。软件部分负责调度算法的执行流程,使得算法按上述公式1-7的顺序执行。具体每一步的计算由软件调用底层硬件模块实现。执行第3步的公式3,软件代码中会存在如下代码,由软件代码调用随机数模块GETRND生成一定范围rndrange内的随机数,然后将生成的随机数放入变量k。
k=GETRNG(rndrange)
本发明所提供的方法和系统旨在消除变量k从而推到出dA。因此,主体思路是使用相同密钥执行两次签名,采用错误注入方法使这两次签名数据不同但变量k相同,通过联立两次签名结果消除变量k得到私钥dA。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
实施例1、本实施例的椭圆曲线公钥密码算法安全性测评中的错误注入方法,参见图1所示,包括下列主要步骤:
S101、获取一组签名数据的步骤。
具体的,先固定一个私钥,即本实施例中只使用一个私钥。使用私钥执行第一次SM2签名算法,第一次签名数据mi,正确执行公式3的k=GETRNG(rndrange),k是一个随机数,得到第一次签名值(ri、si)。然后再使用私钥执行第二次SM2签名算法,令第二次签名数据mi+1(mi≠mi+1),在执行算法到公式3时进行错误注入,具体的可以采用激光、电磁等手段注入错误,例如使用激光发生器照射芯片表面。此时引起的电流毛刺有可能会打断GETRNG函数,从而导致k值未被更新,得到第二次签名值(ri+1、si+1)。
S102、签名值可用性分析的步骤。
具体的,对于测评者来说,上述两次SM2签名算法使用未知密钥相同(即固定的一个私钥),相同的未知数k,使用了不同的两个签名数据mi≠mi+1
利用公式1-5得到r=Hv(m)+x1 mod n,(x1,y1)=[k]G;
进而存在如下关系:
ri=Hv(mi)+xi mod n 公式8;
ri+1=Hv(mi+1)+xi mod n 公式9;
因此ri-ri+1=Hv(mi)-Hv(mi+1)公式10,是一个常数,测评者可以利用已知的签名数据mi,mi+1验证,若满足此关系,则判定得到一组可用的签名值(ri、si),(ri+1、si+1),可进入下一步骤,若不满足此关系,则重复步骤S101,本实施例中优选变换签名数据(也可以不变换签名数据),直到得到一组可用的签名值,变换签名数据的方式可以是两次的签名数据都变换,也可以只变换其中之一,总之需满足mi≠mi+1
S103、使用一组可用签名值恢复密钥的步骤。
由步骤S102得到的一组可用的签名值(ri、si),(ri+1、si+1)。由于两次签名使用的密钥相同,k值也相同,但两次签名数据不同,利用公式6,存在如下两个等式:
si=(1+dA)-1·(k-ridA) 公式11;
si+1=(1+dA)-1·(k-ri+1dA) 公式12;
联立公式11和公式12,可以得到
si(1+dA)+ridA=si+1(1+dA)+ri+1dA 公式13;
进而推导可以得到
dA=(si-si+1)(ri+1+si+1-ri-si)-1 mod n 公式14;
由此测评者可以获得正确私钥dA
综上,本实施例在执行第二次SM2签名算法时错误注入过程中,瞬间引入的电流有可能打断k更新,从而导致从随机数获取的k值并未保存在寄存器中。这时本该更新的寄存器中还保存着上次存放的k值,此时在计算公式6时,s=(1+dA)-1·(k-rdA)中k就成为了一个固定值而非一个随机数。对于测评者来说,一组签名(ri,si)与错误的签名(ri+1,si+1)计算过程使用了相同的k值。因此在步骤S102的验证就非常必要,只有选出使用同样k值的签名才能得到正确的私钥结果。本实施例的方法中即使校验防护措施存在,仍然可以成功实施攻击。虽然使用了错误注入方法,但主要目的是跳过了随机变量k的更新,并不会影响到签名的正确性,签名仍是可以通过校验,可以被输出到外部,测评者利用两次输出签名可以推导出正确私钥。本实施例的方法可以使用在测评中,有效抵抗签名校验防护。
实施例2、本实施例的椭圆曲线公钥密码算法安全性测评中的错误注入方法,参见图2所示,包括下列主要步骤:
S201、确定错误注入位置的步骤。
具体的,先固定一个私钥,即本实施例中只使用一个私钥。使用私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析(简单功耗分析),在时间轴上找到执行更新随机数k语句的位置,记录该时刻位置,也即记录该位置在时间轴上对应的时刻。
还可采用大数据量测试,即通过测试量保证能够覆盖到该时刻。还可采用通过功耗特征匹配产生触发,实时检测到该时刻对应的位置。
显然,确定错误注入位置的方式包括但不限于上述3种,都应在保护范围之内。
S202、获取一组签名数据的步骤。
具体的,使用私钥执行第一次SM2签名算法,第一次签名数据mi,正确执行公式3的k=GETRNG(rndrange),k是一个随机数,得到第一次签名值(ri、si)。然后再使用私钥执行第二次SM2签名算法,令第二次签名数据mi+1(mi≠mi+1),并在步骤S201中记录的时刻位置进行错误注入,具体的可以采用激光、电磁等手段注入错误,例如使用激光发生器照射芯片表面。此时引起的电流毛刺有可能会打断GETRNG函数,从而导致k值未被更新,得到第二次签名值(ri+1、si+1)。
S203、签名值可用性分析的步骤。
具体的,对于测评者来说,上述两次SM2签名算法使用未知密钥相同(即固定的一个私钥),相同的未知数k,使用了不同的两个签名数据mi≠mi+1
利用公式1-5得到r=Hv(m)+x1 mod n,(x1,y1)=[k]G;
进而存在如下关系:
ri=Hv(mi)+xi mod n 公式8;
ri+1=Hv(mi+1)+xi mod n 公式9;
因此ri-ri+1=Hv(mi)-Hv(mi+1)公式10,是一个常数,测评者可以利用已知的签名数据mi,mi+1验证,若满足此关系,则判定得到一组可用的签名值(ri、si),(ri+1、si+1),可进入下一步骤,若不满足此关系,则重复步骤S202,本实施例中优选变换签名数据,直到得到一组可用的签名值,变换签名数据的方式可以是两次的签名数据都变换,也可以只变换其中之一,总之需满足mi≠mi+1
S204、使用一组可用签名值恢复密钥的步骤。
由步骤S203得到的一组可用的签名值(ri、si),(ri+1、si+1)。由于两次签名使用的密钥相同,k值也相同,但两次签名数据不同,利用公式6,存在如下两个等式:
si=(1+dA)-1·(k-ridA) 公式11;
si+1=(1+dA)-1·(k-ri+1dA) 公式12;
联立公式11和公式12,可以得到
si(1+dA)+ridA=si+1(1+dA)+ri+1dA 公式13;
进而推导可以得到
dA=(si-si+1)(ri+1+si+1-ri-si)-1 mod n 公式14;
由此测评者可以获得正确私钥dA
综上,本实施例在执行第二次SM2签名算法时错误注入过程中,瞬间引入的电流有可能打断k更新,从而导致从随机数获取的k值并未保存在寄存器中。这时本该更新的寄存器中还保存着上次存放的k值,此时在计算公式6时,s=(1+dA)-1·(k-rdA)中k就成为了一个固定值而非一个随机数,测评者只需要定位软件实现的语句,与其他方法相比大大降低了对测评者和攻击设备的要求,提升了攻击的可行性。对于测评者来说,一组签名(ri,si)与错误的签名(ri+1,si+1)计算过程使用了相同的k值。因此在步骤S203的验证就非常必要,只有选出使用同样k值的签名才能得到正确的私钥结果。本实施例的方法中即使校验防护措施存在,仍然可以成功实施攻击。虽然使用了错误注入方法,但主要目的是跳过了随机变量k的更新,并不会影响到签名的正确性,签名仍是可以通过校验,可以被输出到外部,测评者利用两次输出签名可以推导出正确私钥。本实施例的方法可以使用在测评中,有效抵抗签名校验防护。当然本实施例的方法也可以进行变化和改动,例如:S202、获取一组签名数据的步骤执行多次后,得到多组签名数据,再去执行S203、签名值可用性分析的步骤,亦可实现本实施例的目的,因此不脱离本发明的精神和范围的变化和改动都应在保护范围之内。
实施例3、本实施例的椭圆曲线公钥密码算法安全性测评中的错误注入系统,先固定一个私钥,即本实施例中只使用一个私钥。参见图3所示,包括:获取一组签名数据的单元301、签名值可用性分析的单元302、恢复密钥的单元303。
获取一组签名数据的单元301,用于使用私钥执行第一次SM2签名算法,第一次签名数据mi,正确执行公式3的k=GETRNG(rndrange),k是一个随机数,得到第一次签名值(ri、si)。然后再使用私钥执行第二次SM2签名算法,令第二次签名数据mi+1(mi≠mi+1),在执行算法到公式3时进行错误注入,具体的可以采用激光、电磁等手段注入错误,例如使用激光发生器照射芯片表面。此时引起的电流毛刺有可能会打断GETRNG函数,从而导致k值未被更新,得到第二次签名值(ri+1、si+1)。
签名值可用性分析的单元302,对于测评者来说,上述获取一组签名数据的单元301执行的两次SM2签名算法使用未知密钥相同(即固定的一个私钥),相同的未知数k,使用了不同的两个签名数据mi≠mi+1
利用公式1-5得到r=Hv(m)+x1 mod n,(x1,y1)=[k]G;
进而存在如下关系:
ri=Hv(mi)+xi mod n 公式8;
ri+1=Hv(mi+1)+xi mod n 公式9;
因此ri-ri+1=Hv(mi)-Hv(mi+1)公式10,是一个常数,测评者可以利用已知的签名数据mi,mi+1验证,若满足此关系,则判定得到一组可用的签名值(ri、si),(ri+1、si+1),可进入下一单元,若不满足此关系,则获取一组签名数据的单元301重新完成两次SM2签名算法,直到得到一组可用的签名值,变换签名数据的方式可以是两次的签名数据都变换,也可以只变换其中之一,总之需满足mi≠mi+1
恢复密钥的单元303由签名值可用性分析的单元302得到的一组可用的签名值(ri、si),(ri+1、si+1)。由于两次签名使用的密钥相同,k值也相同,但两次签名数据不同,利用公式6,存在如下两个等式:
si=(1+dA)-1·(k-ridA) 公式11;
si+1=(1+dA)-1·(k-ri+1dA) 公式12;
联立公式11和公式12,可以得到
si(1+dA)+ridA=si+1(1+dA)+ri+1dA 公式13;
进而推导可以得到
dA=(si-si+1)(ri+1+si+1-ri-si)-1 mod n 公式14;
由此可以获得正确私钥dA
综上,本实施例在执行第二次SM2签名算法时错误注入过程中,瞬间引入的电流有可能打断k更新,从而导致从随机数获取的k值并未保存在寄存器中。这时本该更新的寄存器中还保存着上次存放的k值,此时在计算公式6时,s=(1+dA)-1·(k-rdA)中k就成为了一个固定值而非一个随机数。对于测评者来说,一组签名(ri,si)与错误的签名(ri+1,si+1)计算过程使用了相同的k值。因此在签名值可用性分析的单元302的验证就非常必要,只有选出使用同样k值的签名才能得到正确的私钥结果。本实施例的系统中即使校验防护措施存在,仍然可以成功实施攻击。虽然使用了错误注入,但主要目的是跳过了随机变量k的更新,并不会影响到签名的正确性,签名仍是可以通过校验,可以被输出到外部,测评者利用两次输出签名可以推导出正确私钥。本实施例的系统可以使用在测评中,有效抵抗签名校验防护。
实施例4、本实施例的椭圆曲线公钥密码算法安全性测评中的错误注入系统,先固定一个私钥,即本实施例中只使用一个私钥。参见图4所示,包括:确定错误注入位置的单元401、获取一组签名数据的单元402、签名值可用性分析的单元403、恢复密钥的单元404。
确定错误注入位置的单元401,用于使用私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析,在时间轴上找到执行更新随机数k语句的位置,记录该时刻位置,也即记录该位置在时间轴上对应的时刻,并将所述时刻、位置发给获取一组签名数据的单元402。确定错误注入位置的单元401还可采用大数据量测试,即通过测试量保证能够覆盖到该时刻。确定错误注入位置的单元401还可采用通过功耗特征匹配产生触发,实时检测到该时刻对应的位置。显然,确定错误注入位置的单元401确定错误注入位置的方式包括但不限于上述3种,都应在保护范围之内。
获取一组签名数据的单元402,用于使用私钥执行第一次SM2签名算法,第一次签名数据mi,正确执行公式3的k=GETRNG(rndrange),k是一个随机数,得到第一次签名值(ri、si)。然后再使用私钥执行第二次SM2签名算法,令第二次签名数据mi+1(mi≠mi+1),并在确定错误注入位置的单元401发来的时刻位置进行错误注入,具体的可以采用激光、电磁等手段注入错误,例如使用激光发生器照射芯片表面。此时引起的电流毛刺有可能会打断GETRNG函数,从而导致k值未被更新,得到第二次签名值(ri+1、si+1)。
签名值可用性分析的单元403,对于测评者来说,上述获取一组签名数据的单元402执行的两次SM2签名算法使用未知密钥相同(即固定的一个私钥),相同的未知数k,使用了不同的两个签名数据mi≠mi+1
利用公式1-5得到r=Hv(m)+x1 mod n,(x1,y1)=[k]G;
进而存在如下关系:
ri=Hv(mi)+xi mod n 公式8;
ri+1=Hv(mi+1)+xi mod n 公式9;
因此ri-ri+1=Hv(mi)-Hv(mi+1)公式10,是一个常数,测评者可以利用已知的签名数据mi,mi+1验证,若满足此关系,则判定得到一组可用的签名值(ri、si),(ri+1、si+1),可进入下一单元,若不满足此关系,则获取一组签名数据的单元402变换签名数据并重新完成两次SM2签名算法,直到得到一组可用的签名值,变换签名数据的方式可以是两次的签名数据都变换,也可以只变换其中之一,总之需满足mi≠mi+1
恢复密钥的单元404由签名值可用性分析的单元403得到的一组可用的签名值(ri、si),(ri+1、si+1)。由于两次签名使用的密钥相同,k值也相同,但两次签名数据不同,利用公式6,存在如下两个等式:
si=(1+dA)-1·(k-ridA) 公式11;
si+1=(1+dA)-1·(k-ri+1dA) 公式12;
联立公式11和公式12,可以得到
si(1+dA)+ridA=si+1(1+dA)+ri+1dA 公式13;
进而推导可以得到
dA=(si-si+1)(ri+1+si+1-ri-si)-1 mod n 公式14;
由此可以获得正确私钥dA
综上,本实施例在执行第二次SM2签名算法时错误注入过程中,瞬间引入的电流有可能打断k更新,从而导致从随机数获取的k值并未保存在寄存器中。这时本该更新的寄存器中还保存着上次存放的k值,此时在计算公式6时,s=(1+dA)-1·(k-rdA)中k就成为了一个固定值而非一个随机数,测评者只需采用确定错误注入位置的单元401定位软件实现的语句,与其他系统相比大大降低了对测评者和攻击设备的要求,提升了攻击的可行性。对于测评者来说,一组签名(ri,si)与错误的签名(ri+1,si+1)计算过程使用了相同的k值。因此在签名值可用性分析的单元403的验证就非常必要,只有选出使用同样k值的签名才能得到正确的私钥结果。本实施例的系统中即使校验防护措施存在,仍然可以成功实施攻击。虽然使用了错误注入,但主要目的是跳过了随机变量k的更新,并不会影响到签名的正确性,签名仍是可以通过校验,可以被输出到外部,测评者利用两次输出签名可以推导出正确私钥。本实施例的系统可以使用在测评中,有效抵抗签名校验防护。当然本实施例的系统也可以进行变化和改动,例如:获取一组签名数据的单元402执行多次后,得到多组签名数据,再去执行签名值可用性分析的单元403,亦可实现本实施例的目的,因此不脱离本发明的精神和范围的变化和改动都应在保护范围之内。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,包括:
获取一组签名数据的步骤:使用私钥和第一次签名数据执行第一次SM2签名算法,得到第一次签名值;使用相同的所述私钥和第二次签名数据执行第二次SM2签名算法并进行错误注入,得到第二次签名值;
签名值可用性分析的步骤:若上述两次SM2签名算法满足
ri-ri+1=Hv(mi)-Hv(mi+1),则所述的第一次签名值和第二次签名值为一组可用的签名值,否则返回所述获取一组签名数据的步骤;
使用所述的一组可用签名值恢复密钥的步骤:
dA=(si-si+1)(ri+1+si+1-ri-si)-1mod n;
其中,dA表示私钥、mi表示第一次签名数据、mi+1表示第二次签名数据、(ri、si)表示第一次签名值、(ri+1、si+1)表示第二次签名值、Hv表示SM2签名算法所用的hash函数。
2.如权利要求1所述的椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,还包括:
确定错误注入位置的步骤:使用相同的所述私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析,在时间轴上找到执行更新随机数k语句的位置,并记录该位置在时间轴上对应的时刻;以及,
在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。
3.如权利要求1所述的椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,还包括:
确定错误注入位置的步骤:通过测试量覆盖错误注入的位置,并记录该位置在时间轴上对应的时刻;以及,
在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。
4.如权利要求1所述的椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,还包括:
确定错误注入位置的步骤:通过功耗特征匹配产生触发,实时检测错误注入的位置,并记录该位置在时间轴上对应的时刻;以及,
在所述获取一组签名数据的步骤中执行第二次SM2签名算法时,在所述时刻进行错误注入。
5.如权利要求1所述的椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,所述的第一次签名数据和第二次签名数据不相同。
6.如权利要求1所述的椭圆曲线公钥密码算法安全性测评中的错误注入方法,其特征在于,所述签名值可用性分析的步骤中,若上述两次SM2签名算法不满足
ri-ri+1=Hv(mi)-Hv(mi+1),则先变换签名数据,再返回所述获取一组签名数据的步骤。
7.一种椭圆曲线公钥密码算法安全性测评中的错误注入系统,其特征在于,包括:
获取一组签名数据的单元,用于使用私钥和第一次签名数据执行第一次SM2签名算法,得到第一次签名值;使用相同的所述私钥和第二次签名数据执行第二次SM2签名算法并进行错误注入,得到第二次签名值;
签名值可用性分析的单元,用于在所述获取一组签名数据的单元执行的两次SM2签名算法满足ri-ri+1=Hv(mi)-Hv(mi+1)时,则所述的第一次签名值和第二次签名值为一组可用的签名值,否则所述获取一组签名数据的单元重新完成两次SM2签名算法;
恢复密钥的单元,用于使用所述的一组可用签名值以及公式dA=(si-si+1)(ri+1+si+1-ri-si)-1mod n获取私钥;
其中,dA表示私钥、mi表示第一次签名数据、mi+1表示第二次签名数据、(ri、si)表示第一次签名值、(ri+1、si+1)表示第二次签名值、Hv表示SM2签名算法所用的hash函数。
8.如权利要求7所述的椭圆曲线公钥密码算法安全性测评中的错误注入系统,其特征在于,还包括:
确定错误注入位置的单元,用于使用相同的所述私钥执行SM2签名算法时,采集并保存SM2签名算法的功耗波形,通过SPA分析,在时间轴上找到执行更新随机数k语句的位置,记录该位置在时间轴上对应的时刻,并将所述时刻发给所述获取一组签名数据的单元;
在所述获取一组签名数据的单元执行第二次SM2签名算法时,在所述时刻进行错误注入。
CN202010662468.2A 2020-07-10 2020-07-10 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统 Active CN111835518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010662468.2A CN111835518B (zh) 2020-07-10 2020-07-10 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010662468.2A CN111835518B (zh) 2020-07-10 2020-07-10 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统

Publications (2)

Publication Number Publication Date
CN111835518A true CN111835518A (zh) 2020-10-27
CN111835518B CN111835518B (zh) 2024-02-23

Family

ID=72901148

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010662468.2A Active CN111835518B (zh) 2020-07-10 2020-07-10 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统

Country Status (1)

Country Link
CN (1) CN111835518B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113037495A (zh) * 2021-03-03 2021-06-25 中国科学院软件研究所 一种椭圆曲线签名算法的安全评估方法
CN113055189A (zh) * 2021-06-02 2021-06-29 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质
CN113158176A (zh) * 2021-06-02 2021-07-23 工业信息安全(四川)创新中心有限公司 基于sm2签名的公钥解析方法、装置、设备及存储介质
CN114499860A (zh) * 2022-03-22 2022-05-13 深圳壹账通智能科技有限公司 签名公钥压缩方法、装置、计算机设备及存储介质
WO2024036833A1 (zh) * 2022-08-18 2024-02-22 深圳先进技术研究院 攻击椭圆曲线签名算法的方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101513012B1 (ko) * 2013-12-19 2015-04-17 호서대학교 산학협력단 오류 주입과 전력 분석을 조합한 공격에 강인한 멱승 방법
CN104836808A (zh) * 2015-05-12 2015-08-12 中国科学院软件研究所 基于改进差分错误攻击的sm2签名算法安全性验证方法
CN104836670A (zh) * 2015-05-12 2015-08-12 中国科学院软件研究所 一种基于随机数未知的sm2签名算法安全性验证方法
CN109600232A (zh) * 2018-12-05 2019-04-09 北京智慧云测科技有限公司 针对sm2签名算法的攻击验证、防护方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101513012B1 (ko) * 2013-12-19 2015-04-17 호서대학교 산학협력단 오류 주입과 전력 분석을 조합한 공격에 강인한 멱승 방법
CN104836808A (zh) * 2015-05-12 2015-08-12 中国科学院软件研究所 基于改进差分错误攻击的sm2签名算法安全性验证方法
CN104836670A (zh) * 2015-05-12 2015-08-12 中国科学院软件研究所 一种基于随机数未知的sm2签名算法安全性验证方法
CN109600232A (zh) * 2018-12-05 2019-04-09 北京智慧云测科技有限公司 针对sm2签名算法的攻击验证、防护方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
史汝辉;李增局;杜磊;彭乾;徐九八;: "一种针对SM2解密算法的侧信道攻击方法", 密码学报, no. 05 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113037495A (zh) * 2021-03-03 2021-06-25 中国科学院软件研究所 一种椭圆曲线签名算法的安全评估方法
CN113037495B (zh) * 2021-03-03 2022-05-24 中国科学院软件研究所 一种椭圆曲线签名算法的安全评估方法
CN113055189A (zh) * 2021-06-02 2021-06-29 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质
CN113158176A (zh) * 2021-06-02 2021-07-23 工业信息安全(四川)创新中心有限公司 基于sm2签名的公钥解析方法、装置、设备及存储介质
CN113055189B (zh) * 2021-06-02 2021-08-10 工业信息安全(四川)创新中心有限公司 Sm2数字签名验证失败原因判定方法、装置、设备和介质
CN113158176B (zh) * 2021-06-02 2022-08-02 工业信息安全(四川)创新中心有限公司 基于sm2签名的公钥解析方法、装置、设备及存储介质
CN114499860A (zh) * 2022-03-22 2022-05-13 深圳壹账通智能科技有限公司 签名公钥压缩方法、装置、计算机设备及存储介质
WO2024036833A1 (zh) * 2022-08-18 2024-02-22 深圳先进技术研究院 攻击椭圆曲线签名算法的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111835518B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
CN111835518B (zh) 椭圆曲线公钥密码算法安全性测评中的错误注入方法及系统
Bruinderink et al. Differential fault attacks on deterministic lattice signatures
EP3217307B1 (en) Method of testing the resistance of a circuit to a side channel analysis of second order or more
US9400636B2 (en) Apparatus and method for calculating a result in a scalar multiplication
US20050021990A1 (en) Method for making secure a secret quantity
D'Anvers et al. Higher-order masked ciphertext comparison for lattice-based cryptography
KR20100113130A (ko) 비대칭 암호화를 위한 대응조치 방법 및 디바이스
CN109428707A (zh) 测试电路对侧信道分析的抵抗的方法
Campos et al. Trouble at the CSIDH: protecting CSIDH with dummy-operations against fault injection attacks
Aulbach et al. Separating Oil and Vinegar with a Single Trace: Side-Channel Assisted Kipnis-Shamir Attack on UOV
Barenghi et al. A novel fault attack against ECDSA
Berzati et al. Exploiting intermediate value leakage in dilithium: a template-based approach
CN106357378B (zh) 用于sm2签名的密钥检测方法及其系统
Qiao et al. Practical public template attacks on CRYSTALS-dilithium with randomness leakages
US20160043863A1 (en) Elliptic curve encryption method comprising an error detection
Paulsrud A side channel attack on a higher-order masked software implementation of saber
Cao et al. Two lattice-based differential fault attacks against ECDSA with w NAF algorithm
Jayasena et al. TVLA*: Test Vector Leakage Assessment on Hardware Implementations of Asymmetric Cryptography Algorithms
US11606195B2 (en) Method of verifying integrity of a pair of cryptographic keys and cryptographic device
Smith et al. Methodology for simulated power analysis attacks on aes
CN113037495B (zh) 一种椭圆曲线签名算法的安全评估方法
Wang et al. Single-Trace Side-Channel Attacks on CRYSTALS-Dilithium: Myth or Reality?
Ngo et al. Higher-Order Boolean Masking Does Not Prevent Side-Channel Attacks on LWE/LWR-based PKE/KEMs
CN114095395B (zh) 对故障注入产生的错误数据进行分析的方法、装置及介质
Jin et al. Novel key recovery attack on secure ECDSA implementation by exploiting collisions between unknown entries

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