CN109600232B - 针对sm2签名算法的攻击验证、防护方法及装置 - Google Patents
针对sm2签名算法的攻击验证、防护方法及装置 Download PDFInfo
- Publication number
- CN109600232B CN109600232B CN201811484013.5A CN201811484013A CN109600232B CN 109600232 B CN109600232 B CN 109600232B CN 201811484013 A CN201811484013 A CN 201811484013A CN 109600232 B CN109600232 B CN 109600232B
- Authority
- CN
- China
- Prior art keywords
- signature
- addition
- random number
- attack
- verification
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开针对SM2签名算法的攻击验证、防护方法及装置。该攻击验证方法在SM2签名算法的加法位置进行错误注入攻击,该防护方法对随机数k参与的加减法过程进行防护。针对SM2签名算法的攻击验证装置包括攻击模块,针对SM2签名算法的防护装置包括防护模块。本发明发现现有技术中的防护措施忽略了在计算s时对随机数k的保护,无论是原始的公式k‑r*dA,还是变形后的公式r+k,都存在一个有随机数k参与的加减法,而现有的防护技术都没有对这个地方进行保护,因而使得目前的SM2加密算法存在一定的风险漏洞,本发明提出的防护方法可有效对抗相应的攻击手段,防止信息泄露。
Description
技术领域
本发明涉及计算机加密技术领域,具体涉及一种针对SM2签名算法的攻击验证、防护方法及装置。
背景技术
1985年,Neal Koblitz和Victor Miller分别独立地提出了利用椭圆曲线设计公钥密码体制的问题。1990年以后,椭圆曲线密码(Elliptic Curve Cryptography简称ECC)开始得到商业界的认可,公认的标准化组织制定了椭圆曲线密码协议。ECC和RSA都是依赖于离散对数的计算困难性(简称DLP问题),设G为一个有限ABEL加法群,假定g为G的某个元,a为任意的整数,如果已知g及ag,如何求出整数a来的问题在数学上称为离散对数问题。离散对数问题又可细分为两类,一类为某个有限域上的离散对数问题(RSA算法);一类为椭圆曲线上的离散对数问题(ECC算法)。两者比较,后一类问题求解更为困难些。
国密SM2椭圆曲线公钥密码算法是非对称密码算法,是基于ECC算法的非对称算法。由国家密码管理局于2010年12月17日发布。目前,各行各业都在大力推广商用国密算法的使用,尤其是在金融、社保等关系国计民生的行业,因此SM2算法是否存在可攻击的漏洞以及如何进行安全防护,是本领域技术人员研究的重点。
目前,主要的攻击方法包括能量分析攻击、故障注入攻击和针对分组密码故障攻击等。其中能量分析攻击的基本思想是通过分析密码设备的能量消耗获得其密钥。本质上,这种攻击利用了两类能量消耗依赖性:数据依赖性和操作依赖性,即密码设备的瞬时能量消耗依赖于设备所处理的数据以及设备所进行的操作。能量分析攻击分为简单能量分析(SPA)和差分能量分析(DPA)。SPA是一种能够对密码算法执行过程中所采集到的能量消耗信息进行直接分析的技术,密码设备中的每一个算法都有一定的执行顺序。算法定义的操作被翻译成设备所支持的指令。若是攻击者对被攻击设备中密码算法的具体实现有详细的认识,那么从能量迹上可以区分出每一个操作指令对应的功耗曲线。即SPA攻击主要沿时间轴来分析设备的能量消耗。攻击者试图在单条能量迹中找到某种模式或与模板进行匹配。如果仅当密钥的某一比特为1时执行某一个特定的指令,同时仅当密钥的某一比特为0时执行另外一个指令,那么通过查看能量迹中所体现的指令序列,就可以推断出密钥。
故障注入攻击是在合适的时间改变密码芯片的一些工作条件使得芯片运行的中间状态发生变化,进而导致输出错误或者旁路泄露,攻击者利用这些信息实施分析进而攻击出密钥。针对分组密码故障攻击主要分为差分故障分析DFA、安全错误分析SEA和碰撞故障分析CFA及其延伸的无效故障分析IFA。
在目前的SM2签名算法中,s的计算过程为:s=((1+dA)-1·(k-r·dA))modn;实现计算s的伪代码如下:
temp1=r*dA;
temp1=k-temp1;
temp2=(1+dA)-1;
s=temp1*temp2.
可见,SM2签名算法中,只有在计算s的时候用到了私钥dA,计算s的方程中只有两个未知数,k和dA。在计算k倍点时,如果不对k进行防护,那么SPA攻击可以获取k的值,那么私钥dA就可以被计算出来。因此,现有技术中对应的防护为:通过设计改变k倍点的算法(如梳妆算法,在雅可比坐标系下计算等),或者对k进行掩码防护,使得在计算K倍点的过程中无法对k进行SPA攻击,从而在计算s时,无法获取k的值,也就无法获取私钥。因为k是个随机数,所以每次SM2签名时,k的值都不一样,无法确定中间值,从而无法对k进行DPA攻击;
可以看到,计算s时,有一个乘法是r*dA,这就导致了典型的DPA风险。这个过程同样存在错误注入的风险。在签名的时候将dA的最后一个字节改变,成为dA’,然后进行签名,此时生成的r是对的,s变为s’,s’=(1+dA)-1*(k-r*dA’),验签时,s’G+t’PA≠kG,s’G+t’PA=(x1’,y1’)
s’G+t’PA=s’G+(r+s’)dA*G
=s’(1+dA)G+r*dA*G
=(1+dA)-1*(k-r*dA’)*(1+dA)*G+r*dA*G
=kG+r*(dA-dA’)*G
=(x1’,y1’)
dA和dA’只有一个字节的差距,假设dA的最后一个字节为d1d0,那么差的取值范围是[0,d1d0]U[d1d0-ff,-1]后面区间为负值,改为[p+d1d0-ff,p-1],所以在功耗曲线上会有两个明显的区间,从而可以获取区间边界的值,遍历一个字节需要256次,可以求出正确的差,然后进行多次签名,统计差出现的范围,得到边界值,就可以求出dA的最后一个字节。为应对原始公式s=(1+dA)-1*(k-r*dA)所存在的典型DPA风险,现有技术中将该公式变形为s=(1+dA)-1*(r+k)-r来防御这种攻击,计算s公式等价变形过程如下:
s=(1+dA)-1*(k-r*dA)mod N
=(1+dA)-1*k-(1+dA)-r*dA*(1+dA)-1mod N
=(1+dA)-1*k-r*(dA+1-1)*(1+dA)-1mod N
=(1+dA)-1*k-r+r*(1+dA)-1mod N
=(1+dA)-1*(k+r)-r mod N
此时,k+r是随机数,攻击者不知道,所以无法推测出dA。为防止攻击者得到任何与私钥相关的数据,厂商在计算s时,重新导入私钥dA,对dA参与计算的中间值进行重新计算,比较两次结果是否相同,进行校验。由此,现有技术中SM2签名中s的实现(带防护)过程为:
temp1=r+k;
temp2=(1+dA)-1;
temp3=temp1*temp2;
s1=temp3-r;
重新导入dA,记为dA2;
temp4=(1+dA2)-1;
temp5=temp1*temp4;
s2=temp5-r;
比较s1?=s2,相等,输出;不等,返回错误。
采取上述防护措施防护后的SM2算法是否仍然存在安全漏洞,以及对可能存在的漏洞如何防护以提升加密安全性,为本领域技术人员需要继续解决的技术问题。
发明内容
有鉴于此,本发明实施例的目的在于,提出一种针对SM2签名算法的攻击验证、防护方法及装置,以进一步提升SM2算法的加密安全性。
基于上述目的,本发明实施例的第一个方面,提供了针对SM2签名算法的攻击验证方法,包括步骤:
在SM2签名算法的加法位置进行错误注入攻击。
可选的,在SM2签名算法的加法位置进行错误注入攻击包括步骤:
测量得到SM2签名的能量迹,即功耗波形;
通过SPA分析,找到计算temp1的加法过程在所述功耗波形上的位置,记录该位置对应的时间点作为触发时间点;
在所述触发时间点进行激光注入,干扰所述加法过程;
在所述触发时间点重复进行激光注入,得到错误的数据。
可选的,得到错误的数据之后,包括步骤:
对所述错误的数据进行分析,得到的错误数据中r会出现一定值,且该定值为SM2签名所需的明文的哈希值e,即r=e。
本发明实施例的第二个方面,提出一种针对SM2签名算法的攻击验证装置,包括:
攻击模块,用于在SM2签名算法的加法位置进行错误注入攻击。
可选的,攻击模块,包括:
测量单元,用于测量得到SM2签名的能量迹,即功耗波形;
分析单元,用于通过SPA分析,找到计算temp1的加法过程在所述功耗波形上的位置,记录该位置对应的时间点作为触发时间点;
干扰单元,用于在所述触发时间点进行激光注入,干扰所述加法过程;并在所述触发时间点重复进行激光注入,得到错误的数据。
本发明实施例的第三个方面,还提出一种针对SM2签名算法的防护方法,包括步骤:
对随机数k参与的加减法过程进行防护。
可选的:
对随机数k参与的加减法过程进行防护,包括步骤:在计算完签名结果s以后,从内存中重新导入随机数k和私钥dA,进行签名结果s的第二次计算,将两次计算结果进行对比校验;
和/或,对随机数k参与的加减法过程进行防护,包括步骤:在签名完以后直接进行验签校验,使私钥dA不被泄露;
和/或,对随机数k参与的加减法过程进行防护,包括步骤:针对寄存器的值没有被覆盖的情况,使存放加减法结果的寄存器在计算加减法之前存放随机数。
可选的,在计算完签名结果s以后,从内存中重新导入随机数k和私钥dA,进行签名结果s的第二次计算,将两次计算结果进行对比校验,具体包括:
(1)置M=ZA//M;
(2)计算e=Hv(M);
(3)用随机数发生器产生随机数k∈[1,n-1];
(4)计算椭圆曲线点(x1,y1)=[k]G;
(5)计算r=(e+x1)modn,若r=0或r+k=n则返回(3);
(6)计算s=(1+dA)-1·(k+r)-r modn,若s=0则返回(3);
(7)重新从内存中导入k和dA,记为k’和dA’,再次计算
s’=(1+dA’)-1·(k’+r)-r modn
(8)比较s是否等于s’:
若s=s’,签名成功,输出<r,s>;
若s≠s’,签名失败,返回错误。
可选的,在签名完以后直接进行验签校验,使私钥dA不被泄露,具体包括:
进行SM2签名,得到签名结果r’,s’;
计算t=(r’+s’)mod n,若t=0,则验证不通过;
计算椭圆曲线点(x′1,y′1)=[s′]G+[t]PA;
计算R=(e’+x1’)modn,检验R=r’是否成立,若成立则验证通过;否则验证不通过。
本发明实施例的第四个方面,还提出一种针对SM2签名算法的防护装置,包括防护模块,用于对随机数k参与的加减法过程进行防护。
从上面所述可以看出,本发明实施例提出一种针对SM2签名算法的攻击验证、防护方法及装置。本发明发现现有技术中的防护措施忽略了在计算s时对随机数k的保护,无论是原始的公式k-r*dA,还是变形后的公式r+k,都存在一个有随机数k参与的加减法,而现有的防护技术都没有对这个地方进行保护,当采用本发明提出的攻击方法进行攻击时,即在加法计算位置进行错误注入攻击,加法很容易被跳过,对应存放加法结果的寄存器的值不会发生改变,仍是最近一次的值,并且这种错误不会被发现,即可以通过校验,由此验证了现有技术防护后的SM2算法仍然存在漏洞;针对该漏洞,本发明还提出了相应的防护方法,进一步提升了SM2算法的加密安全性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,而非对本发明的限制。
图1为本发明一种针对SM2签名算法的攻击验证方法的一个实施例的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供了一种针对SM2签名算法的攻击验证方法,包括步骤:在SM2签名算法的加法位置进行错误注入攻击。
在加法计算位置进行错误注入攻击,加法很容易被跳过,对应存放加法结果的寄存器的值不会发生改变,仍是最近一次的值。并且这种错误不会被发现,即可以通过校验。这说明现有技术中防护后的SM2加密算法存在安全风险。
实施例2
本发明实施例2提供针对SM2签名算法的攻击验证方法的一个优选实施例。参见图1所示,在该实施例中,攻击验证方法包括步骤:
S201,测量得到SM2签名的能量迹,即功耗波形;
S202,通过SPA分析,找到计算temp1=k+r在功耗波形上的时间位置;
S203,在这一时间位置进行激光的错误注入;
S204,在同一时间重复注入,得到错误的数据。
对错误的数据进行初步分析,得到的错误数据中r会出现特殊的定值,且该定值为SM2签名所需的明文的哈希值e,即r=e。SM2计算r的公式为r=x1+e,表明攻击使得这个加法被绕过去,存放r的这个寄存器的值在计算完加法以后并没有改变,仍是上一次存放的值e。重复实验,得到大量数据后分析发现,temp1=k+r这个加法同样可以被跳过,出现同样的错误模型。
对有k参与的加法进行错误注入攻击,有可能在计算s时,使得k+r的值变为“特殊的值”,即加法的结果可能并不被保存下来或者没有进行加法运算(加法被跳过),本该存放和的寄存器的值仍然是上一次存放的值,k没有参与计算s的过程。如果该寄存器原来存的值是算法参数或者明文等已知的数值,而并非随机的不可知的数,对现有技术中SM2签名中s的实现方式而言,temp1就是个已知的数,由于s=(1+dA)-1*temp1-r,temp1已知,r已知,s已知,私钥dA可以求出,存在安全风险。
作为攻击者而言,并不知道中间值的数值,也不知道寄存器的存放情况。但是,攻击者拥有数据r和s,并且知道计算s的流程,如现有技术中带防护的SM2签名中s的实现流程,s=(1+dA)-1*temp1-r(这里用temp1表示r+k的结果,即“和”,其中temp1=r+k,为表示该加法结果的变量,temp1的值即r+k的值;针对原始公式s=(1+dA)-1*(k-r*dA),temp1也可用来表示k-r*dA的减法结果,即“差”,temp1为用于表示加法结果或者减法结果的变量)。攻击者针对以上新的错误模型进行多次错误注入攻击,即针对该加法结果或者减法结果temp1进行攻击,得到多组s和r的值,接下来攻击者可以对temp1的值进行猜测,假定temp1的值为椭圆曲线参数a,b,p,xG,yG,或者蒙哥马利乘法参数,或者明文r等等已知的值。攻击者对所有可能的情况进行遍历计算,如果设计者在设计程序时,存放temp1的寄存器的上一次所放的值正是猜测值中的其中一个,那么攻击者猜测计算dA,如果出现两个相同的dA值,那么这个dA值就是正确的私钥。
在SM2签名算法中,以上分析的算法安全风险之所以存在,攻击者之所以可以攻击成功,是因为随机数k作为一个不可预知数,在原本的算法中是用来保护私钥的,因为不知道随机数k的值,从而无法得到私钥相关信息。但是,通过对随机数k参与的加减法计算进行攻击,使得计算s的过程中,没有随机数k的参与,那么即便不知道k的值,也可以进行攻击,得到密钥。也就是说,现有技术中原始公式s=(1+dA)-1*(k-r*dA)以及变形后的公式s=(1+dA)-1*(r+k)-r都有随机数k参与的加减法运算,即使公式变形也无法防护本发明提出的上述攻击方案。
实施例3
本发明实施例3提供一种针对SM2签名算法的攻击验证装置,包括攻击模块,用于在SM2签名算法的加法位置进行错误注入攻击。
作为一种优选方案,该攻击模块,包括:
测量单元,用于测量得到SM2签名的能量迹,即功耗波形;
分析单元,用于通过SPA分析,找到计算temp1的加法过程在所述功耗波形上的位置,记录该位置对应的时间点作为触发时间点;
干扰单元,用于在触发时间点进行激光注入,干扰加法过程;并在触发时间点重复进行激光注入,得到错误的数据。
实施例4
本发明实施例4提供针对SM2签名算法的防护方法,用于避免本发明实施例1-3所发现的安全风险,该防护方法包括步骤:对随机数k参与的加减法过程进行防护。
解决现有技术SM2签名算法安全漏洞的关键是要对随机数k参与的加减法的过程进行保护,而现有的技术手段都没有在对随机数k参与计算s的过程中对k进行防护校验。
实施例5
本发明实施例5提供针对SM2签名算法的防护方法的一个优选实施例。
在该优选实施例中,采取重复导入计算的防护措施:在计算完s以后,从内存中重新导入随机数k和私钥dA,进行s的第二次计算,将两次计算结果进行对比校验,防止dA和k出现问题。
具体地,该防护措施包括:
设待签名的消息为M,为了获取消息M的数字签名(r,s),作为签名者的用户A应实现以下运算步骤:
(1):置M=ZA//M;
(2):计算e=Hv(M);
(3):用随机数发生器产生随机数k∈[1,n-1];
(4):计算椭圆曲线点(x1,y1)=[k]G;
(5):计算r=(e+x1)mod n,若r=0或r+k=n则返回步骤(3);
(6):计算s=(1+dA)-1·(k+r)-r mod n,若s=0则返回(3);
(7):重新从内存中导入k和dA,记为k’和dA’,再次计算s’=(1+dA’)-1·(k’+r)-rmodn
(8):比较s是否等于s’:
若s=s’,签名成功,输出<r,s>;
若s≠s’,签名失败,返回错误。
其中,M为待签名的消息,ZA为用户A的杂凑值,e为M的哈希值,Hv(M)为哈希函数,G为椭圆曲线的基点,[k]G为计算椭圆曲线多倍点,(x1,y1)为计算出的椭圆曲线点的坐标,r是签名结果之一,s是另一个签名结果,dA是私钥,mod即求余函数,n指椭圆曲线基点G的阶。
需要说明的是,采用该种防护方案,可以在计算完r之后,选取计算s过程中产生的中间值进行第二次计算,不必非要在计算完s后进行校验,本领域技术人员可根据实际情况加以防护。
若是在计算r+k的过程中出现上述错误模型,那么重新导入随机数k进行计算,就会发现两次的计算结果不同,从而计算出的两个s不同,那么无法通过校验,攻击者就得不到有效数据。可见,采用本实施例防护措施,可有效减少相应的风险,提升SM2签名算法的安全性。
实施例6
本发明实施例6提供针对SM2签名算法的防护方法的另一个实施例。
当对算法性能要求不是很高时,本发明提出一种相对更安全的防护措施是在签名完以后直接进行验签校验,从而保证私钥不被泄露。
具体地,校验部分进行SM2验签的防护措施:
按照原本的流程进行SM2签名,得到签名结果r”,s”;这里原本的流程既可以是标准规范的原始流程,也可以是为应对DPA风险对计算s(在本实施例中为s”)公式等价变形后的流程。
计算t=(r”+s”)mod n,若t=0,则验证不通过;
计算椭圆曲线点(x1’,y1’)=[s”]G+[t]PA;该式计算了两个椭圆曲线多倍点,然后再进行一次椭圆曲线的点加,得到的结果还是椭圆曲线上的某个点,(x1’,y1’)就是这个点的坐标值;
计算R=(e’+x1’)modn,检验R=r”是否成立,若成立则验证通过;否则验证不通过。
其中,(x1’,y1’)为计算出的椭圆曲线点的坐标,[s”]G和[t]PA均为椭圆曲线多倍点的计算,其中[s”]G即s”个G点相加,[t]PA即t个PA点相加,G是椭圆曲线上的基点,PA为公钥,mod即求余函数,n指椭圆曲线基点G的阶。
防护效果:若是在计算r+k的过程中出现上述错误模型,那么得到的s”就是错误的,进而x1’的值就是错误的,所以R的值就不等于签名结果的r”,校验就无法通过,攻击者就得不到有效数据。
实施例7
本发明实施例7提供针对SM2签名算法的防护方法的再一个实施例。
在该实施例中,提出针对寄存器的防护措施:针对寄存器的值没有被覆盖的情况,可以将存放加减法结果的寄存器进行“特殊存放”,即可以在计算加减法之前存放随机数。
具体地,在存放temp1的寄存器可以在计算之前存放随机数,芯片内有随机数模块,产生随机数后,将随机数搬移到寄存器中。如此可防止计算过程被跳过后,得出寄存器的值。
实施例8
本发明实施例8提供一种针对SM2签名算法的防护装置,该防护装置包括防护模块,用于对随机数k参与的加减法过程进行防护。
作为一种优选方案,该防护模块包括重复导入单元、验签校验单元和寄存器防护单元。
重复导入单元,用于在计算完签名结果s以后,从内存中重新导入随机数k和私钥dA,进行签名结果s的第二次计算,将两次计算结果进行对比校验。
验签校验单元,用于在签名完以后直接进行验签校验,使私钥dA不被泄露。
寄存器防护单元,用于针对寄存器的值没有被覆盖的情况,使存放加减法结果的寄存器在计算加减法之前存放随机数。
综上,本发明分析SM2签名实现的安全性,是否存在密钥泄露的风险并给出防护措施,首先提出了一种攻击方法,通过该攻击方法验证了现有技术中采取防护措施后的SM2算法仍然存在漏洞;其次提出了针对该漏洞的防护措施,通过相应的防护措施提升了SM2签名算法的安全性,保证人民财产安全。
此外,典型地,本公开所述的装置、设备等可为各种电子终端设备,例如手机、个人数字助理(PDA)、平板电脑(PAD)、智能电视等,也可以是大型终端设备,如服务器等,因此本公开的保护范围不应限定为某种特定类型的装置、设备。本公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。
此外,根据本公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本公开的方法中限定的上述功能。
此外,上述方法步骤以及***单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
此外,应该明白的是,本文所述的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接RambusRAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外先、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
公开的示例性实施例,但是应当注公开的示例性实施例,但是应当注意,在不背离权利要求限定的本公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本公开的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (4)
1.针对SM2签名算法的攻击验证和防护方法,其特征在于,包括步骤:
在SM2签名算法的加法位置进行错误注入攻击,然后对随机数k参与的加减法过程进行防护;
其中,在SM2签名算法的加法位置进行错误注入攻击包括步骤:
测量得到SM2签名的能量迹,即功耗波形;
通过SPA分析,找到计算temp1的加法过程在所述功耗波形上的位置,记录该位置对应的时间点作为触发时间点;
在所述触发时间点进行激光注入,干扰所述加法过程;
在所述触发时间点重复进行激光注入,得到错误的数据;
然后对所述错误的数据进行分析,得到的错误数据中r会出现一定值,且该定值为SM2签名所需的明文的哈希值e,即r=e;
所述temp1=r+k,其中r是SM2签名结果的第一部分,k是SM2签名时使用的随机数,而temp1是两个值之和;
其中,对随机数k参与的加减法过程进行防护包括步骤:在计算完签名结果s以后,从内存中重新导入随机数k和私钥dA,进行签名结果s的第二次计算,将两次计算结果进行对比校验;具体包括:
(1)置M=ZA∥M;
(2)计算e=Hv(M);
(3)用随机数发生器产生随机数k∈[1,n-1];
(4)计算椭圆曲线点(x1,y1)=[k]G;
(5)计算r=(e+x1)modn,若r=0或r+k=n则返回(3);
(6)计算s=(1+dA)-1·(k+r)-rmodn,若s=0则返回(3);
(7)重新从内存中导入k和dA,记为k’和dA’,再次计算
s’=(1+dA’)-1·(k’+r)-r modn
(8)比较s是否等于s’:
若s=s’,签名成功,输出<r,s>;
若s≠s’,签名失败,返回错误;
其中,M为待签名的消息,(r,s)为消息M的数字签名,ZA为用户A的杂凑值,e为M的哈希值,Hv(M)为哈希函数,G为椭圆曲线的基点,[k]G为计算椭圆曲线多倍点,(x1,y1)为计算出的椭圆曲线点的坐标,r是签名结果之一,dA是私钥,mod即求余函数,n为椭圆曲线基点G的阶;
和/或,对随机数k参与的加减法过程进行防护,包括步骤:在签名完以后直接进行验签校验,使私钥dA不被泄露;
和/或,对随机数k参与的加减法过程进行防护,包括步骤:针对寄存器的值没有被覆盖的情况,使存放加减法结果的寄存器在计算加减法之前存放随机数。
2.根据权利要求1所述的针对SM2签名算法的攻击验证和防护方法,其特征在于,所述步骤在签名完以后直接进行验签校验,使私钥dA不被泄露,具体包括:
进行SM2签名,得到签名结果r”,s”;
计算t=(r”+s”)mod n,若t=0,则验证不通过;
计算椭圆曲线点(x1’,y1’)=[s”]G+[t]PA;
计算R=(e’+x1’)modn,检验R=r”是否成立,若成立则验证通过;否则验证不通过;
其中,(x1’,y1’)为计算出的椭圆曲线点的坐标,G是椭圆曲线上的基点,PA为公钥。
3.针对SM2签名算法的攻击验证和防护装置,其特征在于,包括:
攻击模块,用于采用权利要求1中所述方法在SM2签名算法的加法位置进行错误注入攻击;
防护模块,用于采用权利要求1中所述方法对随机数k参与的加减法过程进行防护。
4.根据权利要求3所述的攻击验证和防护装置,其特征在于,所述攻击模块,包括:
测量单元,用于测量得到SM2签名的能量迹,即功耗波形;
分析单元,用于通过SPA分析,找到计算temp1的加法过程在所述功耗波形上的位置,记录该位置对应的时间点作为触发时间点;
干扰单元,用于在所述触发时间点进行激光注入,干扰所述加法过程;并在所述触发时间点重复进行激光注入,得到错误的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811484013.5A CN109600232B (zh) | 2018-12-05 | 2018-12-05 | 针对sm2签名算法的攻击验证、防护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811484013.5A CN109600232B (zh) | 2018-12-05 | 2018-12-05 | 针对sm2签名算法的攻击验证、防护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109600232A CN109600232A (zh) | 2019-04-09 |
CN109600232B true CN109600232B (zh) | 2021-08-06 |
Family
ID=65962094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811484013.5A Active CN109600232B (zh) | 2018-12-05 | 2018-12-05 | 针对sm2签名算法的攻击验证、防护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109600232B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111211886B (zh) * | 2020-04-20 | 2020-07-14 | 成都信息工程大学 | 针对sm2解密算法的能量分析检测方法 |
CN111835518B (zh) * | 2020-07-10 | 2024-02-23 | 中金金融认证中心有限公司 | 椭圆曲线公钥密码算法安全性测评中的错误注入方法及*** |
CN112532373B (zh) * | 2020-11-24 | 2023-08-25 | 中国电力科学研究院有限公司 | 针对流密码算法的差分故障分析方法、***和存储介质 |
CN114928438A (zh) * | 2022-02-10 | 2022-08-19 | 中国科学院信息工程研究所 | 抗内存信息泄露攻击的椭圆曲线数字签名计算方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104836670A (zh) * | 2015-05-12 | 2015-08-12 | 中国科学院软件研究所 | 一种基于随机数未知的sm2签名算法安全性验证方法 |
CN104852805A (zh) * | 2015-05-11 | 2015-08-19 | 中国科学院软件研究所 | 一种抵抗基于格的错误攻击的sm2签名算法防护方法 |
CN104917608A (zh) * | 2015-05-19 | 2015-09-16 | 清华大学 | 一种密钥抗功耗攻击的方法 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108039947A (zh) * | 2017-12-05 | 2018-05-15 | 飞天诚信科技股份有限公司 | 一种利用协处理器抗攻击的sm2签名方法 |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
-
2018
- 2018-12-05 CN CN201811484013.5A patent/CN109600232B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104852805A (zh) * | 2015-05-11 | 2015-08-19 | 中国科学院软件研究所 | 一种抵抗基于格的错误攻击的sm2签名算法防护方法 |
CN104836670A (zh) * | 2015-05-12 | 2015-08-12 | 中国科学院软件研究所 | 一种基于随机数未知的sm2签名算法安全性验证方法 |
CN104917608A (zh) * | 2015-05-19 | 2015-09-16 | 清华大学 | 一种密钥抗功耗攻击的方法 |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
CN108039947A (zh) * | 2017-12-05 | 2018-05-15 | 飞天诚信科技股份有限公司 | 一种利用协处理器抗攻击的sm2签名方法 |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
Non-Patent Citations (1)
Title |
---|
Algorithm-Based Countermeasures against Power Analysis Attacks for Public-Key Cryptography SM2;Xiaowei Han;《 2014 Tenth International Conference on Computational Intelligence and Security》;20141116;正文第3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN109600232A (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109600232B (zh) | 针对sm2签名算法的攻击验证、防护方法及装置 | |
Poddebniak et al. | Attacking deterministic signature schemes using fault attacks | |
US9400636B2 (en) | Apparatus and method for calculating a result in a scalar multiplication | |
JP6366595B2 (ja) | 耐グリッチ性暗号離散対数ベースの署名のための方法及びシステム | |
CN105991292B (zh) | 用于操作安全椭圆曲线密码***的***和方法 | |
US11139971B2 (en) | Conducting a cryptographic operation | |
US11386239B2 (en) | Transition from a Boolean masking to an arithmetic masking | |
JP7123959B2 (ja) | 楕円曲線点乗算デバイス及び方法 | |
EP3457619B1 (en) | Nonce to message binding in digital signature generation | |
CN111835518B (zh) | 椭圆曲线公钥密码算法安全性测评中的错误注入方法及*** | |
EP2523098A2 (en) | Finite field crytographic arithmetic resistant to fault attacks | |
US11171780B2 (en) | Systems and methods for operating secure elliptic curve cryptosystems | |
US11824986B2 (en) | Device and method for protecting execution of a cryptographic operation | |
US20110274271A1 (en) | Countermeasure method and devices for asymmetric encryption | |
US10805090B1 (en) | Address whitelisting using public/private keys and ring signature | |
KR20110013334A (ko) | 오류 주입 공격들을 대비하여 보호되는 데이터 처리 방법 및 관련 장치 | |
WO2024036833A1 (zh) | 攻击椭圆曲线签名算法的方法、装置、设备及存储介质 | |
Zhang et al. | Side‐Channel Attacks and Countermeasures for Identity‐Based Cryptographic Algorithm SM9 | |
US10354065B2 (en) | Method for protecting data and data processing device | |
KR101665600B1 (ko) | Ecc 암호 알고리즘의 전력 충돌 공격 대응을 위한 장치 및 방법 | |
US11968290B2 (en) | Circuit compiling device and circuit evaluation device | |
US10305678B2 (en) | Imbalanced montgomery ladder | |
Lochter et al. | Twist insecurity | |
KR100875461B1 (ko) | 전력 분석 공격 방지를 위한 엔티알유 다항식 컨볼루션연산 방법 및 컴퓨터로 읽을 수 있는 기록매체 | |
CN117857005A (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 |