WO2005098570A1 - Execution device - Google Patents

Execution device Download PDF

Info

Publication number
WO2005098570A1
WO2005098570A1 PCT/JP2005/006307 JP2005006307W WO2005098570A1 WO 2005098570 A1 WO2005098570 A1 WO 2005098570A1 JP 2005006307 W JP2005006307 W JP 2005006307W WO 2005098570 A1 WO2005098570 A1 WO 2005098570A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
encryption
memory
execution device
class
Prior art date
Application number
PCT/JP2005/006307
Other languages
French (fr)
Japanese (ja)
Inventor
Mitsuru Kurotaki
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.
Publication of WO2005098570A1 publication Critical patent/WO2005098570A1/en

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs

Definitions

  • the present invention relates to a technology for preventing eavesdropping and falsification of a program, and more particularly to a technology for preventing a program being executed from being eavesdropped and falsified during execution of the program.
  • 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.
  • Patent Document 1 JP 2002-132364 A
  • an object of the present invention is to provide an execution device that prevents eavesdropping and tampering of not only an intermediate code but also a native code.
  • an execution device of the present invention is an execution device that executes an application program having a plurality of portions each including an instruction, and partially creates a native code in a specific memory area. Then, after creating the encrypted code by encrypting the created native code, the created native code is deleted, and the created encrypted code is stored in the encrypted code storage means.
  • Decrypting means for decrypting an encrypted code stored in the means and creating a native code in a specific memory area, and decrypting the encrypted code corresponding to the part when executing each part by the decrypting means.
  • execution control means for deleting the executed native code after executing the native code.
  • the execution device has the above configuration, whereby the native code in the virtual machine is encrypted, and when executed, only the execution range is in a decrypted state. As a result, the chances of eavesdropping and tampering by a third party can be greatly reduced.
  • the application program further determines whether or not each part has the ability to perform encryption.
  • the native code creation unit and the execution control unit may include the confidentiality information shown in FIG. 4 and process only the part that indicates that the confidentiality information is encrypted.
  • the execution device can perform encryption only when the confidentiality of the application is high, so that the application can be protected from eavesdropping and tampering without reducing the execution speed.
  • the confidentiality information further includes information indicating a degree of confidentiality! /
  • the native code creating unit performs the confidentiality information only when the confidentiality information indicates that the confidentiality information is to be encrypted.
  • An encryption code encrypted with the encryption method determined based on the confidentiality information may be created.
  • the portion may be a series of instructions including no branch instruction!
  • the application program may be created in an object-oriented language, and the part may be a method.
  • part may be one instruction.
  • the execution device of the present invention is an execution device that executes an application program having a plurality of parts composed of instructions, and permits or prohibits read and write access to a predetermined memory area.
  • Access control means for controlling the access to the memory device and the access means to permit write access to the predetermined memory area, create a native code from the partial memory in the predetermined memory area, and
  • the predetermined memory area Means for creating a native code for prohibiting write access to the area, and, when executing a part, permitting access for reading to the predetermined memory area by the access means, and reading a native code corresponding to the part.
  • execution control means for prohibiting read access to the predetermined memory area by the access means.
  • the execution device can store the native code in an inaccessible area and read it only when executing the native code. The chances of eavesdropping and tampering can be greatly reduced.
  • FIG. 1 is a diagram showing a configuration of an execution device according to the present invention.
  • FIG. 2 is a diagram showing a configuration example of a class file.
  • FIG. 3 is a diagram showing a configuration example of a class block.
  • FIG. 4 (a) is a diagram showing a configuration example of a class header
  • FIG. 4 (b) is a diagram showing a configuration example of a method header.
  • FIG. 5 (a) is a diagram illustrating an example of the content of encryption strength information
  • FIG. 5 (b) is a diagram illustrating a configuration example and an example of content of division information.
  • FIG. 6 is a diagram illustrating a configuration example and a content example of encryption method information.
  • FIG. 7 is a diagram illustrating a configuration example and a content example of encryption key information.
  • FIG. 8 is a flowchart showing a process of the execution device 1000.
  • FIG. 9 is a flowchart showing a class loading process and a diagram showing contents of a first memory.
  • FIG. 10 is a flowchart showing a verifying process and a diagram showing contents of a first memory.
  • FIG. 11 is a flowchart showing a method execution process and a diagram showing contents of a first memory.
  • FIG. 12 is a flowchart illustrating an IT compilation process and a diagram illustrating contents of a first memory.
  • FIG. 13 is a flowchart showing an optimization process and a diagram showing contents of a first memory.
  • FIG. 14 is a flowchart showing an encryption process, and shows contents of a first memory and a second memory.
  • FIG. 15 is a flowchart showing a decoding process, and a diagram showing contents of a first memory and a second memory.
  • FIG. 16 is a diagram illustrating a configuration of a memory according to a second embodiment.
  • FIG. 16 (a) is a diagram showing a state in which a readable attribute on the memory is set
  • FIG. 16 (b) is a diagram showing a state in which a non-readable attribute on the memory is set.
  • FIG. 17 is a diagram illustrating a configuration of a conventional technique.
  • the execution device is configured such that, when executing an application, not all instructions are sequentially executed due to the presence of a branch instruction of a program, etc. Focusing on the fact that is executed for the first time after passing through multiple processes such as verification and optimization, This is to protect the case from eavesdropping and tampering.
  • the class When the class is loaded, the class is divided into a plurality of parts, and each divided part is encrypted and arranged on the memory.
  • the present invention is characterized in that it is possible to freely change the degree of encryption according to the importance of the application.
  • the degree of confidentiality of an application can only be known by the creator or the user when creating the application.
  • the execution device can specify the strength of encryption for a specific divided part in a class, and the part that has low confidentiality and does not need to perform encryption is relatively confidential. It is possible to change the encryption method in a portion having high property. In addition, by performing encryption using a different encryption key for each divided portion, the overall encryption strength can be increased. Wear.
  • FIG. 1 is a diagram illustrating a configuration of an execution device according to the present invention.
  • the execution device 1000 includes an application acquisition program 1100, an application 1200, a virtual machine 1300, an OS (Operating System) 1400, a first memory 1700, a first CPU (Central Processing Unit) 1900, and a tamper-resistant execution unit 2000.
  • an application acquisition program 1100 an application 1200, a virtual machine 1300, an OS (Operating System) 1400, a first memory 1700, a first CPU (Central Processing Unit) 1900, and a tamper-resistant execution unit 2000.
  • the execution device 1000 has a function specific to each device in addition to a function of executing an application (not shown).
  • the execution device 1000 is a Java (registered trademark) such as a digital television, a set-top box, a DVD recorder, a BD (Blu-ray Disc) recorder, a car navigation terminal, a mobile phone, a PDA (Personal Digital Assistance), and the like. ) All electronic devices equipped with virtual machines are applicable.
  • the function of executing the application of the execution device 1000 is the same as the software execution means mounted on a normal personal computer, digital home appliance, or the like.
  • the execution device 1000 is a digital television, an application that converts received digital data into an image and displays the image is executed.
  • the application 1200 is an application to be executed by the execution device 1000, and the application file outside the device is also downloaded.
  • the application acquisition program 1100 is described in the Java (registered trademark) language, and has a function of reading an application 1200 from an external file, and executing and controlling processes necessary for executing the application.
  • the virtual machine 1300 is a Java (registered trademark) virtual machine that sequentially prays and executes a program described in the Java (registered trademark) language.
  • a software program A virtual machine that is a ram 1300 simulates a virtual CPU and analyzes and executes Java (registered trademark) instruction codes.
  • the virtual machine 1300 includes an interpreter 1310, a class loader 1320, a verifier 1330, a JIT compiler 1340, and an optimizer 1350.
  • the interpreter 1310 has a function of interpreting and executing the bytecode of the application 1200, and performs core processing in the virtual machine. Specifically, if the method called by the program has not been loaded yet, it issues an instruction to load the class to which the method belongs, or instructs the execution of the method.
  • the bytecode is an intermediate code that is obtained by compiling a source written in the Java (registered trademark) language and that does not depend on the hardware.
  • the class loader 1320 has a function of reading and loading a class file constituting the application 1200 from an external file.
  • the class loader 1320 also has a function of unloading a class. This function removes unnecessary classes after execution from the virtual machine 1300.
  • the verifier 1330 has a function of judging a defect in the data format of the class and the security of the Knot code included in the class.
  • the class loader 1320 does not load the class determined to be valid by the verifier 1330.
  • the JIT compiler 1340 has a function of translating the bytecode into an executable format that can be understood by the first CPU 1900.
  • the optimizer 1350 has a function of finely revising a program so that the program can be executed at a higher speed without changing the specification of the program, and operates with smaller size and memory usage.
  • the OS 1400 is a general term for a technology configured by a kernel and a library that execute other subprograms in parallel, and executes the virtual machine 1300 as a subprogram. For example, there is Linux.
  • the first memory 1700 is a so-called working memory, and is composed of a RAM (Random Access Memory). Specifically, it is a primary storage memory such as an SRAM (Static Random Access Memory) divided by a DRAM (Dynamic Random Access Memory).
  • SRAM Static Random Access Memory
  • DRAM Dynamic Random Access Memory
  • This first memory is used by the first CPU 1900, and the OS and virtual machines are also used by this first memory. Will be loaded and executed.
  • the first CPU 1900 has a function of executing a virtual machine 1300, an OS 1400, an application 1200, and the like.
  • the execution device 1000 further has means (not shown) for storing a program of the virtual machine 1300 and the like.
  • a program of the virtual machine 1300 is a ROM (Read Only Memory), specifically, a nonvolatile memory such as a flash memory or a node disk. Further, a recording medium such as a BD-ROM may be used.
  • the tamper-resistant execution unit 2000 includes an encryption unit 2100, a decryption unit 2200, an encryption method information storage unit 2300, an encryption key information storage unit 2400, a second memory 2700, and a second CPU 2900. Is done.
  • the tamper-resistant execution unit 2000 is a program execution means that can execute a program safely while defending an attack from a malicious third party.
  • the encryption unit 2100 has a function of receiving an address on the first memory 1700 from the virtual machine 1300 and encrypting the data. It also has a function of determining what encryption method to use for encryption.
  • the decryption unit 2200 has a function of receiving an address on the first memory 1700 from the virtual machine 1300 and decrypting the data.
  • the encryption method information storage unit 2300 stores the encryption method used in the execution device. Specifically, it is a combination of a plurality of encryption algorithms and keys, and in the present embodiment, six types of combinations are stored. This will be described later with reference to FIG.
  • the encryption key information storage unit 2400 stores the address of the data on the first memory and the encryption method used to encrypt the data.
  • the encryption method is one of the encryption methods stored in the encryption method information storage unit 2300. This will be described later with reference to FIG.
  • the second memory 2700 is a so-called working memory similar to the first memory 1700, and is composed of a RAM (Random Access Memory). This second memory is used by the second CPU.
  • the second CPU 2900 has a function of executing processes of the encryption unit 2100, the decryption unit 2200, and the like.
  • the communication between the tamper-resistant execution unit 2000 and the external virtual machine 1300 or the like is protected so as not to be eavesdropped.
  • the second memory in the tamper-resistant execution unit 2000 and each storage unit cannot be accessed from outside the tamper-resistant execution unit 2000.
  • the tamper-resistant execution unit 2000 can access the first memory and the storage unit outside the tamper-resistant execution unit 2000.
  • first CPU 1900 and the second CPU 2900 can operate independently.
  • the case where the first CPU 1900 and the second CPU 2900 operate independently of each other means, for example, a case where the execution device 1000 includes a plurality of CPUs and one of them is used as the second CPU 2900.
  • Each function of the execution device 1000 is realized by the CPU executing a program stored in a memory or a hard disk of the execution device 1000.
  • FIG. 2 is a diagram showing a configuration example of a class file.
  • the application 1200 is composed of a plurality of class files, and the virtual machine 1300 interprets and executes the class files.
  • the class file 1210 is composed of a plurality of elements, but in this embodiment, magic-numDerl2l1, minor-versionl212, major-versionl21d, fields-countl214, Only fields [fields-count] 1215, metnoas-count 1216, methods [methods-count] 1217 and attributes [attributes-count] 1218 are described, and detailed descriptions of other elements are omitted.
  • magic—numberl211 indicates that the file is a Java (registered trademark) class file.
  • Java (registered trademark) class files always start with “CAFEBABE” t ⁇ ⁇ fixed value. Class files whose value is not "CAFEBABE" cannot be passed through the verification process.
  • minor—version 1212 and maj or—version 1213 indicate the version of the bytecode compiler that created this class file. This version of the virtual machine 1300 Executed by virtual machine only if supported. In addition, minor— version 1
  • fields-countl 214 is the number of fields
  • fields [fields-count] 1215 is an array of information about the fields of this class.
  • methods-countl216 is the number of methods
  • methods [methods-count] 1217 is an array of information about the methods of this class.
  • attributes [attributes-count] 1218 is an array of attribute information possessed by this class. This attribute information can be newly added by the user, and in this embodiment, all information is added according to the encryption strength.
  • FIG. 3 is a diagram showing a configuration example of a class block.
  • the class block 1701 is data obtained by converting the class file 1210 (see FIG. 2) into the internal format of the virtual machine 1300. Specifically, the class file 1210 has been expanded on the memory by the class loader 1320.
  • the class block 1701 includes a class header 1710 and a method 1800.
  • the class header 1710 is data holding class division information and the like, and is data newly added in the present invention. Details of this class header will be described later with reference to FIGS. 4 and 5.
  • the method 1800 includes a method header 1810 and a code 1850.
  • the method 1800 is obtained by converting the methods [methods—count] 1217 into the internal format of the virtual machine 1300, and there are as many as the number of methods—counts 1216.
  • the method header 1810 is data holding information on encryption of a method and the like, and is data newly added in the present invention. Details of this method header will be described later with reference to FIGS. 4 and 5.
  • Code 1850 is a series of instruction codes for executing the function of this method, and is included in most methods. Specifically, it is either bytecode, native code, or optimized native code obtained by performing optimization processing on native code. Information other than the method of the class file is also divided and converted into the internal format, It is assumed that the method is included in the lock 1701, and similarly, information other than the code is converted into the internal format and included in the method (shown by ⁇ ⁇ , ⁇ ⁇ ).
  • FIG. 4 (a) is a diagram showing a configuration example of a class header
  • FIG. 4 (b) is a diagram showing a configuration example of a method header.
  • the class header 1710 includes encryption strength information 1720 and division information 1730.
  • the encryption strength information 1720 indicates the strength of encryption when this class is encrypted, and can be said to indicate the strength of confidentiality of this class.
  • the division information 1730 is information indicating how this class is divided, and the division part is a unit of encryption.
  • the division can be made such that the processing such as encryption is lightened, for example, by dividing the parts having the same reference timing or the same degree of importance into one divided part.
  • the method of the class is one method and one divided part.
  • the method header 1810 includes encryption strength information 1811, a JIT header 1812, an optimization header 1813, and method information 1814.
  • the encryption strength information 1811 indicates the encryption strength when encrypting this method, and is the same as the encryption strength information 1720 in the class header.
  • the encryption strength information 1811 of the method is stronger than the encryption strength information 1720 of the class, the encryption strength information 1811 of the method is adopted, and when the encryption strength information 1811 of the method is weak, the encryption strength information 1720 of the class is used. Shall be adopted.
  • the JIT header 1812 holds information indicating whether or not to perform JIT compilation on the code 1850 and further indicates whether or not the code 1850 has been compiled.
  • the optimization header 1813 describes whether or not to optimize the code 1850, and also describes the current optimization level and the target optimization level. In addition, the optimization header 1813 also indicates the type or ratio of the optimization to be performed, such as the execution speed and the code size.
  • the method information 1814 is data obtained by converting information other than the bytecode included in the methods 313 into an internal format of the virtual machine 1300.
  • the information on which the method header 1810 is created is assumed to be set in attribute information possessed by the method, similarly to the class.
  • FIG. 5A is a diagram illustrating an example of the contents of the encryption strength information (1720, 1811), and FIG. 5B is a diagram illustrating a configuration example and an example of the contents of the division information 1730.
  • “1” is designated as the encryption strength information 1720.
  • the encryption unit 2100 determines the encryption method. In this embodiment, if this value is “0”, it indicates that encryption is not required, and any of “1”, “2”, and “3” can be set. It is assumed that the larger the value is, the higher the confidentiality is, that is, it is required to perform encryption with high strength.
  • FIG. 5B shows the division information 1730, which is composed of an item 1731 and an address 1732.
  • Item 1731 is an item of the class file, and address 1732 is an address located in the first memory.
  • FIG. 6 is a diagram illustrating a configuration example and a content example of encryption method information.
  • the encryption method information 2301 is determined in advance and is stored in the encryption method information storage unit 2300.
  • the encryption method information 2301 includes a key ID 2310, an encryption key 2320, a decryption key 2330, and an encryption algorithm 2340.
  • the key ID 2310 indicates a key identification number.
  • the encryption key 2320 is a key used at the time of encryption
  • the decryption key 2330 is a key used at the time of decryption.
  • the encryption algorithm 2340 represents the encryption algorithm.
  • a certain encryption algorithm is assigned in advance to “A”, “B”, and “C”, for example, [, DES (Data Encryption Standard), RS A (Rivest Shamir Adieman). (?Ah .
  • the encryption key 2320 of the encryption method with the key ID 2310 “l” is “fd456”
  • the decryption key 2330 is “4fgaa”
  • the encryption algorithm 2340 is “A”.
  • FIG. 7 is a diagram illustrating a configuration example and a content example of the encryption key information.
  • the encryption key information 2401 is stored in the encryption key information storage unit 2400.
  • the encryption key information 2401 includes an address 1732 and a key ID 2310.
  • the address 1732 is the address of the first memory in which the encrypted data is stored.
  • the address 1732 is an address where the divided part of the class is arranged, and is the same as the address of the division information 1730 (see FIG. 5).
  • the data pointed to by the address 1732 may be encrypted data or may be decrypted data.
  • the key ID 2310 is the same as the key ID 2310 of the encryption method information 1301. With this key ID 2310, the encryption key information 2401 and the encryption method information 2301 are linked. For example, the data at the address “0x06530012” is encrypted or decrypted by the encryption method with the key ID “4”, and the encryption method is the encryption key 2320 “135fd”, the decryption key 2330 “21jio”, The encryption algorithm is 2340 “C” (see Figure 6).
  • FIG. 8 is a flowchart showing the processing of the execution device 1000.
  • the user turns on the power of the execution device 1000 (step S100).
  • the energized first CPU 1900 activates the OS 1400 (step S110), and the activated OS 1400 activates the virtual machine 1300 (step S120).
  • the activated virtual machine 1300 activates the application acquisition program 1100 (Step S130).
  • the activated application acquisition program 1100 reads the application 1200 from outside the execution device 1000, and starts executing the application (step S140).
  • the virtual machine 1300 encrypts or decrypts the native code of the application or the like (Step S170) as appropriate, and executes the application while protecting the application in the virtual machine 1300.
  • the address of the data to be encrypted and the encryption strength information (1720, 1811) are passed, and at the time of decryption, the address of the data to be decrypted is passed.
  • step S150 When the execution of the application is completed (step S150: YES), a termination process is performed (step S160, step S180), and the process in the execution device is terminated.
  • step S200 the class loading process (step S200), the verify process (step S300), and the method execution process (step S400) will be described below.
  • Step S 170 After describing these processes, the encryption process and the decryption process (Step S 170) will be described.
  • FIG. 9 is a flowchart showing the class loading process and a diagram showing the contents of the first memory. This is the contents of the first memory shown on the left side of the flowchart (9000 to 9003). The contents of this memory represent only those relating to the present invention in chronological order (similar in FIGS. 10 to 15;).
  • the class loading process is a process performed by the class loader 1320, and performs a process of converting a class file into an internal format and arranging it in a memory.
  • the data is divided, and each divided part is encrypted and arranged on the memory.
  • the verification process usually performed during the class loading process is omitted for convenience of description, and the verification process will be described with reference to FIG.
  • the class loader 1320 given the class name by the interpreter 1310 and instructed to load finds a class file corresponding to the passed class name and reads it into the first memory (step S).
  • a class header 1710 is created based on the read class file (step S220, first memory 9002).
  • the encryption strength information 1720 is included as a new attribute in the attribute [attributes-count] 1218 of the class.
  • the class is divided to create division information 1730 (step S220).
  • division is performed as shown in FIG.
  • a class block 1701 is created (step S230, first memory 9002). Specifically, each element that makes up the class block is created. For example, a method header 1810 and a code 1850 are created, and methods 1800 are created for the number of methods. At this time, the method header 1810 and the code 1850 are added to the division information 1730 as one division part. In addition, if the address 1732 of the division information 1730 changes, it is rewritten.
  • a process of encrypting the class block is performed (step S240).
  • the encryption is performed by requesting the tamper-resistant execution unit 2000 (step S240: arrow).
  • the processing unit of this encryption is based on the division information 1730 of the class header 1710, and finally the encryption of the class header 1710 is performed.
  • the address of the division information 1730 in the class header indicates each encrypted division. That is, each time encryption or decryption is performed, the corresponding address of the division information 1730 is rewritten (the same applies hereinafter).
  • the interpreter 1310 manages the address of the encrypted class header.
  • step S250 the class header and the class file on the first memory are deleted.
  • Deletion here does not mean, for example, deleting only the index that manages the recorded data, but rather overwriting the recorded data with a specific value, for example, ⁇ 0x00 ''. Delete (hereinafter the same).
  • the target class file contains only the encrypted class, which is different from the loaded plaintext class, in the first memory. Is protected.
  • FIG. 10 is a flowchart showing the verifying process and a diagram showing the contents of the first memory. This is the contents of the pictorial first memory shown on the left side of the flowchart (9010 to 9012).
  • the verification process is a process performed by the verifier 1330. This verification process is called at appropriate times, such as when loading or linking a class file, and performs the verification process according to the contents at the time of the call.
  • the verifier 1330 that has received the target encryption class file (first memory 9010) from the interpreter 1310 performs a process of decrypting the encryption class file (step S310, the first memory). 9011). In this decryption, only the divided part necessary for the verification process is decrypted. For example, when confirming whether the magic number is “CAFEBABE”, the first divided part of the class header 1710 and the division information 1730 is decoded.
  • the verifying process is performed based on the decryption class block (step S320). At this time, if another class is required, the class block is decoded or loaded to perform a verify process.
  • step S330 If there is a change in the division information 1730 due to the verification processing, update the division information 1730 (step S330
  • the class block is encrypted (step S340). In this case, only the decrypted divided portion of the class block is re-encrypted.
  • the decryption class block is deleted (step S350, first memory 9012).
  • FIG. 11 is a flowchart showing a method execution process and a diagram showing the contents of the first memory. This is the contents of the pictorial first memory shown on the left side of the flowchart (9020 to 9023).
  • This method execution process is a process performed by the interpreter 1310.
  • the class to which the method to be executed belongs is loaded and exists as the encryption class block. This will be described (first memory 9020).
  • JIT compilation processing is often performed at the time of loading a class.
  • JIT compilation is performed before execution of a method.
  • the interpreter 1310 determines whether the corresponding method in the encryption class block to which the method to be executed belongs.
  • the method header 1810 of the sod 1800 is decrypted (step S410, first memory 9021). Specifically, the class header 1710 is decrypted, the address of the class header of the corresponding method is obtained from the division information 1730, and the method header 1810 is decrypted.
  • step S500 JIT compilation processing is performed (step S500).
  • step S430 when this method is optimized (step S430: YES) with reference to the optimization header 1813 of the method header 1810, an optimization process is performed (step S600).
  • the address of the code of the corresponding method is acquired from the division information 1730, the code 1850 is decoded (step S440, first memory 9022), and the process is executed (step S450). At this time, if another method is to be executed, processing such as decoding that method is performed.
  • step S460 the decryption code and the decryption method header are deleted (step S460, first memory 9023).
  • FIG. 12 is a flowchart showing the JIT compilation process and a diagram showing the contents of the first memory. This is the contents of the first memory shown on the left side of the flowchart (9030 to 9032).
  • This JIT compilation processing is mainly processing performed by the JIT compiler 1340.
  • the interpreter 1310 passes the code 1850 to be JIT-compiled to the JIT compiler 1340, and instructs to compile (first memory 9030).
  • the code here is a byte code.
  • Instructed ⁇ JIT Connoiler 1340 decrypts the passed encryption code (step S51).
  • the JIT compiler 1340 creates a native code from the decrypted code (step S520, first memory 9031).
  • the interpreter 1310 encrypts and adds the created native code to the same method 1800 as the base code 1850 (step S530).
  • the decryption code and the native code are deleted (step S540, first memory 9032).
  • FIG. 13 is a flowchart showing the optimization process and a diagram showing the contents of the first memory.
  • the pictorial power shown on the left side of the flowchart is the contents of the first memory (9040 to 9043). This optimization processing is performed by the optimizer 1350.
  • the interpreter 1310 passes the code 1850 to be optimized to the optimizer 1350, and instructs the optimizer 1350 to perform the optimization. It is assumed that the class to which the code 1850 belongs has already been loaded and is stored in the first memory as an encryption class block (first memory 9040). Also, the code here is a Neutral code or a native code.
  • the specified optimizer 1350 decrypts the passed encryption code (step S610, first memory 9041).
  • the optimizer 1350 creates an optimized code based on the decoded code (Step S620, first memory 9042).
  • the processing is performed by decoding.
  • the interpreter 1310 encrypts the created code (step S630) and replaces it with the original code 1850 (step S635).
  • decrypted code targeted for optimization and the created optimized decrypted code are deleted (step S650, first memory 9043).
  • FIG. 14 is a flowchart illustrating an encryption process and a diagram illustrating contents of the first memory and the second memory. Drawings shown on the left side of the flowchart are the contents of the first memory (9050 to 9053) and the second memory (9060 to 9063).
  • This encryption process is a process performed by the encryption unit 2100 of the tamper-resistant execution unit 2000.
  • the virtual machine 1300 passes the address of the data to be encrypted and the encryption strength information (1720, 1811) to the encryption unit 2100, and instructs encryption (first memory 9050, second memory 9060).
  • the dagger 2100 reads the data at the passed address from the first memory to the second memory (step S710, second memory 9061), and deletes the data in the first memory (step S720, 1 memory 9051).
  • the encryption unit 2100 uses the encryption method based on the received encryption strength information (see Figs. 6 and 7). Is determined (step S730). For example, if the encryption strength information requires strong encryption, a strong encryption algorithm is selected from the encryption algorithms 2340, and an encryption method is determined so that the same encryption key 2320 is not consecutive.
  • the data is encrypted using the B code key 2320 of the encryption algorithm 2340 that is the determined encryption method (step S750, second memory 9062, first memory 9052).
  • the encrypted data is written to the first memory (step S760, first memory 9053, second memory 9063), and the written address and the encrypted encryption key ID 2310 are stored in the first memory. Is added to the encryption key information 2401 (step S770).
  • the second memory 2700 Since the second memory 2700 is in the tamper-resistant execution unit 2000, the data does not need to be deleted.
  • FIG. 15 is a flowchart showing the decryption processing, and a diagram showing the contents of the first memory and the second memory. This is the contents of the first memory (9070 to 9073) and the second memory (9080 to 9083) shown on the left side of the flowchart.
  • This encryption process is a process performed by the encryption unit 2100 of the tamper-resistant execution unit 2000.
  • the virtual machine 1300 passes the address of the encrypted data to be decrypted to the decryption unit 2200, and instructs the decryption unit (first memory 9070, second memory 9080).
  • the designated decryption unit 2200 reads the encrypted data at the passed address from the first memory to the second memory (step S810, second memory 9081, first memory 9071), and encrypts the first memory. Delete the data (first memory 9072).
  • Decryption section 2200 searches for address 1732 of encryption key information 2401 for the same address as the received address. If there is the same address, the key ID 2310 corresponding to the address 1732 is specified as the encrypted key ID (step S820).
  • a decryption key 2330 and an encryption algorithm 2340 corresponding to the specified key ID 2310 are obtained from the encryption method information 2301 (step S830), and the data is decrypted (step S840, the second memory 9082, 1 memory 9072).
  • a memory management function provided by the OS 1400 is used instead of the encryption processing and the decryption processing performed by the tamper-resistant execution unit 2000 in the first embodiment. Specifically, it is realized by changing the readable attribute of the first memory 1700 (see Fig. 1), which is the memory area where JIT-compiled native code and intermediate code are loaded!
  • the functional block diagram of the present embodiment is different from the functional block diagram of the first embodiment in FIG. 1 in that the anti-tamper execution unit 2000 is deleted and the memory 3700 described in FIG. Is used.
  • Figures 16 (a) and (b) show the state of the memory when the readable attribute and the unreadable attribute on the memory are set for the memory area that stores the JIT-consolidated code.
  • FIG. 16 (a) and (b) show the state of the memory when the readable attribute and the unreadable attribute on the memory are set for the memory area that stores the JIT-consolidated code.
  • the memory 3700 is divided into a memory 3710 and a memory 3720, and the readable attribute is set in both memories.
  • attack programs such as the virtual machine 1300 and the debugger can read the JIT-compiled code.
  • the memory 3711 has an unreadable attribute set, and at this time, it is not possible to read an attack program such as the virtual machine 1300 or a debugger or IT-compiled code.
  • the memory area storing the IT-compiled code is normally set to be unreadable, and the virtual machine 1300 needs to execute JIT-compiled code or use intermediate data. If necessary, set to be readable as needed.
  • the code that can be stolen is limited to only the code being executed by the first CPU 1900, so that damage such as tampering is minimized. Can be.
  • this eliminates the need to perform the encryption and decryption processes, and thus has the advantage that the JIT-con- nected program can be protected without reducing the execution speed.
  • the following can change the readable attribute of the memory.
  • the Linux OS has a system call mmapO that changes which attributes of memory are readable, writable, and executable.
  • mmapO changes which attributes of memory are readable, writable, and executable.
  • the function of changing the readable attribute of the memory may be realized by hardware.
  • the conventional computer provided with a data protection function mainly includes an encrypted program 201, a decryption unit 202, a virtual machine 203, and a CPU 204.
  • the decryption means 202 and the virtual machine 203 are described in a native code executable by the CPU 204, and the encryption program 201 encrypts a program described by an instruction set interpretable and executable by the virtual machine 203. It is a dagger.
  • Source code capability When generating an execution image of a software (a so-called internal format expanded on a memory), a unique instruction set for the virtual machine is generated, and the source code is compiled into the instruction set described above. Then, the virtual machine 203 and the decryption means 202 are linked.
  • the unique instruction set used here is information that is not made public, an attacker cannot understand the contents even if he sees the decrypted encryption program 201, and as a result, at the intermediate code level, It is more likely that an attacker will be able to prevent eavesdropping and tampering.
  • the execution device has a faster execution speed than the execution of the intermediate code. Even when an active code is created, the native code placed on an accessible memory can be protected from eavesdropping and tampering.
  • 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 class of the application may be divided, and the code of the force method that is to be encrypted in method units may be divided.
  • it has the same division information as the division information in the method header and the division information in the class header, and performs encryption and the like.
  • the encryption is performed unless the encryption strength information 1720 of the class header specifies that encryption is not performed.
  • the encryption processing and the decryption processing are optional. You can omit it with the combination of! / ,.
  • encryption and decryption can be omitted by deciding in advance that encryption and decryption should not be performed. It is possible.
  • the first CPU 1900 of the execution device 1000 and the second CPU 2900 of the tamper-resistant execution unit 2000 are physically different CPUs. It is also possible to virtually behave like two CPUs by switching operation modes. Also, in a CPU with multiple CPU cores in one CPU package, such as a multi-core CPU, a specific core may be operated as the second CPU!
  • the execution device 1000 and the tamper-resistant execution unit 2000 have a RAM and a ROM, respectively.
  • one RAM may be virtually treated as two RAMs.
  • one ROM may be virtually treated as two ROMs.
  • the ROM in the tamper-resistant execution unit 2000 may be loaded on the second CPU 2900.
  • the encryption strength information is embedded in the extended attribute of the class file.
  • the encryption strength information may be specified using other methods.
  • the application acquisition program 1100 acquires the XML file recording the encryption strength information at the same time as the application, and passes it to the virtual machine 1300, so that the virtual machine 1300 can know the encryption strength information such as the class. become.
  • the application executed by the execution device 1000 is an application acquisition program 1100.
  • the application file power outside the device is also assumed to be downloaded.
  • the application may be downloaded from a server on the Internet. Good.
  • the application acquisition program 1100 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 1000 may be a Java (registered trademark) application embedded as a digital broadcast data broadcast in an MPEG (Moving Picture Coding Experts Group) 2 transport stream! ,.
  • the application acquisition program 1100 is embedded in the transport stream.
  • This is a program for reading the Java (registered trademark) application into the execution device 1000.
  • a method of embedding a Java (registered trademark) program in an MPEG2 transport stream for example, there is a DSMCC method.
  • the DSMCC method is a method of encoding a file system composed of directories and files used in a computer in packets of an MPEG2 transport stream (MPEG standard ISOZIEC1381 81-1, MPEG standard ISOZIEC138181). — See 6).
  • the application executed by the execution device 1000 is an SD card (Secure
  • CD-ROM Compact Disk Read Only Memory
  • DVD Digital Versatile Disk
  • Blu-ray Disc etc.
  • Java registered trademark
  • the application acquisition program 1100 is a program for reading these recording medium power applications.
  • the application executed by the execution device 1000 may be a Java (registered trademark) application recorded in a ROM or the like in the execution device 1000! /.
  • the application acquisition program 1100 is a program for reading the Java (registered trademark) application into the working memory with the ROM power.
  • the application acquisition program 1100 and the like are written in a Java (registered trademark) language, and are written in a native language and have the same functions as those of a Java (registered trademark) program. Realized by hardware, it may be.
  • the application executed in the virtual machine is not limited to the one described in the Java (registered trademark) language, and may be the one described in another object-oriented language such as C ++. For example, it may be written in another language.
  • the tamper-resistant execution unit 2000 of the embodiment can be realized by using, for example, TrustZone (registered trademark) technology of ARM.
  • TrustZone registered trademark
  • hardware resources such as RAM and ROM can be virtually allocated to an execution environment called a secure domain.
  • the RAM and ROM assigned to the secure domain can be used only by programs that operate in the secure domain, and cannot be used by programs that operate in non-secure domains. I can't do that.
  • a conventional CPU has two types of modes, a normal mode in which an application operates and a privileged mode in which an OS or the like operates.
  • a program operating in a privileged mode must be altered from a program operating in the normal mode. I can not do it.
  • TrustZone (R) technology also offers a new special mode called monitor mode.
  • the monitor mode can be entered by executing a special instruction prepared by the CPU.
  • security information called S-bit is reported to peripheral hardware such as RAM and ROM.
  • RAM and ROM compatible with TrustZone® technology are configured to permit reading and writing of data to and from the area allocated to the secure domain only when the S-bit is notified.
  • assigned to the secure domain! / Read / write of data to / from the area is permitted regardless of whether the S-bit is notified or not.
  • the secure execution unit can be realized by the secure domain.
  • Intel's LaGrande technology is similar to the TrustZone (registered trademark) technology, such as virtually separating the domain in which ordinary applications and OSs operate from the domain in which applications requiring protection operate. Provides functions. By using such technology, a secure execution unit can be realized.
  • the tamper-resistant execution unit 2000 may be a smart card, an IC card, or the like that is detachable from the force execution device 1000 that is assumed to be built in the execution device 1000.
  • These smart cards and IC cards contain a CPU, memory, and security circuits inside the card.
  • the entire tamper-resistant execution unit 2000 may be realized by hardware.
  • a program for causing the CPU to execute each control process (see FIG. 1 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.
  • Java registered trademark
  • NTT DoCoMo provides a service called i-appli.
  • a mobile phone terminal downloads a Java (registered trademark) program from an application distribution server on the Internet and executes it on the terminal.
  • DVB Digital Video Broadcasting-Multimedia Home Platform
  • DVB In digital broadcasting based on the MHP standard, digital TV receives and executes a Java TM program multiplexed on a broadcast wave.

Abstract

An execution device executes an application program having a plurality of parts constituted by an instruction, generates a native code from the part in a particular memory area, and encrypts the native code generated so as to create an encrypted code. After this, the execution device deletes the native code generated and stores the created encrypted code in encrypted code storage means. When executing each part, the execution device decrypts the encrypted code corresponding to the part stored in the encrypted code storage means, executes the native code, and deletes the native code which has been executed.

Description

明 細 書  Specification
実行装置  Execution device
技術分野  Technical field
[0001] 本発明は、プログラムの盗聴および改竄を防止する技術に関し、特に、プログラム 実行時に、実行中のプログラムが盗聴および改竄されることを防止する技術に関する 背景技術  The present invention relates to a technology for preventing eavesdropping and falsification of a program, and more particularly to a technology for preventing a program being executed from being eavesdropped and falsified during execution of the program.
[0002] 近年、様々なアプリケーション.プログラム(以下、「アプリケーション」という。)が、パ ソコンをはじめ、デジタルテレビや携帯電話機などの情報処理機能を有した装置で 実行されている。  [0002] In recent years, various application programs (hereinafter, referred to as "applications") have been executed by devices having information processing functions, such as personal computers, digital televisions, and mobile phones.
これらのアプリケーションは、元々その装置に組み込まれていたものや、ユーザが 購入し乗せたもの、また、プログラム配信サービスによって提供されているものなど様 々である。プログラム酉 S信サービスによるものとは、例えば、インターネットを介してダ ゥンロードしたり、デジタル放送の放送波に多重化されて送信されてくるものである。  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.
[0003] その一方で、プログラムが改竄されたり、データが盗まれたりという不正行為が起こ つている。このような不正行為は、プログラム配信サービス等の円滑な実施の障害と なることから、プログラムの改竄等を防止する技術が開発されている。 [0003] On the other hand, illegal acts such as falsification of programs and data theft have occurred. Since such fraudulent acts may hinder the smooth implementation of the program distribution service and the like, techniques for preventing tampering of the program have been developed.
例えば、アプリケーションを仮想マシンで実行するような実行装置においては、アブ リケーシヨンを暗号ィ匕などにより保護したとしても、仮想マシン内では、復号化された 平文で処理を行う必要があるため、プログラムを盗聴、改竄される可能性がある。そこ で、 Java (登録商標)言語におけるバイトコードに相当するような中間コードである命 令セットを独自に作成し、かつ公開も行わないこととして、仮想マシン内でのアプリケ ーシヨンを保護しょうとする技術が開発されている (特許文献 1参照)。この技術によれ ば、仮想マシン内の中間コードは、盗聴、改竄から守られる。  For example, in an execution device that executes an application in a virtual machine, even if the application is protected by encryption or the like, it is necessary to process the decrypted plaintext in the virtual machine. Eavesdropping and tampering are possible. Therefore, an instruction set that is an intermediate code equivalent to the byte code in the Java (registered trademark) language is created independently and is not published, so that the application in the virtual machine is protected. Technology has been developed (see Patent Document 1). According to this technology, the intermediate code in the virtual machine is protected from eavesdropping and tampering.
特許文献 1 :特開 2002— 132364号公報  Patent Document 1: JP 2002-132364 A
発明の開示  Disclosure of the invention
発明が解決しょうとする課題 [0004] しかし、アプリケーションの実行速度を考慮すると、中間コードを順番に解釈し、実 行していくよりも、 CPU (Central Processing Unit)が直接実行できるネイティブコード を実行するほうが速いため、実行速度が要求されるアプリケーションを実行する仮想 マシンでは、中間コードで作成されたアプリケーションをロード等するときにネイティブ コードに変換し、次からはネイティブコードを実行する方式が取られる場合が多い。 Problems the invention is trying to solve [0004] However, considering the execution speed of an application, it is faster to execute native code that can be directly executed by a CPU (Central Processing Unit) than to interpret and execute the intermediate code in order, so that the execution speed is increased. In a virtual machine that executes an application that requires an application, a method is often adopted in which an application created with intermediate code is converted to native code when loading or the like, and then the native code is executed.
[0005] この場合、ネイティブコードは、通常、必要がなくなるまでアクセス可能なメモリ上に 置かれる場合が多いにも関わらず、何ら盗聴、改竄カゝら守る方策は取られていないこ とになる。  [0005] In this case, although the native code is usually placed on an accessible memory until it is no longer needed, no measure is taken to protect the code from eavesdropping and tampering. .
そこで、本発明は、中間コードのみならず、ネイティブコードの盗聴および改竄を防 止するような実行装置の提供を目的とする。  Therefore, an object of the present invention is to provide an execution device that prevents eavesdropping and tampering of not only an intermediate code but also a native code.
課題を解決するための手段  Means for solving the problem
[0006] 上記課題を解決する為に、本発明の実行装置は、命令で構成される部分を複数個 有するアプリケーションプログラムを実行する実行装置であって、部分力もネイティブ コードを特定のメモリ領域に作成し、作成したネイティブコードを暗号ィ匕して暗号コー ドを作成した後、前記作成したネイティブコードを削除し、作成した暗号コードを暗号 コード記憶手段に記憶するネイティブコード作成手段と、暗号コード記憶手段に記憶 されて ヽる暗号コードを復号し、ネイティブコードを特定のメモリ領域に作成する復号 手段と、各部分を実行する際に、当該部分に該当する暗号コードを前記復号手段に より復号し、ネイティブコードを実行した後、実行したネイティブコードを削除する実行 制御手段とを備えることを特徴とする。 [0006] In order to solve the above problem, an execution device of the present invention is an execution device that executes an application program having a plurality of portions each including an instruction, and partially creates a native code in a specific memory area. Then, after creating the encrypted code by encrypting the created native code, the created native code is deleted, and the created encrypted code is stored in the encrypted code storage means. Decrypting means for decrypting an encrypted code stored in the means and creating a native code in a specific memory area, and decrypting the encrypted code corresponding to the part when executing each part by the decrypting means. And execution control means for deleting the executed native code after executing the native code.
発明の効果  The invention's effect
[0007] 本発明に係る実行装置は、上述の構成を備えることにより、仮想マシン内でのネィ ティブコードは暗号化されており、実行する時に、実行する範囲のみが復号された状 態となるので、第三者力 の盗聴、改竄される機会を大幅に減らすことができるように なる。  [0007] The execution device according to the present invention has the above configuration, whereby the native code in the virtual machine is encrypted, and when executed, only the execution range is in a decrypted state. As a result, the chances of eavesdropping and tampering by a third party can be greatly reduced.
従って、仮想マシンで実行されるアプリケーションの盗聴および改竄を、大幅に防 止できることとなる。  Therefore, the eavesdropping and falsification of the application executed in the virtual machine can be largely prevented.
[0008] また、前記アプリケーションプログラムは、更に、各部分ごとに暗号ィ匕する力否かを 示す秘匿性情報を含み、前記ネイティブコード作成手段および前記実行制御手段 は、前記秘匿性情報が暗号ィ匕することを示している部分に限り、当該部分を対象とし て処理することとしてもよい。 [0008] Further, the application program further determines whether or not each part has the ability to perform encryption. The native code creation unit and the execution control unit may include the confidentiality information shown in FIG. 4 and process only the part that indicates that the confidentiality information is encrypted.
これにより実行装置は、アプリケーションの秘匿性が高い場合のみ、暗号化すること ができるので、実行速度を落とさずに、アプリケーションを盗聴、改竄から守ることが 出来るようになる。  As a result, the execution device can perform encryption only when the confidentiality of the application is high, so that the application can be protected from eavesdropping and tampering without reducing the execution speed.
[0009] また、前記秘匿性情報は、更に、秘匿の度合!/、を示す情報を含み、前記ネイティブ コード作成手段は、前記秘匿性情報が暗号化することを示している場合に限り、前記 秘匿性情報に基づいて決定された暗号化方式で暗号化した暗号コードを作成する こととしてちよい。  [0009] Further, the confidentiality information further includes information indicating a degree of confidentiality! /, And the native code creating unit performs the confidentiality information only when the confidentiality information indicates that the confidentiality information is to be encrypted. An encryption code encrypted with the encryption method determined based on the confidentiality information may be created.
これにより実行装置は、アプリケーションの秘匿性に応じて、暗号化方式を選ぶこと ができ、秘匿性の高い部分は、より暗号強度の高い暗号ィ匕方式で暗号ィ匕することが できるので、秘匿性の高い部分は、より強固に改竄等から守る事が出来るようになる。 また、暗号強度の高い暗号化方式で暗号化する部分を選択することにより、全体とし ての実行速度の低下を抑えることができる。  This allows the execution device to select an encryption method in accordance with the confidentiality of the application, and allows the part with high confidentiality to be encrypted by the encryption method with higher encryption strength. Higher-quality parts can be more securely protected from tampering and the like. Further, by selecting a portion to be encrypted by an encryption method having a high encryption strength, it is possible to suppress a decrease in overall execution speed.
[0010] また、前記部分は、分岐命令を含まな 、一連の命令群であることとしてもよ!、。 [0010] The portion may be a series of instructions including no branch instruction!
また、前記アプリケーションプログラムは、オブジェクト指向言語で作成され、前記部 分は、メソッドであることとしてもよ 、。  Further, the application program may be created in an object-oriented language, and the part may be a method.
また、前記部分は、 1つの命令であることとしてもよい。  Further, the part may be one instruction.
これにより実行装置は、保護したい部分を、より細力な単位で暗号ィ匕することができ 、仮想マシン内での復号ィ匕されるネイティブコードの量を、必要最小限度にし、部分 の実行時間も必要最小限度にすることができるので、よりきめ細力べアプリケーション を盗聴、改寬から守ることが出来るよう〖こなる。  This allows the execution device to encrypt the portion to be protected in finer units, minimizes the amount of native code to be decrypted in the virtual machine to the necessary minimum, and reduces the execution time of the portion. Can be minimized, so that more detailed applications can be protected from eavesdropping and modification.
[0011] また、本発明の実行装置は、命令で構成される部分を複数個有するアプリケーショ ンプログラムを実行する実行装置であって、所定のメモリ領域への読出し及び書込み のアクセスを、許可又は禁止するよう制御するアクセス制御手段と、前記アクセス手段 により、前記所定のメモリ領域への書込みのアクセスを許可し、部分カゝらネイティブコ ードを前記所定のメモリ領域に作成し、前記アクセス手段により、前記所定のメモリ領 域への書込みのアクセスを禁止するネイティブコード作成手段と、部分を実行する際 に、前記アクセス手段により、前記所定のメモリ領域への読込みのアクセスを許可し、 当該部分に該当するネイティブコードを読出した後、前記アクセス手段により、前記 所定のメモリ領域への読込みのアクセスを禁止する実行制御手段とを備えることを特 徴とする。 [0011] Further, the execution device of the present invention is an execution device that executes an application program having a plurality of parts composed of instructions, and permits or prohibits read and write access to a predetermined memory area. Access control means for controlling the access to the memory device and the access means to permit write access to the predetermined memory area, create a native code from the partial memory in the predetermined memory area, and The predetermined memory area Means for creating a native code for prohibiting write access to the area, and, when executing a part, permitting access for reading to the predetermined memory area by the access means, and reading a native code corresponding to the part. And execution control means for prohibiting read access to the predetermined memory area by the access means.
[0012] 本発明に係る実行装置は、上述の構成を備えることにより、ネイティブコードはァク セス不可能の領域に記憶しておき、実行するときにのみ読み出すことができるので、 第三者からの盗聴、改竄される機会を大幅に減らすことができるようになる。  [0012] With the above configuration, the execution device according to the present invention can store the native code in an inaccessible area and read it only when executing the native code. The chances of eavesdropping and tampering can be greatly reduced.
図面の簡単な説明  Brief Description of Drawings
[0013] [図 1]本発明にかかる実行装置の構成を表す図である。 FIG. 1 is a diagram showing a configuration of an execution device according to the present invention.
[図 2]クラスファイルの構成例を示す図である。  FIG. 2 is a diagram showing a configuration example of a class file.
[図 3]クラスブロックの構成例を示す図である。  FIG. 3 is a diagram showing a configuration example of a class block.
[図 4]図 4 (a)は、クラスヘッダの構成例を示す図であり、図 4 (b)は、メソッドヘッダの 構成例を示す図である。  [FIG. 4] FIG. 4 (a) is a diagram showing a configuration example of a class header, and FIG. 4 (b) is a diagram showing a configuration example of a method header.
[図 5]図 5 (a)は、暗号強度情報の内容例を表す図であり、図 5 (b)は、分割情報の構 成例および内容例を表す図である。  [FIG. 5] FIG. 5 (a) is a diagram illustrating an example of the content of encryption strength information, and FIG. 5 (b) is a diagram illustrating a configuration example and an example of content of division information.
[図 6]暗号化方式情報の構成例および内容例を表す図である。  FIG. 6 is a diagram illustrating a configuration example and a content example of encryption method information.
[図 7]暗号鍵情報の構成例および内容例を表す図である。  FIG. 7 is a diagram illustrating a configuration example and a content example of encryption key information.
[図 8]実行装置 1000の処理を表すフローチャートである。  FIG. 8 is a flowchart showing a process of the execution device 1000.
[図 9]クラスロード処理を表すフローチャート、および第 1メモリの内容を表す図である  FIG. 9 is a flowchart showing a class loading process and a diagram showing contents of a first memory.
[図 10]ベリファイ処理を表すフローチャート、および第 1メモリの内容を表す図である。 FIG. 10 is a flowchart showing a verifying process and a diagram showing contents of a first memory.
[図 11]メソッド実行処理を表すフローチャート、および第 1メモリの内容を表す図であ る。  FIG. 11 is a flowchart showing a method execution process and a diagram showing contents of a first memory.
[図 12 ITコンパイル処理を表すフローチャート、および第 1メモリの内容を表す図で ある。  FIG. 12 is a flowchart illustrating an IT compilation process and a diagram illustrating contents of a first memory.
[図 13]最適化処理を表すフローチャート、および第 1メモリの内容を表す図である。  FIG. 13 is a flowchart showing an optimization process and a diagram showing contents of a first memory.
[図 14]暗号化処理を表すフローチャート、および第 1メモリ、第 2メモリの内容を表す 図である。 FIG. 14 is a flowchart showing an encryption process, and shows contents of a first memory and a second memory. FIG.
[図 15]復号ィ匕処理を表すフローチャート、および第 1メモリ、第 2メモリの内容を表す 図である。  FIG. 15 is a flowchart showing a decoding process, and a diagram showing contents of a first memory and a second memory.
[図 16]実施形態 2のメモリの構成を表す図である。 図 16 (a)は、メモリ上の読み込み 可能属性を設定した状態を表す図であり、図 16 (b)は、メモリ上の読み込み不可能 領属性を設定した状態を表す図である。  FIG. 16 is a diagram illustrating a configuration of a memory according to a second embodiment. FIG. 16 (a) is a diagram showing a state in which a readable attribute on the memory is set, and FIG. 16 (b) is a diagram showing a state in which a non-readable attribute on the memory is set.
[図 17]従来技術の構成を表す図である。 FIG. 17 is a diagram illustrating a configuration of a conventional technique.
符号の説明 Explanation of symbols
201 プログラム  201 programs
201 暗号化プログラム  201 Encryption Program
202 復号化手段  202 Decryption means
203 仮想機械  203 Virtual Machine
204 CPU  204 CPU
1000 実行装置  1000 execution device
1100 アプリ取得プログラム  1100 Application acquisition program
1200 アプリケーション  1200 applications
1210 クラスファイル  1210 Class file
1300 仮想マシン  1300 virtual machine
1301 暗号化方式情報  1301 Encryption method information
1310 インタプリタ  1310 Interpreter
1320 クラスローダ  1320 Class loader
1330 ベリファイャ  1330 Verifier
1340 JITコンパイラ  1340 JIT compiler
1350 オプティマイザ  1350 optimizer
1400 OS  1400 OS
1701 クラスブロック  1701 Class Block
1700 第 1メモリ  1700 1st memory
1710 クラスヘッダ 1720 暗号強度情報 1710 Class header 1720 Encryption strength information
1730 分割情報  1730 Split information
1800 メソッド  1800 method
1810 メソッドヘッダ  1810 Method Header
1811 暗号強度情報  1811 Encryption strength information
1850 コード  1850 code
1900 第 1CPU  1900 1st CPU
2000 耐タンパ実行部  2000 Tamper resistant execution unit
2100 暗号化部  2100 Encryption unit
2200 復号化部  2200 decryption unit
2300 暗号化方式情報記憶部  2300 Encryption method information storage
2301 暗号化方式情報  2301 Encryption method information
2310 鍵 ID  2310 key ID
2320 喑号鍵  2320 鍵 key
2330 復号鍵  2330 Decryption key
2340 暗号アルゴリズム  2340 Cryptographic algorithm
2400 暗号鍵情報記憶部  2400 Encryption key information storage
2401 暗号鍵情報  2401 Encryption key information
2700 第 2メモリ  2700 Second memory
2900 第 2CPU  2900 2nd CPU
3700 メモリ  3700 memory
発明を実施するための最良の形態 BEST MODE FOR CARRYING OUT THE INVENTION
<実施形態 1 > <First embodiment>
<概要 >  <Overview>
本発明に係る実行装置は、アプリケーションを実行する際には、プログラムの分岐 命令などの存在により、すべての命令が順次実行されていくものではないこと、また、 仮想マシンでアプリケーションを実行する場合には、ベリファイの処理や、最適化の 処理など、複数の処理を経た後に、初めて実行されるものであることに着目して、ァ プリケーシヨンを盗聴、改竄から守ろうとするものである。 The execution device according to the present invention is configured such that, when executing an application, not all instructions are sequentially executed due to the presence of a branch instruction of a program, etc. Focusing on the fact that is executed for the first time after passing through multiple processes such as verification and optimization, This is to protect the case from eavesdropping and tampering.
[0016] すなわち、アプリケーションが暗号化されていたとしても、各処理を行うには、いわゆ る平文の状態でメモリ上に置力ざるを得ない場合があり、コスト面などを考慮すると、 このメモリは耐タンパ性を有しては ヽな 、のが通常である。  [0016] In other words, even if the application is encrypted, in order to perform each process, there is a case where it is inevitable to put it in a so-called plaintext state on a memory. Usually, the memory does not have tamper resistance.
従って、このメモリ上に置かれる平文の量を出来るだけ少なくし、かつ、平文である 時間を出来るだけ短くすることで、悪意ある第三者による盗聴、改竄の機会を減らそ うというの力 本発明の狙いである。  Therefore, by reducing the amount of plaintext placed on the memory as much as possible and by shortening the time of plaintext as much as possible, the power of eavesdropping and falsification by a malicious third party is reduced. The aim is.
[0017] 具体的には、例えば、 Java (登録商標)言語で作成されたアプリケーションであれば[0017] Specifically, for example, if the application is written in the Java (registered trademark) language,
、クラスのロード時に、クラスを複数に分割し、それぞれの分割部分を暗号ィ匕して、メ モリ上に配置する。 When the class is loaded, the class is divided into a plurality of parts, and each divided part is encrypted and arranged on the memory.
その後、ベリファイ処理や JITコンパイル処理などを行う際に、原則として、 1つの分 割部分のみを復号し処理を行い、処理を施して得られた新しい部分は暗号化し、処 理の基となった部分は削除する。この手順を繰り返すことにより、 1つのクラスに対す る処理を行う。  After that, when performing verification processing or JIT compilation processing, in principle, only one divided part was decrypted and processed, and the new part obtained by processing was encrypted, which became the basis of processing Delete the part. By repeating this procedure, processing for one class is performed.
[0018] このことにより、常に、平文であるバイトコードまたはネイティブコードは、処理に必要 な最小の量が、最短時間の間だけメモリ上に存在することになり、平文のプログラム が盗聴、改竄されることを可能な限り防止することが可能となる。  [0018] As a result, the bytecode or native code that is plaintext always exists in the memory for a minimum amount of time necessary for processing, and the plaintext program is intercepted and falsified. Can be prevented as much as possible.
すなわち、分割 ·暗号化されたデータを必要なときに必要な分だけ復号ィ匕すること で、重要なデータが復号ィ匕された状態でアクセス可能なメモリに格納される時間を削 減することが可能になるのである。  That is, the time required to store important data in an accessible memory in a decrypted state is reduced by decrypting the divided / encrypted data by a necessary amount when necessary. It becomes possible.
[0019] また、本発明は、アプリケーションの重要度に応じて、 自由に暗号ィ匕の度合いを変 免ることが可會であることち特徴とする。 Further, the present invention is characterized in that it is possible to freely change the degree of encryption according to the importance of the application.
アプリケーションの秘匿性の度合いは、そのアプリケーションを作成するときに、作 成者またはそのユーザのみが知りうるものである。  The degree of confidentiality of an application can only be known by the creator or the user when creating the application.
従って、本発明に係る実行装置は、クラス内の特定の分割部分には、暗号の強さを 指定できるものであり、秘匿性が低く暗号ィ匕を行わなくてもいい部分と、比較的秘匿 性が高い部分などで、暗号ィ匕の方法をかえることができる。また、それぞれの分割部 分に、異なる暗号鍵を用いて暗号ィ匕を施すことで、全体の暗号強度を高めることがで きる。 Therefore, the execution device according to the present invention can specify the strength of encryption for a specific divided part in a class, and the part that has low confidentiality and does not need to perform encryption is relatively confidential. It is possible to change the encryption method in a portion having high property. In addition, by performing encryption using a different encryption key for each divided portion, the overall encryption strength can be increased. Wear.
[0020] 結果として、暗号化、復号化にかかる時間を最小限度にすることができるので、全 体としての実行時間の低下を最小限に抑えつつ、実行中のプログラムの改竄等を防 ぐ機能を備えて 、るものであると 、える。  As a result, since the time required for encryption and decryption can be minimized, a function that prevents tampering of the program being executed while minimizing a decrease in the overall execution time. With that, it is said that it is something.
以下、本発明の実施形態に係る実行装置について説明する。  Hereinafter, an execution device according to an embodiment of the present invention will be described.
本実施形態では、 Java (登録商標)バーチャルマシン上で動 ava (登録商標)ァ プリケーシヨンにつ 、て説明する。  In the present embodiment, an ava (registered trademark) application running on a Java (registered trademark) virtual machine will be described.
[0021] <構成> [0021] <Configuration>
図 1は、本発明にかかる実行装置の構成を表す図である。  FIG. 1 is a diagram illustrating a configuration of an execution device according to the present invention.
実行装置 1000は、アプリ取得プログラム 1100、アプリケーション 1200、仮想マシ ン 1300、 OS (Operating System) 1400、第 1メモリ 1700、第 1CPU (Central Processing Unit) 1900および耐タンパ実行部 2000で構成される。  The execution device 1000 includes an application acquisition program 1100, an application 1200, a virtual machine 1300, an OS (Operating System) 1400, a first memory 1700, a first CPU (Central Processing Unit) 1900, and a tamper-resistant execution unit 2000.
[0022] 実行装置 1000は、アプリケーションを実行する機能のほか、それぞれの装置特有 の機能を有する(図示していない)。本実行装置 1000は、具体的には、デジタルテレ ビ、セットトップボックス、 DVDレコーダー、 BD (Blu-ray Disc)レコーダー、カーナビ 端末、携帯電話機、 PDA (Personal Digital Assistance)などの、 Java (登録商標)仮 想マシンを搭載する電子機器全般が該当する。  The execution device 1000 has a function specific to each device in addition to a function of executing an application (not shown). Specifically, the execution device 1000 is a Java (registered trademark) such as a digital television, a set-top box, a DVD recorder, a BD (Blu-ray Disc) recorder, a car navigation terminal, a mobile phone, a PDA (Personal Digital Assistance), and the like. ) All electronic devices equipped with virtual machines are applicable.
[0023] ここで、本実行装置 1000のアプリケーションを実行する機能とは、通常のパーソナ ルコンピュータやデジタル家電機器等に搭載されているソフトウェア実行手段と同様 のものである。例えば、実行装置 1000がデジタルテレビであれば、受信したデジタ ルデータを画像に変換し表示するアプリケーションを実行することになる。  Here, the function of executing the application of the execution device 1000 is the same as the software execution means mounted on a normal personal computer, digital home appliance, or the like. For example, if the execution device 1000 is a digital television, an application that converts received digital data into an image and displays the image is executed.
まず、アプリケーション 1200は、本実行装置 1000で実行するアプリケーションであ つて、本装置外のアプリケーションファイル力もダウンロードされたものであるとする。  First, it is assumed that the application 1200 is an application to be executed by the execution device 1000, and the application file outside the device is also downloaded.
[0024] アプリ取得プログラム 1100は、 Java (登録商標)言語で記述されており、アプリケー シヨン 1200を外部のファイル力も読み込み、アプリケーションの実行に必要な処理を 実行、制御する機能を有する。  [0024] The application acquisition program 1100 is described in the Java (registered trademark) language, and has a function of reading an application 1200 from an external file, and executing and controlling processes necessary for executing the application.
次に、仮想マシン 1300は、 Java (登録商標)言語で記述されたプログラムを逐次解 祈し実行する Java (登録商標)仮想マシンである。言い換えれば、ソフトウェアプログ ラムである仮想マシン 1300力 仮想の CPUをシミュレートして、 Java (登録商標)の 命令コードを解析実行する。 Next, the virtual machine 1300 is a Java (registered trademark) virtual machine that sequentially prays and executes a program described in the Java (registered trademark) language. In other words, a software program A virtual machine that is a ram 1300 simulates a virtual CPU and analyzes and executes Java (registered trademark) instruction codes.
[0025] この仮想マシン 1300は、インタプリタ 1310、クラスローダ 1320、ベリファイャ 1330 、JITコンパイラ 1340およびオプティマイザ 1350で構成される。  The virtual machine 1300 includes an interpreter 1310, a class loader 1320, a verifier 1330, a JIT compiler 1340, and an optimizer 1350.
インタプリタ 1310は、アプリケーション 1200のバイトコードを解釈、実行する機能を 有し、仮想マシンにおいて中核な処理を行う。具体的には、プログラムで呼び出され たメソッドが、まだローデイングされていなければ、そのメソッドが属するクラスをロード するよう指示を出したり、メソッドの実行を指示したりする。ここで、バイトコードとは、 Ja va (登録商標)言語で書かれたソースをコンパイルすることにより得られる、ハードゥエ ァに依存しな ヽ中間コードである。  The interpreter 1310 has a function of interpreting and executing the bytecode of the application 1200, and performs core processing in the virtual machine. Specifically, if the method called by the program has not been loaded yet, it issues an instruction to load the class to which the method belongs, or instructs the execution of the method. Here, the bytecode is an intermediate code that is obtained by compiling a source written in the Java (registered trademark) language and that does not depend on the hardware.
[0026] クラスローダ 1320は、アプリケーション 1200を構成するクラスファイルを、外部のフ アイルから読込みロードする機能を有する。また、クラスローダ 1320は、クラスをアン ロードする機能も有する。実行が終了し不要になったクラスを仮想マシン 1300から取 り除く機能である。  The class loader 1320 has a function of reading and loading a class file constituting the application 1200 from an external file. The class loader 1320 also has a function of unloading a class. This function removes unnecessary classes after execution from the virtual machine 1300.
また、ベリファイャ 1330は、クラスのデータ形式の不備や、クラスに含まれるノイトコ ードの安全性を判定する機能を有する。クラスローダ 1320は、ベリファイャ 1330に お 、て妥当ではな 、と判定されたクラスのロードは行わな 、。  Further, the verifier 1330 has a function of judging a defect in the data format of the class and the security of the Knot code included in the class. The class loader 1320 does not load the class determined to be valid by the verifier 1330.
[0027] JITコンパイラ 1340は、バイトコードを第 1CPU1900が理解可能な実行形式に翻 訳する機能を有する。 [0027] The JIT compiler 1340 has a function of translating the bytecode into an executable format that can be understood by the first CPU 1900.
オプティマイザ 1350は、プログラムの仕様を変えずに、より高速に実行でき、より小 さ 、メモリ使用量で動作するように、プログラムの細かな見直しを行う機能を有する。 次に、 OS1400は、他のサブプログラムを平行して実行するカーネル及び、ライブ ラリで構成される技術の総称であり、仮想マシン 1300をサブプログラムとして実行す る。例えば、 Linux等がある。  The optimizer 1350 has a function of finely revising a program so that the program can be executed at a higher speed without changing the specification of the program, and operates with smaller size and memory usage. Next, the OS 1400 is a general term for a technology configured by a kernel and a library that execute other subprograms in parallel, and executes the virtual machine 1300 as a subprogram. For example, there is Linux.
[0028] 第 1メモリ 1700は、いわゆる作業メモリであり、 RAM (Random Access Memory)で 構成される。具体的には、 SRAM (Static Random Access Memory)ゝ DRAM ( Dynamic Random Access Memory)等の一次記憶メモリである。 [0028] The first memory 1700 is a so-called working memory, and is composed of a RAM (Random Access Memory). Specifically, it is a primary storage memory such as an SRAM (Static Random Access Memory) divided by a DRAM (Dynamic Random Access Memory).
この第 1メモリは、第 1CPU1900が使用し、 OSや仮想マシンなども、この第 1メモリ にロードされて実行されていることになる。 This first memory is used by the first CPU 1900, and the OS and virtual machines are also used by this first memory. Will be loaded and executed.
[0029] 第 1CPU1900は、仮想マシン 1300、 OS 1400,アプリケーション 1200等を実行 する機能を有する。  The first CPU 1900 has a function of executing a virtual machine 1300, an OS 1400, an application 1200, and the like.
実行装置 1000は、他に、仮想マシン 1300のプログラムなどを記憶しておく手段( 図示していない)を有している。例えば、 ROM (Read Only Memory)、具体的にはフ ラッシュメモリゃノヽードディスク等の不揮発性メモリである。また、 BD— ROM等の記 録媒体であってもよい。  The execution device 1000 further has means (not shown) for storing a program of the virtual machine 1300 and the like. For example, it is a ROM (Read Only Memory), specifically, a nonvolatile memory such as a flash memory or a node disk. Further, a recording medium such as a BD-ROM may be used.
[0030] 次に、耐タンパ実行部 2000は、暗号ィ匕部 2100、復号ィ匕部 2200、暗号化方式情 報記憶部 2300、暗号鍵情報記憶部 2400、第 2メモリ 2700および第 2CPU2900で 構成される。  Next, the tamper-resistant execution unit 2000 includes an encryption unit 2100, a decryption unit 2200, an encryption method information storage unit 2300, an encryption key information storage unit 2400, a second memory 2700, and a second CPU 2900. Is done.
耐タンパ実行部 2000は、悪意のある第三者からの攻撃を防御しつつ安全にプログ ラムを実行させることができるプログラム実行手段である。  The tamper-resistant execution unit 2000 is a program execution means that can execute a program safely while defending an attack from a malicious third party.
[0031] 暗号化部 2100は、仮想マシン 1300から、第 1メモリ 1700上のアドレスを受け取り、 そのデータを暗号化する機能を有する。また、どのような暗号方式で暗号ィ匕するかを 決定する機能も有する。 The encryption unit 2100 has a function of receiving an address on the first memory 1700 from the virtual machine 1300 and encrypting the data. It also has a function of determining what encryption method to use for encryption.
また、復号化部 2200は、仮想マシン 1300から、第 1メモリ 1700上のアドレスを受 け取り、そのデータを復号ィ匕する機能を有する。  Further, the decryption unit 2200 has a function of receiving an address on the first memory 1700 from the virtual machine 1300 and decrypting the data.
[0032] 暗号化方式情報記憶部 2300は、本実行装置で使用する暗号化方式が記憶され ている。具体的には、複数の暗号アルゴリズムと鍵の組合せであり、本実施形態では 、 6種類の組合せが記憶されている。図 6を用いて、後で説明する。 [0032] The encryption method information storage unit 2300 stores the encryption method used in the execution device. Specifically, it is a combination of a plurality of encryption algorithms and keys, and in the present embodiment, six types of combinations are stored. This will be described later with reference to FIG.
次に、暗号鍵情報記憶部 2400は、第 1メモリ上のデータのアドレスと、そのデータ をどの暗号化方式で暗号化したかを記憶している。ここでの暗号化方式は、暗号ィ匕 方式情報記憶部 2300に記憶されている暗号ィ匕方式のうちのいずれかである。図 7を 用いて、後で説明する。  Next, the encryption key information storage unit 2400 stores the address of the data on the first memory and the encryption method used to encrypt the data. Here, the encryption method is one of the encryption methods stored in the encryption method information storage unit 2300. This will be described later with reference to FIG.
[0033] 第 2メモリ 2700は、第 1メモリ 1700と同様の、いわゆる作業メモリであり、 RAM ( Random Access Memory)で構成される。この第 2メモリは、第 2CPUが使用する。 第 2CPU2900は、暗号化部 2100、復号化部 2200等の処理を実行する機能を有 する。 [0034] ここで、耐タンパ実行部 2000と、その外部の仮想マシン 1300等との通信は、盗聴 等できないように保護されているものとする。また、耐タンパ実行部 2000内の第 2メモ リゃ各記憶部は、耐タンパ実行部 2000の外部からはアクセスできないものとする。た だし、耐タンパ実行部 2000からは、耐タンパ実行部 2000の外部の第 1メモリや記憶 部にはアクセスできるものとする。 [0033] The second memory 2700 is a so-called working memory similar to the first memory 1700, and is composed of a RAM (Random Access Memory). This second memory is used by the second CPU. The second CPU 2900 has a function of executing processes of the encryption unit 2100, the decryption unit 2200, and the like. Here, it is assumed that the communication between the tamper-resistant execution unit 2000 and the external virtual machine 1300 or the like is protected so as not to be eavesdropped. Further, the second memory in the tamper-resistant execution unit 2000 and each storage unit cannot be accessed from outside the tamper-resistant execution unit 2000. However, it is assumed that the tamper-resistant execution unit 2000 can access the first memory and the storage unit outside the tamper-resistant execution unit 2000.
[0035] また、第 1CPU1900と第 2CPU2900とは独立して動作できるものとする。ここで第 1CPU1900と第 2CPU2900と力 S独立して動くとは、例えば、実行装置 1000が複数 の CPUを備え、そのうちの 1つの CPUを第 2CPU2900として利用する場合が該当 する。  It is assumed that the first CPU 1900 and the second CPU 2900 can operate independently. Here, the case where the first CPU 1900 and the second CPU 2900 operate independently of each other means, for example, a case where the execution device 1000 includes a plurality of CPUs and one of them is used as the second CPU 2900.
尚、実行装置 1000の各機能は、実行装置 1000のメモリ又はハードディスクに格納 されているプログラムを CPUが実行することにより実現される。  Each function of the execution device 1000 is realized by the CPU executing a program stored in a memory or a hard disk of the execution device 1000.
[0036] <データ > [0036] <Data>
以下、本実行装置 1000で用いる主なデータについて、図 2から図 7を用いて説明 する。  Hereinafter, main data used in the execution apparatus 1000 will be described with reference to FIGS.
図 2は、クラスファイルの構成例を示す図である。アプリケーション 1200は、複数の クラスファイルで構成されており、このクラスファイルを、仮想マシン 1300が解釈実行 していく。  FIG. 2 is a diagram showing a configuration example of a class file. The application 1200 is composed of a plurality of class files, and the virtual machine 1300 interprets and executes the class files.
[0037] クラスファイル 1210は、複数の要素で構成されているが、ここでは本実施形態にお ヽて、特に関係のある magic― numDerl2l l、 minor― versionl212、 major― ve rsionl21d、 fields― countl214、 fields [fields― count] 1215、 metnoas― cou nt 1216、 methods [methods― count] 1217および attributes [attributes― cou nt] 1218のみを説明し、他の要素の詳細な説明は省略する。  [0037] The class file 1210 is composed of a plurality of elements, but in this embodiment, magic-numDerl2l1, minor-versionl212, major-versionl21d, fields-countl214, Only fields [fields-count] 1215, metnoas-count 1216, methods [methods-count] 1217 and attributes [attributes-count] 1218 are described, and detailed descriptions of other elements are omitted.
[0038] magic— numberl211は、 Java (登録商標)のクラスファイルであることを示すもの である。 Java (登録商標)クラスファイルは必ず「CAFEBABE」 t ヽぅ固定値から始ま る。ここの値が「CAFEBABE」でないクラスファイルは、ベリファイ処理を通過できな いことになる。  [0038] magic—numberl211 indicates that the file is a Java (registered trademark) class file. Java (registered trademark) class files always start with “CAFEBABE” t ヽ ぅ fixed value. Class files whose value is not "CAFEBABE" cannot be passed through the verification process.
minor— version 1212および maj or— version 1213は、このクラスファイルを作成 したバイトコードコンパイラのバージョンを表す。このバージョンを仮想マシン 1300が サポートしている場合のみ、仮想マシンによって実行される。尚、 minor— version 1minor—version 1212 and maj or—version 1213 indicate the version of the bytecode compiler that created this class file. This version of the virtual machine 1300 Executed by virtual machine only if supported. In addition, minor— version 1
212はこのクラスファイルを作成したコンパイラのマイナーバージョンを示し、 major— versionl213は、メジャーバージョンを示す。 212 indicates the minor version of the compiler that created this class file, and major—versionl213 indicates the major version.
[0039] fields— countl214は、 fieldsの個数であり、 fields [fields— count] 1215は、こ のクラスがもつフィールドについての情報の配列である。 [0039] fields-countl 214 is the number of fields, and fields [fields-count] 1215 is an array of information about the fields of this class.
3;た、 methods― countl216は、 methodsの個数であり、 methods [methods― count] 1217は、このクラスが持つメソッドについての情報の配列である。  3; methods-countl216 is the number of methods, and methods [methods-count] 1217 is an array of information about the methods of this class.
[0040] attributes [attributes— count] 1218は、このクラスが持つ属性情報の配列であ る。この属性情報は、ユーザが新たに追加することが可能であり、本実施形態では、 暗号強度にっ 、ての情報を追加して 、るものとする。 [0040] attributes [attributes-count] 1218 is an array of attribute information possessed by this class. This attribute information can be newly added by the user, and in this embodiment, all information is added according to the encryption strength.
次に、図 3はクラスブロックの構成例を示した図である。  Next, FIG. 3 is a diagram showing a configuration example of a class block.
クラスブロック 1701とは、クラスファイル 1210 (図 2参照)を、仮想マシン 1300の内 部形式に変換したデータをいうものとする。具体的には、クラスファイル 1210力 クラ スローダ 1320によってメモリ上に展開されたものである。  The class block 1701 is data obtained by converting the class file 1210 (see FIG. 2) into the internal format of the virtual machine 1300. Specifically, the class file 1210 has been expanded on the memory by the class loader 1320.
[0041] クラスブロック 1701は、クラスヘッダ 1710、メソッド 1800を含む。 [0041] The class block 1701 includes a class header 1710 and a method 1800.
クラスヘッダ 1710とは、クラスの分割情報などを保持しているデータであり、本発明 で新たに追加されたデータである。このクラスヘッダの詳細は、図 4および図 5を用い て、後で説明する。  The class header 1710 is data holding class division information and the like, and is data newly added in the present invention. Details of this class header will be described later with reference to FIGS. 4 and 5.
また、メソッド 1800は、メソッドヘッダ 1810とコード 1850とを含む。  The method 1800 includes a method header 1810 and a code 1850.
[0042] メソッド 1800は、 methods [methods— count] 1217を、仮想マシン 1300の内部 形式に変換したものであり、 methods— counts 1216の数だけ存在する。 [0042] The method 1800 is obtained by converting the methods [methods—count] 1217 into the internal format of the virtual machine 1300, and there are as many as the number of methods—counts 1216.
メソッドヘッダ 1810は、メソッドの暗号化についての情報などを保持しているデータ であり、本発明で新たに追加されたデータである。このメソッドヘッダの詳細は、図 4 および図 5を用いて、後で説明する。  The method header 1810 is data holding information on encryption of a method and the like, and is data newly added in the present invention. Details of this method header will be described later with reference to FIGS. 4 and 5.
[0043] また、コード 1850は、このメソッドの機能を実行するための一連の命令コードであり 、ほとんどのメソッドに含まれる。具体的には、バイトコード、ネイティブコード、または ネイティブコードに最適化処理を施した最適化ネイティブコードの何れかである。 尚、クラスファイルのメソッド以外の情報も、分割され内部形式に変換されてクラスブ ロック 1701に含まれているものとし、同様に、メソッドにもコード以外の情報が内部形 式に変換されて含まれて 、るものとする(図示して ヽな 、。 )。 [0043] Code 1850 is a series of instruction codes for executing the function of this method, and is included in most methods. Specifically, it is either bytecode, native code, or optimized native code obtained by performing optimization processing on native code. Information other than the method of the class file is also divided and converted into the internal format, It is assumed that the method is included in the lock 1701, and similarly, information other than the code is converted into the internal format and included in the method (shown by 図 示, 図 示).
[0044] 次に、図 4を用いて、クラスヘッダ 1710およびメソッドヘッダ 1810を説明する。 Next, the class header 1710 and the method header 1810 will be described with reference to FIG.
図 4 (a)は、クラスヘッダの構成例を示す図であり、図 4 (b)は、メソッドヘッダの構成 例を示す図である。  FIG. 4 (a) is a diagram showing a configuration example of a class header, and FIG. 4 (b) is a diagram showing a configuration example of a method header.
クラスヘッダ 1710は、暗号強度情報 1720と分割情報 1730とで構成される。  The class header 1710 includes encryption strength information 1720 and division information 1730.
[0045] 暗号強度情報 1720は、このクラスを暗号ィ匕する場合の暗号の強度を表したもので あり、このクラスの秘匿性の強さを表したものといえる。 The encryption strength information 1720 indicates the strength of encryption when this class is encrypted, and can be said to indicate the strength of confidentiality of this class.
分割情報 1730は、このクラスをどのように分割したかを表す情報であり、この分割 部分が暗号ィ匕の単位となる。分割は、参照するタイミングが同じものや、重要度が同 程度のものを 1つの分割部分とするなどして、暗号化等の処理を軽くするような分割と することも可能である。本実施形態では、クラスのメソッドは、 1メソッドで 1分割部分と する。  The division information 1730 is information indicating how this class is divided, and the division part is a unit of encryption. The division can be made such that the processing such as encryption is lightened, for example, by dividing the parts having the same reference timing or the same degree of importance into one divided part. In the present embodiment, the method of the class is one method and one divided part.
[0046] このクラスヘッダ 1710を作成する基となる情報は、クラスが有している属性情報(図 2の 1218参照)に設定されているものとする。  It is assumed that the information on which the class header 1710 is created is set in the attribute information (see 1218 in FIG. 2) of the class.
メソッドヘッダ 1810は、暗号強度情報 1811、 JITヘッダ 1812、最適化ヘッダ 1813 およびメソッド情報 1814で構成される。  The method header 1810 includes encryption strength information 1811, a JIT header 1812, an optimization header 1813, and method information 1814.
まず、暗号強度情報 1811は、このメソッドを暗号化する場合の暗号の強度を表した ものであり、クラスヘッダの暗号強度情報 1720と同じものである。本実施形態では、メ ソッドの暗号強度情報 1811がクラスの暗号強度情報 1720よりも強度が強い場合に 、メソッドの暗号強度情報 1811を採用し、弱い場合には、クラスの暗号強度情報 172 0を採用するものとする。  First, the encryption strength information 1811 indicates the encryption strength when encrypting this method, and is the same as the encryption strength information 1720 in the class header. In the present embodiment, when the encryption strength information 1811 of the method is stronger than the encryption strength information 1720 of the class, the encryption strength information 1811 of the method is adopted, and when the encryption strength information 1811 of the method is weak, the encryption strength information 1720 of the class is used. Shall be adopted.
[0047] JITヘッダ 1812は、コード 1850に対して JITコンパイルを行うか否力、またさらに、 コード 1850力 コンパイル済かどうかを示すの情報を保持している。 The JIT header 1812 holds information indicating whether or not to perform JIT compilation on the code 1850 and further indicates whether or not the code 1850 has been compiled.
最適化ヘッダ 1813は、コード 1850に対して最適化を行うか否力 また、現在の最 適化のレベル、 目標となる最適化レベルなどが記されている。さらに、最適化ヘッダ 1 813には、実行速度やコードサイズなど、実施する最適化の種類または割合も記され ている。 [0048] メソッド情報 1814は、 methods313に含まれるバイトコード以外の情報を、仮想マ シン 1300の内部形式に変換したデータである。 The optimization header 1813 describes whether or not to optimize the code 1850, and also describes the current optimization level and the target optimization level. In addition, the optimization header 1813 also indicates the type or ratio of the optimization to be performed, such as the execution speed and the code size. [0048] The method information 1814 is data obtained by converting information other than the bytecode included in the methods 313 into an internal format of the virtual machine 1300.
このメソッドヘッダ 1810を作成する基となる情報は、クラスと同様に、メソッドが有し て 、る属性情報に設定されて 、るものとする。  The information on which the method header 1810 is created is assumed to be set in attribute information possessed by the method, similarly to the class.
図 5 (a)は、暗号強度情報(1720、 1811)の内容例を表す図であり、図 5 (b)は、分 割情報 1730の構成例および内容例を表す図である。  FIG. 5A is a diagram illustrating an example of the contents of the encryption strength information (1720, 1811), and FIG. 5B is a diagram illustrating a configuration example and an example of the contents of the division information 1730.
[0049] 図 5 (a)において、例えば、暗号強度情報 1720は「1」が指定してある。この「1」に 基づいて、暗号ィ匕部 2100 (図 1参照)が暗号方式を決定することになる。本実施形 態では、この値が「0」の場合は、暗号ィ匕が不要である旨を表し、他に「1」、 「2」、 「3」 のいずれかが設定でき、この値が大きいほど秘匿性が高い、すなわち、強い強度で 暗号ィ匕することを要求する旨であるとする。 In FIG. 5A, for example, “1” is designated as the encryption strength information 1720. Based on the “1”, the encryption unit 2100 (see FIG. 1) determines the encryption method. In this embodiment, if this value is “0”, it indicates that encryption is not required, and any of “1”, “2”, and “3” can be set. It is assumed that the larger the value is, the higher the confidentiality is, that is, it is required to perform encryption with high strength.
[0050] 図 5 (b)は、分割情報 1730であり、項目 1731とアドレス 1732とで構成される。 FIG. 5B shows the division information 1730, which is composed of an item 1731 and an address 1732.
項目 1731は、クラスファイルの項目であり、アドレス 1732は、第 1メモリに配置され たアドレスである。  Item 1731 is an item of the class file, and address 1732 is an address located in the first memory.
例 は、項目 l7di「magic― number ^ minor― version^ major― version」の 3 項目が 1つの分割単位となり、アドレス 1732「0x0430012d」に配置されており、「field s [0]〜fields [10]」力 アドレス 1732「0x5d8cb321」に配置されて!、る。  In the example, three items of item l7di “magic-number ^ minor-version ^ major-version” become one division unit and are arranged at address 1732 “0x0430012d”, and “field s [0] to fields [10] The power is located at address 1732 "0x5d8cb321"!
[0051] 次に、図 6は、暗号化方式情報の構成例および内容例を表す図である。 Next, FIG. 6 is a diagram illustrating a configuration example and a content example of encryption method information.
この暗号化方式情報 2301は、予め決められているものとし、暗号化方式情報記憶 部 2300に記憶されている。  The encryption method information 2301 is determined in advance and is stored in the encryption method information storage unit 2300.
暗号化方式情報 2301は、鍵 ID2310、暗号鍵 2320、復号鍵 2330および暗号ァ ルゴリズム 2340で構成される。  The encryption method information 2301 includes a key ID 2310, an encryption key 2320, a decryption key 2330, and an encryption algorithm 2340.
[0052] 鍵 ID2310は、鍵の識別番号を表す。 The key ID 2310 indicates a key identification number.
暗号鍵 2320は、暗号ィ匕の際に使用される鍵であり、復号鍵 2330は、復号の際に 使用される鍵である。  The encryption key 2320 is a key used at the time of encryption, and the decryption key 2330 is a key used at the time of decryption.
暗号アルゴリズム 2340は、暗号ィ匕のアルゴリズムを表している。本実施形態では、「 A」「B」「C]には、予め、ある暗号アルゴリズムが割り当てられているものとする。例え 【 、 DES (Data Encryption Standard)、 RS A (Rivest Shamir Adiemanノなと (?あ 。 [0053] 例では、鍵 ID2310力「l」の暗号化方式の暗号鍵 2320は「fd456」、復号鍵 2330 は「4fgaa」、暗号アルゴリズム 2340は「A」である。 The encryption algorithm 2340 represents the encryption algorithm. In the present embodiment, it is assumed that a certain encryption algorithm is assigned in advance to “A”, “B”, and “C”, for example, [, DES (Data Encryption Standard), RS A (Rivest Shamir Adieman). (?Ah . In the example, the encryption key 2320 of the encryption method with the key ID 2310 “l” is “fd456”, the decryption key 2330 is “4fgaa”, and the encryption algorithm 2340 is “A”.
図 7は、暗号鍵情報の構成例および内容例を表す図である。  FIG. 7 is a diagram illustrating a configuration example and a content example of the encryption key information.
この暗号鍵情報 2401は、暗号鍵情報記憶部 2400に記憶されている。 暗号鍵情報 2401は、アドレス 1732と鍵 ID2310とで構成される。  The encryption key information 2401 is stored in the encryption key information storage unit 2400. The encryption key information 2401 includes an address 1732 and a key ID 2310.
[0054] アドレス 1732は、暗号化されたデータが入っている第 1メモリのアドレスである。この アドレス 1732は、クラスの分割部分が配置されているアドレスであり、分割情報 1730 (図 5参照)のアドレスと同じものである。 [0054] The address 1732 is the address of the first memory in which the encrypted data is stored. The address 1732 is an address where the divided part of the class is arranged, and is the same as the address of the division information 1730 (see FIG. 5).
このアドレス 1732の指す先のデータは、暗号化されているデータの場合もあれば、 復号化されて 、るデータの場合もある。  The data pointed to by the address 1732 may be encrypted data or may be decrypted data.
[0055] 鍵 ID2310は、暗号化方式情報 1301の鍵 ID2310と同じものである。この鍵 ID23 10で、暗号鍵情報 2401と暗号ィ匕方式情報 2301とがリンクしていることになる。 例えば、アドレス「0x06530012」のデータは、鍵 ID「4」の暗号化方式で暗号化また は復号化されており、その暗号化方式は、暗号鍵 2320「135fd」、復号鍵 2330「21jio 」、暗号アルゴリズム 2340「C」である(図 6参照)。 The key ID 2310 is the same as the key ID 2310 of the encryption method information 1301. With this key ID 2310, the encryption key information 2401 and the encryption method information 2301 are linked. For example, the data at the address “0x06530012” is encrypted or decrypted by the encryption method with the key ID “4”, and the encryption method is the encryption key 2320 “135fd”, the decryption key 2330 “21jio”, The encryption algorithm is 2340 “C” (see Figure 6).
[0056] <動作 > [0056] <Operation>
以下、本発明に係る実行装置 1000の動作について図 8〜図 15を用いて説明する 本実施形態では、実行装置の電源を入れた場合、予め定められているアプリケー シヨンが実行されるものとする。  Hereinafter, the operation of the execution device 1000 according to the present invention will be described with reference to FIGS. 8 to 15 .In this embodiment, when the power of the execution device 1000 is turned on, a predetermined application is executed. .
図 8は、実行装置 1000の処理を表すフローチャートである。  FIG. 8 is a flowchart showing the processing of the execution device 1000.
[0057] まず、ユーザが実行装置 1000の電源を投入する(ステップ S100)。 First, the user turns on the power of the execution device 1000 (step S100).
通電した第 1CPU1900は、 OS1400を起動し (ステップ S110)、起動された OS1 400は、仮想マシン 1300を起動する(ステップ S 120)。  The energized first CPU 1900 activates the OS 1400 (step S110), and the activated OS 1400 activates the virtual machine 1300 (step S120).
起動された仮想マシン 1300は、アプリ取得プログラム 1100を起動する(ステップ S 130)。  The activated virtual machine 1300 activates the application acquisition program 1100 (Step S130).
[0058] 起動されたアプリ取得プログラム 1100は、アプリケーション 1200を実行装置 1000 の外部から読込み、アプリケーションの実行を開始する (ステップ S 140)。 仮想マシン 1300は、適時、アプリケーションのネイティブコードなどを暗号化したり 、復号ィ匕したりして (ステップ S170)、仮想マシン 1300内のアプリケーションを保護し ながら、実行する。 [0058] The activated application acquisition program 1100 reads the application 1200 from outside the execution device 1000, and starts executing the application (step S140). The virtual machine 1300 encrypts or decrypts the native code of the application or the like (Step S170) as appropriate, and executes the application while protecting the application in the virtual machine 1300.
[0059] 暗号化の際には、暗号ィ匕するデータのアドレスと、暗号強度情報(1720、 1811)を 渡し、復号化の際には、復号するデータのアドレスを渡す。  At the time of encryption, the address of the data to be encrypted and the encryption strength information (1720, 1811) are passed, and at the time of decryption, the address of the data to be decrypted is passed.
アプリケーションの実行が終了すると (ステップ S150: YES)、終了処理を行い (ス テツプ S160、ステップ S 180)、実行装置における処理を終了する。  When the execution of the application is completed (step S150: YES), a termination process is performed (step S160, step S180), and the process in the execution device is terminated.
ここでは、アプリケーション実行中の仮想マシン 1300の主な処理である、クラスロー ド処理 (ステップ S200)とべリファイ処理 (ステップ S300)、メソッド実行処理 (ステップ S400)について、以下で説明する。  Here, the main processes of the virtual machine 1300 during the execution of the application, that is, the class loading process (step S200), the verify process (step S300), and the method execution process (step S400) will be described below.
[0060] これらの処理の説明後、暗号化処理と復号化処理 (ステップ S 170)について説明 する。 After describing these processes, the encryption process and the decryption process (Step S 170) will be described.
<クラスロード処理 >  <Class loading process>
図 9は、クラスロード処理を表すフローチャート、および第 1メモリの内容を表す図で ある。フローチャートの左側に示している図力 第 1メモリの内容である(9000〜900 3)。このメモリの内容は、本発明に関するもののみを時系列で表している(図 10〜図 15において同様。;)。  FIG. 9 is a flowchart showing the class loading process and a diagram showing the contents of the first memory. This is the contents of the first memory shown on the left side of the flowchart (9000 to 9003). The contents of this memory represent only those relating to the present invention in chronological order (similar in FIGS. 10 to 15;).
[0061] このクラスロード処理は、クラスローダ 1320が行う処理であり、クラスファイルを内部 形式にして、メモリ上に配置する処理を行う。  [0061] The class loading process is a process performed by the class loader 1320, and performs a process of converting a class file into an internal format and arranging it in a memory.
本実施形態では、この際、分割して、分割部分ごとに暗号ィ匕してメモリ上に配置す る。尚、通常、クラスロードの処理中に行われるベリファイの処理は、説明の便宜上省 くものとし、ベリファイの処理は図 10を用いて説明する。  In this embodiment, at this time, the data is divided, and each divided part is encrypted and arranged on the memory. Note that the verification process usually performed during the class loading process is omitted for convenience of description, and the verification process will be described with reference to FIG.
[0062] インタプリタ 1310より、クラス名を渡されロードを指示されたクラスローダ 1320は、 渡されたクラス名に該当するクラスファイルを探し出し、第 1メモリに読込む (ステップ SThe class loader 1320 given the class name by the interpreter 1310 and instructed to load finds a class file corresponding to the passed class name and reads it into the first memory (step S
210、第 1メモリ 9000、 9001)。この際、クラスファイルが暗号化されている場合は、 復号化する処理を行う。 210, 1st memory 9000, 9001). At this time, if the class file has been encrypted, the class file is decrypted.
読み出されたクラスファイルを基に、クラスヘッダ 1710を作成する (ステップ S220、 第 1メモリ 9002)。 [0063] 本実施形態では、暗号強度情報 1720は、クラスの attributes [attributes— coun t] 1218に、新たな属'性として入っている。 A class header 1710 is created based on the read class file (step S220, first memory 9002). In the present embodiment, the encryption strength information 1720 is included as a new attribute in the attribute [attributes-count] 1218 of the class.
また、クラスを分割して、分割情報 1730を作成する (ステップ S220)。本実施形態 では、図 5 (b)のように分割するものとする。  Further, the class is divided to create division information 1730 (step S220). In the present embodiment, division is performed as shown in FIG.
次に、クラスブロック 1701を作成する(ステップ S230、第 1メモリ 9002)。具体的に は、クラスブロックを構成する各要素を作成することになる。例えば、メソッドヘッダ 18 10とコード 1850とを作成し、メソッド 1800をメソッドの数分作成する。この際、分割情 報 1730に、メソッドヘッダ 1810とコード 1850を、それぞれ 1分割部分として追加する 。その他、分割情報 1730のアドレス 1732が変わる場合は、書き換える。  Next, a class block 1701 is created (step S230, first memory 9002). Specifically, each element that makes up the class block is created. For example, a method header 1810 and a code 1850 are created, and methods 1800 are created for the number of methods. At this time, the method header 1810 and the code 1850 are added to the division information 1730 as one division part. In addition, if the address 1732 of the division information 1730 changes, it is rewritten.
[0064] クラスブロックを作成したら、クラスブロックを暗号ィ匕する処理を行う(ステップ S240) 。暗号ィ匕は、耐タンパ実行部 2000に依頼して行なう(ステップ S 240 :矢印)。この暗 号化の処理単位は、クラスヘッダ 1710の分割情報 1730を基に行い、最後にクラス ヘッダ 1710の暗号化を行う。クラスヘッダの分割情報 1730のアドレスは、暗号化さ れた各分割部分を指していることになる。すなわち、暗号化、復号ィ匕を行う都度、分 割情報 1730の該当アドレスは書き換えられることになる(以下、同様)。  After creating the class block, a process of encrypting the class block is performed (step S240). The encryption is performed by requesting the tamper-resistant execution unit 2000 (step S240: arrow). The processing unit of this encryption is based on the division information 1730 of the class header 1710, and finally the encryption of the class header 1710 is performed. The address of the division information 1730 in the class header indicates each encrypted division. That is, each time encryption or decryption is performed, the corresponding address of the division information 1730 is rewritten (the same applies hereinafter).
[0065] また、暗号ィ匕されたクラスヘッダのアドレスは、インタプリタ 1310が管理している。  The interpreter 1310 manages the address of the encrypted class header.
暗号ィ匕クラスブロックを作成したら、第 1メモリ上のクラスヘッダ、クラスファイルを削 除する(ステップ S250、第 1メモリ 9003)。  After the encryption block block is created, the class header and the class file on the first memory are deleted (step S250, first memory 9003).
ここでの削除とは、例えば、記録しているデータを管理しているインデックスのみを 削除するような削除ではなぐ記録しているデータを特定の値、例えば「0x00」で、全 て上書きするような削除を意味する (以下、同様)。  Deletion here does not mean, for example, deleting only the index that manages the recorded data, but rather overwriting the recorded data with a specific value, for example, `` 0x00 ''. Delete (hereinafter the same).
[0066] この時点で、第 1メモリ上には、 目的とするクラスファイルはロードされている力 平 文のクラスではなぐ暗号ィ匕されたクラスのみ存在していることになり、盗聴、改竄から 保護されている。  At this point, the target class file contains only the encrypted class, which is different from the loaded plaintext class, in the first memory. Is protected.
<ベリファイ処理 >  <Verification process>
図 10は、ベリファイ処理を表すフローチャート、および第 1メモリの内容を表す図で ある。フローチャートの左側に示している図力 第 1メモリの内容である(9010〜901 2)。 [0067] このべリファイ処理は、ベリファイャ 1330が行う処理である。このべリファイ処理は、 クラスファイルのロード時や、リンク時など適時に呼び出され、呼出し時に応じた内容 のべリファイ処理を行う。 FIG. 10 is a flowchart showing the verifying process and a diagram showing the contents of the first memory. This is the contents of the pictorial first memory shown on the left side of the flowchart (9010 to 9012). The verification process is a process performed by the verifier 1330. This verification process is called at appropriate times, such as when loading or linking a class file, and performs the verification process according to the contents at the time of the call.
本実施形態では、暗号ィ匕クラスブロックに対して、何らかのベリファイ処理を行う場 合について説明する。  In the present embodiment, a case will be described where some verification processing is performed on the encryption class block.
[0068] インタプリタ 1310から、対象となる暗号ィ匕クラスファイル (第 1メモリ 9010)を渡され たべリファイャ 1330は、その暗号ィ匕クラスブロックを復号ィ匕する処理を行う(ステップ S310、第 1メモリ 9011)。この復号ィ匕では、ベリファイ処理に必要な分割部分のみを 復号する。例えば、マジックナンバーが「CAFEBABE」になっているかを確認する場 合は、クラスヘッダ 1710と、分割情報 1730の最初の分割部分を復号する。  [0068] The verifier 1330 that has received the target encryption class file (first memory 9010) from the interpreter 1310 performs a process of decrypting the encryption class file (step S310, the first memory). 9011). In this decryption, only the divided part necessary for the verification process is decrypted. For example, when confirming whether the magic number is “CAFEBABE”, the first divided part of the class header 1710 and the division information 1730 is decoded.
[0069] 復号ィ匕クラスブロックをもとに、ベリファイの処理を行う(ステップ S320)。この際、他 のクラスが必要となる場合は、そのクラスブロックを復号したり、ロードしたり等して、ベ リファイ処理を行う。  The verifying process is performed based on the decryption class block (step S320). At this time, if another class is required, the class block is decoded or loaded to perform a verify process.
ベリファイ処理によって、分割情報 1730に変更があれば、更新する (ステップ S330 If there is a change in the division information 1730 due to the verification processing, update the division information 1730 (step S330
) o ) o
[0070] その後、クラスブロックの暗号化を行う(ステップ S340)。この場合は、クラスブロック のうち、復号ィ匕した分割部分のみを再暗号ィ匕することになる。  After that, the class block is encrypted (step S340). In this case, only the decrypted divided portion of the class block is re-encrypted.
復号ィ匕クラスブロックを削除する (ステップ S 350、第 1メモリ 9012)。  The decryption class block is deleted (step S350, first memory 9012).
<メソッド実行処理 >  <Method execution processing>
図 11は、メソッド実行処理を表すフローチャート、および第 1メモリの内容を表す図 である。フローチャートの左側に示している図力 第 1メモリの内容である(9020〜90 23)。  FIG. 11 is a flowchart showing a method execution process and a diagram showing the contents of the first memory. This is the contents of the pictorial first memory shown on the left side of the flowchart (9020 to 9023).
[0071] このメソッド実行処理は、インタプリタ 1310が行う処理である。  This method execution process is a process performed by the interpreter 1310.
本実施形態では、実行するメソッドが属するクラスは、ロードされて暗号ィ匕クラスプロ ックとして存在して 、る場合にっ 、て説明する(第 1メモリ 9020)。  In the present embodiment, the class to which the method to be executed belongs is loaded and exists as the encryption class block. This will be described (first memory 9020).
また、 JITコンパイルの処理は、クラスのロード時に行われることが多いが、本実施形 態では、メソッドの実行前に行われる場合を説明する。  Also, JIT compilation processing is often performed at the time of loading a class. In this embodiment, a case will be described in which JIT compilation is performed before execution of a method.
[0072] インタプリタ 1310は、実行するメソッドの属する暗号ィ匕クラスブロックの中の、該当メ ソッド 1800のメソッドヘッダ 1810を復号する(ステップ S410、第 1メモリ 9021)。具体 的には、クラスヘッダ 1710を復号し、分割情報 1730から該当メソッドのクラスヘッダ のアドレスを取得して、メソッドヘッダ 1810を復号する。 [0072] The interpreter 1310 determines whether the corresponding method in the encryption class block to which the method to be executed belongs. The method header 1810 of the sod 1800 is decrypted (step S410, first memory 9021). Specifically, the class header 1710 is decrypted, the address of the class header of the corresponding method is obtained from the division information 1730, and the method header 1810 is decrypted.
メソッドヘッダ 1810の JITヘッダ 1812を参照し、このメソッドを JITコンパイルする場 合 (ステップ S420: YES)は、 JITコンパイル処理を行う(ステップ S500)。  When JIT compiling this method with reference to the JIT header 1812 of the method header 1810 (step S420: YES), JIT compilation processing is performed (step S500).
[0073] また、メソッドヘッダ 1810の最適化ヘッダ 1813を参照し、このメソッドを最適化する 場合 (ステップ S430 :YES)は、最適化処理を行う(ステップ S600)。 Further, when this method is optimized (step S430: YES) with reference to the optimization header 1813 of the method header 1810, an optimization process is performed (step S600).
その後、分割情報 1730から該当メソッドのコードのアドレスを取得して、コード 185 0を復号ィ匕し (ステップ S440、第 1メモリ 9022)、実行する (ステップ S450)。この際、 他のメソッドを実行する場合は、そのメソッドを復号するなどの処理を行う。  After that, the address of the code of the corresponding method is acquired from the division information 1730, the code 1850 is decoded (step S440, first memory 9022), and the process is executed (step S450). At this time, if another method is to be executed, processing such as decoding that method is performed.
[0074] メソッドの実行が終了したら、復号ィ匕コードと復号化メソッドヘッダを削除する (ステツ プ S460、第 1メモジ9023)。 When the execution of the method is completed, the decryption code and the decryption method header are deleted (step S460, first memory 9023).
<JITコンパイル処理 >  <JIT compilation process>
図 12は、 JITコンパイル処理を表すフローチャート、および第 1メモリの内容を表す 図である。フローチャートの左側に示している図力 第 1メモリの内容である(9030〜 9032)。  FIG. 12 is a flowchart showing the JIT compilation process and a diagram showing the contents of the first memory. This is the contents of the first memory shown on the left side of the flowchart (9030 to 9032).
[0075] この JITコンパイル処理は、主に、 JITコンパイラ 1340が行う処理である。  This JIT compilation processing is mainly processing performed by the JIT compiler 1340.
インタプリタ 1310は、 JITコンパイラ 1340に JITコンパイルするコード 1850を渡し、 コンパイルを指示する(第 1メモリ 9030)。ここでのコードは、バイトコードである。 指示され^ JITコンノイラ 1340は、渡された暗号化コードを復号する (ステップ S51 The interpreter 1310 passes the code 1850 to be JIT-compiled to the JIT compiler 1340, and instructs to compile (first memory 9030). The code here is a byte code. Instructed ^ JIT Connoiler 1340 decrypts the passed encryption code (step S51
0、第 1メモリ 9031)。 0, first memory 9031).
[0076] その後、 JITコンパイラ 1340は、復号ィ匕コードから、ネイティブコードを作成する (ス テツプ S520、第 1メモリ 9031)。  After that, the JIT compiler 1340 creates a native code from the decrypted code (step S520, first memory 9031).
インタプリタ 1310は、作成されたネイティブコードを、基となったコード 1850と同じメ ソッド 1800内に、暗号化して追加する(ステップ S530)。  The interpreter 1310 encrypts and adds the created native code to the same method 1800 as the base code 1850 (step S530).
復号ィ匕コードとネイティブコードを削除する (ステップ S540,第 1メモリ 9032)。  The decryption code and the native code are deleted (step S540, first memory 9032).
[0077] <最適化処理 > [0077] <Optimization processing>
図 13は、最適化処理を表すフローチャート、および第 1メモリの内容を表す図であ る。フローチャートの左側に示している図力 第 1メモリの内容である(9040〜9043) この最適化処理は、オプティマイザ 1350が行う処理である。 FIG. 13 is a flowchart showing the optimization process and a diagram showing the contents of the first memory. The The pictorial power shown on the left side of the flowchart is the contents of the first memory (9040 to 9043). This optimization processing is performed by the optimizer 1350.
[0078] インタプリタ 1310は、オプティマイザ 1350に最適化するコード 1850を渡し、最適 化を指示する。このコード 1850が属するクラスは既にロードされ、暗号ィ匕クラスブロッ クとして第 1メモリにあるものとする(第 1メモリ 9040)。また、ここでのコードは、ノイトコ ードまたはネイティブコードである。 [0078] The interpreter 1310 passes the code 1850 to be optimized to the optimizer 1350, and instructs the optimizer 1350 to perform the optimization. It is assumed that the class to which the code 1850 belongs has already been loaded and is stored in the first memory as an encryption class block (first memory 9040). Also, the code here is a Neutral code or a native code.
指示されたオプティマイザ 1350は、渡された暗号化コードを復号する (ステップ S6 10、第 1メモリ 9041)。  The specified optimizer 1350 decrypts the passed encryption code (step S610, first memory 9041).
[0079] その後、オプティマイザ 1350は、復号化コードを基に、最適化されたコードを作成 する (ステップ S620、第 1メモリ 9042)。最適化に際し、他に必要な分割部分があれ ば、復号化等して処理を行う。  Thereafter, the optimizer 1350 creates an optimized code based on the decoded code (Step S620, first memory 9042). When optimizing, if there is any other necessary divided part, the processing is performed by decoding.
インタプリタ 1310は、作成されたコードを暗号ィ匕し (ステップ S630)、基となったコ ード 1850と置き換える(ステップ S635)。  The interpreter 1310 encrypts the created code (step S630) and replaces it with the original code 1850 (step S635).
[0080] 最適化の対象となった復号化コードと、作成した最適化された復号化コードとを削 除する(ステップ S650,第 1メモジ9043)。 [0080] The decrypted code targeted for optimization and the created optimized decrypted code are deleted (step S650, first memory 9043).
<暗号化処理 >  <Encryption processing>
図 14は、暗号化処理を表すフローチャート、および第 1メモリ、第 2メモリの内容を 表す図である。フローチャートの左側に示している図力 第 1メモリ(9050〜9053) および第 2メモリ(9060〜9063)の内容である。  FIG. 14 is a flowchart illustrating an encryption process and a diagram illustrating contents of the first memory and the second memory. Drawings shown on the left side of the flowchart are the contents of the first memory (9050 to 9053) and the second memory (9060 to 9063).
[0081] この暗号化処理は、耐タンパ実行部 2000の暗号化部 2100が行う処理である。 This encryption process is a process performed by the encryption unit 2100 of the tamper-resistant execution unit 2000.
仮想マシン 1300は、暗号化部 2100に、暗号化するデータのアドレスと暗号強度 情報(1720, 1811)とを渡し、暗号化を指示する(第 1メモリ 9050、第 2メモリ 9060) 指示された暗号ィ匕部 2100は、渡されたアドレスのデータを、第 1メモリから第 2メモ リへと読込み (ステップ S710、第 2メモリ 9061)、第 1メモリのデータを削除する (ステ ップ S720、第 1メモリ 9051)。  The virtual machine 1300 passes the address of the data to be encrypted and the encryption strength information (1720, 1811) to the encryption unit 2100, and instructs encryption (first memory 9050, second memory 9060). The dagger 2100 reads the data at the passed address from the first memory to the second memory (step S710, second memory 9061), and deletes the data in the first memory (step S720, 1 memory 9051).
[0082] 暗号ィ匕部 2100は、受け取った暗号強度情報を基に、暗号化方式 (図 6、図 7参照) を決定する (ステップ S730)。例えば、暗号強度情報が強い暗号化を求めるものであ れば、暗号アルゴリズム 2340の内、強い暗号アルゴリズムを選択し、同じ暗号鍵 232 0が連続しないように、暗号化方法を決定する。 [0082] The encryption unit 2100 uses the encryption method based on the received encryption strength information (see Figs. 6 and 7). Is determined (step S730). For example, if the encryption strength information requires strong encryption, a strong encryption algorithm is selected from the encryption algorithms 2340, and an encryption method is determined so that the same encryption key 2320 is not consecutive.
決定した暗号化方式である暗号アルゴリズム 2340の、 B音号鍵 2320で、データを暗 号化する(ステップ S750、第 2メモリ 9062、第 1メモリ 9052)。  The data is encrypted using the B code key 2320 of the encryption algorithm 2340 that is the determined encryption method (step S750, second memory 9062, first memory 9052).
[0083] データを暗号ィ匕したら、暗号ィ匕したデータを第 1メモリに書込み (ステップ S760、第 1メモリ 9053、第 2メモリ 9063)、書込んだアドレスと、暗号化した暗号の鍵 ID2310 とを対応付けて、暗号鍵情報 2401に追加する (ステップ S770)。 When the data has been encrypted, the encrypted data is written to the first memory (step S760, first memory 9053, second memory 9063), and the written address and the encrypted encryption key ID 2310 are stored in the first memory. Is added to the encryption key information 2401 (step S770).
尚、第 2メモリ 2700は、耐タンパ実行部 2000の中にあるため、データの削除は要 しない。  Since the second memory 2700 is in the tamper-resistant execution unit 2000, the data does not need to be deleted.
[0084] <復号化処理 >  <Decryption processing>
図 15は、復号ィ匕処理を表すフローチャート、および第 1メモリ、第 2メモリの内容を 表す図である。フローチャートの左側に示している図力 第 1メモリ(9070〜9073) および第 2メモリ(9080〜9083)の内容である。  FIG. 15 is a flowchart showing the decryption processing, and a diagram showing the contents of the first memory and the second memory. This is the contents of the first memory (9070 to 9073) and the second memory (9080 to 9083) shown on the left side of the flowchart.
この暗号化処理は、耐タンパ実行部 2000の暗号化部 2100が行う処理である。  This encryption process is a process performed by the encryption unit 2100 of the tamper-resistant execution unit 2000.
[0085] 仮想マシン 1300は、復号ィ匕部 2200に、復号化する暗号化データのアドレスを渡 し、復号ィヒを指示する(第 1メモリ 9070、第 2メモリ 9080)。 The virtual machine 1300 passes the address of the encrypted data to be decrypted to the decryption unit 2200, and instructs the decryption unit (first memory 9070, second memory 9080).
指示された復号化部 2200は、渡されたアドレスの暗号化データを、第 1メモリから 第 2メモリへと読込み (ステップ S810、第 2メモリ 9081、第 1メモリ 9071)、第 1メモリの 暗号化データを削除する(第 1メモリ 9072)。  The designated decryption unit 2200 reads the encrypted data at the passed address from the first memory to the second memory (step S810, second memory 9081, first memory 9071), and encrypts the first memory. Delete the data (first memory 9072).
[0086] 復号化部 2200は、受け取ったアドレスと同じアドレスがないか、暗号鍵情報 2401 のアドレス 1732をサーチする。同じアドレスがあれば、そのアドレス 1732に対応する 鍵 ID2310を、暗号化されたときの鍵 IDであると特定する(ステップ S820)。 [0086] Decryption section 2200 searches for address 1732 of encryption key information 2401 for the same address as the received address. If there is the same address, the key ID 2310 corresponding to the address 1732 is specified as the encrypted key ID (step S820).
次に、暗号ィ匕方式情報 2301から、特定した鍵 ID2310に対応する復号鍵 2330と 暗号アルゴリズム 2340とを取得し (ステップ S830)、データを復号化する(ステップ S 840、第 2メモリ 9082、第 1メモリ 9072)。  Next, a decryption key 2330 and an encryption algorithm 2340 corresponding to the specified key ID 2310 are obtained from the encryption method information 2301 (step S830), and the data is decrypted (step S840, the second memory 9082, 1 memory 9072).
[0087] データを復号ィ匕したら、復号ィ匕したデータを第 1メモリに書込む (ステップ S850、第 1メモリ 9073、第 2メモリ 9083)。 <実施形態 2> When the data is decrypted, the decrypted data is written to the first memory (step S850, first memory 9073, second memory 9083). <Embodiment 2>
本実施形態は、実施形態 1における耐タンパ実行部 2000が行って ヽる暗号化処 理、復号化処理の替わりに、 OS 1400が提供するメモリ管理機能を使うものである。 具体的には、 JITコンパイルされたネイティブコードや中間コードがロードされて!/、るメ モリ領域である第 1メモリ 1700 (図 1参照)の、読み込み可能属性を変更させることで 実現する。  In the present embodiment, a memory management function provided by the OS 1400 is used instead of the encryption processing and the decryption processing performed by the tamper-resistant execution unit 2000 in the first embodiment. Specifically, it is realized by changing the readable attribute of the first memory 1700 (see Fig. 1), which is the memory area where JIT-compiled native code and intermediate code are loaded!
[0088] 本実施形態の機能ブロック図は、実施形態 1の機能ブロック図である図 1から、耐タ ンパ実行部 2000を削除し、第 1メモリ 1700の換わりに、図 16で説明するメモリ 3700 を用いたものである。  The functional block diagram of the present embodiment is different from the functional block diagram of the first embodiment in FIG. 1 in that the anti-tamper execution unit 2000 is deleted and the memory 3700 described in FIG. Is used.
図 1および図 16を用いて、動作を説明する。  The operation will be described with reference to FIGS.
図 16 (a)、(b)は、 JITコンノ ィルされたコードを記憶しているメモリ領域に対し、メモ リ上の読み込み可能属性と読み込み不可能領属性を設定した際のメモリの状態を表 す図である。  Figures 16 (a) and (b) show the state of the memory when the readable attribute and the unreadable attribute on the memory are set for the memory area that stores the JIT-consolidated code. FIG.
[0089] 図 16 (a)にお!/、て、メモリ 3700は、メモリ 3710とメモリ 3720とに分力、れており、双 方のメモリに読み込み可能属性が設定されて 、る。  In FIG. 16A, the memory 3700 is divided into a memory 3710 and a memory 3720, and the readable attribute is set in both memories.
この時、仮想マシン 1300や、デバッガなどの攻撃プログラムは、 JITコンパイルされ たコードを読み出すことが可能である。  At this time, attack programs such as the virtual machine 1300 and the debugger can read the JIT-compiled code.
図 16 (b)において、メモリ 3711は、読み込み不可能属性が設定されており、このと き、仮想マシン 1300や、デバッガなどの攻撃プログラム ίお ITコンパイルされたコード を読み出すことはできない。  In FIG. 16 (b), the memory 3711 has an unreadable attribute set, and at this time, it is not possible to read an attack program such as the virtual machine 1300 or a debugger or IT-compiled code.
[0090] 仮想マシン 1300は、通常〖お ITコンパイルされたコードを記憶しているメモリ領域を 読み込み不可能に設定しておき、 JITコンパイルされたコードを実行する場合や、中 間データを必要とする場合に、必要に応じて読み込み可能に設定する。 In the virtual machine 1300, the memory area storing the IT-compiled code is normally set to be unreadable, and the virtual machine 1300 needs to execute JIT-compiled code or use intermediate data. If necessary, set to be readable as needed.
このように構成することにより、メモリ 3700が記憶するデータの内、盗まれる可能性 のあるコードは、第 1CPU1900により実行中のコードのみに限定されるため、改竄等 の被害を最小限に抑えることができる。  With this configuration, among the data stored in the memory 3700, the code that can be stolen is limited to only the code being executed by the first CPU 1900, so that damage such as tampering is minimized. Can be.
[0091] さらに、これにより、暗号化、復号ィ匕の処理を行う必要がないため、実行速度を落と すことなく、 JITコンノィルされたプログラムを保護することができるという利点がある。 メモリの読み込み可能属性を変更できるものとして、次のようなものがある。 [0091] Further, this eliminates the need to perform the encryption and decryption processes, and thus has the advantage that the JIT-con- nected program can be protected without reducing the execution speed. The following can change the readable attribute of the memory.
例えば、 Linux OSでは、メモリの読み込み可能、書き込み可能、実行可能などの 属性を変更させるシステムコール mmap Oを備えている。これを用いることで、例えば 、 JITコンパイルされたコードがロードされているメモリ領域に対して、メモリ領域の読 取許可を指定する PROT— READのフラグを無効にすることで、デバッガなどのツー ルから JITコンパイルされたコードが盗聴されることを防ぐことができ、暗号化と同様の 効果が得られる。  For example, the Linux OS has a system call mmapO that changes which attributes of memory are readable, writable, and executable. By using this, for example, for a memory area in which JIT-compiled code is loaded, a program such as a debugger or the like can be disabled by disabling a PROT—READ flag that specifies permission to read the memory area. Can prevent the JIT-compiled code from being eavesdropped, and the same effect as encryption can be obtained.
[0092] 仮想マシン 1300が JITコンパイルされたコードを必要とする際には、前言 6JITコンパ ィルされたコードがロードされて!/、るメモリ領域に対し、 PROT— READフラグを有効 にすることで、再度アクセスすることができるようになる。  [0092] When the virtual machine 1300 requires JIT-compiled code, the PROT—READ flag must be enabled for the memory area in which the JIT-compiled code is loaded! Now you can access again.
また、このメモリの読み込み可能属性を変更させる機能は、ハードウェアで実現され ていてもよい。  The function of changing the readable attribute of the memory may be realized by hardware.
[0093] <考察 > [0093] <Discussion>
以下、従来技術を説明し、本発明との違いを示す。  Hereinafter, the prior art will be described and differences from the present invention will be described.
図 17に示すように、従来のデータ保護機能を備えた計算機は、主に暗号化された プログラム 201と復号ィ匕手段 202と仮想機械 203と CPU204力も構成されている。 復号ィ匕手段 202と仮想機械 203は、 CPU204で実行可能なネイティブコードで記 述されており、暗号ィ匕プログラム 201は、仮想機械 203が解釈実行可能な命令セット で記述されたプログラムを暗号ィ匕したものである。  As shown in FIG. 17, the conventional computer provided with a data protection function mainly includes an encrypted program 201, a decryption unit 202, a virtual machine 203, and a CPU 204. The decryption means 202 and the virtual machine 203 are described in a native code executable by the CPU 204, and the encryption program 201 encrypts a program described by an instruction set interpretable and executable by the virtual machine 203. It is a dagger.
[0094] ソースコード力 ソフトウェアの実行イメージ (いわゆる内部形式でメモリ上に展開さ れたもの)を生成する時に、仮想機械の独自の命令セットを生成し、ソースコードを前 記命令セットへとコンパイル、暗号化し、前記仮想機械 203と復号化手段 202をリンク する。 [0094] Source code capability When generating an execution image of a software (a so-called internal format expanded on a memory), a unique instruction set for the virtual machine is generated, and the source code is compiled into the instruction set described above. Then, the virtual machine 203 and the decryption means 202 are linked.
ここで使用する独自の命令セットは、公開されない情報であるため、攻撃者は復号 された暗号ィ匕プログラム 201を見てもその内容を理解できないことになり、結果として 、中間コードレベルでの、攻撃者による盗聴、改竄を防ぐことが出来る可能性が高く なる。  Since the unique instruction set used here is information that is not made public, an attacker cannot understand the contents even if he sees the decrypted encryption program 201, and as a result, at the intermediate code level, It is more likely that an attacker will be able to prevent eavesdropping and tampering.
[0095] しかし、本発明に係る実行装置は、中間コードを実行するよりも実行速度が速いネ ィティブコードを作成した場合にぉ 、ても、アクセス可能なメモリ上に置かれたネィテ イブコードを盗聴、改竄から守る事が出来る。 However, the execution device according to the present invention has a faster execution speed than the execution of the intermediate code. Even when an active code is created, the native code placed on an accessible memory can be protected from eavesdropping and tampering.
<補足 >  <Supplement>
以上、本発明に係る実行装置について実施形態に基づいて説明したが、この実行 装置を部分的に変形することもでき、本発明は上述の実施形態に限られないことは 勿論である。即ち、  As described above, the execution device according to the present invention has been described based on the embodiment. However, the execution device can be partially modified, and the present invention is not limited to the above embodiment. That is,
(1)実施形態では、アプリケーションのクラスを分割し、メソッドの単位で暗号ィ匕するこ ととしている力 メソッドのコードを分割することとしてもよい。  (1) In the embodiment, the class of the application may be divided, and the code of the force method that is to be encrypted in method units may be divided.
[0096] 分割部分は、分岐命令を含まな!/ヽ一連の命令群とすることで、実行時に平文となる ネイティブコードの量を、より少なくすることが可能である。  [0096] By making the divided portion a series of instructions that do not include a branch instruction, it is possible to further reduce the amount of native code that becomes plaintext during execution.
この場合、例えば、メソッドヘッダ内〖こ、クラスヘッダ内の分割情報と同様の分割情 報を持ち、暗号化等を行う。  In this case, for example, it has the same division information as the division information in the method header and the division information in the class header, and performs encryption and the like.
また、 1命令ずつに分割することとしてもよい。この場合は、特定の命令のみを暗号 化した 、場合に特に有効である。  It may be divided into instructions. This case is particularly effective when only a specific instruction is encrypted.
(2)実施形態では、クラスヘッダの暗号強度情報 1720で、暗号ィ匕を行わない旨の指 定がない限り、暗号ィ匕を行うこととしているが、暗号化処理、復号化処理は、任意の 組み合わせで省略してもよ!/、。  (2) In the embodiment, the encryption is performed unless the encryption strength information 1720 of the class header specifies that encryption is not performed. However, the encryption processing and the decryption processing are optional. You can omit it with the combination of! / ,.
[0097] 例えば、クラスロード処理(図 9参照)とべリファイ処理(図 10参照)とを連続して行う 場合には、それらの処理の間で、クラスブロックの暗号化、復号ィ匕を省略するなどで ある。  [0097] For example, when the class loading process (see Fig. 9) and the verifying process (see Fig. 10) are performed consecutively, encryption and decryption of class blocks are omitted between these processes. And so on.
この場合は、暗号強度情報 1720で暗号ィ匕を行わない旨の指定をするほかに、予 め暗号化、復号ィ匕を行わない場合を決めておくことで、暗号化、復号化を省略するこ とが可能である。  In this case, besides designating that encryption and decryption are not performed in the encryption strength information 1720, encryption and decryption can be omitted by deciding in advance that encryption and decryption should not be performed. It is possible.
[0098] 暗号化、復号化を省略した場合は、暗号化、復号化を行う回数が削減されるため、 アプリケーションの実行速度低下を低減することができるという利点がある。また、使 用メモリの削減を実現することもできるようになる。  [0098] When the encryption and the decryption are omitted, the number of times of performing the encryption and the decryption is reduced, so that there is an advantage that a decrease in the execution speed of the application can be reduced. In addition, the use of memory can be reduced.
(3)実施形態では、実行装置 1000の第 1CPU1900と、耐タンパ実行部 2000の第 2CPU2900とは、物理的に異なる CPUであるとしている力 物理的に 1つの CPUが 、動作モードを切り替えるなどの方法で仮想的に 2つの CPUのように振舞うこととして もよい。また、マルチコア CPUのように、 1つの CPUパッケージのなかに複数の CPU コアを持つ CPUでは、そのうちの特定のコアを第 2CPUとして動作させてもよ!、。 (3) In the embodiment, the first CPU 1900 of the execution device 1000 and the second CPU 2900 of the tamper-resistant execution unit 2000 are physically different CPUs. It is also possible to virtually behave like two CPUs by switching operation modes. Also, in a CPU with multiple CPU cores in one CPU package, such as a multi-core CPU, a specific core may be operated as the second CPU!
[0099] また、実施形態では、実行装置 1000と耐タンパ実行部 2000とにそれぞれ、 RAM および ROMを持つこととしているが、 1つの RAMを仮想的に 2つの RAMとして扱つ てもよい。同様に、 1つの ROMを仮想的に 2つの ROMとして扱ってもよい。さらに、 耐タンパ実行部 2000内の ROMは第 2CPU2900に混載されていてもよい。 [0099] In the embodiment, the execution device 1000 and the tamper-resistant execution unit 2000 have a RAM and a ROM, respectively. However, one RAM may be virtually treated as two RAMs. Similarly, one ROM may be virtually treated as two ROMs. Further, the ROM in the tamper-resistant execution unit 2000 may be loaded on the second CPU 2900.
(4)実施形態では、暗号強度情報をクラスファイルの拡張属性に埋め込んだが、これ 以外の方法を用いて暗号強度情報を指定することとしてもょ 、。  (4) In the embodiment, the encryption strength information is embedded in the extended attribute of the class file. However, the encryption strength information may be specified using other methods.
[0100] 例えば、暗号強度情報を記録した XMLファイルをアプリケーションと同時にアプリ 取得プログラム 1100が取得し、仮想マシン 1300へ渡すことにより、仮想マシン 130 0は、クラスなどの暗号強度情報を知ることが可能になる。  [0100] For example, the application acquisition program 1100 acquires the XML file recording the encryption strength information at the same time as the application, and passes it to the virtual machine 1300, so that the virtual machine 1300 can know the encryption strength information such as the class. become.
(5)実施形態では、実行装置 1000で実行するアプリケーションは、アプリ取得プログ ラム 1100力 本装置外のアプリケーションファイル力もダウンロードしたものであること としている力 インターネット上にあるサーバから、ダウンロードすることとしてもよい。  (5) In the embodiment, the application executed by the execution device 1000 is an application acquisition program 1100.The application file power outside the device is also assumed to be downloaded.The application may be downloaded from a server on the Internet. Good.
[0101] この場合、アプリ取得プログラム 1100は、 TLS (Transport Layer Security)、 HTT [0101] In this case, the application acquisition program 1100 uses TLS (Transport Layer Security), HTT
P (Hypertext Transfer Protocol)等のプロトコルに従い Java (登録商標)アプリケーシ ヨンをダウンロードする機能を有するプログラムとなる。 This is a program having a function of downloading a Java (registered trademark) application according to a protocol such as P (Hypertext Transfer Protocol).
ここで、 TLSは暗号ィヒにより通信時のデータの盗聴、改竄を防ぐデータ転送方式で ある(RFC2246参照)。また、 HTTPは、インターネット上のデータ通信で一般的に 用いられて 、るデータ転送方式である(RFC2616参照)。  Here, 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).
[0102] 尚、 RFC (Request For Comments)とは、インターネット上の技術を規格化する IET[0102] RFC (Request For Comments) is an IET that standardizes technologies on the Internet.
F (Internet Engineering Task Force)の公式文書であり、プロトコルなど様々な技術の 使用がまとめられているものである。 Official document of the Internet Engineering Task Force (F), which summarizes the use of various technologies such as protocols.
また、実行装置 1000で実行するアプリケーションは、デジタル放送のデータ放送と して、 MPEG (Moving Picture Coding Experts Group) 2トランスポートストリーム内に 埋め込まれ^ Java (登録商標)アプリケーションであってもよ!/、。  Further, the application executed by the execution device 1000 may be a Java (registered trademark) application embedded as a digital broadcast data broadcast in an MPEG (Moving Picture Coding Experts Group) 2 transport stream! ,.
[0103] この場合、アプリ取得プログラム 1100は、トランスポートストリーム内に埋め込まれた Java (登録商標)アプリケーションを実行装置 1000内に読み出すプログラムとなる。 MPEG2トランスポートストリームに Java (登録商標)プログラムを埋め込む方法とし ては、例えば、 DSMCC方式がある。 DSMCC方式とは、 MPEG2トランスポートスト リームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成 されるファイルシステムをエンコードする方法である(MPEG規格書 ISOZIEC1381 81— 1、 MPEG規格書 ISOZIEC138181— 6参照)。 [0103] In this case, the application acquisition program 1100 is embedded in the transport stream. This is a program for reading the Java (registered trademark) application into the execution device 1000. As a method of embedding a Java (registered trademark) program in an MPEG2 transport stream, for example, there is a DSMCC method. The DSMCC method is a method of encoding a file system composed of directories and files used in a computer in packets of an MPEG2 transport stream (MPEG standard ISOZIEC1381 81-1, MPEG standard ISOZIEC138181). — See 6).
[0104] またさらに、実行装置 1000で実行するアプリケーションは、 SDカード(Secure [0104] Furthermore, the application executed by the execution device 1000 is an SD card (Secure
Digital memory card)、 CD— ROM (Compact Disk Read Only Memory;、 DVD Digital Versatile Disk)、: Blu— RayDisc等に記録され^ Java (登録商標)アプリケー シヨンであってもよい。  Digital memory card), CD-ROM (Compact Disk Read Only Memory; DVD Digital Versatile Disk), Blu-ray Disc, etc., and may be a Java (registered trademark) application.
この場合、アプリ取得プログラム 1100は、これらの記録媒体力 アプリケーションを 読み出すプログラムとなる。  In this case, the application acquisition program 1100 is a program for reading these recording medium power applications.
[0105] また、実行装置 1000で実行するアプリケーションは、実行装置 1000内にある RO Mなどに記録され^ Java (登録商標)アプリケーションであってもよ!/、。  The application executed by the execution device 1000 may be a Java (registered trademark) application recorded in a ROM or the like in the execution device 1000! /.
この場合、アプリ取得プログラム 1100は、 ROM力も作業メモリに、 Java (登録商標) アプリケーションを読み出すプログラムとなる。  In this case, the application acquisition program 1100 is a program for reading the Java (registered trademark) application into the working memory with the ROM power.
(6)本実施形態では、アプリ取得プログラム 1100など ^Java (登録商標)言語で記 述され^ Java (登録商標)プログラムとしている力 同等の機能を有する、ネイティブ 言語で記述されたプログラムや、ハードウェアで実現されて 、てもよ 、。  (6) In the present embodiment, the application acquisition program 1100 and the like are written in a Java (registered trademark) language, and are written in a native language and have the same functions as those of a Java (registered trademark) program. Realized by hardware, it may be.
[0106] また、仮想マシンで実行するアプリケーションは、 Java (登録商標)言語で記述され たものに限らず、 C+ +などの他のオブジェクト指向言語で記述されたものであっても よぐ C言語など、他の言語で記述されたものでもよい。  The application executed in the virtual machine is not limited to the one described in the Java (registered trademark) language, and may be the one described in another object-oriented language such as C ++. For example, it may be written in another language.
(7)実施形態の耐タンパ実行部 2000は、例えば、 ARM社の TrustZone (登録商標 )技術を使うことで実現することができる。  (7) The tamper-resistant execution unit 2000 of the embodiment can be realized by using, for example, TrustZone (registered trademark) technology of ARM.
[0107] TrustZone (登録商標)技術では、 RAMや ROMなどのハードウェア資源の一部 をセキュアドメインと呼ばれる仮想的に実行環境に割り当てることができる。セキュアド メインに割り当てられた RAMや ROMは、セキュアドメインで動作するプログラムのみ が利用可能であり、セキュアドメイン以外で動作するプログラムからは一切利用するこ とができない。 [0107] In TrustZone (registered trademark) technology, a part of hardware resources such as RAM and ROM can be virtually allocated to an execution environment called a secure domain. The RAM and ROM assigned to the secure domain can be used only by programs that operate in the secure domain, and cannot be used by programs that operate in non-secure domains. I can't do that.
[0108] 従来の CPUでは、アプリケーションが動作する通常モードと OSなどが動作する特 権モードの 2種類のモードを持ち、通常モードで動作するプログラムからは特権モー ドで動作するプログラムを改ざんすることができないようになつている。  [0108] A conventional CPU has two types of modes, a normal mode in which an application operates and a privileged mode in which an OS or the like operates. A program operating in a privileged mode must be altered from a program operating in the normal mode. I can not do it.
TrustZone (登録商標)技術では、さらに、モニターモードと呼ばれる特殊なモード が新しく用意される。モニターモードへは、 CPUが用意する特殊な命令を実行するこ とで遷移することができる。モニターモードで CPUが動作するときには、 S— bitと呼 ばれるセキュリティ情報が RAMや ROMなどの周辺ハードに通知される。 TrustZon e (登録商標)技術に対応した RAMや ROMは、 S— bitが通知された場合に限り、セ キュアドメインに割り当てられた領域へのデータの読み書きを許可するように構成され て 、る。またセキュアドメインに割り当てられて!/、な 、領域へのデータへの読み書きは S— bitが通知されている力否かに関わらず読み書きを許可する。このように、安全な 実行部はセキュアドメインにより実現することができる。  TrustZone (R) technology also offers a new special mode called monitor mode. The monitor mode can be entered by executing a special instruction prepared by the CPU. When the CPU operates in monitor mode, security information called S-bit is reported to peripheral hardware such as RAM and ROM. RAM and ROM compatible with TrustZone® technology are configured to permit reading and writing of data to and from the area allocated to the secure domain only when the S-bit is notified. In addition, assigned to the secure domain! /, Read / write of data to / from the area is permitted regardless of whether the S-bit is notified or not. Thus, the secure execution unit can be realized by the secure domain.
[0109] また、 Intel社の LaGrande技術でも、通常のアプリケーションや OSが動作するドメ インと保護が必要なアプリケーションが動作するドメインを仮想的に分離するなど、 Tr ustZone (登録商標)技術と同様の機能を提供して 、る。このような技術を使うことで 安全な実行部を実現することができる。  [0109] In addition, Intel's LaGrande technology is similar to the TrustZone (registered trademark) technology, such as virtually separating the domain in which ordinary applications and OSs operate from the domain in which applications requiring protection operate. Provides functions. By using such technology, a secure execution unit can be realized.
(8)実施形態では、耐タンパ実行部 2000は、実行装置 1000の内蔵されているもの としている力 実行装置 1000から着脱可能なスマートカードや ICカードなどであるこ ととしてもよい。このスマートカード、 ICカードはカード内部に CPUやメモリ、セキユリ ティ回路を含むものである。  (8) In the embodiment, the tamper-resistant execution unit 2000 may be a smart card, an IC card, or the like that is detachable from the force execution device 1000 that is assumed to be built in the execution device 1000. These smart cards and IC cards contain a CPU, memory, and security circuits inside the card.
[0110] 耐タンパ実行部 2000は、その全体をノヽードウエアにより実現してもよい。  [0110] The entire tamper-resistant execution unit 2000 may be realized by hardware.
この場合、第 1CPUと第 2CPU間のデータ通信は暗号ィ匕して行い、第三者による 盗聴を防ぐことが必要となる。具体的には、両 CPUを結ぶデータバス(図示していな い)を介してデータを送信する際に、送信するデータを暗号化し、データを受信後に 復号することで行われる。  In this case, it is necessary to perform data communication between the first CPU and the second CPU with encryption and prevent eavesdropping by a third party. Specifically, when data is transmitted via a data bus (not shown) connecting both CPUs, the data to be transmitted is encrypted, and the data is decrypted after being received.
(9)実施形態で示した実行装置の各機能を実現させる為の各制御処理 (図 1等参照 )を CPUに実行させる為のプログラムを、記録媒体に記録し又は各種通信路等を介 して、流通させ頒布することもできる。このような記録媒体には、 ICカード、光ディスク 、フレキシブルディスク、 ROM、フラッシュメモリ等がある。流通、頒布されたプロダラ ムは、機器における CPUで読み取り可能なメモリ等に格納されることにより利用に供 され、その CPUがそのプログラムを実行することにより実施形態で示した実行装置の 各機能が実現される。 (9) A program for causing the CPU to execute each control process (see FIG. 1 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. Such 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.
産業上の利用可能性 Industrial applicability
Java (登録商標)アプリケーションの実行環境である仮想マシンの内部で処理して いるアプリケーションの、盗聴、改竄の機会を大幅に減らすことができるので、今後本 格展開が予想される Java (登録商標)アプリケーションのダウンロード配信ビジネスに おいて、コンテンツ作成者の権利を保護すること場合などに、特に有用である。 ダウンロード配信ビジネスとして、例えば、携帯電話機では、 NTT DoCoMoが i— アプリと呼ばれるサービスを提供している。このサービスは、携帯電話端末がインター ネット上にあるアプリケーション配信サーバから Java (登録商標)プログラムをダウン口 ードして、端末上で実行する。また、欧州では、 DVB— MHP (Digital Video Broadcasting-Multimedia Home Platform)と呼ばれる仕様が策定され、既に仕様に 準拠した運用が開始されている。 DVB— MHP規格に基づくデジタル放送では、放 送波に多重化され^ Java (登録商標)プログラムをデジタル TVが受信し、それを実行 する。  Java (registered trademark) is expected to be fully deployed in the future because it can greatly reduce the chances of eavesdropping and falsification of applications processed inside the virtual machine that is the execution environment of Java (registered trademark) applications. This is particularly useful for protecting the rights of content creators in the application download distribution business. As a download distribution business, for example, in mobile phones, NTT DoCoMo provides a service called i-appli. In this service, a mobile phone terminal downloads a Java (registered trademark) program from an application distribution server on the Internet and executes it on the terminal. In Europe, a specification called DVB—Digital Video Broadcasting-Multimedia Home Platform (MHP) has been formulated, and operation in compliance with the specification has already been started. DVB—In digital broadcasting based on the MHP standard, digital TV receives and executes a Java ™ program multiplexed on a broadcast wave.

Claims

請求の範囲 The scope of the claims
[1] 命令で構成される部分を複数個有するアプリケーションプログラムを実行する実行 装置であって、  [1] An execution device for executing an application program having a plurality of parts each including an instruction,
部分カゝらネイティブコードを特定のメモリ領域に作成し、作成したネイティブコードを 暗号ィ匕して暗号コードを作成した後、前記作成したネイティブコードを削除し、作成し た暗号コードを暗号コード記憶手段に記憶するネイティブコード作成手段と、 暗号コード記憶手段に記憶されて!ゝる暗号コードを復号し、ネイティブコードを特定 のメモリ領域に作成する復号手段と、  After creating a partial code and a native code in a specific memory area, encrypting the created native code and creating an encrypted code, deleting the created native code, storing the created encrypted code in an encrypted code Means for creating a native code stored in the means, decryption means for decrypting the encrypted code stored in the encrypted code storage means, and creating a native code in a specific memory area;
各部分を実行する際に、当該部分に該当する暗号コードを前記復号手段により復 号し、ネイティブコードを実行した後、実行したネイティブコードを削除する実行制御 手段と  When each part is executed, execution control means for decoding the encryption code corresponding to the part by the decoding means, executing the native code, and then deleting the executed native code.
を備えることを特徴とする実行装置。  An execution device, comprising:
[2] 前記アプリケーションプログラムは、更に、各部分ごとに暗号ィ匕するか否かを示す秘 匿性情報を含み、  [2] The application program further includes confidentiality information indicating whether or not to encrypt each part,
前記ネイティブコード作成手段および前記実行制御手段は、前記秘匿性情報が暗 号化することを示している部分に限り、当該部分を対象として処理する  The native code creation unit and the execution control unit process only the part indicating that the confidentiality information indicates that the encryption is to be performed.
ことを特徴とする請求項 1記載の実行装置。  The execution device according to claim 1, wherein:
[3] 前記秘匿性情報は、更に、秘匿の度合!、を示す情報を含み、 [3] The confidentiality information further includes information indicating a degree of confidentiality!
前記ネイティブコード作成手段は、前記秘匿性情報が暗号化することを示して ヽる 場合に限り、前記秘匿性情報に基づいて決定された暗号化方式で暗号化した暗号 コードを作成する  The native code creating means creates an encrypted code encrypted by an encryption method determined based on the confidentiality information only when the confidentiality information indicates that the confidentiality information is encrypted.
ことを特徴とする請求項 2記載の実行装置。  3. The execution device according to claim 2, wherein:
[4] 前記部分は、分岐命令を含まない一連の命令群である [4] The part is a series of instructions not including a branch instruction
ことを特徴とする請求項 1記載の実行装置。  The execution device according to claim 1, wherein:
[5] 前記アプリケーションプログラムは、オブジェクト指向言語で作成され、 [5] The application program is created in an object-oriented language,
前記部分は、メソッドである  The part is a method
ことを特徴とする請求項 1記載の実行装置。  The execution device according to claim 1, wherein:
[6] 前記部分は、 1つの命令である ことを特徴とする請求項 1記載の実行装置。 [6] The part is one instruction The execution device according to claim 1, wherein:
命令で構成される部分を複数個有するアプリケーションプログラムを実行する実行 装置であって、  An execution device for executing an application program having a plurality of parts each including an instruction,
所定のメモリ領域への読出し及び書込みのアクセスを、許可又は禁止するよう制御 するアクセス制御手段と、  Access control means for controlling read and write access to a predetermined memory area to be permitted or prohibited;
前記アクセス手段により、前記所定のメモリ領域への書込みのアクセスを許可し、部 分力 ネイティブコードを前記所定のメモリ領域に作成し、前記アクセス手段により、 前記所定のメモリ領域への書込みのアクセスを禁止するネイティブコード作成手段と 部分を実行する際に、前記アクセス手段により、前記所定のメモリ領域への読込み のアクセスを許可し、当該部分に該当するネイティブコードを読出した後、前記ァクセ ス手段により、前記所定のメモリ領域への読込みのアクセスを禁止する実行制御手 段と  The access means permits write access to the predetermined memory area, creates a partial native code in the predetermined memory area, and allows the access means to perform write access to the predetermined memory area. When executing the native code creation means and the part to be prohibited, the access means permits read access to the predetermined memory area, and after reading the native code corresponding to the part, the access means Execution control means for prohibiting read access to the predetermined memory area;
を備えることを特徴とする実行装置。  An execution device, comprising:
PCT/JP2005/006307 2004-04-05 2005-03-31 Execution device WO2005098570A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-110781 2004-04-05
JP2004110781A JP2007233426A (en) 2004-04-05 2004-04-05 Application execution device

Publications (1)

Publication Number Publication Date
WO2005098570A1 true WO2005098570A1 (en) 2005-10-20

Family

ID=35125246

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/006307 WO2005098570A1 (en) 2004-04-05 2005-03-31 Execution device

Country Status (2)

Country Link
JP (1) JP2007233426A (en)
WO (1) WO2005098570A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133104A (en) * 2005-11-09 2007-05-31 Sony Corp Digital broadcasting receiving system and digital broadcasting receiver
WO2008018310A1 (en) * 2006-08-09 2008-02-14 Panasonic Corporation Application execution device, method, and program
JP2010511227A (en) * 2006-11-28 2010-04-08 マイクロソフト コーポレーション Compile executable code into unreliable address space
JP2012234362A (en) * 2011-04-28 2012-11-29 Fujitsu Ltd Information processing device, secure module, information processing method and information processing program
JP2015032009A (en) * 2013-07-31 2015-02-16 富士通セミコンダクター株式会社 Program execution method and decryption device

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4727366B2 (en) * 2005-09-28 2011-07-20 株式会社デジタル Information processing apparatus, information processing system, program, and recording medium
JP2009175880A (en) * 2008-01-22 2009-08-06 Toshiba Corp Information processing apparatus and program
JP2010217975A (en) * 2009-03-13 2010-09-30 Nec System Technologies Ltd Information processor, application program, and method for executing application program
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
KR101350390B1 (en) * 2013-08-14 2014-01-16 숭실대학교산학협력단 A apparatus for code obfuscation and method thereof
EP3026559A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity
JP2016126705A (en) * 2015-01-08 2016-07-11 三菱日立パワーシステムズ株式会社 Control system, control method and program
KR101832594B1 (en) * 2016-02-18 2018-02-26 라인 가부시키가이샤 Method and system for enhancing loading velocity of intermediate language file

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09233067A (en) * 1990-07-31 1997-09-05 Hiroichi Okano Method and device for processing intelligence information
JP2001175466A (en) * 1999-12-21 2001-06-29 Fuji Xerox Co Ltd Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium
JP2002132364A (en) * 2000-10-19 2002-05-10 Yutaka Iizuka Method for protecting program from internal analysis, computer readable recording medium and program distribution method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09233067A (en) * 1990-07-31 1997-09-05 Hiroichi Okano Method and device for processing intelligence information
JP2001175466A (en) * 1999-12-21 2001-06-29 Fuji Xerox Co Ltd Method and device for generating execution program, and method for executing execution program and computer-readable program storage medium
JP2002132364A (en) * 2000-10-19 2002-05-10 Yutaka Iizuka Method for protecting program from internal analysis, computer readable recording medium and program distribution method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LOW ET AL: "Java Control Flow Obfuscation.", June 1998 (1998-06-01), XP002990868, Retrieved from the Internet <URL:URL:http://www.cs.auckland.ac.nz/research/theses/1998/low_douglas_thesis1998.pdf> *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133104A (en) * 2005-11-09 2007-05-31 Sony Corp Digital broadcasting receiving system and digital broadcasting receiver
US7869594B2 (en) 2005-11-09 2011-01-11 Sony Corporation Digital broadcasting receiving system and digital broadcasting receiving device
JP4631658B2 (en) * 2005-11-09 2011-02-16 ソニー株式会社 Digital broadcast receiving system and digital broadcast receiving apparatus
WO2008018310A1 (en) * 2006-08-09 2008-02-14 Panasonic Corporation Application execution device, method, and program
JP2010511227A (en) * 2006-11-28 2010-04-08 マイクロソフト コーポレーション Compile executable code into unreliable address space
JP2012234362A (en) * 2011-04-28 2012-11-29 Fujitsu Ltd Information processing device, secure module, information processing method and information processing program
US8984272B2 (en) 2011-04-28 2015-03-17 Fujitsu Limited Information processing apparatus, secure module, information processing method, and computer product
JP2015032009A (en) * 2013-07-31 2015-02-16 富士通セミコンダクター株式会社 Program execution method and decryption device

Also Published As

Publication number Publication date
JP2007233426A (en) 2007-09-13

Similar Documents

Publication Publication Date Title
WO2005098570A1 (en) Execution device
US11651113B2 (en) Program execution device
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US20080270806A1 (en) Execution Device
US7874009B2 (en) Data processing device
JPWO2007011001A1 (en) Execution device
US20130111605A1 (en) Information processing apparatus and information processing method
JP4850830B2 (en) Computer system and program generation apparatus
US20070186117A1 (en) Secure processor-based system and method
KR20070001893A (en) Tamper-resistant trusted virtual machine
WO2005096121A1 (en) Execution device
US20080010686A1 (en) Confidential Information Processing Device
EP2051181A1 (en) Information terminal, security device, data protection method, and data protection program
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
US8479014B1 (en) Symmetric key based secure microprocessor and its applications
JP2008040853A (en) Application execution method and application execution device
KR101749209B1 (en) Method and apparatus for hiding information of application, and method and apparatus for executing application
JP4930982B2 (en) Download system
JP2008011219A (en) Digital watermark embedding system, device and program
CN116108468A (en) Method, system and medium for encrypting and decrypting war and jar program package

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): 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
NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP