密钥生成方法、签名和验签方法、装置、设备和介质制造方法及图纸

技术编号:28326036 阅读:21 留言:0更新日期:2021-05-04 13:07
本申请公开了一种密钥生成方法、签名和验签方法、装置、设备和介质,涉及计算机加密技术和区块链技术领域,可用于云计算领域。具体实现方案为:生成本机节点的单机私钥和单机公钥;其中,多方节点各自的单机公钥为第二阿贝尔群中的元素;根据所有节点的单机公钥生成公共公钥;根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。本申请能够提高密钥生成的安全性及隐私性。

【技术实现步骤摘要】
密钥生成方法、签名和验签方法、装置、设备和介质
本申请涉及计算机
,尤其涉及计算机加密技术和区块链
,具体涉及一种密钥生成方法、签名和验签方法、装置、设备和介质。
技术介绍
随着计算机所处理业务的复杂度提升,已经大量出现了需要多个参与方协作来完成的业务。在多方业务中,可采用多方安全计算技术来保证各个参与方之间进行协作来完成任务的计算。多方安全计算技术中会采用门限签名技术来保证数据交互的安全性。门限签名技术是密码学签名领域的一个前沿技术方向。在门限签名技术中,各参与方所采用的密钥,是进行签名的关键技术。现有门限签名技术往往采用中心化密钥生成方式,这在一定程度上会降低密钥的安全性。
技术实现思路
本公开提供了一种密钥生成方法、签名和验签方法、装置、设备和介质。根据本公开的一方面,提供了一种密钥生成方法,由多方节点中的任一节点执行,所述方法包括:生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;根据所有节点的单机公钥生成公共公钥;根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。根据本公开的一方面,提供了一种基于密钥的门限签名方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述方法包括:采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;根据各实际参与节点的单机签名值,生成总签名值;根据各实际参与节点的单机公钥,产生签名参数;将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。根据本公开的一方面,提供了一种基于密钥的门限签名验签方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述签名结果为本公开实施例任一项所述的基于密钥的门限签名方法所生成的,所述验签方法包括:获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。根据本公开的一方面,提供了一种密钥生成装置,配置于多方节点中的任一节点中,所述装置包括:单机私钥和公钥生成模块,用于本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;公共公钥生成模块,用于根据所有节点的单机公钥生成公共公钥;门限公钥生成模块,用于根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;身份公钥生成模块,用于根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。根据本公开的一方面,提供了一种基于密钥的门限签名装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述装置包括:单机签名值生成模块,用于采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;总签名值生成模块,用于根据各实际参与节点的单机签名值,生成总签名值;签名参数生成模块,用于根据各实际参与节点的单机公钥,产生签名参数;签名结果生成模块,用于将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。根据本公开的一方面,提供了一种基于密钥的门限签名验签装置,配置于多方节点中的任一节点中,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为本公开实施例任一项所述的密钥生成方法所生成的,所述签名结果为本公开实施例任一项所述的基于密钥的门限签名方法所生成的,所述验签装置包括:数据获取模块,用于获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;签名验证模块,用于采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。根据本公开的一方面,提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开实施例中任一项所述的密钥生成方法,或基于密钥的门限签名方法,或基于密钥的门限签名验签方法。根据本公开的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本公开实施例中任一项所述的密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本公开实施例中任一项所述的密钥生成方法、基于密钥的门限签名方法或者基于密钥的门限签名验签方法。根据本公开的技术能够提高密钥生成的安全性及隐私性,进而提高了数据交互的安全性。应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。附图说明附图用于更好地理解本方案,不构成对本公开的限定。其中:图1是根据本申请实施例提供的一种密钥生成方法的流程示意图;图2A是根据本申请实施例提供的另一种密钥生成方法的流程示意图;图2B是本申请实施例中的公共公钥的生成过程的流程示意图;图3A是根据本申请实施例提供的一种基于密钥的门限签名方法的流程示意图;图3B是本申请实施例中门限公钥生成过程的流程示意图;图4根据本申请实施例提供的另一种密钥生成方法的流程示意图;图5是根据本申请实施例提供的一种基于密钥的门限签名方法的流程示意图;图6是是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图;图7是根据本申请实施例提供的另一种基于密钥的门限签名方法的流程示意图;图8是根据本申请实施例提供的一种基于密钥的门限签名验签方法的流程示意图;图9是根据本申请实施例提供的一种密钥生成装置的结构示意图;图10是根据本申请实施例提供的一种基于密钥的门限签名装置的示意图;图11本文档来自技高网...

【技术保护点】
1.一种密钥生成方法,由多方节点中的任一节点执行,所述方法包括:/n生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;/n根据所有节点的单机公钥生成公共公钥;/n根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;/n根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。/n

【技术特征摘要】
1.一种密钥生成方法,由多方节点中的任一节点执行,所述方法包括:
生成本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
根据所有节点的单机公钥生成公共公钥;
根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;
根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。


2.根据权利要求1所述的方法,其中,根据所有节点的单机公钥生成公共公钥包括:
将所有节点的单机公钥Pi按照如下公式进行累加,以生成所述公共公钥PC:
PC=sum(Pi)=P1+P2+……+PM;
其中,M为多方节点的节点数量。


3.根据权利要求2所述的方法,其中,将所有节点的单机公钥进行累加,以生成所述公共公钥之前,还包括:
将所述本机节点的单机公钥Pi传输给所述多方节点中的其他节点,并接收其他节点传输的、各自生成并传输的单机公钥Pj;其中,i,j∈[1,M],M为多方节点的节点数量。


