本申请提供一种真随机数的生成装置、方法、设备及存储介质,该装置包括:采集模块,配置为从操作系统中采集随机事件;处理模块,配置为基于随机事件计算所述随机事件对应的熵值,并将熵值存储在预先设置的熵池中;其中,熵值表征随机事件的随机程度;生成模块,配置为在接收到指示生成随机数的指令后,从熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据;基于原始序列数据,生成真随机数。该真随机数的生成装置通过采集的随机事件收集熵值作为生成随机数的种子,并基于种子生成真随机数,提高了生成随机数的随机性和安全性。提高了生成随机数的随机性和安全性。提高了生成随机数的随机性和安全性。
【技术实现步骤摘要】
真随机数的生成装置、方法、设备及存储介质
[0001]本申请涉及计算机安全
,尤其涉及一种真随机数的生成装置、方法、设备及存储介质。
技术介绍
[0002]随机数一般应用于计算机安全
,比如密码学,随机数是系统进行加密时要用到的重要工具,随机性越好,安全性越高。
[0003]但是,目前软件工程中常用的随机数函数rand(),得到的是伪随机数,即是从既定的序列中选取随机数,用同样的序列再取随机数也是一样的数,可应用情形太少,伪随机数的随机性差,安全性低。
技术实现思路
[0004]本申请提供一种真随机数的生成装置、方法、设备及存储介质,用以解决现有技术中伪随机数的随机性差,安全性低的问题。
[0005]本申请的至少一实施例提供一种真随机数的生成装置,包括:采集模块,配置为从操作系统中采集随机事件;处理模块,配置为基于所述随机事件计算所述随机事件对应的熵值,并将所述熵值存储在预先设置的熵池中;其中,所述熵值表征所述随机事件的随机程度;生成模块,配置为在接收到指示生成随机数的指令后,从所述熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据;基于所述原始序列数据,生成真随机数。
[0006]例如,在本申请的至少一实施例提供的一种真随机数的生成装置,所述装置还包括:更新模块,配置为在所述生成模块从所述熵池中获取预设字节的熵值后,在所述熵池中删除已获取的预设字节的熵值。
[0007]例如,在本申请的至少一实施例提供的一种真随机数的生成装置,所述采集模块具体配置为:基于预先设置的随机事件的类型,从所述操作系统中采集所述随机事件的类型对应的随机事件;其中,所述随机事件的类型包括以下至少一项:鼠标事件;键盘事件;磁盘的输入或输出事件;特殊中断事件。
[0008]例如,在本申请的至少一实施例提供的一种真随机数的生成装置,所述采集模块还具体配置为:在所述随机事件的类型包括所述键盘事件的情况下,从所述操作系统中采集预设时间段内每次键盘敲击的发生时间,作为所述随机事件;所述处理模块具体配置为:基于所述预设时间段内每次键盘敲击的发生时间,计算所述随机事件对应的熵值,并将所述熵值存储在所述熵池中。
[0009]例如,在本申请的至少一实施例提供的一种真随机数的生成装置,所述熵池包括N个子熵池,所述N个子熵池对应有预先设置的存储优先级;所述处理模块还具体配置为:确定当前已存储空间小于第一阈值的子熵池,作为目标子熵池;将所述熵值存储在所述存储优先级最高的目标子熵池中。
[0010]本申请的至少一实施例还提供一种真随机数的生成方法,包括:从操作系统中采
集随机事件;基于所述随机事件计算所述随机事件对应的熵值,并将所述熵值存储在预先设置的熵池中;其中,所述熵值表征所述随机事件的随机程度;在接收到指示生成随机数的指令后,从所述熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据;基于所述原始序列数据,生成真随机数。
[0011]例如,在本申请的至少一实施例提供的一种真随机数的生成方法,所述在接收到指示生成随机数的指令后,从所述熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据之后,所述方法还包括:在所述熵池中删除已获取的预设字节的熵值。
[0012]本申请的至少一实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述真随机数的生成方法。
[0013]本申请的至少一实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述真随机数的生成方法。
[0014]本申请的至少一实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述真随机数的生成方法。
[0015]本申请的至少一实施例提供的真随机数的生成装置、方法、设备及存储介质,先利用采集模块从操作系统中采集随机事件,再通过处理模块基于随机事件计算对应的熵值,并将熵值存储在熵池中,以供生成模块在接收到指示生成随机数的指令后,从熵池中获取预设字节的熵值作为种子,种子即用于产生随机数的原始序列数据,生成模块进一步可以基于种子生成真随机数,相较于相关技术中利用随机数函数得到的伪随机数,该真随机数的生成装置通过采集的随机事件收集熵值作为生成随机数的种子,并基于种子生成真随机数,提高了生成随机数的随机性和安全性。
附图说明
[0016]为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1是本申请提供的真随机数的生成装置的结构示意图;
[0018]图2是本申请提供的真随机数的生成装置运行的流程示意图;
[0019]图3是相关技术中生成随机数的两种模式的流程示意图;
[0020]图4是本申请提供的真随机数的生成方法的流程示意图;
[0021]图5是本申请提供的电子设备的结构示意图。
具体实施方式
[0022]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0023]下面结合附图描述本申请提供的真随机数的生成装置、方法、设备及存储介质。
[0024]图1是本申请提供的真随机数的生成装置的结构示意图,如图1所示,真随机数的生成装置100包括采集模块101、处理模块102和生成模块103。采集模块101,配置为从操作系统中采集随机事件;处理模块102,配置为基于所述随机事件计算所述随机事件对应的熵值,并将所述熵值存储在预先设置的熵池中;其中,所述熵值表征所述随机事件的随机程度;生成模块103,配置为在接收到指示生成随机数的指令后,从所述熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据;基于所述原始序列数据,生成真随机数。
[0025]具体地,相关技术中,常用的随机数函数rand()得到的是伪随机数,伪随机数的随机性差,安全性低。
[0026]需要说明的是,一个随机数的生成器必须具备足够安全的能力去防止来自外部或内部的攻击。下面描述最基本的三条安全原则:
[0027]1)伪随机性:生成器的输出要具备随机性;
[0028]2)前向安全性:即使知道生成器在某一时刻的状态,也无法推断出在此时刻之前生成器的输出;
[0029]3)后向安全性:即使知道生成器在某一时刻的状态,也无法推断出在此时刻之后生成器的输出。
[0030]本申请实施例中,先利用采集模块从操作系统本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种真随机数的生成装置,其特征在于,包括:采集模块,配置为从操作系统中采集随机事件;处理模块,配置为基于所述随机事件计算所述随机事件对应的熵值,并将所述熵值存储在预先设置的熵池中;其中,所述熵值表征所述随机事件的随机程度;生成模块,配置为在接收到指示生成随机数的指令后,从所述熵池中获取预设字节的熵值,作为用于生成随机数的原始序列数据;基于所述原始序列数据,生成真随机数。2.根据权利要求1所述的真随机数的生成装置,其特征在于,所述装置还包括:更新模块,配置为在所述生成模块从所述熵池中获取预设字节的熵值后,在所述熵池中删除已获取的预设字节的熵值。3.根据权利要求1所述的真随机数的生成装置,其特征在于,所述采集模块具体配置为:基于预先设置的随机事件的类型,从所述操作系统中采集所述随机事件的类型对应的随机事件;其中,所述随机事件的类型包括以下至少一项:鼠标事件;键盘事件;磁盘的输入或输出事件;特殊中断事件。4.根据权利要求3所述的真随机数的生成装置,其特征在于,所述采集模块还具体配置为:在所述随机事件的类型包括所述键盘事件的情况下,从所述操作系统中采集预设时间段内每次键盘敲击的发生时间,作为所述随机事件;所述处理模块具体配置为:基于所述预设时间段内每次键盘敲击的发生时间,计算所述随机事件对应的熵值,并将所述熵值存储在所述熵池中。5.根据权利要求1所述的真随机数的生成装置,其特征在于,所述熵...
【专利技术属性】
技术研发人员:邢跃鹏,
申请(专利权)人:北京奕斯伟计算技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。