(57)【要約】【課題】精度を劣化させることなく、従来よりも削減された計算負荷で異常を検知することができる異常検知装置を提供する。【解決手段】複数の正常モデルを保管する正常モデル保管部２８と、通信ログから対象物の動作モードを判定する動作モード判定部２３と、正常モデル保管部２８に保管された複数の正常モデルから動作モード判定部２３で判定された動作モードに対応する正常モデルを選択する正常モデル選択部２５と、選択された正常モデルに従って通信ログから特徴量を抽出する特徴量抽出部２４と、正常モデル選択部２５で選択された正常モデル及び特徴量抽出部２４で抽出された特徴量から通信ネットワーク１４での通信における異常度を算出して出力する異常度算出部２７とを備える。【選択図】図１
2018160078.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークを備えて動作する対象物における異常を検知する異常検知装置であって、
前記対象物が取り得る複数の動作モードのそれぞれに対応し、前記通信ネットワークでの正常時の通信における特徴量の特性を示すデータである複数の正常モデルを保管する正常モデル保管部と、
前記通信ネットワークの通信ログから前記対象物の動作モードを判定する動作モード判定部と、
前記正常モデル保管部に保管された前記複数の正常モデルから、前記動作モード判定部で判定された動作モードに対応する正常モデルを選択する正常モデル選択部と、
前記正常モデル選択部で選択された前記正常モデルに従って、前記通信ログから前記通信ネットワークでの通信における特徴量を抽出する特徴量抽出部と、
前記正常モデル選択部で選択された前記正常モデル、及び、前記特徴量抽出部で抽出された前記特徴量に基づいて、前記通信ネットワークでの通信における異常を検知する異常検知部と、
を備える異常検知装置。
【請求項２】
前記正常モデルには、前記通信ネットワークでの通信における異常の検知に用いるための特徴量の種類を示す特徴量パラメータが含まれ、
前記特徴量抽出部は、前記正常モデル選択部で選択された前記正常モデルに含まれる特徴量パラメータが示す種類の特徴量を、前記通信ログから抽出する、
請求項１記載の異常検知装置。
【請求項３】
前記通信ネットワークでの通信における異常度を算出する異常度算出部、をさらに備え、
前記正常モデルには、さらに、前記特徴量パラメータが示す特徴量の種類に対応する特徴量の基準値が含まれ、
前記異常度算出部は、前記正常モデル選択部で選択された前記正常モデルに含まれる特徴量の基準値と前記特徴量抽出部で抽出された前記特徴量との間の外れ度合から、前記異常度を算出し、
前記異常検知部は、前記異常度算出部によって算出された前記異常度と閾値とを比較することで、異常の有無を検知する、
請求項２記載の異常検知装置。
【請求項４】
前記正常モデルには、さらに、前記異常度の算出に用いるアルゴリズムを示す異常度尺度が含まれ、
前記異常度算出部は、前記正常モデル選択部で選択された前記正常モデルに含まれる異常度尺度が示すアルゴリズムに従って、前記異常度を算出する、
請求項１〜３のいずれか１項に記載の異常検知装置。
【請求項５】
前記異常検知部によって検知された異常の有無を通知する異常発生通知部をさらに備える、
請求項４記載の異常検知装置。
【請求項６】
前記通信ネットワークにおける通信を記録することで前記通信ログを取得する通信ログ取得部と、
前記通信ログ取得部によって取得された前記通信ログを蓄積する通信ログ蓄積部と、をさらに備え、
前記動作モード判定部は、前記通信ログ蓄積部に蓄積された前記通信ログから前記動作モードを判定する、
請求項１〜５のいずれか１項に記載の異常検知装置。
【請求項７】
前記通信ログから正常モデルを作成し、作成した前記正常モデルを用いて、当該正常モデルに対応する動作モードに対応する、前記正常モデル保管部に保管されている正常モデルを更新する正常モデル作成部、をさらに備える、
請求項１〜６のいずれか１項に記載の異常検知装置。
【請求項８】
前記異常検知装置の外部から新たな特徴量パラメータを取得する特徴量パラメータ更新部、をさらに備え、
前記正常モデル作成部は、前記特徴量パラメータ更新部によって取得された前記特徴量パラメータを用いて、前記正常モデル保管部に保管されている正常モデルを更新する、
請求項７記載の異常検知装置。
【請求項９】
通信ネットワークを備えて動作する対象物における異常を検知する装置による異常検知方法であって、
前記通信ネットワークの通信ログから前記対象物の動作モードを判定する動作モード判定ステップと、
前記対象物が取り得る複数の動作モードのそれぞれに対応し、前記通信ネットワークでの正常時の通信における特徴量の特性を示すデータである複数の正常モデルから、前記動作モード判定ステップで判定された動作モードに対応する正常モデルを選択する正常モデル選択ステップと、
前記正常モデル選択ステップで選択された前記正常モデルに従って、前記通信ログから前記通信ネットワークでの通信における特徴量を抽出する特徴量抽出ステップと、
前記正常モデル選択ステップで選択された前記正常モデル、及び、前記特徴量抽出ステップで抽出された前記特徴量に基づいて、前記通信ネットワークでの通信における異常を検知する異常検知ステップと、
を含む異常検知方法。
【請求項１０】
通信ネットワークを備えて動作する対象物における異常の検知をコンピュータに実行させるプログラムであって、
前記通信ネットワークの通信ログから前記対象物の動作モードを判定する動作モード判定処理と、
前記対象物が取り得る複数の動作モードのそれぞれに対応し、前記通信ネットワークでの正常時の通信における特徴量の特性を示すデータである複数の正常モデルから、前記動作モード判定処理で判定された動作モードに対応する正常モデルを選択する正常モデル選択処理と、
前記正常モデル選択処理で選択された前記正常モデルに従って、前記通信ログから前記通信ネットワークでの通信における特徴量を抽出する特徴量抽出処理と、
前記正常モデル選択処理で選択された前記正常モデル、及び、前記特徴量抽出処理で抽出された前記特徴量に基づいて、前記通信ネットワークでの通信における異常を検知する異常検知処理と、
を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークを備えて動作する対象物における異常を検知する異常検知装置及び異常検知方法に関する。
【背景技術】
【０００２】
自動車の中では、ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と呼ばれる複数の電子制御装置が、通常、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バスのような、サイバー攻撃に対して安全とは言えない車載ネットワークで相互に接続されている。そこで、従来、自動車のサイバーセキュリティを確保するために、高い精度で、車載ネットワークへの不正メッセージの注入等の異常を検知する様々な技術が提案されている（例えば、特許文献１参照）。
【０００３】
特許文献１では、車載ネットワークにおけるセンサ及び制御モジュールの通信ログを解析することで異常を検知している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１６−５０２６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、近年、自動運転技術に代表される自動車関連技術の進展に伴い、自動車に搭載されるセンサの個数が膨大に増えており、電子制御装置による制御も大幅に複雑化している。そのために、車載ネットワークで伝送されるコマンド及びデータの種類及び数も膨大に増えており、特許文献１の技術では、これらのコマンド及びデータに対してひとつひとつの振る舞いを監視することになり、膨大な計算リソースが必要になるという問題がある。
【０００６】
そこで、本発明は、上記問題に鑑みてなされたものであり、精度を劣化させることなく、従来よりも削減された計算負荷で異常を検知することができる異常検知装置及び異常検知方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の一形態に係る異常検知装置は、通信ネットワークを備えて動作する対象物における異常を検知する異常検知装置であって、前記対象物が取り得る複数の動作モードのそれぞれに対応し、前記通信ネットワークでの正常時の通信における特徴量の特性を示すデータである複数の正常モデルを保管する正常モデル保管部と、前記通信ネットワークの通信ログから前記対象物の動作モードを判定する動作モード判定部と、前記正常モデル保管部に保管された前記複数の正常モデルから、前記動作モード判定部で判定された動作モードに対応する正常モデルを選択する正常モデル選択部と、前記正常モデル選択部で選択された前記正常モデルに従って、前記通信ログから前記通信ネットワークでの通信における特徴量を抽出する特徴量抽出部と、前記正常モデル選択部で選択された前記正常モデル、及び、前記特徴量抽出部で抽出された前記特徴量に基づいて、前記通信ネットワークでの通信における異常を検知する異常検知部と、を備える。
【０００８】
また、上記目的を達成するために、本発明の一形態に係る異常検知方法は、通信ネットワークを備えて動作する対象物における異常を検知する装置による異常検知方法であって、前記通信ネットワークの通信ログから前記対象物の動作モードを判定する動作モード判定ステップと、前記対象物が取り得る複数の動作モードのそれぞれに対応し、前記通信ネットワークでの正常時の通信における特徴量の特性を示すデータである複数の正常モデルから、前記動作モード判定ステップで判定された動作モードに対応する正常モデルを選択する正常モデル選択ステップと、前記正常モデル選択ステップで選択された前記正常モデルに従って、前記通信ログから前記通信ネットワークでの通信における特徴量を抽出する特徴量抽出ステップと、前記正常モデル選択ステップで選択された前記正常モデル、及び、前記特徴量抽出ステップで抽出された前記特徴量に基づいて、前記通信ネットワークでの通信における異常を検知する異常検知ステップと、を含む。
【発明の効果】
【０００９】
本発明により、精度を劣化させることなく、従来よりも削減された計算負荷で異常を検知することができる異常検知装置及び異常検知方法が提供される。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係る通信システムの構成を示すブロック図
【図２】実施の形態に係る異常検知装置が備える通信ログ蓄積部に蓄積された通信ログの一例を示すデータ構造図
【図３】実施の形態に係る異常検知装置が備える正常モデル保管部に保管された正常モデルの一例を示すデータ構造図
【図４】実施の形態に係る異常検知装置の動作を示すフローチャート
【図５Ａ】図４のステップＳ１１の詳細な処理手順を示すフローチャート
【図５Ｂ】図４のステップＳ１１の詳細な処理手順の続きを示すフローチャート
【図５Ｃ】図４のステップＳ１１の詳細な処理手順の続きを示すフローチャート
【図６】図４のステップＳ１３の詳細な処理手順を示すフローチャート
【図７】通信ネットワークが受けるサイバー攻撃の一例を示す図
【図８】実施の形態に係る異常検知装置による異常検知のアルゴリズムの概念を示す図
【図９】実施の形態に係る異常検知装置が備える正常モデル作成部の動作を示すフローチャート
【図１０】実施の形態に係る異常検知装置が備える特徴量パラメータ更新部の動作を示すフローチャート
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される対象物の種類、通信ネットワークの種類、装置の構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
【００１２】
図１は、実施の形態に係る通信システム１０の構成を示すブロック図である。
【００１３】
通信システム１０は、通信ネットワーク１４を備えて動作する対象物の一例である自動車に備えられる通信システムであり、ＥＵＣ１２ａ〜１２ｄ、通信ネットワーク１４、及び、異常検知装置２０を備える。
【００１４】
ＥＵＣ１２ａ〜１２ｄは、駐車を支援するＥＣＵ１２ａ、緊急ブレーキを制御するＥＣＵ１２ｂ、その他、各種機能を発揮するＥＣＵ１２ｃ及び１２ｄを含み、通信ネットワーク１４に接続されている。
【００１５】
通信ネットワーク１４は、ＥＣＵ（ＥＣＵ１２ａ〜１２ｄ及び異常検知装置２０）を相互に接続するバスで構成され、例えば、ＣＡＮである。
【００１６】
異常検知装置２０は、通信ネットワーク１４への不正メッセージの注入等の異常を検知する装置であり、通信ネットワーク１４に接続されたＥＣＵの一つである。ここで、「異常」とは、通信ネットワーク１４へのサイバー攻撃の可能性がある事象であり、本実施の形態では、後述する正常モデルで規定される通信ネットワーク１４における正常な通信状態から所定の範囲を超える通信状態をいう。
【００１７】
なお、ＥＣＵ（ＥＣＵ１２ａ〜１２ｄ及び異常検知装置２０）は、ハードウェア構成として、プログラム及びデータを格納するフラッシュメモリ及びＲＯＭ等の不揮発性メモリ、ＤＲＡＭ等の揮発性メモリ、プログラムを実行するＣＰＵ等のプロセッサ、各種センサ、警報器及びディスプレイデバイス等の入出力デバイス、各種センサや入出力デバイス等とプロセッサとを接続する入出力回路、通信ネットワーク１４と接続される通信インタフェース回路等を備える。
【００１８】
異常検知装置２０は、機能的には、通信ログ取得部２１、通信ログ蓄積部２２、動作モード判定部２３、特徴量抽出部２４、正常モデル選択部２５、正常モデル作成部２６、異常度算出部２７、正常モデル保管部２８、特徴量パラメータ更新部２９、通信部３０、異常発生通知部３１、及び、異常検知部３２を備える。
【００１９】
通信ログ取得部２１は、通信ネットワーク１４における通信を記録することで通信ログを取得する処理部であり、例えば、ＣＡＮバスに接続される通信インタフェース回路等を有する。
【００２０】
通信ログ蓄積部２２は、通信ログ取得部２１によって取得された通信ログを蓄積する記憶部であり、例えば、フラッシュメモリ等の書き込み可能な不揮発性メモリである。図２は、通信ログ蓄積部２２に蓄積された通信ログ２２ａの一例を示すデータ構造図である。本図に示されるように、通信ログ２２ａは、エントリ（つまり、行）ごとにＣＡＮメッセージが格納されている。エントリは、通信ログ２２ａに蓄積される最小単位のログである。各エントリは、行番号を示す行２２１、自動車のイグニッションＯＮからの経過時間を示すタイムスタンプ２２２、ＣＡＮメッセージに含まれるＣＡＮ＿ＩＤ２２３、ＣＡＮメッセージに含まれるペイロード２２４で構成される。なお、タイムスタンプ２２２は、実際の時刻でもよい。
【００２１】
動作モード判定部２３は、通信ログ２２ａから対象物（本実施の形態では自動車）の動作モードを判定する処理部であり、ここでは、通信ログ蓄積部２２に蓄積された通信ログ２２ａを解析することで動作モードを判定し、判定した動作モードを正常モデル選択部２５に通知する。また、動作モード判定部２３は、判定した動作モードに対応する通信ログ２２ａの区間におけるデータである通信ログデータを抽出し、特徴量抽出部２４に出力する。
【００２２】
正常モデル保管部２８は、対象物（ここでは、自動車）が取り得る複数の動作モードのそれぞれに対応し、通信ネットワーク１４での正常時の通信における特徴量の特性を示すデータである複数の正常モデル２８ａ〜２８ｂを予め保管している記憶部であり、例えば、フラッシュメモリ等の書き込み可能な不揮発性メモリである。なお、正常モデル２８ａ〜２８ｂは、自動車（あるいは、異常検知装置２０）の出荷前のテスト走行時における通信ログを用いて作成されており、同じモデルの自動車の全てに共通である。正常モデル２８ａ〜２８ｂの作成方法は、後述する正常モデル作成部２６による方法と同じである。ただし、自動車（あるいは、異常検知装置２０）が出荷された後は、正常モデル作成部２６によって、正常モデル保管部２８に保管される正常モデル２８ａ〜２８ｂは、各自動車（あるいは、異常検知装置２０）に固有の運転状況に依存して更新されていく。
【００２３】
図３は、正常モデル保管部２８に保管された正常モデル２８ａ〜２８ｂの一例を示すデータ構造図である。本図に示されるように、正常モデル２８ａ〜２８ｂのそれぞれは、動作モード識別子２８１、特徴量パラメータ２８２、基準値２８３で構成される。
【００２４】
動作モード識別子２８１は、当該正常モデルに対応する動作モードを示す識別子である。図３に示される例では、正常モデル２８ａは、「駐車支援」という動作モードに対応し、正常モデル２８ｂは、「緊急ブレーキ」という動作モードに対応することが示されている。
【００２５】
特徴量パラメータ２８２は、通信ネットワーク１４での通信における異常の判定に用いることができる特徴量の種類を示すパラメータである。この特徴量パラメータ２８２には、異常度の算出に用いるアルゴリズムを示す異常度尺度２８２ａが含まれる。図３に示される例では、正常モデル２８ａでは、異常度尺度２８２ａが「ＬＯＦ（Ｌｏｃａｌ  Ｏｕｔｌｉｅｒ  Ｆａｃｔｏｒ）」に設定されており、正常モデル２８ｂでは、異常度尺度２８２ａが「マハラノビス距離」に設定されている。なお、異常度尺度２８２ａとして登録されるアルゴリズムは、これらの例に限られず、その他、非特許文献１（井手剛著「入門  機械学習による異常検知」コロナ社）等で紹介されているような公知な方法（例えば、ｋ−近傍法等）であってもよい。
【００２６】
また、特徴量パラメータ２８２として、正常モデル２８ａでは、２次元の特徴量ベクタであって各要素が時間幅３００ｍｓｅｃの区間での出現頻度であること（「次元＝２、区間幅＝３００ｍｓｅｃ」）、２次元特徴量ベクタの一つ目の要素が、ＣＡＮ＿ＩＤが０ｘ１２３であるＣＡＮメッセージの出現頻度であること（「１：“ＩＤ”、０ｘ１２３」）、２次元特徴量ベクタの二つ目の要素が、ＣＡＮ＿ＩＤが０ｘ４５６であるＣＡＮメッセージのペイロードの７〜０ビット目のフィールドの値（複数ある場合には、その平均値）であること（「２：“ペイロード”、（０ｘ４５６、［７：０］」）、基準値２８３の表記として「即値」が用いられること、つまり、特徴量ベクタがそのまま格納されること（「モデル表記＝“即値”」）が示されている。ここで、特徴量パラメータ２８２として指定されるＣＡＮ＿ＩＤやペイロード中のフィールドは、対応している動作モードに対して発生する異常の特性を考慮して設定される。例えば、「駐車支援」の動作モードに対しては、駐車支援動作中は、ステアリング操作に関するＣＡＮメッセージ（ステアリング操作ＣＡＮメッセージ）によってステアリング操作が可能な状態であるから、操作量が異常なステアリング操作ＣＡＮメッセージを注入して不正なステアリング操作を行う攻撃に晒される恐れがある。従って、「駐車支援」動作モードに対しては、ステアリング操作に関係するＣＡＮメッセージのＣＡＮ＿ＩＤ及びペイロード中のフィールドが特徴量パラメータ２８２に設定される。また、「緊急ブレーキ」の動作モードに対しては、緊急ブレーキ動作中はブレーキ操作に関するＣＡＮメッセージ（ブレーキ操作ＣＡＮメッセージ）によってブレーキ操作が可能な状態であるから、ブレーキ操作に関係するＣＡＮメッセージのＣＡＮ＿ＩＤ及びペイロード中のフィールドが特徴量パラメータ２８２に設定される。このようにして、動作モードごとに不正に利用される可能性のあるＣＡＮ＿ＩＤやペイロードのフィールドだけに特徴量パラメータを絞り込むことで、異常度の算出にかかる処理量が削減可能である。
【００２７】
基準値２８３は、特徴量パラメータ２８２が示す特徴量の種類に対応する特徴量の基準値である。図３に示される例では、基準値が１０８個あること（「サンプル数＝１０８」）、その一つ目の具体的な基準値として２次元特徴量ベクタ（４、１２．４）が格納されている（「１：（４、１２．４）」）。二つ目以降の具体的な基準値についても、図３に示されるように、一つ目と同様に、２次元特徴量ベクタが格納されている。
【００２８】
なお、正常モデル２８ｂは、正常モデル２８ａと同じデータ構造をもつが、正常モデル２８ａとモデル表記が異なっている。図３の例では、正常モデル２８ｂの特徴量パラメータ２８２には、「モデル表記＝“統計量”」が含まれるので、正常モデル２８ｂの基準値２８３には特徴量ベクタの分布を統計量で表記した値が格納されることが示されている。具体的には、図３に示される例では、正常モデル２８ｂの基準値２８３には、「平均ベクタ」及び「共分散行列」が格納されている。
【００２９】
図１に戻り、正常モデル選択部２５は、正常モデル保管部２８に保管された複数の正常モデル２８ａ〜２８ｂから、動作モード判定部２３で判定された動作モードに対応する正常モデルを選択する処理部である。
【００３０】
特徴量抽出部２４は、正常モデル選択部２５で選択された正常モデル２８ｃに従って、通信ログ蓄積部２２に蓄積された通信ログ２２ａ（ここでは、通信ログ蓄積部２２に蓄積された通信ログ２２ａから動作モード判定部２３によって抽出された通信ログデータ）から通信ネットワーク１４での通信における特徴量を抽出する処理部である。より具体的には、特徴量抽出部２４は、動作モード判定部２３で判定された動作モードについて、動作モード判定部２３で抽出された通信ログデータから、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる特徴量パラメータ２８２が示す種類の特徴量を抽出する。
【００３１】
異常度算出部２７は、通信ネットワーク１４での通信における異常度を算出する処理部である。より具体的には、異常度算出部２７は、正常モデル選択部２５で選択された正常モデルに含まれる基準値２８３と特徴量抽出部２４で抽出された特徴量との間の統計的な外れ度合から、異常度を算出する。このとき、異常度算出部２７は、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる異常度尺度２８２ａが示すアルゴリズムに従って、異常度を算出する。
【００３２】
異常検知部３２は、正常モデル選択部２５で選択された正常モデル２８ｃ、及び、特徴量抽出部２４で抽出された特徴量に基づいて、通信ネットワーク１４での通信における異常を検知する処理部である。より具体的には、異常検知部３２は、異常度算出部２７によって算出された異常度と閾値とを比較することで、異常の有無を検知して出力する。閾値は、予め設定された値、あるいは、ユーザによって設定される値である。
【００３３】
異常発生通知部３１は、異常検知部３２によって検知された異常の有無を通知する出力デバイスであり、例えば、警報器、ディスプレイデバイス、通信インタフェース等である。
【００３４】
通信部３０は、異常検知装置２０の外部の通信装置と通信する通信インタフェースであり、例えば、電話網用又は無線ＬＡＮ用の通信モジュールである。通信部３０は、外部の通信装置として、例えば、特徴量パラメータを配布するＷｅｂサーバである更新サーバと通信をする。
【００３５】
特徴量パラメータ更新部２９は、異常検知装置２０の外部から新たな特徴量パラメータを取得して内部のメモリに保持する処理部であり、例えば、通信部３０を介して更新サーバから配布される特徴量パラメータを取得して保持する。
【００３６】
正常モデル作成部２６は、通信ログ蓄積部２２に蓄積された通信ログ２２ａから正常モデルを作成し、作成した正常モデルを用いて、正常モデル保管部２８に保管されている正常モデル２８ａ〜２８ｂのうちで当該正常モデルに対応する正常モデルを更新する処理部である。具体的には、正常モデル作成部２６は、特徴量パラメータ更新部２９に保持されている特徴量パラメータを用いて、正常モデル保管部２８に保管されている正常モデルを更新する。正常モデル作成部２６は、実行頻度として、例えば、一定期間ごと、所定の運転回数（つまり、自動車のイグニッションＯＮからＯＦＦまでを一回の運転回数とした回数）ごと、あるいは、異常検知装置２０が通信する外部のサーバからの指示を受信するごとに、正常モデルを更新する。
【００３７】
なお、異常検知装置２０を構成する処理部（通信ログ取得部２１、動作モード判定部２３、特徴量抽出部２４、正常モデル選択部２５、正常モデル作成部２６、異常度算出部２７、特徴量パラメータ更新部２９、通信部３０、及び、異常検知部３２）の全部又は一部は、プロセッサがプログラムを実行することによってソフトウェア的に実現されてもよいし、ＦＰＧＡやＡＳＩＣ等の専用の論理回路によってハードウェア的に実現されてもよい。
【００３８】
次に、以上のように構成された本実施の形態に係る異常検知装置２０の動作について説明する。
【００３９】
図４は、本実施の形態に係る異常検知装置２０の動作（つまり、異常検知方法）を示すフローチャートである。
【００４０】
まず、通信ログ取得部２１は、通信ネットワーク１４における通信を記録することで通信ログを取得して通信ログ蓄積部２２に蓄積する（Ｓ１０）。例えば、通信ログ取得部２１は、自動車のイグニッションＯＮからＯＦＦまで、通信ネットワーク１４を伝送される全てのＣＡＮメッセージを取得し続け、タイムスタンプとともに、通信ログ蓄積部２２に蓄積する。その結果、図２に示されるような通信ログ２２ａが通信ログ蓄積部２２に蓄積される。なお、通信ログ蓄積部２２に蓄積された通信ログ２２ａは、動作モード判定部２３によって読み出されるが、通信ログ２２ａのうち、異常検知部３２によって異常が検知されなかった通信ログデータについては、順次、削除されていってもよい。
【００４１】
続いて、動作モード判定部２３は、通信ログ蓄積部２２に蓄積された通信ログ２２ａを解析することで動作モードを判定する（動作モード判定ステップ、Ｓ１１）。なお、このステップＳ１１の詳細は、図５のフローチャートを用いて後述する。
【００４２】
次に、正常モデル選択部２５は、正常モデル保管部２８に保管された複数の正常モデル２８ａ〜２８ｂから、動作モード判定部２３で判定された動作モードに対応する正常モデル２８ｃを選択する（正常モデル選択ステップ、Ｓ１２）。例えば、正常モデル選択部２５は、動作モード判定部２３が動作モードとして「緊急ブレーキ」と判定した場合には、正常モデル保管部２８に保管された複数の正常モデル２８ａ〜２８ｂから、「緊急ブレーキ」の動作モードに対応する正常モデル２８ｂを選択する（この場合には、正常モデル２８ｂが選択された正常モデル２８ｃとなる）。
【００４３】
続いて、特徴量抽出部２４は、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる特徴量パラメータ２８２が示す種類の特徴量を、通信ログ蓄積部２２に蓄積された通信ログ２２ａから抽出する（特徴量抽出ステップ、Ｓ１３）。例えば、特徴量抽出部２４は、正常モデル選択部２５で正常モデル２８ｂが選択された場合には、通信ログ蓄積部２２に蓄積された通信ログ２２ａから、正常モデル２８ｂに含まれる特徴量パラメータ２８２が示す種類の特徴量、つまり、３次元の特徴量ベクタを算出する。なお、このステップＳ１３の詳細は、図６のフローチャートを用いて後述する。
【００４４】
次に、異常度算出部２７は、正常モデル選択部２５で選択された正常モデルに含まれる基準値２８３と特徴量抽出部２４で抽出された特徴量との間の統計的な外れ度合から、異常度を算出する（異常度算出ステップ、Ｓ１４）。このとき、異常度算出部２７は、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる異常度尺度２８２ａが示すアルゴリズムに従って、異常度を算出する。例えば、異常度算出部２７は、正常モデル選択部２５で正常モデル２８ｂが選択された場合には、正常モデル２８ｂに含まれる基準値２８３である平均ベクタ及び共分散行列を用いた基準値と特徴量抽出部２４で抽出された３次元の特徴量ベクタとの「マハラノビス距離」を、異常度として、算出する。
【００４５】
続いて、異常検知部３２は、異常度算出部２７によって算出された異常度と閾値とを比較することで、異常の有無を検知して出力する（Ｓ１５）。例えば、異常検知部３２は、異常度算出部２７によって算出された「マハラノビス距離」が、予め定められた閾値よりも大きい場合に「異常有り」と判定し、一方、閾値と等しいか小さい場合に「異常無し」と判定し、その判定結果を検知結果として出力する。
【００４６】
最後に、異常発生通知部３１は、異常検知部３２によって検知された異常の有無を通知する（Ｓ１６）。例えば、異常発生通知部３１は、異常検知部３２から「異常有り」との検知結果が出力されてきた場合には、警報器によって異常が有ることを示す音声又はブザーを自動車の運転者に発したり、異常が有ることを示す情報を、通信インタフェースを介して管理センタに通知したりする。なお、管理センタへの通知時には、異常通知とともに異常を検知した通信ログデータやそのときの動作モードを示す情報を併せて送信してもよい。
【００４７】
なお、上記ステップＳ１２〜Ｓ１６は、ステップＳ１１で判定された動作モードが複数ある場合には、それらの複数の動作モードのそれぞれごとに、実行される。
【００４８】
図５Ａ〜図５Ｃは、図４のステップＳ１１（動作モードの判定）の詳細な処理手順を示すフローチャートである。
【００４９】
まず、動作モード判定部２３は、通信ログ蓄積部２２に蓄積された通信ログ２２ａの解析に際して、通信ログ２２ａの行番号用の変数Ｎを初期化（つまり、最初の行を示す「１」にセット）する（Ｓ２０）。
【００５０】
そして、動作モード判定部２３は、通信ログ２２ａの第Ｎ行目をチェックする（Ｓ２１）。つまり、動作モード判定部２３は、通信ログ蓄積部２２から通信ログ２２ａの第Ｎ行目エントリを読み出し、読み出した第Ｎ行目エントリが、予め保持している複数の動作モードのいずれかの開始パターンに一致するか否かを判断する。具体的には、動作モード判定部２３は、予め保持している複数の動作モードのそれぞれについて、動作モードの開始を示すＣＡＮ＿ＩＤ、又は、ＣＡＮ＿ＩＤとペイロードとの組み合わせを対応づけたテーブルを記憶しており、そのテーブルと、第Ｎ行目エントリに含まれるＣＡＮ＿ＩＤ、又は、ＣＡＮ＿ＩＤとペイロードとの組み合わせとが一致するか否かを判断する。例えば、ペイロードとして、ＡＤＡＳ（Ａｄｖａｎｃｅｄ  Ｄｒｉｖｅｒ  Ａｓｓｉｓｔａｎｃｅ  Ｓｙｓｔｅｍ）の種類と有効／無効あるいは操作指示の有無を識別するフィールド（ＡＤＡＳ有効フラグ、ＡＤＡＳ操作指示ビット等）の情報が登録されている。なお、このテーブルに保持されている複数の動作モードは、正常モデル保管部２８に保管されている複数の正常モデル２８ａ〜２８ｂに格納された動作モード識別子２８１が示す全ての動作モードに対応する。
【００５１】
その結果、動作モード判定部２３は、第Ｎ行目エントリが、予め保持している動作モードのいずれか（ここでは、「駐車支援」又は「緊急ブレーキ」）の開始パターンに一致すると判断した場合には（Ｓ２２でＹ、又は、Ｓ２３でＹ）、その動作モードの動作区間に対応する通信ログデータを抽出し（図５Ｂのフローチャート、又は、図５Ｃのフローチャート）、ステップＳ２４に戻る。
【００５２】
そして、動作モード判定部２３は、変数Ｎを１だけインクリメントした後に（Ｓ２４）、変数Ｎが通信ログ２２ａの最終行に一致するか否かを判断することで通信ログ２２ａの全てのエントリについての判断を終えたか否か判断する（Ｓ２５）。動作モード判定部２３は、通信ログ２２ａの全てのエントリについての判断を終えるまで、ステップＳ２１〜Ｓ２４を繰り返し、その後に終了する（Ｓ２６）。
【００５３】
図５Ｂは、図５ＡのステップＳ２２において第Ｎ行目エントリが動作モード「駐車支援」の開始パターンに一致すると判断された場合の処理手順を示すフローチャートである。
【００５４】
動作モード判定部２３は、まず、現在の変数Ｎを、動作モード「駐車支援」の開始行を示す変数Ｓにセットした後に（Ｓ３０）、変数Ｎを１だけインクリメントする（Ｓ３１）。
【００５５】
そして、動作モード判定部２３は、通信ログ２２ａの第Ｎ行目をチェックする（Ｓ３２）。つまり、動作モード判定部２３は、通信ログ蓄積部２２から通信ログ２２ａの第Ｎ行目エントリを読み出し、読み出した第Ｎ行目エントリが、動作モード「駐車支援」の終了パターンに一致するか否かを判断する。具体的には、動作モード判定部２３は、動作モード「駐車支援」の終了を示すＣＡＮ＿ＩＤ、又は、ＣＡＮ＿ＩＤとペイロードとの組み合わせを対応づけたテーブルを記憶しており、そのテーブルと、第Ｎ行目エントリに含まれるＣＡＮ＿ＩＤ、又は、ＣＡＮ＿ＩＤとペイロードとの組み合わせとが一致するか否かを判断する。
【００５６】
ここで、動作モード判定部２３は、変数Ｎが通信ログ２２ａの最終行に一致すると判断した場合には（Ｓ３３でＹ）、処理を終了するが（Ｓ２６）、そうでない場合には（Ｓ３３でＮ）、ステップＳ３２でのチェックの結果、第Ｎ行目エントリが動作モード「駐車支援」の終了パターンに一致するか否かを判断する（Ｓ３４）。そして、動作モード判定部２３は、第Ｎ行目エントリが動作モード「駐車支援」の終了パターンに一致すると判断するまで（Ｓ３４でＹ）、ステップＳ３１〜Ｓ３４を繰り返す。
【００５７】
第Ｎ行目エントリが動作モード「駐車支援」の終了パターンに一致すると判断した場合には（Ｓ３４でＹ）、動作モード判定部２３は、現在の変数Ｎを、動作モード「駐車支援」の最終行を示す変数Ｅにセットした後に（Ｓ３５）、通信ログ２２ａのうち第Ｓ行〜第Ｅ行目のエントリを動作モード「駐車支援」の通信ログデータとして抽出し（Ｓ３６）、図５ＡのステップＳ２４に戻る。
【００５８】
図５Ｃは、図５ＡのステップＳ２３において第Ｎ行目エントリが動作モード「緊急ブレーキ」の開始パターンに一致すると判断された場合の処理手順を示すフローチャートである。図５Ｃの処理（Ｓ４０〜Ｓ４６）は、基本的には、図５Ｂに示される動作モード「駐車支援」のケースでの処理（Ｓ３０〜Ｓ３６）と同じである。ただし、図５Ｂでは、動作モードが「駐車支援」であったが、図５Ｃでは、動作モードが「緊急ブレーキ」である点で異なる。図５Ｃの処理（Ｓ４０〜Ｓ４６）の説明は省略する。
【００５９】
図６は、図４のステップＳ１３（特徴量の抽出）の詳細な処理手順を示すフローチャートである。
【００６０】
まず、特徴量抽出部２４は、動作モード判定部２３で判定された動作モードについて、動作モード判定部２３から、動作モード判定部２３で抽出された通信ログデータを取得し、正常モデル選択部２５から、正常モデル選択部２５で選択された正常モデル２８ｃを取得する（Ｓ５０）。
【００６１】
そして、特徴量抽出部２４は、初期化処理として、変数Ｎに、動作モード判定部２３から取得した通信ログデータの先頭行の番号をセットし（Ｓ５１）、時間区間開始用の変数Ｔに、第Ｎ行目のエントリのタイムスタンプの値をセットし（Ｓ５２）、時間区間幅用の変数ｄに、正常モデル選択部２５で選択された正常モデル２８ｃの特徴量パラメータ２８２に含まれる「区間幅」パラメータの値（例えば、動作モードが“駐車支援”と判定された場合、３００ｍｓｅｃ）をセットする（Ｓ５３）。
【００６２】
次に、特徴量抽出部２４は、動作モード判定部２３から取得した通信ログデータが、時間区間Ｔ〜（Ｔ＋ｄ）の間で終了していないかを判断する（Ｓ５４）。具体的には、通信ログデータの最終エントリのタイムスタンプをＴｅとしたとき、Ｔ＋ｄがＴｅ以下であるか否かを判断する。
【００６３】
その結果、通信ログデータが終了していないと判断した場合には（Ｓ５４でＹ）、特徴量抽出部２４は、動作モード判定部２３から取得した通信ログデータから、時間区間Ｔ〜（Ｔ＋ｄ）内にタイムスタンプ２２２をもつ全てのエントリを抽出し（Ｓ５５）、抽出した全てのエントリを用いて、正常モデル選択部２５から取得した正常モデル２８ｃの特徴量パラメータ２８２に従って特徴量ベクタを作成し（Ｓ５６）、作成した特徴量ベクタを異常度算出部２７に出力する（Ｓ５７）。そして、特徴量抽出部２４は、変数Ｔに変数ｄを加算することで変数Ｔをインクリメントし（Ｓ５８）、再び、ステップＳ５４〜Ｓ５８を繰り返す。
【００６４】
一方、ステップＳ５４において、動作モード判定部２３から取得した通信ログデータが時間区間Ｔ〜（Ｔ＋ｄ）の間で終了していると判断した場合には（Ｓ５４でＮ）、特徴量抽出部２４は、処理を終了する。
【００６５】
なお、特徴量ベクタの作成（Ｓ５６）では、より詳しくは、特徴量抽出部２４は、次の第１ステップ〜第３ステップのように処理をする。
【００６６】
まず、第１ステップにおいて、特徴量抽出部２４は、まず、正常モデル選択部２５から取得した正常モデル２８ｃの特徴量パラメータ２８２を参照することで、特徴量ベクタの次元数、及び、特徴量ベクタの各要素の抽出特徴量情報（着目する情報がＩＤ（ＣＡＮ＿ＩＤ）であるかペイロードであるかの区別）を取得する。例えば、特徴量抽出部２４は、正常モデル選択部２５から取得した正常モデル２８ｃが図３に示される正常モデル２８ａである場合には、正常モデル２８ａの特徴量パラメータ２８２を参照することで、特徴量ベクタの次元数として「２」を取得し、特徴量ベクタの各要素の抽出特徴量情報として「ＩＤ」及び「ペイロード」を取得する。
【００６７】
次に、第２ステップにおいて、特徴量抽出部２４は、取得した抽出特徴量情報が「ＩＤ」である場合には、動作モード判定部２３から取得した通信ログデータを対象として、対象の時間区間Ｔ〜（Ｔ＋ｄ）において、指定されたＣＡＮ＿ＩＤをもつＣＡＮメッセージが送信された回数（エントリの個数）を、特徴量ベクタの第１要素として算出する。また、特徴量抽出部２４は、取得した抽出特徴量情報が「ペイロード」である場合には、動作モード判定部２３から取得した通信ログデータを対象として、対象の時間区間Ｔ〜（Ｔ＋ｄ）において、特徴量パラメータ２８２で指定されたＣＡＮ＿ＩＤをもつＣＡＮメッセージ（エントリ）を抽出し、抽出したＣＡＮメッセージのペイロードのうち特徴量パラメータ２８２で指定されたフィールドの値（２個以上のＣＡＮメッセージが抽出された場合には、それらのフィールドの値の平均値）を特徴量ベクタの第２要素として算出する。なお、対象の時間区間Ｔ〜（Ｔ＋ｄ）において特徴量パラメータ２８２で指定されたＣＡＮ＿ＩＤをもつＣＡＮメッセージ（エントリ）がひとつも抽出されなかった場合には、特徴量抽出部２４は、直前の時間区間で算出された値を特徴量ベクタの要素とする。
【００６８】
最後に、第３ステップにおいて、特徴量抽出部２４は、上記第２ステップで算出した次元数分の要素をもつ特徴量ベクタを作成する。
【００６９】
以上のような異常検知装置２０による処理により、通信ネットワーク１４において、例えば、図７に示されるようなサイバー攻撃を受けた場合に、図８に示されるアルゴリズムによって、異常として検知され得る。
【００７０】
図７は、通信ネットワーク１４が受けるサイバー攻撃の一例を示す図である。ここでは、通信ネットワーク１４で伝送されるＣＡＮメッセージの出現タイミングを示すタイムチャートが示されている。タイムチャート上の四角は、正常なＣＡＮメッセージ（つまり、正常ＣＡＮメッセージ１６ａ〜１６ｅ）であり、一定の送信間隔Ｔで出現している。一般に、正常状態では、ＣＡＮメッセージ（つまり、正常ＣＡＮメッセージ）は、ＣＡＮ＿ＩＤごとに、決まった周期で定期的に送信される。
【００７１】
これに対して、タイムチャート上の三角は、通信ネットワーク１４へ不正に注入されたＣＡＮメッセージ（つまり、不正ＣＡＮメッセージ１７ａ〜１７ｇ）であり、周期性をもたないタイミングで出現している。このような不正ＣＡＮメッセージ１７ａ〜１７ｇが発生する状態が異常状態である。不正ＣＡＮメッセージ１７ａ〜１７ｇは、例えば、ＣＡＮ＿ＩＤが正常ＣＡＮメッセージと同じであるが、ペイロードが偽造されており正常ＣＡＮメッセージのものと異なっており、ＣＡＮバスの診断ポート等から注入される。不正ＣＡＮメッセージ１７ａ〜１７ｇのペイロードには、不正な操作量（例えば、ステアリング／ブレーキ操作量が正常時よりも大きい／小さい値等）、不正なトリガ指示（例えば、緊急ブレーキ／エアバッグを発動させるビット、駐車支援の開始トリガとなるビット）、不正な表示量（例えば、速度／エンジン回転数／車輪速の表示量）等が設定される。このような不正ＣＡＮメッセージ１７ａ〜１７ｇが通信ネットワーク１４に注入されるサイバー攻撃によって、ステアリング等の不正操作が可能になる。
【００７２】
図８は、本実施の形態に係る異常検知装置２０による異常検知のアルゴリズムの概念を示す図である。ここでは、横軸をＣＡＮ＿ＩＤが「ＩＤａ」であるＣＡＮメッセージの送信頻度Ｎａ（回／ｓｅｃ）とし、縦軸をＣＡＮ＿ＩＤが「ＩＤｂ」であるＣＡＮメッセージの送信頻度Ｎｂ（回／ｓｅｃ）とした場合における２次元の特徴量ベクタ（Ｎａ、Ｎｂ）の例がプロットされている。
【００７３】
図８に示される例では、「正常モデル」は、２次元の特徴量ベクタ（１／Ｔａ、１／Ｔｂ）を中心として一定範囲内にある特徴量ベクタの集まりである。つまり、この「正常モデル」は、ＣＡＮ＿ＩＤが「ＩＤａ」であるＣＡＮメッセージが略送信周期Ｔａで繰り返し送信され、かつ、ＣＡＮ＿ＩＤが「ＩＤｂ」であるＣＡＮメッセージが略送信周期Ｔｂで繰り返し送信される状態に対応している。
【００７４】
本実施の形態に係る異常検知装置２０によれば、通信ログ２２ａの解析によって、図８に示される「正常モデル」から大きく距離が外れた特徴量ベクタ１８ａが観察された場合に、「異常度が高い」と判断され、一方、「正常モデル」から大きく距離が外れていない特徴量ベクタ１８ｂが観察された場合に、「異常度が低い」と判断される。このように、異常検知装置２０により、正常モデルとの間の統計的な外れ度合（例えば、異常度尺度で定まる距離）が異常度として算出される。
【００７５】
なお、図８では、説明の便宜上、特徴量ベクタが２次元である場合を例に説明したが、特徴量ベクタが３以上の次元であっても、基本的な異常検知のアルゴリズムは同じである。図８に示される２次元空間を３以上の多次元空間に拡張したうえで、同様のアルゴリズムで異常が検知される。
【００７６】
以上のように、本実施の形態に係る異常検知装置２０は、通信ネットワーク１４を備えて動作する対象物における異常を検知する装置であって、対象物が取り得る複数の動作モードのそれぞれに対応し、通信ネットワーク１４での正常時の通信における特徴量の特性を示すデータである複数の正常モデル２８ａ〜２８ｂを保管する正常モデル保管部２８と、通信ネットワーク１４の通信ログから対象物の動作モードを判定する動作モード判定部２３と、正常モデル保管部２８に保管された複数の正常モデルから、動作モード判定部２３で判定された動作モードに対応する正常モデルを選択する正常モデル選択部２５と、正常モデル選択部２５で選択された正常モデルに従って通信ログから通信ネットワーク１４での通信における特徴量を抽出する特徴量抽出部２４と、正常モデル選択部２５で選択された正常モデル、及び、特徴量抽出部２４で抽出された特徴量に基づいて、通信ネットワーク１４での通信における異常を検知する異常検知部３２とを備える。
【００７７】
これにより、通信ログにおけるコマンドのひとつひとつを解析するのではなく、複数の正常モデルの中から対象物の動作モードに対応した正常モデルに絞り込み、絞り込んだ正常モデルに従って通信ログから特徴量を抽出したうえで異常が検知されるので、従来よりも削減された計算負荷で異常度が算出される。しかも、通信ログを用いて異常が検知されるので、異常の検知について、精度が劣化されることはない。よって、精度を劣化させることなく、従来よりも削減された計算負荷で異常を検知することができる異常検知装置が実現される。
【００７８】
また、正常モデル２８ａ〜２８ｂには、通信ネットワーク１４での通信における異常の検知に用いるための特徴量の種類を示す特徴量パラメータ２８２が含まれ、特徴量抽出部２４は、正常モデル選択部２５で選択された正常モデルに含まれる特徴量パラメータ２８２が示す種類の特徴量を、通信ログ２２ａから抽出する。
【００７９】
これにより、正常モデルに含まれる特徴量パラメータ２８２を参照することで特徴量が抽出されるので、正常モデルに対応する動作モードに特有の特徴量の種類を示す特徴量パラメータを正常モデルに含めることで、より精度の高い異常検知が可能になる。
【００８０】
また、通信ネットワーク１４での通信における異常度を算出する異常度算出部２７をさらに備え、正常モデル２８ａ〜２８ｂには、さらに、特徴量パラメータ２８２が示す特徴量の種類に対応する特徴量の基準値２８３が含まれ、異常度算出部２７は、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる特徴量の基準値２８３と特徴量抽出部２４で抽出された特徴量との間の外れ度合から、異常度を算出し、異常検知部３２は、異常度算出部２７によって算出された異常度と閾値とを比較することで、異常の有無を検知する。
【００８１】
これにより、正常モデル２８ａ〜２８ｂには特徴量パラメータ２８２が示す特徴量の種類に対応する特徴量の基準値２８３が含まれ、その基準値２８３を用いて異常度が算出されるので、動作モードに対応した正常モデルごとに異常度の算出基準を規定することができ、より精度の高い異常検知が実現される。
【００８２】
また、正常モデル２８ａ〜２８ｂには、さらに、異常度の算出に用いるアルゴリズムを示す異常度尺度２８２ａが含まれ、異常度算出部２７は、正常モデル選択部２５で選択された正常モデル２８ｃに含まれる異常度尺度２８２ａが示すアルゴリズムに従って、異常度を算出する。
【００８３】
これにより、正常モデル２８ａ〜２８ｂには異常度の算出に用いるアルゴリズムを示す異常度尺度２８２ａが含まれ、そのアルゴリズムに従って異常度が算出されるので、動作モードに対応した正常モデルごとに適切な異常度の算出アルゴリズムを規定することができ、より精度の高い異常検知が実現される。
【００８４】
また、異常検知装置２０は、さらに、異常検知部３２によって検知された異常の有無を通知する異常発生通知部３１を備える。
【００８５】
これにより、異常の有無が通知されるので、異常の発生を即座に知ることができる。
【００８６】
また、異常検知装置２０は、さらに、通信ネットワーク１４における通信を記録することで通信ログを取得する通信ログ取得部２１と、通信ログ取得部２１によって取得された通信ログを蓄積する通信ログ蓄積部２２とを備え、動作モード判定部２３は、通信ログ蓄積部２２に蓄積された通信ログ２２ａから動作モードを判定する。
【００８７】
これにより、異常検知装置２０に通信ログ取得部２１と通信ログ蓄積部２２とが備えられるので、通信ネットワーク１４上に別途、通信ログを蓄積するＥＣＵを設けること、及び、そのＥＣＵから異常検知装置２０に通信ログを転送する制御をすることが不要となる。
【００８８】
図９は、本実施の形態に係る異常検知装置２０が備える正常モデル作成部２６の動作を示すフローチャートである。
【００８９】
まず、正常モデル作成部２６は、動作モード判定部２３で判定された動作モードについて、動作モード判定部２３から、動作モード判定部２３で抽出された通信ログデータ、及び、判定された動作モードを示す識別子を取得する（Ｓ６０）。
【００９０】
次に、正常モデル作成部２６は、特徴量パラメータ更新部２９に対して上記識別子を提示したうえで更新用の特徴量パラメータが保持されているか否かを問い合わせることで、特徴量パラメータ更新部２９に上記識別子が示す動作モードに対応する特徴量パラメータが保持されているか否かを判断する（Ｓ６１）。
【００９１】
その結果、特徴量パラメータ更新部２９に特徴量パラメータが保持されている場合には（Ｓ６１でＹ）、正常モデル作成部２６は、特徴量パラメータ更新部２９から、そこに保持されている特徴量パラメータを取得し（Ｓ６２）、一方、特徴量パラメータ更新部２９に特徴量パラメータが保持されていない場合には（Ｓ６１でＮ）、正常モデル保管部２８から、上記識別子が示す動作モードに対応する正常モデルデータに含まれる特徴量パラメータを取得する（Ｓ６３）。
【００９２】
続いて、正常モデル作成部２６は、行番号用の変数Ｎをゼロに、時間区間開始用の変数Ｔに動作モード判定部２３で抽出された通信ログデータの先頭エントリのタイムスタンプをセットし（Ｓ６４）、かつ、時間区間幅用の変数ｄに、上記ステップＳ６２又はＳ６３で取得した特徴量パラメータに含まれる区間幅をセットする（Ｓ６５）。
【００９３】
次に、正常モデル作成部２６は、動作モード判定部２３から取得した通信ログデータに、時間区間Ｔ〜（Ｔ＋ｄ）の間で終了していないかを判断する（Ｓ６６）。具体的には、通信ログデータの最終エントリのタイムスタンプをＴｅとしたとき、Ｔ＋ｄがＴｅ以下であるか否かを判断する。
【００９４】
その結果、通信ログデータが終了していないと判断した場合には（Ｓ６６でＹ）、正常モデル作成部２６は、動作モード判定部２３から取得した通信ログデータから、時間区間Ｔ〜（Ｔ＋ｄ）内にタイムスタンプ２２２をもつ全てのエントリを抽出し（Ｓ６７）、抽出した全てのエントリを用いて、上記ステップＳ６２又はＳ６３で取得した特徴量パラメータに従って特徴量ベクタを作成する（Ｓ６８）。なお、この正常モデル作成部２６による特徴量ベクタの作成（Ｓ６８）は、特徴量抽出部２４による特徴量ベクタの作成（Ｓ５６；上記第１ステップ〜第３ステップ）と同じである。
【００９５】
そして、正常モデル作成部２６は、変数Ｎを１だけインクリメントし、かつ、変数Ｔに変数ｄを加算することで変数Ｔをインクリメントし（Ｓ６９）、いま作成した特徴量ベクタを変数Ｎに対応づけて保持した後に（Ｓ７０）、再び、ステップＳ６６〜Ｓ７０を繰り返す。
【００９６】
一方、ステップＳ６６において、動作モード判定部２３から取得した通信ログデータが時間区間Ｔ〜（Ｔ＋ｄ）の間で終了していると判断した場合には（Ｓ６６でＮ）、正常モデル作成部２６は、上記ステップＳ６２又はＳ６３で取得した特徴量パラメータに含まれる「モデル表記」を参照することで、「モデル表記」が「即値」及び「統計量」のいずれを示すかを判断する（Ｓ８０）。
【００９７】
その結果、「モデル表記」が「即値」を示す場合には（Ｓ８０で「即値」）、正常モデル作成部２６は、上記ステップＳ７０で保持した変数Ｎ及び特徴量ベクタをそのまま正常モデルを構成する特徴量パラメータの基準値として設定し（Ｓ８１）、一方、「モデル表記」が「統計量」を示す場合には（Ｓ８０で「統計量」）、上記ステップＳ７０で保持した変数Ｎ及び特徴量ベクタから平均ベクタ及び共分散行列を計算し（Ｓ８２）、計算した平均ベクタ及び共分散行列を、正常モデルを構成する特徴量パラメータの基準値として設定する（Ｓ８３）。
【００９８】
そして、正常モデル作成部２６は、上記ステップＳ６２又はＳ６３で取得した特徴量パラメータと、上記ステップＳ８１又はＳ８２〜Ｓ８３で設定した特徴量パラメータの基準値とを有する正常モデルで、正常モデル保管部２８に保管された上記識別子に対応する正常モデルを更新する（Ｓ８４）。
【００９９】
図１０は、本実施の形態に係る異常検知装置２０が備える特徴量パラメータ更新部２９の動作を示すフローチャートである。
【０１００】
まず、特徴量パラメータ更新部２９は、更新サーバへの問い合わせタイミングが到来したか否かを判断する（Ｓ９０）。例えば、特徴量パラメータ更新部２９は、予め定められた周期又は時刻と内部のカレンダタイマが示す値とを比較することで、この判断をする。
【０１０１】
その結果、更新サーバへの問い合わせタイミングが到来したと判断した場合には（Ｓ９０でＹ）、特徴量パラメータ更新部２９は、更新サーバに対して更新データ（つまり、特徴量パラメータ）があるか否かを問い合わせ（Ｓ９６）、更新データ（つまり、特徴量パラメータ）があるときにだけ（Ｓ９７でＹ）、更新サーバから更新データ（つまり、特徴量パラメータ）を取得して保持する（Ｓ９８）。
【０１０２】
一方、更新サーバへの問い合わせタイミングが到来したと判断しなかった場合には（Ｓ９０でＮ）、特徴量パラメータ更新部２９は、正常モデル作成部２６から更新用の特徴量パラメータが保持されているか否かの問い合わせがあるか否かを判断し（Ｓ９１）、問い合わせがあると判断したときに（Ｓ９１でＹ）、正常モデル作成部２６から問い合わせに係る動作モードの識別子を取得する（Ｓ９２）。
【０１０３】
そして、特徴量パラメータ更新部２９は、正常モデル作成部２６から取得した識別子が示す正常モデルについての更新用の特徴量パラメータを保持しているか否かを判断し（Ｓ９３）、保持していると判断した場合には（Ｓ９３でＹ）、その特徴量パラメータを正常モデル作成部２６に送信し（Ｓ９４）、送信した元の特徴量パラメータを内部のメモリから削除する（Ｓ９５）。
【０１０４】
以上のように、本実施の形態に係る異常検知装置２０は、さらに、通信ログから正常モデルを作成し、作成した正常モデルを用いて、当該正常モデルに対応する動作モードに対応する、正常モデル保管部２８に保管されている正常モデルを更新する正常モデル作成部２６を備える。
【０１０５】
これにより、通信ログから正常モデルが作成されるので、対象物を実際に正常動作させた状態で通信ログを自動生成させることが可能となり、正常モデルの作成負荷が軽減されるとともに、対象物の動作に応じて正常モデルを更新させる自動適応が可能となる。
【０１０６】
また、本実施の形態に係る異常検知装置２０は、さらに、異常検知装置２０の外部から新たな特徴量パラメータを取得する特徴量パラメータ更新部２９を備え、正常モデル作成部２６は、特徴量パラメータ更新部２９によって取得された特徴量パラメータを用いて、正常モデル保管部２８に保管されている正常モデルを更新する。
【０１０７】
これにより、外部から異常検知装置２０に特徴量パラメータを与えることで、異常検知装置が備える正常モデル内の特徴量パラメータが更新されるので、正常モデルの精度を高める等の動的な正常モデルの構造変更が可能になり、正常モデルのメンテナンスも容易になる。
【０１０８】
以上、本発明に係る異常検知装置及び異常検知方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の主旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本発明の範囲内に含まれる。
【０１０９】
例えば、上記実施の形態では、通信ネットワークを備えて動作する対象物として、自動車が例示されたが、対象物は、自動車に限られず、ＣＡＮ等の通信ネットワークを備える輸送用機器、工場、工作機械等であってもよい。
【０１１０】
また、上記実施の形態では、通信ネットワークとして、ＣＡＮが例示されたが、ＬＩＮ、ＦｌｅｘＲａｙ（登録商標）、ＭＯＳＴ（登録商標）等の他の車載ネットワークであってもよいし、車載とは異なる工作機械等の他の機器に搭載される通信ネットワークであってもよい。
【０１１１】
また、上記実施の形態では、通信ログから動作モードが判定されたが、自動車に搭載されているＡＤＡＳ（Ａｄｖａｎｃｅｄ  Ｄｒｉｖｅｒ  Ａｓｓｉｓｔａｎｃｅ  Ｓｙｓｔｅｍ）から得られる各種情報から動作モードを判定してもよい。
【０１１２】
また、上記実施の形態で説明した異常検知方法は、異常検知装置２０によって実行されるプログラムとして実現してもよいし、そのようなプログラムが記録されたＤＶＤ等のコンピュータ読み取り可能な記録媒体として実現してもよい。
【産業上の利用可能性】
【０１１３】
本発明は、通信ネットワークを備えて動作する対象物における異常を検知する異常検知装置として、より詳しくは、精度を劣化させることなく、従来よりも削減された計算負荷で異常を検知することができる異常検知装置として、例えば、ＣＡＮバスに接続されるＥＣＵとして、利用できる。
【符号の説明】
【０１１４】
１０  通信システム
１２ａ〜１２ｄ  ＥＣＵ
１４  通信ネットワーク
１６ａ〜１６ｅ  正常ＣＡＮメッセージ
１７ａ〜１７ｇ  不正ＣＡＮメッセージ
１８ａ、１８ｂ  特徴量ベクタ
２０  異常検知装置
２１  通信ログ取得部
２２  通信ログ蓄積部
２２１  行
２２２  タイムスタンプ
２２３  ＣＡＮ＿ＩＤ
２２４  ペイロード
２２ａ  通信ログ
２３  動作モード判定部
２４  特徴量抽出部
２５  正常モデル選択部
２６  正常モデル作成部
２７  異常度算出部
２８  正常モデル保管部
２８ａ〜２８ｂ、２８ｃ  正常モデル
２８１  動作モード識別子
２８２  特徴量パラメータ
２８２ａ  異常度尺度
２８３  基準値
２９  特徴量パラメータ更新部
３０  通信部
３１  異常発生通知部
３２  異常検知部
【図１】
2018160078.tif 000003
【図２】
2018160078.tif 000004
【図３】
2018160078.tif 000005
【図４】
2018160078.tif 000006
【図５Ａ】
2018160078.tif 000007
【図５Ｂ】
2018160078.tif 000008
【図５Ｃ】
2018160078.tif 000009
【図６】
2018160078.tif 000010
【図７】
2018160078.tif 000011
【図８】
2018160078.tif 000012
【図９】
2018160078.tif 000013
【図１０】
2018160078.tif 000014