JP2008084275A - ソフトウェアの改ざん監視装置および改ざん監視方法 - Google Patents

ソフトウェアの改ざん監視装置および改ざん監視方法 Download PDF

Info

Publication number
JP2008084275A
JP2008084275A JP2006266699A JP2006266699A JP2008084275A JP 2008084275 A JP2008084275 A JP 2008084275A JP 2006266699 A JP2006266699 A JP 2006266699A JP 2006266699 A JP2006266699 A JP 2006266699A JP 2008084275 A JP2008084275 A JP 2008084275A
Authority
JP
Japan
Prior art keywords
code
checker
software
execution
monitoring
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.)
Granted
Application number
JP2006266699A
Other languages
English (en)
Other versions
JP4923925B2 (ja
Inventor
Kiyonori Morioka
清訓 森岡
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006266699A priority Critical patent/JP4923925B2/ja
Publication of JP2008084275A publication Critical patent/JP2008084275A/ja
Application granted granted Critical
Publication of JP4923925B2 publication Critical patent/JP4923925B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】実際に実行中のプログラムコードの改ざんを監視すること。改ざんの監視を行うための負荷を分散させること。
【解決手段】監視対象であるプログラムコードに1つ以上のチェッカコード41を挿入したソフトウェアコードを作成し、監視装置1を接続したPC(パーソナルコンピュータ)等がそのソフトウェアコードを実行している最中に、監視装置1によりチェッカコード41を活性化させる。ソフトウェアコードを実行中のPC等が、活性化されたチェッカコード41により指定された処理を実行すると(ステップS5)、監視装置1は、そのチェッカコード41により指定された処理が実行されたことを確認し、プログラムコードの一部または全部について改ざんの有無を検出する。
【選択図】図5

Description

この発明は、ソフトウェアの改ざん監視装置および改ざん監視方法に関し、例えばPC(パーソナルコンピュータ)等の仕様が公開された計算機システムにおいて実行されるソフトウェアの改ざんを監視する技術に関する。
従来、PC上のプログラムコードにより実現した監視プログラムや、PCの汎用バス等に設置した監視装置からPCのメインメモリを監視することにより、ソフトウェアの改ざんを検出する装置が公知である。このような装置では、改ざんを防止する対象であるソフトウェアがPCで実行されているときにメインメモリに動的に生成されるデータ領域を外部から監視するのは困難であるため、静的なプログラムコードと静的なデータを監視している。
例えば、次のようなソフトウェアの改ざん検出装置が公知である。少なくともプログラムコードを含む当該プログラムコードに係る処理を実行する前に確定した情報が記憶され当該情報の改ざんが定期的に検査される静的記憶領域と、プログラムコードに係る処理の実行に伴って変更され得る情報が記憶される動的記憶領域とを有する記憶手段と、上記記憶手段における静的記憶領域の範囲を示すアドレス情報を記憶する領域情報記憶手段と、上記動的記憶領域に記憶されたアドレス情報を参照して、上記静的記憶領域に記憶された情報に基づく処理を実行する場合に、上記動的記憶領域から参照したアドレス情報が上記領域情報記憶手段に記憶されたアドレス情報で示される静的記憶領域の範囲内を指定するものであるか否かを判定し、上記動的記憶領域に記憶された情報の改ざんを検出する検出手段とを備えることを特徴とする(例えば、特許文献1参照。)。
特開2006−106956号公報
しかしながら、上述したように静的なプログラムコードと静的なデータを監視しているだけでは、その監視しているプログラムコードやデータが実際にPCで実行されているコードやデータであることを識別するのは困難である。そのため、ソフトウェアの改ざん技術がますます高度化した場合に、監視プログラムや監視装置に、改ざんされていないプログラムコードを監視させながら、実際にPCで実行されるプログラムコードを改ざんして別のコード領域で実行するというようなことが考えられる。この場合には、監視プログラムや監視装置に気づかれないように、ソフトウェアの改ざんを行うことが可能となってしまう。
また、上記特許文献1に開示された装置では、ソースコード上で分岐や復帰の場所にマクロなどで不正コード検出機構を挿入して改ざんの有無を検出する。しかし、ソースコードに分岐や復帰の箇所が多い場合、すべての分岐や復帰の箇所で改ざんの有無を検出すると、その分、主となるプログラムの実行に要する時間が増えてしまい、ソフトウェアの処理性能の低下を招くという問題点がある。
この発明は、上述した従来技術による問題点を解消するため、実際に実行中のプログラムコードの改ざんを監視することができるソフトウェアの改ざん監視装置および改ざん監視方法を提供することを目的とする。また、この発明は、実行中のプログラムコードの改ざんを監視する際に、改ざんの監視を行うための負荷を分散させることができるソフトウェアの改ざん監視装置および改ざん監視方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法は、PC等の他の装置に監視装置を接続する。また、監視対象であるプログラムコードに1つ以上のチェッカコードを挿入したソフトウェアコードを作成し、PC等がそのソフトウェアコードを実行している最中に、監視装置によりチェッカコードを活性化させる。ソフトウェアコードを実行中のPC等が、活性化されたチェッカコードにより指定された処理を実行すると、監視装置は、そのチェッカコードにより指定された処理が実行されたことを確認し、プログラムコードの一部または全部について改ざんの有無を検出する。監視装置がチェッカコードを活性化させる際、チェッカコードの実行状況に応じて活性化の頻度を調節するようにしてもよい。
この発明によれば、監視対象であるプログラムコードに挿入されたチェッカコードをPC等が実行したことを確認することによって、PC等で実際に実行中のプログラムコードを監視することができる。また、実行頻度の高いチェッカコードについては、その活性化の頻度を下げることによって、実行中のプログラムコードを監視するための負荷を分散させることができる。
本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法によれば、PC等で実際に実行中のプログラムコードの改ざんを監視することができるという効果を奏する。また、この発明によれば、PC等で実行中のプログラムコードの改ざんを監視する際に、改ざんの監視を行うための負荷を分散させることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法の好適な実施の形態を詳細に説明する。
(ソフトウェア改ざん監視装置のハードウェア構成)
まず、この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成を示すブロック図である。
ソフトウェア改ざん監視装置は、図1に示す監視装置1と、図示しないソフトウェアコードから構成される。監視装置1は、監視装置1以外の図示しない他の装置、例えばPC等に接続される。PC等は、この監視装置1とともに提供されるソフトウェアコードを実行する。例えば、監視装置1は、PC等のPCIバス等の汎用バスに接続されて用いられる。そして、監視装置1は、PC等が実行中のプログラムコードを監視する。ソフトウェアコードは、この監視装置1が監視する対象であるプログラムコードに1つ以上のチェッカコードが挿入されたものである。
図1に示すように、監視装置1は、CPU11、DMAC(ダイレクト・メモリ・アクセス・コントローラ)12、I/O(入出力インタフェース)13、ROM14およびRAM15を備えている。これらの各構成部は、バス10によって互いに接続されている。CPU11は、監視装置1の全体の制御を司る。DMAC12は、監視装置1と、PC等の後述する起動判定データの格納メモリとの間で、PC等のCPUを介さずに行うデータ転送を制御する。なお、監視装置1がバスマスタ方式でない場合には、監視装置1にDMAC12がないので、監視装置1とPC等の間のデータ転送は、PC等のDMACにより制御される。
ROM14は、CPU11が監視装置1を制御する際に実行するプログラムを記憶している。RAM15は、CPU11のワークエリアとして使用される。また、RAM15は、後述するチェッカ位置/頻度データベースを記憶する。I/O13は、PC等の例えばPCIバスに接続され、PC等と監視装置1の内部とのインタフェースを司り、PC等との間のデータの入出力を制御する。
なお、図1には、PC等で実行中のソフトウェアコードを監視するのに必要な構成のみが示されており、その他の構成は省略されている。例えば、監視装置1およびその監視対象であるプログラムコードがデジタル・テレビジョン放送の受信システムである場合、監視装置1には、図1に示す構成以外に、エンコーダ機能やチューナ機能などを実現する回路などが設けられる。
(ソフトウェア改ざん監視装置の機能的構成)
次に、この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成について説明する。図2は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成を示すブロック図である。図2に示すように、監視装置1は、入出力部21、復号処理部22、変換処理部23、起動管理部24、DMA部25、実行確認部26、頻度管理部27および改ざん検出部28を備えている。
入出力部21は、PC等から暗号化されたソフトウェアコードを受け取り、それを復号処理部22に渡す。復号処理部22は、入出力部21から渡されたソフトウェアコードを復号化し、それを変換処理部23に渡す。変換処理部23は、復号処理部22から渡されたソフトウェアコードを、PC等の実行可能な形式に変換する。実行形式に変換されたソフトウェアコードは、入出力部21を介してPC等へ転送され、PC等のメインメモリに展開される。つまり、PC等で実行されるソフトウェアコードは、暗号化されてPC等のハードディスクなどにインストールされており、起動時に監視装置1において復号化され、PC等のメインメモリに展開されて初めて実行可能な状態になる。
また、変換処理部23は、ソフトウェアコードの展開時に、チェッカコードの挿入位置を抽出し、チェッカ位置/頻度データベース29を作成する。このときのチェッカ位置/頻度データベース29には、各チェッカコードの挿入位置情報と、各チェッカコードを活性化させる頻度の初期値(設計値)が格納される。なお、チェッカ位置/頻度データベース29として、予め、ソフトウェアコードの設計段階において、各チェッカコードの挿入位置と活性化頻度の初期値を格納したデータベースを用意しておいてもよい。このチェッカ位置/頻度データベース29は、上述したようにRAM15に記憶されるが、このRAM15の記憶容量が少ない場合には、チェッカ位置/頻度データベース29を暗号化してPC等のハードディスクなどに記憶させてもよい。
起動管理部24は、チェッカ位置/頻度データベース29の情報に基づいて、起動判定データの書き換え要求を出力する。起動判定データは、PC等の所定のメモリ領域に格納されている。DMA部25は、起動管理部24から書き換え要求を受け取ると、入出力部21を介して、PC等の所定のメモリ領域に直接アクセスし、起動判定データの書き換えを行う。監視装置1により起動判定データが書き換えられると、その書き換えられた起動判定データに対応するチェッカコードが活性化されたことになる。起動判定データとしては、例えばフラグが用いられる。チェッカコードは、そのチェッカコードに対応するフラグが立っていれば活性化状態にあり、フラグが寝ていれば非活性化状態にある。
実行確認部26は、入出力部21を介して、活性化されたチェッカコードがPC等で実行されたことを確認する。頻度管理部27は、各チェッカコードの活性化頻度を管理する。改ざん検出部28は、PC等でチェッカコードが実行されたときに、その実行結果に基づいてプログラムコードの一部または全部について改ざんの有無を検出する。
上述した復号処理部22、変換処理部23、起動管理部24、実行確認部26、頻度管理部27および改ざん検出部28は、具体的には、例えば、図1に示したROM14やRAM15に記録されたプログラムを、CPU11が実行することによって、その機能を実現する。また、入出力部21およびDMA部25は、それぞれ、I/O13およびDMAC12により、その機能を実現する。
(製品開発時からアプリケーション実行時までの流れの概略の第1の例)
次に、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略について説明する。図3は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第1の例を示す説明図である。
図3に示すように、まず、製品開発時に、開発者が、主プログラムコード31にチェッカ挿入情報としてチェッカ挿入位置・頻度指示情報32を埋め込む処理を行い、暗号化して、暗号化ソフトウェアコード33を作成する。ここで、主プログラムコード31は、監視装置1により監視する対象のプログラムコードである。チェッカ挿入位置・頻度指示情報32は、主プログラムコード31に挿入される各チェッカコードの挿入位置と、各チェッカコードを活性化させる頻度を指示する情報である。
チェッカ挿入位置・頻度指示情報32の埋め込み処理によって、主プログラムコード31の、チェッカ挿入位置・頻度指示情報32により指定された位置に、指定された頻度で活性化されるチェッカコードが挿入される。ソフトウェア改ざん監視装置のユーザには、この暗号化ソフトウェアコード33と監視装置1がセットにされて提供される。
次いで、ユーザが、主プログラムコード31を実行するPC等に監視装置1を接続し、暗号化ソフトウェアコード33をPC等のハードディスク等の記憶装置34にインストールする。ユーザがPC等を操作してアプリケーションを起動すると、監視装置1は、PC等の記憶装置34から暗号化ソフトウェアコード33を読み出して復号化する。そして、監視装置1は、復号化したソフトウェアコードを実行形式に変換し、PC等のメインメモリ35に実行形式のソフトウェアコード36を展開する。また、監視装置1は、実行形式のソフトウェアコード36を展開する際に、埋め込まれたチェッカコードを抽出し、チェッカ位置/頻度データベース29として、チェッカ位置/初期頻度リストを作成する。
ここで、初期頻度とは、各チェッカコードを活性化させる頻度の初期値(設計値)のことである。なお、図3では、便宜上、チェッカ位置/頻度データベース29が監視装置1の外に置かれているが、実際には、チェッカ位置/頻度データベース29は、監視装置1の内部に構築される。ただし、監視装置1の内部に十分な記憶容量がない場合には、チェッカ位置/頻度データベース29がPC等のハードディスク等に格納される場合もある。
次いで、アプリケーションの実行時には、監視装置1は、チェッカ位置/頻度データベース29の情報に基づいて、PC等に対して、PC等で実行中のソフトウェアコード36に埋め込まれているチェッカコードの起動指示を与え、そのチェッカコードを活性化する。PC等が、活性化されたチェッカコードを実行し、そのチェッカコードにより指定された処理を実行すると、監視装置1にチェック結果が通知される。従って、監視装置1は、PC等で実際に実行中のプログラムコードを監視し、そのプログラムコードの改ざんを検出することができる。また、監視装置1は、チェック結果に基づいて、チェッカ位置/頻度データベース29の頻度に関する情報を更新する。
ここで、監視装置1へチェック結果を通知する手段としては、PC等がデバイスドライバ等を通じて監視装置1に実行通知を渡す構成としてもよい。あるいは、チェッカコードの実行によってPC等の特定のメモリ領域の値が書き換わり、そのメモリ領域の値を監視装置1がポーリングにより定期的に監視することによって、監視装置1がチェッカコードの実行を知るようにしてもよい。この場合、チェッカコードの実行により値が書き換わるメモリ領域として、例えば起動判定データとは異なるフラグを用いることができる。
(製品開発時からアプリケーション実行時までの流れの概略の第2の例)
図4は、この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第2の例を示す説明図である。図4に示すように、この第2の例が、上述した第1の例と異なるのは、製品開発時に、主プログラムコード31にチェッカ挿入位置・頻度指示情報32を埋め込む処理を行わないことである。
つまり、製品開発時には、主プログラムコード31とチェッカ挿入情報・頻度指示情報37を別々に暗号化して、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39を作成する。チェッカ挿入情報・頻度指示情報37は、第1の例のチェッカ挿入位置・頻度指示情報32に相当する。第2の例では、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39と監視装置1がセットにされてソフトウェア改ざん監視装置のユーザに提供される。
従って、ユーザは、暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39をPC等の記憶装置34にインストールすることになる。ユーザがアプリケーションを起動すると、監視装置1は、PC等の記憶装置34から読み出した暗号化主プログラムコード38と暗号化チェッカ挿入情報・頻度指示情報39を復号化し、主プログラムコード31にチェッカコードを埋め込み、それを実行形式に変換してPC等のメインメモリ35に展開する。これ以降は、上述した第1の例と同じである。
なお、アプリケーションの実行時にチェッカコードの挿入位置が毎回異なるように、監視対象のプログラムコードにチェッカコードを挿入するようにしてもよい。この場合には、監視対象のプログラムコードにおける絶対アドレス参照および相対アドレス参照を予め抽出したデータベースを作成しておく。そして、そのデータベースに基づいて命令コードレベルのリロケートを可能にしておき、任意のコード列の挿入によって生じるアドレス参照のズレを解決する手段を用いて、アプリケーションの起動時にプログラムコードの任意の場所にチェッカコードを挿入しながら、PC等のメインメモリに展開する。このようなことを可能とする具体的な技術については、詳細な説明を省略するが、本発明者が先に出願した特開2005−85188号公報に開示された技術を適用することにより実現できる。
(チェッカコードの構造)
次に、チェッカコードの構造について説明する。図5は、この発明の実施の形態にかかるソフトウェア改ざん監視装置のチェッカコードのプログラムコードを示す説明図である。図5に示すように、チェッカコード41は、起動判定データ(起動判定フラグ)を調査する工程(ステップS1)と、その調査結果に基づいて起動判定処理を行う工程(ステップS2)と、起動判定処理の結果、フラグが寝ている場合(ステップS2:No)に何もしない、すなわちスルーして(ステップS3)、チェッカコード41の実行を終了する工程(ステップS4)を有する。
また、チェッカコード41は、起動判定処理の結果、フラグが立っている場合(ステップS2:Yes)にこのチェッカコード41において指定された処理を行い(ステップS5)、その後チェッカコードの実行を終了する工程(ステップS4)を有する。ステップS5を経るパスが第1または第3の実行パスに相当し、ステップS3を経るパスが第2の実行パスに相当する。
ここで、ステップS5の処理を実行するためのプログラムは、(1)チェッカコード41が実行されたことを監視装置1へ通知するための処理を行うプログラム、(2)監視対象のプログラムコードの一部または全部が改ざんされていないか否かを検出するための処理を行うプログラム、(3)チェッカコード自体が改ざんされていないか否かを検出するための処理を行うプログラム、などのいずれかである。上記(1)の場合が第1の実行パスに相当し、上記(2)の場合が第3の実行パスに相当する。上記(3)の場合は、さらに別の実行パスに相当する。このように、起動判定フラグに応じて実行される実行パスは、4つ以上あってもよい。ステップS2からステップS5を経てステップS4へ至る実行パスのどこかで、起動判定フラグが寝かされ、チェッカコードが不活性化される。
上記ステップS5では、活性化されたチェッカコードが1回の起動指示によって処理する量を分割し、チェックする項目を少しずつ実行して複数回の実行によりチェックを完了するようにしてもよい。この場合には、上記ステップS5の処理の実行によって、監視対象のプログラムコードの実行に悪影響が及ぶのを避けることができる。
また、上記ステップS5で(2)のプログラムを実行する場合、監視装置1のDMA部25(ない場合には、PC等のDMA部)により、PC等のメインメモリ35に展開されているプログラムコードを読み出し、そのプログラムコードと元のプログラムコードを比較するようにしてもよい。その際、プログラムコード自体を比較してもよいし、例えばプログラムコードのチェックサムやハッシュ値など、プログラムコードを要約したデータ同士を比較するようにしてもよい。
元のプログラムコードとしては、アプリケーション起動時に復号されたプログラムコードを監視装置1のRAM15に記憶しておき、これを読み出して用いることができる。監視装置1のRAM15の容量が十分でない場合には、アプリケーション起動時に復号されたプログラムコードを監視装置1において暗号化し、それを再びPC等の記憶装置34に記憶させておけばよい。上記ステップS5で(3)のプログラムを実行する場合も同様である。
(チェッカコードの活性化方式)
チェッカコードの数が少ない場合には、すべてのチェッカコードを常に活性化させてもよい。しかし、チェッカコードの数が多い場合には、すべてのチェッカコードを常に活性化させると、チェッカコードが次々に実行されることになり、それによる負荷が大きくなって、監視対象のプログラムコードの処理速度が低下してしまう。これを避けるため、監視装置1側でチェッカコードの活性化頻度を制御したり、活性化させるチェッカコードを動的に変化させる必要がある。
例えば、監視装置1側で、チェッカコードの起動指示後にそのチェッカコードの実行通知を受け取るまでの時間を測定するなどして、チェッカコードの実行頻度を観測する。そして、実行頻度が高いチェッカコードの起動間隔を長くし、実行頻度が低いチェッカコードの起動間隔を短くするような制御を動的に行って負荷を分散させる。このようにする場合、製品の開発中に十分な調査を行い、頻度の範囲を予め決定してデータベースを作成しておき、ある程度の指針に基づいて実行時の負荷を動的に変更しながらチェッカコードを活性化させることが可能となる。チェッカコードの活性化方式としては、(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらの組み合わせが考えられる。
上記(1)巡回方式について説明する。図6は、この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを巡回方式で活性化させる場合の流れを示すフローチャートである。図6に示すように、まず、監視装置1は、1つのチェッカコードを活性化させる(ステップS11)。そして、この活性化させたチェッカコードが実行されるのを待機する(ステップS12:実行通知なし)。この間、別のチェッカコードは活性化されない。
ステップS11で活性化させたチェッカコード41が実行され、監視装置1に実行通知が渡されたら(ステップS12:実行通知あり)、監視装置1は、活性化させる対象を、次のチェッカコードに切り替える(ステップS13)。そして、新たなチェッカコードに対して同様の処理を行う。これを、すべてのチェッカコードに対して順次、行い、すべてのチェッカコードの活性化と実行を行う。
上記(2)頻度均一化方式について説明する。この方式では、チェッカコードの活性化頻度を制御するために、頻度制御用データベースが構築される。頻度制御用データベースは、例えば監視装置1のRAM15に記憶される。図7は、頻度均一化方式を適用する場合に監視装置に構築される頻度制御用データベースの構成を示す説明図である。図7に示すように、頻度制御用データベース51は、各チェッカコードに対応するレコード52a,52b,52nを有する。
各レコード52a,52b,52nは、チェッカコードに関する各種情報を格納するチェッカの各種情報フィールド53、現在の状態が活性化状態であるか非活性化状態であるかを示す状態フィールド54、第1のカウンタの規定回数を示すカウンタ1規定回数フィールド55、第1のカウンタのカウンタ値を示すカウンタ1フィールド56、第2のカウンタの規定回数を示すカウンタ2規定回数フィールド57、および第2のカウンタのカウンタ値を示すカウンタ2フィールド58を有する。第1のカウンタおよび第2のカウンタは、監視装置1の起動管理部24や頻度管理部27などに設けられている。
図8は、この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の流れを示すフローチャートである。まず、タイマーイベントや実行通知イベントが発生すると、その発生したイベントをキューに入れる。ここで、タイマーイベントは、各チェッカコードに対して定期的に発生する。また、実行通知イベントは、活性化したチェッカコードからの実行通知に対して発生する。
監視装置1は、イベントキューからイベントを取得し(ステップS21)、イベントの種類を判定する(ステップS22)。その結果、タイマーイベントである場合(ステップS22:タイマーイベント)には、頻度制御用データベース51の該当するチェッカコードの状態フィールド54を参照し、チェッカコードの状態を判定する(ステップS23)。その結果、非活性化状態である場合(ステップS23:状態=非活性化)には、該当するチェッカコードのカウンタ1規定回数フィールド55を参照し、第1のカウンタの規定回数を調べる(ステップS24)。
その結果、該当するチェッカコードのカウンタ1フィールド56のカウンタ値が第1のカウンタの規定回数に達していない場合(ステップS24:回数未到達)には、そのカウンタ1フィールド56のカウンタ値をインクリメントして(ステップS25)、終了する。一方、ステップS24で第1のカウンタの規定回数を調べた結果、カウンタ1フィールド56のカウンタ値が第1のカウンタの規定回数に達している場合(ステップS24:回数到達)には、該当するチェッカコードのチェッカコードを活性化させ、そのチェッカコードの状態フィールド54を活性化状態に切り替えて(ステップS26)、終了する。
また、ステップS23で該当するチェッカコードの状態を判定した結果、活性化状態である場合(ステップS23:状態=活性化)には、該当するチェッカコードのカウンタ2規定回数フィールド57を参照し、第2のカウンタの規定回数を調べる(ステップS27)。その結果、該当するチェッカコードのカウンタ2フィールド58のカウンタ値が第2のカウンタの規定回数に達していない場合(ステップS27:回数未到達)には、そのカウンタ2フィールド58のカウンタ値をインクリメントして(ステップS28)、終了する。一方、ステップS27で第2のカウンタの規定回数を調べた結果、カウンタ2フィールド58のカウンタ値が第2のカウンタの規定回数に達している場合(ステップS27:回数到達)には、必要であればタイムオーバー処理を行い(ステップS29)、終了する。
また、ステップS22でイベントの種類を判定した結果、実行通知イベントである場合(ステップS22:実行通知イベント)には、カウンタ2フィールド58のカウンタ値に基づいてカウンタ1規定回数フィールド55の規定回数を更新する(ステップS30)。例えば、カウンタ2フィールド58のカウンタ値が小さい場合には、カウンタ1規定回数フィールド55の規定回数を大きくし、カウンタ2フィールド58のカウンタ値が大きい場合には、カウンタ1規定回数フィールド55の規定回数を小さくする。そして、カウンタ1フィールド56とカウンタ2フィールド58の各カウンタ値を初期化して(ステップS31)、終了する。
このようにすれば、単位時間当たりの実行確認回数が多いチェッカコードについては、活性化の頻度を下げ、単位時間当たりの実行確認回数が少ないチェッカコードについては、活性化の頻度を上げるという動作を、プログラムコードの実行時に動的に調整することができる。なお、図8に示す例は、第1および第2のカウンタがアップカウンタである場合の例であるが、ダウンカウンタを用いる場合も同様である。また、カウンタを用いずに、実タイマー時間を記録し、現在時と比較して時間間隔を得るようにすることもできる。さらに、イベントキューを用いずに、イベント発生により直接、図8に示す制御へ移行するようにすることもできる。
上記(3)頻度固定方式について説明する。この方式は、上記(2)頻度均一化方式と同様の頻度制御用データベース51を用意し、チェッカ位置/頻度データベース29に基づいて、すべてのチェッカコード41を、予め設定された時間単位で、順次、活性化する。チェッカコードを頻度固定方式で活性化させる場合の流れは、図8に示すフローチャートにおいてステップS30を省略した流れとなる。
また、すべてのチェッカコードを1つずつ活性化させる代わりに、すべてのチェッカコードを複数のグループに分け、上述した(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらを組み合わせて、グループ単位でチェッカコードを活性化させるようにしてもよい。この場合、属するチェッカコードの数が1つであるグループがあってもよい。また、複数のチェッカコードを有するグループの場合、グループ内の各チェッカコードを、上述した(1)巡回方式、(2)頻度均一化方式、(3)頻度固定方式、のいずれかまたはそれらを組み合わせて、活性化させてもよい。また、グループごとに異なる方式で活性化させてもよい。このように複数のチェッカコードをグループ化することによって、チェッカコードの実行による負荷を分散させることができる。
(付記1)他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
主プログラムコードと、
前記主プログラムコードに挿入されるチェッカコードに関するチェッカ挿入情報と、
前記チェッカ挿入情報に基づいて前記主プログラムコードに1つ以上の前記チェッカコードが挿入されたソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の前記ソフトウェアコードを監視する監視装置と、
を備え、
前記ソフトウェアコードは、少なくとも、
前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
を含み、
前記監視装置は、
前記起動判定データを書き換える起動管理手段と、前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
を備えることを特徴とするソフトウェアの改ざん監視装置。
(付記2)前記監視装置は、前記チェッカ挿入情報に基づいて前記主プログラムコードに1つ以上の前記チェッカコードを挿入しながら、前記他の装置のメインメモリに同チェッカコードが挿入されたソフトウェアコードを展開するとともに、同チェッカコードの挿入位置の情報を記録し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記1に記載のソフトウェアの改ざん監視装置。
(付記3)他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
主プログラムコードに1つ以上のチェッカコードが挿入されたソフトウェアコードと、
前記ソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の記ソフトウェアコードを監視する監視装置と、
を備え、
前記ソフトウェアコードは、少なくとも、
前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
を含み、
前記監視装置は、
前記起動判定データを書き換える起動管理手段と、前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
を備えることを特徴とするソフトウェアの改ざん監視装置。
(付記4)前記監視装置は、前記他の装置のメインメモリに前記ソフトウェアコードを展開する際に、同ソフトウェアコードに挿入されているチェッカコードを検出しながら、同チェッカコードの挿入位置の情報を記録し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記3に記載のソフトウェアの改ざん監視装置。
(付記5)前記監視装置は、前記他の装置のメインメモリに前記ソフトウェアコードを展開する際に、同ソフトウェアコードに挿入されているチェッカコードの挿入位置の情報を取得し、該位置情報に基づいて、前記起動判定データを書き換えることを特徴とする付記3に記載のソフトウェアの改ざん監視装置。
(付記6)前記ソフトウェアコードは、前記起動判定データに基づいて、前記ソフトウェアコードの改ざんを検出するための処理を実行して前記主プログラムコードの実行に戻る第3の実行パス、をさらに含み、
前記監視装置は、前記他の装置が前記第3の実行パスを実行したときに、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する改ざん検出手段、をさらに備えることを特徴とする付記1〜5のいずれか一つに記載のソフトウェアの改ざん監視装置。
(付記7)前記ソフトウェアコードは、前記他の装置が前記第3の実行パスを実行する際に、同第3の実行パスを実行させるために前記監視装置により書き換えられた前記起動判定データを元のデータに書き換えることを特徴とする付記6に記載のソフトウェアの改ざん監視装置。
(付記8)前記ソフトウェアコードは、前記他の装置が前記第1の実行パスを実行する際に、同第1の実行パスを実行させるために前記監視装置により書き換えられた前記起動判定データを元のデータに書き換えることを特徴とする付記1〜7のいずれか一つに記載のソフトウェアの改ざん監視装置。
(付記9)前記起動管理手段は、複数のチェッカコードを実行させるために、それぞれのチェッカコードに対応した前記起動判定データを順次、書き換えることを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。
(付記10)前記起動管理手段は、複数のチェッカコードを実行させるために、それぞれのチェッカコードに対応した前記起動判定データを予め設定された間隔で書き換えることを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。
(付記11)前記起動管理手段は、チェッカコードの実行状況に応じて、当該チェッカコードを実行させるための前記起動判定データの書き換え頻度を調節することを特徴とする付記1〜8のいずれか一つに記載のソフトウェアの改ざん監視装置。
(付記12)実行中のソフトウェアコードを監視するソフトウェアの改ざん監視方法において、
主プログラムコードに1つ以上のチェッカコードを挿入する工程と、
前記チェッカコードが挿入されたソフトウェアコードの実行中に、前記チェッカコードを活性化させる工程と、
活性化された前記チェッカコードにより指定された処理を実行する工程と、
前記チェッカコードにより指定された処理が実行されたことを確認し、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する工程と、
を含むことを特徴とするソフトウェアの改ざん監視方法。
以上のように、本発明にかかるソフトウェアの改ざん監視装置および改ざん監視方法は、監視対象のプログラムコードの改ざん防止に有用であり、特に、デジタル・テレビジョン放送の受信システムにおいて知的財産権を保護するための装置に適している。
この発明の実施の形態にかかるソフトウェア改ざん監視装置のハードウェア構成を示すブロック図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置の機能的構成を示すブロック図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第1の例を示す説明図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置の製品開発時からアプリケーション実行時までの流れの概略の第2の例を示す説明図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置のチェッカコードのプログラムコードを示す説明図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを巡回方式で活性化させる場合の流れを示すフローチャートである。 この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の頻度制御用データベースの構成を示す説明図である。 この発明の実施の形態にかかるソフトウェア改ざん監視装置においてチェッカコードを頻度均一化方式で活性化させる場合の流れを示すフローチャートである。
符号の説明
1 監視装置
24 起動管理部
26 実行確認部
28 改ざん検出部
29 チェッカ位置/頻度データベース
31 主プログラムコード
32 チェッカ挿入位置・頻度指示情報
35 PC等のメインメモリ
36 ソフトウェアコード
37 チェッカ挿入情報・頻度指示情報
41 チェッカコード

Claims (5)

  1. 他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
    主プログラムコードと、
    前記主プログラムコードに挿入されるチェッカコードに関するチェッカ挿入情報と、
    前記チェッカ挿入情報に基づいて前記主プログラムコードに1つ以上の前記チェッカコードが挿入されたソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の前記ソフトウェアコードを監視する監視装置と、
    を備え、
    前記ソフトウェアコードは、少なくとも、
    前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
    前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
    を含み、
    前記監視装置は、
    前記起動判定データを書き換える起動管理手段と、
    前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
    を備えることを特徴とするソフトウェアの改ざん監視装置。
  2. 他の装置に接続されて、該他の装置により実行されているソフトウェアコードを監視するソフトウェアの改ざん監視装置であって、
    主プログラムコードに1つ以上のチェッカコードが挿入されたソフトウェアコードと、
    前記ソフトウェアコードを前記他の装置のメインメモリに展開し、同他の装置が実行中の前記ソフトウェアコードを監視する監視装置と、
    を備え、
    前記ソフトウェアコードは、少なくとも、
    前記他の装置のメモリ領域に格納されている起動判定データに基づいて、前記チェッカコードにより指定された処理を実行して前記主プログラムコードの実行に戻る第1の実行パスと、
    前記チェッカコードにより指定された処理を実行しないで前記主プログラムコードの実行に戻る第2の実行パスと、
    を含み、
    前記監視装置は、
    前記起動判定データを書き換える起動管理手段と、
    前記他の装置が前記第1の実行パスを実行したことを確認する実行確認手段と、
    を備えることを特徴とするソフトウェアの改ざん監視装置。
  3. 前記ソフトウェアコードは、前記起動判定データに基づいて、前記ソフトウェアコードの改ざんを検出するための処理を実行して前記主プログラムコードの実行に戻る第3の実行パス、をさらに含み、
    前記監視装置は、前記他の装置が前記第3の実行パスを実行したときに、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する改ざん検出手段、をさらに備えることを特徴とする請求項1または2に記載のソフトウェアの改ざん監視装置。
  4. 前記起動管理手段は、チェッカコードの実行状況に応じて、当該チェッカコードを実行させるための前記起動判定データの書き換え頻度を調節することを特徴とする請求項1〜3のいずれか一つに記載のソフトウェアの改ざん監視装置。
  5. 実行中のソフトウェアコードを監視するソフトウェアの改ざん監視方法において、
    主プログラムコードに1つ以上のチェッカコードを挿入する工程と、
    前記チェッカコードが挿入されたソフトウェアコードの実行中に、前記チェッカコードを活性化させる工程と、
    活性化された前記チェッカコードにより指定された処理を実行する工程と、
    前記チェッカコードにより指定された処理が実行されたことを確認し、前記ソフトウェアコードの一部または全部について改ざんの有無を検出する工程と、
    を含むことを特徴とするソフトウェアの改ざん監視方法。
JP2006266699A 2006-09-29 2006-09-29 チェックプログラム、監視装置および監視方法 Expired - Fee Related JP4923925B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006266699A JP4923925B2 (ja) 2006-09-29 2006-09-29 チェックプログラム、監視装置および監視方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006266699A JP4923925B2 (ja) 2006-09-29 2006-09-29 チェックプログラム、監視装置および監視方法

Publications (2)

Publication Number Publication Date
JP2008084275A true JP2008084275A (ja) 2008-04-10
JP4923925B2 JP4923925B2 (ja) 2012-04-25

Family

ID=39355028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006266699A Expired - Fee Related JP4923925B2 (ja) 2006-09-29 2006-09-29 チェックプログラム、監視装置および監視方法

Country Status (1)

Country Link
JP (1) JP4923925B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092174A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
JP4896225B2 (ja) * 2007-07-26 2012-03-14 パナソニック株式会社 情報処理端末及び改ざん検証方法
CN102696037A (zh) * 2009-10-15 2012-09-26 Fts电脑技术有限公司 在硬件平台上执行安全相关和非安全相关软件构件的方法
JP2012234362A (ja) * 2011-04-28 2012-11-29 Fujitsu Ltd 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
WO2018150619A1 (ja) * 2017-02-14 2018-08-23 日本電信電話株式会社 付与装置、付与方法及び付与プログラム
JP2019012498A (ja) * 2017-07-03 2019-01-24 株式会社デンソー 電子制御装置
WO2020188700A1 (ja) * 2019-03-18 2020-09-24 日本電気株式会社 ファームウェア書き換え装置、ファームウェア書き換え方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04163627A (ja) * 1990-10-29 1992-06-09 Hitachi Ltd プログラム変換方法
JPH07146788A (ja) * 1993-11-22 1995-06-06 Fujitsu Ltd ウイルス診断機構の作成システムと作成方法並びにウイルス診断機構と診断方法
JPH09114656A (ja) * 1995-10-19 1997-05-02 Nippon Telegr & Teleph Corp <Ntt> 端末プログラム改ざん検出方法及びシステム
JP2005293109A (ja) * 2004-03-31 2005-10-20 Canon Inc ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04163627A (ja) * 1990-10-29 1992-06-09 Hitachi Ltd プログラム変換方法
JPH07146788A (ja) * 1993-11-22 1995-06-06 Fujitsu Ltd ウイルス診断機構の作成システムと作成方法並びにウイルス診断機構と診断方法
JPH09114656A (ja) * 1995-10-19 1997-05-02 Nippon Telegr & Teleph Corp <Ntt> 端末プログラム改ざん検出方法及びシステム
JP2005293109A (ja) * 2004-03-31 2005-10-20 Canon Inc ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4896225B2 (ja) * 2007-07-26 2012-03-14 パナソニック株式会社 情報処理端末及び改ざん検証方法
JP2010092174A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
CN102696037A (zh) * 2009-10-15 2012-09-26 Fts电脑技术有限公司 在硬件平台上执行安全相关和非安全相关软件构件的方法
JP2013507698A (ja) * 2009-10-15 2013-03-04 エフティーエス コンピューターテクニク ジーエムビーエイチ 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法
JP2012234362A (ja) * 2011-04-28 2012-11-29 Fujitsu Ltd 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
US11403388B2 (en) 2017-02-14 2022-08-02 Nippon Telegraph And Telephone Corporation Assignment device, assignment method, and assignment program
WO2018150619A1 (ja) * 2017-02-14 2018-08-23 日本電信電話株式会社 付与装置、付与方法及び付与プログラム
JPWO2018150619A1 (ja) * 2017-02-14 2019-07-11 日本電信電話株式会社 付与装置、付与方法及び付与プログラム
JP2019012498A (ja) * 2017-07-03 2019-01-24 株式会社デンソー 電子制御装置
JPWO2020188700A1 (ja) * 2019-03-18 2021-12-23 日本電気株式会社 ファームウェア書き換え装置、ファームウェア書き換え方法、及び、制御プログラム
WO2020188700A1 (ja) * 2019-03-18 2020-09-24 日本電気株式会社 ファームウェア書き換え装置、ファームウェア書き換え方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体
JP7201069B2 (ja) 2019-03-18 2023-01-10 日本電気株式会社 ファームウェア書き換え装置、ファームウェア書き換え方法、及び、制御プログラム
US11709940B2 (en) 2019-03-18 2023-07-25 Nec Corporation Firmware rewriting apparatus, firmware rewriting method, and non-transitory computer readable medium storing program

Also Published As

Publication number Publication date
JP4923925B2 (ja) 2012-04-25

Similar Documents

Publication Publication Date Title
JP4923925B2 (ja) チェックプログラム、監視装置および監視方法
JP6067449B2 (ja) 情報処理装置、情報処理プログラム
JP5740573B2 (ja) 情報処理装置および情報処理方法
EP3474179B1 (en) Information processing apparatus, method for controlling same, and computer program
CN101310472B (zh) 用以支持获信任环境的计算机可读组件的自动更新
US7962952B2 (en) Information processing apparatus that executes program and program control method for executing program
JP5394441B2 (ja) セキュリティ・コプロセッサにおけるn進の局所性のためのシステム及び方法
US20130138934A1 (en) Loading configuration information
JP6391439B2 (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
CN101578609A (zh) 安全启动计算设备
WO2019075493A1 (en) RANDOMIZATION OF BINARY CODE DEVICE STRUCTURE ARRANGEMENT TO ENHANCE SECURITY BY ENHANCED ENTROPY
US8015553B2 (en) Method and apparatus for testing execution flow of program
JP6984710B2 (ja) コンピュータ装置およびメモリ管理方法
US8176278B2 (en) Information processing apparatus, information processing method and record medium
US20080178257A1 (en) Method for integrity metrics management
US8732843B2 (en) Software validity period changing apparatus, method, and installation package
KR101624387B1 (ko) 소프트웨어 버스마크에 기반한 소프트웨어 자산 관리 방법 및 그 장치
KR101320680B1 (ko) 소프트웨어의 무결성 검사 장치 및 방법
CN113157543B (zh) 一种可信度量方法及装置、服务器、计算机可读存储介质
JP5961059B2 (ja) 情報処理装置およびその起動方法
JP5549810B2 (ja) プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
US9213864B2 (en) Data processing apparatus and validity verification method
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
WO2024057507A1 (ja) プログラム処理装置、プログラム処理方法、およびプログラム処理プログラム
JP2018067057A (ja) 制御プログラムの検証装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120123

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees