WO2006009081A1 - アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法 - Google Patents

アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法 Download PDF

Info

Publication number
WO2006009081A1
WO2006009081A1 PCT/JP2005/013069 JP2005013069W WO2006009081A1 WO 2006009081 A1 WO2006009081 A1 WO 2006009081A1 JP 2005013069 W JP2005013069 W JP 2005013069W WO 2006009081 A1 WO2006009081 A1 WO 2006009081A1
Authority
WO
WIPO (PCT)
Prior art keywords
meta information
application
instruction
class
information
Prior art date
Application number
PCT/JP2005/013069
Other languages
English (en)
French (fr)
Inventor
Tomonori Nakamura
Original Assignee
Matsushita Electric Industrial Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to JP2006529155A priority Critical patent/JPWO2006009081A1/ja
Priority to US11/632,418 priority patent/US20070271446A1/en
Publication of WO2006009081A1 publication Critical patent/WO2006009081A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs

Definitions

  • the present invention relates to an application execution device that executes an application program (particularly a program written in Java (registered trademark) language). This technology relates to technology that prevents unauthorized eavesdropping and tampering.
  • NTT DoCoMo provides a service called i- ⁇ ppli (registered trademark). This service downloads a Java (registered trademark) program from an application distribution server on the mobile phone terminal S Internet and executes it on the terminal.
  • DVB-MHP Digital Video Broadcasting-Multimedia Home Platform
  • a digital TV receives and executes a Java (registered trademark) program multiplexed with a broadcast wave.
  • Recent electronic devices are also configured with a large number of software module capabilities. Those who have specialized knowledge can also tamper with software in electronic devices by exploiting bugs in these software modules. You can also use a debugger or ICE (In—C The same can be achieved by using a tool such as ircuit Emulator). Therefore, even if the « JaVa (registered trademark) program includes a copyright management function and a billing function, there is a problem that these functions can be invalidated. In the future, as the Java (registered trademark) application program distribution business becomes more serious using the Internet, it is expected that such problems of wiretapping and alteration of application programs will become more serious.
  • Complicated processing is the same as the original program by performing processing such as processing division, exchange of appearance order, insertion of conditions, etc., but it is converted to a more complicated program and the program itself
  • Encryption is a method of encrypting a program and decrypting it only at the time of execution.
  • Patent Document 1 Special Table 2002—514333
  • the encryption method is decrypted during the execution of the program, there is a possibility that it will be analyzed and wiretapped during that time.
  • the present invention solves the above-described problem, and exploits bugs in software modules.
  • An object of the present invention is to provide an application execution device that prevents eavesdropping and falsification of application programs using specialized tools. Means for solving the problem
  • the present invention is an application execution device that executes an acquired application in units of classes, and stores meta information included in a class file.
  • Meta-information storage means to be executed Instruction sequence storage means to store the instruction sequence included in the class file, and an instruction having no information to be referred to is executed and requested when there is first information to be referred to and notified.
  • Instruction execution means for executing an instruction using second information and meta information execution means for generating second information from the meta information in response to a request from the instruction execution means and notifying the instruction execution means;
  • the meta information stored in the meta information storage means can be read only by the meta information execution means, and the meta information execution means accepts only the request of the instruction execution means.
  • the instruction execution means for executing the application instruction instructs the meta information execution means to notify the necessary second information. Even if the command execution means is wiretapped using, the meta information itself stored in the meta information storage means cannot be seen. Therefore, even if the instruction sequence is wiretapped or altered by the command execution means, it is difficult to analyze the application, and wiretapping and tampering can be prevented.
  • the meta information storage unit stores a constant pool that describes an index, a type of a constant pool, and its value, and class structure information that describes an item and its value
  • the instruction string storage unit Stores the bytecode of the method defined in the class, and the meta information execution means executes the instruction in which the instruction execution means specifies the constant pool intex as the first information in the bytecode.
  • the second information is generated by referring to the constant pool and the class structure information according to the type of the instruction.
  • the meta information execution means searches the constant pool type for the constant Boolean type corresponding to the specified index, and The memory size is generated by referring to the structure information.
  • the instruction execution means can obtain the size of the object.
  • the number of meta information fields declared by the class and the type descriptor, which are the basis of the calculation, are not visible to the instruction execution means.
  • the meta information execution means searches the constant pool type for the type of the constant pool corresponding to the specified index, and The method address is generated by referring to the structure information.
  • the instruction execution means can obtain the address of the method.
  • the meta information necessary to obtain the address is not visible to the instruction execution means.
  • the meta information execution means searches the constant pool type for the type of the constant pool corresponding to the specified index, and the class By referring to the structure information, the address of the above field is generated.
  • the instruction execution means obtains the address of the field, but the meta information necessary for obtaining the address is not visible to the instruction execution means.
  • the acquired application is encrypted, the encrypted application is decrypted, the decrypted instruction sequence is stored in the instruction sequence storage means, and the decrypted meta information is stored in the meta information.
  • Decoding means for storing the information in the information storage means is further provided.
  • the decryption means decrypts the application by using a decryption key stored in a key storage means that cannot be directly accessed from the outside.
  • the application is a Java (registered trademark) application.
  • the present invention also provides an application execution method for an application execution device that executes an acquired application in units of classes, and includes a meta information recording step for recording meta information included in the class file, and an instruction sequence included in the class file.
  • Ru As to accept, Ru.
  • FIG. 1 is a configuration diagram of Embodiment 1 of an application execution device according to the present invention.
  • FIG. 2 is a diagram showing a configuration of a Java (registered trademark) virtual machine according to the embodiment.
  • FIG. 3 is a structural diagram of a Java (registered trademark) class file according to the embodiment.
  • FIG. 4 is a configuration diagram of an example of information stored in the first ROM of the embodiment.
  • FIG. 5 is a structural diagram showing an example of a configuration of an application acquisition program according to the embodiment.
  • FIG. 6 is a flowchart showing a processing procedure of meta information according to the embodiment.
  • FIG. 7 is a configuration diagram of an example of information stored in the second ROM of the embodiment.
  • FIG. 8 is a flowchart showing a processing procedure for loading a Java (registered trademark) virtual machine according to the embodiment.
  • FIG. 9 is a flowchart showing a decoding processing procedure according to the above embodiment.
  • FIG. 10 is a flowchart showing a processing procedure for loading a class according to the embodiment.
  • FIG. 11 is a diagram illustrating an example of a Java (registered trademark) class according to the embodiment.
  • FIG. 12 is a diagram showing an example of a constant pool according to the above embodiment.
  • FIG. 13 is a diagram showing an example of class structure information in the embodiment.
  • FIG. 14 is a diagram showing an example of a note code in the above embodiment.
  • FIG. 15 is a flowchart showing a processing procedure for a new instruction of Neut code according to the above embodiment.
  • FIG. 16 is a diagram illustrating an example of a class ID correspondence table according to the embodiment.
  • FIG. 17 is a diagram showing another example of the class ID correspondence table of the above embodiment.
  • FIG. 18 is a flowchart of the bytecode interpreter and meta information management unit when executing the invokespecial instruction of the above embodiment.
  • FIG. 19 is a flowchart of the bytecode interpreter and meta information management unit when executing the getfield instruction of the above embodiment.
  • FIG. 20 is a configuration diagram of Embodiment 2 of an application execution device according to the present invention.
  • 21 A diagram showing the configuration of the virtual machine of the above embodiment.
  • FIG. 22 is a diagram showing an example of information stored in the first ROM of the embodiment.
  • FIG. 23 A flowchart showing a processing procedure for loading the Java (registered trademark) virtual machine according to the embodiment. Explanation of symbols
  • FIG. 1 is a configuration diagram of Embodiment 1 of an application execution apparatus according to the present invention.
  • Downloadable application programs hereinafter simply referred to as “applications”.
  • the application 100 is an application that can be downloaded from the application execution apparatus 110.
  • the application is compiled and encrypted as a Java (registered trademark) application.
  • the application execution device 110 includes a normal execution unit 120 and a safe execution unit 130, and is configured by software above the virtual line 140 and hardware below.
  • the application execution device 110 is an electronic device equipped with a Java (registered trademark) virtual machine, such as a digital TV, a set-top box, a DVD recorder, a Blu-ray Disc (BD) recorder, a car navigation terminal, a mobile phone, or a PDA. Or it is used for a terminal.
  • a Java registered trademark
  • BD Blu-ray Disc
  • the normal execution unit 120 includes an application acquisition program 121, a Java (registered trademark) virtual machine 122, an OS 123 as software, and a first CPU 124, a first RAM 125, and a first ROM 126 as hardware.
  • the arrangement order of the application acquisition program 121, the Java (registered trademark) virtual machine 122, and the OS 123 indicates the order of the upper layer of the software hierarchy, and these software operate on the first CPU 124.
  • the normal execution unit 120 is similar to the program execution means installed in, for example, a normal personal computer or digital home appliance.
  • the normal execution unit 120 includes an instruction execution unit and an instruction sequence storage unit.
  • the secure execution unit 130 includes a meta information management unit 131, a Java (registered trademark) virtual machine loader 132, a decryption processing unit 133 as software, and a second CPU 134, a second RAM 135, and a second ROM 136 as hardware. Composed.
  • each software of the meta information management unit 131, the Java (registered trademark) virtual machine loader 132, and the decryption processing unit 133 operates on the second CPU 124.
  • the safe execution unit 130 can execute a program safely while preventing an attack of a malicious third party. That is, the secure execution unit 130 is prohibited from being directly accessed from an external device, and the second CPU 134 notifies the first CPU 124 of necessary information in response to an instruction from the first CPU 124.
  • the safe execution unit 130 includes meta information execution means, meta information storage means, and decryption means. First, each component of the normal execution unit 120 will be described.
  • the application acquisition program 121 acquires the application 100 from the outside of the application execution device 110 and stores it in the first RAM 125.
  • the application acquisition program 121 can be obtained from a server on the Internet according to a protocol such as TLS (Transport Layer Security) or HT TP (Hyper Text Transfer Protocol). This corresponds to a Java (registered trademark) program that downloads (file format).
  • TLS is a data transfer method that prevents wiretapping and tampering of data during communication by means of encryption. Details of TLS are described in RFC2246, and detailed description is omitted here.
  • HTTP is a data transfer method generally used in data communication on the Internet. Details of HTTP are described in RFC2616, and detailed explanation is omitted here.
  • the application acquisition program 121 is a Java (registered trademark) program that is embedded in the MPEG2 transport stream as a digital broadcast data broadcast and reads a Java (registered trademark) application to the application execution device 110.
  • the details of the MPE G2 transport stream are described in the MPEG standard ISOZIEC138181-1, and the explanation is omitted.
  • a method for embedding a Java (registered trademark) program in an MPEG2 transport stream is described in the MPEG standard document ISO / I EC138181-6 as a DSMCC method. Detailed explanation of DSMCC is omitted here.
  • the D SMCC standard defines a method for encoding a file system consisting of directories and files used by computers in MPEG2 transport stream packets.
  • the application acquisition program 121 is a Java (registered trademark) program that writes a Java (registered trademark) application to the first RAM 125, recorded on a removable medium such as an SD card, CD-ROM, DVD, BD-ROM. Even so.
  • the application acquisition program 121 uses the file operation function provided by the OS 123 to read the Java (registered trademark) application recorded on these removable media.
  • the application acquisition program 121 may be a Java (registered trademark) program that writes a Java (registered trademark) application recorded in the first ROM in the application execution device 110 to the first RAM 125.
  • the application acquisition program 121 reads the Java (registered trademark) application recorded in the first ROM 126 by using the file operation function provided by the OS 123.
  • the application acquisition program 121 is written in Java (registered trademark) language ⁇ Java (registered trademark) program, but has a native (execution device specific) language having equivalent functions. It can be realized by the program described in.
  • the Java (registered trademark) virtual machine 122 is a Java (registered trademark) virtual machine that sequentially analyzes and executes a program written in the Java (registered trademark) language. Programs written in the Java (registered trademark) language are compiled into instruction sequences (operations) of intermediate code called bytecodes, which do not depend on hardware.
  • the Java (registered trademark) virtual machine 122 is realized by software that interprets and executes this bytecode.
  • some Java (registered trademark) virtual machines 122 have a function called a JIT (Just In Time) compiler that translates bytecode into an executable format executable by the first CPU 124.
  • Java (registered trademark) virtual machines 122 may be configured as a processor that can directly execute some bytecodes and an interpreter that executes bytecodes that cannot be directly executed by the processor.
  • the details of the Java (registered trademark) language are explained in many books such as the book “Java (registered trademark) Language Specification (ISBN 0—201—63451—1)”. Is omitted.
  • the Java (registered trademark) virtual machine 122 is also configured with a plurality of subprogram capabilities.
  • FIG. 2 is an example of a subprogram constituting the Java (registered trademark) virtual machine 122.
  • the Java (registered trademark) virtual machine 122 includes a bytecode interpreter 201, a class loader 202, a verifier 203, a Java (registered trademark) heap management unit 204, a Java (registered trademark) native library 205, a JIT It consists of a compiler 206.
  • the note code interpreter 201 is a subprogram that interprets and executes a note code included in the class file, and performs a core process in the Java (registered trademark) virtual machine 122. Details will be described later.
  • the class loader 202 is obtained by the application acquisition program 121, reads the Java® application 100 from the first RAM 125, converts it into an application that can be executed by the Java virtual machine 122, and writes it again to the first RAM 125. Make the class executable.
  • the class loader 202 also performs class unload processing.
  • the class unloading process is a process for removing a Java (registered trademark) virtual machine 122 from a class that has become unnecessary after execution.
  • a class is a basic unit that constitutes a Java (registered trademark) application, and is defined in the book "Java (registered trademark) Virtual Machine Specification (ISBN 0-201-6345 1)”. Yes.
  • Figure 3 shows an overview of the information contained in a class.
  • the class structure information 301 includes information on the structure of the class, such as fields and methods held by this class, and the ability to inherit which class.
  • Constant pool 302 is information that summarizes data related to constants (constants) defined in the application (class), and includes fields of other classes that are defined in or referenced from this class, Contains information such as method and class name.
  • the class structure information 301 and the constant pool 302 are collectively referred to as class meta information (or simply meta information).
  • Byte code 303 describes the processing of a method executed in the class as a sequence of instructions in an intermediate language. Note code 303 does not contain information about the data processed by the application. Therefore, in the execution of a Java (registered trademark) application, it is generally impossible to execute the processing with only the byte code 303, and the execution processing can be performed only after the constant pool 302 in which the data portion is defined. Examples of the above information included in the class will be described later.
  • the verifier 203 determines the deficiency of the data format of the class and the safety of the Neut code included in the class.
  • the code for checking the safety of Neut code is Java (registered Standard) Because it is defined in Virtual Machine Specification, detailed explanation is omitted.
  • the class loader 202 does not load the class determined that the verifier 203 is not valid.
  • the Java (registered trademark) heap management unit 204 secures a working memory called a Java (registered trademark) heap, which is used by a Java (registered trademark) application.
  • the Java (registered trademark) heap is secured in the first RAM 125.
  • the Java (registered trademark) heap management unit 204 also performs garbage collection.
  • garbage collection refers to a known technique that frees working memory that is no longer needed for application execution and allows it to be reused for other purposes, and will not be described in detail.
  • the Java (registered trademark) native library 205 is a library called from a Java (registered trademark) application, and is described in FIG. 1 provided in the OS 123 and the application execution device 110. Provides functions provided by programs to Java (registered trademark) applications.
  • the JIT compiler 206 translates the bytecode 303 into an execution format that can be understood by the first CPU 124 or the second CPU 134.
  • OS 123 is basic software that is activated by the first CPU 124 when the application execution device 110 is powered on.
  • OS123 is an abbreviation for operating system, and Linux is an example.
  • the OS 123 is a general term for known techniques including a kernel and a library that execute programs in parallel, and detailed description thereof is omitted.
  • OS 123 ⁇ and ava (registered trademark) virtual machine 122 is executed as a subprogram.
  • the first CPU 124 executes processing in accordance with each program of the application 100 acquired by executing the Java (registered trademark) virtual machine 122, the OS 123, the application acquisition program 121, and the application acquisition program 121.
  • the first RAM 125 stores the application program acquired by executing the application acquisition program 121 as a class file, and stores the Java TM virtual machine 122 that has been decrypted. In addition, when the first CPU 124 performs processing, it temporarily stores data. The It is also used for data transfer between both CPUs when the first CPU 124 requests execution to the second CPU 134.
  • the first RAM 125 is composed of primary storage such as SRAM and DRAM, for example.
  • the first ROM 126 stores an encrypted ava (registered trademark) virtual machine 401 and the like.
  • the first ROM 126 is a non-volatile memory such as a flash memory or a node disk.
  • FIG. 4 is a diagram showing an example of contents stored in the first ROM 126. As shown in FIG. 4
  • the first ROM 126 includes an encrypted ava (registered trademark) virtual machine 401, an encrypted application acquisition program 402, an encrypted meta information management unit 403, and an activation class name 404.
  • FIG. 5 is a diagram showing a configuration of the application acquisition program 402.
  • the application acquisition program 402 is composed of a plurality of classes such as subclasses 501 to 503. Each subclass is encrypted.
  • the activation class name 404 is a name of a class that is a program that is executed first when the Java (registered trademark) virtual machine 122 is activated. In this embodiment, it is assumed that the subclass 501 is specified for the encryption key activation class name 404.
  • the first ROM 126 may store data other than that shown in FIG.
  • the meta information management unit 131 manages meta information included in a class loaded in the Java (registered trademark) virtual machine 122, refers to the information according to a request from the bytecode interpreter 201, and provides the result. It is a program.
  • the meta information management unit 131 will be described in detail later.
  • the Java (registered trademark) virtual machine loader 132 performs processing for making the Java (registered trademark) virtual machine 122 executable by the first CPU 124 after the application execution device 110 is powered on.
  • the Java (registered trademark) virtual machine loader 132 will be described in detail later.
  • the decryption processor 133 decrypts the encrypted information (application, Java (registered trademark) virtual machine 122, etc.) stored in the first RAM 125 or the first ROM 126, and the first RAM 12 This program writes the decryption result to 5.
  • An arbitrary encryption algorithm can be used as the algorithm for the encryption key.
  • the decryption key 701 stored in the second ROM 136 is used as the decryption key.
  • the second CPU 134 includes a meta information management unit 131, a Java (registered trademark) virtual machine loader 132, and a decryption processing unit. The process is executed in accordance with 133 programs.
  • the second RAM 135 stores class structure information 301, a constant pool 302, and a class ID correspondence table, which will be described later. Further, when the second CPU 134 performs processing, it is used for temporarily storing data.
  • the second RAM 135 is configured by, for example, DRAM or SRAM, and can be accessed only from the second CPU 134, and information stored in the second RAM 135 from the first CPU 124 cannot be read or written. Note that the second RAM 135 may be embedded in the CPU 134.
  • a program that operates in the normal execution unit 120 for example, a program that operates in the « Java (registered trademark) virtual machine 122 and the secure execution unit 130, for example, the meta information management unit 131, operates jointly. Information exchange is required.
  • FIG. 6 is a flowchart when the Java (registered trademark) virtual machine 122 instructs the meta information management unit 131 to perform processing, for example.
  • the Java (registered trademark) virtual machine 122 stores information to be passed to the meta information management unit 131 at a predetermined address in the first RAM 125 (S601).
  • the Java (registered trademark) virtual machine 122 instructs the second CPU 134 to execute the meta information management unit 131 through the first CPU 124 (S602).
  • the meta information management unit 131 reads the data stored in S601 from the predetermined address in the first RAM 125 (S603), and performs predetermined processing using the data (S604). ).
  • the meta information management unit 131 writes the processing result obtained in S604 to a predetermined address in the first RAM 125 (S605).
  • the meta information management unit 131 instructs the first CPU 124 to execute the Java (registered trademark) virtual machine 122 through the second CPU 134 (S606).
  • the Java (registered trademark) virtual machine 122 reads the result of the process performed by the meta information management unit 131 in S604 from a predetermined address in the first RAM 125.
  • processing based on information that cannot be directly referred to from the first CPU 124 is instructed to a program operating in the secure execution unit 130, and the information is transferred. .
  • the second ROM 136 is composed of a read-only nonvolatile memory, and ensures that information stored in the second ROM 136 cannot be read from other than the second CPU 134.
  • FIG. 7 is a diagram illustrating an example of information stored in the second ROM 136.
  • the second ROM 136 in FIG. 7 stores a Java (registered trademark) virtual machine 401 stored in the first ROM 126, and a decryption key 701 for decrypting the subclasses 501 to 503 included in the application acquisition program 402. .
  • the Java (registered trademark) virtual machine 401, the application acquisition program 402, and the activation class name 404 are decrypted by only one decryption key 701, but a separate key is used for each.
  • the second ROM136 is shown in Fig. 7! /.
  • the decryption key 701 is used for decrypting the encrypted decryption key for decrypting the encrypted application 100 acquired by the application acquisition program 121.
  • the decrypted decryption key of the application 100 is also stored in the second ROM 136.
  • the application execution apparatus 110 includes two CPUs, but one CPU may behave virtually as two CPUs by a method such as switching operation modes.
  • An example of a CPU that can change the operating mode is Intel's LaGrande. This CPU has two operation modes called normal mode and secure mode. Programs that operate in the normal mode cannot be intercepted and tampered with programs that run in the secure mode. CPUs with similar functions have been announced by ARM and AMD!
  • the meta information management unit 131, the Java (registered trademark) virtual machine loader 132, and the decryption processing unit 133 realize these functions with a power LSI that is a program executed by the second CPU 134.
  • the first RAM 125 and the second RAM 135 may be treated as one RAM virtually as two RAMs, and the first ROM 126 and the second ROM 136 are treated as two ROMs virtually. It may be a thing.
  • all or a part of the safe execution unit 130 may be realized by nodeware. In this case, data communication between the first CPU 124 and the second CPU 134 is performed in an encrypted manner to prevent eavesdropping by a third party. This is done by encrypting data when sending it to a data bus (not shown) that connects both CPUs, and decrypting the data after receiving it.
  • the safe execution unit 130 may be a device that can be detached from the application execution device 110, such as a smart card or an IC card.
  • Smart cards and IC cards are well-known technologies that include a CPU, memory, and security circuit inside the card, and will not be described in detail.
  • data transfer between the normal execution unit 120 and the secure execution unit 130 is performed using technology such as SAC (Secure Authenticated Channel) to prevent eavesdropping by a third party.
  • SAC Secure Authenticated Channel
  • SAC Secure Authenticated Channel
  • the software of the secure execution unit 130 may be software protected by tamper-resistant software technology.
  • the first CPU 124 starts the OS 123.
  • the OS 123 instructs the second CPU 134 to load the Java (registered trademark) virtual machine loader 132 through the first CPU 124.
  • the Java (registered trademark) virtual machine loader 132 activated by the second CPU 134 loads the Java (registered trademark) virtual machine 122 into the first RAM 125 and the meta information management unit 131 into the second RAM 135 in a certain procedure.
  • FIG. 8 is a diagram showing a procedure for loading the Java (registered trademark) virtual machine 122 and the meta information management unit 131.
  • the Java (registered trademark) virtual machine loader 132 uses the decryption processing unit 133 to decrypt the Java (registered trademark) virtual machine 401 stored in the first IROM 126 into the first RAM 125.
  • FIG. 9 is a diagram showing a processing procedure when the decryption processing unit 133 decrypts the encrypted Java (registered trademark) virtual machine 401.
  • the decryption processing unit 133 reads the encrypted Java (registered trademark) virtual machine 401 stored in the first ROM 126 through the second CPU 133 (S901).
  • the decryption processing unit 133 acquires the decryption key 701 from the second ROM 136 (S902), and determines the output destination of the decryption result of the Java (registered trademark) virtual machine 401. (S903) When the output destination is the first RAM, decrypted ⁇ Java (registered trademark) virtual machine 122 is stored in the first RAM 125 through the second CPU 134 (S904), and when the output destination is the second RAM, the second RAM 135 is stored. (S905).
  • the Java (registered trademark) virtual machine loader 132 instructs the decryption processing unit 133 to decrypt the meta information management unit 404 stored in the first ROM 126 into the second RAM 135 (S802). ).
  • the Java (registered trademark) virtual machine loader 132 notifies the OS 123 of the completion of loading. (S803)
  • the OS 123 receives a load completion notification from the Java (registered trademark) virtual machine loader 132 and starts execution of the Java (registered trademark) virtual machine 122.
  • the class loader 202 is called, and the class loader 202 refers to the boot class name 404 stored in the first ROM 126 shown in FIG. Loads the class specified by the startup class name 404.
  • FIG. 10 is a flowchart showing a processing procedure for the class loader 202 to load the subclass 501 when the subclass 501 of the application acquisition program 402 in FIG. 5 is specified as the activation class name 404. is there.
  • the class loader 202 instructs the decryption processing unit 133 to perform decryption processing of the encrypted subclass 501 stored in the first ROM 126 (S1001).
  • the verifier 203 is instructed to verify the decrypted subclass of the first RAM 125 (S1002).
  • the class loader 202 extracts meta information (class structure information 301, constant pool 302) from the decrypted subclass of the first RAM 125 (S1003) .After extraction, the meta information is deleted from the subclass and the meta information is extracted.
  • the meta information management unit 131 reads the meta information from the first RAM 125 and copies it to the second RAM 135.
  • the class loader 202 deletes the meta information from the first RAM 125 (S1005).
  • the class loader 202 performs the same processing for the application class acquired by the application acquisition program 121 in addition to the application acquisition program alone, and stores the meta information of the class in the secure second RAM 135.
  • class meta information when executing an application, class meta information can be stored in an area that cannot be read or written by a debugger or the like.
  • FIG. 11 is a diagram showing an example of a class file described in the ava (registered trademark) language.
  • a class name 1101 is the name of this class, and in the example, the name of the class is Sample.
  • Field 1102 is a field defined by the Sample class. The field 1102 can be used as an area for storing the value of the calculation result when the method is executed.
  • Method 1103 and method 1104 are two methods defined in the Sample class. Here, a method defines the processing contents of a class.
  • a source file 1100 in which a class is defined in the Java (registered trademark) language is converted into a class file 300 by a Java (registered trademark) controller.
  • the converted class file 300 includes class structure information 301, a constant pool 302, and a byte code 303.
  • FIG. 12 is a diagram showing a constant pool 302 of the class file 300 when the class 1100 is compiled.
  • the column 1201 is an index indicating the entry number of the constant pool 302, and the reference of the constant pool 302 is expressed by the index.
  • Column 1202 is the constant pool type. The constant pool is determined according to the type of information to be recorded.
  • Column 1203 is the constant pool value.
  • index 1 means that it is a reference to the method indicated by index 13 in the class declared by the class of index 3.
  • Index 3 is CO NSTANT—Class represents a reference to a class.
  • Index 3 is a reference to the class with the name of index 15, and
  • CONSTANT—Utf 8 of index 15 represents the name of the class, method, or field.
  • the name of the class is "Sample”.
  • CONSTANT—NameAndType at index 13 represents a method or field name and a type descriptor reference.
  • a type descriptor is a string representation of a field type, method argument, or return type.
  • this constant pool 302 is named index 8 and the type descriptor is index 18.
  • FIG. 13 is a part of class structure information 301 of class 1100.
  • class 1301 is a reference to the name of class 1100.
  • the name of the class is recorded in index 15 of constant pool 302.
  • super—class 1302 is the parent class of class 1100.
  • filed — countl303 represents the number of fields defined in class 1100.
  • the field is an area in which a method processing result or the like can be stored.
  • Field information 1304 records information such as field names and access rights defined in class 1100.
  • method—countl305 represents the number of methods defined in class 1100. In the method information 1306, the name of the method defined in the class 1100, the address of the Neut code, etc. are recorded.
  • FIG. 14 shows the byte code 303 of the method 1104 defined in the class 1100.
  • Byte code 303 uses the constant pool 302 to access classes, fields, and methods.
  • instruction 1401 refers to constant pool 302 of index 3.
  • the bytecode interpreter 201 executes the bytecode 303, there is an instruction to refer to the constant pool 302! /, That is, an instruction to specify the index of the constant pool 302 by the symbol # in FIG. And the meta information management unit 131 Request information and process the instructions using the information obtained by the constant pool resolution process.
  • the bytecode interpreter 201 executes instructions that do not specify the constant pool 302 index independently.
  • the constant pool resolution process is a process for examining at which address in the first RAM 125 the class, field, and method represented by the character string in the constant pool 302 are stored.
  • FIG. 15 is a flowchart of processing for executing the instruction 1401 of FIG.
  • the byte code interpreter 201 fetches an instruction 1401.
  • the instruction 14 02 is an instruction for generating a class-type object stored at the index 3 position of the constant pool 302. Since the constant pool 302 is stored in the second RAM 135, the byte code interpreter 201 cannot access the constant pool 302. Therefore, the bytecode interpreter 201 notifies the content of the instruction 1401 to the meta information management unit 131. (S1501).
  • the meta information management unit 131 reads the instruction 1401 and searches the constant pool 302 stored in the second RAM 135 with the index 3 referred to by the instruction 1401 (S1502). In the present embodiment, the class name “Sample” is obtained.
  • the meta information management unit 131 calculates the size of the object from the class structure information 301 of the “Sample” class. (S1503).
  • the size of the object, the number of fields declared by the class, and the type descriptor power are also calculated.
  • the "Sample” class has one int type field, so the object size is 4 (bytes).
  • the meta information management unit 131 generates a class ID representing the “Sample” class (S1504).
  • the class ID is information used to identify whether the generated object has generated any class power.
  • the class ID can be realized using a 32-bit integer value, for example.
  • the meta information management unit 131 stores the correspondence between the class ID and the class structure information 301 represented by the class name in the class ID correspondence table stored in the second RAM 134.
  • FIG. 16 is a diagram showing an example of the class ID correspondence table.
  • Column 1610 represents the class name and column 1611 represents the class ID.
  • the class structure information 301 represented by the class name “Sample” indicates that the class ID is associated with 1.
  • the meta information management unit 131 determines that the object size calculated in S 1503 and the S
  • the class ID generated in 1504 is stored in the first RAM 125 and notified to the bytecode interpreter 201 (S1505).
  • the byte code interpreter 201 secures memory for the notified object size (S 1506), and records the notified class ID in the object header (S 1507).
  • the object header is an area for recording various information about the object.
  • the bytecode interpreter 201 can execute the instruction 1401 without knowing the meta information.
  • the constant pool 302 is recorded in the second RAM 135 and cannot be eavesdropped.
  • the contents of communication between the malicious third-party S-byte code interpreter 201 and the meta information management unit 131 are eavesdropped, only the constant pool 302 index and the object size to be secured can be obtained.
  • the contents of the constant pool will not leak. In other words, the contents of the malicious third party power constant pool 302 can be concealed.
  • the correspondence between the class ID and the class structure information 301 is not necessarily one-to-one.
  • FIG. 17 is a diagram showing an example in which a plurality of class IDs correspond to one class structure information 301.
  • Instructions 1402 to 1403 do not include a reference to the constant pool 302! /, Therefore, the bytecode interpreter 201 executes the instruction without calling the meta information management unit 131. Can do.
  • Instruction 1404 is an instruction with a reference to constant pool 302.
  • the instruction 1404 is an instruction for calling the bytecode of the method represented by the class name and method name stored at the position of index 2 of the constant pool 302 stored in the second RAM 135.
  • FIG. 18 is a flowchart of a process in which the bytecode interpreter 201 executes the instruction 1404.
  • the bytecode interpreter 201 fetches the instruction 1404 and the contents of the instruction 1404
  • the meta information management unit 131 is notified of the address of the one object object (S 1801).
  • the receiver object is an object on which a method is executed.
  • method processing is performed using a field stored in the receiver object.
  • the meta information management unit 131 searches for the class ID stored in the object header of the receiver object from the class ID corresponding tape 1600 stored in the second RAM 134, and searches for the class structure information 301 corresponding to the class ID ( S1802). As shown in FIG. 16, since the class ID is “1”, the class structure information 301 in FIG. 13 is searched.
  • the meta information management unit 131 retrieves the index 4 from the constant pool 302, and obtains the method name “ku init>” and the type descriptor “0V” (S1803).
  • the meta information management unit 131 searches the method information 1306 included in the class structure information 301 searched in S1802 for the method having the method name and type descriptor searched in S1803, and obtains the byte code address thereof. (S1804).
  • the meta information management unit 131 notifies the interpreter 201 of the byte code address obtained in S 1804 (S1805).
  • the byte code interpreter 201 executes the byte code address notified from the meta information management unit 131 (S1806).
  • the bytecode interpreter 201 can execute the instruction 1404 without knowing the meta information.
  • the constant pool 302 cannot be eavesdropped because it is recorded in the second RAM 135.
  • the contents of communication between the malicious third-party S-byte code interpreter 201 and the meta information management unit 131 are eavesdropped, only the index of the constant pool 302 and the byte code address to be executed next can be obtained.
  • the contents of the constant pool will not leak. That is, the contents of the malicious third party power constant pool 302 can be concealed.
  • Instructions 1405 to 1406 do not include a reference to the constant pool 302! /. Therefore, the bytecode interpreter 201 executes the instruction without calling the meta information management unit 131. Can do.
  • the instruction 1407 is an instruction with a reference to the constant pool 302.
  • the instruction 1407 is stored at the position of index 2 of the constant pool 302 stored in the second RAM 135. This is an instruction to read a field represented by a class name and a field name. Since the second RAM 135 stores the constant pool 302, the byte code interpreter 201 cannot access the constant pool 302.
  • FIG. 19 is a flowchart of a process for executing the bytecode interpreter 201 input instruction 1407.
  • the Neut code interpreter fetches the instruction 1407, it calls the meta information management unit 131 to notify the contents of the instruction 1407 and the address of the object at the top of the Java (registered trademark) stack immediately before the execution of the instruction 1407. (S1901).
  • Java (registered trademark) stack is referred to as “Java (registered trademark) Virtual Machine Specification j!
  • the meta information management unit 131 searches the class ID correspondence table 1600 stored in the second RAM 134 for the class ID stored in the object header of the notified object, and obtains the class structure information 301 corresponding to the class ID. Search for. (S1902) In this embodiment, since the class ID is “1”, the class structure information 301 is searched.
  • the meta information management unit 131 searches the index 2 from the constant pool 302 to obtain the field name “field” and the type descriptor “I”.
  • the meta information management unit 131 searches the field information 1304 included in the class structure information 301 searched in S 1902 for a field having the field name and type descriptor searched in S 1903, and the field Get the address.
  • the meta information management unit 131 stores the field address obtained in S1904 in the first RAM 125, and notifies the byte code interpreter 201 of the address (S1905).
  • the bytecode interpreter 201 reads the field address notified from the meta information management unit 131 (S 1906).
  • the bytecode interpreter 201 can execute the instruction 1407 without knowing the meta information.
  • the constant pool 302 cannot be eavesdropped because it is recorded in the second RAM 135.
  • the constant pool 302 index and the address of the field for reading the data can be obtained.
  • the content of the constant pool is not leaked. In other words, malicious third party power Constant Pooh
  • the contents of Le 302 can be kept secret.
  • meta information (class structure information 301, constant pool 302) is stored only by the second RAM 134 that cannot be accessed by the debugger, a malicious third party can use a tool such as a debugger.
  • Meta information cannot be acquired even if an illegal copy of a Java (registered trademark) application is attempted using.
  • Java registered trademark
  • meta information cannot be read out, so it is difficult to identify which methods and data should be tapped and tampered with. Becomes very difficult.
  • the application acquisition program 121 and the Java (registered trademark) virtual machine 122 are realized by software executed by the first CPU 124, they may be realized by hardware such as LSI. Of course.
  • the normal execution unit 120 operates as a subprogram of the class loader 202 and the verifier 203 and ava (registered trademark) virtual machine 122. For this reason, there is a problem that meta information is leaked by eavesdropping on the first RAM 125 with a tool such as a debugger after S1001 of the class loading process shown in FIG. 10 is completed until S1005. In the second embodiment, this problem is solved by operating the class loader 202 and the verifier 203 by the safe execution unit 130.
  • FIG. 20 is a block diagram showing a configuration of the application execution apparatus according to the second embodiment.
  • the application execution device 2010 according to the present embodiment is different from the application execution device 110 according to the first embodiment in the ljava (registered trademark) virtual machine 2022, the second Java (registered trademark) virtual machine 2032, and the decryption processing unit 2034. . Since other components are the same as those in the first embodiment, description thereof is omitted.
  • FIG. 21 is a diagram showing subprogram configurations of the ljava (registered trademark) virtual machine 2022 and the second Java (registered trademark) virtual machine 2032.
  • the class loader 2106 and the verifier 2107 are subprograms of the second Java (registered trademark) virtual machine 2032 to be executed by the secure execution unit 2030. Further, as shown in FIG. 22, the first ROM 2026 stores the first Java (registered trademark) virtual machine 2201 and the second Java (registered trademark) virtual machine 2202.
  • FIG. 23 is a flowchart showing a processing procedure in which the Java (registered trademark) virtual machine loader 2033 loads the first Java (registered trademark) virtual machine 2022 and the second Java (registered trademark) virtual machine 2032. .
  • the Java (registered trademark) virtual machine loader 2033 instructs the decryption processing unit 2034 to decrypt the IJava (registered trademark) virtual machine 2201 and output the result to the first RAM 2036.
  • the Java (registered trademark) virtual machine loader 2033 instructs the decryption processing unit 2034 to decrypt the second Java (registered trademark) virtual machine 2202 and output the result to the second RAM 2036 (S2302). . Finally, the OS 2023 is notified of the completion of loading (S2303).
  • the Java (registered trademark) virtual machine can be loaded as described above.
  • the class loading process is the same as that of the first embodiment except that the operations of the class loader 2106 and the verifier 2107 are executed by the safe execution unit 2010, and the description thereof will be omitted.
  • the class execution process is also the same as that of the first embodiment, and the description thereof is omitted.
  • Embodiments 1 and 2 all meta information included in the class file is stored only in the second RAM 135, but some meta information is stored in the first RAM 125. Also good. In this case, the information stored in the first RAM 125 is Forces that can be analyzed by the tool Since the interaction between the normal execution unit 120 and the safe execution unit 130 can be reduced, the application can be executed more quickly.
  • the complete class cannot be restored with only some meta information, but the obtained meta information power may be able to be restored by estimating other meta information. . Decide how much meta information you need to hide based on the protection requirements of the executable program.
  • the application execution device conceals the meta information indispensable for execution and analysis of the application in a safety execution unit that is difficult to eavesdrop and tamper with, so that the application is wiretapped and tampered with at the time of execution. It also protects the rights of content creators in the application download distribution business.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

 従来のアプリケーション保護技術では、アプリケーションを複雑化することで、アプリケーションの解析を困難にしていた。しかし、この方法ではアプリケーションをどれだけ複雑化しても、時間をかけることで解析が可能であった。また、アプリケーションそのものを不正コピーから防ぐことはできない。安全な実行部で動作するメタ情報管理部は、アプリケーションのメタ情報をデバッガからアクセスすることができない領域へ記憶させ、通常の実行部でアプリケーション実行時のためメタ情報が必要になった時に、メタ情報を使い所定の計算をした結果を通常の実行部へ通知することで、アプリケーションのメタ情報を秘匿する。

