一种椭圆曲线签名算法的安全评估方法技术

技术编号:29047063 阅读:21 留言:0更新日期:2021-06-26 06:04
本发明专利技术公开了一种椭圆曲线签名算法的安全评估方法。本方法为:1)签名设备运行待评估的目标椭圆曲线签名算法执行签名运算,确定故障注入时间点;2)签名设备运行该目标椭圆曲线签名算法执行签名运算,每次签名运算时在故障注入时间点对签名设备的一位置区域进行故障注入,确定计数器所在位置;3)签名运算时在该计数器所在位置和确定的故障注入时间点进行故障注入,若故障注入后该计数器的存储值count

【技术实现步骤摘要】
一种椭圆曲线签名算法的安全评估方法


[0001]本专利技术涉及
信息安全,具体涉及一种对椭圆曲线签名算法的错误安全评估方法。

技术介绍

[0002]随着信息技术的发展,社会已全面进入了数字化时代。信息安全的重要性达到了前所未有的高度。密码学作为信息安全的基础,被广泛应用于金融、经济、通信、军事等各行各业。其中,由Miller和Koblitz在20世纪80年代提出的椭圆曲线密码学作为公钥密码体制的重要分支,在各个领域发挥着极其重要的作用。因此,对于椭圆曲线密码体制的安全性研究愈发重要。
[0003]随着攻击形式的多样化,除了传统的对密码体制理论上安全性的研究外,对于物理实现上安全性的研究也越来越多。故障注入攻击便是其中的一种。1996年,Boneh等人首次提出了故障注入攻击的概念,该方法利用密码运行过程中的错误信息,获得RSA公钥算法中的秘密信息。此后,研究人员在此基础上,提出了各种各样的故障攻击方法,对常见的密码体制,如DES,AES,SM4,ECC,SM2等都存在一定的威胁。因此,利用故障注入攻击方法对密码算法的安全性进行评估是常用的一种安全评估手段。
[0004]其中,由于椭圆曲线密码体制在公钥密码体系中的重要地位,对于椭圆曲线密码体制的安全评估,尤其是利用故障注入攻击方法进行安全评估的研究成为了当前的研究热点。在椭圆曲线密码体制中,椭圆曲线数字签名算法是椭圆曲线密码中应用最为广泛的算法之一,主要用于身份验证,其基本流程为签名者使用签名私钥对数据产生数字签名,验证者使用签名公钥对数字签名进行验证。
[0005]ECDSA是国际上通用的基于椭圆曲线的数字签名方案,其签名过程的基本流程如下。其中,M为待签名消息,G为椭圆曲线的基点,d
A
是签名使用的私钥。
[0006]1:用随机数发生器产生随机数k∈[1,n

1];
[0007]2:计算椭圆曲线点(x1,y1)=[k]G;
[0008]3:计算r=x
1 mod n,若r=0返回1;
[0009]4:计算e=H
v
(M),H
v
()为消息摘要长度为v比特的密码杂凑函数;
[0010]5:计算s=k
‑1(e+r
·
d
A
)mod n,若s=0返回1;
[0011]6:输出消息M的签名值为(r,s)。
[0012]以下为ECDSA验签的基本过程,其中,r

和s

为接收到的签名结果,M

为接收到的签名消息P
A
是签名验证公钥,P
A
=[d
A
]G。
[0013]1:计算e

=H
v
(M

),H
v
()为消息摘要长度为v比特的密码杂凑函数;
[0014]2:计算u1=s
‑1·
e mod n;
[0015]3:计算u2=s
‑1·
r mod n;
[0016]4:计算(x
′1,y
′1)=u1G+u2P
A

[0017]5:检验r=x1′
是否成立,若成立则验证通过;否则验证不通过。
[0018]另一个常用的数字签名方案SM2签名算法,是国家密码管理局在2010年发布的标准《GMT 0003.4

2012SM2椭圆曲线公钥密码算法》中的一部分。用于商用密码应用中的数字签名和验证,可满足多种密码应用中的身份认证和数据完整性、真实性的安全需求。目前,SM2签名算法已广泛应用于我国金融,物联网等重要领域。
[0019]以下为SM2签名算法的基本过程。其中,待签名的消息为M,作为签名者的用户A的可辨别标识为Z
A
,d
A
是签名使用的私钥,G为签名使用椭圆曲线上的基点。r和s为签名输出结果。
[0020]1:置
[0021]2:计算H
v
()为消息摘要长度为v比特的密码杂凑函数;
[0022]3:用随机数发生器产生随机数k∈[1,n

1];
[0023]4:计算椭圆曲线点(x1,y1)=[k]G;
[0024]5:计算r=(e+x1)mod n,若r=0或r+k=n则返回3;
[0025]6:计算s=((1+d
A
)
‑1·
(k

r
·
d
A
))mod n,若s=0则返回3;
[0026]7:输出消息M的签名为(r,s)。
[0027]以下为SM2验签算法的基本过程。其中,r

