CN109471610B - 一种串行随机数生成方法、装置和存储介质 - Google Patents
一种串行随机数生成方法、装置和存储介质 Download PDFInfo
- Publication number
- CN109471610B CN109471610B CN201811250983.9A CN201811250983A CN109471610B CN 109471610 B CN109471610 B CN 109471610B CN 201811250983 A CN201811250983 A CN 201811250983A CN 109471610 B CN109471610 B CN 109471610B
- Authority
- CN
- China
- Prior art keywords
- random number
- node
- deterministic function
- private key
- generating
- 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
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
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了一种串行随机数生成方法、装置和存储介质,涉及计算机领域,能够保证生成的随机数具有随机性。所述随机数生成方法包括:目标节点获取第一随机数和针对所述目标节点的第一私钥;所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;所述目标节点广播所述第二随机数。本申请用于随机数生成。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种串行随机数生成方法、装置和存储介质。
背景技术
随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,在将实验动物分配到不同的试验组的过程中等等。随机数最重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。
产生随机数有多种不同的方法。相关技术生成的随机数容易被某个恶意的幕后对手控制,因而无法保证随机性。这样,对随机数的使用者非常不利,例如随机数使用者的利益会因为被控制的随机数而受到损害。
发明内容
本申请实施例提供一种串行随机数生成方法、装置和存储介质,能够保证生成的随机数具有随机性。
第一方面,提供一种串行随机数生成方法,应用于目标节点,所述随机数生成方法可包括:
目标节点获取第一随机数和针对所述目标节点的第一私钥;
所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;
所述目标节点广播所述第二随机数。
可选地,在本申请的一个实施例中,在所述目标节点生成第二随机数之后,所述随机数生成方法还包括:
所述目标节点基于所述第二随机数和预设规则,生成第一动作;
所述目标节点获取第一状态;
所述目标节点将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态;
在所述第二状态指示未结束时,广播所述第一动作;
相应地,所述目标节点广播所述第二随机数包括:在所述第二状态指示未结束时,广播所述第二随机数。
可选地,在本申请的一个实施例中,在所述目标节点获取第一随机数和第一私钥之后,所述方法还包括:
所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;
在所述第二状态指示未结束时,所述目标节点广播所述第一证据。
可选地,在本申请实施例中,当所述目标节点为节点集中的第一个节点时,所述目标节点获取第一随机数包括:所述目标节点获取随机数种子,并将所述随机数种子作为第一随机数。当所述目标节点不为所述节点集中的第一个节点时,所述目标节点获取第一随机数包括:所述目标节点接收发送过来的第一随机数。
可选地,在本申请的一个实施例中,所述目标节点为所述节点集中第一个节点之后的节点,在所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数之前,所述随机数生成方法还包括:
所述目标节点获取用于验证的第二证据;
所述目标节点获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;
所述目标节点利用获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证;
相应地,所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数包括:
在所述目标节点对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
第二方面,提供一种串行随机数生成装置,包括:
获取模块,用于获取第一随机数和针对所述随机数生成装置的第一私钥;
生成模块,用于基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;
广播模块,用于广播所述第二随机数。
可选地,在本申请的一个实施例中,在生成第二随机数之后,所述生成模块还用于:基于所述第二随机数和预设规则,生成第一动作;
所述获取模块还用于:获取第一状态;
所述生成模块还用于:将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态;
所述广播模块还用于:在所述第二状态指示未结束时,广播所述第一动作;
相应地,在广播所述第二随机数时,所述广播模块具体用于:在所述第二状态指示未结束时,广播所述第二随机数。
可选地,在本申请的一个实施例中,在所述获取模块获取所述第一随机数和所述第一私钥之后,所述生成模块还用于:
基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;
相应地,所述广播模块还用于:在所述第二状态指示未结束时,广播所述第一证据。
可选地,在本申请的一个实施例中,当所述随机数生成装置为节点集中的第一个节点时,所述获取模块具体用于:获取随机数种子,并将所述随机数种子作为第一随机数。当所述随机数生成装置不为所述节点集中的第一个节点时,所述获取模块具体用于:接收发送过来的第一随机数。
可选地,在本申请的一个实施例中,所述随机数生成装置为所述节点集中第一个节点之后的节点,在所述生成模块生成第二随机数之前,所述获取模块还用于:获取用于验证的第二证据;获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;
所述随机数生成装置还包括验证模块,用于利用所述获取模块获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证;
相应地,在生成第二随机数时,所述生成模块具体用于:
在所述验证模块对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
第三方面,提供一种目标节点,包括处理器和存储器,所述存储器上存储有计算机指令,当所述指令被运行时,执行第一方面所述任一种随机数生成方法中的步骤。其中,所述目标节点可以为终端,例如电脑和手机等。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机指令,当所述指令被运行时,执行第一方面所述任一种随机数生成方法中的步骤。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
目标节点在随机数的生成过程中,引入了针对目标节点的第一私钥,由于目标节点并不会告知外部其他节点此第一私钥,而且此第一私钥本身对于外部节点而言是随机的,因而目标节点生成的第二随机数也是随机的,可以保证生成的随机数具有足够的随机性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种随机数生成方法的流程图;
图2是是本申请实施例提供的另一种随机数生成方法的流程图;
图3是本申请实施例提供的一种随机数生成装置的结构框图;
图4是本申请实施例提供的一种目标节点的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在描述本发明实施例之前,先对本申请中的一些术语进行阐释。
非对称密钥对:一对密钥,分为公钥和私钥,公钥可以公开给所有人,私钥由密钥对的所有人持有。
可验证随机函数:用户A持有一对密钥:sk_A(私钥)和pk_A(公钥),通过函数f和输入r和sk_A,可生成结果和证明(proof)。任意拿到结果、证明和公钥pk_A的用户B都可以通过函数验证结果是否正确。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本发明实施例提供的随机数生成方法可应用于包括多个节点的网络中,此网络可以为分布式网络,例如区块链网络,也可以为局域网。网络中的所有节点可以组成一个节点集。节点集中的各个节点可以相互通信,以传输各种信息,例如传输随机数、证据(proof)和动作(act)等。节点集中的每一个节点可以为一个博弈参与方。
本发明实施例中提到的节点可以为各种终端,例如电脑、手机、服务器等。
图1是本申请实施例提供的一种随机数生成方法的流程图。参照图1,本申请实施例提供的随机数生成方法应用于目标节点,且可包括:
步骤110,目标节点获取第一随机数和针对所述目标节点的第一私钥。
在本发明实施例中,目标节点可以为节点集中的任一个节点。
在本发明实施例中,根据目标节点是否为节点集中的第一个节点,获取第一随机数的方式会有所不同。
具体地,当所述目标节点为节点集中的第一个节点时,步骤110获取第一随机数可包括:获取随机数种子,并将所述随机数种子作为第一随机数。
在本发明实施例中,可以对节点集中的各个节点按照某种规则进行排序。在排序完成后,各个节点后续即可以按照排列好的顺序依次执行生成随机数的过程。当然,也可以在进行依次排序后,只取排在首位的节点执行生成随机数的过程,后续再对节点集中的节点进行排序。每次排序后可只取排在首位的这个节点执行生成随机数的过程,节点确定后可再进行排序,如此往复。这里,节点集中的第一个节点可表示对节点集按照某种规则进行排序后排在首位的节点。
当所述目标节点不为所述节点集中的第一个节点时,步骤110获取第一随机数可包括:接收发送过来的第一随机数。在此情况下,目标节点接收的第一随机数可以来自于网络中的任一个节点。即,第一随机数可以来自于网络中的任一其他节点发送过来的随机数。
在本发明实施例中,针对所述目标节点的第一私钥可表示操作第一目标节点的用户输入的私钥。
步骤120,所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数。
具体地,在本发明实施例中,目标节点可以将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成第二随机数。
其中,在本发明实施例中,第一确定性函数可以为用于确定随机数的函数,例如其可以为可验证随机函数或者不可更改的确定性签名函数。
步骤130,所述目标节点广播所述第二随机数。
目标节点在广播第二随机数之后,节点集中的其他节点会获取到此第二随机数。
本发明实施例提供的随机数生成方法,目标节点在随机数的生成过程中,引入了针对目标节点的第一私钥,由于目标节点并不会告知外部其他节点此第一私钥,而且此第一私钥本身对于外部节点而言是随机的,因而目标节点生成的第二随机数也是随机的,可以保证生成的随机数具有足够的随机性。
同时,目标节点通过广播第二随机数,可以让网络中的其他节点获取此第二随机数,并在后续其他任一节点可对此第二随机数进行验证,从而保证了随机数的可验证特性。
可选地,在本申请的一个实施例中,在步骤120所述目标节点生成第二随机数之后,本发明实施例提供的随机数生成方法还可包括:所述目标节点基于所述第二随机数和预设规则,生成第一动作;所述目标节点获取第一状态;所述目标节点将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态;在所述第二状态指示未结束时,广播所述第一动作。相应地,步骤130中所述目标节点广播所述第二随机数可包括:在所述第二状态指示未结束时,广播所述第二随机数。
其中,当目标节点为节点集中的第一个节点时,第一状态即为目标节点的初始状态。当目标节点不为节点集中的第一个节点时,第一状态可以为根据初始状态和之前获取到的各个动作而得到的状态。
在本发明实施例,状态可相对于所针对的项目(例如,诸如象棋之类的博弈状态)而言,第一状态和第二状态均可指示项目的进度,是否已结束等。
在第二状态指示结束时,目标节点可以不广播第二随机数,同时也可以不广播第一动作,以节省通信开销,避免无效广播。
在本发明实施例中,第二确定性函数可以为用于确定(例如项目的)状态的函数。
本发明实施例目标节点在广播第二随机数之前可先确定项目的状态(即,第二状态),在第二状态指示项目未结束时,才会广播第二随机数。如此,可以避免因项目终止仍进行广播而导致的无效广播,提高广播效率,也降低了通信开销。同时,在所述第二状态指示未结束时,目标节点可以广播第一动作,这样,网络中的其他节点可以获取此第一动作,并可根据第一动作得到第二状态。从而,可以保证目标节点和网络中的其他节点的状态保持一致。
可选地,在本申请的一个实施例中,在步骤110中所述目标节点获取第一随机数和第一私钥之后,本发明实施例提供的随机数生成方法还可包括:所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;在所述第二状态指示未结束时,所述目标节点广播所述第一证据。
具体地,所述目标节点可将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第一证据。
本发明实施例,在第二状态指示结束时,目标节点可以不广播第一证据,以节省通信开销,避免无效广播。通过在第二状态指示未结束的情况下广播第二证据,可以提高广播效率,也降低了通信开销。同时,目标节点通过广播第一证据,可以使网络中的其他节点可以获知此第一证据,进而可对此第一证据进行验证。
可选地,在本申请的另一个实施例中,如果所述目标节点为所述节点集中第一个节点之后的节点,则在步骤120中所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数之前,本发明实施例提供的随机数生成方法还可包括:所述目标节点获取用于验证的第二证据;所述目标节点获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;所述目标节点利用获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证。
相应地,所述目标节点基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数可包括:在所述目标节点对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
其中,第三确定性函数可以为用于进行验证的函数。
用于验证的第二证据可以为网络中的其他节点发送的证据,例如网络中的某一节点广播的证据。目标节点在获取到第二证据后,即可获取与第二证据对应的公钥。在本发明实施例中,与第二证据对应的公钥可以为操作发出第二证据的节点的用户所持有的公钥。由于各个用户持有的公钥在网络中都是公开的,因而目标节点可获取到第二证据对应的公钥。
本发明实施例提供的随机数生成方法,可以利用获取的公钥和第三确定性函数对所述第一随机数和所述第二证据进行验证,并在验证通过时,目标节点将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数,如此可以保证在每一个环节生成新的随机数之前都对之前所用到的随机数进行了验证,保证了随机数的可验证特性,从而任何一个节点(包括节点的用户)都不能随意操纵随机数,保证了生成的随机数安全和公平性,进一步可保证项目(例如博弈的)公平性。
同时,需了解的是,第一确定性函数可以为用于确定随机数的函数,第二确定性函数可以为确定状态的函数,第三确定性函数可以为用于验证的函数。其中,第一确定性函数可以和第三确定性函数相关,例如若第一确定性函数为签名函数,则第三确定性函数可以为验证签名的函数。同时,第一确定性函数和第三确定性函数均可以为可验证随机函数,且它们内部可涵盖摘要函数,如此可以保证生成的随机数具有充分的随机性。第二确定性函数可以与第一确定性函数和第三确定性函数无关。
在本发明实施例中,第一确定性函数、第二确定性函数和第三确定性函数可以为便于执行的函数,由于目标节点运行这些函数的速度较快,因而可以保证随机数的生成过程的效率很高,不需要复杂的配合操作。
图2是本发明实施例提供的随机数生成方法的流程图。参照图2,以诸如下棋之类的博弈为例,节点集中的每一个节点可以作为一个博弈参与方。节点集(set)={p1,p2,...,pn},其中n为大于1的整数。每个博弈参与方可持有一对非对称密钥对(sk_pi,pk_pi),其中,i为整数,且1≤i≤n,其中节点pi属于节点集中的一员,sk_pi是节点pi的私钥,pk_pi是节点pi的公钥。pk_pi将对对所有人或节点公开,而sk_pi将会作为秘密保存。
本发明实施例提供的随机数生成方法可包括:
步骤210,选取随机数种子r0和第一个节点pt1。
在博弈的开始阶段,可由外部输入一个随机数的种子r0。r0经过一个确定性函数f1,随机地对节点集(set)进行排序,形成新的节点集(set2)={pt1,pt2,...,ptn}。新的节点集和原节点集的成员一样,只是排列顺序可能有所不同,博弈从pt1开始,依次到pt2,...,ptn,然后循环再从pt1开始。其中,博弈的初始状态可以为state0。
此过程可等效为set2=f1(r0,set)。
当然,在本发明实施例中,也可以不生成新的节点集(set2),而只选取一个pt1,后续再根据确定性函数f1选择下一个节点pt2。即,每次选取一个节点进行随机数生成。
其中,函数f1可以相当于一个乱序算法,比如Fisher-Yates算法。函数f1可以足够随机,以使得无法通过选择r0来影响排序结果。
步骤220,第一个节点pt1利用其私钥sk_pt1、r0以及确定性函数f2(即上文中提到的第一确定性函数)生成新的随机数r1以及证明proof1。
以上过程可等效为:{r1,proof1}=f2(r0,sk_pt1)。
其中,proof1可采用可验证随机函数(verifiable random function)中的证明函数生成,或者采用不可更改的确定性签名函数生成。
步骤230,第一个节点pt1根据r1和博弈规则生成动作act1,使博弈的状态经过确定性函数fx(即上文中提到的第二确定性函数)由初始状态state0转换为新状态state1。
以上过程可等效为:state1=fx(r1,act1,state0)
步骤240,第一个节点pt1确定新状态state1是否指示结束,并在新状态state1不指示结束时,广播(r1,proof1,act1),即广播随机数r1、证明proof1以及动作act1。
步骤250,第二个节点pt2收到(r1,proof1,act1)后,结合确定性函数f3(即,上文提到的第三确定性函数)和pk_pt1对r1和proof1进行验证。
其中,在验证通过时,执行步骤260,未通过验证时,则终止。
步骤260,第二个节点pt2在对r1和proof1验证通过时,利用f2、r1和sk_pt2生成r2和proof2。
以上过程可等效为:{r2,proof2}=f2(r1,sk_pt2)。
步骤270,第二个节点pt2根据r2和博弈规则生成动作act2,使博弈的状态经过确定性函数fx(第二确定性函数)由状态state1转换为新状态state2。
以上过程可等效为:state1=fx(r1,act1,state0)
步骤250至步骤270的过程可以等效为:
博弈中止。
//此处也可以将pt1踢出博弈,设置为从上一个proof验证通过的节点开始
步骤280,第二个节点pt2确定新状态state2是否指示结束,并在新状态state1不指示结束时,广播(r2,proof2,act2),即广播随机数r2、证明proof2以及动作act2。
步骤290,后续节点(例如第三个节点pt3)可重复步骤250至步骤280,直至根据最新的状态指示博弈结束,则博弈终止。以下棋为例,下棋到某一步时已致对手于死地,此时的状态可指示博弈结束。
在本发明实施例中,随机数种子r0和初始状态state0会提供给第一个节点pt1。pt1执行完操作后,会传递消息给pt2,然后依次往下传递,直至传递到ptn,传递到ptn之后,消息循环会继续传递到pt1。如此继续轮流进行博弈过程。其中,ptn所完成的操作会类似于pt2所完成的操作。
本发明实施例提供的随机数生成方法,每一轮生成的随机数都有足够的随机性和可验证特征,使得随机数不易受到随机操控,保证了随机数的安全和公平性,也保证了博弈的公平。同时,随机数生成过程效率较高,不需要多人配合操作。
图3是本发明实施例提供的一种随机数生成装置的结构框图。参照图3,本发明实施例提供的随机数生成装置300可包括获取模块310、生成模块320和广播模块330。其中:
获取模块310,用于获取第一随机数和针对所述随机数生成装置的第一私钥;
生成模块320,用于基于获取模块310获取的所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;
广播模块,用于广播生成模块320生成的所述第二随机数。
本发明实施例提供的随机数生成装置,在随机数的生成过程中,引入了针对目标节点的第一私钥,由于目标节点并不会告知外部其他节点此第一私钥,而且此第一私钥本身对于外部节点而言是随机的,因而目标节点生成的第二随机数也是随机的,可以保证生成的随机数具有足够的随机性。
可选地,在本申请的一个实施例中,在生成第二随机数之后,所述生成模块320还可用于:基于所述第二随机数和预设规则,生成第一动作;
所述获取模块310还可用于:获取第一状态;
所述生成模块320还可用于:将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态;
所述广播模块330还可用于:在所述第二状态指示未结束时,广播所述第一动作;
相应地,在广播所述第二随机数时,所述广播模块330可具体用于:在所述第二状态指示未结束时,广播所述第二随机数。
可选地,在本申请的一个实施例中,在所述获取模块获取所述第一随机数和所述第一私钥之后,所述生成模块320还可用于:
基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;
相应地,所述广播模块330还可用于:在所述第二状态指示未结束时,广播所述第一证据。
可选地,在本申请的一个实施例中,当所述随机数生成装置为节点集中的第一个节点时,所述获取模块310可具体用于:获取随机数种子,并将所述随机数种子作为第一随机数。当所述随机数生成装置不为所述节点集中的第一个节点时,所述获取模块310可具体用于:接收发送过来的第一随机数。
可选地,在本申请的一个实施例中,所述随机数生成装置为所述节点集中第一个节点之后的节点,在所述生成模块生成第二随机数之前,所述获取模块310还可用于:获取用于验证的第二证据;获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;
所述随机数生成装置还包括验证模块,用于利用所述获取模块获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证;
相应地,在生成第二随机数时,所述生成模块320可具体用于:
在所述验证模块对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
本发明实施例提供的随机数生成装置可保证生成的随机数具有充分的随机性,同时,随机数具有可验证性,任何一个人不能随意操纵随机数,保证了安全和公平性。
图4是本发明实施例提供的目标节点的结构框图。参照图4,本发明实施例提供的目标节点400可以为区块链中的节点。所述区块链节点例如可以为电脑或服务器,且可包括存储器410和处理器420。其中,所述存储器410,适于存储多条指令;所述处理器420,适于执行存储器410上存储的各种指令。当所述存储器410上存储的指令被处理器420运行时可实现上文所描述的任一种随机数生成方法中的步骤。
本发明实施例提供的目标节点在随机数的生成过程中,引入了针对此目标节点的第一私钥,由于目标节点并不会告知外部其他节点此第一私钥,而且此第一私钥本身对于外部节点而言是随机的,因而目标节点生成的第二随机数也是随机的,可以保证生成的随机数具有足够的随机性。
此外,本发明实施例还可以提供一种区块链系统,包括多个区块链节点,其中,所述多个区块链节点中存在一个节点为上文中提及的用于执行随机数生成的方法的目标节点。
此外,本发明实施例还提供提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机指令,当所述指令被运行时,执行上文中所述任一种随机数生成方法中的步骤。
本发明实施例提供的计算机可读存储介质,在随机数的生成过程中,引入了针对此目标节点的第一私钥,由于目标节点并不会告知外部其他节点此第一私钥,而且此第一私钥本身对于外部节点而言是随机的,因而目标节点生成的第二随机数也是随机的,可以保证生成的随机数具有足够的随机性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种串行随机数生成方法,应用于包含至少两个节点的节点集,其特征在于,包括:
目标节点获取第一随机数和针对所述目标节点的第一私钥,所述目标节点为基于所述第一随机数对所述节点集中的节点进行排序所确定的;
基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;基于所述第二随机数和预设规则,生成第一动作,所述预设规则为预设博弈规则;
获取第一状态,所述第一状态为当前博弈状态;
将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态,所述第二状态用于更新当前博弈状态;
在所述第二状态指示博弈未结束时,广播所述第一动作和所述第二随机数;
以此类推,由所述节点集中的节点基于前一节点的随机数和本节点的私钥循环执行上述步骤,并广播本节点生成的随机数和动作,直至状态指示博弈结束。
2.根据权利要求1所述的串行随机数生成方法,其特征在于,在获取第一随机数和第一私钥之后,所述方法还包括:
基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;
在所述第二状态指示未结束时,广播所述第一证据。
3.根据权利要求1所述的串行随机数生成方法,其特征在于,
当所述目标节点为节点集中的第一个节点时,获取第一随机数包括:获取随机数种子,并将所述随机数种子作为第一随机数;
当所述目标节点不为所述节点集中的第一个节点时,获取第一随机数包括:接收发送过来的第一随机数。
4.根据权利要求3所述的串行随机数生成方法,其特征在于,所述目标节点为所述节点集中第一个节点之后的节点,在所述基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数之前,所述随机数生成方法还包括:
获取用于验证的第二证据;
获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;
利用获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证;
相应地,基于所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数包括:
在对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
5.一种串行随机数生成装置,其特征在于,包括:
获取模块,用于获取第一随机数和针对所述随机数生成装置的第一私钥;
生成模块,用于基于所述获取模块获取的所述第一随机数、所述第一私钥和第一确定性函数,生成第二随机数;
所述生成模块还用于:基于所述第二随机数和预设规则,生成第一动作,所述预设规则为预设博弈规则;
所述获取模块还用于:获取第一状态,所述第一状态为当前博弈状态;
所述生成模块还用于:将所述第二随机数、所述第一动作以及所述第一状态作为第二确定性函数的输入,生成第二状态,所述第二状态用于更新当前博弈状态;
广播模块还用于:在所述第二状态指示博弈未结束时,广播所述第一动作和所述第二随机数;
以此类推,由节点集中的节点基于前一节点的随机数和本节点的私钥循环执行上述步骤,并广播本节点生成的随机数和动作,直至状态指示博弈结束。
6.根据权利要求5所述的串行随机数生成装置,其特征在于,在所述获取模块获取所述第一随机数和所述第一私钥之后,所述生成模块还用于:
基于所述第一随机数、所述第一私钥和第一确定性函数,生成用于验证的第一证据;
相应地,所述广播模块还用于:在所述第二状态指示未结束时,广播所述第一证据。
7.根据权利要求5所述的串行随机数生成装置,其特征在于,
当所述随机数生成装置为节点集中的第一个节点时,所述获取模块具体用于:获取随机数种子,并将所述随机数种子作为第一随机数;
当所述随机数生成装置不为所述节点集中的第一个节点时,所述获取模块具体用于:接收发送过来的第一随机数。
8.根据权利要求7所述的串行随机数生成装置,其特征在于,所述随机数生成装置为所述节点集中第一个节点之后的节点,在所述生成模块生成第二随机数之前,所述获取模块还用于:获取用于验证的第二证据;获取与所述第二证据对应的公钥和第三确定性函数,其中,所述第三确定性函数与所述第一确定性函数相关联;
所述随机数生成装置还包括验证模块,用于利用所述获取模块获取的所述公钥和所述第三确定性函数对所述第一随机数和所述第二证据进行验证;
相应地,在生成第二随机数时,所述生成模块具体用于:
在所述验证模块对所述第一随机数和所述第二证据验证通过时,将所述第一随机数和所述第一私钥作为所述第一确定性函数的输入,生成所述第二随机数。
9.一种目标节点,包括处理器和存储器,所述存储器上存储有计算机指令,当所述指令被运行时,执行根据权利要求1-4任一所述的串行随机数生成方法中的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机指令,当所述指令被运行时,执行根据权利要求1-4任一所述的串行随机数生成方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811250983.9A CN109471610B (zh) | 2018-10-25 | 2018-10-25 | 一种串行随机数生成方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811250983.9A CN109471610B (zh) | 2018-10-25 | 2018-10-25 | 一种串行随机数生成方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471610A CN109471610A (zh) | 2019-03-15 |
CN109471610B true CN109471610B (zh) | 2021-03-19 |
Family
ID=65666179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811250983.9A Active CN109471610B (zh) | 2018-10-25 | 2018-10-25 | 一种串行随机数生成方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471610B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518270A (zh) * | 2003-01-24 | 2004-08-04 | ���˹���Ѷ��� | 保护电子芯片免受欺骗的公钥加密方法 |
CN103986574A (zh) * | 2014-05-16 | 2014-08-13 | 北京航空航天大学 | 一种基于身份的分层广播加密方法 |
CN107204846A (zh) * | 2017-05-31 | 2017-09-26 | 北京中金国信科技有限公司 | 数字签名生成方法、系统、节点模块及共同随机数协商确定方法 |
CN108449174A (zh) * | 2018-02-09 | 2018-08-24 | 孔泽 | 云计算应用中智能终端的可撤销加密方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2926651B1 (fr) * | 2008-01-23 | 2010-05-21 | Inside Contactless | Procede et dispositifs de contre-mesure pour cryptographie asymetrique |
EP2343665B1 (en) * | 2009-12-18 | 2012-04-18 | CompuGroup Medical AG | Computer implemented method for generating a pseudonym, computer readable storage medium and computer system |
US9058228B2 (en) * | 2013-02-19 | 2015-06-16 | Raytheon Company | Random number generator for generating truly random numbers |
CN104038341B (zh) * | 2014-06-20 | 2017-04-05 | 北京航空航天大学 | 一种基于身份的跨系统代理重加密方法 |
JP6613909B2 (ja) * | 2016-01-15 | 2019-12-04 | 富士通株式会社 | 相互認証方法、認証装置および認証プログラム |
CN105827402B (zh) * | 2016-05-18 | 2019-08-20 | 武汉理工大学 | 一种分布式公开可验证随机数生成方法 |
-
2018
- 2018-10-25 CN CN201811250983.9A patent/CN109471610B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518270A (zh) * | 2003-01-24 | 2004-08-04 | ���˹���Ѷ��� | 保护电子芯片免受欺骗的公钥加密方法 |
CN103986574A (zh) * | 2014-05-16 | 2014-08-13 | 北京航空航天大学 | 一种基于身份的分层广播加密方法 |
CN107204846A (zh) * | 2017-05-31 | 2017-09-26 | 北京中金国信科技有限公司 | 数字签名生成方法、系统、节点模块及共同随机数协商确定方法 |
CN108449174A (zh) * | 2018-02-09 | 2018-08-24 | 孔泽 | 云计算应用中智能终端的可撤销加密方法及装置 |
Non-Patent Citations (1)
Title |
---|
什么是可验证随机函数VRF;佚名;《https://blog.csdn.net/tiandiwuya/article/details/80346608》;20180517;正文第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109471610A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109360091B (zh) | 一种基于区块链的随机对象选取方法和装置 | |
US11734260B2 (en) | Methods and apparatus for a distributed database within a network | |
CN110064202B (zh) | 一种游戏方法、设备及存储介质 | |
US20180173747A1 (en) | Methods and apparatus for a distributed database that enables deletion of events | |
TWI671645B (zh) | 隨機數的生成及獲取方法和裝置 | |
CN108230047B (zh) | 抽奖数据处理方法及装置 | |
CN110868441A (zh) | 区块链公链的维护方法、装置、节点及区块链公链 | |
CN109985389B (zh) | 基于区块链智能合约的牌类游戏防作弊方法及其系统 | |
KR20210135495A (ko) | 블록체인 스마트 컨트랙트들에서 난수들을 발생하기 위한 방법 | |
CN108648323A (zh) | 目标信息的选取方法、装置、计算机设备和存储介质 | |
US10795644B2 (en) | Decentralized random number generator | |
CN108831001B (zh) | 基于区块链的节点随机选取方法、系统、节点、电子设备 | |
EP3413189A1 (en) | Random number generator | |
CN108260015B (zh) | 一种投票数据处理方法、装置及电子设备 | |
CN111210270B (zh) | 业务处理方法、装置、服务集群、计算机设备和存储介质 | |
CN113783708A (zh) | 一种基于可靠广播的可再投票二元共识方法及装置 | |
CN111611599A (zh) | 一种区块链的共识算法实现方法、设备及介质 | |
CN109471610B (zh) | 一种串行随机数生成方法、装置和存储介质 | |
CN110585722A (zh) | 基于区块链的游戏时间信息的处理方法及装置、游戏控制方法及装置 | |
CN109361509A (zh) | 一种随机数生成方法、装置和存储介质 | |
CN107507020B (zh) | 获取网络传播影响力竞争优势最大化的方法 | |
CN113282418A (zh) | 一种模型聚合处理方法及装置 | |
CN115297937B (zh) | 用于程序验证的方法、程序、系统和服务器 | |
CN111282280A (zh) | 棋牌游戏中的数据处理方法、装置及电子设备 | |
CN115720227A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210114 Address after: 100080 1120-64, 11 / F, 18 Zhongguancun Street, Haidian District, Beijing Applicant after: Beijing Lianhua Future Technology Co.,Ltd. Address before: 310012 station 7, room 118, No.7 Cuibai Road, Xihu District, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU YINZHI TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |