(57)【特許請求の範囲】
【請求項１】
複数の記憶部を有する情報処理装置による実行制御方法であって、
特定のプログラムの動作の許可または制限のいずれかを定義したプログラムリストを読み込むリスト読込ステップと、
所定のプログラムから他のプログラムの書込み要求を受け付けた場合に前記プログラムリストを参照し、前記所定のプログラムが前記プログラムリストにおいて動作が許可されている場合には、当該書込み要求で指定された前記他のプログラムの保存先を変更せず、前記所定のプログラムが前記プログラムリストにおいて動作が許可されていない場合には、当該書込み要求で指定された前記他のプログラムの保存先を所定の記憶部へ変更する変更制御ステップと、
前記変更制御ステップによって前記他のプログラムの保存先が変更された場合に、当該書込み要求を行った前記所定のプログラムと変更前の保存先及び変更後の保存先とを対応付けて変更情報として記録する変更情報記録ステップと、
前記プログラムリストへ追加されたプログラムが前記変更情報に含まれる場合に、該追加されたプログラムに対応付けられた変更前の保存先及び変更後の保存先に基づき、該変更後の保存先に書き込まれた他のプログラムを該変更前の保存先へ書き換えるように制御する書換え制御ステップと
を含んだことを特徴とする実行制御方法。
【請求項２】
前記変更制御ステップは、所定のプログラムによって生成されたデータの書込み要求を受け付けた場合に前記プログラムリストを参照し、前記所定のプログラムが前記プログラムリストにおいて動作が許可されている場合には、当該書込み要求で指定された前記データの保存先を変更せず、前記所定のプログラムが前記プログラムリストにおいて動作が許可されていない場合には、当該書込み要求で指定された前記データの保存先を前記所定の記憶部へ変更し、
前記変更情報記録ステップは、前記変更制御ステップによって前記データの保存先が変更された場合に、当該書込み要求を行った前記所定のプログラムと変更前の保存先及び変更後の保存先とを対応付けて変更情報として記録し、
前記書換え制御ステップは、前記プログラムリストへ追加されたプログラムが前記変更情報に含まれる場合に、該追加されたプログラムに対応付けられた変更前の保存先及び変更後の保存先に基づき、該変更前の保存先に書き込まれたデータを該変更後の保存先へ書き換えるように制御することを特徴とする請求項１に記載の実行制御方法。
【請求項３】
複数の記憶部を有するコンピュータに実行させる実行制御プログラムであって、
特定のプログラムの動作の許可または制限のいずれかを定義したプログラムリストを読み込むリスト読込ステップと、
所定のプログラムから他のプログラムの書込み要求を受け付けた場合に前記プログラムリストを参照し、前記所定のプログラムが前記プログラムリストにおいて動作が許可されている場合には、当該書込み要求で指定された前記他のプログラムの保存先を変更せず、前記所定のプログラムが前記プログラムリストにおいて動作が許可されていない場合には、当該書込み要求で指定された前記他のプログラムの保存先を所定の記憶部へ変更する変更制御ステップと、
前記変更制御ステップによって前記他のプログラムの保存先が変更された場合に、当該書込み要求を行った前記所定のプログラムと変更前の保存先及び変更後の保存先とを対応付けて変更情報として記録する変更情報記録ステップと、
前記プログラムリストへ追加されたプログラムが前記変更情報に含まれる場合に、該追加されたプログラムに対応付けられた変更前の保存先及び変更後の保存先に基づき、該変更後の保存先に書き込まれた他のプログラムを該変更前の保存先へ書き換えるように制御する書換え制御ステップと
をコンピュータに実行させることを特徴とする実行制御プログラム。
【請求項４】
複数の記憶部と、
特定のプログラムの動作の許可または制限のいずれかを定義したプログラムリストを読み込むリスト読込部と、
所定のプログラムから他のプログラムの書込み要求を受け付けた場合に前記プログラムリストを参照し、前記所定のプログラムが前記プログラムリストにおいて動作が許可されている場合には、当該書込み要求で指定された前記他のプログラムの保存先を変更せず、前記所定のプログラムが前記プログラムリストにおいて動作が許可されていない場合には、当該書込み要求で指定された前記他のプログラムの保存先を所定の記憶部へ変更する変更制御部と、
前記変更制御部によって前記他のプログラムの保存先が変更された場合に、当該書込み要求を行った前記所定のプログラムと変更前の保存先及び変更後の保存先とを対応付けて変更情報として記録する変更情報記録部と、
前記プログラムリストへ追加されたプログラムが前記変更情報に含まれる場合に、該追加されたプログラムに対応付けられた変更前の保存先及び変更後の保存先に基づき、該変更後の保存先に書き込まれた他のプログラムを該変更前の保存先へ書き換えるように制御する書換え制御部と
を含んだことを特徴とする実行制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行制御方法、実行制御プログラムおよび実行制御装置に関する。
【背景技術】
【０００２】
近年、インターネットの普及にともなってコンピュータウィルス等の悪意をもったプログラムによる被害が増大している。このような悪意をもったプログラムは、例えば、正常なプログラムを自らと置き換え、正常なプログラムに成りすまして、不正な処理を実行する。
【０００３】
それを発見するために、正常なプログラムのハッシュ値を事前に保存し、それと他プログラムへの処理(書込や読取など)を要求している同名のプログラムの実行ファイルのハッシュ値を比較することによって、実行ファイルの改ざんの有無を検査する。改ざんを発見した場合は、処理要求の拒否を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１４０７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、改ざんの検出には有効であるものの、プログラムを正当に更新する場合に問題が生ずる。この問題について具体的に説明すると、上記の従来技術で用いられるハッシュ値は、プログラム内のビット列の値を利用して算出される。このため、正当な権限を有する者がプログラムの不具合を改修した場合や、バージョンアップを行った場合であっても、更新前後のプログラムのハッシュ値が異なってしまう。このため、正当な権限を有する者が作成したプログラムが、正当な目的で他のプログラムを更新しても、更新後のプログラムのハッシュ値が異なるため、更新後のプログラムを実行しようとしても実行できなくなってしまう。
【０００６】
このように、正当な目的で更新されたプログラムを実行させるには、更新後のプログラムのハッシュ値を管理者に登録させる必要がある。ところが、プログラムの不具合の改修やバージョンアップは日常茶飯事に実施されるものであり、プログラムの更新が行われる度にそのハッシュ値を登録させるのは現実的ではない。
【０００７】
開示の技術は、上記に鑑みてなされたものであって、プログラムの正当な更新を許容しつつ、プログラムの不正な更新を防止することができる実行制御方法、実行制御プログラムおよび実行制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願の開示する実行制御方法は、複数の記憶部を有する情報処理装置による実行制御方法であって、特定のプログラムの動作の許可または制限のいずれかを定義したプログラムリストを読み込むリスト読込ステップと、所定のプログラムから他のプログラムの書込み要求を受け付けた場合に前記プログラムリストを参照し、前記所定のプログラムが前記プログラムリストにおいて動作が許可されている場合には、当該書込み要求で指定された前記他のプログラムの保存先を変更せず、前記所定のプログラムが前記プログラムリストにおいて動作が許可されていない場合には、当該書込み要求で指定された前記他のプログラムの保存先を所定の記憶部へ変更する変更制御ステップと、前記変更制御ステップによって前記他のプログラムの保存先が変更された場合に、当該書込み要求を行った前記所定のプログラムと変更前の保存先及び変更後の保存先とを対応付けて変更情報として記録する変更情報記録ステップと、前記プログラムリストへ追加されたプログラムが前記変更情報に含まれる場合に、該追加されたプログラムに対応付けられた変更前の保存先及び変更後の保存先に基づき、該変更後の保存先に書き込まれた他のプログラムを該変更前の保存先へ書き換えるように制御する書換え制御ステップとを含む。
【発明の効果】
【０００９】
本願の開示する実行制御方法の一つの態様によれば、プログラムの正当な更新を許容しつつ、プログラムの不正な更新を防止することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る情報処理装置の構成を示すブロック図である。
【図２】図２は、実施例２に係る情報処理システムの構成を示す図である。
【図３】図３は、実施例２に係る情報処理装置の構成を示すブロック図である。
【図４】図４は、プログラムがファイル操作を行う場合にＯＳがファイルシステム発行する操作命令の一例を示す図である。
【図５】図５は、ＯＳがプロセスを管理する管理テーブルの一例の図である。
【図６】図６は、ファイル操作を行ったプロセスを特定するために必要な情報の一例の図である。
【図７】図７は、ファイルパスを変更する場合にファイルアクセス制御部が変更履歴管理部へ発行する命令の一例を示す図である。
【図８】図８は、ホワイトリストの一例を示す図である。
【図９】図９は、導入履歴の一例を示す図である。
【図１０】図１０は、更新履歴の一例を示す図である。
【図１１】図１１は、変更履歴の一例を示す図である。
【図１２】図１２は、実行制御プログラムの処理手順を示すフローチャートである。
【図１３】図１３は、導入プログラム用書込処理の処理手順を示すフローチャートである。
【図１４】図１４は、非導入プログラム用書込処理の処理手順を示すフローチャートである。
【図１５】図１５は、動作判定処理の処理手順を示すフローチャートである。
【図１６】図１６は、ホワイトリスト更新処理の処理手順を示すフローチャートである。
【図１７】図１７は、ホワイトリスト統合処理の処理手順の一例を示すフローチャートである。
【図１８】図１８は、書換え処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する実行制御方法、実行制御プログラムおよび実行制御装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００１２】
図１は、実施例１に係る情報処理装置の構成を示すブロック図である。図１に示すように、情報処理装置１は、内部記憶部２と、外部記憶部３と、変更制御部４と、変更情報記録部５と、書換え制御部６とを有する。
【００１３】
内部記憶部２は、ハードディスク装置など情報処理装置１が内蔵する記憶装置である。この内部記憶部２は、特定のプログラムの動作を定義するプログラムリスト２ａと、保存先の変更が行われたデータの保存先の変更内容を示す変更履歴２ｂと、情報処理装置１で実行され得るプログラム２ｃとを記憶する。
【００１４】
このプログラムリスト２ａは、情報処理装置１における動作を無条件に許可するプログラムと情報処理装置１における動作を制限するプログラムとを予め定義したリストである。これによって、情報処理装置１において管理者が指定するプログラムだけが制約を受けずに利用できるようにする。
【００１５】
外部記憶部３は、ＵＳＢ（Universal  Serial  Bus）メモリなど情報処理装置１とは別体の外部装置であるとともに、所定の条件、例えばＵＳＢ接続されるなどの条件を満たした場合に情報処理装置１からアクセス可能となる記憶装置である。この外部記憶部３には、変更制御部４によって保存先が変更されたプログラム３ｃが記憶される。
【００１６】
変更制御部４は、プログラムリスト２ａにおいて動作が許可されていないプログラムによって書込み要求がなされたプログラムの保存先を内部記憶部２から外部記憶部３へ変更する。そして、変更制御部４は、保存先の変更を行った場合には、書込み対象のプログラムを内部記憶部２に書込む。一方、変更制御部４は、保存先の変更を行わなかった場合には、書込み対象のプログラムを外部記憶部３に書込む。
【００１７】
すなわち、変更制御部４は、プログラムリスト２ａに登録されていない導入プログラムだからといって情報処理装置１へのプログラムの導入を禁止するわけではない。なお、導入プログラムとは、導入対象のプログラムや設定ファイルと、それらを導入するための各種手続とを含むプログラムである。このように、プログラムリスト２ａに非登録である導入プログラムがプログラムを導入するのを一律に禁止としないのは、ある時点でプログラムリスト２ａに非登録であったとしてもそれ以降にプログラムリスト２ａに追加される余地があるからである。言い換えれば、プログラムリスト２ａへの追加が行われるまでプログラムの導入を禁止することにより、そのプログラムが導入されている他の装置から受け取ったデータを情報処理装置１で扱うことができない機会が生じるのを防止するためである。
【００１８】
ただし、変更制御部４は、プログラムリスト２ａに登録されていない導入プログラムによって導入されるプログラムについては内部記憶部２ではなく外部記憶部３へ書き込む。かかる保存先の変更によって、新規に導入したプログラムにより情報処理装置１に不具合が生じた場合でも、外部記憶部３を切り離すことで情報処理装置１がプログラムリスト２ａに登録されたプログラムだけを格納したクリーンな状態に戻すことができる。このように、被導入プログラムを外部記憶部３へ格納することにより、プログラムリスト２ａに非登録である導入プログラムが情報処理装置１にプログラムを導入することによるリスクを低減する。
【００１９】
変更情報記録部５は、保存先の変更を行った場合に、書込み要求を行ったプログラムに変更前の保存先及び変更後の保存先を対応付けて変更履歴２ｂとして内部記憶部２へ記録する。
【００２０】
書換え制御部６は、プログラムリスト２ａへ追加されたプログラムが変更履歴２ｂに含まれる場合に、変更後の保存先に書き込まれているプログラムを変更前の保存先へ書き換えるように制御する。このように、変更後の保存先に書き込まれているプログラムを変更前の保存先へ書き換えることにより、外部記憶部３が取り外された場合でも内部記憶部２へプログラムを再導入する手間を不要化する。
【００２１】
すなわち、プログラムが外部記憶部３に書き込まれた状態では、外部記憶部３が取り外されるとそのプログラムは実行できなくなってしまう。この場合には、情報処理装置１の使用者に既に導入したはずのプログラムを再導入する手間が発生してしまう。このような不要な手間をなくすために、書換え制御部６は、外部記憶部３に書き込まれているプログラムを内部記憶部２へ書き換える。
【００２２】
上述してきたように、本実施例に係る情報処理装置１では、プログラムリスト２ａを使用するとともにプログラムリスト２ａに非登録の導入プログラムにより導入されるプログラムの保存先を内部記憶部２から外部記憶部３へ変更する。このため、プログラムの正当な更新を許容しつつ、プログラムの不正な更新を防止できる。加えて、本実施例に係る情報処理装置１では、プログラムリスト２ａへ追加されたプログラムが変更履歴２ｂに含まれる場合に、変更後の保存先に書き込まれているプログラムを変更前の保存先へ書き換えるように制御する。このため、外部記憶部３が取り外された場合でも内部記憶部２へプログラムを再導入する手間を不要化できる。
【実施例２】
【００２３】
続いて、実施例２に係る情報処理システムについて説明する。図２は、実施例２に係る情報処理システムの構成を示す図である。情報処理システム１００は、ホワイトリストに登録されていないプログラムの動作を制限する制御を実行する。ホワイトリストとは、通常通り実行させてよいプログラムに関する情報が登録されたファイルであり、ここに登録されていないプログラムは、実行時に何らかの制約を受ける。
【００２４】
図２に示すように、情報処理システム１００は、情報処理装置１０ａ〜１０ｃと、サーバ２０と、それらを接続するネットワーク３０とを含む。情報処理装置１０ａ〜１０ｃは、例えば、パソコンであり、それぞれ、外部記憶装置１１ａ〜１１ｃが接続されている。情報処理装置１０ａ〜１０ｃは、利用者や他の装置等から要求された情報処理を実行するとともに、上述したプログラム実行制御方法等も実行する。
【００２５】
サーバ２０は、ホワイトリスト２１を集中管理する。サーバ２０に記憶されたホワイトリスト２１は、サーバ２０から情報処理装置１０ａ〜１０ｃへ配信され、情報処理装置１０ａ〜１０ｃにおいて、プログラムを通常通り実行させてよいか否かを判定するために用いられる。ホワイトリスト２１は、情報処理装置１０ａ〜１０ｃにおいて更新されることもあり、その場合、更新されたホワイトリスト全部または差分が情報処理装置１０ａ〜１０ｃからサーバ２０へ送信される。
【００２６】
ネットワーク３０は、インターネット３１と接続されている。そして、情報処理装置１０ａ〜１０ｃは、ネットワーク３０およびインターネット３１を介して、更新ファイル提供装置２２と接続されている。更新ファイル提供装置２２は、プログラムを更新するための更新ファイルを保持する装置である。
【００２７】
なお、図２に示す情報処理システム１００は一例であり、情報処理システム１００に含まれる各装置の数や各装置間の接続経路は、図２の通りである必要はない。例えば、情報処理装置１０ａ〜１０ｃへ配信するホワイトリスト２１さえ共有されていれば、サーバの負荷分散の観点からサーバ２０を複数設けることとしてもよい。
【００２８】
次に、図２に示した情報処理装置１０ａ〜１０ｃの構成について説明する。なお、情報処理装置１０ａ〜１０ｃは、いずれも同様の構成を有するので、ここでは情報処理装置１０ａを例にして構成の説明を行う。
【００２９】
図３は、情報処理装置１０ａの構成を示すブロック図である。図３に示すように、情報処理装置１０ａは、ＣＰＵ（Central  Processing  Unit）１１０と、入力部１２０と、表示部１３０と、ネットワークインターフェース部（以下、「ネットワークＩ／Ｆ部」という）１４０とを有する。さらに、情報処理装置１０ａは、入出力インターフェース部（以下、「入出力Ｉ／Ｆ部」という）１５０と、記憶媒体読書部１６０と、ハードディスク装置１７０と、ＲＡＭ（Random  Access  Memory）１８０と、各部を接続するバス１９０とを有する。
【００３０】
ＣＰＵ１１０は、各種演算処理を実行する演算回路である。入力部１２０は、利用者が指示や情報を入力する装置であり、例えば、キーボードやマウスである。表示部１３０は、文字や図形を表示する装置であり、例えば、液晶表示装置である。ネットワークＩ／Ｆ部１４０は、ネットワーク３０を介して接続された他の装置との通信を実現する。入出力Ｉ／Ｆ部１５０は、外部記憶装置１１ａとの間でのデータの入出力を実現する。
【００３１】
記憶媒体読書部１６０は、光ディスク等の記憶媒体に対してデータの読書きを行う。ハードディスク装置１７０は、各種ファイルを記憶する記憶装置である。ＲＡＭ１８０は、プログラムやデータが展開されるワークメモリである。
【００３２】
ハードディスク装置１７０は、例えば、ＯＳプログラム１７１、アプリケーションプログラム１７２、実行制御プログラム１７３、ホワイトリスト１７４、導入履歴１７５、更新履歴１７６、変更履歴１７７を記憶する。
【００３３】
ＯＳプログラム１７１は、ＯＳの各種機能を実現するプログラムである。ＯＳプログラム１７１は、情報処理装置１０ａの起動時にＣＰＵ１１０によってハードディスク装置１７０から読み出されてＲＡＭ１８０に展開され、ＯＳ１８１として機能するようになる。
【００３４】
アプリケーションプログラム１７２は、ＣＰＵ１１０によってハードディスク装置１７０から読み出され、ＲＡＭ１８０に展開されて実行プロセス１８３となり、ＯＳ１８１に対して各種要求を行いながら所定の目的の処理を実行する。アプリケーションプログラム１７２には、他のプログラムを更新する更新プログラムも含まれる。
【００３５】
実行制御プログラム１７３は、ホワイトリスト１７４に基づいてプログラムの動作を制御するとともに、プログラムが他のプログラムによって不正に上書きされることを防止する。実行制御プログラム１７３は、ＯＳ１８１の指示によって、ＯＳ１８１の起動後にＣＰＵ１１０によってハードディスク装置１７０から読み出され、ＲＡＭ１８０に展開され、実行制御プロセス１８２として機能するようになる。また、実行制御プログラム１７３の一部は、ＯＳ１８１に組み込まれて、ファイルアクセス制御部１８１ａとして機能するようになる。
【００３６】
ファイルアクセス制御部１８１ａは、各種実行プロセス１８３からの要求に基づいてＯＳ１８１がハードディスク装置１７０に対して実行する読出処理および書込処理の監視と制御を行う。
【００３７】
ここでファイルアクセス制御部１８１ａは、実行プロセス１８３がＯＳ１８１を介してハードディスク装置１７０のファイルアクセスを行うために利用されるＯＳ１８１が用意するアプリケーション・プログラム・インタフェース「ＡＰＩ」をトラップする。この他にファイルアクセス制御部１８１ａの機能を実行制御プログラム１７３から分離し、ＯＳ１８１のファイルシステムドライバとして実装する。これによって、ＯＳ１８１の起動時からファイルアクセス制御部１８１ａが起動し、実行プロセス１８３からＯＳ１８１を介して行われるハードディスク装置１７０へのファイルアクセスをトラップすることができる。または、実行制御プログラム１７３そのものがドライバとしてＯＳ１８１に含まれても良い。
【００３８】
具体的には、ファイルアクセス制御部１８１ａは、ＯＳ１８１が、ハードディスク装置１７０を制御するドライバに対して読出し指示または書込み指示を発行すると、その指示を一時的にトラップする。そして指示の内容と指示を行ったプロセスの実体であるアプリケーションプログラム１７２をＯＳ１８１の管理テーブルから取得し、それらをフォーマットの情報とし、実行制御プロセス１８２に通知する。
【００３９】
このＯＳ１８１が、ハードディスク装置１７０に対して読出し指示または書込み指示を行うコマンドのデータフォーマットを図４に示す。図４は、プログラムがファイル操作を行う場合にＯＳがファイルシステム発行する操作命令の一例を示す図である。
【００４０】
図４に示すように、このコマンドは、指示を行った実行プロセス１８３のプロセス番号と、ハードディスク装置１７０に対する書込処理や読み取り処理などのファイル操作コマンドと、ファイル操作用データとが含まれている。ファイル操作用データには、書込または読み取り処理の場合の対象ファイル名や、書込処理が指定された場合は更に書込を行う情報が含まれている。
【００４１】
プロセス番号とは、ＯＳ１８１が複数ある実行プロセスを管理するために、アプリケーションプログラム１７２が実行プロセス１８３となった場合に割り当てられるユニークな番号である。
【００４２】
次に、プロセス番号からアプリケーションプログラム１７２を特定する手順を示す。図５は、ＯＳがプロセスを管理する管理テーブルの一例の図である。図６は、ファイル操作を行ったプロセスを特定するために必要な情報の一例の図である。
【００４３】
ファイルアクセス制御部１８１ａは、ＯＳ１８１に対して読出処理や書込処理を要求した実行プロセスに関する情報をＯＳ１８１内の管理テーブル（図５）から取得する。ファイルアクセス制御部１８１ａが取得した指示(図４)からプロセス番号を取り出し、ＯＳ１８１の管理テーブル（図５)と比較し、アプリケーションのプログラムパスを取得する。このアプリケーションのプログラムパスは、図３のハードディスク装置１７０に保存されているアプリケーションプログラム１７２の情報である。次に、管理テーブル（図５）からプロセス番号に対応した親プロセス番号を取得し、これが全てのプロセスの起点であるＩＤＬＥプロセスを示す０でない場合は、親プロセス番号を新たなプロセス番号として管理テーブル（図５）と比較する。そして親プロセス番号が０となるまで遡りアプリケーションのプログラムパスを取得する。
【００４４】
結果として、ファイルアクセス制御部１８１ａは、動作制御部１８２ａへ渡すための情報である図６に示すような、プロセス番号、親プロセス番号、モジュール名、アプリケーションのプログラムパスをまとめた情報を生成する。
【００４５】
なお、図４、図５は一例であり、ＯＳによって構成が異なる。
【００４６】
そして、ファイルアクセス制御部１８１ａは、実行制御プロセス１８２からの応答に従って、読出し指示や書込み指示をそのまま実行させたり、キャンセルさせたり、指示の内容を変更したりする処理を行う。
【００４７】
例えば、ファイルアクセス制御部１８１ａは、ホワイトリスト１７４に登録されていない導入プログラムが書込み要求を行うプログラムやホワイトリスト１７４に登録されていないプログラムによって生成されたデータの書込み要求で指定された保存先を変更する。すなわち、ファイルアクセス制御部１８１ａは、情報処理装置１０ａの使用者が内部記憶装置であるハードディスク装置１７０に保存先を指定していたとしても外部記憶装置１１ａへ保存先をリダイレクトする処理を行う。このようにして保存先を変更した場合には、ファイルアクセス制御部１８１ａは、後述する変更履歴管理部１８２ｆへ保存先の変更内容を通知し、その変更内容を変更履歴１７７として変更履歴管理部１８２ｆに登録させる。
【００４８】
図７は、ファイルパスを変更する場合にファイルアクセス制御部１８１ａが変更履歴管理部１８２ｆへ発行する命令の一例を示す図である。図７に示すように、このコマンドには、変更履歴管理部１８２ｆを制御するためのコマンドと、書込み要求を行ったソフトウェアと、変更前の保存先と、変更後の保存先とが含まれる。
【００４９】
図７に示す例で言えば、変更履歴１７７を登録する場合には、ファイルアクセス制御部１８１ａは、制御コマンドに「ａｄｄ」を配置する。さらに、ファイルアクセス制御部１８１ａは、作成に使用したプログラム名に「書込み要求を行ったプログラム名」を配置する。さらに、ファイルアクセス制御部１８１ａは、変更前の保存先には「書込み要求で指定された内部記憶装置のファイルパス」を配置するとともに変更後の保存先には「外部記憶装置へリダイレクトしたファイルパス」を配置する。このような配置を行った上で、ファイルアクセス制御部１８１ａは、その命令を変更履歴管理部１８２ｆへ送信する。
【００５０】
また、ファイルアクセス制御部１８１ａは、ホワイトリスト１７４に新たなプログラムが追加された場合に、そのプログラムが変更履歴１７７に含まれるか否かを変更履歴管理部１８２ｆに検索させる。図７に示す例で言えば、ファイルアクセス制御部１８１ａは、制御コマンドに「ｓｅａｒｃｈ」を配置する。さらに、ファイルアクセス制御部１８１ａは、作成に使用したプログラム名に「検索対象とするプログラム名」を配置し、変更前の保存先と変更後の保存先にはそれぞれ「ＮＵＬＬ」を配置する。このような配置を行った上で、ファイルアクセス制御部１８１ａは、その命令を変更履歴管理部１８２ｆへ送信する。
【００５１】
また、ファイルアクセス制御部１８１ａは、変更前の保存先へプログラムまたはデータを書き戻した後にその変更履歴１７７を変更履歴管理部１８２ｆに削除させる。図７に示す例で言えば、ファイルアクセス制御部１８１ａは、制御コマンドに「ｄｅｌ」を配置し、作成に使用したプログラム名に「書き戻しを行ったプログラム名」を配置する。さらに、ファイルアクセス制御部１８１ａは、変更前の保存先には「書込み要求で指定された内部記憶装置のファイルパス」を配置するとともに変更後の保存先には「外部記憶装置へリダイレクトしたファイルパス」を配置する。このような配置を行った上で、ファイルアクセス制御部１８１ａは、その命令を変更履歴管理部１８２ｆへ送信する。
【００５２】
実行制御プロセス１８２は、動作制御部１８２ａと、動作判定部１８２ｂと、導入制御部１８２ｃと、更新制御部１８２ｄと、ホワイトリスト更新部１８２ｅと、変更履歴管理部１８２ｆとを有する。動作制御部１８２ａは、実行制御プロセス１８２を全体制御する制御部であり、ファイルアクセス制御部１８１ａからの通知内容に応じて、動作判定部１８２ｂ、導入制御部１８２ｃ、更新制御部１８２ｄまたは変更履歴管理部１８２ｆの機能を呼び出す。
【００５３】
動作判定部１８２ｂは、指定されたプログラムが通常通り実行させてよいプログラムとしてホワイトリスト１７４に登録されているか否かを判定する。ここで、ホワイトリスト１７４の一例を図８に示す。図８に示すように、ホワイトリスト１７４は、名称、ファイル名、バージョン、ハッシュ値といった項目を有する。
【００５４】
名称は、プログラムの呼称である。ファイル名は、プログラムの物理的なファイル名である。バージョンは、プログラムの版を識別するための番号である。ハッシュ値は、プログラムをハッシュ関数に入力して生成されたハッシュ値である。
【００５５】
具体的には、動作判定部１８２ｂは、指定されたプログラムのアプリケーションのプログラムからハッシュ値を生成する。そして、動作判定部１８２ｂは、生成したハッシュ値と同一のハッシュ値をもつ行がホワイトリスト１７４にあれば、そのプログラムが通常通り実行させてよいプログラムであると判定する。また、生成したハッシュ値と同一のハッシュ値をもつ行がホワイトリスト１７４になければ、その親のプロセスのプログラムからハッシュ値を生成し、再度ホワイトリスト１７４と比較し判定を行う。そして親のプロセスも全てチェックしてもホワイトリスト１７４に該当しなければ、そのプログラムが通常通り実行させてよいプログラムではないと判定する。
【００５６】
導入制御部１８２ｃは、導入プログラムによる導入処理を監視して、導入プログラムと被導入プログラムの対応を導入履歴１７５に記録する。ここで、導入履歴１７５の一例を図９に示す。図９に示すように、導入履歴１７５は、導入プログラムＩＤ、導入プログラム名、被導入プログラムパス名、バージョン、ハッシュ値といった項目を有し、導入されたプログラム毎に行が追加される。
【００５７】
導入プログラムＩＤは、導入プログラムによる導入処理毎に割り当てられるユニークな番号である。導入プログラム名は、導入プログラムの呼称である。被導入プログラムパス名は、導入プログラムによって導入されたプログラムのパス付きのファイル名である。バージョンは、導入プログラムによって導入されたプログラムの版を示す番号である。ハッシュ値は、導入プログラムによって導入されたプログラムのハッシュ値である。
【００５８】
図９に示した導入履歴１７５の１行目と２行目の導入プログラムＩＤの値は、「ＩＮＳ００１」で共通している。このことは、１行目と２行目に対応する被導入プログラムが同一の導入処理で導入されたこと、すなわち、同一の導入プログラムによって導入されたことを示している。
【００５９】
更新制御部１８２ｄは、導入プログラムによる導入処理以外の書込処理を監視して、プログラムが不正に上書きされないようにするとともに、プログラムが正当に更新された場合は、その結果を更新履歴１７６に記録する。ここで、更新履歴１７６の一例を図１０に示す。図１０に示すように、更新履歴１７６は、連番、被更新プログラムパス名、前バージョン、新バージョン、前ハッシュ値、新ハッシュ値といった項目を有する。
【００６０】
連番は、行が追加される度にカウントアップされるユニークな番号である。被更新プログラムパス名は、更新プログラムによって更新されたプログラムのパス付きのファイル名である。前バージョンは、更新プログラムによって更新されたプログラムの更新前の版の番号である。新バージョンは、更新プログラムによって更新されたプログラムの更新後の版の番号である。前ハッシュ値は、更新プログラムによって更新されたプログラムの更新前のハッシュ値である。新ハッシュ値は、更新プログラムによって更新されたプログラムの更新後のハッシュ値である。
【００６１】
図１０に示した更新履歴１７６の１行目と３行目は、同一のプログラムに関するものであり、このプログラムが２回更新されていることを示している。すなわち、１行目に対応する１回目の更新ではバージョンが「９．０」でハッシュ値が「８７３ｊｄ７５ｄ」のプログラムが、バージョンが「９．１」でハッシュ値が「８３ｓ８４ｊ７ｚ」のプログラムへ更新されている。そして、３行目に対応する２回目の更新ではバージョンが「９．１」でハッシュ値が「８３ｓ８４ｊ７ｚ」のプログラムが、バージョンが「９．２」でハッシュ値が「９３ｆｇ４９２ｓ」のプログラムへ更新されている。
【００６２】
更新制御部１８２ｄは、他のプログラムを更新しようとしているプログラムが正当であるかを判断するために、それらのプログラムが同一の導入プログラムによって導入されたか否かを検証する。この検証のために、更新制御部１８２ｄは、導入履歴１７５に加えて更新履歴１７６を参照する。
【００６３】
導入履歴１７５には、プログラムが導入された時点のハッシュ値しか残っていないため、プログラムが既に更新を受けている場合には、プログラムの現在のハッシュ値を導入履歴１７５と照合しても、どの導入プログラムによって導入されたか特定できない。被導入プログラムパス名で照合することも考えられるが、何らかの理由でファイル名を含めて、パスが変更されていることがあり得るため好ましくない。
【００６４】
そこで、更新制御部１８２ｄは、プログラムの現在のハッシュ値を導入履歴１７５と照合し、どの導入プログラムによって導入されたか特定できない場合には、更新履歴１７６を参照して導入時のプログラムのハッシュ値を取得する。そして、取得した導入時のハッシュ値を導入履歴１７５と照合して、どの導入プログラムによって導入されたかを特定する。
【００６５】
例えば、図１０に示した例で２回更新されているプログラムの場合、現在のハッシュ値である「９３ｆｇ４９２ｓ」が新ハッシュの項目の値として設定されている３行目のデータから、１つ前のハッシュ値である「８３ｓ８４ｊ７ｚ」が取得される。続いて、１つ前のハッシュ値である「８３ｓ８４ｊ７ｚ」が新ハッシュの項目の値として設定されている１行目のデータから、２つ前のハッシュ値である「８７３ｊｄ７５ｄ」が取得される。
【００６６】
そして、２つ前のハッシュ値である「８７３ｊｄ７５ｄ」が新ハッシュの項目の値として設定されている行は更新履歴１７６には存在しないため、「８７３ｊｄ７５ｄ」が導入時のプログラムのハッシュ値として取得される。この「８７３ｊｄ７５ｄ」を図９に示した導入履歴１７５と照合することにより、導入プログラムの導入プログラムＩＤである「ＩＮＳ００１」が取得される。
【００６７】
また、更新制御部１８２ｄは、プログラムが正当に更新された場合、更新されたプログラムがホワイトリスト１７４に登録されていれば、更新後のプログラムの情報をホワイトリスト１７４に追加する。更新後のプログラムは、ハッシュ値が変わっているため、このようにしないと、更新後のプログラムが通常通り実行されなくなってしまうためである。
【００６８】
ホワイトリスト更新部１８２ｅは、ホワイトリスト１７４の更新処理を実行する。具体的には、ホワイトリスト更新部１８２ｅは、サーバ２０に対して問い合わせを行い、ホワイトリスト２１が更新されていれば、ホワイトリスト２１をダウンロードする。そして、ホワイトリスト更新部１８２ｅは、ホワイトリスト２１をホワイトリスト１７４へ統合する。統合処理の時に更新履歴も更新される。この更新履歴の更新は、ホワイトリスト更新部１８２ｅが行わず、更新制御部１８２ｄに対して更新処理を依頼する形で更新を行う。
【００６９】
そして、ホワイトリスト更新部１８２ｅは、統合後のホワイトリスト１７４をホワイトリスト２１と比較し、差分があれば、差分をサーバ２０へ送信する。この差分は、更新プログラムによって更新されたプログラムを正常に動作させるために更新制御部１８２ｄによって追加されたものであり、サーバ２０におけるホワイトリスト２１の更新作業に利用される。
【００７０】
変更履歴管理部１８２ｆは、ファイルアクセス制御部１８１ａから受信した制御コマンドに基づき、変更履歴１７７の登録、検索または削除などの処理を行う。
【００７１】
例えば、図７に示す例で言えば、制御コマンドが「ａｄｄ」である場合には、変更履歴管理部１８２ｆは、制御コマンドとともに受信した作成に使用したプログラム名、変更前の保存先及び変更後の保存先を対応付けて変更履歴１７７として登録する。
【００７２】
また、制御コマンドが「ｓｅａｒｃｈ」である場合には、変更履歴管理部１８２ｆは、制御コマンドとともに受信した作成に使用したプログラム名に含まれる「検索対象とするプログラム名」を用いて、同一のプログラム名を持つ変更履歴１７７を検索する。なお、変更履歴管理部１８２ｆは、変更履歴１７７の検索結果を制御コマンドに「ｒｅｐｌｙ」を配置してファイルアクセス制御部１８１ａへ返信する。このとき、変更履歴１７７の検索結果が得られた場合には、その変更履歴、すなわち作成に使用したプログラム名、変更前の保存先及び変更後の保存先を併せて返信する。
【００７３】
また、制御コマンドが「ｄｅｌ」である場合には、変更履歴管理部１８２ｆは、制御コマンドとともに受信した作成に使用したプログラム名、変更前の保存先及び変更後の保存先に対応する変更履歴１７７を削除する。
【００７４】
ここで、変更履歴１７７の一例を図１１に示す。図１１に示すように、変更履歴１７７は、作成に使用したプログラム名、変更前の保存先、変更後の保存先といった項目を有し、保存先の変更が行われた書込み要求ごとに行が追加される。
【００７５】
作成に使用したプログラム名は、ＯＳ１８１に対して書込み要求を行ったプログラムであり、例えば導入プログラム、更新プログラムや特定用途に使用するプログラムを含む。変更前の保存先は、情報処理装置１０ａの使用者によって指定された保存先であり、基本として情報処理装置１内部のハードディスク装置１７０へのファイルパスが指定される。また、変更後の保存先は、ファイルアクセス制御部１８１ａによって外部記憶装置１０ａへリダイレクトされたファイルパスである。
【００７６】
図１１に示した変更履歴１７７の１行目から３行目までは、「docviewer」によって生成されたファイルの保存先が内部記憶装置であるハードディスク装置１７０が外部記憶装置１０ａへ変更されたことを示す。例えば、１行目の例で言えば、「docviewer」によって生成された「A.dat」のファイルが「C:\A.dat」から「D:\redirect\C\A.dat」へリダイレクトされたことを示す。また、２行目の例で言えば、「docviewer」によって生成された「B.dat」のファイルが「C:\B.dat」から「D:\redirect\C\B.dat」へリダイレクトされたことを示す。３行目の例で言えば、「docviewer」によって生成された「C.dat」のファイルが「C:\C.dat」から「D:\redirect\C\C.dat」へリダイレクトされたことを示す。
【００７７】
また、図１１に示した変更履歴１７７の４行目では、「A.exe」によって作成された「D.dat」のファイルが「C:\D.dat」から「D:\redirect\C\D.dat」へリダイレクトされたことを示す。図１１に示した変更履歴１７７の５行目では、「B.exe」によって作成された「C.tmp」のファイルが「C:\00001\C.tmp」から「D:\redirect\C00001\C.tmp」へリダイレクトされたことを示す。図１１に示した変更履歴１７７の６行目では、「D.exe」によって作成された「D.bak」のファイルが「C:\00001\D.bak」から「D:\redirect\C00001\D.bak」へリダイレクトされたことを示す。
【００７８】
また、図１１に示した変更履歴１７７の７行目及び８行目では、「dvInstall」によって導入されたプログラムの保存先が内部記憶装置でハードディスク装置１７０が外部記憶装置１０ａへ変更されたことを示す。例えば、７行目の例で言えば、「dvInstall」によってインストールされる「docviewer.exe」が「C:\Program  Files\dv\docviewer.exe」から「D:\redirect\C\Program  Files\dv\docviewer.exe」へリダイレクトされたことを示す。８行目の例で言えば、「dvInstall」によってインストールされる「dvupdate.exe」が「C:\Program  Files\dv\dvupdate.exe」から「D:\redirect\C\Program  Files\dv\dvupdate.exe」へリダイレクトされたことを示す。
【００７９】
また、図１１に示した変更履歴１７７の９行目から１２行目では、「A  Install.exe」〜「D  Install.exe」によって導入されたプログラムの保存先が内部記憶装置でハードディスク装置１７０が外部記憶装置１０ａへ変更されたことを示す。例えば、９行目の例で言えば、「A  Install.exe」によってインストールされる「A.exe」が「C:\00001\A.exe」から「D:\redirect\C\00001\A.exe」へリダイレクトされたことを示す。１０行目の例で言えば、「B  Install.exe」によってインストールされる「B.exe」が「C:\00001\B.exe」から「D:\redirect\C\00001\B.exe」へリダイレクトされたことを示す。１１行目の例で言えば、「C  Install.exe」によってインストールされる「C.exe」が「C:\00001\C.exe」から「D:\redirect\C\00001\C.exe」へリダイレクトされたことを示す。１２行目の例で言えば、「D  Install.exe」によってインストールされる「C.exe」が「C:\00001\D.exe」から「D:\redirect\C\00001\D.exe」へリダイレクトされたことを示す。また、最終行の例で言えば、「Softxxx.exe」によって作成された「X.bak」のファイルが「C:\0000x\file_X.bak」から「D:\redirect\C\0000x\file_X.bak」へリダイレクトされたことを示す。
【００８０】
なお、図１１の例では、プログラムが作成するファイルとして「dat」、「tmp」、「bak」の３種類のファイルを例示したが他のファイルでもよく、ホワイトリスト１７４に非登録のプログラムが生成した他のファイルを保存する場合にも同様にリダイレクトされる。
【００８１】
次に、図３に示した実行制御プログラム１７３によって実行される処理の手順について説明する。図１２は、実行制御プログラム１７３の処理手順を示すフローチャートである。図１２に示すように、実行制御プログラム１７３が起動すると、ホワイトリスト更新部１８２ｅが後述するするホワイトリスト更新処理を実行して、ホワイトリスト１７４を更新する（ステップＳ３０１）。
【００８２】
続いて、動作制御部１８２ａは、ファイルアクセス制御部１８１ａからファイルアクセスの通知が来るのを待ち受ける（ステップＳ３０２）。そして、書込処理に関する通知があった場合は（ステップＳ３０３肯定）、動作制御部１８２ａは、通知に含まれる情報等に基づいて、書込処理をＯＳ１８１に依頼したプロセスを特定する（ステップＳ３０４）。
【００８３】
ここで、書込処理を依頼したプロセスが、導入プログラムが実行状態となったものであれば（ステップＳ３０５肯定）、動作制御部１８２ａは、後述する導入プログラム用書込処理を導入制御部１８２ｃに実行させる（ステップＳ３０６）。なお、導入プログラムが実行状態となったものであるか否かの判定は、例えば、プログラムの拡張子や、プロセスの挙動に基づいて行うことができる。例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）  ＯＳでは、導入プログラムはマイクロソフト社が規定した手順で実装を行い、拡張子としてｍｓｉを使用することが定められている。また、この導入プログラムを規定する以前は、導入プログラムによって導入される被導入プログラムは、キャビネット形式と呼ばれる拡張子がｃａｂの形式で纏められることが推奨されていた。以上からＷｉｎｄｏｗｓ（登録商標）  ＯＳでは、ｍｓｉやｃａｂといった拡張子で、導入プログラムかどうかの判断を行う。
【００８４】
その他のＯＳ、例えばＵＮＩＸ（登録商標）やそれらの派生ＯＳである、Ｌｉｎｕｘ（登録商標）、ＢＳＤにおいては、個々のＯＳで被導入プログラムを管理する管理プログラムが決まっている。このため、その管理プログラムを起動したファイルが導入プログラムであると判定することが可能である。
【００８５】
一方、書込処理を依頼したプロセスが、導入プログラムが実行状態となったものでなければ（ステップＳ３０５否定）、動作制御部１８２ａは、後述する非導入プログラム用書込処理を更新制御部１８２ｄに実行させる（ステップＳ３０７）。
【００８６】
また、ファイルアクセス制御部１８１ａから読出処理に関する通知があった場合は（ステップＳ３０３否定）、動作制御部１８２ａは、通知に含まれる情報等に基づいて、読出処理をＯＳ１８１に依頼したプロセスを特定する（ステップＳ３０８）。ここで、読出処理を依頼したプロセスが、導入プログラムが実行状態となったものであれば（ステップＳ３０９肯定）、動作制御部１８２ａは、そのまま読出処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ３１３）。
【００８７】
一方、読出処理を依頼したプロセスが、導入プログラムが実行状態となったものでなければ（ステップＳ３０９否定）、動作制御部１８２ａは、後述する動作判定処理を動作判定部１８２ｂに実行させる（ステップＳ３１０）。その結果、読出処理を依頼したプロセスが通常通りの処理を実行してよいものであることが分かれば（ステップＳ３１１肯定）、動作制御部１８２ａは、そのまま読出処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ３１３）。
【００８８】
また、読出処理を依頼したプロセスが通常通りの処理を実行してよいものでないことが分かれば（ステップＳ３１１否定）、動作制御部１８２ａは、読出処理をキャンセルさせるようにファイルアクセス制御部１８１ａに指示する（ステップＳ３１２）。
【００８９】
以上の処理手順を終了した後、動作制御部１８２ａは、ステップＳ３０２に戻って、ファイルアクセス制御部１８１ａから次の通知が来るのを待ち受ける。
【００９０】
図１３は、図１２に示した導入プログラム用書込処理（ステップＳ３０６）の処理手順を示すフローチャートである。図１３に示すように、まず、動作判定部１８２ｂによる動作判定処理が実行される（ステップＳ４０１）。
【００９１】
ここで、導入プログラムが通常通りの処理を実行してよいものでないことが分かれば（ステップＳ４０２否定）、導入制御部１８２ｃは、書込先のパスを外部記憶装置１１ａへ変更させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ４０３）。そして、ファイルアクセス制御部１８１ａは、書込み要求を行ったプログラム名、変更前の保存先及び変更後の保存先を変更履歴１７７として変更履歴管理部１８２ｆに登録させる（ステップＳ４０４）。
【００９２】
このように、実行制御プログラム１７３は、ホワイトリストに登録されていない導入プロセスであっても、プログラムの導入先を通常とは異なる場所に変更して導入させる。そして、導入後のプログラムについては、ファイルの読み書きを外部記憶装置１１ａに制限するものの、起動は認める。このような制御により、正式に実行が認められていないプログラムの動作や機能を安全な状態で確認することが可能になる。なお、保存先のパスの変更先は、他のプログラムに悪影響を生じない場所であれば、外部記憶装置１１ａでなくてもよい。例えば、他の情報処理装置の外部装置１１ｂや１１ｃのほか、サーバ２０であってもかまわない。
【００９３】
一方、導入プログラムが通常通りの処理を実行してよいものであることが分かれば（ステップＳ４０２肯定）、導入制御部１８２ｃは、通知に含まれる情報等に基づいて、書込先のファイルに関する情報を取得する（ステップＳ４０５）。そして、書込先のファイルがプログラムでなければ（ステップＳ４０６否定）、導入制御部１８２ｃは、そのまま書込処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ４０８）。
【００９４】
また、書込先のファイルがプログラムであれば（ステップＳ４０６肯定）、導入制御部１８２ｃは、導入プログラムと被導入プログラムの情報を対応づけて導入履歴１７５に記憶させる（ステップＳ４０７）。そして、導入制御部１８２ｃは、そのまま書込処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ４０８）。
【００９５】
図１４は、図１２に示した非導入プログラム用書込処理（ステップＳ３０７）の処理手順を示すフローチャートである。図１４に示すように、まず、動作判定部１８２ｂによる動作判定処理が実行される（ステップＳ５０１）。
【００９６】
ここで、要求元のプログラムが通常通りの処理を実行してよいものでないことが分かれば（ステップＳ５０２否定）、更新制御部１８２ｄは、書込先のパスを外部記憶装置１１ａへ変更させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ５０３）。そして、ファイルアクセス制御部１８１ａは、書込み要求を行ったプログラム名、変更前の保存先及び変更後の保存先を変更履歴１７７として変更履歴管理部１８２ｆに登録させる（ステップＳ５０４）。
【００９７】
一方、要求元のプログラムが通常通りの処理を実行してよいものであることが分かれば（ステップＳ５０２肯定）、更新制御部１８２ｄは、通知に含まれる情報等に基づいて、書込先のファイルに関する情報を取得する（ステップＳ５０５）。そして、書込先のファイルがホワイトリスト１７４に登録されたものでなければ（ステップＳ５０６否定）、更新制御部１８２ｄは、そのまま書込処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ５１６）。
【００９８】
書込先のファイルがホワイトリスト１７４に登録されたものであれば（ステップＳ５０６肯定）、更新制御部１８２ｄは、導入履歴１７５と更新履歴１７６を参照して、書込先のプログラムに対応する導入プログラムＩＤを取得する（ステップＳ５０７）。また、更新制御部１８２ｄは、導入履歴１７５と更新履歴１７６を参照して、書込処理の要求元のプログラムに対応する導入プログラムＩＤを取得する（ステップＳ５０９）。
【００９９】
ここで、一方でも取得できなければ（ステップＳ５０８否定またはステップＳ５１０否定）、同一の導入プログラムによって導入されたプログラム同士ではないことになるので、更新制御部１８２ｄは、書込処理をキャンセルさせる（ステップＳ５１３）。
【０１００】
また、導入プログラムＩＤをいずれも取得できた場合（ステップＳ５０８肯定かつステップＳ５１０肯定）、更新制御部１８２ｄは、取得された導入プログラムＩＤを比較する（ステップＳ５１１）。ここで、導入プログラムＩＤが一致しなかった場合も（ステップＳ５１２否定）、同一の導入プログラムによって導入されたプログラム同士ではないことになるので、更新制御部１８２ｄは、書込処理をキャンセルさせる（ステップＳ５１３）。
【０１０１】
一方、導入プログラムＩＤが一致した場合（ステップＳ５１２肯定）、更新制御部１８２ｄは、更新履歴１７６に情報を追加する（ステップＳ５１４）。さらに、更新制御部１８２ｄは、更新後のプログラムを通常通り実行できるように、書込先のプログラムに対応するホワイトリスト１７４の情報を更新する（ステップＳ５１５）。そして、更新制御部１８２ｄは、そのまま書込処理を実行させるようにファイルアクセス制御部１８１ａに指示する（ステップＳ５１６）。
【０１０２】
なお、図１４に示した処理手順では、プログラムが上書きされそうになったときに導入プログラムの一致を確認する処理を、ホワイトリスト１７４に登録されているプログラムのみを対象として行っている。このように制御することにより、導入プログラムの一致を確認する処理によって生じる負荷を軽減することができる。
【０１０３】
図１５は、図１２〜１４に示した動作判定処理（ステップＳ３１０、ステップＳ４０１、ステップＳ５０１）の処理手順を示すフローチャートである。図１５に示すように、動作判定部１８２ｂは、判定対象のプロセスに関する情報をファイルアクセス制御部１８１ａが取得し動作制御部１８２ａに通知した情報から取得する（ステップＳ６０１）。そして、動作判定部１８２ｂは、判定対象のプロセスに対応するプログラムからハッシュ値を生成し（ステップＳ６０２）、ハッシュ値を検索キーとしてホワイトリスト１７４を検索する（ステップＳ６０３）。
【０１０４】
ここで、検索がヒットした場合は（ステップＳ６０４肯定）、動作判定部１８２ｂは、判定対象のプロセスは通常通り実行して構わないと判定する（ステップＳ６０５）。一方、検索がヒットしない場合は（ステップＳ６０４否定）、動作判定部１８２ｂは、判定対象のプロセスに関する情報から親プロセスの有無を確認する（ステップＳ６０６）。親プロセスが存在しない場合は（ステップＳ６０７否定）、判定対象のプロセスは通常通り実行させることはできないと判定する（ステップＳ６０８）。親プロセスが存在する場合は（ステップＳ６０７肯定）、親プロセスのプログラムからハッシュ値を生成し（ステップＳ６０９）、親プロセスのハッシュ値を検索キーとしてホワイトリスト１７４を再検索する（ステップＳ６０３）。
【０１０５】
図１６は、図１２に示したホワイトリスト更新処理の処理手順を示すフローチャートである。図１１に示すように、ホワイトリスト更新部１８２ｅは、ホワイトリスト２１の更新の有無をサーバ２０に問い合わせる（ステップＳ７０１）。ここで、更新がなければ（ステップＳ７０２否定）、ホワイトリスト更新処理は終了する。
【０１０６】
更新があれば（ステップＳ７０２肯定）、ホワイトリスト更新部１８２ｅは、ホワイトリスト２１をサーバ２０からダウンロードし（ステップＳ７０３）、ホワイトリスト１７４へ統合させる（ステップＳ７０４）。そして、ホワイトリスト更新部１８２ｅは、統合後のホワイトリスト１７４をホワイトリスト２１と比較し（ステップＳ７０５）、差分があれば（ステップＳ７０６肯定）、差分をサーバ２０へ送信する（ステップＳ７０７）。
【０１０７】
このとき、ホワイトリスト１７４へ新たに追加されたプログラムがあれば（ステップＳ７０８肯定）、ファイルアクセス制御部１８１ａは、追加プログラム名を変更履歴管理部１８２ｆへ送信することにより後述する書換え処理を起動する（ステップＳ７０９）。
【０１０８】
図１７は、図１６に示したホワイトリスト統合処理（ステップＳ７０４）の処理手順を示すフローチャートである。ホワイトリスト２１から１行読み取り（ステップＳ８０１）、読み取りができた場合は（ステップＳ８０２肯定）、ホワイトリスト２１と統合前のホワイトリスト１７４を比較し、ハッシュ値の確認を行う（ステップＳ８０３）。ハッシュ値が一致したプログラムについては（ステップＳ８０４肯定）、ホワイトリスト２１とホワイトリスト１７４で同一プログラムということで統合済みと判断し、ステップＳ８０１に戻ってホワイトリスト２１から次の１行を読み取る。
【０１０９】
ハッシュ値が一致しなかったプログラムについて（ステップＳ８０４否定）、ホワイトリスト更新部１８２ｅは、次に名称とファイル名のどちらか一方が一致するか確認を行う（ステップＳ８０５）。そして、一致した場合は（ステップＳ８０６肯定）、ホワイトリスト更新部１８２ｅは、バージョン番号を比較する（ステップＳ８０７）。続いて、ホワイトリスト２１がホワイトリスト１７４より同一または大きい場合に（ステップＳ８０８肯定）、ホワイトリスト更新部１８２ｅは、ホワイトリスト１７４に統合を行う（ステップＳ８０９）。統合処理に続いて更新履歴１７６に情報を追加する必要がある（ステップＳ８１０）。この時はホワイトリスト更新部１８２ｅが更新制御部１８２ｄに通知を行い、更新履歴１７６に情報の追加を依頼する。そして、ステップＳ８０１に戻ってホワイトリスト２１から次の１行を読み取る。
【０１１０】
逆にバージョン番号を比較しホワイトリスト２１よりホワイトリスト１７４が大きい場合には（ステップＳ８０８否定）、ホワイトリスト更新部１８２ｅは、ホワイトリスト２１よりもホワイトリスト１７４の方がより新しい情報と見做す。すなわち、ホワイトリスト更新部１８２ｅ、ホワイトリスト１７４への統合を行わずに、ステップＳ８０１に戻ってホワイトリスト２１から次の１行を読み取る。名称とファイル名のどちらも一致しなかった場合は（ステップＳ８０６否定）、ホワイトリスト更新部１８２ｅ新規プログラムとして、ホワイトリスト２１をホワイトリスト１７４に統合を行う（ステップＳ８１１）。そして、ステップＳ８０１に戻ってホワイトリスト２１から次の１行を読み取る。
【０１１１】
そして、ホワイトリスト２１の全ての行を処理し終えたならば（ステップＳ８０２否定）、ホワイトリストを統合する処理を終了する。
【０１１２】
図１８は、図１６に示した書換え処理（ステップＳ７０９）の処理手順を示すフローチャートである。図１８に示すように、変更履歴管理部１８２ｆは、ファイルアクセス制御部１８１ａから受信したプログラム名、すなわちホワイトリスト１７４へ追加されたプログラム名を変更履歴１７７から検索する（ステップＳ９０１）。
【０１１３】
そして、変更履歴１７７の検索結果が得られた場合（ステップＳ９０２肯定）には、変更履歴管理部１８２ｆは、ホワイトリスト１７４へ追加されたプログラム名を含む変更履歴１７７をファイルアクセス制御部１８１ａへ返信する。
【０１１４】
その後、ファイルアクセス制御部１８１ａは、変更履歴１７７から１行読み取る（ステップＳ９０３）。このとき、読み取りができた場合は（ステップＳ９０４肯定）、ファイルアクセス制御部１８１ａは、変更履歴１７７に含まれる変更後の保存先に書き込まれているデータを変更前の保存先へ書き換える（ステップＳ９０５）。そして、ファイルアクセス制御部１８１ａは、変更前の保存先へ書き戻した変更履歴を変更履歴管理部１８２ｆに削除させる（ステップＳ９０６）。なお、この時にファイルアクセス制御部１８１ａが欠き戻すデータには、ホワイトリスト１７４に追加登録されたプログラムによって導入されたプログラム、或いはホワイトリスト１７４に追加登録されたプログラムによって生成されたデータが含まれる。
【０１１５】
そして、変更履歴管理部１８２ｆから取得した変更履歴１７７の全ての行を処理し終えたならば（ステップＳ９０４否定）、変更前の保存先への書換え処理を終了する。なお、変更履歴１７７の検索結果が得られた場合（ステップＳ９０２否定）には、ファイルパスの書換えへ行うことなく処理を終了する。
【０１１６】
上述してきたように、本実施例に係る情報処理装置１０ａによれば、ホワイトリスト１７４へ追加されたプログラムが変更履歴１７７に含まれる場合に、変更後の保存先に書き込まれているプログラムを変更前の保存先へ書き換えるように制御する。このため、外部記憶装置１１ａが取り外された場合でも情報処理装置１０ａ内部のハードディスク装置１７０へプログラムを再導入する手間を不要化できる。
【０１１７】
また、本実施例に係る情報処理装置１０ａによれば、ホワイトリスト１７４へ追加されたプログラムが変更履歴１７７に含まれる場合に、変更後の保存先に書き込まれているデータを変更前の保存先へ書き換えるように制御する。このため、外部記憶装置１１ａが取り外された場合でも同じデータを再び生成する手間を不要化できる。
【０１１８】
また、本実施例に係る情報処理装置１０ａによれば、書込み元のプログラムと書込み先のプログラムが同一の導入プログラムによって導入された否かに基づいて上書きの可否を判定することにより、プログラムの不正な上書きを防止することができる。すなわち、導入処理時に導入プログラムと被導入プログラムの対応を導入履歴１７５に記録しておくことにより、システム管理者に負担をかけることなく、上記の可否判定を実現することができる。さらに、本実施例に係る情報処理装置１０ａによれば、悪意によってプログラムが上書きされることだけでなく、不具合、誤操作、誤動作等によってプログラムが誤って上書きされることも防止することができる。
【０１１９】
なお、上記の実施例２では、情報処理装置１０ａとしてパーソナルコンピュータを想定して説明を行った。しかし、開示の実行制御方法は、携帯電話、ＰＨＳ（Personal  Handyphone  System）、ＰＤＡ（Personal  Digital  Assistants）などの他の情報処理装置にも同様に適用できる。
【０１２０】
なお、上記の実施例２では、サーバ２０からホワイトリスト２１をダウンロードした場合に、ホワイトリスト２１と既存のホワイトリスト１７４とを統合し、ダウンロードしたホワイトリスト２１と統合後のホワイトリストを比較する場合を説明した。ところが、情報処理装置１０ａ〜１０ｃでは、サーバ２０からダウンロードしたホワイトリスト２１をホワイトリスト１７４としてそのまま上書きすることとしてもかまわない。
【０１２１】
なお、上記の実施例１及び２では、内部記憶部２から外部記憶部３へ書込みをリダイレクトする場合を説明した。しかし、たとえば、外部記憶装置の代わりに情報処理装置１にもう１台の内部記憶装置を接続し、すなわち、情報処理装置１に２台の内部記憶装置を接続し、一方の内部記憶装置からもう片方の内部記憶装置へ書込みをリダイレクトする構成としてもかまわない。また、情報処理装置１に接続した１台の記憶装置を複数のパーティションに論理的に分割しておき、あるパーティションから別のパーティションへ書込みをリダイレクトする構成としてもかまわない。
【符号の説明】
【０１２２】
１    情報処理装置
２    内部記憶装置
２ａ  プログラムリスト
２ｂ  変更履歴
２ｃ  プログラム
３    外部記憶装置
３ｃ  プログラム
４    変更制御部
５    変更情報記録部
６    書換え制御部
１０ａ〜１０ｃ  情報処理装置
１００  情報処理システム
１１０  ＣＰＵ
１２０  入力部
１３０  表示部
１４０  ネットワークＩ／Ｆ部
１５０  入出力Ｉ／Ｆ部
１６０  記憶媒体読書部
１７０  ハードディスク装置
１７１  ＯＳプログラム
１７２  アプリケーションプログラム
１７３  実行制御プログラム
１７４  ホワイトリスト
１７５  導入履歴
１７６  更新履歴
１７７  変更履歴
１８０  ＲＡＭ
１８１  ＯＳ
１８１ａ  ファイルアクセス制御部
１８２  実行制御プロセス
１８２ａ  動作制御部
１８２ｂ  動作判定部
１８２ｃ  導入制御部
１８２ｄ  更新制御部
１８２ｅ  ホワイトリスト更新部
１８２ｆ  変更履歴管理部
１８３  実行プロセス
１９０  バス
１１ａ〜ｃ  外部記憶装置
２０  サーバ
２１  ホワイトリスト
２２  更新ファイル提供装置
３０  ネットワーク
３１  インターネット
【図１】
0005381670.tif 000002
【図２】
0005381670.tif 000003
【図３】
0005381670.tif 000004
【図４】
0005381670.tif 000005
【図５】
0005381670.tif 000006
【図６】
0005381670.tif 000007
【図７】
0005381670.tif 000008
【図８】
0005381670.tif 000009
【図９】
0005381670.tif 000010
【図１０】
0005381670.tif 000011
【図１１】
0005381670.tif 000012
【図１２】
0005381670.tif 000013
【図１３】
0005381670.tif 000014
【図１４】
0005381670.tif 000015
【図１５】
0005381670.tif 000016
【図１６】
0005381670.tif 000017
【図１７】
0005381670.tif 000018
【図１８】
0005381670.tif 000019