[go: up one dir, main page]

JP2007226277A - Method and apparatus for virtual machine alteration inspection - Google Patents

Method and apparatus for virtual machine alteration inspection Download PDF

Info

Publication number
JP2007226277A
JP2007226277A JP2004109777A JP2004109777A JP2007226277A JP 2007226277 A JP2007226277 A JP 2007226277A JP 2004109777 A JP2004109777 A JP 2004109777A JP 2004109777 A JP2004109777 A JP 2004109777A JP 2007226277 A JP2007226277 A JP 2007226277A
Authority
JP
Japan
Prior art keywords
virtual machine
inspection
tampering
falsification
unit
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2004109777A
Other languages
Japanese (ja)
Inventor
Tomonori Nakamura
智典 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
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 JP2004109777A priority Critical patent/JP2007226277A/en
Priority to PCT/JP2005/006303 priority patent/WO2005096121A1/en
Publication of JP2007226277A publication Critical patent/JP2007226277A/en
Pending legal-status Critical Current

Links

Images

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44236Monitoring of piracy processes or activities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/162Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
    • H04N7/163Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing by receiver means only

Landscapes

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

Abstract

<P>PROBLEM TO BE SOLVED: To provide a virtual machine that operates safely without applications being eavesdropped or altered by guaranteeing the normal operation of the virtual machine itself. <P>SOLUTION: Alteration inspection of the virtual machine is performed at predetermined timing at a safe execution part that cannot be altered. If alteration is detected, an application execution device is forcibly shut down. <P>COPYRIGHT: (C)2007,JPO&INPIT

Description

本発明は、仮想マシン方式(特にJava(R)仮想マシン)によりプログラムを実行する機能を持つ端末装置において、インターネットやDVD等の端末外部のメディアからダウンロードしたプログラムを実行する時に、プログラムが盗聴、改竄されることを防止することに関する。   In a terminal device having a function of executing a program by a virtual machine method (particularly a Java (R) virtual machine), when executing a program downloaded from a medium outside the terminal such as the Internet or a DVD, It relates to preventing tampering.

従来のデジタルTVや携帯電話などの電子機器では、Java(R)言語で記述されたプログラムをダウンロードし、実行する機能を搭載するものが増加している。例えば携帯電話では、NTT DoCoMoがi−アプリと呼ばれるサービスを提供している。このサービスは、携帯電話端末がインターネット上にあるアプリケーション配信サーバからJava(R)プログラムをダウンロードして、端末上で実行する。また、欧州では、DVB−MHP(Digital Video Broadcasting−Multimedia Home Platform)と呼ばれる仕様が策定され、既に仕様に準拠した運用が開始されている。DVB−MHP規格に基づくデジタル放送では、放送波に多重化されたJava(R)プログラムをデジタルTVが受信し、それを実行する。   2. Description of the Related Art Conventional electronic devices such as digital TVs and mobile phones are increasingly equipped with functions for downloading and executing programs written in Java (R) language. For example, in mobile phones, NTT DoCoMo provides a service called i-appli. In this service, a mobile phone terminal downloads a Java program from an application distribution server on the Internet and executes it on the terminal. In Europe, a specification called DVB-MHP (Digital Video Broadcasting-Multimedia Home Platform) has been established, and operation based on the specification has already been started. In digital broadcasting based on the DVB-MHP standard, a digital TV receives a Java (R) program multiplexed on a broadcast wave and executes it.

このようなプログラム配信サービスにおいて、配信されるプログラムはそのプログラムの開発者の知的財産権で保護されており、これを悪意のある攻撃者が盗聴することは防がなくてはならない。また、悪意のある攻撃者により改ざんされたプログラムが、利用者やアプリ製作者の意図しない動作をすることを防がなくてはならない。これらを実現するために、従来の電子機器は以下のような機能を備えている。   In such a program distribution service, the program to be distributed is protected by the intellectual property rights of the developer of the program, and it is necessary to prevent a malicious attacker from eavesdropping. In addition, programs that have been altered by malicious attackers must be prevented from performing unintended operations by users and application creators. In order to realize these, conventional electronic devices have the following functions.

暗号化したプログラムをダウンロードし、端末内部で復号することにより、通信途中の盗聴、改ざんを防止する。   The encrypted program is downloaded and decrypted inside the terminal to prevent eavesdropping and tampering during communication.

ハッシュ関数等を使い、ダウンロード時にプログラムが改ざんの有無を検証し、改ざんされたプログラムの実行を防止する。   Using a hash function or the like, the program verifies whether or not the program has been tampered with at the time of download, thereby preventing execution of the tampered program.

従来のプログラムの改ざんを検査する方法の一例は、特許文献1に記載されている。図2に示すように、この従来のプログラムの改ざんを検査する方法は、主に安全性検証手段201と、安全な記憶手段202と、実行手段203とから構成されている。   An example of a conventional method for inspecting falsification of a program is described in Patent Document 1. As shown in FIG. 2, this conventional method for inspecting the alteration of a program mainly includes a safety verification unit 201, a safe storage unit 202, and an execution unit 203.

安全性検証手段201は、ダウンロードしたプログラムの改ざんの有無を検証し、改ざんがないと確認されたプログラムのみを、他の手段によってプログラムを書き換えできないことを保証する安全な記憶手段202へと記憶させ、実行手段203は安全な記憶装置からプログラムを読み出して実行する。これにより、実行手段203が実行するプログラムが改ざんされていないことを保証していた。
特開2001−195247号公報
The safety verification unit 201 verifies whether or not the downloaded program has been tampered with, and stores only the program that has been confirmed not to be tampered into the safe storage unit 202 that guarantees that the program cannot be rewritten by other units. The execution means 203 reads the program from a safe storage device and executes it. This ensures that the program executed by the execution unit 203 has not been tampered with.
JP 2001-195247 A

しかしながら、従来の技術においては、プログラム実行以前にそのプログラムが改ざんされていないことを保証できるが、実行中のプログラムが改ざんされないことを保証することができない。   However, in the conventional technology, it can be guaranteed that the program has not been tampered with before the program is executed, but it cannot be guaranteed that the program being executed will not be tampered with.

近年の電子機器は、多数のソフトウェアモジュールから構成されている。専門的な知識を有する者であれば、これらのソフトウェアモジュールのバグを悪用することで端末内のソフトウェアを改ざんすることも可能である。また、デバッガやICE(In−Circuit Emulator)等のツールを用いることでも同様のことは実現可能である。さらに、Java(R)仮想マシンなどの仮想マシンのように、プログラムを実行する環境自体がソフトウェアで実現されている場合には、デバッガやICEを使用する場合には、実行中の仮想マシンにブレークポイントを設定することにより、任意のタイミングで仮想マシンの動作を一時停止や、仮想マシンが使用しているメモリを盗聴、改ざんすることが可能になる。暗号化されて配信されるアプリケーションも、実行時には復号され平文となる。そのため、攻撃者が仮想マシンの処理のうち、クラスをロードする処理やメソッドを実行する処理にブレークポイントを設置すると、攻撃者は平文のアプリケーションにアクセスすることができる。   Recent electronic devices are composed of a large number of software modules. Those who have specialized knowledge can also tamper with the software in the terminal by exploiting bugs in these software modules. The same can be realized by using a tool such as a debugger or an ICE (In-Circuit Emulator). Furthermore, when the environment for executing the program itself is realized by software, such as a virtual machine such as a Java (R) virtual machine, when using a debugger or ICE, the virtual machine being executed is broken. By setting points, it becomes possible to pause the operation of the virtual machine at an arbitrary timing, and wiretap and tamper with the memory used by the virtual machine. An application that is encrypted and distributed is also decrypted into plain text during execution. Therefore, if an attacker sets a breakpoint in the process of loading a class or executing a method in the virtual machine process, the attacker can access a plain text application.

そのため、仮想マシンやダウンロードしたプログラム自体を実行時に改ざんすることで、本来の挙動とは異なる動きをさせることができる。特にプログラムに著作権管理機能や課金機能が含まれる場合には、これらの機能を無効化できてしまうという問題が発生する。今後、インターネット等を利用したプログラムの配信ビジネスが本格化するに従い、このようなプログラムの盗聴、改ざんの問題が深刻化すると予想される。   Therefore, the virtual machine and the downloaded program itself can be altered at the time of execution to make the behavior different from the original behavior. In particular, when the program includes a copyright management function and a billing function, there arises a problem that these functions can be invalidated. In the future, as the program distribution business using the Internet or the like becomes full-scale, the problem of such eavesdropping and falsification of the program is expected to become serious.

このような攻撃を防ぐ技術として耐タンパ技術が存在するが、従来の耐タンパ技術では、保護できるプログラムの大きさが非常に小さく、鍵の管理や課金処理などの特に扱いに慎重さを求められる処理にのみ適用されており、仮想マシンのような巨大なプログラム全体を保護することは不可能である。   Tamper resistant technology exists as a technology to prevent such attacks, but with conventional tamper resistant technology, the size of programs that can be protected is very small, and careful handling is required especially for key management and billing processing. It applies only to processing, and it is impossible to protect an entire huge program such as a virtual machine.

本発明は、改ざんの恐れのない安全な実行環境にある改ざん検査部が、仮想マシンが改ざんされたか否かを所定のタイミングで検査し、検査の結果仮想マシンが改ざんされていると判定された場合には、ただちにアプリケーション実行を停止することにより、仮想マシン自体が正常に動作することを保証し、アプリケーションが盗聴、改ざんされることなく安全に動作する仮想マシンを提供することを目的とする。   In the present invention, a tampering inspection unit in a safe execution environment without fear of tampering inspects whether or not a virtual machine has been tampered with at a predetermined timing, and it is determined that the virtual machine has been tampered as a result of the inspection. In this case, the purpose is to provide a virtual machine that guarantees that the virtual machine itself operates normally by immediately stopping the execution of the application, and that operates safely without eavesdropping or tampering with the application.

前記従来の課題を解決するために、本発明は、第3者による盗聴、改ざんを防止する安全な実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、前記ロードされた仮想マシンのアドレス領域を、前記安全な実行部で実行される改ざん検査部に通知するステップと、前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、前記判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は即座に前記仮想マシンの実行を停止させるステップとを含むことを特徴とする。   In order to solve the above-described conventional problems, the present invention includes a step of loading a virtual machine by a virtual machine loader executed by a secure execution unit that prevents eavesdropping and tampering by a third party, and the loaded virtual machine A step of notifying the tampering inspection unit executed by the secure execution unit, and a step of determining whether or not the tampering inspection unit has altered the address region of the virtual machine at a predetermined timing. And, as a result of the determination, when it is determined that the virtual machine has been tampered with, the tampering inspection unit immediately stops the execution of the virtual machine.

