(57)【特許請求の範囲】
【請求項１】
第１制御装置と第２制御装置との間の不正通信を検知する、検知装置であって、
プロセッサと、記憶装置と、を含み、
前記プロセッサは、
前記第１制御装置が前記第２制御装置に送信する、前記第２制御装置の動作を制御する複数の制御コマンドと、前記第２制御装置が前記第１制御装置に送信する、前記複数の制御コマンドそれぞれに対するレスポンスと、を監視し、
前記複数の制御コマンドそれぞれの受信時刻と、前記複数の制御コマンドそれぞれに対応するレスポンスの受信時刻と、の差を示す応答時間を算出し、
前記算出した応答時間それぞれに基づいて、前記複数の制御コマンドを１以上の制御コマンドからなる制御コマンド群に分類し、
前記算出した応答時間それぞれに基づいて前記制御コマンド群から選択した１以上の制御コマンド群それぞれ、を重要業務に決定し、
前記重要業務それぞれに対して、当該重要業務と、当該重要業務に属する制御コマンドから選択した制御コマンドのヘッダ情報と、の対応を示すフィルタポリシを生成し、
前記重要業務と、ペイロードのデータパターンと、の対応を示す検知ポリシを取得し、
前記フィルタポリシと、前記検知ポリシと、を前記記憶装置に格納し、
前記第１制御装置から第１制御コマンドを受信し、
前記第１制御コマンドの第１ヘッダ情報を含むフィルタポリシが存在する場合、
当該フィルタポリシが示す重要業務を含む第１検知ポリシを取得し、
前記第１制御コマンドのペイロードと、前記第１検知ポリシが示すデータパターンと、の比較結果に基づいて、前記第１制御コマンドが不正なコマンドであるか否かを判定し、
前記第１制御コマンドが不正なコマンドであると判定した場合、前記第１制御コマンドの情報を含むアラートを生成する、検知装置。
【請求項２】
請求項１に記載の検知装置であって、
前記プロセッサは、前記重要業務それぞれに対して、当該重要業務に属する制御コマンドのペイロードの各ビットの値を比較して、当該ペイロード間で少なくとも１つの値が異なるビットを示す差分領域を特定し、
前記検知ポリシは、前記重要業務と、前記差分領域のデータパターンと、の対応を示し、
前記プロセッサは、
前記第１制御コマンドの第１ヘッダ情報を含むフィルタポリシが存在する場合、
前記第１制御コマンドの前記第１検知ポリシが示す差分領域のデータと、前記第１検知ポリシが示す差分領域のデータパターンと、の比較結果に基づいて、前記第１制御コマンドが不正なコマンドであるか否かを判定する、検知装置。
【請求項３】
請求項１に記載の検知装置であって、
前記プロセッサは、
前記応答時間それぞれに基づく分類指標を算出し、
所定の長さを有し、互いに重複しない複数の区間を生成し、
同一の区間に含まれる分類指標に対応する制御コマンドを、同一の制御コマンド群に含める、検知装置。
【請求項４】
請求項１に記載の検知装置であって、
前記プロセッサは、
前記複数の制御コマンドのサイズそれぞれと、前記複数の制御コマンドそれぞれに対応するレスポンスのサイズと、の和を示す送受信サイズを算出し、
前記算出した応答時間それぞれと、前記算出した送受信サイズそれぞれと、に基づいて、前記複数の制御コマンドを１以上の制御コマンドからなる制御コマンド群に分類し、
前記算出した応答時間それぞれと、前記算出した送受信サイズそれぞれと、に基づいて前記制御コマンド群から選択した１以上の制御コマンド群、を重要業務に決定する、検知装置。
【請求項５】
請求項１に記載の検知装置であって、
前記プロセッサは、
前記応答時間それぞれに基づいて、分類指標を算出し、
第１閾値より大きい分類指標に対応する制御コマンドを含む制御コマンド群を重要業務に決定する、検知装置。
【請求項６】
請求項５に記載の検知装置であって、
前記プロセッサは、
前記検知装置を管理する管理装置が前記第２制御装置に送信する、前記第２制御装置の動作を制御するネットワークレベルのパケット又はアプリケーションレベルで書き込み及び内部処理を行わないパケットである基準パケットと、前記第２制御装置が前記管理装置に送信する、前記基準パケットに対するレスポンスと、を監視し、
前記複数の制御コマンドそれぞれの受信時刻と、前記複数の制御コマンドそれぞれに対応するレスポンスの受信時刻と、の差を示す第１応答時間を算出し、
前記第１応答時間に基づく分類指標を前記第１閾値に決定する、検知装置。
【請求項７】
請求項１に記載の検知装置であって、
入力装置に接続され、
前記プロセッサは、前記入力装置を介したユーザ入力により、前記検知ポリシを取得する、検知装置。
【請求項８】
請求項１に記載の検知装置であって、
前記プロセッサは、
前記プロセッサが実行可能な処理を規定する動作モードを示す指示を受信し、
前記受信した指示が示す動作モードが規定する処理を実行し、
前記動作モードは、前記応答時間を算出する第１動作モードと、前記フィルタポリシを生成する第２動作モードと、前記検知ポリシを取得する第３動作モードと、前記第１制御コマンドが不正なコマンドであるか否かを判定する第４動作モードと、を含む、検知装置。
【請求項９】
第１制御装置と、第２制御装置と、前記第１制御装置と前記第２制御装置との間の不正通信を検知する検知装置と、を含む検知システムであって、
前記検知装置は、
前記第１制御装置が前記第２制御装置に送信する、前記第２制御装置の動作を制御する複数の制御コマンドと、前記第２制御装置が前記第１制御装置に送信する、前記複数の制御コマンドそれぞれに対するレスポンスと、を監視し、
前記複数の制御コマンドそれぞれの受信時刻と、前記複数の制御コマンドそれぞれに対応するレスポンスの受信時刻と、の差を示す応答時間を算出し、
前記算出した応答時間それぞれに基づいて、前記複数の制御コマンドを１以上の制御コマンドからなる制御コマンド群に分類し、
前記算出した応答時間それぞれに基づいて前記制御コマンド群から選択した１以上の制御コマンド群それぞれ、を重要業務に決定し、
前記重要業務それぞれに対して、当該重要業務と、当該重要業務に属する制御コマンドから選択した制御コマンドのヘッダ情報と、の対応を示すフィルタポリシを生成し、
前記重要業務と、ペイロードのデータパターンと、の対応を示す検知ポリシを取得し、
前記第１制御装置から第１制御コマンドを受信し、
前記第１制御コマンドの第１ヘッダ情報を含むフィルタポリシが存在する場合、
当該フィルタポリシが示す重要業務を含む第１検知ポリシを取得し、
前記第１制御コマンドのペイロードと、前記第１検知ポリシが示すデータパターンと、の比較結果に基づいて、前記第１制御コマンドが不正なコマンドであるか否かを判定し、
前記第１制御コマンドが不正なコマンドであると判定した場合、前記第１制御コマンドの情報を含むアラートを生成する、検知システム。
【請求項１０】
請求項９に記載の検知システムであって、
出力装置と、前記検知装置を管理する管理装置と、をさらに含み、
前記管理装置は、
前記検知装置に対してフィルタポリシ及び検知ポリシの少なくとも一方を収集する指示を送信し、
前記検知装置が保持する前記少なくとも一方を、前記検知装置から受信し、
前記受信した少なくとも一方を前記出力装置に出力する、検知システム。
【請求項１１】
請求項９に記載の検知システムであって、
入力装置と、前記検知装置を管理する管理装置と、をさらに含み、
前記管理装置は、
前記入力装置を介したユーザ入力によりフィルタポリシ及び検知ポリシの少なくとも一方を取得し、
前記取得した少なくとも一方を前記検知装置に送信し、
前記検知装置は、前記管理装置から受信した少なくとも一方を保持する、検知システム。
【請求項１２】
第１制御装置と第２制御装置との間の不正通信を検知装置が検知する方法であって、
前記方法は、
前記検知装置が、
前記第１制御装置が前記第２制御装置に送信する、前記第２制御装置の動作を制御する複数の制御コマンドと、前記第２制御装置が前記第１制御装置に送信する、前記複数の制御コマンドそれぞれに対するレスポンスと、を監視し、
前記複数の制御コマンドそれぞれの受信時刻と、前記複数の制御コマンドそれぞれに対応するレスポンスの受信時刻と、の差を示す応答時間を算出し、
前記算出した応答時間それぞれに基づいて、前記複数の制御コマンドを１以上の制御コマンドからなる制御コマンド群に分類し、
前記算出した応答時間それぞれに基づいて前記制御コマンド群から選択した１以上の制御コマンド群それぞれ、を重要業務に決定し、
前記重要業務それぞれに対して、当該重要業務と、当該重要業務に属する制御コマンドから選択した制御コマンドのヘッダ情報と、の対応を示すフィルタポリシを生成し、
前記重要業務と、ペイロードのデータパターンと、の対応を示す検知ポリシを取得し、
前記第１制御装置から第１制御コマンドを受信し、
前記第１制御コマンドの第１ヘッダ情報を含むフィルタポリシが存在する場合、
当該フィルタポリシが示す重要業務を含む第１検知ポリシを取得し、
前記第１制御コマンドのペイロードと、前記第１検知ポリシが示すデータパターンと、の比較結果に基づいて、前記第１制御コマンドが不正なコマンドであるか否かを判定し、
前記第１制御コマンドが不正なコマンドであると判定した場合、前記第１制御コマンドの情報を含むアラートを生成する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正通信検知装置、不正通信検知システム、及び不正通信を検知する方法に関する。
【背景技術】
【０００２】
電力、鉄道、水道、ガス等の社会インフラ、及び自動車で利用される制御システムは、センサの情報に基づいてバルブやアクチュエータ等の装置を動作させ、予め設定されている圧力や温度を保つことが要求される。当該動作を実現するために、制御システムに含まれる制御装置等の組込み装置は、定期的にセンサからの情報を取得することで装置の状態を確認し、他の制御装置やサーバ等に装置の状態を通知し、必要に応じて制御を行うことが必要となる。このため、制御システムは、周期的に大量の通信を行い、その通信データに基づく処理を行うことが通例である。
【０００３】
制御システムにはこれまで専用ＯＳや専用プロトコルが利用され、インターネット等の外部ネットワークからアクセスできない領域に孤立した状態で設置されていたため、コンピュータウィルスやＤｏＳ攻撃等のサイバー攻撃と無縁であると考えられてきた。しかし、コスト削減のために、制御システムに汎用ＯＳや汎用プロトコルが利用されるケース、及び処理効率向上のために制御システムと情報システムとが接続されるケースが増加している。そのため、制御システムがサイバー攻撃を受ける可能性が高まっている。
【０００４】
さらに、近年、制御システムをターゲットとしたコンピュータウィルスが発見されており、制御システムにおいても情報システムと同様にマルウェア等の感染や外部からの不正アクセスを検知する技術が求められている。
【０００５】
本技術分野の背景技術として、特開２００６−１１５００７号公報（特許文献１）がある。この公報には、「監視対象ネットワークと外部ネットワークとの通信が不正な通信であることを検知するために参照するシグネチャルールを、複数ブロックに分割するシグネチャルール分割手段と、分割された複数ブロックのシグネチャルールのそれぞれを、複数の侵入検知処理装置のそれぞれに対応させ、複数の侵入検知処理装置のそれぞれが、対応するブロックのシグネチャルールを検出する処理を実行する検出処理実行手段とを有することを特徴とする侵入検知処理装置である。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１１５００７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
制御システムに含まれる組込み装置のリソース（例えば、処理性能、記憶容量、及び帯域等）には制約がある。低リソースの検知装置が、制御システム内で送受信される大量の通信パケットを検証し、不正通信を検知することは困難である。また、特許文献１に記載の技術において、検知性能を向上させるために複数の検知装置が制御システム内に設置されている。しかし、制御システムでは、制御盤という限られたスペース内に制御業務に必要となる機器が設置される必要があり、特許文献１に記載の技術のように、複数の検知装置を設置することは困難である。そこで、本発明の一態様は、リソース及び設置スペースに制約がある検知装置を用いて、制御システム内の重要業務に関する不正な通信を高速かつ高精度に検知する。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の一態様は、以下の構成を採用する。第１制御装置と第２制御装置との間の不正通信を検知する、検知装置であって、プロセッサと、記憶装置と、を含み、前記プロセッサは、前記第１制御装置が前記第２制御装置に送信する、前記第２制御装置の動作を制御する複数の制御コマンドと、前記第２制御装置が前記第１制御装置に送信する、前記複数の制御コマンドそれぞれに対するレスポンスと、を監視し、前記複数の制御コマンドそれぞれの受信時刻と、前記複数の制御コマンドそれぞれに対応するレスポンスの受信時刻と、の差を示す応答時間を算出し、前記算出した応答時間それぞれに基づいて、前記複数の制御コマンドを１以上の制御コマンドからなる制御コマンド群に分類し、前記算出した応答時間それぞれに基づいて前記制御コマンド群から選択した１以上の制御コマンド群それぞれ、を重要業務に決定し、前記重要業務それぞれに対して、当該重要業務と、当該重要業務に属する制御コマンドから選択した制御コマンドのヘッダ情報と、の対応を示すフィルタポリシを生成し、前記重要業務と、ペイロードのデータパターンと、の対応を示す検知ポリシを取得し、前記フィルタポリシと、前記検知ポリシと、を前記記憶装置に格納し、前記第１制御装置から第１制御コマンドを受信し、前記第１制御コマンドの第１ヘッダ情報を含むフィルタポリシが存在する場合、当該フィルタポリシが示す重要業務を含む第１検知ポリシを取得し、前記第１制御コマンドのペイロードと、前記第１検知ポリシが示すデータパターンと、の比較結果に基づいて、前記第１制御コマンドが不正なコマンドであるか否かを判定し、前記第１制御コマンドが不正なコマンドであると判定した場合、前記第１制御コマンドの情報を含むアラートを生成する、検知装置。
【発明の効果】
【０００９】
本発明の一態様によれば、リソース及び設置スペースに制約がある検知装置を用いて、制御システム内の重要業務に関する不正な通信を高速かつ高精度に検知する。
【図面の簡単な説明】
【００１０】
【図１】実施例１における制御システム向け不正通信検知システムの構成例を示すブロック図である。
【図２】制御システム向け不正通信検知システムに含まれる各装置のハードウェア構成例を示すブロック図である。
【図３】実施例１における基準用データ生成処理の一例を示すシーケンス図である。
【図４】実施例１における、通信パケット格納部に格納される通信パケットの構成例である。
【図５】実施例１における基準用データの構成例である。
【図６】実施例１における分類用データ生成処理の一例を示すシーケンス図である。
【図７】実施例１におけるフィルタポリシ生成処理の一例を示すフローチャートである。
【図８】実施例１における業務分類データの構成例である。
【図９】実施例１におけるフィルタポリシの構成例である。
【図１０】実施例１における、検知装置に格納されているフィルタポリシの収集処理及び更新処理の一例を示すシーケンス図である。
【図１１】実施例１における、検知装置に格納されている検知ポリシの収集処理及び更新処理の一例を示すシーケンス図である。
【図１２】実施例１における検知ポリシの構成例である。
【図１３】実施例１における、制御装置間で送受信されるパケットの正当性の検証処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【００１２】
本実施例は、制御システム向け不正通信検知システムを説明する。制御システム向け不正通信検知システムに含まれる検知装置は、制御装置間で送受信される制御コマンドを収集する。検知装置は、各制御コマンドの応答時間や送受信サイズに基づいて、収集した制御コマンドを１以上の制御コマンド群に分類する。検知装置は、各制御コマンドの応答時間や送受信サイズに基づいて、１以上の制御コマンド群から、システムに対して与える影響が大きい重要業務の制御コマンド群を特定する。検知装置は、その通信パケット群の中で通信パケット毎に変更される領域のみに絞り込むフィルタポリシを生成する。
【００１３】
検知装置は、検知処理において、受信した制御コマンドが重要業務の制御コマンドである場合に、当該制御コマンドのペイロードを参照して、受信した制御コマンドが不正な通信であるか否かを判定する。検知装置は、受信した制御コマンドが不正な通信であると判定した場合、受信制御コマンドの情報を含むアラートを生成する。
【実施例１】
【００１４】
図１は、本実施例の制御システム向け不正通信検知システムの構成例を示す。本実施形態の制御システム向け不正通信検知システム１００は、例えば、複数の制御装置１０−１〜１０−ｎ、ネットワーク装置２０、検知装置３０、管理装置４０、及びネットワーク５０を含む。以下、制御装置１０−１〜１０−ｎを特に区別しない場合、制御装置１０と表記する。同様に、制御装置１０−１〜１０−ｎそれぞれに含まれる各部についても、当該各部を特に区別しない場合、ハイフン以下を省略して表記する。
【００１５】
図１は、制御システム向け不正通信検知システム１００に２つの制御装置１０が含まれる例を示しているが、制御システム向け不正通信検知システム１００に含まれる制御装置１０の数は問わない。
【００１６】
制御装置１０は、制御処理を行うプログラムである制御処理部１０１と、後述する通信装置によって実現され、ネットワーク５０やネットワーク装置２０等と通信を行う通信部１０２と、を含む。
【００１７】
ネットワーク装置２０は、ネットワーク装置２０に入力された通信パケットを複製するプログラムであるパケット複製部２０１と、ネットワーク５０と通信を行う第一通信部２０２と、検知装置３０と通信を行う第二通信部２０３と、制御装置１０−ｎと通信を行う第三通信部２０４と、を含む。なお、ネットワーク装置２０は、４つ以上の通信部を含んでもよい。各通信部は、例えば、後述する通信装置によって実現される。
【００１８】
検知装置３０は、通信部３０１、並びにそれぞれプログラムである、通信パケット取得部３０２、業務分類部３０３、重要業務判定部３０４、差分抽出部３０５、フィルタポリシ生成部３０６、フィルタリング処理部３０７、検知部３０８、アラート生成部３０９、動作モード管理部３１８、基準用データ生成部３１９、分類用データ生成部３２０、フィルタポリシ更新部３２１、及び検知ポリシ更新部３２２を含む。
【００１９】
また、検知装置３０は、それぞれデータを格納する領域である、通信パケット格納部３１０、基準用データ格納部３１１、分類用データ格納部３１２、判定閾値格納部３１３、業務分類データ格納部３１４、フィルタポリシ格納部３１５、検知ポリシ格納部３１６、及びアラート格納部３１７を含む。
【００２０】
通信部３０１は、後述する通信装置によって実現され、ネットワーク装置２０と通信を行う。通信パケット取得部３０２は、通信部３０１に入力された通信パケットの情報を取得する。業務分類部３０３は、通信パケット取得部３０２が取得した通信パケットを業務毎に分類する。分類用データ生成部３２０は、業務分類部３０３が通信パケットを分類する指標を示す分類用データを生成する。
【００２１】
重要業務判定部３０４は、業務分類部３０３が分類した業務から、制御装置１０の動作に影響を及ぼす重要業務を決定する。基準用データ生成部３１９は、重要業務判定部３０４が重要業務を決定する基準を示す基準用データを生成する。
【００２２】
差分抽出部３０５は、重要業務のパケット内のデータの差分領域を抽出する。差分領域の詳細については後述する。フィルタポリシ生成部３０６は、重要業務のパケットを特定するフィルタポリシを生成する。フィルタリング処理部３０７は、フィルタポリシ生成部３０６が生成したフィルタポリシに従って、入力されたパケットをフィルタする。検知部３０８は、後述する検知ポリシに従って、フィルタを通過したパケットやデータの正当性を検証する。
【００２３】
アラート生成部３０９は、検知部３０８が不正なパケットやデータの存在を検知した場合にアラートを生成する。動作モード管理部３１８は、検知装置３０の動作モードを管理する。検知装置３０は、設定中の動作モードに規定された処理を実行することができる。動作モードの具体例については後述する。検知装置３０は、動作モード管理部３１８が動管理する動作モードに従って動作することにより、例えば、ユーザが意図しない検知装置３０の動作を防ぐことができ、ひいては不正な処理の実行を防ぐことができる。
【００２４】
フィルタポリシ更新部３２１は、管理装置４０からの指示に従って、フィルタポリシを更新する。検知ポリシ更新部３２２は、管理装置４０からの指示に従って、検知ポリシを更新する。
【００２５】
通信パケット格納部３１０は、通信パケット取得部３０２が取得した通信パケットを格納する。基準用データ格納部３１１は、基準用データ生成部３１９が生成した基準用データを格納する。分類用データ格納部３１２は、分類用データ生成部３２０が生成した分類用データを格納する。判定閾値格納部３１３は、業務分類部３０３が業務を分類する際に利用する閾値を格納する。業務分類データ格納部３１４は、通信パケットが属する業務情報を示す業務分類データを格納する。
【００２６】
フィルタポリシ格納部３１５は、フィルタポリシ生成部３０６が生成したフィルタポリシを格納する。検知ポリシ格納部３１６は、検知部３０８が不正なパケットやデータの存在を検知する際に利用する検知ポリシを格納する。アラート格納部３１７は、アラート生成部３０９が生成したアラートを格納する。
【００２７】
管理装置４０は、通信部４０６、並びにそれぞれプログラムである、基準パケット生成部、フィルタポリシ生成部４０２、検知ポリシ生成部４０３、フィルタポリシ収集部４０４、及び検知ポリシ収集部４０５を含む。また、管理装置４０は、それぞれデータを格納する領域である、フィルタポリシ格納部４０７、及び検知ポリシ格納部４０８を含む。
【００２８】
通信部４０６は、例えば、後述する通信装置によって実現され、ネットワーク５０と通信を行う。基準パケット生成部４０１は、基準用データ生成部３１９が基準用データを生成する際に利用する基準パケットを生成する。フィルタポリシ生成部４０２は、フィルタポリシ格納部３１５及びフィルタポリシ格納部４０７に格納するフィルタポリシを生成する。検知ポリシ生成部４０３は、検知ポリシ格納部３１６及び検知ポリシ格納部４０８に格納する検知ポリシを生成する。
【００２９】
フィルタポリシ収集部４０４は、フィルタポリシ格納部３１５に格納されているフィルタポリシを収集する。検知ポリシ収集部４０５は、検知ポリシ格納部３１６に格納されている検知ポリシを収集する。フィルタポリシ格納部４０７は、フィルタポリシ生成部４０２が生成した、又はフィルタポリシ収集部４０４が収集したフィルタポリシを格納する。検知ポリシ格納部４０８は、検知ポリシ生成部４０３が生成した、又は検知ポリシ収集部４０５が収集した検知ポリシを格納する。
【００３０】
図２は、制御装置１０−１〜１０−ｎ、ネットワーク装置２０、検知装置３０、及び管理装置４０のハードウェア構成例を示す。制御装置１０−１〜１０−ｎ、ネットワーク装置２０、検知装置３０、及び管理装置４０は、例えば、バスなどの内部通信線１６で連結された、通信装置１１、入出力装置１２、補助記憶装置１３、ＣＰＵ１４、及びメモリ１５を含む計算機１７上に構成される。
【００３１】
ＣＰＵ１４は、メモリ１５に格納されたプログラムに従って動作するプロセッサ及び／又は論理回路を含む。メモリ１５は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、ＣＰＵ１４が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００３２】
補助記憶装置１３は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置であり、ＣＰＵ１４が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置１３から読み出されて、メモリ１５にロードされて、ＣＰＵ１４によって実行される。
【００３３】
計算機１７は、入出力インターフェースを有してもよい。入出力インターフェースは、入出力装置１２が接続され、オペレータからの入力を受け、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。入出力装置１２は、例えば、キーボードやマウスの等の入力装置、及びディスプレイ装置やプリンタ等の出力装置を含む。
【００３４】
通信装置１１は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信装置１１は、例えば、ＵＳＢ等のシリアルインターフェースを含む。なお、計算機１７は、複数の通信装置１１を含んでもよい。例えば、ネットワーク装置２０に含まれる各通信部は、それぞれ異なる通信装置１１によって実現されてもよい。
【００３５】
ＣＰＵ１４が実行するプログラムは、例えば、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して計算機１７に提供され、非一時的記憶媒体である不揮発性の補助記憶装置１３に格納されてもよい。このため、計算機１７は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００３６】
制御装置１０−１〜１０−ｎ、ネットワーク装置２０、検知装置３０、及び管理装置４０は、物理的に一つの計算機１７上で、又は、論理的又は物理的に構成された複数の計算機１７上で構成される計算機システムであり、同一の計算機１７上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３７】
プログラムはＣＰＵ１４によって実行されることで、定められた処理を記憶装置及び通信ポートを用いながら行う。従って、本実施形態及び他の実施形態においてプログラムを主語とする説明は、ＣＰＵ１４を主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する計算機１７及び計算機システムが行う処理である。
【００３８】
ＣＰＵ１４は、プログラムに従って動作することによって、所定の機能を実現する機能部（手段）として動作する。例えば、ＣＰＵ１４は、通信パケット取得部３０２に従って動作することで通信パケット取得部（通信パケット取得手段）として機能し、業務分類部３０３に従って動作することで業務分類部（業務分類手段）として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１４は、各プログラムが実行する複数の処理のそれぞれを実現する機能部（手段）としても動作する。計算機１７及び計算機システムは、これらの機能部（手段）を含む装置及びシステムである。
【００３９】
図３は、基準用データ生成処理の一例を示す。はじめに、動作モード管理部３１８は、例えば入出力装置１２を介したユーザからの指示に従って、動作モードを初期モードに設定する（Ｓ５０１）。初期モードは、基準用データの生成処理を実行するためのモードである。動作モード管理部３１８が動作モードを初期モードに設定できない、又は後述するステップＳ５０２以降の処理が初期モードに設定されないまま実行されようとする場合は、制御システム向け不正通信検知システム１００は以降の処理を中止してもよい。
【００４０】
次に、基準パケット生成部４０１は、基準パケットを生成する（Ｓ５０２）。基準パケット生成部４０１は、例えば、入出力装置１２を介したユーザからの基準パケット生成指示を受け付けたこと、又は動作モードが初期モードに変わった旨の通知を動作モード管理部３１８から受信したことをトリガとして基準パケットの生成を開始する。
【００４１】
次に、通信部４０６は、基準パケット生成部４０１が生成した基準パケットを、制御装置１０−ｎに送信する（Ｓ５０３）。ここで基準パケットとは、制御コマンドが示す業務が重要業務であるか否かを判定する基準を示すパケットである。例えば、Ｐｉｎｇ等のネットワークレベルで送受信されるパケット（即ちネットワーク層より上位の層における処理を実施しないパケット）、及びユーザアプリケーションにおいて、アプリケーションのデータ参照のみを行い、書き込みや内部処理を行わないようなパケット、は基準パケットの一例である。また、基準パケット生成部４０１は、特性（例えば、パケットのデータ量、及びパケットが示す制御処理等）の異なる複数の基準パケットを送信してもよい。
【００４２】
次に、ネットワーク装置２０のパケット複製部２０１は、管理装置４０から受信した基準パケットを複製する（Ｓ５０４）。次に、第二通信部２０３はパケット複製部２０１が複製した基準パケットを検知装置３０に送信し（Ｓ５０５）、第三通信部２０４はパケット複製部２０１が複製した基準パケットを制御装置１０−ｎに送信する（Ｓ５０６）。
【００４３】
次に、通信パケット取得部３０２は、当該複製した基準パケットを通信部３０１がネットワーク装置２０から受信した受信時刻を、例えば検知装置３０のＯＳ等から取得する（Ｓ５０８）。次に、通信パケット取得部３０２は、通信部３０１が受信した基準パケットのサイズを取得する（Ｓ５０９）。次に、通信パケット取得部３０２は、受信した基準パケットの情報を示す通信パケットを通信パケット格納部３１０に格納する（Ｓ５１０）。
【００４４】
ここで、通信パケット格納部３１０に格納される通信パケットの構成例を説明する。図４は、通信パケット格納部３１０に格納される通信パケットの構成例を示す。通信パケット１１０１は、例えば、検知装置３０が当該通信パケットに対応する基準パケットを受信した時刻を示す受信時刻１１０２と、当該通信パケットに対応する基準パケットのサイズ１１０３と、当該通信パケットに対応する基準パケットのバイナリデータを示すパケットデータ１１０４と、を含む。なお、通信パケット１１０１の構成要素の順序は図４の例に限定されるものではない。
【００４５】
図３の説明に戻る。一方、制御処理部１０１−ｎは、ネットワーク装置２０から受信した基準パケットを処理する（Ｓ５０７）。次に、制御処理部１０１−ｎは、基準パケットの処理結果を示すレスポンスを生成し、通信部１０２−ｎは制御処理部１０１−ｎが生成したレスポンスを管理装置４０に送信する（Ｓ５１１）。
【００４６】
次に、ネットワーク装置２０のパケット複製部２０１は、受信したレスポンスを複製する（Ｓ５１２）。次に、第二通信部２０３はパケット複製部２０１が複製したレスポンスを検知装置３０に送信し（Ｓ５１３）、第三通信部２０４はパケット複製部２０１が複製したレスポンスを管理装置４０に送信する（Ｓ５１４）。
【００４７】
次に、通信パケット取得部３０２は、通信部３０１がネットワーク装置２０から当該複製したレスポンスを受信した受信時刻を、例えば検知装置３０のＯＳ等から取得する（Ｓ５１５）。次に、通信パケット取得部３０２は、通信部３０１が受信した当該複製したレスポンスのサイズを取得する（Ｓ５１６）。次に、通信パケット取得部３０２は、受信したレスポンスの情報を示す通信パケットを通信パケット格納部３１０に格納する（Ｓ５１７）。レスポンスの情報を示す通信パケットの構成は、図４に例示した通信パケットの構成と同様である。
【００４８】
次に、基準用データ生成部３１９は、ステップＳ５１０で格納された基準パケットの通信パケットの情報と、ステップＳ５１７で格納されたレスポンスの通信パケットの情報と、を用いて基準用データを生成する（Ｓ５１８）。
【００４９】
ここで基準用データの構成例を説明する。図５は、基準用データの構成例を示す。基準用データ１２０１は、例えば、基準パケットを検知装置３０が受信した時刻を示すコマンド受信時刻１２０２と、基準コマンドに対するレスポンスを検知装置３０が受信した時刻を示すレスポンス受信時刻１２０３と、コマンド受信時刻１２０２とレスポンス受信時刻１２０３との差分を示す応答時間１２０４と、基準パケットのサイズ１２０５と、レスポンスパケットのサイズ１２０６と、コマンドパケットのサイズとレスポンスパケットのサイズとの和を示す送受信サイズ１２０７と、基準パケットのバイナリデータを示すパケットデータ１２０８と、を含む。なお、基準用データ１２０１の構成要素の順序は図５の例に限定されるものではない。
【００５０】
図３の説明に戻る。次に、基準用データ生成部３１９は、生成した基準用データを基準用データ格納部３１１に格納する（Ｓ５１９）。なお、図３の例では検知装置３０が基準用データを生成する処理を例示したが、検知装置３０以外の装置が基準用データを生成してもよい。また、図３の処理によらず生成された基準用データが基準用データ格納部３１１に予め直接格納されていてもよい。
【００５１】
図６は、制御装置１０−１と制御装置１０−ｎの間で試運転時等に行われる制御業務の通信パケットに基づく、分類用データ生成処理の一例を示す。はじめに、動作モード管理部３１８は、例えば入出力装置１２を介したユーザからの指示に従って、動作モードを収集モードに設定する（Ｓ６０１）。収集モードは、制御業務の通信パケットを収集し、分類用データを生成するためのモードである。ここで、動作モード管理部３１８が動作モードを収集モードに設定できない、又は後述するステップＳ６０２以降の処理が収集モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム１００は以降の処理を中止してもよい。
【００５２】
次に、制御処理部１０１−１は制御コマンドを生成する（Ｓ６０２）。制御コマンドは、例えば、制御装置１０の動作の制御、及び制御装置１０の状態の取得等を行うためのコマンドである。制御処理部１０１−１は、例えば、入出力装置１２を介したユーザからの指示を受け付けたこと、又は動作モードが収集モードに変わった旨の通知を動作モード管理部３１８から受信したことをトリガとして制御コマンドの生成を開始する。次に、通信部１０２−１は、制御処理部１０１−１が生成した制御コマンドを制御装置１０−ｎに送信する（Ｓ６０３）。
【００５３】
次に、ネットワーク装置２０のパケット複製部２０１は、第三通信部２０４が制御装置１０−１から受信した制御コマンドを複製する（Ｓ６０４）。次に、第二通信部２０３はパケット複製部２０１が複製した制御コマンドを検知装置３０に送信し（Ｓ６０５）、第三通信部２０４はパケット複製部２０１が複製した制御コマンドを制御装置１０−ｎに送信する（Ｓ６０６）。
【００５４】
次に、通信パケット取得部３０２は、当該複製した制御コマンドを通信部３０１がネットワーク装置２０から受信した受信時刻を、例えば検知装置３０のＯＳ等から取得する（Ｓ６０８）。次に、通信パケット取得部３０２は、受信した制御コマンドのサイズを取得する（Ｓ６０９）。次に、通信パケット取得部３０２は、受信した制御コマンドの情報を示す通信パケットを通信パケット格納部３１０に格納する（Ｓ６１０）。制御コマンドの情報を示す通信パケットの構成は、図４に例示した通信パケットの構成と同様である。
【００５５】
一方、制御処理部１０１−ｎは、ネットワーク装置２０から受信した制御コマンドが示す制御業務を行う（Ｓ６０７）。次に、制御処理部１０１−ｎは制御業務の処理結果を示すレスポンスを生成し、通信部１０２−ｎは制御処理部１０１−ｎが生成したレスポンスを制御装置１０−１に送信する（Ｓ６１１）。
【００５６】
次に、ネットワーク装置２０のパケット複製部２０１は、第三通信部２０４が受信したレスポンスを複製する（Ｓ６１２）。次に、第二通信部２０３はパケット複製部２０１が複製したレスポンスを検知装置３０に送信し（Ｓ６１３）、第一通信部２０２はパケット複製部２０１が複製したレスポンスを制御装置１０−１に送信する（Ｓ６１４）。
【００５７】
次に、通信パケット取得部３０２は、当該複製したレスポンスを通信部３０１がネットワーク装置２０から受信した受信時刻を、例えば検知装置３０のＯＳ等から取得する（Ｓ６１５）。次に、通信パケット取得部３０２は、通信部３０１が受信したレスポンスのパケットの送受信サイズを取得する（Ｓ６１６）。次に、通信パケット取得部３０２は、受信したレスポンスの情報を示す通信パケットを通信パケット格納部３１０に格納する（Ｓ６１７）。レスポンスの情報を示す通信パケットの構成は、図４に例示した通信パケットの構成と同様である。
【００５８】
次に、分類用データ生成部３２０は、Ｓ６１０で格納された制御コマンドの通信パケットの情報と、Ｓ６１７で格納されたレスポンスの通信パケットの情報と、を用いて分類用データを生成する（Ｓ６１８）。なお、分類用データの構成は、図５に示した基準用データの構成と同様である。具体的には、分類用データの構成は、図５の基準用データの構成の説明中の「基準パケット」を「制御コマンド」と読み替えることにより、説明される。
【００５９】
次に、分類用データ生成部３２０は、生成した分類用データを分類用データ格納部３１２に格納する（Ｓ６１９）。図６の処理は、１つの制御コマンドに対して１つの分類用データが生成される処理を示す。本実施例においては、業務分類の対象とする複数のコマンドそれぞれに対して、ステップＳ６０２〜ステップＳ６１９の処理が実施される。
【００６０】
図７は、基準用データや分類用データが生成された後に実行されるフィルタポリシ生成処理の一例を示す。はじめに、例えば入出力装置１２を介したユーザからの指示に従って、フィルタポリシ生成処理が開始する（Ｓ７０１）。
【００６１】
具体的には、例えば、動作モード管理部３１８が当該指示に従って、動作モードをフィルタポリシ生成モードに設定することにより、フィルタポリシ生成処理が開始する。フィルタポリシ生成モードは、フィルタポリシを生成するためのモードである。ここで、動作モード管理部３１８が動作モードをフィルタポリシ生成モードに設定できない、又は後述するステップＳ７０２以降の処理がフィルタポリシ生成モードに設定されないまま実行されようとする場合には、検知装置３０は以降の処理を中止してもよい。
【００６２】
次に、業務分類部３０３は、分類用データ格納部３１２に格納されている分類用データを取得する（Ｓ７０２）。次に、業務分類部３０３は、取得した分類用データそれぞれに対して、当該分類用データの応答時間や送受信サイズに基づいて、分類用データに対応する制御コマンドが示す制御業務の重要度を示す分類指標を算出する（Ｓ７０３）。
【００６３】
分類用データの応答時間を送受信サイズで割った値は当該分類用データの分類指標の一例である。また、分類用データの応答時間は当該分類用データの分類指標の一例である。また、応答時間の増加関数であり、かつ送受信サイズの減少関数である所定の関数に、分類用データの応答時間及び送受信サイズを代入した値は、当該分類用データの分類指標の一例である。
【００６４】
次に、業務分類部３０３は、生成した分類指標それぞれと、判定閾値格納部３１３に格納されている判定閾値と、を比較して、分類用データそれぞれに対して業務を識別する情報を示す業務ＩＤを割り当てる。
【００６５】
なお、業務分類部３０３は、例えば、以下のようにして、各分類用データに業務ＩＤを割り当てる。業務分類部３０３は、例えば、算出した分類指標を小さい順にソートする。業務分類部３０３は、最小の分類指標を含み、かつ長さが判定閾値である区間、に含まれる分類指標に対応する分類用データに第１の業務ＩＤを割り当てる。さらに、業務分類部３０３は、業務ＩＤが割り当てられていない分類用データの最小の分類指標を含み、かつ既に業務ＩＤが割り当てられた分類用データの分類指標を含まない区間であって、長さが判定閾値である区間に、含まれる分類指標に対応する分類用データに第２の業務ＩＤを割り当てる。業務分類部３０３は同様の処理を繰り返すことにより、全ての分類用データに業務ＩＤを割り当てることができる。業務分類部３０３は、上述の処理により、高速かつ高精度に同一の業務に属する分類用データを特定することができる。
【００６６】
業務分類部３０３は、分類用データそれぞれに対応する業務分類データを生成し、生成した業務分類データを業務分類データ格納部３１４に格納する（Ｓ７０４）。ここで業務分類データの構成例を説明する。
【００６７】
図８は、業務分類データ格納部３１４に格納される業務分類データの構成例を示す。業務分類データ１３０１は、当該業務分類データに対応する分類用データの業務ＩＤ１３０２と、当該業務分類データに対応する分類用データの分類指標１３０３と、当該業務分類データに対応する分類用データのパケットデータを示すパケットデータ１３０４と、を含む。なお、業務分類データは、分類指標１３０３を含まなくてもよい。また、業務分類データ１３０１の構成要素の順序は上記に限定されるものではない。
【００６８】
図７の説明に戻る。次に、重要業務判定部３０４は、基準用データ格納部３１１に格納されている基準用データの分類指標を用いて、生成した業務分類データの業務ＩＤから重要業務の業務ＩＤを決定し、決定した業務ＩＤをフィルタポリシ格納部３１５に格納する（Ｓ７０５）。
【００６９】
なお、重要業務判定部３０４は、例えば、以下のようにして、重要業務の業務ＩＤを決定する。重要業務判定部３０４は、例えば、業務ＩＤそれぞれに対して、当該業務ＩＤを有する業務分類データから、１つ分類指標を選択する。なお、このとき、重要業務判定部３０４は、当該業務ＩＤに対応する業務分類データから、最小の分類指標を選択するのが好ましい。重要業務判定部３０４は、基準用データの分類指標と、選択した分類指標それぞれと、を比較し、基準用データの分類指標より大きい分類指標を有する業務ＩＤを重要業務の業務ＩＤに決定する。
【００７０】
基準用データの分類指標は、基準パケットの応答時間に基づいて定められている。従って、例えば、基準パケットがネットワークレベルで送受信されるパケットである場合、重要業務判定部３０４が上述の処理を実行することにより、ネットワークレベルより上位のレベルの処理を実行する制御コマンドに対応する分類用データが重要業務に分類される可能性を高くすることができる。
【００７１】
また、例えば、基準パケットが、ユーザアプリケーションにおいて、アプリケーションのデータ参照のみを行い、書き込みや内部処理を行わないようなパケットである場合、重要業務判定部３０４が上述の処理を実行することにより、アプリケーションのデータ参照以外の処理を実行する制御コマンドに対応する分類用データが重要業務に分類される可能性を高くすることができる。
【００７２】
また、重要業務判定部３０４は、所定の閾値と、選択した分類指標それぞれと、を比較し、当該所定の閾値より大きい分類指標を有する業務ＩＤを重要業務の業務ＩＤに決定してもよい。
【００７３】
以下、重要業務の業務ＩＤそれぞれに対してフィルタポリシが作成される処理の例を説明する。フィルタポリシ生成部３０６は、フィルタポリシが未作成の１つの重要業務の業務ＩＤをフィルタポリシ格納部３１５から取得し、取得した業務ＩＤに対応する全ての業務分類データのパケットデータ１３０４を、業務分類データ格納部３１４から取得する（Ｓ７０６）。
【００７４】
次に、差分抽出部３０５は、取得したパケットデータ内のペイロードそれぞれを比較し、ペイロード内においてデータが異なる領域を示す差分領域を特定する（Ｓ７０７）。具体的には、例えば、差分抽出部３０５は、取得したペイロードそれぞれの各ビットを比較し、全てのペイロードにおいて同一の値を有するビット以外のビットからなる領域を差分領域に決定する。差分抽出部３０５が差分領域を抽出することにより、後述するステップＳ１０１０の異常検知処理において、検知精度の低下を抑制しつつ、検知部３０８が異常検知のために参照する領域を減少させることができ、ひいては処理量を減少させることができる。なお、Ｓ７０７において、差分抽出部３０５はペイロードの全てのビットを差分領域としてもよい。
【００７５】
ここで、例えば、差分抽出部３０５が取得したパケットデータ内のそれぞれの各ビットビットを比較した際に、全てのパケットデータにおいて同一の値を有するビット数がペイロードの全ビット数の所定割合以下であると判定した場合、全てのパケットデータにおいて同一の値を有するビットからなる領域を、差分領域に代えて特定してもよい。
【００７６】
次に、フィルタポリシ生成部３０６は、ステップＳ７０６で取得した業務ＩＤ及びパケットデータ１３０４と、差分抽出部３０５が決定した差分領域と、に基づいて、フィルタポリシを生成し、生成したフィルタポリシをフィルタポリシ格納部３１５に格納する（Ｓ７０８）。
【００７７】
ここで、フィルタポリシの構成例について説明する。図９は、フィルタポリシ格納部３１５に格納されるフィルタポリシの構成例を示す。フィルタポリシ１４０１は、例えば、ステップＳ７０６で取得した業務ＩＤ１４０２と、対応する業務ＩＤの業務分類データのパケットデータ１３０４から特定されるヘッダ情報と、抽出した差分領域を示す検知領域１４０８と、を含む。
【００７８】
フィルタポリシ１４０１のヘッダ情報は、例えば、通信パケットの送信元１４０３と、通信パケットの送信先１４０４と、通信パケットのプロトコル１４０５と、通信パケットの送信先ポート番号１４０６と、通信パケットのその他の特徴を示すオプション１４０７と、を含む。
【００７９】
なお、例えば、ステップＳ７０６において取得したパケットデータに、複数種類の送信先が含まれていた場合、フィルタポリシ生成部３０６は、ステップＳ７０８において、例えば、最も出現数の多い送信先や全ての送信先を、ステップＳ７０６で取得した業務ＩＤに対応するフィルタポリシ１４０１に含める。送信先以外のヘッダ情報についても同様である。なお、フィルタポリシ１４０１は、入出力装置１２を介してユーザから直接入力されてもよい。また、フィルタポリシ１４０１の構成要素の順序は上記に限定されるものではない。
【００８０】
図７の説明に戻る。次に、フィルタポリシ生成部３０６は、フィルタポリシ格納部３１５に、フィルタポリシが生成されていない重要業務の業務ＩＤが存在するか否かを検証する（Ｓ７０９）。フィルタポリシ生成部３０６が、フィルタポリシが生成されていない重要業務の業務ＩＤが存在すると判定した場合（Ｓ７０９：Ｙｅｓ）、ステップＳ７０６に戻って未生成の業務ＩＤに対してフィルタポリシの生成を行う。一方、フィルタポリシ生成部３０６が全ての重要業務の業務ＩＤに対してフィルタポリシが生成されていると判定した場合（Ｓ７０９：Ｎｏ）、処理を終了する（Ｓ７１０）。
【００８１】
図１０は、検知装置３０に格納されているフィルタポリシの収集処理及び更新処理の一例を示す。はじめに、動作モード管理部３１８は、例えば入出力装置１２を介したユーザの指示に従って、動作モードを保守モードに設定する（Ｓ８０１）。保守モードは、ポリシの収集処理及び更新処理等を実施するためのモードである。ここで、動作モード管理部３１８が動作モードを保守モードに設定できない、又は後述するステップＳ８０２以降の処理が保守モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム１００は以降の処理を中止してもよい。
【００８２】
次に、フィルタポリシ収集部４０４はフィルタポリシ収集コマンドを生成する（Ｓ８０２）。フィルタポリシ収集部４０４は、例えば、入出力装置１２を介したユーザからの指示を受け付けたこと、又は動作モードが保守モードに変わった旨の通知を動作モード管理部３１８から受信したことをトリガとしてフィルタポリシ収集コマンドの生成を開始する。
【００８３】
次に、通信部４０６はフィルタポリシ収集部４０４が生成したフィルタポリシ収集コマンドを検知装置３０に送信し（Ｓ８０３）、第二通信部２０３は第一通信部２０２が受信したフィルタポリシ収集コマンドを検知装置３０に送信する（Ｓ８０４）。
【００８４】
次に、フィルタポリシ更新部３２１は、通信部３０１が受信したフィルタポリシ収集コマンドに従って、フィルタポリシ格納部３１５に格納されているフィルタポリシを取得する（Ｓ８０５）。次に、通信部３０１はフィルタポリシ更新部３２１が取得したフィルタポリシを管理装置４０に送信し（Ｓ８０６）、第一通信部２０２は第二通信部２０３が受信したフィルタポリシを管理装置４０に送信する（Ｓ８０７）。
【００８５】
なお、フィルタポリシ格納部３１５にフィルタポリシが格納されていない場合、フィルタポリシ更新部３２１は、ステップＳ８０５においてフィルタポリシを取得する代わりにフィルタポリシが存在しない旨を示すレスポンスを生成してもよい。このとき、Ｓ８０６及びＳ８０７において、フィルタポリシに代えて当該レスポンスが送信される。
【００８６】
次に、フィルタポリシ収集部４０４は、通信部４０６が受信したフィルタポリシを入出力装置１２に出力する。次に、フィルタポリシ生成部４０２は、ユーザからの入出力装置１２を介した指示に従って、当該フィルタポリシを更新する（Ｓ８０８）。なお、通信部４０６が、フィルタポリシが存在しない旨を示すレスポンスを受信した場合、フィルタポリシ生成部４０２は、ユーザからの入出力装置１２を介した指示に従ってフィルタポリシを新規に生成してもよい。
【００８７】
次に、通信部４０６はフィルタポリシ生成部４０２が更新した新フィルタポリシを検知装置３０に送信し（Ｓ８０９）、第二通信部２０３は第一通信部２０２が受信した新フィルタポリシを検知装置３０に送信する（Ｓ８１０）。次に、フィルタポリシ更新部３２１は、通信部３０１が受信した新フィルタポリシをフィルタポリシ格納部３１５に格納することで、フィルタポリシを更新する（Ｓ８１１）。
【００８８】
次に、フィルタポリシ更新部３２１は、更新結果を示すレスポンスを生成する。通信部３０１は、当該レスポンスを管理装置４０に送信し（Ｓ８１２）、第一通信部２０２は第二通信部２０３が受信した当該レスポンスを管理装置４０に送信する（Ｓ８１３）。
【００８９】
次に、フィルタポリシ生成部４０２は、通信部４０６が受信したレスポンスが示す更新結果を参照して、フィルタポリシ更新部３２１による更新処理が成功したか否か判定する（Ｓ８１４）。フィルタポリシ生成部４０２は、更新処理が成功したと判定した場合（Ｓ８１４：Ｙｅｓ）、Ｓ８０８で更新したフィルタポリシをフィルタポリシ格納部４０７に格納する（Ｓ８１５）。
【００９０】
一方、フィルタポリシ収集部４０４は、更新処理が失敗したと判定した場合（Ｓ８１４：Ｎｏ）、Ｓ８０９に戻り、再度新フィルタポリシを送信する。なお、例えば、ステップＳ８１４における初回の判定処理から所定時間が経過した場合、又はステップＳ８１４における判定処理が所定回数行われた場合には、フィルタポリシ生成部４０２は処理を終了してもよい。
【００９１】
次に、動作モード管理部３１８は、例えば入出力装置１２を介したユーザからの指示に従って、動作モードを運用モードに設定する（Ｓ８１６）。運用モードは、検知装置３０が受信したパケットをフィルタポリシ及び検知ポリシに基づいて、フィルタリングするモードである。また、例えば、Ｓ８１１におけるフィルタポリシ更新が成功した場合に、動作モード管理部３１８は、自動的に動作モードを運用モードに設定してもよい。図１０に示した処理により、管理装置４０のユーザはフィルタポリシを容易に確認することができ、さらにフィルタポリシを柔軟に変更することができる。
【００９２】
図１１は、検知装置３０に格納されている検知ポリシの収集処理及び更新処理の一例を示す。はじめに、動作モード管理部３１８は、例えば入出力装置１２を介したユーザの指示に従って、動作モードを保守モードに設定する（Ｓ９０１）。ここで、動作モード管理部３１８が動作モードを保守モードに設定できない、又は後述するステップＳ９０２以降の処理が保守モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム１００は以降の処理を中止してもよい。
【００９３】
次に、検知ポリシ収集部４０５は、検知ポリシ収集コマンドを生成する（Ｓ９０２）。検知ポリシ収集部４０５は、例えば、入出力装置１２を介したユーザからの指示を受け付けたこと、又は動作モードが保守モードに変わった旨の通知を動作モード管理部３１８から受信したことをトリガとして検知ポリシ収集コマンドの生成を開始する。
【００９４】
次に、通信部４０６は、検知ポリシ収集部４０５が生成した検知ポリシ収集コマンドを検知装置３０に対して送信し（Ｓ９０３）、第二通信部２０３は第一通信部２０２が受信した検知ポリシ収集コマンドを検知装置３０に送信する（Ｓ９０４）。
【００９５】
次に、検知ポリシ更新部３２２は、ネットワーク装置２０から受信した検知ポリシ収集コマンドに従って、検知ポリシ格納部３１６に格納されている検知ポリシを取得する（Ｓ９０５）。次に、通信部３０１は、検知ポリシ更新部３２２が取得した検知ポリシを管理装置４０に送信し（Ｓ９０６）、第一通信部２０２は第二通信部２０３が受信した検知ポリシを管理装置４０に送信する（Ｓ９０７）。
【００９６】
なお、検知ポリシ格納部３１６に検知ポリシが格納されていない場合、検知ポリシ更新部３２２は、ステップ９０５において検知ポリシを取得する代わりに検知ポリシが存在しない旨を示すレスポンスを生成してもよい。このとき、Ｓ９０６及びＳ９０７において、検知ポリシに代えて当該レスポンスが送信される。
【００９７】
次に、検知ポリシ収集部４０５は、通信部４０６が受信した検知ポリシを入出力装置１２に出力する。次に、検知ポリシ生成部４０３は、ユーザからの入出力装置１２を介した指示に従って、受信した検知ポリシを更新する（Ｓ９０８）。なお、検知ポリシ生成部４０３は、検知ポリシが存在しない旨を示すレスポンスを通信部４０６が受信した場合、ユーザからの入出力装置１２を介した指示に従って、検知ポリシを新規に生成してもよい。次に、通信部４０６は、検知ポリシ生成部４０３が更新した新検知ポリシを検知装置３０に送信し（Ｓ９０９）、第二通信部２０３は第一通信部２０２が受信した新検知ポリシを検知装置３０に送信する（Ｓ９１０）。
【００９８】
次に、検知ポリシ更新部３２２は、通信部３０１がネットワーク装置２０から受信した新検知ポリシを検知ポリシ格納部３１６に格納することで、検知ポリシを更新する（Ｓ９１１）。次に、フィルタポリシ更新部３２１は、更新結果を示すレスポンスを生成する。通信部３０１は当該レスポンスを管理装置４０に送信し（Ｓ９１２）、第一通信部２０２は第二通信部２０３が受信した当該レスポンスを管理装置４０に送信する（Ｓ９１３）。
【００９９】
次に、検知ポリシ生成部４０３は、通信部４０６が受信したレスポンスが示す更新結果を参照して、検知ポリシ更新部３２２による更新処理が成功したか否か判定する（Ｓ９１４）。検知ポリシ生成部４０３は、更新処理が成功したと判定した場合（Ｓ９１４；ＹＥＳ）、Ｓ９０４で生成した検知ポリシを検知ポリシ格納部４０８に格納する。一方、検知ポリシ生成部４０３は、更新処理が失敗したと判定した場合（Ｓ９１４：Ｎｏ）、Ｓ９０９に戻り、再度新検知ポリシを送信する。
【０１００】
なお、例えば、ステップＳ９１４における初回の判定処理から所定時間が経過した場合、又はステップＳ９１４における判定処理が所定回数行われた場合には、検知ポリシ生成部４０３は処理を終了してもよい。次に、動作モード管理部３１８は、例えば、入出力装置１２を介したユーザからの指示に従って、動作モードを運用モードに設定する（Ｓ９１６）。また、例えば、Ｓ８１１におけるフィルタポリシ更新が成功した場合に、動作モード管理部３１８は、自動的に動作モードを運用モードに設定してもよい。図１１に示した処理により、管理装置４０のユーザは検知ポリシを容易に確認することができ、さらに検知ポリシを柔軟に変更することができる。
【０１０１】
図１２は、検知ポリシ格納部３１６に格納される検知ポリシの構成例を示す。検知ポリシ１５０１は、業務ＩＤ１５０２と、検知領域１５０３と、検知領域に含まれるデータのパターンの数を示すパターン数１５０４と、検知領域に含まれるデータのパターンを示す正当データパターン１５０５と、を含む。なお、検知ポリシ１５０１の構成要素の順序は上記に限定されるものではない。
【０１０２】
業務ＩＤ１５０２は、例えば、重要業務の業務ＩＤである。即ち、検知ポリシ格納部３１６は、フィルタポリシ格納部３１５に格納されたフィルタポリシの業務ＩＤそれぞれに対応する検知ポリシを含む。検知領域１５０３は、例えば業務ＩＤ１５０２と同一の業務ＩＤ１４０２を有するフィルタポリシの検知領域１４０８を示す。
【０１０３】
図１３は、検知装置３０による、制御装置１０−１と制御装置１０−ｎの間で送受信されるパケットの正当性の検証処理の一例を示す。はじめに、動作モード管理部３１８は、例えば入出力装置１２を介したユーザの指示に従って、動作モードを運用モードに設定する（Ｓ１００１）。例えば、ステップＳ８１６又はステップＳ９１６の処理をステップＳ１００１に代えてもよい。
【０１０４】
ここで、動作モード管理部３１８が動作モードを運用モードに設定できない、又はステップＳ１００２以降の処理が運用モードに設定されないまま実行されようとする場合には、制御システム向け不正通信検知システム１００は以降の処理を中止してもよい。
【０１０５】
次に、制御処理部１０１−１は、制御コマンドを生成する（Ｓ１００２）。次に、通信部１０２−１は、制御処理部１０１−１が生成した制御コマンドを制御装置１０−ｎに送信する（Ｓ１００３）。次に、パケット複製部２０１は、制御装置１０−１から受信した制御コマンドを複製する（Ｓ１００４）。次に、第二通信部２０３は、パケット複製部２０１が複製した制御コマンドを検知装置３０に送信し（Ｓ１００５）、第一通信部２０２はパケット複製部２０１が複製した制御コマンドを制御装置１０−ｎに送信する（Ｓ１００６）。
【０１０６】
制御処理部１０１−ｎは、ネットワーク装置２０から受信した制御コマンドに従って制御業務を実行する（Ｓ１００７）。フィルタリング処理部３０７は、通信部３０１がネットワーク装置２０から受信した制御コマンドに対して、フィルタポリシ格納部３１５に格納されているフィルタポリシを用いて、パケットフィルタを行う（Ｓ１００８）。
【０１０７】
具体的には、例えば、フィルタリング処理部３０７は、受信した制御コマンドのヘッダ情報と一致するヘッダ情報を有するフィルタポリシがフィルタポリシ格納部３１５内に存在する場合、当該制御コマンドをフィルタ対象のパケットであると判定する。また、フィルタリング処理部３０７は、受信した制御コマンドのヘッダ情報と一致するヘッダ情報を有するフィルタポリシがフィルタポリシ格納部３１５内に存在しない場合、当該制御コマンドをフィルタ対象外のパケットであると判定する。
【０１０８】
フィルタリング処理部３０７が、制御コマンドをフィルタ対象外のパケットであると判定した場合（Ｓ１００８：Ｎｏ）、検知処理を終了する（Ｓ１００９）。一方、フィルタリング処理部３０７が、制御コマンドをフィルタ対象のパケットであると判定した場合（Ｓ１００８：Ｙｅｓ）、検知部３０８は検知ポリシ格納部３１６に格納されている検知ポリシを用いて、検知処理を行う（Ｓ１０１０）。
【０１０９】
具体的には、検知部３０８は、Ｓ１００８においてヘッダ情報が一致したフィルタポリシの業務ＩＤを取得し、取得した業務ＩＤを有する検知ポリシを検知ポリシ格納部３１６から取得する。検知部３０８は、取得した検知ポリシの検知領域１５０３を取得し、受信した制御コマンドのペイロードの当該検知領域内のデータをチェックする。検知部３０８は、当該検知領域内のデータが、取得した検知ポリシの正当データパターン１５０５が示すデータに一致する場合、異常がないと判定する。また、検知部３０８は、当該検知領域内のデータが、取得した検知ポリシの正当データパターン１５０５が示すデータに一致しない場合、異常があると判定する。
【０１１０】
検知部３０８が、異常がない、即ち当該制御コマンドが不正なコマンドでないと判定した場合（Ｓ１０１０：Ｎｏ）、検知処理を終了する（Ｓ１０１１）。一方、検知部３０８が、異常がある、即ち当該制御コマンドが不正なコマンドであると判定した場合（Ｓ１０１０：Ｙｅｓ）、アラート生成部３０９はアラートを生成する（Ｓ１０１２）。アラート生成部３０９は、例えば、当該制御コマンドを受信した時刻、当該制御コマンドに対応する業務ＩＤ、及び当該制御コマンドの検知領域のデータ等をアラートに含める。
【０１１１】
次に、アラート生成部３０９は、生成したアラートをアラート格納部３１７に格納する（Ｓ１０１３）。ここで、アラート生成部３０９が生成したアラートを通信部３０１が管理装置４０に送信し、第二通信部２０３が受信したアラートを第一通信部２０２が管理装置４０等に送信してもよい。また、検知装置３０の入出力装置１２及び／又は管理装置４０の入出力装置がアラートを出力してもよい。
【０１１２】
以上、本実施例の制御システム向け不正通信検知システム１００は、フィルタポリシを用いて制御コマンドが重要業務に属しているか否かを判定し、重要業務に対応する制御コマンドに対して検知ポリシを用いたフィルタリングを実行する。制御システム向け不正通信検知システム１００は当該処理により、少ない処理量で、効率的な不正通信検知処理を実施することができる。具体的には、低リソースの検知装置３０単体を用いて、制御システム内の重要業務に関する不正通信を高速かつ高精度に検知することができる。
【０１１３】
なお、例えば、本実施例の検知装置３０にネットワーク装置２０及び／又は管理装置４０が含まれていてもよいし制御装置１０や検知装置３０や管理装置４０にネットワークとの通信機能が含まれておらず、これらの装置が別の装置を経由してネットワークと通信を行ってもよい。
【０１１４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１５】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１１６】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１１７】
１０−１〜１０−ｎ  制御装置、１４  ＣＰＵ、１５  メモリ、３０  検知装置、３０３  業務分類部、４０  管理装置、３０４  重要業務判定部、３０５  差分抽出部、３０６  フィルタポリシ生成部、３０７  フィルタリング処理部、３０８  検知部、３０９  アラート生成部、３１１  基準用データ格納部、３１２  分類用データ格納部、３１３  判定閾値格納部、３１４  業務分類データ格納部、３１５  フィルタポリシ格納部、３１６  検知ポリシ格納部、３１８  基準用データ生成部、３１９  分類用データ生成部、３２１  フィルタポリシ更新部、３２２  検知ポリシ更新部、４０１  基準パケット生成部、４０４  フィルタポリシ収集部、４０５  検知ポリシ収集部、
【図１】
0006507075.tif 000002
【図２】
0006507075.tif 000003
【図３】
0006507075.tif 000004
【図４】
0006507075.tif 000005
【図５】
0006507075.tif 000006
【図６】
0006507075.tif 000007
【図７】
0006507075.tif 000008
【図８】
0006507075.tif 000009
【図９】
0006507075.tif 000010
【図１０】
0006507075.tif 000011
【図１１】
0006507075.tif 000012
【図１２】
0006507075.tif 000013
【図１３】
0006507075.tif 000014