Description

明 細 書
アプリケーション実行装置及びアプリケーション実行装置のアプリケーショ ン実行方法
技術分野
[0001] 本発明は、アプリケーションプログラム (特に Java (登録商標)言語で記述されたプロ グラム)を実行するアプリケーション実行装置に関し、インターネットや DVD等の外部 のメディア力 ダウンロードしたアプリケーションを実行する時に、アプリケーションが 不正に盗聴、改竄されることを防止する技術に関する。
背景技術
[0002] 従来のデジタル TVや携帯電話などの電子機器では、 Java (登録商標)言語で記述 されたアプリケーションプログラムをダウンロードし、実行する機能を搭載するものが 増加している。たとえば携帯電話では、 NTT DoCoMoが iアプリ(登録商標)と呼ば れるサービスを提供している。このサービスは、携帯電話端末力 Sインターネット上にあ るアプリケーション配信サーバから Java (登録商標)プログラムをダウンロードして、端 末上で実行する。
[0003] また、欧州では、 DVB— MHP (Digital Video Broadcasting - Multimedia Home Platform)と呼ばれる仕様が策定され、既に仕様に準拠した運用が開始さ れている。 DVB— MHP規格に基づくデジタル放送では、放送波に多重化され^ Ja va (登録商標)プログラムをデジタル TVが受信し、それを実行する。
[0004] このようなアプリケーションプログラム配信サービスにおいて、配信されるアプリケー シヨンプログラムはそのアプリケーションプログラムの開発者の知的財産権で保護され ており、これを悪意のある攻撃者が盗聴することは防がなくてはならない。また、悪意 のある攻撃者により改ざんされたアプリケーションプログラムが、利用者やアプリ製作 者の意図しな!、動作をすることを防がなくてはならな!、。
[0005] 近年の電子機器は、多数のソフトウェアモジュール力も構成されている。専門的な 知識を有する者であれば、これらのソフトウェアモジュールのバグを悪用することで電 子機器内のソフトウェアを改ざんすることも可能である。また、デバッガや ICE (In— C ircuit Emulator)等のツールを用いることでも同様のことは実現可能である。その ため、たとえ «JaVa (登録商標)プログラムに著作権管理機能や課金機能が含まれる 場合には、これらの機能を無効化できてしまうという問題が発生する。今後、インター ネット等を利用し^ Java (登録商標)アプリケーションプログラムの配信ビジネスが本 格化するに従い、このようなアプリケーションプログラムの盗聴、改ざんの問題が深刻 化すると予想される。
[0006] 従来、ソフトウェアモジュールのバグの悪用や、デバッガ、 ICEなどのツールによつ てメモリ上のプログラムを解析、改ざんすることを防ぐために、元のプログラムに対し、 複雑化と暗号化と ヽぅ方法が用いられて ヽる。
複雑化とは、処理の分割、出現順序の交換、条件の挿入などの処理を施すことによ り、元のプログラムと動作は同じであるが、より複雑なプログラムへと変換し、プロダラ ム自体を複雑にするという手法であり、暗号化とは、プログラムを暗号ィ匕しておき、実 行時にだけ復号する方法である。
特許文献 1 :特表 2002— 514333
発明の開示
発明が解決しょうとする課題
[0007] しかし、複雑化の方法は、どれだけ複雑な変換を施したとしても、時間を力けて解析 することでいっかは解析されてしまう。プログラムの金銭的価値が高くなれば、いかに 複雑なプログラムであってもそれを解析するためのコストを負担する者が現れるのは 必然である。
また、暗号ィ匕の方法は、プログラムの実行中は復号されているので、その間に解析 、盗聴されてしまう可能性がある。
[0008] 本発明は、上記の問題を解決するもので、ソフトウェアモジュールのバグの悪用や
、専門的なツールによるアプリケーションプログラムの盗聴、改ざんを防止するアプリ ケーシヨン実行装置を提供することを目的とする。 課題を解決するための手段
[0009] 上記課題を解決するため、本発明は、取得したアプリケーションをクラス単位で実 行するアプリケーション実行装置であって、クラスファイルに含まれるメタ情報を記憶 するメタ情報記憶手段と、クラスファイルに含まれる命令列を記憶する命令列記憶手 段と、参照すべき情報のない命令を実行し、参照すべき第 1情報があるとき要求し、 通知された第 2情報を用いて命令を実行する命令実行手段と、前記命令実行手段の 要求に応じて前記メタ情報から第 2情報を生成し、前記命令実行手段に通知するメタ 情報実行手段とを備え、前記メタ情報記憶手段に記憶されたメタ情報は、前記メタ情 報実行手段だけが読み出すことができ、前記メタ情報実行手段は、前記命令実行手 段の要求だけを受け付けることとして 、る。
発明の効果
[0010] 上記構成により、アプリケーションの命令を実行する命令実行手段は、参照すべき 情報があるとき、メタ情報実行手段に指示して、必要とする第 2情報が通知されるの で、例えばデバッガを用いて命令実行手段を盗聴したとしても、メタ情報記憶手段に 記憶されているメタ情報そのものは見ることが出来ない。したがって、命令実行手段 で命令列が盗聴、改ざんされたとしても、アプリケーションの解析は困難であり、盗聴 、改ざんを防止することができる。
[0011] また、前記メタ情報記憶手段は、インデックスとコンスタントプールの型とその値とを 記載したコンスタントプールと、項目とその値とを記載したクラス構造情報とを記憶し、 前記命令列記憶手段は、クラスで定義されているメソッドのバイトコードを記憶し、前 記メタ情報実行手段は、前記命令実行手段がバイトコードに第 1情報であるコンスタ ントプールのインテックスが指定されて 、る命令を実行するとき、その命令の種類に 応じて前記コンスタントプールとクラス構造情報とを参照して第 2情報を生成すること としている。
[0012] これにより、アプリケーションの実行時においても、アプリケーションが不正に解析、 改ざんされることを防ぐことができ、保護強度が向上する。
また、前記命令実行手段が実行するバイトコードが新 、オブジェクトの生成である とき、前記メタ情報実行手段は、指定されたインデックスに対応するコンスタントブー ルの型を前記コンスタントプール力 検索し、前記クラス構造情報を参照して、メモリ サイズを生成することとして 、る。
[0013] これにより、命令実行手段はオブジェクトのサイズを得る力 オブジェクトのサイズの 計算の元になつた、当該クラスが宣言するメタ情報のフィールドの数と型記述子は命 令実行手段には見えない。
また、前記命令実行手段が実行するバイトコード力メソッドの呼び出しであるとき、前 記メタ情報実行手段は、指定されたインデックスに対応するコンスタントプールの型を 前記コンスタントプールカゝら検索し、前記クラス構造情報を参照して前記メソッドのァ ドレスを生成することとして 、る。
[0014] これにより、命令実行手段はメソッドのアドレスを得る力 当該アドレスを得るのに必 要なメタ情報は命令実行手段には見えな 、。
また、前記命令実行手段が実行するバイトコードがオブジェクトのフィールド参照で あるとき、前記メタ情報実行手段は、指定されたインデックスに対応するコンスタントプ 一ルの型を前記コンスタントプール力 検索し、前記クラス構造情報を参照して、前 記フィールドのアドレスを生成することとして 、る。
[0015] これにより、命令実行手段はフィールドのアドレスを得るが、当該アドレスを得るのに 必要なメタ情報は命令実行手段には見えな 、。
また、前記取得されたアプリケーションは暗号ィ匕されており、前記暗号化されたアブ リケーシヨンを復号し、復号された命令列を前記命令列記憶手段に記憶させ、復号さ れたメタ情報を前記メタ情報記憶手段に記憶させる復号手段を更に備えることとして いる。
[0016] これにより、アプリケーションの復号時においてもアプリケーションのメタ情報を保護 することができ、より保護強度が向上する。
また、前記復号手段は、外部から直接アクセスできない鍵記憶手段に記憶された 復号鍵を用いて前記アプリケーションを復号することとして 、る。
これにより、アプリケーションが不正に復号され、解析、改ざんされることを防ぐこと 力 Sでき、保護強度が向上する。
[0017] また、前記アプリケーションは、 Java (登録商標)アプリケーションであることとしてい る。
これにより、 Java (登録商標)アプリケーションが不正に盗聴、改ざんされることを防 ぐことができる。 また、本発明は、取得したアプリケーションをクラス単位で実行するアプリケーション 実行装置のアプリケーション実行方法であって、クラスファイルに含まれるメタ情報を 記録するメタ情報記録ステップと、クラスファイルに含まれる命令列を記録する命令列 記録ステップと、参照すべき情報のない命令を実行し、参照すべき第 1情報があると き要求し、通知された第 2情報を用いて命令を実行する命令実行ステップと、前記命 令実行ステップの要求に応じて前記メタ情報から第 2情報を生成し、前記命令実行ス テツプに通知するメタ情報実行ステップとを有し、前記メタ情報記録ステップに記録さ れたメタ情報は、前記メタ情報実行ステップだけが読み出すことができ、前記メタ情報 実行ステップは、前記命令実行ステップの要求だけを受け付けることとして 、る。
[0018] 上記方法により、デバッガ等のツールによりアプリケーション実行時に、アプリケー シヨンの命令力 Sメモリ上で盗聴、改ざんされたとしても、デバッガ等からはアプリケーシ ヨンのメタ†青報にはアクセスできないので、アプリケーションとしての解析を困難にし、 盗聴、改ざんを防止することができる。
図面の簡単な説明
[0019] [図 1]本発明に係るアプリケーション実行装置の実施の形態 1の構成図である。
[図 2]上記実施の形態の Java (登録商標)仮想マシンの構成を示す図である。
[図 3]上記実施の形態の Java (登録商標)クラスファイルの構造図である。
[図 4]上記実施の形態の第 1ROMに記憶されている情報の一例の構成図である。
[図 5]上記実施の形態のアプリ取得プログラムの構成の一例の構造図である。
[図 6]上記実施の形態のメタ情報の処理手順を示すフローチャートである。
[図 7]上記実施の形態の第 2ROMに記憶されている情報の一例の構成図である。
[図 8]上記実施の形態の Java (登録商標)仮想マシンをロードする処理手順を示すフ ローチャートである。
[図 9]上記実施の形態の復号の処理手順を示すフローチャートである。
[図 10]上記実施の形態のクラスをロードする処理手順を示すフローチャートである。
[図 11]上記実施の形態の Java (登録商標)クラスの一例を示す図である。
[図 12]上記実施の形態のコンスタントプールの一例を示す図である。
[図 13]上記実施の形態のクラス構造情報の一例を示す図である。 [図 14]上記実施の形態のノ イトコードの一例を示す図である。
[図 15]上記実施の形態のノイトコードの new命令の処理手順を示すフローチャート である。
[図 16]上記実施の形態のクラス ID対応テーブルの一例を表す図である。
[図 17]上記実施の形態のクラス ID対応テーブルの別の一例を表す図である。
[図 18]上記実施の形態の invokespecial命令を実行する際のバイトコードインタプリ タおよびメタ情報管理部のフローチャートである。
[図 19]上記実施の形態の getfield命令を実行する際のバイトコードインタプリタおよ びメタ情報管理部のフローチャートである。
圆 20]本発明に係るアプリケーション実行装置の実施の形態 2の構成図である。 圆 21]上記実施の形態の仮想マシンの構成を示す図である。
[図 22]上記実施の形態の第 1ROMに記憶されている情報の一例を示す図である。 圆 23]上記実施の形態の Java (登録商標)仮想マシンをロードする処理手順を示す フローチャートである。 符号の説明
100, 2000 ダウンロード可能なプログラム
110, 2010 アプリケーション実行装置
120, 2020 通常実行部
121, 2021 アプリ取得プログラム
122 Java (登録商標)仮想マシン
123, 2023 OS
124, 2024 第 1CPU
125, 2025 第 1RAM
126, 2026 第 1ROM
130, 2030 安全な実行部
131, 2031 メタ情報管理部
132, 2033 Java (登録商標)仮想マシンローダ
133, 2034 復号処理部 134, 2035 第 2CPU
135, 2036 第 2RAM
136, 2037 第 2ROM
201, 2101 バイトコードインタプリタ
202, 2106 クラスロータ"
203, 2107 ベリファイャ
204, 2103 Java (登録商標)ヒープ管理部
205, 2104 Java (登録商標)ネィティライブラリ
206, 2105 JITコンパイラ
300 クラスファイル
301 クラス構造情報
302 コンス ントプーノレ
303 バイ卜コ^ ~"ド、
401 暗号化され ^Java (登録商標)仮想マシン
402 暗号ィ匕されたアプリ取得プログラム
403 暗号化されたメタ情報管理部
404 起動クラス名
501 暗号ィ匕されたサブクラス
701 復号鍵
1100 Java (登録商標)言語によるクラス定義ファイル
1600 クラス ID対応テーブル (例 1)
1700 クラス ID対応テーブル(例 2)
2022 第 ljava (登録商標)仮想マシン
2032 第 2Java (登録商標)仮想マシン
発明を実施するための最良の形態
本発明に係るアプリケーション実行装置の実施の形態を、図面を参照しながら説明 する。
(実施の形態 1) 図 1は、本発明に係るアプリケーション実行装置の実施の形態 1の構成図である。 ダウンロード可能なアプリケーションプログラム(以下、単に「アプリケーション」と 、う
) 100は、アプリケーション実行装置 110からダウンロード可能なアプリケーションであ り、本実施の形態においては、コンパイルされ、暗号化され^ Java (登録商標)アプリ ケーシヨンである。
[0022] アプリケーション実行装置 110は、通常実行部 120と安全な実行部 130とを備え、 仮想線 140の上方のソフトウェアと下方のハードウェアとで構成される。アプリケーショ ン実行装置 110は、たとえばデジタルテレビ、セットトップボックス、 DVDレコーダー、 Blu-ray Disc (BD)レコーダー、カーナビ端末、携帯電話、 PDAなどの、 Java (登 録商標)仮想マシンを搭載する電子機器あるいは端末に摘用される。
[0023] 通常実行部 120は、ソフトウェアとして、アプリ取得プログラム 121、 Java (登録商標 )仮想マシン 122、 OS123と、ハードウェアとして、第 1CPU124、第 1RAM125、第 1ROM126と力も構成される。ここで、アプリ取得プログラム 121、 Java (登録商標)仮 想マシン 122、 OS 123の並び順は、ソフトウェアの階層構成の上層力もの順を示し、 これらのソフトウェアは第 1CPU124で動作する。
[0024] 通常実行部 120は、たとえば通常のパーソナルコンピュータやデジタル家電機器 等に搭載されているプログラム実行手段と同様のものである。なお、請求の範囲では 、通常実行部 120は、命令実行手段及び命令列記憶手段で構成される。
安全な実行部 130は、ソフトウェアとして、メタ情報管理部 131、 Java (登録商標)仮 想マシンローダ 132、復号処理部 133と、ハードウェアとして、第 2CPU134、第 2R AM135、第 2ROM136とカゝら構成される。ここで、メタ情報管理部 131、 Java (登録 商標)仮想マシンローダ 132、復号処理部 133の各ソフトウェアは、第 2CPU124で 動作する。
[0025] 安全な実行部 130は、悪意のある第三者力もの攻撃を防御しつつ、安全にプログ ラムを実行させることができる。即ち、安全な実行部 130は、外部の装置から直接ァク セスされることが禁止され、第 1CPU124からの指示に応じて、第 2CPU134は必要 な情報を第 1CPU124に通知する。なお、請求の範囲では、安全な実行部 130は、 メタ情報実行手段及びメタ情報記憶手段並びに復号手段で構成される。 [0026] 先ず、通常実行部 120の各構成要素について説明する。
アプリ取得プログラム 121は、アプリケーション 100をアプリケーション実行装置 110 の外部から取得し、第 1RAM125に記憶させる。アプリ取得プログラム 121は、たとえ ば、インターネット上にあるサーバから、 TLS (Transport Layer Security)、 HT TP (Hyper Text Transfer Protocol)等のプロトコルに従い Java (登録商標)ァ プリケーシヨン 100 (暗号化され、クラスファイル形式)をダウンロードする Java (登録商 標)プログラムが相当する。
[0027] ここで、 TLSは暗号ィ匕により通信時のデータの盗聴、改ざんを防ぐデータ転送方式 である。 TLSの詳細は RFC2246に記載されており、ここでは詳細な説明を省略する また、 HTTPは、インターネット上のデータ通信で一般的に用いられているデータ 転送方式である。 HTTPの詳細は RFC2616に記載されており、ここでは詳細な説 明を省略する。
[0028] なお、アプリ取得プログラム 121は、デジタル放送のデータ放送として、 MPEG2ト ランスポートストリーム内に埋め込まれ^ Java (登録商標)アプリケーションをアプリケ ーシヨン実行装置 110に読み出す Java (登録商標)プログラムであってもよ!/、。 MPE G2トランスポートストリームの詳細は MPEG規格書 ISOZIEC138181— 1に記載 されているので、その説明を省略する。 MPEG2トランスポートストリームに Java (登録 商標)プログラムを埋め込む方法は、 DSMCC方式として、 MPEG規格書 ISO/I EC138181— 6に記述されている。ここでは DSMCCの詳細な説明は省略する。 D SMCC方式は、 MPEG2トランスポートストリームのパケットの中に、コンピュータで使 用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方 法を規定している。
[0029] また、アプリ取得プログラム 121は、 SDカード、 CD— ROM、 DVD, BD— ROM等 のリムーバブルメディアに記録され^ Java (登録商標)アプリケーションを、第 1RAM 125に書き込む Java (登録商標)プログラムであってもよ 、。アプリ取得プログラム 12 1は OS 123が提供するファイル操作機能を用 、て、これらのリムーバブルメディアに 記録され^ Java (登録商標)アプリケーションを読み出す。 [0030] また、アプリ取得プログラム 121は、アプリケーション実行装置 110内にある第 1RO Mに記録され^ Java (登録商標)アプリケーションを、第 1RAM 125に書き込む Java (登録商標)プログラムであつてもよい。アプリ取得プログラム 121は OS 123が提供す るファイル操作機能を用いて、第 1ROM126に記録され^ Java (登録商標)アプリケ ーシヨンを読み出す。
[0031] なお、本実施の形態ではアプリ取得プログラム 121は、 Java (登録商標)言語で記 述され^ Java (登録商標)プログラムとしているが、同等の機能を有する、ネイティブ( 実行装置固有)言語で記述されたプログラムで実現されて 、てもよ 、。
Java (登録商標)仮想マシン 122は、 Java (登録商標)言語で記述されたプログラム を逐次解析し実行する Java (登録商標)バーチャル (仮想)マシンである。 Java (登録 商標)言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存し ない中間コードの命令列 (オペレーション)にコンパイルされる。 Java (登録商標)仮想 マシン 122は、このバイトコードを解釈、実行するソフトウェアで実現される。また、一 部の Java (登録商標)仮想マシン 122は、バイトコードを第 1CPU124が実行可能な 実行形式に翻訳する JIT (Just In Time)コンパイラと呼ばれる機能を持つものもある。 また、一部の Java (登録商標)仮想マシン 122は、一部のバイトコードを直接実行可 能なプロセッサと、プロセッサでは直接実行できな 、バイトコードを実行するインタプリ タカ 構成されることもある。なお、 Java (登録商標)言語の詳細は、書籍「Java (登録 商標) Language Specification (ISBN 0— 201— 63451— 1)」等の多くの書 籍で解説されているので、ここでは、その詳細を省略する。
[0032] Java (登録商標)仮想マシン 122は、複数のサブプログラム力も構成される。
図 2は、 Java (登録商標)仮想マシン 122を構成するサブプログラムの一例である。 Java (登録商標)仮想マシン 122は、図 2に示すように、バイトコードインタプリタ 201 、クラスローダ 202、ベリファイャ 203、 Java (登録商標)ヒープ管理部 204、 Java (登 録商標)ネイティブライブラリ 205、 JITコンパイラ 206で構成されて 、る。
[0033] ノ イトコードインタプリタ 201は、クラスファイルに含まれるノ イトコードを解釈、実行 するサブプログラムで、 Java (登録商標)仮想マシン 122にお 、て中核的な処理を行 うサブプログラムである。詳細ついては後述する。 クラスローダ 202は、アプリ取得プログラム 121が取得し^ Java (登録商標)アプリケ ーシヨン 100を、第 1RAM125から読み出し、 Java (登録商標)仮想マシン 122が実 行できるアプリケーションに変換して再度第 1RAM125に書き込み、クラスを実行可 能な状態にする。また、クラスローダ 202は、クラスアンロード処理も行う。クラスアン口 ード処理とは、実行が終了し不要になったクラスを Java (登録商標)仮想マシン 122 力 取り除く処理のことである。
[0034] ここで、クラスとは、 Java (登録商標)アプリケーションを構成する基本単位であり、書 籍「Java (登録商標) Virtual Machine Specification (ISBN 0— 201— 6345 1一)」で定義されている。
図 3は、クラスに含まれる情報の概要を示した図である。
「Java (登録商標) Virtual Machine Specification」での規定では、クラスは 図 3に示されていない情報もあるが、ここでは説明の簡単化のため本発明に関連の ある項目のみ説明する。
[0035] クラス構造情報 301は、このクラスが保持するフィールド、メソッド、どのクラスを継承 する力など、クラスの構造に関する情報を含んでいる。
コンスタントプール 302は、アプリケーション(クラス)で定義されて!、る定数(コンスタ ント)に関するデータをまとめた情報であり、クラスで定義しているまたはこのクラスか ら参照している他クラスのフィールド、メソッド、クラスの名前などの情報を含んでいる 。クラス構造情報 301とコンスタントプール 302とを総称してクラスのメタ情報 (または、 単にメタ情報)と呼ぶ。
[0036] バイトコード 303は、そのクラスにおいて実行されるメソッドの処理を、中間言語の命 令の列として記述したものである。ノ イトコード 303にはアプリケーションが処理する データに関する情報は含まれな 、。したがって、 Java (登録商標)アプリケーションの 実行においては、バイトコード 303だけでは一般的に実行処理ができず、データ部 分を定義したコンスタントプール 302があって始めて実行処理が可能となる。クラスに 含まれる上記の各情報の例については、後述する。
[0037] 図 2に戻って、ベリファイャ 203は、クラスのデータ形式の不備や、クラスに含まれる ノイトコードの安全性を判定する。ノイトコードの安全性の検査方法は、 Java (登録商 標) Virtual Machine Specificationで定義されているため詳細な説明は省略 する。
ベリファイャ 203が妥当ではないと判定されたクラスは、クラスローダ 202はロードを しない。
[0038] Java (登録商標)ヒープ管理部 204は、 Java (登録商標)ヒープと呼ばれる、 Java (登 録商標)アプリケーションが使用するワーキングメモリの確保を行う。 Java (登録商標) ヒープは第 1RAM125内に確保される。また、 Java (登録商標)ヒープ管理部 204は 、ガーベジコレクションも行う。ここで、ガーベジコレクションとは、アプリケーション実行 において不要になったワーキングメモリを開放し、他の用途に再利用できるようにする 公知の技術をいい、詳細な説明は省略する。
[0039] Java (登録商標)ネイティブライブラリ 205は、 Java (登録商標)アプリケーションから 呼び出されるライブラリで、 OS123や、アプリケーション実行装置 110が備える図 1に は記載されて 、な 、ノ、一ドウエア、サブプログラム等で提供される機能を、 Java (登 録商標)アプリケーションへ提供する。
JITコンパイラ 206は、バイトコード 303を第 1CPU124もしくは第 2CPU134が理 解可能な実行形式に翻訳する。
[0040] 以上で、図 2に基づく、 Java (登録商標)仮想マシン 122の概略の説明を終わる。
再び図 1に戻って、 OS123は、アプリケーション実行装置 110の電源が投入される と第 1CPU124が起動する基本ソフトウェアである。 OS123は、オペレーティングシ ステムの略であり、 Linuxがー例である。 OS 123は、プログラムを平行して実行する カーネル及び、ライブラリで構成される公知の技術の総称であり、詳細な説明は省略 する。 OS 123 ίお ava (登録商標)仮想マシン 122をサブプログラムとして実行する。
[0041] 第 1CPU124は、 Java (登録商標)仮想マシン 122、 OS 123、アプリケーション取 得プログラム 121、アプリケーション取得プログラム 121の実行で取得されたアプリケ ーシヨン 100の各プログラムに従い処理を実行する。
第 1RAM 125は、アプリケーション取得プログラム 121の実行で取得されたアプリケ ーシヨンプログラムをクラスファイルとして記憶し、復号され^ Java (登録商標)仮想マ シン 122を記憶する。また、第 1CPU124が処理を行う際、一時的にデータを保存す る。また、第 1CPU124から第 2CPU134に実行を依頼するときの、両 CPU間のデ ータの受け渡しに使用される。第 1RAM125は、たとえば、 SRAM, DRAM等の一 次記憶からなる。
[0042] 第 1ROM126は、暗号ィ匕され ava (登録商標)仮想マシン 401などを記憶する。
第 1CPU124から指示されたデータやプログラムを記憶する。第 1ROM126は、具 体的にはフラッシュメモリゃノヽードディスク等の不揮発性メモリからなる。
図 4は、第 1ROM126が記憶している内容の一例を示す図である。
第 1ROM126は、暗号ィ匕され ava (登録商標)仮想マシン 401、暗号化されたァ プリ取得プログラム 402、暗号ィ匕されたメタ情報管理部 403、起動クラス名 404を含 む。
[0043] 図 5は、アプリ取得プログラム 402の構成を示す図である。
アプリ取得プログラム 402は、サブクラス 501〜503などの複数のクラスから構成さ れる。各サブクラスは暗号ィ匕されている。
起動クラス名 404は、 Java (登録商標)仮想マシン 122が起動した際に最初に実行 するプログラムであるクラスの名前である。本実施の形態では暗号ィ匕起動クラス名 40 4にはサブクラス 501が指定されているものとする。なお、第 1ROM126は図 4に示 した以外のデータを記憶して 、てもよ 、。
[0044] 次に、安全な実行部 130の各構成要素について説明する。
メタ情報管理部 131は、 Java (登録商標)仮想マシン 122にロードされているクラス に含まれるメタ情報を管理し、バイトコードインタプリタ 201の要求によりその情報を参 照処理し、その結果を提供するプログラムである。メタ情報管理部 131については後 に詳細に説明をする。
[0045] Java (登録商標)仮想マシンローダ 132は、アプリケーション実行装置 110の電源 投入後に、第 1CPU124が Java (登録商標)仮想マシン 122を実行可能な状態にす るための処理を行う。 Java (登録商標)仮想マシンローダ 132については後に詳細に 説明をする。
復号処理部 133は、第 1RAM 125もしくは第 1ROM 126が記憶する暗号化された 情報 (アプリケーション、 Java (登録商標)仮想マシン 122等)を復号し、第 1RAM12 5へ復号結果を書き出すプログラムである。暗号ィ匕のためのアルゴリズムは任意の暗 号アルゴリズムを用いることが可能である。
[0046] 上記の復号のための鍵は、第 2ROM 136に記憶されている復号鍵 701を使用する 第 2CPU134は、メタ情報管理部 131、 Java (登録商標)仮想マシンローダ 132、復 号処理部 133の各プログラムに従い処理を実行する。
第 2RAM135は、後述のクラス構造情報 301、コンスタントプール 302およびクラス ID対応テーブルを記憶する。また、第 2CPU134が処理を行う際、一時的にデータ を保存するために使用される。
[0047] 第 2RAM135は、たとえば、 DRAMや SRAM等で構成され第 2CPU 134からの みアクセスが可能であり、第 1CPU 124から第 2RAM 135に記憶された情報を読む ことも書くこともできない。なお、第 2RAM135は CPU134に混載されていてもよい。 通常実行部 120で動作するプログラム、たとえ «Java (登録商標)仮想マシン 122と 安全な実行部 130で動作するプログラム、たとえばメタ情報管理部 131は、共同して 動作するため、両者の間で情報の交換が必要となる。
[0048] 図 6は、 Java (登録商標)仮想マシン 122が、たとえばメタ情報管理部 131に処理を 指示するときのフローチャートである。
図 6において、 Java (登録商標)仮想マシン 122は、メタ情報管理部 131に渡す情 報を、第 1RAM125の所定のアドレスへ記憶させる(S601)。次に、 Java (登録商標 )仮想マシン 122は、第 1CPU124を通じて第 2CPU134へ、メタ情報管理部 131の 実行を指示する(S602)。メタ情報管理部 131は、第 1RAM 125の所定のアドレスか ら、 Java (登録商標)仮想マシン 122が S601で記憶されたデータを読み出し(S603 )、そのデータを用いて所定の処理を行う(S604)。
[0049] 次に、メタ情報管理部 131は、 S604で得られた処理結果を第 1RAM125の所定 のアドレスへ書きこむ(S605)。次に、メタ情報管理部 131は、第 2CPU134を通じて 第 1CPU124へ Java (登録商標)仮想マシン 122の実行を指示する(S606)。次に、 Java (登録商標)仮想マシン 122は第 1RAM125の所定のアドレスから、メタ情報管 理部 131が S604で行なった処理の結果を読みだす。 [0050] 以上のように実行することで、第 1CPU124からは直接参照することができない情 報に基づく処理を、安全な実行部 130内で動作するプログラムに指示して情報を受 け渡しでさる。
第 2ROM136は、読み出し専用の不揮発性メモリからなり、第 2CPU134以外から は第 2ROM136が記憶する情報を読みだすことが出来ないことを保証する。
[0051] 図 7は、第 2ROM136が記憶する情報の一例を示す図である。
図 7の第 2ROM 136には、第 1ROM 126が記憶する Java (登録商標)仮想マシン 4 01,アプリ取得プログラム 402に含まれるサブクラス 501〜503を復号するための復 号鍵 701を記憶している。本実施の形態では、 Java (登録商標)仮想マシン 401、ァ プリ取得プログラム 402、起動クラス名 404を復号する鍵は、復号鍵 701—つのみと しているが、それぞれに別々の鍵を用いても本発明は実施可能である。なお、第 2R OM136は図 7に示されて!/ヽな 、別のデータを記憶して 、てもよ!/、。
[0052] また、復号鍵 701は、アプリ取得プログラム 121で取得された暗号ィ匕されたアプリケ ーシヨン 100の復号のための暗号ィ匕された復号鍵を復号するために用いられる。ァ プリケーシヨン 100の復号された復号鍵も第 2ROM136に記憶される。
なお、本実施の形態では、アプリケーション実行装置 110は二つの CPUを備えて いるが、一つの CPUが動作モードを切り替えるなどの方法で仮想的に二つの CPU のように振舞ってもよい。動作モードを変えることが可能な CPUには、たとえば Intel 社の LaGrandeがある。この CPUは通常モードとセキュアモードと呼ばれる 2つの動 作モードを持つ。通常モード側で動作するプログラムからは、セキュアモード上で動く プログラムを盗聴、改ざんすることができないように構成されている。同様の機能を持 つた CPUは ARM社や AMD社からも発表されて!、る。
[0053] なお、本実施の形態では、メタ情報管理部 131、 Java (登録商標)仮想マシンロー ダ 132、復号処理部 133は第 2CPU134で実行されるプログラムとしている力 LSI でこれらの機能を実現してもよ 、。
また、第 1RAM125、第 2RAM135は、一つの RAMを仮想的に 2つの RAMとし て扱ったものとしてもよぐまた、第 lROM126、第 2ROM136は一つの ROMを仮 想的に 2つの ROMとして扱ったものとしてもよい。 [0054] また、安全な実行部 130全体、もしくは一部をノヽードウエアにより実現してもよい。こ の場合、第 1CPU124と第 2CPU134間のデータ通信は暗号ィ匕して行い、第三者に よる盗聴を防ぐ。これは両 CPUを結ぶデータバス(図示されていない)にデータを送 信する際に暗号化し、データを受信後に復号することで行われる。
また、安全な実行部 130は、スマートカードや ICカードのように、アプリケーション実 行装置 110から取り外し可能な装置であってもよい。スマートカード、 ICカードはカー ド内部に CPUやメモリ、セキュリティ回路を含む公知の技術であり、詳細な説明を省 略する。この場合、通常実行部 120と安全な実行部 130間のデータ転送は、 SAC (S ecure Authenticated Channel)等の技術を用いて、第三者による盗聴を防ぎな 力 行うようにする。 SACは ICカードと外部機器の相互認証、および暗号鍵の共有 を安全に行うための公知の技術である。
[0055] また、安全な実行部 130のソフトウェアは、耐タンパソフトウェア技術により保護され たソフトウェアであってもよい。
次に、アプリケーション実行装置 110が Java (登録商標)アプリケーションを盗聴、改 ざん力 保護しながら実行する方法について説明する。
Java (登録商標)アプリケーション実行装置 110の電源が投入されると、第 1CPU1 24は、 OS123を起動する。 OS123は起動後、第 1CPU124を通じて第 2CPU134 に対し、 Java (登録商標)仮想マシンローダ 132をロードするよう指示する。第 2CPU 134によって起動され^ Java (登録商標)仮想マシンローダ 132は、一定の手順で Ja va (登録商標)仮想マシン 122を第 1RAM 125へ、メタ情報管理部 131を第 2RAM 135へロードする。
[0056] 図 8は、 Java (登録商標)仮想マシン 122およびメタ情報管理部 131をロードする手 順を示した図である。
図 8において、 S801で、 Java (登録商標)仮想マシンローダ 132は復号処理部 133 を使 、、第 IROM 126に記憶され^ Java (登録商標)仮想マシン 401を第 1RAM 12 5へ復号する。
[0057] 図 9は、復号処理部 133が、暗号ィ匕され^ Java (登録商標)仮想マシン 401を復号 する際の処理手順を示す図である。 図 9において、復号処理部 133は、第 1ROM126が記憶する暗号ィ匕され^ Java ( 登録商標)仮想マシン 401を、第 2CPU133を通じて読み出す (S901)。
復号処理部 133は、第 2ROM136から復号鍵 701を取得し(S902)、Java (登録 商標)仮想マシン 401の復号結果の出力先を判定する。 (S903)出力先が第 1RAM のとき、復号され^ Java (登録商標)仮想マシン 122を、第 2CPU134を通じて第 1R AM125に(S904)、また、出力先が第 2RAMのとき、第 2RAM135に記憶させる( S905)。
[0058] 図 8に戻って、 Java (登録商標)仮想マシンローダ 132は、復号処理部 133に指示 して、第 1ROM 126に記憶されたメタ情報管理部 404を、第 2RAM135へ復号する (S802)。 Java (登録商標)仮想マシンローダ 132は、 OS 123へロードの完了を通知 する。(S803)
OS 123は、 Java (登録商標)仮想マシンローダ 132からロード完了通知を受け、 Jav a (登録商標)仮想マシン 122の実行を開始する。 Java (登録商標)仮想マシン 122の 実行が開始されると、クラスローダ 202が呼び出され、クラスローダ 202は、図 4で示 す第 1ROM 126に記憶されて 、る起動クラス名 404を参照し、起動クラス名 404で指 定されたクラスをロードする。
[0059] 図 10は、起動クラス名 404として、図 5のアプリ取得プログラム 402のサブクラス 501 が指定されていたときを例に、クラスローダ 202がサブクラス 501をロードする処理手 順を示したフローチャートである。
まず、クラスローダ 202は、復号処理部 133に指示し、第 1ROM126に記憶されて いる暗号化されたサブクラス 501の復号処理を行わせる(S 1001)。次に、ベリファイ ャ 203に指示し、第 1RAM125の復号されたサブクラスをべリファイさせる(S1002) 。クラスローダ 202は、第 1RAM125の復号されたサブクラスからメタ情報 (クラス構 造情報 301、コンスタントプール 302)を抽出し (S1003)、抽出後はサブクラスからメ タ情報を削除して、当該メタ情報を第 1RAM125に書き出し、メタ情報管理部 131を 呼び出す (S1004)。メタ情報管理部 131は、第 1RAM125からメタ情報を読み取り 、第 2RAM135へコピーする。クラスローダ 202は、メタ情報管理部 131によるメタ情 報のコピーが終わると、第 1RAM125から当該メタ情報を削除する(S1005)。 [0060] 以上のようにして、クラスローダ 202は、アプリ取得プログラムだけではなぐアプリ取 得プログラム 121で取得されたアプリケーションのクラスについても同様な処理を行い 、クラスのメタ情報を、安全な第 2RAM135へのみ記憶させる。
上記のように構成することにより、アプリケーションの実行時に、クラスのメタ情報は デバッガ等では読み出すことも書き込むこともできない領域へ記憶することができる。
[0061] 次に、バイトコードインタプリタ 201、メタ情報管理部 131が、クラスを盗聴、改ざん 力も保護しながら実行する処理の例について説明する。なお、クラスの構造やバイト コードインタプリタ 201の動作は「Java (登録商標) Virtual Machine Specificat ion」で詳細に説明されているため、本実施の形態に関連の深い箇所のみを簡単に 説明する。
[0062] 図 11 ίお ava (登録商標)言語により記述されたクラスファイルの一例を示す図である クラス名 1101は、このクラスの名前であり、例ではクラスの名前は Sampleである。 フィールド 1102は Sampleクラスが定義するフィールドである。フィールド 1102は、メ ソッド実行時の計算結果の値を記憶させる領域として使うことができる。メソッド 1103 およびメソッド 1104は、 Sampleクラスで定義されている 2つのメソッドである。ここで、 メソッドとは、クラスの処理内容を定義したものである。
[0063] Java (登録商標)言語でクラスを定義したソ-スファイル 1100は、 Java (登録商標)コ ンノ《イラによりクラスファイル 300に変換される。変換されたクラスファイル 300は、クラ ス構造情報 301、コンスタントプール 302、バイトコード 303から構成される。
図 12は、クラス 1100がコンパイルされたときのクラスファイル 300のコンスタントプー ノレ 302を示す図である。
[0064] 列 1201は、コンスタントプール 302のエントリ番号を示すインデックスであり、コンス タントプール 302の参照はインデックスで表現する。列 1202はコンスタントプールの 型である。コンスタントプールは、記録する情報の種類に応じて型が決められている。 列 1203はコンスタントプールの値である。
たとえば、インデックス 1は、インデックス 3のクラスで宣言されているクラスにおいて 、インデックス 13の示すメソッドへの参照であることを意味する。インデックス 3は、 CO NSTANT— Classはクラスへの参照を表している。インデックス 3は、インデックス 15 の名前を持ったクラスへの参照であり、インデックス 15の CONSTANT— Utf 8は、ク ラス、メソッド、フィールドの名前を表している。インデックス 15の例ではクラスの名前 は" Sample"である。インデックス 13の CONSTANT— NameAndTypeは、メソッド やフィールドの名前と型記述子の参照を表す。型記述子とは、フィールドの型や、メソ ッドの引数、戻り値の型を文字列で表現したものである。インデックス 13の例では、こ のコンスタントプール 302は名前がインデックス 8、型記述子がインデックス 18である 。その値は、それぞれ "く init> "、,,()V"である。つまり、インデックス 1のメソッド参照 は、名前力 S "く init> "で型記述子が" 0V"であるメソッドへの参照になる。また、イン デッタス 2の CONSTANT— FieldRefはこのコンスタントプール 302がフィールドへ の参照であることを表している。インデックス 2は、クラス" Sample"で定義された、名 前が" field"で、型記述子が "I "のフィールドを参照して!/、る。
[0065] 図 13は、クラス 1100のクラス構造情報 301の一部である。 this— class 1301はクラ ス 1100の名前への参照である。クラスの名前はコンスタントプール 302のインデック ス 15に記録されている。 super— class 1302は、クラス 1100の親クラスである。 filed — countl303は、クラス 1100で定義されているフィールドの数を表す。フィールドは 、メソッドの処理結果などを記憶させることができる領域である。フィールド情報 1304 は、クラス 1100で定義されているフィールドの名前、アクセス権などの情報が記録さ れている。 method— countl305は、クラス 1100で定義されているメソッドの数を表 す。メソッド情報 1306は、クラス 1100で定義されているメソッドの名前、ノイトコード のアドレスなどが記録されて 、る。
[0066] 図 14は、クラス 1100で定義されているメソッド 1104のバイトコード 303である。バイ トコード 303力らは、コンスタントプール 302を使いクラス、フィールド、メソッドヘアクセ スする。たとえば、命令 1401ではインデックス 3のコンスタントプール 302を参照して いる。
バイトコードインタプリタ 201は、バイトコード 303の実行時に、コンスタントプール 30 2を参照して!/、る命令、つまり図 14で #の記号によりコンスタントプール 302のインデ ックスを指定して ヽる命令があると、メタ情報管理部 131にコンスタントプール解決処 理を依頼し、コンスタントプール解決処理により得られた情報を用いて命令の処理を する。バイトコードインタプリタ 201は、コンスタントプール 302のインデックスを指定し ていない命令は独自に実行する。ここで、コンスタントプール解決処理とは、コンスタ ントプール 302において文字列で表現されているクラス、フィールド、メソッドが第 1R AM125内のどのアドレスに記憶されているかを調べる処理のことである。
[0067] 図 15は、図 14の命令 1401を実行する処理のフローチャートである。
図 15において、バイトコードインタプリタ 201は、命令 1401をフェッチする。命令 14 02は、コンスタントプール 302のインデックス 3の位置に記憶されているクラス型のォ ブジェクトを生成する命令である。コンスタントプール 302は、第 2RAM135が記憶し ているため、バイトコードインタプリタ 201はコンスタントプール 302へアクセスできな い。そのため、バイトコードインタプリタ 201はメタ情報管理部 131へ、命令 1401の内 容を通知する。(S1501)。メタ情報管理部 131は、命令 1401を読み出し、命令 140 1が参照するインデックス 3で、第 2RAM135が記憶するコンスタントプール 302を検 索する(S1502)。本実施の形態では、クラス名" Sample"が得られる。
[0068] 次に、メタ情報管理部 131は、 "Sample"クラスのクラス構造情報 301からオブジェ タトのサイズを計算する。(S1503)。ここで、オブジェクトのサイズは、そのクラスが宣 言するフィールドの数と型記述子力も計算される。たとえば" Sample"クラスの場合 in t型のフィールドを 1つ持っため、オブジェクトサイズは 4 (バイト)になる。
[0069] 次に、メタ情報管理部 131は" Sample"クラスを表すクラス IDを生成する(S1504) 。クラス IDは、生成されたオブジェクトがどのクラス力も生成されたのかを識別するた めに用いる情報である。クラス IDはたとえば 32ビットの整数値を用いて実現できる。メ タ情報管理部 131は、クラス IDと、クラス名で代表するクラス構造情報 301との対応 関係を、第 2RAM134が記憶するクラス ID対応テーブルに記憶させる。
[0070] 図 16は、クラス ID対応テーブルの一例を示す図である。列 1610はクラス名を表し ており、列 1611はクラス IDを表している。たとえば行 1601の例では" Sample"のクラ ス名で代表するクラス構造情報 301は、クラス IDが 1と対応付けられて 、ることを表し ている。
図 15に戻って、メタ情報管理部 131は、 S 1503で計算したオブジェクトサイズと、 S 1504で生成したクラス IDを第 1RAM 125へ記憶させ、バイトコードインタプリタ 201 へ通知する(S1505)。その後、バイトコードインタプリタ 201は通知されたォブジェク トサイズ分のメモリを確保し(S 1506)、オブジェクトヘッダに通知されたクラス IDを記 録する(S1507)。ここで、オブジェクトヘッダは、オブジェクトに関する様々な情報を 記録する領域である。
[0071] 以上の処理により、バイトコードインタプリタ 201は、メタ情報を知ることなぐ命令 14 01を実行することができる。この時、悪意のある第三者がコンスタントプール 302の内 容の盗聴を試みても、コンスタントプール 302は第 2RAM135に記録されているため 盗聴することができない。また、悪意のある第三者力 Sバイトコードインタプリタ 201とメ タ情報管理部 131間の通信内容を盗聴したとしても、コンスタントプール 302のイン デッタスと、確保すべきオブジェクトサイズが得られるだけであり、コンスタントプール の内容は漏洩しない。つまり、悪意のある第三者力 コンスタントプール 302の内容 を禾必匿することができる。
[0072] なお、クラス ID対応テーブル 1600において、クラス IDとクラス構造情報 301の対応 は必ずしも 1対 1である必要はない。
図 17は、ひとつのクラス構造情報 301に対し複数のクラス IDが対応する例を示す 図である。このように構成することにより、デバッガなどのツールが第 1RAM125を盗 聴したときに、どのオブジェクトがどのクラスに対応するものか解析することが困難に なる。
[0073] 続!、て、命令 1402〜命令 1403は、コンスタントプール 302への参照を含まな!/、た め、バイトコードインタプリタ 201はメタ情報管理部 131を呼び出すことなく命令を実 行することができる。命令 1404は、コンスタントプール 302への参照を伴う命令であ る。命令 1404は、第 2RAM135が記憶するコンスタントプール 302のインデックス 2 の位置に記憶されているクラス名、メソッド名で表されるメソッドのバイトコードを呼び 出す命令である。
[0074] 図 18は、バイトコードインタプリタ 201が、命令 1404を実行する処理のフローチヤ ートである。
バイトコードインタプリタ 201は、命令 1404をフェッチし、命令 1404の内容と、レシ 一バオブジエタトのアドレスをメタ情報管理部 131へ通知する(S 1801)。
[0075] ここで、レシーバオブジェクトとは、メソッドを実行する対象のオブジェクトのことであ る。 Java (登録商標)言語では、メソッドの処理はレシーバオブジェクトが記憶するフィ 一ルドを用いて行われる。メタ情報管理部 131は、レシーバオブジェクトのオブジェク トヘッダに記憶されているクラス IDを、第 2RAM 134が記憶するクラス ID対応テープ ル 1600から検索し、クラス IDに対応するクラス構造情報 301を検索する(S1802)。 図 16に示すように、クラス IDは「1」であるので、図 13のクラス構造情報 301が検索さ れる。
[0076] 次に、メタ情報管理部 131は、コンスタントプール 302からインデックス 4を検索し、 メソッド名 "く init> "と型記述子" 0V"を得る(S1803)。次に、メタ情報管理部 131 は、 S1802で検索したクラス構造情報 301に含まれるメソッド情報 1306から、 S180 3で検索したメソッド名と型記述子を持つメソッドを検索し、そのバイトコードアドレスを 得る(S1804)。次に、メタ情報管理部 131は、 S 1804で得たバイトコードアドレスをィ ンタプリタ 201へ通知する(S1805)。バイトコードインタプリタ 201は、メタ情報管理 部 131から通知されたバイトコードアドレスを実行する(S1806)。
[0077] 以上の動作によりバイトコードインタプリタ 201は、メタ情報を知ることなく命令 1404 を実行することができる。この時、悪意のある第三者がコンスタントプール 302の内容 の盗聴を試みても、コンスタントプール 302は第 2RAM135に記録されているため盗 聴することができない。また、悪意のある第三者力 Sバイトコードインタプリタ 201とメタ 情報管理部 131間の通信内容を盗聴したとしても、コンスタントプール 302のインデ ッタスと、次に実行すべきバイトコードアドレスが得られるだけであり、コンスタントプー ルの内容は漏洩しない。つまり、悪意のある第三者力 コンスタントプール 302の内 容を秘匿することができる。
[0078] 続!、て、命令 1405〜命令 1406は、コンスタントプール 302への参照を含まな!/、た め、バイトコードインタプリタ 201はメタ情報管理部 131を呼び出すことなく命令を実 行することができる。
命令 1407は、コンスタントプール 302への参照を伴う命令である。命令 1407は、 第 2RAM135が記憶するコンスタントプール 302のインデックス 2の位置に記憶され ている、クラス名、フィールド名で表されるフィールドを読み出す命令である。コンスタ ントプール 302は、第 2RAM135が記憶しているため、バイトコードインタプリタ 201 はコンスタントプール 302へアクセスできない。図 19は、バイトコードインタプリタ 201 力 命令 1407を実行する処理のフローチャートである。
[0079] ノイトコードインタプリタは命令 1407をフェッチすると、メタ情報管理部 131を呼び 出し、命令 1407の内容と、命令 1407の実行直前の Java (登録商標)スタックの最上 位にあるオブジェクトのアドレスを通知する(S1901)。
ここで、 Java (登録商標)スタックについては「Java (登録商標) Virtual Machine Specificationjを参照された!ヽ。
[0080] メタ情報管理部 131は、通知されたオブジェクトのオブジェクトヘッダに記憶されて いるクラス IDを、第 2RAM134が記憶するクラス ID対応テーブル 1600から検索し、 クラス IDに対応するクラス構造情報 301を検索する。(S1902)本実施の形態では、 クラス IDは「1」であるので、クラス構造情報 301が検索される。
次に、メタ情報管理部 131は、コンスタントプール 302からインデックス 2を検索し、 フィールド名" field"と型記述子" I"を得る。 (S1903)次に、メタ情報管理部 131は、 S 1902で検索したクラス構造情報 301に含まれるフィールド情報 1304から、 S 1903 で検索したフィールド名と型記述子を持つフィールドを検索し、そのフィールドのアド レスを得る。 (S1904)次に、メタ情報管理部 131は、第 1RAM125へ、 S1904で得 たフィールドアドレスを記憶させ、バイトコードインタプリタ 201へそのアドレスを通知 する(S1905)。バイトコードインタプリタ 201は、メタ情報管理部 131から通知された フィールドアドレスを読み取る(S 1906)。
[0081] 以上の動作により、バイトコードインタプリタ 201は、メタ情報を知ることなく命令 140 7を実行することができる。この時、悪意のある第三者がコンスタントプール 302の内 容の盗聴を試みても、コンスタントプール 302は第 2RAM135に記録されているため 盗聴することができない。また、悪意のある第三者力 Sバイトコードインタプリタ 201とメ タ情報管理部 131間の通信内容を盗聴したとしても、コンスタントプール 302のイン デッタスと、データを読み出すためのフィールドのアドレスが得られるだけであり、コン スタントプールの内容は漏洩しない。つまり、悪意のある第三者力 コンスタントプー ル 302の内容を秘匿することができる。
[0082] 以上に説明したように、メタ情報 (クラス構造情報 301、コンスタントプール 302)は デバッガ力もアクセスすることができない第 2RAM 134のみが記憶するため、悪意の ある第三者がデバッガなどのツールを使って Java (登録商標)アプリケーションの不 正コピーを試みても、メタ情報が取得できない。また、 Java (登録商標)アプリケーショ ンの実行時に、データの盗聴、改ざんを試みても、メタ情報を読み出すことができな いため、どのメソッドやデータを盗聴、改ざんすればよいかが分力 ず、攻撃が非常 に困難になる。
[0083] なお、アプリ取得プログラム 121、 Java (登録商標)仮想マシン 122は、第 1CPU12 4で実行されるソフトウェアで実現されるとしたけれども、 LSI等のハードウェアで実現 されてもょ 、のは勿論である。
(実施の形態 2)
上記実施の形態 1では、クラスローダ 202やべリファイャ 203ίお ava (登録商標)仮 想マシン 122のサブプログラムとして通常実行部 120で動作している。このため、図 1 0に示したクラスロード処理の S1001完了後から、 S 1005までの間にデバッガ等のッ 一ルで第 1RAM 125を盗聴することで、メタ情報が漏洩する課題がある。本実施の 形態 2では、クラスローダ 202、ベリファイャ 203を安全な実行部 130で動作させるこ とによりこの課題を解決する。
[0084] 図 20は、実施の形態 2におけるアプリケーション実行装置の構成を示すブロック図 である。
本実施の形態におけるアプリケーション実行装置 2010は、実施の形態 1における アプリケーション実行装置 110と比べ、第 ljava (登録商標)仮想マシン 2022、第 2Ja va (登録商標)仮想マシン 2032、復号処理部 2034が異なる。その他の構成要素に ついては、実施の形態 1と同様であるため説明を省略する。
[0085] 図 21は、第 ljava (登録商標)仮想マシン 2022、第 2Java (登録商標)仮想マシン 2 032のサブプログラムの構成を示す図である。
クラスローダ 2106、ベリファイャ 2107は、安全な実行部 2030で実行するため第 2J ava (登録商標)仮想マシン 2032のサブプログラムとする。 また、図 22に示すように、第 1ROM2026は、第 IJava (登録商標)仮想マシン 220 1、第 2Java (登録商標)仮想マシン 2202を記憶して 、る。
[0086] 図 23は、 Java (登録商標)仮想マシンローダ 2033が、第 IJava (登録商標)仮想マ シン 2022、第 2Java (登録商標)仮想マシン 2032をロードする処理手順を示すフロ 一チャートである。
図 23の S2301で、 Java (登録商標)仮想マシンローダ 2033は、復号処理部 2034 へ、第 IJava (登録商標)仮想マシン 2201を復号し、結果を第 1RAM2036へ出力 するよう指示する。
[0087] そして、 Java (登録商標)仮想マシンローダ 2033は、復号処理部 2034に対し、第 2 Java (登録商標)仮想マシン 2202を復号し、結果を第 2RAM2036へ出力するよう 指示する(S2302)。最後に、 OS2023へロードの完了を通知する(S2303)。
以上で Java (登録商標)仮想マシンをロードすることができる。
[0088] クラスのロード処理は、クラスローダ 2106、ベリファイャ 2107の動作を安全な実行 部 2010で実行すること以外は、実施の形態 1と同様のため説明を省略する。また、ク ラスの実行処理も、実施の形態 1と同様であるため説明を省略する。
以上のように構成することにより、クラスのロード処理の処理中のときでも、復号され たメタ情報のデバッガなどのツールによる盗聴、改ざんを防ぐことができる。
[0089] なお、実施の形態 1および実施の形態 2で ^Java (登録商標)アプリケーションを実 行するアプリケーション実行装置を例に説明したが、本発明はメタ情報を持つ他の言 語で記述されたアプリケーションにも適用が可能である。たとえば、 ECMAで標準化 されている C #言語は、 CIL (Common Intermediate Language)と呼ばれる中 間言語 (Java (登録商標)におけるバイトコードに相当)を CLI (Common Laguage
Infrastructure)と呼ばれる仮想マシン (Java (登録商標)における Java (登録商標 )仮想マシンに相当)が実行する方式をとる。 C #言語におけるメタ情報は ECMA— 355規格の Partition IIで定義されている。
[0090] なお、実施の形態 1、実施の形態 2では、クラスファイルに含まれるすべてのメタ情 報を、第 2RAM135のみへ記憶させたが、一部のメタ情報を第 1RAM125へ記憶さ せてもよい。この場合、第 1RAM125へ記憶させた情報については、デバッガなどの ツールにより解析される恐れがある力 通常の実行部 120と安全な実行部 130とのィ ンタラクシヨンを削減できるため、より速くアプリケーションを実行できるようになる。
[0091] 一部のメタ情報だけでは完全なクラスを復元することはできないが、入手したメタ情 報力 他のメタ情報を推定することで完全なクラスを復元することができる可能性があ る。どれだけのメタ情報を隠蔽すれば十分であるかは、実行プログラムに求められる 保護要件に基づき決定すればょ 、。
産業上の利用可能性
[0092] 本発明に係るアプリケーション実行装置は、アプリケーションの実行、解析に不可 欠なメタ情報を、盗聴、改ざんが困難な安全実行部へと隠蔽することで、アプリケー シヨンを実行時の盗聴、改ざん力も保護することができ、アプリケーションのダウンロー ド配信ビジネスにぉ ヽて、コンテンツ作成者の権利を保護することができる。