以上のように、本発明によれば、仮想マシンの実行時に発生する改ざんを検査する方法であって、第3者による盗聴、改ざんを防止する安全な実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、前記ロードされた仮想マシンのアドレス領域を、前記安全な実行部で実行される改ざん検査部に通知するステップと、前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、前記判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は即座に前記仮想マシンの実行を停止させるステップとを含むことにより、仮想マシンの実行時の改ざんを発見し、改ざん発見時には直ちに仮想マシンの動作を終了することができる。   As described above, according to the present invention, there is provided a method for inspecting tampering that occurs during execution of a virtual machine, and the virtual machine loader executed by a safe execution unit that prevents eavesdropping and tampering by a third party. A step of loading a machine, a step of notifying the tampering inspection unit executed by the secure execution unit of the address region of the loaded virtual machine, and the tampering inspection unit altering the address region of the virtual machine. Determining whether the virtual machine has been tampered with, and if the result of the determination is that the virtual machine has been tampered with, the tampering inspection unit immediately stops the execution of the virtual machine Including the step of causing the virtual machine to detect tampering during execution of the virtual machine and immediately terminate the operation of the virtual machine when tampering is detected. Kill.

また、前記仮想マシンローダが、暗号化された仮想マシンを復号するステップをさらに含むことにより、暗号化された状態で端末内に保存された仮想マシンをロードすることができる。これにより、端末内のROMを吸い出すことにより仮想マシンの改ざん可能な個所を解析されることを防ぐことができる。   Further, the virtual machine loader further includes a step of decrypting the encrypted virtual machine, whereby the virtual machine stored in the terminal in an encrypted state can be loaded. As a result, it is possible to prevent the virtual machine from being analyzed by extracting the ROM in the terminal.

また、前記仮想マシンのアドレス領域は、前記仮想マシンの開始アドレスから終了アドレスまでの領域であることにより、仮想マシンの領域内のいかなる個所に改ざんが行われても、それを検出可能になる。   Further, since the address area of the virtual machine is an area from the start address to the end address of the virtual machine, it becomes possible to detect any alteration in the virtual machine area.

また、前記仮想マシンのアドレス領域は、前記仮想マシンを構成するサブプログラムの開始アドレスから終了アドレスまでの領域であることにより、バイトコードの扱いに関連の深いサブプログラムのみを検査することができ、改ざん検査にかかる時間を短縮することができる。   Further, the address area of the virtual machine is an area from the start address to the end address of the subprogram constituting the virtual machine, so that only the subprogram deeply related to the handling of bytecode can be inspected, The time required for tampering inspection can be shortened.

また、前記仮想マシンが所定の処理を行う直前に、前記仮想マシンが前記改ざん検査部を呼び出し、改ざん検査を行うことにより、仮想マシンがバイトコードを取り扱う処理を行う際には必ず改ざん検査を行うことが可能になる。   In addition, immediately before the virtual machine performs a predetermined process, the virtual machine calls the falsification inspection unit and performs a falsification inspection, so that a falsification inspection is always performed when the virtual machine performs processing for handling bytecode. It becomes possible.

また、前記所定の処理は、クラスロード処理を含むことにより、仮想マシンがクラスロード処理を行う際には必ず改ざん検査を行うことが可能になる。   In addition, since the predetermined process includes a class load process, it is possible to always perform a falsification inspection when the virtual machine performs the class load process.

また、前記所定の処理は、メソッド呼び出し処理を含むことにより、仮想マシンがメソッド呼び出し処理を行う際には必ず改ざん検査を行うことが可能になる。   Further, since the predetermined process includes a method call process, it is possible to always perform a falsification inspection when the virtual machine performs the method call process.

また、前記所定の処理は、バイトコードベリファイ処理を含むことにより、仮想マシンがバイトコードベリファイ処理を行う際には必ず改ざん検査を行うことが可能になる。   In addition, since the predetermined process includes a byte code verify process, it is possible to always perform a falsification inspection when the virtual machine performs the byte code verify process.

また、前記所定の処理は、JITコンパイル処理を含むことにより、仮想マシンがJITコンパイル処理を行う際には必ず改ざん検査を行うことが可能になる。   In addition, since the predetermined process includes a JIT compilation process, a tampering inspection can always be performed when the virtual machine performs the JIT compilation process.

また、クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の処理を動的に変更するにより、実行中のアプリケーションに求められるセキュリティレベルに応じて、改ざん検査の強さを調節することができる。   In addition, the security attribute embedded or attached to the class file is read, and the predetermined processing is dynamically changed according to the security attribute, so that the tampering inspection is strengthened according to the security level required for the application being executed. Can be adjusted.

また、前記改ざん検査部による前記仮想マシンの改ざん検査を所定の間隔で定期的に行うことを特徴とすることにより、仮想マシンの処理内容に関わらず、定期的に仮想マシンの改ざんを検査することができる。   In addition, by performing periodic alteration inspection of the virtual machine by the alteration inspection unit at a predetermined interval, it is possible to periodically inspect the alteration of the virtual machine regardless of the processing content of the virtual machine. Can do.

クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の間隔を動的に変更することにより、実行中のアプリケーションに求められるセキュリティレベルに応じて、改ざん検査の強さを調節することができる。   By reading the security attributes embedded or attached to the class file and dynamically changing the predetermined interval according to the security attributes, the strength of the tampering inspection according to the security level required for the running application Can be adjusted.

また、前記仮想マシン上で動作するアプリケーションがアイドル状態の間は、前記改ざん検査部による前記仮想マシンの改ざん検査を一時停止することにより、アプリケーションが動作していない場合には改ざん検査を止めることができ、無駄な消費電力を抑えることができる。   In addition, while the application running on the virtual machine is in an idle state, the tampering inspection of the virtual machine by the tampering inspection unit is temporarily stopped to stop the tampering inspection when the application is not operating. This can reduce wasteful power consumption.

また、ソフトウェア実行部と、第3者による盗聴、改ざんを防止する安全なソフトウェア実行部を備え、前記安全なソフトウェア実行部内で実行される、仮想マシンを前記ソフトウェア実行部内へロードする仮想マシンロード手段と、前記仮想マシンが実行時に改ざんされていないか否かを所定のタイミングで検査し、前記検査の結果、前記仮想マシンは改ざんされていると判定された場合には、前記仮想マシンを終了させる改ざん検査部とを備えることにより、仮想マシンの実行時の改ざんを発見し、改ざん発見時には直ちに仮想マシンの動作を終了することができる。   Also, a virtual machine loading unit that includes a software execution unit and a safe software execution unit that prevents eavesdropping and falsification by a third party, and is executed in the safe software execution unit and loads a virtual machine into the software execution unit And whether or not the virtual machine has been tampered with at a predetermined timing, and if it is determined that the virtual machine has been tampered with as a result of the inspection, the virtual machine is terminated. By providing the tampering inspection unit, it is possible to detect tampering during execution of the virtual machine, and immediately terminate the operation of the virtual machine when tampering is detected.

また、前記安全な実行部は、前記仮想マシン改ざん検査装置内の耐タンパ機能で保護されたソフトウェア実行部であることにより、改ざん検査部自体の改ざんを困難にすることができる。   In addition, since the secure execution unit is a software execution unit protected by a tamper resistance function in the virtual machine tampering inspection apparatus, it is possible to make it difficult to tamper with the tampering inspection unit itself.

また、前記安全な実行部は、前記仮想マシン改ざん検査装置に内蔵されたハードウェアであることにより、改ざん検査部自体の改ざんを不可能にすることができる。   Further, since the safe execution unit is hardware built in the virtual machine alteration inspection device, the alteration inspection unit itself cannot be altered.

また、前記安全な実行部は、前記仮想マシン改ざん検査装置から着脱可能なスマートカードであることにより、改ざん検査部自体の改ざんを不可能にすることができる。   In addition, since the secure execution unit is a smart card that can be attached to and detached from the virtual machine alteration inspection device, the alteration inspection unit itself cannot be altered.

また、前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置の電源を切断することを特徴とすることにより、改ざんが発覚した際に、確実に攻撃者の攻撃を終了させることができる。   In addition, the tampering inspection unit is characterized in that when the virtual machine is determined to be tampered with, the virtual machine tampering inspection device is turned off to ensure that tampering is detected. The attacker's attack can be terminated.

前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置を再起動させることを特徴とすることにより、改ざんが発覚した際に、確実に攻撃者の攻撃を終了させることができる。   The tampering inspection unit restarts the virtual machine tampering inspection device when it is determined that the virtual machine has been tampered with. The attack can be terminated.

以下本発明の実施の形態について、図面を参照しながら説明する。   Embodiments of the present invention will be described below with reference to the drawings.

(実施の形態1)
本発明に係る仮想マシン改ざん検査装置の実施の形態を、図面を参照しながら説明する。本実施の形態では、Java(R)仮想マシンなどの仮想マシンの改ざん検査機能を備えたJava(R)アプリケーション実行装置(アプリケーション実行装置と称す)を例に説明する。
(Embodiment 1)
An embodiment of a virtual machine tampering inspection apparatus according to the present invention will be described with reference to the drawings. In the present embodiment, a Java (R) application execution apparatus (referred to as an application execution apparatus) having a virtual machine tampering inspection function such as a Java (R) virtual machine will be described as an example.

図1は、アプリケーション実行装置の構成を示すブロック図である。ダウンロード可能なプログラム100はJava(R)アプリケーション実行装置110(アプリケーション実行装置110と称す)からダウンロード可能なアプリケーションプログラムであり、具体的には、暗号化されたJava(R)アプリケーションが該当する。   FIG. 1 is a block diagram showing the configuration of the application execution apparatus. The downloadable program 100 is an application program that can be downloaded from a Java (R) application execution device 110 (referred to as an application execution device 110), and specifically, an encrypted Java (R) application.

アプリケーション実行装置110は端末装置であり、実行部120、安全な実行部130から構成される。アプリケーション実行装置は、具体的にはデジタルテレビ、セットトップボックス、DVDレコーダー、BlueRayDisc(BD)レコーダー、カーナビ端末、携帯電話、PDAなどの、Java(R)仮想マシンを搭載する電子機器全般が該当する。   The application execution device 110 is a terminal device, and includes an execution unit 120 and a safe execution unit 130. Specifically, the application execution apparatus corresponds to all electronic devices equipped with a Java (R) virtual machine such as a digital TV, a set top box, a DVD recorder, a BlueRay Disc (BD) recorder, a car navigation terminal, a mobile phone, and a PDA. .

