用于抵御错误曲线攻击的ecdsa方法_2

文档序号:9846495阅读:来源:国知局
1,n-1];
[0058] k = 0x74210519e59c80e70fa7e9ab72243049feb8de5ccl46b9bl。
[0059] 步骤二,取椭圆曲线的随机一点R,运算M = R+kP ;
[0060] M的坐标为
[0061] [0x7119607658739F67839DlF4325305BD98FE64A5F8D56C5AD,0x7D46255A6CD166F 3F0AEE2FB63A9EFC500034343B2C6752F]〇
[0062] 步骤三,运算M-R = (X1, Y1),之后把X1转化为整数;
[0063] M-R的坐标为
[0064] [0xBC4333CC8AA5F132023C4F6CBDlD628F5CD5DFD0937AEFD,0x70497BA1941D5567 FFF1CA91161F211FC8E1493BF9ABA831]。
[0065] 步骤四,计算r = X1Iiiod η,如果r = 0,那么跳回步骤一;
[0066] r = 0xBC4333CC8AA5F132023C4F6CBDlD628F5CD5DFD0937AEFD。
[0067] 步骤五,计算e = H(m),其中,H(x)为哈希函数;
[0068] 假设e为
[0069] e = 0xlBD4ED430B0F384B4E8D458EFFlA8A553286D7AC21CB2F68。
[0070] 步骤六,计算 s = k 1 (e+dr)mod η ;
[0071] s = 0x9346F7E6558468FB2E0A1241743BE498CA5DEF3CFFEA8B6E。
[0072] 步骤七,输出签名对(r,s)。
[0073] 实施步骤二时,从无穷远点作为起点进行点加与两倍点(或多倍点)运算改进为 从随机点作为起点进行点加与两倍点(或多倍点)运算,此种方法可适用于二进制扫描法, 窗口法等。
[0074] 实施步骤三时,在未受到错误曲线攻击时,M-R是可以还原出点kP,当受到错误曲 线攻击后,M-R是无法还原出点kP。
[0075] 下面的计算实例证明确实注入到错误曲线故障后,M-R无法还原出点kP。
[0076] 在有限域Fp中,有椭圆曲线E,其定义如下:
[0077] E :y2 = x3+ax2+b
[0078] 其中
[0079] p = Oxfffffffffffffffffffffffffffffffeffffffffffffffff ;
[0080] a = Oxfffffffffffffffffffffffffffffffefffffffffffffffc
[0081] b = 0x64210519e59c80e70fa7e9ab72243049feb8deeccl46b9bl
[0082] 基点P的坐标为
[0083] [0xl88da80eb03090f67cbf20eb43al8800f4ff0afd82ffl012,0x07192b95ffc8da7 8631011ed6b24cdd573f977alle794811]取点 R
[0084] [0x79680B8E20EDCDB6B85DlCBFB6E83858CAA7BA83D3C3CFB3,0xEAEF626AA6A8EA2 93D39ABF2FA32FC04AD3E483844B3CD07]
[0085] 若向基点P'注入故障,使其的坐标变为:
[0086] [0xl88da80eb03090f67cbf20eb43al8800f4ff0afd82ffl012,0x07192b95ffc8da7 8631011ed6b24cdd573f977alle794810]
[0087] 假设P'落在新的椭圆曲线E'
[0088] E' :y2 = x3+ax2+b/
[0089] 代入P'计算出b'
[0090] 0x55EEADEDE60ACBF64987C5D09BDA949F16C5EFAA84542990
[0091] 在椭圆曲线E'运算255P的坐标为:
[0092] [0xC639B9A2FF2605C6D6F4CA54BB26E4B4ADC0C0C1838688BD,0xAE44516005A90BA 5897BA62C5E3315C75D8D16F6BDE3E1C0]
[0093] 而使用上述公式计算M = R+255P,再计算M-R得到的坐标为
[0094] [0x8175D0910B98A225FE4F84051FA5395E4299A4FEF6D20586,0xF33F896005D5BFB 8C18F4E2F8DBA6692745F3572B80D9ADB]
[0095] 即如果遭受到了错误曲线攻击,kP'的输出是无法被正确获取的。
[0096] 本发明能使得攻击者进行错误曲线攻击的难度变得非常大,相比于传统的抵御错 误曲线攻击的方案,本发明并不显著减少运算效率。
[0097] 以上通过实施例,对本发明进行了详细的说明,但本发明的保护范围不限于所述 的实施例。在不脱离本发明原理的情况下,本领域技术人员还可做出许多变形和改进,这些 也应视为本发明的保护范围。
【主权项】
1. 一种用于抵御错误曲线攻击的ECDSA方法, 输入参数组D = (q,FR,S,a,b,P,n,h),私钥d,消息m ;其中,q为域的阶,FR为域表 示,S为种子,a, b为椭圆曲线参数,P为基点,η为点P的阶,h为余因子; 步骤一,随机选择k e [1,n-1];其特征在于,还包括如下步骤: 步骤二,取椭圆曲线的随机一点R,计算M = R+kP ; 步骤三,计算M-R = (x^ y),之后把Xi转化为整数; 步骤四,计算r = Ximod η,如果r = 0,那么跳回步骤一; 步骤五,计算e = H(m),其中,H(x)为哈希函数; 步骤六,计算s = k Ye+diOmod η,如果s = 0,那么跳回步骤一; 步骤七,输出签名对(r,s)。2. 如权利要求1所述的方法,其特征在于:执行步骤2,在运算M = R+kP时,按照以下 方法计算: 车目!1入:k - (kt ^. . . kj? kg) 2? 输出:R+kP ; 定义点Q为一个存储空间,作为存储计算的临时值; 第1步、Q -R; 第2步、对于i从0到t-Ι,重复执行: a) 若 ki = 1,则 Q = P+Q ; b) P - 2P ; 第3步、返回Q。
【专利摘要】本发明公开了一种用于抵御错误曲线攻击的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中通过错误曲线攻击获取用户的私钥。
【IPC分类】H04L9/32
【公开号】CN105610583
【申请号】CN201410612835
【发明人】张宇
【申请人】上海华虹集成电路有限责任公司
【公开日】2016年5月25日
【申请日】2014年11月4日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1