4.根据权利要求1所述的方法,其中,根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥包括:
根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki;
根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi;
将每个节点的偏离公钥PKi进行累加,以计算确定门限公钥PD。


5.根据权利要求4所述的方法,其中,根据本机节点的单机公钥Pi和所述公共公钥PC,计算本机节点的单机公钥Pi相对于所述公共公钥PC的偏离值Ki包括:
根据本机节点的单机公钥Pi和所述公共公钥PC,采用如下公式计算所述偏离值Ki:
Ki=hash(hash(Pi)+hash(PC))

Ki=hash(Pi+PC)
其中,hash()为哈希函数。


6.根据权利要求4所述的方法,其中,根据每个节点的偏离值Ki和单机公钥Pi,计算确定每个节点的偏离公钥PKi之前,还包括:
根据接收到的其他节点的单机公钥,计算其他节点的偏离值和偏离公钥;或
接收其他节点各自计算并传输的偏离公钥。


7.根据权利要求1所述的方法,其中,根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥包括:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji,其中,j=1,2,…,M;
将生成的签名碎片Bji传输给对应节点编号j的节点,并接收其他节点各自生成并传输的签名碎片Bij;
根据本机生成和其他节点传输的M个签名碎片,进行累加以获得本机节点的身份公钥PE。


8.根据权利要求7所述的方法,其中,根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,为每个节点各自生成一个签名碎片Bji包括:
根据每个节点各自的编号j、所述门限公钥PD、本机节点i的偏离值Ki和单机私钥Xi,采用如下公式为每个节点各自生成一个签名碎片Bji:
Bji=Ki*Xi+Hash(PD||j),j=1,2,…,M
其中,Hash()为哈希函数,||代表字符串拼接。


9.一种基于密钥的门限签名方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述方法包括:
采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值;所述单机签名值为第一阿贝尔群的第一元素;
根据各实际参与节点的单机签名值,生成总签名值;
根据各实际参与节点的单机公钥,产生签名参数;
将所述总签名值、签名参数和所有实际参与节点的节点编号,进行封装,以产生签名结果。


10.根据权利要求9所述的方法,其中,采用门限公钥、以及本机节点的身份公钥和单机私钥,对待签名数据进行签名,以产生单机签名值包括:
采用门限公钥PD和待签名数据L进行拼接,并乘以第一阿贝尔群的基点G,以得到第一阿贝尔群的第一元素;
采用本机节点的单机私钥Xi乘以所述第一元素,以得到第一阿贝尔群的第二元素;
将所述第二元素加上本机节点的身份公钥PE,以得到本机节点的单机签名值Si;其中,所述单机签名值Si为第一阿贝尔群的第三元素。


11.根据权利要求9所述的方法,其中,根据各实际参与节点的单机签名值,生成总签名值包括:
根据各实际参与节点的单机签名值进行累加,以生成总签名值。


12.根据权利要求9所述的方法,其中,根据各实际参与节点的单机签名值,生成总签名值包括:
将本机节点的单机签名值按照设定顺序向其他实际参与节点传输,以供各所述实际参与节点顺序将单机签名值进行累加,并顺序传输,直至最后一个实际参与节点累加生成总签名值;或
将本机节点的单机签名值向实际参与节点中的设定节点传输,以供所述设定节点根据所有实际参与节点的单机签名值累加生成所述总签名值。


13.根据权利要求9-12任一所述的方法,其中,根据各实际参与节点的单机公钥,产生签名参数包括:
将所有实际参与节点的单机公钥Pi进行累加,以得到签名参数R。


14.根据权利要求9所述的方法,其中,所述待签名数据为区块链事务请求,所述多方节点中的至少一个节点为区块链节点。


15.一种基于密钥的门限签名验签方法,由多方节点中的任一节点执行,所述密钥包括单机私钥、单机公钥、公共公钥、门限公钥和身份公钥,所述密钥为权利要求1-8任一所述密钥生成方法所生成的,所述签名结果为权利要求9-14任一所述的基于密钥的门限签名方法所生成的,所述验签方法包括:
获取待签名数据作为验签数据,并根据所述签名结果确定的实际参与节点来获取所述实际参与节点的单机公钥和门限公钥;
采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证。


16.根据权利要求15所述的方法,其中,采用双线性映射函数,基于所述门限公钥、所述实际参与节点的单机公钥、第二阿贝尔群的基点以及待签名数据,对所述签名结果中的总签名值和签名参数进行签名验证包括:
验证如下公式是否成立:



其中,e()为双线性映射函数,且满足e(a,b)=c的函数关系,a、b、c分别是第二阿贝尔群、第一阿贝尔群和第三阿贝尔群的元素;N为实际参与节点编号的集合;L为待签名数据;hash1()为用于将待哈希内容转换为第一阿贝尔群中元素的哈希函数;G2为第二阿贝尔群的基点。


17.一种密钥生成装置,配置于多方节点中的任一节点,所述装置包括:
单机私钥和公钥生成模块,用于本机节点的单机私钥和单机公钥;其中,所述多方节点各自的单机公钥为第二阿贝尔群中的元素;
公共公钥生成模块,用于根据所有节点的单机公钥生成公共公钥;
门限公钥生成模块,用于根据每个节点的单机公钥相对于公共公钥的关系,生成门限公钥;
身份公钥生成模块,用于根据每个节点采用各自的单机私钥对所述门限公钥进行签名的签名碎片,分别生成每个节点的身份公钥。


...

【专利技术属性】
技术研发人员:荆博
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

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

1