実行部120は、通常のパーソナルコンピュータやデジタル家電機器等に搭載されているプログラム実行手段と同様のものであり、アプリ取得プログラム121、Java(R)仮想マシン122(仮想マシン122と称す)、OS123、第1CPU124、第1RAM125、第1ROM126から構成される。   The execution unit 120 is the same as a program execution unit installed in a normal personal computer, digital home appliance, or the like, and includes an application acquisition program 121, a Java (R) virtual machine 122 (referred to as a virtual machine 122), and an OS 123. The first CPU 124, the first RAM 125, and the first ROM 126.

安全な実行部130は、悪意のある第3者からの攻撃を防御しつつ安全にプログラムを実行させることができるプログラム実行手段であり、改ざん検査部131、Java(R)仮想マシンローダ132(仮想マシンローダ132と称す)、第2CPU133、第2RAM134、第2ROM135からなる。   The secure execution unit 130 is a program execution unit that can execute a program safely while preventing an attack from a malicious third party, and includes a tampering inspection unit 131, a Java (R) virtual machine loader 132 (virtual (Referred to as a machine loader 132), a second CPU 133, a second RAM 134, and a second ROM 135.

アプリ取得プログラム121は、任意の手法でアプリケーションを端末外から取得をするJava(R)プログラムである。アプリ取得プログラム121は、例えば、インターネット上にあるサーバから、TLS(Transport Layer Security)、HTTP(Hypertet Transfer Protocol)等のプロトコルに従いJava(R)アプリケーションをダウンロードするJava(R)プログラムが相当する。TLSは暗号化により通信時のデータの盗聴、改ざんを防ぐデータ転送方式である。TLSの詳細はRFC2246に記載されており、ここでは詳細な説明を省略する。HTTPは、インターネット上のデータ通信で一般的に用いられているデータ転送方式である。HTTPの詳細はRFC2616に記載されており、ここでは詳細な説明を省略する。   The application acquisition program 121 is a Java (R) program that acquires an application from outside the terminal by an arbitrary method. The application acquisition program 121 corresponds to, for example, a Java (R) program that downloads a Java (R) application from a server on the Internet according to a protocol such as TLS (Transport Layer Security) or HTTP (Hypernet Transfer Protocol). TLS is a data transfer method that prevents data tapping and tampering during communication by encryption. Details of TLS are described in RFC 2246, and detailed description thereof is omitted here. HTTP is a data transfer method generally used in data communication on the Internet. Details of HTTP are described in RFC 2616, and detailed description thereof is omitted here.

また、アプリ取得プログラム121は、デジタル放送のデータ放送として、MPEG2トランスポートストリーム内に埋め込まれたJava(R)アプリケーションを端末内に読み出すJava(R)プログラムであってもよい。MPEG2トランスポートストリームの詳細はMPEG規格書ISO/IEC138181−1に記載されており、本実施の形態では詳細は省略する。MPEG2トランスポートストリームにJava(R)プログラムを埋め込む方法は、DSMCC方式として、MPEG規格書ISO/IEC138181−6に記述されている。ここではDSMCCの詳細な説明は省略する。DSMCC方式は、MPEG2トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。   The application acquisition program 121 may be a Java (R) program that reads a Java (R) application embedded in an MPEG2 transport stream into a terminal as a digital broadcast data broadcast. Details of the MPEG2 transport stream are described in the MPEG standard document ISO / IEC13881-1, and the details are omitted in the present embodiment. A method for embedding a Java (R) program in an MPEG2 transport stream is described in the MPEG standard ISO / IEC138181-6 as a DSMCC method. Here, detailed description of DSMCC is omitted. The DSMCC method defines a method for encoding a file system composed of directories and files used in a computer in a packet of an MPEG2 transport stream.

また、アプリ取得プログラム121は、SDカード、CD−ROM、DVD、BlueRayDisc等に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。   Further, the application acquisition program 121 may be a Java (R) program that reads a Java (R) application recorded on an SD card, a CD-ROM, a DVD, a BlueRay Disc, or the like into the first RAM 125.

また、アプリ取得プログラム121は、アプリケーション実行装置110内にある第1ROM126内に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。   The application acquisition program 121 may be a Java (R) program that reads a Java (R) application recorded in the first ROM 126 in the application execution device 110 into the first RAM 125.

尚、本実施の形態ではアプリ取得プログラム121はJava(R)言語で記述されたJava(R)プログラムとしているが、同等の機能を有する、ネイティブ言語で記述されたプログラムや、ハードウェアで実現されていても同様に本発明を実施できる。   In the present embodiment, the application acquisition program 121 is a Java (R) program written in the Java (R) language, but it is realized by a program written in a native language or hardware having an equivalent function. The present invention can be similarly implemented.

仮想マシン122は、Java(R)言語で記述されたプログラムを逐次解析し実行するJava(R)バーチャルマシンである。Java(R)言語で記述されたプログラムはバイトコードと呼ばれる、ハードウエアに依存しない中間コードにコンパイルされる。Java(R)バーチャルマシンは、このバイトコードを解釈、実行するソフトウェア、またはハードウェアである。また、一部のJava(R)バーチャルマシンは、バイトコードを第1CPU124が理解可能な実行形式に翻訳するJITコンパイラと呼ばれる機能を持つものもある。また、一部のJava(R)バーチャルマシンは、一部もしくは全部のバイトコードを直接実行可能なプロセッサと、プロセッサでは直接実行できないバイトコードを実行するインタープリターから構成されることもある。Java(R)言語の詳細は、書籍「Java(R) Language Specification(ISBN 0−201−63451−1)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。仮想マシン122は、複数のサブプログラムから構成される。図3は仮想マシン122を構成するサブプログラムの一例である。図3では、バイトコードインタプリタ301、クラスローダ302、ベリファイヤ303、Java(R)ヒープ管理部304(ヒープ管理部304と称す)、Java(R)ネイティブライブラリ305(ネイティブライブラリ305と称す)、JITコンパイラ306で構成されている。   The virtual machine 122 is a Java (R) virtual machine that sequentially analyzes and executes a program written in the Java (R) language. A program written in the Java (R) language is compiled into intermediate code called bytecode, which does not depend on hardware. The Java® virtual machine is software or hardware that interprets and executes this bytecode. In addition, some Java® virtual machines have a function called a JIT compiler that translates bytecode into an execution format that the first CPU 124 can understand. Some Java® virtual machines may be composed of a processor that can directly execute some or all of the bytecodes and an interpreter that executes bytecodes that cannot be directly executed by the processor. Details of the Java (R) language are described in many books such as the book "Java (R) Language Specification (ISBN 0-201-63451-1)". The details are omitted here. The virtual machine 122 is composed of a plurality of subprograms. FIG. 3 is an example of a subprogram constituting the virtual machine 122. In FIG. 3, a bytecode interpreter 301, a class loader 302, a verifier 303, a Java (R) heap management unit 304 (referred to as a heap management unit 304), a Java (R) native library 305 (referred to as a native library 305), a JIT A compiler 306 is used.

バイトコードインタプリタ301は、クラスローダ302によりロードされたバイトコードを解釈、実行するサブプログラムで、Java(R)仮想マシンにおいて中核な処理を行うサブプログラムである。   The bytecode interpreter 301 is a subprogram that interprets and executes the bytecode loaded by the class loader 302, and is a subprogram that performs core processing in the Java (R) virtual machine.

クラスローダ302は、アプリ取得プログラム121からクラスファイルを受け取り、仮想マシン122内部へロードする処理を行う。クラスファイルは、バイトコードなどの情報を含むファイルであり、書籍「Java(R) Virtual Machine Specification(ISBN 0−201−63451―)」で定義されている。また、クラスローダ302は、クラスアンロード処理も行う。クラスアンロード処理は、実行が終了し不要になったクラスをJava(R)仮想マシン122から取り除く処理である。   The class loader 302 receives the class file from the application acquisition program 121 and loads it into the virtual machine 122. The class file is a file including information such as a byte code, and is defined in the book “Java® Virtual Machine Specification (ISBN 0-201-63451-)”. The class loader 302 also performs class unload processing. The class unloading process is a process of removing from the Java (R) virtual machine 122 a class that has been executed and is no longer needed.

ベリファイヤ303は、クラスのデータ形式の不備や、クラスに含まれるバイトコードの安全性を判定する。バイトコードの安全性の検査方法は、Java(R) Virtual Machine Specificationで定義されているため詳細な説明は省略する。クラスローダ302は、ベリファイヤ303において妥当ではないと判定されたクラスはロードをしない。   The verifier 303 determines the deficiency of the data format of the class and the safety of the bytecode included in the class. Since the bytecode security inspection method is defined by Java (R) Virtual Machine Specification, detailed description thereof is omitted. The class loader 302 does not load a class determined to be invalid by the verifier 303.

ヒープ管理部は304、Java(R)アプリケーションが使用するワーキングメモリの確保を行う。ワーキングメモリは第1RAM125内に確保される。また、ヒープ管理部304は、ガベージコレクションも行う。ガベージコレクションは、アプリケーション実行において不要になったワーキングメモリを開放し、他の用途に再利用できるようにする公知の技術であり、詳細な説明は省略する。   The heap management unit 304 secures a working memory used by the Java® application. A working memory is secured in the first RAM 125. The heap management unit 304 also performs garbage collection. Garbage collection is a well-known technique for releasing a working memory that is no longer necessary for executing an application so that it can be reused for other purposes, and will not be described in detail.

ネイティブライブラリ305は、Java(R)アプリケーションから呼び出されるライブラリで、OS123や、アプリケーション実行装置110が備える図1には記載されていないハードウェア、サブプログラム等で提供される機能をJava(R)アプリケーションへ提供する。   The native library 305 is a library that is called from a Java (R) application, and functions provided by the OS 123 and hardware, subprograms, etc. that are not shown in FIG. To provide.

JITコンパイラ306は、バイトコードを第1CPU124が理解可能な実行形式に翻訳する。   The JIT compiler 306 translates the bytecode into an execution format that can be understood by the first CPU 124.

OS123は、アプリケーション実行装置110の電源が投入されると第1CPU124が起動するサブプログラムである。OS123は、オペレーティングシステムの略であり、Linu等が一例である。OS123は、他のサブプログラムを平行して実行するカーネル及び、ライブラリで構成される公知の技術の総称であり、詳細な説明は省略する。OS123は仮想マシン122をサブプログラムとして実行する。   The OS 123 is a subprogram that is activated by the first CPU 124 when the application execution apparatus 110 is powered on. The OS 123 is an abbreviation for an operating system, and Linux or the like is an example. The OS 123 is a generic name for known techniques including a kernel and a library that execute other subprograms in parallel, and detailed description thereof is omitted. The OS 123 executes the virtual machine 122 as a subprogram.

第1CPU124は、仮想マシン122、OS123、アプリケーション取得部121が取得したプログラムを実行する。   The first CPU 124 executes a program acquired by the virtual machine 122, the OS 123, and the application acquisition unit 121.

第1RAM125は、具体的にはSRAM、DRAM等の一次記憶メモリーで構成され、第1CPU124が処理を行う際、一時的にデータを保存するために使用される。   Specifically, the first RAM 125 includes a primary storage memory such as an SRAM or a DRAM, and is used for temporarily storing data when the first CPU 124 performs processing.

第1ROM126は、具体的にはフラッシュメモリーやハードディスク等の不揮発性メモリで構成され、第1CPU124から指示されたデータやプログラムを記憶する。図4は本実施の形態における第1ROM126が記憶しているデータの一例を示したものである。図4に示す様に、第1ROM126は暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を含む。暗号化された起動クラス名403は仮想マシン122が起動した際に最初に実行するプログラムのクラス名である。本実施の形態では暗号化起動クラス名403にはアプリ取得プログラム121が指定されているものとする。尚、第1ROM126は図4に示した以外のデータを記憶していてもよい。   Specifically, the first ROM 126 is configured by a nonvolatile memory such as a flash memory or a hard disk, and stores data and programs instructed from the first CPU 124. FIG. 4 shows an example of data stored in the first ROM 126 in the present embodiment. As shown in FIG. 4, the first ROM 126 includes an encrypted virtual machine 401, an encrypted application acquisition program 402, and an encrypted startup class name 403. The encrypted activation class name 403 is a class name of a program that is executed first when the virtual machine 122 is activated. In the present embodiment, it is assumed that the application acquisition program 121 is specified for the encryption activation class name 403. The first ROM 126 may store data other than that shown in FIG.

改ざん検査部131は、仮想マシン122が改ざんされていないか検査し、検査の結果仮想マシン122が改ざんされていると判定した場合には、第1CPU124に仮想マシン122の実行を停止させるなどの処理を行う。改ざん検査部131については後に詳細に説明をする。   The falsification inspection unit 131 inspects whether the virtual machine 122 has been falsified, and if it is determined that the virtual machine 122 has been falsified as a result of the inspection, the first CPU 124 causes the execution of the virtual machine 122 to stop. I do. The falsification inspection unit 131 will be described in detail later.

仮想マシンローダ132は、アプリケーション実行装置110の電源投入後に、第1CPU125が仮想マシン122を実行可能な状態にするための処理を行う。仮想マシンローダ132については後に詳細に説明をする。   The virtual machine loader 132 performs processing for making the virtual machine 122 executable by the first CPU 125 after the application execution device 110 is powered on. The virtual machine loader 132 will be described in detail later.

第2CPU133は、改ざん検査部131、仮想マシンローダ132を実行する。   The second CPU 133 executes the falsification inspection unit 131 and the virtual machine loader 132.

第2RAM134は、具体的にはDRAMやSRAM等で構成され、第2CPU133が処理を行う際、一時的にデータを保存するために使用され、第2CPU133以外からは第2RAM134が記憶するデータを読むことも書くことも出来ないことを保証するものである。第2RAM134はCPU133に混載されていてもよい。   The second RAM 134 is specifically composed of a DRAM, SRAM, or the like, and is used to temporarily store data when the second CPU 133 performs processing, and reads data stored in the second RAM 134 from other than the second CPU 133. Guarantees that neither can nor write. The second RAM 134 may be embedded in the CPU 133.

第2ROM135は、読み出し専用の不揮発性メモリで、第2CPU133以外からは第2ROM135が記憶するデータを読みだすことが出来ないことを保証するものである。図5に第2ROM135が記憶するデータの一例を示す。第2ROM135には、第1ROM126が記憶する暗号化されたJava(R)仮想マシン401(仮想マシン401と称す)、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を復号するための復号鍵501と、ハッシュ値502を記録している。ハッシュ値502は、仮想マシン122を入力としてハッシュ関数を実行することにより求めた値である。ハッシュ関数(メッセージダイジェスト関数とも呼ばれる)とは、入力された原文から固定長の擬似乱数を生成する関数であり、公知の技術である。ハッシュ値は、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である特徴をもつ。本実施の形態では、仮想マシン、アプリ取得プログラム、起動クラス名を復号する鍵は501一つのみとしているが、それぞれに別々の鍵を用いても本発明は実施可能である。尚、第2ROM135は図5に示されていない別のデータを記憶していてもよい。   The second ROM 135 is a read-only nonvolatile memory, and guarantees that data stored in the second ROM 135 cannot be read from other than the second CPU 133. FIG. 5 shows an example of data stored in the second ROM 135. The second ROM 135 is for decrypting the encrypted Java® virtual machine 401 (referred to as the virtual machine 401), the encrypted application acquisition program 402, and the encrypted startup class name 403 stored in the first ROM 126. The decryption key 501 and the hash value 502 are recorded. The hash value 502 is a value obtained by executing a hash function with the virtual machine 122 as an input. A hash function (also called a message digest function) is a function that generates a fixed-length pseudorandom number from an input original, and is a known technique. The hash value has a feature that the original text cannot be reproduced from the hash value, and it is extremely difficult to create different data having the same hash value. In this embodiment, the virtual machine, the application acquisition program, and the activation class name are decrypted by only one key 501, but the present invention can be implemented by using different keys for each. The second ROM 135 may store other data not shown in FIG.

なお、本実施の形態では、アプリケーション実行装置110は二つのCPUを備えているが、一つのCPUが動作モードを切り替えるなどの方法で仮想的に二つのCPUのように振る舞ってもよい。   In the present embodiment, the application execution apparatus 110 includes two CPUs. However, one CPU may behave virtually like two CPUs by a method such as switching operation modes.

なお、第1RAM125、第2RAM134は一つのRAMを仮想的に二つのRAMとして扱ってもよい。   The first RAM 125 and the second RAM 134 may treat one RAM virtually as two RAMs.

なお、第1ROM126、第2ROM135は一つのROMを仮想的に二つのROMとして扱ってもよい。   The first ROM 126 and the second ROM 135 may treat one ROM virtually as two ROMs.

なお、安全な実行部130全体をハードウェアにより実現してもよい。この場合、第1CPU124と第2CPU133間のデータ通信は暗号化して行い、第3者による盗聴を防ぐ。これは両CPUを結ぶデータバス(図示されていない)にデータを送信する際に暗号化し、データを受信後に復号することで行われる。また、安全な実行部130はスマートカードやICカードのように、アプリケーション実行装置110から取り外し可能な装置であってもよい。スマートカード、ICカードはカード内部にCPUやメモリ、セキュリティ回路を含む公知の技術であり、詳細な説明を省略する。この場合、実行部120と安全な実行部130間のデータ転送は、SAC(Secure Authenticated Channel)等の技術を用いて、第3者による盗聴を防ぎながら行う。SACはICカードと外部機器の相互認証、および暗号鍵の共有を安全に行うための公知の技術である。   The entire safe execution unit 130 may be realized by hardware. In this case, data communication between the first CPU 124 and the second CPU 133 is performed in an encrypted manner to prevent eavesdropping by a third party. This is performed by encrypting data when transmitting it to a data bus (not shown) connecting 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. In this case, data transfer between the execution unit 120 and the safe execution unit 130 is performed while preventing eavesdropping by a third party using a technique such as SAC (Secure Authenticated Channel). SAC is a known technique for securely performing mutual authentication between an IC card and an external device and sharing of an encryption key.

次に、本発明の主要機能であるJava(R)仮想マシンの改ざん検査機能について説明する。   Next, a description will be given of a tampering inspection function of the Java (R) virtual machine, which is a main function of the present invention.

ユーザがアプリケーション実行装置110の電源を投入すると、第1CPU124はOS123を起動する。OS123は起動後、第1CPU124を通じて第2CPU133へ、仮想マシンローダ132を起動するよう指示する。第2CPU133によって起動された仮想マシンローダ132は、図6に示された手順で仮想マシン122を第1RAM125上にロードする。まず、ステップ601で第1ROM126が記憶する暗号化された仮想マシン401、暗号化されたアプリ取得手段402、暗号化された起動クラス名403を、第2CPU133を通じて読み出す。次にステップ602で第2ROM135から復号鍵501を取得し、ステップ603で復号処理を行う。そして、復号された仮想マシン、アプリ取得プログラムを、第2CPU133を通じて第1RAM125へ記憶させる。(ステップ604)この時、Java(R)仮想マシンを書き出したアドレスの範囲を第2RAM134内に記憶しておく。図7は、第2RAM134が記憶する、仮想マシンローダ132によって第1RAM125上へロードされた仮想マシン122のアドレスを示すものである。仮想マシン122は040000000番地から04019ffff番地の間にロードされている。   When the user turns on the power of the application execution device 110, the first CPU 124 activates the OS 123. After starting, the OS 123 instructs the second CPU 133 to start the virtual machine loader 132 through the first CPU 124. The virtual machine loader 132 activated by the second CPU 133 loads the virtual machine 122 onto the first RAM 125 according to the procedure shown in FIG. First, in step 601, the encrypted virtual machine 401, the encrypted application acquisition unit 402, and the encrypted startup class name 403 stored in the first ROM 126 are read through the second CPU 133. Next, in step 602, the decryption key 501 is obtained from the second ROM 135, and in step 603, decryption processing is performed. Then, the decrypted virtual machine and application acquisition program are stored in the first RAM 125 through the second CPU 133. (Step 604) At this time, the address range in which the Java (R) virtual machine is written is stored in the second RAM 134. FIG. 7 shows the address of the virtual machine 122 stored in the second RAM 134 and loaded onto the first RAM 125 by the virtual machine loader 132. The virtual machine 122 is loaded between addresses 040000000 and 04019ffff.

図6を参照して、ステップ605において、仮想マシンローダ132は、第2RAM134に記憶させた仮想マシン122のアドレスの範囲を指定し、改ざん検査部131を実行することにより仮想マシン122の改ざんの有無を確認する。図8に改ざん検査部131の処理内容を示す。   Referring to FIG. 6, in step 605, the virtual machine loader 132 designates the range of addresses of the virtual machine 122 stored in the second RAM 134 and executes the falsification inspection unit 131 to determine whether or not the virtual machine 122 has been falsified. Confirm. FIG. 8 shows the processing contents of the falsification inspection unit 131.

ステップ801で、仮想マシンローダ132から指定された仮想マシン122のアドレスの範囲に基づき、仮想マシン122のハッシュ値を計算する。次に、ステップ802で、第2ROM135が記憶する仮想マシン122の正しいハッシュ値502を読み出す。そして、両者を比較し(ステップ803)、比較の結果両者が一致していれば仮想マシン122は改ざんされていないと判断し、改ざん検査部131は成功裏に終了する(ステップ804)。しかし、ステップ803において、比較結果が不一致であった場合には、仮想マシン122は改ざんされていると判定し、アプリケーション実行装置110の電源を切断もしくは再起動する(ステップ805)。   In step 801, the hash value of the virtual machine 122 is calculated based on the address range of the virtual machine 122 designated from the virtual machine loader 132. Next, in step 802, the correct hash value 502 of the virtual machine 122 stored in the second ROM 135 is read. Then, the two are compared (step 803), and if the two match as a result of the comparison, it is determined that the virtual machine 122 has not been tampered with, and the tampering inspection unit 131 ends successfully (step 804). However, if the comparison result does not match in step 803, it is determined that the virtual machine 122 has been tampered with, and the application execution apparatus 110 is powered off or restarted (step 805).

図6を参照して、ステップ605において、改ざん検査部131の実行が成功裏に終了した場合には、仮想マシン122のロードを終了する。   With reference to FIG. 6, when the execution of the falsification inspection unit 131 is successfully completed in step 605, the loading of the virtual machine 122 is ended.

OS123は、仮想マシンローダ132の終了を受け、第1のRAM125が記憶する復号化された起動クラス名を指定し、仮想マシン122の実行を開始する。   The OS 123 receives the end of the virtual machine loader 132, designates the decrypted startup class name stored in the first RAM 125, and starts the execution of the virtual machine 122.

仮想マシン122は、所定の処理を行う直前に、CPU124を通して改ざん検査部131を呼び出す。改ざん検査部131の処理ステップ805にあるように、仮想マシン122に改ざんがあった場合にはアプリケーション実行装置110は電源を切断、もしくは再起動されるため、デバッガ等の悪意のあるプログラムがダウンロードされたアプリケーションを盗聴、改ざんすることを防ぐことが出来る。ここで所定の処理とは、例えばメソッドを呼び出す処理、クラスロード、ベリファイを行う処理、JITコンパイルする処理などが該当する。特に、バイトコードを第1RAM125から読み込む処理をする際に行うのが好ましい。   The virtual machine 122 calls the falsification inspection unit 131 through the CPU 124 immediately before performing a predetermined process. As in the processing step 805 of the tampering inspection unit 131, when the virtual machine 122 is tampered with, the application execution device 110 is turned off or restarted, so that a malicious program such as a debugger is downloaded. It is possible to prevent eavesdropping on and tampering with other applications. Here, the predetermined process corresponds to, for example, a method calling process, a class loading process, a verifying process, and a JIT compiling process. In particular, it is preferable to perform this when reading the byte code from the first RAM 125.

上記実施の形態の様に構成することにより、仮想マシン122が実行時に改ざんされた場合には直ちにアプリケーション実行装置110の動作が停止するため、Java(R)仮想マシン122が実行するダウンロードJava(R)アプリケーションが盗聴、改ざんされることを防ぐことができる。   With the configuration as described in the above embodiment, when the virtual machine 122 is tampered with at the time of execution, the operation of the application execution apparatus 110 is immediately stopped. Therefore, the download Java (R) executed by the Java (R) virtual machine 122 is performed. ) It is possible to prevent the application from being tapped and tampered with.

