首页> 中国专利> 一种抵抗基于格的错误攻击的SM2签名算法防护方法

一种抵抗基于格的错误攻击的SM2签名算法防护方法

摘要

本发明公开了一种抵抗基于格的错误攻击的SM2签名算法防护方法。本方法为:1)签名者A对输入的待签名消息M进行哈希运算,并将运算结果ZA与消息M联合得到;2)对进行杂凑压缩,得到一预处理结果e;3)产生两随机数k,w;分别计算随机数k和基点G的标量乘kG,随机数w与公钥PA的标量乘wPA,然后相加得到一椭圆曲线点Q;4)计算e与点Q的坐标x1模n加得到一r值,5)代入私钥dA、k、w、r,得到签名结果s。使用本发明提出的新方法能够更有效、全面抵抗对SM2签名算法的格攻击。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-22

    授权

    授权

  • 2015-09-16

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20150511

    实质审查的生效

  • 2015-08-19

    公开

    公开

说明书

技术领域

本发明具体涉及一种抵抗基于格的错误攻击的SM2签名算法防护方法,属于信息安全技 术领域。

背景技术

自从20世纪80年代,Miller和Koblitz将椭圆曲线引入密码学,以及Lenstra提出了利 用椭圆曲线进行因数分解算法以来,椭圆曲线在密码学中的作用越来越大。ECC是基于有限 域椭圆曲线离散对数问题(ECDLP):在一个循环加法群中,G为生成元,且G的阶为n,已 知Q=kG和G,求k的值,其中Q=kG为有限域上的标量乘运算,具体为有限域上的代数运算。

若F为有限域,则至少含有两个元素,并存在一个加法+和一个乘法·运算,满足如下条 件:

1)(F,+)是一个交换群;

2)(F/{0},·)是一个交换群;

3)满足结合律:(a·b)·c=a·(b·c)加法和乘法满足分配律,即对任何 a,b,c∈R,a·(b+c)=a·b+a·c,(b+c)·a=a·b+a·c。

密码应用中最常用的有限域包括:素数域和特征为2的扩张域(二元扩域),这里主要介 绍素数域。若p是素数,F={0,1,2,…,p-1}是关于modp的+和·构成的一个有限域,记为Fp, 称为素数域(Galois域),Fp*=FP/{0}是Fp中所有非零元构成的乘法群,由于Fp*是循环群, 所以在Fp中至少存在一个元素g,使得Fp中任一非零元都可以由g的一个方幂表示,称g为 Fp*的生成元(或本原元),即Fp*=<g>,阶为p-1。

若在素数域Fp(p是大于3的素数)上的椭圆曲线方程为:

y2=x3+ax+bmodp,a、b∈Fp,且(4a3+27b2)modp≠0

则有限域Fp上椭圆曲线点集E(Fp)定义为:

E(Fp)={(x,y)|x,y∈Fp,y2=x3+ax+bmodp}∪{O},其中,O为无穷远点。

若点G∈E(Fp),且G的阶n为素数,则由G生成的循环群 <G>={O,G,2G,3G,…,(n-1)G}为E(Fp)的循环子群。椭圆曲线点集E(Fp)的元素数目用 #E(Fp)表示,称为椭圆曲线E(Fp)的阶。在ECC密码系统中,素数p、域Fp的椭圆曲线方 程、基点G及其阶n均为公开的域参数,任选私钥d∈[1,n-1],则相应的公钥P=dG。

椭圆曲线上定义的点与点加法运算使用了弦切线法则,则E(Fp)为加法交换群,无穷远 点O为单位元,P(x,y)+P(x,-y)=O。对E(Fp)上两点P、Q之和P+Q,若P≠Q,连接P、 Q的直线交E于点R',则R'关于x轴的对称点R即为P+Q之和,称为点加运算(A)。如图1 所示。

若P=Q,做P点的切线交E于点R',则R'关于x轴的对称点R即为则2P,称为点倍运 算(D)。如图2所示。

由椭圆曲线上的点加和点倍的几何意义,可以推断出E(Fp)在仿射坐标下运算法则,具 体如下:

点加:令P=(x1,y1)∈E(Fp),Q=(x2,y2)∈E(Fp),且P≠Q,则R(x3,y3)=P+Q,其中, x3=(y2-y1x2-x1)2-x2-x1,y3=(y2-y1x2-x1)(x1-x3)-y1.

点倍:令P=(x1,y1)∈E(Fp),P≠-P,则R(x3,y3)=2P,其中,x3=(3x12+a2y1)2-2x1,y3=(3x12+a2y1)(x1-x3)-y1.

