(57)【要約】  車載ネットワークに流れるデータフレームを処理する情報処理方法は、受信したデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して受信ログに１つのレコードとして記録するフレーム収集ステップと、複数のレコードから、複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、各領域におけるペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、この特徴量に基づいて、ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択したペイロード分割パターンが示す領域と、特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含む。
2018105330.tif 000002
【特許請求の範囲】
【請求項１】
記憶部を備える情報処理システムが行う、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、
前記車載ネットワークに流れる複数の前記データフレームを受信し、前記複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して前記記憶部に保持される受信ログに１つのレコードとして記録するフレーム収集ステップと、
複数の前記レコードから、前記複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、前記領域における前記ペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、前記特徴量に基づいて、前記複数のペイロード分割パターン候補から、前記ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択した前記ペイロード分割パターンが示す領域と、前記特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含む
情報処理方法。
【請求項２】
前記受信ログは、前記複数のレコードの受信された順序を示す情報をさらに含み、
前記特徴量は、
前記時系列変化のパターン数を表す第１の特徴量と、
前記時系列変化の発生頻度を表す第２の特徴量と、
前記時系列変化の変化量に関する統計情報を表す第３の特徴量との少なくとも１つを含む
請求項１に記載の情報処理方法。
【請求項３】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記特徴量に基づいて、前記ペイロードの値に1回以上の時系列変化があり、前記時系列変化に含まれる各回の変化量が所定の大きさ以下である領域を示す前記ペイロード分割パターン候補を、第１カテゴリのフィールドの領域を示す前記ペイロード分割パターンとして選択する
請求項２に記載の情報処理方法。
【請求項４】
前記特徴量は前記第２の特徴量及び前記第３の特徴量を含み、
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記複数のペイロード分割パターン候補から、前記第２の特徴量及び前記第３の特徴量に基づいて、前記ペイロードの値が物理量を示す連続値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、前記第１カテゴリのフィールドを示す前記ペイロード分割パターンを選択する連続値フィールド抽出ステップとを実行する
請求項２又は３に記載の情報処理方法。
【請求項５】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記複数のペイロード分割パターン候補のそれぞれについて、同一のデータ長の領域を示す前記ペイロード分割パターン候補の中での前記第３の特徴量の外れ具合を示す外れ値スコアを算出し、
前記ペイロード分割パターン候補の中で開始ビットが同一である領域を示す前記ペイロード分割パターン候補の前記外れ値スコアの平均値を算出し、
前記平均値が所定の閾値以上である領域を示す前記ペイロード分割パターン候補から、当該ペイロード分割パターン候補に含まれるペイロード分割パターン候補の前記第２の特徴量の大小関係に基づいて前記連続値カテゴリに該当するフィールドの領域を示すペイロード分割パターンを選択する
請求項４に記載の情報処理方法。
【請求項６】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記複数のペイロード分割パターン候補から、前記特徴量に基づいて、前記ペイロードの値に毎回変化がある領域であって、当該ペイロードの値の各回の変化量が一定である領域を示すペイロード分割パターンをカウンタカテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、前記第１カテゴリのフィールドを示す前記ペイロード分割パターンを選択する
請求項４又は５に記載の情報処理方法。
【請求項７】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記特徴量に基づいて、前記ペイロードの値に1回以上の時系列変化があり、前記ペイロードの値が離散値を取る領域を示す前記ペイロード分割パターン候補を、第２カテゴリのフィールドの領域を示す前記ペイロード分割パターンとして選択する
請求項６に記載の情報処理方法。
【請求項８】
前記第２カテゴリは、
前記フィールド内の前記ペイロードの値の整合性をチェックするためのチェックサムカテゴリと、
前記フィールド内の前記ペイロードの値が前記車載ネットワークを含む車両の所定の状態を示すステータスカテゴリとの少なくとも一方である
請求項７に記載の情報処理方法。
【請求項９】
前記情報処理システムは前記フィールド抽出ステップにおいて、
固定値フィールド抽出ステップと、
カウンタフィールド抽出ステップと、
前記連続値フィールド抽出ステップと、
第２カテゴリフィールド抽出ステップとを順に実行し、
前記固定値フィールド抽出ステップでは、前記複数のペイロード分割パターン候補から、前記第１の特徴量が１であるペイロード分割パターン候補を固定値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択し、前記複数のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第１のペイロード分割パターン候補とし、
前記カウンタフィールド抽出ステップでは、前記第１のペイロード分割パターン候補から、前記カウンタカテゴリのフィールドの領域を示すペイロード分割パターンを選択し、前記第１のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第２のペイロード分割パターン候補とし、
前記連続値フィールド抽出ステップでは、前記第２のペイロード分割パターン候補から、前記第２の特徴量と、前記第３の特徴量と、を用いて、前記第２のペイロード分割パターン候補の中から、前記連続値カテゴリのフィールドの領域を示すペイロード分割パターンを選択し、前記第２のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第３のペイロード分割パターン候補とし、
前記第２カテゴリフィールド抽出ステップでは、前記第３のペイロード分割パターン候補を、前記第２カテゴリフィールドとして選択する
請求項７に記載の情報処理方法。
【請求項１０】
さらに前記情報処理システムが実行する、
前記フィールド抽出結果及び前記受信ログから、前記選択されたペイロード分割パターンが示すフィールドの値の時系列変化の変化量に関する統計情報に基づいて、当該フィールドの値の変化の正常範囲を示す正常モデルを生成し、生成した前記正常モデルをさらに出力する特徴抽出ステップを含む
請求項１から９のいずれか１項に記載の情報処理方法。
【請求項１１】
前記複数のデータフレームのそれぞれは、データフレームの種類を示すデータ種別ＩＤを含み、
前記情報処理システムは、
前記フレーム収集ステップにおいて、前記ペイロード及び前記データ種別ＩＤを前記１つのレコードとして前記受信ログに記録し、
前記フィールド抽出ステップを、前記データ種別ＩＤが共通のデータフレームを対象に実行する
請求項１から１０のいずれか１項に記載の情報処理方法。
【請求項１２】
プロセッサ及び記憶部を備え、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理システムであって、
前記プロセッサは、
前記車載ネットワークに流れる複数の前記データフレームを受信し、前記複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して前記記憶部に保持される受信ログに１つのレコードとして記録し、
複数の前記レコードから、前記複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、前記領域における前記ペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、
前記特徴量に基づいて、前記複数のペイロード分割パターン候補から、前記ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、
選択した前記ペイロード分割パターンが示す領域と、前記特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力する
情報処理システム。
【請求項１３】
プロセッサ及び記憶部を備える情報処理システムにおいて、前記プロセッサによって実行されることで前記情報処理システムに請求項１に記載の情報処理方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、車載ネットワークに流れるデータの情報処理に関する。
【背景技術】
【０００２】
近年、自動車の中のシステムには、電子制御ユニット（以下、ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と呼ばれる装置が多数配置されている。これらのＥＣＵをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の通信規格が存在する。その中でも最も主流な車載ネットワークの規格の一つに、Ｃｏｎｔｒｏｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（以降、ＣＡＮ）がある。【０００３】
ＣＡＮ通信のネットワークでは、通信線に２本線のバスが用いられ、このバスに接続されているＥＣＵはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。フレームを送信するノード（以下、送信ノード）は２本のバスに電圧をかけ、それぞれのバス間での電位差の有無に応じたレセシブと呼ばれる“１”の値、及びドミナントと呼ばれる“０”の値を送信することでフレームのバイナリデータを送信する。複数の送信ノードが全く同一のタイミングで、レセシブとドミナントを送信した場合は、ドミナントが優先されて送信される。【０００４】
受信ノードは、受け取ったフレームのフォーマットに異常がある場合には、エラーフレームと呼ばれるフレームを送信する。エラーフレームは、例えば連続する６ビットのドミナントで始まるフレームであり、このフレームを受信した送信ノード及び他の受信ノードはエラーの発生を検出する。【０００５】
またＣＡＮでは送信先又は送信元を示す識別子は存在せず、送信ノードはフレームごとにデータの種類等を示すＩＤを付けて送信し、各受信ノードはあらかじめ決められたＩＤを含むフレームのみ受信する。また、ＣＡＮはＣＳＭＡ／ＣＡ（Ｃａｒｒｉｅｒ  Ｓｅｎｓｅ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ  ｗｉｔｈ  Ｃｏｌｌｉｓｉｏｎ  Ａｖｏｉｄａｎｃｅ）方式を採用しており、複数ノードの同時送信時にはＩＤによる調停が行われ、ＩＤの値が小さいフレームが優先的に送信される。【０００６】
一方、攻撃者がＣＡＮのバスにアクセスし、不正なフレームを送信することで、ＥＣＵを不正制御するといった脅威が存在し、セキュリティ対策が検討されている。【０００７】
例えば特許文献１では、車載ネットワーク監視装置が提案されている。特許文献１によれば、フレームがあらかじめ規定された通信間隔でネットワークに送信されているかを検出し、規定された通信間隔から外れる異常なフレームを不正と判断することで、不正フレームによる制御を防止する方法が開示されている。ただし、より高い精度で不正フレームを検知するためには、フレームに含まれるペイロードの内容を検証する必要がある。【０００８】
しかしながら、一般に車載ネットワークで送受信されるフレームの仕様は標準化されておらず、カーメーカが独自に設計しているため、ペイロード内における、意味のある複数の単位の区切りをサードパーティが知ることはできない。ペイロードに含まれているデータの種類が不明では、ペイロードを検証して不正なフレームを検知することは困難である。また、同一のカーメーカの自動車であっても、車種又は年式によっても、フレームの仕様は変更され得るため、各自動車に対して、監視装置の設計のためにフレームを検証するシステムを構築することは多大な労力を要する。【０００９】
このような課題の解決手段として、非特許文献１において、観測データのみから収集したフレームに含まれるペイロードを意味のある単位で分割し、分割して得たペイロードの部分ごとにホワイトリストを作成する方法が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第５６６４７９９号公報
【非特許文献】
【００１１】
【非特許文献１】Ｍ．Ｍａｒｋｏｖｉｔｚ、Ａ．Ｗｏｏｌ、“Ｆｉｅｌｄ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ，  Ｍｏｄｅｌｉｎｇ  ａｎｄ  Ａｎｏｍａｌｙ  Ｄｅｔｅｃｔｉｏｎ  ｉｎ  Ｕｎｋｎｏｗｎ  ＣＡＮ  Ｂｕｓ  Ｎｅｔｗｏｒｋ”、Ｅｍｂｅｄｄｅｄ  Ｓｅｃｕｒｉｔｙ  ｉｎ  ＣＡＲｓ、２０１５
【発明の概要】
【００１２】
本開示の一態様に係る情報処理方法は、記憶部を備える情報処理システムが行う、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、車載ネットワークに流れる複数のデータフレームを受信し、複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して記憶部に保持される受信ログに１つのレコードとして記録するフレーム収集ステップと、複数のそのレコードから、複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、当該領域におけるペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、算出した特徴量に基づいて、複数のペイロード分割パターン候補から、ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択したペイロード分割パターンが示す領域と、特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含む。
【００１３】
本開示の情報処理方法等は、攻撃を精度よく検知する安全な車載ネットワークシステムをコスト効率よく提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施の形態における車載ネットワークの全体構成を示すブロック図である。
【図２】図２は、ＣＡＮのプロトコルのデータフレームフォーマットを示す図である。
【図３】図３は、ＣＡＮのプロトコルのエラーフレームフォーマットを示す図である。
【図４】図４は、実施の形態における監視ＥＣＵ１００の機能構成を示すブロック図である。
【図５】図５は、実施の形態におけるモード保持部が保持する動作モードの一例を示す図である。
【図６】図６は、実施の形態における受信ログ保持部が保持する受信ログの一例を示す図である。
【図７】図７は、実施の形態における正常モデル保持部が保持する正常モデルの一例を示す図である。
【図８】図８は、実施の形態における監視ＥＣＵの動作のフローチャートである。
【図９】図９は、実施の形態におけるＥＣＵの機能構成を示すブロック図である。
【図１０】図１０は、上記のＥＣＵが送信するデータフレームの一部の例を示す図である。
【図１１】図１１は、実施の形態におけるペイロード分割部の処理のフローチャートである。
【図１２】図１２は、実施の形態におけるペイロード分割部の分割パターン候補からの特徴量の抽出の説明に用いる例を示す図である。
【図１３】図１３は、実施の形態における固定値のフィールドの抽出処理例のフローチャートである。
【図１４】図１４は、実施の形態における固定値のフィールドの抽出処理を説明するための例を示す図である。
【図１５】図１５は、実施の形態におけるカウンタのフィールドの抽出処理例のフローチャートである。
【図１６】図１６は、実施の形態における連続値のフィールドの抽出処理例のフローチャートである。
【図１７】図１７は、実施の形態における連続値のフィールドの抽出処理例のフローチャートである。
【図１８Ａ】図１８Ａは、実施の形態における連続値のフィールドの抽出処理例において、ビット長が共通の分割パターン候補の値の変化量の分散の平均の算出例を示す図である。
【図１８Ｂ】図１８Ｂは、実施の形態における連続値のフィールドの抽出処理例において、開始ビット位置が共通の分割パターン候補の、上記の平均の外れ値スコア及びその平均の算出例を示す図である。
【図１９】図１９は、実施の形態における連続値のフィールドの抽出処理例において用いられる、各分割フィールド候補での値の変化の発生頻度を示す図である。
【図２０】図２０は、実施の形態におけるチェックサムのフィールド抽出処理例のフローチャートである。
【図２１】図２１は、実施の形態におけるステータスのフィールド抽出処理例のフローチャートである。
【図２２】図２２は、実施の形態における正常モデルの生成処理例のフローチャートである。
【図２３】図２３は、図２２に示される正常モデルの生成処理に含まれる、振る舞い情報の取得の処理例のフローチャートである。
【図２４】図２４は、図２３に示される振る舞い情報の取得の処理を実行する特徴抽出部の動作の一部を説明するための図である。
【図２５】図２５は、実施の形態における異常検知部の処理の一例を示すフローチャートである。
【図２６】図２６は、実施の形態における異常検知部の処理の一例を示すフローチャートである。
【図２７】図２７は、実施の形態における異常検知部の動作例１を示した図である。
【図２８】図２８は、実施の形態における異常検知部の動作例２を示した図である。
【図２９】図２９は、実施の形態における異常検知部の動作例３を示した図である。
【発明を実施するための形態】
【００１５】
非特許文献１のような手法では、ペイロードの分割方法として、収集したフレームから算出される、各分割候補において観測されたユニークな値の個数のみを用いてペイロードの種類の分類及び長さの特定をして分割を行っているため、ペイロードの分割精度が低い。
【００１６】
本開示は、車載ネットワークにおける精度のよい異常検知をコスト効率よく実現するための情報処理方法等を提供する。
【００１７】
本開示の一実施様態の情報処理方法は、記憶部を備える情報処理システムが行う、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、車載ネットワークに流れる複数のデータフレームを受信し、複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して記憶部に保持される受信ログに１つのレコードとして記録するフレーム収集ステップと、複数のそのレコードから、複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、当該領域におけるペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、算出した特徴量に基づいて、複数のペイロード分割パターン候補から、ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択したペイロード分割パターンが示す領域と、特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含む。
【００１８】
この情報処理システムを用いれば、メッセージ仕様の異なる車載ネットワークシステムに対して個々の事前の設計を必要とせずに異常検知システムを構築でき、コストを抑えた車載ネットワークの保護が可能となる。
【００１９】
また例えば、受信ログは、複数のレコードの受信された順序を示す情報をさらに含み、特徴量は、時系列変化のパターン数を表す第１の特徴量と、時系列変化の発生頻度を表す第２の特徴量と、時系列変化の変化量に関する統計情報を表す第３の特徴量との少なくとも１つを含む。
【００２０】
これらの特徴量を個別に使い分けたり組み合わせて用いたりすることで、より高い精度でペイロードのフィールドへの分割が可能になる。これにより、例えばより精度の高い正常モデルを構築することが可能となり、車載ネットワークの異常検知の精度向上が期待できる。
【００２１】
また例えば、情報処理システムはフィールド抽出ステップにおいて、特徴量に基づいて、ペイロードの値に1回以上の時系列変化があり、時系列変化に含まれる各回の変化量が所定の大きさ以下である領域を示すペイロード分割パターン候補を、第１カテゴリのフィールドの領域を示すペイロード分割パターンとして選択してもよい。
【００２２】
これにより、例えば正常であれば値が所定の規則に従って変化するフィールドを特定して抽出することができる。例えばこのように特定されたフィールドを攻撃の標的になりやすいフィールドであるとして監視対象とすることで、車載ネットワークの異常検知に用いることができる。
【００２３】
また例えば、特徴量は上記の第２の特徴量及び第３の特徴量を含み、情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補から、第２の特徴量及び第３の特徴量に基づいて、ペイロードの値が物理量を示す連続値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第１カテゴリのフィールドを示すペイロード分割パターンを選択する連続値フィールド抽出ステップとを実行してもよい。例えば情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補のそれぞれについて、同一のデータ長の領域を示すペイロード分割パターン候補の中での第３の特徴量の外れ具合を示す外れ値スコアを算出し、ペイロード分割パターン候補の中で開始ビットが同一である領域を示すペイロード分割パターン候補の外れ値スコアの平均値を算出し、平均値が所定の閾値以上である領域を示すペイロード分割パターン候補から、当該ペイロード分割パターン候補に含まれるペイロード分割パターン候補の第２の特徴量の大小関係に基づいて連続値カテゴリに該当するフィールドの領域を示すペイロード分割パターンを選択してもよい。
【００２４】
これにより、例えばセンサが計測して出力する物理量を示すフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値又は値の変化率の異常の判定対象として車載ネットワークの異常検知に用いることができる。
【００２５】
また例えば、情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補から、特徴量に基づいて、ペイロードの値に毎回変化がある領域であって、当該ペイロードの値の各回の変化量が一定である領域を示すペイロード分割パターンをカウンタカテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第１カテゴリのフィールドを示すペイロード分割パターンを選択してもよい。
【００２６】
これにより、値がインクリメント又はデクリメントするフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値の変化の規則違反に基づく異常の判定対象として車載ネットワークの異常検知に用いることができる。
【００２７】
また例えば、情報処理システムはフィールド抽出ステップにおいて、特徴量に基づいて、ペイロードの値に1回以上の時系列変化があり、ペイロードの値が離散値を取る領域を示すペイロード分割パターン候補を、第２カテゴリのフィールドの領域を示すペイロード分割パターンとして選択してもよい。例えば第２カテゴリは、フィールド内のペイロードの値の整合性をチェックするためのチェックサムカテゴリと、フィールド内のペイロードの値が車載ネットワークを含む車両の所定の状態を示すステータスカテゴリとの少なくとも一方であってもよい。
【００２８】
これにより、チェックサム又はフラグ等の離散値を取るフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値の他のフィールドとの整合性、又は変化の発生頻度等に基づく異常の判定対象として車載ネットワークの異常検知に用いることができる。
【００２９】
また、情報処理システムはフィールド抽出ステップにおいて、固定値フィールド抽出ステップと、カウンタフィールド抽出ステップと、連続値フィールド抽出ステップと、第２カテゴリフィールド抽出ステップとを順に実行し、固定値フィールド抽出ステップでは、複数のペイロード分割パターン候補から、第１の特徴量が１であるペイロード分割パターン候補を固定値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択し、複数のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第１のペイロード分割パターン候補とし、カウンタフィールド抽出ステップでは、第１のペイロード分割パターン候補から、カウンタカテゴリのフィールドの領域を示すペイロード分割パターンを選択し、第１のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第２のペイロード分割パターン候補とし、連続値フィールド抽出ステップでは、第２のペイロード分割パターン候補から、第２の特徴量と、第３の特徴量と、を用いて、第２のペイロード分割パターン候補の中から、連続値カテゴリのフィールドの領域を示すペイロード分割パターンを選択し、第２のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第３のペイロード分割パターン候補とし、第２カテゴリフィールド抽出ステップでは、第３のペイロード分割パターン候補を、第２カテゴリフィールドとして選択してもよい。
【００３０】
これにより、未知のペイロードから効率よく各カテゴリのフィールドの範囲を特定して各フィールドを抽出することができる。
【００３１】
また例えば、さらに前記情報処理システムが実行する、フィールド抽出結果及び受信ログから、選択されたペイロード分割パターンが示すフィールドの値の時系列変化の変化量に関する統計情報に基づいて、当該フィールドの値の変化の正常範囲を示す正常モデルを生成し、生成した正常モデルをさらに出力する特徴抽出ステップを含んでもよい。
【００３２】
これにより、特定した各カテゴリのフィールドの範囲に加えて値の各種のフィールドの異常判定のための基準が得られ、車載ネットワークの異常検知の実行が可能になる。
【００３３】
また、複数のデータフレームのそれぞれは、データフレームの種類を示すデータ種別ＩＤを含み、情報処理システムは、フレーム収集ステップにおいて、ペイロード及びデータ種別ＩＤを１つのレコードとして受信ログに記録し、フィールド抽出ステップを、データ種別ＩＤが共通のデータフレームを対象に実行してもよい。
【００３４】
これにより、バスから取得されたデータフレームに複数の種類のデータフレームが混在する場合であっても、ペイロードのフィールドへの分割が可能である。
【００３５】
なお、これらの包括的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されてもよい。
【００３６】
以下、図面を参照しながら、実施の形態について説明する。
【００３７】
なお、以下で説明する実施の形態は、包括的又は具体的な例を示す。したがって、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは一例であり、本開示を限定する趣旨ではない。
【００３８】
また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、任意で含まれる構成要素として説明される。
【００３９】
（実施の形態）
＜１．構成＞
実施の形態として説明する情報処理システムは、車載ネットワークを流れるデータフレームを受信し、このデータフレームのペイロードをフィールドに分割し、分割して得たフィールドごとの、正常なデータフレームに含まれる値に関する振る舞いモデルを構築する。この情報処理システムはまた、この振る舞いモデルに基づいて、車載ネットワークを監視し、異常なデータフレームを検知する。このような情報処理システムについて図面を参照しながら説明する。
【００４０】
＜１．１  車載ネットワーク１０の全体構成＞
図１は、本実施の形態における車載ネットワーク１０の全体構成を示すブロック図である。車載ネットワーク１０は、監視ＥＣＵ１００と、ＥＣＵ２００と、バス３００とを備える。
【００４１】
監視ＥＣＵ１００は、バス３００に接続され、バス３００を流れるデータフレームを監視し、異常を含む不正なデータフレームが流れているか監視する。通信回路、プロセッサ及びメモリを含むマイクロコントローラ（図示なし）を備える監視ＥＣＵ１００は、本実施の形態における情報処理システムの一例である。
【００４２】
ＥＣＵ２００ａは、速度センサ２１０及びギア２２０に接続されており、ＥＣＵ２００ｂは、メータ２３０に接続されている。ＥＣＵ２００ａは、定期的にバス３００へ、速度センサ２１０から得られる車両の速度と、ギア２２０のポジションとをデータフレームに含めて送信する。このデータフレームを受信したＥＣＵ２００ｂは、ＥＣＵ２００ａから通知される車両の速度及びギア２２０のポジションを取得し、メータ２３０に表示する。
【００４３】
以下、本実施の形態の理解を促すために、車載ネットワーク１０で用いられている通信規格であるＣＡＮプロトコルで送信されるデータのフォーマットについて簡単に説明する。
【００４４】
＜１．２  データフレームフォーマット＞
図２は、ＣＡＮプロトコルのデータフレームのフォーマットを示す図である。ここではＣＡＮプロトコルにおける標準ＩＤフォーマットにおけるデータフレームを示している。
【００４５】
データフレームは、Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ（以下、ＳＯＦという）、ＩＤフィールド、Ｒｅｍｏｔｅ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｒｅｑｕｅｓｔ（以下、ＲＴＲという）、ＩＤｅｎｔｉｆｉｅｒ  Ｅｘｔｅｎｓｉｏｎ（以下、ＩＤＥという）、予約ビット（以下、ｒという）、データレングスコード（以下、ＤＬＣという）、データフィールド、Ｃｙｃｒｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ（以下、ＣＲＣという）シーケンス、ＣＲＣデリミタ、Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔト（以下、ＡＣＫとする）スロット（図中のＡＣＫ）、ＡＣＫデリミタ（図中のＤＥＬ）、及びエンドオブフレーム（以下、ＥＯＦ）の１２個の部分から構成される。
【００４６】
ＳＯＦとは、１ビットのドミナントである。バス３００はアイドルのときになっており、送信ノードはバス３００をレセシブからドミナントへ変更することでフレームの送信開始を通知する。
【００４７】
ＩＤとは、１１ビット長の値で、データフレームの種類を示す。ここでいうデータフレームの種類とは、例えばデータの内容又はデータフレームの送信元である送信ノードを指す。また、ＩＤは同一ネットワーク上で複数のノードが同時に送信を開始したデータフレーム間での通信調停にも用いられる。より具体的には、ＩＤがより小さい値を持つデータフレームは優先順位がより高い。ＩＤは、本実施の形態におけるデータ種別ＩＤの例である。
【００４８】
ＲＴＲは、１ビットのドミナントで、データフレームであることを示す。
【００４９】
ＩＤＥ及びｒは、それぞれ１ビットのドミナントである。
【００５０】
ＤＬＣは４ビット長の値で、続くデータフィールドの長さを示す。
【００５１】
データフィールドは、最大６４ビット長の、送信されるデータの部分であり、データフレームのペイロードに相当する。８ビット単位で長さが調整可能である。送信されるデータのこの部分への割り当てに関する仕様は車種や製造者に依存する。
【００５２】
ＣＲＣシーケンスは１５ビット長で、ＳＯＦ、ＩＤフィールド、コントロールフィールド、及びデータフィールドの送信値より算出される値を示す。受信ノードはＳＯＦ、ＩＤフィールド、コントロールフィールド、及びデータフィールドの受信値から算出した結果をＣＲＣシーケンスの値と比較することで異常の有無を判断する。
【００５３】
ＣＲＣデリミタは１ビットのレセシブで、ＣＲＣシーケンスの終了を表す区切り記号である。
【００５４】
ＡＣＫスロットは１ビット長で、送信ノードはこの部分でレセシブを送信する。受信ノードはＣＲＣシーケンスまで正常に受信ができていればこの部分でドミナントを送信する。ＣＡＮの規格では、同時に送信されたドミナントとレセシブとでは上述のとおりドミナントが優先されるため、通信が正常に行われている車載ネットワーク１０では、ＡＣＫスロットの送信中はバス３００がドミナントの状態である。
【００５５】
ＡＣＫデリミタは１ビット長のレセシブで、ＡＣＫスロットの終了を表す区切り記号である。
【００５６】
ＥＯＦは７ビット長のレセシブで、データフレームの終了を示す。
【００５７】
＜１．３  エラーフレームフォーマット＞
図３は、ＣＡＮプロトコルのエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ（プライマリ）、エラーフラグ（セカンダリ）、及びエラーデリミタ（図中ＤＥＬ）の３個の部分から構成される。
【００５８】
エラーフラグ（プライマリ）は、エラーの発生を他のノードに知らせるために使用される。連続する６ビットのドミナントであり、ＣＡＮプロトコルにおける、連続する同じ値の５ビットの次には異なる値を１ビット送信するというビットスタッフィングルールに違反する。このビットスタッフィングルール違反の発生によって、他のノードからのエラーフラグ（セカンダリ）の送信が引き起こされる。
【００５９】
エラーフラグ（セカンダリ）は、エラーの発生を他のノードに通知するために送信される６ビット長のドミナントである。エラーフラグ（プライマリ）を受信した全てのノードが送信する。
【００６０】
エラーデリミタは８ビット長のレセシブで、エラーフレームの終了を示す。
【００６１】
＜１．４  監視ＥＣＵ１００の構成図＞
図４は、監視ＥＣＵ１００の機能構成を示すブロック図である。
【００６２】
監視ＥＣＵ１００は、フレーム送受信部１１０と、フレーム収集部１２０と、動作判断部１３０と、ペイロード分割部１４０と、特徴抽出部１５０と、異常検知部１６０と、フレーム生成部１７０と、モード保持部１８０と、受信ログ保持部１９０と、正常モデル保持部１９１とを備える。
【００６３】
フレーム送受信部１１０は、バス３００に対して、ＣＡＮのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部１１０は、バス３００からデータフレームを１ビットずつ受信する。また、データフレームの受信がエラー無く完了すると、データフレームに含まれるＩＤ、ＤＬＣ、及びデータフィールドをフレーム収集部１２０及び動作判断部１３０に転送する。また、受信したデータフレームがＣＡＮプロトコルに則っていないと判断した場合、フレーム送受信部１１０はエラーフレームを送信する。また、フレーム送受信部１１０は、他のノードからエラーフレームを受信した場合、つまり受け取ったフレームの値からエラーフレームであると判断した場合には、受信中のデータフレームを破棄する。また、フレーム生成部１７０からデータフレームの送信要求を受けた場合には、フレーム送受信部１１０はバス３００へデータフレームを１ビットずつ送信する。
【００６４】
フレーム収集部１２０は、フレーム送受信部１１０よりデータフレームの上述の一部を受け取り、このデータフレームが受信された時刻（以下、受信時刻という）、並びにデータフレームに含まれていたＩＤ及びデータフィールドを、受信ログ保持部１９０に保持される受信ログに１レコードとして記録する。受信時刻は、例えば監視ＥＣＵ１００が起動してから経過した稼働時間を計測するタイマを参照して記録される。このようなタイマは、例えば監視ＥＣＵ１００が備えるマイクロコントローラに含まれる。
【００６５】
動作判断部１３０は、モード保持部１８０に格納されている動作モードを示す値をデータフレーム受信時に参照し、この動作モードに従って監視ＥＣＵ１００の順次の動作を決定する。監視ＥＣＵ１００の動作モードには収集モードと監視モードの２つがある。動作モードを収集モードに決定した場合、動作判断部１３０は監視ＥＣＵ１００が通算で１時間以上動作しているかを確認する。１時間以上動作していない場合は特に動作を行わない。１時間以上動作している場合、動作判断部１３０は、ペイロード分割部１４０へ所定の動作要求を行い、その後、動作モードを監視モードに切り替える。動作モードが監視モードである場合には、異常検知部１６０へ異常検知要求を行う。
【００６６】
ペイロード分割部１４０は、受信ログ保持部１９０に格納されている受信ログを参照し、共通のＩＤを含むレコードのペイロード、つまりデータフィールドを分割して、特定の意味をなすビット列（以下、フィールドという）であるフィールドを抽出する。データフィールドに含まれるフィールドは、その示す情報に応じて、固定値、カウンタ、連続値、チェックサム、ステータスのいずれかのカテゴリに分類される。例えば、速度センサ２１０によって計測された自動車の速度を示す値が占める領域などが１つのフィールドに該当し、当該フィールドは連続値に分類される。分割方法の詳細については後述の１．１１から１．１６で説明する。
【００６７】
また、ペイロード分割部１４０は、共通のＩＤを含むレコードのペイロードを分割して得たフィールドに関する情報を、特徴抽出部１５０に通知する。この情報の例には、フィールドのカテゴリ、フィールドの領域、フィールドの値が含まれる。
【００６８】
特徴抽出部１５０は、ペイロード分割部１４０から通知される、ペイロードの分割によって得られたフィールドに関する情報と、受信ログとから正常モデルを生成して正常モデル保持部１９１に格納する。
【００６９】
このような正常モデルはデータフレームのＩＤごとに生成され、データフレームの受信間隔に関する情報である受信間隔の平均及び分散と、データフィールドに関する情報であるフィールドの領域、カテゴリ、及び振る舞い情報とを含む。
【００７０】
データフィールドに関する情報のうち、振る舞い情報は、受信ログ保持部１９０に格納されている受信ログに含まれるペイロードの値からフィールドごとに生成される。
【００７１】
振る舞い情報に含まれる情報はフィールドのカテゴリによって異なる。例えば固定値のカテゴリに属するフィールドの振る舞い情報には、受信ログ中に観測された固定値の値が含まれる。この値は、監視モードでホワイトリストの値として用いられる。カウンタのカテゴリに属するフィールドに関しては、振る舞い情報がない。連続値のカテゴリに属するフィールドに関しては、受信ログ中に観測された連続するデータフレーム間の該当フィールドにおける値の差分つまり変化量の平均及び分散を含む。ステータスのカテゴリに属するフィールドに関しては、受信ログ中に含まれる、あるＩＤのデータフレームの総受信数に対して、時系列で直前のデータフレームからフィールドの値に変化が発生した割合、つまり変化の発生頻度を含む。なお、ステータスとは、車両上の何らかの状態であり、例えば前照灯等の特定の装置のＯＮ／ＯＦＦ、ギアポジション、運転モード等を指す。
【００７２】
異常検知部１６０は、動作判断部１３０から異常検知要求を受けた場合に、不正なデータフレームの受信の検知のための処理（以下、異常検知処理という）を行う。より具体的には、異常検知部１６０は、受信ログ保持部１９０に格納されている受信ログを参照し、正常モデル保持部１９１に格納されている正常モデルと受信ログとを用いて不正なデータフレームの受信の有無を判定する。
【００７３】
例えば異常検知部１６０は、あるＩＤのデータフレームの正常モデルで固定値のカテゴリに属するフィールドに関して、受信ログ中でこのＩＤを含むレコードのデータフィールド内の当該フィールドの領域の値と正常モデルでこのフィールドの振る舞い情報に示される値とを比較する。そしてこれらの値が異なる場合、異常検知部１６０は不正なデータフレームを受信したと判定する。
【００７４】
また異常検知部１６０は、あるＩＤのデータフレームの正常モデルでカウンタのカテゴリに属するフィールドに関して、受信ログ中でこのＩＤを含むレコードのデータフィールド内の当該フィールドの領域の値が、時間順で正しくインクリメントしているか否か判定する。正しくインクリメントしていない場合、異常検知部１６０は、不正なデータフレームを受信したと判定する。
【００７５】
また異常検知部１６０は、あるＩＤのデータフレームの正常モデルで連続値のカテゴリに属するフィールドに関して、受信ログ中でこのＩＤを含むレコードのデータフィールド内の当該フィールドの領域の値の直前のレコードでの値からの変化量が、正常モデルでこのフィールドの振る舞い情報に含まれる変化量の平均に対して外れ値であるか否か判定する。そして外れ値である場合、異常検知部１６０は、不正なデータフレームを受信したと判定する。なお、外れ値であるか否かの判定は、正常モデルの振る舞い情報に示される変化量の分散を用いて、例えば当該フィールドの値の変化量の平均値±３×（√分散）の範囲に収まるか否かに基づいて行われる。
【００７６】
また異常検知部１６０は、あるＩＤのデータフレームの正常モデルでステータスのカテゴリに属するフィールドに関して、受信ログ中でこのＩＤを含むレコードのデータフィールド内の当該フィールドの領域の値を１秒などの所定の時間幅で見たときにフィールドの値の変化の発生頻度と、正常モデルの振る舞い情報に示される発生頻度とを比較する。これらの発生頻度の値の差が所定の閾値より大きい場合、異常検知部１６０は、不正なデータフレームを受信したと判定する。
【００７７】
このような判定によって異常を含むデータフレームを受信したことを検知すると、異常検知部１６０は、フレーム生成部１７０に、例えば不正なデータフレームを受信していることを通知するためのデータフレームの生成を要求する。
【００７８】
フレーム生成部１７０は、異常検知部１６０から上記のデータフレームの生成を要求されると、不正なデータフレームを受信していることを通知するためのデータフレームを生成し、フレーム送受信部１１０へ通知する。
【００７９】
モード保持部１８０は、監視ＥＣＵ１００の現在の動作モードを示す値を保持している。動作モードは、上述のとおり収集モードと又は監視モードである。図５にモード保持部１８０が保持する動作モードの値の一例を示す。動作モードについては、後述の１．６にて説明する。
【００８０】
受信ログ保持部１９０は、フレーム収集部１２０から通知されたデータフレームの情報（受信時刻、ＩＤ、データフィールド）を保持する。図６に受信ログ保持部１９０に格納されている受信ログの一例を示す。受信ログについては、後述の１．７にて説明する。
【００８１】
正常モデル保持部１９１は、特徴抽出部１５０が抽出した正常モデルを保持する。図７に正常モデル保持部１９１が保持する正常モデルの一例を示す。正常モデルについては、１．８にて説明する。
【００８２】
これらの機能的な構成要素は、監視ＥＣＵ１００が備えるマイクロコントローラにおいて、通信回路を通じて受信したデータフレームを、プロセッサがメモリに格納されたプログラムを実行して処理し、必要に応じて処理の中間又は最終で生成されるデータがメモリに保持されることによって実現される。
【００８３】
＜１．５  監視ＥＣＵ１００の動作＞
上述のように構成される監視ＥＣＵ１００の動作における一連の工程について、図８に示されるフローチャートを用いて説明する。
【００８４】
（ステップＳ１）監視ＥＣＵ１００のフレーム送受信部１１０が、車載ネットワークのバス３００を流れるデータフレームを受信する。
【００８５】
（ステップＳ２）監視ＥＣＵ１００のフレーム収集部１２０は、ステップＳ１で受信されたデータフレームの受信時刻、ＩＤ、及びデータフィールドを含むレコードを、受信ログ保持部１９０に保持される受信ログに記録する。
【００８６】
（ステップＳ３）監視ＥＣＵ１００の動作判断部１３０は、監視ＥＣＵ１００の現在の動作モードを、モード保持部１８０を参照して確認する。現在の動作モードが監視モードである場合（ＹＥＳの場合）、動作判断部１３０はステップＳ４へ進む。そうでない場合、つまり現在の動作モードが収集モードである場合（ＮＯの場合）、動作判断部１３０はステップＳ７へ進む。
【００８７】
（ステップＳ４）監視ＥＣＵ１００の動作判断部１３０は異常検知部１６０へ異常検知処理要求を行い、異常検知部１６０は上述のような異常検知処理を行う。
【００８８】
（ステップＳ５）監視ＥＣＵ１００の異常検知部１６０は、異常検知処理の結果、異常が検知された場合（ＹＥＳの場合）にステップＳ６へ進む。そうでない場合（ＮＯの場合）、監視ＥＣＵ１００はステップＳ１に戻る。
【００８９】
（ステップＳ６）監視ＥＣＵ１００の異常検知部１６０は、異常を検知したことを他のノードに通知するデータフレームの生成要求を、フレーム生成部１７０に送信する。フレーム生成部１７０は不正なデータフレームの受信を通知するデータフレームを生成し、フレーム送受信部１１０を通してバス３００にこのデータフレームを送信して終了する。
【００９０】
（ステップＳ７）監視ＥＣＵ１００の動作判断部１３０は、監視ＥＣＵ１００が１時間以上動作しているかを判定する。監視ＥＣＵ１００が１時間以上動作している場合（ＹＥＳの場合）は、ステップＳ８へ進む。そうでない場合（ＮＯの場合）、監視ＥＣＵ１００はステップＳ１に戻る。
【００９１】
（ステップＳ８）監視ＥＣＵ１００の動作判断部１３０は、ペイロード分割部１４０にペイロード分割処理要求を行う。ペイロード分割部１４０は、データフレームのペイロードであるデータフィールドを分割してフィールド抽出処理を行う。
【００９２】
（ステップＳ９）監視ＥＣＵ１００の特徴抽出部１５０は、ペイロード分割部１４０によるフィールド抽出処理の結果を用いて正常モデルを生成し、正常モデル保持部１９１に格納する。
【００９３】
（ステップＳ１０）監視ＥＣＵ１００の動作判断部１３０は、モード保持部１８０が保持する動作モードの値を書き換えて監視ＥＣＵ１００の動作モードを収集モードから監視モードに切り替える。
【００９４】
上記の各ステップのうち、ステップＳ１及びステップＳ２は本実施の形態におけるフレーム収集ステップの例であり、ステップＳ８は本実施の形態におけるフィールド抽出ステップの例である。
【００９５】
なお、フローチャートではステップＳ６又はステップＳ１０の工程を最後に監視ＥＣＵ１００の動作が終了する流れが示されるが、実際にはステップＳ１に戻って動作が反復的に継続されてもよい。
【００９６】
＜１．６  動作モードのデータ構成＞
図５を参照して、モード保持部１８０が保持する動作モードの一例を示す。
【００９７】
この例では、監視ＥＣＵ１００の現在の動作モードは収集モードであることが示されている。収集モードでは、監視ＥＣＵ１００が受信するデータフレームのデータフィールド等がフレーム収集部１２０によって受信ログ保持部１９０に格納される。
【００９８】
＜１．７  受信ログのデータ構成＞
図６に、受信ログ保持部１９０が保持する受信ログの一例を示す。
【００９９】
この受信ログはＩＤが０ｘ１００であるデータフレームを複数個受信した後の状態である。データ行の各行が１レコードであり、上から下に時間順に並ぶ。
【０１００】
この例におけるデータフィールドの長さは５ビットで、受信ログの中で最も早く受信されたデータフレームの受信時刻は５１ｍｓであり、データフィールドの値は０ｘ００  ０ｘ００  ０ｘ００  ０ｘ１０  ０ｘ１０である。また、最も遅くに受信されたデータフレームの受信時刻は５００４５０ｍｓであり、データフィールドの値は、０ｘ２６  ０ｘ１５  ０ｘ４Ｂ  ０ｘ３０  ０ｘＢ６である。
【０１０１】
＜１．８  正常モデルのデータ構成＞
図７に、正常モデル保持部１９１が保持する正常モデルの一例を示す。
【０１０２】
この例に示される正常モデルは、ＩＤが０ｘ１００のデータフレームに関する正常モデルである。この正常モデルには、ＩＤが０ｘ１００のデータフレームの受信間隔に関する情報として、受信間隔の平均である５０ｍｓ、受信間隔の分散である３ｍｓが含まれている。またデータフィールドに関する情報として、データフィールドを分割して得られた７つのフィールドそれぞれの開始ビット位置、ビット長、カテゴリ、及び振る舞い情報が含まれる。より具体的には、データフィールドの上位１ビット目から８ビット長のフィールドはカウンタを示すフィールドである。データフィールドの上位９ビット目から、２ビット長さのフィールドは固定値を示し、その値は０である。データフィールドの上位１１ビット目から１４ビット長さのフィールドは連続値を示し、フィールドの値に発生した変化の変化量の平均は１０であり、分散は１００である。データフィールドの上位２５ビット目から、１ビット長のフィールドは固定値であり、その値は０である。データフィールドの上位２６ビット目から３ビット長のフィールドは車両のステータスを示し値の変化の発生頻度は０．０００１である。データフィールドの上位３３ビット目から８ビット長のフィールドはチェックサムである。
【０１０３】
＜１．９  他のＥＣＵの構成＞
図９は、車載ネットワークに接続されるノードの例であるＥＣＵ２００ａ又はＥＣＵ２００ｂの機能構成を示すブロック図である。ＥＣＵ２００ａはフレーム送受信部２０１と、フレーム処理部２０２と、外部機器入出力部２０３と、フレーム生成部２０４とを備える。これらの機能的な構成要素は、ＥＣＵ２００ａにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ又はデジタル回路等により実現される。
【０１０４】
フレーム送受信部２０１は、バス３００に対して、ＣＡＮのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部２０１はバス３００からデータフレームを１ビットずつ受信する。また、データフレームの受信がエラー無く完了すると、データフレームに含まれるＩＤ、ＤＬＣ、及びデータフィールドをフレーム処理部２０２に転送する。受信したデータフレームがＣＡＮプロトコルに則っていないと判断した場合、フレーム送受信部２０１はエラーフレームを送信する。また、他のノードからエラーフレームを受信した場合、フレーム送受信部２０１は受信中のデータフレームを破棄する。通信調停といったＣＡＮのプロトコルに則った処理も、フレーム送受信部２０１において実行される。
【０１０５】
フレーム処理部２０２は、受信したデータフレームの内容を解釈する。例えばＥＣＵ２００ｂでは、ＥＣＵ２００ａから送信されるデータフレームのデータフィールドに含まれる速度センサ２１０が計測した速度及びギア２２０のポジションの情報を取得し、これらの情報をメータ２３０に表示させるための制御情報を外部機器入出力部２０３に通知する。このときフレーム処理部２０２は、データフレームに含まれているカウンタ及びチェックサムが所定の条件を満たしているかを確認する。より具体的には、カウンタについては、受信済みの同ＩＤのデータフレームに含まれていたカウンタの値よりも大きな値であるかを確認する。
【０１０６】
チェックサムについては、例えばデータフィールドのチェックサムのフィールド以外の部分を１バイトずつに分割し、全ての値を加算した和の下位１バイトがチェックサムの値となっているかを確認する。カウンタ及びチェックサムがこれらの条件を満たしている場合に、受信したデータフレームに基づいた情報がメータ２３０に表示される。
【０１０７】
外部機器入出力部２０３は、ＥＣＵ２００ａ又はＥＣＵ２００ｂに接続される外部機器と通信を行う。例えばＥＣＵ２００ａの場合、外部機器入出力部２０３は、速度センサ２１０及びギア２２０と接続され、現在の車両の速度及びギア２２０のポジションの情報の通知を受け、これらの情報をフレーム生成部２０４に通知する。ＥＣＵ２００ｂの場合、外部機器入出力部２０３はメータ２３０に接続され、現在の車両の速度や及びギア２２０のポジションの情報を運転者に通知するために、これらの情報を表示させる信号をメータ２３０に送信する。
【０１０８】
フレーム生成部２０４は、バス３００へ送信するデータフレームを生成する。例えばＥＣＵ２００ａでは、外部機器入出力部２０３から通知された、速度センサ２１０から取得した車両の速度と、ギア２２０から取得したギアのポジションを含むデータフレームを、あらかじめ定められた周期、例えば５０ｍｓ間隔で生成し、フレーム送受信部２０１に送信する。またカウンタ及びチェックサムもこのデータフレームに含める。カウンタは送信のたびにインクリメントされ、チェックサムは前述の式を満たすように算出される。なお、データフレームが生成される間隔は５０ｍｓ以外の間隔でもよい。図１０に、ＥＣＵ２００ａがバス３００に送信するデータフレームの一部の例を示す。監視ＥＣＵ１００及びＥＣＵ２００ｂはバス３００からこのデータフレームを受信する。このようにデータフレームは、少なくとも１つの、特定の意味をなすビット列であるフィールドから構成される。ただし、収集モードで動作中の監視ＥＣＵ１００にとって、受信したデータフレームに含まれるデータフィールドの内容又はデータフィールドの適切な分割方法が不明であるため、このデータフィールドは単なる５バイト長のデータである。
【０１０９】
＜１．１０  ＥＣＵが送信するデータフレームの構成＞
車載ネットワークに接続される各ＥＣＵが送信するデータフレームの構成について例を用いて説明する。図１０は、ＥＣＵ２００ａが送信するデータフレームの例を示した図である。ただし、図１０では本実施の形態の説明に必要な部分のみを抜粋して図示している。
【０１１０】
ＥＣＵ２００ａは、ＩＤが０ｘ１００で、ＤＬＣが５のデータフレームを送信する。
【０１１１】
データフィールドの先頭１バイトの領域はカウンタのフィールドで、その値は０ｘ２６である。カウンタのフィールドの値は送信のたびにインクリメントされる。
【０１１２】
データフィールドの２バイト目と３バイト目とを連結した領域は速度センサ２１０が測定した速度を示すフィールドである。この例では、速度は０．０１ｋｍ／ｈ単位で表され、０ｘ１５４Ｂの値は速度の測定値が５４．５１ｋｍ／ｈであることを示す。
【０１１３】
４バイト目の上位４ビットの領域はギア２２０のポジションを示すフィールドであり、０がニュートラル、１がパーキング、２がリバース、３がドライブであることを示す。図１０の例では値が３であることから、ギアポジションはドライブである。
【０１１４】
４バイト目の下位４ビットの領域は固定値のフィールドであり、０で埋められている。
【０１１５】
５バイト目はチェックサムのフィールドである。このフィールドに入る値は、データフィールドのチェックサムのフィールド以外の部分を１バイトの領域に分割し、各領域の値を加算して得られる和の下位１バイトの値である。図１０の例でこのような各領域の値の和を求めると、０ｘ２６＋０ｘ１５＋０ｘ４Ｂ＋０ｘ３０＝０ｘＢ６となる。したがって、チェックサムのフィールドに入るべき正しい値は０ｘＢ６である。
【０１１６】
なお、上述のとおり、上記のようなデータフィールドで各フィールドが占める領域及び各フィールドが示す情報の種類、つまりフィールドのカテゴリは各カーメーカが決定する仕様に依存し、また、車種又は年式によっても異なる場合がある。
【０１１７】
監視ＥＣＵ１００では、各フィールドの領域及びカテゴリが未知のデータフィールドを、ペイロード分割部１４０がデータフィールド内の値の変化に関する特徴を用いて分割してフィールドを抽出する。次に、ペイロード分割部１４０によるデータフィールドを分割してフィールドを抽出する処理について例を用いて説明する。
【０１１８】
＜１．１１  ペイロード分割部１４０による処理＞
ペイロード分割部１４０がデータフィールドを分割してフィールドを抽出する処理で実行する一連のステップについて、図１１に示されるフローチャートを用いて説明する。ペイロード分割部１４０は、この動作を図８のフローチャートにあるステップＳ８で行う。したがって、図８のフローチャートに示されるように、ペイロード分割部１４０は、監視ＥＣＵ１００が複数のデータフレームを既に受信しており、受信ログには複数種類のＩＤを含むレコードが記録されている状態からこの動作によるフィールド抽出処理を実行する。
【０１１９】
（ステップＳ１１）ペイロード分割部１４０は、動作判断部１３０からステップＳ８でのペイロード分割処理要求を受けると、受信ログ保持部１９０を参照し、受信ログからＩＤごとにレコードを抽出する。
【０１２０】
（ステップＳ１２）ペイロード分割部１４０は、受信ログに含まれる全てのＩＤに対して、フィールド抽出を完了している場合（ＮＯの場合）、動作を終了し、フィールド抽出の結果を特徴抽出部１５０へ通知する。フィールド抽出を未実行のＩＤがある場合（ＹＥＳの場合）は、フィールド抽出が未実行のＩＤのいずれかを含むレコードを選択する。つまり、ペイロード分割部１４０は、フィールド抽出が未実行のＩＤを共通に含むデータフレームのデータフィールドを分割してフィールドを抽出する。
【０１２１】
（ステップＳ１３）ペイロード分割部１４０は、データフィールドの分割パターン候補ごとの特徴量を算出する。
【０１２２】
分割パターン候補とは、データフィールドをビット単位で分割して得られる領域のパターンであり、例えば領域の開始ビット位置（以下Ｉｎｄｅｘともいう）とビットの単位で表されるデータ長（以下Ｌｅｎｇｔｈともいう）との組み合わせ（Ｉｎｄｅｘ，Ｌｅｎｇｔｈ）で表される。例えば６４ビット長のデータフィールドに関しては、ＩｎｄｅｘとＬｅｎｇｔｈはそれぞれ１〜６４の値をとりうるが、Ｉｎｄｅｘ＋Ｌｅｎｇｔｈ−１（領域の終端ビット位置）は６４を超えない。そのため、値が１のＩｎｄｅｘに対してはＬｅｎｇｔｈが１〜６４までの６４通り、値が２のＩｎｄｅｘに対してはＬｅｎｇｔｈが１〜６３の６３通り、値が３のＩｎｄｅｘに対してはＬｅｎｇｔｈが１〜６２の６２通りあり、値が６４のＩｎｄｅｘに対しては、Ｌｅｎｇｔｈは１のみの１通りである。つまり６４ビット長のデータフィールドの場合、分割パターン候補の個数は、Σｘ（ｘ＝１〜６４）＝６５×６４÷２＝２０８０通りとなる。このような分割パターン候補は、本実施の形態におけるペイロード分割パターン候補の例である。
【０１２３】
図１２は分割パターン候補からの特徴量の抽出について説明するための例を示す図である。図１２では、受信ログから抽出されたあるＩＤを共通に含む２５６個のレコードに含まれる、５バイト長のデータフィールドの値が上から受信順に並べられている。
【０１２４】
本実施の形態においては、特徴量は各分割パターン候補の範囲にあるデータフィールドの値に変化に関するものであり、３種類ある。各特徴量について、分割パターン候補（１３，８）を例により詳細に説明する。この分割パターン候補（１３，８）は、図１２では点線の枠で示される。
【０１２５】
１つ目の特徴量は、各分割パターン候補が示す領域におけるデータフィールドの値のパターン数である。この特徴量は、分割パターン候補が示す領域内のデータフィールドの値の種類数、又はこの領域において重複を除いたデータフィールドの値の個数をカウントして求めることができる。この特徴量を以下では第１の特徴量という。
【０１２６】
２つ目の特徴量は、時系列で見て直前のデータフレームからの値の変化の発生頻度である。この特徴量は、分割パターン候補が示す領域内のデータフィールドの値が変化した回数を（受信ログから抽出されたＩＤを共通に含むレコードの数−１）で割って求めることができる。データフィールドの値が変化した回数は、時系列順に並べたレコードの当該領域内の階差を求め、階差が０で無い個数をカウントして求めることができる。例えば図１２に示されるように２５６個のレコードがあり、そのうち領域（１３，８）で直前に受信されたデータフレームから値が変化した回数が５１回である場合、この領域（１３，８）での当該特徴量は５１／（２５６−１）＝０．２である。この特徴量を以下では第２の特徴量という。
【０１２７】
３つ目の特徴量は、時系列で見て発生した直前のデータフレームからの値の変化量の分散である。この特徴量は、上述のように階差から求めた変化量から算出することができる。この特徴量を以下では第３の特徴量という。
【０１２８】
（ステップＳ１４）ペイロード分割部１４０は、分割パターン候補の中から、ステップＳ１３で抽出した特徴量が所定の条件を満たすものを、固定値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の１．１２で例を用いて説明する。
【０１２９】
また、１つのビットが２つのフィールドに含まれることはないため、ペイロード分割部１４０は、ステップＳ１４で選択された領域と少なくとも一部が重なる分割パターン候補は以降のステップでの条件判定の対象から除外する。残る分割パターン候補を、以下では第１のペイロード分割パターン候補という。
【０１３０】
（ステップＳ１５）ペイロード分割部１４０は、第１のペイロード分割パターン候補の中から、ステップＳ１３で抽出した特徴量が所定の条件を満たすものを、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の１．１３で例を用いて説明する。
【０１３１】
また、ペイロード分割部１４０は、ステップＳ１５で選択された領域と少なくとも一部が重なる分割パターン候補を、以降のステップでの条件判定の対象からさらに除外する。なお残る分割パターン候補を、以下では第２のペイロード分割パターン候補という。
【０１３２】
（ステップＳ１６）ペイロード分割部１４０は、第２のペイロード分割パターン候補の中から、ステップＳ１３で抽出した特徴量が所定の条件を満たすものを、連続値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の１．１４で例を用いて説明する。
【０１３３】
また、ペイロード分割部１４０は、ステップＳ１６で選択された領域と少なくとも一部が重なる分割パターン候補を、以降のステップでの条件判定の対象からさらに除外する。なお残る分割パターン候補を、以下では第３のペイロード分割パターン候補という。
【０１３４】
（ステップＳ１７）ペイロード分割部１４０は、第３のペイロード分割パターン候補の中から、ステップＳ１３で抽出した特徴量が所定の条件を満たすものを、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の１．１５で例を用いて説明する。
【０１３５】
（ステップＳ１８）ペイロード分割部１４０は、なお残る分割パターン候補を、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の１．１６で例を用いて説明する。
【０１３６】
ステップＳ１８で１種類のＩＤのデータフレームのデータフィールドからのフィールドの抽出は完了し、ステップＳ１２に戻る。他のＩＤのデータフレームで未処理のものがあれば、ペイロード分割部１４０によるステップＳ１３以降の実行対象となる。
【０１３７】
＜１．１２  固定値のフィールド＞
図１３は、ペイロード分割部１４０による、ステップＳ１４での固定値のフィールドの抽出処理例のフローチャートである。また、図１４はこの処理を説明するための例を示す図である。図１４に示されるようなテーブルデータが、ステップＳ１３の処理の結果として監視ＥＣＵ１００のメモリに保持されていると想定してもよい。
【０１３８】
（ステップＳ１４１）まず、ペイロード分割部１４０は、上記の３種類の特徴量を算出した分割パターン候補から、第１の特徴量が１であるという条件を満たす分割パターン候補を抽出する。つまり、データフィールドの値が、受信ログから抽出されたレコードで全て共通する範囲を示す分割パターン候補が抽出される。
【０１３９】
図１４に例示されるテーブルは、各行が５バイトのデータフィールドの分割パターン候補が示す領域の開始ビット位置（Ｉｎｄｅｘ）、各列がその領域のビット長（Ｌｅｎｇｔｈ）を表している。セル内には、ステップＳ１３で算出された各特徴量が、第１の特徴量、第２の特徴量、第３の特徴量、つまり値のパターン数、変化の発生頻度，変化量の分散の順に含まれている。なお、データフィールド内で生じない開始ビット位置とビット長との組み合わせを示すセルには斜線がかけられている。また、一部のセルについては特徴量の値又は組み合わせ有無の記載を省略して「…」としている。
【０１４０】
この例の場合にステップＳ１４１において抽出される分割パターン候補は、領域（２９，１）、（２９，２）、（２９，３）、（２９，４）、（３０，１）、（３０，２）、（３０，３）、（３１，１）、（３１，２）、（３２，１）を示す分割パターン候補である。
【０１４１】
（ステップＳ１４２）ペイロード分割部１４０は、抽出した分割パターン候補からさらに所定の条件に照らして絞り込む。具体的には、抽出した分割パターン候補に含まれる１の分割パターン候補が示す領域全体が他の分割パターン候補が示す領域に含まれる場合、この１の分割パターン候補を除外する。これにより、連続するビットからなる固定値の領域の一部のみを示す分割パターン候補が除かれる。
【０１４２】
（ステップＳ１４３）ペイロード分割部１４０は、残る分割パターン候補を、固定値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。上記の例では、ステップＳ１４２の実行の結果、領域（２９，４）を示す分割パターン候補が残るため、この分割パターン候補が固定値のカテゴリに属するフィールドの領域として選択される。
【０１４３】
（ステップＳ１４４）ペイロード分割部１４０は、ステップＳ１４３で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。
【０１４４】
ステップＳ１４３で領域（２９，４）を示す分割パターン候補が選択されたこの例では、５バイト長のデータフィールドの２９ビット目から３２ビット目のうちのいずれかのビットを含む分割パターン候補がステップＳ１４４で削除される。より具体的には、開始ビット位置が１でありビット長が２９〜４０の分割パターン候補、開始ビット位置が２でありビット長が２８〜３９の分割パターン候補はいずれも削除される。また、開始ビット位置が２９〜３２である分割パターンも全て削除される。残る分割パターン候補が、上述の第１のペイロード分割パターン候補に該当する。
【０１４５】
（ステップＳ１４５）ペイロード分割部１４０は、固定値のフィールドの領域を示す分割パターンを選択した結果を出力する。この例では、ペイロード分割部１４０は、開始ビット位置が２９でビット長が４のフィールドが固定値のカテゴリに属するフィールドであることを監視ＥＣＵ１００のメモリに書き込む等してステップＳ１４を終了する。
【０１４６】
＜１．１３  カウンタのフィールド＞
図１５は、ペイロード分割部１４０による、ステップＳ１５でのカウンタのフィールドの抽出処理例のフローチャートである。
【０１４７】
（ステップＳ１５１）まず、ペイロード分割部１４０は、上記の第１のペイロード分割パターン候補から、第１の特徴量が２＾（分割パターンのビット長）又はステップＳ１１で受信ログから抽出したレコードの数と一致する分割パターン候補を抽出する。つまり、ステップＳ１１で抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたもの、又は全レコードの値が異なるものを抽出する。
【０１４８】
（ステップＳ１５２）ペイロード分割部１４０は受信ログ保持部１９０を参照し、抽出した分割パターン候補が示す領域の値を全て抽出する。そして抽出したフィールドの値が受信順で通してインクリメントしている分割パターン候補、又はオーバーフロー時に値が０に戻っている、つまり２進数表現で全桁の値が１の領域がその次のレコードで全桁の値が０であった領域の分割パターン候補を、ステップＳ１５１で抽出した分割パターン候補から抽出する。
【０１４９】
（ステップＳ１５３）ペイロード分割部１４０は、ステップＳ１５２で抽出した分割パターンのうち、他の分割パターンの候補と重なっていないものを、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
【０１５０】
（ステップＳ１５４）ペイロード分割部１４０は、ステップＳ１５２で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、値がインクリメントしているビット列で最も長いものをひとつのカウンタのフィールドとして見つけるために行われるステップである。
【０１５１】
（ステップＳ１５５）ペイロード分割部１４０は、ステップＳ１５３及びＳ１５４で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。ステップＳ１５５は、ステップＳ１４４と同様のステップであるため詳細な説明を省略する。ステップＳ１５５の結果なお残る分割パターン候補が、上述の第２のペイロード分割パターン候補に該当する。
【０１５２】
（ステップＳ１５６）ペイロード分割部１４０は、カウンタのフィールドの領域を示す分割パターンを選択した結果を出力して、ステップＳ１５を終了する。
【０１５３】
なお、カウンタフィールド抽出方法の変形例として、インクリメントは１ずつ増加でも、２ずつ増加でもよい、常に増加されていればどのような値で増加してもよい。さらにデクリメントされるカウンタを抽出してもよい。同様にデクリメントは１ずつ減少でも、２ずつ減少してもよく、常に減少されていればどのような値で減少していてもよい。
【０１５４】
また、ステップＳ１５１では、全てのレコードで値が変化している分割パターンを示す分割パターン候補が抽出されてもよく、第２の特徴量に基づいて、つまり第２の特徴量が１の分割パターン候補が抽出されてもよい。
【０１５５】
＜１．１４  連続値のフィールド＞
図１６及び図１７は、ペイロード分割部１４０による、ステップＳ１６での連続値のフィールドの抽出処理例のフローチャートである。また、図１８Ａ及び図１８Ｂは、この処理を説明するための例を示す図である。
【０１５６】
ここで、第２のペイロード分割パターン候補、つまり連続値のフィールドの抽出処理を始める時点で残っている分割パターン候補は、連続値、チェックサム、又はステータスのいずれかのカテゴリに属する。これらの各種フィールドの中で、連続値のフィールドは、他のカテゴリに属する同一ビット長の分割パターン候補に比べて値の変化量の分散（第３の特徴量）が小さいと考えられる。以下、その理由について説明する。
【０１５７】
チェックサム又はフラグは取り得る値が離散的であり、フィールドの上位ビットが下位ビットと独立して変化するため、値の変化量にはバラつきが生じやすい。したがって、フィールドの値の変化量の分散が大きくなる。一方、連続値は、値の変化が連続的であり、フィールドの下位ビットの変化した結果のキャリーが上位ビットの変化として現れるため、値の変化量は一定の範囲内に収まる。したがって、フィールドの値の変化量の分散が小さくなる。
【０１５８】
また、ひとつの分割パターン候補が示す領域の中で上位部分が連続値であって下位部分が連続値以外である場合、下位部分内で各ビットの値が独立に変化しても、上位部分の値の変化量が支配的であるため、領域全体での変化量のバラつきは抑えられてフィールドの値の変化量の分散が小さくなる。
【０１５９】
また、連続値フィールドの最上位ビット以外を開始ビット位置として示す分割パターン候補については、値の変化時にオーバーフロー又はアンダーフローが発生して大きな値からに小さな値に、又は小さな値から大きな値に急激に変化するため、値の変化量にバラつきが生じてその分散が大きくなる。
【０１６０】
なお、カウンタのフィールドは第２のペイロード分割パターン候補に含まれないため、連続値のフィールドの最上位ビットから始まる領域を示す分割パターン候補ではオーバーフローもアンダーフローも生じない。
【０１６１】
このような考えに基づき、第２のペイロード分割パターン候補つまり、連続値のフィールドの抽出処理を始める時点で残っている分割パターン候補の中で、領域の値の変化の分散が比較的小さい分割パターン候補を見つけることで連続値のフィールドの領域を示す分割パターン候補を絞り込む。
【０１６２】
連続値のフィールドの抽出処理は、図１６に示されるフィールドの開始ビット位置の特定の処理と、図１７に示されるフィールドのビット長の特定の処理との２つの部分に大きく分けられる。
【０１６３】
まず、フィールドの開始ビット位置の特定について、図１６、図１８Ａ及び図１８Ｂを用いて説明する。
【０１６４】
（ステップＳ１６１）各分割パターン候補について、開始ビット位置に拘わらず同一のビット長を持つ他の分割パターン候補と比較しての、第３の特徴量、つまり変化量の分散の外れ具合を示す外れ値スコアを算出する。この工程については、図１８Ａ及び図１８Ｂに示される具体的な例を用いて説明する。
【０１６５】
図１８Ａのテーブルでは、各分割パターン候補の開始ビット位置が行に、ビット長が列に示され、セル内には各分割パターン候補についてステップＳ１３で算出された変化量の分散（第３の特徴量）が記載されている。なお、このテーブルの第３の特徴量の値を含むセルは、図１４に示されるテーブルからステップＳ１４及びＳ１５を経て他のカテゴリ（すなわち、固定値又はカウンタ）のフィールドの領域を示すと判断された分割パターン候補が削除されたものであり、見やすさのために第１の特徴量及び第２の特徴量の記載を省略している。ペイロード分割部１４０は、このようなデータに対してステップＳ１６１の処理を開始する。
【０１６６】
図１８Ａのテーブルを参照すると、例えば開始ビット位置が１１で、フィールド長が１である分割パターン候補は、変化量の分散が１である。同様に、開始ビット位置が１１で、ビット長が２、８、１３、１４の分割パターン候補については、変化量の分散はそれぞれ１、１０、１００、１００である。開始ビット位置が１２であり、ビット長がそれぞれ１、２、８、１３の分割パターン候補の変化量の分散は、それぞれ１、２、１５、１５０である。また、開始ビット位置が１２でビット長が１４である分割パターン候補は、２５ビット目が既に固定値あるいはカウンタのフィールドであると判断されているためステップＳ１４又はＳ１５で既に削除され、第２のペイロード分割パターン候補に含まれていない。他の×が付されたセルが示す分割パターン候補についても同様である。開始ビット位置が２３であってビット長が１、２である分割パターン候補の変化量の分散はそれぞれ１、２であり、開始ビット位置が２４であってビット長が１である分割パターン候補の変化量の分散は１である。
【０１６７】
また、最後の行には、ステップＳ１６１の処理の中でペイロード分割部１４０が算出する同一のビット長の分割パターン候補ごとの変化量の分散の平均値が記載されている。つまり、ビット長１、２、８、１３、１４の分割パターン候補の変化量の分散の平均は、それぞれ１、１、８０、１２５、１００である。
【０１６８】
次にペイロード分割部１４０は、図１８Ａのテーブルに示される各分割パターン候補の第３の特徴量が、同一ビット長の分割パターン候補の第３の特徴量の中でどれほど外れた値であるかを示す外れ値スコアを算出する。ペイロード分割部１４０は、統計学的又は機械学習的な手法を用いてこの外れ値スコアを算出することができる。例えば各分割パターン候補の第３の特徴量が正規分布に従うと仮定して、第３の特徴量の発生頻度に基づいて算出してもよいし、Ｋ近傍法又はＬｏｃａｌ  Ｏｕｔｌｉｅｒ  Ｆａｃｔｏｒ等の外れ値検出アルゴリズムが用いられてもよい。
【０１６９】
ここでは、各分割パターン候補の第３の特徴量の発生頻度ｐが各ビット長で正規分布に従うとしたときに、発生確率の低さをスコア化する例を示す。ｐは、同一ビット長における分散の平均ｍと、分散ｖとをそれぞれ平均、分散とする正規分布の確率密度関数とする。ここで、分割パターン候補の第３の特徴量をＦ２とすると、以下の式１によりｐを算出できる。
【０１７０】
ｐ（Ｆ２）＝｛１／（２πｖ）＾（１／２）｝ｅｘｐ｛−（Ｆ２−ｍ）＾２／２ｖ｝・・・（式１）
ペイロード分割部１４０が求める平均は、分割パターン候補の中で同一ビット長の分割パターン候補の第３の特徴量の平均であり、分散は、さきに求めたこの平均を用いて求めることができる。スコアは−Ｌｏｇ（ｐ）で算出する。図１８Ｂのテーブルの各セルは、このように算出されたスコアを含む。
【０１７１】
図１８Ｂを参照すると、開始ビット位置が１１であり、ビット長が１、２、８、１３の分割パターンの外れ値スコアは、それぞれ０、１、４、２である。ただし、ビット長１４に関しては、他の分割パターン候補の中にビット長が１４である分割パターンが存在しないため、外れ値スコアを算出していない。
【０１７２】
また、外れ値スコアは平均との差が大きい程大きな値をとる。ビット長８の場合を例にとると、分散の平均は８０であり、変化量の分散の平均が１０である開始ビット位置１１の分割パターン候補の外れ値スコアは４であり、変化量の分散の平均が１５である開始ビット位置１２の分割パターン候補の外れ値スコアである３よりも大きい。
【０１７３】
なお、ペイロード分割部１４０は、算出した外れ値スコアがビット長によって異なる指標となる場合は、正規化するなどして同じ指標にそろえてもよい。
【０１７４】
（ステップＳ１６２）ペイロード分割部１４０は、分割パターン候補の開始ビット位置ごとに、ステップＳ１６１で求めた外れ値スコアの平均（以下、平均スコアという）を算出する。図１８Ｂの例では、開始ビット位置が１１であり、ビット長が１から１３（図内で表記を省略したスコアも含む）の分割パターン候補の平均スコアは４である。同様に、開始ビット位置が１２であり、ビット長が１、２、８、１３である分割パターンの外れ値スコアは０、１、３、２であり、ビット長が１から１３の平均スコアは２である。開始ビット位置が２３であり、ビット長が１、２である分割パターンの外れ値スコアは、それぞれ０、０であり、平均スコアは０である。開始ビット位置が２４で、ビット長が１である分割パターンの外れ値スコアは０であり、平均スコアは０である。
【０１７５】
なお、この例では、ビット長が１の分割パターン候補をステップＳ１６におけるペイロード分割部１４０の処理の対象として説明しているが、連続値のフィールドの最小ビット長をあらかじめ定め、より短い分割パターン候補をあらかじめ処理対象から除外してもよい。処理速度及び分割の精度の観点から効果的である。
【０１７６】
（ステップＳ１６３）ペイロード分割部１４０は、ステップＳ１６２で算出した平均スコアが所定の閾値以上であるという条件を満たす開始ビット位置が存在するかを確認する。条件を満たす開始ビット位置が存在しない場合（ＮＯの場合）はステップＳ１６を終了し、存在する場合はこのステップＳ１６４へ進む。
【０１７７】
（ステップＳ１６４）ステップＳ１６３の条件を満たす開始ビット位置を、連続値のフィールドの開始ビット位置として特定する。ペイロード分割部１４０は、図１７に示される以降のステップで連続値のフィールドのビット長を特定する。
【０１７８】
（ステップＳ１６５）ペイロード分割部１４０は、ステップＳ１６３の条件を満たす開始ビット位置を示す分割パターン候補から、所定の値のビット長をさらに示す分割パターン候補を抽出する。ここでの所定の値とは、連続値のフィールドは、例えばセンサで測定された物理量などの情報を通知するために用いられるビット長を少なくとも持つという仮定に基づいて定められ、例えば４である。
【０１７９】
（ステップＳ１６６）ペイロード分割部１４０は、ステップＳ１６５で抽出した分割パターン候補が表す（Ｉｎｄｅｘ，Ｌｅｎｇｔｈ）に対し、同一の開始ビット位置でさらに長い分割パターン候補が連続値の値を含むフィールドであるか否か判定する。ペイロード分割部１４０は、２つの条件を用いてこの判定を行う。
【０１８０】
条件のひとつは、分割パターン候補（Ｉｎｄｅｘ＋Ｌｅｎｇｔｈ，１）の第２の特徴量、つまり値の変化の発生頻度が、分割パターン（Ｉｎｄｅｘ＋Ｌｅｎｇｔｈ−１，１）の第２の特徴量より大きいことである。つまり、ステップＳ１６５で抽出した分割パターン候補の最下位側にある隣のビットの値が、この分割パターン候補の最下位ビットの値よりも高頻度で変化していることを条件としている。この条件を以下では条件１という。
【０１８１】
もうひとつの条件は、（Ｉｎｄｅｘ，Ｌｅｎｇｔｈ＋１）の領域を示す分割パターン候補が未決定であることである。つまり、ステップＳ１６５で抽出した分割パターン候補と同一の開始ビット位置で１ビット長い領域を示す分割パターン候補についてカテゴリが未決定であることをもうひとつの条件としている。この条件を以下では条件２という。
【０１８２】
条件１及び条件２が満たされている場合（ＹＥＳの場合）、ペイロード分割部１４０はステップＳ１６７へ進み、それ以外の場合（ＮＯの場合）、ペイロード分割部１４０はステップＳ１６８へ進む。
【０１８３】
（ステップＳ１６７）ペイロード分割部１４０は、Ｌｅｎｇｔｈの値をインクリメントする。その後、再びステップＳ１６６を実行する。
【０１８４】
ステップＳ１６６とＳ１６７によって、より長いビット数の領域でも連続値が表されているかが判定され、連続値を表す極力長いビット長が特定される。
【０１８５】
ステップＳ１６６の条件が満たされなかった場合、ペイロード分割部１４０は、ステップＳ１６８に進む。
【０１８６】
（ステップＳ１６８）ペイロード分割部１４０は、ステップＳ１６４までに決定した開始ビット位置を示し、ステップＳ１６６で特定されたビット長を示す分割パターン候補を連続値を表す分割パターンとして選択する。また、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。また、ペイロード分割部１４０は、連続値のフィールドの領域を示す分割パターンを選択した結果を出力して、ステップＳ１６３に戻る。所定の条件を満たす他の開始ビット位置の分割パターン候補がさらに有るかを確認するためである。ステップＳ１６３の結果なお残る分割パターン候補が、上述の第３のペイロード分割パターン候補に該当する。
【０１８７】
図１７に示す連続値のフィールドのビット長の特定の処理について、具体的な例を用いて説明する。この例では、ステップＳ１６４で開始ビット位置は１１と特定され、ステップＳ１６５でのビット長を示す所定の値が４である場合を想定している。つまり、ステップＳ１６５で抽出される分割パターン候補が示す領域の（Ｉｎｄｅｘ，Ｌｅｎｇｔｈ）は、（１１，４）である。また、ステップＳ１３で算出された第２の特徴量の抜粋を図１９に示す。図１９に示されるテーブルもまた、図１４に示されるテーブル内のデータの一部であると言える。
【０１８８】
この例において、ステップＳ１６６では、領域（１１，４）の最下位ビットとこの領域の最下位ビットの隣に位置するビットとの間で値の変化の発生頻度が比較される。つまり、１５ビット目の１ビット（つまり領域（１５，１））の第２の特徴量と１６ビット目の１ビット（つまり領域（１６，１））の第２の特徴量とが比較される。図１９を参照すると、領域（１５，１）の第２の特徴量は０．２５であり、領域（１６，１）の第２の特徴量は０．２８である。したがって、条件１は満たされる。
【０１８９】
ステップＳ１６６においてさらに、領域（１１，４）よりもビット長が１ビット長い領域、つまり領域（１１，５）について、カテゴリが決定されているか否か判定される。説明の都合上、この例では、この領域についてはカテゴリが未決定であった、つまり条件２も満たされると想定する（ステップＳ１６６でＹＥＳ）。したがって、ステップＳ１６７において、Ｌｅｎｇｔｈの値が増分１でインクリメントされる。
【０１９０】
以下、同様の判定が続き、Ｌｅｎｇｔｈは１４までインクリメントされたとする。ここで、ステップＳ１６６において、領域（１１，２５）の最下位ビットである領域（２４，１）と領域（２５，１）との間で値の変化の発生頻度が比較される。図１９を参照すると、領域（２５，１）の第２の特徴量は０であり、領域（２４，１）の第２の特徴量は０．４０である。したがって、条件１が満たされないため、ステップＳ１６６の判定の結果はＮＯである。
【０１９１】
このように、ペイロード分割部１４０は、第２の特徴量及び第３の特徴量に基づいて連続値のフィールドの領域を示す分割パターンの選択を行う。より具体的には、まず、各分割パターン候補の第３の特徴量、つまり変化量の分散が同一ビット長で平均から外れているか否かに基づいて分割パターン候補が抽出される。そして、抽出された分割パターン候補の各ビットを領域として示す分割パターン候補の第２の特徴量、つまり変化の発生頻度の大小関係に基づいて、分割パターン候補が連続値のカテゴリに該当するフィールドの領域を示すか否かが判定される。
【０１９２】
なお連続値のフィールドの領域を示す分割パターン候補の選択の処理のステップは、上述のものに限定されない。
【０１９３】
例えば、ステップＳ１６４で特定される開始ビット位置を示す、つまり外れ値スコアが所定の閾値よりも高い分割パターン候補が連続値のフィールドの領域を示す分割パターンとして選択されてもよい。ただし、図１７に示されるビット長を特定する処理を行うことで、より高い精度でこの選択を行うことができる。
【０１９４】
その理由のひとつは、ステップＳ１６が実行される段階で残る分割パターン候補が少ないビット長については、偶然高い外れ値スコアであったりするなど信頼性が低い場合があるためである。または上述したように、上位部分が連続値で下位部分が連続値以外である場合にも外れ値スコアが高くなり、誤って一体として連続値のフィールドとして抽出される可能性がある。
【０１９５】
また、ビット長の決定の手法として、ステップＳ１６６において、第２の特徴量の比較に代えて又は加えて、第３の特徴量、つまり変化量の分散を比較してもよい。下位ビットの変化量がある程度大きくなければキャリーは発生せず、上位ビットの変化が生じないためである。
【０１９６】
また、さらに別のビット長の決定の手法として、ステップＳ１６６において、第２の特徴量の大小関係に代えて又は加えて、第２の特徴量の差分に関する条件がビット長を伸ばすか否かの判定に用いられてもよい。
【０１９７】
＜１．１５  チェックサムのフィールド＞
図２０は、ペイロード分割部１４０による、ステップＳ１７でのチェックサムのフィールド抽出処理例のフローチャートを示す。
【０１９８】
チェックサムのフィールドは、値の変化がランダムに見え、各値の発生が一様になる可能性が高いことから、第３のペイロード分割パターン候補のうち、第１の特徴量がビット長に対してある程度大きいという条件を満たすと考えられる。加えて、チェックサムのビット長が４ビットや８ビットの長さであることが多いという事前知識も条件に利用して、これらの条件を満たす分割パターン候補をチェックサムのフィールドの領域を示す分割パターンとして選択する。以下、この処理の各ステップを説明する。
【０１９９】
（ステップＳ１７１）ペイロード分割部１４０は、第３のペイロード分割パターン候補から、第１の特徴量が２＾（分割パターンのビット長）又はステップＳ１１で受信ログから抽出したレコードの数と一致する分割パターン候補を抽出する。つまり、ステップＳ１１で抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたもの、又は全レコードの値が異なるものを抽出する。
【０２００】
（ステップＳ１７２）ペイロード分割部１４０は、ステップＳ１７１で抽出した分割パターン候補のうち、ビット長が４ビット又は８ビットである分割パターン候補を抽出する。
【０２０１】
（ステップＳ１７３）ペイロード分割部１４０は、ステップＳ１７２で抽出した分割パターン候補のうち、他の分割パターンの候補と重なっていないものを、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
【０２０２】
（ステップＳ１７４）ペイロード分割部１４０は、ステップＳ１７２で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、ステップＳ１７１及びＳ１７２で用いられた条件を満たすビット列で最も長いものをひとつのチェックサムのフィールドとして見つけるために行われるステップである。
【０２０３】
（ステップＳ１７５）ペイロード分割部１４０は、ステップＳ１７３及びＳ１７４で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。ステップＳ１７５は、ステップＳ１４４又はＳ１５５と同様のステップであるため詳細な説明を省略する。
【０２０４】
（ステップＳ１７６）ペイロード分割部１４０は、チェックサムのフィールドの領域を示す分割パターンを選択した結果を出力して、ステップＳ１７を終了する。
【０２０５】
なお、上記の各ステップでの処理の内容は各種の変形が可能である。例えば上記のステップＳ１７１ではステップＳ１５１と共通の条件が用いられているが、より緩和した条件であってもよい。例えば第１の特徴量が２＾（分割パターンのビット長）又はステップＳ１１で受信ログから抽出したレコードの数の８０％以上である、という条件が用いられてもよい。チェックサムのフィールドではカウンタのフィールドに比べて値の変化がパターン数で不規則であり、表れる値には重複が生じて種類数が少ない可能性が高いためである。
【０２０６】
また、ステップＳ１７２における４ビット及び８ビットのビット長は例であり、このステップで用いられる条件に含まれるビット長の大きさ及びビット長の個数はこれらに限定されない。また、複数のビット長の分割パターン候補を抽出する場合は、より長いビット長の分割パターン候補が優先して抽出されてもよい。
【０２０７】
＜１．１６  ステータスのフィールド＞
図２１に、ステータスのフィールド抽出処理のフローチャートを示す。
【０２０８】
（ステップＳ１８１）ペイロード分割部１４０は、ステップＳ１７の終了後になお残る分割パターン候補のうち、他の分割パターンの候補と重なっていないものを、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
【０２０９】
（ステップＳ１８２）ペイロード分割部１４０は、ステップＳ１８１で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、ビット列で最も長いものをひとつのステータスのフィールドとして見つけるために行われるステップである。
【０２１０】
（ステップＳ１８３）ペイロード分割部１４０は、ステータスのフィールドの領域を示す分割パターンを選択した結果を出力し、ステップＳ１８を終了する。
【０２１１】
以上で、ペイロード分割部１４０による、１．１１で上述した図１１に示されるステップＳ１３からステップＳ１８までを実行することによるデータフィールドの分割処理は終了する。
【０２１２】
これらの一連のステップが、ＩＤが共通の１種類のデータフレームに含まれるデータフィールドに対して実行されると、ペイロード分割部１４０はステップＳ１２に戻って、未処理の他のＩＤのデータフレームに含まれるデータフィールドを対象にデータフィールドの分割処理を実行する。
【０２１３】
また、各ＩＤが示す種類のデータフレームに含まれるデータフィールドの分割が完了すると、ステップＳ１４３、Ｓ１５６、Ｓ１６８、Ｓ１７６、又はＳ１８３で出力された結果（以下、フィールド抽出結果ともいう）が、例えば図７のテーブルに含まれるデータのうち、ＩＤと、データフィールドに関する情報の中の開始、長さ、カテゴリの各情報として監視ＥＣＵ１００のメモリに保持される。
【０２１４】
監視ＥＣＵ１００では、特徴抽出部１５０がこのフィールド抽出結果の情報を用いてする正常モデルの生成の処理（ステップＳ９）に移行する。正常モデルは、各フィールドの値の変化の正常範囲を示し、例えばデータフレームの異常判定に用いられる。
【０２１５】
以下、特徴抽出部１５０による正常モデルを生成する処理について説明する。
【０２１６】
＜１．１７  特徴抽出部１５０による処理＞
特徴抽出部１５０が正常モデルを生成する処理で実行する一連のステップについて、図２２に示されるフローチャートを用いて説明する。
【０２１７】
（ステップＳ２１）特徴抽出部１５０は、ペイロード分割部１４０から出力されるフィールド分割結果が示すＩＤのうち、正常モデルを生成していないＩＤを選択する。
【０２１８】
（ステップＳ２２）特徴抽出部１５０は、受信ログ保持部１９０に格納されている受信ログに含まれる、ステップＳ１２１で選択したＩＤのレコードを参照する。
【０２１９】
（ステップＳ２３）特徴抽出部１５０は、フィールド分割結果及び受信ログのレコードからフィールドごとに振る舞い情報を取得する。なお振る舞い情報の取得の処理については別のフローチャートを用いて後述する。
【０２２０】
（ステップＳ２４）特徴抽出部１５０は、受信ログのレコードから、当該ＩＤのデータフレームの受信間隔の平均と受信間隔の分散を算出する。
【０２２１】
（ステップＳ２５）特徴抽出部１５０は、フィールド分割結果と、ステップＳ２３及びＳ２４で得た情報を基に当該ＩＤの正常モデルを生成して出力し、正常モデル保持部１９１に格納する。
【０２２２】
（ステップＳ２６）特徴抽出部１５０は、全てのＩＤに対して正常モデルを生成したかを確認する。全てのＩＤに対して正常モデルが生成済みであれば（ＹＥＳの場合）、ステップＳ９を終了する。そうでない場合（ＮＯの場合）はステップＳ２１に戻る。
【０２２３】
図２３は、特徴抽出部１５０がステップＳ２３で実行する振る舞い情報の取得の処理例のフローチャートである。
【０２２４】
（ステップＳ２３１）特徴抽出部１５０は、フィールド分割結果が示すフィールドのカテゴリに、振る舞い情報の取得対象のカテゴリに属するフィールドで未処理のものが含まれるかを確認する。振る舞い情報の取得対象のカテゴリとは、固定値、連続値、及びステータスである。振る舞い情報の取得対象のカテゴリで未処理のフィールドが存在しない場合（ＮＯの場合）、特徴抽出部１５０はステップＳ２３を終了する。振る舞い情報の取得対象のカテゴリで未処理のフィールドが存在する場合（ＹＥＳの場合）、特徴抽出部１５０はステップＳ２３２に進む。
【０２２５】
（ステップＳ２３２）特徴抽出部１５０は、受信ログ保持部１９０に格納されている受信ログから、ステップＳ２３１で確認した振る舞い情報の取得対象のカテゴリで未処理のフィールドの値を抽出する。
【０２２６】
（ステップＳ２３３）特徴抽出部１５０は、当該フィールドのカテゴリが固定値であるかを確認する。当該フィールドのカテゴリが固定値である場合（ＹＥＳの場合）、特徴抽出部１５０はステップＳ２３４に進む。そうでない場合（ＮＯの場合）、特徴抽出部１５０はステップＳ２３５に進む。
【０２２７】
（ステップＳ２３４）特徴抽出部１５０は、抽出したフィールドの値を振る舞い情報として抽出して取得し、ステップＳ２３１に戻る。
【０２２８】
（ステップＳ２３５）特徴抽出部１５０は、当該フィールドのカテゴリが連続値であるかを確認する。当該フィールドのカテゴリが連続値である場合（ＹＥＳの場合）、特徴抽出部１５０はステップＳ２３６に進む。そうでない場合（ＮＯの場合）、特徴抽出部１５０はステップＳ２３７に進む。
【０２２９】
（ステップＳ２３６）特徴抽出部１５０は、抽出したフィールドの値の変化量の平均及び分散を振る舞い情報として抽出して取得し、ステップＳ２３１に戻る。この変化量の平均及び分散は、ステップＳ１３でこのフィールドの領域を示す分割パターン候補について算出された第３の特徴量であるが、このステップで特徴抽出部１５０によってあらためて算出されてもよい。
【０２３０】
（ステップＳ２３７）特徴抽出部１５０は、抽出したフィールドの値の変化の発生頻度を振る舞い情報として抽出して取得し、ステップＳ２３１に戻る。この変化量の平均及び分散は、ステップＳ１３でこのフィールドの領域を示す分割パターン候補について算出された第３の特徴量であるが、このステップで特徴抽出部１５０によってあらためて算出されてもよい。
【０２３１】
＜１．１８  特徴抽出部１５０の動作例＞
図２４は、特徴抽出部１５０の図２３に示すフローチャートの処理を実行する動作の一部を説明するための例を示す図である。
【０２３２】
図２４を参照すると、特徴抽出部１５０は、ペイロード分割部１４０から出力されたフィールド分割結果に、振る舞い情報の取得対象のカテゴリに属するフィールドで未処理のものが含まれるかを確認する（ステップＳ２３１）。この例では、確認の結果、連続値のカテゴリが含まれていると判定されている。
【０２３３】
次に特徴抽出部１５０は、受信ログ保持部１９０に格納されている受信ログから、ステップＳ２３１で存在を確認したカテゴリのフィールドの値を取得する（ステップＳ２３２）。この例では、開始ビット位置が１１で、ビット長が１４のフィールドの値を取得している。この例での当該フィールドのカテゴリは連続値なので（ステップＳ２３３、Ｓ２３５）、特徴抽出部１５０はフィールドの値の変化量の平均及び分散を取得することで振る舞い情報を抽出する（ステップＳ２３６）。カテゴリが固定値であればステップＳ２３２で取得したフィールドの値そのもの、ステータスであれば、フィールドの値の変化の発生頻度が取得される。
【０２３４】
また特徴抽出部１５０は、同一ＩＤのデータフレームの受信間隔に関する統計情報（受信間隔平均、分散）をあわせて算出して取得する。このように取得した情報とフィールド分割結果を用いて、特徴抽出部１５０は、図７に例示したような正常モデルを生成して（ステップＳ２５）出力し、正常モデル保持部１９１に格納する。
【０２３５】
＜１．１９  異常検知部１６０の処理フローチャート＞
異常検知部１６０が正常モデルを用いてする異常検知処理(図８のステップＳ４)で実行する一連のステップについて、図２５に示されるフローチャートを用いて説明する。
【０２３６】
（ステップＳ３１）異常検知部１６０は、バス３００から受信したデータフレームのＩＤに関して、正常モデル保持部１９１に格納されている対応する正常モデルを参照する。
【０２３７】
（ステップＳ３２）異常検知部１６０は、受信したデータフレームのＩＤに関して、受信ログ保持部１９０に格納されている対応する受信ログを参照する。
【０２３８】
（ステップＳ３３）異常検知部１６０は、正常モデルに含まれる各フィールドの振る舞いモデルを用いて、参照する受信ログ中のレコードに含まれるデータフィールドを検証する。振る舞いモデルに基づく検証の処理については、別のフローチャートを用いて後述する。
【０２３９】
（ステップＳ３４）検証の結果異常が検知された場合（ＹＥＳの場合）異常検知部１６０は、ステップＳ３５に進み、そうでない場合（ＮＯの場合）は異常検知処理を終了する。
【０２４０】
（ステップＳ３５）異常検知部１６０は、他のＥＣＵに異常を通報するためのデータフレームの生成をフレーム生成部１７０に要求して、異常検知処理を終了する。
【０２４１】
図２６は、異常検知部１６０がステップ３３で実行する振る舞いモデルに基づく検証の処理例のフローチャートである。
【０２４２】
（ステップＳ３３０１）異常検知部１６０は、受信したデータフレームに関して、データフィールドに未検証のフィールドが存在するかを判断する。未検証のフィールドが存在しない、つまりすべてのフィールドの検証が完了している場合（ＮＯの場合）はステップＳ３３を終了する。未検証のフィールドが存在する場合（ＹＥＳの場合）はＳ３３０２に進む。
【０２４３】
（ステップＳ３３０２）異常検知部１６０は、受信ログ保持部１９０に格納されている受信ログから次にチェックするフィールドの値を抽出し、当該フィールドに関しては検証済みとする。
【０２４４】
（ステップＳ３３０３）異常検知部１６０は、抽出したフィールドのカテゴリが固定値か否かを判断する。固定値の場合（ＹＥＳの場合）、異常検知部１６０はステップＳ３３０４に進む。固定値でない場合（ＮＯの場合）、異常検知部１６０はＳ３３０５に進む。
【０２４５】
（ステップＳ３３０４）異常検知部１６０は、抽出したフィールドの値が正常モデル保持部１９１に格納されている正常モデルの振る舞い情報の値と等しいかを確認する。正常モデルの振る舞い情報の値と等しい場合（ＹＥＳの場合）、異常検知部１６０は、ステップＳ３３０１に戻る。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３１１に進む。
【０２４６】
（ステップＳ３３０５）異常検知部１６０は、抽出したフィールドのカテゴリがカウンタであるか否かを判断する。カウンタである場合（ＹＥＳの場合）、異常検知部１６０はステップＳ３３０６に進む。カウンタでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３０７に進む。
【０２４７】
（ステップＳ３３０６）異常検知部１６０は、抽出したフィールドの値が、時系列順にインクリメントされているか否かを判断する。時系列順にインクリメントされている場合（ＹＥＳの場合）、異常検知部１６０はステップＳ３３０１に戻る。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３１１に進む。
【０２４８】
（ステップＳ３３０７）異常検知部１６０は、抽出したフィールドのカテゴリが連続値であるか否かを判断する。連続値である場合（ＹＥＳの場合）、異常検知部１６０はステップＳ３３０８に進む。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３０９を実行する。
【０２４９】
（ステップＳ３３０８）異常検知部１６０は、抽出したフィールドの値の変化量が、正常モデル保持部１９１に格納されている正常モデルの振る舞い情報に記載の平均に近い値かを判断する。正常モデルの振る舞い情報に記載の平均に近い値である場合（ＹＥＳの場合）、異常検知部１６０は、ステップＳ３３０１に戻る。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３１１に進む。
【０２５０】
（ステップＳ３３０９）異常検知部１６０は、抽出したフィールドのカテゴリがステータスであるか否かを判断する。ステータスである場合（ＹＥＳの場合）はステップＳ３３１０に進む。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３０１に進む。
【０２５１】
（ステップＳ３３１０）異常検知部１６０は、抽出したフィールドの値の変化の発生頻度が正常モデル保持部１９１に格納されている正常モデルの振る舞い情報に示される変化の発生頻度と近いかを判断する。正常モデルの振る舞い情報記載の変化の発生頻度と近い場合（ＹＥＳの場合）、異常検知部１６０はステップＳ３３０１に戻る。そうでない場合（ＮＯの場合）、異常検知部１６０はステップＳ３３１１に進む。
【０２５２】
（ステップＳ３３１１）異常検知部１６０は、異常を検知したとして、不正なフィールドのカテゴリを次のステップへ通知して、振る舞いモデルに基づく検証の処理を終了する（ステップＳ３４を実行する）。
【０２５３】
なお、正常モデルに含まれるデータフレームの受信間隔の平均及び分散に基づく検証は図２５又は図２６のフローチャートには含まれていないが、異常検知部１６０によって別途行われる。異常検知部１６０は、例えば、図２５に示される異常検知処理のステップＳ３３の前に、該当のＩＤを持つデータフレーム間の受信間隔の異常の有無又は可能性の高さについての判定を実行し、異常のあるもの又は異常の可能性が高いデータフレームのデータフィールドをステップＳ３３での検証の対象としてもよい。
【０２５４】
以下、車載ネットワーク１０に異常なデータフレームを送出する不正ＥＣＵが接続されている場合に、上述の構成要素を含む監視ＥＣＵ１００が異常を検知する動作について、具体例を用いて説明する。
【０２５５】
＜１．２０  異常検知部１６０の動作例１＞
図２７に、異常検知部１６０の動作の一例を示す。この例及び以下の例では、監視ＥＣＵ１００は、図７に示される正常モデルを正常モデル保持部１９１に保持していると想定する。
【０２５６】
図２７を参照すると、ＥＣＵ２００ａは、車速を示すフィールドを含むＩＤが０ｘ１００のデータフレームをバス３００に定期的に送信している。しかし、不正なＥＣＵが、ＩＤが０ｘ１００のデータフレームをバス３００に送信する。
【０２５７】
監視ＥＣＵ１００は、データフレームを受信するたびに、正常モデル保持部１９１に格納されている正常モデルと、受信ログ保持部１９０に格納されている受信ログとを参照することで、データフィールドの値が正常モデルから逸脱しているか判断する（ステップＳ３３）。なお、図２７から図２９では、５バイトのデータフィールドの値を１６進数で示している。
【０２５８】
受信した最初の３つのデータフレームには、データフィールドの値が正常モデルに適合するため、異常なしと判定される。しかし４番目に受信したデータフレームについては、正常モデルに示される開始ビット位置が２９で、データ長が４のフィールドは固定値であり、値が０であることに適合しないことに基づいて、固定値のフィールドの異常として検知する（ステップＳ３３０３でＹＥＳ、Ｓ３３０４で下線付「１」に対してＮＯ、Ｓ３３１１）。
【０２５９】
また、５番目に受信したデータフレームに関しては、直前に受信した不正ＥＣＵから送信されたデータフレームの影響で、開始ビット位置１で、ビット長が８であるカウンタフィールドの値がインクリメントされていないという判定により異常を検知する（ステップＳ３３０５でＹＥＳ、Ｓ３３０６で下線付「３」に対してＮＯ、Ｓ３３１１）。異常を検知したことを通知するために、異常が検知されたデータフレームのＩＤ及び異常が検知されたフィールドのカテゴリに基づく情報を（固定値のフィールドでの異常及びカウンタのフィールドでの異常）フレーム生成部１７０を通知して、他のＥＣＵに異常の発生を通報するためのメッセージの生成を要求する（ステップＳ３５）。
【０２６０】
なお、監視ＥＣＵ１００では、データフレームに異常を検知した場合に、このデータフレームのレコードが受信ログから削除されてもよい。
【０２６１】
＜１．２１  異常検知部１６０の動作例２＞
図２８に、異常検知部１６０の動作の他の例を示す。この例では、不正ＥＣＵが送信するデータフレーム以外は図２７が示す状況と同様の状況であると想定する。
【０２６２】
この例では、不正ＥＣＵは、正常なデータフレームがＥＣＵ２００ａから送信された直後に、異常を含むデータフレームを送信する。監視ＥＣＵ１００は、所定時間幅内で順次受信した複数個のデータフレームにおいて、開始ビット位置が２６でビット長が３のステータスフィールドの変化の発生頻度が、正常モデルが示す０．０００１からかけ離れていることに基づいて異常を検知する（ステップＳ３３０９でＹＥＳ、Ｓ３３１０で下線付の値の変化の発生に対してＮＯ、Ｓ３３１１）。
【０２６３】
なお、図２７の例と同様のカウンタのフィールドでの異常も検知されるが、この例では説明を省略する。
【０２６４】
＜１．２２  異常検知部１６０の動作例３＞
図２９に、異常検知部１６０の動作例を示す。この例では、ＥＣＵ２００ａが送信するデータフレーム及び不正ＥＣＵが送信するデータフレーム以外は、図２７及び図２８が示す状況と同様の状況であると想定する。
【０２６５】
不正ＥＣＵは、ＥＣＵ２００ａからＩＤが０ｘ１００のデータフレームが３個送信された後に、ＩＤが０ｘ１００の異常を含むデータフレームを送信している。このデータフレームを受信した監視ＥＣＵ１００は、開始ビット位置が１１でビット長が１４の連続値のフィールドの振る舞い情報として、変化量の平均が１０、の分散が１００であることに照らして、受信ログから抽出した当該フィールドの直前に受信されたデータフレームからの変化量が４８１（０ｘ１５７Ｃ−０ｘ１３９Ｂ＝０ｘ１Ｅ１）と大きく異なることに基づいて異常を検知する（ステップＳ３３０７でＹＥＳ、Ｓ３３０８で下線付の値の変化量に対してＮＯ、Ｓ３３１１）。
【０２６６】
なお、図２７の例と同様のカウンタのフィールドでの異常も検知されるが、この例では説明を省略する。
【０２６７】
＜１．２３  効果＞
本実施の形態では、監視ＥＣＵ１００は、車載ネットワークを流れるデータフレームを監視し、統計的に得られる特徴量に基づいてデータフレームに含まれるデータフィールドを意味のあるビット列のまとまりであるフィールドに分割する。また監視ＥＣＵ１００は、分割によって得た各フィールドでの異常の検知に用いられる正常モデルを生成する。さらに監視ＥＣＵ１００は、正常モデルを用いての異常の検知を実行して車載ネットワーク内の不正を検知することができる。
【０２６８】
このような監視ＥＣＵ１００は、仕様の異なる車載ネットワークシステムであっても事前の個別の設計を必要としないため、コストを抑えた車載ネットワークの保護を可能にするとなる。
【０２６９】
＜２．  変形例＞
なお、本開示を上記実施の形態に基づいて説明してきたが、本開示は上記実施の形態に限定されず、以下のような構成も本開示の技術的範囲に含まれる。
【０２７０】
（１）上記実施の形態では、フィールド分割部と、特徴抽出部と、不正検知部とは監視ＥＣＵの構成要素として説明したが、同一の装置に全ての構成要素を保持する必要は無い。例えば、フィールド分割部と特徴抽出部は、車外のクラウドサーバの構成要素としてもよく、クラウドサーバは、車載ネットワークシステムが接続可能な携帯電話網等の無線通信網を通じて受信する車載ネットワークシステムに流れるデータフレームをフィールドに分割し、正常モデルを生成する。そして監視ＥＣＵは、クラウドサーバからダウンロードするこの正常モデルを用いて不正検知処理を実行してもよい。この場合に監視ＥＣＵは動作判断部を持たなくてもよく、常に異常検知処理を行えばよい。これにより監視ＥＣＵは異常検知部のみを持てばよく、実装が容易になる。
【０２７１】
また、監視ＥＣＵにおいてデータフィールドの分割、正常モデルの生成、及び異常検知の処理が行われているが、本開示は例えばこれらのうちデータフィールドの分割のみ、又は正常モデルの生成までを実行する情報処理装置、情報処理方法、又はプログラム等としても実現可能である。このような情報処理装置等は、例えばネットワークの監視装置の開発のために適用可能である。
【０２７２】
（２）上記実施の形態では、車載ネットワークのデータフレームを一定期間収集した受信ログから、正常モデルを生成したが、正常モデルを生成するために、必ずしも車載ネットワークからデータフレームを一定期間にわたって収集する必要はない。例えば、過去に収集したログを入力として正常モデルを生成してもよい。また複数のログに対して、それぞれ正常モデルを生成し、多数決や、平均をとることによって、複数の正常モデルをマージした結果を最終的な正常モデルとしてもよい。これにより、ネットワークの監視の開始前に、必ずしも一定期間のデータフレームの収集を必要とせず、不正検知処理を多くの自動車で早期に実現したい場合に効果的である。
【０２７３】
（３）上記実施の形態では、異常を検知した場合のアクションとして、異常の通報のために、異常が検知されたデータフレームのＩＤと、異常が検知されたフィールドの種類を含むメッセージ、つまりデータフレーム送信する例を示したが、異常検知後のアクションはこれに限らない。例えば、異常を検知した時点で、監視ＥＣＵがエラーフレームを送信することで、異常が検知されたフィールドを含むデータフレームを無効としてもよい。このとき監視ＥＣＵでは、データフレームの受信中に図２５に示される異常検知処理が行われる。また車載ネットワーク上のゲートウェイＥＣＵに監視ＥＣＵの機能を追加することで、異常が検知されたデータフレームを転送しない対応をとってもよい。または、異常が検知されたデータフレームと同種、つまり共通のＩＤのデータフレームの転送を停止してもよい。これはゲートウェイＥＣＵを監視ＥＣＵとして用いて本開示を実現したい場合に効果的であり、さらに、多数の車載ネットワークの情報を監視できることから、実現できる機能の幅も広がり効果的である。
【０２７４】
また、異常が発生したことをユーザに通知してもよいし、車両をフェールセーフモードに移行させてもよいし、発生した異常をログに残してもよいし、発生した異常について、携帯電話網などを通じてクラウドサーバに送信してもよい。これにより、異常検知後の柔軟な対応が可能となる。例えばクラウドサーバから、異常が検知された車載ネットワークシステムと同型又は同バージョンの車載ネットワーク、又は共通するＥＣＵを含む車載ネットワークにこの異常に関する情報が提供されてもよい。
【０２７５】
（４）上記実施の形態では、標準フォーマットのＩＤにおける例を示したが、拡張フォーマットのＩＤであってもよい。
【０２７６】
（５）上記実施の形態では、動作モードは、１時間の収集モード後に正常モデルの生成を行ったが、１時間より短くてもよいし、長くてもよい。また、時間に拠らず、特徴量を抽出するために十分なログのサイズを規定して、このサイズのログの収集がなされた時点で正常モデルを生成してもよい。また外部インターフェースを備え、ユーザの指示によりモードを切り替えてもよい。例えば、クラウドサーバからの指示によって、モードが切り替わってもよい。これにより、データの収集をより柔軟に行え、監視ＥＣＵのリソースに応じて動作することが可能になる。
【０２７７】
（６）上記実施の形態では、データフレームの受信ログと、正常モデルと、車両状態とは１つのＩＤに対するものであったが、それぞれ１つ以上のＩＤに対して保持してもよい。
【０２７８】
また、通信の仕様でデータフレームに複数の種類がない場合、又は種類は複数あってもペイロードのデータ構造が共通であることが既知である場合には、受信ログにＩＤを含めなくてもよい。
【０２７９】
（７）上記実施の形態では、データフレームは平文で流れる例を示したが、暗号化されていてもよい。またデータフレームにメッセージ認証コードを含んでいてもよい。
【０２８０】
（８）上記実施の形態では、正常モデルと受信ログとが平文で保持されている例を示したが、暗号化して保持されていてもよい。
【０２８１】
（９）上記実施の形態では、データフィールド内はビッグエンディアンでデータが格納されている例を示したが、データはリトルエンディアンで格納されていてもよい。
【０２８２】
（１０）上記実施の形態では、正常モデルとして、ＩＤごとにデータフレームの受信間隔の平均と、分散を保持している例を示したが、異常検知処理において、実際に受信したデータフレームの受信間隔が、正常モデルに記載の受信間隔の平均から、受信間隔の分散よりも離れている場合にメッセージの異常を検知してもよい。これは、フィールドの値の異常だけでなく、メッセージの時間情報を用いた異常も検知でき、多面的に異常を検知することで、より検知精度を高めることに効果的である。
【０２８３】
また受信ログにはデータフレームの受信時刻が記録されているが、データフレーム間の受信間隔を用いず順序のみを用いて特徴量の抽出が可能であれば、受信時刻は受信ログに含めなくてもよい。受信の順序は、受信ログでのレコードの並び順又は連続番号を用いて示されてもよい。
【０２８４】
また受信間隔平均と、分散の情報を異常検知に用いない場合については、正常モデルにこれらが保持されなくてもよい。
【０２８５】
（１１）上記実施の形態では、分割したフィールドを、固定値、カウンタ、連続値、ステータス、チェックサムの５つのカテゴリに分類したが、必ずしもこの５つのカテゴリに分類する必要はない。例えば不正検知に不要なカテゴリのフィールドは正常モデルに含めなくてもよい。
【０２８６】
また、チェックサムのフィールドをメッセージ認証子のフィールドとしてもよい。
【０２８７】
また、これらの５つのカテゴリのすべてを互いに区別しなくてもよい。例えば所定の時間幅内で値の所定の大きさ以下の変化が所定の回数以上見られる領域のフィールドが、１つのカテゴリのフィールドとして扱われてもよい。このようなフィールドは、カウンタ又は連続値が含まれ得るものであり、本変形例における第１カテゴリの例である。別の例として、各種の特徴量から離散値を取る領域のフィールドが１つのカテゴリとして扱われてもよい。このようなフィールドは、チェックサム、又はフラグ若しくは状態を示すステータスの値が含まれ得るものであり、本変形例における第２カテゴリの例である。
【０２８８】
（１２）上記実施の形態では、正常モデルの振る舞い情報として、ホワイトリストと、フィールドの値が変化する頻度（変化の発生頻度）と、フィールドの値の変化時の変化量の平均と分散とを保持していたが、これに限るものではない。例えば各特徴量の正常な値の範囲を示す、上限あるいは下限を保持していてもよい。また、フィールドの値の変化時の変化量の最大値と最小値を保持してもよい。また、フィールドの値が変化するときの値の遷移のホワイトリストを保持していてもよい。また、時系列モデルに当てはめたときのパラメータを保持していてもよい。また、受信ログのレコードから、所定時間（例えば１秒間）あたりの値の変化の発生頻度の最大値が算出されて保持されてもよい。これにより、異常正検知処理の方法が増え、より多くの手法で異常を捉えることが可能となる。
【０２８９】
（１３）上記実施の形態では、正常モデルの振る舞い情報として、連続値のフィールドに対しては、値の変化時の変化量の平均と分散を保持し、ステータスのフィールドに対しては、フィールドの値が変化する割合を保持していたが、この組み合わせでなくてもよう。
【０２９０】
（１４）上記実施の形態では、正常モデルとして、フィールドごとにカテゴリと、振る舞い情報とが保持されていたが、複数のフィールドに対する振る舞い情報を保持してもよい。例えば、データフィールドを分割して得たフィールドに主成分分析や、オートエンコーダなどの次元削減処理を施したデータを正常モデルとして保持していてもよい。これによりフィールド間の関係性を捉えた正常モデルが生成され、単なるフィールドごとの異常検知より有効な場合がある。
【０２９１】
（１５）上記実施の形態では、ペイロード分割部におけるチェックサムの抽出条件の１つとして、残った分割パターン候補のうち、フィールドの長さが４ビットまたは８ビットであることが条件として含まれていたが、この値以外でもよい。特にチェックサムフィールドの長さが事前にわかっている場合は、その値に設定すればよい。事前にわからない場合は、よく利用される長さに設定することで、精度よくフィールドを分割できるようになる。
【０２９２】
（１６）上記実施の形態では、ペイロード分割部におけるチェックサムの抽出条件の１つとして、抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたものであることが含まれているが、この条件でなくてもよい。例えば、フィールドがランダムに見えることをチェックしてもよい。この処理はメッセージ認証コードが含まれている場合に、データフィールドを精度よく分割できるようになり効果的である。またチェックサムの計算方法が事前にわかっている場合には、分割パターン候補の値が、チェックサムの計算式から算出される値となっているかを確認することによって、チェックサムのフィールドを抽出してもよい。
【０２９３】
（１７）上記の実施の形態では、データフィールドの分割時に、各分割パターンに対して、観測された値の種類数（第１の特徴量）と、観測データ数に対してフィールドの値に変化が発生した頻度（第２の特徴量）と値の変化時の変化量の分散（第３の特徴量）との３種類を算出していたが、この３種類の特徴量を全て算出する必要はない。例えば、固定値のフィールドのみを抽出したいのであれば、第１の特徴量のみを算出すればよく、抽出したいフィールドによって、必要な特徴量を選択して算出すればよい。また上記の特徴量から算出され得る別の特徴量を用いてもよい。例えば、第１の特徴量と、フィールド長から算出される、取りうる値の範囲に対してどれだけ値の種類数が観測されたかという特徴量を用いてもよい。これによりデータフィールドの分割処理を簡素化でき、処理時間やプログラムサイズの観点から効果的となる。
【０２９４】
（１８）上記の実施の形態では、データフィールドの分割時に、各分割パターンに対して、データフィールドの値を変換することなく特徴量を算出していたが、データフィールドの値を変換する前処理を行ってもよい。例えば、分割パターンが符号付のフィールドであることを想定して、２の補数変換処理を行った上で特徴を算出してもよい。これは、連続値のフィールドが符号付で表現されていた場合に、精度よくデータフィールドを分割するために効果的である。
【０２９５】
（１９）上記の実施の形態では、ペイロード分割部は、分割したデータフィールドの情報を特徴抽出部に通知することで、特徴抽出部が正常モデルを抽出していたが、ペイロード分割部の出力自体を、外部に通知又は内部に保存してもよい。
【０２９６】
（２０）上記の実施の形態では、ペイロード分割部は、受信ログに含まれる全てのＩＤに関して、データフィールドの分割処理を行っていたが、全てのＩＤに関してデータフィールドの分割処理を行わなくてもよい。例えば、あらかじめ指定されたＩＤのみに対してデータフィールドの分割処理を行い、その結果を出力してもよい。
【０２９７】
（２１）上記の実施の形態では、ペイロード分割部は、データフィールドに対して、全ての分割パターン候補に対して特徴量を抽出することでフィールドを分割していたが、あらかじめ決められた範囲のみに対して、データフィールドの分割処理を行ってもよい。これは、大きなデータフィールドの領域から特徴抽出を高速に行いたい場合に、監視対象を絞ることで、処理の高速化を図ることができる。例えばデータフィールドの上位２０ビットに対してのみデータフィールドの分割処理を行ってもよいし、任意の範囲に対して行ってもよい。処理時間の観点から効果的である。
【０２９８】
（２２）上記の実施の形態では、値の変化時の変化量の分散を、フィールドの変化の時系列的変化を捉える特徴量として用いたが、これ以外の特徴であっても構わない。例えばフィールドの値の変化量の分布を用いてもよいし、フィールドの値の移動平均を用いた特徴量としてもよい。
【０２９９】
（２３）上記の実施の形態では、車載ネットワークとしてＣＡＮプロトコルを用いていたが、これに限るものではない。例えば、ＣＡＮ−ＦＤ（ＣＡＮ  ｗｉｔｈ  Ｆｌｅｘｉｂｌｅ  Ｄａｔａ  Ｒａｔｅ）、ＦｌｅｘＲａｙ、Ｅｔｈｅｒｎｅｔ、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）、ＭＯＳＴ（Ｍｅｄｉａ  Ｏｒｉｅｎｔｅｄ  Ｓｙｓｔｅｍｓ  Ｔｒａｎｓｐｏｒｔ）などを用いてもよい。あるいはこれらのネットワークをサブネットワークとして、組み合わせたネットワークであってもよい。
【０３００】
（２４）上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。このＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記録されている。このマイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０３０１】
（２５）上記の実施の形態における各装置は、構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。このＲＡＭには、コンピュータプログラムが記録されている。このマイクロプロセッサが、このコンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０３０２】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
【０３０３】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０３０４】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０３０５】
（２６）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。ＩＣカードまたはモジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。ＩＣカードまたはモジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ＩＣカードまたはモジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０３０６】
（２７）本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０３０７】
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
【０３０８】
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０３０９】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
【０３１０】
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０３１１】
（２８）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０３１２】
本開示は、車載ネットワークを流れるデータフレームを監視し、統計的特徴量に従い、データフレームに含まれるデータフィールドを分割し、分割したフィールドごとに正常なモデルを生成する。また監視ＥＣＵは、正常モデルをもとに車載ネットワーク内の不正を検知することができる。これらにより、異なる車載ネットワークシステムであっても、事前の設計を必要とせずに、コストを抑えた車載ネットワークの保護が可能となる。
【符号の説明】
【０３１３】
１０  車載ネットワーク
１００  監視ＥＣＵ
１１０  フレーム送受信部
１２０  フレーム収集部
１３０  動作判断部
１４０  ペイロード分割部
１５０  特徴抽出部
１６０  異常検知部
１７０  フレーム生成部
１８０  モード保持部
１９０  受信ログ保持部
１９１  正常モデル保持部
２００，２００ａ，２００ｂ  ＥＣＵ
２０１  フレーム送受信部
２０２  フレーム処理部
２０３  外部機器入出力部
２０４  フレーム生成部
２１０  速度センサ
２２０  ギア
２３０  メータ
３００  バス
【図１】
2018105330.tif 000003
【図２】
2018105330.tif 000004
【図３】
2018105330.tif 000005
【図４】
2018105330.tif 000006
【図５】
2018105330.tif 000007
【図６】
2018105330.tif 000008
【図７】
2018105330.tif 000009
【図８】
2018105330.tif 000010
【図９】
2018105330.tif 000011
【図１０】
2018105330.tif 000012
【図１１】
2018105330.tif 000013
【図１２】
2018105330.tif 000014
【図１３】
2018105330.tif 000015
【図１４】
2018105330.tif 000016
【図１５】
2018105330.tif 000017
【図１６】
2018105330.tif 000018
【図１７】
2018105330.tif 000019
【図１８Ａ】
2018105330.tif 000020
【図１８Ｂ】
2018105330.tif 000021
【図１９】
2018105330.tif 000022
【図２０】
2018105330.tif 000023
【図２１】
2018105330.tif 000024
【図２２】
2018105330.tif 000025
【図２３】
2018105330.tif 000026
【図２４】
2018105330.tif 000027
【図２５】
2018105330.tif 000028
【図２６】
2018105330.tif 000029
【図２７】
2018105330.tif 000030
【図２８】
2018105330.tif 000031
【図２９】
2018105330.tif 000032
【手続補正書】
【提出日】平成30年4月5日(2018.4.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶部を備える情報処理システムが行う、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、
前記車載ネットワークに流れる複数の前記データフレームを受信し、前記複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して前記記憶部に保持される受信ログに１つのレコードとして記録するフレーム収集ステップと、
複数の前記レコードから、前記複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、前記領域における前記ペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、前記特徴量に基づいて、前記複数のペイロード分割パターン候補から、前記ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択した前記ペイロード分割パターンが示す領域と、前記特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含み、
前記受信ログは、前記複数のレコードの受信された順序を示す情報を含み、
前記特徴量は、前記時系列変化のパターン数を表す第１の特徴量と、前記時系列変化の発生頻度を表す第２の特徴量と、前記時系列変化の変化量に関する統計情報を表す第３の特徴量とのうち、少なくとも前記第２の特徴量及び前記第３の特徴量を含み、
前記フィールド抽出ステップにおいて、
前記複数のペイロード分割パターン候補から、前記第２の特徴量及び前記第３の特徴量に基づいて、前記ペイロードの値が物理量を示す連続値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第１カテゴリのフィールドを示す前記ペイロード分割パターンを選択し、
前記複数のペイロード分割パターン候補のそれぞれについて、同一のデータ長の領域を示す前記ペイロード分割パターン候補の中での前記第３の特徴量の外れ具合を示す外れ値スコアを算出し、
前記ペイロード分割パターン候補の中で開始ビットが同一である領域を示す前記ペイロード分割パターン候補の前記外れ値スコアの平均値を算出し、
前記平均値が所定の閾値以上である領域を示す前記ペイロード分割パターン候補から、当該ペイロード分割パターン候補に含まれるペイロード分割パターン候補の前記第２の特徴量の大小関係に基づいて前記連続値カテゴリに該当するフィールドの領域を示すペイロード分割パターンを選択する
情報処理方法。
【請求項２】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記特徴量に基づいて、前記ペイロードの値に１回以上の時系列変化があり、前記時系列変化に含まれる各回の変化量が所定の大きさ以下である領域を示す前記ペイロード分割パターン候補を、前記第１カテゴリのフィールドの領域を示す前記ペイロード分割パターンとして選択する
請求項１に記載の情報処理方法。
【請求項３】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記複数のペイロード分割パターン候補から、前記特徴量に基づいて、前記ペイロードの値に毎回変化がある領域であって、当該ペイロードの値の各回の変化量が一定である領域を示すペイロード分割パターンをカウンタカテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、前記第１カテゴリのフィールドを示す前記ペイロード分割パターンを選択する
請求項１又は２に記載の情報処理方法。
【請求項４】
前記情報処理システムは前記フィールド抽出ステップにおいて、
前記特徴量に基づいて、前記ペイロードの値に１回以上の時系列変化があり、前記ペイロードの値が離散値を取る領域を示す前記ペイロード分割パターン候補を、第２カテゴリのフィールドの領域を示す前記ペイロード分割パターンとして選択する
請求項３に記載の情報処理方法。
【請求項５】
前記第２カテゴリは、
前記フィールド内の前記ペイロードの値の整合性をチェックするためのチェックサムカテゴリと、
前記フィールド内の前記ペイロードの値が前記車載ネットワークを含む車両の所定の状態を示すステータスカテゴリとの少なくとも一方である
請求項４に記載の情報処理方法。
【請求項６】
前記情報処理システムは前記フィールド抽出ステップにおいて、
固定値フィールド抽出ステップと、
カウンタフィールド抽出ステップと、
連続値フィールド抽出ステップと、
第２カテゴリフィールド抽出ステップとを順に実行し、
前記固定値フィールド抽出ステップでは、前記複数のペイロード分割パターン候補から、前記第１の特徴量が１であるペイロード分割パターン候補を固定値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択し、前記複数のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第１のペイロード分割パターン候補とし、
前記カウンタフィールド抽出ステップでは、前記第１のペイロード分割パターン候補から、前記カウンタカテゴリのフィールドの領域を示すペイロード分割パターンを選択し、前記第１のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第２のペイロード分割パターン候補とし、
前記連続値フィールド抽出ステップでは、前記第２のペイロード分割パターン候補から、前記第２の特徴量と、前記第３の特徴量と、を用いて、前記第２のペイロード分割パターン候補の中から、前記連続値カテゴリのフィールドの領域を示すペイロード分割パターンを選択し、前記第２のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なる前記ペイロード分割パターン候補を除いた残りを第３のペイロード分割パターン候補とし、
前記第２カテゴリフィールド抽出ステップでは、前記第３のペイロード分割パターン候補を、前記第２カテゴリフィールドとして選択する
請求項４に記載の情報処理方法。
【請求項７】
さらに前記情報処理システムが実行する、
前記フィールド抽出結果及び前記受信ログから、前記選択されたペイロード分割パターンが示すフィールドの値の時系列変化の変化量に関する統計情報に基づいて、当該フィールドの値の変化の正常範囲を示す正常モデルを生成し、生成した前記正常モデルをさらに出力する特徴抽出ステップを含む
請求項１から６のいずれか１項に記載の情報処理方法。
【請求項８】
前記複数のデータフレームのそれぞれは、データフレームの種類を示すデータ種別ＩＤを含み、
前記情報処理システムは、
前記フレーム収集ステップにおいて、前記ペイロード及び前記データ種別ＩＤを前記１つのレコードとして前記受信ログに記録し、
前記フィールド抽出ステップを、前記データ種別ＩＤが共通のデータフレームを対象に実行する
請求項１から７のいずれか１項に記載の情報処理方法。
【請求項９】
プロセッサ及び記憶部を備え、１以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理システムであって、
前記プロセッサは、
前記車載ネットワークに流れる複数の前記データフレームを受信し、前記複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも１つのフィールドから構成されるペイロードを取得して前記記憶部に保持される受信ログに１つのレコードとして記録し、
複数の前記レコードから、前記複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、前記領域における前記ペイロードの値の時系列変化に関する１つ以上の特徴量を算出し、
前記特徴量に基づいて、前記複数のペイロード分割パターン候補から、前記ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、
選択した前記ペイロード分割パターンが示す領域と、前記特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力し、
前記受信ログは、前記複数のレコードの受信された順序を示す情報を含み、
前記特徴量は、前記時系列変化のパターン数を表す第１の特徴量と、前記時系列変化の発生頻度を表す第２の特徴量と、前記時系列変化の変化量に関する統計情報を表す第３の特徴量とのうち、少なくとも前記第２の特徴量及び前記第３の特徴量を含み、
前記フィールド抽出結果の出力において、
前記複数のペイロード分割パターン候補から、前記第２の特徴量及び前記第３の特徴量に基づいて、前記ペイロードの値が物理量を示す連続値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第１カテゴリのフィールドを示す前記ペイロード分割パターンを選択し、
前記複数のペイロード分割パターン候補のそれぞれについて、同一のデータ長の領域を示す前記ペイロード分割パターン候補の中での前記第３の特徴量の外れ具合を示す外れ値スコアを算出し、
前記ペイロード分割パターン候補の中で開始ビットが同一である領域を示す前記ペイロード分割パターン候補の前記外れ値スコアの平均値を算出し、
前記平均値が所定の閾値以上である領域を示す前記ペイロード分割パターン候補から、当該ペイロード分割パターン候補に含まれるペイロード分割パターン候補の前記第２の特徴量の大小関係に基づいて前記連続値カテゴリに該当するフィールドの領域を示すペイロード分割パターンを選択する
情報処理システム。
【請求項１０】
プロセッサ及び記憶部を備える情報処理システムにおいて、前記プロセッサによって実行されることで前記情報処理システムに請求項１に記載の情報処理方法を実行させるプログラム。
【国際調査報告】
2018105330.tif 000033
2018105330.tif 000034
2018105330.tif 000035
2018105330.tif 000036