可验证随机数的生成方法和装置制造方法及图纸

技术编号:25446120 阅读:31 留言:0更新日期:2020-08-28 22:32
本申请提供一种可验证随机数的生成方法和装置,应用于区块链系统中的任意一个节点,在获得一次随机数生成过程的随机数种子池之后,向区块链系统中的计算节点提供随机数种子池和时间参数,使各个计算节点利用可验证延迟函数在时间参数所指定的时刻之后计算得到随机数结果,然后向目标客户端反馈随机数结果。可验证延迟函数能够确保通过该函数获得的计算结果无法在指定的时刻之前被预测得到,因此,利用可验证延迟函数产生随机数结果,可以防止攻击者通过预测随机数结果的方式控制随机数生成过程,从而确保随机数生成过程的安全性。

【技术实现步骤摘要】
可验证随机数的生成方法和装置
本专利技术涉及信息安全
,特别涉及一种可验证随机数的生成方法和装置。
技术介绍
在加密通信、线上抽签和区块链节点等多个领域,随机数的生成都处于至关重要的地位。在这些需要应用随机数的领域中,随机数生成过程的随机性和公平性会直接影响参与该领域活动的用户体验。例如,在权益证明(Proof-of-Stake,PoS)、委托权益证明(DelegatedProof-of-Stake,DPoS)等共识协议中,随机数用于节点选举,决定了每个参与用户的记账权和收益权;在支持智能合约的区块链平台中,基于智能合约的客户端则通过生成随机数来保障服务规则的公平,直接决定用户收益。因此,包括计算机黑客,不诚信用户(指不按规则参与相关活动的用户)在内的攻击者常常会通过攻击随机数的生成过程来破坏上述领域的活动。目前的随机数生成过程一般依赖于参与活动的多个用户提供随机数种子作为输入,然后随机数生成系统基于所有用户的随机数种子计算得到随机数。对这一过程的一种攻击方式是,攻击者在生成随机数种子之后,根据自身生成的随机数种子和其他诚信用户提交(指依据规则正常参与相关活动的用户)的随机数种子预测本次生成的随机数的数值,若预测的数值不利于自身,则延迟向系统提交自身的随机数种子,从而改变输出的数值,通过这种方式控制随机数生成的结果倾向于对自身有利。综上所述,在以上依赖于随机数生成过程的领域,如何防止攻击者对随机数生成过程的结果进行操作,是一个亟需解决的问题。
技术实现思路
基于上述现有技术的问题,本申请提供一种可验证随机数的生成方法和装置,以提供一种可以防止对随机数生成过程控制的可验证随机数生成方案。本申请提供一种可验证随机数的生成方法,应用于区块链系统中的任意一个节点,所述生成方法包括:获取每一个目标客户端提交的随机数种子;其中,每个所述目标客户端提交的随机数种子均记录于所述区块链系统的区块链中,所有所述随机数种子的集合作为一次随机数生成过程的随机数种子池,所述目标客户端指代参与所述一次随机数生成过程的客户端;生成所述一次随机数生成过程的时间参数,安全参数和计算结果接收地址,并将所述时间参数,所述安全参数,所述计算结果接收地址和所述随机数种子池组合得到随机数生成请求;向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,以使得每一个接收所述随机数生成请求的所述计算节点均通过可验证延迟函数计算所述随机数种子池,得到所述一次随机数生成过程的随机数结果;其中,每一个所述计算节点得到所述随机数结果的时刻均不早于所述时间参数所指定的时刻;获得所述任意一个所述计算节点反馈的所述随机数结果,并将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。可选的,所述获得所述任意一个所述计算节点反馈的所述随机数结果之后,还包括:将所述时间参数,所述一次随机数生成过程的随机数结果和随机数种子池记录在所述一次随机数生成过程对应的区块内;在所述区块链系统的区块链上接入所述一次随机数生成过程对应的区块。可选的,所述将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端之前,还包括:基于所述可验证延迟函数对应的验证算法,检验所述随机数结果是否为基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果;若所述随机数结果不是基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果,则丢弃所述随机数结果,并对反馈所述随机数结果的计算节点执行预设的惩罚操作;其中,若所述随机数结果是基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果,则将所述随机数结果反馈给每一个所述目标客户端。可选的,所述将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端之前,还包括:检测反馈所述随机数结果的所述计算节点的地址是否为预先指定的合法反馈地址;其中,所述合法反馈地址通过所述计算节点预先向所述第二检测单元注册的方式确定;若反馈所述随机数结果的所述计算节点的地址不是所述合法反馈地址,丢弃所述随机数结果;其中,若反馈所述随机数结果的所述计算节点的地址是所述合法反馈地址,将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。可选的,所述生成所述一次随机数生成过程的时间参数和安全参数,并将所述时间参数、所述安全参数和所述随机数种子池组合得到随机数生成请求,包括:调用第一智能合约以进行初始化操作,得到所述一次随机数生成过程的时间参数,安全参数和计算结果接收地址;其中,所述第一智能合约用于为每一个所述目标客户端提供上传随机数种子的接口;通过第二智能合约的接口将所述一次随机数生成过程的时间参数,安全参数,计算结果接收地址和所述随机数种子池传递于所述第三智能;其中,所述第二智能合约用于记录所述第三智能合约的合约地址;通过所述第三智能合约预设的数据格式,将所述一次随机数生成过程的时间参数,安全参数,计算结果接收地址和所述随机数种子池封装为随机数生成请求;其中,所述向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,包括:通过所述第三智能合约向所述区块链系统中预设的多个计算节点广播所述随机数生成请求。本申请还提供一种可验证随机数的生成装置,应用于区块链系统中的任意一个节点,所述生成装置包括:获取单元,用于获取每一个目标客户端提交的随机数种子;其中,每个所述目标客户端提交的随机数种子均记录于所述区块链系统的区块链中,所有所述随机数种子的集合作为一次随机数生成过程的随机数种子池,所述目标客户端指代参与所述一次随机数生成过程的客户端;生成单元,用于生成所述一次随机数生成过程的时间参数,安全参数计算结果接收地址,并将所述时间参数,所述安全参数,所述计算结果接收地址和所述随机数种子池组合得到随机数生成请求;广播单元,用于向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,以使得每一个接收所述随机数生成请求的所述计算节点均通过可验证延迟函数计算所述随机数种子池,得到所述一次随机数生成过程的随机数结果;其中,每一个所述计算节点得到随机数结果的时刻均不早于所述时间参数所指定的时刻;所述获取单元,用于获得所述任意一个所述计算节点反馈的所述随机数结果;反馈单元,用于将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。可选的,所述生成装置还包括:记录单元,用于将所述时间参数,所述一次随机数生成过程的随机数结果和随机数种子池记录在所述一次随机数生成过程对应的区块内,并用于在所述区块链系统的区块链上接入所述一次随机数生成过程对应的区块。可选的,所述生成装置还包括:第一检测单元,用于基于所述可验证延迟函数对应的验证算法,检验所述随机数结果是否为基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果;若所述随机数结果不是基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果,则本文档来自技高网...

