一种基于硬件的分布式多方随机数生成方法及系统与流程

文档序号:19154790发布日期:2019-11-16 00:35阅读:318来源:国知局
一种基于硬件的分布式多方随机数生成方法及系统与流程

本发明属于密码学随机数生成技术领域,更具体地,涉及一种基于硬件的分布式多方随机数生成方法及系统。



背景技术:

随机数作为密码协议的基础,在计算机系统中被广泛使用。如何产生安全可信的随机数一直是学术界和工业界很活跃的话题。随机数包括真随机数和伪随机数,真随机数是使用物理现象产生的:比如使用物理器件的噪音、抖动,热噪声、量子现象等等,这些物理现象理论上是无法被控制的,因此产生的随机数具有不可预测性,这样的随机数发生器叫做物理性随机数发生器;传统的基于计算机硬件的随机数生成器可根据硬件的环境,如cpu电压、温度、时钟信号的抖动等因素由单一的生产者产生真随机数。伪随机数是由计算机或计算器产生的,是一种“近似”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。由于真随机数具有不可控、不可预知等优点,因此在信息安全等领域发挥着极为重要的作用。

随机源的质量决定了随机数的质量,目前真随机数的产生依赖于某一特定硬件芯片;虽然由于硬件随机源为不可控、不可预知的、不可重复,其产生的随机数具有真随机数性,但是硬件随机数产生器由于缺乏透明性、中心化和生产者的单一性,导致其产生的真随机数无法被验证,无法被验证进一步导致随机数不可信,即存在被私自篡改的可能性。



技术实现要素:

针对现有技术的至少一个缺陷或改进需求,本发明提供了一种基于硬件的分布式多方随机数生成方法及系统,不再单一依赖于某一特定硬件芯片,而是将每个硬件芯片产生的真随机数组合生成最终的随机数,组合生成的随机数继承了真随机数不可控、不可预知的、不可重复的优点;更重要的是,在存在恶意方的情况下,由于采用了在多方之间就随机数达成协议的机制,可防止恶意方私自篡改随机数,其目的在于解决现有技术中产生的真随机数无法被验证性的问题。

为实现上述目的,按照本发明的一个方面,提供了一种基于硬件的分布式多方随机数生成方法,包括以下步骤:

s1:将时间片划分为多个周期,在当前周期内对至少两个随机数生成节点进行排序;

s2:当前周期内的第一个随机数生成节点选择真随机数并将其广播至其他的随机数生成节点;

s3:当前随机数生成节点接收上一随机数生成节点广播的真随机数并进行验证,当验证通过后根据预置的组合规则将自身生成的真随机数与上一随机数生成节点广播的真随机数进行组合和签名,并广播签名后的真随机数至其他的随机数生成节点;各随机数生成节点遵循统一的组合规则对自身产生的真随机数与上一随机数生成节点广播的真随机数进行组合,该组合规则公开透明,便于快捷认证;

s4:重复步骤s3,直至当前周期内的最后一个随机数生成节点产生真随机数并验证通过,当前周期结束。

优选的,上述分布式多方随机数生成方法,其步骤s3中所述的验证还包括:除上一随机数生成节点之外的其他各随机数生成节点共同对上一随机数生成节点广播的真随机数进行全局验证。

优选的,上述分布式多方随机数生成方法,其他各随机数生成节点通过共识算法对上一随机数生成节点广播的真随机数进行验证,当不少于预设个数的随机数生成节点验证通过时,表示上一随机数生成节点广播的真随机数是正确的随机数。

优选的,上述分布式多方随机数生成方法,若上一随机数生成节点广播的真随机数验证未通过,则当前随机数生成节点选择上一随机数生成节点之前的随机数生成节点广播的真随机数与自身生成的真随机数进行组合。

优选的,上述分布式多方随机数生成方法,其步骤s3中所述的验证包括:对真随机数的签名进行验证,以及验证产生所述真随机数的随机数生成节点是否属于当前周期。

优选的,上述分布式多方随机数生成方法,其步骤s2中,若当前周期是第一个周期,则第一个随机数生成节点以自身生成的真随机数作为随机源;

若当前周期不是第一个周期,则第一个随机数生成节点从上一周期产生的真随机数中任意选择一个作为当前周期的随机源。

优选的,上述分布式多方随机数生成方法,随机数使用者可选择消费任一周期内的任一随机数生成节点生成的真随机数。

优选的,上述分布式多方随机数生成方法,随机数使用者选择当前周期内的最后一个随机数生成节点产生的真随机数作为最终的随机数结果。

