IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-16
(45)【発行日】2023-06-26
(54)【発明の名称】異常検知方法、及び異常検知装置
(51)【国際特許分類】
   H04L 43/08 20220101AFI20230619BHJP
【FI】
H04L43/08
【請求項の数】 20
(21)【出願番号】P 2020558090
(86)(22)【出願日】2019-08-09
(86)【国際出願番号】 JP2019031585
(87)【国際公開番号】W WO2020105234
(87)【国際公開日】2020-05-28
【審査請求日】2022-05-17
(31)【優先権主張番号】62/770,375
(32)【優先日】2018-11-21
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】P 2019081275
(32)【優先日】2019-04-22
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】大庭 達海
【審査官】宮島 郁美
(56)【参考文献】
【文献】特開2017-212617(JP,A)
【文献】大内田 克也 Katsuya OOUCHIDA,確率分布モデルに基づく不正パケット系列の誤検出の制御,電子情報通信学会2001年基礎・境界ソサイエティ大会講演論文集 PROCEEDINGS OF THE 2001 ENGINEERING,2001年08月29日,第160頁
【文献】田村 研輔 Kensuke Tamura,制御システムにおける通信の規則性を利用した異常検知,2018年 暗号と情報セキュリティシンポジウム(SCIS2018)予稿集 [USB] 2018年 暗号と情報セキュリティシンポジウム概要集,2008年12月26日,第1-8頁
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00-13/18,41/00-49/9057,61/00-65/80,69/00-69/40
(57)【特許請求の範囲】
【請求項1】
連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、
算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、
抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
異常検知方法。
【請求項2】
前記複数の距離を算出する際に、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離を利用して前記複数の距離を算出する
請求項1に記載の異常検知方法。
【請求項3】
前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、前記検知対象パケット列におけるN(Nは1以上の整数)個離れた検知対象パケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、
前記複数の距離を算出する際に、前記検知対象パケット列におけるN個離れた検知対象パケット間のそれぞれに対して距離を算出することで、前記複数の距離を算出する
請求項2に記載の異常検知方法。
【請求項4】
前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、さらに、前記検知対象パケット列におけるL(LはN以外の1以上の整数)個離れた検知対象パケット間のそれぞれに対しても算出され、
前記複数の距離を算出する際に、前記検知対象パケット列におけるL個離れた検知対象パケット間のそれぞれに対しても距離を算出することで、前記複数の距離を算出する
請求項3に記載の異常検知方法。
【請求項5】
前記特徴量を抽出する際に、前記検知対象パケット列において連続するW(Wは2以上の整数)個の検知対象パケットからなる1以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離の出現分布を算出し、算出した前記出現分布のそれぞれを、前記特徴量として抽出する
請求項3又は4に記載の異常検知方法。
【請求項6】
前記異常の度合いに係る情報を算出する際に、算出した前記出現分布のそれぞれと、予め記憶する複数のリファレンス出現分布のそれぞれとの間のアースムーバーズ距離のそれぞれを算出し、算出した前記アースムーバーズ距離のそれぞれを利用するK近傍法を利用して、前記異常の度合いに係る情報を算出する
請求項5に記載の異常検知方法。
【請求項7】
前記特徴量を抽出する際に、前記検知対象パケット列において連続するW(Wは1以上の整数)個の検知対象パケットからなる1以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離からなる距離列を算出し、算出した前記距離列のそれぞれを前記特徴量として抽出する
請求項3又は4に記載の異常検知方法。
【請求項8】
前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれと、予め記憶する複数のリファレンス距離列のそれぞれとの間の、ワーピング法により定められる距離のそれぞれを算出し、算出した前記ワーピング法により定められる距離のそれぞれを利用して、前記異常の度合いに係る情報を算出する
請求項7に記載の異常検知方法。
【請求項9】
前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれに対して予め記憶するグローバルアラインメントカーネルを適用することで、前記異常の度合いに係る情報を算出する
請求項7に記載の異常検知方法。
【請求項10】
前記複数の距離を算出する際に、前記複数の検知対象パケットのうち、同一のコマンド種別の検知対象パケット間に限定して、前記複数の距離を算出する
請求項1~9のいずれか1項に記載の異常検知方法。
【請求項11】
連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記検知対象パケット列の異常の度合いに係る情報を算出する際に、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
請求項1~10のいずれか1項に記載の異常検知方法。
【請求項12】
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出する
請求項11に記載の異常検知方法。
【請求項13】
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、
前記複数のリファレンス距離をそれぞれ算出する際に、前記1以上のリファレンスパケット列のそれぞれにおけるN個離れたリファレンスパケット間のそれぞれに対してリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出する
請求項12に記載の異常検知方法。
【請求項14】
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、さらに、前記1以上のリファレンスパケット列のそれぞれにおけるL(LはN以外の1以上の整数)個離れた検知対象パケット間のそれぞれに対しても算出され、
前記複数のリファレンス距離のそれぞれを算出する際に、さらに、前記1以上のリファレンスパケット列のそれぞれにおけるL個離れたリファレンスパケット間のそれぞれに対してもリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出する
請求項13に記載の異常検知方法。
【請求項15】
連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、
前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記複数のリファレンス距離の出現分布を算出し、算出した前記リファレンス距離の出現分布のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス出現分布のそれぞれとして記憶する
請求項6に記載の異常検知方法。
【請求項16】
連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、
前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、
抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス距離列のそれぞれとして記憶する
請求項8に記載の異常検知方法。
【請求項17】
連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、
前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、
前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、
抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを用いて、グローバルアラインメントカーネルを算出し、算出した前記グローバルアラインメントカーネルを、前記予め記憶するグローバルアラインメントカーネルとして記憶する
請求項9に記載の異常検知方法。
【請求項18】
前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのうち、同一のコマンド種別のリファレンスパケット間に限定して、前記リファレンス距離のそれぞれを算出する
請求項11~17のいずれか1項に記載の異常検知方法。
【請求項19】
連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、
算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、
抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える
異常検知装置。
【請求項20】
連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出するリファレンスパケットデータ間距離算出部と、
算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出するリファレンス特徴量抽出部と、を備え、
前記情報算出部は、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する
請求項19に記載の異常検知装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット列の異常を検知する異常検知方法、及び異常検知装置に関する。
【背景技術】
【0002】
従来、ネットワークシステム等で利用されるデータを対象として行う情報処理技術が知られている(例えば、非特許文献1、非特許文献2参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0004】
ネットワークシステム等で利用されるパケット列の異常を検知することが望まれる。
【0005】
そこで、本発明は、パケット列の異常を検知する異常検知方法、及び異常検知装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様に係る異常検知方法は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する。
【0007】
また、本開示の一態様に係る異常検知装置は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える。
【発明の効果】
【0008】
本開示の一態様に係る異常検知方法、及び異常検知装置によると、パケット列の異常を検知することができる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態1に係る異常検知装置の構成を示すブロック図である。
図2図2は、プロファイル情報の一例を示す模式図である。
図3図3は、Modbus/TCPプロトコルのパケットのデータ構造を示す模式図である。
図4図4は、BACnet/IPプロトコルのパケットのデータ構造を示す模式図である。
図5図5は、リファレンスパケットデータ列の一例を示す模式図である。
図6図6は、実施の形態1に係るリファレンスパケットデータ間距離算出部がパケットデータを1バイトずつ切り出す様子の一例を示す模式図である。
図7図7は、実施の形態1に係るリファレンスパケットデータ間距離算出部が2つの文字列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
図8図8は、実施の形態1に係るリファレンスパケットデータ間距離算出部が2つのバイト列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
図9図9は、実施の形態1に係るリファレンスパケットデータ間距離算出部がリファレンス距離を算出する様子の一例を示す模式図である。
図10図10は、実施の形態1に係るリファレンス特徴量抽出部がリファレンス特徴量を抽出する様子の一例を示す模式図である。
図11図11は、実施の形態1に係る検知対象パケットデータ間距離算出部が距離を算出する様子の一例を示す模式図である。
図12図12は、実施の形態1に係る特徴量抽出部が検知対象パケットデータ列から、特徴量を抽出する様子の一例を示す模式図である。
図13図13は、実施の形態1に係る情報算出部がアースムーバーズ距離を算出する様子の一例を示す模式図である。
図14図14は、実施の形態1に係る情報算出部が検知対象パケット列の異常度を算出する様子の一例を示す模式図である。
図15図15は、第1リファレンス特徴量抽出処理のフローチャートである。
図16図16は、第1異常検知処理のフローチャートである。
図17図17は、実施の形態2に係る異常検知装置の構成を示すブロック図である。
図18図18は、実施の形態2に係る情報算出部がダイナミックタイムワーピング距離を算出する様子の一例を示す模式図である。
図19図19は、第2リファレンス特徴量抽出処理のフローチャートである。
図20図20は、第2異常検知処理のフローチャートである。
図21図21は、実施の形態3に係る異常検知装置の構成を示すブロック図である。
図22図22は、第3リファレンス特徴量抽出処理のフローチャートである。
図23図23は、第3異常検知処理のフローチャートである。
【発明を実施するための形態】
【0010】
(本発明の一態様を得るに至った経緯)
従来、ICS(Industrial Control System)におけるサイバー攻撃の事例が増加傾向にある。ICSでは、機器を制御する正常なフォーマットのコマンド列が深刻な攻撃となり得るため、悪意のある攻撃者によって生成された異常なパケット列であっても、パケット単体で見ると、正常なものとほとんど区別できない。
【0011】
従来、パケット列の異常を検知する方法として、ルールベース方式とアノマリ方式とが知られている。しかしながら、ルールベース方式には、ルールで記載されていないパケット列の異常を検知することが困難であるという問題があり、アノマリ方式には、極端なデータ量やパケット数の増加や、極端なバイト列の乱れがなければ、パケット列の異常を検知することが困難であるという問題がある。
【0012】
そこで、発明者は、これら問題を解決すべく、鋭意検討、実験を重ねた。そして、発明者は、機器を制御するコマンドを含む正常なパケット列が、一定のコンテクストを有していることに着目し、一定のコンテクストから逸脱するパケット列を、異常なパケット列として検知できることを見出した。その結果、発明者は、下記異常検知方法、及び異常検知装置に想到した。
【0013】
本開示の一態様に係る異常検知方法は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出し、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出し、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する。
【0014】
上記異常検知方法によると、検知対象パケット列のコンテクストの特徴を特徴量として抽出することができる。そして、抽出した特徴量を用いて、検知対象パケット列の異常に係る情報を算出することができる。このように、上記異常検知方法によると、パケット列の異常を検知することができる。
【0015】
また、前記複数の距離を算出する際に、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離を利用して前記複数の距離を算出するとしてもよい。
【0016】
また、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、前記検知対象パケット列におけるN(Nは1以上の整数)個離れた検知対象パケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、前記複数の距離を算出する際に、前記検知対象パケット列におけるN個離れた検知対象パケット間のそれぞれに対して距離を算出することで、前記複数の距離を算出するとしてもよい。
【0017】
また、前記複数の検知対象パケットのペイロード間のレーベンシュタイン距離は、さらに、前記検知対象パケット列におけるL(LはN以外の1以上の整数)個離れた検知対象パケット間のそれぞれに対しても算出され、前記複数の距離を算出する際に、前記検知対象パケット列におけるL個離れた検知対象パケット間のそれぞれに対しても距離を算出することで、前記複数の距離を算出するとしてもよい。
【0018】
また、前記特徴量を抽出する際に、前記検知対象パケット列において連続するW(Wは2以上の整数)個の検知対象パケットからなる1以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離の出現分布を算出し、算出した前記出現分布のそれぞれを、前記特徴量として抽出するとしてもよい。
【0019】
また、前記異常の度合いに係る情報を算出する際に、算出した前記出現分布のそれぞれと、予め記憶する複数のリファレンス出現分布のそれぞれとの間のアースムーバーズ距離のそれぞれを算出し、算出した前記アースムーバーズ距離のそれぞれを利用するK近傍法を利用して、前記異常の度合いに係る情報を算出するとしてもよい。
【0020】
また、前記特徴量を抽出する際に、前記検知対象パケット列において連続するW(Wは1以上の整数)個の検知対象パケットからなる1以上のウインドウ毎に、当該ウインドウに属する検知対象パケット間に対して算出した前記複数の距離からなる距離列を算出し、算出した前記距離列のそれぞれを前記特徴量として抽出するとしてもよい。
【0021】
また、前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれと、予め記憶する複数のリファレンス距離列のそれぞれとの間の、ワーピング法により定められる距離のそれぞれを算出し、算出した前記ワーピング法により定められる距離のそれぞれを利用して、前記異常の度合いに係る情報を算出するとしてもよい。
【0022】
また、前記異常の度合いに係る情報を算出する際に、算出した前記距離列のそれぞれに対して予め記憶するグローバルアラインメントカーネルを適用することで、前記異常の度合いに係る情報を算出するとしてもよい。
【0023】
また、前記複数の距離を算出する際に、前記複数の検知対象パケットのうち、同一のコマンド種別の検知対象パケット間に限定して、前記複数の距離を算出するとしてもよい。
【0024】
また、連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記検知対象パケット列の異常の度合いに係る情報を算出する際に、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出するとしてもよい。
【0025】
また、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【0026】
また、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、前記複数のリファレンス距離をそれぞれ算出する際に、前記1以上のリファレンスパケット列のそれぞれにおけるN個離れたリファレンスパケット間のそれぞれに対してリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【0027】
また、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、さらに、前記1以上のリファレンスパケット列のそれぞれにおけるL(LはN以外の1以上の整数)個離れた検知対象パケット間のそれぞれに対しても算出され、前記複数のリファレンス距離のそれぞれを算出する際に、さらに、前記1以上のリファレンスパケット列のそれぞれにおけるL個離れたリファレンスパケット間のそれぞれに対してもリファレンス距離を算出することで、前記複数のリファレンス距離をそれぞれ算出するとしてもよい。
【0028】
また、連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記複数のリファレンス距離の出現分布を算出し、算出した前記リファレンス距離の出現分布のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス出現分布のそれぞれとして記憶するとしてもよい。
【0029】
また、連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを、前記予め記憶する複数のリファレンス距離列のそれぞれとして記憶するとしてもよい。
【0030】
また、連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出し、算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出し、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離を利用して前記複数のリファレンス距離をそれぞれ算出し、前記複数のリファレンスパケットのペイロード間のレーベンシュタイン距離は、前記1以上のリファレンスパケット列のそれぞれにおけるN(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出され、ペイロードを構成するビット列の少なくとも一部を対象として、M(Mは、1以上16以下の整数)ビットを単位として算出され、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出する際に、前記1以上のリファレンスパケット列のそれぞれにおいて連続するW(Wは2以上の整数)個のリファレンスパケットからなる1以上のウインドウ毎に、当該ウインドウに属するリファレンスパケット間に対して算出した前記リファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれとして抽出し、抽出した前記1以上のリファレンスパケット列のリファレンス特徴量のそれぞれを用いて、グローバルアラインメントカーネルを算出し、算出した前記グローバルアラインメントカーネルを、前記予め記憶するグローバルアラインメントカーネルとして記憶するとしてもよい。
【0031】
また、前記複数のリファレンス距離をそれぞれ算出する際に、前記複数のリファレンスパケットのうち、同一のコマンド種別のリファレンスパケット間に限定して、前記リファレンス距離のそれぞれを算出するとしてもよい。
【0032】
本開示の一態様に係る異常検知装置は、連続する複数の検知対象パケットからなる検知対象パケット列に対して、当該複数の検知対象パケット間の複数の距離を算出する検知対象パケットデータ間距離算出部と、算出した前記複数の距離を用いて、前記検知対象パケット列の特徴量を抽出する特徴量抽出部と、抽出した前記特徴量を用いて、前記検知対象パケット列の異常の度合いに係る情報を算出する情報算出部と、を備える。
【0033】
上記異常検知装置によると、検知対象パケット列のコンテクストの特徴を特徴量として抽出することができる。そして、抽出した特徴量を用いて、検知対象パケット列の異常に係る情報を算出することができる。このように、上記異常検知装置によると、パケット列の異常を検知することができる。
【0034】
また、連続する複数のリファレンスパケットからなる1以上のリファレンスパケット列のそれぞれに対して、当該複数のリファレンスパケット間の複数のリファレンス距離をそれぞれ算出するリファレンスパケットデータ間距離算出部と、算出した前記複数のリファレンス距離のそれぞれを用いて、前記1以上のリファレンスパケット列のリファレンス特徴量をそれぞれ抽出するリファレンス特徴量抽出部と、を備え、前記情報算出部は、さらに、抽出した前記リファレンス特徴量のそれぞれをも用いて、前記検知対象パケット列の異常の度合いに係る情報を算出するとしてもよい。
【0035】
以下、本開示の一態様に係る異常検知方法、及び異常検知装置の具体例について、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、形状、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0036】
(実施の形態1)
以下、実施の形態1に係る異常検知装置について説明する。この異常検知装置は、検知対象パケット列の異常を検知する。
【0037】
[1-1.構成]
図1は、実施の形態1に係る異常検知装置1の構成を示すブロック図である。
【0038】
図1に示されるように、異常検知装置1は、第1プロファイル決定部11と、第1抽出部12と、リファレンスパケットデータ列群記憶部13と、リファレンスパケットデータ間距離算出部14と、リファレンス特徴量抽出部15と、リファレンス特徴量記憶部16と、第2プロファイル決定部21と、第2抽出部22と、検知対象パケットデータ列記憶部23と、検知対象パケットデータ間距離算出部24と、特徴量抽出部25と、特徴量記憶部26と、情報算出部27と、判定部28とを含んで構成される。
【0039】
異常検知装置1は、例えば、メモリと、メモリに記憶されたプログラムを実行するプロセッサとを含むコンピュータ装置によって実現される。この場合、異常検知装置1によって実現される各種機能は、異常検知装置1を構成するメモリに記憶されたプログラムを、異常検知装置1を構成するプロセッサが実行することにより実現される。
【0040】
第1プロファイル決定部11は、正常なパケット列からなるパケット列群、すなわち、異常なパケット列を含まないパケット列群であるリファレンスパケット列群10を取得する。そして、取得したリファレンスパケット列群10を構成する各リファレンスパケット列に含まれる各パケットに対して、その属性情報(送信元IP、宛先IP、送信元ポート、宛先ポート、プロトコル等。それらの組み合わせも含む。)に基づいて、該当するプロファイルを決定する。第1プロファイル決定部11は、例えば、プロファイル情報を記憶し、記憶するプロファイル情報に基づいて該当するプロファイルを決定するとしてもよい。
【0041】
図2は、第1プロファイル決定部11が記憶するプロファイル情報の一例を示す模式図である。
【0042】
第1プロファイル決定部11は、例えば、図2に示されるプロファイル情報を記憶し、各パケットに対して、対象コマンドが一致する行のプロファイルIDで識別されるプロファイルを決定する。
【0043】
図3は、Modbus/TCPプロトコルのパケットのデータ構造を示す模式図である。
【0044】
第1プロファイル決定部11は、例えば、パケットがModbus/TCPプロトコルである場合には、図3に示されるDataフィールドに格納されるビット列が、対象コマンドに対応するビット列と一致するパケットを、対象コマンドが一致するパケットであると判定する。
【0045】
図4は、BACnet/IPプロトコルのパケットのデータ構造を示す模式図である。
【0046】
第1プロファイル決定部11は、例えば、パケットがBACnet/IPプロトコルである場合には、図4に示されるAPDU Typeフィールドに格納されるビット列、及びService Choiceフィールドに格納されるビット列が、対象コマンドに対応するビット列と一致するパケットを、対象コマンドが一致するパケットであると判定する。
【0047】
第1プロファイル決定部11は、例えば、プロファイルの決定対象とするパケットが、記憶するプロファイル情報に該当しない場合には、Deep Packet Inspection機能を備えるアプリケーションを実行することで、そのパケットのプロトコルを特定し、特定したプロトコルに基づいて、そのパケットに対してプロファイルを決定するとしてもよい。
【0048】
再び、図1に戻って、異常検知装置1の説明を続ける。
【0049】
第1抽出部12は、第1プロファイル決定部11によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。
【0050】
第1抽出部12は、例えば、抽出対象とするパケットが、Modbus/TCPプロトコルである場合には、図3に示されるTCP Payloadフィールドに格納されるビット列をパケットデータとして抽出する。
【0051】
第1抽出部12は、例えば、抽出対象とするパケットが、BACnet/IPプロトコルである場合には、図4に示されるUDP Payloadに格納されるビット列をパケットデータとして抽出する。
【0052】
第1抽出部12は、各パケットからパケットデータを抽出すると、第1プロファイル決定部11により取得されたリファレンスパケット列毎に、同一プロファイルのパケットデータからなるリファレンスパケットデータ列を出力する。
【0053】
図5は、第1抽出部12により出力されるリファレンスパケットデータ列の一例を示す模式図である。
【0054】
第1抽出部12は、例えば、図5に示される、「ID=1で識別される機器の電源をオンする」旨のwriteコマンドに対応するパケットデータと、「ID=2で識別される機器の電源をオンする」旨のwriteコマンドに対応するパケットデータと、「ID=3で識別される機器の電源をオンする」旨のwriteコマンドに対応するパケットデータと、「ID=4で識別される機器の電源をオンする」旨のwriteコマンドに対応するパケットデータと、「ID=1で識別される機器の温度設定を27.0℃に変更する」旨のwriteコマンドに対応するパケットデータと、「ID=1で識別される機器の風量設定を強に変更する」旨のwriteコマンドに対応するパケットデータと、「ID=2で識別される機器の温度設定を27.0℃に変更する」旨のwriteコマンドに対応するパケットデータと、「ID=2で識別される機器の風量設定を強に変更する」旨のwriteコマンドに対応するパケットデータとが順に並んで構成されるリファレンスパケットデータ列を出力する。
【0055】
再び、図1に戻って、異常検知装置1の説明を続ける。
【0056】
リファレンスパケットデータ列群記憶部13は、第1抽出部12から出力された1以上のリファレンスパケットデータ列からなるリファレンスパケットデータ列群を記憶する。
【0057】
リファレンスパケットデータ間距離算出部14は、リファレンスパケットデータ列群記憶部13に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を算出する。
【0058】
リファレンスパケットデータ間距離算出部14は、パケットデータを、1バイトずつ切り出したバイト列として取り扱い、リファレンスパケットデータ間のリファレンス距離の算出を、リファレンスパケットデータ間におけるバイト列の距離を算出することで行う。
【0059】
図6は、リファレンスパケットデータ間距離算出部14が、パケットデータを1バイトずつ切り出す様子の一例を示す模式図である。
【0060】
なお、ここでは、リファレンスパケットデータ間距離算出部14は、パケットデータを、1バイトずつ切り出すとして説明するが、切り出す単位としては、必ずしも1バイトの例に限定される必要はない。切り出す単位は、例えば、1ビット以上16ビット以下の任意の長さのビット列であってもよいし、他の任意の長さのビット列であってもよい。また、リファレンスパケットデータ間距離算出部14は、パケットデータを、連続したビット単位で切り出す例に限定される必要はない。例えば、リファレンスパケットデータ間距離算出部14は、xビット切り出してyビットスキップしてという処理を繰り返すことでビット列を切り出すとしてもよい。
【0061】
再び図1に戻って、異常検知装置1の説明を続ける。
【0062】
リファレンスパケットデータ間距離算出部14は、パケットデータ間のレーベンシュタイン距離を利用してリファレンス距離を算出する。
【0063】
レーベンシュタイン距離は、2つの文字列又はバイト列間に定めることができる距離である。レーベンシュタイン距離は、1文字又は1バイトの挿入、削除、置換によって、一方の文字列又はバイト列を他方の文字列又はバイト列に変形するのに必要な最小回数として定義される。
【0064】
図7は、リファレンスパケットデータ間距離算出部14が、2つの文字列間(ここでは、一例として、“ELEPHANT”と“RELEVANT”との文字列間)のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【0065】
図7に示されるように、“ELEPHANT”を“RELEVANT”に変形するのに必要な、挿入、削除、置換の最小回数は3である。このため、リファレンスパケットデータ間距離算出部14は、“ELEPHANT”と“RELEVANT”とのレーベンシュタイン距離を「3」と算出する。
【0066】
図8は、リファレンスパケットデータ間距離算出部14が、2つのバイト列間のレーベンシュタイン距離を算出する様子の一例を示す模式図である。
【0067】
図8に示されるように、一方のバイト列を他方のバイト列に変形するのに必要な、挿入、削除、置換の最小回数は3である。このため、リファレンスパケットデータ間距離算出部14は、図8に図示されるバイト列間のレーベンシュタイン距離を「3」と算出する。
【0068】
リファレンスパケットデータ間距離算出部14は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、N(Nは1以上の整数)個離れたリファレンスパケット間のそれぞれに対して算出する。
【0069】
図9は、Nが1である場合において、リファレンスパケットデータ間距離算出部14が、リファレンスパケットデータ列から複数のリファレンス距離を算出する様子の一例を示す模式図である。ここでは、Nは1であるとして説明するが、必ずしもNが1である場合に限定されない。
【0070】
図9に示されるように、リファレンスパケットデータ間距離算出部14は、対象とするリファレンスパケットデータ列が8個の連続するリファレンスパケットデータにより構成される場合には、対象とするリファレンスパケットデータ列から、1離れたリファレンスパケットデータ間、すなわち、互いに隣接するリファレンスパケットデータ列間の7個のリファレンス距離を算出する。
【0071】
なお、リファレンスパケットデータ間距離算出部14は、パケットデータ間のレーベンシュタイン距離として、パケットデータを構成するビット列の少なくとも一部を対象としてレーベンシュタイン距離を算出すればよく、必ずしも、パケットデータを構成するビット列の全てを対象とする場合に限定されない。
【0072】
再び図1に戻って、異常検知装置1の説明を続ける。
【0073】
リファレンス特徴量抽出部15は、リファレンスパケットデータ列群記憶部13に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ間距離算出部14により算出された複数のリファレンス距離のそれぞれを用いて、リファレンス特徴量をそれぞれ抽出する。より具体的には、リファレンス特徴量抽出部15は、リファレンスパケットデータ列群記憶部13に記憶されるリファレンスパケットデータ列のそれぞれに対して、連続するW(Wは2以上の整数)個のリファレンスパケットデータからなる1以上のウインドウ毎に、そのウインドウに属するリファレンスパケットデータについて算出された複数のリファレンス距離の出現分布を算出し、算出したリファレンス距離の出現分布のそれぞれを、リファレンス特徴量のそれぞれとして抽出する。
【0074】
図10は、リファレンス特徴量抽出部15が、1のリファレンスパケットデータ列から、リファレンス特徴量を抽出する様子の一例を示す模式図である。図10は、Wが4であり、リファレンスパケットデータ間距離算出部14が、1のリファレンスパケットデータ列に対して、図9に示される複数のリファレンス距離を算出した場合の模式図となっている。
【0075】
図10に示されるように、第1のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「1」、「3」、「2」、「2」である。このため、リファレンス特徴量抽出部15は、第1のウインドウにおける、複数のリファレンス距離の出現分布を、「1」の出現率が「0.25」、「2」の出現率が「0.5」、「3」の出現率が「0.25」、「4」の出現率が「0」となる出現分布A(図10中の「A」参照)として算出する。また、第2のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「3」、「2」、「2」、「4」である。このため、リファレンス特徴量抽出部15は、第2のウインドウにおける、複数のリファレンス距離の出現分布を、「1」の出現率が「0」、「2」の出現率が「0.5」、「3」の出現率が「0.25」、「4」の出現率が「0.25」となる出現分布B(図10中の「B」参照)として算出する。また、第3のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「2」、「2」、「4」、「3」である。このため、リファレンス特徴量抽出部15は、第3のウインドウにおける、複数のリファレンス距離の出現分布を、「1」の出現率が「0」、「2」の出現率が「0.25」、「3」の出現率が「0.5」、「4」の出現率が「0.25」となる出現分布C(図10中の「C」参照)として算出する。また、第4のウインドウに属するリファレンスパケットデータについて算出されたリファレンス距離は、「2」、「4」、「3」、「1」である。このため、リファレンス特徴量抽出部15は、第4のウインドウにおける、複数のリファレンス距離の出現分布を、「1」の出現率が「0.25」、「2」の出現率が「0」、「3」の出現率が「0.5」、「4」の出現率が「0.25」となる出現分布D(図10中の「D」参照)として算出する。そして、リファレンス特徴量抽出部15は、算出した出現分布Aと出現分布Bと出現分布Cと出現分布Dとを、リファレンス特徴量として抽出する。
【0076】
再び図1に戻って、異常検知装置1の説明を続ける。
【0077】
リファレンス特徴量記憶部16は、リファレンス特徴量抽出部15によって抽出されたリファレンス特徴量を記憶する。
【0078】
第2プロファイル決定部21は、異常の検知対象となる検知対象パケット列20を取得する。そして、取得した検知対象パケット列20に含まれる各パケットに対して、その属性情報(送信元IP、宛先IP、送信元ポート、宛先ポート、プロトコル等。それらの組み合わせも含む。)に基づいて、該当するプロファイルを決定する。第2プロファイル決定部21は、第1プロファイル決定部11が行うプロファイルの決定と同様のアルゴリズムでプロファイルの決定を行う。
【0079】
第2抽出部22は、第2プロファイル決定部21によりプロファイルを決定された複数のパケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。第2抽出部22は、第1抽出部12が行うパケットデータの抽出と同様のアルゴリズムでパケットデータの抽出を行う。
【0080】
第2抽出部22は、パケットデータを抽出すると、同一プロファイルのパケットデータからなる検知対象パケットデータ列を出力する。
【0081】
検知対象パケットデータ列記憶部23は、第2抽出部22から出力された検知対象パケットデータ列を記憶する。
【0082】
検知対象パケットデータ間距離算出部24は、検知対象パケットデータ列記憶部23に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を算出する。
【0083】
検知対象パケットデータ間距離算出部24は、リファレンスパケットデータ間距離算出部14が行うリファレンス距離の算出に対して、リファレンスパケットを検知対象パケットに読み替え、リファレンスパケットデータを検知対象パケットデータに読み替え、リファレンスパケットデータ列を検知対象パケットデータ列に読み替え、リファレンス距離を距離に読み替えたアルゴリズムと同様のアルゴリズムで、距離の算出を行う。
【0084】
図11は、Nが1である場合において、検知対象パケットデータ間距離算出部24が、検知対象パケットデータ列から複数の距離を算出する様子の一例を示す模式図である。ここでは、Nは1であるとして説明するが、必ずしもNが1である場合に限定されない。
【0085】
図11に示されるように、検知対象パケットデータ間距離算出部24は、対象とする検知対象パケットデータ列が6個の連続する検知対象パケットデータにより構成される場合には、対象とする検知対象パケットデータ列から、1離れた検知対象パケットデータ間、すなわち、互いに隣接する検知対象パケットデータ列間の5個の距離を算出する。
【0086】
なお、検知対象パケットデータ間距離算出部24は、パケットデータ間のレーベンシュタイン距離として、パケットデータを構成するビット列の少なくとも一部を対象としてレーベンシュタイン距離を算出すればよく、必ずしも、パケットデータを構成するビット列の全てを対象とする場合に限定されない。
【0087】
再び図1に戻って、異常検知装置1の説明を続ける。
【0088】
特徴量抽出部25は、検知対象パケットデータ列記憶部23に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ間距離算出部24により算出された複数の距離を用いて、特徴量を抽出する。より具体的には、特徴量抽出部25は、検知対象パケットデータ列記憶部23に記憶される検知対象パケットデータ列に対して、連続するW(Wは2以上の整数)個の検知対象パケットデータからなる1以上のウインドウ毎に、そのウインドウに属する検知対象パケットについて算出された複数の距離の出現分布を算出し、算出した距離の出現分布を、特徴量として抽出する。
【0089】
図12は、特徴量抽出部25が、検知対象パケットデータ列から、特徴量を抽出する様子の一例を示す模式図である。図12は、Wが4であり、検知対象パケットデータ間距離算出部24が、検知対象パケットデータ列に対して、図11に示される複数の距離を算出した場合の模式図となっている。
【0090】
図12に示されるように、第1のウインドウに属する検知対象パケットデータについて算出された距離は、「4」、「2」、「3」、「1」である。このため、特徴量抽出部25は、第1のウインドウにおける、複数の距離の出現分布を、「1」の出現率が「0.25」、「2」の出現率が「0.25」、「3」の出現率が「0.25」、「4」の出現率が「0.25」となる出現分布X(図12中の「X」参照)として算出する。また、第2のウインドウに属する検知対象パケットデータについて算出された距離は、「2」、「3」、「1」、「2」である。このため、特徴量抽出部25は、第2のウインドウにおける、複数の距離の出現分布を、「1」の出現率が「0」、「2」の出現率が「0.5」、「3」の出現率が「0.25」、「4」の出現率が「0」となる出現分布Y(図12中の「Y」参照)として算出する。そして、特徴量抽出部25は、算出した出現分布Xと出現分布Yとを、特徴量として抽出する。
【0091】
再び図1に戻って、異常検知装置1の説明を続ける。
【0092】
特徴量記憶部26は、特徴量抽出部25によって抽出された特徴量を記憶する。
【0093】
情報算出部27は、リファレンス特徴量記憶部16にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれと、特徴量記憶部26に特徴量として記憶される距離の出現分布のそれぞれとの間のアースムーバーズ距離(Earth Mover’s Distance:以下、アースムーバーズ距離のことを、EMDとも表記する。)を算出し、算出したアースムーバーズ距離のそれぞれを利用するK近傍法を利用して、検知対象パケット列20の異常の度合い示す異常度を算出する。
【0094】
アースムーバーズ距離は、2つの確率分布間(ここでは、リファレンス距離の出現分布と、距離の出現分布との間)に定めることができる距離である。アースムーバーズ距離は、一方の確率分布(ここでは出現分布)を、確率成分(ここでは出現率成分)の移動によって他方の確率分布(ここでは出現分布)に変形するのに必要な最小コストとして定義される。
【0095】
図13は、情報算出部27が、4つの出現分布(出現分布K、出現分布L、出現分布M、出現分布N)間のアースムーバーズ距離を算出する様子の一例を示す模式図である。
【0096】
図13に示されるように、「0」の出現率が「0」、「1」の出現率が「0.5」、「2」の出現率が「0.25」、「3」の出現率が「0.25」となる出現分布K(図13中の「K」参照)を、「0」の出現率が「0」、「1」の出現率が「0.25」、「2」の出現率が「0.25」、「3」の出現率が「0.5」となる出現分布L(図13中の「L」参照)に変換するのに必要な最小コストは、出現分布Kにおける「1」の出現率「0.5」のうちの出現率成分「0.25」を、出現分布Lのおける「3」の出現率へ移動させるコストとなる。このため、情報算出部27は、出現分布Kと出現分布Lとの間のアースムーバーズ距離を、0.25×|1-3|=0.5と算出する。同様にして、情報算出部27は、4つの出現分布間のアースムーバーズ距離のそれぞれを、図13中の表で示される値のそれぞれと算出する。
【0097】
図14は、情報算出部27が、リファレンス特徴量記憶部16にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれと、特徴量記憶部26に特徴量として記憶される距離の出現分布のそれぞれとから、検知対象パケット列20の異常度を算出する様子の一例を示す模式図である。図14は、リファレンス特徴量記憶部16に記憶されるリファレンス距離の出現分布が、図10に示される出現分布A、出現分布B、出現分布C、出現分布Dであり、特徴量記憶部26に記憶される距離の出現分布が、図12に示される出現分布X、出現分布Yである場合の模式図となっている。
【0098】
図14に示されるように、情報算出部27は、出現分布Xと出現分布Aとの間のアースムーバーズ距離(以下、「EMD_XA」とも称する。)を「0.5」と算出し、出現分布Xと出現分布Bとの間のアースムーバーズ距離(以下、「EMD_XB」とも称する。)を「0.25」と算出し、出現分布Xと出現分布Cとの間のアースムーバーズ距離(以下、「EMD_XC」とも称する。)を「0.5」と算出し、出現分布Xと出現分布Dとの間のアースムーバーズ距離(以下、「EMD_XD」とも称する。)を「0.25」と算出する。そして、情報算出部27は、EMD_XA、EMD_XB、EMD_XC、EMD_XDに対してK=1となるK近傍法を適用して、出現分布Xの異常度を、「0.25」と算出する。同様に、情報算出部27は、出現分布Yと出現分布Aとの間のアースムーバーズ距離(以下、「EMD_YA」とも称する。)を0と算出し、出現分布Yと出現分布Bとの間のアースムーバーズ距離(以下、「EMD_YB」とも称する。)を「0.75」と算出し、出現分布Yと出現分布Cとの間のアースムーバーズ距離(以下、「EMD_YC」とも称する。)を「1.0」と算出し、出現分布Yと出現分布Dとの間のアースムーバーズ距離(以下、「EMD_YD」とも称する。)を「0.75」と算出する。そして、情報算出部27は、EMD_YA、EMD_YB、EMD_YC、EMD_YDに対してK=1となるK近傍法を適用して、出現分布Yの異常度を、「0」と算出する。そして、情報算出部27は、出現分布Xの異常度「0.25」と、出現分布Yの異常度「0」とのうちの最も大きい値「0.25」を、検知対象パケット列20の異常度として算出する。
【0099】
再び図1に戻って、異常検知装置1の説明を続ける。
【0100】
判定部28は、情報算出部27により算出された、検知対象パケット列20の異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。そして、判定部28は、判定結果を外部に出力する。判定部28は、例えば、閾値を記憶し、検知対象パケット列20の異常度が閾値以上である場合に、検知対象パケット列20が異常であると判定し、検知対象パケット列20の異常度が閾値未満である場合に、検知対象パケット列20が異常でないと判定してもよい。また、判定部28は、第1プロファイル決定部11及び第2プロファイル決定部21の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列20から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【0101】
[1-2.動作]
上記構成の異常検知装置1は、第1リファレンス特徴量抽出処理と、第1異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【0102】
まず、第1リファレンス特徴量抽出処理について説明する。
【0103】
第1リファレンス特徴量抽出処理は、リファレンスパケット列群10から、リファレンス特徴量を抽出する処理である。第1リファレンス特徴量抽出処理は、例えば、異常検知装置1を利用するユーザが、異常検知装置1に対して、第1リファレンス特徴量抽出処理を開始させる旨の操作を行うことで開始される。
【0104】
図15は、第1リファレンス特徴量抽出処理のフローチャートである。
【0105】
第1リファレンス特徴量抽出処理が開始されると、第1プロファイル決定部11は、リファレンスパケット列群10を取得する(ステップS5)。
【0106】
第1プロファイル決定部11は、リファレンスパケット列群10を取得すると、リファレンスパケット列群10に含まれるリファレンスパケット列の中から、未選択のリファレンスパケット列を1つ選択する(ステップS10)。ここで、未選択のリファレンスパケット列とは、ステップS10の処理~ステップS55:Yesの処理(後述)で形成されるループ処理において、過去のステップS10の処理で選択されたことのないリファレンスパケット列のことをいう。
【0107】
第1プロファイル決定部11は、未選択のリファレンスパケット列を1つ選択すると、選択したリファレンスパケット列に含まれるパケットの中から、未選択のパケットを1つ選択する(ステップS15)。ここで、未選択のパケットを選択するとは、ステップS15の処理~ステップS35:Yesの処理(後述)で形成されるループ処理において、過去のステップS15の処理で選択されたことのないパケットのことをいう。
【0108】
第1プロファイル決定部11は、1のパケットを選択すると、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができるか否かを調べる(ステップS20)。
【0109】
ステップS20の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができる場合に(ステップS20:Yes)、第1プロファイル決定部11は、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定する(ステップS30)。
【0110】
ステップS20の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができない場合に(ステップS20:No)、第1プロファイル決定部11は、Deep Packet Inspection機能を備えるアプリケーションを実行することで、選択したパケットのプロトコルを特定する(ステップS25)。そして、第1プロファイル決定部11は、特定したプロトコルに基づいて、選択したパケットのプロファイルを決定する(ステップS30)。
【0111】
第1プロファイル決定部11は、選択したパケットのプロファイルを決定すると、選択したリファレンスパケット列に含まれるパケットの中に、未選択のパケットがあるか否かを調べる(ステップS35)。
【0112】
ステップS35の処理において、未選択のパケットがある場合に(ステップS35:Yes)、第1リファレンス特徴量抽出処理は、再びステップS15の処理に進む。
【0113】
ステップS35の処理において、未選択のパケットがない場合に(ステップS35:No)、第1抽出部12は、第1プロファイル決定部11によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。そして第1抽出部12は、同一プロファイルのパケットデータからなるリファレンスパケットデータ列を抽出する(ステップS40)。そして、リファレンスパケットデータ列群記憶部13は、第1抽出部12によって抽出されたリファレンスパケットデータ列を記憶する。
【0114】
リファレンスパケットデータ列が抽出されると、リファレンスパケットデータ間距離算出部14は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を算出する(ステップS45)。
【0115】
複数のリファレンス距離が算出されると、リファレンス特徴量抽出部15は、算出された複数のリファレンス距離から、ウインドウ毎に、リファレンス距離の出現分布をリファレンス特徴量として抽出する(ステップS50)。そして、リファレンス特徴量記憶部16は、リファレンス特徴量抽出部15によってリファレンス特徴量として抽出されたリファレンス距離の出現分布を記憶する。
【0116】
リファレンス距離の出現分布が抽出されると、第1プロファイル決定部11は、取得したリファレンスパケット列群10の中に、未選択のリファレンスパケット列があるか否かを調べる(ステップS55)。
【0117】
ステップS55の処理において、未選択のリファレンスパケット列がある場合に(ステップS55:Yes)、第1リファレンス特徴量抽出処理は、再びステップS10の処理に進む。
【0118】
ステップS55の処理において、未選択のリファレンスパケット列がない場合に(ステップS55:No)、第1リファレンス特徴量抽出処理は、その処理を終了する。
【0119】
次に、第1異常検知処理について説明する。
【0120】
第1異常検知処理は、検知対象パケット列20の異常を検知する処理である。第1異常検知処理は、例えば、異常検知装置1を利用するユーザが、異常検知装置1に対して、第1異常検知処理を開始する旨の操作を行うことで開始される。
【0121】
図16は、第1異常検知処理のフローチャートである。
【0122】
第1異常検知処理が開始されると、第2プロファイル決定部21は、検知対象パケット列20を取得する(ステップS105)。
【0123】
第2プロファイル決定部21は、検知対象パケット列20を取得すると、取得した検知対象パケット列20に含まれるパケットの中から、未選択のパケットを1つ選択する(ステップS115)。ここで、未選択のパケットを選択するとは、ステップS115の処理~ステップS135:Yesの処理(後述)で形成されるループ処理において、過去のステップS115の処理で選択されたことのないパケットのことをいう。
【0124】
第2プロファイル決定部21は、1のパケットを選択すると、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができるか否かを調べる(ステップS120)。
【0125】
ステップS120の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができる場合に(ステップS120:Yes)、第2プロファイル決定部21は、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定する(ステップS130)。
【0126】
ステップS120の処理において、記憶するプロファイル情報を用いて、選択したパケットのプロファイルを決定することができない場合に(ステップS120:No)、第2プロファイル決定部21は、Deep Packet Inspection機能を備えるアプリケーションを実行することで、選択したパケットのプロトコルを特定する(ステップS125)。そして、第2プロファイル決定部21は、特定したプロトコルに基づいて、選択したパケットのプロファイルを決定する(ステップS130)。
【0127】
第2プロファイル決定部21は、選択したパケットのプロファイルを決定すると、取得した検知対象パケット列20に含まれるパケットの中に、未選択のパケットがあるか否かを調べる(ステップS135)。
【0128】
ステップS35の処理において、未選択のパケットがある場合に(ステップS135:Yes)、第1異常検知処理は、再びステップS115の処理に進む。
【0129】
ステップS135の処理において、未選択のパケットがない場合に(ステップS135:No)、第2抽出部22は、第2プロファイル決定部21によりプロファイルを決定された各パケットに対して、各パケットのペイロードフィールドに格納されるビット列をパケットデータとして抽出する。そして第2抽出部22は、同一プロファイルのパケットデータからなる検知対象パケットデータ列を抽出する(ステップS140)。そして、検知対象パケットデータ列記憶部23は、第2抽出部22によって抽出された検知対象パケットデータ列を記憶する。
【0130】
検知対象パケットデータ列が抽出されると、検知対象パケットデータ間距離算出部24は、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を算出する(ステップS145)。
【0131】
複数の距離が算出されると、特徴量抽出部25は、算出された複数の距離から、ウインドウ毎に、距離の出現分布を特徴量として抽出する(ステップS150)。そして、特徴量記憶部26は、特徴量抽出部25によって特徴量として抽出された距離の出現分布を記憶する。
【0132】
距離の出現分布が抽出されると、情報算出部27は、抽出された距離の出現分布のそれぞれと、リファレンス特徴量記憶部16にリファレンス特徴量として記憶されるリファレンス距離の出現分布のそれぞれとの間のアースムーバーズ距離を算出し(ステップS155)、算出したアースムーバーズ距離のそれぞれを利用するK近傍法を利用して、検知対象パケット列20の異常の度合い示す異常度を算出する(ステップS160)。
【0133】
異常度が算出されると、判定部28は、算出された異常度が、記憶する閾値以上であるか否かを調べる(ステップS165)。
【0134】
ステップS165の処理において、算出された異常度が、記憶する閾値以上である場合に(ステップS165:Yes)、判定部28は、検知対象パケット列20が異常であると判定し(ステップS170)、検知対象パケット列20が異常である旨の信号を外部に出力する。
【0135】
ステップS165の処理において、算出された異常度が、記憶する閾値以上でない場合に(ステップS165:No)、判定部28は、検知対象パケット列20が異常でないと判定し(ステップS175)、検知対象パケット列20が異常でない旨の信号を外部に出力する。
【0136】
ステップS170の処理が終了した場合、及びステップS175の処理が終了した場合に第1異常検知処理は、その処理を終了する。
【0137】
[1-3.考察]
上記構成の異常検知装置1は、第1リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群10から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置1は、第1異常検知処理を実行することで、検知対象パケット列20から、検知対象パケット列20のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。このように、異常検知装置1によると、検知対象パケット列20の異常を検知することができる。
【0138】
(実施の形態2)
以下、実施の形態1に係る異常検知装置1から、その構成の一部が変更された実施の形態2に係る異常検知装置について説明する。
【0139】
[2-1.構成]
図17は、実施の形態2に係る異常検知装置1Aの構成を示すブロック図である。以下では、異常検知装置1Aについて、実施の形態1に係る異常検知装置1と同様の構成要素については、既に説明済みであるとして同じ符号を振ってその詳細な説明を省略し、異常検知装置1との相違点を中心に説明する。
【0140】
図17に示されるように、異常検知装置1Aは、異常検知装置1から、リファレンス特徴量抽出部15がリファレンス特徴量抽出部15Aに変更され、リファレンス特徴量記憶部16がリファレンス特徴量記憶部16Aに変更され、特徴量抽出部25が特徴量抽出部25Aに変更され、特徴量記憶部26が特徴量記憶部26Aに変更され、情報算出部27が情報算出部27Aに変更され、判定部28が判定部28Aに変更されて構成される。
【0141】
リファレンス特徴量抽出部15Aは、リファレンスパケットデータ列群記憶部13に記憶されるリファレンスパケットデータ列のそれぞれに対して、リファレンスパケットデータ間距離算出部14により算出された複数のリファレンス距離のそれぞれを用いて、リファレンス特徴量をそれぞれ抽出する。より具体的には、リファレンス特徴量抽出部15Aは、リファレンスパケットデータ列群記憶部13に記憶されるリファレンスパケットデータ列のそれぞれに対して、連続するW(Wは2以上の整数)個のリファレンスパケットデータからなる1以上のウインドウ毎に、そのウインドウに属するリファレンスパケットデータについて算出された複数のリファレンス距離からなるリファレンス距離列を算出し、算出したリファレンス距離列のそれぞれを、リファレンス特徴量のそれぞれとして抽出する。
【0142】
リファレンス特徴量記憶部16Aは、リファレンス特徴量抽出部15Aによって抽出されたリファレンス特徴量を記憶する。
【0143】
特徴量抽出部25Aは、検知対象パケットデータ列記憶部23に記憶される検知対象パケットデータ列に対して、検知対象パケットデータ間距離算出部24により算出された複数の距離を用いて、特徴量を抽出する。より具体的には、特徴量抽出部25Aは、検知対象パケットデータ列記憶部23に記憶される検知対象パケットデータ列に対して、連続するW(Wは2以上の整数)個の検知対象パケットデータからなる1以上のウインドウ毎に、そのウインドウに属する検知対象パケットについて算出された複数の距離からなる距離列を算出し、算出した距離列を、特徴量として抽出する。
【0144】
特徴量記憶部26Aは、特徴量抽出部25Aによって抽出された特徴量を記憶する。
【0145】
情報算出部27Aは、リファレンス特徴量記憶部16Aにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれと、特徴量記憶部26Aに特徴量として記憶される距離列のそれぞれとの間の、ワーピング(Dynamic Time Warping)法により定められる距離(以下、「ダイナミックタイムワーピング(Dynamic Time Warping)距離」、又は「DTW距離」とも称する。)のそれぞれを算出し、算出したダイナミックタイムワーピング距離のそれぞれを利用して、検知対象パケット列20の異常の度合い示す異常度を算出する。
【0146】
ダイナミックタイムワーピング距離は、2つの時系列データ間(ここでは、リファレンス距離列と、距離列との間)に定めることができる距離である。ダイナミックタイムワーピング距離は、2つの時系列データx(xの要素数はn:nは2以上の整数)、y(yの要素数はm:mは2以上の整数)があるとき、(i、j)要素がxiとyj間の距離となる行列において、行要素がn以下、列要素がm以下となる制約を満たすように、(i、j)要素から、(i+1、j)、(i、j+1)又は(i+1、j+1)のいずれかの要素への移動を(n、m)要素に到達するまで繰り返す経路のうち、経路上の要素の和が最小となる経路における距離の和として定義される。
【0147】
図18は、情報算出部27Aが、「2」、「5」、「4」、「2」の時系列データからなるリファレンス距離列と、「2」、「2」、「5」、「1」の時系列データからなる距離列との間のダイナミックタイムワーピング距離を算出する様子の一例を示す模式図である。
【0148】
情報算出部27Aは、図18に示される、リファレンス距離列と距離列との各時点の値の距離(差分)からなる距離行列を算出する。そして、情報算出部27Aは、算出した距離行列において、左上端の距離の位置から、順に、「下1マス」、「下1マス」、「右下1マス」、「右1マス」、「右下1マス」移動する経路上の各距離「0」、「0」、「0」、「1」、「1」の和である「2」が、全ての移動経路上の各距離の和のうちで最小になることを算出する。そして、情報算出部27Aは、「2」、「5」、「4」、「2」の時系列データからなるリファレンス距離列と、「2」、「2」、「5」、「1」の時系列データからなる距離列との間のダイナミックタイムワーピング距離を「2」と算出する。
【0149】
情報算出部27Aは、上記ダイナミックタイムワーピング距離の算出方法を用いて、リファレンス特徴量記憶部16Aに記憶されるリファレンス距離列のそれぞれと、特徴量記憶部26Aに記憶される距離列のそれぞれとの間のダイナミックタイムワーピング距離をそれぞれ算出し、算出したダイナミックタイムワーピング距離のうちの最も大きい値を、検知対象パケット列20の異常度として算出する。
【0150】
判定部28Aは、情報算出部27Aにより算出された、検知対象パケット列20の異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。そして、判定部28Aは、判定結果を外部に出力する。判定部28Aは、例えば、閾値を記憶し、検知対象パケット列20の異常度が閾値以上である場合に、検知対象パケット列20が異常であると判定し、検知対象パケット列20の異常度が閾値未満である場合に、検知対象パケット列20が異常でないと判定してもよい。また、判定部28Aは、第1プロファイル決定部11及び第2プロファイル決定部21の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列20から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【0151】
[2-2.動作]
上記構成の異常検知装置1Aは、実施の形態1に係る第1リファレンス特徴量抽出処理からその処理の一部が変更された第2リファレンス特徴量抽出処理と、実施の形態1に係る第1異常検知処理からその処理の一部が変更された第2異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【0152】
まず、第2リファレンス特徴量抽出処理について説明する。
【0153】
図19は、第2リファレンス特徴量抽出処理のフローチャートである。
【0154】
図19に示される各処理のうち、ステップS205の処理~ステップS245の処理、及びステップS255の処理は、それぞれ、実施の形態1に係る第1リファレンス特徴量抽出処理における、ステップS5の処理~ステップS45の処理、及びステップS55の処理(図15等参照)と同様の処理である。このため、ステップS205の処理~ステップS245の処理、及びステップS255の処理は既に説明であるとしてその詳細な説明を省略し、ステップS250の処理を中心に説明する。
【0155】
ステップS245の処理において、複数のリファレンス距離が算出されると、リファレンス特徴量抽出部15Aは、ウインドウ毎に、算出された複数のリファレンス距離からなるリファレンス距離列をリファレンス特徴量として抽出する(ステップS250)。そして、リファレンス特徴量記憶部16Aは、リファレンス特徴量抽出部15Aによってリファレンス特徴量として抽出されたリファレンス距離列を記憶する。
【0156】
ステップS250の処理が終了すると、第2リファレンス特徴量抽出処理は、ステップS255の処理に進む。
【0157】
次に、第2異常検知処理について説明する。
【0158】
図20は、第2異常検知処理のフローチャートである。
【0159】
図20に示される各処理のうち、ステップS305の処理~ステップS345の処理は、それぞれ、実施の形態1に係る第1異常検知処理における、ステップS105の処理~ステップS145の処理と同様の処理である。また、ステップS365の処理~ステップS375の処理は、それぞれ、実施の形態1に係る第1異常検知処理における、ステップS165の処理~ステップS175の処理に対して、判定部28を判定部28Aに読み替えた処理と同様の処理である。このため、ステップS305の処理~ステップS345の処理、及び、ステップS365の処理~ステップS375の処理は既に説明であるとしてその詳細な説明を省略し、ステップS350の処理~ステップS355の処理を中心に説明する。
【0160】
ステップS345の処理において、複数の距離が算出されると、特徴量抽出部25Aは、ウインドウ毎に、算出された複数の距離からなる距離列を特徴量として抽出する(ステップS350)。そして、特徴量記憶部26Aは、特徴量抽出部25Aによって特徴量として抽出された距離列を記憶する。
【0161】
距離列が抽出されると、情報算出部27は、抽出された距離列のそれぞれと、リファレンス特徴量記憶部16Aにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれとの間の、ダイナミックタイムワーピング距離のそれぞれを算出し、算出したダイナミックワーピング距離のそれぞれを利用して、検知対象パケット列20の異常の度合い示す異常度を算出する(ステップS355)。
【0162】
ステップS355の処理が終了すると、第2異常検知処理は、ステップS365の処理に進む。
【0163】
[2-3.考察]
上記構成の異常検知装置1Aは、第2リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群10から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置1Aは、第2異常検知処理を実行することで、検知対象パケット列20から、検知対象パケット列20のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。このように、異常検知装置1Aによると、実施の形態1に係る異常検知装置1と同様に、検知対象パケット列20の異常を検知することができる。
【0164】
(実施の形態3)
以下、実施の形態2に係る異常検知装置1Aから、その構成の一部が変更された実施の形態3に係る異常検知装置について説明する。
【0165】
[3-1.構成]
図21は、実施の形態3に係る異常検知装置1Bの構成を示すブロック図である。以下では、異常検知装置1Bについて、実施の形態2に係る異常検知装置1Aと同様の構成要素については、既に説明済みであるとして同じ符号を振ってその詳細な説明を省略し、異常検知装置1Aとの相違点を中心に説明する。
【0166】
図20に示されるように、異常検知装置1Bは、異常検知装置1Aから、情報算出部27Aが情報算出部27Bに変更され、判定部28Aが判定部28Bに変更され、カーネル算出部31と、カーネル記憶部32とが追加されて構成される。
【0167】
カーネル算出部31は、リファレンス特徴量記憶部16Aにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれを用いて、グローバルアラインメントカーネル(Global Alignment Kernel:非特許文献3参照)を算出する。カーネル算出部31は、例えば、リファレンス特徴量記憶部16Aに記憶されるリファレンス距離列のそれぞれを用いて、機械学習モデルであるone-class SVM(Support Vector Machine)に教師なし学習をさせて、グローバルアラインメントカーネルを算出するとしてもよい。
【0168】
カーネル記憶部32は、カーネル算出部31によって算出されたグローバルアラインメントカーネルを記憶する。
【0169】
情報算出部27Bは、特徴量記憶部26Aに、特徴量として記憶される距離列のそれぞれに対して、カーネル記憶部32に記憶されるグローバルアラインメントカーネルを適用することで、距離列のそれぞれに対して外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列20の異常度として算出する。
【0170】
判定部28Bは、情報算出部27Bにより算出された、検知対象パケット列20の異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。そして、判定部28Aは、判定結果を外部に出力する。判定部28Bは、例えば、閾値を記憶し、検知対象パケット列20の異常度が閾値以上である場合に、検知対象パケット列20が異常であると判定し、検知対象パケット列20の異常度が閾値未満である場合に、検知対象パケット列20が異常でないと判定してもよい。また、判定部28Bは、第1プロファイル決定部11及び第2プロファイル決定部21の決定対象となるプロファイル毎に、互いに独立した値となる閾値を記憶し、検知対象パケット列20から抽出された検知対象パケット列のプロファイルに応じて、そのプロファイルに対応する閾値を用いて上記判定を行うとしてもよい。
【0171】
[3-2.動作]
上記構成の異常検知装置1Bは、実施の形態2に係る第2リファレンス特徴量抽出処理からその処理の一部が変更された第3リファレンス特徴量抽出処理と、実施の形態2に係る第2異常検知処理からその処理の一部が変更された第3異常検知処理とを行う。以下、これらの処理について、図面を用いて順に説明する。
【0172】
まず、第3リファレンス特徴量抽出処理について説明する。
【0173】
図22は、第3リファレンス特徴量抽出処理のフローチャートである。
【0174】
図22に示される各処理のうち、ステップS405の処理~ステップS455の処理は、それぞれ、実施の形態2に係る第2リファレンス特徴量抽出処理における、ステップS205の処理~ステップS255の処理(図19等参照)と同様の処理である。このため、これらの処理は既に説明であるとしてその詳細な説明を省略し、ステップS460の処理を中心に説明する。
【0175】
ステップS455の処理において、未選択のリファレンスパケット列がない場合に(ステップS455:No)、カーネル算出部31は、リファレンス特徴量記憶部16Aにリファレンス特徴量として記憶されるリファレンス距離列のそれぞれを用いて、グローバルアラインメントカーネルを算出する(ステップS460)。そして、カーネル記憶部32は、カーネル算出部31によって算出されたグローバルアラインメントカーネルを記憶する。
【0176】
ステップS460の処理が終了すると、第3リファレンス特徴量抽出処理は、その処理を終了する。
【0177】
次に、第3異常検知処理について説明する。
【0178】
図23は、第3異常検知処理のフローチャートである。
【0179】
図23に示される各処理のうち、ステップS505の処理~ステップS550の処理は、それぞれ、実施の形態2係る第2異常検知処理における、ステップS305の処理~ステップS350の処理と同様の処理である。また、ステップS565の処理~ステップS575の処理は、それぞれ、実施の形態2係る第2異常検知処理における、ステップS365の処理~ステップS375の処理に対して、判定部28Aを判定部28Bに読み替えた処理と同様の処理である。このため、ステップS505の処理~ステップS550の処理、及び、ステップS565の処理~ステップ5375の処理は既に説明であるとしてその詳細な説明を省略し、ステップS555の処理を中心に説明する。
【0180】
ステップS550の処理において、距離列が特徴量として抽出されると、情報算出部27Bは、抽出された距離列のそれぞれに対して、カーネル記憶部32に記憶されるグローバルアラインメントカーネルを適用することで外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列20の異常度として算出する。
【0181】
ステップS555の処理が終了すると、第3異常検知処理は、ステップS565の処理に進む。
【0182】
[3-3.考察]
上記構成の異常検知装置1Bは、第3リファレンス特徴量抽出処理を実行することで、正常なパケット列からなるリファレンスパケット列群10から、正常なパケット列のコンテクストの特徴を、レファレンス特徴量として抽出して記憶する。そして、異常検知装置1Bは、第3異常検知処理を実行することで、検知対象パケット列20から、検知対象パケット列20のコンテクストの特徴を特徴量として抽出し、抽出した特徴量が記憶するレファレンス特徴量から逸脱している度合いを示す異常度を算出し、算出した異常度に基づいて、検知対象パケット列20が異常であるか否かを判定する。このように、異常検知装置1Bによると、実施の形態1に係る異常検知装置1、及び、実施の形態2に係る異常検知装置1Aと同様に、検知対象パケット列20の異常を検知することができる。
【0183】
(補足)
以上のように、本出願において開示する技術の例示として、実施の形態1~実施の形態3について説明した。しかしながら本開示による技術は、これらに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。
【0184】
以下に、本開示における変形例の一例について列記する。
【0185】
(1)実施の形態1において、リファレンスパケットデータ間距離算出部14は、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、N個離れたリファレンスパケット間のそれぞれに対して算出する構成の例であるとして説明した。これに対して、他の構成の例として、リファレンスパケットデータ間距離算出部14は、さらに、リファレンスパケットデータ列を構成する複数のリファレンスパケットデータ間の複数のリファレンス距離を、L(LはN以外の1以上の整数)個離れたリファレンスパケット間のそれぞれに対しても算出する構成の例も考えらえる。この場合、検知対象パケットデータ間距離算出部24は、上記他の構成の例のリファレンスパケットデータ間距離算出部14と同様のアルゴリズムで距離を算出する構成、すなわち、さらに、検知対象パケットデータ列を構成する複数の検知対象パケットデータ間の複数の距離を、L個離れたリファレンスパケット間のそれぞれに対しても算出する構成となる。
【0186】
(2)実施の形態1において、異常検知装置1は、判定部29が、検知対象パケット列20が異常であるか否かを判定し、その判定結果を外部に出力する構成の例であった。これに対して、他の構成の例として、異常検知装置1は、情報算出部27が、検知対象パケット列20の異常の度合いを示す異常度を算出し、算出した異常度を外部に出力する構成の例も考えられる。この場合、異常検知装置1は、判定部29を含まない構成であっても構わない。
【0187】
(3)実施の形態1において、異常検知装置1は、第1リファレンス特徴量抽出処理を実行することで、リファレンス特徴量を抽出し、抽出したリファレンス特徴量を、リファレンス特徴量抽出部15で記憶する構成の例であった。これに対して、他の構成の例として、異常検知装置1は、外部装置等で抽出されたリファレンス特徴量を外部から取得し、取得したリファレンス特徴量を、予めリファレンス特徴量記憶部16で記憶しておく構成の例も考えられる。この場合、異常検知装置1は、第1リファレンス特徴量抽出処理を行う必要はなく、第1プロファイル決定部11と、第1抽出部12と、リファレンスパケットデータ列群記憶部13と、リファレンスパケットデータ間距離算出部14と、リファレンス特徴量抽出部15とを含まない構成であっても構わない。また、他の構成の例として、異常検知装置1は、リファレンス特徴量記憶部16が予めリファレンス特徴量を記憶している状態で製造される構成の例も考えられる。この場合も、異常検知装置1は、第1リファレンス特徴量抽出処理を行う必要はなく、第1プロファイル決定部11と、第1抽出部12と、リファレンスパケットデータ列群記憶部13と、リファレンスパケットデータ間距離算出部14と、リファレンス特徴量抽出部15とを含まない構成であっても構わない。
【0188】
(4)実施の形態3において、異常検知装置1Bは、第3リファレンス特徴量抽出処理を実行することで、グローバルアラインメントカーネルを算出し、算出したグローバルアラインメントカーネルを、カーネル記憶部32で記憶する構成の例であった。これに対して、他の構成の例として、異常検知装置1Bは、外部装置等で抽出されたグローバルアラインメントカーネルを外部から取得し、取得したグローバルアラインメントカーネルを、予めカーネル記憶部32で記憶しておく構成の例も考えられる。この場合、異常検知装置1Bは、第3リファレンス特徴量抽出処理を行う必要はなく、第1プロファイル決定部11と、第1抽出部12と、リファレンスパケットデータ列群記憶部13と、リファレンスパケットデータ間距離算出部14と、リファレンス特徴量抽出部15Aと、リファレンス特徴量記憶部16Aと、カーネル算出部31とを含まない構成であっても構わない。また、他の構成の例として、異常検知装置1Bは、カーネル記憶部32が予めグローバルアラインメントカーネルを記憶している状態で製造される構成の例も考えられる。この場合も、異常検知装置1Bは、第3リファレンス特徴量抽出処理を行う必要はなく、第1プロファイル決定部11と、第1抽出部12と、リファレンスパケットデータ列群記憶部13と、リファレンスパケットデータ間距離算出部14と、リファレンス特徴量抽出部15Aと、リファレンス特徴量記憶部16Aと、カーネル算出部31とを含まない構成であっても構わない。
【0189】
(5)実施の形態3において、異常検知装置1Bは、情報算出部27Bが、特徴量として記憶される距離列のそれぞれに対して、カーネル記憶部32に記憶されるグローバルアラインメントカーネルを適用することで、距離列のそれぞれに対して外れ値を算出し、算出した外れ値のうちの最も大きい値を、検知対象パケット列20の異常度として算出する構成の例であった。これに対して、他の構成の例として、異常検知装置1Bは、情報算出部27Bが、距離列のそれぞれに対して、異常であるか否かの2値を示す外れ値を算出し、算出した外れ値の中に1つでも異常である旨の値を示す外れ値が存在する場合に、外部に、検知対象パケット列20が異常である旨の信号を出力する構成の例も考えられる。この場合、異常検知装置1Bは、判定部28Bを含まない構成であっても構わない。
【0190】
(6)実施の形態1において、異常検知装置1における各構成要素は、IC(Integrated Circuit)、LSI(Large Scale Integration)等の半導体装置により個別に1チップ化されてもよいし、一部又は全部を含むように1チップ化されてもよい。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。更には、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
【産業上の利用可能性】
【0191】
本開示は、パケットを利用するシステムに広く利用可能である。
【符号の説明】
【0192】
1、1A、1B 異常検知装置
10 リファレンスパケットデータ列群
11 第1プロファイル決定部
12 第1抽出部
13 リファレンスパケットデータ列群記憶部
14 リファレンスパケットデータ間距離算出部
15、15A リファレンス特徴量抽出部
16、16A リファレンス特徴量記憶部
20 検知対象パケット列
21 第2プロファイル決定部
22 第2抽出部
23 検知対象パケットデータ列記憶部
24 検知対象パケットデータ間距離算出部
25、25A 特徴量抽出部
26、26A 特徴量記憶部
27、27A、27B 情報算出部
28、28A、28B 判定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23