用于不確定性隨機位發(fā)生器(nrbg)的方法和裝置制造方法
【專利摘要】本發(fā)明提供了基于硬件的數(shù)字隨機數(shù)發(fā)生器。在一個實施例中,處理器包括數(shù)字隨機數(shù)發(fā)生器(DRNG)以及耦合到所述DRNG的執(zhí)行單元,所述數(shù)字隨機數(shù)發(fā)生器用于調(diào)節(jié)熵源所提供的熵數(shù)據(jù)、生成多個確定性隨機位(DRB)串、以及生成多個不確定性隨機位(NRB)串,所述執(zhí)行單元響應于讀取種子值的第一指令來從DRNG中檢索NRB串之一并將該NRB串儲存在該第一指令所指定的目的地寄存器中。
【專利說明】用于不確定性隨機位發(fā)生器(NRBG)的方法和裝置
【技術領域】
[0001]本公開涉及處理器,并且具體涉及處理器中的隨機數(shù)發(fā)生器。
【背景技術】
[0002]密碼算法和使用它們的協(xié)議需要密鑰(它們基于隨機數(shù))。例如,這樣的密鑰可以是諸如高級加密標準(AES)和數(shù)據(jù)加密標準(DES)(用于塊或流加密)等對稱密鑰算法所使用的秘密/共享密鑰、以及諸如Riverst,Shamir, Adleman (RSA)以及數(shù)字簽名算法(DSA)等非對稱密鑰算法所使用的公鑰/私鑰對。
[0003]隨機數(shù)由隨機數(shù)發(fā)生器來創(chuàng)建。邏輯上存在兩種隨機數(shù)發(fā)生器:真隨機數(shù)發(fā)生器(TRNG)和偽隨機數(shù)發(fā)生器(PRNG)。
[0004]TRNG只可使用基于硬件的“熵源”來構(gòu)建并且可產(chǎn)生真隨機數(shù)的不確定性序列。TRNG通常被用來作為軟件PRNG的“種子”并且也被稱為不確定性隨機位發(fā)生器(NRBG)。缺少高質(zhì)量、高性能真TRNG已經(jīng)造成了計算機系統(tǒng)安全故障。
[0005]附圖簡述
[0006]隨著以下詳細描述繼續(xù),并且基于參考附圖,所要求保護的主題的各實施例的特征將變得明顯,在附圖中相似標號描繪相似部件,并且在附圖中: [0007]圖1A是示出根據(jù)本發(fā)明的一個實施例的具有硬件隨機數(shù)發(fā)生器的處理器的框圖;
[0008]圖1B是根據(jù)本發(fā)明的原理的包括不確定性隨機位發(fā)生器(NRBG)的硬件隨機數(shù)發(fā)生器的實施例的框圖;
[0009]圖2是圖1示出的熵確認模塊的實施例的框圖;
[0010]圖3是圖1示出的組合調(diào)節(jié)器、DRBG以及NRBG模塊的實施例的框圖;
[0011]圖4是圖1示出的確定性隨機數(shù)發(fā)生器的實施例的框圖;
[0012]圖5是圖1示出的具有硬件隨機數(shù)發(fā)生器的處理器的實施例的框圖;以及
[0013]圖6是根據(jù)一個實施例的示出處理指令以獲得隨機位串的方法的流程圖。
[0014]圖7是根據(jù)一個實施例的示出生成隨機位串的方法的流程圖。
[0015]圖8是解說可與本發(fā)明的一實施例一起使用的數(shù)據(jù)處理系統(tǒng)的框圖。
[0016]圖9是解說可與本發(fā)明的另一實施例一起使用的數(shù)據(jù)處理系統(tǒng)的框圖。
[0017]雖然下列詳細描述將參考所要求保護的主題的說明性實施例來進行,但是,許多替代方案、修改以及其變體將對所屬領域的技術人員顯而易見。因此,所要求保護的主題旨在被寬泛地認為,并且只如在所附權(quán)利要求書中闡明的那樣來限定。
[0018]詳細描述
[0019]下面將參考下面所討論的細節(jié)來描述本發(fā)明的各實施例并各方面,各個附圖將示出各實施例。下面的描述和圖形只是本發(fā)明的說明,而不作為對本發(fā)明的限制。描述了很多具體細節(jié),以便全面地理解本發(fā)明的各實施例。然而,在某些實例中,沒有描述已知的或常規(guī)的細節(jié),以便提供對本發(fā)明的各實施例的簡潔的討論。[0020]在本說明書中對“一個實施例”或“實施例”的引用意思指和該實施例一起描述的特定特征、結(jié)構(gòu)或特征可以被包括在本發(fā)明的至少一個實施例中。在本說明書中的不同位置出現(xiàn)短語“在一個實施例中”不一定都是指同一個實施例。
[0021]“保護”計算機上的任何事物需要使用高質(zhì)量密碼(這需要高質(zhì)量密鑰)。高質(zhì)量密鑰需要高質(zhì)量隨機數(shù)/熵。高質(zhì)量隨機數(shù)/熵需要高質(zhì)量熵源(硬件)和如此驗證的高質(zhì)量(例如,順從標準的)后處理(例如,F(xiàn)ederal Information Processing StandardsPublication(經(jīng)由聯(lián)邦信息處理標準公布),F(xiàn)IPS PUB140-2/32級)。
[0022]高質(zhì)量密鑰是所有密碼使用的基礎啟用器,包括:
[0023]通信一所有棧的所有級別(可擴展標記語言(XML)、傳輸層安全(TLS)、虛擬專用網(wǎng)(VPN)、因特網(wǎng)協(xié)議(IP)、WiF1、WiMax);簽名——數(shù)字證書、完整性清單、證明、事務;存儲——文件和卷隱私;以及數(shù)字權(quán)限管理(DRM)。累積并處理足夠數(shù)量和質(zhì)量的熵來(重新)作為PRNG/DRNG的種子是計算系統(tǒng)中的復雜、耗時、且易錯的活動。因此,計算系統(tǒng)不具有足夠數(shù)量的高質(zhì)量熵。提供了用于生成高質(zhì)量熵的不確定性隨機位發(fā)生器(NRBG)的實施例。在一實施例中,NRBG是集成在處理器或處理器核中的順從標準的硬件NRBG。在一實施例中,提供軟件接口以允許經(jīng)由處理器指令來控制NRBG。
[0024]圖1A是示出了根據(jù)一實施例的處理器的示例的框圖。參考圖1A,處理器150可以表示任何類型的指令處理設備。例如,處理器150可以是通用處理器。處理器150可以是各種復雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIff)處理器中的任何一種,其各種混合型,或完全其他類型的處理器。在一個實施例中,處理器150包括接收和解碼指令156的指令解碼器151。指令解碼器151生成并輸出一個或多個微操作、微代碼、入口點、微指令、其他指令或其他控制信號,它們反映或來源于指令156。指令解碼器151可以使用各種不同的機制來實現(xiàn)。合適的機制的示例包括,但不僅限于,微代碼只讀存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、等等。
[0025]處理器150還包括一個或多個執(zhí)行單元152,該執(zhí)行單元152可以包括算術邏輯單元或能夠基于指令156來執(zhí)行操作的另一種類型的邏輯單元。作為指令解碼器151解碼指令156的結(jié)果,執(zhí)行單元152可以接收一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號,它們反映或來源于指令156。執(zhí)行單元152可以作為指令156指出一個或多個源操作數(shù)(SRC) 158的結(jié)果可操作,并將結(jié)果存儲到由指令156指出的寄存器組155的一個或多個目的地操作數(shù)(DEST) 159中。執(zhí)行單元152可以包括可操作以執(zhí)行指令或從指令156導出的其他控制信號的電路或其他執(zhí)行邏輯(例如,與硬件和/或固件相結(jié)合的軟件),并相應地執(zhí)行操作。執(zhí)行單元152可以表示諸如邏輯單元、算術邏輯單元(ALU)、算術單元、整數(shù)單元等等之類的任何類型的執(zhí)行單元。
[0026]在一個實施例中,指令156可以隱式地指出和/或顯式地指定(例如,通過一個或多個專用的字段或位組)源和目的地操作數(shù)。操作數(shù)的合適的源和/或目的地的示例包括寄存器、存儲器、指令的立即數(shù)(immediate)以及其組合。在各實施例中,源和目的地操作數(shù)可以是8位、16位、32位或64位操作數(shù),雖然這不是必需的。
[0027]在一個實施例中,源和目的地操作數(shù)中的某些或全部可以被存儲在寄存器組或存儲器155的寄存器中。寄存器組可以是寄存器文件的一部分,以及潛在地,諸如狀態(tài)寄存器、標志寄存器等其他寄存器。寄存器可以是可以被用來存儲數(shù)據(jù)的存儲位置或設備。寄存器組常??梢栽谖锢砩衔挥趲в袌?zhí)行單元的管芯中。寄存器可以從處理器的外部或從編程器的角度可見。例如,指令可以指定存儲在寄存器中的操作數(shù)。各種不同類型的寄存器都是合適的,只要它們能夠存儲和提供如此處所描述的數(shù)據(jù)。寄存器可以被重命名,也可以不被重命名。合適的寄存器的示例包括但不僅限于專用物理寄存器、使用寄存器重命名的動態(tài)地分配的物理寄存器、專用和動態(tài)地分配的物理寄存器的組合,等等。可另選地,源和目的地操作數(shù)中的一個或多個可以存儲在存儲位置,而不是寄存器中,諸如,例如,系統(tǒng)存儲器中的位置。
[0028]根據(jù)一個實施例,處理器150包括用于生成確定性隨機位流或串和/或不確定性隨機位流或串的數(shù)字隨機數(shù)發(fā)生器(DRNG) 100。執(zhí)行單元152還包括DRNG單元153 (例如具有對應的微代碼),用于執(zhí)行獲取隨機數(shù)的指令(例如,RDRAND指令)或獲取隨機種子數(shù)的指令(例如,RESEED指令)。在一個實施例中,DRNG100包括確定性隨機位發(fā)生器(DRBG)和不確定性隨機位發(fā)生器(NRBG),它們將在下文進一步詳細地描述。
[0029]圖1B是根據(jù)本發(fā)明的一些實施例的硬件隨機數(shù)發(fā)生器100的實施例的框圖。參考圖1B,數(shù)字隨機數(shù)發(fā)生器(DRNG) 100包括具有至少三個階段(子單元或模塊)的邏輯上異步的流水線。在一個實施例中,參考圖1B,該至少三個階段包括:(I)熵源102; (2)熵確認104 ;以及(3)組合調(diào)節(jié)器、確定性隨機位發(fā)生器(DRBG)以及不確定性隨機位發(fā)生器(NRBG) 106。注意,組合調(diào)節(jié)器、DRBG以及NRBG106可以在各分開的模塊中實現(xiàn),諸如舉例而言彼此通信耦合的調(diào)節(jié)器邏輯、DRBG邏輯以及NRBG邏輯。
[0030]熵是隨機性的度量,隨機性即系統(tǒng)中無序性或不確定性的程度。一組位的隨機性的度量是下一組位的不可預測性的度量。在圖1B所示的數(shù)字隨機數(shù)發(fā)生器100中,熵從熵源模塊或邏輯102流到熵確認模塊104,并最終流到組合調(diào)節(jié)器、DRBG以及NRBG模塊106。 [0031]熵源(ES)邏輯102生成偏熵數(shù)據(jù)。該偏熵數(shù)據(jù)被輸出作為與熵源輸入時鐘109同步或由該時鐘驅(qū)動的隨機位流以及數(shù)據(jù)有效信號108,熵源輸入時鐘109可駐留在DRNG100之內(nèi)或外部。在一實施例中,熵源102所輸出的隨機位流(串行數(shù)據(jù))108具有大于諸如大約每位0.5比特的預定閾值的最小熵。
[0032]在一實施例中,熵確認模塊104將接收到的隨機位流(串行偏熵數(shù)據(jù))108并行化并確定隨機位流108在I和O的特定模式的預期到達速率方面是否符合熵源102的預定數(shù)學模型。
[0033]組合調(diào)節(jié)器、DRBG以及NRBG模塊106提供來自從熵確認模塊102接收到的隨機位流108的全熵數(shù)據(jù)。組合調(diào)節(jié)器、DRBG以及NRBG模塊106 (在本文統(tǒng)稱為隨機位發(fā)生器或RBG)使用預定算法來根據(jù)種子所確定的初始值產(chǎn)生位序列,種子是根據(jù)RBG模塊106的熵輸入來確定的。本文所稱的算法是指定數(shù)學計算過程,即一組規(guī)則(如果遵行的話)將產(chǎn)生規(guī)定或定義的結(jié)果。種子是用作RBG模塊106的輸入的位串。種子確定DRNG100的內(nèi)部狀態(tài)的一部分,并且它的熵足以支持DRNG100的安全強度。
[0034]組合調(diào)節(jié)器、DRBG以及NRBG模塊106包括根據(jù)本發(fā)明的一些實施例的NRBG模塊和DRBG模塊。在一實施例中,NRBG是基本上順從NIST SP800-90B和SP800-90C的增強的不確定性隨機數(shù)發(fā)生器(ENRNG)。基于NRBG對NISTSP800-90B和SP800-90C的遵從,任意種子序列可按任意次序來彼此附加以形成任意長度的位串,其中所得的位串具有所需的抗預測屬性以滿足任意寬度的DRBG的(重新)播種需求(例如,如支持NIST SP800-90A DRBG所需要的)。DRNG100 (可重用單元)可被嵌入在硅產(chǎn)品中,如圖5所示。
[0035]在一實施例中,DRNG100包括內(nèi)建自測(BIST)單元(模塊)111。BIST模塊111在上電復位之后使用以提供對熵確認模塊104和組合調(diào)節(jié)器、DRBG以及NRBG模塊106的全面測試覆蓋并對熵源102執(zhí)行健康測試。在一實施例中,全面測試覆蓋是使用BIST已知答案測試來執(zhí)行的。另外,BIST單元執(zhí)行用于制造測試的簽名分析。
[0036]在一實施例中,熵源102從熱噪聲(也稱為約翰遜噪聲或奈奎斯特噪聲)中導出熵位流,熱噪聲是電子電路的自然發(fā)生特性并且是由導電材料中電子的隨機熱運動造成的。在一個實施例中,熵源102使用熱噪聲來生成隨機位流。
[0037]在一個實施例中,RBG模塊106被配置成基于從熵確認模塊104和/或熵源102接收到的熵數(shù)據(jù)110生成DRBG數(shù)據(jù)112和NRBG數(shù)據(jù)122。根據(jù)一個實施例,RBG模塊106包括基于已由RBG模塊106的調(diào)節(jié)器調(diào)節(jié)的熵數(shù)據(jù)生成DRBG數(shù)據(jù)112的DRBG模塊。DRBG數(shù)據(jù)112可被存儲在DRBG緩沖區(qū)中,這可隨后響應于處理器接收到的指令(諸如舉例而言RDRAND指令)來檢索。在另一實施例中,RBG模塊106還包括基于經(jīng)調(diào)節(jié)的熵數(shù)據(jù)和DRBG數(shù)據(jù)112來生成NRBG數(shù)據(jù)122的NRBG模塊。NRBG數(shù)據(jù)122可被存儲在NRBG緩沖區(qū)中,這可隨后響應于處理器接收到的指令(諸如舉例而言RDSEED指令)來檢索。
[0038]圖2是圖1B示出的熵確認模塊104的實施例的框圖。根據(jù)一個實施例,熵確認模塊104基于熵源模型(例如,數(shù)學模型)動態(tài)地測量熵源生成“原始”熵樣本與預期到達速率/所選模式的分布的“擬合度”。在這一實施例中,熵確認模塊104包括串行到并行轉(zhuǎn)換器模塊200、健康檢測模塊202以及控制流轉(zhuǎn)移模塊204。
[0039]在一個實施例中,串行到并行轉(zhuǎn)換器模塊200從熵源102(圖1B)接收隨機位流108并將該流轉(zhuǎn)換成一個或 多個8位塊(字節(jié)),這些8位塊隨后再次被轉(zhuǎn)換成更大的塊,例如128位(16字節(jié))塊、256位(32字節(jié))塊或其他大小的塊。
[0040]健康檢測模塊202通過執(zhí)行每樣本(在一個數(shù)據(jù)塊上)測試和統(tǒng)計以及M樣本滑動窗口測試和統(tǒng)計(在M個數(shù)據(jù)塊上),來對熵源內(nèi)部“原始”輸出執(zhí)行測試。在一實施例中,健康檢測模塊202對某些位模式的出現(xiàn)進行計數(shù),如每一數(shù)據(jù)塊(128位或256位)中六個不同的位模式,并檢查這些位模式中的每一個是否發(fā)生在統(tǒng)計界限內(nèi)。如果是,則該數(shù)據(jù)塊被認為是健康的。
[0041]例如,在一實施例中,可對數(shù)據(jù)塊檢查預定位模式的出現(xiàn)次數(shù),如4位模式“0110”。在一實施例中,如果在256位數(shù)據(jù)塊中‘0110’的出現(xiàn)次數(shù)落在預定范圍(如,3和34之間)內(nèi),則位模式‘0110’可被認為處于統(tǒng)計界限內(nèi)。這些模式的數(shù)量可被計數(shù)以改進統(tǒng)計測試的可靠性。
[0042]如果健康檢測模塊202指示該塊通過了健康檢查(經(jīng)由OK信號),則控制流轉(zhuǎn)移模塊204準許將該數(shù)據(jù)塊110轉(zhuǎn)發(fā)給組合調(diào)節(jié)器、DRBG以及NRBG模塊106 (圖1B)。在一替換實施例中,只有健康狀態(tài)指示符被轉(zhuǎn)發(fā)以供確定需要DRBG的重新播種。
[0043]圖3是圖1B示出的組合調(diào)節(jié)器、DRBG以及NRBG模塊106的實施例的框圖。組合調(diào)節(jié)器、DRBG以及NRBG模塊106包括接收來自熵確認模塊104和/或熵源102的輸出的調(diào)節(jié)器300。調(diào)節(jié)器300對接收到的熵確認模塊104輸出執(zhí)行“熵提取”和“熵壓縮”并向DRNG100提供熵種流。在一個實施例中,調(diào)節(jié)器300耦合到經(jīng)調(diào)節(jié)的熵緩沖區(qū)302,經(jīng)調(diào)節(jié)的熵緩沖區(qū)302存儲供DRBG304使用的熵種流。[0044]在一個實施例中,模塊106包括用于基于由調(diào)節(jié)器300調(diào)節(jié)并儲存在條件熵緩沖區(qū)302中的經(jīng)調(diào)節(jié)的熵數(shù)據(jù)來生成DRBG數(shù)據(jù)的DRBG模塊304。DRBG數(shù)據(jù)隨后被存儲在DRBG緩沖區(qū)306中,它隨后可由處理器響應于諸如舉例而言RDRAND指令的指令來檢索。
[0045]在一個實施例中,組合調(diào)節(jié)器、DRBG以及NRBG模塊106包括包含XOR (異或)邏輯308和NRBG緩沖區(qū)310 (它可例如是先進先出(FIFO)緩沖區(qū))的NRBG模塊。NRBG FIFO的輸出提供了 NRBG數(shù)據(jù)122。XOR邏輯308耦合到經(jīng)調(diào)節(jié)的熵緩沖區(qū)302的輸出和DRBG304的輸入。XOR邏輯308的輸出耦合到NRBG FIF0310的輸入。儲存在NRBG緩沖區(qū)310中的NRBG數(shù)據(jù)隨后可由處理器響應于諸如舉例而言RDSEED指令的指令來檢索。
[0046]在NRBG FIF0310未充滿且因此需要填充新值時,DRNG100取得儲存在經(jīng)調(diào)節(jié)的熵緩沖區(qū)307中的種子之一以及來自DRBG輸出FIF0306的輸出,并經(jīng)由XOR邏輯308對它們執(zhí)行XOR操作。DRNG100將XOR操作的結(jié)果儲存在NRBG FIF0310中。經(jīng)調(diào)節(jié)的種子可以是純熵值。對這樣的種子與來自DRBG304的輸出進行異或提供了安全網(wǎng),其中如果熵源102或調(diào)節(jié)器300的輸出由于某種瞬時誤差而暫時偏離純隨機性,則DRNG100確保從NRBG FIFO輸出的NRBG數(shù)據(jù)的質(zhì)量不能落在DRBG的輸出質(zhì)量之下。這與SP800-90C的要求一致。
[0047]在一實施例中,NRBG輸出接 口用與DRBG接口相同的信令協(xié)議被添加到DRNG100,以提供對NRBG輸出數(shù)據(jù)310的外部訪問。在一個實施例中,經(jīng)由可通過DRNG和消費者(例如,英特爾片上系統(tǒng)構(gòu)造(IOSF))之間的總線結(jié)構(gòu)訪問的64位數(shù)據(jù)寄存器來使得NRBG輸出數(shù)據(jù)301對消費者可用。這一寄存器的值源自DRNG100,經(jīng)由NRBG接口到達NRBGFIF0310。
[0048]順從NIST SP800-90B和SP800-90C的NRBG功能和它周圍的FIPS邊界的組合支持DRNG100的擴展“白盒”驗證(例如,經(jīng)由FIPS PUB140-2)?!癋IPS邊界”是硬件實施的一組互鎖,在有效時,該組互鎖排除對DRNG的內(nèi)部狀態(tài)(例如,寄存器內(nèi)容或狀態(tài)機400值)的任何外部訪問(例如,經(jīng)由通過外部總線的讀/寫)。“FIPS邊界”可經(jīng)由外部硬件融合狀態(tài)來被迫使生效。
[0049]圖4是圖3示出的確定性隨機數(shù)發(fā)生器304的實施例的框圖。確定性隨機數(shù)發(fā)生器包括狀態(tài)機400、高級加密標準(AES)模塊402、輸出緩沖區(qū)306以及經(jīng)調(diào)節(jié)的熵(CE)緩沖區(qū)302。狀態(tài)機中的狀態(tài)包括重新播種、生成、以及調(diào)節(jié)。在生成狀態(tài),AES功能被用來使用動態(tài)隨機位發(fā)生器的當前內(nèi)部狀態(tài)來生成輸出,并且新內(nèi)部狀態(tài)被生成以用于下一請求。在重新播種功能,新熵輸入被獲取并與當前內(nèi)部狀態(tài)相組合以創(chuàng)建新種子和新內(nèi)部狀態(tài)。
[0050]在一實施例中,組合調(diào)節(jié)器、DRBG以及NRBG模塊106使用AES提供全熵數(shù)據(jù)。被美國國家標準和技術研究所(NIST)發(fā)布為FIPS197的AES是可被用來加密和解密數(shù)據(jù)塊的對稱塊密碼。當在調(diào)節(jié)模式時,接收到的偏熵數(shù)據(jù)的兩個塊(128位或256位塊)被DRBG模塊104使用以提供更少數(shù)量的全熵數(shù)據(jù)。AES加密模塊402在CBC-MAC模式中用AES以來調(diào)節(jié)熵并經(jīng)由AES計數(shù)器(CTR)模式來擴展熵。
[0051]狀態(tài)機400控制狀態(tài)變量、工作變量、AES模塊以及DRBG的輸入和輸出。狀態(tài)機400包括初始化、重新播種、生成、以及調(diào)節(jié)模式。AES加密(密碼)模塊402使用秘密密鑰(密碼鑰匙)執(zhí)行一系列變換以將稱為“明文”的可理解數(shù)據(jù)變換成稱為“密文”的不可理解形式。[0052]在一實施例中,從熵確認模塊104接收到的每一個256位塊被使用AES_CBC_MAC模式構(gòu)造進行調(diào)節(jié)。提供經(jīng)調(diào)節(jié)的熵緩沖區(qū)302以用于從若干“原始”熵源樣本累積熵池,其中從該池中提取熵來為DRBG106(重新)播種(圖1B)。在一實施例中,根據(jù)從熵確認模塊104接收到的兩個256位未經(jīng)調(diào)節(jié)的樣本來生成256位“經(jīng)調(diào)節(jié)的”熵輸出樣本。256位輸出112可使用AES-CTR模式構(gòu)造來生成。
[0053]除了生成“隨機數(shù)”之外,數(shù)字隨機數(shù)發(fā)生器100是“隨機地行動”(或不確定地行動)的隨機數(shù)發(fā)生器。不確定性行為在熵源102所生成的位序列的不確定性之外增加了所輸出熵位流112的總體不可預測性。在一實施例中,數(shù)字隨機數(shù)發(fā)生器100所提供的一組不確定性行為包括時間異步性、熵源“額外”位、熵測量以及自發(fā)數(shù)字隨機數(shù)發(fā)生器重新播種。這些不確定性行為將在下文更詳細地描述。
[0054]數(shù)字隨機數(shù)發(fā)生器100的每一子單元(模塊)(即熵源模塊102,熵確認模塊104,和調(diào)節(jié)器以及組合調(diào)節(jié)器、DRBG及NRBG模塊106)彼此異步地操作。因此,數(shù)字隨機數(shù)發(fā)生器100在邏輯上是三階段/子單元(模塊)異步生產(chǎn)流水線。出于“流控制”目的,每一模塊具有該模塊與下一下游模塊之間的邏輯“輸出隊列”。因此,存在依賴上游模塊的生產(chǎn)速率和下一下游模塊的消費速率的不可預測的動態(tài)同步,即模塊之間存在時間異步性。
[0055]在一實施例中,熵源102輸出高熵輸出位流,例如每輸出位大于0.9位熵。如前所述,在數(shù)字隨機訪問發(fā)生器中,熵源相對于其他模塊異步地運行。
[0056]在一實施例中,熵源模塊102的熵源輸入時鐘109的頻率大于輸入到其他模塊的時鐘的頻率。因而,熵源模塊102可以按其他模塊(邏輯)的時鐘速率的若干倍(例如,2.5倍)來產(chǎn)生內(nèi)部熵位流。這允許通過同步機制選擇來自從熵源模塊102輸出的內(nèi)部熵位流的位子集以供使用。因而,從熵源的內(nèi)部熵位流選擇的位是不可預測的。
[0057]例如,在一個實施例中,熵源模塊102所生成的每預定位之一(例如,每三個位之一或每五個位之一)可被選擇,而丟棄(扔掉)其他(“額外”)位。在另一實施例中,對額外位執(zhí)行異或(XOR)運算并且該XOR運算的結(jié)果在所選輸出位流中轉(zhuǎn)發(fā)。因此,被選擇從熵源102轉(zhuǎn)發(fā)的位的數(shù)量依賴于數(shù)字邏輯采樣時鐘的頻率相對于熵源時鐘的頻率。
[0058]如前所述,基于熵源102的數(shù)學模型,存在著熵源模塊102所輸出的熵位流中的所選位串模式的預期發(fā)生率或分布。熵確認模塊104動態(tài)地測量熵源的熵位流以順從該模型。
[0059]使用每樣本測試/統(tǒng)計和每M樣本窗口測試/統(tǒng)計。
[0060]在一實施例中,基于每樣本測試/統(tǒng)計的熵測量是使用某些位模式來執(zhí)行的,如
1、2、3和/或4位模式,應用于移動位序列窗口來累積跨每一 256位熵源輸出樣本的發(fā)生/分布統(tǒng)計。每模式的可接受性計數(shù)/統(tǒng)計范圍是基于該數(shù)學模型從預期分布導出的并且逐樣本地持續(xù)重復。
[0061]在一實施例中,使用每M樣本窗口測試/統(tǒng)計的熵測量是使用長窗口 M(64K位=256位/樣本的256個樣本)來執(zhí)行的。該窗口在時間上動態(tài)地向后移動(最新近的M個樣本)并持續(xù)地重復(逐樣本地)。輸出良好性的測量是M個樣本中的N個樣本“通過了”每樣本測試,其中N是根據(jù)仿真和測試芯片行為通過經(jīng)驗來選擇的。
[0062] 基于所選位串模式的每樣本預期發(fā)生率或分布和N個(M個中的N個)最近“通過”樣本兩者的配置參數(shù),在調(diào)節(jié)操作之前多個樣本從熵源102轉(zhuǎn)發(fā)到確定性隨機數(shù)發(fā)生器106,并且(隨后)重新播種操作基于熵源樣本對該模型的分布曲線的動態(tài)擬合而變化。
[0063]使用同一種子生成過多輸出可提供用于預測將來輸出的充足信息。重新播種是一種獲取具有用于所需安全強度的足夠熵的附加位的方法。動態(tài)隨機位發(fā)生器106可被周期性地重新播種。因而,周期性重新播種可被用來降低安全風險。通常,種子具有有限的種子壽命,即在預定義時間段期間所產(chǎn)生的輸出的數(shù)量。
[0064]與執(zhí)行周期性重新播種形成對比,在一個實施例中,確定性隨機數(shù)發(fā)生器106只要方便時就被重新播種,而不干擾來自確定性隨機數(shù)發(fā)生器106的消費。重新播種的能力基于熵源102的相對性能優(yōu)點,即熵源102所產(chǎn)生的串行流的每秒位數(shù)。
[0065]因而,另一不確定性行為是自發(fā)DRBG重新播種。基于配置參數(shù),確定性隨機位發(fā)生器106自發(fā)地請求它被重新播種。確定性隨機位發(fā)生器106中的熵池的“新鮮度”是與確定性隨機位發(fā)生器106的輸出的熵的可能質(zhì)量有關的指示符。自發(fā)重新播種啟用是通過運行熵源102所產(chǎn)生的熵的“質(zhì)量”以及確定性隨機位發(fā)生器的熵狀態(tài)“新鮮度”的測量來控制的。熵的“新鮮度”是基于該熵的初始質(zhì)量是否未受損害的。
[0066]在AES CTR模式中,在確定性隨機位發(fā)生器106中的重新播種事件期間,儲存在經(jīng)調(diào)節(jié)的熵緩沖區(qū)605中的經(jīng)調(diào)節(jié)的熵被用在輸出生成中。在一個實施例中,每當不存在生成請求且數(shù)字隨機數(shù)發(fā)生器在“關閉自己”之前已填充所有可用存儲器(例如,外部隊列)來存儲隨機數(shù)時,就發(fā)生重新播種。在另一實施例中,在超過了關于確定性隨機位發(fā)生器106所生成的熵“陳舊度”的基于計數(shù)的限制時并且給定調(diào)節(jié)器保證如果其輸入具有>0.5位/位熵則用于重新播種確定性隨機位發(fā)生器106的調(diào)節(jié)器輸出是1.0位/位熵時,就發(fā)生重新播種。
[0067]在被調(diào)用時, 響應于“(重新)播種”請求,確定性隨機位發(fā)生器106中的狀態(tài)機進入重新播種狀態(tài)。在重新播種狀態(tài),執(zhí)行自發(fā)重新播種啟用準則測試。這些測試包括將通過熵源測量測試的兩個熵源樣本(512位)成功傳遞至調(diào)節(jié)器,將M個質(zhì)量準則中的N個成功應用于每一樣本以對它和熵源的長期/最近狀態(tài)進行限定,以及累積調(diào)節(jié)器中不合格的ES輸出(在合格的ES輸出之前或之后)(而不管熵源測量狀態(tài))。在兩個合格的ES樣本(512位)已成功傳遞至調(diào)節(jié)器之后,來自確定性隨機位發(fā)生器106的“(重新)播種”(需要256位)請求被該調(diào)節(jié)器滿足。
[0068]圖5是包括一個或多個核(處理器核)502、504以及圖1所示的數(shù)字隨機數(shù)發(fā)生器(DRNG) 100的處理器500的實施例的框圖。在圖5所示的實施例中,處理器核502、504中的每一個包括讀取隨機指令微代碼506、508,讀取種子指令微代碼505、507,以及隨機數(shù)發(fā)生器(RNG)微代碼(μ Code)510、512。DRNG100自動填充處理器核專用RNG隊列514、516來為核502、504的微代碼隨機數(shù)請求進行服務DRNG100中的組合調(diào)節(jié)器、DRBG以及NRBG模塊106生成被加載到RNG隊列514、516中的最終隨機數(shù)。
[0069]在一實施例中,可使用各種NIST批準算法(例如,AES、SHA_256)來實現(xiàn)DRBG。在一實施例中,DRBG是順從NIST SP800-90A的確定性隨機數(shù)發(fā)生器(DRBG)。在一實施例中,NRBG是順從NIST SP800-90B和SP800-90C的增強的不確定性隨機數(shù)發(fā)生器(ENRNG)。
[0070]在另一實施例中,可存在一個以上DRNG100來達到不同的功率或性能要求,例如代替由一個或多個處理器核502、504共享一個DRNG100,可以每處理器核502、504存在一個DRNG100同樣,RNG隊列514、516的深度可以變化以達到不同的功率或性能要求。[0071]在另一實施例中,RNG排隊機制可以在DRNG的輸出處的共享隊列和處理器核專用RNG隊列514、516之間拆分,以達到不同的功率或性能要求。在又一實施例中,代替具有每核一個核專用RNG隊列514、516,可以存在由各處理器核502、504共享的單個RNG隊列。
[0072]從功率管理的觀點看,DRNG100和RNG隊列514、516在處理器核功率阱的外部,即在一個或多個處理器核502、504共享的邏輯中。因此,對處理器核功率管理操作沒有影響。熵可以是“提前計算的”并且被存儲以供稍后消費。因而,當在RNG隊列514、516中已經(jīng)存儲了足夠的隨機數(shù)時,DRNG100可通過關閉時鐘來自動“關閉自己”以節(jié)省功率。
[0073]如果RNG隊列514、516全滿,則在DRNG100的時鐘仍然被提供給RNG隊列514、516時該時鐘可被關閉,以允許RNG隊列514、516響應于微代碼請求來提供隨機數(shù)據(jù)。在檢測到RNG隊列514、516存儲了小于閾值量的隨機數(shù)據(jù)時,該時鐘可被提供給DRNG106以使得DRNG106可向RNG隊列514、516提供隨機數(shù)據(jù)。在所有RNG隊列514、516滿時,DRNG100的時鐘可再次被關閉。
[0074]此外,如果處理器核502、504處于低功率(睡眠)模式并隨后返回全功率模式,則處理器核502、504沒有附加等待時間來從RNG隊列514、516接收隨機數(shù)據(jù),因為在處理器核502、504處于睡眠模式時時鐘繼續(xù)被提供給RNG隊列514、516。
[0075]在圖5所示的實施例中,確定性隨機數(shù)發(fā)生器100是共享資源,因為它由多個處理器核502、504共享。除了由多個處理器核502、504共享之外,確定性隨機數(shù)發(fā)生器100在每處理器核502、504的多個硬件線程之間共享,在系統(tǒng)中的多個虛擬機之間共享,在跨多個虛擬機的多個操作系統(tǒng)之間共享,以及在每操作系統(tǒng)的多個應用之間共享。
[0076]另一不確定性行為是來自共享資源的消費。消費者(例如,應用程序或線程)的異步行為和動態(tài)消費速率使得哪一消費者將從確定性隨機數(shù)發(fā)生器100的輸出流中得到哪一樣本是不可動態(tài)地預測的,并且添加了對任何單個消費者針對來自確定性隨機數(shù)發(fā)生器100的輸出序列的可視性的破壞。
[0077]若干基于消費的因素可以生成不同的異步遞送模式,例如用于避免的多個消費者的基于拒絕服務(DOS)的“餓死”的消費“公平性”保證;確定性隨機數(shù)發(fā)生器100和消費者之間的多個隊列,尤其是在深度大于I以及熵消費的寬度(例如,32或64位)的情況下,從128位確定性隨機數(shù)發(fā)生器100的單個輸出進行遞增消費時。
[0078]基于消費的因素還可影響確定性隨機位發(fā)生器的“重新播種速度”,因為重新播種觸發(fā)器之一是確定性隨機數(shù)發(fā)生器100 “靜止”,動態(tài)共享消費的暫時喪失造成確定性隨機數(shù)發(fā)生器100輸出的序列中的突然不可預測的變化。
[0079]這些不確定性行為的動態(tài)組合使得即使在知曉確定性隨機數(shù)發(fā)生器100的內(nèi)部狀態(tài)的一個或多個項的情況下也不可能允許成功預測DRNG100的將來輸出。
[0080]在一實施例中,提供可由需要順從標準的NRBG/TRNG生成熵來作為它們的軟件或硬件DRBG/PRNG的種子的操作系統(tǒng)供應商(OSV)和獨立軟件供應商(ISV)使用的宏指令(RDSEED指令)。用于讀取種子宏指令的讀取種子指令微代碼705、707被存儲在核702、704中。
[0081]在一個實施例中,讀取種子值的宏指令句法被如下定義:
[0082]RDSEED rl6/32/64
[0083]其中‘r32/64’指定其中存儲來自DRNG100的種子輸出的目的地寄存器。種子數(shù)據(jù)的大小(位數(shù))依賴于目的地寄存器大小(例如,16位、32位、64位或其他大小)。在一個實施例中,諸如算術進位標志等標志可被用來存儲指示儲存在目的地寄存器中的隨機位串是否有效的值。例如,算術進位標志的狀態(tài)指示儲存在目的地寄存器中的值是否是熵,即在RDSEED指令被執(zhí)行時RNG隊列中是否存在可用的隨機數(shù)據(jù)。在一實施例中,如果熵不可用則算術標志位是零。在一實施例中,RDSEED宏指令可供用在處理器500的所有特權(quán)級別和所有操作模式中。
[0084]在一實施例中,提供可由密碼協(xié)議使用以獲得DRNG100所生成的隨機數(shù)的宏指令(RDRAND指令)。隨機數(shù)可被用來生成公鑰/私鑰對。用于讀取隨機宏指令的讀取隨機指令微代碼506、508被存儲在核502、504中。
[0085]在一個實施例中,讀取隨機數(shù)的宏指令句法被如下定義:
[0086]RDRAND rl6/32/64
[0087]其中‘rl6/32/64’指定其中存儲來自DRNG100的隨機數(shù)據(jù)輸出的目的地寄存器。隨機數(shù)據(jù)的大小(位數(shù))依賴于目的地寄存器大小(例如,16位、32位、64位或其他大小)。
[0088]在一個實施例中,諸如算術進位標志等標志可被用來存儲指示儲存在目的地寄存器中的隨機位串是否有效的值。例如,算術進位標志的狀態(tài)指示儲存在目的地寄存器中的值是否是熵,即在RDRAND指令被執(zhí)行時RNG隊列中是否存在可用的隨機數(shù)據(jù)。如果當前沒有熵可用,則可使用預定義機制來重試RDRAND,直至熵變得可用。 [0089]與每一操作系統(tǒng)和安全相關應用必須單獨地創(chuàng)建隨機數(shù)的源相比,RDRAND宏指令的可用性通過提供單個指令以獲得隨機數(shù)而改進了操作系統(tǒng)和安全相關應用的性能。在一實施例中,RDRAND宏指令可供用在處理器500的所有特權(quán)級別和所有操作模式中。DRNG100還提供隨機數(shù)以供內(nèi)部微代碼(μ Code)功能使用,例如使用隨機數(shù)的微代碼功能。
[0090]在一實施例中,DRNG (NRBG和DRBG及它們的狀態(tài))被保護免受軟件攻擊跨系統(tǒng)中的“η”個處理器核、線程、虛擬機(VM)以及應用來共享的資源。數(shù)字隨機數(shù)發(fā)生器在多重消費者負載功率管理下伸縮并且具有自調(diào)度、提前計算、低等待時間、消費驅(qū)動的、排隊的接口。
[0091]圖6是根據(jù)一個實施例的示出處理指令以獲得隨機位串的方法的流程圖。方法600可以通過圖5的處理器500來執(zhí)行。參考圖6,在框601,處理器接收用于獲得確定性隨機值(例如,隨機數(shù))或不確定性隨機值(例如,種子)的指令(例如,RDSEED或RDRAND)。在框602,響應于該指令,處理器從該處理器內(nèi)的DRNG所生成的隨機位串池(例如,DRBG或NRBG輸出緩沖區(qū))中檢索隨機位串。在框603,檢索到的隨機位串被儲存在該指令所指定的目的地寄存器中。在框604,可任選地,更新標志以指示儲存在目的地寄存器中的隨機位串是否有效。
[0092]圖7是根據(jù)一個實施例的示出生成隨機位串的方法的流程圖。方法700可以通過圖5的處理器500來執(zhí)行。方法700可以相關于方法600獨立地執(zhí)行。參考圖7,在框701,調(diào)節(jié)器對熵源所提供的熵執(zhí)行調(diào)節(jié)操作以生成經(jīng)調(diào)節(jié)的熵數(shù)據(jù)。在框702,DRBG邏輯基于經(jīng)調(diào)節(jié)的熵數(shù)據(jù)來生成DRBG數(shù)據(jù)。在框703,NRBG邏輯基于DRBG數(shù)據(jù)和經(jīng)調(diào)節(jié)的熵數(shù)據(jù)來生成NRBG數(shù)據(jù)。在一個實施例中,NRBG數(shù)據(jù)是通過將DRBG數(shù)據(jù)和經(jīng)調(diào)節(jié)的熵數(shù)據(jù)進行異或來生成的。在框704,NRBG數(shù)據(jù)隨后被儲存在緩沖區(qū)(例如,圖3的NRBG FIF0310)中以便可經(jīng)由指令(例如,RDSEED)進行檢索。[0093]圖8是示出了根據(jù)本發(fā)明的一實施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。系統(tǒng)900可以表不上文所描述的系統(tǒng)中的任何一個。例如,處理器901可以表不圖5的處理器500。系統(tǒng)900可以表示臺式機、膝上型計算機、平板電腦、服務器、移動電話(例如,智能電話)、媒體播放器、個人數(shù)字助理(PDA)、個人通信器、游戲設備、網(wǎng)絡路由器或中樞、無線接入點或中繼器、機頂盒或其組合。請注意,盡管圖8示出了數(shù)據(jù)處理系統(tǒng)的各種組件,但是,并不旨在表示互連這些組件的任何特定體系結(jié)構(gòu)或方式;因為這樣的細節(jié)不是與本發(fā)明的各實施例有密切關系的。還可以理解,也可以與本發(fā)明的各實施例一起使用具有少一些的組件或也許多一些的組件的網(wǎng)絡計算機、手持式計算機、移動電話及其他數(shù)據(jù)處理系統(tǒng)。
[0094]參考圖8,在一個實施例中,系統(tǒng)900包括處理器901,以及通過總線或互連將各種組件(包括存儲器905以及設備903-904)耦合到處理器901的芯片組902。處理器901可以表示帶有單一處理器核或多個處理器核909的單一處理器或多個處理器。處理器901可以表示一個或多個通用處理器,諸如微處理器、中央處理單元(CPU)等等。更具體而言,處理器901可以是復雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、或?qū)崿F(xiàn)其他指令集的處理器、或?qū)崿F(xiàn)指令集的組合的處理器。處理器901還可以是一個或多個專用的處理器,諸如專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、數(shù)字信號處理器(DSP)、網(wǎng)絡處理器、圖形處理器、網(wǎng)絡處理器、通信處理器、密碼處理器、協(xié)處理器、嵌入式處理器,或能夠處理指令的任何其他類型的邏輯。例如,處理器901可以是位于加利福尼亞州圣克拉拉的英特爾公司所提供的Pentium? 4、Pentium?、Dual-Core> Core? 2Duo and Quad、Xeon?、Itanium?、XScale?、Core? i7、Core? i5、Celeron?或StrongARM?微處理器。處理器901被配置成執(zhí)行用于執(zhí)行此處所討論的操作和步驟的指令。
[0095]處理器90 1可以包括可以接收和解碼各種指令的指令解碼器。解碼器可以生成并輸出一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號,它們反映、或來源于原始輸入指令。解碼器可以使用各種不同的機制來實現(xiàn)。合適的機制的示例包括,但不僅限于,微代碼只讀存儲器(ROM)、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、等等。
[0096]解碼器可以不是處理器901的必需的組件。在一個或多個其他實施例中,處理器901可以相反具有指令仿真器、指令轉(zhuǎn)換器、指令變形器、指令解釋器,或其他指令轉(zhuǎn)換邏輯。各種不同類型的指令仿真器、指令變形器、指令轉(zhuǎn)換器等等是已知的。指令轉(zhuǎn)換邏輯可以接收比特范圍隔離指令,模仿、轉(zhuǎn)換、變形、解釋,或以別的方式轉(zhuǎn)換比特范圍隔離指令,并輸出對應于原始比特范圍隔離指令的一個或多個指令或控制信號。指令轉(zhuǎn)換邏輯可以以軟件、硬件、固件或其組合來實現(xiàn)。在某些情況下,指令轉(zhuǎn)換邏輯中的某些或全部可以位于晶片外,與指令處理設備其余部分一起,諸如單獨的管芯或在系統(tǒng)存儲器中。在某些情況下,指令處理設備可以具有解碼器和指令轉(zhuǎn)換邏輯。
[0097]處理器901和/或核909還可以包括與解碼器的輸出耦合,或以別的方式與解碼器的輸出進行通信的一個或多個執(zhí)行單元。術語"耦合"可以表示,兩個或更多元件直接電接觸或連接。然而,〃耦合"還可以表示,兩個或更多元件不彼此直接連接,但是,仍合作或相互進行交互或通信(例如,通過中間組件)。作為一個示例,解碼器和執(zhí)行單元可以通過中間可選緩沖器或本領域已知可能耦合在解碼器和執(zhí)行單元之間的其他組件彼此耦合。處理器901和/或核909還可以包括多種不同類型的執(zhí)行單元,諸如,例如,算術單元、算術邏輯單元(ALU)、整型單元等等。
[0098]處理器901還可以包括一個或多個寄存器文件,包括,但不僅限于,整數(shù)寄存器、浮點寄存器、矢量或擴展寄存器、狀態(tài)寄存器,以及指令指針寄存器等等。此處使用術語〃寄存器〃來指被用作標識操作數(shù)的宏指令的一部分的板上的處理器存儲位置。換言之,此處引用的寄存器是從處理器外部可見的那些寄存器(從編程器的角度來看)。然而,寄存器在含義上不應該限于特定類型的電路。相反,寄存器只需能夠存儲和提供數(shù)據(jù)并執(zhí)行此處所描述的功能。此處所描述的寄存器可以通過處理器內(nèi)的電路使用任意數(shù)量的不同的技術來實現(xiàn),諸如專用物理寄存器、使用寄存器重命名的動態(tài)地分配的物理寄存器、專用和動態(tài)地分配的物理寄存器的組合等等。在一個實施例中,整數(shù)寄存器存儲32比特或64比特整型數(shù)據(jù)。寄存器文件可以包含用于封包的數(shù)據(jù)的擴展的多媒體SIMD寄存器(例如,XMM)。這樣的寄存器可以包括涉 及SSE2、SSE3、SSE4、GSSE或以外的(一般地稱為〃SSEx〃)技術的128比特寬的XMM寄存器和256比特寬的寄存器(可以包括低階比特的XMM寄存器)來保存這樣的打包數(shù)據(jù)操作數(shù)。
[0099]處理器901和/或核909還可以可任選地包括一個或多個其他已知的組件。例如,處理器901可以可任選地包括指令獲取邏輯、預先解碼邏輯、調(diào)度邏輯、重新排序緩沖器、分叉預測邏輯、引退邏輯、寄存器重命名邏輯等等,或其某些組合。這些組件可以按常規(guī)方式實現(xiàn),或基于本發(fā)明利用對所屬領域的技術人員顯而易見的是小的修改。為了理解此處的實施例,不需要這些組件的進一步的描述,雖然進一步的描述輕松地獲得,在需要時,在公開文獻中。有已知的這樣的組件的很多不同的組合和配置。范圍不僅限于任何已知的這樣的組合或配置。實施例可以有或者沒有這樣的額外的組件地實現(xiàn)。
[0100]芯片組902可以包括存儲器控制中樞(MCH)910和輸入輸出控制中樞(ICH)911。MCH910可以包括與存儲器905進行通信的存儲器控制器(未示出)。MCH910還可以包括與圖形設備912進行通信的圖形接口。在本發(fā)明的一個實施例中,圖形接口可以通過加速圖形端口(AGP)、外圍組件互連(PCI)Express總線或其他類型的互連,與圖形設備912進行通信。ICH911可以提供到諸如設備903-904之類的I/O設備的接口。設備903-904中的任何一個都可以是存儲設備(例如,硬盤驅(qū)動器、閃存設備)、通用串行總線(USB)端口、鍵盤、鼠標、并行端口、串行端口、打印機、網(wǎng)絡接口(有線或無線)、無線收發(fā)器(例如,WiF1、藍牙,或蜂窩收發(fā)器)、媒體設備(例如,音頻/視頻編解碼器或控制器)、總線橋接器(例如,PC1-PCI橋接器),或其組合。
[0101]MCH910有時被稱為北橋,而ICH911有時被稱為南橋,雖然有些人在它們之間作出技術的區(qū)別。如此處所使用的,術語〃MCH〃、〃ICH〃、〃北橋〃、〃南橋〃從廣義上來解釋以涵蓋其功能包括向處理器傳遞中斷信號的各種芯片。在某些實施例中,MCH910可以與處理器901集成。在這樣的配置中,芯片組902作為執(zhí)行MCH910和ICH911的某些功能的接口芯片來操作,如圖9所示。此外,圖形加速器912還可以集成在MCH910或處理器901內(nèi)。
[0102]存儲器905可以存儲包括由處理器901或任何其他設備執(zhí)行的指令序列的數(shù)據(jù)。例如,各種操作系統(tǒng)、設備驅(qū)動程序、固件(例如,輸入輸出基本系統(tǒng)或BIOS),和/或應用程序的可執(zhí)行代碼913和/或數(shù)據(jù)914可以加載到存儲器905中,并由處理器901執(zhí)行。操作系統(tǒng)可以是任何類型的操作系統(tǒng),諸如,例如,來自Microsoft?的Windows⑧操作系統(tǒng)、來自蘋果公司的 Mac OS? / iOS<?、來自 Google? 的 Android?、Linux?^ Unix?或其
他實時操作系統(tǒng)。在一個實施例中,存儲器905可以包括一個或多個易失性存儲設備,諸如隨機存取存儲器(RAM)、動態(tài)RAM (DRAM)、同步DRAM (SDRAM)、靜態(tài)RAM (SRAM),或其他類型的存儲設備。還可以使用非易失性存儲器,諸如硬盤或閃存存儲設備。前端總線(FSB)906可以是多點分支或點對點互連。術語"FSB〃旨在覆蓋到處理器901的各種類型的互連。芯片組902可以通過點對點接口來與諸如設備903-904之類的其他設備進行通信??偩€906可以實現(xiàn)為各種總線或互連,諸如,例如,快速路徑互連(QPI)、超傳輸互連,或與諸如AMBA高性能總線(AHB)之類的高級微控制器總線體系結(jié)構(gòu)(AMBA)兼容的總線。
[0103]緩存908可以是任何類型的處理器緩存,諸如級別I (LI)緩存、L2緩存、L3緩存、L4緩存、最后一個級別緩存(LLC),或其組合。緩存908可以被與處理器901的處理器核909共享。緩存908可以嵌入在處理器901內(nèi)和/或在處理器901外部。緩存908可以被在核909之間共享??闪磉x地,核909中的至少一個還包括嵌入在其中的其自己的本地緩存。核909中的至少一個可以使用本地緩存和與核909中的另一個共享的緩存兩者。處理器901還可以包括直接緩存訪問(DCA)邏輯,以允許諸如設備903-904之類的其他設備直接訪問緩存908。處理器901和/或芯片組902還可以包括中斷控制器,諸如高級可編程中斷控制器(APIC),以處理諸如消息中斷之類的中斷。
[0104]前面的詳細描述的某些部分以算法、和/或?qū)τ嬎銠C存儲器內(nèi)的數(shù)據(jù)位的操作的符號表示法的形式存在。這些算法描述和表示法是那些精通數(shù)據(jù)處理技術的人所使用的最有效地將他們的工作的實質(zhì)傳遞到精通技術的其他人的方式。算法,這里一般是指導致所希望的結(jié)果的操作的獨立的序列。操作是那些需要對物理量進行物理操縱的操作。
[0105]然而,應該記住,所有這些和/或類似的術語將與適當?shù)奈锢砹筷P聯(lián),僅僅是應用于這些量的方便的標記 。除非特別聲明,從上文的討論中顯而易見地看出,應該理解,在整個本說明書中,利用諸如在下面的權(quán)利要求中所闡述的術語的討論,引用了計算機系統(tǒng),和/或類似的電子計算設備的動作和/或進程,它們操縱和/或轉(zhuǎn)換表示為計算機系統(tǒng)的寄存器和存儲器內(nèi)的物理(電子)量的數(shù)據(jù),將這些數(shù)據(jù)轉(zhuǎn)換為類似地表示為計算機系統(tǒng)存儲器或寄存器和/或其他這樣的信息存儲器、傳輸和/或顯示設備內(nèi)的物理量的其他數(shù)據(jù)。
[0106]圖形所示出的技術可以使用在一個或多個電子設備上存儲和執(zhí)行的代碼和數(shù)據(jù)來實現(xiàn)。這樣的電子設備使用計算機可讀介質(zhì),諸如非瞬時的計算機可讀取的存儲介質(zhì)(例如,磁盤;光盤;隨機存取存儲器;只讀存儲器;閃存設備;相變存儲器)和瞬時的計算機可讀取的傳輸介質(zhì)(例如,電氣,光學,聲音或其他形式的傳播的信號——諸如載波,紅外信號、數(shù)字信號等等),存儲和傳遞(內(nèi)部和/或與其他電子設備,通過網(wǎng)絡)代碼和數(shù)據(jù)。
[0107]前面的圖形中所描繪的進程或方法可以通過包括硬件(例如,電路、專用邏輯等等)、固件、軟件(例如,在非瞬時的計算機可讀介質(zhì)上實現(xiàn)),或兩者的組合的處理邏輯來執(zhí)行。雖然上文是利用某些順序操作來描述進程或方法的,但是,應該理解,所描述的某些操作可以以不同的順序來執(zhí)行。此外,某些操作也可以并行地而并非按順序執(zhí)行。
[0108]在前述的說明書中,參考其特定示例性實施例描述了本發(fā)明的各實施例。顯然,在不偏離如下面的權(quán)利要求所闡述的本發(fā)明的更廣泛的精神和范圍的情況下,可以作出各種修改。相應地,說明書和附圖應被視為說明性的,而不是限制性的。
【權(quán)利要求】
1.一種處理器,包括: 數(shù)字隨機數(shù)發(fā)生器(DRNG),所述數(shù)字隨機數(shù)發(fā)生器用于調(diào)節(jié)熵源所提供的熵數(shù)據(jù)、生成多個確定性隨機位(DRB)串、以及生成多個不確定性隨機位(NRB)串;以及 耦合到所述DRNG的執(zhí)行單元,所述執(zhí)行單元響應于讀取種子值的第一指令而從所述DRNG中檢索所述NRB串之一并將該NRB串儲存在所述第一指令所指定的目的地寄存器中。
2.如權(quán)利要求1所述的處理器,其特征在于,還包括標志寄存器,所述標志寄存器用于存儲由所述執(zhí)行單元設置來指示儲存在所述目的地寄存器中的NRB串是否有效的標志。
3.如權(quán)利要求1所述的處理器,其特征在于,所述執(zhí)行單元被配置成響應于讀取隨機數(shù)的第二指令,從所述DRNG檢索所述DRB串之一并將該DRB儲存在所述第二指令所指定的目的地寄存器中。
4.如權(quán)利要求3所述的處理器,其特征在于,所述DRNG包括: 調(diào)節(jié)器,所述調(diào)節(jié)器用于調(diào)節(jié)所述熵源所提供的熵數(shù)據(jù)以生成經(jīng)調(diào)節(jié)的熵(CE)數(shù)據(jù);耦合到所述調(diào)節(jié)器的DRB發(fā)生器(DRBG),所述DRB發(fā)生器用于基于所述CE數(shù)據(jù)而生成所述DRB串;以及 耦合到所述調(diào)節(jié)器和所述DRBG的NRB發(fā)生器(NRBG),所述NRB發(fā)生器用于基于所述DRB串和所述CE數(shù)據(jù)而生成所述NRB串。
5.如權(quán)利要求4所述的處理器,其特征在于,所述NRBG包括異或(XOR)邏輯,所述異或邏輯用于對所述DRB串和所述CE數(shù)據(jù)執(zhí)行XOR運算以生成所述NRB串。
6.如權(quán)利要求4所述的處理器,其特征在于,還包括: 用于存儲所述CE數(shù)據(jù)的條件熵緩沖區(qū); 用于存儲所述DRB串的DRBG緩沖區(qū);以及 用于存儲所述NRB串的NRBG緩沖區(qū)。
7.如權(quán)利要求6所述的處理器,其特征在于,所述DRBG被配置成在儲存在所述DRBG緩沖區(qū)中的DRB串的數(shù)量落在第一預定閾值之下時自動生成更多DRB串。
8.如權(quán)利要求6所述的處理器,其特征在于,所述NRBG被配置成在儲存在所述NRBG緩沖區(qū)中的NRB串的數(shù)量落在第二預定閾值之下時自動生成更多NRB串。
9.一種方法,包括: 經(jīng)由數(shù)字隨機數(shù)發(fā)生器(DRNG)調(diào)節(jié)熵源所提供的熵數(shù)據(jù),以生成多個確定性隨機位(DRB)串、以及生成多個不確定性隨機位(NRB)串; 響應于讀取種子值的第一指令,從所述DRNG檢索NRB串之一;以及 將所述NRB串儲存在所述第一指令所指定的目的地寄存器中。
10.如權(quán)利要求8所述的方法,其特征在于,還包括在標志寄存器中存儲用于指示儲存在所述目的地寄存器中的NRB串是否有效的標志。
11.如權(quán)利要求8所述的方法,其特征在于,還包括響應于讀取隨機數(shù)的第二指令,從所述DRNG檢索所述DRB串之一并將該DRB儲存在所述第二指令所指定的目的地寄存器中。
12.如權(quán)利要求11所述的方法,其特征在于,所述DRNG包括: 調(diào)節(jié)器,所述調(diào)節(jié)器用于調(diào)節(jié)所述熵源所提供的熵數(shù)據(jù)以生成經(jīng)調(diào)節(jié)的熵(CE)數(shù)據(jù);耦合到所述調(diào)節(jié)器的DRB發(fā)生器(DRBG),所述DRB發(fā)生器用于基于所述CE數(shù)據(jù)而生成所述DRB串;以及耦合到所述調(diào)節(jié)器和所述DRBG的NRB發(fā)生器(NRBG),所述NRB發(fā)生器用于基于所述DRB串和所述CE數(shù)據(jù)而生成所述NRB串。
13.如權(quán)利要求12所述的方法,其特征在于,所述NRBG包括異或(XOR)邏輯,所述異或邏輯用于對所述DRB串和所述CE數(shù)據(jù)執(zhí)行XOR運算以生成所述NRB串。
14.如權(quán)利要求12所述的方法,其特征在于,所述DRNG還包括: 用于存儲所述CE數(shù)據(jù)的條件熵緩沖區(qū); 用于存儲所述DRB串的DRBG緩沖區(qū);以及 用于存儲所述NRB串的NRBG緩沖區(qū)。
15.如權(quán)利要求14所述的方法,其特征在于,所述DRBG被配置成在儲存在所述DRBG緩沖區(qū)中的DRB串的數(shù)量落在第一預定閾值之下時自動生成更多DRB串。
16.如權(quán)利要求14所述的方法,其特征在于,所述NRBG被配置成在儲存在所述NRBG緩沖區(qū)中的NRB串的數(shù)量落在第二預定閾值之下時自動生成更多NRB串。
17.—種系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器包括: 數(shù)字隨機數(shù)發(fā)生器(DRNG),所述數(shù)字隨機數(shù)發(fā)生器用于調(diào)節(jié)熵源所提供的熵數(shù)據(jù),以生成多個確定性隨機位(DRB)串、以及生成多個不確定性隨機位(NRB)串,以及 耦合到所述DRNG的執(zhí)行單元,所述執(zhí)行單元響應于讀取種子值的第一指令而從所述DRNG中檢索所述NRB串之一并將該NRB串儲存在所述第一指令所指定的目的地寄存器中;以及 耦合到所述互連的動態(tài)隨機存取存儲器(DRAM)。
18.如權(quán)利要求17所述的系統(tǒng),其特征在于,還包括標志寄存器,所述標志寄存器用于存儲由所述執(zhí)行單元設置來指示儲存在所述目的地寄存器中的NRB串是否有效的標志。
19.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述執(zhí)行單元被配置成響應于讀取隨機數(shù)的第二指令,從所述DRNG檢索所述DRB串之一并將該DRN串儲存在所述第二指令所指定的目的地寄存器中。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述DRNG包括: 調(diào)節(jié)器,所述調(diào)節(jié)器用于調(diào)節(jié)所述熵源所提供的熵數(shù)據(jù)以生成經(jīng)調(diào)節(jié)的熵(CE)數(shù)據(jù); 耦合到所述調(diào)節(jié)器的DRB發(fā)生器(DRBG),所述DRB發(fā)生器用于基于所述CE數(shù)據(jù)而生成所述DRB串;以及 耦合到所述調(diào)節(jié)器和所述DRBG的NRB發(fā)生器(NRBG),所述NRB發(fā)生器用于基于所述DRB串和所述CE數(shù)據(jù)而生成所述NRB串。
【文檔編號】H04L9/22GK104025501SQ201180076075
【公開日】2014年9月3日 申請日期:2011年12月29日 優(yōu)先權(quán)日:2011年12月29日
【發(fā)明者】G·W·考克斯, D·約翰斯頓, M·G·迪克森, S·A·費舍爾, J·W·布蘭德特 申請人:英特爾公司