【技术保护点】
1.一种可验证随机数的生成方法,其特征在于,应用于区块链系统中的任意一个节点,所述生成方法包括:/n获取每一个目标客户端提交的随机数种子;其中,每个所述目标客户端提交的随机数种子均记录于所述区块链系统的区块链中,所有所述随机数种子的集合作为一次随机数生成过程的随机数种子池,所述目标客户端指代参与所述一次随机数生成过程的客户端;/n生成所述一次随机数生成过程的时间参数,安全参数和计算结果接收地址,并将所述时间参数,所述安全参数,所述计算结果接收地址和所述随机数种子池组合得到随机数生成请求;/n向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,以使得每一个接收所述随机数生成请求的所述计算节点均通过可验证延迟函数计算所述随机数种子池,得到所述一次随机数生成过程的随机数结果;其中,每一个所述计算节点得到所述随机数结果的时刻均不早于所述时间参数所指定的时刻;/n获得所述任意一个所述计算节点反馈的所述随机数结果,并将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。/n

【技术特征摘要】
1.一种可验证随机数的生成方法,其特征在于,应用于区块链系统中的任意一个节点,所述生成方法包括:
获取每一个目标客户端提交的随机数种子;其中,每个所述目标客户端提交的随机数种子均记录于所述区块链系统的区块链中,所有所述随机数种子的集合作为一次随机数生成过程的随机数种子池,所述目标客户端指代参与所述一次随机数生成过程的客户端;
生成所述一次随机数生成过程的时间参数,安全参数和计算结果接收地址,并将所述时间参数,所述安全参数,所述计算结果接收地址和所述随机数种子池组合得到随机数生成请求;
向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,以使得每一个接收所述随机数生成请求的所述计算节点均通过可验证延迟函数计算所述随机数种子池,得到所述一次随机数生成过程的随机数结果;其中,每一个所述计算节点得到所述随机数结果的时刻均不早于所述时间参数所指定的时刻;
获得所述任意一个所述计算节点反馈的所述随机数结果,并将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。