尚、本実施の形態では、仮想マシン122全体のハッシュ値を計算し、改ざんの判定をしていたが、一部のサブプログラムのハッシュ値を計算し、改ざん判定をするように構成しても本発明は実施可能である。その場合、第1ROM126は仮想マシン122のサブプログラム(例えばバイトコードインタプリタ301とクラスローダ302)のハッシュ値502を記憶させ、仮想マシンローダ132は、前記2つのサブプログラムのアドレス範囲を改ざん検査部131に通知し、改ざん検査部131は、ステップ801において、前記2つのサブプログラムのアドレス範囲についてハッシュ値を求めればよい。   In this embodiment, the hash value of the entire virtual machine 122 is calculated and tampering is determined. However, it may be configured to calculate the hash value of some subprograms and perform tampering determination. The present invention can be implemented. In that case, the first ROM 126 stores the hash value 502 of the subprograms (for example, the bytecode interpreter 301 and the class loader 302) of the virtual machine 122, and the virtual machine loader 132 changes the address range of the two subprograms to the falsification checking unit 131. In step 801, the falsification inspection unit 131 may obtain hash values for the address ranges of the two subprograms.

図9に仮想マシンローダ132が改ざん検査部131に通知するアドレス範囲の例を示す。列901がサブプログラム、列902がそのサブプログラムがロードされたアドレス範囲を表している。図9のように複数のサブプログラムを改ざん検査する場合には、改ざん検査部131はそれぞれのサブプログラムのアドレス範囲についてハッシュ値を求め、第2ROM135内に記憶されている正しいハッシュ値と比較する。図10に、複数のサブプログラムを改ざん検査する場合の第2ROM135内に記憶されている正しいハッシュ値の例を示す。列1001がサブプログラム、列1002が正しいハッシュ値を表している。改ざん検査部131は全てのサブプログラムのハッシュ値が正しい場合に、仮想マシン122は改ざんされていないと判定する。   FIG. 9 shows an example of an address range notified from the virtual machine loader 132 to the tampering inspection unit 131. Column 901 represents a subprogram, and column 902 represents an address range into which the subprogram is loaded. When tampering inspection is performed for a plurality of subprograms as shown in FIG. 9, the tampering inspection unit 131 obtains a hash value for the address range of each subprogram and compares it with a correct hash value stored in the second ROM 135. FIG. 10 shows an example of correct hash values stored in the second ROM 135 when tampering inspection is performed on a plurality of subprograms. A column 1001 represents a subprogram, and a column 1002 represents a correct hash value. The tampering inspection unit 131 determines that the virtual machine 122 has not been tampered with when the hash values of all the subprograms are correct.

