(57)【要約】  異常検知方法は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、複数の検知対象パケット間の複数の距離を算出し、算出した複数の距離を用いて、検知対象パケット列の特徴量を抽出し、抽出した特徴量を用いて、検知対象パケット列の異常の度合いに係る情報を算出する。
2020105234.tif 000002
【特許請求の範囲】
【請求項１】
連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、
算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、
抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
異常検知方法。
【請求項２】
前記複数の距離を算出する際に、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離を利用して前記複数の距離を算出する
請求項１に記載の異常検知方法。
【請求項３】
前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、前記検知対象パケット列におけるＮ（Ｎは１以上の整数）個離れた検知対象パケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、
前記複数の距離を算出する際に、前記検知対象パケット列におけるＮ個離れた検知対象パケット間のそれぞれに対して距離を算出することで、前記複数の距離を算出する
請求項２に記載の異常検知方法。
【請求項４】
前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、さらに、前記検知対象パケット列におけるＬ（ＬはＮ以外の１以上の整数）個離れた検知対象パケット間のそれぞれに対しても算出され、
前記複数の距離を算出する際に、前記検知対象パケット列におけるＬ個離れた検知対象パケット間のそれぞれに対しても距離を算出することで、前記複数の距離を算出する
請求項３に記載の異常検知方法。
【請求項５】
前記特徴量を抽出する際に、前記検知対象パケット列において連続するＷ（Ｗは２以上の整数）個の検知対象パケットからなる１以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離の出現分布を算出し、算出した前記出現分布のそれぞれを、前記特徴量として抽出する
請求項３又は４に記載の異常検知方法。
【請求項６】
前記異常の度合いに係る情報を算出する際に、算出した前記出現分布のそれぞれと、予め記憶する複数のリファレンス出現分布のそれぞれとの間のアースムーバーズ距離のそれぞれを算出し、算出した前記アースムーバーズ距離のそれぞれを利用するＫ近傍法を利用して、前記異常の度合いに係る情報を算出する
請求項５に記載の異常検知方法。
【請求項７】
前記特徴量を抽出する際に、前記検知対象パケット列において連続するＷ（Ｗは１以上の整数）個の検知対象パケットからなる１以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離からなる距離列を算出し、算出した前記距離列のそれぞれを前記特徴量として抽出する
請求項３又は４に記載の異常検知方法。
【請求項８】
前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれと、予め記憶する複数のリファレンス距離列のそれぞれとの間の、ワーピング法により定められる距離のそれぞれを算出し、算出した前記ワーピング法により定められる距離のそれぞれを利用して、前記異常の度合いに係る情報を算出する
請求項７に記載の異常検知方法。
【請求項９】
前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれに対して予め記憶するグローバルアラインメントカーネルを適用することで、前記異常の度合いに係る情報を算出する
請求項７に記載の異常検知方法。
【請求項１０】
前記複数の距離を算出する際に、前記複数の検知対象パケットのうち、同一のコマンド種別の検知対象パケット間に限定して、前記複数の距離を算出する
請求項１〜９のいずれか１項に記載の異常検知方法。
【請求項１１】
連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記検知対象パケット列の異常の度合いに係る情報を算出する際に、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
請求項１〜１０のいずれか１項に記載の異常検知方法。
【請求項１２】
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出する
請求項１１に記載の異常検知方法。
【請求項１３】
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、
前記複数のリファレンス距離をそれぞれ算出する際に、前記１以上のリファレンスパケット列のそれぞれにおけるＮ個離れたリファレンスパケット間のそれぞれに対してリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出する
請求項１２に記載の異常検知方法。
【請求項１４】
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、さらに、前記１以上のリファレンスパケット列のそれぞれにおけるＬ（ＬはＮ以外の１以上の整数）個離れた検知対象パケット間のそれぞれに対しても算出され、
前記複数のリファレンス距離のそれぞれを算出する際に、さらに、前記１以上のリファレンスパケット列のそれぞれにおけるＬ個離れたリファレンスパケット間のそれぞれに対してもリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出する
請求項１３に記載の異常検知方法。
【請求項１５】
連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、
前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記複数のリファレンス距離の出現分布を算出し、算出した前記リファレンス距離の出現分布のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス出現分布のそれぞれとして記憶する
請求項６に記載の異常検知方法。
【請求項１６】
連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、
前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、
抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス距離列のそれぞれとして記憶する
請求項８に記載の異常検知方法。
【請求項１７】
連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、
前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、
抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを用いて、グローバルアラインメントカーネルを算出し、算出した前記グローバルアラインメントカーネルを、前記予め記憶するグローバルアラインメントカーネルとして記憶する
請求項９に記載の異常検知方法。
【請求項１８】
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのうち、同一のコマンド種別のリファレンスパケット間に限定して、前記リファレンス距離のそれぞれを算出する
請求項１１〜１７のいずれか１項に記載の異常検知方法。
【請求項１９】
連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、
算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、
抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える
異常検知装置。
【請求項２０】
連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出するリファレンスパケットデータ間距離算出部と、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出するリファレンス特徴量抽出部と、を備え、
前記情報算出部は、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
請求項１９に記載の異常検知装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット列の異常を検知する異常検知方法、及び異常検知装置に関する。
【背景技術】
【０００２】
従来、ネットワークシステム等で利用されるデータを対象として行う情報処理技術が知られている（例えば、非特許文献１、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ye, N. (2000, June). A markov chain model of temporal behavior for anomaly detection. In Proceedings of the 2000 IEEE Systems, Man, and Cybernetics Information Assurance and Security Workshop (Vol. 166, p. 169). West Point, NY.
【非特許文献２】Otey, M. E., Ghoting, A., & Parthasarathy, S. (2006). Fast distributed outlier detection in mixed-attribute data sets. Data mining and knowledge discovery, 12(2-3), 203-228
【非特許文献３】Cuturi, M., Vert, J. P., Birkenes, O., & Matsui, T. (2007, April). A kernel for time series based on global alignments. In Acoustics, Speech and Signal Processing, 2007. ICASSP 2007. IEEE International Conference on (Vol. 2, pp. II-413). IEEE.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ネットワークシステム等で利用されるパケット列の異常を検知することが望まれる。【０００５】
そこで、本発明は、パケット列の異常を検知する異常検知方法、及び異常検知装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示の一態様に係る異常検知方法は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する。【０００７】
また、本開示の一態様に係る異常検知装置は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える。
【発明の効果】
【０００８】
本開示の一態様に係る異常検知方法、及び異常検知装置によると、パケット列の異常を検知することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１に係る異常検知装置の構成を示すブロック図である。
【図２】図２は、プロファイル情報の一例を示す模式図である。
【図３】図３は、Ｍｏｄｂｕｓ／ＴＣＰプロトコルのパケットのデータ構造を示す模式図である。
【図４】図４は、ＢＡＣｎｅｔ／ＩＰプロトコルのパケットのデータ構造を示す模式図である。
【図５】図５は、リファレンスパケットデータ列の一例を示す模式図である。
【図６】図６は、実施の形態１に係るリファレンスパケットデータ間距離算出部がパケットデータを１バイトずつ切り出す様子の一例を示す模式図である。
【図７】図７は、実施の形態１に係るリファレンスパケットデータ間距離算出部が２つの文字列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【図８】図８は、実施の形態１に係るリファレンスパケットデータ間距離算出部が２つのバイト列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【図９】図９は、実施の形態１に係るリファレンスパケットデータ間距離算出部がリファレンス距離を算出する様子の一例を示す模式図である。
【図１０】図１０は、実施の形態１に係るリファレンス特徴量抽出部がリファレンス特徴量を抽出する様子の一例を示す模式図である。
【図１１】図１１は、実施の形態１に係る検知対象パケットデータ間距離算出部が距離を算出する様子の一例を示す模式図である。
【図１２】図１２は、実施の形態１に係る特徴量抽出部が検知対象パケットデータ列から、特徴量を抽出する様子の一例を示す模式図である。
【図１３】図１３は、実施の形態１に係る情報算出部がアースムーバーズ距離を算出する様子の一例を示す模式図である。
【図１４】図１４は、実施の形態１に係る情報算出部が検知対象パケット列の異常度を算出する様子の一例を示す模式図である。
【図１５】図１５は、第１リファレンス特徴量抽出処理のフローチャートである。
【図１６】図１６は、第１異常検知処理のフローチャートである。
【図１７】図１７は、実施の形態２に係る異常検知装置の構成を示すブロック図である。
【図１８】図１８は、実施の形態２に係る情報算出部がダイナミックタイムワーピング距離を算出する様子の一例を示す模式図である。
【図１９】図１９は、第２リファレンス特徴量抽出処理のフローチャートである。
【図２０】図２０は、第２異常検知処理のフローチャートである。
【図２１】図２１は、実施の形態３に係る異常検知装置の構成を示すブロック図である。
【図２２】図２２は、第３リファレンス特徴量抽出処理のフローチャートである。
【図２３】図２３は、第３異常検知処理のフローチャートである。
【発明を実施するための形態】
【００１０】
（本発明の一態様を得るに至った経緯）
従来、ＩＣＳ（Industrial Control System）におけるサイバー攻撃の事例が増加傾向にある。ＩＣＳでは、機器を制御する正常なフォーマットのコマンド列が深刻な攻撃となり得るため、悪意のある攻撃者によって生成された異常なパケット列であっても、パケット単体で見ると、正常なものとほとんど区別できない。
【００１１】
従来、パケット列の異常を検知する方法として、ルールベース方式とアノマリ方式とが知られている。しかしながら、ルールベース方式には、ルールで記載されていないパケット列の異常を検知することが困難であるという問題があり、アノマリ方式には、極端なデータ量やパケット数の増加や、極端なバイト列の乱れがなければ、パケット列の異常を検知することが困難であるという問題がある。
【００１２】
そこで、発明者は、これら問題を解決すべく、鋭意検討、実験を重ねた。そして、発明者は、機器を制御するコマンドを含む正常なパケット列が、一定のコンテクストを有していることに着目し、一定のコンテクストから逸脱するパケット列を、異常なパケット列として検知できることを見出した。その結果、発明者は、下記異常検知方法、及び異常検知装置に想到した。
【００１３】
本開示の一態様に係る異常検知方法は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する。
【００１４】
上記異常検知方法によると、検知対象パケット列のコンテクストの特徴を特徴量として抽出することができる。そして、抽出した特徴量を用いて、検知対象パケット列の異常に係る情報を算出することができる。このように、上記異常検知方法によると、パケット列の異常を検知することができる。
【００１５】
また、前記複数の距離を算出する際に、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離を利用して前記複数の距離を算出するとしてもよい。
【００１６】
また、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、前記検知対象パケット列におけるＮ（Ｎは１以上の整数）個離れた検知対象パケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、前記複数の距離を算出する際に、前記検知対象パケット列におけるＮ個離れた検知対象パケット間のそれぞれに対して距離を算出することで、前記複数の距離を算出するとしてもよい。
【００１７】
また、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、さらに、前記検知対象パケット列におけるＬ（ＬはＮ以外の１以上の整数）個離れた検知対象パケット間のそれぞれに対しても算出され、前記複数の距離を算出する際に、前記検知対象パケット列におけるＬ個離れた検知対象パケット間のそれぞれに対しても距離を算出することで、前記複数の距離を算出するとしてもよい。
【００１８】
また、前記特徴量を抽出する際に、前記検知対象パケット列において連続するＷ（Ｗは２以上の整数）個の検知対象パケットからなる１以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離の出現分布を算出し、算出した前記出現分布のそれぞれを、前記特徴量として抽出するとしてもよい。
【００１９】
また、前記異常の度合いに係る情報を算出する際に、算出した前記出現分布のそれぞれと、予め記憶する複数のリファレンス出現分布のそれぞれとの間のアースムーバーズ距離のそれぞれを算出し、算出した前記アースムーバーズ距離のそれぞれを利用するＫ近傍法を利用して、前記異常の度合いに係る情報を算出するとしてもよい。
【００２０】
また、前記特徴量を抽出する際に、前記検知対象パケット列において連続するＷ（Ｗは１以上の整数）個の検知対象パケットからなる１以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離からなる距離列を算出し、算出した前記距離列のそれぞれを前記特徴量として抽出するとしてもよい。
【００２１】
また、前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれと、予め記憶する複数のリファレンス距離列のそれぞれとの間の、ワーピング法により定められる距離のそれぞれを算出し、算出した前記ワーピング法により定められる距離のそれぞれを利用して、前記異常の度合いに係る情報を算出するとしてもよい。
【００２２】
また、前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれに対して予め記憶するグローバルアラインメントカーネルを適用することで、前記異常の度合いに係る情報を算出するとしてもよい。
【００２３】
また、前記複数の距離を算出する際に、前記複数の検知対象パケットのうち、同一のコマンド種別の検知対象パケット間に限定して、前記複数の距離を算出するとしてもよい。
【００２４】
また、連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記検知対象パケット列の異常の度合いに係る情報を算出する際に、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出するとしてもよい。
【００２５】
また、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【００２６】
また、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、前記複数のリファレンス距離をそれぞれ算出する際に、前記１以上のリファレンスパケット列のそれぞれにおけるＮ個離れたリファレンスパケット間のそれぞれに対してリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【００２７】
また、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、さらに、前記１以上のリファレンスパケット列のそれぞれにおけるＬ（ＬはＮ以外の１以上の整数）個離れた検知対象パケット間のそれぞれに対しても算出され、前記複数のリファレンス距離のそれぞれを算出する際に、さらに、前記１以上のリファレンスパケット列のそれぞれにおけるＬ個離れたリファレンスパケット間のそれぞれに対してもリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【００２８】
また、連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記複数のリファレンス距離の出現分布を算出し、算出した前記リファレンス距離の出現分布のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス出現分布のそれぞれとして記憶するとしてもよい。
【００２９】
また、連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス距離列のそれぞれとして記憶するとしてもよい。
【００３０】
また、連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記１以上のリファレンスパケット列のそれぞれにおけるＮ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、Ｍ（Ｍは、１以上１６以下の整数）ビットを単位として算出され、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記１以上のリファレンスパケット列のそれぞれにおいて連続するＷ（Ｗは２以上の整数）個のリファレンスパケットからなる１以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記１以上のリファレンスパケット列のリファレンス特徴量のそれぞれを用いて、グローバルアラインメントカーネルを算出し、算出した前記グローバルアラインメントカーネルを、前記予め記憶するグローバルアラインメントカーネルとして記憶するとしてもよい。
【００３１】
また、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのうち、同一のコマンド種別のリファレンスパケット間に限定して、前記リファレンス距離のそれぞれを算出するとしてもよい。
【００３２】
本開示の一態様に係る異常検知装置は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える。
【００３３】
上記異常検知装置によると、検知対象パケット列のコンテクストの特徴を特徴量として抽出することができる。そして、抽出した特徴量を用いて、検知対象パケット列の異常に係る情報を算出することができる。このように、上記異常検知装置によると、パケット列の異常を検知することができる。
【００３４】
また、連続する複数のリファレンスパケットからなる１以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出するリファレンスパケットデータ間距離算出部と、算出した前記複数のリファレンス距離のそれぞれを用いて、前記１以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出するリファレンス特徴量抽出部と、を備え、前記情報算出部は、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出するとしてもよい。
【００３５】
以下、本開示の一態様に係る異常検知方法、及び異常検知装置の具体例について、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、形状、構成要素、構成要素の配置及び接続形態、並びに、ステップ（工程）及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【００３６】
（実施の形態１）
以下、実施の形態１に係る異常検知装置について説明する。この異常検知装置は、検知対象パケット列の異常を検知する。
【００３７】
［１−１．構成］
図１は、実施の形態１に係る異常検知装置１の構成を示すブロック図である。
【００３８】
図１に示されるように、異常検知装置１は、第１プロファイル決定部１１と、第１抽出部１２と、リファレンスパケットデータ列群記憶部１３と、リファレンスパケットデータ間距離算出部１４と、リファレンス特徴量抽出部１５と、リファレンス特徴量記憶部１６と、第２プロファイル決定部２１と、第２抽出部２２と、検知対象パケットデータ列記憶部２３と、検知対象パケットデータ間距離算出部２４と、特徴量抽出部２５と、特徴量記憶部２６と、情報算出部２７と、判定部２８とを含んで構成される。
【００３９】
異常検知装置１は、例えば、メモリと、メモリに記憶されたプログラムを実行するプロセッサとを含むコンピュータ装置によって実現される。この場合、異常検知装置１によって実現される各種機能は、異常検知装置１を構成するメモリに記憶されたプログラムを、異常検知装置１を構成するプロセッサが実行することにより実現される。
【００４０】
第１プロファイル決定部１１は、正常なパケット列からなるパケット列群、すなわち、異常なパケット列を含まないパケット列群であるリファレンスパケット列群１０を取得する。そして、取得したリファレンスパケット列群１０を構成する各リファレンスパケット列に含まれる各パケットに対して、その属性情報（送信元ＩＰ、宛先ＩＰ、送信元ポート、宛先ポート、プロトコル等。それらの組み合わせも含む。）に基づいて、該当するプロファイルを決定する。第１プロファイル決定部１１は、例えば、プロファイル情報を記憶し、記憶するプロファイル情報に基づいて該当するプロファイルを決定するとしてもよい。
【００４１】
図２は、第１プロファイル決定部１１が記憶するプロファイル情報の一例を示す模式図である。
【００４２】
第１プロファイル決定部１１は、例えば、図２に示されるプロファイル情報を記憶し、各パケットに対して、対象コマンドが一致する行のプロファイルＩＤで識別されるプロファイルを決定する。
【００４３】
図３は、Ｍｏｄｂｕｓ／ＴＣＰプロトコルのパケットのデータ構造を示す模式図である。
【００４４】
第１プロファイル決定部１１は、例えば、パケットがＭｏｄｂｕｓ／ＴＣＰプロトコルである場合には、図３に示されるＤａｔａフィールドに格納されるビット列が、対象コマンドに対応するビット列と一致するパケットを、対象コマンドが一致するパケットであると判定する。
【００４５】
図４は、ＢＡＣｎｅｔ／ＩＰプロトコルのパケットのデータ構造を示す模式図である。
【００４６】
第１プロファイル決定部１１は、例えば、パケットがＢＡＣｎｅｔ／ＩＰプロトコルである場合には、図４に示されるＡＰＤＵ  Ｔｙｐｅフィールドに格納されるビット列、及びＳｅｒｖｉｃｅ  Ｃｈｏｉｃｅフィールドに格納されるビット列が、対象コマンドに対応するビット列と一致するパケットを、対象コマンドが一致するパケットであると判定する。
【００４７】
第１プロファイル決定部１１は、例えば、プロファイルの決定対象とするパケットが、記憶するプロファイル情報に該当しない場合には、Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ機能を備えるアプリケーションを実行することで、そのパケットのプロトコルを特定し、特定したプロトコルに基づいて、そのパケットに対してプロファイルを決定するとしてもよい。
【００４８】
再び、図１に戻って、異常検知装置１の説明を続ける。
【００４９】
第１抽出部１２は、第１プロファイル決定部１１によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。
【００５０】
第１抽出部１２は、例えば、抽出対象とするパケットが、Ｍｏｄｂｕｓ／ＴＣＰプロトコルである場合には、図３に示されるＴＣＰ  Ｐａｙｌｏａｄフィールドに格納されるビット列をパケットデータとして抽出する。
【００５１】
第１抽出部１２は、例えば、抽出対象とするパケットが、ＢＡＣｎｅｔ／ＩＰプロトコルである場合には、図４に示されるＵＤＰ  Ｐａｙｌｏａｄに格納されるビット列をパケットデータとして抽出する。
【００５２】
第１抽出部１２は、各パケットからパケットデータを抽出すると、第１プロファイル決定部１１により取得されたリファレンスパケット列毎に、同一プロファイルのパケットデータからなるリファレンスパケットデータ列を出力する。
【００５３】
図５は、第１抽出部１２により出力されるリファレンスパケットデータ列の一例を示す模式図である。
【００５４】
第１抽出部１２は、例えば、図５に示される、「ＩＤ＝１で識別される機器の電源をオンする」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝２で識別される機器の電源をオンする」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝３で識別される機器の電源をオンする」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝４で識別される機器の電源をオンする」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝１で識別される機器の温度設定を２７．０℃に変更する」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝１で識別される機器の風量設定を強に変更する」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝２で識別される機器の温度設定を２７．０℃に変更する」旨のｗｒｉｔｅコマンドに対応するパケットデータと、「ＩＤ＝２で識別される機器の風量設定を強に変更する」旨のｗｒｉｔｅコマンドに対応するパケットデータとが順に並んで構成されるリファレンスパケットデータ列を出力する。
【００５５】
再び、図１に戻って、異常検知装置１の説明を続ける。
【００５６】
リファレンスパケットデータ列群記憶部１３は、第１抽出部１２から出力された１以上のリファレンスパケットデータ列からなるリファレンスパケットデータ列群を記憶する。
【００５７】
リファレンスパケットデータ間距離算出部１４は、リファレンスパケットデータ列群記憶部１３に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を算出する。
【００５８】
リファレンスパケットデータ間距離算出部１４は、パケットデータを、１バイトずつ切り出したバイト列として取り扱い、リファレンスパケットデータ間のリファレンス距離の算出を、リファレンスパケットデータ間におけるバイト列の距離を算出することで行う。
【００５９】
図６は、リファレンスパケットデータ間距離算出部１４が、パケットデータを１バイトずつ切り出す様子の一例を示す模式図である。
【００６０】
なお、ここでは、リファレンスパケットデータ間距離算出部１４は、パケットデータを、１バイトずつ切り出すとして説明するが、切り出す単位としては、必ずしも１バイトの例に限定される必要はない。切り出す単位は、例えば、１ビット以上１６ビット以下の任意の長さのビット列であってもよいし、他の任意の長さのビット列であってもよい。また、リファレンスパケットデータ間距離算出部１４は、パケットデータを、連続したビット単位で切り出す例に限定される必要はない。例えば、リファレンスパケットデータ間距離算出部１４は、ｘビット切り出してｙビットスキップしてという処理を繰り返すことでビット列を切り出すとしてもよい。
【００６１】
再び図１に戻って、異常検知装置１の説明を続ける。
【００６２】
リファレンスパケットデータ間距離算出部１４は、パケットデータ間のレーベンシュタイン距離を利用してリファレンス距離を算出する。
【００６３】
レーベンシュタイン距離は、２つの文字列又はバイト列間に定めることができる距離である。レーベンシュタイン距離は、１文字又は１バイトの挿入、削除、置換によって、一方の文字列又はバイト列を他方の文字列又はバイト列に変形するのに必要な最小回数として定義される。
【００６４】
図７は、リファレンスパケットデータ間距離算出部１４が、２つの文字列間（ここでは、一例として、“ELEPHANT”と“RELEVANT”との文字列間）のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【００６５】
図７に示されるように、“ELEPHANT”を“RELEVANT”に変形するのに必要な、挿入、削除、置換の最小回数は３である。このため、リファレンスパケットデータ間距離算出部１４は、“ELEPHANT”と“RELEVANT”とのレーベンシュタイン距離を「３」と算出する。
【００６６】
図８は、リファレンスパケットデータ間距離算出部１４が、２つのバイト列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【００６７】
図８に示されるように、一方のバイト列を他方のバイト列に変形するのに必要な、挿入、削除、置換の最小回数は３である。このため、リファレンスパケットデータ間距離算出部１４は、図８に図示されるバイト列間のレーベンシュタイン距離を「３」と算出する。
【００６８】
リファレンスパケットデータ間距離算出部１４は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、Ｎ（Ｎは１以上の整数）個離れたリファレンスパケット間のそれぞれに対して算出する。
【００６９】
図９は、Ｎが１である場合において、リファレンスパケットデータ間距離算出部１４が、リファレンスパケットデータ列から複数のリファレンス距離を算出する様子の一例を示す模式図である。ここでは、Ｎは１であるとして説明するが、必ずしもＮが１である場合に限定されない。
【００７０】
図９に示されるように、リファレンスパケットデータ間距離算出部１４は、対象とするリファレンスパケットデータ列が８個の連続するリファレンスパケットデータにより構成される場合には、対象とするリファレンスパケットデータ列から、１離れたリファレンスパケットデータ間、すなわち、互いに隣接するリファレンスパケットデータ列間の７個のリファレンス距離を算出する。
【００７１】
なお、リファレンスパケットデータ間距離算出部１４は、パケットデータ間のレーベンシュタイン距離として、パケットデータを構成するビット列の少なくとも一部を対象としてレーベンシュタイン距離を算出すればよく、必ずしも、パケットデータを構成するビット列の全てを対象とする場合に限定されない。
【００７２】
再び図１に戻って、異常検知装置１の説明を続ける。
【００７３】
リファレンス特徴量抽出部１５は、リファレンスパケットデータ列群記憶部１３に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ間距離算出部１４により算出された複数のリファレンス距離のそれぞれを用いて、リファレンス特徴量をそれぞれ抽出する。より具体的には、リファレンス特徴量抽出部１５は、リファレンスパケットデータ列群記憶部１３に記憶されるリファレンスパケットデータ列のそれぞれに対して、連続するＷ（Ｗは２以上の整数）個のリファレンスパケットデータからなる１以上のウインドウ毎に、そのウインドウに属するリファレンスパケットデータについて算出された複数のリファレンス距離の出現分布を算出し、算出したリファレンス距離の出現分布のそれぞれを、リファレンス特徴量のそれぞれとして抽出する。
【００７４】
図１０は、リファレンス特徴量抽出部１５が、１のリファレンスパケットデータ列から、リファレンス特徴量を抽出する様子の一例を示す模式図である。図１０は、Ｗが４であり、リファレンスパケットデータ間距離算出部１４が、１のリファレンスパケットデータ列に対して、図９に示される複数のリファレンス距離を算出した場合の模式図となっている。
【００７５】
図１０に示されるように、第１のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「１」、「３」、「２」、「２」である。このため、リファレンス特徴量抽出部１５は、第１のウインドウにおける、複数のリファレンス距離の出現分布を、「１」の出現率が「０．２５」、「２」の出現率が「０．５」、「３」の出現率が「０．２５」、「４」の出現率が「０」となる出現分布Ａ（図１０中の「Ａ」参照）として算出する。また、第２のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「３」、「２」、「２」、「４」である。このため、リファレンス特徴量抽出部１５は、第２のウインドウにおける、複数のリファレンス距離の出現分布を、「１」の出現率が「０」、「２」の出現率が「０．５」、「３」の出現率が「０．２５」、「４」の出現率が「０．２５」となる出現分布Ｂ（図１０中の「Ｂ」参照）として算出する。また、第３のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「２」、「２」、「４」、「３」である。このため、リファレンス特徴量抽出部１５は、第３のウインドウにおける、複数のリファレンス距離の出現分布を、「１」の出現率が「０」、「２」の出現率が「０．２５」、「３」の出現率が「０．５」、「４」の出現率が「０．２５」となる出現分布Ｃ（図１０中の「Ｃ」参照）として算出する。また、第４のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「２」、「４」、「３」、「１」である。このため、リファレンス特徴量抽出部１５は、第４のウインドウにおける、複数のリファレンス距離の出現分布を、「１」の出現率が「０．２５」、「２」の出現率が「０」、「３」の出現率が「０．５」、「４」の出現率が「０．２５」となる出現分布Ｄ（図１０中の「Ｄ」参照）として算出する。そして、リファレンス特徴量抽出部１５は、算出した出現分布Ａと出現分布Ｂと出現分布Ｃと出現分布Ｄとを、リファレンス特徴量として抽出する。
【００７６】
再び図１に戻って、異常検知装置１の説明を続ける。
【００７７】
リファレンス特徴量記憶部１６は、リファレンス特徴量抽出部１５によって抽出されたリファレンス特徴量を記憶する。
【００７８】
第２プロファイル決定部２１は、異常の検知対象となる検知対象パケット列２０を取得する。そして、取得した検知対象パケット列２０に含まれる各パケットに対して、その属性情報（送信元ＩＰ、宛先ＩＰ、送信元ポート、宛先ポート、プロトコル等。それらの組み合わせも含む。）に基づいて、該当するプロファイルを決定する。第２プロファイル決定部２１は、第１プロファイル決定部１１が行うプロファイルの決定と同様のアルゴリズムでプロファイルの決定を行う。
【００７９】
第２抽出部２２は、第２プロファイル決定部２１によりプロファイルを決定された複数のパケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。第２抽出部２２は、第１抽出部１２が行うパケットデータの抽出と同様のアルゴリズムでパケットデータの抽出を行う。
【００８０】
第２抽出部２２は、パケットデータを抽出すると、同一プロファイルのパケットデータからなる検知対象パケットデータ列を出力する。
【００８１】
検知対象パケットデータ列記憶部２３は、第２抽出部２２から出力された検知対象パケットデータ列を記憶する。
【００８２】
検知対象パケットデータ間距離算出部２４は、検知対象パケットデータ列記憶部２３に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を算出する。
【００８３】
検知対象パケットデータ間距離算出部２４は、リファレンスパケットデータ間距離算出部１４が行うリファレンス距離の算出に対して、リファレンスパケットを検知対象パケットに読み替え、リファレンスパケットデータを検知対象パケットデータに読み替え、リファレンスパケットデータ列を検知対象パケットデータ列に読み替え、リファレンス距離を距離に読み替えたアルゴリズムと同様のアルゴリズムで、距離の算出を行う。
【００８４】
図１１は、Ｎが１である場合において、検知対象パケットデータ間距離算出部２４が、検知対象パケットデータ列から複数の距離を算出する様子の一例を示す模式図である。ここでは、Ｎは１であるとして説明するが、必ずしもＮが１である場合に限定されない。
【００８５】
図１１に示されるように、検知対象パケットデータ間距離算出部２４は、対象とする検知対象パケットデータ列が６個の連続する検知対象パケットデータにより構成される場合には、対象とする検知対象パケットデータ列から、１離れた検知対象パケットデータ間、すなわち、互いに隣接する検知対象パケットデータ列間の５個の距離を算出する。
【００８６】
なお、検知対象パケットデータ間距離算出部２４は、パケットデータ間のレーベンシュタイン距離として、パケットデータを構成するビット列の少なくとも一部を対象としてレーベンシュタイン距離を算出すればよく、必ずしも、パケットデータを構成するビット列の全てを対象とする場合に限定されない。
【００８７】
再び図１に戻って、異常検知装置１の説明を続ける。
【００８８】
特徴量抽出部２５は、検知対象パケットデータ列記憶部２３に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ間距離算出部２４により算出された複数の距離を用いて、特徴量を抽出する。より具体的には、特徴量抽出部２５は、検知対象パケットデータ列記憶部２３に記憶される検知対象パケットデータ列に対して、連続するＷ（Ｗは２以上の整数）個の検知対象パケットデータからなる１以上のウインドウ毎に、そのウインドウに属する検知対象パケットについて算出された複数の距離の出現分布を算出し、算出した距離の出現分布を、特徴量として抽出する。
【００８９】
図１２は、特徴量抽出部２５が、検知対象パケットデータ列から、特徴量を抽出する様子の一例を示す模式図である。図１２は、Ｗが４であり、検知対象パケットデータ間距離算出部２４が、検知対象パケットデータ列に対して、図１１に示される複数の距離を算出した場合の模式図となっている。
【００９０】
図１２に示されるように、第１のウインドウに属する検知対象パケットデータについて算出された距離は、「４」、「２」、「３」、「１」である。このため、特徴量抽出部２５は、第１のウインドウにおける、複数の距離の出現分布を、「１」の出現率が「０．２５」、「２」の出現率が「０．２５」、「３」の出現率が「０．２５」、「４」の出現率が「０．２５」となる出現分布Ｘ（図１２中の「Ｘ」参照）として算出する。また、第２のウインドウに属する検知対象パケットデータについて算出された距離は、「２」、「３」、「１」、「２」である。このため、特徴量抽出部２５は、第２のウインドウにおける、複数の距離の出現分布を、「１」の出現率が「０」、「２」の出現率が「０．５」、「３」の出現率が「０．２５」、「４」の出現率が「０」となる出現分布Ｙ（図１２中の「Ｙ」参照）として算出する。そして、特徴量抽出部２５は、算出した出現分布Ｘと出現分布Ｙとを、特徴量として抽出する。
【００９１】
再び図１に戻って、異常検知装置１の説明を続ける。
【００９２】
特徴量記憶部２６は、特徴量抽出部２５によって抽出された特徴量を記憶する。
【００９３】
情報算出部２７は、リファレンス特徴量記憶部１６にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれと、特徴量記憶部２６に特徴量として記憶される距離の出現分布のそれぞれとの間のアースムーバーズ距離（Earth Mover’s Distance：以下、アースムーバーズ距離のことを、ＥＭＤとも表記する。）を算出し、算出したアースムーバーズ距離のそれぞれを利用するＫ近傍法を利用して、検知対象パケット列２０の異常の度合い示す異常度を算出する。
【００９４】
アースムーバーズ距離は、２つの確率分布間（ここでは、リファレンス距離の出現分布と、距離の出現分布との間）に定めることができる距離である。アースムーバーズ距離は、一方の確率分布（ここでは出現分布）を、確率成分（ここでは出現率成分）の移動によって他方の確率分布（ここでは出現分布）に変形するのに必要な最小コストとして定義される。
【００９５】
図１３は、情報算出部２７が、４つの出現分布（出現分布Ｋ、出現分布Ｌ、出現分布Ｍ、出現分布Ｎ）間のアースムーバーズ距離を算出する様子の一例を示す模式図である。
【００９６】
図１３に示されるように、「０」の出現率が「０」、「１」の出現率が「０．５」、「２」の出現率が「０．２５」、「３」の出現率が「０．２５」となる出現分布Ｋ（図１３中の「Ｋ」参照）を、「０」の出現率が「０」、「１」の出現率が「０．２５」、「２」の出現率が「０．２５」、「３」の出現率が「０．５」となる出現分布Ｌ（図１３中の「Ｌ」参照）に変換するのに必要な最小コストは、出現分布Ｋにおける「１」の出現率「０．５」のうちの出現率成分「０．２５」を、出現分布Ｌのおける「３」の出現率へ移動させるコストとなる。このため、情報算出部２７は、出現分布Ｋと出現分布Ｌとの間のアースムーバーズ距離を、０．２５×｜１−３｜＝０．５と算出する。同様にして、情報算出部２７は、４つの出現分布間のアースムーバーズ距離のそれぞれを、図１３中の表で示される値のそれぞれと算出する。
【００９７】
図１４は、情報算出部２７が、リファレンス特徴量記憶部１６にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれと、特徴量記憶部２６に特徴量として記憶される距離の出現分布のそれぞれとから、検知対象パケット列２０の異常度を算出する様子の一例を示す模式図である。図１４は、リファレンス特徴量記憶部１６に記憶されるリファレンス距離の出現分布が、図１０に示される出現分布Ａ、出現分布Ｂ、出現分布Ｃ、出現分布Ｄであり、特徴量記憶部２６に記憶される距離の出現分布が、図１２に示される出現分布Ｘ、出現分布Ｙである場合の模式図となっている。
【００９８】
図１４に示されるように、情報算出部２７は、出現分布Ｘと出現分布Ａとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＸＡ」とも称する。）を「０．５」と算出し、出現分布Ｘと出現分布Ｂとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＸＢ」とも称する。）を「０．２５」と算出し、出現分布Ｘと出現分布Ｃとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＸＣ」とも称する。）を「０．５」と算出し、出現分布Ｘと出現分布Ｄとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＸＤ」とも称する。）を「０．２５」と算出する。そして、情報算出部２７は、ＥＭＤ＿ＸＡ、ＥＭＤ＿ＸＢ、ＥＭＤ＿ＸＣ、ＥＭＤ＿ＸＤに対してＫ＝１となるＫ近傍法を適用して、出現分布Ｘの異常度を、「０．２５」と算出する。同様に、情報算出部２７は、出現分布Ｙと出現分布Ａとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＹＡ」とも称する。）を０と算出し、出現分布Ｙと出現分布Ｂとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＹＢ」とも称する。）を「０．７５」と算出し、出現分布Ｙと出現分布Ｃとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＹＣ」とも称する。）を「１．０」と算出し、出現分布Ｙと出現分布Ｄとの間のアースムーバーズ距離（以下、「ＥＭＤ＿ＹＤ」とも称する。）を「０．７５」と算出する。そして、情報算出部２７は、ＥＭＤ＿ＹＡ、ＥＭＤ＿ＹＢ、ＥＭＤ＿ＹＣ、ＥＭＤ＿ＹＤに対してＫ＝１となるＫ近傍法を適用して、出現分布Ｙの異常度を、「０」と算出する。そして、情報算出部２７は、出現分布Ｘの異常度「０．２５」と、出現分布Ｙの異常度「０」とのうちの最も大きい値「０．２５」を、検知対象パケット列２０の異常度として算出する。
【００９９】
再び図１に戻って、異常検知装置１の説明を続ける。
【０１００】
判定部２８は、情報算出部２７により算出された、検知対象パケット列２０の異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。そして、判定部２８は、判定結果を外部に出力する。判定部２８は、例えば、閾値を記憶し、検知対象パケット列２０の異常度が閾値以上である場合に、検知対象パケット列２０が異常であると判定し、検知対象パケット列２０の異常度が閾値未満である場合に、検知対象パケット列２０が異常でないと判定してもよい。また、判定部２８は、第１プロファイル決定部１１及び第２プロファイル決定部２１の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列２０から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【０１０１】
［１−２．動作］
上記構成の異常検知装置１は、第１リファレンス特徴量抽出処理と、第１異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【０１０２】
まず、第１リファレンス特徴量抽出処理について説明する。
【０１０３】
第１リファレンス特徴量抽出処理は、リファレンスパケット列群１０から、リファレンス特徴量を抽出する処理である。第１リファレンス特徴量抽出処理は、例えば、異常検知装置１を利用するユーザが、異常検知装置１に対して、第１リファレンス特徴量抽出処理を開始させる旨の操作を行うことで開始される。
【０１０４】
図１５は、第１リファレンス特徴量抽出処理のフローチャートである。
【０１０５】
第１リファレンス特徴量抽出処理が開始されると、第１プロファイル決定部１１は、リファレンスパケット列群１０を取得する（ステップＳ５）。
【０１０６】
第１プロファイル決定部１１は、リファレンスパケット列群１０を取得すると、リファレンスパケット列群１０に含まれるリファレンスパケット列の中から、未選択のリファレンスパケット列を１つ選択する（ステップＳ１０）。ここで、未選択のリファレンスパケット列とは、ステップＳ１０の処理〜ステップＳ５５：Ｙｅｓの処理（後述）で形成されるループ処理において、過去のステップＳ１０の処理で選択されたことのないリファレンスパケット列のことをいう。
【０１０７】
第１プロファイル決定部１１は、未選択のリファレンスパケット列を１つ選択すると、選択したリファレンスパケット列に含まれるパケットの中から、未選択のパケットを１つ選択する（ステップＳ１５）。ここで、未選択のパケットを選択するとは、ステップＳ１５の処理〜ステップＳ３５：Ｙｅｓの処理（後述）で形成されるループ処理において、過去のステップＳ１５の処理で選択されたことのないパケットのことをいう。
【０１０８】
第１プロファイル決定部１１は、１のパケットを選択すると、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができるか否かを調べる（ステップＳ２０）。
【０１０９】
ステップＳ２０の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができる場合に（ステップＳ２０：Ｙｅｓ）、第１プロファイル決定部１１は、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定する（ステップＳ３０）。
【０１１０】
ステップＳ２０の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができない場合に（ステップＳ２０：Ｎｏ）、第１プロファイル決定部１１は、Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ機能を備えるアプリケーションを実行することで、選択したパケットのプロトコルを特定する（ステップＳ２５）。そして、第１プロファイル決定部１１は、特定したプロトコルに基づいて、選択したパケットのプロファイルを決定する（ステップＳ３０）。
【０１１１】
第１プロファイル決定部１１は、選択したパケットのプロファイルを決定すると、選択したリファレンスパケット列に含まれるパケットの中に、未選択のパケットがあるか否かを調べる（ステップＳ３５）。
【０１１２】
ステップＳ３５の処理において、未選択のパケットがある場合に（ステップＳ３５：Ｙｅｓ）、第１リファレンス特徴量抽出処理は、再びステップＳ１５の処理に進む。
【０１１３】
ステップＳ３５の処理において、未選択のパケットがない場合に（ステップＳ３５：Ｎｏ）、第１抽出部１２は、第１プロファイル決定部１１によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。そして第１抽出部１２は、同一プロファイルのパケットデータからなるリファレンスパケットデータ列を抽出する（ステップＳ４０）。そして、リファレンスパケットデータ列群記憶部１３は、第１抽出部１２によって抽出されたリファレンスパケットデータ列を記憶する。
【０１１４】
リファレンスパケットデータ列が抽出されると、リファレンスパケットデータ間距離算出部１４は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を算出する（ステップＳ４５）。
【０１１５】
複数のリファレンス距離が算出されると、リファレンス特徴量抽出部１５は、算出された複数のリファレンス距離から、ウインドウ毎に、リファレンス距離の出現分布をリファレンス特徴量として抽出する（ステップＳ５０）。そして、リファレンス特徴量記憶部１６は、リファレンス特徴量抽出部１５によってリファレンス特徴量として抽出されたリファレンス距離の出現分布を記憶する。
【０１１６】
リファレンス距離の出現分布が抽出されると、第１プロファイル決定部１１は、取得したリファレンスパケット列群１０の中に、未選択のリファレンスパケット列があるか否かを調べる（ステップＳ５５）。
【０１１７】
ステップＳ５５の処理において、未選択のリファレンスパケット列がある場合に（ステップＳ５５：Ｙｅｓ）、第１リファレンス特徴量抽出処理は、再びステップＳ１０の処理に進む。
【０１１８】
ステップＳ５５の処理において、未選択のリファレンスパケット列がない場合に（ステップＳ５５：Ｎｏ）、第１リファレンス特徴量抽出処理は、その処理を終了する。
【０１１９】
次に、第１異常検知処理について説明する。
【０１２０】
第１異常検知処理は、検知対象パケット列２０の異常を検知する処理である。第１異常検知処理は、例えば、異常検知装置１を利用するユーザが、異常検知装置１に対して、第１異常検知処理を開始する旨の操作を行うことで開始される。
【０１２１】
図１６は、第１異常検知処理のフローチャートである。
【０１２２】
第１異常検知処理が開始されると、第２プロファイル決定部２１は、検知対象パケット列２０を取得する（ステップＳ１０５）。
【０１２３】
第２プロファイル決定部２１は、検知対象パケット列２０を取得すると、取得した検知対象パケット列２０に含まれるパケットの中から、未選択のパケットを１つ選択する（ステップＳ１１５）。ここで、未選択のパケットを選択するとは、ステップＳ１１５の処理〜ステップＳ１３５：Ｙｅｓの処理（後述）で形成されるループ処理において、過去のステップＳ１１５の処理で選択されたことのないパケットのことをいう。
【０１２４】
第２プロファイル決定部２１は、１のパケットを選択すると、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができるか否かを調べる（ステップＳ１２０）。
【０１２５】
ステップＳ１２０の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができる場合に（ステップＳ１２０：Ｙｅｓ）、第２プロファイル決定部２１は、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定する（ステップＳ１３０）。
【０１２６】
ステップＳ１２０の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができない場合に（ステップＳ１２０：Ｎｏ）、第２プロファイル決定部２１は、Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ機能を備えるアプリケーションを実行することで、選択したパケットのプロトコルを特定する（ステップＳ１２５）。そして、第２プロファイル決定部２１は、特定したプロトコルに基づいて、選択したパケットのプロファイルを決定する（ステップＳ１３０）。
【０１２７】
第２プロファイル決定部２１は、選択したパケットのプロファイルを決定すると、取得した検知対象パケット列２０に含まれるパケットの中に、未選択のパケットがあるか否かを調べる（ステップＳ１３５）。
【０１２８】
ステップＳ３５の処理において、未選択のパケットがある場合に（ステップＳ１３５：Ｙｅｓ）、第１異常検知処理は、再びステップＳ１１５の処理に進む。
【０１２９】
ステップＳ１３５の処理において、未選択のパケットがない場合に（ステップＳ１３５：Ｎｏ）、第２抽出部２２は、第２プロファイル決定部２１によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。そして第２抽出部２２は、同一プロファイルのパケットデータからなる検知対象パケットデータ列を抽出する（ステップＳ１４０）。そして、検知対象パケットデータ列記憶部２３は、第２抽出部２２によって抽出された検知対象パケットデータ列を記憶する。
【０１３０】
検知対象パケットデータ列が抽出されると、検知対象パケットデータ間距離算出部２４は、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を算出する（ステップＳ１４５）。
【０１３１】
複数の距離が算出されると、特徴量抽出部２５は、算出された複数の距離から、ウインドウ毎に、距離の出現分布を特徴量として抽出する（ステップＳ１５０）。そして、特徴量記憶部２６は、特徴量抽出部２５によって特徴量として抽出された距離の出現分布を記憶する。
【０１３２】
距離の出現分布が抽出されると、情報算出部２７は、抽出された距離の出現分布のそれぞれと、リファレンス特徴量記憶部１６にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれとの間のアースムーバーズ距離を算出し（ステップＳ１５５）、算出したアースムーバーズ距離のそれぞれを利用するＫ近傍法を利用して、検知対象パケット列２０の異常の度合い示す異常度を算出する（ステップＳ１６０）。
【０１３３】
異常度が算出されると、判定部２８は、算出された異常度が、記憶する閾値以上であるか否かを調べる（ステップＳ１６５）。
【０１３４】
ステップＳ１６５の処理において、算出された異常度が、記憶する閾値以上である場合に（ステップＳ１６５：Ｙｅｓ）、判定部２８は、検知対象パケット列２０が異常であると判定し（ステップＳ１７０）、検知対象パケット列２０が異常である旨の信号を外部に出力する。
【０１３５】
ステップＳ１６５の処理において、算出された異常度が、記憶する閾値以上でない場合に（ステップＳ１６５：Ｎｏ）、判定部２８は、検知対象パケット列２０が異常でないと判定し（ステップＳ１７５）、検知対象パケット列２０が異常でない旨の信号を外部に出力する。
【０１３６】
ステップＳ１７０の処理が終了した場合、及びステップＳ１７５の処理が終了した場合に第１異常検知処理は、その処理を終了する。
【０１３７】
［１−３．考察］
上記構成の異常検知装置１は、第１リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群１０から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置１は、第１異常検知処理を実行することで、検知対象パケット列２０から、検知対象パケット列２０のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。このように、異常検知装置１によると、検知対象パケット列２０の異常を検知することができる。
【０１３８】
（実施の形態２）
以下、実施の形態１に係る異常検知装置１から、その構成の一部が変更された実施の形態２に係る異常検知装置について説明する。
【０１３９】
［２−１．構成］
図１７は、実施の形態２に係る異常検知装置１Ａの構成を示すブロック図である。以下では、異常検知装置１Ａについて、実施の形態１に係る異常検知装置１と同様の構成要素については、既に説明済みであるとして同じ符号を振ってその詳細な説明を省略し、異常検知装置１との相違点を中心に説明する。
【０１４０】
図１７に示されるように、異常検知装置１Ａは、異常検知装置１から、リファレンス特徴量抽出部１５がリファレンス特徴量抽出部１５Ａに変更され、リファレンス特徴量記憶部１６がリファレンス特徴量記憶部１６Ａに変更され、特徴量抽出部２５が特徴量抽出部２５Ａに変更され、特徴量記憶部２６が特徴量記憶部２６Ａに変更され、情報算出部２７が情報算出部２７Ａに変更され、判定部２８が判定部２８Ａに変更されて構成される。
【０１４１】
リファレンス特徴量抽出部１５Ａは、リファレンスパケットデータ列群記憶部１３に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ間距離算出部１４により算出された複数のリファレンス距離のそれぞれを用いて、リファレンス特徴量をそれぞれ抽出する。より具体的には、リファレンス特徴量抽出部１５Ａは、リファレンスパケットデータ列群記憶部１３に記憶されるリファレンスパケットデータ列のそれぞれに対して、連続するＷ（Ｗは２以上の整数）個のリファレンスパケットデータからなる１以上のウインドウ毎に、そのウインドウに属するリファレンスパケットデータについて算出された複数のリファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、リファレンス特徴量のそれぞれとして抽出する。
【０１４２】
リファレンス特徴量記憶部１６Ａは、リファレンス特徴量抽出部１５Ａによって抽出されたリファレンス特徴量を記憶する。
【０１４３】
特徴量抽出部２５Ａは、検知対象パケットデータ列記憶部２３に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ間距離算出部２４により算出された複数の距離を用いて、特徴量を抽出する。より具体的には、特徴量抽出部２５Ａは、検知対象パケットデータ列記憶部２３に記憶される検知対象パケットデータ列に対して、連続するＷ（Ｗは２以上の整数）個の検知対象パケットデータからなる１以上のウインドウ毎に、そのウインドウに属する検知対象パケットについて算出された複数の距離からなる距離列を算出し、算出した距離列を、特徴量として抽出する。
【０１４４】
特徴量記憶部２６Ａは、特徴量抽出部２５Ａによって抽出された特徴量を記憶する。
【０１４５】
情報算出部２７Ａは、リファレンス特徴量記憶部１６Ａにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれと、特徴量記憶部２６Ａに特徴量として記憶される距離列のそれぞれとの間の、ワーピング（Dynamic Time Warping）法により定められる距離（以下、「ダイナミックタイムワーピング（Dynamic Time Warping）距離」、又は「ＤＴＷ距離」とも称する。）のそれぞれを算出し、算出したダイナミックタイムワーピング距離のそれぞれを利用して、検知対象パケット列２０の異常の度合い示す異常度を算出する。
【０１４６】
ダイナミックタイムワーピング距離は、２つの時系列データ間（ここでは、リファレンス距離列と、距離列との間）に定めることができる距離である。ダイナミックタイムワーピング距離は、２つの時系列データｘ（ｘの要素数はｎ：ｎは２以上の整数）、ｙ（ｙの要素数はｍ：ｍは２以上の整数）があるとき、（ｉ、ｊ）要素がｘｉとｙｊ間の距離となる行列において、行要素がｎ以下、列要素がｍ以下となる制約を満たすように、（ｉ、ｊ）要素から、（ｉ＋１、ｊ）、（ｉ、ｊ＋１）又は（ｉ＋１、ｊ＋１）のいずれかの要素への移動を（ｎ、ｍ）要素に到達するまで繰り返す経路のうち、経路上の要素の和が最小となる経路における距離の和として定義される。
【０１４７】
図１８は、情報算出部２７Ａが、「２」、「５」、「４」、「２」の時系列データからなるリファレンス距離列と、「２」、「２」、「５」、「１」の時系列データからなる距離列との間のダイナミックタイムワーピング距離を算出する様子の一例を示す模式図である。
【０１４８】
情報算出部２７Ａは、図１８に示される、リファレンス距離列と距離列との各時点の値の距離（差分）からなる距離行列を算出する。そして、情報算出部２７Ａは、算出した距離行列において、左上端の距離の位置から、順に、「下１マス」、「下１マス」、「右下１マス」、「右１マス」、「右下１マス」移動する経路上の各距離「０」、「０」、「０」、「１」、「１」の和である「２」が、全ての移動経路上の各距離の和のうちで最小になることを算出する。そして、情報算出部２７Ａは、「２」、「５」、「４」、「２」の時系列データからなるリファレンス距離列と、「２」、「２」、「５」、「１」の時系列データからなる距離列との間のダイナミックタイムワーピング距離を「２」と算出する。
【０１４９】
情報算出部２７Ａは、上記ダイナミックタイムワーピング距離の算出方法を用いて、リファレンス特徴量記憶部１６Ａに記憶されるリファレンス距離列のそれぞれと、特徴量記憶部２６Ａに記憶される距離列のそれぞれとの間のダイナミックタイムワーピング距離をそれぞれ算出し、算出したダイナミックタイムワーピング距離のうちの最も大きい値を、検知対象パケット列２０の異常度として算出する。
【０１５０】
判定部２８Ａは、情報算出部２７Ａにより算出された、検知対象パケット列２０の異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。そして、判定部２８Ａは、判定結果を外部に出力する。判定部２８Ａは、例えば、閾値を記憶し、検知対象パケット列２０の異常度が閾値以上である場合に、検知対象パケット列２０が異常であると判定し、検知対象パケット列２０の異常度が閾値未満である場合に、検知対象パケット列２０が異常でないと判定してもよい。また、判定部２８Ａは、第１プロファイル決定部１１及び第２プロファイル決定部２１の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列２０から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【０１５１】
［２−２．動作］
上記構成の異常検知装置１Ａは、実施の形態１に係る第１リファレンス特徴量抽出処理からその処理の一部が変更された第２リファレンス特徴量抽出処理と、実施の形態１に係る第１異常検知処理からその処理の一部が変更された第２異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【０１５２】
まず、第２リファレンス特徴量抽出処理について説明する。
【０１５３】
図１９は、第２リファレンス特徴量抽出処理のフローチャートである。
【０１５４】
図１９に示される各処理のうち、ステップＳ２０５の処理〜ステップＳ２４５の処理、及びステップＳ２５５の処理は、それぞれ、実施の形態１に係る第１リファレンス特徴量抽出処理における、ステップＳ５の処理〜ステップＳ４５の処理、及びステップＳ５５の処理（図１５等参照）と同様の処理である。このため、ステップＳ２０５の処理〜ステップＳ２４５の処理、及びステップＳ２５５の処理は既に説明であるとしてその詳細な説明を省略し、ステップＳ２５０の処理を中心に説明する。
【０１５５】
ステップＳ２４５の処理において、複数のリファレンス距離が算出されると、リファレンス特徴量抽出部１５Ａは、ウインドウ毎に、算出された複数のリファレンス距離からなるリファレンス距離列をリファレンス特徴量として抽出する（ステップＳ２５０）。そして、リファレンス特徴量記憶部１６Ａは、リファレンス特徴量抽出部１５Ａによってリファレンス特徴量として抽出されたリファレンス距離列を記憶する。
【０１５６】
ステップＳ２５０の処理が終了すると、第２リファレンス特徴量抽出処理は、ステップＳ２５５の処理に進む。
【０１５７】
次に、第２異常検知処理について説明する。
【０１５８】
図２０は、第２異常検知処理のフローチャートである。
【０１５９】
図２０に示される各処理のうち、ステップＳ３０５の処理〜ステップＳ３４５の処理は、それぞれ、実施の形態１に係る第１異常検知処理における、ステップＳ１０５の処理〜ステップＳ１４５の処理と同様の処理である。また、ステップＳ３６５の処理〜ステップＳ３７５の処理は、それぞれ、実施の形態１に係る第１異常検知処理における、ステップＳ１６５の処理〜ステップＳ１７５の処理に対して、判定部２８を判定部２８Ａに読み替えた処理と同様の処理である。このため、ステップＳ３０５の処理〜ステップＳ３４５の処理、及び、ステップＳ３６５の処理〜ステップＳ３７５の処理は既に説明であるとしてその詳細な説明を省略し、ステップＳ３５０の処理〜ステップＳ３５５の処理を中心に説明する。
【０１６０】
ステップＳ３４５の処理において、複数の距離が算出されると、特徴量抽出部２５Ａは、ウインドウ毎に、算出された複数の距離からなる距離列を特徴量として抽出する（ステップＳ３５０）。そして、特徴量記憶部２６Ａは、特徴量抽出部２５Ａによって特徴量として抽出された距離列を記憶する。
【０１６１】
距離列が抽出されると、情報算出部２７は、抽出された距離列のそれぞれと、リファレンス特徴量記憶部１６Ａにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれとの間の、ダイナミックタイムワーピング距離のそれぞれを算出し、算出したダイナミックワーピング距離のそれぞれを利用して、検知対象パケット列２０の異常の度合い示す異常度を算出する（ステップＳ３５５）。
【０１６２】
ステップＳ３５５の処理が終了すると、第２異常検知処理は、ステップＳ３６５の処理に進む。
【０１６３】
［２−３．考察］
上記構成の異常検知装置１Ａは、第２リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群１０から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置１Ａは、第２異常検知処理を実行することで、検知対象パケット列２０から、検知対象パケット列２０のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。このように、異常検知装置１Ａによると、実施の形態１に係る異常検知装置１と同様に、検知対象パケット列２０の異常を検知することができる。
【０１６４】
（実施の形態３）
以下、実施の形態２に係る異常検知装置１Ａから、その構成の一部が変更された実施の形態３に係る異常検知装置について説明する。
【０１６５】
［３−１．構成］
図２１は、実施の形態３に係る異常検知装置１Ｂの構成を示すブロック図である。以下では、異常検知装置１Ｂについて、実施の形態２に係る異常検知装置１Ａと同様の構成要素については、既に説明済みであるとして同じ符号を振ってその詳細な説明を省略し、異常検知装置１Ａとの相違点を中心に説明する。
【０１６６】
図２０に示されるように、異常検知装置１Ｂは、異常検知装置１Ａから、情報算出部２７Ａが情報算出部２７Ｂに変更され、判定部２８Ａが判定部２８Ｂに変更され、カーネル算出部３１と、カーネル記憶部３２とが追加されて構成される。
【０１６７】
カーネル算出部３１は、リファレンス特徴量記憶部１６Ａにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれを用いて、グローバルアラインメントカーネル（Global Alignment Kernel：非特許文献３参照）を算出する。カーネル算出部３１は、例えば、リファレンス特徴量記憶部１６Ａに記憶されるリファレンス距離列のそれぞれを用いて、機械学習モデルであるｏｎｅ−ｃｌａｓｓ  ＳＶＭ（Support Vector Machine）に教師なし学習をさせて、グローバルアラインメントカーネルを算出するとしてもよい。
【０１６８】
カーネル記憶部３２は、カーネル算出部３１によって算出されたグローバルアラインメントカーネルを記憶する。
【０１６９】
情報算出部２７Ｂは、特徴量記憶部２６Ａに、特徴量として記憶される距離列のそれぞれに対して、カーネル記憶部３２に記憶されるグローバルアラインメントカーネルを適用することで、距離列のそれぞれに対して外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列２０の異常度として算出する。
【０１７０】
判定部２８Ｂは、情報算出部２７Ｂにより算出された、検知対象パケット列２０の異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。そして、判定部２８Ａは、判定結果を外部に出力する。判定部２８Ｂは、例えば、閾値を記憶し、検知対象パケット列２０の異常度が閾値以上である場合に、検知対象パケット列２０が異常であると判定し、検知対象パケット列２０の異常度が閾値未満である場合に、検知対象パケット列２０が異常でないと判定してもよい。また、判定部２８Ｂは、第１プロファイル決定部１１及び第２プロファイル決定部２１の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列２０から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【０１７１】
［３−２．動作］
上記構成の異常検知装置１Ｂは、実施の形態２に係る第２リファレンス特徴量抽出処理からその処理の一部が変更された第３リファレンス特徴量抽出処理と、実施の形態２に係る第２異常検知処理からその処理の一部が変更された第３異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【０１７２】
まず、第３リファレンス特徴量抽出処理について説明する。
【０１７３】
図２２は、第３リファレンス特徴量抽出処理のフローチャートである。
【０１７４】
図２２に示される各処理のうち、ステップＳ４０５の処理〜ステップＳ４５５の処理は、それぞれ、実施の形態２に係る第２リファレンス特徴量抽出処理における、ステップＳ２０５の処理〜ステップＳ２５５の処理（図１９等参照）と同様の処理である。このため、これらの処理は既に説明であるとしてその詳細な説明を省略し、ステップＳ４６０の処理を中心に説明する。
【０１７５】
ステップＳ４５５の処理において、未選択のリファレンスパケット列がない場合に（ステップＳ４５５：Ｎｏ）、カーネル算出部３１は、リファレンス特徴量記憶部１６Ａにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれを用いて、グローバルアラインメントカーネルを算出する（ステップＳ４６０）。そして、カーネル記憶部３２は、カーネル算出部３１によって算出されたグローバルアラインメントカーネルを記憶する。
【０１７６】
ステップＳ４６０の処理が終了すると、第３リファレンス特徴量抽出処理は、その処理を終了する。
【０１７７】
次に、第３異常検知処理について説明する。
【０１７８】
図２３は、第３異常検知処理のフローチャートである。
【０１７９】
図２３に示される各処理のうち、ステップＳ５０５の処理〜ステップＳ５５０の処理は、それぞれ、実施の形態２係る第２異常検知処理における、ステップＳ３０５の処理〜ステップＳ３５０の処理と同様の処理である。また、ステップＳ５６５の処理〜ステップＳ５７５の処理は、それぞれ、実施の形態２係る第２異常検知処理における、ステップＳ３６５の処理〜ステップＳ３７５の処理に対して、判定部２８Ａを判定部２８Ｂに読み替えた処理と同様の処理である。このため、ステップＳ５０５の処理〜ステップＳ５５０の処理、及び、ステップＳ５６５の処理〜ステップ５３７５の処理は既に説明であるとしてその詳細な説明を省略し、ステップＳ５５５の処理を中心に説明する。
【０１８０】
ステップＳ５５０の処理において、距離列が特徴量として抽出されると、情報算出部２７Ｂは、抽出された距離列のそれぞれに対して、カーネル記憶部３２に記憶されるグローバルアラインメントカーネルを適用することで外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列２０の異常度として算出する。
【０１８１】
ステップＳ５５５の処理が終了すると、第３異常検知処理は、ステップＳ５６５の処理に進む。
【０１８２】
［３−３．考察］
上記構成の異常検知装置１Ｂは、第３リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群１０から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置１Ｂは、第３異常検知処理を実行することで、検知対象パケット列２０から、検知対象パケット列２０のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列２０が異常であるか否かを判定する。このように、異常検知装置１Ｂによると、実施の形態１に係る異常検知装置１、及び、実施の形態２に係る異常検知装置１Ａと同様に、検知対象パケット列２０の異常を検知することができる。
【０１８３】
（補足）
以上のように、本出願において開示する技術の例示として、実施の形態１〜実施の形態３について説明した。しかしながら本開示による技術は、これらに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。
【０１８４】
以下に、本開示における変形例の一例について列記する。
【０１８５】
（１）実施の形態１において、リファレンスパケットデータ間距離算出部１４は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、Ｎ個離れたリファレンスパケット間のそれぞれに対して算出する構成の例であるとして説明した。これに対して、他の構成の例として、リファレンスパケットデータ間距離算出部１４は、さらに、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、Ｌ（ＬはＮ以外の１以上の整数）個離れたリファレンスパケット間のそれぞれに対しても算出する構成の例も考えらえる。この場合、検知対象パケットデータ間距離算出部２４は、上記他の構成の例のリファレンスパケットデータ間距離算出部１４と同様のアルゴリズムで距離を算出する構成、すなわち、さらに、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を、Ｌ個離れたリファレンスパケット間のそれぞれに対しても算出する構成となる。
【０１８６】
（２）実施の形態１において、異常検知装置１は、判定部２９が、検知対象パケット列２０が異常であるか否かを判定し、その判定結果を外部に出力する構成の例であった。これに対して、他の構成の例として、異常検知装置１は、情報算出部２７が、検知対象パケット列２０の異常の度合いを示す異常度を算出し、算出した異常度を外部に出力する構成の例も考えられる。この場合、異常検知装置１は、判定部２９を含まない構成であっても構わない。
【０１８７】
（３）実施の形態１において、異常検知装置１は、第１リファレンス特徴量抽出処理を実行することで、リファレンス特徴量を抽出し、抽出したリファレンス特徴量を、リファレンス特徴量抽出部１５で記憶する構成の例であった。これに対して、他の構成の例として、異常検知装置１は、外部装置等で抽出されたリファレンス特徴量を外部から取得し、取得したリファレンス特徴量を、予めリファレンス特徴量記憶部１６で記憶しておく構成の例も考えられる。この場合、異常検知装置１は、第１リファレンス特徴量抽出処理を行う必要はなく、第１プロファイル決定部１１と、第１抽出部１２と、リファレンスパケットデータ列群記憶部１３と、リファレンスパケットデータ間距離算出部１４と、リファレンス特徴量抽出部１５とを含まない構成であっても構わない。また、他の構成の例として、異常検知装置１は、リファレンス特徴量記憶部１６が予めリファレンス特徴量を記憶している状態で製造される構成の例も考えられる。この場合も、異常検知装置１は、第１リファレンス特徴量抽出処理を行う必要はなく、第１プロファイル決定部１１と、第１抽出部１２と、リファレンスパケットデータ列群記憶部１３と、リファレンスパケットデータ間距離算出部１４と、リファレンス特徴量抽出部１５とを含まない構成であっても構わない。
【０１８８】
（４）実施の形態３において、異常検知装置１Ｂは、第３リファレンス特徴量抽出処理を実行することで、グローバルアラインメントカーネルを算出し、算出したグローバルアラインメントカーネルを、カーネル記憶部３２で記憶する構成の例であった。これに対して、他の構成の例として、異常検知装置１Ｂは、外部装置等で抽出されたグローバルアラインメントカーネルを外部から取得し、取得したグローバルアラインメントカーネルを、予めカーネル記憶部３２で記憶しておく構成の例も考えられる。この場合、異常検知装置１Ｂは、第３リファレンス特徴量抽出処理を行う必要はなく、第１プロファイル決定部１１と、第１抽出部１２と、リファレンスパケットデータ列群記憶部１３と、リファレンスパケットデータ間距離算出部１４と、リファレンス特徴量抽出部１５Ａと、リファレンス特徴量記憶部１６Ａと、カーネル算出部３１とを含まない構成であっても構わない。また、他の構成の例として、異常検知装置１Ｂは、カーネル記憶部３２が予めグローバルアラインメントカーネルを記憶している状態で製造される構成の例も考えられる。この場合も、異常検知装置１Ｂは、第３リファレンス特徴量抽出処理を行う必要はなく、第１プロファイル決定部１１と、第１抽出部１２と、リファレンスパケットデータ列群記憶部１３と、リファレンスパケットデータ間距離算出部１４と、リファレンス特徴量抽出部１５Ａと、リファレンス特徴量記憶部１６Ａと、カーネル算出部３１とを含まない構成であっても構わない。
【０１８９】
（５）実施の形態３において、異常検知装置１Ｂは、情報算出部２７Ｂが、特徴量として記憶される距離列のそれぞれに対して、カーネル記憶部３２に記憶されるグローバルアラインメントカーネルを適用することで、距離列のそれぞれに対して外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列２０の異常度として算出する構成の例であった。これに対して、他の構成の例として、異常検知装置１Ｂは、情報算出部２７Ｂが、距離列のそれぞれに対して、異常であるか否かの２値を示す外れ値を算出し、算出した外れ値の中に１つでも異常である旨の値を示す外れ値が存在する場合に、外部に、検知対象パケット列２０が異常である旨の信号を出力する構成の例も考えられる。この場合、異常検知装置１Ｂは、判定部２８Ｂを含まない構成であっても構わない。
【０１９０】
（６）実施の形態１において、異常検知装置１における各構成要素は、ＩＣ（Integrated Circuit）、ＬＳＩ（Large Scale Integration）等の半導体装置により個別に１チップ化されてもよいし、一部又は全部を含むように１チップ化されてもよい。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。更には、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
【産業上の利用可能性】
【０１９１】
本開示は、パケットを利用するシステムに広く利用可能である。
【符号の説明】
【０１９２】
１、１Ａ、１Ｂ  異常検知装置
１０  リファレンスパケットデータ列群
１１  第１プロファイル決定部
１２  第１抽出部
１３  リファレンスパケットデータ列群記憶部
１４  リファレンスパケットデータ間距離算出部
１５、１５Ａ  リファレンス特徴量抽出部
１６、１６Ａ  リファレンス特徴量記憶部
２０  検知対象パケット列
２１  第２プロファイル決定部
２２  第２抽出部
２３  検知対象パケットデータ列記憶部
２４  検知対象パケットデータ間距離算出部
２５、２５Ａ  特徴量抽出部
２６、２６Ａ  特徴量記憶部
２７、２７Ａ、２７Ｂ  情報算出部
２８、２８Ａ、２８Ｂ  判定部
【図１】
2020105234.tif 000003
【図２】
2020105234.tif 000004
【図３】
2020105234.tif 000005
【図４】
2020105234.tif 000006
【図５】
2020105234.tif 000007
【図６】
2020105234.tif 000008
【図７】
2020105234.tif 000009
【図８】
2020105234.tif 000010
【図９】
2020105234.tif 000011
【図１０】
2020105234.tif 000012
【図１１】
2020105234.tif 000013
【図１２】
2020105234.tif 000014
【図１３】
2020105234.tif 000015
【図１４】
2020105234.tif 000016
【図１５】
2020105234.tif 000017
【図１６】
2020105234.tif 000018
【図１７】
2020105234.tif 000019
【図１８】
2020105234.tif 000020
【図１９】
2020105234.tif 000021
【図２０】
2020105234.tif 000022
【図２１】
2020105234.tif 000023
【図２２】
2020105234.tif 000024
【図２３】
2020105234.tif 000025
【国際調査報告】
2020105234.tif 000026
2020105234.tif 000027
2020105234.tif 000028
2020105234.tif 000029