專利名稱:數(shù)據(jù)處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通過多個進(jìn)程的聯(lián)動動作處理保護(hù)數(shù)據(jù)的數(shù)據(jù)處理裝 置,特別涉及防止對保護(hù)數(shù)據(jù)的非法處理的技術(shù)。
背景技術(shù):
近年來,在將音樂或電影等內(nèi)容進(jìn)行再現(xiàn)的內(nèi)容再現(xiàn)裝置等的許多 數(shù)字家電中,開始安裝用來進(jìn)行著作權(quán)保護(hù)的數(shù)據(jù)的加密、解密的功能(參照專利文獻(xiàn)1 3、非專利文獻(xiàn)1 2)、以及用來進(jìn)行銷售后的新功 能的追加及缺陷修正等的程序更新功能等。 專利文獻(xiàn)1:日本特開平2-155034號公報 專利文獻(xiàn)2:日本特開平4-102920號公報 專利文獻(xiàn)3:日本特開2001-318787號公報非專利文獻(xiàn)1: Lie, D" Thekkath, C. A" Mitchell, M., Lincoln, P., Boneh: D., Mitchell, J. C. and Horowitz, M.: Architectural Support for Copy and Tamper Resistant Software, In Proceedings of the她Inte,l Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-IX), pages 169-177, November 2000.非專利文獻(xiàn)2: E. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. Devadas. The AEGIS processor architecture for tamperevident and tamper resistant processing. Technical Report LCS-TM461, Massachusetts Institute of Technology, February 2003.上述加密、解密等的對數(shù)據(jù)的處理在程序自身的管理下進(jìn)行,上述 數(shù)據(jù)不會由其他程序泄漏。但是,在將加密數(shù)據(jù)進(jìn)行解密的解密程序、和將解密后的數(shù)據(jù)再現(xiàn) 的播放器程序之間聯(lián)動處理數(shù)據(jù)的情況下,需要使得能夠從多個程序使 用該數(shù)據(jù),所以如果惡意利用上述更新功能而導(dǎo)入非法的程序,則會產(chǎn) 生由該非法的程序?qū)⑸鲜鰯?shù)據(jù)泄漏的問題。發(fā)明內(nèi)容鑒于上述問題,本發(fā)明的目的是提供一種即使在各程序聯(lián)動處理所 處理的數(shù)據(jù)的情況下也能夠防止該數(shù)據(jù)的泄漏的數(shù)據(jù)處理裝置。為了解決上述課題,本發(fā)明是的數(shù)據(jù)處理裝置,具備按照程序動作 的處理器,切換通常模式和保護(hù)模式來動作,在該通常模式下,作為上 述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動作被 抑制,其特征在于,具備存取禁止單元,在通常模式下,對于第1進(jìn) 程的處理對象數(shù)據(jù)許可上述第1進(jìn)程的存取,禁止其他進(jìn)程的存取;檢 測單元,在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程的調(diào)用 指令;切換單元,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù) 模式;判斷單元,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處 理對象數(shù)據(jù)的使用權(quán)限;以及控制單元,在保護(hù)模式下,在判斷為上述 第2進(jìn)程具有上述使用權(quán)限的情況下,對上述存取禁止單元進(jìn)行控制, 以許可上述第2進(jìn)程在上述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。本發(fā)明的數(shù)據(jù)處理裝置通過具備上述結(jié)構(gòu),第1進(jìn)程能夠?qū)?shù)據(jù)交 給第2進(jìn)程,并且不會被第2進(jìn)程以外的進(jìn)程知道,能夠防止通過在通 常模式下動作的其他進(jìn)程泄漏數(shù)據(jù)。此外,通過具備上述結(jié)構(gòu),即使在第2程序被更新而功能被變更、 失去了處理對象數(shù)據(jù)的使用權(quán)限的情況下,上述判斷單元也能夠檢測到 該情況,能夠通過上述控制單元防止信息泄漏。此外,也可以是,上述存取禁止單元包括存儲器;保持部,僅在 保護(hù)模式下,可改寫地保持管理信息,該管理信息表示每個進(jìn)程在上述 存儲器內(nèi)許可存取的區(qū)域;以及存取限制部,使在通常模式下動作的進(jìn)程按照上述管理信息對上述存儲器進(jìn)行存取;在上述判斷單元判斷為有 使用權(quán)限的情況下,上述控制單元在第2進(jìn)程的管理信息中追加許可對 上述存儲器上的保持有上述對象數(shù)據(jù)的區(qū)域進(jìn)行存取的信息。根據(jù)該結(jié)構(gòu),由于將上述管理信息的改寫限制在保護(hù)模式的情況, 所以能夠防止由在通常模式下動作的其他程序?qū)⑸鲜龉芾硇畔⒎欠ǖ馗?寫為以能夠發(fā)生數(shù)據(jù)泄漏。此外,也可以是,上述保持部保持的上述管理信息包括一個以上的、 將上述存儲器中的地址與對應(yīng)于地址的密鑰對應(yīng)起來的信息;上述存取 限制部包括取得部,取得包括上述存儲器的地址的向上述存儲器存取 的存取請求;地址判斷部,判斷包含在上述存取請求中的地址是否包含 在上述管理信息中;存取執(zhí)行部,在判斷為包含的情況下,如果上述存 取請求是寫入請求,則將寫入的數(shù)據(jù)用與上述地址對應(yīng)的密鑰進(jìn)行加密 而寫入到上述地址所表示的區(qū)域中,在上述存取請求是讀出請求的情況 下,將從上述存儲器的上述地址讀出的數(shù)據(jù)用對應(yīng)于上述地址的密鑰進(jìn) 行解密并輸出。根據(jù)該結(jié)構(gòu),由于通過對每個進(jìn)程設(shè)定的每個地址的密鑰將數(shù)據(jù)加 密并記錄到上述存儲器中,將加密并記錄的數(shù)據(jù)進(jìn)行解密并讀出,所以 能夠防止上述數(shù)據(jù)被其他程序適當(dāng)?shù)厥褂?。這里,在向存儲器的存取請求中,除了從上述存儲器讀出數(shù)據(jù)的讀 出請求、向上述存儲器寫入的數(shù)據(jù)的寫入請求以外,還包括希望使用的 上述存儲器的區(qū)域的使用許可請求、由自程序也使用許可其他程序使用 的存儲器的區(qū)域的共享設(shè)定請求等。此外,上述數(shù)據(jù)也可以是進(jìn)程的代碼。根據(jù)該結(jié)構(gòu),能夠防止進(jìn)程的代碼泄漏。此外,也可以是,對各進(jìn)程分配各自的進(jìn)程標(biāo)識符;上述保持部保 持的上述管理信息包括一個以上的、將上述存儲器中的地址和表示許可 向上述地址存取的進(jìn)程的進(jìn)程標(biāo)識符對應(yīng)起來的信息;上述進(jìn)程限制部 包括取得部,取得包括上述存儲器的地址的、向上述存儲器存取的存取請求;地址判斷部,判斷將包含在存取請求中的地址與分配給請求存 取的進(jìn)程的進(jìn)程標(biāo)識符對應(yīng)起來的信息是否包含在上述管理信息中;存 取執(zhí)行部,在判斷為包含的情況下,使請求存取的進(jìn)程對上述存儲器的 上述地址進(jìn)行存取。根據(jù)該結(jié)構(gòu),即使有向存儲器的存取請求,由于將向上述存儲器的 上述地址的存取僅限制在與上述管理信息中包含的被請求存取的地址對 應(yīng)的進(jìn)程標(biāo)識符所表示的進(jìn)程,所以能夠防止由其他程序泄漏上述數(shù)據(jù)。此外,也可以是,對于上述數(shù)據(jù)分配安全要件信息,該安全要件信 息表示對一個以上的數(shù)據(jù)處理方法的各個是否許可執(zhí)行;對各進(jìn)程分配 功能信息,該功能信息表示能否執(zhí)行一個以上的數(shù)據(jù)處理方法的各個數(shù) 據(jù)處理方法;上述調(diào)用指令包含表示一個以上的數(shù)據(jù)處理方法的任一個 的處理指定信息;在上述安全要件信息表示許可執(zhí)行上述處理指定信息 表示的數(shù)據(jù)處理方法、并且第2進(jìn)程的功能信息表示能夠執(zhí)行上述處理 指定信息表示的數(shù)據(jù)處理方法的情況下,上述判斷單元決定為有上述使 用權(quán)限。根據(jù)該結(jié)構(gòu),將請求上述數(shù)據(jù)聯(lián)動的數(shù)據(jù)限定于由對該數(shù)據(jù)分配的 安全要件信息許可、并且第2進(jìn)程的功能信息表示能夠執(zhí)行的數(shù)據(jù)處理 方法的處理,能夠降低數(shù)據(jù)泄漏的可能性。此外,也可以是,上述切換單元在從上述通常模式向上述保護(hù)模式 切換的情況下,將在上述通常模式下動作的進(jìn)程的上下文保存到上述存 儲器中;在從上述保護(hù)模式向上述通常模式切換的情況下,從上述存儲 器恢復(fù)接著在上述通常模式下動作的進(jìn)程的上下文。根據(jù)該結(jié)構(gòu),由于能夠?qū)⑸舷挛牡谋4?、恢?fù)的處理執(zhí)行限定在保 護(hù)模式的情況,所以能夠防止由在通常模式下動作的進(jìn)程對上下文進(jìn)行 非法的操作而泄漏數(shù)據(jù)。此外,也可以是,上述第1進(jìn)程及上述第2進(jìn)程包括在分別動作的 期間發(fā)生了中斷或例外的情況下,處理該中斷或例外的中斷處理或例外 處理;上述數(shù)據(jù)處理裝置還包括向量表保持單元,僅在保護(hù)模式下,可改寫地保持表示在發(fā)生了中斷或例外的情況下要執(zhí)行的處理的向量表;向量表改寫單元,在動作的進(jìn)程從上述第1進(jìn)程向上述第2進(jìn)程切 換之前,在保護(hù)模式下改寫上述向量表,以使在上述通常模式下發(fā)生中 斷或例外時執(zhí)行第2進(jìn)程的中斷處理或例外處理。根據(jù)該結(jié)構(gòu),由于將向量表的變更限定于保護(hù)模式的情況,所以能 夠防止由在通常模式下動作的進(jìn)程對向量表進(jìn)行非法的寫入操作而執(zhí)行 非法進(jìn)程、從而泄漏數(shù)據(jù)。此外,也可以是,上述判斷單元還包括使用請求受理部,從進(jìn)程 受理請求使用上述存儲器的區(qū)域;使用判斷部,判斷請求使用的地址是 否已被使用;權(quán)限判斷部,在沒有被使用的情況下,判斷請求使用的進(jìn) 程有無對希望保存到上述地址的數(shù)據(jù)的使用權(quán)限;管理信息登記部,在 上述權(quán)限判斷部判斷為有使用權(quán)限的情況下,在請求使用的進(jìn)程的管理 信息中登記許可向上述地址所表示的區(qū)域進(jìn)行存取的信息。根據(jù)該結(jié)構(gòu),按照來自進(jìn)程的請求生成管理信息,以使得只有請求 使用的進(jìn)程能夠使用所請求的存儲器區(qū)域,能夠防止由其他程序泄漏存 儲在上述區(qū)域中的數(shù)據(jù)。此外,也可以是,在上述權(quán)限判斷部判斷為有使用權(quán)限的情況下, 上述管理信息登記部生成密鑰,并作為許可上述存取的信息,在請求使 用的上述進(jìn)程的管理信息中追加將上述地址與所生成的上述密鑰對應(yīng)起 來的信息的組。根據(jù)該結(jié)構(gòu),能夠?qū)γ慨?dāng)請求時生成的密鑰追加到管理信息中。如果使用對每個地址不同的密鑰,則使用相同的密鑰的頻率變少, 能夠降低密鑰被解密的概率。此外,也可以是,上述數(shù)據(jù)處理裝置還包括進(jìn)行上述進(jìn)程的調(diào)試的 調(diào)試單元;上述切換單元還在切換為上述通常模式的情況下,使上述調(diào) 試單元有效,在切換為上述保護(hù)模式的情況下,使上述調(diào)試單元無效。根據(jù)該結(jié)構(gòu),能夠禁止保護(hù)模式下的調(diào)試,能夠防止保護(hù)模式下的 處理內(nèi)容被解析。本發(fā)明的數(shù)據(jù)處理方法,在具備按照程序動作的處理器、切換通常 模式和保護(hù)模式來動作的數(shù)據(jù)處理裝置中使用,在上述通常模式下,作 為上述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動 作被抑制,具備存取禁止步驟,在通常模式下,對于第1進(jìn)程的處理 對象數(shù)據(jù)許可上述第1進(jìn)程的存取,禁止其他進(jìn)程的存?。粰z測步驟, 在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程的調(diào)用指令;切 換步驟,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判 斷步驟,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理對象數(shù) 據(jù)的使用權(quán)限;控制步驟,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有 上述使用權(quán)限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2 進(jìn)程在上述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。本發(fā)明的計算機程序,在具備按照程序動作的處理器、切換通常模 式和保護(hù)模式來動作的數(shù)據(jù)處理裝置中使用,在上述通常模式下,作為 上述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動作 被抑制,具備存取禁止步驟,在通常模式下,對于第1進(jìn)程的處理對 象數(shù)據(jù)許可上述第1進(jìn)程的存取,禁止其他進(jìn)程的存?。粰z測步驟,在 通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程的調(diào)用指令;切換 步驟,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判斷 步驟,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理對象數(shù)據(jù) 的使用權(quán)限;控制步驟,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有上 述使用權(quán)限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2 進(jìn)程在上述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。根據(jù)該結(jié)構(gòu),第1進(jìn)程能夠?qū)?shù)據(jù)交給第2進(jìn)程,并且不會被第2 進(jìn)程以外的進(jìn)程知道,能夠防止通過在通常模式下動作的其他進(jìn)程將數(shù) 據(jù)泄漏。此外,通過具備上述結(jié)構(gòu),即使在第2程序被更新而功能被變更、 失去了處理對象數(shù)據(jù)的使用權(quán)限的情況下,通過上述判斷步驟也能夠檢 測到該情況,能夠通過上述控制步驟防止信息泄漏。本發(fā)明的集成電路,具備按照程序動作的處理器,切換通常模式和 保護(hù)模式來動作,在該通常模式下,作為上述程序的執(zhí)行單位的進(jìn)程動 作,在上述保護(hù)模式下,上述進(jìn)程的動作被抑制,具備存取禁止單元, 在通常模式下,對于第1進(jìn)程的處理對象數(shù)據(jù)許可上述第1進(jìn)程的存取, 禁止其他進(jìn)程的存取;檢測單元,在通常模式下,檢測指示從上述第1 進(jìn)程調(diào)用第2進(jìn)程的調(diào)用指令;切換單元,如果檢測到上述調(diào)用指令, 則從通常模式切換為保護(hù)模式;判斷單元,在保護(hù)模式下,判斷上述第2 進(jìn)程是否具有對上述處理對象數(shù)據(jù)的使用權(quán)限;以及控制單元,在保護(hù) 模式下,在判斷為上述第2進(jìn)程具有上述使用權(quán)限的情況下,對上述存 取禁止單元進(jìn)行控制,以許可上述第2進(jìn)程在上述通常模式下對上述處 理對象數(shù)據(jù)進(jìn)行存取。根據(jù)該結(jié)構(gòu),第1進(jìn)程能夠?qū)?shù)據(jù)交給第2進(jìn)程,并不會被第2進(jìn) 程以外的進(jìn)程知道,能夠防止通過在通常模式下動作的其他進(jìn)程泄漏數(shù) 據(jù)。此外,通過具備上述結(jié)構(gòu),即使在第2程序被更新而功能被變更、 失去了處理對象數(shù)據(jù)的使用權(quán)限的情況下,上述判斷單元也能夠檢測到 該情況,能夠通過上述控制單元防止信息泄漏。
圖1是示意地表示本發(fā)明的程序保護(hù)裝置的結(jié)構(gòu)的主要部分的圖。圖2是表示本發(fā)明的程序保護(hù)裝置的硬件結(jié)構(gòu)的圖。圖3是表示密鑰寄存器的結(jié)構(gòu)的圖。圖4是表示保護(hù)對象數(shù)據(jù)的結(jié)構(gòu)的圖。圖5是示意地表示記錄程序的文件的結(jié)構(gòu)的圖。圖6是示意地表示記錄程序的文件的結(jié)構(gòu)的圖。圖7是表示程序保護(hù)裝置的軟件結(jié)構(gòu)的圖。圖8是表示管理表的結(jié)構(gòu)的圖。圖9是表示管理表的結(jié)構(gòu)的圖。圖IO是表示非法動作防止控制處理的流程圖。圖11是表示狀態(tài)切換動作A及B的處理的流程圖。 圖12是表示對應(yīng)于來自程序X的請求的非法動作防止控制部的處理 的流程圖。圖13是表示程序的整體動作的流程圖。圖14是表示程序的整體動作的流程圖(圖13的后續(xù))。圖15是表示程序保護(hù)裝置的動作的流程圖。圖16表示程序保護(hù)裝置的動作中的RAM的狀態(tài)。圖17表示程序保護(hù)裝置的動作中的管理表的狀態(tài)。圖18表示程序保護(hù)裝置的動作中的管理表的狀態(tài)。圖19表示程序保護(hù)裝置的動作中的管理表的狀態(tài)。圖20是表示程序的功能標(biāo)志是否滿足安全要件的處理的流程圖。圖21是表示程序保護(hù)裝置的程序的動作的流程圖。圖22是表示變形例的程序保護(hù)裝置的結(jié)構(gòu)的框圖。圖23是表示變形例的ID寄存器的結(jié)構(gòu)的圖。附圖標(biāo)記說明0101程序保護(hù)裝置0102程序A0103程序B0104操作系統(tǒng)(OS)0105非法動作防止電路0106非法動作防止控制部0107程序C0108保護(hù)對象數(shù)據(jù)0109安全要件列表0110管理表0201 CPU0202 RAM0203非易失性存儲器0204總線加密電路0205密鑰寄存器0206保護(hù)存儲器0207存取限制電路0208狀態(tài)切換電路0209調(diào)試器I/F0210總線0216存儲介質(zhì)0219向量表0221非易失性存儲器0401安全內(nèi)核0402程序A用中斷管理部0403程序B用中斷管理部0404OS用中斷管理部0405BIOS0406程序C用中斷管理部具體實施方式
<第1實施方式> <1.概要>圖1是示意地表示程序保護(hù)裝置0101的結(jié)構(gòu)的主要部分的圖。 程序保護(hù)裝置0101如圖1所示,包括CPU0201、非法動作防止電路 0105、和存儲介質(zhì)0216。CPU0201是執(zhí)行程序的處理器。非法動作防止電路0105是具備用來防止由CPU0201執(zhí)行的程序的非法執(zhí)行及程序間的非法存取的單元的電路。存儲介質(zhì)0216在加密的狀態(tài)下存儲有保護(hù)對象數(shù)據(jù)0108,該保護(hù)對象數(shù)據(jù)0108處理由CPU0201執(zhí)行的程序,并作為內(nèi)容及個人信息等的 機密信息。在CPU0201上執(zhí)行的程序中,作為一例,如圖1所示,有操作系統(tǒng) (OS) 0104、程序A0102、程序B0103、程序C0107、非法動作防止控 制部0106等。非法動作防止控制部0106根據(jù)程序A0102、程序B0103、程序C0107、 其他程序和OS0104,分別取得存儲器區(qū)域的使用請求,判斷使用可否, 在可使用的情況下控制非法動作防止電路0105,僅在請求源的程序請求 的狀態(tài)下可使用該存儲器區(qū)域。操作系統(tǒng)(OS) 0104是使程序A0102、程序B0103、程序C0107、 其他程序(未圖示)動作的基本軟件。程序A0102、程序B0103、程序C0107是執(zhí)行任意的處理的應(yīng)用程 序。在本實施方式中,作為一例,程序A0102是進(jìn)行作為內(nèi)容的保護(hù)對 象數(shù)據(jù)0108的解密的程序,程序B0103是進(jìn)行內(nèi)容的再現(xiàn)的播放器程序, 假設(shè)程序A0102和程序B0103在處理內(nèi)容時聯(lián)動動作。程序A0102將作為保護(hù)對象數(shù)據(jù)0108的加密的內(nèi)容進(jìn)行解密,使程 序B0103再現(xiàn)解密后的該內(nèi)容。程序A0102包含用來調(diào)用程序B0103的 調(diào)用指令,CPU0201如果檢測到上述調(diào)用指令,則對非法動作防止電路 0105進(jìn)行表示后述的保護(hù)模式的狀態(tài)切換指示。非法動作防止電路0105 根據(jù)上述狀態(tài)切換指示向保護(hù)模式切換,執(zhí)行處理。假設(shè)上述調(diào)用指令包括內(nèi)容的輸出、復(fù)制、移動、特殊再現(xiàn)、數(shù)字 輸出等表示數(shù)據(jù)處理方法的信息。此外,非法動作防止控制部0106通過在上述保護(hù)模式下控制非法動 作防止電路0105,防止例如程序C0107非法地使用上述內(nèi)容或破壞內(nèi)容。以下,對程序保護(hù)裝置0101的動作詳細(xì)地進(jìn)行說明。<2.結(jié)構(gòu)><2丄硬件結(jié)構(gòu)>利用
程序保護(hù)裝置0101的硬件結(jié)構(gòu)。如圖2所示,程序保護(hù)裝置0101包括相互經(jīng)由總線0210連接的 CPU0201、非易失性存儲器0203、總線加密電路0204、密鑰寄存器0205、 存取限制電路0207、狀態(tài)切換電路0208、調(diào)試器1/F0209、存儲介質(zhì)0216、 非易失性存儲器0221、連接在總線加密電路0204上的RAM0202、和連 接在存取限制電路0207上的保護(hù)存儲器0206。程序保護(hù)裝置OIOI具體而言是由微處理器、ROM、 RAM等構(gòu)成的 計算機系統(tǒng),在上述ROM中存儲有計算機程序,通過上述微處理器按照 上述計算機程序動作,程序保護(hù)裝置OIOI實現(xiàn)其功能。CPU0201是執(zhí)行存儲在RAM0202、保護(hù)存儲器0206上的程序的微 處理器。狀態(tài)切換電路0208從CPU0201接受選擇性地表示上述通常模式和上 述保護(hù)模式的哪一種的狀態(tài)切換指示,將調(diào)試器I/F0209、密鑰寄存器 0205、存取限制電路0207切換為對應(yīng)于該狀態(tài)切換指示的模式。保護(hù)模式是只有安全性較高的特定的程序動作的模式,通常模式是 其他程序動作的模式。狀態(tài)切換電路0208在接收到的上述狀態(tài)切換指示表示保護(hù)模式的情 況下,對調(diào)試器I/F0209輸出表示保護(hù)模式的狀態(tài)信號A0211,使調(diào)試器 I/F0209無效化,對密鑰寄存器0205輸出表示保護(hù)模式的狀態(tài)信號 B0217,對存取限制電路0207輸出表示保護(hù)模式的狀態(tài)信號C0218。此外,狀態(tài)切換電路0208在接收到的上述狀態(tài)切換指示表示通常模 式的情況下,對調(diào)試器I/F0209輸出表示通常模式的狀態(tài)信號A0211,對 密鑰寄存器0205輸出表示通常模式的狀態(tài)信號B0217,對存取限制電路 0207輸出表示通常模式的狀態(tài)信號C0218。此外,狀態(tài)切換電路0208根 據(jù)需要而進(jìn)行向量表0219的變更。關(guān)于切換狀態(tài)的動作、向量表0219 的變更將在后面敘述。另外,狀態(tài)切換的詳細(xì)情況在本發(fā)明者們的日本申請-特開 2005-11336號公報等中公開。存取限制電路0207是控制總線0210與保護(hù)存儲器0206的連接的電路,在從狀態(tài)切換電路0208獲取的狀態(tài)信號C表示通常模式的情況下, 將總線0210與保護(hù)存儲器0206的連接斷開,在表示保護(hù)模式的情況下, 將總線0210與保護(hù)存儲器0206連接。由此,在通常模式下動作的程序 不能存取保護(hù)存儲器0206內(nèi)的數(shù)據(jù)。調(diào)試器I/F0209是能夠連接程序保護(hù)裝置0101以外的程序調(diào)試器的 接口,與CPU0201連接。調(diào)試器I/F0209在從狀態(tài)切換電路0208通知的狀態(tài)信號A表示通常 模式的情況下,將上述程序調(diào)試器與CPU0201連接,在狀態(tài)信號A表示 保護(hù)模式的情況下,將程序調(diào)試器與CPU0201的連接切斷。此外,即使在狀態(tài)信號A表示通常模式的情況下,也能夠通過變更 調(diào)試器I/F0209的設(shè)定,使程序調(diào)試器與CPU0201的連接強制性地成為 切斷狀態(tài)。密鑰寄存器0205是將與被請求存取的地址對應(yīng)的加密密鑰輸出給總 線加密電路0204的電路。如圖3所示,密鑰寄存器0205保持有表示地址與指令用總線的對應(yīng) 的指令用密鑰信息表0305、表示地址與數(shù)據(jù)用總線加密密鑰的對應(yīng)的數(shù) 據(jù)用密鑰信息表0306,從總線加密電路0204取得地址信號0301,將與 地址信號0301所表示的地址對應(yīng)的指令用總線加密密鑰信號0302、以及 數(shù)據(jù)用總線加密密鑰信號0303輸出給總線加密電路0204。這里,指令用密鑰信息表0305包括指令用密鑰信息T0311、 T0312、 T0313……,各指令用密鑰信息表示地址與指令用總線加密密鑰的對應(yīng), 數(shù)據(jù)用密鑰信息表0306包括數(shù)據(jù)用密鑰信息T0321、 T0322、 T0323……, 各數(shù)據(jù)用密鑰信息表示地址與數(shù)據(jù)用總線加密密鑰的對應(yīng)。密鑰寄存器0205的設(shè)定的變更僅在狀態(tài)切換電路0208輸出的狀態(tài) 信號B表示保護(hù)模式時能夠變更,通過非法動作防止控制部0106,禾偶 經(jīng)由總線0210通知的設(shè)定信號0304進(jìn)行變更。RAM0202是與總線加密電路0204連接的存儲器裝置??偩€加密電路0204利用從密鑰寄存器0205通知的密鑰,對輸入輸出到與該密鑰對應(yīng)起來的存儲器地址的代碼或數(shù)據(jù)進(jìn)行加密及解密。由此,在總線0210與RAM0202之間交換的代碼及數(shù)據(jù)由總線加密 電路0204進(jìn)行加密及解密。此外,總線加密電路0204檢測CPU0201是為了獲取指令而存取了 RAM0202還是為了存取數(shù)據(jù)而進(jìn)行存取,在是對同一物理地址獲取指令 的情況下,使用指令用總線加密密鑰,在數(shù)據(jù)存取的情況下,使用數(shù)據(jù) 用總線加密密鑰,進(jìn)行代碼及數(shù)據(jù)的加密和解密。非易失性存儲器0203存儲有文件A0212、文件B0213、文件C0214、 文件OS0215、 BIOS0405、文件S0220。這里,以文件A0212的數(shù)據(jù)構(gòu)造為例,利用圖5對上述文件的數(shù)據(jù) 構(gòu)造進(jìn)行說明。文件A0212包括代碼加密密鑰0710、程序A0102的代碼0711、簽名 A0115、功能標(biāo)志AOlll。代碼加密密鑰0710是在將程序A的代碼0711進(jìn)行加密時使用的密 鑰(KC一A)。代碼加密密鑰0710被利用公開密鑰加密算法加密。 由非法動作防止控制部0106保持秘密密鑰,該秘密密鑰與在對代碼加密密鑰0710進(jìn)行加密時使用的公開密鑰對應(yīng)。在程序A的代碼0711中,記述有程序A0102進(jìn)行的處理,由CPU0201執(zhí)行。程序A的代碼0711被代碼加密密鑰0710加密。 簽名A0115保存有將程序A的代碼0711加密后的賣家的簽名。 利用簽名A0115能夠驗證程序A的代碼0711的合法性、完整性。 功能標(biāo)志A0111是表示程序A0102是否具備功能0714、 0715、 0716、0717、 0718......的標(biāo)志。在本實施方式中,假設(shè)功能標(biāo)志表示程序是否具備文件輸出、復(fù)制、移動、特殊再現(xiàn)、數(shù)字輸出的各功能。功能標(biāo)志例如是5位的數(shù)據(jù),對各位分配文件輸出功能、復(fù)制功能、移動功能、特殊再現(xiàn)功能、數(shù)字輸出功能。即,具備文件輸出和移動的功能的情況下的功能標(biāo)志用2進(jìn)制數(shù)表現(xiàn)為10100,在僅具備數(shù)字輸出功 能的情況下2進(jìn)制數(shù)表現(xiàn)為00001。程序A0102的功能標(biāo)志A0111在2 進(jìn)制數(shù)表現(xiàn)中為00000,表示不具備所有的功能。文件B0213的數(shù)據(jù)構(gòu)造在圖5中表示,文件C0214、文件OS0215 的數(shù)據(jù)構(gòu)造在圖6中表示。文件B0213、文件C0214、文件OS0215由于 具備與文件A0212同樣的結(jié)構(gòu),所以省略說明。其中,文件C0214的功能標(biāo)志C0113表示具備文件輸出功能0734, 文件OS0215的功能標(biāo)志OS0114表示具備文件輸出功能0744、復(fù)制功能 0745、移動功能0746。非易失性存儲器0221是存儲有表示例外及中斷句柄的地址的向量表 0219的存儲裝置。在程序保護(hù)裝置0101中,CPU0201在檢測到中斷或例外的發(fā)生的情 況下,參照向量表0219,取得接著執(zhí)行的句柄的位置。保存在向量表0219中的與各種例外及中斷對應(yīng)的句柄的地址只有狀 態(tài)切換電路0208能夠變更,只有在保護(hù)模式下動作的軟件能夠?qū)顟B(tài)切 換電路0208委托向量表0219的設(shè)定內(nèi)容的變更。存儲介質(zhì)0216以加密的狀態(tài)存儲保護(hù)對象數(shù)據(jù)0108,該保護(hù)對象數(shù) 據(jù)0108是內(nèi)容及個人信息等機密信息。如圖4所示,保護(hù)對象數(shù)據(jù)0108包括數(shù)據(jù)0701、數(shù)據(jù)加密密鑰0702、 安全要件列表0109、簽名數(shù)據(jù)0708。數(shù)據(jù)0701是作為保護(hù)對象的數(shù)據(jù),被利用數(shù)據(jù)加密密鑰0702加密。 但是,數(shù)據(jù)0701并不一定需要加密。數(shù)據(jù)加密密鑰0702被利用公開密鑰加密算法加密,由非法動作防止 控制部0106保持與在加密時使用的公開密鑰對應(yīng)的秘密密鑰,所以只有 非法動作防止控制部0106能夠解密。安全要件列表0109包括安全要件0703、0704、0705、0706、0707……。安全要件列表例如是各位表示安全要件的5位的數(shù)據(jù),各位對應(yīng)于文件輸出功能、復(fù)制功能、移動功能、特殊再現(xiàn)功能、數(shù)字輸出功能,在位值是1的情況下表示能夠進(jìn)行該功能,在位值是o的情況下表示該功能不能進(jìn)行。能夠進(jìn)行文件輸出和移動的功能的情況下的安全要件列表在2進(jìn)制 數(shù)表現(xiàn)下為10100,在僅能夠進(jìn)行數(shù)字輸出功能的情況下,在2進(jìn)制數(shù)表 現(xiàn)下為00001。這里,對數(shù)據(jù)0701的安全要件0703、 0704、 0705、 0706、 0707都為不能。簽名數(shù)據(jù)0708是對安全要件列表0109的簽名數(shù)據(jù),通過使用該簽 名數(shù)據(jù),能夠驗證安全要件列表0109的合法性。 <2.2軟件結(jié)構(gòu)>接著,利用附圖對程序保護(hù)裝置OIOI的軟件結(jié)構(gòu)進(jìn)行說明。如圖7所示,在程序保護(hù)裝置0101的CPU0201上動作的程序包括 包含OS用中斷管理部0404的操作系統(tǒng)(OS) 0104、包括程序A用中斷 管理部0402的程序AO 102、包括程序B用中斷管理部0403的程序B0103、 包括程序C用中斷管理部0406的程序C0107、安全內(nèi)核0401、非法動 作防止控制部0106、 BIOS0405。BIOS0405存儲在非易失性存儲器0203中,在程序保護(hù)裝置0101的 電源接通時等,在通常模式下由CPU0201執(zhí)行。BIOS0405在進(jìn)行了硬件的基本設(shè)定后,將OS0104裝載到RAM0202 中。在本實施方式中,BIOS0405僅裝載OS0104,但也可以還裝載程序 A0102、 B0103、 C0107。OS0104是具有一般的操作系統(tǒng)的功能的OS,在啟動后,依次啟動 程序A0102、程序B0103、程序C0107。此夕卜,包含在OS0104中的OS用中斷管理部0404包含對在OS0104 動作時發(fā)生的中斷或例外進(jìn)行處理的句柄。程序A0102、程序B0103、程序C0107是在OS0104上動作的進(jìn)行通 用處理的程序,處理保護(hù)對象數(shù)據(jù)0108。包含在程序A0102中的中斷管理部0402包含對在程序A0102動作時 發(fā)生的中斷或例外進(jìn)行處理的句柄。同樣,包含在程序B0103中的中斷管理部0403、以及包含在程序 C0107中的中斷管理部0403包含對在程序B0103、 C0107分別動作時發(fā) 生的中斷或例外進(jìn)行處理的句柄。程序A0102、程序B0103、程序C0107、 OS0104是在通常模式下動 作的軟件,分別被裝載到RAM0202中,由CPU0201執(zhí)行。安全內(nèi)核0401 是進(jìn)行保護(hù)模式的系統(tǒng)控制的軟件,被裝載到保護(hù)存儲器0206,由 CPU0201執(zhí)行。安全內(nèi)核0401處置在保護(hù)模式中發(fā)生的中斷及例外,執(zhí)行對處置的 該中斷及例外的處理。保護(hù)模式中的向量表0219的內(nèi)容在從通常模式向保護(hù)模式的切換之 前,由保護(hù)存儲器0206改寫,以使得在中斷及例外發(fā)生時CPU0201執(zhí) 行安全內(nèi)核0401內(nèi)的句柄。安全內(nèi)核0401將控制主體轉(zhuǎn)移到非法動作防止控制部0106。如果非法動作防止控制部0106的非法動作防止控制處理結(jié)束,則控 制主體返回到安全內(nèi)核0401,安全內(nèi)核0401對狀態(tài)切換電路0208輸出 用來向通常模式轉(zhuǎn)移的狀態(tài)切換委托。非法動作防止控制部0106控制非法動作防止電路0105,防止包括 OS0104等的程序的非法動作。非法動作防止控制部0106是在保護(hù)模式下動作的程序,被裝載到保 護(hù)存儲器0206中,由CPU0201執(zhí)行。由此,不能進(jìn)行從對保護(hù)存儲器 0206沒有存取權(quán)限的、在通常模式下動作的程序向安全內(nèi)核0401及非法 動作防止控制部0106的存取。非法動作防止控制部0106管理管理表0110,該管理表0110是用于 控制上述非法動作防止電路0105的數(shù)據(jù)。 (管理表)這里,利用圖8、圖9對管理表0110進(jìn)行說明。管理表0110是用來進(jìn)行程序的數(shù)據(jù)及代碼區(qū)域的保護(hù)的管理數(shù)據(jù) 組,包括圖8所示的數(shù)據(jù)區(qū)域管理信息表組0501、代碼區(qū)域管理信息表 組0502、圖9所示的安全要件管理信息表T0310、程序管理信息表T0410、 以及當(dāng)前程序管理表0503。數(shù)據(jù)區(qū)域管理信息表組050K代碼區(qū)域管理信息表組0502、安全要 件管理信息表T0310、程序管理信息表T0410、當(dāng)前程序管理表0503存 儲在保護(hù)存儲器0206中。在對程序保護(hù)裝置OlOl接通電源時,各管理表0110的內(nèi)容為空。非法動作防止控制部0106在后述的程序登記處理中,按照OS0104 對程序A0102、程序B0103、程序C0107進(jìn)行的登記請求,登記或更新 代碼區(qū)域管理信息表組和程序管理信息表的內(nèi)容。非法動作防止控制部0106在后述的數(shù)據(jù)區(qū)域保護(hù)設(shè)定處理中,按照 由其他程序形成的保護(hù)設(shè)定請求登記或更新數(shù)據(jù)區(qū)域管理信息表組的內(nèi) 容,在后述的數(shù)據(jù)區(qū)域共享設(shè)定中,按照從其他程序形成的共享設(shè)定請 求登記或更新安全要件管理信息表組的內(nèi)容。 (程序管理信息表T0410)程序管理信息表T0410包括程序管理信息T0411、 T0412、 T0413、 T0414......。各程序管理信息包括程序管理信息標(biāo)識符、代碼地址、程序標(biāo)識符、 共享程序標(biāo)識符、功能標(biāo)志。程序管理信息標(biāo)識符是用來識別程序管理信息的標(biāo)識符,非法動作 防止控制部0106在登記該程序管理信息時分配與已經(jīng)使用的值不重復(fù)的 值。代碼地址是各程序管理信息作為管理對象的地址區(qū)域。 程序標(biāo)識符是包含裝載到上述地址區(qū)域中的代碼的程序的標(biāo)識符, 預(yù)先對各程序分配。共享程序標(biāo)識符是共享上述地址區(qū)域的代碼的程序的標(biāo)識符。 功能標(biāo)志是表示對上述地址區(qū)域的代碼是否許可文件輸出、復(fù)制、移動、特殊再現(xiàn)、數(shù)字輸出的各功能的標(biāo)志。功能標(biāo)志例如是5位的數(shù)據(jù),對各位分配文件輸出功能、復(fù)制功能、 移動功能、特殊再現(xiàn)功能、數(shù)字輸出功能。艮P,許可了文件輸出與移動的情況下的功能標(biāo)志在2進(jìn)制數(shù)表現(xiàn)下 為10100,在僅許可了數(shù)字輸出功能的情況下,在2進(jìn)制數(shù)表現(xiàn)下為 00001。(代碼區(qū)域管理信息表組)代碼區(qū)域管理信息表組0502包括程序用代碼區(qū)域管理信息表 T0210、 T0220、 T0230……,程序用代碼區(qū)域管理信息表是對每個程序 生成的。對于程序標(biāo)識符是Pl的程序生成的程序Pl用代碼區(qū)域管理信息表 T0210包括代碼區(qū)域管理信息T0211、 T0212、 T0213……,數(shù)據(jù)區(qū)域管 理信息包括代碼區(qū)域標(biāo)識符、代碼地址、代碼加密密鑰。代碼區(qū)域標(biāo)識符是用來識別代碼區(qū)域管理信息的標(biāo)識符,非法動作 防止控制部0106在生成該代碼區(qū)域管理信息時分配與已經(jīng)使用的值不重 復(fù)的值。代碼地址是代碼區(qū)域管理信息為管理對象的地址區(qū)域。 代碼加密密鑰是用來將在由上述地址區(qū)域表示的存儲區(qū)域中保持的代碼進(jìn)行加密和解密的密鑰,在代碼存取時使用。 (數(shù)據(jù)區(qū)域管理信息表組) 數(shù)據(jù)區(qū)域管理信息表組0501包括數(shù)據(jù)區(qū)域管理信息表TOllO、TOllO、 T0130......。數(shù)據(jù)區(qū)域管理信息表是對每個程序生成的,包括數(shù)據(jù)區(qū)域標(biāo)識符、數(shù)據(jù)地址、數(shù)據(jù)加密密鑰。數(shù)據(jù)區(qū)域標(biāo)識符是用來識別各數(shù)據(jù)區(qū)域管理信息的標(biāo)識符。數(shù)據(jù)地址是各數(shù)據(jù)區(qū)域管理信息為管理對象的地址區(qū)域。數(shù)據(jù)加密密鑰是用來將在由上述地址區(qū)域表示的存儲區(qū)域中保持的數(shù)據(jù)進(jìn)行加密、解密的密鑰,在存取數(shù)據(jù)時使用。(安全要件管理信息表組)安全要件管理信息表T0310是用來管理對包含在數(shù)據(jù)區(qū)域管理信息 表組0501中的各數(shù)據(jù)區(qū)域管理信息的安全要件的表,包括多個安全要件 管理信息T0311、 T0312、 T0313、 T0314......。安全要件管理信息包括安全要件管理信息標(biāo)識符、數(shù)據(jù)地址、生成 程序標(biāo)識符、共享程序標(biāo)識符、安全要件。安全要件管理信息標(biāo)識符是用來識別安全要件管理信息的標(biāo)識符。數(shù)據(jù)地址是安全區(qū)域管理信息為管理對象的地址區(qū)域。生成程序標(biāo)識符是對物理存儲器上的上述地址區(qū)域最先進(jìn)行了數(shù)據(jù) 設(shè)定的程序的標(biāo)識符。共享程序標(biāo)識符是用來對物理存儲器上的上述地址區(qū)域識別共享該 存儲器區(qū)域的程序的標(biāo)識符。安全要件決定由上述數(shù)據(jù)地址表示的、保持在物理存儲器上的上述 地址區(qū)域中的數(shù)據(jù)的保護(hù)方法。上述安全要件在本實施方式中具有與功能標(biāo)志相同的構(gòu)造,例如是5 位的數(shù)據(jù),對于各位分配可否執(zhí)行文件輸出功能、復(fù)制功能、移動功能、 特殊再現(xiàn)功能、數(shù)字輸出功能。艮口,許可執(zhí)行文件輸出與移動的情況下的功能標(biāo)志在2進(jìn)制數(shù)的表 現(xiàn)下為10100,在僅許可執(zhí)行數(shù)字輸出的情況下,在2進(jìn)制數(shù)的表現(xiàn)下為 00001。(當(dāng)前程序管理表0503)在當(dāng)前程序管理表0503中存儲有當(dāng)前動作中的程序的標(biāo)識符。<3.軟件動作>接著,對在程序保護(hù)裝置0101上動作的軟件的處理流程進(jìn)行說明。 首先,利用圖21對軟件整體的處理流程進(jìn)行說明。 如果對程序保護(hù)裝置0101接通電源,則BIOS0405啟動(步驟S2011)。 BIOS0405在對程序保護(hù)裝置0101的硬件進(jìn)行了基本設(shè)定后,將 OS0104裝載到RAM0202中(步驟S2012)。OS0104對于非法動作防止控制部0106進(jìn)行對作為自程序的OS0104 的后述的登記處理(步驟S2021),進(jìn)行對程序B0103的登記處理(步驟 S2022),進(jìn)行對程序C0107的登記處理(步驟S2023)。如果能夠完成登記處理,則非法動作防止控制部0106能夠?qū)碜?OS0104、程序A0102、程序B0103、程序C0107的存儲器保護(hù)等的各請 求進(jìn)行處理。接著,OS0104依次啟動登記處理成功的程序A0102、 B0103、 C0107 (步驟S2031)。這里,程序A0102、程序B0103、程序C0107在OS0104上開始動作。接著,OS0104對于非法動作防止控制部0106進(jìn)行在自程序內(nèi)使用 的數(shù)據(jù)區(qū)域的后述的保護(hù)設(shè)定(步驟S2040)。同樣,程序A0102對于非法動作防止控制部0106進(jìn)行在自程序內(nèi)使 用的數(shù)據(jù)區(qū)域的后述的保護(hù)設(shè)定(步驟S2041),程序B0103對于非法動 作防止控制部0106進(jìn)行自程序使用的數(shù)據(jù)區(qū)域的保護(hù)設(shè)定(步驟 S2042),程序C0107對于非法動作防止控制部0106進(jìn)行自程序使用的數(shù) 據(jù)區(qū)域的保護(hù)設(shè)定(步驟S2043)。接著,程序A0102在需要的情況下,對于非法動作防止控制部0106 進(jìn)行后述的數(shù)據(jù)區(qū)域共享設(shè)定(步驟S2051),該數(shù)據(jù)區(qū)域共享設(shè)定用來 與其他程序共享所使用的數(shù)據(jù)區(qū)域。同樣,程序B0103在需要的情況下,對于非法動作防止控制部0106 進(jìn)行用來與其他程序共享所使用的數(shù)據(jù)區(qū)域的數(shù)據(jù)區(qū)域共享設(shè)定(步驟52052) ,程序C0107在需要的情況下,對于非法動作防止控制部0106 進(jìn)行用來與其他程序共享所使用的數(shù)據(jù)區(qū)域的數(shù)據(jù)區(qū)域共享設(shè)定(步驟52053) 。由此,多個程序能夠共享被保護(hù)的存儲器區(qū)域。 以后,OS0104根據(jù)需要而切換進(jìn)行動作的當(dāng)前的程序(步驟S2061), 當(dāng)前的程序執(zhí)行自程序要進(jìn)行的處理(步驟S2062)。以下,對步驟S2021中的程序登記處理、步驟S2041中的保護(hù)設(shè)定處理、步驟S2051中的數(shù)據(jù)區(qū)域的共享設(shè)定處理、步驟S2061中的程序 切換處理進(jìn)行說明。上述的步驟S2020、步驟S2021、步驟S2022、步驟S2023、步驟S2040、 步驟S2041、步驟S2042、步驟S2043、步驟S2051、步驟S2052、步驟 S2053都按照圖10 圖12所示的基本的處理流程執(zhí)行。以下,對于步驟S2020 S2023,以步驟S2021為例進(jìn)行說明,對于 步驟S2040 S2043,以歩驟S2041為例進(jìn)行說明,對于步驟S2050 S2053,以步驟S2051為例進(jìn)行說明。此外,步驟S2021 S2053的各處理的執(zhí)行并不限于一次,根據(jù)需要 隨時執(zhí)行。<3.1程序登記處理>圖21中的步驟S2021是OS0104將關(guān)于程序A0102的信息登記到非 法動作防止控制部0106中的處理。圖11、圖12所示的程序X表示按照該流程動作的程序,在本實施方 式中是程序A0102、程序B0103、程序C0107、 OS0104中的任一種。這 里,OS0104對應(yīng)于程序X, OS用中斷管理部0404對應(yīng)于程序X用中斷 管理部,假設(shè)OS0104請求對于程序A0102的登記。程序X首先在對程序X預(yù)先指定的、RAM0202上的數(shù)據(jù)區(qū)域中, 寫入用來登記程序A的登記請求。在上述登記請求中,包含有圖5所示的、在將作為登記的程序的程 序A的代碼進(jìn)行加密時使用的密鑰(代碼加密)、程序的簽名數(shù)據(jù)、功能 標(biāo)志。進(jìn)而,在上述登記請求中,包括程序的裝載地址信息。密鑰被用公開密鑰加密算法加密,與在密鑰的加密中使用的公開密 鑰對應(yīng)的秘密密鑰保存在非法動作防止控制部0106中。秘密密鑰被實施了對策,以使其不會泄漏到非法動作防止控制部 0106的外部。程序的簽名數(shù)據(jù)是為了驗證程序的合法性、完整性而使用的。 程序的裝載地址信息是裝載登記的程序的地址區(qū)域。程序X產(chǎn)生以程序A的登記請求為原因的軟件中斷(步驟S0801), 將控制轉(zhuǎn)移給程序X用中斷管理部。接著,程序X用中斷管理部調(diào)查程序X產(chǎn)生的軟件中斷的原因,從 規(guī)定的上述數(shù)據(jù)區(qū)域讀出上述登記請求,確認(rèn)中斷的種類(步驟S0802)。 這里,程序X用中斷管理部確認(rèn)上述中斷的種類是以對于程序A的登記 請求為原因的軟件中斷。接著,程序X用中斷管理部將上述登記請求保存在共享存儲器中(步 驟S0803)。這里,上述共享存儲器是在通常模式與保護(hù)模式的通信中使用的、 RAM0202內(nèi)的規(guī)定的存儲器區(qū)域。這里,執(zhí)行用來將程序保護(hù)裝置OIOI的動作狀態(tài)從通常模式向保護(hù) 模式切換的狀態(tài)切換動作A。對于狀態(tài)切換動作A,利用圖11 (a)進(jìn)行說明。程序X在這里是OS0104。程序X用中斷管理部對狀態(tài)切換電路0208進(jìn)行向保護(hù)模式的狀態(tài)切 換委托(步驟S1700)。狀態(tài)切換電路0208將CPU內(nèi)的狀態(tài)保存到預(yù)先設(shè)定的RAM0202內(nèi) 的程序X管理的數(shù)據(jù)區(qū)域中(步驟S1701)。狀態(tài)切換電路0208將作為狀態(tài)切換委托源的程序X的上下文轉(zhuǎn)移到 在RAM0202中預(yù)先設(shè)定為程序X使用的區(qū)域中。狀態(tài)切換電路0208輸出表示保護(hù)模式的狀態(tài)信號A0211,使調(diào)試器 I/F0209無效化(步驟S1702 )。接著,狀態(tài)切換電路0208進(jìn)行CPU內(nèi)部狀態(tài)的清空(步驟S1703)。接著,狀態(tài)切換電路0208輸出表示保護(hù)模式的狀態(tài)信號B0217,變 更密鑰寄存器0205的設(shè)定(步驟S1704)。這里,密鑰寄存器0205能夠利用經(jīng)由總線0210通知的設(shè)定信號0304 變更指令用密鑰信息表0305和數(shù)據(jù)用密鑰信息表0306。接著,狀態(tài)切換電路0208輸出表示保護(hù)模式的狀態(tài)信號C0218,變更存取限制電路0207的設(shè)定(步驟S1705),存取限制電路0207使從總 線0210向保護(hù)存儲器0206的存取成為開放狀態(tài)。所謂的開放狀態(tài),是許可從總線0210向保護(hù)存儲器0206的存取的 狀態(tài)。接著,狀態(tài)切換電路0208變更向量表0219的設(shè)定,以便在中斷及 例外發(fā)生時CPU0201執(zhí)行安全內(nèi)核0401內(nèi)的句柄(步驟S1706)。狀態(tài)切換電路0208使CPU復(fù)原在上次從保護(hù)模式切換為通常模式之 前保存在保護(hù)存儲器206中的上下文(步驟S1707)。接著,狀態(tài)切換電路0208將控制轉(zhuǎn)移給安全內(nèi)核0401(步驟S1708)。 程序保護(hù)裝置0101變?yōu)楸Wo(hù)模式,狀態(tài)切換動作A結(jié)束。接著,安全內(nèi)核0401將控制轉(zhuǎn)移給非法動作防止控制部0106 (步驟 S0815)。接著,非法動作防止控制部0106從共享存儲器取得上述請求(步驟50806) 。這里,上述請求是上述登記請求。接著,非法動作防止控制部0106執(zhí)行非法動作防止控制處理(步驟50807) o這里,利用圖IO對上述請求是上述登記請求的情況下的非法動作防止控制處理(步驟S0807)的詳細(xì)情況進(jìn)行說明。非法動作防止控制部0106判斷上述請求是哪種請求(步驟S600)。 由于上述請求是登記請求(步驟S600:登記),所以向步驟S0612轉(zhuǎn)移。接著,非法動作防止控制部0106利用安全要件管理信息表T0310和 程序管理信息表T0410,判斷由程序的裝載地址信息表示的代碼地址區(qū) 域是否是未使用區(qū)域(步驟S0612)。在是未使用區(qū)域的情況下(步驟S0612的"是"),非法動作防止控 制部0106進(jìn)行程序的簽名與功能標(biāo)志的簽名的驗證(步驟S0613)。在簽名驗證結(jié)果是OK的情況下(步驟S0613的"是"),非法動作 防止控制部0106生成新的代碼區(qū)域管理信息表和數(shù)據(jù)區(qū)域管理信息表(步驟S0614)。接著,作為管理表的更新,進(jìn)行程序管理信息表T0410的更新和代 碼區(qū)域管理信息表的更新(步驟S615)。在程序管理信息表T0410的更新中,非法動作防止控制部0106在生 成固有的程序標(biāo)識符后,進(jìn)行程序管理信息的追加。在代碼區(qū)域管理信息表的更新中,非法動作防止控制部0106進(jìn)行代 碼加密密鑰的解密和代碼區(qū)域管理信息的追加。接著,非法動作防止控制部0106生成處理結(jié)果。處理結(jié)果包含在管理表的更新(步驟S0615)時生成的程序標(biāo)識符。 在代碼地址區(qū)域不是未使用區(qū)域的情況(步驟S0612的"否")和簽名驗 證失敗的情況(步驟S0613的"否")下,在處理結(jié)果中包含處理失敗的 原因。將這里生成的處理結(jié)果保存在共享存儲器中(步驟S0808)。接著,非法動作防止控制部0106將控制轉(zhuǎn)移給安全內(nèi)核0401 (步驟 S0816)。這里,通過安全內(nèi)核0401、狀態(tài)切換電路0208、程序X用中斷管理 部執(zhí)行狀態(tài)切換動作B,從保護(hù)模式向通常模式切換(步驟S0809)。 這里,對于狀態(tài)切換動作B,利用圖ll (b)進(jìn)行說明。 這里,程序X如上所述是OS0104。安全內(nèi)核0401通過對狀態(tài)切換電路0208輸出表示通常模式的狀態(tài) 信號C0218,委托狀態(tài)切換(步驟S1710)。狀態(tài)切換電路0208將CPU的上下文保存到保護(hù)存儲器0206中(步 驟S0817)。存取限制電路0207接受狀態(tài)信號C0218,使從總線0210向保護(hù)存儲 器0206的存取成為截斷狀態(tài)。所謂的截斷狀態(tài),表示不能從總線0210向保護(hù)存儲器0206存取的 狀態(tài)。狀態(tài)切換電路0208控制狀態(tài)信號B0217,變更密鑰寄存器0205的設(shè) 定(步驟S1713)。這里,密鑰寄存器0205能夠利用經(jīng)由總線0210通知的設(shè)定信號0304 變更指令用密鑰信息表0305和數(shù)據(jù)用密鑰信息表0306。狀態(tài)切換電路0208進(jìn)行CPU內(nèi)部狀態(tài)的清空(步驟S1714)。狀態(tài)切換電路0208進(jìn)行向量表0219的設(shè)定變更(步驟S1715)。這 里,狀態(tài)切換電路0208設(shè)定為,使得在中斷及例外發(fā)生時CPU0201執(zhí) 行包含在程序X用中斷管理部中的句柄。向量表0219設(shè)定為,使其執(zhí)行包含在各個中斷管理部中的句柄。關(guān) 于設(shè)定為使其執(zhí)行包含在哪個中斷管理部中的句柄,能夠由非法動作防 止控制部0106對狀態(tài)切換電路0208指示。接著,狀態(tài)切換電路0208控制狀態(tài)信號A0211,使調(diào)試器I/F0209 有效(步驟S1716)。另外,在非法動作防止控制部0106事前對狀態(tài)切換電路0208指示 使調(diào)試器I/F0209不為有效的情況下,狀態(tài)切換電路0208跳過步驟 S1716,使調(diào)試器I/F0209不為有效。這里,狀態(tài)切換電路0208恢復(fù)程序X的上下文(步驟S1717),接 著,狀態(tài)切換電路0208將控制轉(zhuǎn)移給程序X用中斷管理部(步驟S1718), 程序保護(hù)裝置0101變?yōu)橥ǔDJ?,狀態(tài)切換動作B結(jié)束。接著,程序X用中斷管理部從共享存儲器取得上述處理結(jié)果(步驟 S081"。接著,程序X用中斷管理部將處理結(jié)果保存在程序X管理的數(shù)據(jù)區(qū) 域中(步驟S0812)中后,從軟件中斷返回(步驟S08B)。 <3.2數(shù)據(jù)區(qū)域的保護(hù)設(shè)定處理>圖21中的步驟S2041是程序A對非法動作防止控制部0106請求使 用的存儲器區(qū)域的保護(hù)設(shè)定的處理。以下,對于保護(hù)設(shè)定的處理,以與上述的程序登記處理不同的部分 為中心進(jìn)行說明。這里,假設(shè)程序X是程序A0102。首先,程序X在作為對自程序預(yù)先指定的RAM0202上的數(shù)據(jù)區(qū)域的共享存儲器中,寫入包括數(shù)據(jù)地址和安全要件的數(shù)據(jù)區(qū)域保護(hù)設(shè)定請 求。上述數(shù)據(jù)地址包括程序x希望作為數(shù)據(jù)區(qū)域使用的存儲器區(qū)域的起始地址和末尾地址。上述安全要件是程序x對保存在上述數(shù)據(jù)地址中的數(shù)據(jù)希望設(shè)定的 保護(hù)屬性,具有與安全要件列表0109同樣的數(shù)據(jù)構(gòu)造。例如,上述安全 要件是5位的數(shù)據(jù),對各位分配文件輸出功能、復(fù)制功能、移動功能、 特殊再現(xiàn)功能、數(shù)字輸出功能的執(zhí)行可否。另外,上述安全要件有時是 安全要件列表0109。非法動作防止控制部0106在步驟S0802取得上述數(shù)據(jù)區(qū)域保護(hù)設(shè)定 請求。到步驟S0803 S0806為止,與程序登記處理同樣。在作為步驟S0807的詳細(xì)情況的圖10的步驟S0600的判斷中,非法 動作防止控制部0106判斷為上述處理請求是數(shù)據(jù)區(qū)域的保護(hù)設(shè)定請求 (步驟S0600的保護(hù)),轉(zhuǎn)移到步驟S0602。非法動作防止控制部0106判斷包含在上述數(shù)據(jù)區(qū)域保護(hù)設(shè)定請求中 的數(shù)據(jù)地址是否已作為安全要件管理信息表T0310中的安全要件管理信 息登記(步驟S0602),如果沒有登記,則決定為是未使用區(qū)域,如果已 登記,則決定為不是未使用區(qū)域。在是未使用區(qū)域的情況下(步驟S0602的"是"),更新安全要件管 理信息表T0310及數(shù)據(jù)區(qū)域管理信息表組0501 (步驟S0603)。在安全要件管理信息表T0310的更新中,非法動作防止控制部0106 在與請求源的程序?qū)?yīng)的數(shù)據(jù)區(qū)域管理信息表中追加以上述起始地址及 上述末尾地址為數(shù)據(jù)地址的新安全要件管理信息。此外,非法動作防止控制部0106生成隨機值,登記到上述新安全要 件管理信息的數(shù)據(jù)加密密鑰中。接著,非法動作防止控制部0106將數(shù)據(jù)區(qū)域管理信息表的更新后的 信息設(shè)定在非法動作防止電路0105中(步驟S0604)。具體而言,非法動作防止控制部0106作為更新后的信息向非法動作 防止電路0105的設(shè)定,將上述新安全要件管理信息的數(shù)據(jù)地址與數(shù)據(jù)加 密密鑰的組追加到非法動作防止電路0105的數(shù)據(jù)用密鑰信息表0306中。此外,在步驟S0602中,在獲取的數(shù)據(jù)地址區(qū)域已經(jīng)由其他程序確 保的情況下(步驟S0602的"否"),非法動作防止控制部0106不進(jìn)行管 理表的更新(步驟S0603)以及數(shù)據(jù)區(qū)域設(shè)定的變更(步驟S0604)的處 理,轉(zhuǎn)移到步驟S0808。非法動作防止控制部0106將處理結(jié)果保存在共享存儲器中(步驟 S0808)。在處理結(jié)果中,包括正常結(jié)束、數(shù)據(jù)地址區(qū)域被其他程序確保等的 錯誤原因等。以后的處理與上述程序登記處理同樣。 <3.3數(shù)據(jù)區(qū)域共享設(shè)定處理>圖21的步驟S2051是程序A對非法動作防止控制部0106請求使用 的存儲器區(qū)域的共享設(shè)定的處理。以下,對于數(shù)據(jù)區(qū)域共享設(shè)定處理,以與上述程序登記處理不同的 部分為中心進(jìn)行說明。另外,程序X是程序A0102。首先,程序X在作為對自程序預(yù)先指定的RAM0202上的數(shù)據(jù)區(qū)域 的共享存儲器中,寫入包括數(shù)據(jù)地址和安全要件的數(shù)據(jù)區(qū)域共享設(shè)定請 求及簽名A0115。上述數(shù)據(jù)地址包括程序X希望作為數(shù)據(jù)區(qū)域共享的存儲器區(qū)域的起 始地址和末尾地址。上述安全要件包括文件A0212的功能標(biāo)志A0111的"(曰息。簽名A0115由非法動作防止控制部0106用于功能標(biāo)志A0111的合法 性確認(rèn)。非法動作防止控制部0106在步驟S0802中取得上述數(shù)據(jù)區(qū)域共 享設(shè)定請求。到步驟S0803 S0806為止,與程序登記處理同樣。在作為步驟S0807的詳細(xì)情況的圖10的步驟S0600的判斷中,判斷為處理請求是數(shù)據(jù)區(qū)域的共享設(shè)定請求(步驟S0600的共享)。非法動作防止控制部0106在步驟S0802中,從RAM0202上的共享 存儲器取得上述數(shù)據(jù)區(qū)域共享設(shè)定請求,在步驟S0632中,判斷包含在 上述數(shù)據(jù)區(qū)域共享設(shè)定請求中的數(shù)據(jù)地址是否已作為安全要件管理信息 表T0310中的安全要件管理信息登記,在已登記的情況下(步驟S0632 的"是"),非法動作防止控制部0106進(jìn)行上述數(shù)據(jù)區(qū)域共享設(shè)定請求的 妥當(dāng)性判斷(步驟S0633)。具體而言,妥當(dāng)性判斷是根據(jù)在與請求共享的程序?qū)?yīng)的程序管理 信息中包含的功能標(biāo)志是否滿足作為妥當(dāng)性判斷的對象的安全要件管理 信息的安全要件來判斷。此外,關(guān)于上述安全要件的合法性,也利用寫入上述共享存儲器中 的簽名來確認(rèn)。在判斷為妥當(dāng)?shù)那闆r下(步驟S0633的"是"),非法動作防止控制 部0106進(jìn)行安全要件管理信息表T0310與請求源的程序用的數(shù)據(jù)區(qū)域管 理信息表的更新(步驟S0634)。非法動作防止控制部0106在安全要件管理信息表T0310的更新中, 具體而言,在與作為對象的數(shù)據(jù)區(qū)域?qū)?yīng)的安全要件管理信息的共享程 序標(biāo)識符中寫入請求共享的程序的標(biāo)識符。作為所請求的程序的標(biāo)識符,使用保存在當(dāng)前程序管理表0503中的 標(biāo)識符。此外,在請求的程序指定的安全要件比已有的安全要件嚴(yán)格的情況 下,將請求的程序指定的安全要件作為與作為對象的數(shù)據(jù)區(qū)域?qū)?yīng)的安 全要件管理信息的安全要件追加。這里,所謂的請求的程序指定的安全要件比已有的安全要件嚴(yán)格的 情況下,由于安全要件為與安全要件列表0109同樣的數(shù)據(jù)構(gòu)造,所以是 指安全要件比己有的多的情況。進(jìn)而,在數(shù)據(jù)區(qū)域管理信息表的更新中,非法動作防止控制部0106 在請求源的程序用數(shù)據(jù)區(qū)域管理信息表中追加數(shù)據(jù)區(qū)域管理信息。這里,在追加的數(shù)據(jù)區(qū)域管理信息的數(shù)據(jù)地址中,設(shè)定請求的地址 區(qū)域,將作為共享對象的數(shù)據(jù)區(qū)域的加/解密中使用的加密密鑰設(shè)定為數(shù) 據(jù)加密密鑰。接著,非法動作防止控制部0106進(jìn)行數(shù)據(jù)保護(hù)設(shè)定的變更(步驟 S0635)o具體而言,非法動作防止控制部0106將在步驟S0634更新的數(shù)據(jù)區(qū) 域管理信息表的更新內(nèi)容反映給非法動作防止電路0105,生成表示正常 結(jié)束的處理結(jié)果。此外,在步驟S0632中,在判斷為沒有登記的情況下(步驟S0632 的"否"),以及在判斷為設(shè)定不妥當(dāng)?shù)那闆r下(步驟S0633的"否"), 非法動作防止控制部0106生成表示錯誤的處理結(jié)果。接著,非法動作防止控制部0106將生成的處理結(jié)果保存在共享存儲 器中(步驟S0808)。在處理結(jié)果中,包含正常結(jié)束、數(shù)據(jù)地址區(qū)域被其他程序確保等的 錯誤原因等。以后的處理與上述的程序登記處理同樣。<3.4程序切換處理>圖21的步驟S2061是程序A0102對非法動作防止控制部0106請求 使其切換當(dāng)前的程序、以及對應(yīng)于該請求的處理。以下,對于程序切換處理,以與上述程序登記處理不同的部分為中 心進(jìn)行說明。另外,假設(shè)程序X是程序A0102,請求向程序B0103的切換。 首先,程序X在作為對自程序預(yù)先指定的RAM0202上的數(shù)據(jù)區(qū)域的共享存儲器中,寫入包括希望切換的程序的標(biāo)識符的切換請求、和對希望切換的程序希望傳遞的變元數(shù)據(jù)。程序X用中斷管理部在步驟S0802中取得上述程序切換請求。到步驟S0803 S0806為止,與程序登記處理同樣。在作為步驟S0807的詳細(xì)情況的圖10的步驟S0600的判斷中,判斷為處理請求是程序切換請求(步驟S0600的切換)。非法動作防止控制部0106在步驟S0802中,從RAM0202取得上述 切換請求,并且進(jìn)行變元數(shù)據(jù)的取得(步驟S0621)。變元數(shù)據(jù)是從切換 源的程序向切換目的地的程序傳遞的信息,包括指令等。非法動作防止控制部0106將取得的變元數(shù)據(jù)保存在保護(hù)存儲器206中。RAM0202中的變元數(shù)據(jù)的保存位置是預(yù)先決定的,非法動作防止控制部0106預(yù)先知道。另外,變元數(shù)據(jù)的位置不需要是固定的,也可以包含在切換請求中。 接著,非法動作防止控制部0106進(jìn)行當(dāng)前程序管理表的更新(步驟S0622)。這里,將當(dāng)前程序管理表的內(nèi)容變更為切換目的地的程序的標(biāo)識符。接著,非法動作防止控制部0106變更非法動作防止電路0105的設(shè) 定(步驟S0623)。非法動作防止控制部0106將存儲在密鑰寄存器206中的指令用密鑰 信息表的內(nèi)容、和數(shù)據(jù)用密鑰信息表的內(nèi)容刪除,將包含在數(shù)據(jù)區(qū)域管 理信息表組0501中的、存儲在與切換目的地的程序?qū)?yīng)的數(shù)據(jù)區(qū)域管理 信息表中的各數(shù)據(jù)區(qū)域管理信息中的數(shù)據(jù)地址與數(shù)據(jù)加密密鑰的組,,寫 入到非法動作防止電路0105的數(shù)據(jù)用密鑰表中。此外,將包含在代碼區(qū)域管理信息表組0502中的、存儲在對應(yīng)于切 換目的地的程序代碼區(qū)域管理信息表中的各代碼區(qū)域管理信息中的代碼 地址與代碼加密密鑰的組,寫入到非法動作防止電路0105的指令用密鑰 信息表0305中。接著,非法動作防止控制部0106將預(yù)先保存在保護(hù)存儲器0206中 的變元數(shù)據(jù)保存在切換目的地的程序管理的RAM0202中(步驟S0624)。接著,非法動作防止控制部0106生成包括向切換目的地的程序的分 支指示的處理結(jié)果,將該處理結(jié)果保存在共享存儲器中(步驟S0808)。這樣,非法動作防止控制部0106能夠?qū)⒆冊獢?shù)據(jù)經(jīng)由保護(hù)存儲器交給其他程序。因此,非法動作防止控制部0106在被從包括OS0104的程序委托了 向其他程序的數(shù)據(jù)的交接的情況下,能夠進(jìn)行交接,以使該數(shù)據(jù)不會向 委托源的程序和委托目的地的程序以外的程序泄漏。例如,在程序A0102將程序B0103作為函數(shù)調(diào)用的情況下,在程序 B0103沒有共享程序A0102的數(shù)據(jù)區(qū)域的情況下,能夠安全地進(jìn)行變元 數(shù)據(jù)的交接。此外,在程序A0102調(diào)用OS0104的系統(tǒng)調(diào)用的情況下,也能夠同 樣安全地進(jìn)行變元數(shù)據(jù)的交接。 <4.整體動作>以程序保護(hù)裝置0101的程序的切換處理(從程序A0102向程序 B0103的切換處理)為例,利用圖13、圖14所示的流程圖對整體動作進(jìn) 行說明。程序AO 102在進(jìn)行了作為保護(hù)對象數(shù)據(jù)0108的內(nèi)容的解密后,為了 委托解密后的內(nèi)容的再現(xiàn),在對程序A0102預(yù)先決定的數(shù)據(jù)區(qū)域中寫入 包括向程序B的變元數(shù)據(jù)的處理請求,為了切換為程序B0103而產(chǎn)生軟 件中斷,將控制轉(zhuǎn)移給程序A用中斷管理部0402 (步驟S0901)。程序A用中斷管理部0402從上述數(shù)據(jù)區(qū)域取得上述變元數(shù)據(jù),并且 確認(rèn)中斷的種類是用來向程序B0103切換的軟件中斷(步驟S0902)。接著,程序A用中斷管理部0402將向程序B0103切換的請求和變元 數(shù)據(jù)保存到共享存儲器中(步驟S0903)。接著,程序A用中斷管理部0402、狀態(tài)切換電路0208、安全內(nèi)核 0401執(zhí)行上述狀態(tài)切換動作A,從通常模式向保護(hù)模式切換(步驟 S0905)。接著,在步驟S0905中,作為控制主體的安全內(nèi)核0401將控制轉(zhuǎn)移 給非法動作防止控制部0106 (步驟S0907)。接著,非法動作防止控制部0106從共享存儲器取得在步驟S0903中 保存的上述請求和上述變元數(shù)據(jù)(步驟S0908)。接著,非法動作防止控制部0106由于上述請求是向程序B0103的切 換請求,所以判斷需要進(jìn)行程序的切換處理,進(jìn)行上述程序的切換處理 0602的處理(步驟0909)。非法動作防止控制部0106將切換處理的結(jié)果保存在共享存儲器中 (步驟S0910)。接著,非法動作防止控制部0106將控制轉(zhuǎn)移給安全內(nèi)核(步驟 S0911)。這里,安全內(nèi)核0401、狀態(tài)切換電路0208及OS用中斷管理部0404 執(zhí)行上述狀態(tài)切換動作B,從保護(hù)模式向通常模式切換(步驟S0913)。 此外,由于在程序的切換中需要操作系統(tǒng)的處理,所以在回到通常模式 后,將控制轉(zhuǎn)移給OS用中斷管理部0404。接著,OS用中斷管理部0404從共享存儲器取得處理結(jié)果(步驟 S0915),將控制轉(zhuǎn)移給OS0104 (步驟S0916)。接著,OS0104進(jìn)行從程序A0102向程序B0103的切換處理(步驟 S0917)。這里,OS0104進(jìn)行程序上下文的切換等處理。接著,OS0104為了向非法動作防止控制部0106委托向程序B0103 的切換,將控制轉(zhuǎn)移給OS用中斷管理部0404 (步驟S0918)。接著,OS用中斷管理部0404將向程序B0103的切換請求保存在共 享存儲器中(步驟S0919)。這里,步驟S0921 步驟S0929由于是與步驟S0905 步驟S0913同 樣的處理,所以省略說明。但是,由于切換目的地程序不是OS0104而是程序B0103,所以將控 制轉(zhuǎn)移給程序B用中斷管理部0403。接著,程序B用中斷管理部0403從共享存儲器取得處理結(jié)果(步驟 S0931)。接著,程序B用中斷管理部0403將處理結(jié)果保存在程序B0103管理 的數(shù)據(jù)區(qū)域中(步驟S0932)后,從軟件中斷返回(步驟S933)。 然后,程序B0103進(jìn)行數(shù)據(jù)處理(步驟S0934)。<5.以內(nèi)容解密處理為例的補充說明>在程序保護(hù)裝置0101中,對于進(jìn)行作為加密內(nèi)容的保護(hù)對象數(shù)據(jù) 0108的解密處理的程序A0102與作為將解密后的內(nèi)容再現(xiàn)的播放器的程 序B聯(lián)動動作的情況,以數(shù)據(jù)的變化為中心,利用圖15 圖20所示的 圖進(jìn)行補充說明。此外,對于沒有保持有向保護(hù)對象數(shù)據(jù)的存取權(quán)的程序C0107向保護(hù)對象數(shù)據(jù)存取的情況的動作也進(jìn)行說明。圖16表示程序保護(hù)裝置0101動作中的RAM0202的狀態(tài)。 程序A0102、程序B0103、程序C0107、 OS0104的代碼分別用代碼加密密鑰KC—A、 KC—B、 KC一C、 KC—OS進(jìn)行加密,保存在非易失性存儲器0203中。保存在非易失性存儲器0203中的BIOS0405將文件A0212、文件 B0213、文件C0214、文件OS0215裝載到RAM0202中。結(jié)果,程序A0102的代碼區(qū)域(也包括常數(shù))1201被裝載到從1000 地址號到1100地址號中。程序B0103、程序C0107、OS0104也同樣,分別被裝載到2000 2100、 3000 3100、 4000 4100地址號中。此外,保存在存儲介質(zhì)0216中的保護(hù)對象數(shù)據(jù)0108被裝載到8000 9000地址號的保護(hù)對象數(shù)據(jù)區(qū)域1210中。另外,保護(hù)對象數(shù)據(jù)0108并不一定需要由BIOS0405裝載,也可以 由其他程序裝載。然后,BIOS0405對非法動作防止控制部0106進(jìn)行程序登記委托。非法動作防止控制部0106按照程序的登記處理0601登記各程序。結(jié)果,如圖17 圖19所示,在管理表0101內(nèi)生成數(shù)據(jù)區(qū)域管理信 息表T0500、 T0600、 T0700、 T0800、代碼區(qū)域管理信息表T0900、 TIOOO、 T1100、T1200、以及程序管理信息表T1300、安全要件管理信息表T1400。另外,這里BIOS0405裝載/登記程序AO 102 、程序BO 103 、程序CO 107 , 但也可以在BIOS0405僅裝載/登記OS0104后,OS0104裝載/登記程序A0102、程序B0103、禾呈序C0107。通過程序登記處理0601的管理表的更新(步驟S0615),將程序管理 信息T1301 T1304追加到程序管理信息表T1300中。在程序A0102及程序B0103的功能標(biāo)志0111及0112中,由于沒有 文件輸出功能,所以程序管理信息T1301及T1302的功能標(biāo)志為無文件 輸出功能。此外,程序C0107及OS0104的功能標(biāo)志0113及0114由于具有文件 輸出功能,所以程序管理信息T1303及T1304的功能標(biāo)志為有文件輸出 功能。另外,這里僅著眼于文件輸出功能,但對于其他功能也同樣地進(jìn)行 處理。在程序登記處理0601的管理表的更新(步驟S0615)中,在程序A 用代碼區(qū)域管理信息表T0900中追加代碼區(qū)域管理信息T0901和T0902。在代碼區(qū)域管理信息T0901中,作為代碼區(qū)域標(biāo)識符而設(shè)定"A—CO"、 作為代碼地址而設(shè)定"1000 1099"、作為代碼加密密鑰而設(shè)定"KC一A"。這里,非法動作防止控制部0106將保存在文件A0212中的代碼加密 密鑰0710用秘密密鑰進(jìn)行解密。在代碼區(qū)域管理信息T0902中,作為代 碼區(qū)域標(biāo)識符而設(shè)定"未定義區(qū)域"、作為代碼地址而設(shè)定"定義區(qū)域以 外"、作為代碼加密密鑰而設(shè)定"KC一RA"。這里,所謂的"定義區(qū)域以外",是指由登記在程序A用代碼區(qū)域管 理信息表T0900中的代碼區(qū)域管理信息T0902以外的代碼區(qū)域管理信息 定義的代碼地址區(qū)域以外的區(qū)域,對于該區(qū)域,作為代碼加密密鑰而使 用KC_RA。KC—RA是非法動作防止控制部0106生成的隨機值。另外,其他代 碼區(qū)域管理信息表T1000、T1100、T1200也如圖16所示那樣同樣地設(shè)定。圖15是表示程序保護(hù)裝置0101的動作的流程圖。本流程圖表示程序A C要聯(lián)動動作、程序C因違反安全要件而停 止的情況。另外,在圖15中,各中斷管理部0402、 0403、 0404、 0406的動作 省略。以下,按照圖15說明程序保護(hù)裝置0101的動作。程序A0102為了使程序A的數(shù)據(jù)區(qū)域1202能夠使用而對非法動作防 止控制部0106委托數(shù)據(jù)保護(hù)設(shè)定(步驟SllOl)。這里,程序A0102委托非法動作防止控制部0106,使得確保為只有 程序A0102能夠存取1500 1599地址號的數(shù)據(jù)區(qū)域的狀態(tài)。程序A0102進(jìn)行與步驟S0801 步驟S0813同樣的動作,進(jìn)行數(shù)據(jù) 保護(hù)設(shè)定。以下,假設(shè)數(shù)據(jù)保護(hù)設(shè)定的委托通過同樣的動作進(jìn)行。結(jié)果,對程序A用數(shù)據(jù)區(qū)域管理信息表T0500追加數(shù)據(jù)區(qū)域管理信息T0501,并且對安全要件管理信息表T1400追加安全要件管理信息T1401。此時,在非法動作防止控制處理(步驟S0807)中,非法動作防止控 制部0106進(jìn)行數(shù)據(jù)區(qū)域的保護(hù)設(shè)定處理0603。數(shù)據(jù)區(qū)域管理信息T0501的數(shù)據(jù)加密密鑰KD—Al是非法動作防止控 制部生成的隨機值。接著,程序A0102進(jìn)行設(shè)定以使其處理保護(hù)對象數(shù)據(jù)區(qū)域1210的數(shù) 據(jù)(步驟S1102)。由于保存在保護(hù)對象數(shù)據(jù)區(qū)域1210中的保護(hù)對象數(shù)據(jù)0108內(nèi)的數(shù) 據(jù)0701被用數(shù)據(jù)加密密鑰0702加密,所以如果不將數(shù)據(jù)0701用數(shù)據(jù)加 密密鑰0702解密,程序A0102就不能使用數(shù)據(jù)0701。這里,假設(shè)用總線加密電路0204進(jìn)行解密。所以,程序A0102對非法動作防止控制部0106請求設(shè)定數(shù)據(jù)區(qū)域。 在數(shù)據(jù)區(qū)域設(shè)定請求中包含有保護(hù)對象數(shù)據(jù)區(qū)域1210的地址和安全 要件。這里,程序A0102對非法動作防止控制部0106指示使用包含在保護(hù) 對象數(shù)據(jù)0108中的安全要件列表0109作為安全要件。非法動作防止控制部0106進(jìn)行圖12所示的(步驟S0801)到(步驟S0813)的處理。在非法動作防止控制處理(步驟S0807)中,非法動作防止控制部 0106進(jìn)行與數(shù)據(jù)區(qū)域保護(hù)設(shè)定處理0603同樣的處理。但是,在確認(rèn)是否是未使用區(qū)域的處理(步驟S0602)之后,追加圖 20的流程圖所示的、程序A的功能標(biāo)志是否滿足保護(hù)對象數(shù)據(jù)0108的 安全要件列表0109所記載的安全要件的確認(rèn)處理。如果不滿足安全要件,則結(jié)束非法動作防止控制處理。這里,在是否滿足安全要件的確認(rèn)中,非法動作防止控制部0106首 先進(jìn)行安全要件列表的合法性確認(rèn)(步驟S1801)。在判斷為安全要件列表是非法的情況下(步驟S1801的"否"),結(jié) 束非法動作防止控制處理。這里,非法動作防止控制部0106使用簽名數(shù)據(jù)0708進(jìn)行安全要件 列表0109的合法性的確認(rèn)。接著,非法動作防止控制部0106進(jìn)行安全要件與功能標(biāo)志的比較(步 驟S證)。這里,非法動作防止控制部0106比較確認(rèn)了合法性的安全要件列表 0109與包含在程序管理信息T1301中的程序A的功能標(biāo)志,進(jìn)行是否滿 足安全要件的確認(rèn)、以及包含在安全要件管理信息表T1400中的生成的 程序是程序A的安全要件管理信息的安全要件是否滿足安全要件列表 0109的確認(rèn)。在判斷為不滿足安全要件的情況下(步驟S1802的"否"),結(jié)束非 法動作防止控制處理。通過確認(rèn)包含在安全要件管理信息表T1400中的其他數(shù)據(jù)區(qū)域的安 全要件是否滿足安全要件列表0109,能夠防止數(shù)據(jù)從不滿足保護(hù)對象數(shù) 據(jù)0108的安全要件的數(shù)據(jù)區(qū)域泄漏。接著,非法動作防止控制部0106在進(jìn)行數(shù)據(jù)加密密鑰0702的解密 后(步驟S1803),進(jìn)行數(shù)據(jù)區(qū)域管理信息表的更新(步驟S0603)。這里,非法動作防止控制部0106在程序A用數(shù)據(jù)區(qū)域管理信息表T0500中追加數(shù)據(jù)區(qū)域管理信息T0502,并且在安全要件管理信息表 T1400中追加安全要件管理信息T1402。在數(shù)據(jù)區(qū)域管理信息T0502的數(shù)據(jù)加密密鑰中保存有數(shù)據(jù)加密密鑰 0702。在圖17中,數(shù)據(jù)加密密鑰0702表示為"KD—S"。接著,程序A0102委托非法動作防止控制部0106,以便用基于安全 要件列表0109的安全要件確保1600 1699地址號的數(shù)據(jù)區(qū)域(步驟 S1103)。這里,在安全要件列表0109中包含有保護(hù)對象數(shù)據(jù)0108是文件輸 出禁止的信息。這里,非法動作防止控制部0106利用安全要件管理信息表T1400確 認(rèn)所要求的安全要件是否與程序A0102已經(jīng)生成的所有的數(shù)據(jù)區(qū)域的安 全要件同等或比其嚴(yán)格。如果所要求的安全要件不是與已經(jīng)生成的所有的數(shù)據(jù)區(qū)域的安全要 件同等或比其嚴(yán)格,則不進(jìn)行管理信息的追加。如果所要求的安全要件是與已經(jīng)生成的所有的數(shù)據(jù)區(qū)域的安全要件 同等或比其嚴(yán)格的安全要件,則在程序A用數(shù)據(jù)區(qū)域管理信息表T0500 中追加數(shù)據(jù)區(qū)域管理信息T0503,并且在安全要件管理信息表T1400中 追加安全要件管理信息T1403。接著,程序A0102從保護(hù)對象數(shù)據(jù)區(qū)域1210中讀出保護(hù)對象數(shù)據(jù) 0108,進(jìn)行保護(hù)對象數(shù)據(jù)0108的處理(步驟S1105)。處理結(jié)果被保存在程序A的數(shù)據(jù)區(qū)域1203中。接著,程序A0102進(jìn)行從程序A0102向程序B0103的切換處理(步 驟S1106)。這里,切換處理進(jìn)行圖13及圖14的步驟S0901 步驟S0933的處理。 在執(zhí)行切換處理(步驟S1106)以前,在非法動作防止電路0105中設(shè)定有程序A用代碼區(qū)域管理信息表T0900以及程序A用數(shù)據(jù)區(qū)域管理信息表T0500的信息。如果執(zhí)行了切換處理(步驟S1106),則在非法動作防止電路0105中 設(shè)定有程序B用代碼區(qū)域管理信息表T1000以及程序B用數(shù)據(jù)區(qū)域管理 信息表T0600的信息。這里,將各代碼區(qū)域管理信息表的設(shè)定反映在構(gòu)成非法動作防止控 制部0105的密鑰寄存器0205的指令用密鑰信息表0305中,將各數(shù)據(jù)區(qū) 域管理信息表的設(shè)定反映在數(shù)據(jù)用密鑰信息表0306中,以便適合動作中 的程序的密鑰被設(shè)定到密鑰寄存器中。這樣,程序保護(hù)裝置0101進(jìn)行從程序A0102向程序B0103的切換處 理(步驟S1106),由于變更了將裝載程序A0102的區(qū)域進(jìn)行加/解密的密 鑰,所以能夠防止程序B0103對程序A0102的非法執(zhí)行。例如,在程序B0103的動作中轉(zhuǎn)移到被用代碼加密密鑰KC^A加密 后保存在RAM0202中的程序A的代碼區(qū)域1201 (配置在1000 1099 地址號中)的情況下,使用代碼加密密鑰KC_RB對代碼區(qū)域1201的代 碼進(jìn)行解密。由于即使用密鑰KC一RB對用密鑰KC一A加密的代碼進(jìn)行解密,也不 能將代碼正確解密,所以CPU0201不能正確地執(zhí)行,能夠防止程序B0103 對程序A0102的非法執(zhí)行。此外,同樣,在程序B0103的動作中,即使對程序A的數(shù)據(jù)區(qū)域1202 進(jìn)行存取,由于數(shù)據(jù)加密密鑰不同,也不能取得有意義的數(shù)據(jù)。此外,程序保護(hù)裝置0101通過進(jìn)行從程序A0102向程序B0103的切 換處理(步驟S1106),在發(fā)生了中斷或例外的情況下,執(zhí)行包含在程序 B用中斷管理部0403中的句柄。因此,不會因中斷及例外而被程序B0103以外的程序奪走控制。接著,程序B0103為了使程序B的數(shù)據(jù)區(qū)域1205能夠使用而對非法 動作防止控制部0106委托數(shù)據(jù)保護(hù)設(shè)定(步驟S1107)。這里,程序B0103委托非法動作防止控制部0106,以便用只有程序 B0103能夠存取的狀態(tài)來確保2500 2599地址號的數(shù)據(jù)區(qū)域。其結(jié)果,在程序B用數(shù)據(jù)區(qū)域管理信息表T0600中追加數(shù)據(jù)區(qū)域管理信息T0601,并且在安全要件管理信息表T1400中追加安全要件管理 信息T1404。接著,程序B0103為了將數(shù)據(jù)區(qū)域1203與程序A共享而進(jìn)行數(shù)據(jù)保 護(hù)設(shè)定(步驟S1108)。這里,程序B0103委托非法動作防止控制部0106,以便用表示不能 向文件輸出的安全要件來確保1600 1699的地址號的數(shù)據(jù)區(qū)域1203。數(shù)據(jù)區(qū)域1203由于已經(jīng)被程序A0102確保,所以共享數(shù)據(jù)區(qū)域。程序保護(hù)裝置OIOI進(jìn)行與圖12所示的步驟S0801 步驟S0813同樣 的處理。這里,在代碼-數(shù)據(jù)保護(hù)設(shè)定(步驟S0807)中,非法動作防止控制 部0106進(jìn)行圖10所示的數(shù)據(jù)區(qū)域共享設(shè)定處理0604。在數(shù)據(jù)區(qū)域共享設(shè)定處理0604中,非法動作防止控制部0106確認(rèn) 所要求的數(shù)據(jù)區(qū)域是否存在于安全要件管理信息表T1400中(步驟 S0632)。非法動作防止控制部0106能夠確認(rèn)安全要件管理信息T1403的存在。接著,非法動作防止控制部0106確認(rèn)包含在程序B的程序管理信息 T1302中的功能標(biāo)志是否滿足包含在所要求的數(shù)據(jù)區(qū)域的安全要件管理 信息T1403中的安全要件。這里,相對于共享對象的數(shù)據(jù)區(qū)域1203的安全要件是不能輸出文件, 程序B0103的功能標(biāo)志是不能輸出文件,所以判斷為是妥當(dāng)?shù)摹=Y(jié)果,在包含于安全要件管理信息T1403中的共享程序標(biāo)識符中設(shè) 定程序B的標(biāo)識符。程序B0103對數(shù)據(jù)區(qū)域1203請求的安全要件是不能向文件輸出,這 與已有的安全要件相等,所以安全要件管理信息T1403的安全要件不變 更。接著,進(jìn)行管理表的更新(步驟S0634),在程序B用數(shù)據(jù)區(qū)域管理 信息表T0600中追加數(shù)據(jù)區(qū)域管理信息T0602。數(shù)據(jù)區(qū)域管理信息T0602的數(shù)據(jù)加密密鑰被設(shè)定為與程序A用數(shù)據(jù)區(qū)域管理信息T0503同樣的密鑰。接著,進(jìn)行數(shù)據(jù)保護(hù)設(shè)定的變更,變更密鑰寄存器0205的設(shè)定。 結(jié)果,從程序B0103也能夠參照程序A的數(shù)據(jù)區(qū)域1203。 接著,程序B0103使用數(shù)據(jù)區(qū)域1203的數(shù)據(jù)進(jìn)行處理(步驟S1109)。 接著,程序保護(hù)裝置OIOI進(jìn)行從程序B向C的切換(步驟SlllO)。 接著,程序C0107為了使程序C的數(shù)據(jù)區(qū)域1207能夠使用而對非法動作防止控制部0106委托設(shè)定數(shù)據(jù)保護(hù)(步驟Sllll )。在此,程序C0107委托非法動作防止控制部0106以只有程序C能夠存取的狀態(tài)確保3500 3599地址號的數(shù)據(jù)區(qū)域。結(jié)果,在程序C用數(shù)據(jù)區(qū)域管理信息表T0700中追加數(shù)據(jù)區(qū)域管理信息T0701,并且在安全要件管理信息表T1400中追加安全要件管理信息T1405。接著,程序C0107為了將數(shù)據(jù)區(qū)域1203與程序A0102共享而進(jìn)行數(shù) 據(jù)保護(hù)設(shè)定(步驟S1112)。在此,程序C0107委托非法動作防止控制部0106,以便用表示可向 文件輸出的安全要件來確保1600 1699的地址號的數(shù)據(jù)區(qū)域1203。與共享存儲器的設(shè)定(步驟S1108)同樣,非法動作防止控制部0106 進(jìn)行數(shù)據(jù)區(qū)域共享設(shè)定處理0604。共享存儲器的設(shè)定(步驟S1112)與共享存儲器的設(shè)定(步驟S1108) 不同,共享存儲器的設(shè)定失敗。這是因為,在數(shù)據(jù)區(qū)域共享設(shè)定處理0604中的請求的妥當(dāng)性判斷(步 驟S0633)中判斷為是不妥當(dāng)?shù)?。更具體地講,非法動作防止控制部0106確認(rèn)程序管理信息T1303的 功能標(biāo)志是否滿足安全要件管理信息T1403的安全要件。由于安全要件是不能進(jìn)行文件輸出、而功能標(biāo)志是能夠輸出,所以 非法動作防止控制部0106判斷為程序C不滿足數(shù)據(jù)區(qū)域1203的安全要 件(步驟S0633的"否"),非法動作防止控制部0106結(jié)束非法動作防止控制處理。<6.變形例>另外,基于上述的實施方式說明了本發(fā)明,但本發(fā)明當(dāng)然并不限于 上述實施方式。以下的情況也包含在本發(fā)明中。(1) 在第1實施方式中,代碼加密密鑰0710等代碼加密密鑰被用 公開密鑰加密算法進(jìn)行加密,但并不限于此。也可以將各個代碼加密密鑰用公用密鑰加密方式進(jìn)行加密,在此情 況下,在加密時使用的公用密鑰由非法動作防止控制部0106保持。此外, 程序并不一定需要進(jìn)行加密。在此情況下,代碼加密密鑰0710為NULL 密鑰。此外,代碼加密密鑰0710可以包含算法信息,該算法信息用于對 程序A的代碼0711進(jìn)行加密。此外,對于數(shù)據(jù)加密密鑰0702,也可以用公用密鑰加密方式將數(shù)據(jù) 加密密鑰0702進(jìn)行加密,在此情況下,在加密時使用的公用密鑰由非法 動作防止控制部0106保持。此外,在不將數(shù)據(jù)0701加密的情況下,數(shù)據(jù)加密密鑰0702為NULL 密鑰。此外,數(shù)據(jù)加密密鑰0702可以包括在對數(shù)據(jù)0701進(jìn)行加密時使用 的算法信息。(2) 在上述實施方式中,使用非法動作防止電路0105限制向 RAM0202的存取,但并不限于此,也可以使用能夠以程序單位限制向 RAM0202的存取的其他電路、方法等。例如,如圖22所示,也可以使用非法動作防止電路2105來代替非 法動作防止電路0105。非法動作防止電路2105利用程序ID限制對RAM202的存儲,以代 替對存儲在RAM202中的代碼和數(shù)據(jù)進(jìn)行加密和解密。非法動作防止電路2105具備ID寄存器2205來代替密鑰寄存器,具 備總線連接許可電路2204來代替總線加密電路而。ID寄存器2205如圖23所示,保持有表示地址與指令用總線連接ID的對應(yīng)的指令用ID信息表2305、和表示地址與數(shù)據(jù)用總線連接ID的對 應(yīng)的數(shù)據(jù)用ID信息表2306,從總線連接許可電路2204取得地址信號 2301,將與地址信號2301表示的地址對應(yīng)起來的指令用總線連接 ID2302、數(shù)據(jù)用總線連接ID2303輸出給總線連接許可電路2204。這里,指令用ID信息表2305包括指令用ID信息T2311、 T2312、 T2313……,各指令用ID信息表示地址與指令用總線連接ID加密密鑰的 對應(yīng),數(shù)據(jù)用ID信息表2306包括數(shù)據(jù)用ID信息T2321、 T2322、 T2323……,各數(shù)據(jù)用ID信息表示地址與數(shù)據(jù)用總線連接ID的對應(yīng)。隨著該變更,非法動作防止控制部0106管理的管理表0110的內(nèi)容 代替在上述實施方式中說明的內(nèi)容而成為與用來對非法動作防止電路 2105設(shè)定的ID有關(guān)的信息。此外,可以僅在狀態(tài)切換電路0208輸出的狀態(tài)信號B表示保護(hù)模式 時,利用由總線0210通知的設(shè)定信號2304進(jìn)行變更ID寄存器2205的 設(shè)定。RAM0202是與總線連接許可電路2204連接的存儲器裝置。 總線連接許可電路2204將從ID寄存器2205通知的數(shù)據(jù)用總線連接 ID、代碼用總線連接ID、和當(dāng)前動作中的程序固有的ID比較,在一致的情況下許可向該地址表示的存儲器區(qū)域進(jìn)行存取。上述的當(dāng)前動作中 的程序的固有的ID是設(shè)定在當(dāng)前程序管理表T0503中的當(dāng)前程序的固有 的ID。由此,能夠通過總線連接許可電路2204控制代碼或數(shù)據(jù)是否在總線 0210與RAM0202之間交換。此外,總線連接許可電路2204檢測在CPU0201上動作的程序是為了 獲取指令而存取RAM0202、還是為了數(shù)據(jù)存取而存取,在向相同的物理 地址獲取指令的情況下使用指令用總線連接ID,存取數(shù)據(jù)的情況下使用 數(shù)據(jù)用總線連接ID。(3)在上述實施方式中,以程序單位進(jìn)行代碼區(qū)域、數(shù)據(jù)區(qū)域、安 全要件、程序的管理信息、存儲器的共享等信息的管理、執(zhí)行單位的切換,但并不限于此,也可以按照進(jìn)程(process)、線程(thread)等其他 的單位進(jìn)行。在此情況下,在通常模式及保護(hù)模式的各個模式中聯(lián)動動 作的進(jìn)程或線程也可以不是包含在相互不同的程序中的進(jìn)程或線程,而 是相同的程序的不同的進(jìn)程或不同的線程。(4) 上述的各裝置具體而言是由微處理器、ROM、 RAM、硬盤單 元、顯示器單元、鍵盤、鼠標(biāo)等構(gòu)成的計算機系統(tǒng),在上述RAM或上述 硬盤單元中存儲有計算機程序。通過上述微處理器按照上述計算機程序 動作,各裝置實現(xiàn)其功能。這里,計算機程序是為了實現(xiàn)規(guī)定的功能而 由多個表示對計算機的指令的指令代碼組合而構(gòu)成的。(5) 構(gòu)成上述各裝置的結(jié)構(gòu)要素的一部分或全部也可以由1個系統(tǒng) LSI (Large Scale Integration:大規(guī)模集成電路)構(gòu)成。系統(tǒng)LSI是將多 個結(jié)構(gòu)部集成在1個芯片上制造出的超多功能LSI,具體而言是包括微處 理器、ROM、 RAM等而構(gòu)成的計算機系統(tǒng)。在上述RAM中存儲有計算 機程序。通過上述微處理器按照上述計算機程序動作,系統(tǒng)LSI實現(xiàn)其 功能。它們既可以單獨構(gòu)成1個芯片,也可以在1個芯片上包含一部分 或全部。這里,設(shè)為LSI,但根據(jù)集成度的差異,有時也稱作IC、系統(tǒng)LSI、 超級LSI、超大規(guī)模LSI。此外,集成電路化的方法并不限于LSI,也可以由專用電路或通用處 理器來實現(xiàn)。在LSI制造后,也可以利用能夠編程的FPGA (Field Programmable Gate Array)、或可重構(gòu)LSI內(nèi)部的電路單元的連接或設(shè)定 的可重構(gòu)處理器。進(jìn)而,如果因半導(dǎo)體技術(shù)的進(jìn)步或派生的其他技術(shù)而出現(xiàn)替換LSI 的集成電路化的技術(shù),則當(dāng)然也可以利用該技術(shù)進(jìn)行功能塊的集成化。 有可能是生物技術(shù)的應(yīng)用。(6) 構(gòu)成上述各裝置的結(jié)構(gòu)要素的一部分或全部也可以由可拆裝到 各裝置上的IC卡或單體的模組構(gòu)成。上述IC卡或上述模組是由微處理 器、ROM、 RAM等構(gòu)成的計算機系統(tǒng)。上述IC卡或上述模組也可以包括上述超多功能LSI。通過微處理器按照計算機程序動作,上述IC卡或 上述模組實現(xiàn)其功能。該IC卡或模組也可以具有防篡改性能。(7) 本發(fā)明也可以是上述所示的方法。此外,也可以是將這些方法 通過計算機實現(xiàn)的計算機程序,也可以是由上述計算機程序構(gòu)成的數(shù)字 信號。此外,本發(fā)明也可以是將上述計算機程序或上述數(shù)字信號記錄在計 算機可讀取的記錄介質(zhì)、例如軟盤、硬盤、CD-ROM、 MO、 DVD、 DVD-ROM、 DVD-RAM、 BD (Blu-ray Disc)、半導(dǎo)體存儲器等中而成的 產(chǎn)品。此外,也可以是記錄在這些記錄介質(zhì)中的上述計算機程序或上述 數(shù)字信號。此外,本發(fā)明也可以是將上述計算機程序或上述數(shù)字信號經(jīng)由電通 信線路、無線或有線通信線路、以因特網(wǎng)為代表的網(wǎng)絡(luò)、數(shù)字廣播等傳 送的系統(tǒng)。此外,本發(fā)明也可以是具備微處理器和存儲器的計算機系統(tǒng),上述 存儲器存儲有上述計算機程序,上述微處理器按照上述計算機程序動作。此外,也可以通過將上述程序或上述數(shù)字信號記錄在上述記錄介質(zhì) 中移送,或者將上述程序或上述數(shù)字信號經(jīng)由上述網(wǎng)絡(luò)等移送,由獨立 的其他計算機系統(tǒng)實施。(8) 也可以將上述實施方式及上述變形例分別組合。 <7.對于用語的補充說明> 上述數(shù)據(jù)處理裝置對應(yīng)于程序保護(hù)裝置0101。 上述檢測單元對應(yīng)于CPU0201及狀態(tài)切換電路0208。 上述存取單元對應(yīng)于非法動作防止電路0105、 RAM0202、保護(hù)存儲器0206、以及存取限制電路0207。上述切換單元對應(yīng)于狀態(tài)切換部0208。 上述判斷單元對應(yīng)于非法動作防止控制部0106。 上述控制單元對應(yīng)于非法動作防止控制部0106及安全內(nèi)核0401。 上述存儲器對應(yīng)于RAM0202。上述保持部對應(yīng)于密鑰寄存器0205。上述存取限制部對應(yīng)于非法動作防止控制部0106、安全內(nèi)核0401、 非法動作防止控制電路0105、 RAM0202、保護(hù)存儲器0206以及存取限 制電路0207。上述存取限制部的上述取得部對應(yīng)于RAM0202、非法動作防止電路 0205、安全內(nèi)核0401、和非法動作防止控制部0106。上述地址判斷部對應(yīng)于密鑰寄存器0205和總線加密電路0204。 上述存取執(zhí)行部對應(yīng)于總線加密電路0204。 上述管理信息追加部對應(yīng)于非法動作防止控制部0106。 上述向量表保持單元對應(yīng)于非易失性存儲器221。 上述向量表改寫單元對應(yīng)于非法動作防止控制部0106。 上述使用請求受理部對應(yīng)于總線加密電路0204。 上述使用判斷部對應(yīng)于總線加密電路0204。 上述權(quán)限判斷部對應(yīng)于非法動作防止控制部0106。 上述管理信息登記部對應(yīng)于非法動作防止控制部0106。 上述調(diào)試器單元對應(yīng)于調(diào)試器I/F0209。 上述強制無效化單元對應(yīng)于CPU0201。工業(yè)實用性本發(fā)明的程序保護(hù)裝置可以用作為了功能追加、不良狀況修正等而 能夠更新程序的數(shù)字家電等,可由經(jīng)營家電產(chǎn)品的業(yè)者等生產(chǎn)、使用、 銷售等。
權(quán)利要求
1、一種數(shù)據(jù)處理裝置,具備按照程序動作的處理器,切換通常模式和保護(hù)模式來動作,在該通常模式下,作為上述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動作被抑制,其特征在于,具備存取禁止單元,在通常模式下,對于第1進(jìn)程的處理對象數(shù)據(jù)許可上述第1進(jìn)程的存取,禁止其他進(jìn)程的存??;檢測單元,在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程的調(diào)用指令;切換單元,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判斷單元,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理對象數(shù)據(jù)的使用權(quán)限;以及控制單元,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有上述使用權(quán)限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2進(jìn)程在上述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。
2、 如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其特征在于, 上述存取禁止單元包括存儲器;保持部,僅在保護(hù)模式下,可改寫地保持管理信息,該管理信息表 示每個進(jìn)程在上述存儲器內(nèi)許可存取的區(qū)域;以及存取限制部,使在通常模式下動作的進(jìn)程按照上述管理信息對上述 存儲器進(jìn)行存??;在上述判斷單元判斷為有使用權(quán)限的情況下,上述控制單元在第2 進(jìn)程的管理信息中追加許可對上述存儲器上的保持有上述對象數(shù)據(jù)的區(qū) 域進(jìn)行存取的信息。
3、 如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,上述保持部保持的上述管理信息包括一個以上的、將上述存儲器中的地址與對應(yīng)于地址的密鑰對應(yīng)起來的信息; 上述存取限制部包括取得部,取得包括上述存儲器的地址的向上述存儲器存取的存取請求;地址判斷部,判斷包含在上述存取請求中的地址是否包含在上述管 理信息中;存取執(zhí)行部,在判斷為包含的情況下,如果上述存取請求是寫入請 求,則將寫入的數(shù)據(jù)用與上述地址對應(yīng)的密鑰進(jìn)行加密而寫入到上述地 址所表示的區(qū)域中,在上述存取請求是讀出請求的情況下,將從上述存 儲器的上述地址讀出的數(shù)據(jù)用對應(yīng)于上述地址的密鑰進(jìn)行解密并輸出。
4、 如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于, 上述數(shù)據(jù)是進(jìn)程的代碼。
5、 如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于, 對各進(jìn)程分配各自的進(jìn)程標(biāo)識符;上述保持部保持的上述管理信息包括一個以上的、將上述存儲器中 的地址和表示許可向上述地址存取的進(jìn)程的進(jìn)程標(biāo)識符對應(yīng)起來的信 自.上述進(jìn)程限制部包括取得部,取得包括上述存儲器的地址的、向上述存儲器存取的存取請求;地址判斷部,判斷將包含在存取請求中的地址與分配給請求存取的 進(jìn)程的進(jìn)程標(biāo)識符對應(yīng)起來的信息是否包含在上述管理信息中;存取執(zhí)行部,在判斷為包含的情況下,使請求存取的進(jìn)程對上述存 儲器的上述地址進(jìn)行存取。
6、 如權(quán)利要求l所述的數(shù)據(jù)處理裝置,其特征在于, 對于上述數(shù)據(jù)分配安全要件信息,該安全要件信息表示對一個以上的數(shù)據(jù)處理方法的各個是否許可執(zhí)行;對各進(jìn)程分配功能信息,該功能信息表示能否執(zhí)行一個以上的數(shù)據(jù)處理方法的各個數(shù)據(jù)處理方法;上述調(diào)用指令包含表示一個以上的數(shù)據(jù)處理方法的任一個的處理指 定信息;在上述安全要件信息表示許可執(zhí)行上述處理指定信息表示的數(shù)據(jù)處 理方法、并且第2進(jìn)程的功能信息表示能夠執(zhí)行上述處理指定信息表示 的數(shù)據(jù)處理方法的情況下,上述判斷單元決定為有上述使用權(quán)限。
7、 如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其特征在于, 上述切換單元在從上述通常模式向上述保護(hù)模式切換的情況下,將在上述通常模式下動作的進(jìn)程的上下文保存到上述存儲器中;在從上述保護(hù)模式向上述通常模式切換的情況下,從上述存儲器恢 復(fù)接著在上述通常模式下動作的進(jìn)程的上下文。
8、 如權(quán)利要求7所述的數(shù)據(jù)處理裝置,其特征在于,上述第1進(jìn)程及上述第2進(jìn)程包括在分別動作的期間發(fā)生了中斷或 例外的情況下,處理該中斷或例外的中斷處理或例外處理; 上述數(shù)據(jù)處理裝置還包括向量表保持單元,僅在保護(hù)模式下,可改寫地保持表示在發(fā)生了中 斷或例外的情況下要執(zhí)行的處理的向量表;向量表改寫單元,在動作的進(jìn)程從上述第1進(jìn)程向上述第2進(jìn)程切 換之前,在保護(hù)模式下改寫上述向量表,以使在上述通常模式下發(fā)生中 斷或例外時執(zhí)行第2進(jìn)程的中斷處理或例外處理。
9、 如權(quán)利要求l所述的數(shù)據(jù)處理裝置,其特征在于, 上述判斷單元還包括使用請求受理部,從進(jìn)程受理請求使用上述存儲器的區(qū)域;使用判斷部,判斷請求使用的地址是否己被使用;權(quán)限判斷部,在沒有被使用的情況下,判斷請求使用的進(jìn)程有無對 希望保存到上述地址的數(shù)據(jù)的使用權(quán)限;管理信息登記部,在上述權(quán)限判斷部判斷為有使用權(quán)限的情況下, 在請求使用的進(jìn)程的管理信息中登記許可向上述地址所表示的區(qū)域進(jìn)行存取的信息。
10、 如權(quán)利要求9所述的數(shù)據(jù)處理裝置,其特征在于, 在上述權(quán)限判斷部判斷為有使用權(quán)限的情況下,上述管理信息登記部生成密鑰,并作為許可上述存取的信息,在請求使用的上述進(jìn)程的管 理信息中追加將上述地址與所生成的密鑰對應(yīng)起來的信息的組。
11、 如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其特征在于,上述數(shù)據(jù)處理裝置還包括進(jìn)行上述進(jìn)程的調(diào)試的調(diào)試單元; 上述切換單元還在切換為上述通常模式的情況下,使上述調(diào)試單元 有效,在切換為上述保護(hù)模式的情況下,使上述調(diào)試單元無效。
12、 一種數(shù)據(jù)處理方法,在具備按照程序動作的處理器、切換通常模式和保護(hù)模式來動作的數(shù)據(jù)處理裝置中使用,在上述通常模式下,作 為上述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動作被抑制,其特征在于,具備存取禁止步驟,在通常模式下,對于第1進(jìn)程的處理對象數(shù)據(jù)許可 上述第1進(jìn)程的存取,禁止其他進(jìn)程的存取;檢測步驟,在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程 的調(diào)用指令;切換步驟,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判斷步驟,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理 對象數(shù)據(jù)的使用權(quán)限;控制步驟,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有上述使用權(quán) 限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2進(jìn)程在上 述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。
13、 一種計算機程序,在具備按照程序動作的處理器、切換通常模 式和保護(hù)模式來動作的數(shù)據(jù)處理裝置中使用,在上述通常模式下,作為 上述程序的執(zhí)行單位的進(jìn)程動作,在上述保護(hù)模式下,上述進(jìn)程的動作 被抑制,其特征在于,具備存取禁止步驟,在通常模式下,對于第1進(jìn)程的處理對象數(shù)據(jù)許可 上述第1進(jìn)程的存取,禁止其他進(jìn)程的存??;檢測步驟,在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程 的調(diào)用指令;切換步驟,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判斷步驟,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理 對象數(shù)據(jù)的使用權(quán)限;控制步驟,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有上述使用權(quán) 限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2進(jìn)程在上 述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。
14、 一種集成電路,具備按照程序動作的處理器,切換通常模式和 保護(hù)模式來動作,在該通常模式下,作為上述程序的執(zhí)行單位的進(jìn)程動 作,在上述保護(hù)模式下,上述進(jìn)程的動作被抑制,其特征在于,具備存取禁止單元,在通常模式下,對于第1進(jìn)程的處理對象數(shù)據(jù)許可 上述第1進(jìn)程的存取,禁止其他進(jìn)程的存??;檢測單元,在通常模式下,檢測指示從上述第1進(jìn)程調(diào)用第2進(jìn)程 的調(diào)用指令;切換單元,如果檢測到上述調(diào)用指令,則從通常模式切換為保護(hù)模式;判斷單元,在保護(hù)模式下,判斷上述第2進(jìn)程是否具有對上述處理 對象數(shù)據(jù)的使用權(quán)限;以及控制單元,在保護(hù)模式下,在判斷為上述第2進(jìn)程具有上述使用權(quán) 限的情況下,對上述存取禁止單元進(jìn)行控制,以許可上述第2進(jìn)程在上 述通常模式下對上述處理對象數(shù)據(jù)進(jìn)行存取。
全文摘要
本發(fā)明提供一種不論程序的品質(zhì)如何、都能夠防止各程序處理的數(shù)據(jù)被其他程序非法使用的數(shù)據(jù)處理裝置。該數(shù)據(jù)處理裝置具備執(zhí)行程序的CPU(0106)、和防止其他程序非法存取各程序使用的數(shù)據(jù)的非法動作防止電路(0105),在保護(hù)模式下動作并控制非法動作防止電路(0105)的非法動作防止控制部(0106),對于在通常模式下動作的程序A(0102)使用的存儲器區(qū)域,根據(jù)分配給在通常模式下動作的程序B(0103)的功能標(biāo)志,判斷上述存儲器區(qū)域可否使用,在可使用的情況下對非法動作防止電路(0105)進(jìn)行設(shè)定,以使程序B(0103)能夠使用該存儲器區(qū)域。
文檔編號G06F21/24GK101233525SQ20068002740
公開日2008年7月30日 申請日期2006年5月26日 優(yōu)先權(quán)日2005年5月26日
發(fā)明者金村孝一 申請人:松下電器產(chǎn)業(yè)株式會社