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