(57)【要約】【課題】ＡＰＩを用いずにファイル操作を実行するようなアプリケーションによるファイルのコピー操作であっても検出できるようにする。【解決手段】フィルタドライバ２０２は、ファイルに対する複数のアクセス要求を捕捉する。分析プログラム２０４は、捕捉された複数のアクセス要求を分析し、複数のアクセス要求の発行順序がファイルコピー操作に特有の特定の順序かどうかを判定する。これにより、分析プログラム２０４は、コピー操作を検出できる。【選択図】図２
2014211716.tif 000002
【特許請求の範囲】
【請求項１】
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉手段と、
前記捕捉手段により捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、ファイルに対するコピー操作を検出する検出手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記検出手段は、前記捕捉手段により捕捉された複数のアクセス要求の順序が特定の順序であり、かつ、前記捕捉手段により捕捉された複数のアクセス要求の数が特定の数であるときに、前記ファイルについてコピー操作が実行されようとしていると判定することを特徴とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記捕捉手段により捕捉されたアクセス要求に付随するオプション情報を抽出する抽出手段と、
前記抽出手段により抽出された前記オプション情報が特定の種類のオプション情報であり、かつ、カウント値が所定値であるときに、当該カウント値を１つ増加するカウント手段と
を有し、
前記検出手段は、
前記アクセス要求の対象となったファイルがオープンされてからクローズされるまでに前記カウント手段によりカウントされたカウント値が、コピー操作に特有の値であるときに、前記ファイルについてコピー操作が実行されようとしていると判定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検出手段は、第１のファイルに対する複数のアクセス要求の順序が特定の順序であり、かつ、新たに作成された第２のファイルに対するアクセス要求に基づいて抽出されたプロセスＩＤ、スレッドＩＤおよび日時情報が、前記第１のファイルのプロセスＩＤ、スレッドＩＤおよび日時情報が一致したときに、前記第１のファイルをコピーして前記第２のファイルが作成されていると判定することを特徴とする請求項１ないし３のいずれか１項に記載の情報処理装置。
【請求項５】
前記特定の種類のオプション情報の１つは、前記アクセス要求がファイル情報の取得要求であることを示すオプション情報であることを特徴とする請求項１ないし４のいずれか１項に記載の情報処理装置。
【請求項６】
前記検出手段がコピー操作を検出したときに、コピー操作の対象となったファイルのパス名を含むログを作成するログ作成手段をさらに含むことを特徴とする請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記検出手段がコピー操作を検出したときに、コピー操作を停止させる停止手段をさらに含むことを特徴とする請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項８】
前記検出手段がコピー操作を検出したときに、コピー操作により作成された新しいファイルを削除する削除手段をさらに含むことを特徴とする請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項９】
コンピュータを、
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉手段と、
前記捕捉手段により捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、ファイルに対するコピー操作を検出する検出手段として機能させることを特徴とするコンピュータプログラム。
【請求項１０】
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉工程と、
前記捕捉工程において捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、ファイルに対するコピー操作を検出する検出工程と
を有することを特徴とするコピー操作検出方法。
【請求項１１】
情報処理装置と、当該情報処理装置において実行されるコピー操作を検出するサーバ装置とを有するシステムであって、
前記情報処理装置は、
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉手段
を有し、
前記サーバ装置は、
前記情報処理装置の前記捕捉手段により捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、ファイルに対するコピー操作を検出する検出手段
を有することを特徴とするシステム。
【請求項１２】
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉手段と、
前記捕捉手段により捕捉されたアクセス要求が特定の種類のアクセス要求であるときにカウント値を１つ増加するカウント手段と、
前記アクセス要求の対象となったファイルがオープンされてからクローズされるまでに前記カウント手段によりカウントされたカウント値が、コピー操作に特有の値であるときに、前記ファイルに対するコピー操作を検出する検出手段と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルのコピー操作を検出する技術に関する。
【背景技術】
【０００２】
米国マイクロソフト社が提供するＷｉｎｄｏｗｓ（登録商標）は、広く普及しているオペレーティングシステム（以下、ＯＳ）である。そのため、それを攻撃する悪意のあるプログラムも多い。さらに、悪意のあるプログラムからシステムを防御するためのアプリケーションも多い。セキュリティを維持する目的のため、各種アプリケーションを介したファイルシステムへのアクセス（例えば、ファイルの作成、削除、コピー等）を検出することは重要である。特許文献１では、Ｗｉｎｄｏｗｓ（登録商標）が提供するファイル操作用ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を利用して、ファイルシステムへのアクセスを検出する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−４８３１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載された発明では、ファイル操作に関与するすべてのＡＰＩ（ＣｒｅａｔｅＦｉｌｅＡ、ＣｌｏｓｅＨａｎｄｌｅ、ＣｏｐｙＦｉｌｅＡなど）をフックの対象として登録して監視する必要があった。また、特許文献１では、ＡＰＩを用いないファイル操作を検出することができない。さらに、特許文献１では、ＡＰＩをフックの対象としているのでアプリケーションに依存してしまう。このように特許文献１に記載の発明ではいくつかの課題があった。
【０００５】
そこで、本発明は、上記の課題または他の課題のうち少なくとも１つを解決することを目的とする。たとえば、本発明は、ＡＰＩを用いずにファイル操作を実行するようなアプリケーションによるファイルのコピー操作であっても検出できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、たとえば、
任意のプログラムからファイルシステムに対する複数のアクセス要求をフィルタドライバにより捕捉する捕捉手段と、
前記捕捉手段により捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、ファイルに対するコピー操作を検出する検出手段と
を有することを特徴とする情報処理装置を提供する。
【発明の効果】
【０００７】
本発明によれば、ファイルに対する複数のアクセス要求の発行順序がファイルコピー操作に特有の特定の順序であるかどうかに基づきに、コピー操作を検出する。本発明によれば、ファイル操作に関与するすべてのＡＰＩを監視する必要はないため、ファイル操作に関与するすべてのＡＰＩを登録する必要はない。さらに、本発明によれば、ＡＰＩを用いずにファイル操作を実行するようなアプリケーションによるファイルのコピー操作であっても検出できる。また、フィルタドライバによってアクセス要求を捕捉すれば、従来技術と比較して、アプリケーションに対する影響は軽微となろう。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置（コンピュータ）のブロック図
【図２】ファイルシステムドライバへのアクセスログを検出するためのプログラム構造を示す図
【図３】ファイル情報リストの一例を示す図
【図４】アクセス要求の取得処理を示すフローチャート
【図５】ファイル情報リストの作成処理を示すフローチャート
【図６】ファイルのコピー操作検出処理を示すフローチャート
【図７】ＯＳのバージョンごとのコピー操作を検出するための条件（コピー操作検出条件）を示す図
【図８】コピー元ファイルリストの一例を示す図
【図９】コピー操作に関与するアクセス要求のタイミングを示す図
【図１０】アクセスログの一例を示す図
【図１１】ファイルシステムドライバおよび非ファイルシステムドライバへのアクセス要求を検出するためのプログラム構造を示す図
【図１２】コピー禁止処理を示すフローチャート
【図１３】コピー禁止処理を示すフローチャート
【発明を実施するための形態】
【０００９】
本発明は、アプリケーションなどの任意のプログラムから発行される複数のアクセス要求を捕捉し、捕捉したいくつかのアクセス要求の発行順序が特定の順序であるかどうかに基づき、コピー操作を検出することを特徴としている。複数のアクセス要求のうち１つ１つのアクセス要求からはコピー操作を検出できない。しかし、コピー操作が実行されるときは、ある特定の複数のアクセス要求が、ある特定の順序で発行される。そこで、捕捉した複数のアクセス要求の発行順序が特定の順序であるかどうか確認することで、コピー操作を検出できる。なお、アクセス要求の捕捉はフックによっても実現できるが、フィルタドライバによって捕捉するほうが、メリットが大きい。もちろん、フックによるアクセス要求の捕捉を除外する意図はない。本発明のポイントは、複数のアクセス要求の発行順序に基づきファイルコピーを検出することだからである。
【００１０】
また、以下説明では、後述するファイルシステムドライバに対して発行される要求をアクセス要求としているが、アクセス要求に対するファイルシステムドライバからの返答（リターン）もアクセス要求に含まれる。
【００１１】
本実施形態における情報処理装置１００のブロック図を図１に示す。情報処理装置１００は、クライント装置やサーバ装置として機能するコンピュータの一例である。ＣＰＵ１０１は、情報処理装置１００の全体を統括的に制御する制御ユニットである。ＲＯＭ１０２は、ＢＩＯＳやブートプログラムを格納している記憶装置である。ＲＡＭ１０３は、ＯＳやアプリケーションがロードされたり、ワークエリアとして使用されたりする記憶装置である。ネットワークインタフェース１０４は、ネットワークを介してサーバ装置などと通信するユニットである。キーボード１０５及びポインティングデバイス１０６は、ＵＳＢインタフェース１０７を介してＣＰＵ１０１に対して情報を入力するユニットである。ＵＳＢは、ユニバーサルシリアルバスの略称である。ＵＳＢインタフェース１０７には、ＵＳＢメモリや外付けのハードディスク装置や光ディスク装置が接続されてもよい。なお、ＵＳＢメモリとはＵＳＢコネクタに接続して使用され、書き換え可能な不揮発性のメモリを内蔵した持ち運び可能な記憶装置である。表示制御部１０９は、ＣＰＵ１０１の指示に従って表示装置１０８に表示すべき画像の描画処理を行う。記憶装置１１０はハードディスク装置とするが、ＵＳＢ（ユニバーサルシリアルバス）メモリやＳＳＤ（ソリッドステートドライブ）等でもよく、その種類は問わない。なお、記憶装置１１０には米国マクロソフト社が提供するＯＳ「Ｗｉｎｄｏｗｓ（登録商標）」が既にインストールされており、各種コンピュータプログラムやデータファイルも格納されているものとする。また、後述するフィルタドライバも既にインストールされているものとする。
【００１２】
上記構成において、情報処理装置１００の電源がＯＮになると、ＣＰＵ１０１はＲＯＭ１０２のブートプログラムにしたがって動作を開始し、記憶装置１１０にアクセスし、ＯＳをＲＡＭ１０３上にロードする。さらに、キーボード１０５、ポインティングデバイス１０６、および、表示装置１０８によるユーザインタフェースが機能し始め、情報処理装置１００が各種の手段として機能することとなる。なお、このとき、記憶装置１１０にインストールされた、ファイルに対するアクセス要求を捕捉するフィルタドライバ、および、コピー操作を検出してログを作成する分析プログラムも起動する。この結果、情報処理装置１００が備えるファイルシステムへのアクセスの監視とアクセスログの取得、ならびに、予め設定されたネットワーク上のサーバ装置に対し、アクセスログの転送が可能となる。なお、分析プログラムは、サーバ装置に備えられていてもよい。サーバ装置の機能ブロックも基本的に情報処理装置１００と同様である。
【００１３】
図２は、ファイルシステムドライバへのアクセスログを検出するためのプログラム構造を示す図である。ファイルシステムは、一般に、論理ドライブごとに存在する。また、アプリケーション２０１は、ファイルシステムドライバ２０３を介してファイルシステムにアクセスする。ファイルシステムドライバ２０３は、たとえば、「ＮＴＦＳ」や「ＦＡＴ」「ＦＡＴ３２」といったファイルシステムを操作するためのドライバである。
【００１４】
本実施形態では、アプリケーション２０１とファイルシステムドライバ２０３との間にフィルタドライバ２０２が配置されている。フィルタドライバ２０２は、ファイルシステムドライバ２０３に対して発行されるアクセス要求と、アクセス要求に対するファイルシステムドライバ２０３から発行される返答（アクセス要求）をすべて捕捉することができるため、捕捉したアクセス要求に含まれている情報を抽出したり、改変したり、アクセス要求を破棄したりすることもできる。通常、フィルタドライバ２０２は、アクセス要求をファイルシステムドライバ２０３に転送する。フィルタドライバ２０２は、アクセス要求に含まれている情報を抽出して分析プログラム２０４に転送する。これにより、分析プログラム２０４は、ユーザが操作するアプリケーション２０１が、何時、どのようなファイルへアクセスしたかを示すアクセスログを作成することができる。とりわけ、本実施形態の分析プログラム２０４は、捕捉手段として機能するフィルタドライバ２０２により捕捉された複数のアクセス要求の順序が特定の順序であるかどうかに基づき、コピー操作を検出する。なお、分析処理が実行するタイミングによっては、ファイルについてコピー操作が実行されている最中であることもあるし、コピー操作が完了していることもある。このようにタイミング次第で、本実施形態は、コピー操作が実行されていること、またはコピー操作が実行されたことを検出（推定）できる。
【００１５】
従来技術では、ファイル操作に関与するすべてのＡＰＩをフックによって監視することでコピー操作を検出していたが、これには上述したような課題が存在していた。ところで、ファイル操作に際して複数のアクセス要求が発行されるが、１つのアクセス要求だけではコピー操作が実行されたかどうかはわからない。発明者が分析したところ、コピー操作が実行されるときは、ある特定の複数のアクセス要求が特定の順序でアプリケーション２０１から発行されることを突き止めた。そこで、ＣＰＵ１０１は、複数のアクセス要求が特定の順序で発行されたことを検出すれば、コピー操作が実行中であるか、実行されたと推定できる。
【００１６】
図２において、アプリケーション２０１は、たとえば、文書編集アプリケーション、表計算アプリケーション等などのアプリケーションプログラムであるが、ウイルスプログラムであってもよい。フィルタドライバ２０２は、アプリケーション２０１からファイルシステムドライバ２０３へのアクセス要求を横取りして、アクセス要求から抽出した情報を分析プログラム２０４に転送する。ここで、分析プログラム２０４に転送される情報としては、どのアプリケーション（例：プロセス名）から、どのファイルシステムのどのファイル（例：パス名を含むファイル名）にアクセス要求があったかを特定可能な情報である。
【００１７】
たとえば、アプリケーション２０１がファイルＡをコピーしてファイルＢを作成することを仮定する。この場合、フィルタドライバ２０２は、ファイルＡを開くためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）や、ファイルＡを閉じるためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）、ファイルＡのファイル情報を取得するためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＱＵＥＲＹ＿ＩＮＦＯＭＡＴＩＯＮ）、ファイル情報を設定するためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＳＥＴ＿ＩＮＦＯＭＡＴＩＯＮ）などのアクセス要求を横取り（インターセプト）する。
【００１８】
なお、アプリケーション２０１を起動したユーザ名、コピー元ファイル名、コピー先ファイル名、コピー終了日時などの情報も分析プログラム２０４は利用してもよい。コピー元ファイルとは、コピーの対象となったオリジナルのファイルのことであり、コピー先ファイルはオリジナルファイルから複製されたファイルのことである。
【００１９】
フィルタドライバ２０２から分析プログラム２０４に通知される情報についてより詳しく説明する。当該情報には、たとえば、以下の情報が含まれうる。
・ファイル識別ＩＤ（ファイルオブジェクト、ファイルハンドル、フルパス、ファイル名、ハッシュ値などファイルを識別できるＩＤ）
・ファイル操作を行ったユーザのセッションＩＤ（ログインユーザ名を特定するために使用される）
・アプリケーションのプロセスＩＤ（プロセス名を特定するために使用される）
・ファイルの操作時刻（コピー開始時刻やコピー終了時刻）
・アクセス要求名（ファイルを操作するために発行されるアクセス要求の名称であり、上述したＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥなど）
分析プログラム２０４は、フィルタドライバ２０２が捕捉したアクセス要求を受信し、アクセスログを作成したり、アクセスログを分析したりする。また、フィルタドライバ２０２は、アプリケーション２０１から横取りしたアクセス要求をファイルシステムドライバ２０３に渡す。これにより、ファイルシステムドライバ２０３は、アプリケーション２０１からのアクセス要求を受信してアクセス要求に対応した処理を実行できる。つまり、アプリケーション２０１からのアクセス要求が当初の宛先であるファイルシステムドライバ２０３に渡されることで、ファイルシステムへのアクセスが実行される。
【００２０】
図３は、ファイル情報リストの一例を示す図である。分析プログラム２０４は、フィルタドライバ２０２から受信した情報に基づきファイル情報リスト３００を作成する。ファイル情報リスト３００とは、アクセス要求に基づき作成した１つ以上のファイル情報３０１を保持するリストである。ファイル情報３０１には、ファイルの操作時刻を示す時刻情報、ファイル名、セッションＩＤ、プロセスＩＤ、アクセス要求のリスト（以下、アクセス要求リスト３０２）、スレッドＩＤなどが含まれる。アクセス要求リスト３０２とは、アクセス要求に付随するアクセス要求名と、オプション情報とを保持するリストである。また、各ファイル情報３０１を区別するために、固有のファイル識別ＩＤ３０３が各ファイル情報３０１に付与されている。
【００２１】
図４は、フィルタドライバ２０２にしたがってＣＰＵ１０１が実行するアクセス要求の取得処理を示すフローチャートである。
【００２２】
Ｓ４０１で、ＣＰＵ１０１は、分析プログラム２０４にデータ（ファイル情報リスト）を渡すための空のレコードを作成するとともに、ファイルを識別するためのファイル識別ＩＤを発行してレコードに付与する。以下、フィルタドライバ２０２が取得したデータはこのレコードに追加される。なお、ファイル識別ＩＤは上述したようなデータであってもよい。
【００２３】
Ｓ４０２で、ＣＰＵ１０１は、アプリケーション２０１からファイルシステムドライバ２０３に発行されたアクセス要求を捕捉する。
【００２４】
Ｓ４０３で、ＣＰＵ１０１は、捕捉したアクセス要求に基づき、セッションＩＤ、アクセス要求名、オプション情報、アプリケーション２０１のプロセスＩＤ、スレッドＩＤ、現在時刻（日時データ）を取得してレコードに追加する。セッションＩＤは、ユーザがログインしたときにＯＳによって発行される識別情報である。プロセスＩＤは、現在実行されているプロセスをＯＳが識別するための識別情報であり、プロセスごとに一意な識別子である。スレッドＩＤは、プロセスが実行している複数のスレッドのそれぞれを識別するための一意の識別情報である。現在時刻はたとえばＲＴＣ（リアルタイムクロック）から取得される。アクセス要求に含まれていない情報については、アクセス要求の引数や戻り値によりＯＳから取得される。時刻情報としては、たとえば、ファイルを開くためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）が発行されたときの時刻情報や、ファイルを閉じるためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）が発行されたときの時刻情報が含まれてもよい。
【００２５】
図３が示すように、アクセス要求リストには、ファイルを開くためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）が発行されてからファイルを閉じるためのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）が発行されるまでに発行されたすべてのアクセス要求（例：ＩＲＰ＿ＭＪ＿ＱＵＥＲＹ＿ＩＮＦＯＲＭＡＴＩＯＮやＩＲＰ＿ＭＪ＿ＳＥＴ＿ＩＮＦＯＲＭＡＴＩＯＮ）について、そのアクセス要求名とオプション情報とが記録される。なお、ＣＰＵ１０１は、アクセス要求から上記の情報を取得すると、そのアクセス要求をファイルシステムドライバ２０３に転送する。
【００２６】
Ｓ４０４で、ＣＰＵ１０１は、アクセス要求の対象となったファイルのファイル名をアクセス要求から取得してレコードに追加する。
【００２７】
Ｓ４０５で、ＣＰＵ１０１は、作成したレコードを分析プログラム２０４に送信する。
【００２８】
なお、分析プログラム２０４に送信するタイミングは、レコードが作成される毎に限らず、予め決められた時間毎でもよい。その場合、アクセス要求毎（例：ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）にレコードをまとめて分析プログラム２０４に送信してもよい。
【００２９】
図５は、分析プログラム２０４にしたがってＣＰＵ１０１が実行するファイル情報リスト３００の作成処理を示すフローチャートである。
【００３０】
Ｓ５０１で、ＣＰＵ１０１は、フィルタドライバ２０２からアクセス要求リスについてのレコードを受信する。このときに、ＣＰＵ１０１は、レコードをファイル情報リストへ追加するための空のデータ構造を作成し、レコードの内容をデータ構造に追加してもよい。
【００３１】
Ｓ５０２で、ＣＰＵ１０１は、レコードから、ファイル識別ＩＤ、ファイル名、プロセスＩＤ、セッションＩＤ、アクセス要求名、オプション情報、スレッドＩＤ、時刻情報などを抽出する。
【００３２】
Ｓ５０３で、ＣＰＵ１０１は、抽出した情報からファイル情報３０１を作成する。たとえば、ＣＰＵ１０１は、レコードから抽出したファイル識別ＩＤ、ファイル名、プロセスＩＤ、セッションＩＤ、スレッドＩＤ、時刻情報などをデータ構造に追加する。また、ＣＰＵ１０１は、アクセス要求名、オプション情報からアクセス要求リスト３０２を作成し、データ構造に追加する。なお、ＣＰＵ１０１は、プロセスＩＤに対応するプロセス名をＯＳから取得し、データ構造に追加してもよい。同様に、ＣＰＵ１０１は、セッションＩＤに基づいてログインユーザ名を取得し、データ構造に追加してもよい。
【００３３】
Ｓ５０４で、ＣＰＵ１０１は、作成したデータ構造をファイル情報リスト３００に登録（追加）する。
【００３４】
また、フィルタドライバ２０２が、アクセス要求ごとに１つのレコードを作成して送信してくるときは、ファイルを開く要求（例：ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）に関するレコードから、ファイルを閉じる要求（例：ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）に関するレコードまで、ファイル識別ＩＤが一致する複数のレコードを同一のファイル情報に登録する。ファイルを開く要求が発行されたタイミングからファイルを閉じる要求が発行されたタイミングまでには、ファイルの情報を要求するアクセス要求などが発行される。よって、これらのアクセス要求についても、ファイル識別ＩＤが一致するかぎり、同一のファイル情報の中のアクセス要求リスト３０２に登録される。
【００３５】
ＣＰＵ１０１は、ファイルを開く要求（たとえば、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）から始まりファイルを閉じる要求（たとえば、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）で終わるように、アクセス要求リスト３０２にアクセス要求名とオプション情報を追加する。なお、ファイル情報３０１に含まれる項目は一例であり、ＣＰＵ１０１は、プロセスＩＤに基づき、ＯＳからプロセス名（アプリケーション名）を取得してファイル情報３０１に格納してもよい。
【００３６】
なお、ＣＰＵ１０１は、ファイル情報に含まれるプロセスＩＤに対応したプロセスが終了したことを検知すると、そのファイル情報をファイル情報リスト３００から削除してもよい。これにより、ファイル情報リスト３００の肥大化を抑制できる。もちろん、より遅いタイミングで削除してもよいし、削除しなくてもよい。
【００３７】
図６は、分析プログラム２０４にしたがってＣＰＵ１０１が実行するファイルのコピー操作検出処理を示すフローチャートである。
【００３８】
Ｓ６０１で、ＣＰＵ１０１は、記憶装置１１０に記憶されているファイル情報リスト３００から１つのファイル情報３０１を選択し、さらに、そのファイル情報３０１のアクセス要求リスト３０２から１つのデータ（アクセス要求）を取り出す。ここでは、ファイル情報リスト３００に登録されている複数のファイル情報３０１のうち、登録された順番が古いものから１つずつファイル情報３０１が選択されるものとする。また、アクセス要求リストには、ファイルを開く要求からファイルを閉じる要求まで２つ以上のアクセス要求が登録されている。よって、ファイルを開く要求に関するデータ（アクセス要求名とオプション情報）がアクセス要求リストから最初に取り出される。
【００３９】
Ｓ６０２で、ＣＰＵ１０１は、取り出したファイルを開く要求（たとえば、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）のオプション情報が「開いている」ことを示しているかどうかを判定する。たとえば、オプション情報がFILE_OPENEDであれば、ファイルが開いていることを意味する。オプション情報がFILE_CREATEDであれば、ファイルを新規に作成することを意味する。ファイルが開いていればＳ６０３に進み、ファイルが開いていなければＳ６１０に進む。たとえば、図３において、ファイル識別ＩＤがＡであるファイル情報３０１が読み出されたときはＳ６０３に進むことになる。一方で、図３において、ファイル識別ＩＤがＡ’であるファイル情報３０１が読み出されたときはＳ６１０に進むことになる。
【００４０】
Ｓ６０３で、ＣＰＵ１０１は、アクセス要求リスト３０２から次のアクセス要求のデータを取り出す。
【００４１】
Ｓ６０４で、ＣＰＵ１０１は、アクセス要求名がファイル情報を取得するためのアクセス要求名（例：ＩＲＰ＿ＭＪ＿ＱＵＥＲＹ＿ＩＮＦＯＭＡＴＩＯＮ）であるかどうかを判定する。アクセス要求名がファイル情報を取得するためのアクセス要求名であればＳ６０５に進み、それ以外のアクセス要求名であればＳ６０７に進む。
【００４２】
Ｓ６０５で、ＣＰＵ１０１は、コピー操作を検出するためのカウンタの現在のカウント値（初期値はゼロ）とオプション情報とが、当該カウンタをカウントアップするための条件を満たしているかどうかを判定する。上述したように、ファイルコピー操作が実行されるときは、ある特定の複数のアクセス要求が特定の順序で発行される。たとえば、カウント値が０のときに、オプション情報がファイルの属性を取得することを意味するオプション情報（例：ＦｉｌｅＡｔｔｒｉｂｕｔｅＴａｇＩｎｆｏｍａｔｉｏｎ）であれば、ＣＰＵ１０１は、カウントアップ条件が合致していると判定する。また、カウント値が１のときに、オプション情報がファイル情報を問い合わせることを意味するオプション情報（例：ＦｉｌｅＳｔａｎｄｅｒｄＩｎｆｏｍａｔｉｏｎ）であれば、ＣＰＵ１０１は、カウントアップ条件が合致していると判定する。なお、カウント値が０でないときにはオプション情報がＦｉｌｅＡｔｔｒｉｂｕｔｅＴａｇＩｎｆｏｍａｔｉｏｎであっても、ＣＰＵ１０１は、カウントアップ条件が合致しているとは判定しない。同様に、カウント値が１でないときには、オプション情報がＦｉｌｅＳｔａｎｄｅｒｄＩｎｆｏｍａｔｉｏｎであっても、ＣＰＵ１０１は、カウントアップ条件が合致しているとは判定しない。なお、カウントアップ条件は、Ｗｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａ以降のバージョンのＯＳとそれよりも古いバージョンのＯＳとで異なる。
【００４３】
たとえば、ＯＳがＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａより古いＯＳの場合は、次のようなカウントアップ条件となる。
【００４４】
・カウント値が０で、かつ、オプション情報がＦｉｌｅＡｔｔｒｉｂｕｔｅＴａｇＩｎｆｏｍａｔｉｏｎであるときに、カウント値を１に遷移する。
【００４５】
・カウント値が１で、かつ、オプション情報がＦｉｌｅＳｔａｎｄｅｒｄＩｎｆｏｍａｔｉｏｎであれば、カウント値を２に遷移する。
【００４６】
・カウント値が２または４で、かつ、オプション情報がファイル情報を問い合わせまたは設定をするためのオプション情報（ＦｉｌｅＢａｓｉｃＩｎｆｏｍａｔｉｏｎ）であれば、カウント値を＋１だけ増加する。
【００４７】
・カウント値が３で、かつ、オプション情報がファイルやディレクトリのデータストリームを列挙するためのオプション情報（ＦｉｌｅＳｔｒｅａｍＩｎｆｏｍａｔｉｏｎ）であれば、カウント値を＋１だけ増加する。
【００４８】
・カウント値が５で、かつ、ファイル情報がファイルの拡張情報のサイズを取得するためのオプション情報（ＦｉｌｅＥａＩｎｆｏｍａｔｉｏｎ）であれば、カウント値を＋１に増加する。
【００４９】
これらは、アクセス要求リストに登録されているファイル情報を取得する要求の順番もカウントアップに関係があることを意味している。つまり、ファイル情報を取得する要求のオプション順番が、ＦｉｌｅＡｔｔｒｉｂｕｔｅＴａｇＩｎｆｏｍａｔｉｏｎ→ＦｉｌｅＳｔａｎｄｅｒｄＩｎｆｏｍａｔｉｏｎ→ＦｉｌｅＢａｓｉｃＩｎｆｏｍａｔｉｏｎ→ＦｉｌｅＳｔｒｅａｍＩｎｆｏｍａｔｉｏｎ→ＦｉｌｅＢａｓｉｃＩｎｆｏｍａｔｉｏｎ→ＦｉｌｅＥａＩｎｆｏｍａｔｉｏｎのときにカウント値は６になる。
【００５０】
このようにＣＰＵ１０１はカウントアップして行くことで、ある特定の複数のアクセス要求が特定の順序で発行されたことを、カウンタのカウント値によって判定することができる。
【００５１】
図７は、ＯＳのバージョンごとのコピー操作を検出するための条件（コピー操作検出条件）を示している。ＯＳがＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａよりも前のバージョン（例：ＸＰ、２０００など）では、カウント１という名称のカウンタのカウント値が６になったことが、コピー操作が実行されたと認識（検出ないし推定）するための条件となる。なお、ＯＳがＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａ以降のバージョンである場合、５つのカウント１、カウント２、カウント３、カウント４、カウント５を用いることで、ある特定の複数のアクセス要求が特定の順序で発行されたことを判別できる。
【００５２】
カウントアップ条件が満たされていれば、Ｓ６０６に進み、ＣＰＵ１０１は、カウンタの値を１つカウントアップする。カウントアップ条件が満たされていなければ、Ｓ６０３に進み、ＣＰＵ１０１は、アクセス要求リストから次のデータを読み出す。
【００５３】
Ｓ６０７で、ＣＰＵ１０１は、アクセス要求名がファイルを閉じる要求を意味するアクセス要求名かどうかを判定する。アクセス要求名がファイルを閉じる要求を意味するアクセス要求名でなければ、Ｓ６０３に戻り、ＣＰＵ１０１は、アクセス要求リストから次のデータを読み出す。一方で、アクセス要求名がファイルを閉じる要求を意味するアクセス要求名（例：ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ）であれば、Ｓ６０８に進む。
【００５４】
Ｓ６０８で、ＣＰＵ１０１は、カウント値がコピー操作検出条件を満たしているかどうかを判定する。カウント値がコピー操作検出条件を満たしていなければ、本処理を終了する。一方で、カウント値がコピー操作検出条件を満たしていれば、Ｓ６０９に進む。なお、カウント値がコピー操作検出条件を満たしていれば、そのファイルをコピー元として複製して新しいファイルが作成された（つまり、コピーが実行されようとしている（コピー中）か、コピーが実行された）可能性が極めて高い。なお、この時点では、どのファイルがコピー操作により作成された新規のファイルかまでは特定できず、コピー元のファイルが特定できるにすぎない。ただし、コピー操作が実行されていることは検出できる。
【００５５】
Ｓ６０９で、ＣＰＵ１０１は、コピー元ファイルリストに、現在の処理の対象となっているファイル識別ＩＤ（例：ファイル識別ＩＤ：Ａ）をコピー元のファイルを示すファイル識別ＩＤとしてコピー元ファイルリストに追加する。なお、コピー元ファイルリストには、ファイル情報の一部をそのまま登録してもよいし、ファイル識別ＩＤのみを登録してもよい。ファイル識別ＩＤを検索キーとして、ファイル情報リスト３００からファイル情報３０１を取得できるからである。
【００５６】
図８は、コピー元ファイルリストの一例を示す図である。ＣＰＵ１０１は、ファイル情報からファイルを開いた時刻、ファイルを閉じた時刻、ファイル名、プロセス名、プロセスＩＤ、スレッドＩＤを読み出して、コピー元ファイルリストに登録している。なお、プロセス名は省略されてもよいし、プロセスＩＤからプロセス名が特定され、コピー元ファイルリストに追加されてもよい。
【００５７】
次に、Ｓ６０２で取り出したファイルを開く要求（たとえば、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ）のオプション情報が「開いている」ことを示していないときの処理について説明する。これは、複製された新しいファイルに対するアクセス要求に対する処理である。
【００５８】
Ｓ６１０で、ＣＰＵ１０１は、図８に示したコピー元ファイルリストからデータを取り出す。なお、この時点では、別のファイル識別ＩＤ（ファイル識別ＩＤ：Ａ’）のデータ（ファイル情報３０１）がファイル情報リスト３００から取り出されている。よって、コピー元ファイルリストのデータと、ファイル識別ＩＤ：Ａ’のデータとが以降の処理で比較されることになる。なお、ファイル識別ＩＤ：Ａ’は、コピー元ファイルから複製された新規ファイルのファイル識別ＩＤである可能性がある。
【００５９】
Ｓ６１１で、ＣＰＵ１０１は、コピー元ファイルリストにデータが存在するかどうかを判定する。コピー元ファイルリストにデータがなければ、本処理を終了する。一方で、データが存在すれば、Ｓ６１２に進む。
【００６０】
Ｓ６１２で、ＣＰＵ１０１は、コピー元ファイルリストのデータに含まれているプロセスＩＤとスレッドＩＤの両方が、ファイル識別ＩＤ：Ａ’のデータに含まれているプロセスＩＤとスレッドＩＤとに一致するかどうかを判定する。つまり、ＣＰＵ１０１は、コピー元ファイルリストのプロセスＩＤとファイル識別ＩＤ：Ａ’のプロセスＩＤとが一致し、かつ、コピー元ファイルリストのスレッドＩＤとファイル識別ＩＤ：Ａ’のスレッドＩＤとが一致するかどうかを判定する。プロセスＩＤとスレッドＩＤとがともに一致すれば、Ｓ６１３に進む。プロセスＩＤが一致しないか、または、スレッドＩＤが一致しなければ、Ｓ６１０に戻り、次のデータをコピー元ファイルリストから取り出す。
【００６１】
Ｓ６１３で、ＣＰＵ１０１は、コピー元ファイルリストから読み出した時刻データが所定の時刻条件に合致しているかどうかを判定する。たとえば、ＣＰＵ１０１は、コピー元ファイルリストから取り出したデータに格納されているコピー元ファイルの開閉時間と、ファイル識別ＩＤ：Ａ’の開閉時間とを比較する。
【００６２】
図９は、コピー操作が実行されるときにコピー元ファイルＡに対するアクセス要求のタイミングと、コピー先ファイルＡ’に対するアクセス要求のタイミングとを示している。コピー先ファイルとは、コピー元ファイルから複製されて生成されたファイルのことである。
【００６３】
図９が示すように、コピー操作が実行されるときは、時刻ｔ１においてコピー元ファイルＡが開かれ、時刻ｔ２においてコピー先ファイルＡ’が開かれる。その後、時刻ｔ３においてコピー元ファイルＡが閉じられ、時刻ｔ４においてコピー先ファイルＡ’が閉じられる。よって、Ｓ６１３では、ファイル情報リスト３００から読み出したコピー先ファイルＡ’の開いた時刻ｔ２が、コピー元ファイルリストから読み出したコピー元ファイルＡの開いた時刻ｔ１より遅く、かつ、コピー元ファイルＡの閉じた時刻ｔ３より前であり、かつ、コピー先ファイルＡ’の閉じた時刻ｔ４がコピー元ファイルＡの閉じた時刻ｔ３よりよりも後であることが判定される（ｔ１＜ｔ２＜ｔ３＜ｔ４）。時刻条件が合致していなければ、Ｓ６１０に戻り、次のデータを取り出す。時刻条件が合致していればＳ６１４に進む。なお、リアルタイムで検出しているときは、少なくともｔ１＜ｔ２＜ｔ３であることが検出されることになろう。コピー操作が完了していない可能性があるからである。
【００６４】
Ｓ６１４で、ＣＰＵ１０１は、ファイルのアクセスログにファイル情報を追加して、本処理を終了する。
【００６５】
図１０は、アクセスログの一例を示す図である。ＣＰＵ１０１は、セッションＩＤに基づきＯＳから取得したユーザ名をアクセスログに書き込む。ＣＰＵ１０１は、コピー先ファイルＡ’のファイル情報３０１から取得したプロセス名をアクセスログに書き込む。ＣＰＵ１０１は、操作の欄にファイルコピーを検出したことを示す「ファイルコピー」というメッセージを書き込む。ＣＰＵ１０１は、コピー元リストから読み出したコピー元ファイルＡのファイル名をアクセスログに書き込む。ＣＰＵ１０１は、コピー先ファイルＡ’のファイル情報３０１から取得したファイル名をアクセスログに書き込む。さらに、ＣＰＵ１０１は、コピー先ファイルＡ’のファイル情報３０１から取得した時刻情報（ファイルを開いた／閉じた日時を示す情報）をアクセスログに書き込む。
【００６６】
以上の実施形態では時刻情報について比較を行ったが、他の情報を使用してもよい。たとえば、ＣＰＵ１０１は、ファイルを開くためのアクセス要求とファイルを閉じるためのアクセス要求を検出したときにシーケンス番号を振っていき、シーケンス番号の大小を比較してもよい。つまり、シーケンス番号は時刻の経過とともに増加するため、シーケンス番号の大小を判定すれば、時刻の前後を判定できることになる。
【００６７】
以上説明したように、本実施形態によれば、ファイルに対する複数のアクセス要求がファイルコピー操作に特有の特定の順序で発行されたときに、コピー操作が実行されようとしているかコピー操作が実行されたと認識する。本実施形態によれば、ファイル操作に関与するすべてのＡＰＩを監視する必要はないため、ファイル操作に関与するすべてのＡＰＩを登録する必要はない。さらに、本実施形態によれば、ＡＰＩを用いずにファイル操作を実行するようなアプリケーションによるファイルのコピー操作であっても検出できる。また、フィルタドライバによってアクセス要求を捕捉すれば、フックと比較して、アプリケーションに対する影響は軽微となろう。
【００６８】
なお、ＣＰＵ１０１は、捕捉された複数のアクセス要求の順序が特定の順序であり、かつ、捕捉された複数のアクセス要求の数が特定の数であるときに、ファイルについてコピー操作が実行されようとしていると推定してもよい。上述したように、ファイルを閉じるためのアクセス要求が発行されたときのカウンタのカウント値が所定値（Ｗｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａより前のＯＳであれば６）であったときに、コピー操作が実行されたと検出できる。
【００６９】
上述したように、ファイルに対する複数のアクセス要求が特定の順序で発行されたかどうかはカウンタを用いることで判定できる。カウンタはハードウエアによって実現されてもよいし、変数など、ソフトウエアによって実現されてもよい。すなわち、ＣＰＵ１０１は、捕捉されたアクセス要求が特定の種類のアクセス要求であるときにカウント値を１つ増加する。そして、ＣＰＵ１０１は、アクセス要求の対象となったファイルがオープンされてからクローズされるまでにカウントされたカウント値が、コピー操作に特有の値であるときに、ファイルについてコピー操作が実行中かコピー操作が完了したと判定する。
【００７０】
アクセス要求は、アクセス要求名とオプション情報とを有している。そこで、ＣＰＵ１０１は、アクセス要求名とオプション情報とに着目して、複数のアクセス要求の順序を監視する。ＣＰＵ１０１は、アクセス要求に付随するオプション情報を抽出し、抽出したオプション情報が特定の種類のオプション情報であり、かつ、カウント値が所定値であるときに、当該カウント値を１つ増加する。これにより、ＣＰＵ１０１は、特定の複数のアクセス要求が特定の順序で発行されたことを判断できる。なお、特定の種類のオプション情報の１つは、アクセス要求がファイル情報の取得要求であることを示すオプション情報であろう。
【００７１】
このように、コピー元のファイルに対するアクセス要求を監視することで、そのファイルがコピーされたことを検出できるようになる。しかし、どのファイルがコピー操作によって新規に作成されたファイルかまでは特定できない。そこで、コピー元ファイル（第１のファイル）のプロセスＩＤ、スレッドＩＤおよび日時情報と、コピーにより作成された可能性のあるファイル（第２のファイル）のプロセスＩＤ、スレッドＩＤおよび日時情報とを比較することで、コピー先ファイルを検出できる。コピー先ファイルを検出できれば、事後的にそれを削除することで、実質的にコピー操作を禁止できるであろう。つまり、ＣＰＵ１０１は、コピー操作を検出したときに、コピー操作により作成された新しいファイルを削除する削除手段として機能してもよい。また、ＣＰＵ１０１は、リアルタイムでコピー操作を検出したときは、コピー操作を停止させる停止手段として機能してもよい。つまり、ＣＰＵ１０１は、コピー先ファイルを特定すると、コピー先ファイルに対するアクセス要求をフィルタドライバ２０２によって捕捉してそれを破棄してもよい。この場合、コピー元ファイルの一部分はコピー済みかもしれないが、残りの部分のコピーを禁止できるであろう。このときにも、ＣＰＵ１０１は、未完成のコピー先ファイルを削除してもよい。
【００７２】
ＣＰＵ１０１は、ファイル情報リストを分析してコピー操作を検出したときに、コピー操作の対象となったファイルのパス名を含むログを作成するログ作成手段として機能してもよい。ログにはファイルのパス名が含まれているため、ウィルスの侵入経路を特定するために役立つであろう。特に、アクセスログにコピー操作を実行したプロセス名を記録しておけば、ウイルスプロセスがどこのパスからどこのパスにファイルをコピーしたかを知ることができるだろう。これは情報漏えいの経路を把握する際にも役立つであろう。また、コピーされたファイルがウイルスプログラムであれば、ウイルスプログラムがどこのパスからどこのパスにコピーされたかがわかるため、ウィルスの侵入経路を特定できるであろう。また、コピー日時をアクセスログに記憶しておけば、日時情報に従ってウイルスプログラムの侵入経路をバックトレースすることも可能となろう。
【００７３】
本実施形態では、情報処理装置１００にフィルタドライバ２０２と分析プログラム２０４とがインストールされているものとして説明したが、分析プログラム２０４は別の情報処理装置１００（つまりサーバ装置など）にインストールされてもよい。この場合、フィルタドライバ２０２によって作成されたレコードはサーバ装置で動作している分析プログラム２０４にネットワークインタフェース１０４を介して送信されることになる。サーバ装置の分析プログラム２０４は、クライアント装置である情報処理装置１００から受信したレコードを分析してコピー操作を検出し、アクセスログを作成する。サーバ装置のハードウエア構成は、情報処理装置１００のハードウエア構成と同じであってよい。
【００７４】
また、本実施形態では、フィルタドライバ２０２と分析プログラム２０４とを別のプログラム構造として説明したが、同一でもよい。また、フィルタドライバ２０２と分析プログラム２０４とには上述した複数の機能がふくまれているが、これらの機能はフィルタドライバ２０２と分析プログラム２０４とのどちらかに含まれていればよい。あるいは、第３のプログラムに一部の機能が配置されていてもよい。
【００７５】
＜アクセス要求の取得処理＞
上述した実施形態では、ファイルシステムドライバを通じたファイルへのアクセス要求を検出するものとして説明した。しかし、フィルタドライバ２０２は、ＵＳＢインタフェース１０７を介して接続されたリムーバブルメディア上のファイルへのアクセス要求や、ネットワークインタフェース１０４を介したファイルへのアクセス要求を捕捉することで、コピー操作を検出してもよい。
【００７６】
図１１は、ファイルシステムドライバおよび非ファイルシステムドライバへのアクセス要求を検出するためのプログラム構造を示している。図２と比較すると分かるように、図１１では、フィルタドライバ２０２が非ファイルシステムドライバ１１０１に対するアクセス要求も捕捉する。非ファイルシステムドライバ１１０１とは、ネットワークインタフェース１０４を制御するドライバや、ＵＳＢインタフェース１０７に接続されたディスクシステムなどを制御するドライバである。このように、非ファイルシステムドライバ１１０１は、リムーバブルメディアやネットワークドライブなどに作成されたファイルシステムを制御するドライバである。なお、ファイルシステムドライバ２０３は、情報処理装置１００に内蔵されたハードディスク装置に含まれるファイルシステムを制御するドライバである。なお、非ファイルシステムドライバ１１０１がネットワークインタフェース１０４を制御するドライバである場合、フィルタドライバ２０２は、ネットワークインタフェース１０４を通じて送信または受信されるファイルに関するアクセス要求を捕捉してもよい。これは、ターミナルサービスやＦＴＰサービスなどによりコピーされるファイルを検出できることを意味する。
【００７７】
このように、フィルタドライバ２０２は、ファイルシステムドライバ２０３だけでなく、非ファイルシステムドライバ１１０１に対するアクセス要求を捕捉して分析プログラム２０４に渡す。これにより、分析プログラム２０４は、ファイルシステムドライバ２０３と非ファイルシステムドライバ１１０１との間で実行されるコピー操作も検出できる。この時の検出手順についてはすでに説明した手順と同様である。
【００７８】
図１０に示したように、コピー元ファイルがネットワークドライブに記憶されたファイルである場合（例：￥￥ｏｋａ￥￥ｍｏｔｏ￥￥Ａｒｒｅｓｔ．ｘｌｓ）や、コピー先ファイルがリムーバブルメディアである場合（例：Ｅ：Ｅｓｃａｐｅ．ｘｌｓ）でもコピー操作を検出して、アクセスログが作成される。また、コピー元ファイル（例：￥￥ｏｋａ￥￥ｍｏｔｏ￥￥Ｒｅｌｅａｓｅ．ｘｌｓ）だけでなくコピー先ファイル（例：Ｅ：Ｒｅｌｅａｓｅ．ｘｌｓ）も非ファイルシステムドライバ１１０１を通じて実行されることも想定されるが、本実施形態では、そのようなコピー操作も検出できる。
【００７９】
このようにリムーバブルメディアなどの外部記憶媒体へファイルがコピーされたときには、ＣＰＵ１０１が、表示装置１０８を通じてユーザに警告メッセージを表示してもよい。これにより、機密文章などを外部に持ち出すことを抑止することも可能であろう。
【００８０】
＜コピー操作の禁止＞
記憶装置１１０にコピー操作を禁止されるファイルを示すコピー禁止リストを予め記憶しておく。図１２が示すように、Ｓ６０８でコピー操作が検出されると、Ｓ１２０１に進む。なお、コピー禁止リストは、コピー操作を禁止されるファイルを示す情報（たとえば、ファイル名）に限らず、特定ユーザや特定プロセスでもよい。
【００８１】
Ｓ１２０１で、ＣＰＵ１０１は、コピー操作の対象となったコピー元ファイルのファイル名がコピー禁止リストに登録されているかどうかを判定する。コピー操作の対象となったコピー元ファイルのファイル名がコピー禁止リストに登録されていれば、Ｓ１２０２に進む。Ｓ１２０２で、ＣＰＵ１０１は、コピー禁止処理を実行する。たとえば、ＣＰＵ１０１は、情報処理装置１００の電源を落としたり（シャットダウン）、コピー操作を実行したプロセスを強制的に停止させたりしてもよい。
【００８２】
これを実行する代わりに、図１３が示すように、Ｓ１３０１で、ＣＰＵ１０１は、コピー元ファイルのファイル名がコピー禁止リストに登録されているかどうかを判定する。コピー元ファイルのファイル名がコピー禁止リストに登録されていれば、Ｓ１３０２に進む。そうでなければ、Ｓ６１４に進む。
【００８３】
Ｓ１３０２で、ＣＰＵ１０１は、コピー禁止処理を実行する。たとえば、ＣＰＵ１０１は、Ｓ６１０ないしＳ６１３により確定したコピー先ファイルに対するアクセス要求をフィルタドライバ２０２に破棄させる。これにより、コピー操作を途中で停止させることができる。さらに、ＣＰＵ１０１は、途中までコピーされたコピー先ファイルを強制的に削除してもよい。その後、Ｓ６１４で、ＣＰＵ１０１は、コピー操作が実行されようとしたことやコピー操作が禁止されたこと、コピー先ファイルが削除されたことをアクセスログに登録する。
【００８４】
このように本実施形態によれば、アクセス要求を監視することで、コピー禁止ファイルのコピー操作を検出し、コピー禁止処理を実行できるようになる。これにより、情報漏えいなどを抑制できるようになろう。
【００８５】
本発明の実施形態では、Ｗｉｎｄｏｗｓ（登録商標）を一例として説明した。しかし、本発明は、ファイルコピー操作が実行されるときに特定の複数のアクセス要求が特定の順序で発行されるＯＳであれば、同様に適用できる。
【００８６】
なお、図１２、図１３では、コピー操作を禁止されるファイルを示すコピー禁止リストを予め記憶しておきコピー禁止ファイルのコピー禁止処理を実行していたが、コピー禁止リストを予め記憶することなくコピー禁止処理を実行することも可能である。
【００８７】
具体的には、図１３のＳ６０９で、ＣＰＵ１０１は、コピー操作の対象となったコピー元ファイルのファイル情報をコピー禁止リストに登録する。そして、Ｓ６１０で、コピー禁止リストからデータをとりだし、Ｓ６１３で、時刻条件が一致していた場合（Ｓ６１３のＹＥＳ）、ＣＰＵ１０１は、コピー禁止処理を実行する。
【００８８】
このように、コピー禁止リストを予め記憶することなくコピー禁止処理を実行することで、未知のファイルに対するコピー操作を禁止することができ、より情報漏えいなどを抑制できるようになろう。
【図１】
2014211716.tif 000003
【図２】
2014211716.tif 000004
【図３】
2014211716.tif 000005
【図４】
2014211716.tif 000006
【図５】
2014211716.tif 000007
【図６】
2014211716.tif 000008
【図７】
2014211716.tif 000009
【図８】
2014211716.tif 000010
【図９】
2014211716.tif 000011
【図１０】
2014211716.tif 000012
【図１１】
2014211716.tif 000013
【図１２】
2014211716.tif 000014
【図１３】
2014211716.tif 000015