(57)【要約】 【課題】不正プログラム等によって実行形式ファイルやコンテンツファイルの改竄されることによる被害を防止するための情報処理装置を提供する。【解決手段】不正プログラム等によって改竄される恐れのあるファイルを復元可能な形式で予め変換して保存しておき、アプリケーションプログラムが利用するときに復元する。変換ファイルが書き換えられたか否かは同一性確認情報の比較によって判別できる。ファイルが改竄されている場合には自動的に修復可能である。【選択図】図９
2013164732.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを読み込む読み込み手段と、
前記読み込み手段によって読み込まれたファイルの内容をファイル毎に復元可能な方法で変換するコンテンツデータ変換手段と、
前記読み込み手段によって読み込まれたファイルの内容を特定できる同一性確認情報を計算する同一性確認情報計算手段と、
前記コンテンツデータ変換手段で変換されたファイルの内容を変換ファイルに書き込み、前記同一性確認情報計算手段により計算された同一性確認情報を前記変換ファイルと対応づけて保存する書き込み手段と
を備える変換処理部と、
ネットワークを介して、外部の端末から指定されたファイルに対応する前記変換ファイルを変換前のファイルに復元する復元手段と、
前記変換ファイルを読み込む又は実行する場合に、前記復元手段により復元された変換ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記外部の端末から指定されたファイルに対応する変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定する同一性確認手段と、
前記同一性確認手段により、一致する場合は、前記復元手段により復元されたファイルの内容を用いてプロセスの処理を継続させる実行手段と、
前記同一性確認手段により、一致しない場合は、前記プロセス処理をエラーにする実行中止手段と
を備える復元処理部と
具備することを特徴とする情報処理装置。
【請求項２】
実行ファイルを読み込む読み込み手段と、
前記読み込み手段によって読み込まれた実行ファイルの内容をファイル毎に復元可能な方法で変換するコンテンツデータ変換手段と、
前記読み込み手段によって読み込まれた実行ファイルの内容を特定できる同一性確認情報を計算する同一性確認情報計算手段と、
前記コンテンツデータ変換手段で変換された実行ファイルの内容を変換ファイルに書き込み、前記同一性確認情報計算手段により計算された同一性確認情報を前記変換ファイルと対応づけて保存する書き込み手段と
を備える変換処理部と、
前記変換ファイルを読み込むまたは実行する場合に、前記変換ファイルを変換前の実行ファイルに復元する復元手段と、
前記復元手段により復元された実行ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定する同一性確認手段と、
前記同一性確認手段により、一致する場合は、前記復元手段により復元された実行ファイルの内容を用いてプロセスの処理を継続させる実行手段と、
前記同一性確認手段により、一致しない場合は、前記プロセス処理をエラーにする実行中止手段と
を備える復元処理部と
具備することを特徴とする情報処理装置。
【請求項３】
前記情報処理装置は、Ｗｅｂサーバ又はＦＴＰサーバであることを特徴とする請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記実行中止手段は、前記書き込み手段により書き込まれた変換ファイルおよび同一性確認情報の複製を、前記復元手段の対象となった前記変換ファイルおよび前記同一性確認手段で用いた前記変換ファイルと対応づけて保存された前記同一性確認情報に上書きする修復手段をさらに具備することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項５】
前記変換ファイルは、複数のファイルで構成されていることを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項６】
前記書き込み手段は、同一性確認情報を変換ファイル内に保存することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項７】
前記実行手段は、
復元された変換前のファイルを一定時間メモリに保持し、
前記復元された変換前のファイルがメモリに保持されている間は、前記プロセスによる前記復元された変換前のファイルへのアクセスは、前記メモリに保持されている前記復元された変換前のファイルに行なわれることを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項８】
ファイルを読み込み、
前記読み込まれたファイルの内容をファイル毎に復元可能な方法で変換し、
前記読み込まれたファイルの内容を特定できる同一性確認情報を計算し、
前記変換されたファイルの内容を変換ファイルに書き込み、前記計算された同一性確認情報を前記変換ファイルと対応づけて保存し、
ネットワークを介して、外部の端末から指定されたファイルに対応する前記変換ファイルを変換前のファイルに復元し、
前記変換ファイルを読み込む又は実行する場合に、前記復元された変換ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記外部の端末から指定されたファイルに対応する変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定し、
一致する場合は、前記復元手段により復元されたファイルの内容を用いてプロセスの処理を継続させ、一致しない場合は、前記プロセス処理をエラーにする情報処理装置におけるコンテンツ保護方法。
【請求項９】
実行ファイルを読み込み、
前記読み込まれた実行ファイルの内容をファイル毎に復元可能な方法で変換し、
前記読み込まれた実行ファイルの内容を特定できる同一性確認情報を計算し、
前記変換された実行ファイルの内容を変換ファイルに書き込み、前記計算された同一性確認情報を前記変換ファイルと対応づけて保存し、
前記変換ファイルを読み込むまたは実行する場合に、前記変換ファイルを変換前の実行ファイルに復元し、
前記復元された実行ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定し、
一致する場合は、前記復元手段により復元された実行ファイルの内容を用いてプロセスの処理を継続させ、一致しない場合は、前記プロセス処理をエラーにする情報処理装置における実行ファイルの保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正プログラム等によって実行形式ファイルやコンテンツファイルが改竄されることを防止するための情報処理装置に関する。
【背景技術】
【０００２】
情報セキュリティの重要性に対する社会的認識は向上してきており、システム的な対策が講じられてきたが、コンピュータウイルスなどの不正プログラム（以下、不正プログラム）による重大な事故はあとを絶たない。
【０００３】
これまでの対策はファイアウォール、認証システム、ウイルス対策ソフトなど、内部のシステム環境に外部から不正プログラムが侵入しないようにする考え方のものがほとんどである。
【０００４】
ファイアウォールは、予め許可したIPアドレスやプロトコルのパケットのみを受信可能にする。認証システムはパスワードなどの認証で許可された場合のみネットワークアクセスを許可する。
【０００５】
ウイルス対策ソフトは、不正プログラムの定義ファイルを参照して、条件に合致するデータを含むファイルや通信データを破棄する。
【０００６】
個々の不正プログラムに対する定義ファイルを用いた従来のウイルス対策ソフトでは、一部のコードが異なるいわゆる亜種や新種の不正プログラムを検知することはできないため、より一般化された定義ファイルを用いて類似の不正プログラムに対応できるようにしたり、プログラムの動作から不正プログラムの疑いのあるものを検知したりする技術が開発されてきた。
【０００７】
しかしながら、いわゆる標的型ウイルスと呼ばれる不正プログラムは、受信者が疑いを持たないようなタイトルや文面のメールで送られ、受信者が添付ファイルを開いた際に閲覧に用いるアプリケーションプログラムの脆弱性を利用して不正なコードが実行されるなど、極めて巧妙化されており、現在のシステム的対策で不正プログラムの侵入を完全に防ぐことは事実上達成されていない。
【０００８】
したがって、システム的対策をかいくぐって一旦内部のシステム環境に侵入されてしまうと、被害を食い止めることができないのが実情である。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
不正プログラムの多くは、侵入したコンピュータにおいて自身のコピーをハードディスクに保存する。これが後に人の操作またはOS起動時に自動的に起動されることによって、情報を外部に送信するなどの不正プログラムが目的とする不正動作が発現する。
【００１０】
また、すでにインストールされているアプリケーションプログラムの実行形式ファイルに不正プログラムが不正なコードを埋め込んで、これが実行されることで不正プログラムが目的とする不正動作が発現する場合もある。
【００１１】
さらに、不正プログラムが目的とする不正行為の一つとして、Webページなどの改竄があげられる。図１に示すように、Webページを公開しようとする人（法人含む）は、Webサーバ１０１に公開するコンテンツをWebサーバ１０１の記憶装置１０２（例えば、ＨＤＤ）にコンテンツファイル１０３として保存し、Webサーバアプリケーションプログラムを稼働させる。コンテンツファイル１０３の種類には、htmlファイル、画像ファイル、動画ファイル、音声ファイル、プログラムファイル(cgi、phpなど)、ダウンロード対象のファイルなどがある。
【００１２】
Webサーバアプリケーションプログラム１０１が、インターネット１０４を経由して、端末１０５〜１０７からのリクエストを受信すると、Webサーバアプリケーションプログラム１０１は、コンテンツファイル１０３を読み込んで、コンテンツデータを返信する（プログラムファイルの場合は実行結果が返信されるコンテンツデータになる）。
【００１３】
不正プログラムがこれらのコンテンツファイル１０３を書き換えると、意図しない内容が端末に表示されるだけでなく、不正ファイルが勝手に端末にダウンロードされて拡散するなどさらに被害が拡大する恐れがある。
【００１４】
本発明においては、不正プログラムの侵入を完全に防ぐことは事実上極めて困難であり、不正プログラムは内部のシステム環境に侵入しうるものであることを前提とし、不正プログラムが、自らのコピーを作成したり、インストールされている正常な実行形式ファイルやコンテンツファイルを書き換えたりした場合でも、改竄されたことを検知し、不正なコードが実行されないようにすることで、実害を防ぐことができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の発明によれば、ファイルを読み込む読み込み手段と、前記読み込み手段によって読み込まれたファイルの内容をファイル毎に復元可能な方法で変換するコンテンツデータ変換手段と、前記読み込み手段によって読み込まれたファイルの内容を特定できる同一性確認情報を計算する同一性確認情報計算手段と、前記コンテンツデータ変換手段で変換されたファイルの内容を変換ファイルに書き込み、前記同一性確認情報計算手段により計算された同一性確認情報を前記変換ファイルと対応づけて保存する書き込み手段と
を備える変換処理部と、ネットワークを介して、外部の端末から指定されたファイルに対応する前記変換ファイルを変換前のファイルに復元する復元手段と、前記変換ファイルを読み込む又は実行する場合に、前記復元手段により復元された変換ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記外部の端末から指定されたファイルに対応する変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定する同一性確認手段と、前記同一性確認手段により、一致する場合は、前記復元手段により復元されたファイルの内容を用いてプロセスの処理を継続させる実行手段と、前記同一性確認手段により、一致しない場合は、前記プロセス処理をエラーにする実行中止手段とを備える復元処理部と具備することを特徴とする情報処理装置、である。
【００１６】
本発明の第２の発明によれば、  実行ファイルを読み込む読み込み手段と、前記読み込み手段によって読み込まれた実行ファイルの内容をファイル毎に復元可能な方法で変換するコンテンツデータ変換手段と、前記読み込み手段によって読み込まれた実行ファイルの内容を特定できる同一性確認情報を計算する同一性確認情報計算手段と、前記コンテンツデータ変換手段で変換された実行ファイルの内容を変換ファイルに書き込み、前記同一性確認情報計算手段により計算された同一性確認情報を前記変換ファイルと対応づけて保存する書き込み手段とを備える変換処理部と、前記変換ファイルを読み込むまたは実行する場合に、前記変換ファイルを変換前の実行ファイルに復元する復元手段と、前記復元手段により復元された実行ファイルの内容から同一性確認情報を計算し、前記計算された同一性確認情報と、前記変換ファイルと対応づけて保存された同一性確認情報とが一致するか否かを判定する同一性確認手段と、前記同一性確認手段により、一致する場合は、前記復元手段により復元された実行ファイルの内容を用いてプロセスの処理を継続させる実行手段と、前記同一性確認手段により、一致しない場合は、前記プロセス処理をエラーにする実行中止手段とを備える復元処理部を具備することを特徴とする情報処理装置、である。
【発明の効果】
【００１７】
本発明によれば、不正なコードが実行されないようにすることで、実害を防ぐことができる情報処理装置を提供できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施の形態に係るWebサーバコンテンツ処理が実行されるWebサーバ１０１の接続環境を説明するための図である。
【図２】本発明の第１の実施の形態に係るWebサーバ１０１の典型的なハードウェア構成を示す図である。
【図３】記憶装置２０３に記憶されるソフトウェアを説明するための図である。
【図４】変換処理アプリケーションプログラム３０２の動作を説明するためのフローチャートである。
【図５】１ファイルで構成される変換ファイルを示す図である。
【図６】複数のファイルで構成された変換ファイルを示す図である。
【図７】管理ファイルの一例を示す図である。
【図８】復元処理モジュールロード時の処理を説明するためのフローチャートである。
【図９】ファイルオープンＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【図１０】ファイルリードＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【図１１】ファイルクローズＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【図１２】ファイルオープンＡＰＩを捕捉（フック）した場合の他の処理を説明するためのフローチャートである。
【図１３】ファイルリードＡＰＩを捕捉（フック）した場合の他の処理を説明するためのフローチャートである。
【図１４】監視常駐プログラム３０４の起動時の処理の流れを示すフローチャートである。
【図１５】監視常駐プログラム３０４が実行形式ファイルの実行ＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【図１６】ライブラリロードＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
＜実施形態の概要＞
本実施形態においては、不正プログラム等によって改竄された場合は、そのままの状態で利用してしまうことがないようにしたいファイル（例えば、実行ファイル、ネットワークを介して外部に提供されるコンテンツ）を復元可能な形式で予め破壊（変換）して保存しておき、利用するときに復元する。
【００２０】
これにより、万一変換状態のファイル（以下、変換ファイル）が不正プログラム等によって書き換えられ、不正なコードが書き込まれたとしても、利用時の復元処理によってその不正なコードは破壊されるため、不正なコードが実行されたり、実行可能な状態で他のに配信されたりすることはない。
【００２１】
復元可能なファイルの破壊（変換）方法としては、AESやDESなど暗号化のアルゴリズムを利用する方法が考えられる。また、変換ファイルは複数のファイルに分散して保存しておく方法もある。
【００２２】
変換アルゴリズムは複数のアルゴリズムのうちからユーザが選択できるようにしてもよいし、復元のオーバーヘッドを抑えるようにファイルサイズなどを参照して変換アルゴリズムを自動的に選択するようにしてもよい。
【００２３】
ファイルを変換して保存する際に、変換前の元データの内容からそれと対応する値を計算して変換ファイルと対応付けて保存しておき、利用時に復元した際に、復元後のファイル内容に対し同様の値を計算して、保存しておいた変換前の値と比較することによって、変換ファイルが書き換えられたか否かを確認することができる。
【００２４】
元データと対応付ける値（以下、同一性確認情報）としては、例えば、元データのハッシュ値を用いる方法が考えられる。変換ファイルの異常が検知された場合は、予めバックアップしておいた正常なファイルを用いて異常なファイルを上書きするなどして、自動的に修復することが可能である。
【００２５】
同一性確認情報や復元に必要な情報（以下、復元情報）は、変換ファイルとは別に管理・保存してもよいし、変換ファイルの一部に復元情報部を設けて同一ファイル内に保持してもよい。なお、同一性確認情報や復元情報を含む復元情報部はセキュリティの観点から、暗号化などを施してそのままでは読み取れないようにしておくことが望ましい。
【００２６】
一般に、ファイルが意図せず書き換えられていないかをチェックする方法として、定期的にファイルのサイズ、タイムスタンプ、ハッシュ値などをチェックする方法がある。しかしながら、定期的なチェックでは、チェックを行ってからアプリケーションプログラムがそのファイルを利用するまでの間に改竄された場合は検知することができない。
【００２７】
本実施形態においては、アプリケーションプログラムがファイルを利用するために当該ファイルにアクセスした際に、ファイルアクセスAPIを捕捉してチェックを行うため、改竄されたままの状態のファイルをアプリケーションプログラムが利用してしまうことを確実に防止できる。
【００２８】
復元処理による処理時間のオーバーヘッドを抑えるため、変換ファイルから復元した元データを一定時間メモリ上に保持しておき、それがメモリ上に保持されている間に、同ファイルに対するアクセスがあった場合には、新たに復元処理を行わず、メモリ上に保持してある元データを利用するようにしてもよい。
【００２９】
上記の付属処理を含めた復号処理全般は、サービスやデーモンなどの常駐プログラムとして提供されてもよいし、対象となるファイルを利用するプロセスにロードされるライブラリとして提供されてもよい。また、OSの一部として動作するドライバとして提供されてもよい。
【００３０】
復元可能な形式でファイルを破壊（変換）し、変換ファイルを作成する処理は、独立したアプリケーションプログラムとして提供される。このアプリケーションプログラムにより変換されたファイルがそのファイルを利用するプロセスにとって正当なファイルとされることになる。
【００３１】
本実施形態により、Webサーバ上でコンテンツファイルが不正プログラム等により意図せず書き換えられたとしても、これを確実に検知して、不正に書き換えられたコンテンツを端末に送信しないようにし、実害を防ぐことができる。
【００３２】
また、サーバまたは端末において実行形式ファイルが不正プログラム等により意図せず書き換えられたり、新たに作成されたりしても、これを確実に検知して、悪意あるコードが実行されないようすることができる。
【００３３】
いずれの場合も、ファイルが書き換えられていることを検知した場合は、これをバックアップファイルから自動的に修復することが可能である。
【００３４】
＜実施の形態＞
以下、本発明の実施の形態について、図面を参照して説明する。
【００３５】
＜第１の実施の形態＞（Webサーバコンテンツの保護）  
図１は、本発明の第１の実施の形態に係るWebサーバコンテンツ処理が実行されるWebサーバ１０１の接続環境を説明するための図である。また、図２は、本発明の第１の実施の形態に係るWebサーバの典型的なハードウェア構成を示す図である。
【００３６】
同図に示すように、Webサーバ１０１は、バス２００に接続されたＣＰＵ２０１、メモリ２０２、記憶装置２０３及び通信デバイス２０４を具備する。
【００３７】
ＣＰＵ２０１は、記憶装置２０３に記憶された本発明の実施の形態に係るWebサーバ１０１のコンテンツ保護プログラム（変換処理アプリケーションプログラム、復元処理モジュール、監視常駐プログラム）などと協働して、本発明の実施の形態に係るコンテンツ保護処理を実行する他、Webサーバ１０１の全体の制御を司るものである。
【００３８】
メモリ２０２は、本発明の実施の形態に係るコンテンツ保護プログラムを実行する際に必要とされるワークエリアなどとして使用される。
【００３９】
記憶装置２０３は、Webサーバ１０１のコンテンツ保護プログラム、データなどを格納するためのものであり、例えば、ハードディスクドライブ（ＨＤＤ）、光ディスクドライブ、ＤＶＤ、ＭＯなどの大容量記憶装置である。
【００４０】
通信デバイス２０４は、インターネット１０４を介した外部装置との通信の制御を司る。
【００４１】
記憶装置２０３には、図３に示すように、保護対象となるコンテンツの他に、ＯＳ（オペレーティングシステム）３００、Webサーバアプリケーションプログラム３０１、変換処理アプリケーションプログラム３０２、復元処理モジュール３０３及び監視常駐プログラム３０４などが記憶されている。
【００４２】
保護対象となるコンテンツは、例えば、図１に示したように、Webサーバ上に保存してインターネットに公開するコンテンツファイル（htmlファイル、画像ファイル、動画ファイル、音声ファイル、cgiファイル、phpファイル、ダウンロード対象のファイルなど ）である。
【００４３】
変換処理アプリケーションプログラム３０２は、本発明の第１の実施の形態及び第２の実施の形態に共通に使用されるプログラムであって、指定されたファイルの内容をファイルごとに復元可能な方法で変換し、ファイルの内容を特定できる同一性確認情報を計算し、変換ファイルと同一性確認情報を変換ファイルと対応付けて保存する。
【００４４】
復元処理モジュール３０３は、Webサーバアプリケーションプログラム３０１内に設けられてもよく、Web サーバアプリケーションプログラム３０１を直接変更しない場合には、Webサーバアプリケーションプログラム３０１によってロードされる動的ライブラリとして提供される。
【００４５】
本ライブラリに含まれる処理としては、復元処理本体のほか、Webサーバアプリケーションプログラム３０２のプロセス起動時に本ライブラリがロードされた際に、ファイルにアクセスするApplication Program Interface (API)をフックする処理が含まれる。フックするファイルアクセスAPIは少なくとも、ファイルオープンAPI、ファイルリードAPI、ファイルクローズAPIである。なお、監視常駐プログラム３０４については、第２の実施の形態において説明する。
【００４６】
Webサーバ１０１上に保存してインターネットに公開するコンテンツファイル（htmlファイル、画像ファイル、動画ファイル、音声ファイル、cgiファイル、phpファイル、ダウンロード対象のファイルなど ）は、変換処理アプリケーションプログラム３０２により、復元可能な形式で変換され保存される。
【００４７】
図４は、変換処理アプリケーションプログラム３０２の動作を説明するためのフローチャートである。
【００４８】
Webサーバ１０１は、端末１０５−１０７からWebサーバ１０１のコンテンツファイルのリクエストを受信する。変換処理アプリケーションプログラム３０２は、このリクエストに対応する変換対象ファイルを指定し（Ｓ１）、指定した変換対象ファイルを読み込み（Ｓ２）、読み込まれたファイルの同一性確認情報の計算を行なう（Ｓ３）。同一性確認情報は、例えば、ハッシュ値である。
【００４９】
次に、読み込まれた変換対象ファイルの変換が行なわれる（Ｓ４）。この変換は、例えば、例えば、AESやDESなど暗号化のアルゴリズムである。その後、変換ファイルの書き込み（Ｓ５）、復元情報の書き込み（Ｓ６）及び同一性確認情報の書き込み（Ｓ７）が行なわれる。変換ファイルは、１ファイルであっても良いし、複数のファイルでも良い。
【００５０】
図５は、１ファイルで構成される変換ファイルを示す図である。
【００５１】
同図に示すように、１ファイルで構成された変換ファイル４００は、復元情報部４０１及び変換データ部４０２を有する。
【００５２】
復元情報部４０１は、暗号の復号鍵、同一性確認情報などファイルの復元に必要な情報を格納する。変換データ部４０２は、変換されたデータを格納する。
【００５３】
図６は、複数のファイルで構成された変換ファイルを示す図である。
【００５４】
同図に示すように、最初の変換ファイル４１０−１は、復元情報部４１１及び変換データ部４１２−１を有し、変換ファイル４１０−２〜４１０−Ｎは、変換データ部４１２−２〜４１２−Ｎを有する。
【００５５】
復元情報部４１１は、同一性確認情報などファイルの復元に必要な情報の他、複数のファイルに対応した復元情報や同一性確認情報があるときは、これらの情報も格納する。
【００５６】
上述の例では、変換ファイルに書き込む場合について説明したが、別途管理ファイルを設けて、管理しても良い。図７は、管理ファイルの一例を示す図である。
【００５７】
同図に示すように、管理ファイル５０１は、管理ファイルのレコード番号５０２、元ファイルのファイルパス情報５０３、復元情報部５０４、変換ファイルの分割数５０５及び変換ファイルのファイルパス情報５０６を有する。
【００５８】
Ｓ７において、同一性情報の書き込み終了後、最後の変換対象ファイルか否かの判断が行なわれ（Ｓ８）、最後の変換対象ファイルではないと判断された場合にはＳ２の処理に戻る。一方、最後の変換対象ファイルであると判断された場合には、処理を終了する。
【００５９】
図８は、復元処理モジュールロード時の処理を説明するためのフローチャートである。
【００６０】
復元処理モジュール３３がロードされると、当該復元処理モジュール３３の初期化処理が行なわれ（Ｓ１１）、ファイルオープンＡＰＩのフック開始処理（Ｓ１２）、ファイルリードンＡＰＩのフック開始処理（Ｓ１３）、ファイルクローズＡＰＩのフック開始処理（Ｓ１４）、その他ＡＰＩのフック開始処理（Ｓ１５）が行なわれ、処理を終了する。
【００６１】
図９は、ファイルオープンＡＰＩを捕捉（フック）した場合の処理を説明するためのフローチャートである。
【００６２】
Webサーバアプリケーションプログラム３０１がファイルオープンＡＰＩを発行すると（Ｓ２１）、復元処理モジュール３３が当該ファイルオープンＡＰＩを捕捉する（Ｓ３１）。
【００６３】
次に、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ３２）。なお、この判断は、ファイルを参照して復号情報が存在するか否か、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【００６４】
Ｓ３２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ３３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ４２）、処理を終了する。
【００６５】
一方、Ｓ３２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、変換ファイルのオープンを行ない（Ｓ３４）、当該変換ファイルの復元情報部の読み込み（Ｓ３５）、変換データ部の読み込み（Ｓ３６）を行ない、変換データの復元処理を行なう（Ｓ３７）。
【００６６】
次に、復元データから同一性確認情報を計算し（Ｓ３８）、計算した同一性確認情報が元ファイルの同一性確認情報と一致しているか否かの判断が行なわれる（Ｓ３９）。一致していると判断した場合には、復元データを記憶領域に保持し（Ｓ４０）、復元データ管理情報の初期化処理を行なう（Ｓ４１）。ここで、復元データ管理情報とは、例えば、ファイルハンドルや、次に、リードＰＩを捕捉した際に、メモリに保持した復元データのどの位置からデータを返せば良いかを示すファイルポインタに相当する情報などである。
【００６７】
次に、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ４２）、処理を終了する。ここで、戻り値は捕捉したＡＰＩの戻り値であり、ＯＳがファイルオープンＡＰＩが成功した場合に返す値と同じ値である。
【００６８】
一方、一致していないと判断された場合には、バックアップされた正常な変換ファイルで異常が検知された変換ファイルを上書きし、変換ファイルを修復し（Ｓ４３）、戻り値にエラー値をセットして（Ｓ４４）、Webサーバアプリケーションプログラム３０１に戻り値を返す（Ｓ４２）。ここで、エラー値は、ＯＳがエラー時に返す値の１つである。
【００６９】
Webサーバアプリケーションプログラム３０１は、ファイルオープンＡＰＩの発行後（Ｓ２１）、戻り待ち処理（Ｓ２２）において当該戻り値を復元処理モジュール３０３から受け取る。これにより、Webサーバアプリケーションプログラム３０１でファイルオープン処理の成功やエラーが認識される。
【００７０】
図１０は、ファイルリードＡＰＩを補足した場合の処理を説明するためのフローチャートである。
【００７１】
Webサーバアプリケーションプログラム３０１がファイルリードＡＰＩを発行すると（Ｓ５１）、復元処理モジュール３３が当該ファイルリードＡＰＩを捕捉する（Ｓ６１）。
【００７２】
次に、ファイルリードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ６２）。なお、この判断は、復元データ管理情報や、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【００７３】
Ｓ６２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ６３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ６６）、処理を終了する。
【００７４】
一方、Ｓ６２において、ファイルリードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、復元データから指定サイズをリードバッファにコピーし（Ｓ６４）、復元データ管理情報の更新を行ない（Ｓ６５）、アプリケーションに戻り値を返す（Ｓ６６）。ここで、戻り値は、ＯＳがファイルリードＡＰＩが成功した場合に返す値と同じ値である。
【００７５】
Webサーバアプリケーションプログラム３０１は、ファイルリードＡＰＩの発行後（Ｓ５１）、戻り待ち処理において当該戻り値を復元処理モジュール３０３から受け取る（Ｓ５２）。これにより、Webサーバアプリケーションプログラム３０１でファイルリード処理が成功したことが認識される。
【００７６】
図１１は、ファイルクローズＡＰＩを補足した場合の処理を説明するためのフローチャートである。
【００７７】
Webサーバアプリケーションプログラム３０１がファイルクローズＡＰＩを発行すると（Ｓ７１）、復元処理モジュール３３が当該ファイルクローズＡＰＩを捕捉する（Ｓ８１）。
【００７８】
次に、ファイルクローズの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ８２）。なお、この判断は、復元データ管理情報や、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【００７９】
Ｓ８２において、ファイルクローズの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ８３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ８６）、処理を終了する。
【００８０】
一方、Ｓ８２において、ファイルクローズの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、復元データのクリアを行ない変換ファイルをクローズする（Ｓ８４）。なお、変換ファイル修復処理（Ｓ４３またはＳ１２８）において、アプリケーションまたはＯＳによりファイルがロックされており、バックアップファイルを上書きするなどしてファイルを修復することがその時点でできない場合、修復が必要なことを復元データ管理情報に記憶しておき、ファイルをクローズした後に修復処理を行ってもよい。さらに、復元データ管理情報のクリアを行ない（Ｓ８５）、アプリケーションに戻り値を返す（Ｓ８６）。ここで、戻り値は、ＯＳがファイルクローズＡＰＩが成功した場合に返す値と同じ値である。
【００８１】
Webサーバアプリケーションプログラム３０１は、ファイルクローズＡＰＩの発行後（Ｓ７１）、戻り待ち処理において当該戻り値を復元処理モジュール３０３から受け取る（Ｓ７２）。これにより、Webサーバアプリケーションプログラム３０１でファイルクローズ処理が成功したことが認識される。
【００８２】
なお、Webサーバアプリケーションプログラム３０１がコンテンツファイルを読み込む際のブロックサイズ（一回のファイルリードAPIで読み込むサイズ）を復元処理モジュール３０３が認識している場合は、ファイルオープンAPI、ファイルリードAPIを捕捉した際の処理を図１２及び図１３に示すように行なっても良い。
【００８３】
この場合、変換アプリケーションプログラムの処理において、ブロック毎の復元情報および同一性確認情報を保管するようにし、復元処理においては、各ブロックを読み込む毎にそのブロックに対応した復元情報および同一性確認情報を用いる。
【００８４】
図１２は、ファイルオープンＡＰＩを捕捉した場合の他の処理を説明するためのフローチャートである。
【００８５】
Webサーバアプリケーションプログラム３０１がファイルオープンＡＰＩを発行すると（Ｓ９１）、復元処理モジュール３３が当該ファイルオープンＡＰＩを捕捉する（Ｓ１０１）。
【００８６】
次に、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ１０２）。なお、この判断は、復元データ管理情報や、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【００８７】
Ｓ１０２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ１０３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ１０７）、処理を終了する。
【００８８】
一方、Ｓ１０２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、変換ファイルのオープンを行ない（Ｓ１０４）、当該変換ファイルの復元情報部の読み込み（Ｓ１０５）を行ない、復元データ管理情報の初期化処理を行なう（Ｓ１０６）。そして、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ１０７）、処理を終了する。ここで、戻り値は捕捉したＡＰＩの戻り値であり、ＯＳがファイルオープンＡＰＩが成功した場合に返す値と同じ値である。
【００８９】
Webサーバアプリケーションプログラム３０１は、ファイルオープンＡＰＩの発行後（Ｓ９１）、戻り待ち処理において当該戻り値を復元処理モジュール３０３から受け取る。これにより、Webサーバアプリケーションプログラム３０１でファイルオープン処理が成功したことが認識される（Ｓ９２）。
【００９０】
図１３は、ファイルリードＡＰＩを捕捉した場合の他の処理を説明するためのフローチャートである。
【００９１】
Webサーバアプリケーションプログラム３０１がファイルリードＡＰＩを発行すると（Ｓ１１１）、復元処理モジュール３３が当該ファイルリードＡＰＩを捕捉する（Ｓ１２１）。
【００９２】
次に、ファイルリードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ１２２）。なお、この判断は、復元データ管理情報や、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【００９３】
Ｓ１２２において、ファイルオープンの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ１２３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ１３１）、処理を終了する。
【００９４】
一方、Ｓ１２２において、ファイルリードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、変換データ部の読み込み（Ｓ１２４）を行ない、変換データの復元処理を行なう（Ｓ１２５）。
【００９５】
次に、復元データから同一性確認情報を計算し（Ｓ１２６）、計算した同一性確認情報が元ファイルの同一性確認情報と一致しているか否かの判断が行なわれる（Ｓ１２７）。一致していないと判断された場合には、バックアップされた正常な変換ファイルで異常が検知された変換ファイルを上書きし、変換ファイルを修復し（Ｓ１２８）、戻り値にエラー値をセットして（Ｓ１２９）、Webサーバアプリケーションプログラム３０１に戻り値を返す（Ｓ１３１）。ここで、エラー値は、ＯＳがファイルオープンＡＰＩのエラー時に返す値の１つである。
【００９６】
一方、一致していると判断された場合には、復元データをリードバッファにコピーし（Ｓ１３０）、アプリケーションに戻り値を返す（Ｓ１３１）。ここで、戻り値は、ＯＳがファイルリードＡＰＩが成功した場合に返す値と同じ値である。
【００９７】
Webサーバアプリケーションプログラム３０１は、ファイルリードＡＰＩの発行（Ｓ１１１）後、戻り待ち処理（Ｓ１１２）において当該戻り値を復元処理モジュール３０３から受け取る。これにより、Webサーバアプリケーションプログラム３０１でファイルリード処理の成功が認識される。
【００９８】
なお、上記のWebサーバに対する実施の形態と同様に、FTPサーバなど、端末からのリクエストにより、ファイルを読み込んでデータを送信する他のアプリケーションプログラムに対しても本実施の形態が応用できることは明らかである。
【００９９】
本実施の形態によれば、Webサーバ上でコンテンツファイルが不正プログラム等により意図せず書き換えられたとしても、これを確実に検知して、不正に書き換えられたコンテンツを端末に送信しないようにし、実害を防ぐことができる。
【０１００】
また、ファイルが書き換えられていることを検知した場合は、これをバックアップファイルから自動的に修復することができる。
【０１０１】
＜第２の実施の形態＞（実行形式ファイルの保護）
本実施の形態においては、実行形式ファイル（exeファイル、dllファイルなど）を、変換処理アプリケーションプログラム３０２を用いて、復元可能な形式で変換して保存しておく。変換処理アプリケーションプログラム３０２でファイルを変換する際の処理の流れは、第１の実施の形態と同様であり、図４に示されている。変換アルゴリズム、同一性確認情報の計算方法、復元情報や同一性確認情報の管理方法などの例も第１の実施の形態に準ずる。
【０１０２】
復元処理は、常駐プロセスまたはOSの一部として動作するドライバとして提供される。これらの常駐プログラムは、OS起動時に起動されるようにし、全てのプロセスの起動を監視できるように、起動時にアプリケーションプログラム（OSのユーティリティプログラムなども含む）が発行するAPIのうち、少なくともプロセス起動API、ライブラリロードAPIをフックするようにする。
【０１０３】
図１４は、監視常駐プログラム３０４の起動時の処理の流れを示すフローチャートである。
【０１０４】
同図に示すように、監視常駐プログラム３０４が起動されると、初期化処理（Ｓ１４１）が行なわれ、実行形式ファイルの実行ＡＰＩのフック開始処理（Ｓ１４２）、ライブラリロードＡＰＩのフック開始処理（Ｓ１４２）、その他ＡＰＩのフック開始処理（Ｓ１４４）が行なわれる。
【０１０５】
図１５は、監視常駐プログラム３０４が実行形式ファイルの実行ＡＰＩを捕捉した場合の処理を説明するためのフローチャートである。
【０１０６】
Webサーバアプリケーションプログラム３０１やシェルプログラムなどが実行形式ファイル実行ＡＰＩを発行すると（Ｓ１５１）、監視常駐プログラム３０４が当該実行ＡＰＩを捕捉する（Ｓ１６１）。
【０１０７】
次に、実行の対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ１６２）。なお、この判断は、ファイルを参照して復号情報が存在するか否か、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【０１０８】
Ｓ１６２において、実行の対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ１６３）、Webサーバアプリケーションプログラム３０１に戻り値を返す処理を行ない（Ｓ１７１）、処理を終了する。
【０１０９】
一方、Ｓ１６２において、実行の対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、変換ファイルのオープンを行ない（Ｓ１６４）、当該変換ファイルの復元情報部の読み込み（Ｓ１６５）、変換データ部の読み込み（Ｓ１６６）を行ない、変換データの復元処理を行なう（Ｓ１６７）。
【０１１０】
次に、復元データから同一性確認情報を計算し（Ｓ１６８）、計算した同一性確認情報が元ファイルの同一性確認情報と一致しているか否かの判断が行なわれる（Ｓ１６９）。一致していると判断した場合には、復元データを実行し（Ｓ１７０）、実行された結果を示す値を戻り値としてWebサーバアプリケーションプログラム３０１に返す（Ｓ１７１）。
【０１１１】
一方、Ｓ１６９において一致していないと判断された場合には、バックアップされた正常な変換ファイルで異常が検知された変換ファイルを上書きし、変換ファイルを修復し（Ｓ１７２）、戻り値にエラー値をセットして（Ｓ１７３）、Webサーバアプリケーションプログラム３０１に戻り値を返す（Ｓ１７１）。ここで、エラー値は、ＯＳが実行形式ファイルの実行ＡＰＩのエラー時に返す値の１つである。
【０１１２】
Webサーバアプリケーションプログラム３０１やシェルプログラムなどは、実行ＡＰＩの発行（Ｓ１５１）後、戻り待ち処理（Ｓ１５２）において当該戻り値を監視常駐プログラム３０４から受け取る。これにより、Webサーバアプリケーションプログラム３０１やシェルプログラムなどで実行形式ファイルの実行処理のエラーが認識される。
【０１１３】
図１６は、ライブラリロードＡＰＩを補足した場合の処理を説明するためのフローチャートである。
【０１１４】
Webサーバアプリケーションプログラム３０１や他のプログラムがライブラリロード実行ＡＰＩを発行すると（Ｓ１８１）、監視常駐プログラム３０４が当該実行ＡＰＩを捕捉する（Ｓ１９１）。
【０１１５】
次に、ロードの対象とされたライブラリが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルか否かの判断が行なわれる（Ｓ１９２）。なお、この判断は、ファイルを参照して復号情報が存在するか否か、変換ファイルを管理する管理情報を参照するなどして行なわれる。
【０１１６】
Ｓ１９２において、ロードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルではないと判断された場合には、オリジナルのＡＰＩをＯＳ３００に渡し（Ｓ１９３）、ＡＰＩ発行元プログラムに戻り値を返す処理を行ない（Ｓ２０１）、処理を終了する。
【０１１７】
一方、Ｓ１９２において、ロードの対象とされたファイルが、変換処理アプリケーションプログラム３０２によって変換された変換ファイルであると判断された場合には、変換ファイルのオープンを行ない（Ｓ１９４）、当該変換ファイルの復元情報部の読み込み（Ｓ１９５）、変換データ部の読み込み（Ｓ１９６）を行ない、変換データの復元処理を行なう（Ｓ１９７）。
【０１１８】
次に、復元データから同一性確認情報を計算し（Ｓ１９８）、計算した同一性確認情報が元ファイルの同一性確認情報と一致しているか否かの判断が行なわれる（Ｓ１９９）。一致していると判断した場合には、復元データをロードし（Ｓ２００）、ライブラリのロードが成功したことを示す値を戻り値としてＡＰＩ発行元プログラムに返す（Ｓ２０１）。
【０１１９】
一方、Ｓ１９９において一致していないと判断された場合には、バックアップされた正常な変換ファイルで異常が検知された変換ファイルを上書きし、変換ファイルを修復し（Ｓ２０２）、戻り値にエラー値をセットして（Ｓ２０３）、ＡＰＩ発行元プログラムに戻り値を返す（Ｓ２０１）。ここで、エラー値は、ライブラリのロードのエラー時に返す値の１つである。
【０１２０】
ＡＰＩ発行元プログラムは、実行ＡＰＩの発行（Ｓ１８１）後、戻り待ち処理（Ｓ１８２）において当該戻り値を監視常駐プログラム３０４から受け取る。これにより、ＡＰＩ発行元プログラムでライブラリロードの実行処理のエラーが認識される。
【０１２１】
本実施形態によれば、サーバまたは端末において実行形式ファイルがウイルス等により意図せず書き換えられたとしても、これを確実に検知して、不正に書き換えられたコードが実行されないようにし、実害を防ぐことができる。
【０１２２】
また、実行形式ファイルが書き換えられていることを検知した場合は、これをバックアップファイルから自動的に修復することができる。また、第１の実施の形態において、Webサーバアプリケーションプログラムにより実行される実行形式ファイルも同様に保護することができる。
【０１２３】
上述のように、本実施の形態は、実行形式ファイルの正当性を維持するために利用することができる。なお、プログラムの修復パッチを適用するために用いられる実行形式ファイルに本実施の形態を適用することによって、パッチ適用の正当性を確保することができる。この場合、修復パッチ適用プログラムが発行するファイル書き込みAPIをフックし、変換アプリケーションプログラムで行うファイル変換処理をファイル書き込みAPI捕捉時に行うようにし、パッチデータ適用後の実行形式ファイルの変換処理を行うようにしてもよい。
【０１２４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２５】
１０１…Webサーバ、１０２…記憶装置、１０３…コンテンツファイル、１０４…インターネット、１０５…スマートフォン、１０６…モバイル端末、１０７…デスクトップ端末、２０１…CPU、２０２…メモリ、２０３…記憶装置、２０４…通信デバイス、３００…ＯＳ、３０１…Webサーバアプリケーションプログラム、３０２…変換処理アプリケーションプログラム、３０３…復元処理モジュール、３０４…監視常駐プログラム、４００…変換ファイル、４０１…復元情報部、４０２…変換データ部、５０１…管理ファイル、５０２…レコード番号、５０３…元ファイルのファイルパス情報、５０４…復元情報部、５０５…変換ファイルの分割数、５０６…変換ファイルのファイルパス情報。
【図１】
2013164732.tif 000003
【図２】
2013164732.tif 000004
【図３】
2013164732.tif 000005
【図４】
2013164732.tif 000006
【図５】
2013164732.tif 000007
【図６】
2013164732.tif 000008
【図７】
2013164732.tif 000009
【図８】
2013164732.tif 000010
【図９】
2013164732.tif 000011
【図１０】
2013164732.tif 000012
【図１１】
2013164732.tif 000013
【図１２】
2013164732.tif 000014
【図１３】
2013164732.tif 000015
【図１４】
2013164732.tif 000016
【図１５】
2013164732.tif 000017
【図１６】
2013164732.tif 000018