因此,对于ECC中的标量乘运算Q=kG,实际上就是为k个相同点G之和,由多个点倍 和点加运算组合,kG是ECC中与密钥相关的基本运算,错误攻击和侧信道分析通常针对kG 进行。kG具有多种实现算法,其中最基本的是二进制算法。

ECC作为公钥算法,相对较传统的RSA公钥算法,在相同的安全性下,ECC算法密钥 长度短、计算数据量小、运算速度快、灵活性好,在没有协处理器的情况下,易于在芯片中 实现。另外,目前还没有找到求解ECDLP问题的有效算法,因此在算法安全性上要高于RSA 算法。ECC密码算法基于其自身特点,在许多应用中正逐渐取代了传统的RSA算法,被广泛 使用。

ECC数字签名算法是ECC公钥算法中应用中最广泛的算法之一,主要用于身份验证,由 一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公 钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。

SM2签名算法是一种ECC的数字签名算法,由国家密码管理局在2010年发布的标准, 共包括签名和验签两部分。

在签名过程(如图3所示)中,设待签名的消息为M,为了获取消息M的数字签名(r,s), 签名者A的公私钥分别为PA、dA,算法中采用的杂凑算法同样由国家密码管理局发布的SM3 杂凑算法,则签名者A应实现以下运算步骤:

1.令其中,ZA=Hv(ENTLA||IDA),IDA为签名者A的可辨别标识,ENTLA为IDA的比特长度,由两个字节表示,Hv(.)为SM3算法的哈希函数;

2.计算e=Hv(M);

3.用随机数发生器产生随机数k∈[1,n-1];

4.计算椭圆曲线点(x1,y1)=kG;

5.计算r=(e+x1)modn,若r=0或r+k=n则返回3;

6.计算s=(1+dA)-1(k-rdA)modn,若s=0则返回3;

7.输出消息M的签名(r,s)。

签名者将签名结果(r,s)和消息M发送给验签者B,已知签名者A的可辨别标识IDA, 经过杂凑运算B可得ZA=Hv(ENTLA||IDA),且采用A的公钥PA进行验签(如图4所示),具 体如下:

1.检验r∈[1,n-1]、s∈[1,n-1]是否成立,若不成立则验签失败;

2.令M=ZA||M;

3.计算.e=Hv(M).;

4.计算t=(r+s)modn,若t=0,验签失败;

5.计算椭圆曲线点(x1,y1)=sG+tPA

6.计算R=(e+x1)modn,若R≠r则验签失败,否则验签成功。

鉴于SM2签名算法的应用重要性,有必要分析其安全性。由上可知,由于私钥dA仅在 签名中被使用,因此,一般对SM2的攻击和防护都是分析签名过程中私钥dA的安全性。大多 数对其他ECC签名算法的攻击方法均可用于SM2签名算法,如对标量乘、ECDSA等的侧信 道和错误攻击方法。目前,已有文献提出了对SM2签名算法的错误攻击方法,主要包括弱曲 线和基于格的错误攻击。弱曲线错误攻击是在标量乘kG运算中对基点G注入若干比特错误变 成点G',标量乘结果Q=kG则变为Q'=kG',G'不在原曲线上,而在一个新的弱曲线上, 且G'在新曲线上的阶n'相对原来的阶n要小得多,若n'的最大素因子q的计算是可行 的,则通过解Q'=kG'可获得k的值,进而可推导出私钥dA。基于格的错误攻击方法是在标 量乘运算中注入错误,通过分析获取随机数k的部分比特,进行N次错误签名,代入签名结 果s=(1+dA)-1(k-rdA)modn中,可生成一个方程组,采用格攻击可确定私钥的dA值。相比 较弱曲线攻击,基于格的错误攻击运算速度快,模型简单,且防护相对较难,不同的错误模 型对应的防护也需相应改变,日益成为对ECC签名算法的主要攻击手段。

格是m维实数空间Rm的离散子群L,其元素β∈L为N个线性无关的向量 αi∈L(i∈{0,1,…,N-1})的线性组合,ai∈Z,Z为整数域, 则α0,…,αN-1为格L的一组基,B=[α0,…,αN-1]T为基矩阵。

格中存在两个著名的难解问题,分别为最小向量问题(SVP)和最近向量问题(CVP)。

SVP:已知格L的一组基B,在格中找到其最短非零向量v∈L,使得||v||=min{||u|||u∈L}, 其中||·||为二范数,该问题可通过LLL算法确定v的近似解。

CVP:已知格L的一组基B、任意向量u∈Rm,在格中找到距u最近的向量v∈L,满足 ||v-u||=min{||t-u|||t∈L}。CVP可由LLL算法和Babai算法在多项式时间内获得其近似解。