Claims

請求の範囲
[1] 取得したアプリケーションをクラス単位で実行するアプリケーション実行装置であつ て、
クラスファイルに含まれるメタ情報を記憶するメタ情報記憶手段と、
クラスファイルに含まれる命令列を記憶する命令列記憶手段と、
参照すべき情報のない命令を実行し、参照すべき第 1情報があるとき要求し、通知 された第 2情報を用いて命令を実行する命令実行手段と、
前記命令実行手段の要求に応じて前記メタ情報から第 2情報を生成し、前記命令 実行手段に通知するメタ情報実行手段とを備え、
前記メタ情報記憶手段に記憶されたメタ情報は、前記メタ情報実行手段だけが読 み出すことができ、前記メタ情報実行手段は、前記命令実行手段の要求だけを受け 付けることを特徴とするアプリケーション実行装置。
[2] 前記メタ情報記憶手段は、インデックスとコンスタントプールの型とその値とを記載し たコンスタントプールと、項目とその値とを記載したクラス構造情報とを記憶し、 前記命令列記憶手段は、クラスで定義されて 、るメソッドのバイトコードを記憶し、 前記メタ情報実行手段は、前記命令実行手段がバイトコードに第 1情報であるコン スタントプールのインテックスが指定されて 、る命令を実行するとき、その命令の種類 に応じて前記コンスタントプールとクラス構造情報とを参照して第 2情報を生成するこ とを特徴とする請求項 1記載のアプリケーション実行装置。
[3] 前記命令実行手段が実行するバイトコードが新 、オブジェクトの生成であるとき、 前記メタ情報実行手段は、指定されたインデックスに対応するコンスタントプールの 型を前記コンスタントプール力 検索し、前記クラス構造情報を参照して、メモリサイ ズを生成することを特徴とする請求項 2記載のアプリケーション実行装置。
[4] 前記命令実行手段が実行するバイトコードがメソッドの呼び出しであるとき、
前記メタ情報実行手段は、指定されたインデックスに対応するコンスタントプールの 型を前記コンスタントプール力 検索し、前記クラス構造情報を参照して前記メソッド のアドレスを生成することを特徴とする請求項 2記載のアプリケーション実行装置。
[5] 前記命令実行手段が実行するバイトコードがオブジェクトのフィールド参照であると さ、
前記メタ情報実行手段は、指定されたインデックスに対応するコンスタントプールの 型を前記コンスタントプール力 検索し、前記クラス構造情報を参照して、前記フィー ルドのアドレスを生成することを特徴とする請求項 2記載のアプリケーション実行装置
[6] 前記取得されたアプリケーションは暗号ィ匕されており、
前記暗号ィ匕されたアプリケーションを復号し、復号された命令列を前記命令列記憶 手段に記憶させ、復号されたメタ情報を前記メタ情報記憶手段に記憶させる復号手 段を更に備えることを特徴とする請求項 1記載のアプリケーション実行装置。
[7] 前記復号手段は、
外部から直接アクセスできな!/、鍵記憶手段に記憶された復号鍵を用いて前記アブ リケーシヨンを復号することを特徴とする請求項 6記載のアプリケーション実行装置。
[8] 前記アプリケーションは、 Java (登録商標)アプリケーションであることを特徴とする 請求項 1記載のアプリケーション実行装置。
[9] 取得したアプリケーションをクラス単位で実行するアプリケーション実行装置のアブ リケーシヨン実行方法であって、
クラスファイルに含まれるメタ情報を記録するメタ情報記録ステップと、
クラスファイルに含まれる命令列を記録する命令列記録ステップと、
参照すべき情報のない命令を実行し、参照すべき第 1情報があるとき要求し、通知 された第 2情報を用いて命令を実行する命令実行ステップと、
前記命令実行ステップの要求に応じて前記メタ情報から第 2情報を生成し、前記命 令実行ステップに通知するメタ情報実行ステップとを有し、
前記メタ情報記録ステップに記録されたメタ情報は、前記メタ情報実行ステップだけ が読み出すことができ、前記メタ情報実行ステップは、前記命令実行ステップの要求 だけを受け付けることを特徴とするアプリケーション実行装置のアプリケーション実行 方法。
PCT/JP2005/013069 2004-07-16 2005-07-14 アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法 WO2006009081A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006529155A JPWO2006009081A1 (ja) 2004-07-16 2005-07-14 アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
US11/632,418 US20070271446A1 (en) 2004-07-16 2005-07-14 Application Execution Device and Application Execution Device Application Execution Method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-210764 2004-07-16
JP2004210764 2004-07-16

