CN113448539A - 移动终端的随机数发生器、方法、设备及存储介质 - Google Patents
移动终端的随机数发生器、方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113448539A CN113448539A CN202010211671.8A CN202010211671A CN113448539A CN 113448539 A CN113448539 A CN 113448539A CN 202010211671 A CN202010211671 A CN 202010211671A CN 113448539 A CN113448539 A CN 113448539A
- Authority
- CN
- China
- Prior art keywords
- entropy
- pool
- source data
- data
- random
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及通信技术领域,提供了一种移动终端的随机数发生器、方法、设备及存储介质。所述随机数发生器包括:熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;序列输出模块,用于根据所述熵源数据,输出随机序列。借此本发明以实现快速高质量的输出随机数。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种移动终端的随机数发生器、方法、设备及存储介质。
背景技术
随着互联网和计算机通信技术的发展,人们对各种通信过程的安全保密性要求也越来越高,而在各种信息加密过程中往往都会使用到随机数序列,例如有很多加密系统的安全性就直接依赖于所产生的密钥的不可预测性以及随机性。然而要产生一个高质量的密钥,仅仅靠人类输入一个密码是无法达到要求的,因为那样会有太强的主观性,因此一般都会使用随机数来当作所需要的密钥,为此,一个能产生高质量随机数的随机数发生器尤其重要。
对于移动端使用Linux内核提供的/dev/random和/dev/urandom伪随机数生成器来产生随机数,它们从系统级事件和用户输入中提取熵。然而Linux随机数发生器难以快速从这些事件中提取大量的熵,而且依靠大量的数学混合来产生随机数。而在应用层,有许多伪随机数发生器都可以产生随机数,但是它们一般以具有很少熵的系统时间为种子,产生的随机数具有可预测性。
在密码学中,对一个序列的随机性是这样定义的:看起来是随机的,即能通过所能找到的所有正确的随机性检验;这个序列是不可预测的,也就是说,即使给出产生序列的算法或者硬件设计和以前产生序列的所有知识,也不可能通过计算来预测下一个序列是什么;这个序列不能重复产生,即使在完全相同的操作条件下用完全相同的输入对序列发生器操作两次,也将得到两个完全不同的、毫不相关的序列。相应的,随机数也分为三类:
伪随机数:满足第一个条件的随机数。
密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数发生器计算得出。
真随机数:同时满足三个条件的随机数。
熵是影响随机数质量的是其所具有的熵,熵简单来说就是随机数的不确定性。信息论定义一条消息的信息量如下:假设所有消息是等可能的,对消息中所有可能的值进行编码所需要的最少比特数。一条消息M的信息量可以通过它的熵(entropy)来度量。通常,一条消息的熵是log2 n,其中n是消息所有可能的值,此处假设每一个值是等可能的。一个安全的随机数意味着它含有足够的熵。根据国家密码管理局发布的《密码模块安全技术要求》中对随机数的要求,无论熵从密码边界内部还是外部收集,对任何一个关键安全参数,其最小熵值应不小于256比特。也就是说,用于密码安全的随机数,所拥有的熵最少为256比特。
随机数及其发生器是主流计算环境的重要组成部分。由随机数发生器产生的随机数被广泛用于OS级功能(堆栈指针随机化)、科学计算(蒙特卡罗,马尔可夫模型)和计算机安全(密钥生成)。
/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输出随机数快,但是随机数包含的熵低,无法满足高安全业务场景;
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种移动终端的随机数发生器、方法、设备及存储介质,以实现快速高质量的输出随机数。
为了实现上述目的,本发明提供移动终端的随机数发生器,包括:
熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;
序列输出模块,用于根据所述熵源数据,输出随机序列。
根据所述的随机数发生器,所述熵源模块包括:
熵采集器,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;
熵估计单元,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
熵质量实时评估单元,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;
数据处理单元,用于根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。
根据所述的随机数发生器,所述熵池模块包括:
池输入管理单元,用于根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;
混淆机制单元,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;
熵池,为连续的存储空间,用于存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;
池输出管理单元,用于将所述熵池输出所述熵源数据输出到所述序列输出模块。
根据所述的随机数发生器,所述序列输出模块包括:
伪随机数发生器,用于将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;
输出策略单元,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;
随机性检测单元,用于检测所述随机数发生器输出的所述随机序列的随机性。
根据所述的随机数发生器,所述熵采集器包括:
传感器数据采集器,用于采集所述移动终端的传感器源的传感器数据,并输出对应的所述熵源数据;
图像数据采集器,用于采集所述移动终端的图像源的图像数据,并输出对应的所述熵源数据。
根据所述的随机数发生器,所述熵池包括:
随机池,为连续的存储空间,所述内部信息包括所述熵源数据的存放地址、所述随机池中熵的数量;所述熵的混淆次数;
熵计数器,用于记录所述随机池中熵的数量;
混淆次数单元,用于将所述熵混淆,并记录所述熵混淆的次数。
根据所述的随机数发生器,所述熵估计单元采用香农熵或者最小熵的熵估计方式获得多个所述熵源数据的熵估计值;
所述熵质量实时评估单元采用频数检测、游程检测或者自相关检测的方式对所述熵源数据进行质量实时检测;
所述数据处理单元根据所述熵估计值、所述熵源数据及其有效长度估算所述熵源数据所包含的熵。
为了实现本发明的另一发明目的,本发明还提供了一种适用于上述任一项所述的移动终端的随机数发生器的随机数发生方法,其特征在于,所述方法包括:
所述熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
所述熵池模块存储、保护以及统计所述熵源模块输出的所述熵源数据;
所述序列输出模块根据所述熵源数据,输出随机序列。
为了实现本发明的另一发明目的,一种电子设备,该电子设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器被执行所述的随机数发生方法。
为了实现本发明的另一发明目的,一种计算机可读存储介质,该计算机可读存储介质存储一个或者多个程序,所述一个或者多个程序当被处理器执行时,实现所述的方法。
综上所述,本发明通过将所述随机数发生器设置包括:熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;熵池模块存储、保护以及统计所述熵源模块输出的所述熵源数据;序列输出模块根据所述熵源数据,输出随机序列。熵源模块从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;并根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。所述熵池模块存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;并根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;以将所述熵池输出所述熵源数据输出到所述序列输出模块。所述序列输出模块将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;并且检测所述随机数发生器输出的所述随机序列的随机性。由此,实现了快速高质量的输出随机数。
附图说明
图1是本发明实施例提供的移动终端的随机数发生器的组成示意图;
图2是本发明实施例提供的移动终端的随机数发生器的组成示意图;
图3是本发明实施例提供的移动终端的随机数发生器的组成示意图;
图4是本发明实施例提供的移动终端的随机数发生器的随机数发生的方法流程图;
图5是本发明实施例提供的池输入管理单元判断熵计数器计数值的方法流程图;
图6是本发明实施例提供的混淆机制单元混淆熵源数据的方法流程图;
图7是本发明实施例提供的池输出管理单元判断熵源数据混淆次数的方法流程图;
图8是本发明实施例提供的刷新子单元刷新熵池的方法流程图;
图9是本发明实施例提供的随机性检测子单元检测输出的随机数的随机性的方法流程图;
图10是本发明实施例提供的电子设备的组成示意图;
图11是本发明实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的,本说明书中针对“一个实施例”、“实施例”、“示例实施例”等的引用,指的是描述的该实施例可包括特定的特征、结构或特性,但是不是每个实施例必须包含这些特定特征、结构或特性。此外,这样的表述并非指的是同一个实施例。进一步,在结合实施例描述特定的特征、结构或特性时,不管有没有明确的描述,已经表明将这样的特征、结构或特性结合到其它实施例中是在本领域技术人员的知识范围内的。
此外,在说明书及后续的权利要求当中使用了某些词汇来指称特定组件或部件,所属领域中具有通常知识者应可理解,制造商可以用不同的名词或术语来称呼同一个组件或部件。本说明书及后续的权利要求并不以名称的差异来作为区分组件或部件的方式,而是以组件或部件在功能上的差异来作为区分的准则。在通篇说明书及后续的权利要求书中所提及的“包括”和“包含”为一开放式的用语,故应解释成“包含但不限定于”。以外,“连接”一词在此系包含任何直接及间接的电性连接手段。间接的电性连接手段包括通过其它装置进行连接。
参见图1,在本发明的一个实施例中,提供了一种移动终端的随机数发生器100,包括:
熵源模块10,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
熵池模块20,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;
序列输出模块30,用于根据所述熵源数据,输出随机序列。
在本发明针对移动终端提供了一种移动终端的随机数发生器100,以为适配移动终端提供一个能快速产生高质量随机数的随机数发生器100。其中熵源模块10采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据。所述移动终端的随机噪声事件数据可以是采集用户输入,包括用户不断的滑动屏幕、点开应用等操作。其中的,熵源模块10采集所述移动终端的随机噪声事件数据是从移动端的各个熵源中采集熵源数据,并对采集的熵源数据根据熵源种类分别进行预处理,熵源模块10采集多熵源数据,以实现该随机数发生器100的输入源要高熵,且尽可能多地使用不同的输入源,以避免发生单点故障。并且随机数发生器100不依赖于用户提供的输入来提供熵信息,而应该能够自行收集这些信息,而不需要用户的任何明确的帮助的设置需求。熵源模块10检测以及评估,使熵源数据中的熵符合熵估计和熵质量实时评估的格式要求。因此,熵源模块10统计从熵源采集的熵源数据所包含的熵,并且对采集的熵数据进行质量实时检测,只有通过了熵质量实时评估的熵源数据,才将送往熵池模块20。此外,熵源模块10还将估算熵源数据所包含的熵,若熵为零,则熵源模块10将重新采集熵源数据,以有效地防止低熵数据混入熵池模块20。而熵池模块20则是存储、保护以及统计所述熵源数据;为了防止熵池模块20中熵源数据的溢出,根据熵池模块20的内部状态决定是否将熵源数据放入熵池模块20,如果内部状态已经饱和,便不再继续放入。此外,由于所有送入随机数发生器100的数据应该以预设的方式进行预处理,以防止攻击者推测出输入。熵源数据的状态更新操作应使用尽可能多的状态数据,以确保在混合过程中每个状态位都会影响其他位。熵池模块20对熵源数据进行预处理,把熵源数据充分地均匀地混合到熵池模块20中。然而,从熵池模块20输出数据到序列输出模块30之间需要做的一系列操作,以安全地输出熵源数据、熵池模块20内部状态的更新等。由此保证在发生任何熵源数据输出之前,随机数发生器100应该通过确保内部熵源数据充分混合来避免启动问题。序列输出模块30则输出随机序列和隐藏随机数发生器100的内部状态细节,以快速输出随机序列,同时保护熵池内部状态,以及被攻击者推测出随机序列,所有的输出熵源数据还将通过一个抗原像的随机函数进行处理,以避免向攻击者透露有关内部状态的信息。最后序列输出模块30检测随机数发生器输出的随机数的随机性,以实现随机数发生器100还将续采样自己的输出,并对其进行任何可行的测试,以确保不会产生不良的输出或卡住一个周期并重复产生相同的输出。由此实现了,快速高质量的输出适用于移动终端的随机数。
在本发明中根据适配移动终端需要,随机数发生器100设置满足如下几个需求:1、该随机数发生器100的输入源要高熵,且尽可能多地使用不同的输入源,以避免发生单点故障。2、随机数发生器100不依赖于用户提供的输入来提供熵信息,而应该能够自行收集这些信息,而不需要用户的任何明确的帮助。3、随机数发生器100应该估计在其内部状态的熵的数量,并拒绝提供安全水平不足的输出。4、所有送入随机数发生器100的数据应该以预设的方式进行预处理,以防止攻击者推测出输入。5、状态更新操作应使用尽可能多的状态数据,以确保在混合过程中每个状态位都会影响其他位。6、在发生任何输出之前,随机数发生器100应该通过确保内部数据充分混合来避免启动问题。7、所有的输出数据都应该通过一个抗原像的随机函数进行处理,以避免向攻击者透露有关内部状态的信息。8、随机数发生器100发生器应连续采样自己的输出,并对其进行任何可行的测试,以确保不会产生不良的输出或卡住一个周期并重复产生相同的输出。本发明实施例中提到的随机数均是起码要满足背景技术中关于随机数分类的前两个条件的随机数。随机数发生器:能够产生随机数序列的软件或硬件或者二者的结合被称为随机数发生器RNG(Random Number Generator)。
参见图2,在本发明的一个实施例中,熵源模块10包括:
熵采集器11,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;熵源种类包括传感器、图像源等;
熵估计单元12,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
熵质量实时评估单元13,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池23;
数据处理单元14,用于根据所述熵估计单元12计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器11重新采集所述熵源数据。
在该实施例中,熵采集器11从所述移动终端的多个熵源中采集所述熵源数据,所述熵采集器11包括传感器数据采集器111和图像数据采集器112;传感器数据采集器111用于采集所述移动终端的传感器源的传感器数据,并输出对应的所述熵源数据;图像数据采集器112用于采集所述移动终端的图像源的图像数据,并输出对应的所述熵源数据。移动终端的多个熵源主要包括了传感器数据采集器111采集所述移动终端的传感器源的传感器数据;图像数据采集器112采集所述移动终端的图像源的图像数据。此外,熵采集器11还对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求。熵估计单元12则以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;在不同情况下,熵估计单元12以离线的方估计采集的各个熵源数据的熵,从而得出各个熵源数据的熵估计值。熵估计的是为了统计从熵源采集的熵源数据所包含的熵。熵质量实时评估单元13对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池23;防止持续低熵数据流入熵池(如某一传感器失灵导致采集大量固定数据,如纯黑图像含有噪声极低等),熵质量实时评估单元13会对采集的熵数据进行质量实时检测。由此随机数发生器100估计在其内部状态的熵的数量,并拒绝提供安全水平不足的输出。数据处理单元14根据熵估计单元12和熵质量实时评估单元13计算出来的熵估计值来估算熵源数据所包含的熵。熵如果为零,则重新采集熵源数据,可以有效地防止低熵数据混入熵池23。
在本发明的一个实施例中,熵估计是建立一个随机数发生器(RNG)的重要组成部分,因为能够估计熵池中包含的熵的数量所达到的安全水平。如果RNG的熵估计的准确性较高,则可以对其熵池的不可预测性给出更好的安全保证,这使得攻击者不太可能损害RNG系统的随机性。
然而,设计一个实时熵估计系统是非常艰巨的,有的熵源是随时间变化的,有的熵源产生可变长度的输出,有的需要花费不同的时间去采集数据,而且许多分析技术需要消耗大量的CPU和内存资源,所以本发明的实施例中使用离线收集好大量熵源数据进行预先评估的方式。熵估计的方法采用香农熵和最小熵。
在本发明的一个实施例中,熵估计单元12采用香农熵的熵估计的方法:
这个度量也被称为香农熵,它为随机变量的独立分布提供了平均情况熵度量。
作为香农熵的一个例子,考虑用两个独立的平整硬币(X,Y)进行硬币翻转,其中有50%的机会翻转头部(H)或尾部(T)。然后有四种可能的结果组合:(T,T),(T,H),(H,T),(H,H),每种都有1/4的机会发生。那么得到的香农熵是
所以这两个硬币包含2比特不可预测性。
现在假设第二个硬币Y不平整,而且有3/4的翻转机会。(T,T)=1/8,P(T,H)=3/8,P(H,T)=1/8,P(H,H)=3/8,现在得到的香农熵是
所以现在这两个硬币只包含1.8比特的不可预测性,因此变得更可预测。
熵估计单元12采用最小熵的熵估计的方法:
最小熵,也被称为Renyi熵。最小熵定义如下[24]:
H∞(X)=minx∈X(-log PX(x))-log(maxx∈XPX(x))
因为最小熵考虑的是最坏情况而不是平均情况,因此在密码学中最小熵是更严格并且更好的度量方法,本发明优选采用最小熵来统计熵值。对于不同的熵源数据,本发明的熵估计;其中,传感器源熵估计:
为了在熵池运作期间生成可能的最高数据量,已经把传感器速率被设置为最短的延迟。生成的数据的确切数量取决于运行的设备,但测试显示平均每分钟将有大约53000个加速度传感器和陀螺仪读数,1个传感器读数为一个传感器坐标。
在本发明是一个实施例中,两个传感器都有5位十进制数不可预测,转换成二进制可表示17比特。假如这5位数完全是不可预测的,那么陀螺仪和加速度传感器一个坐标就有17比特熵,每分钟53000个传感器数据,就有901000比特熵。
由于1字节等于8比特,为了方便存储数据,所以对5位数进行了模216运算,这样传感器的一个坐标最多只有16比特熵。分别对三星Galaxy S3和小米6在静止状态下以及运动状态(手握手机不停地向上下左右运动)下采集数据。
由实验可知,在长时间使用传感器和短时间使用传感器下,采集的数据的香浓熵和最小熵相差不大。S3和小米6的传感器数据香浓熵和最小熵差别不是很大,本发明以在静止状态下S3的较低数据为标准来统计。实验测试平均情况,S3手机传感器16比特数据包含6.947比特熵,传感器十分钟采集535227次,为了采集256比特熵需要采集37次,消耗41毫秒。在不断运动最好的情况下,S3手机传感器16比特数据包含13.225比特熵,传感器十分钟采集535227,采集256比特熵需要采集20次,消耗22毫秒。考虑到如果以采集时间作为收集熵数据的标准,则可能会受到Android系统设备时钟的影响,如果攻击者修改系统时钟,则传感器可能很难收集达到熵安全阈值的数据。所以本发明实施例采用以采集固定大小数据作为收集熵数据的标准。对于上述三种情况,假设传感器十分钟采集535227次,则采集128字节需要71毫秒,最差情况下包含333比特熵,平均情况下包含444比特熵,最好情况包含846比特,三种情况均满足256比特安全阈值。因此传感器源一旦收集满128字节数据,便停止收集,同时将收集的128字节数据送往熵质量实时评估。
对于图像源熵估计,由于拍摄环境的不同,会导致图像中的噪声点数量也不尽相同,本发明实施例分别考虑在纯白、纯黑和正常环境中估计图像的熵,具体可以分为以下几种场景:
(1)纯白环境下正常聚焦拍摄,得到一张清晰的图像;
(2)纯白环境下模糊拍照,得到一张模糊图像;
(3)纯黑环境下正常聚焦拍摄,得到一张清晰的图像;
(4)纯黑环境下模糊拍照,得到一张模糊图像;
(5)正常环境下正常聚焦拍摄,得到一张清晰的图像;
(6)正常环境下模糊拍照,得到一张模糊图像;
纯白环境通过让手机拍一张白纸来模拟,纯黑环境则在漆黑的环境下,每个场景分别拍摄10张照片,图像的尺寸均为4000×2250,计算图像数据每8比特的香农熵和最小熵平均值如下表1所示:
场景 | 香农熵/比特 | 最小熵/比特 |
(1) | 0.023 | 0.014 |
(2) | 0.340 | 0.152 |
(3) | 0.025 | 0.015 |
(4) | 0.370 | 0.158 |
(5) | 3.563 | 2.254 |
(6) | 3.747 | 2.927 |
表1
由上表1可知,纯白或纯黑环境下,图像中包含的熵极少,而正常环境下图像中包含了大量的熵,并且模糊图像中的熵要高于清晰图像。
本发明实施例中使用正常环境下清晰图像的最小熵。从图像源中采集128字节数据,由表上表可以得知,图像的最小熵均值8比特中包含2.254比特,则128字节数据包含288比特熵,满足熵安全阈值256比特。只考虑提取噪声点的时间,提取128字节的噪声点只需要微秒级别的时间,可以忽略不计。
由上表可知,在纯黑和纯白环境下,图像中的熵极低,所以必须要有实时检测机制,以防止低熵数据混入熵池。
熵质量实时评估单元13对熵质量实时评估,熵质量实时评估输入为128字节图像源数据和(或)128字节传感器源数据,输出为输入数据和输入数据的有效长度,并将输出传递给数据处理单元。由于一次检测的数据量很少,所以必须得选择要求数据量小的检测方法,其中频数检测要求待检测数据至少100位,游程检测要求至少100位,自相关检测要求至少12位,所以本发明中采取这三种检测方法进行熵质量实时评估:频数检测、游程检测以及自相关检测。经过熵质量实时评估的数据才能送往熵池23,可以拒绝低熵数据,保证采集的传感器数据具有随机性和不可预测性,满足总体设计的原则。本发明实施例使用Golomb随机性假设来检验熵源数据的随机性。
在本发明的一个实施例中的评估结果,对传感器和图像多种场景下采集的128字节数据进行评估,汇总成下表,其中传感器每种场景下采集了1000次,图像每种场景下采集了100次,传感器和图像各场景下通过检测的次数汇日下表2:
表2
由检测结果可知,当图像源采集的数据不理想时,熵质量实时评估模块会拒绝此数据,保证熵源数据的高熵。
数据处理单元14的数据处理数据处理单元14整理即将送往熵池模块的数据,统计出熵源数据的有效数据、有效长度以及熵总数。
数据处理单元14统计熵源数据所包含的熵数量。根据熵估计结果、熵源数据,熵源数据的有效长度,估算出所述熵源数据所包含的熵:熵总数=图像源数据有效长度*图像源熵估计值+传感器源数据有效长度*传感器源熵估计值。如果熵源数据的有效长度不为零,则认为该数据为有效数据,并复制到送往熵池数据的缓冲区中,否则丢弃该数据。最终送往熵池的有效数据长度为两个熵源数据的有效长度之和。如果最终有效长度为零,则反馈给熵采集器,重新采集数据。
在本发明的一个实施例中,由于图像中包含众多噪声点,传感器能采集到硬件的数据,因此熵源选取了图像和传感器,由图像数据采集器112和传感器数据采集器111实现,并对移动端中传感器进行了筛选,陀螺仪和加速度计表现很好,最终选取了陀螺仪和加速度传感器作为传感器的熵源。
参见图3,在本发明的一个实施例中,所述熵池模块20包括:
池输入管理单元21,用于根据所述熵池23的内部状态信息判断是否将所述熵源数据存入所述熵池23;
混淆机制单元22,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池23中;
熵池23,为连续的存储空间,用于存储所述随机数发生器100的内部状态信息数据以及所述池输入管理单元21存入的所述熵源数据;
池输出管理单元24,用于将所述熵池23输出所述熵源数据输出到所述序列输出模块30。
在该实施例中,池输入管理单元21为了防止熵池数据的溢出,池输入管理单元21根据熵池23的内部状态决定是否将熵源数据放入熵池23,如果内部状态已经饱和,便不再继续放入。对熵源数据进行预处理,把熵源数据充分地均匀地混合到熵池23中。混淆机制单元22对熵源数据进行预处理,把数据充分地均匀地混合到熵池23中。以防止攻击者推测出输入的熵源数据状态更新操作应使用尽可能多的状态数据,以及以确保在混合过程中每个状态位都会影响其他位。熵池23是一块连续的存储空间,熵池23里面包含了随机数发生器100的内部状态信息,包括用于标记熵池23内数据熵数量的熵计数器232、混淆次数和熵池23写入地址等。在本发明的一个实施方式中,熵池23包括随机池231、熵计数器232以及混淆次数单元233;其中随机池231为连续的存储空间,所述内部信息包括所述熵源数据的存放地址、所述随机池231中熵的数量;所述熵的混淆次数;熵计数器232用于记录所述随机池231中熵的数量;混淆次数单元233用于将所述熵混淆,并记录所述熵混淆的次数。由此,在随机数发生器100发生任何输出之前,通过确保内部数据充分混合来避免启动问题,而且所有的输出熵源数据都通过一个抗原像的随机函数进行处理,以避免向攻击者透露有关熵池23内部状态的信息。
参见图3,在本发明的一个实施例中,所述序列输出模块30包括:
伪随机数发生器31,用于将所述随机序列从所述随机数发生器100输出,并保护所述熵池23的内部状态;
输出策略单元32,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器31的种子的周期;
随机性检测单元33,用于检测所述随机数发生器100输出的所述随机序列的随机性。
在该实施例中,伪随机数发生器31用于快速输出随机序列,同时保护熵池23内部状态信息,输出策略单元32根据需要输出随机数的长度来决定更换(熵源数据)种子的周期,避免一个种子由于长时间使用而被攻击者推测出种子,也称为通过熵池模块20输出的熵源数据,以避免向攻击者透露有关熵池23内部状态的信息。随机性检测单元33检测随机数发生器100输出的随机数的随机性,以确保不会产生不良的输出或卡住一个周期并重复产生相同的输出。优选的,所述随机池231的大小512字节。所述第一最大值为4096;所述第二最大值为100;所述第三最大值为4;所述预设的加密算法为国密算法SM3。
在本发明的一个实施例中,所述池输入管理单元21在所述熵计数器232的计数值未达到预设的第一最大值时,将所述熵源数据添加到所述随机池231,当所述熵源数据被添加到所述随机池231后,控制所述熵计数器232更新所述计数值;以及
在所述熵计数器232的计数值达到所述第一最大值时,停止将所述熵源数据添加到所述随机池231。
而所述混淆机制单元22包括:
地址变更子单元221,用于在复制所述熵源数据完成之后,将在所述熵源数据未复制到所述随机池231前的池索引地址pre_add_ptr变为add_ptr;
数据输送子单元222,用于选取所述pre_add_ptr的前32个字节和后64字节pre_add_ptr-32……pre_add_ptr+63送入到预设的加密算法中,再把所述预设的加密算法输出的32字节写入到所述pre_add_ptr……pre_add_ptr+31;
所述地址变更子单元221将所述pre_add_ptr向前移动32字节,由pre_add_ptr到pre_add_ptr+32,并重复执行所述池索引地址的变更,直到所述pre_add_ptr移动到或者超过add_ptr的位置;并且当pre_add_ptr移动到所述随机池231末尾时,所述地址变更子单元221把所述pre_add_ptr重新移动到所述随机池231开始处;
混淆次数控制单元223,在所述熵源数据全部混淆完之后,增加所述熵源数据的混淆次数mix_counter,当所述混淆次数mix_counter达到预设的第二最大值时,停止增加。
所述池输出管理单元24包括:
内部状态判断子单元241,用于判断所述随机池231中所述熵源数据的混淆次数是否大于等于预设的第三最大值;
熵源数据采集通知子单元242,用于在所述内部状态判断子单元241判断所述熵源数据的混淆次数小于所述第三最大值,则向所述熵采集器11发送通知信息,通知所述熵采集器11再次采集所述熵源数据;
熵源数据输出子单元243,用于在所述内部状态判断子单元241判断所述熵源数据的混淆次数小于所述第三最大值,则将所述随机池231中所述熵源数据的输出。
所述池输出管理单元24还包括:
刷新子单元244,用于在所述将熵源数据输出子单元243所述将所述随机池231中所述熵源数据的输出之前,将所述随机池231中所述熵源数据通过抗原像的随机函数进行处理。所述混淆次数单元233采用单向函数对所述熵池23中的所述熵源数据做混淆处理;
在该实施例中,当从熵源处采集的数据经过熵源模块10处理后,熵源模块10会输出具有高随机性的熵源数据,接下来则是将熵源数据混合到熵池23中。
首先熵池23需要有内部状态,比如一块连续的存储空间,以存放熵源模块10的输出数据,本发明称之为随机池231,大小为512字节。还需要有一个随机池231写入地址,告诉熵池模块20需要将数据存放在随机池231的何处,它应随输入数据的添加而变化。熵池模块20需要随时知道随机池231数据中熵数量,本发明添加熵计数器232来统计。为了避免启动问题,需要将熵池23充分混合,用一个变量记录混合次数。
由前述的设计原则可知,从熵源模块10输出的熵源数据复制到熵池23中后,还必须得经过预处理,目的是为了防止攻击者根据熵池23的输出来推测出熵池23的输入,即熵源数据图5如果熵源数据复制到熵池23中后,不加任何处理,直接输出,则攻击者很容易就知道熵源数据。一般密码学上的做法是用单向函数对池中数据做混淆处理,比如Hash函数,已知输出无法推测出输入,本发明实施例中选用国密算法SM3。
在第一次使用随机数发生器100时,熵池23内的数据全部为0,如果不加控制,马上输出随机数,那么输出的数据完全可以预测,所以由设计原则6、7可知,熵池模块20还需要一个输出机制,对池中数据再加一层保护。
熵池23内部状态
用以下结构来表示熵池23内部状态:
随机池231设置为128字,即512字节,保证池中能容纳更多的熵。写入地址add_ptr的范围在[0,511]。熵计数器232entropy_counter最大为池空间大小,即随机池231中数据满熵,最小为0,即池中无数据,所以entropy_counter的范围在[0,4096]。
在初始化时,将为pool申请512字节的空间,并初始化为全0,pre_add_ptr、add_ptr、entropy_counter和mix_counter置为0,从池首端到末端填充。
池输入管理单元21根据熵计数器232的值来判断需不需要将数据添加到随机池231,当数据被添加到随机池231后,还需要更新熵计数器232。具体流程如图5,假设熵源数据的熵总数为e_s比特,数据长度为l_s字节:
当有熵源数据到达时,池输入管理会先判断熵计数器232是否达到了最大值,如果达到了最大值,说明随机池231数据已经满熵,不需要再填充新的熵源数据了,所以拒绝熵源数据。如果熵计数器232没有达到最大值,则将l_s字节的熵源数据添加到随机池231中,同时保存上一次的写入地址,然后再更新本次的写入地址,如果本次写入地址已达到或超出池末尾,则令写入地址从池首端重新开始(需加上超出的部分)。最后由于随机池231已经添加了熵源数据,融入了更多的熵,所以要更新熵计数器232,加上e_s比特的熵,如果更新后的熵计数器232大于最大值,则令熵计数器232等于最大值。
设置混淆机制单元22是为了防止随机池231中数据的泄露和避免启动问题。它应使用尽可能多的数据来混淆随机池231数据。本发明中使用如图6所示的流程来混淆池中数据,假设熵源数据未复制到随机池231前的池索引地址为pre_add_ptr,复制完熵源数据之后,地址变更子单元221将池索引地址变为add_ptr:
数据输送子单元222选取pre_add_ptr的前32个字节和后64字节pre_add_ptr-32……pre_add_ptr+63送入SM3中,然后把SM3输出的32字节写入到pre_add_ptr……pre_add_ptr+31。
然后地址变更子单元221pre_add_ptr向前移动32字节,pre_add_ptr=pre_add_ptr+32,并重复执行所述池索引地址的变更,直到pre_add_ptr移动到或者超过add_ptr的位置。当pre_add_ptr移动到随机池231末尾时,需把pre_add_ptr重新移动到随机池231开始处;
熵源数据全部混淆完之后,混淆次数控制单元223增加混淆次数mix_counter++,当mix_counter达到100时,便不再增加。
通过上述流程的混淆处理,被SM3输出的每个32字节块都携带了768(96×8)比特状态信息,这意味着随机池231中的每个字节都受到其周围32+64个字节的直接影响,而且当迭代次数足够多时,每个字节会间接地受到池中其他每个字节的影响。768比特的状态信息已完全满足国家密码管理局规定的256比特状态信息。
此外,池输出管理单元24管理着熵池23的输出,主要根据是熵池23内部状态的熵计数器232和混淆次数。池输出管理的输出流程如图7所示:
需要熵池模块20输出随机数时,内部状态判断子单元241先判断内部状态混淆次数是否大于等于预设的第三最大值,由于熵源数据最少是128字节,所以最多采集4次熵源数据便可以把512字节的随机池231全部混淆,每采集一次数据送往随机池231,混淆次数便会加1。所以可以判断混淆是否大于等于4来推断随机池231数据有没有充分混合,如果大于等于4,则熵源数据输出子单元243则将所述随机池231中所述熵源数据的输出。如果小于4,则熵源数据采集通知子单元242通知熵采集器重新采集数据。因为《密码模块安全技术要求》规定敏感参数必须有256比特熵,所以池输出管理接下来会判断内部状态熵计数器232是否大于等于256比特,如果小于,说明随机池231内数据熵不足,则通知熵采集器采集数据。
当混淆次数和熵计数器232均满足条件时,刷新子单元244刷新一次熵池23,对池内数据再次用SM3处理混淆,保证熵池23内部状态的数据的安全性。刷新熵池23之后会输出256比特数据。最后更新熵计数器232,减去输出的256比特熵。
具体的,刷新子单元244刷新熵池23是将要输出的池数据通过一个抗原像的随机函数进行处理后再输出。所述抗原像的随机函数进行处理过程包括:
所述刷新子单元244将所述随机池231[0,255]间的数据采用所述SM3处理,输出32字节tmp[32],将所述tmp[32]添加到所述随机池231[add_ptr,add_ptr+31]间,并将所述tmp[32]作为SM3’的初始状态;
将所述随机池231[256,511]间的数据用所述SM3’处理,输出32字节赋给所述tmp[32],将所述tmp[32]添加到所述随机池231[add_ptr-32,add_ptr]间;
将所述随机池231[add_ptr-224(%512),add_ptr+32(%512)]间的数据用所述SM3’处理,最终输出的32字节作为所述熵池模块2020输出的所述熵源数据。
刷新熵池23的流程如图8所示:刷新熵池23的步骤如下:
将随机池231[0,255]间的数据用SM3处理,输出32字节tmp[32],将tmp[32]添加到随机池231[add_ptr,add_ptr+31]间,并将tmp[32]作为SM3′的初始状态;
将随机池231[256,511]间的数据用SM3’处理,输出32字节赋给tmp[32],将tmp[32]添加到随机池231[add_ptr-32,add_ptr]间;
将随机池231[add_ptr-224(%512),add_ptr+32(%512)]间的数据用SM3′处理,最终输出的32字节作为熵池模块20的输出数据。
前两步对随机池231再一次做了混淆,并且让随机池231[add_ptr-32,add_ptr+31]间的数据受到了全池数据的直接影响,第三步[add_ptr-224(%512),add_ptr+32(%512)]之间的数据包含了[add_ptr-32,add_ptr+31],将其作为SM3’的输入,可以保证最终输出的32字节数据也受到了全池数据的直接影响。这里用到了SM3’而不是SM3,假如第二步依然用SM3处理,在攻击者知道熵池23后半段数据的情况下,则知道第三步的32字节数据,而如果使用SM3’,即使攻击者知道熵池23后半段的数据,在不知道熵池23前半段数据的情况下,无法得知第三步中的32字节数据,增加了攻击难度。
假设刷新熵池23前熵池23内熵计数器232的值为n(n>=256)比特,随机池231[0,255]间数据的熵为x比特,[256,511]间数据的熵为y比特,则x+y=n。步骤1)后,随机池231[add_ptr,add_ptr+31]间至少包含x(x<=256)比特熵,步骤2)后,随机池231[add_ptr-32,add_ptr]间至少包含y(y<=256)比特熵,步骤3)后,输出的数据至少包含(x+y)比特熵,由于x+y=n>=256,所以输出的数据肯定包含256比特熵。
序列输出模块30已经从熵池模块20输出了满熵的256比特随机数。序列输出模块30作为随机数发生器100的最终输出模块,需要从质量和安全方面考虑如何输出随机序列。在安全上,为了给随机数发生器100再加一层保护,从熵池23输出的数据并不是直接发送给调用者,而是作为一个伪随机数发生器100(PRNG)31的种子,将PRNG的输出发送给调用者,满足避免向攻击者透露有关内部状态的信息,而且每当产生一定数量的输出数据时,要反馈给熵池模块20,重新输出一个种子。在质量上,引入随机性检测单元33检测输出的随机数的随机性。
输出策略单元32是为了防止PRNG始终用同一个种子输出序列,避免被攻击者根据太多输出序列推测出种子。本发明的做法是,根据调用者需要输出的序列的长度L来决定多久更换一次PRNG的种子。具体如下:
所述输出策略单元32根据需要调用的所述随机序列的长度L,设置更换一次所述伪随机数发生器31的种子;
如果L<=1KB,则每输出32B长度的序列后,则更换一次所述伪随机数发生器31的种子;
如果L>1KB,则每输出10KB序列后,则更换一次所述伪随机数发生器31的种子;更换种子即通知熵池模块重新输出序列。
此外,伪随机数发生器31需要采用可以快速产生高质量的伪随机数的发生器。所述伪随机数发生器31为梅森旋转随机数发生器100;所述密码学应用以离线的方式运行。由于随机数发生器100发生器应连续采样自己的输出,并对其进行任何可行的测试,以确保不会产生不良的输出或卡住一个周期并重复产生相同的输出。因此需要检测随机数发生器100输出序列的质量。本发明中使用NIST SP800-22(密码学应用中的随机数和伪随机数发生器统计测试工具集)来检测随机性。所述随机性检测单元33采用密码学应用中的随机数和伪随机数发生器31统计测试工具集NIST SP800-22检测所述随机性。由于该模块需要大量的数据,而且检测非常耗时,所以以离线的方式运行。
参见图4,在本发明的一个实施例中,提供了一种适用于上述任一实施例所述的随机数发生器100的随机数发生方法,所述方法包括:
步骤S401中,所述熵源模块10采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
步骤S402中,所述熵池模块20存储、保护以及统计所述熵源模块输出的所述熵源数据;所述序列输出模块30根据所述熵源数据,输出随机序列。
步骤S403中,在该实施例中,熵源模块10采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据。通过了熵质量实时评估的熵源数据,熵源模块10将送往熵池模块20。熵池模块20安全地输出数据到序列输出模块30。序列输出模块30则输出随机序列和隐藏随机数发生器100的内部状态细节,以快速输出随机序列,同时保护熵池内部状态,以及被攻击者推测出随机序列。最后序列输出模块30还检测随机数发生器输出的随机数的随机性,以确保不会产生不良的输出或卡住一个周期并重复产生相同的输出。由此实现了,快速高质量的输出适用于移动终端的随机数。
具体的,所述熵源模块10采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据包括:
所述熵采集器11从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;熵采集器11包括传感器数据采集器111和图像数据采集器112,传感器数据采集器111和图像数据采集器112分别采集所述移动终端的传感器源的传感器源的传感器数据和图像源的图像数据,并输出对应的所述熵源数据。
所述熵估计单元12以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;在不同情况下,熵估计单元12以离线的方估计采集的各个熵源数据的熵,从而得出各个熵源数据的熵估计值。
所述熵质量实时评估单元13对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池23;以防止持续低熵数据流入熵池23。
所述数据处理单元14根据所述熵估计单元12计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器11重新采集所述熵源数据,有效地防止低熵数据混入熵池。
在本发明的一个实施例中,所述熵池模块20存储、保护以及统计所述熵源模块输出的所述熵源数据包括:
所述池输入管理单元21根据所述熵池23的内部状态信息判断是否将所述熵源数据存入所述熵池23;如果所述内部状态已经饱和,便不再继续放入熵源数据。并且对熵源数据进行预处理,把熵源数据充分地均匀地混合到熵池23中。
所述混淆机制单元22对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池23中;
所述熵池23存储所述随机数发生器100的内部状态信息数据以及所述池输入管理单元21存入的所述熵源数据;以防止攻击者推测出输入的熵源数据状态更新操作应使用尽可能多的状态数据;
所述池输出管理单元24将所述熵池23输出所述熵源数据输出到所述序列输出模块30。
在本发明的一个实施例中,所述序列输出模块30根据所述熵源数据,输出随机序列包括:
所述伪随机数发生器31将所述随机序列从所述随机数发生器100输出,并保护所述熵池23的内部状态;
所述输出策略单元32需要输出的所述随机序列的长度设置更换所述伪随机数发生器31的种子的周期;
所述随机性检测单元33检测所述随机数发生器100输出的所述随机序列的随机性。
在本发明的一个实施例中,所述随机性检测单元33检测所述随机数发生器100输出的所述随机序列的随机性包括:
A、根据用户的操作调用所述随机数发生器100,请求输出n字节随机数;
B、所述序列输出模块30的输出策略单元32计算所述n字节随机数需要m个种子;
C、所述序列输出模块30向所述熵池模块20请求所述种子;
D、所述池输出管理单元24根据所述熵池23的内部状态信息判断所述熵池23的内部状态,如果内部状态不满足,则转到E),满足转L);
E、所述池输入管理单元21向所述熵源模块10请求填充所述熵池23;
F、所述熵采集器11开始从所述熵源采集所述熵源数据;
G、所述熵质量实时评估单元13检测所述熵源数据的有效性;
H、所述数据处理单元14根据所述熵质量实时评估单元13返回的检测结果,判断是否需要重新采集所述熵源数据,如果需要转到F),否则转到I);
I、返回所述熵源数据到所述熵池模块20;
J、所述熵池模块20的池输入管理单元21复制所述熵源数据到所述熵池23;
K、所述熵池模块20的混淆机制单元22混淆熵池23,转到D);
L、所述熵池模块20的池输出管理单元24输出所述熵源数据(种子),返回到所述序列输出模块30;
N、采用所述种子初始化所述伪随机数发生器31,所述伪随机数发生器31输出随机序列;
M、所述输出策略单元32判断是否已经请求了m个种子,没有则转到C);
O、所述输出策略单元32返回n字节随机数。
参见图9,在本发明的一个实施例中,随机数发生器100输出随机数的总体流程如下:
1)用户调用随机数发生器100,请求输出n字节随机数;
2)序列输出模块30的输出策略单元32计算n字节随机数需要m个种子;
3)序列输出模块30向熵池模块20请求种子;
4)熵池模块20的池输23出管理判断熵池的内部状态,如果内部状态不满足,则转5),满足转12);
5)池输入管理单元21向熵源模块10请求填充熵池23;
6)熵源模块10的熵采集器11开始从熵源采集数据;
7)熵质量实时评估单元13检测数据的有效性;
8)数据处理单元14根据熵质量实时评估返回的结果,判断是否需要重新采集数据,如果需要转6),否则转9);
9)返回数据给熵池模块20;
10)熵池模块20的池输入管理单元21复制数据到熵池23;
11)熵池模块20的混淆机制混淆熵池,转4);
12)熵池模块20的池输出管理单元24输出数据(种子),返回给序列输出模块30;
13)用种子初始化序列输出模块30的PRNG,PRNG输出随机序列;
14)输出策略单元32判断是否已经请求了m个种子,没有则转(3);
15)输出策略单元32返回n字节随机数给用户。
参见图10,在本发明的一个实施例中,还提供了一种电子设备500,其特征在于,该电子设备500包括:
处理器501以及
被安排成存储计算机可执行指令的存储器502,所述可执行指令在被执行时使所述处理器501被执行根据上述任一项所述的随机数发生方法。具体的被安排成存储计算机可执行指令的存储器502,所述可执行指令在被执行时使所述处理器501被执行上述的随机数发生方法。在所述存储器502中具有存储程序代码的存储空间。
在本发明的一个实施例中,电子设备500移动终端。该移动终端为包括上述任一实施例中的随机数发生器100的移动终端。
在本发明的一个实施例中,以设置了随机数发生器100的小米6手机和三星S3手机为例,以下为小米6和三星S3手机在静止状态在采集到的数据:
手机静止状态下采集10分钟数据,共采集5组,期间用香农熵和最小熵对采集的熵进行统计分析,每16比特传感器数据包含熵数量平均值如下表3:
Android手机静止状态下熵统计
表3
S3和小米6的数据香浓熵和最小熵差别不是很大,本发明以在静止状态下S3的较低数据为标准来统计。
S3手机16比特数据的最小熵为5.204比特,传感器十分钟采集535227次,共采集2785321.308比特熵,平均每秒采集4642.202比特熵,而/dev/random平均每秒收集43.990比特熵,比/dev/random快了近105倍。由此实现了快速采集熵。对采集的随机数进行检测(NIST SP800-22标准):
检测数据:检测数据分为1000组,每组128KB随机数;
判断条件:p_value大于0.01,且通过率要达到98%。
对以下三种场景下发生器的输出进行检测:
手机在静止状态,只采集传感器数据
检测结果如下表4:场景1下随机数发生器输出序列检测所示:
表4
检测结果显示,在手机静止状态,并且只有传感器源时,随机数发生器100输出序列过了全部的检测。
手机在运动状态,只采集传感器数据,检测的结果如下表,场景2下随机数发生器100输出序列检测所示:
表5
检测结果显示,在手机运动状态,并且只有传感器源时,随机数发生器100输出序列过了全部的检测。
手机在运动状态,同时采集传感器和图像数据:
拍摄的均是清晰图像,检测的结果如下表场景3下随机数发生器输出序列检测所示:
表6
检测结果显示,在手机运动状态,并且同时有传感器源和图像源时,随机数发生器100输出序列过了全部的检测。再对三种场景下的输出数据做多次检测,检测的结果如下表7种场景下随机数发生器输出序列通过次数检测所示:
表7
检测结果显示,随机数发生器输出序列过了全部的检测。
综合以上三种场景的测试结果,说明随机数发生器100输出的序列有着非常好的随机性,产生的随机数为高质量随机数。
参见图11,在本发明的一个实施例中提供了一种计算机可读存储介质600,该计算机可读存储介质600存储一个或者多个程序,所述一个或者多个程序当被处理器执行时,实现上述的方法。
本发明还提供一种存储介质,用于存储如图4以及上述多个实施例所述任意一种方法的计算机程序。例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的存储介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输和/或被存储在根据程序指令运行的计算机设备的存储介质中。在此,根据本申请的一个实施例包括一个如图10所示的移动终端500,所述移动终端500优选包括用于存储计算机程序的存储介质600、存储器502和用于执行计算机程序的处理器501,其中,当该计算机程序被该处理器501执行时,触发该移动终端500执行基于前述多个实施例中的方法和/或技术方案。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
根据本发明的方法可以作为计算机实现方法在计算机上实现、或者在专用硬件中实现、或以两者的组合的方式实现。用于根据本发明的方法的可执行代码或其部分可以存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上以便当所述程序产品在计算机上执行时执行根据本发明的方法的非临时程序代码部件。
在优选实施例中,计算机程序包括适合于当计算机程序在计算机上运行时执行根据本发明的方法的所有步骤的计算机程序代码部件。优选地,在计算机可读介质上体现计算机程序。
综上所述,本发明通过将所述随机数发生器设置包括:熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;熵池模块存储、保护以及统计所述熵源模块输出的所述熵源数据;序列输出模块根据所述熵源数据,输出随机序列。熵源模块从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;并根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。所述熵池模块存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;并根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;以将所述熵池输出所述熵源数据输出到所述序列输出模块。所述序列输出模块将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;并且检测所述随机数发生器输出的所述随机序列的随机性。由此,实现了快速高质量的输出随机数。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
本发明公开了A1、一种移动终端的随机数发生器,包括:
熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;
序列输出模块,用于根据所述熵源数据,输出随机序列。
A2、根据A1所述的随机数发生器,所述熵源模块包括:
熵采集器,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;
熵估计单元,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
熵质量实时评估单元,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;
数据处理单元,用于根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。
A3、根据A2所述的随机数发生器,所述熵池模块包括:
池输入管理单元,用于根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;
混淆机制单元,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;
熵池,为连续的存储空间,用于存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;
池输出管理单元,用于将所述熵池输出所述熵源数据输出到所述序列输出模块。
A4、根据A3所述的随机数发生器,所述序列输出模块包括:
伪随机数发生器,用于将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;
输出策略单元,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;
随机性检测单元,用于检测所述随机数发生器输出的所述随机序列的随机性。
A5、根据A4所述的随机数发生器,所述熵采集器包括:
传感器数据采集器,用于采集所述移动终端的传感器源的传感器数据,并输出对应的所述熵源数据;
图像数据采集器,用于采集所述移动终端的图像源的图像数据,并输出对应的所述熵源数据。
A6、根据A5所述的随机数发生器,所述熵池包括:
随机池,为连续的存储空间,所述内部信息包括所述熵源数据的存放地址、所述随机池中熵的数量;所述熵的混淆次数;
熵计数器,用于记录所述随机池中熵的数量;
混淆次数单元,用于将所述熵混淆,并记录所述熵混淆的次数。
A7、根据A6所述的随机数发生器,所述池输入管理单元在所述熵计数器的计数值未达到预设的第一最大值时,将所述熵源数据添加到所述随机池,当所述熵源数据被添加到所述随机池后,控制所述熵计数器更新所述计数值;以及
在所述熵计数器的计数值达到所述第一最大值时,停止将所述熵源数据添加到所述随机池。
A8、根据A7所述的随机数发生器,所述混淆机制单元包括:
地址变更子单元,用于在复制所述熵源数据完成之后,将在所述熵源数据未复制到所述随机池前的池索引地址pre_add_ptr变为add_ptr;
数据输送子单元,用于选取所述pre_add_ptr的前32个字节和后64字节pre_add_ptr-32……pre_add_ptr+63送入到预设的加密算法中,再把所述预设的加密算法输出的32字节写入到所述pre_add_ptr……pre_add_ptr+31;
所述地址变更子单元将所述pre_add_ptr向前移动32字节,由pre_add_ptr到pre_add_ptr+32,并重复执行所述池索引地址的变更,直到所述pre_add_ptr移动到或者超过add_ptr的位置;并且当pre_add_ptr移动到所述随机池末尾时,所述地址变更子单元把所述pre_add_ptr重新移动到所述随机池开始处;
混淆次数控制单元,在所述熵源数据全部混淆完之后,增加所述熵源数据的混淆次数mix_counter,当所述混淆次数mix_counter达到预设的第二最大值时,停止增加。
A9、根据A8所述的随机数发生器,所述池输出管理单元包括:
内部状态判断子单元,用于判断所述随机池中所述熵源数据的混淆次数是否大于等于预设的第三最大值;
熵源数据采集通知子单元,用于在所述内部状态判断子单元判断所述熵源数据的混淆次数小于所述第三最大值,则向所述熵采集器发送通知信息,通知所述熵采集器再次采集所述熵源数据;
熵源数据输出子单元,用于在所述内部状态判断子单元判断所述熵源数据的混淆次数小于所述第三最大值,则将所述随机池中所述熵源数据的输出。
A10、根据A9所述的随机数发生器,所述池输出管理单元还包括:
刷新子单元,用于在所述将熵源数据输出子单元所述将所述随机池中所述熵源数据的输出之前,将所述随机池中所述熵源数据通过抗原像的随机函数进行处理。
A11、根据A10所述的随机数发生器,所述混淆次数单元采用单向函数对所述熵池中的所述熵源数据做混淆处理;
所述随机池的大小512字节。
所述第一最大值为4096;
所述第二最大值为100;
所述第三最大值为4;
所述预设的加密算法为国密算法SM3。
A12、根据11所述的随机数发生器,所述抗原像的随机函数进行处理过程包括:
所述刷新子单元将所述随机池[0,255]间的数据采用所述SM3处理,输出32字节tmp[32],将所述tmp[32]添加到所述随机池[add_ptr,add_ptr+31]间,并将所述tmp[32]作为SM3’的初始状态;
将所述随机池[256,511]间的数据用所述SM3’处理,输出32字节赋给所述tmp[32],将所述tmp[32]添加到所述随机池[add_ptr-32,add_ptr]间;
将所述随机池[add_ptr-224(%512),add_ptr+32(%512)]间的数据用所述SM3’处理,最终输出的32字节作为所述熵池模块输出的所述熵源数据。
A13、根据A4所述的随机数发生器,所述输出策略单元根据需要调用的所述随机序列的长度L,设置更换一次所述伪随机数发生器的种子;
如果L<=1KB,则每输出32B长度的序列后,则更换一次所述伪随机数发生器的种子;
如果L>1KB,则每输出10KB序列后,则更换一次所述伪随机数发生器的种子;
所述随机性检测单元采用密码学应用中的随机数和伪随机数发生器统计测试工具集NIST SP800-22检测所述随机性;
所述伪随机数发生器为梅森旋转随机数发生器;
所述密码学应用以离线的方式运行。
A14、根据A2所述的随机数发生器,
所述熵估计单元采用香农熵或者最小熵的熵估计方式获得多个所述熵源数据的熵估计值;
所述熵质量实时评估单元采用频数检测、游程检测或者自相关检测的方式对所述熵源数据进行质量实时检测;
所述数据处理单元根据所述熵估计值、所述熵源数据及其有效长度估算所述熵源数据所包含的熵。
本发明还公开了B1、一种适用于A1~A14任一项所述的移动终端的随机数发生器的随机数发生方法,所述方法包括:
所述熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
所述熵池模块存储、保护以及统计所述熵源模块输出的所述熵源数据;
所述序列输出模块根据所述熵源数据,输出随机序列。
B16、根据B15所述的随机数发生方法,所述熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出熵源数据包括:
所述熵采集器从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;
所述熵估计单元以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
所述熵质量实时评估单元对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;
所述数据处理单元根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。
B17、根据B16所述的随机数发生方法,所述熵池模块存储、保护以及统计所述熵源数据包括:
所述池输入管理单元根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;
所述混淆机制单元对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;
所述熵池存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;
所述池输出管理单元将所述熵池输出所述熵源数据输出到所述序列输出模块。
B18、根据B17所述的随机数发生方法,所述序列输出模块根据所述熵源数据,输出随机序列包括:
所述伪随机数发生器将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;
所述输出策略单元需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;
所述随机性检测单元检测所述随机数发生器输出的所述随机序列的随机性。
B19、根据B18所述的随机数发生方法,所述随机性检测单元检测所述随机数发生器输出的所述随机序列的随机性包括:
A、根据用户的操作调用所述随机数发生器,请求输出n字节随机数;
B、所述序列输出模块的输出策略单元计算所述n字节随机数需要m个种子;
C、所述序列输出模块向所述熵池模块请求所述种子;
D、所述池输出管理单元根据所述熵池的内部状态信息判断所述熵池的内部状态,如果内部状态不满足,则转到E),满足转L);
E、所述池输入管理单元向所述熵源模块请求填充所述熵池;
F、所述熵采集器开始从所述熵源采集所述熵源数据;
G、所述熵质量实时评估单元检测所述熵源数据的有效性;
H、所述数据处理单元根据所述熵质量实时评估单元返回的检测结果,判断是否需要重新采集所述熵源数据,如果需要转到F),否则转到I);
I、返回所述熵源数据到所述熵池模块;
J、所述熵池模块的池输入管理单元复制所述熵源数据到所述熵池;
K、所述熵池模块的混淆机制单元混淆熵池,转到D);
L、所述熵池模块的池输出管理输出所述种子,返回到所述序列输出模块;
N、采用所述种子初始化所述伪随机数发生器,所述伪随机数发生器输出随机序列;
M、所述输出策略单元判断是否已经请求了m个种子,没有则转到C);
O、所述输出策略单元返回n字节随机数。
本发明还公开了C20、一种电子设备,该电子设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器被执行根据B15~B19中任一项所述的随机数发生方法。
C21、根据C20所述的电子设备,所述电子设备为移动终端。
D22、一种计算机可读存储介质,该计算机可读存储介质存储一个或者多个程序,所述一个或者多个程序当被处理器执行时,实现B15~B19中任一项所述的方法。
Claims (10)
1.一种移动终端的随机数发生器,其特征在于,包括:
熵源模块,用于采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
熵池模块,用于存储、保护以及统计所述熵源模块输出的所述熵源数据;
序列输出模块,用于根据所述熵源数据,输出随机序列。
2.根据权利要求1所述的随机数发生器,其特征在于,所述熵源模块包括:
熵采集器,用于从所述移动终端的多个熵源中采集所述熵源数据,并对采集的所述熵源数据按照熵源种类分别进行预处理,使所述熵源数据符合熵估计和熵质量实时评估的格式要求;
熵估计单元,用于以离线的方式估计采集的各个所述熵源数据的熵,获得多个所述熵源数据的熵估计值;
熵质量实时评估单元,用于对采集的所述熵源数据进行质量实时检测,控制通过所述熵质量实时检测的所述熵源数据,并送往熵池;
数据处理单元,用于根据所述熵估计单元计算的所述熵估计值估算所述熵源数据所包含的熵;若所述熵为零或者未达到预设值,则所述熵采集器重新采集所述熵源数据。
3.根据权利要求2所述的随机数发生器,其特征在于,所述熵池模块包括:
池输入管理单元,用于根据所述熵池的内部状态信息判断是否将所述熵源数据存入所述熵池;
混淆机制单元,用于对所述熵源数据进行预处理,将所述熵源数据均匀地混合到所述熵池中;
熵池,为连续的存储空间,用于存储所述随机数发生器的内部状态信息数据以及所述池输入管理单元存入的所述熵源数据;
池输出管理单元,用于将所述熵池输出所述熵源数据输出到所述序列输出模块。
4.根据权利要求3所述的随机数发生器,其特征在于,所述序列输出模块包括:
伪随机数发生器,用于将所述随机序列从所述随机数发生器输出,并保护所述熵池的内部状态;
输出策略单元,根据需要输出的所述随机序列的长度设置更换所述伪随机数发生器的种子的周期;
随机性检测单元,用于检测所述随机数发生器输出的所述随机序列的随机性。
5.根据权利要求4所述的随机数发生器,其特征在于,所述熵采集器包括:
传感器数据采集器,用于采集所述移动终端的传感器源的传感器数据,并输出对应的所述熵源数据;
图像数据采集器,用于采集所述移动终端的图像源的图像数据,并输出对应的所述熵源数据。
6.根据权利要求5所述的随机数发生器,其特征在于,所述熵池包括:
随机池,为连续的存储空间,所述内部信息包括所述熵源数据的存放地址、所述随机池中熵的数量;所述熵的混淆次数;
熵计数器,用于记录所述随机池中熵的数量;
混淆次数单元,用于将所述熵混淆,并记录所述熵混淆的次数。
7.根据权利要求2所述的随机数发生器,其特征在于,
所述熵估计单元采用香农熵或者最小熵的熵估计方式获得多个所述熵源数据的熵估计值;
所述熵质量实时评估单元采用频数检测、游程检测或者自相关检测的方式对所述熵源数据进行质量实时检测;
所述数据处理单元根据所述熵估计值、所述熵源数据及其有效长度估算所述熵源数据所包含的熵。
8.一种适用于权利要求1~7任一项所述的移动终端的随机数发生器的随机数发生方法,其特征在于,所述方法包括:
所述熵源模块采集、检测以及评估所述移动终端的随机噪声事件数据,并输出满足预设要求的熵源数据;
所述熵池模块存储、保护以及统计所述熵源模块输出的所述熵源数据;
所述序列输出模块根据所述熵源数据,输出随机序列。
9.一种电子设备,其特征在于,该电子设备包括:
处理器,以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器被执行根据权利要求8所述的随机数发生方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质存储一个或者多个程序,所述一个或者多个程序当被处理器执行时,实现权利要求8所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211671.8A CN113448539A (zh) | 2020-03-24 | 2020-03-24 | 移动终端的随机数发生器、方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010211671.8A CN113448539A (zh) | 2020-03-24 | 2020-03-24 | 移动终端的随机数发生器、方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448539A true CN113448539A (zh) | 2021-09-28 |
Family
ID=77806395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010211671.8A Pending CN113448539A (zh) | 2020-03-24 | 2020-03-24 | 移动终端的随机数发生器、方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448539A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971165A (zh) * | 2024-03-21 | 2024-05-03 | 深圳市证通金信科技有限公司 | 一种伪随机数生成方法及装置 |
-
2020
- 2020-03-24 CN CN202010211671.8A patent/CN113448539A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971165A (zh) * | 2024-03-21 | 2024-05-03 | 深圳市证通金信科技有限公司 | 一种伪随机数生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1840731B1 (en) | A system and method for generating pseudo-random numbers | |
Killmann et al. | A proposal for: Functionality classes for random number generators | |
Mironov | On significance of the least significant bits for differential privacy | |
EP2150888B1 (en) | Initial seed management for pseudorandom number generator | |
Chen et al. | Randomness enhancement using digitalized modified logistic map | |
CN110651449A (zh) | 使用计数均值草图的差分隐私 | |
KR101292382B1 (ko) | 의사 난수 생성기 시드의 적응적 생성 | |
US8315383B2 (en) | Method and apparatus for random bit-string generation utilizing environment sensors | |
CN111190570A (zh) | 一种高质量随机数发生器及一种随机数生成方法 | |
Cho et al. | Random number generator using sensors for drone | |
Lambić | Security analysis and improvement of the pseudo-random number generator based on quantum chaotic map | |
CN116185341A (zh) | 真随机数的生成装置、方法、设备及存储介质 | |
CN115686437A (zh) | 随机数生成方法、装置、计算机设备和存储介质 | |
CN113448539A (zh) | 移动终端的随机数发生器、方法、设备及存储介质 | |
AL-khatib et al. | Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR | |
Van Herrewege et al. | Software only, extremely compact, Keccak-based secure PRNG on ARM Cortex-M | |
McEvoy et al. | Fortuna: cryptographically secure pseudo-random number generation in software and hardware | |
Yeoh et al. | A parallelizable chaos-based true random number generator based on mobile device cameras for the android platform | |
DE112009000152T5 (de) | Modulare Reduktion unter Verwendung einer speziellen Form des Modulo | |
CN113448540A (zh) | 移动终端的随机数发生器、方法、设备及存储介质 | |
CN106482742B (zh) | 计步数据的获取方法及装置 | |
Karimovich et al. | Computer's source based (Pseudo) random number generation | |
CN112580077B (zh) | 一种信息处理方法、装置、设备及存储介质 | |
Teh et al. | A true random number generator based on hyperchaos and digital sound | |
Bojanova et al. | Randomness classes in bugs framework (bf): True-random number bugs (trn) and pseudo-random number bugs (prn) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |