随机数发生器系统、产生随机数的方法技术方案

技术编号:2911629 阅读:232 留言:0更新日期:2012-04-11 18:40
根据一典型实施例,一种随机数发生器系统,包括:预处理单元和随机数发生单元,其中,预处理单元适于根据外部种子和/或系统变量和/或与堆栈相关的动态变量计算内部种子,随机数发生单元适于通过使用确定函数来产生随机数,其中确定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种随机数发生器系统、一种产生随机数的方法、一种计算机可读介质、以及一种程序单元,具体涉及一种产生随机数的方法。
技术介绍
存在许多产生随机数的算法和方法。通常,这些算法直接或间接基于数学函数。由于数学是“精密科学”,因此总存在一些确定因素。因而,这些方法又被称作“伪”随机数发生器。按照惯例,根据单个或多个数学函数来构建随机数发生算法。典型地,随机数发生算法利用由应用程序初始化的所谓“种子”。将这个种子用在计算下个随机数的函数中。由于使用了数学函数,由这些数学函数产生的数将形成明确的序列,并且可以对下个随机数进行预测。因此,实际上这并非是“随机”数发生。以下公式(选自实际应用的随机数发生算法之一)对这点进行了示例:random(xi)=(xi-1*31421)+6927,其中1≤i≤n,并且x0=0。上述函数产生以下数列: i[调用号]random(i)06927131421*random(0)+6927231421*random(1)+6927331421*random(2)+6927......表1从上述表格中可以看出,始终可以预测出后面的数。该可预测性-->导致该方法中的“伪”随机性。同样,存在产生随机数的一些其他方法,这些方法接收来自诸如外部硬件、应用软件等外部源的输入。例如,从US 5 778 069可以得知一种随机数发生器,包括:输入设备,用于将来自多个源的多种比特组合为输入比特串。多种比特包括:从至少一个内部源到随机数发生器的内部类型的比特,如保持发生器当前状态的静态比特寄存器。输入设备还采集来自一个或多个位于随机数发生器外部的源的外部类型的比特,如涉及计算机操作参数的机器类比特,以及涉及执行在计算机上运行的应用程序的应用程序类比特。输入设备将三种类型的比特级联成任意长度的输入比特串。随机数发生器还具有散列计算设备,用于计算由输入设备组合的输入比特串的m-位散列值。散列计算设备使用诸如SHA(安全散列算法)等散列函数对散列值进行计算,因而,它无法以计算方式根据输出散列值导出级联的输入比特串或有意使散列函数的输出发生偏差。SHA是将512-位输入比特串减小为160-位散列值的单向散列。散列值是随机数发生器的初始化种子。流发生器(即,流加密器)耦合至散列计算设备以接收散列值。流发生器将散列值用作初始化种子以产生由随机(或伪随机)比特构成的输出比特串。从WO2005/029315可以得知利用SHA-1和DES加密标准技术来产生伪随机数的另一方法和系统,其中,使用物理随机的外部输入来周期性地更新伪随机数发生器的键值(re-key)。根据这里描述的一个实施例,从非易失性存储器载入当前种子值Sj。接着,同样载入表示环境随机性的E和表示配置数据的Cm。根据方程Sj+1=f(Sj;A;C;E)产生新种子值Sj+1,其中,f表示所选择的加密算法,B表示第二常量,并且Sj与A级联、A与S级联、S与E级联。然后将新种子写入非易失性存储器。接着,根据方程K=f(Sj;B;C;E)产生密钥K,其中,B是第二常量。最后,根据方程Pn=f3DES(K,Pn-1)产生伪随机数输出Pn,其中,f3DES表示三重DES加密硬件的操作,Pn-1是先前产生的伪随机数。-->
技术实现思路
期望提供一种随机数发生器系统、一种产生随机数的方法、一种计算机可读介质、以及一种程序单元,可以在不依赖专用于该目的的任何类型的外部硬件,高效地产生随机数。根据独立权利要求的一种随机数发生器系统、一种产生随机数的方法、一种计算机可读介质、以及一种程序单元可以满足上述期望。根据一典型实施例,随机数发生器包括:预处理单元和随机数发生单元,其中,预处理单元适于根据外部种子和/或系统变量和/或动态变量计算内部种子,随机数发生单元适于通过使用确定函数来产生随机数,其中,确定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。根据一典型实施例,提供了一种利用随机数发生系统来产生随机数的方法,包括:输入外部种子,通过使用外部种子和/或系统变量和/或动态变量来产生内部种子,以及通过使用预定函数来产生随机数,所述预定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。根据一典型实施例,提供了一种存储了用于产生随机数的程序计算机可读介质,当处理器执行所述程序时,所述程序适于控制一方法,所述方法包括:输入外部种子和/或系统变量和/或动态变量,通过使用外部种子来产生内部种子,以及通过使用预定函数来产生随机数,所述预定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。根据一典型实施例,存储了一种用于产生随机数的程序单元,当处理器执行所述程序时,所述程序适于控制一方法,所述方法包括:输入外部种子,通过使用外部种子和/或系统变量和/或动态变量来产生内部种子,以及通过使用预定函数来产生随机数,所述预定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。本专利技术的典型实施例的要点可以被视为,提供一种不同于其传统对应方法的、实现随机数发生器的新颖、简单和易于理解的方法,这是由于它没有利用数学函数来产生随机数。取而代之的是,它使用系-->统的动态元素(或运行时环境),即,使用正在执行的进程/任务/线程的堆栈的内容作为用于产生随机数的输入参数,由于堆栈是执行该算法的操作环境中动态变化(由于其增长和减小)最强的实体之一,因此使随机数发生更不可预测,并因而更加“随机”。也就是说,根据典型实施例,可以利用,应用程序本身的执行环境能够提供许多动态参数,而这些动态参数很容易有资格成为随机数发生算法的更好的候选输入这一事实。执行环境的最不可缺少的实体之一是堆栈。在执行时,处理器隐含假设存在堆栈。由于操作系统提供多任务抽象(multi-tasking abstraction),针对每个进程/任务提供分离的堆栈(在多线程的应用中,每一个线程具有其自身的堆栈)。每一进程/任务在执行时使用自己的堆栈。在执行程序期间,堆栈随着每一个函数调用和返回相应地增长和减小。与根据US 5 778 069的方法相比,基本差别可能在于,根据US 5778 069,由于其属于密码应用,因此为了便于加密文本的解密,对于给定的输入初始种子,随机数发生序列保持相同。然而,根据本专利技术的上述典型实施例,不管外部(初始)输入种子值如何、该方法的调用地点在哪儿、还是是否进行连续调用,都产生不同的随机数。术语“函数”必须以广义方式来理解,而不仅限于数学函数。同样,将可代表比特串的初始种子形成与该比特串相对应的数字,从而不需要进一步的计算或数学运算。以下将描述随机数发生器系统的另一典型实施例。然而,这些实施例还适用于产生随机数的方法、计算机可读介质和程序单元。根据随机数发生器系统的另一典型实施例,至少一个动态运行时变量包括以下各项之一:返回地址、程序计数器、堆栈指针、未初始化的局部变量、存储在堆栈中的架构特有的寄存器值。所有这样的动态运行时变量是更加“不可靠”的参数。因此,为了使该算法产生更“随机”的值,应避免使用数学函数。然而,数学函数还可以与这些参数相组合,以可能使随机数发生器系统更加有效。预定(执行)函数可以仅使用被称作“堆栈帧”的堆栈的一部分。执行函数的堆栈帧本文档来自技高网
...

