JP2007226277A - 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置 - Google Patents

仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置 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
English (en)
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/ja
Priority to PCT/JP2005/006303 priority patent/WO2005096121A1/ja
Publication of JP2007226277A publication Critical patent/JP2007226277A/ja
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

【課題】従来のアプリケーション保護技術では、ダウンロード前後のアプリケーションのハッシュ値を比較することで、ダウンロード時にアプリケーションが改ざんされていないことを保証していた。しかしこの方法では実行時の改ざんに対抗できないため、実行中の仮想マシンが改ざんされた場合にはアプリケーションを保護することができない。
【解決手段】改ざんのできない安全な実行部で仮想マシンの改ざん検査を所定のタイミングで行い、改ざんが検出された場合にはアプリケーション実行装置を強制終了させる。
【選択図】図1

Description

本発明は、仮想マシン方式(特にJava(R)仮想マシン)によりプログラムを実行する機能を持つ端末装置において、インターネットやDVD等の端末外部のメディアからダウンロードしたプログラムを実行する時に、プログラムが盗聴、改竄されることを防止することに関する。
従来のデジタルTVや携帯電話などの電子機器では、Java(R)言語で記述されたプログラムをダウンロードし、実行する機能を搭載するものが増加している。例えば携帯電話では、NTT DoCoMoがi−アプリと呼ばれるサービスを提供している。このサービスは、携帯電話端末がインターネット上にあるアプリケーション配信サーバからJava(R)プログラムをダウンロードして、端末上で実行する。また、欧州では、DVB−MHP(Digital Video Broadcasting−Multimedia Home Platform)と呼ばれる仕様が策定され、既に仕様に準拠した運用が開始されている。DVB−MHP規格に基づくデジタル放送では、放送波に多重化されたJava(R)プログラムをデジタルTVが受信し、それを実行する。
このようなプログラム配信サービスにおいて、配信されるプログラムはそのプログラムの開発者の知的財産権で保護されており、これを悪意のある攻撃者が盗聴することは防がなくてはならない。また、悪意のある攻撃者により改ざんされたプログラムが、利用者やアプリ製作者の意図しない動作をすることを防がなくてはならない。これらを実現するために、従来の電子機器は以下のような機能を備えている。
暗号化したプログラムをダウンロードし、端末内部で復号することにより、通信途中の盗聴、改ざんを防止する。
ハッシュ関数等を使い、ダウンロード時にプログラムが改ざんの有無を検証し、改ざんされたプログラムの実行を防止する。
従来のプログラムの改ざんを検査する方法の一例は、特許文献1に記載されている。図2に示すように、この従来のプログラムの改ざんを検査する方法は、主に安全性検証手段201と、安全な記憶手段202と、実行手段203とから構成されている。
安全性検証手段201は、ダウンロードしたプログラムの改ざんの有無を検証し、改ざんがないと確認されたプログラムのみを、他の手段によってプログラムを書き換えできないことを保証する安全な記憶手段202へと記憶させ、実行手段203は安全な記憶装置からプログラムを読み出して実行する。これにより、実行手段203が実行するプログラムが改ざんされていないことを保証していた。
特開2001−195247号公報
しかしながら、従来の技術においては、プログラム実行以前にそのプログラムが改ざんされていないことを保証できるが、実行中のプログラムが改ざんされないことを保証することができない。
近年の電子機器は、多数のソフトウェアモジュールから構成されている。専門的な知識を有する者であれば、これらのソフトウェアモジュールのバグを悪用することで端末内のソフトウェアを改ざんすることも可能である。また、デバッガやICE(In−Circuit Emulator)等のツールを用いることでも同様のことは実現可能である。さらに、Java(R)仮想マシンなどの仮想マシンのように、プログラムを実行する環境自体がソフトウェアで実現されている場合には、デバッガやICEを使用する場合には、実行中の仮想マシンにブレークポイントを設定することにより、任意のタイミングで仮想マシンの動作を一時停止や、仮想マシンが使用しているメモリを盗聴、改ざんすることが可能になる。暗号化されて配信されるアプリケーションも、実行時には復号され平文となる。そのため、攻撃者が仮想マシンの処理のうち、クラスをロードする処理やメソッドを実行する処理にブレークポイントを設置すると、攻撃者は平文のアプリケーションにアクセスすることができる。
そのため、仮想マシンやダウンロードしたプログラム自体を実行時に改ざんすることで、本来の挙動とは異なる動きをさせることができる。特にプログラムに著作権管理機能や課金機能が含まれる場合には、これらの機能を無効化できてしまうという問題が発生する。今後、インターネット等を利用したプログラムの配信ビジネスが本格化するに従い、このようなプログラムの盗聴、改ざんの問題が深刻化すると予想される。
このような攻撃を防ぐ技術として耐タンパ技術が存在するが、従来の耐タンパ技術では、保護できるプログラムの大きさが非常に小さく、鍵の管理や課金処理などの特に扱いに慎重さを求められる処理にのみ適用されており、仮想マシンのような巨大なプログラム全体を保護することは不可能である。
本発明は、改ざんの恐れのない安全な実行環境にある改ざん検査部が、仮想マシンが改ざんされたか否かを所定のタイミングで検査し、検査の結果仮想マシンが改ざんされていると判定された場合には、ただちにアプリケーション実行を停止することにより、仮想マシン自体が正常に動作することを保証し、アプリケーションが盗聴、改ざんされることなく安全に動作する仮想マシンを提供することを目的とする。
前記従来の課題を解決するために、本発明は、第3者による盗聴、改ざんを防止する安全な実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、前記ロードされた仮想マシンのアドレス領域を、前記安全な実行部で実行される改ざん検査部に通知するステップと、前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、前記判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は即座に前記仮想マシンの実行を停止させるステップとを含むことを特徴とする。
以上のように、本発明によれば、仮想マシンの実行時に発生する改ざんを検査する方法であって、第3者による盗聴、改ざんを防止する安全な実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、前記ロードされた仮想マシンのアドレス領域を、前記安全な実行部で実行される改ざん検査部に通知するステップと、前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、前記判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は即座に前記仮想マシンの実行を停止させるステップとを含むことにより、仮想マシンの実行時の改ざんを発見し、改ざん発見時には直ちに仮想マシンの動作を終了することができる。
また、前記仮想マシンローダが、暗号化された仮想マシンを復号するステップをさらに含むことにより、暗号化された状態で端末内に保存された仮想マシンをロードすることができる。これにより、端末内のROMを吸い出すことにより仮想マシンの改ざん可能な個所を解析されることを防ぐことができる。
また、前記仮想マシンのアドレス領域は、前記仮想マシンの開始アドレスから終了アドレスまでの領域であることにより、仮想マシンの領域内のいかなる個所に改ざんが行われても、それを検出可能になる。
また、前記仮想マシンのアドレス領域は、前記仮想マシンを構成するサブプログラムの開始アドレスから終了アドレスまでの領域であることにより、バイトコードの扱いに関連の深いサブプログラムのみを検査することができ、改ざん検査にかかる時間を短縮することができる。
また、前記仮想マシンが所定の処理を行う直前に、前記仮想マシンが前記改ざん検査部を呼び出し、改ざん検査を行うことにより、仮想マシンがバイトコードを取り扱う処理を行う際には必ず改ざん検査を行うことが可能になる。
また、前記所定の処理は、クラスロード処理を含むことにより、仮想マシンがクラスロード処理を行う際には必ず改ざん検査を行うことが可能になる。
また、前記所定の処理は、メソッド呼び出し処理を含むことにより、仮想マシンがメソッド呼び出し処理を行う際には必ず改ざん検査を行うことが可能になる。
また、前記所定の処理は、バイトコードベリファイ処理を含むことにより、仮想マシンがバイトコードベリファイ処理を行う際には必ず改ざん検査を行うことが可能になる。
また、前記所定の処理は、JITコンパイル処理を含むことにより、仮想マシンがJITコンパイル処理を行う際には必ず改ざん検査を行うことが可能になる。
また、クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の処理を動的に変更するにより、実行中のアプリケーションに求められるセキュリティレベルに応じて、改ざん検査の強さを調節することができる。
また、前記改ざん検査部による前記仮想マシンの改ざん検査を所定の間隔で定期的に行うことを特徴とすることにより、仮想マシンの処理内容に関わらず、定期的に仮想マシンの改ざんを検査することができる。
クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の間隔を動的に変更することにより、実行中のアプリケーションに求められるセキュリティレベルに応じて、改ざん検査の強さを調節することができる。
また、前記仮想マシン上で動作するアプリケーションがアイドル状態の間は、前記改ざん検査部による前記仮想マシンの改ざん検査を一時停止することにより、アプリケーションが動作していない場合には改ざん検査を止めることができ、無駄な消費電力を抑えることができる。
また、ソフトウェア実行部と、第3者による盗聴、改ざんを防止する安全なソフトウェア実行部を備え、前記安全なソフトウェア実行部内で実行される、仮想マシンを前記ソフトウェア実行部内へロードする仮想マシンロード手段と、前記仮想マシンが実行時に改ざんされていないか否かを所定のタイミングで検査し、前記検査の結果、前記仮想マシンは改ざんされていると判定された場合には、前記仮想マシンを終了させる改ざん検査部とを備えることにより、仮想マシンの実行時の改ざんを発見し、改ざん発見時には直ちに仮想マシンの動作を終了することができる。
また、前記安全な実行部は、前記仮想マシン改ざん検査装置内の耐タンパ機能で保護されたソフトウェア実行部であることにより、改ざん検査部自体の改ざんを困難にすることができる。
また、前記安全な実行部は、前記仮想マシン改ざん検査装置に内蔵されたハードウェアであることにより、改ざん検査部自体の改ざんを不可能にすることができる。
また、前記安全な実行部は、前記仮想マシン改ざん検査装置から着脱可能なスマートカードであることにより、改ざん検査部自体の改ざんを不可能にすることができる。
また、前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置の電源を切断することを特徴とすることにより、改ざんが発覚した際に、確実に攻撃者の攻撃を終了させることができる。
前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置を再起動させることを特徴とすることにより、改ざんが発覚した際に、確実に攻撃者の攻撃を終了させることができる。
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本発明に係る仮想マシン改ざん検査装置の実施の形態を、図面を参照しながら説明する。本実施の形態では、Java(R)仮想マシンなどの仮想マシンの改ざん検査機能を備えたJava(R)アプリケーション実行装置(アプリケーション実行装置と称す)を例に説明する。
図1は、アプリケーション実行装置の構成を示すブロック図である。ダウンロード可能なプログラム100はJava(R)アプリケーション実行装置110(アプリケーション実行装置110と称す)からダウンロード可能なアプリケーションプログラムであり、具体的には、暗号化されたJava(R)アプリケーションが該当する。
アプリケーション実行装置110は端末装置であり、実行部120、安全な実行部130から構成される。アプリケーション実行装置は、具体的にはデジタルテレビ、セットトップボックス、DVDレコーダー、BlueRayDisc(BD)レコーダー、カーナビ端末、携帯電話、PDAなどの、Java(R)仮想マシンを搭載する電子機器全般が該当する。
実行部120は、通常のパーソナルコンピュータやデジタル家電機器等に搭載されているプログラム実行手段と同様のものであり、アプリ取得プログラム121、Java(R)仮想マシン122(仮想マシン122と称す)、OS123、第1CPU124、第1RAM125、第1ROM126から構成される。
安全な実行部130は、悪意のある第3者からの攻撃を防御しつつ安全にプログラムを実行させることができるプログラム実行手段であり、改ざん検査部131、Java(R)仮想マシンローダ132(仮想マシンローダ132と称す)、第2CPU133、第2RAM134、第2ROM135からなる。
アプリ取得プログラム121は、任意の手法でアプリケーションを端末外から取得をするJava(R)プログラムである。アプリ取得プログラム121は、例えば、インターネット上にあるサーバから、TLS(Transport Layer Security)、HTTP(Hypertet Transfer Protocol)等のプロトコルに従いJava(R)アプリケーションをダウンロードするJava(R)プログラムが相当する。TLSは暗号化により通信時のデータの盗聴、改ざんを防ぐデータ転送方式である。TLSの詳細はRFC2246に記載されており、ここでは詳細な説明を省略する。HTTPは、インターネット上のデータ通信で一般的に用いられているデータ転送方式である。HTTPの詳細はRFC2616に記載されており、ここでは詳細な説明を省略する。
また、アプリ取得プログラム121は、デジタル放送のデータ放送として、MPEG2トランスポートストリーム内に埋め込まれたJava(R)アプリケーションを端末内に読み出すJava(R)プログラムであってもよい。MPEG2トランスポートストリームの詳細はMPEG規格書ISO/IEC138181−1に記載されており、本実施の形態では詳細は省略する。MPEG2トランスポートストリームにJava(R)プログラムを埋め込む方法は、DSMCC方式として、MPEG規格書ISO/IEC138181−6に記述されている。ここではDSMCCの詳細な説明は省略する。DSMCC方式は、MPEG2トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。
また、アプリ取得プログラム121は、SDカード、CD−ROM、DVD、BlueRayDisc等に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。
また、アプリ取得プログラム121は、アプリケーション実行装置110内にある第1ROM126内に記録されたJava(R)アプリケーションを、第1RAM125に読み込むJava(R)プログラムであってもよい。
尚、本実施の形態ではアプリ取得プログラム121はJava(R)言語で記述されたJava(R)プログラムとしているが、同等の機能を有する、ネイティブ言語で記述されたプログラムや、ハードウェアで実現されていても同様に本発明を実施できる。
仮想マシン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で構成されている。
バイトコードインタプリタ301は、クラスローダ302によりロードされたバイトコードを解釈、実行するサブプログラムで、Java(R)仮想マシンにおいて中核な処理を行うサブプログラムである。
クラスローダ302は、アプリ取得プログラム121からクラスファイルを受け取り、仮想マシン122内部へロードする処理を行う。クラスファイルは、バイトコードなどの情報を含むファイルであり、書籍「Java(R) Virtual Machine Specification(ISBN 0−201−63451―)」で定義されている。また、クラスローダ302は、クラスアンロード処理も行う。クラスアンロード処理は、実行が終了し不要になったクラスをJava(R)仮想マシン122から取り除く処理である。
ベリファイヤ303は、クラスのデータ形式の不備や、クラスに含まれるバイトコードの安全性を判定する。バイトコードの安全性の検査方法は、Java(R) Virtual Machine Specificationで定義されているため詳細な説明は省略する。クラスローダ302は、ベリファイヤ303において妥当ではないと判定されたクラスはロードをしない。
ヒープ管理部は304、Java(R)アプリケーションが使用するワーキングメモリの確保を行う。ワーキングメモリは第1RAM125内に確保される。また、ヒープ管理部304は、ガベージコレクションも行う。ガベージコレクションは、アプリケーション実行において不要になったワーキングメモリを開放し、他の用途に再利用できるようにする公知の技術であり、詳細な説明は省略する。
ネイティブライブラリ305は、Java(R)アプリケーションから呼び出されるライブラリで、OS123や、アプリケーション実行装置110が備える図1には記載されていないハードウェア、サブプログラム等で提供される機能をJava(R)アプリケーションへ提供する。
JITコンパイラ306は、バイトコードを第1CPU124が理解可能な実行形式に翻訳する。
OS123は、アプリケーション実行装置110の電源が投入されると第1CPU124が起動するサブプログラムである。OS123は、オペレーティングシステムの略であり、Linu等が一例である。OS123は、他のサブプログラムを平行して実行するカーネル及び、ライブラリで構成される公知の技術の総称であり、詳細な説明は省略する。OS123は仮想マシン122をサブプログラムとして実行する。
第1CPU124は、仮想マシン122、OS123、アプリケーション取得部121が取得したプログラムを実行する。
第1RAM125は、具体的にはSRAM、DRAM等の一次記憶メモリーで構成され、第1CPU124が処理を行う際、一時的にデータを保存するために使用される。
第1ROM126は、具体的にはフラッシュメモリーやハードディスク等の不揮発性メモリで構成され、第1CPU124から指示されたデータやプログラムを記憶する。図4は本実施の形態における第1ROM126が記憶しているデータの一例を示したものである。図4に示す様に、第1ROM126は暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を含む。暗号化された起動クラス名403は仮想マシン122が起動した際に最初に実行するプログラムのクラス名である。本実施の形態では暗号化起動クラス名403にはアプリ取得プログラム121が指定されているものとする。尚、第1ROM126は図4に示した以外のデータを記憶していてもよい。
改ざん検査部131は、仮想マシン122が改ざんされていないか検査し、検査の結果仮想マシン122が改ざんされていると判定した場合には、第1CPU124に仮想マシン122の実行を停止させるなどの処理を行う。改ざん検査部131については後に詳細に説明をする。
仮想マシンローダ132は、アプリケーション実行装置110の電源投入後に、第1CPU125が仮想マシン122を実行可能な状態にするための処理を行う。仮想マシンローダ132については後に詳細に説明をする。
第2CPU133は、改ざん検査部131、仮想マシンローダ132を実行する。
第2RAM134は、具体的にはDRAMやSRAM等で構成され、第2CPU133が処理を行う際、一時的にデータを保存するために使用され、第2CPU133以外からは第2RAM134が記憶するデータを読むことも書くことも出来ないことを保証するものである。第2RAM134はCPU133に混載されていてもよい。
第2ROM135は、読み出し専用の不揮発性メモリで、第2CPU133以外からは第2ROM135が記憶するデータを読みだすことが出来ないことを保証するものである。図5に第2ROM135が記憶するデータの一例を示す。第2ROM135には、第1ROM126が記憶する暗号化されたJava(R)仮想マシン401(仮想マシン401と称す)、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403を復号するための復号鍵501と、ハッシュ値502を記録している。ハッシュ値502は、仮想マシン122を入力としてハッシュ関数を実行することにより求めた値である。ハッシュ関数(メッセージダイジェスト関数とも呼ばれる)とは、入力された原文から固定長の擬似乱数を生成する関数であり、公知の技術である。ハッシュ値は、ハッシュ値から原文を再現することはできず、また同じハッシュ値を持つ異なるデータを作成することは極めて困難である特徴をもつ。本実施の形態では、仮想マシン、アプリ取得プログラム、起動クラス名を復号する鍵は501一つのみとしているが、それぞれに別々の鍵を用いても本発明は実施可能である。尚、第2ROM135は図5に示されていない別のデータを記憶していてもよい。
なお、本実施の形態では、アプリケーション実行装置110は二つのCPUを備えているが、一つのCPUが動作モードを切り替えるなどの方法で仮想的に二つのCPUのように振る舞ってもよい。
なお、第1RAM125、第2RAM134は一つのRAMを仮想的に二つのRAMとして扱ってもよい。
なお、第1ROM126、第2ROM135は一つのROMを仮想的に二つのROMとして扱ってもよい。
なお、安全な実行部130全体をハードウェアにより実現してもよい。この場合、第1CPU124と第2CPU133間のデータ通信は暗号化して行い、第3者による盗聴を防ぐ。これは両CPUを結ぶデータバス(図示されていない)にデータを送信する際に暗号化し、データを受信後に復号することで行われる。また、安全な実行部130はスマートカードやICカードのように、アプリケーション実行装置110から取り外し可能な装置であってもよい。スマートカード、ICカードはカード内部にCPUやメモリ、セキュリティ回路を含む公知の技術であり、詳細な説明を省略する。この場合、実行部120と安全な実行部130間のデータ転送は、SAC(Secure Authenticated Channel)等の技術を用いて、第3者による盗聴を防ぎながら行う。SACはICカードと外部機器の相互認証、および暗号鍵の共有を安全に行うための公知の技術である。
次に、本発明の主要機能であるJava(R)仮想マシンの改ざん検査機能について説明する。
ユーザがアプリケーション実行装置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番地の間にロードされている。
図6を参照して、ステップ605において、仮想マシンローダ132は、第2RAM134に記憶させた仮想マシン122のアドレスの範囲を指定し、改ざん検査部131を実行することにより仮想マシン122の改ざんの有無を確認する。図8に改ざん検査部131の処理内容を示す。
ステップ801で、仮想マシンローダ132から指定された仮想マシン122のアドレスの範囲に基づき、仮想マシン122のハッシュ値を計算する。次に、ステップ802で、第2ROM135が記憶する仮想マシン122の正しいハッシュ値502を読み出す。そして、両者を比較し(ステップ803)、比較の結果両者が一致していれば仮想マシン122は改ざんされていないと判断し、改ざん検査部131は成功裏に終了する(ステップ804)。しかし、ステップ803において、比較結果が不一致であった場合には、仮想マシン122は改ざんされていると判定し、アプリケーション実行装置110の電源を切断もしくは再起動する(ステップ805)。
図6を参照して、ステップ605において、改ざん検査部131の実行が成功裏に終了した場合には、仮想マシン122のロードを終了する。
OS123は、仮想マシンローダ132の終了を受け、第1のRAM125が記憶する復号化された起動クラス名を指定し、仮想マシン122の実行を開始する。
仮想マシン122は、所定の処理を行う直前に、CPU124を通して改ざん検査部131を呼び出す。改ざん検査部131の処理ステップ805にあるように、仮想マシン122に改ざんがあった場合にはアプリケーション実行装置110は電源を切断、もしくは再起動されるため、デバッガ等の悪意のあるプログラムがダウンロードされたアプリケーションを盗聴、改ざんすることを防ぐことが出来る。ここで所定の処理とは、例えばメソッドを呼び出す処理、クラスロード、ベリファイを行う処理、JITコンパイルする処理などが該当する。特に、バイトコードを第1RAM125から読み込む処理をする際に行うのが好ましい。
上記実施の形態の様に構成することにより、仮想マシン122が実行時に改ざんされた場合には直ちにアプリケーション実行装置110の動作が停止するため、Java(R)仮想マシン122が実行するダウンロードJava(R)アプリケーションが盗聴、改ざんされることを防ぐことができる。
尚、本実施の形態では、仮想マシン122全体のハッシュ値を計算し、改ざんの判定をしていたが、一部のサブプログラムのハッシュ値を計算し、改ざん判定をするように構成しても本発明は実施可能である。その場合、第1ROM126は仮想マシン122のサブプログラム(例えばバイトコードインタプリタ301とクラスローダ302)のハッシュ値502を記憶させ、仮想マシンローダ132は、前記2つのサブプログラムのアドレス範囲を改ざん検査部131に通知し、改ざん検査部131は、ステップ801において、前記2つのサブプログラムのアドレス範囲についてハッシュ値を求めればよい。
図9に仮想マシンローダ132が改ざん検査部131に通知するアドレス範囲の例を示す。列901がサブプログラム、列902がそのサブプログラムがロードされたアドレス範囲を表している。図9のように複数のサブプログラムを改ざん検査する場合には、改ざん検査部131はそれぞれのサブプログラムのアドレス範囲についてハッシュ値を求め、第2ROM135内に記憶されている正しいハッシュ値と比較する。図10に、複数のサブプログラムを改ざん検査する場合の第2ROM135内に記憶されている正しいハッシュ値の例を示す。列1001がサブプログラム、列1002が正しいハッシュ値を表している。改ざん検査部131は全てのサブプログラムのハッシュ値が正しい場合に、仮想マシン122は改ざんされていないと判定する。
これにより、ステップ801においてハッシュ値を計算する時間を短縮することができる。また、サブプログラム単位ではなく、さらに細かい粒度(例えば関数単位)で改ざん判定を行うようにしてもよい。
尚、本実施の形態では、暗号化された仮想マシン401、暗号化されたアプリ取得プログラム402、暗号化された起動クラス名403は暗号化された状態で第1ROM126が記憶していたが、これらは暗号化されていなくても本発明を適用することは可能である。また、これらは第1ROM126ではなく、第2ROM135に記憶されていても同様に本発明を適用することが可能である。
(実施の形態2)
実施の形態1では、Java(R)仮想マシン全体が所定の処理を行う際に、改ざん検査部131が改ざん検査を行っていたが、改ざん検査の方法はJava(R)仮想マシンの処理に関係なく所定の間隔で随時行ってもよい。
図11は、本実施の形態における改ざん検査部131の処理を示したものである。ステップ1101からステップ1103、ステップ1105までは実施の形態1の図8と同様であるため詳細な説明を省略する。ステップ1104では予め決められた所定の時間改ざん検査部131の実行を中断させる。こうすることで、仮想マシン122の実行状態とは関係なく仮想マシン122の改ざんの有無を検査することができる。
尚、所定の時間は仮想マシン122の実行状態に応じて選択可能にしてもよい。例えば仮想マシン122上で動作するアプリケーションがアイドル状態になっている場合には改ざん検査の間隔を大きく取るなどの処理をしてもよい。アプリケーションがアイドル状態か否かは、仮想マシン122が管理するスレッドの状態を調べることにより判定することが可能である。アプリケーションを構成するすべてのスレッドがアイドル状態である場合、そのアプリケーションはアイドル状態であることがわかる。これにより無駄な改ざん検査の回数を抑えることができ、アプリケーション実行装置110の消費電力を低減させることが可能になる。
(実施の形態3)
実施の形態1、2においては、頻繁に改ざん検査を行うことにより、より確実に仮想マシン122が実行時に改ざんされたか否かを検査できるようになる。しかし、改ざん検査を頻繁に行うに伴い改ざん検査に要する時間が増えるためJava(R)アプリケーションの実行が遅くなることが考えられる。どの程度の頻度で検査を行えば十分かは、Java(R)アプリケーションが求めるセキュリティの度合いに依存する。仮想マシン122が実行しているアプリケーションのセキュリティの度合いを知ることにより、改ざん検査の頻度を適切に調節することが可能になる。
図12は、Java(R) Virtual Machine Specificationで定義されているクラスファイルの構成を示したものである。クラスファイルには多くの要素が格納されているが、ここでは本実施の形態に特に関係のあるメソッド情報1214のみを説明し、他の要素の詳細な説明は省略する。
図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はこのメソッドがもつ属性を格納する。属性には例えばバイトコードを格納するコード属性などがある。
図14はattributes1305の構成を示す図である。attribute_name_inde1201は、constant_pool1205内にある、この属性の名前(例:コード属性)を含むエントリのインデックスである。attribute_length1402は続くinfo1403のバイト数である。info1403は属性の値を格納する。コード属性の場合にはinfo1403にバイトコードを格納する。これらの属性に、新規の属性を追加する拡張はJava(R)言語仕様で許容されている。本実施の形態では、メソッドに求められるセキュリティの強さを表すセキュリティ属性を、新たに追加する。
図15にセキュリティ属性の例を示す。値1501は、constant_pool1205の19番目のエントリにセキュリティ属性の名前が含まれていることを表す。値1502は、このセキュリティ属性が4バイトの情報を持つことを表す。値1503は、このセキュリティ属性を持つメソッドのセキュリティレベルを表す。本実施の形態では、セキュリティレベルの値が大きいほど、求められるセキュリティの度合いが強いとし、セキュリティレベル0のクラスは特に保護の必要のないクラスとする。また、あるクラスがセキュリティレベルの異なる複数のメソッドを持つ場合、それらのセキュリティレベルのうち最も高いレベルを、そのクラスのセキュリティレベルと呼ぶことにする。尚、本実施の形態では、methods1214内部のattributes1305にセキュリティ属性を追加したが、クラス単位の属性として、attributes1215にセキュリティ属性を追加してもよい。この場合、クラスに含まれる全てのメソッドがattributes1215で指定されたセキュリティレベルを持つと判断する。このようにセキュリティ属性をクラスファイルに追加することで、仮想マシン122は、実行中のメソッドに求められるセキュリティの属性を認識することができる。
図16は、セキュリティレベルが0より大きいメソッドを処理する場合のみ仮想マシン122の改ざん検査を行う際の、バイトコードインタプリタ301が行うメソッド呼び出し処理である。ステップ1601で、これから呼び出そうとするメソッドのセキュリティレベルを調べ、その結果が0より大きな値であれば(ステップ1602)、改ざん検査部131により仮想マシン122の改ざんの有無を調べる(ステップ1603)。その後、通常のメソッド呼び出し処理(ステップ1604)を実行する。クラスロード処理やJITコンパイル処理時にセキュリティレベルの値に応じて改ざん検査をすることも同様に実現可能である。これにより、特にセキュリティを求められないクラスを実行する際には、改ざん検査処理を省略でき、Java(R)アプリケーションの実行時間の低下を抑えることができる。
また、特定のセキュリティレベルのメソッドを持つクラスが仮想マシン122内にロードされている間のみ、定期的に改ざん検査を行うように構成してもよい。例えば、仮想マシン122内にロードされているクラスのうち、最も高いセキュリティレベルに応じて、図11に示すステップ1104の改ざん検査部131の中断時間を変化させることができる。
図17はセキュリティレベルと改ざん検査部131の中断時間の対応関係の一例である。図17のように、仮想マシン122内にセキュリティレベル3のクラスがロードされている間は10秒に1度改ざん検査を行うが、セキュリティレベルが高々1の場合には60秒に1度改ざん検査を行い、セキュリティレベルが0のクラスしかロードしていない場合には、改ざん検査を一切行わないなど、実行するアプリケーションによって、柔軟に改ざんの頻度を変更することができ、無駄な改ざん検査を減らすことができる。
尚、本実施の形態では、セキュリティレベルをクラスファイルの拡張属性に埋め込んだが、これ以外の方法を用いてセキュリティレベルを定義しても本発明は実施可能である。例えば、セキュリティレベルを記録したMLファイルをJava(R)アプリケーションと同時にアプリ取得手段121が取得し、仮想マシン122へ渡すことにより、仮想マシン122はメソッドのセキュリティレベルを知ることが可能になる。図18はそのようなMLファイルの一例である。
本発明に係る仮想マシン改ざん検査装置は、仮想マシンが実行時に改ざんされたか否かを、ハードウェアなどで実現された、盗聴、改ざんが困難な安全な改ざん検査部より所定のタイミングで検査することにより、仮想マシンの実行時改ざんを素早く検知し、アプリケーション実行装置の強制終了等の処置をとるため、ダウンロードされたアプリケーションを実行時の盗聴、改ざんから保護することができ、今後本格展開が予想されるアプリケーションのダウンロード配信ビジネスにおいて、コンテンツ作成者の権利を保護することができる。
本発明に係るアプリケーション実行装置の実施の形態の構成図 従来のアプリケーション実行装置の実施の形態の構成図 本発明に係る仮想マシンの構成の一例の構成図 本発明に係るアプリケーション実行装置が備える第1のROMに記憶されている情報の一例の構成図 本発明に係るアプリケーション実行装置が備える第2のROMに記憶されている情報の一例の構成図 本発明に係るアプリケーション実行装置のロード手順を示すフローチャート 本発明に係るアプリケーション実行装置の仮想マシンのロード後のアドレスの一例を示す図 本発明に係るアプリケーション実行装置の、改ざん検査方法の一例を示すフローチャート 本発明に係る仮想マシンのサブプログラムのアドレス範囲を示す図 本発明に係る第2ROM135に記憶される、サブプログラムごとの正しいハッシュ値の例を示す図 本発明に係るアプリケーション実行装置の、改ざん検査方法の一例を示すフローチャート 仮想マシン仕様で定義されたクラスファイルの内容の構成図 仮想マシン仕様で定義されたメソッド情報テーブルの内容の構成図 仮想マシン仕様で定義された属性テーブルの内容の構成図 本発明に係るセキュリティ拡張属性の内容の構成図 本発明に係るバイトコードインタプリタの処理の一部を表すフローチャート 本発明に係るセキュリティレベルと改ざん検査間隔の対応関係の一例を示す図 本発明に係るセキュリティ拡張属性を定義するMLファイルの一例を示す図
符号の説明
100 ダウンロード可能なプログラム
110 アプリケーション実行装置
120 実行部
121 アプリ取得プログラム
122 仮想マシン
123 OS
124 第1CPU
125 第1RAM
126 第1ROM
130 安全な実行部
131 改ざん検査部
132 仮想マシンローダ
133 第2CPU
134 第2RAM
135 第2ROM