これにより、ステップ801においてハッシュ値を計算する時間を短縮することができる。また、サブプログラム単位ではなく、さらに細かい粒度(例えば関数単位)で改ざん判定を行うようにしてもよい。   Thereby, the time for calculating the hash value in step 801 can be shortened. Further, tampering determination may be performed with a finer granularity (for example, a function unit) instead of a subprogram unit.

尚、本実施の形態では、暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403は暗号化された状態で第1ROM126が記憶していたが、これらは暗号化されていなくても本発明を適用することは可能である。また、これらは第1ROM126ではなく、第2ROM135に記憶されていても同様に本発明を適用することが可能である。   In this embodiment, the encrypted virtual machine 401, the encrypted application acquisition program 402, and the encrypted startup class name 403 are stored in the first ROM 126 in an encrypted state. It is possible to apply the present invention even if it is not encrypted. Further, even if these are stored in the second ROM 135 instead of the first ROM 126, the present invention can be similarly applied.

(実施の形態2)
実施の形態1では、Java(R)仮想マシン全体が所定の処理を行う際に、改ざん検査部131が改ざん検査を行っていたが、改ざん検査の方法はJava(R)仮想マシンの処理に関係なく所定の間隔で随時行ってもよい。
(Embodiment 2)
In the first embodiment, when the entire Java (R) virtual machine performs a predetermined process, the falsification inspection unit 131 performs a falsification inspection. The method of the falsification inspection relates to the processing of the Java (R) virtual machine. Alternatively, it may be performed at predetermined intervals.

図11は、本実施の形態における改ざん検査部131の処理を示したものである。ステップ1101からステップ1103、ステップ1105までは実施の形態1の図8と同様であるため詳細な説明を省略する。ステップ1104では予め決められた所定の時間改ざん検査部131の実行を中断させる。こうすることで、仮想マシン122の実行状態とは関係なく仮想マシン122の改ざんの有無を検査することができる。   FIG. 11 shows the processing of the falsification inspection unit 131 in the present embodiment. Steps 1101 to 1103 and 1105 are the same as those in FIG. 8 of the first embodiment, and thus detailed description thereof is omitted. In step 1104, execution of the falsification inspection unit 131 for a predetermined time is interrupted. By doing so, it is possible to check whether the virtual machine 122 has been tampered with regardless of the execution state of the virtual machine 122.

尚、所定の時間は仮想マシン122の実行状態に応じて選択可能にしてもよい。例えば仮想マシン122上で動作するアプリケーションがアイドル状態になっている場合には改ざん検査の間隔を大きく取るなどの処理をしてもよい。アプリケーションがアイドル状態か否かは、仮想マシン122が管理するスレッドの状態を調べることにより判定することが可能である。アプリケーションを構成するすべてのスレッドがアイドル状態である場合、そのアプリケーションはアイドル状態であることがわかる。これにより無駄な改ざん検査の回数を抑えることができ、アプリケーション実行装置110の消費電力を低減させることが可能になる。   The predetermined time may be selectable according to the execution state of the virtual machine 122. For example, when an application running on the virtual machine 122 is in an idle state, processing such as increasing the interval of tampering inspection may be performed. Whether or not the application is in an idle state can be determined by examining the state of a thread managed by the virtual machine 122. If all the threads that make up the application are idle, it can be seen that the application is idle. As a result, the number of useless alteration inspections can be suppressed, and the power consumption of the application execution apparatus 110 can be reduced.

(実施の形態3)
実施の形態1、2においては、頻繁に改ざん検査を行うことにより、より確実に仮想マシン122が実行時に改ざんされたか否かを検査できるようになる。しかし、改ざん検査を頻繁に行うに伴い改ざん検査に要する時間が増えるためJava(R)アプリケーションの実行が遅くなることが考えられる。どの程度の頻度で検査を行えば十分かは、Java(R)アプリケーションが求めるセキュリティの度合いに依存する。仮想マシン122が実行しているアプリケーションのセキュリティの度合いを知ることにより、改ざん検査の頻度を適切に調節することが可能になる。
(Embodiment 3)
In the first and second embodiments, it is possible to inspect whether or not the virtual machine 122 has been falsified at the time of execution by performing falsification inspection frequently. However, it is conceivable that the execution of the Java (R) application becomes slow because the time required for the falsification inspection increases as the falsification inspection is frequently performed. The frequency with which inspections are sufficient depends on the degree of security required by the Java (R) application. Knowing the degree of security of the application executed by the virtual machine 122 makes it possible to appropriately adjust the frequency of tampering inspection.

図12は、Java(R) Virtual Machine Specificationで定義されているクラスファイルの構成を示したものである。クラスファイルには多くの要素が格納されているが、ここでは本実施の形態に特に関係のあるメソッド情報1214のみを説明し、他の要素の詳細な説明は省略する。   FIG. 12 shows the structure of a class file defined by Java (R) Virtual Machine Specification. Although many elements are stored in the class file, only the method information 1214 particularly related to the present embodiment will be described here, and detailed description of other elements will be omitted.

