(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年では、制御システムにおけるネットワーク機器を汎用製品に置き換えたり、通信プロトコルをTCP/IPなどの汎用通信プロトコルに置き換え(或いは専用プロトコルと汎用プロトコルを併用し)たりするなど、制御システムのオープン・システム化がさらに進んでいる。その結果、制御システム内部のTCPに準拠した通信により、制御システム内の制御装置に対して各種の攻撃が加えられるケースが見受けられるようになってきた。この種の攻撃の一例としては、所謂SYNフラッド攻撃や、送信元アドレスを制御装置の通信アドレスに書き換えたSYNメッセージをPLCに与えることでハンドシェーク処理を制御装置に際限なく実行させること、実際のデータ長よりも小さいデータ長を設定したパケットを制御装置に与えて当該パケットの記憶の際にメモリ破壊を発生させることなどが挙げられる。
【0007】
ファイアウォールやIDS、IPSといった、外部のネットワークと制御システムの境界を遮断する技術では、制御システム内で発生する通信について検査や遮断を行うことができず、制御システム内の機器からの制御装置に対する攻撃を防ぐことはできない。
【0008】
特許文献1には、制御システム内における接続機器間のネットワークである制御系ネットワークを監視し、問題が生じると制御系ネットワークとその接続機器との接続を遮断することで、制御システム内の接続機器の保護を図る技術が開示されている。特許文献1に開示の技術では、制御系ネットワークと接続機器との通信を、あらかじめ設けた構成管理データベース、解析エンジンおよびセキュリティゲートウェイを用いて検査し、制御系ネットワークと接続機器の通信に異常が認められると、その通信は遮断されるのである。特許文献1に開示の技術によれば、制御システム内の機器からの制御装置に対する攻撃を防御することが可能ではあるが、制御システムには一般に多数の制御装置が含まれており、その各々に対して特許文献1に開示の技術を適用することは煩雑であり、設置費用が高額になるという問題がある。さらに、特許文献1には、接続機器の制御系ネットワークからの遮断をどのようにして実現するのかについて具体的な仕組みが開示されていないといった問題もある。
【0009】
この発明は、以上説明した事情に鑑みてなされたものであり、その目的は、制御システムに含まれる制御装置に対する制御系ネットワーク経由の攻撃に対する耐性を、少ない費用で簡便に高めることを可能にする技術を提供することにある。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明は、機器を制御する制御装置(前述したPLC或いはDCS)の通信検査モジュールであって、以下の通信データ検査部を有する通信検査モジュールを提供する。この通信データ検査部は、ネットワークから受信した通信データについて予め定められた通信禁止条件を満たすか否かを判定し、当該通信禁止条件を満たした場合に通信不可と判定する。そして、本発明の通信検査モジュールは、ネットワークから受信した通信データのうち、通信データ検査部により通信不可と判定された通信データを破棄する。なお、機器を制御する制御装置にネットワークとの通信データの送受信を行わせるための通信モジュール(すなわち、ネットワークとの間で通信データの送受信を行うモジュール)に上記通信データ検査部を設け、ネットワークから受信した通信データのうち、通信データ検査部により通信不可と判定された通信データを破棄する処理を当該通信モジュールに実行させても良い。
【0011】
制御システムに含まれる制御装置に本発明の通信検査モジュール或いは通信モジュールを設けることで、通信を禁止された通信データが他のモジュールに与えられないようにすることができ、このような通信データに起因する異常動作の発生を確実に回避することができる。この種の制御装置は、各々固有の機能を有する機能モジュールのうちの必要なものを当該制御装置のベースボードに装着するモジュール構成となっていることが一般的である。このため、本発明によれば、制御装置に装着されている既存の通信モジュールに代えて本発明の通信モジュールを装着すること、或いは既存の通信モジュールの他に上記通信検査モジュールを装着することで、通信データの検査を行えるようになり、構成管理データベース、解析エンジンおよびセキュリティゲートウェイを制御装置毎に設ける場合(或いは制御装置毎にファイアウォール等を設ける場合)に比較して、制御系ネットワーク経由の攻撃に対する制御装置の耐性を少ない費用で簡便に高めることが可能になる。
【0012】
より好ましい態様においては、上記通信検査モジュール(或いは通信モジュール)は、前記ネットワークからの通信データの受信履歴を表すデータを生成する通信記録作成部と、前記通信記録作成部により生成されたデータを記憶する通信記録部と、をさらに有することを特徴とする。このような態様によれば、通信記録部に記録されている受信履歴を調べることで、通信を禁止されていないにも拘らず、何らかの異常動作を発生させた通信データを突き止めることが可能になる。
【0013】
さらに好ましい態様においては、前記通信記録作成部は、前記ネットワークから受信した通信データをその内容、送信先、送信元に応じてパターン分類してパターン毎にそのパターンを示す識別子を割り当て、前記ネットワークから受信した通信データの属するパターンを示す識別子と当該通信データの受信日時および当該通信データについての前記通信データ検査部による検査結果を表すデータとを対応付けて前記受信履歴を表すデータを生成し、前記通信記録部に書き込むことを特徴とする。一般に制御システムにおいて制御装置が実行する通信は、その通信相手や内容が定型的であることが多く、上記パターンの数はさほど多くはない。このような態様によれば、通信データの内容(例えば、当該通信データがパケットであれば、そのペイロード部)、送信元、送信先、受信日時、および上記検査結果の各々を表すデータを受信順にそのまま通信記録部に書き込む場合に比較して、通信記録部の記憶容量を節約することが可能になる。
【0014】
より好ましい態様としては、以下の優先度設定手段と削除手段とを通信記録作成部に設ける態様が考えられる。優先度設定手段は、新たな受信履歴を前記通信記録部に書き込む際に当該受信履歴の優先度を設定するとともに、前記通信記録部への書き込みが行われてからの経過時間が長い受信履歴ほど優先度が低くなるように前記通信記録部に記録されている各受信履歴の優先度を設定し直す。加えて、優先度設定手段は、前記通信記録部への書き込みが行われてから予め定められた閾値時間が経過する前の正常な通信の受信履歴の優先度が当該閾値時間を経過した異常な通信の受信履歴の優先度よりも高くなるように、各受信履歴の優先度を設定する。そして、削除手段は、前記優先度設定手段により設定された優先度の低い順に所定個数の受信履歴を前記通信記録部から削除する。このような態様によれば、通信データの受信から上記予め定められた期間(上記閾値時間分の時間長の期間)が経過していない通信についての受信履歴が削除されることが回避され、通信データ検査部により通信可と判定されたのかそれとも通信不可と判定されたのかを問わずに直近に行われた通信の状況を制御システムの運用管理者に把握させることが可能になる。なお、異常な通信の受信履歴についてはその異常の内容に応じて優先度を設定するとともに、予め定められた異常の内容の受信履歴に関しては、前記通信記録部への書き込みが行われてからの経過時間が前記閾値時間を上回っていても、前記閾値時間が経過する前の正常な通信の受信履歴よりも高い優先度を設定するようにしても良い。例えば、発生させた障害の程度が重いほど上記優先度を高く、上記閾値時間が経過する前の正常な通信の受信履歴よりも高い優先度を設定することで、重大な障害を発生させた通信の受信履歴ほど削除され難くすることができるからである。
【0015】
さらに好ましい別の態様においては、前記通信記録作成部は、前記ネットワークから受信した通信データのパターン毎に前記識別子と当該パターンの最新の発生日時を表すデータとを含む通信データ記録データを生成して前記通信記録部に記憶させる。このような態様によれば、異常動作発生時の原因追究がさらに容易になる。なお、上記通信データ記録データに、通信データを表すデータ(例えば、通信データそのもの)を含めても良く、上記識別子に当該データの役割を兼ねさせても良い。例えば、上記識別子として、通信データそのもの(或いは、送信先、送信元およびペイロード部)を所定のハッシュ関数に入力して得られるハッシュ値を用いるといった具合である。なお、前記通信記録部の記憶容量に空きがない場合には、通信可とされたパターンよりも通信不可とされたパターンの優先度が高くなり、かつ最新の発生日時が新しいパターンほど優先度が高くなるように優先度を設定する処理を優先度設定手段に実行させ、最も優先度の低いパターンの通信データ記録データを上記削除手段によって削除して記憶容量を確保した後に、新たな通信データ記録データを通信記録部に書き込む処理を通信記録作成部に実行させるようにしても良い。このような態様によれば、通信不可とされたパターンの通信データ記録データほど削除され難くなるからである。
【0016】
さらに好ましい態様においては、上記通信検査モジュール(或いは上記通信モジュール)は、制御装置の有する他のモジュールの少なくとも1つを監視対象モジュールとして動作状態の監視を行うとともに、異常動作を検知された場合に、異常動作を行った監視対象モジュールを示すデータと当該異常動作を発生させた通信データを表すデータとを対応付けて異常通信記録データを生成し、通信記録部に書き込むモジュール状態監視部を有し、前記通信データ検査部は、前記ネットワークから受信した通信データを表す異常通信記録データが通信記録部に記録されている場合には、通信不可と判定することを特徴とする。このような態様によれば、通信を禁止されていない通信データによって何らかの異常動作が発生した場合であっても、以後同様の通信データによって同様の異常動作が発生することを回避することができる。
【0017】
上記課題を解決するための本発明の別の態様としては、上記各通信検査モジュールの何れか、或いは上記各通信モジュールの何れかを有する制御装置を提供する態様が考えられる。
【発明の効果】
【0018】
以上説明したように、本発明によれば、制御システムに含まれる制御装置の制御系ネットワーク経由の攻撃に対する耐性を、少ない費用で簡便に高めることが可能になる。
【発明を実施するための形態】
【0020】
以下、図面を参照しつつこの発明の実施形態について説明する。
図1は、この発明の制御装置の一実施形態のPLC121を含む制御システム100の構成を示すブロック図である。制御システム100は、工場等の産業施設に設置されたアクチュエータ123の作動制御や同施設内に設置されたセンサ122からのデータ収集を行い、同施設における操業を支援するためのものである。
図1に示すように、制御システム100は、ゲートウェイ装置111、制御用サーバ112、エンジニアリング装置113、制御系ネットワーク102およびPLC121を含んでいる。
【0021】
ゲートウェイ装置111は、例えばインターネットなど外部ネットワークであるネットワーク101に制御システム100を接続するためのものである。ゲートウェイ装置111は、ネットワーク101に接続されているとともに制御系ネットワーク102に接続されている。ゲートウェイ装置111は、ネットワーク101から送信されてくる通信データを受信し、必要に応じてプロトコル変換を施して制御系ネットワーク102に送信する。本実施形態では、制御システム100が外部ネットワークに接続されている場合について説明するが、外部ネットワークに接続されない閉じたネットワークとしても良く、この場合は、ゲートウェイ装置111を省略することができる。逆に、ゲートウェイ装置111を複数設置し、これら各ゲートウェイ装置を介して複数の外部ネットワークに制御システム100を接続する態様もとりうる。
【0022】
制御系ネットワーク102には、制御用サーバ112、エンジニアリング装置113およびPLC121が接続されている。制御系ネットワーク102は各機器間の通信を媒介する。本実施形態では、制御系ネットワーク102を介してFL−netなど制御システム専用の通信プロトコルに従ったデータ通信と、TCPなどの汎用通信プロトコルに従ったデータ通信の両方を行うことができる。
【0023】
制御用サーバ112は、制御システム100の運用管理者により与えられた指令に従い、制御システム100内の各機器からの情報収集を行うとともにそれらの機器に各種指令を与える。例えば、制御用サーバ112は、制御系ネットワーク102を介してPLC121から計測値を取得する一方、PLC121に対して制御指令を与える。エンジニアリング装置113は、パソコン等の外部入力・監視装置である。制御システム100の運用管理者は、エンジニアリング装置113を用いて制御システム100内の他の機器の設定や、それら機器の稼働状態の監視を行う。例えば、制御系ネットワーク102を介してPLC121に対してプログラムのダウンロードや設定を行い、さらにPLC121の動作の監視を行う。本実施形態では、制御システム100に制御用サーバ112およびエンジニアリング装置113が含まれる場合について説明するが、これら各機器が外部ネットワークに接続されている態様や、これら各機器が元々存在しない態様も考えられる。
【0024】
PLC121には、センサ122とアクチュエータ123が接続されている。PLC121は、設定されたプログラムや制御系ネットワーク102から送信されてくる通信データに基づいてセンサ122やアクチュエータ123の作動制御を行う。なお、PLC121に接続されたセンサ122やアクチュエータ123は一例であり、他の外部機器がPLC121に接続された態様をとってもよい。
【0025】
PLC121は、CPUモジュールや、アナログまたはデジタルの入出力モジュール、Ethernet(登録商標)インターフェースやFL−netインターフェースとして機能する通信モジュールといった各々固有の機能を有するモジュールのうちから必要な機能を有するものをベースボードに装着して構成されるモジュール構成となっている。
図2は、PLC121の構成を示すブロック図である。PLC121は、一般的な制御システムにおける従来のPLCと同様に、通信モジュール201と演算・入出力モジュール231とを有している。加えて、本実施形態のPLC121は、通信検査モジュール211を有しており、この点に本実施形態の特徴がある。PLC121を構成する各モジュールの役割は以下の通りである。
【0026】
通信モジュール201は、制御系ネットワーク102との間で通信データの送受信を行うためのものである。通信モジュール201は、
図2に示すように、通信インターフェース202と、通信部203とを有する。通信インターフェース202は、制御系ネットワーク102と通信検査モジュール211に接続されている。通信部203は通信検査モジュール211と演算・入出力モジュール231に接続されている。
【0027】
通信インターフェース202は、Ethernet(登録商標)インターフェースやFL−netインターフェースであり、制御系ネットワーク102との通信データの授受を行う。通信インターフェース202は、制御系ネットワーク102から送信されてくるデータを受信し、通信検査モジュール211に与える。詳細については後述するが、通信検査モジュール211は通信インターフェース202から与えられた通信データの検査およびその検査結果の記録を行い、検査の結果、通信可と判定した通信データを通信部203に与える。
【0028】
通信部203は、通信検査モジュール211から受け取った通信データを解析し、SYNメッセージ等の通信制御に関する通信データであれば、その通信データにしたがった通信制御(例えば、通信コネクションの確立等)を行い、制御用サーバ112から与えられた指令等(TCPやFL−netよりも上位階層のデータ)であれば演算・入出力モジュール231に与える。
【0029】
通信検査モジュール211は、通信インターフェース202から与えられた通信データに関して記録や検査を行い、通信不可との検査結果が得られた場合には、当該通信データを破棄する。従って、通信検査モジュール211により通信不可と判定された通信データが通信部203やさらに後段の演算・入出力モジュール231に与えられることはない。
図2に示すように、通信検査モジュール211は、通信データ検査部212、通信記録作成部213、モジュール状態監視部214、通信許可・禁止条件記録部221、異常通信記録部222および通信記録部223を有している。通信検査モジュール211を構成する各部のうち、通信データ検査部212、通信記録作成部213、およびモジュール状態監視部214はCPUをソフトウェアにしたがって作動させることにより実現されている。一方、通信許可・禁止条件記録部221、異常通信記録部222および通信記録部223は不揮発性メモリ等により構成されている。なお、通信データ検査部212、通信記録作成部213およびモジュール状態監視部214の各部を電子回路などのハードウェアで構成しても勿論良い。これら各部の役割は以下の通りである。
【0030】
通信データ検査部212は、通信許可・禁止条件記録部221に予め記憶されている通信許可・禁止条件テーブルと異常通信記録部222に記憶されている異常通信記録データを参照して通信インターフェース202から受け取った通信データを検査し、当該検査結果を表す検査結果データと当該通信データとを通信記録作成部213に与える。
【0031】
通信許可・禁止条件テーブルには、制御系ネットワーク102から送信されてくる通信データのうちPLC121との通信を許可する通信データの条件である通信許可条件を表すデータと、同通信を禁止する通信データの条件である通信禁止条件を表すデータが格納されている。本実施形態において、これら通信許可条件および通信禁止条件は制御システム100の運用管理者によって予め定められている。これら通信許可条件および通信禁止条件の具体例については後に明らかにする。本実施形態では、通信データ検査部212は、通信インターフェース202から与えられた通信データが通信禁止条件を満たした場合に当該通信データについて通信不可と判定する。これに対して、通信インターフェース202から与えられた通信データが通信許可条件を満たした場合には通信データ検査部212は当該通信データについて通信可と判定する。PLC121に対する不正アクセスの防止という観点から見れば、通信禁止条件だけを定めれば良いように見えるが、必須の通信が誤って禁止されないようにするための通信許可条件を定めるのである。
【0032】
異常通信記録部222に記憶されている異常通信記録データは、通信許可条件を満たしたものの異常動作を発生させた通信データ、或いは通信禁止条件を満たさなかったものの異常動作を発生させた通信データの内容、その送信元および送信先を示すデータである。異常通信記録部222は、データの書き換えが可能な不揮発性メモリであり、この異常通信記録データを記憶するためのものである。通信データ検査部212は、通信インターフェース202から与えられた通信データの内容、送信元および送信先の組み合わせが異常通信記録部222に記憶されている各異常通信記録データの表す組み合わせの何れかと一致した場合に、当該通信データについて通信不可と判定する。つまり、本実施形態では、過去に何らかの異常動作を発生させた通信データと内容、送信元および送信先が一致する通信データが再び制御系ネットワーク102から送信されてきても、その通信データは通信検査モジュール211において破棄され、同様の異常動作が引き起こされることはない。
【0033】
通信記録作成部213は、通信データ検査部212から受け取った通信データと検査結果データとから通信日時記録データと通信データ記録データとを生成し、通信記録部223に記憶させる。通信データ記録データは、通信インターフェース202により受信された通信データの内容(IPパケットであれば、そのペイロード部に格納されているデータ)、送信元および送信先の各々を表すデータである。詳細については後述するが、通信記録作成部213は、通信インターフェース202により受信された通信データをその内容、送信元および送信先に応じてパターン分類してパターン毎に固有の識別子(本実施形態では、パターン番号)を割り当て、そのパターン毎に上記識別子を含む通信データ記録データを生成する。一方、通信日時記録データは、制御系ネットワーク102からの通信データの受信履歴を表すデータである。詳細については後述するが、通信日時記録データは、通信インターフェース202による通信データの受信日時(通信日時)を表すデータとその通信データの属するパターンの識別子とその通信データについての通信データ検査部212による検査結果を表すデータと通信の結果(異常は発生しなかったのか、それとも何らかの異常が発生したのか)を示す通信結果データとを少なくとも含んでいる。なお、通信記録作成部213が通信日時記録データを生成する時点では未だ通信の結果は反映されていないため、通信記録作成部213は所定の初期値を通信結果データに設定して通信日時記録データを生成する。本実施形態では、制御系ネットワーク102からの通信データの受信履歴を表すデータとして上記通信日時記録データを用いるが、制御系ネットワーク102から受信した通信データの内容、送信元および送信先と、その受信日時と、通信データ検査部212による検査結果および通信の結果とを表すデータであれば他の形式のデータを用いても勿論良い。
【0034】
通信記録部223は、通信日時記録部224と通信データ記録部225とを有する。通信日時記録部224および通信データ記録部225は、何れもデータの書き換えが可能な不揮発性メモリである。通信日時記録部224には通信日時記録データが記憶され、通信データ記録部225には通信データ記録データが記憶される。なお、通信日時記録部224と通信データ記録部225の両者を一体とし、一つの不揮発性メモリで構成しても良い。また、異常通信記録部222と通信記録部223についても同様に両者を一体としても良い。
【0035】
モジュール状態監視部214は、通信モジュール201(より正確には通信部203)および演算・入出力モジュール231を監視対象とし、その動作状態の監視を行う。そして、異常動作が検知されなかった場合には、モジュール状態監視部214は、監視対象のモジュールに与えられた通信データに対応する通信日時記録データに含まれる通信結果データを「異常なし」を示すデータに更新する。これに対して、何らかの異常動作が検知された場合には、モジュール状態監視部214は、監視対象のモジュールに与えられた通信データに対応する通信日時記録データに含まれる通信結果データを検知した異常内容を示すデータに更新し、さらに異常通信記録データを生成して異常通信記録部222に記憶させる。
【0036】
演算・入出力モジュール231は、例えばCPUとI/Oインターフェースとからなる演算・入出力部232を有する。演算・入出力部232には、通信部203、センサ122およびアクチュエータ123が接続されている。演算・入出力部232は、通信部203から与えられた通信データにしたがってセンサ122やアクチュエータ123の作動制御を行う。
以上が、本願発明の実施形態におけるPLC121の構成である。
【0037】
次いで本実施形態の動作を図面を参照しつつ説明する。
図3は、通信検査モジュール211が実行する検査処理の流れを示すフローチャートである。PLC121は、主電源投入を契機として
図3に示す検査処理を開始(ステップS300)し、制御系ネットワーク102から送信されてくる通信データの受信を待ち受ける。PLC121は、通信データを通信インターフェース202によって受信(ステップS301)すると、ステップS302以降の処理を実行する。
【0038】
通信インターフェース202により受信された通信データは、通信データ検査部212に与えられる。通信データ検査部212は、通信インターフェース202から受け取った通信データ(以下、検査対象の通信データ)の検査を行う。より詳細に説明すると、通信データ検査部212は、まず、検査対象の通信データが通信禁止条件を満たすものであるか否かを通信許可・禁止条件テーブルを参照して判定する(ステップS302)。
【0039】
図4は、本実施形態における通信許可・通信禁止条件テーブルの一例を示す図である。
図4に示すように、通信許可・禁止条件テーブルは、リスト番号、通信データ条件および通信許可・禁止の各項目からなるレコードの集合である。リスト番号は各レコードを一意に識別する識別子である。通信データ条件は、通信を禁止または許可する通信データの条件を表すデータであり、本実施形態では、通信データの送信元、送信先および内容に関する条件である。例えば、
図4のリスト番号1のレコードは、通信データの送信元および送信先が何れであっても、モジュール異常(重故障)を1回以上発生させるような内容の通信データを通信禁止とすることを表している。また、
図4のリスト番号6のレコードは、通信データの送信元がゲートウェイ装置111で送信先がPLC121であり、データ閲覧要求を内容とする通信データについては、通信を許可することを表している。
図4に示す通信許可・禁止条件テーブルは一例であり、実施形態に従い様々な態様をとりうる。どのような通信データを通信禁止とし、或いは通信を許可するのかについては、例えば制御システム100(或いは制御システム100と同様な通信システム)の過去の運用経験等に基づいて定めるようにすれば良い。
【0040】
ステップS302の判定結果が“Yes”である場合には、通信データ検査部212は検査対象の通信データと、その通信データが満たした通信禁止条件を表すリスト番号と、通信禁止を表す検査結果データと、を通信記録作成部213に与えて記録(ステップS306)させた後に、検査対象の通信データを破棄して通信を中断し(ステップS307)、本検査処理を終了する(ステップS312)。
図4のリスト番号5のレコードは、通信データの送信元および送信先が何れもPLC121である通信データについては、その内容に拘らず通信禁止とすることを表している。このため、本実施形態では、送信元がPLC121であるかのように改竄されたSYNパケットがPLC121宛てに送信されてきても、当該SYNパケットについてのステップS302の判定結果は“Yes”となり、ステップS306およびS307の処理が実行される。したがって、上記SYNパケットが通信部203に引き渡されることはなく、このようなSYNパケットの送信による攻撃を防御することができる。
【0041】
ステップS306では、通信記録作成部213は、通信データ検査部212から与えられた各データ(検査済の通信データ、リスト番号および検査結果データ)から前述した通信日時記録データと通信データ記録データとを生成し、通信記録部223に記録させる。この記録処理の詳細については後に説明する。
図5は、通信日時記録部224に記憶されている通信日時記録データの一例を示す図であり、
図6は、通信データ記録部225に記憶されている通信データ記録データの一例を示す図である。
図5に示すように、通信日時記録データには、通信日時(検査対象であった通信データの受信日時)と、後述するパターン番号と、検査結果データと、リスト番号と、通信結果データとが含まれている。一方、通信データ記録データには、
図6に示すように、パターン番号と、検査対象であった通信データの送信元、送信先および当該通信データの内容そのものを表す各データと、パターン番号割り当て日時と、最新発生日時を表すデータとが含まれている。なお、パターン番号は、検査対象の通信データの送信元、送信先および内容の組み合わせが既登録の通信データ記録データの表す組み合わせのいずれにも該当しない時に新しく割り当てられる。なお、本実施形態では各パターンを示す識別子としてパターンの発生順にシーケンシャルに割り当てられる一連番号であるパターン番号を用いるが、各パターンに属する通信データの送信元、送信先および内容を表すデータをパターン番号の代わりに用いても良い。このようなデータの具体例としては、通信データの送信元、送信先および内容(前述したようにペイロード部)を表すデータを所定のハッシュ関数に入力して得られるハッシュ値が挙げられる。このようなハッシュ値を上記パターン番号の代わりに各パターンを示す識別子として用いる場合には、通信データ記録データに、検査対象であった通信データの送信元、送信先および当該通信データの内容そのものを表す各データを含めておく必要はなく、通信データ記録データの記憶に要する記憶容量を削減することができる。
【0042】
図3に戻って、ステップS302の判定結果が“No”である場合には、通信データ検査部212は、異常通信記録を参照して当該通信データが通信を禁止されたものであるか否かを判定する(ステップS303)。ステップS303の判定結果が“Yes”であれば、通信データ検査部212は通信禁止を示す検査結果データと検査対象の通信データとを通信記録作成部213に与えて記録(ステップS306)させた後に、検査対象の通信データを破棄して通信を中断し(ステップS307)、本検査処理を終了する(ステップS312)。一方、ステップS303の判定結果が“No”であれば、通信データ検査部212は通信許可を示す検査結果データと検査対象の通信データとを通信記録作成部213に与えて記録(ステップS304)させた後に、当該検査対象の通信データを通信部203に与える(ステップS305)。
【0043】
図8は、異常通信記録部222に記録されている異常通信記録データの一例を示す図である。
図8に示すように、異常通信記録データは、過去に監視対象のモジュールに何らかの動作異常を発生させた通信データの送信元、送信先、そのデータ内容、異常判定理由(異常の発生したモジュールおよびその異常内容)、異常発生回数および異常発生日時を表すデータである。例えば、
図8の番号1の異常通信記録データは、送信元がエンジニアリング装置113であり、かつ送信先がPLC121であって、通信モジュール201に重故障を発生させた通信データに関するものである。したがって、
図8の番号1の異常通信記録データが異常通信記録部222に記録されている状況下で、送信元がエンジニアリング装置113であり、かつ送信先がPLC121であって当該番号1のレコードに登録されているものと内容が同じ通信データが再度送信されてきたとしても、当該通信データについてのステップS303の判定結果は“Yes”になり、当該通信データが通信部203に引き渡されることはなく、上記重故障が再度発生することはない。一般に、PLCにおけるメモリ破壊を発生させる目的で実際のデータ長よりも小さいデータ長が設定された通信データを通信禁止条件で排除することは難しいが、異常通信記録データを記録し次回以降の検査に利用することで、このような通信データを的確に排除することが可能になる。
【0044】
ステップS305に後続するステップS308では、モジュール状態監視部214が、ステップS305にて通信部203に引き渡した通信データに起因して通信部203や演算・入出力部232に異常が生じていないかどうか監視する。通信部203と演算・入出力部232の何れにも異常が認められない場合(ステップS308:No)には、モジュール状態監視部214は、上記通信データに対応する通信日時記録データに含まれる通信結果を「異常なし」に更新する(ステップS309)。一方、通信部203と演算・入出力部232の何れかに異常が認められた場合(ステップS308:Yes)には、モジュール状態監視部214は、上記通信データに対応する通信日時記録データに含まれる通信結果を検出した異常内容に応じて更新し(ステップS310)、さらに、異常通信記録データを生成して異常通信記録部222に記憶させる(ステップS311)。このようにして異常通信記録部222に新たに記憶させた異常通信記録データは、今後受信する通信データについての検査処理の際に参照される。
以上が本実施形態の検査処理の流れである。
【0045】
次いで、
図3のステップS306において通信記録作成部213が実行する処理について
図7を参照しつつ説明する。
図7は、通信記録作成部213が実行する記録処理の流れを示すフローチャートである。通信記録作成部213は、通信データ検査部212から検査済の通信データとその検査結果を示す検査結果データとリスト番号とを受け取る(ステップS700)と、その通信データと同一の送信元、送信先およびデータ内容を表す通信データ記録データが通信データ記録部225に記憶されているか否かを判定する(ステップS701)。ステップS701の判定結果が“Yes”であれば、通信記録作成部213は該当する通信データ記録データのパターン番号を読み出して取得する(ステップS702)。これに対して、ステップS701の判定結果が“No”であれば、通信記録作成部213は、新たなパターン番号を生成し、上記検査済のデータに割り当てる(ステップS703)。
【0046】
次いで、通信記録作成部213は、通信日時記録部224の記憶容量に空きがあるのか否かを判定する(ステップS704)。ここで、通信日時記録部224の記憶容量の空きに関する判断基準については、PLC121稼働前に通信検査モジュール211に予め設定しておけば良い。この判断基準の具体例としては、通信日時記録部224に記憶されている通信日時記録データが一定数に達するまで空きありとすること、通信日時記録部224の記憶容量が一定サイズに達するまで空きありとすること、或いは、通信日時記録部224に通信日時記録データが記憶されてから一定期間を経過するまで空きありとすること等様々な判断基準が考えられる。通信日時記録部224の物理的構成や記憶容量によって最適な判断基準を選択すれば良く、また、複数の判断基準を組み合わせても良い。
【0047】
ステップS704の判定結果が“Yes”である場合には、通信記録作成部213は、通信データ検査部212から受け取った通信データ、リスト番号および検査結果データと、その通信データの受信日時と、ステップS702で取得したパターン番号(或いはステップS703で割り当てたパターン番号)とから、前述した通信日時記録データを生成し、通信日時記録部224に書き込む(ステップS706)。これに対して、ステップS704の判定結果が“No”である場合には、通信記録作成部213は、最も不要な通信日時記録データを削除して通信日時記録部224に記憶領域を確保(ステップS705)した後に、上記ステップS706の処理を実行する。
【0048】
本実施形態において、最も不要な通信日時記録データとは、最も通信日時が古く正常(通信結果=異常なし)であった通信日時記録データのことである。ただし、このような態様では、通信日時記録部224の記憶容量が極めて少なく、異常であると判断された通信が短時間に大量に行われた場合に、正常な通信の通信日時記録データが記録後すぐに削除されてしまうことになり、正常な通信がいつ行われたのか分からなくなってしまう。そのため、正常な通信についての通信日時記録データであっても、通信日時記録部224に記憶されてから一定期間が経過するまでは、削除の対象とせずに保護することが望ましい。
【0049】
正常な通信についての通信日時記録データであっても、通信日時記録部224に記憶されてから一定期間が経過するまでは削除の対象とされないようにするには、以下の優先度設定手段と削除手段を通信記録作成部213に設けるようにすることが考えられる。優先度設定手段は、新たに生成した通信日時記録データを通信日時記録部224に書き込む際に当該通信日時記録データの優先度を設定するとともに、通信日時記録部224への書き込みが行われてからの経過時間が長い通信日時記録データほど優先度が低くなるように、通信日時記録部224に記録されている各通信日時記録データの優先度を設定し直す。例えば、優先度設定手段は新たに生成した通信日時記録データを通信日時記録部224に書き込む際に最も高い優先度を表す優先度データを生成し、通信記録作成部213は当該通信日時記録データを通信日時記録部224に書き込む際には当該優先度データを対応付けて書き込む。そして、優先度設定手段は、新たな通信日時記録データの生成が行われる毎に、通信日時記録データに対応付けて通信日時記録部224に記録されている優先度データをより低い優先度を表すものに更新(すなわち、再設定)する。この優先度の再設定において優先度設定手段は、通信日時記録部224への書き込みが行われてから予め定められた閾値時間が経過する前の正常な通信の通信日時記録データの優先度が当該閾値時間を経過した異常な通信の通信日時記録データの優先度よりも高くなるように、各通信日時記録データの優先度を再設定する。一方、削除手段は、優先度設定手段により設定された優先度の低い順に所定個数(本実施形態では1個)の通信日時記録データを通信日時記録部224から削除する。
【0050】
上記閾値時間を上記一定期間の時間長とし、通信日時記録部224への書き込みが行われてからの経過時間が同じであれば、正常な通信の通信日時記録データの優先度よりも異常な通信の通信日時記録データの優先度のほうが高くなるように優先度設定手段に各通信日時記録データの優先度を設定させるようにすれば、通信日時記録部224への書き込みから一定期間が経過した正常な通信の通信日時記録データがあれば、当該通信日時記録データのうちの最も古いものが上記最も不要な通信日時記録データとして削除される。正常な通信の通信日時記録データが通信日時記録部224に記憶されてはいるものの何れもその書き込みから一定期間が経過しておらず、かつ通信日時記録部224への書き込みから一定期間が経過した異常な通信の通信日時記録データがある場合には、当該一定期間が経過した異常な通信の通信日時記録データのうちの最も古いものが上記最も不要な通信日時記録データとして削除される。そして、通信日時記録部224への書き込みから一定期間が経過した正常な通信の通信日時記録データが無く、かつ通信日時記録部224への書き込みから一定期間が経過した異常な通信の通信日時記録データも無い場合には、一定期間経過前の正常な通信の通信日時記録データ、一定期間経過前の異常な通信の通信日時記録データの順に最も古いものが最も不要な通信日時記録データとして選択され、削除される。
【0051】
なお、上記一定期間については、通信日時記録部224の記憶容量や物理的構成に左右されるものであるため、一定期間をいくつかの期間に分割し、分割した期間ごとに通信日時記録データを削除するようにしても良い。また、異常な通信の通信日時記録データを削除する際には、異常の内容に応じて優先度を定めても良い。さらに、SYNフラッド攻撃に関する通信や、ハンドシェーク処理を際限なく実行する原因となった通信、メモリ破壊を発生させた通信などの予め定められた異常な内容の通信については、通信日時記録部224への通信日時記録データの書き込みが行われてからの経過時間が閾値時間を上回っていても、当該閾値時間が経過する前の正常な通信の通信日時記録データよりも高い優先度を設定するようにしても良い。重大な障害を発生させた通信の記録を確実に残しておくためである。ただし、あまりにも細かく一定期間の分割を行った態様や異常の内容ごとに細かく優先度を設定する態様をとるとすると、通信記録作成部213での演算処理が煩雑になり、PLC121に求められる高速演算処理性能に影響が出るため、なるべく単純な態様をとることが望ましい。
【0052】
ステップS706に後続するステップS707では、通信記録作成部213は通信データ記録部225の記憶容量に空きがあるか否かを判定する。ステップS707の判断基準は、ステップS704の判断基準と同様である。ステップS707の判定結果が“No”であれば、通信記録作成部213は、最も不要な通信データ記録データを削除して記憶容量を確保(ステップS708)した後に、通信データ記録部225へのデータの書き込み(ステップS709)を行い、判定結果が“Yes”であれば、ステップS708の処理を行うことなく、ステップS709の処理を実行する。
【0053】
ここで、どのような通信データ記録データを最も不要な通信データ記録データとするのかについては種々の態様が考えられる。例えば、直近に発生した日時が最も古いパターンを表す通信データ記録データを最も不要な通信データ記録データとするといった具合である。他にも、パターン番号ごとに発生回数を数え、発生回数が少ないパターンを表す通信データ記録データから優先的に削除していく態様や、通信データ記録データのデータサイズを計測し、データサイズの大きいものから優先的に削除していく態様も考えられる。また、異常通信記録部222を通信記録部223の一部として構成する場合には、最も古い正常な通信についての通信データ記録データから優先的に削除され、異常な通信についての通信データ記録データは削除され難くなっていることが好ましい。したがって、この場合は、通信許可とされたパターンよりも通信禁止とされたパターンの優先度が高くなり、かつ最新の発生日時が新しいパターンほど優先度が高くなるように優先度を設定する処理を優先度設定手段に実行させ、最も優先度の低いパターンの通信データ記録データを最も不要な通信データ記録データとして削除手段に削除させるようにすれば良い。ただし、通信日時記録データの削除と同様に、あまりに複雑な条件を設けると、データサイズが大きくなりがちな通信データ記録データを詳細に調査することとなり、PLC121に求められる高速演算処理性能に影響ができるため、なるべく簡便な条件にすることが望ましい。
【0054】
ステップS709では、通信記録作成部213は、ステップS703を実行して新たなパターン番号の割り当てを行った場合には、当該パターン番号と検査済みの通信データの送信元、送信先およびそのデータ内容とを対応付けて新たな通信データ記録データを生成し、パターン番号割り当て日時および最新発生日時に現在日時を設定して通信データ記録部225に書き込む。これに対して、ステップS702おいてパターン番号の取得を行っていた場合には、通信記録作成部213は、該当する通信データ記録データの最新発生日時を現在日時に書き換える処理のみを実行する。このステップS709の処理が完了すると、通信記録作成部213は、本記録処理を終了する(ステップS710)。なお、ステップS704〜706とステップS707〜709の順番を入れ換えて実行しても勿論良い。
【0055】
以上説明したように、本実施形態では、制御系ネットワーク102からの通信データの受信履歴を表すデータ(本実施形態では通信日時記録データ)と、当該通信データの属するパターン等を表すデータ(本実施形態では通信データ記録データ)とを互いに分離して記録した。これは、これらの各データの記録による記憶容量の圧迫を軽減するためであり、PLC121の行う通信はwebアクセスなどの情報処理システムにおける通信とは異なり、通信相手や内容が定型的な通信が多いことを利用したものである。また、PLC121の行う通信は通信相手や内容が定型的であることが多いため、通信日時記録データの増加に比較して通信データ記録データの増加は緩やかになると考えられる。このため、ステップS707〜709の処理を省略し、受信履歴を表すデータについてのみ、記憶容量の不足を契機として不要なデータの消去を行うようにしても良い。
【0056】
本実施形態では、通信記録データ等の記録の際に単に古いものから順に削除するのではなく、性能に配慮した上で不要なデータを削除しつつ新たなデータの記録が行われるので、専用装置に比較してCPUや記憶容量に制限のあるPLC121単体で通信の検査および記録を行うことが可能になる。また、本実施形態によれば、PLC121に着脱自在な通信検査モジュール211によりPLC121を不正アクセスから保護できるため、制御システム100に含まれるPLCの各々に特許文献1の技術を適用する場合に比較してPLC単体の性能を確保しつつ、簡便かつ安価に不正アクセス等に対する耐性を高めることができる。また、本実施形態では、異常通信記録データを記憶して以降の検査に利用することにより、通信許可条件や通信禁止条件の設定だけでは対処できない不正アクセスにも対処することが可能になる。また、PLC121に着脱自在なモジュールによる実装であるため、他のモジュールとの連携が可能で、通信に起因する異常動作の原因特定と対策が容易になる。
【0057】
以上本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
(1)上記本実施形態では、制御システム100に含まれる制御装置がPLC(すなわち、PLC121)であったが、DCSであっても勿論良い。また、上記実施形態では、本発明の特徴を顕著に示す検査・記録処理を実行する通信検査モジュール211がPLC121のベースボードに装着されていたが、機器を制御する制御装置が通信検査モジュール211を有していれば良く、当該通信検査モジュール211が制御装置に対して着脱自在であるか否かは問わない。また、ベースボードにモジュールを着脱自在に装着できる制御装置を前提とするのであれば、通信検査モジュール211単体で製造・販売しても良い。制御系ネットワーク102から送信されてくる通信データを受信する通信モジュールと、通信モジュールにより受信された通信データにより演算を行い接続機器の動作制御を行う演算・入出力モジュールとを少なくとも有する制御装置に、このような通信検査モジュール211を装着することで当該PLCを本発明の制御装置として動作させることが可能になるからである。
【0058】
また、上記実施形態では、本発明の特徴を顕著に示す検査・記録処理を実行する通信データ検査部212が通信検査モジュール211に設けられていた。前述したように従来のPLCに通信検査モジュール211を装着することでそのPLCを本発明の制御装置として機能させることができるようにするためである。しかし、通信データ検査部212を通信モジュール201に設けても良い。要は機器を制御する制御装置の通信モジュールであって、制御系ネットワークとの間で通信データの送受信を行うとともに、制御系ネットワークから受信した通信データについて予め定められた通信禁止条件を満たすか否かを判定し、当該通信禁止条件を満たした場合に通信不可と判定する通信データ検査部を有し、前記制御系ネットワーク102から送信されてくる通信データのうち、前記通信データ検査部により通信不可と判定された通信データを破棄する通信モジュールを提供する態様であっても良い。
【0059】
(2)モジュール状態監視部214と異常通信記録部222を省略し、通信許可・禁止条件記録部221の記憶内容に基づく通信データの検査のみを行うようにしても良い。このような態様であっても、制御系ネットワーク102経由での攻撃に対する制御装置の耐性を従来よりも高めることができることに変わりはないからである。同様に、通信記録作成部213および通信記録部223を省略しても良い。通信許可・禁止条件記録部221の記憶内容に基づく通信データの検査を行うことができれば、制御系ネットワーク102経由での攻撃に対する制御装置の耐性を従来よりも高めることができるからである。
【0060】
(3)モジュール状態監視部214により認められた異常の内容が、例えば通信部203や演算・入出力部232が重故障状態にあるなど非常に深刻である場合は、モジュール状態監視部214がその異常の発生したモジュールもしくはPLC121全体を再起動させるような処理を実行する態様もとりうる。また、制御系ネットワーク102との通信により通信検査モジュール211自体が重故障状態になった場合には、通信データ検査部212で重故障状態になる直前に検査を行っていた通信データについての異常通信記録データを異常通信記録部222に記録させるようにしても良い。