JP2007226277A - Method and apparatus for virtual machine alteration inspection - Google Patents
Method and apparatus for virtual machine alteration inspection Download PDFInfo
- 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
Links
- 238000007689 inspection Methods 0.000 title claims abstract description 122
- 230000004075 alteration Effects 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims description 95
- 230000008569 process Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 3
- 238000010079 rubber tapping Methods 0.000 claims description 2
- RMFAWIUWXUCNQL-UHFFFAOYSA-N 1-[2-[[2-hydroxy-3-(3-methoxyphenoxy)propyl]amino]ethylamino]-3-(3-methoxyphenoxy)propan-2-ol;dihydrochloride Chemical compound Cl.Cl.COC1=CC=CC(OCC(O)CNCCNCC(O)COC=2C=C(OC)C=CC=2)=C1 RMFAWIUWXUCNQL-UHFFFAOYSA-N 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 241001025261 Neoraja caerulea Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/442—Monitoring 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/44236—Monitoring of piracy processes or activities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/162—Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
- H04N7/163—Authorising 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
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
安全性検証手段201は、ダウンロードしたプログラムの改ざんの有無を検証し、改ざんがないと確認されたプログラムのみを、他の手段によってプログラムを書き換えできないことを保証する安全な記憶手段202へと記憶させ、実行手段203は安全な記憶装置からプログラムを読み出して実行する。これにより、実行手段203が実行するプログラムが改ざんされていないことを保証していた。
しかしながら、従来の技術においては、プログラム実行以前にそのプログラムが改ざんされていないことを保証できるが、実行中のプログラムが改ざんされないことを保証することができない。 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
アプリケーション実行装置110は端末装置であり、実行部120、安全な実行部130から構成される。アプリケーション実行装置は、具体的にはデジタルテレビ、セットトップボックス、DVDレコーダー、BlueRayDisc(BD)レコーダー、カーナビ端末、携帯電話、PDAなどの、Java(R)仮想マシンを搭載する電子機器全般が該当する。
The
実行部120は、通常のパーソナルコンピュータやデジタル家電機器等に搭載されているプログラム実行手段と同様のものであり、アプリ取得プログラム121、Java(R)仮想マシン122(仮想マシン122と称す)、OS123、第1CPU124、第1RAM125、第1ROM126から構成される。
The
安全な実行部130は、悪意のある第3者からの攻撃を防御しつつ安全にプログラムを実行させることができるプログラム実行手段であり、改ざん検査部131、Java(R)仮想マシンローダ132(仮想マシンローダ132と称す)、第2CPU133、第2RAM134、第2ROM135からなる。
The
アプリ取得プログラム121は、任意の手法でアプリケーションを端末外から取得をするJava(R)プログラムである。アプリ取得プログラム121は、例えば、インターネット上にあるサーバから、TLS(Transport Layer Security)、HTTP(Hypertet Transfer Protocol)等のプロトコルに従いJava(R)アプリケーションをダウンロードするJava(R)プログラムが相当する。TLSは暗号化により通信時のデータの盗聴、改ざんを防ぐデータ転送方式である。TLSの詳細はRFC2246に記載されており、ここでは詳細な説明を省略する。HTTPは、インターネット上のデータ通信で一般的に用いられているデータ転送方式である。HTTPの詳細はRFC2616に記載されており、ここでは詳細な説明を省略する。
The
また、アプリ取得プログラム121は、デジタル放送のデータ放送として、MPEG2トランスポートストリーム内に埋め込まれたJava(R)アプリケーションを端末内に読み出すJava(R)プログラムであってもよい。MPEG2トランスポートストリームの詳細はMPEG規格書ISO/IEC138181−1に記載されており、本実施の形態では詳細は省略する。MPEG2トランスポートストリームにJava(R)プログラムを埋め込む方法は、DSMCC方式として、MPEG規格書ISO/IEC138181−6に記述されている。ここではDSMCCの詳細な説明は省略する。DSMCC方式は、MPEG2トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。
The
また、アプリ取得プログラム121は、SDカード、CD−ROM、DVD、BlueRayDisc等に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。
Further, the
また、アプリ取得プログラム121は、アプリケーション実行装置110内にある第1ROM126内に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。
The
尚、本実施の形態ではアプリ取得プログラム121はJava(R)言語で記述されたJava(R)プログラムとしているが、同等の機能を有する、ネイティブ言語で記述されたプログラムや、ハードウェアで実現されていても同様に本発明を実施できる。
In the present embodiment, the
仮想マシン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
バイトコードインタプリタ301は、クラスローダ302によりロードされたバイトコードを解釈、実行するサブプログラムで、Java(R)仮想マシンにおいて中核な処理を行うサブプログラムである。
The
クラスローダ302は、アプリ取得プログラム121からクラスファイルを受け取り、仮想マシン122内部へロードする処理を行う。クラスファイルは、バイトコードなどの情報を含むファイルであり、書籍「Java(R) Virtual Machine Specification(ISBN 0−201−63451―)」で定義されている。また、クラスローダ302は、クラスアンロード処理も行う。クラスアンロード処理は、実行が終了し不要になったクラスをJava(R)仮想マシン122から取り除く処理である。
The
ベリファイヤ303は、クラスのデータ形式の不備や、クラスに含まれるバイトコードの安全性を判定する。バイトコードの安全性の検査方法は、Java(R) Virtual Machine Specificationで定義されているため詳細な説明は省略する。クラスローダ302は、ベリファイヤ303において妥当ではないと判定されたクラスはロードをしない。
The
ヒープ管理部は304、Java(R)アプリケーションが使用するワーキングメモリの確保を行う。ワーキングメモリは第1RAM125内に確保される。また、ヒープ管理部304は、ガベージコレクションも行う。ガベージコレクションは、アプリケーション実行において不要になったワーキングメモリを開放し、他の用途に再利用できるようにする公知の技術であり、詳細な説明は省略する。
The
ネイティブライブラリ305は、Java(R)アプリケーションから呼び出されるライブラリで、OS123や、アプリケーション実行装置110が備える図1には記載されていないハードウェア、サブプログラム等で提供される機能をJava(R)アプリケーションへ提供する。
The
JITコンパイラ306は、バイトコードを第1CPU124が理解可能な実行形式に翻訳する。
The
OS123は、アプリケーション実行装置110の電源が投入されると第1CPU124が起動するサブプログラムである。OS123は、オペレーティングシステムの略であり、Linu等が一例である。OS123は、他のサブプログラムを平行して実行するカーネル及び、ライブラリで構成される公知の技術の総称であり、詳細な説明は省略する。OS123は仮想マシン122をサブプログラムとして実行する。
The
第1CPU124は、仮想マシン122、OS123、アプリケーション取得部121が取得したプログラムを実行する。
The
第1RAM125は、具体的にはSRAM、DRAM等の一次記憶メモリーで構成され、第1CPU124が処理を行う際、一時的にデータを保存するために使用される。
Specifically, the
第1ROM126は、具体的にはフラッシュメモリーやハードディスク等の不揮発性メモリで構成され、第1CPU124から指示されたデータやプログラムを記憶する。図4は本実施の形態における第1ROM126が記憶しているデータの一例を示したものである。図4に示す様に、第1ROM126は暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を含む。暗号化された起動クラス名403は仮想マシン122が起動した際に最初に実行するプログラムのクラス名である。本実施の形態では暗号化起動クラス名403にはアプリ取得プログラム121が指定されているものとする。尚、第1ROM126は図4に示した以外のデータを記憶していてもよい。
Specifically, the
改ざん検査部131は、仮想マシン122が改ざんされていないか検査し、検査の結果仮想マシン122が改ざんされていると判定した場合には、第1CPU124に仮想マシン122の実行を停止させるなどの処理を行う。改ざん検査部131については後に詳細に説明をする。
The
仮想マシンローダ132は、アプリケーション実行装置110の電源投入後に、第1CPU125が仮想マシン122を実行可能な状態にするための処理を行う。仮想マシンローダ132については後に詳細に説明をする。
The
第2CPU133は、改ざん検査部131、仮想マシンローダ132を実行する。
The
第2RAM134は、具体的にはDRAMやSRAM等で構成され、第2CPU133が処理を行う際、一時的にデータを保存するために使用され、第2CPU133以外からは第2RAM134が記憶するデータを読むことも書くことも出来ないことを保証するものである。第2RAM134はCPU133に混載されていてもよい。
The
第2ROM135は、読み出し専用の不揮発性メモリで、第2CPU133以外からは第2ROM135が記憶するデータを読みだすことが出来ないことを保証するものである。図5に第2ROM135が記憶するデータの一例を示す。第2ROM135には、第1ROM126が記憶する暗号化されたJava(R)仮想マシン401(仮想マシン401と称す)、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を復号するための復号鍵501と、ハッシュ値502を記録している。ハッシュ値502は、仮想マシン122を入力としてハッシュ関数を実行することにより求めた値である。ハッシュ関数(メッセージダイジェスト関数とも呼ばれる)とは、入力された原文から固定長の擬似乱数を生成する関数であり、公知の技術である。ハッシュ値は、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である特徴をもつ。本実施の形態では、仮想マシン、アプリ取得プログラム、起動クラス名を復号する鍵は501一つのみとしているが、それぞれに別々の鍵を用いても本発明は実施可能である。尚、第2ROM135は図5に示されていない別のデータを記憶していてもよい。
The
なお、本実施の形態では、アプリケーション実行装置110は二つのCPUを備えているが、一つのCPUが動作モードを切り替えるなどの方法で仮想的に二つのCPUのように振る舞ってもよい。
In the present embodiment, the
なお、第1RAM125、第2RAM134は一つのRAMを仮想的に二つのRAMとして扱ってもよい。
The
なお、第1ROM126、第2ROM135は一つのROMを仮想的に二つのROMとして扱ってもよい。
The
なお、安全な実行部130全体をハードウェアにより実現してもよい。この場合、第1CPU124と第2CPU133間のデータ通信は暗号化して行い、第3者による盗聴を防ぐ。これは両CPUを結ぶデータバス(図示されていない)にデータを送信する際に暗号化し、データを受信後に復号することで行われる。また、安全な実行部130はスマートカードやICカードのように、アプリケーション実行装置110から取り外し可能な装置であってもよい。スマートカード、ICカードはカード内部にCPUやメモリ、セキュリティ回路を含む公知の技術であり、詳細な説明を省略する。この場合、実行部120と安全な実行部130間のデータ転送は、SAC(Secure Authenticated Channel)等の技術を用いて、第3者による盗聴を防ぎながら行う。SACはICカードと外部機器の相互認証、および暗号鍵の共有を安全に行うための公知の技術である。
The entire
次に、本発明の主要機能である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
図6を参照して、ステップ605において、仮想マシンローダ132は、第2RAM134に記憶させた仮想マシン122のアドレスの範囲を指定し、改ざん検査部131を実行することにより仮想マシン122の改ざんの有無を確認する。図8に改ざん検査部131の処理内容を示す。
Referring to FIG. 6, in
ステップ801で、仮想マシンローダ132から指定された仮想マシン122のアドレスの範囲に基づき、仮想マシン122のハッシュ値を計算する。次に、ステップ802で、第2ROM135が記憶する仮想マシン122の正しいハッシュ値502を読み出す。そして、両者を比較し(ステップ803)、比較の結果両者が一致していれば仮想マシン122は改ざんされていないと判断し、改ざん検査部131は成功裏に終了する(ステップ804)。しかし、ステップ803において、比較結果が不一致であった場合には、仮想マシン122は改ざんされていると判定し、アプリケーション実行装置110の電源を切断もしくは再起動する(ステップ805)。
In
図6を参照して、ステップ605において、改ざん検査部131の実行が成功裏に終了した場合には、仮想マシン122のロードを終了する。
With reference to FIG. 6, when the execution of the
OS123は、仮想マシンローダ132の終了を受け、第1のRAM125が記憶する復号化された起動クラス名を指定し、仮想マシン122の実行を開始する。
The
仮想マシン122は、所定の処理を行う直前に、CPU124を通して改ざん検査部131を呼び出す。改ざん検査部131の処理ステップ805にあるように、仮想マシン122に改ざんがあった場合にはアプリケーション実行装置110は電源を切断、もしくは再起動されるため、デバッガ等の悪意のあるプログラムがダウンロードされたアプリケーションを盗聴、改ざんすることを防ぐことが出来る。ここで所定の処理とは、例えばメソッドを呼び出す処理、クラスロード、ベリファイを行う処理、JITコンパイルする処理などが該当する。特に、バイトコードを第1RAM125から読み込む処理をする際に行うのが好ましい。
The
上記実施の形態の様に構成することにより、仮想マシン122が実行時に改ざんされた場合には直ちにアプリケーション実行装置110の動作が停止するため、Java(R)仮想マシン122が実行するダウンロードJava(R)アプリケーションが盗聴、改ざんされることを防ぐことができる。
With the configuration as described in the above embodiment, when the
尚、本実施の形態では、仮想マシン122全体のハッシュ値を計算し、改ざんの判定をしていたが、一部のサブプログラムのハッシュ値を計算し、改ざん判定をするように構成しても本発明は実施可能である。その場合、第1ROM126は仮想マシン122のサブプログラム(例えばバイトコードインタプリタ301とクラスローダ302)のハッシュ値502を記憶させ、仮想マシンローダ132は、前記2つのサブプログラムのアドレス範囲を改ざん検査部131に通知し、改ざん検査部131は、ステップ801において、前記2つのサブプログラムのアドレス範囲についてハッシュ値を求めればよい。
In this embodiment, the hash value of the entire
図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
これにより、ステップ801においてハッシュ値を計算する時間を短縮することができる。また、サブプログラム単位ではなく、さらに細かい粒度(例えば関数単位)で改ざん判定を行うようにしてもよい。
Thereby, the time for calculating the hash value in
尚、本実施の形態では、暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403は暗号化された状態で第1ROM126が記憶していたが、これらは暗号化されていなくても本発明を適用することは可能である。また、これらは第1ROM126ではなく、第2ROM135に記憶されていても同様に本発明を適用することが可能である。
In this embodiment, the encrypted
(実施の形態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
図11は、本実施の形態における改ざん検査部131の処理を示したものである。ステップ1101からステップ1103、ステップ1105までは実施の形態1の図8と同様であるため詳細な説明を省略する。ステップ1104では予め決められた所定の時間改ざん検査部131の実行を中断させる。こうすることで、仮想マシン122の実行状態とは関係なく仮想マシン122の改ざんの有無を検査することができる。
FIG. 11 shows the processing of the
尚、所定の時間は仮想マシン122の実行状態に応じて選択可能にしてもよい。例えば仮想マシン122上で動作するアプリケーションがアイドル状態になっている場合には改ざん検査の間隔を大きく取るなどの処理をしてもよい。アプリケーションがアイドル状態か否かは、仮想マシン122が管理するスレッドの状態を調べることにより判定することが可能である。アプリケーションを構成するすべてのスレッドがアイドル状態である場合、そのアプリケーションはアイドル状態であることがわかる。これにより無駄な改ざん検査の回数を抑えることができ、アプリケーション実行装置110の消費電力を低減させることが可能になる。
The predetermined time may be selectable according to the execution state of the
(実施の形態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
図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
図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
図14はattributes1305の構成を示す図である。attribute_name_inde1201は、constant_pool1205内にある、この属性の名前(例:コード属性)を含むエントリのインデックスである。attribute_length1402は続くinfo1403のバイト数である。info1403は属性の値を格納する。コード属性の場合にはinfo1403にバイトコードを格納する。これらの属性に、新規の属性を追加する拡張はJava(R)言語仕様で許容されている。本実施の形態では、メソッドに求められるセキュリティの強さを表すセキュリティ属性を、新たに追加する。
FIG. 14 is a diagram showing the configuration of
図15にセキュリティ属性の例を示す。値1501は、constant_pool1205の19番目のエントリにセキュリティ属性の名前が含まれていることを表す。値1502は、このセキュリティ属性が4バイトの情報を持つことを表す。値1503は、このセキュリティ属性を持つメソッドのセキュリティレベルを表す。本実施の形態では、セキュリティレベルの値が大きいほど、求められるセキュリティの度合いが強いとし、セキュリティレベル0のクラスは特に保護の必要のないクラスとする。また、あるクラスがセキュリティレベルの異なる複数のメソッドを持つ場合、それらのセキュリティレベルのうち最も高いレベルを、そのクラスのセキュリティレベルと呼ぶことにする。尚、本実施の形態では、methods1214内部のattributes1305にセキュリティ属性を追加したが、クラス単位の属性として、attributes1215にセキュリティ属性を追加してもよい。この場合、クラスに含まれる全てのメソッドがattributes1215で指定されたセキュリティレベルを持つと判断する。このようにセキュリティ属性をクラスファイルに追加することで、仮想マシン122は、実行中のメソッドに求められるセキュリティの属性を認識することができる。
FIG. 15 shows examples of security attributes. A
図16は、セキュリティレベルが0より大きいメソッドを処理する場合のみ仮想マシン122の改ざん検査を行う際の、バイトコードインタプリタ301が行うメソッド呼び出し処理である。ステップ1601で、これから呼び出そうとするメソッドのセキュリティレベルを調べ、その結果が0より大きな値であれば(ステップ1602)、改ざん検査部131により仮想マシン122の改ざんの有無を調べる(ステップ1603)。その後、通常のメソッド呼び出し処理(ステップ1604)を実行する。クラスロード処理やJITコンパイル処理時にセキュリティレベルの値に応じて改ざん検査をすることも同様に実現可能である。これにより、特にセキュリティを求められないクラスを実行する際には、改ざん検査処理を省略でき、Java(R)アプリケーションの実行時間の低下を抑えることができる。
FIG. 16 shows a method call process performed by the
また、特定のセキュリティレベルのメソッドを持つクラスが仮想マシン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
図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
尚、本実施の形態では、セキュリティレベルをクラスファイルの拡張属性に埋め込んだが、これ以外の方法を用いてセキュリティレベルを定義しても本発明は実施可能である。例えば、セキュリティレベルを記録した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
本発明に係る仮想マシン改ざん検査装置は、仮想マシンが実行時に改ざんされたか否かを、ハードウェアなどで実現された、盗聴、改ざんが困難な安全な改ざん検査部より所定のタイミングで検査することにより、仮想マシンの実行時改ざんを素早く検知し、アプリケーション実行装置の強制終了等の処置をとるため、ダウンロードされたアプリケーションを実行時の盗聴、改ざんから保護することができ、今後本格展開が予想されるアプリケーションのダウンロード配信ビジネスにおいて、コンテンツ作成者の権利を保護することができる。 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.
100 ダウンロード可能なプログラム
110 アプリケーション実行装置
120 実行部
121 アプリ取得プログラム
122 仮想マシン
123 OS
124 第1CPU
125 第1RAM
126 第1ROM
130 安全な実行部
131 改ざん検査部
132 仮想マシンローダ
133 第2CPU
134 第2RAM
135 第2ROM
100
124 1st CPU
125 1st RAM
126 1st ROM
130
134 Second RAM
135 2nd ROM
Claims (19)
ロードされた仮想マシンのアドレス領域を、前記耐タンパ実行部で実行される改ざん検査部に通知するステップと、
前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、
判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は前記仮想マシンの実行を停止させるステップとを含む、仮想マシン改ざん検査方法。 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.
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)
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)
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)
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 |
-
2004
- 2004-04-02 JP JP2004109777A patent/JP2007226277A/en active Pending
-
2005
- 2005-03-31 WO PCT/JP2005/006303 patent/WO2005096121A1/en active Application Filing
Cited By (33)
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 |