本申请实施例涉及计算机技术,尤其涉及一种密钥生成方法和装置。
背景技术:
作为比特币等加密货币的底层技术,区块链通过密码学技术和共识机制实现了去中心化,并可以通过脚本或智能合约实现可强制执行的交易。区块链由所有参与方共同维护,对外公开透明,可作为可信第三方实现去中心化、中介化。因此区块链技术在金融、证券、保险、支付、供应链、公证、物联网、云计算等领域受到广泛的重视和初步的应用。
联盟链作为一种形式的区块链,逐渐得到了广泛的应用。其中,每个联盟链的交易节点具有密钥,密钥用于保护联盟链中交易信息、联盟链的记账节点对交易节点的授权、联盟链的记账节点对交易信息的验证等等,因此,交易节点的密钥对于联盟链的维护具有重要的作用。目前联盟链中的交易节点的密钥的私钥丢失后无法找回,影响了联盟链的正常运行。
技术实现要素:
本申请实施例提供了一种密钥生成方法和装置,使得交易节点的私钥在丢失可找回,保证了区块链的正常运行。
第一方面,本申请实施例提供了一种密钥生成方法,应用于区块链系统中的交易节点,包括:
从n个第一记账节点获取所述交易节点的n份第一部分私钥份额,所述第一记账节点为所述交易节点的且与所述交易节点相邻的上层区块链中的记账节点;所述n份第一部分私钥份额与所述n个第一记账节点一一对应,n为大于等于2的正整数;
根据所述n份第一部分私钥份额,生成所述交易节点的私钥;
其中,所述第一部分私钥份额是该第一部分私钥份额对应的第一记账节点根据该第一记账节点的私钥份额生成的,该第一记账节点的私钥份额为该第一记账节点所在区块链的私钥在该第一记账节点上存储的信息。
该方案中,区块链系统中的交易节点的私钥是根据n份部分私钥份额生成的,n份部分私钥份额是交易节点的且与交易节点相邻的上层区块链中n个记账节点生成的,因此,在私钥丢失时,可以向上层区块链节点申请重新发送该n份部分私钥份额,然后重新根据该n份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
在一种可能的设计中,还包括:根据所述交易节点的标识和所述上层区块链的标识,生成所述交易节点的公钥。
该方案中,区块链系统中的交易节点的公钥中包括交易节点的标识,在出现非法交易时,可快速的确定发起非法交易的节点。
在一种可能的设计中,所述根据所述n份第一部分私钥份额,生成所述交易节点的私钥,包括:
将每份第一部分私钥份额的第u个元素采用拉格朗日插值法处理,得到处理后的第u个元素;所述u=1,2;
将n份第一部分私钥份额对应的n份处理后的第u个元素相乘,得到所述交易节点的私钥的第u个元素。
该方案提供了交易节点根据n份第一部分私钥份额,生成交易节点的私钥的具体方法。
在一种可能的设计中,所述区块链系统包括的区块链的层数大于等于2层;
所述第一记账节点的私钥份额是该第一记账节点根据从m个第二记账节点接收到的该第一记账节点的m份第二部分私钥份额生成的,所述m份第二部分私钥份额与所述m个第二记账节点一一对应,m为大于等于2的正整数;
其中,所述第二记账节点为所述第一记账节点的且与所述第一记账节点相邻的上层区块链中的记账节点。
该方案提供了所述第一记账节点的私钥份额的获取方法。
在一种可能的设计中,第j个第一记账节点的私钥份额是根据所述区块链系统的系统公钥的w-1个元素、第一记账节点所在区块链的标识、所述区块链系统的顶层区块链的各顶层记账节点生成的第一子随机数之和、所述第一记账节点的各上层区块链的各记账节点生成的第二子随机数之和、第一记账节点所在区块链的私钥恢复门限值以及所述j得到的;
其中,w为所述区块链系统的系统公钥包括的元素个数,所述第一子随机数之和小于所述区块链系统对应的双线性群的阶数的正整数,所述第一记账节点的每个上层区块链的各记账节点生成的第二子随机数之和小于所述双线性群的阶数;w为大于等于5的整数,j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
该方案提供了所述第一记账节点的私钥份额的获取方法。
在一种可能的设计中,根据所述区块链系统对应的双线性群的生成元、所述生成元的α次方和所述双线性群中的k+2个元素,生成所述区块链系统的系统公钥;
其中,所述α为各所述顶层记账节点生成的第一子随机数之和,所述k为所述区块链系统包括的区块链的层数。
该方案提供了系统公钥的生成方法。
在一种可能的设计中,所述顶层区块链中的第i个顶层记账节点的私钥份额的各元素依次为:
该方案提供了顶层区块链中顶层记账节点的私钥份额的设置方法。
第二方面,本申请实施例提供一种密钥生成方法,应用于区块链系统中的第一记账节点,所述第一记账节点为所述区块链系统中交易节点的且与所述交易节点相邻的上层区块链中的记账节点,包括:
获取所述第一记账节点的私钥份额;其中,所述第一记账节点的私钥份额为所述第一记账节点所在区块链的私钥在该第一记账节点上存储的信息;
根据所述第一记账节点的私钥份额,生成所述交易节点的第一部分私钥份额;
将所述第一部分私钥份额发送至所述交易节点,所述第一部分私钥份额用于所述交易节点生成所述交易节点的私钥。
该方案中,区块链系统中的第一记账节点向交易节点的发送n份部分私钥份额,以使交易节点根据n份部分私钥份额生成交易节点的私钥,因此,在私钥丢失时,n个第一记账节点可根据第一记账节点的申请,重新发送该n份部分私钥份额至交易节点,以使交易节点重新根据该n份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
在一种可能的设计中,所述获取所述第一记账节点的私钥份额,包括:
从m个第二记账节点中获取所述第一记账节点的m份第二部分私钥份额,所述第二记账节点为与所述第一记账节点相邻的所述第一记账节点的上层区块链中的记账节点;m为大于等于2的正整数;
根据所述m份第二部分私钥份额,生成所述第一记账节点的私钥份额。
该方案提供了第一记账节点的私钥份额的获取方法,该方法在第一记账节点的私钥份额丢失后,可向m个第二记账节点申请重新发送m份第二部分私钥份额,根据m份第二部分私钥份额重新生成第一记账节点的私钥份额;由于交易节点的部分私钥份额是第一记账节点根据自身的私钥份额生成的,因此交易节点的部分私钥份额也可以重新生成,保证了交易节点的私钥可重新生成。
在一种可能的设计中,所述根据所述第一记账节点的私钥份额,生成所述交易节点的第一部分私钥份额,包括:
根据所述第一记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述交易节点的标识、所述第一记账节点在生成所述第一记账节点的私钥份额后生成的目标随机数,生成所述交易节点的第一部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数。
该方案提供了所述交易节点的第一部分私钥份额的获取方法。
在一种可能的设计中,所述根据所述m份第二部分私钥份额,生成所述第一记账节点的私钥份额,包括:
将每份第二部分私钥份额的第v个元素采用拉格朗日插值法处理,得到处理后的第v个元素;所述v=1,2,3;
将m份第二部分私钥份额对应的m份处理后的第v个元素相乘,得到所述第一记账节点的私钥份额的第v个元素。
该方案提供了所述第一记账节点的私钥份额的具体获取方法。
在一种可能的设计中,还包括:
根据从至少一个交易节点接收的至少一个交易信息,得到当前待生成区块的区块头;
生成第三随机数,所述第三随机数为所述区块链系统对应的双线性群的阶数的正整数;
根据所述区块头生成小于所述双线性群的阶数的哈希值;
根据所述第一记账节点的私钥份额、所述第三随机数、所述哈希值和所述双线性群的生成元,获取所述区块头的部分签名。
该方案使得第一记账节点的相邻的上层记账节点可以验证第一记账节点生成的区块的合法性。
在一种可能的设计中,还包括:
从n-1个其它第一记账节点接收所述区块头的部分签名;
根据n个所述区块头的部分签名,生成发送至第二记账节点的所述区块头的完整签名,所述n为所述第一记账节点所在层的私钥恢复门限值;
将所述区块头和所述区块头的完整签名发送至所述第二记账节点,所述区块头和所述区块头的完整签名用于所述第二记账节点验证所述区块头是否合法,所述第二记账节点为所述第一记账节点的且与所述第一记账节点相邻的上层区块链中的记账节点。
该方案保证了生成第一记账节点生成的区块的合法性。
第三方面,本申请实施例提供一种密钥生成方法,应用于区块链系统中的第二记账节点,包括:
获取所述第二记账节点的私钥份额;其中,所述第二记账节点的私钥份额为所述第二记账节点所在区块链的私钥在该第二记账节点上存储的信息;
根据所述第二记账节点的私钥份额,生成第一记账节点的第二部分私钥份额,所述第一记账节点为所述第二记账节点的且与所述第二记账节点相邻的下层区块链中的记账节点;
将所述第二部分私钥份额发送至所述第一记账节点,所述第二部分私钥份额用于所述第一记账节点生成所述第一记账节点的私钥份额,所述第一记账节点的私钥份额用于生成交易节点的私钥。
该方案提供了任意一层记账节点的私钥份额的获取方法,该方法下层的私钥份额是根据上层为下层生成的部分私钥份额得到的,使得任意一层的记账节点的私钥份额均可在丢失后恢复,区块链系统中的各节点的部分私钥份额也均可在丢失后恢复,保证了交易节点的私钥可重新生成。
在一种可能的设计中,所述获取所述第二记账节点的私钥份额,包括:
从p个第三记账节点中获取所述第二记账节点的p份第三部分私钥份额,所述第三记账节点为所述第二记账节点的且与所述第二记账节点相邻的上层区块链中的记账节点;p为大于等于2的正整数;
根据所述p份第三部分私钥份额,生成所述第二记账节点的私钥份额。
该方案提供了除了最底层和顶层区块链中的记账节点的私钥份额的获取方法。
在一种可能的设计中,所述第一记账节点为第j个第一记账节点;所述根据所述第二记账节点的私钥份额,生成第一记账节点的第二部分私钥份额,包括:
根据所述第二记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述第二记账节点在生成所述第二记账节点的私钥后生成的目标随机数和当自变量为j时n-1次多项式的值,生成所述第一记账节点的第二部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数,所述n为所述第二记账节点所在层的私钥恢复门限值,所述n-1次多项式的系数为n-1个小于所述双线性群的阶数的正整数,n为所述第一记账节点所在区块链的私钥恢复门限值,n为大于等于2的正整数;j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
该方案提供了第一记账节点的第二部分私钥份额的获取方法。
在一种可能的设计中,所述根据所述p份第三部分私钥份额,生成所述第二记账节点的私钥份额,包括:
将每份第三部分私钥份额的第o个元素采用拉格朗日插值法处理,得到处理后的第o个元素,所述o=1,2,…o,o=k-k+2,所述第二记账节点在所在的区块链为所述区块链系统中的第k层区块链,k≥1,k≥3,所述k为所述区块链系统包括的区块链的层数,k=1……,k,所述区块链系统的顶层区块链为第0层区块链;
将p份第三部分私钥份额对应的p份处理后的第o个元素相乘,得到所述第二记账节点的私钥份额的第o个元素。
该方案提供了除了最底层和顶层区块链中的记账节点的私钥份额的具体获取方法。
第四方面,本申请实施例提供一种密钥生成装置,包括:
获取模块,用于从n个第一记账节点获取交易节点的n份第一部分私钥份额,所述第一记账节点为交易节点的且与所述交易节点相邻的上层区块链中的记账节点;所述n份第一部分私钥份额与所述n个第一记账节点一一对应,n为大于等于2的正整数;
生成模块,用于根据所述n份第一部分私钥份额,生成所述交易节点的私钥;
其中,所述第一部分私钥份额是该第一部分私钥份额对应的第一记账节点根据该第一记账节点的私钥份额生成的,该第一记账节点的私钥份额为该第一记账节点所在区块链的私钥在该第一记账节点上存储的信息。
在一种可能的设计中,所述生成模块,还用于根据所述交易节点的标识和所述上层区块链的标识,生成所述交易节点的公钥。
在一种可能的设计中,所述根据所述n份第一部分私钥份额,生成所述交易节点的私钥,包括:
将每份第一部分私钥份额的第u个元素采用拉格朗日插值法处理,得到处理后的第u个元素;所述u=1,2;
将n份第一部分私钥份额对应的n份处理后的第u个元素相乘,得到所述交易节点的私钥的第u个元素。
在一种可能的设计中,所述区块链系统包括的区块链的层数大于等于2层;
所述第一记账节点的私钥份额是该第一记账节点根据从m个第二记账节点接收到的该第一记账节点的m份第二部分私钥份额生成的,所述m份第二部分私钥份额与所述m个第二记账节点一一对应,m为大于等于2的正整数;
其中,所述第二记账节点为与所述第一记账节点相邻的所述第一记账节点的上层区块链中的记账节点。
在一种可能的设计中,第j个第一记账节点的私钥份额是根据所述区块链系统的系统公钥的w-1个元素、第一记账节点所在区块链的标识、所述区块链系统的顶层区块链的各顶层记账节点生成的第一子随机数之和、所述第一记账节点的各上层区块链的各记账节点生成的第二子随机数之和、第一记账节点所在区块链的私钥恢复门限值以及所述j得到的;
其中,w为所述区块链系统的系统公钥包括的元素个数,所述第一子随机数之和小于所述区块链系统对应的双线性群的阶数的正整数,所述第一记账节点的每个上层区块链的各记账节点生成的第二子随机数之和小于所述双线性群的阶数;w为大于等于5的整数,j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
在一种可能的设计中,所述区块链系统的系统公钥的元素依次为所述区块链系统对应的双线性群的生成元、所述生成元的α次方、所述双线性群中的k+2个元素;
其中,所述α为各所述顶层记账节点生成的第一子随机数之和,所述k为所述区块链系统包括的区块链的层数。
在一种可能的设计中,所述顶层区块链中的第i个顶层记账节点的私钥份额的各元素依次为:
第五方面,本申请实施例提供一种密钥生成装置,包括:
获取模块,用于获取第一记账节点的私钥份额;其中,所述第一记账节点的私钥份额为所述第一记账节点所在区块链的私钥在该第一记账节点上存储的信息;所述第一记账节点为所述区块链系统中交易节点的且与所述交易节点相邻的上层区块链中的记账节点,
生成模块,用于根据所述第一记账节点的私钥份额,生成所述交易节点的第一部分私钥份额;
发送模块,用于将所述第一部分私钥份额发送至所述交易节点,所述第一部分私钥份额用于所述交易节点生成所述交易节点的私钥。
在一种可能的设计中,所述获取模块,具体用于:
从m个第二记账节点中获取所述第一记账节点的m份第二部分私钥份额,所述第二记账节点为与所述第一记账节点相邻的所述第一记账节点的上层区块链中的记账节点;m为大于等于2的正整数;
所述生成模块,还用于根据所述m份第二部分私钥份额,生成所述第一记账节点的私钥份额
在一种可能的设计中,所述生成模块,具体用于:
根据所述第一记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述交易节点的标识、所述第一记账节点在生成所述第一记账节点的私钥份额后生成的目标随机数,生成所述交易节点的第一部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数。
在一种可能的设计中,所述生成模块,具体用于:
将每份第二部分私钥份额的第v个元素采用拉格朗日插值法处理,得到处理后的第v个元素;所述v=1,2,3;
将m份第二部分私钥份额对应的m份处理后的第v个元素相乘,得到所述第一记账节点的私钥份额的第v个元素。
在一种可能的设计中,所述获取模块,还用于根据从至少一个交易节点接收的至少一个交易信息,得到当前待生成区块的区块头;
所述生成模块,还用于:
生成第三随机数,所述第三随机数为所述区块链系统对应的双线性群的阶数的正整数;以及,
根据所述区块头生成小于所述双线性群的阶数的哈希值;以及,
根据所述第一记账节点的私钥份额、所述第三随机数、所述哈希值和所述双线性群的生成元,获取所述区块头的部分签名。
在一种可能的设计中,所述获取模块,还用于从n-1个其它第一记账节点获取所述区块头的部分签名;
所述生成模块,还用于:根据n个所述区块头的部分签名,生成发送至第二记账节点的所述区块头的完整签名,所述n为所述第一记账节点所在层的私钥恢复门限值;
所述发送模块,还用于将所述区块头和所述区块头的完整签名发送至所述第二记账节点,所述区块头和所述区块头的完整签名用于所述第二记账节点验证所述区块头是否合法,所述第二记账节点为所述第一记账节点的且与所述第一记账节点相邻的上层区块链中的记账节点。
第六方面,本申请实施例提供一种密钥生成装置,包括:
获取模块,用于获取所述第二记账节点的私钥份额;其中,所述第二记账节点的私钥份额为所述第二记账节点所在区块链的私钥在该第二记账节点上存储的信息;
生成模块,用于根据所述第二记账节点的私钥份额,生成第一记账节点的第二部分私钥份额,所述第一记账节点为所述第二记账节点的且与所述第二记账节点相邻的下层区块链中的记账节点;
发送模块,用于将所述第二部分私钥份额发送至所述第一记账节点,所述第二部分私钥份额用于所述第一记账节点生成所述第一记账节点的私钥份额,所述第一记账节点的私钥份额用于生成交易节点的私钥。
在一种可能的设计中,所述获取模块,具体用于:
从p个第三记账节点中获取所述第二记账节点的p份第三部分私钥份额,所述第三记账节点为所述第二记账节点的且与所述第二记账节点相邻的上层区块链中的记账节点;p为大于等于2的正整数;
所述生成模块,具体用于:根据所述p份第三部分私钥份额,生成所述第二记账节点的私钥份额。
在一种可能的设计中,所述第一记账节点为第j个第一记账节点;所述生成模块,具体用于:
根据所述第二记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述第二记账节点在生成所述第二记账节点的私钥后生成的目标随机数和当自变量为j时n-1次多项式的值,生成所述第一记账节点的第二部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数,所述n为所述第二记账节点所在层的私钥恢复门限值,所述n-1次多项式的系数为n-1个小于所述双线性群的阶数的正整数,n为所述第一记账节点所在区块链的私钥恢复门限值,n为大于等于2的正整数;j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
在一种可能的设计中,所述生成模块,具体用于:
将每份第三部分私钥份额的第o个元素采用拉格朗日插值法处理,得到处理后的第o个元素,所述o=1,2,…o,o=k-k+2,所述第二记账节点在所在的区块链为区块链系统中的第k层区块链,k≥1,k≥3,所述k为所述区块链系统包括的区块链的层数,k=1……,k,所述区块链系统的顶层区块链为第0层区块链;
将p份第三部分私钥份额对应的p份处理后的第o个元素相乘,得到所述第二记账节点的私钥份额的第o个元素。
第七方面,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第二方面或第三方面任一所述的方法。
第八方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序或指令,当所述程序或指令在计算机上运行时,第一方面或第二方面或第三方面任一所述的方法被执行。
本申请的区块链系统中,交易节点的私钥是根据n份部分私钥份额生成的,n份部分私钥份额是交易节点的且与交易节点相邻的上层区块链中n个记账节点生成的,因此,在私钥丢失时,可以向上层区块链节点申请重新发送该n份部分私钥份额,然后重新根据该n份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
附图说明
图1为本申请实施例提供的区块链系统的结构示意图;
图2为本申请实施例提供的密钥生成方法的交互图一;
图3为本申请实施例提供的密钥生成方法的交互图二;
图4为本申请实施例提供的区块链系统的结构示意图;
图5为本申请实施例提供的密钥生成装置的结构示意图一;
图6为本申请实施例提供的密钥生成装置的结构示意图二;
图7为本申请实施例提供的密钥生成装置的结构示意图三;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
首先对本申请实施例所涉及的技术名词进行解释。
门限为(t,n)的秘密共享:一个秘密共享在n个设备中,其中的任意t个设备都可以合作重构出秘密,而少于t个设备则不能正确地重构出该秘密,其中,t可称为秘密恢复门限值,在本申请生成密钥的场景中,t可称为私钥恢复门限值。
部分私钥份额:层次式区块链系统中,第k层区块链的记账节点a根据第k+1层区块链的私钥恢复门限值和该记账节点a的私钥份额为第k+1层区块链的记账节点b生成的私钥,称为该记账节点b的部分私钥份额。记账节点a为第k层区块链中的任意一个记账节点,记账节点b为第k+1层区块链中的任意一个记账节点。第k+1层区块链为第k层区块链的下层区块链。
私钥份额:层次式区块链系统中,第k层区块链的私钥共享在第k层区块链的nk个记账节点中,第k层区块链的每个记账节点中存储有第k层区块链的私钥的部分信息,则第k层区块链的记账节点a中存储的第k层区块链的私钥的部分信息即为记账节点a的私钥份额。该记账节点a的私钥份额是根据第k-1层区块链中的tk-1个记账节点为该记账节点a生成的部分私钥份额生成的。其中,tk-1为第k-1层区块链的私钥恢复门限值,nk为第k层区块链包括的记账节点的总数。
双线性群:bilineargroups,即密码学中满足双线性、非退化性、可计算的群,两个双线性群中的元素可以映射到另一个群中的元素。
图1为本申请实施例提供的区块链系统的结构示意图。
在层次式区块链系统中的每一条区块链均为独立的区块链,由共识节点负责区块链的维护。区块链中的节点可运行用拜占庭容错算法(practicalbyzantinefaulttolerance,简称pbft)共识机制产生区块、验证区块。例如在图1中的层次式区块链系统包括3层区块链:顶层区块链,中层区块链和底层区块链,其中,顶层区块链有1条,中层区块链具有3条,底层区块链具有8条。顶层区块链系统中的共识节点在整个系统启动时设定并配置好公私钥,它们是整个系统的安全基础。顶层区块链系统中的共识节点维护的区块链中记录了对下层区块链(即图1中的中层区块链)共识节点的授权信息,中层区块链系统的区块必须由得到顶层区块链授权的共识节点产生,否则即为非法区块。图1中的底层区块链是叶子区块链,直接处理物联网设备的交易信息,底层区块链的共识节点对物联网设备进行授权(准入控制),只有得到授权的物联网设备才可以在层次式区块链系统中进行交易。
其中,物联网设备可称为交易节点,共识节点可称为记账节点。区块链中的记账节点可为服务器,交易节点可为服务器或终端设备。
本申请实施例中生成密钥的方法基于门限为(t,n)的秘密共享。具体地,在具有k层区块链的层次式区块链系统中,第k层区块链的记账节点的总数为nk,私钥恢复门限值为tk,则第k+1层的记账节点b的私钥份额需根据第k层区块链的tk个记账节点分别为该记账节点b生成的tk份部分私钥份额来生成。第k-1层区块链的记账节点的总数为nk-1,私钥恢复门限值为tk-1,第k-1层区块链为交易节点的且与交易节点相邻的上层区块链,也为层次式区块链系统的最底层区块链,则交易节点的私钥需要根据第k-1层区块链的tk-1个记账节点为该交易节点生成的tk-1份部分私钥份额来生成;k=0,……,k,k为整数,顶层区块链为第0层区块链。
结合上述阐述,下面采用具体的实施例对本申请实施例提供的密钥生成方法进行说明。
图2为本申请实施例提供的密钥生成方法的交互图一,参见图2,本实施例的方法包括:
步骤s101、第一记账节点获取该第一记账节点的私钥份额;第一记账节点为交易节点的且与交易节点相邻的上层区块链中的记账节点。
具体地,第一记账节点可为该交易节点的且与该交易节点相邻的上层区块链中的记账节点中的任意一个记账节点。
在第一种场景中:该交易节点所属的区块链系统具有多层区块链,则该交易节点所属的区块链系统为层次式区块链系统,该第一记账节点为层次式区块链系统中最底层的区块链中的节点。
在第二种场景中:该交易节点所在的区块链系统具有一层区块链,则第一记账节点为该层区块链中的记账节点,若只有一层区块链的区块链系统也认为是层次式区块链系统,则此时可以认为第一记账节点为该区块链系统中的顶层区块链中的记账节点或最底层区块链中的记账节点。
下面分别对上述两种场景中的第一记账节点获取该第一记账节点的私钥份额的方法进行说明。
对于第一种场景:第一记账节点获取该第一记账节点的私钥份额的方法,包括:
a1、从m个第二记账节点中获取该第一记账节点的m份第二部分私钥份额,第二记账节点为该第一记账节点的且与该第一记账节点相邻的上层区块链中的记账节点;m为大于等于2的正整数。
具体地,若交易节点所在的层次式区块链系统中具有k层区块链,该交易节点的且与该交易节点相邻的上层区块链为与交易节点对应的第k-1层区块链,即第一记账节点为与交易节点对应的第k-1层区块链中的记账节点,第二记账节点为与该交易节点对应的第k-2层区块链中的节点。
其中,若与该交易节点对应的第k-2层区块链中总共具有nk-2个记账节点(也是nk-2个第二记账节点),m为第二记账节点所在的第k-2层区块链的私钥恢复门限值,nk-2大于m。nk-2个第二记账节点会各自为该第一记账节点生成一份第二部分私钥份额,得到nk-2份第二部分私钥份额。该第一记账节点除了从m个第二记账节点中获取第一记账节点的m份第二部分私钥份额,还可以从剩余的nk-2-m个第二记账节点中获取第一记账节点的nk-2-m份第二部分私钥份额。而在基于门限为(t,n)的秘密共享的方法中,在第二记账节点所在的第k-2层区块链的私钥恢复门限值为m时,该第一记账节点根据m份第二部分私钥份额生成该第一记账节点的私钥份额即可。
a2、根据m份第二部分私钥份额,生成第一记账节点的私钥份额。
具体地,根据m份第二部分私钥份额,生成第一记账节点的私钥份额包括:
a21、将每份第二部分私钥份额的第v个元素采用拉格朗日插值法处理,得到处理后的第v个元素;v=1,2,3。即每份第二部分私钥份额对应一个处理后的第v个元素。
a22、将m份第二部分私钥份额对应的m份处理后的第v个元素相乘,得到第一记账节点的私钥份额的第v个元素。
在一种方式中,根据m份第二部分私钥份额,生成该第一记账节点的私钥份额
其中,该第一记账节点为该第一记账节点所在的第k-1层区块链的第j个第一记账节点,
其中,α和rk小于区块链系统对应的双线性群的阶数(即双线性群包括的元素的个数),区块链系统是根据区块链系统对应的双线性群生成的系统公钥。具体地,区块链系统对应的双线性群
结合上述公式,还可以说,该交易节点对应的第k-1层区块链中的第j个第一记账节点(本实施例中的该第一记账节点)的私钥份额是根据该区块链系统的系统公钥的w-1个元素、第一记账节点所在区块链的标识、所述区块链系统的顶层区块链的各顶层记账节点生成的第一子随机数之和、该第一记账节点的各上层区块链的各记账节点生成的第二子随机数之和、第一记账节点所在层的私钥恢复门限值以及j得到的。
下面对上述的α、系统公钥和第一种场景下顶层记账节点的私钥份额进行说明。
对于α:所有顶层记账节点根据顶层区块链的门限(t0,n0),使用pedersen-vss方案秘密分享一个随机数
对于系统公钥:顶层记账节点生成区块链系统的系统公钥。系统公钥包括的元素依次为区块链系统对应的双线性群的生成元g、生成元g的α次方、双线性群中的k+2个元素。该k+2个元素为从双线性群中随机选出的k+2个元素。其中,系统公钥可表示为(g,g1,g2,g3,h1,…he…hk-1,hk),g1=gα,g2,g3,h1,…he…hk-1,hk为上述的k+2个元素;即上述系统公钥的个数w=k+4。
相应地,第i个顶层记账节点的私钥份额可预设为
对于第二种场景:第一记账节点获取该第一记账节点的私钥份额的方法,包括:
基于上述对α、系统公钥和第一种场景下顶层记账节点的私钥份额的阐述,由于第二种场景下,只有一层区块链,则如上所述,该第一记账节点即为顶层记账节点,因此,该第一记账节点的私钥份额可为
步骤s102、该第一记账节点根据该第一记账节点的私钥份额,生成该交易节点的第一部分私钥份额;
具体地,“根据该第一记账节点的私钥份额,生成该交易节点的第一部分私钥份额”,包括:
根据该第一记账节点的私钥份额、该区块链系统的系统公钥、第一记账节点所在区块链的标识、该交易节点的标识、该第一记账节点在生成该第一记账节点的私钥份额后生成的第二子随机数,生成该交易节点的第一部分私钥份额;其中,该第二子随机数为小于所述区块链系统对应的双线性群的阶数的正整数。
如上所述,该第一记账节点的私钥份额
其中,
可以理解的是,每个第一记账节点生成该交易节点的第一部分私钥份额的方法均为步骤s102中的方法。
步骤s103、该第一记账节点将该第一部分私钥份额发送至该交易节点。
具体地,除了该第一记账节点外,其它的该交易节点对应的第k-1层区块链中第一记账节点也会发送自身为该交易节点生成的第一部分私钥份额至该交易节点。
步骤s104、该交易节点根据该交易节点的第一部分私钥份额,生成该交易节点的私钥。
具体地,该交易节点在生成该交易节点的私钥时,除了需要根据该第一记账节点为该交易节点生成的第一部分私钥份额外,还需要根据该交易节点对应的第k-1层区块链中的其它n-1个第一记账节点为该交易节点生成的第一部分私钥份额,即该交易节点需要根据n份第一部分私钥份额,生成该交易节点的私钥。
其中,该交易节点根据n份第一部分私钥份额,生成该交易节点的私钥,包括:
b1、将每份第一部分私钥份额的第u个元素采用拉格朗日插值法处理,得到处理后的第u个元素;u=1,2;
b2、将n份第一部分私钥份额对应的n份处理后的第u个元素相乘,得到该交易节点的私钥的第u个元素。
在一种方式中,根据n份第一部分私钥份额,生成该交易节点的私钥
其中,
经过上述过程,生成了该交易节点的私钥。
由于本实施例中,交易节点的私钥是根据n份部分私钥份额生成的,n份部分私钥份额是交易节点的且与交易节点相邻的上层区块链中n个记账节点生成的,因此,在私钥丢失时,可以向上层区块链节点申请重新发送n份部分私钥份额,然后重新根据n份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
进一步地,本申请实施例的方法还包括:
根据该交易节点的标识和该交易节点的且与该交易节点相邻的上层区块链的标识,生成该交易节点的公钥。即该交易节点的公钥包括该交易节点的标识,以及,第k-1层区块链的标识。其中,该交易节点的标识可为唯一标识该交易节点的信息,比如该交易节点的序列号。
由于交易节点的公钥中包括该交易节点的标识,在区块链运行过程中出现非法交易时可根据交易所使用的公钥确定是哪个交易节点进行了非法交易,实现了可追责。
进一步地,在根据n份第一部分私钥份额,生成该交易节点的私钥之后,还包括:
c1、生成目标随机数,目标随机数为小于区块链系统对应的双线性群的阶数的正整数;
具体地,该交易节点可使用pedersen-vss方案生成目标随机数。
c2、根据当前交易信息生成小于阶数的当前交易信息对应的哈希值。
具体地,获取当前交易信息的哈希值,若当前交易信息的哈希值大于或等于双线性群的阶数,则对当前交易信息的哈希值进行处理,得到小于双线性群的阶数的当前交易信息对应的哈希值。若当前交易信息为mk,则根据当前交易信息生成小于阶数的当前交易信息对应的哈希值:hk=h′(mk),h′()是
c3、根据该交易节点的私钥、该目标随机数、该哈希值和该双线性群的生成元,获取当前交易信息的完整签名。
其中,可通过如下公式得到当前交易信息的完整签名:
其中,sk为该目标随机数。
c4、将该当前交易信息和该完整签名发送至各第一记账节点。
具体地,第一记账节点接收到当前交易信息和该完整签名后,根据该当前交易信息、该完整签名、区块链系统对应的双线性群的映射关系和该区块链系统的系统公钥,验证该当前交易信息是否合法。
在一种方式中,若满足如下条件,则认为该当前交易信息合法:
进一步地,在第一记账节点确定接收到的交易信息合法后,还可进行如下的步骤:
e1、该第一记账节点根据从至少一个交易节点接收的至少一个交易信息,得到当前待生成区块的区块头。
具体地,第一记账节点根据从至少一个交易节点接收的至少一个交易信息,得到当前待生成区块的区块头的方法为现有的方法,本实施例中不再赘述。
e2、该第一记账节点生成第三随机数,第三随机数为小于区块链系统对应的双线性群的阶数的正整数。
具体地,该第一记账节点所在的该交易节点对应的第k-1层区块链的各第一记账节点根据(n,nk-1),使用pedersen-vss方案秘密分享一个随机数
e3、该第一记账节点根据该区块头生成小于双线性群的阶数的该区块头对应的哈希值;
具体地,获取该区块头的哈希值,若该区块头的哈希值大于或等于双线性群的阶数,则对该区块头的哈希值进行处理,得到小于双线性群的阶数的该区块头对应的哈希值。若该区块头为mk-1,则根据该区块头生成小于阶数的该区块头对应的哈希值:hk-1=h′(mk-1),h′()是
e4、该第一记账节点根据该第一记账节点的私钥份额、该第三随机数、该区块头对应的哈希值和双线性群的生成元,获取该区块头的部分签名sigk-1,j=(xk-1,j,yk-1,j,zk-1,j)。
e5、该第一记账节点从n-1个其它第一记账节点接收其它第一记账节点生成的该区块头的部分签名。
e6、该第一记账节点根据n个该区块头的部分签名,生成该区块头的完整签名。
在一种方式中,第一记账节点可通过如下公式,生成该区块头的完整签名:
其中,
e7、第一记账节点将该区块头和该区块头的完整签名发送该交易节点对应的第k-2层区块链中第i个第二记账节点,该区块头和该区块头的完整签名用于该交易节点对应的第k-2层区块链中第i个第二记账节点验证该区块头是否合法。
本申请实施例交易节点的私钥是根据n份部分私钥份额生成的,n份部分私钥份额是交易节点的且与交易节点相邻的上层区块链中n个记账节点生成的,因此,在私钥丢失时,可以向上层区块链节点申请重新发送该n份部分私钥份额,然后重新根据该n份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
以上结合图2说明了交易节点生成私钥的过程,下面结合图3对包括多层区块链的层次式区块链系统的完整的密钥生成方法进行说明。图3为本申请实施例提供的密钥生成方法的交互图二,若区块链系统包括k层区块链,则本实施例的执行主体为区块链系统中第0层区块链至第k-2层区块链中的记账节点中的任意一记账节点。参见图3,本实施例的方法包括
步骤s201、第k-1层区块链的第i个记账节点获取该第i个记账节点的私钥份额。
具体地,第k-1层区块链为待生成私钥的交易节点对应的第0层区块链至第k-2层区块链中任意一层的任意一个区块链。待生成私钥的交易节点可为属于区块链系统中的任意一个交易节点。
若第k-1层区块链为第0层区块链,即顶层区块链,则顶层区块链的第i个记账节点的私钥份额的获取方法详见上一实施例中的阐述。
若第k-1层区块链不为第0层区块链,则第k-1层区块链的第i个记账节点获取该第i个记账节点的私钥份额,包括:
d1、从p个目标记账节点中获取该第i个记账节点的p份部分私钥份额,目标记账节点为该第k-1层区块链对应的第k-2层区块链中的记账节点。
具体地,p为该第k-1层区块链对应的第k-2层区块链的私钥恢复门限值。
d2、根据该第i个记账节点的p份部分私钥份额,生成该第i个记账节点的私钥份额。
具体地,根据该第i个记账节点的p份部分私钥份额,生成该第i个记账节点的私钥份额,包括:
d21、将该第i个记账节点的每份部分私钥份额的第o个元素采用拉格朗日插值法处理,得到处理后的第o个元素,o=1,2,…o,o=k-(k-1)+2;
d22、将p份该第i个记账节点的部分私钥份额对应的p份处理后的第o个元素相乘,得到该第i个记账节点的私钥份额的第o个元素。
步骤s202、该第i个记账节点根据该第i个记账节点的私钥份额,生成该第k-1层区块链对应的第k层区块链的第j个记账节点的部分私钥份额。
具体地,若第k-1层的第i个记账节点的私钥份额为
该第k-1层区块链的其它记账节点也会根据上述方法,生成该第j个记账节点的部分私钥份额,即第k-1层区块链的每个记账节点均会生成一份该第j个记账节点的部分私钥份额。
步骤s203、该第i个记账节点将该第i个记账节点生成的该第j个记账节点的部分私钥份额发送至该第j个记账节点。
具体地,该第k-1层区块链的其它记账节点也会将其生成的该第j个记账节点的部分私钥份额发送至该第j个记账节点。
步骤s204、该第j个记账节点根据该第j个记账节点的部分私钥份额,生成该第j个记账节点的私钥份额,该第j个记账节点的私钥份额用于生成交易节点的私钥。
具体地,若第k-1层区块链的私钥恢复门限值为tk-1,则该第j个记账节点除了需要根据该第i个记账节点为其生成的部分私钥份额,还需要根据该第k-1层区块链另外的tk-1-1个记账节点为其生成的部分私钥份额生成该第j个记账节点的私钥份额。
在一种方式中,该第j个记账节点根据该第j个记账节点的部分私钥份额,生成该第j个记账节点的私钥份额,可通过如下公式实现:
其中,拉格朗日插值系数
在一种情况中,第k层区块链为图2所示的实施例中的交易节点的且与交易节点相邻的上层区块链,即第k层区块链为该交易节点对应的第k-1层区块链,或者说第k层区块链为区块链系统的最底层区块链,k=k-1。在该种情况中,后续根据该第j个记账节点(该交易节点对应的第k-1层区块链中的记账节点)的私钥份额获取交易节点的私钥的方法参照上一实施例中的阐述。
在另一种情况中,第k层区块链为除了图2所示的实施例中的交易节点的且与交易节点相邻的上层区块链和顶层区块链以外的任意一层区块链,后续根据该第j个记账节点的私钥份额获取交易节点的私钥的方法为:按照本实施例的方法继续获取第k+1层区块链的记账节点的私钥份额,第k+c层区块链的记账节点的私钥份额(c≥1)等等,直至获取到交易节点的且与交易节点相邻的上层区块链-该交易节点对应的第k-1层区块链的记账节点的私钥份额,然后根据该交易节点对应的第k-1层区块链的记账节点的私钥份额获取交易节点的私钥的方法参照上一实施例中的阐述。
值得说明时,上述采用该第k-1层区块链的第i个记账节点和该第k层区块链的第j个记账节点之间的交互来说明本实施例的方法,即认为该第k-1层区块链的记账节点的下标值采用i表示,该第k层区块链的记账节点的下标值采用j表示。可以理解的是,第k层区块链的记账节点的下标值也可采用i表示,第k-1层区块链的记账节点的下标值也可采用j表示。
进一步地,该第k层区块链的记账节点还会使用自己的私钥份额对待生成的区块头进行部分签名。该第k层区块链的记账节点根据该第k层区块链的门限(tk,nk),使用pedersen-vss方案秘密分享一个随机数
接着,获取该区块头的哈希值,若该区块头的哈希值大于或等于双线性群的阶数,则对该区块头的哈希值进行处理,得到小于双线性群的阶数的该区块头对应的哈希值。若该区块头为mk,则根据该区块头生成小于阶数的哈希值hk=h′(mk),h′()是
然后,第k层区块链的第i个记账节点采用如下公式,获取该区块头的部分签名sigk,i=(xk,i,yk,i,zk,i):
其中,
接着,该第k层区块链的第i个记账节点将该第k层区块链的tk个记账节点生成的该区块头的部分签名进行合成,得到发送至该第k-1层区块链的第j个记账节点的该区块头的完整签名,签名合成公式可如下:
其中,
第k层区块链的第i个记账节点将上述生成的完整签名发送至第k-1层区块链的第j个记账节点。第k-1层区块链的第j个记账节点系统公钥中的部分元素、双线性群的映射关系和上述生成的完整签名,验证该区块头的合法性。
在一种方式中,若满足以下关系,则说明该区块头合法。
本申请实施例中上层区块链节点向下层区块链节点发送部分私钥份额,下层区块链节点根据多份部分私钥份额生成自身的私钥份额,这样交易节点就可根据接收到的多份部分私钥份额生成交易节点的私钥,因此,在私钥丢失时,可以向上层区块链节点申请重新发送多份部分私钥份额,然后重新根据多份部分私钥份额生成交易节点的私钥,使得交易节点的私钥丢失后可找回,保证了区块链系统正常的运行。
下面结合图4所示的实例,对本申请的交易节点的私钥的生成方法进行说明。图4为本申请实施例提供的区块链系统的结构示意图。
参见图4,图4中的层次式区块链系统包括3层区块链,系统的第0层区块链(顶层区块链)由1条区块链及维护区块链的21个记账节点组成,第0层区块链的记账节点具有最高权限,门限为(15,21),其中私钥恢复门限值为15;第1层区块链由2条区块链及维护区块链的记账节点组成,区块链id分别为(beijing),(shanghai),门限分别为(9,13)、(7,11);第2层区块链由3条区块链及维护区块链的记账节点组成,第2层区块链的id在第1层区块链的id的基础上扩展,第2层区块链的3条区块链的id分别为(beijing,haidian),(beijing,chaoyang),(shanghai,pudong),门限分别为(4,7)、(4,9)、(5,8);交易节点为物联网设备,交易节点的id在第2层区块链的id的基础上扩展,比如交易节点a1的id为(beijing,haidian,ida1),ida1为交易节点a1的唯一标识,比如交易节点a1的序列号;交易节点b1的id(beijing,chaoyang,idb1),idb1为交易节点b1的唯一标识,比如交易节点b1的序列号;交易节点c1的id(shanghai,pudong,idc1),idc1为交易节点c1的唯一标识,比如交易节点c1的序列号;各交易节点的门限都为(1,1),交易节点的交易信息发送至第2层区块链的记账节点进行共识。相邻层的记账节点之间采用两两互联的方式进行连接。
其中,交易节点a1对应的各上层区块链包括:id为(beijing,haidian)的第2层区块链,id为(beijing)的第1层区块链和顶层区块链。交易节点b1对应的各上层区块链包括:id为(beijing,chaoyang)的第2层区块链,id为(beijing)的第1层区块链和顶层区块链。交易节点c1对应的各上层区块链包括:id为(shanghai,pudong)的第2层区块链,id为(shanghai的第1层区块链和顶层区块链。
交易节点的id即为交易节点的公钥,比如,(beijing,haidian,ida1)即为交易节点a1的公钥。
下面对图4所示的区块链系统生成交易节点a1的私钥的方法进行说明。
假设
第0层区块链的记账节点(顶层记账节点)进行初始化。第0层区块链的记账节点根据第0层区块链的门限(15,21),使用pedersen-vss方案秘密分享一个随机数
第0层区块链的记账节点为第1层的记账节点生成部分私钥份额。i为第0层区块链的记账节点的下标值,j为第1层记账节点的下标值。记第0层区块链的第i个记账节点
id为(beijing)的第1层区块链的第j个记账节点
第1层区块链的记账节点为第2层区块链的记账节点生成部分私钥份额。id为(beijing)的第1层区块链的记账节点给id为(beijing,haidian)的第2层区块链的记账节点生成部分私钥份额的过程如下:i为第1层记账节点的下标值,j为第2层记账节点的下标值。记第1层区块链的第i个记账节点
第2层区块链的记账节点合成私钥份额。id为(beijing,haidian)的第2层区块链第j个记账节点
第2层区块链的记账节点为交易节点生成部分私钥份额。id为(beijing,haidian)的第2层区块链的记账节点的下标值i,记第2层区块链的第i个记账节点
第3层交易节点a1合成私钥。交易节点a1得到第2层区块链的记账节点生成的4个部分私钥份额后,使用这些部分私钥份额计算得到交易节点a的私钥
至此,交易节点a1的私钥生成完毕。
以上结合图1~图4对本申请的密钥生成方法作了说明,下面结合图5~图7对本申请的密钥生成装置作进一步的说明。
图5为本申请实施例提供的密钥生成装置的结构示意图一,参见图5,本实施例的装置包括:获取模块51和生成模块52;
获取模块51,用于从n个第一记账节点获取交易节点的n份第一部分私钥份额,所述第一记账节点为所述交易节点的且与所述交易节点相邻的上层区块链中的记账节点;所述n份第一部分私钥份额与所述n个第一记账节点一一对应,n为大于等于2的正整数;
生成模块52,用于根据所述n份第一部分私钥份额,生成所述交易节点的私钥;
其中,所述第一部分私钥份额是该第一部分私钥份额对应的第一记账节点根据该第一记账节点的私钥份额生成的,该第一记账节点的私钥份额为该第一记账节点所在区块链的私钥在该第一记账节点上存储的信息。
可选地,所述生成模块52,还用于根据所述交易节点的标识和所述上层区块链的标识,生成所述交易节点的公钥。
可选地,所述生成模块52,具体用于:
将每份第一部分私钥份额的第u个元素采用拉格朗日插值法处理,得到处理后的第u个元素;所述u=1,2;
将n份第一部分私钥份额对应的n份处理后的第u个元素相乘,得到所述交易节点的私钥的第u个元素。
可选地,所述区块链系统包括的区块链的层数大于等于2层;
所述第一记账节点的私钥份额是该第一记账节点根据从m个第二记账节点接收到的该第一记账节点的m份第二部分私钥份额生成的,所述m份第二部分私钥份额与所述m个第二记账节点一一对应,m为大于等于2的正整数;
其中,所述第二记账节点为与所述第一记账节点相邻的所述第一记账节点的上层区块链中的记账节点。
可选地,第j个第一记账节点的私钥份额是根据所述区块链系统的系统公钥的w-1个元素、第一记账节点所在区块链的标识、所述区块链系统的顶层区块链的各顶层记账节点生成的第一子随机数之和、所述第一记账节点的各上层区块链的各记账节点生成的第二子随机数之和、第一记账节点所在区块链的私钥恢复门限值以及所述j得到的;
其中,w为所述区块链系统的系统公钥包括的元素个数,所述第一子随机数之和小于所述区块链系统对应的双线性群的阶数的正整数,所述第一记账节点的每个上层区块链的各记账节点生成的第二子随机数之和小于所述双线性群的阶数;w为大于等于5的整数,j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
可选地,所述区块链系统的系统公钥的元素依次为所述区块链系统对应的双线性群的生成元、所述生成元的α次方、所述双线性群中的k+2个元素;
其中,所述α为各所述顶层记账节点生成的第一子随机数之和,所述k为所述区块链系统包括的区块链的层数。
可选地,所述顶层区块链中的第i个顶层记账节点的私钥份额的各元素依次为:
本实施例的装置,可以用于执行图2所示的实施例中交易节点对应的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本申请实施例提供的密钥生成装置的结构示意图二,参见图6,本实施例的装置包括:获取模块61、生成模块62和发送模块63;
获取模块61,用于获取第一记账节点的私钥份额;其中,所述第一记账节点的私钥份额为所述第一记账节点所在区块链的私钥在该第一记账节点上存储的信息;所述第一记账节点为所述区块链系统中交易节点的且与所述交易节点相邻的上层区块链中的记账节点,
生成模块62,用于根据所述第一记账节点的私钥份额,生成所述交易节点的第一部分私钥份额;
发送模块63,用于将所述第一部分私钥份额发送至所述交易节点,所述第一部分私钥份额用于所述交易节点生成所述交易节点的私钥。
可选地,所述获取模块61,具体用于:
从m个第二记账节点中获取所述第一记账节点的m份第二部分私钥份额,所述第二记账节点为与所述第一记账节点相邻的所述第一记账节点的上层区块链中的记账节点;m为大于等于2的正整数;
所述生成模块62,还用于根据所述m份第二部分私钥份额,生成所述第一记账节点的私钥份额
可选地,所述生成模块62,具体用于:
根据所述第一记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述交易节点的标识、所述第一记账节点在生成所述第一记账节点的私钥份额后生成的目标随机数,生成所述交易节点的第一部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数。
可选地,所述生成模块62,具体用于:
将每份第二部分私钥份额的第v个元素采用拉格朗日插值法处理,得到处理后的第v个元素;所述v=1,2,3;
将m份第二部分私钥份额对应的m份处理后的第v个元素相乘,得到所述第一记账节点的私钥份额的第v个元素。
可选地,所述获取模块61,还用于根据从至少一个交易节点接收的至少一个交易信息,得到当前待生成区块的区块头;
所述生成模块62,还用于:
生成第三随机数,所述第三随机数为所述区块链系统对应的双线性群的阶数的正整数;以及,
根据所述区块头生成小于所述双线性群的阶数的哈希值;以及,
根据所述第一记账节点的私钥份额、所述第三随机数、所述哈希值和所述双线性群的生成元,获取所述区块头的部分签名。
可选地,所述获取模块61,还用于从n-1个其它第一记账节点获取所述区块头的部分签名;
所述生成模块62,还用于:根据n个所述区块头的部分签名,生成发送至第二记账节点的所述区块头的完整签名,所述n为所述第一记账节点所在层的私钥恢复门限值;
所述发送模块63,还用于将所述区块头和所述区块头的完整签名发送至所述第二记账节点,所述区块头和所述区块头的完整签名用于所述第二记账节点验证所述区块头是否合法,所述第二记账节点为所述第一记账节点的且与所述第一记账节点相邻的上层区块链中的记账节点。
本实施例的装置,可以用于执行图2或图3所示的实施例中交易节点的且与交易节点相邻的上层区块链中的第一记账节点对应的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本申请实施例提供的密钥生成装置的结构示意图三,参见图7,本实施例的装置包括:获取模块71、生成模块72和发送模块73。
获取模块71,用于获取所述第二记账节点的私钥份额;其中,所述第二记账节点的私钥份额为所述第二记账节点所在区块链的私钥在该第二记账节点上存储的信息;
生成模块72,用于根据所述第二记账节点的私钥份额,生成第一记账节点的第二部分私钥份额,所述第一记账节点为所述第二记账节点的且与所述第二记账节点相邻的下层区块链中的记账节点;
发送模块73,用于将所述第二部分私钥份额发送至所述第一记账节点,所述第二部分私钥份额用于所述第一记账节点生成所述第一记账节点的私钥份额,所述第一记账节点的私钥份额用于生成交易节点的私钥。
可选地,所述获取模块71,具体用于:
从p个第三记账节点中获取所述第二记账节点的p份第三部分私钥份额,所述第三记账节点为所述第二记账节点的且与所述第二记账节点相邻的上层区块链中的记账节点;p为大于等于2的正整数;
所述生成模块72,具体用于:根据所述p份第三部分私钥份额,生成所述第二记账节点的私钥份额。
可选地,所述第一记账节点为第j个第一记账节点;所述生成模块72,具体用于:
根据所述第二记账节点的私钥份额、所述区块链系统的系统公钥、第一记账节点所在区块链的标识、所述第二记账节点在生成所述第二记账节点的私钥后生成的目标随机数和当自变量为j时n-1次多项式的值,生成所述第一记账节点的第二部分私钥份额;
其中,所述目标随机数为小于所述区块链系统对应的双线性群的阶数的正整数,所述n为所述第二记账节点所在层的私钥恢复门限值,所述n-1次多项式的系数为n-1个小于所述双线性群的阶数的正整数,n为所述第一记账节点所在区块链的私钥恢复门限值,n为大于等于2的正整数;j为小于等于j的正整数,j为所述交易节点的且与所述交易节点相邻的上层区块链中第一记账节点的个数。
可选地,所述生成模块72,具体用于:
将每份第三部分私钥份额的第o个元素采用拉格朗日插值法处理,得到处理后的第o个元素,所述o=1,2,…o,o=k-k+2,所述第二记账节点在所在的区块链为区块链系统中的第k层区块链,k≥1,k≥3,所述k为所述区块链系统包括的区块链的层数,k=1……,k,所述区块链系统的顶层区块链为第0层区块链;
将p份第三部分私钥份额对应的p份处理后的第o个元素相乘,得到所述第二记账节点的私钥份额的第o个元素。
本实施例的装置,可以用于执行图3所示的实施例中第k-1层区块链中的记账节点或第k层区块链中的记账节点所对应的技术方案,其实现原理和技术效果类似,此处不再赘述。可以理解的是,第k层区块链可能为前述方法实施例中第一记账节点所在的区块链。
图8为本申请实施例提供的一种电子设备的结构示意图。如图8所示,本实施例所述的电子设备500可以是前述方法实施例中提到的交易节点(或者可用于第一交易节点的部件)或者第一记账节点(或者可用于第一记账节点的部件)或者是前述方法实施例中提到的第k-1层区块链(区块链系统中除了第一记账节点所在的区块链的区块链)中的记账节点(或者可用于第k-1层区块链中的记账节点的部件)或者是前述方法实施例中提到的第k层区块链(区块链系统中除了顶层区块链的区块链)中的记账节点(或者可用于第k-1层区块链中的记账节点的部件)。通信装置可用于实现上述方法实施例中描述的对应于终端设备或者第一接入网设备或者第二接入网设备的方法,具体参见上述方法实施例中的说明。
所述通信装置500可以包括一个或多个处理器501,所述处理器501也可以称为处理单元,可以实现一定的控制或者处理功能。所述处理器501可以是通用处理器或者专用处理器等。例如可以是基带处理器、或中央处理器。基带处理器可以用于对通信协议以及通信数据进行处理,中央处理器可以用于对通信装置进行控制,执行软件程序,处理软件程序的数据。
在一种可选的设计中,处理器501也可以存有指令503或者数据(例如中间数据)。其中,所述指令503可以被所述处理器运行,使得所述电子设备500执行上述方法实施例中描述的对应于交易节点或者第一记账节点或者是第k-1层区块链中的记账节点者是第k层区块链中的记账节点。
在又一种可能的设计中,电子设备500可以包括电路,所述电路可以实现前述方法实施例中发送或接收或者通信的功能。
可选的,所述电子设备500中可以包括一个或多个存储器502,其上可以存有指令504,所述指令可在所述处理器上被运行,使得所述通信装置500执行上述方法实施例中描述的方法。
可选的,所述存储器中也可以是存储有数据。所述处理器和存储器可以单独设置,也可以集成在一起。
可选的,所述电子设备500还可以包括收发器505。所述处理器501可以称为处理单元,对通信装置(终端设备或者网络设备)进行控制。所述收发器505可以称为收发单元、收发机、收发电路、或者收发器等,用于实现电子设备的收发功能。
上述收发器505与处理器501的具体实现过程可以参见上述各实施例的相关描述,此处不再赘述。
本申请中描述的处理器501和收发器505可实现在集成电路(integratedcircuit,ic)、模拟ic、射频集成电路(radiofrequencyintegratedcircuit,rfic)、混合信号ic、专用集成电路(applicationspecificintegratedcircuit,asic)、印刷电路板(printedcircuitboard,pcb)、电子设备等上。该处理器和收发器也可以用各种1c工艺技术来制造,例如互补金属氧化物半导体(complementarymetaloxidesemiconductor,cmos)、n型金属氧化物半导体(nmetal-oxide-semiconductor,nmos)、p型金属氧化物半导体(positivechannelmetaloxidesemiconductor,pmos)、双极结型晶体管(bipolarjunctiontransistor,bjt)、双极cmos(bicmos)、硅锗(sige)、砷化镓(gaas)等。
虽然在以上的实施例描述中,本申请中描述的电子设备的范围并不限于终端设备或服务器,而且通信装置的结构可以不受图8的限制。电子设备500可以是独立的设备或者可以是较大设备的一部分。例如所述设备可以是:
(1)独立的集成电路ic,或芯片,或,芯片系统或子系统;
(2)具有一个或多个ic的集合,可选的,该ic集合也可以包括用于存储数据和/或指令的存储部件;
(3)asic,例如调制解调器(msm);
(4)可嵌入在其他设备内的模块;
(5)服务器、终端设备等等;
(6)其他等等。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。