專利名稱:使用所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值的密碼密鑰生成的制作方法
使用所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值的密碼密鑰生成技術(shù)領(lǐng)域
本公開(kāi)涉及信息處理領(lǐng)域,并且更具體來(lái)說(shuō),涉及加密信息領(lǐng)域。
技術(shù)背景
在信息處理系統(tǒng)中,可通過(guò)對(duì)保密信息進(jìn)行加密來(lái)保護(hù)它以免被發(fā)現(xiàn)。加密 算法通常使用一個(gè)或多個(gè)密碼密鑰將未加密信息(“明文”)變換成加密信息(“密 文”),如果隨后不通過(guò)使用一個(gè)或多個(gè)密碼密鑰的逆變換進(jìn)行解密,則加密信息一般沒(méi)有意義。
例如,Rivest、Shamir和Adelman開(kāi)發(fā)的公有密鑰加密算法(“RSA”)使用兩個(gè)密鑰,一個(gè)是公有密鑰而另一個(gè)是私有密鑰。可使公有密鑰公開(kāi)可用于加密信息,而 使私有密鑰保持為保密,以便用于解密采用對(duì)應(yīng)的公有密鑰進(jìn)行加密的信息。兩個(gè)密鑰 均從一對(duì)素?cái)?shù)得出。發(fā)明內(nèi)容
本發(fā)明提供了一種處理器,包括存儲(chǔ)輸入值和第一計(jì)數(shù)值的非易失性存儲(chǔ)裝 置;以及根據(jù)所存儲(chǔ)的輸入值和所存儲(chǔ)的第一計(jì)數(shù)值來(lái)生成密碼密鑰的邏輯。
本發(fā)明還提供了一種系統(tǒng),包括存儲(chǔ)輸入值和第一計(jì)數(shù)值的非易失性存儲(chǔ)裝 置;以及根據(jù)所存儲(chǔ)的輸入值和所存儲(chǔ)的第一計(jì)數(shù)值來(lái)生成密碼密鑰的處理器。
本發(fā)明還提供了一種方法,包括生成輸入值;根據(jù)所述輸入值為偽隨機(jī)數(shù)生 成器提供籽數(shù);確定來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值是否為素?cái)?shù);根據(jù)關(guān)于所述偽隨 機(jī)數(shù)生成器的輸出是否為素?cái)?shù)的確定,將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī) 數(shù)生成器的輸入;對(duì)于將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入 的次數(shù)進(jìn)行計(jì)數(shù);以及在非易失性存儲(chǔ)器中存儲(chǔ)所述輸入值和將所述偽隨機(jī)數(shù)生成器的 輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入的所述次數(shù)。
本發(fā)明還提供了一種方法,包括從非易失性存儲(chǔ)器讀取輸入值和第一計(jì)數(shù) 值;根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù);按照所述第一計(jì)數(shù)值所指明的次數(shù)將 所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入;以及根據(jù)來(lái)自所述偽隨 機(jī)數(shù)生成器的輸出值來(lái)生成密碼密鑰。
本發(fā)明還提供了一種包括指令的機(jī)器可讀介質(zhì),所述指令在被運(yùn)行時(shí)使處理系 統(tǒng)執(zhí)行下列步驟從非易失性存儲(chǔ)器讀取輸入值和第一計(jì)數(shù)值;根據(jù)所述輸入值為偽隨 機(jī)數(shù)生成器提供籽數(shù);按照所述第一計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出 反饋給所述偽隨機(jī)數(shù)生成器的輸入;以及根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成 密碼密鑰。
在附圖中,本發(fā)明是作為示例而不是限制來(lái)示出的。
圖1示出根據(jù)本發(fā)明的實(shí)施
圖2示出根據(jù)本發(fā)明的實(shí)施
圖3示出根據(jù)本發(fā)明的實(shí)施
圖4示出根據(jù)本發(fā)明的實(shí)施
圖5示出根據(jù)本發(fā)明的實(shí)施
圖6示出根據(jù)本發(fā)明的實(shí)施生成密碼密鑰的處理器。 存儲(chǔ)輸入值和計(jì)數(shù)值的邏輯。 存儲(chǔ)輸入值和計(jì)數(shù)值的方法。 生成密碼密鑰的邏輯。 生成密碼密鑰的方法。 生成密碼密鑰的系統(tǒng)。
具體實(shí)施方式
描述了用于使用所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值的密碼密鑰生成的本發(fā)明的 實(shí)施例。在本描述中,可能提出例如組件和系統(tǒng)配置等的大量具體細(xì)節(jié),以便提供對(duì)本 發(fā)明的更透徹了解。然而,本領(lǐng)域的技術(shù)人員會(huì)理解,即使沒(méi)有這類具體細(xì)節(jié),也可實(shí) 施本發(fā)明。另外,沒(méi)有詳細(xì)示出一些眾所周知的結(jié)構(gòu)、電路和其它特征,以免不必要地 使本發(fā)明難理解。
本發(fā)明的實(shí)施例的元件可通過(guò)硬件、軟件、固件或者硬件、軟件或固件的任何 組合來(lái)實(shí)現(xiàn)。術(shù)語(yǔ)“硬件” 一般指的是具有例如電子、電磁、光、光電、機(jī)械、機(jī)電部 件等物理結(jié)構(gòu)的元件。術(shù)語(yǔ)“軟件” 一般指的是邏輯結(jié)構(gòu)、方法、過(guò)程、程序、例程、 進(jìn)程、算法、公式、表達(dá)式等等。術(shù)語(yǔ)“固件” 一般指的是在硬件結(jié)構(gòu)(例如閃速存儲(chǔ) 器或只讀存儲(chǔ)器)中實(shí)現(xiàn)或包含的邏輯結(jié)構(gòu)、方法、過(guò)程、程序、例程、進(jìn)程、算法、 公式或表達(dá)式。固件的示例是微碼、可寫(xiě)控制存儲(chǔ)、微編程結(jié)構(gòu)和處理器抽象層。
如背景技術(shù)部分中所述,信息處理系統(tǒng)可使用一個(gè)或多個(gè)密碼密鑰對(duì)信息進(jìn)行 加密和解密。可能希望將這些密鑰存儲(chǔ)在信息處理系統(tǒng)之內(nèi)或者信息處理系統(tǒng)另外可訪 問(wèn)的非易失性存儲(chǔ)裝置(storage)中,使得相同的密鑰可由同一個(gè)系統(tǒng)在系統(tǒng)斷電之前和 之后使用。但是,不同的系統(tǒng)可能使用不同的密鑰,并且以不同方式制作(例如使用光 掩模技術(shù))不同系統(tǒng)的單獨(dú)組件可能在經(jīng)濟(jì)上不是可行的。不同系統(tǒng)特有(unique to)的 信息可使用半導(dǎo)體熔絲或電編程技術(shù)來(lái)存儲(chǔ),但是大密鑰(例如2048位RSA密鑰對(duì))的 存儲(chǔ)可能顯著增加每個(gè)系統(tǒng)的成本。因此,可能希望信息處理系統(tǒng)具有重新生成一個(gè)或 多個(gè)唯一(unique)密碼密鑰的能力。本發(fā)明的實(shí)施例可用于提供那種能力。
圖1示出根據(jù)本發(fā)明的實(shí)施例的處理器100。處理器100可以是任何類型的處理 器,包括通用微處理器,例如Intel Pentium :處理器系列、Itanium 處理器系列、 或者來(lái)自Intel 公司的其它處理器系列的處理器、或者來(lái)自另一個(gè)公司的另一種處理器 或者專用處理器或微控制器。處理器100可包括任何組合的多個(gè)線程和多個(gè)執(zhí)行核心。 處理器100包括指令邏輯110、執(zhí)行邏輯120、控制邏輯130和存儲(chǔ)區(qū)140。處理器100 還可包括圖1未示出的任何其它電路、結(jié)構(gòu)或邏輯。
指令邏輯110將接收指令。這些指令的一個(gè)或多個(gè)可以是按照任何已知加密算 法對(duì)信息進(jìn)行加密或解密的指令,或者是可用于按照任何已知加密算法對(duì)信息進(jìn)行加密 或解密的一系列指令中的指令。指令邏輯110可包括對(duì)這些指令進(jìn)行識(shí)別、解碼或者以 其它方式接收的任何電路、邏輯或其它結(jié)構(gòu)。指令邏輯110還可接收本說(shuō)明書(shū)中沒(méi)有描 述的任何其它指令。在一個(gè)實(shí)施例中,指令邏輯110可包括對(duì)指令進(jìn)行解碼的解碼邏 輯。
執(zhí)行邏輯120將響應(yīng)指令邏輯110接收對(duì)信息進(jìn)行加密或解密的一個(gè)或多個(gè)指 令,而執(zhí)行加密算法、解碼算法和/或加密算法中使用的操作的任何子集。執(zhí)行邏輯 120可包括運(yùn)行加密算法的任何電路、邏輯或其它結(jié)構(gòu),例如任何數(shù)量的算術(shù)邏輯單元、 移位器和其它結(jié)構(gòu)。執(zhí)行邏輯120的全部或者一部分可專用于按照單個(gè)標(biāo)準(zhǔn)或算法的加 密,或者可以整體、部分和/或連同其它邏輯用于支持按照一種以上標(biāo)準(zhǔn)或算法的加密 和/或支持按照這些算法的任一種的解密,和/或還可用于其它操作。執(zhí)行邏輯120還 可包括運(yùn)行除了加密算法所使用的那些指令之外的指令的任何電路、邏輯或其它結(jié)構(gòu)。
在一個(gè)實(shí)施例中,執(zhí)行邏輯120可包括密鑰生成邏輯122的全部或部分。在其 它實(shí)施例中,密鑰生成邏輯122的全部或部分可包括在執(zhí)行邏輯120外部的獨(dú)立邏輯中。 密鑰生成邏輯122可包括生成一個(gè)或多個(gè)密碼密鑰的任何電路、邏輯或其它結(jié)構(gòu)。密鑰 生成邏輯122的不同實(shí)施例如圖2和圖3所示。
控制邏輯130將使執(zhí)行邏輯120運(yùn)行指令,和/或使密鑰生成邏輯122生成一個(gè) 或多個(gè)密碼密鑰。控制邏輯130可包括任何電路、邏輯或其它結(jié)構(gòu),其中包括微碼、狀 態(tài)機(jī)邏輯、可編程邏輯或者任何其它形式的控制邏輯,它可根據(jù)指令單元110所接收的 指令向執(zhí)行邏輯120提供控制信號(hào)。控制邏輯130還可使處理器100中的任何其它電路、 邏輯或其它結(jié)構(gòu)執(zhí)行在執(zhí)行邏輯120內(nèi)沒(méi)有完全運(yùn)行的任何其它操作。例如,控制邏輯 130可使處理器100取回將要在本發(fā)明的實(shí)施例中使用的所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù) 值,如下所述。所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值可存儲(chǔ)在處理器100之內(nèi)或者處理器 100可訪問(wèn)(accessible to processor 100)的任何存儲(chǔ)區(qū)中并且從其中取回。
例如,在一個(gè)實(shí)施例中,所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值可從處理器100之 內(nèi)的存儲(chǔ)區(qū)140取回。存儲(chǔ)區(qū)140可以是處理器100內(nèi)的任何類型的存儲(chǔ)器或存儲(chǔ)元件 的存儲(chǔ)區(qū)。在一個(gè)實(shí)施例中,存儲(chǔ)區(qū)140可以是非易失性的。例如,存儲(chǔ)區(qū)140可以是 通過(guò)半導(dǎo)體熔絲技術(shù)(semiconductor fuse technology)所實(shí)現(xiàn)的可編程只讀存儲(chǔ)器。在一 個(gè)實(shí)施例中,存儲(chǔ)區(qū)140可以是安全、私有或者受到保護(hù)的,例如僅由執(zhí)行邏輯120和/ 或密鑰生成邏輯122內(nèi)的邏輯在由指令邏輯110接收到加密、解密或密鑰生成指令時(shí)根據(jù) 控制邏輯130所提供的控制信號(hào)才可訪問(wèn)。
圖2示出根據(jù)本發(fā)明的實(shí)施例的密鑰生成邏輯200。在一個(gè)實(shí)施例中,圖2中 的密鑰生成邏輯200對(duì)應(yīng)于圖1中的密鑰生成邏輯122的全部或者一部分或者密鑰生成邏 輯122的全部或者一部分和控制邏輯130的全部或者一部分的組合。在一個(gè)實(shí)施例中, 密鑰生成邏輯200將生成RSA密鑰對(duì)。
密鑰生成邏輯200可包括籽數(shù)生成器220、偽隨機(jī)數(shù)生成器230、素性測(cè)試器 (primality tester) 240,計(jì)數(shù)器250和密鑰生成器沈0。密鑰生成邏輯200可通過(guò)硬件、軟 件和固件的任何組合來(lái)實(shí)現(xiàn)。例如,籽數(shù)生成器220、偽隨機(jī)數(shù)生成器230、素性測(cè)試 器240、計(jì)數(shù)器250和密鑰生成器沈0的每個(gè)可以是硬件電路、軟件模塊或者任何其它硬 件、軟件或固件結(jié)構(gòu)。
密鑰生成邏輯200可從真隨機(jī)數(shù)生成器210或者從任何其它源接收輸入值。真 隨機(jī)數(shù)生成器210可以是生成隨機(jī)數(shù)的任何進(jìn)程或裝置。但是,本發(fā)明并不局限于這個(gè) 方面,即,本發(fā)明的實(shí)施例不要求輸入值為真隨機(jī)數(shù)。真隨機(jī)數(shù)生成器210或者密鑰生 成邏輯200的輸入值的任何其它源可包含于或者獨(dú)立于密鑰生成邏輯200。在一個(gè)實(shí)施例中,輸入值可以是256位值。
籽數(shù)生成器220將生成用于偽隨機(jī)數(shù)生成器230的籽數(shù)值。籽數(shù)生成器220可 按照任何確定性方式從單個(gè)輸入值生成一個(gè)或多個(gè)籽數(shù)值。籽數(shù)生成器220可使用例如 填充(padding)等任何方式來(lái)生成籽數(shù)值的總位數(shù),它大于輸入值中的位數(shù)。
偽隨機(jī)數(shù)生成器230將使用籽數(shù)值作為輸入值來(lái)生成偽隨機(jī)數(shù)的序列。偽隨機(jī) 數(shù)生成器230的輸出值的統(tǒng)計(jì)分布可近似為例如真隨機(jī)數(shù)生成器210等真隨機(jī)數(shù)生成器 的輸出值的統(tǒng)計(jì)分布。但是,與真隨機(jī)數(shù)生成器210不同,偽隨機(jī)數(shù)生成器230是確定 性的。給定特定輸入,偽隨機(jī)數(shù)生成器230始終生成相同的數(shù)字序列。偽隨機(jī)數(shù)生成器 230可通過(guò)軟件算法、硬件移位寄存器或者按照任何其它方式來(lái)實(shí)現(xiàn)。
素性測(cè)試器240將確定數(shù)字是否為素?cái)?shù)。給定輸入,素性測(cè)試器240按照任何 方式來(lái)確定它是否為素?cái)?shù)。計(jì)數(shù)器250將對(duì)事件的頻度進(jìn)行計(jì)數(shù)。計(jì)數(shù)器250可遞增、 遞減或者按照任何其它方式來(lái)計(jì)數(shù)。在一個(gè)實(shí)施例中,計(jì)數(shù)器250可以是16位計(jì)數(shù)器。
密鑰生成器260將生成一個(gè)或多個(gè)密碼密鑰。密鑰生成器260可按照任何方式 來(lái)生成密碼密鑰。在一個(gè)實(shí)施例中,密鑰生成器260將生成RSA密鑰對(duì)。
在一個(gè)實(shí)施例中,根據(jù)圖3的方法300所示的本發(fā)明的方法實(shí)施例,密鑰生成邏 輯200可從輸入值生成一個(gè)或多個(gè)密碼密鑰,并且將輸入值和一個(gè)或多個(gè)計(jì)數(shù)值存儲(chǔ)在 非易失性存儲(chǔ)器中。
在圖3的框310,隨機(jī)數(shù)由真隨機(jī)數(shù)生成器210來(lái)生成。在框312,隨機(jī)數(shù)用 作對(duì)密鑰生成邏輯200的輸入值。在框314,將隨機(jī)數(shù)存儲(chǔ)在非易失性存儲(chǔ)器中。在框 316,籽數(shù)生成器220根據(jù)隨機(jī)數(shù)來(lái)生成第一和第二兩個(gè)籽數(shù)值。
在框320,將計(jì)數(shù)器250清零(clear)。在框322,來(lái)自框316的第一籽數(shù)值用作 對(duì)偽隨機(jī)數(shù)生成器(PRNG) 230的輸入。
在框330,偽隨機(jī)數(shù)生成器230根據(jù)其輸入值來(lái)生成偽隨機(jī)數(shù)(PRN)。在框 332,由素性測(cè)試器240來(lái)測(cè)試在框330所生成的偽隨機(jī)數(shù)的素性。如果在框332確定 偽隨機(jī)數(shù)為素?cái)?shù),則在框360將該偽隨機(jī)數(shù)用作對(duì)密鑰生成器260的第一輸入,以及在框 334把來(lái)自計(jì)數(shù)器250的計(jì)數(shù)值作為第一計(jì)數(shù)值存儲(chǔ)在非易失性存儲(chǔ)器中。但是,如果在 框332確定偽隨機(jī)數(shù)不是素?cái)?shù),則在框336將該偽隨機(jī)數(shù)(或者它的一部分或者由它得出 的數(shù))反饋給偽隨機(jī)數(shù)生成器230的輸入,在框338使計(jì)數(shù)器250遞增(increment),以及 方法300返回到框330。
在框340,將計(jì)數(shù)器250清零。在框342,來(lái)自框316的第二籽數(shù)值用作對(duì)偽隨 機(jī)數(shù)生成器230的輸入。
在框350,偽隨機(jī)數(shù)生成器230根據(jù)其輸入值來(lái)生成偽隨機(jī)數(shù)。在框352,由素 性測(cè)試器240來(lái)測(cè)試在框350所生成的偽隨機(jī)數(shù)的素性。如果在框352確定偽隨機(jī)數(shù)為 素?cái)?shù),則在框362將該偽隨機(jī)數(shù)用作對(duì)密鑰生成器260的第二輸入,以及在框邪4把來(lái)自 計(jì)數(shù)器250的計(jì)數(shù)值存儲(chǔ)在非易失性存儲(chǔ)器中。但是,如果在框352確定偽隨機(jī)數(shù)不是 素?cái)?shù),則在框356將該偽隨機(jī)數(shù)(或者它的一部分或者由它得出的數(shù))反饋給偽隨機(jī)數(shù)生 成器230的輸入,在框358使計(jì)數(shù)器250遞增,以及方法300返回到框350。
在框360,來(lái)自框332的偽隨機(jī)素?cái)?shù)用作對(duì)密鑰生成器沈0的第一輸入。在框 362,來(lái)自框352的偽隨機(jī)素?cái)?shù)用作對(duì)密鑰生成器沈0的第二輸入。在框364,密鑰生成器使用第一輸入作為第一素?cái)?shù)以及使用第二輸入作為第二素?cái)?shù)來(lái)生成RSA密鑰對(duì)。
在框370,存儲(chǔ)輸入值以及第一和第二計(jì)數(shù)值的非易失性存儲(chǔ)器可被復(fù)制或傳遞 到另一個(gè)系統(tǒng)或者另一個(gè)系統(tǒng)的組件、如處理器或芯片組。因此,在方法300中從輸入 值所生成的相同RSA密鑰對(duì)在另一個(gè)系統(tǒng)中可按照本發(fā)明的另一個(gè)實(shí)施例重新生成。然 后,這個(gè)相同的RSA密鑰對(duì)可在這個(gè)另外的系統(tǒng)中從所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值 重復(fù)地重新生成,使得相同的RSA密鑰對(duì)可由系統(tǒng)再使用,而無(wú)需持續(xù)存儲(chǔ)RSA密鑰對(duì) 的2048位信息。在具有256位輸入值和兩個(gè)16位計(jì)數(shù)值的實(shí)施例中,而是僅持續(xù)存儲(chǔ) 勸8位信息。
在本發(fā)明的范圍之內(nèi),可按照不同順序、以省略所示框、以添加附加框或者以 重排序、省略或附加框的組合來(lái)執(zhí)行方法300。作為一個(gè)示例,框360至364可省略,因 為在創(chuàng)建計(jì)數(shù)值的系統(tǒng)內(nèi)生成或使用RSA密鑰對(duì)可能不是必要或所需的。作為另一個(gè)示 例,表示隨機(jī)數(shù)和計(jì)數(shù)值存儲(chǔ)和/或復(fù)制到非易失性存儲(chǔ)器的框314、334、3M和374可 進(jìn)行組合,使得存在對(duì)單個(gè)非易失性存儲(chǔ)器的單次寫(xiě)入。
圖4示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的密鑰生成邏輯400。在一個(gè)實(shí)施例中,圖 4中的密鑰生成邏輯400對(duì)應(yīng)于圖1中的密鑰生成邏輯122的全部或者一部分或者密鑰生 成邏輯122的全部或者一部分和控制邏輯130的全部或者一部分的組合。在一個(gè)實(shí)施例 中,密鑰生成邏輯400將生成RSA密鑰對(duì)。
密鑰生成邏輯400可包括籽數(shù)生成器420、偽隨機(jī)數(shù)生成器430、計(jì)數(shù)器450和 密鑰生成器460。密鑰生成邏輯400可通過(guò)硬件、軟件和固件的任何組合來(lái)實(shí)現(xiàn)。例如, 籽數(shù)生成器420、偽隨機(jī)數(shù)生成器430、計(jì)數(shù)器450和密鑰生成器460的每個(gè)可以是硬件 電路、軟件模塊或者任何其它硬件、軟件或固件結(jié)構(gòu)。
密鑰生成邏輯400可從非易失性存儲(chǔ)器取回或接收輸入值以及第一和第二計(jì)數(shù) 值。例如,在其中密鑰生成邏輯處于處理器100內(nèi)的實(shí)施例中,密鑰生成邏輯400可從存 儲(chǔ)區(qū)140取回或接收輸入值和計(jì)數(shù)值。根據(jù)本發(fā)明的另一個(gè)實(shí)施例、如圖3的方法300, 輸入值和計(jì)數(shù)值可能已經(jīng)存儲(chǔ)在非易失性存儲(chǔ)器中。輸入值可以是由真隨機(jī)數(shù)生成器所 生成的隨機(jī)數(shù),但在本發(fā)明的范圍之內(nèi),來(lái)自任何源的任何隨機(jī)、偽隨機(jī)或非隨機(jī)數(shù)可 用作輸入值。
籽數(shù)生成器420將生成用于偽隨機(jī)數(shù)生成器430的籽數(shù)值。籽數(shù)生成器420可 按照任何確定性方式從單個(gè)輸入值生成一個(gè)或多個(gè)籽數(shù)值。籽數(shù)生成器420可使用例如 填充等任何方式來(lái)生成籽數(shù)值的總位數(shù),它大于輸入值中的位數(shù)。
偽隨機(jī)數(shù)生成器430將使用籽數(shù)值作為輸入值來(lái)生成偽隨機(jī)數(shù)的序列。偽隨機(jī) 數(shù)生成器430的輸出值的統(tǒng)計(jì)分布可近似為例如真隨機(jī)數(shù)生成器210等真隨機(jī)數(shù)生成器 的輸出值的統(tǒng)計(jì)分布。但是,與真隨機(jī)數(shù)生成器210不同,偽隨機(jī)數(shù)生成器430是確定 性的。給定特定輸入,偽隨機(jī)數(shù)生成器430始終生成相同的數(shù)字序列。偽隨機(jī)數(shù)生成器 430可通過(guò)軟件算法、硬件移位寄存器或者按照任何其它方式來(lái)實(shí)現(xiàn)。
計(jì)數(shù)器450將對(duì)事件的頻度進(jìn)行計(jì)數(shù)。計(jì)數(shù)器450可遞增、遞減或者按照任何 其它方式來(lái)計(jì)數(shù)。
密鑰生成器460將生成一個(gè)或多個(gè)密碼密鑰。密鑰生成器460可按照任何方式 來(lái)生成密碼密鑰。在一個(gè)實(shí)施例中,密鑰生成器460將生成RSA密鑰對(duì)。8
在一個(gè)實(shí)施例中,根據(jù)圖5的方法500所示的本發(fā)明的方法實(shí)施例,密鑰生成 邏輯400可從所存儲(chǔ)的輸入值以及第一和第二所存儲(chǔ)的計(jì)數(shù)值來(lái)生成一個(gè)或多個(gè)密碼密 鑰。在圖5的實(shí)施例中,按照本發(fā)明的另一個(gè)實(shí)施例、如方法300,輸入值和計(jì)數(shù)值可能 已經(jīng)創(chuàng)建和存儲(chǔ),其中籽數(shù)生成器、偽隨機(jī)數(shù)生成器、計(jì)數(shù)器和密鑰生成器在兩個(gè)實(shí)施 例中均使用相同的確定性算法或設(shè)計(jì),使得兩個(gè)實(shí)施例對(duì)于給定輸入值所生成的RSA密 鑰是相同的。此外,必須將偽隨機(jī)數(shù)生成器的輸出反饋給偽隨機(jī)數(shù)生成器的輸入、以便 根據(jù)給定籽數(shù)值來(lái)生成素?cái)?shù)的次數(shù)在兩個(gè)實(shí)施例中是相同的。因此,圖5的實(shí)施例不要 求素性測(cè)試,因?yàn)樗鎯?chǔ)的計(jì)數(shù)值與所存儲(chǔ)的輸入值的配合使用將生成與圖3的實(shí)施例 所生成的相同素?cái)?shù)。
在圖5的框510,從非易失性存儲(chǔ)器取回或接收輸入值。在框512,從非易失性 存儲(chǔ)器取回或接收第一計(jì)數(shù)值。在框514,從非易失性存儲(chǔ)器取回或接收第二計(jì)數(shù)值。 在框516,籽數(shù)生成器420根據(jù)輸入值來(lái)生成第一和第二兩個(gè)籽數(shù)值。
在框520,將計(jì)數(shù)器450清零。在框522,來(lái)自框516的第一籽數(shù)值用作對(duì)偽隨 機(jī)數(shù)生成器430的輸入。
在框530,偽隨機(jī)數(shù)生成器430根據(jù)其輸入值來(lái)生成偽隨機(jī)數(shù)。在框532,將計(jì) 數(shù)器450的計(jì)數(shù)與第一計(jì)數(shù)值進(jìn)行比較。如果在框532確定計(jì)數(shù)器450的計(jì)數(shù)等于第一 計(jì)數(shù)值,則在框560,偽隨機(jī)數(shù)生成器430的輸出用作對(duì)密鑰生成器460的第一輸入。但 是,如果確定計(jì)數(shù)器450的計(jì)數(shù)不等于第一計(jì)數(shù)值,則在框536將偽隨機(jī)數(shù)生成器430的 輸出(或者它的一部分或者由它得出的數(shù))反饋給偽隨機(jī)數(shù)生成器430的輸入,在框538 使計(jì)數(shù)器450遞增,以及方法500返回到框530。
在框M0,將計(jì)數(shù)器450清零。在框M2,來(lái)自框516的第二籽數(shù)值用作對(duì)偽隨 機(jī)數(shù)生成器430的輸入。
在框550,偽隨機(jī)數(shù)生成器430根據(jù)其輸入值來(lái)生成偽隨機(jī)數(shù)。在框552,將計(jì) 數(shù)器450的計(jì)數(shù)與第二計(jì)數(shù)值進(jìn)行比較。如果在框552確定計(jì)數(shù)器450的計(jì)數(shù)等于第二 計(jì)數(shù)值,則在框562,偽隨機(jī)數(shù)生成器430的輸出用作對(duì)密鑰生成器460的第二輸入。但 是,如果確定計(jì)數(shù)器450的計(jì)數(shù)不等于第二計(jì)數(shù)值,則在框556將偽隨機(jī)數(shù)生成器430的 輸出(或者它的一部分或者由它得出的數(shù))反饋給偽隨機(jī)數(shù)生成器430的輸入,在框558 使計(jì)數(shù)器450遞增,以及方法500返回到框550。
在框560,來(lái)自框532的偽隨機(jī)素?cái)?shù)用作對(duì)密鑰生成器460的第一輸入。在框 562,來(lái)自框552的偽隨機(jī)素?cái)?shù)用作對(duì)密鑰生成器460的第二輸入。在框564,密鑰生成 器使用第一輸入作為第一素?cái)?shù)以及使用第二輸入作為第二素?cái)?shù)來(lái)生成RSA密鑰對(duì)。
在框570,可將在框564所生成的RSA密鑰對(duì)的公有密鑰傳送到另一個(gè)系統(tǒng)。 在框572,可從其中運(yùn)行方法500的系統(tǒng)去除電力。因此,在框564所生成的RSA密鑰 對(duì)可從易失性系統(tǒng)存儲(chǔ)器擦除。
在框580,可對(duì)其中運(yùn)行方法500的系統(tǒng)恢復(fù)電力。在框582,由其它系統(tǒng)使用 公有密鑰所加密的信息可由系統(tǒng)500接收。然后,在框584,框510至564則可重復(fù)進(jìn) 行,以便重新生成在框564所生成的相同RSA密鑰對(duì)。在框586,由其它系統(tǒng)使用公有 密鑰所加密的信息可使用私有密鑰來(lái)解密。
在本發(fā)明的范圍之內(nèi),可按照不同順序、以省略所示框、以添加附加框或者以重排序、省略或附加框的組合來(lái)執(zhí)行方法500。例如,框510至514可組合成一個(gè)操作或 者在方法500內(nèi)單獨(dú)重排序,以便在方法500內(nèi)共同地或者在不同時(shí)間單獨(dú)地(separately at different times)取回或接收輸入值以及第一和第二計(jì)數(shù)值。
圖6示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)600。系統(tǒng)600包括處理器610,其中具 有可包括設(shè)計(jì)成實(shí)現(xiàn)上述本發(fā)明的實(shí)施例的硬件和/或運(yùn)行包含(embody)上述本發(fā)明的 軟件和/或固件的通用硬件的密鑰生成邏輯612。系統(tǒng)600還可包括非易失性存儲(chǔ)裝置 620,將輸入值存儲(chǔ)在存儲(chǔ)單元(location) 622中、將第一計(jì)數(shù)值存儲(chǔ)在存儲(chǔ)單元624中以 及將第二計(jì)數(shù)值存儲(chǔ)在存儲(chǔ)單元擬6中,分別如上所述。非易失性存儲(chǔ)裝置620可以是由 處理器610可讀的任何類型的非易失性存儲(chǔ)裝置,并且可以是獨(dú)立存儲(chǔ)器組件或者可以 是具有另一個(gè)功能的組件、如芯片組內(nèi)的存儲(chǔ)裝置。系統(tǒng)600還可包括系統(tǒng)存儲(chǔ)器630, 它可以是靜態(tài)或動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器或者是處理器610可讀的任何其它類型的介質(zhì)或者 這類介質(zhì)的任何組合。處理器610、非易失性存儲(chǔ)裝置620和系統(tǒng)存儲(chǔ)器630可在系統(tǒng) 600內(nèi)按照任何方式、例如通過(guò)一個(gè)或多個(gè)總線、點(diǎn)對(duì)點(diǎn)或其它有線或無(wú)線連接直接地或 者間接地相互耦合或者通信。
如上所述,本發(fā)明的實(shí)施例或者實(shí)施例的部分可存儲(chǔ)在任何形式的機(jī)器可讀介 質(zhì)中。例如,方法300和/或500的全部或部分可包含在軟件或固件指令中,這些指令 存儲(chǔ)在處理器100和/或處理器610可讀的介質(zhì)上,在由處理器100和/或處理器610運(yùn) 行時(shí),使處理器100和/或處理器610運(yùn)行本發(fā)明的實(shí)施例。
這樣,描述了使用所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值的密碼密鑰生成的本發(fā)明 的實(shí)施例。雖然描述了并且在附圖中示出了某些實(shí)施例,但是要理解,這類實(shí)施例只 是對(duì)廣泛的發(fā)明的說(shuō)明而不是限制,并且本發(fā)明并不局限于所示和所述的具體構(gòu)造和配 置,因?yàn)楸绢I(lǐng)域的技術(shù)人員在研究本公開(kāi)時(shí)會(huì)想到其它各種修改。在例如增長(zhǎng)迅速并且 不易預(yù)見(jiàn)其它進(jìn)步的這樣的技術(shù)的領(lǐng)域中,通過(guò)實(shí)現(xiàn)技術(shù)進(jìn)步進(jìn)行促進(jìn),所公開(kāi)的實(shí)施 例在配置和細(xì)節(jié)上可易于修改,而沒(méi)有背離本公開(kāi)的原理或所附權(quán)利要求的范圍。
權(quán)利要求
1.一種處理器,包括存儲(chǔ)輸入值和第一計(jì)數(shù)值的非易失性存儲(chǔ)裝置;以及根據(jù)所存儲(chǔ)的輸入值和所存儲(chǔ)的第一計(jì)數(shù)值來(lái)生成密碼密鑰的邏輯。
2.如權(quán)利要求1所述的處理器,其中,所述輸入值是隨機(jī)數(shù)。
3.如權(quán)利要求2所述的處理器,所述非易失性存儲(chǔ)裝置還存儲(chǔ)第二計(jì)數(shù)值。
4.如權(quán)利要求3所述的處理器,其中,所述邏輯將根據(jù)所存儲(chǔ)的輸入值、所存儲(chǔ)的第 一計(jì)數(shù)值和所存儲(chǔ)的第二計(jì)數(shù)值來(lái)生成RSA密鑰對(duì)。
5.如權(quán)利要求4所述的處理器,其中,所述邏輯將根據(jù)所存儲(chǔ)的輸入值為偽隨機(jī)數(shù)生 成器提供籽數(shù),根據(jù)所存儲(chǔ)的第一計(jì)數(shù)值迭代生成第一偽隨機(jī)數(shù)序列,根據(jù)所存儲(chǔ)的第 二計(jì)數(shù)值迭代生成第二偽隨機(jī)數(shù)序列,以及使用所述偽隨機(jī)數(shù)生成器的第一和第二輸出 來(lái)生成RSA密鑰對(duì)。
6.—種系統(tǒng),包括存儲(chǔ)輸入值和第一計(jì)數(shù)值的非易失性存儲(chǔ)裝置;以及 根據(jù)所存儲(chǔ)的輸入值和所存儲(chǔ)的第一計(jì)數(shù)值來(lái)生成密碼密鑰的處理器。
7.—種方法,包括 生成輸入值;根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù); 確定來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值是否為素?cái)?shù);根據(jù)關(guān)于所述偽隨機(jī)數(shù)生成器的輸出是否為素?cái)?shù)的確定,將所述偽隨機(jī)數(shù)生成器的 輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入;對(duì)于將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入的次數(shù)進(jìn)行計(jì) 數(shù);以及在非易失性存儲(chǔ)器中存儲(chǔ)所述輸入值和將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽 隨機(jī)數(shù)生成器的輸入的所述次數(shù)。
8.如權(quán)利要求7所述的方法,其中,生成所述輸入值由真隨機(jī)數(shù)生成器來(lái)執(zhí)行。
9.一種方法,包括從非易失性存儲(chǔ)器讀取輸入值和第一計(jì)數(shù)值; 根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù);按照所述第一計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī) 數(shù)生成器的輸入;以及根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成密碼密鑰。
10.如權(quán)利要求9所述的方法,還包括從所述非易失性存儲(chǔ)器讀取第二計(jì)數(shù)值。
11.如權(quán)利要求10所述的方法,其中,根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù)包 括從所述輸入值來(lái)生成第一籽數(shù)值和第二籽數(shù)值。
12.如權(quán)利要求11所述的方法,其中,根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù)包 括從所述輸入值來(lái)生成第一籽數(shù)值和第二籽數(shù)值。
13.如權(quán)利要求12所述的方法,其中,為偽隨機(jī)數(shù)生成器提供籽數(shù)包括采用所述第一 籽數(shù)值為所述偽隨機(jī)數(shù)生成器提供籽數(shù),以及采用所述第二籽數(shù)值為所述偽隨機(jī)數(shù)生成 器提供籽數(shù)。
14.如權(quán)利要求13所述的方法,其中,按照所述第一計(jì)數(shù)值所指明的次數(shù)將所述偽隨 機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入包括在采用所述第一籽數(shù)值為所述 偽隨機(jī)數(shù)生成器提供籽數(shù)之后,按照所述第一計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成 器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入。
15.如權(quán)利要求14所述的方法,還包括在采用所述第二籽數(shù)值為所述偽隨機(jī)數(shù)生 成器提供籽數(shù)之后,按照所述第二計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反 饋給所述偽隨機(jī)數(shù)生成器的輸入。
16.如權(quán)利要求15所述的方法,其中,根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成 密碼密鑰包括在采用所述第一籽數(shù)值為所述偽隨機(jī)數(shù)生成器提供籽數(shù)之后,按照所述第 一計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入 之后使用來(lái)自所述偽隨機(jī)數(shù)生成器的第一輸出值。
17.如權(quán)利要求16所述的方法,其中,根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成 密碼密鑰包括在采用所述第二籽數(shù)值為所述偽隨機(jī)數(shù)生成器提供籽數(shù)之后,按照所述第 二計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入 之后使用來(lái)自所述偽隨機(jī)數(shù)生成器的第二輸出值。
18.如權(quán)利要求17所述的方法,其中,根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成 密碼密鑰包括在RSA密鑰對(duì)生成算法中使用所述第一輸出值作為第一素?cái)?shù),并且使用所 述第二輸出值作為第二素?cái)?shù)。
19.一種包括指令的機(jī)器可讀介質(zhì),所述指令在被運(yùn)行時(shí)使處理系統(tǒng)執(zhí)行下列步驟從非易失性存儲(chǔ)器讀取輸入值和第一計(jì)數(shù)值;根據(jù)所述輸入值為偽隨機(jī)數(shù)生成器提供籽數(shù);按照所述第一計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī) 數(shù)生成器的輸入;以及根據(jù)來(lái)自所述偽隨機(jī)數(shù)生成器的輸出值來(lái)生成密碼密鑰。
20.如權(quán)利要求19所述的機(jī)器可讀介質(zhì),其中,生成密碼密鑰包括在采用基于所述輸 入值的第一籽數(shù)值為所述偽隨機(jī)數(shù)生成器提供籽數(shù)之后按照所述第一計(jì)數(shù)值所指明的次 數(shù)將所述偽隨機(jī)數(shù)生成器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入之后,使用來(lái)自所述 偽隨機(jī)數(shù)生成器的第一輸出值作為第一素?cái)?shù),以及在采用基于所述輸入值的第二籽數(shù)值 為所述偽隨機(jī)數(shù)生成器提供籽數(shù)之后按照第二計(jì)數(shù)值所指明的次數(shù)將所述偽隨機(jī)數(shù)生成 器的輸出反饋給所述偽隨機(jī)數(shù)生成器的輸入之后,使用來(lái)自所述偽隨機(jī)數(shù)生成器的第二 輸出值作為第二素?cái)?shù),從而生成RSA密鑰對(duì)。
全文摘要
描述了使用所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值的密碼密鑰生成的本發(fā)明的實(shí)施例。在一個(gè)實(shí)施例中,處理器包括存儲(chǔ)輸入值和計(jì)數(shù)值的非易失性存儲(chǔ)裝置以及根據(jù)所存儲(chǔ)的輸入值和所存儲(chǔ)的計(jì)數(shù)值來(lái)生成密碼密鑰的邏輯。
文檔編號(hào)H04L9/22GK102025487SQ201010220808
公開(kāi)日2011年4月20日 申請(qǐng)日期2010年6月21日 優(yōu)先權(quán)日2009年6月24日
發(fā)明者D·內(nèi)米羅夫 申請(qǐng)人:英特爾公司