Claims (19)

  1. プラットフォームに依存しない中間言語で表現されたプログラムを、プラットフォームに依存した命令へ変換しながら動作する仮想マシンの改ざんを検査する方法であって、第3者による盗聴、改ざんを防止する耐タンパ実行部で実行される仮想マシンローダにより仮想マシンをロードするステップと、
    ロードされた仮想マシンのアドレス領域を、前記耐タンパ実行部で実行される改ざん検査部に通知するステップと、
    前記改ざん検査部により、前記仮想マシンのアドレス領域が改ざんされたか否かを、所定のタイミングで判定するステップと、
    判定の結果、前記仮想マシンが改ざんされていると判定された場合には、前記改ざん検査部は前記仮想マシンの実行を停止させるステップとを含む、仮想マシン改ざん検査方法。
  2. 前記仮想マシンローダが、暗号化された仮想マシンを復号するステップをさらに含む、請求項1に記載の仮想マシン改ざん検査方法。
  3. 前記仮想マシンのアドレス領域は、前記仮想マシンの開始アドレスから終了アドレスまでの領域である請求項1または請求項2に記載の仮想マシン改ざん検査方法。
  4. 前記仮想マシンのアドレス領域は、前記仮想マシンを構成するサブプログラムの開始アドレスから終了アドレスまでの領域である請求項1または請求項2に記載の仮想マシン改ざん検査方法。
  5. 前記仮想マシンが所定の処理を行う直前に、前記仮想マシンが前記改ざん検査部を呼び出し、改ざん検査を行う請求項1から請求項4のいずれか1項に記載の仮想マシン改ざん検査方法。
  6. 前記所定の処理は、クラスロード処理を含む請求項5に記載の仮想マシン改ざん検査方法。
  7. 前記所定の処理は、メソッド呼び出し処理を含む請求項5に記載の仮想マシン改ざん検査方法。
  8. 前記所定の処理は、バイトコードベリファイ処理を含む請求項5に記載の仮想マシン改ざん検査方法。
  9. 前記所定の処理は、JITコンパイル処理を含む請求項5に記載の仮想マシン改ざん検査方法。
  10. クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の処理をアプリケーション実行の途中に変更する請求項5から請求項9のいずれか1項に記載の仮想マシン改ざん検査方法。
  11. 前記改ざん検査部による前記仮想マシンの改ざん検査を所定の間隔で定期的に行うことを特徴とする請求項1から請求項4のいずれか1項に記載の仮想マシン改ざん検査方法。
  12. クラスファイルに埋め込み、もしくは添付されたセキュリティ属性を読み取り、セキュリティ属性に応じて前記所定の間隔を動的に変更する請求項11に記載の仮想マシン改ざん検査方法。
  13. 前記仮想マシン上で動作するアプリケーションがアイドル状態の間は、前記改ざん検査部による前記仮想マシンの改ざん検査を一時停止する請求項1から請求項12のいずれか1項に記載の仮想マシン改ざん検査方法。
  14. ソフトウェア実行部と、第3者による盗聴、改ざんを防止する耐タンパソフトウェア実行部を備え、前記耐タンパソフトウェア実行部内で実行される、仮想マシンを前記ソフトウェア実行部内へロードする仮想マシンロード手段と、前記仮想マシンが実行時に改ざんされていないか否かを所定のタイミングで検査し、前記検査の結果、前記仮想マシンは改ざんされていると判定された場合には、前記仮想マシンを終了させる改ざん検査部とを備えた仮想マシン改ざん検査装置。
  15. 前記安全ソフトウェア実行部は、前記仮想マシン改ざん検査装置内の耐タンパ機能で保護されたソフトウェア実行部である請求項14に記載の仮想マシン改ざん検査装置。
  16. 前記耐タンパ実行部は、前記仮想マシン改ざん検査装置に内蔵されたハードウェアである請求項14に記載の仮想マシン改ざん検査装置。
  17. 前記耐タンパソフトウェア実行部は、前記仮想マシン改ざん検査装置から着脱可能なスマートカードである請求項14に記載の仮想マシン改ざん検査装置。
  18. 前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置の電源を切断することを特徴とする請求項14から請求項17のいずれか1項に記載の仮想マシン改ざん検査装置。
  19. 前記改ざん検査部は、前記仮想マシンが改ざんされていると判定した際に、前記仮想マシン改ざん検査装置を再起動させることを特徴とする請求項14から請求項17のいずれか1項に記載の仮想マシン改ざん検査装置。
