[发明专利]基于椭圆曲线数字签名的区块链智能合约不可拆分签名方法有效
申请号: | 201910162884.3 | 申请日: | 2019-03-05 |
公开(公告)号: | CN109768866B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 史扬;李晔;马致远;韩秋月 | 申请(专利权)人: | 同济大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/30;G06Q20/38;G06Q40/04 |
代理公司: | 上海科律专利代理事务所(特殊普通合伙) 31290 | 代理人: | 叶凤 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: |
本发明公开了一种基于椭圆曲线数字签名的区块链智能合约不可拆分签名方法,属于密码学与区块链技术领域。包括以下算法:(1)Setup:该算法用于生成方案的公共系统参数。(2)KGEN:生成用户的用于签名的私钥和验证的公钥。(3)SignFuncGen:该算法用于在客户端生成不可拆分数字签名算法。(4)Sign:该算法用于生成交易的签名值,输入为不可拆分签名算法f |
||
搜索关键词: | 基于 椭圆 曲线 数字签名 区块 智能 合约 不可 拆分 签名 方法 | ||
【主权项】:
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‑xu mod q(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=rx mod q,如果r=0,返回步骤(2)(5)从fSigned(x)中提取xQ(6)计算s=k‑1·(e+r·xQ)mod q,如果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‑1 mod q(9)计算u1=ew mod q和u2=rw mod q(10)计算曲线点(x1,y1)=u1·G+u2·YQ,如果(x1,y1)=O则签名无效。(11)如果r≡x1(mod q)则签名有效,否则无效。如果签名有效,则该交易合法,完成交易并将该交易添加到下一个区块中即可,如果签名无效,则表明该交易不合法或者代理合约不合法,则该交易无效,并不会被区块链网络所认可。至此,整个方案的步骤结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910162884.3/,转载请声明来源钻瓜专利网。