按照本发明的一个方面,提供一种产生随机数据的方法,该方 法包括:重复地完成一系列操作,这一系列操作包括:处理籽值以产 生结果值,该结果值用作随后一系列操作中的籽值,并产生输出随机 数据;其中这一系列操作还包括:确定是否有预定数量新的真随机数 据;若有这种数据,则根据新的真随机数据至少
修改产生的结果值。
按照本发明的第二方面,提供一种产生随机数据的装置,该装 置包括:真随机数据的数据源;存储籽值的
存储器;和处理装置,用 于进行一系列操作;这一系列操作包括:处理籽值以产生存储器中存 储的结果值,用作随后进行一系列操作中的籽值并产生输出随机数 据;其中这一系列操作还包括:确定是否有预定数量新的真随机数 据;若有这种数据,则根据新的真随机数据至少修改产生的结果值。
最好是,所述修改步骤包括:在产生结果值之前修改籽值。或 者,修改步骤可以包括:修改另一个籽值,或修改结果值。所述修改 步骤最好包括:对籽值中至少一些位与新的真随机数据对应位进行异 或运算或加法运算。籽值可以是单个变量的修改或者从一个变量到另 一个变量的变换。
输出随机数据最好是通过处理结果值产生的。
通过至少部分是在随机数发生器之外的随机过程测量,合适地 产生真随机数据,例如,通过比较两个
振荡器的速率。
最好是,仅仅一个振荡器是晶控振荡器。另一个振荡器是可以 安装在集成
电路上。最好是,与另一个振荡器比较,一个振荡器是更 准确和/或更稳定和/或更不易受环境变化的影响。在另一个振荡器的 预定振荡次数内,通过计数一个振荡器的振荡次数,可以产生真随机 数据。最好是,所述另一个振荡器是两个振荡器中较慢的振荡器。
真随机数据可以是所述振荡次数最低有效位中的1位或多位。
附图说明
参照附图,借助于例子描述本发明,其中:
图1是包括随机数发生器的通信装置方
框图;和
图2说明用于产生随机数的算法步骤。
图1的装置包括:伪随机数发生器1。图示的随机数发生器包含 处理器2,该处理器包括:通用处理
硬件3;非易失性程序存储器 4,用于存储处理硬件3的程序代码;和易失性临时存储存储器5, 用于处理硬件进行处理操作。然而,可以利用包括硬线处理设备和混 合硬件/
软件实施例的任何合适
数据处理装置。伪随机数发生器有输 入端6,借助于输入端可以在输出端7
请求输出随机数据。随机数发 生器可以接入真随机数据的数据源8。在该图的实施例中,数据源8 是在随机数发生器之外,而且在通信装置中有另一个功能。然而,数 据源可以是在随机数发生器之内和/或可以具有形成随机数据的专用 功能。
数据源8最好包括存储真随机位的存储器10,随机数发生器可 以利用这些得到的真随机位。随机数发生器可以通过链路11接入该 存储器,用于确定有多少个真随机位,读出得到的真随机位,和一旦 利用其中的真随机位之后,复位该存储器。
当随机数发生器1在输入端6接收到随机数据调用时,处理装 置2进行以下描述的一系列处理步骤以产生随机数。然后,随机数发 生器在输出端7输出该随机数。当随机数发生器被调用时,处理装置 安排成接入临时存储器5中存储的籽值,完成把籽值作为输入的算 法,并基于该籽值产生随机数据和另一个籽值,存储这个籽值用于该 算法的下一次
迭代。作为该算法的一部分,处理装置确定是否能从数 据源8得到新的真随机数据,这个新的真随机数据在算法前一次迭代 中还没有使用过。若可以有这种数据,则根据新的真随机数据,处理 装置修改本次迭代中原先采用的籽值,并利用修改的籽值作为本次迭 代的
基础;否则,利用原先采用的籽值作为本次迭代的基础。按照这 种方法,在得到真随机数据时,利用这个随机数据使形成的随机数据 更随机化,而不必等到真随机数据可用时形成数据。这种方法有一个 重要的优点,在输出端7收集到足够数据可以预测下一个输出数据 时,籽值按照不可预测的方法发生了变化。
现在描述可以利用的一个算法例子。
在执行该算法前,必须确定若干个常数值。在设计或构造随机 数发生器时,即,在系统建立时,可以合适地确定这些常数值。这些 常数值如以下所示:
N代表约为800的整数。
L是可以从数据源8得到的若干个真随机位。
K1和K2是小的费
马素数,例如,3,17,257和65537(K1和 K2可以相等)。
p1和p2是长度为N/2的不同素数。若“强-S-素数”定义为素 数p,其中S是非负整数,则p-1的强-(S-1)-素数因子至少是p的 位长度的3/4,强-0-素数就是素数;选取p1和p2为强-2-素数。
M是p1与p2的乘积。
一旦计算了M,p1和p2最好被不可恢复地丢弃或高度保密地 存储。
在进行该算法时调用的这些常数值:L,K1,K2和M最好存储 在
非易失性存储器4中。
在算法的每次迭代中,籽值用作该算法的输入。算法修改这个 籽值,修改的籽值作为该算法下一次迭代的籽值。用作下一次迭代的 籽值存储在临时存储器5的特定
位置9。算法需要的初始籽值是第一 次迭代的输入,调用初始籽值产生随机数据。形成初始籽值的一种方 法是,从数据源8中收集一系列随机位,并把这些随机位存储在特定 位置9中相继位的位置。形成初始籽值的另一种方法是,在非易失性 存储器4中存储另一个常数值;装入该常数值到特定的位置9;然 后,完成该算法的多次迭代,在调用相继迭代时,利用数据源8中的 随机数据修改籽值。当启动通信装置时(例如,在接通电源时),可 以采用这些方法中任何一种方法,因此,随机数发生器做好使用的准 备,它保持一个真随机籽值。
图2表示该算法的
流程图。
在调用该算法以产生随机数时,得到特
定位置9中存储的籽值 (图2中步骤30)。从特定位置得到的籽值作为变量x进行存储。 然后,检查存储器10以发现数据源8中是否有L个真随机位(步骤 31)。
若有L个真随机位,则把这些随机位装入到变量z中并使存储 器11复位。然后,根据这些真随机位,执行该算法的步骤32以修改 变量x。变量x的修改是设置它等于:
(xz)mod M
其中符号代表x的L个预定位中每1位与z的对应位进行异或 运算。异或运算的结果简约成模M,为了使它保持在该算法的算术界 限内。在系统建立时可以规定x中哪些位与z中哪些位进行异或运 算。
若没有真随机位,则不修改x。
然后,产生从随机数发生器输出的随机数据,并作为变量v进 行存储。变量v设置成等于xK1模M(步骤35)。v的值作为在输出 端7可以得到的随机位。
然后,在变量w中形成该算法下一次迭代的籽值,变量w设置 成等于(x+1)K2模M(步骤33)。
最后,w的值存储到特定位置9用于代替以前的籽值,并允许 它作为下一次迭代中x的初始值。
取代籽值与真随机位的的异或运算,也可以利用其他的方法。 例如,在适当的算法中,可以根据随机数据修改输入籽值之外的另一 个籽值。具体地说,在以上的算法中,可以修改输出籽值。可以利用 异或运算以外的其他运算,例如,算术位移或加法运算。
可以有多种产生真随机数据的方法。这些例子包括:使装置中 模拟
传感器的噪声模拟值数字化,例如,
温度传感器14中的电压电 平;或用户在
键盘16上各次按键之间的时间间隔。一种优选的方法 是利用一对振荡器12,13,这两个振荡器有不同的短期准确度
水 平,即,抖动’,且最好有基本不同的速率。
图1的装置是无线电通信装置。振荡器12是相对快速,相对准 确并有相对低抖动的振荡器。振荡器12用于射频调制传输
信号,它 的合适
频率为几十兆赫芝,例如,GSM基系统的13或26MHz。振 荡器13是较慢速,较不准确并有较大抖动的振荡器,该振荡器可用 于快速振荡器关断时各个周期之间的间隔定时。振荡器13的频率可 以是几千赫芝。高准确度振荡器12适合于来自晶体的定时,而低准 确度振荡器13是基于简单的
电阻和定容器电路,该电路可以是与处 理器2相同的集成电路。因此,振荡器12与振荡器13的频率之间很 可能发生漂移,例如,由于温度的变化和由于
电阻器中热噪声的随机 起状。
为了产生随机数据,计数器16计数快速振荡器在预定次数慢速 振荡器周期内的翻转次数,这个预定次数最好是很小的数。所以,利 用这些最低有效位中的1位或多位作为随机数据。例如,在快速振荡 器的频率为16MHz和慢速振荡器的频率为1kHz时,在典型的条件 下,可以利用这个计数的最低1位或2位作为随机数据。这个计数是 周期性进行的,其结果位存储在存储器10中。因此,在完成计数之 后,随机数发生器可以有新的数据。在随机数发生器上次调用之后还 没有完成计数,则不能得到新的数据,在此情况下,随机数发生器仍 然可以提供输出数据,因为它可以确定是否有新的真随机数据。
处理器可以是形成随机数的专用装置,或可以完成其他的功 能。在后者的情况下,处理器产生的随机数可以在该处理器随后实施 的其他操作中进行处理。
本发明可以包括此处暗示或明示公开的任何特征或这些特征的 组合,或任何的推广,不管它是否与本
申请的发明有关。鉴于以上的 描述,显而易见,本领域专业人员在本发明的范围内可以作各种改 动。