一种多方签名方法、系统和设备技术方案

技术编号:37623919 阅读:8 留言:0更新日期:2023-05-18 12:15
一种多方签名方法、设备和系统,所述方法包括:n个签名方中的每方提供签名份额,其中,所述n个签名方对应的n个签名份额中的正确的签名份额通过由签名方基于门限签名算法采用该签名方的私钥份额进行签名而生成,所述n个签名方中包括t个恶意方;在t<n/3的情况中,所述n个签名方中的至少一方基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。其中d大于或者等于t。其中d大于或者等于t。

【技术实现步骤摘要】
一种多方签名方法、系统和设备


[0001]本说明书实施例属于区块链
,尤其涉及一种多方签名方法、系统和设备。

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。

技术实现思路

[0003]本专利技术的目的在于提供一种多方签名方案,以节省存储资源,提高系统效率。
[0004]本说明书第一方面提供一种多方签名方法,所述方法包括:
[0005]n个签名方中的每方提供签名份额,其中,所述n个签名方对应的n个签名份额中的正确的签名份额通过由签名方基于门限签名算法生成,所述n个签名方中包括t个恶意方;
[0006]在t<n/3的情况中,所述n个签名方中的至少一方基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。
[0007]第二方面提供一种多方签名方法,包括:
[0008]获取n个签名方各自的签名份额,其中,所述n个签名方对应的n个签名份额中的正确的签名份额通过由签名方基于门限签名算法生成,所述n个签名方中包括t个恶意方;
[0009]在t<n/3的情况中,基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。
[0010]第三方面提供一种多方签名系统,所述系统包括n个签名设备,
[0011]所述n个签名设备中的每个签名设备用于提供签名份额,其中,所述n个签名设备对应的n个签名份额中的正确的签名份额通过由签名设备基于门限签名算法生成,所述n个签名设备中包括t个恶意设备;
[0012]在t<n/3的情况中,所述n个签名设备中的至少一个签名设备用于基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。
[0013]第四方面提供一种多方签名设备,包括:
[0014]获取单元,用于获取n个签名方各自的签名份额,其中,所述n个签名方对应的n个签名份额中的正确的签名份额通过由签名方基于门限签名算法生成,所述n个签名方中包括t个恶意方;
[0015]计算单元,用于在t<n/3的情况中,基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。
[0016]第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面所述的方法。
[0017]第六方面提供一种多方签名设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
[0018]本申请提供的上述方案,在多个签名方进行门限签名时,不需要记录所有签名方的公钥信息,减少了存储空间的消耗,同时通信轮数减少,提高了系统效率。
附图说明
[0019]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020]图1示出了一实施例中的区块链架构图;
[0021]图2为本说明书实施例中的系统架构图;
[0022]图3为本说明书实施例中的秘密分享方法的流程图;
[0023]图4为本说明书实施例中各个签名方生成Schnorr签名份额的方法流程图;
[0024]图5为本说明书实施例中的一种秘密重建方法的流程图;
[0025]图6为本说明书实施例中的一种多方签名设备的架构图。
具体实施方式
[0026]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0027]图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链中包括N个节点,图1中示意示出节点1

