專利名稱:密鑰生成器、加密/解密設(shè)備和密鑰生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于生成用作數(shù)據(jù)加密(編碼)或者解密的密鑰的密鑰數(shù)據(jù)的密鑰生成器,裝有這種密鑰生成器的加密/解密設(shè)備,以及密鑰生成方法。
背景技術(shù):
現(xiàn)在已經(jīng)在考慮用于接收通過記錄介質(zhì)或者通信網(wǎng)絡(luò)比如因特網(wǎng)發(fā)送給PC(個人計算機)或者其它終端的加密數(shù)據(jù),例如將接收到的數(shù)據(jù)輸入到與終端相連的記錄/再現(xiàn)設(shè)備,用記錄/再現(xiàn)設(shè)備中的加密/解密設(shè)備對輸入的數(shù)據(jù)解密,以及將解密的數(shù)據(jù)記錄到記錄介質(zhì)上的系統(tǒng)。
圖4圖示了一種典型的加密/解密設(shè)備。圖中的附圖標記60表示加密/解密處理器,它代表除了加密/解密設(shè)備的接口、CPU以及其它要以IC(集成電路)的形式結(jié)合的部件之外的部分。加密/解密處理器60包括加密/解密計算部分61、密鑰選擇器62。硬件密鑰生成器64以及密鑰存儲器69。
硬件密鑰生成器64包括在其中寫入固定值數(shù)據(jù)的ROM65,用于對從ROM65讀取的數(shù)據(jù)的比特位進行反轉(zhuǎn)和移位、計算所述比特位的異或(EOR或者XOR)或者對從ROM65讀取的數(shù)據(jù)進行其它操作的運算電路66,以及在外部命令規(guī)定的時間鎖存運算電路66根據(jù)時鐘(CLK)生成的數(shù)據(jù)的鎖存電路67。從鎖存電路67輸出的數(shù)據(jù)被輸入到密鑰選擇器62中作為硬件密鑰。
在外部命令控制下,首先由所述密鑰選擇器62選擇硬件密鑰生成器64生成的硬件密鑰,并在進行計算的加密/解密計算部分61中對其結(jié)合輸入數(shù)據(jù)進行運算,產(chǎn)生第一步處理密鑰,然后將第一步處理密鑰寫入密鑰存儲器69。
下一步,從密鑰存儲器69讀出所述第一步處理密鑰,由密鑰選擇器62加以選擇,在進行計算的加密/解密計算部分61中對其結(jié)合輸入數(shù)據(jù)進行運算,產(chǎn)生第二步處理密鑰,然后將第二步處理密鑰寫入所述密鑰存儲器69,取代所述第一步處理密鑰。
然后在加密/解密計算部分61中計算第三步處理密鑰和隨后的處理密鑰。最后,計算出一個用作數(shù)據(jù)加密或者解密的密鑰的內(nèi)容密鑰,并寫入密鑰存儲器69中。
如果在所得到的狀態(tài)中,輸入了用于選擇解密模式的命令,并作為輸入數(shù)據(jù)輸入了密文,則由密鑰選擇器62選擇從密鑰存儲器69讀出的內(nèi)容密鑰,在加密/解密計算部分61中對內(nèi)容密鑰與密文數(shù)據(jù)一道進行操作,以對密文數(shù)據(jù)解密。結(jié)果,加密/解密計算部分61輸出明文數(shù)據(jù)。
另一方面,如果輸入了選擇加密模式的命令并且輸入了明文數(shù)據(jù)作為輸入數(shù)據(jù),則類似地對明文數(shù)據(jù)加密,加密/解密計算部分61輸出密文數(shù)據(jù)。
但是,前述加密/解密設(shè)備也就是加密/解密處理器60的使用允許電路設(shè)計者或者其它類似的專家容易通過查看包括在電路中的硬件密鑰生成器64的RTL(寄存器傳送級,register transfer level)說明而知道硬件密鑰的值。
因此,需要特別留意RTL的設(shè)計文件管理,以確保用作唯一密鑰的硬件密鑰的保密性。但是,由于難以采取所有可能的安全措施,為了保證安全而確保硬件密鑰的保密性是不容易的。
因此本發(fā)明的目的是提供以保證安全的方式生成密鑰數(shù)據(jù)的裝置。
發(fā)明內(nèi)容
本發(fā)明的密鑰生成器包括
多個隨機數(shù)生成裝置,用于生成分別按照預(yù)定的獨立的間隔變化的隨機數(shù);和運算處理裝置,用于接收從所述多個隨機數(shù)生成裝置輸出的各種隨機數(shù),并對接收到的所述多個隨機數(shù)進行預(yù)定的運算處理。
本發(fā)明的加密/解密設(shè)備包括多個隨機數(shù)生成裝置,用于生成分別按照預(yù)定的獨立的間隔變化的隨機數(shù);密鑰生成裝置,包括一個運算處理器,運算處理器用于接收從所述多個隨機數(shù)生成裝置輸出的各種隨機數(shù),并對接收到的所述多個隨機數(shù)進行預(yù)定的運算處理;和加密/解密裝置,根據(jù)由所述密鑰生成裝置生成的第一步密鑰信息對接收到的輸入數(shù)據(jù)進行加密或者解密處理。
本發(fā)明的密鑰生成方法包括下列步驟按照預(yù)定的不同間隔生成多個隨機數(shù);和對按照上述不同間隔生成的所述多個隨機數(shù)進行預(yù)定的運算處理,并輸出處理后的隨機數(shù)。
當使用上述密鑰生成器、加密/解密設(shè)備和密鑰生成方法時,隨機數(shù)生成裝置生成的輸出數(shù)據(jù)按照時間順序變化。因此,電路設(shè)計者或者其它人不可能知道由鎖存裝置鎖存的實際密鑰數(shù)據(jù)的值。因此,密鑰數(shù)據(jù)的安全性得到保障。
圖1圖解了根據(jù)本發(fā)明的加密/解密設(shè)備的一個實施例,該實施例包括本發(fā)明的密鑰生成器的一個實施例;圖2圖解了圖1所示的密鑰生成器的操作;圖3圖解了作為本發(fā)明的數(shù)據(jù)接收器的一個實施例的記錄/再現(xiàn)設(shè)備;圖4圖解了密鑰生成器和加密/解密設(shè)備的一個可能的例子。
具體實施例方式
(密鑰生成器和加密/解密設(shè)備的實施例圖1和圖2)圖1圖解了根據(jù)本發(fā)明的加密/解密設(shè)備的一個實施例,該實施例包括本發(fā)明的密鑰生成器的一個實施例。
加密/解密處理器40表示的是除了加密/解密設(shè)備的接口、CPU和其它如下所述要以IC的形式結(jié)合起來的部件之外的部分,并包括用作硬件密鑰生成器的隨機數(shù)生成器50、加密/解密計算部分41、密鑰選擇器43、密鑰寄存器45、定時監(jiān)控計數(shù)器47和密鑰存儲器49。
隨機數(shù)生成器50包括多個隨機數(shù)生成電路和運算電路59。附示了三個隨機數(shù)生成電路51-53。但是,實際上可以提供許多隨機數(shù)生成電路。
隨機數(shù)生成電路51包括一個寄存器511和一個運算電路512。從加密/解密處理器40外部,命令、重置信號和時鐘信號CLK1被輸入到寄存器511中。在運算電路512中,對寄存器511的輸出數(shù)據(jù)進行操作,操作例如是對寄存器511的所有輸出數(shù)據(jù)位進行反轉(zhuǎn)和移位操作,以計算每一個比特位的異或。得到的計算出的數(shù)據(jù)然后根據(jù)時鐘信號CLK1被寫入到寄存器511中。在時鐘信號CLK1的每一個脈沖重復(fù)執(zhí)行上述操作。結(jié)果,寄存器511輸出一個n比特(例如8比特)的隨機數(shù),該隨機數(shù)對于時鐘信號CLK1的不同脈沖是不同的。
隨機數(shù)生成電路52包括一個寄存器521和一個運算電路522。與隨機數(shù)生成電路51的情況一樣,隨機數(shù)生成電路52的寄存器521輸出一個n比特隨機數(shù),該隨機數(shù)對于時鐘信號CLK2的不同脈沖各不相同。隨機數(shù)生成電路53包括一個寄存器531和一個運算電路532。與隨機數(shù)生成電路51和52的情況一樣,隨機數(shù)生成電路53的寄存器531輸出一個n比特隨機數(shù),該隨機數(shù)對于時鐘信號CLK3的不同脈沖各不相同。時鐘信號CLK3不同于時鐘信號CLK1和CLK2。對于圖中未示出的其它隨機數(shù)生成電路來說是一樣的情況。
隨機數(shù)生成器50中的運算電路59不僅合并隨機數(shù)生成電路51、52、53等等生成的隨機數(shù)以生成一個N比特隨機數(shù)(例如,如果n=8并且隨機數(shù)生成電路的總數(shù)為8,則為64位隨機數(shù)),還通過對上述合并的N位隨機數(shù)進行操作而生成N位隨機數(shù)RA,所述操作例如是對所述合并的隨機數(shù)的所有比特位進行反轉(zhuǎn)和移位操作,以計算每一個比特位的異或。隨機數(shù)生成電路51、52、53等等生成的隨機數(shù)隨著相互不同的時鐘信號CLK1、CLK2、CLK3等等而變化。因此,從隨機數(shù)生成器50輸出的隨機數(shù)RA按照圖2中的數(shù)據(jù)R1、R2、R3、R4、R5等等指示的不規(guī)律的定時而變。
從隨機數(shù)生成器50輸出的隨機數(shù)RA進入密鑰選擇器43。密鑰選擇器43由輸入命令控制,以選擇隨機數(shù)RA或者從如下所述的密鑰存儲器49讀入的密鑰數(shù)據(jù)。這樣選擇的數(shù)據(jù)然后進入密鑰寄存器45。
同時,定時監(jiān)控計數(shù)器47在收到輸入命令或者重置信號時重置,并從頭開始對時鐘信號CLKA計數(shù),該時鐘信號CLKA不同于前述隨機數(shù)生成時鐘信號CLK1、CLK2和CLK3。當達到預(yù)定的計數(shù)值時,定時監(jiān)控計數(shù)器47輸出一個“啟動獲取”信號EN。
密鑰寄存器根據(jù)輸出“啟動獲取”信號EN時的當前時鐘信號CLKA獲取密鑰選擇器43生成的當前輸出數(shù)據(jù),然后輸出密鑰數(shù)據(jù)。
因此,當從隨機數(shù)生成器50輸出的隨機數(shù)RA要被選擇為來自密鑰選擇器43的輸出數(shù)據(jù)時,在輸出“啟動獲取”信號EN的時刻ta的數(shù)據(jù)R3由密鑰寄存器45鎖存,并作為硬件密鑰輸出,同時隨機數(shù)RA隨著圖2中的數(shù)據(jù)R1、R2、R3、R4、R5等等指示的不規(guī)律定時而變化。
在加密/解密計算部分41中,如上所述由密鑰選擇器43選擇并由密鑰寄存器45鎖存的數(shù)據(jù)被當作密鑰數(shù)據(jù)處理,并對其與輸入數(shù)據(jù)一道進行操作,以計算出一個處理密鑰。最終,計算出一個內(nèi)容密鑰。然后用內(nèi)容密鑰根據(jù)DES(數(shù)據(jù)加密標準,Data EncryptionStandard)、三重DES(TripleDES)或者其它加密算法對數(shù)據(jù)解密或者加密。
更具體地,密鑰選擇器43首先在接收到輸入命令時選擇從隨機數(shù)生成器輸出的隨機數(shù)RA。被選擇的隨機數(shù)然后由所述密鑰寄存器45如上所述鎖存,獲得一個硬件密鑰作為所述密鑰寄存器45的輸出的密鑰數(shù)據(jù)。加密/解密計算部分41對所獲得的硬件密鑰連同輸入數(shù)據(jù)一道進行操作,從而計算出第一步處理密鑰,寫入到密鑰存儲器49中。
接下來,由密鑰選擇器43選擇從密鑰存儲器49讀出的第一步處理密鑰,并由密鑰寄存器45鎖存。然后獲取第一步處理密鑰,作為從密鑰寄存器45輸出的密鑰數(shù)據(jù)。加密/解密計算部分41對所獲得的第一步處理密鑰與輸入數(shù)據(jù)一道進行操作,計算出第二步處理密鑰,寫入到密鑰存儲器49中,取代第一步處理密鑰。
然后在加密/解密計算部分41中以類似的方式計算出第三步和隨后的處理密鑰。最終,計算出一個內(nèi)容密鑰并寫入密鑰存儲器49。
如果在所得到的狀態(tài)中,輸入了用于選擇解密模式的命令,并作為輸入數(shù)據(jù)輸入了密文,則由密鑰選擇器43選擇從密鑰存儲器49讀出的內(nèi)容密鑰,由密鑰寄存器45鎖存,以獲得作為從密鑰寄存器45的輸出的密鑰數(shù)據(jù)的內(nèi)容密鑰。加密/解密計算部分41然后對所獲得的內(nèi)容密鑰與密文數(shù)據(jù)一道進行操作,以對密文數(shù)據(jù)解密。結(jié)果,加密/解密計算部分41輸出明文數(shù)據(jù)。
另一方面,如果輸入了選擇加密模式的命令并且輸入了明文數(shù)據(jù)作為輸入數(shù)據(jù),則類似地對明文數(shù)據(jù)加密,加密/解密計算部分61輸出密文數(shù)據(jù)。
在上述密鑰生成器中,隨機數(shù)生成電路51、52、53等等輸出的輸出數(shù)據(jù)按照時間順序變化,從隨機數(shù)生成器50輸出的隨機數(shù)RA按照不規(guī)律的定時變化。因此,電路設(shè)計者或者其它人不可能簡單地通過查看電路圖上的RTL說明來知道密鑰寄存器45獲取的實際硬件密鑰的值。結(jié)果,硬件密鑰的安全性得到保障。
另外,給設(shè)備內(nèi)的每一個寄存器分配一個隨機數(shù)名作為寄存器名,每一個比特位在與硬件密鑰有關(guān)的所有節(jié)點被加密。即使電路設(shè)計者或者其他人成功地讀出了設(shè)備中的寄存器的值,這也防止了電路設(shè)計者或者其它人讀取真實的硬件密鑰值。這進一步提高了安全性。
(數(shù)據(jù)接收器的實施例圖3)圖3圖解了一個數(shù)據(jù)接收系統(tǒng),其包括一個本發(fā)明的加密/解密設(shè)備,并包括一個作為本發(fā)明的數(shù)據(jù)接收器的實施例的記錄/再現(xiàn)設(shè)備。
在圖中例示的數(shù)據(jù)接收系統(tǒng)接收用密鑰在PC或者其它終端10上編碼和加密,并通過從記錄介質(zhì)1上剝離或者從基于互聯(lián)網(wǎng)的分布系統(tǒng)2上下載而可以得到的數(shù)據(jù)。
接收到的密文從終端10傳送到連接到終端10的USB(通用串行總線)接口的記錄/再現(xiàn)設(shè)備20。
記錄/再現(xiàn)設(shè)備20在記錄介質(zhì)5上記錄數(shù)據(jù),從記錄介質(zhì)5回放數(shù)據(jù),并設(shè)有加密/解密設(shè)備30。
加密/解密設(shè)備30包括前述的示于圖1的加密/解密處理器40和CPU31。用于CPU31的總線32連接到ROM33、RAM34、USB接口36、接口37和接口39。ROM33中寫入了要由CPU31執(zhí)行以交換命令和執(zhí)行加密/解密處理的程序、固定數(shù)據(jù)以及其它數(shù)據(jù)。RAM34例如用作CPU31的工作區(qū)。USB接口36用于與終端10交換命令并從終端10獲取數(shù)據(jù)。接口37用于將數(shù)據(jù)輸出到記錄/再現(xiàn)設(shè)備的主單元中的DSP(數(shù)字信號處理器)26。接口39用于與記錄/再現(xiàn)設(shè)備主單元中的CPU21交換命令。
所述加密/解密器30形成為單片LSI(大規(guī)模集成電路)。
在記錄/再現(xiàn)設(shè)備主單元中,CPU21的總線22連接到其中寫入要由CPU21執(zhí)行的程序、固定數(shù)據(jù)和其它數(shù)據(jù)的ROM23、例如用作CPU21的工作區(qū)的RAM24以及前述DSP26。DSP26連接到記錄/再現(xiàn)設(shè)備27和輸出處理器28。
在加密/解密器30內(nèi),通過USB接口36從終端10獲取的被編碼并用密鑰加密過的數(shù)據(jù)被在加密/解密處理器40中如前所述用內(nèi)容密鑰解密,所得到的編碼數(shù)據(jù)(為解密的明文數(shù)據(jù))被通過接口37傳送給DSP26,并由DSP26處理,由記錄/再現(xiàn)處理器27記錄到記錄介質(zhì)5上或者由輸出處理器28轉(zhuǎn)換為模擬信號并送到輸出連接器29。
可接受的記錄介質(zhì)5包括光盤、硬盤、軟盤、磁盤、存儲卡和半導(dǎo)體存儲器。
本發(fā)明不僅能應(yīng)用于前述記錄/再現(xiàn)設(shè)備,而且能應(yīng)用于接收加密數(shù)據(jù)、對其解密然后回放,但是沒有記錄功能的設(shè)備。
如前所述,本發(fā)明很好地保證了密鑰數(shù)據(jù)的安全性。
權(quán)利要求
1.一種密鑰生成器,包括多個隨機數(shù)生成裝置,用于生成分別按照預(yù)定的獨立的間隔變化的隨機數(shù);和運算處理裝置,用于接收從所述多個隨機數(shù)生成裝置輸出的各種隨機數(shù),并對接收到的所述多個隨機數(shù)進行預(yù)定的運算處理。
2.如權(quán)利要求1所述的密鑰生成器,其中所述多個隨機數(shù)生成裝置中的每一個包括一個用于對輸入的輸入數(shù)據(jù)進行預(yù)定的處理并輸出處理后的輸入數(shù)據(jù)的數(shù)據(jù)計算裝置,以及一個數(shù)據(jù)保持裝置,該數(shù)據(jù)保持裝置用于按照由所述多個隨機數(shù)生成裝置中的每一個獨立給出的獲取指令獲取和保持所述數(shù)據(jù)計算裝置的輸出數(shù)據(jù),并將按照所述獲取指令獲取和保持的輸出數(shù)據(jù)輸入到所述數(shù)據(jù)計算裝置中。
3.如權(quán)利要求2所述的密鑰生成器,其中所述數(shù)據(jù)計算裝置對輸入的輸入數(shù)據(jù)的位串執(zhí)行下述處理中的至少一種位倒置、移位和異或處理。
4.如權(quán)利要求1所述的密鑰生成器,其中由所述運算處理裝置生成的密鑰信息的數(shù)據(jù)長度大于從所述隨機數(shù)輸出裝置輸出的隨機數(shù)的數(shù)據(jù)長度。
5.一種加密/解密設(shè)備,包括多個隨機數(shù)生成裝置,用于生成分別按照預(yù)定的獨立的間隔變化的隨機數(shù);密鑰生成裝置,包括一個運算處理器,運算處理器用于接收從所述多個隨機數(shù)生成裝置輸出的各種隨機數(shù),并對接收到的所述多個隨機數(shù)進行預(yù)定的運算處理;和加密/解密裝置,根據(jù)由所述密鑰生成裝置生成的第一密鑰信息對接收到的輸入數(shù)據(jù)進行加密或者解密處理。
6.如權(quán)利要求5所述的加密/解密設(shè)備,其中所述多個隨機數(shù)生成裝置中的每一個包括一個用于對輸入的輸入數(shù)據(jù)進行預(yù)定的處理并輸出處理后的輸入數(shù)據(jù)的數(shù)據(jù)計算裝置,以及一個數(shù)據(jù)保持裝置,該數(shù)據(jù)保持裝置用于按照由所述多個隨機數(shù)生成裝置中的每一個獨立給出的獲取指令獲取和保持所述數(shù)據(jù)計算裝置的輸出數(shù)據(jù),并將按照所述獲取指令獲取和保持的輸出數(shù)據(jù)輸入到所述數(shù)據(jù)計算裝置中。
7.如權(quán)利要求5所述的加密/解密設(shè)備,還包括密鑰保持裝置,用于保持輸入的輸入數(shù)據(jù),作為第二密鑰信息;和密鑰選擇裝置,用于選擇性地輸出由所述密鑰生成裝置生成地第一密鑰信息或者由所述密鑰保持裝置保持的第二密鑰信息,其中,所述加密/解密處理器根據(jù)所述密鑰選擇裝置選擇的密鑰信息執(zhí)行加密或者解密處理。
8.一種密鑰生成方法,包括下列步驟分別按照預(yù)定的不同間隔生成多個隨機數(shù);和對按照不同間隔生成的所述多個隨機數(shù)進行預(yù)定的運算處理,并輸出處理后的隨機數(shù)。
全文摘要
本發(fā)明公開了一種密鑰生成器、加密/解密設(shè)備和密鑰生成方法,通過防止電路設(shè)計者和其它人容易知道密鑰值而確保密鑰的安全性。隨機數(shù)生成電路(51、52、53等)根據(jù)不同的時鐘信號(CLK1、CLK2、CLK3等)分別生成隨機數(shù)。運算電路(59)對隨機數(shù)生成電路(51、52、53等)生成的隨機數(shù)進行操作,生成N位隨機數(shù)RA,作為隨機數(shù)生成器(50)的輸出。該N位隨機數(shù)是通過密鑰選擇器(43)獲取的RA,并根據(jù)來自定時監(jiān)控計數(shù)器(47)的“啟動獲取”信號EN鎖存到密鑰寄存器(45)中,以獲取作為唯一密鑰的硬件密鑰。所述計數(shù)器由不同于時鐘信號CLK1、CLK2、CLK3等的時鐘信號CLKA驅(qū)動。
文檔編號G09C1/00GK1518734SQ03800480
公開日2004年8月4日 申請日期2003年4月17日 優(yōu)先權(quán)日2002年4月19日
發(fā)明者松田寬美, 一郎, 森永英一郎, 生, 田中理生 申請人:索尼株式會社