非特許文献1のような手法では、ペイロードの分割方法として、収集したフレームから算出される、各分割候補において観測されたユニークな値の個数のみを用いてペイロードの種類の分類及び長さの特定をして分割を行っているため、ペイロードの分割精度が低い。
本開示は、車載ネットワークにおける精度のよい異常検知をコスト効率よく実現するための情報処理方法等を提供する。
本開示の一実施様態の情報処理方法は、記憶部を備える情報処理システムが行う、1以上の電子制御ユニットを含む車載ネットワークに流れるデータフレームを処理する情報処理方法であって、車載ネットワークに流れる複数のデータフレームを受信し、複数のデータフレームのそれぞれから、当該データフレームに含まれ、少なくとも1つのフィールドから構成されるペイロードを取得して記憶部に保持される受信ログに1つのレコードとして記録するフレーム収集ステップと、複数のそのレコードから、複数のデータフレームのペイロード内の互いに異なる領域を示す複数のペイロード分割パターン候補のそれぞれについて、当該領域におけるペイロードの値の時系列変化に関する1つ以上の特徴量を算出し、算出した特徴量に基づいて、複数のペイロード分割パターン候補から、ペイロード内にあるフィールドの領域を示すペイロード分割パターンを選択し、選択したペイロード分割パターンが示す領域と、特徴量に基づく当該フィールドのカテゴリとを示すフィールド抽出結果を出力するフィールド抽出ステップとを含む。
この情報処理システムを用いれば、メッセージ仕様の異なる車載ネットワークシステムに対して個々の事前の設計を必要とせずに異常検知システムを構築でき、コストを抑えた車載ネットワークの保護が可能となる。
また例えば、受信ログは、複数のレコードの受信された順序を示す情報をさらに含み、特徴量は、時系列変化のパターン数を表す第1の特徴量と、時系列変化の発生頻度を表す第2の特徴量と、時系列変化の変化量に関する統計情報を表す第3の特徴量との少なくとも1つを含む。
これらの特徴量を個別に使い分けたり組み合わせて用いたりすることで、より高い精度でペイロードのフィールドへの分割が可能になる。これにより、例えばより精度の高い正常モデルを構築することが可能となり、車載ネットワークの異常検知の精度向上が期待できる。
また例えば、情報処理システムはフィールド抽出ステップにおいて、特徴量に基づいて、ペイロードの値に1回以上の時系列変化があり、時系列変化に含まれる各回の変化量が所定の大きさ以下である領域を示すペイロード分割パターン候補を、第1カテゴリのフィールドの領域を示すペイロード分割パターンとして選択してもよい。
これにより、例えば正常であれば値が所定の規則に従って変化するフィールドを特定して抽出することができる。例えばこのように特定されたフィールドを攻撃の標的になりやすいフィールドであるとして監視対象とすることで、車載ネットワークの異常検知に用いることができる。
また例えば、特徴量は上記の第2の特徴量及び第3の特徴量を含み、情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補から、第2の特徴量及び第3の特徴量に基づいて、ペイロードの値が物理量を示す連続値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第1カテゴリのフィールドを示すペイロード分割パターンを選択する連続値フィールド抽出ステップとを実行してもよい。例えば情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補のそれぞれについて、同一のデータ長の領域を示すペイロード分割パターン候補の中での第3の特徴量の外れ具合を示す外れ値スコアを算出し、ペイロード分割パターン候補の中で開始ビットが同一である領域を示すペイロード分割パターン候補の外れ値スコアの平均値を算出し、平均値が所定の閾値以上である領域を示すペイロード分割パターン候補から、当該ペイロード分割パターン候補に含まれるペイロード分割パターン候補の第2の特徴量の大小関係に基づいて連続値カテゴリに該当するフィールドの領域を示すペイロード分割パターンを選択してもよい。
これにより、例えばセンサが計測して出力する物理量を示すフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値又は値の変化率の異常の判定対象として車載ネットワークの異常検知に用いることができる。
また例えば、情報処理システムはフィールド抽出ステップにおいて、複数のペイロード分割パターン候補から、特徴量に基づいて、ペイロードの値に毎回変化がある領域であって、当該ペイロードの値の各回の変化量が一定である領域を示すペイロード分割パターンをカウンタカテゴリのフィールドの領域を示すペイロード分割パターンとして選択することで、第1カテゴリのフィールドを示すペイロード分割パターンを選択してもよい。
これにより、値がインクリメント又はデクリメントするフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値の変化の規則違反に基づく異常の判定対象として車載ネットワークの異常検知に用いることができる。
また例えば、情報処理システムはフィールド抽出ステップにおいて、特徴量に基づいて、ペイロードの値に1回以上の時系列変化があり、ペイロードの値が離散値を取る領域を示すペイロード分割パターン候補を、第2カテゴリのフィールドの領域を示すペイロード分割パターンとして選択してもよい。例えば第2カテゴリは、フィールド内のペイロードの値の整合性をチェックするためのチェックサムカテゴリと、フィールド内のペイロードの値が車載ネットワークを含む車両の所定の状態を示すステータスカテゴリとの少なくとも一方であってもよい。
これにより、チェックサム又はフラグ等の離散値を取るフィールドを特定することができる。このように特定されたフィールドは、そのフィールドの値の他のフィールドとの整合性、又は変化の発生頻度等に基づく異常の判定対象として車載ネットワークの異常検知に用いることができる。
また、情報処理システムはフィールド抽出ステップにおいて、固定値フィールド抽出ステップと、カウンタフィールド抽出ステップと、連続値フィールド抽出ステップと、第2カテゴリフィールド抽出ステップとを順に実行し、固定値フィールド抽出ステップでは、複数のペイロード分割パターン候補から、第1の特徴量が1であるペイロード分割パターン候補を固定値カテゴリのフィールドの領域を示すペイロード分割パターンとして選択し、複数のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第1のペイロード分割パターン候補とし、カウンタフィールド抽出ステップでは、第1のペイロード分割パターン候補から、カウンタカテゴリのフィールドの領域を示すペイロード分割パターンを選択し、第1のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第2のペイロード分割パターン候補とし、連続値フィールド抽出ステップでは、第2のペイロード分割パターン候補から、第2の特徴量と、第3の特徴量と、を用いて、第2のペイロード分割パターン候補の中から、連続値カテゴリのフィールドの領域を示すペイロード分割パターンを選択し、第2のペイロード分割パターン候補から当該選択したペイロード分割パターンと少なくとも一部が重なるペイロード分割パターン候補を除いた残りを第3のペイロード分割パターン候補とし、第2カテゴリフィールド抽出ステップでは、第3のペイロード分割パターン候補を、第2カテゴリフィールドとして選択してもよい。
これにより、未知のペイロードから効率よく各カテゴリのフィールドの範囲を特定して各フィールドを抽出することができる。
また例えば、さらに前記情報処理システムが実行する、フィールド抽出結果及び受信ログから、選択されたペイロード分割パターンが示すフィールドの値の時系列変化の変化量に関する統計情報に基づいて、当該フィールドの値の変化の正常範囲を示す正常モデルを生成し、生成した正常モデルをさらに出力する特徴抽出ステップを含んでもよい。
これにより、特定した各カテゴリのフィールドの範囲に加えて値の各種のフィールドの異常判定のための基準が得られ、車載ネットワークの異常検知の実行が可能になる。
また、複数のデータフレームのそれぞれは、データフレームの種類を示すデータ種別IDを含み、情報処理システムは、フレーム収集ステップにおいて、ペイロード及びデータ種別IDを1つのレコードとして受信ログに記録し、フィールド抽出ステップを、データ種別IDが共通のデータフレームを対象に実行してもよい。
これにより、バスから取得されたデータフレームに複数の種類のデータフレームが混在する場合であっても、ペイロードのフィールドへの分割が可能である。
なお、これらの包括的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なCD−ROM等の記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されてもよい。
以下、図面を参照しながら、実施の形態について説明する。
なお、以下で説明する実施の形態は、包括的又は具体的な例を示す。したがって、以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置及び接続形態、ステップ、ステップの順序などは一例であり、本開示を限定する趣旨ではない。
また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、任意で含まれる構成要素として説明される。
(実施の形態)
<1.構成>
実施の形態として説明する情報処理システムは、車載ネットワークを流れるデータフレームを受信し、このデータフレームのペイロードをフィールドに分割し、分割して得たフィールドごとの、正常なデータフレームに含まれる値に関する振る舞いモデルを構築する。この情報処理システムはまた、この振る舞いモデルに基づいて、車載ネットワークを監視し、異常なデータフレームを検知する。このような情報処理システムについて図面を参照しながら説明する。
<1.1 車載ネットワーク10の全体構成>
図1は、本実施の形態における車載ネットワーク10の全体構成を示すブロック図である。車載ネットワーク10は、監視ECU100と、ECU200と、バス300とを備える。
監視ECU100は、バス300に接続され、バス300を流れるデータフレームを監視し、異常を含む不正なデータフレームが流れているか監視する。通信回路、プロセッサ及びメモリを含むマイクロコントローラ(図示なし)を備える監視ECU100は、本実施の形態における情報処理システムの一例である。
ECU200aは、速度センサ210及びギア220に接続されており、ECU200bは、メータ230に接続されている。ECU200aは、定期的にバス300へ、速度センサ210から得られる車両の速度と、ギア220のポジションとをデータフレームに含めて送信する。このデータフレームを受信したECU200bは、ECU200aから通知される車両の速度及びギア220のポジションを取得し、メータ230に表示する。
以下、本実施の形態の理解を促すために、車載ネットワーク10で用いられている通信規格であるCANプロトコルで送信されるデータのフォーマットについて簡単に説明する。
<1.2 データフレームフォーマット>
図2は、CANプロトコルのデータフレームのフォーマットを示す図である。ここではCANプロトコルにおける標準IDフォーマットにおけるデータフレームを示している。
データフレームは、Start Of Frame(以下、SOFという)、IDフィールド、Remote Transmission Request(以下、RTRという)、IDentifier Extension(以下、IDEという)、予約ビット(以下、rという)、データレングスコード(以下、DLCという)、データフィールド、Cycric Redundancy Check(以下、CRCという)シーケンス、CRCデリミタ、Acknowledgementト(以下、ACKとする)スロット(図中のACK)、ACKデリミタ(図中のDEL)、及びエンドオブフレーム(以下、EOF)の12個の部分から構成される。
SOFとは、1ビットのドミナントである。バス300はアイドルのときになっており、送信ノードはバス300をレセシブからドミナントへ変更することでフレームの送信開始を通知する。
IDとは、11ビット長の値で、データフレームの種類を示す。ここでいうデータフレームの種類とは、例えばデータの内容又はデータフレームの送信元である送信ノードを指す。また、IDは同一ネットワーク上で複数のノードが同時に送信を開始したデータフレーム間での通信調停にも用いられる。より具体的には、IDがより小さい値を持つデータフレームは優先順位がより高い。IDは、本実施の形態におけるデータ種別IDの例である。
RTRは、1ビットのドミナントで、データフレームであることを示す。
IDE及びrは、それぞれ1ビットのドミナントである。
DLCは4ビット長の値で、続くデータフィールドの長さを示す。
データフィールドは、最大64ビット長の、送信されるデータの部分であり、データフレームのペイロードに相当する。8ビット単位で長さが調整可能である。送信されるデータのこの部分への割り当てに関する仕様は車種や製造者に依存する。
CRCシーケンスは15ビット長で、SOF、IDフィールド、コントロールフィールド、及びデータフィールドの送信値より算出される値を示す。受信ノードはSOF、IDフィールド、コントロールフィールド、及びデータフィールドの受信値から算出した結果をCRCシーケンスの値と比較することで異常の有無を判断する。
CRCデリミタは1ビットのレセシブで、CRCシーケンスの終了を表す区切り記号である。
ACKスロットは1ビット長で、送信ノードはこの部分でレセシブを送信する。受信ノードはCRCシーケンスまで正常に受信ができていればこの部分でドミナントを送信する。CANの規格では、同時に送信されたドミナントとレセシブとでは上述のとおりドミナントが優先されるため、通信が正常に行われている車載ネットワーク10では、ACKスロットの送信中はバス300がドミナントの状態である。
ACKデリミタは1ビット長のレセシブで、ACKスロットの終了を表す区切り記号である。
EOFは7ビット長のレセシブで、データフレームの終了を示す。
<1.3 エラーフレームフォーマット>
図3は、CANプロトコルのエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ(プライマリ)、エラーフラグ(セカンダリ)、及びエラーデリミタ(図中DEL)の3個の部分から構成される。
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。連続する6ビットのドミナントであり、CANプロトコルにおける、連続する同じ値の5ビットの次には異なる値を1ビット送信するというビットスタッフィングルールに違反する。このビットスタッフィングルール違反の発生によって、他のノードからのエラーフラグ(セカンダリ)の送信が引き起こされる。
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに通知するために送信される6ビット長のドミナントである。エラーフラグ(プライマリ)を受信した全てのノードが送信する。
エラーデリミタは8ビット長のレセシブで、エラーフレームの終了を示す。
<1.4 監視ECU100の構成図>
図4は、監視ECU100の機能構成を示すブロック図である。
監視ECU100は、フレーム送受信部110と、フレーム収集部120と、動作判断部130と、ペイロード分割部140と、特徴抽出部150と、異常検知部160と、フレーム生成部170と、モード保持部180と、受信ログ保持部190と、正常モデル保持部191とを備える。
フレーム送受信部110は、バス300に対して、CANのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部110は、バス300からデータフレームを1ビットずつ受信する。また、データフレームの受信がエラー無く完了すると、データフレームに含まれるID、DLC、及びデータフィールドをフレーム収集部120及び動作判断部130に転送する。また、受信したデータフレームがCANプロトコルに則っていないと判断した場合、フレーム送受信部110はエラーフレームを送信する。また、フレーム送受信部110は、他のノードからエラーフレームを受信した場合、つまり受け取ったフレームの値からエラーフレームであると判断した場合には、受信中のデータフレームを破棄する。また、フレーム生成部170からデータフレームの送信要求を受けた場合には、フレーム送受信部110はバス300へデータフレームを1ビットずつ送信する。
フレーム収集部120は、フレーム送受信部110よりデータフレームの上述の一部を受け取り、このデータフレームが受信された時刻(以下、受信時刻という)、並びにデータフレームに含まれていたID及びデータフィールドを、受信ログ保持部190に保持される受信ログに1レコードとして記録する。受信時刻は、例えば監視ECU100が起動してから経過した稼働時間を計測するタイマを参照して記録される。このようなタイマは、例えば監視ECU100が備えるマイクロコントローラに含まれる。
動作判断部130は、モード保持部180に格納されている動作モードを示す値をデータフレーム受信時に参照し、この動作モードに従って監視ECU100の順次の動作を決定する。監視ECU100の動作モードには収集モードと監視モードの2つがある。動作モードを収集モードに決定した場合、動作判断部130は監視ECU100が通算で1時間以上動作しているかを確認する。1時間以上動作していない場合は特に動作を行わない。1時間以上動作している場合、動作判断部130は、ペイロード分割部140へ所定の動作要求を行い、その後、動作モードを監視モードに切り替える。動作モードが監視モードである場合には、異常検知部160へ異常検知要求を行う。
ペイロード分割部140は、受信ログ保持部190に格納されている受信ログを参照し、共通のIDを含むレコードのペイロード、つまりデータフィールドを分割して、特定の意味をなすビット列(以下、フィールドという)であるフィールドを抽出する。データフィールドに含まれるフィールドは、その示す情報に応じて、固定値、カウンタ、連続値、チェックサム、ステータスのいずれかのカテゴリに分類される。例えば、速度センサ210によって計測された自動車の速度を示す値が占める領域などが1つのフィールドに該当し、当該フィールドは連続値に分類される。分割方法の詳細については後述の1.11から1.16で説明する。
また、ペイロード分割部140は、共通のIDを含むレコードのペイロードを分割して得たフィールドに関する情報を、特徴抽出部150に通知する。この情報の例には、フィールドのカテゴリ、フィールドの領域、フィールドの値が含まれる。
特徴抽出部150は、ペイロード分割部140から通知される、ペイロードの分割によって得られたフィールドに関する情報と、受信ログとから正常モデルを生成して正常モデル保持部191に格納する。
このような正常モデルはデータフレームのIDごとに生成され、データフレームの受信間隔に関する情報である受信間隔の平均及び分散と、データフィールドに関する情報であるフィールドの領域、カテゴリ、及び振る舞い情報とを含む。
データフィールドに関する情報のうち、振る舞い情報は、受信ログ保持部190に格納されている受信ログに含まれるペイロードの値からフィールドごとに生成される。
振る舞い情報に含まれる情報はフィールドのカテゴリによって異なる。例えば固定値のカテゴリに属するフィールドの振る舞い情報には、受信ログ中に観測された固定値の値が含まれる。この値は、監視モードでホワイトリストの値として用いられる。カウンタのカテゴリに属するフィールドに関しては、振る舞い情報がない。連続値のカテゴリに属するフィールドに関しては、受信ログ中に観測された連続するデータフレーム間の該当フィールドにおける値の差分つまり変化量の平均及び分散を含む。ステータスのカテゴリに属するフィールドに関しては、受信ログ中に含まれる、あるIDのデータフレームの総受信数に対して、時系列で直前のデータフレームからフィールドの値に変化が発生した割合、つまり変化の発生頻度を含む。なお、ステータスとは、車両上の何らかの状態であり、例えば前照灯等の特定の装置のON/OFF、ギアポジション、運転モード等を指す。
異常検知部160は、動作判断部130から異常検知要求を受けた場合に、不正なデータフレームの受信の検知のための処理(以下、異常検知処理という)を行う。より具体的には、異常検知部160は、受信ログ保持部190に格納されている受信ログを参照し、正常モデル保持部191に格納されている正常モデルと受信ログとを用いて不正なデータフレームの受信の有無を判定する。
例えば異常検知部160は、あるIDのデータフレームの正常モデルで固定値のカテゴリに属するフィールドに関して、受信ログ中でこのIDを含むレコードのデータフィールド内の当該フィールドの領域の値と正常モデルでこのフィールドの振る舞い情報に示される値とを比較する。そしてこれらの値が異なる場合、異常検知部160は不正なデータフレームを受信したと判定する。
また異常検知部160は、あるIDのデータフレームの正常モデルでカウンタのカテゴリに属するフィールドに関して、受信ログ中でこのIDを含むレコードのデータフィールド内の当該フィールドの領域の値が、時間順で正しくインクリメントしているか否か判定する。正しくインクリメントしていない場合、異常検知部160は、不正なデータフレームを受信したと判定する。
また異常検知部160は、あるIDのデータフレームの正常モデルで連続値のカテゴリに属するフィールドに関して、受信ログ中でこのIDを含むレコードのデータフィールド内の当該フィールドの領域の値の直前のレコードでの値からの変化量が、正常モデルでこのフィールドの振る舞い情報に含まれる変化量の平均に対して外れ値であるか否か判定する。そして外れ値である場合、異常検知部160は、不正なデータフレームを受信したと判定する。なお、外れ値であるか否かの判定は、正常モデルの振る舞い情報に示される変化量の分散を用いて、例えば当該フィールドの値の変化量の平均値±3×(√分散)の範囲に収まるか否かに基づいて行われる。
また異常検知部160は、あるIDのデータフレームの正常モデルでステータスのカテゴリに属するフィールドに関して、受信ログ中でこのIDを含むレコードのデータフィールド内の当該フィールドの領域の値を1秒などの所定の時間幅で見たときにフィールドの値の変化の発生頻度と、正常モデルの振る舞い情報に示される発生頻度とを比較する。これらの発生頻度の値の差が所定の閾値より大きい場合、異常検知部160は、不正なデータフレームを受信したと判定する。
このような判定によって異常を含むデータフレームを受信したことを検知すると、異常検知部160は、フレーム生成部170に、例えば不正なデータフレームを受信していることを通知するためのデータフレームの生成を要求する。
フレーム生成部170は、異常検知部160から上記のデータフレームの生成を要求されると、不正なデータフレームを受信していることを通知するためのデータフレームを生成し、フレーム送受信部110へ通知する。
モード保持部180は、監視ECU100の現在の動作モードを示す値を保持している。動作モードは、上述のとおり収集モードと又は監視モードである。図5にモード保持部180が保持する動作モードの値の一例を示す。動作モードについては、後述の1.6にて説明する。
受信ログ保持部190は、フレーム収集部120から通知されたデータフレームの情報(受信時刻、ID、データフィールド)を保持する。図6に受信ログ保持部190に格納されている受信ログの一例を示す。受信ログについては、後述の1.7にて説明する。
正常モデル保持部191は、特徴抽出部150が抽出した正常モデルを保持する。図7に正常モデル保持部191が保持する正常モデルの一例を示す。正常モデルについては、1.8にて説明する。
これらの機能的な構成要素は、監視ECU100が備えるマイクロコントローラにおいて、通信回路を通じて受信したデータフレームを、プロセッサがメモリに格納されたプログラムを実行して処理し、必要に応じて処理の中間又は最終で生成されるデータがメモリに保持されることによって実現される。
<1.5 監視ECU100の動作>
上述のように構成される監視ECU100の動作における一連の工程について、図8に示されるフローチャートを用いて説明する。
(ステップS1)監視ECU100のフレーム送受信部110が、車載ネットワークのバス300を流れるデータフレームを受信する。
(ステップS2)監視ECU100のフレーム収集部120は、ステップS1で受信されたデータフレームの受信時刻、ID、及びデータフィールドを含むレコードを、受信ログ保持部190に保持される受信ログに記録する。
(ステップS3)監視ECU100の動作判断部130は、監視ECU100の現在の動作モードを、モード保持部180を参照して確認する。現在の動作モードが監視モードである場合(YESの場合)、動作判断部130はステップS4へ進む。そうでない場合、つまり現在の動作モードが収集モードである場合(NOの場合)、動作判断部130はステップS7へ進む。
(ステップS4)監視ECU100の動作判断部130は異常検知部160へ異常検知処理要求を行い、異常検知部160は上述のような異常検知処理を行う。
(ステップS5)監視ECU100の異常検知部160は、異常検知処理の結果、異常が検知された場合(YESの場合)にステップS6へ進む。そうでない場合(NOの場合)、監視ECU100はステップS1に戻る。
(ステップS6)監視ECU100の異常検知部160は、異常を検知したことを他のノードに通知するデータフレームの生成要求を、フレーム生成部170に送信する。フレーム生成部170は不正なデータフレームの受信を通知するデータフレームを生成し、フレーム送受信部110を通してバス300にこのデータフレームを送信して終了する。
(ステップS7)監視ECU100の動作判断部130は、監視ECU100が1時間以上動作しているかを判定する。監視ECU100が1時間以上動作している場合(YESの場合)は、ステップS8へ進む。そうでない場合(NOの場合)、監視ECU100はステップS1に戻る。
(ステップS8)監視ECU100の動作判断部130は、ペイロード分割部140にペイロード分割処理要求を行う。ペイロード分割部140は、データフレームのペイロードであるデータフィールドを分割してフィールド抽出処理を行う。
(ステップS9)監視ECU100の特徴抽出部150は、ペイロード分割部140によるフィールド抽出処理の結果を用いて正常モデルを生成し、正常モデル保持部191に格納する。
(ステップS10)監視ECU100の動作判断部130は、モード保持部180が保持する動作モードの値を書き換えて監視ECU100の動作モードを収集モードから監視モードに切り替える。
上記の各ステップのうち、ステップS1及びステップS2は本実施の形態におけるフレーム収集ステップの例であり、ステップS8は本実施の形態におけるフィールド抽出ステップの例である。
なお、フローチャートではステップS6又はステップS10の工程を最後に監視ECU100の動作が終了する流れが示されるが、実際にはステップS1に戻って動作が反復的に継続されてもよい。
<1.6 動作モードのデータ構成>
図5を参照して、モード保持部180が保持する動作モードの一例を示す。
この例では、監視ECU100の現在の動作モードは収集モードであることが示されている。収集モードでは、監視ECU100が受信するデータフレームのデータフィールド等がフレーム収集部120によって受信ログ保持部190に格納される。
<1.7 受信ログのデータ構成>
図6に、受信ログ保持部190が保持する受信ログの一例を示す。
この受信ログはIDが0x100であるデータフレームを複数個受信した後の状態である。データ行の各行が1レコードであり、上から下に時間順に並ぶ。
この例におけるデータフィールドの長さは5ビットで、受信ログの中で最も早く受信されたデータフレームの受信時刻は51msであり、データフィールドの値は0x00 0x00 0x00 0x10 0x10である。また、最も遅くに受信されたデータフレームの受信時刻は500450msであり、データフィールドの値は、0x26 0x15 0x4B 0x30 0xB6である。
<1.8 正常モデルのデータ構成>
図7に、正常モデル保持部191が保持する正常モデルの一例を示す。
この例に示される正常モデルは、IDが0x100のデータフレームに関する正常モデルである。この正常モデルには、IDが0x100のデータフレームの受信間隔に関する情報として、受信間隔の平均である50ms、受信間隔の分散である3msが含まれている。またデータフィールドに関する情報として、データフィールドを分割して得られた7つのフィールドそれぞれの開始ビット位置、ビット長、カテゴリ、及び振る舞い情報が含まれる。より具体的には、データフィールドの上位1ビット目から8ビット長のフィールドはカウンタを示すフィールドである。データフィールドの上位9ビット目から、2ビット長さのフィールドは固定値を示し、その値は0である。データフィールドの上位11ビット目から14ビット長さのフィールドは連続値を示し、フィールドの値に発生した変化の変化量の平均は10であり、分散は100である。データフィールドの上位25ビット目から、1ビット長のフィールドは固定値であり、その値は0である。データフィールドの上位26ビット目から3ビット長のフィールドは車両のステータスを示し値の変化の発生頻度は0.0001である。データフィールドの上位33ビット目から8ビット長のフィールドはチェックサムである。
<1.9 他のECUの構成>
図9は、車載ネットワークに接続されるノードの例であるECU200a又はECU200bの機能構成を示すブロック図である。ECU200aはフレーム送受信部201と、フレーム処理部202と、外部機器入出力部203と、フレーム生成部204とを備える。これらの機能的な構成要素は、ECU200aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ又はデジタル回路等により実現される。
フレーム送受信部201は、バス300に対して、CANのプロトコルに従ったデータフレームを送受信する。即ち、フレーム送受信部201はバス300からデータフレームを1ビットずつ受信する。また、データフレームの受信がエラー無く完了すると、データフレームに含まれるID、DLC、及びデータフィールドをフレーム処理部202に転送する。受信したデータフレームがCANプロトコルに則っていないと判断した場合、フレーム送受信部201はエラーフレームを送信する。また、他のノードからエラーフレームを受信した場合、フレーム送受信部201は受信中のデータフレームを破棄する。通信調停といったCANのプロトコルに則った処理も、フレーム送受信部201において実行される。
フレーム処理部202は、受信したデータフレームの内容を解釈する。例えばECU200bでは、ECU200aから送信されるデータフレームのデータフィールドに含まれる速度センサ210が計測した速度及びギア220のポジションの情報を取得し、これらの情報をメータ230に表示させるための制御情報を外部機器入出力部203に通知する。このときフレーム処理部202は、データフレームに含まれているカウンタ及びチェックサムが所定の条件を満たしているかを確認する。より具体的には、カウンタについては、受信済みの同IDのデータフレームに含まれていたカウンタの値よりも大きな値であるかを確認する。
チェックサムについては、例えばデータフィールドのチェックサムのフィールド以外の部分を1バイトずつに分割し、全ての値を加算した和の下位1バイトがチェックサムの値となっているかを確認する。カウンタ及びチェックサムがこれらの条件を満たしている場合に、受信したデータフレームに基づいた情報がメータ230に表示される。
外部機器入出力部203は、ECU200a又はECU200bに接続される外部機器と通信を行う。例えばECU200aの場合、外部機器入出力部203は、速度センサ210及びギア220と接続され、現在の車両の速度及びギア220のポジションの情報の通知を受け、これらの情報をフレーム生成部204に通知する。ECU200bの場合、外部機器入出力部203はメータ230に接続され、現在の車両の速度や及びギア220のポジションの情報を運転者に通知するために、これらの情報を表示させる信号をメータ230に送信する。
フレーム生成部204は、バス300へ送信するデータフレームを生成する。例えばECU200aでは、外部機器入出力部203から通知された、速度センサ210から取得した車両の速度と、ギア220から取得したギアのポジションを含むデータフレームを、あらかじめ定められた周期、例えば50ms間隔で生成し、フレーム送受信部201に送信する。またカウンタ及びチェックサムもこのデータフレームに含める。カウンタは送信のたびにインクリメントされ、チェックサムは前述の式を満たすように算出される。なお、データフレームが生成される間隔は50ms以外の間隔でもよい。図10に、ECU200aがバス300に送信するデータフレームの一部の例を示す。監視ECU100及びECU200bはバス300からこのデータフレームを受信する。このようにデータフレームは、少なくとも1つの、特定の意味をなすビット列であるフィールドから構成される。ただし、収集モードで動作中の監視ECU100にとって、受信したデータフレームに含まれるデータフィールドの内容又はデータフィールドの適切な分割方法が不明であるため、このデータフィールドは単なる5バイト長のデータである。
<1.10 ECUが送信するデータフレームの構成>
車載ネットワークに接続される各ECUが送信するデータフレームの構成について例を用いて説明する。図10は、ECU200aが送信するデータフレームの例を示した図である。ただし、図10では本実施の形態の説明に必要な部分のみを抜粋して図示している。
ECU200aは、IDが0x100で、DLCが5のデータフレームを送信する。
データフィールドの先頭1バイトの領域はカウンタのフィールドで、その値は0x26である。カウンタのフィールドの値は送信のたびにインクリメントされる。
データフィールドの2バイト目と3バイト目とを連結した領域は速度センサ210が測定した速度を示すフィールドである。この例では、速度は0.01km/h単位で表され、0x154Bの値は速度の測定値が54.51km/hであることを示す。
4バイト目の上位4ビットの領域はギア220のポジションを示すフィールドであり、0がニュートラル、1がパーキング、2がリバース、3がドライブであることを示す。図10の例では値が3であることから、ギアポジションはドライブである。
4バイト目の下位4ビットの領域は固定値のフィールドであり、0で埋められている。
5バイト目はチェックサムのフィールドである。このフィールドに入る値は、データフィールドのチェックサムのフィールド以外の部分を1バイトの領域に分割し、各領域の値を加算して得られる和の下位1バイトの値である。図10の例でこのような各領域の値の和を求めると、0x26+0x15+0x4B+0x30=0xB6となる。したがって、チェックサムのフィールドに入るべき正しい値は0xB6である。
なお、上述のとおり、上記のようなデータフィールドで各フィールドが占める領域及び各フィールドが示す情報の種類、つまりフィールドのカテゴリは各カーメーカが決定する仕様に依存し、また、車種又は年式によっても異なる場合がある。
監視ECU100では、各フィールドの領域及びカテゴリが未知のデータフィールドを、ペイロード分割部140がデータフィールド内の値の変化に関する特徴を用いて分割してフィールドを抽出する。次に、ペイロード分割部140によるデータフィールドを分割してフィールドを抽出する処理について例を用いて説明する。
<1.11 ペイロード分割部140による処理>
ペイロード分割部140がデータフィールドを分割してフィールドを抽出する処理で実行する一連のステップについて、図11に示されるフローチャートを用いて説明する。ペイロード分割部140は、この動作を図8のフローチャートにあるステップS8で行う。したがって、図8のフローチャートに示されるように、ペイロード分割部140は、監視ECU100が複数のデータフレームを既に受信しており、受信ログには複数種類のIDを含むレコードが記録されている状態からこの動作によるフィールド抽出処理を実行する。
(ステップS11)ペイロード分割部140は、動作判断部130からステップS8でのペイロード分割処理要求を受けると、受信ログ保持部190を参照し、受信ログからIDごとにレコードを抽出する。
(ステップS12)ペイロード分割部140は、受信ログに含まれる全てのIDに対して、フィールド抽出を完了している場合(NOの場合)、動作を終了し、フィールド抽出の結果を特徴抽出部150へ通知する。フィールド抽出を未実行のIDがある場合(YESの場合)は、フィールド抽出が未実行のIDのいずれかを含むレコードを選択する。つまり、ペイロード分割部140は、フィールド抽出が未実行のIDを共通に含むデータフレームのデータフィールドを分割してフィールドを抽出する。
(ステップS13)ペイロード分割部140は、データフィールドの分割パターン候補ごとの特徴量を算出する。
分割パターン候補とは、データフィールドをビット単位で分割して得られる領域のパターンであり、例えば領域の開始ビット位置(以下Indexともいう)とビットの単位で表されるデータ長(以下Lengthともいう)との組み合わせ(Index,Length)で表される。例えば64ビット長のデータフィールドに関しては、IndexとLengthはそれぞれ1〜64の値をとりうるが、Index+Length−1(領域の終端ビット位置)は64を超えない。そのため、値が1のIndexに対してはLengthが1〜64までの64通り、値が2のIndexに対してはLengthが1〜63の63通り、値が3のIndexに対してはLengthが1〜62の62通りあり、値が64のIndexに対しては、Lengthは1のみの1通りである。つまり64ビット長のデータフィールドの場合、分割パターン候補の個数は、Σx(x=1〜64)=65×64÷2=2080通りとなる。このような分割パターン候補は、本実施の形態におけるペイロード分割パターン候補の例である。
図12は分割パターン候補からの特徴量の抽出について説明するための例を示す図である。図12では、受信ログから抽出されたあるIDを共通に含む256個のレコードに含まれる、5バイト長のデータフィールドの値が上から受信順に並べられている。
本実施の形態においては、特徴量は各分割パターン候補の範囲にあるデータフィールドの値に変化に関するものであり、3種類ある。各特徴量について、分割パターン候補(13,8)を例により詳細に説明する。この分割パターン候補(13,8)は、図12では点線の枠で示される。
1つ目の特徴量は、各分割パターン候補が示す領域におけるデータフィールドの値のパターン数である。この特徴量は、分割パターン候補が示す領域内のデータフィールドの値の種類数、又はこの領域において重複を除いたデータフィールドの値の個数をカウントして求めることができる。この特徴量を以下では第1の特徴量という。
2つ目の特徴量は、時系列で見て直前のデータフレームからの値の変化の発生頻度である。この特徴量は、分割パターン候補が示す領域内のデータフィールドの値が変化した回数を(受信ログから抽出されたIDを共通に含むレコードの数−1)で割って求めることができる。データフィールドの値が変化した回数は、時系列順に並べたレコードの当該領域内の階差を求め、階差が0で無い個数をカウントして求めることができる。例えば図12に示されるように256個のレコードがあり、そのうち領域(13,8)で直前に受信されたデータフレームから値が変化した回数が51回である場合、この領域(13,8)での当該特徴量は51/(256−1)=0.2である。この特徴量を以下では第2の特徴量という。
3つ目の特徴量は、時系列で見て発生した直前のデータフレームからの値の変化量の分散である。この特徴量は、上述のように階差から求めた変化量から算出することができる。この特徴量を以下では第3の特徴量という。
(ステップS14)ペイロード分割部140は、分割パターン候補の中から、ステップS13で抽出した特徴量が所定の条件を満たすものを、固定値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の1.12で例を用いて説明する。
また、1つのビットが2つのフィールドに含まれることはないため、ペイロード分割部140は、ステップS14で選択された領域と少なくとも一部が重なる分割パターン候補は以降のステップでの条件判定の対象から除外する。残る分割パターン候補を、以下では第1のペイロード分割パターン候補という。
(ステップS15)ペイロード分割部140は、第1のペイロード分割パターン候補の中から、ステップS13で抽出した特徴量が所定の条件を満たすものを、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の1.13で例を用いて説明する。
また、ペイロード分割部140は、ステップS15で選択された領域と少なくとも一部が重なる分割パターン候補を、以降のステップでの条件判定の対象からさらに除外する。なお残る分割パターン候補を、以下では第2のペイロード分割パターン候補という。
(ステップS16)ペイロード分割部140は、第2のペイロード分割パターン候補の中から、ステップS13で抽出した特徴量が所定の条件を満たすものを、連続値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の1.14で例を用いて説明する。
また、ペイロード分割部140は、ステップS16で選択された領域と少なくとも一部が重なる分割パターン候補を、以降のステップでの条件判定の対象からさらに除外する。なお残る分割パターン候補を、以下では第3のペイロード分割パターン候補という。
(ステップS17)ペイロード分割部140は、第3のペイロード分割パターン候補の中から、ステップS13で抽出した特徴量が所定の条件を満たすものを、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の1.15で例を用いて説明する。
(ステップS18)ペイロード分割部140は、なお残る分割パターン候補を、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。この選択については、後述の1.16で例を用いて説明する。
ステップS18で1種類のIDのデータフレームのデータフィールドからのフィールドの抽出は完了し、ステップS12に戻る。他のIDのデータフレームで未処理のものがあれば、ペイロード分割部140によるステップS13以降の実行対象となる。
<1.12 固定値のフィールド>
図13は、ペイロード分割部140による、ステップS14での固定値のフィールドの抽出処理例のフローチャートである。また、図14はこの処理を説明するための例を示す図である。図14に示されるようなテーブルデータが、ステップS13の処理の結果として監視ECU100のメモリに保持されていると想定してもよい。
(ステップS141)まず、ペイロード分割部140は、上記の3種類の特徴量を算出した分割パターン候補から、第1の特徴量が1であるという条件を満たす分割パターン候補を抽出する。つまり、データフィールドの値が、受信ログから抽出されたレコードで全て共通する範囲を示す分割パターン候補が抽出される。
図14に例示されるテーブルは、各行が5バイトのデータフィールドの分割パターン候補が示す領域の開始ビット位置(Index)、各列がその領域のビット長(Length)を表している。セル内には、ステップS13で算出された各特徴量が、第1の特徴量、第2の特徴量、第3の特徴量、つまり値のパターン数、変化の発生頻度,変化量の分散の順に含まれている。なお、データフィールド内で生じない開始ビット位置とビット長との組み合わせを示すセルには斜線がかけられている。また、一部のセルについては特徴量の値又は組み合わせ有無の記載を省略して「…」としている。
この例の場合にステップS141において抽出される分割パターン候補は、領域(29,1)、(29,2)、(29,3)、(29,4)、(30,1)、(30,2)、(30,3)、(31,1)、(31,2)、(32,1)を示す分割パターン候補である。
(ステップS142)ペイロード分割部140は、抽出した分割パターン候補からさらに所定の条件に照らして絞り込む。具体的には、抽出した分割パターン候補に含まれる1の分割パターン候補が示す領域全体が他の分割パターン候補が示す領域に含まれる場合、この1の分割パターン候補を除外する。これにより、連続するビットからなる固定値の領域の一部のみを示す分割パターン候補が除かれる。
(ステップS143)ペイロード分割部140は、残る分割パターン候補を、固定値のカテゴリに属するフィールドの領域を示す分割パターンとして選択する。上記の例では、ステップS142の実行の結果、領域(29,4)を示す分割パターン候補が残るため、この分割パターン候補が固定値のカテゴリに属するフィールドの領域として選択される。
(ステップS144)ペイロード分割部140は、ステップS143で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。
ステップS143で領域(29,4)を示す分割パターン候補が選択されたこの例では、5バイト長のデータフィールドの29ビット目から32ビット目のうちのいずれかのビットを含む分割パターン候補がステップS144で削除される。より具体的には、開始ビット位置が1でありビット長が29〜40の分割パターン候補、開始ビット位置が2でありビット長が28〜39の分割パターン候補はいずれも削除される。また、開始ビット位置が29〜32である分割パターンも全て削除される。残る分割パターン候補が、上述の第1のペイロード分割パターン候補に該当する。
(ステップS145)ペイロード分割部140は、固定値のフィールドの領域を示す分割パターンを選択した結果を出力する。この例では、ペイロード分割部140は、開始ビット位置が29でビット長が4のフィールドが固定値のカテゴリに属するフィールドであることを監視ECU100のメモリに書き込む等してステップS14を終了する。
<1.13 カウンタのフィールド>
図15は、ペイロード分割部140による、ステップS15でのカウンタのフィールドの抽出処理例のフローチャートである。
(ステップS151)まず、ペイロード分割部140は、上記の第1のペイロード分割パターン候補から、第1の特徴量が2^(分割パターンのビット長)又はステップS11で受信ログから抽出したレコードの数と一致する分割パターン候補を抽出する。つまり、ステップS11で抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたもの、又は全レコードの値が異なるものを抽出する。
(ステップS152)ペイロード分割部140は受信ログ保持部190を参照し、抽出した分割パターン候補が示す領域の値を全て抽出する。そして抽出したフィールドの値が受信順で通してインクリメントしている分割パターン候補、又はオーバーフロー時に値が0に戻っている、つまり2進数表現で全桁の値が1の領域がその次のレコードで全桁の値が0であった領域の分割パターン候補を、ステップS151で抽出した分割パターン候補から抽出する。
(ステップS153)ペイロード分割部140は、ステップS152で抽出した分割パターンのうち、他の分割パターンの候補と重なっていないものを、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
(ステップS154)ペイロード分割部140は、ステップS152で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、カウンタのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、値がインクリメントしているビット列で最も長いものをひとつのカウンタのフィールドとして見つけるために行われるステップである。
(ステップS155)ペイロード分割部140は、ステップS153及びS154で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。ステップS155は、ステップS144と同様のステップであるため詳細な説明を省略する。ステップS155の結果なお残る分割パターン候補が、上述の第2のペイロード分割パターン候補に該当する。
(ステップS156)ペイロード分割部140は、カウンタのフィールドの領域を示す分割パターンを選択した結果を出力して、ステップS15を終了する。
なお、カウンタフィールド抽出方法の変形例として、インクリメントは1ずつ増加でも、2ずつ増加でもよい、常に増加されていればどのような値で増加してもよい。さらにデクリメントされるカウンタを抽出してもよい。同様にデクリメントは1ずつ減少でも、2ずつ減少してもよく、常に減少されていればどのような値で減少していてもよい。
また、ステップS151では、全てのレコードで値が変化している分割パターンを示す分割パターン候補が抽出されてもよく、第2の特徴量に基づいて、つまり第2の特徴量が1の分割パターン候補が抽出されてもよい。
<1.14 連続値のフィールド>
図16及び図17は、ペイロード分割部140による、ステップS16での連続値のフィールドの抽出処理例のフローチャートである。また、図18A及び図18Bは、この処理を説明するための例を示す図である。
ここで、第2のペイロード分割パターン候補、つまり連続値のフィールドの抽出処理を始める時点で残っている分割パターン候補は、連続値、チェックサム、又はステータスのいずれかのカテゴリに属する。これらの各種フィールドの中で、連続値のフィールドは、他のカテゴリに属する同一ビット長の分割パターン候補に比べて値の変化量の分散(第3の特徴量)が小さいと考えられる。以下、その理由について説明する。
チェックサム又はフラグは取り得る値が離散的であり、フィールドの上位ビットが下位ビットと独立して変化するため、値の変化量にはバラつきが生じやすい。したがって、フィールドの値の変化量の分散が大きくなる。一方、連続値は、値の変化が連続的であり、フィールドの下位ビットの変化した結果のキャリーが上位ビットの変化として現れるため、値の変化量は一定の範囲内に収まる。したがって、フィールドの値の変化量の分散が小さくなる。
また、ひとつの分割パターン候補が示す領域の中で上位部分が連続値であって下位部分が連続値以外である場合、下位部分内で各ビットの値が独立に変化しても、上位部分の値の変化量が支配的であるため、領域全体での変化量のバラつきは抑えられてフィールドの値の変化量の分散が小さくなる。
また、連続値フィールドの最上位ビット以外を開始ビット位置として示す分割パターン候補については、値の変化時にオーバーフロー又はアンダーフローが発生して大きな値からに小さな値に、又は小さな値から大きな値に急激に変化するため、値の変化量にバラつきが生じてその分散が大きくなる。
なお、カウンタのフィールドは第2のペイロード分割パターン候補に含まれないため、連続値のフィールドの最上位ビットから始まる領域を示す分割パターン候補ではオーバーフローもアンダーフローも生じない。
このような考えに基づき、第2のペイロード分割パターン候補つまり、連続値のフィールドの抽出処理を始める時点で残っている分割パターン候補の中で、領域の値の変化の分散が比較的小さい分割パターン候補を見つけることで連続値のフィールドの領域を示す分割パターン候補を絞り込む。
連続値のフィールドの抽出処理は、図16に示されるフィールドの開始ビット位置の特定の処理と、図17に示されるフィールドのビット長の特定の処理との2つの部分に大きく分けられる。
まず、フィールドの開始ビット位置の特定について、図16、図18A及び図18Bを用いて説明する。
(ステップS161)各分割パターン候補について、開始ビット位置に拘わらず同一のビット長を持つ他の分割パターン候補と比較しての、第3の特徴量、つまり変化量の分散の外れ具合を示す外れ値スコアを算出する。この工程については、図18A及び図18Bに示される具体的な例を用いて説明する。
図18Aのテーブルでは、各分割パターン候補の開始ビット位置が行に、ビット長が列に示され、セル内には各分割パターン候補についてステップS13で算出された変化量の分散(第3の特徴量)が記載されている。なお、このテーブルの第3の特徴量の値を含むセルは、図14に示されるテーブルからステップS14及びS15を経て他のカテゴリ(すなわち、固定値又はカウンタ)のフィールドの領域を示すと判断された分割パターン候補が削除されたものであり、見やすさのために第1の特徴量及び第2の特徴量の記載を省略している。ペイロード分割部140は、このようなデータに対してステップS161の処理を開始する。
図18Aのテーブルを参照すると、例えば開始ビット位置が11で、フィールド長が1である分割パターン候補は、変化量の分散が1である。同様に、開始ビット位置が11で、ビット長が2、8、13、14の分割パターン候補については、変化量の分散はそれぞれ1、10、100、100である。開始ビット位置が12であり、ビット長がそれぞれ1、2、8、13の分割パターン候補の変化量の分散は、それぞれ1、2、15、150である。また、開始ビット位置が12でビット長が14である分割パターン候補は、25ビット目が既に固定値あるいはカウンタのフィールドであると判断されているためステップS14又はS15で既に削除され、第2のペイロード分割パターン候補に含まれていない。他の×が付されたセルが示す分割パターン候補についても同様である。開始ビット位置が23であってビット長が1、2である分割パターン候補の変化量の分散はそれぞれ1、2であり、開始ビット位置が24であってビット長が1である分割パターン候補の変化量の分散は1である。
また、最後の行には、ステップS161の処理の中でペイロード分割部140が算出する同一のビット長の分割パターン候補ごとの変化量の分散の平均値が記載されている。つまり、ビット長1、2、8、13、14の分割パターン候補の変化量の分散の平均は、それぞれ1、1、80、125、100である。
次にペイロード分割部140は、図18Aのテーブルに示される各分割パターン候補の第3の特徴量が、同一ビット長の分割パターン候補の第3の特徴量の中でどれほど外れた値であるかを示す外れ値スコアを算出する。ペイロード分割部140は、統計学的又は機械学習的な手法を用いてこの外れ値スコアを算出することができる。例えば各分割パターン候補の第3の特徴量が正規分布に従うと仮定して、第3の特徴量の発生頻度に基づいて算出してもよいし、K近傍法又はLocal Outlier Factor等の外れ値検出アルゴリズムが用いられてもよい。
ここでは、各分割パターン候補の第3の特徴量の発生頻度pが各ビット長で正規分布に従うとしたときに、発生確率の低さをスコア化する例を示す。pは、同一ビット長における分散の平均mと、分散vとをそれぞれ平均、分散とする正規分布の確率密度関数とする。ここで、分割パターン候補の第3の特徴量をF2とすると、以下の式1によりpを算出できる。
p(F2)={1/(2πv)^(1/2)}exp{−(F2−m)^2/2v}・・・(式1)
ペイロード分割部140が求める平均は、分割パターン候補の中で同一ビット長の分割パターン候補の第3の特徴量の平均であり、分散は、さきに求めたこの平均を用いて求めることができる。スコアは−Log(p)で算出する。図18Bのテーブルの各セルは、このように算出されたスコアを含む。
図18Bを参照すると、開始ビット位置が11であり、ビット長が1、2、8、13の分割パターンの外れ値スコアは、それぞれ0、1、4、2である。ただし、ビット長14に関しては、他の分割パターン候補の中にビット長が14である分割パターンが存在しないため、外れ値スコアを算出していない。
また、外れ値スコアは平均との差が大きい程大きな値をとる。ビット長8の場合を例にとると、分散の平均は80であり、変化量の分散の平均が10である開始ビット位置11の分割パターン候補の外れ値スコアは4であり、変化量の分散の平均が15である開始ビット位置12の分割パターン候補の外れ値スコアである3よりも大きい。
なお、ペイロード分割部140は、算出した外れ値スコアがビット長によって異なる指標となる場合は、正規化するなどして同じ指標にそろえてもよい。
(ステップS162)ペイロード分割部140は、分割パターン候補の開始ビット位置ごとに、ステップS161で求めた外れ値スコアの平均(以下、平均スコアという)を算出する。図18Bの例では、開始ビット位置が11であり、ビット長が1から13(図内で表記を省略したスコアも含む)の分割パターン候補の平均スコアは4である。同様に、開始ビット位置が12であり、ビット長が1、2、8、13である分割パターンの外れ値スコアは0、1、3、2であり、ビット長が1から13の平均スコアは2である。開始ビット位置が23であり、ビット長が1、2である分割パターンの外れ値スコアは、それぞれ0、0であり、平均スコアは0である。開始ビット位置が24で、ビット長が1である分割パターンの外れ値スコアは0であり、平均スコアは0である。
なお、この例では、ビット長が1の分割パターン候補をステップS16におけるペイロード分割部140の処理の対象として説明しているが、連続値のフィールドの最小ビット長をあらかじめ定め、より短い分割パターン候補をあらかじめ処理対象から除外してもよい。処理速度及び分割の精度の観点から効果的である。
(ステップS163)ペイロード分割部140は、ステップS162で算出した平均スコアが所定の閾値以上であるという条件を満たす開始ビット位置が存在するかを確認する。条件を満たす開始ビット位置が存在しない場合(NOの場合)はステップS16を終了し、存在する場合はこのステップS164へ進む。
(ステップS164)ステップS163の条件を満たす開始ビット位置を、連続値のフィールドの開始ビット位置として特定する。ペイロード分割部140は、図17に示される以降のステップで連続値のフィールドのビット長を特定する。
(ステップS165)ペイロード分割部140は、ステップS163の条件を満たす開始ビット位置を示す分割パターン候補から、所定の値のビット長をさらに示す分割パターン候補を抽出する。ここでの所定の値とは、連続値のフィールドは、例えばセンサで測定された物理量などの情報を通知するために用いられるビット長を少なくとも持つという仮定に基づいて定められ、例えば4である。
(ステップS166)ペイロード分割部140は、ステップS165で抽出した分割パターン候補が表す(Index,Length)に対し、同一の開始ビット位置でさらに長い分割パターン候補が連続値の値を含むフィールドであるか否か判定する。ペイロード分割部140は、2つの条件を用いてこの判定を行う。
条件のひとつは、分割パターン候補(Index+Length,1)の第2の特徴量、つまり値の変化の発生頻度が、分割パターン(Index+Length−1,1)の第2の特徴量より大きいことである。つまり、ステップS165で抽出した分割パターン候補の最下位側にある隣のビットの値が、この分割パターン候補の最下位ビットの値よりも高頻度で変化していることを条件としている。この条件を以下では条件1という。
もうひとつの条件は、(Index,Length+1)の領域を示す分割パターン候補が未決定であることである。つまり、ステップS165で抽出した分割パターン候補と同一の開始ビット位置で1ビット長い領域を示す分割パターン候補についてカテゴリが未決定であることをもうひとつの条件としている。この条件を以下では条件2という。
条件1及び条件2が満たされている場合(YESの場合)、ペイロード分割部140はステップS167へ進み、それ以外の場合(NOの場合)、ペイロード分割部140はステップS168へ進む。
(ステップS167)ペイロード分割部140は、Lengthの値をインクリメントする。その後、再びステップS166を実行する。
ステップS166とS167によって、より長いビット数の領域でも連続値が表されているかが判定され、連続値を表す極力長いビット長が特定される。
ステップS166の条件が満たされなかった場合、ペイロード分割部140は、ステップS168に進む。
(ステップS168)ペイロード分割部140は、ステップS164までに決定した開始ビット位置を示し、ステップS166で特定されたビット長を示す分割パターン候補を連続値を表す分割パターンとして選択する。また、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。また、ペイロード分割部140は、連続値のフィールドの領域を示す分割パターンを選択した結果を出力して、ステップS163に戻る。所定の条件を満たす他の開始ビット位置の分割パターン候補がさらに有るかを確認するためである。ステップS163の結果なお残る分割パターン候補が、上述の第3のペイロード分割パターン候補に該当する。
図17に示す連続値のフィールドのビット長の特定の処理について、具体的な例を用いて説明する。この例では、ステップS164で開始ビット位置は11と特定され、ステップS165でのビット長を示す所定の値が4である場合を想定している。つまり、ステップS165で抽出される分割パターン候補が示す領域の(Index,Length)は、(11,4)である。また、ステップS13で算出された第2の特徴量の抜粋を図19に示す。図19に示されるテーブルもまた、図14に示されるテーブル内のデータの一部であると言える。
この例において、ステップS166では、領域(11,4)の最下位ビットとこの領域の最下位ビットの隣に位置するビットとの間で値の変化の発生頻度が比較される。つまり、15ビット目の1ビット(つまり領域(15,1))の第2の特徴量と16ビット目の1ビット(つまり領域(16,1))の第2の特徴量とが比較される。図19を参照すると、領域(15,1)の第2の特徴量は0.25であり、領域(16,1)の第2の特徴量は0.28である。したがって、条件1は満たされる。
ステップS166においてさらに、領域(11,4)よりもビット長が1ビット長い領域、つまり領域(11,5)について、カテゴリが決定されているか否か判定される。説明の都合上、この例では、この領域についてはカテゴリが未決定であった、つまり条件2も満たされると想定する(ステップS166でYES)。したがって、ステップS167において、Lengthの値が増分1でインクリメントされる。
以下、同様の判定が続き、Lengthは14までインクリメントされたとする。ここで、ステップS166において、領域(11,25)の最下位ビットである領域(24,1)と領域(25,1)との間で値の変化の発生頻度が比較される。図19を参照すると、領域(25,1)の第2の特徴量は0であり、領域(24,1)の第2の特徴量は0.40である。したがって、条件1が満たされないため、ステップS166の判定の結果はNOである。
このように、ペイロード分割部140は、第2の特徴量及び第3の特徴量に基づいて連続値のフィールドの領域を示す分割パターンの選択を行う。より具体的には、まず、各分割パターン候補の第3の特徴量、つまり変化量の分散が同一ビット長で平均から外れているか否かに基づいて分割パターン候補が抽出される。そして、抽出された分割パターン候補の各ビットを領域として示す分割パターン候補の第2の特徴量、つまり変化の発生頻度の大小関係に基づいて、分割パターン候補が連続値のカテゴリに該当するフィールドの領域を示すか否かが判定される。
なお連続値のフィールドの領域を示す分割パターン候補の選択の処理のステップは、上述のものに限定されない。
例えば、ステップS164で特定される開始ビット位置を示す、つまり外れ値スコアが所定の閾値よりも高い分割パターン候補が連続値のフィールドの領域を示す分割パターンとして選択されてもよい。ただし、図17に示されるビット長を特定する処理を行うことで、より高い精度でこの選択を行うことができる。
その理由のひとつは、ステップS16が実行される段階で残る分割パターン候補が少ないビット長については、偶然高い外れ値スコアであったりするなど信頼性が低い場合があるためである。または上述したように、上位部分が連続値で下位部分が連続値以外である場合にも外れ値スコアが高くなり、誤って一体として連続値のフィールドとして抽出される可能性がある。
また、ビット長の決定の手法として、ステップS166において、第2の特徴量の比較に代えて又は加えて、第3の特徴量、つまり変化量の分散を比較してもよい。下位ビットの変化量がある程度大きくなければキャリーは発生せず、上位ビットの変化が生じないためである。
また、さらに別のビット長の決定の手法として、ステップS166において、第2の特徴量の大小関係に代えて又は加えて、第2の特徴量の差分に関する条件がビット長を伸ばすか否かの判定に用いられてもよい。
<1.15 チェックサムのフィールド>
図20は、ペイロード分割部140による、ステップS17でのチェックサムのフィールド抽出処理例のフローチャートを示す。
チェックサムのフィールドは、値の変化がランダムに見え、各値の発生が一様になる可能性が高いことから、第3のペイロード分割パターン候補のうち、第1の特徴量がビット長に対してある程度大きいという条件を満たすと考えられる。加えて、チェックサムのビット長が4ビットや8ビットの長さであることが多いという事前知識も条件に利用して、これらの条件を満たす分割パターン候補をチェックサムのフィールドの領域を示す分割パターンとして選択する。以下、この処理の各ステップを説明する。
(ステップS171)ペイロード分割部140は、第3のペイロード分割パターン候補から、第1の特徴量が2^(分割パターンのビット長)又はステップS11で受信ログから抽出したレコードの数と一致する分割パターン候補を抽出する。つまり、ステップS11で抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたもの、又は全レコードの値が異なるものを抽出する。
(ステップS172)ペイロード分割部140は、ステップS171で抽出した分割パターン候補のうち、ビット長が4ビット又は8ビットである分割パターン候補を抽出する。
(ステップS173)ペイロード分割部140は、ステップS172で抽出した分割パターン候補のうち、他の分割パターンの候補と重なっていないものを、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
(ステップS174)ペイロード分割部140は、ステップS172で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、チェックサムのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、ステップS171及びS172で用いられた条件を満たすビット列で最も長いものをひとつのチェックサムのフィールドとして見つけるために行われるステップである。
(ステップS175)ペイロード分割部140は、ステップS173及びS174で選択した分割パターン候補と重なる、つまり、選択した分割パターン候補に含まれるビットを含む他の分割パターン候補を削除する。ステップS175は、ステップS144又はS155と同様のステップであるため詳細な説明を省略する。
(ステップS176)ペイロード分割部140は、チェックサムのフィールドの領域を示す分割パターンを選択した結果を出力して、ステップS17を終了する。
なお、上記の各ステップでの処理の内容は各種の変形が可能である。例えば上記のステップS171ではステップS151と共通の条件が用いられているが、より緩和した条件であってもよい。例えば第1の特徴量が2^(分割パターンのビット長)又はステップS11で受信ログから抽出したレコードの数の80%以上である、という条件が用いられてもよい。チェックサムのフィールドではカウンタのフィールドに比べて値の変化がパターン数で不規則であり、表れる値には重複が生じて種類数が少ない可能性が高いためである。
また、ステップS172における4ビット及び8ビットのビット長は例であり、このステップで用いられる条件に含まれるビット長の大きさ及びビット長の個数はこれらに限定されない。また、複数のビット長の分割パターン候補を抽出する場合は、より長いビット長の分割パターン候補が優先して抽出されてもよい。
<1.16 ステータスのフィールド>
図21に、ステータスのフィールド抽出処理のフローチャートを示す。
(ステップS181)ペイロード分割部140は、ステップS17の終了後になお残る分割パターン候補のうち、他の分割パターンの候補と重なっていないものを、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとして選択する。
(ステップS182)ペイロード分割部140は、ステップS181で抽出した分割パターンであって他の分割パターン候補と重なるもののうち、他の分割パターン候補の一部であるものを除いて、ステータスのカテゴリに属するフィールドの領域を示す分割パターンとしてさらに選択する。これは、ビット列で最も長いものをひとつのステータスのフィールドとして見つけるために行われるステップである。
(ステップS183)ペイロード分割部140は、ステータスのフィールドの領域を示す分割パターンを選択した結果を出力し、ステップS18を終了する。
以上で、ペイロード分割部140による、1.11で上述した図11に示されるステップS13からステップS18までを実行することによるデータフィールドの分割処理は終了する。
これらの一連のステップが、IDが共通の1種類のデータフレームに含まれるデータフィールドに対して実行されると、ペイロード分割部140はステップS12に戻って、未処理の他のIDのデータフレームに含まれるデータフィールドを対象にデータフィールドの分割処理を実行する。
また、各IDが示す種類のデータフレームに含まれるデータフィールドの分割が完了すると、ステップS143、S156、S168、S176、又はS183で出力された結果(以下、フィールド抽出結果ともいう)が、例えば図7のテーブルに含まれるデータのうち、IDと、データフィールドに関する情報の中の開始、長さ、カテゴリの各情報として監視ECU100のメモリに保持される。
監視ECU100では、特徴抽出部150がこのフィールド抽出結果の情報を用いてする正常モデルの生成の処理(ステップS9)に移行する。正常モデルは、各フィールドの値の変化の正常範囲を示し、例えばデータフレームの異常判定に用いられる。
以下、特徴抽出部150による正常モデルを生成する処理について説明する。
<1.17 特徴抽出部150による処理>
特徴抽出部150が正常モデルを生成する処理で実行する一連のステップについて、図22に示されるフローチャートを用いて説明する。
(ステップS21)特徴抽出部150は、ペイロード分割部140から出力されるフィールド分割結果が示すIDのうち、正常モデルを生成していないIDを選択する。
(ステップS22)特徴抽出部150は、受信ログ保持部190に格納されている受信ログに含まれる、ステップS121で選択したIDのレコードを参照する。
(ステップS23)特徴抽出部150は、フィールド分割結果及び受信ログのレコードからフィールドごとに振る舞い情報を取得する。なお振る舞い情報の取得の処理については別のフローチャートを用いて後述する。
(ステップS24)特徴抽出部150は、受信ログのレコードから、当該IDのデータフレームの受信間隔の平均と受信間隔の分散を算出する。
(ステップS25)特徴抽出部150は、フィールド分割結果と、ステップS23及びS24で得た情報を基に当該IDの正常モデルを生成して出力し、正常モデル保持部191に格納する。
(ステップS26)特徴抽出部150は、全てのIDに対して正常モデルを生成したかを確認する。全てのIDに対して正常モデルが生成済みであれば(YESの場合)、ステップS9を終了する。そうでない場合(NOの場合)はステップS21に戻る。
図23は、特徴抽出部150がステップS23で実行する振る舞い情報の取得の処理例のフローチャートである。
(ステップS231)特徴抽出部150は、フィールド分割結果が示すフィールドのカテゴリに、振る舞い情報の取得対象のカテゴリに属するフィールドで未処理のものが含まれるかを確認する。振る舞い情報の取得対象のカテゴリとは、固定値、連続値、及びステータスである。振る舞い情報の取得対象のカテゴリで未処理のフィールドが存在しない場合(NOの場合)、特徴抽出部150はステップS23を終了する。振る舞い情報の取得対象のカテゴリで未処理のフィールドが存在する場合(YESの場合)、特徴抽出部150はステップS232に進む。
(ステップS232)特徴抽出部150は、受信ログ保持部190に格納されている受信ログから、ステップS231で確認した振る舞い情報の取得対象のカテゴリで未処理のフィールドの値を抽出する。
(ステップS233)特徴抽出部150は、当該フィールドのカテゴリが固定値であるかを確認する。当該フィールドのカテゴリが固定値である場合(YESの場合)、特徴抽出部150はステップS234に進む。そうでない場合(NOの場合)、特徴抽出部150はステップS235に進む。
(ステップS234)特徴抽出部150は、抽出したフィールドの値を振る舞い情報として抽出して取得し、ステップS231に戻る。
(ステップS235)特徴抽出部150は、当該フィールドのカテゴリが連続値であるかを確認する。当該フィールドのカテゴリが連続値である場合(YESの場合)、特徴抽出部150はステップS236に進む。そうでない場合(NOの場合)、特徴抽出部150はステップS237に進む。
(ステップS236)特徴抽出部150は、抽出したフィールドの値の変化量の平均及び分散を振る舞い情報として抽出して取得し、ステップS231に戻る。この変化量の平均及び分散は、ステップS13でこのフィールドの領域を示す分割パターン候補について算出された第3の特徴量であるが、このステップで特徴抽出部150によってあらためて算出されてもよい。
(ステップS237)特徴抽出部150は、抽出したフィールドの値の変化の発生頻度を振る舞い情報として抽出して取得し、ステップS231に戻る。この変化量の平均及び分散は、ステップS13でこのフィールドの領域を示す分割パターン候補について算出された第3の特徴量であるが、このステップで特徴抽出部150によってあらためて算出されてもよい。
<1.18 特徴抽出部150の動作例>
図24は、特徴抽出部150の図23に示すフローチャートの処理を実行する動作の一部を説明するための例を示す図である。
図24を参照すると、特徴抽出部150は、ペイロード分割部140から出力されたフィールド分割結果に、振る舞い情報の取得対象のカテゴリに属するフィールドで未処理のものが含まれるかを確認する(ステップS231)。この例では、確認の結果、連続値のカテゴリが含まれていると判定されている。
次に特徴抽出部150は、受信ログ保持部190に格納されている受信ログから、ステップS231で存在を確認したカテゴリのフィールドの値を取得する(ステップS232)。この例では、開始ビット位置が11で、ビット長が14のフィールドの値を取得している。この例での当該フィールドのカテゴリは連続値なので(ステップS233、S235)、特徴抽出部150はフィールドの値の変化量の平均及び分散を取得することで振る舞い情報を抽出する(ステップS236)。カテゴリが固定値であればステップS232で取得したフィールドの値そのもの、ステータスであれば、フィールドの値の変化の発生頻度が取得される。
また特徴抽出部150は、同一IDのデータフレームの受信間隔に関する統計情報(受信間隔平均、分散)をあわせて算出して取得する。このように取得した情報とフィールド分割結果を用いて、特徴抽出部150は、図7に例示したような正常モデルを生成して(ステップS25)出力し、正常モデル保持部191に格納する。
<1.19 異常検知部160の処理フローチャート>
異常検知部160が正常モデルを用いてする異常検知処理(図8のステップS4)で実行する一連のステップについて、図25に示されるフローチャートを用いて説明する。
(ステップS31)異常検知部160は、バス300から受信したデータフレームのIDに関して、正常モデル保持部191に格納されている対応する正常モデルを参照する。
(ステップS32)異常検知部160は、受信したデータフレームのIDに関して、受信ログ保持部190に格納されている対応する受信ログを参照する。
(ステップS33)異常検知部160は、正常モデルに含まれる各フィールドの振る舞いモデルを用いて、参照する受信ログ中のレコードに含まれるデータフィールドを検証する。振る舞いモデルに基づく検証の処理については、別のフローチャートを用いて後述する。
(ステップS34)検証の結果異常が検知された場合(YESの場合)異常検知部160は、ステップS35に進み、そうでない場合(NOの場合)は異常検知処理を終了する。
(ステップS35)異常検知部160は、他のECUに異常を通報するためのデータフレームの生成をフレーム生成部170に要求して、異常検知処理を終了する。
図26は、異常検知部160がステップ33で実行する振る舞いモデルに基づく検証の処理例のフローチャートである。
(ステップS3301)異常検知部160は、受信したデータフレームに関して、データフィールドに未検証のフィールドが存在するかを判断する。未検証のフィールドが存在しない、つまりすべてのフィールドの検証が完了している場合(NOの場合)はステップS33を終了する。未検証のフィールドが存在する場合(YESの場合)はS3302に進む。
(ステップS3302)異常検知部160は、受信ログ保持部190に格納されている受信ログから次にチェックするフィールドの値を抽出し、当該フィールドに関しては検証済みとする。
(ステップS3303)異常検知部160は、抽出したフィールドのカテゴリが固定値か否かを判断する。固定値の場合(YESの場合)、異常検知部160はステップS3304に進む。固定値でない場合(NOの場合)、異常検知部160はS3305に進む。
(ステップS3304)異常検知部160は、抽出したフィールドの値が正常モデル保持部191に格納されている正常モデルの振る舞い情報の値と等しいかを確認する。正常モデルの振る舞い情報の値と等しい場合(YESの場合)、異常検知部160は、ステップS3301に戻る。そうでない場合(NOの場合)、異常検知部160はステップS3311に進む。
(ステップS3305)異常検知部160は、抽出したフィールドのカテゴリがカウンタであるか否かを判断する。カウンタである場合(YESの場合)、異常検知部160はステップS3306に進む。カウンタでない場合(NOの場合)、異常検知部160はステップS3307に進む。
(ステップS3306)異常検知部160は、抽出したフィールドの値が、時系列順にインクリメントされているか否かを判断する。時系列順にインクリメントされている場合(YESの場合)、異常検知部160はステップS3301に戻る。そうでない場合(NOの場合)、異常検知部160はステップS3311に進む。
(ステップS3307)異常検知部160は、抽出したフィールドのカテゴリが連続値であるか否かを判断する。連続値である場合(YESの場合)、異常検知部160はステップS3308に進む。そうでない場合(NOの場合)、異常検知部160はステップS3309を実行する。
(ステップS3308)異常検知部160は、抽出したフィールドの値の変化量が、正常モデル保持部191に格納されている正常モデルの振る舞い情報に記載の平均に近い値かを判断する。正常モデルの振る舞い情報に記載の平均に近い値である場合(YESの場合)、異常検知部160は、ステップS3301に戻る。そうでない場合(NOの場合)、異常検知部160はステップS3311に進む。
(ステップS3309)異常検知部160は、抽出したフィールドのカテゴリがステータスであるか否かを判断する。ステータスである場合(YESの場合)はステップS3310に進む。そうでない場合(NOの場合)、異常検知部160はステップS3301に進む。
(ステップS3310)異常検知部160は、抽出したフィールドの値の変化の発生頻度が正常モデル保持部191に格納されている正常モデルの振る舞い情報に示される変化の発生頻度と近いかを判断する。正常モデルの振る舞い情報記載の変化の発生頻度と近い場合(YESの場合)、異常検知部160はステップS3301に戻る。そうでない場合(NOの場合)、異常検知部160はステップS3311に進む。
(ステップS3311)異常検知部160は、異常を検知したとして、不正なフィールドのカテゴリを次のステップへ通知して、振る舞いモデルに基づく検証の処理を終了する(ステップS34を実行する)。
なお、正常モデルに含まれるデータフレームの受信間隔の平均及び分散に基づく検証は図25又は図26のフローチャートには含まれていないが、異常検知部160によって別途行われる。異常検知部160は、例えば、図25に示される異常検知処理のステップS33の前に、該当のIDを持つデータフレーム間の受信間隔の異常の有無又は可能性の高さについての判定を実行し、異常のあるもの又は異常の可能性が高いデータフレームのデータフィールドをステップS33での検証の対象としてもよい。
以下、車載ネットワーク10に異常なデータフレームを送出する不正ECUが接続されている場合に、上述の構成要素を含む監視ECU100が異常を検知する動作について、具体例を用いて説明する。
<1.20 異常検知部160の動作例1>
図27に、異常検知部160の動作の一例を示す。この例及び以下の例では、監視ECU100は、図7に示される正常モデルを正常モデル保持部191に保持していると想定する。
図27を参照すると、ECU200aは、車速を示すフィールドを含むIDが0x100のデータフレームをバス300に定期的に送信している。しかし、不正なECUが、IDが0x100のデータフレームをバス300に送信する。
監視ECU100は、データフレームを受信するたびに、正常モデル保持部191に格納されている正常モデルと、受信ログ保持部190に格納されている受信ログとを参照することで、データフィールドの値が正常モデルから逸脱しているか判断する(ステップS33)。なお、図27から図29では、5バイトのデータフィールドの値を16進数で示している。
受信した最初の3つのデータフレームには、データフィールドの値が正常モデルに適合するため、異常なしと判定される。しかし4番目に受信したデータフレームについては、正常モデルに示される開始ビット位置が29で、データ長が4のフィールドは固定値であり、値が0であることに適合しないことに基づいて、固定値のフィールドの異常として検知する(ステップS3303でYES、S3304で下線付「1」に対してNO、S3311)。
また、5番目に受信したデータフレームに関しては、直前に受信した不正ECUから送信されたデータフレームの影響で、開始ビット位置1で、ビット長が8であるカウンタフィールドの値がインクリメントされていないという判定により異常を検知する(ステップS3305でYES、S3306で下線付「3」に対してNO、S3311)。異常を検知したことを通知するために、異常が検知されたデータフレームのID及び異常が検知されたフィールドのカテゴリに基づく情報を(固定値のフィールドでの異常及びカウンタのフィールドでの異常)フレーム生成部170を通知して、他のECUに異常の発生を通報するためのメッセージの生成を要求する(ステップS35)。
なお、監視ECU100では、データフレームに異常を検知した場合に、このデータフレームのレコードが受信ログから削除されてもよい。
<1.21 異常検知部160の動作例2>
図28に、異常検知部160の動作の他の例を示す。この例では、不正ECUが送信するデータフレーム以外は図27が示す状況と同様の状況であると想定する。
この例では、不正ECUは、正常なデータフレームがECU200aから送信された直後に、異常を含むデータフレームを送信する。監視ECU100は、所定時間幅内で順次受信した複数個のデータフレームにおいて、開始ビット位置が26でビット長が3のステータスフィールドの変化の発生頻度が、正常モデルが示す0.0001からかけ離れていることに基づいて異常を検知する(ステップS3309でYES、S3310で下線付の値の変化の発生に対してNO、S3311)。
なお、図27の例と同様のカウンタのフィールドでの異常も検知されるが、この例では説明を省略する。
<1.22 異常検知部160の動作例3>
図29に、異常検知部160の動作例を示す。この例では、ECU200aが送信するデータフレーム及び不正ECUが送信するデータフレーム以外は、図27及び図28が示す状況と同様の状況であると想定する。
不正ECUは、ECU200aからIDが0x100のデータフレームが3個送信された後に、IDが0x100の異常を含むデータフレームを送信している。このデータフレームを受信した監視ECU100は、開始ビット位置が11でビット長が14の連続値のフィールドの振る舞い情報として、変化量の平均が10、の分散が100であることに照らして、受信ログから抽出した当該フィールドの直前に受信されたデータフレームからの変化量が481(0x157C−0x139B=0x1E1)と大きく異なることに基づいて異常を検知する(ステップS3307でYES、S3308で下線付の値の変化量に対してNO、S3311)。
なお、図27の例と同様のカウンタのフィールドでの異常も検知されるが、この例では説明を省略する。
<1.23 効果>
本実施の形態では、監視ECU100は、車載ネットワークを流れるデータフレームを監視し、統計的に得られる特徴量に基づいてデータフレームに含まれるデータフィールドを意味のあるビット列のまとまりであるフィールドに分割する。また監視ECU100は、分割によって得た各フィールドでの異常の検知に用いられる正常モデルを生成する。さらに監視ECU100は、正常モデルを用いての異常の検知を実行して車載ネットワーク内の不正を検知することができる。
このような監視ECU100は、仕様の異なる車載ネットワークシステムであっても事前の個別の設計を必要としないため、コストを抑えた車載ネットワークの保護を可能にするとなる。
<2. 変形例>
なお、本開示を上記実施の形態に基づいて説明してきたが、本開示は上記実施の形態に限定されず、以下のような構成も本開示の技術的範囲に含まれる。
(1)上記実施の形態では、フィールド分割部と、特徴抽出部と、不正検知部とは監視ECUの構成要素として説明したが、同一の装置に全ての構成要素を保持する必要は無い。例えば、フィールド分割部と特徴抽出部は、車外のクラウドサーバの構成要素としてもよく、クラウドサーバは、車載ネットワークシステムが接続可能な携帯電話網等の無線通信網を通じて受信する車載ネットワークシステムに流れるデータフレームをフィールドに分割し、正常モデルを生成する。そして監視ECUは、クラウドサーバからダウンロードするこの正常モデルを用いて不正検知処理を実行してもよい。この場合に監視ECUは動作判断部を持たなくてもよく、常に異常検知処理を行えばよい。これにより監視ECUは異常検知部のみを持てばよく、実装が容易になる。
また、監視ECUにおいてデータフィールドの分割、正常モデルの生成、及び異常検知の処理が行われているが、本開示は例えばこれらのうちデータフィールドの分割のみ、又は正常モデルの生成までを実行する情報処理装置、情報処理方法、又はプログラム等としても実現可能である。このような情報処理装置等は、例えばネットワークの監視装置の開発のために適用可能である。
(2)上記実施の形態では、車載ネットワークのデータフレームを一定期間収集した受信ログから、正常モデルを生成したが、正常モデルを生成するために、必ずしも車載ネットワークからデータフレームを一定期間にわたって収集する必要はない。例えば、過去に収集したログを入力として正常モデルを生成してもよい。また複数のログに対して、それぞれ正常モデルを生成し、多数決や、平均をとることによって、複数の正常モデルをマージした結果を最終的な正常モデルとしてもよい。これにより、ネットワークの監視の開始前に、必ずしも一定期間のデータフレームの収集を必要とせず、不正検知処理を多くの自動車で早期に実現したい場合に効果的である。
(3)上記実施の形態では、異常を検知した場合のアクションとして、異常の通報のために、異常が検知されたデータフレームのIDと、異常が検知されたフィールドの種類を含むメッセージ、つまりデータフレーム送信する例を示したが、異常検知後のアクションはこれに限らない。例えば、異常を検知した時点で、監視ECUがエラーフレームを送信することで、異常が検知されたフィールドを含むデータフレームを無効としてもよい。このとき監視ECUでは、データフレームの受信中に図25に示される異常検知処理が行われる。また車載ネットワーク上のゲートウェイECUに監視ECUの機能を追加することで、異常が検知されたデータフレームを転送しない対応をとってもよい。または、異常が検知されたデータフレームと同種、つまり共通のIDのデータフレームの転送を停止してもよい。これはゲートウェイECUを監視ECUとして用いて本開示を実現したい場合に効果的であり、さらに、多数の車載ネットワークの情報を監視できることから、実現できる機能の幅も広がり効果的である。
また、異常が発生したことをユーザに通知してもよいし、車両をフェールセーフモードに移行させてもよいし、発生した異常をログに残してもよいし、発生した異常について、携帯電話網などを通じてクラウドサーバに送信してもよい。これにより、異常検知後の柔軟な対応が可能となる。例えばクラウドサーバから、異常が検知された車載ネットワークシステムと同型又は同バージョンの車載ネットワーク、又は共通するECUを含む車載ネットワークにこの異常に関する情報が提供されてもよい。
(4)上記実施の形態では、標準フォーマットのIDにおける例を示したが、拡張フォーマットのIDであってもよい。
(5)上記実施の形態では、動作モードは、1時間の収集モード後に正常モデルの生成を行ったが、1時間より短くてもよいし、長くてもよい。また、時間に拠らず、特徴量を抽出するために十分なログのサイズを規定して、このサイズのログの収集がなされた時点で正常モデルを生成してもよい。また外部インターフェースを備え、ユーザの指示によりモードを切り替えてもよい。例えば、クラウドサーバからの指示によって、モードが切り替わってもよい。これにより、データの収集をより柔軟に行え、監視ECUのリソースに応じて動作することが可能になる。
(6)上記実施の形態では、データフレームの受信ログと、正常モデルと、車両状態とは1つのIDに対するものであったが、それぞれ1つ以上のIDに対して保持してもよい。
また、通信の仕様でデータフレームに複数の種類がない場合、又は種類は複数あってもペイロードのデータ構造が共通であることが既知である場合には、受信ログにIDを含めなくてもよい。
(7)上記実施の形態では、データフレームは平文で流れる例を示したが、暗号化されていてもよい。またデータフレームにメッセージ認証コードを含んでいてもよい。
(8)上記実施の形態では、正常モデルと受信ログとが平文で保持されている例を示したが、暗号化して保持されていてもよい。
(9)上記実施の形態では、データフィールド内はビッグエンディアンでデータが格納されている例を示したが、データはリトルエンディアンで格納されていてもよい。
(10)上記実施の形態では、正常モデルとして、IDごとにデータフレームの受信間隔の平均と、分散を保持している例を示したが、異常検知処理において、実際に受信したデータフレームの受信間隔が、正常モデルに記載の受信間隔の平均から、受信間隔の分散よりも離れている場合にメッセージの異常を検知してもよい。これは、フィールドの値の異常だけでなく、メッセージの時間情報を用いた異常も検知でき、多面的に異常を検知することで、より検知精度を高めることに効果的である。
また受信ログにはデータフレームの受信時刻が記録されているが、データフレーム間の受信間隔を用いず順序のみを用いて特徴量の抽出が可能であれば、受信時刻は受信ログに含めなくてもよい。受信の順序は、受信ログでのレコードの並び順又は連続番号を用いて示されてもよい。
また受信間隔平均と、分散の情報を異常検知に用いない場合については、正常モデルにこれらが保持されなくてもよい。
(11)上記実施の形態では、分割したフィールドを、固定値、カウンタ、連続値、ステータス、チェックサムの5つのカテゴリに分類したが、必ずしもこの5つのカテゴリに分類する必要はない。例えば不正検知に不要なカテゴリのフィールドは正常モデルに含めなくてもよい。
また、チェックサムのフィールドをメッセージ認証子のフィールドとしてもよい。
また、これらの5つのカテゴリのすべてを互いに区別しなくてもよい。例えば所定の時間幅内で値の所定の大きさ以下の変化が所定の回数以上見られる領域のフィールドが、1つのカテゴリのフィールドとして扱われてもよい。このようなフィールドは、カウンタ又は連続値が含まれ得るものであり、本変形例における第1カテゴリの例である。別の例として、各種の特徴量から離散値を取る領域のフィールドが1つのカテゴリとして扱われてもよい。このようなフィールドは、チェックサム、又はフラグ若しくは状態を示すステータスの値が含まれ得るものであり、本変形例における第2カテゴリの例である。
(12)上記実施の形態では、正常モデルの振る舞い情報として、ホワイトリストと、フィールドの値が変化する頻度(変化の発生頻度)と、フィールドの値の変化時の変化量の平均と分散とを保持していたが、これに限るものではない。例えば各特徴量の正常な値の範囲を示す、上限あるいは下限を保持していてもよい。また、フィールドの値の変化時の変化量の最大値と最小値を保持してもよい。また、フィールドの値が変化するときの値の遷移のホワイトリストを保持していてもよい。また、時系列モデルに当てはめたときのパラメータを保持していてもよい。また、受信ログのレコードから、所定時間(例えば1秒間)あたりの値の変化の発生頻度の最大値が算出されて保持されてもよい。これにより、異常正検知処理の方法が増え、より多くの手法で異常を捉えることが可能となる。
(13)上記実施の形態では、正常モデルの振る舞い情報として、連続値のフィールドに対しては、値の変化時の変化量の平均と分散を保持し、ステータスのフィールドに対しては、フィールドの値が変化する割合を保持していたが、この組み合わせでなくてもよう。
(14)上記実施の形態では、正常モデルとして、フィールドごとにカテゴリと、振る舞い情報とが保持されていたが、複数のフィールドに対する振る舞い情報を保持してもよい。例えば、データフィールドを分割して得たフィールドに主成分分析や、オートエンコーダなどの次元削減処理を施したデータを正常モデルとして保持していてもよい。これによりフィールド間の関係性を捉えた正常モデルが生成され、単なるフィールドごとの異常検知より有効な場合がある。
(15)上記実施の形態では、ペイロード分割部におけるチェックサムの抽出条件の1つとして、残った分割パターン候補のうち、フィールドの長さが4ビットまたは8ビットであることが条件として含まれていたが、この値以外でもよい。特にチェックサムフィールドの長さが事前にわかっている場合は、その値に設定すればよい。事前にわからない場合は、よく利用される長さに設定することで、精度よくフィールドを分割できるようになる。
(16)上記実施の形態では、ペイロード分割部におけるチェックサムの抽出条件の1つとして、抽出したレコード中に、各分割パターン候補のビット長で表すことのできる全ての値が表れたものであることが含まれているが、この条件でなくてもよい。例えば、フィールドがランダムに見えることをチェックしてもよい。この処理はメッセージ認証コードが含まれている場合に、データフィールドを精度よく分割できるようになり効果的である。またチェックサムの計算方法が事前にわかっている場合には、分割パターン候補の値が、チェックサムの計算式から算出される値となっているかを確認することによって、チェックサムのフィールドを抽出してもよい。
(17)上記の実施の形態では、データフィールドの分割時に、各分割パターンに対して、観測された値の種類数(第1の特徴量)と、観測データ数に対してフィールドの値に変化が発生した頻度(第2の特徴量)と値の変化時の変化量の分散(第3の特徴量)との3種類を算出していたが、この3種類の特徴量を全て算出する必要はない。例えば、固定値のフィールドのみを抽出したいのであれば、第1の特徴量のみを算出すればよく、抽出したいフィールドによって、必要な特徴量を選択して算出すればよい。また上記の特徴量から算出され得る別の特徴量を用いてもよい。例えば、第1の特徴量と、フィールド長から算出される、取りうる値の範囲に対してどれだけ値の種類数が観測されたかという特徴量を用いてもよい。これによりデータフィールドの分割処理を簡素化でき、処理時間やプログラムサイズの観点から効果的となる。
(18)上記の実施の形態では、データフィールドの分割時に、各分割パターンに対して、データフィールドの値を変換することなく特徴量を算出していたが、データフィールドの値を変換する前処理を行ってもよい。例えば、分割パターンが符号付のフィールドであることを想定して、2の補数変換処理を行った上で特徴を算出してもよい。これは、連続値のフィールドが符号付で表現されていた場合に、精度よくデータフィールドを分割するために効果的である。
(19)上記の実施の形態では、ペイロード分割部は、分割したデータフィールドの情報を特徴抽出部に通知することで、特徴抽出部が正常モデルを抽出していたが、ペイロード分割部の出力自体を、外部に通知又は内部に保存してもよい。
(20)上記の実施の形態では、ペイロード分割部は、受信ログに含まれる全てのIDに関して、データフィールドの分割処理を行っていたが、全てのIDに関してデータフィールドの分割処理を行わなくてもよい。例えば、あらかじめ指定されたIDのみに対してデータフィールドの分割処理を行い、その結果を出力してもよい。
(21)上記の実施の形態では、ペイロード分割部は、データフィールドに対して、全ての分割パターン候補に対して特徴量を抽出することでフィールドを分割していたが、あらかじめ決められた範囲のみに対して、データフィールドの分割処理を行ってもよい。これは、大きなデータフィールドの領域から特徴抽出を高速に行いたい場合に、監視対象を絞ることで、処理の高速化を図ることができる。例えばデータフィールドの上位20ビットに対してのみデータフィールドの分割処理を行ってもよいし、任意の範囲に対して行ってもよい。処理時間の観点から効果的である。
(22)上記の実施の形態では、値の変化時の変化量の分散を、フィールドの変化の時系列的変化を捉える特徴量として用いたが、これ以外の特徴であっても構わない。例えばフィールドの値の変化量の分布を用いてもよいし、フィールドの値の移動平均を用いた特徴量としてもよい。
(23)上記の実施の形態では、車載ネットワークとしてCANプロトコルを用いていたが、これに限るものではない。例えば、CAN−FD(CAN with Flexible Data Rate)、FlexRay、Ethernet、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などを用いてもよい。あるいはこれらのネットワークをサブネットワークとして、組み合わせたネットワークであってもよい。
(24)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。このRAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。このマイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(25)上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。このRAMには、コンピュータプログラムが記録されている。このマイクロプロセッサが、このコンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(26)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカードまたはモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカードまたはモジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(27)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(28)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。