按照本发明的另一个方面,还提供了一种基于硬件的分布式多方随机数生成系统,包括多个随机数生成节点,不同周期内具有至少两个按照一定的顺序排序的所述随机数生成节点;

当前周期内的第一个随机数生成节点选择真随机数并将其广播至其他的随机数生成节点;

当前随机数生成节点接收上一随机数生成节点广播的真随机数并进行验证,当验证通过后将自身生成的真随机数与上一随机数生成节点广播的真随机数进行组合并签名,并广播签名后的真随机数至其他的随机数生成节点,直至当前周期内的最后一个随机数生成节点产生真随机数并验证通过。

优选的,上述分布式多方随机数生成系统,每一个随机数生成节点包括:

硬件真随机数发生器,用于产生自身的真随机数;

加密模块,用于通过签名算法对硬件真随机数发生器产生的真随机数和/或随机数提取模块输出的真随机数进行签名;

网络通讯模块,用于将签名后的真随机数广播至其他随机数生成节点,并接收其他随机数生成节点广播的真随机数;

验证模块,用于通过共识算法对其他随机数生成节点广播的真随机数进行验证;

随机数提取模块,用于将其他随机数生成节点广播且验证通过的真随机数与硬件真随机数发生器产生的真随机数进行组合,作为最终产生的真随机数。

优选的,上述分布式多方随机数生成系统,所述的验证包括对所述真随机数的签名进行验证,以及验证产生该真随机数的随机数生成节点是否属于当前周期。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明提供的一种基于硬件的分布式多方随机数生成方法及系统,将多个随机数生成节点产生的真随机数通过预设的协议机制进行组合生成最终的随机数,有效的消除对单一的第三方的直接信任;在各随机数生成节点生成真随机数后要求签名,使其产生的随机数具有不可抵赖性;最终随机数的生成过程使用了每一个随机数生成节点产生的真随机数,进而增加了被恶意攻击者操纵的难度;由于组合协议机制公开透明,任何实体包括随机数的生产者或者消费者均可以验证最终随机数的正确性。

(2)本发明提供的一种基于硬件的分布式多方随机数生成方法及系统,每一个随机数生成节点生成的真随机数需要由其他随机数生成节点共同验证,这种全局验证的方式可有效防止两方串通对随机数的产生过程进行恶意操纵;

(3)本发明提供的一种基于硬件的分布式多方随机数生成方法及系统,任意一个随机数生成节点的输入来自于上一周期或上一节点产生的随机数,由于输入不由节点自己决定,因此增加了被恶意攻击者操纵的难度,提高了随机数结果的公正性;

(4)本发明提供的一种基于硬件的分布式多方随机数生成方法及系统,分布式多方随机数生成器具有高可用性,在部分硬件芯片受到攻击的情况下,依然能够产生安全有效的随机数。

附图说明

图1是本发明实施例提供的基于硬件的分布式多方随机数生成系统的组成结构示意图;

图2是本发明实施例提供的随机数生成节点的组成结构示意图;

图3是本发明实施例提供的基于硬件的分布式多方随机数生成方法的流程图;

图4是本发明实施例提供的随机数生成过程的示意图;

图5是本发明实施例提供的随机数使用调用的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

由于目前真随机数的产生主要依赖单一的硬件芯片,虽然生成的随机数具有真随机性,但是却无法被验证,导致产生的真随机数存在被恶意方私自篡改的可能性,使随机数的可信度降低。基于上述问题,本发明提供了一种基于硬件的分布式多方随机数生成方法及系统,将多个硬件芯片产生的真随机数组合生成最终的随机数,采用了在多方之间就随机数达成协议的机制,且协议机制公开透明,任何实体包括随机数的生产者或者消费者均可以验证最终随机数的正确性,增加了被恶意攻击者操纵的难度,可有效防止恶意方私自篡改随机数。

图1是本实施例提供的基于硬件的分布式多方随机数生成系统的组成结构示意图,如图1所示,该分布式多方随机数生成系统包括四个随机数生成节点,每一个随机数生成节点均可产生真随机数;在随机数的生成周期内,从这四个随机数生成节点中选取至少两个并进行排序,按照排序顺序依次生成随机数;其中,随机数的生成周期可根据用户需求自行设定,如设置为24小时、48小时、一周等,不同的随机数生成周期的时长可以相等或不等;

每一个随机数生成周期内的随机数生成节点不少于两个,具体的,当前周期内的第一个随机数生成节点选择真随机数并将其广播至其他的随机数生成节点;

