(A)第1の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第1の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
(A-1)第1の実施形態の構成
図1は、第1の実施形態に関係する各装置の全体構成について示したブロック図である。
異常検知装置1000は、ネットワークNの異常を検知する処理等を行う装置である。
第1の実施形態では、異常検知対象のネットワークNには、Proxy201、IDS202、Mailサーバ203、及びFW204を含むネットワーク装置(通信装置)が配置されており、それぞれのネットワーク装置で発生するログがデータプール部10に蓄積される構成となっているものとする。ネットワークNに配置されている通信装置の数や構成については限定されないものである。
データプール部10は、ネットワークN上の各ネットワーク装置(Proxy201、IDS202、Mailサーバ203、FW204、…)で発生したログを蓄積して、蓄積したログのデータを異常検知装置1000に供給する手段である。データプール部10の具体的な構成については限定されないものであるが、例えば、ログ収集装置として機能するコンピュータ(サーバ装置)等を適用することができる。以下では、Proxy201で発生するログをProxyログL-1と表し、IDS202で発生するログをIDSログL-2と表し、Mailサーバ203で発生するログをMailログL-3と表し、FW204で発生するログをFWログL-4と表すものとする。
次に、異常検知装置1000の内部構成について説明する。
図1に示すように、異常検知装置1000は、大別すると1段目システム1と2段目システム2を有している。
第1の実施形態では、プロセッサやメモリ等を有するコンピュータ上に実施形態に係る通信解析プログラム(1段目システム1及び2段目システム2に相当する処理を行うプログラム)をインストールすることにより実現することができる。
1段目システム1には、特徴量生成部20と、X個(Xは2以上の整数)の異常検知エンジン部30(30-1~30-X)が配置されている。
特徴量生成部20は、異常検知の解析対象となるログの条件が定義(1又は複数の項目の情報により定義)された情報(以下、「条件情報」と呼ぶ)が入力されると、その条件情報に基づいて、それぞれの異常検知エンジン部30の異常検知処理で必要となる情報(以下、「特徴量」とも呼ぶ)を生成(データプール部10から取得して生成)して、それぞれの異常検知エンジン部30に供給する。以下では、異常検知エンジン部30(30-1~30-X)に供給される特徴量を特徴量F(F-1~F-X)と表すものとする。
例えば、特徴量生成部20に各異常検知エンジン部30に対応するログ(サーバ)を設定しておき、特徴量生成部20がそれぞれの異常検知エンジン部30に対応するログで、かつ、供給された条件情報に該当するログをデータプール部10から取得することで特徴量Fを生成するようにしてもよい。具体的には、例えば、異常検知エンジン部30-1が、Proxy201から出力されるProxyログL-1を解析して異常度を判定する処理を行うものであれば、特徴量生成部20は、データプール部10のProxyログL-1から、条件情報に該当するログを抽出したものを特徴量F-1として、異常検知エンジン部30-1に供給する。
条件情報には、例えば、各ログを検索(各ログ内のレコードを検索)する際にキーとなる情報(以下、「キー情報」と呼ぶ)を含むようにしてもよい。キー情報には、例えば、IPアドレスや、FQDNや、ユーザID(例えば、認証処理に関するログに含まれるユーザIDを示す文字列)などの情報を含むようにしてもよい。キー情報に含む情報の項目の種類や数は限定されないものであるが、第1の実施形態の例では、キー情報にIPアドレス、FQDN、及びユーザIDの等の項目を設定可能であるものとして説明する。なお、条件情報を構成するキー情報に設定する情報の項目や種類は限定されないものである。例えば、条件情報を構成するキー情報に、IPアドレス、FQDN、及びユーザIDのうちから設定するようにしてもよい。条件情報を構成するキー情報は、1つだけ設定可能としてもよいし、複数設定可能とするようにしてもよい。また、条件情報を構成するキー情報には、同じ項目の情報を複数設定(例えば、複数のIPアドレスを設定)することが可能な構成としてもよい。特徴量生成部20は、キー情報に複数の項目が設定されている場合には、その複数の項目の両方が含まれるログ(ログを構成するレコード)を特徴量Fとして抽出するようにしてもよい。例えば、キー情報にIPアドレスとFQDNの対を設定することで、異常検知装置1000において、通信ペアの異常性判定等が可能となる。また、例えば、キー情報に、FQDNとユーザIDをキーとすることで、異常検知装置1000において、通常業務でアクセスしていない場所へのアクセス異常性判定などを行うことができる。
また、ここでは、条件情報に、データプール部10から取得するログの時間的範囲を定義した情報(以下、「ログ取得範囲情報」と呼ぶ)を設定するようにしてもよい。すなわち、特徴量生成部20は、ログ取得範囲情報に定義された期間のログから、キー情報に該当するログを取得する処理を行う。ログ取得時間情報には単純に、ログを取得する時刻の範囲の情報を設定するようにしてもよいし、繰り返しログを取得する際のパターン(以下、「繰り返しパターン」と呼ぶ)を示す情報を設定するようにしてもよい。第1の実施形態では、ログ取得時間情報には、繰り返しパターンが設定されるものとして説明する。具体的には、第1の実施形態では、ログ取得時間情報に、ログ取得の開始時間(以下、「Start-Time」とも表す)、及びログ取得の間隔(以下、「Time-Window」とも表す)が含まれるものとして説明する。したがって、キー情報を「key」と表すとすると、条件情報は、「(key,Start-Time,Time-Window)」という書式(フォーマット)で表すことができる。
以上のように、特徴量生成部20は、各異常検知エンジン部30に対して、各異常検知エンジン部30に対応するサーバのログから、供給された条件情報を構成するキー情報(key)及びログ取得範囲情報(Start-Time,Time-Window)に該当するログを抽出して、各異常検知エンジン部30に供給する特徴量Fを生成する。
例えば、条件情報のログ取得範囲情報で、Start-Timeとして時刻T、Time-WindowとしてW秒が指定された場合、特徴量生成部20は、時刻Tを起点としてW秒間隔でデータプール部10から、キー情報に該当するログを解析対象のログとして取得し、取得した解析対象のログを用いて特徴量Fを生成する。具体的には、例えば、条件情報のログ取得範囲情報で、Start-Timeとして時刻00:00:00(0時0分0秒)、Time-Windowとして60秒が指定された場合を想定する。この場合、特徴量生成部20は、時刻00:00:00~00:00:59の期間のログから、キー情報に該当するログを1回目の解析対象のログとして取得して特徴量Fを生成する。次に、特徴量生成部20は、時刻00:01:00~00:01:59の期間のログから、キー情報に該当するログを、2回目の解析対象のログとして取得して特徴量Fを生成する。特徴量生成部20は、以上のような処理で、特徴量Fの生成を繰り返すことになる。言い換えると、特徴量生成部20は、Start-Timeで指定された時刻から、Time-Windowで指定された間隔ごとに、直近の未処理の期間のログ(特徴量Fとして利用されていない期間のログ)からキー情報に該当するログを特徴量Fとして取得し、各異常検知エンジン部30に供給する。
一般的に、Proxyのログ(ログを構成する各レコード)には、HTTPのステータスコード(例えば、200、404等のコード)、サーバからの転送バイト数、サーバへの転送バイト数、HTTPメソッド名(例えば、GET, POSTなど)、プロトコル名(http, https, sslなど)、サーバのFQDN、サーバから取得するファイルパス、サーバに送信するQuery、リファラー、コンテンツタイプ、User Agent、サーバのIPアドレス、サーバのポート番号、ローカルのIPアドレス、ローカルポート番号、等の項目(カラム)のデータが含まれる。例えば、特徴量生成部20に供給されたキー情報としてIPアドレスと、FQDNが設定されていた場合、特徴量生成部20は、ProxyログL-1(ログ取得範囲情報で定義された期間のログ)から、キー情報のIPアドレス(文字列又は数値)及びFQDNが含まれるログ(ログを構成するレコード)を抽出し、抽出したログを特徴量F-1として異常検知エンジン部30-1に供給することになる。
次に、異常検知エンジン部30の構成について説明する。
異常検知エンジン部30は、特徴量生成部20から供給された特徴量F(例えば、ログの集合体)を分析して、異常の有無や異常の度合いを判断し、その判断結果を出力する。ここでは、各異常検知エンジン部30は、供給された特徴量Fに基づく異常の度合い(例えば、危険性や緊急性等の度合い)を示す値(以下、「異常度」と呼ぶ)を出力するものとして説明する。異常度は、大きな値ほど、異常の度合い(例えば、危険性や緊急性の度合い)が高いことを示すものとする。
異常検知エンジン部30が特徴量Fを用いて異常度を判断するアルゴリズムについては限定されないものである。異常検知エンジン部30は、例えば、特定の値(例えば、特定のイベントやエラー)の出現数や、統計的なはずれ値の出現数に応じて、異常度を判断するようにしてもよい。異常検知エンジン部30は、例えば、特徴量Fから特定のパラメータ(以下、「注目パラメータ」と呼ぶ)に対して統計的な外れ値を検出(統計的な外れ値を有するログのレコードを検出)して、検出した外れ値の数や外れ度合いに応じた値を異常度として出力するようにしてもよい。
例えば、異常検知エンジン部30-1が、ProxyログL-1(条件情報により絞り込まれたログ)に対して、「ローカルIPアドレス」毎の「サーバへの転送バイト数」という注目パラメータの外れ値に基づく異常度を検出するものとする。ここで、説明を簡易とするため、異常検知エンジン部30-1が検出する注目パラメータに関する箱ひげ図(図2参照)を想定する。ここでは、異常検知エンジン部30-1に、予め最大値max1及び最小値min1が設定されているものとする。また、異常検知エンジン部30-1において検出した任意の注目パラメータ値をVとする。
そして、ここでは、異常検知エンジン部30-1は、注目パラメータ値Vが最大値max1より大きな外れ値となる場合や、注目パラメータ値Vが最小値min1より小さい外れ値となる場合、その外れの度合い(max1又はmin1との差分)に応じた異常度を算出するものとする。具体的には、例えば、異常検知エンジン部30-1は、注目パラメータ値Vが外れ値(V>max1又はV<min1)であった場合、注目パラメータ値Vの外れ度合い(max1又はmin1との差分)に比例した値を異常度として算出(異常度に加算)するようにしてもよい。なお、異常検知エンジン部30-1は、注目パラメータ値Vが、「最大値max1よりも大きい分析最大値max2」よりもさらに大きい値だった場合は、注目パラメータ値Vを分析最大値max2(V=max2)であるものとして異常度の算出を行うものとする。また、異常検知エンジン部30-1は、注目パラメータ値Vが「最小値min1よりも小さい分析最小値min2」未満だった場合は、注目パラメータ値Vを分析最小値min2(V=min2)であるものとして異常度の算出を行うものとする。すなわち、異常検知エンジン部30-1は、分析最大値max2及び分析最小値min2を、注目パラメータ値Vの限度(外れ値の限度)として異常度の算出を行う。
そして、ここでは、異常検知エンジン部30-1は、注目パラメータ値Vが最大値max1より大きい外れ値の場合、分析最大値max2の異常度を100とし、分析最大値max2と注目パラメータ値Vの差分(V-max1)に比例した異常度Dを算出するものとする。例えば、異常検知エンジン部30-1は、注目パラメータ値Vが最大値max1より大きい場合、以下の(1)式のように注目パラメータ値Vに対応する異常度Dを算出することができる。
また、ここでは、異常検知エンジン部30-1は、注目パラメータ値Vが最小値min1より小さい外れ値の場合、分析最小値min2の異常度を100とし、分析最小値min2と注目パラメータ値Vの差分(min2-V)に比例した異常度Dを算出するものとする。例えば、異常検知エンジン部30-1は、注目パラメータ値Vが最小値min1小さい場合、以下の(2)式のように注目パラメータ値Vに対応する異常度Dを算出することができる。なお、異常検知エンジン部30-1は、注目パラメータ値Vが外れ値でない場合(最小値min1以上、最大値max1以下の場合)には、異常度を0と判定するようにしてもよい。
D={(V-max1)/(max2-max1)}・100 …(1)
D={(min1-V)/(min1-min2)}・100 …(2)
そして、異常検知エンジン部30-1は、特徴量生成部20から供給された特徴量F-1に含まれるログ(Proxy201のログ)において、「ローカルIPアドレス」毎の「サーバへの転送バイト数」(注目パラメータV)を集計し、各注目パラメータV(「ローカルIPアドレス」毎の「サーバへの転送バイト数」)について異常度の有無を検査し、異常度が発生した場合にはその異常度の累積値をカウントして最終的な異常度を検知結果として出力するものとする。例えば、異常検知エンジン部30-1は、特徴量生成部20から供給された特徴量F-1に含まれるログにおいて、4つの注目パラメータV(4つの「ローカルIPアドレス」の「サーバへの転送バイト数」)について異常(異常度Dが0より大きい;注目パラメータ値Vが外れ値)を検出し、その異常度の内訳が10、20、40、20だった場合、その合計値(累積値)である90を検知結果として出力することになる。
なお、以下では、異常検知エンジン部30-iが出力する検知結果を「検知結果R1-i」と表すものとする。例えば、異常検知エンジン部30-1の検知結果は、検知結果R1-1となる。
また、各異常検知エンジン部30において、最大値max1、最小値min1、分析最大値max2及び分析最小値min2については、固定値としてもよいし、オペレータ(例えば、ネットワーク管理者等)により任意の値を変更可能とするようにしてもよい。例えば、各異常検知エンジン部30には、異常が発生していない期間においてProxy201から取得したログにおける最大値及び最小値に基づいて、最大値max1及び最小値min1を設定するようにしてもよいし、異常が発生している期間においてProxy201から取得したログにおける最大値及び最小値に基づいて、分析最大値max2及び分析最小値min2を設定するようにしてもよい。
上記の例では、異常検知エンジン部30-1の注目パラメータを「ローカルIPアドレス」毎の「サーバへの転送バイト数」としたが、各異常検知エンジン部30における注目パラメータをその他のパラメータとしてもよいことは当然である。例えば、異常検知エンジン部30-1の注目パラメータを「ローカルIPアドレス」毎の「サーバへの転送バイト数」とし、異常検知エンジン部30-2の注目パラメータ「User Agent」の出現数とし、異常検知エンジン部30-2の注目パラメータを「サーバに送信するQuery」の長さとする等の組み合わせとしてもよい。
各異常検知エンジン部30は、検知結果Rとして、異常度(以下、「anomaly-degree」と呼ぶ)に、当該異常検知エンジン部30の識別子(以下、「engine-ID」と呼ぶ)、及び条件情報(key,Start-Time,Time-Window)が付加された内容を出力するものとする。以下では、異常検知エンジン部30-1~30-XのIDをそれぞれ1~Xと表すものとする。そうすると、異常検知エンジン部30の検知結果Rは、(key,Start-Time,Time-Window,engine-ID,anomaly-degree)という書式で表すことができる。なお、engine-IDには対応する異常検知エンジン部30のID(1~Xのいずれか)が設定されることになる。例えば、engine-ID=1の異常検知エンジン部30-1から出力される検知結果R-1は、(key,Start-Time,Time-Window,1,anomaly-degree)と表すことができる。
次に、2段目システム2の内部構成について説明する。
2段目システム2は、出力ベクトル部40、最終判定エンジン部50、及び原因ログ出力部60を有している。
出力ベクトル部40は、異常検知エンジン部30-1~30-Xの検知結果R1-1~R1-X(1段目システム1の出力結果)をまとめてX次元のベクトル形式に整形したデータ(以下、「特徴量ベクトル」と呼ぶ)R2を生成する。なお、出力ベクトル部40は、特徴量ベクトルR2を対応する条件情報(キー情報)ごとに管理するため、特徴量ベクトルR2に条件情報(キー情報)を付加する。
ここでは、例として、異常検知エンジン部30が出力する検知結果Rに含まれる異常度(検知結果)を、anomaly_degree(engine-ID)と表すものとする。そうすると、異常検知エンジン部30-1が出力する検知結果R-1に含まれる異常度(検知結果)は、例えば、anomaly_degree(1)と表すことができる。この場合、特徴量ベクトルR2は、例えば、「(key,Start-Time,Time-Window,anomaly-degree(1),anomaly-degree(2),…anomaly-degree(X))」と表すことができる。
最終判定エンジン部50は、特徴量ベクトルR2を特徴量として、最終的な異常検知の判定結果(以下、「最終判定結果R3」と呼ぶ)を出力する。
具体的には、最終判定エンジン部50は、特徴量ベクトルR2に対応する具体的な異常の内容(種類)を判定し、その判定結果(以下、「result」とも表す)を最終判定結果R3として出力する。なお、最終判定エンジン部50は、最終判定結果R3として、判定結果(result)に、条件情報「key,Start-Time,Time-Window」を付加した情報を出力するものとする。具体的には、最終判定エンジン部50は、最終判定結果R3として、(key,Start-Time,Time-Window,result)という書式の情報を出力するものとする。
ここでは、説明を簡易とするため、最終判定エンジン部50は、想定される異常(例えば、既知の攻撃状態や異常状態)の種類(内容)として、3種類の異常ab(ab1、ab2、ab3)の項目が設定されており、特徴量ベクトルR2に対応する異常の種類(ab1、ab2、ab3のいずれか)を特定し、最終判定結果R3として出力するものとする。
なお、最終判定エンジン部50で判定対象となる異常abの種類や数は限定されないものである。ここでは、最終判定エンジン部50が出力する最終判定結果R3には、3種類の異常ab1、ab2、ab3に対応するコード(例えば、ab1、ab2、ab3のいずれかのコード)を出力するものとして説明するが、具体的な異常の内容を示す名称(文字列)を出力する等、他の形式としてもよい。
最終判定エンジン部50は、例えば、図3に示すような特徴量ベクトルと正解となる異常の種類の組のリストを教師データ(学習データ)として用いて、特徴量ベクトルR2に応じた異常abを判定する処理を行うようにしてもよい。
図3に示すテーブルでは、3種類の異常ab1、ab2、ab3(正解)に対応する特徴量ベクトルR2(各異常検知エンジン部30の異常度のみ)が図示されている。図3では、1段目システム1に、5つの異常検知エンジン部30-1~30-5が含まれるとした場合(X=5とした場合)における特徴量ベクトルR2が図示されている。例えば、図3に図示された、異常ab1に対応する特徴量ベクトル(100,0,0,0,10)は、anomaly_degree(1)=100、anomaly_degree(2)=0、anomaly_degree(3)=0、anomaly_degree(4)=0、anomaly_degree(5)=10であることを示している。
最終判定エンジン部50は、例えば、図4に示すような多層のニューラルネットワーク500に相当する演算を行うことで、特徴量ベクトルR2に応じた異常の種類を判定するようにしてもよい。
ニューラルネットワーク500は、例えば図4で示すように5つの入力層のノードNI(NI-1~NI-5)(anomaly_degree(1)~anomaly_degree(5)の5つ)、3つの出力層のノードNO(NO-1~NO-3)(ab1~ab3の3つ)の構成となっている。また、ニューラルネットワーク500には、入力層と出力層との間に中間層の5ノードNM(NM-1~NM-5)が配置されている。なお、図4に示したニューラルネットワーク500の層の数及び層に含まれるノード数は限定されないものである。また、ニューラルネットワーク500において、入力層5ノード、出力層3ノードとした場合においても、中間層のノード数は限定されないものである。
図4に示すニューラルネットワーク500では、入力層のノードNI-1~NI-5に入力される各異常度(特徴量ベクトル)が、中間層のノードNM-1~NM-5で処理されて、出力層のノードNO-1~NO-3のそれぞれから各異常の種類(異常ab1~ab3)に対応する異常を評価する値(以下、「評価値」と呼ぶ)が出力される。
最終判定エンジン部50は、ニューラルネットワーク500の出力層において、最も強く反応した出力層のノードNO(一番大きな評価値を出力する出力層のノードNO)に対応する異常の種類を最終判定結果として出力する。例えば、図4に示すニューラルネットワーク500において、出力層のノードNO-1から出力される値が最も大きい場合、最終判定エンジン部50は、最終判定結果(最終判定結果R3のresult)として、出力層のノードNO-1に対応する異常ab1を出力する。なお、最終判定エンジン部50は、最終判定した異常に対応する評価値が閾値未満だった場合には、異常無を出力するようにしてもよい。
ニューラルネットワーク500においては、中間層のノードNM-1~NM-5では、図3に示すような教師データに基いてニューラルネットワーク500の入力と出力が対応されるように中間層がそれぞれの入出力パラメータを学習して調整し、教師データにおいて最も特徴量ベクトルR2と近い特徴量ベクトルが設定されている種類の異常(出力層のノードNO)に対して大きな評価値が出力されるように学習がなされているものとする。
すなわち、最終判定エンジン部50では、図3に示すような教師データを蓄積して図4に示すようなニューラルネットワーク500に学習させておき、学習したどの異常の種類(異常の種類に対応する特徴量ベクトル)に近いのかを判定して、判定結果を出力する処理を行う。
例えば、最終判定エンジン部50では、図3に示すような教師データを蓄積して、100、30、15、0、100)という特徴量ベクトルR2が供給されたとき、教師データで学習した異常(教師データにおいて異常に対応する特徴量ベクトル)のいずれと近いのかを判定し、結果として異常ab3を判定結果として出力する。
第1の実施形態では、最終判定エンジン部50はニューラルネットワークのモデルを用いて教師データを学習させた判断処理を行う例についてしめしたが、ニューラルネットワーク以外のその他の判断処理(例えば、その他の種類の人工知能処理)を適用するようにしてもよい。
以上のように、最終判定エンジン部50は、図3に示すような教師データを用いて学習し、学習内容に従って適切な最終判定結果を出力可能な学習器(例えば、図4に示すようなニューラルネットワーク500)を備えるようにしてもよい。なお、最終判定エンジン部50に適用する学習器(学習器のモデル)としては、図4に示すようなニューラルネットワーク500に限定されず、その他の処理構成(例えば、種々の人工知能(AI)の処理等)を適用することができる。
原因ログ出力部60は、最終判定エンジン部50で、所定の条件に該当する処理が行われた場合、当該所定の条件に該当する判定結果に関する情報(例えば、当該判定結果に対応する条件情報や特徴量F)を保持(記録)し、オペレータ(例えば、ネットワーク管理者等)の操作に応じて保持した情報を出力する。なお、原因ログ出力部60による出力形式は限定されないものである。原因ログ出力部60は、例えば、オペレータの操作(例えば、コマンドラインやGUIによる操作)に応じて、保持している情報をファイル(1又は複数のファイル)として所定の場所(例えば、図示しないハードディスクやネットワークドライブ上の所定のフォルダ等)に出力するようにしてもよい。
原因ログ出力部60で、最終判定エンジン部50の判定結果に関する情報を保持する条件については限定されないものであるが、例えば、判定処理の過程で、最も高い評価値が複数発生した場合、又は、最も高い評価値と差分が10%以下の差異しかない他の評価値を存在する場合等を条件としてもよい。
例えば、最終判定エンジン部50が、図3のような教師データを前提として最終判定を行う場合を想定する。この場合、最終判定エンジン部50において、異常ab1、ab2、ab3の評価値がそれぞれ「99、0、1」といった場合には、最終判定結果を異常abとすることには問題ないが、異常ab1、ab2、ab3の評価値がそれぞれ「30、28、32」となる場合には、最も高い異常ab1の評価値「30」に対して、差分が10%以下の評価値が2つ発生しているため、単純に評価値に基づいて異常ab1を最終判定結果とすることは望ましくない。したがって、原因ログ出力部60で判定結果に関する情報を保持した場合(所定の条件に該当した場合)には、最終判定エンジン部50は、その所定の条件に該当する判定結果を出力しない(例えば、異常無や判定不能等の結果を出力)するようにしてもよい。
すなわち、2段目システム2では、最終判定エンジン部50において判別の確度が低い結果に関しては出力せずに、原因ログ出力部60にプールし、後にオペレータの操作により、最終判定エンジン部50に適用する教師データ(学習データ)を追加するフィードバック処理を受け付けるようにしてもよい。
(A-2)第1の実施形態の動作
次に、以上のような構成を有する第1の実施形態の異常検知装置1000の動作(実施形態に係る通信解析方法)について説明する。
図5は、異常検知装置1000の全体の動作について示したフローチャートである。
まず、特徴量生成部20に異常検知の条件情報(key,Start-Time,Time-Window)が供給されたものとする(S101)。
次に、特徴量生成部20は、条件情報に基づき、異常検知エンジン部30ごとに対応するログをデータプール部10から取得し、取得したログを特徴量Fとして生成し(S102)、生成した特徴量Fをそれぞれの異常検知エンジン部30に供給する(S103)。
それぞれの異常検知エンジン部30が、供給された特徴量Fに対応する異常度を算出し、検知結果R(key,Start-Time,Time-Window,engine-ID,anomaly-degree)を出力する(S104)。
出力ベクトル部40が、各異常検知エンジン部30の出力(1段目システム1の出力)を集計し、条件情報ごとの検知結果を整形して特徴量ベクトルR2(key,Start-Time,Time-Window,anomaly-degree(1),anomaly-degree(2),…anomaly-degree(X))を生成する(S105)。出力ベクトル部40は、全ての異常検知エンジン部30からの検知結果R1の出力がなされるか、タイムアウトとなった場合(例えば、特徴量生成部20から各異常検知エンジン部30に特徴量Fが供給されてから所定のタイムアウト時間が経過した場合)に、その時点で取得した検知結果R1を用いて特徴量ベクトルR2を生成する。
次に、最終判定エンジン部50が、特徴量ベクトルR2(条件情報等の付加情報を除いた情報)に基づき、各異常(例えば、異常ab1~ab3)に対する評価値を算出し、算出した評価値に基づく判定結果(例えば、異常ab1~ab3又は異常無)を最終判定結果R3として出力する(S107)。
以上のように、異常検知装置1000は、最終判定結果R3を出力する処理を行う。
次に、異常検知装置1000(最終判定エンジン部50)に新たな教師データ(学習データ)をインプットする方式(学習のバリエーション)の例について説明する。なお、異常検知装置1000(最終判定エンジン部50)に新たな教師データ(学習データ)をインプットする方式については、以下の例に限定されないものである。
例えば、特徴量生成部20では、条件情報に正解となる判定結果(result)を付加した教師データに相当する情報(以下、「学習指示条件情報」とも呼ぶ)を受け付けることで、教師データのインプットを受け付けるようにしてもよい。
この場合、学習指示条件情報は、「(Key、Start-time、Time-Window、result)」という書式で表すことができる。
特徴量生成部20は、学習指示条件情報(条件情報に判定結果(result)が付加された情報)が供給されると、異常検知の処理と同様に、各異常検知エンジン部30に対して、条件情報(学習指示条件情報に含まれる条件情報)に該当する特徴量Fを生成する。そして、特徴量生成部20は、各異常検知エンジン部30に対して、特徴量Fに条件情報及び学習指示条件情報の判定結果(result)を付加した情報(以下、「学習指示特徴量」と呼ぶ)を生成して供給する。
各異常検知エンジン部30は、学習指示特徴量(特徴量Fに条件情報及びresultが付加された情報)が供給されると、異常検知の処理と同様に異常度を算出し、異常度に判定結果(result)及び条件情報を付加した情報(以下、「学習指示検知結果」と呼ぶ)を出力ベクトル部40に供給する。
出力ベクトル部40は、学習指示検知結果(特徴量Fに条件情報及びresultが付加された情報)が供給されると、条件情報ごとの学習指示検知結果を集計した結果の情報(以下、「学習指示ベクトル」と呼ぶ)を整形して最終判定エンジン部50に供給する。学習指示ベクトルには、条件情報(Key,Start-Time,Time-Window)、判定結果(result)、及び特徴量ベクトル(anomaly-degree(1),anomaly-degree(2),…anomaly-degree(X))が含まれる。
この場合、学習指示ベクトルは、「(Key,Start-Time,Time-Window,Result,anomaly-degree(1),anomaly-degree(2),…anomaly-degree(X))」という書式で表すことができる。
最終判定エンジン部50は、学習指示ベクトル(条件情報、判定結果、及び特徴量ベクトルが含まれた情報)が供給されると、当該学習指示ベクトルに含まれる判定結果と特徴量ベクトルを対とした教師データ(学習データ)を追加して再学習する処理を行う。最終判定エンジン部50には、過去に供給された学習指示ベクトル(又は、学習指示ベクトルに基づく教師データ)を保持しておき、新たに学習指示ベクトルが供給される度に再学習する処理を行うようにしてもよい。
異常検知装置1000では、例えば、オペレータに、原因ログ出力部60で保持された情報に基づいて学習指示条件情報を編集(例えば、テキストエディタ等のエディタや専用のGUI上で編集)させ、学習指示条件情報に入力させることができる。
なお、異常検知装置1000における学習処理の方式は上記の例に限定されないものである。例えば、最終判定エンジン部50が、直接オペレータから学習指示ベクトルの入力を受け付けるようにしてもよい。
(A-3)第1の実施形態の効果
第1の実施形態によれば、以下のような効果を奏することができる。
第1の実施形態の異常検知装置1000では、1段目システム1(特徴量生成部20)に解析のキーとなる条件情報(キー情報を含む情報)に基づいて、それぞれの異常検知エンジン部30で異常検知の対象となるログを含む特徴量Fを生成している。これにより、複数の異常検知エンジン部30の検知結果R1をIPアドレス以外の数値パラメータ(例えば、異常度)で出力させることができる。
また、第1の実施形態の異常検知装置1000では、2段目システム2の最終判定エンジン部50で、異常検知エンジン部30の検知結果R1を集計した特徴量ベクトルR2に基づき、ネットワークN上の異常の有無だけでなく、異常の内容の(例えば、攻撃なのか障害なのか等)の判定を行うことができる。最終判定エンジン部50では、過去の実績等に基づく教師データ(学習データ)で学習させた学習器(例えば、ニューラルネットワーク)を用いることで、特徴量ベクトルR2に対応する異常の内容を特定することができる。また、最終判定エンジン部50では、学習器に学習させる教師データを増やすことによって、異常の内容のさらに詳細の判定(例えば、攻撃なのか障害なのかだけではなく、攻撃の種別までの判定)を行うことができる。
さらに、異常検知装置1000では、オペレータに原因ログ出力部60に情報が保持された情報を提示することにより、オペレータに未知の事象(例えば、攻撃・異常など)の存在を認識させることができる。これにより、異常検知装置1000では、オペレータに対して、最終判定エンジン部50に学習させる教師データの更新(新たな教師データを追加)を支援することができる。
(B)第2の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第2の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
(B-1)第2の実施形態の構成
図6は、第2の実施形態に係る異常検知装置1000Aの全体構成を示すブロック図であり、上述の図1と同一部分又は対応部分には同一符号又は対応符号を付している。
第1の実施形態の2段目システム2では、全ての異常検知エンジン部30の結果がそろった後に、最終判定エンジン部50による判断処理を行う構成であった。しかし、異常検知エンジン部30のアルゴリズムによっては、リアルタイムに結果が出るものと、一定の時間が経過後にしか結果が出せないものがあり、最も検知結果の出力の遅い異常検知エンジン部30にあわせてしか2段目システム2の処理(判定処理)ができないという課題がある。具体的には、第1の実施形態の2段目システム2では、判定処理を行う対象のログ(特徴量ベクトルR2)の前のログまでの教師データに基づく学習結果を用いて判定処理する際にはリアルタイム性が高い一方、ある時間区間において、異常なログかどうかの判定をする際には、時間区間を閉じてから異常性の判定をするためにリアルタイム性が低いという問題がある。
以上のような問題に鑑みて、第2の実施形態の異常検知装置1000Aでは、検知処理(解析処理)が全て完了していないログについても、暫定的な判定結果と共に、そのログに関する検知処理の進捗度合についても出力する処理を行う。以下、異常検知装置1000Aの詳細構成について、第1の実施形態との差異を中心に説明する。
図6に示す通り、第2の実施形態の異常検知装置1000Aでは、1段目システム1及び2段目システム2が、1段目システム1A及び2段目システム2Aに置き換えられている点で第1の実施形態と異なっている。
1段目システム1Aでは、特徴量生成部20及び異常検知エンジン部30(30-1~30-X)が、特徴量生成部20A及び異常検知エンジン部30A(30A-1~30A-X)に置き換えられている点で第1の実施形態と異なっている。また、第2の実施形態の2段目システム2Aは、原因ログ出力部60、出力管理部70、データ進捗管理部80、判定エンジン部90、及び結果保持出力部100を有している。
特徴量生成部20Aは、第1の実施形態と比較し、異常検知処理の進捗を管理するための情報(付加情報)を特徴量Fに付加して出力する。具体的には、特徴量生成部20Aは、処理中のログの検知処理状況を管理するため、処理対象のログ(特徴量F)に、処理対象のログの時刻(例えば、特徴量生成部20Aが当該ログに係る特徴量Fを生成した時刻)、及び処理対象のログを識別するための識別情報(以下、「インデックス情報」と呼ぶ)を付与する。あるいは元のログにインデックス情報が付与されていても良い。そして、特徴量生成部20Aは、各ログに対応する特徴量Fに時刻及びインデックス情報を付加して、各異常検知エンジン部30Aに供給(出力)する。各ログ(特徴量F)に付与するインデックス情報の形式については限定されないものであるが、ログ(特徴量F)ごとにユニークなデータであればよい。例えば、各ログに対して付与する順序に応じたシリアル番号をインデックス情報としてもよいし、シリアル番号と付与された時刻の情報を組み合わせた文字列をインデックス情報としてもよい。この実施形態では、各ログに付与されるインデックス情報は、循環的に生成されるシリアル番号を示す文字列と、付与された時刻を示す文字列とを組み合わせた文字列を適用するものとする。例えば、あるログに付与された時刻が、2017年9月1日3時15分00秒(2017-09-01 03:15:00)で、当該ログに付与されたシリアル番号が64391290であった場合、当該ログのインデックス情報は、「LOG20170901031500_64391290」となるものとする。上述のインデックス情報において「LOG」はログのインデックス情報であることを示す文字列であり、「_」は時刻とシリアルナンバーを区切る文字である。
以上のように、2段目システム2Aでは、各異常検知エンジン部30Aから2段目システム2Aに供給される特徴量Fには、当該特徴量Fに対応するログの時刻(時系列を識別するための時刻情報)とインデックス情報(識別情報)が付加される。
各異常検知エンジン部30Aは、各ログ(特徴量F)について、検知処理を行って検知結果R1を出力する際に、当該ログ(特徴量F)に対応するインデックス情報及び時刻を付加する点で第1の実施形態と異なっている。
出力管理部70は、1段目システム1A(異常検知エンジン部30A-1~30A-X)から供給される検知結果R1(R1-1~R1-X)を、ログ(インデックス情報)ごとに集約して蓄積/管理する。具体的には、出力管理部70は、1段目システム1A(異常検知エンジン部30A-1~30A-X)から供給される検知結果R1(R1-1~R1-X)に基づいて図7に示すような管理情報(以下、「出力管理データ」と呼ぶ)を管理する処理を行う。
図7に示す出力管理データでは、1行で1つのログ(インデックス情報)に対応する検知結果に関する情報を示している。図7の出力管理データでは、ログごとにインデックス情報、時刻、及び異常検知エンジン部30Aごとの検知結果(engineIDごとのanomaly-degree;anomaly-degree(engine1),degree(engine2),・・・ degree(engineX))、異常検知エンジン部30Aごとの進捗管理フラグ(engineIDごとの処理状況を示すフラグ)、及び進捗率の情報(進捗情報)が管理されている。図7において、進捗率は、対応する異常検知エンジン部30Aの処理が未完了であることを示す「0」、又は、対応する異常検知エンジン部30Aの処理が完了していることを示す「1」が設定される。すなわち、進捗率は、対応するログに関する処理の進捗度合(1段目システム1Aにおける進捗度合)を示している。
なお、出力管理データにおいて各engineIDの検知結果は、初期には設定されていない状態(図7では「-」が表示された状態)となっている。出力管理部70は、あるログ(インデックス情報)のあるengineIDの検知結果R1が供給された場合、供給された検知結果R1に基づいて、当該ログ(インデックス情報)の当該engineIDに対応する検知結果の数値(当該検知結果R1に設定された検知結果の数値)を設定するとともに、当該検知結果に対応する進捗管理フラグを0から1に更新する。なお、異常検知エンジン部30Aとログの内容の組み合わせによっては、検知処理が行われないことや、異常なしと検知される場合もある。このような場合、検知結果R1として所定の値(例えば、「0」)が設定されるものとする。そして、出力管理部70は、検知結果R1に上述の所定の値(例えば、「0」)が設定されている場合、出力管理データの検知結果は初期状態のまま(具体的な数値を設定しない状態のまま)とし、進捗管理フラグのみを0に更新されるものとする。上述のように、出力管理データ上で、異常が検知された検知結果のデータのみに具体的な数値を設定することで、出力管理データで消費されるメモリ量等のリソースを抑制することができる。なお、出力管理データの全ての検知結果に、具体的な数値を設定するようにしてもよい。
ここでは、進捗率(以下、「P」とも表す)は、以下の(3)式のように求めるものとする。(3)式において、Eは、検知処理(解析処理)済みの異常検知エンジン部30Aの数(出力管理データにおいて進捗管理フラグが1となっているengineIDの数)を示している。また、(3)式においてXは異常検知エンジン部30Aの総数となる。例えば、X=10であり、あるログ(インデックス情報)について処理済みの異常検知エンジン部30Aの数が5の場合、当該ログに対応する進捗率Pは50%となる。
進捗率P= (E/X)×100[%] …(3)
データ進捗管理部80は、出力管理データの内容を参照(監視)し、ログ(インデックス情報)ごとに、進捗率を更新する処理を行う。データ進捗管理部80は、出力管理データ上で、進捗管理フラグの更新(0から1への更新)があった場合、当該ログに対応する進捗率を算出して更新(出力管理データ上で当該ログに対応する進捗率を更新)する処理を行う。
判定エンジン部90は、出力管理部70の出力管理データを参照し、ログ(インデックス情報)ごとに異常検知の判定結果(result)を求める。判定エンジン部90が、個々のログについて判定結果を求める方式は限定されないものであり、例えば、第1の実施形態と同様の方式を適用することができる。
また、判定エンジン部90は、進捗率が100%未満のログ(全ての異常検知エンジン部30Aについて処理が完了していないログ)も含めて判定結果を求める。具体的には、判定エンジン部90は、進捗率が100%未満のログの異常検知の判定については、既に処理が完了し出力されている検知結果(進捗管理フラグが1となっているengineIDの検知結果)のみを用いて、異常検知の判定結果(result)を求める。例えば、判定エンジン部90は、出力管理データを参照し、各ログについて、解析処理が完了している検知結果のみに基づく特徴量ベクトルを生成し、上述の図4に示すようなニューラルネットワーク500にその特徴量ベクトルを入力して得られる評価値に基づき、判定結果を求めるようにしてもよい。
判定エンジン部90は、各ログについて進捗率が更新される度に、判定結果(result)を求める。そして、判定エンジン部90は、各ログについて、判定結果と共に進捗率(当該判定結果を求める処理を行った際の進捗率)を結果保持出力部100に出力する。なお、第2の実施形態では、結果保持出力部100は、判定結果(result)として、判定した異常の種類に応じた異常度を示す数値(以下、「異常度値」と呼ぶ)を出力するものとする。例えば、結果保持出力部100では、検知する対象の異常の種類に応じた異常度値(数値)を定義した情報(テーブル)を保持しておき、当該情報に基づいて、異常の種類に応じた異常度値を判定結果(result)として出力するようにしてもよい。以下では、異常度値は1~100の100段階で表されるものとする。また、異常度値の値は大きいほど、対応する緊急度や重要度が大きいものとする。
結果保持出力部100は、判定エンジン部90から供給された判定結果(result)とその進捗率の情報を保持し、各ログについて最新の判定結果と共に、その判定結果に対応する進捗率の情報を出力する処理を行う。結果保持出力部100の出力手段や出力内容は限定されないものである。結果保持出力部100は、例えば、ディスプレイ等の表示装置に表示出力するようにしてもよいし、データ記録媒体に書き込むことにより出力(記録)するようにしてもよいし、通信によりデータ送信することで出力するようにしてもよい。
(B-2)第2の実施形態の動作
次に、以上のような構成を有する第2の実施形態の異常検知装置1000Aの動作を説明する。
以下では、第2の実施形態における異常検知装置1000Aの動作について第1の実施形態との差異を説明する。
第2の実施形態における1段目システム1Aの動作は、第1の実施形態とほぼ同様であるが、各特徴量F(各ログ)に時刻とインデックス情報が付加される点で異なっている。具体的には、第2の実施形態では、特徴量生成部20Aが、特徴量F(ログ)ごとに時刻とインデックス情報を付加し、各異常検知エンジン部30Aに供給する。
そして、各異常検知エンジン部30Aは、各ログ(特徴量F)について、検知処理を行って検知結果R1を出力する際に、各ログ(特徴量F)に対応するインデックス情報及び時刻を付加する。
1段目システム1A(異常検知エンジン部30A-1~30A-X)から出力された検知結果R1(R1-1~R1-X)は、2段目システム2Aの出力管理部70に供給される。出力管理部70は、供給された検知結果R1の内容を集計して出力管理データを更新する処理を行う。
そして、データ進捗管理部80は、進捗管理フラグの更新(0から1への更新)があった場合、当該ログに対応する進捗率を算出して更新(出力管理データ上で当該ログに対応する進捗率を更新)する処理を行う。
判定エンジン部90は、各ログについて進捗率が更新される度に、判定処理を行い、判定結果(result)を求める。そして、判定エンジン部90は、各ログについて、判定結果と共に、インデックス情報、時刻及び進捗率(当該判定結果を求める処理を行った際の出力管理データ上の進捗率)を結果保持出力部100に出力する。
結果保持出力部100は、判定エンジン部90から供給された判定結果(result)とその進捗率の情報を保持し、各ログについて最新の判定結果と共に、その判定結果に対応する進捗率の情報を出力する処理を行う。この実施形態では、結果保持出力部100は、時系列ごとの判定結果と進捗率をディスプレイに表示出力するものとして説明する。具体的には、結果保持出力部100は、図8に示すような構成の出力画面で、時系列ごとの判定結果と進捗率を表示出力するものとする。
結果保持出力部100は、判定エンジン部90から新しい判定結果が進捗率と共に供給される度に、最新に供給された判定結果と進捗率に基づいて、出力画面に表示される内容も更新する処理を行う。
図8に示す出力画面では、左から時系列順(特徴量Fに付加された時刻に基づく時系列順)に判定結果としての異常度値を視覚的に表示する画像D11と、同じく左から時系列順に画像D11の判定結果(異常度値)に対応する進捗率を視覚的に表示する画像D12が表示されている。
画像D11では、2017年9月16日の17:25から18:25までの期間について、1分刻みの異常度値を示している。画像D11に示す各点線で囲われたブロックは1分間の時間帯を表している。したがって、画像D11では時系列順に60個のブロックが並べて表示されている。そして、各ブロック内には、対応する時間帯で発生した異常度値を示す画像(例えば、異常度値に応じた色やパターン)が表示される。なお、1つのブロックに対応する時間帯で、判定エンジン部90により複数のログに対する判定結果が出力されている場合、その複数のログに対する判定結果(異常度値)のうち最も大きい値に基づく表示を行うようにしてもよい。
図8では、異常度値が0の時間帯(又は判定結果が取得されていない時間帯)のブロックには白色の画像を表示し、異常度が1~60の時間帯のブロックにはハッチ(斜線)の画像(パターン)を表示し、異常度が61~100の時間帯のブロックには黒色の画像を表示している。なお、異常度値に応じて各ブロックに表示する内容については、図8の内容に限定されないものである。例えば、異常度が61~100の時間帯のブロックについては赤色等の色で表示する等してもよい。
画像D12では、画像D11と同じスケールの時間軸で時間帯ごとの判定結果(異常度値)に対応する進捗率をグラフ形式(折れ線グラフ形式)で表示している。
(B-3)第2の実施形態の効果
第2の実施形態によれば、以下のような効果を奏することができる。
第2の実施形態の異常検知装置1000Aでは、出力管理データでログ毎に解析処理の進捗率を数値化して管理し、判定結果(result)に進捗率を付加して出力する。これにより、第2の実施形態の異常検知装置1000Aでは、任意のタイミングで判定処理を行っても、判定結果に進捗率の情報を付加して出力する。これにより、第2の実施形態の異常検知装置1000Aでは、リアルタイム性の高い判定結果の出力を行っても、それを参照するオペレータに対して有効な判定結果(オペレータが評価可能な判定結果)を提示することができる。第2の実施形態の異常検知装置1000Aでは、例えば、進捗率の低い判定結果は、少ない情報量に基づいた判定結果(少ない異常検知エンジン部30Aの検知結果に基づく判定結果)であるため信頼性が低く、進捗率の高い判定結果は、多い情報量に基づいた判定結果であるため信頼性が高いということをオペレータに対して提示することができる。
以上のように、第2の実施形態の異常検知装置1000Aでは、リアルタイムに(時系列に)判定結果(異常度値)の推移と共に、進捗率(各異常検知エンジン部30Aの処理状況)をオペレータに提示することができる。言い換えると、第2の実施形態の異常検知装置1000Aでは、オペレータに対して、リアルタイムに評価可能な判定結果を提示することができる。これにより、オペレータにとって分析するための優先付け等が可能になる。
(C)第3の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第3の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
(C-1)第3の実施形態の構成
図9は、第3の実施形態に係る異常検知装置1000Bの全体構成を示すブロック図であり、上述の図6と同一部分又は対応部分には同一符号又は対応符号を付している。
第1及び第2の実施形態の異常検知装置1000、1000Aでは、2段目システム2、2Aの判定結果に対してオペレータが正解データ(正解値)を与えることで機械学習による学習が可能になるシステムとして説明したが、正解データの追加による判定結果への影響(例えば、誤検知が減ったことや見落としが発生していないか等)をオペレータに認識させることができないという問題がある。そこで、第3の実施形態の異常検知装置1000Bでは、正解データの追加による判定結果の影響内容を出力することを可能としている。
以下、第3の実施形態の異常検知装置1000Bの具体的な構成例について第2の実施形態との差異を中心に説明する。
図9に示す通り、第3の実施形態の異常検知装置1000Bでは、2段目システム2Aが、2段目システム2Bに置き換えられている点で第2の実施形態と異なっている。
2段目システム2Bは、出力管理部70B、データ進捗管理部80、判定学習エンジン部110、差分保持出力部120、及び教師フィードバック部130を有している。
出力管理部70Bは、保持する出力管理データの構成の一部が第2の実施形態と異なっている。具体的には、図10に示すように、出力管理部70Bで保持する出力管理データでは、ログ(インデックス情報)ごとに、教師データに基づく正解値(正解データ;正解フラグ)のフィールドが付加されている点で第2の実施形態と異なっている。ログごとの正解値は、教師フィードバック部130により更新される。なお、出力管理データにおいて各ログの正解値は検知結果と同様に初期には設定されていない状態(図10では「-」が表示された状態)となっており、教師フィードバック部130の処理により具体的な数値(正解値)が設定されるものとする。
データ進捗管理部80は、第2の実施形態と同様に、出力管理部70Bの進捗率を更新する処理を行うものであるため、詳細な説明については省略する。
教師フィードバック部130は、オペレータから差分保持出力部120で保持される出力管理データの正解値の編集を受け付け、受け付けた正解値を差分保持出力部120の出力管理データに反映(更新)する処理を行う。教師フィードバック部130は、例えば、オペレータからログごとの正解値の入力受け付けを行うユーザインタフェースとして機能する。教師フィードバック部130は、例えば、図示しないディスプレイに、出力管理データを表示出力して、図示しないキーボードやタッチパネル等の入力装置を用いてログごとの正解値の入力受付を行うようにしてもよい。オペレータは、判定学習エンジン部110が出力する判定結果や、出力管理データの内容を利用して、判定結果を修正して学習させるべきログを見出し、必要に応じて正解値を入力することが可能となる。
判定学習エンジン部110は、出力管理部70Bの出力管理データを参照し、各ログについて進捗率が更新される度に、判定結果(result)を求める。そして、判定学習エンジン部110は、各ログについて、判定結果に、インデックス情報、時刻、及び進捗率を付加して、差分保持出力部120に供給する。
判定学習エンジン部110が、検知結果に基づいて判定結果(result)を求める処理については、例えば、第2の実施形態の判定エンジン部90と同様の処理を適用することができる。
また、第3の実施形態の判定学習エンジン部110では、第2の実施形態の差分保持出力部120と同様に、判定結果(result)として、判定した異常の種類に応じた異常度値(0~100のいずれか)を出力するものとして説明する。
さらに、判定学習エンジン部110は、任意のタイミング(例えば、予め設定された定期又は不定期のタイミング)で、出力管理データ上で正解値が設定されたログについてのみ、当該正解値(教師データ)に基づいて学習する学習処理(第1の実施形態の教師データに基づく学習処理と同様の処理)を行う。そして、判定学習エンジン部110は、その学習処理の後に、再度、出力管理データの各ログについて判定する処理(以下、「再判定処理」と呼ぶ)を行う。
差分保持出力部120は、判定学習エンジン部110から供給された判定結果に関する情報(以下、「判定結果保持データ」と呼ぶ)を保持し、保持している判定結果保持データに基づく出力を行う。
図11は、判定結果保持データの構成例について示した説明図である。
図11に示すように、差分保持出力部120は、ログ(インデックス情報)ごとに、最新に供給された判定結果(異常度値)を示す判定値と共に、再判定処理があった場合における学習処理前の判定結果と再判定処理による判定結果との差分を示す判定差分値を、判定結果保持データとして保持する。
差分保持出力部120は、例えば、進捗率が100%になった後に、同じログ(同じインデックス情報)に対応する判定結果(result;異常度値)が供給されると、当該判定結果(異常度値)を、学習処理に基づいて再判定処理された結果とみなし、再判定処理された判定結果(異常度値)と、それより前に保持している判定結果(異常度値)との差分を判定差分値として保持する。例えば、図11の判定結果保持データでは、「LOG20170901031600_64391291」のインデックス情報に対応する判定値が0で判定差分値は-40となっている。この場合、「LOG20170901031600_64391291」のインデックス情報に対応するログについて、当初(例えば、進捗率が100%になった時点)は判定結果(異常度値)として40が算出されたが、その後の学習処理に基づく再判定処理で0(異常なし)が算出されたことを示している。
(C-2)第3の実施形態の動作
次に、以上のような構成を有する第3の実施形態の異常検知装置1000Bの動作を説明する。
以下では、第3の実施形態における異常検知装置1000Bの動作について第2の実施形態との差異を説明する。
第3の実施形態における1段目システム1Aの動作は、第2の実施形態と同様であるので詳しい説明を省略する。
出力管理部70Bは、供給された検知結果R1に基づいて出力管理データを更新する処理を行う。そして、データ進捗管理部80は、あるログについて進捗管理の更新(0から1への更新)があった場合、当該ログに対応する進捗率を算出して更新(出力管理データ上で当該ログに対応する進捗率を更新)する処理を行う。
判定学習エンジン部110は、各ログについて進捗率が更新される度に、判定結果(result)を求める。そして、判定学習エンジン部110は、各ログについて、判定結果を求めると、その判定結果に、インデックス情報、時刻、及び進捗率を付加して、差分保持出力部120に供給する。
教師フィードバック部130は、差分保持出力部120で保持される出力管理データの正解値の編集を受け付け、受け付けた正解値を差分保持出力部120の出力管理データに反映(更新)する処理を行う。
そして、判定学習エンジン部110は、任意のタイミング(例えば、予め設定されたタイミングや新たに正解値が入力されたタイミング)で、出力管理データ上で正解値が設定されたログのみを抽出し、当該正解値に基づく学習処理を行う。そして、判定学習エンジン部110は、その学習処理の後に、再判定処理を行う。
差分保持出力部120は、判定学習エンジン部110から供給された判定結果に関する判定結果保持データを保持し、保持している判定結果保持データに基づく出力を行う。差分保持出力部120は、例えば、進捗率が100%になったログ(インデックス情報)に対応する判定結果(result;異常度値)が供給されると、当該判定結果(異常度値)を、学習処理に基づいて学習処理した後に再判定処理された結果とみなし、再判定処理された判定結果と共に、それより前に保持している判定結果との差分を判定差分値として保持する。
そして、差分保持出力部120は、各判定結果(result)とその判定結果に対応する判定差分値を出力する処理を行う。
この実施形態では、差分保持出力部120は、時系列ごとの判定結果(result)と判定差分値をディスプレイに表示出力するものとして説明する。具体的には、差分保持出力部120は、図12に示すような構成の出力画面で、時系列ごとの判定結果と判定差分値を表示出力するものとする。
差分保持出力部120は、判定エンジン部90から新しい判定結果が供給される度に、判定結果保持データを更新し、判定結果保持データの内容に変化があった場合、現状の判定結果保持データの内容に基づいて出力画面に表示する内容も更新する処理を行う。
図12に示す出力画面では、左から時系列順に判定結果としての異常度値を視覚的に表示する画像D21と、同じく左から時系列順に画像D21の判定結果(異常度値)に対応する判定差分値を視覚的に表示する画像D22が表示されている。
画像D21では、2017年9月16日の17:25から16:25までの期間について、1分刻みの異常度値を示している。画像D11に示す各点線で囲われたブロックは1分間の時間帯を表している。したがって、画像D11では時系列順に60個のブロックが並べて表示されている。そして、各ブロック内には、それぞれ対応する時間帯で発生した異常度値に対応する棒グラフが表示される。なお、異常度値に応じて各ブロックに表示する内容については、図12の内容に限定されないものである。例えば、上述の図8と同様に、ブロック内に表示する画像(例えば、パターンや色)に応じて異常度値を視覚的に表示するようにしてもよい。
図12に示す画像D22では、画像D21と同じスケールの時間軸で時間帯ごとの判定差分値を棒グラフで表示している。判定差分値は正だけでなく負となる場合もあるので、画像D22では、判定差分値について-100~+100の範囲で棒グラフを表示可能な構成となっているが、異常度の絶対値に応じて変動させてもよい。
(C-3)第3の実施形態の効果
第3の実施形態によれば、以下のような効果を奏することができる。
第3の実施形態の異常検知装置1000Bでは、教師フィードバック部130を用いて、出力管理データ上にログごとの正解値の入力受付を行い、入力された正解値に基づいて、判定学習エンジン部110が判定処理の学習処理をし直す再学習処理を行う。これにより、第3の実施形態の異常検知装置1000Bでは、判定処理を行いながら、最新のログに基づく学習内容を判定処理に反映できる。
また、第3の実施形態の異常検知装置1000Bでは、差分保持出力部120が、ログごとに判定結果(result)とその判定結果に対応する判定差分値を保持して出力する処理を行う。これにより、第3の実施形態の異常検知装置1000Bでは、再学習処理を行った際に、判定結果が好ましい結果に変化したかどうかを提示することができる。これにより、第3の実施形態の異常検知装置1000Bでは、再学習処理による学習内容が適切に反映されているかどうかをオペレータに視覚的に提示することができる。言い換えると、第3の実施形態の異常検知装置1000Bでは、再学習前後の判定結果を出力することで、判定結果が改善されて誤検知が減ったこと(誤検出が改善されたこと)や、見落としていた異常がなかったか等を数値としてオペレータに提示することができる。
(D)他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(D-1)上記の実施形態では、本発明の通信解析装置を異常検知装置に適用する例について説明したが、リアルタイムに繰り返し、最終判定エンジン部50による最終判定処理を行って最終判定結果R3を出力する監視装置として構成するようにしてもよい。
(D-2)第3の実施形態の異常検知装置1000Bにおいて、第2の実施形態と同様に、リアルタイムに(時系列に)、進捗率(各異常検知エンジン部30Aの処理状況)をオペレータに提示(例えば、上述の図8の画像D12を追加表示する)ようにしてもよい。