(57)【要約】【課題】機器の異常検出時に波及範囲を抑えながらセキュリティ対策を実施する。【解決手段】第１のデータと、前記第１のデータに起因して発生する第２のデータとを送受信する通信装置であって、前記記憶装置は、前記第１のデータの通信を制御するためのアクセスリストと、関連する識別情報群を管理するためのグルーピングデータベースと、前記第１のデータの識別情報と前記第２のデータの識別情報とを対応づける対応データベースとを有し、前記通信装置は、前記第２のデータの異常を検出すると、前記対応データベースを参照して、前記異常が検出された第２のデータに対応する第１のデータを特定し、前記グルーピングデータベースを参照して、前記特定された第１のデータと関連する前記第１のデータの識別情報群を決定し、前記アクセスリストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定する。【選択図】図２
2017216569.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータと、前記第１のデータに起因して発生する第２のデータとを送受信する通信装置であって、
記憶装置と、データを送受信するインタフェースとを備え、
前記記憶装置は、
受信した前記第１のデータの識別情報を保持し、前記第１のデータの通信を制御するためのアクセスリストと、
前記第１のデータの識別情報のうち、関連する識別情報群を管理するためのグルーピングデータベースと、
前記第１のデータの識別情報と前記第２のデータの識別情報とを対応づける対応データベースとを有し、
前記通信装置は、
前記第２のデータの異常を検出すると、前記対応データベースを参照して、前記異常が検出された第２のデータに対応する第１のデータを特定し、
前記グルーピングデータベースを参照して、前記特定された第１のデータと関連する前記第１のデータの識別情報群を決定し、
前記アクセスリストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定することを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記第１のデータは、機器を制御するためのコマンドを含み、
前記第２のデータは、前記機器を監視するセンサから出力されるセンサデータを含むことを特徴とする通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記異常が検出された第２のデータに対応する第１のデータと関連する識別情報群について、機器の動作を停止するコマンドを含む第１のデータを送信することを特徴とする通信装置。
【請求項４】
請求項１に記載の通信装置であって、
前記アクセスリストは、通信を制御する優先度が異なる複数の制御リストを含み、
前記通信装置は、通信を通過させる優先度が低い順に前記制御リストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定することを特徴とする通信装置。
【請求項５】
請求項４に記載の通信装置であって、
前記アクセスリストは、前記制御リストとして、遮断すべきデータの識別情報が保持されるブラックリストと、通過させる優先度が低いデータの識別情報が保持されるグレーリストと、通過させる優先度が高いデータの識別情報が保持されるホワイトリストとを含み、
前記通信装置は、
受信した前記第１のデータの識別情報が前記ブラックリストにも前記ホワイトリストにも保持されていない場合、前記受信した第１のデータの識別情報を前記グレーリストに登録し、
当該第１のデータに起因して発生する第２のデータの異常を検出すると、当該第１のデータの識別情報を前記ブラックリストに登録することを特徴とする通信装置。
【請求項６】
請求項４に記載の通信装置であって、
前記アクセスリストは、前記制御リストとして、遮断すべきデータの識別情報が保持されるブラックリストと、通過させる優先度が低いデータの識別情報が保持されるグレーリストと、通過させる優先度が高いデータの識別情報が保持されるホワイトリストとを含み、
前記通信装置は、
受信した前記第１のデータの識別情報が前記ブラックリストにも前記ホワイトリストにも保持されていない場合、前記受信した第１のデータの識別情報を前記グレーリストに登録し、
当該第１のデータに起因して発生する第２のデータの正常を検出すると、当該第１のデータの識別情報を前記ホワイトリストに登録することを特徴とする通信装置。
【請求項７】
請求項１に記載の通信装置であって、
前記第２のデータを分析する分析サーバに接続されており、
前記分析サーバが前記第２のデータを分析した結果を用いて、前記第２のデータの異常を検出することを特徴とする通信装置。
【請求項８】
機器を制御するための制御システムであって、
制御対象となる機器と、
前記機器を監視するセンサと、
前記機器を制御するためのコマンドを含む第１のデータを出力し、前記センサから出力されるセンサデータを含む第２のデータを取得する計算機と、
前記計算機と前記機器との間でデータを送受信する通信装置とを備え、
前記通信装置は、記憶装置と、データを送受信するインタフェースとを有し、
前記記憶装置は、
受信した前記第１のデータの識別情報を保持し、前記第１のデータの通信を制御するためのアクセスリストと、
前記第１のデータの識別情報のうち、関連する識別情報群を管理するためのグルーピングデータベースと、
前記第１のデータの識別情報と前記第２のデータの識別情報とを対応づける対応データベースとを有し、
前記通信装置は、
前記第２のデータの異常を検出すると、前記対応データベースを参照して、前記異常が検出された第２のデータに対応する第１のデータを特定し、
前記グルーピングデータベースを参照して、前記特定された第１のデータと関連する前記第１のデータの識別情報群を決定し、
前記アクセスリストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定することを特徴とする制御システム。
【請求項９】
請求項８に記載の制御システムであって、
前記通信装置は、前記異常が検出された第２のデータに対応する第１のデータと関連する識別情報群について、機器の動作を停止するコマンドを含む第１のデータを送信することを特徴とする制御システム。
【請求項１０】
請求項８に記載の制御システムであって、
前記アクセスリストは、通信を制御する優先度が異なる複数の制御リストを含み、
前記通信装置は、通信を通過させる優先度が低い順に前記制御リストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定することを特徴とする制御システム。
【請求項１１】
請求項１０に記載の制御システムであって、
前記アクセスリストは、前記制御リストとして、遮断すべきデータの識別情報が保持されるブラックリストと、通過させる優先度が低いデータの識別情報が保持されるグレーリストと、通過させる優先度が高いデータの識別情報が保持されるホワイトリストとを含み、
前記通信装置は、
受信した前記第１のデータの識別情報が前記ブラックリストにも前記ホワイトリストにも保持されていない場合、前記受信した第１のデータの識別情報を前記グレーリストに登録し、
当該第１のデータに起因して発生する第２のデータの異常を検出すると、当該第１のデータの識別情報を前記ブラックリストに登録することを特徴とする制御システム。
【請求項１２】
請求項１０に記載の制御システムであって、
前記アクセスリストは、前記制御リストとして、遮断すべきデータの識別情報が保持されるブラックリストと、通過させる優先度が低いデータの識別情報が保持されるグレーリストと、通過させる優先度が高いデータの識別情報が保持されるホワイトリストとを含み、
前記通信装置は、
受信した前記第１のデータの識別情報が前記ブラックリストにも前記ホワイトリストにも保持されていない場合、前記受信した第１のデータの識別情報を前記グレーリストに登録し、
当該第１のデータに起因して発生する第２のデータの正常を検出すると、当該第１のデータの識別情報を前記ホワイトリストに登録することを特徴とする制御システム。
【請求項１３】
請求項８に記載の制御システムであって、
前記通信装置には、前記第２のデータを分析する分析サーバに接続されており、
前記通信装置は、前記分析サーバが前記第２のデータを分析した結果を用いて、前記第２のデータの異常を検出することを特徴とする制御システム。
【請求項１４】
第１のデータと、前記第１のデータに起因して発生する第２のデータとを送受信する通信装置における通信制御方法であって、
前記通信装置は、記憶装置と、データを送受信するインタフェースとを有し、
前記記憶装置は、
受信した前記第１のデータの識別情報を保持し、前記第１のデータの通信を制御するためのアクセスリストと、
前記第１のデータの識別情報のうち、関連する識別情報群を管理するためのグルーピングデータベースと、
前記第１のデータの識別情報と前記第２のデータの識別情報とを対応づける対応データベースとを有し、
前記方法は、
前記通信装置が、前記第２のデータの異常を検出すると、前記対応データベースを参照して、前記異常が検出された第２のデータに対応する第１のデータを特定し、
前記通信装置が、前記グルーピングデータベースを参照して、前記特定された第１のデータと関連する前記第１のデータの識別情報群を決定し、
前記通信装置が、前記アクセスリストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システムにおいて通信制御を行う通信装置に関する。
【背景技術】
【０００２】
近年、クラウドやモノのインターネットと呼ばれるＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）の進展により、通信を介した事業やサービスが多様化され、様々な機器やサービスがネットワークで接続されるようになった。重要インフラや産業向けの制御システム（ＩＣＳ：Ｉｎｄｕｓｔｒｉａｌ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）においても、制御対象のフィールド機器（モータ、ポンプ、発電機など）を制御したり、機器に設置されて周囲の状況を観測するセンサのデータをネットワーク経由で取得することによって、稼働中の機器の監視や制御システムの運用を効率化する動きがある。
【０００３】
それに伴って、従来は独立したネットワークや専用のコントローラで構成されていた制御システムのオープン化が進展している。例えば、制御システムが企業内のネットワークに接続したり、インターネットやイントラネットで利用されているＴＣＰ／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を制御システムの通信プロトコルとして利用したり、機器の制御や監視に利用している制御コンピュータなどに情報処理システムで用いられている汎用のオペレーティングシステムが利用されている。
【０００４】
このような背景の元、制御システムにおいて、外部から持ち込まれた可搬型の外部記憶媒体からコンピュータウィルスが侵入したり、外部から持ち込まれたノートパソコン経由で悪意のある攻撃を受ける可能性がある。制御システムや重要インフラにおいて前述のような脆弱性をついた攻撃や不正侵入などの事態が発生した場合には、その異常や攻撃を迅速に検知し、セキュリティ対策を行う技術が必要になっている。
【０００５】
本技術分野の背景技術として、以下の先行技術がある。
【０００６】
特開２０１４−１７９０７４号公報（特許文献１）には、制御システム挙動を測定するように構成されているデバイス監視構成要素と、デバイス監視構成要素および通信ネットワークに通信可能に結合された侵入防止システムとを含むシステムが開示されている。この侵入防止システムは、制御システム内の異常を検出した時は、デバイスの動作を中止する制御信号を送信する。
【０００７】
特開２０１２−２２６６８０号公報（特許文献２）には、制御装置と、制御装置に接続される制御ネットワークと、制御ネットワークを介して制御装置により制御される複数の機器とを備える産業制御システムの管理システムであって、産業制御システムの一部ずつを制御する制御ゾーン毎に設けられ、制御ゾーン内の機器と制御ネットワークとの間の通信を中継する複数のファイヤウォール部と、複数のファイヤウォール部のそれぞれからイベントを収集して解析し、制御ゾーン毎の異常を検知するイベント解析部と、異常が検知された制御ゾーンに設けられたファイヤウォール部を介する通信動作を変更する通信管理部と、を備える管理システムが開示されている。この管理システムは、異常を検出した制御ゾーンをシャットダウンして切り離す。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−１７９０７４号公報
【特許文献２】特開２０１２−２２６６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
産業制御システムには、モノを動かす機器の駆動装置（モータ、油圧装置、エンジン）が接続されたり、圧延プラントのように高温・高圧の材料を扱っており、火災や生産設備の破壊などに結びつくような被害を発生させる可能性がある。このため、産業制御システムでは、上述したように、ウィルスによる感染や外部からの悪意のある攻撃を検出した場合など、セキュリティの上の異常検出した場合には制御対象の機器を安全停止し、システムから切り離しできることが必要である。
【００１０】
その一方で、産業制御システムの機器の停止やシステムの切り離しは機会損失が大きく、人々の生活に影響が出る可能性があるため、異常検出後の対策によるシステムへの波及範囲を抑えつつ、システムの稼働を維持できることが望ましい。
【００１１】
しかしながら、特許文献１に記載された技術では、機器の異常を検出した時点でデバイスの動作を中止するため、複数の機器が連携して動作する場合に安全な対策をとれない。
【００１２】
また、特許文献２に記載された技術では、機器の異常を検出した時点でシステム（制御ゾーン）をシャットダウンするため、産業制御システムへの波及範囲が必要以上に大きくなる。
【００１３】
そこで、本発明は、制御システムにおいて、機器の異常検出時に波及範囲を抑えながらセキュリティ対策を実施し、制御システムの可用性を向上する技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、第１のデータと、前記第１のデータに起因して発生する第２のデータとを送受信する通信装置であって、記憶装置と、データを送受信するインタフェースとを備え、前記記憶装置は、受信した前記第１のデータの識別情報を保持し、前記第１のデータの通信を制御するためのアクセスリストと、前記第１のデータの識別情報のうち、関連する識別情報群を管理するためのグルーピングデータベースと、前記第１のデータの識別情報と前記第２のデータの識別情報とを対応づける対応データベースとを有し、前記通信装置は、前記第２のデータの異常を検出すると、前記対応データベースを参照して、前記異常が検出された第２のデータに対応する第１のデータを特定し、前記グルーピングデータベースを参照して、前記特定された第１のデータと関連する前記第１のデータの識別情報群を決定し、前記アクセスリストを参照して、前記決定された第１のデータの識別情報群から通信を遮断する第１のデータを決定する。
【発明の効果】
【００１５】
本発明の一態様によれば、システムの稼働率を向上できる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】実施例１の制御システムの構成図である。
【図２】実施例１の通信装置のブロック図である。
【図３】実施例１のアクセスリストの説明図である。
【図４】実施例１の機器−センサ対応データベースの説明図である。
【図５】実施例１のグルーピングデータベースの説明図である。
【図６】実施例１の制御システムにおける事前学習動作の例を示すシーケンス図である。
【図７Ａ】実施例１の制御システムにおける複数の機器がグルーピングされていない場合の異常検知動作の例を示すシーケンス図である。
【図７Ｂ】実施例１の制御システムにおける複数の機器がグルーピングされている場合の異常検知動作の例を示すシーケンス図である。
【図８】実施例１の通信装置における通信ネットワーク側から受信するパケットの処理のフローチャートである。
【図９】実施例１の通信装置における制御装置側から受信するパケットの処理のフローチャートである。
【図１０】実施例２のアクセスリストの説明図である。
【図１１】実施例２の制御システムにおけるグレーリスト対象のコマンド設定の異常を検知する動作の例を示すシーケンス図である。
【図１２】実施例２の制御システムにおけるホワイトリスト対象のコマンド設定の異常を検知する動作の例を示すシーケンス図である。
【図１３】実施例２の通信装置における通信ネットワーク側から受信するパケットの処理のフローチャートである。
【図１４Ａ】実施例２の通信装置における制御装置側から受信するパケットの処理のフローチャートである。
【図１４Ｂ】実施例２の通信装置における制御装置側から受信するパケットの処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施例について、図面を参照して説明する。以下に述べる実施例は本発明の一例であって、本発明を制限するものではない。
【００１８】
（実施例１）
以下、実施例１について図１〜図９を用いて説明する。
【００１９】
＜制御システムの構成例＞
図１は、実施例１の制御システムの構成図である。
【００２０】
本実施例の制御システムは、複数の機器１０１−１〜１０１−Ｋ（機器を総称する場合、「機器１０１」と記載する）、複数のセンサ１０２−１〜１０２−Ｌ（センサを総称する場合、「センサ１０２」と記載する）、制御装置１０３、通信装置２、制御サーバ１０４、及び、分析サーバ１０５を有する。なお、Ｋは任意の自然数であり、本制御システムに備わる機器の数は任意である。また、Ｌは任意の自然数であり、本制御システムに備わるセンサの数は任意である。機器１０１、センサ１０２、及び、制御装置１０３は、制御ネットワーク１０６を構築し、通信装置２、制御サーバ１０４、及び、分析サーバ１０５は、通信ネットワーク１０７を構築する。
【００２１】
機器１０１は、制御装置１０３の制御対象となるフィールド機器であり、例えば、ポンプ、モータ、発電機等であるが、その他のものでもよい。
【００２２】
センサ１０２は、機器１０１及びその周囲の環境・状況を計測するフィールドセンサであり、例えば、回転数、温度、加速度、水位、電流・電圧等の物理量を計測し、計測した物理量の情報をセンサデータとして出力する。
【００２３】
制御装置１０３は、制御ネットワーク１０６を介して機器１０１及びセンサ１０２と接続される。制御装置１０３は、制御サーバ１０４から通信ネットワーク１０７を介してコマンド設定により設定される設定値に基づいて制御プロセスを実行する論理制御装置であり、機器１０１に制御コマンドを送信し、センサ１０２から取得するセンサデータを制御サーバ１０４宛に送信する。
【００２４】
通信装置２は、制御装置１０３に接続され、通信ネットワーク１０７を介して制御サーバ１０４及び分析サーバ１０５に接続される。通信装置２は、制御サーバ１０４から制御装置１０３に設定されるコマンド設定を中継し、中継する際にコマンド設定に関する情報を保持する。また、通信装置２は、制御装置１０３から制御サーバ１０４に送信されるセンサデータを中継し、中継する際にセンサデータの情報を保持する。
【００２５】
また、通信装置２は、保持しているセンサデータの情報を分析サーバ１０５に送信する。さらに、通信装置２は、分析サーバ１０５からセンサデータ値の異常検知用のクラスタ分布データを取得し、制御装置１０３から制御サーバ１０４に送信されるセンサデータの異常を検知する機能を有する。さらに、通信装置２は、センサデータの異常を検知した場合、制御サーバ１０４から制御装置１０３に設定されるコマンド設定の通過や廃棄などの通信制御を実行し、制御装置１０３に停止コマンドを送信する機能を有する。
【００２６】
制御サーバ１０４は、通信ネットワーク１０７を介して通信装置２に接続され、操作員などから設定されるコマンド設定を制御装置１０３宛に送信する。また、制御サーバ１０４は、制御装置１０３から送られるセンサデータを取得し、センサデータ及び制御プロセスの状態を表示する機能を有する。
【００２７】
分析サーバ１０５は、通信ネットワーク１０７を介して通信装置２に接続され、通信装置２が保持するセンサデータを取得する。分析サーバ１０５は、取得したセンサデータから異常検知用のクラスタ分布データを計算し、通信装置２に通知する。また、分析サーバ１０５は、通信装置２における異常検知機能や通信制御機能を制御するための学習指示や異常検知開始指示を通信装置２に送信する。
【００２８】
＜通信装置のブロック構成例＞
次に、図２を用いて通信装置２の論理構成を説明する。図２は、実施例１の通信装置２のブロック図である。
【００２９】
通信装置２は、複数のインタフェース２０１−１及び２０１−２（インタフェースを総称する場合、「インタフェース２０１」と記載する）、複数のパケット解析部２０２−１及び２０２−２（パケット解析部を総称する場合、「パケット解析部２０２」と記載する）、リスト検索部２０３、異常監視部２０４、リスト判定部２０５、センサ応答学習部２０６、複数のパケット挿入調整部２０７−１及び２０７−２（パケット挿入調整部を総称する場合、「パケット挿入調整部２０７」と記載する）、装置管理部２０８、クラスタ分布データベース２０９、センサデータ用データベース２１０、アクセスリスト３、機器−センサ対応データベース４、及び、グルーピングデータベース５を有する。
【００３０】
インタフェース２０１は、一般的な通信装置で用いられる、所定のプロトコルで通信する通信インタフェースである。通信装置２は、インタフェース２０１を介して他の装置に接続され、データを送受信する。本実施例では、通信装置２は、インタフェース２０１−１を介して制御装置１０３と接続され、インタフェース２０１−２を介して通信ネットワーク１０７を介して制御サーバ１０４及び分析サーバ１０５と接続される。
【００３１】
パケット解析部２０２は、インタフェース２０１から入力されたパケットを解析し、後段の機能部へパケットを転送する。パケット解析部２０２−１は、制御装置１０３から送信されるセンサデータのパケットを解析して、センサデータを抽出し、センサ１０２を識別するためのＩＤを特定する。パケット解析部２０２−２は、制御サーバ１０４から送信されるコマンド設定、又は分析サーバ１０５から送信される異常検知用のクラスタ分布データなどのパケットを解析し、コネクションを識別するためのＩＤを特定する。
【００３２】
リスト検索部２０３は、アクセスリスト３にコネクションとしてコマンド設定の情報を登録する。また、リスト検索部２０３は、アクセスリスト３を参照し、パケット挿入調整部２０７−２へ転送するパケットの通過や廃棄を判定する。アクセスリスト３の詳細は図３で説明する。また、リスト検索部２０３の処理の詳細は図８で説明する。
【００３３】
異常監視部２０４は、パケット解析部２０２−１から受信したセンサデータをセンサデータ用データベース２１０に格納し、パケット挿入調整部２０７−１へ転送する。センサデータ用データベース２１０は、センサ１０２から取得するセンサデータを格納するためのデータベースである。
【００３４】
また、異常監視部２０４は、クラスタ分布データベース２０９を参照し、抽出したセンサデータが異常な値を示しているか否かを検出する。クラスタ分布データベース２０９は、分析サーバ１０５より取得する異常検知用のクラスタ分布データを格納するためのデータベースである。例えば、クラスタ分布データベース２０９は、クラスタ分布データとして、各センサデータの平均、分散、異常判定のための閾値などの情報を含んでもよい。
【００３５】
さらに、異常監視部２０４は、センサデータの異常を検出すると、機器−センサ対応データベース４を参照して取得した機器ＩＤや、グルーピングデータベース５を参照して取得したグループＩＤを用いたアクセスリスト３の検索を、リスト判定部２０５に指示する。機器−センサ対応データベース４の詳細は図４で説明し、グルーピングデータベース５の詳細は図５で説明する。
【００３６】
リスト判定部２０５は、異常監視部２０４より指示を受信すると、アクセスリスト３を検索し、該当機器ＩＤ宛に異常なコマンド設定が送信されていないか否かを確認する。また、リスト判定部２０５は、異常なコマンド設定を確認すると、アクセスリスト３の登録情報を変更し、リスト検索部２０３におけるパケットの通過や廃棄の判定を制御する。異常監視部２０４及びリスト判定部２０５の処理の詳細は図９で説明する。
【００３７】
センサ応答学習部２０６は、センサデータ用データベース２１０及びアクセスリスト３を参照し、コマンド設定の受信とセンサデータの応答値の変動を学習する。学習の際、学習のために必要な情報を、図示しないメモリに保持してもよい。センサ応答学習部２０６は、学習の結果によってアクセスリスト３の登録情報を変更し、リスト検索部２０３におけるパケットの通過や廃棄の判定を制御する。
【００３８】
パケット挿入調整部２０７は、複数の機能部から入力されるパケットの挿入順序を調整し、インタフェース２０１に出力する。
【００３９】
装置管理部２０８は、データが一時的に格納される記憶領域を有し、通信装置２が有する各機能部（インタフェース２０１、パケット解析部２０２、リスト検索部２０３、異常監視部２０４、リスト判定部２０５、センサ応答学習部２０６、及び、パケット挿入調整部２０７）の設定値を保持する。装置管理部２０８は、通信装置２が有する各機能部に図示しない制御線を介して接続される。通信装置２が有する各機能部は、装置管理部２０８の設定値を用いて処理を実行し、処理結果を装置管理部２０８に通知し、装置管理部２０８は、通知結果を保持する。
【００４０】
また、装置管理部２０８は、通信装置２が有する各データベース（クラスタ分布データベース２０９、センサデータ用データベース２１０、アクセスリスト３、機器−センサ対応データベース４、及び、グルーピングデータベース５）にデータを読み書きする。装置管理部２０８は、通信装置２が有する各データベースに図示しない制御線を介して接続される。
【００４１】
通信装置２の各機能部は、プロセッサが実行するプログラムや、所定の動作をする論理回路（例えば、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）によって構成される。プロセッサが実行するプログラムは、リムーバブルメディア（フラッシュメモリなど）又はネットワークを介して通信装置２に提供され、非一時的記憶媒体である記憶装置（磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）など）に格納される。このため、通信装置２は、リムーバブルメディアからデータを読み込むインタフェースを有するとよい。
【００４２】
通信装置２は、物理的に一つの計算機上で、又は、論理的又は物理的に複数の計算機上で構成されてもよい。前述した各機能部のプログラムは、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００４３】
ここで、本実施例で通信装置２が送受信するデータのフォーマットの一例を説明する。本実施例の制御システムで転送されるデータは、例えば、イーサネット（登録商標）のパケットである。当該形式のパケットは、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、イーサタイプ値、ペイロード、及びフレームチェックシーケンス（ＦＣＳ）を含む。
【００４４】
宛先ＭＡＣアドレスには、宛先の通信装置２のＭＡＣアドレスが登録され、送信元ＭＡＣアドレスには、送信元の装置（例えば、制御装置１０３）のＭＡＣアドレスが設定される。イーサタイプ値には、パケットが運ぶ上位層のプロトコルの識別子が設定される。フレームチェックシーケンス（ＦＣＳ）には、フレームの誤りを検出するための値が設定される。なお、パケットのペイロードには、ＩＰヘッダ、ＴＣＰヘッダ、又は他のプロトコルのヘッダを含んでもよい。また、ＩＰヘッダに含まれる宛先ＩＰアドレスや送信元ＩＰアドレス、他のプロトコルのヘッダに含まれる識別子等の値をコネクションの識別子として利用してもよい。
【００４５】
＜アクセスリストの構成例＞
図３は、実施例１のアクセスリスト３の説明図である。
【００４６】
アクセスリスト３は、論理的にホワイトリスト及びブラックリストの二つのリストを含むリストとして構成され、各コネクションがホワイトリストに登録されているか、ブラックリストに登録されているかを管理する。本実施例では、リスト検索部２０３は、ホワイトリストに登録されているコネクションを通過するパケットであると判定し、ブラックリストに登録されているコネクションを廃棄するパケットであると判定する。
【００４７】
アクセスリスト３は、コネクションＩＤ３０１ごとに、ホワイトリストＶａｌｉｄ３０２、ブラックリストＶａｌｉｄ３０３を有し、コネクション情報として送信元アドレス３０４、宛先アドレス３０５及び機器ＩＤ３０６を保持し、管理情報として登録時間３０７及び受信数３０８を保持する。
【００４８】
ホワイトリストＶａｌｉｄ３０２は、コネクションＩＤ３０１のコネクションがホワイトリストに登録されているかを示す。例えば、ホワイトリストＶａｌｉｄ３０２が有効の場合、ホワイトリストに登録されており、ホワイトリストＶａｌｉｄ３０２が無効の場合、ホワイトリストに登録されていないことを示してもよい。
【００４９】
ブラックリストＶａｌｉｄ３０３は、コネクションＩＤ３０１のコネクションがブラックリストに登録されているかを示す。例えば、ブラックリストＶａｌｉｄ３０３が有効の場合、ブラックリストに登録されており、ブラックリストＶａｌｉｄ３０３が無効の場合、ブラックリストに登録されていないことを示してもよい。
【００５０】
コネクション情報として、送信元アドレス３０４には、受信したパケットの送信元のアドレス（例えば、制御サーバ１０４のＩＰアドレスなど）が登録される。宛先アドレス３０５には、受信したパケットの宛先のアドレス（例えば、制御装置１０３のＩＰアドレスなど）が登録される。機器ＩＤ３０６には、機器１０１を識別するための識別情報が登録される。
【００５１】
また、管理情報として、登録時間３０７には、該当コネクションＩＤ３０１のパケットがホワイトリスト又はブラックリストに追加された時間が登録される。受信数３０８には、該当コネクションＩＤ３０１のパケットを受信した回数が登録される。
【００５２】
＜機器−センサ対応データベースの構成例＞
図４は、実施例１の機器−センサ対応データベース４の説明図である。
【００５３】
機器−センサ対応データベース４は、異常監視部２０４によって参照され、制御システムの各センサ１０２から取得するセンサデータに該当する異常検知用のクラスタ分布データと、該当センサ１０２を備える機器１０１とを対応づける。機器−センサ対応データベース４は、センサデータを識別するための識別情報であるセンサデータＩＤ４０１ごとに、該当するクラスタ分布データを指定するクラスタＤＢ＿ＩＤ４０２、及び対応機器を指定する機器ＩＤ４０３を保持する。また、機器−センサ対応データベース４は、装置管理部２０８から設定される。
【００５４】
＜グルーピングデータベースの構成例＞
図５は、実施例１のグルーピングデータベース５の説明図である。
【００５５】
グルーピングデータベース５は、異常監視部２０４によって参照され、制御システムにおいて機器１０１が構成する制御グループを管理する。グルーピングデータベース５は、機器ＩＤ５０１及びグループＩＤ５０２を含み、機器ＩＤ５０１ごとに、制御グループを示すグループＩＤ５０２を保持する。また、グルーピングデータベース５は、装置管理部２０８から設定される。
【００５６】
次に、図６、図７Ａ、図７Ｂを用いて実施例１の制御システムの動作のシーケンス例を説明する。本実施例では、制御システムの動作が事前学習動作と異常検知動作に分けられ、運用開始前に制御システムの正常状態を学習し、運用開始後に制御システム内の異常状態を検出する例を示す。
【００５７】
事前学習動作では、通信装置２は、制御サーバ１０４から制御装置１０３宛に送信されるコマンド設定と、制御装置１０３から制御サーバ１０４に送られるセンサデータとを対応づける。分析サーバ１０５は、センサデータを分析し、異常検知用のクラスタ分布データを作成する。
【００５８】
異常検知動作は、センサデータの分析後に開始される。通信装置２は、異常と想定されるコマンド設定の有無とセンサデータの異常な値とを対応づけて、コマンド設定の通過や廃棄を判定する。本実施例では、制御サーバ１０４が乗っ取られ、異常なコマンド設定が送信された場合、通信装置２が異常を検知する動作を示す。また、異常検知動作において、図７Ａでは制御システムにおいて機器１０１がグルーピングされていない場合を示し、図７ｂではグルーピングされている場合を示す。
【００５９】
＜制御システムの事前学習動作のシーケンス例＞
図６は、実施例１の制御システムにおける事前学習動作の例を示すシーケンス図である。
【００６０】
はじめに、制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に送信する（Ｓ６００）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ６０１）。
【００６１】
また、同様に、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に送信する（Ｓ６０２）。制御装置１０３は、制御コマンドを機器１０１−２に送信する（Ｓ６０３）。
【００６２】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ６０４）、センサデータを制御サーバ１０４宛に送信する（Ｓ６０５）。
【００６３】
また、同様に、制御装置１０３は、センサデータをセンサ１０２−２から取得し（Ｓ６０６）、センサデータを制御サーバ１０４宛に送信する（Ｓ６０７）。
【００６４】
ここで、分析サーバ１０５は、通信装置２のデータベース（機器−センサ対応データベース４やグルーピングデータベース５など）を設定し（Ｓ６０８）、通信装置２に事前学習指示を通知する（Ｓ６０９）。
【００６５】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ６１０）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ６１２）。この際、通信装置２は、Ｓ６１０のコマンド設定のパケットをホワイトリストとしてアクセスリスト３に登録する（Ｓ６１１）。
【００６６】
また、同様に、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に継続して送信し（Ｓ６１３）、制御装置１０３は、機器１０１−２に制御コマンドを送信する（Ｓ６１５）。この際、通信装置２は、Ｓ６１３のコマンド設定のパケットをホワイトリストとしてアクセスリスト３に登録する（Ｓ６１４）。
【００６７】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ６１６）、センサデータを制御サーバ１０４宛に送信する（Ｓ６１８）。この際、通信装置２は、Ｓ６１８のセンサデータを取得し（センサデータ用データベース２１０に格納し）、受信したコマンド設定と当該機器からの応答のセンサデータの値とを学習する（Ｓ６１７）。
【００６８】
また、同様に、制御装置１０３は、センサデータをセンサ１０２−２から取得し（Ｓ６１９）、センサデータを制御サーバ１０４宛に送信する（Ｓ６２１）。この際、通信装置２は、Ｓ６２１のセンサデータを取得し（センサデータ用データベース２１０に格納し）、受信したコマンド設定と当該機器からの応答のセンサデータの値とを学習する（Ｓ６２０）。
【００６９】
次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ６２２）。分析サーバ１０５は、センサデータを分析した後、異常検知用のクラスタ分布データを通信装置２に送信する（Ｓ６２３）。通信装置２がクラスタ分布データベース２０９を設定することにより、事前学習動作を終了する。
【００７０】
＜制御システムの異常動作のシーケンス例＞
図７Ａは、実施例１の制御システムにおける複数の機器１０１がグルーピングされていない場合の異常検知動作の例を示すシーケンス図である。
【００７１】
はじめに、分析サーバ１０５は、通信装置２に異常検知の開始を指示する（Ｓ７０１）。
【００７２】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信している（Ｓ７０２）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ７０４）。この際、通信装置２は、アクセスリスト３を参照し、コマンド設定のパケットが登録されているリストを判定する。具体的には、通信装置２は、Ｓ７０２のコマンド設定のパケットがホワイトリストに登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ７０３）。
【００７３】
また、同様に、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に継続して送信している（Ｓ７０５）。制御装置１０３は、制御コマンドを機器１０１−２に送信する（Ｓ７０７）。この際、通信装置２は、アクセスリスト３を参照し、コマンド設定のパケットが登録されているリストを判定する。具体的には、通信装置２は、Ｓ７０５のコマンド設定のパケットがホワイトリストに登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ７０６）。
【００７４】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ７０８）、センサデータを制御サーバ１０４宛に送信する（Ｓ７１０）。この際、通信装置２は、センサデータを取得して、センサデータ用データベース２１０に格納し、さらに、クラスタ分布データベース２０９を参照して、取得したセンサデータが異常な値を示すか否かを判定する。具体的には、通信装置２は、Ｓ７０８のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７０９）。
【００７５】
また、同様に、制御装置１０３は、センサデータをセンサ１０２−２から取得し（Ｓ７１１）、センサデータを制御サーバ１０４宛に送信する（Ｓ７１３）。この際、通信装置２は、センサデータを取得して、センサデータ用データベース２１０に格納し、さらに、クラスタ分布データベース２０９を参照して、取得したセンサデータが異常な値を示すか否かを判定する。具体的には、通信装置２は、Ｓ７１１のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７１２）。
【００７６】
次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ７１４）。なお、本実施例では事前学習によりセンサデータを学習しているが、運用中も分析サーバ１０５がセンサデータを分析し、異常検知用のクラスタ分布データを通信装置２に送信して、センサデータを学習してもよい。
【００７７】
ここで、制御サーバ１０４が乗っ取り攻撃を受けると（Ｓ７１５）、制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定に異常な値を設定して制御装置１０３宛に送信する（Ｓ７１６）。この際、通信装置２は、Ｓ７１６のコマンド設定のパケットがアクセスリスト３においてホワイトリストとして登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ７１７）。そして、制御装置１０３は、異常な設定に基づいた制御コマンドを機器１０１−１に送信する（Ｓ７１８）。機器１０１−１は、異常な動作を開始する。
【００７８】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ７１９）、センサデータを制御サーバ１０４宛に送信する（Ｓ７２１）。この際、通信装置２は、Ｓ７２１のセンサデータが異常な値を示すことを検知する（Ｓ７２０）。また、通信装置２は、取得した異常な値を示すセンサデータを分析サーバ１０５に通知する（Ｓ７２２）。
【００７９】
通信装置２は、ステップＳ７２０で異常を検知すると、機器１０１−１宛のコマンド設定のパケットをアクセスリスト３においてブラックリストに登録する（Ｓ７２３）。
【００８０】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ７２４）。Ｓ７２４のコマンド設定には異常な値が設定されている。この際、通信装置２は、Ｓ７２４のコマンド設定のパケットがブラックリストに登録されていることを確認し、コマンド設定を廃棄する（Ｓ７２５）。
【００８１】
また、通信装置２は、ステップＳ７２０で異常を検知すると、機器１０１−１を停止するためのコマンド設定を制御装置１０３宛に送信する（Ｓ７２６）。そして、制御装置１０３は、機器１０１−１に制御コマンドを送信する（Ｓ７２８）。なお、通信装置２は、ステップＳ７２６で機器１０１−１を停止するためのコマンド設定を送信したが、安全に動作を継続させるためのコマンド設定を送信してもよい。また、通信装置２は、ブラックリストによりコマンド設定を廃棄し、停止コマンド設定を送信したことを分析サーバ１０５に通知してもよい（Ｓ７２７）。
【００８２】
次に、制御装置１０３は、センサ１０２−１からセンサデータを取得し（Ｓ７２９）、センサデータを制御サーバ１０４宛に送信する（Ｓ７３１）。この際、通信装置２は、機器１０１−１の停止により、Ｓ７３１のセンサデータが正常な値の範囲に含まれることを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７３０）。
【００８３】
また、制御装置１０３は、センサ１０２−２からセンサデータを取得し（Ｓ７３２）、センサデータを制御サーバ１０４宛に送信する（Ｓ７３４）。機器１０１−２は異常なコマンド設定による制御コマンドを受信していない。通信装置２は、Ｓ７３４のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７３３）。次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ７３５）。
【００８４】
図７Ｂは、実施例１の制御システムにおける複数の機器１０１がグルーピングされている場合の異常検知動作の例を示すシーケンス図である。
【００８５】
図７Ａでは、機器１０１−１と機器１０１−２が同じ制御グループではなく、グルーピングされていないため、異常を検出した機器１０１−１のみを停止するためのコマンド設定を送信した。一方、図７Ｂでは、機器１０１−１と機器１０１−２とが同じ制御グループにグルーピングされている。同じ制御グループ内では、関連する機器１０１が異常動作をすると、他の機器１０１にも影響が生じる可能性があるため、通信装置２は、異常を検出した機器１０１−１を停止するためのコマンド設定を送信し、機器１０１−１と同じグループの機器１０１−２を停止するためのコマンド設定を送信する。Ｓ７０１からＳ７２５までの処理は、図７Ａと同じであるため、説明を省略する。
【００８６】
通信装置２は、ステップＳ７２０でセンサデータの異常を検出すると、機器１０１−１を停止するためのコマンド設定を制御装置１０３宛に送信し（Ｓ７５０）、制御装置１０３は、機器１０１−１に制御コマンドを送信する（Ｓ７５１）。
【００８７】
同様に、通信装置２は、機器１０１−２を停止するためのコマンド設定を制御装置１０３宛に送信する（Ｓ７５２）。制御装置１０３は、制御コマンドを機器１０１−２に送信する（Ｓ７５３）。また、通信装置２は、ブラックリストによりコマンド設定を廃棄し、停止コマンド設定を送信したことを分析サーバ１０５に通知してもよい（Ｓ７５４）。
【００８８】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ７５５）、センサデータを制御サーバ１０４宛に送信する（Ｓ７５７）。この際、通信装置２は、機器１０１−１の停止により、ステップＳ７５７のセンサデータが正常な値の範囲に含まれることを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７５６）。
【００８９】
なお、通信装置２は、ステップＳ７５０、Ｓ７５２で機器１０１−１、１０１−２を停止するためのコマンド設定を送信したが、安全に動作を継続させるためのコマンド設定を送信してもよい。
【００９０】
また、同様に、制御装置１０３は、センサ１０２−２からセンサデータを取得し（Ｓ７５８）、制御サーバ１０４宛にセンサデータを送信する（Ｓ７６１）。この際、通信装置２は、機器１０１−２の停止によりＳ７６１のセンサデータが正常な値の範囲に含まれることを確認して、センサデータを制御サーバ１０４に転送する（Ｓ７６０）。次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ７６２）。
【００９１】
＜パケットの処理のフローチャートの例＞
次に、図８及び図９を用いて実施例１の通信装置２のパケットの処理の例を説明する。
【００９２】
図８は、実施例１の通信装置２における通信ネットワーク１０７側から受信するパケットの処理Ｓ８５０のフローチャートである。
【００９３】
通信装置２がパケットをインタフェース２０１−２から受信した場合（Ｓ８００）、パケット解析部２０２−２がパケットデータを解析し、コネクションＩＤを特定する（Ｓ８０１）。その後、パケット解析部２０２−２は、ステップＳ８００で受信したパケットが装置管理部２０８宛のパケットか否かを判定する（Ｓ８０２）。
【００９４】
ステップＳ８０２で装置管理部２０８宛のパケットであると判定された場合（Ｙｅｓ）、パケット解析部２０２−２は、パケットを装置管理部２０８に転送する。実施例１では、分析サーバ１０５から受信するクラスタ分布データ、事前学習指示、異常検知の開始指示などのパケットが装置管理部２０８に転送される。通信装置２は、装置管理部２０８経由で各機能部や各データベースを設定し（Ｓ８０３）、処理Ｓ８５０を終了する（Ｓ８１１）。
【００９５】
また、パケット解析部２０２−２は、制御サーバ１０４から受信するコマンド設定のパケットを装置管理部２０８に転送せず、リスト検索部２０３に転送する。ステップＳ８０２で装置管理部２０８宛のパケットではないと判定された場合（Ｎｏ）、通信装置２は、リスト検索部２０３がリスト透過モードであるか否かを判定する（Ｓ８０４）。例えば、リスト透過モードは、事前学習の指示がされる前にコマンド設定をそのまま中継する場合に使用される。
【００９６】
ステップＳ８０４でリスト検索部２０３がリスト透過モードであると判定された場合（Ｙｅｓ）、リスト検索部２０３はパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１からパケットを出力して（Ｓ８１０）、処理Ｓ８５０を終了する（Ｓ８１１）。一方、ステップＳ８０４でリスト検索部２０３がリスト透過モードではないと判定された場合（Ｎｏ）、通信装置２は、次に、リスト検索部２０３が事前学習モードであるか否かを判定する（Ｓ８０５）。
【００９７】
ステップＳ８０５でリスト検索部２０３が事前学習モードであると判定された場合（Ｙｅｓ）、リスト検索部２０３は、ステップＳ８０１で特定したコネクションＩＤが示すアクセスリスト３のエントリにおいて、ホワイトリストＶａｌｉｄ３０２を有効に設定し、コネクション情報及び管理情報を更新する（Ｓ８０６）。その後、リスト検索部２０３はパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１からパケットを出力して（Ｓ８１０）、処理Ｓ８５０を終了する（Ｓ８１１）。
【００９８】
ステップＳ８０５でリスト検索部２０３が事前学習モードでないと判定された場合（Ｎｏ）、リスト検索部２０３は、ステップＳ８０１で特定したコネクションＩＤを検索キーとしてアクセスリスト３を検索する（Ｓ８０７）。一方、ステップＳ８０５でリスト検索部２０３が事前学習モードではないと判定された場合（Ｎｏ）、異常検知の開始指示が設定されたことを示す。
【００９９】
ステップＳ８０７の後、リスト検索部２０３は、アクセスリスト３内のブラックリストＶａｌｉｄ３０３が有効であるか否かを判定する（Ｓ８０８）。ステップＳ８０８でブラックリストＶａｌｉｄ３０３が有効であると判定された場合（Ｙｅｓ）、リスト検索部２０３は、処理Ｓ８５０を終了し（Ｓ８１１）、パケットを廃棄する。なお、通信装置２は、ステップＳ８０８でブラックリストＶａｌｉｄ３０３の有効判定によりパケットを廃棄したことを装置管理部２０８に通知してもよい。
【０１００】
ステップＳ８０８でブラックリストＶａｌｉｄ３０３が無効であると判定された場合（Ｎｏ）、通信装置２は、アクセスリスト３内のホワイトリストＶａｌｉｄ３０２が有効であるか否かを判定する（Ｓ８０９）。ステップＳ８０９でホワイトリストＶａｌｉｄ３０２が無効であると判定された場合（Ｎｏ）、リスト検索部２０３は、処理Ｓ８５０を終了し（Ｓ８１１）、パケットを廃棄する。
【０１０１】
ステップＳ８０９でホワイトリストＶａｌｉｄ３０２が有効であると判定された場合（Ｙｅｓ）、リスト検索部２０３はパケット挿入調整部２０７−２にパケットを転送し、インタフェース２０１−１からパケットを出力して（Ｓ８１０）、処理Ｓ８５０を終了する（Ｓ８１１）。
【０１０２】
図９は、実施例１の通信装置２における制御装置１０３側から受信するパケットの処理Ｓ９５０のフローチャートである。
【０１０３】
通信装置２がインタフェース２０１−１からパケットを受信した場合（Ｓ９００）、パケット解析部２０２−１がパケットデータを解析し、センサＩＤを特定し、センサデータを取得して、異常監視部２０４に送る（Ｓ９０１）。その後、異常監視部２０４は、ステップＳ９０１で取得したセンサデータをセンサデータ用データベース２１０に格納する（Ｓ９０２）。さらに、異常監視部２０４は、ステップＳ９０１で取得したセンサＩＤを検索キーとして機器−センサ対応データベース４を検索し、クラスタＤＢ＿ＩＤ４０２及び機器ＩＤ４０３を取得する。また、異常監視部２０４は、取得したクラスタＤＢ＿ＩＤ４０２を検索キーとしてクラスタ分布データベース２０９を検索し、取得したセンサデータの正常な値を示すかを取得する。さらに、異常監視部２０４は、取得した機器ＩＤ４０３を検索キーとしてグルーピングデータベース５を検索し、グループＩＤ５０２を取得する（Ｓ９０３）。
【０１０４】
その後、通信装置２は、処理Ｓ９０４及び処理Ｓ９０５〜Ｓ９０８を並列に処理する。なお、処理Ｓ９０４と処理Ｓ９０５からＳ９０８とを順番に実行してもよく、いずれの処理を先に実行してもよい。
【０１０５】
ステップＳ９０４で、異常監視部２０４はパケットをパケット挿入調整部２０７−１に転送し、インタフェース２０１−２からパケットを出力する（Ｓ９０４）。
【０１０６】
一方、ステップＳ９０５で、異常監視部２０４は、分析サーバ１０５より異常検出が指示され、かつ、取得したセンサデータから異常を検出したか否かを判定する。ステップＳ９０５で、異常検出の指示がない、又は、取得したセンサデータから異常検出なしと判定された場合（Ｎｏ）、通信装置２は処理Ｓ９５０を終了待ち状態とする。
【０１０７】
ステップＳ９０５で、異常検出が指示され、かつ、取得したセンサデータから異常を検出したと判定された場合（Ｙｅｓ）、リスト判定部２０５は、アクセスリスト３の全エントリを検索し、ホワイトリストＶａｌｉｄ３０２が有効であり、かつ、ステップＳ９０３で取得した機器ＩＤ４０３宛のコネクション情報（機器ＩＤ３０６）を持つエントリの有無を判定する（Ｓ９０６）。
【０１０８】
ステップＳ９０７で該当するエントリが無いと判定された場合（Ｎｏ）、通信装置２は処理Ｓ９５０を終了待ち状態とする。なお、この場合は、制御サーバ１０４から送信されるコマンド設定の異常の有無とは関係なく、制御システムの機器１０１が故障していることが推定される。図９には図示していないが、ステップＳ９０７で該当するエントリが無いと判定された場合、通信装置２は、機器の故障被疑を分析サーバ１０５に通知してもよい。
【０１０９】
ステップＳ９０７で該当するエントリが有ると判定された場合（Ｙｅｓ）、リスト判定部２０５は、該当するエントリの機器ＩＤ４０３と同じグループＩＤ５０２を持つ機器ＩＤ５０１を抽出する。リスト判定部４０３は、アクセスリスト３において、抽出した機器ＩＤ５０１を持つコネクションのホワイトリストＶａｌｉｄ３０２を無効に設定し、ブラックリストＶａｌｉｄ３０３を有効に設定する。さらに、リスト判定部２０５は、抽出した機器ＩＤ５０１宛の停止コマンド用のパケットを作成し、作成したパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１から停止コマンド用のパケットを出力する（Ｓ９０８）。そして、通信装置２は処理Ｓ９５０を終了待ち状態とする。
【０１１０】
その後、処理Ｓ９０４が終了し、かつ、処理Ｓ９０５〜Ｓ９０８が終了した後に、処理Ｓ９５０を終了する（Ｓ９０９）。
【０１１１】
前述のとおり、実施例１によれば、アクセスリスト３、機器−センサ対応データベース４、及びグルーピングデータベース５を用いて、機器１０１へのコマンド設定とセンサ１０２のセンサデータと制御グループ（複数の機器１０１の関係）を対応づけて異常を監視するので、システムのセキュリティを向上できる。また、必要最低限の機器１０１を安全に停止できる。従って、実施例１の制御システムでは、機器の異常検出時に波及範囲を抑えながらセキュリティ対策を実施し、制御システムの可用性を向上できる。このため、システムの稼働率を向上できる。
【０１１２】
さらに、分析サーバ１０５を設けることによって、収集したデータを通信装置２が解析しなくてもよくなり、通信装置２の処理負荷を軽減できる。また、分析サーバ１０５が分析したデータを使用して機器の異常を判定するので、検出精度を向上できる。
【０１１３】
（実施例２）
実施例１では、アクセスリスト３をホワイトリストとブラックリスト（及びその他）として使用する例を示した。実施例２では、アクセスリスト３をホワイトリスト、グレーリスト、及びブラックリストとして使用する例を示す。アクセスリスト３に登録されていないパケットを受信した場合、実施例１では廃棄したが、実施例２では優先度が低いパケットとしてグレーリストに登録する。
【０１１４】
以下、実施例２について図１０から図１４Ｂを用いて説明する。
【０１１５】
＜アクセスリストの記憶内容例＞
図１０は、実施例２のアクセスリスト３の説明図である。
【０１１６】
アクセスリスト３は、論理的にホワイトリスト、グレーリスト、及びブラックリストの三つのリストを含むリストとして構成され、各コネクションがホワイトリストに登録されているか、グレーリストに登録されているか、ブラックリストに登録されているかを管理する。本実施例では、リスト検索部２０３は、ホワイトリスト又はグレーリストに登録されているコネクションを通過するパケットであると判定し、ブラックリストに登録されているコネクションを廃棄するパケットであると判定する。
【０１１７】
アクセスリスト３は、コネクションＩＤ１００１ごとに、ホワイトリストＶａｌｉｄ１００２、グレーリストＶａｌｉｄ１００３、ブラックリストＶａｌｉｄ１００４を有し、コネクション情報として送信元アドレス１００５、宛先アドレス１００６、機器ＩＤ１００７を保持し、管理情報として登録時間１００８及び受信数１００９を保持する。
【０１１８】
グレーリストＶａｌｉｄ１００３は、コネクションＩＤ１００１のコネクションがグレーリストに登録されているかを示す。例えば、グレーリストＶａｌｉｄ１００３が有効の場合、グレーリストに登録されており、グレーリストＶａｌｉｄ１００３が無効の場合、グレーリストに登録されていないことを示してもよい。その他の情報は、実施例１のアクセスリスト３（図３）と同じであるため説明は省略する。
【０１１９】
次に、図１１及び図１２を用いて実施例２の制御システムの動作のシーケンス例を示す。実施例２の事前学習動作は、実施例１の動作と同じである。実施例２では、異常検知動作について説明する。
【０１２０】
異常検知動作は、センサデータの分析後に開始され、通信装置２が、異常と推定されるコマンド設定の有無とセンサデータの異常な値とを対応づけて、コマンド設定の通過や廃棄を判定する。本実施例では、制御サーバ１０４と異なる他のサーバであり、制御システムへの侵入や成りすましによる攻撃を狙う悪意サーバから制御装置１０３に異常なコマンド設定が送信された場合、通信装置２が異常を検知する動作の例を説明する。図１１では、悪意サーバから侵入攻撃（制御サーバ１０４と異なるアドレスを持つ悪意サーバからの攻撃）を受けてグレーリスト対象のコマンド設定の異常として検知する場合を説明し、図１２では、悪意サーバから成りすまし攻撃（制御サーバ１０４と同じアドレスを持つサーバから攻撃）を受けてホワイトリスト対象のコマンド設定の異常として検知する場合を説明する。
【０１２１】
＜制御システムの異常動作のシーケンス例＞
図１１は、実施例２の制御システムにおけるグレーリスト対象のコマンド設定の異常を検知する動作の例を示すシーケンス図である。
【０１２２】
はじめに、分析サーバ１０５は、通信装置２に異常検知の開始を指示する（Ｓ１１０１）。
【０１２３】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信している（Ｓ１１０２）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ１１０４）。この際、通信装置２は、アクセスリスト３を参照し、コマンド設定のパケットが登録されているリストを判定する。具体的には、通信装置２は、Ｓ１１０２のコマンド設定のパケットがホワイトリストに登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ１１０３）。
【０１２４】
また、同様に、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に継続して送信している（Ｓ１１０５）。制御装置１０３は、制御コマンドを機器１０１−２に送信する（Ｓ１１０７）。この際、通信装置２は、アクセスリスト３を参照し、コマンド設定のパケットが登録されているリストを判定する。具体的には、通信装置２は、Ｓ１１０５のコマンド設定のパケットがホワイトリストに登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ１１０６）。
【０１２５】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ１１０８）、センサデータを制御サーバ１０４宛に送信する（Ｓ１１１０）。この際、通信装置２は、センサデータを取得して、センサデータ用データベース２１０に格納し、さらに、クラスタ分布データベース２０９を参照して、取得したセンサデータが異常な値を示すか否かを判定する。具体的には、通信装置２は、Ｓ１１１０のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１１０９）。
【０１２６】
また、同様に、制御装置１０３は、センサデータをセンサ１０２−２から取得し（Ｓ１１１１）、センサデータを制御サーバ１０４宛に送信する（Ｓ１１１３）。この際、通信装置２は、センサデータを取得して、センサデータ用データベース２１０に格納し、さらに、クラスタ分布データベース２０９を参照して、取得したセンサデータが異常な値を示すか否かを判定する。具体的には、通信装置２は、Ｓ１１１３のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１１１２）。
【０１２７】
次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ１１１４）。なお、本実施例では事前学習によりセンサデータを学習しているが、運用中も分析サーバ１０５がセンサデータを分析し、異常検知用のクラスタ分布データを通信装置２に送信して、センサデータを学習してもよい。
【０１２８】
ここで、悪意サーバに制御システムへ侵入され（Ｓ１１１５）、悪意サーバが、機器１０１−１を制御するためのコマンド設定に異常な値を設定して制御装置１０３宛に送信する（Ｓ１１１６）。この際、通信装置２は、Ｓ１１１６のコマンド設定のパケットが送信元アドレスが異なり、アクセスリスト３に登録されていないため、グレーリストとしてアクセスリスト３に登録する（Ｓ１１１７）。また、制御装置１０３は、異常な設定に基づいた制御コマンドを機器１０１−１に送信する（Ｓ１１１８）。機器１０１−１は、異常な動作を開始する。
【０１２９】
次に、制御装置１０３は、センサ１０２−１からセンサデータを取得し（Ｓ１１１９）、センサデータを制御サーバ１０４宛に送信する（Ｓ１１２１）。この際、通信装置２は、Ｓ１１２１のセンサデータが異常な値を示すことを検知する（Ｓ１１２０）。また、通信装置２は、取得した異常な値を示すセンサデータを分析サーバ１０５に通知する（Ｓ１１２２）。
【０１３０】
通信装置２は、ステップＳ１１２０で異常を検知すると、アクセスリスト３を参照し、機器１０１−１宛のコマンド設定のパケットのコネクションがグレーリストに登録されているか否かを判定する。該当するコネクションがグレーリストに有った場合、通信装置２は、アクセスリスト３において該当コネクションをブラックリストに登録する（Ｓ１１２３）。
【０１３１】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ１１２４）。制御サーバ１０４からのコマンド設定は正当なコマンド設定である。この際、通信装置２は、Ｓ１１２４のコマンド設定のパケットがホワイトリストに登録されていることを確認し、コマンド設定を通過させる（Ｓ１１２５）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ１１２６）。
【０１３２】
一方、悪意サーバも、制御装置１０３宛に、機器１０１−１を制御するためのコマンド設定に継続して送信する（Ｓ１１２８）。Ｓ１１２８のコマンド設定には異常な値が設定されている。この際、通信装置２は、Ｓ１１２８のコマンド設定のパケットがブラックリストに登録されていることを確認し、コマンド設定を廃棄する（Ｓ１１２７）。
【０１３３】
また、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に継続して送信している（Ｓ１１２９）。この際、通信装置２は、Ｓ１１２９のコマンド設定のパケットがホワイトリストに登録されていることを確認し、コマンド設定を通過させる（Ｓ１１３０）。制御装置１０３は、機器１０１−１に制御コマンドを送信する（Ｓ１１３１）。
【０１３４】
次に、制御装置１０３は、センサ１０２−１からセンサデータを取得し（Ｓ１１３２）、センサデータを制御サーバ１０４宛に送信する（Ｓ１１３４）。この際、悪意サーバから機器１０１−１宛のコマンド設定が廃棄されているので、通信装置２は、Ｓ１１３４のセンサデータが正常な値の範囲に含まれることを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１１３３）。
【０１３５】
また、制御装置１０３は、センサ１０２−２からセンサデータを取得し（Ｓ１１３５）、センサデータを制御サーバ１０４宛に送信する（Ｓ１１３７）。機器１０１−２は異常なコマンド設定による制御コマンドを受信していない。通信装置２は、Ｓ１１３７のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１１３６）。次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ１１３８）。
【０１３６】
ここで、Ｓ１１２０で異常を検知した通信装置２は、グレーリストによる低優先パケットをブラックリストに登録して廃棄しており、機器１０１−１を停止するための制御コマンドを送信していない。正当な制御サーバ１０４から送信されたホワイトリストのパケットは廃棄しないため、センサ１０２−１のセンサデータは正常に復旧し、制御システムの動作を継続させることができる。
【０１３７】
図１２は、実施例２の制御システムにおけるホワイトリスト対象のコマンド設定の異常を検知する動作の例を示すシーケンス図である。Ｓ１２０１からＳ１２１４までの処理は、図１１におけるＳ１１０１からＳ１１１４までの処理と同じであるため、説明を省略する。
【０１３８】
悪意サーバが制御サーバ１０４に成りすまし（Ｓ１２１５）、悪意サーバは、機器１０１−１を制御するためのコマンド設定に異常な値を設定して制御装置１０３宛に送信する（Ｓ１２１６）。この際、通信装置２は、Ｓ１２１６のコマンド設定のパケットがアクセスリスト３においてホワイトリストとして登録されていることを確認して、コマンド設定のパケットを制御装置１０３に転送する（Ｓ１２１７）。制御装置１０３は、機器１０１−１にその異常な設定に基づいた制御コマンドを送信する（Ｓ１２１８）。そして、機器１０１−１は、異常な動作を開始する。
【０１３９】
次に、制御装置１０３は、センサ１０２−１からセンサデータを取得し（Ｓ１２１９）、センサデータを制御サーバ１０４宛に送信する（Ｓ１２２１）。この際、通信装置２は、Ｓ１２２１のセンサデータが異常な値を示すことを検知する（Ｓ１２２０）。また、通信装置２は、取得した異常な値を示すセンサデータを分析サーバ１０５に通知する（Ｓ１２２２）。
【０１４０】
通信装置２は、ステップＳ１２２０で異常を検知すると、アクセスリスト３を参照し、機器１０１−１宛のコマンド設定のパケットのコネクションがグレーリストに登録されているか否かを判定する。該当するコネクションがグレーリストに無かった場合、通信装置２は、機器１０１−１宛のコマンド設定のパケットのコネクションがホワイトリストに登録されているか否かを判定する。該当するコネクションがホワイトリストに有った場合、通信装置２は、アクセスリスト３において該当コネクションをブラックリストに登録する（Ｓ１２２３）。
【０１４１】
制御サーバ１０４は、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ１２２４）。この際、通信装置２は、Ｓ１２２４のコマンド設定のパケットがブラックリストに登録されていることを確認し、コマンド設定を廃棄する（Ｓ１２２５）。
【０１４２】
一方、悪意サーバも、機器１０１−１を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ１２２６）。Ｓ１２２６のコマンド設定には異常な値が設定されている。この際、通信装置２は、Ｓ１２２６のコマンド設定のパケットがブラックリストに登録されていることを確認し、コマンド設定を廃棄する（Ｓ１２２７）。
【０１４３】
また、通信装置２は、ステップＳ１２２０で異常を検知した場合、機器１０１−１を停止するためのコマンド設定を制御装置１０３宛に送信する（Ｓ１２２８）。制御装置１０３は、制御コマンドを機器１０１−１に送信する（Ｓ１２２９）。
【０１４４】
なお、図１２では、機器１０１がグルーピングされていないので、機器１０１−２を停止するためのコマンド設定は送信していない。しかし、機器１０１−１と機器１０１−２とがグルーピングされている場合、通信装置２は、機器１０１−１を停止するためのコマンド設定及び機器１０１−２を停止するためのコマンド設定を送信する。
【０１４５】
なお、通信装置２は、ステップＳ１２２８で機器１０１−１を停止するためのコマンド設定を送信したが、安全に動作を継続させるためのコマンド設定を送信してもよい。また、通信装置２は、ブラックリストによりコマンド設定を廃棄し、停止コマンド設定を送信したことを分析サーバ１０５に通知してもよい（Ｓ１２３０）。
【０１４６】
また、制御サーバ１０４は、機器１０１−２を制御するためのコマンド設定を制御装置１０３宛に継続して送信する（Ｓ１２３１）。この際、通信装置２は、Ｓ１２３１のコマンド設定のパケットがホワイトリストに登録されていることを確認し、コマンド設定を通過させる（Ｓ１２３２）。制御装置１０３は、機器１０１−１に制御コマンドを送信する（Ｓ１２３３）。
【０１４７】
次に、制御装置１０３は、センサデータをセンサ１０２−１から取得し（Ｓ１２３４）、取得したセンサデータを制御サーバ１０４宛に送信する（Ｓ１２３６）。この際、通信装置２は、機器１０１−１の停止により、Ｓ１２３６のセンサデータが正常な値の範囲に含まれることを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１２３５）。
【０１４８】
また、制御装置１０３は、センサデータをセンサ１０２−２から取得し（Ｓ１２３７）、センサデータを制御サーバ１０４宛に送信する（Ｓ１２３９）。この際、機器１０１−２は異常なコマンド設定による制御コマンドを受信していないため、通信装置２は、Ｓ１２３９のセンサデータが正常な値を示すことを確認して、センサデータを制御サーバ１０４に転送する（Ｓ１２３８）。次に、通信装置２は、取得したセンサデータを分析サーバ１０５に通知する（Ｓ１２４０）。
【０１４９】
＜パケットの処理のフローチャートの例＞
次に、図１３、図１４Ａ及び図１４Ｂを用いて実施例２の通信装置２のパケットの処理のフローチャートの例を示す。
【０１５０】
図１３は、実施例２の通信装置２における通信ネットワーク１０７側から受信するパケットの処理Ｓ１３５０のフローチャートである。
【０１５１】
通信装置２がインタフェース２０１−２からパケットを受信した場合（Ｓ１３００）、パケット解析部２０２−２がパケットデータを解析し、コネクションＩＤを特定する（Ｓ１３０１）。その後、パケット解析部２０２−２は、ステップＳ１３００で受信したパケットが装置管理部２０８宛のパケットか否かを判定する（Ｓ１３０２）。
【０１５２】
ステップＳ１３０２で装置管理部２０８宛のパケットであると判定された場合（Ｙｅｓ）、パケット解析部２０２−２は、装置管理部２０８にパケットを転送する。実施例１と同様に、分析サーバ１０５から受信するクラスタ分布データ、事前学習指示、異常検知の開始指示などのパケットが装置管理部２０８に転送される。通信装置２は、装置管理部２０８経由で各機能部や各データベースを設定し（Ｓ１３０３）、処理Ｓ１３５０を終了する（Ｓ１３１３）。
【０１５３】
また、パケット解析部２０２−２は、制御サーバ１０４から受信するコマンド設定のパケットを装置管理部２０８に転送せず、リスト検索部２０３に転送する。ステップＳ１３０２で装置管理部２０８宛のパケットではないと判定された場合（Ｎｏ）、通信装置２は、リスト検索部２０３がリスト透過モードであるか否かを判定する（Ｓ１３０４）。例えば、リスト透過モードは、事前学習の指示がされる前にコマンド設定をそのまま中継する場合に使用される。
【０１５４】
ステップＳ１３０４でリスト検索部２０３がリスト透過モードであると判定された場合（Ｙｅｓ）、リスト検索部２０３はパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１からパケットを出力して（Ｓ１３１２）、処理Ｓ１３５０を終了する（Ｓ１３１３）。一方、ステップＳ１３０４でリスト検索部２０３がリスト透過モードではないと判定された場合（Ｎｏ）、通信装置２は、次に、リスト検索部２０３が事前学習モードであるか否かを判定する（Ｓ１３０５）。
【０１５５】
ステップＳ１３０５で、リスト検索部２０３が事前学習モードであると判定された場合（Ｙｅｓ）、リスト検索部２０３は、ステップＳ１３０１で特定したコネクションＩＤが示すアクセスリスト３のエントリにおいて、ホワイトリストＶａｌｉｄ１００２を有効に設定し、コネクション情報及び管理情報を更新する（Ｓ１３０６）。その後、リスト検索部２０３はパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１からパケットを出力して（Ｓ１３１２）、処理Ｓ１３５０を終了する（Ｓ１３１３）。
【０１５６】
ステップＳ１３０５でリスト検索部２０３が事前学習モードでないと判定された場合（Ｎｏ）、リスト検索部２０３は、ステップＳ１３０１で特定したコネクションＩＤを検索キーとしてアクセスリスト３を検索する（Ｓ１３０７）。一方、ステップＳ１３０５でリスト検索部２０３が事前学習モードでない場合（Ｎｏ）、異常検知の開始指示が設定されたことを示す。
【０１５７】
ステップＳ１３０７の後、リスト検索部２０３は、アクセスリスト３内のブラックリストＶａｌｉｄ１００４が有効であるか否かを判定する（Ｓ１３０８）。ステップＳ１３０８でブラックリストＶａｌｉｄ１００４が有効であると判定された場合（Ｙｅｓ）、リスト検索部２０３は、処理Ｓ１３５０を終了し（Ｓ１３１３）、パケットを廃棄する。なお、通信装置２は、ステップＳ１３０８でブラックリストＶａｌｉｄ１００４の有効判定によりパケットを廃棄したことを装置管理部２０８に通知してもよい。
【０１５８】
ステップＳ１３０８でブラックリストＶａｌｉｄ１００４が無効であると判定された場合（Ｎｏ）、通信装置２は、アクセスリスト３内のホワイトリストＶａｌｉｄ１００２が有効であるか否かを判定する（Ｓ１３０９）。ステップＳ１３０９でホワイトリストＶａｌｉｄ１００２が有効であると判定された場合（Ｙｅｓ）、リスト検索部２０３はパケット挿入調整部２０７−２にパケットを転送し、インタフェース２０１−１からパケットを出力して（Ｓ１３１２）、処理Ｓ１３５０を終了する（Ｓ１３１２）。
【０１５９】
ステップＳ１３０９でホワイトリストＶａｌｉｄ１００２が無効であると判定された場合（Ｎｏ）、リスト検索部２０３は、アクセスリスト３内のグレーリストＶａｌｉｄ１００３が有効であるか否かを判定する（Ｓ１３１０）。ステップＳ１３１０でグレーリストＶａｌｉｄ１００３が有効であると判定された場合（Ｙｅｓ）、リスト検索部２０３はパケット挿入調整部２０７−２にパケットを転送し、インタフェース２０１−１からパケットを出力して（Ｓ１３１２）、処理Ｓ１３５０を終了する（Ｓ１３１２）。
【０１６０】
ステップＳ１３１０でグレーリストＶａｌｉｄ１００３が無効であると判定された場合（Ｎｏ）、リスト検索部２０３は、ステップＳ１３０１で特定したコネクションＩＤが示すアクセスリスト３のエントリにおいて、グレーリストＶａｌｉｄ１００３を有効に設定し、コネクション情報及び管理情報を更新する（Ｓ１３１１）。その後、リスト検索部２０３はパケット挿入調整部２０７−２にパケットを転送し、インタフェース２０１−１からパケットを出力して（Ｓ１３１２）、処理Ｓ１３５０を終了する（Ｓ１３１３）。
【０１６１】
図１４Ａ及び図１４Ｂは、実施例２の通信装置２における制御装置１０３側から受信するパケットの処理Ｓ１４５０のフローチャートである。
【０１６２】
通信装置２がインタフェース２０１−１からパケットを受信した場合（Ｓ１４００）、パケット解析部２０２−１がパケットデータを解析し、センサＩＤを特定し、センサデータを取得して、異常監視部２０４に送る（Ｓ１４０１）。その後、異常監視部２０４は、ステップＳ１４０１で取得したセンサデータをセンサデータ用データベース２１０に格納する（Ｓ１４０２）。さらに、異常監視部２０４は、ステップＳ１４０１で取得したセンサＩＤを検索キーとして機器−センサ対応データベース４を検索し、クラスタＤＢ＿ＩＤ４０２及び機器ＩＤ４０３を取得する。また、異常監視部２０４は、取得したクラスタＤＢ＿ＩＤ４０２を検索キーとしてクラスタ分布データベース２０９を検索し、取得したセンサデータの正常な値を示すかを取得する。さらに、通信装置２は、取得した機器ＩＤ４０３を検索キーとしてグルーピングデータベース５を検索し、グループＩＤ５０２を取得する（Ｓ１４０３）。
【０１６３】
その後、通信装置２は、処理Ｓ１４０４及び処理Ｓ１４０５〜Ｓ１４１１を並列に処理する。なお、処理Ｓ１４０４と処理Ｓ１４０５からＳ１４１１とを順番に実行してもよく、いずれの処理を先に実行してもよい。
【０１６４】
ステップＳ１４０４で、異常監視部２０４は、パケット挿入調整部２０７−１にパケットを転送し、インタフェース２０１−２からパケットを出力する（Ｓ１４０４）。
【０１６５】
一方、ステップＳ１４０５で、異常監視部２０４は、分析サーバ１０５より異常検出が指示され、かつ、取得したセンサデータから異常を検出したか否かを判定する。ステップＳ１４０５で、異常検出の指示がない、又は、取得したセンサデータから異常検出なしと判定された場合（Ｎｏ）、通信装置２は処理Ｓ１４５０を終了待ち状態とする。
【０１６６】
ステップＳ１４０５で、異常検出が指示され、かつ、取得したセンサデータから異常を検出したと判定された場合（Ｙｅｓ）、リスト判定部２０５は、アクセスリスト３の全エントリを検索し、グレーリストＶａｌｉｄ１００３が有効であり、かつ、ステップＳ１４０３で取得した機器ＩＤ４０３宛のコネクション情報（機器ＩＤ１００７）を持つエントリの有無を判定する（Ｓ１４０６）。
【０１６７】
ステップＳ１４０７で該当するエントリが有ると判定された場合（Ｙｅｓ）、リスト判定部２０５は、アクセスリスト３において、取得した機器ＩＤ４０３宛のコネクション情報（機器ＩＤ１００７）を持つコネクションのグレーリストＶａｌｉｄ１００３を無効に設定し、ブラックリストＶａｌｉｄ１００４を有効に設定する（Ｓ１４０８）。その後、通信装置２は処理Ｓ１４５０を終了待ち状態とする。
【０１６８】
ステップＳ１４０７で該当するエントリが無いと判定された場合（Ｎｏ）、リスト判定部２０５は、アクセスリスト３の全エントリを検索し、ホワイトリストＶａｌｉｄ１００２が有効であり、かつ、ステップＳ１４０３で取得した機器ＩＤ４０３宛のコネクション情報（機器ＩＤ１００７）を持つエントリの有無を判定する（Ｓ１４０９）。
【０１６９】
ステップＳ１４１０で該当するエントリが無いと判定された場合（Ｎｏ）、通信装置２は処理Ｓ１４５０を終了待ち状態とする。なお、この場合は、制御サーバ１０４から送信されるコマンド設定の異常の有無とは関係なく、制御システムの機器１０１が故障していることが推定される。図１４には図示していないが、ステップＳ１４１０で該当するエントリが無いと判定された場合、通信装置２は、機器の故障被疑を分析サーバ１０５に通知してもよい。
【０１７０】
ステップＳ１４１０で該当するエントリが有ると判定された場合（Ｙｅｓ）、リスト判定部２０５は、該当するエントリの機器ＩＤ４０３と同じグループＩＤ５０２を持つ機器ＩＤ５０１を抽出する。リスト判定部２０５は、アクセスリスト３において、抽出した機器ＩＤ５０１を持つコネクションのホワイトリストＶａｌｉｄ１００２を無効に設定し、ブラックリストＶａｌｉｄ１００４を有効に設定する。さらに、リスト判定部２０５は、抽出した機器ＩＤ５０１宛の停止コマンド用のパケットを作成し、作成したパケットをパケット挿入調整部２０７−２に転送し、インタフェース２０１−１から停止コマンド用のパケットを出力する（Ｓ１４１１）。そして、通信装置２は処理Ｓ１４５０を終了待ち状態とする。
【０１７１】
その後、処理Ｓ１４０４が終了し、かつ、処理Ｓ１４０５〜Ｓ１４１１が終了した後に、処理Ｓ１４５０を終了する（Ｓ１４１２）。
【０１７２】
前述のとおり、実施例２によれば、アクセスリスト３、機器−センサ対応データベース４、及びグルーピングデータベース５を用いて、機器１０１へのコマンド設定とセンサ１０２のセンサデータと制御グループ（複数の機器１０１の関係）を対応づけて異常を監視することで、必要最低限の機器１０１を安全に停止できる。さらに、実施例２によれば、アクセスリスト３を、通信を制御する優先度が異なる制御リスト（ホワイトリスト、グレーリスト、ブラックリスト）を使用し、通信を通過させる優先度が低い順にリストを参照して、通信を遮断するデータを決定するので、侵入や成りすましなどコマンド設定の異常の種類により、機器１０１を復旧させてシステムを継続させたり、必要最低限の機器１０１を安全に停止させたり、様々な対応が可能となる。また、新たなアドレスの機器をグレーリストに登録した後に、センサデータを判定してブラックリストやホワイトリストに登録するので、システムの変更に柔軟に対応でき、新しい構成のシステムにも対応できる。
【０１７３】
従って、実施例２によれば、制御システムにおいて、機器の異常検出時に波及範囲を抑えながらセキュリティ対策を実施し、制御システムの可用性を向上できる。このため、システムの稼働率を向上できる。
【０１７４】
なお、本実施例では、通信装置２を制御装置１０３と制御サーバ１０４（通信ネットワーク１０７）との間に設けたが、例えば、機器１０１（制御ネットワーク１０６）と制御装置１０３との間に設け、機器１０１への制御コマンドとセンサデータと制御グループ（複数の機器１０１の関係）とを対応づけて異常を監視する制御システムに本発明を適用してもよい。また、制御装置１０３がなく、制御サーバ１０４から機器１０１宛に直接制御コマンドが送信される場合でも、機器１０１への制御コマンドとセンサデータと制御グループ（複数の機器１０１の関係）を対応づけて異常を監視する制御システムに本発明を適用してもよい。
【０１７５】
なお、本実施例では、通信装置２は、アクセスリスト３においてホワイトリストにもブラックリストにも登録されていないコマンド設定のパケットをグレーリストに登録したが、例えば、センサ応答学習部２０６の学習結果などと組み合わせ、グレーリストに登録したコマンド設定のパケットによりセンサデータが正常である（例えば、所定回数のセンサデータに異常が見られない、所定時間のセンサデータに異常が見られない）ことを判断すると、該当パケットをホワイトリストに登録してもよい。
【０１７６】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１７７】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１７８】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１７９】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１８０】
２  通信装置
１０１−１、１０１−２  機器
１０２−１、１０２−２  センサ
１０３  制御装置
１０４  制御サーバ
１０５  分析サーバ
１０６  制御ネットワーク
１０７  通信ネットワーク
【図１】
2017216569.tif 000003
【図２】
2017216569.tif 000004
【図３】
2017216569.tif 000005
【図４】
2017216569.tif 000006
【図５】
2017216569.tif 000007
【図６】
2017216569.tif 000008
【図７Ａ】
2017216569.tif 000009
【図７Ｂ】
2017216569.tif 000010
【図８】
2017216569.tif 000011
【図９】
2017216569.tif 000012
【図１０】
2017216569.tif 000013
【図１１】
2017216569.tif 000014
【図１２】
2017216569.tif 000015
【図１３】
2017216569.tif 000016
【図１４Ａ】
2017216569.tif 000017
【図１４Ｂ】
2017216569.tif 000018