[go: up one dir, main page]

WO2005096120A1 - 実行装置 - Google Patents

実行装置 Download PDF

Info

Publication number
WO2005096120A1
WO2005096120A1 PCT/JP2005/006290 JP2005006290W WO2005096120A1 WO 2005096120 A1 WO2005096120 A1 WO 2005096120A1 JP 2005006290 W JP2005006290 W JP 2005006290W WO 2005096120 A1 WO2005096120 A1 WO 2005096120A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
encryption
application
class
execution device
Prior art date
Application number
PCT/JP2005/006290
Other languages
English (en)
French (fr)
Inventor
Tomonori Nakamura
Original Assignee
Matsushita Electric Industrial Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to US10/593,719 priority Critical patent/US20080270806A1/en
Priority to EP05727355A priority patent/EP1736848A1/en
Priority to JP2006511799A priority patent/JPWO2005096120A1/ja
Publication of WO2005096120A1 publication Critical patent/WO2005096120A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Definitions

  • the present invention relates to a technique for preventing eavesdropping and falsification of a program, and more particularly to a technique for preventing a program from being eavesdropped and falsified during execution of the program.
  • applications have been executed by devices having an information processing function, such as personal computers, digital televisions, and mobile phones.
  • These applications include those originally built into the device, those purchased and loaded by the user, and those provided by a program distribution service.
  • the programs provided by the program Toshin S-Service are, for example, downloaded via the Internet or multiplexed with digital broadcast waves and transmitted.
  • executing device As described above, currently, a device having a function of executing an application (hereinafter, referred to as an "executing device") is executing programs for various purposes. You.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2-297626
  • an object of the present invention is to provide an execution device that prevents tampering and eavesdropping of data and the like that are not likely to be tampered or stolen, and that does not cause a concern about a decrease in program execution speed.
  • an execution device of the present invention is an execution device that executes an application program created in an object-oriented language, wherein the application program has one or more methods.
  • Class and confidentiality information indicating the necessity of confidentiality, and based on the confidentiality information, an encryption determining means for determining whether or not the cryptographic power is necessary; and
  • the method further comprises: an object recording unit that records an object including data operated by the method in a memory, and when the encryption determining unit determines that encryption is necessary, The object recording means records an object including encrypted data.
  • the execution device can encrypt only data recorded in the main memory while an application is being executed by providing the above-described configuration.
  • the required processing time can be reduced, and it is possible to make it difficult to eavesdrop or alter data handled by the application.
  • a program is usually composed of an instruction part and a data part. If what is desired to be protected is data, only that data needs to be encrypted. As a result, when accessing the instruction section, the processing time for encryption / decryption is not required, and the processing time can be minimized while protecting what is desired to be protected as a whole.
  • the target of the necessity of concealment indicated by the confidentiality information may be a unit of the entire application, a class unit, a method unit, a field unit, or the like.
  • the confidentiality information further includes information indicating a degree of confidentiality
  • the execution device further includes an encryption method determination unit that determines an encryption method based on the confidentiality information, When it is determined that encryption is necessary by the means, the object recording means records an object including data encrypted by the encryption method determined by the encryption method determination means. It may be.
  • the execution device can change the encryption algorithm depending on the degree of secrecy of the application. Therefore, the execution device determines the encryption scheme in consideration of the importance of the application and the execution speed of the application. Can be done.
  • the confidentiality information includes not only information on whether or not to perform encryption, but also on what level to protect, what algorithm should be used, and how long. It may indicate information such as whether to use an encryption key.
  • the object recorded in the memory has information indicating whether or not the data in the object is encrypted, and the information is obtained by encrypting the data in the object.
  • the execution device can encrypt the data even when rewriting the data of the application, so that the data is protected during the execution of the application. Further, a determination means is provided for determining whether the data is data necessary for specifying the location of another data, and the determination means determines that the data is data necessary for specifying the location of the other data. In the case of such data, encryption may be suppressed.
  • the execution device can encrypt the so-called reference type data among the data to be encrypted, so that it is possible to avoid a reduction in the processing speed at the time of garbage collection. ⁇ It comes.
  • the purpose of protecting the data can be achieved by encrypting the data of the reference destination. Also, garbage In the case of rewriting the reference type data at the time of the lexion, the processing speed is improved because the processing of the encryption / decryption becomes unnecessary.
  • the execution device of the present invention is an execution device that executes a program, wherein the program includes a data part and confidentiality information indicating whether or not confidentiality is required.
  • the encryption determining unit determines that the encryption is necessary
  • the loading unit encrypts the data and loads the data unit.
  • the execution device having the above-described configuration, allows only the data portion that needs to be encrypted to be loaded into the main memory while the program is being executed. As a result, it is possible to reduce the processing time required for encryption and the like, and to make it difficult to wiretap and falsify data handled by the program.
  • FIG. 1 is a diagram showing a configuration of an execution device according to the present invention.
  • FIG. 2 is a functional block diagram showing a configuration of a virtual machine 2000.
  • FIG. 3 is a diagram showing a configuration and an example of contents of encrypted information.
  • FIG. 4 is a diagram showing a configuration and an example of contents of an application contained in an application file 1000.
  • FIG. 5 is a diagram showing a configuration and an example of contents of class information 1210 generated in a method area 2600 by a loader 2200.
  • FIG. 6 is a diagram showing a configuration and an example of contents of encryption algorithm information 2820.
  • FIG. 7A is a diagram illustrating a configuration example of an object 2510
  • FIG. 7B is a diagram illustrating a content example of the object 2510.
  • FIG. 8 is a flowchart showing a process of an execution device 3000.
  • FIG. 9 is a flowchart showing an application registration process.
  • FIG. 10 is a flowchart showing an object generation process.
  • FIG. 11 is a diagram showing a configuration of a conventional technique.
  • the execution device has different security requirements for each application since each application executed by the execution device has a different purpose, and confidentiality of data handled by the application rather than the application itself. They focus on the fact that they are often high.
  • the present invention is characterized in that the degree of encryption can be freely changed according to the importance of data to be handled.
  • the degree of confidentiality of data handled by an application can be known only to the creator or the user when creating the application.
  • the execution device has a function in which a program for directly accessing data or the like specifies an application that has generated the data.
  • the execution apparatus is provided with a data protection function for preventing data eavesdropping while minimizing a reduction in execution time due to encryption.
  • FIG. 1 is a diagram illustrating a configuration of an execution device according to the present invention.
  • the execution device 3000 is an application 3100, a virtual machine 2000, an application ff 3200, an OS (Operating System) 3300, a CPU (Central Processing Unit) 3400, a ROM (Read Only Memory) 3500, and a RAM (Random Access Memory) 3600. It is composed of
  • the execution device 3000 has a function specific to each device in addition to a function of executing an application (not shown).
  • the execution device 3000 is, specifically, a Java (registered trademark, hereinafter the same), such as a digital TV, a set-top box, a DVD recorder, a Blu-RayDisc (BD) recorder, a car navigation terminal, a mobile phone, and a PDA. This applies to all electronic devices with virtual machines.
  • the function of executing the application of the execution device 3000 is the same as the software execution means mounted on an ordinary personal computer, digital home appliance, or the like.
  • the execution device 3000 is a digital television
  • the application that converts the received digital data into an image and displays the image is executed.
  • the application 3100 is an application executed by the execution device 3000 and downloaded from the application file 1000 outside the device. It is assumed that the application file 1000 contains an encrypted ⁇ Java application.
  • the virtual machine 2000 is a Java program that sequentially analyzes and executes programs written in the Java language. It is a virtual machine.
  • a virtual machine 2000 which is a software program, simulates a virtual CPU and analyzes and executes Java instruction codes.
  • the virtual machine in the present embodiment has a function called a JIT compiler that translates Knot code into an executable format that can be understood by the CPU 3400.
  • a source program described in the Java language is converted into bytecode by a bytecode compiler.
  • This bytecode is an intermediate code that does not depend on hardware. This bytecode is assumed to be in the application file 1000.
  • the virtual machine of the present embodiment reads out this Knot code and loads it into a memory, which is translated into an executable form by a JIT compiler.
  • the Java virtual machine has various configurations such as a processor that can directly execute a part or all of bytecode and an interpreter that can execute the bytecode directly and cannot be executed by the processor. (See book “Java Language Specification (ISBNO-201-63451-1))".
  • the application control unit 3200 has a function of executing and controlling processes required for executing the application, such as downloading the application 3100 and starting the virtual machine 2000.
  • the OS 3300 is a general term for a technology configured with a kernel and a library for executing other subprograms in parallel, and executes the virtual machine 2000 as a subprogram.
  • Linux is powerful.
  • the CPU 3400 has a function of executing the virtual machine 2000, the OS 3300, the application 3100, and the like.
  • the RAM 3600 is, specifically, a static random access memory (SRAM),
  • It is composed of a primary storage memory such as a Dynamic Random Access Memory, and is used to temporarily store data when the CPU 3400 performs processing.
  • a primary storage memory such as a Dynamic Random Access Memory
  • the ROM 3500 is specifically composed of a nonvolatile memory such as a flash memory or a hard disk, and stores data and programs specified by the CPU 3400.
  • FIG. 2 is a functional block diagram showing the configuration of the virtual machine 2000.
  • the virtual machine 2000 includes an application registration unit 2100, a loader 2200, an interpreter 2300, a heap management unit 2400, a heap area 2500, a method area 2600, a native class library 2700, and an encryption information storage unit 2800.
  • the application acquisition program 3210 is one of the programs of the application control unit 3200, is described in the Java language, and has a function of downloading an application as an application file 1000. The contents of the application to be downloaded will be described later with reference to FIG.
  • the application registration unit 2100 receives the request from the application acquisition program 3210, determines whether or not the application requested to be registered needs encryption, and if encryption is to be performed, determines the method, etc., and stores the encryption information. It has the function of storing it in the unit 2800. It also has the function of creating a class loader object for the application for which registration has been requested.
  • the application registration unit 2100 includes an encryption determining unit 2110.
  • the encryption determining unit 2110 determines whether the application acquired by the application acquisition program 3210 needs to be encrypted, and determines the encryption level. It is determined whether the execution device 3000 can realize the force.
  • the application registration unit 2100 determines an encryption algorithm and an encryption key for encrypting data generated by the application. Then, the determined encryption algorithm and the like are associated and stored in the encryption information storage unit 2800.
  • the loader 2200 has a function of loading a class file from the application file 1000 or the native class library 2700 into the method area 2600.
  • the class file will be described later with reference to FIG.
  • the loader 2200 includes a class loader 2210, a verifier 2220, and a JIT compiler 2230.
  • the class loader 2210 has a function of reading and loading a class file from the application file 1000.
  • the class loader 2210 also has a function of unloading a class. This function removes unnecessary classes from the virtual machine 2000 after execution has ended.
  • the verifier 2220 reports that the data format of the class is not correct, It has a function to determine the security of the code.
  • the loader 2200 does not load any class that is determined to be invalid by the verifier 2220! /.
  • the JIT compiler 2230 has a function of translating a bytecode into an executable format that the CPU 3400 can understand.
  • the interpreter 2300 has a function of interpreting and executing the bytecode loaded by the loader 2200, and performs core processing for the Java virtual machine.
  • the interpreter 2300 includes a decryption unit 2310.
  • the decryption unit 2310 has a function of decrypting the data before processing if the data is encrypted when the data in the heap area 2500 is read.
  • an encryption unit 2320 is provided, and when encrypting data stored in the heap area 2500, the encryption unit 2320 has a function of encrypting data before writing the data. .
  • the heap management unit 2400 has a function of creating an object in the heap area and deleting the object under the control of the interpreter 2300.
  • the heap management unit 2400 has a function of performing garbage collection.
  • Garbage collection is a function that frees up working memory that is no longer needed during application execution and makes it reusable for other uses.
  • the heap area 2500 is used to store the memory in which the object is created.
  • the native class library 2700 is a library called from a Java application, and provides functions provided by the OS 3300 and the hardware and subprograms included in the execution device 3000 to the Java application.
  • the encryption information storage unit 2800 has a function of storing information necessary for encryption, and is created in the RAM3600.
  • the execution device 3000 has a function part for managing threads, a stack area, and the like (not shown), which are included in a normal Java virtual machine.
  • each function of the execution device 3000 is realized by the CPU executing a program stored in the memory or the hard disk of the execution device 3000.
  • FIG. 3 is a diagram showing a configuration and an example of contents of the encryption information.
  • This encryption degree information 2810 is stored in the encryption information storage unit 2800.
  • the encryption degree information 2810 includes a security strength 2811 and a data encryption strength 1812.
  • the security strength 2811 indicates the security level of the data handled by the application. In the example, there are three levels from “0” to “2”. The value from “0" to "3" is specified for each application.
  • the data encryption strength 1812 indicates the degree of data encryption. For example, the encryption is “unnecessary” for the data encryption strength 2812 when the security strength 2811 is “0”. In other words, this indicates that encryption is not performed.
  • a security strength of 2811 “1” or more means that data encryption is required. Further, a security strength of 2811 “2” or more indicates that it is necessary to perform encryption using a stronger encryption algorithm or a longer key than the security strength of 2811 “1”.
  • FIG. 4 is a diagram showing a configuration and an example of contents of the application contained in the application file 1000.
  • the application 1001 includes an application class 1200, a data file 1300, and metadata 1400!
  • An application class 1200 is a set of one or more class files that constitute an application.
  • the data file 1300 is data used by the application at the time of execution. Specifically, it corresponds to an image file or a sound file.
  • the metadata 1400 holds various information on the application 1001.
  • the metadata 1400 includes an activation class name 1410 and security strength information 1420.
  • the activation class name 1410 is the first class to be executed in the application class 1200. It is the name of Russ.
  • the security strength information 1420 indicates the security strength required for the virtual machine 2000 when executing the application class 1200.
  • the information represented by the security strength information 1420 is the same as the security strength 2811 of the encryption information 2810.
  • the method of specifying the security strength information 1420 is set, for example, as an option of a bytecode compiler.
  • FIG. 5 is a diagram showing a configuration and an example of contents of class information 1210 generated in the method area 2600 by the loader 2200.
  • the class information 1210 includes a class name 1211, a parent class 1212, an interface table 1213, a method table 1214, a fino red tape tape 1215, a class loader ID 1216, a secure flag 1217, and the like.
  • the class name 1211 is the class name of the class.
  • Parent class 1212 is a reference to an internal form that represents the parent class of the class.
  • the reference refers to an expression indicating a substance of the data, such as a pointer or an index.
  • the interface table 1213 is a reference to the interface implemented by the class.
  • the method table 1214 is a list of methods provided in the class.
  • the field table 1215 is a list of fields included in this class.
  • the class loader ID 1216 indicates a class loader object that has loaded the class. Specifically, it contains the class loader ID 2821 (see Figure 6).
  • the secure flag 1217 indicates whether the class is a secure class or not.
  • the secure class is a class included in the application class 1200 of the application 1001 in which the security strength 2811 “1” or “2” is specified in the security strength information 1420.
  • the secure flag 1217 is Is set.
  • the security flag 1217 of the class is determined based on the security strength information 1420 of the application 1001. That is, the secure flags 1217 of all the classes of the application requiring encryption are set to “ON”.
  • FIG. 6 is a diagram showing a configuration and an example of contents of the encryption algorithm information 2820.
  • the encryption algorithm information 2820 is stored in the encryption information storage unit 2800 and is created by the application registration unit 2100.
  • the encryption algorithm information 2820 includes a class loader ID 2821, a class loader address 2822, an encryption algorithm 2823, and an encryption key 2824.
  • the class loader ID 2821 is an identifier uniquely assigned to the class loader by the application registration unit 2100. That is, one class loader 2210 exists for one application. In the present embodiment, numbers are assigned in ascending order from “0”.
  • the class loader address 2822 is the address of the class loader object requested to be registered by the virtual machine 2000.
  • the data generated by the application loaded by the class loader with the class loader ID “0” at the time of execution indicates that the data is not encrypted, and the data is generated by the class loader with the class loader ID “2”.
  • the data generated by the loaded application at runtime is "AES (AES)
  • FIG. 7A is a diagram illustrating a configuration example of the object 2510, and is a description of the operation. refer. First, FIG. 7 will be described.
  • the object 2510 is created when a method in the class is executed, and is created in the heap area 2500.
  • the object 2510 includes an object header 2511 and object data 2512.
  • the object header 2511 includes class information 2551 to which the object belongs, a data size 2552 which is the size of the object data 2512, and object data 2512. And an encryption flag 2553 that indicates whether or not is encrypted. If the encryption flag 2553 is “ON”, it means that the object data 2512 has been encrypted.
  • This encryption flag 2553 is set to "ON" when the secure flag 1217 of the class to which this method belongs, that is, the class referenced by the class information 2551, is "ON".
  • the class information 2551 is the address of the internal representation of the class generated in the method area 2600 by the class loader.
  • the start address of the class information 1210 enters the class information 2551.
  • the object data 2512 is runtime data generated by the operation of the Java application, and has zero or more fields. The number of fields is uniquely determined by the class to which the object belongs.
  • FIG. 7B is a diagram showing an example of the content of the object 2510.
  • the class information 2551 refers to the internal representation at the address “Oxdeadbeef”, and the data size 2552 of the object data is “24”.
  • the value of the encryption flag 2553 is "1 (ON)", it indicates that this object is encrypted! /.
  • the class loader object that has loaded this class can be specified. Assuming that the class loader ID 1216, which is the ID of this class loader object, is “2”, the encryption algorithm information 2820 (see FIG. 6) is searched using the class loader ID 1216 “2” as a key. Since the class loader ID 2821 of the symbol algorithm information 2820 is “2”, it is clear that the corresponding object data 2512 is encrypted using the key “YYYY” by the “AES” algorithm.
  • the actual encryption is performed by the encryption unit 2320 of the interpreter 2300, and the decryption is performed by the encryption unit 2310 of the interpreter 2300.
  • FIG. 8 is a flowchart showing processing of execution device 3000.
  • the user turns on the power of the execution device 3000 (step S810).
  • the energized CPU 3400 starts OS3300 (step S820).
  • the activated OS 3300 activates the virtual machine 2000 (step S830), and instructs to activate the application acquisition program 3210.
  • the virtual machine 2000 that has received the instruction starts the application acquisition program 3210 (Step S840).
  • the application acquisition program 3210 started by the virtual machine 2000 reads the application 1001 from the application file, and requests the application registration unit 2100 to register the application.
  • the metadata 1400 (see FIG. 4) in the application 1001 is read and passed to the application registration unit 2100.
  • the other application class 1200 and data file 1300 will be read in time according to the execution of the application.
  • step S850 the degree of confidentiality of the application 1001 is determined, and an encryption algorithm and the like are determined. Also, a class loader object for this application 1001 is generated (step S850). That is, when the application registration processing is completed, the encryption algorithm information of the corresponding application is registered in the encryption algorithm information 2820 shown in FIG. The details of the application registration process will be described later with reference to FIG.
  • the application registration unit 2100 that has completed the application registration process returns this to the application acquisition program 3210.
  • the application acquisition program 3210 that has received the notification that the registration processing has been completed notifies the interpreter 2300 of the activation class name 1410 and requests loading.
  • the interpreter 2300 instructs the class loader object to load the class specified by the activation class name 1410 (see FIG. 4) (hereinafter referred to as “activation class”).
  • activation class the class loader object loads the specified class into the method area 2600 (Step S860).
  • the class information 1210 as shown in Fig. 5 has been created in the method area 2600. This means that the class loader ID 1216 and the secure flag 1217 are set.
  • the validity is checked by the verifier 2220, and is converted into the native code by the JIT compiler 2230.
  • the application is now loaded into the virtual machine 2000 and is ready to run.
  • the interpreter 2300 starts the application by executing the method of the startup class.
  • step S870 request the heap management unit 2400 to create an object in the heap area 2500
  • step S880 execute the method
  • step S860 load the class to which it belongs as needed (step S860), create an object (step S870), and execute the method.
  • the object data 2512 is encrypted, and the encryption flag is set.
  • All the functional units constituting the virtual machine 2000 check the encryption flag 2553 in the object header 2511 before performing a read operation on the object, and when the object is encrypted, It is decoded by the decoding unit 2310 and read. In addition, before performing a write operation on the object, the encryption flag 2553 in the object header 2511 is checked, and if the object is encrypted, the data encrypted by the encryption unit 2320 is checked. Write.
  • FIG. 9 is a flowchart showing the application registration process.
  • the application acquisition program 3210 that started the virtual machine 2000 The application 1001 is read from the file, and the application registration unit 2100 is requested to register the application (step S910).
  • the application registration unit 307 requested to perform the registration process reads the security strength information 1420 (see FIG. 4) included in the application requested to be registered (step S920). At this time, if the application has been encrypted, it is decrypted before reading the security strength information 1420.
  • step S930 it is determined whether or not the execution device 3000 has an encryption function corresponding to the read security strength information 1420 (step S930). This determination is performed by requesting the encryption determination unit 2110.
  • the encryption determining unit 2110 reads out the encryption degree information 2810 from the encryption information storage unit 2800, and 2811 reads out that the data encryption strength 2812 corresponding to “2” is “strong”.
  • the execution device 3000 supports the encryption method whose data encryption strength 2812 is “strong”, it is determined that the execution device 3000 has an encryption function corresponding to the read security strength information 1420. In this execution device, which level of encryption is supported is determined in advance, and it is assumed that the application registration unit 2100 stores it.
  • step S930 determines that the execution device 3000 has an encryption function corresponding to the read security strength information 1420 (step S930: YES)
  • the application registration unit 2100 Then, a class loader object for loading the application is generated (step S940).
  • an encryption algorithm and a key length used for encryption are determined according to the read security strength information 1420, and an encryption key is generated (step S950).
  • the encryption key is randomly generated each time it is registered, even for the same application. It is also the power to become more readable.
  • a stronger V ⁇ encryption algorithm or key than specified by the security strength information 1420 may be used!
  • the application registration unit 2100 stores the class loader ID 2821 and the address 2 of the class loader object. 822, the encryption algorithm 2823, and the encryption key 2824 are associated with each other and registered in the encryption algorithm information 2820 (step S960).
  • step S970 the application activation is interrupted (step S970). By not launching the application, the confidentiality of the application is protected.
  • FIG. 10 is a flowchart showing an object generation process.
  • step S860 the interpreter 2300 starts the application by executing the method of the startup class.
  • the heap management unit 2400 is requested to create an object.
  • the heap management unit 2400 that has received the request secures a new memory area for the object (step S1010).
  • interpreter 2300 checks whether the current class is a secure class. This can be determined by examining the secure flag 1217 of the current class. If the secure flag 1217 is "0 ⁇ ", it is determined that the class is a secure class, that is, a class that requires encryption.
  • step S 1020 If the current class is determined to be a secure class (step S 1020: YES), “1” indicating that the object is encrypted in the encryption flag in the object header 2511! / Is set (step S1040).
  • the object data 2512 is encrypted (step S1040).
  • the encryption method here is determined by reading the encryption algorithm information 2820 (see Fig. 6).
  • Step S1020 NO
  • “0” indicating that the object is not encrypted is included in the encryption flag in the object header 2511. Is set (step S1050).
  • the current class refers to a class that defines a method being executed.
  • the interpreter 2300 creates a data structure called a Java frame on the RAM 3600 when executing the Java method.
  • Java frame One is generated for each invocation of the ava method, and is destroyed when the method execution ends.
  • the interpreter 2300 is active for the executing method anywhere in the thread that has been given control over the execution of multiple threads. There is only one ava frame! This frame is called the current frame, and the method being executed there is called the current method.
  • the class that defines the current method is the current class.
  • the current class is determined to be one at a certain moment.
  • the execution device according to the present invention has been described based on the embodiment.
  • the execution device can be partially modified, and the present invention is not limited to the above embodiment. That is,
  • the application executed by the execution device 3000 is an application acquisition program 3210.
  • the application is assumed to have been downloaded from the application file 1000 outside the device.
  • the application is to be downloaded from a server on the Internet. Is also good.
  • the application acquisition program 3210 uses TLS (Transport Layer Security), HTT
  • TLS is a data transfer method that prevents eavesdropping and falsification of data during communication by means of encryption (see RFC2246).
  • HTTP is a data transfer method generally used in data communication on the Internet (see RFC2616).
  • RFC Request For Comments
  • the application executed by the execution device 3000 is a digital broadcast data broadcast, which is included in an MPEG (Moving Picture Coding Experts Group) 2 transport stream. May be embedded ⁇ Java application!
  • the application acquisition program 3210 is a program for reading the Java application embedded in the transport stream into the execution device 3000.
  • the DSMCC method is a method of encoding a file system consisting of directories and files used in a computer in the packet of an MPEG2 transport stream (MPEG standard ISOZIEC 138181-1, MPEG standard) ISOZIEC 138181-6).
  • SD card Secure Digital memory card
  • CD-ROM Compact Disk Read Only Memory
  • DVD Digital Versatile Disk Blu-Ray Disc, etc. It may be an application.
  • the application acquisition program 3210 is a program that reads the application with these recording medium powers.
  • the application executed by the execution device 3000 may be a Java application recorded in the ROM 3500 in the execution device 3000.
  • the application acquisition program 3210 is a program for reading the Java application from the ROM 3500 to the RAM 3600.
  • the application executed by the JAVA virtual machine is not limited to an application described in the Java language, but may be an application described in another object thinking language such as C ++.
  • the security strength 2811 has three levels of “0” to “2”.
  • the present invention is not limited to this.
  • the security strength may be set in four or more steps, or two steps in which data encryption is necessary and unnecessary.
  • the metadata 1400 of the application 1001 includes the activation class name 1140 and the security strength information 1420.
  • the metadata 1400 may include other information.
  • the encryption algorithm and the key length may be specified in the metadata 1400.
  • the encryption / decision determination unit 2110 regards the security strength information of the application as “0” or sets the highest and lowest levels that the execution device 3000 can use.
  • the application 1001 is configured as one file, but the application class 1200, the data file 1300, and the metadata 1400 may be separate files. Further, the metadata 1400 may be embedded in the application class 1200.
  • the strength that the secure flag 1217 of the class is determined based on the security strength information 1420 of the application 1001 may be set for each class.
  • the secure flag 1217 of the class that requires encryption is set to "ON", and the class that does not require encryption is set to "OFF”.
  • the security strength information 1420 may be set for each class.
  • the force fields for encrypting the entire object data 2512 may be individually encrypted.
  • a program for causing the CPU to execute each control process (see FIG. 2 and the like) for realizing each function of the execution device described in the embodiment is recorded on a recording medium or transmitted through various communication paths or the like. Then, it can be distributed and distributed.
  • a recording medium includes an IC card, an optical disk, a flexible disk, a ROM, a flash memory, and the like.
  • the distributed and distributed programs are provided for use by being stored in a memory or the like that can be read by a CPU of the device, and each function of the execution device described in the embodiment is executed by the CPU executing the program. Is achieved.
  • a computer having the conventional data protection function includes an encrypted data decryption means 204 for performing data decryption processing and a data encryption means 205 for performing encryption processing inside a central processing unit 203. , A data buffer 206, and a program executing means 207.
  • the encrypted data 202 outside the central processing unit 203 is decrypted when read into the data buffer 206 in the central processing unit 203, and is processed by the program executing means 207. Later, the data is encrypted by the data encryption unit 205 and output to the outside of the central processing unit.
  • NTT DoCoMo provides a service called i-appli.
  • a mobile phone terminal downloads a Java program from an application distribution server on the Internet and executes it on the terminal.
  • DVB-MHP Digital Video Broadcasting-Multimedia Home Platform

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

 実行装置は、オブジェクト指向言語で作成されたアプリケーションプログラムを実行するものであって、アプリケーションは、1以上のメソッドを有する1以上のクラスと秘匿の必要性の有無を表す秘匿性情報とを含んでおり、前記秘匿性情報に基づいて、暗号化が必要であるか否かを判断し、メソッドを実行する際に、メソッドが操作するデータを含むオブジェクトをメモリに記録し、暗号化が必要であると判断された場合は、記録されるオブジェクト内のデータは暗号化されたデータを記録する。

