CN109617679A - 生成、获取以及提供随机数的方法、系统以及存储介质 - Google Patents
生成、获取以及提供随机数的方法、系统以及存储介质 Download PDFInfo
- Publication number
- CN109617679A CN109617679A CN201811446707.XA CN201811446707A CN109617679A CN 109617679 A CN109617679 A CN 109617679A CN 201811446707 A CN201811446707 A CN 201811446707A CN 109617679 A CN109617679 A CN 109617679A
- Authority
- CN
- China
- Prior art keywords
- random number
- nodes
- node
- generated
- signature
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 239000012634 fragment Substances 0.000 claims description 90
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 101001122448 Rattus norvegicus Nociceptin receptor Proteins 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241000209202 Bromus secalinus Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了一种生成、获取以及提供随机数的方法、系统以及存储介质。其中,生成预定轮次的随机数的方法,包括:区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息;第i个节点利用私钥至少对公共信息进行签名生成签名消息;第i个节点从区块链系统的其他节点获取其他签名消息,其中其他签名消息为区块链系统的其他节点利用私钥至少对公共信息进行签名生成的签名消息;以及第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
Description
技术领域
本申请涉及区块链领域,特别是涉及一种生成、获取以及提供随机数的方法、系统以及存储介质。
背景技术
随机数在很多领域都发挥着重要的作用。例如在密码学、算法、抽签或博彩等领域都需要随机数作为保证私密性或安全性的基础运算资源。提供高熵的可靠随机数发生器是许多安全协议中的关键组件。然而,仅仅可靠性是不够的,在许多高风险协议中,随机数生成过程的不可偏移性、公共可验证性以及确保其随机性具有足够的熵是至关重要的。
为了保证公开随机数源头的可信度,通常需要在不依赖可信第三方的前提下生成随机数。尤其是在例如区块链的去中心化结构中,许多互不信任的用户希望参与其中。然而,在去中心化环境中生成和使用随机数会带来许多问题和挑战,例如如何选择可用信标集,如何组合来自多个信标的随机输出同时保证公平性。
因此,需要提供一种防操纵并可公开验证的随机数生成方法。
发明内容
本公开的实施例提供了一种生成、获取以及提供随机数的方法、系统以及存储介质,以便实现提供一种防操纵并可公开验证的随机数生成方法的目的。
根据本公开实施例的一个方面,提供了一种生成预定轮次的随机数的方法,包括:区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息,其中第i个节点为区块链系统所包括的N个节点中的一个节点,其中i和N为自然数且i≤N,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;第i个节点利用私钥至少对公共信息进行签名生成签名消息;第i个节点从区块链系统的其他节点获取其他签名消息,其中其他签名消息为区块链系统的其他节点利用私钥至少对公共信息进行签名生成的签名消息;以及第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
根据本公开实施例的另一方面,还提供了一种获取随机数的方法,包括:向服务器发送获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;从服务器接收在预定轮次由区块链系统中的节点生成的随机数;以及显示所接收的随机数。
根据本公开实施例的另一方面,还提供了一种提供随机数的方法,包括:从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;从区块链系统接收在预定轮次生成的随机数;以及将在预定轮次生成的随机数发送至终端。
根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本公开实施例的另一个方面,还提供了一种生成预定轮次的随机数的装置,该装置包括:公共信息生成模块,用于通过区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息,其中第i个节点为区块链系统所包括的N个节点中的一个节点,其中i和N为自然数且i≤N,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;签名消息生成模块,用于通过第i个节点利用私钥至少对公共信息进行签名生成签名消息;签名消息获取模块,用于通过第i个节点从区块链系统的其他节点获取其他签名消息,其中其他签名消息为区块链系统的其他节点利用私钥至少对公共信息进行签名生成的签名消息;以及第一随机数生成模块,用于通过第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
根据本公开实施例的另一个方面,还提供了一种获取随机数的装置,包括:第一获取请求发送模块,用于向服务器发送获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;随机数接收模块,用于从服务器接收在预定轮次由区块链系统中的节点生成的随机数;以及随机数显示模块,用于显示所接收的随机数。
根据本公开实施例的另一个方面,还提供了一种提供随机数的装置,包括:第一获取请求接收模块,用于从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;第二获取请求发送模块,用于向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;随机数接收模块,用于从区块链系统接收在预定轮次生成的随机数;以及随机数发送模块,用于将在预定轮次生成的随机数发送至终端。
根据本公开实施例的另一个方面,提供了一种供随机数的系统,包括服务器和区块链系统。其中服务器与区块链系统中的节点通信连接。其中,服务器配置用于执行以下操作:从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;从区块链系统接收在预定轮次生成的随机数;以及将在预定轮次生成的随机数发送至终端。并且区块链系统中的第i个节点配置用于执行以下操作:从服务器接收第二获取请求;根据预定轮次的轮次数值生成公共信息,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;利用私钥至少对公共信息进行签名生成签名消息;从区块链系统的其他节点获取其他签名消息,其中其他签名消息为其他节点利用私钥至少对公共信息进行签名生成的签名消息;第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
在本公开实施例中,区块链系统的节点首先根据预定轮次的轮次值生成公共信息。并且该公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息。然后,节点利用私钥对公共信息进行签名生成签名消息,并且节点还接收区块链系统中的其他节点生成的签名消息。然后,节点利用存有的签名消息生成最终的随机数结果。
从而通过以上方式生成的随机数,由于所采用的公共信息为区块链系统的节点根据预定的相同规则以及轮次数值生成的信息,因此各个节点产生的公共信息都是相同的。从而当基于该公共信息产生随机数时,这个过程不易为外人所操纵,从而具有不可操纵性。
并且,由于随机数是基于各个节点利用各自的私钥签名的签名消息产生的,因此当产生的随机数进行公布时,可以利用各个节点的公钥进行验证。
因此本公开的技术方案生成的随机数具有不可操纵性以及可验证性。从而解决了现有技术中的技术问题
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是用于实现根据本公开实施例1所述的方法的【计算机终端(或移动设备)】的硬件结构框图;
图2是根据本公开实施例1所述的获取随机数的系统的示意图;
图3是根据本公开实施例1所述的区块链系统所包含的N个节点;
图4是根据本公开实施例1所述的区块链系统生成随机数的方法的流程图;
图5是根据本公开实施例1所述的N个节点生成公共信息的示意图;
图6是根据本公开实施例1所述的N个节点生成签名消息的示意图;
图7是根据本公开实施例1所述的区块链系统的第i个节点向其他节点发送消息碎片的示意图;
图8是根据本公开实施例1所述的区块链系统的第i个节点从其他节点接收消息碎片的示意图;
图9是根据本公开实施例1对所述的区块链系统所生成的随机数进行验证的方法的流程图;
图10是根据本公开实施例1的第一个方面所述的生成随机数的方法的流程示意图;
图11是根据本公开实施例1的第二个方面所述的获取随机数的方法的流程示意图;
图12是根据本公开实施例1的第三个方面所述的提供随机数的方法的流程示意图;
图13是根据本公开实施例1所述的区块链中的节点的结构示意图;
图14是根据本公开实施例2的第一个方面所述的生成随机数的装置的示意图;
图15是根据本公开实施例2的第二个方面所述的获取随机数的装置的示意图;以及
图16是根据本公开实施例2的第三个方面所述的提供随机数的装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,还提供了一种获取、提供以及生成随机数的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现获取、提供以及生成随机数的方法实施例的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本公开实施例中的获取、提供以及生成随机数的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的获取、提供以及生成随机数的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
图2是根据本实施例所述的获取随机数的系统的示意图。参照图2所示,该系统包括:终端200、服务器300以及区块链系统400。其中,用户101可以通过终端200向服务器300请求获取随机数。然后,服务器300在接收到终端200发送的请求后,向区块链系统400发送获取随机数的请求。区块链系统400在接收到服务器300的请求之后,生成随机数,并将随机数发送至服务器300。服务器300从区块链系统400接收到随机数后,将随机数发送至终端200。从而用户101可以通过该系统获取随机数。
此外,用户101也可以从区块链系统400获取随机数以及相关信息,从而对从服务器300获取的随机数进行验证。
其中服务器300例如可以是博彩公司的服务器,当接收到用户101的参与抽奖的请求时,服务器300可以向用户101提供随机数进行抽奖。或者,服务器300还可以是游戏服务器,能够接收到用户101进行游戏内抽奖的请求。然后服务器300从区块链系统400获取随机数提供给用户101进行游戏内的抽奖。
并且其中,图2中的终端200可以是笔记本、平板电脑、智能手机、以及电脑台式机等。
需要说明的是,系统中的终端200、服务器300以及区块链系统400中的节点均可适用上面所述的硬件结构。
下面详细描述区块链系统400以及区块链系统400产生随机数的方法。
参考图3示出了区块链系统400所包含的N个节点P1至PN。其中,区块链系统400例如可以是以太坊区块链系统。并且节点P1至PN中的每一个节点都生成有一对私钥和公钥。其中私钥由各个节点自己保存,而公钥则向区块链400中的所有节点P1至PN公开。
下面,通过描述区块链系统400中第i个节点Pi的操作过程,说明区块链系统400生成随机数的方法。其中图4示出了该方法的流程图。
首先区块链节点Pi从服务器300接收到获取预定轮次的随机数的请求(S402)。例如,该预定轮次可以是第T轮,其中T为自然数。
然后,参见图5所示,节点Pi根据当前的轮次值T生成公共信息(S404),该公共信息是由区块链系统300中的节点P1至PN根据预定的相同规则以及轮次数值T生成的信息。
因此,在当前轮次为第T轮时,区块链系统400的节点P1至PN均生成相同的公共信息GN,如图5所示。
其中,节点P1至PN例如可以通过以下规则生成与当前轮次T对应的公共信息GN:
求取T mod 100,即求取当前轮次T除以100的余数。
如果T mod 100==1(即当前轮次T除以100的余数为1,例如当前轮次T为101、201、301等),则获取外部信息作为公共信息GN。例如,获取区块链系统400的当前最新区块的Hash值作为公共信息GN。
如果T mod 100不等于1,则取上一轮次(即第T-1轮)生成的随机数的前32个比特位,作为公共信息GN。
然后,节点Pi利用私钥对公共信息GN进行签名,从而生成节点Pi的签名消息Mi(S406)。该签名消息Mi例如可以是具有512个比特位的数字。
并且,参考图6所示,其他节点也都用各自的私钥对公共信息GN进行签名,从而生成各自的签名消息M1至MN。
然后,节点Pi根据签名消息Mi生成N份消息碎片shareij(1≤j≤N)(S408)。并且同样的,其他节点P1至PN也同样根据各自的签名消息生成N份消息碎片。其中对于该N份消息碎片,取任意K份消息碎片(K≤N)都可以恢复出签名消息Mi。并且少于K份的任意组合的消息碎片都不能恢复出签名消息Mi。例如,各个节点可以利用shamir秘密分享算法根据各自的签名消息生成消息碎片。再例如,K可以取N/2。尤其是,N/2为K的最佳取值。在K>N/2的情况下,只要(N-K)个节点(此时(N-K)小于N/2)协同作弊就可以发动拒绝服务攻击。在K<N/2的情况下,则只需要K个节点(此时K小于N/2)就可以协同作弊提前获知结果。因此只有当K取N/2时,协同作弊所需要的节点数量才是最大的,从而N/2为K的最佳取值。
其中下面表1示出了各个节点P1至PN所生成的消息碎片。
表1
然后,节点Pi例如可以通过某种安全的方式或安全的信道将消息碎片shareij分别发送给对应的节点Pj(S410)。具体地,例如将消息碎片sharei1发送给节点P1,将消息碎片sharei2发送给节点P2,……,将消息碎片shareij发送给节点Pj,……,以及将消息碎片shareiN发送给节点PN。这样,节点Pi会将除了消息碎片shareii之外的其他消息碎片分别发送给对应的节点,如图7所示。其中,“某种安全的方式或安全的信道”,例如可以将消息碎片利用节点Pi的私钥进行签名,并且将消息碎片利用发送的目标节点的公钥进行加密,从而将签名以及加密后的消息碎片发送至目标节点,由目标节点进行验证和解密。从而保证了消息碎片的安全性和可验证性。
同样的,区块链系统400中的其他节点Pj也会将各自的消息碎片分别发送至区块链系统400中的其他对应的节点。
例如,节点P1会将消息碎片share12发送至节点P2,……,将消息碎片share1i发送给节点Pi,……,以及将消息碎片share1N发送至节点PN。以此类推,PN节点将消息碎片shareN1发送至节点P1,将消息碎片shareN2发送至节点P2,……,将消息碎片shareNi发送至节点Pi,……,将消息碎片shareNj发送至节点Pj。
从而节点Pi分别从其他节点Pj接收其他节点Pj发送的消息碎片shareji(1≤j≤N)(S412),如图8所示。其中节点Pi从节点P1接收消息碎片share1i,……,节点Pi从节点Pj接收消息碎片shareji,……,节点Pi从节点PN接收消息碎片shareNi。
也就是说节点Pi从其他(N-1)个节点接收(N-1)份消息碎片,然后再加上自己的消息碎片shareii,则构成N份消息碎片shareji(1≤j≤N)。
当节点Pi集齐上述的N份消息碎片shareji(1≤j≤N)时,则向其他节点广播确认信息ACK(S414)。同样的当其他节点也集齐N份消息碎片时,也广播确认信息ACK。因此,理论上,节点Pi会收集到(N-1)个确认信息。
当节点Pi集齐不少于K份(包括自己发出的)确认信息ACK时,则将该节点Pi所存有的所有消息碎片shareji(1≤j≤N)在区块链系统中明文广播,从而其他节点均能够接收到Pi广播的消息碎片(S416)。
此外,同样的,当区块链系统中的其他节点也集齐了不少于K份确认信息ACK时(具体地,例如K可以等于N/2),也将各自所存有的所有消息碎片在区块链系统中明文广播。从而节点Pi从其他节点接收与各个节点生成的签名消息Mk(1≤k≤N)对应的消息碎片(S418)。
然后,节点Pi利用接收的消息碎片恢复出各个节点的签名消息Mk(1≤k≤N)(S420)。具体地,对于一个签名消息Mk(1≤k≤N),如果节点Pi收集到的消息碎片Sharekj(1≤j≤N)的数量达到K份消息碎片时,节点Pi即可利用shamir秘密分享算法,根据所收集到的消息碎片恢复出签名消息Mk。这样节点Pj便持有所有的节点P1至PN所生成的签名消息M1至MN。
然后,节点Pi将自己持有的N个签名消息(例如,均为512个比特)进行异或运算从而得到一个随机数RAN(对应于权利要求所述的第二随机数)(S422)。
具体地,节点Pi首先将节点P1生成的签名消息M1的512个比特位分别与节点P2生成的签名消息M2的对应的比特位进行异或运算。例如M1是00101……110,M2是10110……010,则M1与M2进行异或运算的结果如下表所示:
M<sub>1</sub> | 0 | 0 | 1 | 0 | 1 | …… | 1 | 1 | 0 |
M<sub>2</sub> | 1 | 0 | 1 | 1 | 0 | …… | 0 | 1 | 0 |
XOR1 | 1 | 0 | 0 | 1 | 1 | …… | 1 | 0 | 0 |
然后节点Pi将M1和M2异或运算的结果再与M3进行异或运算,假设M3是01001……010,则进一步异或运算的结果如下表所示:
XOR1 | 1 | 0 | 0 | 1 | 1 | …… | 1 | 0 | 0 |
M3 | 0 | 1 | 0 | 0 | 1 | …… | 0 | 1 | 0 |
XOR2 | 1 | 1 | 0 | 1 | 0 | …… | 1 | 1 | 0 |
然后,依次类推,节点Pi再将异或运算的结果依次与M4、….MN进行异或运算得到随机数RAN。
最后,节点Pi将随机数RAN与伪随机序列的第T(即当前轮次的轮次值)个数进行异或运算,从而得到最终的随机数结果(对应于权利要求中的第一随机数)(S424)。
具体地,上面所述的伪随机数序列是每个节点使用一个相同的随机数种子和相同的随机数生成算法生成的随机数序列。从而保证了各个节点产生的伪随机数序列是相同的。
节点Pi在计算得到随机数RAN后,根据当前轮次的轮次值T,从上面所述的伪随机数序列中选取第T个随机数,与RAN进行异或运算,从而得到最终的随机数结果。
尽管以上是站在节点Pi的角度描述生成随机数结果的过程,但是对于其他的节点,也都是采用相同的流程生成随机数结果。从而,区块链系统400的各个节点P1至PN在相同轮次可以产生相同的随机数结果。
从而通过这种方式,由于采用区块链最新区块的哈希值或者取上一轮生成的随机数的前32比特位作为公共信息来产生随机数,因此产生随机数的过程不可操纵。
此外,图9示出了对服务器300公布的随机数进行验证的流程图,从而公布的随机数也可以通过图9所示的以下步骤进行验证:
S902:验证公共信息GN;
S904:使用所有节点的公钥验证所有的签名消息的数字签名;以及
S906:将所有公开的签名消息求异或,再与伪随机数序列中对应的数字异或,得到随机数结果,并与公开的随机数结果进行比对。
从而,通过以上方式,可以对公布的随机数进行验证。
此外,当出现以下错误情况时,区块链系统400会停止随机数的生成并运行BFT(拜占庭容错)或报告错误:1)节点收到错误的消息碎片;2)节点收到的消息碎片无法恢复出签名消息;3)回复的签名消息无法通过验证。
此外,如果节点(数量少于1/2的节点)在生成签名消息的过程中响应超时,此时对该节点对应的签名消息置为0。
此外,参考图2所示,用户101还可以通过终端设备200从区块链系统400获取随机数以及相关的请求信息,从而对服务商公布的随机数进行验证。
具体地,当服务器300的经营者,例如游戏厂商使用区块链系统400提供的随机数进行抽奖时,在某轮抽奖中,即使厂商声称使用了最新的第T轮的结果,玩家也无法验证如下厂商作弊的情况:
厂商获取最新的第T轮的随机数结果后,可能会对此结果不满意,从而会继续从区块链系统400获取后面几轮的随机数结果,例如第T+1轮的随机数结果。然后厂商对玩家谎称该结果为第T轮的随机数结果,从而通过作弊的方式欺骗玩家。
为了避免这种情形的发生,参考图2所示,用户101可以通过终端设备200从区块链系统400获取随机数以及与随机数相关的信息,从而对服务商公布的随机数进行验证。
具体地,区块链系统400中的节点Pi从服务器300接收到请求随机数的请求信息时,该节点Pi在生成第T轮随机数的过程中,会在图4所示的步骤S406中将公共信息GN与该节点Pi获取的所有请求信息进行签名,也就是对(GN+所有请求信息进行签名),从而生成签名消息Mi。
从而通过步骤S408~S420,该节点Pi可以生成该区块链系统400的所有节点获取的所有请求信息,并将所有的请求信息与第T轮随机数一起发送至服务器300。
从而服务器300会公布第T轮的随机数以及所有的请求信息,以便用户101进行验证。
假如,服务器300的经营方(例如游戏厂商)进行作弊,将第T+1轮生成的随机数谎称为第T轮生成的随机数。此时,用户101也可以直接从区块链系统400获取随机数以及所有的请求信息进行验证。
例如,终端设备200会将请求获取随机数的请求信息发送给区块链系统400的任一节点(例如节点Pi)。如果生成随机数的轮次已经是第T+1轮,该节点Pi会将与第T+1轮的随机数相关的所有请求信息连同第T+1轮的随机数发送至终端设备200。从而,用户101可以通过接收的请求信息验证服务器300公布的随机数的真实性。
并且可选地,终端设备200的客户端可以自行生成密钥对,并且对外公布公钥。当用户101需要从区块链系统400直接请求获取随机数时,会使用私钥签名一个包含时间戳的请求信息,并将请求信息、时间戳和签名发送给区块链系统400的任一节点(例如节点Pi)。该节点Pi会将轮次T回复至终端设备200,表示客户端的此次请求将会在第T轮生成。终端设备200收到轮次T后,等待一定时间(ms级),向节点请求第T轮的生成结果,并验证签名,若签名合法,则使用此结果并对玩家声称使用了第T轮的结果。
并且可选地,如果节点Pi正在生成第T轮随机数,那么在收到终端设备200的请求(包含时间戳、公钥信息和签名信息)后,会记录请求信息并回复T+1。
然后,节点Pi在生成T+1轮随机数的过程中,会将公共信息(GN+所有请求信息)进行签名。并且节点Pi在生成T+1轮随机数的过程中分发签名消息Mi时,会在分发给其他节点的内容中附加上所有请求信息。从而节点Pi最终提供的信息中不仅包括第T+1轮随机数,还包括所有节点接收的所有请求信息。
在随机数验证过程中,可以按照如下方式进行:
对于厂商公布的使用的轮次T,首先根据图9中所述的流程验证随机数的合法性。然后,从节点提供的信息中得到第T轮的所有请求信息(此信息在验证随机数的合法性的过程中已经验证签名)。然后,使用厂商的公钥对厂商公布的请求信息进行验证。然后,用区块链系统400提供的请求信息和厂商公布的请求信息进行比对,从而验证随机数的真实性。
综上所述,在上述运行环境下,根据本实施例的第一个方面,提供了一种生成预定轮次的随机数的方法,该方法由图2中所示的区块链系统400实现。其中图10示出了该方法的流程示意图。参考图10所示,该方法包括:
S1002:区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息,其中第i个节点为区块链系统所包括的N个节点中的一个节点,其中i和N为自然数且i≤N,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;
S1004:第i个节点利用私钥至少对公共信息进行签名生成签名消息;
S1006:第i个节点从区块链系统的其他节点获取其他签名消息,其中其他签名消息为区块链系统的其他节点利用私钥至少对公共信息进行签名生成的签名消息;以及
S1008:第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
正如上面所述的,在本实施例中,区块链系统的第i个节点Pi首先根据预定轮次的轮次值T生成公共信息GN。并且该公共信息GN为区块链系统400中的节点P1至PN根据预定的相同规则以及轮次数值生成的信息。
然后,节点Pi利用私钥对公共信息进行签名生成签名消息Mi,并且节点Pi还接收区块链系统400中的其他节点P1至Pi-1以及Pi+1至PN生成的签名消息M1至Mi-1以及Mi+1至MN。
然后,节点Pi利用存有的签名消息M1至MN生成最终的随机数结果。
从而通过以上方式生成的随机数,由于所采用的公共信息为区块链系统400的节点P1至PN根据预定的相同规则以及轮次数值生成的信息,因此各个节点P1至PN产生的公共信息都是相同的。从而当基于该公共信息产生随机数时,这个过程不易为外人所操纵,从而具有不可操纵性。
并且,由于随机数是基于各个节点P1至PN利用各自的私钥签名的签名消息产生的,因此当产生的随机数进行公布时,可以利用各个节点P1至PN的公钥进行验证。
因此本实施例的方法提供了一种生成随机数的方法,其具有不可操纵性以及可验证性。从而解决了现有技术中的技术问题。
此外,尽管上面所述的具体方案中对于产生公共信息的方式做出了进一步的描述,但是这样的描述只是示例性的。只要是节点P1至PN根据预定的相同规则以及轮次数值生成的信息都可以适用于本发明。
此外,尽管上面所述的具体方案中利用了签名消息进行异或运算,并且进一步将其与伪随机序列中的第T个随机数进行异或运算,从而得到所述的第一随机数。但是以上过程对于本发明的技术方案而言,并不是必须的。例如也可以不通过与伪随机序列中的第T个随机数进行异或运算,而将随机数RAN作为最终运算结果。
此外,可选地,第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数的操作,包括:第i个节点将第i个节点的签名消息与其他签名消息进行异或运算生成第二随机数;以及第i个节点将第二随机数与预定的伪随机数序列中与预定轮次对应的随机数进行异或运算,生成第一随机数作为预定轮次的随机数。
正如图4中所示出的步骤S422和S424所述,节点Pi将自己持有的N个签名消息(例如,均为512个比特)进行异或运算从而得到一个随机数RAN(对应于权利要求所述的第二随机数),然后节点Pi将随机数RAN与伪随机序列的第T(即当前轮次的轮次值)个数进行异或运算,从而得到最终的随机数结果(对应于权利要求中的第一随机数)。
从而通过这种方式,使得最终的运算结果能够均匀分布,从而增强了运算结果的随机性。使得提供的随机数更加有效。
此外,可选地,第i个节点从区块链系统的其他节点获取其他签名消息的操作,包括:第i个节点从其他节点接收分别与其他签名消息对应的消息碎片,其中消息碎片是由节点根据签名消息生成的信息碎片;以及第i个节点根据所接收的消息碎片生成其他签名消息。
参考图4中所示的步骤S418至S420,节点Pi从其他节点接收与各个节点生成的签名消息Mk(1≤k≤N)对应的消息碎片。然后,节点Pi利用接收的消息碎片恢复出各个节点的签名消息Mk(1≤k≤N)(S420)。具体地,对于一个签名消息Mk(1≤k≤N),如果节点Pi收集到的消息碎片Sharekj(1≤j≤N)的数量达到K份消息碎片时,节点Pi即可利用shamir秘密分享算法,根据所收集到的消息碎片恢复出签名消息Mk。这样节点Pj便持有所有的节点P1至PN所生成的签名消息M1至MN。
从而,由于第i个节点并不是直接接收其他节点生成的签名消息,而是收集其他节点生成签名消息的消息碎片,然后利用消息碎片恢复签名消息。因此在数据的传输过程中,避免了信息被篡改和操纵的情况,从而使得随机数的生成不可操纵。此外以上操作也减少了拒绝服务攻击和被其他节点提前获知随机数的可能性。
此外,第i个节点从其他节点接收分别与其他签名消息对应的消息碎片的操作之前,还包括:N个节点中的每个节点执行以下操作:每个节点根据生成的签名消息生成N个消息碎片并且将N个消息碎片中的(N-1)个消息碎片发送至其他(N-1)个节点;每个节点从其他(N-1)个节点接收分别由其他(N-1)个节点生成并分配至每个节点的消息碎片,并且在收集齐分别由其他(N-1)个节点生成并且分配至每个节点的消息碎片的情况下,向其他(N-1)个节点广播确认信息;以及每个节点在收集到预定数量的确认信息的情况下,向其他(N-1)个节点广播每个节点所存有的消息碎片。
具体地,正如图4中步骤S408至步骤S416所示出的。节点Pi根据签名消息Mi生成N份消息碎片shareij(1≤j≤N)。然后,节点Pi例如可以通过某种安全的方式或安全的信道将消息碎片shareij分别发送给对应的节点Pj。同时,节点Pi分别从其他节点Pj接收其他节点Pj发送的消息碎片shareji(1≤j≤N)。并且,当节点Pi集齐上述的N份消息碎片shareji(1≤j≤N)时,则向其他节点广播确认信息ACK。同时节点Pi会收集其他节点发送的确认信息。当节点Pi集齐不少于K份(包括自己发出的)确认信息ACK时,则将该节点Pi所存有的所有消息碎片shareji(1≤j≤N)在区块链系统中明文广播,从而其他节点均能够接收到Pi广播的消息碎片。并且由于其他节点也广播自己所持有的消息碎片,因此节点Pi也接收其他节点广播的消息碎片。
从而,通过这种方式,进一步增强了随机数产生过程的不可操纵性,只要该过程中有节点收集到错误的消息碎片,或者消息碎片无法恢复出签名消息,都会导致报错。因此,增加了外界操纵随机数生成过程的难度,从而使得生成的随机数更加可信。
此外,可选地,第i个节点利用私钥至少对公共信息进行签名生成签名消息的操作,包括:第i个节点利用私钥对公共信息以及请求信息进行签名生成签名消息,其中请求信息为用于指示区块链系统中的相关节点所接收的请求获取随机数的获取请求的信息;并且其他签名消息为其他节点利用私钥对公共信息以及各自的请求信息进行签名生成的签名消息。
具体地,如上面所述,当服务器300的经营者,例如游戏厂商使用区块链系统400提供的随机数进行抽奖时,在某轮抽奖中,即使厂商声称使用了最新的第T轮的结果,玩家也无法验证如下厂商作弊的情况:
厂商获取最新的第T轮的随机数结果后,可能会对此结果不满意,从而会继续从区块链系统400获取后面几轮的随机数结果,例如第T+1轮的随机数结果。然后厂商对玩家谎称该结果为第T轮的随机数结果,从而通过作弊的方式欺骗玩家。
为了避免这种情形的发生,如上面所述,区块链系统400在提供随机数时,会将获取的所有请求信息也提供给服务器300或终端设备200。从而用户101可以利用请求信息对服务器300公布的随机数的真实性进行验证。
在图4所示的步骤S406中,节点Pi不是仅仅对生成的公共信息GN进行签名,而是将公共信息以及获得的所有请求随机数的获取请求的请求信息进行签名,即对公共信息和所有的请求信息进行签名生成签名消息。这样当区块链系统400生成第T+1轮的随机数时,各个节点会将请求第T+1轮的随机数的请求信息也签名从而生成签名消息。这样签名消息中实际上包含了第T+1轮随机数的请求信息。
从而当区块链系统400的节点在利用采集的消息碎片恢复签名消息后,可以利用公钥对签名消息进行验证并且获取各个节点所接收的全部请求信息。从而区块链系统400在通过节点向服务器300或终端设备200返回结果随机数时,会将所有的请求信息一起返回。这样可以防止游戏厂商进行作弊。
例如,即使游戏厂商宣称是第T轮的随机数,但是由于公布的请求信息中包含了对第T+1轮的随机数的请求信息,因此用户可以通过从区块链系统400获取的请求信息判定厂商存在作弊行为。
从而,通过本实施例的方法,由于所采用的公共信息为区块链系统400的节点P1至PN根据预定的相同规则以及轮次数值生成的信息,因此各个节点P1至PN产生的公共信息都是相同的。从而当基于该公共信息产生随机数时,这个过程不易为外人所操纵,从而具有不可操纵性。
并且,由于随机数是基于各个节点P1至PN利用各自的私钥签名的签名消息产生的,因此当产生的随机数进行公布时,可以利用各个节点P1至PN的公钥进行验证。
因此本实施例的方法提供了一种生成随机数的方法,其具有不可操纵性以及可验证性。从而解决了现有技术中的技术问题。
此外,根据本实施例的第二个方面,提供了一种获取随机数的方法,该方法有图2中的终端200执行。图11示出了该方法的流程图。参考图11所示,该方法包括:
S1102:向服务器发送获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;
S1104:从服务器接收在预定轮次由区块链系统中的节点生成的随机数;以及
S1106:显示所接收的随机数。
参考上面所述,由于本实施例中的终端200获取的是区块链系统中的节点生成的随机数,因此所生成的随机数具有不可操纵性和可验证性。从而使得获取的随机数更加可信。
此外,可选地,从服务器接收在预定轮次由区块链系统中的节点生成的随机数的操作,还包括从服务器接收在预定轮次由区块链系统中的节点接收的请求获取随机数的获取请求的信息。并且,方法还包括:向区块链系统的节点发送获取随机数的请求;从该节点获取预定轮次的随机数以及由区块链系统的节点接收的请求获取随机数的获取请求的信息;以及利用从区块链的节点接收的获取请求的信息验证从服务器接收的获取请求的信息。
从而如上所述,通过这种方式,可以有效地防止服务器300的经营者,例如游戏厂商等进行作弊行为。
此外,可选地,终端200还自行生成密钥对,并对外公布公钥。当终端200需要请求随机数时,使用私钥签名一个包含时间戳的请求信息,并将请求信息、时间戳和签名发送给随机数生成装置的任一节点。此外,根据本实施例的第三个方面,提供了一种提供随机数的方法,该方法由图2中所示的服务器300实现。图12示出了该方法的流程示意图,参考图12所示,该方法包括:
S1202:从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;
S1204:向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;
S1206:从区块链系统接收在预定轮次生成的随机数;以及
S1208:将在预定轮次生成的随机数发送至终端。
从而正如上面所述,由于本实施例中获取的随机数为区块链系统400在预定轮次生成的随机数,因此所生成的随机数具有不可操纵性和可验证性。
此外,可选地,从区块链系统接收在预定轮次生成的随机数的操作,包括:从区块链系统接收在预定轮次生成的随机数以及请求信息,其中请求信息包括区块链系统所接收的请求获取随机数的获取请求,以及将在预定轮次生成的随机数发送至终端的操作,包括:将在预定轮次生成的随机数以及请求信息发送至终端。
从而正如上面所述,通过这样的设置,可以防止游戏厂商、博彩公司等在随机数的生成过程中进行作弊行为,从而增强了随机数的可信度。
因此,综上所述,本实施例的技术方案提供了一种生成随机数的方法,其具有不可操纵性以及可验证性。从而解决了现有技术中的技术问题。
此外,参考图2所示,根据本实施例的第四个方面,提供了一种供随机数的系统,包括服务器300和区块链系统400。其中服务器300与区块链系统400中的节点通信连接。
其中,服务器300配置用于执行以下操作:从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;从区块链系统接收在预定轮次生成的随机数;以及将在预定轮次生成的随机数发送至终端。并且区块链系统中的第i个节点配置用于执行以下操作:从服务器接收第二获取请求;根据预定轮次的轮次数值生成公共信息,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;利用私钥至少对公共信息进行签名生成签名消息;从区块链系统的其他节点获取其他签名消息,其中其他签名消息为其他节点利用私钥至少对公共信息进行签名生成的签名消息;第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
此外,关于服务器300和区块链系统400中的第i个节点的进一步的操作,可以参考前面所述的内容,此处不再赘述。
此外,参考图1所示,根据本实施例的第四个方面,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
并且,下面进一步对本实施例的方案做出进一步的补充描述:
1.关于节点的整体结构:
图13示出了一个节点的结构的示意图。其中,
配置解析模块在节点启动时读取配置文件并对管理模块和网络模块进行配置
密码学模块实现了全部需要的密码学算法并提供接口给管理模块调用
网络模块接管所有的网络操作并对管理模块透明,仅提供接收和发送两个接口给管理模块调用,作用分别是接受一条消息(同步)和广播一条消息(异步)。
管理模块在密码学模块和网络模块的帮助下完成随机数生成算法的主要逻辑。
2.参与者与网络连接情况
共N个参与者(节点),每个节点均可接受来自其他节点的TCP连接,当节点A成功连接节点B,我们称之为AB之间直接连通(AB之间有一条边,AB互为邻居),网络连接目标是所有节点及边连成一个连通图。
3.消息广播的实现
洪泛的实现
当节点A需要广播消息M时,将M发送给它的所有邻居节点。
当节点A收到消息M时,先判断是否已经收到过此消息,若收到过则忽略该消息。如果没有收到过此消息,则执行以下步骤:1)传递到上层逻辑;2)将其标记为已收到过;3)将其转发至所有邻居。
最短路径树的实现
由于洪泛消息转发次数过多,网络部分瓶颈较大,为减少转发次数,采用最短路径树的转发方式,在此模式下,每次转发消息时仅转发给最短路径树上的邻居。
1.所有节点先采用洪泛方式将自己的邻居信息(边)广播给其他节点;
2.每个节点收到图中所有边信息之后运行最短路径树算法计算得到以自己为起点的最短路径树,其中边权可以综合考虑RTT、带宽等,本实现中边权统一为1;
3.计算完最短路径树之后将本节点的广播方式切换为最短路径树模式。
4.配置文件内容(每个节点启动之前需要知道的信息)
5.密码学相关
ECDSA
本实现中签名和验证部分全部使用ECDSA,曲线为secp256r1,选此曲线的考虑是OpenSSL对此曲线有加速,快于其他曲线。
ECDH
ECDH是基于ECC(椭圆曲线密码体制)的DH(Diffie-Hellman)密钥交换算法。交换双方可以在不共享任何秘密的情况下协商出同一对称加密密钥。
6.主算法流程
准备工作
1.解析配置文件并根据配置文件完成初始化
2.等待其他节点就绪
3.将消息广播模式从洪泛切换到最短路径树模式
如何确定所有节点已就绪
1.首先成功连接所有自己需要主动连接的节点;
2.开始每两秒广播消息Sync(1,0),表示“我已上线但我未就绪”;
3.不断接收消息,当收到其他所有节点的上线消息之后停止广播Sync(1,0);
4.开始每两秒广播消息Sync(1,1),表示“我已上线且我已就绪”;
5.不断接受消息,直到收到其他所有节点的就绪消息,则所有节点已全部就绪。
随机数生成
1.从Random Oracle获取Hi,转移至第3步;
2.使用生成的最后一个随机数作为Hi;
3.对Hi签名得到签名消息mySig;
4.使用Shamir秘密分享算法将mySig分成N份碎片shares[N];
5.对于每份碎片share,将share签名得到shareSig,将share使用对应节点对的ECDH Key进行加密得到shareCipher,广播Share(shareCipher,shareSig);
6.不断接收消息Share(shareCipher,shareSig),判断是否是属于我的share,若是,则使用对应的ECDH Key对shareCipher解密得到一份sharePlain,并进行验签操作,若无法通过验签则转12;
7.当获取到全部N份sharePlains[N],广播Ack(timestamp,sign(timestamp))表示我已收到全部属于我的share;
8.不断接收Ack消息(同样需要验证签名),当收到超过N/2个Ack消息时,将自己手中的全部sharePlain广播(同样需要带上签名);
9.不断接收sharePlain消息(同样需要验证签名),当收集超过N/2个来自同一节点的share时,使用Shamir秘密分享算法恢复出Sig[i]
10.凑齐所有的N份Sig时,将所有Sig和一个伪随机数异或得到512比特位随机数
11.重复步骤2-10之后转1
12.如果签名验证失败,此时可能出现拜占庭错误,立即停止随机数生成(并运行BFT。
从而,根据以上方案可以增强随机数生成过程中的不可操纵性以及可验证性。从而,增强所产生的随机数的可信度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图14示出了根据本实施例的第一个方面所述的生成预定轮次的随机数的装置1400,该装置1400与根据实施例1的第一个方面所述的方法相对应。参考图14所示,该装置1400包括:
公共信息生成模块1410,用于通过区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息,其中第i个节点为区块链系统所包括的N个节点中的一个节点,其中i和N为自然数且i≤N,并且公共信息为区块链系统中的节点根据预定的相同规则以及轮次数值生成的信息;
签名消息生成模块1420,用于通过第i个节点利用私钥至少对公共信息进行签名生成签名消息;
签名消息获取模块1430,用于通过第i个节点从区块链系统的其他节点获取其他签名消息,其中其他签名消息为区块链系统的其他节点利用私钥至少对公共信息进行签名生成的签名消息;以及
第一随机数生成模块1440,用于通过第i个节点利用第i个节点的签名消息和其他签名消息生成第一随机数,并将第一随机数作为预定轮次的随机数。
可选地,第一随机数生成模块1440包括:第二随机数生成子模块,用于通过第i个节点将第i个节点的签名消息与其他签名消息进行异或运算生成第二随机数;以及第一随机数生成子模块,用于通过第i个节点将第二随机数与预定的伪随机数序列中与预定轮次对应的随机数进行异或运算,生成第一随机数作为预定轮次的随机数。
可选地,签名消息获取模块1430包括:消息碎片获取子模块,用于通过第i个节点从其他节点接收分别与其他签名消息对应的消息碎片,其中消息碎片是由节点根据签名消息生成的信息碎片;以及签名消息生成子模块,用于通过第i个节点根据所接收的消息碎片生成其他签名消息。
可选地,消息碎片获取子模块,还包括执行单元,用于在第i个节点从其他节点接收分别与其他签名消息对应的消息碎片的操作之前,通过N个节点中的每个节点执行以下操作:每个节点根据生成的签名消息生成N个消息碎片并且将N个消息碎片中的(N-1)个消息碎片发送至其他(N-1)个节点;每个节点从其他(N-1)个节点接收分别由其他(N-1)个节点生成并分配至每个节点的消息碎片,并且在收集齐分别由其他(N-1)个节点生成并且分配至每个节点的消息碎片的情况下,向其他(N-1)个节点广播确认信息;以及每个节点在收集到预定数量的确认信息的情况下,向其他(N-1)个节点广播每个节点所存有的消息碎片。
可选地,签名消息生成模块1420包括签名消息生成子模块,用于通过第i个节点利用私钥对公共信息以及请求信息进行签名生成签名消息,其中请求信息为用于指示区块链系统中的相关节点所接收的请求获取随机数的获取请求的信息。并且,其他签名消息为其他节点利用私钥对公共信息以及各自的请求信息进行签名生成的签名消息。
图15示出了根据本实施例第二个方面所述的获取随机数的装置1500的示意图,该装置1500与实施例1中的第二个方面所述的方法对应。参考图15所示,该装置1500包括:
第一获取请求发送模块1510,用于向服务器发送获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;
随机数接收模块1520,用于从服务器接收在预定轮次由区块链系统中的节点生成的随机数;以及
随机数显示模块1530,用于显示所接收的随机数。
此外,图16示出了根据本实施例第三个方面所述的提供随机数的装置1600的示意图,该装置1600与实施例1中的第三个方面所述的方法对应。参考图16所示,该装置1600包括:
第一获取请求接收模块1610,用于从终端接收获取随机数的第一获取请求,其中第一获取请求用于请求获取在预定轮次生成的随机数;
第二获取请求发送模块1620,用于向区块链系统发送第二获取请求,其中第二获取请求用于请求获取区块链系统在预定轮次生成的随机数;
随机数接收模块1630,用于从区块链系统接收在预定轮次生成的随机数;以及
随机数发送模块1640,用于将在预定轮次生成的随机数发送至终端。
可选地,随机数接收模块1630包括:随机数及请求信息接收子模块,用于从区块链系统接收在预定轮次生成的随机数以及请求信息,其中请求信息包括区块链系统所接收的请求获取随机数的获取请求,以及随机数发送模块1640包括:随机数及请求信息发送子模块,用于将在预定轮次生成的随机数以及请求信息发送至终端。
从而根据本实施例的技术方案生成的随机数具有不可操纵性以及可验证性,从而解决了现有技术中的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种生成预定轮次的随机数的方法,其特征在于,包括:
区块链系统的第i个节点根据预定轮次的轮次数值生成公共信息,其中所述第i个节点为区块链系统所包括的N个节点中的一个节点,其中i和N为自然数且i≤N,并且所述公共信息为所述区块链系统中的节点根据预定的相同规则以及所述轮次数值生成的信息;
所述第i个节点利用私钥至少对所述公共信息进行签名生成签名消息;
所述第i个节点从所述区块链系统的其他节点获取其他签名消息,其中所述其他签名消息为所述区块链系统的其他节点利用私钥至少对所述公共信息进行签名生成的签名消息;以及
所述第i个节点利用所述第i个节点的签名消息和所述其他签名消息生成第一随机数,并将所述第一随机数作为所述预定轮次的随机数。
2.根据权利要求1所述的方法,其特征在于,所述第i个节点利用所述第i个节点的签名消息和所述其他签名消息生成第一随机数的操作,包括:
所述第i个节点将所述第i个节点的签名消息与所述其他签名消息进行异或运算生成第二随机数;以及
所述第i个节点将所述第二随机数与预定的伪随机数序列中与所述预定轮次对应的随机数进行异或运算,生成所述第一随机数作为所述预定轮次的随机数。
3.根据权利要求1所述的方法,其特征在于,所述第i个节点从所述区块链系统的其他节点获取其他签名消息的操作,包括:
所述第i个节点从所述其他节点接收分别与所述其他签名消息对应的消息碎片,其中消息碎片是由节点根据签名消息生成的信息碎片;以及
所述第i个节点根据所接收的消息碎片生成所述其他签名消息。
4.根据权利要求3所述的方法,其特征在于,所述第i个节点从所述其他节点接收分别与所述其他签名消息对应的消息碎片的操作之前,还包括:
所述N个节点中的每个节点执行以下操作:
所述每个节点根据生成的签名消息生成N个消息碎片并且将N个消息碎片中的(N-1)个消息碎片发送至其他(N-1)个节点;
所述每个节点从所述其他(N-1)个节点接收分别由所述其他(N-1)个节点生成并分配至所述每个节点的消息碎片,并且在收集齐分别由所述其他(N-1)个节点生成并且分配至所述每个节点的消息碎片的情况下,向所述其他(N-1)个节点广播确认信息;以及
所述每个节点在收集到预定数量的确认信息的情况下,向所述其他(N-1)个节点广播所述每个节点所存有的消息碎片。
5.根据权利要求1所述的方法,其特征在于,
所述第i个节点利用私钥至少对所述公共信息进行签名生成签名消息的操作,包括:所述第i个节点利用私钥对所述公共信息以及请求信息进行签名生成签名消息,其中请求信息为用于指示所述区块链系统中的相关节点所接收的请求获取随机数的获取请求的信息;并且
所述其他签名消息为其他节点利用私钥对所述公共信息以及各自的请求信息进行签名生成的签名消息。
6.一种获取随机数的方法,其特征在于,包括:
向服务器发送获取随机数的第一获取请求,其中所述第一获取请求用于请求获取在预定轮次生成的随机数;
从所述服务器接收在所述预定轮次由区块链系统中的节点生成的随机数;以及
显示所接收的随机数。
7.一种提供随机数的方法,其特征在于,包括:
从终端接收获取随机数的第一获取请求,其中所述第一获取请求用于请求获取在预定轮次生成的随机数;
向区块链系统发送第二获取请求,其中所述第二获取请求用于请求获取所述区块链系统在所述预定轮次生成的随机数;
从所述区块链系统接收在所述预定轮次生成的随机数;以及
将在所述预定轮次生成的随机数发送至所述终端。
8.根据权利要求7所述的方法,其特征在于,
从所述区块链系统接收在所述预定轮次生成的随机数的操作,包括:从所述区块链系统接收在所述预定轮次生成的随机数以及请求信息,其中所述请求信息包括所述区块链系统所接收的请求获取随机数的获取请求,以及
将在所述预定轮次生成的随机数发送至所述终端的操作,包括:将在所述预定轮次生成的随机数以及所述请求信息发送至所述终端。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至8中任意一项所述的方法。
10.一种提供随机数的系统,包括服务器(300)和区块链系统(400),其中所述服务器(300)与所述区块链系统(400)中的节点通信连接,其特征在于,
所述服务器(300)配置用于执行以下操作:
从终端接收获取随机数的第一获取请求,其中所述第一获取请求用于请求获取在预定轮次生成的随机数;
向区块链系统发送第二获取请求,其中所述第二获取请求用于请求获取所述区块链系统在所述预定轮次生成的随机数;
从所述区块链系统接收在所述预定轮次生成的随机数;以及
将在所述预定轮次生成的随机数发送至所述终端,并且
所述区块链系统中的第i个节点配置用于执行以下操作:
从所述服务器接收所述第二获取请求;
根据预定轮次的轮次数值生成公共信息,并且所述公共信息为所述区块链系统中的节点根据预定的相同规则以及所述轮次数值生成的信息;
利用私钥至少对所述公共信息进行签名生成签名消息;
从所述区块链系统的其他节点获取其他签名消息,其中所述其他签名消息为其他节点利用私钥至少对所述公共信息进行签名生成的签名消息;
所述第i个节点利用所述第i个节点的签名消息和所述其他签名消息生成第一随机数,并将所述第一随机数作为所述预定轮次的随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811446707.XA CN109617679B (zh) | 2018-11-29 | 2018-11-29 | 生成、获取以及提供随机数的方法、系统以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811446707.XA CN109617679B (zh) | 2018-11-29 | 2018-11-29 | 生成、获取以及提供随机数的方法、系统以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617679A true CN109617679A (zh) | 2019-04-12 |
CN109617679B CN109617679B (zh) | 2021-10-22 |
Family
ID=66005075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811446707.XA Active CN109617679B (zh) | 2018-11-29 | 2018-11-29 | 生成、获取以及提供随机数的方法、系统以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109617679B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110113173A (zh) * | 2019-05-20 | 2019-08-09 | 上海链朗信息科技有限公司 | 多输入且可验证的伪随机数的生成方法 |
CN110213059A (zh) * | 2019-06-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
CN110445603A (zh) * | 2019-06-28 | 2019-11-12 | 成都鹰翔天际科技有限公司 | 一种去中心化随机数生成方法 |
CN110457006A (zh) * | 2019-07-22 | 2019-11-15 | 上海朝夕网络技术有限公司 | 一种基于硬件的分布式多方随机数生成方法及系统 |
CN110515591A (zh) * | 2019-08-05 | 2019-11-29 | 湖南天河国云科技有限公司 | 基于区块链的随机数生成方法及装置 |
CN110780848A (zh) * | 2019-10-16 | 2020-02-11 | 上海链度科技有限公司 | 基于区块链分布式随机过程的双随机生成方法和监管系统 |
CN114493593A (zh) * | 2022-01-26 | 2022-05-13 | 电子科技大学 | 多区块链隐蔽通信方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301546A (zh) * | 2017-05-03 | 2017-10-27 | 北京众享比特科技有限公司 | 随机数生成和应用方法及装置 |
JP2018005702A (ja) * | 2016-07-06 | 2018-01-11 | 日本電気株式会社 | 乱数生成装置、乱数生成方法、および乱数生成プログラム |
CN108306732A (zh) * | 2018-04-20 | 2018-07-20 | 北京数字认证股份有限公司 | 一种随机数生成方法、相关设备及系统 |
CN108768647A (zh) * | 2018-08-04 | 2018-11-06 | 深圳市汇尊区块链技术有限公司 | 一种区块链的随机数产生方法和系统 |
-
2018
- 2018-11-29 CN CN201811446707.XA patent/CN109617679B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018005702A (ja) * | 2016-07-06 | 2018-01-11 | 日本電気株式会社 | 乱数生成装置、乱数生成方法、および乱数生成プログラム |
CN107301546A (zh) * | 2017-05-03 | 2017-10-27 | 北京众享比特科技有限公司 | 随机数生成和应用方法及装置 |
CN108306732A (zh) * | 2018-04-20 | 2018-07-20 | 北京数字认证股份有限公司 | 一种随机数生成方法、相关设备及系统 |
CN108768647A (zh) * | 2018-08-04 | 2018-11-06 | 深圳市汇尊区块链技术有限公司 | 一种区块链的随机数产生方法和系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110113173A (zh) * | 2019-05-20 | 2019-08-09 | 上海链朗信息科技有限公司 | 多输入且可验证的伪随机数的生成方法 |
CN110113173B (zh) * | 2019-05-20 | 2022-01-21 | 上海链朗信息科技有限公司 | 多输入且可验证的伪随机数的生成方法 |
CN110213059B (zh) * | 2019-06-20 | 2021-07-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
CN110213059A (zh) * | 2019-06-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
CN110445603A (zh) * | 2019-06-28 | 2019-11-12 | 成都鹰翔天际科技有限公司 | 一种去中心化随机数生成方法 |
CN110445603B (zh) * | 2019-06-28 | 2022-08-26 | 成都鹰翔天际科技有限公司 | 一种去中心化随机数生成方法 |
CN110457006A (zh) * | 2019-07-22 | 2019-11-15 | 上海朝夕网络技术有限公司 | 一种基于硬件的分布式多方随机数生成方法及系统 |
CN110457006B (zh) * | 2019-07-22 | 2021-08-06 | 上海朝夕网络技术有限公司 | 一种基于硬件的分布式多方随机数生成方法及系统 |
CN110515591A (zh) * | 2019-08-05 | 2019-11-29 | 湖南天河国云科技有限公司 | 基于区块链的随机数生成方法及装置 |
CN110780848A (zh) * | 2019-10-16 | 2020-02-11 | 上海链度科技有限公司 | 基于区块链分布式随机过程的双随机生成方法和监管系统 |
CN110780848B (zh) * | 2019-10-16 | 2023-05-12 | 上海链度科技有限公司 | 基于区块链分布式随机过程的双随机生成方法和监管系统 |
CN114493593A (zh) * | 2022-01-26 | 2022-05-13 | 电子科技大学 | 多区块链隐蔽通信方法 |
CN114493593B (zh) * | 2022-01-26 | 2023-05-30 | 电子科技大学 | 多区块链隐蔽通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109617679B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109617679B (zh) | 生成、获取以及提供随机数的方法、系统以及存储介质 | |
CN107959656B (zh) | 数据安全保障系统及方法、装置 | |
CN102170352B (zh) | 使用具有温特尼茨单次签名的ecdsa的方法 | |
US11223486B2 (en) | Digital signature method, device, and system | |
US20150317481A1 (en) | System and device for verifying the integrity of a system from its subcomponents | |
CN109905877B (zh) | 通信网络系统的消息验证方法、通信方法和通信网络系统 | |
JP2005515715A (ja) | データ伝送リンク | |
WO2019093478A1 (ja) | 鍵交換装置、鍵交換システム、鍵交換方法、及び鍵交換プログラム | |
CN109951276A (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
Zhu | Secure Chaotic Maps-based Group Key Agreement Scheme with Privacy Preserving. | |
CN116391346A (zh) | 秘密分享的重新分发 | |
Niu et al. | A novel user authentication scheme with anonymity for wireless communications | |
US20220038267A1 (en) | Methods and devices for secured identity-based encryption systems with two trusted centers | |
US20190294417A1 (en) | Method and system for deriving deterministic prime number | |
CN113162915B (zh) | 基于区块链的交易方法、节点、电子设备、介质和系统 | |
CN108933659A (zh) | 一种智能电网的身份验证系统及验证方法 | |
Viejo et al. | Asymmetric homomorphisms for secure aggregation in heterogeneous scenarios | |
Tseng et al. | A robust user authentication scheme with self‐certificates for wireless sensor networks | |
KR20120039133A (ko) | 인증정보를 생성하고 인증정보를 증명하는 장치 및 방법 | |
CN114430318A (zh) | 一种消息发布方法、装置和存储介质 | |
EP3361670B1 (en) | Multi-ttp-based method and device for verifying validity of identity of entity | |
CN105141620A (zh) | 无线传感网安全及可抵御拒绝服务攻击的小数据分发方法 | |
Lee et al. | Toward a secure single sign-on mechanism for distributed computer networks | |
Błaśkiewicz et al. | Digital signatures for e-government-a long-term security architecture | |
US11228589B2 (en) | System and method for efficient and secure communications between devices |
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 |