図13はmethods1214の詳細な内容である。methods1214は、access_flags1301、name_inde1302、descriptor_inde1303、attributes_count1304、attributes1305を含む。access_flags1301はこのメソッドの呼び出し可能条件を保存するフラグである。呼び出し可能条件には、自クラスのからのみ呼び出し可能、全てのクラスから呼び出し可能などがある。name_inde1302には、constant_pool1205内にある、このメソッドの名前を含むエントリのインデックスである。descriptor_inde1303は、constant_pool1205内にある、このメソッドの引数や戻り値の型を含むエントリのインデックスである。attributes_count1304は、続くattributes1305のエントリ数を表す。attributes1305はこのメソッドがもつ属性を格納する。属性には例えばバイトコードを格納するコード属性などがある。   FIG. 13 shows the detailed contents of methods 1214. The methods 1214 includes access_flags 1301, name_inde 1302, descriptor_inde 1303, attributes_count 1304, and attributes 1305. access_flags 1301 is a flag for storing a callable condition of this method. Callable conditions include callable only from the own class, callable from all classes, and the like. The name_inde 1302 is an index of an entry in the constant_pool 1205 that includes the name of this method. The descriptor_inde 1303 is an index of an entry in the constant_pool 1205 that includes an argument of this method and a return value type. The attributes_count 1304 represents the number of entries of the following attributes 1305. The attributes 1305 store the attributes of this method. The attribute includes, for example, a code attribute for storing a bytecode.

図14はattributes1305の構成を示す図である。attribute_name_inde1201は、constant_pool1205内にある、この属性の名前(例:コード属性)を含むエントリのインデックスである。attribute_length1402は続くinfo1403のバイト数である。info1403は属性の値を格納する。コード属性の場合にはinfo1403にバイトコードを格納する。これらの属性に、新規の属性を追加する拡張はJava(R)言語仕様で許容されている。本実施の形態では、メソッドに求められるセキュリティの強さを表すセキュリティ属性を、新たに追加する。   FIG. 14 is a diagram showing the configuration of attributes 1305. attribute_name_inde 1201 is an index of an entry including the name of this attribute (eg, code attribute) in constant_pool 1205. Attribute_length 1402 is the number of bytes of info1403 that follows. The info 1403 stores attribute values. In the case of a code attribute, a byte code is stored in info1403. Extensions that add new attributes to these attributes are allowed in the Java® language specification. In the present embodiment, a security attribute representing the security strength required for the method is newly added.

図15にセキュリティ属性の例を示す。値1501は、constant_pool1205の19番目のエントリにセキュリティ属性の名前が含まれていることを表す。値1502は、このセキュリティ属性が4バイトの情報を持つことを表す。値1503は、このセキュリティ属性を持つメソッドのセキュリティレベルを表す。本実施の形態では、セキュリティレベルの値が大きいほど、求められるセキュリティの度合いが強いとし、セキュリティレベル0のクラスは特に保護の必要のないクラスとする。また、あるクラスがセキュリティレベルの異なる複数のメソッドを持つ場合、それらのセキュリティレベルのうち最も高いレベルを、そのクラスのセキュリティレベルと呼ぶことにする。尚、本実施の形態では、methods1214内部のattributes1305にセキュリティ属性を追加したが、クラス単位の属性として、attributes1215にセキュリティ属性を追加してもよい。この場合、クラスに含まれる全てのメソッドがattributes1215で指定されたセキュリティレベルを持つと判断する。このようにセキュリティ属性をクラスファイルに追加することで、仮想マシン122は、実行中のメソッドに求められるセキュリティの属性を認識することができる。   FIG. 15 shows examples of security attributes. A value 1501 indicates that the name of the security attribute is included in the 19th entry of constant_pool 1205. A value 1502 indicates that this security attribute has 4 bytes of information. A value 1503 represents the security level of the method having this security attribute. In this embodiment, the greater the security level value, the stronger the required security level, and the security level 0 class is a class that does not need to be protected. Further, when a class has a plurality of methods having different security levels, the highest level among the security levels is referred to as the security level of the class. In the present embodiment, a security attribute is added to the attributes 1305 in the methods 1214. However, a security attribute may be added to the attributes 1215 as an attribute for each class. In this case, it is determined that all methods included in the class have the security level specified by attributes 1215. By adding the security attribute to the class file in this way, the virtual machine 122 can recognize the security attribute required for the method being executed.

図16は、セキュリティレベルが0より大きいメソッドを処理する場合のみ仮想マシン122の改ざん検査を行う際の、バイトコードインタプリタ301が行うメソッド呼び出し処理である。ステップ1601で、これから呼び出そうとするメソッドのセキュリティレベルを調べ、その結果が0より大きな値であれば(ステップ1602)、改ざん検査部131により仮想マシン122の改ざんの有無を調べる(ステップ1603)。その後、通常のメソッド呼び出し処理(ステップ1604)を実行する。クラスロード処理やJITコンパイル処理時にセキュリティレベルの値に応じて改ざん検査をすることも同様に実現可能である。これにより、特にセキュリティを求められないクラスを実行する際には、改ざん検査処理を省略でき、Java(R)アプリケーションの実行時間の低下を抑えることができる。   FIG. 16 shows a method call process performed by the bytecode interpreter 301 when performing a tampering inspection of the virtual machine 122 only when a method with a security level greater than 0 is processed. In step 1601, the security level of the method to be called is checked. If the result is greater than 0 (step 1602), the falsification checking unit 131 checks whether the virtual machine 122 has been falsified (step 1603). . Thereafter, normal method call processing (step 1604) is executed. It is also possible to perform a falsification inspection according to a security level value during class loading processing or JIT compilation processing. Thereby, when executing a class that does not particularly require security, the tampering inspection process can be omitted, and a decrease in the execution time of the Java (R) application can be suppressed.

また、特定のセキュリティレベルのメソッドを持つクラスが仮想マシン122内にロードされている間のみ、定期的に改ざん検査を行うように構成してもよい。例えば、仮想マシン122内にロードされているクラスのうち、最も高いセキュリティレベルに応じて、図11に示すステップ1104の改ざん検査部131の中断時間を変化させることができる。   Further, it may be configured such that a tampering inspection is periodically performed only while a class having a method of a specific security level is loaded in the virtual machine 122. For example, the interruption time of the falsification inspection unit 131 in step 1104 shown in FIG. 11 can be changed according to the highest security level among the classes loaded in the virtual machine 122.

図17はセキュリティレベルと改ざん検査部131の中断時間の対応関係の一例である。図17のように、仮想マシン122内にセキュリティレベル3のクラスがロードされている間は10秒に1度改ざん検査を行うが、セキュリティレベルが高々1の場合には60秒に1度改ざん検査を行い、セキュリティレベルが0のクラスしかロードしていない場合には、改ざん検査を一切行わないなど、実行するアプリケーションによって、柔軟に改ざんの頻度を変更することができ、無駄な改ざん検査を減らすことができる。   FIG. 17 shows an example of the correspondence between the security level and the interruption time of the falsification inspection unit 131. As shown in FIG. 17, the tampering inspection is performed once every 10 seconds while the security level 3 class is loaded in the virtual machine 122. If the security level is at most 1, the tampering inspection is performed once every 60 seconds. If only classes with a security level of 0 are loaded, tampering inspection is not performed at all, and the frequency of tampering can be flexibly changed depending on the application to be executed, reducing unnecessary tampering inspection. Can do.

尚、本実施の形態では、セキュリティレベルをクラスファイルの拡張属性に埋め込んだが、これ以外の方法を用いてセキュリティレベルを定義しても本発明は実施可能である。例えば、セキュリティレベルを記録したMLファイルをJava(R)アプリケーションと同時にアプリ取得手段121が取得し、仮想マシン122へ渡すことにより、仮想マシン122はメソッドのセキュリティレベルを知ることが可能になる。図18はそのようなMLファイルの一例である。   In the present embodiment, the security level is embedded in the extended attribute of the class file. However, the present invention can be implemented even if the security level is defined using other methods. For example, when the application acquisition unit 121 acquires an ML file in which a security level is recorded at the same time as the Java® application and passes the file to the virtual machine 122, the virtual machine 122 can know the security level of the method. FIG. 18 is an example of such an ML file.

本発明に係る仮想マシン改ざん検査装置は、仮想マシンが実行時に改ざんされたか否かを、ハードウェアなどで実現された、盗聴、改ざんが困難な安全な改ざん検査部より所定のタイミングで検査することにより、仮想マシンの実行時改ざんを素早く検知し、アプリケーション実行装置の強制終了等の処置をとるため、ダウンロードされたアプリケーションを実行時の盗聴、改ざんから保護することができ、今後本格展開が予想されるアプリケーションのダウンロード配信ビジネスにおいて、コンテンツ作成者の権利を保護することができる。   The virtual machine alteration inspection device according to the present invention inspects whether or not the virtual machine has been altered at the time of execution from a safe alteration inspection unit that is realized by hardware and difficult to eavesdrop and tamper at a predetermined timing. This makes it possible to quickly detect virtual machine tampering and take actions such as forcibly terminating the application execution device, so that downloaded applications can be protected from eavesdropping and tampering during execution. It is possible to protect the rights of content creators in the application download distribution business.

