(57)【要約】【課題】複数のセキュリティエンジンによる多層的な防御環境において、マルウェアの攻撃によるセキュリティエンジンの故障時にコンピュータセキュリティの低下を最小限に抑える。【解決手段】セキュリティエンジン連携装置は、セキュリティを担保する機能のプログラムを実行する複数のセキュリティエンジンと、前記複数のセキュリティエンジンの実行順序と、当該セキュリティエンジンの実行結果とを格納する設定情報格納部と、前記複数のセキュリティエンジンによる前記プログラムの実行を制御する連携制御部とを備え、各々の前記セキュリティエンジンは、前記連携制御部からの実行要求に基づき、前記設定情報格納部に格納される前記実行順序に対応する直前のセキュリティエンジンが適正に実行されたことを示す実行結果を確認した場合に自己のプログラムを実行する。【選択図】図１
2011145946.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティを担保する機能のプログラムを実行する複数のセキュリティエンジンと、
前記複数のセキュリティエンジンの実行順序と、当該セキュリティエンジンの実行結果とを格納する設定情報格納部と、
前記セキュリティエンジンの実行要求を出力すると共に、前記複数のセキュリティエンジンの連携を制御するコーディネータと、を備え、
各々の前記セキュリティエンジンは、前記コーディネータにより出力された実行要求に基づき、前記設定情報格納部に格納される前記実行順序に対応する直前のセキュリティエンジンが前記プログラムを適正に実行したことを示す実行結果を確認した場合に自己のプログラムを実行するセキュリティエンジン連携装置。
【請求項２】
請求項１に記載のセキュリティエンジン連携装置であって、
前記複数のセキュリティエンジンの実行順序及び実行パラメータを含むシナリオ情報を格納する連携情報格納部と、を更に備え、
前記コーディネータは、前記連携情報格納部に格納される前記シナリオ情報に基づいて前記実行順序及び前記実行パラメータを前記設定情報格納部に設定するセキュリティエンジン連携装置。
【請求項３】
請求項２に記載のセキュリティエンジン連携装置であって、
前記連携情報格納部は、故障した前記セキュリティエンジンの種別に対応して定められたセキュリティエンジンの実行順序及び実行パラメータを含む他のシナリオ情報を更に格納し、
前記故障したセキュリティエンジンは、自己に異常が発生した旨の異常割込み信号を前記コーディネータに通知し、
前記コーディネータは、当該異常割込み信号に対応する前記セキュリティエンジンの種別に応じて定められた前記セキュリティエンジンの実行順序及び前記実行パラメータを前記設定情報格納部に設定するセキュリティエンジン連携装置。
【請求項４】
請求項２に記載のセキュリティエンジン連携装置であって、
前記セキュリティエンジンの故障を検出すると共に、当該故障した前記セキュリティエンジンの種別を通知するコントローラと、を更に備え、
前記連携情報格納部は、故障した前記セキュリティエンジンの種別に対応して定められたセキュリティエンジンの実行順序及び実行パラメータを含む他のシナリオ情報を更に格納し、
前記コーディネータは、前記コントローラからの通知に基づき、前記故障したセキュリティエンジンの種別に応じて定められた前記セキュリティエンジンの実行順序及び前記実行パラメータを前記設定情報格納部に設定するセキュリティエンジン連携装置。
【請求項５】
請求項３又は４に記載のセキュリティエンジン連携装置であって、
前記実行パラメータは、前記セキュリティエンジンによる前記プログラムの実行時期を含み、
前記コーディネータは、前記他のシナリオ情報に基づいて、前記セキュリティエンジンによる前記プログラムの実行時期を前記シナリオ情報における前記実行時期より高頻度に設定するセキュリティエンジン連携装置。
【請求項６】
請求項３〜５のいずれか一項に記載のセキュリティエンジン連携装置であって、
前記実行パラメータは、前記セキュリティエンジンによる前記プログラムの実行範囲を含み、
前記コーディネータは、前記他のシナリオ情報に基づいて、前記セキュリティエンジンによる前記プログラムの実行範囲を前記シナリオ情報における前記実行パラメータより広範囲に設定するセキュリティエンジン連携装置。
【請求項７】
請求項１〜６のいずれか一項に記載のセキュリティエンジン連携装置であって、
各々の前記セキュリティエンジンは、自己のセキュリティエンジンの実行から一定期間後に、前記実行順序に基づいて次に実行されるセキュリティエンジンが適正に実行されたか否かを確認するセキュリティエンジン連携装置。
【請求項８】
セキュリティを担保する機能のプログラムの実行順序を格納するステップと、
前記プログラムの実行要求を出力するステップと、
前記出力されたプログラムの実行要求に基づき、当該プログラムの実行順序に対応する直前のプログラムが適正に実行されたことを示す実行結果情報の有無を確認することができた場合に前記実行要求に対応するプログラムを実行するステップと、
前記プログラムの実行結果情報を格納するステップと、を備えるセキュリティエンジン連携方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータセキュリティを担保する機能のプログラムを実行するための複数の異なるセキュリティエンジンを連携して全体的なコンピュータセキュリティを担保するセキュリティエンジン連携装置及びセキュリティエンジン連携方法に関する。
【背景技術】
【０００２】
携帯電話機等の組込み機器又はＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）の操作に基づいてダウンロードされたプログラムがマルウェアであるか否かを判定する技術として、静的解析方法と、動的解析方法とが知られている。実際には、静的解析方法を実行するプログラムモジュールであるセキュリティエンジンと、動的解析方法を実行するプログラムモジュールであるセキュリティエンジンとを組み合わせて多層的なセキュリティエンジンにより判定することが必要である。
【０００３】
静的解析方法とは、プログラムを実行せずに、当該プログラムのバイナリコードを直接解析することにより、当該プログラムの振る舞い又は構造を分析する方法である。しかし、静的解析方法では、動作に関わる全てのプログラム要素が既知である必要があり、未知の脆弱性を攻撃するバイナリコード等については確定的な推定を行うことが難しい。静的解析方法の一例として、パターンマッチング法、ヒューリスティック法、レピュテーション法等がある。
【０００４】
動的解析方法とは、プログラムを実際に実行し、当該プログラムが行う振る舞いを観測することにより解析を行う方法である。このため、プログラムの中に未知の脆弱性を攻撃するバイナリコード等が含まれている場合に、当該バイナリコード等を検出することが有効である旨が指摘されている。しかし、プログラムを実際に動作させるため、解析を実施している環境にマルウェアが感染する危険性があるため、感染を防ぐための環境及び対策等が必要となる。動的解析方法の一例として、ビヘイビア法等がある。また、動的解析方法の一種として、マルウェア等によりファイル又はデータが改ざんされていることを検出する改ざん検出の技術も存在する。
【０００５】
コンピュータセキュリティにおいては、一つの対策技術により全ての攻撃を検出することはできないため、複数の対策技術を組み合わせて防御層を構築する多層防御という考えかたが一般的である。また、このような多層防御においては、複数の対策技術の実行順序がコンピュータセキュリティ上、大きな意味を持つ場合がある。例えば、パターンマッチングを実行する前には、パターンマッチングを実行するソフトウェアが改ざんされていないことを改ざん検出技術により確認することが重要となる。
【０００６】
またＰＣ単体又は、ＰＣ及びサーバにより構成される情報システムにおいて、当該ＰＣ又は情報システムのコンピュータセキュリティを担保する技術が開示されている。例えば、特許文献１には、複数の監視機能モジュールをプラグイン形式で利用可能な情報監視システムであって、監視モジュールの追加及び削除を実現するため、追加及び削除に応じて他の監視装置へ通知して自動的にセキュリティポリシを更新する情報監視システムが開示されている。
【０００７】
また、特許文献２には、アプリケーション情報をそれぞれ保持する複数のアプリケーションサーバと、これらの複数のアプリケーションサーバ相互間の連携を管理する連携サーバと、この連携サーバに接続された端末システムと、当該端末システムに接続する手段を備えたセキュアトークンとが設けられ、連携サーバは、複数のアプリケーションサーバの連携管理手順を記述した連携シナリオを生成し、この連携シナリオをセキュアトークンに書込み、セキュアトークンは、書き込まれた前記連携シナリオに従って複数の前記アプリケーショを順次実行するサービス連携システムが開示されている。
【０００８】
また、特許文献３には、複数の演算処理モジュールの一部に故障又は抜取りが発生すれば当該故障又は抜取りを検知することにより、当該演算処理モジュールを除外してシステムダウンを回避し、残された健全な演算処理モジュールによって演算処理を継続するコンピュータシステムが開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−２４３９７３号公報
【特許文献２】特開２００２−３４２２７７号公報
【特許文献３】特開２００５−２５０５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、組込み機器又はＰＣがマルウェアにより攻撃された場合、当該組込み機器又はＰＣにて実行可能なセキュリティエンジンが破壊される、又は当該セキュリティエンジンの実行がバイパスされる可能性がある。また、組込み機器への衝撃等によりセキュリティエンジンが故障している可能性もある。このため、当該破壊、故障又はバイパスによりコンピュータセキュリティが全体的に低下する。従って、セキュリティエンジンの破壊、故障又はバイパスというリスクが顕在化した場合に、残りの健全なセキュリティエンジンを相互的に連携することにより、当該コンピュータセキュリティの全体的な低下を最小限に抑えることが要求される。
【００１１】
前述した特許文献１は、モジュールの削除には対応しているが、マルウェアの攻撃等により当該モジュールの破壊、故障又はバイパスは想定されていない。このため、マルウェアの攻撃等が発生した場合のコンピュータセキュリティの全体的な低下を抑えることは目的とされていない。
【００１２】
また、前述した特許文献２は、アプリケーションサーバの連携順序の指定が可能であるが、当該アプリケーションサーバ自身は実行順序を認識することができず連携サーバにアプリケーション情報を通知するだけである。更に、特許文献２は、マルウェアの攻撃等によるアプリケーションサーバの破壊、故障又はアプリケーションの実行のバイパスは想定されていない。
【００１３】
また、前述した特許文献３は、システムの二重化が目的であり、演算処理モジュールの故障の検出時に残りの演算処理モジュールが連携してシステムの信頼性を向上する。しかし、特許文献３は、全ての演算処理モジュールが故障した演算処理モジュールと同一機能を実行することが前提となっているため、異なる種類の機能を実行する演算処理モジュールがそれぞれ用意されたシステムに適用することが難しい。
【００１４】
本発明は、前述の従来の事情に鑑みてなされたもので、複数の異なるセキュリティエンジンを用いた多層的なコンピュータセキュリティの担保環境において、マルウェアの攻撃による特定のセキュリティエンジンの破壊、故障又はバイパスの発生時においてもコンピュータセキュリティの低下を最小限に抑えるセキュリティエンジン連携装置及びセキュリティエンジン連携方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のセキュリティエンジン連携装置は、セキュリティを担保する機能のプログラムを実行する複数のセキュリティエンジンと、前記複数のセキュリティエンジンの実行順序と、当該セキュリティエンジンの実行結果とを格納する設定情報格納部と、前記セキュリティエンジンの実行要求を出力すると共に、前記複数のセキュリティエンジンの連携を制御するコーディネータとを備え、各々の前記セキュリティエンジンは、前記コーディネータにより出力された実行要求に基づき、前記設定情報格納部に格納される前記実行順序に対応する直前のセキュリティエンジンが前記プログラムを適正に実行したことを示す実行結果を確認した場合に自己のプログラムを実行する。
【００１６】
また、本発明のセキュリティエンジン連携方法は、セキュリティを担保する機能のプログラムの実行順序を格納するステップと、前記プログラムの実行要求を出力するステップと、前記出力されたプログラムの実行要求に基づき、当該プログラムの実行順序に対応する直前のプログラムが適正に実行されたことを示す実行結果の有無を確認することができた場合に前記実行要求に対応するプログラムを実行するステップと、前記プログラムの実行結果を格納するステップとを備える。
【００１７】
前述した構成によれば、複数の異なるセキュリティエンジンを用いた多層的なコンピュータセキュリティの担保環境において、マルウェアの攻撃による特定のセキュリティエンジンの破壊、故障又はバイパスの発生時においてもコンピュータセキュリティの低下を最小限に抑えることができる。
【発明の効果】
【００１８】
本発明に係るセキュリティエンジン連携装置及びセキュリティエンジン連携方法によれば、複数の異なるセキュリティエンジンを用いた多層的なコンピュータセキュリティの担保環境において、マルウェアの攻撃による特定のセキュリティエンジンの破壊、故障又はバイパスの発生時においてもコンピュータセキュリティの低下を最小限に抑えることができる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態のセキュリティエンジン連携装置の内部構成を示すブロック図
【図２】セキュリティエンジン状態テーブルの説明図
【図３】各シナリオの内容を概念的に示した説明図
【図４】連携テーブルの内容を示した説明図
【図５】標準シナリオに基づいて設定された連携レジスタの内容を示した説明図
【図６】復旧シナリオに基づいて設定された連携レジスタの内容を示した説明図
【図７】他の復旧シナリオに基づいて設定された連携レジスタの内容を示した説明図
【図８】第１の実施形態のセキュリティエンジン連携装置の動作を説明するフローチャート
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について、図面を参照して説明する。以下の説明において、本発明のセキュリティエンジン連携装置のコンピュータセキュリティを担保する機能のプログラムを実行するエンジン又はモジュールを「セキュリティエンジン」と定義する。また、セキュリティエンジンは、セキュリティエンジン連携装置のコンピュータセキュリティを担保する機能のプログラムを実行する専用回路等のハードウェアで構成されても良い。
【００２１】
（第１の実施形態）
図１は、第１の実施形態のセキュリティエンジン連携装置１０の内部構成を示すブロック図である。図１に示すように、第１の実施形態のセキュリティエンジン連携装置１０は、コントローラ１１と、セキュリティエンジン状態格納部１２と、コーディネータ１３と、連携情報格納部１４と、連携レジスタ１５と、セキュリティエンジンＡ〜Ｄとを備える。第１の実施形態のセキュリティエンジン連携装置１０では、４種類のセキュリティエンジンＡ、セキュリティエンジンＢ、セキュリティエンジンＣ及びセキュリティエンジンＤが実行可能に構成されているとして例示する。
【００２２】
（コントローラ１１）
コントローラ１１は、セキュリティエンジン連携装置１０の各構成要素の動作を制御すると共に、セキュリティエンジンＡ〜Ｄの動作前に既に故障しているセキュリティエンジンＡ〜Ｄの有無を判定する。全てのセキュリティエンジンＡ〜Ｄが動作前に故障していないと判定された場合には、コントローラ１１は、その旨及びセキュリティエンジンＡ〜Ｄの連携開始の指示をコーディネータ１３に通知する。
【００２３】
セキュリティエンジンＡ〜Ｄのいずれか（例：セキュリティエンジンＣ）が動作前に既に故障していると判定された場合には、コントローラ１１は、その旨、当該故障しているセキュリティエンジンＣの種別及び残りのセキュリティエンジンＡ、Ｂ及びＤの連携開始の指示をコーディネータ１３に通知する。また、コントローラ１１は、後述のセキュリティエンジン状態テーブルにおける故障しているセキュリティエンジンＣの種別に対応する状態を「故障」に変更する。
【００２４】
（セキュリティエンジン状態格納部１２）
セキュリティエンジン状態格納部１２は、セキュリティエンジンＡ〜Ｄの種別、実行内容及び状態により構成されるセキュリティエンジン状態テーブルを格納する格納領域である。セキュリティエンジン状態テーブルについて図２を参照して説明する。図２は、セキュリティエンジンＡ〜Ｄの種別、実行内容及び状態を示したセキュリティエンジン状態テーブルの説明図である。図２に示すように、セキュリティエンジンＡ〜Ｄの種別には、４種類の「セキュリティエンジンＡ」、「セキュリティエンジンＢ」、「セキュリティエンジンＣ」及び「セキュリティエンジンＤ」がある。
【００２５】
セキュリティエンジンＡは、一時的な格納領域も含めセキュリティエンジン連携装置１０に格納されたファイルの改ざんを検出する。セキュリティエンジンＢは、セキュリティエンジン連携装置１０の特定のメモリ領域へのアクセスを検出する。セキュリティエンジンＣは、セキュリティエンジン連携装置１０の特定のデータの処理の流れを追跡監視する。セキュリティエンジンＤは、セキュリティエンジン連携装置１０の通信機能を有するリソースへのアクセスを検出する。このように、セキュリティエンジンＡ〜セキュリティエンジンＤは、それぞれ異なる内容を実行する。図２に示すセキュリティエンジン状態テーブルは、セキュリティエンジンＡ〜Ｄは、全て実行可能であり故障していないことを示す。例えば、セキュリティエンジン連携装置１０がマルウェアにより攻撃された結果、セキュリティエンジンＣが動作前に故障したとコントローラ１１により判定された場合には、図２に示すセキュリティエンジン状態テーブルのセキュリティエンジンＣの状態は「故障」に変更される。
【００２６】
（コーディネータ１３）
コーディネータ１３は、コントローラ１１の制御の下で、セキュリティエンジンＡ〜Ｄの相互的な連携を管理する。全てのセキュリティエンジンＡ〜Ｄが動作前に故障していないと判定された場合には、コーディネータ１３は、その旨及びセキュリティエンジンＡ〜Ｄの連携開始の指示をコントローラ１１から取得する。コーディネータ１３は、全てのセキュリティエンジンＡ〜Ｄが動作前に故障していない場合には、連携情報格納部１４にアクセスして当該連携情報格納部１４から標準シナリオＳＣ１を読み出す。標準シナリオＳＣ１については後述する。コーディネータ１３は、読み出された標準シナリオＳＣ１に基づいて、セキュリティエンジンＡ〜Ｄの実行順序及び実行パラメータを連携レジスタ１５に設定する。連携レジスタ１５については後述する。コーディネータ１３は、連携レジスタ１５に設定された実行順序で最初に実行されるセキュリティエンジンＡに起動要求を出力する。
【００２７】
セキュリティエンジンＡ〜Ｄのいずれか（例：セキュリティエンジンＣ）が動作前に既に故障していると判定された場合には、コーディネータ１３は、その旨、当該故障しているセキュリティエンジンＣの種別及び残りのセキュリティエンジンＡ、Ｂ及びＤの連携開始の指示をコントローラ１１から取得する。コーディネータ１３は、セキュリティエンジンＣが故障している場合には、連携情報格納部１４にアクセスして当該連携情報格納部１４から当該故障しているセキュリティエンジンＣの種別に対応する復旧シナリオＳＣ２を読み出す。復旧シナリオＳＣ２については後述する。コーディネータ１３は、読み出された復旧シナリオＳＣ２に基づいて、残りのセキュリティエンジンＡ、Ｂ及びＤの実行順序及び実行パラメータを連携レジスタ１５に設定する。コーディネータ１３は、連携レジスタ１５に設定された実行順序で最初に実行されるセキュリティエンジンＡに起動要求を出力する。
【００２８】
また、セキュリティエンジンＡ〜Ｄのいずれか（例：セキュリティエンジンＢ〜セキュリティエンジンＤ）が動作前に既に故障していると判定された場合には、コーディネータ１３は、その旨、当該故障しているセキュリティエンジンＢ〜Ｄの種別及び残りのセキュリティエンジンＡの動作開始の指示をコントローラ１１から取得する。コーディネータ１３は、セキュリティエンジンＢ〜Ｄが故障している場合には、連携情報格納部１４にアクセスして当該連携情報格納部１４から当該故障しているセキュリティエンジンＢ〜Ｄの種別に対応する復旧シナリオＳＣ３を読み出す。復旧シナリオＳＣ３については後述する。コーディネータ１３は、読み出された復旧シナリオＳＣ３に基づいて、残りのセキュリティエンジンＡの実行パラメータを連携レジスタ１５に設定する（図８：Ｓ１３）。コーディネータ１３は、連携レジスタ１５に設定された実行順序で実行されるセキュリティエンジンＡに起動要求を出力する。
【００２９】
セキュリティエンジンＡの機能が適正に実行された旨が連携レジスタ１５に設定された場合には、コーディネータ１３は、連携レジスタ１５に設定された全てのセキュリティエンジンＡ〜Ｄの機能が適正に実行されたか否かを判定する。連携レジスタ１５に設定された全てのセキュリティエンジンの機能が適正に実行されていない場合には、コーディネータ１３は、連携レジスタ１５に設定された実行順序で次に実行されるセキュリティエンジンＢに起動要求を出力する。
【００３０】
（連携情報格納部１４）
連携情報格納部１４は、セキュリティエンジンＡ〜Ｄの連携に関する実行順序及び実行パラメータにより構成される連携テーブルを格納する格納領域である。連携テーブルについて図３及び図４を参照して説明する。図３は、標準シナリオＳＣ１、復旧シナリオＳＣ２及び復旧シナリオＳＣ３の内容を概念的に示した説明図である。図４は、連携テーブルの内容を示した説明図である。
【００３１】
標準シナリオＳＣ１は、全てのセキュリティエンジンＡ〜Ｄが動作前に故障していないとコントローラ１１により判定された場合におけるセキュリティエンジンＡ〜Ｄの連携に関するシナリオ情報である。標準シナリオＳＣ１に沿ってセキュリティエンジンＡ〜Ｄの連携が実行されたときのセキュリティエンジン連携装置１０のコンピュータセキュリティは最も高い。標準シナリオＳＣ１では、セキュリティエンジンＡ、セキュリティエンジンＢ、及びセキュリティエンジンＣとセキュリティエンジンＤの順番に動作する。ここで、セキュリティエンジンＣとセキュリティエンジンＤは並行に動作する。
【００３２】
また、図４に示す連携テーブルに沿ってより詳細に説明すると、標準シナリオＳＣ１では、セキュリティエンジンＡの検出範囲はセキュリティエンジン連携装置１０に格納されるプログラムであり、その検出時期は低頻度である。セキュリティエンジンＢの検出範囲はメモリの物理アドレス空間（ＸＸ−ＹＹ）の領域であり、その検出時期はセキュリティエンジンＡの動作後の常時である。セキュリティエンジンＣの監視範囲はセキュリティエンジン連携装置１０のパーティションＺであり、その検出時期はセキュリティエンジンＢの動作後の常時である。セキュリティエンジンＤの検出範囲はパケット通信リソースであり、その検出時期はセキュリティエンジンＢの動作後の常時である。標準シナリオＳＣ１の意図は、初めにセキュリティエンジンＡにより他のセキュリティエンジンＢ〜Ｄが改ざんされていないことを保証する。次にセキュリティエンジンＢによりメモリ領域に格納されている組込み機器の設定情報等が変更されていないことを監視し、合わせてセキュリティエンジンＣにより組込み機器内のパーティションＺに配置された個人情報を追跡し、セキュリティエンジンＤが監視する組込み機器内の通信部から前記個人情報が漏洩することを検出する。
【００３３】
復旧シナリオＳＣ２は、セキュリティエンジンＣが動作前に既に故障しているとコントローラ１１により判定された場合における残りのセキュリティエンジンＡ、Ｂ及びＤの連携に関するシナリオ情報である。復旧シナリオＳＣ２に沿って残りのセキュリティエンジンＡ、Ｂ及びＤの連携が実行されたときのセキュリティエンジン連携装置１０のコンピュータセキュリティは、標準シナリオＳＣ１の場合のコンピュータセキュリティより少し劣るが、コンピュータセキュリティとして全体的に擬似的に類似すると判定される。復旧シナリオＳＣ２では、セキュリティエンジンＡが最初に動作し、その後、セキュリティエンジンＢが動作し、最後にセキュリティエンジンＤが動作する。また、復旧シナリオＳＣ２では、コンピュータセキュリティを標準シナリオＳＣ１の場合のコンピュータセキュリティと擬似的に類似するため、セキュリティエンジンＢの検出対象が標準シナリオＳＣ１におけるセキュリティエンジンＢの検出対象より強化される。具体的には、セキュリティエンジンＢの検出対象は、故障したセキュリティエンジンＣの追跡監視対象の特定データが格納されるメモリ領域である。セキュリティエンジンＤの動作タイミングは、セキュリティエンジンＢによる検出後、一定期間内である。
【００３４】
図４に示す連携テーブルに沿ってより詳細に説明すると、復旧シナリオＳＣ２では、セキュリティエンジンＡの検出範囲はセキュリティエンジン連携装置１０に格納されるプログラムであり、その検出時期は中頻度である。セキュリティエンジンＢの検出範囲はメモリの物理アドレス空間（ＸＸ−ＹＹ）の領域及びパーティションＺの領域であり、その検出時期はセキュリティエンジンＡの実行後の常時である。セキュリティエンジンＣは故障しているために実行されない。セキュリティエンジンＤの検出範囲はパケット通信リソースであり、その検出時期はセキュリティエンジンＢでパーティションＺにて検出された後の２秒以内である。復旧シナリオＳＣ２の意図は、初めにセキュリティエンジンＡにより他のセキュリティエンジンＢ及びＤが改ざんされていないことを保証する。次にセキュリティエンジンＢによりメモリ領域に格納されている組込み機器の設定情報等が変更されていないことを監視し、加えてセキュリティエンジンＢにより組込み機器内のパーティションＺに配置された個人情報が読み出されたことを監視し、セキュリティエンジンＤが監視する組込み機器内の通信部から何らかの情報が送信されることを検出する。ここで、セキュリティエンジンＤは組込み機器内の通信部から送信される情報の種別は分からないが、セキュリティエンジンＢで個人情報にアクセスがあってから２秒以内であることから、送信されたのが個人情報である可能性が高いと判断することができる。
【００３５】
復旧シナリオＳＣ３は、セキュリティエンジンＢ、セキュリティエンジンＣ及びセキュリティエンジンＤが動作前に既に故障しているとコントローラ１１により判定された場合におけるセキュリティエンジンＡの動作に関するシナリオ情報である。復旧シナリオＳＣ３に沿ってセキュリティエンジンＡの連携が動作したときのセキュリティエンジン連携装置１０のコンピュータセキュリティは、標準シナリオＳＣ１の場合のコンピュータセキュリティより劣る。しかし、復旧シナリオＳＣ３に沿ってセキュリティエンジンＡが動作したときのセキュリティエンジン連携装置１０のコンピュータセキュリティは、残りのセキュリティエンジンＡの実行パラメータを最大限に利用することにより、標準シナリオＳＣ１の場合のコンピュータセキュリティに近いと判定される。復旧シナリオＳＣ３では、セキュリティエンジンＡだけが動作する。また、復旧シナリオＳＣ３では、コンピュータセキュリティを標準シナリオＳＣ１の場合のコンピュータセキュリティに可能な限り近づけるため、セキュリティエンジンＡの検出対象が標準シナリオＳＣ１又は復旧シナリオＳＣ２におけるセキュリティエンジンＡの検出対象より相当に強化される。具体的には、セキュリティエンジンＡの検出対象は、セキュリティエンジン連携装置１０のプログラム及びデータであり、その検出時期は高頻度である。復旧シナリオＳＣ３の意図は、標準シナリオＳＣ１又は復旧シナリオＳＣ２のようにマルウェア等の挙動を検出することはできないが、マルウェアが行う可能性のあるファイル又はデータの改ざんを高頻度に検出することにより、マルウェアを検出することである。
【００３６】
（連携レジスタ１５）
連携レジスタ１５は、セキュリティエンジンＡ〜Ｄの連携に関する連携テーブルに従って、コーディネータ１３により設定された当該連携テーブルの実行順序、実行パラメータ、及びセキュリティエンジンにより設定された当該セキュリティエンジンの実行結果を格納する格納領域である。このため、連携レジスタ１５は、連携テーブルにより種々の情報が設定された設定情報格納部とも表現することができる。連携レジスタ１５について図５〜図７を参照して説明する。図５は、標準シナリオＳＣ１に基づいて設定された連携レジスタ１５の内容を示した説明図である。図６は、復旧シナリオＳＣ２に基づいて設定された連携レジスタ１５の内容を示した説明図である。図７は、復旧シナリオＳＣ３に基づいて設定された連携レジスタ１５の内容を示した説明図である。
【００３７】
図５に示す連携レジスタ１５では、セキュリティエンジンＡは低頻度の割合でプログラム（０ｘ０２：プログラムを意味する検証種別番号）の改ざんのチェックを行い、この結果、セキュリティエンジンＡのプログラムが適正に実行されたことを示す実行結果が格納されている。また、図５に示す連携レジスタ１５では、セキュリティエンジンＢは常時メモリの物理アドレス空間（ＸＸ−ＹＹ）へのアクセスを検出し、この結果、セキュリティエンジンＢのプログラムが適正に実行されたことを示す実行結果が格納されている。
【００３８】
また、図５に示す連携レジスタ１５では、マルウェアの攻撃によりセキュリティエンジンＤは故障したため、セキュリティエンジンＤのプログラムは適正に実行されなかったことを示す実行結果が格納されている。このとき、セキュリティエンジンＤは、自己のセキュリティエンジンＤに異常が発生した旨の異常割込み信号をコーディネータ１３に出力する。従って、セキュリティエンジンＤの次に実行されるセキュリティエンジンＣは実行されない。
【００３９】
図６に示す連携レジスタ１５では、セキュリティエンジンＡは中頻度の割合でプログラム（０ｘ０２）の改ざんのチェックを行い、この結果、セキュリティエンジンＡのプログラムが適正に実行されたことを示す実行結果が格納されている。また、図６に示す連携レジスタ１５では、セキュリティエンジンＢは常時メモリの物理アドレス空間（ＸＸ−ＹＹ）及びパーティションＺへのアクセスを検出し、この結果、セキュリティエンジンＢのプログラムが適正に実行されたことを示す実行結果が格納されている。
【００４０】
また、図６に示す連携レジスタ１５では、セキュリティエンジンＤはセキュリティエンジンＢによりパーティションＺへのアクセスが検出された後の２秒以内にパケット通信部（０ｘ４Ｆ：パケット通信部を意味するリソース種別番号）へのアクセスを検出した。この結果、セキュリティエンジンＤのプログラムが適正に実行されたことを示す実行結果が格納されている。図６に示す連携レジスタ１５の実行順序及び実行パラメータは、復旧シナリオＳＣ２に基づくため、セキュリティエンジンＣのプログラムは実行されない。
【００４１】
図７に示す連携レジスタ１５では、セキュリティエンジンＡは高頻度の割合でプログラム（０ｘ０２）及びデータの改ざんのチェックを行い、この結果、セキュリティエンジンＡのプログラムが適正に実行されたことを示す実行結果が格納されている。図７に示す連携レジスタ１５の実行順序及び実行パラメータは、復旧シナリオＳＣ３に基づくため、セキュリティエンジンＢ、Ｃ及びＤの各プログラムは実行されない。
【００４２】
（セキュリティエンジンＡ〜Ｄ）
セキュリティエンジンＡ〜Ｄは、セキュリティエンジン連携装置１０のコンピュータセキュリティを担保する機能のプログラムを実行する。セキュリティエンジンＡ〜Ｄの実行内容は、図２に示すセキュリティエンジン状態テーブルにて示されている。例えば、図５に示す連携レジスタ１５に設定された実行順序に従って動作する各々のセキュリティエンジンＡ〜Ｄは、コーディネータ１３により出力された起動要求に基づき、連携レジスタ１５に設定された実行順序、及び当該セキュリティエンジンＡ〜Ｄの直前の実行順序を有するセキュリティエンジンＡ〜Ｄの実行結果を確認する。但し、図５に示す連携レジスタ１５に設定された実行順序で最初に動作するセキュリティエンジンＡに限り、当該セキュリティエンジンＡは連携レジスタ１５に設定された実行順序のみ確認する。この場合、当該セキュリティエンジンＡは最初に動作するため、直前に動作するセキュリティエンジンが存在しないためである。
【００４３】
各々のセキュリティエンジンＡ〜Ｄは、セキュリティエンジンＡ〜Ｄの実行順序、及び直前の実行順序を有するセキュリティエンジンＡ〜Ｄの実行結果が共に正しいと判定した場合には、当該セキュリティエンジンＡ〜Ｄの機能であるプログラムを実行すると共に、当該実行結果を連携レジスタ１５に設定する。直前の実行順序を有するセキュリティエンジンＡ〜Ｄの実行結果が正しくないと判定された場合には、コーディネータ１３からの起動要求を受けたセキュリティエンジンＡ〜Ｄは、直前の実行順序を有するセキュリティエンジンＡ〜Ｄのプログラムに異常が発生したとして異常割込み信号をコーディネータ１３に出力する。この場合、コーディネータ１３は、セキュリティエンジンＡ〜Ｄからの異常割込み信号に基づき、当該故障している直前の実行順序を有するセキュリティエンジンＡ〜Ｄの種別に対応して定められた復旧シナリオ（例：復旧シナリオＳＣ２）を連携情報格納部１４から読み出す。
【００４４】
セキュリティエンジンＡ〜Ｄの各々のプログラムが適正に実行された場合には、図５に示す連携レジスタ１５の実行結果は「ＯＫ」の旨が設定される。セキュリティエンジンＡ〜Ｄの各々のプログラムが適正に実行されなかった場合には、図５に示す連携レジスタ１５の実行結果は「ＮＧ」の旨が設定される。
【００４５】
（第１の実施形態のセキュリティエンジン連携装置１０の動作）
次に、第１の実施形態のセキュリティエンジン連携装置１０の動作について図８を参照して説明する。図８は、第１の実施形態のセキュリティエンジン連携装置１０の動作を示すフローチャートである。
【００４６】
以下の説明において、コーディネータ１３により起動要求を受けて今から動作するセキュリティエンジンを「セキュリティエンジンＫ」と記載する。また、セキュリティエンジンＫの直前に実行されたセキュリティエンジンを「セキュリティエンジンＪ」と記載する。また、セキュリティエンジンＫの次に実行されるセキュリティエンジンを「セキュリティエンジンＬ」と記載する。
【００４７】
図８において、全てのセキュリティエンジンＡ〜Ｄが動作前に故障していないと判定された場合には（Ｓ１１のＮＯ）、コントローラ１１は、その旨及びセキュリティエンジンＡ〜Ｄの連携開始の指示をコーディネータ１３に通知する。又は、セキュリティエンジンＡ〜Ｄのいずれか（例：セキュリティエンジンＣ）が動作前に既に故障していると判定された場合には（Ｓ１１のＹＥＳ）、コントローラ１１は、その旨、当該故障しているセキュリティエンジンＣの種別、及び残りのセキュリティエンジンＡ、Ｂ及びＤの連携開始の指示をコーディネータ１３に通知する。この場合、コーディネータ１３は、連携情報格納部１４にアクセスして、故障しているセキュリティエンジンＣの種別に対応して定められた復旧シナリオＳＣ２を読み出す（Ｓ２０）。
【００４８】
コーディネータ１３は、全てのセキュリティエンジンＡ〜Ｄが動作前に故障していないと判定された場合には、セキュリティエンジンＡ〜Ｄの連携開始の指示に基づき、連携情報格納部１４にアクセスして当該連携情報格納部１４から標準シナリオＳＣ１を読み出す（Ｓ１２）。コーディネータ１３は、読み出された標準シナリオＳＣ１に基づいて、セキュリティエンジンＡ〜Ｄの実行順序及び実行パラメータを連携レジスタ１５に設定する（Ｓ１３）。コーディネータ１３は、連携レジスタ１５に設定された実行順序で最初に実行されるセキュリティエンジンＡ（＝セキュリティエンジンＫ）に起動要求を出力する（Ｓ１４）。
【００４９】
連携レジスタ１５に設定された実行順序に従って動作するセキュリティエンジンＫは、コーディネータ１３により出力された起動要求に基づき、連携レジスタ１５に設定された実行順序、及び当該セキュリティエンジンＫの直前の実行順序を有するセキュリティエンジンＪの実行結果を確認する（Ｓ１５）。セキュリティエンジンＫは、セキュリティエンジンＫの実行順序、及び直前の実行順序を有するセキュリティエンジンＪの実行結果が共に正しいと判定した場合には（Ｓ１６のＹＥＳ）、当該セキュリティエンジンＫの機能であるプログラムを実行すると共に、当該実行結果を連携レジスタ１５に設定する（Ｓ１７）。
【００５０】
直前のセキュリティエンジンＪの実行結果が正しくないと判定された場合には（Ｓ１６のＮＯ）、コーディネータ１３からの起動要求を受けたセキュリティエンジンＫは、直前の実行順序を有するセキュリティエンジンＪのプログラムに異常が発生したとして異常割込み信号をコーディネータ１３に出力する（Ｓ１６のＮＯ）。なお、この異常割込み信号には、セキュリティエンジンＪに異常が発生した旨が含まれている。この場合、コーディネータ１３は、セキュリティエンジンＫからの異常割込み信号に基づき、連携情報格納部１４にアクセスして当該故障している直前のセキュリティエンジンＪの種別に対応して定められた復旧シナリオ（例：復旧シナリオＳＣ２）を読み出す（Ｓ２０）。
【００５１】
セキュリティエンジンＫの機能が適正に実行された旨が連携レジスタ１５に設定された場合には（Ｓ１８のＹＥＳ）、コーディネータ１３は、連携レジスタ１５に設定された全てのセキュリティエンジンＡ〜Ｄの機能が適正に実行されたか否かを判定する（Ｓ１９）。全てのセキュリティエンジンＡ〜Ｄの機能が適正に実行された旨が連携レジスタ１５に設定されていない場合には（Ｓ１８のＮＯ）、Ｓ１７で動作したセキュリティエンジンＫが適正に動作していない、すなわち、当該セキュリティエンジンＫに異常が発生したとして、当該異常が発生したセキュリティエンジンＫは、自己のセキュリティエンジンＫのプログラムに異常が発生したとして異常割込み信号をコーディネータ１３に出力する（Ｓ１８のＮＯ）。なお、この異常割込み信号には、セキュリティエンジンＫに異常が発生した旨が含まれている。この場合、コーディネータ１３は、セキュリティエンジンＫからの異常割込み信号に基づき、連携情報格納部１４にアクセスして当該故障している自己のセキュリティエンジンＫの種別に対応して定められた復旧シナリオ（例：復旧シナリオＳＣ３）を読み出す（Ｓ２０）。
【００５２】
連携レジスタ１５に設定された全てのセキュリティエンジンＡ〜Ｄの機能が適正に実行された場合には（Ｓ１９のＹＥＳ）、セキュリティエンジン連携装置１０は動作を終了する。連携レジスタ１５に設定された全てのセキュリティエンジンＡ〜Ｄの機能が適正に実行されていない場合には（Ｓ１９のＮＯ）、コーディネータ１３は、連携レジスタ１５に設定された実行順序で次に動作するセキュリティエンジンＬに起動要求を出力する（Ｓ１４）。
【００５３】
以上のように、第１の実施形態のセキュリティエンジン連携装置は、複数の異なるセキュリティエンジンＡ〜Ｄの実行順序及び実行パラメータが設定された連携レジスタ１５に従って、当該セキュリティエンジンＡ〜Ｄの連携がコーディネータ１３及びセキュリティエンジンＡ〜Ｄの動作により実現される。セキュリティエンジンＫは、直前のセキュリティエンジンＪの実行結果が正しいと判定された場合に、自己のセキュリティエンジンＫのプログラムを実行する。同様に、次に実行されるセキュリティエンジンＬは、直前のセキュリティエンジンＫの実行結果が正しいと判定された場合に、自己のセキュリティエンジンＬのプログラムを実行する。
【００５４】
従って、第１の実施形態のセキュリティエンジン連携装置によれば、複数の異なるセキュリティエンジンを用いた多層的なコンピュータセキュリティの担保環境において、マルウェアの攻撃による特定のセキュリティエンジンの破壊、故障又はバイパスの発生時においてもコンピュータセキュリティの低下を最小限に抑えることができる。更に、連携情報格納部１４を設けることにより、セキュリティエンジンの組み合わせによるシナリオ情報を柔軟に設定することができる。更に、セキュリティエンジンＡ〜Ｄ自身も異常割込み信号をコーディネータ１３に通知することにより、コーディネータ１３は、コントローラ１１及びセキュリティエンジンＡ〜Ｄの双方からセキュリティエンジンの故障があったことを知ることができ、シナリオ情報に基づいたコンピュータセキュリティを担保するための設定を柔軟に行うことができる。更に、標準シナリオＳＣ１と同一ではないが類似のコンピュータセキュリティを実現する復旧シナリオＳＣ２又は復旧シナリオＳＣ３を設けることにより、セキュリティエンジン連携装置１０におけるセキュリティエンジンＡ〜Ｄのいずれかが故障した場合においても同様のコンピュータセキュリティを実現することができる。
【００５５】
以上、添付図面を参照しながら各種の実施形態について説明したが、本発明のマルウェア検出装置はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００５６】
また、セキュリティエンジンＫは、次に動作するセキュリティエンジンＬの実行結果を確認するようにしても良い。具体的には、セキュリティエンジンＫは、自己のセキュリティエンジンＫが動作してから一定期間後（例：１秒後）に、連携レジスタ１５に設定されている実行順序における次に動作するセキュリティエンジンＬの実行結果を確認する。このとき、セキュリティエンジンＬに異常が発生している場合には、セキュリティエンジンＫは、セキュリティエンジンＬに異常が発生している旨の異常割込み信号をコーディネータ１３に通知するようにしても良い。セキュリティエンジンＫが直前に動作したセキュリティエンジンＪの実行結果だけでなく、次に動作したセキュリティエンジンＬの実行結果を確認することにより、セキュリティエンジンＫは異常が発生しているセキュリティエンジンＪ、Ｌの存在を素早く発見することができるため、セキュリティエンジン連携装置１０のコンピュータセキュリティを全体的に向上することができる。
【００５７】
なお、セキュリティエンジンＫは、コーディネータ１３により出力された起動要求に基づいて、当該セキュリティエンジンＫの実行前に連携レジスタ１５を確認し、実行順序及び直前のセキュリティエンジンＬの実行結果を確認する旨を記載した。しかし、セキュリティエンジンＫは、セキュリティエンジン連携装置１０の起動時、及び当該セキュリティエンジンＫの設定が変更された時に、当該連携レジスタ１５を確認し、実行順序及び直前のセキュリティエンジンＬの実行結果を確認しても良い。
【００５８】
なお、前述した実施形態では、セキュリティエンジンＡ〜Ｄのいずれかが故障した場合における例を説明したが、セキュリティエンジンＡ〜Ｄのいずれかの動作がバイパスされた場合においても同様である。
【産業上の利用可能性】
【００５９】
本発明は、複数のエンジンによる多層防御環境において、攻撃によるエンジンの故障時にセキュリティの低下を最小限に抑えるセキュリティエンジン連携装置及びセキュリティエンジン連携方法として有用である。
【符号の説明】
【００６０】
１０            セキュリティエンジン連携装置
１１            コントローラ
１２            セキュリティエンジン状態格納部
１３            コーディネータ
１４            連携情報格納部
１５            連携レジスタ
Ａ、Ｂ、Ｃ、Ｄ  セキュリティエンジン
ＳＣ１          標準シナリオ
ＳＣ２、ＳＣ３  復旧シナリオ
【図１】
2011145946.tif 000003
【図２】
2011145946.tif 000004
【図３】
2011145946.tif 000005
【図４】
2011145946.tif 000006
【図５】
2011145946.tif 000007
【図６】
2011145946.tif 000008
【図７】
2011145946.tif 000009
【図８】
2011145946.tif 000010