以下、図面を参照し、この発明の実施形態について説明する。
<第1実施形態>
図1は、この発明の第1実施形態によるコントローラ160を含む制御システム500Sの構成を示すブロック図である。制御システム500Sは、例えば、工場の生産システムなどである。制御システム500Sは、コントローラ160と、エンジニアリングステーション100と、データベースステーション120と、オペレータステーション140と、制御ネットワーク180とを有する。コントローラ160、エンジニアリングステーション100、データベースステーション120およびオペレータステーション140は、制御ネットワーク180に接続されており、これらの各装置は、制御ネットワーク180を介して通信を行う。
コントローラ160は、例えばPLC(Programmable Logic Controller)、DCS(Distributed Control System)用コントローラ等である。コントローラ160は、フィールド機器(図示略)を制御し、またはフィールド機器(図示略)により計測を行うものである。コントローラ160による制御対象機器および計測機器であるフィールド機器は、例えば各種センサやアクチュエータ、モータ、ポンプ、バルブなどが代表的である。制御システム500Sでは、制御システム500Sの規模や重要度に応じて、一台のコントローラ160が設けられる場合もあり、また、複数台のコントローラ160からなる冗長構成が採られる場合もある。また、異機種のコントローラ160からなる同一論理構成のコントローラ160が用いられる場合もある。また、コントローラ160は、専用装置であってもよいし、PC(Personal Computer)上で動作するアプリケーションにより実現されるソフトウェアPLCであってもよい。
エンジニアリングステーション100、データベースステーション120、オペレータステーション140は、コントローラ160と連携して動作する連携先装置である。エンジニアリングステーション100、データベースステーション120、オペレータステーション140は、専用装置またはPCである。このエンジニアリングステーション100、データベースステーション120、オペレータステーション140の各々は、一台の専用装置またはPCにより構成される場合があり、また、冗長性を考慮して複数台の専用装置またはPCにより構成される場合もある。また、エンジニアリングステーション100、データベースステーション120、オペレータステーション140は、互いに離れた場所に設置されて、VPN(Virtual Private Network)などを経由して通信する場合もある。
エンジニアリングステーション100は、制御システム500S内の他の装置と通信する手段である通信機能部101と、システムの動作定義やコントローラ160のプログラムを作成するエンジニアリング支援機能部102と、通信先となるコントローラ160の情報を管理する通信先管理機能部103とを有する。通信機能部101、エンジニアリング支援機能部102および通信先管理機能部103は、エンジニアリングステーション100のCPU(Central Processing Unit)(図示略)がプログラムを実行することにより実現される機能である。エンジニアリング支援機能部102は、保守画面やトレンド画面といった画面に出す信号の定義や画面の作成、コントローラ160のプログラム開発を行う手段であり、エンジニアリング作業の成果として動作定義111、コントローラ設定・プログラム112を作成する。
データベースステーション120は、制御システム500S内の他の装置と通信する通信機能部121と、制御システム500Sの実績情報などを収集して蓄積データ132として蓄積するデータ収集機能部122と、通信先となるコントローラ160の情報を管理する通信先管理機能部123とを有する。通信機能部121、データ収集機能部122および通信先管理機能部123は、データベースステーション120のCPU(図示略)がプログラムを実行することにより実現される機能である。データ収集機能部122は、動作定義131に基づいて動作する。動作定義131は、エンジニアリングステーション100により生成された動作定義111のうちのデータベースステーション120に関する部分の複製であり、通信機能部121等を介して取得されたものである。図2は、データベースステーション120に記憶された動作定義131の例を示す図である。図2に示すように、動作定義131には、コントローラ160に割り当てられた本来のIPアドレス(以下、実IPアドレスという。図2の例では、取得先実IPアドレスと表記されている。)と、コントローラ160のMAC(Media Access Control)アドレス(以下、実MACアドレスという。図2の例では、取得先実MACアドレスと表記されている。)が定義されている。
オペレータステーション140は、制御システム500S内の他の装置と通信するための通信機能部141と、制御システム500Sの実績情報などを表示し、必要に応じて操作指示を行う表示機能・操作機能部142と、通信先となるコントローラ160の情報を管理する通信先管理機能部143とを有する。通信機能部141、表示機能・操作機能部142および通信先管理機能部143は、オペレータステーション140のCPU(図示略)がプログラムを実行することにより実現される機能である。表示機能・操作機能部142は、動作定義151に基づいて動作する。動作定義151は、エンジニアリングステーション100により生成された動作定義111のうちのオペレータステーション140に関する部分の複製であり、通信機能部141等を介して取得されたものである。図3は、オペレータステーション140に記憶された動作定義151の例を示す図である。図3に示すように、動作定義151には、コントローラ160の実IPアドレス(図3の例では、取得先実IPアドレスと表記されている。)とコントローラ160の実MACアドレス(図3の例では、取得先実MACアドレスと表記されている。)が定義されている。
オペレータステーション140やデータベースステーション120は、インターネットなどの他の情報ネットワークに接続されており、当該他の情報ネットワークに接続されたクライアント装置(図示略)などと通信することが可能である。オペレータステーション140やデータベースステーション120と、他の情報ネットワークとは、通常、ファイアウォール(図示略)などを介して隔離されている。しかし、ファイアウォールをすり抜けられたりすると、制御システム500Sは、他の情報ネットワークのクライアント装置などから、悪意を持った攻撃を受ける虞がある。例えば、コントローラ160と正規に連携していないクライアント装置が、コントローラ160にアクセスし、コントローラ160が収集したデータの取得やコントローラ160の設定変更を試みる、といった具合である。また、制御ネットワーク180に不正な機器が接続されて、その不正な機器からコントローラ160が悪意を持った攻撃を受ける虞がある。そこで、本実施形態のコントローラ160は、このような制御システム500S内の不正な通信に対処するための仕組みを有している。
コントローラ160は、通信機能部161と、計測・制御機能部162と、仮想アドレス処理機能部163と、通信データ検査機能部164とを有する。また、コントローラ160は、コントローラ設定・プログラム171および連携先情報172を格納する記憶装置170を有する。通信機能部161、計測・制御機能部162、仮想アドレス処理機能部163および通信データ検査機能部164は、コントローラ160を構成するCPU(図示略)が記憶装置170に記憶されたプログラムを実行することにより実現される機能である。これらの機能を実現するプログラムは、コントローラ設定・プログラム171とは別個のプログラムであっても良いし、コントローラ設定・プログラム171に含まれていても良い。
通信機能部161は、制御システム500S内の他の装置と通信する手段である。計測・制御機能部162は、コントローラ設定・プログラム171に従って動作し、デジタル信号やアナログ信号の入出力を通じてセンサやアクチュエータの制御を行う手段である。コントローラ設定・プログラム171は、エンジニアリングステーション100により生成され、通信機能部161等(他の手段として、例えばSDカードなどの媒体やUSBケーブルによる接続などがある)によって取得されたコントローラ設定・プログラム112である。図4は、コントローラ160に記憶されたコントローラ設定・プログラム171において定義された制御システム500S内の通信制御に使用される信号とメモリアドレスのリストである。図4では、フィールド機器の一例であるポンプの動作に関するメモリアドレス等が定義されている。
連携先情報172は、エンジニアリングステーション100により生成された動作定義111のうちの少なくともコントローラ160と通信を行う装置(すなわち連携先装置)に関する情報であり、通信機能部161等(他の手段として、例えばSDカードなどの媒体やUSBケーブルによる接続などがある)によって取得された情報である。図5は、コントローラ160に記憶された連携先情報172の例を示す図である。連携先情報172には、連携先装置の通信アドレス、具体的には、連携先装置の各々に割り当てられた連携先装置の本来のIPアドレス(実IPアドレス。図5の例では、連携先実IPアドレスと表記されている。)が登録されている。コントローラ160は、連携先情報172に登録された通信アドレス(実IPアドレス)によって連携先装置を認識する。また、連携先情報172には、連携先装置の通信アドレスが表す連携先装置と、その連携先装置による通信のデータパターンの組み合わせの一覧が登録されている。図5では、連携先装置のうちオペレータステーション140とデータベースステーション120のデータパターンの一例を示している。
仮想アドレス処理機能部163は、自装置(コントローラ160)の受信対象となる新たな通信アドレスを作成して、連携先情報172によって認識している連携先装置(本実施形態ではエンジニアリングステーション100、データベースステーション120およびオペレータステーション140)に作成した新たな通信アドレスを通知する通信アドレス処理手段である。仮想アドレス処理機能部163は、具体的には、仮想IPアドレスおよび仮想MACアドレスを作成し、作成した仮想IPアドレスおよび仮想MACアドレスを連携先装置に通知する。これにより仮想アドレス処理機能部163は、連携先装置におけるコントローラ160の通信アドレスを新たな通信アドレスに変更させる。
ここで、本明細書における仮想IPアドレスは、未割り当てのプライベートIPアドレスの中から決定されたプライベートIPアドレスのことである。また、特別な意味を持つIPアドレス(例えば、ブロードキャストを意味するIPアドレスなど)を仮想IPアドレスとして用いないのが好ましい。また、本明細書における仮想MACアドレスは、ベンダコードを意味する3オクテット6文字のビット列のうちの7ビット目のビット(イーサネット(登録商標)通信時には2ビット目に伝送されるビット)であるG/L(Global/Local)ビットを1にすることで実MACアドレスと区別されたアドレスである。つまり、仮想MACアドレスでは、1オクテット目の2文字が「x2」、「x6」、「xA」、「xE」などになる。
また、仮想アドレス処理機能部163は、通信アドレスを新たに作成する前に受信対象となっていた通信アドレス宛ての通信データに加え、作成した新たな通信アドレス宛ての通信データを通信機能部161が受信するように通信機能部161の設定変更を行う。
通信データ検査機能部164は、受信した通信データにおける送信先アドレスが、仮想アドレス処理機能部163が作成して通知した新たな通信アドレスではない場合、当該通信データによる通信は不正な通信であると判断する通信データ検査手段である。
仮想アドレス処理機能部163および通信データ検査機能部164については、動作の説明において詳述する。
次に本実施形態の動作について説明する。
図6は、コントローラ160の動作を示すフローチャートである。コントローラ160の電源が投入されると(またはコントローラ160が再起動されると)、コントローラ160のCPUは、仮想アドレス処理機能部163として動作を開始する。まず、仮想アドレス処理機能部163は、自装置の受信対象となる新たな通信アドレスを作成する(ステップS101)。具体的には、コントローラ160は、仮想IPアドレスと仮想MACアドレスとを作成する。仮想IPアドレスおよび仮想MACアドレスは、コントローラ160の通信アドレスとして用いられる。制御システム500Sにおけるネットワークの通信プロトコルがIPである場合、仮想MACアドレスは不要となることもある。この場合、仮想アドレス処理機能部163は、仮想IPアドレスのみを作成するようにしても良い。しかし、通信経路ではMACアドレスに基づいて通信が行われ、制御システム500Sへの攻撃者はMAC層に対して攻撃を行うことがある。これらから、仮想アドレス処理機能部163は、仮想IPアドレスと仮想MACアドレスの両方を作成することが好ましい。
次に、仮想アドレス処理機能部163は、ステップS101において作成した仮想IPアドレスおよび仮想MACアドレスを、連携先情報172によって連携先と認識している装置(本実施形態では、エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)に対して通知する(ステップS102)。仮想アドレス処理機能部163によって作成されて通知される通信アドレスは、連携先装置からすると通信先であるコントローラ160を示す情報であるため、これら通信アドレスのことを通信先情報と呼ぶことがある。
ステップS102の後、仮想アドレス処理機能部163は、自装置(コントローラ160)の実IPアドレスおよび実MACアドレス宛の通信データに加え、ステップS101において作成した仮想IPアドレスおよび仮想MACアドレス宛ての通信データを通信機能部161が受信するように通信機能部161の設定変更を行う。その後、コントローラ160のCPUは、仮想アドレス処理機能部163としての動作を終了する。そして、コントローラ160のCPUは、自装置宛て(具体的には、自装置の実IPアドレスおよび実MACアドレス宛て、または自装置の仮想IPアドレスおよび仮想MACアドレス宛て)の通信データを受信するまで待機する(ステップS103)。
通信機能部161が自装置宛の通信データを受信すると、コントローラ160のCPUは、通信データ検査機能部164として動作を開始する。そして、通信データ検査機能部164は、受信した通信データを検査対象の通信データとして、当該検査対象の通信データによる通信が不正な通信であるか否かを検査する。通信データ検査機能部164は、この検査をプロトコル階層毎に行う。具体的には、図6のフローチャートにおいて、後述するステップS104からS107に至る一連の処理をデータリンク層において行った後、ネットワーク層において再度ステップS104からS107に至る一連の処理を行う。以下の説明では、仮想MACアドレスと仮想IPアドレスを併記することがあるが、これは、データリンク層についての処理の場合には仮想MACアドレスであり、ネットワーク層についての処理の場合には仮想IPアドレスである、ということである。実MACアドレスと実IPアドレスについても同様である。
まず、通信データ検査機能部164は、受信した通信データにおける送信先アドレスが、仮想アドレス処理機能部163によって先に通知した自装置(コントローラ160)の仮想IPアドレス/仮想MACアドレスであるか否かを判断する(ステップS104)。
受信した通信データにおける送信先アドレスが自装置の仮想IPアドレス/仮想MACアドレスではない場合、受信した通信データにおける送信先アドレスは、自装置の実IPアドレス/実MACアドレスである。受信した通信データにおける送信先アドレスがコントローラ160の実IPアドレス/実MACアドレスであった場合、コントローラ160が連携先と認識していない送信元、すなわち不正な送信元からのアクセスやプロセスであると疑われる。正規な連携先装置であれば、先のステップで通知した仮想IPアドレス/仮想MACアドレス宛てにアクセスするはずだからである。このような理由により、受信した通信データにおける送信先アドレスが自装置の仮想IPアドレス/仮想MACアドレスではない場合(S104:No)、通信データ検査機能部164は、コントローラ160の実IPアドレス/実MACアドレス宛てにアクセス(すなわち不正な通信)があった旨の警告を制御システム500S内の装置に通知する(ステップS105)。例えば、通信データ検査機能部164は、当該不正な通信があった旨の警告や不正な通信を行った送信元情報などの警告内容をオペレータステーション140に通知し、当該警告等を表示機能・操作機能部142によって表示させる、といった具合である。
ここで、制御システム500S内の各機器の起動タイミングによっては、コントローラ160の起動時に連携先装置が稼働していない場合がある。また、コントローラ160の稼働時に連携先装置が再起動する場合もある。また、制御システム500S内の通信データにノイズが重畳されるなどの通信不備が生じる場合もある。これらの場合には、ステップS102において送信した通信先情報(具体的にはコントローラ160の仮想IPアドレス/仮想MACアドレス)が連携先装置において登録されないことがある。これにより、通信データ検査機能部164が連携先装置からの通信を不正な通信であるとの誤判断を行うこともあり得る。
そこで、通信データ検査機能部164は、ステップS105に後続して、当該受信した通信データの送信元にコントローラ160の通信先情報、すなわち、作成済のコントローラ160の新たな通信アドレスである仮想IPアドレス/仮想MACアドレスを通知する(ステップS106)。例えば、通信データ検査機能部164は、当該通信データの送信元アドレスを送信先アドレスとし、コントローラ160の仮想IPアドレス/仮想MACアドレスをヘッダ以外のデータ領域(ペイロード)に格納した通信データを作成し、その作成した通信データを通信機能部161に送信させる。このように、通信データ検査機能部164は、通信先情報を再通知することで、連携先装置に次回から正規な通信をさせる。
通信先情報の再通知(S106)の後、コントローラ160のCPUは、通信データ検査機能部164としての動作を終了し、当該受信した通信データに基づく処理を実行する(ステップS107)。このように、当該受信した通信データを破棄せずに通信データの処理を実行することで、正規な通信であるはずの通信データが誤判断によって処理されないといった事態を回避する。これにより、コントローラ160がリアルタイム処理を要求されたとしても、制御システム500Sに不具合が生じることはない。ステップS107の後、コントローラ160のCPUは、ステップS103に戻り、自装置宛ての通信データを受信するまで待機する。
ここで、通信データ検査機能部164は、自装置の実IPアドレス/実MACアドレス宛ての通信があった場合に、その通信データの送信元に自装置の仮想IPアドレス/仮想MACアドレスを通知していた(S106参照)。これにより、悪意のある攻撃者もコントローラ160の仮想IPアドレス/仮想MACアドレスを知ることができるため、悪意のある攻撃者が仮想IPアドレス/仮想MACアドレス宛てに通信を試みる虞がある。すなわち、仮想IPアドレス/仮想MACアドレス宛ての通信であったとしても不正な通信である可能性がある。
そこで、コントローラ160は、仮想IPアドレス/仮想MACアドレスを電源投入時に作成するだけでなく、仮想IPアドレス/仮想MACアドレスを後述の条件の下に変更してゆく。そして、コントローラ160は、仮想IPアドレス/仮想MACアドレスを変更してゆく過程で不正な通信と疑われる通信に用いられた仮想IPアドレス/仮想MACアドレスを監視対象の仮想IPアドレス/監視対象の仮想MACアドレスとし、その監視対象の仮想IPアドレス/監視対象の仮想MACアドレス宛ての通信の有無を検査する。以下、このような処理を詳述する。
ステップS104において、受信した通信データにおける送信先アドレスが自装置(コントローラ160)の仮想IPアドレス/仮想MACアドレスである場合(S104:Yes)、通信データ検査機能部164は、当該通信データにおける送信先アドレス(すなわち仮想IPアドレス/仮想MACアドレス)が監視対象の仮想IPアドレス/監視対象の仮想MACアドレスであるか否かを判断する(ステップS108)。
当該通信データにおける送信先アドレスが監視対象の仮想IPアドレス/監視対象の仮想MACアドレスではない場合(S108:No)、通信データ検査機能部164は、ステップS110の処理を行う。ここで、コントローラ160の電源投入直後などでは、監視対象の仮想IPアドレス/監視対象の仮想MACアドレスは設定されていない。これらが未設定の場合には、通信データ検査機能部164は、ステップS108の処理に後続してステップS110の処理を行うこととなる。
ステップS110において、通信データ検査機能部164は、当該通信データの通信内容が適切な内容であるか否かを判断する。本実施形態において、通信データの通信内容とは、通信データにおけるヘッダなどの管理情報を除いたデータ領域(すなわちペイロード)に格納されているデータ内容のことである。通信データ検査機能部164は、具体的には、当該通信データにおけるペイロードのデータパターンが、連携先情報172に登録されている複数のデータパターンのうちのいずれかと一致するか否かを判断する。より好ましくは、通信データ検査機能部164は、当該通信データの送信元アドレスと、当該通信データにおけるペイロードのデータパターンとの組み合わせが、連携先情報172に登録されている連携先装置を表す通信アドレスと、その連携先装置のデータパターンの組み合わせのうちのいずれかと一致するか否かを判断する。すなわち、当該通信データは連携先装置が行う適切な内容の通信データであるか否か、というような検査が行われる。
当該通信データの通信内容が適切な内容である場合(S110:Yes)、コントローラ160のCPUは、通信データ検査機能部164としての動作を終了し、当該通信データに基づく処理を実行する(S107)。例えば、当該通信データの送信元アドレスがオペレータステーション140の実IPアドレスであり、当該通信データが「メモリアドレス「%MD1.2000」の取得指示」を要求するものである場合、この組み合わせは、連携先情報172に登録されている組み合わせであるため(図5参照)、ステップS107の処理へ進む、といった具合である。ステップS107の後、コントローラ160のCPUは、ステップS103に戻り、自装置宛ての通信データを受信するまで待機する。
当該通信データの通信内容が不適切な内容である場合(S110:No)、コントローラ160のCPUは、通信データ検査機能部164としての動作を終了し、仮想アドレス処理機能部163としての動作を開始してステップS111以降の処理を行う。例えば、当該通信データにおけるペイロードのデータ内容が、連携先情報172に登録されたデータパターン以外の内容であった場合、当該通信データが不正な動作変更指示などである虞があり、ステップS111以降の処理へ進む、といった具合である。
ステップS111において、仮想アドレス処理機能部163は、当該通信データにおける送信先アドレスとして格納されている仮想IPアドレス/仮想MACアドレスを監視対象の仮想IPアドレス/監視対象の仮想MACアドレスに決定し、その情報を記憶装置に格納する。ステップS111に後続して、仮想アドレス処理機能部163は、新たな仮想IPアドレス/新たな仮想MACアドレスを作成する(ステップS112)。この新たな仮想IPアドレス/新たな仮想MACアドレスは、以後の通信においてコントローラ160の正規な通信アドレスとして用いられる。次に、仮想アドレス処理機能部163は、ステップS112において作成した新たな仮想IPアドレス/新たな仮想MACアドレスを、連携先情報172によって連携先と認識している装置(本実施形態では、エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)に対して通知する(ステップS113)。
ステップS113の後、仮想アドレス処理機能部163は、自装置の実IPアドレス/実MACアドレス宛ての通信データ、ステップS111において監視対象に決定した仮想IPアドレス/仮想MACアドレス宛ての通信データに加え、ステップS112において作成した新たな仮想IPアドレス/新たな仮想MACアドレス宛ての通信データを通信機能部161が受信するように通信機能部161の設定変更を行う。このようにして、コントローラ160は、自装置の通信アドレスの変更を行う。その後、コントローラ160のCPUは、仮想アドレス処理機能部163としての動作を終了し、当該通信データに基づく処理を実行する(ステップS107)。ステップS107の後、コントローラ160のCPUは、ステップS103に戻り、自装置宛ての通信データを受信するまで待機する。
ステップS108において、当該通信データにおける送信先アドレスが監視対象の仮想IPアドレス/監視対象の仮想MACアドレスであった場合(S108:Yes)、通信データ検査機能部164は、コントローラ160の監視対象の仮想IPアドレス/監視対象の仮想MACアドレス宛てにアクセス(すなわち不正な通信)があった旨の警告を制御システム500S内の装置に通知する(ステップS109)。具体的には、ステップS105と同様の通知を行えば良い。ここで、新たな仮想IPアドレス/新たな仮想MACアドレスの通知(S113)後に別の通信データを受信した際(S103)、正規な連携先装置は、新たな仮想IPアドレス/新たな仮想MACアドレス宛に通信するはずである。それにもかかわらず、先の不正な通信に用いられた監視対象の仮想IPアドレス/監視対象の仮想MACアドレスと同じ通信アドレス宛てに通信を試みているのであるから、この通信は不正な通信であると疑われ、不正な通信である旨の警告を行うのである。
ステップS109に後続して、通信データ検査機能部164は、受信した通信データの送信元にコントローラ160の通信先情報、すなわち、新たな仮想IPアドレス/新たな仮想MACアドレスを通知する(ステップS106)。これは、通信不備などにより、ステップS113において送信した新たな仮想IPアドレス/新たな仮想MACアドレスが連携先装置において登録されないことがあり得るからである。このように、通信データ検査機能部164は、通信先情報を再通知することで、連携先装置に次回から正規な通信をさせる。
通信先情報の再通知(S106)の後、コントローラ160のCPUは、通信データ検査機能部164としての動作を終了し、当該通信データに基づく処理を実行する(ステップS107)。その後、コントローラ160のCPUは、ステップS103に戻り、自装置宛ての通信データを受信するまで待機する。
以上が、コントローラ160における本実施形態に特有の動作である。
図7は、連携先装置(本実施形態では、エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)の動作を示すフローチャートである。
各連携先装置は、電源が投入されて起動すると、通信が必要となるまで待機する(ステップS201)。通信が必要となるまでとは、例えば、コントローラ160に対する送受信が必要となるまでである。具体的には、データベースステーション120のCPUは、電源投入後に一定周期でデータ収集機能部122として動作し、コントローラ160に対して計測データの送信指示を送信する。また、オペレータステーション140のCPUやエンジニアリングステーション100のCPUは、例えば、操作指示の発生に従って通信データをコントローラ160に送信する。
連携先装置のCPUは、送信処理が必要になると(ステップS202:Yes)、通信先管理機能部(例えばデータベースステーション120であれば通信先管理機能部143)として動作を開始し、通信先管理テーブルに基づいて通信データの送信を行う(ステップS203)。
図8は、動作定義151を元にオペレータステーション140のメモリ上に展開され、コントローラ160からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。図8に示すように、オペレータステーション140の通信先管理テーブルには、動作定義151に定義されたコントローラ160の実IPアドレスおよび実MACアドレスに加え、コントローラ160から通知されるコントローラ160の仮想IPアドレスおよび仮想MACアドレスが登録される。図9は、動作定義131を元にデータベースステーション120のメモリ上に展開され、コントローラ160からの通信先情報通知によって更新される通信先管理テーブルの例を示す図である。図9に示すように、データベースステーション120の通信先管理テーブルもオペレータステーション140の通信先管理テーブルと同様である。
連携先装置の通信先管理機能部は、通信データをコントローラ160に送信する際、通信先管理テーブルに仮想IPアドレスおよび仮想MACアドレスが登録されている場合、その仮想IPアドレスおよび仮想MACアドレス宛てに送信する。一方、連携先装置の電源投入直後では、連携先装置にコントローラ160の仮想IPアドレスおよび仮想MACアドレスが通知されておらず、それらが通信先管理テーブルに登録されていないことがある。この場合には、連携先装置の通信先管理機能部は、コントローラ160の実IPアドレスおよび実MACアドレス宛てに送信する。通信データの送信(S203)後、連携先装置は、ステップS201に戻り、通信が必要となるまで待機する。
連携先装置のCPUは、自装置宛の通信データを受信すると(ステップS202:No)、通信先管理機能部として動作を開始し、受信した通信データが新たな通信アドレスの通知(換言すると通信先情報の更新の通知)であるか否かを判断する(ステップS204)。受信した通信データが通信先情報の更新の通知ではない場合(S204:No)、連携先装置のCPUは、受信した通信データに基づいた処理を行う(ステップS205)。例えば、データベースステーション120のCPUは、データ収集機能部122としてコントローラ160から計測データや制御結果の応答などを受け取る。また、オペレータステーション140のCPUは、コントローラ160から不正な通信である旨の警告を示す通信データを受信することもある。この場合、オペレータステーション140のCPUは、表示機能・操作機能部142として当該警告を表示する。
受信した通信データが通信先情報の更新の通知である場合(S204:Yes)、連携先装置の通信先管理機能部は、当該通信データに格納されている新たな通信アドレス(仮想IPアドレスおよび仮想MACアドレス)を通信先管理テーブルに登録する。通信先管理テーブルにコントローラ160の仮想IPアドレスおよび仮想MACアドレスが既に登録されている場合には、通信先管理機能部は、その仮想IPアドレスおよび仮想MACアドレスを通知された新たな仮想IPアドレスおよび新たな仮想MACアドレスに変更する。その後、連携先装置は、ステップS201に戻り、通信が必要となるまで待機する。
このように、連携先装置の通信先管理機能部は、コントローラ160から新たな通信アドレス(仮想IPアドレスおよび仮想MACアドレス)が通知される毎に、コントローラ160の通信アドレスを新たな通信アドレスに更新する。
以上が、連携先装置における本実施形態に特有の動作である。
以上のように、本実施形態のコントローラ160は、仮想IPアドレスおよび仮想MACアドレスを作成して制御システム500S内の連携先装置へ通知することで自装置の通信アドレスを変更する。コントローラ160は、変更前の通信アドレス宛ての通信データと変更後の通信アドレス宛ての通信データを受信することができる。コントローラ160は、受信した通信データの送信先アドレスが変更前の通信アドレスであるか否かを判断する。コントローラ160は、変更前の通信アドレス(具体的には、実IPアドレス、実MACアドレス、変更前の仮想IPアドレスおよび変更前の仮想MACアドレス)宛ての通信を不正な通信であると判断し、不正な通信があった旨の警告を連携先装置に通知して表示させる。本実施形態では、制御システム500Sの構成要素であるコントローラ160自体が不正な通信を検知するため、制御システム500S内における不正な通信を検知することができ、そのような不正な通信による脅威からコントローラ160を守ることができる。
また、本実施形態では、コントローラ160の通信アドレスの変更によって不正な通信を検知するため、ネットワーク構成の変更やネットワークの外部と通信を行う仕組みの用意などを行う必要がなく、標準的な制御システムの構成のみで実現することができ、本発明の技術を導入する際のコストを抑えることができる。
また、コントローラ160は、受信した通信データの通信内容が適切な内容ではない場合、当該通信データの送信先アドレスに用いられた自装置の仮想IPアドレス/仮想MACアドレスを監視対象の仮想IPアドレス/監視対象の仮想MACアドレスに決定し、新たな仮想IPアドレス/仮想MACアドレスを作成して自装置の通信アドレスを変更する。このように、コントローラ160は、不正な通信が行われた場合に通信アドレスの変更を繰り返す。このため、コントローラ160を含む制御システム500Sでは、通信アドレスを1回だけ変更する態様(例えば仮想IPアドレス/仮想MACアドレスを1回だけ作成する態様など)に比べ、不正な通信があったことを認識しつつ、その不正な通信の発生頻度を低減することができる。
<第1実施形態の変形例>
以上に説明した第1実施形態の変形例としては、例えば以下のものがある。
(1)不正な通信である旨の警告(ステップS105およびステップS109)は、コントローラ160から上位のシステム(連携先装置)に送信されるのが望ましい。しかし、制御システム500S内の通信は並列に行われており、通信には遅延も存在することから、通信先情報が送信されて連携先装置に登録されるまでの間に、連携先装置が変更前の通信アドレス宛てへ正規な通信データの送信を行うこともあり得る。この場合、連携先装置は、通信先情報の通知を受け取った直後に不正な通信があった旨の警告の通知を受け取ることがある。このため、連携先装置(例えばオペレータステーション140)では、不正な通信があった旨の警告を受信毎にすべて表示する態様に比べ、通信先情報の通知を受け取った時刻から一定時間を経過するまでに受け取った警告については重要度を下げて表示することが好ましい。この態様によれば、制御システム500Sの管理者は、悪意のある攻撃者による不正な通信と、不正な通信と誤判断された正規な通信とを区別して認識することができる。
(2)本実施形態のコントローラ160は、実IPアドレス/実MACアドレス宛ての通信があった場合(S104:Yes)、送信元に仮想IPアドレス/仮想MACアドレスを再通知していた(S106)。それにもかかわらず、実IPアドレス/実MACアドレス宛てに同じ送信元から繰り返し送信されることがあり得る。このようなアクセスは、連携先装置とは異なる装置からの不正な通信である可能性が高い。そこで、コントローラ160の通信データ検査機能部164は、受信した通信データにおける送信先アドレスが実IPアドレス/実MACアドレスであった場合(S104:No)、当該通信データにおける送信元アドレスをレジスタに格納し、以降、当該送信元アドレスからのアクセス数をカウントアップする。そして、通信データ検査機能部164は、上記レジスタへの格納から所定時間が経過するまでの上記送信元アドレスからのアクセス数が閾値以上であるか否かを判断する。通信データ検査機能部164は、アクセス数が閾値以上である場合、アクセス数が閾値未満である場合に比べ、不正な通信があった旨の警告の重要度を上げて連携先装置へ通知する。このような態様によれば、悪意のある攻撃者による不正な通信を、不正な通信と誤判断された正規な通信に比べ、より際立たせることができ、制御システム500Sの管理者は、より正確に不正な通信を認識することができる。また、通信データ検査機能部164は、受信した通信データにおける送信先アドレスが監視対象の仮想IPアドレス/監視対象の仮想MACアドレスであった場合(S108:Yes)も同様に、同じ送信元アドレスからのアクセス数をカウントアップして、警告の重要度を変えるようにしても良い。この態様においても同様の効果が得られる。
(3)本実施形態のコントローラ160は、電源の投入を契機として、仮想IPアドレスおよび仮想MACアドレスを作成していたため、仮想IPアドレスおよび仮想MACアドレスは、コントローラ160のシャットダウンに応じて削除される。しかし、コントローラ160は、一度作成した仮想IPアドレスおよび仮想MACアドレスを不揮発性記憶装置に格納することで、コントローラ160がシャットダウンされても仮想IPアドレスおよび仮想MACアドレスを保持するようにしても良い。これは、ステップS111で決定した監視対象の仮想IPアドレス/監視対象の仮想MACアドレスやステップS112で作成した新たな仮想IPアドレス/新たな仮想MACアドレスについても同様である。また、コントローラ160と同様に、連携先装置の通信先管理テーブルを不揮発性記憶装置に格納することで、連携先装置がシャットダウンされても通信先管理テーブルに登録されたコントローラ160の仮想IPアドレスおよび仮想MACアドレスを保持するようにしても良い。
(4)本実施形態では、仮想IPアドレス/仮想MACアドレスを変更してゆくに従って、監視対象の仮想IPアドレス/監視対象の仮想MACアドレスの数が増加してゆくことになる。このため、ステップS101およびステップS112で生成する仮想IPアドレス/仮想MACアドレスの個数は、コントローラ160が十分に処理可能な個数を上限とするのが好ましい。また、コントローラ160は、監視対象の仮想IPアドレス/監視対象の仮想MACアドレスの個数が増大した場合など、監視対象の仮想IPアドレス/監視対象の仮想MACアドレスを適宜に破棄しても良い。
(5)コントローラ160は、ステップS101およびステップS112において、仮想IPアドレス/仮想MACアドレスを連携先装置の数だけ作成しても良い。そして、コントローラ160は、作成した複数の仮想IPアドレス/仮想MACアドレスの各々と各連携先装置とを対応付けるようにしても良い。
(6)本実施形態では、コントローラ160の通信アドレスとして実IPアドレス、実MACアドレス、仮想IPアドレスおよび仮想MACアドレスを用いていた。しかし、通信アドレスは、これらに限らず、他の通信プロトコルに従った通信アドレスであっても良い。新たな通信アドレス(仮想的な通信アドレス)の作成が可能であり、通信アドレスの変更を繰り返すことが可能な通信プロトコルに従った通信アドレスであれば、実現可能である。
(7)本実施形態の通信データ検査機能部164は、通信データにおける通信内容が適切であるか否かの判断を、いわゆるホワイトリスト型の検査により行っていた。しかし、通信データ検査機能部164は、いわゆるブラックリスト型の検査を行っても良い。すなわち、通信データ検査機能部164は、受信した通信データにおけるペイロードのデータパターンと連携先情報172に登録されたデータパターンとの比較により通信データにおける通信内容が適切であるか否かを判断するようにすれば良い。また、より好適な態様として、通信データ検査機能部164は、受信した通信データにおける送信元アドレスとペイロードのデータパターンとの組み合わせと、連携先情報172に登録された通信アドレスとデータパターンとの組み合わせとの比較により通信データにおける通信内容が適切であるか否かを判断するようにすれば良い。
(8)通信データ検査機能部164がデータリンク層において不正な通信を検知した場合、仮想アドレス処理機能部163は、新たな仮想MACアドレスのみを作成しても良いし、新たな仮想MACアドレスと新たな仮想IPアドレスの両方を作成しても良い。また、同様に、通信データ検査機能部164がネットワーク層において不正な通信を検知した場合、仮想アドレス処理機能部163は、新たな仮想IPアドレスのみを作成しても良いし、新たなIPアドレスと新たな仮想MACアドレスの両方を作成しても良い。
(9)制御システム500Sの各装置が記憶する動作定義111、コントローラ設定・プログラム112、動作定義131、動作定義151、コントローラ設定・プログラム171は、各装置が必要とするデータがすべて含まれていればよく、すべて同一ファイルとすることも可能である。
(10)本実施形態において通信データ検査機能部164は、受信した通信データの通信内容が適切な内容であるか否かを判断していた(S110)。このステップの処理は、制御システム500Sの規模や用途によって複雑化するおそれがある。このため、コントローラ160の処理性能等の理由により、制御システム500Sの規模や用途に合わせて、ステップS110の処理内容の簡略化やステップS110の省略化を行っても良い。例えば、通信データ検査機能部164は、受信した通信データにおけるペイロードに特定のデータが格納されていた場合に、当該通信データの通信内容は適切な内容であると判断する、というように簡略化しても良い。また、ステップS110を省略した例では、通信データ検査機能部164は、受信した通信データにおける送信先アドレスが仮想IPアドレス/仮想MACアドレスであった場合(S104:Yes)、当該受信した通信データに基づく処理を実行すれば良い(S107)。
<第2実施形態>
第1実施形態の制御システム500Sのコントローラ160は、不正な通信を検出するために通信データを解析するが、このような通信データの解析のために自装置のCPUやネットワークチップなどのリソースを使用する。制御システム500Sでは、コントローラ160がDoS攻撃やDDoS攻撃を受けると大量の通信データについて解析を行うこととなり、コントローラ160のリソースを大量に消費し、制御対象機器の制御や計測機器による計測といったコントローラ160本来の動作が阻害される虞がある。この発明の第2実施形態は、このような点を考慮して改良した実施形態である。
図10は、この発明の第2実施形態によるコントローラ160Aを含む制御システム500SAの構成を示すブロック図である。本実施形態の制御システム500SAは、コントローラ160に代えてコントローラ160Aを有する点とダミーコントローラ200をさらに有する点において第1実施形態の制御システム500Sと異なる。コントローラ160A、ダミーコントローラ200およびコントローラ160Aの連携先装置(エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)は、制御ネットワーク180を介して通信を行う。
制御システム500SAでは、制御ネットワーク180の回線速度や制御ネットワーク180に接続されるコントローラ160Aの台数などに応じて、一台のダミーコントローラ200が設けられる場合もあり、また、複数台のダミーコントローラ200からなる冗長構成が採られる場合もある。また、ダミーコントローラ200は、専用装置であっても良いし、PC上で動作するアプリケーションにより実現されるソフトウェアであっても良い。
コントローラ160Aは、仮想アドレス処理機能部163に代えて仮想アドレス処理機能部163Aを有する点および通信データ検査機能部164に代えて通信データ検査機能部164Aを有する点においてコントローラ160と異なる。仮想アドレス処理機能部163Aおよび通信データ検査機能部164Aは、コントローラ160AのCPUが記憶装置170に記憶されたプログラムを実行することにより実現される機能である。通信データ検査機能部164Aは、受信した通信データによる通信が適切ではない場合、当該通信データにおける送信先アドレスを引き継ぎ対象の通信アドレスに決定する点において通信データ検査機能部164と異なる。引き継ぎ対象の通信アドレスは、ダミーコントローラ200の受信対象となる通信アドレスとしてダミーコントローラ200に引き継がせる通信アドレスである。具体的には、引き継ぎ対象の通信アドレスは、先に生成されてコントローラ160Aの受信対象となっている仮想IPアドレスおよび仮想MACアドレスであって、不正な通信が疑われる通信に用いられた仮想IPアドレスおよび仮想MACアドレスである。仮想アドレス処理機能部163Aは、通信データ検査機能部164Aにより決定された引き継ぎ対象の通信アドレスをダミーコントローラ200に送信して引き継がせる点において仮想アドレス処理機能部163と異なる。仮想アドレス処理機能部163Aは、引き継ぎ対象の通信アドレス(仮想IPアドレス/仮想MACアドレス)の引き継ぎに合わせて新たな通信アドレス(新たな仮想IPアドレス/新たな仮想MACアドレス)を作成する。仮想アドレス処理機能部163Aは、通信機能部161が新たな通信アドレス宛ての通信データを受信し、引き継ぎ対象の通信アドレス宛ての通信データを受信しないように通信機能部161の設定変更を行う。仮想アドレス処理機能部163Aおよび通信データ検査機能部164Aについては、動作の説明において詳述する。
ダミーコントローラ200は、通信機能部201と、応答・中継機能部202と、仮想アドレス処理機能部203と、通信データ検査機能部204とを有する。また、ダミーコントローラ200は、応答・中継設定情報211を格納する記憶装置210を有する。通信機能部201、応答・中継機能部202、仮想アドレス処理機能部203および通信データ検査機能部204は、ダミーコントローラ200を構成するCPU(図示略)が記憶装置210に記憶されたプログラム(図示略)を実行することにより実現される機能である。これらの機能を実現するプログラムは、エンジニアリングステーション100により生成され、通信機能部201等によって取得されたコントローラ設定・プログラム112に含まれていても良いし、それとは別個のプログラムであっても良い。
通信機能部201は、制御システム500SA内の他の装置と通信する手段である。通信データ検査機能部204は、受信した通信データが引き継ぎ要求であるか否かを判断する手段である。仮想アドレス処理機能部203は、引き継ぎ対象の通信アドレスを自装置(ダミーコントローラ200)の受信対象の通信アドレスとして引き継ぐ処理を行う手段である。
図11は、ダミーコントローラ200が引き継ぎ元(コントローラ160A)から引き継ぎ対象の通信アドレスを引き継いだ際に管理する応答・中継設定情報211のうちの引き継ぎ元情報の例を示す図である。引き継ぎ元情報には、引き継ぎ対象の通信アドレス(図11の例では、仮想IPアドレスおよび仮想MACアドレス)と、引き継ぎ元の最新の通信アドレス(図11の例では、引き継ぎ元仮想IPアドレスおよび引き継ぎ元仮想MACアドレス)と、引き継ぎ元の本来の通信アドレス(図11の例では、引き継ぎ元実IPアドレスおよび引き継ぎ元実MACアドレス)とが関連付けられて登録される。なお、図11の例では、2つの引き継ぎ元機器についての引き継ぎ元情報が示されている。仮想アドレス処理機能部203は、引き継ぎ元情報を参照して、通信機能部201が引き継ぎ対象の通信アドレス宛ての通信データを受信するように通信機能部201の設定変更を行う。
図12は、ダミーコントローラ200が引き継ぎ元(コントローラ160A)から引き継ぎ対象の通信アドレスを引き継いだ際に管理する応答・中継設定情報211のうちの中継情報の例を示す図である。中継情報には、引き継ぎ元と、その引き継ぎ元と連携先装置とが行う通信データパターン(図12の例では、中継データパターンと表記されている)とが関連付けられて登録される。中継情報は、引き継ぎ元の連携先情報172における通信データパターンに関する部分の複製であり、通信機能部201等を介してダミーコントローラ200に記憶される。
応答・中継機能部202は、引き継ぎ対象の通信アドレス宛ての通信データを受信した場合に当該通信データによる通信が適切であるか否かを判断し、その通信が適切である場合、当該通信データを引き継ぎ元(コントローラ160A)へ転送する中継手段である。応答・中継機能部202は、応答・中継設定情報211の中継情報を参照して通信の適否を判断し、応答・中継設定情報211の引き継ぎ元情報を参照して通信データを転送する。
次に本実施形態の動作について説明する。
図13は、コントローラ160Aの動作を示すフローチャートである。図13に示す動作は、ステップS108に代えてステップS108aが行われ、ステップS111に代えてステップS111aが行われ、ステップS113に代えてステップS113aが行われる点およびステップS109が行われない点において図6に示す動作と異なる。図13を参照して、第1実施形態と異なる点を中心にコントローラ160Aの動作を説明する。
本実施形態のステップS102では、仮想アドレス処理機能部163Aは、ステップS101において作成した仮想IPアドレスおよび仮想MACアドレスを連携先装置(エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)とダミーコントローラ200に通知する。ステップS104において、受信した通信データにおける送信先アドレスがコントローラ160Aの仮想IPアドレス/仮想MACアドレスである場合(ステップS104:Yes)、通信データ検査機能部164Aとして機能しているコントローラ160AのCPUは、ステップS108a以降の処理を行う。
ステップS108aにおいて、通信データ検査機能部164Aは、受信した通信データがダミーコントローラ200を経由して到達したものであるか否かを判断する。具体的には、通信データ検査機能部164Aは、当該通信データにおける送信元アドレスが、ダミーコントローラ200に引き継いだ引き継ぎ対象の仮想IPアドレス/仮想MACアドレスであるか否かを判断する。ここで、コントローラ160Aの記憶装置170には、ダミーコントローラ200へ引き継いだ引き継ぎ対象の仮想IPアドレス/仮想MACアドレスが記憶されている。通信データ検査機能部164Aは、当該通信データにおける送信元アドレスが記憶装置170に記憶された引き継ぎ対象の仮想IPアドレス/仮想MACアドレスと一致するか否かによりステップS108aの判断を行う。記憶装置170に複数の引き継ぎ対象の仮想IPアドレス/仮想MACアドレスが記憶されている場合には、通信データ検査機能部164Aは、当該送信元アドレスが当該複数の引き継ぎ対象の仮想IPアドレス/仮想MACアドレスのうちのいずれかと一致するか否かを判断すれば良い。
受信した通信データがダミーコントローラ200を経由して到達したものである場合(具体的には、送信元アドレスが引き継ぎ対象の仮想IPアドレス/仮想MACアドレスと一致する場合)(ステップS108a:Yes)、コントローラ160AのCPUは、通信データ検査機能部164Aとしての動作を終了し、当該通信データに基づく処理を実行する(ステップS107)。ダミーコントローラ200を経由して送られた通信データは、後に詳述するが、その通信データによる通信が適切であることがダミーコントローラ200において既に判断済だからである。
受信した通信データがダミーコントローラ200を経由して到達したものではない場合(具体的には、送信元アドレスが引き継ぎ対象の仮想IPアドレス/仮想MACアドレスと一致しない場合)(ステップS108a:No)、コントローラ160AのCPUは、引き続き通信データ検査機能部164Aとして動作し、当該通信データによる通信が適切であるか否かを判断する処理(ステップS110)に進む。ステップS110以降の処理を行うのは、受信した通信データがダミーコントローラ200を経由して到達した通信データではない場合には、最新の仮想IPアドレス/仮想MACアドレス宛ての通信データであったとしても、通信が適切であるか否かの判断が為されていない通信データであるため、その通信データによる通信が不正な通信である可能性があるからである。
また、引き継ぎ対象の仮想IPアドレス/仮想MACアドレスが決定されていない初期状態では、引き継ぎ対象の仮想IPアドレス/仮想MACアドレスが記憶装置170に記憶されていない。このような初期状態におけるステップS108aでは、通信データ検査機能部164Aは、受信した通信データはダミーコントローラ200を経由して到達したものではないと判断すれば良い(ステップS108a:No)。
本実施形態のステップS110の処理では、通信データ検査機能部164Aは、第1実施形態と同様にして通信データの通信内容が適切であるか否かを判断するのに加え、受信した通信データによる通信の通信頻度が適切であるか否かを判断するのが好ましい。例えば、通信データ検査機能部164Aは、受信した通信データにより実行を要求された処理の内容を示すデータや送信元アドレスをレジスタに格納し、以降、単位時間当たりの当該処理の要求回数や当該送信元アドレスからのアクセス数をカウントアップする。そして、通信データ検査機能部164Aは、単位時間当たりの当該処理の要求回数や当該送信元アドレスからのアクセス数が閾値以上であるか否かを判断する。通信データ検査機能部164Aは、閾値以上である場合、通信頻度が適切ではなく、上記通信データによる通信は適切ではないと判断する。
ステップS110において、受信した通信データによる通信が不適切である場合(ステップS110:No)、通信データ検査機能部164Aとして動作しているコントローラ160AのCPUは、仮想アドレス処理機能部163Aとしての動作を開始してステップS111a以降の処理を行う。
ステップS111aにおいて、仮想アドレス処理機能部163Aは、受信した通信データにおける送信先アドレス(仮想IPアドレス/仮想MACアドレス)を引き継ぎ対象の通信アドレス(仮想IPアドレス/仮想MACアドレス)に決定し、その情報を記憶装置170に記憶する。ステップS111aに後続して、仮想アドレス処理機能部163Aは、新たな仮想IPアドレス/新たな仮想MACアドレスを作成する(ステップS112)。
次に、仮想アドレス処理機能部163Aは、ステップS112において作成した新たな仮想IPアドレス/新たな仮想MACアドレスをダミーコントローラ200および連携先装置(エンジニアリングステーション100、データベースステーション120およびオペレータステーション140)に通知するとともに、ステップS111aで決定した引き継ぎ対象の仮想IPアドレス/仮想MACアドレスをダミーコントローラ200に送り、当該引き継ぎ対象の仮想IPアドレス/仮想MACアドレスをダミーコントローラ200に引き継がせる(ステップS113a)。具体的には、仮想アドレス処理機能部163Aは、ダミーコントローラ200の実IPアドレス/実MACアドレスを送信先アドレスとし、コントローラ160Aの新たな仮想IPアドレス/仮想MACアドレスと引き継ぎ対象の仮想IPアドレス/仮想MACアドレスとをペイロードに格納した引き継ぎ要求を示す通信フレームをダミーコントローラ200に送信する。この際、仮想アドレス処理機能部163Aは、ダミーコントローラ200がコントローラ160Aに転送すべき通信データに関する情報(すなわち、コントローラ160Aと連携先装置とが行う通信データパターン)もダミーコントローラ200に送信する。仮想アドレス処理機能部163Aは、引き継ぎ要求に対する引き継ぎの完了(すなわち、引き継ぎ対象の通信アドレスがダミーコントローラ200において受信対象の通信アドレスとして登録されたこと)を表す応答をダミーコントローラ200から受け取ると、通信機能部161が自装置の実IPアドレス/実MACアドレス宛ての通信データと新たな仮想IPアドレス/新たな仮想MACアドレス宛ての通信データとを受信し、引き継ぎ対象の仮想IPアドレス/仮想MACアドレス宛ての通信データを受信しないように通信機能部161の設定変更を行う。この結果、以後、コントローラ160Aは、不正な通信が疑われる通信に用いられてダミーコントローラ200に引き継いだ仮想IPアドレス/仮想MACアドレス宛ての通信データを受信しないようになる。その後、コントローラ160AのCPUは、仮想アドレス処理機能部163Aとしての動作を終了し、当該通信データに基づく処理(ステップS107)の実行後、ステップS103に戻る。
以上が、コントローラ160Aの動作である。連携先装置の動作は、第1実施形態と同様である。次に、ダミーコントローラ200の動作を説明する。
図14は、ダミーコントローラ200の動作を示すフローチャートである。ダミーコントローラ200の電源が投入されると(またはダミーコントローラ200が再起動されると)、ダミーコントローラ200のCPUは、自装置宛ての通信データを受信するまで待機する(ステップS401)。通信機能部201がダミーコントローラ200宛の通信データを受信すると、ダミーコントローラ200のCPUは、通信データ検査機能部204として動作を開始し、ステップS402以降の処理を実行する。ダミーコントローラ200においてもコントローラ160Aと同様に、プロトコル階層毎に各処理を行う。
まず、通信データ検査機能部204は、受信した通信データにおける送信先アドレスが、コントローラ160Aから引き継いだ仮想IPアドレス/仮想MACアドレスであるか否かを判断する(ステップS402)。ダミーコントローラ200が通信データを受信するのは、その通信データの送信先アドレスがダミーコントローラ200の実IPアドレス/実MACアドレスである場合、または、引き継ぎ元であるコントローラ160Aから引き継いだ仮想IPアドレス/仮想MACアドレスである場合である。前者の場合、ステップS402の判断結果は「No」となり、後者の場合、ステップS402の判断結果は「Yes」となる。コントローラ160Aから仮想IPアドレス/仮想MACアドレスを引き継いでいない状態では、ダミーコントローラ200は、実IPアドレス/実MACアドレス宛ての通信データを受信することとなり、ステップS402の判断結果は「No」となる。実IPアドレス/実MACアドレス宛ての通信データの一例としては、コントローラ160Aから送られる引き継ぎ要求を示す通信フレームが挙げられる。
ステップS402の判断結果が「No」の場合、通信データ検査機能部204は、当該通信データが引き継ぎ要求を示す通信フレームであるか否かを判断する(ステップS403)。当該通信データが引き継ぎ要求を示す通信フレームではない場合(ステップS403:No)、通信データ検査機能部204は、当該通信データを破棄する(ステップS406)。これにより、ダミーコントローラ200の実IPアドレス/実MACアドレス宛てに不正な通信がなされたとしても、その不正な通信による処理は実行されない。
当該通信データが引き継ぎ要求を示す通信フレームである場合(ステップS403:Yes)、ダミーコントローラ200のCPUは、仮想アドレス処理機能部203として動作を開始してステップS404以降の処理を実行する。
ステップS404において、仮想アドレス処理機能部203は、応答・中継設定情報211の引き継ぎ元情報を作成して記憶装置210に記憶する。具体的には、仮想アドレス処理機能部203は、引き継ぎ要求を示す通信フレームに格納された引き継ぎ元であるコントローラ160Aの最新の仮想IPアドレス/仮想MACアドレスと、当該通信フレームに格納された引き継ぎ対象の仮想IPアドレス/仮想MACアドレスとを関連付けて引き継ぎ元情報に登録する。その後、仮想アドレス処理機能部203は、ダミーコントローラ200の実IPアドレス/実MACアドレス宛ての通信データと、引き継ぎ元情報に登録された引き継ぎ対象の仮想IPアドレス/仮想MACアドレス宛ての通信データとを通信機能部201が受信するように通信機能部201の設定変更を行う。
ステップS404に後続するステップS405では、仮想アドレス処理機能部203は、応答・中継設定情報211の中継情報を作成して記憶装置210に記憶する。具体的には、仮想アドレス処理機能部203は、コントローラ160Aから送信されたコントローラ160Aに転送すべき通信データに関する情報を中継情報に登録する。この結果、ダミーコントローラ200は、コントローラ160Aが受信すべき通信データについての通信内容の適否の判断をコントローラ160Aに代わって行うことができるようになる。その後、ダミーコントローラ200のCPUは、仮想アドレス処理機能部203としての動作を終了し、ステップS401の処理に戻る。
ステップS402において、受信した通信データにおける送信先アドレスがコントローラ160Aから引き継いだ仮想IPアドレス/仮想MACアドレスである場合(ステップS402:Yes)、ダミーコントローラ200は、応答・中継機能部202として動作を開始し、ステップS407以降の処理を実行する。
ステップS407において、応答・中継機能部202は、受信した通信データが中継すべき通信データであるか否かを判断する。ステップS407では、応答・中継機能部202は、コントローラ160AにおけるステップS110と同様の処理を行えば良い。具体的には、応答・中継機能部202は、受信した通信データの通信内容が適切な内容であるか否かを応答・中継設定情報211の中継情報を参照して判断したり、受信した通信データの送信元からの通信頻度が適切であるか否かを判断したりする。当該通信データの通信内容および通信頻度が適切である場合に、応答・中継機能部202は、当該通信データは中継すべき通信データであると判断する。
受信した通信データが中継すべき通信データである場合(すなわち、当該通信データの通信内容および通信頻度が適切である場合)(ステップS407:Yes)、応答・中継機能部202は、当該通信データを引き継ぎ元であるコントローラ160Aに転送する(ステップS408)。これにより、制御ネットワーク180において、コントローラ160Aにおける最新ではない仮想IPアドレス/仮想MACアドレス宛てに送信された通信データのうち連携先装置から送信された正規な通信データが、ダミーコントローラ200を経由してコントローラ160Aへ送られる。また、応答・中継機能部202は、ステップS407において通信データをコントローラ160Aに転送する際、転送する通信データの送信元アドレスをコントローラ160Aから引き継いだ仮想IPアドレス/仮想MACアドレスにする。これにより、コントローラ160Aは、受信した通信データがダミーコントローラ200を経由して到達した通信データであることを知ることができる(ステップS108a参照)。ステップS408の後、ダミーコントローラ200のCPUは、応答・中継機能部202としての動作を終了し、ステップS401の処理に戻る。
ステップS407において、受信した通信データが中継すべき通信データではない場合(すなわち、当該通信データの通信内容および通信頻度が不適切である場合)(ステップS407:No)、応答・中継機能部202は、当該通信データを破棄する(ステップS406)。この結果、コントローラ160Aから引き継がれた仮想IPアドレス/仮想MACアドレス宛てに正規な通信データとは異なる通信データが送られたとしても、その通信データに基づいた処理は実行されない。ステップS406の後、ダミーコントローラ200のCPUは、応答・中継機能部202としての動作を終了し、ステップS401の処理に戻る。
以上がダミーコントローラ200の動作である。
本実施形態のコントローラ160Aは、ステップS101において、自装置の受信対象となる新たな仮想IPアドレス/仮想MACアドレスを予め作成し、ステップS104において、受信した通信データにおける送信先アドレスが仮想IPアドレス/仮想MACアドレスではない場合、すなわち、実IPアドレス/実MACアドレスである場合、通信データによる通信は不正な通信であると判断する点においては、第1実施形態のコントローラ160と同様である。従って、コントローラ160Aによれば、第1実施形態と同様に、制御システム500SA内における不正な通信を検知することができる。
また、本実施形態のコントローラ160Aは、受信した通信データによる通信が適切ではない場合、通信データにおける送信先アドレス(仮想IPアドレス/仮想MACアドレス)をダミーコントローラ200の受信対象となる仮想IPアドレス/仮想MACアドレスとしてダミーコントローラ200に引き継がせる引き継ぎ対象の仮想IPアドレス/仮想MACアドレスに決定する。コントローラ160Aは、コントローラ160Aの受信対象となる新たな仮想IPアドレス/仮想MACアドレスを作成し、作成した新たな仮想IPアドレス/仮想MACアドレスをダミーコントローラ200および連携先装置に通知するとともに、引き継ぎ対象の仮想IPアドレス/仮想MACアドレスをダミーコントローラ200に送信して引き継がせる。これにより、制御システム500SAでは、ダミーコントローラ200がコントローラ160Aに代えて当該引き継ぎ対象の仮想IPアドレス/仮想MACアドレス宛ての通信データを受信する。コントローラ160Aは、引き継ぎ対象の仮想IPアドレス/仮想MACアドレスをダミーコントローラ200へ引き継いだ後には、当該引き継ぎ対象の仮想IPアドレス/仮想MACアドレス宛ての通信を受信しない。このため、制御システム500SAによれば、不正な通信を検知した以後、当該不正な通信と同じ通信アドレス宛ての再度の不正な通信による脅威からコントローラ160Aを守ることができる。具体的には、制御システム500SAによれば、DoS攻撃やDDoS攻撃からコントローラ160Aを保護することができ、DoS攻撃やDDoS攻撃によってコントローラ160Aのリソースが無駄に消費される可能性を減らすことができる。
また、コントローラ160Aの通信データ検査機能部164Aは、通信データの通信頻度が適切であるか否かをも判断するため、通信内容からは判断することができないような不正な通信を検知することができる。このため、制御システム500SAによれば、DoS攻撃やDDoS攻撃がSYNフラッドのような通信内容には何ら問題のない攻撃であったとしても、その不正な通信を検知し、コントローラ160Aのリソースが無駄に消費される可能性を減らすことができる。
また、本実施形態の制御システム500SAは、ダミーコントローラ200を有する。ダミーコントローラ200は、コントローラ160Aから引き継いだ引き継ぎ対象の仮想IPアドレス/仮想MACアドレス宛ての通信データを受信し、当該通信データによる通信が適切である場合、当該通信データを引き継ぎ元であるコントローラ160Aへ転送する中継手段を有する。制御システム500SAによれば、連携先装置においてコントローラ160Aの最新の通信アドレスの登録漏れがあり、連携先装置が最新ではない通信アドレス宛てに正規な通信データを送信したとしても、コントローラ160Aは、ダミーコントローラ200を経由してその通信データを受け取ることができる。
また、本実施形態のコントローラ160Aは、受信した通信データがダミーコントローラ200を経由して到達したものであるか否かを判断し、ダミーコントローラ200を経由して到達したものである場合には、当該通信データに基づく処理を実行する。これにより、コントローラ160Aは、受信対象であった仮想IPアドレス/仮想MACアドレスをダミーコントローラ200に引き継いだ後においても、引き継ぎ前に受信対象であった仮想IPアドレス/仮想MACアドレス宛ての正規な通信データを正常に処理することができる。従って、制御システム500SAによれば、連携先装置から最新ではない通信アドレス宛てに重要な通信データが送信されたとしても、コントローラ160Aは、その重要な通信データを正常に処理することができる。
また、ダミーコントローラ200は、コントローラ160Aとは異なり、制御対象機器の制御および計測機器による計測を行わない。このため、ダミーコントローラ200は、コントローラ160Aよりも余裕のあるリソースを用いて通信データの解析(例えば応答・中継機能部202による処理)を行うことができる。従って、ダミーコントローラ200がDoS攻撃やDDoS攻撃を受けたとしても、ダミーコントローラ200のリソースが枯渇する可能性は少なく、制御対象機器の制御等への影響もない。
また、制御システム500SAでは、仮想IPアドレス/仮想MACアドレスをダミーコントローラ200に引き継がせることで、通信データの解析をコントローラ160Aとダミーコントローラ200とに分散させる。このため、制御システム500SAによれば、第1実施形態のコントローラ160に比べ、コントローラ160Aにおける通信データの解析に関する処理負荷を減らすことができる。
<第2実施形態の変形例>
本実施形態においても、上記第1実施形態と同様な変形例の実施が可能である。
また、本実施形態では、特に以下の変形例が考えられる。
(1)制御システム500SAでは、仮想IPアドレス/仮想MACアドレス宛てにDoS攻撃やDDoS攻撃のような不正な通信が行われたことを検知することができる。しかし、コントローラ160Aの実IPアドレス/実MACアドレス宛てやダミーコントローラ200の実IPアドレス/実MACアドレス宛てにDoS攻撃やDDoS攻撃を受けた場合には、その攻撃を検知できない虞もある。そこで、コントローラ160Aおよびダミーコントローラ200は、受信した通信データにおける送信先アドレスが実IPアドレス/実MACアドレスであった場合(ステップS104:No、ステップS402:No)においても、通信データの通信頻度が適切であるか否かの判断を行っても良い。この態様によれば、実IPアドレス/実MACアドレス宛てにDoS攻撃やDDoS攻撃が行われたことを検知することができる。
(2)コントローラ160Aは、最初の仮想IPアドレス/仮想MACアドレスを連携先装置へ通知(ステップS102)してから所定時間の経過後に受信した通信データの送信先アドレスがコントローラ160Aの実IPアドレス/実MACアドレスであった場合、当該通信データを破棄しても良い。この態様によれば、最初の仮想IPアドレス/仮想MACアドレスの連携先装置における登録漏れに対する救済を考慮しつつ、実IPアドレス/実MACアドレス宛てのDoS攻撃やDDoS攻撃からコントローラ160Aを守ることができる。
(3)本実施形態の制御システム500SAを待機冗長方式の制御システムに適用し、稼働系のコントローラをコントローラ160Aとして動作させ、待機系のコントローラをダミーコントローラ200として動作させても良い。
<第1および第2実施形態の両方の変形例>
各実施形態において、仮想アドレス処理機能部163(163A)および通信データ検査機能部164(164A)は、コントローラ160(160A)のCPUがプログラムを実行することにより実現されていた。しかし、仮想アドレス処理機能部163(163A)および通信データ検査機能部164(164A)を電子回路などによって構成しても良い。