(57)【特許請求の範囲】
【請求項１】
制御対象機器の制御および計測機器による計測を行い、制御ネットワークを介して連携先装置と通信するコントローラであって、
自装置の受信対象となる新たな通信アドレスを作成して前記連携先装置に通知する通信アドレス処理手段と、
受信した通信データにおける送信先アドレスが前記新たな通信アドレスではない場合、前記通信データによる通信は不正な通信であると判断する通信データ検査手段とを具備し、
前記通信データ検査手段は、
受信した通信データによる通信が適切ではない場合、前記通信データにおける送信先アドレスを前記制御ネットワークを介して通信するダミーコントローラの受信対象となる通信アドレスとして前記ダミーコントローラに引き継がせる引き継ぎ対象の通信アドレスに決定し、
前記通信アドレス処理手段は、
前記通信データ検査手段による前記引き継ぎ対象の通信アドレスの決定に後続して、自装置の受信対象となる新たな通信アドレスを作成し、作成した新たな通信アドレスを前記ダミーコントローラと前記連携先装置とに通知するとともに、前記引き継ぎ対象の通信アドレスを前記ダミーコントローラに送信して引き継がせる
ことを特徴とするコントローラ。
【請求項２】
前記通信データ検査手段は、受信した通信データが前記ダミーコントローラを経由して到達したものであるか否かを判断し、
前記コントローラは、前記通信データが前記ダミーコントローラを経由して到達したものである場合、前記通信データに基づく処理を実行する
ことを特徴とする請求項１に記載のコントローラ。
【請求項３】
制御対象機器の制御および計測機器による計測を行うコントローラと、
制御ネットワークを介して前記コントローラと通信する連携先装置と、
前記制御ネットワークを介して前記コントローラと通信するダミーコントローラを有し、
前記コントローラは、
前記コントローラの受信対象となる新たな通信アドレスを作成して前記連携先装置に通知する通信アドレス処理手段と、
受信した通信データにおける送信先アドレスが前記新たな通信アドレスではない場合、前記通信データによる通信は不正な通信であると判断する通信データ検査手段と、を有し、
前記連携先装置は、
前記新たな通信アドレスの通知を受信した場合、前記コントローラの通信アドレスを前記新たな通信アドレスに更新する通信先管理手段を有し、
前記コントローラの通信データ検査手段は、
受信した通信データによる通信が適切ではない場合、前記通信データにおける送信先アドレスを前記ダミーコントローラの受信対象となる通信アドレスとして前記ダミーコントローラに引き継がせる引き継ぎ対象の通信アドレスに決定し、
前記コントローラの通信アドレス処理手段は、
前記通信データ検査手段による前記引き継ぎ対象の通信アドレスの決定に後続して、前記コントローラの受信対象となる新たな通信アドレスを作成し、作成した新たな通信アドレスを前記ダミーコントローラと前記連携先装置とに通知するとともに、前記引き継ぎ対象の通信アドレスを前記ダミーコントローラに送信して引き継がせる
ことを特徴とする制御システム。
【請求項４】
前記ダミーコントローラは、
自装置の受信対象となる通信アドレスとして引き継いだ前記引き継ぎ対象の通信アドレス宛ての通信データによる通信が適切である場合、前記通信データを前記コントローラに転送する中継手段を有し、
前記コントローラの通信データ検査手段は、
受信した通信データが前記ダミーコントローラを経由して到達したものであるか否かを判断し、
前記コントローラは、前記通信データが前記ダミーコントローラを経由して到達したものである場合、前記通信データに基づく処理を実行する
ことを特徴とする請求項３に記載の制御システム。
【請求項５】
制御対象機器の制御および計測機器による計測を行い、制御ネットワークを介して連携先装置と通信するコントローラであって、
自装置の受信対象となる新たな通信アドレスを作成して前記連携先装置に通知する通信アドレス処理手段と、
受信した通信データにおける送信先アドレスが前記新たな通信アドレスではない場合、前記通信データによる通信は不正な通信であると判断する通信データ検査手段と、
を有し、
前記通信データ検査手段は、検査対象の通信データにおいて不正な通信であると判断した場合、前記通信アドレス処理手段により作成済の最新の通信アドレスを前記検査対象の通信データの送信元に通知することを特徴とするコントローラ。
【請求項６】
受信した通信データにおける通信内容が適切な内容ではないと前記通信データ検査手段が判断した場合、前記通信アドレス処理手段は、前記通信データにおける送信先アドレスを監視対象の通信アドレスに決定し、前記通信データ検査手段は、以後に受信する通信データにおける送信先アドレスが前記監視対象の通信アドレスである場合、前記監視対象の通信アドレスを送信先アドレスとした前記通信データによる通信は不正な通信であると判断することを特徴とする請求項５に記載のコントローラ。
【請求項７】
前記通信アドレス処理手段は、前記通信データ検査手段による前記監視対象の通信アドレスの決定に後続して、自装置の受信対象となる新たな通信アドレスを作成して前記連携先装置に通知することを特徴とする請求項６に記載のコントローラ。
【請求項８】
前記連携先装置による通信のデータパターンの一覧が登録された連携先情報を記憶する記憶手段を有し、
前記通信データ検査手段は、受信した通信データにおけるペイロードのデータパターンが前記連携先情報に登録されたデータパターンのいずれにも一致しなかった場合、前記通信データにおける通信内容が適切な内容ではないと判断することを特徴とする請求項６または７に記載のコントローラ。
【請求項９】
前記連携先装置の通信アドレスと前記連携先装置による通信のデータパターンの組み合わせの一覧が登録された連携先情報を記憶する記憶手段を有し、
前記通信データ検査手段は、受信した通信データにおける送信元アドレスとペイロードのデータパターンとの組み合わせが前記連携先情報に登録された通信アドレスとデータパターンとの組み合わせのいずれにも一致しなかった場合、前記通信データにおける通信内容が適切な内容ではないと判断することを特徴とする請求項６または７に記載のコントローラ。
【請求項１０】
前記通信データ検査手段は、検査対象の通信データにおいて不正な通信であると判断した場合、前記検査対象の通信データによる通信は不正な通信である旨の警告を前記連携先装置に通知することを特徴とする請求項５から９のいずれか１の請求項に記載のコントローラ。
【請求項１１】
前記通信データ検査手段は、受信した通信データにおける送信先アドレスが前記新たな通信アドレスであるか否かの検査をプロトコル階層毎に行うことを特徴とする請求項５から１０のいずれか１の請求項に記載のコントローラ。
【請求項１２】
前記通信アドレス処理手段は、前記新たな通信アドレスとして少なくとも仮想ＩＰアドレスを作成することを特徴とする請求項５から１１のいずれか１の請求項に記載のコントローラ。
【請求項１３】
前記通信アドレス処理手段は、前記新たな通信アドレスとして仮想ＭＡＣアドレスを作成することを特徴とする請求項５から１２のいずれか１の請求項に記載コントローラ。
【請求項１４】
前記通信アドレス処理手段は、自装置の電源投入時または自装置の再起動時に受信対象となる前記新たな通信アドレスを作成することを特徴とする請求項５から１３のいずれか１の請求項に記載のコントローラ。
【請求項１５】
制御対象機器の制御および計測機器による計測を行うコントローラと、
制御ネットワークを介して前記コントローラと通信する連携先装置と、を有し、
前記コントローラは、
前記コントローラの受信対象となる新たな通信アドレスを作成して前記連携先装置に通知する通信アドレス処理手段と、
受信した通信データにおける送信先アドレスが前記新たな通信アドレスではない場合、前記通信データによる通信は不正な通信であると判断する通信データ検査手段と、を有し、
前記通信データ検査手段は、検査対象の通信データにおいて不正な通信であると判断した場合、前記通信アドレス処理手段により作成済の最新の通信アドレスを前記検査対象の通信データの送信元に通知し、
前記連携先装置は、
前記新たな通信アドレスの通知を受信した場合、前記コントローラの通信アドレスを前記新たな通信アドレスに更新する通信先管理手段を有する
ことを特徴とする制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コントローラおよびそのコントローラを含む制御システムに関する。
【背景技術】
【０００２】
従来、ポンプやアクチュエータ等の制御や、センサ値を読み出す計測を行う制御システムでは、ベンダによる専用の通信機と、独自の信号線や通信規格が用いられていた。しかし、近年の利用者の利便性向上やコストダウン、オープン化、情報連携といった要請により、制御システムにおいても機器間のネットワーク通信をインターネットなどの情報システムで用いられているＥｔｈｅｒｎｅｔ（登録商標）やＴＣＰ／ＩＰ、ＵＤＰ／ＩＰといったプロトコルを採用する事例が増えている。
【０００３】
しかしながら、これらの広く採用されているプロトコルを採用すると、悪意のある攻撃者によって制御システムが攻撃される可能性が増す。また、制御システムの構成要素として想定されていない情報機器が不意に制御ネットワークに接続されることにより、制御システム全体や制御システムを構成する各装置が意図せぬ挙動を示す危険性がある。
【０００４】
情報システムでは、外部からの攻撃である不正な通信を検査する手段として、パケットフィルタ、ファイアウォールという仕組みが用いられている。これは、基本的には事前に正常な通信の態様、具体的には送信元と宛先を定義し、定義されていない態様の通信を遮断する仕組みである。
【０００５】
また、不正な通信を検査する手段として、ＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ：侵入検査システム）、ＩＰＳ（Ｉｎｔｒｕｓｉｏｎ  Ｐｒｅｖｅｎｔｉｏｎ  Ｓｙｓｔｅｍ／Ｉｎｔｒｕｓｉｏｎ  Ｐｒｏｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ：侵入防止システム／侵入防御システム）という仕組みがある。
【０００６】
ＩＤＳは通信の内容を検査するものであり、シグネチャと呼ばれる検査ルールに基づいて通信を判定することで不正な通信を検知する仕組みである。ここで、シグネチャは、コンピュータウイルスや攻撃者の行う通信のパターンを定義した情報である。
【０００７】
ＩＰＳは、通信に関してＩＤＳと同様な判定を行う仕組みである。ただし、ＩＤＳが不正な通信を検知しても管理者などへの通知のみ行うものであるのに対し、ＩＰＳは不正な通信を遮断するものである。
【０００８】
不正な通信を検査するためには、検査のための検査ルールを如何に正確に作成するかが重要である。不適切な検査ルールは、不正でない通信を誤検出し、また、不正な通信を検出し損なう原因となるからである。そこで、情報システムにおいては、セキュリティベンダ等により特定のウイルスのみ判定するシグネチャ等の作成が行われている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許第５０８８４０３号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、パケットフィルタやファイアウォールは、一般的に、ネットワークの境界において動作し、ネットワークの境界を超えて不正な通信が行われた場合に、当該不正な通信を検知する。このため、パケットフィルタやファイアウォールでは、ネットワークの内部の機器がウイルスに感染したり、ネットワークの内部において不正な機器がネットワークに接続されたりしたとして、これらの機器がシステム内で通信を行っている場合（ネットワークの境界を超えるような通信が行われない場合）には、ネットワーク内の機器を守ることができない。
【００１１】
また、特許文献１には、ネットワーク境界にＩＤＳを拡張した通信検出装置を設け、この通信検出装置により不正な通信を検出し、制御システムを保護する技術が開示されている。しかし、この特許文献１に開示の技術を用いたとしても、パケットフィルタやファイアウォールを用いた場合と同様に、ネットワークの内部における不正な通信による脅威からネットワーク内の機器を守ることができない。
【００１２】
ＩＤＳやＩＰＳはネットワークの内部に設置されるが、これらの機器をネットワークに設置するには、ネットワーク構成の変更が必要である。また、ＩＤＳやＩＰＳでは、検査ルールを更新するための通信をネットワークの外部と行う仕組みを用意する必要がある。このようなネットワーク構成の変更や通信の仕組みを用意するのには多大なコストがかかるため、ＩＤＳやＩＰＳの制御システムへの採用は進んでいない。
【００１３】
この発明は、以上のような事情に鑑みてなされたものであり、制御システム内における不正な通信を検知することができる技術的手段を提供することを目的とする。
【課題を解決するための手段】
【００１４】
この発明によるコントローラは、制御対象機器の制御および計測機器による計測を行い、制御ネットワークを介して連携先装置と通信するものである。本発明のコントローラは、自装置の受信対象となる新たな通信アドレスを作成して連携先装置に通知する通信アドレス処理手段と、受信した通信データにおける送信先アドレスが新たな通信アドレスではない場合、その通信データによる通信は不正な通信であると判断する通信データ検査手段と、を有する。
【００１５】
かかる発明によれば、コントローラは、自装置の受信対象となる新たな通信アドレスを作成して通知しておき、その後に受信した通信データによる通信のうち、当該新たな通信アドレスに変更前の通信アドレス宛ての通信を不正な通信と判断する。制御システムの構成要素であるコントローラ自体が不正な通信を検知するため、制御システム内における不正な通信を検知することができ、そのような不正な通信による脅威からコントローラを守ることができる。また、コントローラの通信アドレスの変更によって不正な通信を検知するため、ネットワーク構成の変更などを行う必要がなく、本発明の技術を導入する際のコストを抑えることができる。
【００１６】
ここで、不正な通信には、通信内容が正しくない通信の他、通信頻度が正しくないというように通信態様が正しくない通信も含まれる。通信態様が正しくない通信の具体例としては、ＤｏＳ攻撃（Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ  Ａｔｔａｃｋ：サービス拒否攻撃）やＤＤｏＳ攻撃（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ  Ａｔｔａｃｋ：分散型サービス拒否攻撃）における通信（あるいはＤｏＳ攻撃やＤＤｏＳ攻撃を構成する通信）が挙げられる。ＤｏＳ攻撃やＤＤｏＳ攻撃は、大量の通信データを攻撃対象に送りつけて、攻撃対象のリソースを消費し尽くさせ、攻撃対象の正常な動作を阻害するものである。
【００１７】
この発明の好ましい態様において、通信データ検査手段は、受信した通信データによる通信が適切ではない場合、通信データにおける送信先アドレスを制御ネットワークを介して通信するダミーコントローラの受信対象となる通信アドレスとしてダミーコントローラに引き継がせる引き継ぎ対象の通信アドレスに決定する。通信アドレス処理手段は、通信データ検査手段による引き継ぎ対象の通信アドレスの決定に後続して、自装置の受信対象となる新たな通信アドレスを作成し、作成した新たな通信アドレスをダミーコントローラと連携先装置とに通知するとともに、引き継ぎ対象の通信アドレスをダミーコントローラに送信して引き継がせる。
【００１８】
この態様によれば、コントローラは、受信した通信データによる通信が適切ではない場合、通信データにおける送信先アドレスをダミーコントローラの受信対象となる通信アドレスとして引き継がせる。例えば、コントローラは、受信した通信データにおける通信内容が適切な内容ではない場合にその通信データによる通信は適切な通信ではないと判断したり、受信した通信データの送信元からの通信頻度を監視し、通信頻度が異常に多い送信元からの通信データによる通信は適切な通信ではないと判断したりする。コントローラは、引き継ぎ対象の通信アドレスをダミーコントローラへ引き継いだ後には、当該引き継ぎ対象の通信アドレス宛ての通信を受信しないようになる。このため、この態様によれば、不正な通信を検知した以後、当該不正な通信と同じ通信アドレス宛ての再度の不正な通信による脅威からコントローラを守ることができる。具体的には、この態様によれば、ＤｏＳ攻撃やＤＤｏＳ攻撃からコントローラを保護することができ、ＤｏＳ攻撃やＤＤｏＳ攻撃によってコントローラのリソースが無駄に消費される可能性を減らすことができる。
【発明の効果】
【００１９】
この発明によれば、制御システム内における不正な通信を検知することができる。
【図面の簡単な説明】
【００２０】
【図１】この発明の第１実施形態によるコントローラ１６０を含む制御システム５００Ｓの構成を示すブロック図である。
【図２】制御システム５００Ｓのデータベースステーション１２０に記憶された動作定義１３１の例を示す図である。
【図３】制御システム５００Ｓのオペレータステーション１４０に記憶された動作定義１５１の例を示す図である。
【図４】コントローラ１６０に記憶されたコントローラ設定・プログラム１７１において定義された制御システム５００Ｓ内の通信制御に使用される信号とメモリアドレスのリストである。
【図５】コントローラ１６０に記憶された連携先情報１７２の例を示す図である。
【図６】コントローラ１６０の動作を示すフローチャートである。
【図７】データベースステーション１２０などのような連携先装置の動作を示すフローチャートである。
【図８】動作定義１５１を元にオペレータステーション１４０のメモリ上に展開され、コントローラ１６０からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。
【図９】動作定義１３１を元にデータベースステーション１２０のメモリ上に展開され、コントローラ１６０からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。
【図１０】この発明の第２実施形態によるコントローラ１６０Ａを含む制御システム５００ＳＡの構成を示すブロック図である。
【図１１】制御システム５００ＳＡのダミーコントローラ２００に記憶された応答・中継設定情報２１１の引き継ぎ元情報の例を示す図である。
【図１２】ダミーコントローラ２００に記憶された応答・中継設定情報２１１の中継情報の例を示す図である。
【図１３】コントローラ１６０Ａの動作を示すフローチャートである。
【図１４】ダミーコントローラ２００の動作を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、図面を参照し、この発明の実施形態について説明する。
＜第１実施形態＞
図１は、この発明の第１実施形態によるコントローラ１６０を含む制御システム５００Ｓの構成を示すブロック図である。制御システム５００Ｓは、例えば、工場の生産システムなどである。制御システム５００Ｓは、コントローラ１６０と、エンジニアリングステーション１００と、データベースステーション１２０と、オペレータステーション１４０と、制御ネットワーク１８０とを有する。コントローラ１６０、エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０は、制御ネットワーク１８０に接続されており、これらの各装置は、制御ネットワーク１８０を介して通信を行う。
【００２２】
コントローラ１６０は、例えばＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）、ＤＣＳ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）用コントローラ等である。コントローラ１６０は、フィールド機器（図示略）を制御し、またはフィールド機器（図示略）により計測を行うものである。コントローラ１６０による制御対象機器および計測機器であるフィールド機器は、例えば各種センサやアクチュエータ、モータ、ポンプ、バルブなどが代表的である。制御システム５００Ｓでは、制御システム５００Ｓの規模や重要度に応じて、一台のコントローラ１６０が設けられる場合もあり、また、複数台のコントローラ１６０からなる冗長構成が採られる場合もある。また、異機種のコントローラ１６０からなる同一論理構成のコントローラ１６０が用いられる場合もある。また、コントローラ１６０は、専用装置であってもよいし、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）上で動作するアプリケーションにより実現されるソフトウェアＰＬＣであってもよい。
【００２３】
エンジニアリングステーション１００、データベースステーション１２０、オペレータステーション１４０は、コントローラ１６０と連携して動作する連携先装置である。エンジニアリングステーション１００、データベースステーション１２０、オペレータステーション１４０は、専用装置またはＰＣである。このエンジニアリングステーション１００、データベースステーション１２０、オペレータステーション１４０の各々は、一台の専用装置またはＰＣにより構成される場合があり、また、冗長性を考慮して複数台の専用装置またはＰＣにより構成される場合もある。また、エンジニアリングステーション１００、データベースステーション１２０、オペレータステーション１４０は、互いに離れた場所に設置されて、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などを経由して通信する場合もある。
【００２４】
エンジニアリングステーション１００は、制御システム５００Ｓ内の他の装置と通信する手段である通信機能部１０１と、システムの動作定義やコントローラ１６０のプログラムを作成するエンジニアリング支援機能部１０２と、通信先となるコントローラ１６０の情報を管理する通信先管理機能部１０３とを有する。通信機能部１０１、エンジニアリング支援機能部１０２および通信先管理機能部１０３は、エンジニアリングステーション１００のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）（図示略）がプログラムを実行することにより実現される機能である。エンジニアリング支援機能部１０２は、保守画面やトレンド画面といった画面に出す信号の定義や画面の作成、コントローラ１６０のプログラム開発を行う手段であり、エンジニアリング作業の成果として動作定義１１１、コントローラ設定・プログラム１１２を作成する。
【００２５】
データベースステーション１２０は、制御システム５００Ｓ内の他の装置と通信する通信機能部１２１と、制御システム５００Ｓの実績情報などを収集して蓄積データ１３２として蓄積するデータ収集機能部１２２と、通信先となるコントローラ１６０の情報を管理する通信先管理機能部１２３とを有する。通信機能部１２１、データ収集機能部１２２および通信先管理機能部１２３は、データベースステーション１２０のＣＰＵ（図示略）がプログラムを実行することにより実現される機能である。データ収集機能部１２２は、動作定義１３１に基づいて動作する。動作定義１３１は、エンジニアリングステーション１００により生成された動作定義１１１のうちのデータベースステーション１２０に関する部分の複製であり、通信機能部１２１等を介して取得されたものである。図２は、データベースステーション１２０に記憶された動作定義１３１の例を示す図である。図２に示すように、動作定義１３１には、コントローラ１６０に割り当てられた本来のＩＰアドレス（以下、実ＩＰアドレスという。図２の例では、取得先実ＩＰアドレスと表記されている。）と、コントローラ１６０のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス（以下、実ＭＡＣアドレスという。図２の例では、取得先実ＭＡＣアドレスと表記されている。）が定義されている。
【００２６】
オペレータステーション１４０は、制御システム５００Ｓ内の他の装置と通信するための通信機能部１４１と、制御システム５００Ｓの実績情報などを表示し、必要に応じて操作指示を行う表示機能・操作機能部１４２と、通信先となるコントローラ１６０の情報を管理する通信先管理機能部１４３とを有する。通信機能部１４１、表示機能・操作機能部１４２および通信先管理機能部１４３は、オペレータステーション１４０のＣＰＵ（図示略）がプログラムを実行することにより実現される機能である。表示機能・操作機能部１４２は、動作定義１５１に基づいて動作する。動作定義１５１は、エンジニアリングステーション１００により生成された動作定義１１１のうちのオペレータステーション１４０に関する部分の複製であり、通信機能部１４１等を介して取得されたものである。図３は、オペレータステーション１４０に記憶された動作定義１５１の例を示す図である。図３に示すように、動作定義１５１には、コントローラ１６０の実ＩＰアドレス（図３の例では、取得先実ＩＰアドレスと表記されている。）とコントローラ１６０の実ＭＡＣアドレス（図３の例では、取得先実ＭＡＣアドレスと表記されている。）が定義されている。
【００２７】
オペレータステーション１４０やデータベースステーション１２０は、インターネットなどの他の情報ネットワークに接続されており、当該他の情報ネットワークに接続されたクライアント装置（図示略）などと通信することが可能である。オペレータステーション１４０やデータベースステーション１２０と、他の情報ネットワークとは、通常、ファイアウォール（図示略）などを介して隔離されている。しかし、ファイアウォールをすり抜けられたりすると、制御システム５００Ｓは、他の情報ネットワークのクライアント装置などから、悪意を持った攻撃を受ける虞がある。例えば、コントローラ１６０と正規に連携していないクライアント装置が、コントローラ１６０にアクセスし、コントローラ１６０が収集したデータの取得やコントローラ１６０の設定変更を試みる、といった具合である。また、制御ネットワーク１８０に不正な機器が接続されて、その不正な機器からコントローラ１６０が悪意を持った攻撃を受ける虞がある。そこで、本実施形態のコントローラ１６０は、このような制御システム５００Ｓ内の不正な通信に対処するための仕組みを有している。
【００２８】
コントローラ１６０は、通信機能部１６１と、計測・制御機能部１６２と、仮想アドレス処理機能部１６３と、通信データ検査機能部１６４とを有する。また、コントローラ１６０は、コントローラ設定・プログラム１７１および連携先情報１７２を格納する記憶装置１７０を有する。通信機能部１６１、計測・制御機能部１６２、仮想アドレス処理機能部１６３および通信データ検査機能部１６４は、コントローラ１６０を構成するＣＰＵ（図示略）が記憶装置１７０に記憶されたプログラムを実行することにより実現される機能である。これらの機能を実現するプログラムは、コントローラ設定・プログラム１７１とは別個のプログラムであっても良いし、コントローラ設定・プログラム１７１に含まれていても良い。
【００２９】
通信機能部１６１は、制御システム５００Ｓ内の他の装置と通信する手段である。計測・制御機能部１６２は、コントローラ設定・プログラム１７１に従って動作し、デジタル信号やアナログ信号の入出力を通じてセンサやアクチュエータの制御を行う手段である。コントローラ設定・プログラム１７１は、エンジニアリングステーション１００により生成され、通信機能部１６１等（他の手段として、例えばＳＤカードなどの媒体やＵＳＢケーブルによる接続などがある）によって取得されたコントローラ設定・プログラム１１２である。図４は、コントローラ１６０に記憶されたコントローラ設定・プログラム１７１において定義された制御システム５００Ｓ内の通信制御に使用される信号とメモリアドレスのリストである。図４では、フィールド機器の一例であるポンプの動作に関するメモリアドレス等が定義されている。
【００３０】
連携先情報１７２は、エンジニアリングステーション１００により生成された動作定義１１１のうちの少なくともコントローラ１６０と通信を行う装置（すなわち連携先装置）に関する情報であり、通信機能部１６１等（他の手段として、例えばＳＤカードなどの媒体やＵＳＢケーブルによる接続などがある）によって取得された情報である。図５は、コントローラ１６０に記憶された連携先情報１７２の例を示す図である。連携先情報１７２には、連携先装置の通信アドレス、具体的には、連携先装置の各々に割り当てられた連携先装置の本来のＩＰアドレス（実ＩＰアドレス。図５の例では、連携先実ＩＰアドレスと表記されている。）が登録されている。コントローラ１６０は、連携先情報１７２に登録された通信アドレス（実ＩＰアドレス）によって連携先装置を認識する。また、連携先情報１７２には、連携先装置の通信アドレスが表す連携先装置と、その連携先装置による通信のデータパターンの組み合わせの一覧が登録されている。図５では、連携先装置のうちオペレータステーション１４０とデータベースステーション１２０のデータパターンの一例を示している。
【００３１】
仮想アドレス処理機能部１６３は、自装置（コントローラ１６０）の受信対象となる新たな通信アドレスを作成して、連携先情報１７２によって認識している連携先装置（本実施形態ではエンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）に作成した新たな通信アドレスを通知する通信アドレス処理手段である。仮想アドレス処理機能部１６３は、具体的には、仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを作成し、作成した仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを連携先装置に通知する。これにより仮想アドレス処理機能部１６３は、連携先装置におけるコントローラ１６０の通信アドレスを新たな通信アドレスに変更させる。
【００３２】
ここで、本明細書における仮想ＩＰアドレスは、未割り当てのプライベートＩＰアドレスの中から決定されたプライベートＩＰアドレスのことである。また、特別な意味を持つＩＰアドレス（例えば、ブロードキャストを意味するＩＰアドレスなど）を仮想ＩＰアドレスとして用いないのが好ましい。また、本明細書における仮想ＭＡＣアドレスは、ベンダコードを意味する３オクテット６文字のビット列のうちの７ビット目のビット（イーサネット（登録商標）通信時には２ビット目に伝送されるビット）であるＧ／Ｌ（Ｇｌｏｂａｌ／Ｌｏｃａｌ）ビットを１にすることで実ＭＡＣアドレスと区別されたアドレスである。つまり、仮想ＭＡＣアドレスでは、１オクテット目の２文字が「ｘ２」、「ｘ６」、「ｘＡ」、「ｘＥ」などになる。
【００３３】
また、仮想アドレス処理機能部１６３は、通信アドレスを新たに作成する前に受信対象となっていた通信アドレス宛ての通信データに加え、作成した新たな通信アドレス宛ての通信データを通信機能部１６１が受信するように通信機能部１６１の設定変更を行う。
【００３４】
通信データ検査機能部１６４は、受信した通信データにおける送信先アドレスが、仮想アドレス処理機能部１６３が作成して通知した新たな通信アドレスではない場合、当該通信データによる通信は不正な通信であると判断する通信データ検査手段である。
仮想アドレス処理機能部１６３および通信データ検査機能部１６４については、動作の説明において詳述する。
【００３５】
次に本実施形態の動作について説明する。
図６は、コントローラ１６０の動作を示すフローチャートである。コントローラ１６０の電源が投入されると（またはコントローラ１６０が再起動されると）、コントローラ１６０のＣＰＵは、仮想アドレス処理機能部１６３として動作を開始する。まず、仮想アドレス処理機能部１６３は、自装置の受信対象となる新たな通信アドレスを作成する（ステップＳ１０１）。具体的には、コントローラ１６０は、仮想ＩＰアドレスと仮想ＭＡＣアドレスとを作成する。仮想ＩＰアドレスおよび仮想ＭＡＣアドレスは、コントローラ１６０の通信アドレスとして用いられる。制御システム５００Ｓにおけるネットワークの通信プロトコルがＩＰである場合、仮想ＭＡＣアドレスは不要となることもある。この場合、仮想アドレス処理機能部１６３は、仮想ＩＰアドレスのみを作成するようにしても良い。しかし、通信経路ではＭＡＣアドレスに基づいて通信が行われ、制御システム５００Ｓへの攻撃者はＭＡＣ層に対して攻撃を行うことがある。これらから、仮想アドレス処理機能部１６３は、仮想ＩＰアドレスと仮想ＭＡＣアドレスの両方を作成することが好ましい。
【００３６】
次に、仮想アドレス処理機能部１６３は、ステップＳ１０１において作成した仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを、連携先情報１７２によって連携先と認識している装置（本実施形態では、エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）に対して通知する（ステップＳ１０２）。仮想アドレス処理機能部１６３によって作成されて通知される通信アドレスは、連携先装置からすると通信先であるコントローラ１６０を示す情報であるため、これら通信アドレスのことを通信先情報と呼ぶことがある。
【００３７】
ステップＳ１０２の後、仮想アドレス処理機能部１６３は、自装置（コントローラ１６０）の実ＩＰアドレスおよび実ＭＡＣアドレス宛の通信データに加え、ステップＳ１０１において作成した仮想ＩＰアドレスおよび仮想ＭＡＣアドレス宛ての通信データを通信機能部１６１が受信するように通信機能部１６１の設定変更を行う。その後、コントローラ１６０のＣＰＵは、仮想アドレス処理機能部１６３としての動作を終了する。そして、コントローラ１６０のＣＰＵは、自装置宛て（具体的には、自装置の実ＩＰアドレスおよび実ＭＡＣアドレス宛て、または自装置の仮想ＩＰアドレスおよび仮想ＭＡＣアドレス宛て）の通信データを受信するまで待機する（ステップＳ１０３）。
【００３８】
通信機能部１６１が自装置宛の通信データを受信すると、コントローラ１６０のＣＰＵは、通信データ検査機能部１６４として動作を開始する。そして、通信データ検査機能部１６４は、受信した通信データを検査対象の通信データとして、当該検査対象の通信データによる通信が不正な通信であるか否かを検査する。通信データ検査機能部１６４は、この検査をプロトコル階層毎に行う。具体的には、図６のフローチャートにおいて、後述するステップＳ１０４からＳ１０７に至る一連の処理をデータリンク層において行った後、ネットワーク層において再度ステップＳ１０４からＳ１０７に至る一連の処理を行う。以下の説明では、仮想ＭＡＣアドレスと仮想ＩＰアドレスを併記することがあるが、これは、データリンク層についての処理の場合には仮想ＭＡＣアドレスであり、ネットワーク層についての処理の場合には仮想ＩＰアドレスである、ということである。実ＭＡＣアドレスと実ＩＰアドレスについても同様である。
【００３９】
まず、通信データ検査機能部１６４は、受信した通信データにおける送信先アドレスが、仮想アドレス処理機能部１６３によって先に通知した自装置（コントローラ１６０）の仮想ＩＰアドレス／仮想ＭＡＣアドレスであるか否かを判断する（ステップＳ１０４）。
【００４０】
受信した通信データにおける送信先アドレスが自装置の仮想ＩＰアドレス／仮想ＭＡＣアドレスではない場合、受信した通信データにおける送信先アドレスは、自装置の実ＩＰアドレス／実ＭＡＣアドレスである。受信した通信データにおける送信先アドレスがコントローラ１６０の実ＩＰアドレス／実ＭＡＣアドレスであった場合、コントローラ１６０が連携先と認識していない送信元、すなわち不正な送信元からのアクセスやプロセスであると疑われる。正規な連携先装置であれば、先のステップで通知した仮想ＩＰアドレス／仮想ＭＡＣアドレス宛てにアクセスするはずだからである。このような理由により、受信した通信データにおける送信先アドレスが自装置の仮想ＩＰアドレス／仮想ＭＡＣアドレスではない場合（Ｓ１０４：Ｎｏ）、通信データ検査機能部１６４は、コントローラ１６０の実ＩＰアドレス／実ＭＡＣアドレス宛てにアクセス（すなわち不正な通信）があった旨の警告を制御システム５００Ｓ内の装置に通知する（ステップＳ１０５）。例えば、通信データ検査機能部１６４は、当該不正な通信があった旨の警告や不正な通信を行った送信元情報などの警告内容をオペレータステーション１４０に通知し、当該警告等を表示機能・操作機能部１４２によって表示させる、といった具合である。
【００４１】
ここで、制御システム５００Ｓ内の各機器の起動タイミングによっては、コントローラ１６０の起動時に連携先装置が稼働していない場合がある。また、コントローラ１６０の稼働時に連携先装置が再起動する場合もある。また、制御システム５００Ｓ内の通信データにノイズが重畳されるなどの通信不備が生じる場合もある。これらの場合には、ステップＳ１０２において送信した通信先情報（具体的にはコントローラ１６０の仮想ＩＰアドレス／仮想ＭＡＣアドレス）が連携先装置において登録されないことがある。これにより、通信データ検査機能部１６４が連携先装置からの通信を不正な通信であるとの誤判断を行うこともあり得る。
【００４２】
そこで、通信データ検査機能部１６４は、ステップＳ１０５に後続して、当該受信した通信データの送信元にコントローラ１６０の通信先情報、すなわち、作成済のコントローラ１６０の新たな通信アドレスである仮想ＩＰアドレス／仮想ＭＡＣアドレスを通知する（ステップＳ１０６）。例えば、通信データ検査機能部１６４は、当該通信データの送信元アドレスを送信先アドレスとし、コントローラ１６０の仮想ＩＰアドレス／仮想ＭＡＣアドレスをヘッダ以外のデータ領域（ペイロード）に格納した通信データを作成し、その作成した通信データを通信機能部１６１に送信させる。このように、通信データ検査機能部１６４は、通信先情報を再通知することで、連携先装置に次回から正規な通信をさせる。
【００４３】
通信先情報の再通知（Ｓ１０６）の後、コントローラ１６０のＣＰＵは、通信データ検査機能部１６４としての動作を終了し、当該受信した通信データに基づく処理を実行する（ステップＳ１０７）。このように、当該受信した通信データを破棄せずに通信データの処理を実行することで、正規な通信であるはずの通信データが誤判断によって処理されないといった事態を回避する。これにより、コントローラ１６０がリアルタイム処理を要求されたとしても、制御システム５００Ｓに不具合が生じることはない。ステップＳ１０７の後、コントローラ１６０のＣＰＵは、ステップＳ１０３に戻り、自装置宛ての通信データを受信するまで待機する。
【００４４】
ここで、通信データ検査機能部１６４は、自装置の実ＩＰアドレス／実ＭＡＣアドレス宛ての通信があった場合に、その通信データの送信元に自装置の仮想ＩＰアドレス／仮想ＭＡＣアドレスを通知していた（Ｓ１０６参照）。これにより、悪意のある攻撃者もコントローラ１６０の仮想ＩＰアドレス／仮想ＭＡＣアドレスを知ることができるため、悪意のある攻撃者が仮想ＩＰアドレス／仮想ＭＡＣアドレス宛てに通信を試みる虞がある。すなわち、仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信であったとしても不正な通信である可能性がある。
【００４５】
そこで、コントローラ１６０は、仮想ＩＰアドレス／仮想ＭＡＣアドレスを電源投入時に作成するだけでなく、仮想ＩＰアドレス／仮想ＭＡＣアドレスを後述の条件の下に変更してゆく。そして、コントローラ１６０は、仮想ＩＰアドレス／仮想ＭＡＣアドレスを変更してゆく過程で不正な通信と疑われる通信に用いられた仮想ＩＰアドレス／仮想ＭＡＣアドレスを監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスとし、その監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレス宛ての通信の有無を検査する。以下、このような処理を詳述する。
【００４６】
ステップＳ１０４において、受信した通信データにおける送信先アドレスが自装置（コントローラ１６０）の仮想ＩＰアドレス／仮想ＭＡＣアドレスである場合（Ｓ１０４：Ｙｅｓ）、通信データ検査機能部１６４は、当該通信データにおける送信先アドレス（すなわち仮想ＩＰアドレス／仮想ＭＡＣアドレス）が監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスであるか否かを判断する（ステップＳ１０８）。
【００４７】
当該通信データにおける送信先アドレスが監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスではない場合（Ｓ１０８：Ｎｏ）、通信データ検査機能部１６４は、ステップＳ１１０の処理を行う。ここで、コントローラ１６０の電源投入直後などでは、監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスは設定されていない。これらが未設定の場合には、通信データ検査機能部１６４は、ステップＳ１０８の処理に後続してステップＳ１１０の処理を行うこととなる。
【００４８】
ステップＳ１１０において、通信データ検査機能部１６４は、当該通信データの通信内容が適切な内容であるか否かを判断する。本実施形態において、通信データの通信内容とは、通信データにおけるヘッダなどの管理情報を除いたデータ領域（すなわちペイロード）に格納されているデータ内容のことである。通信データ検査機能部１６４は、具体的には、当該通信データにおけるペイロードのデータパターンが、連携先情報１７２に登録されている複数のデータパターンのうちのいずれかと一致するか否かを判断する。より好ましくは、通信データ検査機能部１６４は、当該通信データの送信元アドレスと、当該通信データにおけるペイロードのデータパターンとの組み合わせが、連携先情報１７２に登録されている連携先装置を表す通信アドレスと、その連携先装置のデータパターンの組み合わせのうちのいずれかと一致するか否かを判断する。すなわち、当該通信データは連携先装置が行う適切な内容の通信データであるか否か、というような検査が行われる。
【００４９】
当該通信データの通信内容が適切な内容である場合（Ｓ１１０：Ｙｅｓ）、コントローラ１６０のＣＰＵは、通信データ検査機能部１６４としての動作を終了し、当該通信データに基づく処理を実行する（Ｓ１０７）。例えば、当該通信データの送信元アドレスがオペレータステーション１４０の実ＩＰアドレスであり、当該通信データが「メモリアドレス「％ＭＤ１．２０００」の取得指示」を要求するものである場合、この組み合わせは、連携先情報１７２に登録されている組み合わせであるため（図５参照）、ステップＳ１０７の処理へ進む、といった具合である。ステップＳ１０７の後、コントローラ１６０のＣＰＵは、ステップＳ１０３に戻り、自装置宛ての通信データを受信するまで待機する。
【００５０】
当該通信データの通信内容が不適切な内容である場合（Ｓ１１０：Ｎｏ）、コントローラ１６０のＣＰＵは、通信データ検査機能部１６４としての動作を終了し、仮想アドレス処理機能部１６３としての動作を開始してステップＳ１１１以降の処理を行う。例えば、当該通信データにおけるペイロードのデータ内容が、連携先情報１７２に登録されたデータパターン以外の内容であった場合、当該通信データが不正な動作変更指示などである虞があり、ステップＳ１１１以降の処理へ進む、といった具合である。
【００５１】
ステップＳ１１１において、仮想アドレス処理機能部１６３は、当該通信データにおける送信先アドレスとして格納されている仮想ＩＰアドレス／仮想ＭＡＣアドレスを監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスに決定し、その情報を記憶装置に格納する。ステップＳ１１１に後続して、仮想アドレス処理機能部１６３は、新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスを作成する（ステップＳ１１２）。この新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスは、以後の通信においてコントローラ１６０の正規な通信アドレスとして用いられる。次に、仮想アドレス処理機能部１６３は、ステップＳ１１２において作成した新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスを、連携先情報１７２によって連携先と認識している装置（本実施形態では、エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）に対して通知する（ステップＳ１１３）。
【００５２】
ステップＳ１１３の後、仮想アドレス処理機能部１６３は、自装置の実ＩＰアドレス／実ＭＡＣアドレス宛ての通信データ、ステップＳ１１１において監視対象に決定した仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データに加え、ステップＳ１１２において作成した新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレス宛ての通信データを通信機能部１６１が受信するように通信機能部１６１の設定変更を行う。このようにして、コントローラ１６０は、自装置の通信アドレスの変更を行う。その後、コントローラ１６０のＣＰＵは、仮想アドレス処理機能部１６３としての動作を終了し、当該通信データに基づく処理を実行する（ステップＳ１０７）。ステップＳ１０７の後、コントローラ１６０のＣＰＵは、ステップＳ１０３に戻り、自装置宛ての通信データを受信するまで待機する。
【００５３】
ステップＳ１０８において、当該通信データにおける送信先アドレスが監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスであった場合（Ｓ１０８：Ｙｅｓ）、通信データ検査機能部１６４は、コントローラ１６０の監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレス宛てにアクセス（すなわち不正な通信）があった旨の警告を制御システム５００Ｓ内の装置に通知する（ステップＳ１０９）。具体的には、ステップＳ１０５と同様の通知を行えば良い。ここで、新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスの通知（Ｓ１１３）後に別の通信データを受信した際（Ｓ１０３）、正規な連携先装置は、新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレス宛に通信するはずである。それにもかかわらず、先の不正な通信に用いられた監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスと同じ通信アドレス宛てに通信を試みているのであるから、この通信は不正な通信であると疑われ、不正な通信である旨の警告を行うのである。
【００５４】
ステップＳ１０９に後続して、通信データ検査機能部１６４は、受信した通信データの送信元にコントローラ１６０の通信先情報、すなわち、新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスを通知する（ステップＳ１０６）。これは、通信不備などにより、ステップＳ１１３において送信した新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスが連携先装置において登録されないことがあり得るからである。このように、通信データ検査機能部１６４は、通信先情報を再通知することで、連携先装置に次回から正規な通信をさせる。
【００５５】
通信先情報の再通知（Ｓ１０６）の後、コントローラ１６０のＣＰＵは、通信データ検査機能部１６４としての動作を終了し、当該通信データに基づく処理を実行する（ステップＳ１０７）。その後、コントローラ１６０のＣＰＵは、ステップＳ１０３に戻り、自装置宛ての通信データを受信するまで待機する。
以上が、コントローラ１６０における本実施形態に特有の動作である。
【００５６】
図７は、連携先装置（本実施形態では、エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）の動作を示すフローチャートである。
【００５７】
各連携先装置は、電源が投入されて起動すると、通信が必要となるまで待機する（ステップＳ２０１）。通信が必要となるまでとは、例えば、コントローラ１６０に対する送受信が必要となるまでである。具体的には、データベースステーション１２０のＣＰＵは、電源投入後に一定周期でデータ収集機能部１２２として動作し、コントローラ１６０に対して計測データの送信指示を送信する。また、オペレータステーション１４０のＣＰＵやエンジニアリングステーション１００のＣＰＵは、例えば、操作指示の発生に従って通信データをコントローラ１６０に送信する。
【００５８】
連携先装置のＣＰＵは、送信処理が必要になると（ステップＳ２０２：Ｙｅｓ）、通信先管理機能部（例えばデータベースステーション１２０であれば通信先管理機能部１４３）として動作を開始し、通信先管理テーブルに基づいて通信データの送信を行う（ステップＳ２０３）。
【００５９】
図８は、動作定義１５１を元にオペレータステーション１４０のメモリ上に展開され、コントローラ１６０からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。図８に示すように、オペレータステーション１４０の通信先管理テーブルには、動作定義１５１に定義されたコントローラ１６０の実ＩＰアドレスおよび実ＭＡＣアドレスに加え、コントローラ１６０から通知されるコントローラ１６０の仮想ＩＰアドレスおよび仮想ＭＡＣアドレスが登録される。図９は、動作定義１３１を元にデータベースステーション１２０のメモリ上に展開され、コントローラ１６０からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。図９に示すように、データベースステーション１２０の通信先管理テーブルもオペレータステーション１４０の通信先管理テーブルと同様である。
【００６０】
連携先装置の通信先管理機能部は、通信データをコントローラ１６０に送信する際、通信先管理テーブルに仮想ＩＰアドレスおよび仮想ＭＡＣアドレスが登録されている場合、その仮想ＩＰアドレスおよび仮想ＭＡＣアドレス宛てに送信する。一方、連携先装置の電源投入直後では、連携先装置にコントローラ１６０の仮想ＩＰアドレスおよび仮想ＭＡＣアドレスが通知されておらず、それらが通信先管理テーブルに登録されていないことがある。この場合には、連携先装置の通信先管理機能部は、コントローラ１６０の実ＩＰアドレスおよび実ＭＡＣアドレス宛てに送信する。通信データの送信（Ｓ２０３）後、連携先装置は、ステップＳ２０１に戻り、通信が必要となるまで待機する。
【００６１】
連携先装置のＣＰＵは、自装置宛の通信データを受信すると（ステップＳ２０２：Ｎｏ）、通信先管理機能部として動作を開始し、受信した通信データが新たな通信アドレスの通知（換言すると通信先情報の更新の通知）であるか否かを判断する（ステップＳ２０４）。受信した通信データが通信先情報の更新の通知ではない場合（Ｓ２０４：Ｎｏ）、連携先装置のＣＰＵは、受信した通信データに基づいた処理を行う（ステップＳ２０５）。例えば、データベースステーション１２０のＣＰＵは、データ収集機能部１２２としてコントローラ１６０から計測データや制御結果の応答などを受け取る。また、オペレータステーション１４０のＣＰＵは、コントローラ１６０から不正な通信である旨の警告を示す通信データを受信することもある。この場合、オペレータステーション１４０のＣＰＵは、表示機能・操作機能部１４２として当該警告を表示する。
【００６２】
受信した通信データが通信先情報の更新の通知である場合（Ｓ２０４：Ｙｅｓ）、連携先装置の通信先管理機能部は、当該通信データに格納されている新たな通信アドレス（仮想ＩＰアドレスおよび仮想ＭＡＣアドレス）を通信先管理テーブルに登録する。通信先管理テーブルにコントローラ１６０の仮想ＩＰアドレスおよび仮想ＭＡＣアドレスが既に登録されている場合には、通信先管理機能部は、その仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを通知された新たな仮想ＩＰアドレスおよび新たな仮想ＭＡＣアドレスに変更する。その後、連携先装置は、ステップＳ２０１に戻り、通信が必要となるまで待機する。
【００６３】
このように、連携先装置の通信先管理機能部は、コントローラ１６０から新たな通信アドレス（仮想ＩＰアドレスおよび仮想ＭＡＣアドレス）が通知される毎に、コントローラ１６０の通信アドレスを新たな通信アドレスに更新する。
以上が、連携先装置における本実施形態に特有の動作である。
【００６４】
以上のように、本実施形態のコントローラ１６０は、仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを作成して制御システム５００Ｓ内の連携先装置へ通知することで自装置の通信アドレスを変更する。コントローラ１６０は、変更前の通信アドレス宛ての通信データと変更後の通信アドレス宛ての通信データを受信することができる。コントローラ１６０は、受信した通信データの送信先アドレスが変更前の通信アドレスであるか否かを判断する。コントローラ１６０は、変更前の通信アドレス（具体的には、実ＩＰアドレス、実ＭＡＣアドレス、変更前の仮想ＩＰアドレスおよび変更前の仮想ＭＡＣアドレス）宛ての通信を不正な通信であると判断し、不正な通信があった旨の警告を連携先装置に通知して表示させる。本実施形態では、制御システム５００Ｓの構成要素であるコントローラ１６０自体が不正な通信を検知するため、制御システム５００Ｓ内における不正な通信を検知することができ、そのような不正な通信による脅威からコントローラ１６０を守ることができる。
【００６５】
また、本実施形態では、コントローラ１６０の通信アドレスの変更によって不正な通信を検知するため、ネットワーク構成の変更やネットワークの外部と通信を行う仕組みの用意などを行う必要がなく、標準的な制御システムの構成のみで実現することができ、本発明の技術を導入する際のコストを抑えることができる。
【００６６】
また、コントローラ１６０は、受信した通信データの通信内容が適切な内容ではない場合、当該通信データの送信先アドレスに用いられた自装置の仮想ＩＰアドレス／仮想ＭＡＣアドレスを監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスに決定し、新たな仮想ＩＰアドレス／仮想ＭＡＣアドレスを作成して自装置の通信アドレスを変更する。このように、コントローラ１６０は、不正な通信が行われた場合に通信アドレスの変更を繰り返す。このため、コントローラ１６０を含む制御システム５００Ｓでは、通信アドレスを１回だけ変更する態様（例えば仮想ＩＰアドレス／仮想ＭＡＣアドレスを１回だけ作成する態様など）に比べ、不正な通信があったことを認識しつつ、その不正な通信の発生頻度を低減することができる。
【００６７】
＜第１実施形態の変形例＞
以上に説明した第１実施形態の変形例としては、例えば以下のものがある。
【００６８】
（１）不正な通信である旨の警告（ステップＳ１０５およびステップＳ１０９）は、コントローラ１６０から上位のシステム（連携先装置）に送信されるのが望ましい。しかし、制御システム５００Ｓ内の通信は並列に行われており、通信には遅延も存在することから、通信先情報が送信されて連携先装置に登録されるまでの間に、連携先装置が変更前の通信アドレス宛てへ正規な通信データの送信を行うこともあり得る。この場合、連携先装置は、通信先情報の通知を受け取った直後に不正な通信があった旨の警告の通知を受け取ることがある。このため、連携先装置（例えばオペレータステーション１４０）では、不正な通信があった旨の警告を受信毎にすべて表示する態様に比べ、通信先情報の通知を受け取った時刻から一定時間を経過するまでに受け取った警告については重要度を下げて表示することが好ましい。この態様によれば、制御システム５００Ｓの管理者は、悪意のある攻撃者による不正な通信と、不正な通信と誤判断された正規な通信とを区別して認識することができる。
【００６９】
（２）本実施形態のコントローラ１６０は、実ＩＰアドレス／実ＭＡＣアドレス宛ての通信があった場合（Ｓ１０４：Ｙｅｓ）、送信元に仮想ＩＰアドレス／仮想ＭＡＣアドレスを再通知していた（Ｓ１０６）。それにもかかわらず、実ＩＰアドレス／実ＭＡＣアドレス宛てに同じ送信元から繰り返し送信されることがあり得る。このようなアクセスは、連携先装置とは異なる装置からの不正な通信である可能性が高い。そこで、コントローラ１６０の通信データ検査機能部１６４は、受信した通信データにおける送信先アドレスが実ＩＰアドレス／実ＭＡＣアドレスであった場合（Ｓ１０４：Ｎｏ）、当該通信データにおける送信元アドレスをレジスタに格納し、以降、当該送信元アドレスからのアクセス数をカウントアップする。そして、通信データ検査機能部１６４は、上記レジスタへの格納から所定時間が経過するまでの上記送信元アドレスからのアクセス数が閾値以上であるか否かを判断する。通信データ検査機能部１６４は、アクセス数が閾値以上である場合、アクセス数が閾値未満である場合に比べ、不正な通信があった旨の警告の重要度を上げて連携先装置へ通知する。このような態様によれば、悪意のある攻撃者による不正な通信を、不正な通信と誤判断された正規な通信に比べ、より際立たせることができ、制御システム５００Ｓの管理者は、より正確に不正な通信を認識することができる。また、通信データ検査機能部１６４は、受信した通信データにおける送信先アドレスが監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスであった場合（Ｓ１０８：Ｙｅｓ）も同様に、同じ送信元アドレスからのアクセス数をカウントアップして、警告の重要度を変えるようにしても良い。この態様においても同様の効果が得られる。
【００７０】
（３）本実施形態のコントローラ１６０は、電源の投入を契機として、仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを作成していたため、仮想ＩＰアドレスおよび仮想ＭＡＣアドレスは、コントローラ１６０のシャットダウンに応じて削除される。しかし、コントローラ１６０は、一度作成した仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを不揮発性記憶装置に格納することで、コントローラ１６０がシャットダウンされても仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを保持するようにしても良い。これは、ステップＳ１１１で決定した監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスやステップＳ１１２で作成した新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスについても同様である。また、コントローラ１６０と同様に、連携先装置の通信先管理テーブルを不揮発性記憶装置に格納することで、連携先装置がシャットダウンされても通信先管理テーブルに登録されたコントローラ１６０の仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを保持するようにしても良い。
【００７１】
（４）本実施形態では、仮想ＩＰアドレス／仮想ＭＡＣアドレスを変更してゆくに従って、監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスの数が増加してゆくことになる。このため、ステップＳ１０１およびステップＳ１１２で生成する仮想ＩＰアドレス／仮想ＭＡＣアドレスの個数は、コントローラ１６０が十分に処理可能な個数を上限とするのが好ましい。また、コントローラ１６０は、監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスの個数が増大した場合など、監視対象の仮想ＩＰアドレス／監視対象の仮想ＭＡＣアドレスを適宜に破棄しても良い。
【００７２】
（５）コントローラ１６０は、ステップＳ１０１およびステップＳ１１２において、仮想ＩＰアドレス／仮想ＭＡＣアドレスを連携先装置の数だけ作成しても良い。そして、コントローラ１６０は、作成した複数の仮想ＩＰアドレス／仮想ＭＡＣアドレスの各々と各連携先装置とを対応付けるようにしても良い。
【００７３】
（６）本実施形態では、コントローラ１６０の通信アドレスとして実ＩＰアドレス、実ＭＡＣアドレス、仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを用いていた。しかし、通信アドレスは、これらに限らず、他の通信プロトコルに従った通信アドレスであっても良い。新たな通信アドレス（仮想的な通信アドレス）の作成が可能であり、通信アドレスの変更を繰り返すことが可能な通信プロトコルに従った通信アドレスであれば、実現可能である。
【００７４】
（７）本実施形態の通信データ検査機能部１６４は、通信データにおける通信内容が適切であるか否かの判断を、いわゆるホワイトリスト型の検査により行っていた。しかし、通信データ検査機能部１６４は、いわゆるブラックリスト型の検査を行っても良い。すなわち、通信データ検査機能部１６４は、受信した通信データにおけるペイロードのデータパターンと連携先情報１７２に登録されたデータパターンとの比較により通信データにおける通信内容が適切であるか否かを判断するようにすれば良い。また、より好適な態様として、通信データ検査機能部１６４は、受信した通信データにおける送信元アドレスとペイロードのデータパターンとの組み合わせと、連携先情報１７２に登録された通信アドレスとデータパターンとの組み合わせとの比較により通信データにおける通信内容が適切であるか否かを判断するようにすれば良い。
【００７５】
（８）通信データ検査機能部１６４がデータリンク層において不正な通信を検知した場合、仮想アドレス処理機能部１６３は、新たな仮想ＭＡＣアドレスのみを作成しても良いし、新たな仮想ＭＡＣアドレスと新たな仮想ＩＰアドレスの両方を作成しても良い。また、同様に、通信データ検査機能部１６４がネットワーク層において不正な通信を検知した場合、仮想アドレス処理機能部１６３は、新たな仮想ＩＰアドレスのみを作成しても良いし、新たなＩＰアドレスと新たな仮想ＭＡＣアドレスの両方を作成しても良い。
【００７６】
（９）制御システム５００Ｓの各装置が記憶する動作定義１１１、コントローラ設定・プログラム１１２、動作定義１３１、動作定義１５１、コントローラ設定・プログラム１７１は、各装置が必要とするデータがすべて含まれていればよく、すべて同一ファイルとすることも可能である。
【００７７】
（１０）本実施形態において通信データ検査機能部１６４は、受信した通信データの通信内容が適切な内容であるか否かを判断していた（Ｓ１１０）。このステップの処理は、制御システム５００Ｓの規模や用途によって複雑化するおそれがある。このため、コントローラ１６０の処理性能等の理由により、制御システム５００Ｓの規模や用途に合わせて、ステップＳ１１０の処理内容の簡略化やステップＳ１１０の省略化を行っても良い。例えば、通信データ検査機能部１６４は、受信した通信データにおけるペイロードに特定のデータが格納されていた場合に、当該通信データの通信内容は適切な内容であると判断する、というように簡略化しても良い。また、ステップＳ１１０を省略した例では、通信データ検査機能部１６４は、受信した通信データにおける送信先アドレスが仮想ＩＰアドレス／仮想ＭＡＣアドレスであった場合（Ｓ１０４：Ｙｅｓ）、当該受信した通信データに基づく処理を実行すれば良い（Ｓ１０７）。
【００７８】
＜第２実施形態＞
第１実施形態の制御システム５００Ｓのコントローラ１６０は、不正な通信を検出するために通信データを解析するが、このような通信データの解析のために自装置のＣＰＵやネットワークチップなどのリソースを使用する。制御システム５００Ｓでは、コントローラ１６０がＤｏＳ攻撃やＤＤｏＳ攻撃を受けると大量の通信データについて解析を行うこととなり、コントローラ１６０のリソースを大量に消費し、制御対象機器の制御や計測機器による計測といったコントローラ１６０本来の動作が阻害される虞がある。この発明の第２実施形態は、このような点を考慮して改良した実施形態である。
【００７９】
図１０は、この発明の第２実施形態によるコントローラ１６０Ａを含む制御システム５００ＳＡの構成を示すブロック図である。本実施形態の制御システム５００ＳＡは、コントローラ１６０に代えてコントローラ１６０Ａを有する点とダミーコントローラ２００をさらに有する点において第１実施形態の制御システム５００Ｓと異なる。コントローラ１６０Ａ、ダミーコントローラ２００およびコントローラ１６０Ａの連携先装置（エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）は、制御ネットワーク１８０を介して通信を行う。
【００８０】
制御システム５００ＳＡでは、制御ネットワーク１８０の回線速度や制御ネットワーク１８０に接続されるコントローラ１６０Ａの台数などに応じて、一台のダミーコントローラ２００が設けられる場合もあり、また、複数台のダミーコントローラ２００からなる冗長構成が採られる場合もある。また、ダミーコントローラ２００は、専用装置であっても良いし、ＰＣ上で動作するアプリケーションにより実現されるソフトウェアであっても良い。
【００８１】
コントローラ１６０Ａは、仮想アドレス処理機能部１６３に代えて仮想アドレス処理機能部１６３Ａを有する点および通信データ検査機能部１６４に代えて通信データ検査機能部１６４Ａを有する点においてコントローラ１６０と異なる。仮想アドレス処理機能部１６３Ａおよび通信データ検査機能部１６４Ａは、コントローラ１６０ＡのＣＰＵが記憶装置１７０に記憶されたプログラムを実行することにより実現される機能である。通信データ検査機能部１６４Ａは、受信した通信データによる通信が適切ではない場合、当該通信データにおける送信先アドレスを引き継ぎ対象の通信アドレスに決定する点において通信データ検査機能部１６４と異なる。引き継ぎ対象の通信アドレスは、ダミーコントローラ２００の受信対象となる通信アドレスとしてダミーコントローラ２００に引き継がせる通信アドレスである。具体的には、引き継ぎ対象の通信アドレスは、先に生成されてコントローラ１６０Ａの受信対象となっている仮想ＩＰアドレスおよび仮想ＭＡＣアドレスであって、不正な通信が疑われる通信に用いられた仮想ＩＰアドレスおよび仮想ＭＡＣアドレスである。仮想アドレス処理機能部１６３Ａは、通信データ検査機能部１６４Ａにより決定された引き継ぎ対象の通信アドレスをダミーコントローラ２００に送信して引き継がせる点において仮想アドレス処理機能部１６３と異なる。仮想アドレス処理機能部１６３Ａは、引き継ぎ対象の通信アドレス（仮想ＩＰアドレス／仮想ＭＡＣアドレス）の引き継ぎに合わせて新たな通信アドレス（新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレス）を作成する。仮想アドレス処理機能部１６３Ａは、通信機能部１６１が新たな通信アドレス宛ての通信データを受信し、引き継ぎ対象の通信アドレス宛ての通信データを受信しないように通信機能部１６１の設定変更を行う。仮想アドレス処理機能部１６３Ａおよび通信データ検査機能部１６４Ａについては、動作の説明において詳述する。
【００８２】
ダミーコントローラ２００は、通信機能部２０１と、応答・中継機能部２０２と、仮想アドレス処理機能部２０３と、通信データ検査機能部２０４とを有する。また、ダミーコントローラ２００は、応答・中継設定情報２１１を格納する記憶装置２１０を有する。通信機能部２０１、応答・中継機能部２０２、仮想アドレス処理機能部２０３および通信データ検査機能部２０４は、ダミーコントローラ２００を構成するＣＰＵ（図示略）が記憶装置２１０に記憶されたプログラム（図示略）を実行することにより実現される機能である。これらの機能を実現するプログラムは、エンジニアリングステーション１００により生成され、通信機能部２０１等によって取得されたコントローラ設定・プログラム１１２に含まれていても良いし、それとは別個のプログラムであっても良い。
【００８３】
通信機能部２０１は、制御システム５００ＳＡ内の他の装置と通信する手段である。通信データ検査機能部２０４は、受信した通信データが引き継ぎ要求であるか否かを判断する手段である。仮想アドレス処理機能部２０３は、引き継ぎ対象の通信アドレスを自装置（ダミーコントローラ２００）の受信対象の通信アドレスとして引き継ぐ処理を行う手段である。
【００８４】
図１１は、ダミーコントローラ２００が引き継ぎ元（コントローラ１６０Ａ）から引き継ぎ対象の通信アドレスを引き継いだ際に管理する応答・中継設定情報２１１のうちの引き継ぎ元情報の例を示す図である。引き継ぎ元情報には、引き継ぎ対象の通信アドレス（図１１の例では、仮想ＩＰアドレスおよび仮想ＭＡＣアドレス）と、引き継ぎ元の最新の通信アドレス（図１１の例では、引き継ぎ元仮想ＩＰアドレスおよび引き継ぎ元仮想ＭＡＣアドレス）と、引き継ぎ元の本来の通信アドレス（図１１の例では、引き継ぎ元実ＩＰアドレスおよび引き継ぎ元実ＭＡＣアドレス）とが関連付けられて登録される。なお、図１１の例では、２つの引き継ぎ元機器についての引き継ぎ元情報が示されている。仮想アドレス処理機能部２０３は、引き継ぎ元情報を参照して、通信機能部２０１が引き継ぎ対象の通信アドレス宛ての通信データを受信するように通信機能部２０１の設定変更を行う。
【００８５】
図１２は、ダミーコントローラ２００が引き継ぎ元（コントローラ１６０Ａ）から引き継ぎ対象の通信アドレスを引き継いだ際に管理する応答・中継設定情報２１１のうちの中継情報の例を示す図である。中継情報には、引き継ぎ元と、その引き継ぎ元と連携先装置とが行う通信データパターン（図１２の例では、中継データパターンと表記されている）とが関連付けられて登録される。中継情報は、引き継ぎ元の連携先情報１７２における通信データパターンに関する部分の複製であり、通信機能部２０１等を介してダミーコントローラ２００に記憶される。
【００８６】
応答・中継機能部２０２は、引き継ぎ対象の通信アドレス宛ての通信データを受信した場合に当該通信データによる通信が適切であるか否かを判断し、その通信が適切である場合、当該通信データを引き継ぎ元（コントローラ１６０Ａ）へ転送する中継手段である。応答・中継機能部２０２は、応答・中継設定情報２１１の中継情報を参照して通信の適否を判断し、応答・中継設定情報２１１の引き継ぎ元情報を参照して通信データを転送する。
【００８７】
次に本実施形態の動作について説明する。
図１３は、コントローラ１６０Ａの動作を示すフローチャートである。図１３に示す動作は、ステップＳ１０８に代えてステップＳ１０８ａが行われ、ステップＳ１１１に代えてステップＳ１１１ａが行われ、ステップＳ１１３に代えてステップＳ１１３ａが行われる点およびステップＳ１０９が行われない点において図６に示す動作と異なる。図１３を参照して、第１実施形態と異なる点を中心にコントローラ１６０Ａの動作を説明する。
【００８８】
本実施形態のステップＳ１０２では、仮想アドレス処理機能部１６３Ａは、ステップＳ１０１において作成した仮想ＩＰアドレスおよび仮想ＭＡＣアドレスを連携先装置（エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）とダミーコントローラ２００に通知する。ステップＳ１０４において、受信した通信データにおける送信先アドレスがコントローラ１６０Ａの仮想ＩＰアドレス／仮想ＭＡＣアドレスである場合（ステップＳ１０４：Ｙｅｓ）、通信データ検査機能部１６４Ａとして機能しているコントローラ１６０ＡのＣＰＵは、ステップＳ１０８ａ以降の処理を行う。
【００８９】
ステップＳ１０８ａにおいて、通信データ検査機能部１６４Ａは、受信した通信データがダミーコントローラ２００を経由して到達したものであるか否かを判断する。具体的には、通信データ検査機能部１６４Ａは、当該通信データにおける送信元アドレスが、ダミーコントローラ２００に引き継いだ引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスであるか否かを判断する。ここで、コントローラ１６０Ａの記憶装置１７０には、ダミーコントローラ２００へ引き継いだ引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスが記憶されている。通信データ検査機能部１６４Ａは、当該通信データにおける送信元アドレスが記憶装置１７０に記憶された引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスと一致するか否かによりステップＳ１０８ａの判断を行う。記憶装置１７０に複数の引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスが記憶されている場合には、通信データ検査機能部１６４Ａは、当該送信元アドレスが当該複数の引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスのうちのいずれかと一致するか否かを判断すれば良い。
【００９０】
受信した通信データがダミーコントローラ２００を経由して到達したものである場合（具体的には、送信元アドレスが引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスと一致する場合）（ステップＳ１０８ａ：Ｙｅｓ）、コントローラ１６０ＡのＣＰＵは、通信データ検査機能部１６４Ａとしての動作を終了し、当該通信データに基づく処理を実行する（ステップＳ１０７）。ダミーコントローラ２００を経由して送られた通信データは、後に詳述するが、その通信データによる通信が適切であることがダミーコントローラ２００において既に判断済だからである。
【００９１】
受信した通信データがダミーコントローラ２００を経由して到達したものではない場合（具体的には、送信元アドレスが引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスと一致しない場合）（ステップＳ１０８ａ：Ｎｏ）、コントローラ１６０ＡのＣＰＵは、引き続き通信データ検査機能部１６４Ａとして動作し、当該通信データによる通信が適切であるか否かを判断する処理（ステップＳ１１０）に進む。ステップＳ１１０以降の処理を行うのは、受信した通信データがダミーコントローラ２００を経由して到達した通信データではない場合には、最新の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データであったとしても、通信が適切であるか否かの判断が為されていない通信データであるため、その通信データによる通信が不正な通信である可能性があるからである。
【００９２】
また、引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスが決定されていない初期状態では、引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスが記憶装置１７０に記憶されていない。このような初期状態におけるステップＳ１０８ａでは、通信データ検査機能部１６４Ａは、受信した通信データはダミーコントローラ２００を経由して到達したものではないと判断すれば良い（ステップＳ１０８ａ：Ｎｏ）。
【００９３】
本実施形態のステップＳ１１０の処理では、通信データ検査機能部１６４Ａは、第１実施形態と同様にして通信データの通信内容が適切であるか否かを判断するのに加え、受信した通信データによる通信の通信頻度が適切であるか否かを判断するのが好ましい。例えば、通信データ検査機能部１６４Ａは、受信した通信データにより実行を要求された処理の内容を示すデータや送信元アドレスをレジスタに格納し、以降、単位時間当たりの当該処理の要求回数や当該送信元アドレスからのアクセス数をカウントアップする。そして、通信データ検査機能部１６４Ａは、単位時間当たりの当該処理の要求回数や当該送信元アドレスからのアクセス数が閾値以上であるか否かを判断する。通信データ検査機能部１６４Ａは、閾値以上である場合、通信頻度が適切ではなく、上記通信データによる通信は適切ではないと判断する。
【００９４】
ステップＳ１１０において、受信した通信データによる通信が不適切である場合（ステップＳ１１０：Ｎｏ）、通信データ検査機能部１６４Ａとして動作しているコントローラ１６０ＡのＣＰＵは、仮想アドレス処理機能部１６３Ａとしての動作を開始してステップＳ１１１ａ以降の処理を行う。
【００９５】
ステップＳ１１１ａにおいて、仮想アドレス処理機能部１６３Ａは、受信した通信データにおける送信先アドレス（仮想ＩＰアドレス／仮想ＭＡＣアドレス）を引き継ぎ対象の通信アドレス（仮想ＩＰアドレス／仮想ＭＡＣアドレス）に決定し、その情報を記憶装置１７０に記憶する。ステップＳ１１１ａに後続して、仮想アドレス処理機能部１６３Ａは、新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスを作成する（ステップＳ１１２）。
【００９６】
次に、仮想アドレス処理機能部１６３Ａは、ステップＳ１１２において作成した新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレスをダミーコントローラ２００および連携先装置（エンジニアリングステーション１００、データベースステーション１２０およびオペレータステーション１４０）に通知するとともに、ステップＳ１１１ａで決定した引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００に送り、当該引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００に引き継がせる（ステップＳ１１３ａ）。具体的には、仮想アドレス処理機能部１６３Ａは、ダミーコントローラ２００の実ＩＰアドレス／実ＭＡＣアドレスを送信先アドレスとし、コントローラ１６０Ａの新たな仮想ＩＰアドレス／仮想ＭＡＣアドレスと引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスとをペイロードに格納した引き継ぎ要求を示す通信フレームをダミーコントローラ２００に送信する。この際、仮想アドレス処理機能部１６３Ａは、ダミーコントローラ２００がコントローラ１６０Ａに転送すべき通信データに関する情報（すなわち、コントローラ１６０Ａと連携先装置とが行う通信データパターン）もダミーコントローラ２００に送信する。仮想アドレス処理機能部１６３Ａは、引き継ぎ要求に対する引き継ぎの完了（すなわち、引き継ぎ対象の通信アドレスがダミーコントローラ２００において受信対象の通信アドレスとして登録されたこと）を表す応答をダミーコントローラ２００から受け取ると、通信機能部１６１が自装置の実ＩＰアドレス／実ＭＡＣアドレス宛ての通信データと新たな仮想ＩＰアドレス／新たな仮想ＭＡＣアドレス宛ての通信データとを受信し、引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データを受信しないように通信機能部１６１の設定変更を行う。この結果、以後、コントローラ１６０Ａは、不正な通信が疑われる通信に用いられてダミーコントローラ２００に引き継いだ仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データを受信しないようになる。その後、コントローラ１６０ＡのＣＰＵは、仮想アドレス処理機能部１６３Ａとしての動作を終了し、当該通信データに基づく処理（ステップＳ１０７）の実行後、ステップＳ１０３に戻る。
以上が、コントローラ１６０Ａの動作である。連携先装置の動作は、第１実施形態と同様である。次に、ダミーコントローラ２００の動作を説明する。
【００９７】
図１４は、ダミーコントローラ２００の動作を示すフローチャートである。ダミーコントローラ２００の電源が投入されると（またはダミーコントローラ２００が再起動されると）、ダミーコントローラ２００のＣＰＵは、自装置宛ての通信データを受信するまで待機する（ステップＳ４０１）。通信機能部２０１がダミーコントローラ２００宛の通信データを受信すると、ダミーコントローラ２００のＣＰＵは、通信データ検査機能部２０４として動作を開始し、ステップＳ４０２以降の処理を実行する。ダミーコントローラ２００においてもコントローラ１６０Ａと同様に、プロトコル階層毎に各処理を行う。
【００９８】
まず、通信データ検査機能部２０４は、受信した通信データにおける送信先アドレスが、コントローラ１６０Ａから引き継いだ仮想ＩＰアドレス／仮想ＭＡＣアドレスであるか否かを判断する（ステップＳ４０２）。ダミーコントローラ２００が通信データを受信するのは、その通信データの送信先アドレスがダミーコントローラ２００の実ＩＰアドレス／実ＭＡＣアドレスである場合、または、引き継ぎ元であるコントローラ１６０Ａから引き継いだ仮想ＩＰアドレス／仮想ＭＡＣアドレスである場合である。前者の場合、ステップＳ４０２の判断結果は「Ｎｏ」となり、後者の場合、ステップＳ４０２の判断結果は「Ｙｅｓ」となる。コントローラ１６０Ａから仮想ＩＰアドレス／仮想ＭＡＣアドレスを引き継いでいない状態では、ダミーコントローラ２００は、実ＩＰアドレス／実ＭＡＣアドレス宛ての通信データを受信することとなり、ステップＳ４０２の判断結果は「Ｎｏ」となる。実ＩＰアドレス／実ＭＡＣアドレス宛ての通信データの一例としては、コントローラ１６０Ａから送られる引き継ぎ要求を示す通信フレームが挙げられる。
【００９９】
ステップＳ４０２の判断結果が「Ｎｏ」の場合、通信データ検査機能部２０４は、当該通信データが引き継ぎ要求を示す通信フレームであるか否かを判断する（ステップＳ４０３）。当該通信データが引き継ぎ要求を示す通信フレームではない場合（ステップＳ４０３：Ｎｏ）、通信データ検査機能部２０４は、当該通信データを破棄する（ステップＳ４０６）。これにより、ダミーコントローラ２００の実ＩＰアドレス／実ＭＡＣアドレス宛てに不正な通信がなされたとしても、その不正な通信による処理は実行されない。
【０１００】
当該通信データが引き継ぎ要求を示す通信フレームである場合（ステップＳ４０３：Ｙｅｓ）、ダミーコントローラ２００のＣＰＵは、仮想アドレス処理機能部２０３として動作を開始してステップＳ４０４以降の処理を実行する。
【０１０１】
ステップＳ４０４において、仮想アドレス処理機能部２０３は、応答・中継設定情報２１１の引き継ぎ元情報を作成して記憶装置２１０に記憶する。具体的には、仮想アドレス処理機能部２０３は、引き継ぎ要求を示す通信フレームに格納された引き継ぎ元であるコントローラ１６０Ａの最新の仮想ＩＰアドレス／仮想ＭＡＣアドレスと、当該通信フレームに格納された引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスとを関連付けて引き継ぎ元情報に登録する。その後、仮想アドレス処理機能部２０３は、ダミーコントローラ２００の実ＩＰアドレス／実ＭＡＣアドレス宛ての通信データと、引き継ぎ元情報に登録された引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データとを通信機能部２０１が受信するように通信機能部２０１の設定変更を行う。
【０１０２】
ステップＳ４０４に後続するステップＳ４０５では、仮想アドレス処理機能部２０３は、応答・中継設定情報２１１の中継情報を作成して記憶装置２１０に記憶する。具体的には、仮想アドレス処理機能部２０３は、コントローラ１６０Ａから送信されたコントローラ１６０Ａに転送すべき通信データに関する情報を中継情報に登録する。この結果、ダミーコントローラ２００は、コントローラ１６０Ａが受信すべき通信データについての通信内容の適否の判断をコントローラ１６０Ａに代わって行うことができるようになる。その後、ダミーコントローラ２００のＣＰＵは、仮想アドレス処理機能部２０３としての動作を終了し、ステップＳ４０１の処理に戻る。
【０１０３】
ステップＳ４０２において、受信した通信データにおける送信先アドレスがコントローラ１６０Ａから引き継いだ仮想ＩＰアドレス／仮想ＭＡＣアドレスである場合（ステップＳ４０２：Ｙｅｓ）、ダミーコントローラ２００は、応答・中継機能部２０２として動作を開始し、ステップＳ４０７以降の処理を実行する。
【０１０４】
ステップＳ４０７において、応答・中継機能部２０２は、受信した通信データが中継すべき通信データであるか否かを判断する。ステップＳ４０７では、応答・中継機能部２０２は、コントローラ１６０ＡにおけるステップＳ１１０と同様の処理を行えば良い。具体的には、応答・中継機能部２０２は、受信した通信データの通信内容が適切な内容であるか否かを応答・中継設定情報２１１の中継情報を参照して判断したり、受信した通信データの送信元からの通信頻度が適切であるか否かを判断したりする。当該通信データの通信内容および通信頻度が適切である場合に、応答・中継機能部２０２は、当該通信データは中継すべき通信データであると判断する。
【０１０５】
受信した通信データが中継すべき通信データである場合（すなわち、当該通信データの通信内容および通信頻度が適切である場合）（ステップＳ４０７：Ｙｅｓ）、応答・中継機能部２０２は、当該通信データを引き継ぎ元であるコントローラ１６０Ａに転送する（ステップＳ４０８）。これにより、制御ネットワーク１８０において、コントローラ１６０Ａにおける最新ではない仮想ＩＰアドレス／仮想ＭＡＣアドレス宛てに送信された通信データのうち連携先装置から送信された正規な通信データが、ダミーコントローラ２００を経由してコントローラ１６０Ａへ送られる。また、応答・中継機能部２０２は、ステップＳ４０７において通信データをコントローラ１６０Ａに転送する際、転送する通信データの送信元アドレスをコントローラ１６０Ａから引き継いだ仮想ＩＰアドレス／仮想ＭＡＣアドレスにする。これにより、コントローラ１６０Ａは、受信した通信データがダミーコントローラ２００を経由して到達した通信データであることを知ることができる（ステップＳ１０８ａ参照）。ステップＳ４０８の後、ダミーコントローラ２００のＣＰＵは、応答・中継機能部２０２としての動作を終了し、ステップＳ４０１の処理に戻る。
【０１０６】
ステップＳ４０７において、受信した通信データが中継すべき通信データではない場合（すなわち、当該通信データの通信内容および通信頻度が不適切である場合）（ステップＳ４０７：Ｎｏ）、応答・中継機能部２０２は、当該通信データを破棄する（ステップＳ４０６）。この結果、コントローラ１６０Ａから引き継がれた仮想ＩＰアドレス／仮想ＭＡＣアドレス宛てに正規な通信データとは異なる通信データが送られたとしても、その通信データに基づいた処理は実行されない。ステップＳ４０６の後、ダミーコントローラ２００のＣＰＵは、応答・中継機能部２０２としての動作を終了し、ステップＳ４０１の処理に戻る。
以上がダミーコントローラ２００の動作である。
【０１０７】
本実施形態のコントローラ１６０Ａは、ステップＳ１０１において、自装置の受信対象となる新たな仮想ＩＰアドレス／仮想ＭＡＣアドレスを予め作成し、ステップＳ１０４において、受信した通信データにおける送信先アドレスが仮想ＩＰアドレス／仮想ＭＡＣアドレスではない場合、すなわち、実ＩＰアドレス／実ＭＡＣアドレスである場合、通信データによる通信は不正な通信であると判断する点においては、第１実施形態のコントローラ１６０と同様である。従って、コントローラ１６０Ａによれば、第１実施形態と同様に、制御システム５００ＳＡ内における不正な通信を検知することができる。
【０１０８】
また、本実施形態のコントローラ１６０Ａは、受信した通信データによる通信が適切ではない場合、通信データにおける送信先アドレス（仮想ＩＰアドレス／仮想ＭＡＣアドレス）をダミーコントローラ２００の受信対象となる仮想ＩＰアドレス／仮想ＭＡＣアドレスとしてダミーコントローラ２００に引き継がせる引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスに決定する。コントローラ１６０Ａは、コントローラ１６０Ａの受信対象となる新たな仮想ＩＰアドレス／仮想ＭＡＣアドレスを作成し、作成した新たな仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００および連携先装置に通知するとともに、引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００に送信して引き継がせる。これにより、制御システム５００ＳＡでは、ダミーコントローラ２００がコントローラ１６０Ａに代えて当該引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データを受信する。コントローラ１６０Ａは、引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００へ引き継いだ後には、当該引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信を受信しない。このため、制御システム５００ＳＡによれば、不正な通信を検知した以後、当該不正な通信と同じ通信アドレス宛ての再度の不正な通信による脅威からコントローラ１６０Ａを守ることができる。具体的には、制御システム５００ＳＡによれば、ＤｏＳ攻撃やＤＤｏＳ攻撃からコントローラ１６０Ａを保護することができ、ＤｏＳ攻撃やＤＤｏＳ攻撃によってコントローラ１６０Ａのリソースが無駄に消費される可能性を減らすことができる。
【０１０９】
また、コントローラ１６０Ａの通信データ検査機能部１６４Ａは、通信データの通信頻度が適切であるか否かをも判断するため、通信内容からは判断することができないような不正な通信を検知することができる。このため、制御システム５００ＳＡによれば、ＤｏＳ攻撃やＤＤｏＳ攻撃がＳＹＮフラッドのような通信内容には何ら問題のない攻撃であったとしても、その不正な通信を検知し、コントローラ１６０Ａのリソースが無駄に消費される可能性を減らすことができる。
【０１１０】
また、本実施形態の制御システム５００ＳＡは、ダミーコントローラ２００を有する。ダミーコントローラ２００は、コントローラ１６０Ａから引き継いだ引き継ぎ対象の仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての通信データを受信し、当該通信データによる通信が適切である場合、当該通信データを引き継ぎ元であるコントローラ１６０Ａへ転送する中継手段を有する。制御システム５００ＳＡによれば、連携先装置においてコントローラ１６０Ａの最新の通信アドレスの登録漏れがあり、連携先装置が最新ではない通信アドレス宛てに正規な通信データを送信したとしても、コントローラ１６０Ａは、ダミーコントローラ２００を経由してその通信データを受け取ることができる。
【０１１１】
また、本実施形態のコントローラ１６０Ａは、受信した通信データがダミーコントローラ２００を経由して到達したものであるか否かを判断し、ダミーコントローラ２００を経由して到達したものである場合には、当該通信データに基づく処理を実行する。これにより、コントローラ１６０Ａは、受信対象であった仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００に引き継いだ後においても、引き継ぎ前に受信対象であった仮想ＩＰアドレス／仮想ＭＡＣアドレス宛ての正規な通信データを正常に処理することができる。従って、制御システム５００ＳＡによれば、連携先装置から最新ではない通信アドレス宛てに重要な通信データが送信されたとしても、コントローラ１６０Ａは、その重要な通信データを正常に処理することができる。
【０１１２】
また、ダミーコントローラ２００は、コントローラ１６０Ａとは異なり、制御対象機器の制御および計測機器による計測を行わない。このため、ダミーコントローラ２００は、コントローラ１６０Ａよりも余裕のあるリソースを用いて通信データの解析（例えば応答・中継機能部２０２による処理）を行うことができる。従って、ダミーコントローラ２００がＤｏＳ攻撃やＤＤｏＳ攻撃を受けたとしても、ダミーコントローラ２００のリソースが枯渇する可能性は少なく、制御対象機器の制御等への影響もない。
【０１１３】
また、制御システム５００ＳＡでは、仮想ＩＰアドレス／仮想ＭＡＣアドレスをダミーコントローラ２００に引き継がせることで、通信データの解析をコントローラ１６０Ａとダミーコントローラ２００とに分散させる。このため、制御システム５００ＳＡによれば、第１実施形態のコントローラ１６０に比べ、コントローラ１６０Ａにおける通信データの解析に関する処理負荷を減らすことができる。
【０１１４】
＜第２実施形態の変形例＞
本実施形態においても、上記第１実施形態と同様な変形例の実施が可能である。
また、本実施形態では、特に以下の変形例が考えられる。
【０１１５】
（１）制御システム５００ＳＡでは、仮想ＩＰアドレス／仮想ＭＡＣアドレス宛てにＤｏＳ攻撃やＤＤｏＳ攻撃のような不正な通信が行われたことを検知することができる。しかし、コントローラ１６０Ａの実ＩＰアドレス／実ＭＡＣアドレス宛てやダミーコントローラ２００の実ＩＰアドレス／実ＭＡＣアドレス宛てにＤｏＳ攻撃やＤＤｏＳ攻撃を受けた場合には、その攻撃を検知できない虞もある。そこで、コントローラ１６０Ａおよびダミーコントローラ２００は、受信した通信データにおける送信先アドレスが実ＩＰアドレス／実ＭＡＣアドレスであった場合（ステップＳ１０４：Ｎｏ、ステップＳ４０２：Ｎｏ）においても、通信データの通信頻度が適切であるか否かの判断を行っても良い。この態様によれば、実ＩＰアドレス／実ＭＡＣアドレス宛てにＤｏＳ攻撃やＤＤｏＳ攻撃が行われたことを検知することができる。
【０１１６】
（２）コントローラ１６０Ａは、最初の仮想ＩＰアドレス／仮想ＭＡＣアドレスを連携先装置へ通知（ステップＳ１０２）してから所定時間の経過後に受信した通信データの送信先アドレスがコントローラ１６０Ａの実ＩＰアドレス／実ＭＡＣアドレスであった場合、当該通信データを破棄しても良い。この態様によれば、最初の仮想ＩＰアドレス／仮想ＭＡＣアドレスの連携先装置における登録漏れに対する救済を考慮しつつ、実ＩＰアドレス／実ＭＡＣアドレス宛てのＤｏＳ攻撃やＤＤｏＳ攻撃からコントローラ１６０Ａを守ることができる。
【０１１７】
（３）本実施形態の制御システム５００ＳＡを待機冗長方式の制御システムに適用し、稼働系のコントローラをコントローラ１６０Ａとして動作させ、待機系のコントローラをダミーコントローラ２００として動作させても良い。
【０１１８】
＜第１および第２実施形態の両方の変形例＞
各実施形態において、仮想アドレス処理機能部１６３（１６３Ａ）および通信データ検査機能部１６４（１６４Ａ）は、コントローラ１６０（１６０Ａ）のＣＰＵがプログラムを実行することにより実現されていた。しかし、仮想アドレス処理機能部１６３（１６３Ａ）および通信データ検査機能部１６４（１６４Ａ）を電子回路などによって構成しても良い。
【符号の説明】
【０１１９】
５００Ｓ，５００ＳＡ……制御システム、１００……エンジニアリングステーション、１２０……データベースステーション、１４０……オペレータステーション、１６０，１６０Ａ……コントローラ、１８０……制御ネットワーク、１１１，１３１，１５１……動作定義、１１２，１７１……コントローラ設定・プログラム、１０１，１２１，１４１，１６１，２０１……通信機能部、１０２……エンジニアリング支援機能部、１０３，１２３，１４３……通信先管理機能部、１２２……データ収集機能部、１３２……蓄積データ、１４２……表示機能・操作機能部、１６２……計測・制御機能部、１６３，１６３Ａ，２０３……仮想アドレス処理機能部、１６４，１６４Ａ，２０４……通信データ検査機能部、１７０，２１０……記憶装置、１７２……連携先情報、２００……ダミーコントローラ、２０２……応答・中継機能部、２１１……応答・中継設定情報。
【図１】
0006690377.tif 000002
【図２】
0006690377.tif 000003
【図３】
0006690377.tif 000004
【図４】
0006690377.tif 000005
【図５】
0006690377.tif 000006
【図６】
0006690377.tif 000007
【図７】
0006690377.tif 000008
【図８】
0006690377.tif 000009
【図９】
0006690377.tif 000010
【図１０】
0006690377.tif 000011
【図１１】
0006690377.tif 000012
【図１２】
0006690377.tif 000013
【図１３】
0006690377.tif 000014
【図１４】
0006690377.tif 000015