(57)【特許請求の範囲】
【請求項１】
互いにデータを送受信する複数の装置からなるシステムに適用されて、ホワイトリスト型侵入検知を行うために、システム状態に対応するホワイトリストを生成するホワイトリスト生成器であって、
入力されたモデルであるステートマシンに対してシミュレーションまたは形式手法と呼ばれる数学的に正確さが証明される手法によって、前記ステートマシンに論理的な矛盾がないことを検証することで、前記システムにおける正常通信が正しくモデル化されているか否かを検証するモデル検証部と、
前記システム状態に対応して前記ステートマシンに論理的な矛盾がないことが検証されたステートマシンを前記ホワイトリストに変換することで、前記システム状態に対応する前記ホワイトリストに変換するモデル変換部と、
を備えたホワイトリスト生成器。
【請求項２】
前記モデル変換部は、前記ステートマシンから、前記システムの状態に基づいて前記ホワイトリストを生成する
請求項１に記載のホワイトリスト生成器。
【請求項３】
前記モデル検証部は、前記ステートマシンの検証結果に基づいて、必要に応じて前記ステートマシンを改善する
請求項１または請求項２に記載のホワイトリスト生成器。
【請求項４】
前記ホワイトリストをステートマシンに変換する第１ホワイトリスト変換部をさらに備えた
請求項１から請求項３までのいずれか１項に記載のホワイトリスト生成器。
【請求項５】
互いにデータを送受信する複数の装置からなるシステムに適用されて、ホワイトリスト型侵入検知を行うために、システム状態に対応するホワイトリストを生成するホワイトリスト生成方法であって、
入力されたモデルであるステートマシンに対してシミュレーションまたは形式手法と呼ばれる数学的に正確さが証明される手法によって、前記ステートマシンに論理的な矛盾がないことを検証することで、前記システムにおける正常通信が正しくモデル化されているか否かを検証するモデル検証ステップと、
前記システム状態に対応して前記ステートマシンに論理的な矛盾がないことが検証されたステートマシンを前記ホワイトリストに変換することで、前記システム状態に対応する前記ホワイトリストに変換するモデル変換ステップと、
を備えたホワイトリスト生成方法。
【請求項６】
前記モデル変換ステップでは、前記ステートマシンから、前記システムの状態に基づいて前記ホワイトリストを生成する
請求項５に記載のホワイトリスト生成方法。
【請求項７】
前記モデル検証ステップでは、前記ステートマシンの検証結果に基づいて、必要に応じて前記ステートマシンを改善する
請求項５または請求項６に記載のホワイトリスト生成方法。
【請求項８】
前記ホワイトリストをステートマシンに変換する第１ホワイトリスト変換ステップをさらに備えた
請求項５から請求項７までのいずれか１項に記載のホワイトリスト生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、産業制御システムのように運用形態が固定的なシステムにおいて、適切にホワイトリスト型侵入検知を行うためのホワイトリスト生成器、ホワイトリスト評価器およびホワイトリスト生成・評価器、並びにホワイトリスト生成方法、ホワイトリスト評価方法およびホワイトリスト生成・評価方法に関する。
【背景技術】
【０００２】
近年、産業制御システムに対するサイバー攻撃が増加していることから、対策が求められている。ネットワークからのサイバー攻撃を防ぐ技術として、ホワイトリスト型侵入検知技術が知られている。この技術は、通信を許可するパケットをあらかじめホワイトリストと呼ばれるリストに定義し、それ以外のパケットを受信した場合に、攻撃として検知するものである。
【０００３】
産業制御システムは、一般的な情報システムと比較して運用形態が固定的であり、送受信されるパケットが固定的であるため、通信を許可するパケットをあらかじめホワイトリストとして定義することが可能と考えられる。そのため、産業制御システムにおけるサイバー攻撃対策として、ホワイトリスト型侵入検知技術に対する期待が高まっている。
【０００４】
なお、ホワイトリスト型侵入検知では、ホワイトリストの生成コストおよびホワイトリストの精度が課題であり、ホワイトリストの生成コストの削減や、正確なホワイトリストの生成を実現することができる技術が求められている。ここで、ホワイトリストの生成コストの削減に関連する技術として、自動生成がある。
【０００５】
ホワイトリストを自動生成する技術として、周期性を持つ通信パターンを決定性有限オートマトンでモデル化し、そのモデルをホワイトリストとする方法が提案されている（例えば、非特許文献１参照）。このモデルは、１００パケット程度のサンプルを用いて自動生成されるため、ホワイトリストの生成コストを低く抑えることができる。
【０００６】
また、ホワイトリストを自動生成する技術として、ＩＥＣ６１８５０によって規定される変電所の制御システムにおいて、システムの仕様がＳＣＤ（Ｓｕｂｓｔａｔｉｏｎ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄｅｓｃｒｉｐｔｉｏｎ）と呼ばれる形式のファイルに記述されることに注目し、このＳＣＤファイルに基づいてホワイトリストを自動生成する方法が提案されている（例えば、非特許文献２参照）。
【０００７】
ＳＣＤが決まったファイル形式であることから、通信パターンに関するデータを自動的に抽出することが可能であり、したがって、ホワイトリストを自動的に生成することが可能となる。また、生成の自動化によってホワイトリストの生成コストを削減することができ、同時に、手動で生成する場合と比較してミスが混入しにくいため、ホワイトリストの正確さを向上させることができる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｇｏｌｄｅｎｂｅｒｇ他著、「Ａｃｃｕｒａｔｅ  Ｍｏｄｅｌｉｎｇ  ｏｆ  Ｍｏｄｂｕｓ／ＴＣＰ  ｆｏｒ  Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  ｉｎ  ＳＣＡＤＡ  Ｓｙｓｔｅｍｓ」、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｒｉｔｉｃａｌ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  Ｐｒｏｔｅｃｔｉｏｎ，ｖｏｌ．６，ｎｏ．２，２０１３年
【非特許文献２】Ｈａｄｅｌｉ他著、「Ｌｅｖｅｒａｇｉｎｇ  Ｄｅｔｅｒｍｉｎｉｓｍ  ｉｎ  Ｉｎｄｕｓｔｒｉａｌ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ａｄｖａｎｃｅｄ  Ａｎｏｍａｌｙ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｒｅｌｉａｂｌｅ  Ｓｅｃｕｒｉｔｙ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ」、ＩＥＥＥ  ＥＴＦＡ  ２００９、２００９年
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、非特許文献１では、観測したパケットに基づいてホワイトリストを生成しているため、観測したパケットの網羅性に疑問が残り、また、観測期間中に攻撃パケットが混入する可能性があるという問題がある。
【００１０】
また、非特許文献２では、自動生成の元となるＳＣＤファイルの作成時にミスが混入する可能性があり、結果としてホワイトリストの定義のミスが生じる恐れがあるという問題がある。また、実装された侵入検知プログラムが、ホワイトリストの定義通りに検知することが保証されていないという問題もある。
【００１１】
この発明は、上記のような課題を解決するためになされたものであり、自動生成の元となる正常通信の仕様に関するデータの正確さを保証し、ホワイトリストの生成フロー全体を通して、生成されるホワイトリストの正確さを保証することができるホワイトリスト生成器、ホワイトリスト評価器およびホワイトリスト生成・評価器、並びにホワイトリスト生成方法、ホワイトリスト評価方法およびホワイトリスト生成・評価方法を得ることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係るホワイトリスト生成器は、互いにデータを送受信する複数の装置からなるシステムに適用されて、ホワイトリスト型侵入検知を行うために、システム状態に対応するホワイトリストを生成するホワイトリスト生成器であって、入力されたモデルであるステートマシンに対してシミュレーションまたは形式手法と呼ばれる数学的に正確さが証明される手法によって、前記ステートマシンに論理的な矛盾がないことを検証することで、システムにおける正常通信が正しくモデル化されているか否かを検証するモデル検証部と、システム状態に対応してステートマシンに論理的な矛盾がないことが検証されたステートマシンをホワイトリストに変換することで、システム状態に対応するホワイトリストに変換するモデル変換部とを備えたものである。
【発明の効果】
【００１３】
この発明に係るホワイトリスト生成器によれば、互いにデータを送受信する複数の装置からなるシステムに適用されて、ホワイトリスト型侵入検知を行うためのホワイトリストを生成するためのものであって、入力されたモデルに基づいて、システムにおける正常通信が正しくモデル化されているか否かを検証するモデル検証部と、モデルに論理的な矛盾がないことが検証されたモデルをホワイトリストに変換するモデル変換部とを備えている。
そのため、自動生成の元となる正常通信の仕様に関するデータの正確さを保証し、ホワイトリストの生成フロー全体を通して、生成されるホワイトリストの正確さを保証することができる。
【図面の簡単な説明】
【００１４】
【図１】この発明の適用対象となる産業制御システムを示すブロック構成図である。
【図２】この発明の実施の形態１に係るホワイトリスト生成器を示すブロック構成図である。
【図３】この発明の実施の形態１に係るホワイトリスト生成器の入力となるモデルを示す概略図である。
【図４】この発明の実施の形態１に係るホワイトリスト生成器のステートマシンの具体例を示す説明図である。
【図５】図４で記述された正常通信のモデルに対応するホワイトリストの具体例を示す説明図である。
【図６Ａ】この発明の実施の形態１に係るホワイトリスト生成器において、システム状態に基づいてホワイトリストを生成する動作を示す説明図である。
【図６Ｂ】この発明の実施の形態１に係るホワイトリスト生成器において、システム状態に基づいてホワイトリストを生成する動作を示すフローチャートである。
【図７】この発明の実施の形態１に係るホワイトリスト生成器の動作を示すフローチャートである。
【図８】この発明の実施の形態１に係るホワイトリスト生成器を示すハードウェア構成図である。
【図９】この発明の実施の形態２に係るホワイトリスト生成器を示すブロック構成図である。
【図１０】この発明の実施の形態２に係るホワイトリスト生成器の動作を示すフローチャートである。
【図１１】この発明の実施の形態３に係るホワイトリスト評価器を示すブロック構成図である。
【図１２】図５に示したホワイトリストを木構造で示した説明図である。
【図１３】この発明の実施の形態３に係るホワイトリスト評価器における、判定対象のパケットに対する検知プログラムの動作を示す説明図である。
【図１４】この発明の実施の形態３に係るホワイトリスト評価器における、判定対象のパケットに対する検知プログラムの動作を示す別の説明図である。
【図１５】この発明の実施の形態３に係るホワイトリスト評価器における、ホワイトリスト評価・改善部の動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、この発明に係るホワイトリスト生成器、ホワイトリスト評価器およびホワイトリスト生成・評価器の好適な実施の形態につき図面を用いて説明するが、各図において同一、または相当する部分については、同一符号を付して説明する。
【００１６】
実施の形態１．
図１は、この発明の適用対象となる産業制御システムを示すブロック構成図である。図１において、この産業制御システムでは、監視制御端末１０２とコントローラ１０４およびコントローラ１０５とが、保守ネットワーク１０３を介して互いに接続されており、監視制御端末１０２は、保守ネットワーク１０３を介して、コントローラ１０４およびコントローラ１０５の監視制御を行う。
【００１７】
また、監視制御端末１０２は、情報系ネットワーク１０１に接続されており、コントローラ１０４およびコントローラ１０５から収集した情報を、情報系ネットワーク１０１に接続される図示しないサーバ等に送信することができる。
【００１８】
また、ホワイトリスト型侵入検知部１０６は、保守ネットワーク１０３に接続されており、保守ネットワーク１０３で送受信される通信パケットに対して侵入検知を行うことができる。ここで、ホワイトリスト型侵入検知部１０６が侵入検知を行うためのルール、すなわちホワイトリストの生成が必要となる。
【００１９】
図２は、この発明の実施の形態１に係るホワイトリスト生成器を示すブロック構成図である。図２において、ホワイトリスト生成器２０１は、モデル２０２を入力とし、ホワイトリスト２０４を出力とする。また、ホワイトリスト生成器２０１は、モデル変換部２０３およびモデル検証部２０５を備えている。
【００２０】
モデル変換部２０３は、入力されたモデル２０２をホワイトリストに変換して出力する。モデル検証部２０５は、入力されたモデル２０２を検証し、検証結果をフィードバックすることで、必要に応じてモデル２０２を改善する。また、モデル検証部２０５は、改善されたモデル２０２を出力することもできる。
【００２１】
図３は、この発明の実施の形態１に係るホワイトリスト生成器の入力となるモデルを示す概略図である。図３は、図１に示したような産業制御システムをモデル化したものであり、装置Ａ３０１および装置Ｂ３０２は、それぞれ例えば監視制御端末１０２およびコントローラ１０４に対応している。
【００２２】
装置Ａ３０１と装置Ｂ３０２とは、通信で互いに接続され、例えば装置Ａ３０１から装置Ｂ３０２にコマンドが送信され、装置Ｂ３０２でコマンドに対応する処理が行われ、装置Ｂ３０２から装置Ａ３０１にコマンドに対する処理の結果が送信される。
【００２３】
装置Ａ３０１および装置Ｂ３０２には、それぞれ図示されるようなブロックによって制御ロジック３０３および制御ロジック３０４が定義されている。また、制御ロジック３０３および制御ロジック３０４の中には、それぞれ図示されるような通信の動作を定義したステートマシン３０５およびステートマシン３０６が含まれており、産業制御システムにおける正常通信がモデル化される。
【００２４】
この発明では、制御ロジック３０３および制御ロジック３０４は処理の対象とせず、ステートマシン３０５およびステートマシン３０６で示されるような正常通信のモデルを処理の対象とする。また、これ以降、ステートマシンのことをモデルと表記することもある。
【００２５】
図４は、この発明の実施の形態１に係るホワイトリスト生成器のステートマシンの具体例を示す説明図である。図４において、ステートマシン４０１は、装置Ａ３０１に対応し、ステートマシン４０２は、装置Ｂ３０２に対応している。また、ステートマシン４０１とステートマシン４０２との間は互いに接続され、データの送受信が可能になっている。
【００２６】
ステートマシン４０１を構成する状態は、状態４０３のようなシステム状態を表すものと、状態４０５のようなデータ送受信状態を表すものとがある。図４では、システム状態を表すものを二重引用符付きで表記し、データ送受信状態を表すものを二重引用符なしで表記しているが、両者を区別できれば、どのような表記であってもよい。
【００２７】
図４では、状態４０３、状態４０４、状態４０７で示されるように、システム状態が「停止」、「運転」、「異常」の３種類ある。システムの停止中は、「停止」の状態４０３にあり、システムが運転を開始すると「運転」の状態４０４に遷移する。また、システムで異常が発生すると「異常」の状態４０７に遷移する。
【００２８】
通常は、「運転」の状態４０４で待機し、何らかのトリガーによって状態４０５に遷移し、データ送受信が開始されて、一連のデータ送受信が終了すると、再び「運転」の状態４０４に戻る。トリガーは、例えば図１の監視制御端末１０２の操作盤上で、コントローラ１０４のステータス取得のために、ＧＵＩ操作が行われたこと等に対応する。
【００２９】
図４において、ステートマシン４０１からステートマシン４０２へのコマンド送受信は、次のようにして発生する。図４では、状態遷移のトリガーとなる条件を角括弧で表記し、状態遷移の際に発生するアクションを波括弧で表記している。
【００３０】
始めに、ステートマシン４０１およびステートマシン４０２は、ともに「運転」の状態で待機しているとする。ここで、ステートマシン４０１においてトリガーである「ステータス取得」が満たされると、状態４０４から状態４０５に遷移する。その際、状態遷移のアクションとして記述された「Ｗｒｉｔｅ送信」が実行されることによって、「Ｗｒｉｔｅ」コマンドがステートマシン４０２に送信される。
【００３１】
次に、ステートマシン４０２は、ステートマシン４０１から送信された「Ｗｒｉｔｅ」コマンドを受け取り、トリガーとして記述された「Ｗｒｉｔｅ受信」が満たされ、状態４０８から４０９に遷移する。その際、状態遷移のアクションとして記述された「Ｗｒｉｔｅ応答送信」が実行されることで、ステートマシン４０２からステートマシン４０１に「Ｗｒｉｔｅ応答」コマンドが送信される。
【００３２】
続いて、ステートマシン４０１は、ステートマシン４０２から送信された「Ｗｒｉｔｅ応答」コマンドを受け取り、トリガーとして記述された「Ｗｒｉｔｅ応答受信」が満たされ、状態４０５から状態４０６に遷移する。以下、同様にして、ステートマシン４０１とステートマシン４０２との間で、コマンドおよびその応答の送受信が繰り返され、最終的にそれぞれ状態４０４および状態４０８に戻る。
【００３３】
図５は、図４で記述された正常通信のモデルに対応するホワイトリストの具体例を示す説明図である。図５において、ホワイトリストは、状態５０１、送信元５０２、送信先５０３およびコマンド５０４の４種類のフィールドで構成されている。
【００３４】
ここで、状態５０１は、図４におけるシステム状態に対応して決定される。また、送信元５０２および送信先５０３は、図４でデータが送受信される際の送信元および送信先に対応して決定される。また、コマンド５０４は、図４でアクションとして送信されるコマンドに対応して決定される。
【００３５】
なお、図４および図５の具体例は、状態、送信元、送信先、コマンドの４種類のフィールドから構成されるホワイトリストに対応しているが、ホワイトリストがこれら以外のフィールドから構成されていてもよい。
【００３６】
続いて、図２に示したホワイトリスト生成器２０１におけるモデル変換部２０３およびモデル検証部２０５の動作について説明する。モデル変換部２０３は、図４と図５との対応関係に従って、ステートマシンからホワイトリストへの変換を実現する。モデル検証部２０５は、モデルベース開発で一般的に行われるモデルのシミュレーションや、形式手法と呼ばれる数学的に正確さが証明される手法によってモデルの検証を実現する。
【００３７】
次に、システム状態に基づいてホワイトリストを生成する動作を以下に説明する。図６Ａは、この発明の実施の形態１に係るホワイトリスト生成器において、システム状態に基づいてホワイトリストを生成する動作を示す説明図である。
【００３８】
図６Ａにおいて、ステートマシン６０１によって模式的に記述されるように、システム状態によって送受信されるコマンドは変化し、したがって、許可すべきコマンドは変化する。
【００３９】
そこで、コマンド送受信６０２、６０３、６０４に示されるように、ステートマシンに記述されたコマンド送受信がどのシステム状態に属するかを分類し、その分類に基づいて各システム状態で許可するコマンドを抽出することによって、システム状態に基づくホワイトリストが生成される。
【００４０】
図６Ｂは、この発明の実施の形態１に係るホワイトリスト生成器において、システム状態に基づいてホワイトリストを生成する動作を示すフローチャートである。図６Ｂにおいて、まず、ステートマシンが入力される（ステップＳ６０５）。
【００４１】
続いて、各システム状態Ｓに関するループ処理が行われる（ステップＳ６０６〜ステップＳ６０９）。まず、システム状態Ｓを根とする深さ優先探索が行われる（ステップＳ６０７）。
【００４２】
一般に、深さ優先探索では、探索済みのノードを見つけた場合に探索をさかのぼるが、ステップＳ６０７では、それに加えて、システム状態Ｓ以外のシステム状態を見つけた場合も探索をさかのぼることとする。
【００４３】
続いて、探索中に見つかったコマンドにＳの印を付ける（ステップＳ６０８）。これにより、そのコマンドがシステム状態Ｓで許可されるコマンドであることが表される。以上により、システム状態に基づくホワイトリストが生成される。
【００４４】
図７は、この発明の実施の形態１に係るホワイトリスト生成器の動作を示すフローチャートである。図７において、まず、モデルが入力される（ステップＳ７０１）。続いて、モデルが検証される（ステップＳ７０２）。
【００４５】
次に、モデルの検証結果が良好であるか否かが判定される（ステップＳ７０３）。ここで、モデルの検証結果が良好でない（すなわち、Ｙｅｓ）と判定された場合には、検証結果に基づいてモデルが改善され（ステップＳ７０４）、ステップＳ７０３に戻って再びモデルが検証される。
【００４６】
一方、ステップＳ７０３において、モデルの検証結果が良好である（すなわち、Ｎｏ）と判定された場合には、モデルに含まれる状態遷移のアクションの記述から、コマンド送信の記述が抽出される（ステップＳ７０５）。続いて、ステップＳ７０５で抽出されたコマンドを許可するルールが作成され、ホワイトリストとして出力されて（ステップＳ７０６）、図７の処理が終了する。
【００４７】
図８は、この発明の実施の形態１に係るホワイトリスト生成器を示すハードウェア構成図である。図８において、ホワイトリスト生成器８０１は、ＣＰＵ８０２、主記憶装置８０３、補助記憶装置８０４、入力インターフェース８０６、表示インターフェース８０７およびネットワークインターフェース８０８から構成され、これらがバス８０５によって接続されている。
【００４８】
図２に示したホワイトリスト生成器２０１に対して入力されるモデル２０２や出力されるホワイトリスト２０４は、例えば補助記憶装置８０４に格納され、必要に応じて主記憶装置８０３に転送され、ＣＰＵ８０２による処理対象となる。また、図２に示したホワイトリスト生成器２０１におけるモデル変換部２０３やモデル検証部２０５の処理は、ＣＰＵ８０２によって処理される。
【００４９】
このように、システムの正常通信を検証可能なモデルで表し、検証によってモデルの正確さを保証し、正確さが保証されたモデルからホワイトリストを自動的に生成することによって、手動でホワイトリストを生成するのに必要となるコストを削減し、手動でホワイトリストを生成する場合に発生するミスを防止することに加え、ホワイトリストの正確さを向上させることができる。
【００５０】
以上のように、実施の形態１によれば、互いにデータを送受信する複数の装置からなるシステムに適用されて、ホワイトリスト型侵入検知を行うためのホワイトリストを生成するためのものであって、入力されたモデルに基づいて、システムにおける正常通信が正しくモデル化されているか否かを検証するモデル検証部と、モデルに論理的な矛盾がないことが検証されたモデルをホワイトリストに変換するモデル変換部とを備えている。
そのため、自動生成の元となる正常通信の仕様に関するデータの正確さを保証し、ホワイトリストの生成フロー全体を通して、生成されるホワイトリストの正確さを保証することができる。
【００５１】
実施の形態２．
上記実施の形態１では、図４に示したステートマシンと図５に示したホワイトリストとの対応関係により、モデルをホワイトリストに変換する方法について説明したが、これとは逆に、ホワイトリストをモデルに変換することも可能である。
【００５２】
図９は、この発明の実施の形態２に係るホワイトリスト生成器を示すブロック構成図である。図９において、ホワイトリスト生成器９０１は、ホワイトリスト９０６を入力とし、モデル９０２を出力とする。また、ホワイトリスト生成器９０１は、ホワイトリスト変換部（第１ホワイトリスト変換部）９０３、モデル変換部９０４およびモデル検証部９０５を備えている。
【００５３】
ホワイトリスト変換部９０３は、入力されたホワイトリスト９０６をモデルに変換して出力する。モデル検証部９０５は、変換されたモデルを検証し、検証結果をフィードバックすることで、必要に応じてモデルを改善し、モデル９０２として出力する。また、モデル変換部９０４は、改善されたモデルをホワイトリストに変換し、改善されたホワイトリスト９０６として出力する。
【００５４】
図１０は、この発明の実施の形態２に係るホワイトリスト生成器の動作を示すフローチャートである。図１０において、まず、ホワイトリストが入力される（ステップＳ１００１）。
【００５５】
続いて、ホワイトリストで許可されているコマンドの送信を表すアクションが作成される（ステップＳ１００２）。次に、アクションを持つ状態遷移が作成され、その状態遷移を含むモデルが作成される（ステップＳ１００３）。
【００５６】
続いて、モデルが検証される（ステップＳ１００４）。次に、モデルの検証結果が良好であるか否かが判定される（ステップＳ１００５）。ここで、モデルの検証結果が良好でない（すなわち、Ｙｅｓ）と判定された場合には、検証結果に基づいてモデルが改善され（ステップＳ１００６）、ステップＳ１００４に戻って再びモデルが検証される。
【００５７】
一方、ステップＳ１００５において、モデルの検証結果が良好である（すなわち、Ｎｏ）と判定された場合には、モデルに含まれる状態遷移のアクションの記述から、コマンド送信の記述が抽出される（ステップＳ１００７）。続いて、ステップＳ１００７で抽出されたコマンドを許可するルールが作成され、ホワイトリストとして出力されて（ステップＳ１００８）、図１０の処理が終了する。
【００５８】
このように、ホワイトリストを検証可能なモデルに変換し、モデルの検証によってモデルのミスを発見、修正し、それを再度ホワイトリストに変換することによって、既存のホワイトリストに対しても正確さを向上させることができる。
【００５９】
実施の形態３．
上記実施の形態１および実施の形態２では、適用対象となる産業制御システムをモデル化し、モデル化された正常通信からホワイトリストを生成する場合の実施の形態について説明した。
【００６０】
これに対して、生成されたホワイトリストの性能を評価し、評価結果に基づきホワイトリストを改善することが考えられる。そこで、この発明の実施の形態３では、実パケットまたはパケットダンプデータを用いてホワイトリストの性能を評価し、改善する場合の実施の形態について説明する。
【００６１】
図１１は、この発明の実施の形態３に係るホワイトリスト評価器を示すブロック構成図である。図１１において、ホワイトリスト評価器１１０１は、木探索プログラム１１０２、ホワイトリスト１１０３およびパケットデータ１１０４を入力とし、検知プログラム１１１１およびホワイトリスト１１１２を出力とする。
【００６２】
また、ホワイトリスト評価器１１０１は、検知プログラム生成部１１０５、検知プログラム検証部１１０６、ホワイトリスト変換部（第２ホワイトリスト変換部）１１０８、ホワイトリスト評価・改善部１１０９、木構造変換部１１１０を備えている。また、検知プログラム生成部１１０５によって生成される検知プログラム１１０７が、主記憶装置等に記憶された状態で存在する。
【００６３】
ホワイトリスト変換部１１０８は、入力されたリスト形式のホワイトリスト１１０３を木構造に変換し、検知プログラム生成部１１０５に出力する。また、木探索プログラム１１０２も検知プログラム生成部１１０５に入力される。検知プログラム生成部１１０５は、これらを統合し、ホワイトリスト型検知プログラムを生成する。
【００６４】
検知プログラム検証部１１０６は、生成された検知プログラム１１０７を検証し、検証結果をフィードバックすることで、必要に応じて検知プログラムを改善し、改善された検知プログラム１１１１として出力する。
【００６５】
ホワイトリスト評価・改善部１１０９は、検知プログラム１１０７およびパケットデータ１１０４を入力とし、ホワイトリストの性能を評価し、必要に応じてホワイトリストを改善し、改善されたホワイトリストを木構造変換部１１１０に出力する。なお、この段階では、ホワイトリストは木構造として表されているため、木構造変換部１１１０によって元の形式に逆変換され、ホワイトリスト１１１２として出力される。
【００６６】
以下、図１２〜図１４を参照しながら、図１１に示した検知プログラム生成部１１０５、検知プログラム検証部１１０６、ホワイトリスト変換部１１０８および木構造変換部１１１０の動作について説明する。
【００６７】
図１２は、図５に示したホワイトリストを木構造で示した説明図である。図１２において、この木構造は、ホワイトリストの各フィールドに従って枝が分岐するようにして作成されている。
【００６８】
まず、「状態」のフィールド１２０１に従って、根から「停止」、「運転」、「異常」の３通りに枝が分岐する。次に、「送信元」のフィールド１２０２に従って、枝が分岐する。図５に示したホワイトリストでは、「状態」が「運転」である場合に、「送信元」が「ＩＰアドレスＡ」または「ＩＰアドレスＢ」の２通りの値を取るため、図１２の木構造では、「運転」の下で枝が「ＩＰアドレスＡ」と「ＩＰアドレスＢ」との２通りに分岐する。
【００６９】
以下、同様にして、「送信先」のフィールド１２０３と「コマンド」のフィールド１２０４によってさらに枝が分岐し、ホワイトリストが表される。このようにして、ホワイトリスト変換部１１０８が実現され、また、この逆の動作として木構造変換部１１１０が実現される。
【００７０】
また、上記のようにして生成されるホワイトリストの木を、木探索プログラムで探索することによって、ホワイトリスト型検知プログラムが実現される。したがって、木探索プログラムとホワイトリストの木とを統合することにより、検知プログラムが生成される。これにより、図１１に示した検知プログラム生成部１１０５が実現される。
【００７１】
図１３は、この発明の実施の形態３に係るホワイトリスト評価器における、判定対象のパケットに対する検知プログラムの動作を示す説明図である。図１３には、現在のシステム状態１３０１、判定対象のパケット１３０２および検知プログラム１３０７が表されている。検知プログラム１３０７で示しているように、このプログラムは、木探索プログラムと木構造のホワイトリストとを合わせたものである。
【００７２】
図１３において、パケット１３０２が検知プログラム１３０７に入力されると、まず、現在のシステム状態１３０１が「運転」であるため、ホワイトリストの木の探索において、枝１３０３が選択される。
【００７３】
次に、パケット１３０２の「送信元」が「ＩＰアドレスＡ」であるため、枝１３０４が選択される。以下、同様にして、枝１３０５および枝１３０６が順に選択され、木の探索に成功する。このように、木の探索に成功した場合、パケットが許可される。
【００７４】
図１４は、この発明の実施の形態３に係るホワイトリスト評価器における、判定対象のパケットに対する検知プログラムの動作を示す別の説明図である。図１４では、別のパケット１４０１に対する検知プログラムの動作を表している。
【００７５】
図１４において、パケット１４０１に対してホワイトリストの木探索を行うと、「送信先」のフィールドが「ＩＰアドレスＣ」であるため、「送信先」の分岐で探索がエラー１４０２となる。このように、木の探索に失敗した場合、パケットは拒否される。
【００７６】
図１１に示した検知プログラム検証部１１０６は、検知プログラムの正確さを検証するものであるが、上述したように、検知プログラムは木探索プログラムによって実現されているため、木探索プログラムの正確さを検証すれば十分である。また、木探索は単純なアルゴリズムであるため、木探索プログラムのソースコードに対して、Ｆｒａｍａ−Ｃ等の形式手法を組み込んだ静的解析ツールを利用し、木探索が満たすべき機能を検証することは容易である。
【００７７】
図１５は、この発明の実施の形態３に係るホワイトリスト評価器における、ホワイトリスト評価・改善部の動作を示すフローチャートである。図１５において、まず、パケットデータが入力される（ステップＳ１５０１）。
【００７８】
続いて、各パケットに対する検知プログラムの判定結果が評価され、必要に応じてホワイトリストが修正されるループ処理が行われる（ステップＳ１５０２〜ステップＳ１５０５）。まず、パケットが検知プログラムに入力される（ステップＳ１５０３）。続いて、パケットに対する検知プログラムの判定結果に応じて、ホワイトリストの木が修正される（ステップＳ１５０４）。
【００７９】
具体的には、例えば、パケットに対して期待される判定結果を補助的な入力として与え、検知プログラムの判定結果が期待される判定結果と異なる場合に、判定プログラムは正しいことが保証されているため、ホワイトリストに誤りがあることが分かる。そこで、期待される判定結果が得られるように、ホワイトリストの木を修正する。
【００８０】
次に、ステップＳ１５０２〜ステップＳ１５０５のループ処理の後、修正されたホワイトリストが出力されて（ステップＳ１５０６）、図１５の処理が終了する。
【００８１】
以上のように、ホワイトリストを動作の正確さが保証された検知プログラムと組み合わせ、実パケットに対する検知の判定結果に基づきホワイトリストを修正することで、モデルには現れない要件定義のミス等さらに高度なミスを防ぐことができる。
【００８２】
実施の形態４．
この発明の実施の形態４では、上記実施の形態２と実施の形態３とを組み合わせた実施の形態について説明する。
【００８３】
まず、実施の形態３の効果として示したように、正確さが保証された検知プログラムと実パケットとを用いてホワイトリストを評価することにより、モデルのレベルでは現れない要件定義のミス等に起因するホワイトリストのミスを修正することができる。
【００８４】
このようにして、より正確さが向上したホワイトリストを、実施の形態２に示したホワイトリストからモデルへの変換に適用し、より正確なモデルの生成のために利用することができる。
【００８５】
このように、モデルには現れないミスをホワイトリストの評価によって発見し、ホワイトリストを修正し、修正されたホワイトリストをモデルに変換することによって、モデルの品質を高めることができる。
【符号の説明】
【００８６】
２０１  ホワイトリスト生成器、２０３  モデル変換部、２０５  モデル検証部、９０３  ホワイトリスト変換部（第１ホワイトリスト変換部）、１１０１  ホワイトリスト評価器、１１０５  検知プログラム生成部、１１０６  検知プログラム検証部、１１０８  ホワイトリスト変換部（第２ホワイトリスト変換部）、１１０９  ホワイトリスト評価・改善部、１１１０  木構造変換部。
【図１】
0006516923.tif 000002
【図２】
0006516923.tif 000003
【図３】
0006516923.tif 000004
【図４】
0006516923.tif 000005
【図５】
0006516923.tif 000006
【図６Ａ】
0006516923.tif 000007
【図６Ｂ】
0006516923.tif 000008
【図７】
0006516923.tif 000009
【図８】
0006516923.tif 000010
【図９】
0006516923.tif 000011
【図１０】
0006516923.tif 000012
【図１１】
0006516923.tif 000013
【図１２】
0006516923.tif 000014
【図１３】
0006516923.tif 000015
【図１４】
0006516923.tif 000016
【図１５】
0006516923.tif 000017