本発明に係るアプリケーション実行装置の実施の形態の構成図Configuration diagram of an embodiment of an application execution apparatus according to the present invention 従来のアプリケーション実行装置の実施の形態の構成図Configuration diagram of an embodiment of a conventional application execution device 本発明に係る仮想マシンの構成の一例の構成図Configuration diagram of an example of a configuration of a virtual machine according to the present invention 本発明に係るアプリケーション実行装置が備える第1のROMに記憶されている情報の一例の構成図Configuration diagram of an example of information stored in a first ROM included in an application execution device according to the present invention 本発明に係るアプリケーション実行装置が備える第2のROMに記憶されている情報の一例の構成図The block diagram of an example of the information memorize | stored in 2nd ROM with which the application execution apparatus which concerns on this invention is provided 本発明に係るアプリケーション実行装置のロード手順を示すフローチャートThe flowchart which shows the loading procedure of the application execution apparatus which concerns on this invention 本発明に係るアプリケーション実行装置の仮想マシンのロード後のアドレスの一例を示す図The figure which shows an example of the address after loading of the virtual machine of the application execution apparatus which concerns on this invention 本発明に係るアプリケーション実行装置の、改ざん検査方法の一例を示すフローチャートThe flowchart which shows an example of the alteration inspection method of the application execution apparatus which concerns on this invention 本発明に係る仮想マシンのサブプログラムのアドレス範囲を示す図The figure which shows the address range of the subprogram of the virtual machine which concerns on this invention 本発明に係る第2ROM135に記憶される、サブプログラムごとの正しいハッシュ値の例を示す図The figure which shows the example of the correct hash value for every subprogram memorize | stored in 2nd ROM135 which concerns on this invention 本発明に係るアプリケーション実行装置の、改ざん検査方法の一例を示すフローチャートThe flowchart which shows an example of the alteration inspection method of the application execution apparatus which concerns on this invention 仮想マシン仕様で定義されたクラスファイルの内容の構成図Configuration diagram of class file contents defined in the virtual machine specifications 仮想マシン仕様で定義されたメソッド情報テーブルの内容の構成図Configuration diagram of the contents of the method information table defined in the virtual machine specifications 仮想マシン仕様で定義された属性テーブルの内容の構成図Configuration diagram of attribute table contents defined in virtual machine specifications 本発明に係るセキュリティ拡張属性の内容の構成図Configuration diagram of contents of security extended attribute according to the present invention 本発明に係るバイトコードインタプリタの処理の一部を表すフローチャートA flowchart showing a part of the processing of the bytecode interpreter according to the present invention. 本発明に係るセキュリティレベルと改ざん検査間隔の対応関係の一例を示す図The figure which shows an example of the correspondence of the security level which concerns on this invention, and a tampering inspection interval 本発明に係るセキュリティ拡張属性を定義するMLファイルの一例を示す図The figure which shows an example of the ML file which defines the security extended attribute which concerns on this invention

符号の説明Explanation of symbols

100 ダウンロード可能なプログラム
110 アプリケーション実行装置
120 実行部
121 アプリ取得プログラム
122 仮想マシン
123 OS
124 第1CPU
125 第1RAM
126 第1ROM
130 安全な実行部
131 改ざん検査部
132 仮想マシンローダ
133 第2CPU
134 第2RAM
135 第2ROM
100 Downloadable Program 110 Application Execution Device 120 Execution Unit 121 Application Acquisition Program 122 Virtual Machine 123 OS
124 1st CPU
125 1st RAM
126 1st ROM
130 Safe Execution Unit 131 Tampering Inspection Unit 132 Virtual Machine Loader 133 Second CPU
134 Second RAM
135 2nd ROM

Claims (19)

プラットフォームに依存しない中間言語で表現されたプログラムを、プラットフォームに依存した命令へ変換しながら動作する仮想マシンの改ざんを検査する方法であって、第3者による盗聴、改ざんを防止する耐タンパ実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、
ロードされた仮想マシンのアドレス領域を、前記耐タンパ実行部で実行される改ざん検査部に通知するステップと、
前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、
判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は前記仮想マシンの実行を停止させるステップとを含む、仮想マシン改ざん検査方法。
A tamper-proof execution unit for inspecting tampering of a virtual machine that operates while converting a program expressed in a platform-independent intermediate language into instructions that depend on the platform, and prevents eavesdropping and tampering by a third party Loading a virtual machine with a virtual machine loader executed in
Notifying the address region of the loaded virtual machine to the tampering inspection unit executed by the tamper resistant execution unit;
Determining at a predetermined timing whether or not the address area of the virtual machine has been tampered with by the tampering inspection unit;
As a result of the determination, when it is determined that the virtual machine has been tampered with, the tampering inspection unit includes a step of stopping execution of the virtual machine.
前記仮想マシンローダが、暗号化された仮想マシンを復号するステップをさらに含む、請求項1に記載の仮想マシン改ざん検査方法。 The virtual machine tampering inspection method according to claim 1, further comprising the step of the virtual machine loader decrypting the encrypted virtual machine. 前記仮想マシンのアドレス領域は、前記仮想マシンの開始アドレスから終了アドレスまでの領域である請求項1または請求項2に記載の仮想マシン改ざん検査方法。 The virtual machine alteration inspection method according to claim 1, wherein the address area of the virtual machine is an area from a start address to an end address of the virtual machine. 前記仮想マシンのアドレス領域は、前記仮想マシンを構成するサブプログラムの開始アドレスから終了アドレスまでの領域である請求項1または請求項2に記載の仮想マシン改ざん検査方法。 The virtual machine alteration inspection method according to claim 1 or 2, wherein the address area of the virtual machine is an area from a start address to an end address of a subprogram constituting the virtual machine. 前記仮想マシンが所定の処理を行う直前に、前記仮想マシンが前記改ざん検査部を呼び出し、改ざん検査を行う請求項1から請求項4のいずれか1項に記載の仮想マシン改ざん検査方法。 The virtual machine falsification inspection method according to any one of claims 1 to 4, wherein the virtual machine calls the falsification inspection unit and performs falsification inspection immediately before the virtual machine performs a predetermined process. 前記所定の処理は、クラスロード処理を含む請求項5に記載の仮想マシン改ざん検査方法。 The virtual machine tampering inspection method according to claim 5, wherein the predetermined process includes a class load process. 前記所定の処理は、メソッド呼び出し処理を含む請求項5に記載の仮想マシン改ざん検査方法。 The virtual machine alteration inspection method according to claim 5, wherein the predetermined process includes a method call process. 前記所定の処理は、バイトコードベリファイ処理を含む請求項5に記載の仮想マシン改ざん検査方法。 The virtual machine alteration inspection method according to claim 5, wherein the predetermined process includes a bytecode verification process. 前記所定の処理は、JITコンパイル処理を含む請求項5に記載の仮想マシン改ざん検査方法。 The virtual machine alteration inspection method according to claim 5, wherein the predetermined process includes a JIT compilation process. クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の処理をアプリケーション実行の途中に変更する請求項5から請求項9のいずれか1項に記載の仮想マシン改ざん検査方法。 The virtual machine tampering inspection according to any one of claims 5 to 9, wherein a security attribute embedded or attached to a class file is read, and the predetermined processing is changed during the execution of the application according to the security attribute. Method. 前記改ざん検査部による前記仮想マシンの改ざん検査を所定の間隔で定期的に行うことを特徴とする請求項1から請求項4のいずれか1項に記載の仮想マシン改ざん検査方法。 The virtual machine falsification inspection method according to claim 1, wherein the falsification inspection of the virtual machine by the falsification inspection unit is periodically performed at a predetermined interval. クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の間隔を動的に変更する請求項11に記載の仮想マシン改ざん検査方法。 The virtual machine tampering inspection method according to claim 11, wherein a security attribute embedded or attached to a class file is read, and the predetermined interval is dynamically changed according to the security attribute. 前記仮想マシン上で動作するアプリケーションがアイドル状態の間は、前記改ざん検査部による前記仮想マシンの改ざん検査を一時停止する請求項1から請求項12のいずれか1項に記載の仮想マシン改ざん検査方法。 The virtual machine tampering inspection method according to any one of claims 1 to 12, wherein the tampering inspection of the virtual machine by the tampering inspection unit is temporarily stopped while an application running on the virtual machine is in an idle state. . ソフトウェア実行部と、第3者による盗聴、改ざんを防止する耐タンパソフトウェア実行部を備え、前記耐タンパソフトウェア実行部内で実行される、仮想マシンを前記ソフトウェア実行部内へロードする仮想マシンロード手段と、前記仮想マシンが実行時に改ざんされていないか否かを所定のタイミングで検査し、前記検査の結果、前記仮想マシンは改ざんされていると判定された場合には、前記仮想マシンを終了させる改ざん検査部とを備えた仮想マシン改ざん検査装置。 A virtual machine loading means for loading a virtual machine into the software execution unit, the software execution unit and a tamper resistant software execution unit that prevents tapping and tampering by a third party, and executed in the tamper resistant software execution unit; It is inspected at a predetermined timing whether or not the virtual machine has been falsified at the time of execution, and if it is determined that the virtual machine has been falsified as a result of the inspection, a falsification inspection that terminates the virtual machine And a virtual machine tampering inspection device. 前記安全ソフトウェア実行部は、前記仮想マシン改ざん検査装置内の耐タンパ機能で保護されたソフトウェア実行部である請求項14に記載の仮想マシン改ざん検査装置。 The virtual machine tampering inspection apparatus according to claim 14, wherein the safety software execution unit is a software execution unit protected by a tamper resistance function in the virtual machine tampering inspection apparatus. 前記耐タンパ実行部は、前記仮想マシン改ざん検査装置に内蔵されたハードウェアである請求項14に記載の仮想マシン改ざん検査装置。 The virtual machine tampering inspection apparatus according to claim 14, wherein the tamper resistant execution unit is hardware built in the virtual machine tampering inspection apparatus. 前記耐タンパソフトウェア実行部は、前記仮想マシン改ざん検査装置から着脱可能なスマートカードである請求項14に記載の仮想マシン改ざん検査装置。 The virtual machine tampering inspection apparatus according to claim 14, wherein the tamper resistant software execution unit is a smart card that is detachable from the virtual machine tampering inspection apparatus. 前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置の電源を切断することを特徴とする請求項14から請求項17のいずれか1項に記載の仮想マシン改ざん検査装置。 The falsification inspection unit turns off the virtual machine falsification inspection device when it is determined that the virtual machine has been falsified. Virtual machine tampering inspection device. 前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置を再起動させることを特徴とする請求項14から請求項17のいずれか1項に記載の仮想マシン改ざん検査装置。 The falsification inspection unit restarts the virtual machine falsification inspection device when it is determined that the virtual machine has been falsified. Virtual machine alteration inspection device.
JP2004109777A 2004-04-02 2004-04-02 Method and apparatus for virtual machine alteration inspection Pending JP2007226277A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004109777A JP2007226277A (en) 2004-04-02 2004-04-02 Method and apparatus for virtual machine alteration inspection
PCT/JP2005/006303 WO2005096121A1 (en) 2004-04-02 2005-03-31 Execution device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004109777A JP2007226277A (en) 2004-04-02 2004-04-02 Method and apparatus for virtual machine alteration inspection

Publications (1)

Publication Number Publication Date
JP2007226277A true JP2007226277A (en) 2007-09-06

Family

ID=35063959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004109777A Pending JP2007226277A (en) 2004-04-02 2004-04-02 Method and apparatus for virtual machine alteration inspection

Country Status (2)