当前随机数生成节点接收上一随机数生成节点广播的真随机数并进行验证,当验证通过后根据预置的组合规则将自身生成的真随机数与上一随机数生成节点广播的真随机数进行组合并签名,并广播签名后的真随机数至其他的随机数生成节点,直至当前周期内的最后一个随机数生成节点产生真随机数并验证通过,当前周期结束,进入下一周期。上述组合规则被预先设置,用于约束各随机数生成节点遵循统一的组合规则对自身产生的真随机数与上一随机数生成节点广播的真随机数进行组合,该组合规则公开透明,便于快捷认证;

图2是本实施例提供的随机数生成节点的组成结构示意图,如图2所示,每一个随机数生成节点包括硬件真随机数发生器、加密模块、网络通讯模块、随机数提取模块和验证模块;

其中,硬件真随机数发生器用于产生自身的真随机数,本实施例不限制硬件的类型和硬件生成随机数的具体方式,硬件可采用fpga、soc、mcu等,硬件可采用诸如电压、温度、时钟信号的抖动等任意一种或多种方式组合生成真随机数;

加密模块用于通过签名算法对硬件真随机数发生器产生的真随机数和/或随机数提取模块输出的真随机数进行签名;需要指出的是,硬件真随机数发生器产生的真随机数可以签名或者不签名,本实施例不作具体限制,用户可根据自身需要进行选择;但是随机数提取模块组合后输出的真随机数必须进行签名;签名具有不可抵赖性,并保证了真随机数的正确性,表明该真随机数确实是由正确要求的硬件产生;其中,对硬件真随机数发生器产生的真随机数进行签名是为了确保硬件真随机数发生器对其产生的真随机数具有不可抵赖性;对随机数提取模块组合后输出的真随机数进行签名是为了确保随机数提取模块按照规定的组合规则对自身产生的真随机数与上一随机数生成节点广播的真随机数进行组合,保证真随机数的正确性;本实施例不限制签名的具体方法,在实际中可选择诸如rsa、ecdsa、vrf等签名函数;

网络通讯模块用于将签名后的真随机数广播至其他随机数生成节点,并接收其他随机数生成节点广播的真随机数;

验证模块用于通过共识算法对接收的其他随机数生成节点生成的真随机数进行验证,包括对真随机数的签名进行验证,以及验证产生该真随机数的随机数生成节点是否属于当前周期;如果该随机数生成节点产生的真随机数经过两次签名,即对该随机数生成节点中的硬件真随机数发生器产生的真随机数以及随机数提取模块输出的真随机数均进行签名,相应的,对该真随机数进行验证时需要分别对上述两次签名进行验证,仅当两次签名均正确时才表明验证通过;本实施例不限制具体的共识算法,可以根据具体需求选择不同的共识算法,如拜占庭协议等。

当验证通过后,随机数提取模块用于将其他随机数生成节点广播的真随机数与本节点的硬件真随机数发生器产生的真随机数进行组合,作为最终产生的真随机数;组合后的生成的真随机数依然通过加密模块进行签名。

本实施例还提供了一种基于硬件的分布式多方随机数生成方法,该方法主要包括三个阶段:准备阶段、随机数生成阶段和使用阶段;

(1)准备阶段

各随机数生成节点中的硬件真随机数发生器产生真随机数并通过加密模块进行签名,确保随机源的正确性。

(2)随机数生成阶段

图3是本实施例提供的随机数生成阶段的流程图,如图3所示,包括以下步骤:

s1:将时间片划分为多个周期,对周期内的至少两个随机数生成节点进行排序;

本实施例对周期的时间选择和随机数生成节点的排序方式不做限制,可根据实际需求选择;不同周期内的随机数生成节点的数量可以相等或不等,如当前周期内包括4个随机数生成节点,下一周期内包括3个随机数生成节点,但是每一个周期内至少有2个随机数生成节点,图4中给出了以3个随机数节点为一个周期的示例。

s2:当前周期内的第一个随机数生成节点选择真随机数并进行签名,并广播签名后的真随机数至其他的随机数生成节点;

按照步骤s1中的排序顺序,当前周期内的第一个随机数生成节点选择任一随机数作为随机源并广播此随机源到下一个随机数节点;作为本实施例的一个优选,若当前周期是第一个周期,则第一个随机数生成节点以自身生成的真随机数作为随机源;

