本発明の一実施形態に係る制御システム向け不正通信検知システム1及び不正通信検知方法について説明する。なお、これにより本発明が限定されるものではない。
図1は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1の構成図である。
本実施形態の制御システム向け不正通信検知システム1は、図1に例示するように、制御装置101〜10nと、ネットワーク装置20と、検知装置30と、監視装置40と、ネットワーク50と、から構成されている。ここで、制御システムとは、例えば、電力、鉄道、水道、ガス等の社会インフラおよび自動車で利用される制御システムであり、センサの情報をもとにバルブ及びアクチュエータといったデバイスを動作させ、あらかじめ設定されている圧力や温度を保つように構成されている。なお、制御装置101〜10n、ネットワーク装置20、監視装置40、及びネットワーク50は、制御システムの一部としても機能している。
制御装置101〜10nは、制御処理を行う制御処理部1011〜101nと、ネットワーク50やネットワーク装置20等と通信を行う通信部1021〜102nと、を含む。
ネットワーク装置20は、ネットワーク装置20に入力される通信パケットを複製するパケット複製部201と、ネットワーク50と通信を行う第一通信部202と、検知装置30と通信を行う第二通信部203と、制御装置10nと通信を行う第三通信部204と、を含む。なお、ネットワーク装置20は、4つ以上の通信部を保有しても良い。
検知装置30は、観測値通信部301と、観測値取得部302と、判定パターン生成部303と、判定パターン更新部304と、パケット通信部305と、通信パケット取得部306と、判定リスト生成部307と、リスト判定部308と、類似性判定部309と、有害性判定部310と、判定リスト更新部311と、アラート生成部312と、観測値格納部313と、判定パターン格納部314と、通信パケット格納部315と、判定リスト格納部316と、類似度閾値格納部317と、類似パケット格納部318と、アラート格納部319と、動作モード管理部320と、受信時間格納部321と、通信識別部322と、通信識別情報格納部323と、を備える。
観測値通信部301は、ネットワーク50と通信を行う。観測値取得部302は、検知装置30に入力される観測値を取得する。判定パターン生成部303は、取得した観測値から判定パターンを生成する。判定パターン更新部304は、生成した判定パターンを更新する。パケット通信部305は、ネットワーク装置20と通信を行う。通信パケット取得部306は、検知装置30に入力される通信パケットを取得する。判定リスト生成部307は、取得した通信パケットから判定リストを生成する。リスト判定部308は、取得した通信パケットの正当性を検証する。類似性判定部309は、取得した通信パケットが判定リストに該当しない場合、取得した通信パケットと判定リストとの類似性を判定する。有害性判定部310は、類似性判定の結果、類似性があると判断した場合に、生成した判定パターンと取得した観測値を用いて、通信パケットの有害性を判定する。判定リスト更新部311は、通信パケットに有害性がないと判断した場合に、通信パケットを判定リストに追加する。アラート生成部312は、通信パケットに有害性があると判断した場合と類似性がないと判断した場合にアラートを生成する。
観測値格納部313は、観測値取得部302で取得した観測値を格納する。判定パターン格納部314は、取得した観測値から生成した判定パターンを格納する。通信パケット格納部315は、通信パケット取得部305で取得した通信パケットを格納する。判定リスト格納部316は、通信パケットの正当性を検証するために必要な情報を格納する。類似度閾値格納部317は、通信パケットと判定リストの類似性を判定する際に利用する情報を格納する。類似パケット格納部318は、類似性判定部309による類似性判定の結果、類似性があると判断した通信パケットを格納する。アラート格納部319は、アラート生成部312で生成したアラートを格納する。動作モード管理部320は、検知装置30の動作モードの管理を行う。受信時間格納部321は、通信パケットを受信した受信時間に関する情報を格納する。通信識別部322は、ネットワーク50やネットワーク装置20との通信で使用する通信プロトコルを識別する。通信識別情報格納部323は、通信プロトコルを識別するために必要な情報を格納する。
監視装置40は、ネットワーク50と通信を行う通信部401と、監視装置40に入力される観測値を取得する観測値取得部402と、観測値取得部で取得した観測値を格納する観測値格納部403と、を含む。
図2は、制御装置101〜10nのハードウェア構成を例示する図である。
各制御装置101〜10nは、通信装置11と、入出力装置12と、記憶装置13と、CPU14と、メモリ15と、を備え、各構成要素は、バスなどの内部通信線16で連結されている。また、各制御装置101〜10nには、センサ、バルブ及びアクチュエータ等のデバイスが接続されている。
図3は、ネットワーク装置20のハードウェア構成を例示する図である。
ネットワーク装置20は、第一通信装置211と、第二通信装置212と、第三通信装置213と、記憶装置22と、入出力装置23と、CPU24と、メモリ25と、を備え、各構成要素がバスなどの内部通信線26で連結されている。なお、ネットワーク装置20は、4つ以上の通信装置を保有しても良い。
図4は検知装置30や監視装置40のハードウェア構成を例示する図である。
検知装置30および監視装置40は、それぞれ、通信装置31と、入出力装置32と、記憶装置33と、CPU34と、メモリ35と、記憶媒体37を読み込み可能な読取装置36と、を備え、各構成要素がバスなどの内部通信線38で連結されている。
次に、本実施形態の制御システム向け不正通信検知システム1における処理フローについて説明する。以下に述べる処理フローは、制御装置101〜10n、ネットワーク装置20、検知装置30、および監視装置40の記憶装置に格納されたプログラムがメモリにロードされ、CPUにより実行されることにより、制御システム向け侵入検知システムを構築する装置上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体または通信媒体(ネットワークまたはネットワークを伝搬する伝送波)を介して、必要なときに導入されても良い。
図5は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、監視装置40を用いて、検知装置30で通信パケットの検知に利用する判定リスト及び判定パターンを生成する処理と、通信パケットの検知を行う処理と、判定リスト及び判定パターンを更新する処理と、の処理フローを示した図である。
はじめに、検知装置30は、検知装置30の動作モードを試運転モードに設定する(S501(S501と表現する。以下同様))。ここで、動作モードを試運転モードに設定できない、もしくは、以降の処理が試運転モードに設定されないまま実行されようとする場合には、以降の処理を中止してもよい。
次に、検知装置30は、試運転モードにおける通信パケットの収集業務を行う(S502)。なお、収集業務の処理フローは図6において詳細に説明する。
次に、検知装置30は、S502で収集した通信パケット(通信パケット格納部315に格納された通信パケット)に基づき、判定リスト生成処理を行う(S503)。判定リストとは、制御システムを正常に動作させる通信パケットに基づき生成されるデータパターンのリストである。ここで、判定リスト生成処理の例として、まず、S502で収集した通信パケットに格納された通信プロトコル番号、サイズ、及び通信パケットの受信周期などの情報と、通信識別情報格納部323に格納された情報とを用いて、通信に使用しているDNP3.0又はEthernet/IP及びModbusなどの通信プロトコルを識別する。これにより、判定リスト生成に使用するデータパターンが格納された通信パケットの領域を識別することを想定しているが、これに限定されるものではない。
また、通信パケットから判定リスト格納部316に格納するエントリの生成方法の例として、通信パケットの識別した領域に格納されているバイナリデータのパターンを抽出し、データパターンが格納されていたパケット内の領域を表す情報と、データパターンを組み合わせて生成する方法、又は、データパターンと通信周期を表す情報を組み合わせて生成する方法を想定しているが、これに限定されるものではない。
次に、検知装置30は、生成したエントリを判定リスト格納部316に格納する(S504)。ここで、判定リスト(A1601、図16)へ格納する方法の例として、生成したエントリに、エントリ番号に相当するリストIDを付与し、リストIDとエントリの組を判定リスト格納部316へ格納することを想定しているが、これに限定されるものではない。なお、判定リスト(A1601)の構成は、図16において詳細に説明する。
一方、監視装置40は、観測値の観測業務を行う(S505)。なお、観測値の構成は図12において詳細に説明する。また、観測業務の処理フローは図7において詳細に記載する。
次に、検知装置30は、観測値を収集するための観測値収集コマンド(A501)を監視装置40に送信する。なお、観測値収集コマンドの構成は図13において詳細に説明する。
次に、監視装置40は、観測値格納部403に格納されている観測値を取得する(S506)。
次に、監視装置40は、取得した観測値を検知装置30に送信する(A502)。
次に、検知装置30は、取得した観測値を観測値格納部313に格納し、判定パターン(A1401、図14)を生成する(S507)。判定パターンとは、正当な制御コマンドにより、制御システムを制御した時の、センサおよびアクチュエータなどのデバイスごとの、温度および圧力等の個々の観測項目の変化量及び周期に関する情報を想定しているが、これに限定されるものではない。なお、判定パターンの構成は図14において詳細に説明する。また、判定パターン生成処理の処理フローは図8において詳細に説明する。また、S507の処理ステップはS506の処理ステップに含めてもよい。
次に、検知装置30の動作モードを実運転モードに設定する(S508)。
次に、通信パケット取得部306で取得した通信パケットの検知業務を行う(S509)。当該検知業務では、判定リストのデータパターンに類似するデータパターンを有する通信パケットを、取得した通信パケットから抽出する処理等を行う。なお、通信パケットの構成は、図15において詳細に説明する。また、検知業務の処理フローは、図9において詳細に詳細な記載する。
一方、監視装置40は、S505と同様の観測値の観測業務を行う(S510)。
次に、検知装置30は、S509で取得した通信パケットの中で、判定リスト格納部316に格納された判定リストと類似したパケットが有るか無いかを判定する(S511)。すなわち、類似パケット格納部318に、通信パケットが格納されているか否かを判定する。その結果、無いと判定された場合には処理を終了する(S512)。
一方で、有ると判定された場合には、検知装置30は観測値収集コマンド(A503)を監視装置40に送信する。
次に、監視装置40は、観測値格納部403に格納されている観測値を取得する(S513)。
次に、監視装置40は取得した観測値を検知装置30に送信する(A504)。
次に、検知装置30は、取得した観測値を観測値格納部313に格納し、通信パケットの有害判定及び判定リスト更新処理を行う(S514)。なお、有害判定及び判定リスト更新処理の処理フローは、図11において詳細に説明する。
次に、検知装置30は、観測値格納部313に空き容量があるかどうか判定する(S515)。
判断の結果、空き容量がないと判定された場合は、検知装置30は、判定パターンの生成処理を行う(S516)。上記と同様に、判定パターンの構成は図14において詳細に説明し、判定パターン生成処理の処理フローは図8において詳細に説明する。当該処理により、S507で生成した判定パターンに代えて新たな判定パターンが生成され、制御システムの経年変化に応じて判定パターンを生成することができる。一方で、空き容量があると判定された場合は、S516の処理は行わない。
S516の処理の後、S509、S511、及びS514〜S516の処理が繰り返し実行される。
図6は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が行う収集業務S502の処理フローを示した図である。
はじめに、制御装置101は、検知装置30が試運転モードに設定されたことに基づき、試運転用の制御コマンドを生成する(S601)。当該試運転用の制御コマンドは、制御装置101に予め記憶されている。
次に、制御装置101は生成した制御コマンド(A601)を、ネットワーク装置20を介して制御装置10nに送信する。
次に、ネットワーク装置20は、制御措置101から受信した制御コマンドを複製する(S602)。
次に、ネットワーク装置20は、複製した制御コマンド(A601)を検知装置30と制御装置10nに送信する。
次に、検知装置30は、受信した通信パケットを通信パケット格納部315に格納する(S603)。
次に、制御装置10nは、制御装置101から受信した制御コマンド(A601)を用いて、制御装置10nに接続されているデバイスの制御業務を行う(S604)。
次、各デバイスを処理した結果を示すレスポンス(A602)を制御装置101に送信する。
次に、ネットワーク装置20は、受信したレスポンス(A602)を複製する(S605)。
次に、ネットワーク装置20は、複製したレスポンスを制御装置101および検知装置30に送信する。
次に、検知装置30は、受信したレスポンス(A602)を通信パケット格納部315に格納する(S606)。
図7は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、監視装置40が行う観測業務S505及びS510の処理フローを示した図である。
はじめに、制御装置10nは、収集可能な観測値を収集する(S701)。ここで観測値には、センサ及びアクチュエータなどのデバイスの、圧力、温度、及びタイミングなどの物理的なパラメータを含むことができるが、これらに限定されるものではない。次に、制御装置10nは、収集した観測値(A701)を、ネットワーク装置20を介して監視装置40に送信する。
次に、ネットワーク装置20は、受信した観測値(A701)を複製する(S702)。
次に、複製した観測値(A701)を監視装置40および検知装置30に送信する。
次に、監視装置40は、受信した観測値(A701)を観測値格納部403に格納する(S703)。なお、検知装置30は、受信した観測値(A701)を通信パケット格納部315に格納する。格納された通信パケットは、判定リスト生成処理(S503)及び検知業務(S509)に用いられる。
図8は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が行う判定パターン生成処理S507及びS516の処理フローを示した図である。
はじめに、検知装置30は、判定パターン生成処理を開始する(S801)。
次に、検知装置30は、観測値格納部313に格納されている観測値を取得する(S802)。
次に、検知装置30は、観測値が有する観測項目および観測された値を示す観測データを用いて、判定パターンを生成する(S803)。上記のように、判定パターンとは、センサ及びアクチュエータなどのデバイスごとに、温度や圧力といった個々の観測項目の変化量や周期に関する情報を想定しているが、これに限定されるものではない。また、判定パターンの生成方法の例として、取得した観測値を、観測値に含まれる装置IDごとに分類し、各装置IDにおいて観測項目ごとにさらに分類し、各観測項目において最大値、最小値、及び周期などを抽出し、抽出情報から変化量などを算出し、算出した情報(正当観測パターン)と観測項目と装置IDとを組み合わせて生成することを想定しているが、これに限定されるものではない。
次に、S802で取得した観測値における装置ID及び観測項目の中で、判定パターンが生成されていない装置ID及び観測項目の有無を検証する(S804)。検証の結果、判定パターンが生成されていない装置ID及び観測項目があると判断された場合には、ステップS803に戻って、別の装置ID及び観測項目に対する判定パターンの生成を行う。
一方、全ての装置ID及び観測項目において判定パターンが生成されていると判断された場合には、生成した判定パターンを判定パターン格納部314に格納する(S805)。
次に、観測値格納部313に格納された観測値を消去する(S806)。次に、処理を終了する(S807)。
図9は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が行う検知業務(S509)の処理フローを示した図である。検知業務では、制御装置間で送受信される通信パケットの正当性が検証される。
はじめに、制御装置101は、検知装置30が実運転モードに設定されたことに基づき、実運転用の制御コマンドを生成する(S901)。
次に、制御装置101は、生成した制御コマンド(A901)を、ネットワーク装置20を介して制御装置10nに送信する。
次に、ネットワーク装置20は、制御措置101から受信した制御コマンドを複製する(S902)。
次に、ネットワーク装置20は、複製した制御コマンド(A901)を検知装置30と制御装置10nに送信する。
次に、検知装置30は、ネットワーク装置20から受信した制御コマンドである通信パケット(A901)の受信時刻を取得する(S903)。また、受信した通信パケット(A901)は、通信パケット格納部315に格納される。
次に、受信した通信パケット(A901)に対して、判定リスト格納部316に格納されている判定リストを用いて、判定処理を行う(S904)。すなわち、通信パケットのパケットデータに該当するデータパターン(受信データ)が、判定リストの正当通信パターンの正当なデータパターン(参照データ)に一致するか否かが判定される。ここで、通信パケットの周期情報を用いて判定する場合は、過去に受信した通信パケットを通信パケット格納部315から読み出し判定を行うことを想定しているがこれに限定されるものではない。この場合、通信パケットのデータパターン及び受信周期に関する情報が、受信パターンに相当する。また、通信パケットに関する受信データは、データパターンと、それが格納されている領域に関する情報とを組み合わせて構成されてもよく、さらに受信周期に関する情報を組み合わせて構成してもよい。
この結果、通信パケットのパケットデータに該当するデータパターンが、判定リストの正当通信パターンの正当なデータパターンに一致する(該当)と判断された場合には、処理を終了する(S905)。
一方で、一致しない(非該当)と判断された場合には、検知装置30は、判定リスト格納部316に格納された判定リストを用いて類似度を算出する(S906)。なお、類似度算出処理の処理フローは図10において詳細に説明する。
次に、検知装置30は、S906で算出した類似度と、類似度判定閾値格納部317に格納された類似性を判定する際に利用する情報と、を用いて、受信した通信パケットのデータパターンと判定リストのデータパターンの類似判定処理を行う(S907)。ここで、S907では、類似度閾値格納部317に格納された閾値を読み出し、S906で算出された全ての類似度のうち、一つでも閾値の範囲内にあるか(所定の条件を満たすか)否かを判断する。この結果、全ての類似度が閾値の範囲外と判断された場合には、検知装置30は、アラートを生成する(S908)。
次に、検知装置30は、生成したアラートをアラート格納部319に格納する(S909)。一方で、全ての類似度のうち、一つでも閾値の範囲内と判断された場合には、通信パケットを類似パケットとして類似パケット格納部318に格納する(S910)。ここで、類似パケットの構成は図17で詳細説明する。また、類似パケット格納部318に既に同じデータパターンが格納されている場合には、格納済みである同じデータパターンの類似パケット領域に含まれるパターン数の更新を行い、類似パケットの新たな格納は行わない。
次に、制御装置10nは、制御装置101から受信した制御コマンド(A601)を用いて、制御装置10nに接続されているデバイスの制御業務を行う(S911)。
次に、各デバイスを処理した結果を示すレスポンス(A902)を制御装置101に送信する。
次に、ネットワーク装置20は、受信したレスポンス(A902)を複製する(S912)。
次に、ネットワーク装置20は、複製したレスポンス(A902)を検知装置30及び制御装置101に送信する。
次に、検知装置30は、ネットワーク装置20から受信したレスポンスである通信パケット(A902)の受信時刻を取得する(S913)。
次に、受信した通信パケット(A902)に対して、判定リスト格納部316に格納されている判定リストを用いて、判定処理を行う(S914)。この結果、通信パケットのパケットデータに該当するデータパターンが、判定リストの正当通信パターンの正当なデータパターンに合致する(該当)と判断された場合には、処理を終了する(S915)。
一方で、合致しない(非該当)と判断された場合には、検知装置30は、判定リスト格納部316に格納された判定リストを用いて類似度を算出する(S916)。
次に、検知装置30は、S916で算出した類似度と類似度判定閾値格納部317に格納された類似性を判定する際に利用する情報を用いて、受信パケットのデータパターンと判定リストのデータパターンの類似判定処理を行う(S917)。ここで、S917では、類似度閾値格納部317に格納された閾値を読み出し、S916で算出された全ての類似度が閾値の範囲内か否かを判断する。
この結果、閾値の範囲外と判断された場合には、アラートを生成する(S918)。
次に、生成したアラートをアラート格納部319に格納する(S919)。
一方で、閾値の範囲内と判断された場合には、通信パケットを類似パケット格納部318に格納する(S920)。ここで、類似パケット格納部318に既に同じデータパターンが格納されている場合には、格納済みである同じデータパターンの類似パケット領域に含まれるパターン数の更新を行い、類似パケットの新たな格納は行わない。
図10は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が行う類似度算出処理S906およびS916の処理フローを示した図である。
はじめに、検知装置30は、類似度算出処理を開始する(S1001)。
次に、検知装置30は、通信パケット格納部315に格納されている通信パケット(A901)を取得する(S1002)。
次に、検知装置30は、判定リスト格納部316に格納されている判定リストを取得する(S1003)。
次に、検知装置30は、通信パケットに格納されているパケットデータと、判定リストに格納されているリストIDに紐づいた正当データパターンを用いて類似度を算出する(S1004)。ここで、類似度とは、例えば、パケットデータと正当データパターンを1バイトなどのデータブロックに分割し、データブロック毎に一致しているか否かを判定し、一致している数を算出し、ブロック数で除算することで算出する方法や、ファジーハッシュなどを用いるが、これらに限定されるものではない。
次に、検知装置30は、判定リスト格納部316に格納されているリストIDの中で、類似度を算出していないリストIDの有無を検証する(S1005)。検証の結果、類似度を算出していないリストIDがあると判断された場合には、ステップS1003に戻り、別のリストIDに紐づいた正当データパターンを用いて類似度を算出する。一方で、検知装置30は、すべてのリストIDに対して類似度を算出済みであると判断された場合には、処理を終了する(S1006)。
図11は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が行う有害判定及び判定リスト更新処理S514の処理フローを示した図である。
はじめに、検知装置30は、有害判定及び判定リスト更新処理を開始する(S1101)。
次に、検知装置30は、類似パケット格納部318から一つの類似パケットを取得する(S1102)。
次に、検知装置30は、受信時間格納部321から類似パケットの受信時刻情報を収集する(S1103)。
次に、検知装置30は、類似パケットの受信時刻近辺の観測値を観測値格納部313から取得する(S1104)。ここで、観測値の取得方法の例として、受信時刻及び類似パケット内のデバイスのアドレス情報と、観測値の観測時刻及び装置IDとに基づき、観測値を取得することを想定しているが、これに限定されるものではない。
次に、検知装置30は、判定パターン格納部314から判定パターンを取得する(S1105)。
次に、検知装置30は、観測項目ごとに取得した観測値が観測項目の判定パターンに一致するか否かを判定する(S1106)。例えば、温度および圧力等の個々の観測項目の観測データが、判定パターンの観測項目の変化量の範囲内に収まっており、又は、バルブの開閉の周期が、判定パターンのバルブの周期と等しい場合に、判定パターンに一致していると判断される。その結果、観測項目ごとに取得した観測値が観測項目の判定パターンに一致しないと判断された場合には、当該観測値を削除して、アラートを生成する(S1107)。このように、不正な通信パケットを検知することができ、アラートを作業者に対し通知することができる。
次に、検知装置30は、生成したアラートをアラート格納部319に格納する(S1108)。
一方で、観測値が判定パターンに一致すると判断された場合には、検知装置30は、類似パケットから判定リストに追加するエントリを生成する(S1109)。ここで、エントリの生成方法の例として、類似パケットに格納されているデータパターンを抽出することを想定しているがこれに限定されるものではない。
次に、検知装置30は、生成したエントリを判定リスト格納部316に格納する(S1110)。ここで、エントリを格納する方法の例として、生成したエントリに、エントリ番号に相当するリストIDを付与し、リストIDとエントリの組を判定リスト316へ格納することを想定しているが、これに限定されるものではない。これにより、観測結果に基づいて、正当なデータパターンを有する通信パケットに関する新たなエントリを判定リストに対し追加することができる。
次に、検知装置30は、類似パケット格納部318から当該類似パケットを削除する(S1111)。
次に、検知装置30は、類似パケット格納部318に格納されている類似パケットのレコード数を取得する(S1112)。
次に、検知装置30は、類似パケット格納部318に格納されている類似パケットの有無を判定する(S1113)。判定の結果、レコード数が0でないと判断された場合には、検知装置30は、ステップS1102に戻って、別の類似パケットを類似パケット格納部318から取得する。一方で、レコード数が0と判断された場合には、処理を終了する(S1114)。
図12は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、監視装置40の観測値格納部403に格納される観測値の構成を例示する図である。
観測値(A1201)は、観測した時刻を示す観測時刻(A1202)と、装置を識別する情報を示す装置ID(A1203)と、観測された値を識別する情報を示す観測項目(A1204)と、観測された値を示す観測データ(A1205)と、から構成される。ここで、装置IDに使用する情報の例として、装置のIPアドレスを使用する方法があるが、これに限定されるものではない。また、観測値(A1201)の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、観測値(A1201)の構成要素の順序は上記に限定されるものではない。
図13は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30が監視装置40に送信する観測値収集コマンドの構成を例示する図である。
観測値収集コマンド(A1301)は、観測値を収集する指示であるコマンド(A1302)と、装置を識別する情報を示す装置ID(A1303)と、観測値の収集時刻を指定する時刻データ(A1304)と、から構成される。ここで、時刻データ(A1304)には、観測値の収集開始時刻と収集終了時刻が含まれていてもよいし、観測値の収集開始時刻と収集期間が含まれていてもよいし、複数の収集時刻が含まれていてもよい。また、装置IDに使用する情報の例として、装置のIPアドレスを使用する方法があるが、これに限定されるものではない。また、観測値収集コマンド(A1301)の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、観測値収集コマンド(A1301)の構成要素の順序は上記に限定されるものではない。
図14は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30の判定パターン格納部314に格納される判定パターンの構成を例示する図である。
判定パターン(A1401)は、装置を識別する情報を示す装置ID(A1402)と、観測された値を識別する情報を示す観測項目(A1403)と、観測された値の正当な挙動を示す正当観測パターン(A1404)から構成される。ここで、装置IDに使用する情報の例として、装置のIPアドレスを使用する方法があるが、これに限定されるものではない。また、判定パターン(A1401)の構成要素は上記に限定されるものではなく、少なくとも上記の要素が含まれていればよい。また、判定パターン(A1401)の構成要素の順序は上記に限定されるものではない。また、観測項目(A1403)には、一つ又は複数の観測項目を含んでいてもよいし、正当観測パターン(A1404)には、一つ又は複数の観測項目に対応する正当観測パターンを含んでいてもよい。
図15は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30の通信パケット格納部315に格納される通信パケットの構成を例示する図である。
通信パケット(A1501)は、パケットを受信した日時を示す受信日時(A1502)と、パケットのサイズを示すサイズ(A1503)と、パケットのバイナリデータを示すパケットデータ(A1504)から構成される。また、パケットデータ(A1504)は、ペイロードに含まれるデータのパターンを示すパケットデータである。ここで、通信パケット(A1501)の構成要素は上記に限定されるものではなく、少なくとも上記の構成が含まれていればよい。また、通信パケット(A1501)の構成要素の順序は上記に限定されるものではない。パケットデータには、制御コマンド、レスポンス、または、観測値等が含まれる。
図16は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30の判定リスト格納部316に格納される判定リストの構成を例示する図である。
判定リスト(A1601)は、正当データパターンを識別する情報を示すリストID(A1602)と、正当通信パターン(A1603)から構成される。ここで、正当通信パターン(A1603、参照データ)は、通信パケットの中で検知処理を行う領域を示す情報と、検知領域に含まれる正当なデータパターンとの組み合わせで構成されてもよいし、通信パケットに含まれる正当なデータパターンと、次に受信するまでの時間情報や受信パケット数などの受信周期情報との組み合わせで構成されてもよいし、これらに限定されるものではない。正当通信パターンを正当なデータパターンのみで構成することにより、処理速度を速くすることができ、正当通信パターンを、正当なデータパターンと、データパターンが格納されている通信パケット内の領域に関する情報及び/又はデータパターンの受信周期に関する情報と、を組み合わせて構成することにより、精度よく判定処理を行うことができる。また、判定リスト(A1601)の構成要素は上記に限定されるものではなく、少なくとも上記の要素を含んでいればよい。また、判定リスト(A1601)の構成要素の順序は上記に限定されるものではない。
図17は、本発明の第一の実施形態に係る制御システム向け不正通信検知システム1において、検知装置30の類似パケット格納部318に格納される類似パケットの構成を例示する図である。
類似パケット(A1701)は、パケットを受信した日時を示す受信日時(A1702)と、パケットのサイズを示すサイズ(A1703)と、ペイロードに含まれるデータのパターンを示すパケットデータ(A1704)と、パケットデータの受信回数を示すパターン数(A1705)から構成される。ここで、受信日時(A1702)には、例えば、パケットデータ(A1705)を含む通信パケットを初めて取得した受信日時を指定する方法が考えられるが、これに限定されるものではない。また、類似パケット(A1701)の構成要素は上記に限定されるものではなく、少なくとも上記の要素を含んでいればよい。また、類似パケット(A1701)の構成要素の順序は上記に限定されるものではない。
以上のように、本実施形態に係る不正通信検知システム1によれば、低負荷で不正通信検知システム1を構築できるので、処理性能に制約がある組込み装置であっても、効果的に制御システム内を流れる通信パケットの誤検知及び検知漏れの低減が可能となる不正通信検知システム1及び不正通信検知方法を提供することができる。
次に、本発明の第二の実施形態に係る制御システム向け不正通信検知システム2001について説明する。
図18は、本発明の第二の実施形態に係る制御システム向け不正通信検知システム2001の構成図である。
本実施形態の制御システム向け不正通信検知システムは、図18に例示するように、制御装置101〜10nと、ネットワーク装置20と、検知装置30と、監視装置40と、ネットワーク50と、から構成されている。
制御装置101〜10nと、ネットワーク装置20と、監視装置40の構成要素は図1と同様である。
検知装置30の構成要素は、図1で示した構成要素に加えて、類似パケット判定順序決定部324と、判定リスト追加箇所決定部325と、を備える。類似パケット判定順序決定部324は、類似パケット格納部318に格納された類似パケットの判定順序を決定する。判定リスト追加箇所決定部325は、有害性処理部310で無害と判断された類似パケットを、判定リスト格納部317に格納された判定リストへ追加する位置を決定する。
本実施形態の制御システム向け不正通信検知システム2001における処理フローについて説明する。以下に述べる処理フローは、制御装置101〜10nやネットワーク装置20や検知装置30や監視装置40の記憶装置に格納されたプログラムがメモリにロードされ、CPUにより実行されることにより、制御システム向け侵入検知システムを構築する装置上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体または通信媒体(ネットワークまたはネットワークを伝搬する伝送波)を介して、必要なときに導入されても良い。なお、本実施形態に係る不正通信検知システム2001では、第一の実施形態に係る不正通信検知システム1で実行される処理と基本的に同様の処理が実行されるが、以下の説明では、第一の実施形態に係る不正通信検知システム1で実行される処理とは異なる処理について説明する。
本実施形態に係る不正通信検知システム2001において実行される処理は、第一の実施の形態の不正通信検知システム1とほぼ同様であるが、検知装置30が行う類似パケット格納処理S910およびS920の処理と、有害判定及び判定リスト更新処理S514の処理とが異なるので、以下においてそれらの処理について説明する。
まず、本実施形態における類似パケット格納処理S910およびS920の処理フローについて説明する。
図19は、本発明の第二の実施形態が適用された制御システム向け不正通信検知システム2001において、検知装置30が行う類似パケット格納処理S910およびS920の処理フローを示した図である。
はじめに、検知装置30は、類似パケット格納処理を開始する(S1901)。
次に、類似パケットごとに、算出した類似度の中から、最大値を取得する(S1902)。
次に、類似度が最大値となった判定リストのレコードの正当データパターンに紐づいたリストIDを取得する(S1903)。
次に、類似パケットに含まれるデータパターンと、取得した類似度の最大値と、取得したリストIDなどを類似パケット格納部318に格納する(S1904)。ここで、類似パケットの構成は図21において詳細に説明する。
次に、処理を終了する(S1905)。
本実施形態における有害判定及び判定リスト更新処理S514の処理フローについて説明する。
図20は、本発明の第二の実施形態に係る制御システム向け不正通信検知システム2001において、検知装置30が行う図5に示した有害判定及び判定リスト更新処理S514の処理フローを示した図である。
なお、図20に示した処理フローにおいて、S2001、S2002、S2004〜S2010、S2013〜S2017については、第一実施形態における、図11の有害判定及び判定リスト更新処理S514の処理フローのS1101〜S1114とほぼ同様であるので説明を省略し、残りのステップについて主に説明をする。
S2002で一つの類似パケットを取得した後、検知装置30は、取得した類似パケットに含まれる類似度は、類似パケット格納部318に格納された残りの類似パケットに含まれる類似度と比較して、最小か否かを判断する(S2003)。ここで、類似度の比較方法には、最小か否かを用いているが、これに限定されるものではない。
判断の結果、最小ではないと判断された場合には、検知装置30は、ステップS2002に戻り、別の類似パケットを類似パケット格納部318から取得する。一方で、最小であると判断された場合には、類似パケットから類似パケットの受信時刻情報を取得する(S2004)。
類似パケットから判定リストに追加するエントリを生成した(S2010)後、検知装置30は、判定リスト格納部316から判定リスト内の正当通信パターンに含まれる正当データパターンを取得する(S2011)。
次に、検知装置30は、類似パケットに含まれるリストIDと、取得した正当データパターンに紐づいたリストIDとが一致するか否かを判定する(S2012)。判定の結果、一致しないと判断された場合には、検知装置30は、ステップS2011に戻り、別の正当データパターンを判定リスト格納部316から取得する。
一方で、一致すると判断された場合には、検知装置30は、生成したエントリを判定リスト格納部316に追加する(S2013)。ここで、エントリを格納する方法の例として、生成したエントリに、エントリ番号に相当するリストIDを付与し、リストIDとエントリの組を判定リスト316へ格納することを想定しているが、これに限定されるものではない。また、エントリを追加する位置は、リストIDが一致した判定リストの直上、直下など(隣接する位置)を用いるが、これに限定されるものではない。このように、類似するエントリを隣接させることにより、S2007において観測項目ごとに取得した観測値が観測項目の判定パターンに一致するか否かを判定する際の処理速度を速くすることができる。また、検知装置30が試運転モードにあるときに、判定リスト及び判定パターンを生成し、検知装置30が実運転モードにあるときに、判定リスト及び判定パターンを更新し、通信パケットが不正な通信パケットであるか否かと判断するので、制御システム内を流れる通信パケットの誤検知及び検知漏れの低減が可能となる。
図21は、本発明の第二の実施形態に係る制御システム向け不正通信検知システム2001において、検知装置30の類似パケット格納部318に格納される類似パケットの構成を例示する図である。
類似パケット(A2101)は、受信日時(A2102)と、サイズ(A2103)と、パケットデータ(A2104)と、パターン数(A2105)と、類似度(A2106)と、リストID(A2107)と、から構成される。
受信日時(A2102)、サイズ(A2103)、パケットデータ(A2104)、およびパターン数(A2105)は、第一の実施形態において説明した類似パケット(A1701)の受信日時(A1702)、サイズ(A1703)、パケットデータ(A1704)、およびパターン数(A1705)と同じである。類似度(A2106)は、判定リスト格納部316に格納された正当データパターンとの類似度の最大値を示す。リストID(A2107)は、判定リスト格納部316に格納された正当データパターンに紐づいたリストIDの中で、類似度が最大となったリストIDである。
次に、本発明の第三の実施形態に係る制御システム向け不正通信検知システム3001について説明する。
図22は、本発明の第三の実施形態が適用された制御システム向け不正通信検知システム3001の構成図である。
本実施形態の制御システム向け不正通信検知システムは、図22に例示するように、制御装置101〜10nと、ネットワーク装置20と、検知装置30と、ネットワーク50と、から構成されている。
制御装置101〜10nと、ネットワーク装置20の構成要素は図1と同様である。
本実施形態に係る検知装置30の構成要素は、図1で示した第一の実施形態の検知装置30の構成要素から、観測値通信部301と、観測値取得部302と、判定パターン生成部303と、判定パターン更新部304と、有害性判定部310と、観測値格納部313と、判定パターン格納部314と、観測時間格納部321とを除いたものである。また、本実施形態において類似パケット格納部318に格納する類似パケットのフォーマットは図17に記載した通りである。
本実施形態の制御システム向け不正通信検知システム3001における処理フローについて説明する。以下に述べる処理フローは、制御装置101〜10nやネットワーク装置20や検知装置30の記憶装置に格納されたプログラムがメモリにロードされ、CPUにより実行されることにより、制御システム向け侵入検知システムを構築する装置上に具現化される各処理部により実行されるものである。また、各プログラムは予め記憶装置に格納されても良いし、他の記憶媒体または通信媒体(ネットワークまたはネットワークを伝搬する伝送波)を介して、必要なときに導入されても良い。なお、本実施形態に係る不正通信検知システム3001では、第一の実施形態に係る不正通信検知システム1で実行される処理と基本的に同様の処理が実行されるが、以下の説明では、第一の実施形態に係る不正通信検知システム1で実行される処理とは異なる処理について説明する。
本実施形態における検知装置30で通信パケットの検知に利用する判定リストを生成する処理、通信パケットの検知を行う処理、及び判定リストを更新する処理について説明する。
図23は、本発明の第三の実施形態に係る制御システム向け不正通信検知システム3001において、検知装置30で通信パケットの検知に利用する判定リストを生成する処理と、通信パケットの検知を行う処理と、判定リストを更新する処理と、の処理フローを示した図である。
本実施形態における、判定リストを生成する処理、通信パケットの検知を行う処理、及びリストを更新する処理は、第一の実施の形態において図5に基づき説明した処理と同様である。すなわち、検知装置30は、図5におけるS501〜S504、S508、S509、S511、S512、S514と同様の処理である、試運転モード設定処理(S2301)、収集業務処理(S2302)、判定リスト作成処理(S2303)、判定リスト格納処理(S2304)、実運転モード設定処理(S2305)、検知業務処理(S2306)、判定処理(S2307)、終了処理(S2308)、及び、判定リスト更新処理(S2309)を実行する。これにより、実運転における正当なデータパターンを有する通信パケットに基いて、新たなエントリを判定リストに対し追加することができる。
このように、本実施形態における検知装置30は、観測装置40から観測値を取得せず、通信パケット(制御コマンド及びリクエスト等)による判定リストのみに基づいて、不正な通信パケットの検知を行う。
次に、本実施形態における検知装置30が行う判定リスト更新処理S2309の処理について説明する。
図24は、本発明の第三の実施形態に係る制御システム向け不正通信検知システム3001において、検知装置30が行う判定リスト更新処理S2309の処理フローを示した図である。
本実施形態における、判定リスト更新処理は、第一の実施の形態において図11に基づき説明した判定リスト更新処理と同様である。すなわち、検知装置30は、図11におけるS1101、S1102、S1109〜1114と同様の処理である、判定リスト開始処理(S2401)、類似パケット取得処理(S2402)、エントリ生成処理(S2403)、判定リスト追加処理(S2404)、類似パケット削除処理(S2405)、レコード数取得処理(S2406)、レコード数判定処理(S2307)、及び、終了処理(S2308)を実行する。
なお、本発明は、上記の実施形態に限定されるものではなく、その要旨の範囲内で様々な変形が可能である。
たとえば、検知装置30内に監視装置40の機能が含まれている場合や、検知装置30内にネットワーク装置20の機能が含まれている場合や、制御装置101〜10n、検知装置30、及び監視装置40にネットワーク50との通信機能が含まれておらず、別の装置を経由してネットワーク50と通信を行う場合や、監視装置40内に検知装置30の機能が含まれている場合や、検知装置30に有害判定処理機能、判定リスト更新機能、判定パターン生成機能、判定パターン更新機能などが含まれておらず、別の装置にこれら機能が含まれており、ネットワーク50を経由して通信を行う場合などである。
該実施形態の場合においてもシステム全体において行う処理に本質的な変化はない。
また、上記実施形態の各構成等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。