Publications (1)

Publication Number Publication Date
WO2006009081A1 true WO2006009081A1 (ja) 2006-01-26

Family

ID=35785194

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/013069 WO2006009081A1 (ja) 2004-07-16 2005-07-14 アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法

Country Status (4)

Country Link
US (1) US20070271446A1 (ja)
JP (1) JPWO2006009081A1 (ja)
CN (1) CN100465982C (ja)
WO (1) WO2006009081A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008010508A1 (fr) * 2006-07-18 2008-01-24 Panasonic Corporation dispositif de génération de commande
WO2008018310A1 (fr) * 2006-08-09 2008-02-14 Panasonic Corporation Dispositif d'exécution d'application, procédé, et programme

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8375444B2 (en) 2006-04-20 2013-02-12 Fireeye, Inc. Dynamic signature creation and enforcement
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8539582B1 (en) 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
WO2014145805A1 (en) 2013-03-15 2014-09-18 Mandiant, Llc System and method employing structured intelligence to verify and contain threats at endpoints
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9740857B2 (en) 2014-01-16 2017-08-22 Fireeye, Inc. Threat-aware microvisor
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
TWI502400B (zh) * 2014-07-30 2015-10-01 Elan Microelectronics Corp 微處理器及其資料保密方法
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10476906B1 (en) 2016-03-25 2019-11-12 Fireeye, Inc. System and method for managing formation and modification of a cluster within a malware detection system
US10826933B1 (en) 2016-03-31 2020-11-03 Fireeye, Inc. Technique for verifying exploit/malware at malware detection appliance through correlation with endpoints
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
CN111159662A (zh) * 2019-12-25 2020-05-15 郑州阿帕斯数云信息科技有限公司 一种数据的处理方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282156A (ja) * 1996-04-17 1997-10-31 Ricoh Co Ltd プログラム保護装置及びプログラム保護方法
JP2002514333A (ja) * 1997-06-09 2002-05-14 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
JP2002539523A (ja) * 1999-03-09 2002-11-19 ジェムプリュス プログラムの実行の監視方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940820A (en) * 1996-09-24 1999-08-17 Fujitsu Limited GUI apparatus for generating an object-oriented database application
JP4698182B2 (ja) * 2003-09-16 2011-06-08 株式会社リコー 電子装置、ネットワーク機器、管理方法、ソフトウェア更新方法、管理プログラム、ソフトウェア更新プログラム及び記録媒体
JP4682139B2 (ja) * 2004-06-30 2011-05-11 パナソニック株式会社 プログラム実行機器およびそのプログラム実行方法
WO2006075899A1 (en) * 2005-01-13 2006-07-20 Samsung Electronics Co., Ltd. Device and method for digital rights management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282156A (ja) * 1996-04-17 1997-10-31 Ricoh Co Ltd プログラム保護装置及びプログラム保護方法
JP2002514333A (ja) * 1997-06-09 2002-05-14 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
JP2002539523A (ja) * 1999-03-09 2002-11-19 ジェムプリュス プログラムの実行の監視方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008010508A1 (fr) * 2006-07-18 2008-01-24 Panasonic Corporation dispositif de génération de commande
US8302188B2 (en) 2006-07-18 2012-10-30 Panasonic Corporation Instruction generation apparatus for generating a computer program resistant to unauthorized analyses and tampering
JP5118036B2 (ja) * 2006-07-18 2013-01-16 パナソニック株式会社 命令生成装置、命令生成方法、プログラムおよび集積回路
WO2008018310A1 (fr) * 2006-08-09 2008-02-14 Panasonic Corporation Dispositif d'exécution d'application, procédé, et programme

