(57)【要約】【課題】アクセス元プロセスによりアクセス先ファイルの完全性が失われることを防止する。【解決手段】アクセス制御装置１０のアクセス検知・制御部１４は、ファイルに対するプロセスのアクセスを検知する。ファイルデータ完全性判定部１６は、ファイルデータに基づいて、ファイルが改ざんされているか否かを判定する。アクセス元プロセス完全性判定部１７は、アクセス元プロセスの識別情報がファイルへのアクセスを許可されている許可プロセスの識別情報に含まれているか否かを判定する。アクセス制御判定部１９は、アクセス元プロセスがアクセスしようとしているファイルが改ざんされていないと判定され、かつ、アクセス元プロセスの識別情報が許可プロセスの識別情報に含まれていると判定された場合には、アクセス元プロセスのアクセスを安全と判定し、それ以外の場合には、アクセス元プロセスのアクセスを危険と判定する。【選択図】図４
2019008732.tif 000002
【特許請求の範囲】
【請求項１】
ファイルへのアクセスを許可されている許可プロセスの識別情報を該ファイルごとに記憶する記憶部と、
ファイルに対するアクセス元プロセスのアクセスを検知する検知部と、
ファイルのファイルデータに基づいて、該ファイルが改ざんされているか否かを判定するファイル判定部と、
前記検知部によりファイルに対するアクセスが検知されたアクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれているか否かを判定するプロセス判定部と、
前記ファイル判定部により、前記アクセス元プロセスがアクセスしようとしているファイルが改ざんされていないと判定され、かつ、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていると判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを安全と判定し、該ファイルが改ざんされていると判定された、または、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていないと判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを危険と判定するアクセス制御判定部と
を備えたことを特徴とするアクセス制御装置。
【請求項２】
さらに、
前記記憶部は、前記アクセス元プロセスが依存する依存対象ファイルの識別情報を記憶し、
前記ファイル判定部は、前記アクセス元プロセスが依存する依存対象ファイルが改ざんされているか否かを判定する
ことを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
さらに、
前記記憶部は、ファイルに依存する依存プロセスの識別情報を該ファイルごとに記憶するとともに、該依存プロセスのうち前記ファイル判定部により該ファイルが改ざんされていると判定された不完全プロセスの識別情報を記憶し、
前記プロセス判定部は、前記アクセス元プロセスの識別情報が前記不完全プロセスの識別情報に含まれているか否かを判定し、
前記アクセス制御判定部は、前記ファイル判定部により、前記アクセス元プロセスがアクセスしようとしているファイルが改ざんされていないと判定され、かつ、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていると判定され、かつ、前記アクセス元プロセスの識別情報が前記不完全プロセスの識別情報に含まれていないと判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを安全と判定し、該ファイルが改ざんされていると判定された、または、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていないと判定された、または、前記アクセス元プロセスの識別情報が前記不完全プロセスの識別情報に含まれていると判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを危険と判定する
ことを特徴とする請求項１または２に記載のアクセス制御装置。
【請求項４】
さらに、
前記検知部は、アクセス先ファイルに対するアクセスを検知したアクセス元プロセスのアクセスを一時停止させ、
前記アクセス制御判定部により、前記安全とされた前記アクセス元プロセスのアクセスの一時停止を解除し、前記危険とされた前記アクセス元プロセスのアクセスの一時停止を解除せず、該アクセスを遮断するアクセス制御部
を備えたことを特徴とする請求項１〜３のいずれか１項に記載のアクセス制御装置。
【請求項５】
さらに、
前記記憶部は、遮断モードおよび記録モードのいずれかのモードを示す制御フラグを前記ファイルの識別情報それぞれに対応付けて記憶し、
前記検知部は、アクセス先ファイルに対するアクセスを検知したアクセス元プロセスのアクセスを一時停止させ、
前記アクセス制御判定部により、前記アクセス先ファイルに対する前記アクセス元プロセスのアクセスが前記危険と判定された際、前記アクセス先ファイルの識別情報に対応する前記制御フラグが前記遮断モードを示す場合には前記一時停止を解除せず該アクセスを遮断し、前記制御フラグが前記記録モードを示す場合には前記一時停止を解除するアクセス制御部と
を備えたことを特徴とする請求項１〜３のいずれか１項に記載のアクセス制御装置。
【請求項６】
さらに、
前記ファイル判定部および前記プロセス判定部による判定結果を記録する
ことを特徴とする請求項１〜４のいずれか１項に記載のアクセス制御装置。
【請求項７】
アクセス制御装置が実行するアクセス制御方法であって、
ファイルに対するアクセス元プロセスのアクセスを検知する検知ステップと、
ファイルのファイルデータに基づいて、該ファイルが改ざんされているか否かを判定するファイル判定ステップと、
前記検知ステップによりファイルに対するアクセスが検知されたアクセス元プロセスの識別情報が、ファイルへのアクセスを許可されている許可プロセスの識別情報を該ファイルごとにする記憶部に記憶されている前記許可プロセスの識別情報に含まれているか否かを判定するプロセス判定ステップと、
前記ファイル判定ステップにより、前記アクセス元プロセスがアクセスしようとしているファイルが改ざんされていないと判定され、かつ、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていると判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを安全と判定し、該ファイルが改ざんされていると判定された、または、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていないと判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを危険と判定するアクセス制御判定ステップと
を含んだことを特徴とするアクセス制御方法。
【請求項８】
請求項１〜６のいずれか１項に記載のアクセス制御装置としてコンピュータを機能させるためのアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御装置、アクセス制御方法およびアクセス制御プログラムに関する。
【背景技術】
【０００２】
従来より、コンピュータ上で存在および動作することが許可されているアプリケーションおよびアプリケーションコンポーネント（ライブラリファイル、設定ファイル等）を予めホワイトリストに登録しておくアプリケーション制御技術がある。このアプリケーション制御技術は、アプリケーションおよびアプリケーションコンポーネントがホワイトリストに登録されており、かつこれらのファイルの完全性が確認されている場合、その動作を許可し、ホワイトリストに登録されていない場合、または、これらのファイルの完全性が失われている場合、その動作を許可しないというものである（例えば、非特許文献１参照）。ファイルの完全性とは、例えば、ファイルが改ざんされていないことをいう。
【０００３】
ファイルに対するアクセス制御の観点によれば、アプリケーションおよびアプリケーションコンポーネントはアクセス先ファイルであり、ライブラリや設定ファイルを参照するアプリケーションプロセスはアクセス元プロセスと見ることができる。上述の従来技術はアクセス先ファイルの完全性を確認できる場合のみ、アクセス元プロセスが目的とするファイルアクセスを許可するものである。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Adam  Sedgewick  et  al.、“Guide  to  Application  Whitelisting”、［online］、NIST  Special  Publication  800-167、National  Institute  of  Standards  and  Technology、［平成29年6月12日検索］、インターネット〈URL：http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-167.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術は、ファイルアクセスにおいて、アクセス先ファイルの完全性は確認できるが、ファイルへアクセスするアクセス元プロセスの完全性は確認できない。アクセス元プロセスの完全性が失われるとは、例えば、アクセス元プロセスがマルウェア等の不適切なプロセスであることを含む。よって、アクセス元プロセスによるファイルアクセスの結果、アクセス先ファイルの完全性が失われることを防止できないという問題がある。
【０００６】
アクセス先ファイルがアプリケーションプロセスの実行ファイル、ライブラリ、設定ファイル、入出力ファイルなどである場合、アクセス先ファイルが不正に改ざんされていれば、当該アプリケーションプロセスが不正に動作する可能性がある。一方、アクセス元プロセスが改ざんされているなど不正なものである場合、当該プロセスがアクセスすることによってアクセス先ファイルが不正に改ざんされる可能性がある。さらに、そのように改ざんされたアクセス先ファイルが、さらに別のアプリケーションプロセスの不正な動作につながる可能性がある。すなわち、ファイルアクセスの安全性を確認するには、アクセス先ファイルの完全性と、アクセス元プロセスの完全性の、両方を確認することが必要である。
【０００７】
なお、上述の従来技術において、網羅的かつ正確なアプリケーションホワイトリストを作成することが可能であれば、コンピュータシステム上で完全性を欠いたアプリケーションプロセスの実行を防ぐことができるため、個々のファイルアクセスに着目してアクセス元プロセスの完全性を確認するまでも無い。しかしながら、一般的な環境において、網羅的かつ正確なアプリケーションホワイトリストを作成し維持することは、多くのコストがかかり難しい。
【０００８】
本願が開示する実施形態の一例は、上述に鑑みてなされたものであって、アクセス元プロセスによりアクセス先ファイルの完全性が失われることを防止することを目的とする。
【課題を解決するための手段】
【０００９】
本願の実施形態の一例において、アクセス制御装置は、ファイルへのアクセスを許可されている許可プロセスの識別情報を該ファイルごとに記憶する記憶部と、ファイルに対するアクセス元プロセスのアクセスを検知する検知部と、ファイルのファイルデータに基づいて、該ファイルが改ざんされているか否かを判定するファイル判定部と、前記検知部によりファイルに対するアクセスが検知されたアクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれているか否かを判定するプロセス判定部と、前記ファイル判定部により、前記アクセス元プロセスがアクセスしようとしているファイルが改ざんされていないと判定され、かつ、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていると判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを安全と判定し、該ファイルが改ざんされていると判定された、または、前記アクセス元プロセスの識別情報が前記許可プロセスの識別情報に含まれていないと判定された場合には、該ファイルに対する前記アクセス元プロセスのアクセスを危険と判定するアクセス制御判定部とを備えた。
【発明の効果】
【００１０】
本願の実施形態の一例によれば、例えば、アクセス元プロセスによるファイルアクセスの結果、アクセス先ファイルの完全性が失われることを防止することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、ファイルと、依存プロセスと、アクセス元プロセスとの関係の一例を示す図である。
【図２】図２は、制御フラグと、ファイルデータ完全性およびアクセス元プロセス完全性との関係の一例を示す図である。
【図３】図３は、ファイルおよびプロセスの再帰的な完全性確認の一例を示す図である。
【図４】図４は、実施形態１のアクセス制御装置の構成の一例を示す図である。
【図５】図５は、実施形態１のアクセス対象ファイルリストと、プロセスＡＣＬと、依存プロセスリストと、不完全プロセスリストの一例を示す図である。
【図６】図６は、実施形態１における判定結果リストの一例を示す図である。
【図７】図７は、実施形態１の初期設定処理の一例を示すフローチャートである。
【図８】図８は、実施形態１のファイルアクセス制御処理の一例を示すフローチャートである。
【図９】図９は、実施形態２のアクセス制御装置の構成の一例を示す図である。
【図１０】図１０は、実施形態２のアクセス対象ファイルリストと、プロセスＡＣＬの一例を示す図である。
【図１１】図１１は、実施形態２のファイルアクセス制御処理の一例を示すフローチャートである。
【図１２】図１２は、プログラムが実行されることにより、アクセス制御装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本願の実施形態の一例のアクセス制御装置、アクセス制御方法およびアクセス制御プログラムの実施形態を説明する。なお、以下の実施形態は、一例を示すに過ぎず、本願を限定するものではない。以下の各実施形態において、既出の同一構成および同一処理については、説明を省略する。また、以下に示す各実施形態は、矛盾しない範囲で適宜組合せることができる。
【００１３】
［実施形態１］
（ファイルと、依存プロセスと、アクセス元プロセスとの関係）
実施形態１の説明に先立ち、ファイルのアクセス制御について説明する。図１は、ファイルと、依存プロセスと、アクセス元プロセスとの関係の一例を示す図である。図１では、アクセス元プロセス、ファイルＦ、依存プロセスは、オペレーティングシステムにより管理されているとする。なお、図１は、あくまで一例を示すに過ぎず、アクセス元プロセス、ファイルＦ、依存プロセスそれぞれの数、ファイルアクセスの関係、依存関係は、図示のものに限られない。
【００１４】
図１に例示するファイルＦは、データファイル、設定ファイル、プログラムファイル、スクリプトファイル等である。プログラムファイルは、実行ファイル、ライブラリファイル等である。ここで、ファイルＦが「ファイルデータ完全性Ｖ１」を有するとは、ファイルＦのファイルデータのダイジェスト値（例えばハッシュ値）と、事前定義したファイルＦの参照ダイジェスト値とが一致することをいう。
【００１５】
また、図１に例示する依存プロセスは、依存プロセスの動作の正当性（以下、「依存プロセス完全性」という）が、当該依存プロセスが依存関係にあるファイルＦの「ファイルデータ完全性Ｖ１」に依存するプロセスである。依存プロセスは、アプリケーションプロセス、オペレーティングシステム、インタプリタプロセス等である。
【００１６】
例えば、依存プロセスは、依存プロセス完全性が、アプリケーションプロセスの実行ファイルであるファイルＦの「ファイルデータ完全性Ｖ１」に依存する、当該アプリケーションプロセスである。また、例えば、依存プロセスは、依存プロセス完全性が、アプリケーションプロセスのライブラリファイルであるファイルＦの「ファイルデータ完全性Ｖ１」に依存する、当該アプリケーションプロセスである。
【００１７】
また、例えば、依存プロセスは、依存プロセス完全性が、アプリケーションプロセスへの入力データのデータファイルであるファイルＦの「ファイルデータ完全性Ｖ１」に依存する、当該アプリケーションプロセスである。また、例えば、依存プロセスは、依存プロセス完全性が、アプリケーションプロセスの設定ファイルであるファイルＦの「ファイルデータ完全性Ｖ１」に依存する、当該アプリケーションプロセスである。依存プロセスは、オペレーティングシステムを介して、依存プロセスの実行ファイルパス等によって識別される。
【００１８】
また、図１に例示するアクセス元プロセスは、ファイルＦに対してアクセスするプロセスである。アクセス元プロセスは、依存プロセス同様、アプリケーションプロセス、オペレーティングシステム、インタプリタプロセス等である。
【００１９】
例えば、アクセス元プロセスは、データファイルであるファイルＦを参照または更新するアプリケーションプロセスである。また、例えば、アクセス元プロセスは、設定ファイルであるファイルＦを参照するアプリケーションプロセスである。また、例えば、アクセス元プロセスは、プログラムファイルであるファイルＦを実行するオペレーティングシステムである。また、例えば、アクセス元プロセスは、スクリプトファイルであるファイルＦを実行するインタプリタプロセスである。
【００２０】
ここで、アクセス元プロセスが「アクセス元プロセス完全性Ｖ２」を有するとは、アクセス元プロセスがファイルＦに対してファイルアクセスが許可されているプロセスとしてプロセスＡＣＬ（Access  Control  List）に登録されており、かつ、当該アクセス元プロセスが依存関係にあるファイルが「ファイルデータ完全性Ｖ１」を有することをいう。アクセス元プロセスは、オペレーティングシステムを介して、アクセス元プロセスの実行ファイルパス等によって識別される。図１において、アクセス元プロセスが依存関係にあるファイルは、不図示のファイルである。
【００２１】
ここで、アクセス元プロセスが「アクセス元プロセス完全性Ｖ２」を有さない場合、アクセス元プロセスによるファイルＦへのファイルアクセスの結果、ファイルＦが「ファイルデータ完全性Ｖ１」を有さなくなるおそれが生じる。また、ファイルＦが「ファイルデータ完全性Ｖ１」を有さない場合、依存プロセスが、アクセス元プロセスとして振る舞う際の「アクセス元プロセス完全性Ｖ２」も有さなくなるおそれが生じる。このように、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」は、再帰的に伝播していく。
【００２２】
（アクセス制御判定）
そこで、実施形態１では、アクセス元プロセスがファイルＦに対してファイルアクセスを開始し、かつ、ファイルＦの参照または更新が未実施の状態が検知された時点で、当該アクセス元プロセスのファイルアクセスを一時停止させて、「アクセス制御Ｖ４」の判定を行う。アクセス元プロセスがファイルＦに対してファイルアクセスを開始したとは、例えば、アクセス元プロセスがオペレーティングシステムに対してファイルＦのオープンを指示したことや、オペレーティングシステムによるファイルＦの起動イベントを検知したことをいう。「アクセス制御Ｖ４」の判定は、「ファイルデータ完全性Ｖ１」、「アクセス元プロセス完全性Ｖ２」、「アクセス完全性Ｖ３」の各判定を含む。
【００２３】
ファイルＦの「ファイルデータ完全性Ｖ１」の判定では、ファイルＦのファイルデータのダイジェスト値を算出し、算出したダイジェスト値と、事前定義しておいた当該ファイルデータの参照ダイジェスト値とが一致するか否かを判定する。ファイルＦのダイジェスト値と、参照ダイジェスト値とを比較した結果、両者が一致する場合、ファイルＦの「ファイルデータ完全性Ｖ１」の判定結果をＯＫと判定し、両者が一致しない場合、ファイルＦの「ファイルデータ完全性Ｖ１」の判定結果をＮＧと判定する。
【００２４】
なお、「ファイルデータ完全性Ｖ１」の判定は、ファイルＦがプログラムファイル等、ファイルデータが更新されず固定である“データ固定ファイル”である場合に実行され、ログファイル等、ファイルデータが更新される“データ変動ファイル”である場合には実行されない。
【００２５】
「アクセス元プロセス完全性Ｖ２」の判定では、アクセス元プロセスがファイルＦに対してファイルアクセスが許可されているプロセスとしてプロセスＡＣＬに登録されており、かつ、当該アクセス元プロセスが依存関係にあるファイルの「ファイルデータ完全性Ｖ１」の判定結果がＯＫであるか否かを判定する。アクセス元プロセスがプロセスＡＣＬに登録されており、かつ、当該アクセス元プロセスが依存関係にあるファイルの「ファイルデータ完全性Ｖ１」の判定結果がＯＫである場合、アクセス元プロセスの「アクセス元プロセス完全性Ｖ２」の判定結果をＯＫと判定する。一方、アクセス元プロセスがプロセスＡＣＬに登録されていない、または、当該アクセス元プロセスが依存関係にあるファイルの「ファイルデータ完全性Ｖ１」の判定結果がＮＧである場合、アクセス元プロセスの「アクセス元プロセス完全性Ｖ２判定」の判定結果をＮＧと判定する。
【００２６】
「アクセス完全性Ｖ３」の判定では、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の判定結果がともにＮＧでない場合、アクセス元プロセスによるファイルＦに対するファイルアクセスの「アクセス完全性Ｖ３」の判定結果をＯＫ（安全）と判定する。一方、「ファイルデータ完全性Ｖ１判定」または「アクセス元プロセス完全性Ｖ２判定」の判定結果のいずれかがＮＧの場合、アクセス元プロセスによるファイルＦに対するファイルアクセスの「アクセス完全性Ｖ３」の判定結果をＮＧ（危険）と判定する。
【００２７】
そして、実施形態１では、「制御フラグ」に応じて「アクセス制御Ｖ４」を行う。「制御フラグ」は、ファイルＦごとに設定される、「ファイルデータ完全性Ｖ１」または「アクセス元プロセス完全性Ｖ２」の判定結果のいずれかがＮＧであった場合の動作モードを指定する。「制御フラグ」が指定する動作モードには、“記録モード”および“遮断モード”がある。
【００２８】
“記録モード”では、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の各判定結果を記録して、アクセス元プロセスによるファイルＦに対するファイルアクセスを許可する。“遮断モード”では、アクセス元プロセスのファイルＦに対するファイルアクセスを遮断する。“遮断モード”または“記録モード”をファイルＦごとに設定することによって、柔軟なファイルアクセスの制御および管理が可能になる。
【００２９】
なお、“遮断モード”は、“記録モード”よりセキュリティ的に安全であるが、事後的にリスク分析するケースも多いことから、“遮断モード”あっても、アクセス元プロセスのファイルＦに対するファイルアクセスを遮断しつつ、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の各判定結果を記録してもよい。
【００３０】
「アクセス制御Ｖ４」の判定では、「アクセス完全性Ｖ３」の判定結果および「制御フラグ」に基づいて、一時停止していたアクセス元プロセスのファイルＦに対するファイルアクセスの“許可”または“遮断”を判定する。「アクセス制御Ｖ４」の判定では、「アクセス完全性Ｖ３」の判定結果がＯＫ、または、「制御フラグ」が“記録モード”の場合、アクセス元プロセスによるファイルＦに対するファイルアクセスを“許可”と判定する。また、「アクセス制御Ｖ４」では、「アクセス完全性Ｖ３」の判定結果がＮＧ、かつ、「制御フラグ」が“遮断モード”の場合、アクセス元プロセスによるファイルＦに対するファイルアクセスを“遮断”と判定する。
【００３１】
（制御フラグと、ファイルデータ完全性およびアクセス元プロセス完全性との関係）
図２は、制御フラグと、ファイルデータ完全性およびアクセス元プロセス完全性との関係の一例を示す図である。なお、ファイルＦが“データ固定ファイル”である場合、プログラムファイル等のデータが更新されないファイルであるので、ダイジェスト値が固定値であり、「ファイルデータ完全性Ｖ１」が判定できる。一方、ファイルＦが“データ変動ファイル”である場合、ログファイル等のデータが更新されるファイルであるので、ダイジェスト値が固定値でなく、「ファイルデータ完全性Ｖ１」が判定できない。
【００３２】
図２（ａ）に示すように、「制御フラグ」“記録モード”の場合であって、「ファイルデータ完全性Ｖ１」の判定結果がＮＧの場合、ファイルＦの分類が“データ固定ファイル”であると、“依存プロセスの完全性にリスク”が存在することになる。“依存プロセスの完全性にリスク”が存在するとは、ファイルＦの不完全性リスクが、依存プロセスへと伝播するおそれがあることをいう。
【００３３】
また、「制御フラグ」“記録モード”の場合であって、「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧの場合、ファイルＦの分類が“データ固定ファイル”であると、“ファイルＦの完全性にリスク”が存在することになる。“ファイルＦの完全性にリスク”が存在するとは、アクセス元プロセスの不完全性リスクが、ファイルＦへと伝播するおそれがあることをいう。
【００３４】
また、図２（ａ）に示すように、「制御フラグ」“記録モード”の場合であって、ファイルＦの分類が“データ変動ファイル”であると、ファイルデータの完全性Ｖ１は判定できないため、ファイルデータＶ１の完全性がＮＧのケースは存在しない。また、「制御フラグ」“記録モード”の場合であって、「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧの場合、ファイルＦの分類が“データ変動ファイル”であると、“ファイルＦの完全性にリスク”が存在するとともに、“依存プロセスの完全性にリスク”が存在することになる。
【００３５】
なお、図２（ａ）において、「制御フラグ」“記録モード”の場合であって、“データ固定ファイル”であるファイルＦに対する「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧであっても、ファイルＦに対する次回のアクセスを検知するまでは、ファイルＦにアクセスするプロセスが存在しないため、ファイルＦの“依存プロセスの完全性にリスク”は生じない。以降のファイルＦに対するアクセス時に、ファイルＦの「ファイルデータ完全性Ｖ１判定」の判定結果がＮＧと判定されれば、“依存プロセスの完全性にリスク”が生じる。また、図２（ａ）において、“データ変動ファイル”であるファイルＦに対する「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧであった場合、その時点でファイルＦの“依存プロセスの完全性にリスク”が生じる。
【００３６】
また、図２（ｂ）に示すように、「制御フラグ」“遮断モード”の場合であって、「ファイルデータ完全性Ｖ１」の判定結果がＮＧの場合は、ファイルＦの分類が“データ固定ファイル”であると、“依存プロセスの完全性を保護”することになる。また、「制御フラグ」“遮断モード”の場合であって、「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧの場合は、ファイルＦの分類が“データ固定ファイル”であると、“ファイルＦの完全性を保護”することになる。
【００３７】
また、図２（ｂ）に示すように、「制御フラグ」“遮断モード”の場合であって、ファイルＦの分類が“データ変動ファイル”であると、ファイルデータの完全性Ｖ１は判定できないため、ファイルデータＶ１の完全性がＮＧのケースは存在しない。また、「制御フラグ」“遮断モード”の場合であって、「アクセス元プロセス完全性Ｖ２」の確認結果がＮＧの場合は、ファイルＦの分類が“データ変動ファイル”であると、“ファイルＦの完全性を保護”するとともに、“依存プロセスの完全性を保護”することになる。
【００３８】
（ファイルおよびプロセスの再帰的な完全性確認）
図３は、ファイルおよびプロセスの再帰的な完全性確認の一例を示す図である。図３の例示では、「監視対象ファイル」“ファイル６”に対して、「監視対象ファイルを依存対象とするプロセス」、「監視対象ファイルの許可プロセス」がある。「監視対象ファイルを依存対象とするプロセス」は、“プロセス（ＡＰ４）”“プロセス（ＡＰ５）”である。ＡＰは、Application（アプリケーション）の略である。また、「監視対象ファイルの許可プロセス」は、“プロセス（ＡＰ２）”“プロセス（ＡＰ３）”である。
【００３９】
また、「監視対象ファイルの許可プロセス」に対して、「監視対象ファイルの許可プロセスの依存対象ファイル」がある。「監視対象ファイルの許可プロセスの依存対象ファイル」は、“ファイル２”〜“ファイル５”がある。
【００４０】
また、「監視対象ファイルの許可プロセスの依存対象ファイル」に対して、「監視対象ファイルの許可プロセスの依存対象ファイルの許可プロセス」がある。「監視対象ファイルの許可プロセスの依存対象ファイルの許可プロセス」は、“プロセス（ＡＰ１）”がある。
【００４１】
また、「監視対象ファイルの許可プロセスの依存対象ファイルの許可プロセス」に対して「監視対象ファイルの許可プロセスの依存対象ファイルの許可プロセスの依存対象ファイル」がある。「監視対象ファイルの許可プロセスの依存対象ファイルの許可プロセスの依存対象ファイル」は、“ファイル１”である。
【００４２】
“ファイル１”は、“プロセス（ＡＰ１）”が依存する、ＡＰ１の実行ファイル（ＡＰ１実行ファイル）である。なお、“ファイル１”は、ファイルアクセス時に、「ファイルデータ完全性Ｖ１」、「アクセス元プロセス完全性Ｖ２」、「アクセス完全性Ｖ３」の各判定が実行される。
【００４３】
“プロセス（ＡＰ１）”は、“ファイル１”が実行されることにより動作するプロセスである。すなわち、“プロセス（ＡＰ１）”は、“ファイル１”に依存関係にある。“プロセス（ＡＰ１）”は、実行時に、“ファイル３”および“ファイル４”にファイルアクセスする。
【００４４】
“ファイル２”は、“プロセス（ＡＰ２）”の実行ファイルである。“ファイル３”は、“プロセス（ＡＰ２）”のライブラリファイルである。“ファイル４”は、“プロセス（ＡＰ２）”の入力データのファイルであるとともに、“プロセス（ＡＰ１）”の出力データのファイルである。すなわち、“プロセス（ＡＰ１）”の出力データは、“プロセス（ＡＰ２）”の入力データである。また、“ファイル５”は、“プロセス（ＡＰ３）”の実行ファイルである。これら“ファイル２”〜“ファイル３”、“ファイル５”は、“データ固定ファイル”であるため、ファイルアクセス時に、「ファイルデータ完全性Ｖ１」、「アクセス元プロセス完全性Ｖ２」、「アクセス完全性Ｖ３」の各判定が実行される。また、“ファイル４”は、“データ変動ファイル”であるため、ファイルアクセス時に、「ファイルデータ完全性Ｖ１」の判定は実行されず、「アクセス元プロセス完全性Ｖ２」、「アクセス完全性Ｖ３」の各判定が実行される。
【００４５】
“プロセス（ＡＰ２）”は、“ファイル２”および“ファイル３”が実行され、“ファイル４”を入力データのファイルとすることにより動作するプロセスである。すなわち、“プロセス（ＡＰ２）”は、“ファイル２”〜“ファイル４”に依存関係にある。“プロセス（ＡＰ２）”は、実行時に、“ファイル６”にファイルアクセスし、プロセス（ＡＰ１）の出力データを“ファイル６”へ出力する。また、プロセス（ＡＰ３）”は、“ファイル５”が実行されることにより動作するプロセスである。すなわち、“プロセス（ＡＰ３）”は、“ファイル５”に依存関係にある。“プロセス（ＡＰ３）”は、実行時に、“ファイル６”にファイルアクセスする。
【００４６】
“ファイル６”は、“プロセス（ＡＰ１）”の出力データである。“ファイル６”は、“データ変動ファイル”であるため、ファイルアクセス時に、「ファイルデータ完全性Ｖ１」の判定は実行されず、「アクセス元プロセス完全性Ｖ２」、「アクセス完全性Ｖ３」の各判定が実行される。“プロセス（ＡＰ４）”および“プロセス（ＡＰ５）”は、“ファイル６”と依存関係にあるプロセスである。
【００４７】
このように、“ファイル１”の「ファイルデータ完全性Ｖ１」の有無が、“プロセス（ＡＰ１）”→“ファイル３”および“ファイル４”と伝播するが、“ファイル１”が改ざんされた際、“遮断モード”の場合には、“ファイル３”および“ファイル４”、ならびに以降の“プロセスＡＰ２”、“ファイル６”は、改ざんによる“ファイル１”の「ファイルデータ完全性Ｖ１」の喪失の影響から遮断される。一方、“ファイル１”の“記録モード”の場合には、“ファイル１”を起点に“プロセス（ＡＰ２）”まで、「ファイルデータ完全性Ｖ１」の喪失が連鎖して伝播することが記録される。この記録をもとに、“ファイル６”の「アクセス制御Ｖ４」を実行することができる。
【００４８】
（実施形態１のアクセス制御装置）
図４は、実施形態１のアクセス制御装置の構成の一例を示す図である。実施形態１のアクセス制御装置１０は、ファイル管理システム２０と接続される。ファイル管理システム２０では、オペレーティングシステム上で、アクセス元プロセスＰ１が動作し、アクセス対象ファイルＦ１へアクセスする。
【００４９】
アクセス制御装置１０は、記憶部１１、制御部１２、入出力部１３、アクセス検知・制御部１４、データ取得部１５、ファイルデータ完全性判定部１６、アクセス元プロセス完全性判定部１７、不完全プロセスリスト管理部１８、アクセス制御判定部１９を有する。
【００５０】
（記憶部が記憶する情報）
図５は、実施形態１のアクセス対象ファイルリストと、プロセスＡＣＬと、依存プロセスリストと、不完全プロセスリストの一例を示す図である。図６は、実施形態１における判定結果リストの一例を示す図である。記憶部１１は、磁気記憶装置または半導体記憶装置等の記憶装置である。
【００５１】
図５に示すように、記憶部１１は、初期設定されるデータとして、アクセス対象ファイルリストＬ１、アクセス対象ファイルリストＬ１の１レコードごとのリスト群Ｌ２、リスト群Ｌ２から生成される不完全プロセスリストＬ３を格納する。また、リスト群Ｌ２ぞれぞれは、ファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含む。また、記憶部１１は、判定結果リストＬ４を格納する。アクセス対象ファイルリストＬ１、リスト群Ｌ２、不完全プロセスリストＬ３、判定結果リストＬ４は、ファイル、ＤＢＭＳ（Data  Base  Management  System）、あるいはプログラムのメモリ領域などに記録され、参照および更新される。
【００５２】
アクセス対象ファイルリストＬ１は、「ファイルパス」「参照ダイジェスト値」「アクセス元プロセス完全性判定フラグ」「制御フラグ」の項目を有する。「ファイルパス」は、ファイル管理システム２０におけるアクセス元プロセスＰ１のアクセス対象ファイルＦ１のファイルパスである。
【００５３】
「参照ダイジェスト値」は、アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」を判定するためのアクセス対象ファイルＦ１の参照ダイジェスト値であり、アクセス対象ファイルＦ１のファイルデータをSHA-256等のhash関数で変換した値である。なお、アクセス対象ファイルＦ１が、ログファイル等のデータが変更または更新されるファイルである場合には、「参照ダイジェスト値」は定義されない。
【００５４】
「アクセス元プロセス完全性判定フラグ」は、ファイル管理システム２０におけるアクセス対象ファイルＦ１の「アクセス元プロセス完全性Ｖ２」を判定する場合は“ＹＥＳ”、判定しない場合は“ＮＯ”がセットされる。なお、アクセス対象ファイルＦ１が、「参照ダイジェスト値」が定義されないログファイル等のデータが変更または更新されるファイルである場合には、「アクセス元プロセス完全性判定フラグ」“ＹＥＳ”がセットされることが必須である。
【００５５】
「制御フラグ」“遮断モード”は、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」のいずれかの判定結果がＮＧであれば、アクセス対象ファイルＦ１に対するファイルアクセスを遮断する制御を行う動作モードである。また、「制御フラグ」“記録モード”は、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」のいずれかの判定結果がＮＧであっても、アクセス対象ファイルＦ１に対するファイルアクセスを遮断せずに許可し、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の判定結果を記録する制御を行う動作モードである。
【００５６】
例えば、アクセス対象ファイルリストＬ１において、「ファイルパス」“d1/d2/f1”のアクセス対象ファイルＦ１は、「参照ダイジェスト値」が“f1のhash値”であり、「アクセス元プロセス完全性判定フラグ」が“ＹＥＳ”であり、「制御フラグ」が“遮断モード”である。
【００５７】
なお、アクセス対象ファイルリストＬ１における「アクセス対象ファイルＦ１」は、ファイル管理システム２０上の全てのファイルではなく、ファイル管理システム２０上のファイルのうちの、保護対象であるアクセス先ファイルおよびこれらに対するアクセス元プロセスの依存対象ファイルである。
【００５８】
そして、アクセス対象ファイルリストＬ１の「ファイルパス」“d1/d2/f1”のレコードに対応するリスト群Ｌ２は、“d1/d2/f1”を格納するファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含む。プロセスＡＣＬ_Ｌ２−２は、アクセス対象ファイルＦ１ごとのリストであり、「ファイルパス」“d1/d2/f1”のアクセス対象ファイルＦ１に対してアクセスを許可するアクセス元プロセスＰ１の実行ファイルが格納されるファイルパスのリストである。また、依存プロセスリストＬ２−３は、アクセス対象ファイルＦ１ごとのリストであり、アクセス対象ファイルＦ１に対して動作の正当性を依存する依存プロセスの実行ファイルが格納されるファイルパスのリストである。
【００５９】
例えば、プロセスＡＣＬ_Ｌ２−２において、「ファイルパス」“d1/d2/f1”のアクセス対象ファイルＦ１へのファイルアクセスが許可されている「許可プロセスの実行ファイルパス」は、“d1/d2/f1”“d1/d4/f5”“d1/d5/f7”・・・である。また、依存プロセスリストＬ２−３において、「ファイルパス」“d1/d2/f1”のアクセス対象ファイルＦ１に対して動作の正当性を依存する「依存プロセスの実行ファイルパス」は、“d1/d2/f1”“d1/d4/f5”・・・である。
【００６０】
不完全プロセスリストＬ３は、全てのリスト群Ｌ２で共有されるリストとして、不完全プロセスリスト管理部１８により生成され、更新される。不完全プロセスリストＬ３は、依存プロセスリストＬ２−３にファイルパスが登録されている依存プロセスのうち、依存プロセスの完全性を損なっているリスクがあるプロセスの実行ファイルパスを記録するリストである。“依存プロセスの完全性を損なっている”とは、依存プロセスが依存する依存対象ファイルの「ファイルデータ完全性Ｖ１」が損なわれていることをいう。不完全プロセスリストＬ３は、「アクセス元プロセス完全性Ｖ２」の判定の際に、プロセスＡＣＬ_Ｌ２−２とともに参照される。
【００６１】
すなわち、アクセス対象ファイルＦ１にアクセスするアクセス元プロセスＰ１の実行ファイルのファイルパスが、プロセスＡＣＬ_Ｌ２−２に登録されており、不完全プロセスリストＬ３に登録されていない場合に、「アクセス元プロセス完全性Ｖ２」の判定結果がＯＫと判定される。一方、アクセス対象ファイルＦ１にアクセスするアクセス元プロセスＰ１の実行ファイルのファイルパスが、プロセスＡＣＬ_Ｌ２−２に登録されていない、または、不完全プロセスリストＬ３に登録されている場合に、「アクセス元プロセス完全性Ｖ２」の判定結果がＮＧと判定される。
【００６２】
また、不完全プロセスリストＬ３は、アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」の判定結果がＮＧであり、かつ、アクセス対象ファイルＦ１の「制御フラグ」“記録モード”である場合に、依存プロセスリストＬ２−３に登録されている依存プロセスの実行ファイルパスが追加される。
【００６３】
判定結果リストＬ４は、一時停止中のファイルアクセスに対する、判定結果の記録の一時保管データを記録するために自動生成され、更新される。判定結果リストＬ４には、アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」の判定結果、「アクセス元プロセス完全性Ｖ２」の判定結果が記録される。そして、判定結果リストＬ４には、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の判定結果がともにＮＧでない場合、「アクセス完全性Ｖ３」の判定結果ＯＫが記録され、「ファイルデータ完全性Ｖ１」および「アクセス元プロセス完全性Ｖ２」の少なくともいずれかの判定結果がＮＧである場合、「アクセス完全性Ｖ３」の判定結果ＮＧが記録される。
【００６４】
また、判定結果リストＬ４には、「アクセス完全性Ｖ３」の判定結果がＯＫ、または、「制御フラグ」が“記録モード”のとき、「アクセス制御Ｖ４」“許可”の判定結果が記録される。一方、判定結果リストＬ４には、「アクセス完全性Ｖ３」の判定結果がＮＧ、かつ、「制御フラグ」が“遮断モード”のとき、「アクセス制御Ｖ４」“遮断”の判定結果が記録される。
【００６５】
図４の説明に戻る。制御部１２は、ＣＰＵ（Central  Processing  Unit）等の処理装置であり、アクセス制御装置１０の全体制御を行う。制御部１２は、記憶部１１、入出力部１３、アクセス検知・制御部１４、データ取得部１５、ファイルデータ完全性判定部１６、アクセス元プロセス完全性判定部１７、不完全プロセスリスト管理部１８、アクセス制御判定部１９を制御する。
【００６６】
入出力部１３は、アクセス対象ファイルリストＬ１、アクセス対象ファイルリストＬ１に登録されている全ての「ファイルパス」に対応するファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含むリスト群Ｌ２を登録するためのインターフェースを提供する。具体的には、入出力部１３は、入力に関しては、アクセス対象ファイルリストＬ１、ファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含むリスト群Ｌ２のデータを記載した入力データを、オペレータが入力するためのユーザインターフェースにより実現される。入出力部１３は、出力に関しては、出力データをログファイルとして出力、あるいは、出力データを表示するユーザインターフェースにより実現される。
【００６７】
アクセス検知・制御部１４は、ファイル管理システム２０上で、例えば、アクセス元プロセスＰ１がアクセス対象ファイルＦ１をopenし、かつ、アクセス対象ファイルＦ１のファイルデータへのアクセスが未実施の状態を検知し、当該ファイルアクセスを一時停止させる。そして、アクセス検知・制御部１４は、アクセス元プロセスＩＤおよびアクセス対象ファイルパスを制御部１２へ送信する。
【００６８】
そして、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“許可”のとき、ファイルアクセス検知で一時停止していたファイルアクセスを許可して一時停止を解除する。また、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“遮断”のとき、ファイルアクセス検知で一時停止していたファイルアクセスを遮断する。アクセス検知・制御部１４は、例えば、Linux（登録商標、以下同様）のＡＰＩ（Application  Programming  Interface）であるfanotifyを用いて、Linuxファイルシステム上のファイルアクセスについてアクセス検知および制御を実施することができる。また、別の例としては、オペレーティングシステムがプログラムを実行するために、プログラムファイルにアクセスする契機を検知し、制御することができる。
【００６９】
データ取得部１５は、アクセス元プロセスＩＤを制御部１２から受信し、アクセス元プロセスＰ１の実行ファイルパスを制御部１２へ入力する。そして、データ取得部１５は、アクセス対象ファイルＦ１のファイルデータを取得し、制御部１２へ入力する。データ取得部１５の機能は、オペレーティングシステムの機能を利用することで実現できる。
【００７０】
ファイルデータ完全性判定部１６は、記憶部１１のアクセス対象ファイルリストＬ１において、アクセス対象ファイルＦ１のファイルパスに対応する参照ダイジェスト値が定義されている場合、すなわちアクセス対象ファイルＦ１が“データ固定ファイル”である場合、アクセス対象ファイルＦ１のファイルデータのダイジェスト値を算出し、算出したダイジェスト値と参照ダイジェスト値を比較する。そして、ファイルデータ完全性判定部１６は、比較結果が一致する場合には「ファイルデータ完全性Ｖ１」の判定結果をＯＫと判定し、一致しない場合には「ファイルデータ完全性Ｖ１」の判定結果をＮＧと判定する。なお、ファイルデータ完全性判定部１６は、アクセス対象ファイルＦ１が“データ変動ファイル”である場合、アクセス対象ファイルＦ１のファイルパスに対応する参照ダイジェスト値が定義されておらず、「ファイルデータ完全性Ｖ１」の判定を行わないので、判定結果は存在せず、判定結果を“ＮＡ”とする。
【００７１】
アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」の真偽を判定する。アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」が真であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＯＫと判定する。
【００７２】
一方、アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」が偽であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＮＧと判定する。
【００７３】
不完全プロセスリスト管理部１８は、「アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」が判定結果ＮＧであり、かつ、アクセス対象ファイルＦ１の「制御フラグ」が“記録モード”である」とき、アクセス対象ファイルＦ１の依存プロセスリストＬ２−３に記載されている実行ファイルパスを、不完全プロセスリストＬ３に追加する。
【００７４】
アクセス制御判定部１９は、ファイルデータ完全性判定部１６による「ファイルデータ完全性Ｖ１」の判定結果、および、アクセス元プロセス完全性判定部１７による「アクセス元プロセス完全性Ｖ２」の判定結果がともにＮＧでない場合、「アクセス完全性Ｖ３」の判定結果をＯＫと判定する。また、アクセス制御判定部１９は、ファイルデータ完全性判定部１６による「ファイルデータ完全性Ｖ１」の判定結果、および、アクセス元プロセス完全性判定部１７による「アクセス元プロセス完全性Ｖ２」の判定結果のいずれかがＮＧのとき、「アクセス完全性Ｖ３」の判定結果をＮＧと判定する。
【００７５】
そして、アクセス制御判定部１９は、「アクセス完全性Ｖ３」の判定結果がＯＫ、または、「制御フラグ」が“記録モード”のとき、「アクセス制御Ｖ４」は“許可”と判定する。また、アクセス制御判定部１９は、「アクセス完全性Ｖ３」の判定結果ＮＧ、かつ、「制御フラグ」が“遮断モード”のとき、「アクセス制御Ｖ４」は“遮断”と判定する。
【００７６】
（実施形態１の初期設定処理）
図７は、実施形態１の初期設定処理の一例を示すフローチャートである。実施形態１の初期設定処理は、オペレータの操作時に、アクセス制御装置１０の制御部１２により実行される。ステップＳ１１では、制御部１２は、入出力部１３を介して、オペレータによる指示に応じて、アクセス対象ファイルリストＬ１、アクセス対象ファイルリストＬ１に記載されている全ての「ファイルパス」に対応するファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含むリスト群Ｌ２の初期設定の登録を受け付け、記憶部１１に格納する。制御部１２は、ステップＳ１１が終了すると、実施形態１の初期設定処理を終了する。
【００７７】
（実施形態１のファイルアクセス制御処理）
図８は、実施形態１のファイルアクセス制御処理の一例を示すフローチャートである。実施形態１の初期設定処理は、アクセス制御装置１０により、随時実行される。先ず、ステップＳ２１では、アクセス検知・制御部１４は、ファイル管理システム２０上で、アクセス元プロセスＰ１がアクセス対象ファイルＦ１をopenし、かつ、アクセス対象ファイルＦ１のファイルデータへのアクセス未実施の状態を検知し、アクセスを一時的に停止する。そして、アクセス検知・制御部１４は、アクセス元プロセスＩＤと、アクセス対象ファイルパスを制御部１２へ送信する（以上、ステップＳ２１）。
【００７８】
次に、ステップＳ２２では、データ取得部１５は、アクセス元プロセスＩＤを制御部１２から受信し、アクセス元プロセスＰ１の実行ファイルパスを制御部１２へ入力するとともに、アクセス対象ファイルＦ１のファイルパスのファイルデータを取得し、制御部１２へ入力する。
【００７９】
次に、ステップＳ２３では、ファイルデータ完全性判定部１６は、記憶部１１のアクセス対象ファイルリストＬ１にアクセス対象ファイルパスに対応する参照ダイジェスト値が定義されている場合、すなわち“データ固定ファイル”である場合には、アクセス対象ファイルＦ１のファイルデータのダイジェスト値を算出し、算出したダイジェスト値と参照ダイジェスト値とを比較する。そして、ファイルデータ完全性判定部１６は、算出したダイジェスト値と参照ダイジェスト値とが一致するならば、アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」の判定結果をＯＫと判定し、一致しないならば、アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」の判定結果をＮＧと判定する。なお、ステップＳ２３では、ファイルデータ完全性判定部１６は、アクセス対象ファイルＦ１が“データ変動ファイル”である場合、アクセス対象ファイルＦ１のファイルパスに対応する参照ダイジェスト値が定義されておらず、「ファイルデータ完全性Ｖ１」の判定を行わないので、判定結果は存在せず、判定結果を“ＮＡ”とする（以上、ステップＳ２３）。
【００８０】
次に、ステップＳ２４では、アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」の真偽を判定する。アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」が真であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＯＫと判定する。一方、アクセス元プロセス完全性判定部１７は、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があり、かつ、不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」が偽であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＮＧと判定する（以上、ステップＳ２４）。
【００８１】
次に、ステップＳ２５では、不完全プロセスリスト管理部１８は、「アクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」の判定結果ＮＧであり、かつ、アクセス対象ファイルＦ１の「制御フラグ」が“記録モード”である」とき、アクセス対象ファイルＦ１の依存プロセスリストＬ２−３に記載されている依存プロセスの実行ファイルパスを、不完全プロセスリストＬ３に追加する。
【００８２】
次に、ステップＳ２６では、アクセス制御判定部１９は、ステップＳ２３による「ファイルデータ完全性Ｖ１」およびステップＳ２４による「アクセス元プロセス完全性Ｖ２」がともに判定結果がＮＧでないとき、「アクセス完全性Ｖ３」の判定結果をＯＫと判定する。また、アクセス制御判定部１９は、ステップＳ２３による「ファイルデータ完全性Ｖ１」およびステップＳ２４による「アクセス元プロセス完全性Ｖ２」のいずれかの判定結果がＮＧのとき、「アクセス完全性Ｖ３」の判定結果をＮＧと判定する。そして、アクセス制御判定部１９は、「アクセス完全性Ｖ３」が判定結果がＯＫ、または、「制御フラグ」が“記録モード”のとき、「アクセス制御Ｖ４」を“許可”と判定する。また、アクセス制御判定部１９は、「アクセス完全性Ｖ３」が判定結果ＮＧ、かつ、「制御フラグ」が“遮断モード”のとき、「アクセス制御Ｖ４」を“遮断”と判定する（以上、ステップＳ２６）。
【００８３】
次に、ステップＳ２７では、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“許可”のとき、ステップＳ２１のファイルアクセス検知で一時停止していたファイルアクセスを許可する。また、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“遮断”のとき、ステップＳ２１のファイルアクセス検知で一時停止していたファイルアクセスを遮断する（以上、ステップＳ２７）。ステップＳ２７が終了すると、アクセス制御装置１０は、実施形態１のファイルアクセス制御処理を終了する。
【００８４】
以上の実施形態１によれば、ファイルシステム上のファイルに対するプログラムプロセスからのアクセスが適正であるか否かを判定する。そして、完全性を欠いたファイルに対するアクセス、アクセスを許可されていないプログラムプロセスからファイルへのアクセス、および、完全性を欠いたファイルに依存するプログラムプロセスからファイルへのアクセスは不適正と判定し、アクセスを遮断するか、または、不適正なアクセスが実行された記録を残す。
【００８５】
例えば、ファイルアクセスにおいて、アクセス元プロセスの完全性を判定することで、アクセス元プロセスがマルウェア等の不適切なプロセスである場合に、アクセス元プロセスによるファイルアクセスを遮断し、アクセス先ファイルの完全性が失われることを防止できる。さらに、アクセス先ファイルごとに記録モードか遮断モードかを定義し、不完全プロセスリストを用いることにより、アクセス元プロセスが不完全なプロセスであっても、アクセス元プロセスによるファイルアクセスを許可しつつ、記録モードにてファイルアクセスのログを記録する。よって、ファイル→プロセス→ファイルと伝播する完全性喪失の連鎖の記録をたどって、柔軟なファイルのアクセス制御ができる。
【００８６】
（実施形態１の変形例）
実施形態１の変形例では、不完全プロセスリストＬ３に代えて、依存プロセスリストＬ２−３にファイルパスが登録されている依存プロセスのうち、依存プロセスの完全性を喪失していない完全プロセスのリストを用いてもよい。または、不完全プロセスリストＬ３に代えて、依存プロセスリストＬ２−３にファイルパスが登録されている依存プロセスの全プロセスに完全および不完全のいずれかを示す情報を対応付けて記録したリストを用いてもよい。
【００８７】
［実施形態２］
実施形態１では、アクセス制御装置１０は、記憶部１１に、アクセス対象ファイルリストＬ１、ファイルパスＬ２−１、プロセスＡＣＬ_Ｌ２−２、依存プロセスリストＬ２−３を含むリスト群Ｌ２、リスト群Ｌ２から生成される不完全プロセスリストＬ３を格納する。しかし、アクセス対象ファイルリストＬ１から「制御フラグ」を除外し、リスト群Ｌ２から依存プロセスリストＬ２−３および不完全プロセスリストＬ３を省略した形態で実施されてもよい。以下、この実施形態２について説明する。
【００８８】
（実施形態２のファイルアクセス制御装置および記憶部が記憶する情報）
図９は、実施形態２のアクセス制御装置の構成の一例を示す図である。図１０は、実施形態２のアクセス対象ファイルリストと、プロセスＡＣＬの一例を示す図である。実施形態２のアクセス制御装置１０Ａは、実施形態１のアクセス制御装置１０と比較して、記憶部１１に代えて記憶部１１Ａ、アクセス元プロセス完全性判定部１７に代えてアクセス元プロセス完全性判定部１７Ａ、アクセス制御判定部１９に代えてアクセス制御判定部１９Ａを有する。また、実施形態２のアクセス制御装置１０Ａは、実施形態１のアクセス制御装置１０と比較して、不完全プロセスリスト管理部１８が省略されている。
【００８９】
また、実施形態２のアクセス制御装置１０Ａの記憶部１１Ａに格納されるアクセス対象ファイルリストＬ１Ａは、実施形態２のアクセス対象ファイルリストＬ１と比較して、「制御フラグ」の項目が省略されている。また、実施形態２のアクセス制御装置１０Ａの記憶部１１Ａに格納されるリスト群Ｌ２Ａは、実施形態１のリスト群Ｌ２と比較して、依存プロセスリストＬ２−３が省略されている。また、実施形態２では、アクセス制御装置１０Ａの記憶部１１Ａにおいて、不完全プロセスリストＬ３が省略されている。その他の点は、実施形態２のアクセス制御装置１０Ａは、実施形態１のアクセス制御装置１０と同様である。
【００９０】
アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」の真偽を確認する。そして、アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」が真であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＯＫと判定する。
【００９１】
一方、アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルＦ１のプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」が偽であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＮＧと判定する。
【００９２】
すなわち、実施形態２では、「アクセス元プロセス完全性Ｖ２」の判定の際、「不完全プロセスリストＬ３にアクセス元プロセスＰ１の実行ファイルパスの記載がないこと」を判定条件に含めない。これは、実施形態１において「アクセス元プロセス完全性Ｖ２」の判定の際に参照する不完全プロセスリストＬ３が、「ファイルデータ完全性Ｖ１」を有さないファイルを実行した“依存プロセスの完全性にリスク”が存在する点を考慮するためのリストであり、実施形態２では、このリスクが再帰的に伝播することを考慮しないためである。なお、実施形態２において、アクセス元プロセスの依存対象ファイルを、アクセス対象ファイルリストＬ１に記載することによって、完全性にリスクのあるアクセス元プロセスが実行されることを遮断または記録することができる。すなわち、許可プロセスの依存対象ファイルがアクセス先ファイルであるファイルアクセスおいて、依存対象ファイルの改ざんを判定し、判定の結果に応じてこのファイルアクセスを遮断または記録することによって、依存対象ファイルの依存プロセスがアクセス元プロセスであるファイルアクセスにおける依存対象ファイルの改ざんの影響を遮断または記録することができる。なお、許可プロセスの依存対象ファイルがアクセス先ファイルであるファイルアクセスには、例えば、許可プロセスの実行ファイルに対するオペレーティングシステムのアクセス、許可プロセスの設定ファイルに対する許可プロセス自体のアクセスがある。
【００９３】
アクセス制御判定部１９Ａは、ファイルデータ完全性判定部１６による「ファイルデータ完全性Ｖ１」の判定結果、および、アクセス元プロセス完全性判定部１７Ａによる「アクセス元プロセス完全性Ｖ２」の判定結果がともにＮＧでない場合、「アクセス完全性Ｖ３」の判定結果をＯＫと判定する。また、アクセス制御判定部１９Ａは、ファイルデータ完全性判定部１６による「ファイルデータ完全性Ｖ１」の判定結果、および、アクセス元プロセス完全性判定部１７Ａによる「アクセス元プロセス完全性Ｖ２」の判定結果のいずれかがＮＧのとき、「アクセス完全性Ｖ３」の判定結果をＮＧと判定する。
【００９４】
そして、アクセス制御判定部１９Ａは、「アクセス完全性Ｖ３」の判定結果がＯＫのとき、「アクセス制御Ｖ４」は“許可”と判定する。また、アクセス制御判定部１９Ａは、「アクセス完全性Ｖ３」の判定結果ＮＧのとき、「アクセス制御Ｖ４」は“遮断”と判定する。
【００９５】
（実施形態２のファイルアクセス制御処理）
図１１は、実施形態２のファイルアクセス制御処理の一例を示すフローチャートである。図１１において、ステップＳ２１〜ステップＳ２３は、実施形態１と同様である。ステップＳ２３に続いてステップＳ２４’では、アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルのプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」の真偽を判定する。アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルのプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」が真であれば、「アクセス元プロセス完全性Ｖ２」の判定結果をＯＫと判定する。一方、アクセス元プロセス完全性判定部１７Ａは、「アクセス対象ファイルのプロセスＡＣＬ_Ｌ２−２に、アクセス元プロセスＰ１の実行ファイルパスの記載があること」が偽であれば「アクセス元プロセス完全性Ｖ２」の判定結果をＮＧと判定する（以上、ステップＳ２４’）。
【００９６】
次に、ステップＳ２６’では、アクセス制御判定部１９Ａは、ステップＳ２３によるアクセス対象ファイルＦ１の「ファイルデータ完全性Ｖ１」およびステップＳ２４’による「アクセス元プロセス完全性Ｖ２」がともに判定結果がＮＧでないとき、「アクセス完全性Ｖ３」の判定結果をＯＫと判定する。また、アクセス制御判定部１９Ａは、ステップＳ２３による「ファイルデータ完全性Ｖ１」およびステップＳ２４’による「アクセス元プロセス完全性Ｖ２」のいずれかの判定結果がＮＧのとき、「アクセス完全性Ｖ３」の判定結果をＮＧと判定する。そして、アクセス制御判定部１９Ａは、「アクセス完全性Ｖ３」が判定結果がＯＫのとき、「アクセス制御Ｖ４」を“許可”と判定する。また、アクセス制御判定部１９Ａは、「アクセス完全性Ｖ３」の判定結果がＮＧのとき、「アクセス制御Ｖ４」を“遮断”と判定する（以上、ステップＳ２６’）。
【００９７】
次に、ステップＳ２７’では、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“許可”のとき、ファイルアクセス検知で一時停止していたファイルアクセスを許可する。一方、アクセス検知・制御部１４は、「アクセス制御Ｖ４」が“遮断”のとき、ファイルアクセス検知で一時停止していたファイルアクセスを遮断する（以上、ステップＳ２７’）。ステップＳ２７’が終了すると、アクセス制御装置１０Ａは、実施形態２のファイルアクセス制御処理を終了する。
【００９８】
以上の実施形態２によれば、依存プロセスリストＬ２−３および不完全プロセスリストＬ３を用いず、完全性を欠いたファイルに対するアクセス、および、アクセスを許可されていないプログラムプロセスからファイルへのアクセスは不適正と判定し、アクセスを遮断するか、または、不適正なアクセスが実行された記録を残すことで、簡易な構成および処理で、ファイルシステム上のファイルに対するプログラムプロセスからのアクセスが適正であるか否かを判定できる。
【００９９】
（実施形態２の変形例）
実施形態２のアクセス制御装置１０Ａは、「制御フラグ」を導入せず、「アクセス完全性Ｖ３」の判定結果がＮＧのとき、常に“遮断モード”で動作するが、これに限られず、常に“記録モード”で動作するとしてもよい。
【０１００】
（アクセス制御装置の装置構成について）
図４および図９に示すアクセス制御装置１０、１０Ａの各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、アクセス制御装置１０、１０Ａの機能の分散および統合の具体的形態は図示のものに限られず、全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。例えば、アクセス検知・制御部１４は、アクセス検知部と、アクセス制御部とに分散されてもよい。
【０１０１】
また、実施形態１および２において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、実施形態１および２において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記および図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【０１０２】
（プログラムについて）
図１２は、プログラムが実行されることにより、アクセス制御装置が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。コンピュータ１０００において、これらの各部はバス１０８０によって接続される。
【０１０３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１０６１に接続される。
【０１０４】
ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、アクセス制御装置１０の各処理を規定するプログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１０９３として、例えばハードディスクドライブ１０３１に記憶される。例えば、アクセス制御装置１０における機能構成と同様の情報処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０３１に記憶される。
【０１０５】
また、実施形態１および２での処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１０６】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３やプログラムデータ１０９４は、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１０７】
以上の実施形態１および２は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１０８】
Ｆ  ファイル
Ｆ１  アクセス対象ファイル
Ｐ１  アクセス元プロセス
Ｌ１、Ｌ１Ａ  アクセス対象ファイルリスト
Ｌ２、Ｌ２Ａ  リスト群
Ｌ２−１  ファイルパス
Ｌ２−２  プロセスＡＣＬ
Ｌ２−３  依存プロセスリスト
Ｌ３  不完全プロセスリスト
１０、１０Ａ  アクセス制御装置
１１、１１Ａ  記憶部
１２  制御部
１３  入出力部
１４  アクセス検知・制御部
１５  データ取得部
１６  ファイルデータ完全性判定部
１７、１７Ａ  アクセス元プロセス完全性判定部
１８  不完全プロセスリスト管理部
１９、１９Ａ  アクセス制御判定部
２０  ファイル管理システム
１０００  コンピュータ
１０１０  メモリ
１０３０  ハードディスクドライブインタフェース
１０３１  ハードディスクドライブ
１０４０  ディスクドライブインタフェース
１０４１  ディスクドライブ
１０５０  シリアルポートインタフェース
１０５１  マウス
１０５２  キーボード
１０６０  ビデオアダプタ
１０６１  ディスプレイ
１０７０  ネットワークインタフェース
１０８０  バス
１０９２  アプリケーションプログラム
１０９３  プログラムモジュール
１０９４  プログラムデータ
【図１】
2019008732.tif 000003
【図２】
2019008732.tif 000004
【図３】
2019008732.tif 000005
【図４】
2019008732.tif 000006
【図５】
2019008732.tif 000007
【図６】
2019008732.tif 000008
【図７】
2019008732.tif 000009
【図８】
2019008732.tif 000010
【図９】
2019008732.tif 000011
【図１０】
2019008732.tif 000012
【図１１】
2019008732.tif 000013
【図１２】
2019008732.tif 000014