随机数发生器和用于产生随机数的方法

文档序号:9261202阅读:841来源:国知局
随机数发生器和用于产生随机数的方法
【技术领域】
[0001]本发明涉及一种用于借助于固态存储器产生随机数的随机数发生器。此外,本发明涉及一种用于借助于固态存储器产生随机数的方法。
【背景技术】
[0002]随机数尤其在用于安全服务、如完整保护和数据加密的密匙管理(KeyManagement)中形成密码文的基础。随机数尤其被需要用于产生密码的密匙或确定不重复的值(Nonce)。随机数能够经由逻辑或物理的随机数发生器来产生。强的、即特别随机选择的随机数通常通过或利用物理随机数发生器来产生。在此,能够以起始值来初始化伪随机数发生器,所述起始值借助于物理随机数发生器来确定。
[0003]—般已知随机数发生器,例如参见:http://de.wikipedia.0rg/wiki/ZufalIszahlengeneratorο存在物理的随机数发生器,其基于物理效应确定随机数。还已知伪随机数发生器,其基于起始值经由决定性的计算函数确定伪随机数的序列。所述伪随机数具有由随机数所预期的统计特性。设有决定性的密码的随机数发生器,所述决定性的密码的随机数发生器同样决定性地基于起始值计算随机数序列。随机数尤其具有如下特性:所述特性针对在密码协议中的应用是需要的,此外参见http://de.wikipedia.0rg/wiki/Kryptographisch_sicherer_ZufallSzahlengenerator0 通常,至少起始值在此借助于物理的随机数发生器来确定。
[0004]关于基于硬件的随机数发生器的概览例如参见:http://en.wikipedia.0rg/wiki/Hardware_random_number_generator0
[0005]硬件随机数发生器例如在因特尔CPU上来实现(参见http://software, intel.com/en-us/articles/intel-digital-random-number-generator-drng-softwareimplementat1n-guide)。在此,多个运算核心(Core)访问相同的随机数发生器。
[0006]为了产生随机数,能够将如半导体器件的噪声的物理效应用作为随机数的源。从“Flash Memory for Ubiquitous Hardware Security Funct1ns: True RandomNumber Generat1n and Device Fingerprints (用于普遍存在的硬件安全功能的闪存:真随机数发生器和指纹设备),,(参见 http://tsg.ece.Cornell, edu/lib/exe/fetch.php?media=pubs: flash_ieeesp2012.pdf )中已知,使用闪存来产生随机数。在此,生成复合噪声(电报噪声,RTN)和热噪声在半导体组件中被使用。在此,删除存储器单元并且此后多次部分地写入。然后通过读取能够为存储区域确定与物理效应相关的参数。
[0007]从http://downloads.hindaw1.com/journals/es/2009/598246.pdf 中已知:在系统启动期间或也在基于物理效应的运行时间期间执行随机数发生器的初始化(randomnumber generator, RNG)。在此例如充分使用:在启动硬盘期间的时间行为不总是精确相同的。这能够经由高速计数器来确定。所述变化被使用,以便产生随机数池。
[0008]所使用的另外的源例如是跟踪误差,所述跟踪误差是在读取时的读取头位置与硬盘上的最佳的数据路径的偏差。US 2009/0161246 Al公开了,利用分析读取头位置来产生随机数。
[0009]WO 2012/136763 A2公开了,能够将闪存的随机内容的部分的存储器状态(MemoryState)用作,用于初始化伪随机数发生器的起始值(Seed种子)。因此,随机数发生器产生如下随机数,所述随机数又被用于覆写相应的存储区域进而能够用作为种子的新的源。
[0010]从http://www.chronox.de/jent/doc/CPU-Jitter-NPTRNG.html 中已知:将在读/写访问中的时间方差用于硬盘。
[0011]从 http://www.contradata.1t/cataloghi/InnoDisk_Error_Correct1n_Detect1n_and_Bad_Block_Management_White_Paper.pdf 中已知:执行固态磁盘(SSD)的坏块管理,其中标记有错的块进而不再用于存储信息。SSD上的可用的存储区域的优化例如能够通过基于存储区域的损耗度的分组来执行(例如参见http://en.wikipedia.0rg/wiki/Wear_leveling)。

【发明内容】

[0012]在该背景下,本发明的任务在于:基于物理源以简单的方式能够实现强的随机数产生。
[0013]相应地,提出用于借助于固态存储器产生随机数的随机数发生器。随机数发生器具有:用于确定管理数据的确定单元,所述管理数据存储在固态存储器中以用于在运行期间管理固态存储器;运算单元,以用于基于确定的管理数据计算起始值,和产生单元,以用于基于计算的起始值产生随机数。
[0014]相应的单元、例如运算单元或产生单元能够在硬件技术上和/或还有在软件技术上来实施。在硬件技术上来实施的情况下,相应的单元能够被构造为设备或设备的一部分,例如构造为计算机或微处理器。在软件技术上来实施的情况下,相应的单元能够被构造为计算机程序产品、构造为函数、构造为例程、构造为程序代码的一部分或构造为可执行的对象。
[0015]所提出的随机数发生器的构思基于:以简单的方式提供用于使用固态存储器的系统的随机数。在此,使用固态存储器的存储器管理装置中的已经存在的信息并且不产生附加的信息。不同的固态存储器之间的偏差在此在于,物理方面决定的制造公差和存储器管理的因此初始化的状态以及不同的使用,其因此引起不同的负荷数据、即与使用相关的数据、例如读/写访问的数量,进而引起不同的管理数据。以该方式,也为同样类型的固态存储器提供随机性。管理数据能够在制造时产生,例如以便标记有缺陷的存储器单元,和/或管理数据能够在使用期间被存放和/或被更新,例如以便在使用期间标记变成有缺陷的存储器单元,或者以便更新存储器单元的与使用相关的信息。
[0016]为了借助于固态存储器产生随机数,使用管理数据,所述管理数据由固态存储器在固态存储器的寿命期间、即在制造时和/或在运行期间产生。从被需要用于应对物理存储器的缺陷和物理限制的管理数据中,首先确定用于决定性的随机数产生单元、下面称作产生单元的起始值或初始化值,所述产生单元随后产生随机数。这具有以下优点,例如采用各个存储器单元的不可具体预测的物理缺陷作为物理熵、即随机性。此外也能够采用与使用相关的效应,使得例如在重复系统启动之后提供不同的随机数据,即使在此期间不出现新的物理缺陷。在此,存储器单元可能已经是有缺陷的或者在使用时形成缺陷的情况被用作为用于物理产生随机数的效应。反正检测和存储特定信息以便应对有缺陷的存储器单元或以便确保固态存储器进而存储器单元的均匀的使用并且避免存储器单元的过量的、不允许的荷载的事实在此被使用,以便以小的附加耗费确定用于确定物理的随机数的信息。
[0017]固态存储器在本文中例如被理解为通过半导体组件实现的电子存储介质。固态存储器是非易失存储器。
[0018]根据一个实施方式,运算单元被设立用于基于计算的起始值初始化产生单元。对此,例如能够直接地应用管理数据或者能够应用管理数据的哈希值。
[0019]在该实施方式中,将起始值用作为初始化值。基于该起始值初始化产生单元,即产生单元应用所述值以便执行其计算以用于产生随机数。
[0020]根据另一实施方式,管理数据具有关于固态存储器的存储区域的信息。
[0021]所述信息能够涉及固态存储器的存储区域或各个存储器单元的当前的状态(所谓的健康参数)以及表格,所述表格说明哪些物理存储器单元不能再被使用。
[0022]根据另一实施方式,信息具有损耗度、读和/或写访问的计数器和/或关于将逻辑存储器块移动到物理存储器块上的信息。
[0023]因为固态存储器应用具有受限的写循环数的相对不可靠的存储器单元,所以可以使用损耗度算法、所谓的损耗度平均算法,以便一方面实现通过写访问产生的均匀的存储器单元负荷并且另一方面为了进一步使用而排除有缺陷的存储器单元或存储区域。在此可能的是,在制造时个别存储器单元已经是有缺陷的。固态存储器在此能够执行存储器管理,所述存储器管理除了由通常的文件系统已知的纯存储器管理、即哪些数据存储在哪里之外也收集出自自检的信息并且包含关于存储器单元质量的数据。所述信息和数据例如涉及,如何频繁地写哪些单元或哪些单元不能再被使用。根据存储器单元的质量,由此能够在内部通过不同的物理存储器块来代表向外静态的逻辑存储器块。
[0024]存储器管理例如能够经由存储器单元的使用度或损耗度(损耗水平)来确定:是否存储器单元(很快)失效并且之后能够将数据复制到另一物理单元中,以便避免数据损失。存储器单元的该监控在固态存储器中持续地执行,以便确保整个固态存储器的存储器单元的尽可能均匀的负荷。因为所述数据一方面与生产期间的方差相关并且也与固态存储器的使用相关,所以管理数据专门用于相应的固态存储器进而能够用于通过在此描述的随机数发生器产生随机数。
[0025]除了损耗度(损耗水平(WL))之外,信息能够具有用于整个固态存储器的或用于存储器块或存储器单元的读/写访问(CLS)的计数器(Counter)、关于将逻辑存储器块移动到物理存储器块上的信息。所述信息于是能够通过运算单元借助于运算函数、例如哈希函数被转换成用于产生单元的一个或多个起始值(种子)。
S=H(MSSD{| |WL} {||CLS})
在此,{...}表示可选的变量,I I表示级联。MSSD表示固态存储器的管理数据。
[0026]根据另一实施方式,运算单元被设立用于利用密码哈希函数计算起始值。
[0027]在此,例如能够将SHA-1、SHA256、SHA384、SHA 512、SHA-3、H-PRESENT-128 用作为密码哈希函数。密码哈希函数例如也能够被构造为密匙哈希函数,例如HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512、HMAC-SHA3、AES-CBCMAC、AES-GMACo
[0028]根据另一实施方式,运算单元被设立用于利用对称算法计算起始值。
[0029]对称算法例如能够被用作为MAC算法(Message Authenticat1n Code消息认证码)。对此的实例是AES-CBCMAC。
[0030]根据另一实施方式,运算单元被设立用于基于管理数据和固态存储器的至少一个特性计算起始值。
[0031]根据该实施方式,除了固态存储器的管理数据之外,也能够共同考虑用于产生种子或起始值的另外的信息。对此的实例是存储器单元的访问时间(Z)。所述访问时间例如也能够由于逻辑数据块的不同的物理代表而变化。
[0032]因此,能够通过如
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1