执行装置的制作方法

文档序号:6655959阅读:360来源:国知局
专利名称:执行装置的制作方法
技术领域
本发明关于防止程序的窃听及篡改的技术,尤其是关于在执行程序时防止程序被窃听及篡改的技术。
背景技术
近几年来,在以个人计算机为代表的数字电视及便携式电话机等具有信息处理功能的装置中执行各种应用程序(以下简称“应用”)。
这些应用程序形式各种各样,有些是原本装入在该装置内的,有些是用户购买后加载的,此外,还有一些是由程序分发服务提供的等等。所谓利用程序分发服务的应用程序,例如通过互联网下载,或者在数字广播的广播波上多路复用后发送。
这样,现在在具有可以执行应用程序的功能的装置(下面称“执行装置”)中,执行用途·目的各种各样的程序。
另外,发生程序被篡改或者数据被盗的非法行为。这种非法行为阻碍了顺利实施程序分发服务等,因此开发了防止程序篡改等的技术。
例如,存在在CPU(中央处理装置Central Processing Unit)外部的存储器中放置加密后的程序并在读取到CPU时进行解密的技术(参照专利文献1、图11)。如果是该方法,由于很难进行在使用调试器等并参照存储器、或者改写存储器的内容来追踪程序的动作这样的方法下的程序解析,所以作为结果,可以防止程序的篡改及数据的窃听的可能性增大。
专利文献1日本特开平2-297626号公报然而,由于对置于存储器上的所有程序进行加密,在每次CPU需要时进行解密处理,并且在每次写入存储器时进行加密处理,因此,存在执行速度变慢的问题。

发明内容
于是,本发明的目的在于提供一种不但可以防止篡改·窃听那些不希望被篡改或窃听的数据等、还不用担心程序执行速度减慢的执行装置。
为了解决上述课题,本发明的执行装置是一种执行以面向对象语言制作的应用程序的执行装置,其特征在于,上述应用程序包含具有1个以上的方法的1个以上的类、和表示有无保密的必要性的保密性信息,上述执行装置具有根据上述保密性信息判断是否需要加密的加密判断单元、和在执行上述方法时将包含有上述方法所操作的数据的对象记录在存储器中的对象记录单元,在由上述加密判断单元判断为有必要加密时,上述对象记录单元记录包含有加密后的数据的对象。
发明效果本发明的执行装置具备上述构成,由此在执行应用程序的期间,可以只对记录在主存储器中的数据进行加密,因此,减少了加密等所需的处理时间,并且,可以使得在应用程序中处理的数据很难被窃听·篡改。
也就是说,程序通常由指令部分和数据部分组成,当想予以保护的是数据时,只对该数据进行加密就可以。其结果,当访问指令部分时,就不需要加密解密的处理时间,可以在作为整体保护想要保护的部分的同时,把处理时间抑制在最小限度上。
这里,保密性信息所示有无保密的必要性的对象也可以是应用程序整体这样的单位,类单位、方法单位以及字段单位等。
而且,也可以是,上述保密性信息还包含表示保密程度的信息,上述执行装置还具备根据上述保密性信息决定加密方式的加密方式决定单元,当由上述加密判断单元判断为需要加密时,上述对象记录单元记录下述对象,该对象包含有以上述加密方式决定单元决定的加密方式加密后的数据。
由此,执行装置可以根据应用程序的保密程度更换加密算法,因此,可以考虑应用程序的重要性和应用程序的执行速度,来决定加密方式。
这里,也可以是,保密性信息不仅表示是否应加密的的信息,还表示应以怎样的等级保护、或应使用什么样的算法、应使用多少长度的加密密钥等信息。
另外,也可以是,在改写上述对象内的数据时,在上述数据被加密的情况下,记录加密后的数据。
另外,也可以是,记录在上述存储器中的对象具有表示对象内的数据是否被加密的信息,在上述信息表示对象内的数据被加密时,记录加密后的数据。
由此,执行装置即使在改写应用程序的数据时,也可以加密数据,因此,在应用程序执行中数据被保护。
另外,也可以是,上述执行装置还具备判断数据是否是确定其他数据的所在位置所需的数据的判断单元,在上述判断单元判断出数据是确定其他数据的所在位置所需的数据时,抑制加密。
由此,执行装置可以不加密要加密的数据中的所谓参照型的数据,所以可以抑制垃圾回收时的处理速度的降低。
这是由于,即使不加密参照型的数据其本身,如果加密其参照目标的数据,也可以实现保护数据的目的。另外,由于在垃圾回收时改写参照型数据的情况下,不需要加密解密的处理,所以处理速度提高。
另外,本发明的执行装置是执行程序的执行装置,其特征在于,上述程序包含数据部分和表示有无保密的必要性的保密性信息,上述执行装置具有根据上述保密性信息判断有无必要加密的加密判断单元、和在执行上述可执行程序时将上述数据部分加载到主存储器中的加载单元,上述加载单元在由上述加密判断单元判断为需要加密时,进行加密后,加载数据部分。
本发明的执行装置具备上述构成,由此在程序执行的期间,可以只对需要加密的数据部分加密,再加载到主存储器中,因此减少了加密等所需的处理时间,并且可以使程序所处理的数据难以被盗窃·篡改。


