(57)【特許請求の範囲】
【請求項１】
述語論理を用いた推論に基づく、情報システムについてのアタックツリーを第１のアタックツリーとして取得する第１のアタックツリー取得部と、
前記情報システムのネットワーク構成が示されるネットワーク構成情報と前記情報システムへの侵攻において想定される侵攻手順が示される侵攻手順情報とを用いて、前記情報システムへの侵攻経路が網羅され前記情報システムへの侵攻手順が反映されるアタックツリーを第２のアタックツリーとして生成する第２のアタックツリー生成部と、
前記第１のアタックツリーと前記第２のアタックツリーとを比較するツリー比較部とを有する情報処理装置。
【請求項２】
前記第１のアタックツリー取得部は、
複数の攻撃ステップが含まれる攻撃パスが複数含まれるアタックツリーを前記第１のアタックツリーとして取得し、
前記第２のアタックツリー生成部は、
複数の攻撃ステップが含まれる攻撃パスが複数含まれるアタックツリーを前記第２のアタックツリーとして生成し、
前記ツリー比較部は、
前記第２のアタックツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップが前記第２のアタックツリーと同じ順序で前記第１のアタックツリーに含まれていない場合に、前記特定の攻撃パスを出力する請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
前記情報システムについての前記述語論理を用いた推論において推論に失敗した要素が含まれるアタックツリーを失敗ツリーとして取得する失敗ツリー取得部を有し、
前記ツリー比較部は、
前記第２のアタックツリーと、前記第１のアタックツリー及び前記失敗ツリーとを比較する請求項１に記載の情報処理装置。
【請求項４】
前記第１のアタックツリー取得部は、
複数の攻撃ステップが含まれる攻撃パスが複数含まれるアタックツリーを前記第１のアタックツリーとして取得し、
前記第２のアタックツリー生成部は、
複数の攻撃ステップが含まれる攻撃パスが複数含まれるアタックツリーを前記第２のアタックツリーとして生成し、
前記失敗ツリー取得部は、
複数の攻撃ステップが含まれる攻撃パスが複数含まれるアタックツリーを前記失敗ツリーとして取得し、
前記ツリー比較部は、
前記第２のアタックツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップが前記第２のアタックツリーと同じ順序で前記第１のアタックツリー及び前記失敗ツリーのいずれにも含まれていない場合に、前記特定の攻撃パスを出力する請求項３に記載の情報処理装置。
【請求項５】
前記ツリー比較部は、
前記述語論理を用いた推論の前提に欠陥があることが推定される旨を通知するメッセージを出力する請求項４に記載の情報処理装置。
【請求項６】
前記ツリー比較部は、
前記第２のアタックツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップが前記第２のアタックツリーと同じ順序で前記第１のアタックツリーには含まれていないが前記失敗ツリーには含まれている場合に、前記特定の攻撃パスを出力する請求項３に記載の情報処理装置。
【請求項７】
前記ツリー比較部は、
前記述語論理を用いた推論の前提に欠陥がないことが推定される旨を通知するメッセージを出力する請求項６に記載の情報処理装置。
【請求項８】
コンピュータが、述語論理を用いた推論に基づく、情報システムについてのアタックツリーを第１のアタックツリーとして取得し、
前記コンピュータが、前記情報システムのネットワーク構成が示されるネットワーク構成情報と前記情報システムへの侵攻において想定される侵攻手順が示される侵攻手順情報とを用いて、前記情報システムへの侵攻経路が網羅され前記情報システムへの侵攻手順が反映されるアタックツリーを第２のアタックツリーとして生成し、
前記コンピュータが、前記第１のアタックツリーと前記第２のアタックツリーとを比較する情報処理方法。
【請求項９】
述語論理を用いた推論に基づく、情報システムについてのアタックツリーを第１のアタックツリーとして取得する第１のアタックツリー取得処理と、
前記情報システムのネットワーク構成が示されるネットワーク構成情報と前記情報システムへの侵攻において想定される侵攻手順が示される侵攻手順情報とを用いて、前記情報システムへの侵攻経路が網羅され前記情報システムへの侵攻手順が反映されるアタックツリーを第２のアタックツリーとして生成する第２のアタックツリー生成処理と、
前記第１のアタックツリーと前記第２のアタックツリーとを比較するツリー比較処理とをコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アタックツリーの評価に関する。
【背景技術】
【０００２】
近年、機密情報又は個人情報の漏えい事件、ランサムウェアによる被害等により、情報資産を取り扱うエンタープライズにおけるセキュリティの重要性が増している。また、制御システムのネットワーク化に伴い、発電プラント、ガスプラント等の重要インフラストラクチャーへのサイバー攻撃が脅威となりつつある。これらサイバー攻撃は、国家の安全保障を揺るがす重大な懸念事項となっている。重要インフラストラクチャーに対する攻撃の代表事例としてイランの原子力発電施設で起きたＳｔｕｘｎｅｔが挙げられる。本事例では、ＵＳＢメモリ経由で制御システムを操作する内部ネットワークのマシンがマルウェアに感染し、さらに遠心分離装置を制御するプログラムが改ざんされ、同装置の不正動作により濃縮ウランの製造に影響が出たと言われている。遠心分離装置などはインターネットに接続されていなかった（ａｉｒ−ｇａｐｐｅｄ）が、攻撃経路の１つとして、内部のスタッフが利用するＵＳＢメモリがあったことが報告されている。このことから、あらかじめ様々な脅威を想定してセキュリティを向上させる必要があることがわかる。【０００３】
セキュリティを向上させるためには、まず、攻撃目標に対する脅威とそのリスクを明確にするセキュリティ分析が重要である。セキュリティ分析では、攻撃目標に対する脅威をリストアップする。次に、発生頻度が高く重大な影響を持つ脅威に対して高いリスク値を割り当てる。そして、高いリスク値が割り当てられた脅威に優先的に適切な対策を実施していく。
脅威をリストアップする際に、リストアップ漏れがあっては意味が無い。そのため、アタックツリーなどのツールを用いて、攻撃目標への侵攻手順を系統的に抽出することが行われる。
従来、アタックツリーの作成は人の手で行われていた。そのため作成されたアタックツリーの質は、作成者の創造力、経験、スキルに依存していた。作成時にミスが混入する可能性もあり、作成されたアタックツリーの網羅性については常に疑問視されていた。
そこで、Ｐｒｏｌｏｇなどの述語論理の推論エンジンを利用して、攻撃目標に対する侵攻手順を、与えられた前提知識をもとに推論し、推論過程からアタックツリーを自動生成する技術が考えられている（例えば、非特許文献１及び非特許文献２）。以降、このようなアタックツリーを自動生成する技術をアタックツリー自動生成技術と呼ぶ。アタックツリー自動生成技術によれば、アタックツリーの生成過程において人手を介さないため、アタックツリーの網羅性は人の創造性及び経験に依存しない。本技術では、事前に用意した前提知識と推論ルールをもとに、与えられた攻撃目標が成功するかを推論する。全ての組合せを試し、成功した推論過程のみをもとにアタックツリーを生成する。アタックツリーの作成に人の手を介さないため、作成者の能力やミスによる影響を受けにくい。
しかし、アタックツリー自動生成技術においても、推論エンジンに与える知識や推論ルールは人手で用意する必要がある。このため、アタックツリー自動生成技術を用いて生成されたアタックツリーについても網羅性の根拠を強く主張することができない。
また、非特許文献３の技術では、形式証明を利用してアタックツリーを評価する。アタックツリーはあるモデル（Ｔｒａｎｓｉｔｉｏｎ  ｓｙｓｔｅｍ  ｍｏｄｅｌ）の中で生成される。アタックツリーの網羅性及び健全性は当該モデルの中で保証される。しかし、当該モデルは人が作成するため、経験及び知識の差異によるモデルのばらつきが発生し得る。また、モデルの作成に人為的ミスが入る可能性が高い。そのため、モデルの中で保証された網羅性や健全性には疑問が残る。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｘｉｎｍｉｎｇ  Ｏｕ，Ｓｕｄｈａｋａｒ  Ｇｏｖｉｎｄａｖａｊｈａｌａ，Ａｎｄｒｅｗ  Ｗ．  Ａｐｐｅｌ，ＭｕｌＶＡＬ：Ａ  Ｌｏｇｉｃ−ｂａｓｅｄ  Ｎｅｔｗｏｒｋ  Ｓｅｃｕｒｉｔｙ  Ａｎａｌｙｚｅｒ，  Ｐｒｏｃｅｅｄｉｎｇ  ＳＳＹＭ  ’０５  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １４ｔｈ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  ＵＳＥＮＩＸ  Ｓｅｃｕｒｉｔｙ  Ｓｙｍｐｏｓｉｕｍ−Ｖｏｌｕｍｅ  １４
【非特許文献２】浅井健志、島邉遼佑、河内清人、サイバー攻撃対策の選定に向けたアタックツリーの自動生成、ＳＣＩＳ２０１８  暗号と情報セキュリティシンポジウム、１Ｃ１−１
【非特許文献３】Ｍａｘｉｍｅ  Ａｕｄｉｎｏｔ，  Ｓｏｐｈｉｅ  Ｐｉｎｃｈｉｎａｔ，Ｂａｒｂａｒａ  Ｋｏｒｄｙ，  Ｉｓ  ｍｙ  ａｔｔａｃｋ  ｔｒｅｅ  ｃｏｒｒｅｃｔ？  Ｅｘｔｅｎｄｅｄ  ｖｅｒｓｉｏｎ，  ＣｏＲＲ  ａｂｓ／１７０６．０８５０７  （２０１７）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、従来の技術では、生成されたアタックツリーの網羅性に疑問が残るという課題がある。
本発明は、このような課題を解決することを主な目的とする。具体的には、本発明は、アタックツリーの網羅性を高めることを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、
述語論理を用いた推論に基づく、情報システムについてのアタックツリーを第１のアタックツリーとして取得する第１のアタックツリー取得部と、
前記情報システムのネットワーク構成が示されるネットワーク構成情報と前記情報システムへの侵攻において想定される侵攻手順が示される侵攻手順情報とを用いて、前記情報システムへの侵攻経路が網羅され前記情報システムへの侵攻手順が反映されるアタックツリーを第２のアタックツリーとして生成する第２のアタックツリー生成部と、
前記第１のアタックツリーと前記第２のアタックツリーとを比較するツリー比較部とを有する。
【発明の効果】
【０００７】
本発明では、第１のアタックツリーを、情報システムへの侵攻経路が網羅され情報システムへの侵攻手順が反映される第２のアタックツリーと比較するため、第１のアタックツリーの網羅性を評価することができる。このため、評価結果を第１のアタックツリーの生成手順にフィードバックすることが可能になり、第１のアタックツリーの網羅性を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係る網羅性評価装置のハードウェア構成例を示す図。
【図２】実施の形態１に係る網羅性評価装置の機能構成例を示す図。
【図３】実施の形態１に係る網羅性評価装置の動作例を示すフローチャート。
【図４】実施の形態１に係る攻撃知識の例を示す図。
【図５】実施の形態１に係るシステム知識の例を示す図。
【図６】実施の形態１に係る推論過程を表すツリーの例を示す図。
【図７】実施の形態１に係るアタックツリーの例を示す図。
【図８】実施の形態１に係るゴールドツリー生成部の内部構成例を示す図。
【図９】実施の形態１に係るゴールドツリー生成部の動作例を示すフローチャート。
【図１０】実施の形態１に係る制御システムのネットワーク構成例を示す図。
【図１１】実施の形態１に係る侵攻経路を網羅したツリーの例を示す図。
【図１２】実施の形態１に係る初期侵攻テンプレートの例を示す図。
【図１３】実施の形態１に係る初期侵攻テンプレートの例を示す図。
【図１４】実施の形態１に係る侵攻手順テンプレートの例を示す図。
【図１５】実施の形態１に係る侵攻手順テンプレートの例を示す図。
【図１６】実施の形態１に係る初期侵攻テンプレート及び侵攻手順テンプレートの適用後のツリーの例を示す図。
【図１７】実施の形態１に係る初期侵攻テンプレート及び侵攻手順テンプレートの適用後のツリーの例を示す図。
【図１８】実施の形態１に係る初期侵攻テンプレート及び侵攻手順テンプレートの適用後のツリーの例を示す図。
【図１９】実施の形態１に係るツリー比較部の内部構成例を示す図。
【図２０】実施の形態１に係るツリー比較部の動作例を示すフローチャート。
【図２１】実施の形態１に係る評価ツリーの例を示す図。
【図２２】実施の形態１に係る評価ツリーの例を示す図。
【図２３】実施の形態１に係る比較動作を実現する疑似コードを示す図。
【図２４】実施の形態２に係るツリー比較部の内部構成例を示す図。
【図２５】実施の形態２に係るツリー比較部の動作例を示すフローチャート。
【図２６】実施の形態２に係る失敗ツリーの例を示す図。
【図２７】実施の形態２に係る比較動作を実現する疑似コードを示す図。
【図２８】実施の形態１に係るＡＮＤノードとＯＲノードを含む評価ツリーの例を示す図。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【００１０】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係る網羅性評価装置１００のハードウェア構成例を示す。
網羅性評価装置１００は、情報処理装置に相当する。また、網羅性評価装置１００により行われる動作は、情報処理方法及び情報処理プログラムに相当する。
【００１１】
本実施の形態に係る網羅性評価装置１００は、コンピュータである。
網羅性評価装置１００は、ハードウェアとして、プロセッサ９０１、主記憶装置９０２、補助記憶装置９０３、通信デバイス９０４、キーボード９０５、マウス９０６及びディスプレイ９０７を備える。
補助記憶装置９０３には、図２を用いて後述する評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の機能を実現するプログラムが記憶されている。当該プログラムは、補助記憶装置９０３から主記憶装置９０２にロードされる。そして、プロセッサ９０１が当該プログラムを実行して、後述する評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の動作を行う。
主記憶装置９０２又は補助記憶装置９０３には、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３に用いられるデータが格納される。また、主記憶装置９０２又は補助記憶装置９０３には、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の処理結果を示すデータが格納される。
通信デバイス９０４は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介してインターネットに接続されている。
キーボード９０５及びマウス９０６は、網羅性評価装置１００のユーザが網羅性評価装置１００に各種指示を入力するのに用いられる。
ディスプレイ９０７は、網羅性評価装置１００のユーザに各種情報を表示するのに用いられる。
【００１２】
図２は、本実施の形態に係る網羅性評価装置１００の機能構成例を示す。
【００１３】
網羅性評価装置１００は、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３を有する。
前述したように、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３は、例えばプログラムで実現される。そして、当該プログラムはプロセッサ９０１で実行される。
図２では、プロセッサ９０１が評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の機能を実現するプログラムを実行している状態を模式的に表している。
【００１４】
評価ツリー生成部１０１は、Ｐｒｏｌｏｇなどの述語論理を用いた推論に基づき、攻撃対象の情報システムについてのアタックツリーを生成する。評価ツリー生成部１０１が生成するアタックツリーを評価ツリーという。評価ツリー生成部１０１は、例えば、非特許文献１又は非特許文献２の技術を用いて評価ツリーを生成する。評価ツリーには、複数の攻撃ステップが含まれる攻撃パス（以下、単にパスともいう）が複数含まれる。
なお、評価ツリーは第１のアタックツリーに相当する。このため、評価ツリー生成部１０１は第１のアタックツリー取得部に相当する。また、評価ツリー生成部１０１により行われる処理は、第１のアタックツリー取得処理に相当する。
【００１５】
ゴールドツリー生成部１０２は、攻撃対象の情報システムへの侵攻経路が網羅され当該情報システムへの侵攻手順が反映されるアタックツリーを生成する。ゴールドツリー生成部１０２が生成するアタックツリーをゴールドツリーという。ゴールドツリーには、評価ツリー同様、複数の攻撃ステップが含まれる攻撃パスが複数含まれる。
ゴールドツリーは第２のアタックツリーに相当する。このため、ゴールドツリー生成部１０２は第２のアタックツリー生成部に相当する。また、ゴールドツリー生成部１０２により行われる処理は、第２のアタックツリー生成処理に相当する。
【００１６】
ツリー比較部１０３は、評価ツリーとゴールドツリーとを比較する。ツリー比較部１０３は、ゴールドツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップがゴールドツリーと同じ順序で評価ツリーに含まれていない場合に、当該特定の攻撃パスをディスプレイ９０７に出力する。
ツリー比較部１０３により行われる処理はツリー比較処理に相当する。
【００１７】
また、評価ツリー生成部１０１及びゴールドツリー生成部１０２がアタックツリーの生成に用いるデータとして、システム知識１０４、攻撃知識１０５、初期侵攻テンプレート１０６、侵攻手順テンプレート１０７及び侵攻手順変換テーブル１０８がある。
システム知識１０４、攻撃知識１０５、初期侵攻テンプレート１０６、侵攻手順テンプレート１０７及び侵攻手順変換テーブル１０８は、主記憶装置９０２又は補助記憶装置９０３に格納されている。プロセッサ９０１が評価ツリー生成部１０１及びゴールドツリー生成部１０２として動作する際に、プロセッサ９０１は、システム知識１０４、攻撃知識１０５、初期侵攻テンプレート１０６、侵攻手順テンプレート１０７及び侵攻手順変換テーブル１０８を読み出す。
システム知識１０４、攻撃知識１０５、初期侵攻テンプレート１０６、侵攻手順テンプレート１０７及び侵攻手順変換テーブル１０８の詳細は、後述する。
【００１８】
図３は、本実施の形態に係る網羅性評価装置１００の動作例を示す。
図３を参照して、本実施の形態に係る網羅性評価装置１００の動作例を説明する。
【００１９】
ステップＳ１０１において、評価ツリー生成部１０１は、評価ツリーを生成する。
評価ツリー生成部１０１は、Ｐｒｏｌｏｇなどの述語論理を用いた推論ベースで評価ツリーを生成する。前述したように、評価ツリー生成部１０１は、例えば、非特許文献１又は非特許文献２の技術を用いて評価ツリーを生成する。
推論ベースのアタックツリー生成技術からは、推論過程がログとして出力される。Ｐｒｏｌｏｇでは、与えられた命題（攻撃目標）が成立するか否かを再帰手続きによって探索する後ろ向き推論が行われる。推論過程のログとは、後ろ向き推論の中で、成功したルール、失敗したルールを記述したログである。
網羅性評価装置１００には、攻撃対象の情報システムを表現した知識（ネットワーク構成、脆弱性のある箇所、攻撃者の前提条件）、推論ルールが予め用意されている。
具体的には、攻撃対象の情報システムを表現した知識として、図２に示すシステム知識１０４が網羅性評価装置１００に用意されている。
システム知識１０４内の攻撃対象の情報システムのネットワーク構成についての知識には、情報システムのネットワーク構成が示されている。このため、当該知識は、ネットワーク構成情報に相当する。
また、推論ルールとして、図２に示す攻撃知識１０５、初期侵攻テンプレート１０６及び侵攻手順テンプレート１０７が網羅性評価装置１００に用意されている。
また、初期侵攻テンプレート１０６及び侵攻手順テンプレート１０７には、攻撃における侵攻手順が示されている。このため、初期侵攻テンプレート１０６及び侵攻手順テンプレート１０７は、侵攻手順情報に相当する。
評価ツリー生成部１０１に攻撃目標が入力されると、評価ツリー生成部１０１は、前述の知識、推論ルールを利用して、後ろ向き推論により攻撃目標が成立する全てのケース（攻撃パス）を導出する。そして、評価ツリー生成部１０１は、全ての攻撃パスをつなげることで評価ツリーを生成する。
【００２０】
図４と図５を参照して、アタックツリーの生成に必要な知識とルールを説明する。
図４は、攻撃知識１０５の例を示す。図５は、システム知識１０４の例を示す。
図４及び図５は、Ｐｒｏｌｏｇの表記方法に従って表記されているが、表記方法は図４及び図５に示す方法に限らない。
攻撃知識１０５とシステム知識１０４を評価ツリー生成部１０１に入力し、例えば、「ｍａｎｉｐｕｌａｔｅＰｒｏｇ（ａ，ｃ）（攻撃者ａはマシンｃのプログラムを書き換えることができる）」という質問をした場合、Ｐｒｏｌｏｇの推論過程は図６のようなツリーで表現することができる。図６では、推論失敗の過程の記載は、ボディ部に書かれたゴールが初めて失敗する段階で止めている。
「ｍａｎｉｐｕｌａｔｅＰｒｏｇ（ａ，ｃ）」が真となる（成立する）場合は、再帰手続きによって探索する後ろ向き推論が行われる。図６のツリーから推論が成功したパスのみを選び出すと図７のツリーが得られる。このような手順を経て評価ツリーが生成される。
図７のツリーの場合、２つの攻撃パスが推論されている。１つ目のパスは、図７の左下のノードから延びるパスである。つまり、１つ目のパスは、「攻撃者ａがパスワードｐ１を盗み」（ｓｔｅａｌＰａｓｓ（ａ，ｐ１）＝Ｔｒｕｅ）、「攻撃者ａがマシンｍ１のパスワードｐ１を持ち」（ｈａｓＰａｓｓ（ａ，ｐ１）＝Ｔｒｕｅ  ｐａｓｓ（ｍ１，ｐ１）＝Ｔｒｕｅ）、「マシンｍ１とマシンｃのネットワークアドレスが同じで、攻撃者ａは物理的にマシンｍ１をコントロールすることができ」（ｎｅｔｗｏｒｋ（ｍ１，ｎｅｔ１）＝Ｔｒｕｅ  ｎｅｔｗｏｒｋ（ｃ，ｎｅｔ１）＝Ｔｒｕｅ  ｐｈｙｓｉｃａｌｌｙＣｏｎｔｒｏｌｌａｂｌｅ（ａ，ｍ１）＝Ｔｒｕｅ）、「マシンｍ１からマシンｃに物理的にアクセスでき、マシンｍ１に遠隔操作ツールがあり、マシンｍ１は攻撃者がコントロールすることができ」（ａｃｃｅｓｓｉｂｌｅ（ｍ１，ｃ）＝Ｔｒｕｅ  ｈａｓＲｅｍｏｔｅＴｏｏｌ（ｍ１）＝Ｔｒｕｅ  ｃｏｎｔｒｏｌｌａｂｌｅ（ａ，ｍ１）＝Ｔｒｕｅ）、「攻撃者ａが遠隔にあるマシンｍ１からマシンｃをコントロールでき」（ｒｅｍｏｔｅＣｏｎｔｒｏｌｌａｂｌｅ（ａ，Ｍ，ｃ）＝Ｔｒｕｅ  （Ｍ＝ｍ１））、「攻撃者ａがマシンｃをコントロールでき」（ｃｏｎｔｏｒｌｌａｂｌｅ（ａ，ｃ）＝Ｔｒｕｅ）、「攻撃者ａはマシンｃのプログラムを書き換えることができる」（ｍａｎｉｐｕｌａｔｅＰｒｏｇ（ａ，ｃ）＝Ｔｒｕｅ）である。
２つ目のパスは、図７の右下のノードから延びるパスである。つまり、２つ目のパスは、「攻撃者ａがパスワードｐ３を盗み」（ｓｔｅａｌＰａｓｓ（ａ，ｐ３）＝Ｔｒｕｅ）、「攻撃者ａがマシンｃのパスワードｐ３を持ち」（ｈａｓＰａｓｓ（ａ，ｐ３）＝Ｔｒｕｅ  ｐａｓｓ（ｃ，ｐ３）＝Ｔｒｕｅ）、「攻撃者ａは物理的にマシンｃをコントロールすることができ」（ｐｈｙｓｉｃａｌｌｙＣｏｎｔｒｏｌｌａｂｌｅ（ａ，ｃ）＝Ｔｒｕｅ）、「攻撃者ａはマシンｃをコントロールすることができ」（ｃｏｎｔｏｒｌｌａｂｌｅ（ａ，ｃ）＝Ｔｒｕｅ）、「攻撃者ａはマシンｃのプログラムを書き換えることができる」（ｍａｎｉｐｕｌａｔｅＰｒｏｇ（ａ，ｃ）＝Ｔｒｕｅ）である。
【００２１】
次に、ステップＳ１０２において、ゴールドツリー生成部１０２がゴールドツリーを生成する。
より具体的には、ゴールドツリー生成部１０２は、システム知識１０４から、総当たり的にネットワークの侵入経路をリストアップする。そして、ゴールドツリー生成部１０２は、初期侵攻テンプレート１０６と侵攻手順テンプレート１０７とを利用して、情報システムへの侵攻経路が網羅され、情報システムへの侵攻手順が反映されるゴールドツリーを生成する。
【００２２】
最後に、ステップＳ１０３において、ツリー比較部１０３が、評価ツリーとゴールドツリーを比較し、差分を抽出する。
【００２３】
図８は、ゴールドツリー生成部１０２の内部構成例を示す。
図８に示すように、ゴールドツリー生成部１０２は、ネットワーク網羅部１０２１及びテンプレート適用部１０２２から構成されている。また、ゴールドツリー生成部１０２は、システム知識１０４、初期侵攻テンプレート１０６及び侵攻手順テンプレート１０７を用いて、ゴールドツリーを生成する。
【００２４】
図９は、ゴールドツリー生成部１０２の動作例を示す。
【００２５】
まず、ステップＳ１０２１において、ネットワーク網羅部１０２１は、システム知識１０４から、攻撃対象の情報システムの情報（ネットワーク構成、脆弱性のある箇所、攻撃者の前提条件）を抽出する。システム知識１０４は、評価ツリー生成部１０１が推論ベースで攻撃パスを導出するために、例えばＸＭＬ形式などの機械的に読み取り可能な形式で構成されている。ネットワーク網羅部１０２１は、攻撃対象の情報システムに存在する全てのマシンについての情報を抽出する。
【００２６】
次に、ステップＳ１０２２において、ネットワーク網羅部１０２１は、情報システム内のあるマシンを攻撃対象としたときに取り得る、当該マシンンまでの重複を含まない全ての侵攻経路を列挙する。システム知識１０４には情報システムのネットワーク構成の情報が含まれる。ネットワーク網羅部１０２１は、情報システムのネットワーク構成を用いて、論理的及び物理的に矛盾のない侵攻経路を抽出することができる。
【００２７】
図１０は、情報システムのネットワーク構成の一例として、簡略化した制御システムのネットワーク構成を示す。
図１０の制御システムでは、制御機器を制御するコントローラＣが制御ネットワークと保守ネットワークに接続されている。コントローラＣを保守する保守計算機Ｂが保守ネットワークに接続されている。コントローラＣ及び制御ネットワークを監視する表示用の表示計算機Ａが制御ネットワークに接続されている。以下、表示計算機Ａ、保守計算機Ｂ及びコントローラＣをそれぞれ単に、Ａ、Ｂ、Ｃとも表記する。
図１０の例では、「Ａ、Ｂ、Ｃ」がマシンリストである。攻撃対象のマシンをコントローラＣとした場合、ネットワーク構成を考慮しない、コントローラＣまでの重複を含まない取り得る全ての侵攻経路は、「Ｃ、ＣＢ、ＣＢＡ、ＣＡ、ＣＡＢ」となる。理論的な経路の数は「１＋２Ｐ１＋２Ｐ２」である（Ｐは順列を意味する）。上記「Ｃ、ＣＢ、ＣＢＡ、ＣＡ、ＣＡＢ」のうち、単体の「Ｃ」は、攻撃者がコントローラＣを直接操作して攻撃することを意味する。「ＣＢ」は、攻撃者が保守計算機Ｂを直接操作しコントローラＣに侵攻しコントローラＣを攻撃することを意味する。「ＣＢＡ」は、攻撃者が表示計算機Ａを直接操作し保守計算機Ｂに侵攻しさらにコントローラＣに侵攻しコントローラＣを攻撃することを意味する。「ＣＡ」及び「ＣＡＢ」についても同様である。
ネットワーク構成を考慮し、論理的及び物理的に明らかに矛盾のある経路を除去すると、侵攻経路の組合せは「Ｃ、ＣＢ、ＣＡ」となる。
【００２８】
次に、ステップＳ１０２３において、ネットワーク網羅部１０２１が、抽出した侵攻経路をまとめ、侵攻経路を網羅したツリーを生成する。
図１０の制御システムの場合、ネットワーク構成を考慮した侵攻経路を網羅したツリーは図１１に示すようになる。本実施の形態では、各ノードの階層上の位置づけにかかわらず（各ノードが末端ノードであるか中間ノードであるかにかかわらず）、攻撃者が各ノードを直接操作して親ノードに侵攻すること想定する。なお、図１１では、便宜上、表示計算機Ａの下には、エンタープライズネットワークのノードを配置している。
【００２９】
次に、ステップＳ１０２４において、テンプレート適用部１０２２が、初期侵攻テンプレート１０６及び侵攻手順テンプレート１０７を利用し、侵攻手順を反映させたツリーを生成する。
図１２は、初期侵攻テンプレート１０６の例を示す。初期侵攻では、盗んだパスワードによるログイン、ＵＳＢメモリ経由のマルウェア感染等の手順が考えられる。具体的な手順が記された初期侵攻テンプレート１０６の例を図１３に示す。
図１４は、侵攻手順テンプレート１０７の例を示す。侵攻手順テンプレート１０７は、マシンタイプごとに侵攻手順が列挙されたテーブルである。バッファーオバーフローによる任意のプログラムの実行、盗んだパスワードによるリモートデスクトップ接続等の手順が侵攻の手順である。２つのマシンの間に複数のネットワークが存在する場合は、マシンタイプに加え、ネットワークタイプごとに侵攻手順テンプレート１０７に侵攻手順を列挙してもよい。具体的な手順が記された侵攻手順テンプレート１０７の例を図１５に示す。
侵攻手順テンプレート１０７及び初期侵攻テンプレート１０６に記載する手順は、参考文献１、参考文献２等の形式化された公開データベースから抽出して利用することができる。
図１１のツリーに図１３の初期侵攻テンプレート１０６及び図１５の侵攻手順テンプレート１０７を適用した後のツリーを図１６に示す。
また、図１７に具体的な手順が記されたツリーを示す。また、図１８は、図１７の記載をマシンリーダブルな記載に変更したツリーの例を示す。図１８では、「表示計算機Ａ」は「Ｍａｃｈｉｎｅ  Ａ」と表記し、「保守計算機Ｂ」は「Ｍａｃｈｉｎｅ  Ｂ」と表記している。
なお、図１８が、ゴールドツリーに該当する。
参考文献１：ＭＩＴＥＲ、  ＡＴＴ＆ＣＫ、  ｈｔｔｐｓ：／／ａｔｔａｃｋ．ｍｉｔｒｅ．ｏｒｇ／ｗｉｋｉ／Ｍａｉｎ＿Ｐａｇｅ
参考文献２：ＣＡＰＥＣ、  ｈｔｔｐ：／／ｃａｐｅｃ．ｍｉｔｒｅ．ｏｒｇ／ｉｎｄｅｘ．ｈｔｍｌ
【００３０】
なお、制御システム内の全てのノードを攻撃対象に指定し、ノードごとにゴールドツリーを生成することもできるが、非効率的なため、本実施の形態では、ゴールドツリー生成部１０２は、評価ツリーのトップにあるノードに記載されているマシンのみを攻撃対象に指定してゴールドツリーを生成する。
侵攻手順テンプレート１０７及び初期侵攻テンプレート１０６は、全てのマシンに共通に用いられてもよい。また、侵攻手順テンプレート１０７及び初期侵攻テンプレート１０６は、通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、サーバ、コントローラなどマシンのタイプごとに用意してもよい。更に、侵攻手順テンプレート１０７及び初期侵攻テンプレート１０６を、マシンにインストールされているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）又はアプリケーションプログラムのバージョンごとに用意してもよい。
【００３１】
図１９は、ツリー比較部１０３の内部構成例を示す。
図１９に示すように、ツリー比較部１０３は、パス抽出部１０３１及びパス比較部１０３２で構成される。また、ツリー比較部１０３は、侵攻手順変換テーブル１０８を参照する。
【００３２】
図２０は、ツリー比較部１０３の動作例を示す。
まず、ステップＳ１０３１において、パス抽出部１０３１は、ゴールドツリーからパスを抽出する。パス抽出部１０３１は、ゴールドツリーのリーフノードからルートノードまで親ノードをたどることでパスを抽出する。図１８のゴールドツリーからは、以下の１０個のパスが抽出される。なお、以下では、図１８の一部の表記が省略されている。
１）ｒｅｍｏｔｅＬｏｇｉｎ（＿，ｍａｃｈｉｎｅＡ，ｐａｓｓｗｏｒｄＡ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
２）ｒｅｍｏｔｅＥｘｐｌｏｉｔ（＿，ｍａｃｈｉｎｅＡ，ｖｕｌ１）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
３）ｒｅｍｏｔｅＥｘｐｌｏｉｔ（＿，ｍａｃｈｉｎｅＡ，Ｖｕｌ２）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
４）ｌｏｃａｌＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，ｐａｓｓｗｏｒｄＡ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
５）ｕｓｂＭａｌｗａｒｅＲｕｎ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
６）ｍａｌｉｃｉｏｕｓＥｍａｉｌＣｌｉｃｋ（＿，ｍａｃｈｉｎｅＡ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
７）ｕｓｂＭａｌｗａｒｅＲｕｎ（＿，ｍａｃｈｉｎｅＢ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＢ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
８）ｌｏｃａｌＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＢ，ｐａｓｓｗｏｒｄＢ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＢ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）
９）ｃｈａｎｇｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，ｕｓｂ）
１０）ｌｏｃａｌＣｏｎｔｒｏｌ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，ｐａｓｓｗｏｒｄＣ）
【００３３】
次に、ステップＳ１０３２において、パス抽出部１０３１は、評価ツリーからパスを抽出する。パス抽出部１０３１は、評価ツリーのリーフノードからルートノードまで親ノードをたどることでパスを抽出する。なお、本実施の形態に係る評価ツリーはＯＲノードのみで構成されているが、評価ツリーにＡＮＤノードが含まれることがありうる。この場合は、パス抽出部１０３１はＡＮＤノードに繋がる子ノード（ＡＮＤの条件）については、全ての組合せの順番のパスを抽出する。例えば、図２８の例においては、以下６個のパスが抽出される。パス抽出部１０３１は、各ノードから末端ノードに向かうパスを再帰的に求め、親ノードとの関係（ＯＲなのかＡＮＤなのか）に応じて、親ノードとのパスの連結の仕方を変える要領で、全パスを抽出していく。
１）Ａ→Ｂ→Ｄ→Ｃ
２）Ａ→Ｂ→Ｅ→Ｆ→Ｇ→Ｃ
３）Ａ→Ｂ→Ｅ→Ｇ→Ｆ→Ｃ
４）Ａ→Ｃ→Ｂ→Ｄ
５）Ａ→Ｃ→Ｂ→Ｅ→Ｆ→Ｇ
６）Ａ→Ｃ→Ｂ→Ｅ→Ｇ→Ｆ
図１０の制御システムに対して、評価ツリー生成部１０１により図２１に示す評価ツリーが生成されたとする。ゴールドツリーとの比較を容易にするために、図２１の記載を図１８の記載形式に変更したツリーを図２２に示す。図２２の評価ツリーからは、以下の７つのパスが抽出される。なお、以下では、図２２の一部の表記が省略されている。また、攻撃が成功するための細かな条件やルールについても記載を省略している。
Ａ）ｒｅｍｏｔｅＥｘｐｌｏｉｔ（＿，ｍａｃｈｉｎｅＡ，ｖｕｌ１）⇒ｒｅｍｏｔｅＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，Ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｂ）ｒｅｍｏｔｅＬｏｇｉｎ（＿，ｍａｃｈｉｎｅＡ，ｐａｓｓｗｏｒｄＡ）⇒ｒｅｍｏｔｅＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｃ）ｕｓｂＭａｌｗａｒｅＲｕｎ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｌｗａｒｅＩｎｆｅｃｔｉｏｎ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｒｅｍｏｔｅＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｄ）ｍａｌｉｃｉｏｕｓＥｍａｉｌＣｌｉｃｋ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｌｗａｒｅＩｎｆｅｃｔｉｏｎ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｒｅｍｏｔｅＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＡ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＡ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｅ）ｌｏｃａｌＣｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＢ，ｐａｓｓｗｏｒｄＢ）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＢ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＢ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｆ）ｕｓｂＭａｌｗａｒｅＲｕｎ（＿，ｍａｃｈｉｎｅＢ，＿）⇒ｍａｌｗａｒｅＩｎｆｅｃｔｉｏｎ（＿，ｍａｃｈｉｎｅＢ，＿）⇒ｃｏｎｔｒｏｌ（＿，ｍａｃｈｉｎｅＢ，＿）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（ｍａｃｈｉｎｅＢ，ｃｏｎｔｒｏｌｌｅｒＣ，ｔｏｏｌ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
Ｇ）ｃｈａｎｇｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，ｕｓｂ）⇒ｍａｎｉｐｕｌａｔｅＰｒｏｇｒａｍ（＿，ｃｏｎｔｒｏｌｌｅｒＣ，＿）
【００３４】
ステップＳ１０３３において、パス比較部１０３２が、ゴールドツリーと評価ツリーのそれぞれから抽出したパスを比較する。そして、パス比較部１０３２は、ゴールドツリーのパス中にある攻撃ステップを必ず含むパスを評価ツリーから抽出する。
説明のために、ゴールドツリーから抽出される攻撃パスの攻撃ステップをｇＳｔｅｐ（メンバーはａ，ｎｆ，ｎｔ，ｉ，ｓ）と表す。攻撃ステップｇＳｔｅｐは、主体ｇＳｔｅｐ．ｓが、侵攻手順ｇＳｔｅｐ．ａを利用し、補足情報ｇＳｔｅｐ．ｉを使って、攻撃元ノードｇＳｔｅｐ．ｎｆから攻撃先ノードｇＳｔｅｐ．ｎｔを攻撃することを意味する。
ｍａｌＥｍａｉｌＣｌｉｃｋ（ｍ１，ｘ，  ，  ）の場合は、ｇＳｔｅｐ．ａがｍａｌＥｍａｉｌＣｌｉｃｋである。ｇＳｔｅｐ．ｎｆはｘである。ｇＳｔｅｐ．ｎｔはｍ１である。ｇＳｔｅｐ．ｉは「  」（ドントケア）である。ｇＳｔｅｐ．ｓは「  」（ドントケア）である。
同様に、評価ツリーから抽出される攻撃パスの攻撃ステップをａＳｔｅｐ（メンバーはａ，ｎｆ，ｎｔ，ｉ，ｓ）と表す。攻撃ステップａＳｔｅｐは、主体ａＳｔｅｐ．ｓが、侵攻手順ａＳｔｅｐ．ａを利用し、補足情報ａＳｔｅｐ．ｉを使って、攻撃元ノードａＳｔｅｐ．ｎｆから攻撃先ノードａＳｔｅｐ．ｎｔを攻撃することを意味する。
ｒｅｍＥｘｐ（ａ，ｘ，ｍ１，ｖｕｌ１）の場合は、ａＳｔｅｐ．ａがｒｅｍＥｘｐである。ａＳｔｅｐ．ｓはａである。ａＳｔｅｐ．ｎｆはｘである。ａＳｔｅｐ．ｎｔはｍ１である。ａＳｔｅｐ．ｉはｖｕｌ１である。
「ａｃｃｅｓｓ（ｘ，ｍ１，  ，  ＿）、ｃｌｉｃｋＭａｌＥｍａｉｌｌ（ａ，ｘ，ｍ１，  ＿）、ｃｏｎｔｒｏｌ（ａ，ｘ，  ＿，  ＿）」のように１つの攻撃ステップの中に複数の侵攻手順（もしくは条件）が含まれている場合がある。このような攻撃ステップは、要素の数に関係なく、侵攻手順の集合として扱う。
ゴールドツリーから抽出した各攻撃パスは攻撃ステップ（侵攻手順）が要素となる順序リストである。評価ツリーから抽出した各攻撃パスは攻撃ステップ（侵攻手順の集合）が要素となる順序リストである。パス比較部１０３２は、以下のように、ゴールドツリーの攻撃パスと評価ツリーの攻撃パスとを比較する。
【００３５】
パス比較部１０３２は、ゴールドツリーから抽出した攻撃パスを１つずつピックアップし、さらに評価ツリーから抽出した攻撃パスを１つずつピックアップする。
次に、パス比較部１０３２は、ゴールドツリーの攻撃パスに含まれるすべての要素（侵攻手順）を順序通り含む攻撃パスを評価ツリーから探す。評価ツリーの攻撃パスの各要素は侵攻手順の集合で表現されている。このため、パス比較部１０３２は、ゴールドツリーの攻撃ステップの侵攻手順が評価ツリーの侵攻手順の集合に含まれるか否かを判定する。
【００３６】
ゴールドツリーと評価ツリーに利用されている侵攻手順（侵入手口および侵攻手口）の形式が異なる場合（例えば、ｍａｌＥｍａｉｌＣｌｉｃｋ（ｘ，ｍ１）とｃｌｉｃｋＭａｌＥｍａｉｌｌ（ａ，ｘ，ｍ１））のために、侵攻手順間の対応関係が得られるように侵攻手順変換テーブル１０８が用意されている。
それぞれの侵攻手口には、あらかじめＣＡＰＥＣやＡＴＴ＆ＣＫなどの攻撃手口の識別子を紐づけておく。
侵攻手順変換テーブル１０８には、対応する攻撃手口名、主体、補足情報、攻撃元ノード、攻撃先ノードに加え、対応する識別子（ＣＡＰＥＣまたはＡＴＴ＆ＣＫ）が記載される。
パス比較部１０３２がゴールドツリーの攻撃パスと評価ツリーの攻撃パスとを比較することで、ゴールドツリーの攻撃パスに対応する評価ツリーの攻撃パスが辞書形式で出力される。このようなパス比較部１０３２の比較動作をｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔという。
【００３７】
図２３に、パス比較部１０３２の比較動作を実現する疑似コード（ｃｏｍｐａｒｅＡｔｔａｃｋＰａｔｈｓ）を示す。
ｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔにおいて空集合（φ）となっている各エントリー（ｇＰａｔｈ）が求めたい差分（ゴールドツリーに含まれるが評価ツリーに含まれない攻撃パス）である。
【００３８】
最後に、ステップＳ１０３４において、パス比較部１０３２は、評価結果を出力する。
例えば、評価ツリーにおいて網羅できていないパスが存在する場合は、パス比較部１０３２は、評価ツリーにおいて網羅できていないパスをディスプレイ９０７に表示する。網羅性評価装置１００のユーザは、ディスプレイ９０７に表示されたパスを解析して、システム知識１０４、攻撃知識１０５等を改訂することができ、評価パスの網羅性を向上させることができる。
【００３９】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、評価ツリーを、情報システムへの侵攻経路が網羅され情報システムへの侵攻手順が反映されるゴールドツリーと比較するため、評価ツリーの網羅性を評価することができる。また、本実施の形態では、評価ツリーで網羅できていないパスを抽出し、抽出したパスを網羅性評価装置１００のユーザに提示することができる。このため、ユーザは、提示された内容を評価ツリーの生成手順にフィードバックすることができ、この結果、評価ツリーの網羅性を高めることができる。
【００４０】
実施の形態２．
実施の形態１では、評価ツリーで網羅できていないパスが抽出された場合に、抽出されたパスをユーザに提示するのみである。本実施の形態では、評価ツリーで網羅できていないパスが抽出された場合に、当該パスが評価ツリーで網羅できていない理由を示す構成を説明する。
【００４１】
＊＊＊構成の説明＊＊＊
本実施の形態でも、網羅性評価装置１００のハードウェア構成例は図１に示す通りである。また、網羅性評価装置１００の機能構成例は図２に示す通りである。
本実施の形態では、ツリー比較部１０３の内部構成例が実施の形態１と異なる。
図２４は、本実施の形態に係るツリー比較部１０３の内部構成例を示す。
【００４２】
図２４では、図１９の構成と比較して、失敗ツリー生成部１０３３が追加されている。
失敗ツリー生成部１０３３は、情報システムについての述語論理を用いた推論において推論に失敗した要素が含まれるアタックツリーを生成する。つまり、失敗ツリー生成部１０３３は、評価ツリー生成部１０１による評価ツリーの生成において推論に失敗したパスで構成されるアタックツリーを生成する。失敗ツリー生成部１０３３が生成するアタックツリーは失敗ツリーという。失敗ツリーには、評価ツリー同様、複数の攻撃ステップが含まれる攻撃パスが複数含まれる。
失敗ツリー生成部１０３３は、失敗ツリー取得部に相当する。
【００４３】
本実施の形態では、パス抽出部１０３１は、失敗ツリーからもパスを抽出する。
また、本実施の形態では、パス比較部１０３２は、評価ツリーとゴールドツリーを比較するとともに、ゴールドツリーと失敗ツリーも比較する。
そして、パス比較部１０３２は、ゴールドツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップがゴールドツリーと同じ順序で評価ツリー及び失敗ツリーのいずれにも含まれていない場合に、当該特定の攻撃パスをディスプレイ９０７に出力する。更に、パス比較部１０３２は、述語論理を用いた推論の前提、すなわち、システム知識１０４、攻撃知識１０５等に欠陥があることが推定される旨を通知するメッセージをディスプレイ９０７に出力する。
また、パス比較部１０３２は、ゴールドツリーに含まれる特定の攻撃パスに含まれる複数の攻撃ステップがゴールドツリーと同じ順序で評価ツリーには含まれていないが失敗ツリーには含まれている場合にも、当該特定の攻撃パスをディスプレイ９０７に出力する。更に、パス比較部１０３２は、述語論理を用いた推論の前提、すなわち、システム知識１０４、攻撃知識１０５等に欠陥がないことが推定される旨を通知するメッセージをディスプレイ９０７に出力する。
【００４４】
＊＊＊動作の説明＊＊＊
図２５は、本実施の形態に係るツリー比較部１０３の動作例を示す。
【００４５】
まず、ステップＳ２０３１において、失敗ツリー生成部１０３３が、失敗ツリーを生成する。
評価ツリー生成部１０１の処理を修正することで、失敗ツリー生成部１０３３を実現することができる。評価ツリー生成部１０１では、システム知識１０４、攻撃知識１０５等を利用して、後ろ向き推論により攻撃目標が成立する全てのケース（攻撃パス）を導出する。評価ツリー生成部１０１は、図４と図５に記載した攻撃知識１０５及びシステム知識１０４を利用すると、図６の推論過程を経て、図７のアタックツリーを抽出することができる。ここで、図６の推論過程には推論失敗の過程も含まれている。このため、失敗ツリー生成部１０３３は、推論が失敗したパスのみを選び出すと、失敗ツリーを得ることができる。具体的には、評価ツリー生成部１０１は、Ｔｒｕｅである推論過程ごとに推論過程の分割を行う。また、評価ツリー生成部１０１は、Ｆａｉｌである推論過程は排除する。このようにすることで、評価ツリー生成部１０１は、評価ツリーを生成する。一方、失敗ツリー生成部１０３３は、Ｔｒｕｅである推論過程ごとに推論過程の分割を行うのではなく、Ｆａｉｌである推論過程ごとに推論過程の分割を行う。そして、失敗ツリー生成部１０３３は、Ｔｒｕｅである推論過程を排除する。
図６のツリーから失敗のパスだけをピックアップして整形した失敗ツリーの例を図２６に示す。失敗ツリー生成部１０３３は、失敗のパスのピックアップは最初に失敗（条件がＦａｌｓｅになる）が判明した時点で処理を終了する。図７の評価ツリーと図２６の失敗ツリーを合わせると図６のツリーができ、評価ツリーと失敗ツリーは相補的であることがわかる。
【００４６】
ステップＳ２０３２及びＳ２０３３において、パス抽出部１０３１が、ゴールドツリーと評価ツリーからパスを抽出する。ステップＳ２０３２及びＳ２０３３は、実施の形態１で説明したステップＳ１０３１及びＳ１０３２と同じであるため、詳細な説明を省略する。
【００４７】
次に、ステップＳ２０３４において、パス抽出部１０３１が、失敗ツリーからパスを抽出する。ステップＳ２０３４の処理もステップＳ２０３２及びＳ２０３３と同等であるため、詳細な説明は省略する。
【００４８】
次に、ステップＳ２０３５において、パス比較部１０３２が、ゴールドツリーと評価ツリーのそれぞれから抽出したパスを比較する。そして、パス比較部１０３２は、図２３に示す比較手順を利用し、比較結果としてｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔを取得する。
【００４９】
次に、ステップＳ２０３６において、パス比較部１０３２は、同様の方法で、ゴールドツリーと失敗ツリーのそれぞれから抽出したパスを比較する。ステップＳ２０３６の手順は基本的にはステップＳ２０３５と同様である。しかし、ステップＳ２０３６では、ゴールドツリーの攻撃パスに途中までマッチする失敗ツリーの攻撃パスと、ゴールドツリーの当該攻撃パスとの比較でもよいという点が異なる。失敗ツリーの攻撃パスの攻撃ステップをｆＳｔｅｐ（メンバーはａ，ｎｆ，ｎｔ，ｉ，ｓ）と表す。パス比較部１０３２がゴールドツリーの攻撃パスと失敗ツリーの攻撃パスとを比較することで、ゴールドツリーの攻撃パスに対応する失敗ツリーの攻撃パスが辞書形式で出力される。このようなパス比較部１０３２の比較動作をｍａｔｃｈｅｄＦａｉｌｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔという。
図２７に、パス比較部１０３２の比較動作を実現する疑似コード（ｃｏｍｐａｒｅＦａｉｌｅｄＰａｔｈｓ）を示す。
【００５０】
ステップＳ２０３７において、パス比較部１０３２は、ｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔおよびｍａｔｃｈｅｄＦａｉｌｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔを利用して評価結果を生成する。パス比較部１０３２は、ｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔから２種類の情報を得る。
１つ目の情報は、評価ツリーにおけるゴールドツリーをカバーする攻撃パスについての情報である。この攻撃パスについての情報は、ｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔにおける空集合（φ）ではない各エントリー（ｇＰａｔｈ）に定義された評価ツリーの攻撃パス（ａＰａｔｈ）の集合（ＣＯＶＥＲＥＤ＿ＡＴＴＡＣＫ＿ＰＡＴＨ＿ＳＥＴ）の情報である。この集合はゴールドツリーの攻撃パスと対応する評価ツリーの攻撃パスとのペア（（ｇＰａｔｈ，ａＰａｔｈ））の集合として定義される。ゴールドツリーの１つの攻撃パスに評価ツリーの複数の攻撃パスが対応する場合は、評価ツリーの複数のペアが集合に含まれる（｛（ｇＰａｔｈ１，ａＰａｔｈ１），（ｇＰａｔｈ１，ａＰａｔｈ２），（ｇＰａｔｈ１，ａＰａｔｈ３）｝）。
２つ目の情報は、評価ツリーではカバーしていない攻撃パスについての情報である。この攻撃パスについての情報は、ｍａｔｃｈｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔにおいて空集合（φ）となっている各エントリー（ｇＰａｔｈ）の集合（ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴ）の情報である。アタックツリー自動生成に必要な推論ルールや前提知識において、本来カバーしなくてもよい攻撃パスが含まれている可能性もあるが、推論ルールや前提知識の設定ミスによって本来カバーしなくてはならないパスが抜けている可能性もある。
ｍａｔｃｈｅｄＦａｉｌｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔからは１種類の情報を得ることができる。ｍａｔｃｈｅｄＦａｉｌｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔから得られる情報は、失敗ツリーにおけるゴールドツリーを途中までカバーする攻撃パスの情報である。この攻撃パスの情報は、ｍａｔｃｈｅｄＦａｉｌｅｄＡｔｔａｃｋＰａｔｈＤｉｃｔにおける空集合（φ）ではない各エントリー（ｇＰａｔｈ）に定義された失敗ツリーの攻撃パス（ｆＰａｔｈ）の集合（ＣＯＶＥＲＥＤ＿ＦＡＩＬＥＤ＿ＰＡＴＨ＿ＳＥＴ）の情報である。この集合はゴールドツリーの攻撃パスと対応する失敗ツリーの攻撃パスとのペア（（ｇＰａｔｈ，ｆＰａｔｈ））の集合として定義される。ゴールドツリーの１つの攻撃パスに失敗ツリーの複数の攻撃パスが対応する場合は、失敗ツリーの複数のペアが集合に含まれる（｛（ｇＰａｔｈ１，ｆＰａｔｈ１），（ｇＰａｔｈ１，ｆＰａｔｈ２），（ｇＰａｔｈ１，ｆＰａｔｈ３）｝）。
ここで、ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴに含まれるｇＰａｔｈが、ＣＯＶＥＲＥＤ＿ＦＡＩＬＥＤ＿ＰＡＴＨ＿ＳＥＴに含まれていれば、当該ｇＰａｔｈは、対応するｆＰａｔｈにおける最後の侵攻手順（条件）が失敗した根拠（導出失敗の条件）となる。このｇＰａｔｈとｆＰａｔｈのペアの集合をＮＯＲＭＡＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴという。
ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴに含まれるｇＰａｔｈが、ＣＯＶＥＲＥＤ＿ＦＡＩＬＥＤ＿ＰＡＴＨ＿ＳＥＴに含まれていなければ、推論エンジンに与える前提知識又は推論ルールに何かしらの不具合があることが予想される。このｇＰａｔｈの集合をＡＢＮＯＲＭＡＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴという。
【００５１】
最後に、ステップＳ２０３８において、パス比較部１０３２は、評価結果をディスプレイ９０７に出力する。
具体的には、パス比較部１０３２は、評価結果として、ＮＯＲＭＡＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴとＡＢＮＯＲＡＭＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴを表示する。ＮＯＲＭＡＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴについては、パス比較部１０３２は、失敗の根拠が存在する場合は失敗の根拠も表示する。ＡＢＮＯＲＡＭＬ＿ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴについては、パス比較部１０３２は、システム知識１０４、攻撃知識１０５等に欠陥があるために、該当するパスが評価ツリーから漏れている可能性があることをユーザに示すことができる。
【００５２】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態によれば、評価ツリーで網羅できていないパスが抽出された場合に、当該パスが評価ツリーで網羅できていない理由をユーザに示すことができる。つまり、ＰＡＴＨ＿ＰＡＩＲ＿ＳＥＴ２に含まれるパスについては、システム知識１０４、攻撃知識１０５等に欠陥がなく、適正に評価ツリーから除外されていることをユーザに示すことができる。一方、ＵＮＣＯＶＥＲＥＤ＿ＰＡＴＨ＿ＳＥＴが存在する場合は、システム知識１０４、攻撃知識１０５等に欠陥があるために、該当するパスが評価ツリーから漏れている可能性があることをユーザに示すことができる。
【００５３】
＊＊＊その他＊＊＊
実施の形態１では、評価ツリー生成部１０１が評価ツリーを生成することになっている。これに代えて、網羅性評価装置１００の外部の機器が、評価ツリー生成部１０１と同様の手法で評価ツリーを生成するようにしてもよい。この場合は、網羅性評価装置１００には、外部で生成された評価ツリーを取得する構成（評価ツリー取得部）が設けられる。評価ツリー取得部は、第１のアタックツリー取得部に相当する。
【００５４】
また、実施の形態２では、失敗ツリー生成部１０３３が失敗ツリーを生成することになっている。これに代えて、網羅性評価装置１００の外部の機器が、失敗ツリー生成部１０３３と同様の手法で失敗ツリーを生成するようにしてもよい。この場合は、網羅性評価装置１００には、外部で生成された失敗ツリーを取得する構成（失敗ツリー取得部）が設けられる。
【００５５】
以上、本発明の実施の形態について説明したが、これら２つの実施の形態を組み合わせて実施しても構わない。
あるいは、これら２つの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これら２つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【００５６】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、網羅性評価装置１００のハードウェア構成の補足説明を行う。
図１に示すプロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図１に示す主記憶装置９０２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
図１に示す補助記憶装置９０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図１に示す通信デバイス９０４は、データの通信処理を実行する電子回路である。
通信デバイス９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００５７】
また、補助記憶装置９０３には、ＯＳも記憶されている。
そして、ＯＳの少なくとも一部が主記憶装置９０２にロードされ、プロセッサ９０１により実行される。
プロセッサ９０１はＯＳの少なくとも一部を実行しながら、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の機能を実現するプログラムを実行する。
プロセッサ９０１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、主記憶装置９０２、補助記憶装置９０３、プロセッサ９０１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記録媒体に格納されていてもよい。
【００５８】
また、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、網羅性評価装置１００は、処理回路により実現されてもよい。処理回路は、例えば、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
この場合は、評価ツリー生成部１０１、ゴールドツリー生成部１０２及びツリー比較部１０３は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【符号の説明】
【００５９】
１００  網羅性評価装置、１０１  評価ツリー生成部、１０２  ゴールドツリー生成部、１０３  ツリー比較部、１０４  システム知識、１０５  攻撃知識、１０６  初期侵攻テンプレート、１０７  侵攻手順テンプレート、１０８  侵攻手順変換テーブル、９０１  プロセッサ、９０２  主記憶装置、９０３  補助記憶装置、９０４  通信デバイス、９０５  キーボード、９０６  マウス、９０７  ディスプレイ、１０２１  ネットワーク網羅部、１０２２  テンプレート適用部、１０３１  パス抽出部、１０３２  パス比較部、１０３３  失敗ツリー生成部。
【図１】
0006847326.tif 000002
【図２】
0006847326.tif 000003
【図３】
0006847326.tif 000004
【図４】
0006847326.tif 000005
【図５】
0006847326.tif 000006
【図６】
0006847326.tif 000007
【図７】
0006847326.tif 000008
【図８】
0006847326.tif 000009
【図９】
0006847326.tif 000010
【図１０】
0006847326.tif 000011
【図１１】
0006847326.tif 000012
【図１２】
0006847326.tif 000013
【図１３】
0006847326.tif 000014
【図１４】
0006847326.tif 000015
【図１５】
0006847326.tif 000016
【図１６】
0006847326.tif 000017
【図１７】
0006847326.tif 000018
【図１８】
0006847326.tif 000019
【図１９】
0006847326.tif 000020
【図２０】
0006847326.tif 000021
【図２１】
0006847326.tif 000022
【図２２】
0006847326.tif 000023
【図２３】
0006847326.tif 000024
【図２４】
0006847326.tif 000025
【図２５】
0006847326.tif 000026
【図２６】
0006847326.tif 000027
【図２７】
0006847326.tif 000028
【図２８】
0006847326.tif 000029