專利名稱:執(zhí)行裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于防止程序的竊聽及篡改的技術(shù),尤其是關(guān)于在執(zhí)行程序時防止程序被竊聽及篡改的技術(shù)。
背景技術(shù):
近幾年來,在以個人計算機為代表的數(shù)字電視及便攜式電話機等具有信息處理功能的裝置中執(zhí)行各種應(yīng)用程序(以下簡稱“應(yīng)用”)。
這些應(yīng)用程序形式各種各樣,有些是原本裝入在該裝置內(nèi)的,有些是用戶購買后加載的,此外,還有一些是由程序分發(fā)服務(wù)提供的等等。所謂利用程序分發(fā)服務(wù)的應(yīng)用程序,例如通過互聯(lián)網(wǎng)下載,或者在數(shù)字廣播的廣播波上多路復(fù)用后發(fā)送。
這樣,現(xiàn)在在具有可以執(zhí)行應(yīng)用程序的功能的裝置(下面稱“執(zhí)行裝置”)中,執(zhí)行用途·目的各種各樣的程序。
另外,發(fā)生程序被篡改或者數(shù)據(jù)被盜的非法行為。這種非法行為阻礙了順利實施程序分發(fā)服務(wù)等,因此開發(fā)了防止程序篡改等的技術(shù)。
例如,存在在CPU(中央處理裝置Central Processing Unit)外部的存儲器中放置加密后的程序并在讀取到CPU時進行解密的技術(shù)(參照專利文獻1、圖11)。如果是該方法,由于很難進行在使用調(diào)試器等并參照存儲器、或者改寫存儲器的內(nèi)容來追蹤程序的動作這樣的方法下的程序解析,所以作為結(jié)果,可以防止程序的篡改及數(shù)據(jù)的竊聽的可能性增大。
專利文獻1日本特開平2-297626號公報然而,由于對置于存儲器上的所有程序進行加密,在每次CPU需要時進行解密處理,并且在每次寫入存儲器時進行加密處理,因此,存在執(zhí)行速度變慢的問題。
發(fā)明內(nèi)容
于是,本發(fā)明的目的在于提供一種不但可以防止篡改·竊聽那些不希望被篡改或竊聽的數(shù)據(jù)等、還不用擔(dān)心程序執(zhí)行速度減慢的執(zhí)行裝置。
為了解決上述課題,本發(fā)明的執(zhí)行裝置是一種執(zhí)行以面向?qū)ο笳Z言制作的應(yīng)用程序的執(zhí)行裝置,其特征在于,上述應(yīng)用程序包含具有1個以上的方法的1個以上的類、和表示有無保密的必要性的保密性信息,上述執(zhí)行裝置具有根據(jù)上述保密性信息判斷是否需要加密的加密判斷單元、和在執(zhí)行上述方法時將包含有上述方法所操作的數(shù)據(jù)的對象記錄在存儲器中的對象記錄單元,在由上述加密判斷單元判斷為有必要加密時,上述對象記錄單元記錄包含有加密后的數(shù)據(jù)的對象。
發(fā)明效果本發(fā)明的執(zhí)行裝置具備上述構(gòu)成,由此在執(zhí)行應(yīng)用程序的期間,可以只對記錄在主存儲器中的數(shù)據(jù)進行加密,因此,減少了加密等所需的處理時間,并且,可以使得在應(yīng)用程序中處理的數(shù)據(jù)很難被竊聽·篡改。
也就是說,程序通常由指令部分和數(shù)據(jù)部分組成,當(dāng)想予以保護的是數(shù)據(jù)時,只對該數(shù)據(jù)進行加密就可以。其結(jié)果,當(dāng)訪問指令部分時,就不需要加密解密的處理時間,可以在作為整體保護想要保護的部分的同時,把處理時間抑制在最小限度上。
這里,保密性信息所示有無保密的必要性的對象也可以是應(yīng)用程序整體這樣的單位,類單位、方法單位以及字段單位等。
而且,也可以是,上述保密性信息還包含表示保密程度的信息,上述執(zhí)行裝置還具備根據(jù)上述保密性信息決定加密方式的加密方式?jīng)Q定單元,當(dāng)由上述加密判斷單元判斷為需要加密時,上述對象記錄單元記錄下述對象,該對象包含有以上述加密方式?jīng)Q定單元決定的加密方式加密后的數(shù)據(jù)。
由此,執(zhí)行裝置可以根據(jù)應(yīng)用程序的保密程度更換加密算法,因此,可以考慮應(yīng)用程序的重要性和應(yīng)用程序的執(zhí)行速度,來決定加密方式。
這里,也可以是,保密性信息不僅表示是否應(yīng)加密的的信息,還表示應(yīng)以怎樣的等級保護、或應(yīng)使用什么樣的算法、應(yīng)使用多少長度的加密密鑰等信息。
另外,也可以是,在改寫上述對象內(nèi)的數(shù)據(jù)時,在上述數(shù)據(jù)被加密的情況下,記錄加密后的數(shù)據(jù)。
另外,也可以是,記錄在上述存儲器中的對象具有表示對象內(nèi)的數(shù)據(jù)是否被加密的信息,在上述信息表示對象內(nèi)的數(shù)據(jù)被加密時,記錄加密后的數(shù)據(jù)。
由此,執(zhí)行裝置即使在改寫應(yīng)用程序的數(shù)據(jù)時,也可以加密數(shù)據(jù),因此,在應(yīng)用程序執(zhí)行中數(shù)據(jù)被保護。
另外,也可以是,上述執(zhí)行裝置還具備判斷數(shù)據(jù)是否是確定其他數(shù)據(jù)的所在位置所需的數(shù)據(jù)的判斷單元,在上述判斷單元判斷出數(shù)據(jù)是確定其他數(shù)據(jù)的所在位置所需的數(shù)據(jù)時,抑制加密。
由此,執(zhí)行裝置可以不加密要加密的數(shù)據(jù)中的所謂參照型的數(shù)據(jù),所以可以抑制垃圾回收時的處理速度的降低。
這是由于,即使不加密參照型的數(shù)據(jù)其本身,如果加密其參照目標(biāo)的數(shù)據(jù),也可以實現(xiàn)保護數(shù)據(jù)的目的。另外,由于在垃圾回收時改寫參照型數(shù)據(jù)的情況下,不需要加密解密的處理,所以處理速度提高。
另外,本發(fā)明的執(zhí)行裝置是執(zhí)行程序的執(zhí)行裝置,其特征在于,上述程序包含數(shù)據(jù)部分和表示有無保密的必要性的保密性信息,上述執(zhí)行裝置具有根據(jù)上述保密性信息判斷有無必要加密的加密判斷單元、和在執(zhí)行上述可執(zhí)行程序時將上述數(shù)據(jù)部分加載到主存儲器中的加載單元,上述加載單元在由上述加密判斷單元判斷為需要加密時,進行加密后,加載數(shù)據(jù)部分。
本發(fā)明的執(zhí)行裝置具備上述構(gòu)成,由此在程序執(zhí)行的期間,可以只對需要加密的數(shù)據(jù)部分加密,再加載到主存儲器中,因此減少了加密等所需的處理時間,并且可以使程序所處理的數(shù)據(jù)難以被盜竊·篡改。
圖1是表示有關(guān)本發(fā)明的執(zhí)行裝置的組成的圖;圖2是表示虛擬機2000的組成的功能方框圖;圖3是表示加密強度信息2810的組成及內(nèi)容例的圖;圖4是表示應(yīng)用程序文件1000內(nèi)的應(yīng)用程序的組成及內(nèi)容例的圖;圖5是表示通過加載器2200在方法區(qū)2600生成的類信息1210的組成及內(nèi)容例的圖;圖6是表示加密算法信息2820的組成及內(nèi)容例的圖;圖7(a)是表示對象2510的組成例的圖,圖7(b)是表示對象2510的內(nèi)容例的圖;圖8是表示執(zhí)行裝置3000的處理的流程圖;圖9是表示應(yīng)用程序注冊處理的流程圖;圖10是表示對象的生成處理的流程圖;圖11是表示現(xiàn)有技術(shù)的組成的圖。
標(biāo)號說明1000----應(yīng)用程序文件1200----應(yīng)用程序類1210----類信息1300----數(shù)據(jù)文件1400----元數(shù)據(jù)1400----元信息1410----啟動類名1420----安全強度信息1610----應(yīng)對處理信息2000----虛擬機2100----應(yīng)用程序注冊部2110----加密判斷部2200----加載器2210----類加載器2220----驗證器2230----JIT編譯器2300----解釋器2310----解密部2320----加密部2400----堆管理部2500----堆區(qū)2510----對象2600----方法區(qū)2700----本地類庫2800----加密信息存儲部
2810----加密強度信息2820----加密算法信息3000----執(zhí)行裝置3100----應(yīng)用程序3200----應(yīng)用程序控制部3210----應(yīng)用程序取得程序3300----OS3400----CPU3500----ROM3600----RAM具體實施方式
<概要>
有關(guān)本發(fā)明的執(zhí)行裝置著眼于,由于在執(zhí)行裝置中執(zhí)行的每個應(yīng)用程序的用途·目的不同從而每個應(yīng)用程序的安全條件不同的情況,以及與應(yīng)用程序本身相比該應(yīng)用程序所處理的數(shù)據(jù)中保密性高的情況比較多的情況。
這里,安全條件不同指的是,因應(yīng)用程序不同,要保護的數(shù)據(jù)不同,而且,還有保密性的程度不同。
也就是說,在執(zhí)行不需要數(shù)據(jù)保密的應(yīng)用程序時,希望極力減少與執(zhí)行速度降低相伴的加密解密處理,此外,在執(zhí)行對保密性非常高的數(shù)據(jù)進行處理的應(yīng)用程序時,即使執(zhí)行速度多少有些遲緩,也最好盡可能地使用強度高的加密算法來保護數(shù)據(jù)。
本發(fā)明的特征在于,可以根據(jù)處理數(shù)據(jù)的重要度,自由改變加密的程度。
應(yīng)用程序所處理的數(shù)據(jù)的保密性程度是在制作該應(yīng)用程序時只有作者或者其用戶才能夠知道的。
因此,有關(guān)本發(fā)明的執(zhí)行裝置中,直接訪問數(shù)據(jù)等的程序具有確定生成該數(shù)據(jù)的應(yīng)用程序的功能。
也就是說,通過確定所生成的應(yīng)用程序,可以判斷是否是處理保密性高的數(shù)據(jù)的應(yīng)用程序所生成的數(shù)據(jù),由此可以僅僅加密保密性高的數(shù)據(jù)。
結(jié)果,可以說,本執(zhí)行裝置具有在將加密所引起的執(zhí)行時間的降低抑制在最小限度的同時防止數(shù)據(jù)的竊聽的數(shù)據(jù)保護功能。
此外,可以根據(jù)應(yīng)用程序所要求的保密性程度,選擇加密算法的強度或密鑰。
下面,說明有關(guān)本發(fā)明實施方式的執(zhí)行裝置。
本實施方式中,說明關(guān)于在Java虛擬機上執(zhí)行的Java應(yīng)用程序。
<結(jié)構(gòu)>
圖1是表示有關(guān)本發(fā)明的執(zhí)行裝置的組成的圖。
執(zhí)行裝置3000具有應(yīng)用程序3100、虛擬機2000、應(yīng)用程序控制部3200、OS(Operating System操作系統(tǒng))3300、CPU(CentralProcessing Unit中央處理單元)3400、ROM(Read Only Memory只讀存儲器)3500及RAM(Random Access Memory隨機存取存儲器)3600。
執(zhí)行裝置3000除了具有執(zhí)行應(yīng)用程序的功能外,還具有各個裝置所特有的功能(沒有圖示)。具體地說,本執(zhí)行裝置3000相當(dāng)于數(shù)字電視、機頂盒、DVD記錄器、藍光盤記錄器(Blu-RayDisc)、汽車導(dǎo)航終端、便攜式電話、PDA等搭載有Java(注冊商標(biāo)、以下相同)虛擬機的所有電子設(shè)備。
這里,執(zhí)行本執(zhí)行裝置3000的應(yīng)用程序的功能指的是,和通常搭載在個人計算機或數(shù)字家用電器等上的軟件執(zhí)行裝置一樣的裝置。例如,如果執(zhí)行裝置3000是數(shù)字電視,則執(zhí)行把接收的數(shù)字數(shù)據(jù)轉(zhuǎn)換為圖像并顯示的應(yīng)用程序。
首先,應(yīng)用程序3100是在本執(zhí)行裝置3000所執(zhí)行的應(yīng)用程序,是從本裝置外的應(yīng)用程序文件1000下載的。設(shè)該應(yīng)用程序文件1000中裝入加密后的Java應(yīng)用程序。
虛擬機2000是依次解析并執(zhí)行以Java語言記述的程序的Java虛擬機。換言之,是軟件程序的虛擬機2000,仿真虛擬的CPU,解析執(zhí)行Java的指令代碼。
設(shè)本實施方式中的虛擬機具有把字節(jié)碼翻譯為CPU3400可以理解的執(zhí)行形式的稱作JIT編譯器的功能。
也就是說,以Java語言記述的源程序通過字節(jié)碼編譯器轉(zhuǎn)換為字節(jié)碼。該字節(jié)碼指的是,不依賴于硬件的中間碼。設(shè)該字節(jié)碼裝入應(yīng)用程序文件1000內(nèi)。
本實施方式的虛擬機讀出該字節(jié)碼,把由JIT編譯器翻譯成執(zhí)行形式的內(nèi)容加載到存儲器中。
而且,Java虛擬機具有各種結(jié)構(gòu),如由可以直接執(zhí)行一部分或者全部字節(jié)碼的處理器、和執(zhí)行在處理器中不能直接執(zhí)行的字節(jié)碼的解釋器構(gòu)成等(參照書籍“Java Language Specification(ISBN0-201-63451-1)”等)。
另外,應(yīng)用程序控制部3200具有執(zhí)行并控制如下載應(yīng)用程序3100,或者啟動虛擬機2000等這樣的執(zhí)行應(yīng)用程序所需的處理的功能。
OS3300是由平行執(zhí)行其他子程序的核心程序及庫構(gòu)成的技術(shù)的總稱,把虛擬機2000作為子程序執(zhí)行。例如,有Linux等。
CPU3400具有執(zhí)行虛擬機2000、OS3300、應(yīng)用程序3100等的功能。
RAM3600具體地說是由SRAM(Static Random Access Memory靜態(tài)隨機存取存儲器)、DRAM(Dynamic Random Access Memory動態(tài)隨機存取存儲器)等主存儲器構(gòu)成,當(dāng)CPU3400進行處理時,用于臨時保存數(shù)據(jù)。
ROM3500具體地說由閃存和硬盤等非易失性存儲器構(gòu)成,存儲由CPU3400指示的數(shù)據(jù)和程序。
圖2是表示虛擬機2000的組成的功能框圖。
虛擬機2000具有應(yīng)用程序注冊部2100、加載器2200、解釋器2300、堆管理部2400、堆區(qū)2500、方法區(qū)2600、本地類庫2700及加密信息存儲部2800。
另外,應(yīng)用程序取得程序3210是應(yīng)用程序控制部3200的程序之一,以Java語言記述,具有從應(yīng)用程序文件100下載應(yīng)用程序的功能。關(guān)于所下載的應(yīng)用程序內(nèi)容,使用圖4在后面說明。
首先,說明虛擬機2000的各種功能部。
應(yīng)用程序注冊部2100具有如下功能,即從應(yīng)用程序取得程序3210接受委托,判斷有沒有必要加密被委托注冊的應(yīng)用程序,在加密時,決定該方法等,并存儲在加密信息存儲部2800中。另外,具有制作被委托注冊的應(yīng)用程序用的類加載器對象的功能。
應(yīng)用程序注冊部2100具備加密判斷部2110,加密判斷部2110判斷有沒有必要加密應(yīng)用程序取得程序3210所取得的應(yīng)用程序,并判斷執(zhí)行裝置3000是否可以實現(xiàn)該加密等級。
若加密判斷部2110判斷為可以加密應(yīng)用程序,則應(yīng)用程序注冊部2100決定用于加密該應(yīng)用程序所生成的數(shù)據(jù)的加密算法和加密密鑰,并使所決定的加密算法等建立對應(yīng),存儲在加密信息存儲部2800中。
加載器2200具有從應(yīng)用程序文件1000和本地類庫2700等把類文件加載到方法區(qū)2600的功能。關(guān)于類文件,使用圖5在后面說明。
加載器2200具備類加載器2210、驗證器2220、JIT編譯器2230。
類加載器2210具有從應(yīng)用程序文件1000讀入并加載類文件的功能。另外,類加載器2210還具有卸載類的功能。是從虛擬機2000去除執(zhí)行結(jié)束而不需要的類的功能。
然后,驗證器2220具有判斷類的數(shù)據(jù)形式不完備和類所包含的字節(jié)碼的安全性的功能。加載器2200對于在驗證器2220中判斷為不妥的類,不進行加載。
JIT編譯器2230具有把字節(jié)碼翻譯為CPU3400可以理解的執(zhí)行形式的功能。
然后,解釋器2300具有解釋并執(zhí)行由加載器2200加載的字節(jié)碼的功能,在Java虛擬機中進行核心處理。
該解釋器2300具備解密部2310,解密部2310具有在讀出堆區(qū)2500的數(shù)據(jù)時、在數(shù)據(jù)被加密的情況下在處理之前進行解密的功能。另外,具備加密部2320,該加密部2320具有對存儲在堆區(qū)2500上的數(shù)據(jù)進行加密的情況下在寫入數(shù)據(jù)之前進行加密的功能。
堆管理部2400具有在解釋器2300的控制下在堆區(qū)上制作或刪除對象的功能。
還有,堆管理部2400還具有進行垃圾回收的功能。垃圾回收指的是,開放在應(yīng)用程序執(zhí)行中不需要的工作存儲器并可以使其再利用于其他用途的功能。
這里,堆管理部2500指的是制作對象的存儲器,方法區(qū)2600指的是加載類文件的目的存儲器。這些由RAM3600制作。
另外,本地類庫2700是從Java應(yīng)用程序調(diào)用的庫,將OS3300和執(zhí)行裝置3000所具備的硬件、子程序等中提供的功能提供給Java應(yīng)用程序。
加密信息存儲部2800具有存儲加密所需的信息的功能,由RAM3600制作。
另外,設(shè)本執(zhí)行裝置3000具有通常的Java虛擬機所具有的管理線程的功能部和堆棧區(qū)等(沒有圖示)。
而且,通過CPU執(zhí)行存儲在執(zhí)行裝置3000的存儲器上或者硬盤上的程序,來實現(xiàn)執(zhí)行裝置3000的各功能。
<數(shù)據(jù)>
下面,關(guān)于本執(zhí)行裝置中使用的主要數(shù)據(jù),使用圖3至圖6說明。
圖3是表示加密強度信息2810的組成及內(nèi)容例的圖。
該加密強度信息2810存儲在加密強度信息存儲部2800中。
加密強度信息2810由安全性強度2811及數(shù)據(jù)加密強度1812構(gòu)成。
安全性強度2811表示由應(yīng)用程序處理的數(shù)據(jù)的安全性的高度,例如,設(shè)為“0”到“2”3個階段。對每個應(yīng)用程序指定該“0”到“3”的值。
另外,數(shù)據(jù)加密強度1812表示加密數(shù)據(jù)時的程度。例如,安全強度2811是“0”情況下的數(shù)據(jù)加密強度2812是加密“不需要”。也就是說,表示不進行加密。安全強度2811是“1”以上意味著需要數(shù)據(jù)加密。還有,安全強度2811是“2”以上時,表示需要比安全強度2811是“1”還要強的加密算法,或者需要使用長的密鑰進行加密。
接著,圖4是表示裝入應(yīng)用程序文件1000內(nèi)的應(yīng)用程序的組成及內(nèi)容例的圖。
應(yīng)用程序1001包含應(yīng)用程序類1200、數(shù)據(jù)文件1300和元數(shù)據(jù)1400。
應(yīng)用程序1200是組成應(yīng)用程序的1個以上的類文件的集合。
數(shù)據(jù)文件1300是執(zhí)行應(yīng)用程序時使用的數(shù)據(jù)。具體地說,相當(dāng)于圖像文件和語音文件等。
另外,元數(shù)據(jù)1400中保持有與應(yīng)用程序1001有關(guān)的各種信息。例如,元數(shù)據(jù)1400包含啟動類名1410和安全強度信息1420。
啟動類名1410是在應(yīng)用程序類1200中最初應(yīng)執(zhí)行的類名。
安全強度信息1420表示在執(zhí)行應(yīng)用程序類1200時被虛擬機2000要求的安全強度。該安全強度信息1420所表示的信息和加秘強度信息2810的安全強度2811相同的信息。
該安全強度信息1420的指定方法例如是作為字節(jié)碼編譯器的選項進行設(shè)定。
圖5是表示通過加載器2200在方法區(qū)2600上生成的類信息1210的構(gòu)成及內(nèi)容的圖。
類信息1210包括類名1211、父類1212、接口表1213、方法表1214、字段表1215、類加載器ID1216及安全標(biāo)志1217等。
類名1211是該類的類名。
父類1212是對表示該類的父類的內(nèi)部形式的參照。
這里,參照指的是指針或索引等表示該數(shù)據(jù)的實體的表現(xiàn)。
接口表1213是對該類所安裝的接口的參照。
方法表1214是該類所具備的方法的一覽。
字段表1215是該類所具備的字段的一覽。
另外,類加載器ID1216表示加載該類的類加載器對象。具體地說,裝入有類加載器ID2821(參照圖6)。
安全標(biāo)志1217表示該類是否是安全類。
這里,安全類指的是,在安全強度信息1420中含有被指定安全強度2811“1”或者“2”的應(yīng)用程序1001的應(yīng)用程序類1200。
當(dāng)該安全標(biāo)志1217成為“開(ON)”的情況,在該類中處理的數(shù)據(jù)被判斷為需要加密。
另外,當(dāng)加載類時,通過加載器2200設(shè)定該安全標(biāo)志1217。本實施方式中,通過應(yīng)用程序1001的安全強度信息1420,統(tǒng)一決定類的安全標(biāo)志1217。也就是說,需要加密的應(yīng)用程序的所有類的安全標(biāo)志1217設(shè)為“開”。
圖6是表示加密算法信息2820的構(gòu)成及內(nèi)容例的圖。
該加密算法信息2820存儲在加密信息存儲部2800,由應(yīng)用程序注冊部2100制作。
加密算法信息2820包括類加載器2821、類加載器地址2822、加密算法2823及加密密鑰2824。
類加載器ID2821是應(yīng)用程序注冊部2100唯一分配給類加載器的標(biāo)識符。也就是說,對一個應(yīng)用程序,存在一個類加載器2210。本實施方式中,設(shè)從“0”依次上升。
類加載器地址2822是從虛擬機2000請求注冊的類加載器對象的地址。
例如,執(zhí)行由類加載器ID是“0”的類加載器加載的應(yīng)用程序時所生成的數(shù)據(jù)表示不加密,而執(zhí)行由類加載器ID是“2”的類加載器加載的應(yīng)用程序時所生成的數(shù)據(jù)表示,以“AES(AdvancedEncryption Standard高級加密標(biāo)準(zhǔn))”算法加密,該密鑰是“YYYY ”。
<動作>
下面,使用圖7~圖10說明有關(guān)本發(fā)明的執(zhí)行裝置3000的動作。
圖7(a)是表示對象2510的構(gòu)成例的圖,在動作說明中根據(jù)需要進行參照。首先,說明圖7。
對象2510是在類內(nèi)的方法被執(zhí)行時制作的,在堆區(qū)2500中制作。
對象2510由對象頭2511和對象數(shù)據(jù)2512組成,對象頭2511中包括該對象所屬的類信息2551、對象數(shù)據(jù)2512的大小即數(shù)據(jù)大小2552、表示對象數(shù)據(jù)2512是否被加密的加密標(biāo)志2553等。該加密標(biāo)志2553是“開”時,對象數(shù)據(jù)2512被加密。
當(dāng)該方法所屬的類也就是說類信息2551中參照的類的安全標(biāo)志1217是“開”的情況,該加密標(biāo)志2553設(shè)為“開”。
類信息2551是通過類加載器在方法區(qū)2600中生成的類的內(nèi)部表現(xiàn)的地址。類信息1210(參照圖5)的開頭地址裝入類信息2551。
另外,對象數(shù)據(jù)2512是通過Java應(yīng)用程序的動作生成的執(zhí)行時數(shù)據(jù),具有0個以上的字段。字段數(shù)由對象所屬的類唯一決定。
字段有稱作基本型的處理數(shù)值和文字的字段、和稱作參照型的表示參照其他對象的字段這2種。本實施方式中,設(shè)對象數(shù)據(jù)2512整體被加密。
圖7(b)是表示對象2510的內(nèi)容例的圖。
例如,類信息2551參照存在于地址“0xdeadbeef”的內(nèi)部表現(xiàn),對象數(shù)據(jù)的數(shù)據(jù)大小2552是“24”。加密標(biāo)志2553的值是“1(開)”,由此表示該對象被加密。
根據(jù)存在于地址“0xdeadbeef”的內(nèi)部表現(xiàn),參照類加載器ID1216(參照圖5),可以確定加載該類的類加載器對象。該類加載器對象的ID即類加載器ID1216設(shè)為“2”時,以該類加載器ID1216“2”為關(guān)鍵字檢索加密算法信息2820(參照圖6)。由于加密算法信息2820的類加載器ID2821是“2”,因此,可知該對象數(shù)據(jù)2512以“AES”算法,使用密鑰“YYYY”被加密。
由解釋器2300的加密部2320進行實際的加密,由解釋器2300的解密部2310進行解密。
下面,使用圖8至圖10,說明執(zhí)行裝置的處理。
本實施方式中,在提供執(zhí)行裝置的電源的情況下,執(zhí)行事先決定的應(yīng)用程序。
圖8是表示執(zhí)行裝置3000的處理的流程圖。
首先,用戶接通執(zhí)行裝置3000的電源(步驟S810)。
通電后的CPU3400啟動OS3300(步驟S820)。
啟動后的OS3300進行指示,以便啟動虛擬機2000(步驟S830),來啟動應(yīng)用程序取得程序3210。
接受了指示的虛擬機2000啟動應(yīng)用程序取得程序3210(步驟S840)。
通過虛擬機2000啟動的應(yīng)用程序取得程序3210從應(yīng)用程序文件讀入應(yīng)用程序1001,對應(yīng)用程序注冊部2100委托應(yīng)用程序的注冊處理。這里,只讀入應(yīng)用程序1001內(nèi)的元數(shù)據(jù)1400(參照圖4),傳遞給應(yīng)用程序注冊部2100。根據(jù)應(yīng)用程序的執(zhí)行,適時地讀入其他的應(yīng)用程序類1200和數(shù)據(jù)文件1300。
在該應(yīng)用程序注冊處理中,判斷應(yīng)用程序1001的保密性程度,決定加密的算法等。另外,生成用于該應(yīng)用程序1001的類加載器對象(步驟S850)。也就是說,當(dāng)結(jié)束該應(yīng)用程序注冊處理時,在圖6所示的加密算法信息2820中注冊有相應(yīng)的應(yīng)用程序的加密信息。關(guān)于應(yīng)用程序注冊處理的詳細情況,使用圖9在后面說明。
結(jié)束了應(yīng)用程序的注冊處理之后的應(yīng)用程序注冊部2100將該消息返給應(yīng)用程序取得程序3210。接受了注冊處理結(jié)束的消息的應(yīng)用程序取得程序3210向解釋器2300通知啟動類名1410,委托加載。
解釋器2300對類加載器對象指示加載由啟動類名1410(參照圖4)指定的類(下面稱“啟動類”)。類加載器對象把所指定的類加載在方法區(qū)2600中(步驟S860)。在該時刻,在方法區(qū)2600中制作圖5所示的類信息1210,并設(shè)定類加載器ID1216和安全標(biāo)志1217。
這時,由驗證器2220檢查合法性,由JIT編譯器2230轉(zhuǎn)換為本地碼。
由此,應(yīng)用程序被加載到虛擬機2000上,成為可執(zhí)行的狀態(tài)。
當(dāng)類加載器對象所進行的啟動類的加載結(jié)束時,解釋器2300通過執(zhí)行啟動類的方法,進行應(yīng)用程序的啟動。
執(zhí)行方法指的是,即委托堆管理部2400,在堆區(qū)2500中制作對象(步驟S870),并執(zhí)行方法(步驟S880)。
執(zhí)行新的方法時,根據(jù)需要加載所屬的類(步驟S860),制作對象(步驟S870),執(zhí)行方法。
在堆區(qū)2500中制作對象的時刻,當(dāng)需要加密時,對象數(shù)據(jù)2512被加密,并設(shè)定加密標(biāo)志。
因此,在訪問該對象的字段時,參照對象頭2511的加密標(biāo)志2553,如果是“開”,則在讀出時對所讀出的數(shù)據(jù)進行解密后再處理,另外,在寫入時寫入加密后的數(shù)據(jù)。如果加密標(biāo)志2553是“關(guān)閉(OFF)”,則在不進行加密、解密的情況下訪問字段。加密算法等的取得方法和圖7(b)中說明的相同。
構(gòu)成虛擬機2000的所有功能部在對對象進行讀入操作之前,檢查對象頭2511內(nèi)的加密標(biāo)志2553,在要加密的情況下,由解密部2310對其解密,并讀入。另外,在對對象進行寫入操作之前,檢查對象頭2511內(nèi)的加密標(biāo)志2553,在對象被加密的情況下,由加密部2320寫入加密后的數(shù)據(jù)。
1.應(yīng)用程序注冊處理使用圖9說明。圖9是表示應(yīng)用程序注冊處理的流程圖。
啟動了虛擬機2000的應(yīng)用程序取得程序3210從應(yīng)用程序文件讀入應(yīng)用程序1001,對應(yīng)用程序注冊部2100委托應(yīng)用程序的注冊處理(步驟S910)。
被委托了注冊處理的應(yīng)用程序注冊部307讀出委托注冊的應(yīng)用程序中所包含的安全強度信息1420(參照圖4)(步驟S920)。這時,如果應(yīng)用程序被加密,則在讀出安全強度信息1420之前進行解密。
然后,判斷執(zhí)行裝置3000是否具備與所讀出的安全強度信息1420對應(yīng)的加密功能(步驟S930)。委托加密判斷部2110進行該判斷。
具體地說,若假設(shè)安全強度信息1420是“2”,則加密判斷部2110,從加密信息存儲部2800讀出加密強度信息2810,讀出與安全強度2811是“2”相對應(yīng)的數(shù)據(jù)加密強度2812是“強”的情況。
在執(zhí)行裝置3000支持該數(shù)據(jù)加密強度2812是“強”的加密方法的情況下,判斷為執(zhí)行裝置3000具備與所讀出的安全強度信息1420相對應(yīng)的加密功能。而且,在本執(zhí)行裝置中預(yù)先決定哪個等級的加密被支持,并且應(yīng)用程序注冊部2100將其存儲。
當(dāng)加密判斷部2110判斷出執(zhí)行裝置3000具備與所讀出的安全強度信息1420相對應(yīng)的加密功能時(步驟S930是),應(yīng)用程序注冊部2100生成用于加載應(yīng)用程序的類加載器對象(步驟S940)。
然后,根據(jù)所讀出的安全強度信息1420,決定加密算法和加密中使用的密鑰長度,生成加密密鑰(步驟S950)。加密密鑰設(shè)為,即使是相同的應(yīng)用程序,頁在每次注冊時隨機生成。因為這樣更加難以解讀。另外,也可以使用比安全強度信息1420所指定的算法還要強的加密算法和密鑰。
應(yīng)用程序注冊部2100將類加載器ID2821、類加載器對象的地址2822、加密算法2823和加密密鑰2824建立對應(yīng),注冊在加密算法信息2820中(步驟S960)。
當(dāng)執(zhí)行裝置3000不具備與安全強度信息1420相對應(yīng)的加密功能時,中斷應(yīng)用程序的啟動(步驟S970)。通過不啟動應(yīng)用程序,來保護應(yīng)用程序的保密性。
2.對象生成處理使用圖10說明。圖10是表示對象的生成處理的流程圖。
當(dāng)結(jié)束類加載器對象所進行的啟動類的加載時(參照圖8、步驟S860),解釋器2300執(zhí)行啟動類的方法,由此進行應(yīng)用程序的啟動。
執(zhí)行方法指的是,首先對堆管理部2400委托對象的制作。
接受了委托的堆管理部2400保證用于新的對象的存儲區(qū)(步驟S1010)。
接著,解釋器2300檢查當(dāng)前類是否是安全類。這可以通過調(diào)查當(dāng)前類的安全標(biāo)志1217來判斷。安全標(biāo)志1217如果是“開”,則判斷為是安全類,即不需要加密的類。
在判斷為當(dāng)前類是安全類時(步驟S1020是),在對象頭2511內(nèi)的加密標(biāo)志上設(shè)定表示對象被加密的“1”(步驟S1040)。
標(biāo)志設(shè)定后,加密對象數(shù)據(jù)2512(步驟S1040)。這里的加密方法通過讀出加密算法信息2820(參照圖6)來決定。
在判斷為當(dāng)前類不是安全類時(步驟S1020否),在對象頭2511內(nèi)的加密標(biāo)志上設(shè)定表示對象沒有被加密的“0”(步驟S1050)。
這里,當(dāng)前類指的是定義了執(zhí)行中的方法的類。
解釋器2300在執(zhí)行Java方法時,在RAM3600上制作稱作Java幀的數(shù)據(jù)結(jié)構(gòu)。在每次調(diào)用呼出Java方法時生成一個Java幀,在方法執(zhí)行結(jié)束時破壞Java幀。由多個線程執(zhí)行解釋器2300,但在給予了控制權(quán)的線程的任意地點,對執(zhí)行中的方法只存在一個有效的Java幀。將該幀稱作當(dāng)前幀,因此將執(zhí)行中的方法稱作當(dāng)前方法。定義該當(dāng)前方法的類就是當(dāng)前類。
也就是說,當(dāng)前類在某一瞬間決定為1個。
<補充>
以上,基于本實施方式說明了有關(guān)本發(fā)明的執(zhí)行裝置,也可以對該執(zhí)行裝置做部分變形,本發(fā)明當(dāng)然不限于上述實施方式。即,(1)實施方式中,在執(zhí)行裝置3000中執(zhí)行的應(yīng)用程序設(shè)為,應(yīng)用程序取得程序3210從本裝置外的應(yīng)用程序文件1000下載,然而也可以設(shè)為從互聯(lián)網(wǎng)上的服務(wù)器下載。
這種情況下,應(yīng)用程序取得程序3210具有下述功能,即根據(jù)TLS(Transport Layer Security傳輸層安全)、HTTP(HypertextTransfer Protocol超文本傳輸協(xié)議)等協(xié)議,下載Java應(yīng)用程序。
這里,TLS是通過加密防止通信時的數(shù)據(jù)的竊聽、篡改的數(shù)據(jù)傳輸方式(參照RFC2246)。此外,HTTP是在互聯(lián)網(wǎng)上的數(shù)據(jù)通信中一般使用的數(shù)據(jù)傳輸方式(參照RFC2616)。
而且,RFC(Request For Comments征求意見)指的是將互聯(lián)網(wǎng)上的技術(shù)標(biāo)準(zhǔn)化的IETF(Internet Engineering Task Force互聯(lián)網(wǎng)工程工作小組)的公文,綜合了協(xié)議等各種技術(shù)的使用。
另外,在執(zhí)行裝置3000中執(zhí)行的應(yīng)用程序也可以是,作為數(shù)字廣播的數(shù)據(jù)廣播而嵌入MPEG(Moving Picture Coding ExpertsGroup運動圖像專家組)2傳輸流內(nèi)的Java應(yīng)用程序。
這種情況下,應(yīng)用程序取得程序3210是在執(zhí)行裝置3000內(nèi)讀出嵌入傳輸流內(nèi)的Java應(yīng)用程序的程序。
作為在MPEG2傳輸流內(nèi)嵌入Java程序的方法,例如有DSMCC方式。DSMCC方式指的是,在MPEG2傳輸流的數(shù)據(jù)包中對由在計算機中使用的目錄和文件組成的文件系統(tǒng)編碼的方法(參照MPEG規(guī)格書ISO/IEC138181-1、MPEG規(guī)格書ISO/IEC138181-6)。
另外,在執(zhí)行裝置3000中執(zhí)行的應(yīng)用程序也可以是記錄在SD卡(Secure Digital memory card安全數(shù)碼存儲卡)、CD-ROM(Compact Disk Read Only Memory光驅(qū))、DVD(DigitalVersatile Disk數(shù)字多用光盤)、Blu-RayDisc(藍光盤)等上的Java應(yīng)用程序。
這種情況下,應(yīng)用程序取得程序3210是從這些記錄介質(zhì)讀出應(yīng)用程序的程序。
另外,在執(zhí)行裝置3000中執(zhí)行的應(yīng)用程序也可以是記錄在存在于執(zhí)行裝置3000內(nèi)的ROM3500上的Java應(yīng)用程序。
這種情況下,應(yīng)用程序取得程序3210是從ROM3500向RAM3600讀出Java應(yīng)用程序的程序。
(2)本實施方式中,應(yīng)用程序取得程序3210等是Java語言記述的Java程序,也可以由具有同等功能的本機語言記述的程序或硬件實現(xiàn)。
另外,在Java虛擬機中執(zhí)行的應(yīng)用程序不限于以Java語言記述,也可以由C++等其他面向?qū)ο笳Z言記述。
(3)本實施方式中,安全強度2811設(shè)為“0”~“2”這3個階段,但不限于此。
例如,也可以把安全強度設(shè)定為4個階段以上,也可以是需要加密數(shù)據(jù)和不需要這2個階段。
(4)本實施方式中,應(yīng)用程序1001的元數(shù)據(jù)1400包含啟動類名1410和安全強度信息1420,但也可以包括除此之外的信息。
另外,也可以不指定安全強度,而在元數(shù)據(jù)1400內(nèi)指定加密算法及密鑰長度。
而且,也可以是,在應(yīng)用程序1001不包含元數(shù)據(jù)1400的情況下,加密判斷部2110將該應(yīng)用程序的安全強度信息看作“0”,或者看作在執(zhí)行裝置3000中能夠處理的最高等級的安全強度。
(5)本實施方式中,應(yīng)用程序1001作為一個文件構(gòu)成,但應(yīng)用程序類1200、數(shù)據(jù)文件1300、元數(shù)據(jù)1400也可以是分別的文件。另外,也可以把元數(shù)據(jù)1400嵌入應(yīng)用程序類1200中。
(6)實施方式中,根據(jù)應(yīng)用程序1001的安全強度信息1420,類的安全強度標(biāo)志1217統(tǒng)一決定,但也可以對每個類設(shè)定該安全標(biāo)志1217。
例如,需要加密的類的安全強度1217為“開”,不需要加密的類為“關(guān)”等。另外,也可以對每個類上設(shè)定安全強度信息1420。
(7)本實施方式中,對對象數(shù)據(jù)2512整體進行加密,但也可以分別單獨地加密字段。
另外,也可以在加密字段時只加密基本型的字段,不進行對參照型的字段的加密。此時,在不能識別參照型字段的情況下,需要表示是否對每個字段加密的標(biāo)志。
由此,可以高速實現(xiàn)需要訪問很多的參照型字段的堆管理部2400所進行的垃圾回收。
(8)還可以將使CPU執(zhí)行用于實現(xiàn)實施方式中所示的執(zhí)行裝置的各功能的各控制處理(參照圖2等)的程序,記錄在記錄介質(zhì)或者通過各種通信通道等流通、頒布。這樣的記錄介質(zhì)有IC卡、光盤、軟盤、ROM、閃存等。被流通、頒布的程序通過存儲在機器中的CPU可讀取的存儲器等上而可供使用,通過該CPU執(zhí)行程序來實現(xiàn)實施方式中所示的應(yīng)用程序裝置的各功能。
<現(xiàn)有技術(shù)的說明>
如圖11所示,具備該以往的數(shù)據(jù)保護功能的計算機在中央處理裝置203的內(nèi)部具備進行數(shù)據(jù)解密處理的加密數(shù)據(jù)解讀單元204、進行加密處理的數(shù)據(jù)加密單元205、數(shù)據(jù)緩沖器206和程序執(zhí)行單元207,在將處于中央處理裝置203的外部的加密數(shù)據(jù)202讀入中央處理裝置203內(nèi)的數(shù)據(jù)緩沖器206時進行解密,由程序執(zhí)行單元207處理之后,由數(shù)據(jù)加密單元205加密,再輸出到中央運算裝置的外部。
工業(yè)實用性可以保護執(zhí)行Java應(yīng)用程序時生成的數(shù)據(jù)不被竊聽、篡改,特別是在今后深入開展的Java應(yīng)用程序的下載分發(fā)業(yè)務(wù)中,在保護內(nèi)容作者的權(quán)利的情況等中非常有用。
作為下載分發(fā)業(yè)務(wù),例如在便攜式電話中,NTT DoCoMo提供稱作i-應(yīng)用程序的服務(wù)。該服務(wù)是,便攜式電話終端從互聯(lián)網(wǎng)上的應(yīng)用程序分發(fā)服務(wù)器下載Java程序,在終端上執(zhí)行。另外,在歐洲,制定了稱作DVB-MHP(Digital Video Broadcasting-MultimediaHome Platform數(shù)字視頻廣播-多媒體家庭平臺)的格式,已經(jīng)開始了依據(jù)格式的運用。在基于DVB-MHP標(biāo)準(zhǔn)的數(shù)字廣播中,數(shù)字TV接收在播出波上多路復(fù)用的Java程序,并執(zhí)行。
權(quán)利要求
1.一種執(zhí)行裝置,執(zhí)行以面向?qū)ο笳Z言制作的應(yīng)用程序,其特征在于,上述應(yīng)用程序包含具有1個以上的方法的1個以上的類、和表示有無保密的必要性的保密性信息,上述執(zhí)行裝置具有根據(jù)上述保密性信息判斷是否需要加密的加密判斷單元、和在執(zhí)行上述方法時將包含有上述方法所操作的數(shù)據(jù)的對象記錄在存儲器中的對象記錄單元,在由上述加密判斷單元判斷為需要加密時,上述對象記錄單元記錄包含有加密后的數(shù)據(jù)的對象。
2.如權(quán)利要求1所述的執(zhí)行裝置,其特征在于,上述保密性信息還包含表示保密程度的信息,上述執(zhí)行裝置還具備根據(jù)上述保密性信息決定加密方式的加密方式?jīng)Q定單元,當(dāng)由上述加密判斷單元判斷為需要加密時,上述對象記錄單元記錄下述對象,該對象包含有以上述加密方式?jīng)Q定單元決定的加密方式加密后的數(shù)據(jù)。
3.如權(quán)利要求1所述的執(zhí)行裝置,其特征在于,在改寫上述對象內(nèi)的數(shù)據(jù)時,在上述數(shù)據(jù)被加密的情況下,記錄加密后的數(shù)據(jù)。
4.如權(quán)利要求3所述的執(zhí)行裝置,其特征在于,記錄在上述存儲器中的對象具有表示對象內(nèi)的數(shù)據(jù)是否被加密的信息,在上述信息表示對象內(nèi)的數(shù)據(jù)被加密時,記錄加密后的數(shù)據(jù)。
5.如權(quán)利要求1所述的執(zhí)行裝置,其特征在于,上述執(zhí)行裝置還具備判斷數(shù)據(jù)是否是確定其他數(shù)據(jù)的所在位置所需的數(shù)據(jù)的判斷單元,在上述判斷單元判斷為數(shù)據(jù)是確定其他數(shù)據(jù)的所在位置所需的數(shù)據(jù)時,抑制加密。
6.一種執(zhí)行裝置,執(zhí)行程序,其特征在于,上述程序包含數(shù)據(jù)部分和表示有無保密的必要性的保密性信息,上述執(zhí)行裝置具有根據(jù)上述保密性信息判斷有無必要加密的加密判斷單元、和在執(zhí)行上述可執(zhí)行程序時將上述數(shù)據(jù)部分加載到主存儲器中的加載單元,上述加載單元在由上述加密判斷單元判斷為需要加密時,進行加密后,加載數(shù)據(jù)部分。
全文摘要
執(zhí)行裝置執(zhí)行以面向?qū)ο笳Z言制作的應(yīng)用程序,應(yīng)用程序包含具有1個以上的方法的1以上的類、和表示有無保密的必要性的保密性信息,根據(jù)上述保密性信息,判斷是否需要加密,在執(zhí)行方法時,將包含有上述方法所操作的數(shù)據(jù)的對象記錄在存儲器中,當(dāng)判斷為需要加密時,記錄所記錄的對象內(nèi)的數(shù)據(jù)已被加密的數(shù)據(jù)。
文檔編號G06F21/62GK1961275SQ200580018030
公開日2007年5月9日 申請日期2005年3月31日 優(yōu)先權(quán)日2004年4月2日
發(fā)明者中村智典 申請人:松下電器產(chǎn)業(yè)株式會社