CN102622204A - 用于产生随机数的方法和设备 - Google Patents
用于产生随机数的方法和设备 Download PDFInfo
- Publication number
- CN102622204A CN102622204A CN2011104524214A CN201110452421A CN102622204A CN 102622204 A CN102622204 A CN 102622204A CN 2011104524214 A CN2011104524214 A CN 2011104524214A CN 201110452421 A CN201110452421 A CN 201110452421A CN 102622204 A CN102622204 A CN 102622204A
- Authority
- CN
- China
- Prior art keywords
- random number
- random
- basic
- produce
- bft
- 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
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
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)
- Storage Device Security (AREA)
Abstract
本发明提供了用于产生随机数的方法和设备。该方法由软件通过组合随机性的不同来源的硬币抛掷原理来模拟。从该“硬币抛掷仿真”随后结果中一位接一位地组合出将产生的随机数。本方法用于产生nRND个位BRi的随机数,其中,1≤i≤nRND-1,包括提供具有mBFT个可寻址的位BTj的随机位表BFT的步骤,其中,0≤j≤mBFT-1,该随机位表包括随机分布地相等数目的“0”位和“1”位,以及为随机数的位BRi(1≤i≤nRND),在0与mBFT-1之间的范围中产生地址FA,从随机位表中选择具有地址FA的位BTFA,并将该随机数的位BRi设置为等于来自随机位表中的位BTFA(BRi=BTFA)。
Description
本申请是分案申请,其原案申请的申请号为200780012334.9,申请日为2007年3月29日,发明名称为“用于产生随机数的方法和设备”。
技术领域
本发明大体涉及一种用于产生真随机数的方法和设备,并且更具体地,涉及一种用于产生这种随机数的基于软件的方法和设备。
背景技术
随机数用于多种用途,并在诸如仿真研究、信息处理、通信、以及加密的系统中扮演重要角色。
随机数通常被用作产生其它更长的伪随机数的序列的过程中的初始输入或种子。典型地,真随机数是不能成功重复以产生相同结果序列的物理过程的结果。例如,核同位素的衰变、闪电释放的静电、或由地球磁层的移位引起的寄生电荷都可以被用于驱动产生不能在另一地点或另一时间复制的随机数。
真随机数发生器产生统计上彼此独立的输出。因此,一些输出组、或在某一给定时间装置状态的折衷,不会减弱在过去或在将来产生的随机数的安全性。另一方面,设计真随机数发生器是棘手的(很多设计都依赖于精确的制造工艺);它们很难测试;它们对于能够操纵芯片输入(诸如Vcc)的对手来说是脆弱的;并且产生随机数的速度通常非常低。
为了更高速并更低成本地产生随机数,已经开发出了一些产生表现出或多或少可以接受的随机特性的伪随机数的基于数学的过程。
这些过程可以被适当地标注为伪随机数过程,因为它们产生了类似随机数、但不是理论上随机的结果。这些过程将短随机种子变换为具有类似随机数特性的更长的伪随机数序列。所有连续的伪随机数都是严格地从初始随机种子和这些处理的属性中得到的。
快速的处理速度是这些技术的关键优点,而这些过程中计算的复杂性使得产生的伪随机数极难预测。然而,一旦提供了初始随机种子,就没有新的“随机性”被引入到这些过程中了。
发明内容
本发明的目的是提供一种用于产生高质量随机数的基于软件的方法。
此目的是通过根据权利要求1的用于产生随机数的方法实现的。该方法基于抛“公平”硬币的柏努力试验的原理,该原理具有正好为50%概率来得到0位(bit)或1位(对应于正面或反面)的概率。在硬币抛掷中的确定的事实是下一结果与以前的结果不相关。通过结合不同来源的随机性,目前呈现的方法由软件模拟硬币抛掷的远离。
以非常普通的方式,通过从包含随机分布的相等数目的“0”位和“1”位的随机位表中随机地选择一个位的目前呈现的方法来重现硬币抛掷的结果。然后一位接一位地将来自于这个“硬币抛掷仿真”的连续结果的集合为将要产生的随机数。从而,用于产生具有nRND位的随机数BRi(其中,1≤i≤nRND)的方法包括以下步骤:
a)提供具有mBFT个可寻址的位BTj(其中,0≤j≤mBFT-1)的静态位表BFT,该静态位表包含任意分布的相等数目的“0”位和“1”位,以及
b)对于该随机数的位BRi(其中,1≤i≤nRND),产生在0到mBFT-1之间的范围中的地址FA,从该静态位表中选择具有地址FA的位BTFA,并将该随机数的位BRi设置为与来自静态位表中的位BTFA相等(BRi=BTFA)。
称作“位钓鱼表(Bit-Fishing-Table)”BFT的静态位表可以是一维的、随机地填满相等数目的“0”和“1”位的位表。BFT中的随机位形成本方法的产生的随机数输出的“无穷”变化和不可预知性的基础。随机位表BFT自身可以由任何导出“0”和“1”位的随机分布的适当方法(包括由如在本申请中呈现的方法)随机地产生。
(随机位的总)维数取决于应用类型。由于实现的原因,维数优选地选择为在65 536位(对应于8Kbyte)和4 294 967 296位(对应于512Mbyte)之间的范围中的2的指数。考虑后一界限以构成32位处理器结构中的理论界限。
对于加密应用软件,8KB、16KB、32KB和64KB版本具有特别的意义,因为它们容易地适合于智能卡或USB标志的安全存储器。因为BFT是产生的数的随机性的决定性要素,所以BFT,而不是种子,在加密应用中是唯一要保密的要素。应理解,对于顶级安全应用软件,仅8KB的“秘密”就可以足够。
事实上,在2,003529...*1019728个可能的8KB(265535)的表中,存在6,244451...*1019725个具有32768个“0”位和32768个“1”位的不同的表。因此对于给定的8KByte的BFT,在可能找到与原码(original)相比具有55%或更多相等的位的表之前,需要产生大约10141个表。为找到具有60%或更多相等的位的表,需要产生约10572个表,为达到70%相等的位,需要产生约102341个表,等等。如果我们假设地球上的人口会达到1000亿,并且每个人每秒将需要一个表,则1000年后我们看不到具有55%或更多相等的位-位置(bit-position)的两个表的几率(odd)会非常非常大。确实,由于得到与给定的表相比具有55%或更多相等的位-位置的表的可能性是10141分之一,故我们需要多于1070个表以找到具有多于55%相等的位的两个表的可能性,通过应用所谓的“生日悖论(birthday-paradox)”。考虑到1000年中产生的表的总数目会达到3.153*1021,所以几率确实非常非常大。
根据本发明的方法,有效地将简单的8Kbyte保密表的这种巨大的潜能转化为亿万个不可预测且分布较好的随机数。
应当注意,本方法一个位位置接着一个位位置地进行处理,以产生随机数。它遵循:将产生的随机数的长度nRND可以被选择为等于适合特定应用的任何数。
从静态位表BFT中选择的位的地址FA可以通过任意适合的、保证在给定范围内的地址的高质量随机性的方法而随机地产生。在本发明的优选实施例中,产生地址FA的所述步骤包括以下步骤:
a)提供q个基本随机值BRV,每个基本随机值BRV具有I位的长度;
b)提取选择的q个基本随机值BRV的每一个的I位中的一个,并从所选的位中组合出所述地址FA。
在可能的实施例中,存在四个基本随机值BRV1至BRV4,即,q=4,每个值均具有32位的长度,即,I=32。最终位置则是四个BRV的不同位置的组合。
为了得到分布较好的随机数,产生的最终地址FA也必须是在位钓鱼表BFT的整个地址空间中随机分布的。为了确保产生的地址的随机性,提取选择的q个基本随机值BRV的I位中的一个的步骤优选地包括对q个基本随机值BRV的每一个和从多个预定的特定最终地址组合参数FAAP中选择的一个进行“与”运算的步骤,而从所选的位中组合出所述地址FA的步骤包括将所述“与”运算的结果传入最终地址寄存器的步骤。
在优选的实施例中,配置所述最终地址参数FAAP,使得对于要产生的随机数的每个位BRi,从每个基本随机值BRV中选择的用于组合地址FA的位的数目pFA相等以及使得在产生随机数的个位BRi之后,基本随机值BRV的所述I位的每一个都已经被正好选择了一次。这就是说,确定FAAP,使得所述基本随机值BRV的每一位均仅使用了一次,并且使得在预定数目的执行之后,每个BRV的所有位均使用且仅使用了一次。
在上述的示例性实施例中,最终地址组合参数FAAP是(例如)用于组合“钓出(fishing)”下一位的最终BFT地址的16个特殊值(4组,每组4个)。这16个值可以被安排在4列A、B、C、D和4行1、2、3、4中。
为组合最终地址FA以确定要从BFT中提取的下一位BRi,使用来自一列中的四个参数(A1,A2,A3,A4)。在下一周期,即,在下一位BRi的FA的产生期间,该方法将使用来自B行的四个参数,然后C行和D行。准确计算的FAAP会保证地址的每一位均被恰当地组合。
选择FAAP值使得在4周期期间每个BRV都以不同位参与地址组合。确定FAAP值以使BRV的同一位不会被使用两次,是非常重要的,否则产生的随机数的良好分布就危在旦夕了。通过使用每行的4个参数中的每个位置中的一位来满足这点。
FAAP值可以被任意预定为给定的表(这看起来“非常随机”)并包括在程序指令中。可选地,在加密应用中我们想将随机FAAP表用作秘密会话密钥的情况下,这些FAAP值可以是随机产生的表。
基本随机值BRV优选地通过产生伪随机数PRND来计算;通过提供至少一个反馈修正(modifier)值FBM,该反馈修正被预定数目的先前产生的位BRi影响,以及通过对至少一部分所述产生的伪随机数和至少一个反馈修正FBM执行异或运算。
伪随机数PRND可以由(例如)线性同余(congruential)发生器产生并具有IPRND位的长度,而至少一个反馈修正FBM可以具有I位的长度,IPRND≥I。在此情况下,基本随机值BRV的产生可以包括产生的伪随机数PRND的最后I位与所述至少一个反馈修正FBM的异或运算。
在本方法的优选实施例中,多个反馈修正用于基本随机值的产生。本方法可以(例如)使用四个32位值(FBM1-FBM4)的表来产生BRV。
反馈修正应该受预定数目的之前产生的位BRi(例如,最后产生的32位)的影响。为此,反馈修正FBM优选地通过对预定的32位长基本修正值BM和产生位BRi的最后32位执行异或运算而产生。在本方法的可能的实现中,反馈修正FBM通过对多个预定的I位长的基本修正值BM中的一个和先前产生位BRi的最后I位执行异或运算而产生,其中,在每次产生反馈修正之后,所述的多个基本修正值BM的基本修正值BM被循环地排列。基本修正可以由(例如)16个无符号的32位整数BM1-BM16的表组成。
产生的最后32位的反馈影响产生的FBM的值,但并不决定该值本身。然而我们使用“反馈”的表达以表示产生的最后32位影响这些值的计算。
在本方法的优选实施例中,例如,每当请求的8、16、24或32位的随机数结束时,反馈修正FBM被周期地更新。这可以(例如)通过传递反馈修正FBM3到FBM4、传递反馈修正FBM2到FBM3、传递反馈修正FBM1到FBM2以及通过对下一BM和产生的最后32位进行异或而生成新FBM1来实现。在使用BM16之后,下一周期从BM1再次开始。
基本修正BM可以在本方法的初始步骤期间产生。计算这些值的推荐方式是交替地填充两个值的块,一个块填充与随机钓出的BFT的位异或的LCG 64位伪随机数,用于保证这些值的最佳保密性,以及一个块填充未修正的LCG随机数,用于保证从264个可能的种子中任意给定的种子的唯一性。
本发明的方法可以容易地在任意标准计算机上实现,诸如(例如)简单的个人计算机。因此,本发明还涉及一种计算机程序,包括用于执行已描述的产生随机数的方法的所有步骤的程序编码,或涉及一种计算机程序产品,存储在计算机可用介质上,该计算机程序产品包括可操作的指令,用于使可编程处理器执行如上文披露的用于产生随机数的方法。
另外,本发明还涉及一种计算机装置,包括存储装置,该存储装置具有存储在其中的、用于执行所提出的方法的所有步骤的程序编码以及用于执行所述程序编码以执行该方法的执行环境。在优选的实施例中,计算机装置还可以包括用于在每次启动时修正该方法的一个或多个初始参数(例如,种子)的装置。这种计算机装置(其应该优选地具有存储在安全内存中的同一芯片上的随机位表BFT)可以呈现用于产生不可预测的、不能被重现的随机数的著名的黑盒。
具体实施方式
从以下对于产生随机数的方法的优选实施例的描述中,本发明将更加显而易见。
为得到具有相同可能性的一位串(bit-string)给定长度(包括产生的最后一个)的任意理论上可能的组合,我们必须放弃现有的伪随机数发生器的算术方法。根据本发明的方法的基本的“无限”可能性主要来自于名为位钓鱼表(BFT)的随机表。
此表的大小(通常为2的指数个位的数目)可以从小至8Kbyte变化到512 Megabyte的理论界限(对于32位的处理器)。该表必须具有相等数目的1位和0位以保证产生1和0的概率相同。为保证最大程度的不可预测性,该表必须具有良好的随机特性。
为产生随机数,所提出的方法一个位位置接一个位位置地处理,以50%的概率得到1或0。每一位第一阶段都将产生(通过组合不同来源的随机性)BFT的大小范围内的随机地址FA,以及第二阶段将从随机表中选择此位并将它添加到正在构造的随机数中。
为操作第一实例中的方法,可以使用传统的64位版本的伪随机数发生器LCG。应当注意,传统的线性同余发生器仅用来操作这种新方法,但是所提出的方法的输出与LCG产生的随机数绝不相关。此LCG的主要特性是随机地出现64位的264个不同且唯一的值,但是顺序可以预测。这种实际情况违背真随机性的原则,被有利地应用在所提出的方法中,以保证来自每个种子最小264个位的串的唯一性。因此,可以确保从每个单个的位钓鱼表BFT在没有任何其它可能干扰地情况下得到至少2128位的最小产物(由于我们有264个可能的种子,并且每个种子将产生至少264位的不同的随机串)。
产种(seeding)过程是所提出方法的初始部分且需要几百个由LCG产生的第一伪随机值。产种过程必须达到两个不同目标。第一个目标是计算16个基本修正(BM)的值。这些基本修正是通过将8个寄存器中的来自LCG和BFT的一些信息以及其它8个寄存器中的来自LCG的未修正值组合而算得的。通过组合LCG和BFT可以排除通过知道种子而猜测来自这些寄存器中的值的可能性,以及通过使另一半未修正的值确保每个种子的唯一性。这些值会保持在未修正状态直到下次重新产种。
第二个目标是“填管(fill the pipe)”。这意味着在LCG伪随机数的帮助下我们通过从BFT中提取位来随机地计算在正常产生周期中所需的不同的寄存器的起始值。这涉及四个32位的反馈修正(FBM)、四个32位的基本的随机性值(BRV)以及带有产生的最后32位的寄存器。
作为可选的速度优化策略,在第一周期中,也可以用被考虑作为BFT的选择部分的随机值来填充32位寄存器。在第一个产生周期中我们使用这个值并开始请求将在第二周期中使用的下一个值,总是提前一个周期。通过这么做,我们在访问内存中的BFT时部分地避免了难以处理的延迟,因为处理器在等待期间能够做一些工作。
一旦此产种过程结束,我们可以开始“抛硬币”。提出的方法的基本周期是产生4位。这是因为本发明用于计算从BFT选择的位的最终地址。在实际的实现中,为了速度优化,可以在一个周期中链接两个基本周期以产生8位数。
如下所述产生一个位:
·计算下一个LCG数;
·通过对来自LCG的高32位和一个FBM(循环地从四个中选取一个)进行异或来计算一个BRV;
·通过“与”指令,将在特定的最终地址组合参数(FAAP)定义的选择的位从BRV1传递到最终地址(FA)寄存器;
·基于下一个FAAP,添加来自BRV2的一些位;
·同上来自BRV3;
·同上来自BRV4;
·在这些操作之后,我们获得了将从BFT中提取的位的地址,并且我们将此位添加到正在构建的随机数中。
在执行了一次、两次、三次或四次8位(对于8位、16位、24位或32位无符号整数)的产生之后,我们必须离开该主要循环以更新FBM的表。我们传递FBM3到FBM4、传递FBM2到FBM3以及传递FBM1到FBM2。通过对产生的最后32位和以循环方式确定的基本修正(BM)进行异或来重新计算FBM1。
现在可以重新开始下一个1、2、3或4byte的产生周期。如果需要高速产生更大量的随机数,推荐一次产生32位。另一方面,读者会从这些解释中容易地理解,由于在基本修正周期中提前不同,以及由于最后32位寄存器将不相同,以随机的方式从一个32位的请求改变为两个16位的请求(可能基于时钟或经过的时间)使我们能够产生不可复制的随机数。对于这个可能性,我们使用运行时间随机性的术语。
正如解释的,我们将得到264个每个均不同的264位的位串(LCG的每个不同种子的一个)。对于不同的BFT,我们当然将得到完全不同的串。
可能有人会说,对于给定的表和每次产种,这意味着在本方法运行完LCG的周期之前,仅具有258个64位的整数。有效地,在LCG的第一个周期之后,存在偶然进入到FBM的相同状态中的微小可能性。
但是这并不是需要担心的问题。首先,容易算得,即使每秒产生10亿个64位的整数,我们也要等待9年以上这种情况才会发生。其次,万一某天遇到这种问题,我们可以在264位产生之后促使自动的新的产种。如果想要通过在多处理器系统上并行处理来产生大量的随机数,我们可以选择每个处理器采用不同的BFT,或每个处理器采用一个BFT并使用不同的种子。
也存在其它可能性,如运行随机性或FAAP的自动改变等,因此,应该相信,如果我们使用PRGN工作,则由于我们需要尝试,故尝试计算周期性是不适当的。仅限于概率的基本原理,提出的方法会为每种速度提供产生从未见过(如果我们考虑256位长度)的随机数并决不重复的可能。我们可以得到如同我们想要其成为的那样的可再生或不可再生的随机数。对于用于加密应用的真正不可再生的随机数来说,应当推荐使用特别设计的微计算机,其在每次启动时自动增加种子,并具有存储在安全内存中的相同芯片上的、从外部不可读的保密BFT。这种微计算机会呈现著名的黑盒,用于产生不可预测的不能再生的随机数。
关于可达到的速度,我们符合在3GHz 64位EMT的因特尔奔腾4上,使用8KB的BFT达到每秒124Megabit(即,每秒15.5Megabyte)以及使用64KB的BFT达到115Megabit的标准。在运行在180MHz的小的ARM 9上,获得的速率是1.3Megabit每秒。编程语言是C-99,无手编汇编语言的优化。
由于在缓存器和主存储器之间的访问速度的差异,如果我们使用非常大的BFT,则速度会迅速降低。
总之,本发明提出了一种基于软件的用于产生高质量的具有真随机数特性的随机数的方法。因此本方法可以在任意的标准计算机上产生真随机数。
与最熟知的伪随机发生器相反,通过本文提出的方法而产生的随机数在前向和后向方向上均完全不可预测。除了为加密应用特别设计的伪随机位发生器之外,PRNG产生前向和后向都可预测的随机数。由于随机数是来自数学函数的结果,所以知道一个小序列的数使用户可以计算之前产生的以及将出现的下一序列。
基于位钓鱼表的概念,所提出的方法能够产生随机数,对于该随机数,只要位钓鱼表保密,基于序列的一部分的信息(knowledge)绝对不可能计算出已知部分以前或以后的未知串。
如果有人知道BFT,但不知道种子,则他不能计算种子,但可能他必须要试完所有的264个可能的种子以找到使用的那个。如果你知道种子和BFT,但是没有FAAP的值,在我们使用随机计算的FAAP的情况下,你就必须试完所有的亿万个可能的FAAP。
而且,所有的PRNG原则上具有周期,在该周期之后PRNG开始重复相同的随机数。这是由于在PRNG中使用的数学函数的缘故。对于传统的32位LCG,我们可以在现代台式计算机上用几分钟时间实践证明这个事实,而对于48位或64位版本,由于更长的周期,这个任务会更困难。对于所提出的方法,我们不关心这个问题。每一版本的BFT会保证264的不同串的264的长度的唯一产生。正如以上描述中指出的,存在不同的超出这些值的概率,即,运行时间随机性和FAAP的改变。扩展本方法以产生超过264位长度的最容易的方法是使用旧种子加一的自动的新的产种。这种在产种中简单的改变将不同串的数目扩展到2128个。
“PRNG的输出是种子的典型确定的函数,即,所有真随机性都限制于种子产生。该过程的确定性质引出了术语“伪随机”。因为伪随机序列的每个元素均是从种子中可再生的,所以如果需要伪随机序列的复制或确认,只需要保存种子”(用于加密应用的随机和伪随机数发生器的NIST特别公开800-22A统计测试集(NIST Special Publication 800-22A statisticaltest suite),第二段,点1.1.4)。在本发明提出的方法的情况下,种子扮演一个角色,但不是主要角色,且绝对但不唯一。随机性的主要来源是位钓鱼表(BFT),而种子、FAAP和在发生器的运行期间由运行时间随机性产生的可能的外部随机性是随机性的补充来源。
Claims (15)
1.一种用于产生含nRND个位BRi的随机数的方法,其中,i≤i≤nRND,所述方法包括以下步骤:
a)提供含mBFT个可寻址的位BTj的静态位表(BFT),其中,0≤j≤mBFT-1,所述静态位表包含随意分布的相等数量的“0”位和“1”位;以及
b)对于所述随机数的位BRi,其中1≤i≤nRND,
i.在0与mBFT-1之间的范围中产生地址FA,
ii从所述静态位表中选择具有所述地址FA的位BTFA,以及
iii.将所述随机数的所述位BRi设置为等于来自所述静态位表中的所述位BTFA(BRi=BTFA)。
2.根据权利要求1所述的方法,其中,所述的产生地址FA的步骤包括以下步骤:
a)提供整数q个基本随机值BRV,每个基本随机值BRV均具有I位的长度;
b)提取所述q个基本随机值BRV中的每一个的I位中选择的位,并将所选的位组合成所述地址FA。
3.根据权利要求2所述的方法,其中,所述的提取所述q个基本随机值BRV的I位中选择的位的步骤包括以下步骤:对所述q个基本随机值BRV中的每一个和从多个预定的特定最终地址组合参数FAAP中选择的一个进行“与”运算,而其中,所述的从所选的位组合成所述地址FA的步骤包括以下步骤:将所述“与”运算的结果传递到最终地址寄存器。
6.根据权利要求2至5中的任一项所述的方法,其中,通过以下步骤产生所述基本随机值BRV:
a)产生伪随机数PRND;
b)提供至少一个反馈修正值FBM,所述反馈修正受预定数量的以前产生的位BRi的影响,以及
c)对至少一部分所述的产生的伪随机数和所述至少一个反馈修正值FBM执行异或运算。
7.根据权利要求2至5中的任一项所述的方法,其中,通过以下步骤产生所述基本随机值BRV:
a)由线性同余发生器产生具有IPRND位的长度的伪随机数PRND,IPRND≥I;
b)提供至少一个具有I位长度的反馈修正值FBM,所述反馈修正受预定数量的以前产生的位BRi的影响;
c)对所述的产生的伪随机数的最后I位和所述至少一个反馈修正值FBM执行异或运算。
8.根据权利要求6或7所述的方法,其中,所述至少一个反馈修正值FBM是通过对预定的I位长的基本修正值BM和最后I个之前产生的位BRi执行异或运算而产生的。
9.根据权利要求6或7所述的方法,其中,所述至少一个反馈修正值FBM被周期性地更新。
10.根据权利要求8至9中的任一项所述的方法,其中,所述至少一个反馈修正值FBM是通过对多个预定的I位长的基本修正值BM中的一个和最后I个之前产生的位BRi执行异或运算而产生的,而其中,在每次产生反馈修正之后,所述多个基本修正值BM的基本修正值BM被循环地排列。
11.根据权利要求8至10中的任一项所述的方法,其中,所述基本修正值BM是在本方法的初始化步骤期间通过可选地填充两个值的块而产生的,一个块填充有对产生的随机数和所述静态位表(BFT)的随机选择的位进行异或运算的结果,而一块填充有未修正的产生的伪随机数。
12.一种存储在计算机可用介质上的计算机程序产品,其特征在于,指令,用于使可编程的处理器执行根据权利要求1至11中任一项所述的用于产生随机数的方法。
13.一种计算机程序,包括程序编码,所述程序编码用于当所述程序运行在计算机上时执行根据权利要求1至11中任一项所述的方法的所有步骤。
14.一种计算机装置,包括:
存储器装置,其上存储有程序编码,用于执行根据权利要求1至11中任一项所述的方法的所有步骤,以及
执行环境,用于执行所述程序编码,以执行根据权利要求1至11中任一项所述的方法。
15.根据权利要求14所述的计算机装置,还包括用于在每次启动时修改一个或多个用于所述方法的初始参数的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06112142A EP1840730A1 (en) | 2006-03-31 | 2006-03-31 | Method and apparatus for generating true random numbers |
EP06112142.2 | 2006-03-31 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200780012334 Division CN101416152A (zh) | 2006-03-31 | 2007-03-29 | 用于产生随机数的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102622204A true CN102622204A (zh) | 2012-08-01 |
Family
ID=37597075
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104524214A Pending CN102622204A (zh) | 2006-03-31 | 2007-03-29 | 用于产生随机数的方法和设备 |
CN 200780012334 Pending CN101416152A (zh) | 2006-03-31 | 2007-03-29 | 用于产生随机数的方法和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200780012334 Pending CN101416152A (zh) | 2006-03-31 | 2007-03-29 | 用于产生随机数的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8370412B2 (zh) |
EP (2) | EP1840730A1 (zh) |
JP (1) | JP2009531761A (zh) |
CN (2) | CN102622204A (zh) |
CA (1) | CA2648080A1 (zh) |
WO (1) | WO2007113214A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1840730A1 (en) * | 2006-03-31 | 2007-10-03 | Alain Schumacher | Method and apparatus for generating true random numbers |
US20100058424A1 (en) * | 2008-08-26 | 2010-03-04 | Comcast Cable Holdings, Llc | System and method for controlling signal traffic peaks on a video interactive network |
US9160399B2 (en) | 2012-05-24 | 2015-10-13 | Massachusetts Institute Of Technology | System and apparatus for decoding tree-based messages |
FR3000826B1 (fr) * | 2013-01-07 | 2015-01-16 | Morpho | Procede d'acces a l'ensemble des cellules d'une zone memoire a des fins d'ecriture ou de lecture de blocs de donnees dans lesdites cellules. |
CN104217487B (zh) * | 2013-05-30 | 2019-03-01 | 佛山市大迈信息科技有限公司 | 可验证的计算机排位方法 |
US9270412B2 (en) * | 2013-06-26 | 2016-02-23 | Massachusetts Institute Of Technology | Permute codes, iterative ensembles, graphical hash codes, and puncturing optimization |
US9645793B2 (en) * | 2013-12-05 | 2017-05-09 | Infineon Technologies Ag | Random permutation generator and method for generating a random permutation sequence |
CN105005462B (zh) * | 2015-09-06 | 2017-08-08 | 电子科技大学 | 一种混合式随机数发生器及其产生随机数的方法 |
KR101914701B1 (ko) * | 2016-12-29 | 2019-01-14 | 한국과학기술원 | 스토캐스틱 컴퓨팅 기반의 에스엔지 및 이를 이용한 뉴로모픽 회로 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59151184A (ja) * | 1983-01-07 | 1984-08-29 | ゼネラル・エレクトリツク・カンパニイ | ランダム・ノイズ・シミユレ−タ |
US4499551A (en) * | 1982-09-27 | 1985-02-12 | At&T Bell Laboratories | Rapid generation of discrete random variates from general distributions |
FR2829643A1 (fr) * | 2001-09-12 | 2003-03-14 | Everbee Wireless Ltd | Procede pour generer des nombres aleatoires |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3703727A (en) * | 1971-06-18 | 1972-11-21 | Bell Telephone Labor Inc | Method for generating random numerical quantities |
JPS62144243A (ja) | 1985-12-18 | 1987-06-27 | Nec Corp | 乱数発生器 |
JPS6467022A (en) | 1987-09-07 | 1989-03-13 | Mitsubishi Electric Corp | Digital noise generator |
JPH04123130A (ja) | 1990-09-13 | 1992-04-23 | Nippon Telegr & Teleph Corp <Ntt> | 任意確率分布に従う擬似乱数の発生回路 |
JPH07134647A (ja) | 1993-11-09 | 1995-05-23 | Matsushita Electric Ind Co Ltd | 乱数発生装置 |
US20030112970A1 (en) * | 2001-08-26 | 2003-06-19 | Arindam Mitra | How to generate unbreakable key through any communication channel |
JP3696209B2 (ja) * | 2003-01-29 | 2005-09-14 | 株式会社東芝 | シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器 |
EP1840730A1 (en) * | 2006-03-31 | 2007-10-03 | Alain Schumacher | Method and apparatus for generating true random numbers |
WO2008032044A1 (en) * | 2006-09-13 | 2008-03-20 | Astrium Limited | Random number generation |
-
2006
- 2006-03-31 EP EP06112142A patent/EP1840730A1/en not_active Withdrawn
-
2007
- 2007-03-29 CA CA002648080A patent/CA2648080A1/en not_active Abandoned
- 2007-03-29 JP JP2009502097A patent/JP2009531761A/ja active Pending
- 2007-03-29 CN CN2011104524214A patent/CN102622204A/zh active Pending
- 2007-03-29 EP EP07727517.0A patent/EP2002330B1/en active Active
- 2007-03-29 US US12/294,660 patent/US8370412B2/en active Active
- 2007-03-29 CN CN 200780012334 patent/CN101416152A/zh active Pending
- 2007-03-29 WO PCT/EP2007/053045 patent/WO2007113214A1/en active Application Filing
-
2013
- 2013-01-09 US US13/737,612 patent/US20140136584A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4499551A (en) * | 1982-09-27 | 1985-02-12 | At&T Bell Laboratories | Rapid generation of discrete random variates from general distributions |
JPS59151184A (ja) * | 1983-01-07 | 1984-08-29 | ゼネラル・エレクトリツク・カンパニイ | ランダム・ノイズ・シミユレ−タ |
FR2829643A1 (fr) * | 2001-09-12 | 2003-03-14 | Everbee Wireless Ltd | Procede pour generer des nombres aleatoires |
Also Published As
Publication number | Publication date |
---|---|
WO2007113214A1 (en) | 2007-10-11 |
JP2009531761A (ja) | 2009-09-03 |
EP2002330B1 (en) | 2015-05-20 |
CN101416152A (zh) | 2009-04-22 |
US20140136584A1 (en) | 2014-05-15 |
CA2648080A1 (en) | 2007-10-11 |
US20100241680A1 (en) | 2010-09-23 |
EP1840730A1 (en) | 2007-10-03 |
US8370412B2 (en) | 2013-02-05 |
EP2002330A1 (en) | 2008-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102622204A (zh) | 用于产生随机数的方法和设备 | |
L'Ecuyer | Software for uniform random number generation: Distinguishing the good and the bad | |
Ohrimenko et al. | The Melbourne shuffle: Improving oblivious storage in the cloud | |
Maas et al. | Phantom: Practical oblivious computation in a secure processor | |
Howes et al. | Efficient random number generation and application using CUDA | |
JP7006887B2 (ja) | 乱数発生器及び出力乱数を生成する方法 | |
AU2020202883B1 (en) | Systems and computer-implemented methods for generating pseudo random numbers | |
CN105339888A (zh) | 用于真随机数生成器的自动控制系统和方法 | |
CN105824602B (zh) | 输入-相依随机数产生装置及其方法 | |
DE102018125497A1 (de) | Verschlüsselungsvorrichtung und Betriebsverfahren dafür | |
L'Ecuyer | Uniform random number generators | |
Mariot | Enumeration of maximal cycles generated by orthogonal cellular automata | |
L'Écuyer et al. | Random numbers for parallel computers: Requirements and methods, with emphasis on gpus | |
Mertens et al. | Entropy of pseudo-random-number generators | |
Afshani et al. | Sorting and permuting without bank conflicts on GPUs | |
L’Ecuyer et al. | Random numbers for parallel computers: requirements and methods | |
US20130243192A1 (en) | Cryptographically Secure Pseudorandom Number Generator | |
US10146509B1 (en) | ASCII-seeded random number generator | |
Antonov | Random number generator based on multiplicative convolution transform | |
Keller et al. | Period lengths of chaotic pseudo-random number generators | |
Couturier et al. | Pseudorandom number generator on GPU | |
Cornaciu et al. | Multi-criteria method for evaluation of the pseudorandom number generators using thermodynamic systems behavior | |
Lin et al. | An implementation of the efficient huge amount of pseudo-random unique numbers generator and the acceleration analysis of parallelization | |
BLOTE | 7 The Delft Ising System | |
Hoogland et al. | The Delft Ising system processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120801 |