1.一种随机数的生成方法,其特征在于,应用于区块链系统,所述区块链系统包括相互
连接的至少两个节点,所述至少两个节点中包括第一节点和第二节点,所述生成方法由所
述第一节点执行,所述生成方法包括:
获取自身基于预设消息生成的第一签名信息;
获取所述第二节点基于所述预设消息生成的第二签名信息;
将所述第一签名信息和所述第二签名信息聚合,得到聚合后的签名信息;
根据所述聚合后的签名信息,生成第一随机数;
获取所述第二节点对所述第一随机数的合法性验证结果;
当基于所述第二节点的合法性验证结果确定所述第一随机数合法时,将所述第一随机
数存储;
其中所述获取自身基于预设消息生成的第一签名信息,包括:
按预设秘密生成策略生成秘密数;
按预设秘密分享策略将所述秘密数分成N个第一子秘密信息,N为所述区块链系统中节
点数量,其中,N为正整数;
分别接收所述第二节点发送的第二子秘密信息,所述第二子秘密信息包括N‑1个第二
节点分别发送的子秘密信息;
根据N‑1个所述第二子秘密信息获取秘密信息;
根据所述秘密信息,对预设消息进行签名,得到所述第一签名信息。
2.根据权利要求1所述的生成方法,其特征在于,所述根据N‑1个所述第二子秘密信息
获取秘密信息,包括:
验证获取到的N‑1个第二子秘密信息的有效性;
若验证获取到的所述N‑1个第二子秘密信息有效,则根据所述第二子秘密信息获取秘
密信息。
3.根据权利要求1所述的生成方法,其特征在于,所述根据得到的N‑1个第二子秘密信
息获取秘密信息,包括:
验证获取的N‑1个第二子秘密信息的有效性,以获取第一有效性验证结果;
接收所述第二节点发送的第二有效性验证结果;
根据所述第一有效性验证结果和所述第二有效性验证结果,确定N‑1个子秘密信息的
有效性;
若确定所述N‑1个第二子秘密信息有效,则根据所述第二子秘密信息获取秘密信息。
4.根据权利要求1所述的生成方法,其特征在于,所述将所述第一签名信息和所述第二
签名信息聚合,得到聚合后的签名信息,包括:
对所述第一签名信息和所述第二签名信息依次进行合法性校验;
当得到的所述第一签名信息和所述第二签名信息中存在T个合法签名信息时,将所述T
个合法签名信息聚合,得到所述聚合后的签名信息,其中,T为正整数,且T不大于N。
5.根据权利要求1所述的生成方法,其特征在于,所述根据所述聚合后的签名信息,生
成第一随机数,包括:所述第一节点获取所述第一节点的私钥;
根据所述聚合后的签名信息、所述第一节点的私钥,生成所述第一随机数以及所述第
一随机数对应的证明信息。
6.根据权利要求1所述的生成方法,其特征在于,所述生成方法还包括:
获取所述第二节点的公钥、所述第二节点的第二随机数以及所述第二随机数对应的证
明信息;
根据所述聚合后的签名信息、所述第二节点的公钥、所述第二随机数以及所述第二随
机数对应的证明信息,验证所述第二随机数的合法性;
若验证所述第二随机数合法,则将所述第二随机数存储。
7.一种随机数的生成装置,其特征在于,应用于区块链系统中的第一节点,所述区块链
系统包括相互连接的至少两个节点,所述至少两个节点中包括第一节点和第二节点,所述
生成装置包括:
第一获取单元,用于获取自身基于预设消息生成的第一签名信息;
第二获取单元,用于获取所述第二节点基于所述预设消息生成的第二签名信息;
签名单元,用于将所述第一签名信息和所述第二签名信息聚合,得到聚合后的签名信
息;
随机数生成单元,用于根据所述聚合后的签名信息,生成第一随机数;
第三获取单元,用于获取所述第二节点对所述第一随机数的合法性验证结果;
随机数存储单元,用于当基于所述第二节点的合法性验证结果确定所述第一随机数合
法时,将所述第一随机数存储;
其中所述第一获取单元具体用于按预设秘密生成策略生成秘密数;按预设秘密分享策
略将所述秘密数分成N个第一子秘密信息,N为所述区块链系统中节点数量,其中,N为正整
数;分别接收所述第二节点发送的第二子秘密信息,所述第二子秘密信息包括N‑1个第二节
点分别发送的子秘密信息;根据N‑1个所述第二子秘密信息获取秘密信息;根据所述秘密信
息,对预设消息进行签名,得到所述第一签名信息。
8.一种存储介质,其特征在于,所述存储介质中存储有多条指令,所述指令适于由处理
器加载以执行权利要求1至6任一项所述的随机数的生成方法。
一种随机数的生成方法、生成装置及存储介质\n技术领域\n[0001] 本申请涉及通信技术领域,具体涉及一种随机数的生成方法、生成装置及存储介\n质。\n背景技术\n[0002] 随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如\n在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过\n程中,或者在进行蒙特卡罗模拟法计算的时候等等。产生随机数有多种不同的方法。这些方\n法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个\n数毫无关系。\n[0003] 现有技术存在的一个较大问题是,随机数的生成方式安全性不高。\n发明内容\n[0004] 本申请实施例提供一种随机数的生成方法、生成装置及存储介质,可以提高随机\n数生成的安全性。\n[0005] 一方面,本申请提供一种随机数的生成方法,应用于区块链系统,所述区块链系统\n包括相互连接的至少两个节点,所述至少两个节点中包括第一节点和第二节点,所述生成\n方法由所述第一节点执行,所述生成方法包括:\n[0006] 获取自身基于预设消息生成的第一签名信息;\n[0007] 获取所述第二节点基于所述预设消息生成的第二签名信息;\n[0008] 将所述第一签名信息和所述第二签名信息聚合,得到聚合后的签名信息;\n[0009] 根据所述聚合后的签名信息,生成第一随机数;\n[0010] 获取所述第二节点对所述第一随机数的合法性验证结果;\n[0011] 当基于所述第二节点的合法性验证结果确定所述第一随机数合法时,将所述第一\n随机数存储。\n[0012] 一方面,本申请提供一种随机数的生成装置,应用于区块链系统中的第一节点,所\n述区块链系统包括相互连接的至少两个节点,所述至少两个节点中包括第一节点和第二节\n点,所述生成装置包括:\n[0013] 第一获取单元,用于获取自身基于预设消息生成的第一签名信息;\n[0014] 第二获取单元,用于获取所述第二节点基于所述预设消息生成的第二签名信息;\n[0015] 签名单元,用于将所述第一签名信息和所述第二签名信息聚合,得到聚合后的签\n名信息;\n[0016] 随机数生成单元,用于根据所述聚合后的签名信息,生成第一随机数;\n[0017] 第三获取单元,用于获取所述第二节点对所述第一随机数的合法性验证结果;\n[0018] 随机数存储单元,用于当基于所述第二节点的合法性验证结果确定所述第一随机\n数合法时,将所述第一随机数存储。\n[0019] 其中,所述第一获取单元包括签名子单元和秘密分享单元,\n[0020] 所述秘密分享单元用于,与所述第二节点进行秘密分享,以得到秘密信息;\n[0021] 所述第一签名单元用于,根据所述秘密信息,对预设消息进行签名,得到所述第一\n签名信息。\n[0022] 其中,所述秘密分享单元用于,按预设秘密生成策略生成秘密数;\n[0023] 所述秘密分享单元用于,按预设秘密分享策略将所述秘密数分成N个第一子秘密\n信息,N为所述区块链系统中节点数量,其中,N为正整数;\n[0024] 所述秘密分享单元用于,分别接收所述第二节点发送的第二子秘密信息,所述第\n二子秘密信息包括所述第二节点中N‑1个节点分别发送的子秘密信息;\n[0025] 所述秘密分享单元用于,根据所述第二子秘密信息获取秘密信息。\n[0026] 其中,所述秘密分享单元用于,验证获取到的N‑1个第二子秘密信息的有效性;\n[0027] 所述秘密分享单元用于,若验证获取到的所述N‑1个第二子秘密信息有效,根据所\n述第二子秘密信息获取秘密信息。\n[0028] 其中,所述秘密分享单元用于,验证获取的N‑1个第二子秘密信息的有效性,以获\n取第一有效性验证结果;\n[0029] 所述秘密分享单元用于,接收所述第二节点发送的第二有效性验证结果;\n[0030] 所述秘密分享单元用于,根据所述第一有效性验证结果和所述第二有效性验证结\n果,确定N‑1个子秘密信息的有效性;\n[0031] 所述秘密分享单元用于,在确定所述N‑1个第二子秘密信息有效时,则根据所述第\n二子秘密信息获取秘密信息。\n[0032] 其中,所述签名单元用于,对所述第一签名信息和所述第二签名信息依次进行合\n法性校验;\n[0033] 所述签名单元用于,在得到的所述第一签名信息和所述第二签名信息中存在T个\n合法签名信息时,将所述T个合法签名信息聚合,得到所述聚合后的签名信息,其中,T为正\n整数,且T不大于N。\n[0034] 其中,随机数生成单元用于,获取所述第一节点的私钥;\n[0035] 随机数生成单元用于,根据所述聚合后的签名信息、所述第一节点的私钥,生成所\n述第一随机数以及所述第一随机数对应的证明信息。\n[0036] 其中,所述获取单元还包括获取子单元和验证子单元;\n[0037] 所述获取子单元用于,获取所述第二节点的公钥、所述第二节点的第二随机数以\n及所述第二随机数对应的证明信息;\n[0038] 所述验证子单元用于,根据所述聚合后的签名信息、所述第二节点的公钥、所述第\n二随机数以及所述第二随机数对应的证明信息,验证所述第二随机数的合法性;\n[0039] 所述随机数存储单元用于,在所述验证子单元验证所述第二随机数合法时,则将\n所述第二随机数存储。\n[0040] 一方面,本申请提供一种存储介质,所述存储介质中存储有多条指令,所述指令适\n于由处理器加载以执行第一方面任一项所述的随机数的生成方法。\n[0041] 本申请实施例的随机数的生成方法,应用于区块链系统,区块链系统包括相互连\n接的至少两个节点,至少两个节点中包括第一节点和第二节点,生成方法由第一节点执行,\n生成方法包括:获取自身基于预设消息生成的第一签名信息;获取第二节点基于预设消息\n生成的第二签名信息;将第一签名信息和第二签名信息聚合,得到聚合后的签名信息;根据\n聚合后的签名信息,生成第一随机数;获取第二节点对第一随机数的合法性验证结果;当基\n于第二节点的合法性验证结果确定第一随机数合法时,将第一随机数存储。本申请通过多\n个节点参与随机数的生成,提高了随机数生成的安全性。\n附图说明\n[0042] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使\n用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于\n本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附\n图。\n[0043] 图1是本申请实施例所提供的区块链系统的场景示意图;\n[0044] 图2是本申请实施例提供的随机数的生成方法的一个实施例流程示意图;\n[0045] 图3是本申请实施例提供的随机数的生成方法的另一个实施例流程示意图;\n[0046] 图4是本申请实施例提供的随机数的生成方法中各节点的信息交互示意图;\n[0047] 图5是本申请实施例提供的随机数的生成装置的一实施例结构示意图;\n[0048] 图6是图5中第一获取单元的一具体实施例结构示意图;\n[0049] 图7是图5中第三获取单元的一具体实施例结构示意图;\n[0050] 图8是本申请实施例提供的随机数的生成装置的另一个实施例结构示意图。\n具体实施方式\n[0051] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完\n整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于\n本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施\n例,都属于本申请保护的范围。\n[0052] 在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及到的一些名\n词进行解释说明。\n[0053] 区块链:区块链技术脱胎于比特币技术,是比特币的底层技术,其是去中心化的分\n布式账本数据库。区块链本身是一串使用密码学算法相关联产生的数据块(即区块),每一\n个数据块中包含了多次区块链网络交易有效确认的信息。正是基于此,所以无法通过篡改\n区块上的数据来进行作弊,能够确保任何区块上的数据均是公开透明的,确保了数据的安\n全性。\n[0054] 区块链可以分为公有链、私有链、联盟链。其中,联盟链则介于公有链和私有链之\n间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息\n会得到保护,典型如金融组织。\n[0055] 总结来说,区块链是由节点参与的分布式数据库系统,或者,也可称之为一个基于\nP2P(点对点)网络的分布式公共账本,其特点是不可更改、不可伪造,还可以将其理解为账\n簿系统。\n[0056] 区块链的节点:参与构建区块链的节点,可以为随机数生成的执行主体、节点之间\n交互可以实现交易等业务等。该节点存储有相关区块数据。\n[0057] 接下来将介绍本申请实施例提供的一种随机数的生成方法、生成装置及存储介\n质。其中,该节点可以为智能手机、智能手表、平板电脑以及车载电脑、服务器等网络设备。\n[0058] 请参阅图1,图1是本申请实施例所提供的区块链系统的场景示意图。\n[0059] 在本申请实施例中,区块链系统10包括至少两个节点(图1中以区块链系统10包括\n3个节点为例进行说明)。该至少两个节点通过网络连接,连接方式可以是无线连接或有线\n连接。具体的,该至少两个节点通过对等网络动态组网,形成一个“去中心化”的系统,该至\n少两个节点互为对等节点,即每个节点对于整个区块链系统10来说都是一样的。可以理解\n的是,区块链系统10中的节点数量可以N个,其中,N为正整数,且N不小于2(例如N=3),也即\n只需满足区块链系统10包括相互连接的至少两个节点即可,本申请对此不作限定。\n[0060] 在本申请实施例中,区块链系统10包括第一节点11和第二节点,例如如图1所示,\n第二节点可以包括第三节点13和第四节点14。需要说明的是,第一节点11、第三节点13以及\n第四节点14地位对等,第一节点11、第三节点13以及第四节点14的编号命名并不对其进行\n限定,编号命名仅仅是为了便于说明各节点之间发生的信息交互。第二节点仅是相对第一\n节点11而言,第二节点为区块链系统10中除第一节点11之外的所有其他节点。在其他实施\n例中,第二节点也可以仅为区块链系统10中除第一节点11之外的部分其他节点,本申请对\n此不作限定。\n[0061] 需要说明的是,图1所示的区块链系统的场景示意图仅仅是一个示例,本申请实施\n例描述的区块链系统10以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构\n成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着区块链系统\n10的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样\n适用。\n[0062] 在本申请实施例中,将从第一节点11的角度进行描述,从区块链系统10中的其他\n节点的角度,同样能够执行本申请随机数的生成方法。\n[0063] 本申请提供一种随机数的生成方法,应用于区块链系统10,区块链系统10包括相\n互连接的至少两个节点,至少两个节点中包括第一节点11和第二节点,生成方法包括:第一\n节点11获取自身基于预设消息生成的第一签名信息;第一节点11获取第二节点基于预设消\n息生成的第二签名信息;第一节点11根据第一签名信息和第二签名信息,得到组签名;第一\n节点11根据组签名,生成第一随机数。\n[0064] 请参阅图2,图2是本申请实施例提供的随机数的生成方法的一个实施例流程示意\n图,该随机数的生成方法包括:\n[0065] 101、获取自身基于预设消息生成的第一签名信息。\n[0066] 在本申请实施例中,第一节点11对预设消息进行签名,得到自身基于预设消息生\n成的第一签名信息。优选的,第一节点11对预设消息进行数字签名,得到自身基于预设消息\n生成的第一签名信息。简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对\n数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来\n源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的\n消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。\n[0067] 在本申请的一些实施例中,第一节点11与第二节点进行秘密分享,以得到秘密信\n息,第二节点为区块链系统10中除第一节点11之外的其他节点。第一节点11根据秘密信息,\n对预设消息进行签名,得到第一签名信息。也即,第一节点11与第二节点进行秘密分享,从\n而共同参与第一节点11对预设消息的签名,进一步实现了去中心化。\n[0068] 在本申请的一些实施例中,第一节点11与第二节点进行秘密分享,以得到秘密信\n息,可以包括以下步骤:\n[0069] (1)第一节点11按预设秘密生成策略生成秘密数。\n[0070] 在一个具体的实施例中,第一节点11随机生成秘密数。N‑1个第二节点也各自按照\n预设秘密生成策略生成自身的秘密数。例如,第一节点11随机生成第一秘密数A,第三节点\n13随机生成第三秘密数B,第四节点14随机生成第四秘密数C。即两个第二节点各自生成自\n身的秘密数分别为,第三秘密数B和第四秘密数C。\n[0071] (2)第一节点11按预设秘密分享策略将秘密数分成N个第一子秘密信息,N为区块\n链系统10中节点数量。\n[0072] 其中,第一节点11按可验证秘密分享策略,将秘密数分成3个第一子秘密信息。可\n验证秘密分享策略用来解决参与者欺骗问题,每个参与者能够在不重构秘密的情况下证实\n所拥有的子秘密信息是否有效。因此,通过可验证秘密分享策略能够使各节点能够在不重\n构秘密数的情况下证实其他节点发送的子秘密信息是否有效。\n[0073] 进一步的,可验证秘密分享策略为Pedersen‑VSS或者Feldman‑VSS。Pedersen‑VSS\n是一个由Pedersen提出的在信息论上安全的非交互可验证秘密分享策略。Pedersen‑VSS是\n基于拉格朗日多项式插值法得出的,信息速率较高。Feldman‑VSS是一个由Feldman提出的\n不需要可信机构参与的非交互可验证秘密分享策略,具有较高的效率;并且,其安全性是基\n于计算离散对数的困难性假设的,对被分享的秘密数能够提供计算上的安全性,能够抵抗\n包括分发者在内的。通过Pedersen‑VSS或者Feldman‑VSS进行秘密分享,能够提高随机数的\n生成效率以及安全性。\n[0074] 例如,第一节点11根据Pedersen‑VSS,将第一秘密数A分成3个第一子秘密信息,计\n算出要分享的第一子秘密信息分别为A1、A2以及A3。同时,N‑1个第二节点也将各自根据\nPedersen‑VSS,将自身秘密数分成3个子秘密信息。例如,第三节点13根据Pedersen‑VSS,将\n第三秘密数B分成3个第三子秘密信息,计算出要分享的第三子秘密信息分别为B1、B2以及\nB3。第四节点14根据Pedersen‑VSS,将第四秘密数C分成3个第四子秘密信息,计算出要分享\n的第四子秘密信息分别分别为C1、C2以及C3。\n[0075] (3)第一节点11将N‑1个第一子秘密信息分配给第二节点。\n[0076] 具体的,第一节点11以在区块链系统10中发送广播的形式,将N‑1个第一子秘密信\n息分配给第二节点。例如,第一节点11将第一子秘密信息A1分配给自身,并将第一子秘密信\n息A2通过广播的形式分配给第三节点13,将第一子秘密信息A3通过广播的形式分配给第四\n节点14。\n[0077] (4)第一节点11分别接收第二节点发送的第二子秘密信息,第二子秘密信息包括\n第二节点中N‑1个节点分别发送的子秘密信息;\n[0078] 由于N‑1个第二节点与第一节点11地位对等,同第一节点获取将N‑1个第一子秘密\n信息分配给第二节点的步骤一样,N‑1个第二节点也各自将自身N个子秘密信息分配给区块\n链系统10中各节点。例如,第三节点13将第三子秘密信息B2分配给自身,并将第三子秘密信\n息B1通过广播的形式分配给第一节点11,将第三子秘密信息B3通过广播的形式分配给第四\n节点14。第四节点14将第四子秘密信息C3分配给自身,并将第四子秘密信息C1通过广播的\n形式分配给第一节点11,将第四子秘密信息C2通过广播的形式分配给第三节点13。\n[0079] 具体的,第一节点11监听N‑1个第二节点,分别接收第二节点发送的第二子秘密信\n息,得到N‑1个第二子秘密信息。例如,第一节点11接收第三节点13分配的第二子秘密信息\nB1,接收第四节点14分配的第二子秘密信息C1。基于同样的方式,第三节点13得到的子秘密\n信息分别为A2、B2以及C2;第三节点13得到的子秘密信息分别为A3、B3以及C3。\n[0080] (5)第一节点11根据第二子秘密信息获取秘密信息。\n[0081] 本实施实施例中,第一节点11分别接收第二节点发送的第二子秘密信息,得到N‑1\n个第二子秘密信息,由于自身还分配有一个第一子秘密信息,第一节点最终得到N个子秘密\n信息。第一节点11根据N个子秘密信息获取秘密信息。\n[0082] 在本申请的一些实施中,第一节点11将得到的一个第一子秘密信息和N‑1个第二\n子秘密信息,根据Pedersen‑VSS进行秘密聚合,计算出第一秘密信息。例如,第一节点11将\nA1、B1以及C1,根据Pedersen‑VSS进行秘密聚合,计算出第一秘密信息A10。基于同样的方\n式,N‑1个第二节点各自根据接收的N‑1个子秘密信息和自身的一个子秘密信息,计算出N‑1\n个第二秘密信息。第三节点13将A2、B2以及C2,根据Pedersen‑VSS进行秘密聚合,计算出第\n三秘密信息A20。第四节点14将A3、B3以及C3,根据Pedersen‑VSS进行秘密聚合,计算出第四\n秘密信息C30。也即,N‑1个第二秘密信息分别为第三秘密信息B20和第四秘密信息C30。\n[0083] 在本申请的一些实施中,第一节点11验证获取的N‑1个第二子秘密信息的有效性。\n若获取的N‑1个第二子秘密信息有效,则第一节点11根据第二子秘密信息获取秘密信息。也\n即,第一节点11在根据第二子秘密信息获取秘密信息之前,先验证获取的第二子秘密信息\n的有效性,从而保证秘密信息的有效性,能够减少产生无效随机数的几率。\n[0084] 在一个具体的实施例中,第一节点11根据Pedersen‑VSS,逐一验证获取的N‑1个第\n二子秘密信息的有效性;若N‑1个第二子秘密信息均有效,则第一节点11根据第二子秘密信\n息获取秘密信息。也即,对获取的N‑1个子秘密信息的有效性全部进行验证,当获取的N‑1个\n第二子秘密信息全部为有效时,根据第二子秘密信息获取秘密信息,也即保证秘密信息生\n成的安全性,保证秘密信息的有效性。\n[0085] 在另一个具体的实施例中,第一节点11根据Pedersen‑VSS,逐一验证获取的N‑1个\n第二子秘密信息的有效性。当N‑1个第二子秘密信息中的有效子秘密信息超过第一预设值\n时,第一节点11根据第二子秘密信息获取秘密信息。其中,第一预设值小于N‑1,第一预设值\n可根据具体情况设定,本申请对此不作限定。通过验证N‑1个第二子秘密信息中的部分子秘\n密信息的有效性,对获取的N‑1个第二子秘密信息进行有效性评价,能够在保证秘密信息有\n效的同时,提高秘密信息的产生效率,进而提高随机数的产生效率。\n[0086] 在本申请的一些实施中,第一节点11验证获取的N‑1个子秘密信息的有效性,以获\n取第一有效性验证结果。第一节点11接收第二节点的第二有效性验证结果。其中,第二有效\n性验证结果是N‑1个第二节点对其自身获取的N‑1个子秘密信息进行验证后,所获取的有效\n性验证结果集合。第一节点11根据第一有效性验证结果和第二有效性验证结果,确定N‑1个\n子秘密信息的有效性;若N‑1个第二子秘密信息有效,则第一节点11根据第二子秘密信息获\n取秘密信息。也即,第一节点11在验证获取的N‑1个子秘密信息时,与区块链系统10中的其\n他节点对验证结果进行一致性共识,通过多节点参与验证,能够避免节点作恶,能够提高验\n证结果的可靠性,提高随机数安全性。\n[0087] 以下,以验证一个子秘密信息为例来说明第一节点11验证获取的N‑1个子秘密信\n息的有效性的具体方式。根据以下方式,逐一验证获取的N‑1个子秘密信息的有效性,第一\n节点11即可验证获取的N‑1个子秘密信息的有效性。\n[0088] 例如,第一节点11得到的子秘密信息分别为A1,B1,C1。第三节点13得到的子秘密\n信息分别为A2、B2以及C2;第三节点13得到的子秘密信息分别为A3、B3以及C3。第一节点11\n验证第三节点13发送的子秘密信息B1的有效性,得到第一合法性验证结果为子秘密信息B1\n无效;第三节点13验证自身分配的子秘密信息B2的有效性,得到第三验证结果为子秘密信\n息B2有效,第一节点11获取第三节点13发送的第三验证结果;第四节点14验证第三节点13\n发送的子秘密信息B3的有效性,得到第四验证结果为子秘密信息B3无效,第一节点11获取\n第四节点14发送的第四验证结果。其中,第二节点的第二合法性验证结果包括第三验证结\n果和第四验证结果。因此,第一节点11得到的第一有效性验证结果和第二有效性验证结果\n有3个,分别为,子秘密信息B1无效,子秘密信息B2有效,子秘密信息B3无效。若根据投票方\n式进行一致性共识,由于验证第三节点13发送的子秘密信息无效的节点数量为2,而验证第\n三节点13发送的子秘密信息有效的节点数量为1,验证第三节点13发送的子秘密信息无效\n的节点数量,大于验证第三节点13发送的子秘密信息有效的节点数量。因此,第一节点11、\n第三节点13和第四节点14,对第三节点13发送的子秘密信息无效,达成一致性共识,并标记\n第三节点13为不诚实节点。因此,第一节点11根据第一有效性验证结果和第二有效性验证\n结果,确定子秘密信息B1无效。基于同样的方式,第四节点14根据第一有效性验证结果和第\n二有效性验证结果,确定子秘密信息B3无效。在其他实施例中,也可以根据其他方式进行一\n致性共识,进而确定子秘密信息的有效性,本申请对此不作限定。\n[0089] 在本申请的一些实施例中,第一节点11得到第一秘密信息后,根据第一秘密信息\n对预设消息进行签名,得到第一签名信息。基于同样的方式,N‑1个第二节点各自根据自身\n的第二秘密信息对预设消息进行签名,得到N‑1第二签名信息。其中,预设消息为区块链系\n统10中各节点接收的同一个消息。例如,第一节点11根据第一秘密信息A10对预设消息进行\n签名,得到第一签名信息A11。基于同样的方式,第三节点13根据第三秘密信息B20对预设消\n息进行签名,得到第三签名信息B21。第四节点14根据第四秘密信息C30对预设消息进行签\n名,得到第四签名信息C31。也即,得到的N‑1第二签名信息分别为,第三签名信息B21和第四\n签名信息C31。\n[0090] 102、获取第二节点基于预设消息生成的第二签名信息。\n[0091] 具体的,第一节点11监听第二节点的广播,以获取第二节点基于预设消息生成的\n第二签名信息。\n[0092] 由于第一节点11和第二节点为地位对等,因此,第二节点根据步骤101同样能够得\n到基于预设消息生成的第二签名信息。在此,对第二节点基于预设消息生成第二签名信息\n的步骤不再详述。\n[0093] 103、将第一签名信息和第二签名信息聚合,得到聚合后的签名信息。\n[0094] 在本申请的一些实施中,第一节点11将第一签名信息和第二签名信息聚合,得到\n第一组签名。需要说明的是,为了便于后续说明,将聚合后的签名信息,称作组签名。基于同\n样的方式,N‑1个节点各自根据获取的N‑1个签名信息和一个自身分配的签名信息,得到N‑1\n个节点的第二组签名。例如,第一节点11根据第一签名信息A11、第三签名信息B21以及第四\n签名信息C31,进行聚合签名,得到第一组签名A12。基于同样的方式,第三节点13根据第一\n签名信息A11、第三签名信息B21以及第四签名信息C31,进行聚合签名,得到第三组签名\nB22。第四节点14根据第一签名信息A11、第三签名信息B21以及第四签名信息C31,进行聚合\n签名,得到第四组签名C32。其中,N‑1个节点的第二组签名即为第三组签名B22和第四组签\n名C32。\n[0095] 在本申请的一些实施中,对第一签名信息和第二签名信息依次进行合法性校验;\n当得到的N个签名信息均为合法签名信息时,根据得到的N个签名信息获取组签名。\n[0096] 在本申请的一些实施中,对第一签名信息和第二签名信息依次进行合法性校验;\n当得到的N个签名信息中存在T个合法签名信息时,根据T个合法签名信息获取组签名,其\n中,T为正整数,且T不大于N。\n[0097] 在一个具体的实施方式中,对第一签名信息和第二签名信息依次进行合法性校\n验,将不合法的签名信息删除,缓存合法的签名信息。当获取的合法签名信息数目达到T时,\n将获取到的T个合法签名信息作为输入,运行BLS签名算法恢复出组签名。BLS签名算法由斯\n坦福大学Dan Boneh,Ben Lynn和Hovav Shacham提出,是一种可以实现签名聚合和秘钥聚\n合的算法,即可以将多个秘钥聚合成一把秘钥,将多个签名聚合成一个签名。基于BLS类型\n的门限签名非常简单,不需要签名者之间进行多轮通信,能够降低签名的复杂度。\n[0098] 在其他实施例中,当获取的合法签名信息数目达到T时,将获取到的T个合法签名\n信息作为输入,运行Schnorr签名算法恢复出组签名。通过Schnorr签名,可以将所有签名验\n证方程相加,可一次性验证所有签名,区块验证也可以变得更快,从而节省一些计算能力。\n[0099] 104、根据聚合后的签名信息,生成第一随机数。\n[0100] 在本申请的一些实施例中,第一节点11根据聚合后的签名信息,生成第一随机数,\n可以包括以下步骤:\n[0101] (1)第一节点11获取第一节点11的私钥。\n[0102] 具体的,第一节点11根据非对称加密算法获取第一节点11的私钥。在其他实施例\n中,第一节点11也可以根据对称加密算法获取第一节点11的私钥。对称加密算法在加密和\n解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个\n密钥是公钥和私钥。与对称加密算法不同,非对称加密算法需要两个密钥:公钥和私钥。公\n钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对\n数据进行加密,那么只有用对应的公钥才能解密。\n[0103] 优选的,第一节点11根据RSA加密算法获取第一节点11的私钥。RSA加密算法是\n1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼\n(Leonard Adleman)一起提出的。RSA加密算法通常是先生成一对RSA密钥,其中之一是私\n钥,由用户保存;另一个为公钥,可对外公开,甚至可在网络服务器中注册。为提高保密强\n度,RSA密钥至少为500位长,一般推荐使用1024位。RSA加密算法是第一个能同时用于加密\n和数字签名的算法,也易于理解和操作。在其他实施例中,第一节点11也可以根据椭圆加密\n算法获取第一节点11的私钥。在私钥的加密解密速度上,椭圆加密算法速度较快,并且存储\n空间占用小,带宽要求低。\n[0104] (2)第一节点11根据聚合后的签名信息、第一节点11的私钥,生成第一随机数以及\n第一随机数对应的证明信息。\n[0105] 在本申请的一些实施中,第一节点11以第一组签名、第一节点11的私钥为输入,通\n过可验证随机函数(VRF,Verifiable Random Function),生成第一随机数以及第一随机数\n对应的证明信息。通过可验证随机函数生成第一随机数以及第一随机数对应的证明信息,\n能够生成真正随机、无法被预测且可验证的随机数。\n[0106] 基于同样的方式,N‑1个第二节点各自以第二节点根据第二组签名、第二节点的私\n钥为输入,通过可验证随机函数,生成第二随机数以及第二随机数对应的证明信息。\n[0107] 例如,第一节点11根据第一组签名A12和第一节点11的私钥,生成第一随机数A13\n和第一随机数A13对应的证明信息。第三节点13根据第三组签名B22和第三节点13的私钥,\n生成第三随机数B23和第三随机数B23对应的证明信息。第四节点14根据第四组签名C32和\n第四节点14的私钥,生成第四随机数C33和第四随机数C33对应的证明信息。\n[0108] 105、获取第二节点对第一随机数的合法性验证结果。\n[0109] 具体的,第一节点11将第一随机数以及第一随机数对应的证明信息发送至第二节\n点,以使第二节点验证第一随机数的合法性。例如,第一节点11将第一随机数A13以及第一\n随机数A13的证明信息发送至第二节点,使第二节点验证第一随机数A13的合法性。\n[0110] 具体的,第一节点11监听第二节点的广播,以获取第二节点对第一随机数的合法\n性验证结果。\n[0111] 由于第一节点11和第二节点对等,第二节点需要对第一节点11生成的第一随机数\n进行验证,第一节点11同样需要对第二节点生成的第二随机数进行验证。在此,以第一节点\n11验证第二节点生成的第二随机数为例,阐述得到合法性验证验证结果的过程。得到第一\n节点11对第二随机数的合法性验证结果,可以包括以下步骤:\n[0112] (1)第一节点11获取第二节点的公钥、第二节点的第二随机数以及第二随机数对\n应的证明信息。\n[0113] 具体的,第一节点11监听第二节点的广播,获取第二节点的公钥、第二节点的第二\n随机数以及第二随机数对应的证明信息。其中,第二节点根据非对称加密算法获取第二节\n点的公钥和私钥。在其他实施例中,第二节点也可以根据对称加密算法获取第二节点的公\n钥和私钥。\n[0114] (2)第一节点11根据组签名,第二节点的公钥、第二随机数以及第二随机数对应的\n证明信息,验证第二随机数的合法性,得到第一节点对第二随机数的合法性验证结果。\n[0115] 具体的,第一节点11以组签名,第二节点的公钥、第二随机数以及第二随机数对应\n的证明信息作为输入,通过可验证随机函数验证第二随机数的合法性,得到第一节点对第\n二随机数的合法性验证结果。\n[0116] 因此,第二节点监听第一节点11的广播即可得到第一节点对第二随机数的合法性\n验证结果。基于同样的方式,第一节点11监听第二节点的广播即可得到第二节点对第一随\n机数的合法性验证结果。\n[0117] 106、当基于第二节点的合法性验证结果确定第一随机数合法时,第一节点将第一\n随机数存储。\n[0118] 具体的,第一节点11和第二节点对验证结果进行一致性共识。当第一节点11和第\n二节点,对第一随机数合法为合法,达成一致性共识时,第一节点11判定第一随机数合法,\n第一节点11将第一随机数存储。也即,通过多个节点参与第一随机数的验证,能够避免节点\n作恶,能够提高验证结果的可靠性,提高随机数安全性。\n[0119] 在本申请的一些实施例中,第一节点11还参与验证第二节点生成的第二随机数,\n并向第二节点发送第一节点11对第二随机数的合法性验证结果,具体可以包括以下步骤:\n[0120] (1)第一节点11获取第二节点的公钥、第二随机数以及第二随机数对应的证明信\n息。\n[0121] 具体的,第一节点11监听第二节点的广播,获取第二节点的公钥、第二节点的第二\n随机数以及第二随机数对应的证明信息。其中,第二节点根据非对称加密算法获取第二节\n点的公钥和私钥。在其他实施例中,第二节点也可以根据对称加密算法获取第二节点的公\n钥和私钥。\n[0122] (2)第一节点11根据组签名,第二节点的公钥、第二随机数以及第二随机数对应的\n证明信息,验证第二随机数的合法性,得到第一合法性验证结果。\n[0123] 具体的,第一节点11以第一组签名,第二节点的公钥、第二随机数以及第二随机数\n对应的证明信息作为输入,通过可验证随机函数验证第二随机数的合法性,得到第一合法\n性验证结果。\n[0124] (3)第一节点11接收第二节点发送的对第二随机数的第二合法性验证结果。\n[0125] 基于同样的方式,N‑1个第二节点各自以第二组签名,第二节点的公钥、第二随机\n数以及第二随机数对应的证明信息作为输入,通过可验证随机函数验证第二随机数的合法\n性,从而得到N‑1个第二合法性验证结果。\n[0126] 例如,第三节点13通过可验证随机函数验证第三随机数B23的合法性,得到第三验\n证结果为,第三随机数B23合法。第四节点14通过可验证随机函数验证第三随机数B23的合\n法性,得到第四验证结果为,第三随机数B23合法。因此,得到的N‑1个第二合法性验证结果\n分别为第三验证结果和第四验证结果。基于同样的方式,也能够对第四随机数进行验证。从\n而得到第二随机数的第二合法性验证结果。\n[0127] 第一节点11监听第二节点的广播,以接收第二节点发送的对第二随机数的第二合\n法性验证结果。\n[0128] (4)根据第一合法性验证结果和第二合法性验证结果,确定第二随机数的合法性。\n[0129] 具体的,根据第一合法性验证结果和第二合法性验证结果,判断第一节点11和第\n二节点是否,对第二随机数为合法,达成一致性共识,若是,则确定第二随机数合法;若否,\n则确定第二随机数不合法。\n[0130] (5)若确定第二随机数为合法,则第一节点11将第二随机数存储。\n[0131] 本申请实施例中,若确定第二随机数为合法,则第一节点11将第二随机数存储。也\n即,通过多个节点参与第二随机数的验证,能够避免节点作恶,能够提高验证结果的可靠\n性,提高随机数的安全性。\n[0132] 由于第二节点有N‑1个,对应产生N‑1个第二随机数,因此,对N‑1个第二随机数的\n合法性,逐一进行确定,并逐一将合法的第二随机数存储。\n[0133] 区别于现有技术,本申请实施例的随机数的生成方法,应用于区块链系统,区块链\n系统包括相互连接的至少两个节点,至少两个节点中包括第一节点和第二节点,生成方法\n由第一节点执行,生成方法包括:获取自身基于预设消息生成的第一签名信息;获取第二节\n点基于预设消息生成的第二签名信息;将第一签名信息和第二签名信息聚合,得到聚合后\n的签名信息;根据聚合后的签名信息,生成第一随机数;获取第二节点对第一随机数的合法\n性验证结果;当基于第二节点的合法性验证结果确定第一随机数合法时,第一节点将第一\n随机数存储。本申请通过多个节点参与随机数的生成,提高了随机数生成的安全性。\n[0134] 下面结合一具体应用场景对本申请实施例中随机数的生成方法进行描述。\n[0135] 请参阅图3,图3是本申请实施例提供的随机数的生成方法的另一个实施例流程示\n意图,图4是本申请实施例提供的随机数的生成方法中各节点的信息交互示意图。本实施例\n仍然以图1中的区块链系统10为例进行说明,其中N=3。该方法流程可以包括:\n[0136] 201、第一节点按预设秘密生成策略生成秘密数A。\n[0137] 具体的,第一节点11随机生成秘密数。基于同样的方式,N‑1个第二节点也各自随\n机生成自身的秘密数。例如,第一节点11随机生成第一秘密数A,第三节点13随机生成第三\n秘密数B,第四节点14随机生成第四秘密数C。即两个第二节点各自生成自身的秘密数分别\n为,第三秘密数B和第四秘密数C。\n[0138] 202、第一节点按预设秘密分享策略将秘密数A分成N个第一子秘密信息。\n[0139] 具体的,第一节点11根据Pedersen‑VSS,将第一秘密数A分成3个第一子秘密信息,\n计算出要分享的第一子秘密信息分别为A1、A2以及A3。同时,N‑1个第二节点也将各自根据\nPedersen‑VSS,将自身秘密数分成3个子秘密信息。例如,第三节点13根据Pedersen‑VSS,将\n第三秘密数B分成3个第三子秘密信息,计算出要分享的第三子秘密信息分别为B1、B2以及\nB3。第四节点14根据Pedersen‑VSS,将第四秘密数C分成3个第四子秘密信息,计算出要分享\n的第四子秘密信息分别分别为C1、C2以及C3。\n[0140] 203、第一节点将N‑1个第一子秘密信息分配给第二节点。\n[0141] 具体的,第一节点11以在区块链系统10中发送广播的形式,将N‑1个第一子秘密信\n息分配给第二节点。例如,第一节点11将第一子秘密信息A1分配给自身,并将第一子秘密信\n息A2通过广播的形式分配给第三节点13,将第一子秘密信息A3通过广播的形式分配给第四\n节点14。\n[0142] 204、第一节点分别接收第二节点发送的第二子秘密信息,第二子秘密信息包括第\n二节点中N‑1个节点分别发送的子秘密信息。\n[0143] 由于N‑1个第二节点与第一节点11地位对等,基于同样的方式,N‑1个第二节点也\n各自将自身N个子秘密信息分配给区块链系统10中各节点。\n[0144] 例如,第三节点12将第三子秘密信息B2分配给自身,并将第三子秘密信息B1通过\n广播的形式分配给第一节点11,将第三子秘密信息B3通过广播的形式分配给第四节点14。\n第四节点14将第四子秘密信息C3分配给自身,并将第四子秘密信息C1通过广播的形式分配\n给第一节点11,将第四子秘密信息C2通过广播的形式分配给第三节点13。\n[0145] 因此,通过第一节点11与第三节点13和第四节点14的信息交互,第一节点11得到\n的子秘密信息分别为A1、B1以及C1,第三节点13得到的子秘密信息分别为A2、B2以及C2;第\n三节点13得到的子秘密信息分别为A3、B3以及C3。\n[0146] 205、第一节点验证获取的N‑1个第二子秘密信息的有效性。\n[0147] 具体的,第一节点11根据Pedersen‑VSS,逐一验证获取的N‑1个子秘密信息的有效\n性。基于同样的方式,第三节点13根据Pedersen‑VSS,逐一验证获取的N‑1个子秘密信息的\n有效性。第四节点14根据Pedersen‑VSS,逐一验证获取的N‑1个子秘密信息的有效性。\n[0148] 206、若N‑1个第二子秘密信息有效,则第一节点根据第二子秘密信息获取秘密信\n息A10。\n[0149] 具体的,若第一节点11根据Pedersen‑VSS,验证获取的N‑1个子秘密信息有效,则\n根据第二子秘密信息获取秘密信息A10。\n[0150] 例如,第一节点11将A1、B1以及C1,根据Pedersen‑VSS进行秘密聚合,计算出第一\n秘密信息A10。基于同样的方式,N‑1个第二节点各自根据接收的N‑1个子秘密信息和自身的\n一个子秘密信息,计算出N‑1个第二秘密信息。第三节点13将A2、B2以及C2,根据Pedersen‑\nVSS进行秘密聚合,计算出第三秘密信息A20。第四节点14将A3、B3以及C3,根据Pedersen‑\nVSS进行秘密聚合,计算出第四秘密信息C30。也即,N‑1个第二秘密信息分别为第三秘密信\n息B20第四秘密信息C30。\n[0151] 207、第一节点根据秘密信息,对消息M进行签名,得到第一签名信息A11。\n[0152] 具体的,第一节点11根据第一秘密信息A10对消息M进行签名,得到第一签名信息\nA11。基于同样的方式,第三节点13根据第三秘密信息B20对消息M进行签名,得到第三签名\n信息B21。第四节点14根据第四秘密信息C30对消息M进行签名,得到第四签名信息C31。也\n即,得到的N‑1第二签名信息分别为,第三签名信息B21和第四签名信息C31。\n[0153] 208、第一节点获取第二节点基于消息M生成的第二签名信息。\n[0154] 具体的,第一节点11监听第二节点的广播,以获取第二节点基于消息M生成的第二\n签名信息。因此,第一节点11、第三节点13以及第四节点14得到的签名信息均为第一签名信\n息A11,第三签名信息B21和第四签名信息C31。\n[0155] 209、第一节点根据第一签名信息和第二签名信息,得到组签名A12。\n[0156] 具体的,第一节点11根据第一签名信息和第二签名信息,得到第一组签名。基于同\n样的方式,N‑1个节点各自根据获取的N‑1个签名信息和一个自身分配的签名信息,得到N‑1\n个节点的第二组签名。例如,第一节点11根据第一签名信息A11、第三签名信息B21以及第四\n签名信息C31,进行聚合签名,得到第一组签名A12。基于同样的方式,第三节点13根据第一\n签名信息A11、第三签名信息B21以及第四签名信息C31,进行聚合签名,得到第三组签名\nB22。第四节点14根据第一签名信息A11、第三签名信息B21以及第四签名信息C31,进行聚合\n签名,得到第四组签名C32。其中,N‑1个节点的第二组签名即为第三组签名B22和第四组签\n名C32。\n[0157] 210、第一节点获取第一节点的私钥。\n[0158] 具体的,第一节点11根据RSA加密算法获取第一节点11的私钥SK1。基于同样的方\n式,第三节点13根据RSA加密算法获取第三节点13的私钥SK2。第四节点14根据RSA加密算法\n获取第四节点14的私钥SK3。\n[0159] 211、第一节点根据组签名、第一节点的私钥,生成第一随机数A13以及第一随机数\nA13对应的证明信息。\n[0160] 具体的,第一节点11以第一组签名A12和第一节点11的私钥SK1为输入,通过可验\n证随机函数,生成第一随机数A13和第一随机数A13对应的证明信息。第三节点13以第三组\n签名B22和第三节点13的私钥SK2,生成第三随机数B23和第三随机数B23对应的证明信息。\n第四节点14根据第四组签名C32和第四节点14的私钥SK3,生成第四随机数C33和第四随机\n数C33对应的证明信息。\n[0161] 212、获取第二节点对第一随机数A13的合法性验证结果。\n[0162] 具体的,第一节点11根据RSA加密算法获取第一节点11的公钥PK1,第一节点11将\n公钥PK1、第一随机数A13以及第一随机数A13的证明信息发送至第二节点,以使第二节点验\n证第一随机数A13的合法性。\n[0163] 例如,第一节点11验证第一随机数A13的合法性,得到第一合法性验证结果为,第\n一随机数A13合法;第三节点13验证第一随机数A13的合法性,得到第三验证结果为,第一随\n机数A13合法;第四节点14验证第一随机数A13的合法性,得到第四验证结果为,第一随机数\nA13不合法。若根据投票方式进行一致性共识,由于验证第一随机数A13为合法的节点数量\n为2,而验证第一随机数A13为不合法的节点数量为1。验证第一随机数A13为合法的节点数\n量大于,验证第一随机数A13为不合法的节点数量。因此,第一节点11与第三节点13以及第\n四节点14,对第一随机数A13为合法,达成一致性共识,确定第一随机数A13合法。\n[0164] 若验证第一随机数A13为合法的节点数量小于,验证第一随机数A13为不合法的节\n点数量。则第一节点11与第三节点13以及第四节点14,对第一随机数A13为合法,未达成一\n致性共识,确定第一随机数A13不合法。\n[0165] 基于同样的方式,第一节点11与第三节点13以及第四节点14,可以对第三随机数\nB23和第四随机数C33的有效性均进行验证。\n[0166] 例如,第一节点11与第三节点13以及第四节点14验证第三随机数B23的合法性。首\n先,第一节点11获取第三节点13的公钥PK2、第三随机数B23以及第三随机数B23对应的证明\n信息。其中,第三节点13根据根据RSA加密算法获取第三节点13的公钥PK2,并发送给第一节\n点11和第四节点14。第一节点11以第一组签名A12,第三节点13的公钥PK2、第三随机数B23\n以及第三随机数B23对应的证明信息作为输入,通过可验证随机函数验证第三随机数B23的\n合法性。基于同样的方式,第四节点14以第四组签名B32,第三节点13的公钥PK2、第三随机\n数B23以及第三随机数B23对应的证明信息作为输入,通过可验证随机函数验证第三随机数\nB23的合法性。第一节点11与第三节点13以及第四节点14,对验证第三随机数B23进行一致\n性共识,从而验证第三随机数B23的合法性。\n[0167] 213、若当基于第二节点的合法性验证结果确定第一随机数合法时,第一节点将第\n一随机数A13存储。\n[0168] 具体的,若验证第一随机数A13有效性的验证结果为合法,则第一节点将第一随机\n数A13存储。基于同样的方式,当验证第三随机数B23和第四随机数C33合法时,将第三随机\n数B23和第四随机数C33存储。\n[0169] 为便于更好的实施本申请实施例提供的生成方法,本申请实施例还提供一种基于\n上述生成方法的节点。其中名词的含义与上述生成方法中相同,具体实现细节可以参考方\n法实施例中的说明。\n[0170] 请参阅图5,图5为本申请实施例提供的随机数的生成装置的一实施例结构示意\n图。其中该生成装置应用于区块链系统10中的第一节点11,区块链系统10包括相互连接的\n至少两个节点,至少两个节点中包括第一节点11和第二节点。该生成装置可以包括第一获\n取单元301、第二获取单元302、签名单元303、随机数生成单元304、第三获取单元305以及随\n机数存储单元306,\n[0171] 该生成装置具体如下:\n[0172] 第一获取单元301用于,获取自身基于预设消息生成的第一签名信息。\n[0173] 在本申请实施例中,第一获取单元301对预设消息进行签名,第一获取单元301得\n到自身基于预设消息生成的第一签名信息。优选的,第一获取单元301对预设消息进行数字\n签名,得到自身基于预设消息生成的第一签名信息。简单地说,所谓数字签名就是附加在数\n据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的\n接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)\n进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络\n中传输。\n[0174] 参阅图6,图6是图5中第一获取单元的一具体实施例结构示意图。在本申请的一些\n实施例中,第一获取单元301,包括:秘密分享子单元3011,和签名子单元3012。秘密分享子\n单元3011,用于与与第二节点进行秘密分享,以得到秘密信息;签名子单元3012,用于根据\n秘密信息,对预设消息进行签名,得到第一签名信息。也即,第一节点11与第二节点进行秘\n密分享,从而共同参与第一节点11对预设消息的签名,进一步实现了去中心化。\n[0175] 在本申请的一些实施例中,秘密分享子单元3011与第二节点进行秘密分享,以得\n到秘密信息,可以包括以下步骤:\n[0176] (1)秘密分享子单元3011,按预设秘密生成策略生成秘密数。\n[0177] (2)秘密分享子单元3011,按预设秘密分享策略将秘密数分成N个第一子秘密信\n息,N为区块链系统10中节点数量。\n[0178] (3)秘密分享子单元3011,将N‑1个第一子秘密信息分配给第二节点。\n[0179] (4)秘密分享子单元3011,分别接收第二节点发送的第二子秘密信息,第二子秘密\n信息包括第二节点中N‑1个节点分别发送的子秘密信息;\n[0180] (5)秘密分享子单元3011,根据第二子秘密信息获取秘密信息。\n[0181] 本实施实施例中,秘密分享子单元3011,分别接收第二节点发送的第二子秘密信\n息,得到N‑1个第二子秘密信息,由于自身还分配有一个第一子秘密信息,第一节点最终得\n到N个子秘密信息。秘密分享子单元3011,根据N个子秘密信息获取秘密信息。\n[0182] 在本申请的一些实施中,秘密分享子单元3011,验证获取的N‑1个子秘密信息的有\n效性,以获取有效性验证结果。若有效性验证结果为有效,则秘密分享子单元3011,根据第\n二子秘密信息获取秘密信息。也即,秘密分享子单元3011,在根据第二子秘密信息获取秘密\n信息之前,先验证获取的第二子秘密信息的有效性,从而保证秘密信息的有效性,能够减少\n产生无效随机数的几率。\n[0183] 在本申请的一些实施例中,秘密分享子单元3011得到第一秘密信息后,签名子单\n元3012根据第一秘密信息对预设消息进行签名,得到第一签名信息。基于同样的方式,N‑1\n个第二节点各自根据自身的第二秘密信息对预设消息进行签名,得到N‑1第二签名信息。其\n中,预设消息为区块链系统10中各节点接收的同一个消息。\n[0184] 第二获取单元302用于,获取目标节点基于预设消息生成的第二签名信息。\n[0185] 具体的,第二获取单元302监听第二节点的广播,以获取第二节点基于预设消息生\n成的第二签名信息。\n[0186] 由于第一节点11和第二节点为地位对等,因此,第二节点根据步骤101同样能够得\n到基于预设消息生成的第二签名信息。在此,对第二节点基于预设消息生成第二签名信息\n的步骤不再详述。\n[0187] 签名单元303根据第一签名信息和第二签名信息,得到组签名。\n[0188] 在本申请的一些实施中,签名单元303对第一签名信息和第二签名信息依次进行\n合法性校验;当得到的N个签名信息均为合法签名信息时,签名单元303根据得到的N个签名\n信息获取组签名。\n[0189] 在本申请的一些实施中,签名单元303对第一签名信息和第二签名信息依次进行\n合法性校验;当得到的N个签名信息中存在T个合法签名信息时,签名单元303根据T个合法\n签名信息获取组签名,其中,T为正整数,且T不大于N。\n[0190] 随机数生成单元304用于,根据组签名,生成第一随机数。\n[0191] 具体的,随机数生成单元304用于,获取所述第一节点的私钥;根据所述聚合后的\n签名信息、所述第一节点的私钥,生成所述第一随机数以及所述第一随机数对应的证明信\n息。\n[0192] 第三获取单元305用于,获取第二节点对第一随机数的合法性验证结果。\n[0193] 参阅图7,图7是图5中第三获取单元的一具体实施例结构示意图。在本申请的一些\n实施例中,第三获取单元305,包括:获取子单元3051和验证子单元3052。获取子单元3051用\n于,获取第二节点的公钥、第二节点的第二随机数以及第二随机数对应的证明信息;验证子\n单元3052用于,根据聚合后的签名信息、第二节点的公钥、第二随机数以及第二随机数对应\n的证明信息,验证第二随机数的合法性。\n[0194] 获取子单元3051监听第二节点的广播,以获取第二节点对第一随机数的合法性验\n证结果。\n[0195] 随机数存储单元306用于,当基于第二节点的合法性验证结果确定第一随机数合\n法时,第一节点将第一随机数存储。随机数存储单元306还用于,在验证子单元3052验证第\n二随机数合法时,则将第二随机数存储。。\n[0196] 本申请实施例中,若确定第二随机数为合法,则随机数生成单元304将第二随机数\n存储。也即,通过节点参与第二随机数的合法性验证,通过多个节点参与第二随机数的验\n证,能够避免节点作恶,能够提高验证结果的可靠性,提高随机数的安全性。\n[0197] 区别于现有技术,本申请实施例的随机数的生成装置,应用于区块链系统中的第\n一节点,区块链系统包括相互连接的至少两个节点,至少两个节点中包括第一节点和第二\n节点,生成方法由第一节点执行,生成方法包括:获取自身基于预设消息生成的第一签名信\n息;获取第二节点基于预设消息生成的第二签名信息;将第一签名信息和第二签名信息聚\n合,得到聚合后的签名信息;根据聚合后的签名信息,生成第一随机数;获取第二节点对第\n一随机数的合法性验证结果;当基于第二节点的合法性验证结果确定第一随机数合法时,\n将第一随机数存储。本申请通过多个节点参与随机数的生成,提高了随机数生成的安全性。\n[0198] 本申请实施例还提供一种随机数的生成装置,参阅图8,图8是本申请实施例提供\n的随机数的生成装置的另一个实施例结构示意图。如图8所示,其示出了本申请实施例所涉\n及的生成装置的结构示意图,具体来讲:\n[0199] 该生成装置可以包括一个或者一个以上处理核心的处理器501、一个或一个以上\n计算机可读存储介质的存储器502、电源503和输入单元504等部件。本领域技术人员可以理\n解,图8中示出的生成装置结构并不构成对生成装置的限定,可以包括比图示更多或更少的\n部件,或者组合某些部件,或者不同的部件布置。其中:\n[0200] 处理器501是该生成装置的控制中心,利用各种接口和线路连接整个生成装置的\n各个部分,通过运行或执行存储在存储器502内的软件程序和/或本申请,以及调用存储在\n存储器502内的数据,执行生成装置的各种功能和处理数据,从而对生成装置进行整体监\n控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器\n和调制解调处理器,其中,应用处理器主要处理操作存储介质、用户界面和应用程序等,调\n制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处\n理器501中。\n[0201] 存储器502可用于存储软件程序以及本申请,处理器501通过运行存储在存储器\n502的软件程序以及本申请,从而执行各种功能应用以及数据处理。存储器502可主要包括\n存储程序区和存储数据区,其中,存储程序区可存储操作存储介质、至少一个功能所需的应\n用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据生成装置的使用\n所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存\n储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器\n502还可以包括存储器控制器,以提供处理器501对存储器502的访问。\n[0202] 生成装置还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理\n存储介质与处理器501逻辑相连,从而通过电源管理存储介质实现管理充电、放电、以及功\n耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电存储介质、\n电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。\n[0203] 该生成装置还可包括输入单元504,该输入单元504可用于接收输入的数字或字符\n信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号\n输入。\n[0204] 尽管未示出,生成装置还可以包括显示单元等,在此不再赘述。具体在本实施例\n中,生成装置中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应\n的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,\n从而实现各种功能,如下:\n[0205] 获取自身基于预设消息生成的第一签名信息;获取第二节点基于预设消息生成的\n第二签名信息;将第一签名信息和第二签名信息聚合,得到聚合后的签名信息;根据聚合后\n的签名信息,生成第一随机数;获取第二节点对第一随机数的合法性验证结果;当基于第二\n节点的合法性验证结果确定第一随机数合法时,将第一随机数存储。\n[0206] 本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以\n通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存\n储介质中,并由处理器进行加载和执行。\n[0207] 为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理\n器进行加载,以执行本申请实施例所提供的任一种生成方法中的步骤。例如,该指令可以执\n行如下步骤:\n[0208] 获取自身基于预设消息生成的第一签名信息;获取第二节点基于预设消息生成的\n第二签名信息;将第一签名信息和第二签名信息聚合,得到聚合后的签名信息;根据聚合后\n的签名信息,生成第一随机数;获取第二节点对第一随机数的合法性验证结果;当基于第二\n节点的合法性验证结果确定第一随机数合法时,将第一随机数存储。\n[0209] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。\n[0210] 其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆\n体(RAM,Random Access Memory)、磁盘或光盘等。\n[0211] 由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种随机数\n的生成方法中的步骤,因此,可以实现本申请实施例所提供的任一种随机数的生成方法所\n能实现的有益效果,详见前面的实施例,在此不再赘述。\n[0212] 以上对本申请实施例所提供的一种随机数的生成方法、节点和系统进行了详细介\n绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只\n是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的\n思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为\n对本申请的限制。
法律信息
- 2021-07-06
- 2021-03-16
实质审查的生效
IPC(主分类): H04L 9/32
专利申请号: 201910535779.X
申请日: 2019.06.20
- 2019-09-06
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2019-05-21
|
2018-12-17
| | |
2
| | 暂无 |
2017-05-16
| | |
3
| |
2019-04-12
|
2019-01-16
| | |
4
| |
2019-04-12
|
2018-11-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |