專(zhuān)利名稱(chēng):偽隨機(jī)數(shù)發(fā)生器的初始種子管理的制作方法
偽隨機(jī)數(shù)發(fā)生器的初始種子管理 背景
相關(guān)申請(qǐng)
本專(zhuān)利申請(qǐng)涉及Gregory Gordon Rose等人于2006年8月2日提交且轉(zhuǎn)讓給 本申請(qǐng)受讓人的題為"Cryptographically Secure Pseudo-Random Number Generator
(密碼學(xué)上安全的偽隨機(jī)數(shù)字發(fā)生器)"的美國(guó)S/N. 11/509,215。
領(lǐng)域
本發(fā)明涉及安全偽隨機(jī)數(shù)發(fā)生器,尤其涉及用于在電子設(shè)備中初始化偽隨機(jī) 數(shù)發(fā)生器的種子管理。
背景
隨機(jī)數(shù)生成有許多應(yīng)用,舉例而言包括密碼學(xué)用途(例如,用于加密和完好 性保護(hù)的密鑰、用于安全性協(xié)議的一次性數(shù)(nonce)、等等)。真隨機(jī)數(shù)是不可 能以高于平均的概率來(lái)預(yù)測(cè)的。在現(xiàn)實(shí)世界中,要獲得理想的隨機(jī)數(shù)源是極難的。
常常采用使用確定性算法來(lái)生成偽隨機(jī)數(shù)的偽隨機(jī)數(shù)字發(fā)生器(PRNG)。 PRNG可在非??斓乃俣认庐a(chǎn)生數(shù)字。給定了稱(chēng)為種子的隨機(jī)輸入,就能確定性地 生成非常長(zhǎng)的偽隨機(jī)數(shù)序列。在不具備此種子的知識(shí)的情況下,要將此發(fā)生器與隨 機(jī)源區(qū)分開(kāi)來(lái)是不可行或非常困難的。盡管有許多PRNG可用,但是大多數(shù)并非 是針對(duì)安全性應(yīng)用設(shè)計(jì)的。因?yàn)镻RNG使用確定性算法,所以它們曝露于入侵之 下,由此削弱了 PRNG的安全性。例如,線性同余發(fā)生器被廣泛用作PRNG,但 是在很短的輸出序列被分析出來(lái)之后就能被破解。
諸如加密應(yīng)用等一些應(yīng)用通常將"隨機(jī)"數(shù)用作初始化矢量、密鑰、 一次性 數(shù)、鹽值等等。 一般而言,密碼學(xué)上安全的PRGN (CSPRNG)是以安全方式用不 可預(yù)測(cè)的輸入來(lái)做種的,因而要將其輸出與隨機(jī)比特序列區(qū)分開(kāi)來(lái)是不可行的。
偽隨機(jī)數(shù)發(fā)生方案在CSPRNG中是相對(duì)簡(jiǎn)單直接的。舉例而言,其可以是在計(jì)數(shù)器模式或輸出反饋模式下運(yùn)行的分塊密碼、使用種子作為密碼密鑰的流密碼、
或是嵌套散列結(jié)構(gòu)。CSPRNG設(shè)計(jì)中錯(cuò)綜復(fù)雜的部分是如何做種以及重新做種 CSPRNG。理想地,CSPRNG用使得發(fā)生器的內(nèi)狀態(tài)在發(fā)生器被應(yīng)用調(diào)用之前不能 預(yù)測(cè)的一些信息來(lái)做種。重新做種是用于以新種子來(lái)更新先前已被做種過(guò)的 CSPRNG的順序邏輯的過(guò)程。此類(lèi)重新做種使得要破解確定性數(shù)發(fā)生算法更為困 難。然而,熵收集模塊獲取良好種子要花費(fèi)時(shí)間。由此,在CSPRNG被應(yīng)用調(diào)用 之前做種或重新做種該CSPRNG是常見(jiàn)問(wèn)題,因?yàn)樵谕娭H,CSPRNG可能在 這樣的種子可用之前就被應(yīng)用調(diào)用。
現(xiàn)存在數(shù)種標(biāo)準(zhǔn)化的CSPRNG設(shè)計(jì),諸如FIPS 186-2、 ANSI X9.17-1985附錄 C、 ANSI X9.31-1998附錄A.2.4、以及ANSI X9.62-1998附件A.4。不巧的是,這 些設(shè)計(jì)當(dāng)中有許多在某些情狀下并不令人滿意。例如,ANSI X9.17 PRNG的兩個(gè) 設(shè)計(jì)缺陷已被J. Kdsey等人在刊于1998年Springer-Verlag出版社的第五屆國(guó)際學(xué) 術(shù)研討會(huì)學(xué)報(bào)中的"Fast Software Encryption (快速軟件加密)"中標(biāo)識(shí)出來(lái)。此 夕卜,干U于2006年6月的題為"Recommendation for Random Number Generator Using Deterministic Random Bit Generators (對(duì)使用確定性隨機(jī)比特發(fā)生器的隨機(jī)數(shù)發(fā)生 器的建議)"的美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)專(zhuān)刊800-90也公開(kāi)了用于初 始化偽隨機(jī)數(shù)發(fā)生器的系統(tǒng),但未提供充分的抗入侵安全性特征。
因此,需要能快速且安全地獲得種子的偽隨機(jī)數(shù)發(fā)生器。
概述
提供了使用預(yù)存儲(chǔ)的初始化種子的用于偽隨機(jī)數(shù)發(fā)生器的安全做種和重新做 種方案。這種方案即使在熵收集不可用的情況下仍將偽隨機(jī)數(shù)發(fā)生器初始化為未知 狀態(tài)??稍诎踩募到y(tǒng)中維護(hù)具有做種信息的主種子文件和影像種子文件。如果 主種子文件被損壞,則用影像種子文件的內(nèi)容來(lái)做種偽隨機(jī)數(shù)發(fā)生器。信任定時(shí)器 可被用作做種機(jī)制的一部分,作為種子文件的入侵的對(duì)策。將信任定時(shí)器或時(shí)鐘與 預(yù)存儲(chǔ)的種子信息相混合以便即使在預(yù)存儲(chǔ)的種子信息已被損害時(shí)添加熵。
提供了一種用于操作偽隨機(jī)數(shù)發(fā)生器的方法。用預(yù)存儲(chǔ)的原始種子來(lái)初始化 偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)??稍谒鎯?chǔ)的原始種子已被使用過(guò)一次之后就將其 破壞。可從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子,并且該新種子可被用于將偽隨 機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改為不可預(yù)測(cè)的狀態(tài)??苫趥坞S機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi) 狀態(tài)生成偽隨機(jī)輸出。該偽隨機(jī)輸出隨后可被存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子??稍趥坞S機(jī)數(shù)發(fā)生器的制造期間將原始種子存 儲(chǔ)在安全位置??筛鶕?jù)區(qū)間定時(shí)器周期性地執(zhí)行偽隨機(jī)數(shù)發(fā)生器的重新做種。
在一個(gè)示例中,可在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索初始化種子。 可用初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)??捎脧膫坞S機(jī)數(shù)發(fā)生器獲 得的新初始化種子替換種子文件的內(nèi)容。
在另一個(gè)示例中,隨后從信任源獲得時(shí)間值。時(shí)間值和初始化種子隨后被組 合以獲得經(jīng)修改的初始化種子。時(shí)間值和初始化種子可被組合以使得時(shí)間值被分散 到經(jīng)修改的初始化種子的整個(gè)范圍中。可用經(jīng)修改的初始化種子來(lái)初始化偽隨機(jī)數(shù) 發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。隨后可用從偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種 子替換種子文件的內(nèi)容。
在又一方面,將偽隨機(jī)輸出存儲(chǔ)在種子文件中可包括(1)將偽隨機(jī)輸出存儲(chǔ) 在安全文件系統(tǒng)的主種子文件中;以及(2)將偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的 影像種子文件中。
在重啟偽隨機(jī)數(shù)發(fā)生器之際,可關(guān)于主種子文件的完好性是否已被損害作出 確定。如果主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始化偽 隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。否則,如果主種子文件的完好性檢查失敗,則用影像 種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
還提供了一種偽隨機(jī)數(shù)發(fā)生器,包括種子選擇模塊、做種模塊、以及數(shù)字發(fā) 生模塊。種子選擇模塊可被配置成從一個(gè)或多個(gè)種子源選擇種子。做種模塊耦合到 種子選擇模塊,并且可被配置成根據(jù)種子選擇模塊提供的種子來(lái)調(diào)節(jié)偽隨機(jī)數(shù)發(fā)生 器的內(nèi)狀態(tài)。數(shù)字發(fā)生模塊耦合到做種模塊,并且可被配置成基于偽隨機(jī)數(shù)發(fā)生器 的內(nèi)狀態(tài)生成偽隨機(jī)輸出。種子選擇模塊可被進(jìn)一步配置成(a)如果偽隨機(jī)數(shù)發(fā) 生器是首次被啟動(dòng),則選擇預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀 態(tài);和/或(b)如果偽隨機(jī)數(shù)發(fā)生器先前已被啟動(dòng)過(guò),則選擇來(lái)自預(yù)存儲(chǔ)的種子文件
的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。種子選擇模塊可在存儲(chǔ)的原 始種子已被使用過(guò)一次之后就將其破壞。數(shù)字發(fā)生模塊可提供偽隨機(jī)輸出,該偽隨 機(jī)輸出被存儲(chǔ)在種子文件中并被用作初始化種子。
根據(jù)一種特征,偽隨機(jī)數(shù)發(fā)生器還可包括耦合到做種模塊的信任時(shí)間源。做
種模塊可被進(jìn)一步配置成(a)從信任時(shí)間源獲得時(shí)間值;(b)組合時(shí)間值與初始 化種子以獲得經(jīng)修改的初始化種子;以及(c)用經(jīng)修改的初始化種子來(lái)初始化偽隨
機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。時(shí)間值和初始化種子可被組合以使得時(shí)間值被分散到經(jīng)修改的初始化種子的整個(gè)范圍中。
根據(jù)另一種特征,偽隨機(jī)數(shù)發(fā)生器還可包括用于存儲(chǔ)種子文件的安全文件系 統(tǒng)。種子文件可包括主種子文件和影像種子文件。種子選擇模塊可被進(jìn)一步配置成: (a)在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完好性是否已被損害;(b)如果 主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生 器的啟動(dòng)內(nèi)狀態(tài),和/或(C)否則用影像種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā) 生器的啟動(dòng)內(nèi)狀態(tài)。
因此,還提供了一種偽隨機(jī)數(shù)發(fā)生器,包括(a)用于用預(yù)存儲(chǔ)的原始種子來(lái) 初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置;(b)用于在所存儲(chǔ)的原始種子已被使 用過(guò)一次之后就將其破壞的裝置;(c)用于從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種 子的裝置;(d)用于用新種子將偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài)的 裝置;(e)用于基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出的裝置;(f) 用于將偽隨機(jī)輸出存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初 始化種子的裝置;(g)用于在偽隨機(jī)數(shù)發(fā)生器的制造期間將原始種子存儲(chǔ)在安全位 置的裝置;(h)用于在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索初始化種子的裝 置;(i)用于用初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置;和/或(D 用于用從偽隨機(jī)數(shù)發(fā)生器獲得的新初始化種子替換種子文件的內(nèi)容的裝置。
在一個(gè)示例中,偽隨機(jī)數(shù)發(fā)生器還可包括(a)用于在偽隨機(jī)數(shù)發(fā)生器重啟之 后從種子文件檢索初始化種子的裝置;(b)用于從信任源獲得時(shí)間值的裝置;(c)用 于組合時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子的裝置;(d)用于用經(jīng)修改 的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置;和/或(e)用于用從偽 隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換種子文件的內(nèi)容的裝置。時(shí)間 值和初始化種子可被組合以使得時(shí)間值被分散到經(jīng)修改的初始化種子的整個(gè)范圍 中。
在另一個(gè)示例中,偽隨機(jī)數(shù)發(fā)生器還可包括(a)用于將偽隨機(jī)輸出存儲(chǔ)在安 全文件系統(tǒng)的主種子文件中的裝置;(b)用于將偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的 影像種子文件中的裝置;(c)用于在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完 好性是否已被損害的裝置;(d)用于在主文件的完好性被成功驗(yàn)證的情況下用主種 子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置;和/或(e)用于 否則用影像種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置。
還提供了一種處理電路,包括存儲(chǔ)器設(shè)備和處理設(shè)備。存儲(chǔ)器設(shè)備可包括用于存儲(chǔ)偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)的一個(gè)或多個(gè)內(nèi)狀態(tài)寄存器。處理設(shè)備被耦合到存 儲(chǔ)器設(shè)備并且可被配置成(a)用預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟 動(dòng)內(nèi)狀態(tài);(b)在所存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞;(C)從一個(gè) 或多個(gè)不可預(yù)測(cè)的熵源獲得新種子;(d)用新種子來(lái)重新做種偽隨機(jī)數(shù)發(fā)生器以將 偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài);(e)基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修 改的內(nèi)狀態(tài)生成偽隨機(jī)輸出;和/或(f)將偽隨機(jī)輸出存儲(chǔ)在種子文件中作為偽隨機(jī) 數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
根據(jù)一種特征,處理設(shè)備可被進(jìn)一步配置成(a)在偽隨機(jī)數(shù)發(fā)生器重啟之后 從種子文件檢索初始化種子;(b)從信任源獲得時(shí)間值;(C)組合時(shí)間值與初始化 種子以獲得經(jīng)修改的初始化種子;(d)用經(jīng)修改的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā) 生器的啟動(dòng)內(nèi)狀態(tài);和/或(e)用從偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種 子替換種子文件的內(nèi)容。時(shí)間值和初始化種子可被組合以使得時(shí)間值被分散到經(jīng)修 改的初始化種子的整個(gè)范圍中。
根據(jù)一種特征,處理設(shè)備可被進(jìn)一步配置成(a)將偽隨機(jī)輸出存儲(chǔ)在安全文 件系統(tǒng)的主種子文件中;(b)將偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的影像種子文件 中;(C)在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完好性是否已被損害;(d)如 果主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā) 生器的啟動(dòng)內(nèi)狀態(tài);和/或(e)否則用影像種子文件的初始化種子來(lái)初始化偽隨機(jī) 數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
還提供了一種具有用于生成偽隨機(jī)輸出的一條或多條指令的機(jī)器可讀介質(zhì), 這些指令在被處理器執(zhí)行時(shí)使該處理器(a)用預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)
數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);(b)在所存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破 壞;(c)從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子;(d)用新種子來(lái)重新做種偽隨 機(jī)數(shù)發(fā)生器以將偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài);(e)基于偽隨機(jī) 數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出;和/或(f)將偽隨機(jī)輸出存儲(chǔ)在種子文 件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
在一個(gè)示例中,此機(jī)器可讀介質(zhì)可進(jìn)一步具有在由處理器執(zhí)行時(shí)使該處理器 執(zhí)行以下操作的一條或多條指令(a)在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索 初始化種子;(b)從信任源獲得時(shí)間值;(c)組合時(shí)間值與初始化種子以獲得經(jīng)修 改的初始化種子;(d)用經(jīng)修改的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀 態(tài);和/或(e)用從偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換種子文件的內(nèi)容。時(shí)間值和初始化種子被組合以使得時(shí)間值被分散到經(jīng)修改的初始化種子的 整個(gè)范圍中。
根據(jù)一種特征,種子文件可包括安全文件系統(tǒng)中的主種子文件和影像種子文 件。此機(jī)器可讀介質(zhì)可進(jìn)一步具有在由處理器執(zhí)行時(shí)使該處理器執(zhí)行以下操作的一 條或多條指令(a)在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完好性是否已被 損害;(b)如果主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始 化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),和/或(C)否則用影像種子文件的初始化種子來(lái)初 始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
附圖簡(jiǎn)述
圖1是圖解其中可實(shí)現(xiàn)本文中所描述的一個(gè)或多個(gè)新穎性特征的偽隨機(jī)數(shù)發(fā)
生器的示例的框圖。
圖2是圖解具有初始種子管理的偽隨機(jī)數(shù)發(fā)生器的一個(gè)示例的框圖。
圖3圖解根據(jù)一個(gè)示例的用于使用預(yù)存儲(chǔ)的種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的方法。
圖4是圖解預(yù)期功率關(guān)斷并存儲(chǔ)偽隨機(jī)輸出以供偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng) 初始化的系統(tǒng)的框圖。
圖5圖解用于操作設(shè)備以在檢測(cè)到某種斷電事件之際生成和保存初始化種子 的方法。
圖6圖解用于使用主種子文件和影像種子文件來(lái)存儲(chǔ)偽隨機(jī)數(shù)發(fā)生器的初始 化種子的方法。
圖7是圖解可如何利用時(shí)間分量來(lái)對(duì)抗對(duì)種子文件的入侵的示例的框圖。 圖8圖解用于將時(shí)間組合成偽隨機(jī)數(shù)發(fā)生器的初始化種子的一部分的方法。 圖9是圖解包括存儲(chǔ)介質(zhì)和配置成實(shí)現(xiàn)偽隨機(jī)數(shù)字發(fā)生器的處理器的處理電 路的框圖。
詳細(xì)描述
在以下說(shuō)明中,給出了具體細(xì)節(jié)以提供對(duì)諸實(shí)施例的透徹理解。但是,本領(lǐng) 域普通技術(shù)人員將可理解,沒(méi)有這些具體細(xì)節(jié)也可實(shí)踐這些實(shí)施例。例如,電路可 能以框圖形式示出,也可能根本不被示出,以免因不必要的細(xì)節(jié)而與這些實(shí)施例相 混淆。在其它情況下,公知的電路、結(jié)構(gòu)和技術(shù)可能不被具體示出以免混淆這些實(shí)施例。
還應(yīng)注意,這些實(shí)施例可能是作為被描繪為流程圖、流圖、結(jié)構(gòu)圖、或框圖 的過(guò)程來(lái)描述的。盡管流程圖可能會(huì)把諸操作描述為順序過(guò)程,但是這些操作中有 許多可并行或并發(fā)執(zhí)行。另外,這些操作的次序可以被重新編排。過(guò)程在其操作完 成時(shí)終止。過(guò)程可對(duì)應(yīng)于方法、函數(shù)、程序、子例程、子程序等。當(dāng)過(guò)程對(duì)應(yīng)于函 數(shù)時(shí),其終止對(duì)應(yīng)于該函數(shù)返回到調(diào)用方函數(shù)或主函數(shù)。
此外,存儲(chǔ)介質(zhì)可表示用于存儲(chǔ)數(shù)據(jù)的一個(gè)或多個(gè)設(shè)備,包括只讀存儲(chǔ)器
(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤(pán)存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備、 和/或其他用于存儲(chǔ)信息的機(jī)器可讀介質(zhì)。術(shù)語(yǔ)"機(jī)器可讀介質(zhì)"包括,但不限于, 便攜或固定的存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、無(wú)線信道以及能夠存儲(chǔ)、包含或承載指令和 /或數(shù)據(jù)的各種其它介質(zhì)。
此外,諸實(shí)施例可由硬件、軟件、固件、中間件、微代碼、或其組合來(lái)實(shí)現(xiàn)。 當(dāng)在軟件、固件、中間件、或微代碼中實(shí)現(xiàn)時(shí),用于執(zhí)行必要任務(wù)的程序代碼或代 碼段可被存儲(chǔ)在諸如存儲(chǔ)介質(zhì)或其他存儲(chǔ)裝置等的機(jī)器可讀介質(zhì)中。處理器可執(zhí)行 這些必要的任務(wù)。代碼段可表示過(guò)程、函數(shù)、子程序、程序、例程、子例程、模塊、 軟件包、類(lèi)、或是指令、數(shù)據(jù)結(jié)構(gòu)、或程序語(yǔ)句的組合。通過(guò)傳遞和/或接收信息、 數(shù)據(jù)、自變量、參數(shù)、或存儲(chǔ)器內(nèi)容, 一代碼段可被耦合到另一代碼段或硬件電路。 信息、自變量、參數(shù)、數(shù)據(jù)等可經(jīng)由包括存儲(chǔ)器共享、消息傳遞、令牌傳遞、以及 網(wǎng)絡(luò)傳輸?shù)群线m的手段被傳遞、轉(zhuǎn)發(fā)、或傳輸。
一種特征提供使用預(yù)存儲(chǔ)的初始化種子的用于偽隨機(jī)數(shù)發(fā)生器的安全做種和 重新做種方案。這種方案即使在熵收集不可用的情況下仍將偽隨機(jī)數(shù)發(fā)生器初始化 為未知狀態(tài)。
做種方案的另一方面提供了在安全文件系統(tǒng)中維護(hù)具有做種信息的主種子文 件和影像種子文件。如果主種子文件被損壞,則用影像種子文件的內(nèi)容來(lái)做種偽隨 機(jī)數(shù)發(fā)生器。
又一種特征提供將信任定時(shí)器用作做種機(jī)制的一部分,作為種子文件的入侵 的對(duì)策。將信任定時(shí)器或時(shí)鐘與預(yù)存儲(chǔ)的種子信息相混合以便即使在預(yù)存儲(chǔ)的種子 信息已被損害時(shí)添加熵。
圖1是圖解其中可實(shí)現(xiàn)本文中所描述的一個(gè)或多個(gè)新穎性特征的偽隨機(jī)數(shù)發(fā) 生器的示例的框圖。在啟動(dòng)時(shí),偽隨機(jī)數(shù)發(fā)生器102被配置成接收來(lái)自種子發(fā)生器 模塊104的種子,以將偽隨機(jī)數(shù)發(fā)生器102初始化為未知狀態(tài)。偽隨機(jī)數(shù)發(fā)生器102可被一個(gè)或多個(gè)應(yīng)用106、 108和IIO調(diào)用以獲得比特、符號(hào)、和/或數(shù)字的偽 隨機(jī)輸出。
由于收集用來(lái)初始化偽隨機(jī)數(shù)發(fā)生器102的狀態(tài)的熵要耗時(shí), 一種特征出于 此目的預(yù)存儲(chǔ)啟動(dòng)種子。例如,種子發(fā)生器模塊104可存儲(chǔ)這樣的啟動(dòng)種子,從而 即使在其他熵信息不可用時(shí),啟動(dòng)種子也可被用來(lái)將偽隨機(jī)數(shù)發(fā)生器初始化為不可 預(yù)測(cè)的狀態(tài)。由此,在偽隨機(jī)數(shù)發(fā)生器102啟動(dòng)之際,其能通過(guò)預(yù)存儲(chǔ)的種子來(lái)快 速地做種。
圖2是圖解具有初始種子管理的偽隨機(jī)數(shù)發(fā)生器的一個(gè)示例的框圖。該偽隨 機(jī)數(shù)發(fā)生器可被納入作為諸如移動(dòng)電話、計(jì)算機(jī)、電路板、芯片、處理器、半導(dǎo)體 器件、機(jī)頂盒等電子設(shè)備和/或軟件、固件、中間件、或微代碼模塊的一部分。因 設(shè)備而異的原始種子200可在電子設(shè)備的制造期間被存儲(chǔ)在存儲(chǔ)設(shè)備202 (例如, 非易失性存儲(chǔ)器)中。在該過(guò)程中,原始種子200可通過(guò)存儲(chǔ)設(shè)備202的外部接口 來(lái)存儲(chǔ)。這樣的原始種子200可使用例如不同的隨機(jī)數(shù)發(fā)生器離線地生成。對(duì)其中 存儲(chǔ)了原始種子200的存儲(chǔ)設(shè)備202的訪問(wèn)優(yōu)選是受限的,從而不允許后續(xù)外部讀 或?qū)懖僮?。這防止了入侵者改變或知曉原始種子200。
當(dāng)偽隨機(jī)數(shù)發(fā)生器212首次通電以供操作時(shí),原始種子200被饋送給偽隨機(jī) 數(shù)發(fā)生器212。原始種子200中的熵確保偽隨機(jī)數(shù)發(fā)生器212被初始化為未知或不 可預(yù)測(cè)的狀態(tài)。通過(guò)這樣做,偽隨機(jī)數(shù)發(fā)生器212可在啟動(dòng)之際立即為不同應(yīng)用提 供偽隨機(jī)數(shù)(輸出)。
在一段時(shí)間后,熵收集模塊204向偽隨機(jī)數(shù)發(fā)生器212提供另一個(gè)種子,偽 隨機(jī)數(shù)發(fā)生器212可用其重新做種。例如,可發(fā)起向偽隨機(jī)數(shù)發(fā)生器212請(qǐng)求M 字節(jié)(例如,M428字節(jié))的隨機(jī)數(shù)據(jù)并將這些M字節(jié)存儲(chǔ)到安全文件系統(tǒng)208 中的種子文件206中的過(guò)程。 一旦創(chuàng)建了種子文件206,存儲(chǔ)設(shè)備202中的原始種 子200就被刪除或破壞(例如,復(fù)位為全零)。
種子選擇模塊210可被耦合到偽隨機(jī)數(shù)發(fā)生器以及一個(gè)或多個(gè)種子源202、 204和208。例如,種子選擇模塊210可被配置成當(dāng)偽隨機(jī)數(shù)發(fā)生器啟動(dòng)或通電時(shí) 在原始種子200與種子文件206之間進(jìn)行選擇。此外,種子選擇模塊210可從熵收 集模塊204獲得種子,用這些種子來(lái)周期性地或不定時(shí)地重新做種偽隨機(jī)數(shù)發(fā)生器 212。熵收集模塊204可被配置成從一個(gè)或多個(gè)源收集隨后可被用來(lái)生成種子的隨 機(jī)數(shù)據(jù)。
當(dāng)偽隨機(jī)數(shù)發(fā)生器212隨后被重啟時(shí)(例如,在功率循環(huán)后),種子選擇模塊210檢査存儲(chǔ)設(shè)備202以確定有效原始種子是否可用。由于存儲(chǔ)設(shè)備202中的原 始種子200已被刪除或破壞,因此存儲(chǔ)設(shè)備202可能包含零或指示種子文件206 可用和/或應(yīng)被使用的標(biāo)志。種子選擇模塊210隨后從種子文件206獲得初始化種 子并使用它將偽隨機(jī)數(shù)發(fā)生器212的內(nèi)狀態(tài)初始化為未知或不可預(yù)測(cè)的狀態(tài)。安全 文件系統(tǒng)208確保種子文件206的機(jī)密性和完好性。在一個(gè)示例中,安全文件系統(tǒng) 可使用密碼學(xué)來(lái)保護(hù)種子文件206內(nèi)容的機(jī)密性和完好性。在另一個(gè)示例中,安全 文件系統(tǒng)對(duì)于設(shè)備的用戶(hù)和/或操作系統(tǒng)而言是不可訪問(wèn)的,但可被種子選擇模塊 210和/或偽隨機(jī)數(shù)發(fā)生器212訪問(wèn)。
偽隨機(jī)數(shù)發(fā)生器212可包括做種模塊214,其接收種子以初始化偽隨機(jī)數(shù)發(fā)生 器212的內(nèi)狀態(tài)。數(shù)字發(fā)生器模塊216隨后基于做種模塊214所設(shè)置的狀態(tài)生成偽 隨機(jī)輸出。
來(lái)自偽隨機(jī)數(shù)發(fā)生器212的一些偽隨機(jī)輸出可被存儲(chǔ)為初始化種子供后續(xù)通 電時(shí)使用。將新隨機(jī)信息存儲(chǔ)在種子文件206中并在啟動(dòng)時(shí)用它來(lái)重新做種偽隨機(jī) 數(shù)發(fā)生器212的該過(guò)程被重復(fù),從而每次使用不同的初始化種子。在一種實(shí)現(xiàn)中, 在已經(jīng)用包含(例如,來(lái)自熵收集模塊204的)熵的種子重新做種偽隨機(jī)數(shù)發(fā)生器 212之后,獲得存儲(chǔ)在種子文件206中的隨機(jī)輸出(作為初始化種子)。
在替換實(shí)現(xiàn)中,原始種子200可代替地在制造或其他安全初始化過(guò)程期間被 直接存儲(chǔ)在種子文件206中。原始種子隨后可在偽隨機(jī)數(shù)發(fā)生器212的首次初始化 之后被破壞,并且隨機(jī)信息被存儲(chǔ)在種子文件206中以供偽隨機(jī)數(shù)發(fā)生器212的后 續(xù)重新做種。
圖3圖解根據(jù)一個(gè)示例的用于使用預(yù)存儲(chǔ)的種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的 方法。在偽隨機(jī)數(shù)發(fā)生器的通電初始化302期間,關(guān)于原始種子是否可用作出確定
(304)。原始種子的可用性可指示這是偽隨機(jī)數(shù)發(fā)生器首次被初始化。如果這樣 的原始種子可用,則從安全存儲(chǔ)源獲得它(306)并且一旦原始種子的所存儲(chǔ)版本 已經(jīng)被使用則將其破壞(308)。破壞所存儲(chǔ)的原始種子可用作偽隨機(jī)數(shù)發(fā)生器先 前已被啟動(dòng)過(guò)的將來(lái)指示符?;蛘撸蓪⒁粯?biāo)志設(shè)置在安全位置以指示這一點(diǎn)。隨 后用原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)(310)以生成偽隨機(jī)輸出
(312)。在這一點(diǎn),偽隨機(jī)數(shù)發(fā)生器能夠向調(diào)用方應(yīng)用提供偽隨機(jī)輸出(例如, 數(shù)字、比特、字節(jié)、符號(hào)等)。
可使用一個(gè)或多個(gè)熵源來(lái)獲得新種子(314)。用新種子將偽隨機(jī)數(shù)發(fā)生器的 內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài)(316)。然后基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出(318)。該偽隨機(jī)輸出被存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生
器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子(320)。啟動(dòng)內(nèi)狀態(tài)是指?jìng)坞S機(jī)數(shù)發(fā)生器在緊
隨其通電后的狀態(tài)。
當(dāng)偽隨機(jī)數(shù)發(fā)生器在后續(xù)時(shí)間被通電時(shí),則原始種子不再可用(304)。由此,代替地從種子文件獲得預(yù)存儲(chǔ)的種子(322)。隨后用預(yù)存儲(chǔ)的種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)(324),并且偽隨機(jī)數(shù)發(fā)生器能生成偽隨機(jī)輸出(312)。該初始做種過(guò)程在偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)期間被重復(fù)。
圖4是圖解預(yù)期功率關(guān)斷并存儲(chǔ)偽隨機(jī)輸出以供偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)初始化的系統(tǒng)的框圖。偽隨機(jī)數(shù)發(fā)生器可被納入作為電子設(shè)備(例如,芯片、電路等)的一部分。這樣的設(shè)備可在以下時(shí)候斷電(1)用戶(hù)關(guān)閉通向設(shè)備的電源,(2)設(shè)備由于某種(些)出錯(cuò)關(guān)閉自身,和/或(3)設(shè)備崩潰。
控制模塊402可從各種源收集信息以確定設(shè)備是否將關(guān)斷。例如,控制模塊402可被耦合到用戶(hù)接口 404 (例如,開(kāi)/關(guān)開(kāi)關(guān)等)以檢測(cè)用戶(hù)何時(shí)關(guān)閉設(shè)備。類(lèi)似地,控制模塊402可被耦合到錯(cuò)誤處置器406,后者檢測(cè)何時(shí)出錯(cuò)并以受控方式關(guān)斷設(shè)備。當(dāng)用戶(hù)接口 404或錯(cuò)誤處置器406指示設(shè)備將關(guān)閉時(shí),控制模塊402可被配置成使得偽隨機(jī)數(shù)發(fā)生器410生成偽隨機(jī)輸出并將其存儲(chǔ)在安全文件系統(tǒng)412的種子文件414中。
圖5圖解用于操作設(shè)備以在檢測(cè)到某種斷電事件之際生成和保存初始化種子的方法。例如,如果檢測(cè)到斷電信號(hào)(502)或檢測(cè)到系統(tǒng)錯(cuò)誤(504),則在將設(shè)備斷電(510)之前生成偽隨機(jī)數(shù)(506)并將其存儲(chǔ)在安全種子文件中(508)。
存儲(chǔ)在安全種子文件中的偽隨機(jī)輸出可用于在下一次通電時(shí)初始化偽隨機(jī)數(shù)發(fā)生明.益。
然而,當(dāng)發(fā)生致命錯(cuò)誤(例如,設(shè)備斷電或服務(wù)拒絕攻擊導(dǎo)致存儲(chǔ)器損壞)時(shí),在設(shè)備關(guān)斷之前,可能很難檢測(cè)出設(shè)備崩潰并且種子文件414可能未被成功更新。為解決這個(gè)問(wèn)題,定時(shí)器408被耦合到控制模塊402。控制模塊402接收來(lái)自定時(shí)器408的周期性信號(hào),其導(dǎo)致控制模塊402請(qǐng)求偽隨機(jī)數(shù)發(fā)生器410提供偽隨機(jī)輸出以存儲(chǔ)在種子文件414中。
使用種子文件414的一種威脅在于種子文件的偽造。 一種對(duì)策是將安全文件系統(tǒng)412中的種子文件414定位在特權(quán)分區(qū)中。特權(quán)分區(qū)可駐留在常規(guī)文件系統(tǒng)之外,并且這樣不會(huì)經(jīng)由系統(tǒng)更新而被擦除。系統(tǒng)的常規(guī)文件訪問(wèn)接口并不知曉安全文件系統(tǒng)412的存在。另一種特征提供在(特權(quán)分區(qū)內(nèi)的)安全文件系統(tǒng)412中維護(hù)主種子文件414和影像種子文件416。種子信息首先被保存到主種子文件414,并隨后被保存到影像種子文件416。如果在向主種子文件414寫(xiě)入的同時(shí)發(fā)生致命錯(cuò)誤,則先前未使用的種子信息仍存儲(chǔ)在影像種子文件416中并且在下一次通電時(shí)被用于初始化偽隨機(jī)數(shù)發(fā)生器410。這樣,在通電期間總是有良好的種子信息可用于初始化偽隨機(jī)數(shù)發(fā)生器410。
圖6圖解用于使用主種子文件和影像種子文件來(lái)存儲(chǔ)偽隨機(jī)數(shù)發(fā)生器的初始化種子的方法。從偽隨機(jī)數(shù)發(fā)生器獲得偽隨機(jī)輸出(602)。該偽隨機(jī)輸出(例如,比特、符號(hào)、數(shù)字等)首先被存儲(chǔ)在主種子文件中(604)以隨后被用作初始化種子。該偽隨機(jī)輸出可替換先前存儲(chǔ)在主種子文件中的其他內(nèi)容。相同的偽隨機(jī)輸出隨后被存儲(chǔ)在影像種子文件中(606)。隨后,偽隨機(jī)數(shù)發(fā)生器可被斷電(608)。
當(dāng)偽隨機(jī)數(shù)發(fā)生器再通電時(shí)(610),可檢査主種子文件的完好性和/或真實(shí)性以確定其是否有效(612)。如果主種子文件有效,則從主種子文件的內(nèi)容獲得初始化種子(614)。否則,如果主種子文件無(wú)效(例如,文件內(nèi)容損壞),則從影像種子文件的內(nèi)容獲得初始化種子(616)。該初始化種子被用于初始化偽隨機(jī)數(shù)發(fā)生器(618)。偽隨機(jī)數(shù)發(fā)生器隨后可向調(diào)用方應(yīng)用提供偽隨機(jī)輸出??稍诿看蝹坞S機(jī)數(shù)發(fā)生器斷電和通電時(shí)重復(fù)此過(guò)程,從而不同的初始化種子被用于初始化偽隨機(jī)數(shù)發(fā)生器。
在一些實(shí)現(xiàn)中,或許不能使用特權(quán)分區(qū)(其中維護(hù)安全文件系統(tǒng)412)。在沒(méi)有這樣的特權(quán)分區(qū)的情況下,入侵者或許能用曾備份的先前種子文件的合法副本來(lái)覆寫(xiě)種子文件。隨后,入侵者可立即使納入有偽隨機(jī)數(shù)發(fā)生器的設(shè)備崩潰(例如,通過(guò)斷開(kāi)電源),從而欺騙該設(shè)備在下一次通電循環(huán)時(shí)使用先前的種子文件。由于先前的種子文件是合法副本,因此它在通電階段將被偽隨機(jī)數(shù)發(fā)生器接受。每次入侵者使用相同的先前種子文件,偽隨機(jī)數(shù)發(fā)生器隨后就可在通電階段產(chǎn)生相同的輸出序列,直至其被熵收集模塊重新做種。由此,入侵者或許能夠控制偽隨機(jī)數(shù)發(fā)生器的初始輸出。
為了對(duì)抗這樣的入侵, 一種特征提供將時(shí)間用作啟動(dòng)初始化種子的一部分以進(jìn)一步保護(hù)偽隨機(jī)數(shù)發(fā)生器抵抗入侵。圖7是圖解可如何利用時(shí)間分量來(lái)對(duì)抗種子文件的入侵的示例的框圖。時(shí)間捕捉模塊702被用于捕捉來(lái)自可信任內(nèi)部時(shí)鐘的時(shí)間或來(lái)自網(wǎng)絡(luò)(例如,CDMA網(wǎng)絡(luò))的信號(hào)。來(lái)自種子文件704的種子內(nèi)容s與(來(lái)自時(shí)間捕捉模塊702的)時(shí)間f相混合以形成初始種子708?;旌虾瘮?shù)706可被選擇成或配置成使得時(shí)間f上的每比特改變都被分散在該函數(shù)輸出的整個(gè)范圍
中。以此方式,時(shí)間f上的任何改變將導(dǎo)致整個(gè)初始化種子708改變。混合函數(shù)706
的一個(gè)示例是散列算法(例如,=散列("U),其中"II"表示級(jí)聯(lián))。結(jié)果,即使重新使用相同的種子文件,新時(shí)間r亦使得初始種子散列(s II r)與散列(s II O不同。該初始種子708隨后可被用于初始化偽隨機(jī)數(shù)發(fā)生器。
圖8圖解用于將時(shí)間組合成偽隨機(jī)數(shù)發(fā)生器的初始化種子的一部分的方法。在偽隨機(jī)數(shù)發(fā)生器通電之際(802),從種子文件獲得預(yù)存儲(chǔ)的種子(804)。(從安全源)獲得信任時(shí)間(806)并將其與預(yù)存儲(chǔ)的種子組合以形成新初始化種子(808)。該新種子被用于初始化偽隨機(jī)數(shù)發(fā)生器(810)并生成偽隨機(jī)輸出(812)。
圖9是圖解包括存儲(chǔ)介質(zhì)902和配置成實(shí)現(xiàn)偽隨機(jī)數(shù)字發(fā)生器的處理器904的處理電路900的框圖。存儲(chǔ)介質(zhì)902可以是例如包括用于存儲(chǔ)偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)的一個(gè)或多個(gè)內(nèi)狀態(tài)寄存器的存儲(chǔ)器設(shè)備和/或硬驅(qū)動(dòng)。處理設(shè)備904可被配置成用預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)??稍谒鎯?chǔ)的原始種子已被使用過(guò)一次之后就將其破壞??蓮囊粋€(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子。用新種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器以將偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài)。基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出。該偽隨機(jī)輸出被存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
在一種實(shí)現(xiàn)中,處理設(shè)備可被進(jìn)一步配置成(1)在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索初始化種子,(2)從信任源獲得時(shí)間值,(3)組合時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子,(4)用經(jīng)修改的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),和/或(5)用從偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換種子文件的內(nèi)容。時(shí)間值和初始化種子可被組合以使得時(shí)間值被分散到經(jīng)修改的初始化種子的整個(gè)范圍中。
該處理設(shè)備可被進(jìn)一步配置成(1)將偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的主種子文件和影像文件中,(2)在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完好性是否已被損害,(3)如果主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),和/或(4)否則用影像種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
在另一個(gè)示例中,存儲(chǔ)介質(zhì)902可以是存儲(chǔ)指令的機(jī)器可讀介質(zhì),這些指令在被處理器904執(zhí)行時(shí)可使得該處理器904: (1)用預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),(2)在所存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞,(3)從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子,(4)用新種子來(lái)重新做種偽隨機(jī)數(shù)發(fā)生器以將偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài),(5)基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出,和/或(6)將偽隨機(jī)輸出存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。此機(jī)器可讀介質(zhì)(存
儲(chǔ)介質(zhì)902)可進(jìn)一步具有在被處理器卯4執(zhí)行時(shí)使該處理器執(zhí)行以下操作的一條
或多條指令(1)在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索初始化種子,(2)從
信任源獲得時(shí)間值,(3)組合時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子,(4)用經(jīng)修改的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),和/或(5)用從偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換種子文件的內(nèi)容。
根據(jù)另一種特征,種子文件可包括安全文件系統(tǒng)中的主種子文件和影像種子文件。此機(jī)器可讀介質(zhì)(存儲(chǔ)設(shè)備902)可進(jìn)一步具有在被處理器執(zhí)行時(shí)使該處理器執(zhí)行以下操作的一條或多條指令(1)在重啟偽隨機(jī)數(shù)發(fā)生器之際確定主種子文件的完好性是否已被損害,(2)如果主文件的完好性被成功驗(yàn)證,則用主種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài),和/或(3)否則用影像種子文件的初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
相應(yīng)地提供一種偽隨機(jī)數(shù)發(fā)生器,包括(1)用于用預(yù)存儲(chǔ)的原始種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置,(2)用于在所存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞的裝置,(3)用于從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子的裝置,(4)用于用新種子將偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài)的裝置,(5)用于基于偽隨機(jī)數(shù)發(fā)生器的經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出的裝置,和/或(6)用于將偽隨機(jī)輸出存儲(chǔ)在種子文件中作為偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子的裝置。偽隨機(jī)數(shù)發(fā)生器還可包括(7)用于在偽隨機(jī)數(shù)發(fā)生器的制造期間將原始種子存儲(chǔ)在安全位置的裝置,(8)用于在偽隨機(jī)數(shù)發(fā)生器重啟之后從種子文件檢索初始化種子的裝置,(9)用于用初始化種子來(lái)初始化偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置,和/或(10)用于用從偽隨機(jī)數(shù)發(fā)生器獲得的新初始化種子替換種子文件的內(nèi)容的裝置。
圖1、 2、 3、 4、 5、 6、 7、 8、和/或9中圖解的組件、步驟、和/或功能中的一個(gè)或多個(gè)可被重新編排和/或組合成單個(gè)組件、步驟、或功能,或可在數(shù)個(gè)組件、步驟、或功能中實(shí)施而會(huì)不影響偽隨機(jī)數(shù)發(fā)生的運(yùn)作。還可添加更多的元件、組件、步驟、和/或功能而不會(huì)脫離本發(fā)明。圖l、 2、 4、 7和/或9中圖解的裝置、設(shè)備、和/或組件可被配置成執(zhí)行圖3、 5、 6和/或8中描述的方法、特征、或步驟中的一個(gè)或多個(gè)。本文中描述的新穎性算法可以在軟件和/或嵌入式硬件中高效率地實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員將可進(jìn)一步領(lǐng)會(huì),結(jié)合本文中公開(kāi)的實(shí)施例描述的各種說(shuō)明
性邏輯框、模塊、電路、和算法步驟可被實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件、或兩者的
組合。為清楚地說(shuō)明硬件和軟件的這種可互換性,各種說(shuō)明性組件、塊、模塊、電
路、和步驟在上文中以其功能性的形式進(jìn)行了一般化描述。這樣的功能性是實(shí)現(xiàn)成
硬件還是軟件取決于具體應(yīng)用和加諸整體系統(tǒng)上的設(shè)計(jì)約束。
這些實(shí)施例的描述旨在是示例性的,而并非旨在限定權(quán)利要求的范圍。由此,
本發(fā)明的教導(dǎo)可易被應(yīng)用于其他類(lèi)型的裝置,并且許多替換、修改、和變形對(duì)于本
領(lǐng)域技術(shù)人員將是明顯的。
權(quán)利要求
1.一種用于操作偽隨機(jī)數(shù)發(fā)生器的方法,包括用預(yù)存儲(chǔ)的原始種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);在所述存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞;從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子;用所述新種子將所述偽隨機(jī)數(shù)發(fā)生器的所述內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài);基于所述偽隨機(jī)數(shù)發(fā)生器的所述經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出;以及將所述偽隨機(jī)輸出存儲(chǔ)在種子文件中作為所述偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括 在所述偽隨機(jī)數(shù)發(fā)生器的制造期間將所述原始種子存儲(chǔ)在安全位置。
3. 如權(quán)利要求2所述的方法,其特征在于,根據(jù)區(qū)間定時(shí)器周期性地執(zhí)行所 述偽隨機(jī)數(shù)發(fā)生器的重新做種。
4. 如權(quán)利要求1所述的方法,其特征在于,還包括 在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子; 用所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài);以及 用從所述偽隨機(jī)數(shù)發(fā)生器獲得的新初始化種子替換所述種子文件的內(nèi)容。
5. 如權(quán)利要求1所述的方法,其特征在于,還包括 在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子; 從信任源獲得時(shí)間值;組合所述時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子; 用所述經(jīng)修改的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);以及用從所述偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換所述種子文件的內(nèi)容。
6. 如權(quán)利要求5所述的方法,其特征在于,所述時(shí)間值和初始化種子被組合 以使得所述時(shí)間值被分散到所述經(jīng)修改的初始化種子的整個(gè)范圍中。
7. 如權(quán)利要求1所述的方法,其特征在于,將所述偽隨機(jī)輸出存儲(chǔ)在種子文 件中包括將所述偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的主種子文件中;以及 將所述偽隨機(jī)輸出存儲(chǔ)在所述安全文件系統(tǒng)的影像種子文件中。
8. 如權(quán)利要求7所述的方法,其特征在于,還包括在重啟所述偽隨機(jī)數(shù)發(fā)生器之際確定所述主種子文件的完好性是否已被損害;如果所述主文件的所述完好性被成功驗(yàn)證,則用所述主種子文件的所述初 始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài);以及否則用所述影像種子文件的所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器 的所述啟動(dòng)內(nèi)狀態(tài)。
9. 一種偽隨機(jī)數(shù)發(fā)生器,包括 用于用預(yù)存儲(chǔ)的原始種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)的裝置;用于在所述存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞的裝置; 用于從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子的裝置; 用于用所述新種子將所述偽隨機(jī)數(shù)發(fā)生器的所述內(nèi)狀態(tài)修改成不可預(yù)測(cè)的 狀態(tài)的裝置;用于基于所述偽隨機(jī)數(shù)發(fā)生器的所述經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出的裝 置;以及用于將所述偽隨機(jī)輸出存儲(chǔ)在種子文件中作為所述偽隨機(jī)數(shù)發(fā)生器的后續(xù) 啟動(dòng)內(nèi)狀態(tài)的初始化種子的裝置。
10. 如權(quán)利要求9所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括用于在所述偽隨機(jī)數(shù)發(fā)生器的制造期間將所述原始種子存儲(chǔ)在安全位置的裝置。
11. 如權(quán)利要求9所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括 用于在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子的裝置;用于用所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài)的 裝置;以及用于用從所述偽隨機(jī)數(shù)發(fā)生器獲得的新初始化種子替換所述種子文件的內(nèi) 容的裝置。
12. 如權(quán)利要求9所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括 用于在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子的裝置;用于從信任源獲得時(shí)間值的裝置;用于組合所述時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子的裝置; 用于用所述經(jīng)修改的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀 態(tài)的裝置;以及用于用從所述偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換所述 種子文件的內(nèi)容的裝置。
13. 如權(quán)利要求12所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,所述時(shí)間值和初 始化種子被組合以使得所述時(shí)間值被分散到所述經(jīng)修改的初始化種子的整個(gè)范圍 中。
14. 如權(quán)利要求9所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,將所述偽隨機(jī)輸出 存儲(chǔ)在種子文件中包括用于將所述偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的主種子文件中的裝置;以及 用于將所述偽隨機(jī)輸出存儲(chǔ)在所述安全文件系統(tǒng)的影像種子文件中的裝置。
15.如權(quán)利要求14所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括:用于在重啟所述偽隨機(jī)數(shù)發(fā)生器之際確定所述主種子文件的完好性是否已 被損害的裝置;用于在所述主文件的所述完好性被成功驗(yàn)證的情況下用所述主種子文件的 所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài)的裝置;以及用于否則用所述影像種子文件的所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā) 生器的所述啟動(dòng)內(nèi)狀態(tài)的裝置。
16. —種偽隨機(jī)數(shù)發(fā)生器,包括 種子選擇模塊,配置成從一個(gè)或多個(gè)種子源選擇種子;做種模塊,其耦合到所述種子選擇模塊并被配置成根據(jù)所述種子選擇模塊 提供的種子來(lái)調(diào)節(jié)所述偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài);以及數(shù)字發(fā)生模塊,其耦合到所述做種模塊并被配置成基于所述偽隨機(jī)數(shù)發(fā)生 器的所述內(nèi)狀態(tài)生成偽隨機(jī)輸出;其中所述種子選擇模塊被進(jìn)一步配置成如果所述偽隨機(jī)數(shù)發(fā)生器是首次被啟動(dòng),則選擇預(yù)存儲(chǔ)的原始種子來(lái)初 始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);以及如果所述偽隨機(jī)數(shù)發(fā)生器先前己被啟動(dòng)過(guò),則選擇來(lái)自預(yù)存儲(chǔ)的種子文 件的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài)。
17. 如權(quán)利要求16所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,所述種子選擇模 塊被進(jìn)一步配置成在所述存儲(chǔ)的原始種子已被使用過(guò)一次之后將其破壞。
18. 如權(quán)利要求16所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,所述數(shù)字發(fā)生模 塊提供偽隨機(jī)輸出,所述偽隨機(jī)輸出被存儲(chǔ)在所述種子文件中并被用作所述初始化 種子。
19. 如權(quán)利要求16所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括 耦合到所述做種模塊的信任時(shí)間源,其中所述做種模塊被進(jìn)一步配置成從所述信任時(shí)間源獲得時(shí)間值; 組合所述時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子;以及 用所述經(jīng)修改的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài)。
20. 如權(quán)利要求19所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,所述時(shí)間值和初 始化種子被組合以使得所述時(shí)間值被分散到所述經(jīng)修改的初始化種子的整個(gè)范圍 中。
21. 如權(quán)利要求16所述的偽隨機(jī)數(shù)發(fā)生器,其特征在于,還包括 用于存儲(chǔ)所述種子文件的安全文件系統(tǒng),其中所述種子文件包括主種子文件和影像種子文件;以及其中所述種子選擇模塊被進(jìn)一步配置成在重啟所述偽隨機(jī)數(shù)發(fā)生器之際確定所述主種子文件的完好性是否已被損害;如果所述主文件的所述完好性被成功驗(yàn)證,則用所述主種子文件的所述 初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài);以及否則用所述影像種子文件的所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā) 生器的所述啟動(dòng)內(nèi)狀態(tài)。
22. —種處理電路,包括存儲(chǔ)器設(shè)備,其包括用于存儲(chǔ)偽隨機(jī)數(shù)發(fā)生器的內(nèi)狀態(tài)的一個(gè)或多個(gè)內(nèi)狀 態(tài)寄存器;以及處理設(shè)備,其耦合到所述存儲(chǔ)器設(shè)備并被配置成用預(yù)存儲(chǔ)的原始種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);在所述存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞;從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子;用新種子來(lái)重新做種所述偽隨機(jī)數(shù)發(fā)生器以將所述偽隨機(jī)數(shù)發(fā)生器的所述內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài);基于所述偽隨機(jī)數(shù)發(fā)生器的所述經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出;以及 將所述偽隨機(jī)輸出存儲(chǔ)在種子文件中作為所述偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
23. 如權(quán)利要求22所述的處理電路,其特征在于,所述處理設(shè)備被進(jìn)一步配置成在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子; 從信任源獲得時(shí)間值;組合所述時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子;用所述經(jīng)修改的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);以及用從所述偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換所述種子文 件的內(nèi)容。
24. 如權(quán)利要求23所述的處理電路,其特征在于,所述時(shí)間值和初始化種 子被組合以使得所述時(shí)間值被分散到所述經(jīng)修改的初始化種子的整個(gè)范圍中。
25. 如權(quán)利要求22所述的處理電路,其特征在于,所述處理設(shè)備被進(jìn)一步 配置成將所述偽隨機(jī)輸出存儲(chǔ)在安全文件系統(tǒng)的主種子文件中;以及 將所述偽隨機(jī)輸出存儲(chǔ)在所述安全文件系統(tǒng)的影像種子文件中。
26. 如權(quán)利要求25所述的處理電路,其特征在于,所述處理設(shè)備被進(jìn)一步配置成在重啟所述偽隨機(jī)數(shù)發(fā)生器之際確定所述主種子文件的完好性是否已被損害;如果所述主文件的所述完好性被成功驗(yàn)證,則用所述主種子文件的所述初 始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài);以及否則用所述影像種子文件的所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器 的所述啟動(dòng)內(nèi)狀態(tài)。
27. —種具有用于生成偽隨機(jī)輸出的一條或多條指令的機(jī)器可讀介質(zhì),所述 指令在被處理器執(zhí)行時(shí)使所述處理器用預(yù)存儲(chǔ)的原始種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);在所述存儲(chǔ)的原始種子已被使用過(guò)一次之后就將其破壞;從一個(gè)或多個(gè)不可預(yù)測(cè)的熵源獲得新種子;用所述新種子來(lái)重新做種所述偽隨機(jī)數(shù)發(fā)生器以將所述偽隨機(jī)數(shù)發(fā)生器的所述內(nèi)狀態(tài)修改成不可預(yù)測(cè)的狀態(tài);基于所述偽隨機(jī)數(shù)發(fā)生器的所述經(jīng)修改的內(nèi)狀態(tài)生成偽隨機(jī)輸出;以及 將所述偽隨機(jī)輸出存儲(chǔ)在種子文件中作為所述偽隨機(jī)數(shù)發(fā)生器的后續(xù)啟動(dòng)內(nèi)狀態(tài)的初始化種子。
28. 如權(quán)利要求27所述的機(jī)器可讀介質(zhì),其特征在于,還具有在被處理器 執(zhí)行時(shí)使所述處理器執(zhí)行以下操作的一條或多條指令在所述偽隨機(jī)數(shù)發(fā)生器重啟之后從所述種子文件檢索所述初始化種子; 從信任源獲得時(shí)間值;組合所述時(shí)間值與初始化種子以獲得經(jīng)修改的初始化種子; 用所述經(jīng)修改的初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的啟動(dòng)內(nèi)狀態(tài);以及用從所述偽隨機(jī)數(shù)發(fā)生器的偽隨機(jī)輸出獲得的新初始化種子替換所述種子 文件的內(nèi)容。
29. 如權(quán)利要求28所述的機(jī)器可讀介質(zhì),其特征在于,所述時(shí)間值和初始 化種子被組合以使得所述時(shí)間值被分散到所述經(jīng)修改的初始化種子的整個(gè)范圍中。
30. 如權(quán)利要求27所述的機(jī)器可讀介質(zhì),其特征在于,所述種子文件包括 安全文件系統(tǒng)中的主種子文件和影像文件;以及還具有在被處理器執(zhí)行時(shí)使所述處理器執(zhí)行以下操作的一條或多條指令在重啟所述偽隨機(jī)數(shù)發(fā)生器之際確定所述主種子文件的完好性是否已被損害;如果所述主文件的所述完好性被成功驗(yàn)證,則用所述主種子文件的所述 初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā)生器的所述啟動(dòng)內(nèi)狀態(tài);以及否則用所述影像種子文件的所述初始化種子來(lái)初始化所述偽隨機(jī)數(shù)發(fā) 生器的所述啟動(dòng)內(nèi)狀態(tài)。
全文摘要
提供了使用預(yù)存儲(chǔ)的初始化種子的用于偽隨機(jī)數(shù)發(fā)生器的安全做種和重新做種方案。這種方案即使在熵收集不可用的情況下仍將偽隨機(jī)數(shù)發(fā)生器初始化為未知狀態(tài)。在安全文件系統(tǒng)中維護(hù)具有初始化種子信息的主種子文件和影像種子文件。如果主種子文件被損壞,則用影像種子文件的內(nèi)容來(lái)做種偽隨機(jī)數(shù)發(fā)生器。此外,可將信任定時(shí)器或時(shí)鐘與預(yù)存儲(chǔ)的種子信息相混合以便即使在預(yù)存儲(chǔ)的種子信息已被損害時(shí)添加熵。
文檔編號(hào)G06F7/58GK101663642SQ200880012512
公開(kāi)日2010年3月3日 申請(qǐng)日期2008年4月23日 優(yōu)先權(quán)日2007年4月23日
發(fā)明者A·蓋特曼, D·菲格羅亞, G·G·羅斯, 路 肖 申請(qǐng)人:高通股份有限公司