和s

为接收到的签名结果,M

为接收到的签名消息P
A
是签名验证公钥,P
A
=[d
A
]G。
[0028]1:检验r

∈[1,n

1]是否成立,若不成立则验证不通过;
[0029]2:检验s

∈[1,n

1]是否成立,若不成立则验证不通过;
[0030]3:置
[0031]4:计算H
v
()为消息摘要长度为v比特的密码杂凑函数;
[0032]5:计算t=(r

+s

)modn,若t=0,则验证不通过;
[0033]6:计算椭圆曲线点(x1′
,y1′
)=[s

]G+[t]P
A

[0034]7:计算R=(e

+x1′
)modn,检验R=r

是否成立,若成立则验证通过;否则验证不通过。
[0035]对于上述ECDSA和SM2签名算法,故障注入攻击对其具有有效的攻击效果。故障注入攻击通常通过时钟、电压、辐射的突变,电磁干扰、激光注入等手段,使密码电路在执行过程中被注入故障,产生错误输出。攻击者利用错误输出,结合其他已知信息,根据密码算法的特点,可以获得密码算法在执行过程中的某些秘密信息。
[0036]对于上述以ECDSA和SM2为代表的椭圆曲线签名算法,常见的故障注入方法主要是针对椭圆曲线密码的核心运输模块标量乘[k]G进行。如攻击者可以通过在曲线参数、基点、或标量乘运算过程注入故障,使标量乘运算从一条安全曲线转移到另一条不安全的弱曲线上,进而通过对弱曲线上的标量乘法求解椭圆曲线离散对数问题(ECDLP)恢复出标量k。攻击者还可以通过对标量乘中间值的符号位进行攻击来获得秘密信息。通过这种攻击方式产生的错误输出点仍然在原始曲线上,攻击者根据正确标量本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种椭圆曲线签名算法的安全评估方法,其步骤包括:1)签名设备运行待评估的目标椭圆曲线签名算法对待签名消息执行签名运算,并采集签名设备能量信息,根据采集的能量信息确定故障注入时间点;2)签名设备运行该目标椭圆曲线签名算法对待签名消息执行签名运算,每次签名运算时使用故障注入设备在步骤1)确定的故障注入时间点对签名设备的一位置区域进行故障注入并采集签名设备能量信息,根据采集的能量信息确定签名设备中控制迭代轮数的计数器所在位置;3)签名设备运行该目标椭圆曲线签名算法对待签名消息执行多次签名运算,每次签名运算时使用故障注入设备在该计数器所在位置和确定的故障注入时间点进行故障注入,并采集签名设备能量信息,根据采集的能量信息确定故障注入后该计数器的存储值count

;如果满足count

<count,且差值w对应标量位数的ECDLP问题在攻击者所使用设备上可解,则记录此次签名的计数器存储值count

和错误签名输出结果;其中count为签名设备运行该目标椭圆曲线签名算法对待签名消息执行签名时该计数器的正确存储值;w=count

count

;4)利用步骤3)得到的N个错误签名输出结果恢复该目标椭圆曲线签名算法的签名私钥;如果未恢复成功,则判定该目标椭圆曲线签名算法通过安全评估。2.如权利要求1所述的方法,其特征在于,根据采集的能量信息生成能量波形,根据能量波形确定签名运算标量乘法部分开始前的时刻,即故障注入时间点。3.如权利要求1所述的方法,其特征在于,确定签名设备中控制迭代轮数的计数器所在位置的方法为:21)在确定的故障注入时间点对签名设备的一区域进行故障注入,并采集签名设备的能量波形;22)根据能量波形判断签名运算的标量乘法迭代轮数与未进行故障注入时签名运算的标量乘法迭代轮数进行对比,若发生变化且不影响签名算法正常运行,则判定当前所选位置区域为用于控制迭代轮数的计数器所在位置,否则更改故障注入的位置区域;23)重复步骤21)~22),直至寻找到控制迭代轮数的计数器所在位置。4.如权利要求1所述的方法,其特征在于,使用LLL算法或Baba...

【专利技术属性】
技术研发人员:李昊远陈华匡晓云杨祎巍黄开天范丽敏
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1