【文献】
Diane Kelly,インタラクティブ情報検索システムの評価 Methods for Evaluating Interactive Information Retrieval Systems with Users,丸善出版株式会社,2013年 4月20日,P.168-169
(58)【調査した分野】(Int.Cl.,DB名)
前記不正検知ルール情報は、前記第1条件として、1つ以上の前記第1種フレームにおけるデータフィールドの内容に基づいて特定される値と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を規定し、
前記不正判定ステップでは、1つ又は複数の単位時間それぞれにおいて前記受信ステップで受信された、各前記第1種フレームにおけるデータフィールドの内容に基づく第1値と、前記1つ又は複数の単位時間のうち最後から1つ以上の単位時間それぞれにおいて前記受信ステップで受信された、各前記第2種フレームにおけるデータフィールドの内容に基づく第2値とを用いて、前記第1条件が満たされるか否かを区別する所定演算処理を実行することにより、前記判定を行う
請求項4記載の不正検知方法。
前記不正検知ルール情報は、前記第1条件として、複数の前記第1種フレームにおけるデータフィールドの内容に基づいて特定される値と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を規定し、
前記不正判定ステップでは、複数の単位時間それぞれにおいて前記受信ステップで受信された、各前記第1種フレームにおけるデータフィールドの内容に基づく第1値と、前記複数の単位時間のうち最後から1つ以上の単位時間それぞれにおいて前記受信ステップで受信された、各前記第2種フレームにおけるデータフィールドの内容に基づく第2値とを用いて、前記第1条件が満たされるか否かを区別する所定演算処理を実行することにより、前記判定を行う
請求項4記載の不正検知方法。
前記所定演算処理は、質的変数の値毎に量的変数の値の範囲を規定した基準に基づいて、前記第2値を質的変数の値として用いて算定される量的変数の値の範囲に前記第1値が該当するか否かにより、前記第1条件が満たされるか否かを区別する処理である
請求項5又は6記載の不正検知方法。
前記所定演算処理は、目的変数と説明変数との関係を示す関係式に基づいて、前記第1値を説明変数の値として用いて算定される目的変数の値の範囲に前記第2値が該当するか否かにより、前記第1条件が満たされるか否かを区別する処理である
請求項5又は6記載の不正検知方法。
前記不正検知ルール情報は、前記第1条件として、1つ以上の前記第1種フレームにおけるデータフィールドの内容と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を、ピアソンの積率相関係数、最大情報係数、又は、正準相関係数を用いた関係式で規定する
請求項4記載の不正検知方法。
前記不正検知ルール情報は更に、前記第1種フレームと、前記第1識別子とも前記第2識別子とも異なる第3識別子を有するデータフレームである第3種フレームとの、データフィールドの内容の関係についての条件である第2条件を示し、
前記不正判定ステップでは、更に、前記受信ステップで受信された前記第1種フレーム及び前記第3種フレームが、前記不正検知ルール情報が示す前記第2条件を満たすか否かを判定し、
前記不正検知方法は更に、
前記第1条件及び前記第2条件のうち前記不正判定ステップで満たされないと判定された条件の数に応じて前記第1種フレームの送信に関する異常度を算定する異常度算定ステップと、
前記異常度算定ステップにより算定された異常度が所定異常条件を満たす場合に、前記第1種フレームを送信する電子制御ユニットが受信可能となるように前記監視電子制御ユニットが所定フレームを送信する送信ステップとを含む
請求項4〜9のいずれか一項に記載の不正検知方法。
前記不正検知方法では、前記バスから受信されたフレームの集合に基づく多変量解析により、相互に異なる識別子を有するフレーム同士の間でのフレームの内容の関係を特定し、特定した関係を表す条件を示すように前記不正検知ルール情報を生成又は更新する
請求項1〜14のいずれか一項に記載の不正検知方法。
【発明を実施するための形態】
【0015】
本発明の一態様に係る不正検知方法は、バスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて不正状態が発生したことを検知するための不正検知方法であって、第1識別子を有するフレームと、第1識別子とは異なる識別子を有するフレームとの内容の関係についての条件である第1条件を示す不正検知ルール情報を用いて、前記バスから受信されたフレームの集合が当該第1条件を満たすか否かを判定し、当該第1条件が満たされない場合に不正状態が発生したと検知する不正検知方法である。これにより、例えば正常状態において満たされるように第1条件を規定しておけば、ファームウェアの不正な書き換え或いはマルウェアの実行により電子制御ユニット(ECU)が不正状態になった場合に、そのECUが送信するフレームと例えば他のECUが送信するフレームとの関係が乱れることで、第1条件が満たされなくなり得るので、バスの監視によって、不正状態が発生したことが検知され得る。
【0016】
また、前記複数の電子制御ユニットは、前記バスを介してCAN(Controller Area Network)プロトコルに従ってデータフレームの授受を行い、前記不正検知ルール情報は、前記第1識別子を有するデータフレームである第1種フレームと、前記第1識別子とは異なる第2識別子を有するデータフレームである第2種フレームとの、データフィールドの内容の関係についての前記第1条件を示し、前記不正検知方法は、前記バスに接続された監視電子制御ユニットが、前記バス上に送信されたデータフレームを逐次受信する受信ステップと、前記受信ステップで受信された前記第1種フレーム及び前記第2種フレームが、前記不正検知ルール情報が示す前記第1条件を満たすか否かを判定する不正判定ステップとを含むこととしても良い。これにより、ECU間でフレームの授受を行うためのCANに従う車載ネットワークにおいて不正状態が発生した場合に適切に検知を行うことが可能となる。
【0017】
また、前記不正検知ルール情報は、前記第1条件として、1つ以上の前記第1種フレームにおけるデータフィールドの内容に基づいて特定される値と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を規定し、前記不正判定ステップでは、1つ又は複数の単位時間それぞれにおいて前記受信ステップで受信された、各前記第1種フレームにおけるデータフィールドの内容に基づく第1値と、前記1つ又は複数の単位時間のうち最後から1つ以上の単位時間それぞれにおいて前記受信ステップで受信された、各前記第2種フレームにおけるデータフィールドの内容に基づく第2値とを用いて、前記第1条件が満たされるか否かを区別する所定演算処理を実行することにより、前記判定を行うこととしても良い。これにより、互いに異なるID(識別子)を有する2種類のデータフレームの系列間の同時期の内容間の関係が正常状態と区別される状態になった場合に、不正状態の発生が検知され得る。
【0018】
また、前記不正検知ルール情報は、前記第1条件として、複数の前記第1種フレームにおけるデータフィールドの内容に基づいて特定される値と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を規定し、前記不正判定ステップでは、複数の単位時間それぞれにおいて前記受信ステップで受信された、各前記第1種フレームにおけるデータフィールドの内容に基づく第1値と、前記複数の単位時間のうち最後から1つ以上の単位時間それぞれにおいて前記受信ステップで受信された、各前記第2種フレームにおけるデータフィールドの内容に基づく第2値とを用いて、前記第1条件が満たされるか否かを区別する所定演算処理を実行することにより、前記判定を行うこととしても良い。これにより、これにより、互いに異なるID(識別子)を有する2種類(2系列)のデータフレームのうち一方の系列における複数のデータフレームの内容の差分(変化量)、合計(積算量)等といった演算で算定された第1値と、他方の系列における1つ又は複数のデータフレームの内容に基づく第2値との関係が正常状態と区別される状態になった場合に、不正状態の発生が検知され得る。
【0019】
また、前記所定演算処理は、質的変数の値毎に量的変数の値の範囲を規定した基準に基づいて、前記第2値を質的変数の値として用いて算定される量的変数の値の範囲に前記第1値が該当するか否かにより、前記第1条件が満たされるか否かを区別する処理であることとしても良い。これにより、互いに異なるIDを有する2種類のデータフレームの内容のうち、一方の内容が例えば車両の状態(ギアの状態等)を区分するような場合において、他方の内容がその車両の状態で定まる一定範囲に収まっているか否かにより、不正状態の発生が検知され得る。
【0020】
また、前記所定演算処理は、目的変数と説明変数との関係を示す関係式に基づいて、前記第1値を説明変数の値として用いて算定される目的変数の値の範囲に前記第2値が該当するか否かにより、前記第1条件が満たされるか否かを区別する処理であることとしても良い。これにより、互いに異なるIDを有する2種類のデータフレームの内容のうち、一方の内容と他方の内容とが正常状態において例えば一定の因果関係を有するような場合にその関係を条件として定めておくことで、不正状態の発生の検知が可能となり得る。
【0021】
また、前記不正検知ルール情報は、前記第1条件として、1つ以上の前記第1種フレームにおけるデータフィールドの内容と、1つ以上の前記第2種フレームのデータフィールドの内容との関係を、ピアソンの積率相関係数、最大情報係数、又は、正準相関係数を用いた関係式で規定することとしても良い。これにより、互いに異なるIDを有する2種類のデータフレームの内容を関係式で規定した条件により、不正状態の発生の検知が可能となり得る。
【0022】
また、前記不正検知ルール情報は更に、前記第1種フレームと、前記第1識別子とも前記第2識別子とも異なる第3識別子を有するデータフレームである第3種フレームとの、データフィールドの内容の関係についての条件である第2条件を示し、前記不正判定ステップでは、更に、前記受信ステップで受信された前記第1種フレーム及び前記第3種フレームが、前記不正検知ルール情報が示す前記第2条件を満たすか否かを判定し、前記不正検知方法は更に、前記第1条件及び前記第2条件のうち前記不正判定ステップで満たされないと判定された条件の数に応じて前記第1種フレームの送信に関する異常度を算定する異常度算定ステップと、前記異常度算定ステップにより算定された異常度が所定異常条件を満たす場合に、前記第1種フレームを送信する電子制御ユニットが受信可能となるように前記監視電子制御ユニットが所定フレームを送信する送信ステップとを含むこととしても良い。これにより、不正状態(異常)の発生への関連性の高さが反映されて異常度が算定されるので、異常度に応じて不正状態の発生源の特定等が可能となり得る。また、例えば所定フレームを個々のECUの診断用に用いる場合において、異常度に応じて状態を診断すべきECUを絞り込んで送信を行うことが可能となるので、ECUの診断のための通信によるバストラフィックの増大が抑制され得る。
【0023】
また、前記不正検知方法は更に、データフレームの識別子毎に定められるデータフレームについての条件を示す侵入検知ルール情報を用いて、前記受信ステップで前記バスから受信されたデータフレームが、当該侵入検知ルール情報が示す該当の条件を満たすか否かを判定する侵入判定ステップと、前記不正判定ステップでの判定結果と前記侵入判定ステップでの判定結果との組み合わせに応じて対処処理の内容を決定し、決定に従って対処処理を実行する対処ステップとを含み、前記侵入検知ルール情報が示す、一の識別子のデータフレームについての前記条件は、当該識別子を有するデータフレーム間の受信間隔と、一定時間内に受信される当該識別子を有するデータフレームの数と、当該識別子を有するデータフレーム間でのデータフィールドから抽出される値の差異である変化量とのいずれかに関する条件を含むこととしても良い。これにより、侵入検知ルール情報に基づく侵入判定で、外部から不正なデータフレームが送信されていることを検知できる。また、少なくとも不正検知ルール情報に基づく不正判定と侵入検知ルール情報に基づく侵入判定との組み合わせにより、攻撃者による攻撃の内容等を分類し得るので、攻撃に対して適切な対処処理を決定(選定)して対応することが可能となり得る。
【0024】
また、前記不正検知方法は更に、前記バスから受信されたデータフレームにおける認証用の認証子の正当性を検証する検証ステップを含み、前記対処ステップでは、前記不正判定ステップでの判定結果と前記侵入判定ステップでの判定結果と前記検証ステップでの検証結果との組み合わせに応じて対処処理の内容の前記決定を行い、一定条件下で当該対処処理の内容として、認証用の鍵の更新に関する鍵更新処理を決定することとしても良い。これにより、不正検知ルール情報に基づく不正判定と侵入検知ルール情報に基づく侵入判定と認証子の検証結果との組み合わせにより、攻撃者による攻撃の内容或いは影響等を分類し得るので、必要に応じて認証に係る鍵の更新を行う等、攻撃に対して適切な対処処理を決定(選定)して対応することが、可能となり得る。
【0025】
また、前記不正検知方法は更に、前記対処ステップで前記鍵更新処理を実行した後において前記受信ステップで受信されたデータフレームについて、前記不正判定ステップでの前記判定、前記侵入判定ステップでの前記判定、及び、前記検証ステップでの前記検証を行い、当該不正判定ステップでの判定結果と当該侵入判定ステップでの判定結果と当該検証ステップでの検証結果との組み合わせが所定条件を満たす場合に、前記鍵更新処理とは異なる対処処理を行う追加対処ステップを含むこととしても良い。これにより、鍵更新処理の実行によって状況が改善されない場合等を検知し得るように所定条件を規定しておくことで、鍵更新処理で改善されない状況に他の対処処理により適切に対応することが可能となり得る。
【0026】
また、前記不正検知方法は更に、前記不正状態が発生したと検知した場合において、当該不正状態の発生に関係があったフレームが送信されたサブネットワークと、当該フレームを送信する電子制御ユニットと、当該フレームの識別子とのいずれかを特定することとしても良い。これにより、不正状態の発生に関する情報が特定されると、攻撃者による攻撃の内容等を、より詳しく分類可能となるので、攻撃に対して、より適切に対応することが可能となり得る。
【0027】
また、前記不正検知方法は更に、前記不正状態が発生したと検知した場合において、対処処理を実行し、前記対処処理は、前記バスに接続された特定の電子制御ユニットが受信可能となるように診断用のフレームを送信することと、前記バスに接続された特定の電子制御ユニットの正当性をチャレンジレスポンス認証により確認することと、前記バスにおける診断ポートの確認を促すための通知を行うことと、前記車載ネットワークシステムを搭載する車両の運転者に停車又は徐行を促すための通知を行うことと、前記車載ネットワークシステムを搭載する車両の運転者にディーラへ行くことを促すための通知を行うことと、前記車載ネットワークシステムを搭載する車両の運転者に不正状態が発生していることの通知を行うことと、前記バスに接続された電子制御ユニットに、特定の識別子を有するデータフレームが不正であることの通知を行うことと、前記車載ネットワークシステムを搭載する車両の外部のサーバに、不正なデータフレームが送信されていることの通知を行うことと、前記車載ネットワークシステムを搭載する車両の近隣の車両又は路側機へ、不正状態が発生していることの通知を行うことと、前記車載ネットワークシステムを予め定めたフェールセーフモードに切り替えることと、不正状態が発生したことをログとして記録することとのいずれかを含むこととしても良い。これにより、攻撃に対して適切に対応することが可能となり得る。
【0028】
また、前記不正検知方法では、前記バスから受信されたフレームの集合に基づく多変量解析により、相互に異なる識別子を有するフレーム同士の間でのフレームの内容の関係を特定し、特定した関係を表す条件を示すように前記不正検知ルール情報を生成又は更新することとしても良い。これにより、不正状態の発生を適切に検知できるように不正検知ルール情報の適切な生成等が可能となり得る。
【0029】
また、本発明の一態様に係る監視電子制御ユニット(監視ECU)は、バスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて前記バスに接続された監視電子制御ユニットであって、第1識別子を有するフレームと、第1識別子とは異なる識別子を有するフレームとの内容の関係についての条件である第1条件を示す不正検知ルール情報を保持する不正検知ルール保持部と、前記バスからフレームを逐次受信する受信部と、前記受信部により前記バスから受信されたフレームの集合が、前記不正検知ルール情報が示す前記第1条件を満たすか否かを判定する不正判定部とを備える監視電子制御ユニットである。これにより、ファームウェアの不正な書き換え或いはマルウェアの実行により電子制御ユニット(ECU)が不正状態になった場合にそのECUが送信するフレームと、他の識別子を有するフレームとの関係の乱れにより、不正状態が発生したことが検知され得る。
【0030】
また、本発明の一態様に係る車載ネットワークシステムは、バスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、第1識別子を有するフレームと、第1識別子とは異なる識別子を有するフレームとの内容の関係についての条件である第1条件を示す不正検知ルール情報を保持する不正検知ルール保持部と、不正状態が発生したか否かを判定するために、前記バスから受信されたフレームの集合が、前記不正検知ルール情報が示す前記第1条件を満たすか否かを判定する不正判定部とを備える車載ネットワークシステムである。これにより、ファームウェアの不正な書き換え或いはマルウェアの実行により電子制御ユニット(ECU)が不正状態になったことが、不正判定部の判定結果により検知され得る。
【0031】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【0032】
以下、実施の形態に係る車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0033】
(実施の形態1)
以下、本発明の実施の形態として、複数の電子制御ユニット(ECU)がバスを介して通信する車載ネットワークシステムにおいて用いられる不正検知方法について、図面を用いて説明する。不正検知方法は、不正なノード(例えば攻撃者により支配されたECU等)からバスに不正なフレームが送信されることを検知する方法であり、主としてバスに接続された監視ECUにより実行される。車載ネットワークシステムにおける監視ECUは、互いに異なる2つの識別子(メッセージID)を有するデータフレーム(メッセージ)同士の内容の関係を基にして、不正状態の発生(不正なデータフレームが送信されたこと)を検知する。
【0034】
[1.1 車載ネットワークシステム10の全体構成]
図1は、車載ネットワークシステム10の全体構成を示す図である。
【0035】
車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム10は、車載ネットワークを構成するCANのバスを介してフレームに係る通信を行う複数の装置を備え、不正検知方法を用いる。具体的には
図1に示すように車載ネットワークシステム10は、バス300と、監視ECU100、各種機器に接続されたECU200a、ECU200b、ECU200c、ECU200d等の各ECUといったバス300に接続された各ノードとを含んで構成される。なお、車載ネットワークシステム10には、監視ECU100及びECU200a、200b、200c、200d以外にもいくつものECUが含まれ得るが、ここでは、便宜上、監視ECU100及びECU200a、200b、200c、200dに注目して説明を行う。ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(コンピュータプログラム)を記憶することができる。例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0036】
ECU200a、ECU200b、ECU200c、及び、ECU200dは、バス300と接続され、それぞれ速度センサ210、加速度センサ220、ギア(変速機構)230、インストルメントパネル(インパネ)240に接続されている。ECU200aは、周期的に速度センサ210から車両の速度を取得し、取得した速度を通知するデータフレームを、周期的にバス300へ送信する。ECU200bは、周期的に加速度センサ220から車両の加速度を取得し、取得した加速度を通知するデータフレームを、周期的にバス300へ送信する。ECU200cは、周期的にギア230の状態を取得し、ギア230の状態を通知するデータフレームを、周期的にバス300へ送信する。ECU200dは、車両の速度或いはギアの状態を通知する各データフレームを受信して、インパネ240で表示する情報を更新する。
【0037】
監視ECU100は、バス300に接続される一種のECUであり、バス上に流れるデータフレーム(つまりバス上に現れるデータフレーム)を監視して、不正なデータフレームが送信されたか否かの判定(不正判定)を行うための不正検知処理を行う。
【0038】
車載ネットワークシステム10においてはCANプロトコルに従って、各ECUがフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。ここではデータフレームを中心に説明する。
【0039】
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
【0040】
図2は、CANプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、CANプロトコルで規定される標準IDフォーマットにおけるデータフレームを示している。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request)、IDE(Identifier Extension)、予約ビット「r」、DLC(Data Length Code)、データフィールド、CRC(Cyclic Redundancy Check)シーケンス、CRCデリミタ「DEL」、ACK(Acknowledgement)スロット、ACKデリミタ「DEL」、及び、EOF(End Of Frame)の各フィールドで構成される。
【0041】
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
【0042】
IDフィールドは、11bitで構成される、データの種類を示す値であるID(メッセージID)を格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
【0043】
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
【0044】
IDEと「r」とは、両方ドミナント1bitで構成される。
【0045】
DLCは、4bitで構成され、データフィールドの長さを示す値である。
【0046】
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
【0047】
CRCシーケンスは、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【0048】
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
【0049】
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【0050】
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
【0051】
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
【0052】
[1.3 エラーフレームフォーマット]
図3は、CANプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ(プライマリ)と、エラーフラグ(セカンダリ)と、エラーデリミタとから構成される。
【0053】
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために6bitのドミナントを連続で送信する。この送信は、CANプロトコルにおけるビットスタッフィングルール(連続して同じ値を6bit以上送信しない)に違反し、他のノードからのエラーフレーム(セカンダリ)の送信を引き起こす。
【0054】
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに知らせるために使用される連続した6ビットのドミナントで構成される。エラーフラグ(プライマリ)を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ(セカンダリ)を送信することになる。
【0055】
エラーデリミタ「DEL」は、8bitの連続したレセシブであり、エラーフレームの終了を示す。
【0056】
[1.4 監視ECU100の構成]
図4は、監視ECU100の構成図である。監視ECU100は、フレーム送受信部110と、フレーム処理部120と、不正判定部130と、不正対応部140と、フレーム生成部150と、フレーム受信履歴保持部160と、不正検知ルール保持部170と、不正判定結果保持部180と、ECU情報テーブル保持部190とを含んで構成される。
図4に示した監視ECU100の各構成要素は、監視ECU100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で、実現され得る。
【0057】
フレーム送受信部110は、バス300に対して、CANのプロトコルに従ったフレーム(データフレーム等)を送受信する。フレーム送受信部110は、バス300からフレームを1bitずつ受信する受信部としての機能を有する。フレーム送受信部110は、エラー無くデータフレームの受信を完了すると、データフレーム内のID、DLC、データといった情報をフレーム処理部120に転送する。また、フレーム送受信部110は、CANプロトコルに則っていないデータフレームと判断した場合は、エラーフレームを送信する。また、フレーム送受信部110は、データフレームの受信中にエラーフレームを受信した場合、つまり受け取ったデータフレームにおける値からエラーフレームになっていると解釈した場合には、それ以降はそのデータフレームを破棄する。フレーム送受信部110は、フレーム生成部150からデータフレームの送信要求を受けた場合には、そのデータフレームの内容をバス300に1bitずつ送信する。通信調停といったCANのプロトコルに則った処理も、フレーム送受信部110において実現される。
【0058】
フレーム処理部120は、フレーム送受信部110よりデータフレームの情報を受け取り、データフレームの内容を解釈する。フレーム処理部120は、ECU200a、200b、200cのそれぞれから送信されるデータフレームが示す車速、加速度、或いは、ギアの状態等の情報を取得し、取得した情報に基づいて、フレーム受信履歴保持部160に格納されている各データフレームに関する情報(フレーム受信履歴)を更新する。
【0059】
不正判定部130は、不正なデータフレームを受信したか否かの判定(不正なデータフレームが送信されたか否かに係る不正判定)を、不正検知ルール保持部170が保持する不正検知ルール情報と、フレーム受信履歴保持部160が保持するフレーム受信履歴とに基づいて、所定の単位時間(例えば100ms)を周期として周期的に行う。不正判定部130は、不正検知ルール情報が示す複数の異なるIDを有するフレーム間の関係に係る条件毎について条件が満たされるか否かにより不正判定を行い、例えば、条件が満たされなかった場合に不正と判定する。不正判定部130は、不正判定の結果に基づいて、不正判定結果保持部180が保持する不正判定結果を更新する。なお、不正判定部130は、フレームの各IDについて、そのIDのフレームに関して不正検知ルール情報が示す条件に基づいて不正と検知された数(例えば満たされなかった条件の数)に応じて、異常度を算定し、異常度を、不正判定結果保持部180が保持する不正判定結果に付加する。不正と検知された数が0であれば異常度は0となり、異常度の0は、異常が検知されなかったことを表す。また、不正判定部130は、不正判定の結果として不正と判定された場合(つまり不正状態の発生が検知された場合)に、不正を検知したことを不正対応部140へ通知する。
【0060】
不正対応部140は、不正判定部130から不正を検知したことが通知されると、不正判定結果保持部180に格納されている不正判定結果と、ECU情報テーブル保持部190に格納されているECU情報テーブルとを参照して、不正への対応としての対処処理の内容を決定する。不正対応部140は、対処処理を決定した場合において、その対処処理の実行のための制御を行う。例えば、不正対応部140は、不正判定結果から、特定のIDを有するデータフレームに関連して不正が検知された場合(一例としては不正が検知されかつ算定された異常度が最も高い場合)に、ECU情報テーブルを参照して、該当するデータフレームを送信するECUに対する診断メッセージの生成をフレーム生成部150に要求する。
【0061】
フレーム生成部150は、送信すべきデータフレームの生成が要求された場合にそのデータフレームを生成して、そのデータフレームをフレーム送受信部110に送信させる。例えば、フレーム生成部150は、診断メッセージの生成が要求された場合に、予め定められた診断メッセージを表すデータフレームを生成して、そのデータフレームを、フレーム送受信部110を介してバス300へ送信する。
【0062】
フレーム受信履歴保持部160は、監視ECU100が逐次受信したデータフレームに関する情報であるフレーム受信履歴(
図5参照)を保持する。
【0063】
不正検知ルール保持部170は、不正判定部130が不正判定のために参照する不正検知ルール情報(
図6参照)を保持する。
【0064】
不正判定結果保持部180は、不正判定部130が、不正検知ルール情報が示すルール(条件)に適合するか否かを判定した結果としての不正判定結果(
図7参照)を保持する。
【0065】
ECU情報テーブル保持部190は、各IDについてそのIDのデータフレームを送信するECUに関する情報を対応付けて構成されるECU情報テーブル(
図8参照)を保持する。
【0066】
[1.5 フレーム受信履歴]
図5は、フレーム受信履歴保持部160が保持するフレーム受信履歴の一例を示す。フレーム受信履歴は、監視ECU100が過去から現在までに受信したデータフレームの内容に関する情報であり、同図の例では、フレーム受信履歴のうち、3つのIDそれぞれについての、現在(最新)から3回前までの単位時間(例えば100ms)毎に受信されたデータフレームの内容が示す特定の値(車速、加速度、ギアの状態のそれぞれを示す値)を示している。この例は、車速に関する0x100というIDを有するデータフレームのうち、最新に受信したデータフレームの示す車速の値が18.0km/hであり、1回前に受信したデータフレームの車速の値が19.2km/h、2回前に受信した値が19.6km/h、3回前に受信した値が20.0km/hであったことを示している。また、加速度に関する0x200というIDを有するデータフレームのうち、最新から3回前までに受信したデータフレームの示す加速度の値がそれぞれ、0.10m/s^2、0.10m/s^2、0.20m/s^2、0.20m/s^2であったことを示している。また、ギアの状態に関する0x300というIDを有するデータフレームのうち、最新から3回前までに受信したデータフレームの示すギアの状態の値が、全て「D」(ドライブ)の状態を表すものであったことを示している。
【0067】
このフレーム受信履歴は、不正判定部130で、互いに異なるIDを有するデータフレーム間の内容の関係の確認(不正検知ルール情報が示す条件を満たすか否かの判定)のために用いられる。
図5では、最新から3回前に受信したデータフレームの内容が示す値までしか示していないが、フレーム受信履歴は、不正検知ルール情報を用いて不正判定部130が行う不正判定において必要な情報を含むように構成され得る。例えば、フレーム受信履歴は、車両の走行の開始時(例えばエンジン始動時)等以降に監視ECU100が受信した全てのデータフレームの内容を示す情報であり得る。なお、フレーム受信履歴保持部160は、例えば、加速度の積分値を記憶するための領域を1つ有することとしても良い。
【0068】
[1.6 不正検知ルール情報]
図6は、不正検知ルール保持部170が保持する不正検知ルール情報の一例を示す。不正検知ルール情報は、互いに異なるIDのデータフレームの内容間の関係に係る条件(ルール)を1つ以上(
図6の例では3つ)含んでいる。
【0069】
図6の例では、不正検知ルール情報は、ルール番号1のルールとして、IDが0x100のデータフレームの内容(車速)とIDが0x200のデータフレームの内容(加速度)との関係についての条件を含んでいる。この条件は、ある単位時間(例えば100ms)内に受信されたIDが0x100のデータフレームが示す車速(速度)の値は、その単位時間及びそれより過去の単位時間(例えば車両の走行の開始時以降の各単位時間)に受信されたIDが0x200のデータフレームが示す加速度の値を累積してなる、加速度の積分値の±1km/hの範囲に入るという条件である。この条件が満たされれば適正な関係が保たれている正常状態であることになり、この条件が満たされなければ不正判定部130により不正と判定されること(つまり不正状態が発生していること)になる。なお、加速度の積分値は、例えば単位の換算を含めて以下の式で算定できる。
【0070】
積分値=(Σ(受信したID0x200のデータフレームが示す加速度×3.6))÷(1/ID0x200のデータフレームの送信周期)
【0071】
また、
図6の例では、不正検知ルール情報は、ルール番号2のルールとして、IDが0x100のデータフレームの内容(車速)とIDが0x300のデータフレームの内容(ギアの状態)との関係についての条件を含んでいる。この条件は、ある単位時間内に受信されたIDが0x300のデータフレームが示すギアの状態の値が「D」(ドライブ)を表す場合には、同じ単位時間内に受信されたIDが0x100のデータフレームが示す車速の、前回の単位時間内に受信されたデータフレームが示す車速からの変化量(例えば差分)が、1.0km/h以下に抑えられ、「D」ではなく「R」(リバース)を表す場合には、その車速の変化量が、0.5km/h以下に抑えられているという条件である。この条件が満たされなければ不正判定部130により不正と判定されることになる。
【0072】
また、
図6の例では、不正検知ルール情報は、ルール番号3のルールとして、IDが0x200のデータフレームの内容(加速度)とIDが0x300のデータフレームの内容(ギアの状態)との関係についての条件を含んでいる。この条件は、ある単位時間内に受信されたIDが0x300のデータフレームが示すギアの状態の値が「D」(ドライブ)を表す場合には、同じ単位時間内に受信されたIDが0x200のデータフレームが示す加速度の、前回の単位時間内に受信されたデータフレームが示す加速度からの変化量(例えば差分)が、1.0m/s^2以下に抑えられ、「D」ではなく「R」(リバース)を表す場合には、その加速度の変化量が、0.5m/s^2以下に抑えられているという条件である。この条件が満たされなければ不正判定部130により不正と判定されることになる。
【0073】
[1.7 不正判定結果]
図7は、不正判定結果保持部180が保持する不正判定結果の一例を示す。
図7の例では、不正判定結果は、データフレームの各ID(同図左端)について、そのIDのデータフレームと別のIDのデータフレームとの間の関係に係る条件に基づいて、不正判定部130により不正と判定されたか、否か(適正と判定されたか)を示す。なお、
図7では、不正と判定されたか否かに加えて、その判定に用いられた、不正検知ルール情報におけるルール(条件)についてのルール番号を付記している。この例は、不正判定部130により、ルール番号1の条件と、ルール番号2の条件とは満たされなかったと判定され(つまり不正と判定され)、ルール番号3の条件は満たされたと判定された(つまり適正と判定された)例を示している。
【0074】
また、不正判定結果には、不正判定部130により、各IDのフレームについて不正と判定(検知)された数に応じて算定された異常度が付加されている。
図7に示すように、IDが0x100のデータフレームは、ルール番号1の条件で不正と判定された上にルール番号2の条件で不正と判定されているので、異常度が2と算定されている。IDが0x200のデータフレームは、ルール番号1の条件で不正と判定されているが、ルール番号3の条件では不正と判定されていないので、異常度は1と算定されている。IDが0x300のデータフレームは、ルール番号2の条件で不正と判定されているが、ルール番号3の条件では不正と判定されていないので、異常度は1と算定されている。
【0075】
[1.8 ECU情報テーブル]
図8は、ECU情報テーブル保持部190が保持するECU情報テーブルの一例を示す。ECU情報テーブルは、同図に示すように、データフレームのID毎に、そのIDのデータフレームの送信元のECUについての情報(送信ECU情報)を対応付けたテーブルである。
図8の例は、IDが0x100のデータフレームはECU200aから送信され、IDが0x200のデータフレームはECU200bから送信され、0x300のデータフレームはECU200cから送信されることを示している。
図8では省略しているが、ECU情報テーブルが示す、ECUについての送信ECU情報は、例えばそのECUに対して、そのECUの状態を診断するために送信されるデータフレームである診断メッセージの内容を特定するために必要な情報等を含み得る。あるECUの状態を診断するために送信される診断メッセージは、例えば、そのECUを識別するための識別情報、そのECUの診断に必要な情報等を含む。監視ECU100が診断メッセージを送信することにより開始されるECUの診断は、例えば、予め定められた方式に従ってなされる、ECUのファームウェアが不正に書き換えられているか否かの診断であり、例えばECUは、この診断に対応して、診断用情報(例えばメモリ内容のハッシュ値等)を監視ECU100に送信する等といった予め定められた処理を行うように構成されている。
【0076】
[1.9 ECU200aの構成]
図9は、ECU200aの構成図である。ECU200aは、フレーム送受信部201と、フレーム処理部202と、機器入出力部203と、フレーム生成部204とを含んで構成される。これらの各構成要素は、機能的な構成要素であり、その各機能は、ECU200aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。なお、ECU200b、ECU200c及びECU200dもECU200aと概ね同様の構成を有する。
【0077】
フレーム送受信部201は、バス300に対して、CANのプロトコルに従ったフレーム(データフレーム等)を送受信する。フレーム送受信部201は、バス300からデータフレームを1bitずつ受信し、エラー無くデータフレームの受信を完了すると、データフレーム内のID、DLC、データといった情報をフレーム処理部202に転送する。フレーム送受信部201は、CANプロトコルに則っていないデータフレームと判断した場合は、エラーフレームを送信する。フレーム送受信部201は、データフレームの受信中にエラーフレームを受信した場合には、それ以降そのデータフレームを破棄する。また、フレーム送受信部201は、フレーム生成部204より通知を受けたフレームの内容をバス300に送信する。通信調停といったCANのプロトコルに則った処理も、フレーム送受信部201において実現される。
【0078】
フレーム処理部202は、受信したデータフレームの内容を解釈する。ECU200aと同様の構成を備えるECU200dを例として説明すると、ECU200dのフレーム処理部202では、ECU200a及びECU200cからそれぞれ送信されるデータフレームに含まれる車速(速度センサ210の情報)、ギアの状態(ギア230の状態の情報)を解釈し、インパネ240の表示の更新等のために必要な情報を、ECU200dの機器入出力部203に通知する。また、フレーム処理部202は、例えば、監視ECU100から診断メッセージであるデータフレームを受信した場合には予め定められた処理を行って診断用情報を、監視ECU100が受信可能となるようにフレーム送受信部201を介してバス300に送信し得る。
【0079】
機器入出力部203は、ECU200a、ECU200b或いはECU200cにおいて、そのECUに接続される機器と通信を行う。例えば、速度センサ210と接続されたECU200aにおいては、機器入出力部203は、現在の車両の速度を、速度センサ210から取得してフレーム生成部204に通知する。加速度センサ220に接続されたECU200bにおいては、機器入出力部203は、現在の車両の加速度を、加速度センサ220から取得してフレーム生成部204に通知する。ギア230に接続されたECU200cにおいては、機器入出力部203は、現在のギアのシフトポジションを取得してフレーム生成部204に通知する。インパネ240に接続されたECU200dにおいては、機器入出力部203は、フレーム処理部202から通知された値に基づいて制御情報をインパネ240へ送出することで、インパネ240の表示の更新等を行う。
【0080】
フレーム生成部204は、機器入出力部203から通知された情報に基づいてバス300へ送信するデータフレームを生成し、生成したデータフレームを、フレーム送受信部201を介してバスへ送信する。例えばECU200aにおいては、フレーム生成部204は、機器入出力部203から通知された速度センサ210からの車速の情報を含んだデータフレームを、予め定められた周期(例えば100ms間隔)で生成し、フレーム送受信部201に通知する。ECU200a、ECU200b、ECU200cがそれぞれ送信するデータフレームの例について次に
図10を用いて説明する。
【0081】
[1.10 ECUが送信するデータフレーム]
図10は、ECU200a、ECU200b及びECU200cのそれぞれにより送信されるデータフレームの例を示す。
【0082】
ECU200aが送信するデータフレーム401は、IDが0x100であり、DLCが2であり、そのデータフィールドは、1バイト目と2バイト目とを合わせた2バイトで車速(0.1km/h単位)を表す。
図10では、20.0km/h(0xC8)の車速を示す例を示している。
【0083】
ECU200bが送信するデータフレーム402は、IDが0x200であり、DLCが2であり、そのデータフィールドは、1バイト目と2バイト目とを合わせた2バイトで加速度(0.01m/s^2単位)を表す。
図10では、0.10m/s^2の加速度を示す例を示している。
【0084】
ECU200cが送信するデータフレーム403は、IDが0x200であり、DLCが1であり、そのデータフィールドは、ギア230の状態を示す値を示している。この値は、ギア230が、「N」(ニュートラル)状態においては、0となり、「R」(リバース)状態においては、1となり、「D」(ドライブ)状態においては、2となる。
図10では、ギア230の状態が「D」であることを表す例を示している。
【0085】
[1.11 監視ECU100の動作]
図11は、監視ECU100の動作例を示すフローチャートである。監視ECU100は、所定の単位時間(例えば100ms)毎に周期的に不正検知処理(不正判定)を行う。
【0086】
監視ECU100は、周期的に行われる不正判定のタイミングになるまで待って(ステップS1101)、バス300の監視による不正判定を行う(ステップS1102)。
【0087】
ステップS1102では、監視ECU100は、不正判定部130により、フレーム受信履歴保持部160に保持されているフレーム受信履歴を参照して、不正検知ルール保持部170に保持されている不正検知ルール情報が示す各ルール(条件)が満たされたか否かに基づいて、適正か不正かを判定する。
【0088】
監視ECU100は、不正判定部130により、ステップS1102での判定の結果を、不正判定結果保持部180に不正判定結果として記録し、不正判定結果に応じて異常度を算定して、算定した異常度を、不正判定結果に付加するように記録する(ステップS1103)。例えば、算定された異常度が0であれば、異常が検知されなかったことを示し、異常度が0より大きければ、異常が検知されたことを示す。
【0089】
監視ECU100は、不正判定の結果、異常が検知されたか否かを判別する(ステップS1104)。異常が検知されなかった場合には、監視ECU100は、ステップS1101に移行し、次の不正判定のタイミングの到来を待つ。
【0090】
異常(不正状態の発生)が検知された場合には、監視ECU100は、不正対応部140により、不正への対応としての対処処理の内容を決定する。具体的には、異常が検知された場合に、監視ECU100は、不正判定結果保持部180に保持されている不正判定結果において最も高い異常度のIDを有するデータフレームを送信するECUについての情報を、ECU情報テーブル保持部190のECU情報テーブルを参照することで取得して、ECUを特定し(ステップS1105)、特定したECUに対する診断メッセージをそのECUに送信することで、例えばそのECUから診断用情報を受信する等によってそのECUの状態を確認する(ステップS1106)。ステップS1106の後に、監視ECU100は、ステップS1101に移行し、次の不正判定のタイミングの到来を待つ。なお、ステップS1106でのECUの状態の確認によりそのECUに異常が生じていることを検知した場合には、監視ECU100は、車両の運転者等への警告通知、外部のサーバへの情報通知その他の対処のための制御を行い得る。
【0091】
[1.12 車載ネットワークシステム10におけるバス300の監視動作]
図12は、車載ネットワークシステム10におけるバス300の監視の動作例を示す図である。
【0092】
この例は、ECU200a、ECU200b及びECU200cからそれぞれ、IDが0x100のデータフレーム(車速を示すデータフレーム)と、IDが0x200のデータフレーム(加速度を示すデータフレーム)と、IDが0x300のデータフレーム(ギアの状態を示すデータフレーム)とが、周期的にバス300へ送信される様子を示している。この例は更に、攻撃者によりECU200aのファームウェアが不正に書き換えられてしまい、ECU200aは、ある時点から、速度センサ210から通知される車速を改竄して、不正な車速を示すデータフレームをバス300へ送信する例を示している。
【0093】
監視ECU100は、IDが0x300のデータフレームを受信したタイミングの直後から100msの周期で定期的に、不正判定(不正検知処理)を行う。この不正判定を行うタイミングを各単位時間(100ms)の終期であるとすれば、最初の3回の単位時間それぞれでバス300から受信されたデータフレームについては、不正検知ルール保持部170に格納されている不正検知ルール情報が示すルール番号1から3のいずれのルールでも不正は検知されていない。この例の最初の時点で加速度の積分値は20.0km/hであったとする。そのため、加速度の積分値は1回目から4回目までの加速度を示す各データフレームの受信により、20.072、20.144、20.18、20.21km/hと順次変化する。監視ECU100は、4回目に受信した車速のデータフレームが示す車速(18.0km/h)と、加速度のデータフレームが示す加速度に基づく積分値(20.2km/h)の差(変化量)が1.0km/hを超えたので、ルール番号1のルール(条件)が満たされずに不正を検知する。更に、監視ECU100は、4回目に受信したデータフレームが示すギアの状態が「D」(ドライブ)である場合において、速度の変化量(4回目に受信した車速のデータフレームが示す車速18.0km/hと前回受信したデータフレームが示す車速19.2km/hとの差)が1.0km/hを超えたので、ルール番号2の不正を検知する。これにより、監視ECU100は、2つのルール(条件)を満たさないことで異常度が最も高く2と算定された、IDが0x100のデータフレームの送信元を、ECU情報テーブル保持部190が保持するECU情報テーブルを参照することにより、ECU200aであると特定する。そして、監視ECU100は、ECU200aに対して、診断メッセージを送信する。
【0094】
[1.13 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、監視ECU100が、互いに異なる複数のIDを有するデータフレームの内容間の関係に基づいて不正を検知する。これにより、攻撃者によりECUのファームウェアが不正に書き換えられ、或いは、ECU上で不正なプログラムが実行される等により、正規の送信タイミングで不正な内容のデータフレームが送信されたとしても、IDの相違するデータフレーム間の内容の関係の崩れから、不正なデータフレームの送信が検知され得る。例えば、攻撃者があるECUを支配して不正なデータフレームを送信しても、他のECUが送信するデータフレームとの間での関係に基づいて不正が検知されることから、不正を検知されずに攻撃者が攻撃を行うことが困難となる。
【0095】
また監視ECU100は、不正検知ルール情報が示す複数の条件に基づく不正判定を行った結果に基づいて、異常度の算定により、不正なデータフレームのID及びその送信元のECUを絞り込み、効率的に診断メッセージの送信等を行う。このようにECUに対応した診断メッセージを送信するためにECUを絞り込むことは、バス300のトラフィック量の増大の抑制のために有用であり、診断メッセージの送信以外の対処を行う場合であっても、不正状態の発生原因となるECUへの対処を効率的に行うために、異常度の算定によりECUを絞り込むことは有用である。
【0096】
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10を一部変形してなる車載ネットワークシステム11について説明する。
【0097】
本実施の形態に係る車載ネットワークシステム11における監視ECUは、互いに異なるIDを有するデータフレームの内容間の関係を基にして、不正状態の発生を検知する方法(実施の形態1で示した不正判定の方法)の他に、単一のIDのデータフレームについてID毎に定められたルール(条件)に基づいても不正状態の発生を検知する方法を用いて、総合的に対処処理を決定する。
【0098】
[2.1 車載ネットワークシステム11の全体構成]
図13は、車載ネットワークシステム11の全体構成を示す図である。
【0099】
車載ネットワークシステム11は、バス300と、監視ECU2100、センサ等の各種機器に接続されたECU200a、ECU200b、ECU200c、ECU200d等の各ECUといったバス300に接続された各ノードとを含んで構成される。車載ネットワークシステム11では、更にバス300に接続された診断ポート2400が存在する。車載ネットワークシステム11は、ここで特に説明しない点については実施の形態1で示した車載ネットワークシステム10(
図1参照)と同じであり、車載ネットワークシステム10と同様の構成要素については、
図13において、
図1と同じ符号を付しており、ここでの説明を省略する。
【0100】
監視ECU2100は、実施の形態1で示した監視ECU100を部分的に変形したものであり、バス300に流れるデータフレームを監視して、不正なデータフレームが送信されたか否かの判定(不正判定及び侵入判定)を行い不正状態の発生を検知する。更に監視ECU2100は、不正なデータフレームが送信された状況(不正判定及び侵入判定の結果)に応じて対処処理の内容を決定して、対処処理を行う。
【0101】
診断ポート2400は、バス300にアクセス可能なポートである。診断ポート2400を介して、診断ツール等といった機器によるバス300へのアクセスが可能となる。即ち、診断ポート2400に診断ツール等を接続し、バス300に繋がるECUの状態を診断することができる。この診断ポート2400から、バス300に対してデータフレームの送受信が可能となるため攻撃者が、診断ポート2400を介して、不正なデータフレームを送信することも考えられる。ここでは、診断ポート2400を介した不正なデータフレームのバス300への注入(送信)を、侵入とも称する。
【0102】
[2.2 監視ECU2100の構成]
図14は、監視ECU2100の構成図である。監視ECU2100は、フレーム送受信部110と、フレーム処理部120と、不正判定部130と、侵入判定部2131と、異常対応部2140と、フレーム生成部150と、フレーム受信履歴保持部2160と、不正検知ルール保持部170と、侵入検知ルール保持部2171と、不正判定結果保持部180と、侵入判定結果保持部2181と、ECU情報テーブル保持部190と、異常対応テーブル保持部2191とを含んで構成される。実施の形態1と同様の機能を有する構成要素は、
図14において、
図4と同じ符号を付しており、ここでの説明を省略する。
図14に示した監視ECU2100の各構成要素は、監視ECU2100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で、実現され得る。
【0103】
侵入判定部2131は、外部からバス300に不正なデータフレームが注入されているか否かの判定(不正なデータフレームが注入されたか否かに係る侵入判定)を、侵入検知ルール保持部2171が保持する侵入検知ルール情報と、フレーム受信履歴保持部2160が保持するフレーム受信履歴に基づいて、所定の単位時間(例えば100ms)を周期として周期的に行う。侵入判定部2131は、侵入判定の結果に基づいて、侵入判定結果保持部2181が保持する侵入判定結果を更新する。また、侵入判定部2131は、侵入判定の結果として侵入と判定された場合つまり異常発生が検知された場合に、侵入を検知したことを異常対応部2140へ通知する。
【0104】
異常対応部2140は、不正判定部130或いは侵入判定部2131から、不正或いは侵入を検知したこと(異常発生)を通知されると、不正判定結果保持部180に格納されている不正判定結果と、侵入判定結果保持部2181に格納されている侵入判定結果と、ECU情報テーブル保持部190に格納されているECU情報テーブルと、異常対応テーブル保持部2191に格納されている異常対応テーブルとを参照して、異常への対応としての対処処理の内容を決定する。異常対応部2140は、対処処理を決定した場合において、その対処処理の実行のための制御を行う。例えば、異常対応部2140は、特定のIDを含むデータフレームが異常(例えば不正であり算定された異常度が最も高い等)という不正判定結果と、その特定のIDを含むデータフレームについて侵入と判定した侵入判定結果とを取得した場合には、診断ポート2400を介して不正なデータフレームが注入されている可能性が高いので、診断ポート2400に不正なデバイスが接続されていないかの確認をユーザ(運転者等)に促すべく送信するためのデータフレームの生成を、フレーム生成部150に要求する。また、例えば、異常対応部2140は、特定のIDを含むデータフレームの侵入が検知されていないという侵入判定結果と、その特定のIDを含むデータフレームの異常が検知されている不正判定結果とを取得した場合には、ECUのファームウェアが不正に書き換えられている可能性が高いとして、ECU情報テーブルを参照して、該当するデータフレームを送信するECUに対しての診断メッセージの生成を、フレーム生成部150に要求する。
【0105】
フレーム受信履歴保持部2160は、監視ECU2100が逐次受信したデータフレームに関する情報であるフレーム受信履歴(
図15参照)を保持する。
【0106】
侵入検知ルール保持部2171は、侵入判定部2131が侵入判定のために参照する単一のIDのデータフレームについてID毎に定められた条件を示す侵入検知ルール情報(
図16参照)を保持する。
【0107】
侵入判定結果保持部2181は、侵入判定部2131が、侵入検知ルール情報が示す条件を満たすか否かを判定した結果としての侵入判定結果(
図17参照)を保持する。
【0108】
異常対応テーブル保持部2191は、不正判定結果及び侵入判定結果に応じて、不正或いは侵入の発生に対して適切な対処処理の内容を決定するために用いられる異常対応テーブル(
図18参照)を保持する。
【0109】
[2.3 フレーム受信履歴]
図15は、フレーム受信履歴保持部2160が保持するフレーム受信履歴の一例を示す。フレーム受信履歴は、監視ECU2100が過去から現在までに受信したデータフレームの内容に関する情報であり、同図の例では、フレーム受信履歴のうち、3つのIDそれぞれについての、現在(最新)から2回前までに受信されたデータフレームの受信時刻とデータフレームの内容が示す特定の値(車速、加速度、ギアの状態のそれぞれを示す値)とを示している。この例は、車速に関する0x100というIDを有するデータフレームのうち、最新のデータフレームの受信時刻が210msであって、受信したデータフレームの示す車速の値が18.0km/hであり、1回前の受信時刻が110msであって、受信したデータフレームの車速の値が19.2km/hであり、2回前の受信時刻が10msであって、受信した値が19.6km/hであったことを示している。また、加速度に関する0x200というIDを有するデータフレームのうち、最新から2回前までに受信したデータフレームの受信時刻がそれぞれ220ms、120ms、20msであって、受信した各データフレームの示す加速度の値がそれぞれ、0.10m/s^2、0.10m/s^2、0.20m/s^2であったことを示している。また、ギアの状態に関する0x300というIDを有するデータフレームのうち、最新から2回前までに受信したデータフレームの受信時刻がそれぞれ230ms、130ms、30msであって、受信した各データフレームの示すギアの状態の値が、全て「D」(ドライブ)の状態を表すものであったことを示している。
【0110】
このフレーム受信履歴は、不正判定部130での不正判定、及び、侵入判定部2131での侵入判定において用いられる。
図15では、最新から2回前に受信したデータフレームの内容が示す値までしか示していないが、フレーム受信履歴は、不正検知ルール情報を用いて不正判定部130が行う不正判定において必要な情報、及び、侵入検知ルール情報を用いて侵入判定部2131が行う侵入判定において必要な情報を含むように構成され得る。例えば、フレーム受信履歴は、車両の走行の開始時(例えばエンジン始動時)等以降に監視ECU2100が受信した全てのデータフレームの内容を示す情報であり得る。なお、フレーム受信履歴保持部2160は、例えば、加速度の積分値を記憶するための領域を1つ有することとしても良い。
【0111】
[2.4 侵入検知ルール情報]
図16は、侵入検知ルール保持部2171が保持する侵入検知ルール情報の一例を示す。侵入検知ルール情報は、ID毎に、そのIDを有するデータフレームについて満たれるべき条件(ルール)を含んでいる。侵入検知ルール情報が示す条件が満たされるか否かが、侵入判定のために侵入判定部2131で確認される。この条件を満たさないデータフレームを検知することで侵入判定部2131は、侵入を検知する。
図16の例では、侵入検知ルール情報は、ID毎に、条件を規定するための受信間隔とマージンとデータ変化量とを示している。受信間隔は、対応するIDのデータフレームが受信される間隔を示し、マージンは、受信間隔の揺らぎの許容範囲を示す。
図16の例では、例えばIDが0x100のデータフレームについては、受信間隔が100msであり、マージンが5msであるので、IDが0x100のデータフレームを受信した間隔が、95msから105msの範囲内であれば条件が満たされ、条件が満たされると侵入判定においては正常(侵入でない)と判定される。この条件が満たされない場合には、侵入判定において異常(侵入検知)と判定される。データ変化量は、対応するIDの、前回受信されたデータフレームのデータフィールドから抽出されたデータ値から現在受信されたデータフレームのデータフィールドから抽出されたデータ値までに変化する変化量(値の差異)の上限という条件を示すものである。
図16の例では、例えばIDが0x100のデータフレーム(車速)についてのデータ変化量が2km/hであるので、IDが0x100の連続して受信したデータフレームのデータ(車速)間の変化量が、2km/h以内の変化であれば上限条件が満たされ、条件が満たされると侵入判定においては正常(侵入でない)と判定される。例えば、監視ECU2100が、車速19.2km/hを示すIDが0x100のデータフレームを受信してから、次に受信する、IDが0x100のデータフレームの車速の値が17.2〜21.2km/hであれば、正常と判定される。この条件が満たされない場合には、侵入判定において異常(侵入)と判定される。
図16の例では、IDが0x200のデータフレームについての条件として、受信間隔100msと、マージン5msと、データ変化量5m/s^2とが規定されている。また、IDが0x300のデータフレームについての条件として、受信間隔100msと、マージン5msとが規定されているが、データ変化量は規定されていない。これはデータ変化量に関する条件がないことを意味する。このように、侵入検知ルール情報が示す各IDのデータフレームについての条件としては、そのIDの正常なデータフレームが周期的に送信されている状況において、そのIDを有する不正なデータフレームが外部から注入されたときに正常なデータフレームとの間で齟齬が生じることで条件が満たされなくなるような条件が規定されることが有用である。
図16の例は、正常なデータフレームと外部から注入された不正なデータフレームとの混在により、受信間隔及びデータ変化量に係る条件が満たされなくなる可能性に鑑みて、その条件が規定されている。
【0112】
[2.5 侵入判定結果]
図17は、侵入判定結果保持部2181が保持する侵入判定結果の一例を示す。
図17の例では、侵入判定結果は、データフレームの各IDについて、そのIDのデータフレームに係る条件に基づいて、侵入判定部2131により正常(侵入でない)と判定されたか、異常(侵入検知)と判定されたかを示す。
図17の例は、侵入判定部2131により、IDが0x100のデータフレームが正常と判定され、IDが0x200のデータフレームが異常と判定され、IDが0x300のデータフレームが正常と判定されたことを示している。
【0113】
[2.6 異常対応テーブル]
図18は、異常対応テーブル保持部2191が保持する異常対応テーブルの一例を示す。この異常対応テーブルを参照して、異常対応部2140は、不正判定結果及び侵入判定結果に基づいて異常への対応としての対処処理の内容を決定する。
図18に示すように、不正判定結果と侵入判定結果との組み合わせにより、対応が変化する。異常対応テーブルは、
図18の例では、不正判定結果が正常(例えば異常度が0)であって侵入判定結果が正常である場合には、対処処理として特に何もしない(何の対応も行わない)ことを示す。
【0114】
また、この例の異常対応テーブルは、不正判定結果が異常(例えば異常度が0より大きい)であって侵入判定結果が正常である場合には、異常なデータフレームの送信元に該当するECUへ診断メッセージを送信することで状況を確認することを対処処理の内容とすることを示す。この該当のECUへの診断メッセージの送信は、外部から不正メッセージ(攻撃のためのデータフレーム)が注入されていないが互いに異なるIDのデータフレームの内容間の関係が崩れていることから該当のECUのファームウェアが不正に書き換えられている可能性があるので、これに対応するために有用な処理である。
【0115】
また、この例の異常対応テーブルは、不正判定結果が正常であって侵入判定結果が異常である場合には、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことを対処処理の内容とすることを示す。このユーザへの通知は、攻撃者によるECUのファームウェアの書き換え等でのECUの支配がなされていないが、外部から正常なメッセージを再送する等の攻撃の試行がなされている可能性があるので、これに対応するために有用な処理である。ユーザへの通知は、例えば、監視ECU2100から所定IDのデータフレームをバス300に送信し、その所定IDのデータフレームをECU200dが受信すると予め定められたメッセージをインパネ240に表示するよう制御する等により実現され得る。
【0116】
また、この例の異常対応テーブルは、不正判定結果が異常であって侵入判定結果も異常である場合には、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことと、各ECUへ異常が発生していることを通知するフレーム(異常通知メッセージ)を送信することとを、対処処理の内容とすることを示す。これは、外部から攻撃フレームが注入されてECUが支配されている可能性があって車両の制御への危険度が高いと想定される場合への対応の一例である。なお、車載ネットワークシステム11における各ECUは異常通知メッセージを受信した場合に、予め定められたセキュリティ対策(例えば車両を減速させ停止させる等の走行制御、自動走行機能の縮退等)を行うように構成され得る。
【0117】
[2.7 監視ECU2100の動作]
図19は、監視ECU2100の動作例を示すフローチャートである。監視ECU2100は、例えば100ms毎に周期的に不正検知処理(不正判定)及び侵入検知処理(侵入判定)を行う。
【0118】
監視ECU2100は、周期的に行われる不正判定のタイミングになるまで待って(ステップS2101)、バス300の監視による不正判定を行う(ステップS2102)。ステップS2102では、監視ECU2100は、不正判定部130により、フレーム受信履歴保持部2160に保持されているフレーム受信履歴を参照して、不正検知ルール保持部170に保持されている不正検知ルール情報が示す各ルール(条件)が満たされたか否かに基づいて、適正か不正かを判定する。なお、不正判定部130は、不正判定結果を不正判定結果保持部180に格納し、異常度の算定結果を不正判定結果に付加する。
【0119】
次に監視ECU2100は、侵入判定を行う(ステップS2103)。ステップS2103では、監視ECU2100は、侵入判定部2131により、フレーム受信履歴保持部2160に保持されているフレーム受信履歴を参照して、侵入検知ルール保持部2171に保持されている侵入検知ルール情報が示す条件が満たされたか否かに基づいて、正常か異常(侵入検知)かを判定する。なお、侵入判定部2131は、侵入判定結果を侵入判定結果保持部2181に格納する。
【0120】
次に監視ECU2100は、不正判定結果及び侵入判定結果に基づいて、異常対応テーブル保持部2191が保持する異常対応テーブルに従って、対処処理の内容を決定する(ステップS2104)。
【0121】
そして、監視ECU2100は、ステップS2104で決定した内容の対処処理を実行し(ステップS2105)、ステップS2101へと移行する。なお、監視ECU2100は、不正判定結果及び侵入判定結果のいずれもが正常であった場合において、特に対処処理は実行しない。
【0122】
[2.8 車載ネットワークシステム11におけるバス300の監視の動作例1]
図20は、車載ネットワークシステム11におけるバス300の監視の動作例1を示す。
【0123】
この例は、ECU200a、ECU200b及びECU200cからそれぞれ、IDが0x100のデータフレーム(車速を示すデータフレーム)と、IDが0x200のデータフレーム(加速度を示すデータフレーム)と、IDが0x300のデータフレーム(ギアの状態を示すデータフレーム)とが、周期的にバス300へ送信される様子を示している。この例は更に、ある時点で攻撃者により診断ポート2400からIDが0x200の不正なデータフレームが注入(送信)される例を示している。
【0124】
監視ECU2100はバス300を監視しており、診断ポート2400からIDが0x200の不正なデータフレーム(加速度−1.50を示すデータフレーム)が注入されると、不正検知ルール情報(
図6参照)が示すルール番号3の条件(ギアの状態「D」と加速度の変化量との関係に係る条件)が満たされなくなる。このため、監視ECU2100では不正判定において不正と判定されることで異常が検知される。また、この不正なデータフレームの注入により、IDが0x200のデータフレームの受信間隔が50msとなり、侵入検知ルール情報(
図16参照)が示す、IDが0x200のデータフレームについての受信間隔及びマージンで規定された条件が、満たされなくなる。このため、監視ECU2100では侵入判定において異常が検知される。そして、監視ECU2100は、不正判定及び侵入判定のいずれでも異常が検知されたので、異常対応テーブル(
図18参照)に従って、診断ポート2400の確認をユーザに促し、かつ、各ECUへ車載ネットワークに異常が発生していることを通知する対処処理(予め定められたデータフレームの送信等)を実行する。
【0125】
[2.9 車載ネットワークシステム11におけるバス300の監視の動作例2]
図21は、車載ネットワークシステム11におけるバス300の監視の動作例2を示す。
【0126】
この例は、動作例1と同様に、ECU200a、ECU200b及びECU200cからそれぞれ、車速を示すデータフレームと、加速度を示すデータフレームと、ギアの状態を示すデータフレームとが、周期的にバス300へ送信される様子を示している。この例は更に、ある時点で攻撃者により診断ポート2400からIDが0x100の不正なデータフレームが注入(送信)される例を示している。
【0127】
この例では、診断ポート2400から不正なデータフレームが注入されることにより、IDが0x100のデータフレームの受信間隔が80msとなり、侵入検知ルール情報が示す、IDが0x100のデータフレームについての受信間隔及びマージンで規定された条件が、満たされなくなる。このため、監視ECU2100における不正判定では不正と判定されない(つまり異常が検知されない)が、侵入判定では異常が検知される。そして、監視ECU2100は、侵入判定のみで異常が検知されたので、異常対応テーブル(
図18参照)に従って、診断ポート2400の確認をユーザに促す対処処理(予め定められたデータフレームの送信等)を実行する。
【0128】
[2.10 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム11では、監視ECU2100が、互いに異なる複数のIDを有するデータフレームの内容間の関係に基づいて不正を検知する不正判定の他に、単一のIDのデータフレームに関してID毎に定められた条件に基づいて侵入を検知する侵入判定を行う。そして、不正判定結果及び侵入判定結果の組み合わせに応じて、対処処理の内容を決定して、対処処理を実行する。これにより、攻撃者によりECUのファームウェアが不正に書き換えられ、或いは、ECU上で不正なプログラムが実行される等により、正規の送信タイミングで不正な内容のデータフレームが送信されたとしても、IDの相違するデータフレーム間の内容の関係の崩れから、不正なデータフレームの送信が検知され得る。例えば、攻撃者があるECUを支配して不正なデータフレームを送信しても、他のECUが送信するデータフレームとの間での関係に基づいて不正が検知されることから、不正を検知されずに攻撃者が攻撃を行うことが困難となる。更に、攻撃者が外部から不正なデータフレームを注入する場合に対しても適切に検知でき、不正判定結果及び侵入判定結果の組み合わせに応じて、攻撃の状況に応じた適切な対応が可能となる。
【0129】
(実施の形態3)
以下、実施の形態2で示した車載ネットワークシステム11を一部変形してなる車載ネットワークシステム12について説明する。
【0130】
本実施の形態に係る車載ネットワークシステム12における監視ECUは、互いに異なるIDを有するデータフレームの内容間の関係に基づいて不正状態の発生を検知する方法、及び、単一のIDのデータフレームについてID毎に定められたルール(条件)に基づいて不正状態の発生を検知する方法の他に、データフレームに付されたメッセージ認証コード(MAC:Message Authentication Code)の検証の成否を判別する方法を用いて、総合的に対処処理を決定する。
【0131】
[3.1 車載ネットワークシステム12の全体構成]
図22は、車載ネットワークシステム12の全体構成を示す図である。
【0132】
車載ネットワークシステム12は、バス300と、監視ECU3100、センサ等の各種機器に接続されたECU3200a、ECU3200b、ECU3200c、ECU3200d等の各ECUといったバス300に接続された各ノードと、バス300に接続された診断ポート2400とを含んで構成される。車載ネットワークシステム12は、ここで特に説明しない点については実施の形態2で示した車載ネットワークシステム11(
図13参照)と同じであり、車載ネットワークシステム11と同様の構成要素については、
図22において、
図13と同じ符号を付しており、ここでの説明を省略する。
【0133】
監視ECU3100は、実施の形態2で示した監視ECU2100を部分的に変形したものであり、バス300に流れるデータフレームを監視して、不正なデータフレームが送信されたか否かの判定(不正判定及び侵入判定)を行い不正状態の発生を検知する。更に監視ECU3100は、バス300に流れるデータフレームに付されたMACを検証し、MACの検証結果と不正なデータフレームが送信された状況(不正判定及び侵入判定の結果)とに応じて対処処理の内容を決定して、対処処理を行う。
【0134】
ECU3200a、ECU3200b、ECU3200c、及び、ECU3200dは、バス300と接続され、それぞれ速度センサ210、加速度センサ220、ギア230、インパネ240に接続されている。ECU3200aは、周期的に速度センサ210から車両の速度を取得し、取得した速度を示す情報とMACとを含ませたデータフレームを、周期的にバス300へ送信する。ECU3200bは、周期的に加速度センサ220から車両の加速度を取得し、取得した加速度を示す情報とMACとを含ませたデータフレームを、周期的にバス300へ送信する。ECU3200cは、周期的にギア230の状態を取得し、ギア230の状態を示す情報とMACとを含ませたデータフレームを、周期的にバス300へ送信する。ECU200dは、車両の速度を示す情報或いはギアの状態を示す情報を含む各データフレームを受信して、データフレームに付されたMACを検証し、検証に成功した場合(MACが正当であると検証できた場合)に、インパネ240で表示する情報を更新する。
【0135】
監視ECU3100と、ECU3200aと、ECU3200bと、ECU3200cと、ECU3200dとは、共通の秘密鍵を共有し、例えばAES(Advanced Encryption Standard)―CMAC(Cipher-based MAC)アルゴリズムによりMACを生成及び検証する。また、車載ネットワークシステム12においてはCANプロトコルに従って、各ECUがフレームの授受を行う。
【0136】
[3.2 監視ECU3100の構成]
図23は、監視ECU3100の構成図である。監視ECU3100は、フレーム送受信部110と、フレーム処理部120と、不正判定部3130と、侵入判定部3131と、異常対応部3140と、フレーム生成部150と、MAC検証部3500と、MAC生成部3510と、フレーム受信履歴保持部3160と、不正検知ルール保持部170と、侵入検知ルール保持部2171と、不正判定結果保持部3180と、侵入判定結果保持部3181と、ECU情報テーブル保持部190と、異常対応テーブル保持部3191とを含んで構成される。実施の形態1の監視ECU100或いは実施の形態2の監視ECU2100と同様の機能を有する構成要素は、
図23において、
図4或いは
図14と同じ符号を付しており、ここでの説明を省略する。
図23に示した監視ECU3100の各構成要素は、監視ECU3100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で、実現され得る。
【0137】
不正判定部3130は、実施の形態1で示した不正判定部130を部分的に変形したものであり、不正なデータフレームを受信したか否かの判定(不正なデータフレームが送信されたか否かに係る不正判定)を、不正検知ルール保持部170が保持する不正検知ルール情報と、MACの検証結果を含むフレーム受信履歴保持部3160が保持するフレーム受信履歴とに基づいて、所定の単位時間(例えば100ms)を周期として周期的に行う。不正判定部3130は、ここで特に示さない点は、不正判定部130と同様である。不正判定部3130は、不正判定の結果に基づいて、不正判定結果保持部3180が保持する不正判定結果を更新する。また、不正判定部3130は、不正判定の結果として不正と判定された場合(つまり不正状態の発生が検知された場合)に、不正を検知したことを異常対応部3140へ通知する。
【0138】
侵入判定部3131は、外部からバス300に不正なデータフレームが注入されているか否かの判定(不正なデータフレームが注入されたか否かに係る侵入判定)を、侵入検知ルール保持部2171が保持する侵入検知ルール情報と、フレーム受信履歴保持部3160が保持するフレーム受信履歴に基づいて、所定の単位時間(例えば100ms)を周期として周期的に行う。侵入判定部3131は、侵入判定の結果に基づいて、侵入判定結果保持部3181が保持する侵入判定結果を更新する。また、侵入判定部3131は、侵入判定の結果として侵入と判定された場合つまり異常発生が検知された場合に、侵入を検知したことを異常対応部3140へ通知する。
【0139】
異常対応部3140は、不正判定部3130或いは侵入判定部3131から、不正或いは侵入を検知したこと(異常発生)を通知されると、不正判定結果保持部3180に格納されている不正判定結果と、侵入判定結果保持部3181に格納されている侵入判定結果と、ECU情報テーブル保持部190に格納されているECU情報テーブルと、異常対応テーブル保持部3191に格納されている異常対応テーブルとを参照して、異常への対応としての対処処理の内容を決定する。異常対応部3140は、対処処理を決定した場合において、その対処処理の実行のための制御を行う。例えば、異常対応部3140は、MACの検証に成功しているが不正判定結果が異常を示して侵入検知結果が異常を示さない場合において、ECUのファームウェアが不正に書き換えられて認証用の鍵(MAC生成に用いられる秘密鍵)を利用されている可能性が高いので、異常に係るデータフレームの送信元のECUに対して送信すべき診断メッセージの生成を、フレーム生成部150に要求し、更に、他のECUに対して秘密鍵の更新を促すために送信すべき、予め定められた更新用メッセージ(更新用のデータフレーム)の生成を、フレーム生成部150に要求する。
【0140】
MAC検証部3500は、
図24に示すように、MAC生成部3510と、MAC比較部3520とを含んで構成される。MAC生成部3510は、データ処理部3511と、AES暗号化部3512と、秘密鍵保持部3513とを含んで構成される。データ処理部3511は、受信したデータフレームにおいてMACの生成用に用いられることが定められた部分を抽出し(例えばIDとデータフィールドにおけるMAC以外の部分等とを連結し)、AES暗号化部3512の入力サイズに適合するようにパディング等の処理を行う。AES暗号化部3512は、例えば暗号化関数等として実装され、データ処理部3511が処理したデータを、秘密鍵保持部3513が保持する秘密鍵を用いて、暗号化し、暗号化で得られた値の一部をMACとして生成し、MAC比較部3520へ通知する。データ処理部3511は、再送攻撃対策として逐次カウントアップさせるカウンタ値を、暗号化対象のデータに含ませても良い。MAC比較部3520は、MAC生成部3510から通知されたMACと、受信したデータフレームのデータフィールドに含まれるMACと比較して等しいか否かを判断する。MAC検証部3500は、MAC比較部3520の比較により両MACが等しかった場合にMACが正当であったこと(検証に成功したこと)を示す検証結果を、等しくなかった場合にMACが不正であったこと(検証に失敗したこと)を示す検証結果を、出力する。なお、MAC検証部3500によるMACの検証結果は、フレーム送受信部110で受信されたデータフレームの情報と一緒に、フレーム処理部120に通知される。フレーム処理部120では、取得したデータフレームの情報とMACの検証結果とに基づいて、フレーム受信履歴保持部3160に格納されている各データフレームに関する情報(フレーム受信履歴)を更新する。
【0141】
フレーム受信履歴保持部3160は、監視ECU3100が逐次受信したデータフレームに関する情報であってMACの検証結果を含む情報であるフレーム受信履歴(
図25参照)を保持する。
【0142】
不正判定結果保持部3180は、不正判定部3130が、不正検知ルール情報が示すルール(条件)に適合するか否かを判定した結果としての不正判定結果(
図26参照)を保持する。
【0143】
侵入判定結果保持部3181は、侵入判定部3131が、侵入検知ルール情報が示す条件を満たすか否かを判定した結果としての侵入判定結果(
図27参照)を保持する。
【0144】
異常対応テーブル保持部3191は、不正判定結果、侵入判定結果及びMACの検証結果に応じて、不正或いは侵入の発生に対して適切な対処処理の内容を決定するために用いられる異常対応テーブル(
図28参照)を保持する。
【0145】
[3.3 フレーム受信履歴]
図25は、フレーム受信履歴保持部3160が保持するフレーム受信履歴の一例を示す。フレーム受信履歴は、監視ECU3100が過去から現在までに受信したデータフレームの内容及びMACの検証結果に関する情報であり、同図の例では、フレーム受信履歴のうち、3つのIDそれぞれについての、現在(最新)から2回前までに受信されたデータフレームの受信時刻とMACの検証結果とデータフレームの内容が示す特定の値(車速、加速度、ギアの状態のそれぞれを示す値)とを示している。この例は、車速に関する0x100というIDを有するデータフレームのうち、最新のデータフレームの受信時刻が210msであって、MACが正当であって、受信したデータフレームの示す車速の値が18.0km/hであり、1回前の受信時刻が110msであって、MACが正当であって、受信したデータフレームの車速の値が19.2km/hであり、2回前の受信時刻が10msであって、MACが不正であって、受信した値が0.0km/hであったことを示している。また、加速度に関する0x200というIDを有するデータフレームのうち、最新から2回前までに受信したデータフレームの受信時刻がそれぞれ220ms、120ms、20msであって、受信した各データフレームの示す加速度の値がそれぞれ、0.10m/s^2、0.10m/s^2、0.20m/s^2であって、MACは全て正当であったことを示している。また、ギアの状態に関する0x300というIDを有するデータフレームのうち、最新から2回前までに受信したデータフレームの受信時刻がそれぞれ230ms、130ms、30msであって、受信した各データフレームの示すギアの状態の値が、全て「D」(ドライブ)の状態を表すものであって、MACは全て正当であったことを示している。
【0146】
このフレーム受信履歴は、不正判定部3130での不正判定、及び、侵入判定部3131での侵入判定において用いられる。
図25では、最新から2回前に受信したデータフレームの内容が示す値までしか示していないが、フレーム受信履歴は、不正検知ルール情報を用いて不正判定部3130が行う不正判定において必要な情報、及び、侵入検知ルール情報を用いて侵入判定部3131が行う侵入判定において必要な情報を含むように構成され得る。例えば、フレーム受信履歴は、車両の走行の開始時(例えばエンジン始動時)等以降に監視ECU3100が受信した全てのデータフレームの内容を示す情報であり得る。なお、フレーム受信履歴保持部3160は、例えば、加速度の積分値を記憶するための領域を1つ有することとしても良い。
【0147】
[3.4 不正判定結果]
図26は、不正判定結果保持部3180が保持する不正判定結果の一例を示す。同図の例では、不正判定結果は、データフレームの各ID(同図左端)について、そのIDのデータフレームと別のIDのデータフレームとの間の関係に係る条件に基づいて、不正判定部130により不正と判定されたか、否か(適正と判定されたか)を示す。なお、
図26では、不正と判定されたか否かに加えて、その判定に用いられた、不正検知ルール情報におけるルール(条件)についてのルール番号を付記している。この例は、不正判定部3130により、ルール番号1の条件と、ルール番号2の条件とは満たされなかったと判定され(つまり不正と判定され)、ルール番号3の条件は満たされたと判定された(つまり適正と判定された)例を示している。
【0148】
また、不正判定結果には、不正判定部3130により、各IDのフレームについて不正と判定(検知)された数に応じて算定された異常度が付加されている。
図26に示すように、IDが0x100のデータフレームは、ルール番号1の条件で不正と判定された上にルール番号2の条件で不正と判定されているので、異常度が2と算定されている。IDが0x200のデータフレームは、ルール番号1の条件で不正と判定されているが、ルール番号3の条件では不正と判定されていないので、異常度は1と算定されている。IDが0x300のデータフレームは、ルール番号2の条件で不正と判定されているが、ルール番号3の条件では不正と判定されていないので、異常度は1と算定されている。
【0149】
更に、不正判定結果には、不正判定部3130により、ID毎に、そのIDのデータフレームについてのMACの検証結果が不正となった数が付加されている。不正判定部3130は、フレーム受信履歴に基づいて、MACの検証結果が不正となった数をカウントすることで、カウント結果を、不正判定結果にMACの不正回数として付加する。
【0150】
[3.5 侵入判定結果]
図27は、侵入判定結果保持部3181が保持する侵入判定結果の一例を示す。
図27の例では、侵入判定結果は、データフレームの各IDについて、そのIDのデータフレームに係る条件に基づいて、侵入判定部3131により正常(侵入でない)と判定されたか、異常(侵入検知)と判定されたかを示す。
【0151】
更に、侵入判定結果には、侵入判定部3131により、ID毎に、そのIDのデータフレームについてのMACの検証結果が付加されている。侵入判定部3131は、フレーム受信履歴に基づいて、MACの正当性の検証結果を侵入判定結果に付加する。
【0152】
図27の例は、侵入判定部3131により、IDが0x100のデータフレームが正常と判定され、同様にIDが0x200及び0x300の各データフレームが正常と判定されたことを示している。また、この例は、IDが0x100のデータフレームには不正なMACが付加されていたことを示しており、IDが0x200及び0x300の各データフレームには、正当なMACが付加されていたことを示している。
【0153】
[3.6 異常対応テーブル]
図28は、異常対応テーブル保持部3191が保持する異常対応テーブルの一例を示す。この異常対応テーブルに従って、異常対応部3140は、不正判定結果、侵入判定結果及びMACの検証結果(MACが正当か否か)に基づいて、異常への対応としての対処処理の内容を決定する。
図28に示すように、不正判定結果と侵入判定結果とMACの検証結果との組み合わせにより、対応が変化する。異常対応テーブルは、
図28の例では、不正判定結果が正常(例えば異常度が0)であって、侵入判定結果が正常である場合において、MACが正当であったときには、対処処理として特に何もしない(何の対応も行わない)ことを示す。また、この例の異常対応テーブルは、不正判定結果が正常であって侵入判定結果が正常である場合において、MACが不正であったときには、不正なMACを付加したデータフレームの送信元に該当するECUへ診断メッセージを送信することで状況を確認することと、鍵の更新(鍵更新処理)を行うこと(例えばMAC生成用の秘密鍵の更新に係る更新用メッセージを送信すること)とを、対処処理の内容とすることを示す。この対処処理は、MACが不正であったので、ECUにおける秘密鍵の共有、再送攻撃対策として用いるカウンタの同期等に問題がある可能性に鑑みた対応である。なお、各ECUは、更新用メッセージを受信した場合に、鍵の更新、カウンタのリセット等を行うように構成され得る。なお、更新用メッセージを送信してECUに秘密鍵を更新させた場合に、監視ECU3100は、その更新に対応した同様の方法で、秘密鍵保持部3513における秘密鍵を更新する。
【0154】
また、この例の異常対応テーブルは、不正判定結果が異常(例えば異常度が0より大きい)であって侵入判定結果が正常である場合において、MACが正当であったときには、異常なデータフレームの送信元に該当するECUへ診断メッセージを送信することで状況を確認することと、鍵更新処理を行うこととを、対処処理の内容とすることを示す。この対処処理は、外部から不正メッセージ(攻撃のためのデータフレーム)が注入されていないが互いに異なるIDのデータフレームの内容間の関係が崩れていることから該当のECUのファームウェアが不正に書き換えられている可能性があり、MACが正当であることから秘密鍵が漏洩している可能性があるので、これに対応するために有用な処理である。また、この例の異常対応テーブルは、不正判定結果が異常であって侵入判定結果が正常である場合において、MACが不正であったときには、異常なデータフレームの送信元に該当するECUへ診断メッセージを送信することで状況を確認することを、対処処理の内容とすることを示す。この対処処理は、外部から不正メッセージが注入されていないが互いに異なるIDのデータフレームの内容間の関係が崩れていることから該当のECUのファームウェアが不正に書き換えられている可能性があり、MACが不正であることから秘密鍵が漏洩していない可能性が高いと想定されるので、有用な対応である。
【0155】
また、この例の異常対応テーブルは、不正判定結果が正常であって侵入判定結果が異常である場合において、MACが正当であったときには、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことと、鍵更新処理を行うこととを、対処処理の内容とすることを示す。この対処処理は、互いに異なるIDのデータフレームの内容間の関係は崩れていないが、外部から不正メッセージが注入されており、MACが正当であることから、正常なデータフレームを再送する等の攻撃の試行がなされている可能性があるので、これに対応するために有用な処理である。この対処処理における鍵更新処理により、正当なMACを含むデータフレームの外部からの注入を防ぎ得る。また、この例の異常対応テーブルは、不正判定結果が正常であって侵入判定結果が異常である場合において、MACが不正であったときには、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことを対処処理の内容とすることを示す。これは、外部から正常なメッセージを再送する等の攻撃の試行がなされている可能性があるが、秘密鍵が漏洩していない可能性が高いと想定されるので、有用な対応である。ユーザへの通知は、例えば、監視ECU3100から所定IDのデータフレームをバス300に送信し、その所定IDのデータフレームをECU3200dが受信すると予め定められたメッセージをインパネ240に表示するよう制御する等により実現され得る。
【0156】
また、この例の異常対応テーブルは、不正判定結果が異常であって侵入判定結果も異常である場合において、MACが正当であったときには、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことと、各ECUへ異常が発生していることを通知するフレーム(異常通知メッセージ)を送信することと、鍵更新処理を行うこととを対処処理の内容とすることを示す。この対処処理は、外部から不正メッセージが注入されている可能性が高く、秘密鍵も漏洩しており、車両の制御への悪影響が大きいと想定されるので、有用な対応である。また、この例の異常対応テーブルは、不正判定結果が異常であって侵入判定結果も異常である場合において、MACが不正であったときには、診断ポート2400等の外部機器接続用のインタフェースの確認をユーザに促す通知を行うことと、各ECUへ異常通知メッセージを送信することとを、対処処理の内容とすることを示す。これは、外部から攻撃フレームが注入されてECUが支配されている可能性があるが、秘密鍵が漏洩していない可能性が高いと想定されるので、有用な対応である。なお、車載ネットワークシステム12における各ECUは異常通知メッセージを受信した場合に、予め定められたセキュリティ対策(例えば車両を減速させ停止させる等の走行制御、自動走行機能の縮退等)を行うように構成され得る。
【0157】
[3.7 ECU3200aの構成]
図29は、ECU3200aの構成図である。ECU3200aは、フレーム送受信部201と、フレーム処理部202と、機器入出力部203と、フレーム生成部204と、MAC検証部3500と、MAC生成部3510とを含んで構成される。これらの各構成要素は、機能的な構成要素であり、その各機能は、ECU3200aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。なお、ECU3200b、ECU3200c及びECU3200dもECU3200aと概ね同様の構成を有する。
図29において、実施の形態1で示したECU200a(
図9参照)と同様の構成要素については、
図9と同じ符号を付しており、ここでは説明を省略する。また、MAC検証部3500とMAC生成部3510とは、
図24に示す監視ECU3100の構成要素と同様であるので、ここでは説明を省略する。
【0158】
フレーム処理部3202は、フレーム送受信部201により受信され、MAC検証部3500での検証結果として、MACが正当であるとされたデータフレームの内容を解釈する。例えばECU3200aと同様の構成を備えるECU3200dのフレーム処理部3202では、ECU3200a及びECU3200cからそれぞれ送信されるデータフレームに含まれる車速(速度センサ210の情報)、ギアの状態(ギア230の状態の情報)を解釈し、インパネ240の表示の更新等のために必要な情報を、ECU3200dの機器入出力部203に通知する。また、フレーム処理部3202は、例えば、監視ECU3100から診断メッセージであるデータフレームを受信した場合には予め定められた処理を行って診断用情報を、監視ECU3100が受信可能となるようにフレーム送受信部201を介してバス300に送信し得る。
【0159】
[3.8 監視ECU3100の動作]
監視ECU3100は、実施の形態2で示した監視ECU2100と同様に、例えば100ms毎に周期的に不正検知処理(不正判定)及び侵入検知処理(侵入判定)を行う(
図19参照)。但し、フレーム受信履歴には、バス300から受信されたデータフレームにおけるMACの検証結果も格納される。そして、監視ECU3100は、不正判定結果、侵入判定結果及びMACの検証結果に基づいて、異常対応テーブルに従って、対処処理の内容を決定する。そして、監視ECU3100は、決定した内容の対処処理を実行する。
【0160】
[3.9 車載ネットワークシステム12におけるバス300の監視の動作例1]
図30は、車載ネットワークシステム12におけるバス300の監視の動作例1を示す。
【0161】
この例は、ECU3200a、ECU3200b及びECU3200cからそれぞれ、IDが0x100のデータフレーム(車速を示すデータフレーム)と、IDが0x200のデータフレーム(加速度を示すデータフレーム)と、IDが0x300のデータフレーム(ギアの状態を示すデータフレーム)とが、周期的にバス300へ送信される様子を示している。この例は更に、攻撃者によりECU3200aのファームウェアが不正に書き換えられてしまい、ECU3200aは、ある時点から、速度センサ210から通知される車速を改竄して、不正な車速を示すデータフレームをバス300へ送信する例を示している。この例では、秘密鍵は漏洩しており、全てのデータフレームに含まれるMACが正当である状況を想定している。
【0162】
監視ECU3100は、IDが0x300のデータフレームを受信したタイミングの直後から100msの周期で定期的に、不正判定(不正検知処理)を行う。この不正判定を行うタイミングを各単位時間(100ms)の終期であるとすれば、最初の3回の単位時間それぞれでバス300から受信されたデータフレームについては、不正検知ルール保持部170に格納されている不正検知ルール情報が示すルール番号1から3のいずれのルールでも不正は検知されていない。この例の最初の時点で加速度の積分値は20.0km/hであったとする。そのため、加速度の積分値は1回目から3回目までの加速度を示す各データフレームの受信により、20.072、20.144、20.18km/hと順次変化する。監視ECU3100は、3回目に受信した車速のデータフレームが示す車速(18.0km/h)と、加速度のデータフレームが示す加速度に基づく積分値(20.18km/h)の差(変化量)が1.0km/hを超えたので、ルール番号1のルール(条件)が満たされずに不正を検知する。更に、監視ECU3100は、受信したデータフレームが示すギアの状態が「D」(ドライブ)である場合において、速度の変化量(3回目に受信した車速のデータフレームが示す車速18.0km/hと前回受信したデータフレームが示す車速19.6km/hとの差)が1.0km/hを超えたので、ルール番号2の不正を検知する。これにより、監視ECU3100は、不正判定結果が異常であり、侵入判定結果が正常であり、かつ、MACの検証結果が正当であることから、異常対応テーブルに従って、該当ECUへの診断メッセージの送信及び鍵更新処理を対処処理の内容として決定して、対処処理を行う。即ち、監視ECU3100は、2つのルール(条件)を満たさないことで異常度が最も高く2と算定された、IDが0x100のデータフレームの送信元を、ECU情報テーブル保持部190が保持するECU情報テーブルを参照することにより、ECU3200aであると特定し、ECU3200aに対して、診断メッセージを送信する。また監視ECU3100は、各ECUに対して鍵更新処理を促す通知(秘密鍵の更新に係る更新用メッセージの送信)を行う。
【0163】
[3.10 車載ネットワークシステム12におけるバス300の監視の動作例2]
図31は、車載ネットワークシステム12におけるバス300の監視の動作例2を示す。
図31の動作例2は、監視ECU3100の動作例1と似たような状況であるが、秘密鍵の漏洩はしておらず、ECU3200aの送信するデータフレームに含まれるMACが不正となっている例を示している。この例では、監視ECU3100は、不正判定結果が異常であり、侵入判定結果が正常であり、かつ、MACの検証結果が不正であることから、異常対応テーブルに従って、該当ECU(つまりECU3200a)への診断メッセージの送信を対処処理の内容として決定して、対処処理を行う。
【0164】
[3.11 実施の形態3の効果]
実施の形態3に係る車載ネットワークシステム12では、監視ECU3100が、互いに異なる複数のIDを有するデータフレームの内容間の関係に基づいて不正を検知する不正判定と、単一のIDのデータフレームに関してID毎に定められた条件に基づいて侵入を検知する侵入判定と、MACの正当性の検証結果との組み合わせに応じて、対処処理の内容を決定して、対処処理を実行する。これにより、攻撃者によりECUのファームウェアが不正に書き換えられ、或いは、ECU上で不正なプログラムが実行される等により、正規の送信タイミングで不正な内容のデータフレームが送信されたとしても、IDの相違するデータフレーム間の内容の関係の崩れから、不正なデータフレームの送信が検知され得る。例えば、攻撃者があるECUを支配して不正なデータフレームを送信しても、他のECUが送信するデータフレームとの間での関係に基づいて不正が検知されることから、不正を検知されずに攻撃者が攻撃を行うことが困難となる。更に、攻撃者が外部から不正なデータフレームを注入する場合に対しても適切に検知でき、不正判定結果、侵入判定結果及びMACの検証結果の組み合わせに応じて、攻撃の状況に応じた適切な対応が可能となる。
【0165】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1〜3を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0166】
(1)上記実施の形態では、バス300の監視と監視結果に応じた対処を行う監視ECUについて説明したが、監視ECUは、車載ネットワークシステムにおいてバスに接続されたECUであれば、監視専用のECUである必要はなく、監視及び対処とは異なる機能を併せ持っても構わない。また、例えば監視ECUにおける1つ以上の構成要素を他のECUに移動させても良い。例えば、監視ECUにおける不正判定のための構成(不正判定部等)、侵入判定のための構成(侵入判定部等)等を他のECUに含ませても良い。例えば、車載ネットワークを複数のバスで構成した場合におけるバス間でのデータフレームの転送を行うゲートウェイECUが、不正判定部を有することとしても良いし、秘密鍵の管理を行う鍵管理マスタECUが不正判定部、侵入判定部、MAC検証部等を有することとしても良い。
【0167】
(2)上記実施の形態では、CANプロトコルにおけるデータフレームを標準IDフォーマットで記述しているが、拡張IDフォーマットであっても良く、データフレームの識別子であるIDは、拡張IDフォーマットでの拡張ID等であっても良い。
【0168】
(3)上記実施の形態では、監視ECUが、例えば100msの周期で定期的に、不正検知処理(不正判定)及び侵入検知処理(侵入判定)を行う例を示したが、周期は任意であり、また必ずしも周期的に行う必要はない。例えば、監視ECUは、データフレームを受信する毎に、不正判定或いは侵入判定を行うこととしても良い。また、不正判定と侵入判定とはそれぞれ別のタイミングで実行されても良い。
【0169】
(4)上記実施の形態で示したフレーム受信履歴保持部は、フレーム受信履歴として、何回分の受信履歴を保持しても良い。また、フレーム受信履歴保持部は、実際に受信されたデータフレームの情報に基づくデータ補間によって、実際には受信されていない時刻の受信履歴としての情報を、フレーム受信履歴として保持することとしても良い。
【0170】
(5)上記実施の形態では、フレーム受信履歴保持部が、フレーム受信履歴として、受信時刻、MACの正当性の検証結果、データフィールドの内容が示す値等を保持する例を示したが、この他の情報を保持することとしても良い。フレーム受信履歴保持部は、不正検知処理(不正判定)或いは侵入検知処理(侵入判定)に必要な任意の情報を保持すれば良い。また、データフィールドの内容が、複数の値を表すような場合において、各値を区別して保持することとしても良く、監視ECUでは、その各値に関連した条件を示す不正検知ルール情報或いは侵入検知ルール情報を用いた不正判定或いは侵入判定を行うこととしても良い。
【0171】
(6)上記実施の形態では、不正検知ルール情報が示すルール(条件)として、速度(車速)と加速度との関係に係る条件と、ギアの状態と車速の変化量との関係に係る条件と、ギアの状態と加速度の変化量との関係に係る条件とを例示したが、これは一例に過ぎない。正常時において、互いに異なるIDの複数のデータフレームが示すデータの間で、一定の関係が保たれるものであれば何でも良い。特にセンサにより測定されたデータ間の関係を用いることが有用である。また、データフィールドが示すデータの値の間の関係のみならず、不定期に送信される複数のデータフレームがバスに流れる時刻についての関係等といったデータフレームの受信時刻の関係等を、不正判定のための条件として加えることとしても良い。また、不正検知ルール情報は、例えば、条件として、一のIDを有するデータフレームのデータフィールドの内容が示す値yと、他のIDを有するデータフレームのデータフィールドの内容が示す値xとの関係を示す関係式y=f(x)等の一定誤差の範囲内に収まっていることを示すものであっても良い。
【0172】
(7)上記実施の形態では、不正検知ルール情報が示すルール(条件)として、IDが0x200の複数のデータフレームのデータフィールドの内容に基づいて特定される、加速度の積分値と、IDが0x100の1つのデータフレームのデータフィールドの内容が示す車速との関係に係る条件(目的変数と説明変数との関係に係る条件)等を例示したが、この関係は一例に過ぎない。以下、不正検知ルール情報が、あるID(第1識別子)を有するデータフレームである第1種フレームと、その第1識別子とは異なるID(第2識別子)を有するデータフレームである第2種フレームとの、データフィールドの内容の関係についての条件を示す例を挙げて、関係の例について説明する。不正検知ルール情報が示す条件は、例えば、1つ以上(或いは複数)の第1種フレームにおけるデータフィールドの内容に基づいて特定される値と、1つ以上の第2種フレームのデータフィールドの内容との関係を規定する。第1種フレームにおけるデータフィールドの内容に基づいて特定される値は、数値でも良いし、大、中、小等の程度を示す値でも、状態を区別する文字列等であっても良い。例えば、不正検知ルール情報が示す条件は、1つ以上の第1種フレームにおけるデータフィールドの内容と、1つ以上の第2種フレームのデータフィールドの内容との関係を、ピアソンの積率相関係数、最大情報係数、又は、正準相関係数を用いた関係式で規定するものであっても良い。例えば、車速と加速度との各時系列データに対して、線形関係の強弱を表す指標としての相関係数(ピアソンの積率相関係数)を求めることによって、その相関係数の高さについての条件を規定しても良いし、非線形の関係も表せる指標としての最大情報係数の高さについての条件を規定しても良いし、多変量データにおいて多数の変数が2つの変数群を構成するときに変数群間の相互関係を表す指標としての正準相関係数の高さについての条件を規定しても良い。なお、車速と加速度との各時系列データに対する相関係数等を求める他に、車速とタイヤの回転数との各時系列データに対する相関係数等を求めることで条件を規定しても良いし、車速とタイヤの回転数との関係式を求めることで条件を規定しても良い。また、相関係数、関係式等に基づいて不正検知ルール情報における条件を規定する対象となる数量としては、例えば、加速度と車速の変化量との組、アクセルの変位と車速の変化量との組、ブレーキの変位と車速の変化量との組、ステアリング角度(操舵角)とヨーレートとの組等が挙げられる。
【0173】
(8)上記実施の形態では、不正判定部が、バスから受信されたデータフレームについての情報(フレーム受信履歴)に基づいて、不正検知ルール情報が示す条件が満たされるか否かを判定することとした。この判定(不正判定)は、不正検知ルール情報が示す条件に応じて、任意の具体方法で実現され得る。この不正判定は、例えば、1つ又は複数の単位時間それぞれにおいてバスから受信された、上述の各第1種フレームにおけるデータフィールドの内容に基づく第1値と、その1つ又は複数の単位時間のうち最後から1つ以上の単位時間それぞれにおいてバスから受信された、上述の各第2種フレームにおけるデータフィールドの内容に基づく第2値とを用いて、不正検知ルール情報が示す条件が満たされるか否かを区別する所定演算処理を実行することにより、実現される。ここで、所定演算処理は、少なくとも第1値と第2値とを用いて不正検知ルール情報が示す条件が満たされるか否かを区別する演算処理であれば、いかなる演算処理であっても良い。所定演算処理は、例えば、質的変数の値毎に量的変数の値の範囲を規定した基準に基づいて、第2値を質的変数の値として用いて算定される量的変数の値の範囲に第1値が該当するか否かにより、不正検知ルール情報が示す条件が満たされるか否かを区別する処理であり得る。例えば第1値は、センサにより測定された物理量等に関連する値(車速、車速の変化量等)であり得る。また、第2値は、車両の状態を示すフラグ値(ギアの状態を示すフラグ値、車線維持機能の作動状態を示すフラグ値、自動駐車支援機能の作動状態を示すフラグ値、クルーズコントロール機能の作動状態を示すフラグ値等)であり得る。また、所定演算処理は、例えば、目的変数と説明変数との関係を示す関係式に基づいて、第1値を説明変数の値として用いて算定される目的変数の値の範囲に第2値が該当するか否かにより、不正検知ルール情報が示す条件が満たされるか否かを区別する処理であっても良い。この第1値と第2値とは、例えば、因果関係を有する物理事象に関する値である。
【0174】
(9)上記実施の形態では、不正検知ルール情報が示す条件として、2種(2つの異なるID)のデータフレームの内容間の関係を用いていたが、2種に限られることはなく、3種以上(3つ以上のID)のデータフレームの内容間の関係を用いても良い。例えば、不正検知ルール情報は、同じ単位時間内で受信された3つ以上の異なる所定IDのデータフレームの内容が示す各値に基づく所定の演算(例えば算術演算、論理演算等)の結果が所定の閾値を超えること等といった条件を示すものであっても良い。
【0175】
(10)上記実施の形態では、不正判定部が算定した異常度が最も高いIDのデータフレームを送信するECUを特定して、そのECUに対する診断メッセージを送信する等の対処処理を実行する例を示したが、異常度について閾値を設けて、閾値以上の異常度であるIDのデータフレームを送信するECUを特定し、そのECUに対する診断メッセージを送信する等の対処処理を実行することとしても良い。
【0176】
(11)上記実施の形態では、監視ECUの不正判定部が、異常度を算定して不正判定結果に付加する例を示したが、必ずしも異常度を算定しなくても良い。監視ECUは、異常度を算定しない場合において、不正と判定された複数のデータフレームそれぞれの送信元のECUに、診断メッセージを送信することで診断を行うこととしても良い。なお、異常度の算定により、不正検知ルール情報が示す条件を満たさないことで不正と判定された複数のデータフレームそれぞれの送信元のECUのうち、診断メッセージを送信する対象を絞り込むことは、バストラフィック量の増大抑制等のために有用である。不正検知ルール情報が、あるID(第1識別子、例えば0x100というID)を有するデータフレームである第1種フレームと、第1識別子とは異なるID(第2識別子、例えば0x200というID)を有するデータフレームである第2種フレームとの、データフィールドの内容の関係についての第1条件(例えば
図6に示すルール番号1の条件)を示し、更に、その第1種フレームと、第1識別子とも第2識別子とも異なるID(第3識別子、例えば0x300というID)を有するデータフレームである第3種フレームとの、データフィールドの内容の関係についての条件である第2条件(例えば
図6に示すルール番号2の条件)を示している場合については、不正判定において第1条件及び第2条件のうち満たされないと判定された条件の数に応じて第1種フレームの送信に関する異常度が算定され得る。そして、算定された異常度が所定異常条件(例えば閾値より高い、或いは別途算定された他種のフレームの送信に関する異常度より高い等)を満たす場合に、第1種フレームを送信するECUが受信可能となるように所定フレーム(診断メッセージ等)を送信することで、バストラフィック量の増大抑制等が実現され得る。
【0177】
(12)上記実施の形態では、監視ECUは、ID間を関係付けたテーブルの形式で、不正判定結果を保持する例を示したが、不正判定部が、バスから受信されたフレームの集合が不正検知ルール情報に示される条件を満たすか否かを判定した際に、判定結果を示す何らかの情報(例えばルール番号とそのルール番号に係る条件による判定結果との組を示す情報等)が、監視ECUが備えるメモリ、ハードディスク等といった記憶媒体に記憶されれば十分であり、いかなる形式で情報が保持されても良い。不正判定部により不正判定が行われると、記憶媒体にその判定結果を示す何らかの情報が格納されることになる。
【0178】
(13)上記実施の形態では、侵入検知ルール情報が示す条件として、単一IDのデータフレームに関する受信間隔及びデータの変化量に係る条件を例示したが、これは一例に過ぎず、他の条件であっても良く、例えば受信頻度(一定時間内にその単一IDを有するデータフレームが受信される数等)に係る条件であっても良い。侵入検知ルール情報が示す条件としては、正常なデータフレームが満たすべき条件が規定される。そして、攻撃のためのデータフレームが外部から注入されて、不正なデータフレームと正常なデータフレームとの両方がバスに流れる状態となった場合には、その条件が満たされなくなるように、条件が規定されることが有用となる。
【0179】
(14)上記実施の形態では、侵入判定結果保持部が、ID毎に、正常か、異常(侵入検知)かを区別する侵入判定結果を保持する例を示したが、侵入判定結果はこれに限られず、例えば、IDを区別せずに一定期間内に正常と判定された数或いは異常と判定された数等を、侵入判定結果としても良い。侵入判定結果は、侵入検知ルール情報に基づく侵入判定の結果に関連した情報であれば良く、これにより、監視ECUでは、侵入検知ルール情報に基づく侵入判定結果と不正検知ルール情報に基づく不正判定結果との組み合わせに基づいて、異常に対応する対処処理を決定し得る。
【0180】
(15)上記実施の形態では、MACの生成にAES−CMACを用いる例を示したが、MACの生成方法はこれに限らない。例えばAES以外のブロック暗号を用いても良いし、HMAC(Hash-based Message Authentication Code)等を用いても良い。
【0181】
(16)上記実施の形態では、MACの生成のために、IDとデータフィールドの値とを、AES暗号化部(例えば暗号化関数)の入力としたが、入力値はこれに限らない。例えばデータフィールドの値のみを入力としても良いし、DLCを入力に含めても良い。また再送攻撃対策として、カウンタ値の他に、時刻情報等をその入力に含めても良い。
【0182】
(17)上記実施の形態では、不正判定結果に応じた対応、或いは不正判定結果と侵入判定結果との組み合わせ等に応じた対応(対処処理の内容)として、該当ECUへの診断メッセージの送信、認証用の鍵の更新(鍵更新処理)、診断ポート等の確認をユーザへ促す通知、各ECUへの異常通知メッセージの送信等を例示した。しかし、対処処理の内容は、上述した以外のものであっても良い。対処処理は、例えば、バスに接続された特定のECUが受信可能となるように診断用のフレームを送信すること、バスに接続された特定のECUの正当性をチャレンジレスポンス認証により確認すること、バスにおける診断ポートの確認を促すための通知を行うこと、車載ネットワークシステムを搭載する車両の運転者に停車又は徐行を促すための通知を行うこと、車載ネットワークシステムを搭載する車両の運転者にディーラへ行くことを促すための通知を行うこと、車載ネットワークシステムを搭載する車両の運転者に不正状態が発生していることの通知を行うこと、バスに接続されたECUに、特定のID(識別子)を有するデータフレームが不正であることの通知を行うこと、車載ネットワークシステムを搭載する車両の外部のサーバ(例えば車両製造メーカ等が運用するサーバ等)に、不正なデータフレームが送信されていることの通知を行うこと、車載ネットワークシステムを搭載する車両の近隣の車両又は路側機へ、不正状態が発生していることの通知を行うこと、車載ネットワークシステムを、診断ポートの遮断、自動制御機能の縮退等を含み得る、予め定めたフェールセーフモードに切り替えること、不正状態が発生したことをログとして記録すること等であっても良い。監視ECUは、上述した対処処理のいずれか1つ以上を、不正判定部が算定した異常度が所定異常条件を満たす場合(例えば閾値を超える等の場合)に実行し得る。また、監視ECUは、不正判定部が算定した異常度の高さを反映するように対処処理の内容を変更しても良い。
【0183】
(18)上記実施の形態では、監視ECUは、不正判定部での判定(不正判定)の結果(不正判定結果)と、侵入判定部での判定(侵入判定)の結果(侵入判定結果)と、MAC検証部での認証子(MAC)の正当性の検証結果との組み合わせに応じて、対処処理の内容を決定し、一定条件下で(例えば不正判定結果或いは侵入判定結果が異常でMACが正当の場合に)、認証用の鍵の更新に関する鍵更新処理を対処処理として決定して実行することとした。更に、監視ECUは、鍵更新処理を実行した後において、バスから受信されたデータフレームについて、不正判定、侵入判定、及び、MACの検証を行い、その不正判定結果と侵入判定結果と検証結果との組み合わせが所定条件を満たす場合(例えばMACが正当であるが不正判定結果或いは侵入判定結果が異常な状態が継続しているような場合等)に、鍵更新処理とは異なる対処処理(ユーザへの危険状態の通知、サーバへの通知等)を行うこととしても良い。この鍵更新処理とは異なる対処処理は、鍵の更新が有効に作用しなかった場合等において有用となり得る。
【0184】
(19)上記実施の形態では、不正検知ルール保持部が、互いに異なるIDのデータフレームの内容間の関係に係る条件を示す不正検知ルール情報を保持している例を示したが、不正検知ルール情報は、バスを流れるデータフレームを監視及び分析して学習した結果を用いて随時更新されることとしても良い。バスを流れる各IDのデータフレームの内容についての情報を集積して統計処理、多変量解析等を行うことで、互いに異なる複数のIDのデータフレームの内容間の相関係数を求めて、予め定められた閾値以上の相関係数の値になる、データフレームの内容間の関係を、満たされるべき新たな条件として不正検知ルール情報に含ませても良いし、例えば説明変数と目的変数との関係式等の推定のための回帰分析、重回帰分析、判別分析等で得られた説明変数と目的変数との関係を、条件として不正検知ルール情報に含ませても良い。即ち、監視ECUは、バスから受信されたデータフレームの集合に基づく多変量解析により、相互に異なるIDを有するデータフレーム同士の間でのデータフレームの内容の関係を特定し、特定した関係を表す条件を示すように不正検知ルール情報を生成又は更新することとしても良い。
【0185】
(20)上記実施の形態では、MACの検証結果に基づいて、不正判定部が不正判定結果にMACの不正回数を付加し、侵入判定部が侵入判定結果にMACの正当性を付加することとしたが、不正判定結果及び侵入判定結果にMACの検証結果に基づく情報を含まなくても良い。異常対応部は、例えばフレーム受信履歴保持部が保持するフレーム受信履歴からMACの検証結果を取得し得る。なお、不正判定部がMACの検証結果を踏まえて不正判定結果を特定することとした場合においては、その不正判定結果は、異常対応部が各種対応を行う際に活用され得る。
【0186】
(21)上記実施の形態では、監視ECUは、不正判定結果或いは侵入判定結果が異常でありMACの検証結果としてMACが正当であった場合に、鍵が漏洩している可能性に鑑みて鍵更新処理を対処処理として実行する例を示したが、検証結果としてMACが正当であった回数に基づいて、鍵更新処理を対処処理の内容とするか否かを区別しても良い。監視ECUは、不正判定結果或いは侵入判定結果が異常である場合において、例えば、予め定められた回数NだけMACの検証が成功したときに、鍵が漏洩している可能性が高いので、鍵更新処理を実行することとしても良い。なお、この回数Nとしては、例えば、逐次ランダムな値をMACとして付加したデータフレームが逐次送信された場合に、N回の検証においてMACが正当であると判定される確率が十分低くなるような回数を、設定することが有用となる。
【0187】
(22)上記実施の形態では、監視ECUは、不正判定結果と侵入判定結果とMACの検証結果との組み合わせ等に応じて対応処理の内容を決定(選定)して実行する例を示した。不正判定結果と侵入判定結果とMACの検証結果との組み合わせによれば、不正状態(特定IDのデータフレームの異常、異常度の高いデータフレーム、異常の可能性の高いECU、異なるIDのデータフレーム間の関係の異常等)を複数に類別してそれぞれに適切な対応を行うことが可能となる。監視ECUは、不正判定結果と侵入判定結果とMACの検証結果とのいずれか1つ以上を用いて、対処処理の決定を行っても良いし、更に、攻撃範囲を区別し、その区別も利用して、適切な対処処理を決定することとしても良い。例えば、監視ECUは、不正状態が発生したと検知した場合において、その不正状態の発生に関係があったデータフレームが送信されたサブネットワークと、そのフレームを送信するECUと、そのデータフレームのIDとのいずれかを特定し、特定に際してその特定したものをメモリ等の記憶媒体に記録することとしても良い。この特定されたサブネットワーク、ECU、ID等を、上述の不正判定結果と侵入判定結果とMACの検証結果と合わせて用いる等により、不正状態(異常)の詳細の把握(例えばIDに基づいて、運転支援機能等といった特定機能に関わるデータフレームのグループでの異常発生の把握等)が可能となり、このような不正状態に係る情報の収集は、攻撃目的、攻撃範囲等の特定において有用となり得る。
【0188】
(23)上記実施の形態では、不正検知ルール情報が示す条件に係る互いに異なる2つのIDのデータフレームの各送信元のECUが相違する例(
図12等参照)を示したが、これは一例に過ぎない。1つのECUが、互いに異なる複数のIDのデータフレームを送信することもあり得るので、同一のECUが送信する複数のIDのデータフレームの内容間の関係についての条件を不正検知ルール情報が示すようにしても良い。これにより、例えば攻撃者が不正なプログラムによりECUが送信するデータフレームを改竄したことで、同一のECUが送信する他のIDのデータフレームとの関係が崩れたような場合において、不正状態の発生が検知され得る。
【0189】
(24)上記の実施の形態では、CANプロトコルに従って通信する車載ネットワークを示した。このCANプロトコルは、CANFD(CAN with Flexible Data Rate)等の派生的なプロトコルも包含する広義の意味のものと扱われるべきである。また、車載ネットワークにおいては、CANプロトコル以外の通信プロトコル、例えば、Ethernet(登録商標)、LIN(Local Interconnect Network)、MOST(登録商標)(Media Oriented Systems Transport)、FlexRay(登録商標)等を用いても良い。また、これらの各プロトコルが用いられるサブネットワークを組み合わせて車載ネットワークを構成しても良い。
【0190】
(25)上記実施の形態で示した各種処理の手順(例えば
図11、
図19に示した手順等)の実行順序は、必ずしも、上述した通りの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。
【0191】
(26)上記実施の形態における監視ECUその他のECUは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等のハードウェア構成要素を含んでいても良い。また、上記実施の形態で示した各装置(監視ECU等)は、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
【0192】
(27)上記実施の形態における各装置を構成する構成要素の一部又は全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【0193】
(28)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【0194】
(29)本発明の一態様としては、例えば
図11、
図19等に示す処理手順の全部又は一部を含む不正検知方法であるとしても良い。例えば、不正検知方法は、バスを介して通信を行う複数のECUを備える車載ネットワークシステムにおいて不正状態が発生したことを検知するための不正検知方法であって、第1識別子を有するフレームと、第1識別子とは異なる識別子を有するフレームとの内容の関係についての条件である第1条件を示す不正検知ルール情報を用いて、バスから受信されたフレームの集合が第1条件を満たすか否かを判定し、第1条件が満たされない場合に不正状態が発生したと検知する方法である。例えば、この複数のECUは、バスを介してCANプロトコルに従ってデータフレームの授受を行い、不正検知ルール情報は、ID(第1識別子)を有するデータフレームである第1種フレームと、第1識別子とは異なるID(第2識別子)を有するデータフレームである第2種フレームとの、データフィールドの内容の関係についての第1条件を示し、不正検知方法は、バスに接続された監視ECUが、バス上に送信されたデータフレームを逐次受信する受信ステップと、受信ステップで受信された第1種フレーム及び第2種フレームが、不正検知ルール情報が示す第1条件を満たすか否かを判定する不正判定ステップ(例えばステップS1102、S2102)とを含むこととしても良い。また、不正判定ステップでは、第1種フレーム及び第3種フレーム(第1識別子とも第2識別子とも異なるIDを有するデータフレーム)の内容間の関係に係る第2条件を満たすか否かを判定することとしても良く、不正検知方法は、第1条件及び第2条件のうち不正判定ステップで満たされたと判定された条件の数に応じて第1種フレームの送信に関する異常度を算定する異常度算定ステップ(例えばステップS1103)を含むこととしても良い。不正検知方法は、異常度算定ステップにより算定された異常度が所定異常条件を満たす場合に、第1種フレームを送信するECUが受信可能となるように監視ECUが所定フレーム(例えば診断用のフレーム)を送信する送信ステップ(例えばステップS1104〜S1106)を含んでも良い。また、不正検知方法は、データフレームのID(識別子)毎に定められるデータフレームについての条件を示す侵入検知ルール情報を用いて、受信ステップでバスから受信されたデータフレームが、侵入検知ルール情報が示す該当の条件を満たすか否かを判定する侵入判定ステップ(例えばステップS2103)と、不正判定ステップでの判定結果と侵入判定ステップでの判定結果との組み合わせに応じて対処処理の内容を決定し、決定に従って対処処理を実行する対処ステップ(例えばステップS2104、S2105)とを含んでも良い。また、不正検知方法は、バスから受信されたデータフレームにおける認証用の認証子の正当性を検証する検証ステップを含んでも良い。なお、不正判定ステップ、異常度算定ステップ及び侵入判定ステップでの処理の少なくとも一部は、監視ECU以外の装置(例えば監視ECUと通信可能な車両外部のサーバ或いは他のECU等)で実行するようにしても良い。また、本発明の一態様としては、この不正検知方法に係る処理をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【0195】
(30)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。