亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器的制作方法

文檔序號:7640374閱讀:1682來源:國知局
專利名稱:密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器的制作方法
密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器 背景在35 U.S.C.§119下的優(yōu)先權(quán)要求本專利申請要求2005年8月24日提交且被轉(zhuǎn)讓給本發(fā)明受讓人并因而被 明確援弓l納入于此的題為"Cryptographically Secure Pseudo-Random Number Generator (密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器)"的臨時申請No. 60/711,148的優(yōu)先權(quán)。領(lǐng)域本發(fā)明涉及密碼學(xué),尤其涉及在電子設(shè)備中偽隨機數(shù)的安全生成。背景隨機數(shù)生成有許多應(yīng)用,舉例而言包括密碼學(xué)用途(例如,用于加密和完 好性保護的密鑰、用于安全性協(xié)議的一次性數(shù)、等等)。真隨機數(shù)是不可能以 高于平均的概率來預(yù)測的。在現(xiàn)實世界中,要獲得理想的隨機數(shù)源是極難的。諸如來自電路組件的熱噪聲等的物理源有時產(chǎn)生非常良好的隨機輸出。但 是,物理源曝露于外界干擾之下,這會使得輸出顯著有偏。此外,物理源在其 能多快地提供新熵(隨機性)的方面受限。許多應(yīng)用承受不起等待很長時間才 得到隨機數(shù)。另外,依賴于硬件的發(fā)生器有時在拖延過長的一段時間之后會發(fā) 生故障并在此類情形中產(chǎn)生非常糟糕的隨機數(shù)。使用確定性算法來生成偽隨機數(shù)的偽隨機數(shù)字發(fā)生器(PRNG)常被采用。 PRNG可在非??斓乃俣认庐a(chǎn)生數(shù)字。給定了稱為種子的隨機輸入,就能確定 性地生成非常長的一序列偽隨機數(shù)。不具備此種子的知識,要將此發(fā)生器與隨 機源區(qū)分開來是不可行或非常困難的。盡管有許多PRNG可用,但是大多數(shù)不 是針對安全性應(yīng)用設(shè)計的。因為PRNG使用確定性算法,所以它們曝露于入侵 之下,由此削弱了PRNG的安全性。例如,線性同余發(fā)生器被廣泛用作PRNG,但是在很短一序列的輸出被分析出來之后就能被破解。
密碼學(xué)應(yīng)用通常使用"隨機"數(shù)作為初始化矢量、密鑰、 一次性數(shù)(nonce)、 鹽值"ait)等。 一般而言,密碼學(xué)上安全的PRGN (CSPRNG)是以安全方式 用不可預(yù)測的輸入來播種的,因而要將其輸出與一序列隨機比特區(qū)分開來是不 可行的。如本文中定義的,CSPRNG具有正常PRGN的所有性質(zhì),并且另外 還有至少兩個其他性質(zhì)。這些性質(zhì)當(dāng)中稱為"下一比特測試"的一個性質(zhì)陳述給 定從一發(fā)生器生成的一序列w個比特,沒有任何可行的方法能用顯著高于1/2 的概率來預(yù)測第(w+l)比特。稱為"抗惡意播種"的第二個性質(zhì)表明即便某一攻
擊能獲得一段時間上對CSPRNG的輸入的完全或部分控制,要預(yù)測或再現(xiàn)來 自CSPRNG的任何隨機輸出仍然是不可行的。
偽隨機數(shù)生成方案在CSPRNG中是相對簡單直接的。舉例而言,其可以 是在計數(shù)器模式或輸出反饋模式下運行的分塊密碼、是用種子作為密碼密鑰的 流密碼、或是散列的嵌套結(jié)構(gòu)。CSPRNG設(shè)計中錯綜復(fù)雜的部分是如何播種以 及重新播種CSPRNG。重新播種是用于以新種子來更新先前已被播種過的 CSPRNG的順序邏輯的過程。此類重新播種使得要破解確定性偽隨機數(shù)生成算 法更為困難。
現(xiàn)存在數(shù)種標(biāo)準化的CSPRNG設(shè)計,諸如FIPS 186-2、 ANSI X9.17-1985 附錄C、 ANSI X9.31-1998附錄A.2.4、以及ANSI X9.62-1998附件A.4。遺憾
的是,這些設(shè)計當(dāng)中有許多在某些情狀下并不令人滿意。例如,ANSI X9.17 PRNG的兩個設(shè)計缺陷已被J. Kelsey等在刊于1998年Springer-Verlag出版社 的第五屆國際學(xué)術(shù)研討會學(xué)報中的"Fast Software Encryption (快速軟件加密)" 中標(biāo)識出來。
Yarrow禾口 Fortuna是兩種公知的CSPRNG設(shè)計。(參見J. Kelsey、 B. Schneier、和N. Ferguson著刊于1999年8月Springer Verlag出版社的密碼學(xué) 領(lǐng)域選集第六年度學(xué)術(shù)研討會的"Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator (Yarrow-160: Yarrow密碼學(xué)偽隨機數(shù)字發(fā)生器設(shè)計與分析筆記)"、以及N. Ferguson和B. Schneier著2003年由Wiley出版社出版的"Practical Cryptography (實用密碼 學(xué)),,。)Yarrow和Fortuna兩者皆具有得到錯綜復(fù)雜的熵累積方案支持的重新播種 控制。Yarrow并沒有指定具體的評價熵以作重新播種的方法,而Fortuna定期 地在最快的熵池源就緒時重新播種系統(tǒng)。它們兩者皆在計數(shù)器模式下使用分塊 密碼來進行偽隨機數(shù)生成,并廣泛使用散列算法來進行重新播種。在計數(shù)器模 式下使用分塊密碼以及使用散列算法進行重新播種在計算上是開銷高昂的,并 且是耗時的。
因此,需要一種更好的、復(fù)雜性較低的、和/或效率更高的偽隨機數(shù)字發(fā) 生器。
概要
提供了一種操作安全偽隨機數(shù)字發(fā)生器的方法。此方法包括(1)獲得一 個或多個不可預(yù)測的熵源以提供種子,。)通過因變于數(shù)字發(fā)生器的當(dāng)前內(nèi)狀 態(tài)以及此種子修改此內(nèi)狀態(tài)以在該偽隨機數(shù)的內(nèi)狀態(tài)中累積熵,以及(3)基于 該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成一偽隨機數(shù)。此經(jīng)修改的內(nèi)狀態(tài)可通過對 該當(dāng)前內(nèi)狀態(tài)和該種子使用非線性反饋移位寄存器操作來獲得。這一個或多個 不可預(yù)測的熵源可被組合成該種子。
在該數(shù)字發(fā)生器停機之際可存儲一初始化種子,其中該初始化種子是由此
數(shù)字發(fā)生器生成的偽隨機數(shù)。從而在該數(shù)字發(fā)生器啟動之際可用所存儲的初始
化種子來初始化該數(shù)字發(fā)生器的啟動內(nèi)狀態(tài)。此初始化種子存儲在一安全文件
系統(tǒng)中。在偽隨機數(shù)啟動內(nèi)狀態(tài)的初始化之前,作出關(guān)于該初始化種子的完好
性是否受危害的確定。如果所存儲的初始化種子的完好性已受危害,那么采用
替換的不可預(yù)測源來初始化此數(shù)字發(fā)生器的啟動內(nèi)狀態(tài)。
使用單一密碼學(xué)原語操作來獲得該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)并生成
偽隨機數(shù)。這單一密碼學(xué)原語操作可以是二進制字操作、具有恒定偏移的比特 移位操作、或查表中之一者。
可從這一個或多個不可預(yù)測源連續(xù)地重新播種此數(shù)字發(fā)生器以改變此數(shù) 字發(fā)生器的內(nèi)狀態(tài)。這些不可預(yù)測源包括具有可量化信息的物理源。另外,可 用從調(diào)用方應(yīng)用接收到的新種子來重新播種此數(shù)字發(fā)生器以改變此數(shù)字發(fā)生 器的內(nèi)狀態(tài)。該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)可通過(1)通過與該數(shù)字發(fā)生器的一個 或多個狀態(tài)寄存器的當(dāng)前內(nèi)容作異或操作來將種子加載到這一個或多個狀態(tài) 寄存器中,(2)將這些狀態(tài)寄存器中多個的經(jīng)比特移位的內(nèi)容饋送至非線性函 數(shù)以獲得一結(jié)果,(3)在此結(jié)果與這一個或多個狀態(tài)寄存器之一之間執(zhí)行異或
操作以獲得一反饋數(shù),以及(4)通過將來自第一狀態(tài)寄存器的內(nèi)容移位到第二
狀態(tài)寄存器并用此反饋數(shù)來加載第三狀態(tài)寄存器來修改這一個或多個狀態(tài)寄 存器來獲得。
另一個特征維護在諸次重新播種操作之間這一個或多個狀態(tài)寄存器被移 位的次數(shù)的計數(shù)器。然后基于此計數(shù)器來修改這一個或多個狀態(tài)寄存器之一。
又一個特征維護一每次有偽隨機數(shù)生成時就改變的間隔計數(shù)器。該數(shù)字發(fā) 生器從這一個或多個不可預(yù)測源被播種以僅在該間隔計數(shù)器所定義的間隔上 改變該數(shù)字發(fā)生器的內(nèi)狀態(tài)。該數(shù)字發(fā)生器可在由此間隔計數(shù)器定義的間隔上
用系統(tǒng)時間來重新播種。此種子可以是至少128比特長,并且該數(shù)字發(fā)生器的 內(nèi)狀態(tài)是18個字長寄存器。
另一個實施例提供一種密碼學(xué)上安全的數(shù)字發(fā)生器,其包括(1)種子加
載器,其被配置成獲得一個或多個不可預(yù)測的種子信息源以提供種子、(2)多
個狀態(tài)寄存器,用于存儲該數(shù)字發(fā)生器的內(nèi)狀態(tài),其中上述種子加載器基于這 些狀態(tài)寄存器的當(dāng)前內(nèi)容以及此種子來重新播種這些狀態(tài)寄存器以修改該數(shù)
字發(fā)生器的內(nèi)狀態(tài)并累積熵、以及(3)偽隨機數(shù)字發(fā)生器,其被配置成基于該
數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)來生成--偽隨機數(shù)。該經(jīng)修改的內(nèi)狀態(tài)是通過對 這些狀態(tài)寄存器的內(nèi)容和該種子使用非線性反饋移位寄存器操作來獲得。該偽 隨機數(shù)字發(fā)生器可被進一步配置成(1)在該數(shù)字發(fā)生器停機之際生成一初始
化種子,以及(2)存儲此初始化種子。上述種子加載器還可被配置成在該數(shù)字 發(fā)生器重啟之際用所存儲的初始化種子來初始化這多個狀態(tài)寄存器。該種子加 載器可被進一步配置成用從這一個或多個不可預(yù)測源獲得的更多的種子來連 續(xù)地修改這多個狀態(tài)寄存器。這些不可預(yù)測源可包括具有可量化信息的物理 源。
此種子加載器還可用從調(diào)用方應(yīng)用接收到的新種子按要求修改這多個狀 態(tài)寄存器。可使用單一密碼學(xué)原語操作來重新播種這些狀態(tài)寄存器并生成偽隨機數(shù)。
另一種實現(xiàn)提供一種包括處理設(shè)備的處理電路,此處理設(shè)備被配置成(1) 從一個或多個不可預(yù)測的熵源獲得種子,(2)因變于數(shù)字發(fā)生器當(dāng)前內(nèi)狀態(tài)和 該種子修改此內(nèi)狀態(tài)并在該數(shù)字發(fā)生器中累積熵,以及(3)基于該數(shù)字發(fā)生器 的經(jīng)修改的內(nèi)狀態(tài)生成一偽隨機數(shù)。該處理電路還可包括包含用于存儲該數(shù)字 發(fā)生器的內(nèi)狀態(tài)的一個或多個內(nèi)狀態(tài)寄存器的存儲器設(shè)備。該處理電路可被進 一步配置成(1)在該數(shù)字發(fā)生器關(guān)機之際將一初始化種子存儲在此存儲器設(shè)
備中,其中此初始化種子是由該數(shù)字發(fā)生器生成的偽隨機數(shù),(2)在初始化該
數(shù)字發(fā)生器的啟動內(nèi)狀態(tài)之前確定此初始化種子的完整性是否已受危害,以及
(3)在(a)所存儲的初始化種子的完整性已受危害的情況下用替換的不可預(yù)測源 以及(b)其他情況下用所存儲的初始化種子來重新播種該數(shù)字發(fā)生器的啟動 內(nèi)狀態(tài)。該處理電路可被進一步配置成(1)用從這一個或多個不可預(yù)測的種子 信息源獲得的更多的種子連續(xù)地修改此內(nèi)狀態(tài),以及(2)用從調(diào)用方應(yīng)用接收 到的新種子按要求來修改此內(nèi)狀態(tài)。
另一種實現(xiàn)提供一種具有用于生成偽隨機數(shù)的一條或多條指令的機器可 讀介質(zhì),這些指令在由處理器執(zhí)行時使該處理器(1)從一個或多個不可預(yù)測 的熵源獲得種子,(2)因變于數(shù)字發(fā)生器當(dāng)前內(nèi)狀態(tài)和該種子修改此內(nèi)狀態(tài)以 在該數(shù)字發(fā)生器中累積熵,以及(3)基于該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成 一偽隨機數(shù)。
附圖簡要說明


