本发明涉及数字签名技术与区块链领域,具体是一种基于区块链平台的多重签名方法。
背景技术:
随着经济全球化和信息现代化的发展,全球金融和政务信息的数量急剧增长。在电子商务和电子政务的实际应用中,同一份文件或合同往往需要由几个相关人员的签字确认才可生效,且这种情况下对签名的顺序不做要求。数字签名技术以一种电子签名的方式,将签名对象与签名者互相绑定,可以保证签名的真实性。在电子商务和电子政务中数字签名保证了数据的完整性和不可否认性以及确定了文件的负责人。然而,随着数据的大量增长,传统的数字签名方案日益暴露出信息传输量大,签名长度过长,签名和验证效率低的弱点。
多签名方案允许一组签名者在同一个消息上共同生成一个签名,该签名可以被任何人验证,使得签名更加紧凑。多重签名的验证更快,它有助于减少带宽和验证和存储的成本。而且最终形成的签名大小和公钥长度都与签名者的数量无关。最近,多重签名引起了人们的广泛关注,因为它的这些优势正是区块链和加密货币所需要的。这样的多重签名提供了一个紧凑的签名和一个紧凑的聚合公钥。然而,在传统的基于schnorr多重签名方案中,签名人之间需要进行大量的通信。
区块链技术自2009年发布以来发展迅速,改变了信息传输模式,那么区块链作为建设信任机制,就有可能彻底改变整个人类社会的模式。我们基于区块链平台提出了一种改进的基于schnorr的多重签名方案,它适用于电子商务和电子政务场景。
技术实现要素:
本发明针对现有技术中存在的不足,提供一种基于区块链平台的多重签名方法。这种方法可减少通信次数,还能避免流氓秘钥攻击。
实现本发明目的的技术方案是:
一种基于区块链平台的多重签名方法,以椭圆曲线为基础生成密钥对,设
1)密钥对的生成:每个用户i,i∈{1,2,…,n}随机地选取随机数
2)签名阶段:对于每个签名者i,i∈{1,2,…,n}的工作方式如下:
(1)签名者首先计算值ai=hcom(yi||l),该值可用于验证签名者i是否在该签名集合l中以及在l中的身份,可信第三方为集合中的每个签名者i生成随机值
(2)各签名者i收到从可信第三方收到ri的和哈希值e,然后计算zi=ri+eaiximodq,最后将zi发送给签名统计者,统计者根据收到的{z1,…,zn}计算多重签名的第二部分
3)验证阶段:对于给定的消息m以及它的签名σ=(r,z)和签名者的集合l,验证者首先为每个签名者i计算ai=hcom(yi||l),然后计算e=hsig(l||m||r),最后验证等式
假定每个签名者都诚实地生成了自己的公私钥对,那么正确性可证明如下:
考虑到可能存在不安全的执行环境的问题,我们可先建立可信执行环境(trustedexecutionenvironment,简称tee)。
本技术方案与现有技术相比:
减少了传统基于schnorr多重签名方案签名人之间通信次数过多的问题,同样避免了流氓秘钥攻击。
这种方法可减少通信次数,还能避免流氓秘钥攻击。
附图说明
图1为实施例中签名阶段的流程示意图;
图2为实施例中初始化签名阶段的流程图;
图3为实施例中联合签名阶段的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述,但不是对本发明的限定。
实施例:
本例以在hyperledgerfabric上实现为例,选取椭圆曲线的位数p-256,在hyperledgerfabric中被称为链码的智能合约为可信第三方。
一种基于区块链平台的多重签名方法,以椭圆曲线为基础生成密钥对,设
1)密钥对的生成:每个用户i,i∈{1,2,…,n}随机地选取随机数xi←zq*,来生成自己的公私钥对(yi,xi),其中yi=xi·g;本例fabric中所有用户的公私钥对都由fabric-ca生成注册,并且管理联盟成员信息,各用户可通过fabric-ca查询其他用户的身份信息;
由于本例hyperledgerfabric中链码将生成的随机值用由签名发起者传输的签名集合l中对应各签名者的公钥进行ecc加密,保证了获得随机值的签名者是属于签名集合的,所以本例不需要计算ai的值;
2)签名阶段:如图1所示,对于每个签名者i,i∈{1,2,…,n}的工作方式如下:
(1)签名者首先计算值ai=hcom(yi||l),该值可用于验证签名者i是否在该签名集合l中以及在l中的身份,可信第三方为集合中的每个签名者i生成随机值
(2)各签名者i收到从可信第三方收到ri的和哈希值e,然后计算zi=ri+eaiximodq,最后将zi发送给签名统计者,统计者根据收到的{z1,…,zn}计算多重签名的第二部分
3)验证阶段:对于给定的消息m以及它的签名σ=(r,z)和签名者的集合l,验证者首先为每个签名者i计算ai=hcom(yi||l),然后计算e=hsig(l||m||r),最后验证等式
假定每个签名者都诚实地生成了自己的公私钥对,那么正确性可证明如下: