專利名稱:半導(dǎo)體集成電路裝置、以及程序交付方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及裝載在具有將被加密的程序解密并執(zhí)行的功能的信息設(shè)備等中的半導(dǎo)體LSI。而且,涉及將程序加密后從程序所有者一方交付給程序使用者一方的設(shè)備的處理系統(tǒng)及其方法。
背景技術(shù):
近幾年來,隨著程序能重寫或用戶程序能執(zhí)行的信息設(shè)備的普及,人們正在考慮防止軟件的非法拷貝的構(gòu)造。在將程序加密并分配的方式中,人們想出了使解密被加密的程序的程序(以下叫做“解密程序”)不被拷貝那樣的辦法。例如,做到將解密程序配置在從外部不能讀出的LSI內(nèi)部的存儲(chǔ)器中,而且,從外部不能讀出被解密的程序(例如,參照專利文獻(xiàn)1)。
圖18是表示執(zhí)行被加密的程序的現(xiàn)有的半導(dǎo)體集成電路裝置的方框圖。
圖18所示的半導(dǎo)體集成電路裝置1具有CPU、經(jīng)由內(nèi)部總線7進(jìn)行數(shù)據(jù)的輸入輸出的內(nèi)裝ROM4和內(nèi)裝RAM5、經(jīng)過外部總線2控制與外部的數(shù)據(jù)的輸入輸出的總線端口6、經(jīng)由IO總線8與CPU3連接的IO端口9、控制內(nèi)裝RAM5的存儲(chǔ)器端口10、以及控制存儲(chǔ)器端口10的控制寄存器11。
解密被加密的程序的程序被存儲(chǔ)在內(nèi)裝ROM4中。解密被加密的程序的程序被讀入到內(nèi)裝RAM5,并通過解密程序被解密。被解密的程序被寫出到內(nèi)裝RAM5。被寫出到內(nèi)裝RAM5的、被解密的程序通過來自控制寄存器11的控制防止從存儲(chǔ)器端口10向外部讀出。
專利文獻(xiàn)1特開平8-30558號(hào)公報(bào)發(fā)明內(nèi)容但是,象上述那樣,由于將解密程序保持在LSI內(nèi)部,因此必須將非易失性存儲(chǔ)器內(nèi)裝在LSI中。從而,提高LSI所需要的成本。
另外,當(dāng)將有惡意的程序加密并讀入LSI內(nèi)部,并執(zhí)行程序時(shí),通過該程序?qū)⒔饷艹绦騻魉偷酵獠浚菇饷艹绦蛴锌赡鼙黄茐?hacking)。其結(jié)果,通過使用被破壞的解密程序,就有可能破壞被加密的程序。而且,由于不能變更解密程序,所以若一旦被破壞就不能使用該LSI。
而且,產(chǎn)生在傳送被加密的程序的一方不能進(jìn)行密碼程序和密碼強(qiáng)度的選擇的問題。
因此,本發(fā)明的目的在于提供降低成本、減小加密的程序被破壞的可能性的半導(dǎo)體集成電路裝置。
為解決上述課題,第1,涉及本發(fā)明的權(quán)利要求1的半導(dǎo)體集成電路裝置,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;經(jīng)由所述總線端口將被加密的程序和解密程序存儲(chǔ)在所述第1存儲(chǔ)器,使用所述解密程序和所述加密密鑰對(duì)所述被加密的程序進(jìn)行解密,并執(zhí)行被解密的程序的CPU;以及若所述被加密的程序和所述解密程序被存儲(chǔ)在所述第1存儲(chǔ)器中,那么對(duì)于所述總線端口禁止來自外部的存取,許可向所述第1和第2的存儲(chǔ)器的存取并進(jìn)行所述被加密的程序和所述解碼程序從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器的傳送,若所述傳送結(jié)束,那么禁止向所述第1存儲(chǔ)器的存取,若所述解密和所述被解密的程序的執(zhí)行已結(jié)束,那么禁止向所述第2存儲(chǔ)器的存取的控制部分。
若依據(jù)權(quán)利要求1的本發(fā)明,就沒有必要在半導(dǎo)體集成電路裝置的內(nèi)部具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,解密中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能對(duì)被加密的程序進(jìn)行解密并執(zhí)行,并能減小所加密的程序被破壞的可能性。
另外,權(quán)利要求2的發(fā)明應(yīng)在權(quán)利要求1記載的半導(dǎo)體集成電路裝置中,還具備控制從所述CPU向所述加密密鑰保持部分的存取的加密密鑰存取端口,所述加密密鑰存取端口在所述傳送結(jié)束時(shí)許可向所述加密密鑰保持部分的存取,在所述被解密的程序的執(zhí)行結(jié)束時(shí)禁止向所述加密密鑰保持部分的存取。
另外,權(quán)利要求3的發(fā)明,應(yīng)在權(quán)利要求1記載的半導(dǎo)體集成電路裝置中,所述CPU包含寄存器,若所述被解密的程序的執(zhí)行結(jié)束,就消去存儲(chǔ)在所述寄存器中的數(shù)據(jù)。
另外,權(quán)利要求4的發(fā)明,應(yīng)在權(quán)利要求1記載的半導(dǎo)體集成電路裝置中,所述控制部分通過控制向所述第1和第2存儲(chǔ)器的選片信號(hào)控制向所述第1和第2存儲(chǔ)器的存取。
另外,權(quán)利要求5的發(fā)明,應(yīng)在權(quán)利要求1記載的半導(dǎo)體集成電路裝置中,所述控制部分包含存儲(chǔ)第1標(biāo)識(shí)位和第2標(biāo)識(shí)位的標(biāo)識(shí)位存儲(chǔ)部分,在所述第1標(biāo)識(shí)位被置位時(shí)許可向所述第1存儲(chǔ)器和所述第2存儲(chǔ)器的存取,在所述第1標(biāo)識(shí)位被復(fù)位、所述第2標(biāo)識(shí)位被置位時(shí)禁止向所述第1存儲(chǔ)器的存取,在所述第1和第2標(biāo)識(shí)位都被復(fù)位時(shí)禁止向所述第2存儲(chǔ)器的存取,所述總線端口在所述第1或第2標(biāo)識(shí)位中至少1個(gè)被置位時(shí),禁止來自外部的存取,所述CPU若將所述被加密的程序和所述解密程序輸入到所述第1存儲(chǔ)器,就將所述第1標(biāo)識(shí)位和所述第2標(biāo)識(shí)位置位,若所述傳送結(jié)束,就將所述第1標(biāo)識(shí)位復(fù)位,若所述被解密的程序的執(zhí)行已結(jié)束,就將所述第2標(biāo)識(shí)位復(fù)位。
為解決上述課題,第2,涉及本發(fā)明的權(quán)利要求6的發(fā)明,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;被連接在所述總線和所述第1存儲(chǔ)器之間,控制從所述總線向所述第1存儲(chǔ)器的存取的第1存儲(chǔ)器端口;被連接在所述總線和所述第2存儲(chǔ)器之間,控制從所述總線向所述第2存儲(chǔ)器的存取的第2存儲(chǔ)器端口;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;經(jīng)由所述總線端口進(jìn)行將被加密的程序和解密程序向所述第1存儲(chǔ)器的寫入,使用所述解密程序和所述密鑰對(duì)所述被加密的程序進(jìn)行解密,進(jìn)行將被解密的程序向所述第2存儲(chǔ)器的寫入,并執(zhí)行被解密的程序的CPU;以及若向所述第1存儲(chǔ)器的寫入已結(jié)束,那么對(duì)于所述總線端口禁止從外部向所述總線的存取,對(duì)于所述第1存儲(chǔ)器端口禁止向所述第1存儲(chǔ)器的寫入,對(duì)于所述第2存儲(chǔ)器端口,許可向所述第2的存儲(chǔ)器的存取,若所述被解密的程序的執(zhí)行已結(jié)束,那么對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),并禁止向所述密鑰保持部分的存取,同時(shí),對(duì)于所述第2存儲(chǔ)器端口禁止向所述第2存儲(chǔ)器的存取的控制部分。
若依據(jù)權(quán)利要求6的發(fā)明,在半導(dǎo)體集成電路裝置中就不需要具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。
為解決上述課題,第3,涉及本發(fā)明的權(quán)利要求7的發(fā)明,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;被連接在所述總線和所述第1存儲(chǔ)器之間,控制從所述總線向所述第1存儲(chǔ)器的存取的存儲(chǔ)器端口;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;具有寄存器,經(jīng)由所述總線端口進(jìn)行將被加密的程序和解密程序向所述第1存儲(chǔ)器的寫入,使用所述解密程序和所述密鑰對(duì)所述被加密的程序進(jìn)行解密,進(jìn)行將被解密的程序向所述第2存儲(chǔ)器的寫入,并執(zhí)行被解密的程序的CPU;以及包含消去所述第2存儲(chǔ)器中的數(shù)據(jù)的存儲(chǔ)器初始化部分,若結(jié)束向所述第1存儲(chǔ)器的寫入,對(duì)于所述總線端口就禁止從外部向所述總線的存取,對(duì)于所述存儲(chǔ)器端口禁止向所述第1存儲(chǔ)器的寫入,若結(jié)束所述被解密的程序的執(zhí)行,對(duì)于所述CPU就消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),禁止向所述密鑰保持部分的存取,對(duì)于所述存儲(chǔ)器初始化部分將消去所述第2存儲(chǔ)器中的數(shù)據(jù)的控制部分。
若依據(jù)權(quán)利要求7的發(fā)明,在半導(dǎo)體集成電路裝置中就沒有必要具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。
為解決上述課題,第4,本發(fā)明的權(quán)利要求8記載的發(fā)明,它應(yīng)具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;保持加密密鑰的加密密鑰保持部分;保持解密密鑰的解密密鑰保持部分;控制從外部向所述總線的存取的總線端口;包含寄存器,經(jīng)由所述總線端口進(jìn)行將被加密的解密密鑰和解密密鑰解密程序向所述第1存儲(chǔ)器存儲(chǔ)的第1存儲(chǔ),使用所述解密密鑰解密程序和所述加密密鑰進(jìn)行對(duì)所述被加密的解密密鑰解密的第1解密,進(jìn)行將被解密的解密密鑰向所述解密密鑰保持部分的寫入,進(jìn)行將被解密的程序和解密程序向所述第1存儲(chǔ)器存儲(chǔ)的第2存儲(chǔ),使用所述解密程序和所述被解密的解密密鑰進(jìn)行對(duì)所述被加密的程序解密的第2解密,并執(zhí)行被解密的程序的CPU;以及向所述第1存儲(chǔ)器的所述第1存儲(chǔ)結(jié)束時(shí),對(duì)于所述總線端口禁止從外部向所述總線的存取,許可向所述第1存儲(chǔ)器和所述第2存儲(chǔ)器的存取,并進(jìn)行從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器傳送所述被加密的解密密鑰和所述解密密鑰解密程序,在該傳送結(jié)束時(shí),許可向所述加密密鑰保持部分的存取,禁止向所述第1存儲(chǔ)器的存取,在所述第1解密結(jié)束時(shí),對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),并禁止向所述加密密鑰保持部分的存取,同時(shí),禁止向所述第2存儲(chǔ)器的存取,許可向所述第1存儲(chǔ)器的存取,對(duì)于所述總線端口許可從外部向所述總線的存取,在向所述第1存儲(chǔ)器的所述第2存儲(chǔ)結(jié)束時(shí),對(duì)于所述總線端口禁止從外部向所述總線的存取,許可向所述第2存儲(chǔ)器的存取,并從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器進(jìn)行所述被加密的程序和所述解密程序的傳送,在該傳送結(jié)束時(shí),許可向所述解密密鑰保持部分的存取,禁止向所述第1存儲(chǔ)器的存取,在結(jié)束所述第2解密和所述被解密的程序的執(zhí)行時(shí),對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),禁止向所述加密密鑰保持部分的存取,禁止向所述第2存儲(chǔ)器的存取的控制部分。
若依據(jù)權(quán)利要求8的發(fā)明,沒有必要在半導(dǎo)體集成電路裝置中具備用于保持解密程序的非易失性的存儲(chǔ)器,并能夠降低成本。另外,不從外部觀測(cè)解密過程中的程序和數(shù)據(jù),能夠?qū)Ρ患用艿某绦蚪饷懿?zhí)行,能夠減小所加密的程序被破壞的可能性。而且,在傳送所加密的程序的一方能夠選擇密碼程序和密碼強(qiáng)度。
為解決上述課題,第5,涉及本發(fā)明的權(quán)利要求5的程序交付方法是在第1裝置和第2裝置之間進(jìn)行程序的交付的程序交付方法,它具備以下步驟從所述第2裝置向所述第1裝置進(jìn)行公開密鑰的傳送的步驟;從其外部將解密程序傳送到所述第2裝置的步驟;在所述第1裝置中,使用所述公開密鑰進(jìn)行所述程序的加密,并將所加密的程序傳送到所述第2裝置的步驟;以及在所述第2裝置中,使用與所述公開密鑰對(duì)應(yīng)的加密密鑰和所述解密程序?qū)λ霰患用艿某绦蚪饷艿牟襟E。
若依據(jù)權(quán)利要求9的發(fā)明,那么在半導(dǎo)體集成電路裝置的內(nèi)部沒有必要具用于保持解密程序的非易失性的存儲(chǔ)器,并能夠降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。
為解決上述課題,第6,涉及本發(fā)明的權(quán)利要求10的程序交付方法是在第1裝置和第2裝置之間進(jìn)行程序交付的程序交付方法,它具備以下步驟從所述第2裝置向所述第1裝置進(jìn)行公開密鑰的傳送的步驟;在所述第1裝置中,使用所述公開密鑰進(jìn)行解密密鑰的加密,并將所加密的解密密鑰傳送到所述第2裝置的步驟;在所述第2裝置中,使用與所述公開密鑰對(duì)應(yīng)的加密密鑰將所述被加密的解密密鑰進(jìn)行解密的步驟;在所述第1裝置中,使用與所述解密密鑰對(duì)應(yīng)的加密密鑰進(jìn)行所述程序的加密,并將所加密的程序傳送到所述第2裝置的步驟;以及在所述第2裝置中,使用被解密的解密密鑰將所述被加密的程序進(jìn)行解密的步驟。
若依據(jù)權(quán)利要求10的發(fā)明,那么在半導(dǎo)體集成電路裝置的內(nèi)部不需要用于保持解密程序的非易失性的存儲(chǔ)器,并能夠降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。而且,在傳送被加密的程序的一方能夠選擇密碼程序和密碼強(qiáng)度。
為解決上述課題,第7,涉及本發(fā)明的權(quán)利要求11的程序交付系統(tǒng)是具備第1裝置和第2裝置,并在所述第1裝置和所述第2裝置之間進(jìn)行程序的交付的程序交付系統(tǒng),所述第1裝置應(yīng)使用公開密鑰將所述程序加密,并將被加密的該程序向所述第2裝置傳送,所述第2裝置應(yīng)使用與所述公開密鑰對(duì)應(yīng)的加密密鑰和從該第2裝置的外部傳送的解密程序?qū)⑼ㄟ^所述第1裝置被加密的程序進(jìn)行解密。
若依據(jù)權(quán)利要求11的發(fā)明,那么在半導(dǎo)體集成電路裝置的內(nèi)部不需要用于保持解密程序的非易失性的存儲(chǔ)器,并能夠降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。
為解決上述課題,第8,涉及本發(fā)明的權(quán)利要求12的程序交付系統(tǒng)是具備第1裝置和第2裝置,并在所述第1裝置和所述第2裝置之間進(jìn)行程序的交付的程序交付系統(tǒng),所述第1裝置應(yīng)使用公開密鑰將解密密鑰加密,并將已加密的解密密鑰向所述第2裝置進(jìn)行傳送,使用與所述解密密鑰對(duì)應(yīng)的加密密鑰將所述程序加密,并將已加密的程序向所述第2裝置進(jìn)行傳送,所述第2裝置應(yīng)使用與所述公開密鑰對(duì)應(yīng)的加密密鑰將通過所述第1裝置被加密的解密密鑰進(jìn)行解密,并使用被解密的解密密鑰將通過所述第1裝置被加密的程序進(jìn)行解密。
若依據(jù)權(quán)利要求12的發(fā)明,那么在半導(dǎo)體集成電路裝置的內(nèi)部不需要用于保持解密程序的非易失性的存儲(chǔ)器,并能夠降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)Ρ患用艿某绦蜻M(jìn)行解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。而且,在傳送被加密的程序的一方能夠選擇密碼程序和密碼強(qiáng)度。
圖1是用于說明在第1實(shí)施形態(tài)中的半導(dǎo)體集成電路裝置的構(gòu)成的方框圖。
圖2是表示被加密的程序的解密順序的流程圖。
圖3是用于說明在第2實(shí)施形態(tài)中的半導(dǎo)體集成電路裝置的構(gòu)成的方框圖。
圖4是表示被加密的程序的解密順序的流程圖。
圖5是用于說明在第1實(shí)施形態(tài)中的半導(dǎo)體集成電路裝置的構(gòu)成的方框圖。
圖6是表示被加密的程序的解密順序的流程圖。
圖7是用于說明在第4實(shí)施形態(tài)中的半導(dǎo)體集成電路裝置的構(gòu)成的方框圖。
圖8是表示被加密的解密密鑰的解密程序的流程圖。
圖9是表示標(biāo)識(shí)位的狀態(tài)、總線端口、以及選片信號(hào)的狀態(tài)的相關(guān)的圖。
圖10是表示被加密的程序的解密順序的流程圖。
圖11是表示從使用者一方向程序開發(fā)者一方傳送公開密鑰的圖。
圖12是表示解密密鑰的加密的圖。
圖13是表示從程序開發(fā)者一方向使用者一方的被加密的解密密鑰的傳送的圖。
圖14是表示被加密的解密密鑰的解密的圖。
圖15是表示程序的加密的圖。
圖16是表示從程序開發(fā)者一方向使用者一方的被加密的程序的傳送的圖。
圖17是表示被加密的程序的解密的圖。
圖18是表示現(xiàn)有的半導(dǎo)體集成電路裝置的構(gòu)成的方框圖。
具體實(shí)施例方式
以下,參照
關(guān)于本發(fā)明的各實(shí)施形態(tài)。
(第1實(shí)施形態(tài))圖1是用于說明在第1實(shí)施形態(tài)中的半導(dǎo)體集成電路裝置101的構(gòu)成的方框圖。
如圖1所示那樣,被加密的程序從作為程序的開發(fā)者一方的設(shè)備的PC128a(與第1裝置對(duì)應(yīng))經(jīng)由PC126向程序的使用者一方被傳送。在使用者一方的信息設(shè)備140內(nèi)的半導(dǎo)體集成電路裝置101(與第2裝置對(duì)應(yīng))中,使用加密密鑰和解密程序?qū)⒈患用艿某绦蜻M(jìn)行解密并執(zhí)行。
PC128a是程序開發(fā)者一方的設(shè)備,并保持程序D128a和用于將程序加密的密碼程序128b。
信息設(shè)備140是程序使用者一方的設(shè)備,并具有半導(dǎo)體集成電路裝置101、保持解密程序D123a的閃速(flash)存儲(chǔ)器123a、USB上游端口124以及外圍設(shè)備150。此外,通過外部總線102與半導(dǎo)體集成電路裝置101、閃速存儲(chǔ)器123a以及USB上游端口124連接。
半導(dǎo)體集成電路裝置101具有CPU103a、內(nèi)裝RAM104(與第1存儲(chǔ)器對(duì)應(yīng))和105(與第2存儲(chǔ)器對(duì)應(yīng))、公開密鑰存儲(chǔ)寄存器106、加密密鑰寄存器107、加密密鑰存取端口108a、總線端口110a、保密控制器111a、以及IO端口122。此外,內(nèi)部總線109如圖示那樣被連接。
CPU103a具有通用寄存器控制器119a和通用寄存器120a。
保密控制器111a具有存儲(chǔ)程序解密執(zhí)行標(biāo)識(shí)位112F(與第2標(biāo)識(shí)位對(duì)應(yīng))和RAM復(fù)寫標(biāo)識(shí)位113F(與第1標(biāo)識(shí)位對(duì)應(yīng))的標(biāo)識(shí)位存儲(chǔ)部分113a、選片分配器114a以及DAM118a。
以下,具體地說明關(guān)于各要素的內(nèi)容和動(dòng)作。
外部總線102是在向被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰的個(gè)人計(jì)算機(jī)128a的傳送中,以及在使用該公開密鑰和密碼程序D128b使被加密的程序向半導(dǎo)體集成電路裝置101的傳送中被使用。
CPU103a通過被存儲(chǔ)在內(nèi)裝RAM104和105、或閃速存儲(chǔ)器123a中的程序進(jìn)行工作。除使通常的程序工作外,還執(zhí)行被加密的程序的解密和被解密的程序。另外,將從外部輸入的、被加密的程序和解密程序D123a傳送到內(nèi)裝RAM104中。
內(nèi)裝RAM104是在通常時(shí)間,即,在解密程序D123a、被解密的程序都沒有執(zhí)行時(shí)被使用的存儲(chǔ)器。下面,使用公開密鑰和密碼程序D128b說明關(guān)于將被加密的程序進(jìn)行解密并執(zhí)行的場(chǎng)合。首先,在總線端口110a連接外部總線102和內(nèi)部總線109的狀態(tài)下,通過CPU110a使被加密的程序和閃速存儲(chǔ)器123a內(nèi)的解密程序D123a被傳送到內(nèi)裝RAM104。接著,在總線端口110a將外部總線102和內(nèi)部總線109分離后,通過DMA118A使被加密的程序和解密程序D123a從內(nèi)裝RAM104傳送到內(nèi)裝RAM105。之后,在被解密的程序的執(zhí)行結(jié)束之前期間,通過保密控制器111a禁止從內(nèi)部總線109向內(nèi)裝RAM104的存取。
內(nèi)裝RAM105在解密程序D123a的執(zhí)行時(shí),以及在被解密的程序的執(zhí)行時(shí)被使用。下面,說明關(guān)于將被加密的程序解密并執(zhí)行的場(chǎng)合。在總線端口110a將外部總線102和內(nèi)部總線109分離后,通過DMA118a使被加密的程序和解密程序D123a從內(nèi)裝RAM104傳送到內(nèi)裝RAM105。另外,在總線端口110a連接外部總線102和內(nèi)部總線109的狀態(tài)下,通過保密控制器111a禁止從內(nèi)部總線109向內(nèi)裝RAM105的存取。因此,暫時(shí)被存儲(chǔ)在內(nèi)裝RAM105中的、被解密的程序和解密處理的執(zhí)行過程中的數(shù)據(jù)不會(huì)從外部被觀測(cè)。
公開密鑰存儲(chǔ)寄存器106是存儲(chǔ)公開密鑰的讀出專用的寄存器。公開密鑰是在被傳送到位于半導(dǎo)體集成電路裝置101的外部的個(gè)人計(jì)算機(jī)128a,并通過密碼程序D128b將程序D128a加密時(shí)使用的密鑰。
加密密鑰存儲(chǔ)寄存器107是存儲(chǔ)加密密鑰的讀出專用的寄存器。加密密鑰是在將通過解密程序D123a加密的程序進(jìn)行解密時(shí)使用的密鑰。
加密密鑰存取端口108a只在RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位期間使CPU103a從加密密鑰存儲(chǔ)寄存器107讀出加密密鑰變?yōu)榭赡?。即,解密程序D123a被開始,被加密的程序和解密程序D123a從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位,之后只在將程序解密期間和正在執(zhí)行被解密的程序期間,CPU103a才有可能從加密密鑰存儲(chǔ)寄存器107讀出加密密鑰,在除此以外的時(shí)間禁止加密密鑰的讀出。
內(nèi)部總線109在半導(dǎo)體集成電路裝置101的內(nèi)部的程序和數(shù)據(jù)的傳送中被使用。
總線端口110a在程序解密執(zhí)行標(biāo)識(shí)位112F、RAM復(fù)寫標(biāo)識(shí)位113F中至少1個(gè)被置位時(shí)分離內(nèi)部總線109和外部總線102。為此,在被加密的程序和解密程序D123a的傳送過程中,在解密程序D123a和被解密的程序的執(zhí)行過程中,內(nèi)部總線109和內(nèi)裝RAM105不會(huì)從外部被觀測(cè)。在其它場(chǎng)合,連接內(nèi)部總線109和外部總線102。
保密控制器111a內(nèi)裝保持程序解密執(zhí)行標(biāo)識(shí)位112F和RAM復(fù)寫標(biāo)識(shí)位113F的標(biāo)識(shí)位存儲(chǔ)部分113a、選片分配器114a、以及DMA控制器118(以下,叫做“DMA”)。而且,在將密碼程序D128b和通過被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰加密的程序解密,并執(zhí)行被加密的程序時(shí),進(jìn)行總線端口110a、加密密鑰存取端口108a、選片信號(hào)116S和117S、以及通用寄存器控制器119a的控制。
下面,說明關(guān)于將通過密碼程序D128b加密的程序解密并執(zhí)行的場(chǎng)合。首先,在總線端口110a連接外部總線102和內(nèi)部總線109的狀態(tài)下,若通過CPU103使被加密的程序和解密程序D123a傳送到內(nèi)裝RAM104,那么,接著,總線端口110a將使外部總線102和內(nèi)部總線109分離。接著,選片分配器114a使選片信號(hào)116S和117S確立,并將通過DMA118a加密的程序和解密程序D123a從內(nèi)裝RAM104傳送到內(nèi)裝RAM105。在傳送結(jié)束時(shí),選片分配器114a取消選片信號(hào)116S,之后,轉(zhuǎn)移到CPU103a的控制。然后,在CPU103a中,若程序被解密,并且被解密的程序的執(zhí)行已結(jié)束,那么在選片分配器114a中形成結(jié)束通知。在接收通知時(shí),選片分配器114a取消選片信號(hào)117S,使通用寄存器控制器119將通用寄存器120a初始化,并將來自CPU103a的選片信號(hào)115S作為選片信號(hào)116S輸出。之后,總線端口110a使內(nèi)部總線109和外部總線102連接。
程序解密執(zhí)行標(biāo)識(shí)位112F在解密程序D123a開始時(shí)被CPU103a置位,在被解密的程序的執(zhí)行結(jié)束時(shí)被CPU103a復(fù)位。解密程序D123a被開始,被加密的程序和解密程序D123a從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送結(jié)束,并且RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位。之后,在將所加密的程序解密期間和被解密的程序正在執(zhí)行期間,禁止向內(nèi)裝RAM104的存取,并使向內(nèi)裝RAM105和加密密鑰存儲(chǔ)寄存器107的存取變成可能。若程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位,那么向內(nèi)裝RAM105和加密密鑰存儲(chǔ)寄存器107的存取被禁止。
RAM復(fù)寫標(biāo)識(shí)位113F在解密程序D123a開始時(shí)被CPU103a置位,從內(nèi)裝RAM104向內(nèi)裝RAM105的數(shù)據(jù)傳送結(jié)束時(shí)被復(fù)位。內(nèi)裝RAM104和105在存儲(chǔ)變換方面是相同的,通常,向雙方的選片不會(huì)同時(shí)被確立。但是,為了將被加密的程序等傳送到內(nèi)裝RAM105,在從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送時(shí),通過將RAM復(fù)寫標(biāo)識(shí)位113F置位,分別向各自的內(nèi)裝RAM104、105確立來自選片分配器114a的選片信號(hào)116S、117S。
選片分配器(以下,假定為“CS分配器”)114a在RAM復(fù)寫標(biāo)識(shí)位113F被置位時(shí)同時(shí)確立選片信號(hào)116S和117S。因此,使被加密的程序和解密程序從DMA118a的內(nèi)裝RAM104向內(nèi)裝RAM105的傳送將變成可能。在程序解密執(zhí)行標(biāo)識(shí)位112F被置位,而且RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位時(shí),在取消選片信號(hào)116F的同時(shí)將選片信號(hào)115S作為選片信號(hào)117S傳送。因此,在被加密的程序的解密時(shí),以及在被解密的程序的執(zhí)行時(shí),使向內(nèi)裝的RAM105的存取變成可能。在二者都不適用時(shí),在將選片信號(hào)115S作為選片信號(hào)116S傳送的同時(shí)取消選片信號(hào)117S。因此,在通常情況下,即,在解密程序D123a、被解密的程序都沒有被執(zhí)行時(shí),禁止向內(nèi)裝RAM105的存取。
選片信號(hào)115S在從CPU103a輸出,并對(duì)內(nèi)裝RAM104或內(nèi)裝RAM105存取時(shí)被確立。
選片信號(hào)116S和117S在從CS分配器114a輸出,并且選片信號(hào)116S對(duì)內(nèi)裝RAM104存取時(shí)被確立,選片信號(hào)117S在對(duì)內(nèi)裝RAM105存取時(shí)被確立。
DMA控制器118a在RAM復(fù)寫標(biāo)識(shí)位113F被置位時(shí),進(jìn)行被加密的程序和解密程序從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送。此外,在傳送結(jié)束時(shí)RAM復(fù)寫標(biāo)識(shí)位113被復(fù)位。
通用寄存器控制器119a在程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí)將通用寄存器120a復(fù)位。因此,在被加密的程序的解密過程中,以及在被解密的程序的執(zhí)行過程中,不會(huì)從外部觀測(cè)在通用寄存器120a中所生成的數(shù)據(jù)。
IO端口122經(jīng)由IO總線121與CPU103a連接。另外,還與外圍設(shè)備150中的聲音模塊和視頻模塊152等裝卸的電路連接。
閃速存儲(chǔ)器123a保持解密程序D123a。
解密程序D123a經(jīng)由半導(dǎo)體集成電路裝置101內(nèi)部的內(nèi)裝RAM104被傳送到內(nèi)裝RAM105,并在將被加密的程序進(jìn)行解密時(shí)與被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰一起被使用。
USB上游端口124是經(jīng)由USB電纜125與個(gè)人計(jì)算機(jī)126連接,并在將被加密的程序傳送到半導(dǎo)體集成電路裝置101時(shí)被使用。
USB電纜125是在從個(gè)人計(jì)算機(jī)126向上游端口124的被加密的程序的傳送中被使用。
個(gè)人計(jì)算機(jī)126是從個(gè)人計(jì)算機(jī)128a接收被加密的程序,并將被加密的程序傳送到裝載了半導(dǎo)體集成電路裝置101的信息設(shè)備140。
網(wǎng)絡(luò)線路127是用于將被加密的程序從個(gè)人計(jì)算機(jī)128傳送到個(gè)人計(jì)算機(jī)126。
個(gè)人計(jì)算機(jī)128是經(jīng)由網(wǎng)絡(luò)線路127從個(gè)人計(jì)算機(jī)126接收被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰,使用密碼程序D128b和公開密鑰將程序D128a加密,并經(jīng)由網(wǎng)絡(luò)線路127傳送到個(gè)人計(jì)算機(jī)126。
程序D128a使用密碼程序D128b和被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰被加密,并經(jīng)由網(wǎng)絡(luò)線路127、個(gè)人計(jì)算機(jī)126、USB電纜125、USB上游端口124、以及外部總線102被傳送到半導(dǎo)體集成電路裝置101。然后,在半導(dǎo)體集成電路裝置101內(nèi)使用解密程序D123a和被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰被解密。
D128b是密碼程序,是使用被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰對(duì)程序D128a進(jìn)行加密。
信息設(shè)備140具有半導(dǎo)體集成電路裝置101、外圍設(shè)備150、閃速存儲(chǔ)器123a、以及USB上游端口124。
外圍設(shè)備150具有聲音模塊151、視頻模塊152,并與半導(dǎo)體集成電路裝置101內(nèi)的IO端口122連接。
聲音模塊151與半導(dǎo)體集成電路裝置101的IO端口122連接,經(jīng)過數(shù)據(jù)傳送的發(fā)送接收、控制信號(hào)的接收,進(jìn)行聲音的再生、記錄。
視頻模塊152與半導(dǎo)體集成電路裝置101的IO端口122連接,經(jīng)過數(shù)據(jù)傳送的發(fā)送接收、控制信號(hào)的接收,進(jìn)行活動(dòng)圖象的再生。
接著,使用圖2,概略說明關(guān)于將被加密的程序解密生成程序D128a,并執(zhí)行程序D128a的順序。
圖2是表示在第1實(shí)施形態(tài)中的被加密的程序的解密順序的流程圖。
首先,在步驟ST201中,CPU103a進(jìn)行將解密程序D123a和被加密的程序向內(nèi)裝RAM104的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST202,CPU103a將程序解密執(zhí)行標(biāo)識(shí)位112F和RAM復(fù)寫標(biāo)識(shí)位113F置位。這時(shí),總線端口110a將內(nèi)部總線109和外部總線102進(jìn)行分離。
接著,在該分離后,前進(jìn)到步驟ST203,DMA控制器118a進(jìn)行內(nèi)裝RAM104中的解密程序D123a和被加密的程序向內(nèi)裝RAM105的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST204,CPU103a使RAM復(fù)寫標(biāo)識(shí)位113F復(fù)位。由此,直到后述的步驟ST206結(jié)束,CS分配器114a沒有確立選片信號(hào)116S。
接著,前進(jìn)到步驟ST205,CPU103a執(zhí)行解密D123a,并使用被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰將被加密的程序解密,生成程序D128a。然后,將所生成的程序D128a寫入到內(nèi)裝RAM105。
接著,前進(jìn)到步驟ST206,并且CPU103a執(zhí)行程序D128a。
最后,前進(jìn)到步驟ST207,并且CPU103a將解密執(zhí)行標(biāo)識(shí)位112F復(fù)位。程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),通用寄存器控制器119a將通用寄存器120a復(fù)位。若程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位,那么總線端口110a就連接內(nèi)部總線109和外部總線102。另外,CS分配器114a將選片信號(hào)115S作為選片信號(hào)116S輸出,并取消選片信號(hào)117S。
由于選片信號(hào)116S在解密程序D123a被執(zhí)行并完成程序D128a的生成時(shí)沒有被確立,因此解密過程中的數(shù)據(jù)和程序D128a不會(huì)存儲(chǔ)在內(nèi)裝RAM104中。而且,由于選片信號(hào)117S在總線端口110a正連接著外部總線102和內(nèi)部總線109時(shí)被取消,因此解密過程中的數(shù)據(jù)和程序D128a不會(huì)從外部被觀測(cè)。
象以上那樣,若依據(jù)第1實(shí)施形態(tài),就可以在半導(dǎo)體集成電路裝置的內(nèi)部不需要具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,解密中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能將被加密的程序解密并執(zhí)行,能夠減小所加密的程序被破壞的可能性。
(第2實(shí)施形態(tài))圖3是用于說明涉及第2實(shí)施形態(tài)的半導(dǎo)體集成電路裝置301的構(gòu)成的方框圖。
圖3所示的半導(dǎo)體集成電路裝置301與圖1所示的半導(dǎo)體集成電路裝置101比較,不同之處在于它還具備存儲(chǔ)器端口302(與第1存儲(chǔ)器端口對(duì)應(yīng))和303(與第2存儲(chǔ)器端口對(duì)應(yīng))。另外,保密控制器111b在只具有存儲(chǔ)程序解密執(zhí)行標(biāo)識(shí)位112F的標(biāo)識(shí)位存儲(chǔ)部分113b這一點(diǎn)上與圖1所示的保密控制器111a不同。此外,其它要素進(jìn)行與圖1所示的要素相同的動(dòng)作,因此沒有重復(fù)其說明。
存儲(chǔ)器端口302在程序解密執(zhí)行標(biāo)識(shí)位112F被置位時(shí),通過來自保密控制器的控制停止向內(nèi)裝RAM104的寫入。即,在程序的解密過程中,以及在被解密的程序的執(zhí)行過程中,不能向內(nèi)裝RAM104寫入數(shù)據(jù)。
存儲(chǔ)器端口303在程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),通過保密控制器111b停止向內(nèi)裝RAM105的存取。即,在總線端口110b連接內(nèi)部總線109和外部總線102期間不能向內(nèi)裝RAM105存取。因此,寫入到內(nèi)裝RAM105的、被解密的程序和解密處理執(zhí)行中的數(shù)據(jù)不會(huì)從外部被觀測(cè)。
接著,使用圖4,說明關(guān)于將被加密的程序解密,生成程序D128a,并執(zhí)行程序D128a的順序。
圖4是表示在第2實(shí)施形態(tài)中的被加密的程序的解密順序的流程圖。
首先,在步驟ST201中,CPU103b進(jìn)行解密程序D123a和被加密的程序向內(nèi)裝RAM104的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST402,并且,CPU103b將程序解密執(zhí)行標(biāo)識(shí)位112F置位。這時(shí),總線端口110b進(jìn)行內(nèi)部總線109和外部總線102的分離。另外,存儲(chǔ)器端口302停止向內(nèi)裝RAM104的寫入,存儲(chǔ)器端口303許可向內(nèi)裝RAM105的存取。
接著,前進(jìn)到步驟ST205,并且,CPU103b執(zhí)行解密程序D123a,使用被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰將被加密的程序解密,生成程序D128a,并寫入到內(nèi)裝RAM105。
接著,前進(jìn)到步驟ST206,并且,CPU103b執(zhí)行程序D128a。
最后,若程序D128b的執(zhí)行結(jié)束,就前進(jìn)到步驟ST207,并將程序解密執(zhí)行標(biāo)識(shí)位112F復(fù)位。在程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),通用寄存器控制器119b通過來自保密控制器111b的控制將通用寄存器120b復(fù)位。若程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),總線端口110b就連接內(nèi)部總線109和外部總線102。另外,存儲(chǔ)器端口302許可向內(nèi)裝RAM104的寫入,存儲(chǔ)器端口303停止向內(nèi)裝RAM105的存取。
在半導(dǎo)體集成電路裝置301中,存儲(chǔ)器端口302在執(zhí)行解密程序D123a,生成程序D128a時(shí)停止向內(nèi)裝RAM104的寫入,因此解密過程中的數(shù)據(jù)和程序D128a不會(huì)被存儲(chǔ)到內(nèi)裝RAM104。而且,存儲(chǔ)器端口303在總線端口110連接外部總線102和內(nèi)部總線109時(shí)停止向內(nèi)裝RAM105的存取,因此解密過程中的數(shù)據(jù)和程序D128a不會(huì)被輸出到外部。
象以上那樣,若依據(jù)第2實(shí)施形態(tài),在半導(dǎo)體集成電路裝置的內(nèi)部可以不需要用于保持解密程序的非易失性存儲(chǔ)器,并能夠降低成本。另外,解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能將被加密的程序解密并執(zhí)行,而且能夠能夠減小所加密的程序被破壞的可能性。
(第3實(shí)施形態(tài))圖5是用于說明涉及第3實(shí)施形態(tài)的半導(dǎo)體集成電路裝置501的構(gòu)成的方框圖。
圖5所示的半導(dǎo)體集成電路裝置501與圖1所示的半導(dǎo)體集成電路裝置101比較,不同之處在于它還具備存儲(chǔ)端口402。另外,保密控制器111c在具有存儲(chǔ)程序解密執(zhí)行標(biāo)識(shí)位112F的標(biāo)識(shí)位存儲(chǔ)部分113c,以及RAM初始化部分502(與存儲(chǔ)器初始化對(duì)應(yīng))這一點(diǎn)上與圖1所示的保密控制器111a不同。此外,其它要素進(jìn)行與圖1所示的要素相同的動(dòng)作,因此沒有重復(fù)其說明。
RAM初始化部分502在程序解密執(zhí)行標(biāo)識(shí)位112F剛剛被復(fù)位之前,在內(nèi)裝RAM105中的全部區(qū)域?qū)懭搿?”并消去數(shù)據(jù)。因此,做到被寫入到內(nèi)裝RAM105的、被解密的程序和解密中的數(shù)據(jù)從外部不能觀測(cè)。
接著,使用圖6,說明關(guān)于將被加密的程序解密、生成程序D128a,并執(zhí)行程序D128a的程序。
圖6是表示在第3實(shí)施形態(tài)中的、被加密的程序的解密順序的流程圖。
首先,在步驟ST201中,CPU103c進(jìn)行解密程序D123a和被加密的程序向內(nèi)裝RAM104的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST402,并且CPU103c將程序解密執(zhí)行標(biāo)識(shí)位112F置位。這時(shí),總線端口110c進(jìn)行內(nèi)部總線109和外部總線102的分離。另外,這時(shí),存儲(chǔ)器端口402通過來自保密控制器111c的控制停止向內(nèi)裝RAM104的寫入。
接著,前進(jìn)到步驟ST205,并且CPU103c執(zhí)行解密程序D123a,使用存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰將被加密的程序解密后生成程序D128a,并寫入到內(nèi)裝RAM105。
接著,若所生成的程序D128a被寫入到內(nèi)裝RAM105,就前進(jìn)到步驟ST206,并且CPU103c執(zhí)行程序D128a。
接著,前進(jìn)到步驟ST607,RAM初始化部分502在RAM105中的全部區(qū)域?qū)懭搿?”并消去數(shù)據(jù)。
最后,若內(nèi)裝RAM105中的數(shù)據(jù)被消去,就前進(jìn)到步驟ST207,并將程序解密執(zhí)行標(biāo)識(shí)位112F復(fù)位。在程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),通用寄存器控制器119c通過來自保密控制器111c的控制將通用寄存器120c復(fù)位。若程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位,總線端口110c就連接內(nèi)部總線109和外部總線102。而且這時(shí),存儲(chǔ)器端口402通過來自保密控制器111c的控制許可向內(nèi)裝RAM104的寫入。
在半導(dǎo)體集成電路裝置501中,由于存儲(chǔ)器端口402在執(zhí)行解密程序D123a,生成程序D128a時(shí)停止向內(nèi)裝RAM104的寫入,因此解密過程中的數(shù)據(jù)和程序D128a不會(huì)被存儲(chǔ)到內(nèi)裝RAM104。而且,通過RAM初始化部分502,總線端口110在將外部總線102和內(nèi)部總線109從分離狀態(tài)剛剛變成連接狀態(tài)之前全部消去內(nèi)裝RAM105中的數(shù)據(jù),因此,解密過程中的數(shù)據(jù)和程序D128a不會(huì)被輸出到外部。
象以上那樣,若依據(jù)第3實(shí)施形態(tài),在半導(dǎo)體集成電路裝置的內(nèi)部不需要具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,從外部不會(huì)觀測(cè)解密過程中的程序和數(shù)據(jù),能夠?qū)⒈患用艿某绦蚪饷懿?zhí)行,能夠減小所加密的程序被破壞的可能性。
(第4實(shí)施形態(tài))圖7是用于說明涉及第4實(shí)施形態(tài)的半導(dǎo)體集成電路裝置701的構(gòu)成的方框圖。
圖7所示的半導(dǎo)體集成電路裝置701與圖1所示的半導(dǎo)體集成電路裝置101比較,不同之點(diǎn)在于它還具備解密密鑰存取端口703和解密密鑰存儲(chǔ)寄存器702。另外,除了程序D728a和密碼程序D728b外,PC128d還保持解密密鑰密碼程序D728c、加密D728d、以及解密密鑰D728e,在這一點(diǎn)與圖1所示的PC128a不同。標(biāo)識(shí)位存儲(chǔ)部分113d除了程序解密執(zhí)行標(biāo)識(shí)位112F和RAM復(fù)寫標(biāo)識(shí)位113F外,還保持解密密鑰解密標(biāo)識(shí)位704F,在這一點(diǎn)與圖1所示的標(biāo)識(shí)位存儲(chǔ)部分113a不同。閃速存儲(chǔ)器123d除了解密程序723a外,在保持解密密鑰解密程序D723b這一點(diǎn)上不相同。此外,其它要素進(jìn)行與圖1所示的要素相同的動(dòng)作,但以與圖1的場(chǎng)合不同的部分為中心進(jìn)行說明。
CPU103d通過被存儲(chǔ)在內(nèi)裝RAM104和105,或閃速存儲(chǔ)器123d中的程序動(dòng)作。除使通常的程序動(dòng)作外,還執(zhí)行被加密的解密密鑰、被加密的程序的解密以及被解密的程序。另外,將從外部輸入的被加密的解密密鑰、被加密的程序和解密密鑰解密程序D723b、解密程序D723a傳送到內(nèi)裝RAM104。
內(nèi)裝RAM104是在解密程序D723a、解密密鑰解密程序D723b、被解密的程序都沒有被執(zhí)行時(shí)使用的存儲(chǔ)器。下面,說明關(guān)于將被加密的解密密鑰進(jìn)行解密并保存在解密密鑰存儲(chǔ)寄存器702中的場(chǎng)合。首先,在總線端口110d連接外部總線102和內(nèi)部總線109的狀態(tài)下,被加密的解密密鑰和閃速存儲(chǔ)器123d內(nèi)的解密密鑰解密程序D723b通過CPU103d,經(jīng)由外部總線102和內(nèi)部總線109被傳送到內(nèi)裝RAM104。接著,在總線端口110d將外部總線102和內(nèi)部總線109分離后,通過DMA118d,被加密的解密密鑰和解密密鑰解密程序D723b從內(nèi)裝RAM104被傳送到內(nèi)裝RAM105。之后,在直到解密密鑰解密程序D723b結(jié)束期間,通過保密控制器111d禁止從內(nèi)部總線109向內(nèi)裝RAM104的存取。
接下來,說明關(guān)于將被加密的程序進(jìn)行解密并執(zhí)行的場(chǎng)合。首先,在總線端口110d連接了外部總線102和內(nèi)部總線109的狀態(tài)下,通過CPU103d,被加密的程序和解密程序D723a被傳送到內(nèi)裝RAM104。接著,在總線端口110d將外部總線102和內(nèi)部總線109分離后,通過DMA118d,被加密的程序和解密程序D723a從內(nèi)裝RAM104被傳送到內(nèi)裝RAM105。之后,在直到被解密的程序的執(zhí)行已結(jié)束期間,通過保密控制器111d,禁止從內(nèi)部總線109向內(nèi)裝RAM104的存取。
內(nèi)裝RAM105在執(zhí)行解密密鑰解密程序D723b、解密程序D723a、以及被解密的程序D728b時(shí)被使用。下面,說明關(guān)于將被加密的解密密鑰進(jìn)行解密并保存在解密密鑰存儲(chǔ)寄存器702中的場(chǎng)合。在總線端口110d將外部總線102和內(nèi)部總線109分離后,通過DMA118d,被加密的解密密鑰和解密密鑰解密程序D723b從內(nèi)裝RAM104被傳送到內(nèi)裝RAM105。而且,在被加密的解密密鑰的解密過程中,CPU103d使用內(nèi)裝RAM105進(jìn)行它的解密。另外,說明關(guān)于將被加密的程序進(jìn)行解密并執(zhí)行的場(chǎng)合。在總線端口110d將外部總線102和內(nèi)部總線109分離后,被加密的程序和解密程序D723a從內(nèi)裝RAM104被傳送到內(nèi)裝RAM105。在被加密的程序的解密過程中以及在被解密的程序的執(zhí)行過程中,CPU103d使用內(nèi)裝RAM105進(jìn)行被加密的程序的解密以及被解密的程序的執(zhí)行。在總線端口110d連接外部總線102和內(nèi)部總線109時(shí),禁止從內(nèi)部總線109向內(nèi)裝RAM105的存取。因此,暫時(shí)被存儲(chǔ)在內(nèi)裝RAM105中的被解密的解密密鑰D728e和被解密的程序D728a、以及在它們的解密處理的執(zhí)行過程中的數(shù)據(jù)不會(huì)從外部被觀測(cè)。
公開密鑰存儲(chǔ)寄存器106是存儲(chǔ)了公開密鑰的、讀出專用的寄存器。公開密鑰是被傳送到位于半導(dǎo)體集成電路裝置701的外部的個(gè)人計(jì)算機(jī)128d,并用于與解密密鑰密碼程序D728c一起將解密密鑰D728e加密的密鑰。被加密的解密密鑰使用解密密鑰解密程序D723b和被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰被解密。
加密密鑰存儲(chǔ)寄存器107是存儲(chǔ)了加密密鑰的、讀出專用的寄存器。加密密鑰是在使用公開密鑰將被加密的解密密鑰進(jìn)行解密時(shí)使用的密鑰。
解密密鑰存儲(chǔ)寄存器702是存儲(chǔ)D728e的、能寫入和讀出的寄存器。解密密鑰D728e用于與解密密鑰解密程序D723b一起將被加密的程序解密的密鑰。
加密密鑰存取端口108d只在解密密鑰解密標(biāo)識(shí)位704F被置位、RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位期間,CPU103d使從加密密鑰存儲(chǔ)寄存器107讀出加密密鑰變成可能。即,只在解密密鑰解密程序D723b被開始,被加密的解密密鑰以及解密密鑰解密程序D723b從RAM104向內(nèi)裝RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位,之后將被加密的解密密鑰進(jìn)行解密期間,CPU103d使從加密密鑰存儲(chǔ)寄存器107讀出加密密鑰變成可能,除此以外的時(shí)間,禁止加密密鑰的讀出。
解密密鑰存取端口703在解密密鑰解密標(biāo)識(shí)位704F被置位,而且RAM復(fù)寫標(biāo)識(shí)位113被復(fù)位期間,解密密鑰D728e的寫入變?yōu)榭赡?。另外,在程序解密?zhí)行標(biāo)識(shí)位112F被置位,而且RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位期間,讀出解密密鑰D728e變?yōu)榭赡堋3艘酝獾臅r(shí)間,一同禁止寫入、讀出。即,在解密密鑰解密程序D723b被開始,被加密的解密密鑰和解密密鑰解密程序D723b從內(nèi)裝RAM104向RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位,之后將被加密的解密密鑰進(jìn)行解密期間,解密密鑰D728e的寫入變?yōu)榭赡堋A硗?,在解密程序D723a被開始,被加密的程序和解密程序D723a從內(nèi)裝RAM104向RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位,之后將被加密的程序進(jìn)行解密期間,解密密鑰D728e的讀出變?yōu)榭赡堋?br>
總線端口110d在解密密鑰解密標(biāo)識(shí)位704F、程序解密執(zhí)行標(biāo)識(shí)位112F、RAM復(fù)寫標(biāo)識(shí)位113F中間的至少1個(gè)被置位時(shí)將分離內(nèi)部總線109和外部總線102。為此,在解密密鑰解密程序D723b、解密程序D723a、被解密的程序D728a的執(zhí)行過程中,內(nèi)部總線109和內(nèi)裝RAM105不會(huì)從外部被觀測(cè)。在其它場(chǎng)合連接內(nèi)部總線109和外部總線102。
保密控制器111d內(nèi)裝解密密鑰解密標(biāo)識(shí)位704F、程序解密執(zhí)行標(biāo)識(shí)位112F、以及保持RAM復(fù)寫標(biāo)識(shí)位113F的標(biāo)識(shí)位存儲(chǔ)部分、CS分配器114d、DMA118d。
解密密鑰解密標(biāo)識(shí)位704F在解密密鑰解密程序D723b開始時(shí)被CPU103置位,在解密密鑰的解密結(jié)束時(shí),被CPU103復(fù)位。解密密鑰解密程序D723b被開始,被加密的解密密鑰和解密密鑰解密程序D723b從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位。之后在將被加密的解密密鑰進(jìn)行解密期間,禁止向內(nèi)裝RAM104的存取,并且使向內(nèi)裝RAM105、加密密鑰存儲(chǔ)寄存器107、以及解密密鑰存儲(chǔ)寄存器702的存取變?yōu)榭赡?。若解密密鑰解密標(biāo)識(shí)位704F被復(fù)位,就禁止向內(nèi)裝RAM105、加密密鑰存儲(chǔ)寄存器107、以及解密密鑰存儲(chǔ)寄存器702的存取。
程序解密執(zhí)行標(biāo)識(shí)位112F在解密程序D723a開始時(shí)被CPU103d置位,在被解密的程序的執(zhí)行結(jié)束時(shí)被CPU103d復(fù)位。解密密鑰解密程序D723b被開始,被加密的解密密鑰和解密密鑰解密程序D723a從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送結(jié)束,RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位。之后在將被加密的解密密鑰進(jìn)行解密期間和在將被解密程序執(zhí)行期間,禁止向內(nèi)裝RAM104的存取,并使向內(nèi)裝RAM105和解密存儲(chǔ)寄存器702的存取變?yōu)榭赡?。若程序解密?zhí)行標(biāo)識(shí)位112F被復(fù)位,就禁止向內(nèi)裝RAM105、加密密鑰存儲(chǔ)寄存器107以及解密密鑰存儲(chǔ)寄存器702的存取。
RAM復(fù)寫標(biāo)識(shí)位113F在解密密鑰解密程序D723b或解密程序D723a開始時(shí)被CPU103d置位,在從內(nèi)裝RAM104向內(nèi)裝RAM105的數(shù)據(jù)的傳送結(jié)束時(shí)被CPU103d復(fù)位。
CS分配器114d在RAM復(fù)寫標(biāo)識(shí)位113F被置位時(shí)同時(shí)確立選片信號(hào)116S和117S。因此,被加密的解密密鑰、解密密鑰解密程序D723b、被加密的程序、以及解密程序D723a從DMA118d的內(nèi)裝RAM104向內(nèi)裝RAM105的傳送變?yōu)榭赡堋A硗?,在解密密鑰解密標(biāo)識(shí)位704F或程序解密執(zhí)行標(biāo)識(shí)位112F被置位,而且RAM復(fù)寫標(biāo)識(shí)位113F被復(fù)位時(shí),在取消選片信號(hào)116S的同時(shí)將選片信號(hào)115S作為選片信號(hào)117S傳送。在被加密的解密密鑰的解密時(shí)、在被加密的程序的解密時(shí)、以及在被解密的程序的執(zhí)行時(shí)使向內(nèi)裝RAM105的存取變?yōu)榭赡堋T诙疾缓线m時(shí),將選片信號(hào)115S作為選片信號(hào)116S傳送,同時(shí),取消選片信號(hào)117S。因此,在通常時(shí)間,即,在解密密鑰解密程序D723b、解密程序D723a、被解密的程序D728a中的一個(gè)沒有被執(zhí)行時(shí),禁止向內(nèi)裝RAM105的存取。
DMA118d在RAM復(fù)寫標(biāo)識(shí)位113F被置位時(shí),使被加密的解密密鑰、解密密鑰解密程序D723b、被加密的程序、解密程序D723a進(jìn)行從內(nèi)裝RAM104向內(nèi)裝RAM105的傳送,若傳送結(jié)束,就將RAM復(fù)寫標(biāo)識(shí)位113F復(fù)位。
通用寄存器控制器119d在解密密鑰解密標(biāo)識(shí)位704F或程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí)將通用寄存器120d復(fù)位。因此,在被加密的解密密鑰的解密過程中、在被加密的程序的解密過程中、以及在被解密的程序的執(zhí)行過程中被通用寄存器120d生成的數(shù)據(jù)不會(huì)從外部被觀測(cè)。
解密密鑰解密程序D723b被保持在閃速存儲(chǔ)器123d中。在通過解密密鑰密碼程序D728c和公開密鑰將被加密的解密密鑰進(jìn)行解密時(shí),經(jīng)由半導(dǎo)體集成電路裝置701內(nèi)部的內(nèi)裝RAM104被傳送到內(nèi)裝RAM 105,并與被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰一起將被被加密的解密密鑰進(jìn)行解密。
解密程序D723a被保持在閃速存儲(chǔ)器123d中。在通過密碼程序D728b和加密密鑰D728d將被加密的程序進(jìn)行解密時(shí),經(jīng)由半導(dǎo)體集成電路裝置701內(nèi)部的內(nèi)裝RAM104被傳送到內(nèi)裝RAM 105,并與被存儲(chǔ)在解密密鑰存儲(chǔ)寄存器702中的解密密鑰一起將被被加密的程序進(jìn)行解密。
程序D728a使用密碼程序D728b和加密密鑰D728d被加密,并經(jīng)由網(wǎng)絡(luò)線路127、個(gè)人計(jì)算機(jī)126、USB電纜125、USB上游端口124、外部總線102被傳送到半導(dǎo)體集成電路裝置701。然后,在半導(dǎo)體集成電路裝置701內(nèi)使用解密程序D723a和被存儲(chǔ)在解密密鑰存儲(chǔ)寄存器107中的解密密鑰D728e解密。
密碼程序D728b使用加密密鑰D728d將程序D728a加密。
解密密鑰密碼程序D728c與存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰一起將解密密鑰D728e加密。
加密密鑰D728d與密碼程序D728b一起將程序D728a解密。
解密密鑰D728e與解密程序D723a一起使用加密密鑰D728d將被加密的程序解密。
信息設(shè)備740具有半導(dǎo)體集成電路裝置701、外圍設(shè)備150、閃速存儲(chǔ)器123d、以及USB上游端口124。
接著,使用圖8,說明關(guān)于將被加密的解密密鑰進(jìn)行解密并將解密密鑰D728e存儲(chǔ)到解密密鑰存儲(chǔ)寄存器702的順序。
圖8是表示在第4實(shí)施形態(tài)中的被加密的解密密鑰的解密順序的流程圖。
首先,在步驟ST801中,CPU103d進(jìn)行將解密密鑰解密程序D723b和被加密的解密密鑰向內(nèi)裝RAM104的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST802,并且CPU103d將解密密鑰解密標(biāo)識(shí)位704F和RAM復(fù)寫標(biāo)識(shí)位113F置位。這時(shí),總線端口110d進(jìn)行內(nèi)部總線109和外部總線102的分離。
接著,在該分離后,前進(jìn)到步驟ST803,并且,DMA118d進(jìn)行將內(nèi)裝RAM104中的解密密鑰解密程序D723b和被加密的解密密鑰向內(nèi)裝RAM105的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST804,并且CPU103d將RAM復(fù)寫標(biāo)識(shí)位113F復(fù)位。由此,直到后述的步驟ST805結(jié)束,CS分配器114d沒有確立選片信號(hào)116S。
接著,前進(jìn)到步驟ST805,CPU103d使用被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰執(zhí)行解密密鑰解密程序D723b,并將被加密的解密密鑰進(jìn)行解密生成解密密鑰D728e,然后向解密密鑰存儲(chǔ)寄存器702寫入。
最后,前進(jìn)到步驟ST806,將解密密鑰解密標(biāo)識(shí)位704F復(fù)位。在解密密鑰解密標(biāo)識(shí)位704F被復(fù)位時(shí),通用寄存器控制器119d將通用寄存器120d復(fù)位。若解密密鑰解密標(biāo)識(shí)位704F被復(fù)位,那么總線端口110d就連接內(nèi)部總線109和外部總線102。另外,CS分配器114d將選片信號(hào)115S作為選片信號(hào)116S傳送,并取消選片信號(hào)117S。
圖9表示與解密密鑰解密標(biāo)識(shí)位704F、程序解密執(zhí)行標(biāo)識(shí)位112F、以及與RAM復(fù)寫標(biāo)識(shí)位113F的狀態(tài)對(duì)應(yīng)的總線端口110d、加密密鑰存取端口108d、解密密鑰存取端口703、選片信號(hào)116S和117S的狀態(tài)。
在圖9中,總線端口110d、加密密鑰存取端口108d、解密密鑰存取端口703在數(shù)據(jù)的傳送變?yōu)榭赡艿膱?chǎng)合表示為open(斷開),在該數(shù)據(jù)的傳送是不可能的場(chǎng)合表示為close(閉合)。另外,在作為選片信號(hào)116S和117S傳送選片信號(hào)115S中的信號(hào)的場(chǎng)合,表示為CS115。
如圖9所示那樣,在總線端口110d連接外部總線102和內(nèi)部總線109時(shí),不能向加密密鑰存儲(chǔ)寄存器107和解密密鑰存儲(chǔ)寄存器702的存取。另外,選片信號(hào)116S在解密密鑰解密程序D723b被執(zhí)行,生成解密密鑰D728e時(shí)沒有被確立。因此,解密過程中的數(shù)據(jù)和加密密鑰、解密密鑰D728e不會(huì)被存儲(chǔ)到內(nèi)裝RAM104中。而且,選片信號(hào)117S在總線110d連接外部總線102和內(nèi)部總線109時(shí)被取消,因此,解密過程中的數(shù)據(jù)和加密密鑰、解密密鑰D728e不會(huì)被輸出到外部。
接著,使用圖10,說明關(guān)于將被加密的程序解密,生成程序D728a,并執(zhí)行程序D728a的順序。
圖10是表示在第4實(shí)施形態(tài)中的、被加密的程序的解密順序的流程圖。
首先,在步驟ST1001中,CPU103d將解密程序D723a和被加密的程序傳送到內(nèi)裝RAM104。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST1002,并且CPU103d將程序解密執(zhí)行標(biāo)識(shí)位112F、RAM復(fù)寫標(biāo)識(shí)位113F置位。這時(shí),總線端口110d進(jìn)行內(nèi)部總線109和外部總線102的分離。
接著,在該分離后,前進(jìn)到步驟ST1003,并且DMA118D進(jìn)行內(nèi)裝RAM104中的解密程序D723a和被加密的程序向內(nèi)裝RAM105的傳送。
接著,若該傳送結(jié)束,就前進(jìn)到步驟ST1004,并且CPU103d將RAM復(fù)寫標(biāo)識(shí)位113F復(fù)位。由此,直到后述的步驟ST1006結(jié)束,CS分配器114D沒有確立選片信號(hào)116S。
接著,前進(jìn)到步驟ST1005,并且CPU103d使用解密密鑰D728e執(zhí)行解密程序D723a,并將被加密的程序解密,生成程序D728a。然后,將所生成的程序D728a寫入到內(nèi)裝RAM105。
接著,前進(jìn)到步驟ST1006,并且CPU103d執(zhí)行程序D728a。
最后,前進(jìn)到步驟ST1007,CPU103d將程序解密執(zhí)行標(biāo)識(shí)位112F復(fù)位。在程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位時(shí),通用寄存器控制器119d將通用寄存器120d復(fù)位。若程序解密執(zhí)行標(biāo)識(shí)位112F被復(fù)位,總線端口110d就連接內(nèi)部總線109和外部總線102。另外,CS分配器114d將選片信號(hào)115S作為選片信號(hào)116S傳送,并取消選片信號(hào)117S。
如上述圖9所示那樣,選片信號(hào)116S在執(zhí)行解密程序D723a并生成程序D728a時(shí)沒有被確立。為此,解密過程中的數(shù)據(jù)和解密密鑰D728e、程序D728a不會(huì)被存儲(chǔ)在內(nèi)裝RAM104中。而且,選片信號(hào)117S在總線端口110d連接外部總線102和內(nèi)部總線109時(shí)被取消,因此解密過程中的數(shù)據(jù)和解密密鑰D728e、程序D728a不會(huì)被輸出到外部。
這樣一來,在半導(dǎo)體集成電路裝置的內(nèi)部就沒有必要具備用于保持解密程序的非易失性存儲(chǔ)器,并能夠降低成本。另外,不會(huì)使解密過程中的程序和數(shù)據(jù)從外部被觀測(cè),能夠?qū)⒈患用艿某绦蚪饷懿?zhí)行,并能減小所加密的程序被破壞的可能性。
而且,在傳送被加密的程序的一方能夠選擇密碼程序和密碼強(qiáng)度。
<程序的交付方法及系統(tǒng)>
圖11~圖17是用于說明程序交付系統(tǒng)及其方法的圖,以下,以作為本實(shí)施形態(tài)的第4實(shí)施形態(tài)為例進(jìn)行說明。
圖11~圖17表示在程序的使用者一方使用的信息設(shè)備內(nèi)的半導(dǎo)體集成電路裝置701(與第2裝置對(duì)應(yīng))和程序的開發(fā)者一方使用的PC128d(與第1裝置對(duì)應(yīng))之間,在將程序加密,將被加密的程序解密之前的數(shù)據(jù)的交換。
首先,如圖11所示那樣,使用者一方的半導(dǎo)體集成電路裝置701將被存儲(chǔ)在公開密鑰存儲(chǔ)寄存器106中的公開密鑰D106傳送到開發(fā)者一方的PC128d。
接著,如圖12所示那樣,開發(fā)者一方的PC128d使用公開密鑰D106和解密密鑰密碼程序D728c將解密密鑰D728e加密,生成被加密的解密密鑰1201。
接著,如圖13所示那樣,開發(fā)者一方的PC128d將被加密的解密密鑰1201傳送到使用者一方的半導(dǎo)體集成電路裝置701。
接著,如圖14所示那樣,使用者一方的半導(dǎo)體集成電路裝置701使用被存儲(chǔ)在加密密鑰存儲(chǔ)寄存器107中的加密密鑰D107和解密密鑰解密程序D723b,將被加密的解密密鑰1201進(jìn)行解密,并將解密密鑰D728e存儲(chǔ)在解密密鑰存儲(chǔ)寄存器702中。
接著,如圖15所示那樣,開發(fā)者一方的PC128d使用加密密鑰D728d和密碼程序D728b,將程序D728a加密,生成被加密的程序1501。
接著,如圖16所示那樣,開發(fā)者一方的PC128d將被加密的程序1501傳送到使用者一方的半導(dǎo)體集成電路裝置701。
最后,如圖17所示那樣,使用者一方的半導(dǎo)體集成電路裝置701使用解密密鑰D728e和解密程序D723a將被加密的程序1501解密,然后,執(zhí)行被解密的程序D728a。
通過這樣做,被加密的程序能夠用程序開發(fā)者一方所具有的加密密鑰被加密后交付使用者一方,并用程序開發(fā)者一方所具有的解密密鑰解密,因此能夠用程序開發(fā)者一方所希望的密碼強(qiáng)度將程序加密并交付。
此外,在以上說明的第1~第4實(shí)施形態(tài)的半導(dǎo)體集成電路中,說明了關(guān)于使用選片信號(hào)進(jìn)行內(nèi)裝RAM104、內(nèi)裝RAM105的控制的場(chǎng)合,但是,不言而喻,即使是使用了允許寫入信號(hào)和允許讀出信號(hào)的場(chǎng)合,同樣,在各實(shí)施形態(tài)中,本發(fā)明也能實(shí)施。
象以上那樣,若依據(jù)涉及本發(fā)明的半導(dǎo)體集成電路裝置,在半導(dǎo)體集成電路裝置的內(nèi)部沒有必要具備用于保持解密程序的非易失性存儲(chǔ)器,并能降低成本。另外,使解密過程中的程序和數(shù)據(jù)不會(huì)從外部被觀測(cè),能夠?qū)⒈患用艿某绦蚪饷懿?zhí)行,能夠減小所加密的程序被破壞的可能性。
權(quán)利要求
1.一種半導(dǎo)體集成電路裝置,其特征在于,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;經(jīng)由所述總線端口將被加密的程序和解密程序存儲(chǔ)到所述第1存儲(chǔ)器,使用所述解密程序和所述加密密鑰對(duì)所述被加密的程序進(jìn)行解密,并執(zhí)行被解密的程序的CPU;以及若所述被加密的程序和所述解密程序被存儲(chǔ)到所述第1存儲(chǔ)器中,那么對(duì)于所述總線端口禁止來自外部的存取,許可向所述第1和第2的存儲(chǔ)器的存取并進(jìn)行所述被加密的程序和所述解碼程序的、從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器的傳送,若所述傳送結(jié)束,那么禁止向所述第1存儲(chǔ)器的存取,若所述解密和所述被解密的程序的執(zhí)行結(jié)束,那么禁止向所述第2存儲(chǔ)器的存取的控制部分。
2.如權(quán)利要求1記載的半導(dǎo)體集成電路裝置,其特征在于,還具備控制從所述CPU向所述加密密鑰保持部分的存取的加密密鑰存取端口,所述加密密鑰存取端口在所述傳送結(jié)束時(shí)許可向所述加密密鑰保持部分的存取,在所述被解密的程序的執(zhí)行結(jié)束時(shí)禁止向所述加密密鑰保持部分的存取。
3.如權(quán)利要求1記載的半導(dǎo)體集成電路裝置,其特征在于,所述CPU包含寄存器,若所述被解密的程序的執(zhí)行結(jié)束,就消去存儲(chǔ)在所述寄存器中的數(shù)據(jù)。
4.如權(quán)利要求1記載的半導(dǎo)體集成電路裝置,其特征在于,所述控制部分通過控制向所述第1和第2存儲(chǔ)器的選片信號(hào)控制向所述第1和第2存儲(chǔ)器的存取。
5.如權(quán)利要求1記載的半導(dǎo)體集成電路裝置,其特征在于,所述控制部分包含存儲(chǔ)第1標(biāo)識(shí)位和第2標(biāo)識(shí)位的標(biāo)識(shí)位存儲(chǔ)部分,在所述第1標(biāo)識(shí)位被置位時(shí)許可向所述第1存儲(chǔ)器和所述第2存儲(chǔ)器的存取,在所述第1標(biāo)識(shí)位被復(fù)位、所述第2標(biāo)識(shí)位被置位時(shí)禁止向所述第1存儲(chǔ)器的存取,在所述第1和第2標(biāo)識(shí)位都被復(fù)位時(shí)禁止向所述第2存儲(chǔ)器的存取,所述總線端口在所述第1或第2標(biāo)識(shí)位中至少1個(gè)被置位時(shí),禁止來自外部的存取,所述CPU若將所述被加密的程序和所述解密程序輸入到所述第1存儲(chǔ)器,就將所述第1標(biāo)識(shí)位和所述第2標(biāo)識(shí)位置位,若所述傳送結(jié)束,就將所述第1標(biāo)識(shí)位復(fù)位,若所述被解密的程序的執(zhí)行已結(jié)束,就將所述第2標(biāo)識(shí)位復(fù)位。
6.一種半導(dǎo)體集成電路裝置,其特征在于,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;被連接在所述總線和所述第1存儲(chǔ)器之間,控制從所述總線向所述第1存儲(chǔ)器的存取的第1存儲(chǔ)器端口;被連接在所述總線和所述第2存儲(chǔ)器之間,控制從所述總線向所述第2存儲(chǔ)器的存取的第2存儲(chǔ)器端口;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;具有寄存器,經(jīng)由所述總線端口進(jìn)行將被加密的程序和解密程序向所述第1存儲(chǔ)器的寫入,使用所述解密程序和所述加密密鑰對(duì)所述被加密的程序進(jìn)行解密,進(jìn)行將被解密的程序向所述第2存儲(chǔ)器的寫入,并執(zhí)行被解密的程序的CPU;以及若向所述第1存儲(chǔ)器的寫入已結(jié)束,那么對(duì)于所述總線端口禁止從外部向所述總線的存取,對(duì)于所述第1存儲(chǔ)器端口禁止向所述第1存儲(chǔ)器的寫入,對(duì)于所述第2存儲(chǔ)器端口,許可向所述第2的存儲(chǔ)器的存取,若所述被解密的程序的執(zhí)行已結(jié)束,那么對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),并禁止向所述加密密鑰保持部分的存取,同時(shí),對(duì)于所述第2存儲(chǔ)器端口禁止向所述第2存儲(chǔ)器的存取的控制部分。
7.一種半導(dǎo)體集成電路裝置,其特征在于,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;被連接在所述總線和所述第1存儲(chǔ)器之間,控制從所述總線向所述第1存儲(chǔ)器的存取的存儲(chǔ)器端口;保持加密密鑰的加密密鑰保持部分;控制從外部向所述總線的存取的總線端口;具有寄存器,經(jīng)由所述總線端口進(jìn)行將被加密的程序和解密程序向所述第1存儲(chǔ)器的寫入,使用所述解密程序和所述加密密鑰對(duì)所述被加密的程序進(jìn)行解密,進(jìn)行被解密的程序向所述第2存儲(chǔ)器的寫入,并執(zhí)行被解密的程序的CPU;以及包含消去所述第2存儲(chǔ)器中的數(shù)據(jù)的存儲(chǔ)器初始化部分,若結(jié)束向所述第1存儲(chǔ)器的寫入,對(duì)于所述總線端口就禁止從外部向所述總線的存取,對(duì)于所述存儲(chǔ)器端口禁止向所述第1存儲(chǔ)器的寫入,若結(jié)束所述被解密的程序的執(zhí)行,對(duì)于所述CPU就消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),禁止向所述加密密鑰保持部分的存取,對(duì)于所述存儲(chǔ)器初始化部分將消去所述第2存儲(chǔ)器中的數(shù)據(jù)的控制部分。
8.一種半導(dǎo)體集成電路裝置,其特征在于,它具備在與總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第1存儲(chǔ)器;在與所述總線之間進(jìn)行數(shù)據(jù)的輸入輸出的第2存儲(chǔ)器;保持加密密鑰的加密密鑰保持部分;保持解密密鑰的解密密鑰保持部分;控制從外部向所述總線的存取的總線端口;包含寄存器,經(jīng)由所述總線端口進(jìn)行將被加密的解密密鑰和解密密鑰解密程序向所述第1存儲(chǔ)器存儲(chǔ)的第1存儲(chǔ),使用所述解密密鑰解密程序和所述加密密鑰進(jìn)行對(duì)所述被加密的解密密鑰解密的第1解密,進(jìn)行將被解密的解密密鑰向所述解密密鑰保持部分的寫入,進(jìn)行將被加密的程序和解密程序向所述第1存儲(chǔ)器存儲(chǔ)的第2存儲(chǔ),使用所述解密程序和所述被解密的解密密鑰進(jìn)行對(duì)所述被加密的程序解密的第2解密,并執(zhí)行被解密的程序的CPU;以及向所述第1存儲(chǔ)器的所述第1存儲(chǔ)結(jié)束時(shí),對(duì)于所述總線端口禁止從外部向所述總線的存取,許可向所述第1存儲(chǔ)器和所述第2存儲(chǔ)器的存取,并進(jìn)行從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器的所述被加密的解密密鑰和所述解密密鑰解密程序的傳送,在該傳送結(jié)束時(shí),許可向所述加密密鑰保持部分的存取,禁止向所述第1存儲(chǔ)器的存取,在所述第1解密結(jié)束時(shí),對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),并禁止向所述加密密鑰保持部分的存取,同時(shí),禁止向所述第2存儲(chǔ)器的存取,許可向所述第1存儲(chǔ)器的存取,對(duì)于所述總線端口許可從外部向所述總線的存取,在向所述第1存儲(chǔ)器的所述第2存儲(chǔ)結(jié)束時(shí),對(duì)于所述總線端口禁止從外部向所述總線的存取,許可向所述第2存儲(chǔ)器的存取,并從所述第1存儲(chǔ)器向所述第2存儲(chǔ)器進(jìn)行所述被加密的程序和所述解密程序的傳送,在該傳送結(jié)束時(shí),許可向所述解密密鑰保持部分的存取,禁止向所述第1存儲(chǔ)器的存取,在結(jié)束所述第2解密和所述被解密的程序的執(zhí)行時(shí),對(duì)于所述CPU將消去被存儲(chǔ)在所述寄存器中的數(shù)據(jù),禁止向所述加密密鑰保持部分的存取,禁止向所述第2存儲(chǔ)器的存取的控制部分。
9.一種在第1裝置和第2裝置之間進(jìn)行程序交付的程序交付方法,其特征在于,它具備以下步驟從所述第2裝置向所述第1裝置進(jìn)行公開密鑰的傳送的步驟;從其外部將解密程序傳送到所述第2裝置的步驟;在所述第1裝置中,使用所述公開密鑰進(jìn)行所述程序的加密,并將所加密的程序傳送到所述第2裝置的步驟;以及在所述第2裝置中,使用與所述公開密鑰對(duì)應(yīng)的加密密鑰和所述解密程序?qū)λ霰患用艿某绦蚪饷艿牟襟E。
10.一種在第1裝置和第2裝置之間進(jìn)行程序交付的程序交付方法,其特征在于,它具備以下步驟從所述第2裝置向所述第1裝置進(jìn)行公開密鑰的傳送的步驟;在所述第1裝置中,使用所述公開密鑰進(jìn)行解密密鑰的加密,并將所加密的解密密鑰傳送到所述第2裝置的步驟;在所述第2裝置中,使用與所述公開密鑰對(duì)應(yīng)的加密密鑰將所述被加密的解密密鑰進(jìn)行解密的步驟;在所述第1裝置中,使用與所述解密密鑰對(duì)應(yīng)的加密密鑰進(jìn)行所述程序的加密,并將所加密的程序傳送到所述第2裝置的步驟;以及在所述第2裝置中,使用被解密的解密密鑰將所述被加密的程序進(jìn)行解密的步驟。
11.一種程序交付系統(tǒng)是具備第1裝置和第2裝置,并在所述第1裝置和所述第2裝置之間進(jìn)行程序交付的程序交付系統(tǒng),其特征在于,所述第1裝置使用公開密鑰將所述程序加密,并被加密的該程序向所述第2裝置傳送,所述第2裝置使用與所述公開密鑰對(duì)應(yīng)的加密密鑰和從該第2裝置的外部傳送的解密程序?qū)⑼ㄟ^所述第1裝置被加密的程序解密。
12.一種程序交付系統(tǒng)是具備第1裝置和第2裝置,并在所述第1裝置和所述第2裝置之間進(jìn)行程序交付的程序交付系統(tǒng),其特征在于,所述第1裝置應(yīng)使用公開密鑰將解密密鑰加密,并將已加密的解密密鑰向所述第2裝置進(jìn)行傳送,使用與所述解密密鑰對(duì)應(yīng)的加密密鑰將所述程序加密,并將已加密的程序向所述第2裝置進(jìn)行傳送,所述第2裝置應(yīng)使用與所述公開密鑰對(duì)應(yīng)的加密密鑰將通過所述第1裝置被加密的解密密鑰進(jìn)行解密,并使用被解密的解密密鑰將通過所述第1裝置被加密的程序進(jìn)行解密。
全文摘要
本發(fā)明提供半導(dǎo)體集成電路裝置、以及程序交付方法及其系統(tǒng)。該裝置不需要裝載保持解密程序的非易失性存儲(chǔ)器,使被解密的程序不會(huì)從外部被觀測(cè),解密并執(zhí)行被加密的程序。本發(fā)明的半導(dǎo)體集成電路裝置(101),若被加密的程序和解密程序(D123a)被輸入到(RAM105),對(duì)總線端口(110a)就禁止來自外部的存取,許可向RAM(104)和(105)的存取,并進(jìn)行被加密的程序和解密程序向RAM105的傳送。若該傳送結(jié)束,就禁止向RAM(104)的存取,對(duì)于CPU103a使用被保持在加密密鑰保持部分(107)的加密密鑰和解密程序D123a,命令被加密的程序的解密和被解密的該程序的執(zhí)行。
文檔編號(hào)G06F21/00GK1499360SQ20031011383
公開日2004年5月26日 申請(qǐng)日期2003年10月31日 優(yōu)先權(quán)日2002年10月31日
發(fā)明者川口謙一 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社