CN112799636B - 随机数生成方法、装置、设备和存储介质 - Google Patents
随机数生成方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112799636B CN112799636B CN202110398821.5A CN202110398821A CN112799636B CN 112799636 B CN112799636 B CN 112799636B CN 202110398821 A CN202110398821 A CN 202110398821A CN 112799636 B CN112799636 B CN 112799636B
- Authority
- CN
- China
- Prior art keywords
- signature
- random number
- random
- node
- generation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 239000012634 fragment Substances 0.000 claims abstract description 197
- 238000006243 chemical reaction Methods 0.000 claims description 28
- 230000007246 mechanism Effects 0.000 claims description 23
- 238000012216 screening Methods 0.000 claims description 21
- 238000012795 verification Methods 0.000 claims description 18
- 238000012790 confirmation Methods 0.000 claims description 15
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000007423 decrease Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种随机数生成方法、装置、设备和存储介质,涉及计算机技术领域,尤其涉及计算机加密技术和区块链技术,可以用于云计算和云领域。该方法由签名片段生成节点执行,具体实现方案为:获取初始数;基于本机私钥对所述初始数进行签名,以产生随机签名片段;将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数。本申请提供了一种去中心化随机数生成方案,可靠性高、可信性强。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及计算机加密技术和区块链技术。
背景技术
在基于计算机系统实现的很多业务场景中,经常会出现使用随机数的需求。例如,需要随机的在候选人中选择一个进行任务分配,或是抽奖程序中,基于随机数来随机的在奖池中选择一个号码。因此,需要有生成随机数的机制。
在区块链系统中,也存在随机数的使用和生成需求。现有技术中,区块链节点可连接链外的中心化随机数生成服务,来获取随机数。当使用中心化的随机数生成服务来生成随机数时,区块链其他节点的用户只能无条件的信任该随机数确实是随机生成的,没有有效的验证手段。
但是,在实际场景中,中心化的随机数生成服务的服务提供方,可能会因为利益攸关,和区块生成节点串谋作弊,影响对外提供的随机数,从而使自己处于优势地位。可见,在区块链系统中,基于中心化机制产生的随机数,其可靠性、可信性较低。
发明内容
本公开提供了一种随机数生成方法、装置、设备和存储介质,以提高随机数生成的可靠性和可信性。
根据本公开的一方面,提供了一种随机数生成方法,由签名片段生成节点执行,所述方法包括:
获取初始数;
基于本机私钥对所述初始数进行签名,以产生随机签名片段;
将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成。
根据本公开的另一方面,提供了一种随机数生成方法,由随机数生成节点执行,所述方法包括:
获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用本公开实施例所提供的随机数生成方法生成的;
根据至少两个随机签名片段生成门限签名;
根据所述门限签名生成所述随机数。
根据本公开的再一方面,提供了一种随机数生成装置,配置于签名片段生成节点,所述装置包括:
初始数获取模块,用于获取初始数;
随机签名片段产生模块,用于基于本机私钥对所述初始数进行签名,以产生随机签名片段;
随机签名片段传输模块,用于将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成。
根据本公开的又一方面,提供了一种随机数生成装置,配置于随机数生成节点,所述装置包括:
随机签名片段获取模块,用于获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用本公开实施例所提供的随机数生成方法生成的;
门限签名生成模块,用于根据至少两个随机签名片段生成门限签名;
随机数生成模块,用于根据所述门限签名生成所述随机数。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行时实现本公开任意实施例所提供的随机数生成方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行时实现本公开任意实施例所提供的随机数生成方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开任意实施例所提供的随机数生成方法。
本公开提供了一种去中心化随机数生成方案,可靠性高、可信性强。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1所示为实现本公开实施例随机数生成方案所适用的随机数生成系统架构示意图;
图2为本公开实施例提供的一种随机数生成方法的流程图;
图3为本公开实施例提供的一种随机数生成方法的流程图;
图4为本公开实施例提供的一种随机数生成方法的流程图;
图5为本公开实施例提供的一种随机数生成方法的流程图;
图6A为本公开实施例提供的一种随机数生成方法示例的流程图;
图6B为本公开实施例提供的一种随机数生成方法的交互图;
图6C为本公开实施例提供的一种随机数生成方法的架构示意图;
图7为本公开实施例提供的一种随机数生成装置的结构示意图;
图8为本公开实施例提供的一种随机数生成装置的结构示意图;
图9是用来实现本公开实施例的随机数生成方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开实施例提供了一种随机数生成方案,该方案由多方配合实现,图1所示为实现本公开实施例随机数生成方案所适用的随机数生成系统架构示意图。如图1所示,该随机数生成系统主要涉及至少两个签名片段生成节点110和一个随机数生成节点120,相互配合完成随机数生成。签名片段生成节点110和随机数生成节点120之间相互独立,可以是独立的物理设备,也可以是独立的虚拟机或独立运行的软件主体。随机数生成节点120本身也可以兼做一个签名片段生成节点110。上述随机数生成系统可以为分布式的计算机网络,可选是适用于区块链系统,签名片段生成节点110和随机数生成节点120分别为区块链系统中的节点。签名片段生成节点110和随机数生成节点120的身份角色可以是固定不变的、也可以是动态变化的。例如,在区块链系统中,随机数生成节点110可以为当前区块生成周期的区块生成节点,也称记账节点或矿工。
下面通过具体实施例详细介绍随机数生成方法的实现过程。
图2为本公开实施例提供的一种随机数生成方法的流程图,基于随机数生成系统生成随机数,可供各种业务场景等来使用。本公开实施例可以由签名片段生成节点来执行,具体包括:
S210、获取初始数;
随机数的生成需要至少两个签名片段生成节点生成的随机签名片段,初始数是用于生成各个随机签名片段的基础信息。各个签名片段生成节点所基于的初始数的相同的。初始数的内容和数值大小等不受限制。
初始数可以通过多种方式统一提供给各个签名片段生成节点。例如,获取初始数的操作可以包括:
可以获取上一轮生成的随机数,作为当前轮的初始数。
或者,可以获取中心化生成的初始数。
上述各种获取初始数的方式中,将上一轮生成的随机数作为初始数,可以增强随机性,各个节点无法预知初始数。通过中心化生成的初始数,可以设置一权威机构,由其产生初始数并通知各个签名片段节点,中心化产生的初始化可具备随机性,例如通过随机算法生成初始数。例如,在区块链系统中,区块生成节点即可用于产生初始数并通知其他区块链节点。
S220、基于本机私钥对所述初始数进行签名,以产生随机签名片段;
在本公开实施例中,利用多方门限签名密钥来生成和验证随机数。多方门限签名密钥是由多方产生的密钥,一般为非对称密钥对,包括公钥和私钥,私钥用于产生多方门限签名,公钥用于对多方门限签名进行验证。私钥由各方自行控制掌握,并不公开。公钥是公开可获知的。多方门限签名的多方数量记为N,则在签名时,需满足至少M方共同利用本机私钥进行签名,才能使签名有效,可供公钥进行验证。M小于N。N和M的数量可以在产生多方门限签名密钥时进行设定。
本公开实施例利用了多方门限签名密钥的上述特性,签名片段生成节点就是多方中的任意一方,其具有本机私钥。签名片段生成节点利用自己的本机私钥,对初始数进行签名,以产生随机签名片段。
S230、将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成;
其中,至少两个所述签名片段生成节点各自具有多方门限签名密钥中的本机私钥,所述多方门限签名密钥中的公钥用于对生成的所述门限签名进行验证。
签名片段生成节点生成随机签名片段之后,提供给随机数生成节点。其他签名片段生成节点生成随机签名片段的方式相同,各自生成随机签名片段后均分别提供给随机数生成节点。可选的,随机数生成节点可获取每个签名片段生成节点一一对应生成的随机签名片段,进而根据至少两个随机签名片段生成门限签名。
随机数生成节点,可基于多方门限签名算法,将多个随机签名片段进行组装,生成门限签名。本公开实施例对多方门限签名密钥的生成算法,以及多方门限签名算法不进行限制,只要满足多方各自具有本机私钥,且具有统一公钥可验证门限签名即可。
随机数生成节点基于门限签名可生成随机数,门限签名是可以通过多方门限签名密钥中的公钥进行验证的。根据所述门限签名生成随机数的操作可以有多种方式,具体是基于设定生成规则将门限签名转换成为数值,作为随机数,该随机数与门限签名有明确的对应关系,因此,当门限签名可验证是有效的,那么基于门限签名生成的随机数也是确定且有效的,可验证。
设定生成规则可以有多种,例如,计算门限签名的哈希值,将哈希值中的字符按照整数转换规则转换为整数数值,作为随机数。
本公开实施例的技术方案,利用了多方门限签名机制,由多方的签名片段生成节点分别生成随机签名片段,再基于多个随机签名片段生成门限签名,进而产生随机数,从而提供了一种分布式生成随机数的方案,且随机数具有可验证性。因此本公开实施例提供的去中心化随机数生成方案,可靠性高、可信性强。
图3为本公开实施例提供的一种随机数生成方法的流程图,本实施例以前述实施例为基础,进一步提供了确定签名片段生成节点的可选方案。签名片段生成节点可以是多方节点中的设定节点,但优选是从多方节点中动态筛选不同的节点来执行随机签名片段的生成操作,从而使得每次生成随机数的签名片段生成节点为动态变化的,由此增强了随机性。
如图3所示,本实施例的方法包括:
S310、获取初始数;
S320、获取报名条件,其中,所述报名条件为节点筛选成为签名片段生成节点的条件;
报名条件能够用于从具有本机私钥的多方节点中,筛选本轮生成随机数的签名片段生成节点。报名条件的内容不限,可以是节点标识的筛选条件、节点状态的筛选条件、计算规则条件等,只要能够从多方节点中筛选出满足签名门限数量的节点来生成随机签名片段即可。
初始数和报名条件,可以分别获得,也可以一并获得。例如,在第一次启动生成随机数时,可以由管理员账户设置初始数和报名条件,供签名片段生成节点获取。
S330、如果根据本机私钥确定本机节点满足所述报名条件,则根据本机的报名私钥产生报名条件满足证明,所述报名条件满足证明用于通过本机的报名公钥验证是否满足所述报名条件。
可选的,签名片段生成节点能够基于报名条件所对应的报名规则来自行确定自身是否满足报名条件。多方节点中有N个节点,而至少有M个节点参与生成随机签名片段,即可满足门限签名的验证要求。
具体的,根据本机私钥确定本机节点满足所述报名条件的操作可以包括:
根据所述本机私钥和所述初始数,按照设定条件转换规则进行数值转换;
将转换的数值结果与所述报名条件进行数值比较,以确定是否满足所述报名条件。
上述确定是否满足报名条件的过程,结合了本机私钥和初始数,降低了报名条件判断过程作假的可能性。
设定条件转换规则满足数值转换的确定性即可,可以有多种转换方式。例如,根据所述本机私钥和所述初始数,按照设定条件转换规则进行数值转换的操作可以包括:
将所述本机私钥与所述初始数拼接,以得到拼接结果;
计算所述拼接结果的拼接哈希值;
将所述拼接哈希值按照设定数值转换规则,转换为数值结果;
相应的,将转换的数值结果与所述报名条件进行数值比较,以确定是否满足所述报名条件包括:
如果所述数值结果大于或等于所述报名条件的数值,则确定为满足所述报名条件。
上述过程,将本机私钥和初始数的拼接结果计算哈希值,能够转换为设定长度的字符串,再将字符串转换为数值。例如,可以将每一个、两个、三个或四个等字符,按照设定规则转换为一个数值,再将多个字符转换的数值拼接在一起,形成数值结果。本公开实施例对数值转换方式不进行限定。当数值结果大于或等于报名条件的数值时,则表明该节点满足报名条件。报名条件的数值越大,则节点之间竞争成为签名片段生成节点的程度越激烈,反之则激烈程度降低。
例如,初始数,也可称为种子(seed)为1000000,报名条件记为X,可设置X为88888888。各个节点基于本机私钥和初始数,首尾相互拼接,再转换为一个大整数,作为数值结果。如果数值结果大于88888888,则该节点满足报名条件,否则不满足报名条件。
本机节点可以首先根据本机情况来决定是否报名参与随机数生成,例如可根据本机负载情况等进行判断。若决定参与报名,则执行上述确定是否满足报名条件的操作。
S340、将所述报名条件满足证明提供给随机数生成节点,以供所述随机数生成节点从多个提供报名条件满足证明的签名片段生成节点中,按照设定筛选规则筛选出满足所述多方门限签名的签名门限数量要求的节点,作为最终的签名片段生成节点。
当本机节点确定满足报名条件之后,产生报名条件满足证明,以表明本机满足报名条件。该报名条件满足证明,后续可与随机签名片段一并提供给随机数生成节点,或后续的随机数使用方,供对方进行验证,以保证参与随机数生成的节点是满足要求的,而没有作假。
根据本机的报名私钥产生报名条件满足证明具体可以是:
根据本机的报名私钥,基于零知识证明机制,产生所述报名条件满足证明。
零知识证明机制,可基于本机的报名私钥产生,从而可基于报名公钥进行验证。报名私钥和报名公钥是节点所具有的非对称密钥。具体可通过报名公钥、证明体、要证明的内容三部分来验证。采用零知识证明机制,既使得其他节点可以验证该节点是否满足报名条件,又不会获知该节点算出的数值结果具体是多少,满足了可验证和保密性的双重要求。
随机数生成节点可以对报名节点进行筛选,选择确定最终的签名片段生成节点。筛选的方式可以有多种,例如,基于报名条件满足证明的接收时间先后来筛选,基于随机策略筛选等。对于选定的节点,可以产生确认消息进行通知,即执行如下步骤:
S350、接收随机数生成节点反馈的、作为最终的签名片段生成节点的确认消息;
S360、在接收到所述确认消息时,触发产生随机签名片段的操作。
S370、基于本机私钥对所述初始数进行签名,以产生随机签名片段;
当本机节点确认满足报名条件时,可继续执行随机签名片段生成的操作。
S380、将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成;
其中,至少两个所述签名片段生成节点各自具有多方门限签名密钥中的本机私钥,所述多方门限签名密钥中的公钥用于对生成的所述门限签名进行验证。
在上述操作中,可替换的其他实现方式为:随机数生成节点也可以不进行确认消息的通知,可以由确认本机节点满足报名条件的节点直接产生随机签名片段后,提供给随机数生成节点,由随机数生成节点再选择哪些节点作为最终的签名片段生成节点,并留用其产生的随机签名片段。优选是由随机数生成节点先确认具有签名片段生成节点的资格,再获取随机签名片段,从而进一步弱化随机数生成节点在生成随机数之前可控制的数据,来提高生成随机数的安全性。
本实施例的技术方案,通过设置报名机制,使得生成随机数的签名片段生成节点动态变化,增加了随机数生成的随机性,避免了确定的签名片段生成节点串谋作假或收到其他节点的共计,提高了随机数生成的可靠性和可信性。
本公开实施例的技术方案,利用了多方门限签名的私钥和公钥,来参与随机数的生成过程。多方门限签名可以是不分层签名,也可以是分层签名,属于分布式密钥产生技术(Distributed Key Generation,简称DKG)。
对于不分层签名,所述签名片段生成节点为多方节点中的任意一个节点,可以在触发开始生成随机数之前,初始化生成多方门限签名密钥,例如以下述方法生成密钥:
确定本机节点的第一本地秘密;
将第一本地秘密切分为多个秘密碎片,将各所述秘密碎片一一对应的提供给所述多方节点中的每个节点;
获取所述多方节点中其他节点各自切分并传输的秘密碎片,并根据获取的、多方节点各自的秘密碎片生成非对称密钥对的本机私钥,以及根据获取的多方节点各自的秘密碎片生成非对称密钥对的公钥。
对于分层签名,则可以进一步提高随机数生成的安全性。具体是:所述多方门限签名包括至少两层门限签名;所述多方节点中的每个节点所属于一个或多个层级,所述多方节点对应有多个层级,且层级的级别递减,低层级节点中包括相邻的高层级节点;每个节点在所属的每个层级具有一个本机层级私钥,所述多方门限签名的公钥对应于所有层级。
对于多层级的签名门限密钥,每个节点属于至少一个层级,在每个层级中都会产生该层级所对应的本机私钥,记为本机层级私钥。一个节点属于几个层级,就具有几个层级的本机层级私钥。基于所有的本机层级私钥可确定统一的公钥,以使得基于各个层级产生的签名片段,经拼合成为门限签名后可基于公钥进行验证。
相应的,在上述实施例所提供的方法中,基于本机私钥对所述初始数进行签名,以产生随机签名片段可以包括:
基于本机节点所属每个层级的本机层级私钥,分别对所述初始数进行签名,以形成所述每个层级对应的层级随机签名片段,并根据层级随机签名片段生成随机签名片段。
对于分层门限签名,生成密钥的方式也有多种,例如采用下述方式生成密钥:
分别确定本机节点所属每个层级各自的第一本地秘密;
分别将每个层级作为当前层级,将所述当前层级的第一本地秘密按照当前层级中节点的数量切分为秘密碎片,将当前层级的各所述秘密碎片一一对应的传输给当前层级中的每个节点;
获取所述当前层级其他节点各自切分并传输的秘密碎片,并根据获取的当前层级的节点各自的秘密碎片生成对应于当前层级的非对称密钥对的本机层级私钥,以及根据获取的每个层级的节点各自的秘密碎片生成对应于所有层级的非对称密钥对的公钥。
对于分层门限签名的模式,每个层级的报名条件不同,且报名条件的设置使得满足条件的节点数量随层级递减而递增。即,与分层门限的情况类似,层级的级别越低,则归属于该层级的节点数量越多,可参与签名的节点数量也越多,此时可设置报名条件越宽松,即在低层级,能够满足报名条件的节点数量就越多。
例如,初始数为1000000,报名条件为A层级的节点的(本机私钥+初始数)的哈希值,转换为数值后,数值结果大于A层级报名条件88888888。而B层级的节点的(本机私钥+初始数)的哈希值,转换为数值后,数值结果大于B层级报名条件666666。C层级的节点的(本机私钥+初始数)的哈希值,转换为数值后,数值结果大于C层级报名条件777。基于上述报名条件的设置,层级越低,使得该层级中满足报名条件的节点数量越多,即节点范围随层级递减而递增。
在本公开实施例所提供的技术方案中,可选的是,所述签名片段生成节点为区块链节点,则所述随机数生成方法为所述签名片段生成节点调用区块链中部署的随机数生成智能合约来实现。
随机数生成智能合约可供节点调用,来实现计算转换功能和关键信息存证功能。例如,初始数和报名条件,可调用随机数生成智能合约发布在区块链中,供节点查询获取。门限签名密钥中的公钥可以调用智能合约发布在区块链中以供查询。
签名片段生成节点在判断自身满足报名条件时,可以产生报名条件满足证明,例如零知识证明。进而,可以将申请成为签名片段生成节点的报名申请,与零知识证明组装成为事务请求,广播发布到区块链网络中。
图4为本公开实施例提供的一种随机数生成方法的流程图。本实施例具体由随机数生成节点来执行,可以与前述签名片段生成节点所执行的随机数生成方法相互配合。如图4所示,该方法包括:
S410、获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用本公开任意实施例所提供的签名片段生成节点所执行的随机数生成方法生成的;
S420、根据至少两个随机签名片段生成门限签名;
可基于任意门限签名算法进行门限签名的生成操作,例如可以是:
签名片段生成节点采用本机节点每个层级的私钥对初始数分别进行签名,以产生层级密钥参数碎片,将层级密钥参数碎片进行累加以生成密钥参数碎片,将所述密钥参数碎片传输给所述多方节点中的其他节点;
随机数生成节点获取根据各节点的密钥参数碎片生成的密钥参数;
随机数生成节点根据所述密钥参数封装形成所述初始数的门限签名。
S430、根据所述门限签名生成所述随机数。
基于门限签名,可采用任意确定的转换规则来转换生成随机数,可选的包括:
计算所述门限签名的门限哈希值,将所述门限哈希值按照设定数值转换规则,转换为数值结果,作为所述随机数。
上述设定数值转换规则,与拼接结果转换时所使用的设定数值转换规则可以相同或不同。
在本实施例中,本机私钥为多方门限签名密钥中的私钥,则可以在根据所述门限签名生成所述随机数之前,还包括:
采用所述多方门限签名的公钥对所述门限签名进行验证;
如果验证通过,则触发生成所述随机数的操作。
上述操作,由随机数生成节点在产生随机数前,先对门限签名进行验证,以避免作假产生的无效门限签名。
本实施例的技术方案,能够利用多方门限签名机制,以门限签名私钥来生成随机签名片段,而后组装形成门限签名,再根据门限签名生成随机数,由此提供了一种去中心化的随机数生成机制,该随机数所基于的门限签名可供基于公钥来进行验证。提高了随机数生成的可靠性和可信性。
在本公开实施例的基础上,还可以包括:
[01]接收至少两个节点提供的报名条件满足证明;
[02]从具有有效的报名条件满足证明的节点中筛选确定最终的签名片段生成节点;
[03]向最终的签名片段生成节点反馈确认消息。
[04]上述操作中,随机数生成节点可以对至少两个节点提供的报名条件满足证明进行验证,以确定其有效性,即是否满足报名条件。若满足,则可基于筛选机制确定最终的签名片段生成节点,并向其反馈确认消息。签名片段生成节点的数量可以是门限签名中满足要求的最少节点数量,满足该数量,即满足了门限签名的要求。例如,要求A层级至少5个节点参与,B层级至少10个节点参与,C层级至少20个节点参与,通过在生成门限签名密钥时设置门限要求,相当于设置了随机数生成的计算要求。
通过上述机制,一方面可以通过初始数来引入随机数生成的随机性,另一方面,也可以通过签名片段生成节点的动态变化来引入随机数生成的随机性,双重提供了随机数生成的可靠性。
下面具体介绍生成随机数的触发机制。
在本公开实施例所适用的技术方案中,随机数的生成过程,可以是在有业务需要使用随机数时触发产生随机数;也可以是预先产生多个随机数,存储备用。
对于按需触发产生随机数的情况,具体可以是本机私钥为多方门限签名密钥中的私钥,则获取至少两个签名片段生成节点各自生成并提供的随机签名片段之前,该方法还包括:
获取随机数使用业务,通知至少两个节点,以触发生成所述随机签名片段;
相应的,根据所述门限签名生成所述随机数之后,还包括:
基于生成的所述随机数响应所述随机数使用业务。
上述方案中,随机数使用业务,可以是任意需要使用随机数的业务,例如抽奖业务、筛选业务等。在生成随机数后,将随机数反馈给发起随机数使用业务的发起方,供其使用。随机数使用业务的发起方,可以根据多方门限签名密钥中的公钥对随机数对应的门限签名进行验证,还可以进一步基于报名的签名片段生成节点的报名条件满足证明来验证各个节点是否有效。类似的,对于随机数使用业务其他的关联方,也可以采用类似方式进行随机数的验证。
为了保证能够及时为随机数使用业务提供随机数,而不用等待生成过程,还可以预先生成多个随机数,存储备用。
图5为本公开实施例提供的一种随机数生成方法的流程图,本实施例以前述实施例为基础,提供了按照随机数生成机制,连续生成多个随机数备用的方式。该方法包括:
S510、按照设定随机数生成机制,通知至少两个节点,以触发当前轮随机数的生成操作;
设定随机数生成机制,即可以在有或没有随机数使用需求时,即触发生成随机数的机制。机制的具体触发条件不限,例如,可以在首次获取到随机数使用需求时触发,而后连续生成多个随机数;可以按设定周期触发生成随机数;可以在备用的随机数已经用完时触发生成新随机数等。
随机数生成节点,可以通知至少两个节点,以触发当前轮随机数的生成操作。可选的是,可广播通知所有多方节点或设定数量的节点,以触发随机数生成操作。
S520、获取至少两个签名片段生成节点各自生成并提供的随机签名片段;
S530、根据至少两个随机签名片段生成门限签名;
S540、根据所述门限签名生成所述随机数;
S550、将生成的所述随机数作为当前轮的随机数,与所述随机数的验证信息一并进行存储,以形成随机数序列,并触发下一轮随机数的生成操作;
其中,所述验证信息包括生成所述随机数的签名片段生成节点的报名条件满足证明、报名公钥和所述多方门限签名的公钥。
上述操作可完成一轮随机数的生成,而后立即触发下一轮随机数生成,优选的是,前一轮生成的随机数可作为下一轮的初始数,由此进一步加强随机性。也使得多个节点能直接获知统一的初始数,避免由中心化机制来生成初始数再通知各个节点。
可以将多轮生成的随机数存储为一个队列,与随机数一并存储的还可以包括验证信息,验证信息可以包括生成所述随机数的签名片段生成节点的报名条件满足证明、报名公钥和所述多方门限签名的公钥,使得随机数的使用方或其他关联方能获知验证信息,以便进行随机数验证。
未使用的随机数不会进行公开,可以由随机数生成节点统一存储在本地或其他第三方位置以供调用。在区块链系统中适用上述随机数生成方法时,可以由当前区块生成周期的区块生成节点作为随机数生成节点,可以另行设置一协调节点,专用于存储随机数队列。在区块生成节点生成随机数时,提供给协调节点存储。随机数的整个生成过程,可以发生在一个区块生成周期内,也可以发生在多个区块生成周期内,区块生成节点可以相同或不同。各个区块生成节点生成的随机数都可以提供给协调节点存储。协调节点的存在,可以提升随机数获取性能。协调节点可以不停的触发产生随机数并按序存储。
在上述技术方案的基础上,产生了随机数队列之后,进一步可以包括:
获取随机数使用业务;
从存储的所述随机数序列中提取随机数,以响应所述随机数使用业务;
将提取的所述随机数在所述随机数序列中标记为已使用。
可选的是,从存储的所述随机数序列中提取随机数可以包括:
从存储的所述随机数序列中提取未使用的随机数;或
从存储的所述随机数序列中按照随机策略提取随机数。
在上述方案中,当有业务方或区块链的智能合约需要使用随机数时,可以将历史上最先生成且未被使用的随机数提取出来使用。随机数的使用方可以通过报名条件使用证明来核实签名片段生成节点的有效性,以及进一步可以判断该随机数是否是基于上一个已公布随机数来去中心化产生的。如果是,则可以验证随机数有效。
可选的,可以选择阻塞式或非阻塞式的获取下一个随机数。如果是阻塞式,当协调节点存储的未使用随机数被用光的情况下,直到下一个随机数被产生,才会返回给随机数使用方。如果是非阻塞式,协调节点会复用已使用过的随机数,根据随机策略从已使用随机数中挑选一个返回给随机数使用方。
在本公开实施例提供的随机数生成节点执行的随机数使用方法中,所述随机数生成节点可以为区块链节点,则所述随机数生成方法为所述随机数生成节点调用区块链中部署的随机数生成智能合约来实现;应用所述随机数的随机数使用业务可以为区块链业务事务请求。
随机数生成智能合约可以根据需求实现随机数生成过程中的至少一种功能,例如,对于筛选确定的最终签名片段生成节点,可以将这些节点标识调用智能合约发布在区块中,则最终签名片段生成节点通过在区块中查询来获取确认消息,获知自身报名成功。
本公开实施例的技术方案,更为适用于区块链系统的去中心化模式,随机数生成智能合约相当于一个部署于区块链系统的信标(beacon)服务,能够用于提供随机数生成服务。下面通过实施例具体介绍基于区块链实现的随机数生成方法,如图6A所示,该方法包括如下:
S601、系统初始化,设置初始数(seed)和报名条件,并将初始数和报名条件发布到区块链网络的智能合约上。
在区块链系统中,可以是随机数信标服务启动时进行初始化,信标服务可以人为启动或在满足一定条件时启动,例如首次产生随机数使用需求时启动。初始数和报名条件,可以写入当前区块中,或写入创建区块链时的第零个区块中。将初始数和报名条件发布到智能合约,即发布到区块链上智能合约的数据中,从而实现上链存储。
S602、分层门限签名(DKG)初始化,以产生分层的多方门限签名密钥,DKG初始化完成后,将公钥发布到区块链网络的智能合约上。
多方门限签名密钥的生成时间,与随机数生成的初始化时间,其先后顺序不限。可以每次生成随机数均使用新的多方门限签名密钥,可以是基于一套多方门限签名密钥连续产生多个随机数。在有节点加入或退出时,可重新生成多方门限签名密钥。
S603、多方节点中各个层级的节点,分别查询智能合约,获取初始数和报名条件;
S604、各节点根据本机私钥和初始数的拼接结果计算拼接哈希值,并将所述拼接哈希值转换为数值结果;
节点可根据自身情况选择是否报名参与,如果要参与,再计算数值结果。如图6B所示,例如有层级A、层级B、层级C的节点集合来参与报名。
S605、如果数值结果大于所述报名条件,则计算零知识证明,并将报名申请和零知识证明调用智能合约组装为事务请求,广播到区块链网络中,以提供给随机数生成节点;
S606、随机数生成节点获取并收集所有层级的节点的报名申请,并调用智能合约进行处理,以按照智能合约中的规则筛选确定各个层级最终的签名片段生成节点,并广播至区块链网络中。
如图6B所示,在层级A中选出先报名的M1个节点,在层级B中选出先报名的M2个节点,在层级C中选出先报名的M3个节点,
随机数生成节点可调用智能合约,通过报名者的公钥、初始数来验证报名者的零知识证明是否符合报名条件。如果通过,那么根据每个层级的门限要求,收集前M1、M2和M3个报名者的信息,并将报名者的信息广播到区块链网络。
S607、报名的节点查询区块中的报名者信息,如果根据查询到的报名者信息确定本机节点报名成功,则根据本机私钥和初始数计算随机签名片段,广播到区块链网络。
对于多层级来说,每个节点分别计算随机层级签名片段,再进行聚合。
S608、随机数生成节点获取所有层级的随机签名片段,组装为分层门限签名,并调用智能合约进行分层门限签名有效性的验证。
具体的,智能合约可通过分层多方门限签名的公钥来核实分层门限签名的有效性,同时可核实随机签名片段的生成节点是否均为之前报名成功的节点。
S609、如果验证通过,将该分层门限签名转换为门限哈希值,再将所述门限哈希值转为数值,作为随机数;
S610、将生成的随机数供存储,或提供给其他业务方或智能合约进行使用。
随机数可以提供给协调节点存储,不对外公布。在业务方或智能合约使用随机数时,相当于将随机数公开,具体可以是调用智能合约来使用随机数,则该随机数可发布于区块中。
S611、将该随机数成为下一轮的初始数,并触发下一轮随机数的生成。
当其他业务方或智能合约需要生成并使用下一个随机数时,会重新执行以上流程。
在下一轮随机数生成过程中,由于初始数的变化,则可能会重新筛选确定新的签名片段生成节点,如图6C所示。对于每一轮的随机数来说,其是基于前一轮随机数、签名片段生成节点的集合、分层多方门限签名密钥和签名算法(DSG)、零知识证明、以及分层门限签名来确定的,具有去中心化、随机性、可验证的多重优势。
通过这种方案,在区块链网络上维护了一个可以产生去中心化随机数的信标服务。
基于上述实施例的技术方案可知,通过设置随机数生成的智能合约,可以形成随机数生成的信标服务。调用该随机数生成智能合约,可以用于实现下述至少一项功能:
判断本机节点是否满足报名条件;
在满足报名条件时产生报名条件满足证明;
向区块链发布报名条件满足证明;
向区块链发布筛选成为签名片段生成节点的节点集合信息;
从区块链查询获知筛选成为签名片段生成节点的确认消息;
对门限签名进行验证;
对报名条件满足证明进行验证;
基于门限签名转换为随机数;
向随机数使用方返回随机数;
对随机数的门限签名进行验证;。
图7为本公开实施例提供的一种随机数生成装置的结构示意图,配置于签名片段生成节点,所述装置包括:
初始数获取模块710,用于获取初始数;
随机签名片段产生模块720,用于基于本机私钥对所述初始数进行签名,以产生随机签名片段;
随机签名片段传输模块730,用于将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成。
可选的,至少两个所述签名片段生成节点各自具有多方门限签名密钥中的本机私钥,所述多方门限签名密钥中的公钥用于对生成的所述门限签名进行验证。
可选的,初始数获取模块710,具体用于:
获取上一轮生成的随机数,作为当前轮的初始数;或
获取中心化生成的初始数。
可选的,装置还包括:
报名条件获取模块,用于获取报名条件,其中,所述报名条件为节点筛选成为签名片段生成节点的条件;
报名条件满足证明产生模块,用于如果根据本机私钥确定本机节点满足所述报名条件,则根据本机的报名私钥产生报名条件满足证明,所述报名条件满足证明用于通过本机的报名公钥验证是否满足所述报名条件。
可选的,报名条件满足证明产生模块,包括:
数值转换单元,用于根据所述本机私钥和所述初始数,按照设定条件转换规则进行数值转换;
数值比较单元,用于将转换的数值结果与所述报名条件进行数值比较,以确定是否满足所述报名条件。
可选的,数值转换单元,包括:
拼接结果得到子单元,用于将所述本机私钥与所述初始数拼接,以得到拼接结果;
拼接哈希值计算子单元,用于计算所述拼接结果的拼接哈希值;
数值结果转换子单元,用于将所述拼接哈希值按照设定数值转换规则,转换为数值结果;
相应的,数值比较单元,具体用于:
如果所述数值结果大于或等于所述报名条件的数值,则确定为满足所述报名条件。
可选的,报名条件满足证明产生模块,具体用于:
根据本机的报名私钥,基于零知识证明机制,产生所述报名条件满足证明。
可选的,装置还包括:
报名条件满足证明提供模块,用于将所述报名条件满足证明提供给随机数生成节点,以供所述随机数生成节点从多个提供报名条件满足证明的签名片段生成节点中,按照设定筛选规则筛选出满足所述多方门限签名的签名门限数量要求的节点,作为最终的签名片段生成节点。
可选的,装置还包括:
确认消息接收模块,用于接收随机数生成节点反馈的、作为最终的签名片段生成节点的确认消息;
随机签名片段触发产生模块,用于在接收到所述确认消息时,触发产生随机签名片段的操作。
可选的,其中,所述多方门限签名包括至少两层门限签名;所述多方节点中的每个节点所属于一个或多个层级,所述多方节点对应有多个层级,且层级的级别递减,低层级节点中包括相邻的高层级节点;每个节点在所属的每个层级具有一个本机层级私钥,所述多方门限签名的公钥对应于所有层级;
相应的,随机签名片段产生模块720,具体用于:
基于本机节点所属每个层级的本机层级私钥,分别对所述初始数进行签名,以形成所述每个层级对应的层级随机签名片段,并根据层级随机签名片段生成随机签名片段。
可选的,其中,所述签名片段生成节点为多方节点中的任意一个节点,所述装置还包括:
本机节点第一本地秘密确定模块,用于确定本机节点的第一本地秘密;
节点秘密碎片提供模块,用于将第一本地秘密切分为多个秘密碎片,将各所述秘密碎片一一对应的提供给所述多方节点中的每个节点;
本机私钥生成模块,用于获取所述多方节点中其他节点各自切分并传输的秘密碎片,并根据获取的、多方节点各自的秘密碎片生成非对称密钥对的本机私钥,以及根据获取的多方节点各自的秘密碎片生成非对称密钥对的公钥。
可选的,所述装置还包括:
层级第一本地秘密确定模块,用于分别确定本机节点所属每个层级各自的第一本地秘密;
当前层级秘密碎片传输模块,用于分别将每个层级作为当前层级,将所述当前层级的第一本地秘密按照当前层级中节点的数量切分为秘密碎片,将当前层级的各所述秘密碎片一一对应的传输给当前层级中的每个节点;
本机层级私钥生成模块,用于获取所述当前层级其他节点各自切分并传输的秘密碎片,并根据获取的当前层级的节点各自的秘密碎片生成对应于当前层级的非对称密钥对的本机层级私钥,以及根据获取的每个层级的节点各自的秘密碎片生成对应于所有层级的非对称密钥对的公钥。
可选的,每个层级的报名条件不同,且报名条件的设置使得满足条件的节点数量随层级递减而递增。
可选的,所述签名片段生成节点为区块链节点,则所述随机数生成方法为所述签名片段生成节点调用区块链中部署的随机数生成智能合约来实现。
本公开实施例所提供的可配置于签名片段生成节点的随机数生成装置,可执行本公开任意实施例所提供的由签名片段生成节点执行的随机数生成方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
图8为本公开实施例提供的一种随机数生成装置的结构示意图,配置于随机数生成节点,所述装置包括:
随机签名片段获取模块810,用于获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用本公开任意实施例所提供的随机数生成方法生成的;
门限签名生成模块820,用于根据至少两个随机签名片段生成门限签名;
随机数生成模块830,用于根据所述门限签名生成所述随机数。
可选的,装置还包括:
门限签名验证模块,用于采用所述多方门限签名的公钥对所述门限签名进行验证;
验证通过模块,用于如果验证通过,则触发生成所述随机数的操作。
可选的,装置还包括:
随机数使用业务获取模块,用于获取随机数使用业务,通知至少两个节点,以触发生成所述随机签名片段;
相应的,装置还包括:
随机数响应模块,用于基于生成的所述随机数响应所述随机数使用业务。
可选的,装置还包括:
节点通知模块,用于按照设定随机数生成机制,通知至少两个节点,以触发当前轮随机数的生成操作;
相应的,装置还包括:
随机数序列形成模块,用于将生成的所述随机数作为当前轮的随机数,与所述随机数的验证信息一并进行存储,以形成随机数序列,并触发下一轮随机数的生成操作;其中,所述验证信息包括生成所述随机数的签名片段生成节点的报名条件满足证明、报名公钥和所述多方门限签名的公钥。
可选的,装置还包括:
随机数使用业务获取模块,用于获取随机数使用业务;
随机数提取模块,用于从存储的所述随机数序列中提取随机数,以响应所述随机数使用业务;
随机数标记模块,用于将提取的所述随机数在所述随机数序列中标记为已使用。
可选的,随机数提取模块,具体用于:
从存储的所述随机数序列中提取未使用的随机数;或
从存储的所述随机数序列中按照随机策略提取随机数。
可选的,随机数生成模块830,具体用于:
计算所述门限签名的门限哈希值,将所述门限哈希值按照设定数值转换规则,转换为数值结果,作为所述随机数。
可选的,装置还包括:
报名条件满足证明接收模块,用于接收至少两个节点提供的报名条件满足证明;
最终的签名片段生成节点确定模块,用于从具有有效的报名条件满足证明的节点中筛选确定最终的签名片段生成节点;
节点反馈确认消息生成模块,用于向最终的签名片段生成节点反馈确认消息。
可选的,所述随机数生成节点为区块链节点,则所述随机数生成方法为所述随机数生成节点调用区块链中部署的随机数生成智能合约来实现;
应用所述随机数的随机数使用业务为区块链业务事务请求。
本公开实施例所提供的可配置于随机数生成节点的随机数生成装置,可执行本公开任意实施例所提供的由随机数生成节点执行的随机数生成方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如一种随机数生成方法。例如,在一些实施例中,一种随机数生成方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的一种随机数生成方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行随机数生成方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (24)
1.一种随机数生成方法,由签名片段生成节点执行,所述方法包括:
获取初始数;
获取报名条件,其中,所述报名条件为节点筛选成为签名片段生成节点的条件;
如果根据本机私钥确定本机节点满足所述报名条件,则根据本机的报名私钥产生报名条件满足证明,所述报名条件满足证明用于通过本机的报名公钥验证是否满足所述报名条件;
基于本机私钥对所述初始数进行签名,以产生随机签名片段;
将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成;
其中,至少两个所述签名片段生成节点各自具有多方门限签名密钥中的本机私钥,所述多方门限签名密钥中的公钥用于对生成的所述门限签名进行验证。
2.根据权利要求1所述的方法,其中,获取初始数包括:
获取上一轮生成的随机数,作为当前轮的初始数;或
获取中心化生成的初始数。
3.根据权利要求1所述的方法,其中,根据本机私钥确定本机节点满足所述报名条件包括:
根据所述本机私钥和所述初始数,按照设定条件转换规则进行数值转换;
将转换的数值结果与所述报名条件进行数值比较,以确定是否满足所述报名条件。
4.根据权利要求3所述的方法,其中,根据所述本机私钥和所述初始数,按照设定条件转换规则进行数值转换包括:
将所述本机私钥与所述初始数拼接,以得到拼接结果;
计算所述拼接结果的拼接哈希值;
将所述拼接哈希值按照设定数值转换规则,转换为数值结果;
相应的,将转换的数值结果与所述报名条件进行数值比较,以确定是否满足所述报名条件包括:
如果所述数值结果大于或等于所述报名条件的数值,则确定为满足所述报名条件。
5.根据权利要求1所述的方法,其中,根据本机的报名私钥产生报名条件满足证明包括:
根据本机的报名私钥,基于零知识证明机制,产生所述报名条件满足证明。
6.根据权利要求1所述的方法,根据本机的报名私钥产生报名条件满足证明之后,还包括:
将所述报名条件满足证明提供给随机数生成节点,以供所述随机数生成节点从多个提供报名条件满足证明的签名片段生成节点中,按照设定筛选规则筛选出满足所述多方门限签名的签名门限数量要求的节点,作为最终的签名片段生成节点。
7.根据权利要求6所述的方法,将所述报名条件满足证明提供给随机数生成节点之后,还包括:
接收随机数生成节点反馈的、作为最终的签名片段生成节点的确认消息;
在接收到所述确认消息时,触发产生随机签名片段的操作。
8.根据权利要求1所述的方法,其中,所述多方门限签名包括至少两层门限签名;多方节点中的每个节点所属于一个或多个层级,所述多方节点对应有多个层级,且层级的级别递减,低层级节点中包括相邻的高层级节点;每个节点在所属的每个层级具有一个本机层级私钥,所述多方门限签名的公钥对应于所有层级;
相应的,基于本机私钥对所述初始数进行签名,以产生随机签名片段包括:
基于本机节点所属每个层级的本机层级私钥,分别对所述初始数进行签名,以形成所述每个层级对应的层级随机签名片段,并根据层级随机签名片段生成随机签名片段。
9.根据权利要求1所述的方法,其中,所述签名片段生成节点为多方节点中的任意一个节点,所述方法还包括:
确定本机节点的第一本地秘密;
将第一本地秘密切分为多个秘密碎片,将各所述秘密碎片一一对应的提供给所述多方节点中的每个节点;
获取所述多方节点中其他节点各自切分并传输的秘密碎片,并根据获取的、多方节点各自的秘密碎片生成非对称密钥对的本机私钥,以及根据获取的多方节点各自的秘密碎片生成非对称密钥对的公钥。
10.根据权利要求8所述的方法,其中,所述方法还包括:
分别确定本机节点所属每个层级各自的第一本地秘密;
分别将每个层级作为当前层级,将所述当前层级的第一本地秘密按照当前层级中节点的数量切分为秘密碎片,将当前层级的各所述秘密碎片一一对应的传输给当前层级中的每个节点;
获取所述当前层级其他节点各自切分并传输的秘密碎片,并根据获取的当前层级的节点各自的秘密碎片生成对应于当前层级的非对称密钥对的本机层级私钥,以及根据获取的每个层级的节点各自的秘密碎片生成对应于所有层级的非对称密钥对的公钥。
11.根据权利要求8所述的方法,其中,每个层级的报名条件不同,且报名条件的设置使得满足条件的节点数量随层级递减而递增。
12.根据权利要求1所述的方法,其中,所述签名片段生成节点为区块链节点,则所述随机数生成方法为所述签名片段生成节点调用区块链中部署的随机数生成智能合约来实现。
13.一种随机数生成方法,由随机数生成节点执行,所述方法包括:
接收至少两个节点提供的报名条件满足证明;
从具有有效的报名条件满足证明的节点中筛选确定最终的签名片段生成节点;
向最终的签名片段生成节点反馈确认消息;
获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用权利要求1-12任一所述的随机数生成方法生成的;
根据至少两个随机签名片段生成门限签名;
根据所述门限签名生成所述随机数。
14.根据权利要求13所述的方法,本机私钥为多方门限签名密钥中的私钥,则根据所述门限签名生成所述随机数之前,还包括:
采用所述多方门限签名的公钥对所述门限签名进行验证;
如果验证通过,则触发生成所述随机数的操作。
15.根据权利要求13所述的方法,获取至少两个签名片段生成节点各自生成并提供的随机签名片段之前,还包括:
获取随机数使用业务,通知至少两个节点,以触发生成所述随机签名片段;
相应的,根据所述门限签名生成所述随机数之后,还包括:
基于生成的所述随机数响应所述随机数使用业务。
16.根据权利要求13所述的方法,本机私钥为多方门限签名密钥中的私钥,则获取至少两个签名片段生成节点各自生成并提供的随机签名片段之前,还包括:
按照设定随机数生成机制,通知至少两个节点,以触发当前轮随机数的生成操作;
相应的,根据所述门限签名生成所述随机数之后,还包括:
将生成的所述随机数作为当前轮的随机数,与所述随机数的验证信息一并进行存储,以形成随机数序列,并触发下一轮随机数的生成操作;其中,所述验证信息包括生成所述随机数的签名片段生成节点的报名条件满足证明、报名公钥和所述多方门限签名的公钥。
17.根据权利要求16所述的方法,还包括:
获取随机数使用业务;
从存储的所述随机数序列中提取随机数,以响应所述随机数使用业务;
将提取的所述随机数在所述随机数序列中标记为已使用。
18.根据权利要求17所述的方法,其中,从存储的所述随机数序列中提取随机数包括:
从存储的所述随机数序列中提取未使用的随机数;或
从存储的所述随机数序列中按照随机策略提取随机数。
19.根据权利要求13-18任一所述的方法,其中,根据所述门限签名生成所述随机数包括:
计算所述门限签名的门限哈希值,将所述门限哈希值按照设定数值转换规则,转换为数值结果,作为所述随机数。
20.根据权利要求13-18任一所述的方法,其中,所述随机数生成节点为区块链节点,则所述随机数生成方法为所述随机数生成节点调用区块链中部署的随机数生成智能合约来实现;
应用所述随机数的随机数使用业务为区块链业务事务请求。
21.一种随机数生成装置,配置于签名片段生成节点,所述装置包括:
初始数获取模块,用于获取初始数;
报名条件获取模块,用于获取报名条件,其中,所述报名条件为节点筛选成为签名片段生成节点的条件;
报名条件满足证明产生模块,用于如果根据本机私钥确定本机节点满足所述报名条件,则根据本机的报名私钥产生报名条件满足证明,所述报名条件满足证明用于通过本机的报名公钥验证是否满足所述报名条件;
随机签名片段产生模块,用于基于本机私钥对所述初始数进行签名,以产生随机签名片段;
随机签名片段传输模块,用于将所述随机签名片段传输给随机数生成节点,以供所述随机数生成节点根据至少两个随机签名片段生成门限签名,并根据所述门限签名生成随机数;其中,各所述随机签名片段分别由各所述签名片段生成节点生成;
其中,至少两个所述签名片段生成节点各自具有多方门限签名密钥中的本机私钥,所述多方门限签名密钥中的公钥用于对生成的所述门限签名进行验证。
22.一种随机数生成装置,配置于随机数生成节点,所述装置包括:
报名条件满足证明接收模块,用于接收至少两个节点提供的报名条件满足证明;
最终的签名片段生成节点确定模块,用于从具有有效的报名条件满足证明的节点中筛选确定最终的签名片段生成节点;
节点反馈确认消息生成模块,用于向最终的签名片段生成节点反馈确认消息;
随机签名片段获取模块,用于获取至少两个签名片段生成节点各自生成并提供的随机签名片段;其中,所述随机签名片段为签名片段生成节点采用权利要求1-12任一所述的随机数生成方法生成的;
门限签名生成模块,用于根据至少两个随机签名片段生成门限签名;
随机数生成模块,用于根据所述门限签名生成所述随机数。
23.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行时实现权利要求1-12中任一项所述的随机数生成方法,或者执行时实现权利要求13-20中任一项所述的随机数生成方法。
24.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行时实现如权利要求1-12中任一项所述的随机数生成方法,或者实现权利要求13-20中任一项所述的随机数生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110398821.5A CN112799636B (zh) | 2021-04-14 | 2021-04-14 | 随机数生成方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110398821.5A CN112799636B (zh) | 2021-04-14 | 2021-04-14 | 随机数生成方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112799636A CN112799636A (zh) | 2021-05-14 |
CN112799636B true CN112799636B (zh) | 2021-08-27 |
Family
ID=75811323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110398821.5A Active CN112799636B (zh) | 2021-04-14 | 2021-04-14 | 随机数生成方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799636B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11250430B2 (en) | 2018-06-29 | 2022-02-15 | Paypal, Inc. | Systems and methods for automated transaction management |
US11625723B2 (en) | 2020-05-28 | 2023-04-11 | Paypal, Inc. | Risk assessment through device data using machine learning-based network |
CN113037489B (zh) * | 2021-05-25 | 2021-08-27 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备和存储介质 |
CN113489584B (zh) * | 2021-07-02 | 2024-04-05 | 北京泛融科技有限公司 | 一种区块链中随机数的处理方法、装置和电子设备 |
CN114205087B (zh) * | 2021-08-30 | 2023-12-15 | 深圳时空云科技有限公司 | 一种基于区块链随机数产生的方法 |
US20230133349A1 (en) * | 2021-11-03 | 2023-05-04 | Paypal, Inc. | Latency and Computational Performance On A Blockchain |
CN114173326B (zh) * | 2021-12-02 | 2024-01-09 | 中国工商银行股份有限公司 | 区块链无线对等网络的数据处理方法、装置、设备和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109104286A (zh) * | 2018-07-26 | 2018-12-28 | 杭州安恒信息技术股份有限公司 | 一种基于门限数字签名的共识的新区块生成方法 |
CN111339569A (zh) * | 2020-02-26 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 区块链数据处理方法、装置、电子设备和介质 |
CN112631550A (zh) * | 2020-12-21 | 2021-04-09 | 深圳前海微众银行股份有限公司 | 区块链随机数生成方法、装置、设备及计算机存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110574059A (zh) * | 2017-04-11 | 2019-12-13 | 区块链控股有限公司 | 关于区块链的快速分布式共识 |
GB201707168D0 (en) * | 2017-05-05 | 2017-06-21 | Nchain Holdings Ltd | Computer-implemented system and method |
US10320569B1 (en) * | 2018-04-05 | 2019-06-11 | HOTYB, Inc. | Systems and methods for authenticating a digitally signed assertion using verified evaluators |
CN109905247B (zh) * | 2019-03-28 | 2022-03-15 | 郑州师范学院 | 基于区块链的数字签名方法、装置、设备及存储介质 |
CN110198213B (zh) * | 2019-04-01 | 2020-07-03 | 上海能链众合科技有限公司 | 一种基于秘密共享随机数共识算法的系统 |
CN110213059B (zh) * | 2019-06-20 | 2021-07-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
CN110825349B (zh) * | 2019-11-14 | 2023-03-28 | 深圳市迅雷网络技术有限公司 | 随机数生成方法、区块链节点、系统及介质 |
CN111669277B (zh) * | 2020-06-04 | 2023-04-18 | 新晨科技股份有限公司 | 一种区块链上基于vrf和实用拜占庭算法的共识方法 |
CN111934890B (zh) * | 2020-10-13 | 2021-01-26 | 百度在线网络技术(北京)有限公司 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
CN111934889B (zh) * | 2020-10-13 | 2021-02-26 | 百度在线网络技术(北京)有限公司 | 密钥生成方法、签名和验签方法、装置、设备和介质 |
CN112636929B (zh) * | 2020-12-29 | 2023-01-17 | 北京百度网讯科技有限公司 | 群组业务实现方法、装置、设备和存储介质 |
-
2021
- 2021-04-14 CN CN202110398821.5A patent/CN112799636B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109104286A (zh) * | 2018-07-26 | 2018-12-28 | 杭州安恒信息技术股份有限公司 | 一种基于门限数字签名的共识的新区块生成方法 |
CN111339569A (zh) * | 2020-02-26 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 区块链数据处理方法、装置、电子设备和介质 |
CN112631550A (zh) * | 2020-12-21 | 2021-04-09 | 深圳前海微众银行股份有限公司 | 区块链随机数生成方法、装置、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112799636A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799636B (zh) | 随机数生成方法、装置、设备和存储介质 | |
US20220051240A1 (en) | Transferring cryptocurrency from a remote limited access wallet | |
CN106470184B (zh) | 安全认证方法、装置及系统 | |
CN111934889B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN112636929B (zh) | 群组业务实现方法、装置、设备和存储介质 | |
CN111563743B (zh) | 一种区块链的转账处理方法、装置、设备和介质 | |
CN107908979B (zh) | 用于在区块链中进行配置和背书的方法和电子设备 | |
CN111934890B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN112995357B (zh) | 基于云托管服务的域名管理方法、装置、介质及电子设备 | |
CN104079413A (zh) | 增强型一次性动态口令的认证方法及系统 | |
CN113242305B (zh) | 跨链事务处理方法、装置、计算机设备及介质 | |
CN112764887A (zh) | 事务请求的构建方法、处理方法、装置、设备和存储介质 | |
CN111339141A (zh) | 一种数据传输的方法、区块链节点设备以及介质 | |
US20230195940A1 (en) | Blockchain-based data processing method and apparatus, device, and storage medium | |
CN114513350A (zh) | 身份校验方法、系统和存储介质 | |
CN111343177B (zh) | 轻量级节点的监管方法、装置、设备和介质 | |
WO2024055740A1 (zh) | 数据处理方法、计算机设备和可读存储介质 | |
US20210044971A1 (en) | Security Credentials Recovery in Bluetooth Mesh Network | |
CN115481440B (zh) | 数据处理方法、装置、电子设备和介质 | |
CN114362969B (zh) | 一种基于区块链的数据验证方法、装置、设备及存储介质 | |
CN113935069B (zh) | 一种基于区块链的数据验证方法、装置、设备及存储介质 | |
CN114553548A (zh) | 通信方法、装置、设备及存储介质 | |
CN111737363A (zh) | 区块链运行方法、装置、设备及存储介质 | |
CN116545765B (zh) | 区块链网络的节点共识方法、装置、设备和介质 | |
CN107924593B (zh) | 一种生成中奖数字的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |