随机数生成器转让专利

申请号 : CN201610101609.7

文献号 : CN105912301B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·布奇R·卢奇

申请人 : 英飞凌科技股份有限公司

摘要 :

根据一种实施方式描述了一种随机数生成器,其包括振荡器装置、计数电路和输出电路,所述振荡器装置包括第一振荡器和第二振荡器,其中,所述振荡器装置如此配置,使得所述第二振荡器的预给定的输出状态触发所述第一振荡器从第一振荡速度到第二振荡速度的转变,并且所述第一振荡器的预给定的输出状态触发所述第一振荡器从第二振荡速度到第一振荡速度的转变,所述计数电路被配置用于对在所述第一振荡器从所述第一振荡速度到所述第二振荡速度的两次转变之间所述第一振荡器的和/或所述第二振荡器的时钟周期的数量进行计数,所述输出电路被配置用于基于所计数的时钟周期的数量输出随机数。

权利要求 :

1.一种随机数生成器,所述随机数生成器包括:

振荡器装置,所述振荡器装置包括第一振荡器和第二振荡器,其中,所述振荡器装置被如此配置,使得所述第二振荡器的预给定的输出状态触发所述第一振荡器从第一振荡速度到第二振荡速度的转变,并且所述第一振荡器的预给定的输出状态触发所述第一振荡器从所述第二振荡速度到所述第一振荡速度的转变;

计数电路,所述计数电路被配置用于对在所述第一振荡器从所述第一振荡速度到所述第二振荡速度的两次转变之间所述第一振荡器的和/或所述第二振荡器的时钟周期的数量进行计数;

输出电路,所述输出电路被配置用于基于所计数的时钟周期的数量输出随机数。

2.根据权利要求1所述的随机数生成器,其中,所述第一振荡速度大于所述第二振荡速度。

3.根据权利要求1或2所述的随机数生成器,所述随机数生成器包括触发器,所述触发器被配置用于存储用于控制所述第一振荡器的振荡速度的控制量,其中,通过所述第一振荡器的预给定的输出状态将所述控制量设置为第一值,并且通过所述第二振荡器的预给定的输出状态将所述控制量重置为第二值。

4.根据权利要求1或2所述的随机数生成器,其中,所述第一振荡器的预给定的输出状态是所述第一振荡器的上升时钟边沿,并且所述第二振荡器的预给定的输出状态是所述第二振荡器的上升时钟边沿。

5.根据权利要求1或2所述的随机数生成器,其中,所述计数电路包括第一计数器和第二计数器,所述第一计数器被配置用于对在所述第一振荡器从所述第一振荡速度到所述第二振荡速度的两次转变之间所述第一振荡器的时钟周期的数量进行计数,所述第二计数器被配置用于对在所述第一振荡器从所述第一振荡速度到所述第二振荡速度的两次转变之间所述第二振荡器的时钟周期的数量进行计数,以及所述输出电路被配置用于基于所计数的所述第一振荡器的时钟周期的数量以及基于所计数的所述第二振荡器的时钟周期的数量来确定所述随机数输出。

6.根据权利要求1或2所述的随机数生成器,其中,所述输出电路被配置用于基于所计数的所述第一振荡器的时钟周期的数量和所计数的所述第二振荡器的时钟周期的数量的数对到随机值的双射映射来确定所述随机数输出。

7.根据权利要求1或2所述的随机数生成器,其中,所述输出电路被配置用于基于所计数的所述第一振荡器的时钟周期的数量和所计数的所述第二振荡器的时钟周期的数量的级联来确定所述随机数输出。

8.根据权利要求1或2所述的随机数生成器,所述随机数生成器包括检测电路,所述检测电路被配置用于确定所述第一振荡器从所述第一振荡速度到所述第二振荡速度的转变。

9.根据权利要求8所述的随机数生成器,其中,所述检测电路被配置用于当所述检测电路检测到所述第一振荡器从所述第一振荡速度到所述第二振荡速度的转变时输出指示发生了所述第一振荡器从所述第一振荡速度到所述第二振荡速度的转变的信号。

10.根据权利要求9所述的随机数生成器,其中,所述计数电路被配置用于基于由所述检测电路输出的信号对时钟周期的数量进行计数。

11.一种处理装置,所述处理装置包括根据权利要求1至10中任一项所述的随机数生成器,所述处理装置被配置用于基于所输出的随机数来实施安全操作。

12.根据权利要求11所述的处理装置,其中,所述安全操作是加密操作。

