(57)【要約】【課題】  ネットワーク上の異常を検知した際に、その異常の内容についてまで判定可能な通信解析装置、通信解析プログラム、及び通信解析方法を提供する。【解決手段】  本発明は、通信解析装置に関する。そして、本発明の通信解析装置は、ネットワーク装置で発生した情報から、ネットワークの異常の度合を検知する複数の異常検知手段と、それぞれの異常検知手段について、ネットワーク装置で発生した情報からそれぞれの異常検知手段に供給する特徴量を生成する特徴量生成手段と、それぞれの異常検知手段が特徴量に基づいて検知した検知結果を集計した管理情報を管理する検知結果管理手段と、検知結果管理手段が管理する管理情報に基づき、ネットワークで発生した異常の内容を判定する判定処理を行う判定手段と判定処理の結果を示す判定結果情報を出力する出力手段とを有することを特徴とする。【選択図】      図１
2019080201.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知する複数の異常検知手段と、
それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成する特徴量生成手段と、
それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理する検知結果管理手段と、
前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行う判定手段と
前記判定手段の判定処理の結果を示す判定結果情報を出力する出力手段と
を有することを特徴とする通信解析装置。
【請求項２】
前記特徴量生成手段は、それぞれの前記特徴量に対して識別情報を生成して付加し、
前記検知結果管理手段は、前記識別情報ごとに、それぞれの前記異常検知手段の検知結果を集計する
ことを特徴とする請求項１に記載の通信解析装置。
【請求項３】
前記管理情報では、前記識別情報ごとに、それぞれの前記異常検知手段の検知処理の進捗状況を示す進捗情報が記録されており、
前記識別情報ごとに、それぞれの前記異常検知手段による検知処理の進捗状況を監視し、進捗状況が進んだ前記識別情報に対応する前記進捗情報を更新する進捗管理手段をさらに有し、
前記出力手段は、前記判定結果情報と共に前記進捗情報を出力すること
を特徴とする請求項２に記載の通信解析装置。
【請求項４】
前記管理情報では、前記識別情報ごとに、正解の判定結果を示す教師情報が記録可能であり、
入力された内容に基づいて、前記管理情報の教師情報を記録する教師情報入力手段をさらに備え、
前記判定手段は、前記管理情報に記録された教師情報に基づいて、判定処理に係る学習処理を行う
ことを特徴とする請求項２に記載の通信解析装置。
【請求項５】
前記判定手段は、学習処理を行った後に、前記管理情報に基づき、再度前記ネットワークで発生した異常の内容を判定する再判定処理を行い、
前記出力手段は、前記判定手段による前記再判定処理に基づく前記判定結果情報を出力すること
を特徴とする請求項４に記載の通信解析装置。
【請求項６】
前記出力手段は、前記判定手段で前記再判定処理が行われた場合、前記再判定処理に基づく前記判定結果情報とともに、前記再判定処理に基づく前記判定結果情報と、前記再判定処理の前に行った前記判定処理の前記判定結果情報との差分を示す判定差分情報を出力することを特徴とする請求項５に記載の通信解析装置。
【請求項７】
コンピュータを、
ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知する複数の異常検知手段と、
それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成する特徴量生成手段と、
それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理する検知結果管理手段と、
前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行う判定手段と
前記判定手段の判定処理の結果を示す判定結果情報を出力する出力手段と
して機能させることを特徴とする通信解析プログラム。
【請求項８】
通信解析装置が行う通信解析方法において、
前記通信解析装置は、複数の異常検知手段、特徴量生成手段、検知結果管理手段、判定手段、及び出力手段を有し、
それぞれの前記異常検知手段は、ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知し、
前記特徴量生成手段は、それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成し、
前記検知結果管理手段は、それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理し、
前記判定手段は、前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行い、
前記出力手段は、前記判定手段の判定処理の結果を示す判定結果情報を出力する
ことを特徴とする通信解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信解析装置、通信解析プログラム、及び通信解析方法に関し、例えば、ネットワーク上に配置されたネットワーク装置のログ等を解析してネットワークの異常の検知（監視）を行う異常検知装置に適用し得る。
【背景技術】
【０００２】
従来、ネットワーク上に配置されたネットワーク装置のログ等を監視して、ネットワーク上の異常（例えば、不正アクセスや攻撃的なアクセスやネットワーク障害）を検知する異常検知装置（監視装置）では、異常検知対象（監視対象）のネットワーク上に配置されたＰｒｏｘｙ（例えば、ネットワーク上に配置された端末やサーバとインターネットとの間の通信の中継に用いるＰｒｏｘｙ）のログ（以下、「Ｐｒｏｘｙログ」と呼ぶ）や、異常検知対象（監視対象）のネットワークの不正侵入を検知するＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ）システムのログ（以下、「ＩＤＳログ」とも呼ぶ）や、異常検知対象（監視対象）のネットワーク上に配置されたメールサーバ（例えば、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＩＭＡＰ（Ｉｎｔｅｒｎｅｔ  Ｍｅｓｓａｇｅ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、ＰＯＰ（Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ）等に対応したメールサーバ）のログ（以下、「ｍａｉｌログ」とも呼ぶ）や、異常検知対象（監視対象）のネットワーク上に配置されたＦＷ（Ｆｉｒｅ  Ｗａｌｌ）のログ（以下、「ＦＷログ」とも呼ぶ）等のセキュリティ関連のログ（以下、「セキュリティログ」とも呼ぶ）をプールするデータプール部と、データプール部が蓄積したセキュリティログを解析してネットワーク上の異常を検知する異常検知エンジンを複数備える。
【０００３】
そして、従来の異常検知装置が備える異常検知エンジンは、それぞれ、セキュリティログから所定の特徴量の取得を試み、取得した特徴量の内容に基づいて異常を検知する。従来の異常検知装置では、例えば、ＩＰアドレス単位に特徴量の取得を試み、異常を検知する。
【０００４】
また、従来の異常検知装置では、セキュリティログから、各異常検知エンジン部の解析で必要となる特徴量を生成（取得）する特徴量生成部を備えるものも存在する。従来の異常検知装置における特徴量生成部は、例えば、異常検知エンジン部に入力するために必要な統計値などの特徴量を生成する処理を行う。具体的には、従来の異常検知装置における特徴量生成エンジンは、例えば、外れ値検出や、閾値との比較等の統計的な処理を行い、それぞれのアルゴリズムに適したＩＰアドレスを、異常検知したＩＰアドレス（以下、「異常ＩＰ」とも呼ぶ）のリスト（以下、「異常ＩＰリスト」と呼ぶ）として出力する。
【０００５】
さらに、従来の異常検知装置では、各異常検知エンジン部から出力された異常ＩＰリストに基づいて異常ＩＰごとの緊急度を算出する緊急度算出部を備えるものも存在する。従来の異常検知装置における緊急度算出部は、例えば、複数の異常検知エンジン部で異常ＩＰと判断されたＩＰアドレスについてはより緊急度の高いＩＰアドレスと判断する。さらに、従来の異常検知装置における緊急度算出部は、例えば、ＤＢ（データベース）のような重要な装置が異常ＩＰと判断された場合には緊急度を上げる判断を行う。
【０００６】
また、従来の異常検知方法としては特許文献１に記載された方法も存在する。特許文献１には、ゲートウェイ上で監視対象のネットワークの全通信を観測するゲートウェイセンサと、監視対象のホストにはＷｅｂサイト閲覧ソフトによる通信を観測するホストセンサを用いた異常検知（マルウェアの感染の検知）方法について記載されている。そして、特許文献１に記載された異常検知方法では、ユーザ（監視対象のホスト）のウェブブラウジングのアクセス先の多様性の影響を除外することでホワイトリスト作成の困難さを軽減し、誤検知（ユーザビリティの低下）を抑えつつ高い検知率を実現している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−９９７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の異常検知装置では、以下のような課題が存在した。
【０００９】
従来の異常検知装置では、特定のＩＰアドレスが異常性の高い通信をしているということは認識できるが、どのような理由で異常性が高いと検出されたのか不明となる。
【００１０】
従来の異常検知装置を利用するオペレータ（例えば、ネットワーク管理者等）は、どの異常検知エンジンから出力されたのかによって、どういう異常かを経験的に推測することはできるが、オペレータ自身による解析作業が必要となる。
【００１１】
以上のような問題に鑑みて、ネットワーク上の異常を検知した際に、その異常の内容についてまで判定可能な通信解析装置、通信解析プログラム、及び通信解析方法が望まれている。
【課題を解決するための手段】
【００１２】
第１の本発明の通信解析装置は、（１）ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知する複数の異常検知手段と、（２）それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成する特徴量生成手段と、（３）それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理する検知結果管理手段と、（４）前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行う判定手段と（５）前記判定手段の判定処理の結果を示す判定結果情報を出力する出力手段とを有することを特徴とする。
【００１３】
第２の本発明の通信解析プログラムは、コンピュータを、（１）ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知する複数の異常検知手段と、（２）それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成する特徴量生成手段と、（３）それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理する検知結果管理手段と、（４）前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行う判定手段と（５）前記判定手段の判定処理の結果を示す判定結果情報を出力する出力手段として機能させることを特徴とする。
【００１４】
第３の本発明は、通信解析装置が行う通信解析方法において、（１）前記通信解析装置は、複数の異常検知手段、特徴量生成手段、検知結果管理手段、判定手段、及び出力手段を有し、（２）それぞれの前記異常検知手段は、ネットワーク上に配置されたネットワーク装置で発生した情報から、前記ネットワークの異常の度合を検知し、（３）前記特徴量生成手段は、それぞれの前記異常検知手段について、前記ネットワーク装置で発生した情報から、異常検知の対象となる条件情報に該当する解析対象情報を抽出し、抽出した解析対象情報に基づいて、それぞれの前記異常検知手段に供給する特徴量を生成し、（４）前記検知結果管理手段は、それぞれの前記異常検知手段が、前記特徴量生成手段が生成した特徴量に基づいて検知した検知結果を集計した管理情報を管理し、（５）前記判定手段は、前記検知結果管理手段が管理する管理情報に基づき、前記ネットワークで発生した異常の内容を判定する判定処理を行い、（６）前記出力手段は、前記判定手段の判定処理の結果を示す判定結果情報を出力することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ネットワーク上の異常を検知した際に、その異常の内容についてまで判定可能な通信解析装置、通信解析プログラム、及び通信解析方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施形態に係る異常検知装置の機能的構成について示したブロック図である。
【図２】第１の実施形態に係る異常検知エンジン部において外れ値に基づく検知結果（異常度）の算出方法の例について示した説明図である。
【図３】第１の実施形態に係る最終判定エンジン部で用いられる教師データ（学習データ）の例について示した説明図である。
【図４】第１の実施形態に係る最終判定エンジン部で用いられるニューラルネットワーク（学習器）の構成例について示した説明図である。
【図５】第１の実施形態に係る異常検知装置の動作の例について示したフローチャートである。
【図６】第２の実施形態に係る異常検知装置の機能的構成について示したブロック図である。
【図７】第２の実施形態に係る異常検知装置で管理される出力管理データについて示した説明図である。
【図８】第２の実施形態に係る異常検知装置で出力される出力画面の構成例について示した説明図である。
【図９】第３の実施形態に係る異常検知装置の機能的構成について示したブロック図である。
【図１０】第３の実施形態に係る異常検知装置で管理される出力管理データの構成例について示した説明図である。
【図１１】第３の実施形態に係る異常検知装置で管理される判定結果保持情報の構成例について示した説明図である。
【図１２】第３の実施形態に係る異常検知装置で出力される出力画面の構成例について示した説明図である。
【発明を実施するための形態】
【００１７】
（Ａ）第１の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第１の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
【００１８】
（Ａ−１）第１の実施形態の構成
図１は、第１の実施形態に関係する各装置の全体構成について示したブロック図である。
【００１９】
異常検知装置１０００は、ネットワークＮの異常を検知する処理等を行う装置である。
【００２０】
第１の実施形態では、異常検知対象のネットワークＮには、Ｐｒｏｘｙ２０１、ＩＤＳ２０２、Ｍａｉｌサーバ２０３、及びＦＷ２０４を含むネットワーク装置（通信装置）が配置されており、それぞれのネットワーク装置で発生するログがデータプール部１０に蓄積される構成となっているものとする。ネットワークＮに配置されている通信装置の数や構成については限定されないものである。
【００２１】
データプール部１０は、ネットワークＮ上の各ネットワーク装置（Ｐｒｏｘｙ２０１、ＩＤＳ２０２、Ｍａｉｌサーバ２０３、ＦＷ２０４、…）で発生したログを蓄積して、蓄積したログのデータを異常検知装置１０００に供給する手段である。データプール部１０の具体的な構成については限定されないものであるが、例えば、ログ収集装置として機能するコンピュータ（サーバ装置）等を適用することができる。以下では、Ｐｒｏｘｙ２０１で発生するログをＰｒｏｘｙログＬ−１と表し、ＩＤＳ２０２で発生するログをＩＤＳログＬ−２と表し、Ｍａｉｌサーバ２０３で発生するログをＭａｉｌログＬ−３と表し、ＦＷ２０４で発生するログをＦＷログＬ−４と表すものとする。
【００２２】
次に、異常検知装置１０００の内部構成について説明する。
【００２３】
図１に示すように、異常検知装置１０００は、大別すると１段目システム１と２段目システム２を有している。
【００２４】
第１の実施形態では、プロセッサやメモリ等を有するコンピュータ上に実施形態に係る通信解析プログラム（１段目システム１及び２段目システム２に相当する処理を行うプログラム）をインストールすることにより実現することができる。
【００２５】
１段目システム１には、特徴量生成部２０と、Ｘ個（Ｘは２以上の整数）の異常検知エンジン部３０（３０−１〜３０−Ｘ）が配置されている。
【００２６】
特徴量生成部２０は、異常検知の解析対象となるログの条件が定義（１又は複数の項目の情報により定義）された情報（以下、「条件情報」と呼ぶ）が入力されると、その条件情報に基づいて、それぞれの異常検知エンジン部３０の異常検知処理で必要となる情報（以下、「特徴量」とも呼ぶ）を生成（データプール部１０から取得して生成）して、それぞれの異常検知エンジン部３０に供給する。以下では、異常検知エンジン部３０（３０−１〜３０−Ｘ）に供給される特徴量を特徴量Ｆ（Ｆ−１〜Ｆ−Ｘ）と表すものとする。
【００２７】
例えば、特徴量生成部２０に各異常検知エンジン部３０に対応するログ（サーバ）を設定しておき、特徴量生成部２０がそれぞれの異常検知エンジン部３０に対応するログで、かつ、供給された条件情報に該当するログをデータプール部１０から取得することで特徴量Ｆを生成するようにしてもよい。具体的には、例えば、異常検知エンジン部３０−１が、Ｐｒｏｘｙ２０１から出力されるＰｒｏｘｙログＬ−１を解析して異常度を判定する処理を行うものであれば、特徴量生成部２０は、データプール部１０のＰｒｏｘｙログＬ−１から、条件情報に該当するログを抽出したものを特徴量Ｆ−１として、異常検知エンジン部３０−１に供給する。
【００２８】
条件情報には、例えば、各ログを検索（各ログ内のレコードを検索）する際にキーとなる情報（以下、「キー情報」と呼ぶ）を含むようにしてもよい。キー情報には、例えば、ＩＰアドレスや、ＦＱＤＮや、ユーザＩＤ（例えば、認証処理に関するログに含まれるユーザＩＤを示す文字列）などの情報を含むようにしてもよい。キー情報に含む情報の項目の種類や数は限定されないものであるが、第１の実施形態の例では、キー情報にＩＰアドレス、ＦＱＤＮ、及びユーザＩＤの等の項目を設定可能であるものとして説明する。なお、条件情報を構成するキー情報に設定する情報の項目や種類は限定されないものである。例えば、条件情報を構成するキー情報に、ＩＰアドレス、ＦＱＤＮ、及びユーザＩＤのうちから設定するようにしてもよい。条件情報を構成するキー情報は、１つだけ設定可能としてもよいし、複数設定可能とするようにしてもよい。また、条件情報を構成するキー情報には、同じ項目の情報を複数設定（例えば、複数のＩＰアドレスを設定）することが可能な構成としてもよい。特徴量生成部２０は、キー情報に複数の項目が設定されている場合には、その複数の項目の両方が含まれるログ（ログを構成するレコード）を特徴量Ｆとして抽出するようにしてもよい。例えば、キー情報にＩＰアドレスとＦＱＤＮの対を設定することで、異常検知装置１０００において、通信ペアの異常性判定等が可能となる。また、例えば、キー情報に、ＦＱＤＮとユーザＩＤをキーとすることで、異常検知装置１０００において、通常業務でアクセスしていない場所へのアクセス異常性判定などを行うことができる。
【００２９】
また、ここでは、条件情報に、データプール部１０から取得するログの時間的範囲を定義した情報（以下、「ログ取得範囲情報」と呼ぶ）を設定するようにしてもよい。すなわち、特徴量生成部２０は、ログ取得範囲情報に定義された期間のログから、キー情報に該当するログを取得する処理を行う。ログ取得時間情報には単純に、ログを取得する時刻の範囲の情報を設定するようにしてもよいし、繰り返しログを取得する際のパターン（以下、「繰り返しパターン」と呼ぶ）を示す情報を設定するようにしてもよい。第１の実施形態では、ログ取得時間情報には、繰り返しパターンが設定されるものとして説明する。具体的には、第１の実施形態では、ログ取得時間情報に、ログ取得の開始時間（以下、「Ｓｔａｒｔ−Ｔｉｍｅ」とも表す）、及びログ取得の間隔（以下、「Ｔｉｍｅ−Ｗｉｎｄｏｗ」とも表す）が含まれるものとして説明する。したがって、キー情報を「ｋｅｙ」と表すとすると、条件情報は、「(ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ)」という書式（フォーマット）で表すことができる。
【００３０】
以上のように、特徴量生成部２０は、各異常検知エンジン部３０に対して、各異常検知エンジン部３０に対応するサーバのログから、供給された条件情報を構成するキー情報（ｋｅｙ）及びログ取得範囲情報（Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ）に該当するログを抽出して、各異常検知エンジン部３０に供給する特徴量Ｆを生成する。
【００３１】
例えば、条件情報のログ取得範囲情報で、Ｓｔａｒｔ−Ｔｉｍｅとして時刻Ｔ、Ｔｉｍｅ−ＷｉｎｄｏｗとしてＷ秒が指定された場合、特徴量生成部２０は、時刻Ｔを起点としてＷ秒間隔でデータプール部１０から、キー情報に該当するログを解析対象のログとして取得し、取得した解析対象のログを用いて特徴量Ｆを生成する。具体的には、例えば、条件情報のログ取得範囲情報で、Ｓｔａｒｔ−Ｔｉｍｅとして時刻００：００：００（０時０分０秒）、Ｔｉｍｅ−Ｗｉｎｄｏｗとして６０秒が指定された場合を想定する。この場合、特徴量生成部２０は、時刻００：００：００〜００：００：５９の期間のログから、キー情報に該当するログを１回目の解析対象のログとして取得して特徴量Ｆを生成する。次に、特徴量生成部２０は、時刻００：０１：００〜００：０１：５９の期間のログから、キー情報に該当するログを、２回目の解析対象のログとして取得して特徴量Ｆを生成する。特徴量生成部２０は、以上のような処理で、特徴量Ｆの生成を繰り返すことになる。言い換えると、特徴量生成部２０は、Ｓｔａｒｔ−Ｔｉｍｅで指定された時刻から、Ｔｉｍｅ−Ｗｉｎｄｏｗで指定された間隔ごとに、直近の未処理の期間のログ（特徴量Ｆとして利用されていない期間のログ）からキー情報に該当するログを特徴量Ｆとして取得し、各異常検知エンジン部３０に供給する。
【００３２】
一般的に、Ｐｒｏｘｙのログ（ログを構成する各レコード）には、ＨＴＴＰのステータスコード（例えば、２００、４０４等のコード）、サーバからの転送バイト数、サーバへの転送バイト数、ＨＴＴＰメソッド名（例えば、ＧＥＴ，  ＰＯＳＴなど）、プロトコル名（ｈｔｔｐ，  ｈｔｔｐｓ，  ｓｓｌなど）、サーバのＦＱＤＮ、サーバから取得するファイルパス、サーバに送信するＱｕｅｒｙ、リファラー、コンテンツタイプ、Ｕｓｅｒ  Ａｇｅｎｔ、サーバのＩＰアドレス、サーバのポート番号、ローカルのＩＰアドレス、ローカルポート番号、等の項目（カラム）のデータが含まれる。例えば、特徴量生成部２０に供給されたキー情報としてＩＰアドレスと、ＦＱＤＮが設定されていた場合、特徴量生成部２０は、ＰｒｏｘｙログＬ−１（ログ取得範囲情報で定義された期間のログ）から、キー情報のＩＰアドレス（文字列又は数値）及びＦＱＤＮが含まれるログ（ログを構成するレコード）を抽出し、抽出したログを特徴量Ｆ−１として異常検知エンジン部３０−１に供給することになる。
【００３３】
次に、異常検知エンジン部３０の構成について説明する。
【００３４】
異常検知エンジン部３０は、特徴量生成部２０から供給された特徴量Ｆ（例えば、ログの集合体）を分析して、異常の有無や異常の度合いを判断し、その判断結果を出力する。ここでは、各異常検知エンジン部３０は、供給された特徴量Ｆに基づく異常の度合い（例えば、危険性や緊急性等の度合い）を示す値（以下、「異常度」と呼ぶ）を出力するものとして説明する。異常度は、大きな値ほど、異常の度合い（例えば、危険性や緊急性の度合い）が高いことを示すものとする。
【００３５】
異常検知エンジン部３０が特徴量Ｆを用いて異常度を判断するアルゴリズムについては限定されないものである。異常検知エンジン部３０は、例えば、特定の値（例えば、特定のイベントやエラー）の出現数や、統計的なはずれ値の出現数に応じて、異常度を判断するようにしてもよい。異常検知エンジン部３０は、例えば、特徴量Ｆから特定のパラメータ（以下、「注目パラメータ」と呼ぶ）に対して統計的な外れ値を検出（統計的な外れ値を有するログのレコードを検出）して、検出した外れ値の数や外れ度合いに応じた値を異常度として出力するようにしてもよい。
【００３６】
例えば、異常検知エンジン部３０−１が、ＰｒｏｘｙログＬ−１（条件情報により絞り込まれたログ）に対して、「ローカルＩＰアドレス」毎の「サーバへの転送バイト数」という注目パラメータの外れ値に基づく異常度を検出するものとする。ここで、説明を簡易とするため、異常検知エンジン部３０−１が検出する注目パラメータに関する箱ひげ図（図２参照）を想定する。ここでは、異常検知エンジン部３０−１に、予め最大値ｍａｘ１及び最小値ｍｉｎ１が設定されているものとする。また、異常検知エンジン部３０−１において検出した任意の注目パラメータ値をＶとする。
【００３７】
そして、ここでは、異常検知エンジン部３０−１は、注目パラメータ値Ｖが最大値ｍａｘ１より大きな外れ値となる場合や、注目パラメータ値Ｖが最小値ｍｉｎ１より小さい外れ値となる場合、その外れの度合い（ｍａｘ１又はｍｉｎ１との差分）に応じた異常度を算出するものとする。具体的には、例えば、異常検知エンジン部３０−１は、注目パラメータ値Ｖが外れ値（Ｖ＞ｍａｘ１又はＶ＜ｍｉｎ１）であった場合、注目パラメータ値Ｖの外れ度合い（ｍａｘ１又はｍｉｎ１との差分）に比例した値を異常度として算出（異常度に加算）するようにしてもよい。なお、異常検知エンジン部３０−１は、注目パラメータ値Ｖが、「最大値ｍａｘ１よりも大きい分析最大値ｍａｘ２」よりもさらに大きい値だった場合は、注目パラメータ値Ｖを分析最大値ｍａｘ２（Ｖ＝ｍａｘ２）であるものとして異常度の算出を行うものとする。また、異常検知エンジン部３０−１は、注目パラメータ値Ｖが「最小値ｍｉｎ１よりも小さい分析最小値ｍｉｎ２」未満だった場合は、注目パラメータ値Ｖを分析最小値ｍｉｎ２（Ｖ＝ｍｉｎ２）であるものとして異常度の算出を行うものとする。すなわち、異常検知エンジン部３０−１は、分析最大値ｍａｘ２及び分析最小値ｍｉｎ２を、注目パラメータ値Ｖの限度（外れ値の限度）として異常度の算出を行う。
【００３８】
そして、ここでは、異常検知エンジン部３０−１は、注目パラメータ値Ｖが最大値ｍａｘ１より大きい外れ値の場合、分析最大値ｍａｘ２の異常度を１００とし、分析最大値ｍａｘ２と注目パラメータ値Ｖの差分（Ｖ−ｍａｘ１）に比例した異常度Ｄを算出するものとする。例えば、異常検知エンジン部３０−１は、注目パラメータ値Ｖが最大値ｍａｘ１より大きい場合、以下の（１）式のように注目パラメータ値Ｖに対応する異常度Ｄを算出することができる。
【００３９】
また、ここでは、異常検知エンジン部３０−１は、注目パラメータ値Ｖが最小値ｍｉｎ１より小さい外れ値の場合、分析最小値ｍｉｎ２の異常度を１００とし、分析最小値ｍｉｎ２と注目パラメータ値Ｖの差分（ｍｉｎ２−Ｖ）に比例した異常度Ｄを算出するものとする。例えば、異常検知エンジン部３０−１は、注目パラメータ値Ｖが最小値ｍｉｎ１小さい場合、以下の（２）式のように注目パラメータ値Ｖに対応する異常度Ｄを算出することができる。なお、異常検知エンジン部３０−１は、注目パラメータ値Ｖが外れ値でない場合（最小値ｍｉｎ１以上、最大値ｍａｘ１以下の場合）には、異常度を０と判定するようにしてもよい。
Ｄ＝｛（Ｖ−ｍａｘ１）／（ｍａｘ２−ｍａｘ１）｝・１００  …（１）
Ｄ＝｛（ｍｉｎ１−Ｖ）／（ｍｉｎ１−ｍｉｎ２）｝・１００  …（２）
【００４０】
そして、異常検知エンジン部３０−１は、特徴量生成部２０から供給された特徴量Ｆ−１に含まれるログ（Ｐｒｏｘｙ２０１のログ）において、「ローカルＩＰアドレス」毎の「サーバへの転送バイト数」（注目パラメータＶ）を集計し、各注目パラメータＶ（「ローカルＩＰアドレス」毎の「サーバへの転送バイト数」）について異常度の有無を検査し、異常度が発生した場合にはその異常度の累積値をカウントして最終的な異常度を検知結果として出力するものとする。例えば、異常検知エンジン部３０−１は、特徴量生成部２０から供給された特徴量Ｆ−１に含まれるログにおいて、４つの注目パラメータＶ（４つの「ローカルＩＰアドレス」の「サーバへの転送バイト数」）について異常（異常度Ｄが０より大きい；注目パラメータ値Ｖが外れ値）を検出し、その異常度の内訳が１０、２０、４０、２０だった場合、その合計値（累積値）である９０を検知結果として出力することになる。
【００４１】
なお、以下では、異常検知エンジン部３０−ｉが出力する検知結果を「検知結果Ｒ１−ｉ」と表すものとする。例えば、異常検知エンジン部３０−１の検知結果は、検知結果Ｒ１−１となる。
【００４２】
また、各異常検知エンジン部３０において、最大値ｍａｘ１、最小値ｍｉｎ１、分析最大値ｍａｘ２及び分析最小値ｍｉｎ２については、固定値としてもよいし、オペレータ（例えば、ネットワーク管理者等）により任意の値を変更可能とするようにしてもよい。例えば、各異常検知エンジン部３０には、異常が発生していない期間においてＰｒｏｘｙ２０１から取得したログにおける最大値及び最小値に基づいて、最大値ｍａｘ１及び最小値ｍｉｎ１を設定するようにしてもよいし、異常が発生している期間においてＰｒｏｘｙ２０１から取得したログにおける最大値及び最小値に基づいて、分析最大値ｍａｘ２及び分析最小値ｍｉｎ２を設定するようにしてもよい。
【００４３】
上記の例では、異常検知エンジン部３０−１の注目パラメータを「ローカルＩＰアドレス」毎の「サーバへの転送バイト数」としたが、各異常検知エンジン部３０における注目パラメータをその他のパラメータとしてもよいことは当然である。例えば、異常検知エンジン部３０−１の注目パラメータを「ローカルＩＰアドレス」毎の「サーバへの転送バイト数」とし、異常検知エンジン部３０−２の注目パラメータ「Ｕｓｅｒ  Ａｇｅｎｔ」の出現数とし、異常検知エンジン部３０−２の注目パラメータを「サーバに送信するＱｕｅｒｙ」の長さとする等の組み合わせとしてもよい。
【００４４】
各異常検知エンジン部３０は、検知結果Ｒとして、異常度（以下、「ａｎｏｍａｌｙ−ｄｅｇｒｅｅ」と呼ぶ）に、当該異常検知エンジン部３０の識別子（以下、「ｅｎｇｉｎｅ−ＩＤ」と呼ぶ）、及び条件情報（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ）が付加された内容を出力するものとする。以下では、異常検知エンジン部３０−１〜３０−ＸのＩＤをそれぞれ１〜Ｘと表すものとする。そうすると、異常検知エンジン部３０の検知結果Ｒは、（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，ｅｎｇｉｎｅ−ＩＤ，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ)という書式で表すことができる。なお、ｅｎｇｉｎｅ−ＩＤには対応する異常検知エンジン部３０のＩＤ（１〜Ｘのいずれか）が設定されることになる。例えば、ｅｎｇｉｎｅ−ＩＤ＝１の異常検知エンジン部３０−１から出力される検知結果Ｒ−１は、（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，１，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ)と表すことができる。
【００４５】
次に、２段目システム２の内部構成について説明する。
【００４６】
２段目システム２は、出力ベクトル部４０、最終判定エンジン部５０、及び原因ログ出力部６０を有している。
【００４７】
出力ベクトル部４０は、異常検知エンジン部３０−１〜３０−Ｘの検知結果Ｒ１−１〜Ｒ１−Ｘ（１段目システム１の出力結果）をまとめてＸ次元のベクトル形式に整形したデータ（以下、「特徴量ベクトル」と呼ぶ）Ｒ２を生成する。なお、出力ベクトル部４０は、特徴量ベクトルＲ２を対応する条件情報（キー情報）ごとに管理するため、特徴量ベクトルＲ２に条件情報（キー情報）を付加する。
【００４８】
ここでは、例として、異常検知エンジン部３０が出力する検知結果Ｒに含まれる異常度（検知結果）を、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（ｅｎｇｉｎｅ−ＩＤ）と表すものとする。そうすると、異常検知エンジン部３０−１が出力する検知結果Ｒ−１に含まれる異常度（検知結果）は、例えば、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（１）と表すことができる。この場合、特徴量ベクトルＲ２は、例えば、「（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（１），ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（２），…ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（Ｘ））」と表すことができる。
【００４９】
最終判定エンジン部５０は、特徴量ベクトルＲ２を特徴量として、最終的な異常検知の判定結果（以下、「最終判定結果Ｒ３」と呼ぶ）を出力する。
【００５０】
具体的には、最終判定エンジン部５０は、特徴量ベクトルＲ２に対応する具体的な異常の内容（種類）を判定し、その判定結果（以下、「ｒｅｓｕｌｔ」とも表す）を最終判定結果Ｒ３として出力する。なお、最終判定エンジン部５０は、最終判定結果Ｒ３として、判定結果（ｒｅｓｕｌｔ）に、条件情報「ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ」を付加した情報を出力するものとする。具体的には、最終判定エンジン部５０は、最終判定結果Ｒ３として、（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，ｒｅｓｕｌｔ）という書式の情報を出力するものとする。
【００５１】
ここでは、説明を簡易とするため、最終判定エンジン部５０は、想定される異常（例えば、既知の攻撃状態や異常状態）の種類（内容）として、３種類の異常ａｂ（ａｂ１、ａｂ２、ａｂ３）の項目が設定されており、特徴量ベクトルＲ２に対応する異常の種類（ａｂ１、ａｂ２、ａｂ３のいずれか）を特定し、最終判定結果Ｒ３として出力するものとする。
【００５２】
なお、最終判定エンジン部５０で判定対象となる異常ａｂの種類や数は限定されないものである。ここでは、最終判定エンジン部５０が出力する最終判定結果Ｒ３には、３種類の異常ａｂ１、ａｂ２、ａｂ３に対応するコード（例えば、ａｂ１、ａｂ２、ａｂ３のいずれかのコード)を出力するものとして説明するが、具体的な異常の内容を示す名称（文字列）を出力する等、他の形式としてもよい。
【００５３】
最終判定エンジン部５０は、例えば、図３に示すような特徴量ベクトルと正解となる異常の種類の組のリストを教師データ（学習データ）として用いて、特徴量ベクトルＲ２に応じた異常ａｂを判定する処理を行うようにしてもよい。
【００５４】
図３に示すテーブルでは、３種類の異常ａｂ１、ａｂ２、ａｂ３（正解）に対応する特徴量ベクトルＲ２（各異常検知エンジン部３０の異常度のみ）が図示されている。図３では、１段目システム１に、５つの異常検知エンジン部３０−１〜３０−５が含まれるとした場合（Ｘ＝５とした場合）における特徴量ベクトルＲ２が図示されている。例えば、図３に図示された、異常ａｂ１に対応する特徴量ベクトル（１００，０，０，０，１０）は、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（１）＝１００、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（２）＝０、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（３）＝０、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（４）＝０、ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（５）＝１０であることを示している。
【００５５】
最終判定エンジン部５０は、例えば、図４に示すような多層のニューラルネットワーク５００に相当する演算を行うことで、特徴量ベクトルＲ２に応じた異常の種類を判定するようにしてもよい。
【００５６】
ニューラルネットワーク５００は、例えば図４で示すように５つの入力層のノードＮＩ（ＮＩ−１〜ＮＩ−５）（ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（１）〜ａｎｏｍａｌｙ＿ｄｅｇｒｅｅ（５）の５つ）、３つの出力層のノードＮＯ（ＮＯ−１〜ＮＯ−３）（ａｂ１〜ａｂ３の３つ）の構成となっている。また、ニューラルネットワーク５００には、入力層と出力層との間に中間層の５ノードＮＭ（ＮＭ−１〜ＮＭ−５）が配置されている。なお、図４に示したニューラルネットワーク５００の層の数及び層に含まれるノード数は限定されないものである。また、ニューラルネットワーク５００において、入力層５ノード、出力層３ノードとした場合においても、中間層のノード数は限定されないものである。
【００５７】
図４に示すニューラルネットワーク５００では、入力層のノードＮＩ−１〜ＮＩ−５に入力される各異常度（特徴量ベクトル）が、中間層のノードＮＭ−１〜ＮＭ−５で処理されて、出力層のノードＮＯ−１〜ＮＯ−３のそれぞれから各異常の種類（異常ａｂ１〜ａｂ３）に対応する異常を評価する値（以下、「評価値」と呼ぶ）が出力される。
【００５８】
最終判定エンジン部５０は、ニューラルネットワーク５００の出力層において、最も強く反応した出力層のノードＮＯ（一番大きな評価値を出力する出力層のノードＮＯ）に対応する異常の種類を最終判定結果として出力する。例えば、図４に示すニューラルネットワーク５００において、出力層のノードＮＯ−１から出力される値が最も大きい場合、最終判定エンジン部５０は、最終判定結果（最終判定結果Ｒ３のｒｅｓｕｌｔ）として、出力層のノードＮＯ−１に対応する異常ａｂ１を出力する。なお、最終判定エンジン部５０は、最終判定した異常に対応する評価値が閾値未満だった場合には、異常無を出力するようにしてもよい。
【００５９】
ニューラルネットワーク５００においては、中間層のノードＮＭ−１〜ＮＭ−５では、図３に示すような教師データに基いてニューラルネットワーク５００の入力と出力が対応されるように中間層がそれぞれの入出力パラメータを学習して調整し、教師データにおいて最も特徴量ベクトルＲ２と近い特徴量ベクトルが設定されている種類の異常（出力層のノードＮＯ）に対して大きな評価値が出力されるように学習がなされているものとする。
【００６０】
すなわち、最終判定エンジン部５０では、図３に示すような教師データを蓄積して図４に示すようなニューラルネットワーク５００に学習させておき、学習したどの異常の種類（異常の種類に対応する特徴量ベクトル）に近いのかを判定して、判定結果を出力する処理を行う。
【００６１】
例えば、最終判定エンジン部５０では、図３に示すような教師データを蓄積して、１００、３０、１５、０、１００）という特徴量ベクトルＲ２が供給されたとき、教師データで学習した異常（教師データにおいて異常に対応する特徴量ベクトル）のいずれと近いのかを判定し、結果として異常ａｂ３を判定結果として出力する。
【００６２】
第１の実施形態では、最終判定エンジン部５０はニューラルネットワークのモデルを用いて教師データを学習させた判断処理を行う例についてしめしたが、ニューラルネットワーク以外のその他の判断処理（例えば、その他の種類の人工知能処理）を適用するようにしてもよい。
【００６３】
以上のように、最終判定エンジン部５０は、図３に示すような教師データを用いて学習し、学習内容に従って適切な最終判定結果を出力可能な学習器（例えば、図４に示すようなニューラルネットワーク５００）を備えるようにしてもよい。なお、最終判定エンジン部５０に適用する学習器（学習器のモデル）としては、図４に示すようなニューラルネットワーク５００に限定されず、その他の処理構成(例えば、種々の人工知能（ＡＩ）の処理等)を適用することができる。
【００６４】
原因ログ出力部６０は、最終判定エンジン部５０で、所定の条件に該当する処理が行われた場合、当該所定の条件に該当する判定結果に関する情報（例えば、当該判定結果に対応する条件情報や特徴量Ｆ）を保持（記録）し、オペレータ（例えば、ネットワーク管理者等）の操作に応じて保持した情報を出力する。なお、原因ログ出力部６０による出力形式は限定されないものである。原因ログ出力部６０は、例えば、オペレータの操作（例えば、コマンドラインやＧＵＩによる操作）に応じて、保持している情報をファイル（１又は複数のファイル）として所定の場所（例えば、図示しないハードディスクやネットワークドライブ上の所定のフォルダ等）に出力するようにしてもよい。
【００６５】
原因ログ出力部６０で、最終判定エンジン部５０の判定結果に関する情報を保持する条件については限定されないものであるが、例えば、判定処理の過程で、最も高い評価値が複数発生した場合、又は、最も高い評価値と差分が１０％以下の差異しかない他の評価値を存在する場合等を条件としてもよい。
【００６６】
例えば、最終判定エンジン部５０が、図３のような教師データを前提として最終判定を行う場合を想定する。この場合、最終判定エンジン部５０において、異常ａｂ１、ａｂ２、ａｂ３の評価値がそれぞれ「９９、０、１」といった場合には、最終判定結果を異常ａｂとすることには問題ないが、異常ａｂ１、ａｂ２、ａｂ３の評価値がそれぞれ「３０、２８、３２」となる場合には、最も高い異常ａｂ１の評価値「３０」に対して、差分が１０％以下の評価値が２つ発生しているため、単純に評価値に基づいて異常ａｂ１を最終判定結果とすることは望ましくない。したがって、原因ログ出力部６０で判定結果に関する情報を保持した場合（所定の条件に該当した場合）には、最終判定エンジン部５０は、その所定の条件に該当する判定結果を出力しない（例えば、異常無や判定不能等の結果を出力）するようにしてもよい。
【００６７】
すなわち、２段目システム２では、最終判定エンジン部５０において判別の確度が低い結果に関しては出力せずに、原因ログ出力部６０にプールし、後にオペレータの操作により、最終判定エンジン部５０に適用する教師データ（学習データ）を追加するフィードバック処理を受け付けるようにしてもよい。
【００６８】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有する第１の実施形態の異常検知装置１０００の動作（実施形態に係る通信解析方法）について説明する。
【００６９】
図５は、異常検知装置１０００の全体の動作について示したフローチャートである。
【００７０】
まず、特徴量生成部２０に異常検知の条件情報(ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ)が供給されたものとする（Ｓ１０１）。
【００７１】
次に、特徴量生成部２０は、条件情報に基づき、異常検知エンジン部３０ごとに対応するログをデータプール部１０から取得し、取得したログを特徴量Ｆとして生成し（Ｓ１０２）、生成した特徴量Ｆをそれぞれの異常検知エンジン部３０に供給する（Ｓ１０３）。
【００７２】
それぞれの異常検知エンジン部３０が、供給された特徴量Ｆに対応する異常度を算出し、検知結果Ｒ（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，ｅｎｇｉｎｅ−ＩＤ，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ)を出力する（Ｓ１０４）。
【００７３】
出力ベクトル部４０が、各異常検知エンジン部３０の出力（１段目システム１の出力）を集計し、条件情報ごとの検知結果を整形して特徴量ベクトルＲ２（ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（１），ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（２），…ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（Ｘ））を生成する（Ｓ１０５）。出力ベクトル部４０は、全ての異常検知エンジン部３０からの検知結果Ｒ１の出力がなされるか、タイムアウトとなった場合（例えば、特徴量生成部２０から各異常検知エンジン部３０に特徴量Ｆが供給されてから所定のタイムアウト時間が経過した場合）に、その時点で取得した検知結果Ｒ１を用いて特徴量ベクトルＲ２を生成する。
【００７４】
次に、最終判定エンジン部５０が、特徴量ベクトルＲ２（条件情報等の付加情報を除いた情報）に基づき、各異常（例えば、異常ａｂ１〜ａｂ３）に対する評価値を算出し、算出した評価値に基づく判定結果（例えば、異常ａｂ１〜ａｂ３又は異常無）を最終判定結果Ｒ３として出力する（Ｓ１０７）。
【００７５】
以上のように、異常検知装置１０００は、最終判定結果Ｒ３を出力する処理を行う。
【００７６】
次に、異常検知装置１０００（最終判定エンジン部５０）に新たな教師データ（学習データ）をインプットする方式（学習のバリエーション）の例について説明する。なお、異常検知装置１０００（最終判定エンジン部５０）に新たな教師データ（学習データ）をインプットする方式については、以下の例に限定されないものである。
【００７７】
例えば、特徴量生成部２０では、条件情報に正解となる判定結果（ｒｅｓｕｌｔ）を付加した教師データに相当する情報（以下、「学習指示条件情報」とも呼ぶ）を受け付けることで、教師データのインプットを受け付けるようにしてもよい。
【００７８】
この場合、学習指示条件情報は、「（Ｋｅｙ、Ｓｔａｒｔ−ｔｉｍｅ、Ｔｉｍｅ−Ｗｉｎｄｏｗ、ｒｅｓｕｌｔ）」という書式で表すことができる。
【００７９】
特徴量生成部２０は、学習指示条件情報（条件情報に判定結果（ｒｅｓｕｌｔ）が付加された情報）が供給されると、異常検知の処理と同様に、各異常検知エンジン部３０に対して、条件情報（学習指示条件情報に含まれる条件情報）に該当する特徴量Ｆを生成する。そして、特徴量生成部２０は、各異常検知エンジン部３０に対して、特徴量Ｆに条件情報及び学習指示条件情報の判定結果（ｒｅｓｕｌｔ）を付加した情報（以下、「学習指示特徴量」と呼ぶ）を生成して供給する。
【００８０】
各異常検知エンジン部３０は、学習指示特徴量（特徴量Ｆに条件情報及びｒｅｓｕｌｔが付加された情報）が供給されると、異常検知の処理と同様に異常度を算出し、異常度に判定結果（ｒｅｓｕｌｔ）及び条件情報を付加した情報（以下、「学習指示検知結果」と呼ぶ）を出力ベクトル部４０に供給する。
【００８１】
出力ベクトル部４０は、学習指示検知結果（特徴量Ｆに条件情報及びｒｅｓｕｌｔが付加された情報）が供給されると、条件情報ごとの学習指示検知結果を集計した結果の情報（以下、「学習指示ベクトル」と呼ぶ）を整形して最終判定エンジン部５０に供給する。学習指示ベクトルには、条件情報（Ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ）、判定結果（ｒｅｓｕｌｔ）、及び特徴量ベクトル（ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（１），ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（２），…ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（Ｘ））が含まれる。
【００８２】
この場合、学習指示ベクトルは、「（Ｋｅｙ，Ｓｔａｒｔ−Ｔｉｍｅ，Ｔｉｍｅ−Ｗｉｎｄｏｗ，Ｒｅｓｕｌｔ，ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（１），ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（２），…ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（Ｘ））」という書式で表すことができる。
【００８３】
最終判定エンジン部５０は、学習指示ベクトル（条件情報、判定結果、及び特徴量ベクトルが含まれた情報）が供給されると、当該学習指示ベクトルに含まれる判定結果と特徴量ベクトルを対とした教師データ（学習データ）を追加して再学習する処理を行う。最終判定エンジン部５０には、過去に供給された学習指示ベクトル（又は、学習指示ベクトルに基づく教師データ）を保持しておき、新たに学習指示ベクトルが供給される度に再学習する処理を行うようにしてもよい。
【００８４】
異常検知装置１０００では、例えば、オペレータに、原因ログ出力部６０で保持された情報に基づいて学習指示条件情報を編集（例えば、テキストエディタ等のエディタや専用のＧＵＩ上で編集）させ、学習指示条件情報に入力させることができる。
【００８５】
なお、異常検知装置１０００における学習処理の方式は上記の例に限定されないものである。例えば、最終判定エンジン部５０が、直接オペレータから学習指示ベクトルの入力を受け付けるようにしてもよい。
【００８６】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、以下のような効果を奏することができる。
【００８７】
第１の実施形態の異常検知装置１０００では、１段目システム１（特徴量生成部２０）に解析のキーとなる条件情報（キー情報を含む情報）に基づいて、それぞれの異常検知エンジン部３０で異常検知の対象となるログを含む特徴量Ｆを生成している。これにより、複数の異常検知エンジン部３０の検知結果Ｒ１をＩＰアドレス以外の数値パラメータ（例えば、異常度）で出力させることができる。
【００８８】
また、第１の実施形態の異常検知装置１０００では、２段目システム２の最終判定エンジン部５０で、異常検知エンジン部３０の検知結果Ｒ１を集計した特徴量ベクトルＲ２に基づき、ネットワークＮ上の異常の有無だけでなく、異常の内容の（例えば、攻撃なのか障害なのか等）の判定を行うことができる。最終判定エンジン部５０では、過去の実績等に基づく教師データ（学習データ）で学習させた学習器（例えば、ニューラルネットワーク）を用いることで、特徴量ベクトルＲ２に対応する異常の内容を特定することができる。また、最終判定エンジン部５０では、学習器に学習させる教師データを増やすことによって、異常の内容のさらに詳細の判定（例えば、攻撃なのか障害なのかだけではなく、攻撃の種別までの判定）を行うことができる。
【００８９】
さらに、異常検知装置１０００では、オペレータに原因ログ出力部６０に情報が保持された情報を提示することにより、オペレータに未知の事象（例えば、攻撃・異常など）の存在を認識させることができる。これにより、異常検知装置１０００では、オペレータに対して、最終判定エンジン部５０に学習させる教師データの更新（新たな教師データを追加）を支援することができる。
【００９０】
（Ｂ）第２の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第２の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
【００９１】
（Ｂ−１）第２の実施形態の構成
図６は、第２の実施形態に係る異常検知装置１０００Ａの全体構成を示すブロック図であり、上述の図１と同一部分又は対応部分には同一符号又は対応符号を付している。
【００９２】
第１の実施形態の２段目システム２では、全ての異常検知エンジン部３０の結果がそろった後に、最終判定エンジン部５０による判断処理を行う構成であった。しかし、異常検知エンジン部３０のアルゴリズムによっては、リアルタイムに結果が出るものと、一定の時間が経過後にしか結果が出せないものがあり、最も検知結果の出力の遅い異常検知エンジン部３０にあわせてしか２段目システム２の処理（判定処理）ができないという課題がある。具体的には、第１の実施形態の２段目システム２では、判定処理を行う対象のログ（特徴量ベクトルＲ２）の前のログまでの教師データに基づく学習結果を用いて判定処理する際にはリアルタイム性が高い一方、ある時間区間において、異常なログかどうかの判定をする際には、時間区間を閉じてから異常性の判定をするためにリアルタイム性が低いという問題がある。
【００９３】
以上のような問題に鑑みて、第２の実施形態の異常検知装置１０００Ａでは、検知処理（解析処理）が全て完了していないログについても、暫定的な判定結果と共に、そのログに関する検知処理の進捗度合についても出力する処理を行う。以下、異常検知装置１０００Ａの詳細構成について、第１の実施形態との差異を中心に説明する。
【００９４】
図６に示す通り、第２の実施形態の異常検知装置１０００Ａでは、１段目システム１及び２段目システム２が、１段目システム１Ａ及び２段目システム２Ａに置き換えられている点で第１の実施形態と異なっている。
【００９５】
１段目システム１Ａでは、特徴量生成部２０及び異常検知エンジン部３０（３０−１〜３０−Ｘ）が、特徴量生成部２０Ａ及び異常検知エンジン部３０Ａ（３０Ａ−１〜３０Ａ−Ｘ）に置き換えられている点で第１の実施形態と異なっている。また、第２の実施形態の２段目システム２Ａは、原因ログ出力部６０、出力管理部７０、データ進捗管理部８０、判定エンジン部９０、及び結果保持出力部１００を有している。
【００９６】
特徴量生成部２０Ａは、第１の実施形態と比較し、異常検知処理の進捗を管理するための情報（付加情報）を特徴量Ｆに付加して出力する。具体的には、特徴量生成部２０Ａは、処理中のログの検知処理状況を管理するため、処理対象のログ（特徴量Ｆ）に、処理対象のログの時刻（例えば、特徴量生成部２０Ａが当該ログに係る特徴量Ｆを生成した時刻）、及び処理対象のログを識別するための識別情報（以下、「インデックス情報」と呼ぶ）を付与する。あるいは元のログにインデックス情報が付与されていても良い。そして、特徴量生成部２０Ａは、各ログに対応する特徴量Ｆに時刻及びインデックス情報を付加して、各異常検知エンジン部３０Ａに供給（出力）する。各ログ（特徴量Ｆ）に付与するインデックス情報の形式については限定されないものであるが、ログ（特徴量Ｆ）ごとにユニークなデータであればよい。例えば、各ログに対して付与する順序に応じたシリアル番号をインデックス情報としてもよいし、シリアル番号と付与された時刻の情報を組み合わせた文字列をインデックス情報としてもよい。この実施形態では、各ログに付与されるインデックス情報は、循環的に生成されるシリアル番号を示す文字列と、付与された時刻を示す文字列とを組み合わせた文字列を適用するものとする。例えば、あるログに付与された時刻が、２０１７年９月１日３時１５分００秒（２０１７−０９−０１  ０３：１５：００）で、当該ログに付与されたシリアル番号が６４３９１２９０であった場合、当該ログのインデックス情報は、「ＬＯＧ２０１７０９０１０３１５００＿６４３９１２９０」となるものとする。上述のインデックス情報において「ＬＯＧ」はログのインデックス情報であることを示す文字列であり、「＿」は時刻とシリアルナンバーを区切る文字である。
【００９７】
以上のように、２段目システム２Ａでは、各異常検知エンジン部３０Ａから２段目システム２Ａに供給される特徴量Ｆには、当該特徴量Ｆに対応するログの時刻（時系列を識別するための時刻情報）とインデックス情報（識別情報）が付加される。
【００９８】
各異常検知エンジン部３０Ａは、各ログ（特徴量Ｆ）について、検知処理を行って検知結果Ｒ１を出力する際に、当該ログ（特徴量Ｆ）に対応するインデックス情報及び時刻を付加する点で第１の実施形態と異なっている。
【００９９】
出力管理部７０は、１段目システム１Ａ（異常検知エンジン部３０Ａ−１〜３０Ａ−Ｘ）から供給される検知結果Ｒ１（Ｒ１−１〜Ｒ１−Ｘ）を、ログ（インデックス情報）ごとに集約して蓄積／管理する。具体的には、出力管理部７０は、１段目システム１Ａ（異常検知エンジン部３０Ａ−１〜３０Ａ−Ｘ）から供給される検知結果Ｒ１（Ｒ１−１〜Ｒ１−Ｘ）に基づいて図７に示すような管理情報（以下、「出力管理データ」と呼ぶ）を管理する処理を行う。
【０１００】
図７に示す出力管理データでは、１行で１つのログ（インデックス情報）に対応する検知結果に関する情報を示している。図７の出力管理データでは、ログごとにインデックス情報、時刻、及び異常検知エンジン部３０Ａごとの検知結果（ｅｎｇｉｎｅＩＤごとのａｎｏｍａｌｙ−ｄｅｇｒｅｅ；ａｎｏｍａｌｙ−ｄｅｇｒｅｅ（ｅｎｇｉｎｅ１），ｄｅｇｒｅｅ（ｅｎｇｉｎｅ２），・・・  ｄｅｇｒｅｅ（ｅｎｇｉｎｅＸ））、異常検知エンジン部３０Ａごとの進捗管理フラグ（ｅｎｇｉｎｅＩＤごとの処理状況を示すフラグ）、及び進捗率の情報（進捗情報）が管理されている。図７において、進捗率は、対応する異常検知エンジン部３０Ａの処理が未完了であることを示す「０」、又は、対応する異常検知エンジン部３０Ａの処理が完了していることを示す「１」が設定される。すなわち、進捗率は、対応するログに関する処理の進捗度合（１段目システム１Ａにおける進捗度合）を示している。
【０１０１】
なお、出力管理データにおいて各ｅｎｇｉｎｅＩＤの検知結果は、初期には設定されていない状態（図７では「−」が表示された状態）となっている。出力管理部７０は、あるログ（インデックス情報）のあるｅｎｇｉｎｅＩＤの検知結果Ｒ１が供給された場合、供給された検知結果Ｒ１に基づいて、当該ログ（インデックス情報）の当該ｅｎｇｉｎｅＩＤに対応する検知結果の数値（当該検知結果Ｒ１に設定された検知結果の数値）を設定するとともに、当該検知結果に対応する進捗管理フラグを０から１に更新する。なお、異常検知エンジン部３０Ａとログの内容の組み合わせによっては、検知処理が行われないことや、異常なしと検知される場合もある。このような場合、検知結果Ｒ１として所定の値（例えば、「０」）が設定されるものとする。そして、出力管理部７０は、検知結果Ｒ１に上述の所定の値（例えば、「０」）が設定されている場合、出力管理データの検知結果は初期状態のまま（具体的な数値を設定しない状態のまま）とし、進捗管理フラグのみを０に更新されるものとする。上述のように、出力管理データ上で、異常が検知された検知結果のデータのみに具体的な数値を設定することで、出力管理データで消費されるメモリ量等のリソースを抑制することができる。なお、出力管理データの全ての検知結果に、具体的な数値を設定するようにしてもよい。
【０１０２】
ここでは、進捗率（以下、「Ｐ」とも表す）は、以下の（３）式のように求めるものとする。（３）式において、Ｅは、検知処理（解析処理）済みの異常検知エンジン部３０Ａの数（出力管理データにおいて進捗管理フラグが１となっているｅｎｇｉｎｅＩＤの数）を示している。また、（３）式においてＸは異常検知エンジン部３０Ａの総数となる。例えば、Ｘ＝１０であり、あるログ（インデックス情報）について処理済みの異常検知エンジン部３０Ａの数が５の場合、当該ログに対応する進捗率Ｐは５０％となる。
進捗率Ｐ＝  （Ｅ／Ｘ）×１００［％］  …（３）
【０１０３】
データ進捗管理部８０は、出力管理データの内容を参照（監視）し、ログ（インデックス情報）ごとに、進捗率を更新する処理を行う。データ進捗管理部８０は、出力管理データ上で、進捗管理フラグの更新（０から１への更新）があった場合、当該ログに対応する進捗率を算出して更新（出力管理データ上で当該ログに対応する進捗率を更新）する処理を行う。
【０１０４】
判定エンジン部９０は、出力管理部７０の出力管理データを参照し、ログ（インデックス情報）ごとに異常検知の判定結果（ｒｅｓｕｌｔ）を求める。判定エンジン部９０が、個々のログについて判定結果を求める方式は限定されないものであり、例えば、第１の実施形態と同様の方式を適用することができる。
【０１０５】
また、判定エンジン部９０は、進捗率が１００％未満のログ（全ての異常検知エンジン部３０Ａについて処理が完了していないログ）も含めて判定結果を求める。具体的には、判定エンジン部９０は、進捗率が１００％未満のログの異常検知の判定については、既に処理が完了し出力されている検知結果（進捗管理フラグが１となっているｅｎｇｉｎｅＩＤの検知結果）のみを用いて、異常検知の判定結果（ｒｅｓｕｌｔ）を求める。例えば、判定エンジン部９０は、出力管理データを参照し、各ログについて、解析処理が完了している検知結果のみに基づく特徴量ベクトルを生成し、上述の図４に示すようなニューラルネットワーク５００にその特徴量ベクトルを入力して得られる評価値に基づき、判定結果を求めるようにしてもよい。
【０１０６】
判定エンジン部９０は、各ログについて進捗率が更新される度に、判定結果（ｒｅｓｕｌｔ）を求める。そして、判定エンジン部９０は、各ログについて、判定結果と共に進捗率（当該判定結果を求める処理を行った際の進捗率）を結果保持出力部１００に出力する。なお、第２の実施形態では、結果保持出力部１００は、判定結果（ｒｅｓｕｌｔ）として、判定した異常の種類に応じた異常度を示す数値（以下、「異常度値」と呼ぶ）を出力するものとする。例えば、結果保持出力部１００では、検知する対象の異常の種類に応じた異常度値（数値）を定義した情報（テーブル）を保持しておき、当該情報に基づいて、異常の種類に応じた異常度値を判定結果（ｒｅｓｕｌｔ）として出力するようにしてもよい。以下では、異常度値は１〜１００の１００段階で表されるものとする。また、異常度値の値は大きいほど、対応する緊急度や重要度が大きいものとする。
【０１０７】
結果保持出力部１００は、判定エンジン部９０から供給された判定結果（ｒｅｓｕｌｔ）とその進捗率の情報を保持し、各ログについて最新の判定結果と共に、その判定結果に対応する進捗率の情報を出力する処理を行う。結果保持出力部１００の出力手段や出力内容は限定されないものである。結果保持出力部１００は、例えば、ディスプレイ等の表示装置に表示出力するようにしてもよいし、データ記録媒体に書き込むことにより出力（記録）するようにしてもよいし、通信によりデータ送信することで出力するようにしてもよい。
【０１０８】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有する第２の実施形態の異常検知装置１０００Ａの動作を説明する。
【０１０９】
以下では、第２の実施形態における異常検知装置１０００Ａの動作について第１の実施形態との差異を説明する。
【０１１０】
第２の実施形態における１段目システム１Ａの動作は、第１の実施形態とほぼ同様であるが、各特徴量Ｆ（各ログ）に時刻とインデックス情報が付加される点で異なっている。具体的には、第２の実施形態では、特徴量生成部２０Ａが、特徴量Ｆ（ログ）ごとに時刻とインデックス情報を付加し、各異常検知エンジン部３０Ａに供給する。
【０１１１】
そして、各異常検知エンジン部３０Ａは、各ログ（特徴量Ｆ）について、検知処理を行って検知結果Ｒ１を出力する際に、各ログ（特徴量Ｆ）に対応するインデックス情報及び時刻を付加する。
【０１１２】
１段目システム１Ａ（異常検知エンジン部３０Ａ−１〜３０Ａ−Ｘ）から出力された検知結果Ｒ１（Ｒ１−１〜Ｒ１−Ｘ）は、２段目システム２Ａの出力管理部７０に供給される。出力管理部７０は、供給された検知結果Ｒ１の内容を集計して出力管理データを更新する処理を行う。
【０１１３】
そして、データ進捗管理部８０は、進捗管理フラグの更新（０から１への更新）があった場合、当該ログに対応する進捗率を算出して更新（出力管理データ上で当該ログに対応する進捗率を更新）する処理を行う。
【０１１４】
判定エンジン部９０は、各ログについて進捗率が更新される度に、判定処理を行い、判定結果（ｒｅｓｕｌｔ）を求める。そして、判定エンジン部９０は、各ログについて、判定結果と共に、インデックス情報、時刻及び進捗率（当該判定結果を求める処理を行った際の出力管理データ上の進捗率）を結果保持出力部１００に出力する。
【０１１５】
結果保持出力部１００は、判定エンジン部９０から供給された判定結果（ｒｅｓｕｌｔ）とその進捗率の情報を保持し、各ログについて最新の判定結果と共に、その判定結果に対応する進捗率の情報を出力する処理を行う。この実施形態では、結果保持出力部１００は、時系列ごとの判定結果と進捗率をディスプレイに表示出力するものとして説明する。具体的には、結果保持出力部１００は、図８に示すような構成の出力画面で、時系列ごとの判定結果と進捗率を表示出力するものとする。
【０１１６】
結果保持出力部１００は、判定エンジン部９０から新しい判定結果が進捗率と共に供給される度に、最新に供給された判定結果と進捗率に基づいて、出力画面に表示される内容も更新する処理を行う。
【０１１７】
図８に示す出力画面では、左から時系列順（特徴量Ｆに付加された時刻に基づく時系列順）に判定結果としての異常度値を視覚的に表示する画像Ｄ１１と、同じく左から時系列順に画像Ｄ１１の判定結果（異常度値）に対応する進捗率を視覚的に表示する画像Ｄ１２が表示されている。
【０１１８】
画像Ｄ１１では、２０１７年９月１６日の１７：２５から１６：２５までの期間について、１分刻みの異常度値を示している。画像Ｄ１１に示す各点線で囲われたブロックは１分間の時間帯を表している。したがって、画像Ｄ１１では時系列順に６０個のブロックが並べて表示されている。そして、各ブロック内には、対応する時間帯で発生した異常度値を示す画像（例えば、異常度値に応じた色やパターン）が表示される。なお、１つのブロックに対応する時間帯で、判定エンジン部９０により複数のログに対する判定結果が出力されている場合、その複数のログに対する判定結果(異常度値）のうち最も大きい値に基づく表示を行うようにしてもよい。
【０１１９】
図８では、異常度値が０の時間帯（又は判定結果が取得されていない時間帯）のブロックには白色の画像を表示し、異常度が１〜６０の時間帯のブロックにはハッチ（斜線）の画像（パターン）を表示し、異常度が６１〜１００の時間帯のブロックには黒色の画像を表示している。なお、異常度値に応じて各ブロックに表示する内容については、図８の内容に限定されないものである。例えば、異常度が６１〜１００の時間帯のブロックについては赤色等の色で表示する等してもよい。
【０１２０】
画像Ｄ１２では、画像Ｄ１１と同じスケールの時間軸で時間帯ごとの判定結果（異常度値）に対応する進捗率をグラフ形式（折れ線グラフ形式）で表示している。
【０１２１】
（Ｂ−３）第２の実施形態の効果
第２の実施形態によれば、以下のような効果を奏することができる。
【０１２２】
第２の実施形態の異常検知装置１０００Ａでは、出力管理データでログ毎に解析処理の進捗率を数値化して管理し、判定結果（ｒｅｓｕｌｔ）に進捗率を付加して出力する。これにより、第２の実施形態の異常検知装置１０００Ａでは、任意のタイミングで判定処理を行っても、判定結果に進捗率の情報を付加して出力する。これにより、第２の実施形態の異常検知装置１０００Ａでは、リアルタイム性の高い判定結果の出力を行っても、それを参照するオペレータに対して有効な判定結果（オペレータが評価可能な判定結果）を提示することができる。第２の実施形態の異常検知装置１０００Ａでは、例えば、進捗率の低い判定結果は、少ない情報量に基づいた判定結果（少ない異常検知エンジン部３０Ａの検知結果に基づく判定結果）であるため信頼性が低く、進捗率の高い判定結果は、多い情報量に基づいた判定結果であるため信頼性が高いということをオペレータに対して提示することができる。
【０１２３】
以上のように、第２の実施形態の異常検知装置１０００Ａでは、リアルタイムに（時系列に）判定結果（異常度値）の推移と共に、進捗率（各異常検知エンジン部３０Ａの処理状況）をオペレータに提示することができる。言い換えると、第２の実施形態の異常検知装置１０００Ａでは、オペレータに対して、リアルタイムに評価可能な判定結果を提示することができる。これにより、オペレータにとって分析するための優先付け等が可能になる。
【０１２４】
（Ｃ）第３の実施形態
以下、本発明による通信解析装置、通信解析プログラム、及び通信解析方法の第３の実施形態を、図面を参照しながら詳述する。以下では、本発明の通信解析装置、通信解析プログラム、及び通信解析方法を、異常検知装置に適用した例について示している。
【０１２５】
（Ｃ−１）第３の実施形態の構成
図９は、第３の実施形態に係る異常検知装置１０００Ｂの全体構成を示すブロック図であり、上述の図６と同一部分又は対応部分には同一符号又は対応符号を付している。
【０１２６】
第１及び第２の実施形態の異常検知装置１０００、１０００Ａでは、２段目システム２、２Ａの判定結果に対してオペレータが正解データ（正解値）を与えることで機械学習による学習が可能になるシステムとして説明したが、正解データの追加による判定結果への影響（例えば、誤検知が減ったことや見落としが発生していないか等）をオペレータに認識させることができないという問題がある。そこで、第３の実施形態の異常検知装置１０００Ｂでは、正解データの追加による判定結果の影響内容を出力することを可能としている。
【０１２７】
以下、第３の実施形態の異常検知装置１０００Ｂの具体的な構成例について第２の実施形態との差異を中心に説明する。
【０１２８】
図９に示す通り、第３の実施形態の異常検知装置１０００Ｂでは、２段目システム２Ａが、２段目システム２Ｂに置き換えられている点で第２の実施形態と異なっている。
【０１２９】
２段目システム２Ｂは、出力管理部７０Ｂ、データ進捗管理部８０、判定学習エンジン部１１０、差分保持出力部１２０、及び教師フィードバック部１３０を有している。
【０１３０】
出力管理部７０Ｂは、保持する出力管理データの構成の一部が第２の実施形態と異なっている。具体的には、図１０に示すように、出力管理部７０Ｂで保持する出力管理データでは、ログ（インデックス情報）ごとに、教師データに基づく正解値（正解データ；正解フラグ）のフィールドが付加されている点で第２の実施形態と異なっている。ログごとの正解値は、教師フィードバック部１３０により更新される。なお、出力管理データにおいて各ログの正解値は検知結果と同様に初期には設定されていない状態（図１０では「−」が表示された状態）となっており、教師フィードバック部１３０の処理により具体的な数値（正解値）が設定されるものとする。
【０１３１】
データ進捗管理部８０は、第２の実施形態と同様に、出力管理部７０Ｂの進捗率を更新する処理を行うものであるため、詳細な説明については省略する。
【０１３２】
教師フィードバック部１３０は、オペレータから差分保持出力部１２０で保持される出力管理データの正解値の編集を受け付け、受け付けた正解値を差分保持出力部１２０の出力管理データに反映（更新）する処理を行う。教師フィードバック部１３０は、例えば、オペレータからログごとの正解値の入力受け付けを行うユーザインタフェースとして機能する。教師フィードバック部１３０は、例えば、図示しないディスプレイに、出力管理データを表示出力して、図示しないキーボードやタッチパネル等の入力装置を用いてログごとの正解値の入力受付を行うようにしてもよい。オペレータは、判定学習エンジン部１１０が出力する判定結果や、出力管理データの内容を利用して、判定結果を修正して学習させるべきログを見出し、必要に応じて正解値を入力することが可能となる。
【０１３３】
判定学習エンジン部１１０は、出力管理部７０Ｂの出力管理データを参照し、各ログについて進捗率が更新される度に、判定結果（ｒｅｓｕｌｔ）を求める。そして、判定学習エンジン部１１０は、各ログについて、判定結果に、インデックス情報、時刻、及び進捗率を付加して、差分保持出力部１２０に供給する。
【０１３４】
判定学習エンジン部１１０が、検知結果に基づいて判定結果（ｒｅｓｕｌｔ）を求める処理については、例えば、第２の実施形態の判定エンジン部９０と同様の処理を適用することができる。
【０１３５】
また、第３の実施形態の判定学習エンジン部１１０では、第２の実施形態の差分保持出力部１２０と同様に、判定結果（ｒｅｓｕｌｔ）として、判定した異常の種類に応じた異常度値（０〜１００のいずれか）を出力するものとして説明する。
【０１３６】
さらに、判定学習エンジン部１１０は、任意のタイミング（例えば、予め設定された定期又は不定期のタイミング）で、出力管理データ上で正解値が設定されたログについてのみ、当該正解値（教師データ）に基づいて学習する学習処理（第１の実施形態の教師データに基づく学習処理と同様の処理）を行う。そして、判定学習エンジン部１１０は、その学習処理の後に、再度、出力管理データの各ログについて判定する処理（以下、「再判定処理」と呼ぶ）を行う。
【０１３７】
差分保持出力部１２０は、判定学習エンジン部１１０から供給された判定結果に関する情報（以下、「判定結果保持データ」と呼ぶ）を保持し、保持している判定結果保持データに基づく出力を行う。
【０１３８】
図１１は、判定結果保持データの構成例について示した説明図である。
【０１３９】
図１１に示すように、差分保持出力部１２０は、ログ（インデックス情報）ごとに、最新に供給された判定結果（異常度値）を示す判定値と共に、再判定処理があった場合における学習処理前の判定結果と再判定処理による判定結果との差分を示す判定差分値を、判定結果保持データとして保持する。
【０１４０】
差分保持出力部１２０は、例えば、進捗率が１００％になった後に、同じログ（同じインデックス情報）に対応する判定結果（ｒｅｓｕｌｔ；異常度値）が供給されると、当該判定結果（異常度値）を、学習処理に基づいて再判定処理された結果とみなし、再判定処理された判定結果（異常度値）と、それより前に保持している判定結果（異常度値）との差分を判定差分値として保持する。例えば、図１１の判定結果保持データでは、「ＬＯＧ２０１７０９０１０３１６００＿６４３９１２９１」のインデックス情報に対応する判定値が０で判定差分値は−４０となっている。この場合、「ＬＯＧ２０１７０９０１０３１６００＿６４３９１２９１」のインデックス情報に対応するログについて、当初（例えば、進捗率が１００％になった時点）は判定結果（異常度値）として４０が算出されたが、その後の学習処理に基づく再判定処理で０（異常なし）が算出されたことを示している。
【０１４１】
（Ｃ−２）第３の実施形態の動作
次に、以上のような構成を有する第３の実施形態の異常検知装置１０００Ｂの動作を説明する。
【０１４２】
以下では、第３の実施形態における異常検知装置１０００Ｂの動作について第２の実施形態との差異を説明する。
【０１４３】
第３の実施形態における１段目システム１Ａの動作は、第２の実施形態と同様であるので詳しい説明を省略する。
【０１４４】
出力管理部７０Ｂは、供給された検知結果Ｒ１に基づいて出力管理データを更新する処理を行う。そして、データ進捗管理部８０は、あるログについて進捗管理の更新（０から１への更新）があった場合、当該ログに対応する進捗率を算出して更新（出力管理データ上で当該ログに対応する進捗率を更新）する処理を行う。
【０１４５】
判定学習エンジン部１１０は、各ログについて進捗率が更新される度に、判定結果（ｒｅｓｕｌｔ）を求める。そして、判定学習エンジン部１１０は、各ログについて、判定結果を求めると、その判定結果に、インデックス情報、時刻、及び進捗率を付加して、差分保持出力部１２０に供給する。
【０１４６】
教師フィードバック部１３０は、差分保持出力部１２０で保持される出力管理データの正解値の編集を受け付け、受け付けた正解値を差分保持出力部１２０の出力管理データに反映（更新）する処理を行う。
【０１４７】
そして、判定学習エンジン部１１０は、任意のタイミング（例えば、予め設定されたタイミングや新たに正解値が入力されたタイミング）で、出力管理データ上で正解値が設定されたログのみを抽出し、当該正解値に基づく学習処理を行う。そして、判定学習エンジン部１１０は、その学習処理の後に、再判定処理を行う。
【０１４８】
差分保持出力部１２０は、判定学習エンジン部１１０から供給された判定結果に関する判定結果保持データを保持し、保持している判定結果保持データに基づく出力を行う。差分保持出力部１２０は、例えば、進捗率が１００％になったログ（インデックス情報）に対応する判定結果（ｒｅｓｕｌｔ；異常度値）が供給されると、当該判定結果（異常度値）を、学習処理に基づいて学習処理した後に再判定処理された結果とみなし、再判定処理された判定結果と共に、それより前に保持している判定結果との差分を判定差分値として保持する。
【０１４９】
そして、差分保持出力部１２０は、各判定結果（ｒｅｓｕｌｔ）とその判定結果に対応する判定差分値を出力する処理を行う。
【０１５０】
この実施形態では、差分保持出力部１２０は、時系列ごとの判定結果（ｒｅｓｕｌｔ）と判定差分値をディスプレイに表示出力するものとして説明する。具体的には、差分保持出力部１２０は、図１２に示すような構成の出力画面で、時系列ごとの判定結果と判定差分値を表示出力するものとする。
【０１５１】
差分保持出力部１２０は、判定エンジン部９０から新しい判定結果が供給される度に、判定結果保持データを更新し、判定結果保持データの内容に変化があった場合、現状の判定結果保持データの内容に基づいて出力画面に表示する内容も更新する処理を行う。
【０１５２】
図１２に示す出力画面では、左から時系列順に判定結果としての異常度値を視覚的に表示する画像Ｄ２１と、同じく左から時系列順に画像Ｄ２１の判定結果（異常度値）に対応する判定差分値を視覚的に表示する画像Ｄ２２が表示されている。
【０１５３】
画像Ｄ２１では、２０１７年９月１６日の１７：２５から１６：２５までの期間について、１分刻みの異常度値を示している。画像Ｄ１１に示す各点線で囲われたブロックは１分間の時間帯を表している。したがって、画像Ｄ１１では時系列順に６０個のブロックが並べて表示されている。そして、各ブロック内には、それぞれ対応する時間帯で発生した異常度値に対応する棒グラフが表示される。なお、異常度値に応じて各ブロックに表示する内容については、図１２の内容に限定されないものである。例えば、上述の図８と同様に、ブロック内に表示する画像（例えば、パターンや色）に応じて異常度値を視覚的に表示するようにしてもよい。
【０１５４】
図１２に示す画像Ｄ２２では、画像Ｄ２１と同じスケールの時間軸で時間帯ごとの判定差分値を棒グラフで表示している。判定差分値は正だけでなく負となる場合もあるので、画像Ｄ２２では、判定差分値について−１００〜＋１００の範囲で棒グラフを表示可能な構成となっているが、異常度の絶対値に応じて変動させてもよい。
【０１５５】
（Ｃ−３）第３の実施形態の効果
第３の実施形態によれば、以下のような効果を奏することができる。
【０１５６】
第３の実施形態の異常検知装置１０００Ｂでは、教師フィードバック部１３０を用いて、出力管理データ上にログごとの正解値の入力受付を行い、入力された正解値に基づいて、判定学習エンジン部１１０が判定処理の学習処理をし直す再学習処理を行う。これにより、第３の実施形態の異常検知装置１０００Ｂでは、判定処理を行いながら、最新のログに基づく学習内容を判定処理に反映できる。
【０１５７】
また、第３の実施形態の異常検知装置１０００Ｂでは、差分保持出力部１２０が、ログごとに判定結果（ｒｅｓｕｌｔ）とその判定結果に対応する判定差分値を保持して出力する処理を行う。これにより、第３の実施形態の異常検知装置１０００Ｂでは、再学習処理を行った際に、判定結果が好ましい結果に変化したかどうかを提示することができる。これにより、第３の実施形態の異常検知装置１０００Ｂでは、再学習処理による学習内容が適切に反映されているかどうかをオペレータに視覚的に提示することができる。言い換えると、第３の実施形態の異常検知装置１０００Ｂでは、再学習前後の判定結果を出力することで、判定結果が改善されて誤検知が減ったこと（誤検出が改善されたこと）や、見落としていた異常がなかったか等を数値としてオペレータに提示することができる。
【０１５８】
（Ｄ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【０１５９】
（Ｄ−１）上記の実施形態では、本発明の通信解析装置を異常検知装置に適用する例について説明したが、リアルタイムに繰り返し、最終判定エンジン部５０による最終判定処理を行って最終判定結果Ｒ３を出力する監視装置として構成するようにしてもよい。
【０１６０】
（Ｄ−２）第３の実施形態の異常検知装置１０００Ｂにおいて、第２の実施形態と同様に、リアルタイムに（時系列に）、進捗率（各異常検知エンジン部３０Ａの処理状況）をオペレータに提示（例えば、上述の図８の画像Ｄ１２を追加表示する）ようにしてもよい。
【符号の説明】
【０１６１】
１０００…異常検知装置、１…１段目システム、２０…特徴量生成部、３０、３０−１〜３０−Ｘ…異常検知エンジン部、２…２段目システム、４０…出力ベクトル部、５０…最終判定エンジン部、６０…原因ログ出力部、Ｎ…ネットワーク、１０…データプール部、Ｆ、Ｆ−１〜Ｆ−Ｘ…特徴量、Ｒ１、Ｒ１−１〜Ｒ１−Ｘ…検知結果、Ｒ２…特徴量ベクトル、Ｒ３…最終判定結果、ＮＩ、ＮＩ−１〜ＮＩ−５…入力層のノード、ＮＭ、ＮＭ−１〜ＮＭ−５…中間層のノード、ＮＯ、ＮＯ−１〜ＮＯ−３…出力層のノード、２０１…Ｐｒｏｘｙ、２０２…ＩＤＳ、２０３…Ｍａｉｌサーバ、２０４…ＦＷ、Ｌ−１…Ｐｒｏｘｙログ、Ｌ−２…ＩＤＳログ、Ｌ−３…Ｍａｉｌログ、Ｌ−４…ＦＷログ。
【図１】
2019080201.tif 000003
【図２】
2019080201.tif 000004
【図３】
2019080201.tif 000005
【図４】
2019080201.tif 000006
【図５】
2019080201.tif 000007
【図６】
2019080201.tif 000008
【図７】
2019080201.tif 000009
【図８】
2019080201.tif 000010
【図９】
2019080201.tif 000011
【図１０】
2019080201.tif 000012
【図１１】
2019080201.tif 000013
【図１２】
2019080201.tif 000014