[发明专利]面向区块链智能合约的不可拆分数字签名通用构造方法有效
申请号: | 201910487516.6 | 申请日: | 2019-06-05 |
公开(公告)号: | CN110233733B | 公开(公告)日: | 2022-02-01 |
发明(设计)人: | 史扬;李晔;韩秋月;马致远 | 申请(专利权)人: | 同济大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32 |
代理公司: | 上海科律专利代理事务所(特殊普通合伙) 31290 | 代理人: | 叶凤;李耀霞 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: |
本发明公开了面向区块链智能合约的不可拆分数字签名通用构造方法,属于密码学与区块链技术领域。包括以下算法:(1)Setup:该算法用于生成方案的公共系统参数。(2)KGen:该算法用于生成用户的公钥与私钥,其中私钥用于签名,公钥用于验证。(3)SignFuncGen:该算法用于在客户端生成不可拆分数字签名算法,并与智能合约的内容绑定。(4)UndSign:该算法用于生成交易的不可拆分签名值,输入为不可拆分签名算法f |
||
搜索关键词: | 面向 区块 智能 合约 不可 拆分 数字签名 通用 构造 方法 | ||
【主权项】:
1.一种面向区块链智能合约的不可拆分数字签名通用构造方法,其特征在于,包括如下步骤:步骤1.在每一台运行区块链客户端的计算机上,在规定好的安全级别下,输入需要的安全指数k,运行算法1,算法定义如下:算法1.系统初始化算法:Setup(1k),输入的k∈N(N为自然数)是一个安全参数,算法输出公共参数设置在公共参数Ω中,是一个循环群,称为“群”,其阶数为质数q,G是“群”的生成元,其阶数为质数q,满足q·G=O,O代表“群”的零元,H(·)是一个密码杂凑函数,SigG,q,H,x是一个任意的数字签名函数,VerG,q,H,Y是对应该SigG,q,H,x签名函数的验证函数;步骤2.算法1执行结束后得到了系统参数Ω,区块链中所有客户端用户都可以得到该参数,随后每一个客户本地运行算法2,具体定义如下:算法2.KGen()(1)调用SigG,q,H,x的公钥私钥生成算法,生成私钥x和公钥Y;在运行完算法2后,每个用户得到私钥x和公钥Y;用户各自妥善保管自己的私钥x,其公钥Y可以公开在区块链网络中;步骤3.客户端在本地将私钥x,需求描述字符串c,签名算法SigG,q,H,x作为输入运行算法3,c是客户端对交易的一种限定;该算法3将生成一个不可拆分签名函数fsigned(x);算法3.不可拆分签名算法生成算法SignFuncGen(x,c,SigG,q,H,x)(1)Zq中随机选取的一个元素xc,xc的作用相当于一个临时的私钥;(2)计算Yc←xc·G,Yc是对应于临时私钥xc的临时公钥;(3)计算Σc←SigG,q,H,x(Yc||c),Σc是对Yc与限定条件c拼接字符串的签名值;(4)输出fsigned(x)=<xc,Yc,Σc>;执行完该算法3后客户端将输出一个不可拆分签名函数fsigned(x)=<xc,Yc,Σc>;该函数对应c和私钥x有唯一的<xc,Yc,Σc>值;步骤4.客户端调用代理签名智能合约,并将不可拆分签名函数fsigned(x)以及待签名交易t传递给智能合约,智能合约收到参数后执行算法4,代理用户对该交易进行签名;算法4.不可拆分签名生成算法UndSign(fsigned(x),t);输入不可拆分签名函数fsigned(x),待签名交易t,算法步骤按顺序执行如下:(1)计算e=H(t),其中H(·)是密码杂凑函数,e是t的哈希值对应的整数值;(2)随机选取Zq与算法3中的Zq相同;(3)计算椭圆曲线的点R=(rx,ry)=k·G,rx,ry是点R的横坐标与纵坐标;(4)计算rc=rxmodq,rc是rx在Zq中对应的元素,如果rc=0,返回步骤(2);(5)从fSigned(x)中提取xc;(6)计算sc=k‑1·(e+rc·xc)modq,如果sc=0,返回步骤(2);(7)从fSigned(x)中提取Yc,∑c;(8)输出签名值UndSig(t)=<rc,sc,Yc,Σc>;步骤5.智能合约将该签名后的交易t以及其签名值UndSig(t)广播到区块链网络中去;步骤6.签名后的交易被加入到区块链中矿工节点所维护的交易池中,之后矿工按顺序检验交易的合法性,运行算法5,验证该交易的签名;算法5.签名验证算法UndVerify(Y,t,c,<rc,sc,Yc,Σc>,VerG,q,H,Y);输入公钥Y,交易t,需求描述字符串c,签名值<rc,sc,Yc,Σc>,签名验证算法VerG,q,H,Y;算法步骤按顺序执行如下:(1)检验Yc是否是“群”中的元素,如果不是则签名无效,否则执行下一步;(2)利用VerG,q,H,Y算法检验∑c是否为Yc||c的合法签名,如果是则执行下一步,否则签名无效;(3)计算e=H(t),其中H(·)是密码杂凑函数,提供给步骤(5);(4)计算w=sc‑1modq,提供给步骤(5);(5)计算u1=e·wmod q和u2=rc·wmod q;提供给步骤(6);(6)计算曲线点(x1,y1)=u1·G+u2·Yc,如果(x1,y1)=O则签名无效,否则计算z=x1modq;(7)如果rc=z则签名有效,否则无效;如果签名有效,则该交易合法,完成交易并将该交易添加到下一个区块中即可,如果签名无效,则表明该交易不合法或者代理合约不合法,则该交易无效,并不会被区块链网络所认可;至此,整个方案的步骤结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910487516.6/,转载请声明来源钻瓜专利网。
- 上一篇:一种基于簇态的动态量子代理盲签名方法
- 下一篇:签名校验方法及相关产品