以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
本実施例は、制御システム向け不正通信検知システムを説明する。制御システム向け不正通信検知システムに含まれる検知装置は、制御装置間で送受信される制御コマンドを収集する。検知装置は、各制御コマンドの応答時間や送受信サイズに基づいて、収集した制御コマンドを1以上の制御コマンド群に分類する。検知装置は、各制御コマンドの応答時間や送受信サイズに基づいて、1以上の制御コマンド群から、システムに対して与える影響が大きい重要業務の制御コマンド群を特定する。検知装置は、その通信パケット群の中で通信パケット毎に変更される領域のみに絞り込むフィルタポリシを生成する。
検知装置は、検知処理において、受信した制御コマンドが重要業務の制御コマンドである場合に、当該制御コマンドのペイロードを参照して、受信した制御コマンドが不正な通信であるか否かを判定する。検知装置は、受信した制御コマンドが不正な通信であると判定した場合、受信制御コマンドの情報を含むアラートを生成する。
図1は、本実施例の制御システム向け不正通信検知システムの構成例を示す。本実施形態の制御システム向け不正通信検知システム100は、例えば、複数の制御装置10−1〜10−n、ネットワーク装置20、検知装置30、管理装置40、及びネットワーク50を含む。以下、制御装置10−1〜10−nを特に区別しない場合、制御装置10と表記する。同様に、制御装置10−1〜10−nそれぞれに含まれる各部についても、当該各部を特に区別しない場合、ハイフン以下を省略して表記する。
図1は、制御システム向け不正通信検知システム100に2つの制御装置10が含まれる例を示しているが、制御システム向け不正通信検知システム100に含まれる制御装置10の数は問わない。
制御装置10は、制御処理を行うプログラムである制御処理部101と、後述する通信装置によって実現され、ネットワーク50やネットワーク装置20等と通信を行う通信部102と、を含む。
ネットワーク装置20は、ネットワーク装置20に入力された通信パケットを複製するプログラムであるパケット複製部201と、ネットワーク50と通信を行う第一通信部202と、検知装置30と通信を行う第二通信部203と、制御装置10−nと通信を行う第三通信部204と、を含む。なお、ネットワーク装置20は、4つ以上の通信部を含んでもよい。各通信部は、例えば、後述する通信装置によって実現される。
検知装置30は、通信部301、並びにそれぞれプログラムである、通信パケット取得部302、業務分類部303、重要業務判定部304、差分抽出部305、フィルタポリシ生成部306、フィルタリング処理部307、検知部308、アラート生成部309、動作モード管理部318、基準用データ生成部319、分類用データ生成部320、フィルタポリシ更新部321、及び検知ポリシ更新部322を含む。
また、検知装置30は、それぞれデータを格納する領域である、通信パケット格納部310、基準用データ格納部311、分類用データ格納部312、判定閾値格納部313、業務分類データ格納部314、フィルタポリシ格納部315、検知ポリシ格納部316、及びアラート格納部317を含む。
通信部301は、後述する通信装置によって実現され、ネットワーク装置20と通信を行う。通信パケット取得部302は、通信部301に入力された通信パケットの情報を取得する。業務分類部303は、通信パケット取得部302が取得した通信パケットを業務毎に分類する。分類用データ生成部320は、業務分類部303が通信パケットを分類する指標を示す分類用データを生成する。
重要業務判定部304は、業務分類部303が分類した業務から、制御装置10の動作に影響を及ぼす重要業務を決定する。基準用データ生成部319は、重要業務判定部304が重要業務を決定する基準を示す基準用データを生成する。
差分抽出部305は、重要業務のパケット内のデータの差分領域を抽出する。差分領域の詳細については後述する。フィルタポリシ生成部306は、重要業務のパケットを特定するフィルタポリシを生成する。フィルタリング処理部307は、フィルタポリシ生成部306が生成したフィルタポリシに従って、入力されたパケットをフィルタする。検知部308は、後述する検知ポリシに従って、フィルタを通過したパケットやデータの正当性を検証する。
アラート生成部309は、検知部308が不正なパケットやデータの存在を検知した場合にアラートを生成する。動作モード管理部318は、検知装置30の動作モードを管理する。検知装置30は、設定中の動作モードに規定された処理を実行することができる。動作モードの具体例については後述する。検知装置30は、動作モード管理部318が動管理する動作モードに従って動作することにより、例えば、ユーザが意図しない検知装置30の動作を防ぐことができ、ひいては不正な処理の実行を防ぐことができる。
フィルタポリシ更新部321は、管理装置40からの指示に従って、フィルタポリシを更新する。検知ポリシ更新部322は、管理装置40からの指示に従って、検知ポリシを更新する。
通信パケット格納部310は、通信パケット取得部302が取得した通信パケットを格納する。基準用データ格納部311は、基準用データ生成部319が生成した基準用データを格納する。分類用データ格納部312は、分類用データ生成部320が生成した分類用データを格納する。判定閾値格納部313は、業務分類部303が業務を分類する際に利用する閾値を格納する。業務分類データ格納部314は、通信パケットが属する業務情報を示す業務分類データを格納する。
フィルタポリシ格納部315は、フィルタポリシ生成部306が生成したフィルタポリシを格納する。検知ポリシ格納部316は、検知部308が不正なパケットやデータの存在を検知する際に利用する検知ポリシを格納する。アラート格納部317は、アラート生成部309が生成したアラートを格納する。
管理装置40は、通信部406、並びにそれぞれプログラムである、基準パケット生成部、フィルタポリシ生成部402、検知ポリシ生成部403、フィルタポリシ収集部404、及び検知ポリシ収集部405を含む。また、管理装置40は、それぞれデータを格納する領域である、フィルタポリシ格納部407、及び検知ポリシ格納部408を含む。
通信部406は、例えば、後述する通信装置によって実現され、ネットワーク50と通信を行う。基準パケット生成部401は、基準用データ生成部319が基準用データを生成する際に利用する基準パケットを生成する。フィルタポリシ生成部402は、フィルタポリシ格納部315及びフィルタポリシ格納部407に格納するフィルタポリシを生成する。検知ポリシ生成部403は、検知ポリシ格納部316及び検知ポリシ格納部408に格納する検知ポリシを生成する。
フィルタポリシ収集部404は、フィルタポリシ格納部315に格納されているフィルタポリシを収集する。検知ポリシ収集部405は、検知ポリシ格納部316に格納されている検知ポリシを収集する。フィルタポリシ格納部407は、フィルタポリシ生成部402が生成した、又はフィルタポリシ収集部404が収集したフィルタポリシを格納する。検知ポリシ格納部408は、検知ポリシ生成部403が生成した、又は検知ポリシ収集部405が収集した検知ポリシを格納する。
図2は、制御装置10−1〜10−n、ネットワーク装置20、検知装置30、及び管理装置40のハードウェア構成例を示す。制御装置10−1〜10−n、ネットワーク装置20、検知装置30、及び管理装置40は、例えば、バスなどの内部通信線16で連結された、通信装置11、入出力装置12、補助記憶装置13、CPU14、及びメモリ15を含む計算機17上に構成される。
CPU14は、メモリ15に格納されたプログラムに従って動作するプロセッサ及び/又は論理回路を含む。メモリ15は、不揮発性の記憶素子であるROM及び揮発性の記憶素子であるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU14が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
補助記憶装置13は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置であり、CPU14が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置13から読み出されて、メモリ15にロードされて、CPU14によって実行される。
計算機17は、入出力インターフェースを有してもよい。入出力インターフェースは、入出力装置12が接続され、オペレータからの入力を受け、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。入出力装置12は、例えば、キーボードやマウスの等の入力装置、及びディスプレイ装置やプリンタ等の出力装置を含む。
通信装置11は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信装置11は、例えば、USB等のシリアルインターフェースを含む。なお、計算機17は、複数の通信装置11を含んでもよい。例えば、ネットワーク装置20に含まれる各通信部は、それぞれ異なる通信装置11によって実現されてもよい。
CPU14が実行するプログラムは、例えば、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して計算機17に提供され、非一時的記憶媒体である不揮発性の補助記憶装置13に格納されてもよい。このため、計算機17は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
制御装置10−1〜10−n、ネットワーク装置20、検知装置30、及び管理装置40は、物理的に一つの計算機17上で、又は、論理的又は物理的に構成された複数の計算機17上で構成される計算機システムであり、同一の計算機17上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
プログラムはCPU14によって実行されることで、定められた処理を記憶装置及び通信ポートを用いながら行う。従って、本実施形態及び他の実施形態においてプログラムを主語とする説明は、CPU14を主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する計算機17及び計算機システムが行う処理である。
CPU14は、プログラムに従って動作することによって、所定の機能を実現する機能部(手段)として動作する。例えば、CPU14は、通信パケット取得部302に従って動作することで通信パケット取得部(通信パケット取得手段)として機能し、業務分類部303に従って動作することで業務分類部(業務分類手段)として機能する。他のプログラムについても同様である。さらに、CPU14は、各プログラムが実行する複数の処理のそれぞれを実現する機能部(手段)としても動作する。計算機17及び計算機システムは、これらの機能部(手段)を含む装置及びシステムである。
図3は、基準用データ生成処理の一例を示す。はじめに、動作モード管理部318は、例えば入出力装置12を介したユーザからの指示に従って、動作モードを初期モードに設定する(S501)。初期モードは、基準用データの生成処理を実行するためのモードである。動作モード管理部318が動作モードを初期モードに設定できない、又は後述するステップS502以降の処理が初期モードに設定されないまま実行されようとする場合は、制御システム向け不正通信検知システム100は以降の処理を中止してもよい。
次に、基準パケット生成部401は、基準パケットを生成する(S502)。基準パケット生成部401は、例えば、入出力装置12を介したユーザからの基準パケット生成指示を受け付けたこと、又は動作モードが初期モードに変わった旨の通知を動作モード管理部318から受信したことをトリガとして基準パケットの生成を開始する。
次に、通信部406は、基準パケット生成部401が生成した基準パケットを、制御装置10−nに送信する(S503)。ここで基準パケットとは、制御コマンドが示す業務が重要業務であるか否かを判定する基準を示すパケットである。例えば、Ping等のネットワークレベルで送受信されるパケット(即ちネットワーク層より上位の層における処理を実施しないパケット)、及びユーザアプリケーションにおいて、アプリケーションのデータ参照のみを行い、書き込みや内部処理を行わないようなパケット、は基準パケットの一例である。また、基準パケット生成部401は、特性(例えば、パケットのデータ量、及びパケットが示す制御処理等)の異なる複数の基準パケットを送信してもよい。
次に、ネットワーク装置20のパケット複製部201は、管理装置40から受信した基準パケットを複製する(S504)。次に、第二通信部203はパケット複製部201が複製した基準パケットを検知装置30に送信し(S505)、第三通信部204はパケット複製部201が複製した基準パケットを制御装置10−nに送信する(S506)。
次に、通信パケット取得部302は、当該複製した基準パケットを通信部301がネットワーク装置20から受信した受信時刻を、例えば検知装置30のOS等から取得する(S508)。次に、通信パケット取得部302は、通信部301が受信した基準パケットのサイズを取得する(S509)。次に、通信パケット取得部302は、受信した基準パケットの情報を示す通信パケットを通信パケット格納部310に格納する(S510)。
ここで、通信パケット格納部310に格納される通信パケットの構成例を説明する。図4は、通信パケット格納部310に格納される通信パケットの構成例を示す。通信パケット1101は、例えば、検知装置30が当該通信パケットに対応する基準パケットを受信した時刻を示す受信時刻1102と、当該通信パケットに対応する基準パケットのサイズ1103と、当該通信パケットに対応する基準パケットのバイナリデータを示すパケットデータ1104と、を含む。なお、通信パケット1101の構成要素の順序は図4の例に限定されるものではない。
図3の説明に戻る。一方、制御処理部101−nは、ネットワーク装置20から受信した基準パケットを処理する(S507)。次に、制御処理部101−nは、基準パケットの処理結果を示すレスポンスを生成し、通信部102−nは制御処理部101−nが生成したレスポンスを管理装置40に送信する(S511)。
次に、ネットワーク装置20のパケット複製部201は、受信したレスポンスを複製する(S512)。次に、第二通信部203はパケット複製部201が複製したレスポンスを検知装置30に送信し(S513)、第三通信部204はパケット複製部201が複製したレスポンスを管理装置40に送信する(S514)。
次に、通信パケット取得部302は、通信部301がネットワーク装置20から当該複製したレスポンスを受信した受信時刻を、例えば検知装置30のOS等から取得する(S515)。次に、通信パケット取得部302は、通信部301が受信した当該複製したレスポンスのサイズを取得する(S516)。次に、通信パケット取得部302は、受信したレスポンスの情報を示す通信パケットを通信パケット格納部310に格納する(S517)。レスポンスの情報を示す通信パケットの構成は、図4に例示した通信パケットの構成と同様である。
次に、基準用データ生成部319は、ステップS510で格納された基準パケットの通信パケットの情報と、ステップS517で格納されたレスポンスの通信パケットの情報と、を用いて基準用データを生成する(S518)。
ここで基準用データの構成例を説明する。図5は、基準用データの構成例を示す。基準用データ1201は、例えば、基準パケットを検知装置30が受信した時刻を示すコマンド受信時刻1202と、基準コマンドに対するレスポンスを検知装置30が受信した時刻を示すレスポンス受信時刻1203と、コマンド受信時刻1202とレスポンス受信時刻1203との差分を示す応答時間1204と、基準パケットのサイズ1205と、レスポンスパケットのサイズ1206と、コマンドパケットのサイズとレスポンスパケットのサイズとの和を示す送受信サイズ1207と、基準パケットのバイナリデータを示すパケットデータ1208と、を含む。なお、基準用データ1201の構成要素の順序は図5の例に限定されるものではない。
図3の説明に戻る。次に、基準用データ生成部319は、生成した基準用データを基準用データ格納部311に格納する(S519)。なお、図3の例では検知装置30が基準用データを生成する処理を例示したが、検知装置30以外の装置が基準用データを生成してもよい。また、図3の処理によらず生成された基準用データが基準用データ格納部311に予め直接格納されていてもよい。
図6は、制御装置10−1と制御装置10−nの間で試運転時等に行われる制御業務の通信パケットに基づく、分類用データ生成処理の一例を示す。はじめに、動作モード管理部318は、例えば入出力装置12を介したユーザからの指示に従って、動作モードを収集モードに設定する(S601)。収集モードは、制御業務の通信パケットを収集し、分類用データを生成するためのモードである。ここで、動作モード管理部318が動作モードを収集モードに設定できない、又は後述するステップS602以降の処理が収集モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム100は以降の処理を中止してもよい。
次に、制御処理部101−1は制御コマンドを生成する(S602)。制御コマンドは、例えば、制御装置10の動作の制御、及び制御装置10の状態の取得等を行うためのコマンドである。制御処理部101−1は、例えば、入出力装置12を介したユーザからの指示を受け付けたこと、又は動作モードが収集モードに変わった旨の通知を動作モード管理部318から受信したことをトリガとして制御コマンドの生成を開始する。次に、通信部102−1は、制御処理部101−1が生成した制御コマンドを制御装置10−nに送信する(S603)。
次に、ネットワーク装置20のパケット複製部201は、第三通信部204が制御装置10−1から受信した制御コマンドを複製する(S604)。次に、第二通信部203はパケット複製部201が複製した制御コマンドを検知装置30に送信し(S605)、第三通信部204はパケット複製部201が複製した制御コマンドを制御装置10−nに送信する(S606)。
次に、通信パケット取得部302は、当該複製した制御コマンドを通信部301がネットワーク装置20から受信した受信時刻を、例えば検知装置30のOS等から取得する(S608)。次に、通信パケット取得部302は、受信した制御コマンドのサイズを取得する(S609)。次に、通信パケット取得部302は、受信した制御コマンドの情報を示す通信パケットを通信パケット格納部310に格納する(S610)。制御コマンドの情報を示す通信パケットの構成は、図4に例示した通信パケットの構成と同様である。
一方、制御処理部101−nは、ネットワーク装置20から受信した制御コマンドが示す制御業務を行う(S607)。次に、制御処理部101−nは制御業務の処理結果を示すレスポンスを生成し、通信部102−nは制御処理部101−nが生成したレスポンスを制御装置10−1に送信する(S611)。
次に、ネットワーク装置20のパケット複製部201は、第三通信部204が受信したレスポンスを複製する(S612)。次に、第二通信部203はパケット複製部201が複製したレスポンスを検知装置30に送信し(S613)、第一通信部202はパケット複製部201が複製したレスポンスを制御装置10−1に送信する(S614)。
次に、通信パケット取得部302は、当該複製したレスポンスを通信部301がネットワーク装置20から受信した受信時刻を、例えば検知装置30のOS等から取得する(S615)。次に、通信パケット取得部302は、通信部301が受信したレスポンスのパケットの送受信サイズを取得する(S616)。次に、通信パケット取得部302は、受信したレスポンスの情報を示す通信パケットを通信パケット格納部310に格納する(S617)。レスポンスの情報を示す通信パケットの構成は、図4に例示した通信パケットの構成と同様である。
次に、分類用データ生成部320は、S610で格納された制御コマンドの通信パケットの情報と、S617で格納されたレスポンスの通信パケットの情報と、を用いて分類用データを生成する(S618)。なお、分類用データの構成は、図5に示した基準用データの構成と同様である。具体的には、分類用データの構成は、図5の基準用データの構成の説明中の「基準パケット」を「制御コマンド」と読み替えることにより、説明される。
次に、分類用データ生成部320は、生成した分類用データを分類用データ格納部312に格納する(S619)。図6の処理は、1つの制御コマンドに対して1つの分類用データが生成される処理を示す。本実施例においては、業務分類の対象とする複数のコマンドそれぞれに対して、ステップS602〜ステップS619の処理が実施される。
図7は、基準用データや分類用データが生成された後に実行されるフィルタポリシ生成処理の一例を示す。はじめに、例えば入出力装置12を介したユーザからの指示に従って、フィルタポリシ生成処理が開始する(S701)。
具体的には、例えば、動作モード管理部318が当該指示に従って、動作モードをフィルタポリシ生成モードに設定することにより、フィルタポリシ生成処理が開始する。フィルタポリシ生成モードは、フィルタポリシを生成するためのモードである。ここで、動作モード管理部318が動作モードをフィルタポリシ生成モードに設定できない、又は後述するステップS702以降の処理がフィルタポリシ生成モードに設定されないまま実行されようとする場合には、検知装置30は以降の処理を中止してもよい。
次に、業務分類部303は、分類用データ格納部312に格納されている分類用データを取得する(S702)。次に、業務分類部303は、取得した分類用データそれぞれに対して、当該分類用データの応答時間や送受信サイズに基づいて、分類用データに対応する制御コマンドが示す制御業務の重要度を示す分類指標を算出する(S703)。
分類用データの応答時間を送受信サイズで割った値は当該分類用データの分類指標の一例である。また、分類用データの応答時間は当該分類用データの分類指標の一例である。また、応答時間の増加関数であり、かつ送受信サイズの減少関数である所定の関数に、分類用データの応答時間及び送受信サイズを代入した値は、当該分類用データの分類指標の一例である。
次に、業務分類部303は、生成した分類指標それぞれと、判定閾値格納部313に格納されている判定閾値と、を比較して、分類用データそれぞれに対して業務を識別する情報を示す業務IDを割り当てる。
なお、業務分類部303は、例えば、以下のようにして、各分類用データに業務IDを割り当てる。業務分類部303は、例えば、算出した分類指標を小さい順にソートする。業務分類部303は、最小の分類指標を含み、かつ長さが判定閾値である区間、に含まれる分類指標に対応する分類用データに第1の業務IDを割り当てる。さらに、業務分類部303は、業務IDが割り当てられていない分類用データの最小の分類指標を含み、かつ既に業務IDが割り当てられた分類用データの分類指標を含まない区間であって、長さが判定閾値である区間に、含まれる分類指標に対応する分類用データに第2の業務IDを割り当てる。業務分類部303は同様の処理を繰り返すことにより、全ての分類用データに業務IDを割り当てることができる。業務分類部303は、上述の処理により、高速かつ高精度に同一の業務に属する分類用データを特定することができる。
業務分類部303は、分類用データそれぞれに対応する業務分類データを生成し、生成した業務分類データを業務分類データ格納部314に格納する(S704)。ここで業務分類データの構成例を説明する。
図8は、業務分類データ格納部314に格納される業務分類データの構成例を示す。業務分類データ1301は、当該業務分類データに対応する分類用データの業務ID1302と、当該業務分類データに対応する分類用データの分類指標1303と、当該業務分類データに対応する分類用データのパケットデータを示すパケットデータ1304と、を含む。なお、業務分類データは、分類指標1303を含まなくてもよい。また、業務分類データ1301の構成要素の順序は上記に限定されるものではない。
図7の説明に戻る。次に、重要業務判定部304は、基準用データ格納部311に格納されている基準用データの分類指標を用いて、生成した業務分類データの業務IDから重要業務の業務IDを決定し、決定した業務IDをフィルタポリシ格納部315に格納する(S705)。
なお、重要業務判定部304は、例えば、以下のようにして、重要業務の業務IDを決定する。重要業務判定部304は、例えば、業務IDそれぞれに対して、当該業務IDを有する業務分類データから、1つ分類指標を選択する。なお、このとき、重要業務判定部304は、当該業務IDに対応する業務分類データから、最小の分類指標を選択するのが好ましい。重要業務判定部304は、基準用データの分類指標と、選択した分類指標それぞれと、を比較し、基準用データの分類指標より大きい分類指標を有する業務IDを重要業務の業務IDに決定する。
基準用データの分類指標は、基準パケットの応答時間に基づいて定められている。従って、例えば、基準パケットがネットワークレベルで送受信されるパケットである場合、重要業務判定部304が上述の処理を実行することにより、ネットワークレベルより上位のレベルの処理を実行する制御コマンドに対応する分類用データが重要業務に分類される可能性を高くすることができる。
また、例えば、基準パケットが、ユーザアプリケーションにおいて、アプリケーションのデータ参照のみを行い、書き込みや内部処理を行わないようなパケットである場合、重要業務判定部304が上述の処理を実行することにより、アプリケーションのデータ参照以外の処理を実行する制御コマンドに対応する分類用データが重要業務に分類される可能性を高くすることができる。
また、重要業務判定部304は、所定の閾値と、選択した分類指標それぞれと、を比較し、当該所定の閾値より大きい分類指標を有する業務IDを重要業務の業務IDに決定してもよい。
以下、重要業務の業務IDそれぞれに対してフィルタポリシが作成される処理の例を説明する。フィルタポリシ生成部306は、フィルタポリシが未作成の1つの重要業務の業務IDをフィルタポリシ格納部315から取得し、取得した業務IDに対応する全ての業務分類データのパケットデータ1304を、業務分類データ格納部314から取得する(S706)。
次に、差分抽出部305は、取得したパケットデータ内のペイロードそれぞれを比較し、ペイロード内においてデータが異なる領域を示す差分領域を特定する(S707)。具体的には、例えば、差分抽出部305は、取得したペイロードそれぞれの各ビットを比較し、全てのペイロードにおいて同一の値を有するビット以外のビットからなる領域を差分領域に決定する。差分抽出部305が差分領域を抽出することにより、後述するステップS1010の異常検知処理において、検知精度の低下を抑制しつつ、検知部308が異常検知のために参照する領域を減少させることができ、ひいては処理量を減少させることができる。なお、S707において、差分抽出部305はペイロードの全てのビットを差分領域としてもよい。
ここで、例えば、差分抽出部305が取得したパケットデータ内のそれぞれの各ビットビットを比較した際に、全てのパケットデータにおいて同一の値を有するビット数がペイロードの全ビット数の所定割合以下であると判定した場合、全てのパケットデータにおいて同一の値を有するビットからなる領域を、差分領域に代えて特定してもよい。
次に、フィルタポリシ生成部306は、ステップS706で取得した業務ID及びパケットデータ1304と、差分抽出部305が決定した差分領域と、に基づいて、フィルタポリシを生成し、生成したフィルタポリシをフィルタポリシ格納部315に格納する(S708)。
ここで、フィルタポリシの構成例について説明する。図9は、フィルタポリシ格納部315に格納されるフィルタポリシの構成例を示す。フィルタポリシ1401は、例えば、ステップS706で取得した業務ID1402と、対応する業務IDの業務分類データのパケットデータ1304から特定されるヘッダ情報と、抽出した差分領域を示す検知領域1408と、を含む。
フィルタポリシ1401のヘッダ情報は、例えば、通信パケットの送信元1403と、通信パケットの送信先1404と、通信パケットのプロトコル1405と、通信パケットの送信先ポート番号1406と、通信パケットのその他の特徴を示すオプション1407と、を含む。
なお、例えば、ステップS706において取得したパケットデータに、複数種類の送信先が含まれていた場合、フィルタポリシ生成部306は、ステップS708において、例えば、最も出現数の多い送信先や全ての送信先を、ステップS706で取得した業務IDに対応するフィルタポリシ1401に含める。送信先以外のヘッダ情報についても同様である。なお、フィルタポリシ1401は、入出力装置12を介してユーザから直接入力されてもよい。また、フィルタポリシ1401の構成要素の順序は上記に限定されるものではない。
図7の説明に戻る。次に、フィルタポリシ生成部306は、フィルタポリシ格納部315に、フィルタポリシが生成されていない重要業務の業務IDが存在するか否かを検証する(S709)。フィルタポリシ生成部306が、フィルタポリシが生成されていない重要業務の業務IDが存在すると判定した場合(S709:Yes)、ステップS706に戻って未生成の業務IDに対してフィルタポリシの生成を行う。一方、フィルタポリシ生成部306が全ての重要業務の業務IDに対してフィルタポリシが生成されていると判定した場合(S709:No)、処理を終了する(S710)。
図10は、検知装置30に格納されているフィルタポリシの収集処理及び更新処理の一例を示す。はじめに、動作モード管理部318は、例えば入出力装置12を介したユーザの指示に従って、動作モードを保守モードに設定する(S801)。保守モードは、ポリシの収集処理及び更新処理等を実施するためのモードである。ここで、動作モード管理部318が動作モードを保守モードに設定できない、又は後述するステップS802以降の処理が保守モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム100は以降の処理を中止してもよい。
次に、フィルタポリシ収集部404はフィルタポリシ収集コマンドを生成する(S802)。フィルタポリシ収集部404は、例えば、入出力装置12を介したユーザからの指示を受け付けたこと、又は動作モードが保守モードに変わった旨の通知を動作モード管理部318から受信したことをトリガとしてフィルタポリシ収集コマンドの生成を開始する。
次に、通信部406はフィルタポリシ収集部404が生成したフィルタポリシ収集コマンドを検知装置30に送信し(S803)、第二通信部203は第一通信部202が受信したフィルタポリシ収集コマンドを検知装置30に送信する(S804)。
次に、フィルタポリシ更新部321は、通信部301が受信したフィルタポリシ収集コマンドに従って、フィルタポリシ格納部315に格納されているフィルタポリシを取得する(S805)。次に、通信部301はフィルタポリシ更新部321が取得したフィルタポリシを管理装置40に送信し(S806)、第一通信部202は第二通信部203が受信したフィルタポリシを管理装置40に送信する(S807)。
なお、フィルタポリシ格納部315にフィルタポリシが格納されていない場合、フィルタポリシ更新部321は、ステップS805においてフィルタポリシを取得する代わりにフィルタポリシが存在しない旨を示すレスポンスを生成してもよい。このとき、S806及びS807において、フィルタポリシに代えて当該レスポンスが送信される。
次に、フィルタポリシ収集部404は、通信部406が受信したフィルタポリシを入出力装置12に出力する。次に、フィルタポリシ生成部402は、ユーザからの入出力装置12を介した指示に従って、当該フィルタポリシを更新する(S808)。なお、通信部406が、フィルタポリシが存在しない旨を示すレスポンスを受信した場合、フィルタポリシ生成部402は、ユーザからの入出力装置12を介した指示に従ってフィルタポリシを新規に生成してもよい。
次に、通信部406はフィルタポリシ生成部402が更新した新フィルタポリシを検知装置30に送信し(S809)、第二通信部203は第一通信部202が受信した新フィルタポリシを検知装置30に送信する(S810)。次に、フィルタポリシ更新部321は、通信部301が受信した新フィルタポリシをフィルタポリシ格納部315に格納することで、フィルタポリシを更新する(S811)。
次に、フィルタポリシ更新部321は、更新結果を示すレスポンスを生成する。通信部301は、当該レスポンスを管理装置40に送信し(S812)、第一通信部202は第二通信部203が受信した当該レスポンスを管理装置40に送信する(S813)。
次に、フィルタポリシ生成部402は、通信部406が受信したレスポンスが示す更新結果を参照して、フィルタポリシ更新部321による更新処理が成功したか否か判定する(S814)。フィルタポリシ生成部402は、更新処理が成功したと判定した場合(S814:Yes)、S808で更新したフィルタポリシをフィルタポリシ格納部407に格納する(S815)。
一方、フィルタポリシ収集部404は、更新処理が失敗したと判定した場合(S814:No)、S809に戻り、再度新フィルタポリシを送信する。なお、例えば、ステップS814における初回の判定処理から所定時間が経過した場合、又はステップS814における判定処理が所定回数行われた場合には、フィルタポリシ生成部402は処理を終了してもよい。
次に、動作モード管理部318は、例えば入出力装置12を介したユーザからの指示に従って、動作モードを運用モードに設定する(S816)。運用モードは、検知装置30が受信したパケットをフィルタポリシ及び検知ポリシに基づいて、フィルタリングするモードである。また、例えば、S811におけるフィルタポリシ更新が成功した場合に、動作モード管理部318は、自動的に動作モードを運用モードに設定してもよい。図10に示した処理により、管理装置40のユーザはフィルタポリシを容易に確認することができ、さらにフィルタポリシを柔軟に変更することができる。
図11は、検知装置30に格納されている検知ポリシの収集処理及び更新処理の一例を示す。はじめに、動作モード管理部318は、例えば入出力装置12を介したユーザの指示に従って、動作モードを保守モードに設定する(S901)。ここで、動作モード管理部318が動作モードを保守モードに設定できない、又は後述するステップS902以降の処理が保守モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム100は以降の処理を中止してもよい。
次に、検知ポリシ収集部405は、検知ポリシ収集コマンドを生成する(S902)。検知ポリシ収集部405は、例えば、入出力装置12を介したユーザからの指示を受け付けたこと、又は動作モードが保守モードに変わった旨の通知を動作モード管理部318から受信したことをトリガとして検知ポリシ収集コマンドの生成を開始する。
次に、通信部406は、検知ポリシ収集部405が生成した検知ポリシ収集コマンドを検知装置30に対して送信し(S903)、第二通信部203は第一通信部202が受信した検知ポリシ収集コマンドを検知装置30に送信する(S904)。
次に、検知ポリシ更新部322は、ネットワーク装置20から受信した検知ポリシ収集コマンドに従って、検知ポリシ格納部316に格納されている検知ポリシを取得する(S905)。次に、通信部301は、検知ポリシ更新部322が取得した検知ポリシを管理装置40に送信し(S906)、第一通信部202は第二通信部203が受信した検知ポリシを管理装置40に送信する(S907)。
なお、検知ポリシ格納部316に検知ポリシが格納されていない場合、検知ポリシ更新部322は、ステップ905において検知ポリシを取得する代わりに検知ポリシが存在しない旨を示すレスポンスを生成してもよい。このとき、S906及びS907において、検知ポリシに代えて当該レスポンスが送信される。
次に、検知ポリシ収集部405は、通信部406が受信した検知ポリシを入出力装置12に出力する。次に、検知ポリシ生成部403は、ユーザからの入出力装置12を介した指示に従って、受信した検知ポリシを更新する(S908)。なお、検知ポリシ生成部403は、検知ポリシが存在しない旨を示すレスポンスを通信部406が受信した場合、ユーザからの入出力装置12を介した指示に従って、検知ポリシを新規に生成してもよい。次に、通信部406は、検知ポリシ生成部403が更新した新検知ポリシを検知装置30に送信し(S909)、第二通信部203は第一通信部202が受信した新検知ポリシを検知装置30に送信する(S910)。
次に、検知ポリシ更新部322は、通信部301がネットワーク装置20から受信した新検知ポリシを検知ポリシ格納部316に格納することで、検知ポリシを更新する(S911)。次に、フィルタポリシ更新部321は、更新結果を示すレスポンスを生成する。通信部301は当該レスポンスを管理装置40に送信し(S912)、第一通信部202は第二通信部203が受信した当該レスポンスを管理装置40に送信する(S913)。
次に、検知ポリシ生成部403は、通信部406が受信したレスポンスが示す更新結果を参照して、検知ポリシ更新部322による更新処理が成功したか否か判定する(S914)。検知ポリシ生成部403は、更新処理が成功したと判定した場合(S914;YES)、S904で生成した検知ポリシを検知ポリシ格納部408に格納する。一方、検知ポリシ生成部403は、更新処理が失敗したと判定した場合(S914:No)、S909に戻り、再度新検知ポリシを送信する。
なお、例えば、ステップS914における初回の判定処理から所定時間が経過した場合、又はステップS914における判定処理が所定回数行われた場合には、検知ポリシ生成部403は処理を終了してもよい。次に、動作モード管理部318は、例えば、入出力装置12を介したユーザからの指示に従って、動作モードを運用モードに設定する(S916)。また、例えば、S811におけるフィルタポリシ更新が成功した場合に、動作モード管理部318は、自動的に動作モードを運用モードに設定してもよい。図11に示した処理により、管理装置40のユーザは検知ポリシを容易に確認することができ、さらに検知ポリシを柔軟に変更することができる。
図12は、検知ポリシ格納部316に格納される検知ポリシの構成例を示す。検知ポリシ1501は、業務ID1502と、検知領域1503と、検知領域に含まれるデータのパターンの数を示すパターン数1504と、検知領域に含まれるデータのパターンを示す正当データパターン1505と、を含む。なお、検知ポリシ1501の構成要素の順序は上記に限定されるものではない。
業務ID1502は、例えば、重要業務の業務IDである。即ち、検知ポリシ格納部316は、フィルタポリシ格納部315に格納されたフィルタポリシの業務IDそれぞれに対応する検知ポリシを含む。検知領域1503は、例えば業務ID1502と同一の業務ID1402を有するフィルタポリシの検知領域1408を示す。
図13は、検知装置30による、制御装置10−1と制御装置10−nの間で送受信されるパケットの正当性の検証処理の一例を示す。はじめに、動作モード管理部318は、例えば入出力装置12を介したユーザの指示に従って、動作モードを運用モードに設定する(S1001)。例えば、ステップS816又はステップS916の処理をステップS1001に代えてもよい。
ここで、動作モード管理部318が動作モードを運用モードに設定できない、又はステップS1002以降の処理が運用モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム100は以降の処理を中止してもよい。
次に、制御処理部101−1は、制御コマンドを生成する(S1002)。次に、通信部102−1は、制御処理部101−1が生成した制御コマンドを制御装置10−nに送信する(S1003)。次に、パケット複製部201は、制御装置10−1から受信した制御コマンドを複製する(S1004)。次に、第二通信部203は、パケット複製部201が複製した制御コマンドを検知装置30に送信し(S1005)、第一通信部202はパケット複製部201が複製した制御コマンドを制御装置10−nに送信する(S1006)。
制御処理部101−nは、ネットワーク装置20から受信した制御コマンドに従って制御業務を実行する(S1007)。フィルタリング処理部307は、通信部301がネットワーク装置20から受信した制御コマンドに対して、フィルタポリシ格納部315に格納されているフィルタポリシを用いて、パケットフィルタを行う(S1008)。
具体的には、例えば、フィルタリング処理部307は、受信した制御コマンドのヘッダ情報と一致するヘッダ情報を有するフィルタポリシがフィルタポリシ格納部315内に存在する場合、当該制御コマンドをフィルタ対象のパケットであると判定する。また、フィルタリング処理部307は、受信した制御コマンドのヘッダ情報と一致するヘッダ情報を有するフィルタポリシがフィルタポリシ格納部315内に存在しない場合、当該制御コマンドをフィルタ対象外のパケットであると判定する。
フィルタリング処理部307が、制御コマンドをフィルタ対象外のパケットであると判定した場合(S1008:No)、検知処理を終了する(S1009)。一方、フィルタリング処理部307が、制御コマンドをフィルタ対象のパケットであると判定した場合(S1008:Yes)、検知部308は検知ポリシ格納部316に格納されている検知ポリシを用いて、検知処理を行う(S1010)。
具体的には、検知部308は、S1008においてヘッダ情報が一致したフィルタポリシの業務IDを取得し、取得した業務IDを有する検知ポリシを検知ポリシ格納部316から取得する。検知部308は、取得した検知ポリシの検知領域1503を取得し、受信した制御コマンドのペイロードの当該検知領域内のデータをチェックする。検知部308は、当該検知領域内のデータが、取得した検知ポリシの正当データパターン1505が示すデータに一致する場合、異常がないと判定する。また、検知部308は、当該検知領域内のデータが、取得した検知ポリシの正当データパターン1505が示すデータに一致しない場合、異常があると判定する。
検知部308が、異常がない、即ち当該制御コマンドが不正なコマンドでないと判定した場合(S1010:No)、検知処理を終了する(S1011)。一方、検知部308が、異常がある、即ち当該制御コマンドが不正なコマンドであると判定した場合(S1010:Yes)、アラート生成部309はアラートを生成する(S1012)。アラート生成部309は、例えば、当該制御コマンドを受信した時刻、当該制御コマンドに対応する業務ID、及び当該制御コマンドの検知領域のデータ等をアラートに含める。
次に、アラート生成部309は、生成したアラートをアラート格納部317に格納する(S1013)。ここで、アラート生成部309が生成したアラートを通信部301が管理装置40に送信し、第二通信部203が受信したアラートを第一通信部202が管理装置40等に送信してもよい。また、検知装置30の入出力装置12及び/又は管理装置40の入出力装置がアラートを出力してもよい。
以上、本実施例の制御システム向け不正通信検知システム100は、フィルタポリシを用いて制御コマンドが重要業務に属しているか否かを判定し、重要業務に対応する制御コマンドに対して検知ポリシを用いたフィルタリングを実行する。制御システム向け不正通信検知システム100は当該処理により、少ない処理量で、効率的な不正通信検知処理を実施することができる。具体的には、低リソースの検知装置30単体を用いて、制御システム内の重要業務に関する不正通信を高速かつ高精度に検知することができる。
なお、例えば、本実施例の検知装置30にネットワーク装置20及び/又は管理装置40が含まれていてもよいし制御装置10や検知装置30や管理装置40にネットワークとの通信機能が含まれておらず、これらの装置が別の装置を経由してネットワークと通信を行ってもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。