Also Published As

Publication number Publication date
JPWO2006009081A1 (ja) 2008-05-01
US20070271446A1 (en) 2007-11-22
CN101014959A (zh) 2007-08-08
CN100465982C (zh) 2009-03-04

Similar Documents

Publication Publication Date Title
WO2006009081A1 (ja) アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
Wang et al. Steal This Movie: Automatically Bypassing DRM Protection in Streaming Media Services.
US7181603B2 (en) Method of secure function loading
US6052780A (en) Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US20100146304A1 (en) Execution device
WO2005098570A1 (ja) 実行装置
US20080216071A1 (en) Software Protection
US20080270806A1 (en) Execution Device
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
KR20070001893A (ko) 탬퍼-레지스턴트 트러스티드 가상 머신
JP2007226277A (ja) 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN109871704A (zh) 基于Hook的Android资源文件防护方法、设备和存储介质
CN109657488A (zh) 一种资源文件加密处理方法、智能终端及存储介质
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
KR100951866B1 (ko) 가상머신 기반의 모바일 어플리케이션 보호 시스템 및 방법
JP2008040853A (ja) アプリケーション実行方法およびアプリケーション実行装置
JP4906739B2 (ja) 権利ファイル記述の保護方法
JP4930982B2 (ja) ダウンロードシステム
KR101532763B1 (ko) 어플리케이션 불법복제 방지 시스템 및 방법
JP6698775B2 (ja) 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法
CN111562916B (zh) 共享算法的方法和装置
CN115114654A (zh) 一种保护本地数字资源的方法、介质和设备

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 KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV 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
WWE Wipo information: entry into national phase

Ref document number: 2006529155

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 200580023959.6

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 11632418

Country of ref document: US

122 Ep: pct application non-entry in european phase
WWP Wipo information: published in national office

Ref document number: 11632418

Country of ref document: US