[发明专利]基于椭圆曲线数字签名的区块链智能合约不可拆分签名方法有效
| 申请号: | 201910162884.3 | 申请日: | 2019-03-05 | 
| 公开(公告)号: | CN109768866B | 公开(公告)日: | 2021-03-30 | 
| 发明(设计)人: | 史扬;李晔;马致远;韩秋月 | 申请(专利权)人: | 同济大学 | 
| 主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/30;G06Q20/38;G06Q40/04 | 
| 代理公司: | 上海科律专利代理事务所(特殊普通合伙) 31290 | 代理人: | 叶凤 | 
| 地址: | 200092 *** | 国省代码: | 上海;31 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 基于 椭圆 曲线 数字签名 区块 智能 合约 不可 拆分 签名 方法 | ||
1.一种适用于区块链智能合约的不可拆分数字签名方法,它包括六个如下步骤:
步骤1.在每一台运行区块链客户端的计算机上输入需要的安全指数k,并在规定好的安全级别下运行算法1,算法定义如下:
算法1.系统初始化算法:Setup(1k),输入的k∈N是一个安全参数,N为自然数,算法输出公共参数设置Ω=(CURVE,G,p,q,H(·));
在公共参数Ω中,CURVE代表所使用的椭圆曲线的方程式及其数域,G代表椭圆曲线的基点,即椭圆曲线的生成元,其阶数为质数q,满足q·G=O,O代表零点,“·”表示椭圆曲线标量点乘法;p表示椭圆曲线坐标所在的域的阶数,也为质数;
定义:在椭圆曲线上的离散对数问题(ECDLP):给定素数阶p和椭圆曲线CURVE,对B=k·A,在已知点A,B的情况下,可以证明已知k和A计算B比较容易,而由B和A计算k则比较困难;
步骤2.算法1执行结束后得到了系统参数Ω,区块链中所有用户都可以得到该参数,随后每一个客户本地运行算法2,具体定义如下:
算法2.KGEN()
(1)
(2)Y=x·G
在运行完算法2后,每个用户得到公钥Y和私钥x;用户各自妥善保管自己的私钥,其公钥可以公开在区块链网络中;
步骤3.客户端在本地将私钥x,需求描述字符串Q作为输入运行算法3,Q是客户端对交易的一种限定;该算法将生成一个不可拆分签名函数fSigned(x);
算法3.不可拆分签名算法生成算法SignFuncGen(x,Q)
(1)随机选取
(2)计算Z=(zx,zy)=w·G
(3)计算xQ=xw+zx
(4)计算YQ=xZ+zx·G
(5)计算u=H(Z||Q||YQ),H(·)是密码杂凑函数
(6)v=w-xumodq
(7)输出fSigned(x)=<xQ,YQ,u,v>
执行完该算法后客户端将输出一个不可拆分签名函数fSigned(x)=<xQ,YQ,u,v>,该函数对应私钥x和Q有唯一的<xQ,YQ,u,v>值;
步骤4.客户端调用代理签名智能合约,并将不可拆分签名函数fSigned(x)以及待签名交易t传递给智能合约,智能合约收到参数后执行算法4,代理用户对该交易进行签名;
算法4.不可拆分签名生成算法Sign(fSigned(x),t);输入不可拆分签名函数fSigned(x),待签名交易t,算法步骤按顺序执行如下:
(1)计算e=H(t),其中H(·)是密码杂凑函数
(2)随机选取
(3)计算R=(rx,ry)=k·G
(4)计算r=rxmodq,如果r=0,返回步骤(2)
(5)从fSigned(x)中提取xQ
(6)计算s=k-1·(e+r·xQ)modq,如果s=0,返回步骤(2)
(7)从fSigned(x)中提取u,v,YQ
(8)输出签名值Sig(t)=r,s,u,v,YQ
步骤5.智能合约将该签名后的交易t以及其签名值Sig(t)广播到区块链网络中去;
步骤6.签名后的交易被加入到区块链中矿工节点所维护的交易池中,之后矿工按顺序检验交易的合法性,运行算法5,验证该交易的签名;
算法5.签名验证算法Verify(Y,t,Q,r,s,u,v,YQ);输入公钥Y,交易t,需求描述字符串Q,签名值r,s,u,v,YQ,算法步骤按顺序执行如下:
(1)检验YQ是否是椭圆曲线CURVE上的点,如果不是则签名无效,否则执行下一步
(2)检验YQ是否是椭圆曲线CURVE上的零点O,如果是则签名无效,否则执行下一步
(3)检验r和s是否都是中的元素,如果不是则签名无效
(4)计算Zv=v·G+u·Y
(5)计算uv=H(Zv||Q||YQ),H(·)是密码杂凑函数
(6)判断是否uv=u,如果不相等则签名无效
(7)计算e=H(t),其中H(·)是密码杂凑函数
(8)计算w=s-1mod q
(9)计算u1=ewmod q和u2=rwmod q
(10)计算曲线点(x1,y1)=u1·G+u2·YQ,如果(x1,y1)=O则签名无效;
(11)如果r≡x1(modq)则签名有效,否则无效;
如果签名有效,则该交易合法,完成交易并将该交易添加到下一个区块中即可,如果签名无效,则表明该交易不合法或者代理合约不合法,则该交易无效,并不会被区块链网络所认可;
至此,整个方案的步骤结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910162884.3/1.html,转载请声明来源钻瓜专利网。





