(57)【特許請求の範囲】
【請求項１】
構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知装置であって、
所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が前記正常モデルに含まれない時に前記検知対象データ系列が局所的に異常であると判定し、当該順列が前記正常モデルに含まれる時に前記検知対象データ系列が局所的に正常であると判定する判定部と、
前記判定部が局所的に正常であると判定した場合に次に前記判定部に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持するデータ候補保持部とを備える
ことを特徴とする異常検知装置。
【請求項２】
判定部が入力されたデータに対して局所的に正常であると連続して判定した回数である正常回数を保持する判定カウンタ保持部を備え、
前記判定部は、前記判定カウンタ保持部が保持する正常回数が第１所定値以上である場合に検知対象システムが正常な状態であると判定する
請求項１記載の異常検知装置。
【請求項３】
判定カウンタ保持部は、判定部が入力されたデータに対して局所的に異常であると連続して判定した回数である異常回数を保持し、
前記判定部は、前記判定カウンタ保持部が保持する異常回数が第２所定値以上である場合に検知対象システムが異常な状態であると判定する
請求項２記載の異常検知装置。
【請求項４】
第１所定値と第２所定値は、異常検知装置の動作パラメータであって、さらに前記異常検知装置への入力パラメータである
請求項３記載の異常検知装置。
【請求項５】
判定部が入力されたデータに対して局所的に異常である、または局所的に正常であると判定するために参照した正常モデルのデータと、前記入力されたデータとを所定の数だけ履歴データとして保持する判定履歴保持部と、
検知対象システムが異常な状態であると判定された場合、前記判定部が局所的に異常であると判定されたデータを含む検知対象データ系列と、当該検知対象データ系列との比較に用いられた正常モデルのデータ系列とを前記判定履歴保持部から抽出し、当該検知対象データ系列の順序に関する異常パターンを判別する異常パターン判別部とを備える
請求項１から請求項４のうちのいずれか１項に記載の異常検知装置。
【請求項６】
異常パターン判別部は、
判定履歴保持部から抽出された局所的に異常であると判定されたデータを含む検知対象データ系列と、当該検知対象データ系列との比較に用いられた正常モデルのデータ系列に対してレーベンシュタイン距離の算出処理を実行し、
生成されたコスト配列と操作履歴配列に応じて前記検知対象データ系列の順序に関する異常パターンを判別する
請求項５記載の異常検知装置。
【請求項７】
正常モデルのデータ系列を構成する個々のデータには、正常モデルにおいて出現する順番を識別するラベルまたは番号がそれぞれ付与され、
前記個々のデータは、複数の実数値または離散値で表されるデータ項目を含む多次元ベクトルとして構成される
請求項１から請求項６のうちのいずれか１項に記載の異常検知装置。
【請求項８】
データ項目には、正常モデルにおいて出現する順番を決めるためのタイムスタンプ、または２つのタイムスタンプの差分に相当する時刻データが含まれる
請求項７記載の異常検知装置。
【請求項９】
所定の順列は、円順列である
請求項１から請求項８のうちのいずれか１項に記載の異常検知装置。
【請求項１０】
構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知装置において実行される異常検知方法であって、
前記異常検知装置が、
所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が前記正常モデルに含まれない時に前記検知対象データ系列が局所的に異常であると判定し、当該順列が前記正常モデルに含まれる時に前記検知対象データ系列が局所的に正常であると判定し、
局所的に正常であると判定された場合に次に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持する
ことを特徴とする異常検知方法。
【請求項１１】
構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知プログラムであって、
コンピュータに、
所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が前記正常モデルに含まれない時に前記検知対象データ系列が局所的に異常であると判定し、当該順列が前記正常モデルに含まれる時に前記検知対象データ系列が局所的に正常であると判定する判定処理、および
局所的に正常であると判定された場合に次に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持する保持処理
を実行させるための異常検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知装置、異常検知方法および異常検知プログラムに関する。
【背景技術】
【０００２】
産業制御システムや物理系システムへの侵入等の、重大事故に分類されるセキュリティインシデントの発生が増加している。システムへの侵入が原因で、石油パイプラインの爆発や核施設の遠心分離器の破壊等の、影響度の大きいインシデントが引き起こされている。インシデントの発生を防止するために、システムへの攻撃を事前に検知することが求められている。【０００３】
しかし、攻撃手法の高度化により、検知が困難な攻撃パターンも存在する。検知が困難な攻撃パターンにも対応できるように、高度な異常検知方法の開発が求められている。特許文献１〜特許文献３には、異常検知方法の例が記載されている。【０００４】
特許文献１には、人物や車両等の移動体の行動パターンの識別や異常判定を目的として、隠れマルコフモデル(Hidden Markov Model) を利用して位置時系列データを解析する移動体行動解析装置が記載されている。位置時系列データは、例えばIDと、時刻データと、座標情報とで構成されている。【０００５】
隠れマルコフモデルは、システムをパラメータが未知のマルコフ過程であると仮定して、観測可能な情報からマルコフ過程のパラメータを推定するモデルである。【０００６】
具体的には、隠れマルコフモデルは、システムがマルコフ過程に従って遷移する内部状態を持つと仮定し、各状態に応じた記号が確率的に出力されると考えた場合に、記号の出現確率分布を基にシステム内部の状態遷移を推定する確率モデルである。【０００７】
特許文献１に記載されている移動体行動解析装置は、正常パターンのデータに対応するモデルと、検知対象データに対応するモデルとを比較することによって算出される類似度を基に、異常行動を検出する。【０００８】
特許文献２には、ICS （インダストリアル・コントロール・システム）における異常を検知する方法が記載されている。特許文献２に記載されている方法は、システム中の複数の対象から計測データを収集し、システム全体を機器の種類や階層ごとに分けて異常度や異常スコアを計算することによって異常を検知する。【０００９】
特許文献２に記載されている方法では、異常スコアを得るための演算アルゴリズムとして、数値データに対してHotelling T2検定、One-class SVM 、またはLocal Outlier Factor等が採用されると考えられている。また、イベントデータに対して非頻出パターン発見、ナイーブベイズ、または隠れマルコフモデル等が採用されると考えられている。【００１０】
また、特許文献３には、情報処理システムで発生した障害を高い精度で特定、および解析できるログ分析システムが記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第４８２２２８０号公報
【特許文献２】特許第５５０１４８１号公報
【特許文献３】国際公開第２０１６／１３２７１７号
【非特許文献】
【００１２】
【非特許文献１】"Algorithm B" 、[online]、津田塾大学情報科学科・大学院情報科学専攻新田研究室、[平成29年 1月31日検索]、インターネット<http://nw.tsuda.ac.jp/class/algoB/c13.html>
【発明の概要】
【発明が解決しようとする課題】
【００１３】
異常検知方法のうち、例えば、制御パラメータや観測データの形式や値が正常の範囲内であれば攻撃と判定しない、統計的外れ値の検出に基づいた検知方法がある。しかし、統計的外れ値の検出に基づいた検知方法は、データの発生順の異常や、データの発生のタイミングの異常等を即座に検知できない。【００１４】
以下、異常検知方法の処理対象の情報を制御シーケンスと呼ぶ。制御シーケンスは、含まれるデータの順番に規則性が存在するデータ群である。制御シーケンスは、例えば物理系システム内で発行された制御コマンドの集合である。なお、制御シーケンスにおける規則性は、周期的な規則性でもよい。【００１５】
また、制御シーケンスは、特許文献１に記載されている位置時系列データと同種のデータである。すなわち、制御シーケンスは、所定の状態遷移を伴う変化が生じるシステム内で発生するデータに相当する。【００１６】
図１８は、制御シーケンスの例を示す説明図である。図１８に示す制御シーケンスを構成する各データを、ステートデータと呼ぶ。図１８には、８つのステートデータが示されている。【００１７】
図１８に示す制御シーケンスは、３次元空間の座標を指定する形式で１ステップずつコマンドを発行することによってロボットアームの動作を制御するシステムで得られるデータである。上記のシステムでは、SourceアドレスX を有するPC(Personal Computer) からDestination アドレスY を有するロボットアームに対してコマンドが所定の時間間隔で発行されている。【００１８】
即時的な異常検知が実行されるためには、制御シーケンスの要素（ステートデータ）が出現する時、または要素が観測される時に異常判定が行われることが求められる。上記の異常判定を行う単純な方法として、次に入力されることが想定される正常モデルのステートが対応するステートデータと、観測されたステートデータとを１つずつ比較、または照合する方法が考えられる。【００１９】
しかし、特定の条件下では両者のステートデータの出現順にずれが生じるため、常に１つずつ単純に比較する方法で即時的な異常検知を実行することは困難である。図１９に、即時的な異常検知の実行が困難な、特定の条件下で両者のステートデータの出現順にずれが生じる例を示す。【００２０】
図１９は、異常判定を行う方法の例を示す説明図である。図１９には、正常モデルと、第１観測データと、第２観測データとが示されている。第１観測データと第２観測データは、独立した２つの制御シーケンスの例である。また、図１９に示す円内の数値は、検知対象システムの内部の状態（ステート）と対応している。【００２１】
一般に、異常検知システムが起動する前までの検知対象システムの情報を取得することはできないため、起動直前の検知対象システムの状態を把握することは困難である。すなわち、異常検知システムが起動した直後に、状態遷移を伴う一連のステートデータにおける現在位置を把握することは困難である。従って、異常検知システムは、正常モデルの最初に比較すべき対象となるステートデータを容易に決定できない。【００２２】
図１９に示す第１観測データでは、正常モデル通りにステートデータが並んでいる。しかし、異常検知システムが正常モデルの比較対象のステートデータを状態値が「３」を示すステートデータではなく状態値が「１」を示すステートデータに決定している。すなわち、異常検知システムは、対象システムの現在状態を「３」と認識している。【００２３】
図１９に示す例では、第１観測データとステートデータとの比較において、適切な正常モデルの位置がずれている。比較における適切な正常モデルの位置がずれているため、図１９に示すように第１観測データの全てのステートデータの判定結果が「ＮＧ」になる。【００２４】
上記のように、制御シーケンスの各ステートデータが正常モデルのどの位置に対応しているかを１ステート分のデータのみの比較で把握することは困難である。特に、周期的な制御シーケンスが処理対象である場合、各ステートデータが正常モデルのどの位置に対応しているかを１ステート分のデータのみの比較で把握することは困難である。【００２５】
上記の問題を解決するために、検知対象システムの起動と異常検知システムの起動とを手動で同期させることが考えられる。両者の起動を同期させることができれば位置ずれは生じない。しかし、対象システムが増える可能性や作業ミスが生じる恐れ等を考慮すると、手動での対応は好ましくない。【００２６】
また、正常モデルから逸脱しているため異常であることを検知した後、異常検知システムが異常検知後の正常モデルの最初の比較対象のステートデータを決定できないために、位置ずれが生じる場合がある。図１９に示す第２観測データを判定する場合、異常検知システムは、ステートデータ「ｘ」が入力された時に正常モデルのいずれのステートにも対応していないステートデータであるため、第２観測データが異常であることを検知する。【００２７】
図１９に示す第２観測データでは、ステートデータ「ｘ」以降、正常モデル通りにステートデータが並んでいる。しかし、異常検知システムが異常検知後の正常モデルの現在状態を「３」ではなく異常がなかった時の次状態である「４」と認識しているため、第２観測データが対応する次状態のステートデータとの比較に適切な正常モデルのステートデータとがずれている。【００２８】
比較に適切な正常モデルのステートデータがずれているため、図１９に示すように第２観測データのステートデータ「ｘ」以降の全てのステートデータの判定結果が「ＮＧ」になる。【００２９】
上記のような位置ずれに対応するために、異常検知後に比較対象とするステートデータの位置を調整することも考えられる。【００３０】
また、正常モデルと異常データとを適切に比較するために、異常検知システムには、異常データの各パターンに応じて比較方法を予め把握することが求められる。【００３１】
図２０は、正常モデルと正常データとの比較方法の例を示す説明図である。図２０に示す両端矢印内の比較ステップ数は、実行される比較処理の順番を表す。また、図２０に示す両端矢印は、各比較ステップ数で比較される対象の２つのステートデータを指す。【００３２】
正常モデルと正常データとを比較する場合、異常検知システムは、図２０に示すように正常モデルのステートデータと各々の順列において同じ位置に相当する正常データのステートデータとを１つずつ順番に比較すればよい。【００３３】
以下、異常データの各パターンに対する比較方法を説明する。図２１は、正常モデルと異常データとの比較方法の例を示す説明図である。【００３４】
図２１に示す＜改ざん＞は、例えば正常な制御シーケンス内のパラメータが書き換えられたパターンである。正常モデルと異常データとの比較において、異常検知システムは、図２１に示すように正常モデルのステートデータと同じ位置で異常データのステートデータを正常モデルのステートデータと比較すればよい。【００３５】
しかし、異常検知システムが上記の比較方法を把握していない場合、または異常データのパターンが＜改ざん＞に該当すると判別できない場合、位置ずれが生じる。【００３６】
図２１に示す＜挿入＞は、例えば正常な制御シーケンスのどこかに不正なステートデータが挿入されたパターンである。正常モデルと異常データとの比較において、異常検知システムは、図２１に示す比較ステップ数「３」のように異常を検知したら、異常データのステートデータの位置より１つ前の正常モデルのステートデータを異常データのステートデータと比較すればよい。【００３７】
しかし、異常検知システムが上記の比較方法を把握していない場合、または異常データのパターンが＜挿入＞に該当すると判別できない場合、位置ずれが生じる。【００３８】
また、挿入されるステートデータが１個である場合、異常検知システムは、上記の比較方法で対応できる。しかし、２個以上のステートデータが挿入される場合、異常検知システムが上記の比較方法しか把握していないと、位置ずれが生じる。【００３９】
図２１に示す＜削除＞は、例えば正常な制御シーケンス内のいずれかのステートデータが削除されたパターンである。正常モデルと異常データとの比較において、異常検知システムは、図２１に示す比較ステップ数「３」のように異常を検知したら、異常データのステートデータの位置より１つ先の正常モデルのステートデータを異常データのステートデータと比較すればよい。【００４０】
しかし、異常検知システムが上記の比較方法を把握していない場合、または異常データのパターンが＜削除＞に該当すると判別できない場合、位置ずれが生じる。【００４１】
また、削除されるステートデータが１個である場合、異常検知システムは、上記の比較方法で対応できる。しかし、２個以上のステートデータが削除される場合、異常検知システムが上記の比較方法しか把握していないと、位置ずれが生じる。【００４２】
図２１に示す＜順番入替＞は、例えば正常な制御シーケンス内のステートデータ同士が入れ替えられたパターンである。正常モデルと異常データとの比較において、異常検知システムは、図２１に示すように正常モデルのステートデータと同じ位置の異常データのステートデータを正常モデルのステートデータと比較すればよい。【００４３】
しかし、異常検知システムが上記の比較方法を把握していない場合、または異常データのパターンが＜順番入替＞に該当すると判別できない場合、位置ずれが生じる。【００４４】
各異常パターンに対応できるように、異常データを基に異常パターンを判別できる異常検知システムが求められている。【００４５】
特許文献１に記載されている移動体行動解析装置は、一連の位置時系列データを全て取得した時のみ類似度を計算できる。また、特許文献３に記載されているログ分析システムは、順序関係を構成する一連の複数のログをまとめて比較することによって異常を検知している。【００４６】
すなわち、特許文献１に記載されている移動体行動解析装置、および特許文献３に記載されているログ分析システムは、逐次的に異常の有無を検知できず、正常モデルからの逸脱が生じたら異常を検知するような即時的な異常検知を実行できない。【００４７】
即時的な異常検知が実行されるためには、位置時系列データの要素が出現する度に、異常であるか否かを判定することが求められる。特許文献１および特許文献３には、即時的な異常検知の実行方法が記載されていない。【００４８】
また、特許文献２に記載されている方法が使用された場合、数値データに対して採用可能な演算アルゴリズムが統計的外れ値の検出に基づいた手法を用いているため、ICS データの特性のうち順序関係の影響が考慮されない。【００４９】
また、イベントデータに対して採用可能な演算アルゴリズムのうち、特に隠れマルコフモデルは、順序関係の影響を考慮できる。しかし、異常スコアの演算方法等への隠れマルコフモデルの具体的な適用方法は、特許文献２に記載されていない。【００５０】
［発明の目的］
そこで、本発明は、上述した課題を解決する、制御シーケンスに含まれるステートデータの順列が正常モデルから逸脱しているか否かを即座に検知できる異常検知装置、異常検知方法および異常検知プログラムを提供することを目的とする。
【課題を解決するための手段】
【００５１】
本発明による異常検知装置は、構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知装置であって、所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が正常モデルに含まれない時に検知対象データ系列が局所的に異常であると判定し、当該順列が正常モデルに含まれる時に検知対象データ系列が局所的に正常であると判定する判定部と、判定部が局所的に正常であると判定した場合に次に判定部に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持するデータ候補保持部とを備えることを特徴とする。【００５２】
本発明による異常検知方法は、構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知装置において実行される異常検知方法であって、異常検知装置が、所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が正常モデルに含まれない時に検知対象データ系列が局所的に異常であると判定し、当該順列が正常モデルに含まれる時に検知対象データ系列が局所的に正常であると判定し、局所的に正常であると判定された場合に次に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持することを特徴とする。
【００５３】
本発明による異常検知プログラムは、構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知プログラムであって、コンピュータに、所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータと当該入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、当該順列が正常モデルに含まれない時に検知対象データ系列が局所的に異常であると判定し、当該順列が正常モデルに含まれる時に検知対象データ系列が局所的に正常であると判定する判定処理、および局所的に正常であると判定された場合に次に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持する保持処理を実行させることを特徴とする。
【発明の効果】
【００５４】
本発明によれば、制御シーケンスに含まれるステートデータの順列が正常モデルから逸脱しているか否かを即座に検知できる。
【図面の簡単な説明】
【００５５】
【図１】本発明による異常シーケンス検知装置の使用例を示す説明図である。
【図２】本発明による異常シーケンス検知装置１０１の第１の実施形態の構成例を示すブロック図である。
【図３】第１の実施形態の異常シーケンス検知装置１０１による制御シーケンス判定処理の動作の概要を示す説明図である。
【図４】異常シーケンス検知装置１０１が出力する判定結果の状態遷移の例を示す説明図である。
【図５】第１の実施形態の異常シーケンス検知装置１０１による制御シーケンス判定処理の動作を示すフローチャートである。
【図６】本発明による異常シーケンス検知装置１０２の第２の実施形態の構成例を示すブロック図である。
【図７】第２の実施形態の異常シーケンス検知装置１０２による制御シーケンス判定処理の動作を示すフローチャートである。
【図８】異常シーケンス検知装置１０２が出力する判定結果の状態遷移の例を示す説明図である。
【図９】本発明による異常シーケンス検知装置１０３の第３の実施形態の構成例を示すブロック図である。
【図１０】第３の実施形態の異常シーケンス検知装置１０３による制御シーケンス判定処理の動作を示すフローチャートである。
【図１１】第３の実施形態の異常シーケンスパターン判別部１７０による異常シーケンスパターン判別処理の動作を示すフローチャートである。
【図１２】異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の算出例を示す説明図である。
【図１３】異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。
【図１４】異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。
【図１５】異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。
【図１６】第３の実施形態の異常シーケンスパターン判別部１７０による異常シーケンスパターン判別処理の具体的な動作を示すフローチャートである。
【図１７】本発明による異常検知装置の概要を示すブロック図である。
【図１８】制御シーケンスの例を示す説明図である。
【図１９】異常判定を行う方法の例を示す説明図である。
【図２０】正常モデルと正常データとの比較方法の例を示す説明図である。
【図２１】正常モデルと異常データとの比較方法の例を示す説明図である。
【発明を実施するための形態】
【００５６】
図１は、本発明による異常シーケンス検知装置の使用例を示す説明図である。図１に示すように、異常シーケンス検知装置は、制御PC、中継装置、およびセンサと通信可能に接続されている。また、中継装置は、制御PC、センサ、および制御対象デバイスと通信可能に接続されている。
【００５７】
また、図１に示すように、吹き出し内の異常シーケンス検知装置等は、監視対象システム内で稼働している。監視対象システムは、例えば産業制御システムである。なお、監視対象システムは、産業制御システムに限られない。
【００５８】
異常シーケンス検知装置は、制御PC、中継装置、およびセンサから、監視対象システムの状態遷移に基づいた情報である制御シーケンスを取得する。取得される情報の種類は、例えば制御コマンド、センサ情報、または各種ログである。
【００５９】
また、異常シーケンス検知装置は、通信ネットワークでのパケットをキャプチャすることによって制御シーケンスを取得してもよい。また、異常シーケンス検知装置は、各装置に格納されているログを基に制御シーケンスを取得してもよい。また、異常シーケンス検知装置は、監視対象機器のエージェントが取得した情報を基に制御シーケンスを取得してもよい。
【００６０】
本発明による異常シーケンス検知装置は、制御シーケンスにおける異常を検知する装置である。具体的には、異常シーケンス検知装置は、制御シーケンスの異常検知において、含まれているステートデータの順番が正常であるか異常であるかを判定する。また、異常シーケンス検知装置は、検知された異常のパターンを判別する。以下、本発明の実施形態を、図面を参照して説明する。
【００６１】
［第１の実施形態］
［構成の説明］
図２は、本発明による異常シーケンス検知装置１０１の第１の実施形態の構成例を示すブロック図である。本実施形態の異常シーケンス検知装置１０１は、異常検知装置に相当する。
【００６２】
図２に示すように、異常シーケンス検知装置１０１は、正常モデル記憶部１１０と、判定部１２０と、ステート候補保持部１３０と、判定カウンタ保持部１４０と、出力部１５０とを備える。
【００６３】
本実施形態の異常シーケンス検知装置１０１は、構成するデータの順番に規則性が存在するデータ群に対して、データの順番が正常であるか異常であるかを判定する機能を有する。異常シーケンス検知装置１０１は、正常判定閾値として指定された数だけ連続して正しい順序でステートデータが観測されている間、それらステートデータを含む制御シーケンスを「正常」と判定する。
【００６４】
正常モデル記憶部１１０は、制御シーケンスの異常検知に使用される正常モデルを記憶する機能を有する。正常モデルは、異常シーケンス検知装置１０１内で構築されてもよいし、外部から入力されてもよい。
【００６５】
本実施形態の異常シーケンス検知装置１０１の検知対象の制御シーケンスを構成するステートデータは、例えば、任意の実数値や離散値等で構成される多次元ベクトルである。制御シーケンスにおいて、例えば、多次元ベクトルの出現順に周期的な規則性が存在する。多次元ベクトルは、正常モデルの内部状態と対応付けられている。
【００６６】
上記の性質を持つ制御シーケンスが検知対象であれば、異常検知に使用される正常モデルは、有向グラフで表現される。また、制御シーケンスのステートデータに対して隠れマルコフモデル等が適用されることによって、正常モデルが抽出されてもよい。
【００６７】
判定部１２０は、指定された任意の数のステートデータが連続して正しい順序で観測されている間、それらステートデータを含む制御シーケンスを「正常」と判定する機能を有する。また、判定部１２０は、１つでもステートデータが正常モデルと異なる順序で観測されている場合、異なる順序のステートデータが入力された時点で制御シーケンスを「異常」と判定する機能を有する。
【００６８】
判定部１２０は、観測データと正常モデルとの比較、および照合を行う。比較、および照合を行うために、判定部１２０は、正常モデルを構成する要素を逐次探索する。
【００６９】
図２に示すように、判定部１２０には、ステートデータと、正常判定閾値とが入力される。正常判定閾値が、上記の指定された任意の数に相当し、正常と判断されるまでの判定履歴数の閾値ともいえる。正常判定閾値は、例えば異常シーケンス検知装置１０１のパラメータである。なお、正常判定閾値は、使用される正常モデルとは独立に決定されるパラメータでもよいし、使用される正常モデルに依存するパラメータでもよい。
【００７０】
正常判定に影響する判定履歴数の閾値は、処理対象の制御システムに依存する。すなわち、正常判定閾値は、任意の数に設定可能なパラメータであることが求められる。例えば、正常判定閾値は、異常検知システムのマニュアル、手順書、または仕様書等に異常シーケンス検知装置１０１への設定値として記載されてもよい。
【００７１】
また、正常判定閾値は、設定値として入力される以外に、正常モデルにおける正常パターンの分岐の有無や遷移確率等に基づいて設定されてもよい。
【００７２】
ステート候補保持部１３０は、次に判定部１２０に入力されるステートの候補を保持する機能を有する。ステート候補保持部１３０は、判定部１２０が入力された１つのステートデータの順番が正常であると判定した後に、正常モデルを用いて次に入力されるステートの候補を決定する。
【００７３】
次に入力されるステートの候補は、正常モデルにおける次の現在状態の候補でもよい。また、次の現在状態の候補は、１つでもよいし、複数でもよい。
【００７４】
判定カウンタ保持部１４０は、入力されたステートデータに対する判定カウンタを保持する機能を有する。判定カウンタは、判定部１２０が連続で入力されたステートデータの順番が正常であると判定した回数である。
【００７５】
出力部１５０は、制御シーケンスが正常であるか異常であるかを示す判定部１２０の判定結果を出力する機能を有する。
【００７６】
［動作の説明］
以下、図２に示す異常シーケンス検知装置１０１の動作を図３、図５を参照して説明する。
【００７７】
最初に、図２に示す異常シーケンス検知装置１０１において制御シーケンスが正常であるか異常であるかを判定する動作の概要を、図３を参照して説明する。図３は、第１の実施形態の異常シーケンス検知装置１０１による制御シーケンス判定処理の動作の概要を示す説明図である。
【００７８】
図３には、制御シーケンス判定処理で使用される正常モデルと、制御シーケンス判定処理の対象の観測データが示されている。正常モデルは、有向グラフで表現されている。また、図３に示す正常モデルは、循環するモデルである。
【００７９】
正常モデルを構成するステートデータは、例えば任意の実数値や離散値を含む多次元ベクトルである。各ステートデータには、シーケンス番号が振られている。各ステートデータは、シーケンス番号で識別される。また、図３に示す円内の数値は、多次元ベクトルが対応する正常モデルのシーケンス番号を示す。
【００８０】
図３に示す制御シーケンス判定処理では、制御シーケンスが正常と判断される判定履歴数が３に設定されている。判定部１２０は、シーケンス番号１の観測データ（ステートデータ）「１」から判定を開始する。判定の開始前に、ステート候補保持部１３０は、入力されるステートの初期候補「１」「２」「３」「４」「５」を保持する。入力されるステートの初期候補は、正常モデルの全要素である。
【００８１】
最初に、観測データ「１」が判定部１２０に入力される。「１」はステート候補保持部１３０に保持されているステートの候補に含まれているため、判定部１２０は、観測データ「１」を正しいステートデータであると判定する。判定部１２０が判定した時点で、ステート候補保持部１３０は、次に入力されるステートの候補「２」を保持する。また、判定カウンタ保持部１４０は、判定カウンタ「１」を保持する。
【００８２】
次に、観測データ「２」が判定部１２０に入力される。「２」はステート候補保持部１３０に保持されているステートの候補と一致するため、判定部１２０は、入力された観測データ「２」の順番が正常であると判定する。判定部１２０が判定した時点で、ステート候補保持部１３０は、次に入力されるステートの候補「３」を保持する。また、判定カウンタ保持部１４０は、判定カウンタ「２」を保持する。
【００８３】
次に、観測データ「３」が判定部１２０に入力される。判定部１２０は、入力された観測データ「３」の順番が正常であると判定する。判定部１２０が判定した時点で判定カウンタ保持部１４０が保持する判定カウンタ「３」が正常判定閾値に一致するため、出力部１５０は、制御シーケンスが正常であることを示す判定結果を出力する。
【００８４】
次に、観測データ「４」が判定部１２０に入力される。判定部１２０は、入力された観測データ「４」の順番が正常であると判定する。判定部１２０が判定した時点で判定カウンタ保持部１４０が保持する判定カウンタ「４」が正常判定閾値を超えるため、出力部１５０は、制御シーケンスが正常であることを示す判定結果を出力する。なお、正常状態が継続中であるため、出力部１５０は、判定結果の出力を省略してもよい。
【００８５】
次に、観測データ「ｘ」が判定部１２０に入力される。「ｘ」はステート候補保持部１３０に保持されているステートの候補「５」と一致しないため、判定部１２０は、入力された観測データ「ｘ」の順番が異常であると判定する。次いで、出力部１５０は、制御シーケンスが異常であることを示す判定結果を出力する。
【００８６】
制御シーケンスが異常であることを示す判定結果が出力される時、ステート候補保持部１３０は、入力されるステートの初期候補「１」「２」「３」「４」「５」を再度保持する。また、判定カウンタ保持部１４０が保持する判定カウンタは、「０」に初期化される。初期化された後、判定部１２０は、次の観測データであるシーケンス番号５の「５」から判定を再開する。
【００８７】
異常シーケンス検知装置１０１は、上記の制御シーケンス判定処理を入力される観測データが無くなるまで繰り返し実行する。上記の制御シーケンス判定処理が実行される際の異常シーケンス検知装置１０１が出力する判定結果の状態遷移の例を図４に示す。
【００８８】
図４は、異常シーケンス検知装置１０１が出力する判定結果の状態遷移の例を示す説明図である。すなわち、判定カウンタi が正常判定閾値T 以上である場合、出力される判定結果は「正常」を示す。
【００８９】
また、「正常」を示す判定結果が出力されている時に異常シーケンス検知装置１０１に想定されていないステートデータが入力された場合、出力される判定結果は「異常」を示す。また、「異常」を示す判定結果が出力された後に判定カウンタi が正常判定閾値T に再び到達した場合、出力される判定結果は再度「正常」を示す。
【００９０】
次に、図２に示す異常シーケンス検知装置１０１の制御シーケンスが正常であるか異常であるかを判定する動作を、図５を参照して説明する。図５は、第１の実施形態の異常シーケンス検知装置１０１による制御シーケンス判定処理の動作を示すフローチャートである。
【００９１】
最初に、異常シーケンス検知装置１０１は、ステップS101〜ステップS104の処理で構成される起動処理を実行する。判定部１２０は、正常モデル記憶部１１０から正常モデルG=(V,A) を取得する（ステップS101）。
【００９２】
本例の正常モデルG は、状態遷移図で表現されるモデルである。V とA はそれぞれ、正常モデルG が状態遷移図におけるグラフとみなされた時の、正常モデルG を構成する各要素に相当するノードの集合と、ノード同士を結ぶリンクの集合を表している。
【００９３】
また、リンクの集合A の要素であるalは、状態遷移図におけるあるノードとあるノードとを結ぶリンクである。すなわち、リンクalは、始点（ノード）と終点（ノード）の情報を持つ。関数s と関数d はそれぞれ、指定されたリンクの始点ノードを返す関数と、終点ノードを返す関数である。すなわち、s(al) は、V の要素のいずれかに一致する、alの始点ノードである。また、d(al) は、V の要素のいずれかに一致する、alの終点ノードである。また、vkは、ノードの集合V の要素である。
【００９４】
次いで、判定部１２０は、判定カウンタ保持部１４０が保持する判定カウンタi を「０」に初期化する（ステップS102）。次いで、判定部１２０は、正常判定閾値T を取得する（ステップS103）。
【００９５】
次いで、判定部１２０は、ステート候補保持部１３０に保持されている入力されるステートの候補P に初期ステート候補を設定する（ステップS104）。起動処理の段階では、初期ステート候補は正常モデルを構成する要素の集合V であるため、P=V と設定される。
【００９６】
起動処理を終えた後、異常シーケンス検知装置１０１は、ステップS105〜ステップS114の処理で構成される正常モデルG の要素の探索処理を実行する。判定部１２０は、入力されたステートデータx を取得する（ステップS105）。
【００９７】
次いで、判定部１２０は、f(x)==vkとなるvk∈P が存在するか否かを確認する（ステップS106）。関数f(x)は、入力された順番のステートデータに対応するノードを返す関数である。
【００９８】
vk∈P が存在しない場合（ステップS106におけるNo）、判定部１２０は、ステート候補保持部１３０に保持されているP に初期ステート候補としてV を再度設定する（ステップS107）。
【００９９】
ステップS106の処理では、入力されたステートデータに対応するvkが１つ前のステートデータに基づいて設定されるステートの候補P に含まれているか（すなわち、vkがP の元であるか）を判定部１２０が判定している。ステップS106の処理により、複数の観測データが１つ入力されるごとに、入力されたデータと入力されたデータより１つ前に入力されたデータとの組が示す順列が正常モデルに含まれているか否かが判定される。
【０１００】
次いで、判定部１２０は、判定カウンタ保持部１４０が保持する判定カウンタi を「０」に初期化する（ステップS108）。P=V 、およびi=0 とそれぞれ設定することによって、判定部１２０は、判定処理を最初から実行するための準備を行う。
【０１０１】
次いで、出力部１５０は、制御シーケンスが異常であることを示す判定結果を出力する（ステップS109）。判定結果が出力された後、判定部１２０は、次のステートデータを受け付けるか否かを確認する（ステップS114）。
【０１０２】
次のステートデータを受け付ける場合（ステップS114におけるYes ）、判定部１２０は、再度ステップS105の処理を行う。次のステートデータを受け付けない場合（ステップS114におけるNo）、異常シーケンス検知装置１０１は、制御シーケンス判定処理を終了する。
【０１０３】
vk∈P が存在する場合（ステップS106におけるYes ）、判定部１２０は、次に入力されるステートの候補を取得する（ステップS110）。s-1 は、リンクの始点ノードを表す関数s の逆関数である。すなわち、s-1(vk) は、vkが始点ノードであるリンクを表す。vkが存在する場合、vkが始点ノードであるリンクalがal=s-1(vk)と決定される。
【０１０４】
また、関数d はリンクの終点ノードを表す関数であるため、d(s-1(vk))は、vkが始点ノードであるリンクの終点ノードを表す。すなわちリンクが決定されれば、始点ノードに対応する終点ノードがd(s-1(vk))で求められる。d(s-1(vk))は、次の比較対象のステートの候補である。
【０１０５】
仮に始点ノードから複数のリンクが伸びている場合、上記の式を満たす終点ノードはリンクの数だけ存在する。すなわち、次に入力されるステートデータが必ずしも一意に決まるわけではないため、判定部１２０は、ステップS110の処理で次に入力されるステートの候補を取得する。
【０１０６】
次いで、判定部１２０は、判定カウンタ保持部１４０が保持する判定カウンタi に１を加算する（ステップS111）。次いで、判定部１２０は、判定カウンタi が正常判定閾値T 以上であるか否かを確認する（ステップS112）。
【０１０７】
判定カウンタi が正常判定閾値T 未満である場合（ステップS112におけるFalse ）、判定部１２０は、上述したステップS114の処理を行う。
【０１０８】
判定カウンタi が正常判定閾値T 以上である場合（ステップS112におけるTrue）、出力部１５０は、制御シーケンスが正常であることを示す判定結果を出力する（ステップS113）。判定結果が出力された後、判定部１２０は、上述したステップS114の処理を行う。
【０１０９】
ステップS105〜ステップS106の処理で、判定部１２０は、入力されたデータと１つ前に入力されたデータとの組が正常モデルに含まれているか否かを判定している。組が正常モデルに含まれていない場合、判定部１２０は、検知対象システムが異常な状態であると判定する。
【０１１０】
［効果の説明］
本実施形態の異常シーケンス検知装置１０１は、含まれるステートデータの順序に規則性が存在する制御シーケンスの異常状態を逐次検知できる。その理由は、ステートデータが入力されるごとに、判定部１２０が、１つ前に入力されたステートデータとの関係を正常モデルと照合し、照合された関係が適切であるか否かを判定するためである。
【０１１１】
また、異常シーケンス検知装置１０１は、一度異常を検知した後も検知処理を継続して実行できる。その理由は、判定部１２０が、異常を検知した後に判定処理を最初から実行するための準備を行い、異常が検知された後に最初に入力されたデータとの比較に適切な正常モデルの要素を発見できるからである。
【０１１２】
本実施形態の異常シーケンス検知装置は、観測されるデータの順序に規則性が存在する観測情報であれば、どのような観測情報であっても処理できる。本実施形態の異常シーケンス検知装置が異常を検知する場合、システムへの攻撃を起因とするセキュリティインシデントや、監視対象の物理系システムの故障が検出される。また、本実施形態の異常シーケンス検知装置は、統計的外れ値の検出では検知されないような、一見正常なステートデータの挿入や削除等にも対応できる。
【０１１３】
［第２の実施形態］
［構成の説明］
次に、本発明の第２の実施形態を、図面を参照して説明する。図６は、本発明による異常シーケンス検知装置１０２の第２の実施形態の構成例を示すブロック図である。本実施形態の異常シーケンス検知装置１０２は、正常検知装置に相当する。
【０１１４】
本実施形態の異常シーケンス検知装置１０２の構成は、第１の実施形態の異常シーケンス検知装置１０１の構成と同様である。
【０１１５】
第１の実施形態の異常シーケンス検知装置１０１は、判定カウンタの値が正常判定閾値以上であると制御シーケンスを「正常」と判定した。本実施形態の異常シーケンス検知装置１０２は、判定カウンタの値が異常判定閾値以上であると制御シーケンスを「異常」と判定する。
【０１１６】
図６に示すように、本実施形態の判定部１２０には、異常判定閾値が入力される。判定部１２０は、異常判定閾値として指定された数だけ連続して想定されていない順序でステートデータが観測されている制御シーケンスを「異常」と判定する。
【０１１７】
［動作の説明］
以下、図６に示す異常シーケンス検知装置１０２の制御シーケンスが正常であるか異常であるかを判定する動作を、図７を参照して説明する。図７は、第２の実施形態の異常シーケンス検知装置１０２による制御シーケンス判定処理の動作を示すフローチャートである。
【０１１８】
ステップS201〜ステップS202の処理は、図５に示すステップS101〜ステップS102の処理と同様である。
【０１１９】
次いで、判定部１２０は、異常判定閾値T を取得する（ステップS203）。ステップS204〜ステップS206の処理は、図５に示すステップS104〜ステップS106の処理と同様である。
【０１２０】
vk∈P が存在する場合（ステップS206におけるYes ）、判定部１２０は、次に入力されるステートの候補を取得する（ステップS207）。次に入力されるステートの候補の取得方法は、ステップS110の処理における取得方法と同様である。
【０１２１】
次いで、判定部１２０は、判定カウンタ保持部１４０が保持する判定カウンタi を「０」に初期化する（ステップS208）。i=0 と設定することによって、判定部１２０は、判定処理を最初から実行するための準備を行う。
【０１２２】
次いで、出力部１５０は、制御シーケンスが正常であることを示す判定結果を出力する（ステップS209）。判定結果が出力された後、判定部１２０は、次のステートデータを受け付けるか否かを確認する（ステップS214）。
【０１２３】
次のステートデータを受け付ける場合（ステップS214におけるYes ）、判定部１２０は、再度ステップS205の処理を行う。次のステートデータを受け付けない場合（ステップS214におけるNo）、異常シーケンス検知装置１０２は、制御シーケンス判定処理を終了する。
【０１２４】
vk∈P が存在しない場合（ステップS206におけるNo）、判定部１２０は、ステート候補保持部１３０に保持されているP に初期ステート候補としてV を再度設定する（ステップS210）。P=V と設定することによって、判定部１２０は、再度全ての候補から正常なステートデータを検出するための準備を行う。
【０１２５】
次いで、判定部１２０は、判定カウンタ保持部１４０が保持する判定カウンタi に１を加算する（ステップS211）。次いで、判定部１２０は、判定カウンタi が異常判定閾値T 以上であるか否かを確認する（ステップS212）。
【０１２６】
判定カウンタi が異常判定閾値T 未満である場合（ステップS212におけるFalse ）、判定部１２０は、上述したステップS214の処理を行う。
【０１２７】
判定カウンタi が異常判定閾値T 以上である場合（ステップS212におけるTrue）、出力部１５０は、制御シーケンスが異常であることを示す判定結果を出力する（ステップS213）。判定結果が出力された後、判定部１２０は、上述したステップS214の処理を行う。
【０１２８】
ステップS205〜ステップS206の処理で、判定部１２０は、入力されたデータと１つ前に入力されたデータとの組が正常モデルに含まれているか否かを判定している。組が正常モデルに含まれている場合、判定部１２０は、検知対象システムが正常な状態であると判定する。
【０１２９】
上記の制御シーケンス判定処理が実行される際の異常シーケンス検知装置１０２が出力する判定結果の状態遷移の例を図８に示す。図８は、異常シーケンス検知装置１０２が出力する判定結果の状態遷移の例を示す説明図である。
【０１３０】
すなわち、判定カウンタi が異常判定閾値T 以上である場合、出力される判定結果は「異常」を示す。また、「異常」を示す判定結果が出力されている時に異常シーケンス検知装置１０２に想定されているステートデータが入力された場合、出力される判定結果は「正常」を示す。また、「正常」を示す判定結果が出力された後に判定カウンタi が異常判定閾値T に再び到達した場合、出力される判定結果は再度「異常」を示す。
【０１３１】
［効果の説明］
本実施形態の異常シーケンス検知装置１０２は、含まれるステートデータの順序に規則性が存在する制御シーケンスが正常であるか異常であるかを逐次的に判定できる。また、異常シーケンス検知装置１０２は、正常状態を即座に検知できる。その理由は、ステートデータが入力されるごとに、判定部１２０が、１つ前に入力されたステートデータとの関係を正常モデルと照合し、照合された関係が適切であるか否かを判定するためである。
【０１３２】
［第３の実施形態］
［構成の説明］
次に、本発明の第３の実施形態を、図面を参照して説明する。図９は、本発明による異常シーケンス検知装置１０３の第３の実施形態の構成例を示すブロック図である。
【０１３３】
本実施形態の異常シーケンス検知装置１０３は、異常を示す判定結果が出力される時から、正常を示す判定結果が出力される時までに保持された異常なステートデータが含まれる制御シーケンスを抽出する。
【０１３４】
すなわち、異常シーケンス検知装置１０３は、判定カウンタが「０」に初期化される時から判定カウンタが正常判定閾値以上である時までに保持された異常なステートデータが含まれる制御シーケンスを抽出する。
【０１３５】
異常シーケンス検知装置１０３は、抽出された制御シーケンスにおける異常のパターンを判別する。制御シーケンスにおける異常のパターンは、例えば上述した改ざん、挿入、削除、順番入替である。
【０１３６】
図９に示すように、異常シーケンス検知装置１０３は、正常モデル記憶部１１０と、判定部１２０と、ステート候補保持部１３０と、判定履歴保持部１６０と、異常シーケンスパターン判別部１７０と、異常シーケンス判別結果出力部１８０と、判定結果出力部１９０とを備える。
【０１３７】
本実施形態の正常モデル記憶部１１０、判定部１２０、およびステート候補保持部１３０の各構成要素は、第１の実施形態の各構成要素と同様である。また、判定結果出力部１９０が有する機能は、第１の実施形態の出力部１５０が有する機能と同様である。
【０１３８】
判定履歴保持部１６０は、判定されたステートデータの履歴を所定の数だけ保持する機能を有する。また、判定履歴保持部１６０は、第１の実施形態の判定カウンタも保持する。
【０１３９】
異常シーケンスパターン判別部１７０は、異常が含まれる制御シーケンスを抽出して異常パターンを判別する機能を有する。異常シーケンスパターン判別部１７０は、例えばレーベンシュタイン距離（編集距離）を利用して、抽出された制御シーケンスに含まれる異常が順番に関する各異常パターンのいずれに該当するかを判別する。なお、異常シーケンスパターン判別部１７０は、判定部１２０による制御シーケンス判定処理とは独立して異常シーケンスパターン判別処理を行う。
【０１４０】
異常シーケンス判別結果出力部１８０は、異常シーケンスパターン判別部１７０の異常シーケンス判別結果を出力する機能を有する。出力される異常シーケンス判別結果は、判別された異常パターンを示す。
【０１４１】
［動作の説明］
以下、図９に示す異常シーケンス検知装置１０３の動作を図１０〜図１１、図１６を参照して説明する。
【０１４２】
最初に、図９に示す異常シーケンス検知装置１０３の制御シーケンスが正常であるか異常であるかを判定する動作を、図１０を参照して説明する。図１０は、第３の実施形態の異常シーケンス検知装置１０３による制御シーケンス判定処理の動作を示すフローチャートである。
【０１４３】
ステップS301〜ステップS308の処理は、図５に示すステップS101〜ステップS108の処理と同様である。
【０１４４】
次いで、判定部１２０は、判定履歴を取得中であるか否かを確認する（ステップS309）。判定履歴を取得中である場合（ステップS309におけるYes ）、判定部１２０は、判定履歴H にステップS305で取得されたステートデータx とステートデータを追加する（ステップS311）。なお、判定履歴H は、判定履歴保持部１６０に保持されている。
【０１４５】
判定履歴を取得中でない場合（ステップS309におけるNo）、判定部１２０は、判定履歴H の取得を開始する（ステップS310）。具体的には、判定部１２０は、判定履歴H を初期化し、判定部１２０の一時保存領域に保持されている所定の数の判定されたステートデータおよびステートデータx の履歴を判定履歴H に保存する。
【０１４６】
ステップS312〜ステップS315の処理は、図５に示すステップS109〜ステップS112の処理と同様である。
【０１４７】
判定カウンタi が正常判定閾値T 以上である場合（ステップS315におけるTrue）、判定部１２０は、判定履歴を取得中であるか否かを確認する（ステップS316）。判定履歴を取得中である場合（ステップS316におけるYes ）、判定部１２０は、判定履歴H にステップS305で取得されたステートデータx とf(x)==vkとなるvkを追加する。追加した後、判定部１２０は、判定履歴H の取得を終了する（ステップS317）。
【０１４８】
次いで、異常シーケンスパターン判別部１７０は、異常シーケンスパターン判別処理を実行する（ステップS318）。また、判定結果出力部１９０は、制御シーケンスが正常であることを示す判定結果を出力する（ステップS319）。なお、上述したように、ステップS318の処理とステップS319の処理は、並列に実行される。
【０１４９】
判定履歴を取得中でない場合（ステップS316におけるNo）、判定結果出力部１９０は、制御シーケンスが正常であることを示す判定結果を出力する（ステップS319）。判定結果が出力された後、判定部１２０は、ステップS322の処理を行う。ステップS322の処理は、図５に示すステップS114の処理と同様である。
【０１５０】
判定カウンタi が正常判定閾値T 未満である場合（ステップS315におけるFalse ）、判定部１２０は、判定履歴を取得中であるか否かを確認する（ステップS320）。判定履歴を取得中でない場合（ステップS320におけるNo）、判定部１２０は、ステップS322の処理を行う。
【０１５１】
判定履歴を取得中である場合（ステップS320におけるYes ）、判定部１２０は、判定履歴H にステップS305で取得されたステートデータx とf(x)==vkとなるvkを追加する（ステップS321）。追加した後、判定部１２０は、ステップS322の処理を行う。
【０１５２】
次に、図１０に示すステップS318における異常シーケンスパターン判別部１７０の異常シーケンスの異常パターンを判別する動作を、図１１を参照して説明する。図１１は、第３の実施形態の異常シーケンスパターン判別部１７０による異常シーケンスパターン判別処理の動作を示すフローチャートである。
【０１５３】
異常シーケンスを含む判定履歴H の入力を受け付けて、異常シーケンスパターン判別部１７０は、異常シーケンスパターン判別処理の実行を開始する。異常シーケンスパターン判別処理は、制御シーケンス判定処理とは独立に実行される。
【０１５４】
異常シーケンスパターン判別部１７０は、入力された判定履歴H から異常シーケンスと正常シーケンスをそれぞれ抽出する（ステップS401）。抽出される異常シーケンスは、ステートデータの集合である。また、抽出される正常シーケンスは、vkの集合である。
【０１５５】
次いで、異常シーケンスパターン判別部１７０は、抽出された異常シーケンスおよび正常シーケンスを基に、レーベンシュタイン距離（編集距離）の算出処理を実行する（ステップS402）。なお、レーベンシュタイン距離の算出処理は、例えば非特許文献１に記載されている方法で実行される。
【０１５６】
次いで、異常シーケンスパターン判別部１７０は、レーベンシュタイン距離の算出処理の実行時に生成される距離（コスト）配列と操作履歴配列を参照して、レーベンシュタイン距離を導出する。
【０１５７】
次いで、異常シーケンスパターン判別部１７０は、導出されたレーベンシュタイン距離を基に異常パターンを判別する（ステップS403）。異常パターンを判別した後、異常シーケンスパターン判別部１７０は、異常シーケンスパターン判別処理を終了する。
【０１５８】
以下、各異常パターンでの異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の算出例を図１２〜図１５を参照して説明する。図１２は、異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の算出例を示す説明図である。
【０１５９】
図１２は、異常パターンが＜改ざん＞である場合の算出例を示す。異常パターンが＜改ざん＞である場合、図１２に示すような距離配列と操作履歴配列がステップS402の処理で生成される。
【０１６０】
異常シーケンスパターン判別部１７０は、距離配列における列方向の正常なラベル（すなわち、正常モデルの要素）と行方向の異常なラベル（すなわち、異常シーケンスの要素）とを比較した時に、最も編集コストが小さくなる経路を決定する。図１２に示す例では、括弧付の数字が記された矩形で構成される経路が、最も編集コストが小さい経路である。異常シーケンスパターン判別部１７０は、決定された最も編集コストが小さい経路を、操作履歴配列にも当てはめる。
【０１６１】
編集距離は、距離配列における最終地点の値、すなわち（５）が記された矩形内の値である。よって、編集距離は「１」になる。
【０１６２】
また、操作は、操作履歴配列内の最も編集コストが小さい経路に登場した操作である。図１２に示す例であれば、経路内の操作履歴は「Ｍ→Ｓ→Ｍ→Ｍ」である。ただし、Ｍは比較された一文字が一致していることを確認する操作であるため、抽出対象に含まれない。よって、操作は「Ｓ（置換）が１回」になる。
【０１６３】
図１３は、異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。図１３は、異常パターンが＜挿入＞である場合の算出例を示す。異常パターンが＜挿入＞である場合、図１３に示すような距離配列と操作履歴配列がステップS402の処理で生成される。
【０１６４】
編集距離は、距離配列における最終地点の値、すなわち（６）が記された矩形内の値である。よって、編集距離は「２」になる。また、最も編集コストが小さい経路内の操作履歴は「Ｍ→Ｉ→Ｍ→Ｍ→Ｄ」である。よって、操作は「Ｉ（挿入）が途中で１回、Ｄ（削除）が末尾で１回」になる。
【０１６５】
図１４は、異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。図１４は、異常パターンが＜削除＞である場合の算出例を示す。異常パターンが＜削除＞である場合、図１４に示すような距離配列と操作履歴配列がステップS402の処理で生成される。
【０１６６】
編集距離は、距離配列における最終地点の値、すなわち（６）が記された矩形内の値である。よって、編集距離は「２」になる。また、最も編集コストが小さい経路内の操作履歴は「Ｍ→Ｄ→Ｍ→Ｍ→Ｉ」である。よって、操作は「Ｄ（削除）が途中で１回、Ｉ（挿入）が末尾で１回」になる。
【０１６７】
図１５は、異常シーケンスパターン判別部１７０によるレーベンシュタイン距離の他の算出例を示す説明図である。図１５は、異常パターンが＜順番入替＞である場合の算出例を示す。異常パターンが＜順番入替＞である場合、図１５に示すような距離配列と操作履歴配列がステップS402の処理で生成される。
【０１６８】
編集距離は、距離配列における最終地点の値、すなわち（５／６）が記された矩形内の値である。よって、編集距離は「２」になる。また、最も編集コストが小さい経路内の操作履歴は「Ｍ→Ｓ→ＳＩＤ→Ｍ」、「Ｍ→Ｉ→Ｍ→ＳＩＤ→Ｍ」、または「Ｍ→Ｄ→Ｍ→ＳＩＤ→Ｍ」である。
【０１６９】
なお、「ＳＩＤ」が記された矩形では、Ｓ、Ｉ、Ｄのいずれの操作が選択されてもよい。よって、操作は例えば「Ｓ（置換）が２回」、または「Ｉ（挿入）が１回、Ｄ（削除）が１回」になる。
【０１７０】
上記の算出例に基づいた、図１１に示す異常シーケンスパターン判別部１７０による異常シーケンスパターン判別処理の具体例を、図１６を参照して説明する。図１６は、第３の実施形態の異常シーケンスパターン判別部１７０による異常シーケンスパターン判別処理の具体的な動作を示すフローチャートである。
【０１７１】
ステップS411〜ステップS412の処理は、図１１に示すステップS401〜ステップS402の処理と同様である。
【０１７２】
次いで、異常シーケンスパターン判別部１７０は、ステップS412で算出されたレーベンシュタイン距離と操作を確認する（ステップS413）。
【０１７３】
算出されたレーベンシュタイン距離と操作が「距離＝１、置換１回」である場合（ステップS413における［距離＝１，置換１回］）、異常シーケンスパターン判別部１７０は、異常パターンが改ざんであると判別する（ステップS414）。
【０１７４】
算出されたレーベンシュタイン距離と操作が「距離＝２、挿入１回かつ末尾で削除１回」である場合（ステップS413における［距離＝２，挿入１回かつ末尾で削除１回］）、異常シーケンスパターン判別部１７０は、異常パターンが挿入であると判別する（ステップS415）。
【０１７５】
算出されたレーベンシュタイン距離と操作が「距離＝２、削除１回かつ末尾で挿入１回」である場合（ステップS413における［距離＝２，削除１回かつ末尾で挿入１回］）、異常シーケンスパターン判別部１７０は、異常パターンが削除であると判別する（ステップS416）。
【０１７６】
算出されたレーベンシュタイン距離と操作が「距離＝２、置換２回」または「距離＝２、挿入１回と削除１回」である場合（ステップS413における［距離＝２，置換２回または挿入１回と削除１回］）、異常シーケンスパターン判別部１７０は、異常パターンが順番入替であると判別する（ステップS417）。
【０１７７】
異常パターンを判別した後、異常シーケンスパターン判別部１７０は、異常パターンの判別結果を出力する（ステップS418）。出力した後、異常シーケンスパターン判別部１７０は、異常シーケンスパターン判別処理を終了する。出力された異常パターンの判別結果は、異常シーケンス判別結果出力部１８０に入力される。
【０１７８】
［効果の説明］
本実施形態の異常シーケンス検知装置１０３は、制御シーケンスにおける不正のパターンを判別できる。重大なインシデントを引き起こすサイバー攻撃への対策では、攻撃の早期発見が重要である。攻撃を早期に発見するためには、異常のパターンを正しく判別することが求められる。すなわち、本実施形態の異常シーケンス検知装置１０３は、サイバー攻撃への対策で好適に使用される可能性がある。
【０１７９】
なお、上述したように、各実施形態の制御シーケンスを構成するステートデータの種類は、制御コマンド、センサ情報、またはログ情報等である。
【０１８０】
また、ステートデータを構成するデータの種類は、２つのタイムスタンプの差分をとることによって得られた時間データでもよいし、IP(Internet Protocol) アドレスおよびMAC(Media Access Control) アドレスの組でもよい。
【０１８１】
また、ステートデータを構成するデータの種類は、制御コマンドを構成するバイナリおよび制御パラメータの組でもよいし、緯度経度、直交座標、または極座標等の座標系で表される位置および角度の組でもよい。
【０１８２】
また、ステートデータを構成するデータの種類は、温度および湿度の組でもよいし、電圧、電流、電力、および磁場の組でもよいし、波長（周波数）および光量の組でもよい。
【０１８３】
また、ステートデータを構成するデータの種類は、距離、速度、加速度、回転数、および角速度の組でもよいし、圧力、体積、および密度の組でもよい。
【０１８４】
上記の例以外にも、ステートデータを構成するデータの種類には、処理対象の制御システムに応じて様々なデータの種類の組合せが任意に設定される。ステートデータを構成するデータの種類は、予め制御システムのマニュアル、手順書、または仕様書等に記載されてもよい。
【０１８５】
なお、各実施形態の異常シーケンス検知装置１０１〜異常シーケンス検知装置１０３は、例えば、非一時的な記憶媒体に格納されているプログラムに従って処理を実行するCPU(Central Processing Unit)によって実現される。すなわち判定部１２０、ステート候補保持部１３０、判定カウンタ保持部１４０、出力部１５０、判定履歴保持部１６０、異常シーケンスパターン判別部１７０、異常シーケンス判別結果出力部１８０、および判定結果出力部１９０は、例えば、プログラム制御に従って処理を実行するCPU によって実現される。また、異常シーケンス検知装置１０１〜異常シーケンス検知装置１０３は、GPU(Graphics Processing Unit) 等の、CPU 以外のプロセッサによって実現されてもよい。
【０１８６】
また、正常モデル記憶部１１０は、例えばRAM(Random Access Memory) で実現される。
【０１８７】
また、各実施形態の異常シーケンス検知装置１０１〜異常シーケンス検知装置１０３における各部は、ハードウェア回路によって実現されてもよい。一例として、正常モデル記憶部１１０、判定部１２０、ステート候補保持部１３０、判定カウンタ保持部１４０、出力部１５０、判定履歴保持部１６０、異常シーケンスパターン判別部１７０、異常シーケンス判別結果出力部１８０、および判定結果出力部１９０が、それぞれLSI(Large Scale Integration)で実現される。また、それらが１つのLSI で実現されていてもよい。
【０１８８】
次に、本発明の概要を説明する。図１７は、本発明による異常検知装置の概要を示すブロック図である。本発明による異常検知装置１０は、構成するデータの順序に規則性が存在する検知対象データ系列の異常を検知する異常検知装置であって、所定の順列で構成される正常モデルのデータ系列を検知対象システムの正常な状態を表すデータ系列として参照し、データが１つ入力されるごとに入力されたデータとその入力されたデータの１つ前に入力されたデータとの組が示す順列に着目し、その順列が正常モデルに含まれない時に検知対象データ系列が局所的に異常であると判定し、その順列が正常モデルに含まれる時に検知対象データ系列が局所的に正常であると判定する判定部１１（例えば、判定部１２０）と、判定部１１が局所的に正常であると判定した場合に次に判定部１１に入力されることが予測される正常モデル上の少なくとも１つ以上のデータ候補を保持するデータ候補保持部１２（例えば、ステート候補保持部１３０）とを備える。
【０１８９】
そのような構成により、異常検知装置は、制御シーケンスに含まれるステートデータの順列が正常モデルから逸脱しているか否かを即座に検知できる。
【０１９０】
また、異常検知装置１０は、判定部１１が入力されたデータに対して局所的に正常であると連続して判定した回数である正常回数を保持する判定カウンタ保持部（例えば、判定カウンタ保持部１４０）を備え、判定部１１は、判定カウンタ保持部が保持する正常回数が第１所定値以上である場合に検知対象システムが正常な状態であると判定してもよい。
【０１９１】
そのような構成により、異常検知装置は、正常判定閾値以上のステートデータが正常モデルに沿って並べられている制御シーケンスを正常な情報と判定できる。
【０１９２】
また、判定カウンタ保持部は、判定部１１が入力されたデータに対して局所的に異常であると連続して判定した回数である異常回数を保持し、判定部１１は、判定カウンタ保持部が保持する異常回数が第２所定値以上である場合に検知対象システムが異常な状態であると判定してもよい。
【０１９３】
そのような構成により、異常検知装置は、異常判定閾値以上のステートデータが正常モデルに沿って並べられていない制御シーケンスを異常な情報と判定できる。
【０１９４】
また、第１所定値と第２所定値は、異常検知装置１０の動作パラメータであって、さらに異常検知装置１０への入力パラメータでもよい。
【０１９５】
また、異常検知装置１０は、判定部１１が入力されたデータに対して局所的に異常である、または局所的に正常であると判定するために参照した正常モデルのデータと、入力されたデータとを所定の数だけ履歴データとして保持する判定履歴保持部（例えば、判定履歴保持部１６０）と、検知対象システムが異常な状態であると判定された場合、判定部１１が局所的に異常であると判定されたデータを含む検知対象データ系列と、その検知対象データ系列との比較に用いられた正常モデルのデータ系列とを判定履歴保持部から抽出し、その検知対象データ系列の順序に関する異常パターンを判別する異常パターン判別部（例えば、異常シーケンスパターン判別部１７０）とを備えてもよい。
【０１９６】
また、異常パターン判別部は、判定履歴保持部から抽出された局所的に異常であると判定されたデータを含む検知対象データ系列と、その検知対象データ系列との比較に用いられた正常モデルのデータ系列に対してレーベンシュタイン距離の算出処理を実行し、生成されたコスト配列と操作履歴配列に応じて検知対象データ系列の順序に関する異常パターンを判別してもよい。
【０１９７】
そのような構成により、異常検知装置は、制御シーケンスにおけるステートデータが正常モデルに沿って並べられていない部分の順列の種類を判別できる。
【０１９８】
また、正常モデルのデータ系列を構成する個々のデータには、正常モデルにおいて出現する順番を識別するラベルまたは番号がそれぞれ付与され、個々のデータは、複数の実数値または離散値で表されるデータ項目を含む多次元ベクトルとして構成されてもよい。
【０１９９】
また、データ項目には、正常モデルにおいて出現する順番を決めるためのタイムスタンプ、または２つのタイムスタンプの差分に相当する時刻データが含まれてもよい。
【０２００】
そのような構成により、異常検知装置は、様々な検知データに対応するステートデータを含む制御シーケンスを処理できる。
【０２０１】
また、所定の順列は、円順列でもよい。
【０２０２】
そのような構成により、異常検知装置は、所定の規則に従って繰り返し発生したステートデータを含む制御シーケンスを処理できる。
【産業上の利用の可能性】
【０２０３】
本発明は、IoT システムや通信ネットワークセキュリティの技術領域に好適に適用される。また、本発明は、産業制御システムへのサイバー攻撃を監視する用途に好適に適用される。
【符号の説明】
【０２０４】
１０  異常検知装置
１１  判定部
１２  データ候補保持部
１０１〜１０３  異常シーケンス検知装置
１１０  正常モデル記憶部
１２０  判定部
１３０  ステート候補保持部
１４０  判定カウンタ保持部
１５０  出力部
１６０  判定履歴保持部
１７０  異常シーケンスパターン判別部
１８０  異常シーケンス判別結果出力部
１９０  判定結果出力部
【図１】
0006746085.tif 000002
【図２】
0006746085.tif 000003
【図３】
0006746085.tif 000004
【図４】
0006746085.tif 000005
【図５】
0006746085.tif 000006
【図６】
0006746085.tif 000007
【図７】
0006746085.tif 000008
【図８】
0006746085.tif 000009
【図９】
0006746085.tif 000010
【図１０】
0006746085.tif 000011
【図１１】
0006746085.tif 000012
【図１２】
0006746085.tif 000013
【図１３】
0006746085.tif 000014
【図１４】
0006746085.tif 000015
【図１５】
0006746085.tif 000016
【図１６】
0006746085.tif 000017
【図１７】
0006746085.tif 000018
【図１８】
0006746085.tif 000019
【図１９】
0006746085.tif 000020
【図２０】
0006746085.tif 000021
【図２１】
0006746085.tif 000022