中斷驅(qū)動(dòng)硬件隨機(jī)數(shù)產(chǎn)生器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明大體上涉及數(shù)字通信系統(tǒng),且更確切地說(shuō),涉及用于為處理系統(tǒng)提供隨機(jī)數(shù)的設(shè)備和方法。
【背景技術(shù)】
[0002]隨機(jī)數(shù)廣泛地應(yīng)用于通信系統(tǒng)、安全及加密、模擬及游戲中以及其它應(yīng)用中。隨機(jī)數(shù)一般使用硬件隨機(jī)數(shù)產(chǎn)生器(RNG)獲得,所述硬件隨機(jī)數(shù)產(chǎn)生器產(chǎn)生似乎是不相關(guān)的或沒(méi)有明顯模式的一連串?dāng)?shù)字。RNG在硬件中實(shí)施以改進(jìn)吞吐量,具體來(lái)說(shuō)在例如頻繁利用隨機(jī)數(shù)的模擬及游戲等應(yīng)用中實(shí)施。也使用RNG以便減少產(chǎn)生隨機(jī)數(shù)所需的處理開(kāi)銷(xiāo)并且將時(shí)延減到最少,時(shí)延可以測(cè)量為請(qǐng)求隨機(jī)數(shù)與接收隨機(jī)數(shù)之間的時(shí)間。
[0003]RNG通常產(chǎn)生在一定程度上相關(guān)的并且因此不是完全不可預(yù)見(jiàn)的偽隨機(jī)數(shù)。熵度量法可以用于量化隨機(jī)數(shù)的隨機(jī)性的質(zhì)量?,F(xiàn)代RNG可產(chǎn)生用于所產(chǎn)生的10位的8位真實(shí)熵(0.8的熵率),其通常小于計(jì)算系統(tǒng)所要求的熵率。
[0004]—些系統(tǒng)使用密碼函數(shù)調(diào)節(jié)由RNG產(chǎn)生的低熵?cái)?shù)以獲得具有明顯更高熵的隨機(jī)數(shù)。常規(guī)系統(tǒng)在RNG中包含密碼函數(shù)邏輯電路以準(zhǔn)許迅速、異步且以低響應(yīng)時(shí)延產(chǎn)生隨機(jī)數(shù)。密碼函數(shù)的添加會(huì)顯著地使RNG硬件更加復(fù)雜,從而導(dǎo)致使用的集成電路面積增加且功率消耗增加。
[0005]因此,需要占用更少裸片面積并消耗更少系統(tǒng)功率的高吞吐量、低時(shí)延的RNG。
【發(fā)明內(nèi)容】
[0006]在本發(fā)明的一方面中,提供一種方法、計(jì)算機(jī)程序產(chǎn)品及設(shè)備。所述設(shè)備可包括處理系統(tǒng),其包含處理器以及暫時(shí)性和非暫時(shí)性存儲(chǔ)裝置的一些組合。
[0007]在本發(fā)明的一方面中,所述設(shè)備包括隨機(jī)數(shù)產(chǎn)生器、用以接收由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)的第一存儲(chǔ)裝置、以及處理系統(tǒng)。處理系統(tǒng)可經(jīng)配置以響應(yīng)于中斷從第一存儲(chǔ)裝置讀取一連串隨機(jī)數(shù)。處理系統(tǒng)可經(jīng)配置以通過(guò)調(diào)節(jié)一連串隨機(jī)數(shù)產(chǎn)生至少一個(gè)經(jīng)調(diào)節(jié)隨機(jī)數(shù)。處理系統(tǒng)可經(jīng)配置以將至少一個(gè)經(jīng)調(diào)節(jié)隨機(jī)數(shù)存儲(chǔ)于第二存儲(chǔ)裝置中。第二存儲(chǔ)裝置可經(jīng)配置以保持多個(gè)經(jīng)調(diào)節(jié)隨機(jī)數(shù)且響應(yīng)于由處理系統(tǒng)執(zhí)行的指令輸出多個(gè)經(jīng)調(diào)節(jié)隨機(jī)數(shù)中的一者。
[0008]在本發(fā)明的一方面中,一種用于產(chǎn)生隨機(jī)數(shù)的方法包括:響應(yīng)于中斷從第一存儲(chǔ)裝置讀取由物理隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù),調(diào)節(jié)由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)以獲得至少一個(gè)高熵隨機(jī)數(shù),以及將至少一個(gè)高熵隨機(jī)數(shù)存儲(chǔ)于第二存儲(chǔ)裝置中。第二存儲(chǔ)裝置可經(jīng)調(diào)適以響應(yīng)于由處理器執(zhí)行的指令輸出至少一個(gè)高熵隨機(jī)數(shù)。
[0009]在本發(fā)明的一方面中,一種用于產(chǎn)生隨機(jī)數(shù)的設(shè)備包括:用于響應(yīng)于中斷從存儲(chǔ)裝置讀取由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)的裝置;用于調(diào)節(jié)由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)以獲得至少一個(gè)高熵隨機(jī)數(shù)的裝置;以及用于存儲(chǔ)至少一個(gè)高熵隨機(jī)數(shù)的裝置。用于存儲(chǔ)至少一個(gè)高熵隨機(jī)數(shù)的裝置經(jīng)配置以響應(yīng)于由處理器執(zhí)行的機(jī)器語(yǔ)言指令輸出至少一個(gè)高熵隨機(jī)數(shù)。
[0010]在本發(fā)明的一方面中,一種具有一或多個(gè)指令的處理器可讀存儲(chǔ)媒體,所述一或多個(gè)指令在由至少一個(gè)處理電路執(zhí)行時(shí)使得至少一個(gè)處理電路進(jìn)行以下操作:響應(yīng)于中斷從第一緩沖器讀取由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù);調(diào)節(jié)由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)以獲得至少一個(gè)高熵隨機(jī)數(shù);以及將至少一個(gè)高熵隨機(jī)數(shù)存儲(chǔ)于第二緩沖器中。第二緩沖器可經(jīng)調(diào)適以響應(yīng)于由處理器執(zhí)行的機(jī)器語(yǔ)言指令輸出至少一個(gè)高熵隨機(jī)數(shù)。
【附圖說(shuō)明】
[0011]圖1描繪用于處理系統(tǒng)中的隨機(jī)數(shù)的產(chǎn)生。
[0012]圖2說(shuō)明具有低響應(yīng)時(shí)延的隨機(jī)數(shù)產(chǎn)生。
[0013]圖3說(shuō)明中斷驅(qū)動(dòng)硬件隨機(jī)數(shù)產(chǎn)生器。
[0014]圖4是說(shuō)明中斷驅(qū)動(dòng)硬件隨機(jī)數(shù)產(chǎn)生器在計(jì)算系統(tǒng)中的使用的框示意圖。
[0015]圖5是說(shuō)明中斷驅(qū)動(dòng)硬件隨機(jī)數(shù)處理器中的緩沖器流量控制的框示意圖。
[0016]圖6是說(shuō)明根據(jù)本發(fā)明的某些方面的方法的流程圖。
[0017]圖7是包括中斷驅(qū)動(dòng)硬件隨機(jī)數(shù)產(chǎn)生器的設(shè)備的框示意圖。
【具體實(shí)施方式】
[0018]在以下描述中,給出特定細(xì)節(jié)以提供對(duì)本發(fā)明的各種方面的透徹理解。然而,所屬領(lǐng)域的技術(shù)人員將理解,可在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)踐所述方面。例如,可用框圖展示電路以便避免以不必要的細(xì)節(jié)混淆所述方面。在其它情況下,可不詳細(xì)展示眾所周知的電路、結(jié)構(gòu)及技術(shù)以便不混淆本發(fā)明的所述方面。
[0019]圖1是說(shuō)明從硬件隨機(jī)數(shù)處理系統(tǒng)或電路112中獲得高熵隨機(jī)數(shù)136的處理系統(tǒng)110的圖100。隨機(jī)數(shù)處理系統(tǒng)112可嵌入處理系統(tǒng)110中作為外圍裝置,或當(dāng)處理系統(tǒng)110設(shè)置于專(zhuān)用集成電路(ASIC)中時(shí)另外包含現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、片上系統(tǒng)或其它可編程邏輯。在圖1中,硬件元件與軟件元件之間的劃分通過(guò)虛線199劃定界限,但是軟件可在存儲(chǔ)于處理系統(tǒng)110的物理存儲(chǔ)媒體116中且由處理器114執(zhí)行的代碼及數(shù)據(jù)中實(shí)施。
[0020]隨機(jī)數(shù)處理系統(tǒng)112可包括產(chǎn)生低熵?cái)?shù)130的RNG裝置102。低熵?cái)?shù)130可包括偽隨機(jī)數(shù),偽隨機(jī)數(shù)由從展現(xiàn)某種程度隨機(jī)性的裝置或機(jī)構(gòu)獲得的種子數(shù)產(chǎn)生。在一個(gè)實(shí)例中,可從熱換能器、機(jī)械換能器或其它換能器獲得種子數(shù)。在另一實(shí)例中,可以近似隨機(jī)性的方式在非周期性間隔從迅速改變的數(shù)字電路對(duì)種子數(shù)進(jìn)行取樣。偽隨機(jī)數(shù)可基于以不定期基礎(chǔ)從計(jì)算系統(tǒng)寄存器捕獲的“微觀”觀察產(chǎn)生,例如定時(shí)器電路的低數(shù)位、在高頻數(shù)據(jù)總線上觀察的值、所測(cè)量的接收器載波強(qiáng)度、系統(tǒng)實(shí)時(shí)時(shí)鐘的低數(shù)位,或從一些其它統(tǒng)計(jì)上隨機(jī)的“噪聲”信號(hào)產(chǎn)生,所述信號(hào)從將所測(cè)量物理現(xiàn)象轉(zhuǎn)化成數(shù)值的換能器獲得。這些觀察值可以用來(lái)撒布偽隨機(jī)數(shù)產(chǎn)生器以增加由RNG 102產(chǎn)生的的數(shù)字130的熵。
[0021]RNG 102很可能生成稍微相關(guān)的且具有相對(duì)低熵的隨機(jī)數(shù)130,且所述隨機(jī)數(shù)130的熵率可能低于包含處理系統(tǒng)110的計(jì)算系統(tǒng)所需的熵率。由隨機(jī)數(shù)產(chǎn)生電路102產(chǎn)生的數(shù)字136的熵可通過(guò)調(diào)節(jié)RNG 102的輸出130而增加。在一個(gè)實(shí)例中,由RNG 102產(chǎn)生的一連串偽隨機(jī)數(shù)130使用散列函數(shù)或分塊加密函數(shù)104來(lái)調(diào)節(jié)以獲得具有明顯更高熵的隨機(jī)數(shù)132。通過(guò)函數(shù)104生成的更高熵隨機(jī)數(shù)132可在FIFO裝置106中緩沖,其可接著由軟件命令讀取。FIFO裝置106可實(shí)施為硬件緩沖器,條目從其中以它們寫(xiě)入到硬件緩沖器中的相同順序讀出。在一個(gè)實(shí)例中,F(xiàn)IFO裝置106包括以管線連接的多個(gè)寄存器,由此寫(xiě)入到FIFO裝置106的輸入端中的數(shù)字以它們寫(xiě)入到FIFO裝置106中的相同順序退出管線。在另一實(shí)例中,F(xiàn)IFO裝置106可包括組織為循環(huán)緩沖器或隊(duì)列的存儲(chǔ)器裝置。
[0022]處理系統(tǒng)110可包括通過(guò)操作系統(tǒng)120控制的處理器114。應(yīng)用程序122可對(duì)操作系統(tǒng)120進(jìn)行系統(tǒng)調(diào)用以從隨機(jī)數(shù)處理系統(tǒng)112獲得隨機(jī)數(shù)136。通常,請(qǐng)求隨機(jī)數(shù)136的系統(tǒng)調(diào)用引發(fā)從FIFO裝置106檢索數(shù)字134的軟件功能且使得總線接口 108呈現(xiàn)在系統(tǒng)總線118上、和/或在由處理器114或系統(tǒng)110的其它組件控制的輸入/輸出(1/0)總線或信道上緩沖數(shù)字136。軟件功能可進(jìn)一步緩沖或排列隨機(jī)數(shù)136以用于傳遞到進(jìn)行系統(tǒng)調(diào)用的應(yīng)用程序122。操作系統(tǒng)120可根據(jù)某些系統(tǒng)優(yōu)先級(jí)調(diào)度任務(wù)。由第一應(yīng)用程序進(jìn)行的系統(tǒng)調(diào)用可引發(fā)情境變化,由此可僅在第一應(yīng)用程序恢復(fù)處理器114的控制時(shí)接收處理器114的第二應(yīng)用程序增益控制及系統(tǒng)調(diào)用響應(yīng)。因此,應(yīng)用程序122在通過(guò)系統(tǒng)調(diào)用獲得隨機(jī)數(shù)時(shí)會(huì)經(jīng)歷顯著的延遲。
[0023]圖2是說(shuō)明可以低響應(yīng)時(shí)延從硬件隨機(jī)數(shù)處理系統(tǒng)或電路212向應(yīng)用程序222提供高熵隨機(jī)數(shù)236的處理系統(tǒng)210的示意圖200。在此實(shí)例中,由隨機(jī)數(shù)處理系統(tǒng)212產(chǎn)生的隨機(jī)數(shù)236存儲(chǔ)于可使用對(duì)應(yīng)于處理器214的指令集由應(yīng)用程序222直接存取的寄存器/緩沖器208中。因此,指令可插入一或多個(gè)應(yīng)用程序222中使得應(yīng)用程序222能夠從寄存器/緩沖器208直接讀取隨機(jī)數(shù)236。如同圖1中所描述的實(shí)例,由RNG 202產(chǎn)生的偽隨機(jī)數(shù)230可使用散列函數(shù)、分塊加密或其它調(diào)節(jié)函數(shù)204來(lái)調(diào)節(jié)以獲得具有明顯更高熵的隨機(jī)數(shù)232。由分塊加密函數(shù)204產(chǎn)生的更高熵隨機(jī)數(shù)232可以在FIFO裝置206中緩沖。FIFO裝置206可接著在處理系統(tǒng)210和/或處理器214的控制下通過(guò)寄存器/緩沖器208提供隨機(jī)數(shù)234。在此實(shí)例中,對(duì)隨機(jī)數(shù)236的存取也可通過(guò)操作系統(tǒng)220管理,且至少一些應(yīng)用程序222可通過(guò)系統(tǒng)調(diào)用獲得隨機(jī)數(shù)236。
[0024]基于處理系統(tǒng)210及處理系統(tǒng)210的其它組件的配置,隨機(jī)數(shù)236可通過(guò)應(yīng)用程序222使用提供于處理器214的指令集中的指令或使用包括多個(gè)指令的宏存取。在一個(gè)實(shí)例中,F(xiàn)IFO裝置206可通過(guò)可尋址寄存器或緩沖器208存取。寄存器或緩沖器208可提供在處理器214內(nèi)部或外部。處理器214可通過(guò)尋址預(yù)定義寄存器位置和/或在處理器214的地址空間中的預(yù)定義位置處存取隨機(jī)數(shù)236。應(yīng)用程序222可通過(guò)執(zhí)行一或多個(gè)指令來(lái)存取隨機(jī)數(shù)236,所述一或多個(gè)指令使得處理器214從預(yù)定義地址或地址塊提取數(shù)據(jù),或通過(guò)從由處理器214定義的一組寄存器提取數(shù)據(jù)來(lái)存取隨機(jī)數(shù)236。處理器