【技术保护点】
一种随机数发生器系统,包括: 预处理单元;以及 随机数发生单元; 其中,预处理单元适于,根据外部种子和/或系统变量和/或与堆栈相关的动态变量计算内部种子;并且 其中,随机数发生单元适于,通过使用确定函数来产生随机数, 其中,确定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。

【技术特征摘要】
【国外来华专利技术】EP 2006-6-20 06115696.41、一种随机数发生器系统,包括:预处理单元;以及随机数发生单元;其中,预处理单元适于,根据外部种子和/或系统变量和/或与堆栈相关的动态变量计算内部种子;并且其中,随机数发生单元适于,通过使用确定函数来产生随机数,其中,确定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。2、根据权利要求1所述的随机数发生器系统,其中,所述与堆栈相关的至少一个动态运行时变量是以下各项之一:返回地址;程序计数器;堆栈指针;未初始化的局部变量;以及存储在堆栈中的架构特有的寄存器值。3、根据权利要求1或2所述的随机数发生器系统,还包括:后处理单元,其中,所述后处理单元适于对随机数进行后处理。4、根据前述权利要求中任一项所述的随机数发生器系统,其中,当计算第一随机数时,至少一个系统变量是以下各项之一:系统时间;进程ID;任务ID,以及线程ID。5、根据权利要求4所述的随机数发生器系统,其中,所述随机数发生器系统适于使用第一随机数作为内部种子,用于直接或间接地产生第二随机数。6、一种利用随机数发生系统来产生随机数的方法,包括:输入外部种子;通过使用外部种子和/或系统变量和/或与堆栈相关的动态变量来产生内部种子;以及通过使用预定函数来产生随机数,所述预定函数是内部种子和与堆栈相关的至少一个动态运行时变量的函数。7、根据权利要求6所述的方法,其中,所述与堆栈相关的至少一个动态运行时变量是以下各项之一:返回地址;程序计数器;堆栈指针;未初始化的局部变量;以及存储在堆栈中的架构特有的寄存器值。8、根据权利要求6或7所述的方法,其中,当计算第一随机数时,至少一个系统变量是以下各项之一:系统时间;进程ID;任务ID,以及线程ID。9、根据权利要求6至8中任一项所述的方法,其中,所述预定函数包括:从内部种子中选择一些比特,并从至少一个动态运行时变量中选择一些比特。10、根据权利要求6至8中任一项所述的方法,其中,所述预定函数包括:对来自内部种子和至少一个动态运行时变量的所有比特进行级联。11、根据权利要...

【专利技术属性】
技术研发人员:基兰纳加拉杰
申请(专利权)人:NXP股份有限公司
类型:发明
国别省市:NL[荷兰]

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

1