(57)【特許請求の範囲】
【請求項１】
機器と前記機器を制御するサーバ装置とを有する制御システムであって複数のシステム状態を遷移する制御システムに対する攻撃を検知する攻撃検知装置において、
前記複数のシステム状態のシステム状態ごとに、前記制御システムに属するシステム情報であって前記システム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶したホワイトリスト記憶部と、
前記サーバ装置と前記機器との間で通信される通信データを取得し、取得した通信データに基づいて、前記制御システムの現在のシステム状態を推定する状態推定部と、
前記現在のシステム状態に対応するホワイトリストを前記ホワイトリスト記憶部から取得し、取得したホワイトリストと前記現在のシステム状態における前記制御システムに属するシステム情報とに基づいて、前記攻撃を検知したか否かを判定する攻撃判定部と
を備えた攻撃検知装置。
【請求項２】
前記ホワイトリスト記憶部は、
前記複数のシステム状態のシステム状態ごとに、前記システム状態において許可される通信データを前記システム情報として定義した通信データホワイトリストを前記ホワイトリストとして対応付けて記憶し、
前記攻撃判定部は、
前記現在のシステム状態に対応する通信データホワイトリストを前記ホワイトリスト記憶部から取得し、取得した通信データホワイトリストに前記状態推定部により取得された通信データが適合しない場合に、前記攻撃を検知したと判定する請求項１に記載の攻撃検知装置。
【請求項３】
前記攻撃検知装置は、
前記現在のシステム状態と前記現在のシステム状態に遷移する前のシステム状態とを記憶する状態記憶部を備え、
前記ホワイトリスト記憶部は、
前記複数のシステム状態のシステム状態ごとに、前記システム状態に遷移する前のシステム状態として許可される遷移前状態を前記システム情報として定義した状態遷移ホワイトリストを前記ホワイトリストとして対応付けて記憶し、
前記攻撃判定部は、
前記現在のシステム状態に対応する状態遷移ホワイトリストを前記ホワイトリスト記憶部から取得し、取得した状態遷移ホワイトリストに前記状態記憶部に記憶された前記現在のシステム状態に遷移する前のシステム状態が適合しない場合に、前記攻撃を検知したと判定する請求項１または２に記載の攻撃検知装置。
【請求項４】
前記攻撃検知装置は、
前記攻撃判定部により前記攻撃を検知したと判定された場合に、前記サーバ装置に警報を送信する警報部を備えた請求項１から３のいずれか１項に記載の攻撃検知装置。
【請求項５】
前記攻撃判定部は、
制御理論に基づく状態観測器により前記現在のシステム状態を推定する請求項１から４のいずれか１項に記載の攻撃検知装置。
【請求項６】
前記攻撃判定部は、
前記サーバ装置と前記機器との間で通信される通信データを取得し、取得した通信データを、前記サーバ装置から前記機器に送信される操作量と、前記機器から前記サーバ装置に送信される観測量とに分類し、前記操作量と前記観測量とを用いて、前記状態観測器により前記現在のシステム状態を推定する請求項５に記載の攻撃検知装置。
【請求項７】
機器と前記機器を制御するサーバ装置とを有する制御システムであって複数のシステム状態を遷移する制御システムに対する攻撃を検知する攻撃検知装置の攻撃検知方法において、
前記攻撃検知装置は、前記複数のシステム状態のシステム状態ごとに、前記制御システムに属するシステム情報であって前記システム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶したホワイトリスト記憶部を備え、
状態推定部が、前記サーバ装置と前記機器との間で通信される通信データを取得し、取得した通信データに基づいて、前記制御システムの現在のシステム状態を推定し、
攻撃判定部が、前記現在のシステム状態に対応するホワイトリストを前記ホワイトリスト記憶部から取得し、取得したホワイトリストと前記現在のシステム状態における前記制御システムに属するシステム情報とに基づいて、前記攻撃を検知したか否かを判定する攻撃検知方法。
【請求項８】
機器と前記機器を制御するサーバ装置とを有する制御システムであって複数のシステム状態を遷移する制御システムに対する攻撃を検知する攻撃検知装置の攻撃検知プログラムにおいて、
前記攻撃検知装置は、前記複数のシステム状態のシステム状態ごとに、前記制御システムに属するシステム情報であって前記システム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶したホワイトリスト記憶部を備え、
前記サーバ装置と前記機器との間で通信される通信データを取得し、取得した通信データに基づいて、前記制御システムの現在のシステム状態を推定する状態推定処理と、
前記現在のシステム状態に対応するホワイトリストを前記ホワイトリスト記憶部から取得し、取得したホワイトリストと前記現在のシステム状態における前記制御システムに属するシステム情報とに基づいて、前記攻撃を検知したか否かを判定する攻撃判定処理とをコンピュータである前記攻撃検知装置に実行させる攻撃検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、攻撃検知装置、攻撃検知方法および攻撃検知プログラムに関する。
【背景技術】
【０００２】
近年、制御システムがネットワークに接続されるケースの増大に伴い、制御システムがサイバー攻撃の標的になるケースが増加している。サイバー攻撃によるネットワークへの侵入および攻撃を検知するために、制御システムでは、侵入攻撃検知システムが用いられている。
制御システムのネットワーク通信が固定的であることを利用して、従来の侵入攻撃検知システムでは、送信先アドレスと送信元アドレスのペア、あるいは、プロトコルといった許可された通信が記載されたホワイトリストを定義する。また、正常な通信の組み合わせによる攻撃あるいは運転員による不正操作による攻撃への対策として、システム状態に着目した侵入攻撃検知システムが開発されている。【０００３】
特許文献１には、システム状態を通知するパケットを用いて、システム状態に対応した正常な通信パターンであるか否かを判定することにより、侵入および攻撃を検知する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１４／１５５６５０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の侵入攻撃検知システムは、サーバ装置あるいはコントローラから送信される状態通知パケットにより、システム状態を把握し、状態に応じた通信パターンであるか否かを判定する。この特許文献１の侵入攻撃検知システムでは、状態通知パケットを送信する機能をサーバ装置あるいはコントローラに組込む必要がある。したがって、既設設備に対して機能の追加および改修が必要であるという課題があった。【０００６】
本発明に係る攻撃検知装置は、通信データからシステム状態を推定し、推定したシステム状態とホワイトリストとを用いて攻撃検知を実現する。このように、本発明に係る攻撃検知装置は、通信データからシステム状態を推定するため、設備に状態通知機能を組込む必要がなく、設備に容易に導入することができる。
【課題を解決するための手段】
【０００７】
本発明に係る攻撃検知装置は、機器と前記機器を制御するサーバ装置とを有する制御システムであって複数のシステム状態を遷移する制御システムに対する攻撃を検知する攻撃検知装置において、
前記複数のシステム状態のシステム状態ごとに、前記制御システムに属するシステム情報であって前記システム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶したホワイトリスト記憶部と、
前記サーバ装置と前記機器との間で通信される通信データを取得し、取得した通信データに基づいて、前記制御システムの現在のシステム状態を推定する状態推定部と、
前記現在のシステム状態に対応するホワイトリストを前記ホワイトリスト記憶部から取得し、取得したホワイトリストと前記現在のシステム状態における前記制御システムに属するシステム情報とに基づいて、前記攻撃を検知したか否かを判定する攻撃判定部とを備えた。
【発明の効果】
【０００８】
本発明に係る攻撃検知装置では、ホワイトリスト記憶部が、複数のシステム状態のシステム状態ごとに、制御システムに属するシステム情報であってシステム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶する。状態推定部が、サーバ装置と機器との間で通信される通信データを取得し、取得した通信データに基づいて、制御システムの現在のシステム状態を推定する。攻撃判定部が、現在のシステム状態に対応するホワイトリストをホワイトリスト記憶部から取得し、取得したホワイトリストと現在のシステム状態における制御システムに属するシステム情報とに基づいて、攻撃を検知したか否かを判定する。よって、本発明に係る攻撃検知装置によれば、通信データからシステム状態を推定することができ、推定したシステム状態を用いて攻撃検知をすることができるため、設備に容易に導入することができる。
【図面の簡単な説明】
【０００９】
【図１】制御システムのシステム構成例１００を示す図。
【図２】実施の形態１に係る制御システム７００および攻撃検知装置２００の構成図。
【図３】実施の形態１に係る状態記憶部２４１の構成図。
【図４】実施の形態１に係るホワイトリスト記憶部２４２の構成図。
【図５】実施の形態１に係る攻撃検知装置２００の攻撃検知方法５１０および攻撃検知プログラム５２０の攻撃検知処理Ｓ１００を示すフローチャート。
【図６】実施の形態１に係る攻撃判定処理Ｓ１０を示すフローチャート。
【図７】実施の形態１に係る状態推定処理Ｓ３０を示すフローチャート。
【図８】実施の形態１に係る攻撃検知装置２００の具体的な動作を示す図。
【図９】実施の形態１の変形例に係る攻撃検知装置２００の構成図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、制御システムのシステム構成例１００について説明する。
図１のシステム構成例１００では、制御システムは、情報系ネットワーク１０１、制御系ネットワーク１０２、フィールドネットワーク１０３、サーバ装置１０４、コントローラ１０５、フィールドデバイス１０６、および攻撃検知装置２００を有する。
情報系ネットワーク１０１は、オフィス内で利用されるネットワークであり、サーバ装置１０４が接続される。
制御系ネットワーク１０２は、サーバ装置１０４からコントローラ１０５へ送信される操作量、および、コントローラ１０５からサーバ装置１０４へ送信される観測量が流れるネットワークである。
フィールドネットワーク１０３は、コントローラ１０５からフィールドデバイス１０６への制御信号およびセンサ情報が流れるネットワークである。
図１のシステム構成例１００では、攻撃検知装置２００が制御系ネットワーク１０２に接続されている。なお、図１のシステム構成例１００は制御システムの一般的な構成であり、制御システムが図１に示された全ての構成を有する必要はない。制御システムが図１に示された構成の一部を有する場合でも、本実施の形態を制御システムに適用することができる。また、攻撃検知装置２００は、制御系ネットワーク１０２以外のフィールドネットワーク１０３に接続されていてもよい。
【００１２】
図２を用いて、本実施の形態に係る制御システム７００および攻撃検知装置２００の構成について説明する。
【００１３】
制御システム７００は、攻撃検知装置２００、サーバ装置３００、機器４００、および機器５００を有する。攻撃検知装置２００、サーバ装置３００、機器４００、および機器５００は、制御系ネットワーク６００に接続されている。
制御システム７００は、機器４００，５００と機器４００，５００を制御するサーバ装置３００とを有する。また、制御システム７００は、複数のシステム状態を遷移する。機器は、具体的には、コントローラである。
【００１４】
攻撃検知装置２００は、制御系ネットワーク６００に接続され、サーバ装置３００と機器４００および機器５００で送受信される通信データ６０１を収集する。攻撃検知装置２００は、収集した通信データ６０１を通信データ２０６として、通信データ２０６から制御システム７００の現在の制御状態を推定する。通信インタフェース部２５０により受信された後の通信データ６０１を通信データ２０６と表記する。また、以下において、制御システム７００の現在の制御状態を、システム状態または単に状態ともいう。
また、攻撃検知装置２００は、収集した通信データ２０６をホワイトリスト２０９と照合し、制御システム７００に対する攻撃を検知する。攻撃検知装置２００は、侵入攻撃検知装置ともいう。攻撃検知装置２００で行われる動作は、攻撃検知方法５１０の例である。
【００１５】
機器４００および機器５００は、攻撃検知装置２００の監視対象の機器である。機器４００および機器５００の各々は、具体的には、コントローラである。機器４００および機器５００の各々は、サーバ装置３００との間で通信データ６０１を送受信する。
なお、機器４００および機器５００を区別する必要がない場合は、単に機器あるいはコントローラと表記する。
サーバ装置３００は、機器４００および機器５００を管理する。
【００１６】
図２に示すように、攻撃検知装置２００は、コンピュータである。
攻撃検知装置２００は、プロセッサ９１０、記憶装置９２０、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といったハードウェアを備える。記憶装置９２０は、メモリ９２１と補助記憶装置９２２とを含む。
【００１７】
攻撃検知装置２００は、機能構成として、状態推定部２１０、攻撃判定部２２０、警報部２３０と、記憶部２４０と、通信インタフェース部２５０とを備える。状態推定部２１０は、通信データ処理部２１１と、オブザーバ部２１２とを有する。記憶部２４０は、状態記憶部２４１と、ホワイトリスト記憶部２４２とを有する。
【００１８】
通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能は、ソフトウェアで実現される。
記憶部２４０は、メモリ９２１により実現される。また、記憶部２４０は、補助記憶装置９２２のみ、あるいは、メモリ９２１および補助記憶装置９２２で実現されてもよい。記憶部２４０の実現方法は任意である。
通信インタフェース部２５０は、通信装置９５０により実現される。
【００１９】
プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）あるいはＭＰＵ（Ｍｉｃｒｏ−Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００２０】
補助記憶装置９２２は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、または、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９２１は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２１】
入力インタフェース９３０は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
【００２２】
出力インタフェース９４０は、ディスプレイといった表示機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００２３】
通信装置９５０は、制御系ネットワーク６００を介してサーバ装置３００、機器４００および機器５００と通信を行う。通信装置９５０は、レシーバとトランスミッタとを有する。通信装置９５０は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信装置９５０は、データを通信する通信部である。レシーバは、データを受信する受信部である。トランスミッタは、データを送信する送信部である。
【００２４】
補助記憶装置９２２には、通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能を実現するプログラムが記憶されている。通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能を実現するプログラムを攻撃検知プログラム５２０ともいう。このプログラムは、メモリ９２１にロードされ、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。また、補助記憶装置９２２には、ＯＳが記憶されている。ＯＳの少なくとも一部がメモリ９２１にロードされる。プロセッサ９１０はＯＳを実行しながら、攻撃検知プログラム５２０を実行する。図２では、プロセッサ９１０が通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能を実現するプログラムを実行している状態を模式的に表している。
【００２５】
攻撃検知装置２００は、１つのプロセッサ９１０のみを備えていてもよいし、複数のプロセッサ９１０を備えていてもよい。複数のプロセッサ９１０が通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能を実現するプログラムを連携して実行してもよい。
【００２６】
通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との処理の結果を示す情報、データ、信号値、および変数値は、攻撃検知装置２００の補助記憶装置９２２、メモリ９２１、または、プロセッサ９１０内のレジスタまたはキャッシュメモリに記憶される。
【００２７】
通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能を実現するプログラムは、可搬記録媒体に記憶されてもよい。可搬記録媒体とは、具体的には、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）である。
なお、攻撃検知プログラムプロダクトとは、攻撃検知プログラム５２０が記録された記憶媒体および記憶装置である。攻撃検知プログラムプロダクトは、外観に関わらず、コンピュータ読み取り可能なプログラムをロードしているものを指す。
【００２８】
＊＊＊機能構成の説明＊＊＊
次に、図２に示す通信インタフェース部２５０、状態推定部２１０、攻撃判定部２２０、警報部２３０、およびホワイトリスト記憶部２４２の機能について説明する。
【００２９】
通信インタフェース部２５０は、制御系ネットワーク６００を介してサーバ装置３００、機器４００、および機器５００で送受信される通信データ６０１を受信する。そして、通信インタフェース部２５０は、受信した通信データ６０１を通信データ２０６として、状態推定部２１０と攻撃判定部２２０に出力する。
また、通信インタフェース部２５０は、警報部２３０からの警報２３１を受信し、受信した警報２３１をサーバ装置３００へ警報６０２として送信する。
このように、通信インタフェース部２５０は、攻撃検知装置２００の内部の要素と制御系ネットワーク６００との間でデータの送受信を行う。
【００３０】
状態推定部２１０は、サーバ装置３００と機器４００および機器５００との間で通信される通信データ６０１を取得し、取得した通信データ６０１に基づいて、制御システム７００の現在のシステム状態を推定する。状態推定部２１０は、通信インタフェース部２５０から通信データ２０６を取得する。状態推定部２１０は、取得した通信データ２０６を解析して、制御システム７００の現在のシステム状態を推定する。状態推定部２１０は、推定したシステム状態を含むシステム状態情報２０７を状態記憶部２４１に記憶する。なお、状態推定部２１０は、システム状態情報２０７を直接、攻撃判定部２２０に出力してもよい。
なお、通信データ２０６は、制御システム７００に属するシステム情報７０１の例である。
【００３１】
図３は、本実施の形態に係る状態記憶部２４１の構成を示す図である。
状態記憶部２４１は、現在のシステム状態４１と現在のシステム状態に遷移する前のシステム状態４２とを記憶する。状態記憶部２４１には、システム状態情報２０７として、システム状態４１１と遷移前状態４１２とが記憶される。システム状態４１１は、現在のシステム状態４１の例である。遷移前状態４１２は、現在のシステム状態４１に遷移する前のシステム状態４２の例である。システム状態情報２０７に含まれる制御システム７００の状態遷移は、制御システム７００に属するシステム情報７０１の例である。
状態推定部２１０は、今回推定したシステム状態を状態記憶部２４１のシステム状態４１１に記憶し、前回推定したシステム状態を状態記憶部２４１の遷移前状態４１２に記憶する。
【００３２】
ホワイトリスト記憶部２４２は、複数のシステム状態のシステム状態ごとに、制御システムに属するシステム情報であってシステム状態において許可されるシステム情報を定義したホワイトリストを対応付けて記憶する。ホワイトリスト記憶部２４２は、システム状態に対応付けられている複数のホワイトリスト２０９を保持する。ホワイトリスト２０９は、予め設定された正常な通信を許可するためのルールである。ホワイトリスト２０９には、状態遷移ホワイトリスト９０１と通信データホワイトリスト９０２とが考えられる。
【００３３】
図４は、本実施の形態に係るホワイトリスト記憶部２４２の構成を示す図である。
ホワイトリスト記憶部２４２は、複数のシステム状態のシステム状態ごとに、システム状態において許可される通信データをシステム情報７０１として定義した通信データホワイトリスト９０２をホワイトリスト２０９として対応付けて記憶する。
また、ホワイトリスト記憶部２４２は、複数のシステム状態のシステム状態ごとに、システム状態に遷移する前のシステム状態として許可される遷移前状態をシステム情報７０１として定義した状態遷移ホワイトリスト９０１をホワイトリスト２０９として対応付けて記憶する。
【００３４】
状態遷移ホワイトリスト９０１は、正常なシステム状態の遷移を定義したホワイトリストである。状態遷移ホワイトリスト９０１は、遷移前状態と、遷移のトリガとなるコマンドといった条件を定義した遷移条件と、遷移後状態とによって定義される。状態遷移ホワイトリスト９０１は、システム状態の遷移が攻撃によるものか否かを判定するために用いられる。
通信データホワイトリスト９０２は、正常な通信データをシステム状態ごとに定義したホワイトリストである。通信データホワイトリスト９０２は、システム状態ごとに、プロトコル種別、ＩＰアドレスあるいはポート番号といった送信元情報および送信先情報、データ長、コマンドあるいは設定値の範囲といったペイロード条件、および一定周期による通信の発生といった周期条件によって定義される。通信データホワイトリスト９０２は、通信データが攻撃によるものか否かを判定するために用いられる。
攻撃判定部２２０は、状態推定部２１０により推定されたシステム状態情報２０７を元に、現在のシステム状態に応じたホワイトリスト２０９をホワイトリスト記憶部２４２から取得する。
【００３５】
攻撃判定部２２０は、現在のシステム状態４１に対応するホワイトリスト２０９をホワイトリスト記憶部２４２から取得し、取得したホワイトリスト２０９と現在のシステム状態４１における制御システム７００に属するシステム情報７０１とに基づいて、攻撃を検知したか否かを判定する。システム情報７０１とは、具体的には、通信データ２０６、あるいは、システム状態情報２０７に含まれる制御システム７００の状態遷移である。
【００３６】
攻撃判定部２２０は、記憶部２４０からシステム状態情報２０７を取得する。あるいは、攻撃判定部２２０は、状態推定部２１０から直接、システム状態情報２０７を取得してもよい。そして、攻撃判定部２２０は、システム状態情報２０７に示されるシステム状態４１１と対応付けられているホワイトリスト２０９を、ホワイトリスト記憶部２４２から選択する。つまり、攻撃判定部２２０は、状態推定部２１０により推定されたシステム状態４１１と対応付けられているホワイトリスト２０９を選択する。そして、攻撃判定部２２０は、選択したホワイトリスト２０９を用いて、制御システム７００への攻撃を検知する。
より具体的には、攻撃判定部２２０は、通信インタフェース部２５０から通信データ２０６を取得し、取得した通信データ２０６に、選択したホワイトリスト２０９を適用する。そして、攻撃判定部２２０は、通信データ２０６が現在のシステム状態において許可された通信データであるか否かを判定する。通信データ２０６の全ての属性がホワイトリスト２０９の全ての項目に一致する場合以外は、攻撃判定部２２０は、通信データ２０６がホワイトリスト２０９に適合しないと判定する。通信データ２０６がホワイトリスト２０９に適合しない場合、攻撃判定部２２０は攻撃ありの判定結果２２１を警報部２３０に出力する。
【００３７】
警報部２３０は、攻撃判定部２２０により攻撃を検知したと判定された場合に、サーバ装置３００に警報２３１を送信する。具体的には、警報部２３０は、攻撃判定部２２０から判定結果２２１を取得した場合に、サーバ装置３００に警報２３１を送信する。
サーバ装置３００は、警報部２３０からの警報６０２をオペレータに提示する。サーバ装置３００はディスプレイに警報６０２を表示してもよいし、ランプといった表示器を用いて警報６０２を提示するようにしてもよい。また、サーバ装置３００は、音声により警報６０２をオペレータに提示してもよい。また、サーバ装置３００は警報６０２を他のサーバ装置に送信してもよい。
【００３８】
＊＊＊動作の説明＊＊＊
図５は、本実施の形態に係る攻撃検知装置２００の攻撃検知方法５１０および攻撃検知プログラム５２０の攻撃検知処理Ｓ１００を示すフローチャートである。攻撃検知プログラム５２０は、以下に示す各処理をコンピュータである攻撃検知装置２００に実行させる。
なお、図５の攻撃検知装置２００の動作フローは一例であり、攻撃検知装置２００の動作フローは必ずしも図５の通りでなくてもよい。
【００３９】
ステップＳ１１０において、攻撃検知装置２００が起動されると、攻撃検知装置２００は、ホワイトリスト記憶部２４０にホワイトリスト２０９を設定する。
ステップＳ１２０において、攻撃検知装置２００は、システム状態情報２０７の初期設定を行う。攻撃検知装置２００は、システム状態情報２０７の初期状態として、たとえば、ホワイトリストに記載されているシステム状態を用いる。
【００４０】
ステップＳ１３０において、サーバ装置３００、機器４００、および機器５００といった攻撃を検知する対象の機器が動作している間は、ステップＳ１４０からステップＳ１９１までの処理を繰り返す。
【００４１】
ステップＳ１４０において、攻撃判定部２２０は、通信インタフェース部２５０からの通信データ２０６の有無を確認する。通信データ２０６がない場合、攻撃判定部２２０は、通信データ２０６の有無の確認を続ける。通信データ２０６がある場合、処理はステップＳ１５０に進む。
ステップＳ１５０において、攻撃判定部２２０は、通信データ２０６の取得を行う。
【００４２】
＜攻撃判定処理Ｓ１０＞
ステップＳ１６０において、攻撃判定部２２０は、攻撃判定処理Ｓ１０を実行する。
図６を用いて、本実施の形態に係る攻撃判定処理Ｓ１０について説明する。
ステップＳ１１において、攻撃判定部２２０は、状態記憶部２４１からシステム状態情報２０７を取得する。システム状態情報２０７には、現在のシステム状態４１としてシステム状態４１１が設定されている。
ステップＳ１２において、攻撃判定部２２０は、システム状態情報２０７に示された現在のシステム状態４１に対応付けられているホワイトリスト２０９をホワイトリスト記憶部２４２から取得する。具体的には、攻撃判定部２２０は、現在のシステム状態４１に対応する通信データホワイトリスト９０２をホワイトリスト記憶部２４２から取得する。また、攻撃判定部２２０は、現在のシステム状態４１に対応する状態遷移ホワイトリスト９０１をホワイトリスト記憶部２４２から取得する。
【００４３】
ステップＳ１３において、攻撃判定部２２０は、通信データ２０６をホワイトリスト２０９と照合する。攻撃判定部２２０は、通信インタフェース部２５０から取得した通信データ２０６と、ホワイトリスト記憶部２４２から取得したホワイトリスト２０９と照合する。具体的には、攻撃判定部２２０は、取得した通信データホワイトリスト９０２と状態推定部２１０により取得された通信データ２０６とを照合する。
ステップＳ１４において、攻撃判定部２２０は、システム状態情報２０７に示されたシステム状態の遷移を、ホワイトリスト記憶部２４０から取得したホワイトリスト２０９と照合する。具体的には、攻撃判定部２２０は、取得した状態遷移ホワイトリスト９０１と、現在のシステム状態４１に遷移する前のシステム状態４２である遷移前状態４１２とを照合する。
【００４４】
ステップＳ１５において、攻撃判定部２２０は、攻撃があるか否かを判定する。攻撃判定部２２０は、取得した通信データホワイトリスト９０２に状態推定部２１０により取得された通信データ２０６が適合しない場合に、攻撃を検知したと判定する。また、攻撃判定部２２０は、取得した状態遷移ホワイトリスト９０１に現在のシステム状態４１１に遷移する前の遷移前状態４１２が適合しない場合に、攻撃を検知したと判定する。具体的には、攻撃判定部２２０は、通信データ２０６がホワイトリスト２０９に適合し、かつ、現在のシステム状態の遷移がホワイトリスト２０９に適合する場合に、攻撃がないと判定する。攻撃判定部２２０は、通信データ２０６がホワイトリスト２０９に適合しない、あるいは、現在のシステム状態の遷移がホワイトリスト２０９に適合しない場合、攻撃があると判定する。攻撃があると判定されると、処理はステップＳ１６に進む。
ステップＳ１６において、攻撃判定部２２０は、異常の発生を通知する判定結果２２１を警報部２３０に出力する。攻撃がないと判定された場合、攻撃判定部２２０は、ステップＳ１６の処理は行わない。
【００４５】
次に、図５に戻り説明を続ける。
【００４６】
＜警報処理Ｓ２０＞
ステップＳ１７０において、警報部２３０は、攻撃ありか否かを判定する。具体的には、警報部２３０は、攻撃判定部２２０からの判定結果２２１を受け取った場合に、攻撃ありと判定する。攻撃ありと判定されると、処理はステップＳ１８０に進む。攻撃なしと判定されると、処理はステップＳ１９０に進む。
ステップＳ１８０において、警報部２３０は、攻撃判定部２２０からの判定結果２２１を取得し、警報２３１を通信インタフェース部２５０に送信する。通信インタフェース部２５０は、警報２３１を警報６０２として、サーバ装置３００に送信する。
【００４７】
＜状態推定処理Ｓ３０＞
ステップＳ１９０において、状態推定部２１０は、通信データ２０６からシステム状態を推定する状態推定処理Ｓ３０を実行する。状態推定処理Ｓ３０において、攻撃判定部２２０は、制御理論に基づく状態観測器により現在のシステム状態を推定する。攻撃判定部２２０は、サーバ装置３００と機器４００，５００との間で通信される通信データ６０１を取得する。攻撃判定部２２０は、取得した通信データ６０１を、サーバ装置３００から機器４００，５００に送信される操作量２６１と、機器４００，５００からサーバ装置３００に送信される観測量２６２とに分類する。攻撃判定部２２０は、操作量２６１と観測量２６２とを用いて、状態観測器により現在のシステム状態を推定する。
【００４８】
図７を用いて、本実施の形態に係る状態推定処理Ｓ３０について説明する。
ステップＳ３１において、通信データ処理部２１１は、通信データ２０６を、操作量２６１と観測量２６２とに分類する。操作量２６１は、サーバ装置３００から、機器４００または機器５００への通信データである。観測量２６２は、機器４００または機器５００から、サーバ装置３００への通信データである。
ステップＳ３２において、オブザーバ部２１２は、操作量２６１と観測量２６２とを入力に、制御理論に基づく状態観測器を用いて現在のシステム状態を推定する。オブザーバ部２１２は、状態観測器部ともいう。オブザーバ部２１２は、推定結果をシステム状態として出力する。オブザーバの設計は、システムをモデル化することによって実現され、モデル化の手法には、有限オートマトンあるいはペトリネットといった手法が考えられる。
【００４９】
ステップＳ１９１において、オブザーバ部２１２は、状態記憶部２４０に記憶されているシステム状態情報２０７のシステム状態４１１を、状態推定処理Ｓ３０で推定したシステム状態に更新する。また、オブザーバ部２１２は、システム状態情報２０７の遷移前状態４１２を、現在のシステム状態に遷移する前のシステム状態に更新する。
【００５０】
ステップＳ１９０からステップＳ１９１の処理により、システム状態情報２０７の更新が終了し、検知対象の機器が動作中であれば、処理はステップＳ１３０に戻る。検知対象の機器が動作を終えている場合は、攻撃検知装置２００は動作を停止する。
【００５１】
次に、図８を用いて、本実施の形態に係る攻撃検知装置２００の具体的な動作について説明する。
制御システム７００では、状態遷移パターン７９０にあるように、「待機」→「起動中」→「運転」→「停止中」→「待機」⇔「保守」という状態遷移が行われる。
攻撃検知装置２００は、通信データ６０１を収集し、システム状態の推定を行い、推定したシステム状態に応じたホワイトリスト２０９による攻撃判定を行う。
【００５２】
（１）攻撃検知装置２００が収集した通信データ２０６は、サーバ装置３００から機器４００または５００へ送信される操作量２６１、および、機器４００または５００からサーバ装置３００へ送信される観測量２６２が含まれる。状態推定部２１０は、通信データ２０６を操作量２６１と観測量２６２とに分類する。
【００５３】
（２）状態推定部２１０は、通信データ２０６に含まれる操作量２６１および観測量２６２から、システム状態の推定を行う。たとえば、Ｓｔａｒｔコマンドが発信され、センサ１の値がオフ、センサ２の値がオフと通知される場合、システム状態は「待機」と推定される。また、Ｓｔａｒｔコマンドおよびｆｉｎｉｓｈコマンドが発信され、センサ１の値がオン、センサ２の値がオンと通知される場合、システム状態は「運転」と推定される。システム状態が「運転」と推定されたとき、システム状態情報２０７のシステム状態４１１には、システム状態は運転、コマンドはＳｔａｒｔコマンドおよびｆｉｎｉｓｈコマンド、センサ１の値がオン、およびセンサ２の値がオンと設定される。また、システム状態情報２０７の遷移前状態４１２には、システム状態は起動中、コマンドはなし、センサ１の値がオン、およびセンサ２の値がオフと設定される。
図８のシステム状態情報２０７に示すように、状態推定部２１０により推定されたシステム状態が蓄積されていくとしてもよい。また、蓄積されたシステム状態の各々には、システム状態への遷移のきっかけとなったコマンドが設定されているものとする。
（３）攻撃判定部２２０は、推定されたシステム状態に対応するホワイトリスト２０９により、正常な通信データ２０６であるか、および、正常な状態遷移であるかを判定する。上述したように、ホワイトリスト２０９には、状態遷移ホワイトリスト９０１と通信データホワイトリスト９０２とがある。
（３ａ）通信データホワイトリスト９０２は、システム状態ごとに許可する通信データを定義する。具体的には、システム状態「待機」において許可される通信データを、ＩＰアドレス、ポート番号、データ長、および通信周期といった属性情報で定義する。攻撃判定部２２０は、状態推定部２１０により推定された現在のシステム状態に応じて、参照する通信データホワイトリスト９０２を切り替える。
（３ｂ）状態遷移ホワイトリスト９０１は、具体例としては、「待機」から「起動中」へのシステム状態の遷移を許可し、反対に、定義されない「運転」から「保守」への状態遷移は異常として判定する。また、異常な状態遷移を状態推定部２１０で判定してもよい。
攻撃判定部２２０は、システム状態情報２０７における遷移する前のシステム状態を遷移前状態とし、現在のシステム状態を遷移後状態とする。また、攻撃判定部２２０は、現在のシステム状態に示されたコマンドを遷移条件とする。攻撃判定部２２０は、これらの遷移前状態、遷移後状態、および遷移条件を、ホワイトリスト記憶部２４２から取得した状態遷移ホワイトリスト９０１と照合する。
（４）攻撃判定部２２０は、判定結果２２１を警報部２３０に出力する。警報部２３０は、判定結果２２１に基づき、警報６０２をサーバ装置３００に送信する。また、警報部２３０は、警報６０２だけでなく、フェールセーフを目的とした制御信号をサーバ装置３００に送信してもよい。
【００５４】
＊＊＊他の構成＊＊＊
本実施の形態では、通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能がソフトウェアで実現される。しかし、変形例として、通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能がハードウェアで実現されてもよい。
【００５５】
図９を用いて、本実施の形態の変形例に係る攻撃検知装置２００の構成について説明する。
図９に示すように、攻撃検知装置２００は、処理回路９０９、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といったハードウェアを備える。
【００５６】
処理回路９０９は、上述した通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能および記憶部２４０を実現する専用の電子回路である。処理回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
【００５７】
通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能は、１つの処理回路９０９で実現されてもよいし、複数の処理回路９０９に分散して実現されてもよい。
【００５８】
別の変形例として、攻撃検知装置２００の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。すなわち、攻撃検知装置２００の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
【００５９】
攻撃検知装置２００のプロセッサ９１０、記憶装置９２０、および、処理回路９０９を、総称して「プロセッシングサーキットリ」という。つまり、攻撃検知装置２００の構成が図２および図９のいずれに示した構成であっても、通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との機能および記憶部２４０は、プロセッシングサーキットリにより実現される。
【００６０】
「部」を「工程」または「手順」または「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
【００６１】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る攻撃検知装置２００では、制御理論に基づく状態観測器により通信データからシステム状態を推定し、推定したシステム状態に応じたホワイトリストで攻撃検知を行う。このように、本実施の形態に係る攻撃検知装置２００によれば、通信データからシステム状態を推定するため、設備に状態通知機能を組込む改修は必要なく、既設の設備であっても容易に導入が可能である。
【００６２】
また、本実施の形態に係る攻撃検知装置２００では、通信データからシステム状態が推定される。そして、本実施の形態に係る攻撃検知装置２００は、推定されたシステム状態ごとに用意されたホワイトリストを用いて通信システムに対する攻撃を検知する。したがって、本実施の形態によれば、コントローラ単位のホワイトリストでは正常と判定される通信が組み合わされることにより異常動作を引き起こす攻撃を、攻撃検知装置２００をネットワークへ接続するだけで検知することができる。このとき、本実施の形態では、サーバ装置およびコントローラである機器といった監視対象機器の改修をする必要がない。
【００６３】
本実施の形態に係る攻撃検知装置２００は、通信システムに含まれる監視対象機器の全ての通信を監視するネットワーク型侵入および攻撃検知装置である。したがって、本実施の形態によれば、監視対象機器に検知機能を組込むための改修のコストが必要ない。
【００６４】
本実施の形態に係る攻撃検知装置２００は、システム状態に応じてホワイトリストを切り替えて攻撃の検知を行う。したがって、本実施の形態に係る攻撃検知装置２００は、監視対象機器ごとの並列的な検知処理を行わない。また、本実施の形態に係る攻撃検知装置２００は、必要最小限のホワイトリストで攻撃の検知を行う。このため、本実施の形態に係る攻撃検知装置２００では、高性能な計算リソースおよび膨大なホワイトリストを必要としない。
【００６５】
また、本実施の形態に係る攻撃検知装置２００は、攻撃者に乗っ取られたコンピュータから通信シーケンスにしたがった通信を伴う攻撃が行われた場合でも、システム状態を推定し、システム状態に対応するホワイトリストを通信データに適用することにより、当該攻撃を検知することができる。
【００６６】
本実施の形態に係る攻撃検知装置２００によれば、リモート端末以外の端末、制御監視装置あるいは保守端末からの攻撃であっても、制御系あるいは保守系ネットワークを介する攻撃を検知することができる。
【００６７】
本実施の形態に係る攻撃検知装置２００は、状態通知するパケットを使用するのではなく、通信データから状態を推定することで、システム状態を定義する。したがって、本実施の形態に係る攻撃検知装置２００は、状態通知パケットを改ざんするような攻撃の対策となる。
【００６８】
本実施の形態に係る攻撃検知装置２００は、システム状態を操作量および観測量だけでは決定できない場合でも、推定を用いることで、システム状態を決定できる。
【００６９】
本実施の形態では、通信データ処理部２１１と、オブザーバ部２１２と、攻撃判定部２２０と、警報部２３０との各々が独立した機能ブロックとして攻撃検知装置２００を構成している。しかし、上述した実施の形態のような構成でなくてもよく、攻撃検知装置２００の構成は任意である。攻撃検知装置２００の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成で、攻撃検知装置を構成しても構わない。
また、攻撃検知装置は、１つの装置でなく、複数の装置から構成された攻撃検知システムでもよい。
【００７０】
実施の形態１について説明したが、この実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明、その適用物および用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００７１】
４１  現在のシステム状態、４２  遷移する前のシステム状態、１００  システム構成例、１０１  情報系ネットワーク、１０２，６００  制御系ネットワーク、１０３  フィールドネットワーク、１０４  サーバ装置、１０５  コントローラ、１０６  フィールドデバイス、２００  攻撃検知装置、２０６，６０１  通信データ、２０７  システム状態情報、２０９  ホワイトリスト、２１０  状態推定部、２１１  通信データ処理部、２１２  オブザーバ部、２２０  攻撃判定部、２２１  判定結果、２３０  警報部、２３１，６０２  警報、２４０  記憶部、２４１  状態記憶部、２４２  ホワイトリスト記憶部、２５０  通信インタフェース部、２６１  操作量、２６２  観測量、３００  サーバ装置、４００，５００  機器、４１１  システム状態、４１２  遷移前状態、５１０  攻撃検知方法、５２０  攻撃検知プログラム、７００  制御システム、７０１  システム情報、７９０  状態遷移パターン、９０１  状態遷移ホワイトリスト、９０２  通信データホワイトリスト、９０９  処理回路、９１０  プロセッサ、９２０  記憶装置、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、９５０  通信装置、Ｓ１０  攻撃判定処理、Ｓ２０  警報処理、Ｓ３０  状態推定処理、Ｓ１００  攻撃検知処理。
【図１】
0006509462.tif 000002
【図２】
0006509462.tif 000003
【図３】
0006509462.tif 000004
【図４】
0006509462.tif 000005
【図５】
0006509462.tif 000006
【図６】
0006509462.tif 000007
【図７】
0006509462.tif 000008
【図８】
0006509462.tif 000009
【図９】
0006509462.tif 000010