隨機數(shù)發(fā)生器和用于產(chǎn)生隨機數(shù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于借助于固態(tài)存儲器產(chǎn)生隨機數(shù)的隨機數(shù)發(fā)生器。此外,本發(fā)明涉及一種用于借助于固態(tài)存儲器產(chǎn)生隨機數(shù)的方法。
【背景技術(shù)】
[0002]隨機數(shù)尤其在用于安全服務(wù)、如完整保護和數(shù)據(jù)加密的密匙管理(KeyManagement)中形成密碼文的基礎(chǔ)。隨機數(shù)尤其被需要用于產(chǎn)生密碼的密匙或確定不重復(fù)的值(Nonce)。隨機數(shù)能夠經(jīng)由邏輯或物理的隨機數(shù)發(fā)生器來產(chǎn)生。強的、即特別隨機選擇的隨機數(shù)通常通過或利用物理隨機數(shù)發(fā)生器來產(chǎn)生。在此,能夠以起始值來初始化偽隨機數(shù)發(fā)生器,所述起始值借助于物理隨機數(shù)發(fā)生器來確定。
[0003]—般已知隨機數(shù)發(fā)生器,例如參見:http://de.wikipedia.0rg/wiki/ZufalIszahlengeneratorο存在物理的隨機數(shù)發(fā)生器,其基于物理效應(yīng)確定隨機數(shù)。還已知偽隨機數(shù)發(fā)生器,其基于起始值經(jīng)由決定性的計算函數(shù)確定偽隨機數(shù)的序列。所述偽隨機數(shù)具有由隨機數(shù)所預(yù)期的統(tǒng)計特性。設(shè)有決定性的密碼的隨機數(shù)發(fā)生器,所述決定性的密碼的隨機數(shù)發(fā)生器同樣決定性地基于起始值計算隨機數(shù)序列。隨機數(shù)尤其具有如下特性:所述特性針對在密碼協(xié)議中的應(yīng)用是需要的,此外參見http://de.wikipedia.0rg/wiki/Kryptographisch_sicherer_ZufallSzahlengenerator0 通常,至少起始值在此借助于物理的隨機數(shù)發(fā)生器來確定。
[0004]關(guān)于基于硬件的隨機數(shù)發(fā)生器的概覽例如參見:http://en.wikipedia.0rg/wiki/Hardware_random_number_generator0
[0005]硬件隨機數(shù)發(fā)生器例如在因特爾CPU上來實現(xiàn)(參見http://software, intel.com/en-us/articles/intel-digital-random-number-generator-drng-softwareimplementat1n-guide)。在此,多個運算核心(Core)訪問相同的隨機數(shù)發(fā)生器。
[0006]為了產(chǎn)生隨機數(shù),能夠?qū)⑷绨雽?dǎo)體器件的噪聲的物理效應(yīng)用作為隨機數(shù)的源。從“Flash Memory for Ubiquitous Hardware Security Funct1ns: True RandomNumber Generat1n and Device Fingerprints (用于普遍存在的硬件安全功能的閃存:真隨機數(shù)發(fā)生器和指紋設(shè)備),,(參見 http://tsg.ece.Cornell, edu/lib/exe/fetch.php?media=pubs: flash_ieeesp2012.pdf )中已知,使用閃存來產(chǎn)生隨機數(shù)。在此,生成復(fù)合噪聲(電報噪聲,RTN)和熱噪聲在半導(dǎo)體組件中被使用。在此,刪除存儲器單元并且此后多次部分地寫入。然后通過讀取能夠為存儲區(qū)域確定與物理效應(yīng)相關(guān)的參數(shù)。
[0007]從http://downloads.hindaw1.com/journals/es/2009/598246.pdf 中已知:在系統(tǒng)啟動期間或也在基于物理效應(yīng)的運行時間期間執(zhí)行隨機數(shù)發(fā)生器的初始化(randomnumber generator, RNG)。在此例如充分使用:在啟動硬盤期間的時間行為不總是精確相同的。這能夠經(jīng)由高速計數(shù)器來確定。所述變化被使用,以便產(chǎn)生隨機數(shù)池。
[0008]所使用的另外的源例如是跟蹤誤差,所述跟蹤誤差是在讀取時的讀取頭位置與硬盤上的最佳的數(shù)據(jù)路徑的偏差。US 2009/0161246 Al公開了,利用分析讀取頭位置來產(chǎn)生隨機數(shù)。
[0009]WO 2012/136763 A2公開了,能夠?qū)㈤W存的隨機內(nèi)容的部分的存儲器狀態(tài)(MemoryState)用作,用于初始化偽隨機數(shù)發(fā)生器的起始值(Seed種子)。因此,隨機數(shù)發(fā)生器產(chǎn)生如下隨機數(shù),所述隨機數(shù)又被用于覆寫相應(yīng)的存儲區(qū)域進而能夠用作為種子的新的源。
[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 中已知:執(zhí)行固態(tài)磁盤(SSD)的壞塊管理,其中標記有錯的塊進而不再用于存儲信息。SSD上的可用的存儲區(qū)域的優(yōu)化例如能夠通過基于存儲區(qū)域的損耗度的分組來執(zhí)行(例如參見http://en.wikipedia.0rg/wiki/Wear_leveling)。
【發(fā)明內(nèi)容】
[0012]在該背景下,本發(fā)明的任務(wù)在于:基于物理源以簡單的方式能夠?qū)崿F(xiàn)強的隨機數(shù)產(chǎn)生。
[0013]相應(yīng)地,提出用于借助于固態(tài)存儲器產(chǎn)生隨機數(shù)的隨機數(shù)發(fā)生器。隨機數(shù)發(fā)生器具有:用于確定管理數(shù)據(jù)的確定單元,所述管理數(shù)據(jù)存儲在固態(tài)存儲器中以用于在運行期間管理固態(tài)存儲器;運算單元,以用于基于確定的管理數(shù)據(jù)計算起始值,和產(chǎn)生單元,以用于基于計算的起始值產(chǎn)生隨機數(shù)。
[0014]相應(yīng)的單元、例如運算單元或產(chǎn)生單元能夠在硬件技術(shù)上和/或還有在軟件技術(shù)上來實施。在硬件技術(shù)上來實施的情況下,相應(yīng)的單元能夠被構(gòu)造為設(shè)備或設(shè)備的一部分,例如構(gòu)造為計算機或微處理器。在軟件技術(shù)上來實施的情況下,相應(yīng)的單元能夠被構(gòu)造為計算機程序產(chǎn)品、構(gòu)造為函數(shù)、構(gòu)造為例程、構(gòu)造為程序代碼的一部分或構(gòu)造為可執(zhí)行的對象。
[0015]所提出的隨機數(shù)發(fā)生器的構(gòu)思基于:以簡單的方式提供用于使用固態(tài)存儲器的系統(tǒng)的隨機數(shù)。在此,使用固態(tài)存儲器的存儲器管理裝置中的已經(jīng)存在的信息并且不產(chǎn)生附加的信息。不同的固態(tài)存儲器之間的偏差在此在于,物理方面決定的制造公差和存儲器管理的因此初始化的狀態(tài)以及不同的使用,其因此引起不同的負荷數(shù)據(jù)、即與使用相關(guān)的數(shù)據(jù)、例如讀/寫訪問的數(shù)量,進而引起不同的管理數(shù)據(jù)。以該方式,也為同樣類型的固態(tài)存儲器提供隨機性。管理數(shù)據(jù)能夠在制造時產(chǎn)生,例如以便標記有缺陷的存儲器單元,和/或管理數(shù)據(jù)能夠在使用期間被存放和/或被更新,例如以便在使用期間標記變成有缺陷的存儲器單元,或者以便更新存儲器單元的與使用相關(guān)的信息。
[0016]為了借助于固態(tài)存儲器產(chǎn)生隨機數(shù),使用管理數(shù)據(jù),所述管理數(shù)據(jù)由固態(tài)存儲器在固態(tài)存儲器的壽命期間、即在制造時和/或在運行期間產(chǎn)生。從被需要用于應(yīng)對物理存儲器的缺陷和物理限制的管理數(shù)據(jù)中,首先確定用于決定性的隨機數(shù)產(chǎn)生單元、下面稱作產(chǎn)生單元的起始值或初始化值,所述產(chǎn)生單元隨后產(chǎn)生隨機數(shù)。這具有以下優(yōu)點,例如采用各個存儲器單元的不可具體預(yù)測的物理缺陷作為物理熵、即隨機性。此外也能夠采用與使用相關(guān)的效應(yīng),使得例如在重復(fù)系統(tǒng)啟動之后提供不同的隨機數(shù)據(jù),即使在此期間不出現(xiàn)新的物理缺陷。在此,存儲器單元可能已經(jīng)是有缺陷的或者在使用時形成缺陷的情況被用作為用于物理產(chǎn)生隨機數(shù)的效應(yīng)。反正檢測和存儲特定信息以便應(yīng)對有缺陷的存儲器單元或以便確保固態(tài)存儲器進而存儲器單元的均勻的使用并且避免存儲器單元的過量的、不允許的荷載的事實在此被使用,以便以小的附加耗費確定用于確定物理的隨機數(shù)的信息。
[0017]固態(tài)存儲器在本文中例如被理解為通過半導(dǎo)體組件實現(xiàn)的電子存儲介質(zhì)。固態(tài)存儲器是非易失存儲器。
[0018]根據(jù)一個實施方式,運算單元被設(shè)立用于基于計算的起始值初始化產(chǎn)生單元。對此,例如能夠直接地應(yīng)用管理數(shù)據(jù)或者能夠應(yīng)用管理數(shù)據(jù)的哈希值。
[0019]在該實施方式中,將起始值用作為初始化值?;谠撈鹗贾党跏蓟a(chǎn)生單元,即產(chǎn)生單元應(yīng)用所述值以便執(zhí)行其計算以用于產(chǎn)生隨機數(shù)。
[0020]根據(jù)另一實施方式,管理數(shù)據(jù)具有關(guān)于固態(tài)存儲器的存儲區(qū)域的信息。
[0021]所述信息能夠涉及固態(tài)存儲器的存儲區(qū)域或各個存儲器單元的當(dāng)前的狀態(tài)(所謂的健康參數(shù))以及表格,所述表格說明哪些物理存儲器單元不能再被使用。
[0022]根據(jù)另一實施方式,信息具有損耗度、讀和/或?qū)懺L問的計數(shù)器和/或關(guān)于將邏輯存儲器塊移動到物理存儲器塊上的信息。
[0023]因為固態(tài)存儲器應(yīng)用具有受限的寫循環(huán)數(shù)的相對不可靠的存儲器單元,所以可以使用損耗度算法、所謂的損耗度平均算法,以便一方面實現(xiàn)通過寫訪問產(chǎn)生的均勻的存儲器單元負荷并且另一方面為了進一步使用而排除有缺陷的存儲器單元或存儲區(qū)域。在此可能的是,在制造時個別存儲器單元已經(jīng)是有缺陷的。固態(tài)存儲器在此能夠執(zhí)行存儲器管理,所述存儲器管理除了由通常的文件系統(tǒng)已知的純存儲器管理、即哪些數(shù)據(jù)存儲在哪里之外也收集出自自檢的信息并且包含關(guān)于存儲器單元質(zhì)量的數(shù)據(jù)。所述信息和數(shù)據(jù)例如涉及,如何頻繁地寫哪些單元或哪些單元不能再被使用。根據(jù)存儲器單元的質(zhì)量,由此能夠在內(nèi)部通過不同的物理存儲器塊來代表向外靜態(tài)的邏輯存儲器塊。
[0024]存儲器管理例如能夠經(jīng)由存儲器單元的使用度或損耗度(損耗水平)來確定:是否存儲器單元(很快)失效并且之后能夠?qū)?shù)據(jù)復(fù)制到另一物理單元中,以便避免數(shù)據(jù)損失。存儲器單元的該監(jiān)控在固態(tài)存儲器中持續(xù)地執(zhí)行,以便確保整個固態(tài)存儲器的存儲器單元的盡可能均勻的負荷。因為所述數(shù)據(jù)一方面與生產(chǎn)期間的方差相關(guān)并且也與固態(tài)存儲器的使用相關(guān),所以管理數(shù)據(jù)專門用于相應(yīng)的固態(tài)存儲器進而能夠用于通過在此描述的隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù)。
[0025]除了損耗度(損耗水平(WL))之外,信息能夠具有用于整個固態(tài)存儲器的或用于存儲器塊或存儲器單元的讀/寫訪問(CLS)的計數(shù)器(Counter)、關(guān)于將邏輯存儲器塊移動到物理存儲器塊上的信息。所述信息于是能夠通過運算單元借助于運算函數(shù)、例如哈希函數(shù)被轉(zhuǎn)換成用于產(chǎn)生單元的一個或多個起始值(種子)。
S=H(MSSD{| |WL} {||CLS})
在此,{...}表示可選的變量,I I表示級聯(lián)。MSSD表示固態(tài)存儲器的管理數(shù)據(jù)。
[0026]根據(jù)另一實施方式,運算單元被設(shè)立用于利用密碼哈希函數(shù)計算起始值。
[0027]在此,例如能夠?qū)HA-1、SHA256、SHA384、SHA 512、SHA-3、H-PRESENT-128 用作為密碼哈希函數(shù)。密碼哈希函數(shù)例如也能夠被構(gòu)造為密匙哈希函數(shù),例如HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512、HMAC-SHA3、AES-CBCMAC、AES-GMACo
[0028]根據(jù)另一實施方式,運算單元被設(shè)立用于利用對稱算法計算起始值。
[0029]對稱算法例如能夠被用作為MAC算法(Message Authenticat1n Code消息認證碼)。對此的實例是AES-CBCMAC。
[0030]根據(jù)另一實施方式,運算單元被設(shè)立用于基于管理數(shù)據(jù)和固態(tài)存儲器的至少一個特性計算起始值。
[0031]根據(jù)該實施方式,除了固態(tài)存儲器的管理數(shù)據(jù)之外,也能夠共同考慮用于產(chǎn)生種子或起始值的另外的信息。對此的實例是存儲器單元的訪問時間(Z)。所述訪問時間例如也能夠由于邏輯數(shù)據(jù)塊的不同的物理代表而變化。
[0032]因此,能夠通過如