[0025]參照圖2,示出了根據(jù)RNG 20的實(shí)施方式的系統(tǒng)的簡化框圖。提供以TRNG形式的種子生成器21。種子生成器21向偽隨機(jī)數(shù)生成器22提供種子值。偽隨機(jī)數(shù)生成器22根據(jù)確定的過程并基于從種子生成器21接收的隨機(jī)值來提供值序列??刂?狀態(tài)電路23控制TRNG 21和PRNG 22,以根據(jù)某些事件來自動地對PRNG 22重播種??蛇x擇地,控制/狀態(tài)電路還支持對重播種和TRNG 21及PRNG 22的運(yùn)行實(shí)施手動控制。
[0026]例如,TRNG形成為包括成對地連接至數(shù)字化子系統(tǒng)的一組振蕩器。振蕩器的運(yùn)行被設(shè)計(jì)成由選通信號啟用或禁用。當(dāng)啟用時,每個振蕩器按其基本頻率運(yùn)行。振蕩器對和數(shù)字化子系統(tǒng)被設(shè)計(jì)成當(dāng)輸入信號位于其運(yùn)行過渡區(qū)中時優(yōu)化采樣該輸入信號的概率,因此它的值既不是邏輯“1”也不是邏輯“0”。由于參數(shù)(例如,環(huán)境溫度)的變化、電源噪聲的存在或不存在、運(yùn)行電壓的變化以及其他因素,電路的運(yùn)行隨時間推移而變化。因此,控制電路監(jiān)控系統(tǒng)的運(yùn)行并在振蕩器鏈未產(chǎn)生具有足夠熵的足夠頻繁的結(jié)果的情況下調(diào)節(jié)振蕩器鏈的長度及其頻率。
[0027]在一個實(shí)施方式中,控制/狀態(tài)電路23是可編程的,以當(dāng)預(yù)定時間屆滿時、當(dāng)在偽隨機(jī)值序列內(nèi)已經(jīng)生成預(yù)定數(shù)量的值時以及當(dāng)手動請求更新種子值時對PRNG重播種。條件的形式是可編程的,條件自身也是可編程的??蛇x擇地,條件是隨機(jī)地或偽隨機(jī)地被分配。借助可編程性,可以從支持的條件和手動操作中選擇,以產(chǎn)生電路,該電路可動態(tài)配置,以使用在不同設(shè)計(jì)中并使用配置為支持測試模式和其它運(yùn)行模式。
[0028]在這樣的實(shí)施方式中,用于TRNG 21的控制狀態(tài)電路23包括自動重播種子系統(tǒng),該自動重播種子系統(tǒng)在條件被滿足時自動引起TRNG輸出值被加載到PRNG 22的輸入寄存器中??刂茽顟B(tài)電路23可選擇地在構(gòu)建時配置成,當(dāng)自最后播種操作以后過去了足夠時間時,如果讀取到PRNG輸出值的預(yù)設(shè)閾值或者根據(jù)手動請求,控制狀態(tài)電路23自主執(zhí)行TRNG21的播種操作。重播種完全自主地被執(zhí)行并且在一些實(shí)施方式中不中斷隨機(jī)數(shù)序列生成過程??蛇x擇地,狀態(tài)寄存器(未示出)提供哪個自動重播種老化機(jī)制被最后觸發(fā)的指示。
[0029]圖3和圖4示出了示例。圖3示出了在預(yù)定重播種超時屆滿時對PRNG重播種的示例。在步驟301中,PRNG從TRNG輸出寄存器讀取種子。在步驟302中,重置計(jì)時器。在步驟303中,檢查計(jì)時器以查看它是否超過了重播種超時。如果已超過,則過程返回至步驟301。如果未超過,則繼續(xù)檢查計(jì)時器以查看它是否超過了重播種超時。
[0030]圖4示出了當(dāng)已生成預(yù)定數(shù)量的值時對PRNG重播種的示例。在步驟401中,PRNG從TRNG輸出寄存器讀取種子。在步驟402中,重置計(jì)數(shù)器。在步驟403中,使用種子生成PRNG結(jié)果,以及在步驟404中,讀取結(jié)果。在步驟405中,增加計(jì)數(shù)器的值。在步驟406中,檢查計(jì)數(shù)器。如果計(jì)數(shù)器超過預(yù)定數(shù)量的值,則過程返回至步驟401。如果未超過,則過程返回至步驟403。
[0031]在很多情況下,RNG 20由主處理器(未示出)控制。例如,主處理器設(shè)置控制/狀態(tài)電路23的配置值,該配置值影響自動重播種老化子系統(tǒng)。在某些情況下,TRNG 21不直接受主處理器控制,這是因?yàn)楹喕拇薪涌诒挥糜诳刂芓RNG 21,或者因?yàn)椴淮嬖谥魈幚砥鳎挥杏晒潭ǖ挠布壿嫿M成的固定目的的加密子系統(tǒng)。在這些情況下,當(dāng)設(shè)計(jì)包括TRNG 21的集成電路時可以在創(chuàng)建的邏輯中對控制/狀態(tài)電路23的配置值進(jìn)行硬編碼。
[0032]第一自動重播種程序跟蹤自最后播種事件以后的時鐘周期數(shù),該最后播種事件是自動重播種或明確地由主機(jī)(如果存在)請求的重播種。當(dāng)該時期計(jì)數(shù)超過主機(jī)編程的閾值時,對TRNG 21自動發(fā)出內(nèi)部重播種命令。
[0033]另一種自動重播種程序?qū)χ鳈C(jī)或關(guān)聯(lián)的處理電路檢索到的PRNG輸出值的數(shù)量進(jìn)行計(jì)數(shù)并且當(dāng)該數(shù)量超過閾值時發(fā)起重播種事件。
[0034]值得注意的是,從PRNG檢索到的值的數(shù)量有時對于每個種子值而言相對較小
(24)。除去用以管理自動重播種程序的開銷是有利的。此外,有些時候加密引擎不由處理器控制,這里描述的自動重播種程序不再需要由主處理器控制的重播種操作。
[0035]當(dāng)TRNG 21被觸發(fā)以生成新的種子時,生成完整種子(例如,128位和256位之間的種子)的實(shí)際過程有時會需要大量時間。以系統(tǒng)時鐘周期計(jì)量,該過程有時會需要500,000個周期以上。期望的是,當(dāng)新的種子值正被生成時,PRNG輸出值也繼續(xù)可用。因此,在一些實(shí)施方式中,TRNG 21獨(dú)立于PRNG 22的當(dāng)前運(yùn)行而生成其全部的輸出值。只有在完成種子值生成之后,TRNG 21才會發(fā)信號給PRNG 22,以將新生成的種子值加載到PRNG中??商孢x地,TRNG 21每次在檢索到種子值并在從控制狀態(tài)電路23接收到控制信號時生成新的種子值,并將種子值立即提供給PRNG 22。當(dāng)然,為了維持PRNG 22的運(yùn)行,加載種子值不能比生成種子值更頻繁。
[0036]參照圖5,有時期望禁用TRNG 21,而只運(yùn)行PRNG 22。在圖5中,在步驟501中,TRNG被禁用。在步驟502中,使用被稱為“隨機(jī)數(shù)” (nonce)的輸入?yún)?shù)對PRNG 22播種,因此該運(yùn)行模式被稱為隨機(jī)數(shù)播種(nonce-seeding)模式。在隨機(jī)數(shù)播種模式中,不考慮自動重播種計(jì)數(shù)寄存器中的值,兩種自動重播種老化機(jī)制可選擇地被自動禁止。自動老化機(jī)制保持禁用,直到TRNG 21通過引起系統(tǒng)退出隨機(jī)數(shù)播種模式的主機(jī)命令被再次啟用。圖5示出了手動提供種子(步驟503)并手動更新種子(步驟504)的實(shí)施方式。
[0037]可選擇地,控制/狀態(tài)電路23僅提供TRNG 21何時應(yīng)當(dāng)對PRNG 23重播種的指示。在這些情況下,構(gòu)建時的參數(shù)允許TRNG 21被配置成生成狀態(tài)信號,該狀態(tài)信號指示老化重播種條件已經(jīng)被觸發(fā)。然后,硬件控制器、外部控制器或軟件控制器根據(jù)系統(tǒng)設(shè)計(jì)對信號做出響應(yīng)。
[0038]有利地,當(dāng)同時支持重播種的手動觸發(fā)和自動重播種時,只在某些時候可選擇地觸發(fā)手動重播種,而自動重播種處理重播種需求的剩余部分。此外,手動重播種通常導(dǎo)致播種老化狀態(tài)(計(jì)數(shù)或時間)的重置??商孢x地,如果手動重播種從未發(fā)生,則重播種照常進(jìn)行。
[0039]在一些實(shí)施方式中,自動觸發(fā)重播種事件的條件本身被自動更新。例如,來自真隨機(jī)數(shù)生成器的隨機(jī)值序列中的值被用于對條件進(jìn)行重新編程,使得這些條件時時變化。可替選地,使用來自偽隨機(jī)數(shù)生成器的值。還可替選地,使用來自另一個隨機(jī)數(shù)生成器(PRNG或TRNG)的值。在另一個可替選的實(shí)施方式中,在控制/狀態(tài)電路的控制下或者在另一個電路的控制下使用不同來源的值對條件進(jìn)行重新編程。
[0040]如上所述,種子值的重新編程周期在很大的讀取操作或讀取時間的范圍內(nèi)變化,因此,改變這些值提供了在很大范圍內(nèi)改變種子值??蛇x擇地,TRNG提供就緒信號以指示種子值是可用的,使得當(dāng)在種子值就緒之前滿足條件時,電路繼續(xù)運(yùn)行,直到種子值可用??商孢x地,TRNG提供就緒信號以指示種子值是可用的,使得當(dāng)在種子值就緒之前滿足條件時,電路暫停運(yùn)行,直到種子值可用。
[0041]本發(fā)明具有用于RNG、由最少5個信號組成的控制和數(shù)據(jù)接口( “5線”接口),具有可選擇的第六信號以促進(jìn)RNG的自動控制。當(dāng)在系統(tǒng)設(shè)計(jì)中沒有主機(jī)寄存器可用時或者當(dāng)需要輔助隨機(jī)串流時,可以使用該接口。該接口由控制和狀態(tài)部分及數(shù)據(jù)部分組成。