2.根据权利要求1所述的生成方法,其特征在于,所述获得所述任意一个所述计算节点反馈的所述随机数结果之后,还包括:
将所述时间参数,所述一次随机数生成过程的随机数结果和随机数种子池记录在所述一次随机数生成过程对应的区块内;
在所述区块链系统的区块链上接入所述一次随机数生成过程对应的区块。


3.根据权利要求1所述的生成方法,其特征在于,所述将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端之前,还包括:
基于所述可验证延迟函数对应的验证算法,检验所述随机数结果是否为基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果;
若所述随机数结果不是基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果,则丢弃所述随机数结果,并对反馈所述随机数结果的计算节点执行预设的惩罚操作;
其中,若所述随机数结果是基于所述一次随机数生成过程的随机数种子池计算得到的随机数结果,则将所述随机数结果反馈给每一个所述目标客户端。


4.根据权利要求1所述的生成方法,其特征在于,所述将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端之前,还包括:
检测反馈所述随机数结果的所述计算节点的地址是否为预先指定的合法反馈地址;其中,所述合法反馈地址通过所述计算节点预先向所述第二检测单元注册的方式确定;
若反馈所述随机数结果的所述计算节点的地址不是所述合法反馈地址,丢弃所述随机数结果;
其中,若反馈所述随机数结果的所述计算节点的地址是所述合法反馈地址,将所述一次随机数生成过程的随机数结果反馈给每一个所述目标客户端。


5.根据权利要求1至4任意一项所述的生成方法,其特征在于,所述生成所述一次随机数生成过程的时间参数和安全参数,并将所述时间参数、所述安全参数和所述随机数种子池组合得到随机数生成请求,包括:
调用第一智能合约以进行初始化操作,得到所述一次随机数生成过程的时间参数,安全参数和计算结果接收地址;其中,所述第一智能合约用于为每一个所述目标客户端提供上传随机数种子的接口;
通过第二智能合约的接口将所述一次随机数生成过程的时间参数,安全参数,计算结果接收地址和所述随机数种子池传递于所述第三智能;其中,所述第二智能合约用于记录所述第三智能合约的合约地址;
通过所述第三智能合约预设的数据格式,将所述一次随机数生成过程的时间参数,安全参数,计算结果接收地址和所述随机数种子池封装为随机数生成请求;
其中,所述向所述区块链系统中预设的多个计算节点广播所述随机数生成请求,包括:
通过所述第三智能合约向所述区块链系统中预设的多个计算节点广播所述随机数生成请求。


6.一种可验证随机数的生成装置,其特征在于,应用于区块链系统中的任意...

【专利技术属性】
技术研发人员:雷虹任谦刘浛程一帆包子健燕云赵品行
申请(专利权)人:牛津海南区块链研究院有限公司
类型:发明
国别省市:海南;46

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1