Country Link
JP (1) JP2007226277A (en)
WO (1) WO2005096121A1 (en)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006323675A (en) * 2005-05-19 2006-11-30 Fujitsu Ltd Information processing apparatus, information processing method, and computer program
JP2008165794A (en) * 2006-12-29 2008-07-17 Intel Corp Embedded mechanism for platform vulnerability assessment
JP2009065538A (en) * 2007-09-07 2009-03-26 Optim Corp Network connection method and network device
JP2009080772A (en) * 2007-09-27 2009-04-16 Toppan Printing Co Ltd Software starting system, software starting method and software starting program
JP2009146199A (en) * 2007-12-14 2009-07-02 Sony Corp Information processing device, disc, information processing method, and program
JP2009282751A (en) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd Program inspection system and method
JP2010009323A (en) * 2008-06-26 2010-01-14 Ntt Docomo Inc Image inspection device, os(operation system) device, and image inspection method
JP2010020621A (en) * 2008-07-11 2010-01-28 Toyota Infotechnology Center Co Ltd Program recovery system and method
JP2010044613A (en) * 2008-08-13 2010-02-25 Fujitsu Ltd Anti-virus method, computer, and program
JP2011070654A (en) * 2009-09-25 2011-04-07 Intel Corp Computer system and method with anti-malware
JP2012510650A (en) * 2008-08-28 2012-05-10 マイクロソフト コーポレーション Protecting virtual guest machines from attacks by infected hosts
JP2012089138A (en) * 2010-10-21 2012-05-10 Arm Ltd Security countermeasure for object image displayed in non-secure domain
JP2012174228A (en) * 2011-02-24 2012-09-10 Kyocera Corp Program protection device and communication apparatus
JP2012190441A (en) * 2011-01-11 2012-10-04 Safenet Inc Remote pre-boot authentication
JP2012198926A (en) * 2008-09-30 2012-10-18 Intel Corp Hardware-based anti-virus scan service
JP2013501300A (en) * 2009-08-04 2013-01-10 カーネギー メロン ユニバーシティ Method and apparatus for obtaining a reliable path that can be verified by a user in the presence of malware
JP2013196123A (en) * 2012-03-16 2013-09-30 Ntt Data Corp Package generation device, package generation method, and program
JP5392494B2 (en) * 2007-10-09 2014-01-22 日本電気株式会社 File check device, file check program, and file check method
JP2014182725A (en) * 2013-03-21 2014-09-29 Dainippon Printing Co Ltd Ic chip, verification processing method and verification processing program
WO2015001614A1 (en) 2013-07-02 2015-01-08 富士通株式会社 Machine provision method, machine provision system, and machine provision program
JP2015041349A (en) * 2013-08-23 2015-03-02 大日本印刷株式会社 Information storage medium, bytecode execution method, and program for information storage medium
JP2017538217A (en) * 2014-11-28 2017-12-21 トムソン ライセンシングThomson Licensing Method and device for providing application integrity verification
JPWO2020188731A1 (en) * 2019-03-19 2020-09-24
US10904405B2 (en) 2018-07-10 2021-01-26 Canon Kabushiki Kaisha Image processing apparatus that displays a message when alteration of an application has been detected, control method thereof, and storage medium
WO2021014539A1 (en) * 2019-07-22 2021-01-28 日本電気株式会社 Security management device, security management method, and non-transient computer-readable medium

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8474049B2 (en) 2005-06-28 2013-06-25 Panasonic Corporation Verification method, information processing device, recording medium, verification system, certification program, and verification program
JP4939851B2 (en) * 2006-06-21 2012-05-30 パナソニック株式会社 Information processing terminal, secure device, and state processing method
US8392988B2 (en) 2007-02-09 2013-03-05 Ntt Docomo, Inc. Terminal device and method for checking a software program
JP2009009372A (en) * 2007-06-28 2009-01-15 Panasonic Corp Information terminal, client server system, and program
US8539551B2 (en) * 2007-12-20 2013-09-17 Fujitsu Limited Trusted virtual machine as a client
JP4969480B2 (en) * 2008-02-21 2012-07-04 株式会社リコー Image forming apparatus, information processing method, and information processing program
JP4890490B2 (en) * 2008-03-28 2012-03-07 富士フイルム株式会社 Storage device and digital camera
JP2011150656A (en) * 2010-01-25 2011-08-04 Toyota Infotechnology Center Co Ltd Program inspection system
JP2012058991A (en) * 2010-09-08 2012-03-22 Fujitsu Toshiba Mobile Communications Ltd Information processor
ES2619957T3 (en) * 2012-11-22 2017-06-27 Huawei Technologies Co., Ltd. Procedure and management control device for virtual machines
US9390258B2 (en) * 2014-07-16 2016-07-12 General Electric Company Systems and methods for verifying the authenticity of an application during execution
WO2019155792A1 (en) * 2018-02-07 2019-08-15 ソニー株式会社 Information processing device, information processing method, and program

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3813019B2 (en) * 1998-05-11 2006-08-23 インターナショナル・ビジネス・マシーンズ・コーポレーション Program processing method, method for detecting frame related to specified method, and storage medium
CA2386984A1 (en) * 1999-10-08 2001-04-19 General Instrument Corporation Object and resource security system

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4698285B2 (en) * 2005-05-19 2011-06-08 富士通株式会社 Information processing apparatus, information processing method, and computer program
JP2006323675A (en) * 2005-05-19 2006-11-30 Fujitsu Ltd Information processing apparatus, information processing method, and computer program
JP2008165794A (en) * 2006-12-29 2008-07-17 Intel Corp Embedded mechanism for platform vulnerability assessment
JP4664339B2 (en) * 2007-09-07 2011-04-06 株式会社オプティム Network connection method and network device
JP2009065538A (en) * 2007-09-07 2009-03-26 Optim Corp Network connection method and network device
JP2009080772A (en) * 2007-09-27 2009-04-16 Toppan Printing Co Ltd Software starting system, software starting method and software starting program
JP5392494B2 (en) * 2007-10-09 2014-01-22 日本電気株式会社 File check device, file check program, and file check method
JP2009146199A (en) * 2007-12-14 2009-07-02 Sony Corp Information processing device, disc, information processing method, and program
US8270275B2 (en) 2007-12-14 2012-09-18 Sony Corporation Information processing device, disc, information processing method, and program
JP2009282751A (en) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd Program inspection system and method
JP2010009323A (en) * 2008-06-26 2010-01-14 Ntt Docomo Inc Image inspection device, os(operation system) device, and image inspection method
JP2010020621A (en) * 2008-07-11 2010-01-28 Toyota Infotechnology Center Co Ltd Program recovery system and method
JP2010044613A (en) * 2008-08-13 2010-02-25 Fujitsu Ltd Anti-virus method, computer, and program
US8954897B2 (en) 2008-08-28 2015-02-10 Microsoft Corporation Protecting a virtual guest machine from attacks by an infected host
JP2012510650A (en) * 2008-08-28 2012-05-10 マイクロソフト コーポレーション Protecting virtual guest machines from attacks by infected hosts
JP2012198926A (en) * 2008-09-30 2012-10-18 Intel Corp Hardware-based anti-virus scan service
JP2013501300A (en) * 2009-08-04 2013-01-10 カーネギー メロン ユニバーシティ Method and apparatus for obtaining a reliable path that can be verified by a user in the presence of malware
JP2011070654A (en) * 2009-09-25 2011-04-07 Intel Corp Computer system and method with anti-malware
US8635705B2 (en) 2009-09-25 2014-01-21 Intel Corporation Computer system and method with anti-malware
JP2012089138A (en) * 2010-10-21 2012-05-10 Arm Ltd Security countermeasure for object image displayed in non-secure domain
JP2012190441A (en) * 2011-01-11 2012-10-04 Safenet Inc Remote pre-boot authentication
JP2012174228A (en) * 2011-02-24 2012-09-10 Kyocera Corp Program protection device and communication apparatus
JP2013196123A (en) * 2012-03-16 2013-09-30 Ntt Data Corp Package generation device, package generation method, and program
JP2014182725A (en) * 2013-03-21 2014-09-29 Dainippon Printing Co Ltd Ic chip, verification processing method and verification processing program
WO2015001614A1 (en) 2013-07-02 2015-01-08 富士通株式会社 Machine provision method, machine provision system, and machine provision program
JP2015041349A (en) * 2013-08-23 2015-03-02 大日本印刷株式会社 Information storage medium, bytecode execution method, and program for information storage medium
JP2017538217A (en) * 2014-11-28 2017-12-21 トムソン ライセンシングThomson Licensing Method and device for providing application integrity verification
US10904405B2 (en) 2018-07-10 2021-01-26 Canon Kabushiki Kaisha Image processing apparatus that displays a message when alteration of an application has been detected, control method thereof, and storage medium
US11523025B2 (en) 2018-07-10 2022-12-06 Canon Kabushiki Kaisha Image processing apparatus that displays a message indicating that alteration of a login application has been detected, control method thereof, and storage medium
JPWO2020188731A1 (en) * 2019-03-19 2020-09-24
WO2020188731A1 (en) * 2019-03-19 2020-09-24 日本電気株式会社 Information processing device, information processing method, and recording medium
JP7207519B2 (en) 2019-03-19 2023-01-18 日本電気株式会社 Information processing device, information processing method and program
WO2021014539A1 (en) * 2019-07-22 2021-01-28 日本電気株式会社 Security management device, security management method, and non-transient computer-readable medium

Also Published As

Publication number Publication date
WO2005096121A1 (en) 2005-10-13

Similar Documents

Publication Publication Date Title
JP2007226277A (en) Method and apparatus for virtual machine alteration inspection
KR101471589B1 (en) Method for Providing Security for Common Intermediate Language Program
KR101503785B1 (en) Method And Apparatus For Protecting Dynamic Library
Wang et al. Compac: Enforce component-level access control in android
CN100465982C (en) Application execution device and application execution method of application execution device
KR101238572B1 (en) Automatic update of computer-readable components to support a trusted environment
US7930743B2 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JPWO2007011001A1 (en) Execution device
CN104239757B (en) Application program reversing-preventing method and device and operation method and terminal
AU2006235058B2 (en) System and method for foreign code detection
WO2016078130A1 (en) Dynamic loading method for preventing reverse of apk file
EP1869606A1 (en) Software protection
JPWO2006016407A1 (en) Java applet, JAR file generation method, JAR file generation program, JAR file generation apparatus
JP2007233426A (en) Application execution device
US20080270806A1 (en) Execution Device
US20100153667A1 (en) Method, computer program and electronic device
JP2006164184A (en) Program division device, program execution device, program division method and program execution method
JP2008040853A (en) Application execution method and application execution device
Titze et al. Preventing library spoofing on android
Bove Secure Services for Standard RISC-V Architectures
JP4898823B2 (en) Application information alteration monitoring device and method
KR101485468B1 (en) Apparatus and method for booting system in portable terminal
CN116108468A (en) Method, system and medium for encrypting and decrypting war and jar program package
Sawani Providing Verifiable Integrity on Mobile Platforms
WO2011114621A1 (en) Program executing device, information processing method, information processing program, recording medium, and integrated circuit