圖1是圖解了可被修改以實現(xiàn)密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器 (CSPRGN)的流密碼NLS的框圖。
圖2圖解了根據(jù)一種實現(xiàn)偽隨機數(shù)字發(fā)生器如何能被表示成分立的函數(shù)。 圖3是圖解了播種函數(shù)的一個示例的框圖。
圖4是圖解了播種函數(shù)所使用的狀態(tài)寄存器初始化器的一個示例的框圖。 圖5是圖解了根據(jù)一個示例可用于播種和/或重新播種數(shù)字發(fā)生器的種子 加載器所執(zhí)行的函數(shù)的框圖。
圖6圖解了一種用于執(zhí)行從NLS密鑰調(diào)度修改而來的播種函數(shù)的方法。圖7圖解了一種用于在與偽隨機數(shù)字發(fā)生器相關(guān)聯(lián)的安全文件系統(tǒng)中存 儲種子的方法。
圖8圖解了一種用于在啟動時使用存儲在種子文件中的種子來初始化偽 隨機數(shù)字發(fā)生器的方法。
圖9圖解了應(yīng)用如何來重新播種數(shù)字發(fā)生器。
圖10是圖解了包括存儲介質(zhì)和配置成實現(xiàn)密碼學(xué)上安全的偽隨機數(shù)字發(fā)
生器的處理器的計算設(shè)備的框圖。
圖11是圖解了根據(jù)一種實現(xiàn)的偽隨機數(shù)字發(fā)生器電路的框圖。
具體說明
在以下說明中,給出了具體細節(jié)以提供對諸實施例的透徹理解。但是,本 領(lǐng)域技術(shù)人員將可理解,沒有這些具體細節(jié)也可實踐這些實施例。例如,電路 可能以框圖形式示出,也可能根本不被示出,以免因不必要的細節(jié)而與這些實 施例相混淆。在其他實例中,公知的電路、結(jié)構(gòu)、和技術(shù)可能被具體示出以免 與這些實施例相混淆。
還應(yīng)注意,這些實施例可能被描繪為流程圖、流圖、結(jié)構(gòu)圖、或框圖的過 程。盡管流程圖會把諸操作描述為順序過程,但是這些操作中有許多可并行或 并發(fā)執(zhí)行。另外,這些操作的次序可被重新編排。過程在其操作完成時終止。 過程可對應(yīng)于方法、函數(shù)、程序、子例程、子程序等。當(dāng)過程對應(yīng)于函數(shù)時, 其終止對應(yīng)于該函數(shù)返回到調(diào)用方函數(shù)或主函數(shù)。此外,存儲介質(zhì)可表示用于
存儲數(shù)據(jù)的一個或多個設(shè)備,包括只讀存儲器(ROM)、隨機存取存儲器 (RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存設(shè)備、和/或其他用于存儲信息 的機器可讀介質(zhì)。術(shù)語"機器可讀介質(zhì)"包括但不限于可移植或固定存儲設(shè)備、 光存儲設(shè)備、無線信道、以及各種其他能夠存儲、包含、或承載指令和/或數(shù)據(jù) 的介質(zhì)。
此外,諸實施例可由硬件、軟件、固件、中間件、微代碼、或其組合來實 現(xiàn)。當(dāng)在軟件、固件、中間件、或微代碼中實現(xiàn)時,用于執(zhí)行必要任務(wù)的程序 代碼或代碼片段可被存儲在諸如存儲介質(zhì)或其他存儲裝置等的機器可讀介質(zhì) 中。處理器可執(zhí)行這些必要的任務(wù)。代碼片段可表示過程、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包、類、或是指令、數(shù)據(jù)結(jié)構(gòu)、或程序語句的 組合。通過傳遞和/或接收信息、數(shù)據(jù)、自變量、參數(shù)、或存儲器內(nèi)容,代碼片 段可被耦合到另一代碼片段或硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可經(jīng)由 包括存儲器共享、消息傳遞、令牌傳遞、以及網(wǎng)絡(luò)傳輸?shù)群线m的手段被傳遞、 轉(zhuǎn)發(fā)、或傳輸。一種特征提供密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器(CSPRNG)的一種新穎性算法,其用于重新播種該數(shù)字發(fā)生器以獲得可供安全性應(yīng)用使用的偽隨機序列。在一種實現(xiàn)中,流密碼非線性SOBER (NLS)發(fā)生器被修改成使得有狀 態(tài)的重新播種機制持續(xù)累積來自不同物理源的熵。(參見HAWKES, Philip等 的"Primitive Specification NLS (原語規(guī)范NLS)",[在線],[于2006-08-21檢 索到]。檢索自因特網(wǎng)〈URL:習(xí)w.ecrypt.eu.org/stream/ciphers/nls/nls.pdf^) 。NLS是用于基于簡單的面向字的操作來生成機密密鑰的同步流密碼。另外,與現(xiàn)有技術(shù)不同,此重新播種方案并不將數(shù)字發(fā)生器復(fù)位到已知狀 態(tài),由此減少了入侵此數(shù)字發(fā)生器的機會。該發(fā)生器的下一狀態(tài)改為是當(dāng)前狀 態(tài)和新種子的函數(shù)。此外,另一特征為在系統(tǒng)被停機之前生成并存儲受安全保護的種子并后續(xù) 在系統(tǒng)重啟時使用其來初始化該系統(tǒng)提供了空間。另一個方面提供CSPRNG的主動和被動重新播種兩者。主動重新播種是 由發(fā)生器(CSPRNG)有規(guī)律地或不斷地執(zhí)行的。被動重新播種是由調(diào)用 CSPRNG的應(yīng)用執(zhí)行以將其自己的熵獨立地貢獻給該發(fā)生器(CSPRNG)。此 新的熵以也受當(dāng)前狀態(tài)影響的方式改變CSPRNG的順序邏輯的狀態(tài)。由于在 此新穎性的CSPRNG中有2576種可能的狀態(tài),因此沒有任何應(yīng)用能基于其自己 的熵貢獻來演繹出下一狀態(tài)。又一個特征是能夠比絕大多數(shù)當(dāng)前設(shè)計快得多地生成偽隨機數(shù)流。在流密 碼NLS中使用的操作是針對32位處理器充分優(yōu)化的。結(jié)果,與在計數(shù)器模式 下使用處理器密集型的分塊密碼的那些方案(例如,Yarrow和Fortuna)相比, 在軟件和嵌入式硬件中生成隨機比特要快得多。另外,提供了一種復(fù)雜性較低的用于重新播種和熵累積的結(jié)構(gòu),由此降低 了實現(xiàn)成本和處理器要求。Yarrow和Fortuna兩者皆要求有多份散列上下文來本地保存熵。作為對比,所公開的數(shù)字生成方案提供可供外部應(yīng)用從外界調(diào)用 此播種函數(shù)的接口。結(jié)果,無需為熵累積分配任何額外的本地存儲。事實上, 在一些實施例中,存儲此發(fā)生器的內(nèi)狀態(tài)僅需七十二 (72)字節(jié)。在狀態(tài)轉(zhuǎn)移 期間,熵輸入被彌散在很長范圍的內(nèi)狀態(tài)比特中。此外,CSPRNG的一種實現(xiàn)使用非線性反饋移位寄存器來生成偽隨機序列。這種輕量級的重新播種機制和非線性內(nèi)部結(jié)構(gòu)被選取以增強密碼學(xué)安全性 并使系統(tǒng)效率最優(yōu)化。圖1是圖解了可被修改以實現(xiàn)密碼學(xué)上安全的偽隨機數(shù)發(fā)生器(CSPRGN)的流密碼NLS的框圖。在流密碼NLS 104中,使用密鑰102來 將流密碼104配置成不可發(fā)現(xiàn)的狀態(tài)。密鑰調(diào)度器106可配置流密碼NLS 104 的狀態(tài)(例如,順序邏輯)。另夕卜,內(nèi)部狀態(tài)寄存器108由流密碼NLS104維 護。流密碼NLS 104可支持一百二十八(128)比特以上長的機密密鑰102, 并使用十八(18)個字長寄存器(r
到r[16],以及尺o"W寄存器)108來存 儲流密碼NLS 104的內(nèi)寄存器狀態(tài)108。機密密鑰102和狀態(tài)寄存器108的長 度使得要使用蠻力攻擊來嘗試破解流密碼NLS 104是不切實際的。密鑰流發(fā)生 器110基于內(nèi)狀態(tài)寄存器108和機密密鑰102生成輸出密鑰流112。輸出密鑰 流112可用于將明文數(shù)據(jù)114加密成密文116。 NLS是使用模2加法將流密碼 輸入(即,密鑰流)112與明文114混合的加性流密碼。流密碼NLS 104可針對快速隨機數(shù)生成稍作修改以實現(xiàn)對于安全性應(yīng)用 而言足夠強健的數(shù)字發(fā)生器。實現(xiàn)簡單、有效、和/或高效率的播種和重新播種 機制來從不同的源收集熵并且安全地并以低處理開銷來生成隨機數(shù)。該數(shù)字發(fā) 生器的下一狀態(tài)是當(dāng)前狀態(tài)和新種子的函數(shù)。該數(shù)字發(fā)生器初始由具有來自諸 物理源的足夠的隨機比特的系統(tǒng)來播種。即便該數(shù)字發(fā)生器有很長時間沒有被 重新播種了,演繹出第一個種子也和計算上不可行的破解128比特密鑰流密碼 一樣難。作為數(shù)字發(fā)生器的一個特征,輸出應(yīng)當(dāng)與一序列隨機比特不可區(qū)分。例如,該數(shù)字發(fā)生器的偽隨機輸出可以是定義為 O[O] + r[16])④O[l] + r[13]) e (r[6] + to朋,)的數(shù)字,其是流密碼NLS所使用的輸出算法。這個(些)偽隨機數(shù)可被用作初始化矢量、密鑰、 一次性數(shù)、鹽值等等。 為便于說明本發(fā)明,此數(shù)字發(fā)生器將是針對可在諸如Intel奔騰系列CISC(復(fù)雜指令集計算機)處理器和ARM系列RISC (精簡指令集計算機)處理器 等32位處理器上實現(xiàn)的32位運算而優(yōu)化的。在本文中,"字"是指32位串并 且"字節(jié)"是指8位串。但是,對于本領(lǐng)域普通技術(shù)人員將顯而易見的是,所公 開的CSPRNG可針對具有不同位數(shù)的其他運算來實現(xiàn)。圖2圖解了偽隨機數(shù)字發(fā)生器202根據(jù)一種實現(xiàn)如何能被表示成分立的函 數(shù)。播種函數(shù)SEED()204使用一個或多個不可預(yù)測源206作為種子來配置發(fā)生 器202。具體而言, 一個或多個不可預(yù)測源206可包括從其生成種子的一個或 多個不同的物理源。在一些實現(xiàn)中,來自每一不可預(yù)測源206的信息可被量化 成被順序饋送至播種函數(shù)SEED()204的分立的種子。在其他實現(xiàn)中,來自這些 不可預(yù)測源206中的兩個或多個源的信息可被量化并組合(例如,復(fù)用、異或 等)成單個種子,其作為參數(shù)被饋送至播種函數(shù)SEED()204。每次用一"種子" 作為參數(shù)調(diào)用播種函數(shù)SEED(),數(shù)字發(fā)生器202的內(nèi)狀態(tài)就由涉及諸內(nèi)狀態(tài) 寄存器作移位的非線性操作來更新(即,"重新播種")。偽隨機序列生成函數(shù)RAND()208使用數(shù)字發(fā)生器202的內(nèi)狀態(tài)來獲得偽 隨機輸出210。所生成的偽隨機數(shù)(輸出)210可被用作一次性數(shù)、初始化矢 量等。不可預(yù)測源206可來自不同的可量化信息源。例如,可使用諸如傳輸誤差、 帶寬中的噪聲峰值、處理器、CDMA搜索器的溫度讀數(shù)等物理源作為對該種子 的輸入。在諸輸入源206當(dāng)中有一些受到駭客操縱的情形中,通過連續(xù)地或頻繁地 從一個或多個源重新播種數(shù)字發(fā)生器202有助于挫敗駭客攻擊。因為種子使用 不可預(yù)測輸入206連續(xù)地或頻繁地更新的,因此駭客不再像以往那樣能夠通過 操縱諸輸入源206中的一些來預(yù)測新的偽隨機輸出210。圖3是圖解了播種函數(shù)204的一個示例的框圖。狀態(tài)寄存器初始化器302(NLS—INITSTATE)在數(shù)字發(fā)生器首次啟動時初始化該數(shù)字發(fā)生器的諸狀態(tài) 寄存器。例如,使用斐波那奇(Fibonacci)數(shù)來初始化狀態(tài)寄存器r[O]到r[16]。 /。"W寄存器也被初始化成隨機選取的數(shù)字(例如,0x6996c53a)。例如,為 可互用性目的可對使用一特定的固定值。第二,種子加載器(304)(NLS—LOADKEY)使用異或(邏輯XOR運算,記為"e")將種子300逐字地加載到諸狀態(tài)寄存器(r
到r[16])中。種子300的長度也可作為字被加載。 種子加載器304還在非線性反饋模式下同時移位諸狀態(tài)寄存器(r[O]到416]) 以允許種子300可以是任意長度。第三,KowW發(fā)生器306 (GENKONST)用 基于當(dāng)前發(fā)生器狀態(tài)和當(dāng)前Konst值的新Konst值來更新寄存器。此 Konst值在偽隨機數(shù)輸出210期間用作一常數(shù)。圖4是圖解了播種函數(shù)所使用的狀態(tài)寄存器初始化器302的一個示例的框 圖。當(dāng)數(shù)字發(fā)生器首次被啟動時,其諸狀態(tài)寄存器被初始化。狀態(tài)寄存器初始 化器302可包括用于初始化數(shù)字發(fā)生器狀態(tài)寄存器斐波納契數(shù)表402。例如, rt
= rt[l] = l,并且rt[i]-4i-l] + ^[i-2],其中2^i^16。常數(shù)404用于初始 化Komf寄存器。常數(shù)404的值可以是優(yōu)選在其比特序列中有一些熵的任何數(shù) 字。圖5是圖解了根據(jù)一個示例可用于播種和/或重新播種數(shù)字發(fā)生器的種子 加載器304所執(zhí)行的功能的框圖。種子加載器304可包括確保種子輸入的每一 比特影響結(jié)果所得的狀態(tài)寄存器的每一比特的非線性機制。(參見HAWKES, Philip等的"Primitive Specification NLS(原語規(guī)范NLS)",[在線],[于2006-08-21 檢索到]。檢索自因特網(wǎng)〈URL:www.ecrypt.eu.org/stream/ciphers/nls/nls.pdf^)。 包容器函數(shù)501將種子514的每一個字加到狀態(tài)寄存器r[15]模232中。種子長 度(按字節(jié)計)也被加到狀態(tài)寄存器r[15]。彌散器函數(shù)503執(zhí)行狀態(tài)寄存器 r
到r[16]的寄存器移位500以使得 i[i]^t[i+l],其中;=0...15。反饋函數(shù) 502取其輸入為(1\
<19) + (rt[15] <9)+KomZ,在此"< ^"標(biāo)示左旋A比特。 將反饋函數(shù)502的輸出與n[4]異或以獲得反饋內(nèi)容508。狀態(tài)寄存器rt[16]被設(shè) 為此反饋內(nèi)容508,而 i[4]被設(shè)為rt+i[4] XOR輸出(t+l),在此輸出(t+l)函數(shù) 208即為偽隨機數(shù)輸出210。但是,當(dāng)作為種子加載器304的一部分被調(diào)用時, 輸出(t+l)208被留在數(shù)字發(fā)生器內(nèi)部而不被提供給外界的應(yīng)用。 反饋函數(shù)502可基于四個8x8的替換盒執(zhí)行32位映射。 盡管寄存器移位器506的輸出會落入循環(huán)的可能性極低,但是這仍然是可 能發(fā)生的。為避免發(fā)生此類循環(huán)輸出,可使用計數(shù)器f來維護對寄存器移位器 506從上一次重新播種操作起所移位的字的數(shù)目的計數(shù)。將計數(shù)器f加到諸狀 態(tài)寄存器上以防止發(fā)生循環(huán)輸出。例如,當(dāng)/是(216+1)的倍數(shù)時,r[2]被設(shè)為r[2] + t(模232)。在其他實現(xiàn)中,可通過執(zhí)行不同的操作來將?加到不同寄存器(例如,在r
與r[16]之間)上和/或插入到寄存器中。在一種實現(xiàn)中,使用包容器函數(shù)501加載種子514,然后調(diào)用彌散器函數(shù) 503。然后,使用包容器函數(shù)501加載種子長度,并調(diào)用彌散器函數(shù)503十七(17)次以確保種子輸入的每一比特以非線性方式影響結(jié)果所得的狀態(tài)寄存器 r
…r[16]的每一比特。圖6圖解了一種用于執(zhí)行從NLS密鑰調(diào)度修改而來的播種函數(shù)的方法。 基于一個或多個不可預(yù)測源獲得種子602,并將其作為參數(shù)傳遞給播種函數(shù)。 種子被定義為任意長度的包含一些熵但并不要求是理想隨機的字節(jié)串。例如, 用于生成種子的源可通過量化來自諸如處理器溫度、通信鏈路誤差、信道內(nèi)檢 測到的頻率峰值等的物理源的測量。當(dāng)播種函數(shù)被調(diào)用時,檢査604 WafejmWafeW標(biāo)志以確定發(fā)生器狀態(tài)寄 存器是否己被初始化。常規(guī)的流密碼NLS算法在重新播種之際復(fù)位或清除諸 狀態(tài)寄存器,由此未能積累熵。作為對比,本發(fā)明的修改算法通過將新種子與 當(dāng)前狀態(tài)寄存器組合(例如,不清除諸狀態(tài)寄存器)來累積熵。如果播種函數(shù) 是在發(fā)生器啟動之后首次被調(diào)用,那么諸內(nèi)狀態(tài)寄存器被初始化606 (例如, r[O]到r[16],Ko"W等)并且jmY/afeet/標(biāo)志被置位608以指示該發(fā)生器的 諸狀態(tài)寄存器已被初始化。例如,NLS一INITSTATE函數(shù)可被調(diào)用以初始化為 NLS算法預(yù)先定義的諸內(nèi)狀態(tài)寄存器。否則,如果諸狀態(tài)寄存器已被初始化(如 由Wa&一/w加afe^標(biāo)志被置位所標(biāo)示),則初始化步驟被跳過。種子被傳遞給NLS一LOADKEY函數(shù),在此因變于該數(shù)字發(fā)生器的當(dāng)前狀 態(tài)和種子來獲得610其新狀態(tài)。例如,該種子及其長度使用XOR被加載到諸 狀態(tài)寄存器中以使得此新狀態(tài)是當(dāng)前狀態(tài)和該種子兩者的函數(shù)。由此推知,利 用當(dāng)前種子的指示來演繹該發(fā)生器先前的、當(dāng)前的、或接下來的狀態(tài)是不可行 的。該系統(tǒng)向數(shù)字發(fā)生器不斷地加入來自新的不可預(yù)測的種子的熵。另外,此 播種函數(shù)可由調(diào)用該數(shù)字發(fā)生器的應(yīng)用來調(diào)用。在此意義下,應(yīng)用調(diào)用播種函 數(shù)以貢獻隨機性的熵并以不可預(yù)測的方式來改變發(fā)生器狀態(tài)。結(jié)果,在不同的 時間用相同的輸入種子重新播種導(dǎo)致不同的輸出。這與無論何時只要使用相同 的種子就產(chǎn)生相同輸出序列的普通PRNG是可區(qū)分的。的值然后基于當(dāng)前發(fā)生器狀態(tài)被更新612。例如,可調(diào)用NLS—GENKONST函數(shù)來從演進的發(fā) 生器狀態(tài)獲得新的Konst。 Konst可用于如前面說明地對輸出加以掩碼。輸出緩 沖被刷新514以保存用于生成下一種子的新偽隨機比特。
為便于實現(xiàn)CSPRNG,種子和偽隨機序列兩者皆可為按字節(jié)計的串。因 為流密碼NLS是面向字的,因此種子由SEED()內(nèi)部地填充以0到3字節(jié)的0。 類似地,最后一個字中的0到3個多出的字節(jié)在RAND()向輸出緩沖遞送偽隨 機序列之前被丟棄。
再次參見圖2,在實現(xiàn)期間,用數(shù)個物理源或定期地和/或隨機地播種發(fā)生 器202將是可取的。在CDMA移動電話中可用的一種建議的源是來自搜索器 的低階能量采樣。搜索器使用天線來獲得多徑能量峰值,其提供了連續(xù)的隨機 性源。也可納入諸如分組流中的延遲抖動等隨機程度較低的源。
為發(fā)生器的隨機性而引入不可預(yù)測的物理源挫敗了基于預(yù)測發(fā)生器輸出 的攻擊。在一種類型的攻擊中,駭客可能會控制部分但不是所有的物理源。作 為一種解決方案,在加電期間用所有的源來播種發(fā)生器。由于一些源仍提供真 熵,因此駭客無法估計生成輸出序列時的狀態(tài)。在另一類攻擊中,駭客控制用 于播種發(fā)生器的所有可用物理源。在此類情形中,調(diào)用RAND()函數(shù)208的應(yīng) 用可通過親自播種發(fā)生器來得到熵。例如,應(yīng)用可通過以其自己的不可預(yù)測事 件作為源來調(diào)用SEED()函數(shù)204以播種發(fā)生器。
取決于物理源的本質(zhì),加電期間的播種過程可能是十分耗時的。 一種改進 是使用安全文件系統(tǒng)(SFS)來在關(guān)掉電源之前一刻存儲種子文件。圖7圖解 了一種用于在與偽隨機數(shù)發(fā)生器相關(guān)聯(lián)的安全文件系統(tǒng)中存儲種子的方法。安 全文件系統(tǒng)可利用密碼學(xué)原語來保護文件內(nèi)容的機密性和完好性。如果有安全 文件系統(tǒng)可用702,則在設(shè)備被關(guān)機以前,該系統(tǒng)調(diào)用RAND()來生成有128 比特的串作為種子704。該種子作為文件被存儲在SFS中706。
圖8圖解了一種用于在啟動之際使用存儲在種子文件中的種子來初始化 偽隨機數(shù)發(fā)生器的方法。例如,CDMA移動電話中的CSPRNG可以在啟動之 際使用此種子文件來初始化。在設(shè)備加電初始化802之際,該系統(tǒng)確定是否有 安全文件系統(tǒng)可用804。如果在加電期間有SFS可用,那么用完好性査證來解 密此種子文件806。如果成功808,那么從種子文件810恢復(fù)出此內(nèi)容并使用其來播種SEED()函數(shù)812。其內(nèi)容一旦己被提取,種子文件即從SFS被移除。 當(dāng)正常的關(guān)機過程受到危害時,這樣的安排防止相同的種子在該電話下一次加 電時被使用。如果SFS不可用或種子文件未能通過完好性測試,那么使用不可 預(yù)測源來提供128比特(舉例而言)作為第一種子814。
根據(jù)一個特征,應(yīng)用可通過使用SEED()函數(shù)來加入其自己的熵。應(yīng)用所 提供的種子不要求是理想隨機的而是僅必須包括一些新熵。對于隨機數(shù)請求, 其可以是例如系統(tǒng)時間或CPU周期計數(shù)器等的任何種類的信息。用可預(yù)測數(shù) 據(jù)來重新播種是安全的,因而應(yīng)用無需以任何方式來"修剪"輸入數(shù)據(jù)。如果使 用可預(yù)測數(shù)據(jù)來加入熵,那么其可被偶發(fā)地或以不規(guī)律的重新播種模式來使 用,從而應(yīng)用能加入其自己的熵而同時防止駭客危害此發(fā)生器。
圖9圖解了應(yīng)用如何來重新播種數(shù)字發(fā)生器。執(zhí)行校驗來確定計數(shù)器" 是否己被初始化902。如果還沒有,那么用參數(shù)W(例如,32)來初始化902 計數(shù)器"。然后使用RAND0函數(shù)來生成906隨機數(shù)R。每次RAND()被調(diào)用, 計數(shù)器"就遞減1 908。當(dāng)"=0日寸,使用取^sfemj/me (系統(tǒng)時間)作為輸入 源的SEED()函數(shù)來重新播種912此數(shù)字發(fā)生器。計數(shù)器w被重設(shè)914成AV2+(i 模AV2),在此i 是應(yīng)用得到的最新隨機數(shù)。否則,如果"#0 910,那么不執(zhí)行 重新播種。如果重新播種發(fā)生得過于頻繁,那么系統(tǒng)時間對于熵累積而言可能 沒有改變得足夠顯著。通過使重新播種依賴于計數(shù)器",圖9中的方案就確保 兩次重新播種調(diào)用之間的時間足夠長(即,大于iW2次的RAND()執(zhí)行)。由 此因涉及了(i 模AV2)而更難以預(yù)測何時重新播種。
在一種實現(xiàn)中,該數(shù)字發(fā)生器(即,CSPRNG)是作為服務(wù)器進程在受保 護存儲器里運行的,而應(yīng)用從客戶機進程來重新播種或請求隨機序列。這些數(shù) 據(jù)使用進程間通信在CSPRNG與應(yīng)用之間遞送。為了將所有隨機源混合在一 起,為所有應(yīng)用保持一個CSPRNG實例是可取的。亦即,該數(shù)字發(fā)生器以及 諸狀態(tài)寄存器是對所有調(diào)用方應(yīng)用使用的。應(yīng)當(dāng)注意到,播種函數(shù)SEED()和 隨機輸出函數(shù)RAND()是原子的且互斥的。舉例而言,假定攻擊者可訪問播種 函數(shù)SEED()和從RAND()函數(shù)輸出的隨機序列兩者。該攻擊者可能用缺乏熵的 某些已知值來播種CSPRNG。因為該發(fā)生器(g卩,CSPRNG)已由其他獨立源 或從SFS種子文件被播種,因此要猜出CSPRNG的當(dāng)前狀態(tài)仍然是不可行的。除非內(nèi)狀態(tài)被公開,否則RANDO函數(shù)的輸出序列是不可預(yù)測的。
另一方面,即便CSPRNG已運行了很長時間而沒有重新播種,任何攻擊 的復(fù)雜度也不會比破解流密碼NLS要少。要破解流密碼NSL將需要窮舉性的 密鑰搜索,并且給定了密鑰大小(例如,128比特),在當(dāng)前密鑰搜索技術(shù)下 此類蠻力搜索是不切實際的。由本文中描述的實施例生成的隨機比特已通過了 美國國家標(biāo)準技術(shù)研究所(NIST)用于驗證供密碼學(xué)應(yīng)用使用的隨機數(shù)發(fā)生器 和偽隨機數(shù)發(fā)生器的一套統(tǒng)計測試(NIST特種出版物800-22)中的所有測試。
圖10是圖解了包括存儲介質(zhì)1002和配置成實現(xiàn)密碼學(xué)上安全的偽隨機數(shù) 字發(fā)生器的處理器的計算設(shè)備1000的框圖。舉例而言,存儲介質(zhì)1002可以是 存儲器設(shè)備和/或硬盤驅(qū)動器。存儲介質(zhì)1002存儲在被處理器1004執(zhí)行時生成 偽隨機數(shù)的指令。這些指令可致使處理器1004: (1)獲得一個或多個不可預(yù) 測的熵源以提供種子,(2)因變于數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)和該種子修改其當(dāng) 前內(nèi)狀態(tài)來累積熵,(3)基于該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機數(shù), (4)將這一個或多個不可預(yù)測的熵源組合成該種子,(5)用從這一個或多個不 可預(yù)測的種子信息源獲得的種子連續(xù)地修改此當(dāng)前內(nèi)狀態(tài),和/或(6)用從調(diào) 用方應(yīng)用接收到的信息按要求修改此當(dāng)前內(nèi)狀態(tài)。該處理電路可被進一步配置 成(1)在該偽隨機數(shù)發(fā)生器關(guān)機之際將一初始化種子存儲在此存儲器設(shè)備中, 其中此初始化種子是由該偽隨機數(shù)發(fā)生器生成的偽隨機數(shù),(2)在初始化該偽 隨機數(shù)發(fā)生器的啟動內(nèi)狀態(tài)之前確定此初始化種子的完整性是否已受危害,以 及(3)在(a)所存儲的初始化種子的完整性已受危害的情況下用替換的不可預(yù) 測源以及(b)其他情況下用所存儲的初始化種子來重新播種該偽隨機數(shù)發(fā)生 器的啟動內(nèi)狀態(tài)。 .
相應(yīng)地提供一種數(shù)字發(fā)生器,包括(1)用于獲得一個或多個不可預(yù)測的 熵源以提供種子的裝置、(2)用于因變于該數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)以及該種 子來修改其當(dāng)前內(nèi)狀態(tài)以累積熵的裝置、以及(3)用于基于該數(shù)字發(fā)生器的經(jīng) 修改的內(nèi)狀態(tài)來生成偽隨機數(shù)的裝置。
圖11是圖解了根據(jù)一種實現(xiàn)的偽隨機數(shù)發(fā)生器電路1100的框圖。該偽隨 機數(shù)發(fā)生器電路1100包括利用一個或多個熵源來生成種子數(shù)的種子生成器 1102、發(fā)生器狀態(tài)的存儲器1104、以及應(yīng)用來自種子生成器1102的種子以獲得密鑰流的數(shù)字發(fā)生器1106。發(fā)生器電路1100可包括軟件和/或嵌入式硬件組 件以實行其根據(jù)本文中描述的各個實施例的功能。根據(jù)各種實現(xiàn),設(shè)備1000 和/或設(shè)備1100可以是移動電話、個人數(shù)字助理、智能電話、服務(wù)器、臺式計 算機、膝上型計算機、電子游戲設(shè)備、或其他各種電子設(shè)備。盡管為便于解釋 已將設(shè)備1000和1100簡化,但是設(shè)備1000和/或1100取決于所述實現(xiàn)也可包
括其他元件或組件。
本文中描述的新穎性算法可在軟件和/或嵌入式硬件中高效率地實現(xiàn)。具
體而言,因為本發(fā)明為外界應(yīng)用提供了從外界調(diào)用播種函數(shù)SEED()的接口, 因此不需要為熵累積而分配額外的本地存儲。事實上,本文中描述的數(shù)字生成 算法僅使用72字節(jié)來存儲發(fā)生器的內(nèi)狀態(tài),這在存儲空間有限的環(huán)境中是有 吸引力的。通過比較,Yarrow和Fortu皿算法通常需要多件散列上下文(各自 為2件和32件上下文)來本地保存熵。另外,Yarrow或Fortuna所使用的分 塊密碼要求更多的存儲空間來存儲回合密鑰。本文中描述的一些實施例以比一 些現(xiàn)有技術(shù)更少的開銷來提供更快的重新播種。具體而言,用m字節(jié)的信息來 重新播種將花與生成w + 72字節(jié)的偽隨機輸出大致相同的時間。作為比較, Yarrow將熵輸入散列尸,+2次,以供重新播種之用,在此尸,是非負的以及用戶 定義的參數(shù)。Fortuna具有涉及32個熵池的更加錯綜復(fù)雜的重新播種控制方案。 如果保守地假定NLS密鑰調(diào)度算法與散列函數(shù)具有相同的時間復(fù)雜度,那么 CSPRNG比Yarrow快至少尸,+2倍并且比Fortuna至少快三(3)倍地執(zhí)行重新 播種。
又一特征是偽隨機序列生成的速度要比計數(shù)器模式下的分塊密碼(例如, AES)快得多。這是因為流密碼NLS使用單字操作,諸如加法、XOR、以恒 定偏移旋轉(zhuǎn)、以及查表等。結(jié)果, 一字節(jié)的輸出在例如Intel的Centrino處理 器上平均花7.347個時鐘周期,處理器密集度比在計數(shù)器模式下使用分塊密碼 要小。
因此,所公開的這些實施例將在數(shù)個方面優(yōu)于現(xiàn)有技術(shù)中的那些技術(shù)。舉 一例而言,它們可僅使用單一密碼學(xué)原語,而不是散列函數(shù)與分塊密碼的組合。
圖1、 2、 3、 4、 5、 6、 7、 8、 9、 10和/或11中圖解的組件、步驟、禾口/ 或函數(shù)中的一個或多個可被重新編排和/或組合成單個組件、步驟、或函數(shù),或可在數(shù)個組件、步驟、或函數(shù)中體現(xiàn)而不會影響偽隨機數(shù)生成的運作??商砑?br> 更多的元件、組件、步驟、和/或功能而不會脫離本發(fā)明。圖l、 2、 3、 4、 5、 10和/或11中圖解的裝置、設(shè)備、和/或組件可被配置成執(zhí)行圖6、 7、 8和/或 9中描述的方法、特征、或步驟中的一個或多個。
本領(lǐng)域技術(shù)人員將可進一步領(lǐng)會,結(jié)合本文中公開的實施例描述的各種說 明性邏輯框、模塊、電路、和算法步驟可被實現(xiàn)為電子硬件、計算機軟件、或 兩者的組合。為清楚地說明硬件與軟件的這一可互換性,各種說明性組件、框、 模塊、電路、和步驟在上面是以其功能集的形式作一般化描述的。此類功能集 是被實現(xiàn)為硬件還是軟件取決于具體應(yīng)用和強加于整體系統(tǒng)的設(shè)計約束。對這 些實施例的說明旨在說明而非限定所附權(quán)利要求的范圍。由此,本發(fā)明的教導(dǎo) 可易被應(yīng)用于其他類型的裝置,并且許多替換、修改、和變形對于本領(lǐng)域技術(shù) 人員將是顯而易見的。
權(quán)利要求
1.一種用于操作安全的偽隨機數(shù)字發(fā)生器的方法,包括獲得一個或多個不可預(yù)測的熵源以提供種子;通過因變于所述數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)和所述種子而修改所述內(nèi)狀態(tài)來在所述數(shù)字發(fā)生器的所述內(nèi)狀態(tài)中累積熵;以及基于所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機數(shù)。
2. 如權(quán)利要求1所述的方法,其特征在于,所述經(jīng)修改的內(nèi)狀態(tài)是通過 對所述當(dāng)前內(nèi)狀態(tài)和所述種子使用非線性反饋移位寄存器操作來獲得的。
3. 如權(quán)利要求1所述的方法,其特征在于,進一步包括將所述一個或多個不可預(yù)測熵源組合成所述種子。
4. 如權(quán)利要求1所述的方法,其特征在于,進一步包括在所述數(shù)字發(fā)生器停機之際可存儲一初始化種子,其中所述初始化種子是由所述數(shù)字發(fā)生器生成的偽隨機數(shù);以及在所述數(shù)字發(fā)生器啟動之際用所存儲的初始化種子來初始化所述數(shù)字發(fā) 生器的啟動內(nèi)狀態(tài)。
5. 如權(quán)利要求4所述的方法,其特征在于,所述初始化種子存儲在安全 文件系統(tǒng)中,并且所述方法進一步包括在初始化所述數(shù)字發(fā)生器的所述啟動內(nèi)狀態(tài)之前先確定所述初始化種子 的完好性是否受到危害;以及如果所存儲的初始化種子的完好性已受危害,則采用替換的不可預(yù)測源來 初始化所述數(shù)字發(fā)生器的所述啟動內(nèi)狀態(tài)。
6. 如權(quán)利要求1所述的方法,其特征在于,是使用單一密碼學(xué)原語操作 來獲得所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)并生成所述偽隨機數(shù)。
7. 如權(quán)利要求6所述的方法,其特征在于,所述單一密碼學(xué)原語操作包 括二進制字操作、具有恒定偏移的比特移位操作、或査表中之一者。
8. 如權(quán)利要求1所述的方法,其特征在于,進一步包括 從所述一個或多個不可預(yù)測源連續(xù)地重新播種所述數(shù)字發(fā)生器以改變所述數(shù)字發(fā)生器的內(nèi)狀態(tài)。
9. 如權(quán)利要求8所述的方法,其特征在于,所述不可預(yù)測源包括具有可 量化信息的物理源。
10. 如權(quán)利要求8所述的方法,其特征在于,進一步包括用從調(diào)用方應(yīng)用接收到的新種子來重新播種所述數(shù)字發(fā)生器以改變所述 數(shù)字發(fā)生器的內(nèi)狀態(tài)。
11. 如權(quán)利要求l所述的方法,其特征在于,所述安全的偽隨機數(shù)發(fā)生器具有非線性SOBER結(jié)構(gòu)。
12. 如權(quán)利要求11所述的方法,其特征在于,所述經(jīng)修改的內(nèi)狀態(tài)是通過以下操作來獲得的通過與所述數(shù)字發(fā)生器的狀態(tài)寄存器的當(dāng)前內(nèi)容作異或運算來將所述種子加載到所述狀態(tài)寄存器中,將多個所述狀態(tài)寄存器的經(jīng)字移位的內(nèi)容饋送至非線性函數(shù)以獲得結(jié)果, 在所述結(jié)果與所述一個或多個狀態(tài)寄存器之一之間執(zhí)行異或運算以獲得反饋數(shù),以及通過將所述內(nèi)容從第一狀態(tài)寄存器移位至第二狀態(tài)寄存器并用所述反饋 數(shù)加載第三狀態(tài)寄存器來修改所述一個或多個狀態(tài)寄存器。
13. 如權(quán)利要求l所述的方法,其特征在于,進一步包括維護在各次重新播種操作之間所述一個或多個狀態(tài)寄存器被移位的次數(shù)的計數(shù)器;以及基于所述計數(shù)器修改所述一個或多個狀態(tài)寄存器之一。
14. 如權(quán)利要求l所述的方法,其特征在于,進一步包括 維護每次有偽隨機數(shù)生成時就改變的間隔計數(shù)器;以及從所述一個或多個不可預(yù)測源重新播種所述數(shù)字發(fā)生器以僅在所述間隔 計數(shù)器定義的間隔上改變所述數(shù)字發(fā)生器的內(nèi)狀態(tài)。
15. 如權(quán)利要求14所述的方法,其特征在于,進一步包括在由所述間隔計數(shù)器定義的間隔上用系統(tǒng)時間來重新播種所述數(shù)字發(fā)生器o
16. 如權(quán)利要求1所述的方法,其特征在于,所述種子是至少128比特長, 并且所述數(shù)字發(fā)生器的內(nèi)狀態(tài)是18個字長寄存器。
17. —種密碼學(xué)上安全的數(shù)字發(fā)生器,包括種子加載器,其被配置成獲得一個或多個不可預(yù)測的種子信息源以提供種子;多個狀態(tài)寄存器,用于存儲所述數(shù)字發(fā)生器的內(nèi)狀態(tài),其中所述種子加載 器基于所述各狀態(tài)寄存器的當(dāng)前內(nèi)容和所述種子來重新播種所述各狀態(tài)寄存器以修改所述數(shù)字發(fā)生器的內(nèi)狀態(tài)并累積熵;以及偽隨機數(shù)發(fā)生器,其被配置成基于所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)來生 成偽隨機數(shù)。
18. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述經(jīng)修改的內(nèi)狀 態(tài)是通過對所述各狀態(tài)寄存器的內(nèi)容和所述種子使用非線性反饋移位寄存器 操作來獲得的。
19. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述偽隨機數(shù)發(fā)生 器被進一步配置成在所述數(shù)字發(fā)生器停機之際生成初始化種子;以及 存儲所述初始化種子。
20. 如權(quán)利要求19所述的數(shù)字發(fā)生器,其特征在于,所述種子加載器被 進一步配置成在所述數(shù)字發(fā)生器重啟之際用所存儲的初始化種子來初始化所 述多個狀態(tài)寄存器。
21. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述種子加載器被 進一步配置成連續(xù)地將從所述一個或多個不可預(yù)測源獲得的新種子加載到所述多個狀 態(tài)寄存器中。
22. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述不可預(yù)測源包 括具有可量化信息的物理源。
23. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述種子加載器被 進一步配置成將從調(diào)用方應(yīng)用獲得的新種子加載到所述多個狀態(tài)寄存器中。
24. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,是使用單一密碼學(xué) 原語操作來重新播種所述各狀態(tài)寄存器并生成所述偽隨機數(shù)。
25. 如權(quán)利要求17所述的數(shù)字發(fā)生器,其特征在于,所述種子加載器、 多個狀態(tài)寄存器、以及偽隨機數(shù)發(fā)生器是被編排為非線性SOBER結(jié)構(gòu)。
26. —種數(shù)字發(fā)生器,包括用于獲得一個或多個不可預(yù)測的熵源以提供種子的裝置; 用于通過因變于所述數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)和所述種子而修改所述內(nèi) 狀態(tài)來在所述數(shù)字發(fā)生器的所述內(nèi)狀態(tài)中累積熵的裝置;以及用于基于所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機數(shù)的裝置。
27. 如權(quán)利要求26所述的數(shù)字發(fā)生器,其特征在于,進一步包括 用于將所述一個或多個不可預(yù)測熵源組合成所述種子的裝置。
28. 如權(quán)利要求26所述的數(shù)字發(fā)生器,其特征在于,進一步包括 用于在所述數(shù)字發(fā)生器停機之際可存儲一初始化種子的裝置,其中所述初始化種子是由所述數(shù)字發(fā)生器生成的偽隨機數(shù);以及用于在初始化所述數(shù)字發(fā)生器的啟動內(nèi)狀態(tài)之前先確定所述初始化種子 的完好性是否受到危害的裝置;以及用于在所存儲的初始化種子的完好性已被危害的情況下用替換的不可預(yù) 測源、而在其他情況下用所存儲的初始化種子來重新播種所述數(shù)字發(fā)生器的所 述啟動內(nèi)狀態(tài)的裝置。
29. 如權(quán)利要求26所述的數(shù)字發(fā)生器,其特征在于,進一步包括 用于連續(xù)地用從所述一個或多個不可預(yù)測的熵源獲得的更多種子來修改所述當(dāng)前內(nèi)狀態(tài)的裝置;以及用于以從調(diào)用方應(yīng)用接收到的新種子按要求來修改所述當(dāng)前內(nèi)狀態(tài)的裝置。
30. —種處理電路,包括 配置成執(zhí)行以下操作的處理設(shè)備從一個或多個不可預(yù)測的熵源獲得種子,因變于所述數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)和所述種子來修改所述內(nèi)狀態(tài)以在所述數(shù)字發(fā)生器中累積熵,以及 基于所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機數(shù);以及 存儲器設(shè)備,其包括用于存儲所述數(shù)字發(fā)生器的內(nèi)狀態(tài)的一個或多個內(nèi)狀態(tài)寄存器。
31. 如權(quán)利要求30所述的處理電路,其特征在于,所述處理電路被進一 步配置成在所述數(shù)字發(fā)生器停機之際將一初始化種子存儲在所述存儲器設(shè)備中,其 中所述初始化種子是由所述數(shù)字發(fā)生器生成的偽隨機數(shù);在初始化所述數(shù)字發(fā)生器的啟動內(nèi)狀態(tài)之前先確定所述初始化種子的完 好性是否受到危害;以及在所存儲的初始化種子的完好性已被危害的情況下用替換的不可預(yù)測源、 而在其他情況下用所存儲的初始化種子來重新播種所述數(shù)字發(fā)生器的所述啟動內(nèi)狀態(tài)。
32. 如權(quán)利要求30所述的處理電路,其特征在于,所述處理電路被進一 步配置成從所述一個或多個不可預(yù)測的熵源連續(xù)獲得更多的種子以修改所述數(shù)字 發(fā)生器的內(nèi)狀態(tài);以及基于從調(diào)用方應(yīng)用接收到的新種子來修改所述數(shù)字發(fā)生器的內(nèi)狀態(tài)。
33. 如權(quán)利要求30所述的處理電路,其特征在于,所述處理電路被進一 步配置成通過使用基于所述當(dāng)前內(nèi)狀態(tài)和所述種子的單一密碼學(xué)原語操作暨 非線性反饋函數(shù)來修改所述內(nèi)狀態(tài)。
34. —種具有用于生成偽隨機數(shù)的一條或多條指令的機器可讀介質(zhì),這些 指令在由處理器執(zhí)行時所述該處理器從一個或多個不可預(yù)測的熵源獲得種子;因變于數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)和所述種子來修改所述內(nèi)狀態(tài)以在所述 數(shù)字發(fā)生器中累積熵;基于所述數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機數(shù)。
35. 如權(quán)利要求34所述的機器可讀介質(zhì),其特征在于,進一步具有在由 處理器執(zhí)行時使所述處理器執(zhí)行以下操作的一條或多條指令通過使用基于所述當(dāng)前內(nèi)狀態(tài)和所述種子的單一密碼學(xué)原語操作暨非線 性反饋函數(shù)來修改所述內(nèi)狀態(tài)。
36. 如權(quán)利要求34所述的機器可讀介質(zhì),其特征在于,進一步具有在由處理器執(zhí)行時使所述處理器執(zhí)行以下操作的一條或多條指令從所述一個或多個不可預(yù)測的熵源連續(xù)獲得更多的種子以修改所述數(shù)字發(fā)生器的內(nèi)狀態(tài);以及基于從調(diào)用方應(yīng)用接收到的新種子修改所述數(shù)字發(fā)生器的內(nèi)狀態(tài)。
全文摘要
一種密碼學(xué)上安全的偽隨機數(shù)字發(fā)生器被配置成獲得提供種子的一個或多個不可預(yù)測的熵源。該數(shù)字發(fā)生器的當(dāng)前內(nèi)狀態(tài)因變于此當(dāng)前內(nèi)狀態(tài)和該種子而被修改以累積熵。該經(jīng)修改的狀態(tài)可通過對此內(nèi)狀態(tài)和該種子使用非線性反饋移位寄存器操作來獲得。然后基于該數(shù)字發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成一偽隨機數(shù)。這一個或多個不可預(yù)測的熵源可被組合成該種子。該數(shù)字發(fā)生器的內(nèi)狀態(tài)可用從這一個或多個不可預(yù)測源獲得的更多的種子以及當(dāng)前內(nèi)狀態(tài)來不斷地修改。另外,此數(shù)字發(fā)生器的內(nèi)狀態(tài)可隨著從調(diào)用方應(yīng)用接收到新種子而按要求作修改。
文檔編號H04L9/22GK101292464SQ200680039040
公開日2008年10月22日 申請日期2006年8月24日 優(yōu)先權(quán)日2005年8月24日
發(fā)明者A·蓋特曼, G·G·羅斯, L·肖 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1