图1是表示有关本发明的执行装置的组成的图;图2是表示虚拟机2000的组成的功能方框图;图3是表示加密强度信息2810的组成及内容例的图;图4是表示应用程序文件1000内的应用程序的组成及内容例的图;图5是表示通过加载器2200在方法区2600生成的类信息1210的组成及内容例的图;图6是表示加密算法信息2820的组成及内容例的图;图7(a)是表示对象2510的组成例的图,图7(b)是表示对象2510的内容例的图;图8是表示执行装置3000的处理的流程图;图9是表示应用程序注册处理的流程图;图10是表示对象的生成处理的流程图;图11是表示现有技术的组成的图。
标号说明1000----应用程序文件1200----应用程序类1210----类信息1300----数据文件1400----元数据1400----元信息1410----启动类名1420----安全强度信息1610----应对处理信息2000----虚拟机2100----应用程序注册部2110----加密判断部2200----加载器2210----类加载器2220----验证器2230----JIT编译器2300----解释器2310----解密部2320----加密部2400----堆管理部2500----堆区2510----对象2600----方法区2700----本地类库2800----加密信息存储部
2810----加密强度信息2820----加密算法信息3000----执行装置3100----应用程序3200----应用程序控制部3210----应用程序取得程序3300----OS3400----CPU3500----ROM3600----RAM具体实施方式
<概要>
有关本发明的执行装置着眼于,由于在执行装置中执行的每个应用程序的用途·目的不同从而每个应用程序的安全条件不同的情况,以及与应用程序本身相比该应用程序所处理的数据中保密性高的情况比较多的情况。
这里,安全条件不同指的是,因应用程序不同,要保护的数据不同,而且,还有保密性的程度不同。
也就是说,在执行不需要数据保密的应用程序时,希望极力减少与执行速度降低相伴的加密解密处理,此外,在执行对保密性非常高的数据进行处理的应用程序时,即使执行速度多少有些迟缓,也最好尽可能地使用强度高的加密算法来保护数据。
本发明的特征在于,可以根据处理数据的重要度,自由改变加密的程度。
应用程序所处理的数据的保密性程度是在制作该应用程序时只有作者或者其用户才能够知道的。
因此,有关本发明的执行装置中,直接访问数据等的程序具有确定生成该数据的应用程序的功能。
也就是说,通过确定所生成的应用程序,可以判断是否是处理保密性高的数据的应用程序所生成的数据,由此可以仅仅加密保密性高的数据。
结果,可以说,本执行装置具有在将加密所引起的执行时间的降低抑制在最小限度的同时防止数据的窃听的数据保护功能。
此外,可以根据应用程序所要求的保密性程度,选择加密算法的强度或密钥。
下面,说明有关本发明实施方式的执行装置。
本实施方式中,说明关于在Java虚拟机上执行的Java应用程序。
<结构>
图1是表示有关本发明的执行装置的组成的图。
执行装置3000具有应用程序3100、虚拟机2000、应用程序控制部3200、OS(Operating System操作系统)3300、CPU(CentralProcessing Unit中央处理单元)3400、ROM(Read Only Memory只读存储器)3500及RAM(Random Access Memory随机存取存储器)3600。
执行装置3000除了具有执行应用程序的功能外,还具有各个装置所特有的功能(没有图示)。具体地说,本执行装置3000相当于数字电视、机顶盒、DVD记录器、蓝光盘记录器(Blu-RayDisc)、汽车导航终端、便携式电话、PDA等搭载有Java(注册商标、以下相同)虚拟机的所有电子设备。
这里,执行本执行装置3000的应用程序的功能指的是,和通常搭载在个人计算机或数字家用电器等上的软件执行装置一样的装置。例如,如果执行装置3000是数字电视,则执行把接收的数字数据转换为图像并显示的应用程序。
首先,应用程序3100是在本执行装置3000所执行的应用程序,是从本装置外的应用程序文件1000下载的。设该应用程序文件1000中装入加密后的Java应用程序。
虚拟机2000是依次解析并执行以Java语言记述的程序的Java虚拟机。换言之,是软件程序的虚拟机2000,仿真虚拟的CPU,解析执行Java的指令代码。
设本实施方式中的虚拟机具有把字节码翻译为CPU3400可以理解的执行形式的称作JIT编译器的功能。
也就是说,以Java语言记述的源程序通过字节码编译器转换为字节码。该字节码指的是,不依赖于硬件的中间码。设该字节码装入应用程序文件1000内。
本实施方式的虚拟机读出该字节码,把由JIT编译器翻译成执行形式的内容加载到存储器中。
而且,Java虚拟机具有各种结构,如由可以直接执行一部分或者全部字节码的处理器、和执行在处理器中不能直接执行的字节码的解释器构成等(参照书籍“Java Language Specification(ISBN0-201-63451-1)”等)。
另外,应用程序控制部3200具有执行并控制如下载应用程序3100,或者启动虚拟机2000等这样的执行应用程序所需的处理的功能。
OS3300是由平行执行其他子程序的核心程序及库构成的技术的总称,把虚拟机2000作为子程序执行。例如,有Linux等。
CPU3400具有执行虚拟机2000、OS3300、应用程序3100等的功能。
RAM3600具体地说是由SRAM(Static Random Access Memory静态随机存取存储器)、DRAM(Dynamic Random Access Memory动态随机存取存储器)等主存储器构成,当CPU3400进行处理时,用于临时保存数据。
ROM3500具体地说由闪存和硬盘等非易失性存储器构成,存储由CPU3400指示的数据和程序。
图2是表示虚拟机2000的组成的功能框图。
虚拟机2000具有应用程序注册部2100、加载器2200、解释器2300、堆管理部2400、堆区2500、方法区2600、本地类库2700及加密信息存储部2800。
另外,应用程序取得程序3210是应用程序控制部3200的程序之一,以Java语言记述,具有从应用程序文件100下载应用程序的功能。关于所下载的应用程序内容,使用图4在后面说明。
首先,说明虚拟机2000的各种功能部。
应用程序注册部2100具有如下功能,即从应用程序取得程序3210接受委托,判断有没有必要加密被委托注册的应用程序,在加密时,决定该方法等,并存储在加密信息存储部2800中。另外,具有制作被委托注册的应用程序用的类加载器对象的功能。
应用程序注册部2100具备加密判断部2110,加密判断部2110判断有没有必要加密应用程序取得程序3210所取得的应用程序,并判断执行装置3000是否可以实现该加密等级。
若加密判断部2110判断为可以加密应用程序,则应用程序注册部2100决定用于加密该应用程序所生成的数据的加密算法和加密密钥,并使所决定的加密算法等建立对应,存储在加密信息存储部2800中。
加载器2200具有从应用程序文件1000和本地类库2700等把类文件加载到方法区2600的功能。关于类文件,使用图5在后面说明。
加载器2200具备类加载器2210、验证器2220、JIT编译器2230。
类加载器2210具有从应用程序文件1000读入并加载类文件的功能。另外,类加载器2210还具有卸载类的功能。是从虚拟机2000去除执行结束而不需要的类的功能。
然后,验证器2220具有判断类的数据形式不完备和类所包含的字节码的安全性的功能。加载器2200对于在验证器2220中判断为不妥的类,不进行加载。
JIT编译器2230具有把字节码翻译为CPU3400可以理解的执行形式的功能。
然后,解释器2300具有解释并执行由加载器2200加载的字节码的功能,在Java虚拟机中进行核心处理。
该解释器2300具备解密部2310,解密部2310具有在读出堆区2500的数据时、在数据被加密的情况下在处理之前进行解密的功能。另外,具备加密部2320,该加密部2320具有对存储在堆区2500上的数据进行加密的情况下在写入数据之前进行加密的功能。
堆管理部2400具有在解释器2300的控制下在堆区上制作或删除对象的功能。
还有,堆管理部2400还具有进行垃圾回收的功能。垃圾回收指的是,开放在应用程序执行中不需要的工作存储器并可以使其再利用于其他用途的功能。
这里,堆管理部2500指的是制作对象的存储器,方法区2600指的是加载类文件的目的存储器。这些由RAM3600制作。
另外,本地类库2700是从Java应用程序调用的库,将OS3300和执行装置3000所具备的硬件、子程序等中提供的功能提供给Java应用程序。
加密信息存储部2800具有存储加密所需的信息的功能,由RAM3600制作。
另外,设本执行装置3000具有通常的Java虚拟机所具有的管理线程的功能部和堆栈区等(没有图示)。
而且,通过CPU执行存储在执行装置3000的存储器上或者硬盘上的程序,来实现执行装置3000的各功能。
<数据>
下面,关于本执行装置中使用的主要数据,使用图3至图6说明。
图3是表示加密强度信息2810的组成及内容例的图。
该加密强度信息2810存储在加密强度信息存储部2800中。
加密强度信息2810由安全性强度2811及数据加密强度1812构成。
安全性强度2811表示由应用程序处理的数据的安全性的高度,例如,设为“0”到“2”3个阶段。对每个应用程序指定该“0”到“3”的值。
另外,数据加密强度1812表示加密数据时的程度。例如,安全强度2811是“0”情况下的数据加密强度2812是加密“不需要”。也就是说,表示不进行加密。安全强度2811是“1”以上意味着需要数据加密。还有,安全强度2811是“2”以上时,表示需要比安全强度2811是“1”还要强的加密算法,或者需要使用长的密钥进行加密。
接着,图4是表示装入应用程序文件1000内的应用程序的组成及内容例的图。
应用程序1001包含应用程序类1200、数据文件1300和元数据1400。
应用程序1200是组成应用程序的1个以上的类文件的集合。
数据文件1300是执行应用程序时使用的数据。具体地说,相当于图像文件和语音文件等。
另外,元数据1400中保持有与应用程序1001有关的各种信息。例如,元数据1400包含启动类名1410和安全强度信息1420。
启动类名1410是在应用程序类1200中最初应执行的类名。
安全强度信息1420表示在执行应用程序类1200时被虚拟机2000要求的安全强度。该安全强度信息1420所表示的信息和加秘强度信息2810的安全强度2811相同的信息。
该安全强度信息1420的指定方法例如是作为字节码编译器的选项进行设定。
图5是表示通过加载器2200在方法区2600上生成的类信息1210的构成及内容的图。
类信息1210包括类名1211、父类1212、接口表1213、方法表1214、字段表1215、类加载器ID1216及安全标志1217等。
类名1211是该类的类名。
父类1212是对表示该类的父类的内部形式的参照。
这里,参照指的是指针或索引等表示该数据的实体的表现。
接口表1213是对该类所安装的接口的参照。
方法表1214是该类所具备的方法的一览。
字段表1215是该类所具备的字段的一览。
另外,类加载器ID1216表示加载该类的类加载器对象。具体地说,装入有类加载器ID2821(参照图6)。
安全标志1217表示该类是否是安全类。
这里,安全类指的是,在安全强度信息1420中含有被指定安全强度2811“1”或者“2”的应用程序1001的应用程序类1200。
当该安全标志1217成为“开(ON)”的情况,在该类中处理的数据被判断为需要加密。
另外,当加载类时,通过加载器2200设定该安全标志1217。本实施方式中,通过应用程序1001的安全强度信息1420,统一决定类的安全标志1217。也就是说,需要加密的应用程序的所有类的安全标志1217设为“开”。
图6是表示加密算法信息2820的构成及内容例的图。
该加密算法信息2820存储在加密信息存储部2800,由应用程序注册部2100制作。
加密算法信息2820包括类加载器2821、类加载器地址2822、加密算法2823及加密密钥2824。
类加载器ID2821是应用程序注册部2100唯一分配给类加载器的标识符。也就是说,对一个应用程序,存在一个类加载器2210。本实施方式中,设从“0”依次上升。
类加载器地址2822是从虚拟机2000请求注册的类加载器对象的地址。
例如,执行由类加载器ID是“0”的类加载器加载的应用程序时所生成的数据表示不加密,而执行由类加载器ID是“2”的类加载器加载的应用程序时所生成的数据表示,以“AES(AdvancedEncryption Standard高级加密标准)”算法加密,该密钥是“YYYY ”。
<动作>
下面,使用图7~图10说明有关本发明的执行装置3000的动作。
图7(a)是表示对象2510的构成例的图,在动作说明中根据需要进行参照。首先,说明图7。
对象2510是在类内的方法被执行时制作的,在堆区2500中制作。
对象2510由对象头2511和对象数据2512组成,对象头2511中包括该对象所属的类信息2551、对象数据2512的大小即数据大小2552、表示对象数据2512是否被加密的加密标志2553等。该加密标志2553是“开”时,对象数据2512被加密。
当该方法所属的类也就是说类信息2551中参照的类的安全标志1217是“开”的情况,该加密标志2553设为“开”。
类信息2551是通过类加载器在方法区2600中生成的类的内部表现的地址。类信息1210(参照图5)的开头地址装入类信息2551。
另外,对象数据2512是通过Java应用程序的动作生成的执行时数据,具有0个以上的字段。字段数由对象所属的类唯一决定。
字段有称作基本型的处理数值和文字的字段、和称作参照型的表示参照其他对象的字段这2种。本实施方式中,设对象数据2512整体被加密。
图7(b)是表示对象2510的内容例的图。
例如,类信息2551参照存在于地址“0xdeadbeef”的内部表现,对象数据的数据大小2552是“24”。加密标志2553的值是“1(开)”,由此表示该对象被加密。
根据存在于地址“0xdeadbeef”的内部表现,参照类加载器ID1216(参照图5),可以确定加载该类的类加载器对象。该类加载器对象的ID即类加载器ID1216设为“2”时,以该类加载器ID1216“2”为关键字检索加密算法信息2820(参照图6)。由于加密算法信息2820的类加载器ID2821是“2”,因此,可知该对象数据2512以“AES”算法,使用密钥“YYYY”被加密。
由解释器2300的加密部2320进行实际的加密,由解释器2300的解密部2310进行解密。
下面,使用图8至图10,说明执行装置的处理。
本实施方式中,在提供执行装置的电源的情况下,执行事先决定的应用程序。
图8是表示执行装置3000的处理的流程图。
首先,用户接通执行装置3000的电源(步骤S810)。
通电后的CPU3400启动OS3300(步骤S820)。
启动后的OS3300进行指示,以便启动虚拟机2000(步骤S830),来启动应用程序取得程序3210。
接受了指示的虚拟机2000启动应用程序取得程序3210(步骤S840)。
通过虚拟机2000启动的应用程序取得程序3210从应用程序文件读入应用程序1001,对应用程序注册部2100委托应用程序的注册处理。这里,只读入应用程序1001内的元数据1400(参照图4),传递给应用程序注册部2100。根据应用程序的执行,适时地读入其他的应用程序类1200和数据文件1300。
在该应用程序注册处理中,判断应用程序1001的保密性程度,决定加密的算法等。另外,生成用于该应用程序1001的类加载器对象(步骤S850)。也就是说,当结束该应用程序注册处理时,在图6所示的加密算法信息2820中注册有相应的应用程序的加密信息。关于应用程序注册处理的详细情况,使用图9在后面说明。
结束了应用程序的注册处理之后的应用程序注册部2100将该消息返给应用程序取得程序3210。接受了注册处理结束的消息的应用程序取得程序3210向解释器2300通知启动类名1410,委托加载。
解释器2300对类加载器对象指示加载由启动类名1410(参照图4)指定的类(下面称“启动类”)。类加载器对象把所指定的类加载在方法区2600中(步骤S860)。在该时刻,在方法区2600中制作图5所示的类信息1210,并设定类加载器ID1216和安全标志1217。
这时,由验证器2220检查合法性,由JIT编译器2230转换为本地码。
由此,应用程序被加载到虚拟机2000上,成为可执行的状态。
当类加载器对象所进行的启动类的加载结束时,解释器2300通过执行启动类的方法,进行应用程序的启动。
执行方法指的是,即委托堆管理部2400,在堆区2500中制作对象(步骤S870),并执行方法(步骤S880)。
执行新的方法时,根据需要加载所属的类(步骤S860),制作对象(步骤S870),执行方法。
在堆区2500中制作对象的时刻,当需要加密时,对象数据2512被加密,并设定加密标志。
因此,在访问该对象的字段时,参照对象头2511的加密标志2553,如果是“开”,则在读出时对所读出的数据进行解密后再处理,另外,在写入时写入加密后的数据。如果加密标志2553是“关闭(OFF)”,则在不进行加密、解密的情况下访问字段。加密算法等的取得方法和图7(b)中说明的相同。
构成虚拟机2000的所有功能部在对对象进行读入操作之前,检查对象头2511内的加密标志2553,在要加密的情况下,由解密部2310对其解密,并读入。另外,在对对象进行写入操作之前,检查对象头2511内的加密标志2553,在对象被加密的情况下,由加密部2320写入加密后的数据。
1.应用程序注册处理使用图9说明。图9是表示应用程序注册处理的流程图。
启动了虚拟机2000的应用程序取得程序3210从应用程序文件读入应用程序1001,对应用程序注册部2100委托应用程序的注册处理(步骤S910)。
被委托了注册处理的应用程序注册部307读出委托注册的应用程序中所包含的安全强度信息1420(参照图4)(步骤S920)。这时,如果应用程序被加密,则在读出安全强度信息1420之前进行解密。
然后,判断执行装置3000是否具备与所读出的安全强度信息1420对应的加密功能(步骤S930)。委托加密判断部2110进行该判断。
具体地说,若假设安全强度信息1420是“2”,则加密判断部2110,从加密信息存储部2800读出加密强度信息2810,读出与安全强度2811是“2”相对应的数据加密强度2812是“强”的情况。
在执行装置3000支持该数据加密强度2812是“强”的加密方法的情况下,判断为执行装置3000具备与所读出的安全强度信息1420相对应的加密功能。而且,在本执行装置中预先决定哪个等级的加密被支持,并且应用程序注册部2100将其存储。
当加密判断部2110判断出执行装置3000具备与所读出的安全强度信息1420相对应的加密功能时(步骤S930是),应用程序注册部2100生成用于加载应用程序的类加载器对象(步骤S940)。
然后,根据所读出的安全强度信息1420,决定加密算法和加密中使用的密钥长度,生成加密密钥(步骤S950)。加密密钥设为,即使是相同的应用程序,页在每次注册时随机生成。因为这样更加难以解读。另外,也可以使用比安全强度信息1420所指定的算法还要强的加密算法和密钥。
应用程序注册部2100将类加载器ID2821、类加载器对象的地址2822、加密算法2823和加密密钥2824建立对应,注册在加密算法信息2820中(步骤S960)。
当执行装置3000不具备与安全强度信息1420相对应的加密功能时,中断应用程序的启动(步骤S970)。通过不启动应用程序,来保护应用程序的保密性。
2.对象生成处理使用图10说明。图10是表示对象的生成处理的流程图。
当结束类加载器对象所进行的启动类的加载时(参照图8、步骤S860),解释器2300执行启动类的方法,由此进行应用程序的启动。
执行方法指的是,首先对堆管理部2400委托对象的制作。
接受了委托的堆管理部2400保证用于新的对象的存储区(步骤S1010)。
接着,解释器2300检查当前类是否是安全类。这可以通过调查当前类的安全标志1217来判断。安全标志1217如果是“开”,则判断为是安全类,即不需要加密的类。
在判断为当前类是安全类时(步骤S1020是),在对象头2511内的加密标志上设定表示对象被加密的“1”(步骤S1040)。
标志设定后,加密对象数据2512(步骤S1040)。这里的加密方法通过读出加密算法信息2820(参照图6)来决定。
在判断为当前类不是安全类时(步骤S1020否),在对象头2511内的加密标志上设定表示对象没有被加密的“0”(步骤S1050)。
这里,当前类指的是定义了执行中的方法的类。
解释器2300在执行Java方法时,在RAM3600上制作称作Java帧的数据结构。在每次调用呼出Java方法时生成一个Java帧,在方法执行结束时破坏Java帧。由多个线程执行解释器2300,但在给予了控制权的线程的任意地点,对执行中的方法只存在一个有效的Java帧。将该帧称作当前帧,因此将执行中的方法称作当前方法。定义该当前方法的类就是当前类。
也就是说,当前类在某一瞬间决定为1个。
<补充>
以上,基于本实施方式说明了有关本发明的执行装置,也可以对该执行装置做部分变形,本发明当然不限于上述实施方式。即,(1)实施方式中,在执行装置3000中执行的应用程序设为,应用程序取得程序3210从本装置外的应用程序文件1000下载,然而也可以设为从互联网上的服务器下载。
这种情况下,应用程序取得程序3210具有下述功能,即根据TLS(Transport Layer Security传输层安全)、HTTP(HypertextTransfer Protocol超文本传输协议)等协议,下载Java应用程序。
这里,TLS是通过加密防止通信时的数据的窃听、篡改的数据传输方式(参照RFC2246)。此外,HTTP是在互联网上的数据通信中一般使用的数据传输方式(参照RFC2616)。
而且,RFC(Request For Comments征求意见)指的是将互联网上的技术标准化的IETF(Internet Engineering Task Force互联网工程工作小组)的公文,综合了协议等各种技术的使用。
另外,在执行装置3000中执行的应用程序也可以是,作为数字广播的数据广播而嵌入MPEG(Moving Picture Coding ExpertsGroup运动图像专家组)2传输流内的Java应用程序。
这种情况下,应用程序取得程序3210是在执行装置3000内读出嵌入传输流内的Java应用程序的程序。
作为在MPEG2传输流内嵌入Java程序的方法,例如有DSMCC方式。DSMCC方式指的是,在MPEG2传输流的数据包中对由在计算机中使用的目录和文件组成的文件系统编码的方法(参照MPEG规格书ISO/IEC138181-1、MPEG规格书ISO/IEC138181-6)。
另外,在执行装置3000中执行的应用程序也可以是记录在SD卡(Secure Digital memory card安全数码存储卡)、CD-ROM(Compact Disk Read Only Memory光驱)、DVD(DigitalVersatile Disk数字多用光盘)、Blu-RayDisc(蓝光盘)等上的Java应用程序。
这种情况下,应用程序取得程序3210是从这些记录介质读出应用程序的程序。
另外,在执行装置3000中执行的应用程序也可以是记录在存在于执行装置3000内的ROM3500上的Java应用程序。
这种情况下,应用程序取得程序3210是从ROM3500向RAM3600读出Java应用程序的程序。
(2)本实施方式中,应用程序取得程序3210等是Java语言记述的Java程序,也可以由具有同等功能的本机语言记述的程序或硬件实现。
另外,在Java虚拟机中执行的应用程序不限于以Java语言记述,也可以由C++等其他面向对象语言记述。
(3)本实施方式中,安全强度2811设为“0”~“2”这3个阶段,但不限于此。
例如,也可以把安全强度设定为4个阶段以上,也可以是需要加密数据和不需要这2个阶段。
(4)本实施方式中,应用程序1001的元数据1400包含启动类名1410和安全强度信息1420,但也可以包括除此之外的信息。
另外,也可以不指定安全强度,而在元数据1400内指定加密算法及密钥长度。
而且,也可以是,在应用程序1001不包含元数据1400的情况下,加密判断部2110将该应用程序的安全强度信息看作“0”,或者看作在执行装置3000中能够处理的最高等级的安全强度。
(5)本实施方式中,应用程序1001作为一个文件构成,但应用程序类1200、数据文件1300、元数据1400也可以是分别的文件。另外,也可以把元数据1400嵌入应用程序类1200中。
(6)实施方式中,根据应用程序1001的安全强度信息1420,类的安全强度标志1217统一决定,但也可以对每个类设定该安全标志1217。
例如,需要加密的类的安全强度1217为“开”,不需要加密的类为“关”等。另外,也可以对每个类上设定安全强度信息1420。
(7)本实施方式中,对对象数据2512整体进行加密,但也可以分别单独地加密字段。
另外,也可以在加密字段时只加密基本型的字段,不进行对参照型的字段的加密。此时,在不能识别参照型字段的情况下,需要表示是否对每个字段加密的标志。
由此,可以高速实现需要访问很多的参照型字段的堆管理部2400所进行的垃圾回收。
(8)还可以将使CPU执行用于实现实施方式中所示的执行装置的各功能的各控制处理(参照图2等)的程序,记录在记录介质或者通过各种通信通道等流通、颁布。这样的记录介质有IC卡、光盘、软盘、ROM、闪存等。被流通、颁布的程序通过存储在机器中的CPU可读取的存储器等上而可供使用,通过该CPU执行程序来实现实施方式中所示的应用程序装置的各功能。
<现有技术的说明>
如图11所示,具备该以往的数据保护功能的计算机在中央处理装置203的内部具备进行数据解密处理的加密数据解读单元204、进行加密处理的数据加密单元205、数据缓冲器206和程序执行单元207,在将处于中央处理装置203的外部的加密数据202读入中央处理装置203内的数据缓冲器206时进行解密,由程序执行单元207处理之后,由数据加密单元205加密,再输出到中央运算装置的外部。
工业实用性可以保护执行Java应用程序时生成的数据不被窃听、篡改,特别是在今后深入开展的Java应用程序的下载分发业务中,在保护内容作者的权利的情况等中非常有用。
作为下载分发业务,例如在便携式电话中,NTT DoCoMo提供称作i-应用程序的服务。该服务是,便携式电话终端从互联网上的应用程序分发服务器下载Java程序,在终端上执行。另外,在欧洲,制定了称作DVB-MHP(Digital Video Broadcasting-MultimediaHome Platform数字视频广播-多媒体家庭平台)的格式,已经开始了依据格式的运用。在基于DVB-MHP标准的数字广播中,数字TV接收在播出波上多路复用的Java程序,并执行。
权利要求
1.一种执行装置,执行以面向对象语言制作的应用程序,其特征在于,上述应用程序包含具有1个以上的方法的1个以上的类、和表示有无保密的必要性的保密性信息,上述执行装置具有根据上述保密性信息判断是否需要加密的加密判断单元、和在执行上述方法时将包含有上述方法所操作的数据的对象记录在存储器中的对象记录单元,在由上述加密判断单元判断为需要加密时,上述对象记录单元记录包含有加密后的数据的对象。
2.如权利要求1所述的执行装置,其特征在于,上述保密性信息还包含表示保密程度的信息,上述执行装置还具备根据上述保密性信息决定加密方式的加密方式决定单元,当由上述加密判断单元判断为需要加密时,上述对象记录单元记录下述对象,该对象包含有以上述加密方式决定单元决定的加密方式加密后的数据。
3.如权利要求1所述的执行装置,其特征在于,在改写上述对象内的数据时,在上述数据被加密的情况下,记录加密后的数据。
4.如权利要求3所述的执行装置,其特征在于,记录在上述存储器中的对象具有表示对象内的数据是否被加密的信息,在上述信息表示对象内的数据被加密时,记录加密后的数据。
5.如权利要求1所述的执行装置,其特征在于,上述执行装置还具备判断数据是否是确定其他数据的所在位置所需的数据的判断单元,在上述判断单元判断为数据是确定其他数据的所在位置所需的数据时,抑制加密。
6.一种执行装置,执行程序,其特征在于,上述程序包含数据部分和表示有无保密的必要性的保密性信息,上述执行装置具有根据上述保密性信息判断有无必要加密的加密判断单元、和在执行上述可执行程序时将上述数据部分加载到主存储器中的加载单元,上述加载单元在由上述加密判断单元判断为需要加密时,进行加密后,加载数据部分。
全文摘要
执行装置执行以面向对象语言制作的应用程序,应用程序包含具有1个以上的方法的1以上的类、和表示有无保密的必要性的保密性信息,根据上述保密性信息,判断是否需要加密,在执行方法时,将包含有上述方法所操作的数据的对象记录在存储器中,当判断为需要加密时,记录所记录的对象内的数据已被加密的数据。
文档编号G06F21/62GK1961275SQ200580018030
公开日2007年5月9日 申请日期2005年3月31日 优先权日2004年4月2日
发明者中村智典 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1