若对SM2签名算法实施格攻击,首先就需要转化成隐藏数问题(HNP)。若ti∈Zn是随 机均匀分布的,i∈{1,2,…,N},ui∈Zn,0<l<log2n,找到一个α∈Zn,使其满足 |αti-ui|n≤n/2l,其中|x|n=min{|x-bn||x∈Zn,b∈Z},上述即为HNP。实际上,上述不等式 等价于|αti-ui+hin|≤n/2l,其中hi是使得上述不等式成立的最小值。

HNP可转化成格中的CVP,构建(N+1)维格L,则基向量矩阵为

令目标向量u=(u1,u2,…,uN,0)、x=(h1,h2,…,hN,dA),则v=xM为格L中向量,且 v=(αt1+nh1,…,αtN+nhN,α/2l),由HNP不等式组可得为CVP问 题,求解CVP可得v,由v可确定α的值。

对于SM2签名算法,假若进行了N次签名运算,通过电磁、激光等错误诱导手段使得 每一次签名运算出现错误,从而分别获取到随机数ki的最低l位比特值ai,i∈{1,2,…,N},并 得到错误的签名结果(ri,si),可构造相应的HNP。令ki=bi2l+ai,其中bi<n/2l为未知值。 将ki代入签名中的第6步s=(1+dA)-1(k-rdA)modn可得下式:

2-l(si+ri)dA-2-l(ai-si)=bimodn

令ti=2-l(si+ri)modn、ui=2-l(ai-si)modn,从而可得:

|tidA+hin-ui|<n/2l

其中,hi是使得上述不等式成立的最小值。

上式即为HNP问题,将其转换成CVP,可求解得dA的值。对于m位的签名算法,目前 已有文献证明若已知k的l比特,需m/l条错误的签名,即可得到正确的dA。如对于256位 的SM2签名算法,若已知k的8比特,一般约需32条签名即可成功获取私钥,这在实际实验 中是非常可行的。

目前,对抵抗ECC错误攻击的防护主要包括两种,一种是验证标量乘kG输入输出点是 否是在原椭圆曲线上,这类防护主要用于抵抗弱曲线攻击和一般的差分错误攻击;还有一种 为在签名后进行验签,主要判断kG的结果是否被改变,用于检测出那些没有改变原曲线的错 误,如对ECDSA签名的基于格的错误攻击。上述这些防护措施都是从防止获取k的角度来抵 抗错误攻击。若是已知k的部分比特,上述基于格的错误攻击方法仍可采用格攻击仍可获取 私钥。

发明内容

为了抵抗SM2签名算法基于格的错误攻击,本发明提出了一种SM2签名算法的防护方 法。该方法从破坏格攻击的角度入手,在更强的攻击条件下,仍可保护私钥不被泄露。整个 签名防护方法共包括签名和验签两部分,具体如下:

1)在SM2签名生成的运算中,输入待签名的消息M,对生成的随机数k加入了一个随 机的加法掩码wdA,即k掩码后为k+wdA,其中w具有与k相同比特长的随机数,dA为签名者A的私钥,用签名者的私钥dA和公钥PA进行签名,输出签名结果(r,s)发送 给验签者B。

2)验签者B收到待验签的数据(M,(r,s))后,采用原有验签方法进行验签,验签成功。

G为SM2签名算法椭圆曲线的基点,基点G的阶为n;在签名过程中,设待签名的消息 为M,IDA为签名者A的可辨别标识,ENTLA为IDA的比特长度,由两个字节表示,Hv(.)为 SM3算法的哈希函数。为了获取消息M的数字签名(r,s),随机数k加入一个随机的加法掩 码wdA,其中w为与k比特长相同的随机数,签名者A使用公钥PA和私钥dA进行签名。则签 名者A带防护的签名生成算法(如图5所示)实现以下运算步骤:

1.输入消息M,计算ZA=Hv(ENTLA||IDA),将ZA与消息M联合为

2.采用SM3算法对进行杂凑压缩,得到预处理结果

3.用随机数发生器产生随机数k,w∈[1,n-1];

4.分别计算随机数k和基点G的标量乘kG,随机数w与公钥PA的标量乘wPA,最后将 两点相加得到椭圆曲线点Q(x1,y1)=kG+wPA

5.将预处理结果e与点Q的x坐标x1模n加,得到签名结果r=(e+x1)modn,若r=0或 r+k=n则返回3获取随机数重新计算;否则,进行步骤6;