Description

実行装置
技術分野
[0001] 本発明は、プログラムの盗聴および改竄を防止する技術に関し、特に、プログラム 実行時に、プログラムが盗聴および改竄されることを防止する技術に関する。
背景技術
[0002] 近年、様々なアプリケーション 'プログラム(以下、「アプリケーション」という。)が、パ ソコンをはじめ、デジタルテレビや携帯電話機などの情報処理機能を有した装置で 実行されている。
これらのアプリケーションは、元々その装置に組み込まれていたものや、ユーザが 購入し乗せたもの、また、プログラム配信サービスによって提供されているものなど様 々である。プログラム酉 S信サービスによるものとは、例えば、インターネットを介してダ ゥンロードしたり、デジタル放送の放送波に多重化されて送信されてくるものである。
[0003] このように、現在、アプリケーションを実行できる機能を有して 、る装置(以下、「実 行装置」という。)では、多種多様な用途 '目的のプログラムが実行されていることにな る。
その一方で、プログラムが改竄されたり、データが盗まれたりという不正行為が起こ つている。このような不正行為は、プログラム配信サービス等の円滑な実施の障害と なることから、プログラムの改竄等を防止する技術が開発されている。
[0004] 例えば、 CPU (中央処理装置: Central Processing Unit)の外部のメモリには、暗号 化したプログラムを置くこととし、 CPUに読込む際に復号するという技術である(特許 文献 図 11参照)。この方法であれば、デバッガ等を用いてメモリを参照したり、メモ リの内容を書き換えてプログラムの動作を追ったりという方法によるプログラムの解析 が非常に困難となり、結果としてプログラムの改竄やデータの盗聴を防止できる可能 性が増大することになる。
特許文献 1:特開平 2 - 297626号公報
発明の開示 発明が解決しょうとする課題
[0005] しかし、メモリ上に置くプログラムの全てを暗号ィ匕し、 CPUが必要とする都度に復号 化処理を行い、メモリに書き出す都度に暗号ィ匕処理を行うため、実行速度が遅くなつ てしまうという問題がある。
そこで、本発明は、改竄されたり、盗まれたりしては困るようなデータ等の改竄 '盗聴 を防止しつつ、プログラム実行速度の低下が気にならないような実行装置の提供を 目的とする。
課題を解決するための手段
[0006] 上記課題を解決する為に、本発明の実行装置は、オブジェクト指向言語で作成さ れたアプリケーションプログラムを実行する実行装置であって、前記アプリケーション プログラムは、 1以上のメソッドを有する 1以上のクラスと秘匿の必要性の有無を表す 秘匿性情報とを含んでおり、前記秘匿性情報に基づいて、暗号ィヒが必要である力否 かを判断する暗号化判断手段と、前記メソッドを実行する際に、前記メソッドが操作す るデータを含むオブジェクトをメモリに記録するオブジェクト記録手段とを備え、前記 暗号化判断手段で暗号化が必要であると判断された場合にぉ 、ては、前記オブジェ タト記録手段は、暗号ィ匕されたデータを含むオブジェクトを記録することを特徴とする 発明の効果
[0007] 本発明に係る実行装置は、上述の構成を備えることにより、アプリケーションが実行 されている間、メインメモリに記録されるデータのみを暗号化しておくことができるので 、暗号ィ匕等に必要な処理時間を減らし、かつ、アプリケーションで扱うデータの盗聴' 改竄を困難にすることができるようになる。
すなわち、プログラムは通常、命令部とデータ部とで構成されるが、保護したいもの がデータである場合は、そのデータのみを暗号ィ匕すればよい。その結果として、命令 部にアクセスする場合には、暗号化復号化の処理時間が不要になり、全体として保 護したいものは保護しつつ、処理時間も最小限度に抑えることが出来るようになる。
[0008] ここで、秘匿性情報が示す秘匿の必要性の有無の対象は、アプリケーション全体と いう単位、クラス単位、メソッド単位、さらにはフィールド単位などであってもよい。 また、前記秘匿性情報は、更に、秘匿の度合いを示す情報を含み、前記実行装置 は、更に、前記秘匿性情報に基づいて暗号化方式を決定する暗号方式決定手段を 備え、前記暗号化判断手段で暗号化が必要であると判断された場合においては、前 記オブジェクト記録手段は、前記暗号方式決定手段で決定された暗号化方式で暗 号ィ匕されたデータを含むオブジェクトを記録することとしてもよい。
[0009] これにより実行装置は、アプリケーションの秘匿の度合いによって、暗号化のァルゴ リズムを換えることができるので、アプリケーションの重要度とアプリケーションの実行 速度とを考慮して、暗号ィ匕方式を決めることが出来るようになる。
ここで、秘匿性情報は、暗号ィ匕をすべきか否かの情報のみならず、どのようなレべ ルで保護すべきか、また、どのようなアルゴリズムを使用すべき力、どのくらいの長さ の暗号鍵を使用すべきか等の情報を示すものであってもよい。
[0010] また、前記オブジェクト内のデータを書き換えるときは、前記データが暗号化されて
V、る場合は、暗号ィ匕されたデータを記録することとしてもよ!、。
また、前記メモリに記録されたオブジェクトは、オブジェクト内のデータが暗号ィ匕され ている力否かを示す情報を有し、前記情報がオブジェクト内のデータが暗号化されて
V、ることを示して 、る場合は、暗号ィ匕されたデータを記録することとしてもよ!、。
[0011] これにより実行装置は、アプリケーションのデータを書き換える際にも、データを暗 号ィ匕することができるので、アプリケーション実行中は、データが保護されるようになる また、前記実行装置は、更に、データが他のデータの所在位置特定に必要なデー タであるか否かを判別する判別手段を備え、前記判別手段が、他のデータの所在位 置特定に必要なデータであると判別したデータの場合は、暗号ィ匕を抑止することとし てもよい。
[0012] これにより実行装置は、暗号ィ匕するデータのうち、いわゆる参照型であるデータは 暗号化しないことができるので、ガーベージコレクションの際の処理速度の低下を抑 免ることがでさるよう〖こなる。
すなわち、参照型のデータそのものは暗号ィ匕せずとも、その参照先のデータを暗号 化しておけば、データを保護する目的は達せられるからである。また、ガーベージコ レクシヨンの際に参照型のデータを書き換える場合には、暗号ィ匕復号ィ匕の処理が不 要になることから、処理速度の向上につながる。
[0013] また、本発明の実行装置は、プログラムを実行する実行装置であって、前記プログ ラムは、データ部と秘匿の必要性の有無を表す秘匿性情報とを含んでおり、前記秘 匿性情報に基づいて、暗号化が必要であるか否かを判断する暗号化判断手段と、前 記実行可能プログラムを実行する際に、前記データ部をメインメモリにロードするロー ド手段とを備え、前記ロード手段は、前記暗号化判断手段で暗号化が必要であると 判断された場合は、暗号ィ匕してデータ部をロードすることを特徴とする。
[0014] 本発明に係る実行装置は、上述の構成を備えることにより、プログラムが実行されて いる間、暗号ィ匕が必要なデータ部のみを暗号ィ匕してメインメモリにロードすることがで きるので、暗号ィ匕等に必要な処理時間を減らし、かつ、プログラムで扱うデータの盗 聴 ·改竄を困難にすることができるようになる。
図面の簡単な説明
[0015] [図 1]本発明にかかる実行装置の構成を表す図である。
[図 2]仮想マシン 2000の構成を示す機能ブロック図である。
[図 3]暗号ィ匕度情報 2810の構成および内容例を示す図である。
[図 4]アプリケーションファイル 1000に入っているアプリケーションの構成および内容 例を示す図である。
[図 5]ローダ 2200によってメソッド領域 2600に生成されるクラス情報 1210の構成お よび内容例を示す図である。
[図 6]暗号アルゴリズム情報 2820の構成および内容例を示す図である。
[図 7]図 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 OS
3400 CPU
3500 ROM
3600 RAM
発明を実施するための最良の形態
[0017] <概要 >
本発明に係る実行装置は、実行装置で実行されるアプリケーション毎にその用途' 目的が異なることから、アプリケーション毎にセキュリティ要件が異なること、および、 アプリケーション自体よりもそのアプリケーションの扱うデータに秘匿性が高い場合が 多いことに着目したものである。
[0018] ここで、セキュリティ要件が異なるとは、アプリケーションによって、保護したいデータ が異なっており、またさらに、秘匿性の度合いが異なっているということである。
すなわち、データの秘匿性を必要としないアプリケーションを実行する場合には、実 行速度の低下を伴う暗号化、復号ィ匕の処理は極力減らしたほうが望ましぐまた、非 常に秘匿性の高いデータを取り扱うアプリケーションを実行する場合には、多少実行 速度が遅くなつても、可能な限り強度の高い暗号アルゴリズムを用いてデータを保護 したほうがよ 、こともあると 、うことである。
[0019] 本発明は、扱うデータの重要度に応じて、 自由に暗号ィ匕の度合いを変えることが可 能であることを特徴とするものである。
アプリケーションで扱うデータの秘匿性の度合いは、そのアプリケーションを作成す るときに、作成者またはそのユーザのみが知りうるものである。
従って、本発明に係る実行装置は、データを直接アクセス等するプログラムが、そ のデータを生成したアプリケーションを特定する機能を有する。
[0020] すなわち、生成したアプリケーションを特定することで、秘匿性の高いデータを扱う プログラムが生成したデータであるか否かを判別することができることになり、秘匿性 の高 、データのみを暗号ィ匕することができるようになる。
結果として、本実行装置は、暗号ィ匕による実行時間の低下を最小限に抑えつつデ ータの盗聴を防ぐデータ保護機能を備えて 、るものであると!/、える。
[0021] またさらに、アプリケーションに求められる秘匿性の度合いに応じて、暗号アルゴリ ズムの強度や鍵を選択できるものでもある。
以下、本発明の実施形態に係る実行装置について説明する。
本実施形態では、 Javaバーチャルマシン上で動 avaアプリケーションにつ 、て説 明する。
[0022] く構成〉
図 1は、本発明にかかる実行装置の構成を表す図である。
実行装置 3000は、アプリゲーシヨン 3100、仮想マシン 2000、アプリゲーシヨン ff¾ 御咅 3200、 OS (Operating System) 3300、 CPU (Central Processing Unit) 3400、 ROM (Read Only Memory) 3500および RAM (Random Access Memory) 3600で構 成される。
[0023] 実行装置 3000は、アプリケーションを実行する機能のほか、それぞれの装置特有 の機能を有する(図示していない)。本実行装置 3000は、具体的には、デジタルテレ ビ、セットトップボックス、 DVDレコーダー、 Blu—RayDisc (BD)レコーダー、カーナ ビ端末、携帯電話、 PDAなどの、 Java (登録商標、以下同様。)仮想マシンを搭載す る電子機器全般が該当する。
[0024] ここで、本実行装置 3000のアプリケーションを実行する機能とは、通常のパーソナ ルコンピュータやデジタル家電機器等に搭載されているソフトウェア実行手段と同様 のものである。例えば、実行装置 3000がデジタルテレビであれば、受信したデジタ ルデータを画像に変換し表示するアプリケーションを実行することになる。
まず、アプリケーション 3100は、本実行装置 3000で実行するアプリケーションであ つて、本装置外のアプリケーションファイル 1000からダウンロードしたものである。こ のアプリケーションファイル 1000には、暗号化され^ Javaアプリケーションが入って いるものとする。
[0025] 仮想マシン 2000は、 Java言語で記述されたプログラムを逐次解析し実行する Java バーチャルマシンである。言い換えれば、ソフトウェアプログラムである仮想マシン 20 00力 仮想の CPUをシミュレートして、 Javaの命令コードを解析実行する。
本実施形態での仮想マシンは、ノイトコードを CPU3400が理解可能な実行形式 に翻訳する JITコンパイラと呼ばれる機能を持つものとする。
[0026] すなわち、 Java言語で記述されたソースプログラムは、バイトコードコンパイラによつ てバイトコードに変換される。このバイトコードとは、ハードウェアに依存しない中間コ ードである。このバイトコードが、アプリケーションファイル 1000に入っているものとす る。
本実施形態の仮想マシンは、このノイトコードを読出し、 JITコンパイラで実行形式 に翻訳したものを、メモリにローデイングする。
[0027] 尚、 Javaバーチャルマシンは、一部もしくは全部のバイトコードを直接実行可能な プロセッサと、プロセッサでは直接実行できな 、バイトコードを実行するインタプリタか ら構成されるものなど、様々な構成がある(書籍「Java Language Specification ( ISBNO— 201— 63451— 1)」等参照)。
また、アプリケーション制御部 3200は、アプリケーション 3100をダウンロードしたり、 仮想マシン 2000を起動させるなどの、アプリケーションの実行に必要な処理を実行、 制御する機能を有する。
[0028] OS3300は、他のサブプログラムを平行して実行するカーネル及び、ライブラリで構 成される技術の総称であり、仮想マシン 2000をサブプログラムとして実行する。例え ば、 Linux等力ある。
CPU3400は、仮想マシン 2000、 OS3300、アプリケーション 3100等を実行する 機能を有する。
[0029] RAM3600は、具体的には SRAM (Static Random Access Memory)、 DRAM (
Dynamic Random Access Memory)等の一次記憶メモリで構成され、 CPU3400が処 理を行う際、一時的にデータを保存するために使用される。
ROM3500は、具体的にはフラッシュメモリーやハードディスク等の不揮発性メモリ で構成され、 CPU3400から指示されたデータやプログラムを記憶する。
[0030] 図 2は、仮想マシン 2000の構成を示す機能ブロック図である。 仮想マシン 2000は、アプリ登録部 2100、ローダ 2200、インタプリタ 2300、ヒープ 管理部 2400、ヒープ領域 2500、メソッド領域 2600、ネイティブクラスライブラリ 2700 および暗号化情報記憶部 2800で構成される。
また、アプリ取得プログラム 3210は、アプリケーション制御部 3200のプログラムの 1 つであり、 Java言語で記述されており、アプリケーションをアプリケーションファイル 10 00力もダウンロードする機能を有する。ダウンロードするアプリケーションの中身につ いては、図 4を用いて後で説明する。
[0031] まず、仮想マシン 2000の、各機能部について説明する。
アプリ登録部 2100は、アプリ取得プログラム 3210から依頼を受け、登録依頼され たアプリケーションの暗号ィ匕の必要性の有無、暗号ィ匕する場合は、その方法等を決 定し、暗号ィ匕情報記憶部 2800に記憶させる機能を有する。また、登録依頼されたァ プリケーシヨン用のクラスローダオブジェクトを作成する機能を有する。
[0032] アプリ登録部 2100は、暗号ィ匕判定部 2110を備え、暗号化判定部 2110が、アプリ 取得プログラム 3210が取得したアプリケーションの暗号化の必要性の有無の判断と 、その暗号ィ匕レベルを実行装置 3000が実現できる力否かを判定する。
暗号ィ匕判定部 2110が、アプリケーションの暗号ィ匕が可能であると判断したら、ァプ リ登録部 2100は、そのアプリケーションが生成するデータを暗号ィ匕する為の暗号ァ ルゴリズムと暗号鍵を決定し、決定した暗号アルゴリズムなどを対応づけて、暗号ィ匕 情報記憶部 2800に記憶させる。
[0033] ローダ 2200は、アプリケーションファイル 1000やネイティブクラスライブラリ 2700な どから、クラスファイルをメソッド領域 2600にロードする機能を有する。クラスファイル については、図 5を用いて後で説明する。
ローダ 2200は、クラスローダ 2210、ベリファイャ 2220、 JITコンパイラ 2230を備え ている。
[0034] クラスローダ 2210は、クラスファイルをアプリケーションファイル 1000から読込み口 ードする機能を有する。また、クラスローダ 2210は、クラスをアンロードする機能も有 する。実行が終了し不要になったクラスを仮想マシン 2000から取り除く機能である。 次に、ベリファイャ 2220は、クラスのデータ形式の不備や、クラスに含まれるノイト コードの安全性を判定する機能を有する。ローダ 2200は、ベリファイャ 2220におい て妥当ではな!/、と判定されたクラスはロードをしな!、。
[0035] JITコンパイラ 2230は、バイトコードを CPU3400が理解可能な実行形式に翻訳す る機能を有する。
次に、インタプリタ 2300は、ローダ 2200によりロードされたバイトコードを解釈、実 行する機能を有し、 Java仮想マシンにぉ 、て中核な処理を行う。
このインタプリタ 2300は、復号ィ匕部 2310を備え、復号ィ匕部 2310は、ヒープ領域 2 500のデータを読み出す際に、データが暗号ィ匕されて 、る場合に処理前に復号する 機能を有する。また、暗号ィ匕部 2320を備えており、この暗号ィ匕部 2320は、ヒープ領 域 2500に記憶するデータを暗号ィ匕する場合に、データを書込む前に暗号ィ匕する機 能を有する。
[0036] ヒープ管理部 2400は、インタプリタ 2300の制御の下、ヒープ領域にオブジェクトを 作成し、また、消去する機能を有する。
さらに、ヒープ管理部 2400は、ガベージコレクションを行う機能も有する。ガベージ コレクションとは、アプリケーション実行において不要になったワーキングメモリを開放 し、他の用途に再利用できるようにする機能である。
[0037] ここで、ヒープ領域 2500は、オブジェクトの作成されるメモリを 、 、、メソッド領域 26
00は、クラスファイルをロードする先のメモリをいう。これらは、 RAM3600に作成され る。
また、ネイティブクラスライブラリ 2700は、 Javaアプリケーションから呼び出されるラ イブラリであって、 OS3300や、実行装置 3000が備えているハードウェア、サブプロ グラム等で提供される機能を Javaアプリケーションへ提供している。
[0038] 暗号化情報記憶部 2800は、暗号化に必要な情報を記憶しておく機能を有し、 RA M3600に作成される。
また、本実行装置 3000は、通常の Javaバーチャルマシンが有する、スレッドを管理 する機能部や、スタック領域など(図示していない。)を有するものとする。
尚、実行装置 3000の各機能は、実行装置 3000のメモリ又はハードディスクに格納 されているプログラムを CPUが実行することにより実現される。 [0039] <データ >
以下、本実行装置で用いる主なデータについて、図 3から図 6を用いて説明する。 図 3は、暗号ィ匕度情報 2810の構成および内容例を示す図である。
この暗号化度情報 2810は、暗号化情報記憶部 2800に記憶されているものである
[0040] 暗号化度情報 2810は、セキュリティ強度 2811およびデータ暗号化強度 1812で 構成される。
セキュリティ強度 2811は、アプリケーションで扱うデータのセキュリティの高さを示す ものであり、例では、「0」から「2」の 3段階としている。この「0」から「3」までの値を、ァ プリケーシヨン毎に指定することになる。
[0041] また、データ暗号ィ匕強度 1812は、データを暗号ィ匕する場合の度合いを表す。例え ば、セキュリティ強度 2811「0」の場合のデータ暗号ィ匕強度 2812は、暗号化は「不要 」である。すなわち、暗号ィ匕は行わないことを示す。セキュリティ強度 2811「1」以上は データの暗号ィ匕が必要であることを意味している。さらにセキュリティ強度 2811「2」 以上では、セキュリティ強度 2811「1」よりも強力な暗号アルゴリズム、または長い鍵を 用いて暗号ィ匕を行う必要があることを表して 、る。
[0042] 次に、図 4はアプリケーションファイル 1000に入っているアプリケーションの構成お よび内容例を示す図である。
アプリケーション 1001は、アプリケーションクラス 1200と、データフアイノレ 1300と、 メタデータ 1400を含んで!/、る。
アプリケーションクラス 1200は、アプリケーションを構成する 1つ以上のクラスフアイ ルの集合である。
[0043] データファイル 1300は、アプリケーションが実行時に使用するデータである。具体 的には、画像ファイルや音声ファイルなどが該当する。
また、メタデータ 1400には、アプリケーション 1001に関する様々な情報が保持され ている。例えば、メタデータ 1400は、起動クラス名 1410とセキュリティ強度情報 142 0とを含んでいる。
[0044] 起動クラス名 1410は、アプリケーションクラス 1200のうち、最初に実行されるべきク ラスの名前である。
セキュリティ強度情報 1420は、アプリケーションクラス 1200を実行する際に、仮想 マシン 2000に求められるセキュリティの強さを表す。このセキュリティ強度情報 1420 で表される情報は、暗号ィ匕度情報 2810のセキュリティ強度 2811と同じものである。
[0045] このセキュリティ強度情報 1420の指定の仕方は、例えばバイトコードコンパイラの オプションとして設定することとする。
図 5は、ローダ 2200によってメソッド領域 2600に生成されるクラス情報 1210の構 成および内容例を示す図である。
クラス情報 1210は、クラス名 1211、親クラス 1212、インタフェーステーブル 1213、 メソッドテーブル 1214、フィーノレドテープノレ 1215、クラスローダ ID1216およびセキ ユアフラグ 1217などで構成される。
[0046] クラス名 1211は、当該クラスのクラス名である。
親クラス 1212は、当該クラスの親クラスを表す内部形式への参照である。 ここで、参照とは、ポインタやインデックスなど、そのデータの実体を指し示す表現を いう。
インタフェーステーブル 1213は、当該クラスが実装するインタフェースへの参照で ある。
[0047] メソッドテーブル 1214は、当該クラスが備えるメソッドの一覧である。
フィールドテーブル 1215は、このクラスが備えるフィールドの一覧である。 また、クラスローダ ID1216は、当該クラスをロードしたクラスローダオブジェクトを表 す。具体的には、クラスローダ ID2821が入っている(図 6参照)。
セキュアフラグ 1217は、当該クラスがセキュアクラス力否かを表す。
[0048] ここで、セキュアクラスとは、セキュリティ強度情報 1420に、セキュリティ強度 2811「 1」もしくは「2」を指定されたアプリケーション 1001のアプリケーションクラス 1200に含 まれるクラスをいう。
このセキュアフラグ 1217が「ON」になっている場合は、このクラスで扱われるデータ は、暗号ィ匕が必要と判断されることになる。
[0049] また、このセキュアフラグ 1217は、クラスがロードされるときに、ローダ 2200によって 設定される。本実施形態では、アプリケーション 1001のセキュリティ強度情報 1420 によって、クラスのセキュアフラグ 1217がー律に決まることとする。すなわち、暗号ィ匕 が必要なアプリケーションのすべてのクラスのセキュアフラグ 1217は「ON」とする。
[0050] 図 6は、暗号アルゴリズム情報 2820の構成および内容例を示す図である。
この暗号アルゴリズム情報 2820は、暗号化情報記憶部 2800に記憶されており、ァ プリ登録部 2100によって、作成される。
暗号アルゴリズム情報 2820は、クラスローダ ID2821、クラスローダアドレス 2822、 暗号アルゴリズム 2823および暗号鍵 2824で構成される。
[0051] クラスローダ ID2821は、アプリ登録部 2100がクラスローダに一意に割り当てる識 別子である。すなわち、アプリケーション 1つに対して、 1つのクラスローダ 2210が存 在することになる。本実施形態では、「0」から昇順につけていくものとする。
クラスローダアドレス 2822は、仮想マシン 2000から登録を要求されたクラスローダ オブジェクトのアドレスである。
[0052] 例では、クラスローダ IDが「0」のクラスローダでロードされたアプリケーションが実行 時に生成するデータは、暗号ィ匕されないことを表し、クラスローダ IDが「2」のクラス口 ーダでロードされたアプリケーションが実行時に生成するデータは、「AES (
Advanced Encryption Standard)」アルゴリズムで暗号化され、その鍵は「YYYY」で あることを表している。
[0053] <動作 >
以下、本発明に係る実行装置 3000の動作について図 7〜図 10を用いて説明する 図 7 (a)は、オブジェクト 2510の構成例を示す図であり、動作の説明で、必要に応 じて参照する。まず、図 7について説明する。
オブジェクト 2510は、クラス内のメソッドが実行されるときに、作成されるものであり、 ヒープ領域 2500に作成される。
[0054] オブジェクト 2510は、オブジェクトヘッダ 2511とオブジェクトデータ 2512とで構成 され、オブジェクトヘッダ 2511には、当該オブジェクトが属するクラス情報 2551、ォ ブジェクトデータ 2512のサイズであるデータサイズ 2552、オブジェクトデータ 2512 が暗号化されているか否かを示す暗号化フラグ 2553などが含まれている。この暗号 化フラグ 2553が「ON」であれば、オブジェクトデータ 2512が暗号化されていることと なる。
[0055] この暗号化フラグ 2553は、このメソッドが属するクラス、すなわちクラス情報 2551で 参照されるクラスのセキュアフラグ 1217が「ON」の場合、「ON」とする。
クラス情報 2551は、クラスローダによって、メソッド領域 2600内に生成されたクラス の内部表現のアドレスである。クラス情報 1210 (図 5参照)の先頭アドレス力 クラス 情報 2551に入って 、ることになる。
[0056] また、オブジェクトデータ 2512は、 Javaアプリケーションが動作することによって生 成される実行時データであり、 0個以上のフィールドを持つ。フィールドの数はォブジ ェタトが属するクラスにより一意に決定される。
フィールドは、基本型と呼ばれる数値や文字を扱うフィールドと、参照型と呼ばれる 他のオブジェクトへの参照を表すフィールドの 2種類がある。本実施形態では、ォブ ジェタトデータ 2512全体で、暗号化がなされるものとする。
[0057] 図 7 (b)は、オブジェクト 2510の内容例を示す図である。
例えば、クラス情報 2551はアドレス「Oxdeadbeef」にある内部表現を参照し、ォブ ジェタトデータのデータサイズ 2552は「24」である。暗号化フラグ 2553の値が「1 (O N)」であることで、このオブジェクトが暗号化されて!/、ることを表して!/、る。
[0058] アドレス「Oxdeadbeef」にある内部表現から、クラスローダ ID1216 (図 5参照)を参 照することで、このクラスをロードしたクラスローダオブジェクトを特定できる。このクラス ローダオブジェクトの IDであるクラスローダ ID1216が「2」であるとすると、そのクラス ローダ ID1216「2」をキーに、暗号アルゴリズム情報 2820 (図 6参照)を検索する。喑 号アルゴリズム情報 2820のクラスローダ ID2821が「2」であるので、該当のオブジェ タトデータ 2512は、「AES」アルゴリズムで、鍵「YYYY」を用いて暗号化されている ことが分力ゝる。
[0059] 実際の暗号化は、インタプリタ 2300の暗号化部 2320が行い、復号化は、インタプ リタ 2300の ィ匕咅 2310力 亍ぅ。
以下、図 8から図 10を用いて、実行装置の処理を説明する。 本実施形態では、実行装置の電源を入れた場合、予め定められているアプリケー シヨンが実行されるものとする。
[0060] 図 8は、実行装置 3000の処理を表すフローチャートである。
まず、ユーザが実行装置 3000の電源を投入する(ステップ S810)。
通電した CPU3400は、 OS3300を起動する(ステップ S820)。
起動した OS3300は、仮想マシン 2000を起動して(ステップ S830)、アプリ取得プ ログラム 3210を起動するよう指示する。
[0061] 指示を受けた仮想マシン 2000は、アプリ取得プログラム 3210を起動する(ステップ S840)。
仮想マシン 2000によって起動されたアプリ取得プログラム 3210は、アプリケーショ ンファイルからアプリケーション 1001を読込み、アプリ登録部 2100に、アプリケーシ ヨンの登録処理を依頼する。ここでは、アプリケーション 1001内の、メタデータ 1400 ( 図 4参照)のみを読込み、アプリ登録部 2100に渡す。他のアプリケーションクラス 12 00とデータファイル 1300は、アプリケーションの実行に応じて、適時読込まれること になる。
[0062] このアプリケーション登録処理において、アプリケーション 1001の秘匿性の度合い が判定され、暗号化のアルゴリズムなどが決定される。また、このアプリケーション 100 1用のクラスローダオブジェクトが生成される(ステップ S850)。すなわち、このアプリ ケーシヨン登録処理が終了すると、図 6で示す暗号アルゴリズム情報 2820に、該当 するアプリケーションの暗号ィ匕の情報が登録されていることになる。アプリケーション 登録処理の詳細については、図 9を用いて後で説明する。
[0063] アプリケーションの登録処理を終了したアプリ登録部 2100は、その旨をアプリ取得 プログラム 3210に返す。登録処理が終了した旨を受け取ったアプリ取得プログラム 3 210は、インタプリタ 2300に起動クラス名 1410を通知し、ロードを依頼する。
インタプリタ 2300は、クラスローダオブジェクトに、起動クラス名 1410 (図 4参照)で 指定されたクラス (以下、「起動クラス」という。)をロードする旨指示する。クラスローダ オブジェクトは、指定されたクラスをメソッド領域 2600にロードする(ステップ S860)。 この時点で、図 5に示すようなクラス情報 1210がメソッド領域 2600に作成されており 、クラスローダ ID1216とセキュアフラグ 1217が設定されていることになる。
[0064] この際、ベリファイャ 2220により正当性がチェックされ、 JITコンパイラ 2230により、 ネイティブコードに変換されて 、る。
これで、アプリケーションは仮想マシン 2000へロードされ、実行可能な状態となる。 クラスローダオブジェクトによる起動クラスのロードが完了すると、インタプリタ 2300 は、起動クラスのメソッドを実行することでアプリケーションの起動を行なう。
[0065] メソッドを実行するとは、すなわち、ヒープ管理部 2400に依頼して、オブジェクトをヒ ープ領域 2500に作成 (ステップ S870)し、メソッドを実行して 、くことになる (ステップ S880)。
新たなメソッドを実行する場合には、必要に応じて属するクラスをロードし (ステップ S860)、オブジェクトを作成し (ステップ S870)、メソッドを実行する。
[0066] オブジェクトをヒープ領域 2500に作成した時点で、暗号ィ匕が必要である場合には、 オブジェクトデータ 2512が暗号化されており、暗号化フラグが設定されて ヽる。
従って、このオブジェクトのフィールドにアクセスする場合には、オブジェクトヘッダ 2 511の暗号ィ匕フラグ 2553を参照して、「ON」ならば、読み出すときは、読み出したデ 一タを復号して処理し、また、書込むときは暗号ィ匕したデータを書込むことを行う。暗 号化フラグ 2553が「OFF」ならば、復号化、暗号化は行わずに、フィールドにァクセ スする。暗号アルゴリズムなどの取得方法は、図 7 (b)での説明の通りである。
[0067] 仮想マシン 2000を構成する全ての機能部は、オブジェクトに対して読み込みの操 作を行う前に、オブジェクトヘッダ 2511内の暗号化フラグ 2553を検査し、暗号化さ れている場合には復号ィ匕部 2310によりそれを復号ィ匕し、読み込む。また、オブジェ タトに対して書き込みの操作を行う前に、オブジェクトヘッダ 2511内の暗号ィ匕フラグ 2 553を検査し、オブジェクトが暗号化されている場合には暗号化部 2320により暗号 化したデータを書き込む。
[0068] < 1.アプリケーション登録処理 >
図 9を用いて説明する。図 9は、アプリケーション登録処理を表すフローチャートで ある。
仮想マシン 2000を起動したアプリ取得プログラム 3210は、アプリケーションフアイ ルからアプリケーション 1001を読込み、アプリ登録部 2100に、アプリケーションの登 録処理を依頼する(ステップ S 910)。
[0069] 登録処理を依頼されたアプリ登録部 307は、登録を依頼されたアプリケーション〖こ 含まれるセキュリティ強度情報 1420 (図 4参照)を読み出す (ステップ S920)。この時 、アプリケーションが暗号ィ匕されていれば、セキュリティ強度情報 1420の読み出しに 先立ち復号する。
次に、読み出したセキュリティ強度情報 1420に対応する暗号化機能を、実行装置 3000が備えているか否かを判定する (ステップ S930)。この判定は、暗号化判定部 2110に依頼して行う。
[0070] 具体的には、セキュリティ強度情報 1420が「2」であった場合を想定すると、暗号ィ匕 判定部 2110は、暗号化情報記憶部 2800から暗号化度情報 2810を読み出し、セキ ユリティ強度 2811が「2」に対応するデータ暗号化強度 2812が「強」であることを読み 出す。
このデータ暗号化強度 2812が「強」の暗号化方法を実行装置 3000がサポートし ている場合、読み出したセキュリティ強度情報 1420に対応する暗号化機能を実行装 置 3000が備えていると判断する。尚、本実行装置において、どのレベルの暗号ィ匕が サポートされているかは、予め決められており、アプリ登録部 2100は記憶しているも のとする。
[0071] 実行装置 3000が、読み出したセキュリティ強度情報 1420に対応する暗号化機能 を備えていると暗号ィ匕判定部 2110が判断した場合には (ステップ S930 : YES)、ァ プリ登録部 2100は、アプリケーションをロードするためのクラスローダオブジェクトを 生成する(ステップ S 940)。
次に、読み出したセキュリティ強度情報 1420に応じて、暗号アルゴリズムと暗号ィ匕 に使用する鍵の長さを決定し、暗号ィ匕鍵を生成する (ステップ S950)。暗号鍵は、同 じアプリケーションであっても、登録するたびにランダムに生成することとする。より判 読されに《なる力もである。また、セキュリティ強度情報 1420で指定されたよりも強 Vヽ暗号アルゴリズムや鍵を用いてもよ!、ものとする。
[0072] アプリ登録部 2100は、クラスローダ ID2821、クラスローダオブジェクトのアドレス 2 822、暗号アルゴリズム 2823、暗号鍵 2824とを対応づけて、暗号アルゴリズム情報 2820へ登録する(ステップ S 960)。
セキュリティ強度情報 1420に対応する暗号化機能を実行装置 3000が備えていな い場合には、アプリケーションの起動を中断する(ステップ S970)。アプリケーション を起動しないことで、アプリケーションの秘匿性が守られることになる。
[0073] < 2.オブジェクト生成処理 >
図 10を用いて説明する。図 10は、オブジェクトの生成処理を表すフローチャートで ある。
クラスローダオブジェクトによる起動クラスのロードが完了する(図 8、ステップ S860 参照)と、インタプリタ 2300は、起動クラスのメソッドを実行することでアプリケーション の起動を行なう。
[0074] メソッドを実行するとは、まず、ヒープ管理部 2400に、オブジェクトの作成を依頼す る。
依頼を受けたヒープ管理部 2400は、新 、オブジェクトのためのメモリ領域を確保 する(ステップ S 1010)。
次に、インタプリタ 2300は、カレントクラスがセキュアクラスであるかを検査する。こ れはカレントクラスのセキュアフラグ 1217を調べることで判定できる。セキュアフラグ 1 217が「0^でぁれば、セキュアクラス、すなわち、暗号ィ匕が必要なクラスであると判 定する。
[0075] カレントクラスがセキュアクラスと判定された場合には(ステップ S 1020 : YES)、ォ ブジェクトヘッダ 2511内の暗号化フラグにオブジェクトが暗号化されて!/、ることを表 す「 1」を設定する (ステップ S 1040)。
フラグの設定後、オブジェクトデータ 2512を暗号ィ匕する (ステップ S 1040)。ここで の暗号化の方法は、暗号アルゴリズム情報 2820 (図 6参照)を読み出すことで、決定 する。
[0076] カレントクラスがセキュアクラスではな!/、と判定された場合には (ステップ S 1020: N O)、オブジェクトヘッダ 2511内の暗号化フラグにオブジェクトが暗号化されていない ことを表す「0」を設定する (ステップ S 1050)。 ここで、カレントクラスとは、実行中のメソッドを定義しているクラスをいう。
インタプリタ 2300は、 Javaメソッドを実行する際に Javaフレームと呼ばれるデータ構 造を RAM3600上に作成する。 Javaフレーム ίお avaメソッドの呼び出し毎に一つ生 成され、メソッドの実行が終了した時に破壊される。インタプリタ 2300は、複数のスレ ッドにより実行される力 制御権が与えられているスレッドの任意の場所で、実行中の メソッドに対してアクティブ ¾[avaフレームは一つしか存在しな!、。このフレームのこと をカレントフレームと呼び、そこで実行中のメソッドをカレントメソッドと呼ぶ。そのカレ ントメソッドを定義しているクラスがカレントクラスである。
[0077] すなわち、カレントクラスは、ある瞬間には 1つに定まる。
<補足 >
以上、本発明に係る実行装置について実施形態に基づいて説明したが、この実行 装置を部分的に変形することもでき、本発明は上述の実施形態に限られないことは 勿論である。即ち、
(1)実施形態では、実行装置 3000で実行するアプリケーションは、アプリ取得プログ ラム 3210力 本装置外のアプリケーションファイル 1000からダウンロードしたもので あることとしている力 インターネット上にあるサーバから、ダウンロードすることとしても よい。
[0078] この場合、アプリ取得プログラム 3210は、 TLS (Transport Layer Security)、 HTT
P (Hypertext Transfer Protocol)等のプロトコルに従い Javaアプリケーションをダウン ロードする機能を有するプログラムとなる。
ここで、 TLSは暗号ィヒにより通信時のデータの盗聴、改竄を防ぐデータ転送方式で ある(RFC2246参照)。また、 HTTPは、インターネット上のデータ通信で一般的に 用いられて 、るデータ転送方式である(RFC2616参照)。
[0079] 尚、 RFC (Request For Comments)とは、インターネット上の技術を規格化する IET
F (Internet Engineering Task Force)の公式文書であり、プロトコルなど様々な技術の 使用がまとめられているものである。
また、実行装置 3000で実行するアプリケーションは、デジタル放送のデータ放送と して、 MPEG (Moving Picture Coding Experts Group) 2トランスポートストリーム内に 埋め込まれ^ Javaアプリケーションであってもよ!、。
[0080] この場合、アプリ取得プログラム 3210は、トランスポートストリーム内に埋め込まれた Javaアプリケーションを実行装置 3000内に読み出すプログラムとなる。
MPEG2トランスポートストリームに Javaプログラムを埋め込む方法としては、例えば 、 DSMCC方式がある。 DSMCC方式とは、 MPEG2トランスポートストリームのパケ ットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイル システムをエンコードする方法である(MPEG規格書 ISOZIEC 138181— 1、 MPE G規格書 ISOZIEC 138181— 6参照)。
[0081] またさらに、実行装置 3000で実行するアプリケーションは、 SDカード(Secure Digital memory card)、 CD— ROM (Compact Disk Read Only Memory;、 DVD Digital Versatile Disk)、: Blu—RayDisc等に記録され avaアプリケーションであつ てもよい。
この場合、アプリ取得プログラム 3210は、これらの記録媒体力もアプリケーションを 読み出すプログラムとなる。
[0082] また、実行装置 3000で実行するアプリケーションは、実行装置 3000内にある RO M3500に記録され^ Javaアプリケーションであってもよい。
この場合、アプリ取得プログラム 3210は、 ROM3500力ら RAM3600に、 Javaァ プリケーシヨンを読み出すプログラムとなる。
( 2)本実施形態ではアプリ取得プログラム 3210など ¾Java言語で記述され^ Javaプ ログラムとしている力 同等の機能を有する、ネイティブ言語で記述されたプログラム や、ハードウェアで実現されていてもよい。
[0083] また、 JAVAバーチャルマシンで実行するアプリケーションは、 Java言語で記述され たものに限らず、 C+ +などの他のオブジェクト思考言語で記述されたものであっても よい。
(3)本実施形態では、セキュリティ強度 2811は「0」〜「2」の 3段階としている力 これ に限るものではない。
[0084] 例えば、 4段階以上にセキュリティ強度を設定してもよいし、データの暗号化が必要 、不要の 2段階であってもよい。 (4)本実施形態では、アプリケーション 1001のメタデータ 1400は、起動クラス名 141 0とセキュリティ強度情報 1420とを含むこととして 、るが、これら以外の情報を含んで いてもよい。
[0085] また、セキュリティ強度を指定する代わりに、メタデータ 1400内で暗号アルゴリズム や鍵の長さを指定することとしてもょ 、。
なお、アプリケーション 1001がメタデータ 1400を含まないこととする場合には、暗 号ィ匕判定部 2110は、そのアプリケーションのセキュリティ強度情報を「0」とみなしたり 、実行装置 3000であつかえる最も高 、レベルのセキュリティ強度とみなしたりするこ ととしてもよ ヽ
(5)本実施形態では、アプリケーション 1001は、一つのファイルとして構成されてい るが、アプリケーションクラス 1200、データファイル 1300、メタデータ 1400が別々の ファイルであってもよい。また、メタデータ 1400をアプリケーションクラス 1200に埋め 込むこととしてもよい。
(6)実施形態では、アプリケーション 1001のセキュリティ強度情報 1420によって、ク ラスのセキュアフラグ 1217がー律に決まることとしている力 このセキュアフラグ 1217 は、クラスごとに設定できることとしてもよい。
[0086] 例えば、暗号化が必要なクラスのセキュアフラグ 1217は「ON」とし、暗号化が不要 なクラスは「OFF」とするなどである。また、クラスごとに、セキュリティ強度情報 1420を 設定でさることとしてちよい。
(7)本実施形態においては、オブジェクトデータ 2512全体を暗号ィ匕している力 フィ 一ルドをそれぞれ個別に暗号ィ匕してもよい。
[0087] また、フィールドを暗号ィ匕する際に、基本型のフィールドのみを暗号ィ匕し、参照型の フィールドの暗号ィ匕を行わなくしてもよい。この場合、参照型フィールドを識別できな い場合には、フィールドごとに暗号ィ匕されているか否かのフラグを持つ必要がある。 これにより、多くの参照型のフィールドへのアクセスを必要とするヒープ管理部 2400 が行うガベージコレクションを高速に実行できる。
(8)実施形態で示した実行装置の各機能を実現させる為の各制御処理 (図 2等参照 )を CPUに実行させる為のプログラムを、記録媒体に記録し又は各種通信路等を介 して、流通させ頒布することもできる。このような記録媒体には、 ICカード、光ディスク 、フレキシブルディスク、 ROM、フラッシュメモリ等がある。流通、頒布されたプロダラ ムは、機器における CPUで読み取り可能なメモリ等に格納されることにより利用に供 され、その CPUがそのプログラムを実行することにより実施形態で示した実行装置の 各機能が実現される。
[0088] <従来技術の説明 >
図 11に示すように、この従来のデータ保護機能を備えた計算機は、中央処理装置 203の内部に、データの復号処理を行う暗号化データ解読手段 204、暗号化処理を 行うデータ暗号化手段 205、データバッファ 206、プログラム実行手段 207とを備え、 中央処理装置 203の外部にある暗号化データ 202を中央処理装置 203内のデータ ノ ッファ 206へ読み込む際に復号し、プログラム実行手段 207で処理した後に、デー タ暗号ィ匕手段 205により暗号ィ匕して中央演算装置の外部へと出力している。
産業上の利用可能性
[0089] Javaアプリケーションが実行時に生成するデータの盗聴、改ざん力 保護すること ができ、今後本格展開が予想される Javaアプリケーションのダウンロード配信ビジネ スにおいて、コンテンツ作成者の権利を保護すること場合などに、特に有用である。 ダウンロード配信ビジネスとして、例えば、携帯電話機では、 NTT DoCoMoが i— アプリと呼ばれるサービスを提供している。このサービスは、携帯電話端末がインター ネット上にあるアプリケーション配信サーバから Javaプログラムをダウンロードして、端 末上で実行する。また、欧州では、 DVB— MHP (Digital Video Broadcasting -Multimedia Home Platform)と呼ばれる仕様が策定され、既に仕様に準拠し た運用が開始されている。 DVB— MHP規格に基づくデジタル放送では、放送波に 多重化され^ Javaプログラムをデジタル TVが受信し、それを実行する。

Claims

請求の範囲
[1] オブジェクト指向言語で作成されたアプリケーションプログラムを実行する実行装置 であって、
前記アプリケーションプログラムは、 1以上のメソッドを有する 1以上のクラスと秘匿の 必要性の有無を表す秘匿性情報とを含んでおり、
前記秘匿性情報に基づ!/ヽて、暗号化が必要であるか否かを判断する暗号化判断 手段と、
前記メソッドを実行する際に、前記メソッドが操作するデータを含むオブジェクトをメ モリに記録するオブジェクト記録手段とを備え、
前記暗号化判断手段で暗号化が必要であると判断された場合にお!ヽては、前記ォ ブジェクト記録手段は、暗号ィ匕されたデータを含むオブジェクトを記録する
ことを特徴とする実行装置。
[2] 前記秘匿性情報は、更に、秘匿の度合!、を示す情報を含み、
前記実行装置は、更に、前記秘匿性情報に基づいて暗号化方式を決定する暗号 方式決定手段を備え、
前記暗号化判断手段で暗号化が必要であると判断された場合にお!ヽては、前記ォ ブジェクト記録手段は、前記暗号方式決定手段で決定された暗号化方式で暗号化さ れたデータを含むオブジェクトを記録する
ことを特徴とする請求項 1記載の実行装置。
[3] 前記オブジェクト内のデータを書き換えるときは、前記データが暗号化されている場 合は、暗号ィ匕されたデータを記録する
ことを特徴とする請求項 1記載の実行装置。
[4] 前記メモリに記録されたオブジェクトは、オブジェクト内のデータが暗号ィ匕されて!ヽ るか否かを示す情報を有し、
前記情報がオブジェクト内のデータが暗号ィ匕されていることを示している場合は、 暗号ィ匕されたデータを記録する
ことを特徴とする請求項 3記載の実行装置。
[5] 前記実行装置は、更に、データが他のデータの所在位置特定に必要なデータであ るか否かを判別する判別手段を備え、
前記判別手段が、他のデータの所在位置特定に必要なデータであると判別したデ ータの場合は、暗号化を抑止する
ことを特徴とする請求項 1記載の実行装置。
プログラムを実行する実行装置であって、
前記プログラムは、データ部と秘匿の必要性の有無を表す秘匿性情報とを含んで おり、
前記秘匿性情報に基づ!/ヽて、暗号化が必要であるか否かを判断する暗号化判断 手段と、
前記実行可能プログラムを実行する際に、前記データ部をメインメモリにロードする ロード手段とを備え、
前記ロード手段は、前記暗号化判断手段で暗号化が必要であると判断された場合 は、暗号ィ匕してデータ部をロードする
ことを特徴とする実行装置。
PCT/JP2005/006290 2004-04-02 2005-03-31 実行装置 WO2005096120A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/593,719 US20080270806A1 (en) 2004-04-02 2005-03-31 Execution Device
EP05727355A EP1736848A1 (en) 2004-04-02 2005-03-31 Execution device
JP2006511799A JPWO2005096120A1 (ja) 2004-04-02 2005-03-31 実行装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-109778 2004-04-02
JP2004109778 2004-04-02

Publications (1)

Publication Number Publication Date
WO2005096120A1 true WO2005096120A1 (ja) 2005-10-13

Family

ID=35063958

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/006290 WO2005096120A1 (ja) 2004-04-02 2005-03-31 実行装置

Country Status (6)

Country Link
US (1) US20080270806A1 (ja)
EP (1) EP1736848A1 (ja)
JP (1) JPWO2005096120A1 (ja)
KR (1) KR20070008653A (ja)
CN (1) CN100419626C (ja)
WO (1) WO2005096120A1 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
WO2008028864A1 (en) * 2006-09-07 2008-03-13 International Business Machines Corporation Configuring a storage drive to communicate with encryption and key managers
JP2012531663A (ja) * 2009-06-26 2012-12-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム中の安全オブジェクトに対するサポート
JP2013190896A (ja) * 2012-03-13 2013-09-26 Nec Corp 情報処理装置、ファイル暗号化判定方法、権限決定方法およびプログラム
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9098442B2 (en) 2009-06-26 2015-08-04 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
JP2017535091A (ja) * 2014-12-30 2017-11-24 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想化システムにおける暗号復号方法および装置、およびシステム
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US10785240B2 (en) 2009-06-26 2020-09-22 International Business Machines Corporation Protecting from unintentional malware download

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533253B2 (en) * 2005-06-09 2013-09-10 Whirlpool Corporation Distributed object-oriented appliance control system
US20080005190A1 (en) * 2006-06-28 2008-01-03 Nokia Corporation System, Method, Apparatus and Computer Program Product for Providing Resource Reclamation in a Virtual Machine
CN101325480B (zh) * 2007-06-13 2012-05-23 中兴通讯股份有限公司 基于复用子帧的加扰控制方法及装置
US8631217B2 (en) * 2008-02-26 2014-01-14 International Business Machines Corporation Apparatus, system, and method for virtual machine backup
JP5815069B2 (ja) * 2013-09-17 2015-11-17 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びコンピュータプログラム
CN110159926B (zh) * 2019-02-22 2020-11-24 陈文娟 一种卸油管道系统
CN111414194B (zh) * 2020-03-19 2023-08-11 政采云有限公司 一种接口信息生成方法、系统、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02155034A (ja) * 1988-12-08 1990-06-14 Toshiba Corp セキュリティ機能付き計算機
JP2001350664A (ja) * 2000-06-07 2001-12-21 Nippon Telegr & Teleph Corp <Ntt> 情報カプセル管理方法及び情報カプセル管理プログラムを格納した記憶媒体
WO2002003208A2 (en) * 2000-06-30 2002-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
JP2002366437A (ja) * 2001-06-05 2002-12-20 Sharp Corp 暗号化処理装置,暗号化処理システム
JP2003290989A (ja) * 2002-03-28 2003-10-14 Akashin Kogyo Kk 減容機
JP2003345664A (ja) * 2002-05-30 2003-12-05 Nissan Motor Co Ltd 送信装置、データ処理システム及びデータ処理プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE506853C2 (sv) * 1996-06-20 1998-02-16 Anonymity Prot In Sweden Ab Metod för databearbetning
US5943328A (en) * 1996-08-13 1999-08-24 Lucent Technologies Inc. Frame counter for synchronized communication
US20010044901A1 (en) * 1998-03-24 2001-11-22 Symantec Corporation Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption
MY131509A (en) * 1999-03-15 2007-08-30 Sony Corp Data processing method, apparatus and system for encrypted- data transfer
US6487714B1 (en) * 1999-05-24 2002-11-26 International Business Machines Corporation Mechanism for dynamic selection of an object's method
JP4314713B2 (ja) * 2000-02-03 2009-08-19 ソニー株式会社 データ記録方法及び装置、データ再生方法及び装置、並びにデータ記録再生システム
US7076804B2 (en) * 2001-05-11 2006-07-11 International Business Machines Corporation Automated program resource identification and association
GB2378270B (en) * 2001-07-30 2005-04-20 Ibm Method and apparatus for data transfer across a network
KR100463842B1 (ko) * 2001-12-27 2004-12-29 한국전자통신연구원 파일 보안 시스템의 키 관리 장치와 암호키 관리방법
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US7296010B2 (en) * 2003-03-04 2007-11-13 International Business Machines Corporation Methods, systems and program products for classifying and storing a data handling method and for associating a data handling method with a data item
US7313820B2 (en) * 2003-12-29 2007-12-25 International Business Machines Corporation Method and system for providing an authorization framework for applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02155034A (ja) * 1988-12-08 1990-06-14 Toshiba Corp セキュリティ機能付き計算機
JP2001350664A (ja) * 2000-06-07 2001-12-21 Nippon Telegr & Teleph Corp <Ntt> 情報カプセル管理方法及び情報カプセル管理プログラムを格納した記憶媒体
WO2002003208A2 (en) * 2000-06-30 2002-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
JP2002366437A (ja) * 2001-06-05 2002-12-20 Sharp Corp 暗号化処理装置,暗号化処理システム
JP2003290989A (ja) * 2002-03-28 2003-10-14 Akashin Kogyo Kk 減容機
JP2003345664A (ja) * 2002-05-30 2003-12-05 Nissan Motor Co Ltd 送信装置、データ処理システム及びデータ処理プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"JavaTM Cryptography Extension (JCE).", REFERENCE GUIDE FOR THE JAVATM 2 SDK, STANDARD EDITION, V1.4., 10 January 2002 (2002-01-10), XP002990827, Retrieved from the Internet <URL:URL:http://java.sun.com/j2se/docs/guide/security/jce/JCERefGuide.html> [retrieved on 20050624] *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
WO2008028864A1 (en) * 2006-09-07 2008-03-13 International Business Machines Corporation Configuring a storage drive to communicate with encryption and key managers
JP2010503301A (ja) * 2006-09-07 2010-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化マネージャ及び鍵マネージャと通信するようにストレージ・ドライブを構成する方法
US7877603B2 (en) 2006-09-07 2011-01-25 International Business Machines Corporation Configuring a storage drive to communicate with encryption and key managers
US9098442B2 (en) 2009-06-26 2015-08-04 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US10785240B2 (en) 2009-06-26 2020-09-22 International Business Machines Corporation Protecting from unintentional malware download
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9875193B2 (en) 2009-06-26 2018-01-23 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9372967B2 (en) 2009-06-26 2016-06-21 International Business Machines Corporation Support for secure objects in a computer system
US9471513B2 (en) 2009-06-26 2016-10-18 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9690717B2 (en) 2009-06-26 2017-06-27 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9727709B2 (en) 2009-06-26 2017-08-08 International Business Machines Corporation Support for secure objects in a computer system
US10007793B2 (en) 2009-06-26 2018-06-26 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
JP2012531663A (ja) * 2009-06-26 2012-12-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム中の安全オブジェクトに対するサポート
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US10007808B2 (en) 2011-09-06 2018-06-26 International Business Machines Corporation Protecting application programs from malicious software or malware
JP2013190896A (ja) * 2012-03-13 2013-09-26 Nec Corp 情報処理装置、ファイル暗号化判定方法、権限決定方法およびプログラム
JP2017535091A (ja) * 2014-12-30 2017-11-24 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想化システムにおける暗号復号方法および装置、およびシステム
US10409990B2 (en) 2014-12-30 2019-09-10 Huawei Technologies Co., Ltd. Encryption and decryption method and apparatus in virtualization system, and system

Also Published As

Publication number Publication date
JPWO2005096120A1 (ja) 2007-08-16
EP1736848A1 (en) 2006-12-27
CN1961275A (zh) 2007-05-09
US20080270806A1 (en) 2008-10-30
CN100419626C (zh) 2008-09-17
KR20070008653A (ko) 2007-01-17

Similar Documents

Publication Publication Date Title
WO2005096120A1 (ja) 実行装置
US7107459B2 (en) Secure CPU and memory management unit with cryptographic extensions
WO2007011001A1 (ja) 実行装置
US7469346B2 (en) Dual virtual machine architecture for media devices
US9647992B2 (en) Secure transfer and tracking of data using removable nonvolatile memory devices
WO2006009081A1 (ja) アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
KR102550672B1 (ko) 영상처리장치 및 그 제어방법
WO2005096121A1 (ja) 実行装置
JP4850830B2 (ja) コンピュータシステム及びプログラム生成装置
US20090097644A1 (en) Playback apparatus and playback control method
US20080216071A1 (en) Software Protection
WO2005098570A1 (ja) 実行装置
CN112417484B (zh) 资源文件保护方法、装置、计算机设备和存储介质
WO2011114655A1 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
WO2015154436A1 (zh) 一种数据处理方法及装置
KR102001046B1 (ko) 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
JP2008040853A (ja) アプリケーション実行方法およびアプリケーション実行装置
US10795974B2 (en) Memory assignment for guest operating systems
KR20190060181A (ko) 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
KR101366669B1 (ko) Ums 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체
JP2008003928A (ja) ダウンロードシステム
WO2011096073A1 (ja) メモリ管理方法
CN119150322A (zh) 基于Java Agent启动的字节码加密方法及系统

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2005727355

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2006511799

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 1020067022067

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 200580018030.4

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2005727355

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067022067

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 10593719

Country of ref document: US