一种超高安全的随机数生成方法及系统。当用户需要一定数量的随机数时,其通过移动终端采集环境中的噪声做为熵放入熵池;当熵池中已经采集到足够数量的熵时,基于这些熵产生一定数量的真随机数,同时向操作系统内核发送内核态伪随机数请求;操作系统内核生成对应数量的内核态伪随机数;将该真随机数及该内核态伪随机数进行混合运算获得最终的随机数。通过本发明专利技术的方法和系统,可使用户简便、快捷、低成本地获得真正超高安全的真随机数。
【技术实现步骤摘要】
一种超高安全的真随机数生成方法及真随机数生成系统
本专利技术涉及一种超高安全的真随机数生成方法一极随机(XRAND0M),及实现该方法的真随机数生成系统,尤其是在计算机密码学领域中应用的随机数生成方法及随机数生成系统。
技术介绍
随着计算机技术和互联网、移动互联网的不断发展,人们在计算机和网络上存储的信息越来越重要、也越来越有价值,例如,比特币等密码学货币甚至已经开始成为人们的数字化虚拟资产,这就对数据安全提出了更高的要求。 随机数是密码学的基础之一,高品质的随机数对于数据安全至关重要。密码学中涉及的随机数相关概念主要有:随机数生成器(RNG:Random number generator),伪随机数生成器(PRNG: Pseudo Random Number Generator),真随机数生成器(TRNG: True RandomNumber Generator),硬件随机数生成器(HRNG: Hardware Random Number Generator)。随机数生成器是通过一些算法、物理讯号、环境噪音等来产生看起来似乎没有关联性的数列的方法或装置。丢硬币、丢骰子、洗牌就是生活上常见的随机数产生方式。计算机领域应用的随机数一般为伪随机数,并不是真正的随机数,只是重复的周期比较大的数列,是按一定的算法和种子值生成的。 现有的密码学技术解决方案通常依赖于操作系统内核态或应用态的伪随机数生成器,这些方案尽可能地做到密码学安全。不少安全专家会建议技术人员在设计软件时尽可能使用基于内核态的伪随机数生成器,来实现基于随机数的数据安全处理,这主要基于两方面的考虑:1、内核态的伪随机数生成器封装在操作系统的内核层面,由操作系统保证其安全性;2、应用态的随机数生成器通常要基于操作系统态的随机数生成器进行二次封装,增加了引入问题的概率。 密码学的发展对随机数生成器的品质提出了越来越高的要求,而历史上多次出现的随机数问题却又让人对于计算机系统能否提供足够安全的解决方案抱有疑虑。硬件随机数生成器,或真随机数生成器是一种通过物理过程而不是计算机程序来生成随机数字的设备。这样的设备通常是基于一些能生成低等级、统计学随机的“噪声”信号的微观现象,如热力学噪声、光电效应和量子现象。这些物理过程在理论上是完全不可预测的,并且已经得到了实验的证实。 对于大部分密码学安全的场景来说,内核态别的伪随机数生成器已经足够,比如说网站的账户系统加密、安全传递信息等,但当我们想更安全的存储数字资产、而且数字资产的价值不菲时,仅仅是伪随机似乎不够,我们需要更安全、更可靠的真随机数生成器。不过现有的真随机数生成器往往需要依赖昂贵的硬件设备来采集熵(环境的噪声),而且熵池的采集速度也很受限,低成本、高效率的真随机数生成器似乎是很难兼得的,更无法解决让用户方便、快捷使用等问题。
技术实现思路
随机数生成器面临的上述问题亟待解决。而移动互联网的高速发展,使得我们设计并开发极随机(xrandom)成为可能。通过本专利技术的极随机技术,能够让用户方便的按需采集熵,即根据用户的需求,通过智能手机的摄像头、麦克风、重力感应、地磁感应、光线感应、加速度感应等众多感应设备随机采集环境中的噪声,这些噪声的数量和质量都大大优于计算机时代的键盘、鼠标等输入设备所能采集到的噪声,再将采集到的熵与内核态的密码学安全的伪随机数生成器的结果进行混合,例如,通过进行XOR运算或其它运算等,就可保证最终获得的随机数是真随机的。因为用户周围环境中的影像、声音、磁场、光线、运动轨迹等均为无意识的噪声源,哪怕让用户努力试图重复一遍采集行为,都无法获得完全相同的结果。而且,再通过与经过多年检验的内核态伪随机数生成器混合,即便是其中某个随机源存在问题,最终的结果仍然是随机的、安全的。 本专利技术提供一种超高安全的随机数生成方法,该方法包括: 用户通过移动终端随机采集环境中的熵,并将其放入熵池; 当熵池中采集到的熵达到预定条件时,基于这些熵产生真随机数,并向操作系统内核发送内核态伪随机数请求; 操作系统内核通过内核态伪随机数生成器生成一定数量的内核态伪随机数; 将该真随机数及该内核态伪随机数进行混合运算,获得最终的随机数。 本专利技术还提供一种超高安全的随机数生成系统,该系统包括: 熵采集模块,用于根据用户指令随机采集用户环境中的熵; 真随机数生成模块,用于当熵采集模块采集到的熵达到预定条件时,将其生成为真随机数; 系统内核,包括内核态伪随机数生成器,用于根据熵采集模块发送的请求生成一定数量的内核态伪随机数; 随机数混合模块,用于将所述真随机数和所述伪随机数进行混合运算,输出最终的随机数。 【附图说明】 下面结合附图和实施例对本专利技术进一步说明。 图1是本专利技术超高安全的随机数生成方法第一实施例的流程图。 图2是本专利技术超高安全的随机数生成方法第二实施例的流程图。 图3是本专利技术中获取熵的示意图。 图4是本专利技术超高安全的随机数生成系统的模块图。 图5是本专利技术超高安全的随机数生成系统中熵采集模块的示意图。 【具体实施方式】 下面结合附图,对本专利技术的具体方案进行详细解释。 本专利技术中所述的“熵”原是热力学概念,在密码学中将这个词用作增加随机性的因素,有时也会用环境“噪声”来指增加熵的因素,此处的噪声并非专指声音,也可以是影像、磁场、光线、运动轨迹等环境中的随机性因素。“熵池”是指系统或应用层面设计的一个数据结构,这个数据结构用于采集环境中的“噪声”,当需要随机数时,从熵池中选择已经收集到的“噪声”来作为随机数。 极随机(XRANDOM)的设计思路是依赖两个随机源: 1、操作系统本身提供的密码学安全的随机源。如=Linux和BSD操作系统的内核态随机数生成器/dev/urandom, Linux和BSD分别也是Android和1S这两个智能手机操作系统所基于的操作系统,或者是Windows系统提供的内核态随机数生成器; 2、通过智能手机的多个感应采集设备,分别采集“熵”,来添加到我们设计的熵池中。 如图1所示,本专利技术的超高安全的随机数生成方法具有第一实施例。当用户在计算机或网络上进行需要加密的操作时,想要获取一定数量的、安全可靠的随机数用于加密,例如,当用户使用比特币进行交易时,需要获取一个随机生成的私钥,设这个私钥是32个字节的数据。此时,用户通过其使用的智能手机、PDA、平板电脑、便携式电脑等移动终端首先启动相应的应用程序,以在其移动终端上启动熵采集界面,这个界面会让用户在可感知的模式下采集相应的熵,这时,会通过移动终端上的噪声采集设备,例如摄像头、麦克风、重力感应器、地磁感应器、光线感应器、加速度感应器等众多感应设备中的一个或多个,来随机采集环境中的噪声,例如,用户可以让摄像头取景器掠过很多不同的影像,从影像流中采集熵,可以让手机随机运动,从运动轨迹中采集熵,可以感应周围的声音,从环境噪音中采集熵,也可以感应周围的光线,从光线明暗中采集熵,移动终端随后将这些采集到的熵放入其系统或应用层面设计的一个数据结构——熵池中;当熵池中采集到的熵达到用户预设的预定条件时,基于熵池中这些采集到的熵,通过顺序排列、随机排列等随机的算法本文档来自技高网...
【技术保护点】
一种超高安全的随机数生成方法,该方法包括如下步骤:用户通过移动终端随机采集环境中的熵,并将其放入熵池;当熵池中采集到的熵达到预定条件时,基于这些熵产生真随机数,并向操作系统内核发送内核态伪随机数请求;操作系统内核通过内核态伪随机数生成器生成一定数量的内核态伪随机数;将该真随机数及该内核态伪随机数进行混合运算,获得最终的随机数。
【技术特征摘要】
1.一种超高安全的随机数生成方法,该方法包括如下步骤: 用户通过移动终端随机采集环境中的熵,并将其放入熵池; 当熵池中采集到的熵达到预定条件时,基于这些熵产生真随机数,并向操作系统内核发送内核态伪随机数请求; 操作系统内核通过内核态伪随机数生成器生成一定数量的内核态伪随机数; 将该真随机数及该内核态伪随机数进行混合运算,获得最终的随机数。2.如权利要求1所述的方法,其中:所述移动终端为智能手机、?0八、平板电脑或便携式电脑,所述熵为环境中的噪声,所述噪声包括影像、声音、磁场、光线、运动轨迹中的一个或多个。3.如权利要求1或2所述的方法,其中:所述预定条件为熵池中已经采集到足够数量的熵,所述基于这些熵生成真随机数具体为通过顺序排列、随机排列等随机的算法将所述采集到的熵进行排列,生成真随机数。4.如权利要求3所述的方法,其中:所述一定数量的内核态伪随机数为与所述真随机数位数相等数量的伪随机数。5.如权利要求4所述的方法,其中:所述混合运算为异或乂01?等逻辑运算。6.一种超高安全的随机数生成系统,该系统包括: 熵采集模块,用于根...
【专利技术属性】
技术研发人员:文浩,
申请(专利权)人:北京德加才科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。