6.代入私钥dA、k、w、r,可得到签名结果s=(1+dA)-1(k+(w-r)dA)modn,若s=0 则返回3获取随机数重新计算;

7.最后将签名结果(r,s)和消息M输出给验签者B。

带防护的签名结果(r,s)按照原SM2验签的算法进行验签,仍可验签成功。签名者将签 名结果(r,s)和消息M发送给验签者B,已知签名者A的可辨别标识IDA,经过杂凑运算验 签者B可得ZA=Hv(ENTLA||IDA),采用A的公钥PA进行以下验签。

1.检验r∈[1,n-1]、s∈[1,n-1]是否成立,若不成立则验签失败;

2.令M=ZA||M;

3.计算e=Hv(M);

4.计算t=(r+s)modn,若t=0,验签失败;

5.计算椭圆曲线点(x1,y1)=sG+tPA

6.计算R=(e+x1)modn,若R≠r则验签失败,否则验签成功。

与现有技术相比,本发明具有如下优势:

1.本发明针对SM2的错误攻击和格攻击,创新地提出了一种破坏SM2签名算法格攻击 条件的防护方法,使用本发明提出的新方法能够更有效、全面抵抗对SM2签名算法的格攻击;

2.本发明的防护方法在更强的攻击条件(已知k的部分比特),仍能保护私钥免被泄露。

3.本发明不仅可抵抗基于格的错误攻击,对于其他情况如通过能量消耗特征、模板等分 析方式获取随机数k的部分比特,仍可保护私钥免被泄露。

4.本发明仅需在签名中增加一个标量乘和一个模减运算,无需修改验签中的任何运算。

5.本发明同样可抵抗对rdA攻击点的侧信道能量分析。

附图说明

图1是椭圆曲线上点加运算几何表示图;

图2是椭圆曲线上点倍运算几何表示图;

图3是SM2签名生成流程图;

图4是SM2验签流程图;

图5是本发明中带防护的SM2签名生成流程图。

具体实施方式

下面结合附图和一个范例对本发明做进一步详细的说明,但不以任何方式限制本发明的 范围。在实施例中,通过对一个带本发明防护方法的SM2签名算法进行格攻击失败的论证和 实验为例说明本发明的有效性。

假若攻击者通过注入错误手段获知N(N=50)个带防护SM2签名算法中的随机数 ki,wi∈[1,n-1]低位的l(l=32)比特ai和ci,并获取了N个错误签名结果(ri,si), i∈{1,2,…,N}。k=bi2l+ai,w=ci2l+di,其中0<bi、di<n/2l

代入带防护的签名算法第6步s=((1+dA)-1(k+(k0-r)dA))modn可得:

2-l(ri+si-ci)dA-2-l(ai-si)=bi+didAmodn

令ti=2-l(ri+si-ci)modn,ui=2-l(ai-si)modn,则上式可转化成:

|tidA+hin-ui|=bi+didA

其中,其中hi是使得上述不等式成立的最小值。

已知0<bi、di<n/2l,由上式可知,若要满足HNP的条件,di、dA应满足不等式 bi+didA<n/2l,因此,若didA>n,HNP的条件必然被破坏。已知私钥dA<n,且一般情况 下dA的比特长略小于n的比特长,即存在一个小整数C,使得log2dA+C=log2n。若要使得 不等式didA>n成立,则需满足log2di>C。而在SM2签名算法的实际实现中,必存在di的 比特长大于C,即log2di>C,从而可得n<didA<n2/2l。因此,上述模型必然不是HNP, 不满足格攻击的条件,攻击者即使知道随机数的部分比特,仍无法从中获取私钥dA的任何信 息。

本发明验证实验采用软件仿真了带防护的SM2签名算法,得到50条签名数据,如表1 所示,共得到50个签名结果(ri,si),i∈{0,1,…,49},已知每次签名中ki和wi中的低32比特ai和ci,将求dA其转化成HNP问题进行格攻击。由于已知随机数的32比特,因此选择40条 签名数据完全大于格攻击所需签名数log2n/l=8。依次选择连续的40条数据进行格攻击,攻 击结果如表2所示,共进行了11次格攻击,每次均为40条,成功获取私钥的概率为0,因 此,该防护可以抵抗基于格的错误攻击。

表1:带防护的SM2签名结果

表2:对带防护的SM2签名算法格攻击结果

以上详细说明的具体的实施方式仅仅是为了更好了理解本发明使用的,本发明不局限于 此,本领域一般技术人员可以根据本发明的公开内容,采用其他多种实施方式来实施本发明, 凡是采用本发明的设计结构和思路的,在不脱离权利要求范围的变换和替代,都属于本发明 的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号