(57)【要約】【課題】機器に異常が起きたことを素早く検知し、機器を継続して正常に動作させる。【解決手段】運用系制御装置は、ネットワーク装置を介して運用系制御装置と接続された機器を制御し、ネットワーク装置は、該機器の状態を計測する監視センサに接続され、監視センサによる計測値を受信し、受信した計測値が予め定められた範囲に含まれないと判定した場合、運用系制御装置と該機器との接続を解除し、かつネットワーク装置を介して待機系制御装置と該機器とを接続する、切替え処理を実行し、待機系制御装置は、切替え処理が実行された後、該機器を制御する。【選択図】図１
2017228887.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク装置と、前記ネットワーク装置に接続された運用系制御装置と、待機系制御装置と、を含む制御システムであって、
前記運用系制御装置は、前記ネットワーク装置を介して前記運用系制御装置と接続された機器を制御し、
前記ネットワーク装置は、
前記機器の状態を計測する監視センサに接続され、
前記監視センサによる計測値を受信し、
前記受信した計測値が予め定められた範囲に含まれないと判定した場合、前記運用系制御装置と前記機器との接続を解除し、かつ前記ネットワーク装置を介して前記待機系制御装置と前記機器とを接続する、切替え処理を実行し、
前記待機系制御装置は、前記切替え処理が実行された後、前記機器を制御する、制御システム。
【請求項２】
請求項１に記載の制御システムであって、
前記運用系制御装置は、
運用系制御プログラムを保持し、
前記運用系制御プログラムに従って前記機器を制御し、
前記ネットワーク装置は、
前記運用系制御装置が送受信するパケットを監視し、
前記運用系制御装置が受信するパケットを解析して、当該パケットの送信元を特定し、
前記受信した計測値が前記範囲に含まれず、かつ前記運用系制御プログラムを書き換える第１書き換え命令に対する完了通知を含む第１パケットを前記運用系制御装置が送信した、ことを示す第１条件、が満たされると判定した場合、前記第１書き換え命令を含む第２パケットの送信元を示す情報を通知する、制御システム。
【請求項３】
請求項２に記載の制御システムであって、
前記第１条件は、前記受信した計測値が前記範囲に含まれず、前記運用系制御装置が前記第１パケットを送信し、かつ前記受信した計測値が前記範囲に含まれないと判定された時刻が、前記運用系制御装置が前記第１パケットを送信した時刻より後である、ことを示す、制御システム。
【請求項４】
請求項２又は３のいずれか一つに記載の制御システムであって、
前記ネットワーク装置は、
前記運用系制御装置宛のパケットを受信して、前記運用系制御装置に転送し、
前記第１条件が満たされると判定した場合、前記第２パケットの送信元から受信するパケットの前記運用系制御装置への転送を停止する、制御システム。
【請求項５】
請求項２又は３のいずれか一つに記載の制御システムであって、
前記ネットワーク装置は、
更新用制御プログラムを保持する管理制御装置が受信するパケットを監視し、
前記管理制御装置が受信するパケットを解析して、当該パケットの送信元を特定し、
前記管理制御装置は、
前記更新用制御プログラムを書き換える第２書き換え命令を含むパケットを受信した場合、前記更新用制御プログラムを書き換え、前記運用系制御装置に対して、書き替え後の前記更新用制御プログラムを用いて前記運用系制御プログラムを上書きする命令を含むパケットを前記第２パケットとして送信し、
前記ネットワーク装置は、前記第１条件が満たされ、かつ前記管理制御装置が前記第２書き換え命令に対する完了通知を含む第３パケットを送信したと判定した場合、前記第２書き換え命令を含む第４パケットの送信元を示す情報を通知する、制御システム。
【請求項６】
請求項５に記載の制御システムであって、
前記ネットワーク装置は、
前記管理制御装置宛のパケットを受信して、前記管理制御装置に転送し、
前記第１条件が満たされ、かつ前記運用系制御装置が前記第３パケットを送信したと判定した場合、前記第４パケットの送信元から受信するパケットの前記管理制御装置への転送を停止する、制御システム。
【請求項７】
請求項４に記載の制御システムであって、
前記ネットワーク装置は、前記第２パケットの送信元から受信したパケットの前記運用系制御装置への転送を停止することを通知する、制御システム。
【請求項８】
請求項６に記載の制御システムであって、
前記ネットワーク装置は、前記第４パケットの送信元から受信したパケットの前記管理制御装置への転送を停止することを通知する、制御システム。
【請求項９】
請求項１に記載の制御システムであって、
前記ネットワーク装置は、前記切替え処理を実行したことを通知する、制御システム。
【請求項１０】
運用系制御装置と待機系制御装置を制御するネットワーク装置であって、
前記ネットワーク装置を介して接続された機器を制御する前記運用系制御装置、に接続され、
前記機器の状態を計測する監視センサに接続され、
前記監視センサによる計測値を受信する異常検知部と、
前記異常検知部が前記受信した計測値が予め定められた範囲に含まれないと判定した場合、前記運用系制御装置と前記機器との接続を解除し、かつ前記ネットワーク装置を介して前記待機系制御装置と前記機器とを接続するスイッチ制御部と、を含む、ネットワーク装置。
【請求項１１】
運用系制御装置と待機系制御装置を、ネットワーク装置が制御する制御方法であって、
前記ネットワーク装置は、前記ネットワーク装置を介して接続された機器を制御する前記運用系制御装置、に接続され、
前記制御方法は、
前記ネットワーク装置が、
前記機器の状態の計測値を受信し、
前記受信した計測値が予め定められた範囲に含まれないと判定した場合、前記運用系制御装置と前記機器との接続を解除し、かつ前記ネットワーク装置を介して前記待機系制御装置と前記機器とを接続する、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、ネットワーク装置、及び制御装置の制御方法に関する。
【背景技術】
【０００２】
近年、スマートファクトリーに代表されるように工場のオープン化が進み、工場内の機器を制御するプログラマブルコントローラ（以下、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ））を、公衆網を経由して遠隔地から制御することにより、工場内の機器を制御することが可能となってきた。ＰＬＣの異常を検知する技術として、特開２０１３−１４３０７７号公報（特許文献１）がある。
【０００３】
特許文献１には、「制御対象５を制御するＰＬＣ１の動作状態を監視するＰＬＣ監視方法であって、ＰＬＣ１ｂは、自身とは別のＰＬＣ１ａから、このＰＬＣ１ａで実行されているユーザプログラムが出力した制御命令を取得し、取得した制御命令を基に、検証用データを作成することを特徴とする。そして、ＰＬＣ１ｂは、検証用データを用いて、制御命令の送信元のＰＬＣ１ａがウィルスに感染していないか否かを検証したり、検証用データをＰＣ２へ送信し、ＰＣ２がこの検証用データを表示装置に表示することで、ユーザがＰＬＣ１ａのウィルスの感染を検証したりする。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１４３０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術において、スレーブ側のＰＬＣ検証用データを生成し、生成した検証用データを用いてマスタ側のＰＬＣの異常を検知するが、マスタ側のＰＬＣはスレーブ側の当該生成処理及び当該検知処理の間も、制御対象機器に制御命令を送信している。つまり、特許文献１に記載の技術は、機器の連続的な正常稼働を求められる産業制御システムにおいて、連続的な正常稼働を担保することができない。本発明の一態様は、機器に異常が起きたことを素早く検知し、機器を継続して正常に動作させる事を目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の一態様は、以下の構成を採用する。ネットワーク装置と、前記ネットワーク装置に接続された運用系制御装置と、待機系制御装置と、を含む制御システムであって、前記運用系制御装置は、前記ネットワーク装置を介して前記運用系制御装置と接続された機器を制御し、前記ネットワーク装置は、前記機器の状態を計測する監視センサに接続され、前記監視センサによる計測値を受信し、前記受信した計測値が予め定められた範囲に含まれないと判定した場合、前記運用系制御装置と前記機器との接続を解除し、かつ前記ネットワーク装置を介して前記待機系制御装置と前記機器とを接続する、切替え処理を実行し、前記待機系制御装置は、前記切替え処理が実行された後、前記機器を制御する、制御システム。
【発明の効果】
【０００７】
本発明の一態様によれば、機器に異常が起きたことを素早く検知し、機器を継続して正常に動作させることができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】実施例１における産業制御システムの構成例を示す説明図である。
【図２】実施例１における、第１の攻撃を受けた産業制御システムの処理の一例を示すシーケンス図である。
【図３】実施例１における、第２の攻撃を受けた産業制御システムの処理の一例を示すシーケンス図である。
【図４】実施例１におけるゲートウェイのハードウェア構成例を示すブロック図である。
【図５】実施例１におけるゲートウェイの他のハードウェア構成例を示すブロック図である。
【図６】実施例１におけるゲートウェイの構成例を示すブロック図である。
【図７】実施例１における機器情報テーブルの一例である。
【図８】実施例１における物理ポート管理テーブルの一例である。
【図９】実施例１におけるスイッチテーブルの一例である。
【図１０】実施例１における冗長パス登録テーブルの一例である。
【図１１】実施例１におけるゲートウェイの切替え処理の一例を示す概要図である。
【図１２】実施例１におけるセンサデータテーブルの一例である。
【図１３】実施例１における、産業制御システムが第１の攻撃を受けた場合における監視結果テーブルの例である。
【図１４】実施例１における、産業制御システムが第２の攻撃を受けた場合における監視結果テーブルの例である。
【図１５】実施例１におけるゲートウェイの各データベースの設定処理の一例を示すフローチャートである。
【図１６】実施例１における運用開始後のゲートウェイの処理の一例を示すフローチャートである。
【図１７】実施例１における運用開始後のゲートウェイによる判定のアルゴリズムの一例を示すテーブルである。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【実施例１】
【００１０】
図１は、本実施例のゲートウェイを含む産業制御システムの構成例を示す説明図である。産業制御システム１０は、例えば、ＳＣＡＤＡ設計ツール１０４、ゲートウェイ１０５、運用コントローラ１０６、待機コントローラ１０７、フィールド機器１１０、及び監視センサ１１１を含む。ゲートウェイ１０５は、ネットワーク装置の一例である。以下、運用コントローラ１０６及び待機コントローラ１０７を特に区別する必要が無い場合、単にコントローラとも呼ぶ。
【００１１】
産業制御システム１０は、例えば、階層的にネットワークを構成する。階層的なネットワークは、上位階層から順番に情報ネットワーク、制御情報ネットワーク、コントロールネットワーク１０２、フィールドネットワーク１０３を含む。図１では、情報ネットワークと制御情報ネットワークからなるネットワークを上位ネットワーク１０１として纏めて簡略化して記載している。
【００１２】
情報ネットワークは、例えば、オフィス内のネットワークであり、情報ネットワーク内にパソコンや外部ネットワークとの接続サーバ等が置かれる。制御情報ネットワークは、製造スケジューリングの管理、製造実績の収集、工程の進捗管理等が行われる工場内のネットワークであり、制御情報ネットワーク内にパソコンやサーバ等が置かれる。また、オフィスと工場を隔てる情報ネットワークと制御情報ネットワークの間にファイアウォールを入れてセキュリティを確保する運用が一般的である。
【００１３】
上位ネットワーク１０１において、例えば、標準のイーサネット(登録商標、以下同)が使用される。コントロールネットワーク１０２は、例えば、主に制御装置間の情報交換を行い、生産情報をリアルタイムで把握しコントロールするネットワークである。
【００１４】
図１では、ＰＬＣ等のコントローラ、及びコントローラの制御プログラムを作成するＳＣＡＤＡ設計ツール１０４が、ネットワーク装置の一例であるゲートウェイ１０５に接続されている。コントローラは例えば、論理制御装置である。コントローラは、制御プログラムを保持する。ＳＣＡＤＡ設計ツール１０４は、例えば、プロセッサ、メモリ、入出力インタフェース、及び通信インタフェースを含む計算機によって構成される。ＳＣＡＤＡ設計ツール１０４は、例えば、入出力インタフェースを介して入力装置及び出力装置（表示装置）に接続される。ＳＣＡＤＡ設計ツール１０４は、コントローラを管理する管理制御装置でもあり、コントローラの制御プロセスの状態表示や制御プログラムの書き込みや書き換え設定をすることが可能である。コントローラは、ＤＣＳ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）を含む。
【００１５】
フィールドネットワーク１０３は、工場のライン内の装置制御を行うためのネットワークであり、フィールド機器１１０とコントローラとの間の通信を行うためのネットワークである。フィールド機器１１０は、アクチュエータ等の工場に設置される機器である。フィールド機器１１０は、流量センサ及び制御バルブをセンサバスで集約したリモートＩ／Ｏ(Ｉｎｐｕｔ／Ｏｕｔｐｕｔ)等を含む。
【００１６】
コントロールネットワーク１０２とフィールドネットワーク１０３では、例えば、標準のイーサネットとは異なる産業用イーサネットが利用されてもよい。産業用イーサネットは、ＦＬ−Ｎｅｔ（登録商標、以下同）、Ｅｔｈｅｒｎｅｔ／ＩＰ(登録商標、以下同)、Ｐｒｏｆｉｎｅｔ(登録商標、以下同)、ＥｔｈｅｒＣＡＴ(登録商標、以下同)、ＣＣ−ＬｉｎＫ  ＩＥ(登録商標、以下同)等を含む。以下、コントロールネットワーク１０２とフィールドネットワーク１０３において、産業用イーサネットが利用されているものとする。
【００１７】
コントローラは、コントロールネットワーク１０２とフィールドネットワーク１０３に挟まれた位置にあり、上位と下位のネットワークでは異なるプロトコルで通信を行うことが一般的である。なお、本実施例では、産業制御システム１０は工場のフィールド機器を制御する例を説明するが、産業制御システム１０は、例えば、石油プラント又は化学プラント等に設置された機器を制御してもよいし、自動車のＥＣＵ（Ｅｎｇｉｎｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）を制御ししてもよい。
【００１８】
次に外部ネットワークからの攻撃について説明する。近年、工場等の産業制御システムは、外部ネットワークとの接続をオープン化することにより、多角化するサイバー攻撃に曝される可能性が高くなり、サイバー攻撃に対して高いセキュリティを確保することが求められる。そこで本実施形態の産業制御システム１０においては、悪意ユーザ端末１００による攻撃が上位ネットワーク１０１を抜けた場合であっても、ゲートウェイ１０５が当該攻撃によるフィールド機器１１０の異常動作を即時に検出する。
【００１９】
本実施形態では、悪意ユーザ端末１００が、インターネット網等を通じて産業制御システム１０に侵入し、許可されたＩＰアドレスに成り済まして、上位ネットワーク１０１を抜け、コントロールネットワーク１０２に接続されたＳＣＡＤＡ設計ツール１０４又は運用コントローラ１０６に不正アクセスを行う例を説明する。
【００２０】
攻撃１は、ＳＣＡＤＡ設計ツール１０４に不正アクセスを行い、ＳＣＡＤＡ設計ツール１０４を介して運用コントローラ１０６が保持する制御プログラムを書き換える攻撃である。悪意ユーザ端末１００は、攻撃１によって、フィールド機器１１０の破壊や暴走、品質粗悪品を生産させるためのデータの改竄等を実行する。
【００２１】
攻撃２は、悪意ユーザ端末１００が直接、運用コントローラ１０６が保持する制御プログラムに不正アクセスを行う攻撃である。悪意ユーザ端末１００が、攻撃２を実行する場合のように、運用コントローラ１０６のメモリ上に直接書き込み可能であれば、運用状態中のシーケンス変更が容易に行える。つまり攻撃２は、攻撃１と同様、フィールド機器１１０に対して深刻な状態を引き起こす。なお、ＩＰアドレスの成り済まし以外の侵入方法として、ウイルスに感染した管理端末のソフトウェアを経由して、バックドアが開けられて侵入するケースがある。
【００２２】
ゲートウェイ１０５は、コントロールネットワーク１０２を内部に取り込むため、複数の物理ポートを有する。ゲートウェイ１０５は、複数の物理ポートを持つためＨＵＢとしてのスイッチング機能１２７を搭載している。
【００２３】
物理ポート６０１は、上位ネットワーク１０１との接続ポートである。物理ポート６０２は、ＳＣＡＤＡ設計ツール１０４との接続ポートである。物理ポート６０３は、運用コントローラ１０６の上位ネットワーク側の接続ポートである。物理ポート６０４は、運用コントローラ１０６の下位ネットワーク側の接続ポートである。物理ポート６０５は、待機コントローラ１０７の下位ネットワーク側の接続ポートである。物理ポート６０６は、フィールドネットワーク１０３との接続ポートである。
【００２４】
物理ポート６０７は、監視センサ１１１との接続ポートである。本実施例では、物理ポートを用いた接続が記載しているが、各ネットワークとゲートウェイ１０５との接続においては、無線ネットワークによる接続が用いられてもよい。
【００２５】
ゲートウェイ１０５は、コントロールネットワーク１０２を内部に取り込み、運用コントローラ１０６の上位のネットワークと下位のネットワークの両方を跨ぐ位置に配備されている。そのため、ゲートウェイ１０５は、複数の産業用イーサネットのプロトコルをサポートしている。
【００２６】
ゲートウェイ１０５は、物理ポート６０７を使用し、フィールド機器１１０を直接監視する監視センサ１１１を収容する。監視センサ１１１は、フィールド機器１１０の状態を計測する。フィールド機器１１０の状態は、フィールド機器１１０が設置された環境を含む。監視センサ１１１は、振動、歪み、音、温度、湿度、加速度、及び角速度等の１以上の項目を測定可能なセンサ、並びに画像解析用のカメラを含む。監視センサ１１１による測定項目は、監視対象のフィールド機器１１０の異常検出手段に合わせて、予め定められている。
【００２７】
監視センサ１１１は、例えば、取得したデータを、電流や電圧等に変換し、さらにデジタル信号として扱えるようにＡ／Ｄ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ）変換した後、特定のプロトコルに変換後のセンサ情報をマッピングした上でパケットとして扱える状態で、ゲートウェイ１０５の物理ポート６０７に入力する。当該特定のプロトコルは、ＭＱＴＴ（Ｍｅｓｓａｇｅ  Ｑｕｅｕｅｉｎｇ  Ｔｅｌｅｍｅｔｒｙ  Ｔｒａｎｓｐｏｒｔ）等を含む。なお、本実施形態においてパケットは、ＯＳＩ参照モデルのネットワーク層のデータユニットのみを示す表現ではなく、ＯＳＩ参照モデルの他のレイヤにおけるデータユニットであってもよい。
【００２８】
ゲートウェイ１０５のセンサデータ異常検出機能１２２は、監視センサ１１１から受信したセンサデータを解析してフィールド機器１１０の異常発生を検知する。ゲートウェイ１０５のセンサデータ異常検出機能１２２は、例えば、ゲートウェイ１０５を設置する保守者等によって予め設定されたパラメータ範囲（上限値、下限値）と、監視センサ１１１から取得した生のセンサデータと、の比較をリアルタイムに行い異常を検知する。センサデータ異常検出機能１２２は、統計学的手法に基づいたはずれ値検知等を使用して当該比較を実行してもよい。なお、パラメータは上限値及び下限値で特定されていなくてもよく、例えば、分布範囲で特定されてもよい。
【００２９】
なお、上述したパラメータ範囲は、保守者が介在せずに設定されてもよい。具体的には、例えば、センサデータ異常検出機能１２２は、ゲートウェイ１０５の運用前に、フィールド機器１１０が正常に動いている段階で、取得するパラメータ範囲を、センサデータから学習してもよい。なお、図１２では、各監視センサ１１１に対して、入力範囲が１つ設定されている例が記載されているが、各監視センサ１１１に対して複数の入力範囲が設定されてもよい。また、各入力範囲は１つの値からなってもよい。
【００３０】
異常検知における統計学的手法を用いた計算のように、ゲートウェイ搭載のＣＰＵが当該計算を実行することが難しい場合は、センサデータ異常検出機能１２２はセンサデータを一度、外部サーバ等に転送し、別途、上限値、下限値のパラメータだけをゲートウェイ１０５に戻す方法でも良い。センサデータ異常検出機能１２２は、例えば、計算量及びデータ量等に応じて、当該計算をゲートウェイ１０５が実施するか、又は外部サーバが実施するかを判断してもよい。
【００３１】
ゲートウェイ１０５の切替え処理機能１２３は、センサデータ異常検出機能１２２からの異常検知をトリガにして、運用コントローラ１０６から待機コントローラ１０７に切替え処理を行う。切替え処理機能１２３は、例えば、外部ネットワークからの不正アクセスを判定する不正判定機能１２５による出力結果に関わらず、当該トリガに従って切替え処理を行う。当該切替え処理によって、センサデータに異常が発生しても、フィールド機器１１０を継続して制御することができる。
【００３２】
待機コントローラ１０７は、コントロールネットワーク１０２から切り離した状態、即ち接続無しの状態で、かつホットスタンバイの状態で運用される。待機コントローラ１０７は、悪意ユーザ端末１００による外部ネットワークからの攻撃１、及び攻撃２等を受けないように、完全に上位ネットワークから切り離されている。
【００３３】
本実施例においては、産業制御システム１０の運用前に、例えば、運用コントローラ１０６から待機コントローラ１０７に制御プログラムがコピーされる。つまり、例えば、フィールド機器１１０が正常に動いている段階での制御プログラムが、運用コントローラ１０６から外部メディアを経由して待機コントローラ１０７にバックアップとしてコピーされる。
【００３４】
運用コントローラ１０６と待機コントローラ１０７は、二重化同期ケーブル１０８を通じて同期した運用がなされる。制御プログラムのシーケンスについて、運用コントローラ１０６と待機コントローラ１０７でタイミングを合わせるための同期情報が、二重化同期ケーブル１０８を介してやり取りされる。
【００３５】
本実施例においてゲートウェイ１０５が切替え処理機能１２３を持つことにより、産業制御システム１０において独立した二系統を準備したコントローラであっても、フィールドネットワーク１０３以下の構成を一重化構成で済むようにしている。ゲートウェイ１０５の中の切替え処理機能１２３は、運用コントローラ１０６と待機コントローラ１０７から選択した一方のからの出力を出力する。また、コントローラに対する入力は、運用コントローラ１０６と待機コントローラ１０７の両方に入力される。これにより待機コントローラ１０７は、運用コントローラ１０６と完全に同期させたホットスタンバイ運用が可能となる。
【００３６】
また、１つのユニットに二系統（二重化構成）を入れたコントローラ（ＰＬＣ）も存在する、即ち１つのユニットが即ち運用コントローラ１０６と待機コントローラ１０７を含む。当該コントローラにおける、運用コントローラ１０６に相当する部及び待機コントローラ１０７に相当する部それぞれと、上位のネットワークと、の接続が完全に独立していれば、産業制御システム１０に当該コントローラを用いても本実施例と同じ構成が可能である。
【００３７】
ゲートウェイ１０５は、内部に取り込んだコントロールネットワーク１０２上を通過するパケットを監視する制御パケット監視機能１２４を搭載している。制御パケット監視機能１２４の監視対象は、上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４及び運用コントローラ１０６へのアクセス、並びにＳＣＡＤＡ設計ツール１０４から運用コントローラ１０６へのアクセスにおけるパケットである。
【００３８】
ゲートウェイ１０５のスイッチング機能１２７は、スイッチテーブルを参照して内部のパスを管理する。制御パケット監視機能１２４は、当該パスに紐付けて、受信した制御パケットに含まれる制御コマンドを時系列に並べて情報を保持してもよい。不正判定機能１２５は、センサデータ異常検出機能１２２からの通知と、制御パケット監視機能１２４が保持する時系列の制御コマンド情報と、を用いて外部ネットワークからの不正アクセスの有無を判定する。
【００３９】
悪意ユーザ端末１００が、許可されたＩＰアドレスに成り済まして侵入する場合や、ウイルスに感染した管理端末のソフトウェアを経由して、バックドアを開けて侵入する場合は、個々の制御パケットのみ監視によって正常なアクセスか、不正なアクセスかは判断できない。不正判定機能１２５は、実際のフィールド機器１１０の異常発生と、制御パケット情報の時系列と、から外部ネットワークからの不正アクセスを正しく判断することができる。
【００４０】
ゲートウェイ１０５は、外部ネットワークからの不正アクセスを遮断するパケット遮断機能１２６を搭載している。パケット遮断機能１２６は、不正判定機能１２５が特定した不正アクセスのパス情報に基づいて、不正アクセスが行われたパスを遮断する。即ち、当該パスに対応する送信元から、当該パスに対応する送信先へのパケットの送信が停止される。パケット遮断機能１２６は、ＩＰアドレス単位でパスを遮断してしまうと、正規ユーザ端末のＩＰアドレスが通過出来ないため、許可されたＩＰアドレスに成り済ましている悪意ユーザ端末１００のアクセスを排除するには、さらにソース元のＭＡＣアドレスを参照してフィルタリングする必要がある。
【００４１】
図２は、悪意ユーザ端末１００が攻撃１を行った場合における産業制御システム１０の処理の一例を示すシーケンス図である。図２の例ではゲートウェイ１０５は運用中である。運用中のゲートウェイ１０５の制御パケット監視機能１２４は、コントロールネットワーク１０２上を通過するパケットを監視する（Ｓ２０１）。外部ネットワークを通じて産業制御システム１０に侵入した悪意ユーザ端末１００は、ＳＣＡＤＡ設計ツール１０４のコントローラ用プログラムデータベースを狙ってデータベース書き換え設定（攻撃１）を実施している（Ｓ２０２）。コントローラ用プログラムデータベースには、運用コントローラ１０６が保持する制御プログラムを更新するための、更新用制御プログラムが格納されている。
【００４２】
ＳＣＡＤＡ設計ツール１０４は、データベース書き換え設定に従って、コントローラ用プログラムデータベースを書き換える（Ｓ２０３）。ＳＣＡＤＡ設計ツール１０４は、データベース書き換え設定に対する応答として、データベース書き換え完了通知を、悪意ユーザ端末１００に返信する（Ｓ２０４）。
【００４３】
運用中のゲートウェイ１０５の制御パケット監視機能１２４は、コントロールネットワーク１０２上を通過するパケットを監視しているが、不正判定機能１２５は、悪意ユーザ端末１００による不正なアクセスとはこの時点では判定しない。つまり、悪意ユーザ端末１００が許可されたＩＰアドレスに成り済まして侵入する場合、不正判定機能１２５は、この時点では、不正なアクセスが発生したか否かを判定しない。これは、正規ユーザ、例えば、保守者が、コントローラ用プログラムデータベースを書き換える可能性があるからである。
【００４４】
ゲートウェイ１０５の制御パケット監視機能１２４は、ステップＳ２０２において上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４に対してデータベース書き換え設定が行われたことを制御パケットの監視により把握している。同様に、制御パケット監視機能１２４は、ステップＳ２０４においてＳＣＡＤＡ設計ツール１０４が上位ネットワーク１０１に対してデータベース書き換え完了通知を返信したことを制御パケットの監視により把握している。
【００４５】
続いて、ＳＣＡＤＡ設計ツール１０４は、運用コントローラ１０６が保持する制御プログラムを書き換えるための制御プログラムの書き換え設定を、運用コントローラ１０６に対して送信する（Ｓ２０５）。運用コントローラ１０６は、制御プログラム書き換え設定に従って、制御プログラムを書き換える（Ｓ２０７）。運用コントローラ１０６は、制御プログラム書き換え設定に対する応答として、制御プログラム書き換え完了通知を、ＳＣＡＤＡ設計ツール１０４に対して返信する（Ｓ２０８）。
【００４６】
なお、制御プログラムの書き換え設定と制御プログラム書き換え完了通知は、ＳＣＡＤＡ設計ツール１０４と運用コントローラ１０６間の制御信号のやり取りだが、ゲートウェイ１０５の制御パケット監視機能１２４は、コントロールネットワーク１０２上を通過するパケットを監視できる。従って、制御パケット監視機能は、制御プログラム書き換え設定を監視し（Ｓ２０６）、さらに書き換え完了通知を監視し（Ｓ２０８）、監視した制御パケット情報を保持することができる。
【００４７】
運用コントローラ１０６は、制御プログラムが書き換えられた後は、新しい制御プログラムで起動し、運用が開始される。運用コントローラ１０６は、新しい制御プログラムを用いて、フィールド機器１１０に対する制御を開始する（Ｓ２１０）。
【００４８】
運用コントローラ１０６は、悪意ユーザ端末１００によって改竄された制御プログラムを用いているため、フィールド機器１１０で異常が発生する。異常発生のタイミングは、悪意ユーザ端末１００によるデータベースの改竄内容次第である。新しい制御プログラムで起動直後、及び運用開始からかなりの時間が経過した時は、いずれも異常発生タイミングの一例である。
【００４９】
監視センサ１１１は、フィールド機器１１０を監視するためにセンサデータを取得し（Ｓ２１１）、ゲートウェイ１０５に送信する（Ｓ２１２）。本実施例では、フィールド機器１１０は、自身に発生した異常を検出しない。フィールド機器１１０は運用コントローラ１０６からの指示で動いているため、フィールド機器１１０を監視する監視センサ１１１が取得するセンサデータに基づいて、ゲートウェイ１０５のセンサデータ異常検出機能１２２が異常発生を検出する（Ｓ２１３）。なお、フィールド機器１１０が、自身に発生した異常を検出し、ゲートウェイ１０５に異常検出を報告してもよい。
【００５０】
センサデータ異常検出機能１２２が異常発生を検出すると、切替え処理機能１２３は切替え処理を実施する（Ｓ２１４）。具体的には、切替え処理機能１２３は、運用コントローラ１０６から待機コントローラ１０７へと運用を切替える。切替え処理実施後は、待機コントローラ１０７が、フィールド機器１１０を制御する（Ｓ２１８）。当該切替え処理によりフィールド機器１１０は継続して制御される。
【００５１】
次に、ゲートウェイ１０５の不正判定機能１２５は、フィールド機器１１０で異常が発生したこと、及びデータベース書き換え設定２０２が起こったことから不正アクセスが発生したと判定する（Ｓ２１５）。パケット遮断機能１２６は、不正アクセスのパスに対して遮断処理を実施する（Ｓ２１６）。当該処理により、悪意ユーザ端末１００からの次の不正アクセスが遮断される。ゲートウェイ１０５は、切替え処理機能１２３は切替え処理を実施したことを、パケット遮断機能１２６は遮断処理を実施したことを、保守者に通知する（Ｓ２１７）。なお、本実施例における保守者への通知は、例えば、ゲートウェイ１０５に接続された保守者用端末に送信され、例えば、保守者用端末の表示画面等に表示される。また、ＳＣＡＤＡ設計ツール１０４が保守者用端末の機能を有していてもよい。
【００５２】
図３は、悪意ユーザ端末１００が攻撃２を行った場合における産業制御システム１０の処理の一例を示すシーケンス図である。図２との違いを説明する。ステップＳ２０１に続いて、外部ネットワークを通じて産業制御システム１０に侵入した悪意ユーザ端末１００は、運用コントローラ１０６に対して、運用コントローラ１０６が保持する制御プログラムの書き換え設定（攻撃２）を送信する（Ｓ３０２）。攻撃２は、運用コントローラ１０６に搭載されるＣＰＵに付随するメモリを直接操作する攻撃である。
【００５３】
運用コントローラ１０６は、悪意ユーザ端末１００からの制御プログラム書き換え設定に従って、制御プログラムを書き換える（Ｓ３０３）。運用コントローラ１０６は、制御プログラム書き換え設定に対する応答として、制御プログラム書き換え完了通知を、悪意ユーザ端末１００に対して返信する（Ｓ３０４）。運用コントローラ１０６は、新しい制御プログラムを用いて、フィールド機器１１０に対する制御を開始する（Ｓ３１０）。続いて、ステップＳ２１１に遷移し、図２と同様の処理が実行される。
【００５４】
運用コントローラ１０６のメモリが操作され、運用中の制御プログラムが突然変更されたため、フィールド機器１１０に異常が発生する。また、図３の処理において制御パケット監視機能１２４は、上位ネットワーク１０１から運用コントローラ１０６に対して制御プログラム書き換え設定が送信されたことを把握している。同様に、制御パケット監視機能１２４は、運用コントローラ１０６から上位ネットワーク１０１に対して制御プログラム書き換え設定完了通知を返信したことを把握している。
【００５５】
図４は、ゲートウェイ１０５のハードウェア構成例を示すブロック図である。ゲートウェイ１０５は、例えば、内部通信ＩＦ（Ｉｎｔｅｒｆａｃｅ）４０１、外部通信ＩＦ４０２、Ｌ２ＳＷ（Ｌａｙｅｒ  ２  Ｓｗｉｔｃｈ）４０５、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０７、主記憶装置４０９、及び補助記憶装置４１０を備える。
【００５６】
内部通信ＩＦ４０１は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等のシリアル通信インタフェースである。内部通信ＩＦ４０１は、保守者が操作する端末ＰＣから直接ゲートウェイ１０５のＣＰＵ４０７に直接アクセス可能なデバッグインタフェースである。内部通信ＩＦ４０１は、例えば、シリアルバス４０４によって、ＣＰＵ４０７と接続される。シリアルバス４０４は、電気的に接続される。
【００５７】
外部通信ＩＦ４０２は、例えば複数のポートを備え、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ケーブル等の有線ネットワーク回線に接続する回路である。また、外部通信ＩＦ４０２は、無線ネットワーク回線にも接続する。Ｌ２ＳＷ４０５は、ＣＰＵ４０７の設定に基づいてＩＰアドレスやＭＡＣアドレスやＶＬＡＮなどの識別ＩＤで、主信号パケットを振り分ける機能を持つ半導体集積回路である。
【００５８】
外部通信ＩＦ４０２は、例えば、主信号の接続バス４０３によって、Ｌ２ＳＷ４０５と接続される。Ｌ２ＳＷ４０５に複数のポート分の主信号の接続バス４０３が集約されて、ＣＰＵ４０７に主信号を束ねたバス４０６で接続される。主信号を束ねたバス４０６は、電気的に接続される。
【００５９】
主記憶装置４０９は、揮発性の記憶素子であるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、及び不揮発性の記憶素子であるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｕｓ  ＤＲＡＭ）等の半導体メモリを含み、ＣＰＵ４０７が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００６０】
ＣＰＵ４０７は、プロセッサを含み、不揮発性の記憶媒体のＲＯＭに格納されているプログラムをロードしてＲＡＭに展開して、当該プログラムが示す処理を行う。ＲＡＭはプログラムの一時的な記憶領域や作業領域、及び外部通信ＩＦ４０２からのパケットバッファ等に使用される。
【００６１】
補助記憶装置４１０は、ＣＰＵ４０７上で動作するプログラムが扱うデータを格納する。補助記憶装置４１０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、メモリカード等の不揮発性の記憶媒体を含み、ＣＰＵ４０７が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。ＣＰＵ４０７は、例えば、ＣＰＵバス４０８によって、主記憶装置４０９及び補助記憶装置４１０に接続される。ＣＰＵバス４０８は、電気的に接続される。
【００６２】
なお、例えば、ＣＰＵ４０７が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介してゲートウェイ１０５に提供され、非一時的記憶媒体である不揮発性の補助記憶装置４１０に格納される。このため、ゲートウェイ１０５は、リムーバブルメディアからデータを読み込むインタフェースを有するとよい。
【００６３】
図５は、ゲートウェイ１０５の別のハードウェア構成例を示すブロック図である。図４との違いは、図４のＬ２ＳＷ４０５が、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）／ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）５０１と置き換わっている点である。ＡＳＩＣ／ＦＰＧＡ５０１は、Ｌ２ＳＷの機能を有し、図４のハードウェア構成においてＣＰＵ４０７が処理するパケット処理等のプログラムが示す機能の一部を専用回路として有する。図５のハードウェア構成において、負荷の重い処理をＣＰＵ４０７ではなくＡＳＩＣ／ＦＰＧＡ５０１が実行することにより、性能を抑えた安価なＣＰＵ４０７を利用することができる。
【００６４】
なお、ＣＰＵ４０７がＡＳＩＣ／ＦＰＧＡ５０１を制御することがあるため、ＣＰＵ４０７とＡＳＩＣ／ＦＰＧＡ５０１は、ＣＰＵバス４０８で互いに接続される。なお、図４と図５に示されるゲートウェイ１０５のハードウェア構成は例であり、実施の形態に応じて、適宜、構成要素の省略、置換、及び追加が可能である。例えば、ゲートウェイ１０５は、補助記憶装置４１０を備えていなくてもよい。
【００６５】
図６は、ゲートウェイ１０５の構成例を示すブロック図である。ゲートウェイ１０５は、物理ポート６０１〜６０７を含む。図１及び図６では、ゲートウェイ１０５が７つの物理ポートを含む例を記載しているが、ゲートウェイ１０５は８以上の物理ポートを含んでもよい。例えば、ゲートウェイ１０５は、１６、３２、又は４８の物理ポートを含んでもよい。ゲートウェイ１０５は、上位ネットワーク１０１からの運用コントローラ１０６へのコマンド監視、及び下位ネットワークで運用コントローラ１０６から待機コントローラ１０７への切替えを行うため、運用コントローラ１０６の上位側に接続される物理ポート６０３及び運用コントローラ１０６の下位側に接続される物理ポート６０４を含む。
【００６６】
ゲートウェイ１０５は、例えば、パケット処理部６０８、スイッチ制御部６０９、パケット解析転送部６１０、不正アクセス判定部６１１、センサデータ異常検出部６１２、制御パケット監視部６１３、機器情報ＤＢ（Ｄａｔａ  Ｂａｓｅ）６１４、スイッチテーブルＤＢ６１５、センサデータＤＢ６１６、及びアクセス監視結果ＤＢ６１７を含む。
【００６７】
なお、ＣＰＵ４０７は、主記憶装置４０９にロードされたパケット処理プログラムに従って動作することで、パケット処理部６０８として機能し、主記憶装置４０９にロードされたスイッチ制御プログラムに従って動作することで、スイッチ制御部６０９として機能する。ゲートウェイ１０５に含まれる他の部についても同様である。ゲートウェイ１０５が図５に示したハードウェア構成を有する場合、ゲートウェイ１０５に含まれる少なくとも１つの部が、ＡＳＩＣ／ＦＰＧＡ５０１によって実現されていてもよい。ゲートウェイ１０５に含まれる各ＤＢは、主記憶装置４０９又は補助記憶装置４１０に格納されている。
【００６８】
パケット処理部６０８は、各物理ポートが収容する産業用イーサネットのプロトコルの終端処理と生成処理を行う。ゲートウェイ１０５内部は、標準イーサネットでパケット処理を行う。また、パケット処理部６０８は、各物理ポートからの入力に対して、多重化してパケット処理を行い、また、各物理ポートへのパケットを出力する際における振分け処理を実施する。
【００６９】
スイッチ制御部６０９は、スイッチテーブルＤＢ６１５を参照して、受信したパケットをパスＩＤ単位で出力ポートへ振り分ける。また、スイッチ制御部６０９は、パスＩＤ単位で、切替え制御や遮断制御を行う。当該切替え制御は、ゲートウェイ１０５からのパケットを出力するコントローラを、運用コントローラ１０６から待機コントローラ１０７へ切替える処理を含む。当該遮断制御は、外部ネットワークからの攻撃に関して上位ネットワーク１０１からの入力パケットを遮断する処理を含む。
【００７０】
パケット解析転送部６１０は、ゲートウェイ１０５への設定情報パケット、監視センサ１１１が収集するセンサデータのパケット、及びコントロールネットワーク１０２間でやり取りされる制御パケット（設定パケット及び通知パケットを含む）、のフレームを解析し、センサデータ異常検出部６１２や制御パケット監視部６１３に振り分ける。また、制御パケット監視部６１３が制御パケットの監視は行うが、ゲートウェイ１０５内で制御パケットを終端することは無いので、パケット解析転送部６１０は、パケットを物理ポートに転送するために、制御パケットをスイッチ制御部６０９に送る。
【００７１】
センサデータ異常検出部６１２は、監視センサ１１１から受信したパケット情報を集約し、集約したパケット情報とセンサデータＤＢ６１６に格納された情報とを比較する。センサデータ異常検出部６１２は、比較結果から異常を検出した場合は、不正アクセス判定部６１１に異常検出を通知する。
【００７２】
制御パケット監視部６１３は、受信した制御パケットの情報を集約し、集約結果に基づいてアクセス監視結果ＤＢ６１７を更新する。不正アクセス判定部６１１は、センサデータ異常検出部６１２からの異常通知を受信するとアクセス監視結果ＤＢ６１７を参照し、外部ネットワークからの不正アクセスの有無を判定し、不正アクセスが発生したアクセスパスを特定して、特定した結果をスイッチテーブルＤＢ６１５に反映する。
【００７３】
図１を用いて説明した各機能と、図６を用いて説明した各部及び各ＤＢと、の対応について説明する。図１はゲートウェイ１０５の各機能を示す概要図であり、実際のゲートウェイ１０５の機能ブロック配備位置とは異なる。センサデータ異常検出機能１２２は、センサデータ異常検出部６１２によって実現される。制御パケット監視機能１２４は、制御パケット監視部６１３によって実現される。不正判定機能１２５は、不正アクセス判定部６１１によって実現される。スイッチング機能１２７は、スイッチ制御部６０９によって実現される。切替え処理機能１２３及びパケット遮断機能１２６は、スイッチ制御部６０９によって実現される。
【００７４】
図７及び図８を用いて機器情報ＤＢ６１４を説明する。機器情報ＤＢ６１４は、ゲートウェイ１０５の情報を格納する。機器情報ＤＢ６１４は、例えば、機器情報テーブル７００を含む。図７は、機器情報ＤＢ６１４に格納されている機器情報テーブルの一例である。
【００７５】
なお、本実施例においてゲートウェイ１０５が使用する情報がテーブルである例を説明するが、本実施形態において、産業制御システム１０が使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【００７６】
機器情報テーブル７００は、例えば、ＭＡＣアドレス欄７０１、設定ＩＰアドレス欄７０２、異常検出機能欄７０３、切替え機能欄７０４、パケット監視機能欄７０５、及びパケット遮断機能欄７０６を含む。
【００７７】
ＭＡＣアドレス欄７０１は、ゲートウェイ１０５の個体を識別するＭＡＣアドレスを格納する。ＭＡＣアドレスは、例えば、ゲートウェイ１０５のフラッシュメモリ等の不揮発性メモリに予め書き込まれている。設定ＩＰアドレス欄７０２は、設定ＩＰアドレスを格納する。設定ＩＰアドレスは、例えば、ゲートウェイ１０５を設置時に保守者より設定される。
【００７８】
異常検出機能欄７０３、切替え機能欄７０４、パケット監視機能欄７０５、及びパケット遮断機能欄７０６は、それぞれ異常検出機能、切替え機能欄、パケット監視機能、及びパケット遮断機能が有効であるか無効であるかを示す値を格納する。各機能の有効／無効は、例えば、保守者によって予め選択されている。また、例えば、保守者は、フィールド機器１１０が安定的に運用された後の適切なタイミングで各機能の有効／無効を設定してもよい。
【００７９】
切替え機能は、スイッチ制御部６０９による、運用コントローラ１０６と待機コントローラ１０７との切替え機能である。パケット監視機能は、制御パケット監視部６１３によるコントロールネットワーク１０２間でやり取りされる制御パケットを監視する機能である。パケット遮断機能は、外部ネットワークからの攻撃を、スイッチ制御部６０９が自律して遮断する機能である。
【００８０】
図８は、機器情報ＤＢ６１４に格納されている物理ポート管理テーブルの一例である。機器情報ＤＢ６１４は、例えば、ゲートウェイ１０５内の物理ポートの情報を管理する物理ポート管理テーブル７１０を含む。
【００８１】
物理ポート管理テーブル７１０は、例えば、ポート番号欄７０７、ポート有効／無効欄７０８、及びプロトコル欄７０９を含む。ポート番号欄７０７は、各物理ポートを識別するポート番号を格納する。
【００８２】
ポート有効／無効欄７０８は、対応する物理ポートが有効であるか無効であるかを示す値を格納する。プロトコル欄７０９は、例えば、対応する物理ポートが収容する産業用イーサネットのプロトコルを格納する。物理ポート管理テーブル７１０の情報は、例えば、保守者によって予め設定されている。
【００８３】
以下、本実施例では、物理ポート６０１のポート番号が１、物理ポート６０２のポート番号が２、物理ポート６０３のポート番号が３、物理ポート６０４のポート番号が４、物理ポート６０５のポート番号が５、物理ポート６０６のポート番号が６、物理ポート６０７のポート番号が７であるものとする。
【００８４】
図８の例では、物理ポート６０１（ポート番号１）の上位ネットワーク１０１との接続及び物理ポート６０７（ポート番号７）の監視センサ１１１との接続に、標準イーサネットが用いられている。また、物理ポート６０２（ポート番号２）のＳＣＡＤＡ設計ツール１０４との接続及び物理ポート６０３（ポート番号３）の運用コントローラ１０６の上位ネットワークとの接続に、Ｅｔｈｅｒｎｅｔ／ＩＰが用いられている。
【００８５】
また、物理ポート６０４（ポート番号４）の運用コントローラ１０６の下位ネットワークとの接続、物理ポート６０５（ポート番号５）の待機コントローラ１０７の下位ネットワークとの接続、及び物理ポート６０６（ポート番号６）のフィールドネットワーク１０３との接続に、ＥｔｈｅｒＣＡＴが用いられている。図７Ｂにおける、各プロトコルの設定は一例である。
【００８６】
図９及び図１０を用いてスイッチテーブルＤＢ６１５を説明する。スイッチテーブルでＤＢ６１５は、例えば、スイッチテーブル８００及び冗長パス登録テーブル１０００を格納する。図９は、スイッチテーブルＤＢ６１５に格納されているスイッチテーブルの一例である。スイッチテーブル８００は、例えば、パスＩＤ欄８０１、入力ポート番号欄８０２、出力ポート番号欄８０３、ＳＡ（送信元）ＩＰアドレス欄８０４、ＤＡ（送信先）ＩＰアドレス欄８０５、パケット監視欄８０６、遮断／透過欄８０７、及びコメント欄８０８を含む。
【００８７】
パスＩＤ８０１欄はパスＩＤを保持する。入力ポート番号欄８０２、出力ポート番号欄８０３、ＳＡＩＰアドレス欄８０４、ＤＡＩＰアドレス欄８０５は、それぞれ対応するパスＩＤのパスに対応する、入力ポート番号、出力ポート番号、送信元ＩＰアドレス、及び送信先ＩＰアドレスを保持する。
【００８８】
以下、図９の例が示すパスについて説明する。パスＩＤ「００１」のパスは、上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４へのパスである。当該パスにおける上位ネットワーク１０１からの入力は、物理ポート６０１（ポート番号１）で、ＳＣＡＤＡ設計ツール１０４への出力は、物理ポート６０２（ポート番号２）である。当該パスにおける、ＳＡＩＰアドレスは上位ネットワークの接続先であり、ＤＡＩＰアドレスはＳＣＡＤＡ設計ツール１０４である。
【００８９】
また、パスＩＤ「００２」のパスは、パスＩＤ「００１」のパスと逆方向のパスである。パスＩＤ８０１「００１」のパスとパスＩＤ「００２」のパスは対で、双方向パスである。パスＩＤ「０１１」のパスは、監視センサ１１１からゲートウェイ１０５へのパスである。当該パスにおいて、監視センサ１１１から物理ポート６０７（ポート番号７）に入力がなされ、ゲートウェイ１０５から先への出力は無い。当該パスにおける、ＳＡＩＰアドレスは監視センサ１１１のＩＰアドレスであり、ＤＡＩＰアドレスはゲートウェイ１０５のＩＰアドレスである。
【００９０】
パスＩＤ「０１２」のパスは、上位ネットワーク１０１からゲートウェイ１０５へのパスである。当該パスにおいて、上位ネットワーク１０１から物理ポート６０１（ポート番号１）に入力がなされ、ゲートウェイ１０５から先への出力は無い。当該パスにおける、ＳＡＩＰアドレスは上位ネットワーク１０１のＩＰアドレスであり、ＤＡＩＰアドレスはゲートウェイ１０５のＩＰアドレスである。
【００９１】
パスＩＤ「０１３」のパスは、パスＩＤ「０１２」のパスと逆方向のパスである。パスＩＤ「０１２」のパスとパスＩＤ「０１３」のパスは対のパスであり、双方向パスとである。
【００９２】
同様に、パスＩＤ「００３」のパスとパスＩＤ「００４」のパスが、パスＩＤ「００５」のパスとパスＩＤ「００６」のパスが、パスＩＤ「００７」のパスとパスＩＤ「００８」のパスが、パスＩＤ「００９」とパスＩＤ「０１０」のパスが、それぞれ対のパスであり双方向パスである。
【００９３】
これらの双方向パスを形成するパスの組み合わせは、入力ポート番号と出力ポート番号が設定されるため、ゲートウェイ１０５の中でパケットを終端することは無く、パケットをスルーする。その他のパスＩＤのパスについて、ゲートウェイ１０５の周辺接続環境を元に構成されており説明を省略する。
【００９４】
パケット監視欄８０６は、対応するパスにおけるパケット監視が有効であるか無効であるかを示す値を格納する。パケット監視欄８０６における有効／無効は、例えば、保守者によって予め設定される。遮断／透過欄８０７は、各パスＩＤに対応するパスにおける透過／遮断を示すモニタ情報を格納する。機器情報テーブル７００のパケット監視機能欄７０５の値が「有効」かつパケット遮断機能欄７０６の値が「有効」である場合、ゲートウェイ１０５は、外部ネットワークからの攻撃に対して、パス単位で遮断を自律で実施することができる。
【００９５】
例えば、前述の攻撃１が発生した場合、攻撃１は上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４への攻撃であるため、スイッチ制御部６０９は、ステップＳ２１６においてパスＩＤ「００１」のパスを遮断する。また、前述の攻撃２が発生した場合、攻撃２は上位ネットワーク１０１から運用コントローラ１０６の上位ネットワークへの攻撃であるため、スイッチ制御部６０９はステップＳ２１６において、パスＩＤ「００３」のパスを遮断する。
【００９６】
なお、スイッチテーブル８００は、各パスのＳＡ（送信元）ＭＡＣアドレスをさらに管理してもよい。スイッチテーブル８００におけるＭＡＣアドレスは、例えば、ＳＡＩＰアドレス設定時にゲートウェイ１０５によって自動で取得されてもよいし、保守者によって予め設定されてもよい。例えば、外部ネットワークからの攻撃は、ＩＰアドレスを詐称して侵入する可能性があるため、不正アクセス判定部６１１は、ＩＰアドレスだけでなくさらにＭＡＣアドレスを参照して、パスを透過すべきか否かを判定してもよい。
【００９７】
図１０は、スイッチテーブルＤＢ６１５に格納されている冗長パス登録テーブルの一例である。冗長パス登録テーブル１０００は、運用コントローラ１０６と待機コントローラ１０７を切替えるためのパスの情報を格納する。冗長パス登録テーブル１０００は、例えば、冗長パスＩＤ欄１００１、パスＩＤ欄１００２、及び出力セレクタ設定欄１００３を含む。冗長パスＩＤ欄１００１は、冗長構成であるパスの組み合わせを識別するＩＤを格納する。パスＩＤ欄１００２は、冗長構成であるパスのパスＩＤを格納する。出力セレクタ設定欄１００３は、パス冗長構成であるパスが出力に利用されているパスか否かを示す値を格納する。
【００９８】
本実施例では、運用コントローラ１０６の下位ネットワーク側からフィールド機器１１０へのパスＩＤ「００７」のパス及び待機コントローラ１０７の下位ネットワーク側からフィールド機器１１０へのパスＩＤ「００９」のパスの組み合わせが、冗長パスを構成している。図１０の例では、運用コントローラ１０６側のパスが利用され、待機コントローラ１０７側のパスは利用されていない。
【００９９】
図１１は、ゲートウェイ１０５の切替え処理の一例を示す概要図である。図１１には、産業制御システム１０の一部が記載されている。図１においては記載を省略したが、フィールドネットワーク１０３はフィールド機器付随センサ１１０３に接続されている。フィールド機器付随センサ１１０３は、フィールド機器１１０を動かすために、フィールド機器１１０に付随するセンサである。コントローラは、フィールド機器１１０への制御コマンドを出力し、さらにフィールド機器付随センサ１１０３からの入力を受け付ける。コントローラは、フィールド機器付随センサ１１０３からの入力情報を元に、例えば既知の手法を用いてフィールド機器１１０を制御する。
【０１００】
なお、監視センサ１１１は、コントローラに収容されずに、ゲートウェイ１０５に直接収容されているため、フィールド機器１１０が設置済みであっても、監視センサ１１１を産業制御システム１０に後付けすることができる。また、監視センサ１１１は、別の方式でフィールドネットワーク１０３に接続されてもよい。具体的には、例えば、監視センサ１１１は、コントローラに収容される、即ち監視センサ１１１が取得した情報はコントローラを経由してゲートウェイ１０５で集約される。この場合、監視センサ１１１のための個別のネットワークが必要なく、監視センサ１１１の物理的な配線、及び配置が容易である。ただし、この場合、コントローラは監視センサ１１１が取得した情報を転送するため、コントローラが保持する制御プログラムが変更される必要がある。
【０１０１】
なお、ゲートウェイ１０５が監視センサ１１１からの情報を用いてフィールド機器１１０の異常を迅速に検知するために、本実施例では、上述したようにゲートウェイ１０５に監視センサが直接収容されている。
【０１０２】
なお、前述したように運用コントローラ１０６と待機コントローラ１０７は、二重化同期ケーブル１０８で接続されて、両コントローラによるコマンドシーケンスの出力は同期されている。切替え処理機能１２３は、両コントローラからのフィールド機器１１０への制御コマンドのうち一方を選択して出力する、セレクタ出力を実行する。切替え処理機能１２３は、ゲートウェイ１０５が受信したフィールド機器付随センサ１１０３の情報を、コピーし、運用コントローラ１０６と待機コントローラ１０７の両方に入力する。以上により、フィールド機器１１０に異常が発生した場合において、運用コントローラ１０６から待機コントローラ１０７への切替え処理が迅速に行われる。
【０１０３】
図１２は、センサデータＤＢ６１６に格納されているセンサデータテーブルの一例である。センサデータテーブル１２００は、例えば、センサＩＤ欄１２０１、測定値欄１２０２、入力範囲設定値欄１２０３、及びフラグ欄１２０４を含む。なお、センサデータテーブル１２００は、フラグ欄１２０４の値が「異常」と判定された時刻情報を保持してもよい。
【０１０４】
センサＩＤ欄１２０１は、監視センサ１１１を識別するセンサＩＤを格納する。測定値欄１２０２は、対応する監視センサ１１１が測定した測定値を保持する。センサデータ異常検出部６１２は、各監視センサ１１１による測定値を対応する測定値欄１２０２に格納する。測定値欄１２０２は、最新の測定値を保持してもよいし、所定期間の測定値の平均を保持してもよいし、所定期間の測定値の時系列を保持してもよい。入力範囲設定値欄１２０３は、対応する測定値が正常であると判定される範囲を保持する。入力範囲設定値欄１２０３の範囲は、例えば、予め保守者によって設定される。フラグ欄１２０４は、対応する測定値が正常であるか異常であるかを示すフラグを保持する。
【０１０５】
図１２の例が示す測定値について説明する。センサＩＤ「１」の監視センサ１１１による測定値は、入力範囲設定値欄１２０３の範囲内であるため、センサデータ異常検出部６１２は当該測定値を正常と判定し、フラグ欄１２０４に「正常」を格納する。
【０１０６】
センサＩＤ「２」の監視センサ１１１による測定値は、入力範囲設定値欄１２０３の範囲外であるため、センサデータ異常検出部６１２は当該測定値を異常と判定し、フラグ欄１２０４に「異常」を格納する。監視センサ１１１は、設置するフィールド機器１１０の用途に合わせて、用意される。図１２は、２つの監視センサ１１１が設置されている場合の例である。
【０１０７】
図１３及び図１４を用いてアクセス監視結果ＤＢ６１７に格納されているアクセス監視結果テーブルについて説明する。アクセス監視結果テーブルは、ゲートウェイ１０５が受信した制御パケットの情報を格納する。図１３は、産業制御システム１０が攻撃１を受けた場合におけるアクセス監視結果テーブル１３００の例である。図１３のアクセス監視結果テーブル１３００は、攻撃１によって、コントロールネットワーク１０２上を通過するパケットの情報を保持する。
【０１０８】
アクセス監視結果テーブル１３００は、例えば、パスＩＤ欄１３０１、Ｔｙｐｅ値欄１３０２、コマンド欄１３０３、及びコメント欄１３０４を含む。パスＩＤ欄１３０１は、制御パケットが通過したパスのパスＩＤを格納する。Ｔｙｐｅ値欄１３０２は、制御パケットのイーサネットのヘッダのＴｙｐｅ値を格納する。コマンド欄１３０３は、制御パケットのコマンド情報を格納する。コメント欄１３０４は、パスの入力元と送信先を示す情報を格納する。
【０１０９】
なお、アクセス監視結果テーブル１３００は、コメント欄１３０４を含まなくてもよい。なお、例えば、制御パケット監視部６１３が、パケット解析転送部６１０から受信した制御パケットの解析結果をアクセス監視結果テーブル１３００に格納する。また、図１３及び図１４の例では、アクセス監視結果テーブル１３００は、パスＩＤ単位にコマンドの最新値のみを保持しているが、コマンドの値の時系列を保持してもよい。また、アクセス監視結果テーブル１３００は、各コマンドが実施された時刻情報を保持してもよい。
【０１１０】
図１３の例が示すアクセス監視結果について説明する。パスＩＤが「００１」であるパスは、上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４へのアクセスするためのパスである。ステップＳ２０２、即ち攻撃１のデータベース書き換え設定のコマンドが当該パスを通過した。パスＩＤが「００２」であるパスは、ＳＣＡＤＡ設計ツール１０４から上位ネットワーク１０１へアクセスするためのパスである。図１３の例は、ステップＳ２０４のデータベース書き換え完了通知のコマンドが当該パスを通過したことを示す。
【０１１１】
パスＩＤが「００５」であるパスは、ＳＣＡＤＡ設計ツール１０４から運用コントローラ１０６の上位側ネットワークへアクセスするためのパスである。ステップＳ２０５の制御プログラム書き換え設定のコマンドが当該パスを通過した。パスＩＤが「００６」であるパスは、運用コントローラ１０６の上位側ネットワークからＳＣＡＤＡ設計ツール１０４へアクセスするためのパスである。図１３の例は、ステップＳ２０８の制御プログラム書き換え完了通知のコマンドが当該パスを通過したことを示す。
【０１１２】
図１４は、産業制御システム１０が攻撃２を受けた場合におけるアクセス監視結果テーブル１３００の例である。図１４のアクセス監視結果テーブル１３００は、攻撃２によって、コントロールネットワーク１０２上を通過するパケットの情報を保持する。
【０１１３】
図１４の例が示すアクセス監視結果について説明する。パスＩＤが「００３」であるパスは、上位ネットワーク１０１から運用コントローラ１０６の上位側ネットワークへアクセスするためのパスである。図１４の例は、ステップＳ３０２の制御プログラム書き換え設定のコマンドが当該パスを通過したことを示す。パスＩＤが「００４」であるパスは、ＳＣＡＤＡ設計ツール１０４から上位ネットワーク１０１へアクセスするためのパスである。図１４の例は、ステップＳ３０４の制御プログラム書き換え完了通知のコマンドが当該パスを通過したことを示す。
【０１１４】
図１５は、ゲートウェイ１０５の登録時の各ＤＢの設定処理の一例を示すフローチャートである。当該設定処理は、例えば、ゲートウェイ１０５を産業制御システム１０のネットワークに設置する保守者によって実行される。保守者は、例えば、イーサネットを経由して又はＵＳＢ等によってゲートウェイ１０５に接続された保守者用端末等を用いて、当該設定処理を実行する。ゲートウェイ１０５自身の脆弱性が狙われないように、認証サービスを用いたＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）等を用いてよりセキュアな環境で当該設定処理が実行されることが好ましい。なお、図１及び図６には図示されていないが、例えば、ゲートウェイ１０５は、保守者用端末から入力された各ＤＢの設定内容を対応するＤＢに書き込む機能部を有する。
【０１１５】
まず、保守者は機器情報ＤＢ６１４の登録処理を実行する（Ｓ１５０２）。具体的には、保守者は、設定ＩＰアドレス欄７０２に格納されるゲートウェイ１０５自身のＩＰアドレスを指定する。また、ステップＳ１５０２において、保守者は、物理ポート管理テーブル７１０の設定処理を行う。具体的には、保守者は、ゲートウェイ１０５が、コントロールネットワーク１０２上で接続する対向装置、フィールドネットワーク１０３上で接続する対向装置、監視センサとの接続に使用する物理ポート６０１〜６０７におけるポート有効／無効欄７０８の値を指定する。また、前記ポートを有効にした場合、当該ポートで収容するプロトコル、即ちプロトコル欄７０９の値を指定する。
【０１１６】
次に、保守者はスイッチテーブルＤＢ６１５の登録処理を実行する（Ｓ１５０３）。具体的には、例えば、保守者はゲートウェイ１０５に接続する対向装置との接続パスに対して、入力ポート番号欄８０２、出力ポート番号欄８０３、ＳＡＩＰアドレス欄８０４、ＤＡＩＰアドレス欄８０５の値を指定する。
【０１１７】
なお、保守者がＳＡＩＰアドレス及びＤＡＩＰアドレスを指定せず、入出力ポート番号が指定された後にゲートウェイ１０５自身がネットワークから自動的に対向装置のＳＡＩＰアドレス及びＤＡＩＰアドレスを取得してもよい。また、ステップＳ１５０２において、保守者は、パスＩＤ単位でパケット監視欄８０６の有効／無効を設定する。
【０１１８】
さらに、ステップＳ１５０２において、保守者は、冗長パス登録テーブル１０００の設定処理、即ちコントローラの切替えに使用する冗長パスの設定を実施する。具体的には、例えば、保守者はパスＩＤ欄１００２の値を指定することによりして冗長パスを登録する。また、保守者は、デフォルトの出力セレクタ設定欄１００３の値を決定する。つまり、本実施例において、保守者は、どちらのコントローラが運用コントローラ１０６であるかを指定する。
【０１１９】
次に、保守者はセンサデータＤＢ６１６の登録処理を実行する（Ｓ１５０４）。具体的には、例えば、保守者は、入力範囲設定値欄１２０３の値を指定する。次に、保守者は、各機能の有効／無効設定を登録する（Ｓ１５０５）。具体的には、例えば、保守者は、異常検出機能欄７０３、切替え機能欄７０４、パケット監視機能欄７０５、及びパケット遮断機能欄７０６における有効／無効を指定する。
【０１２０】
保守者による登録作業終了後に、ゲートウェイ１０５の運用が開始される。なお、ステップＳ１５０５の処理が実行されない限り、ステップＳ１５０１〜ステップＳ１５０３の処理が実行される順序は問わない。
【０１２１】
図１６は、運用開始後のゲートウェイ１０５の処理の一例を示すフローチャートである。まずゲートウェイ１０５の運用状態が開始される（Ｓ１６０１）。物理ポート６０１〜６０７は、パケット受信を待機する（Ｓ１６０２）。物理ポート６０１〜６０７は、パケットを受信しない場合（Ｓ１６０２：Ｎｏ）、引き続きパケット受信を待機する（Ｓ１６０２）。
【０１２２】
物理ポート６０１〜６０７の少なくとも１つが、パケットを受信すると（Ｓ１６０２：Ｙｅｓ）、当該少なくとも１つの物理ポートそれぞれについて、ステップＳ１６０３以下の処理が実施される。以下、第１物理ポートが第１パケットを受信したものとして、第１物理ポートについてのステップＳ１６０３以下の処理の例を説明する。
【０１２３】
第１物理ポートは、物理ポート管理テーブル７１０の第１物理ポートの物理ポート有効／無効欄７０８の値が有効であるか否かを判定する（Ｓ１６０３）。第１物理ポートは、第１物理ポートが無効であると判定した場合（Ｓ１６０３：ＮＯ）は、第１パケットを廃棄する（Ｓ１６０４）。
【０１２４】
第１物理ポートが有効であると判定した場合（Ｓ１６０３：Ｙｅｓ）、パケット処理部６０８は、第１物理ポートに対応するプロトコル欄７０９の値に従って、第１パケットに対してパケット処理を実施する（Ｓ１６０５）。
【０１２５】
次に、スイッチ制御部６０９は、機器情報テーブル７００のパケット監視機能欄７０５の値が有効であるか否かを判定し（Ｓ１６０６）、判定結果に基づく処理を実行する。パケット監視機能が無効である場合（１６０６：Ｎｏ）、スイッチテーブルＤＢ６１５を参照して、パケットの転送処理を実施し（Ｓ１６２１）、ステップＳ１６０２のパケット受信待機状態に戻る。なお、スイッチ制御部６０９は、ステップＳ１６２１において、遮断／透過欄８０７の値が「遮断」であるパスに対応するパケットを、送信先へ送信せず破棄する。
【０１２６】
パケット監視機能が有効である場合（Ｓ１６０６：Ｙｅｓ）、パケット解析転送部６１０が、第１パケットの中身を解析し、ステップＳ１６０７に遷移するする。パケット解析転送部６１０は、第１パケットの中身の解析において、具体的には、第１パケットのＤＡＩＰアドレス、及びＳＡＩＰアドレスを特定し、特定したＩＰアドレスから、スイッチテーブル８００を参照してパスＩＤを特定する。なお、前述したように、パケット解析転送部６１０は、ＩＰアドレスを詐称して侵入を試みる外部ネットワークからの攻撃に備えるために、さらにＭＡＣアドレスも用いてパスＩＤを特定してもよい。
【０１２７】
次に、パケット解析転送部６１０は、スイッチテーブル８００の特定したパスＩＤのパケット監視欄８０６の値が有効であるか否かを判定し（Ｓ１６０７）、判定結果に対応する処理を実行する。パケット解析転送部６１０が特定したパスＩＤのパケット監視欄８０６の値が無効であると判定した場合（Ｓ１６０７：Ｎｏ）、ステップＳ１６２１の処理を実行し、ステップＳ１６０２のパケット受信待機状態に戻る。パケット解析転送部６１０が特定したパスＩＤのパケット監視欄８０６の値が有効であると判定した場合（Ｓ１６０７：Ｙｅｓ）、ステップＳ１６０８に遷移する。
【０１２８】
ここで、ゲートウェイ１０５に入力されるパケットの例である４種類のパケットについて説明する。当該４種類のパケットとは、コントロールネットワーク１０２上を流れる制御に関わるパケット、フィールド機器１１０を監視する監視センサ１１１からのセンサデータパケット、コントローラからフィールド機器１１０への制御コマンドパケット、及びフィールド機器に付随するフィールド機器付随センサ１１０３のデータパケットである。コントロールネットワーク１０２上を流れる制御に関わるパケットは、設定コマンド、及び設定コマンドに応答を返す通知コマンド等を含む。
【０１２９】
例えば、図９のスイッチテーブル８００の例において、パスＩＤが「００７」〜「０１０」のパスにおけるパケット監視は無効である。即ち図９の例において、パケット解析転送部６１０が、コントローラからフィールド機器１１０への制御コマンドパケット、フィールド機器に付随するフィールド機器付随センサ１１０３のデータパケットを監視することなく、スイッチ制御部６０９が、ステップＳ１６２１における、スイッチテーブルＤＢ６１５に基づいた転送処理を実施する。
【０１３０】
フローチャートの説明に戻る。次に、パケット解析転送部６１０は、第１パケットが監視センサ１１１からのセンサデータパケットであるか否かを判定する（Ｓ１６０８）。なお、パケット解析転送部６１０は、例えば、第１パケットの先頭の、ゲートウェイ１０５内部で使用する内部ヘッダ、の監視センサ１１１からのデータパケットであるか否かを示すフラグを参照してステップＳ１６０８の判定を実施する。
【０１３１】
なお、当該フラグは、例えば、ステップＳ１６０５において、パケット処理部６０８によって設定される。具体的には、例えば、パケット処理部６０８は、スイッチテーブル８００を参照して、受信したパケットが、監視センサ１１１に接続された物理ポートから転送されたものであるか否かを判定し、当該判定結果に従って当該フラグを受信したパケットの内部ヘッダに書き込む。
【０１３２】
パケット解析転送部６１０は、第１パケットが監視センサ１１１からのセンサデータパケットであると判定した場合（Ｓ１６０８：Ｙｅｓ）、センサデータ異常検出部６１２は機器情報テーブル７００の異常検出機能欄７０３の値が有効であるか否かを判定する（Ｓ１６０９）。
【０１３３】
センサデータ異常検出部６１２は、異常検出機能欄７０３の値が無効であると判定した場合（Ｓ１６０９：Ｎｏ）、ステップＳ１６０２のパケット受信待機状態に戻る。センサデータ異常検出部６１２は、異常検出機能欄７０３の値が有効であると判定した場合（Ｓ１６０９：Ｙｅｓ）、センサデータテーブル１２００の、取得したセンサデータが示すセンサＩＤに対応する測定値欄１２０２にセンサデータのセンサ値を格納し、入力範囲設定値欄１２０３を参照してセンサデータのセンサ値が設定範囲内であるか否かを判定する（Ｓ１６１１）。
【０１３４】
センサデータ異常検出部６１２は、センサ値が設定範囲内であると判定した場合（Ｓ１６１１：Ｙｅｓ）、当該センサＩＤに対応するフラグ欄１２０４に値「正常」を格納し、ステップＳ１６０２のパケット受信待機状態に戻る。センサデータ異常検出部６１２は、センサ値が設定範囲内でないと判定した場合（Ｓ１６１１：Ｎｏ）、当該センサＩＤに対応するフラグ欄１２０４に値「異常」を格納し、ステップＳ１６１３に遷移する。なお、センサデータ異常検出部６１２は、ステップＳ１６１３に遷移する前に、保守者にフィールド機器１１０で異常が起こったことを保守者に通知する。なお、例えば、上述した保守者用端末への通知によって、保守者への通知が行われる。
【０１３５】
なお、センサデータ異常検出部６１２が、ステップＳ１６１１において、センサ値が設定範囲外であると判定した場合（Ｓ１６１１：Ｎｏ）、例えば、対象のフィールド機器１１０を停止する命令を当該フィールド機器１１０に送信してもよい。例えば、センサデータテーブル１２００が各センサに対応するフィールド機器１１０の情報を保持し、かつ主記憶装置４０９に当該命令コマンドが格納されていてもよく、センサデータ異常検出部６１２が当該情報と当該命令コマンドを用いて当該命令を実行する。
【０１３６】
次に、センサデータ異常検出部６１２は、機器情報テーブル７００の切替え機能欄７０４の値が有効であるか否かを判定する（Ｓ１６１３）。センサデータ異常検出部６１２は、切替え機能が有効であると判定した場合（Ｓ１６１３：Ｙｅｓ）、待機コントローラへの切替え処理が実施される（Ｓ１６１５）。
【０１３７】
具体的には、ステップＳ１６１５において、センサデータ異常検出部６１２は冗長パス登録テーブル１０００のステップＳ１６０６で特定したパスＩＤを含む冗長パスＩＤの出力セレクタ設定欄１００３それぞれのセルの「ＯＮ」と「ＯＦＦ」の値を入れ替える。さらにスイッチ制御部６０９は、待機コントローラ１０７への切替え処理を実施する（Ｓ１６１５）。ステップＳ１６１５に続いて、スイッチ制御部６０９は、切替えを実施したことを保守者に通知し（Ｓ１６１８）ステップＳ１６０２のパケット受信待機状態に戻る。なお、スイッチ制御部６０９は、ステップＳ１６１８において、フィールド機器１１０で異常が起こったことを保守者にさらに通知してもよい。
【０１３８】
センサデータ異常検出部６１２が、切替え機能が無効であると判定した場合（Ｓ１６１３：Ｎｏ）、スイッチ制御部６０９は、待機コントローラ１０７の切替えが出来ないこと及びフィールド機器１１０で異常が起こったことを保守者に通知し（Ｓ１６１７）、ステップＳ１６０２のパケット受信待機状態に戻る。なお、センサデータ異常検出部６１２が、切替え機能が無効であると判定した場合（Ｓ１６１３：Ｎｏ）、ステップＳ１６１７の処理と併せて、後述するステップＳ１６１４の処理が実行されてもよい。
【０１３９】
ステップＳ１６０８において、パケット解析転送部６１０は、第１パケットが監視センサ１１１からのセンサデータパケットでないと判定した場合（Ｓ１６０８：Ｎｏ）、第１パケットが制御パケットであるか否かを判定する（Ｓ１６１０）。パケット解析転送部６１０が、第１パケットが制御パケットでないと判定した場合（Ｓ１６１０：Ｎｏ）、ステップＳ１６２１の処理が実行され、ステップＳ１６０２のパケット受信待機状態に戻る。パケット解析転送部６１０が、第１パケットが制御パケットでないと判定した場合（Ｓ１６１０：Ｎｏ）、ステップＳ１６１２に遷移する。
【０１４０】
ステップＳ１６１２において、パケット処理部６０８は、制御パケットを一次解析し、パケットの先頭の内部ヘッダに解析したコマンドの情報を書き込んで転送する。さらに、パケット解析転送部６１０は、ステップＳ１６１２において、より詳細にコマンドの中身を二次解析して特定する。また、パケット解析転送部は、解析した情報を制御パケット監視部６１３に通知する。制御パケット監視部６１３は、コマンド解析した結果をパスＩＤ単位に、アクセス監視結果テーブル１３００に格納する。
【０１４１】
続いて、不正アクセス判定部６１１は、フラグ欄１２０４のいずれかの値が「異常」であり、かつアクセス監視結果テーブル１３００のコマンド欄１３０３が制御プログラム書き換え設定を含むか否かを判定する（Ｓ１６１４）。
【０１４２】
なお、例えば、コマンド欄１３０３が制御プログラム書き換え設定を含むが、フラグ欄１２０４の全ての値が「正常」であるという状況、悪意ユーザ端末１００による攻撃が実行されていなくても、保守者から、制御プログラム書き換えコマンド設定が正常に送信された場合において発生し得る。
【０１４３】
また、例えば、フラグ欄１２０４のいずれかの値が「異常」であるが、コマンド欄１３０３が制御プログラム書き換え設定を含まないという状況は、悪意ユーザ端末１００による攻撃が実行されていなくても、フィールド機器１１０又は監視センサ１１１が故障した場合に発生し得る。但し、前述したように、「異常」フラグがあり、かつ切替え機能が有効である場合には切替え処理が実行される。
【０１４４】
従って、本実施例においては、不正アクセス判定部６１１は、上述したようにステップＳ１６１４の判定において、フラグ欄１２０４のいずれかの値が「異常」であり、かつコマンド欄１３０３が制御プログラム書き換え完了通知を含む場合に、外部ネットワークからの攻撃１及び攻撃２を含む不正アクセスがあったと判定する。図１７を用いて後述するように、不正アクセスがあったと判定するための条件は、上記条件に限らない。
【０１４５】
なお、不正アクセス判定部６１１は、ステップＳ１６１４において、フラグ欄１２０４のいずれかの値が「異常」であり、アクセス監視結果テーブル１３００のコマンド欄１３０３が制御プログラム書き換え完了通知を含み、かつ制御プログラム書き換え完了通知が実行された少なくとも１つの時刻が、フラグ欄１２０４の値が「異常」に変更された少なくとも１つの時刻より早いか否かを判定してもよい。不正アクセス判定部６１１は、ステップＳ１６１４において、時刻を考慮したこのような条件を用いることにより、フィールド機器１１０に発生した異常が、外部からの攻撃によるものか、フィールド機器１１０又は監視センサ１１１の単なる故障によるものか、を判定する精度をさらに向上させることができる。
【０１４６】
不正アクセス判定部６１１は、ステップＳ１６１４の条件が満たされないと判定した場合（Ｓ１６１４：Ｎｏ）、ステップＳ１６２１に遷移し、ステップＳ１６０２のパケット受信待機状態に戻る。また、不正アクセス判定部６１１は、ステップＳ１６１４の条件が満たされると判定した場合（Ｓ１６１４：Ｙｅｓ）、制御プログラム書き換え設定コマンドが通過したパスのパスＩＤを、パスＩＤ欄１３０１から抽出する（Ｓ１６１６）。なお、ステップＳ１６１６において、不正アクセス判定部６１１は、制御プログラム書き換え設定コマンドが通過したパスのパスＩＤに加えて又は代えて、制御プログラム書き換え完了通知が通過したパスのパスＩＤを、パスＩＤ欄１３０１から抽出してもよい。
【０１４７】
なお、ステップＳ１６１６において、不正アクセス判定部６１１は、アクセス監視結果テーブル１３００のコマンド欄１３０３を参照し、データベース書き換え完了通知コマンドが含まれると判定した場合、データベース書き換え設定が通過したパスのパスＩＤを併せて取得してもよい。ステップＳ１６１６に続いて、不正アクセス判定部６１１は、機器情報テーブル７００のパケット遮断機能欄７０６の値が有効であるか否かを判定する（Ｓ１６１９）。
【０１４８】
不正アクセス判定部６１１は、パケット遮断機能が有効であると判定した場合（Ｓ１６１９：Ｙｅｓ）、スイッチテーブル８００の、ステップＳ１６１６で抽出したパスＩＤの遮断／透過欄８０７の値を「遮断」に変更し、当該パスＩＤ及び遮断したことを保守者に通知し（Ｓ１６２０）、ステップＳ１６０２の受信待機状態に遷移する。不正アクセス判定部６１１は、パケット遮断機能が無効であると判定した場合（Ｓ１６１９：Ｎｏ）、スイッチテーブル８００を更新せずに、当該パスＩＤだけを保守者に通知し、ステップＳ１６２１に遷移し、ステップＳ１６０２のパケット受信待機状態に戻る。
【０１４９】
なお、不正アクセス判定部６１１は、ステップＳ１６１６において、攻撃の種類を特定し、ステップＳ１６２０又はステップＳ１６２１において特定した攻撃の種類を保守者に通知してもよい。具体的には、例えば、不正アクセス判定部６１１は、アクセス監視結果テーブル１３００を参照して、上位ネットワーク１０１から運用コントローラ１０６へのプログラム書き換え設定があったと判定した場合、攻撃２が発生したと判定する。また、例えば、不正アクセス判定部６１１は、アクセス監視結果テーブル１３００を参照して、上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４へのデータベース書き換え設定があったと判定した場合、攻撃１が発生したと判定する。
【０１５０】
図１７は、運用開始後のゲートウェイ１０５の処理フローチャートの判定論理の一例を示すテーブルである。具体的には、図１７のテーブルは、ステップＳ１６１４において、不正アクセス判定部６１１が実施する判定アルゴリズムを示す。不正アクセス判定部６１１は、図１７のテーブルが示す判定アルゴリズムを予め保持している。
【０１５１】
カラム１７０１〜カラム１７０７は判定条件を示し、カラム１７０８は、カラム１７０１〜カラム１７０７の判定条件が満たされた場合におけるフィールド機器１１０の状態を示す。カラム１７０１は、センサデータ異常検出部６１２が、監視センサ１１１のセンサ値が正常であるとしたと判定したか否かを示すフラグ（正常であれば１、異常であれば０）を格納する。
【０１５２】
カラム１７０２は、上位ネットワーク１０１からＳＣＡＤＡデータベース書き換え設定があったか否かを示すフラグを格納する。同様に、カラム１７０３は、上位ネットワーク１０１にＳＣＡＤＡデータベース書き換え完了通知があったか否かを示すフラグを格納する。カラム１７０４は、ＳＣＡＤＡ設計ツール１０４から運用コントローラ１０６の制御プログラム書き換え設定があったか否かを示すフラグを格納する。カラム１７０５は、ＳＣＡＤＡ設計ツール１０４に運用コントローラ１０６の制御プログラム書き換え完了通知があったか否かを示すフラグを格納する。
【０１５３】
カラム１７０６は、上位ネットワーク１０１から運用コントローラ１０６の制御プログラム書き換え設定があったか否かを示すフラグを格納する。カラム１７０７は、上位ネットワーク１０１に運用コントローラ１０６の制御プログラム書き換え完了通知があったか否かを示すフラグを格納する。なお、カラム１７０２〜カラム１７０７に格納されるフラグにおける０は設定無し又は通知無しを示し、１は設定有り又は通知有りを示す。
【０１５４】
レコード１７０９は、監視センサ１１１のセンサ値が正常、かつコントロールネットワーク１０２上で流れている監視対象の制御パケットが無い場合、フィールド機器１１０の状態が正常と判定されることを示す。
【０１５５】
レコード１７１０は、監視センサ１１１のセンサ値が正常であり、上位ネットワーク１０１からＳＣＡＤＡデータベース書き換え設定があり、上位ネットワーク１０１へのＳＣＡＤＡデータベース書き換え完了通知があり、かつ他の監視対象の制御パケットが無い場合、フィールド機器１１０の状態が正常と判定されることを示す。なお、レコード１７１０の判定条件が満たされることは、正規ユーザが、上位ネットワーク１０１からＳＣＡＤＡ設計ツール１０４のコントローラ用プログラムデータベース２０３を書き換えたことを示す。
【０１５６】
同様に、レコード１７１１の判定条件が満たされることは、正規ユーザが、ＳＣＡＤＡ設計ツール１０４から運用コントローラ１０６が保持する制御プログラムを書き換えたことを示す。また、同様に、レコード１７１２の判定条件が満たされることは、正規ユーザが、上位ネットワーク１０１から運用コントローラ１０６が保持する制御プログラムを書き換えたことを示す。
【０１５７】
レコード１７１３は、監視センサ１１１のセンサ値が異常であり、カラム１７０２〜カラム１７０５のフラグが１であり、かつカラム１７０６及びカラム１７０７のフラグが０である場合に、ゲートウェイ１０５が攻撃１を受けたことによりフィールド機器１１０に異常が発生したと判定されることを示す。同様に、レコード１７１４は、監視センサ１１１のセンサ値が異常であり、カラム１７０２〜カラム１７０５のフラグが０であり、かつカラム１７０６及びカラム１７０７のフラグが１である場合に、ゲートウェイ１０５が攻撃２を受けたことによりフィールド機器１１０に異常が発生したと判定されることを示す。
【０１５８】
レコード１７１５の判定条件は、監視センサ１１１のセンサ値が異常であるが、コントロールネットワーク１０２上を流れる制御コマンドが何も無い、ことを示す。当該判定条件が満たされる場合、監視センサ１１１又はフィールド機器１１０に故障が発生していると判定される。従って、当該判定条件が満たされる場合、図１７の例のように、フィールド機器１１０の状態は異常であるが攻撃は発生していないと判定されることが望ましい。この場合、運用コントローラ１０６から待機コントローラ１０７への切替え処理（Ｓ１６１５）が実施されることが望ましい。なお、監視センサ１１１が故障している場合、コントローラの切替え処理が実施されても異常発生が継続するため、センサデータ異常検出部６１２は、当該異常発生の継続を検知した場合、保守者に監視センサ１１１の故障を通知することが望ましい。
【０１５９】
レコード１７１６の判定条件は、上位ネットワーク１０１からＳＣＡＤＡデータベース書き換え設定が有り、かつ上位ネットワーク１０１にＳＣＡＤＡデータベース書き換え完了通知が無いことを示す。つまり、当該判定条件が満たされる場合、フィールド機器１１０は故障していないと判定される。なお、このときＳＣＡＤＡ設計ツール１０４が故障している可能性が高い。
【０１６０】
同様に、レコード１７１７の判定条件は、ＳＣＡＤＡ設計ツール１０４からコントローラの制御プログラム書き換え設定が有り、ＳＣＡＤＡ設計ツール１０４に制御プログラム書き換え完了通知が届いていないことを示す。つまり、レコード１７１７の判定条件が満たされる場合、フィールド機器１１０は故障していないと判定される。なお、このとき運用コントローラ１０６が故障している可能性が高い。
【０１６１】
レコード１７１６又はレコード１７１７の判定条件が満たされる場合、ゲートウェイ１０５は、コントロールネットワーク１０２に接続する機器間の設定コマンドに対する、本来送信されるべき応答である完了通知コマンドが受信していない。ゲートウェイ１０５は、タイマ機能を用いて設定コマンド受信時からの時間を計測し、所定時間内に当該設定コマンドに対応する応答である完了通知を受信していないと判定した場合、例えば、ＳＣＡＤＡ設計ツール１０４の故障、又は運用コントローラ１０６の故障を保守者に通知する。
【０１６２】
具体的には、例えば、ゲートウェイ１０５は、例えば、上位ネットワーク１０１からＳＣＡＤＡデータベース書き換え設定を受信しから所定時間が経過しても、上位ネットワーク１０１にＳＣＡＤＡデータベース書き換え完了通知が無いと判定した場合、ＳＣＡＤＡ設計ツール１０４の故障を保守者に通知する。また、例えば、ゲートウェイ１０５は、ＳＣＡＤＡ設計ツール１０４からコントローラの制御プログラム書き換え設定を受信してから所定時間経過しても、ＳＣＡＤＡ設計ツール１０４に制御プログラム書き換え完了通知が届いていないと判定した場合、運用コントローラ１０６の故障を保守者に通知する。
【０１６３】
以下、運用コントローラ１０６から待機コントローラ１０７への切替え処理が実施された後の復旧手段について説明する。ゲートウェイ１０５が攻撃１を受けた場合、ＳＣＡＤＡ設計ツール１０４のコントローラ用プログラムデータベース２０３を改竄されてしまっているので復旧は容易ではない。このとき、例えば、保守者が、コントローラ用プログラムデータベース２０３をバックアップした外部メディア、又は退避サーバ等から、コントローラ用プログラムデータベース２０３へデータを復旧する。
【０１６４】
また、このとき、例えば、攻撃１を受けた（切替え処理前における）運用コントローラ１０６は、（切替え処理後における運用コントローラである）待機コントローラ１０７から正常な制御プログラムを、外部メディアを経由して取得した上で、コントローラネットワークから切り離され、新たな待機コントローラとなる。
【０１６５】
ゲートウェイ１０５が攻撃２を受けた場合、運用コントローラ１０６が保持する制御プログラムが改竄されてしまっている。例えば、攻撃２によって、運用コントローラ１０６のキャッシュメモリ上に制御プログラムが直接書き込まれた場合は、不揮発性メモリ上に残る正常な制御シーケンスを示す制御プログラムが残っているため、（切替え処理前における）運用コントローラ１０６を再起動することにより復旧する。
【０１６６】
なお、攻撃２によって、不揮発性メモリ上の制御プログラムが書き替えられた場合は、例えば、２面制御された不揮発性メモリをＳＢＹ側で起動する事で復旧することが可能である。なお、例えば、ゲートウェイ１０５が攻撃２を受けた場合の前述の２つの復旧処理は、保守者によって実施される。
【０１６７】
以上、本実施形態の産業制御システム１０において、ゲートウェイ１０５が監視センサ１１１から受信したセンサ値に基づいて、フィールド機器１１０の異常を検知し、コントローラの切替え処理を実施することにより、フィールド機器１１０に異常が起きたことを素早く検知し、フィールド機器１１０を継続して正常に動作させることができる。また、ゲートウェイ１０５は、当該異常を保守者に素早く通知することができる。
【０１６８】
また、ステップＳ１６１４における判定条件が、フィールド機器１１０に異常が発生したと判定されたこと、及びプログラム書き換え設定コマンドが送信されたこと、を含むことにより、ゲートウェイ１０５は攻撃の発生を正確に判定し、攻撃の発生を保守者に通知することができる。
【０１６９】
また、ゲートウェイ１０５は、プログラム書き換え設定が通過したパスを遮断することにより、運用コントローラ１０６へのさらなる攻撃を防止することができる。また、ゲートウェイ１０５は、ステップＳ１６１４の判定条件が満たされた場合に、データベース書き換え設定コマンドの有無を確認することにより、攻撃の種別を特定することができる。
【０１７０】
また、ゲートウェイ１０５は、ステップＳ１６１４の判定条件が満たされ、かつデータベース書き換え設定コマンドが送信されたと判定した場合に、当該データベース書き換え設定コマンドが通過したパスを遮断することにより、ＳＣＡＤＡ設計ツール１０４へのさらなる攻撃を防止することができる。
【０１７１】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１７２】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１７３】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１７４】
１０  産業制御システム、１０４  ＳＣＡＤＡ設計ツール、１０５  ゲートウェイ、１０６  運用コントローラ、１０７  待機コントローラ、１１０  フィールド機器、１１１  監視センサ、６０８  パケット処理部、６０９  スイッチ制御部、６１０  パケット解析部・パケット処理部、６１１  不正アクセス判定部、６１２  センサデータ異常検出部、６１３  制御パケット監視部、６１４  機器情報ＤＢ、６１５  スイッチテーブルＤＢ、６１６  センサデータＤＢ、６１７  アクセス監視結果ＤＢ
【図１】
2017228887.tif 000003
【図２】
2017228887.tif 000004
【図３】
2017228887.tif 000005
【図４】
2017228887.tif 000006
【図５】
2017228887.tif 000007
【図６】
2017228887.tif 000008
【図７】
2017228887.tif 000009
【図８】
2017228887.tif 000010
【図９】
2017228887.tif 000011
【図１０】
2017228887.tif 000012
【図１１】
2017228887.tif 000013
【図１２】
2017228887.tif 000014
【図１３】
2017228887.tif 000015
【図１４】
2017228887.tif 000016
【図１５】
2017228887.tif 000017
【図１６】
2017228887.tif 000018
【図１７】
2017228887.tif 000019