用于抵御错误曲线攻击的ECDSA方法技术

技术编号:19249629 阅读:144 留言:0更新日期:2018-10-26 18:55
本发明专利技术公开了一种用于抵御错误曲线攻击的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

【技术实现步骤摘要】
用于抵御错误曲线攻击的ECDSA方法
本专利技术涉及信息安全领域,特别是涉及一种用于抵御错误曲线攻击的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=0xfffffffffffffffffffffffffffffffefffffffffffffffcb=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本文档来自技高网
...

【技术保护点】
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=x1mod n,如果r=0,那么跳回步骤一;步骤五,计算e=H(m),其中,H(x)为哈希函数;步骤六,计算s=k‑1(e+dr)mod n,如果s=0,那么跳回步骤一;步骤七,输出签名对(r,s);其中,(x1,y1)为计算结果的横坐标与纵坐标的值。

【技术特征摘要】
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(...

【专利技术属性】
技术研发人员:张宇
申请(专利权)人:上海华虹集成电路有限责任公司
类型:发明
国别省市:上海,31

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

1