13.根据权利要求11或12所述的处理装置,其中,所述处理装置是芯片卡。

说明书 :

随机数生成器

技术领域

[0001] 本发明涉及一种随机数生成器。

背景技术

[0002] 在电子设备中,例如在芯片卡中,经常需要随机数序列,例如用于加密应用。当建立随机数的序列时,其熵是重要的序列质量说明,因为只有高的熵才保证高的安全性,例如保证侵入者不会猜出序列的随机数。因此用于建立具有几乎最大的熵的随机数序列的方法是值得期待的。

发明内容

[0003] 根据一种实施方式,提供了一种随机数生成器,所述随机数生成器包括振荡器装置、计数电路和输出电路,所述振荡器装置包括第一振荡器和第二振荡器,其中,所述振荡器装置如此配置,使得所述第二振荡器的预给定的输出状态触发所述第一振荡器从第一振荡速度到第二振荡速度的转变,并且所述第一振荡器的预给定的输出状态触发所述第一振荡器从第二振荡速度到第一振荡速度的转变,所述计数电路被配置用于对在所述第一振荡器从所述第一振荡速度到所述第二振荡速度的两次转变之间所述第一振荡器的和/或所述第二振荡器的时钟周期的数量进行计数,所述输出电路被配置用于基于所计数的时钟周期的数量输出随机数。

附图说明

[0004] 在附图中,相同的附图标记通常在所有不同视图中涉及相同部分。附图不一定是按比例的,而重点通常在于阐述本发明的原理。在以下描述中参考以下附图描述了不同方面,其中:
[0005] 图1示出了芯片卡。
[0006] 图2示出了混沌振荡器。
[0007] 图3示出了根据图2的受控振荡器的相位图。
[0008] 图4、5和6示出了对于图2中的混沌系统的三种情形而言的混沌映射。
[0009] 图7示出了随机数生成器。
[0010] 图8示出了根据一种实施方式的随机数生成器。
[0011] 图9更详细地示出了根据一种实施方式的随机数生成器。
[0012] 图10、11和12示出了表示图9中的数生成器对于在图4、5和6中示出的三种情形而言的特性的信号图。

具体实施方式