若当前周期不是第一个周期,则第一个随机数生成节点按照某一固定规则从上一周期产生的真随机数中任意选择一个作为当前周期的随机源;例如:参照图4,当前周期m+1中的随机源并非是第一个随机数节点n自身产生的真随机数,而是从上一周期m中产生的三个真随机数t、t+1、m中选择真随机数t来替换第一个随机数节点n自身产生的真随机数作为当前周期m+1的随机源;本实施例不对上述固定规则进行限制,仅限定当前周期的随机源必须从上一周期中产生的真随机数中选取,此限制主要是基于随机源的可验证性角度考虑而制定的,如果选取各周期内的第一个随机数生成节点产生的真随机数作为随机源,由于该真随机数具有不可预测和不可验证性,则不便于后续进行回溯;更重要的一点,各周期内的第一个随机数生成节点的输入来自于上一周期的随机数结果,由于输入不由节点自己决定,因此增加了被恶意攻击者操纵的难度,提高了随机数结果的公正性。

s3:当前随机数生成节点接收上一随机数生成节点广播的真随机数并进行验证,当验证通过后根据预置的组合规则将自身生成的真随机数与上一随机数生成节点广播的真随机数进行组合和签名,并广播签名后的真随机数至其他的随机数生成节点;

其中,对真随机数的验证除了包括对真随机数的签名进行的验证,还需要验证产生该真随机数的随机数生成节点是否属于当前周期;

作为本实施例的一个优选,除上一随机数生成节点之外的其他各随机数生成节点共同对上一随机数生成节点广播的真随机数进行全局验证,即其它各随机数生成节点与当前随机数生成节点共同对上一随机数生成节点广播的真随机数进行多方共同验证,可有效防止当前随机数生成节点与上一随机数生成节点串通,恶意操纵随机数的产生过程,增加双方作弊成本;

基于本实施例提供的全局验证法,其他各随机数生成节点通过共识算法对上一随机数生成节点广播的真随机数进行验证,当不少于预设个数的随机数生成节点验证通过时,表示上一随机数生成节点广播的真随机数是正确的随机数。一般来说,当超过50%的随机数生成节点验证通过,即默认上一随机数生成节点广播的真随机数是正确的随机数;本实施例不限制具体的共识算法,可以根据具体需求选择不同的共识算法,如拜占庭协议等;

如果上一随机数生成节点广播的真随机数验证未通过,则当前随机数生成节点选择上一随机数生成节点之前的随机数生成节点广播的真随机数与自身生成的真随机数进行组合;上一随机数生成节点之前的随机数生成节点优选为上一随机数生成节点的掐一个随机数生成节点,如图4所示,在周期m中,如果随机数节点n+1产生的真随机数经随机数节点n和随机数节点n+2共同验证后未通过,则随机数节点n+2舍弃随机数节点n+1产生的真随机数而选择随机数节点n广播的真随机数,将随机数节点n广播的真随机数与自身生成的真随机数进行组合并签名,作为本节点生成的最终随机数。

s4:重复步骤s3,直至当前周期内的最后一个随机数生成节点产生真随机数并验证通过,当前周期结束。

当前周期内的最后一个随机数生成节点产生真随机数被广播至其他的随机数生成节点,其他的随机数生成节点通过共识算法对最后一个随机数生成节点广播的真随机数进行验证,验证通过的真随机数即为本周期内产生的最终随机数;

s5:重复步骤s2-s4,进入下一周期的随机数生成过程。

(3)使用阶段

随机数使用者可选择消费任一周期内的任一随机数生成节点生成的真随机数;如图5所示,允许随机数的使用者使用周期之前产生的随机数(标号1),同时允许随机数的消费使用周期过程中的随机数(标号2),同时允许随机数的消费使用周期结果的随机数(标号3);对于每一个周期,周期内的最后一个随机数生成节点产生的真随机数具有最高的安全性,因此本实施例优选将当前周期内的最后一个随机数生成节点产生的真随机数作为最终结果提供给随机数使用者。

相比于现有的真随机数生成方法,本发明提供的一种基于硬件的分布式多方随机数生成方法及系统,将多个随机数生成节点产生的真随机数通过预设的协议机制进行组合生成最终的随机数,与单一随机数产生器相比,能够有效的消除对单一随机数生成节点的直接信任;最终随机数的生成过程使用了每一个随机数生成节点产生的所有数据,进而增加了被恶意攻击者操纵的难度;由于组合协议机制公开透明,任何实体包括随机数的生产者或者消费者均可以验证最终随机数的正确性;另外,本发明中的分布式多方随机数生成器具有高可用性,在部分随机数生成节点受到攻击的情况下,依然能够产生安全有效的随机数。本发明适用于社会福利分配、彩票、摇号、抽奖、抢购等随机应用领域,产生的随机数具有不可提前预知性、随机性、共识性和不可篡改性,确保了随机数的公平公正性;另外,由于组合协议机制公开透明,随机数的生产者或者消费者均可以验证最终随机数的正确性,这种可验证性有效防止了随机数被恶意方私自篡改,提高了随机数的可信性。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1