节点8。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。这些节点上可存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点可通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点可存储相同的状态数据库。
[0028]区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。
[0029]区块链中可提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。在区块链中调用智能合约,是发起一笔指向智能合约地址的交易,使得区块链中每个节点分布式地运行智能合约代码。
[0030]在部署合约的场景中,例如,Bob将一个包含创建智能合约信息(即部署合约)的交易发送到如图1所示的区块链中,该交易的data字段包括待创建的合约的代码(如字节码或者机器码),交易的to字段为空,以表示该交易用于部署合约。节点间通过共识机制达成一致后,确定合约的合约地址“0x6f8ae93
…”
,各个节点在状态数据库中添加与该智能合约的合约地址对应的合约账户,分配与该合约账户对应的状态存储,并存储合约代码,将合约代码的哈希值保存在该合约的状态存储中,从而合约创建成功。
[0031]在调用合约的场景中,例如,Bob将一个用于调用智能合约的交易发送到如图1所示的区块链中,该本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多方签名方法,所述方法包括:n个签名方中的每方提供签名份额,其中,所述n个签名方对应的n个签名份额中的正确的签名份额通过由签名方基于门限签名算法生成,所述n个签名方中包括t个恶意方;在t<n/3的情况中,所述n个签名方中的至少一方基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,所述第一多项式在任一签名方传输错误的签名份额的情况下的值为零,所述n个签名份额对应于第二多项式,所述第二多项式为d度多项式,其中d大于或者等于t。2.根据权利要求1所述的方法,所述n个签名份额为各签名方对区块链中的第一交易进行签名而生成,所述n个签名方中的至少一方基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名包括:所述n个签名方中的第一签名方从其他各个第二签名方分别接收签名份额,基于第一多项式和所述n个签名份额计算所述n个签名份额对应的完整签名,将所述完整签名发送给各个所述第二签名方;各个所述第二签名方分别使用公钥对所述完整签名进行验证,所述公钥基于所述n个签名方各自的私钥份额计算得到,所述方法还包括:所述第一签名方在各个所述第二签名方验证通过之后,将所述第一交易、所述完整签名和所述公钥发送到区块链中。3.根据权利要求2所述的方法,所述门限签名算法包括Schnorr门限签名算法,所述方法还包括:所述n个签名方分别生成与第三签名方对应的n个第一秘密分享值,将所述n个第一秘密分享值发送给所述第三签名方;所述第三签名方基于所述n个第一秘密分享值获取第一秘密值,将自身生成的第二秘密值与所述第一秘密值的第一差值发送给所述n个签名方中的其他各个第四签名方;任一所述第四签名方基于所述第一差值和该第四签名方生成的所述第一秘密分享值计算与所述第三签名方对应的私钥分量;任一所述第四签名方基于与所述n个签名方分别对应的私钥分量得到该第四签名方的私钥份额。4.根据权利要求3所述的方法,所述第三签名方基于所述n个第一秘密分享值获取第一秘密值包括:在t<n/3的情况中,所述第三签名方基于第三多项式和所述n个第一秘密分享值计算第一秘密值,所述第三多项式在任一签名方传输错误的第一秘密分享值的情况下的值为零,所述n个第一秘密分享值对应于第四多项式,所述第四多项式为d度多项式,其中d大于或者等于t;在t<n/2的情况中,所述第三签名方基于所述n个第一秘密分享值确定是否能够重建与所述n个第一秘密分享值对应的第五多项式,在能够重建的情况中,基于所述第五多项式获得所述n个第一秘密分享值对应的第一秘密值。5.根据权利要求3所述的方法,还包括:所述n个签名方分别生成与第三签名方对应的n个第二秘密分享值,将所述n个第二秘
密分享值发送给所述第三签名方;所述第三签名方基于所述n个第二秘密分享值获取第三秘密值,将自身生成的第四秘密值与所述第三秘密值的第二差值发送给所述n个签名方中的其他各个第四签名方;任一所述第四签名方基于所述第二差值和该第四签名方生成的所述第二秘密分享值计算与所述第三签名方对应的秘密随机数分量;任一所述第四签名方基于与所述n个签名方分别对应的秘密随机数分量得到该第四签名方的秘密随机数份额。6.根据权利要求5所述的方法,还包括:任一所述第四签名方从其他各方接收与各方私钥份额对应的公钥份额、以及与各方秘密随机数份额对应的公开随机数份额;基于所述n个签名方各自的公钥份额重建得到公钥,基于所述n个签名方各自的公开随机数份额重建得到公开随机数;基于所述公钥、公开随机数、所述第一交易、及所述第四签名方的私钥份额和秘密随机数份额计算所述第四签名方的签名份额。7.根据权利要求3所述的方法,所述n个签名方分别生成与第三签名...

【专利技术属性】
技术研发人员:金玲飞郑云涛魏长征
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

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

1