[0013] 以下的详细描述涉及附图,其为了进行说明示出本发明的特定细节和方面,在这些特定细节和方面中能够实施本发明。可以使用其他方面并且可以进行结构方面的、逻辑方面的和电学方面的改变,而不脱离本发明的保护范围。本发明的不同方面不必然彼此排斥,因为本发明的一些方面可以与本发明的一个或多个其他方面结合,以形成新的方面。
[0014] 图1示出了芯片卡100。
[0015] 所述芯片卡100包括载体101,在所述载体上布置芯片卡模块102。所述芯片卡模块102包括不同的数据处理部件,例如存储器103、处理器104和例如专用的加密处理器105。所述芯片卡模块102包括随机数生成器106。所述随机数生成器106例如可以向处理器104或加密处理器105输送随机数序列,其中,所述加密处理器例如可以基于所述随机数序列实施加密操作。
[0016] 所述随机数生成器106例如可以如在图2中示出那样包括混沌振荡器作为噪声源。
[0017] 图2示出了混沌振荡器200。
[0018] 所述混沌振荡器200包括受控振荡器(kontrollierter Oszillator)201和边沿触发式置位/复位触发器(RS-FF:set-reset flip flop)202,所述受控振荡器的速度可以在两个不同频率之间切换(所述两个不同频率称为“慢”和“快”,例如在几MHz范围内,例如快频率是2MHz而慢频率是1MHz),所述边沿触发式置位/复位触发器通过受控振荡器201的有效边沿置位并且通过基准振荡器的有效边沿——即通过时钟信号203(外部时钟,时钟)复位。因此,受控振荡器201与触发器202的S输入端连接,并且向触发器202的R输入端输送时钟信号203。
[0019] 触发器202的输出端控制受控振荡器201的频率:如果所述触发器被置位,则所述触发器将受控振荡器201设置为“快”,如果所述触发器被复位,则所述触发器将受控振荡器设置为“慢”。受控振荡器201的输出端是混沌振荡器200的输出端。通过使能信号204来激活触发器202和受控振荡器201。
[0020] 在图3中示出了受控振荡器201的相位演变。
[0021] 图3示出了受控振荡器201的相位图300。
[0022] 受控振荡器201的相位v沿着相位轴301在0和1之间变化。关于以沿着时间轴302的基准时钟信号203的相位u(在0和1之间)的形式说明的时间示出所述相位。
[0023] 假设受控振荡器201处于快配置中,则可以看到:受控振荡器的速度在基准振荡器的上升边沿处——即在时钟信号203的相位u=0时立即切换成“慢”,并且所述周期的剩余部分以慢速度实施。受控振荡器201在其自身的上升边沿处(即,在相位v=1时)切换回快配置。在此,“Steigungschnell(快斜率,slopeFast)”是在快配置中的相位变化,而“Steigunglangsam(慢斜率,slopeSlow)”是在慢配置中的相位变化。
[0024] 通过当受控振荡器201切换回快配置时基准振荡器的相位(即,时钟信号203)被定义为相应的离散时间混沌系统的状态参量,可以由图3以几何方式导出状态参量的混沌映射(chaotische Abbildung),其结果如下:
[0025]
[0026] 其中,在第i次迭代时的状态参量是ui的前提下ui+1是第(i+1)次迭代时的状态参量的值。可以看出,混沌映射是具有恒定导数k=Steigungschnell/Steigunglangsam的分段线性函数。常数ln|k|表示在混沌理论中称作混沌系统的李雅普诺夫指数(Ljapunow-Exponent)的参量,并且系统的熵率(即,在每一次迭代时建立的熵)等于log2(k)。
[0027] 图4、5和6示出了根据公式(1)的混沌系统的三种情形的混沌映射400、500、600。
[0028] 在这些混沌映射中,ui从左向右沿着相应的x轴401、501、601增大,而ui+1从下向上沿着相应的y轴402、502、602增大。
[0029] 图4示出了Steigungschnell<1的情形。在所述情形中,可以简化公式(1)中的内部模函数。在所示示例中,Steigungschnell=0.75并且k=2.5。
[0030] 图5示出了Steigungschnell>1并且Steigunglangsam<1的情形。在所示示例中,Steigungschnell=2.5并且k=4。
[0031] 图6示出了Steigunglangsam>1的情形。在所述情形中,可以简化公式(1)中的外部模函数。在所示示例中,Steigungschnell=6并且k=2.5。
[0032] 在图7中示出了一种用于借助于混沌振荡器200建立随机流的途径。
[0033] 图7示出了随机数生成器700。
[0034] 所述随机数生成器700基于对快速振荡器706的采样。所述随机数生成器700包括混沌振荡器705,所述混沌振荡器具有如已经参考图2描述的受控振荡器701和RS触发器702。混沌振荡器705附加地包括第一D触发器703,所述第一D触发器接收RS触发器702的输出作为时钟信号并且接收所述第一D触发器的通过反相器反相的输出,其中,D触发器包括自身输出端经过反相器704向自身D输入端的反馈。
[0035] 因此,由RS触发器702输出的控制信号“慢_快”被除以2,因为控制信号“慢_快”可以具有非常短的电压尖峰,因此由第一D触发器703实现的除法器确保了无电压尖峰的时钟。
[0036] 第一D触发器703的输出信号osz_o用于借助于第二D触发器707对快速振荡器706进行采样。特别地,将第一D触发器703的输出信号输送给第二D触发器707的时钟输入端,并且将快速振荡器706的输出输送给第二D触发器707的D输入端。通过使能信号708能够激活部件701、702、703、706、707。
[0037] 第二D触发器707的输出是随机数生成器700的随机输出流bit_o。
[0038] 所建立的比特流bit_o的熵不可以直接由李雅普诺夫指数导出。在最佳情形中,所建立的比特流的熵率可以最大是1,而当k>1时混沌振荡器的熵率log2(k)>1。
[0039] 以下描述随机数生成器,其例如允许提取由例如在图2中示出的混沌振荡器建立的全部熵,其中,混沌振荡器在随机数生成器中用作噪声源。
[0040] 图8示出了根据一种实施方式的随机数生成器800。
[0041] 所述随机数生成器800包括振荡器装置801,所述振荡器装置包括第一振荡器802和第二振荡器803,其中,所述振荡器装置801如此配置,使得第二振荡器803的预给定的输出状态触发第一振荡器802从第一振荡速度到第二振荡速度的转变,而第一振荡器802的预给定的输出状态触发第一振荡器802从第二振荡速度到第一振荡速度的转变。
[0042] 所述随机数生成器800还包括计数器电路804和输出电路805,所述计数器电路被配置用于对在第一振荡器802从第一振荡速度到第二振荡速度的两次转变之间第一振荡器802的和/或第二振荡器803的时钟周期的数量进行计数,所述输出电路被配置用于基于所计数的时钟周期的数量输出随机数。
[0043] 换言之,根据一种实施方式,基于受控振荡器和/或基准振荡器(例如在图2中示出的混沌振荡器)的时钟计数来确定随机数流。这允许提取由混沌振荡器输出的数字序列(例如比特序列)的最大熵,即,这允许为混沌振荡器提供最佳的熵提取器。
[0044] 第一振荡速度例如高于第二振荡速度。
[0045] 根据一种实施方式,随机数生成器包括触发器,所述触发器被配置用于存储用于控制第一振荡器的振荡速度的控制量 其中,通过第一振荡器的预给定的输出状态将所述控制量设置为第一值以及通过第二振荡器的预给定的输出状态将所述控制量重置为第二值。
[0046] 根据一种实施方式,第一振荡器的预给定的输出状态是第一振荡器的上升时钟边沿,并且第二振荡器的预给定的输出状态是第二振荡器的上升时钟边沿。
[0047] 根据一种实施方式,计数电路包括第一计数器和第二计数器,所述第一计数器被配置用于对在第一振荡器从第一振荡速度到第二振荡速度的两次转变之间第一振荡器的时钟周期的数量进行计数,所述第二计数器被配置用于对在第一振荡器从第一振荡速度到第二振荡速度的两次转变之间第二振荡器的时钟周期的数量进行计数,以及输出电路被配置用于基于所计数的第一振荡器的时钟周期的数量以及基于所计数的第二振荡器的时钟周期的数量来确定随机数输出。
[0048] 所述输出电路例如被配置用于基于所计数的第一振荡器的时钟周期的数量和所计数的第二振荡器的时钟周期的数量的数对到随机值的双射(eineindeutig)映射来确定随机数输出。
[0049] 所述输出电路例如被配置用于基于所计数的第一振荡器的时钟周期的数量和所计数的第二振荡器的时钟周期的数量的级联(Konkatenation)来确定随机数输出。
[0050] 根据一种实施方式,所述随机数生成器包括检测电路,所述检测电路被配置用于确定第一振荡器从第一振荡速度到第二振荡速度的转变。
[0051] 所述检测电路例如被配置用于当所述检测电路检测到第一振荡器从第一振荡速度到第二振荡速度的转变时输出指示发生了第一振荡器从第一振荡速度到第二振荡速度的转变的信号。
[0052] 所述计数电路例如被配置用于基于由检测电路输出的信号对时钟周期的数量进行计数。
[0053] 所述随机数生成器800可以在处理装置中实现,例如实现为芯片卡100的随机数生成器106。
[0054] 因此,根据一种实施方式,提供了一种包括随机数生成器800的处理装置,所述处理装置被配置用于基于所输出的随机数实施安全操作。
[0055] 所述安全操作用于加密操作。
[0056] 所述处理装置例如是芯片卡。
[0057] 以下详细描述实施方式。
[0058] 图9示出了根据一种实施方式的随机数生成器900。
[0059] 所述随机数生成器900包括以如以上参考图2描述的混沌振荡器901形式的混沌噪声源。特别地,所述混沌振荡器901包括受控振荡器902和边沿触发式RS触发器903并且如参考图2描述那样响应使能信号904和基准振荡器的基准时钟信号905工作。
[0060] 所述随机数生成器900还包括熵提取器906,所述熵提取器接收由RS触发器903输出的控制信号“慢_快”和受控振荡器902的输出信号osz。
[0061] 所述熵提取器906包括D触发器907,所述D触发器在其D输入端上接收控制信号“慢_快”并且在其时钟输入端上接收基准时钟信号905并且由使能信号904使能。所述D触发器的输出被输送给与门908,所述与门接收时钟信号905作为第二输入并且输出有效信号909。因此,如果基准时钟905开始新的周期并且受控振荡器902在先前周期期间处于高电平,即,如果存在受控振荡器902从快配置到慢配置的转变,则有效信号909处于高电平。要注意的是,与参考图3和公式(1)给出的解释相反,在所述示例中由于实现的原因(即,与基准时钟同步)(根据有效信号)对从一个快/慢转变到下一个快/慢转变的迭代进行计数,而不是受控振荡器的时钟。然而,这不影响最终结果。因此,利用迭代的所述定义,有效信号
909指示每一次迭代的开始。
[0062] 所述熵提取器906还包括第一计数器910,所述第一计数器接收受控振荡器902的输出信号、对(由有效信号909提供的)在每一次迭代内受控振荡器902的输出信号osz的时钟信号进行计数以及输出时钟周期的数量作为第一计数值“数量_0”。
[0063] 所述熵提取器906还包括第二计数器911,所述第二计数器接收基准时钟信号905、对(由有效信号909提供的)在每一次迭代内基准时钟信号905的时钟信号进行计数以及输出时钟信号数量作为第二计数值“数量_1”。
[0064] 所述随机数生成器900基于第一计数值和第二计数值“数量_1”输出随机数。例如,所输出的随机数是计数值的结合,即级联,例如在二进制数字意义上,即,数字a1a2…anb1b2…bm,其中,a1a2…an和b1b2…bm分别是第一计数值或者第二计数值的二进制表示,或者反之。通常,随机数生成器900可以根据双射映射将数对(数量_0,数量_1)映射到随机数,以便避免熵的损失。
[0065] 图10、11和12示出了对于在图4、5和6中示出的三种情形而言数生成器的特性的信号图。
[0066] 特别地,图10、11和12在相应的第一示图1001、1101、1201中示出了受控振荡器902的相位演变,在相应的第二示图1002、1102、1202中示出了受控振荡器902的输出信号osz,在相应的第三示图1003、1103、1203中示出了第一计数值,在相应的第四示图1004、1104、1204中示出了基准时钟信号,在相应的第五示图1005、1105、1205中示出了第二计数值,并且在相应的第六示图1006、1106、1206中示出了有效信号。对于每一个图10、11和12,图中所有示图的时间轴是相同的。
[0067] 图10示出了以下情形:Steigungschnell<1,例如Steigungschnell=0.75并且k=2.5。可见,一次迭代总是包含受控振荡器的仅仅一个周期,而基准振荡器(基准时钟)的周期数量变化。
[0068] 图11示出了以下情形:Steigungschnell>1并且Steigunglangsam<1(例如Steigungschnell=2.5并且k=4)。可见,一次迭代包含受控振荡器的和基准振荡器的可变数量的周期。
[0069] 图12示出了以下情形:Steigunglangsam>1,例如Steigungschnell=6并且k=2.5。可见,一次迭代总是包含基准振荡器(基准时钟)的仅仅一个周期,而受控振荡器的周期数量变化。
[0070] 根据一种实施方式,在一次迭代期间对由两个振荡器(即,受控振荡器902和基准时钟)实施的周期的数量进行计数,以便提取系统在每一个状态中、即在图10至11中示出的全部三种情形中的全部熵。替代地,一种实施方式可以配置成根据Steigungschnell<1的情形运行并且仅仅对基准时钟的数量进行计数并且(仅仅)基于第二计数值来输出随机数,或者配置成根据Steigunglangsam>1的情形运行并且仅仅对受控振荡器902的数量进行计数并且(仅仅)基于第一计数值来输出随机数。
[0071] 因为理论熵率是log2(k),并且考虑到熵可能在两个计数器中的仅仅一个中(在Steigungschnell<1的情形中和在Steigunglangsam>1的情形中),所以根据一种实施方式所述两个计数值必须分别具有最小数量的比特,其等于 以便包含所提取的熵。
[0072] 实验中可以观察到,由熵提取器906产生的熵率实际上是log2(k),如同根据理论期待的那样。换言之,提取器906在没有熵意义上的损失的情况下工作。无损失地提取熵的事实与以下有关:由提取器906建立的序列相应于混沌映射划分成其线性区段:也就是说,使不同的符号(即,由第一计数值和第二计数值组成的数对)与混沌映射的每一个线性区段相关联,并且根据属于哪一个线性区段,状态ui得出不同的输出xi。这也意味着,所建立的输出能够逆转所述映射,并且在知道ui和xi的情况下能够确定ui-1(数对{ui,xi}提供与ui-1相同的信息)。所述结果连同不同实现可以扩展成每一个分段线性混沌映射。
[0073] 虽然描述了特定方面,但对于本领域技术人员而言可以看出,可以进行对形式和细节的不同改变,而不脱离由所附权利要求限定的本发明的各方面的构思和保护范围。因此,通过所附权利要求给出了保护范围,因此应包括位于权利要求的含义或等同范围中的所有变化。