專利名稱:有加密部分或外部接口的半導(dǎo)體器件及內(nèi)容再生方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種提高象用于密鑰安裝系統(tǒng)的LSI那樣的半導(dǎo)體器件的 安全性的技術(shù)。
背景技術(shù):
本案申請人在曰本國特愿(專利申請)2001 —286881中,揭示了使 密鑰安裝系統(tǒng)中的密鑰的機密性和隱匿性比現(xiàn)有技術(shù)下的高的技術(shù)。但因為所述這一技術(shù)不是公開了的發(fā)明,所述這里沒有本來應(yīng)該敘述 的現(xiàn)有技術(shù)。發(fā)明內(nèi)容本發(fā)明的目的,在于提供一種安全性級別很高的半導(dǎo)體器件,提供 一種安全性級別很高的內(nèi)容再生方法。為解決上述問題,本發(fā)明提供一種半導(dǎo)體器件,包括執(zhí)行對程序加 密及對程序解密中之至少一個的加密部分,所述加密部分,擁有能夠執(zhí) 行含有對程序進行加密處理及解密處理的多個順序的加密運算部分及加密 控制部分,該加密控制部分,判斷是否允許執(zhí)行所述加密運算部分能夠執(zhí) 行的每一個順序,對被判斷為不允許執(zhí)行的順序,它就禁止所述加密運算部分的操作。根據(jù)本發(fā)明,在加密部分,對加密控制部分判斷出加密運算部分可執(zhí) 行的每一個順序中的不允許執(zhí)行的順序,就禁止加密運算部分的操作。換 句話說,加密運算部分僅執(zhí)行由加密控制部分判斷出的允許執(zhí)行的順序。 所以可預(yù)先防止順序的不正當(dāng)執(zhí)行,提高安全性。在本發(fā)明所涉及的半導(dǎo)體器件中,所述多個順序中最好含有密鑰的加 密處理及解密處理。在本發(fā)明所涉及的半導(dǎo)體器件中,最好是,加密控制部分擁有用以存儲模式ID的模式ID存儲寄存器,而且,根據(jù)所述模式ID存儲寄存器中 所存儲的模式ID的值判斷是否允許執(zhí)行每一個順序。最好是,所迷加密控制部分擁有對應(yīng)于所述每一個順序而設(shè)且用以 存儲其發(fā)行次數(shù)的寄存器,所述加密控制部分除了根據(jù)所述模式ID的值 以外,還根據(jù)存儲在所述寄存器中的所述每一個順序的發(fā)行次數(shù)判斷是否 允許執(zhí)行每一個順序。再就是,最好是,擁有有不可改寫區(qū)域的機密存儲器,所述不可改寫 區(qū)域中存儲著所述模式ID,所述模式ID存儲寄存器僅在起動該半導(dǎo)體器 件時可寫入,而且起動時,寫入的是從所述機密存儲器的所述不可改寫區(qū) 域讀出的所述模式ID。還有,最好是,擁有存儲引導(dǎo)程序的引導(dǎo)ROM, 將所述模式ID寫到所述模式ID存儲寄存器中這一操作由存儲在所述引導(dǎo) ROM中的引導(dǎo)程序來執(zhí)行。再就是,最好是,擁有存儲表示該半導(dǎo)體器件是否被第一次起動的安 裝模式旗標(biāo)的機密存儲器,所述加密控制部分除根據(jù)所述模式ID值以外, 還根據(jù)所述安裝模式旗標(biāo)來判斷是否允許執(zhí)行每一個順序。再就是,最好是,本發(fā)明所涉及的半導(dǎo)體器件,擁有存儲與所述多個 順序中的至少一個相對應(yīng)的引導(dǎo)程序的引導(dǎo)ROM,所述加密運算部分通 過執(zhí)行存儲在所述引導(dǎo)ROM中的引導(dǎo)程序來執(zhí)行順序。再就是,最好是,本發(fā)明所涉及的半導(dǎo)體器件擁有控制部件,通過它 的控制做到不能從該半導(dǎo)體器件外部訪問所述加密運算部分及加密控制 部分所擁有的寄存器。再就是,最好是,本發(fā)明提高一種半導(dǎo)體器件,在該半導(dǎo)體器件和外 部存儲器之間,擁有用以進行程序、數(shù)據(jù)的輸出入的外部接口,所述外部程序處理部分和數(shù)據(jù)處理部分相互獨立。根據(jù)本發(fā)明,在外部接口中,程序處理部分和數(shù)據(jù)處理部分是獨立的。 因此,程序遭到不正當(dāng)執(zhí)行的風(fēng)險就被分散了,安全性提高。再就是,最好是,所述本發(fā)明所涉及的半導(dǎo)體器件中的程序處理部分, 擁有將程序原樣輸出入的通過部分及程序解密用密碼引擎。該程序解密用密碼引擎,接收存儲在所述外部存儲器中的加密了的程序,將它解密為 明文程序,再供向該半導(dǎo)體器件內(nèi)部。再就是,最好是,所述通過部分,擁有執(zhí)行用通過部分和加密用通 過部分。在該半導(dǎo)體器件中執(zhí)行通過所述執(zhí)行用通過部分所輸入的程序, 另 一方面,通過所述加密用通過部分輸入的程序被供向加密部分并被加密。再就是,最紓是,擁有存儲表示所述外部存儲器中的各個區(qū)域和地址 之間的對應(yīng)關(guān)系的地址管理信息的地址區(qū)分存儲寄存器,當(dāng)訪問所述外部 存儲器讀入程序的時候,參考所述地址管理信息,決定使所述加密用通過 部分、所述執(zhí)行用通過部分及所述程序解密用密碼引擎中之某一個有效。再就是,最好是,所述地址區(qū)分存儲寄存器僅在該半導(dǎo)體器件起動時 可以寫入。再就是,最好是,擁有有不可改寫區(qū)域的機密存儲器。所述不可改寫 區(qū)域中存儲著所述地址管理信息,起動該半導(dǎo)體器件時,所述地址區(qū)分存 儲寄存器中寫入從所述機密存儲器的所述不可改寫區(qū)域讀出的所述地址管 理信息。再就是,最好是,擁有具有用以存儲模式ID的模式ID存儲寄存器的 模式定序器,另外還根據(jù)存儲在所述模式ID存儲寄存器中的模式ID的值 決定使所述加密用通過部分、所述執(zhí)行用通過部分及所述程序解密用密碼 引擎中之某一個有效。再就是,最好是,所述模式定序器擁有跳線值判斷部分,另外還根據(jù) 由所述跳線值判斷部分判斷出的跳線值,決定使所述加密用通過部分、所 述執(zhí)行用通過部分及所述程序解密用密碼引擎中之某一個有效。再就是,最好是,在本發(fā)明所涉及的半導(dǎo)體器件中,數(shù)據(jù)處理部分擁 有將數(shù)據(jù)原樣輸出入的通過部分及在輸出入數(shù)據(jù)時進行加密或者解密的 數(shù)據(jù)加密解密用密碼引擎。為達到上述目的,本發(fā)明提供一種內(nèi)容再生方法,包括將存儲在外 部存儲器的不可再生區(qū)域中的原來的內(nèi)容取到LSI中的步驟;在所述LSI 中,使用存儲在內(nèi)部存儲器中的固有ID生成數(shù)據(jù)固有密鑰的步驟;在所 述LSI中,使用所述數(shù)據(jù)固有密鑰對所述原來的內(nèi)容加密的步驟;將已加 密了的內(nèi)容存儲到所述外部存儲器的可再生區(qū)域中的步驟;將存儲在所述可再生區(qū)域中的所述已加密了的內(nèi)容取到所述LSI中,利用所述數(shù)據(jù)固有 密鑰將該已加密了的內(nèi)容解密并再生該已加密了的內(nèi)容的步驟。根據(jù)本發(fā)明,在LSI中,用利用存儲在內(nèi)部存儲器中的固有ID生成 的數(shù)據(jù)固有密鑰,對存儲在外部存儲器的不可再生區(qū)域中的原來的內(nèi)容加 密。已加密了的內(nèi)容,被存儲到外部存儲器的可再生區(qū)域中,再生的時候 使用數(shù)據(jù)固有密鑰將該加密了的內(nèi)容解密。這樣以來,因為外部存儲器的 可再生區(qū)域中存儲著用從固有ID生成的數(shù)據(jù)固有密鑰加密了的內(nèi)容,故 不能由沒有相同的數(shù)據(jù)固有密鑰的其他LSI來進行再生。結(jié)果是,可防止 內(nèi)容被不正當(dāng)?shù)貓?zhí)行,提高安全性級別。最好是,在本發(fā)明所涉及的內(nèi)容再生方法下,所述原來的內(nèi)容為一由 數(shù)據(jù)共有密鑰加密的內(nèi)容,在使用所述數(shù)據(jù)固有密鑰將所述原來的內(nèi)容加 密之前,使用存儲在內(nèi)部存儲器中的所述數(shù)據(jù)共有密鑰將所述原來的內(nèi)容 解密。發(fā)明的效果綜上所述,根據(jù)本發(fā)明,加密運算部分僅執(zhí)行由加密控制部分判斷出 為允許執(zhí)行的順序。因此,可事先防止順序的不正當(dāng)執(zhí)行。在外部接口, 程序處理部分和數(shù)據(jù)處理部分是獨立的。因此,程序遭到不正當(dāng)執(zhí)行的風(fēng) 險就分散了。還有,因為在外部存儲器的可再生區(qū)域,存儲著利用由固有 ID生成的數(shù)據(jù)固有密鑰加密的內(nèi)容,故不可能由不具有同一個數(shù)據(jù)固有密 鑰的其他LSI再生這一內(nèi)容。因此,防止了內(nèi)容的不正當(dāng)執(zhí)行。結(jié)果是安 全性級別提高了 。
圖1為顯示本發(fā)明的實施例所涉及的作為半導(dǎo)體器件的機密LSI的結(jié) 構(gòu)的方框圖。圖2為顯示使用了圖1的機密LSI的開發(fā)及產(chǎn)品化的整個流程的圖。 圖3為顯示引導(dǎo)程序的整個處理流程的流程圖。 圖4為初始值設(shè)定處理SZ1的流程圖。圖5為顯示圖1中的機密LSI1中的加密部分及其周邊的結(jié)構(gòu)的圖。 圖6為顯示圖1中的機密LSI1中的共用總線與私用總線的設(shè)定方法的圖。圖7為顯示圖1中的機密LSIl中的外部主接口與其周邊的結(jié)構(gòu)的圖。圖8為顯示商品操作模式中外部主接口的操作的圖。圖9為顯示機密存儲器的存取控制的圖。圖10為商品操作模式中的通常引導(dǎo)程序的一個數(shù)據(jù)流。圖11為商品操作模式中的通常引導(dǎo)程序的又一個數(shù)據(jù)流。符號說明l一機密LSI(半導(dǎo)體器件);2 —加密部分;10 —機密存儲器;ll一 不可改寫區(qū)域;20 —秘密密鑰運算處理部分(加密運算部分);30—密鑰 生成/更新定序器(加密控制部分);31 —模式ID存儲寄存器;33 —順序 發(fā)行次數(shù)存儲寄存器;35 —存儲部分;40—模式定序器;41—模式ID存 儲寄存器;45 —跳線值判斷部分;50—外部接口; 51 —程序處理部分;52 —通過部分;52a —執(zhí)行用通過部分;52b —加密用通過部分;53 —程序加 解密用密碼引擎;55 —數(shù)據(jù)處理部分;56—通過部分;58 —數(shù)據(jù)加密/解 密用密碼引擎;60—引導(dǎo)ROM; 81 —地址區(qū)分存儲寄存器;82 —共用總 線地址存儲部分;83 —外部存取地址判斷部分;100—外部存儲器。
具體實施方式
下面,參考附圖,說明本發(fā)明的實施例。圖1為表示本實施例所涉及的作為半導(dǎo)體器件的機密LSI的內(nèi)部結(jié)構(gòu) 的方框圖。圖l中的結(jié)構(gòu)是這樣的,即機密LSI1可通過外部總線120和 外部存儲器100 (閃爍存儲器101及RAM102)等連接。而且,可通過施 加模式ID來設(shè)定操作模式。對本實施例所涉及的主要的結(jié)構(gòu)要素進行簡單的說明。 首先,機密LSI 1包括含不可改寫區(qū)域11的機密存儲器(機密Flash) 10。該不可改寫區(qū)域11中設(shè)有不可改寫區(qū)域?qū)懭肫鞓?biāo)12。 一旦模式ID 寫到機密存儲器10中,不可改寫區(qū)域?qū)懭肫鞓?biāo)12的旗標(biāo)值就會從"可寫 入"變成"已經(jīng)寫完",之后就不能向不可改寫區(qū)域11寫入了 。需提一下, 在本實施例中,機密存儲器10由閃爍存儲器構(gòu)成,當(dāng)然并不限于此,只 要是非易失性存儲器什么都行。還有,加密部分2是對程序進行加密、解密的部分,擁有作為加密 運算部分的秘密密鑰運算處理部分20、作為加密控制部分的密鑰生成/更 新定序器30、存儲程序加密種子的存儲部分35。秘密密鑰運算處理部分 20擁有存儲各種密鑰等的寄存器,它能夠執(zhí)行包括程序的加密處理或者解 密處理的多個順序(sequences)。密鑰生成/更新定序器30判斷是否允 許執(zhí)行秘密密鑰運算處理部分20可執(zhí)行的各種順序,針對已經(jīng)判斷出為 不允許執(zhí)行的順序,便讓秘密密鑰運算處理部分20停止搡作。密鑰生成 /更新定序器30擁有模式ID存儲寄存器31,根據(jù)存儲在該模式ID存儲 寄存器31中的模式ID的值,判斷是否允許執(zhí)行每一個順序。密鑰生成/ 更新定序器30還擁有存儲表示密鑰或者程序由什么算法、密鑰長加密的 加密種類標(biāo)識符的加密種類標(biāo)識符存儲寄存器32。加密部分2的結(jié)構(gòu)和操 作的詳細情況后述。模式定序器40也擁有模式ID存儲寄存器41。該模式定序器40根據(jù) 存儲在模式ID存儲寄存器41中的模式ID和跳線43的值控制外部主接 口(I/F)50的操作,換句話說,是控制通過哪一個主接口來將存儲在外 部存儲器100中的程序、數(shù)據(jù)讀進來。由此可控制是否可執(zhí)行存儲在外部 存儲器100中的明文程序。模式定序器40還擁有存儲了表示用什么方 法將密鑰加密的加密種類標(biāo)識符的加密種類標(biāo)識符存儲寄存器42。外部主接口 50,在模式定序器40的控制下,通過程序處理部分51 所擁有的通過部分52和程序解密用密碼引擎53、數(shù)據(jù)處理部分55所擁 有的通過部分56及數(shù)據(jù)加密/解密用密碼引擎58中之任一個,在它和外 部存儲器100之間進行程序、數(shù)據(jù)的輸出入。這里,除后述的管理模式及應(yīng)用程序開發(fā)模式以外,通過通過部分52 輸入的程序不會在機密LSI1內(nèi)部執(zhí)行。換句話說,通過部分52,是一在 明文程序的加密、或者是用其他的密鑰對已經(jīng)加密了的程序再次加密時有 效的部分。機密LSIl的結(jié)構(gòu)是這樣的,除了后述的管理模式及應(yīng)用程序 開發(fā)模式以外,不讓操作移向通過通過部分52輸入的程序。因此,即使 例如已經(jīng)成為商品的機密LSI1通過通過部分52取進了明文程序,也不能 執(zhí)行該明文程序。引導(dǎo)ROM60存儲控制機密LSI1的啟動操作的引導(dǎo)程序。HASH運算部分70,為驗證讀到機密LSIl中的程序的正當(dāng)性而計算HASH值。還有,在外部存儲器100中,程序存儲在閃爍存儲器101中;數(shù)據(jù)(內(nèi) 容)存儲在RAM102中。外部工具110中存儲了一開始啟動機密LSIl時 存儲在機密存儲器10中的各種初始值。該初始值的種類隨著所設(shè)定的操 作模式的不同而不同。圖2為顯示使用了圖1中的機密LSI1的開發(fā)及產(chǎn)品化的整個流程的 圖。如圖2所示,機密LSI1在管理模式(模式ID:OO)、密鑰生成模式(模 式ID: 01)、開發(fā)模式(模式ID: 10)及商品操作模式(模式ID: 11)這 4種操作模式下操作。首先,被設(shè)定為管理模式的機密LSI1作為管理者用LSI操作。在管 理者用LSI中,開發(fā)密鑰生成程序(PA1),而且,使用任意的密鑰生成 密鑰對該密鑰生成程序加密(PA2)。被設(shè)定為密鑰生成模式的機密LSI1作為密鑰生成用LSI操作,在密 鑰生成用LSI中,安裝在管理者用LSI中生成的、加密的密鑰生成程序 (PB1)。執(zhí)行該密鑰生成程序以后,就生成了各種密鑰(PB2)。被設(shè)定為開發(fā)模式的機密LSI1作為開發(fā)用LSI操作,在開發(fā)用LSI 中,開發(fā)在實際的產(chǎn)品中執(zhí)行的應(yīng)用程序(PC1)。而且,使用程序共有密 鑰對該應(yīng)用程序加密(PC2)。被設(shè)定為商品操作模式的機密LSI1作為實際的商品LSI操作。在商 品LSI中,安裝了在開發(fā)用LSI中生成的由程序共有密鑰加密的應(yīng)用程序, 在其內(nèi)部,用程序固有密鑰將所安裝的應(yīng)用程序變換成加密了的的應(yīng)用程 序(PD1)。在通常的商品搡作下執(zhí)行由程序固有密鑰加密了的應(yīng)用程序。 需提一下,在開發(fā)用LSI中也可為調(diào)試應(yīng)用程序(PC4)來執(zhí)行該變換處 理(PC3)。機密LSIl,通過執(zhí)行存儲在引導(dǎo)ROM60中的引導(dǎo)程序而進行以下 操作。圖3為顯示引導(dǎo)程序的整個處理過程的流程圖。 一給機密LSI1通上 電以后,就由CPU65來執(zhí)行存儲在引導(dǎo)ROM60中的引導(dǎo)程序。如圖3 所示,首先,將每一個硬件初始化(SZO)。然后,從外部工具110讀入各 種各樣的初始值,并將該讀入的初始值設(shè)定在機密存儲器10中(SZ1)。圖4為初始值設(shè)定處理SZ1的流程圖。首先,在跳線44,判斷機密 存儲器10是否安裝在LSI內(nèi)(SZll)。接著,判斷不可改寫區(qū)域?qū)懭肫?標(biāo)12是否為"已寫完"(SZ12),因為當(dāng)為"已寫完"(SZ12為"是") 時,初始值就已經(jīng)設(shè)定在機密存儲器10中,故結(jié)束處理SZ1。當(dāng)不可改 寫區(qū)域?qū)懭肫鞓?biāo)12為"可寫入"(SZ12為"否")時,就將初始值寫到機 密存儲器10中。不僅將模式ID寫到機密存儲器10的不可改寫區(qū)域11 中,還將加密的程序固有密鑰、地址管理信息、數(shù)據(jù)固有密鑰寫到機密存 儲器10的不可改寫區(qū)域11中(SZ13、 SZ16 SZ18)。需提一下,在一 開始的判斷結(jié)果為機密存儲器10在LSI的外部的時候(SZ14為"否"), 就將模式ID寫在表示商品操作模式的值上(SZ15)。這樣以來,機密存 儲器10在LSI包外那樣的產(chǎn)品,就只可在商品操作模式下操作。接下來,將不可改寫區(qū)域?qū)懭肫鞓?biāo)12設(shè)定為"已寫完"(SZ19)。這 樣以來,以后的不可改寫區(qū)域11就不能再改寫了。而且,還將加密種類 標(biāo)識符及安裝模式旗標(biāo)寫到通常區(qū)域13、 14中(SZ1A)。而且,當(dāng)模式 ID顯示管理模式以外的模式的時候(SZ1B為"否"),除了將加密了的種 類標(biāo)識符及安裝模式旗標(biāo)寫到通常區(qū)域13、 14中以外,還將已加密的共 有密鑰/密鑰生成密鑰寫到通常區(qū)域13、 14中(SZ1C)。之后,回到圖3,執(zhí)行前處理SZ2。這里,設(shè)定在機密存儲器10的不 可改寫區(qū)域11中的模式ID,被設(shè)定在密鑰生成/更新定序器30的模式 ID存儲寄存器31及模式定序器40的模式ID存儲寄存器41中;設(shè)定在 機密存儲器10的第1通常區(qū)域13中的加密種類標(biāo)識符被設(shè)定在密鑰生成 /更新定序器30的加密種類標(biāo)識符存儲寄存器32及模式定序器40的加 密種類標(biāo)識符存儲寄存器42中;機密存儲器10的不可改寫區(qū)域11中所 存儲的地址管理信息被設(shè)定在MEMC80的地址區(qū)分存儲寄存器81中。 到這里為止的操作,和圖2中的初始值設(shè)定階段PAO、 PBO、 PCO、 PDO 相對應(yīng)。之后,根據(jù)模式ID的值來進行每一個模式下的操作(SZ3)。 當(dāng)模式ID為"00"時,機密LSI1成為管理模式,根據(jù)跳線43的值 (SA0)執(zhí)行明文程序執(zhí)行處理SA1或者是程序加密處理SA2。在密鑰生 成程序開發(fā)階段PA1,進行明文程序執(zhí)行處理SA1,生成密鑰生成程序。該密鑰生成程序存儲在外部存儲器100中。在密鑰生成程序加密階段PA2, 由任意的密鑰生成密鑰對密鑰生成程序加密。當(dāng)模式ID為"01"時,機密LSI1成為密鑰生成模式,根據(jù)安裝模 式旗標(biāo)的值(SB0)來執(zhí)行密鑰生成器制造處理SB1或者是密鑰管理/發(fā) 行處理SB2。在密鑰生成器制造階段PB1,執(zhí)行密鑰生成器制造處理SB1, 用程序固有密鑰對由任意的密鑰生成密鑰加密的密鑰生成程序再次力二密。, 在密鑰管理/發(fā)行階段PB2,執(zhí)行由程序固有密鑰加密了的密鑰生i程 序,即可執(zhí)行密鑰管理/發(fā)行處理SB2,而生成密鑰。當(dāng)模式ID為"10"時,機密LSI1成為開發(fā)模式,根據(jù)跳線43的值 (SCO)來執(zhí)行程序加密處理SC1、明文程序執(zhí)行處理SC2、程序安裝處 理SC3或者是加密程序執(zhí)行處理SC4。在應(yīng)用程序開發(fā)階段PC1,執(zhí)行 明文程序執(zhí)行處理SC2,開發(fā)出應(yīng)用程序。所開發(fā)的應(yīng)用程序存儲在外部 存儲器100中。在應(yīng)用程序加密階段PC2,執(zhí)行程序加密處理SC1。在應(yīng) 用程序安裝階段PC3,執(zhí)行程序安裝處理SC3;在應(yīng)用程序調(diào)試階段PC4, 執(zhí)行加密程序執(zhí)行處理SC4。 SC3、 SC4這些處理和商品操作模式中的各 個處理SD1、 SD2—樣。當(dāng)模式ID為"11"時,機密LSI1成為商品操作模式,根據(jù)安裝模式 旗標(biāo)的值(SD0)來執(zhí)行程序安裝處理SD1或者通常引導(dǎo)處理SD2。在 商品安裝階段PD1,執(zhí)行程序安裝處理SD1。在商品操作階段PD2,執(zhí) 行通常引導(dǎo)處理SD2。圖5為顯示加密部分2及其周邊部分的結(jié)構(gòu)的圖。如圖5所示,密鑰 生成/更新定序器30,除具有模式ID存儲寄存器31及加密種類標(biāo)識符 存儲寄存器32外,還擁有對應(yīng)于利用秘密運算處理部分20執(zhí)行的每一個 順序而設(shè)、用于存儲其發(fā)行次數(shù)的寄存器33,以及參考存儲器31、 33, 判斷是否可以執(zhí)行各個順序(是否可以執(zhí)行引導(dǎo)ROM60中的每一個程序 及外部程序),而控制秘密密鑰運算處理部分20的操作的控制部分34。在 機密LSI1中,每一個順序每發(fā)行一次,與之對應(yīng)的存儲器33就加1。程序加密種子35,為在對密鑰解密時或者生成密鑰時所用的種子,包 括共有密鑰用和固有密鑰用種子。在上述商品操作模式、開發(fā)模式下,由控制部分34施加制約,做到:將存儲在機密存儲器10中的值設(shè)定在加密部分2中的每一個寄存器中的 順序(機密Flash取得器/程序(loader))、生成密鑰及對密鑰解密的順 序(密鑰定序器)分別只能發(fā)行一次。例如,若起動機密LSI時, 一旦由 引導(dǎo)程序?qū)⒋鎯υ跈C密存儲器中的模式ID存儲到模式ID存儲寄存器31 中,就不能再對模式ID進行改寫了 。還有,若在起動機密LSI時,對共 有密鑰和固有密鑰解密,而將它們存儲到秘密秘鑰運算處理部分20內(nèi)部 的寄存器中,就不能再生成密鑰,也不能對密鑰解密了。因此,即使外部 存儲器100中安裝了密鑰生成程序,也不能生成密鑰。曾經(jīng)解密的固有密 鑰存儲在外部接口 50內(nèi)的固有密鑰存儲寄存器中,加密了的程序用該周 有密鑰執(zhí)行。使用存儲在秘密秘鑰運算處理部分20內(nèi)部的寄存器中的共 有密鑰、固有密鑰更新程序。需提一下,在上述密鑰生成模式、管理模式中,因為解除了對密鑰定 序器的限制,故能夠生成密鑰。這里,可設(shè)置對應(yīng)于程序加密種子而設(shè)的、存儲其使用次數(shù)的程序加 密種子使用次數(shù)存儲寄存器,來代替順序發(fā)行次數(shù)存儲寄存器33。因為在 生成密鑰及對密鑰解密的時候使用程序加密種子,故例如只要用模式ID 限制其使用次數(shù),即使計算程序加密種子的使用次數(shù),也能限制密鑰的生 成及對密鑰的解密。還有,程序加密種子并不一定非要包括共有密鑰用及固有密鑰用種子。圖6為顯示共用總線及私用總線的設(shè)定方法的圖。這里,"私用總線" 指的是,不能從外部存取(外部存取)的總線;外部接口 50物理上也并 非一定要獨立。換句話說,被設(shè)定為接在私用總線91上的寄存器等,不 能通迚外部存取進行讀出和寫入。地址分別施加給了機密LSI1內(nèi)部的寄存器等,共用總線地址存儲部 分82存儲地址中接在共用總線92上的寄存器等的地址(在圖6中,為 "0X00000" "0X10000")。當(dāng)有外部存取時,外部存取地址判斷部分 83就參考共用總線地址存儲部分82判斷是否要訪問共用總線92,如果是 這樣,就接收它。另一方面,因外部存取不是對共用總線92的存取的時 候,是對私用總線91的存取,故拒絕存取。需提一下,在為來自CPU65的存取(內(nèi)部存取)的時候,不進行這樣的判斷,接收內(nèi)部存取。圖7為顯示外部接口 50及其周邊的結(jié)構(gòu)的圖。在圖7中,地址區(qū)分 存儲寄存器81,存儲表示外部存儲器100中的各個區(qū)域和地址的對應(yīng)關(guān) 系的地址管理信息。這里,外部存儲器100分為第l區(qū)域(設(shè)定范圍內(nèi) 的程序)、第2區(qū)域(設(shè)定范圍外的程序)、第3區(qū)域(設(shè)定區(qū)域內(nèi)的數(shù)據(jù)) 及第4區(qū)域(設(shè)定范圍外的數(shù)據(jù))這四個區(qū)域,存儲各自的地址。比較器85,參考存儲在地址區(qū)分存儲寄存器81中的地址管理信息, 判斷要輸入輸出的信息的地址屬于上述第1 第4區(qū)域中的哪一個區(qū)域, 并將該判斷結(jié)果送到輸出入控制信號生成部分84。輸出入控制信號生成部分84,根據(jù)從模式定序器40輸出的模式ID 及跳線判斷結(jié)果、比較器85的輸出等,判斷讓外部接口 50所擁有的哪一 個接口有效,并將該判斷結(jié)果作為輸出入控制信號送到外部輸出入模式控 制部分54。外部輸出入模式控制部分54根據(jù)所接收的輸出入控制信號使 某一個接口有效。需提一下,當(dāng)模式ID顯示商品操作模式時, 一定不讓 執(zhí)行通過部分52有效。這樣以來,存儲在外部存儲器100中的明文程序 就受到了限制,而不能執(zhí)行。在調(diào)試管理模式及開發(fā)模式的時候,通過程序處理部分51的執(zhí)行用 通過部分52b讀入存儲在第1區(qū)域的程序;在除了密鑰生成模式、商品操 作模式或者開發(fā)模式調(diào)試以外的其他時候,通過程序解碼用密碼引擎53 讀入存儲在第1區(qū)域的程序。這些程序可執(zhí)行。另一方面,通過程序處理 部分51的加密用通過部分52a讀入存儲在第2區(qū)域的程序,供給到加密 部分2加密或者是再加密。這些程序不可執(zhí)行。通過數(shù)據(jù)處理部分55的數(shù)據(jù)加密解密用密碼引擎58讀入存儲在第3 區(qū)域的數(shù)據(jù);通過數(shù)據(jù)處理部分55的通過部分56讀入存儲在第4區(qū)域的 數(shù)據(jù)。通過加密用通過部分52a取入的程序,在加密部分2的秘密秘鑰運算 處理20中被加密或者再加密,之后又通過加密用通過部分52a被讀到外 部存儲器100的第1區(qū)域中。這樣以來,以后就成為可執(zhí)行的程序。需提一下,在地址區(qū)分存儲寄存器81及模式ID存儲寄存器41的數(shù) 據(jù)是通過私用總線設(shè)定的。換句話說,數(shù)據(jù)是通過來自內(nèi)部的存取設(shè)定的。還有,該數(shù)據(jù)是設(shè)定在機密LSI1的重新設(shè)定之后,且僅可執(zhí)行一次。
圖8為顯示外部接口 50的操作的圖。假設(shè)是一個商品操作模式。如 圖8所示,安裝前,由共有密鑰加密了的應(yīng)用程序存儲在外部存儲器100 的第2區(qū)域(設(shè)定范圍外)中,因此這種狀態(tài)是不能執(zhí)行的。換句話說, 存儲在第2區(qū)域的由共有密鑰加密的應(yīng)用程序安裝時通過加密用通過部分 52a取到機密LSI1中,該應(yīng)用程序由共有密鑰解密后,又由固有密鑰再 次加密,再次通過加密用通過部分52a存儲到外部存儲器100的第1區(qū)域 (設(shè)定范圍內(nèi))。于是,存儲在該第1區(qū)域中由固有密鑰加密的應(yīng)用程序 通過程序解密用密碼引擎53被取到機密LSI1內(nèi)部,并得以在機密LSI1 內(nèi)部執(zhí)行。
需提一下,在開發(fā)模式執(zhí)行以下操作。首先,調(diào)試時,將想要執(zhí)行的 程序事先寫到第1區(qū)域(設(shè)定區(qū)域內(nèi))中準(zhǔn)備好。于是,即使是明文程序, 也能通過執(zhí)行用通過部分52b取入并得以執(zhí)行。加密時,將想加密的程序 事先寫到第2區(qū)域(設(shè)定范圍外)中準(zhǔn)備好。于是,若起動機密LSIl, 就執(zhí)行加密的順序,由共有密鑰加密并存儲到外部存儲器100中。在安裝 調(diào)試程序時,將要再次加密的程序事先寫到第2區(qū)域(設(shè)定范圍外)中準(zhǔn) 備好。而且,在調(diào)試已加密的程序時,將已調(diào)試的加密程序事先寫到第1 區(qū)域(設(shè)定范圍內(nèi))中準(zhǔn)備好。這樣就解密、執(zhí)行了。
圖9為顯示機密存儲器10的存取控制的圖。如圖9所示,存取控制 部分95擁有存儲不可改寫區(qū)域11的地址的寄存器96、存儲不可改寫區(qū) 域?qū)懭肫鞓?biāo)12的地址的寄存器97、可寫入/不可寫入判斷部分98。這樣 構(gòu)成寄存器96、 97,數(shù)據(jù)一旦寫到寄存器96、 97中,就可通過旗標(biāo)管理 等禁止再次寫入。
存取控制如下所述。從CPU65到機密存儲器10的存取一定要通過存 取控制部分95來執(zhí)行。在指令為"讀"的時候,不管存取地的地址是不 可改寫區(qū)域還是通常區(qū)域的地址,機密存儲器10中的數(shù)據(jù)都被輸出到私 用總線91中。另一方面,當(dāng)指令為"寫"的時候,可寫入/不可寫入判 斷部分98參考存儲地的地址、存儲在寄存器96中的地址以及不可改寫區(qū) 域?qū)懭肫鞓?biāo)12的值,判斷是否寫入。具體而言,判斷如下所述。 (旗標(biāo)"已寫完"且不可寫入?yún)^(qū)域)".不可寫入(旗標(biāo)"已寫完"且通常區(qū)域) . 可寫入
(旗標(biāo)"未寫入"且不可寫入?yún)^(qū)域)".可寫入 (旗標(biāo)"未寫入"且通常區(qū)域) . 可寫入
需提一下,也為機密存儲器10準(zhǔn)備了 "區(qū)域消去"、"芯片消去"等
指令。在不可改寫區(qū)域11旗標(biāo)12為"已寫完"時,通常區(qū)域接收"區(qū)域 消去",而不可寫入?yún)^(qū)域卻不接收。不接收"芯片消去"。
還有,在再生內(nèi)容(數(shù)據(jù))的時候,采用以下方法能提高安全性。
數(shù)據(jù)一開始放在外部RAM102的第4區(qū)域(設(shè)定范圍外),在數(shù)據(jù)被 放在第4區(qū)域的時候,數(shù)據(jù)或是處于由數(shù)據(jù)共有密鑰(和程序共有密鑰不 同)加密的狀態(tài)或是處于明文狀態(tài)。因此就有被其他的LSI不正當(dāng)利用的 可能性,而存在安全性問題。
為解決這一問題,對于那些特別想防止被不正當(dāng)利用的圖像、音樂等 內(nèi)容而言,是這樣來制造再生內(nèi)容的程序的,即只能再生存儲在外部 RAM102的第3區(qū)域(設(shè)定范圍內(nèi))內(nèi)的內(nèi)容。在將放在第3區(qū)域內(nèi)的數(shù) 據(jù)取到機密LSI1時,該數(shù)據(jù)在數(shù)據(jù)加密解密用密碼引擎58中被解密。因 為進行這一解密時所使用的數(shù)據(jù)固有密鑰由固有ID和隨機數(shù)組成,所以 該數(shù)據(jù)固有密鑰不僅隨機密LSI1的不同而不同,而且每起動一次該數(shù)據(jù) 固有密鑰也不同。因此,數(shù)據(jù)不容易被不正當(dāng)利用,安全性也得到提高。 需提一下,因為再生內(nèi)容的程序也由固有密鑰加密,故很難被竄改。
圖10及圖11為商品操作模式下的通常引導(dǎo)處理的數(shù)據(jù)流程圖。在圖 10中,首先,將存儲在機密存儲器10的不可改寫區(qū)域11中且加密了的 程序固有密鑰Enc (程序固有密鑰,MKO)、 Enc(MKO, CK)設(shè)定在秘 密密鑰運算處理部分20的加密密鑰存儲寄存器中。用所安裝的程序加密 種子對該已加密了的程序固有密鑰解密而得到程序固有密鑰。所得到的程 序固有密鑰設(shè)定在外部主接口 50的程序解密用密碼引擎53的程序固有密 鑰存儲寄存器中。之后,將存儲在機密存儲器10的不可改寫區(qū)域11中的 數(shù)據(jù)固有ID設(shè)定在秘密密鑰運算處理部分20的固有ID存儲寄存器中。 由CPU65產(chǎn)生隨機數(shù),并將該隨機數(shù)設(shè)定在秘密密鑰運算處理部分20 的隨機數(shù)存儲寄存器中。由秘密密鑰運算處理部分20從數(shù)據(jù)固有ID和隨 機數(shù)生成數(shù)據(jù)固有密鑰。已生成的數(shù)據(jù)固有密鑰設(shè)定在外部主接口 50的數(shù)據(jù)加密解密用密碼引擎58的數(shù)據(jù)固有密鑰存儲寄存器中。
之后,在圖11中,通過外部主接口 50所擁有的程序處理部分51的 程序解密用密碼引擎53,對存儲在外部存儲器100中且由程序固有密鑰 加密了的應(yīng)用程序Eiic(應(yīng)用程序,程序固有密鑰)解密并將它取到HASH 運算部分70中,計算HASH值。接著,對該計算出的HASH值和存儲 在機密存儲器10的通常區(qū)域13中的HASH值進行比較,檢查應(yīng)用程序 是否被竄改。當(dāng)HASH值一致時,處理將移到存儲在外部存儲器100的 應(yīng)用程序Enc(應(yīng)用程序,程序固有密鑰),執(zhí)行應(yīng)用。需提一下,當(dāng)HASH 值不一致時,就推測是有不正當(dāng)行為,而執(zhí)行不正當(dāng)存取控制處理。
由CPU65執(zhí)行應(yīng)用程序。換句話說,因為由機密LSI1內(nèi)部的CPU65 作為主體(master)進行存耳文控制,故外部存取地址判斷部分83就和以 后的操作即內(nèi)部存取無關(guān)。通過應(yīng)用程序,由數(shù)據(jù)共有密鑰加密的內(nèi)容(原 來的內(nèi)容)被從外部EAM102的第4區(qū)域(不可再生區(qū)域)取到機密LSI1 中。利用已寫到機密存儲器10中的數(shù)據(jù)共有密鑰在秘密秘鑰運算處理部 分20中將所」取入的內(nèi)容解密。之后,再通過外部"^妄口 50的數(shù)據(jù)處理部分 55中的數(shù)據(jù)加密解密用密碼引擎58利用數(shù)據(jù)固有密鑰對所取入的內(nèi)容加 密,并寫到外部RAM102的第3區(qū)域(可再生區(qū)域)。之后,由該數(shù)據(jù)固 有密鑰加密了的內(nèi)容便可再生,再生時,通過外部接口 50的數(shù)據(jù)處理部 分55中的數(shù)據(jù)加密解密用密碼引擎58由數(shù)據(jù)固有密鑰解密。
權(quán)利要求
1、一種信息處理裝置,包括集成電路與存在于所述集成電路的外部的外部存儲器,其特征在于所述集成電路,包括外部接口,在與所述外部存儲器之間進行信息的輸入與輸出,第一密鑰保持部,以不能改寫的狀態(tài)保持第一密鑰信息,第二密鑰保持部,以能夠改寫的狀態(tài)保持第二密鑰信息,加密解密處理部,利用所述第一密鑰信息或者所述第二密鑰信息,對經(jīng)由所述外部接口輸入、輸出的信息進行加密處理或者解密處理,以及切換部,根據(jù)經(jīng)由所述外部接口輸入、輸出的信息,在所述第一密鑰信息與所述第二密鑰信息之間對所述加密解密處理部進行加密處理或者解密處理所用的密鑰進行切換。
2、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所述第一密鑰保持部所保持的所述第一密鑰信息不能被讀出到所述集成電路的外部。
3、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所述集成電路還包括生成所述第二密鑰信息的第二密鑰信息生成部。
4、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所述集成電路還包括隨機數(shù)取得部,取得隨機數(shù)信息,第二密鑰信息生成部,以所述隨機數(shù)信息為基礎(chǔ)生成所述第二密鑰信 息,以及第二密鑰寫入部,將已生成的所述第二密鑰信息寫入所述第二密鑰保 持部。
5、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所述第一密鑰保持部在保持所述第一密鑰信息以前處于能夠改寫的狀態(tài);所述集成電路還包括第一密鑰信息生成部,生成所述第一密鑰信息,以及第一密鑰寫入部,將已生成的所述第一密鑰信息寫入所述第一密鑰保 持部,同時將所述第一密鑰保持部設(shè)定為不能進行所迷第一密鑰信息的改 寫的狀態(tài)。
6、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所迷第一密鑰保持部,包括密鑰信息保持部,保持所述第一密鑰信息,設(shè)定保持部,接收并保持顯示是否允許對所述密鑰信息保持部進行改 寫的設(shè)定信息,以及改寫控制部,根據(jù)所述設(shè)定保持部的設(shè)定信息在可否對所述密鑰信息 保持部進行改寫之間進行切換;所述集成電路還包括不可寫入設(shè)定部,當(dāng)所述第一密鑰信息被寫入所 述密鑰信息保持部時,該不可寫入設(shè)定部將禁止所述密鑰信息保持部被改 寫的信息作為所述設(shè)定信息提供給所述設(shè)定保持部。
7、 根據(jù)權(quán)利要求1所述的信息處理裝置,其特征在于 所述集成電路還包括將存儲在所述外部存儲器中的加密程序解密的程序加密解密部。
8、 根據(jù)權(quán)利要求7所述的信息處理裝置,其特征在于 所述程序加密解密部將程序加密后再將該加密后的程序記錄到所述外部存儲器中。
全文摘要
本發(fā)明的目的在于提供一種安全性級別很高的半導(dǎo)體器件。機密LSI1,擁有對程序加密的加密部分2,及用以在它和外部存儲器100之間輸出入程序、數(shù)據(jù)的外部接口50。在加密部分2中,針對由密鑰生成/更新定序器30判斷出的不允許執(zhí)行的順序禁止秘密秘鑰運算處理20的操作。在外部接口50中,程序處理部分51和數(shù)據(jù)處理部分55是相互獨立的。
文檔編號G06F1/00GK101241534SQ20081008615
公開日2008年8月13日 申請日期2003年8月27日 優(yōu)先權(quán)日2002年9月4日
發(fā)明者井上信治, 伊藤孝幸, 前田卓治, 安井純一, 山田泰司, 根本祐輔, 藤原睦 申請人:松下電器產(chǎn)業(yè)株式會社