移动终端的随机数发生器、方法、设备及存储介质技术

技术编号:30187214 阅读:54 留言:0更新日期:2021-09-29 08:24
本发明专利技术涉及通信技术领域,提供了一种移动终端的随机数发生器、方法、设备及存储介质。所述随机数发生器包括:熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;序列输出模块,用于根据所述熵源数据,输出随机序列。借此本发明专利技术以实现快速高质量的输出随机数。输出随机数。输出随机数。

【技术实现步骤摘要】
移动终端的随机数发生器、方法、设备及存储介质


[0001]本专利技术涉及通信
,尤其涉及一种移动终端的随机数发生器、方法、设备及存储介质。

技术介绍

[0002]随着互联网和计算机通信技术的发展,人们对各种通信过程的安全保密性要求也越来越高,而在各种信息加密过程中往往都会使用到随机数序列,例如有很多加密系统的安全性就直接依赖于所产生的密钥的不可预测性以及随机性。然而要产生一个高质量的密钥,仅仅靠人类输入一个密码是无法达到要求的,因为那样会有太强的主观性,因此一般都会使用随机数来当作所需要的密钥,为此,一个能产生高质量随机数的随机数发生器尤其重要。
[0003]对于移动端使用Linux内核提供的/dev/random和/dev/urandom伪随机数生成器来产生随机数,它们从系统级事件和用户输入中提取熵。然而Linux随机数发生器难以快速从这些事件中提取大量的熵,而且依靠大量的数学混合来产生随机数。而在应用层,有许多伪随机数发生器都可以产生随机数,但是它们一般以具有很少熵的系统时间为种子,产生的随机数具有可预测性。
[0004]在密码学中,对一个序列的随机性是这样定义的:看起来是随机的,即能通过所能找到的所有正确的随机性检验;这个序列是不可预测的,也就是说,即使给出产生序列的算法或者硬件设计和以前产生序列的所有知识,也不可能通过计算来预测下一个序列是什么;这个序列不能重复产生,即使在完全相同的操作条件下用完全相同的输入对序列发生器操作两次,也将得到两个完全不同的、毫不相关的序列。相应的,随机数也分为三类:
[0005]伪随机数:满足第一个条件的随机数。
[0006]密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数发生器计算得出。
[0007]真随机数:同时满足三个条件的随机数。
[0008]熵是影响随机数质量的是其所具有的熵,熵简单来说就是随机数的不确定性。信息论定义一条消息的信息量如下:假设所有消息是等可能的,对消息中所有可能的值进行编码所需要的最少比特数。一条消息M的信息量可以通过它的熵(entropy)来度量。通常,一条消息的熵是log2n,其中n是消息所有可能的值,此处假设每一个值是等可能的。一个安全的随机数意味着它含有足够的熵。根据国家密码管理局发布的《密码模块安全技术要求》中对随机数的要求,无论熵从密码边界内部还是外部收集,对任何一个关键安全参数,其最小熵值应不小于256比特。也就是说,用于密码安全的随机数,所拥有的熵最少为256比特。
[0009]随机数及其发生器是主流计算环境的重要组成部分。由随机数发生器产生的随机数被广泛用于OS级功能(堆栈指针随机化)、科学计算(蒙特卡罗,马尔可夫模型)和计算机安全(密钥生成)。
[0010]/dev/random和/dev/urandom:/dev/random最初是由Ts'o于1993年为Linux实现
的,它从操作系统提供的大量随机事件中收集熵,例如鼠标键盘事件、磁盘IO操作、特殊中断等。一旦足够的熵混入到熵池中,它将接受用户对随机字节的请求,并通过对熵池的内容进行杂凑来提供这些随机字节。但是当熵池中的熵使用完之后,/dev/random便会进入阻塞状态,直到熵池中的熵重新收集到一定数量之后,才会继续接受请求。/dev/urandom在功能上与/dev/random相同,唯一的区别是/dev/urandom是非阻塞的,不管熵池中有没有熵,只要有请求,它都会输出随机字节,并且对请求的随机字节数量没有限制。对安全性要求不高的应用程序,/dev/urandom提供的随机性足够满足需求,但是在密码学等一些关键性的、安全性较高的应用中,现有技术中通常使用/dev/random。然而在移动端,/dev/random收集熵的过程实在是太过于缓慢。在现有技术中,/dev/random收集熵的速度很大程度上依赖于用户的输入,但即使是在有用户输入的情况下,/dev/random收集熵的速度也无法满足应用程序对性能的需求。/dev/random依赖用户输入,收集熵速度太慢;/dev/urandom输出随机数快,但是随机数包含的熵低,无法满足高安全业务场景;
[0011]综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。

技术实现思路

[0012]针对上述的缺陷,本专利技术的目的在于提供一种移动终端的随机数发生器、方法、设备及存储介质,以实现快速高质量的输出随机数。
[0013]为了实现上述目的,本专利技术提供移动终端的随机数发生器,包括:
[0014]熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
[0015]熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;
[0016]序列输出模块,用于根据所述熵源数据,输出随机序列。
[0017]根据所述的随机数发生器,所述熵源模块包括:
[0018]熵采集器,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;
[0019]熵估计单元,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
[0020]熵质量实时评估单元,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;
[0021]数据处理单元,用于根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。
[0022]根据所述的随机数发生器,所述熵池模块包括:
[0023]池输入管理单元,用于根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;
[0024]混淆机制单元,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;
[0025]熵池,为连续的存储空间,用于存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;
[0026]池输出管理单元,用于将所述熵池输出所述熵源数据输出到所述序列输出模块。
[0027]根据所述的随机数发生器,所述序列输出模块包括:
[0028]伪随机数发生器,用于将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;
[0029]输出策略单元,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;
[0030]随机性检测单元,用于检测所述随机数发生器输出的所述随机序列的随机性。
[0031]根据所述的随机数发生器,所述熵采集器包括:
[0032]传感器数据采集器,用于采集所述移动终端的传感器源的传感器数据,并输出对应的所述熵源数据;
[0033]图像数据采集器,用于采集所述移动终端的图像源的图像数据,并输出对应的所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种移动终端的随机数发生器,其特征在于,包括:熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;序列输出模块,用于根据所述熵源数据,输出随机序列。2.根据权利要求1所述的随机数发生器,其特征在于,所述熵源模块包括:熵采集器,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;熵估计单元,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;熵质量实时评估单元,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;数据处理单元,用于根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。3.根据权利要求2所述的随机数发生器,其特征在于,所述熵池模块包括:池输入管理单元,用于根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;混淆机制单元,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;熵池,为连续的存储空间,用于存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;池输出管理单元,用于将所述熵池输出所述熵源数据输出到所述序列输出模块。4.根据权利要求3所述的随机数发生器,其特征在于,所述序列输出模块包括:伪随机数发生器,用于将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;输出策略单元,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;随机性检测单元,用于检...

【专利技术属性】
技术研发人员:李珂杨本芊
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:

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

1