点对点的椭圆曲线数字签名算法及验签方法技术

技术编号:14887876 阅读:124 留言:0更新日期:2017-03-28 17:57
本发明专利技术公开了一种改进的点对点椭圆曲线数字签名算法,步骤(1),计算t=Hash(IDA||IDB||count)mod n,count=0x00000001,如果t=0,那么count++,重新计算t;步骤(2),随机选择k∈[1,n‑1];步骤(3),运算kP=(x1,y1),之后把x1转化为整数;步骤(4)计算r=x1 mod n,如果r=0,那么跳回步骤(2);步骤(5),计算e=H(m),其中,H(x)为哈希函数;步骤(6),计算s=k‑1t(e+dr)mod n,如果s=0,那么跳回步骤(2)获取随机数;步骤(7),输出签名对(r,s)。本发明专利技术还公开了一种基于所述改进的椭圆曲线数字签名算法的验签方法。本发明专利技术可以有效解决点对点的签名验签行为。

【技术实现步骤摘要】

本专利技术涉及信息安全领域,特别是涉及一种点对点的椭圆曲线数字签名算法(ECDSA)。本专利技术还涉及一种基于所述改进的椭圆曲线数字签名算法的验签方法。
技术介绍
1、椭圆曲线数字签名算法理论介绍数字签名对应于手写签名的数字化,可以提供数据来源认证、具有数据完整性及不可否认性的特点。椭圆曲线数字签名算法就是数字签名的椭圆曲线版本。ECDSA具体流程如下:输入参数组D=(q,FR,S,a,b,P,n,h),私钥d,消息m。输出签名对(r,s)a、随机选择k∈[1,n-1];b运算kP=(x1,y1),之后把x1转化为整数;c、计算r=x1modn,如果r=0,那么跳回步骤a;d计算e=H(m),其中,H(x)为哈希函数;e、计算s=k-1(e+dr)modn,如果s=0,那么跳回步骤a;f、输出签名对(r,s)。那么得到这个签名对的其他用户就可以通过公钥与签名对(r,s)判定是否为确定用户的签名了。验证签名的具体流程如下:输入参数组D=(q,FR,S,a,b,P,n,h),公钥Q,消息m,签名对(r,s)。A、确定r∈[1,n-1],s∈[1,n-1],否则验签失败;B、计算e=H(m),其中,H(x)为哈希函数C、计算w=s-1modn;D、计算u1=ewmodn,u2=rwmodn;E、计算X=u1P+u2Q,若X为无穷远点,则签名失败;F、X=(x1,y1)之后把X1转化为整数;G、如果X1与r相等,则验签成功,否则验签失败。2、黑手党问题Alice在Bob的餐厅——一家黑手党拥有的餐厅吃饭,Carol在Dave的商场——一家高档珠宝店买东西,Bob和Carol都是黑手党成员,并且他们可以通过一条秘密通道通信,而Alice和Dave都不知道这个骗局。当Alice在Bob的餐厅吃饭后,准备买单并向Bob验明身份时,Bob通知Carol开始这场骗局,Carol也向Dave购买宝石并准备验明身份,这样,当Alice对Bob的账单进行数字签名后,Bob将Alice的数字签名再传给Carol,Carol就可以利用Alice的数字签名与Dave进行交易,进而言之,Alice给黑手党购买了宝石。因此如果对数字签名进行改进,并将数字签名引入ID(身份标实),那么黑手党就无法冒充Alice,因为Alice在Bob的餐厅进行的签名是Alice与Bob,而Carol在Dave的商场需要的签名ID是Carol和Dave的。
技术实现思路
本专利技术要解决的技术问题是提供一种点对点的椭圆曲线数字签名算法,可以有效解决点对点签名的问题;同时相对于传统椭圆曲线签名方法保证在其他的节点ID无法实现中间人攻击。为解决上述技术问题,本专利技术点对点的椭圆曲线数字签名算法,包括如下步骤:输入参数组D=(IDA,IDB,q,FR,S,a,b,P,n,h),私钥d,公钥Q,消息m,其中,IDA,IDB分别是交易双方的ID;输出签名对(r,s);步骤(1),计算t=Hash(IDA||IDB||count)modn,count=0x00000001,如果t=0,那么count++,重新计算t;步骤(2),随机选择k∈[1,n-1];步骤(3),运算kP=(x1,y1),之后把x1转化为整数;步骤(4),计算r=x1modn,如果r=0,那么跳回步骤(2);步骤(5),计算e=H(m),其中,H(x)为哈希函数;步骤(6),计算s=k-1t(e+dr)modn,如果s=0,那么跳回步骤(2)获取随机数;步骤(7),输出签名对(r,s)。基于上述改进的椭圆曲线数字签名算法的验签方法,包括如下步骤:输入参数组D=(IDA,IDB,q,FR,S,a,b,P,n,h),消息m,签名对(r,s),其中,IDA,IDB分别是交易双方的ID;步骤(1),计算t=Hash(IDA||IDB||count)modn,count=0x00000001,如果t=0,那么count++,重新计算t;步骤(2),确定r∈[1,n-1],s∈[1,n-1],否则验签失败;步骤(3),计算e=H(m),其中,H(x)为哈希函数;步骤(4),计算w=s-1modn;步骤(5),计算u1=tewmodn,u2=trwmodn;步骤(6),计算X=u1P+u2Q,若X为无穷远点,则签名失败;步骤(7),X=(x1,y1),之后把x1转化为整数;步骤(8),如果x1与r相等,则验签成功,否则验签失败。在这种情况下,因为在不同ID下,t是不同的,假设A对B的账单进行数字签名时,t=t1。C向B提供数字签名的t=t2(t1≠t2),C验签时t=t2,所以A的数字签名(t=t1)是无法通过C验签。这样中间人就无法使用A的金钱给他们买单了。与传统的椭圆曲线签名相比,本专利技术可以解决中间人冒充签名的行为。如果某人签名必须加上交易双方的ID,其他人若想冒充此人的签名就是不可能的。从这点出发,使得ECDSA签名不能由其他人再次冒用。附图说明下面结合附图与具体实施方式对本专利技术作进一步详细的说明:图1是改进的椭圆曲线数字签名算法流程图;图2是与所述改进的椭圆曲线数字签名算法相应的验签流程图。具体实施方式图1提供了以下流程来说明本专利技术的具体实施细节。美国国家标准技术研究院(NIST)推荐了5套参数用于素数域的椭圆曲线密码。本实施例中采用其中的一套参数,具体如下:在有限域Fp中,有椭圆曲线E,其定义如下:E:y2=x3+ax2+b其中:p=0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF;a=0xFFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC;b=0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b。基点P的坐标为,[0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296,0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5]基点的阶n为,0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551。假设私钥d为d=0x2CA1411A41B17B24CC8C3B089CFD033F1920202A6C0DE8ABB97DF1498D50D2C8。假设IDA为0x61626364假设IDB为0x65666768计算t为0x832F0D3EDF2E5CC121986AE425247B4379B47B3A1D83D5D171013910D8DE7E49。步骤一,随机选择k∈[1,n-1];k=0xA0640D4957F27D091AB1AEBC69949D96E5AC2BB283ED5284A5674758B12F08DF。步骤二,运算kP=(x1,y1);kP的坐标为,[0xD73CD3722BAE6CC0B39065BB4003D8ECE1本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/62/201610991199.html" title="点对点的椭圆曲线数字签名算法及验签方法原文来自X技术">点对点的椭圆曲线数字签名算法及验签方法</a>

【技术保护点】
一种点对点的椭圆曲线数字签名算法,其特征在于,包括如下步骤:输入参数组D=(IDA,IDB,q,FR,S,a,b,P,n,h),私钥d,公钥Q,消息m,其中,IDA,IDB分别是交易双方的ID;输出签名对(r,s);步骤(1),计算t=Hash(IDA||IDB||count)mod n,count=0x00000001,如果t=0,那么count++,重新计算t;步骤(2),随机选择k∈[1,n‑1];步骤(3),运算kP=(x1,y1),之后把x1转化为整数;步骤(4),计算r=x1mod n,如果r=0,那么跳回步骤(2);步骤(5),计算e=H(m),其中,H(x)为哈希函数;步骤(6),计算s=k‑1t(e+dr)mod n,如果s=0,那么跳回步骤(2)获取随机数;步骤(7),输出签名对(r,s)。

【技术特征摘要】
1.一种点对点的椭圆曲线数字签名算法,其特征在于,包括如下步骤:输入参数组D=(IDA,IDB,q,FR,S,a,b,P,n,h),私钥d,公钥Q,消息m,其中,IDA,IDB分别是交易双方的ID;输出签名对(r,s);步骤(1),计算t=Hash(IDA||IDB||count)modn,count=0x00000001,如果t=0,那么count++,重新计算t;步骤(2),随机选择k∈[1,n-1];步骤(3),运算kP=(x1,y1),之后把x1转化为整数;步骤(4),计算r=x1modn,如果r=0,那么跳回步骤(2);步骤(5),计算e=H(m),其中,H(x)为哈希函数;步骤(6),计算s=k-1t(e+dr)modn,如果s=0,那么跳回步骤(2)获取随机数;步骤(7),输出签名对(r,s)。2.一种基于权利...

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

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

1