(57)【要約】      （修正有）【課題】プログラムの解析や改ざんなどの不正行為の検出をする。【解決手段】プログラム実行装置は、耐タンパー化プログラムを更新する耐タンパー更新プログラム１と、１つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行環境であって、前記耐タンパー更新プログラム１は、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部３と、前記耐タンパー化前プログラム記憶部３に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部６と、前記耐タンパー化プログラムコード生成部６により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、を有する。【選択図】図１
2006259848.tif 000002
【特許請求の範囲】
【請求項１】
耐タンパー化プログラムを更新する耐タンパー更新プログラムと、１つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行装置であって、
前記耐タンパー更新プログラムは、
前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部と、
前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部と、
前記耐タンパー化プログラムコード生成部により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、
を有するプログラム実行装置。
【請求項２】
請求項１記載のプログラム実行装置であって、
前記耐タンパー更新プログラムは、
耐タンパー化プログラムに対する不正行為を検出する不正行為検出部と、
前記不正行為検出部により不正行為を検出した場合、別の耐タンパー化プログラムを生成する耐タンパー化プログラムコード生成部と、
を有するプログラム実行装置。
【請求項３】
請求項２記載のプログラム実行装置であって、
前記耐タンパー更新プログラムは、
前記耐タンパー化プログラムに対して、実行の可否を認証する耐タンパー化プログラム認証部を備え、
前記耐タンパー化プログラムコード生成部が、耐タンパー化プログラムのチェックサムを生成し、
前記耐タンパー化プログラム認証部が、前記耐タンパー化プログラムコード生成部により予め生成したチェックサムと、前記耐タンパー化プログラムから算出したチェックサムと、に基づいて、前記耐タンパー化プログラムの実行の可否を認証し、
前記耐タンパー化プログラム認証部により実行可と認証した耐タンパー化プログラムを実行する、
プログラム実行装置。
【請求項４】
請求項１から３のいずれか１項に記載のプログラム実行装置であって、
前記不正行為検出部は、複数の耐タンパー化プログラム毎に不正行為を検出するプログラム実行装置。
【請求項５】
請求項１から４のいずれか１項に記載の実行装置であって、
前記耐タンパー更新プログラムは、
外部装置から各種プログラムをダウンロードするプログラム取得部を備え、
少なくとも、前記耐タンパー化前プログラム記憶部は、前記プログラム取得部によりダウンロードしたプログラムを記憶し、前記耐タンパー化プログラムコード生成部、前記耐タンパー化プログラムコード書き換え部、前記不正行為検出部または前記耐タンパー化プログラム認証部は、前記プログラム取得部によりダウンロードしたプログラムに基づいて各部各々の処理を行う、
プログラム実行装置。
【請求項６】
請求項１から５のいずれか１項に記載のプログラム実行装置であって、
前記耐タンパー化前プログラム記憶部は、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムに対応させて、耐タンパー化の度合いを指定する耐タンパー化レベルを記憶し、
前記耐タンパー化プログラムコード生成部は、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを、前記耐タンパー化レベルに応じて耐タンパー化する、
プログラム実行装置。
【請求項７】
耐タンパー化プログラムを更新する耐タンパー更新プログラムと、１つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行方法であって、
前記耐タンパー化プログラムの耐タンパー化する前の、予め記憶しておいたオリジナルプログラムを、耐タンパー化する生成ステップと、
前記生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える書き換えステップと、
を有するプログラム実行方法。
【請求項８】
請求項７記載のプログラム実行方法であって、
耐タンパー化プログラムに対する不正行為を検出する不正行為検出ステップと、
前記不正行為を検出した場合、前記別の耐タンパー化プログラムを生成する生成ステップと、
を有するプログラム実行方法。
【請求項９】
請求項８記載のプログラム実行方法であって、
耐タンパー化プログラムのチェックサムを算出する算出ステップと、
前記生成ステップにおいて予め生成しておいた耐タンパー化プログラムのチェックサムと、前記算出ステップにおいて算出したチェックサムと、に基づいて、耐タンパー化プログラムの実行の可否を認証する認証ステップと、を有し、
前記認証ステップにより実行可と認証した耐タンパー化プログラムを実行する、プログラム実行方法。
【請求項１０】
請求項７から９のいずれか１項に記載のプログラム実行方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化された耐タンパー化プログラムを、不正な解析行為検出時に新しい耐タンパー化プログラムに自動更新するプログラム実行装置、プログラム実行方法、および、プログラムに関する。
【背景技術】
【０００２】
従来、機密保持が必要なデータやプログラムを、仕様が公開されたオープンなコンピュータシステム上で再生または実行する場合には、他人による前記プログラム等の解析および改ざんが容易になる。
【０００３】
このようなプログラム等の解析や改ざんなどの不正行為を防ぐために、デバッガによる不正行為の検出や無効化、プログラムの暗号化などの不正行為防止処理が行われている。例えば、改ざんなどの不正行為を検出した場合には、プログラムの実行を中断したり、プログラムのダミー処理を実行させたりしている。
【０００４】
しかし、このようなプログラムの中断処理やダミー処理のいずれの不正行為防止処理も、繰返しそのプログラムが実行されることにより、遂にはプログラムの解析、改ざんが行われてしまう可能性がある。
【０００５】
これに対して、暗号通信を行うための暗号演算手段を内蔵する移動通信端末と、プログラム変更を行うプログラム変更手段を内蔵する充電器とを有し、移動通信端末を充電器に装着して充電する際プログラムを変更して、移動通信端末に変更プログラムを転送し、このプログラムを実行させる方法が提案されている(例えば、特許文献１参照）。
【０００６】
特許文献１によれば、頻繁にプログラムを変更することにより、他人によるプログラムの解析を困難にすることができる。
【０００７】
【特許文献１】特開２０００‐７８６６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のようにプログラムを頻繁に変更し、移動通信端末に変更プログラムを転送する方法においては、プログラム更新(変更）時の電力消費が大であるという背景から、電力消費を気にしなくてもよいバッテリ充電時にプログラム更新を行うことができるものの、プログラムを更新するまでに、例えば数日から１週間程度のタイムラグを生じる。このため、この間に他人によるプログラムの繰返し処理が実行されると、このプログラムが解析、改ざんされてしまう危険性があった。
【０００９】
本発明はこのような従来の問題を解決するものであり、他人によるプログラムの解析や改ざんなどの不正行為の検出時に、即座に、このプログラムを新しい耐タンパー方式の別の耐タンパー化プログラムに書き換えることで、プログラムの繰返し実行による解析行為を防止できるプログラム実行装置、プログラム実行方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のプログラム実行装置は、耐タンパー化プログラムを更新する耐タンパー更新プログラムと、１つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行装置であって、前記耐タンパー更新プログラムは、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部と、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部と、前記耐タンパー化プログラムコード生成部により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、を有するものである。
【００１１】
本発明のプログラム実行方法は、耐タンパー化プログラムを更新する耐タンパー更新プログラムと、１つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行方法であって、前記耐タンパー化プログラムの耐タンパー化する前の、予め記憶しておいたオリジナルプログラムを、耐タンパー化する生成ステップと、前記生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える書き換えステップと、を有するものである。
【００１２】
本発明のプログラムは、本発明の耐タンパー化プログラムの自動更新方法を、コンピュータに実行させるためのものである。
【００１３】
この構成により、耐タンパー化プログラムの更新を定期的に行うことで、他人によるプログラムの繰返し実行による耐タンパー化プログラムの不正解析、改ざんを防止することができる。
【００１４】
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、耐タンパー化プログラムに対する不正行為を検出する不正行為検出部と、前記不正行為検出部により不正行為を検出した場合、別の耐タンパー化プログラムを生成する耐タンパー化プログラムコード生成部と、を有するものを含む。
【００１５】
また、本発明のプログラム実行方法は、耐タンパー化プログラムに対する不正行為を検出する不正行為検出ステップと、前記不正行為を検出した場合、前記別の耐タンパー化プログラムを生成する生成ステップと、を有するものを含む。
【００１６】
この構成により、他人によるプログラムの繰返し実行による耐タンパー化プログラムの不正解析、改ざんを検出したときに耐タンパー化プログラムの更新を行うため、耐タンパー化プログラムの不正解析、改ざんを効果的に防止することができる。
【００１７】
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、前記耐タンパー化プログラムに対して、実行の可否を認証する耐タンパー化プログラム認証部を備え、前記耐タンパー化プログラムコード生成部が、耐タンパー化プログラムのチェックサムを生成し、前記耐タンパー化プログラム認証部が、前記耐タンパー化プログラムコード生成部により予め生成したチェックサムと、前記耐タンパー化プログラムから算出したチェックサムと、に基づいて、前記耐タンパー化プログラムの実行の可否を認証し、前記耐タンパー化プログラム認証部により実行可と認証した耐タンパー化プログラムを実行する、ものを含む。
【００１８】
また、本発明のプログラム実行方法は、耐タンパー化プログラムのチェックサムを算出する算出ステップと、前記生成ステップにおいて予め生成しておいた耐タンパー化プログラムのチェックサムと、前記算出ステップにおいて算出したチェックサムと、に基づいて、耐タンパー化プログラムの実行の可否を認証する認証ステップと、を有し、前記認証ステップにより実行可と認証した耐タンパー化プログラムを実行する、ものを含む。
【００１９】
この構成により、認証がＮＧ（失敗）となったとき、耐タンパー化プログラムの生成および耐タンパー化プログラムコード書き換え手段によるプログラム更新の処理を実行させることができる。
【００２０】
また、本発明のプログラム実行装置は、前記不正行為検出部が、複数の耐タンパー化プログラム毎に不正行為を検出するものを含む。
【００２１】
この構成により、複数の耐タンパー化プログラムを同時に監視し、複数のプログラムのセキュリティ強度を高めることができる。
【００２２】
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、外部装置から各種プログラムをダウンロードするプログラム取得部を備え、少なくとも、前記耐タンパー化前プログラム記憶部が、前記プログラム取得部によりダウンロードしたプログラムを記憶し、前記耐タンパー化プログラムコード生成部、前記耐タンパー化プログラムコード書き換え部、前記不正行為検出部または前記耐タンパー化プログラム認証部が、前記プログラム取得部によりダウンロードしたプログラムに基づいて各部各々の処理を行う、ものを含む。
【００２３】
この構成により、耐タンパー化対象プログラム、耐タンパー化手法、検出処理の変更、追加を行うことができ、セキュリティをさらに向上させることができる。
【００２４】
また、本発明のプログラム実行装置は、前記耐タンパー化前プログラム記憶部が、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムに対応させて、耐タンパー化の度合いを指定する耐タンパー化レベルを記憶し、前記耐タンパー化プログラムコード生成部が、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを、前記耐タンパー化レベルに応じて耐タンパー化する、ものを含む。
【００２５】
これにより、耐タンパー化対象プログラムの性質に合った耐タンパー化のレベルで効果的に耐タンパー化処理を施すことができる。
【発明の効果】
【００２６】
本発明のプログラム実行装置、実行方法、および、プログラムによれば、耐タンパー化プログラムの解析または改ざんを含む不正行為を検出したときに、即座に、新しい方式の耐タンパー化プログラムコードに書き替えることにより、他人によるプログラムの繰返し実行によるプログラムの不正解析を防止する効果を有する。
【発明を実施するための最良の形態】
【００２７】
（第１実施形態）
以下、本発明の第１実施形態によるプログラム実行装置について、図面を用いて説明する。
【００２８】
本発明の第１実施形態によるプログラム実行装置の構成図を、図１に示す。図１において、プログラム実行装置は、一般のプログラム実行環境を備えており、耐タンパー更新プログラム１を有する構成である。プログラム実行装置のプログラム実行環境下では、このプログラム実行環境下で実行されている各種プログラムに対して少なくとも１つの耐タンパー化プログラムを実行し、デバッガの検出や無効化、各種プログラムの暗号化、改ざん検出などを行い、各種プログラムに対する解析・改ざんを防いでいる。また、耐タンパー更新プログラム１により、耐タンパー化プログラムを新たな耐タンパー化プログラムに更新することにより、各種プログラムの繰り返し実行による耐タンパー化プログラムの解析行為を防いでいる。
【００２９】
耐タンパー更新プログラム１は、セキュリティ強度が高い高セキュリティ領域を構成し、安全性は高いが、メモリなどの容量面、性能面で実行コストが高い。この耐タンパー更新プログラム１は、セキュアモードを持つプロセッサとして機能し、実行や呼び出しに掛かるオーバヘッドが大きい。このため、速度が求められる処理（暗号化コンテンツの復号再生など）を行うことは困難である。耐タンパー更新プログラム１には、耐タンパー化前のプログラムを記憶する耐タンパー化前プログラム記憶部３、後述する更新処理部４、検出処理部５が含まれている。
【００３０】
一方、プログラム実行環境は、セキュリティ強度の低い低セキュリティ領域を構成し、安全性は低いが、実行コストが安いので、速度が求められる処理を実行できる。プログラム実行環境には、耐タンパー化されたプログラムを記憶する耐タンパー化プログラム記憶部１０が含まれている。
【００３１】
耐タンパー更新プログラム１に含まれる更新処理部４は、耐タンパー化プログラム生成部６および耐タンパー化プログラムコード書き換え部７を有する。耐タンパー化プログラムコード生成部６は、耐タンパー化前プログラム記憶部３から読み出した耐タンパー化前の更新対象プログラムに対して、耐タンパー化処理を行うように機能する。
【００３２】
耐タンパー化プログラムコード書き替え部７は、耐タンパー化プログラムコード生成部６により耐タンパー化処理した更新対象プログラムをコードの書き替えにより耐タンパー化プログラム記憶部１０へ更新するように機能する。なお、更新処理部４では耐タンパー化プログラムの認証情報（改ざん検出用チェックサムなど）を生成する。
【００３３】
一方、検出処理部５は、不正行為検出部８と耐タンパー化プログラム認証部９を有する。不正行為検出部８は、更新対象プログラムの実行中にデバッガの起動やメモリダンプを取られるなどの不正行為を検出するように機能する。耐タンパー化プログラム認証部９は、更新対象プログラムの改ざんが検出されたか否か、つまりこの更新対象プログラムが更新処理部４で生成された適正な耐タンパー化プログラムかどうかをチェックするように機能する。不正行為が検出されたら、直ちにプログラム実行環境による耐タンパー化プログラムの実行を停止し、更新処理部４に制御を移す。
【００３４】
次に、図１に示したプログラム実行装置の動作について、図２を参照しながら説明する。図２は、本発明の第１実施形態によるプログラムの自動更新の処理手順を示すシーケンスである。
【００３５】
まず、プログラム実行環境は、耐タンパー化プログラム記憶部１０から読み出した耐タンパー化プログラム（例えば、外部記憶媒体に記憶された音楽再生アプリケーション）を起動する（ステップＳ１）。また、起動された耐タンパー化プログラムから、耐タンパー更新プログラム１の耐タンパー化プログラム認証部９の認証モジュールを所定の同期タイミングにて呼び出して（同期：関数コール）、耐タンパー化プログラムの認証処理を要求する（認証処理要求ステップ。ステップＳ２）。
【００３６】
この呼び出しに応じて、耐タンパー化プログラム認証部９の認証モジュールは、以下の認証処理を行う。
（１）認証モジュールは、前記耐タンパー化プログラムのチェックサム（ＣＲＣ、ＭＤ５ハッシュ値、ＳＨＡ‐１ハッシュ値など任意の方式）を計算する。ここで、認証対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。
（２）耐タンパー化プログラム生成部６によって以前の更新プログラム生成時に計算して保持しておいたチェックサムと、ここで計算したチェックサムとを比較する(ステップＳ３）。
（３）これらの２つのチェックサムが等しければ、つまり認証が成功した場合には、OK(成功情報）の通知をプログラム実行環境に返し、プログラム実行環境は、耐タンパー化プログラム本来の処理を実行する(ステップＳ４）。
（４）一方、チェックサムが異なっていた場合、耐タンパー化プログラムコード生成部（モジュール)６を、別プロセスとして非同期で起動する(ステップＳ５）。
（５）また、自分自身を強制終了する（ステップＳ６）。このため、耐タンパー化プログラムも同時に終了することになる。
【００３７】
この場合において、プログラム実行環境にNG(失敗情報）を返し、プログラム実行環境で終了処理を行ってもよい。なお、認証は改ざん検出ではなく、チャレンジレスポンス方式など、一般的な認証方式を用いた認証を行ってもよい。
【００３８】
また、前記認証処理が成功した場合、前記のようにプログラム実行環境に制御が戻り、通常の処理を開始する。なお、外部記憶媒体に記憶された音楽再生アプリケーションの場合には、暗号化コンテンツの復号再生処理を開始するようにしてもよい。
【００３９】
一方、プログラム実行環境は、耐タンパー化プログラム本来の処理実行中に、所定の同期タイミングで不正行為検出部８の不正行為検出モジュールを呼び出す(同期：関数コール。ステップＳ７) 。この不正行為検出は、プログラムの処理ブロック毎や関数毎に呼び出してもよいし、タイマー割り込みなどにより、定期的呼び出してもよい。
【００４０】
さらに、不正行為検出部８を、常時動作させておき、プログラム実行環境による耐タンパー化プログラムの起動を検出して不正行為検出を行ったり、タイマー割り込みなどを検出して定期的に不正行為検出を行う方式でもよい。この場合、プログラム実行環境から不正行為検出部８に不正行為検出要求を出す必要がない。不正行為を検出した場合(ステップＳ８）、即座に、不正行為検出部８が強制終了シグナルを耐タンパー化プログラムコード生成部６に送ってこれを起動し、一方、プログラム実行環境により実行中のプログラムを強制終了させる(ステップＳ９）。
【００４１】
この不正処理検出処理は、次の手順で実行される。
（１）デバッガの起動検出、耐タンパー化プログラム内のブレークポイント（Ｂｒｅａｋ  Ｐｏｉｎｔ）検出、メモリ不正読み出しの検出などの処理を任意に行い、不正な解析が行われていないかをチェックする(ステップＳ８）。
（２）不正が検出されなければ、プログラム実行環境にOKを返し、処理を続行する。
（３）一方、何らかの不正を検出した場合、耐タンパー化プログラムコード生成部６を、別プロセスとして非同期で起動する(ステップＳ１１）。なお、検出した不正行為の内容や、検出場所などの情報をパラメータとして耐タンパー化プログラムコード生成部６に渡して、起動させるようにしてもよい。
（４）また、自分自身を強制終了する(ステップＳ９）。このため、耐タンパー化プログラムも同時に終了することになる。なお、プログラム実行環境にＮＧを返して、プログラム実行環境で終了処理を行ってもよい。
【００４２】
前記不正行為の検出処理後、耐タンパー化プログラムコード生成部６は、次の耐タンパー化プログラム生成処理を実行する(ステップＳ１２）。
（１）まず、耐タンパー化前プログラム記憶部３に暗号化して保持している耐タンパー化前プログラムを復号する。
（２）また、更新対象プログラムの耐タンパー化のために、（イ）暗号方式変更（ＤＥＳ->ＡＥＳなど）、（ロ）暗号鍵変更、（ハ）メモリ配置変更（各モジュールのロード位置、データの格納位置などの変更）、などの処理をランダムに行う。なお、 再耐タンパー化を行う対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。また、不正行為を検出したモジュールだけでもよい。不正行為検出部８から渡された不正行為に関する情報がある場合、それに応じた更新処理を行う。
（３）次に、認証情報の生成処理を行う。実行する耐タンパー化プログラムが、更新処理部４で生成された正しいプログラムかどうかを認証するために、生成したプログラムのチェックサム(ＣＲＣ、ＭＤ５ハッシュ値、ＳＨＡ-１ハッシュ値など)を生成して、耐タンパー化プログラム認証部９に保持しておく。この処理の対象も、プログラム全体でもよいし、秘密のデータやアルゴリズムを格納している部分のみでもよい。また、不正行為を検出したモジュールだけでもよい。
（４）さらに、プログラム更新処理を所定の同期タイミングにて呼び出す（同期：関数コール。ステップＳ１３）。
【００４３】
そして、最後に、耐タンパー化プログラムコード書き換え部７は、プログラムコードの書き換えを行う(ステップＳ１４）。ここでは、更新するプログラムが保存されている耐タンパー化プログラム記憶部１０の領域(フラッシュＲＯＭなどの書き換え可能メモリ）をクリアし、生成した耐タンパー化プログラムを書き込む(ステップＳ１４）。書き込み終了後、正しく書き込めているかを否かを検査する。
【００４４】
なお、前記処理では不正行為の検出時にプログラムの更新処理を実行する場合を説明したが、この更新処理を不正行為の検出の有り無しに関係なく定期的に行うことで、さらに安全性を高めることができる。この場合のプログラム実行装置の構成を図３に示す。図１のプログラム実行装置の構成と異なる点は、図３のプログラム実行装置には検出処理部５がないことである。この構成が、本発明のプログラム実行装置における最少の構成となり、生産コストを抑えることができる。
【００４５】
また、不正行為検出時の分析は、初めは最低限の耐タンパー効果が得られるものに対して行い、その後は不正行為を解析して、この解析結果に応じた更新プログラムの作成を行うことが望ましい。工場出荷時に余分な不正行為対策を含めないようにすることで、善意のユーザが利用する際に処理速度を犠牲にするのを回避することができる。
【００４６】
さらに、更新プログラムを予め任意のタイミングで生成して保持しておくことにより、余分なメモリ領域の確保が必要となるものの、更新にかかる時間を短縮することができる。
【００４７】
また、耐タンパー更新プログラム１に、ネットワーク上のサーバや外部記憶装置から配信される耐タンパー化前プログラム、更新処理部４用のプログラム、または、検出処理部５用のプログラムを、をダウンロードし、そのダウンロードしたプログラムを用いて耐タンパー更新プログラムにおける各部のプログラムを更新するようにしても良い。この場合のプログラム実行装置の構成を図４に示す。図１のプログラム実行装置の構成と異なる点は、図４のプログラム実行装置にプログラムをネットワークを経由してダウンロードし、そのプログラムにより耐タンパー化前プログラム記憶部３、更新処理部４または検出処理部５のプログラムを更新するプログラム取得部１１を新たに設けたことである。この構成により、耐タンパー化対象プログラム、耐タンパー化手法、検出処理の変更、追加を行うことができ、セキュリティをさらに向上させることができる。
【００４８】
（第２実施形態）
第１実施形態においては、一つの耐タンパー化プログラムを監視する場合について説明したが、複数の耐タンパー化プログラムを同時に監視する場合にも適用できる。
【００４９】
図５は、本発明の第２実施形態によるプログラム実行装置の構成図を示す。この場合には、耐タンパー化プログラム記憶部１０に記憶した耐タンパー化プログラム１と耐タンパー化前プログラム記憶部３に記憶した耐タンパー化前プログラム１、耐タンパー化プログラム記憶部１０に記憶した耐タンパー化プログラム２と耐タンパー化前プログラム記憶部３に記憶した耐タンパー化プログラム２、とをそれぞれ対応させて、耐タンパー化プログラム１、耐タンパー化プログラム２についてそれぞれ、第１実施形態で述べたプログラムの自動更新の処理を行う。
【００５０】
この構成により、複数の耐タンパー化プログラムのセキュリティ強度を高めることができる。
【００５１】
また、複数の耐タンパー化プログラム毎に、セキュリティレベルを表す耐タンパー化レベルを設定しておいても良い。この場合のプログラム実行装置の構成を図６に示す。耐タンパー化プログラム生成部６は、耐タンパー化プログラム生成処理を実行する際、まず、耐タンパー化前プログラム記憶部３から更新対象の耐タンパー化前プログラムと、そのプログラムに対応する耐タンパー化レベルを読み出す。そして、その読み出した耐タンパー化レベルに応じた耐タンパー化手法により、当該耐タンパー化前プログラムの耐タンパー化処理を行う。これにより、耐タンパー化対象プログラムの性質に合った耐タンパー化のレベルで効果的に耐タンパー化処理を施すことができる。
【００５２】
（第３実施形態）
第１実施形態においては、検出処理部５を、耐タンパー更新プログラム１に設けた場合について説明したが、図７の本発明の第３実施形態によるプログラム実行装置の構成図に示すように、耐タンパー化プログラム認証部９を耐タンパー更新プログラム１に、不正行為検出部５をプログラム実行環境に設けてもよい。
【００５３】
図８は、本発明の第３実施形態によるプログラムの自動更新の処理手順を示すシーケンスである。この実施形態によれば、不正行為検出のために耐タンパー更新プログラム１に検出処理を移行させる必要がなくなる。すなわち、図２におけるステップＳ７、Ｓ１０の処理が不要となる。また、第１実施形態では、ステップＳ９の処理において、不正行為検出部８が強制終了しているが、第３実施形態では、プログラム実行環境が強制終了を行う。ステップＳ７、Ｓ９、Ｓ１０の処理以外の処理は、第１実施形態と同様であるため、説明を省略する。
【００５４】
耐タンパー化更新プログラムは処理が重いという前提で設けられているため、処理が軽くなるという利点が得られる。また、不正行為検出時のプログラム実行環境によるプログラムの処理状態が分かるので、更新すべき領域を特定し易くなる。
【００５５】
（第４実施形態）
図９に示す本発明の第４実施形態によるプログラム実行装置は、図５に示した不正行為検出部８を含む不正行為検出部５を、プログラム実行環境内において、耐タンパー化プログラムとは独立して設けた例を示す。この例では、不正行為検出部８も耐タンパー化しておき、前記耐タンパー化プログラムに対して行われるのと同様の不正行為検出プログラムの認証および更新を行う。なお、このほかの動作は、第３実施形態において説明したものと同様であるので、ここではその重複する説明を省略する。
【００５６】
また、不正行為検出部８は、タイマー等で定期的に耐タンパー化プログラムへの不正アクセスを監視するようにしている。これによれば、第３実施形態に比べて、不正行為検出部８の不正行為検出プログラムのみの更新が可能となる。また、この更新が耐タンパー化プログラムとは独立して行われるので、この耐タンパー化プログラムへの影響を回避できる。
【００５７】
（第５実施形態）
図１０に示す本発明の第５実施形態によるプログラム実行装置は、第４実施形態の変形例であり、不正行為検出部５が複数の耐タンパー化プログラム（耐タンパー化プログラム１および２）を同時に監視する場合を示す。これにより、複数の耐タンパー化プログラムのセキュリティ強度を高めることができる。なお、このほかの動作は、第２実施形態、第４実施形態について述べたものと同様であるので、その重複する説明を省略する。
【００５８】
以上のように、本発明では、プログラム実行環境による耐タンパー化プログラムの実行中に、該耐タンパー化プログラムの解析または改ざんを含む不正行為を検出したとき、プログラム実行環境の動作を停止し、新しい方式の耐タンパー化プログラムにプログラムコードを書き替えることとしている。これにより、他人のプログラムの繰返し実行による解析行為を確実に防止できる。
【産業上の利用可能性】
【００５９】
本発明のプログラム実行装置、プログラム実行方法、および、プログラムは、他人によるプログラムの繰返し実行による解析行為を確実に防止できるという効果を有し、暗号化されたプログラムを、新しい耐タンパー化プログラムに自動更新するプログラム実行装置およびプログラム実行方法等として有用である。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１実施形態によるプログラム実行装置の構成図
【図２】本発明の第１実施形態によるプログラムの自動更新の処理手順を示すシーケンス
【図３】本発明の第１実施形態によるプログラム実行装置の他の例の構成図
【図４】本発明の第１実施形態によるプログラム実行装置の別の例の構成図
【図５】本発明の第２実施形態によるプログラム実行装置の構成図
【図６】本発明の第２実施形態によるプログラム実行装置の他の例の構成図
【図７】本発明の第３実施形態によるプログラム実行装置の構成図
【図８】本発明の第３実施形態によるプログラムの自動更新の処理手順を示すシーケンス
【図９】本発明の第４実施形態によるプログラム実行装置の構成図
【図１０】本発明の第５実施形態によるプログラム実行装置の構成図
【符号の説明】
【００６１】
１  耐タンパー更新プログラム
３  耐タンパー化前プログラム記憶部
４  更新処理部
５  検出処理部
６  耐タンパー化プログラムコード生成部
７  耐タンパー化プログラムコード書き換え部
８  不正行為検出部
９  耐タンパー化プログラム認証部
１０  耐タンパー化プログラム記憶部
１１  プログラム取得部
２０  ネットワーク上のサーバ／外部記憶装置
【図１】
2006259848.tif 000003
【図２】
2006259848.tif 000004
【図３】
2006259848.tif 000005
【図４】
2006259848.tif 000006
【図５】
2006259848.tif 000007
【図６】
2006259848.tif 000008
【図７】
2006259848.tif 000009
【図８】
2006259848.tif 000010
【図９】
2006259848.tif 000011
【図１０】
2006259848.tif 000012