JP2006259848A - プログラム実行装置、プログラム実行方法、および、プログラム - Google Patents
プログラム実行装置、プログラム実行方法、および、プログラム Download PDFInfo
- Publication number
- JP2006259848A JP2006259848A JP2005073001A JP2005073001A JP2006259848A JP 2006259848 A JP2006259848 A JP 2006259848A JP 2005073001 A JP2005073001 A JP 2005073001A JP 2005073001 A JP2005073001 A JP 2005073001A JP 2006259848 A JP2006259848 A JP 2006259848A
- Authority
- JP
- Japan
- Prior art keywords
- program
- tamper resistant
- tamper
- unit
- resistant
- 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.)
- Withdrawn
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】プログラムの解析や改ざんなどの不正行為の検出をする。
【解決手段】プログラム実行装置は、耐タンパー化プログラムを更新する耐タンパー更新プログラム1と、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行環境であって、前記耐タンパー更新プログラム1は、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部3と、前記耐タンパー化前プログラム記憶部3に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部6と、前記耐タンパー化プログラムコード生成部6により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、を有する。
【選択図】図1
【解決手段】プログラム実行装置は、耐タンパー化プログラムを更新する耐タンパー更新プログラム1と、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行環境であって、前記耐タンパー更新プログラム1は、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部3と、前記耐タンパー化前プログラム記憶部3に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部6と、前記耐タンパー化プログラムコード生成部6により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、を有する。
【選択図】図1
Description
本発明は、暗号化された耐タンパー化プログラムを、不正な解析行為検出時に新しい耐タンパー化プログラムに自動更新するプログラム実行装置、プログラム実行方法、および、プログラムに関する。
従来、機密保持が必要なデータやプログラムを、仕様が公開されたオープンなコンピュータシステム上で再生または実行する場合には、他人による前記プログラム等の解析および改ざんが容易になる。
このようなプログラム等の解析や改ざんなどの不正行為を防ぐために、デバッガによる不正行為の検出や無効化、プログラムの暗号化などの不正行為防止処理が行われている。例えば、改ざんなどの不正行為を検出した場合には、プログラムの実行を中断したり、プログラムのダミー処理を実行させたりしている。
しかし、このようなプログラムの中断処理やダミー処理のいずれの不正行為防止処理も、繰返しそのプログラムが実行されることにより、遂にはプログラムの解析、改ざんが行われてしまう可能性がある。
これに対して、暗号通信を行うための暗号演算手段を内蔵する移動通信端末と、プログラム変更を行うプログラム変更手段を内蔵する充電器とを有し、移動通信端末を充電器に装着して充電する際プログラムを変更して、移動通信端末に変更プログラムを転送し、このプログラムを実行させる方法が提案されている(例えば、特許文献1参照)。
特許文献1によれば、頻繁にプログラムを変更することにより、他人によるプログラムの解析を困難にすることができる。
しかしながら、従来のようにプログラムを頻繁に変更し、移動通信端末に変更プログラムを転送する方法においては、プログラム更新(変更)時の電力消費が大であるという背景から、電力消費を気にしなくてもよいバッテリ充電時にプログラム更新を行うことができるものの、プログラムを更新するまでに、例えば数日から1週間程度のタイムラグを生じる。このため、この間に他人によるプログラムの繰返し処理が実行されると、このプログラムが解析、改ざんされてしまう危険性があった。
本発明はこのような従来の問題を解決するものであり、他人によるプログラムの解析や改ざんなどの不正行為の検出時に、即座に、このプログラムを新しい耐タンパー方式の別の耐タンパー化プログラムに書き換えることで、プログラムの繰返し実行による解析行為を防止できるプログラム実行装置、プログラム実行方法、および、プログラムを提供することを目的とする。
本発明のプログラム実行装置は、耐タンパー化プログラムを更新する耐タンパー更新プログラムと、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行装置であって、前記耐タンパー更新プログラムは、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部と、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部と、前記耐タンパー化プログラムコード生成部により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、を有するものである。
本発明のプログラム実行方法は、耐タンパー化プログラムを更新する耐タンパー更新プログラムと、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行方法であって、前記耐タンパー化プログラムの耐タンパー化する前の、予め記憶しておいたオリジナルプログラムを、耐タンパー化する生成ステップと、前記生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える書き換えステップと、を有するものである。
本発明のプログラムは、本発明の耐タンパー化プログラムの自動更新方法を、コンピュータに実行させるためのものである。
この構成により、耐タンパー化プログラムの更新を定期的に行うことで、他人によるプログラムの繰返し実行による耐タンパー化プログラムの不正解析、改ざんを防止することができる。
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、耐タンパー化プログラムに対する不正行為を検出する不正行為検出部と、前記不正行為検出部により不正行為を検出した場合、別の耐タンパー化プログラムを生成する耐タンパー化プログラムコード生成部と、を有するものを含む。
また、本発明のプログラム実行方法は、耐タンパー化プログラムに対する不正行為を検出する不正行為検出ステップと、前記不正行為を検出した場合、前記別の耐タンパー化プログラムを生成する生成ステップと、を有するものを含む。
この構成により、他人によるプログラムの繰返し実行による耐タンパー化プログラムの不正解析、改ざんを検出したときに耐タンパー化プログラムの更新を行うため、耐タンパー化プログラムの不正解析、改ざんを効果的に防止することができる。
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、前記耐タンパー化プログラムに対して、実行の可否を認証する耐タンパー化プログラム認証部を備え、前記耐タンパー化プログラムコード生成部が、耐タンパー化プログラムのチェックサムを生成し、前記耐タンパー化プログラム認証部が、前記耐タンパー化プログラムコード生成部により予め生成したチェックサムと、前記耐タンパー化プログラムから算出したチェックサムと、に基づいて、前記耐タンパー化プログラムの実行の可否を認証し、前記耐タンパー化プログラム認証部により実行可と認証した耐タンパー化プログラムを実行する、ものを含む。
また、本発明のプログラム実行方法は、耐タンパー化プログラムのチェックサムを算出する算出ステップと、前記生成ステップにおいて予め生成しておいた耐タンパー化プログラムのチェックサムと、前記算出ステップにおいて算出したチェックサムと、に基づいて、耐タンパー化プログラムの実行の可否を認証する認証ステップと、を有し、前記認証ステップにより実行可と認証した耐タンパー化プログラムを実行する、ものを含む。
この構成により、認証がNG(失敗)となったとき、耐タンパー化プログラムの生成および耐タンパー化プログラムコード書き換え手段によるプログラム更新の処理を実行させることができる。
また、本発明のプログラム実行装置は、前記不正行為検出部が、複数の耐タンパー化プログラム毎に不正行為を検出するものを含む。
この構成により、複数の耐タンパー化プログラムを同時に監視し、複数のプログラムのセキュリティ強度を高めることができる。
また、本発明のプログラム実行装置は、前記耐タンパー更新プログラムが、外部装置から各種プログラムをダウンロードするプログラム取得部を備え、少なくとも、前記耐タンパー化前プログラム記憶部が、前記プログラム取得部によりダウンロードしたプログラムを記憶し、前記耐タンパー化プログラムコード生成部、前記耐タンパー化プログラムコード書き換え部、前記不正行為検出部または前記耐タンパー化プログラム認証部が、前記プログラム取得部によりダウンロードしたプログラムに基づいて各部各々の処理を行う、ものを含む。
この構成により、耐タンパー化対象プログラム、耐タンパー化手法、検出処理の変更、追加を行うことができ、セキュリティをさらに向上させることができる。
また、本発明のプログラム実行装置は、前記耐タンパー化前プログラム記憶部が、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムに対応させて、耐タンパー化の度合いを指定する耐タンパー化レベルを記憶し、前記耐タンパー化プログラムコード生成部が、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを、前記耐タンパー化レベルに応じて耐タンパー化する、ものを含む。
これにより、耐タンパー化対象プログラムの性質に合った耐タンパー化のレベルで効果的に耐タンパー化処理を施すことができる。
本発明のプログラム実行装置、実行方法、および、プログラムによれば、耐タンパー化プログラムの解析または改ざんを含む不正行為を検出したときに、即座に、新しい方式の耐タンパー化プログラムコードに書き替えることにより、他人によるプログラムの繰返し実行によるプログラムの不正解析を防止する効果を有する。
(第1実施形態)
以下、本発明の第1実施形態によるプログラム実行装置について、図面を用いて説明する。
以下、本発明の第1実施形態によるプログラム実行装置について、図面を用いて説明する。
本発明の第1実施形態によるプログラム実行装置の構成図を、図1に示す。図1において、プログラム実行装置は、一般のプログラム実行環境を備えており、耐タンパー更新プログラム1を有する構成である。プログラム実行装置のプログラム実行環境下では、このプログラム実行環境下で実行されている各種プログラムに対して少なくとも1つの耐タンパー化プログラムを実行し、デバッガの検出や無効化、各種プログラムの暗号化、改ざん検出などを行い、各種プログラムに対する解析・改ざんを防いでいる。また、耐タンパー更新プログラム1により、耐タンパー化プログラムを新たな耐タンパー化プログラムに更新することにより、各種プログラムの繰り返し実行による耐タンパー化プログラムの解析行為を防いでいる。
耐タンパー更新プログラム1は、セキュリティ強度が高い高セキュリティ領域を構成し、安全性は高いが、メモリなどの容量面、性能面で実行コストが高い。この耐タンパー更新プログラム1は、セキュアモードを持つプロセッサとして機能し、実行や呼び出しに掛かるオーバヘッドが大きい。このため、速度が求められる処理(暗号化コンテンツの復号再生など)を行うことは困難である。耐タンパー更新プログラム1には、耐タンパー化前のプログラムを記憶する耐タンパー化前プログラム記憶部3、後述する更新処理部4、検出処理部5が含まれている。
一方、プログラム実行環境は、セキュリティ強度の低い低セキュリティ領域を構成し、安全性は低いが、実行コストが安いので、速度が求められる処理を実行できる。プログラム実行環境には、耐タンパー化されたプログラムを記憶する耐タンパー化プログラム記憶部10が含まれている。
耐タンパー更新プログラム1に含まれる更新処理部4は、耐タンパー化プログラム生成部6および耐タンパー化プログラムコード書き換え部7を有する。耐タンパー化プログラムコード生成部6は、耐タンパー化前プログラム記憶部3から読み出した耐タンパー化前の更新対象プログラムに対して、耐タンパー化処理を行うように機能する。
耐タンパー化プログラムコード書き替え部7は、耐タンパー化プログラムコード生成部6により耐タンパー化処理した更新対象プログラムをコードの書き替えにより耐タンパー化プログラム記憶部10へ更新するように機能する。なお、更新処理部4では耐タンパー化プログラムの認証情報(改ざん検出用チェックサムなど)を生成する。
一方、検出処理部5は、不正行為検出部8と耐タンパー化プログラム認証部9を有する。不正行為検出部8は、更新対象プログラムの実行中にデバッガの起動やメモリダンプを取られるなどの不正行為を検出するように機能する。耐タンパー化プログラム認証部9は、更新対象プログラムの改ざんが検出されたか否か、つまりこの更新対象プログラムが更新処理部4で生成された適正な耐タンパー化プログラムかどうかをチェックするように機能する。不正行為が検出されたら、直ちにプログラム実行環境による耐タンパー化プログラムの実行を停止し、更新処理部4に制御を移す。
次に、図1に示したプログラム実行装置の動作について、図2を参照しながら説明する。図2は、本発明の第1実施形態によるプログラムの自動更新の処理手順を示すシーケンスである。
まず、プログラム実行環境は、耐タンパー化プログラム記憶部10から読み出した耐タンパー化プログラム(例えば、外部記憶媒体に記憶された音楽再生アプリケーション)を起動する(ステップS1)。また、起動された耐タンパー化プログラムから、耐タンパー更新プログラム1の耐タンパー化プログラム認証部9の認証モジュールを所定の同期タイミングにて呼び出して(同期:関数コール)、耐タンパー化プログラムの認証処理を要求する(認証処理要求ステップ。ステップS2)。
この呼び出しに応じて、耐タンパー化プログラム認証部9の認証モジュールは、以下の認証処理を行う。
(1)認証モジュールは、前記耐タンパー化プログラムのチェックサム(CRC、MD5ハッシュ値、SHA‐1ハッシュ値など任意の方式)を計算する。ここで、認証対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。
(2)耐タンパー化プログラム生成部6によって以前の更新プログラム生成時に計算して保持しておいたチェックサムと、ここで計算したチェックサムとを比較する(ステップS3)。
(3)これらの2つのチェックサムが等しければ、つまり認証が成功した場合には、OK(成功情報)の通知をプログラム実行環境に返し、プログラム実行環境は、耐タンパー化プログラム本来の処理を実行する(ステップS4)。
(4)一方、チェックサムが異なっていた場合、耐タンパー化プログラムコード生成部(モジュール)6を、別プロセスとして非同期で起動する(ステップS5)。
(5)また、自分自身を強制終了する(ステップS6)。このため、耐タンパー化プログラムも同時に終了することになる。
(1)認証モジュールは、前記耐タンパー化プログラムのチェックサム(CRC、MD5ハッシュ値、SHA‐1ハッシュ値など任意の方式)を計算する。ここで、認証対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。
(2)耐タンパー化プログラム生成部6によって以前の更新プログラム生成時に計算して保持しておいたチェックサムと、ここで計算したチェックサムとを比較する(ステップS3)。
(3)これらの2つのチェックサムが等しければ、つまり認証が成功した場合には、OK(成功情報)の通知をプログラム実行環境に返し、プログラム実行環境は、耐タンパー化プログラム本来の処理を実行する(ステップS4)。
(4)一方、チェックサムが異なっていた場合、耐タンパー化プログラムコード生成部(モジュール)6を、別プロセスとして非同期で起動する(ステップS5)。
(5)また、自分自身を強制終了する(ステップS6)。このため、耐タンパー化プログラムも同時に終了することになる。
この場合において、プログラム実行環境にNG(失敗情報)を返し、プログラム実行環境で終了処理を行ってもよい。なお、認証は改ざん検出ではなく、チャレンジレスポンス方式など、一般的な認証方式を用いた認証を行ってもよい。
また、前記認証処理が成功した場合、前記のようにプログラム実行環境に制御が戻り、通常の処理を開始する。なお、外部記憶媒体に記憶された音楽再生アプリケーションの場合には、暗号化コンテンツの復号再生処理を開始するようにしてもよい。
一方、プログラム実行環境は、耐タンパー化プログラム本来の処理実行中に、所定の同期タイミングで不正行為検出部8の不正行為検出モジュールを呼び出す(同期:関数コール。ステップS7) 。この不正行為検出は、プログラムの処理ブロック毎や関数毎に呼び出してもよいし、タイマー割り込みなどにより、定期的呼び出してもよい。
さらに、不正行為検出部8を、常時動作させておき、プログラム実行環境による耐タンパー化プログラムの起動を検出して不正行為検出を行ったり、タイマー割り込みなどを検出して定期的に不正行為検出を行う方式でもよい。この場合、プログラム実行環境から不正行為検出部8に不正行為検出要求を出す必要がない。不正行為を検出した場合(ステップS8)、即座に、不正行為検出部8が強制終了シグナルを耐タンパー化プログラムコード生成部6に送ってこれを起動し、一方、プログラム実行環境により実行中のプログラムを強制終了させる(ステップS9)。
この不正処理検出処理は、次の手順で実行される。
(1)デバッガの起動検出、耐タンパー化プログラム内のブレークポイント(Break Point)検出、メモリ不正読み出しの検出などの処理を任意に行い、不正な解析が行われていないかをチェックする(ステップS8)。
(2)不正が検出されなければ、プログラム実行環境にOKを返し、処理を続行する。
(3)一方、何らかの不正を検出した場合、耐タンパー化プログラムコード生成部6を、別プロセスとして非同期で起動する(ステップS11)。なお、検出した不正行為の内容や、検出場所などの情報をパラメータとして耐タンパー化プログラムコード生成部6に渡して、起動させるようにしてもよい。
(4)また、自分自身を強制終了する(ステップS9)。このため、耐タンパー化プログラムも同時に終了することになる。なお、プログラム実行環境にNGを返して、プログラム実行環境で終了処理を行ってもよい。
(1)デバッガの起動検出、耐タンパー化プログラム内のブレークポイント(Break Point)検出、メモリ不正読み出しの検出などの処理を任意に行い、不正な解析が行われていないかをチェックする(ステップS8)。
(2)不正が検出されなければ、プログラム実行環境にOKを返し、処理を続行する。
(3)一方、何らかの不正を検出した場合、耐タンパー化プログラムコード生成部6を、別プロセスとして非同期で起動する(ステップS11)。なお、検出した不正行為の内容や、検出場所などの情報をパラメータとして耐タンパー化プログラムコード生成部6に渡して、起動させるようにしてもよい。
(4)また、自分自身を強制終了する(ステップS9)。このため、耐タンパー化プログラムも同時に終了することになる。なお、プログラム実行環境にNGを返して、プログラム実行環境で終了処理を行ってもよい。
前記不正行為の検出処理後、耐タンパー化プログラムコード生成部6は、次の耐タンパー化プログラム生成処理を実行する(ステップS12)。
(1)まず、耐タンパー化前プログラム記憶部3に暗号化して保持している耐タンパー化前プログラムを復号する。
(2)また、更新対象プログラムの耐タンパー化のために、(イ)暗号方式変更(DES->AESなど)、(ロ)暗号鍵変更、(ハ)メモリ配置変更(各モジュールのロード位置、データの格納位置などの変更)、などの処理をランダムに行う。なお、 再耐タンパー化を行う対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。また、不正行為を検出したモジュールだけでもよい。不正行為検出部8から渡された不正行為に関する情報がある場合、それに応じた更新処理を行う。
(3)次に、認証情報の生成処理を行う。実行する耐タンパー化プログラムが、更新処理部4で生成された正しいプログラムかどうかを認証するために、生成したプログラムのチェックサム(CRC、MD5ハッシュ値、SHA-1ハッシュ値など)を生成して、耐タンパー化プログラム認証部9に保持しておく。この処理の対象も、プログラム全体でもよいし、秘密のデータやアルゴリズムを格納している部分のみでもよい。また、不正行為を検出したモジュールだけでもよい。
(4)さらに、プログラム更新処理を所定の同期タイミングにて呼び出す(同期:関数コール。ステップS13)。
(1)まず、耐タンパー化前プログラム記憶部3に暗号化して保持している耐タンパー化前プログラムを復号する。
(2)また、更新対象プログラムの耐タンパー化のために、(イ)暗号方式変更(DES->AESなど)、(ロ)暗号鍵変更、(ハ)メモリ配置変更(各モジュールのロード位置、データの格納位置などの変更)、などの処理をランダムに行う。なお、 再耐タンパー化を行う対象はプログラム全体でもよいし、秘密のデータやアルゴリズム部分だけでもよい。また、不正行為を検出したモジュールだけでもよい。不正行為検出部8から渡された不正行為に関する情報がある場合、それに応じた更新処理を行う。
(3)次に、認証情報の生成処理を行う。実行する耐タンパー化プログラムが、更新処理部4で生成された正しいプログラムかどうかを認証するために、生成したプログラムのチェックサム(CRC、MD5ハッシュ値、SHA-1ハッシュ値など)を生成して、耐タンパー化プログラム認証部9に保持しておく。この処理の対象も、プログラム全体でもよいし、秘密のデータやアルゴリズムを格納している部分のみでもよい。また、不正行為を検出したモジュールだけでもよい。
(4)さらに、プログラム更新処理を所定の同期タイミングにて呼び出す(同期:関数コール。ステップS13)。
そして、最後に、耐タンパー化プログラムコード書き換え部7は、プログラムコードの書き換えを行う(ステップS14)。ここでは、更新するプログラムが保存されている耐タンパー化プログラム記憶部10の領域(フラッシュROMなどの書き換え可能メモリ)をクリアし、生成した耐タンパー化プログラムを書き込む(ステップS14)。書き込み終了後、正しく書き込めているかを否かを検査する。
なお、前記処理では不正行為の検出時にプログラムの更新処理を実行する場合を説明したが、この更新処理を不正行為の検出の有り無しに関係なく定期的に行うことで、さらに安全性を高めることができる。この場合のプログラム実行装置の構成を図3に示す。図1のプログラム実行装置の構成と異なる点は、図3のプログラム実行装置には検出処理部5がないことである。この構成が、本発明のプログラム実行装置における最少の構成となり、生産コストを抑えることができる。
また、不正行為検出時の分析は、初めは最低限の耐タンパー効果が得られるものに対して行い、その後は不正行為を解析して、この解析結果に応じた更新プログラムの作成を行うことが望ましい。工場出荷時に余分な不正行為対策を含めないようにすることで、善意のユーザが利用する際に処理速度を犠牲にするのを回避することができる。
さらに、更新プログラムを予め任意のタイミングで生成して保持しておくことにより、余分なメモリ領域の確保が必要となるものの、更新にかかる時間を短縮することができる。
また、耐タンパー更新プログラム1に、ネットワーク上のサーバや外部記憶装置から配信される耐タンパー化前プログラム、更新処理部4用のプログラム、または、検出処理部5用のプログラムを、をダウンロードし、そのダウンロードしたプログラムを用いて耐タンパー更新プログラムにおける各部のプログラムを更新するようにしても良い。この場合のプログラム実行装置の構成を図4に示す。図1のプログラム実行装置の構成と異なる点は、図4のプログラム実行装置にプログラムをネットワークを経由してダウンロードし、そのプログラムにより耐タンパー化前プログラム記憶部3、更新処理部4または検出処理部5のプログラムを更新するプログラム取得部11を新たに設けたことである。この構成により、耐タンパー化対象プログラム、耐タンパー化手法、検出処理の変更、追加を行うことができ、セキュリティをさらに向上させることができる。
(第2実施形態)
第1実施形態においては、一つの耐タンパー化プログラムを監視する場合について説明したが、複数の耐タンパー化プログラムを同時に監視する場合にも適用できる。
第1実施形態においては、一つの耐タンパー化プログラムを監視する場合について説明したが、複数の耐タンパー化プログラムを同時に監視する場合にも適用できる。
図5は、本発明の第2実施形態によるプログラム実行装置の構成図を示す。この場合には、耐タンパー化プログラム記憶部10に記憶した耐タンパー化プログラム1と耐タンパー化前プログラム記憶部3に記憶した耐タンパー化前プログラム1、耐タンパー化プログラム記憶部10に記憶した耐タンパー化プログラム2と耐タンパー化前プログラム記憶部3に記憶した耐タンパー化プログラム2、とをそれぞれ対応させて、耐タンパー化プログラム1、耐タンパー化プログラム2についてそれぞれ、第1実施形態で述べたプログラムの自動更新の処理を行う。
この構成により、複数の耐タンパー化プログラムのセキュリティ強度を高めることができる。
また、複数の耐タンパー化プログラム毎に、セキュリティレベルを表す耐タンパー化レベルを設定しておいても良い。この場合のプログラム実行装置の構成を図6に示す。耐タンパー化プログラム生成部6は、耐タンパー化プログラム生成処理を実行する際、まず、耐タンパー化前プログラム記憶部3から更新対象の耐タンパー化前プログラムと、そのプログラムに対応する耐タンパー化レベルを読み出す。そして、その読み出した耐タンパー化レベルに応じた耐タンパー化手法により、当該耐タンパー化前プログラムの耐タンパー化処理を行う。これにより、耐タンパー化対象プログラムの性質に合った耐タンパー化のレベルで効果的に耐タンパー化処理を施すことができる。
(第3実施形態)
第1実施形態においては、検出処理部5を、耐タンパー更新プログラム1に設けた場合について説明したが、図7の本発明の第3実施形態によるプログラム実行装置の構成図に示すように、耐タンパー化プログラム認証部9を耐タンパー更新プログラム1に、不正行為検出部5をプログラム実行環境に設けてもよい。
第1実施形態においては、検出処理部5を、耐タンパー更新プログラム1に設けた場合について説明したが、図7の本発明の第3実施形態によるプログラム実行装置の構成図に示すように、耐タンパー化プログラム認証部9を耐タンパー更新プログラム1に、不正行為検出部5をプログラム実行環境に設けてもよい。
図8は、本発明の第3実施形態によるプログラムの自動更新の処理手順を示すシーケンスである。この実施形態によれば、不正行為検出のために耐タンパー更新プログラム1に検出処理を移行させる必要がなくなる。すなわち、図2におけるステップS7、S10の処理が不要となる。また、第1実施形態では、ステップS9の処理において、不正行為検出部8が強制終了しているが、第3実施形態では、プログラム実行環境が強制終了を行う。ステップS7、S9、S10の処理以外の処理は、第1実施形態と同様であるため、説明を省略する。
耐タンパー化更新プログラムは処理が重いという前提で設けられているため、処理が軽くなるという利点が得られる。また、不正行為検出時のプログラム実行環境によるプログラムの処理状態が分かるので、更新すべき領域を特定し易くなる。
(第4実施形態)
図9に示す本発明の第4実施形態によるプログラム実行装置は、図5に示した不正行為検出部8を含む不正行為検出部5を、プログラム実行環境内において、耐タンパー化プログラムとは独立して設けた例を示す。この例では、不正行為検出部8も耐タンパー化しておき、前記耐タンパー化プログラムに対して行われるのと同様の不正行為検出プログラムの認証および更新を行う。なお、このほかの動作は、第3実施形態において説明したものと同様であるので、ここではその重複する説明を省略する。
図9に示す本発明の第4実施形態によるプログラム実行装置は、図5に示した不正行為検出部8を含む不正行為検出部5を、プログラム実行環境内において、耐タンパー化プログラムとは独立して設けた例を示す。この例では、不正行為検出部8も耐タンパー化しておき、前記耐タンパー化プログラムに対して行われるのと同様の不正行為検出プログラムの認証および更新を行う。なお、このほかの動作は、第3実施形態において説明したものと同様であるので、ここではその重複する説明を省略する。
また、不正行為検出部8は、タイマー等で定期的に耐タンパー化プログラムへの不正アクセスを監視するようにしている。これによれば、第3実施形態に比べて、不正行為検出部8の不正行為検出プログラムのみの更新が可能となる。また、この更新が耐タンパー化プログラムとは独立して行われるので、この耐タンパー化プログラムへの影響を回避できる。
(第5実施形態)
図10に示す本発明の第5実施形態によるプログラム実行装置は、第4実施形態の変形例であり、不正行為検出部5が複数の耐タンパー化プログラム(耐タンパー化プログラム1および2)を同時に監視する場合を示す。これにより、複数の耐タンパー化プログラムのセキュリティ強度を高めることができる。なお、このほかの動作は、第2実施形態、第4実施形態について述べたものと同様であるので、その重複する説明を省略する。
図10に示す本発明の第5実施形態によるプログラム実行装置は、第4実施形態の変形例であり、不正行為検出部5が複数の耐タンパー化プログラム(耐タンパー化プログラム1および2)を同時に監視する場合を示す。これにより、複数の耐タンパー化プログラムのセキュリティ強度を高めることができる。なお、このほかの動作は、第2実施形態、第4実施形態について述べたものと同様であるので、その重複する説明を省略する。
以上のように、本発明では、プログラム実行環境による耐タンパー化プログラムの実行中に、該耐タンパー化プログラムの解析または改ざんを含む不正行為を検出したとき、プログラム実行環境の動作を停止し、新しい方式の耐タンパー化プログラムにプログラムコードを書き替えることとしている。これにより、他人のプログラムの繰返し実行による解析行為を確実に防止できる。
本発明のプログラム実行装置、プログラム実行方法、および、プログラムは、他人によるプログラムの繰返し実行による解析行為を確実に防止できるという効果を有し、暗号化されたプログラムを、新しい耐タンパー化プログラムに自動更新するプログラム実行装置およびプログラム実行方法等として有用である。
1 耐タンパー更新プログラム
3 耐タンパー化前プログラム記憶部
4 更新処理部
5 検出処理部
6 耐タンパー化プログラムコード生成部
7 耐タンパー化プログラムコード書き換え部
8 不正行為検出部
9 耐タンパー化プログラム認証部
10 耐タンパー化プログラム記憶部
11 プログラム取得部
20 ネットワーク上のサーバ/外部記憶装置
3 耐タンパー化前プログラム記憶部
4 更新処理部
5 検出処理部
6 耐タンパー化プログラムコード生成部
7 耐タンパー化プログラムコード書き換え部
8 不正行為検出部
9 耐タンパー化プログラム認証部
10 耐タンパー化プログラム記憶部
11 プログラム取得部
20 ネットワーク上のサーバ/外部記憶装置
Claims (10)
- 耐タンパー化プログラムを更新する耐タンパー更新プログラムと、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行装置であって、
前記耐タンパー更新プログラムは、
前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムを記憶する耐タンパー化前プログラム記憶部と、
前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを耐タンパー化する耐タンパー化プログラムコード生成部と、
前記耐タンパー化プログラムコード生成部により生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える耐タンパー化プログラムコード書き換え部と、
を有するプログラム実行装置。 - 請求項1記載のプログラム実行装置であって、
前記耐タンパー更新プログラムは、
耐タンパー化プログラムに対する不正行為を検出する不正行為検出部と、
前記不正行為検出部により不正行為を検出した場合、別の耐タンパー化プログラムを生成する耐タンパー化プログラムコード生成部と、
を有するプログラム実行装置。 - 請求項2記載のプログラム実行装置であって、
前記耐タンパー更新プログラムは、
前記耐タンパー化プログラムに対して、実行の可否を認証する耐タンパー化プログラム認証部を備え、
前記耐タンパー化プログラムコード生成部が、耐タンパー化プログラムのチェックサムを生成し、
前記耐タンパー化プログラム認証部が、前記耐タンパー化プログラムコード生成部により予め生成したチェックサムと、前記耐タンパー化プログラムから算出したチェックサムと、に基づいて、前記耐タンパー化プログラムの実行の可否を認証し、
前記耐タンパー化プログラム認証部により実行可と認証した耐タンパー化プログラムを実行する、
プログラム実行装置。 - 請求項1から3のいずれか1項に記載のプログラム実行装置であって、
前記不正行為検出部は、複数の耐タンパー化プログラム毎に不正行為を検出するプログラム実行装置。 - 請求項1から4のいずれか1項に記載の実行装置であって、
前記耐タンパー更新プログラムは、
外部装置から各種プログラムをダウンロードするプログラム取得部を備え、
少なくとも、前記耐タンパー化前プログラム記憶部は、前記プログラム取得部によりダウンロードしたプログラムを記憶し、前記耐タンパー化プログラムコード生成部、前記耐タンパー化プログラムコード書き換え部、前記不正行為検出部または前記耐タンパー化プログラム認証部は、前記プログラム取得部によりダウンロードしたプログラムに基づいて各部各々の処理を行う、
プログラム実行装置。 - 請求項1から5のいずれか1項に記載のプログラム実行装置であって、
前記耐タンパー化前プログラム記憶部は、前記耐タンパー化プログラムの耐タンパー化する前のオリジナルプログラムに対応させて、耐タンパー化の度合いを指定する耐タンパー化レベルを記憶し、
前記耐タンパー化プログラムコード生成部は、前記耐タンパー化前プログラム記憶部に記憶された前記オリジナルプログラムを、前記耐タンパー化レベルに応じて耐タンパー化する、
プログラム実行装置。 - 耐タンパー化プログラムを更新する耐タンパー更新プログラムと、1つかそれ以上の耐タンパー化プログラムから構成されるプログラムと、を実行するプログラム実行方法であって、
前記耐タンパー化プログラムの耐タンパー化する前の、予め記憶しておいたオリジナルプログラムを、耐タンパー化する生成ステップと、
前記生成した別の耐タンパー化プログラムを、前記耐タンパー化プログラムと書き換える書き換えステップと、
を有するプログラム実行方法。 - 請求項7記載のプログラム実行方法であって、
耐タンパー化プログラムに対する不正行為を検出する不正行為検出ステップと、
前記不正行為を検出した場合、前記別の耐タンパー化プログラムを生成する生成ステップと、
を有するプログラム実行方法。 - 請求項8記載のプログラム実行方法であって、
耐タンパー化プログラムのチェックサムを算出する算出ステップと、
前記生成ステップにおいて予め生成しておいた耐タンパー化プログラムのチェックサムと、前記算出ステップにおいて算出したチェックサムと、に基づいて、耐タンパー化プログラムの実行の可否を認証する認証ステップと、を有し、
前記認証ステップにより実行可と認証した耐タンパー化プログラムを実行する、プログラム実行方法。 - 請求項7から9のいずれか1項に記載のプログラム実行方法を、コンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005073001A JP2006259848A (ja) | 2005-03-15 | 2005-03-15 | プログラム実行装置、プログラム実行方法、および、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005073001A JP2006259848A (ja) | 2005-03-15 | 2005-03-15 | プログラム実行装置、プログラム実行方法、および、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006259848A true JP2006259848A (ja) | 2006-09-28 |
Family
ID=37099076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005073001A Withdrawn JP2006259848A (ja) | 2005-03-15 | 2005-03-15 | プログラム実行装置、プログラム実行方法、および、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006259848A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009020778A (ja) * | 2007-07-13 | 2009-01-29 | Panasonic Corp | 違法コピーメディアの排除方法 |
JP2011070427A (ja) * | 2009-09-25 | 2011-04-07 | Nomura Research Institute Ltd | セキュリティ維持支援システムおよび情報端末 |
JP2013069010A (ja) * | 2011-09-21 | 2013-04-18 | Mega Chips Corp | 情報処理システム、情報処理装置、外部記憶媒体、プログラム、記憶媒体、及び、ファイル管理方法 |
JP2016010031A (ja) * | 2014-06-25 | 2016-01-18 | Kddi株式会社 | 遠隔完全性検証システム、方法及びプログラム |
JP2018050228A (ja) * | 2016-09-23 | 2018-03-29 | 東芝テック株式会社 | 決済端末 |
JP2018509723A (ja) * | 2015-03-13 | 2018-04-05 | エバースピン コーポレーション | 動的なセキュリティーモジュール端末装置及びその駆動方法 |
-
2005
- 2005-03-15 JP JP2005073001A patent/JP2006259848A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009020778A (ja) * | 2007-07-13 | 2009-01-29 | Panasonic Corp | 違法コピーメディアの排除方法 |
JP2011070427A (ja) * | 2009-09-25 | 2011-04-07 | Nomura Research Institute Ltd | セキュリティ維持支援システムおよび情報端末 |
JP2013069010A (ja) * | 2011-09-21 | 2013-04-18 | Mega Chips Corp | 情報処理システム、情報処理装置、外部記憶媒体、プログラム、記憶媒体、及び、ファイル管理方法 |
JP2016010031A (ja) * | 2014-06-25 | 2016-01-18 | Kddi株式会社 | 遠隔完全性検証システム、方法及びプログラム |
JP2018509723A (ja) * | 2015-03-13 | 2018-04-05 | エバースピン コーポレーション | 動的なセキュリティーモジュール端末装置及びその駆動方法 |
JP2018511133A (ja) * | 2015-03-13 | 2018-04-19 | エバースピン コーポレーション | 動的なセキュリティーモジュールサーバー装置及びその駆動方法 |
JP2018511899A (ja) * | 2015-03-13 | 2018-04-26 | エバースピン コーポレーション | 動的なセキュリティーモジュール生成方法及び生成装置 |
JP2018050228A (ja) * | 2016-09-23 | 2018-03-29 | 東芝テック株式会社 | 決済端末 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840430B (zh) | Plc的安全处理单元及其总线仲裁方法 | |
JP6067449B2 (ja) | 情報処理装置、情報処理プログラム | |
CN110990084B (zh) | 芯片的安全启动方法、装置、存储介质和终端 | |
US8533492B2 (en) | Electronic device, key generation program, recording medium, and key generation method | |
EP2420950B1 (en) | Information processing system, information processing method, information processing program, computer readable medium and computer data signal | |
KR101427646B1 (ko) | 펌웨어의 무결성 검사 방법 및 장치 | |
US20080235791A1 (en) | System and Method for Distributed Module Authentication | |
US20060137016A1 (en) | Method for blocking unauthorized use of a software application | |
EP2172866A1 (en) | Information processor and tampering verification method | |
EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
US20070083768A1 (en) | Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, program loading method, and integrated circuit | |
JP2006259848A (ja) | プログラム実行装置、プログラム実行方法、および、プログラム | |
JP2000293370A (ja) | コンピュータシステム、コンピュータプログラムの実行方法及びコンピュータプログラム記録媒体 | |
JPH11328032A (ja) | ソフトウェアの不正利用防止システム | |
JP2017011491A (ja) | 認証システム | |
JP2007310688A (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
KR101235517B1 (ko) | 메모리에서 실행되는 컴퓨터 프로그램의 변조 탐지 방법 | |
JP2007072969A (ja) | 動作履歴保護装置及び動作履歴保護プログラム | |
CN114816549B (zh) | 一种保护bootloader及其环境变量的方法及系统 | |
EP0962850A2 (en) | A method for protecting embedded system software and embedded system | |
CN110334532B (zh) | 文件的加密、解密处理方法及加解密系统 | |
JP2001195247A (ja) | ソフトウェアの安全性を検証し保証するシステム及び方法 | |
CN106415565B (zh) | 保护软件项目 | |
CN108228219B (zh) | 一种带外刷新bios时验证bios合法性的方法及装置 | |
US9213864B2 (en) | Data processing apparatus and validity verification method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20071113 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071120 |
|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080603 |