JP2004109777A 2004-04-02 2004-04-02 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置 Pending JP2007226277A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004109777A JP2007226277A (ja) 2004-04-02 2004-04-02 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
PCT/JP2005/006303 WO2005096121A1 (ja) 2004-04-02 2005-03-31 実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004109777A JP2007226277A (ja) 2004-04-02 2004-04-02 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置

Publications (1)

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

Family

ID=35063959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004109777A Pending JP2007226277A (ja) 2004-04-02 2004-04-02 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置

Country Status (2)

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

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006323675A (ja) * 2005-05-19 2006-11-30 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2008165794A (ja) * 2006-12-29 2008-07-17 Intel Corp プラットフォーム脆弱性を評価する組み込み機構
JP2009065538A (ja) * 2007-09-07 2009-03-26 Optim Corp ネットワーク接続方法、ネットワーク装置
JP2009080772A (ja) * 2007-09-27 2009-04-16 Toppan Printing Co Ltd ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム
JP2009146199A (ja) * 2007-12-14 2009-07-02 Sony Corp 情報処理装置、ディスク、および情報処理方法、並びにプログラム
JP2009282751A (ja) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd プログラム検査システムおよび方法
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2010020621A (ja) * 2008-07-11 2010-01-28 Toyota Infotechnology Center Co Ltd プログラム修復システムおよび方法
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム
JP2011070654A (ja) * 2009-09-25 2011-04-07 Intel Corp アンチマルウェアを有するコンピュータシステムおよび方法
JP2012510650A (ja) * 2008-08-28 2012-05-10 マイクロソフト コーポレーション 感染したホストによる攻撃からの仮想ゲストマシンの保護
JP2012089138A (ja) * 2010-10-21 2012-05-10 Arm Ltd 非セキュアドメインの中に表示される対象画像のためのセキュリティ対策
JP2012174228A (ja) * 2011-02-24 2012-09-10 Kyocera Corp プログラム保護装置および通信装置
JP2012190441A (ja) * 2011-01-11 2012-10-04 Safenet Inc リモートプリブート認証
JP2012198926A (ja) * 2008-09-30 2012-10-18 Intel Corp ハードウェアベースのアンチウィルススキャンサービス
JP2013501300A (ja) * 2009-08-04 2013-01-10 カーネギー メロン ユニバーシティ マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器
JP2013196123A (ja) * 2012-03-16 2013-09-30 Ntt Data Corp パッケージ生成装置、パッケージ生成方法、プログラム
JP5392494B2 (ja) * 2007-10-09 2014-01-22 日本電気株式会社 ファイルチェック装置、ファイルチェックプログラムおよびファイルチェック方法
JP2014182725A (ja) * 2013-03-21 2014-09-29 Dainippon Printing Co Ltd Icチップ、検証処理方法、及び検証処理プログラム
WO2015001614A1 (ja) 2013-07-02 2015-01-08 富士通株式会社 マシン提供方法,マシン提供システム,およびマシン提供プログラム
JP2015041349A (ja) * 2013-08-23 2015-03-02 大日本印刷株式会社 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム
JP2017538217A (ja) * 2014-11-28 2017-12-21 トムソン ライセンシングThomson Licensing アプリケーション整合性の検証を提供する方法及びデバイス
JPWO2020188731A1 (ja) * 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 (ja) * 2019-07-22 2021-01-28 日本電気株式会社 セキュリティ管理装置、セキュリティ管理方法、及び非一時的なコンピュータ可読媒体

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213560B (zh) * 2005-06-28 2011-06-01 松下电器产业株式会社 验证方法、信息处理装置及集成电路
JP4939851B2 (ja) * 2006-06-21 2012-05-30 パナソニック株式会社 情報処理端末、セキュアデバイスおよび状態処理方法
EP2120176A4 (en) * 2007-02-09 2016-05-18 Ntt Docomo Inc TERMINAL DEVICE AND SOFTWARE INSPECTION METHOD
JP2009009372A (ja) * 2007-06-28 2009-01-15 Panasonic Corp 情報端末、クライアントサーバシステムおよびプログラム
US8539551B2 (en) * 2007-12-20 2013-09-17 Fujitsu Limited Trusted virtual machine as a client
JP4969480B2 (ja) * 2008-02-21 2012-07-04 株式会社リコー 画像形成装置、情報処理方法、及び情報処理プログラム
JP4890490B2 (ja) * 2008-03-28 2012-03-07 富士フイルム株式会社 記憶装置及びデジタルカメラ
JP2011150656A (ja) * 2010-01-25 2011-08-04 Toyota Infotechnology Center Co Ltd プログラム検査システム
JP2012058991A (ja) * 2010-09-08 2012-03-22 Fujitsu Toshiba Mobile Communications Ltd 情報処理装置
JP6114832B2 (ja) 2012-11-22 2017-04-12 華為技術有限公司Huawei Technologies Co.,Ltd. 仮想マシンのための管理制御方法、装置及びシステム
US9390258B2 (en) * 2014-07-16 2016-07-12 General Electric Company Systems and methods for verifying the authenticity of an application during execution
CN111684445B (zh) * 2018-02-07 2024-04-26 索尼公司 信息处理装置,信息处理方法和程序

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3813019B2 (ja) * 1998-05-11 2006-08-23 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム処理方法、指定メソッドに関連するフレームを検出する方法、及び記憶媒体
KR20020038807A (ko) * 1999-10-08 2002-05-23 션 엘. 맥클린톡 객체 및 자원 보안 시스템

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4698285B2 (ja) * 2005-05-19 2011-06-08 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
JP2006323675A (ja) * 2005-05-19 2006-11-30 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2008165794A (ja) * 2006-12-29 2008-07-17 Intel Corp プラットフォーム脆弱性を評価する組み込み機構
JP4664339B2 (ja) * 2007-09-07 2011-04-06 株式会社オプティム ネットワーク接続方法、ネットワーク装置
JP2009065538A (ja) * 2007-09-07 2009-03-26 Optim Corp ネットワーク接続方法、ネットワーク装置
JP2009080772A (ja) * 2007-09-27 2009-04-16 Toppan Printing Co Ltd ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム
JP5392494B2 (ja) * 2007-10-09 2014-01-22 日本電気株式会社 ファイルチェック装置、ファイルチェックプログラムおよびファイルチェック方法
JP2009146199A (ja) * 2007-12-14 2009-07-02 Sony Corp 情報処理装置、ディスク、および情報処理方法、並びにプログラム
US8270275B2 (en) 2007-12-14 2012-09-18 Sony Corporation Information processing device, disc, information processing method, and program
JP2009282751A (ja) * 2008-05-22 2009-12-03 Toyota Infotechnology Center Co Ltd プログラム検査システムおよび方法
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2010020621A (ja) * 2008-07-11 2010-01-28 Toyota Infotechnology Center Co Ltd プログラム修復システムおよび方法
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム
US8954897B2 (en) 2008-08-28 2015-02-10 Microsoft Corporation Protecting a virtual guest machine from attacks by an infected host
JP2012510650A (ja) * 2008-08-28 2012-05-10 マイクロソフト コーポレーション 感染したホストによる攻撃からの仮想ゲストマシンの保護
JP2012198926A (ja) * 2008-09-30 2012-10-18 Intel Corp ハードウェアベースのアンチウィルススキャンサービス
JP2013501300A (ja) * 2009-08-04 2013-01-10 カーネギー メロン ユニバーシティ マルウェアがある状態でユーザが検証可能な信頼性のあるパスを得るための方法および機器
JP2011070654A (ja) * 2009-09-25 2011-04-07 Intel Corp アンチマルウェアを有するコンピュータシステムおよび方法
US8635705B2 (en) 2009-09-25 2014-01-21 Intel Corporation Computer system and method with anti-malware
JP2012089138A (ja) * 2010-10-21 2012-05-10 Arm Ltd 非セキュアドメインの中に表示される対象画像のためのセキュリティ対策
JP2012190441A (ja) * 2011-01-11 2012-10-04 Safenet Inc リモートプリブート認証
JP2012174228A (ja) * 2011-02-24 2012-09-10 Kyocera Corp プログラム保護装置および通信装置
JP2013196123A (ja) * 2012-03-16 2013-09-30 Ntt Data Corp パッケージ生成装置、パッケージ生成方法、プログラム
JP2014182725A (ja) * 2013-03-21 2014-09-29 Dainippon Printing Co Ltd Icチップ、検証処理方法、及び検証処理プログラム
WO2015001614A1 (ja) 2013-07-02 2015-01-08 富士通株式会社 マシン提供方法,マシン提供システム,およびマシン提供プログラム
JP2015041349A (ja) * 2013-08-23 2015-03-02 大日本印刷株式会社 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム
JP2017538217A (ja) * 2014-11-28 2017-12-21 トムソン ライセンシングThomson Licensing アプリケーション整合性の検証を提供する方法及びデバイス
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 (ja) * 2019-03-19 2020-09-24
WO2020188731A1 (ja) * 2019-03-19 2020-09-24 日本電気株式会社 情報処理装置、情報処理方法及び記録媒体
JP7207519B2 (ja) 2019-03-19 2023-01-18 日本電気株式会社 情報処理装置、情報処理方法及びプログラム
WO2021014539A1 (ja) * 2019-07-22 2021-01-28 日本電気株式会社 セキュリティ管理装置、セキュリティ管理方法、及び非一時的なコンピュータ可読媒体

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2007226277A (ja) 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
Wang et al. Compac: Enforce component-level access control in android
KR101238572B1 (ko) 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트
US7930743B2 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US7631356B2 (en) System and method for foreign code detection
JPWO2007011001A1 (ja) 実行装置
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
US20080216071A1 (en) Software Protection
US20080270806A1 (en) Execution Device
WO2005098570A1 (ja) 実行装置
JPWO2006016407A1 (ja) Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
US20100153667A1 (en) Method, computer program and electronic device
JP4664055B2 (ja) プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP2005202523A (ja) コンピュータ装置及びプロセス制御方法
JP2008040853A (ja) アプリケーション実行方法およびアプリケーション実行装置
Titze et al. Preventing library spoofing on android
JP4898823B2 (ja) アプリケーション情報改竄監視装置及び方法
Bove Secure Services for Standard RISC-V Architectures
KR101485468B1 (ko) 휴대 장치의 해킹 방지를 위한 부팅 장치 및 방법
CN116108468A (zh) 一种war、jar程序包加解密方法、***及介质
WO2011114621A1 (ja) プログラム実行装置、情報処理方法、情報処理プログラム、記録媒体及び集積回路
Sawani Providing Verifiable Integrity on Mobile Platforms