專利名稱:可擴展的隨機數生成的制作方法
可擴展的隨機數生成
背景技術:
隨機數生成是任何計算機系統中的基本過程。特別地,加密系統的安全取決于其具有良好的隨機數來源。然而,計算機在它們的操作中是高度確定性的,并且在輸入給定的情況下任何算法的輸出都是可預測的。因此隨機數并非是利用單純算法手段而生成的。隨機數的生成通常包括兩個不同階段熵采集和隨機數生成。熵是對攻擊者來說不可預測的信息,且該熵用作通常使用加密技術的確定性偽隨機數生成器(PRNG)的種子。熵采集的傳統技術會嘗試在沒有可用時、在不需要時、或者在設備將會如若不然仍然處于省電、閑置狀態中時采集熵。對于小型電池供電設備,能量效率是首要的,低效處理器利用能夠增加功耗。在不可用或不需要時,熵采集消耗功率和影響設備的能量效率。
發明內容
提供本發明內容以介紹在下文具體實施方式
中進一步描述的可擴展的隨機數生成的簡化概念。本發明內容并非意在識別所要求保護的主題的必要特征,也不意在用于確定所要求保護的主題的范圍。描述可擴展的隨機數生成。在實施例中,系統包括一個或多個熵池,所述熵池將基于事件數據從熵源采集的熵數據進行組合。根偽隨機數生成器(PRNG)維持由熵池補種的取種(seeded)熵狀態,種子版本標識符更新以指示根PRNG的當前種子版本。在系統的內核中每邏輯處理器逐一實例化處理器PRNG,其中每個處理器PRNG維持從根PRNG補種的PRNG 熵狀態,且處理器PRNG根據調用時的各PRNG熵狀態生成隨機數。在其它實施例中,系統還包括每應用逐一實例化的應用基礎PRNG,且每個應用基礎PRNG維持從處理器PRNG按需求補種的基礎PRNG熵狀態。每邏輯處理器、每過程逐一實例化過程PRNG,且每個過程PRNG維持從應用基礎PRNG按需求補種的過程PRNG熵狀態。在其它實施例中,在熵數據被采集時,按需求動態地生成一個或多個熵池。一個或多個熵池基于指定時間間隔對根PRNG的取種熵狀態補種(reseed)。當調用處理器PRNG以生成隨機數時,按需求從根PRNG對每個處理器PRNG補種。每個處理器PRNG還維持用來指示各處理器PRNG中PRNG熵狀態的補種版本的種子版本。根PRNG處的種子版本標識符在系統中是全局的且被配置成通過處理器PRNG、應用基礎PRNG以及過程PRNG訪問。PRNG的種子版本可以與根PRNG處的種子版本標識符相比較以確定是否對PRNG的PRNG熵狀態補種。
參照附圖描述可擴展的隨機數生成的實施例。整個圖使用相同標記來指代相似的特征和組件
圖I示例了可以實施可擴展的隨機數生成實施例的實例系統。圖2示例了可以實施可擴展的隨機數生成實施例的另一實例系統。圖3示例了按照一個或多個實施例的可擴展的隨機數生成的實例方法。
圖4示例了可以實施可擴展的隨機數生成實施例的實例設備的各種組件。
具體實施例方式描述可擴展的隨機數生成。在實施例中,系統包括一個或多個熵池,所述熵池將從熵源導出的熵數據組合,其中一些可以基于諸如中斷定時的事件數據。根偽隨機數生成器 (PRNG)維持被熵池補種的取種熵狀態以及用來指示根PRNG的當前種子版本的種子版本標識符,如計數器、數值、或者不同類型的標識符。例如,可以增加種子版本計數器以指示根 PRNG的當前種子版本。在系統的內核中每邏輯處理器逐一實例化處理器PRNG,其中每個處理器PRNG維持從根PRNG補種的PRNG熵狀態。系統還包括每應用逐一實例化的應用基礎 PRNG,且每個應用基礎PRNG維持從處理器PRNG按需求補種的基礎PRNG熵狀態。每邏輯處理器、每過程逐一實例化過程PRNG,且每個過程PRNG維持從應用基礎PRNG按需求補種的過程PRNG熵狀態。系統中的每個PRNG根據它自身的內部PRNG熵狀態生成隨機數。熵生成由中斷事件驅動并且在系統閑置時不引起后臺活動,這保存了能量。另外,熵收集過程不影響PRNG 調用的執行時間,并且因此可以在不影響PRNG性能的情況下與所需一樣緩慢。雖然可以在任何數量的不同環境、系統、設備和/或各種配置中實施可擴展的隨機數生成的所描述系統和方法的特征和概念,但在以下實例設備、系統、以及配置的上下文中描述可擴展的隨機數生成的實施例。圖I示例了可以實施可擴展的隨機數生成的各種實施例的實例系統100。實例系統100示例了熵采集和隨機數生成。從熵源104采集熵數據102。熵數據可以根據與網絡活動相關聯的中斷定時導出。熵數據也可以根據設備輸入(如鼠標或鍵盤輸入)導出。中斷可以包括與硬件中斷相關聯的時間戳。例如,中斷數據可以包括與設備輸入、其它類型的用戶輸入、盤I/O的完成或者網絡活動相關聯的時間戳。熵源還可以包括為了生成隨機位的具體目的而實施的硬件源。除了中斷定時之外,熵數據還可以從狀態數據(如從應用處理、 注冊條目、內部設備過程、鼠標移動的細節等)導出。熵數據102預期為不可預測的,其被稱為來自不同熵源的熵數據在組合時具有的不確定性。熵數據在一個或多個熵池106中采集,其以單個熵池開始,進入的熵數據加入其中。在實施中,在運用正在進行的局部哈希運算和/或其它加密技術和算法的熵池中組合或混合熵數據。在實施中,熵池存儲用來概括熵數據集合中可使用的熵的固定量的數據。 例如,熵池包含可以在處理千字節或甚至兆字節的定時和狀態信息時獲得的三十二(32)字節。可以通過單向函數將熵添加到熵池中,該單向函數將當前熵池值和新熵數據組合以生成新的或更新的熵池值。可替換地,可以使用不同(非單向)的函數將熵添加到熵池中。 由于三十二( 32 )字節不包含隨機性的三十二( 32 )字節,因此熵池具有容量限制。然而,這并不是硬性限制,原因是在認為熵池被充滿之后仍然可以向熵池添加熵數據,其中充滿表明相信熵池中所有位是獨立和統一隨機的原因。熵池將熵數據組合到固定狀態,該狀態將熵不確定性保持至狀態大小所施加的限制。在實施例中,可以將熵池實施成被實例化為維持熵數據的數據結構的對象,并且其具有函數以便在熵池中組合熵數據。在熵數據102被采集時,可以動態地生成附加熵池106。在實施例中,系統可以從僅一個熵池開始,當更多的熵數據被采集時,創建附加熵池。可擴展的隨機數生成系統中熵池的數量可以是固定的或可變的。實例系統100包括根偽隨機數生成器(PRNG) 108 (在實施中也稱作確定性隨機位生成器(DRBG))。在實施例中,本文中描述的PRNG也被實施成被實例化為維持隨機數生成的熵狀態的數據結構的對象。根PRNG 108維持取種熵狀態110,該狀態在熵池從熵源采集了足夠熵數據時和/或在指定持續時間之后從熵池106補種。在實施例中,根PRNG的取種熵狀態根據時間表補種,該時間表限制了對系統中PRNG的整體層級補種的開銷。根PRNG還包括種子版本標識符112,該標識符在每次對根PRNG補種時更新且指示當前種子版本。種子版本標識符在系統中是全局的且在各個過程的過程空間中可以被操作系統使用以提供系統中的其它PRNG可以檢查該取種熵狀態的種子版本。實例系統100示例了具有內核模式114和用戶模式116 (例如,在系統中或在設備上被一個或多個處理器執行的應用)的系統實施。根PRNG是可擴展的隨機數生成系統的第一層,且被包括在內核模式中。可擴展的隨機數生成系統中PRNG的第二層(也在內核模式中)包括內核中每個邏輯處理器一個的處理器PRNG 118。可以在首次在特定邏輯處理器上調用處理器PRNG時實例化每個處理器PRNG,處理器PRNG的數量隨著系統中邏輯處理器的數量而自動調節。在從根PRNG 108對處理器PRNG取種時,每個處理器PRNG維持PRNG 熵狀態120。每個處理器PRNG還包括指示對特定處理器PRNG補種時的補種版本的種子版本122。每次調用第二層處理器PRNG時,可以針對種子版本標識符112檢查存儲的種子版本,如果存儲的種子版本與種子版本標識符不匹配,則處理器PRNG從根PRNG對它本身補種。注意,對特定邏輯處理器上處理器PRNG的調用將會調用該特定邏輯處理器的第二層處理器PRNG。可擴展的隨機數生成系統中PRNG的第三層(用戶模式中)包括每個應用一個的應用基礎PRNG 124。可以在首次執行應用時將每個應用基礎PRNG實例化。每個應用基礎 PRNG維持從第二層處理器PRNG 118對應用基礎PRNG取種時的PRNG熵狀態126。每個應用基礎PRNG還包括指示何時對特定應用基礎PRNG補種的種子版本128。每次調用第三層應用基礎PRNG時,可以針對種子版本標識符112檢查存儲的種子版本,如果存儲的種子版本與種子版本標識符不匹配,則應用基礎PRNG 124從第二層處理器PRNG 118對它本身補種。可擴展的隨機數生成系統中PRNG的第四層(用戶模式中)包括每邏輯處理器、每過程一個的過程PRNG 130。可以在首次在邏輯處理器上運行的過程中調用過程PRNG時將每個過程PRNG實例化。每個過程PRNG維持從該過程對應的第三層應用基礎PRNG 124對過程PRNG取種時的PRNG熵狀態132。每個過程PRNG還包括指示何時對特定過程PRNG補種的種子版本134。每次調用第四層過程PRNG時,針對種子版本標識符112檢查存儲的種子版本,如果存儲的種子版本與種子版本標識符不匹配,則過程PRNG 130從對應的第三層應用基礎PRNG 124對它本身補種。雖然實例系統100是用四層PRNG描述的,但可以利用任何數量的PRNG層實施可擴展的隨機數生成系統。PRNG層級可以包括一個或多個層面的PRNG (以包括單個PRNG)。 另外,每處理器PRNG可以在系統中的任何地方(如在系統的內核層中和/或在系統的應用層(例如用戶模式)中)被實例化,并且還可以在沒有根PRNG的情況下被實施。可以在任何時間創建PRNG,在系統啟動期間(如內核中的一個根PRNG 108)或者按需求(如內核中每邏輯處理器逐一創建的處理器PRNG 118、作為基礎狀態每執行的應用逐一創建的應用基礎 PRNG 124、以及每邏輯處理器每過程逐一創建的過程PRNG 130)創建。系統中的每個PRNG 根據它自身的內部PRNG熵狀態生成隨機數,并且按需求對PRNG補種。當過程閑置時,用以生成隨機數的開銷和功耗最小化。在根PRNG 108補種以及種子版本標識符112更新之后,系統中所有PRNG將會在產生數據(例如,隨機數)之前必要時補種。然而,每個PRNG都被按需求補種。例如,當應用在一段時間內閑置且隨后請求生成隨機數時,該請求被導向到相應過程PRNG 130。如果PRNG熵狀態132相比種子版本標識符112并非基于種子版本134的最新版本(這很可能因為該應用是閑置的),則將請求導向到應用基礎PRNG 124以對過程PRNG 130的PRNG熵狀態132補種。類似地,如果在應用基礎PRNG 124處的PRNG熵狀態126相比種子版本標識符112并非基于種子版本128的最新版本,則將請求導向到處理器PRNG 118以對應用基礎PRNG 124的PRNG熵狀態126補種。 類似地,如果在處理器PRNG 118處的PRNG熵狀態120相比種子版本標識符112并非基于種子版本122的最新版本,則將請求導向到根PRNG 108以對處理器PRNG 118的PRNG熵狀態120補種。在實施例中,本文中描述的PRNG被實施成被實例化為數據結構的對象,每個數據結構維持隨機數生成的熵狀態。PRNG可以被實施為包括熵狀態、輸出函數、狀態轉換函數以及補種函數。當調用PRNG (例如,請求隨機數)時,PRNG調用將當前熵狀態的單向函數返回的輸出函數(所以未使用輸出計算當前熵狀態)。在生成輸出之后,PRNG執行狀態轉換函數以便用當前熵狀態的不同單向函數更新熵狀態值(所以未使用輸出來運算目前或未來熵狀態,未使用當前熵狀態來運算先前狀態或輸出)。當連同新熵的輸入一起請求補種時, PRNG把它的狀態轉換為新熵和當前狀態的單向函數使得新熵狀態并不是僅由新熵或僅由舊狀態計算出的,并且新熵狀態并非用來計算新熵或舊熵狀態。圖2示例了可以實施可擴展的隨機數生成的各種實施例的實例系統200。實例系統200包括可以被配置成任何類型的運算設備204的設備202。各種運算設備204中的任何一種都可以被配置成設備202,并且可以用參照圖4示出的實例設備進一步描述的任何數量和組合的不同組件來實施。可以將設備實施為電視客戶端設備206、計算機設備208、游戲系統210、家電設備、電子設備和/或任何其它類型的設備中的任何一個或它們的組合。各種設備還可以包括實施以接收和/或傳送無線數據的無線設備,如移動電話212 (例如,蜂窩、VoIP、WiFi 等)、便攜式計算機設備214、媒體播放器設備216、平板電腦設備218和/或任何其它無線設備中的任何一個或它們的組合。客戶端系統可以包括相應設備和顯示設備220。設備202可以包括一個或多個處理器222 (例如微處理器、控制器等的任何一個), 該處理器處理各種計算機可執行指令以控制運算設備的操作。該設備還包括可以使用實現數據存儲的一個或多個存儲器設備(例如計算機可讀存儲介質)實施的存儲器。可以將存儲設備實施為任何類型的存儲器、存儲介質和/或合適電子數據存儲部件。存儲器提供處理器可以執行的各種應用的數據存儲。例如,該設備可以包括隨機數生成器,該生成器是在不同上下文中實例化以及執行的算法(如根PRNG 224和PRNG 226)。隨機數生成器存儲包括每處理器、每應用以及每過程的整個系統的大量PRNG熵狀態220。當請求隨機數時,隨機數生成器基于諸如CPU和過程親和性等因素選擇熵狀態,在需要時更新熵狀態,并且通過對狀態執行PRNG操作生成隨機數228。如以上參照圖I對熵采集的描述,可以從熵源232和/或外界熵源234導出熵數據230。在一個或多個熵池236中采集熵數據,熵數據在所述池中被組合成為固定大小的狀態且被用來根據指定時間間隔或基于時間表對根PRNG 224取種。可替換地或附加地,可以基于在一個或多個熵池中采集的熵的量對根PRNG補種。根PRNG維持從一個或多個熵池補種的取種熵狀態238。根PRNG還包括在每次對根PRNG補種時更新的種子版本標識符240。設備202還包括各種PRNG 226,如內核中每邏輯處理器一個的處理器PRNG ;每應用一個的應用基礎PRNG ;以及每邏輯處理器、每過程一個的過程PRNG。盡管該實例是用四層的PRNG來描述的,但該設備可以用任何數量的PRNG層實施可擴展的隨機數生成系統。每個PRNG 226維持PRNG熵狀態242、以及指示何時對特定PRNG的PRNG熵狀態補種的種子版本 244。當應用請求隨機數時,該應用通過例如將PRNG熵狀態242的種子版本244與種子版本標識符240相比較來確定是否需要對每應用、每CPU的PRNG熵狀態補種。如果PRNG 熵狀態是最新的補種版本,則該應用使用PRNG熵狀態生成隨機數。然而,如果PRNG熵狀態并非最新的補種版本,則該應用從每應用基礎PRNG請求隨機數,從每應用基礎PRNG補種, 然后生成隨機數。如果從每應用基礎PRNG請求隨機數,則該應用確定是否需要對每應用基礎PRNG 熵狀態補種。如果PRNG熵狀態是最新的補種版本,則該應用使用PRNG熵狀態生成隨機數。 然而,如果PRNG熵狀態并非最新的補種版本,則該應用從每處理器(CPU內核)PRNG請求隨機數,從每處理器PRNG補種,然后生成隨機數。如果從每處理器PRNG請求隨機數,則操作系統內核確定是否需要對每處理器 PRNG熵狀態補種。如果PRNG熵狀態是最新的補種版本,則根據當前PRNG熵狀態生成隨機數。然而,如果PRNG熵狀態并非最新的補種版本,則從根PRNG 224請求隨機數,對每處理器PRNG補種,并且生成隨機數。如果從根PRNG 224請求隨機數,則操作系統內核確定是否需要對根PRNG的取種熵狀態238補種。如果不需要,使用取種熵狀態生成隨機數。然而,如果的確需要對取種熵狀態補種,則從一個或多個熵池236對取種熵狀態補種,并且生成隨機數。根據可擴展的隨機數生成的一個或多個實施例參照圖3描述實例方法300。通常, 可以使用軟件、固件、硬件(例如固定邏輯電路)、人工處理、或者它們的任何組合實施本文中描述的功能、方法、流程、組件、以及模塊中的任何一個。軟件實施表示在通過計算機處理器執行時執行規定任務的程序代碼。可以在可以包括軟件、應用、例程、程序、對象、組件、數據結構、流程、模塊、功能等的計算機可執行指令的總體上下文中描述實例方法。可以把程序代碼存儲在計算機處理器本地和/或遠程的一個或多個計算機可讀存儲器設備中。還可以通過多個計算機設備在分布式運算環境中實踐所述方法。進一步地,本文中描述的特征是與平臺無關的且可以在具有各種處理器的各種運算平臺上實施。圖3示例了可擴展的隨機數生成的實例方法300。描述方法塊的次序并非意在解釋成限制,可以以任何次序組合任何數量的所描述的方法塊以實施方法或替代方法。在塊302中,基于中斷定時從熵源采集熵數據,在塊304,將熵數據組合在一個或多個熵池中。例如,從熵源104采集熵數據102 (圖1),且隨后在熵池106中采集。在塊 306,在熵數據被采集時按需求動態地生成熵池。例如,在熵數據102被采集時動態地生成附加熵池106,可擴展的隨機數生成系統中熵池的數量可以是固定的或可變的。在塊308,對從一個或多個熵池補種的根PRNG的取種熵狀態補種。例如,在熵池 106從中斷定時起和/或在指定持續時間之后采集了足夠熵數據時,根PRNG 108維持從熵池106補種的取種熵狀態110。在實施例中,基于指定時間間隔從一個或多個熵池對根PRNG 的取種熵狀態補種。在塊310,更新種子版本標識符以指示根PRNG中取種熵狀態的當前種子版本。例如,根PRNG 108包括在每次對根PRNG補種時更新且指示當前種子版本的種子版本標識符 112。種子版本標識符在系統中是全局的且在每個過程的過程空間中可以被操作系統使用以提供系統中的其它PRNG可以檢查取種熵狀態的種子版本。在塊312,在系統的內核中每邏輯處理器逐一實例化處理器PRNG。例如,在內核中每邏輯處理器逐一實例化處理器PRNG 118,每個處理器PRNG維持從根PRNG按需求補種的 PRNG熵狀態120。在塊314,每應用逐一實例化應用基礎PRNG。例如,每應用逐一實例化應用基礎PRNG 124,每個應用基礎PRNG維持從處理器PRNG按需求補種的基礎PRNG熵狀態 126。在塊316,每邏輯處理器、每過程逐一實例化過程PRNG。例如,每邏輯處理器、每過程逐一實例化過程PRNG 130,并且每個過程PRNG維持從應用基礎PRNG按需求補種的過程 PRNG熵狀態132。在塊318,當調用PRNG以生成隨機數時根據PRNG的PRNG熵狀態生成隨機數。例如,所描述的PRNG中的任何一個在調用PRNG以生成隨機數時根據各PRNG熵狀態生成隨機數228。圖4示例了參照前圖I 一 3所描述的可以被實施為所述設備或者由所述設備實施的服務的任何一個的實例設備400的各種組件。在實施例中,設備可以被實施為顧客、計算機、服務器、便攜式、用戶、通信、電話、導航、電視、家電、游戲、媒體回放和/或電子設備中的任何形式的固定或移動設備的任何一種或它們的組合。設備還可以與操作設備的實體和 /或用戶(即,人)相關聯使得設備描述包括用戶、軟件、固件、硬件和/或設備組合的邏輯設備。設備400包括實現設備數據404 (如接收的數據、正接收的數據、針對廣播所調度的數據、數據的數據包等)的有線和/或無線通信的通信設備402。設備數據或其它設備內容可以包括設備的配置設置、設備上存儲的媒體內容和/或與設備的用戶相關聯的信息。 設備上存儲的媒體內容可以包括任何類型的音頻、視頻和/或圖像數據。設備包括一個或多個數據輸入406,經由該輸入406可以接收任何類型的數據、媒體內容和/或輸入,如用戶可選擇的輸入、消息、通信、音樂、電視內容、記錄的視頻內容,以及從任何內容和/或數據源接收的任何其它類型的音頻、視頻和/或圖像數據。設備400還包括通信接口 408,如串行、并行、網絡、或者無線接口中的任何一個或多個。通信接口提供設備與通信網絡之間的連接和/或通信鏈路,通過該連接和/或通信鏈路,其它電子、運算以及通信設備與設備傳送數據。設備400包括一個或多個處理器410 (例如微處理器、控制器等中的任何一個), 該處理器處理各種計算機可執行指令以控制設備操作。可替換地或附加地,可以用軟件、硬件、固件或固定邏輯電路(結合一般標識為412的處理和控制電路來實施)的任何一個或它們的組合實施該設備。盡管未示出,該設備可以包括耦合設備內各種組件的系統總線或數據輸送系統。系統總線可以包括不同總線結構(如存儲器總線或存儲器控制器、外圍總線、 通用串行總線和/或運用各種總線架構中任何一種的處理器或本地總線)中的任何一個或它們的組合。設備400還包括實現數據存儲的一個或多個存儲器設備(例如計算機可讀存儲介質)414,如隨機存取存儲器(RAM)、非易失性存儲器(例如,只讀存儲器(ROM)、閃存等),以及盤存儲設備。盤存儲設備可以實施為任何類型的磁或光學存儲設備(如硬盤驅動器、可刻錄和/或可重寫盤等)。設備還可以包括海量存儲介質設備。計算機可讀介質可以是被運算設備訪問的任何可用介質或媒體。以實例而非限制的方式,計算機可讀介質可以包括存儲介質和通信介質。存儲介質包括以信息存儲的任何方法或技術(如計算機可讀指令、數據結構、程序模塊、或者其它數據)實施的易失性和非易失性、可移除和不可移除介質。存儲介質包括但不限于RAM、ROM、EEPR0M、閃存或其它存儲器技術、CD-ROM、數字多功能盤(DVD)或其它光學存儲裝置、磁盒、磁帶、磁盤存儲裝置或其它磁存儲設備,或者可以用來存儲信息和可以被計算機訪問的任何其它介質。通信介質通常包含計算機可讀指令、數據結構、程序模塊、或者在調制數據信號 (如,載波或其它傳輸機制)中的其它數據。通信介質還包括任何信息傳遞介質。術語調制的數據信號意指具有以編碼信號中信息的方式設定或改變其一個或多個特性的信號。以實例而非限制的方式,通信介質包括諸如有線網絡或直接連線連接的有線介質,以及諸如聲學、 RF、紅外等無線介質以及其它無線介質。存儲器設備414提供數據存儲機制以存儲設備數據404、其它類型的信息和/或數據、以及各種設備應用416。例如,操作系統418可以利用存儲器設備維持為軟件應用并在處理器上執行。設備應用還可以包括設備管理器,如任何形式的控制應用、軟件應用、信號處理和控制模塊、對特定設備原生的代碼、特定設備的硬件抽象層等。在此實例中,設備應用416還包括隨機數生成器420。另外,各種設備應用可以被實施為用來貢獻中斷數據和/或從中可以導出緩存熵的狀態數據的熵源422。隨機數生成器和熵源被示為軟件模塊和/或計算機應用。可替換地或附加地,隨機數生成器和/或熵源可以被實施為硬件、軟件、固件、固定邏輯或者其任何組合。設備400還包括生成音頻系統426的音頻數據和/或生成顯示系統428的顯示數據的音頻和/或視頻處理系統424。音頻系統和/或顯示系統可以包括處理、顯示和/或如若不然重現音頻、視頻、顯示和/或圖像數據的任何設備。顯示數據和音頻信號可以經由 RF (射頻)鏈路、S視頻鏈路、合成視頻鏈路、成分(component)視頻鏈路、DVI (數字視頻接口)、模擬音頻連接、或者其它類似通信鏈路傳送到音頻設備和/或顯示設備。在實施中,音頻系統和/或顯示系統是設備的外部組件。可替換地,音頻系統和/或顯示系統是實例設備的集成組件。雖然以特定于特征和/或方法的語言描述了可擴展的隨機數生成的實施例,但所附權利要求的主題不必限于描述的具體特征或方法。而是,所述具體特征和方法作為可擴展的隨機數生成的實例實施公開。
權利要求
1.一種系統(100),包括基于事件數據從一個或多個熵源(104)采集的熵數據(102);以及系統的每邏輯處理器逐一實例化的一個或多個處理器偽隨機數生成器(PRNG) (118), 每個處理器PRNG被配置成維持通過所述熵數據補種的PRNG熵狀態(120),處理器PRNG進一步被配置成根據相應PRNG熵狀態生成隨機數(228)。
2.如權利要求I所述的系統,其中根據包括一個或多個層面的處理器PRNG的PRNG層級對處理器PRNG的PRNG熵狀態補種。
3.如權利要求2所述的系統,進一步包括種子版本標識符,其被配置成更新和指示 PRNG熵狀態的當前種子版本,以及其中當調用處理器PRNG以生成隨機數時,按需求對所述 PRNG熵狀態補種。
4.如權利要求2所述的系統,進一步包括被配置成采集所述熵數據的一個或多個熵池,當熵數據被采集時,按需求動態地生成所述一個或多個熵池;PRNG層級中的根PRNG,根PRNG被配置成維持從所述一個或多個熵池補種的取種熵狀態。
5.如權利要求4所述的系統,其中根PRNG的取種熵狀態被配置成基于指定時間表從所述一個或多個熵池補種。
6.如權利要求I所述的系統,其中在系統的內核層或系統的應用層中的至少一個中實例化處理器PRNG。
7.一種方法(300),包括基于事件數據從一個或多個熵源(104)采集(302)熵數據(102);在所述一個或多個熵池(106)中組合(304)所述熵數據;對從所述一個或多個熵池補種的根偽隨機數生成器(PRNG) (108)的取種熵狀態(110) 補種(308);在系統的內核中每邏輯處理器逐一實例化(312)處理器PRNG (118),每個處理器PRNG 維持從根PRNG補種的PRNG熵狀態(120);以及當調用處理器PRNG以生成隨機數時,根據處理器PRNG的PRNG熵狀態生成(318)隨機數(228)。
8.如權利要求7所述的方法,進一步包括每應用逐一實例化應用基礎PRNG,每個應用基礎PRNG維持從處理器PRNG按需求補種的基礎PRNG熵狀態。
9.如權利要求8所述的方法,進一步包括每邏輯處理器、每過程逐一實例化過程PRNG, 每個過程PRNG維持從應用基礎PRNG按需求補種的過程PRNG熵狀態。
10.如權利要求7所述的方法,進一步包括更新指示根PRNG中取種熵狀態的當前種子版本的種子版本標識符。
全文摘要
在可擴展的隨機數生成的實施例中,系統包括將熵數據進行組合的一個或多個熵池,所述熵數據基于事件數據從熵源導出。根偽隨機數生成器(PRNG)維持通過熵池補種的取種熵狀態,種子版本標識符更新以指示根PRNG的當前種子版本。在系統的內核中每邏輯處理器逐一實例化處理器PRNG,其中每個處理器PRNG維持從根PRNG補種的PRNG熵狀態,處理器PRNG根據調用時的各PRNG熵狀態生成隨機數。
文檔編號G06F7/58GK102609237SQ20121000279
公開日2012年7月25日 申請日期2012年1月6日 優先權日2011年1月6日
發明者N.T.費爾古森, V.G.巴拉瓦, 周大翊 申請人:微軟公司