CN105610583A - 用于抵御错误曲线攻击的ecdsa方法 - Google Patents
用于抵御错误曲线攻击的ecdsa方法 Download PDFInfo
- Publication number
- CN105610583A CN105610583A CN201410612835.2A CN201410612835A CN105610583A CN 105610583 A CN105610583 A CN 105610583A CN 201410612835 A CN201410612835 A CN 201410612835A CN 105610583 A CN105610583 A CN 105610583A
- Authority
- CN
- China
- Prior art keywords
- calculates
- ecdsa
- calculating
- error curve
- elliptic curve
- 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
Links
Landscapes
- Storage Device Security (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种用于抵御错误曲线攻击的ECDSA方法,步骤一,随机选择k∈[1,n-1];步骤二,取椭圆曲线的随机一点R,计算M=R+kP;步骤三,计算M-R=(x1,y1),之后把x1转化为整数;步骤四,计算r=x1mod?n,如果r=0,那么跳回步骤一;步骤五,计算e=H(m),其中,H(x)为哈希函数;步骤六,计算s=k-1(e+dr)mod?n,如果s=0,那么跳回步骤一;步骤七,输出签名对(r,s)。本发明可以有效地防止攻击者在ECDSA中通过错误曲线攻击获取用户的私钥。
Description
技术领域
本发明涉及信息安全领域,特别是涉及一种用于抵御错误曲线攻击的ECDSA(椭圆曲线数字签名算法)方法。
背景技术
椭圆曲线数字签名算法(ECDSA)理论介绍。数字签名对应于手写签名的数字化,可以提供数据来源认证、具有数据完整性及不可否认性的特点。椭圆曲线数字签名算法就是数字签名的椭圆曲线版本。ECDSA具体流程如下:
输入参数组D=(q,FR,S,a,b,P,n,h),私钥d,消息m。其中,q为域的阶,FR为域表示,S为种子,a,b为椭圆曲线参数,P为基点,n为点P的阶,h为余因子。
输出签名对(r,s)。
第1步、随机选择k∈[1,n-1]。
第2步、运算kP=(x1,y1),之后把x1转化为整数,其中,(x1,y1)为计算结果的横坐标与纵坐标的值。
第3步、计算r=x1modn,如果r=0,那么跳回步骤1。
第4步、计算e=H(m),其中,H(x)为哈希函数。
第5步、计算s=k-1(e+dr)modn,如果s=0,那么跳回步骤1。
第6步、输出签名对(r,s)。
那么得到这个签名对的其他用户就可以通过公钥与签名对(r,s)判定是否为确定用户的签名了。
对原ECDSA方案的错误曲线攻击。原ECDSA是有可能通过错误曲线的攻击获取私钥,这对于用户的信息是非常不安全的。假设对基点P的y坐标进行故障攻击,使其坐标从(xp,yp)变为(xp,yp′),记为点P′,设它落在的椭圆曲线为y2=x3+ax+b′,设其中a与之前的值不变,则存在
所以
由签名对可以得到r,从而得到x1,再根据不安全的椭圆曲线参数表达式得到y1。由于这是一条安全性不强的椭圆曲线,那么攻击者很可能在可计算的时间内求解离散对数(知道点P′及(x1,y1))来得到k,再根据已知的s,n,e和r可以推导出私钥d。
在ECDSA抵御错误曲线攻击的一般方法。通常的对错误曲线的攻击的抵御方案就是验算点P是否在原安全的椭圆曲线上,但是验算在工程上一般会做成一个函数,这样攻击者通过向芯片注入毛刺是有可能跳过这步验算。为保证芯片的安全性,就必须多次在运算过程中进行验算,但是过多的验算会极大牺牲芯片的运行效率。
因此如果将运算点乘kP改进,在P遭受到攻击后,无法让攻击者得到正确的错误点乘结果,那么错误曲线攻击就无法成功。
发明内容
本发明要解决的技术问题是提供一种用于抵御错误曲线攻击的ECDSA方法,可以有效地防止攻击者在ECDSA中通过错误曲线攻击获取用户的私钥。
为解决上述技术问题,本发明的用于抵御错误曲线攻击的ECDSA方法,包括如下步骤:
输入参数组D=(q,FR,S,a,b,P,n,h),私钥d,消息m;其中,q为域的阶,FR为域表示,S为种子,a,b为椭圆曲线参数,P为基点,n为点P的阶,h为余因子;
输出签名对(r,s);
步骤1,随机选择k∈[1,n-1];
步骤2,取椭圆曲线的随机一点R,计算M=R+kP;
步骤3,计算M-R=(x1,y1),之后把x1转化为整数;
步骤4,计算r=x1modn,如果r=0,那么跳回步骤1;
步骤5,计算e=H(m),其中,H(x)为哈希函数;
步骤6,计算s=k-1(e+dr)modn,如果s=0,那么跳回步骤1;
步骤7,输出签名对(r,s)。
其中,(x1,y1)为计算结果的横坐标与纵坐标的值。
执行步骤2,在运算M=R+kP时,可按照以下方法计算:
输入:k=(kt-1,...k1,k0)2
输出:R+kP;
定义点Q为一个存储空间,作为存储计算的临时值;
第1步、Q←R;
第2步、对于i从0到t-1,重复执行:
a)若ki=1,则Q=P+Q;
b)P←2P;
第3步、返回Q。
其中,(kt-1,...k1,k0)2为k的二进制表达形式。
这样运算的好处是以一个随机的椭圆曲线上的点作为起点,之后在与基点或基点的几倍点进行点加,如果基点被攻击后并不落在此椭圆曲线上,那么点加运算就会在两个不同的椭圆曲线上进行,而这样步骤2计算出的M是无法通过M-R还原出点kP。因此只有在点P和点R同时注入故障,并使这两点都落在相同的错误曲线上,错误曲线攻击才有可能成功,这样的防护方法无疑极高的增加了攻击者的难度。同时这种方案相对于多次在程序中插入检验P是否落在正确的椭圆曲线上,安全性也会更高。因为在点乘运算中,攻击者不能选择跳过这些点乘程序,否则攻击者无法获取正确的错误结果。因此本发明可以有效地防止攻击者在ECDSA中通过错误曲线攻击获取用户的私钥。
同时本发明的实现不会太多地浪费效率,因为这种方法就比普通点乘方法多了一步:将点乘的结果与点-R进行点加。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图是所述抵御错误曲线攻击的ECDSA方法流程图。
具体实施方式
结合附图所示,美国国家标准技术研究院(NIST)推荐了5套参数用于素数域的椭圆曲线密码。本实施例中采用其中的一套参数,具体如下:
在有限域Fp中,有椭圆曲线E,其定义如下:
E:y2=x3+ax2+b
其中
p=0xfffffffffffffffffffffffffffffffeffffffffffffffff;
a=0xfffffffffffffffffffffffffffffffefffffffffffffffc
b=0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1
基点G的坐标为
[0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811]
取点R
[0x79680B8E20EDCDB6B85D1CBFB6E83858CAA7BA83D3C3CFB3,0xEAEF626AA6A8EA293D39ABF2FA32FC04AD3E483844B3CD07]假设私钥d为
d=0x79d280ca6646596b185134d44d99d50dcda801265c2c4d56
步骤一,随机选择k∈[1,n-1];
k=0x74210519e59c80e70fa7e9ab72243049feb8de5cc146b9b1。
步骤二,取椭圆曲线的随机一点R,运算M=R+kP;
M的坐标为
[0x7119607658739F67839D1F4325305BD98FE64A5F8D56C5AD,0x7D46255A6CD166F3F0AEE2FB63A9EFC500034343B2C6752F]。
步骤三,运算M-R=(x1,y1),之后把x1转化为整数;
M-R的坐标为
[0xBC4333CC8AA5F132023C4F6CBD1D628F5CD5DFD0937AEFD,0x70497BA1941D5567FFF1CA91161F211FC8E1493BF9ABA831]。
步骤四,计算r=x1modn,如果r=0,那么跳回步骤一;
r=0xBC4333CC8AA5F132023C4F6CBD1D628F5CD5DFD0937AEFD。
步骤五,计算e=H(m),其中,H(x)为哈希函数;
假设e为
e=0x1BD4ED430B0F384B4E8D458EFF1A8A553286D7AC21CB2F68。
步骤六,计算s=k-1(e+dr)modn;
s=0x9346F7E6558468FB2E0A1241743BE498CA5DEF3CFFEA8B6E。
步骤七,输出签名对(r,s)。
实施步骤二时,从无穷远点作为起点进行点加与两倍点(或多倍点)运算改进为从随机点作为起点进行点加与两倍点(或多倍点)运算,此种方法可适用于二进制扫描法,窗口法等。
实施步骤三时,在未受到错误曲线攻击时,M-R是可以还原出点kP,当受到错误曲线攻击后,M-R是无法还原出点kP。
下面的计算实例证明确实注入到错误曲线故障后,M-R无法还原出点kP。
在有限域Fp中,有椭圆曲线E,其定义如下:
E:y2=x3+ax2+b
其中
p=0xfffffffffffffffffffffffffffffffeffffffffffffffff;
a=0xfffffffffffffffffffffffffffffffefffffffffffffffc
b=0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1
基点P的坐标为
[0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811]取点R
[0x79680B8E20EDCDB6B85D1CBFB6E83858CAA7BA83D3C3CFB3,0xEAEF626AA6A8EA293D39ABF2FA32FC04AD3E483844B3CD07]
若向基点P′注入故障,使其的坐标变为:
[0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012,0x07192b95ffc8da78631011ed6b24cdd573f977a11e794810]
假设P′落在新的椭圆曲线E′
E′:y2=x3+ax2+b′
代入P′计算出b′
0x55EEADEDE60ACBF64987C5D09BDA949F16C5EFAA84542990
在椭圆曲线E′运算255P的坐标为:
[0xC639B9A2FF2605C6D6F4CA54BB26E4B4ADC0C0C1838688BD,0xAE44516005A90BA5897BA62C5E3315C75D8D16F6BDE3E1C0]
而使用上述公式计算M=R+255P,再计算M-R得到的坐标为
[0x8175D0910B98A225FE4F84051FA5395E4299A4FEF6D20586,0xF33F896005D5BFB8C18F4E2F8DBA6692745F3572B80D9ADB]
即如果遭受到了错误曲线攻击,kP′的输出是无法被正确获取的。
本发明能使得攻击者进行错误曲线攻击的难度变得非常大,相比于传统的抵御错误曲线攻击的方案,本发明并不显著减少运算效率。
以上通过实施例,对本发明进行了详细的说明,但本发明的保护范围不限于所述的实施例。在不脱离本发明原理的情况下,本领域技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (2)
1.一种用于抵御错误曲线攻击的ECDSA方法,
输入参数组D=(q,FR,S,a,b,P,n,h),私钥d,消息m;其中,q为域的阶,FR为域表示,S为种子,a,b为椭圆曲线参数,P为基点,n为点P的阶,h为余因子;
步骤一,随机选择k∈[1,n-1];其特征在于,还包括如下步骤:
步骤二,取椭圆曲线的随机一点R,计算M=R+kP;
步骤三,计算M-R=(x1,y1),之后把x1转化为整数;
步骤四,计算r=x1modn,如果r=0,那么跳回步骤一;
步骤五,计算e=H(m),其中,H(x)为哈希函数;
步骤六,计算s=k-1(e+dr)modn,如果s=0,那么跳回步骤一;
步骤七,输出签名对(r,s)。
2.如权利要求1所述的方法,其特征在于:执行步骤2,在运算M=R+kP时,按照以下方法计算:
输入:k=(kt-1,...k1,k0)2,
输出:R+kP;
定义点Q为一个存储空间,作为存储计算的临时值;
第1步、Q←R;
第2步、对于i从0到t-1,重复执行:
a)若ki=1,则Q=P+Q;
b)P←2P;
第3步、返回Q。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410612835.2A CN105610583B (zh) | 2014-11-04 | 2014-11-04 | 用于抵御错误曲线攻击的ecdsa方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410612835.2A CN105610583B (zh) | 2014-11-04 | 2014-11-04 | 用于抵御错误曲线攻击的ecdsa方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105610583A true CN105610583A (zh) | 2016-05-25 |
CN105610583B CN105610583B (zh) | 2018-10-26 |
Family
ID=55990131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410612835.2A Active CN105610583B (zh) | 2014-11-04 | 2014-11-04 | 用于抵御错误曲线攻击的ecdsa方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105610583B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533682A (zh) * | 2016-11-10 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 点对点的椭圆曲线数字签名算法及验签方法 |
CN109067554A (zh) * | 2018-10-31 | 2018-12-21 | 北京云测信息技术有限公司 | 抗注入攻击的签名方法、装置、移动终端及存储介质 |
CN112131616A (zh) * | 2020-09-15 | 2020-12-25 | 郑州信大捷安信息技术股份有限公司 | 一种sm2算法的掩码运算方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020122555A1 (en) * | 1991-09-17 | 2002-09-05 | Next Computer, Inc. | Method and apparatus for digital signature authentication |
CN1831754A (zh) * | 2005-11-04 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 一种椭圆曲线密码系统及实现方法 |
EP1729442A2 (en) * | 2005-06-03 | 2006-12-06 | Tata Consultancy Services Limited | An authentication system executing an elliptic curve digital signature cryptographic process |
US20080301458A1 (en) * | 2007-03-07 | 2008-12-04 | Nevine Maurice Nassif Ebeid | Power Analysis Attack Countermeasure for the ECDSA |
CN101330385A (zh) * | 2007-06-19 | 2008-12-24 | 航天信息股份有限公司 | 一种提高椭圆曲线密码体制上数字签名验证速度的方法 |
CN101753306A (zh) * | 2009-12-22 | 2010-06-23 | 上海大学 | 运用Montgomery型椭圆曲线的数字签名认证方法 |
CN101763241A (zh) * | 2010-01-20 | 2010-06-30 | 西安电子科技大学 | 实现ecc密码体制中签名算法的大整数求模运算装置及求模方法 |
CN102131198A (zh) * | 2011-03-01 | 2011-07-20 | 广州杰赛科技股份有限公司 | 认证系统中椭圆曲线密码运算装置的实现方法 |
CN102546650A (zh) * | 2012-01-19 | 2012-07-04 | 北京工业大学 | 无线传感器网络与因特网互联通信的端到端安全保障方法 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
CN103475473A (zh) * | 2013-08-26 | 2013-12-25 | 广东数字证书认证中心有限公司 | 数字签名方法和设备、数字签名中密码运算方法和服务器 |
-
2014
- 2014-11-04 CN CN201410612835.2A patent/CN105610583B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020122555A1 (en) * | 1991-09-17 | 2002-09-05 | Next Computer, Inc. | Method and apparatus for digital signature authentication |
EP1729442A2 (en) * | 2005-06-03 | 2006-12-06 | Tata Consultancy Services Limited | An authentication system executing an elliptic curve digital signature cryptographic process |
CN1831754A (zh) * | 2005-11-04 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 一种椭圆曲线密码系统及实现方法 |
US20080301458A1 (en) * | 2007-03-07 | 2008-12-04 | Nevine Maurice Nassif Ebeid | Power Analysis Attack Countermeasure for the ECDSA |
CN101330385A (zh) * | 2007-06-19 | 2008-12-24 | 航天信息股份有限公司 | 一种提高椭圆曲线密码体制上数字签名验证速度的方法 |
CN101753306A (zh) * | 2009-12-22 | 2010-06-23 | 上海大学 | 运用Montgomery型椭圆曲线的数字签名认证方法 |
CN101763241A (zh) * | 2010-01-20 | 2010-06-30 | 西安电子科技大学 | 实现ecc密码体制中签名算法的大整数求模运算装置及求模方法 |
CN102131198A (zh) * | 2011-03-01 | 2011-07-20 | 广州杰赛科技股份有限公司 | 认证系统中椭圆曲线密码运算装置的实现方法 |
CN102546650A (zh) * | 2012-01-19 | 2012-07-04 | 北京工业大学 | 无线传感器网络与因特网互联通信的端到端安全保障方法 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
CN103475473A (zh) * | 2013-08-26 | 2013-12-25 | 广东数字证书认证中心有限公司 | 数字签名方法和设备、数字签名中密码运算方法和服务器 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533682A (zh) * | 2016-11-10 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 点对点的椭圆曲线数字签名算法及验签方法 |
CN109067554A (zh) * | 2018-10-31 | 2018-12-21 | 北京云测信息技术有限公司 | 抗注入攻击的签名方法、装置、移动终端及存储介质 |
CN112131616A (zh) * | 2020-09-15 | 2020-12-25 | 郑州信大捷安信息技术股份有限公司 | 一种sm2算法的掩码运算方法及装置 |
CN112131616B (zh) * | 2020-09-15 | 2022-02-18 | 郑州信大捷安信息技术股份有限公司 | 一种sm2算法的掩码运算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105610583B (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang | Quantum resistant random linear code based public key encryption scheme RLCE | |
CN104852805B (zh) | 一种抵抗基于格的错误攻击的sm2签名算法防护方法 | |
JP7123959B2 (ja) | 楕円曲線点乗算デバイス及び方法 | |
US10142105B2 (en) | Hypersphere-based multivariable public key encryption/decryption system and method | |
US11431471B2 (en) | Data encryption and decryption | |
CN104836670B (zh) | 一种基于随机数未知的sm2签名算法安全性验证方法 | |
Su et al. | A public key cryptosystem based on three new provable problems | |
CN106357701A (zh) | 云存储中数据的完整性验证方法 | |
US7218735B2 (en) | Cryptography method on elliptic curves | |
EP2553866A1 (en) | System and method for protecting cryptographic assets from a white-box attack | |
EP2813029A1 (en) | System and method for generating and protecting cryptographic keys | |
CN108259506B (zh) | Sm2白盒密码实现方法 | |
EP3457619A1 (en) | Nonce to message binding in digital signature generation | |
Nagaraj et al. | Image encryption using elliptic curve cryptograhy and matrix | |
US9948463B2 (en) | Multivariate public key signature/verification system and signature/verification method | |
CN111447065A (zh) | 一种主动安全的sm2数字签名两方生成方法 | |
CN105610583A (zh) | 用于抵御错误曲线攻击的ecdsa方法 | |
US20110029784A1 (en) | Method of processing data protected against fault injection attacks and associated device | |
KR102067053B1 (ko) | 다변수 2차 다항식 기반 포스트 양자 서명 스킴의 안전성 검증 장치 및 방법 | |
Haraty et al. | Hardening the elgamal cryptosystem in the setting of the second group of units. | |
Kaminaga et al. | Crashing modulus attack on modular squaring for rabin cryptosystem | |
Khan et al. | Modified Niederreiter type of GPT cryptosystem based on reducible rank codes | |
ElKassar et al. | Hardening the ElGamal Cryptosystem in the Setting of the Second Group of Units | |
Ma et al. | Iterative side-channel cube attack on KeeLoq | |
Liu | Security analysis of liu-zhang-deng digital signature scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |