專利名稱:程序開發(fā)方法、程序開發(fā)支援裝置及程序安裝方法
技術(shù)領(lǐng)域:
本發(fā)明涉及安裝了密鑰的系統(tǒng)、用于該系統(tǒng)的LSI的程序開發(fā)以及程序的安裝這一技術(shù)。
對密鑰的機(jī)密性和隱匿性很高的密鑰安裝系統(tǒng)而言,最大課題是,在如何維持它的程序開發(fā)和程序安裝的安全性。
發(fā)明內(nèi)容
本發(fā)明的目的,在于對上述密鑰安裝系統(tǒng)提供安全水平很高的程序開發(fā)方法、程序開發(fā)環(huán)境及程序安裝方法。
具體而言,本發(fā)明提供一種程序開發(fā)方法,開發(fā)的是裝到擁有包括含不可改寫區(qū)域的機(jī)密存儲器的LSI的系統(tǒng)中的程序,包括以其結(jié)構(gòu)和所述LSI一樣的LSI作開發(fā)用LSI,并將它設(shè)定為與程序安裝及產(chǎn)品工作時的商品操作模式不同的開發(fā)模式的步驟,及在所述開發(fā)用LSI上開發(fā)所述程序的步驟。
根據(jù)本發(fā)明,安裝到具有包括機(jī)密存儲器的LSI的系統(tǒng)中的程序的開發(fā),是在其結(jié)構(gòu)和該LSI一樣且被設(shè)定為和程序安裝及產(chǎn)品工作時的商品操作模式不同的開發(fā)模式的開發(fā)用LSI中進(jìn)行的。換句話說,因為可將擁有含不可改寫區(qū)域的機(jī)密存儲器且隱匿性高的LSI的操作模式從安裝模式轉(zhuǎn)換為開發(fā)模式,而將該LSI1作程序開發(fā)環(huán)境用,故能使程序開發(fā)環(huán)境的安全性比現(xiàn)有技術(shù)下的安全性高。
最好是,在所述本發(fā)明所涉及的程序開發(fā)方法中,限制LSI的操作,做到當(dāng)將它設(shè)定為開發(fā)模式時能執(zhí)行明文程序,同時當(dāng)將它設(shè)定為商品操作模式時則不能執(zhí)行明文程序。
所述本發(fā)明所涉及的程序開發(fā)方法,最好是,包括在所述開發(fā)用LSI上,對在所述程序開發(fā)步驟中開發(fā)的程序加密的加密步驟。
在所述本發(fā)明所涉及的程序開發(fā)方法中,最好是,限制LSI的操作,以做到當(dāng)將它設(shè)定為開發(fā)模式時,不會生成用以將明文程序加密的密鑰。
所述本發(fā)明所涉及的程序開發(fā)方法,最好是,包括以其結(jié)構(gòu)與所述LSI一樣的LSI作密鑰生成用LSI,將它設(shè)定為與開發(fā)模式及商品操作模式不同的密鑰生成模式的步驟;將加密后的密鑰生成程序安裝到所述密鑰生成用LSI上并通過執(zhí)行該密鑰生成程序而生成密鑰的步驟。而且,最好是,限定所述LSI的操作,做到在將它設(shè)定為密鑰生成模式的時候,不能執(zhí)行明文程序?;蛘呤?,最好是,包括以其結(jié)構(gòu)與所述LSI一樣的LSI作管理者用LSI,將它設(shè)定為與開發(fā)模式、商品操作模式及密鑰生成模式不同的管理模式的步驟;在上述管理者用LSI上開發(fā)所述密鑰生成程序并用任意密鑰加密的步驟。
本發(fā)明提供一種支援加密程序的開發(fā)的程序開發(fā)支援裝置,它包括其結(jié)構(gòu)與上述加密程序運作的LSI一樣的LSI和將明文程序存儲起來的外部存儲器;所述LSI又包括存儲與原有的共有密鑰有關(guān)的共有密鑰密鑰信息的機(jī)密存儲器。而且,可執(zhí)行從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟;及用所述原有的共有密鑰將從所述外部存儲器輸入的明文程序加密的第2步驟。
根據(jù)本發(fā)明,給出了其結(jié)構(gòu)與成為開發(fā)對象的加密程序運作的LSI的結(jié)構(gòu)一樣的LSI作開發(fā)環(huán)境。在該LSI上,從存儲在機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰,同時使用該原有的共有密鑰對從外部存儲器輸入的明文程序加密。換句話說,可執(zhí)行原有的共有密鑰的解密和利用了該原有的共有密鑰對明文程序的加密。因此,故可在原有的共有密鑰不被程序開發(fā)者不得知的情況下,執(zhí)行明文程序的加密。
本發(fā)明提供了一種支援加密程序的開發(fā)的程序開發(fā)支援裝置,它包括LSI和將明文程序存儲起來的外部存儲器,所述LSI又包括存儲與原有的共有密鑰有關(guān)的共有密鑰密鑰信息的機(jī)密存儲器和存儲引導(dǎo)程序的引導(dǎo)ROM。而且,包括通過執(zhí)行存儲在所述引導(dǎo)ROM中的引導(dǎo)程序,而執(zhí)行從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟,及用所述原有的共有密鑰對從所述外部存儲器輸入的明文程序加密的第2步驟。
根據(jù)本發(fā)明,通過在LSI上執(zhí)行引導(dǎo)程序,從存儲在機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰,同時使用該原有的共有密鑰將從外部存儲器輸入的明文程序加密。換句話說,是通過引導(dǎo)程序執(zhí)行原有的共有密鑰的解密和利用了該原有的共有密鑰的明文程序的加密,而不是利用來自外部的指示來執(zhí)行原有的共有密鑰的解密和利用了該原有的共有密鑰的明文程序的加密。因此,故既確能防止原有的共有密鑰被程序開發(fā)者得知,又能執(zhí)行對明文程序的加密。
在所述本發(fā)明所涉及的程序開發(fā)支援裝置中,最好是,所述共有密鑰密鑰信息包括用原有的第1中間密鑰對原有的共有密鑰加密后而得到的加密共有密鑰、和用原有的第2中間密鑰將所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰。所述第1步驟,最好是利用所述加密共有密鑰、加密的第1中間密鑰及程序加密種子對所述原有的共有密鑰解密。
本發(fā)明提供一種將加密的程序安裝到包括擁有機(jī)密存儲器的LSI及外部存儲器的密鑰安裝系統(tǒng)中的方法,該方法包括將與原有的共有密鑰有關(guān)的共有密鑰密鑰信息和與原有的固有密鑰有關(guān)的固有密鑰密鑰信息存儲在所述機(jī)密存儲器中的初始值設(shè)定處理;在所述LSI上,從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟;在所述LSI上,用在所述第1步驟得到的原有的共有密鑰對從所述外部存儲器施來的共有密鑰加密程序解密的第2步驟;在所述LSI上,從存儲在所述機(jī)密存儲器中的固有密鑰密鑰信息得到原有的固有密鑰的第3步驟;在所述LSI上,用在所述第3步驟得到的原有的固有密鑰對在所述第2步驟得到的明文程序加密的第4步驟。將在所述第4步驟中得到的固有密鑰加密程序安裝到所述外部存儲器中。
根據(jù)本發(fā)明,用從存儲在機(jī)密存儲器中的共有密鑰密鑰信息得到的原有的共有密鑰對施加給LSI的共有密鑰加密程序解密。用從存儲在機(jī)密存儲器中的共有密鑰密鑰信息得到的原有的固有密鑰對已解密的明文程序加密。換句話說,共有密鑰加密程序是通過將加密的密鑰從共有密鑰變化為固有密鑰而安裝到系統(tǒng)中的。因此,在不同用戶所持有的不同產(chǎn)品中,裝上了由相互不同的固有密鑰加密的程序,隱匿性提高。即使萬一密碼被破,受害產(chǎn)品也是有限的,故和現(xiàn)有技術(shù)下的安全性相比,這時的安全性提高了。
在所述本發(fā)明所涉及的程序安裝方法中,最好是,LSI包括存儲引導(dǎo)程序的引導(dǎo)ROM,通過在所述LSI上執(zhí)行存儲在所述引導(dǎo)ROM中的引導(dǎo)程序來執(zhí)行上述第1~第4步驟。
在所述本發(fā)明所涉及的程序安裝方法中,最好是,將固有密鑰密鑰信息存儲到所述機(jī)密存儲器的不可改寫區(qū)域。
在所述本發(fā)明所涉及的程序安裝方法中,最好是,共有密鑰密鑰信息包括用原有的第1中間密鑰對原有的共有密鑰加密后而得到的加密共有密鑰、和用原有的第2中間密鑰對所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰。所述第1步驟,最好是,利用所述加密共有密鑰、加密第1中間密鑰和程序加密種子對所述原有的共有密鑰解密。
在所述本發(fā)明所涉及的程序安裝方法中,最好是,固有密鑰密鑰信息包括用原有的第1中間密鑰對原有的固有密鑰加密后而得到的加密固有密鑰、和用原有的第2中間密鑰對所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰。所述第3步驟,最好是,利用所述加密固有密鑰、加密的第1中間密鑰和程序加密種子對所述原有的固有密鑰解密。
在所述本發(fā)明所涉及的程序安裝方法中,最好是,固有密鑰密鑰信息為該LSI所固有的固有ID。
圖1為顯示本發(fā)明的實施例所涉及的機(jī)密LSI的結(jié)構(gòu)的方框圖。
圖2為顯示使用了圖1的機(jī)密LSI的開發(fā)及產(chǎn)品化的整個流程的圖。
圖3為顯示引導(dǎo)程序的整個處理流程的流程圖。
圖4為前一個處理SZ2的數(shù)據(jù)流。
圖5為密鑰生成密鑰的加密的數(shù)據(jù)流。
圖6為程序加密處理SA2的流程圖。
圖7為程序加密處理SA2的數(shù)據(jù)流。
圖8為密鑰產(chǎn)生模式中的密鑰生成器制造處理SB1的流程圖。
圖9和圖10為密鑰生成器制造處理SB1的數(shù)據(jù)流。
圖11為密鑰產(chǎn)生模式中密鑰管理、發(fā)行處理SB2的流程圖。
圖12和圖13為密鑰管理、發(fā)行處理SB2的數(shù)據(jù)流。
圖14為開發(fā)模式中的程序加密處理SC1的流程圖。
圖15為程序加密處理SC1的數(shù)據(jù)流。
圖16為商品操作模式中的程序安裝處理SD1的流程圖。
圖17和圖18為程序安裝處理SD1的數(shù)據(jù)流。
圖19為商品操作模式中的通常引導(dǎo)處理SD2的流程圖。
圖20和圖21為通常引導(dǎo)處理SD2的數(shù)據(jù)流。
圖22為初始值設(shè)定處理SZ1的數(shù)據(jù)流。
具體實施例方式
下面,參考附圖,說明本發(fā)明的實施例。需提一下,在以下的說明中,用Enc(X,Y)表示用密鑰Y將X(密鑰或者程序)加密后而得到的加密密鑰或者程序。
圖1為表示本實施例所涉及的機(jī)密LSI的內(nèi)部結(jié)構(gòu)的方框圖。圖1中的結(jié)構(gòu)是這樣的,即機(jī)密LSI1可通過外部總線120和外部存儲器(閃爍存儲器)100、外部工具110等連接。而且,可通過加上模式ID來設(shè)定操作模式。
對本實施例所涉及的主要的結(jié)構(gòu)要素進(jìn)行簡單的說明。
首先,機(jī)密LSI1包括含不可改寫區(qū)域11的機(jī)密存儲器(保密Flash)10。該不可改寫區(qū)域11中設(shè)有不可改寫區(qū)域?qū)懭肫鞓?biāo)12。一旦模式ID寫到機(jī)密存儲器10中,不可改寫區(qū)域?qū)懭肫鞓?biāo)12的旗標(biāo)值就會從“可寫入”變成“已經(jīng)寫完”,之后就不能向不可改寫區(qū)域中寫入了。需提一下,在本實施例中,機(jī)密存儲器10及外部存儲器100是由閃爍存儲器構(gòu)成的,但并不限于此,只要是非易失性存儲器就行了。
還有,秘密密鑰運算處理部分20,擁有存儲各種密鑰及程序加密種子的寄存器,由它進(jìn)行加密處理。密鑰生成/更新定序器30,擁有模式ID存儲寄存器31,該密鑰生成/更新定序器30根據(jù)存儲在該模式ID存儲寄存器31中的模式ID,控制秘密密鑰運算處理部分20的操作,換句話說,控制是否生成各種密鑰。該密鑰生成/更新定序器30,擁有存儲表示密鑰或者程序由什么算法、密鑰長加密的加密種類種類標(biāo)識符的加密種類標(biāo)識符存儲寄存器32。還擁有程序加密種子33。
模式定序器40也擁有模式ID存儲寄存器41。該模式定序器40根據(jù)存儲在模式ID存儲寄存器41中的模式ID和跳線43的值控制外部主接口(I/F)50的操作,換句話說,是控制通過哪一個主接口來將存儲在外部存儲器100中的程序、數(shù)據(jù)讀進(jìn)來。由此可控制是否可執(zhí)行存儲在外部存儲器100中的明文程序。模式定序器40還擁有存儲了表示用什么方法將密鑰加密的加密種類標(biāo)識符的加密種類標(biāo)識符存儲寄存器42。
外部主接口50,在模式定序器40的控制下,通過程序處理部分51所擁有的通過部分52、延遲部分53及程序解密用加密引擎54、數(shù)據(jù)處理部分55所擁有的通過部分56及內(nèi)容加密/解密用加密引擎57中之任一個,在外部存儲器100、外部工具110之間進(jìn)行程序、數(shù)據(jù)的輸出入。
這里,除了后述的管理模式以外,通過通過部分52輸入的程序不會在機(jī)密LSI1內(nèi)部執(zhí)行。換句話說,通過部分52,是一在明文程序的加密、或者是用其他的密鑰對已經(jīng)加密的程序再次加密時有效的部分。機(jī)密LSI1的結(jié)構(gòu)是這樣的,除了后述的管理模式以外,操作不會進(jìn)入通過通過部分52輸入的程序。因此,即使例如已經(jīng)成為商品的機(jī)密LSI1通過通過部分52取入了明文程序,也不能執(zhí)行該明文程序。需提一下,在執(zhí)行明文程序的時候,機(jī)密LSI1通過延遲部分53將程序輸?shù)剿膬?nèi)部。
引導(dǎo)ROM60存儲控制機(jī)密LSI1的啟動操作的引導(dǎo)程序。HASH運算部分70,為驗證讀到機(jī)密LSI1的程序的正當(dāng)性而計算HASH值。
還有,外部存儲器100中存儲了程序、內(nèi)容。外部工具110中存儲了一開始啟動機(jī)密LSI1時存儲在機(jī)密存儲器10中的各種初始值。該初始值的種類隨著所設(shè)定的操作模式的不同而不同。
圖2為顯示使用了圖1中的機(jī)密LSI1的開發(fā)及產(chǎn)品化的整個流程的圖。如圖2所示,機(jī)密LSI1在管理模式(模式ID00)、密鑰生成模式(模式ID01)、開發(fā)模式(模式ID10)及商品操作模式(模式ID11)這4種操作模式下操作。
首先,被設(shè)定為管理模式的機(jī)密LSI1作為管理者用LSI操作。在管理者用LSI中,開發(fā)密鑰生成程序,而且使用任意的密鑰生成密鑰對該密鑰生成程序加密。
被設(shè)定為密鑰生成模式的機(jī)密LSI1作為密鑰生成用LSI操作,在密鑰生成用LSI中,安裝了在管理者用LSI中生成、加密的密鑰生成程序。執(zhí)行該密鑰生成程序以后,就生成了各種密鑰。
被設(shè)定為開發(fā)模式的機(jī)密LSI1作為開發(fā)用LSI操作,在開發(fā)用LSI中,開發(fā)在實際的產(chǎn)品中執(zhí)行的應(yīng)用程序。而且,使用程序共有密鑰對該應(yīng)用程序加密。
被設(shè)定為商品操作模式的機(jī)密LSI1作為實際的商品LSI操作。在商品LSI中,安裝了在開發(fā)用LSI中生成的由程序共有密鑰加密的應(yīng)用程序,在其內(nèi)部,用程序固有密鑰將所安裝的應(yīng)用程序變換成加密后的應(yīng)用程序。需提一下,在開發(fā)用LSI中也可為調(diào)試應(yīng)用程序來執(zhí)行該變換處理。
下面,參考流程圖及數(shù)據(jù)流,對每一個模式下的機(jī)密LSI1的操作進(jìn)行詳細(xì)的說明。機(jī)密LSI1,通過執(zhí)行存儲在引導(dǎo)ROM60中的引導(dǎo)程序而進(jìn)行以下操作。
圖3為顯示引導(dǎo)程序的整個處理過程的流程圖。一給機(jī)密LSI1通上電以后,就由CPU65來執(zhí)行引導(dǎo)ROM60中所存儲的引導(dǎo)程序。如圖3所示,首先,將每一個硬件初始化(SZ0)。然后,從外部工具110讀入各種各樣的初始值,設(shè)定在機(jī)密存儲器10中(SZ1)。
圖22為初始值設(shè)定處理SZ1的流程圖。首先,在跳線44,判斷機(jī)密存儲器10是否安裝在LSI內(nèi)。接著,判斷不可改寫區(qū)域?qū)懭肫鞓?biāo)12是否為“已寫完”,因為當(dāng)為“已寫完”時,初始值就已經(jīng)設(shè)定在機(jī)密存儲器10中,故讓處理SZ1結(jié)束。當(dāng)不可改寫區(qū)域?qū)懭肫鞓?biāo)12為“可寫入”時,就將初始值寫到機(jī)密存儲器10中。不僅將模式ID寫到機(jī)密存儲器10的不可改寫區(qū)域11中,還將加密的程序固有密鑰、地址管理信息、數(shù)據(jù)固有密鑰寫到機(jī)密存儲器10的不可改寫區(qū)域11中。需提一下,在最開始的判斷結(jié)果是,機(jī)密存儲器10在LSI的外部的時候,就將模式ID寫在表示商品操作模式的值上。這樣以來,機(jī)密存儲器10在LSI包外那樣的欺詐產(chǎn)品,只可在商品操作模式下工作。
接著,將不可改寫區(qū)域?qū)懭肫鞓?biāo)12設(shè)定為“已寫完”。這樣以來,以后的不可改寫區(qū)域11就不能改寫了。而且,還將加密種類標(biāo)識符及安裝模式旗標(biāo)寫到通常區(qū)域13、14中。而且,當(dāng)模式ID顯示管理模式以外的模式的時候,除了將加密種類標(biāo)識符及安裝模式旗標(biāo)寫到通常區(qū)域13、14中以外,還將已加密的共有密鑰/密鑰生成密鑰寫到通常區(qū)域13、14中。
之后,執(zhí)行前處理SZ2。圖4為前處理SZ2的數(shù)據(jù)流。這里,設(shè)定在機(jī)密存儲器10的不可改寫區(qū)域11中的模式ID,被設(shè)定在密鑰生成/更新定序器30的模式ID存儲寄存器31及模式定序器40的模式ID存儲寄存器41中;設(shè)定在機(jī)密存儲器10的第1通常區(qū)域13中的加密種類標(biāo)識符被設(shè)定在密鑰生成/更新定序器30的加密種類標(biāo)識符存儲寄存器32及模式定序器40的加密種類標(biāo)識符存儲寄存器42中;機(jī)密存儲器10的不可改寫區(qū)域11中所存儲的地址管理信息被設(shè)定在MEMC80的密碼地址區(qū)分存儲寄存器81中。到這里為止的操作,和圖2中的初始值設(shè)定階段PA0、PB0、PC0、PD0相對應(yīng)。
之后,根據(jù)模式ID的值來進(jìn)行每一個模式下的操作(SZ3)。
(管理模式)當(dāng)模式ID為“00”時,機(jī)密LSI1成為管理模式,根據(jù)跳線43的值(SA0)執(zhí)行明文程序執(zhí)行處理SA1或者是程序加密處理SA2。
在密鑰生成程序開發(fā)階段PA1,進(jìn)行明文程序執(zhí)行處理SA1,在這里生成密鑰生成程序。該密鑰生成程序存儲在外部存儲器100中。
在密鑰生成程序加密階段PA2,首先,如圖5的數(shù)據(jù)流所示,通過執(zhí)行密鑰生成程序而對施來的任意密鑰生成密鑰加密。換句話說,在外部主接口50中,程序處理部分51的通過部分52在模式定序器40的作用下有效。外部存儲器100中所存儲的密鑰生成程序通過通過部分52加到CPU65中而得以執(zhí)行。執(zhí)行了該密鑰生成程序以后,外部存儲器100中所存儲的密鑰生成密鑰就由秘密密鑰運算處理部分20利用裝在密鑰生成/更新定序器30中的程序加密種子加密。
需提一下,在本實施例中,密鑰的加密是利用第1中間密鑰和第2中間密鑰來進(jìn)行的。換句話說,加密的結(jié)果是,得到了明文密鑰(這里為密鑰生成密鑰)由第1中間密鑰(這里為MK1)加密后而得到的加密密鑰(這里為Enc(密鑰生成密鑰,MK1))、和由第2中間密鑰(這里為CK)將第1中間密鑰加密后而得到的加密第1中間密鑰(這里為Enc(MK1,CK)。當(dāng)然,本發(fā)明并不限于這樣的密鑰加密方法。
之后,執(zhí)行程序加密處理SA2。圖6為該程序加密處理SA2的流程圖,圖7為數(shù)據(jù)流。首先,通過外部主接口50的通過部分52將存儲在外部存儲器100中的已加密的密鑰生成密鑰Enc(密鑰生成密鑰,MK1)、Enc(MK1,CK)設(shè)定在秘密密鑰運算處理部分20中(SA21)。再用安裝在密鑰生成/更新定序器30中的程序加密種子將該加密后的密鑰生成密鑰解密,得到密鑰生成密鑰(SA22)。之后,取入存儲在外部存儲器100中的明文的密鑰生成程序,再用已在SA22解密的密鑰生成密鑰對明文的密鑰生成程序加密,寫到外部存儲器100中(SA23)。由HASH運算部分70對外部存儲器100中的明文的密鑰生成程序進(jìn)行HASH運算,并將計算出的HASH值寫到外部存儲器100中(SA24)。
經(jīng)過了這樣的操作以后,在管理模式,生成由密鑰生成密鑰加密的密鑰生成程序Enc(密鑰生成程序,密鑰生成密鑰)、已加密的密鑰生成密鑰Enc(密鑰生成密鑰,MK1)、Enc(MK1,CK)、密鑰生成程序的HASH值。
—密鑰生成模式—當(dāng)模式ID為“01”時,機(jī)密LSI1成為密鑰生成模式,根據(jù)安裝模式旗標(biāo)的值(SB0)來執(zhí)行密鑰生成器制造處理SB1或者是密鑰管理/發(fā)行處理SB2。
在密鑰生成器制造階段PB1,執(zhí)行密鑰生成器制造處理SB1,圖8為該處理SB1的流程圖,圖9及圖10為數(shù)據(jù)流。這里,根據(jù)模式ID和安裝模式旗標(biāo)的值,在外部主接口50所擁有的程序處理部分51中通過部分52被設(shè)定為有效。
首先,將存儲在機(jī)密LSI1的不可改寫區(qū)域11中加密的程序固有密鑰Enc(程序固有密鑰,MK0)、Enc(MK0,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SB11)。再用安裝在密鑰生成/更新定序器30中的程序加密種子對已加密的程序固有密鑰解密,得到程序固有密鑰(SB12)。接著,將在初始值設(shè)定階段PB0所設(shè)定的、被加密的密鑰生成密鑰Enc(密鑰生成密鑰,MK1)、Enc(MK1,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SB13),用安裝在密鑰生成/更新定序器30中的程序加密種子對該加密的密鑰生成密鑰解密,得到密鑰生成密鑰(SB14)。
之后,通過外部主接口50所擁有的程序處理部分51的通過部分52,將存儲在外部存儲器100中由密鑰生成密鑰加密的密鑰生成程序Enc(密鑰生成程序,密鑰生成密鑰)取到秘密密鑰運算處理部分20中(SB15)。接著,用密鑰生成密鑰將所取入的加密密鑰生成程序解密以后,再用程序固有密鑰加密,得到加密的密鑰生成程序Enc(密鑰生成程序,程序固有密鑰)(SB16)。寫到外部存儲器100中(SB17)。接著,再通過通過部分52將存儲在外部存儲器100中的HASH值設(shè)定在機(jī)密存儲器10的通常區(qū)域13中(SB18)。
由CPU65將存儲在機(jī)密存儲器10的通常區(qū)域13中的安裝模式旗標(biāo)的值設(shè)定為“OFF”(SB19)。接著,消除存儲在機(jī)密存儲器10中的通常區(qū)域13中加密的密鑰生成密鑰Enc(密鑰生成密鑰,MK1)、Enc(MK1,CK)(SB1A),同時消除存儲在外部存儲器100中加密的密鑰生成程序Enc(密鑰生成密鑰程序,密鑰生成密鑰)及HASH值(SB1B)。
在密鑰管理/發(fā)行階段PB2,執(zhí)行密鑰管理/發(fā)行程序SB2。圖11為該處理SB2的流程圖,圖12及圖13為數(shù)據(jù)流。這里,根據(jù)模式ID和安裝模式旗標(biāo)的值,將外部主接口50所擁有的程序解密用加密引擎54設(shè)定為有效。
首先,將存儲在機(jī)密存儲器10的不可改寫區(qū)域11中且加密了的程序固有密鑰Enc(程序固有密鑰,MK0)、Enc(MK0,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SB21)。接著,用安裝在密鑰生成/更新定序器30中的程序加密種子對已加密了的程序固有密鑰解密,得到程序固有密鑰(SB22)。所得到的程序固有密鑰被設(shè)定在外部主接口50的程序解密用加密引擎54的程序固有密鑰存儲寄存器中(SB23)。
之后,通過外部主接口50所擁有的程序處理部分51的程序解密用加密引擎54,對存儲在外部存儲器100中由程序固有密鑰加密了的密鑰生成程序Enc(密鑰生成程序,程序固有密鑰)解密并將它取到HASH運算部分70中,計算HASH值(SB24)。接著,對計算出的HASH值和存儲在機(jī)密存儲器10的通常區(qū)域13中的HASH值進(jìn)行比較,檢查密鑰生成程序是否被竄改了(SB25)。當(dāng)HASH值一致時(在SB26為No),處理將移到存儲在外部存儲器100的密鑰生成程序Enc(密鑰生成程序,程序固有密鑰)中,執(zhí)行密鑰的生成(SB27)。另一方面,當(dāng)HASH值不一致時(在SB26為Yes),就推測是有欺騙行為,而執(zhí)行欺騙訪問控制處理(SB28)。
在商品操作模式下,僅使通過部分52有效而輸入程序,或者使程序解密用加密引擎54有效而將已加密的程序解密并將它輸入,故機(jī)密LSI1的操作受到限制,結(jié)果是不能執(zhí)行明文程序。
—開發(fā)模式—當(dāng)模式ID為“10”時,機(jī)密LSI1成為開發(fā)模式,根據(jù)跳線43的值(SC0)來執(zhí)行程序加密處理SC1、明文程序執(zhí)行處理SC2、程序安裝處理SC3或者是加密程序執(zhí)行處理SC4。
在應(yīng)用程序開發(fā)階段PC1,設(shè)延遲部分53有效,執(zhí)行明文程序執(zhí)行處理SC2,開發(fā)出應(yīng)用程序。所開發(fā)的應(yīng)用程序存儲在外部存儲器100中。
在應(yīng)用程序加密階段PC2,執(zhí)行程序加密處理SC1。圖14為該程序加密處理SC1的流程圖,圖15為數(shù)據(jù)流。首先,將存儲在機(jī)密存儲器10的通常區(qū)域14中的作為共有密鑰密鑰信息的加密的程序共有密鑰Enc(程序共有密鑰,MK2)、Enc(MK2,CK)設(shè)定在秘密密鑰運算處理部分20中(SC11)。接著,用安裝在密鑰生成/更新定序器30中的程序加密種子對已加密的程序共有密鑰解密,得到程序共有密鑰(SC12)。之后,將存儲在外部存儲器100中的明文應(yīng)用程序取進(jìn)來,用在SC12解密的程序共有密鑰對它加密,并寫到外部存儲器100中(SC13)。接著,再由HASH運算部分70對外部存儲器100的明文應(yīng)用程序進(jìn)行HASH運算,將計算出的HASH值寫入外部存儲器100中(SC14)。
經(jīng)過了這樣的操作以后,生成了由程序共有密鑰加密的應(yīng)用程序Enc(應(yīng)用程序,程序共有密鑰)、應(yīng)用程序的HASH值。
其次,在應(yīng)用程序安裝階段PC3,執(zhí)行程序安裝處理SC3;在應(yīng)用程序調(diào)試階段PC4,執(zhí)行加密程序執(zhí)行處理SC4。因為這些處理和商品操作模式中的各個處理SD1,SD2一樣,故詳情省略不述。
就這樣,因為可將擁有含不可改寫區(qū)域11的機(jī)密存儲器10且具有高隱匿性的LSI1的操作模式從安裝模式轉(zhuǎn)換為開發(fā)模式,而讓該LSI1作程序開發(fā)環(huán)境用,故能使程序開發(fā)環(huán)境中的安全性比現(xiàn)在的安全性高。
因原有的共有密鑰由存儲在機(jī)密存儲器10中的作為共有密鑰密鑰信息的已加密的共有密鑰(共有密鑰信息)解密,并用該原有的共有密鑰對明文程序加密,故可在程序開發(fā)者不知道原有的共有密鑰的情況下,對明文程序加密。
因為原有的共有密鑰的解密、利用了該原有的共有密鑰的明文程序的加密,是通過引導(dǎo)程序執(zhí)行的,而不是通過接收來自外部的指示而執(zhí)行的,故既確可防止程序開發(fā)者知道原有的共有密鑰,又能執(zhí)行明文程序的加密。
—商品操作模式—當(dāng)模式ID為“11”時,機(jī)密LSI1成為商品操作模式,根據(jù)安裝模式旗標(biāo)的值(SD0)來執(zhí)行程序安裝處理SD1或者通常引導(dǎo)處理SD2。
在商品安裝階段PD1,執(zhí)行程序安裝處理SD1。圖16為該處理SD1的流程圖,圖17及圖18為數(shù)據(jù)流。這里,根據(jù)模式ID和安裝模式旗標(biāo)的值,在外部主接口50所擁有的程序處理部分51中通過部分52被設(shè)定為有效。
首先,將存儲在機(jī)密存儲器10的不可改寫區(qū)域11中作為固有密鑰密鑰信息的已加密的程序固有密鑰(程序固有密鑰,MK0)、Enc(MK0,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SD11)。接著,用安裝在密鑰生成/更新定序器30中的程序加密種子對已加密的程序固有密鑰解密,得到程序固有密鑰(SD12)。接著,將在初始值設(shè)定階段PD0所設(shè)定的作為共有密鑰密鑰信息的已加密的程序共有密鑰Enc(程序共有密鑰,MK2)、Enc(MK2,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SD13),再使用安裝在密鑰生成/更新定序器30中的程序加密種子對該已加密的程序共有密鑰解密,而得到程序共有密鑰(SD14)。
之后,通過外部主接口50所擁有的程序處理部分51的通過部分52,將存儲在外部存儲器100中且由程序共有密鑰加密的應(yīng)用程序Enc(應(yīng)用程序,程序共有密鑰)取到秘密密鑰運算處理部分20中(SD15)。接著,用程序共有密鑰將所取入的加密了的應(yīng)用程序解密以后,再用程序固有密鑰對它加密,得到加密后的應(yīng)用程序Enc(應(yīng)用程序,程序固有密鑰)(SD16),并寫到外部存儲器100中(SD17)。接著,再通過通過部分52將存儲在外部存儲器100中的HASH值設(shè)定在機(jī)密存儲器10的通常區(qū)域13中(SD18)。
由CPU65將存儲在機(jī)密存儲器10的通常區(qū)域13中的安裝模式旗標(biāo)的值設(shè)定為“OFF”(SD19)。消除存儲在機(jī)密存儲器10的通常區(qū)域13中且已加密的程序共有密鑰Enc(程序共有密鑰,MK1)、Enc(MK1,CK)(SD1A),同時消除存儲在外部存儲器100中且已加密的應(yīng)用程序Enc(應(yīng)用程序,程序共有密鑰)及HASH值(SD1B)。
換句話說,共有密鑰加密程序,是通過讓加密的密鑰從共有密鑰變換為固有密鑰而安裝到系統(tǒng)上的。因此,用戶所持有的每一個產(chǎn)品就安裝了分別由不同的固有密鑰加密后而得到的程序,隱匿性提高。萬一密碼子遭到破壞,受害產(chǎn)品的數(shù)量也是有一定限度的,故和現(xiàn)有的技術(shù)相比,安全性得到了提高。
需提一下,可以以固有ID為本生成固有密鑰。換句話說,對每一個機(jī)密LSI1而言,在它的機(jī)密存儲器10中安裝一個自己的固有ID作固有密鑰密鑰信息,在該產(chǎn)品安裝階段PD1,由引導(dǎo)程序從所安裝的固有ID生成固有密鑰。
在商品操作階段PD2,執(zhí)行通常引導(dǎo)處理SD2。圖19為該處理SD2的流程圖;圖20及圖21為數(shù)據(jù)流。這里,根據(jù)模式ID及安裝模式旗標(biāo)的值將外部主接口50所擁有的程序解密用加密引擎54設(shè)定為有效。
首先,將存儲在機(jī)密存儲器10的不可改寫區(qū)域11中加密了的程序固有密鑰Enc(程序固有密鑰,MK0)、Enc(MK0,CK)設(shè)定在秘密密鑰運算處理部分20的加密密鑰存儲寄存器中(SD21)。用安裝在密鑰生成/更新定序器30中的程序加密種子對該已加密的程序固有密鑰解密,得到程序固有密鑰(SD22)。所得到的程序固有密鑰設(shè)定在外部主接口50的程序解密用加密引擎54的程序固有密鑰存儲寄存器中(SD23)。
之后,將存儲在機(jī)密存儲器10的不可改寫區(qū)域11中的數(shù)據(jù)固有ID設(shè)定在秘密密鑰運算處理部分20的固有ID存儲寄存器中(SD24)。由CPU65產(chǎn)生隨機(jī)數(shù),并將它設(shè)定在秘密密鑰運算處理部分20的隨機(jī)數(shù)存儲寄存器中(SD25)。由秘密密鑰運算處理部分20從數(shù)據(jù)固有ID和隨機(jī)數(shù)生成數(shù)據(jù)固有密鑰(SD26)。
之后,通過外部主接口50所擁有的程序處理部分51的程序解密用加密引擎54,對存儲在外部存儲器100中且由程序固有密鑰加密的應(yīng)用程序Enc(應(yīng)用程序,程序固有密鑰)解密并將它取到HASH運算部分70中,計算HASH值(SD27)。接著,對該計算出的HASH值和存儲在機(jī)密存儲器10的通常區(qū)域13中的HASH值進(jìn)行比較,檢查應(yīng)用程序是否被竄改(SD28)。當(dāng)HASH值一致時(在SD29為No),處理將移到存儲在外部存儲器100的應(yīng)用程序Enc(應(yīng)用程序,程序固有密鑰),執(zhí)行應(yīng)用(SD2A)。另一方面,當(dāng)HASH值不一致時(在SD29為Yes),就推測是有不正行為,而執(zhí)行不正訪問控制處理(SD2B)。
在商品操作模式下,僅使通過部分52有效輸入程序,或者僅使程序解密用加密引擎54有效而將已加密的程序解密并將它輸入,故機(jī)密LSI1的操作受到了限制,結(jié)果是不能執(zhí)行明文程序。
需提一下,在開發(fā)模式和商品操作模式下,即使從外部利用秘密密鑰運算處理部分20執(zhí)行生成密鑰這樣的處理,也能由密鑰生成/更新定序器30判斷出這一情況而不得執(zhí)行產(chǎn)生密鑰這樣的處理。換句話說,密鑰生成/更新定序器30,在開發(fā)模式及商品操作模式下,操作受限而只在啟動時使用程序加密種子,除此以外的其他時候都不能使用程序加密種子。故不能執(zhí)行生成密鑰的處理。
需提一下,在本實施例中,程序、數(shù)據(jù)存儲在外部存儲器100中,安裝在機(jī)密存儲器10中的初始值存儲在外部工具110中,將程序、數(shù)據(jù)及初始值安裝在哪里都行。例如,可從外部工具110中讀入程序、數(shù)據(jù),再對它加密,是沒有任何問題的。
需提一下,在本實施例中。由引導(dǎo)程序執(zhí)行各種處理,本發(fā)明并不限于此,由其他手段來執(zhí)行處理的一部分或者全部也是可以的。只不過是,由引導(dǎo)程序來執(zhí)行處理時的安全性會比由來自外部的指示執(zhí)行處理的安全性更高。
綜上所述,根據(jù)本發(fā)明,因為可將擁有含不可改寫區(qū)域的機(jī)密存儲器且隱匿性高的LSI的操作模式從安裝模式轉(zhuǎn)換為開發(fā)模式,而讓該LSI作程序開發(fā)環(huán)境用,故能使程序開發(fā)環(huán)境中的安全性比現(xiàn)在的安全性高。
權(quán)利要求
1.一種程序開發(fā)方法,開發(fā)的是裝到擁有包括含不可改寫區(qū)域的機(jī)密存儲器的LSI的系統(tǒng)中的程序,其中包括以其結(jié)構(gòu)和所述LSI一樣的LSI作開發(fā)用LSI,并將它設(shè)定為與程序安裝及產(chǎn)品工作時的商品操作模式不同的開發(fā)模式的步驟;及在所述開發(fā)用LSI上開發(fā)所述程序的步驟。
2.根據(jù)權(quán)利要求1所述的程序開發(fā)方法,其中限制所述LSI的操作,做到當(dāng)將它設(shè)定為開發(fā)模式時能執(zhí)行明文程序,同時當(dāng)將它設(shè)定為商品操作模式時則不能執(zhí)行明文程序。
3.根據(jù)權(quán)利要求1所述的程序開發(fā)方法,其中包括在所述開發(fā)用LSI上,對在所述程序開發(fā)步驟中所開發(fā)的程序加密的加密步驟。
4.根據(jù)權(quán)利要求1所述的程序開發(fā)方法,其中限制所述LSI的操作,做到當(dāng)將它設(shè)定為開發(fā)模式時,不會生成用以將明文程序加密的密鑰。
5.根據(jù)權(quán)利要求1所述的程序開發(fā)方法,其中包括以其結(jié)構(gòu)與所述LSI一樣的LSI作密鑰生成用LSI,將它設(shè)定為與開發(fā)模式及商品操作模式不同的密鑰生成模式的步驟;將加密后的密鑰生成程序安裝到所述密鑰生成用LSI上并通過執(zhí)行該密鑰生成程序而生成密鑰的步驟。
6.根據(jù)權(quán)利要求5所述的程序開發(fā)方法,其中限制所述LSI的操作,做到在將它設(shè)定為密鑰生成模式的時候,不能執(zhí)行明文程序。
7.根據(jù)權(quán)利要求5所述的程序開發(fā)方法,其中包括以其結(jié)構(gòu)與所述LSI一樣的LSI作管理者用LSI,將它設(shè)定為與開發(fā)模式、商品操作模式及密鑰生成模式不同的管理模式的步驟;及在上述管理者用LSI上開發(fā)所述密鑰生成程序并用任意密鑰加密的步驟。
8.一種程序開發(fā)支援裝置,它支援加密程序的開發(fā),其中包括其結(jié)構(gòu)與上述加密程序運作的LSI一樣的LSI和將明文程序存儲起來的外部存儲器;所述LSI,又包括存儲與原有的共有密鑰有關(guān)的共有密鑰密鑰信息的機(jī)密存儲器;且可執(zhí)行從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟,及用所述原有的共有密鑰將從所述外部存儲器輸入的明文程序加密的第2步驟。
9.一種程序開發(fā)支援裝置,它支援加密程序的開發(fā),其中包括LSI和將明文程序存儲起來的外部存儲器;所述LSI,又包括存儲與原有的共有密鑰有關(guān)的共有密鑰密鑰信息的機(jī)密存儲器和存儲引導(dǎo)程序的引導(dǎo)ROM;且包括通過執(zhí)行存儲在所述引導(dǎo)ROM中的引導(dǎo)程序,而執(zhí)行從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟,及用所述原有的共有密鑰對從所述外部存儲器輸入的明文程序加密的第2步驟。
10.根據(jù)權(quán)利要求8或者9所述的程序支援開發(fā)裝置,其中所述共有密鑰密鑰信息,包括用原有的第1中間密鑰對原有的共有密鑰加密后而得到的加密共有密鑰、和用原有的第2中間密鑰對所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰;在所述第1步驟中,利用所述加密共有密鑰、加密第1中間密鑰及程序加密種子對所述原有的共有密鑰解密。
11.一種安裝加密程序的方法,是將加密程序安裝到包括擁有機(jī)密存儲器的LSI及外部存儲器的密鑰安裝系統(tǒng)中的方法,其中包括將與原有的共有密鑰有關(guān)的共有密鑰密鑰信息和與原有的固有密鑰有關(guān)的固有密鑰密鑰信息存儲在所述機(jī)密存儲器中的初始值設(shè)定處理,在所述LSI上,從存儲在所述機(jī)密存儲器中的共有密鑰密鑰信息得到原有的共有密鑰的第1步驟,在所述LSI上,用在所述第1步驟得到的原有的共有密鑰對從所述外部存儲器施來的共有密鑰加密程序解密的第2步驟,在所述LSI上,從存儲在所述機(jī)密存儲器中的固有密鑰密鑰信息得到原有的固有密鑰的第3步驟,在所述LSI上,用在所述第3步驟得到的原有的固有密鑰對在所述第2步驟得到的明文程序加密的第4步驟,以及將在所述第4步驟中得到的固有密鑰加密程序安裝到所述外部存儲器中。
12.根據(jù)權(quán)利要求11所述的加密程序的安裝方法,其中所述LSI包括存儲引導(dǎo)程序的引導(dǎo)ROM;通過在所述LSI上執(zhí)行存儲在所述引導(dǎo)ROM中的引導(dǎo)程序來執(zhí)行上述第1~第4步驟。
13.根據(jù)權(quán)利要求11所述的加密程序的安裝方法,其中將所述固有密鑰密鑰信息存儲到所述機(jī)密存儲器的不可改寫區(qū)域。
14.根據(jù)權(quán)利要求11所述的加密程序的安裝方法,其中所述共有密鑰密鑰信息,包括用原有的第1中間密鑰對原有的共有密鑰加密后而得到的加密共有密鑰、和用原有的第2中間密鑰對所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰;在所述第1步驟中,利用所述加密共有密鑰、加密第1中間密鑰和程序加密種子對所述原有的共有密鑰解密。
15.根據(jù)權(quán)利要求11所述的加密程序的安裝方法,其中所述固有密鑰密鑰信息,包括用原有的第1中間密鑰對原有的固有密鑰加密后而得到的加密固有密鑰、和用原有的第2中間密鑰對所述原有的第1中間密鑰加密后而得到的加密第1中間密鑰;在所述第3步驟中,利用所述加密固有密鑰、加密第1中間密鑰和程序加密種子對所述原有的固有密鑰解密。
16.根據(jù)權(quán)利要求11所述的加密程序的安裝方法,其中所述固有密鑰密鑰信息為該LSI所固有的固有ID。
全文摘要
本發(fā)明公開了一種程序開發(fā)方法、程序開發(fā)支援裝置及程序安裝方法。對密鑰安裝系統(tǒng)提供一安全水平很高的開發(fā)環(huán)境。用一個其結(jié)構(gòu)和擁有包括機(jī)密存儲器的LSI系統(tǒng)中的LSI一樣的LSI,將它設(shè)定在與商品操作模式不同的開發(fā)模式上,來進(jìn)行該擁有包括機(jī)密存儲器的LSI系統(tǒng)的程序的開發(fā);還將它設(shè)定為管理模式而進(jìn)行密鑰生成程序的開發(fā)和加密;也將它設(shè)定為密鑰生成模式,執(zhí)行已加密的密鑰生成程序而生成各種密鑰。
文檔編號G06F9/445GK1477495SQ0313305
公開日2004年2月25日 申請日期2003年7月23日 優(yōu)先權(quán)日2002年7月24日
發(fā)明者藤原睦, 根本祐輔, 安井純一, 前田卓治, 伊藤孝幸, 山田泰司, 井上信治, 一, 司, 幸, 治, 輔 申請人:松下電器產(chǎn)業(yè)株式會社