本発明の一態様に係る不正制御抑止方法は、制御対象に対して所定制御を指示する制御フレームを含む複数のフレームの授受を通信路を介して行う複数の電子制御ユニットを備えるネットワークシステムにおける不正制御抑止方法であって、前記通信路から複数のフレームを逐次受信する受信ステップと、前記受信ステップで受信された制御フレームに基づく前記所定制御を抑止すべきか否かを、当該制御フレームの受信時に先行する所定期間内に前記受信ステップで受信されたフレームの集合に基づいて、判定する判定ステップとを含む不正制御抑止方法である。これにより、所定期間内に受信されたフレームの集合から、その所定期間における制御対象が異常状態であるか否か等の特定が可能となるので、制御フレームによる制御を抑止すべきか否かの判定を適切に行うことが可能となり得る。
また、前記複数のフレームには、前記制御対象の状態に関する情報を含む状態フレームが含まれ、前記判定ステップでは、前記受信ステップで受信された制御フレームに基づく前記所定制御を抑止すべきか否かを、当該制御フレームの受信時に先行する所定期間内に前記受信ステップで受信された状態フレームの集合に基づいて特定される、当該所定期間における前記制御対象の状態が、所定基準を満たすか否かに基づいて、判定することとしても良い。例えば、車両等といった制御対象の偽装状態を捉えるように所定基準を定めておく。これにより、攻撃者が、制御対象の状態を偽装する前準備をした上で制御対象を制御するための不正な制御フレームを送信した場合において、その不正な制御フレームによる制御を抑止すべきと適切に判定することが可能となり得る。
また、前記判定ステップでは、前記所定期間内に前記受信ステップで受信された状態フレームの集合に、異常な状態フレームが含まれている場合に前記制御対象の状態を偽装状態であると特定し、異常な状態フレームが含まれていない場合に前記制御対象の状態を偽装状態でないと特定し、前記所定基準は、特定される前記制御対象の状態が、偽装状態である場合に満たされ、前記制御対象の状態が偽装状態でない場合に満たされず、前記判定ステップでは、前記所定基準が満たされた場合に前記所定制御を抑止すべきと判定することとしても良い。異常な状態フレームは、例えば、通常とり得る値とは異なる値を示すデータを含む状態フレームである。これにより、攻撃者が、制御対象の状態を偽装して制御対象を制御するための不正な制御フレームを送信した場合にその不正な制御フレームの抑止が可能となる。
また、前記判定ステップでは、前記所定期間内に前記受信ステップで受信された状態フレームの集合に、所定閾値より短い受信間隔で受信された、前記所定制御の実行のために用いられる同一項目の情報を示す複数の状態フレームが含まれている場合に、当該集合に異常な状態フレームが含まれているとして、前記制御対象の状態を偽装状態であると特定することとしても良い。これにより、予め定められている状態フレームの送信間隔のマージンを踏まえて適切に所定閾値を定めておくことにより、偽装状態の特定を適切に行うことが可能となる。例えば、所定制御が車両のハンドル制御である場合に、そのハンドル制御の実行のために用いられる目標操舵角を示す状態フレームが、そのマージンに基づく所定閾値より短い受信間隔で複数受信された場合等に、車両等といった制御対象の状態を偽装状態であると特定し得る。このため、不正な所定制御の抑止を適切に行うことが可能となる。
また、前記判定ステップでは、前記所定期間内に前記受信ステップで受信された状態フレームの集合に、前記所定制御の実行のために用いられる同一項目の情報を示す状態フレームが所定数より多く含まれている場合に、当該集合に異常な状態フレームが含まれているとして、前記制御対象の状態を偽装状態であると特定することとしても良い。これにより、状態フレームが冗長に送信されているような偽装状態を適切に特定できるようになる。
また、前記判定ステップでは、前記所定期間内に前記受信ステップで受信された状態フレームの集合に、前記所定制御の実行のために用いられる同一項目の情報を示す2つの状態フレームが含まれ、当該2つの状態フレームが示す当該情報の値の差異が所定量より大きい場合に、当該集合に異常な状態フレームが含まれているとして、前記制御対象の状態を偽装状態であると特定することとしても良い。これにより、制御対象の真の状態を表す値の状態フレームと、攻撃者により送信された、その真の状態とは異なる偽の状態を表わす状態フレームとが混在する場合に、状態フレームが示す情報の値が所定量より大きく変化し得るので、このような偽装状態を適切に特定できるようになる。
また、前記判定ステップでは、前記所定期間内に前記受信ステップで受信された状態フレームの集合に、前記所定制御の実行のために用いられる同一項目の情報を示す複数の状態フレームが含まれ、受信された順に並べた当該複数の状態フレームが示す当該情報の値が所定規則に従っていない場合に、当該集合に異常な状態フレームが含まれているとして、前記制御対象の状態を偽装状態であると特定することとしても良い。これにより、例えば、車両の状態が第3状態に変化する前においては第1状態、第2状態をこの順に経るという所定規則を定めていたような場合には、車両状態が第1状態であることを示す状態フレームの次に第3状態であることを示す状態フレームが受信されると、偽装状態であると特定される。このため、例えば制御対象としての車両等の仕様に対応して適切に所定規則を定めておくことにより、適切に偽装状態の特定を行うことが可能となる。
また、前記所定基準は、前記所定期間における前記制御対象の状態が、安定状態でない場合に満たされ、安定状態である場合に満たされず、前記安定状態は、前記制御対象の状態を示す特定の状態フレームのデータ値がある一定値或いは一定範囲内である状態であり、前記判定ステップでは、制御フレームに基づく前記所定制御に係る前記判定を、当該制御フレームの受信時に連続する当該受信時の直前の前記所定期間内に前記受信ステップで受信された状態フレームの集合に基づいて特定される、当該所定期間における前記制御対象の状態に基づいて、行ない、前記判定ステップでは、前記所定基準が満たされた場合に前記所定制御を抑止すべきと判定することとしても良い。これにより、攻撃者が、不正な制御フレームの送信の前に、制御対象の状態を偽装する状態フレームを送信して、制御対象の状態が安定状態から外れている場合には、その不正な制御フレームによる制御を抑止すべきと適切に判定することが可能となり得る。
また、前記所定基準は、前記所定期間における前記制御対象の状態が、所定回数を超えて変化する変化多発状態である場合に満たされ、変化多発状態でない場合に満たされず、前記判定ステップでは、前記所定基準が満たされた場合に前記所定制御を抑止すべきと判定することとしても良い。この変化は、例えば、状態を量的に表した場合において一定量を超えた変化、或いは、状態を複数区分に分けて表した場合において区分が変わる変化等である。これにより、正常に送信されたフレームと攻撃者により送信されたフレームとが交互にネットワークの通信路に現れること等によって、瞬間ではなく所定期間において見ればそれらのフレームが示す情報に不整合が生じている状態が生じている場合において、攻撃者に送信された不正な制御フレームによる制御を抑止すべきと適切に判定することが可能となり得る。
また、前記不正制御抑止方法は更に、前記判定ステップで制御フレームに基づく前記所定制御を抑止すべきと判定された場合に、前記所定制御の抑止のための所定処理を実行する処理ステップを含み、前記所定処理は、当該制御フレームを破棄する処理、前記通信路上で当該制御フレームを上書きする処理、他の通信路への当該制御フレームの転送を抑止する処理、及び、前記電子制御ユニットに当該制御フレームに基づく前記所定制御を実行させないように指示する処理のいずれか1つを含むこととしても良い。これにより、攻撃者に送信された不正な制御フレームに基づく所定制御が適切に抑止され得る。
また、前記制御対象は、前記ネットワークシステムを搭載する車両であり、前記通信路は、前記車両における有線通信路であり、前記複数の電子制御ユニットは、CANプロトコル又はEthernet(登録商標)プロトコルに従って、前記複数のフレームの授受を行うこととしても良い。これにより、車載ネットワークのセキュリティの確保が可能となる。
また、前記所定制御は、前記車両の走行に関わる制御であることとしても良い。また、前記受信ステップでは、車速、車輪の回転速度、ヨーレート、加速度、操舵角、アクセルペダル開度、制動レベル、エンジンの回転数、モータの回転数、ギアポジション、及び、イグニッションスイッチの状態のいずれか1つについての情報を含むフレームである状態フレームを逐次受信することとしても良い。これにより、車両の走行を支配するための攻撃者による攻撃への防御が可能となり得る。
また、前記複数のフレームには、前記制御対象の状態に関する情報を含む状態フレームが含まれ、前記複数の電子制御ユニットは、前記通信路であるネットワークに接続され、CANプロトコルに従って、データフレームである状態フレーム及び制御フレームの授受を行い、前記不正制御抑止方法は更に、前記判定ステップで制御フレームに基づく前記所定制御を抑止すべきと判定された場合に、当該制御フレームの少なくとも一部に上書きするように前記ネットワークにエラーフレームを送信する処理ステップを含むこととしても良い。これにより、車載ネットワークにおいて効率的に制御フレームを無効化することが可能となる。
また、本発明の一態様に係る不正制御抑止装置は、複数の電子制御ユニットが、制御対象に対して所定制御を指示する制御フレームを含む複数のフレームの授受を通信路を介して行うところの当該通信路に接続される不正制御抑止装置であって、前記通信路から複数のフレームを逐次受信する受信部と、前記受信部により受信された制御フレームに基づく前記所定制御を抑止すべきか否かを、当該制御フレームの受信時に先行する所定期間内に前記受信部により受信されたフレームの集合に基づいて、判定する判定部とを備える不正制御抑止装置である。これにより、所定期間内に受信されたフレームの集合から、その所定期間における制御対象が異常状態である場合に、制御フレームによる制御を抑止すべきと適切に判定され得る。この適切な判定に基づいて制御の抑止を適切に行うことが実現され得る。また、不正制御抑止装置は、複数の電子制御ユニットで構成されるネットワークシステムの通信路に接続するだけで利用され得るので、ネットワークシステムの構成を大きく変更することなく導入可能である。
また、本発明の一態様に係る車載ネットワークシステムは、車両の状態に関する情報を含むフレームである状態フレーム、及び、前記車両に対して所定制御を指示するフレームである制御フレームの授受をネットワークを介して行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記ネットワークから状態フレーム及び制御フレームを逐次受信する受信部と、前記受信部により受信された制御フレームに基づく前記所定制御を抑止すべきか否かを、当該制御フレームの受信時に先行する所定期間内に前記受信部により受信された状態フレームの集合に基づいて特定される、当該所定期間における前記車両の状態が、所定基準を満たすか否かに基づいて、判定する判定部とを備える車載ネットワークシステムである。これにより、例えば、車両の偽装状態を捉えるように所定基準を定めておくことにより、攻撃者が、車両の状態を偽装する前準備をした上で車両を制御するための不正な制御フレームを送信した場合において、その不正な制御フレームによる制御を抑止すべきと適切に判定し得る。このため、この車載ネットワークシステムは、攻撃に対する適切な防御を行うことが可能となる。
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
以下、実施の形態に係る不正制御抑止方法を用いる監視ECUを含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、処理の要素としてのステップ及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
(実施の形態1)
以下、本発明の実施の形態1として、車載ネットワークを流れるフレームを監視する監視ECUを含む車載ネットワークシステム10について、図面を用いて説明する。
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。
車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム10は、バスを介してフレームに係る通信を行う複数の装置を備え、不正制御抑止方法を用いる。具体的には図1に示すように車載ネットワークシステム10は、バス300と、バス300に接続された監視ECU100、ECU200a〜200d等とを含んで構成される。なお、車載ネットワークシステム10には、監視ECU100及びECU200a〜200d以外にもいくつものECUが含まれ得るが、ここでは、便宜上、監視ECU100及びECU200a〜200dに注目して説明を行う。車載ネットワークシステム10を搭載する車両においては、複数のECUが通信して連携することで、例えば、先進運転者支援システム(ADAS:Advanced Driver Assistance System)
の一機能である駐車支援機能等が実現される。
各ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行されるプログラム(コンピュータプログラム)を記憶することができる。例えばプロセッサが、プログラムに従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。ECUは、各種機器に接続され得る。ECU200aは、速度センサ210に接続されている。ECU200bは、車両の後方を撮影するカメラであるリアカメラ220、及び、例えば映像、GUI(Graphical User Interface)画像等を表示して操作を受け付けるタッチパネル等であるモニタ230と接続されている。ECU200cは、ハンドル(ステアリングホイール)240に接続されている。また、ECU200dは、変速機構であるギア250に接続されている。
各ECUは、CANプロトコルに従って、バス300を介してフレームの授受を行う。ECU間で授受されるフレームには、例えば、車両の状態に関する情報を含むデータフレーム(状態フレームと称する)、車両に対して制御を指示するデータフレーム(制御フレームと称する)等がある。なお、ECU間で、車両の状態に関する状態を含みかつ車両に対して制御を指示するデータフレーム、つまり状態フレームでありかつ制御フレームであるデータフレームの授受がなされても良い。
ECU200aは、速度センサ210から得られる車速(つまり車両の速度)のデータをデータフレームに含めて周期的にバス300へ送信する。ECU200bは、リアカメラ220から取得した車両後方の映像を、モニタ230に表示し、車両の運転者へ後方の様子を知らせる。また、ECU200bは、モニタ230へのタッチ操作等による、運転者からの駐車支援機能の開始要求を受け付ける。ここでは、駐車支援機能が、車両の後方の、運転者が指定した駐車スペースを目指して、自動的にハンドルを操作する機能であることとして説明する。ギア250を車両の後進のためのギアポジションである「リバース」にして駐車支援機能の開始要求の操作を行えば、運転者は、アクセル及びブレーキの操作を行うだけで、車両を後進させて駐車スペースに駐車させることができる。ECU200bは、運転者から駐車支援機能の開始要求を受けると、リアカメラ220の情報から、ハンドルを回すべき角度に係る目標操舵角を計算し、ハンドル制御指示を示すデータフレームに、制御フラグと目標操舵角とを示すデータを含めて、周期的にバス300へ送信する。ここで、ハンドル制御指示を示すデータフレームの制御フラグは、1の値で制御を行うことを示し、0の値で制御を行わないことを示す。制御フラグが1の値であればハンドル制御指示を示すデータフレームは制御フレームである。ECU200cは、ECU200bから送信された、ハンドル制御指示の制御フレームに従い、ハンドル240を制御して車両の進行方向を変化させる。なお、ECU200cは、ECU200aから通知される車速が10km/h以下であり、かつ、ギア250のギアポジションが「リバース」であることを確認できた場合に、ハンドル240の制御を行う。ECU200dは、ギア250の現在のギアポジションを示すデータをデータフレームに含めて周期的にバス300へ送信する。車速を示す状態フレーム及びギアポジションを示す状態フレームは、略一定の周期で逐次送信される。
監視ECU100は、不正制御抑止装置としての一種のECUであり、バス300に接続される。監視ECU100は、バス300に流れる状態フレーム、制御フレーム等のデータフレームを監視し、攻撃者の攻撃により送信された車両制御を指示する不正な制御フレームを検知した場合にその制御フレームを無効化することで不正な車両制御を抑止する。
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるデータフレームについて説明する。
図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)の各フィールドで構成される。
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することが、フレームの送信開始の通知となる。
IDフィールドは、11bitで構成される、データの種類を示す値であるIDを格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
IDEと「r」とは、両方ドミナント1bitで構成される。
DLCは、4bitで構成され、データフィールドの長さを示す値である。
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。データフィールドは、8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者等に依存した仕様となる。
CRCシーケンスは、15bitで構成される。CRCシーケンスは、SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
[1.3 エラーフレームフォーマット]
図3は、CANプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ(プライマリ)と、エラーフラグ(セカンダリ)と、エラーデリミタ「DEL」とから構成される。
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために6bitのドミナントを連続で送信する。この送信は、CANプロトコルにおけるビットスタッフィングルール(つまり連続して同じ値を6bit以上送信しないルール)に違反し、他のノードからのエラーフレーム(セカンダリ)の送信を引き起こす。
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに知らせるために使用される連続した6ビットのドミナントで構成される。エラーフラグ(プライマリ)を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ(セカンダリ)
を送信することになる。
エラーデリミタ「DEL」は、8bitの連続したレセシブであり、エラーフレームの終了を示す。
[1.4 監視ECU100の構成]
図4は、監視ECU100の構成図である。監視ECU100は、フレーム送受信部110と、フレーム処理部120と、状態偽装検知部130と、機能制限部140と、フレーム生成部150と、受信履歴保持部160と、車両状態保持部170と、機能制限ルール保持部180とを含んで構成される。図4に示した監視ECU100の各構成要素は、監視ECU100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で実現され得る。
フレーム送受信部110は、バス300に対して、CANのプロトコルに従ったフレームを送受信する。フレーム送受信部110は、バス300からフレームを1bitずつ受信する受信部としての機能を有する。フレーム送受信部110は、データフレームを受信して、データフレーム内のID、DLC、データといった情報をフレーム処理部120に転送する。また、フレーム送受信部110は、CANプロトコルに則っていないデータフレームと判断した場合は、エラーフレームを送信する。また、フレーム送受信部110は、データフレームの受信中にエラーフレームを受信した場合、つまり受け取ったデータフレームにおける値からエラーフレームになっていると解釈した場合には、それ以降はそのデータフレームを破棄する。フレーム送受信部110は、フレーム生成部150からデータフレームの送信要求を受けた場合には、そのデータフレームの内容をバス300に1bitずつ送信する。
フレーム処理部120は、フレーム送受信部110よりデータフレームの情報を受け取り、データフレームの内容を解釈する。また、フレーム処理部120は、受信中のデータフレームを状態偽装検知部130と機能制限部140とに通知する。
状態偽装検知部130は、車両の状態が偽装されているか否かを、受信履歴保持部160が保持する受信履歴情報を参照して判定する偽装検知処理を行う。受信履歴情報は、データフレームの受信履歴の情報である。状態偽装検知部130は、ID毎に予め規定されたデータフレームの送信間隔に基づいて、先行して受信されたデータフレームからその送信間隔後を中心としたマージンの範囲内に複数の同一のIDのデータフレームを受信したか否かによって、車両の状態が偽装されているか否かを判定する。例えば、ECU200aが周期的に送信するID「0x100」の車速に係る状態フレームであるデータフレームの送信間隔が50msと予め規定されている場合においては、監視ECU100が、あるID「0x100」のデータフレームを受信した時刻+50ms−マージンから、そのデータフレームを受信した時刻+50ms+マージンまでの範囲の時間である期間Tに、ID「0x100」のデータフレームを受信する数は1つであると期待される。しかし、攻撃者がこの時間にID「0x100」のデータフレームを送信した場合には、ECU200aから正常に送信されたID「0x100」のデータフレームと合わせて、2つのID「0x100」のデータフレームがその期間T内に監視ECU100に受信されることになる。このような場合に、状態偽装検知部130は、ID「0x100」の状態フレームが示す車速に関して車両の状態が偽装されている偽装状態であると判定する。なお、期間Tに2つのID「0x100」のデータフレームである状態フレームを監視ECU100が受信した場合には、監視ECU100に受信された状態フレームのうちに、異常な状態フレームが含まれていることになる。このような異常な状態フレームが受信された場合に、同じIDの状態フレームが示す車両の状態について、状態偽装検知部130によって偽装状態であると判定されることになる。状態偽装検知部130は、偽装の判定を行うべき状態フレームのID毎に予め規定された送信間隔の情報を保持している。また、状態偽装検知部130が用いるマージンは、正常に送信されるデータフレームの送信間隔の揺らぎを許容するように適切に定められ、例えば、3ms等と定められている。また、状態偽装検知部130は、偽装検知処理における判定結果に応じて、車両状態保持部170に格納されている車両状態情報を更新する。また、状態偽装検知部130は、ECU200a、ECU200d等から送信される状態フレームのデータの値と、その状態フレームが受信された時刻とに基づいて、受信履歴保持部160に格納されている受信履歴情報を更新する。この更新において、状態偽装検知部130は、例えば、監視ECU100の起動時から、或いはその他の所定の時からの経過時刻をカウントするタイマにより、状態フレームが受信された時刻を取得して、受信履歴情報に記録する。
機能制限部140は、車両の制御のための制御フレームを受信した際に、車両状態保持部170に格納されている車両状態情報と、機能制限ルール保持部180に格納されている、車両の制御を抑止すべきか否かの基準となる機能制限ルールとを参照して、車両の制御を抑止すべきか否かを判定する。機能制限部140は、車両の制御を抑止すべきと判定した場合には、その車両の制御のための、受信中の制御フレームを無効化するために、エラーフレームの送信をフレーム生成部150に要求する。このエラーフレームにより、受信中の制御フレームがバス300上で上書きされ、その制御フレームは無効化されることになる。エラーフレームによる上書きの効果で、ECU200c等のECUは、バス300から制御フレームの全体を完全に受信することができないので、制御フレームに従った制御を行わなくなる。
フレーム生成部150は、フレームの送信が要求された場合にそのフレームをフレーム送受信部110に送信させる。フレーム生成部150は、データフレームの送信が要求された場合にはデータフレームを生成して、そのデータフレームをフレーム送受信部110に送信させる。
受信履歴保持部160は、監視ECU100が受信したデータフレームの受信履歴を保持する。受信履歴保持部160は、例えば、直近の100ms以内に受信した状態フレームに関するデータ値及び受信の時刻を示す受信履歴情報(図5参照)を保持する。
車両状態保持部170は、状態偽装検知部130による偽装検知処理において判定された車両状態を示す車両状態情報(図6参照)を保持する。
機能制限ルール保持部180は、受信中の制御フレームによる制御を抑止すべきか否かの判定基準となる機能制限ルール(図7参照)を保持する。
[1.5 受信履歴情報]
図5は、受信履歴保持部160が保持する受信履歴情報の一例を示す。同図の例では、受信履歴情報は、直近100ms以内に受信されたID「0x100」の車速を示す状態フレームと、ID「0x300」のギアポジションを示す状態フレームとの受信の時刻とデータ値とを含む。
この例の受信履歴情報によれば、車速に係るID「0x100」の状態フレームに関しては、最新の受信時におけるデータ値が42.1km/hであり、受信の時刻は110msである。1回前の受信時においては、その車速の状態フレームのデータ値が0.0km/hであり、受信の時刻は61msである。2回前の受信時においては、その車速の状態フレームのデータ値が42.0km/hであり、受信の時刻は60msである。また、3回前の受信時においては、その車速の状態フレームのデータ値が42.0km/hであり、受信の時刻は10msである。また、ギアポジションに係るID「0x300」の状態フレームに関しては、最新の受信時におけるデータ値が、車両の前進のためのギアポジションである「ドライブ」を示し、受信の時刻は100msである。また、1回前の受信時においては、データ値が「ドライブ」を示し、受信の時刻は50msである。図5の例では、更に前回には、ギアポジションに係る状態フレームは、受信されておらず、或いは、直近100msより前に受信されており、保持されていない。
[1.6 車両状態情報]
図6は、車両状態保持部170が保持する車両状態情報の一例を示す。同図の例では、車両状態情報として、車速に係るID「0x100」の状態フレームに関連する車両の状態と、ギアポジションに係るID「0x300」の状態フレームに関連する車両の状態とが、偽装フラグによって示されている。この例では偽装フラグは、1であれば車両の状態が偽装状態であることを示し、0であれば偽装状態でないことを示す。偽装状態は、例えば、攻撃者により、車両の状態としての車速、ギアポジション等について偽のデータ値を示す状態フレームがバス300上に流された状態、つまり車両の状態が偽装されている状態である。図6の例では、ID「0x100」の状態フレームで示される車速に係る車両の状態が、偽装状態であることを示している。また、ID「0x300」の状態フレームで示されるギアポジションに係る車両の状態が、偽装状態ではないことを示している。
[1.7 機能制限ルール]
図7は、機能制限ルール保持部180が保持する機能制限ルールの一例を示す。
機能制限ルールは、車両の制御を抑止すべきか否かの基準を示す情報であり、同図の例では、車両の制御を行う制御フレームを特定する情報である機能制限対象と、基準となる車両状態の条件とを対応付けたものである。同図には、機能制限ルールが複数項目のルールで構成される例を示しているが、ルールの項目数は1つであっても複数であっても良い。
この例では、ルール番号1の制限対象機能は、ハンドル制御指示に係るID「0x200」のデータフレームに含まれる制御フラグが1であるデータフレーム(つまりハンドル制御指示に係る制御フレーム)であり、ハンドル制御を抑止するための車両状態の条件は、車速に係るID「0x100」の状態フレームに関連する車両の状態が偽装状態(つまり偽装フラグが1)であることである。また、ルール番号2の制限対象機能も、同様に、ハンドル制御指示に係る制御フレームであり、ハンドル制御を抑止するための車両状態の条件は、ギアポジションに係るID「0x300」の状態フレームに関連する車両の状態が偽装状態(つまり偽装フラグが1)であることである。
機能制限部140は、機能制限ルールを参照して、受信中の制御フレームに該当する機能制限対象に対応する車両状態の条件が満たされている場合に、その制御フレームによる車両の制御を抑止すべきと判定し、その制御フレームを無効化すべくフレーム生成部150にエラーフレームの送信の要求を行う。具体的には、機能制限部140は、ハンドル制御指示に係る制御フレームを受信した際に、図7のルール番号1の項目のルールに従って、車両状態保持部170が保持する車両状態情報においてID「0x100」の状態フレームで示される車速に係る車両の状態が偽装状態(つまり偽装フラグが1)となっていた場合に、その制御フレームを無効化するために、フレーム生成部150に対してエラーフレームの送信要求を行う。機能制限部140は、図7のルール番号2の項目のルールに従って、車両状態情報においてID「0x300」の状態フレームで示されるギアポジションに係る車両の状態が偽装状態(つまり偽装フラグが1)となっていた場合には、そのハンドル制御指示に係る制御フレームを無効化するために、フレーム生成部150に対してエラーフレームの送信要求を行う。そのハンドル制御指示に係る制御フレームの受信の際において機能制限部140は、車速に係る車両の状態が偽装状態でなく、ギアポジションに係る車両の状態が偽装状態でない場合には、エラーフレームの送信要求を行わない。
[1.8 ECU200aの構成]
図8は、ECU200aの構成図である。ECU200aは、フレーム送受信部201と、フレーム処理部202と、機器入出力部203と、フレーム生成部204とを含んで構成される。これらの各構成要素は、機能的な構成要素であり、その各機能は、ECU200aにおける通信回路、メモリに格納された制御プログラムを実行するプロセッサ或いはデジタル回路等により実現される。なお、ECU200b、ECU200c及びECU200dもECU200aと概ね同様の構成を有する。
フレーム送受信部201は、バス300に対して、CANのプロトコルに従ったフレームを送受信する。フレーム送受信部201は、バス300からデータフレームを1bitずつ受信し、エラー無くデータフレームの受信を完了すると、データフレーム内のID、DLC、データといった情報をフレーム処理部202に転送する。フレーム送受信部201は、CANプロトコルに則っていないデータフレームと判断した場合は、エラーフレームを送信する。フレーム送受信部201は、データフレームの受信中にエラーフレームを受信した場合には、それ以降そのデータフレームを破棄する。また、フレーム送受信部201は、フレーム生成部204より通知を受けたフレームの内容をバス300に送信する。通信調停といったCANのプロトコルに則った処理も、フレーム送受信部201において実現される。
フレーム処理部202は、受信したデータフレームの内容を解釈する。ECU200aと同様の構成を備えるECU200cを例として説明すると、ECU200cのフレーム処理部202では、ECU200a、ECU200b及びECU200dから送信されるデータフレームに含まれる車速、ハンドル制御指示、ギアポジション等の情報を解釈し、必要に応じてハンドル240の制御を行うための制御情報を、機器入出力部203に通知する。なお、ECU200cのフレーム処理部202では、ECU200aから通知される車速が10km/hを超えている場合、或いは、ECU200dから通知されるギアポジションが、「リバース」以外である場合には、ハンドル制御指示に係る制御フレーム(つまりID「0x200」を有し、制御フラグが1であるデータフレーム)が受信されても、ハンドル240を制御しない。
機器入出力部203は、ECUに接続される機器と通信を行う通信回路等で構成される。ECU200aの機器入出力部203は、速度センサ210から現在の車速を取得し、車速を示すデータフレームを生成して送信させるべくフレーム生成部204に車速を通知する。ECU200bの機器入出力部203は、リアカメラ220から、車両後方の状況を示す映像データを取得する。また、ECU200bの機器入出力部203は、モニタ230に対する運転者の駐車支援機能の開始要求の操作を受付け、車両後方の状況から、ハンドル240を制御するための目標操舵角を計算し、ハンドル制御指示に係る制御フレームの生成のために目標操舵角を、フレーム生成部204に通知する。また、ECU200cの機器入出力部203は、ECU200bから通知されたハンドル制御指示に係る制御フレーム等に基づく制御情報に応じて、ハンドル240を制御する。また、ECU200dの機器入出力部203は、ギア250から現在のギアポジションを取得し、ギアポジションを示すデータフレームを生成して送信させるべくフレーム生成部204にギアポジションを通知する。
フレーム生成部204は、機器入出力部203から通知された情報に基づいてバス300へ送信するデータフレームを生成し、生成したデータフレームを、フレーム送受信部201を介してバス300へ送信する。例えばECU200aにおいては、フレーム生成部204は、機器入出力部203から通知された速度センサ210からの車速の情報を含んだデータフレームを、予め定められた周期である50ms間隔で生成し、フレーム送受信部201に通知する。なお、データフレームの生成の間隔としての50msは、周期の一例に過ぎず、50ms以外であっても良い。ECU200a、ECU200b及びECU200dがそれぞれ送信するデータフレームの例について次に図9を用いて説明する。
[1.9 ECUが送信するデータフレーム]
図9は、ECU200a、ECU200b及びECU200dのそれぞれにより送信されるデータフレームの例を示す。
図9において(a)の例は、ECU200aが送信するデータフレーム、つまり車速に係る状態フレームの例である。この車速に係る状態フレームは、ID「0x100」を有し、DLCが2であり、そのデータフィールドは、1バイト目と2バイト目とを合わせた2バイトで車速(0.1km/h単位)を表す。図9の(a)のデータフレームの例は、車速として42.1km/h(0x1A5)を示す状態フレームを表している。
図9において(b)の例は、ECU200bが送信するデータフレーム、つまりハンドル制御指示に係るデータフレームの例である。このハンドル制御指示に係るデータフレームは、ID「0x200」を有し、DLCが4であり、そのデータフィールドは、1バイト目が、ハンドル制御を行うか否か表す制御フラグであり、1の場合には、ハンドル240の制御が行われるべきことを示し、0の場合にはハンドル240の制御が行われるべきでないことを示す。2バイト目は、ハンドル制御を指示する場合に、左右いずれの方向にハンドル240が回されるべきかを、右は0、左は1で示す。データフィールドの3バイト目と4バイト目とを合わせた2バイトとで、ハンドル240の制御のための目標操舵角を示す。図9の(b)のデータフレームの例は、右に48度回すというハンドル制御指示を示す制御フレームを表している。
図9において(c)の例は、ECU200dが送信するデータフレーム、つまりギアポジションに係る状態フレームの例である。このギアポジションに係る状態フレームは、ID「0x300」を有し、DLCが1であり、そのデータフィールドは、1バイトでギアポジションを表す。その1バイトの値が0で、「ニュートラル」を表し、1で「リバース」を表し、2で「ドライブ」を表し、3で「パーキング」を表す。図9の(c)のデータフレームの例は、ギアポジションとして「リバース」を示す状態フレームを表している。
[1.10 駐車支援機能のシーケンス]
図10は、正常状態での駐車支援機能に係る処理シーケンスの一例を示す。
ECU200aは、車速を示す状態フレーム(つまりID「0x100」を有するデータフレーム)をバス300に送信する(ステップS11)。データフレームは、バス300に接続される全てのECUにブロードキャストされることになる。ハンドル240の制御を担うECU200cは、その車速を示す状態フレームを受信すべきIDのデータフレームとしてバス300から受信し、その状態フレームに基づいて、現在の車速を、更新して保持する。なお、ECU200aは、車速を示す状態フレームを予め規定された50msの送信間隔で送信するが、図10では、以降の、車速に係る状態フレームの送信を省略している。
また、ECU200dは、ギアポジションを示す状態フレーム(つまりID「0x300」を有するデータフレーム)をバス300に送信する(ステップS12)。ECU200cは、そのギアポジションを示す状態フレームを受信すべきIDのデータフレームとしてバス300から受信し、その状態フレームに基づいて、現在のギアポジションを、更新して保持する。なお、ECU200dは、ギアポジションを示す状態フレームを50msの送信間隔で送信するが、図10では、以降の、ギアポジションに係る状態フレームの送信を省略している。
モニタ230に対して運転者が駐車支援機能の実行開始の操作を行うと、モニタ230から駐車支援要求がECU200bに伝えられる(ステップS13)。
ECU200bは、駐車支援要求が伝えられると、リアカメラ220から取得した、車両の後方の映像をモニタ230へ表示する(ステップS14)。
モニタ230に表示された映像を見て、運転者がモニタ230の操作により駐車位置を指定すると、モニタ230は、その駐車位置を示す駐車位置決定通知を、ECU200bに伝える(ステップS15)。
ECU200bは、駐車位置決定通知が示す駐車位置に基づいて、目標となるハンドル240の操舵角(つまり目標操舵角)を計算し、ID「0x200」を有するデータフレームとして、制御フラグを1にし、目標操舵角の情報を含ませて送信する(ステップS16)。つまり、ECU200bは、ハンドル制御指示に係る制御フレームを送信する。なお、ECU200bは、ID「0x200」を有するデータフレームを、ハンドル240の目標操舵角を適切な値に逐次更新して、周期的に送信するが、図10では、以降の、ID「0x200」を有するデータフレームの送信を省略している。
ECU200cは、ハンドル制御指示に係る制御フレーム(つまりID「0x200」を有し制御フラグが1であるデータフレーム)を受信し、かつ、現在の車速が10km/h以下であり、かつ、ギアポジションが「リバース」である場合にのみ、ハンドル240を目標操舵角になるように回す制御を行う(ステップS17)。
[1.11 駐車支援機能に対する攻撃の抑止に係るシーケンス]
図11は、駐車支援機能への攻撃、及び、監視ECU100による不正制御抑止処理に係るシーケンスの一例を示す。ここでは、監視ECU100は、図7に例示した機能制限ルールを保持しているものとする。また、駐車支援機能の実行開始の操作がなされておらず車両は前進走行を行っていることとする。また、ECU200dは、ギアポジションが「ドライブ」であることを示す状態フレームを周期的に送信していることとする。なお、図11では、ギアポジションに係る状態フレームについての記載を省略する。
ECU200aは、車速を示す状態フレーム(つまりID「0x100」を有するデータフレーム)をバス300に送信する(ステップS21)。この例では、現在の車速は、42.1km/hである。
ECU200cがハンドル240の制御を行うためには、車速が10km/h以下という条件を満たす必要がある。このため、攻撃ECUは、ハンドル240を不正に制御する前段階として、ID「0x100」を有し車速が0km/hであるという偽の情報を示すデータフレーム、つまり車速に係る偽の情報を示す状態フレームを送信する(ステップS22)。攻撃ECUは、バス300に接続されたECUであり、例えば、攻撃者がバス300に接続したECU、攻撃者がハッキング等により支配したECU等である。なお、攻撃ECUは、例えば、ECU200aによる車速に係る状態フレームの送信周期を観測し、予め規定された送信間隔のマージンの範囲の期間に、同じIDを有する車速に係る偽の情報を示す状態フレームを送信する。これにより、車速に係る偽の情報を示す状態フレームが、送信タイミングから単純に不正なフレームであると検知され難くなる。
ステップS22で送信された車速に係る偽の情報を示す状態フレームを受信したECU200cは、保持する現在の車速を、0km/hに更新する。また、監視ECU100は、偽装検知処理により、車速に係るID「0x100」の状態フレームが、1回受信されることが期待される期間において、つまり予め規定された送信間隔に係るマージンの範囲内の期間において、2回受信されたことから、ID「0x100」の状態フレームで示される車速に関する車両の状態が偽装状態であると判定する。これにより、車両状態情報における車速に関する偽装フラグが1になる。
ECU200bは、ID「0x200」を有する、ハンドル制御指示を示すデータフレームを送信する(ステップS23)。このとき駐車支援機能の実行は開始されていないので、ハンドル制御を行うか否かを示す制御フラグは0であり、ハンドル240は制御されない。これに対して監視ECU100は、ID「0x200」を有するデータフレームに含まれる制御フラグが0であることから、機能制限ルールの各ルールの機能制限対象ではないので、エラーフレームの送信等を行わない。
次に攻撃ECUは、ハンドル240を不正に制御するために、ID「0x200」を有し制御フラグを1にしたデータフレーム(つまりハンドル制御指示に係る制御フレーム)を送信する(ステップS24)。これに対して、監視ECU100は、その制御フレームの受信中に、機能制限ルール及び車両状態情報に基づいて、車両の制御を抑止すべきか否かを判定する。監視ECU100は、ステップS24で送信された制御フレームが機能制限ルールのルール番号1の項目のルールの機能制限対象に合致して、対応する車両状態の条件が満たされているので、その制御フレームによる車両の制御を抑止すべきと判定する。
続いて、監視ECU100は、受信中の制御フレームによる車両の制御を抑止すべきと判定したので、そのハンドル制御指示に係る制御フレームを無効化するために、エラーフレームを送信する(ステップS25)。エラーフレームの送信により、監視ECU100は、攻撃によるハンドル240の不正な制御を抑止し得る。このエラーフレームにより、送信中であったID「0x200」を有するデータフレームが上書きされ、結果的に、攻撃ECUによるそのデータフレームの送信が中断されたことになる。ECU200cは、そのエラーフレームを受信することにより、受信中のデータフレームを破棄して、そのデータフレームに基づくハンドル240の制御を行わない。
このように、監視ECU100は、機能制限ルールに基づく判定結果次第でエラーフレームの送信を行うことで、攻撃ECUによるハンドル240を不正に制御するためのデータフレームのECU200cによる受信を、阻止することができる。
[1.12 監視ECU100による監視動作]
図12は、監視ECU100による監視動作の一例を示すフローチャートである。この監視動作に係る処理は、バス300にデータフレームが現れる度に行われる。
監視ECU100は、データフレームを受信し、受信中のデータフレームのIDが、受信履歴保持部160に受信履歴を保持すべきデータフレームのIDであるか否かを判断する(ステップS31)。なお、この例では、受信履歴の保持対象のデータフレームのIDは、機能制限ルールにおける機能制限対象となるデータフレームのIDとは異なることとするが、これは一例に過ぎない。例えば、受信履歴の保持対象に係るIDは、車速に係る状態フレームのID「0x100」及びギアポジションに係る状態フレームのID「0x300」である(図5参照)。
監視ECU100は、受信中のデータフレームのIDが、受信履歴保持部160に受信履歴を保持すべきデータフレームのIDである場合は、受信中のデータフレームの車速等を示すデータ値と、受信の時刻とを含ませるように、受信履歴保持部160が保持する受信履歴情報を更新する(ステップS32)。なお、監視ECU100は、この受信履歴情報の更新に際して、例えば、受信の時刻が現在時刻より一定時間(例えば100ms)より前の受信履歴の情報を消去しても良い。
また、監視ECU100は、受信履歴保持部160が保持する受信履歴情報を参照して偽装検知処理を行う(ステップS33)。具体的には、監視ECU100は、状態偽装検知部130により、例えば、受信履歴情報における1つのIDに係る状態フレーム(データフレーム)の受信履歴のうち最も古い状態フレームの受信の時刻に、予め規定された送信間隔(例えば50ms)を加算した時刻を基準時刻として、マージン(例えば3ms)を基準時刻から減算した時刻からと加算した時刻までの範囲(受信タイミング範囲と称する)に、いくつの状態フレームを受信しているかを数える。そして、2以上の状態フレームを受信している場合に、車両の状態が偽装されていると判定し、車両状態保持部170の対応するIDの偽装フラグを1にする。同様に、受信タイミング範囲内に最初に受信した状態フレームの受信の時刻から、予め規定された送信間隔(例えば50ms)を加算した時刻を基準として、次の受信タイミング範囲を求め、車両の状態が偽装されているかを、最近に受信した状態フレームまで繰り返す。更に、いずれの受信タイミング範囲内にも含まれない状態フレームが受信履歴に含まれる場合に、偽装フラグを1に更新する。このような処理で、偽装フラグを1にしない場合には、偽装フラグを0にする。この偽装検知処理では、車両の状態が偽装状態であるか否かの判定が行なわれるが、受信履歴保持部160が保持する受信履歴情報に受信履歴が示される各状態フレームが不正か否か(つまり攻撃によるものか否か)の識別までは行われない。
監視ECU100は、ステップS31で、受信中のデータフレームのIDが、受信履歴保持部160に受信履歴を保持すべきデータフレームのIDでないと判断した場合には、機能制限対象となるデータフレームのIDであるか否かを判断する(ステップS34)。監視ECU100は、受信中のデータフレームのIDが、機能制限対象となるデータフレームのIDでないと判断した場合には、処理を終了する。
監視ECU100は、ステップS34で、受信中のデータフレームのIDが、機能制限対象となるデータフレームのIDであると判断した場合には、受信中のデータフレームが機能制限対象のデータフレームであるか否かを判断する(ステップS35)。具体的には、監視ECU100は、機能制限ルール保持部180が保持する機能制限ルールを参照することで、制御フラグが1であるハンドル制御指示に係るデータフレームである制御フレームか否かを判断する。受信中のデータフレームが機能制限対象の制御フレームでなければ、監視ECU100は、処理を終了する。
ステップS35で、受信中のデータフレームが機能制限対象の制御フレームであると判断した場合には、監視ECU100は、その制御フレームに係る車両の制御を抑止すべきか否かを判定する。具体的には、監視ECU100は、機能制限ルールと、車両状態保持部170が保持する車両状態情報とを参照し、その制御フレームが機能制限対象であってその車両状態の条件が成立しているか否かを検証することでその判定を行う(ステップS36)。監視ECU100は、ステップS36での検証の結果、機能制限ルールにおいてその制御フレームを機能制限対象とする各項目のルールについて、いずれも車両状態の条件が成立していなければ、処理を終了する。
監視ECU100は、ステップS36での検証の結果、車両状態の条件が成立していれば、受信中のデータフレームを無効化するために、受信中のデータフレームの最後尾が受信される前にエラーフレームをバス300に送信する(ステップS37)。これにより、その受信中のデータフレームにエラーフレームが上書きされて、そのデータフレームは無効化される。このため、バス300に接続されたECU(例えばECU200c)は、その無効化されたデータフレームに基づく車両の制御を行わない。
[1.13 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、監視ECU100が、一定期間に受信した状態フレームの集合に基づいて、状態フレームの送信間隔に係る予め定められた規定を利用することで、一定期間における車両の状態が偽装状態であったことを検知する。そして、監視ECU100は、車両の状態が偽装状態であった場合において、車両の制御を行うための制御フレームが送信されているときにその制御フレームを無効化することで、その車両の制御を抑止する。これにより、車両の状態を偽装して車両を不正に制御するような攻撃に対する防御が可能となり、車載ネットワークのセキュリティが確保され得る。また、この防御のための不正制御抑止方法は、監視ECU100を、車載ネットワークに配置することで実現できるので、コストを抑えて車載ネットワークを保護することが可能となる。
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10の一部を変形した車載ネットワークシステム11について説明する。
本実施の形態に係る車載ネットワークシステム11における監視ECUは、車載ネットワークを流れる状態フレームを監視し、現在の車両の状態が継続している時間を計測し、車両の状態が、一定時間継続した安定状態であるか否かに係る基準に基づいて、車両を制御する制御フレームによる制御機能を制限する。
[2.1 車載ネットワークシステム11の全体構成]
図13は、本発明に関わる車載ネットワークシステム11の全体構成を示す図である。
車載ネットワークシステム11は、図13に示すように、バス300と、バス300に接続された監視ECU2100、ECU200a〜200d等とを含んで構成される。車載ネットワークシステム11は、ここで特に説明しない点については実施の形態1で示した車載ネットワークシステム10(図1参照)と同じである。車載ネットワークシステム11の構成要素のうち、車載ネットワークシステム10と同様の構成要素については、図13において、図1と同じ符号を付しており、ここでの説明を省略する。
監視ECU2100は、不正制御抑止装置としての一種のECUであり、バス300に接続される。監視ECU2100は、バス300に流れる状態フレーム、制御フレーム等のデータフレームを監視し、車両の状態の継続時間を計測する。監視ECU2100は、計測した車両の状態の継続時間に応じて、車両を制御する制御フレームによる制御を抑止すべきか否かを判定し、抑止すべき場合に制御フレームを無効化することで不正な車両制御を抑止する。
[2.2 監視ECU2100の構成]
図14は、監視ECU2100の構成図である。監視ECU2100はフレーム送受信部110と、フレーム処理部120と、車両状態監視部2130と、機能制限部2140と、フレーム生成部150と、受信履歴保持部2160と、機能制限ルール保持部2180とを含んで構成される。図14に示した監視ECU2100の各構成要素は、監視ECU2100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で実現され得る。監視ECU2100は、ここで特に説明しない点については実施の形態1で示した監視ECU100(図4参照)と同じである。監視ECU2100の構成要素のうち、監視ECU100と同様の機能を有する構成要素は、図14において図4と同じ符号を付しており、ここでの説明を適宜省略する。
フレーム処理部120は、受信中のデータフレームを車両状態監視部2130と機能制限部2140とに通知する。
車両状態監視部2130は、フレーム処理部120から通知されたデータフレームについて、受信履歴保持部2160が保持している受信履歴情報における、対応するIDに関する受信履歴を更新する。具体的には、車両状態監視部2130は、ECU200a、ECU200d等から送信される状態フレームのデータの値と、その状態フレームが受信された時刻とに基づいて、受信履歴情報を更新する。この更新において、車両状態監視部2130は、例えば、監視ECU2100の起動時から、或いはその他の所定の時からの経過時刻をカウントするタイマにより、状態フレームが受信された時刻を取得して、直近100ms以内に受信した状態フレームに関する情報を示すように、受信履歴情報を更新する。
機能制限部2140は、車両の制御のための制御フレームを受信した際に、機能制限ルール保持部2180に格納されている、車両の制御を抑止すべきか否かの基準となる機能制限ルールと、受信履歴保持部2160が保持する受信履歴情報とを参照して、車両の制御を抑止すべきか否かを判定する。機能制限部2140は、車両の制御を抑止すべきと判定した場合には、その車両の制御のための、受信中の制御フレームを無効化するために、エラーフレームの送信をフレーム生成部150に要求する。具体的には、車両の制御を抑止すべきか否かの判定のために、機能制限部2140は、機能制限ルールにおいて機能制限対象とされている制御フレームが受信中である場合に、車両の状態の継続時間の計測結果を取得し、受信履歴情報が示す状態フレームの受信履歴が示す車両の状態が、機能制限ルールにおける車両状態継続時間の条件を満たす不安定状態であるか、否か(つまり安定状態であるか)を判定する。
受信履歴保持部2160は、監視ECU2100が受信したデータフレームの受信履歴を保持する。受信履歴保持部2160は、例えば、直近の100ms以内に受信した状態フレームに関するデータ値及び受信の時刻を示す受信履歴情報(図15参照)を保持する。
機能制限ルール保持部2180は、受信中の制御フレームによる制御を抑止すべきか否かの判定基準となる機能制限ルール(図16参照)を保持する。
[2.3 受信履歴情報]
図15は、受信履歴保持部2160が保持する受信履歴情報の一例を示す。同図の例では、受信履歴情報は、直近100ms以内に受信されたID「0x100」の車速を示す状態フレームと、ID「0x300」のギアポジションを示す状態フレームとの受信の時刻とデータ値とを含む。
この例の受信履歴情報によれば、車速に係るID「0x100」の状態フレームに関しては、最新の受信時におけるデータ値が0.0km/hであり、受信の時刻は211msである。1回前の受信時においては、その車速の状態フレームのデータ値が42.1km/hであり、受信の時刻は210msである。また、2回前の受信時においては、その車速の状態フレームのデータ値が42.0km/hであり、受信の時刻は160msである。また、ギアポジションに係るID「0x300」の状態フレームに関しては、最新の受信時におけるデータ値が「リバース」を示し、受信の時刻は201msである。1回前の受信時においては、データ値が「ドライブ」を示し、受信の時刻は200msである。また、2回前の受信時においては、データ値が「ドライブ」を示し、受信の時刻は150msである。
[2.4 機能制限ルール]
図16は、機能制限ルール保持部2180が保持する機能制限ルールの一例を示す。
機能制限ルールは、車両の制御を抑止すべきか否かの基準を示す情報であり、同図の例では、車両の制御を行う制御フレームを特定する情報である機能制限対象と、基準となる車両状態の条件(具体的には車両状態継続時間の条件)とを対応付けたものである。同図には、機能制限ルールが複数項目のルールで構成される例を示しているが、ルールの項目数は1つであっても複数であっても良い。
この例では、ルール番号1の制限対象機能は、ハンドル制御指示に係るID「0x200」のデータフレームに含まれる制御フラグが1であるデータフレーム(つまりハンドル制御指示に係る制御フレーム)であり、ハンドル制御を抑止すべきと判定するための車両状態の条件は、車速に係るID「0x100」の状態フレームに関連する車両の状態が不安定状態であることである。図16の例では、車速に係る不安定状態は、車速が10km/h以下の状態である継続時間が60msより短い状態を意味する。車速が10km/h以下の状態である継続時間が60ms以上であれば安定状態となる。つまり、機能制限部2140は、現在から60ms前までの間に、10km/hより大きい車速を示す状態フレームが1つ以上受信されていれば、ルール番号1の車両状態継続時間の条件が満たされているとして、機能制限対象であるハンドル制御指示に係る制御フレームによる制御を抑止すべきと判定する。
図16の例では、ルール番号2の項目のルールは、ギアポジションに係るID「0x300」の状態フレームに関連する車両の状態が不安定状態であることである。図16の例では、ギアポジションに係る不安定状態は、ギアポジションが「リバース」である状態の継続時間が60msより短い状態を意味する。機能制限部2140は、現在から60ms前までの間に、「リバース」以外のギアポジションを示す状態フレームが1つ以上受信されていれば、ルール番号2の車両状態継続時間の条件が満たされているとして、機能制限対象であるハンドル制御指示に係る制御フレームによる制御を抑止すべきと判定する。なお、車両状態継続時間の条件については、対象となる状態フレームについて予め規定された送信間隔等を考慮して設定しておくことが有用である。例えば状態フレームの送信間隔が50msであった場合に、車両状態継続時間の条件としての継続時間を60msとすると、60msの間に、少なくとも1つのデータフレームを受信することになる。攻撃者が、車速等の車両の状態を偽装する情報を示す状態フレームを送信した場合でも、正常な状態フレームの受信により、車両状態継続時間が0にリセットされる。このため、機能制限を解除する安定状態となるように60msより長い継続時間に亘って車速等の車両の状態を偽装することができない。図17に、車速に係る車両の状態を偽装する偽装フレームの送信という攻撃がなされた場合における車両の状態の継続時間を示す。図17では、時刻t1、t3、t5において0.0km/hという偽の車速を示す状態フレームが、時刻t0、t2、t4等にECU200aが周期的に送信する正常な車速(例えば42.0Km/h)を示す状態フレームの直後に送信されている。逐次送信される状態フレームによって示される車速が10km/h以下である時間は60msより短くなる。このように攻撃がなされている場合のハンドル制御指示に係る制御フレームの受信時においては、機能制限部2140は、例えば図17のルール番号1の項目のルールに従って、直近の60msの期間において車両の状態が安定状態でないので、ハンドル制御指示に係る制御フレームを無効化するために、フレーム生成部150に対してエラーフレームの送信要求を行う。
なお、ID「0x200」を有し制御フラグが1であるデータフレーム(つまりハンドル制御指示に係る制御フレーム)は、車速が10km/h以下であり、ギアポジションが「リバース」であるときにしかバス300に流されないように、車載ネットワークシステム11は、設計されている。そして、運転者により、駐車支援機能の実行開始の操作及び駐車位置の指定の操作がなされた後に、ハンドル制御指示に係る制御フレームは、バス300に送信される。運転者が車両を停車させ、ギアポジションを「リバース」に変更してから、モニタ230の操作により駐車支援機能の実行開始を要求して駐車位置を指定するまでに、数秒は時間が経過すると考えられる。正常に駐車支援機能を利用した場合には、機能制限対象の正常なデータフレーム(つまりハンドル制御指示に係る制御フレーム)が送信される際には、10km/h以下の車速、及び、「リバース」というギアポジションに係る車両の状態が60msよりも長く継続している。このため、その正常な制御フレームによるハンドルの制御が、機能制限部2140により抑止されるべきと判定されることはない。従って、攻撃を受けずに正常に駐車支援機能が利用された場合のハンドル制御指示に係る制御フレームの受信時においては、機能制限部2140は、直近の60msの期間において、10km/h以下の車速、及び、「リバース」というギアポジションに係る車両の状態が、継続する安定状態であるので、エラーフレームの送信要求を行わない。
[2.5 駐車支援機能に対する攻撃の抑止に係るシーケンス]
図18は、駐車支援機能への攻撃、及び、監視ECU2100による不正制御抑止処理に係るシーケンスの一例を示す。ここでは、監視ECU2100は、図16に例示した機能制限ルールを保持しているものとする。また、駐車支援機能の実行開始の操作がなされておらず車両は前進走行を行っていることとする。
ECU200aは、車速を示す状態フレーム(つまりID「0x100」を有するデータフレーム)をバス300に送信する(ステップS211)。この例では、現在の車速は、42.1km/hである。ステップS211で送信された車速に係る状態フレームを受信したECU200cは、保持する現在の車速を、42.1km/hに更新する。また、その状態フレームを受信した監視ECU2100は、受信履歴保持部2160に保持される受信履歴情報における車速に係る受信履歴を更新する。
ECU200cがハンドル240の制御を行うためには、車速が10km/h以下という条件を満たす必要がある。このため、攻撃ECUは、ハンドル240を不正に制御する前段階として、ID「0x100」を有し車速が0km/hであるという偽の情報を示すデータフレーム、つまり車速に係る偽の情報を示す状態フレームを送信する(ステップS212)。ステップS212で送信された車速に係る偽の情報を示す状態フレームを受信したECU200cは、保持する現在の車速を、0km/hに更新する。また、その状態フレームを受信した監視ECU2100は、受信履歴情報における車速に係る受信履歴を更新する。
ECU200dは、ギアポジションを示す状態フレーム(つまりID「0x300」を有するデータフレーム)をバス300に送信する(ステップS213)。この例では、現在のギアポジションは、「ドライブ」である。ステップS213で送信されたギアポジションに係る状態フレームを受信したECU200cは、保持する現在のギアポジションを、「ドライブ」に更新する。また、その状態フレームを受信した監視ECU2100は、受信履歴情報におけるギアポジションに係る受信履歴を更新する。
ECU200cがハンドル240の制御を行うためには、ギアポジションが「リバース」であるという条件を満たす必要がある。このため、攻撃ECUは、ハンドル240を不正に制御する前段階として、ID「0x300」を有しギアポジションが「リバース」であるという偽の情報を示すデータフレーム、つまりギアポジションに係る偽の情報を示す状態フレームを送信する(ステップS214)。ステップS214で送信されたギアポジションに係る偽の情報を示す状態フレームを受信したECU200cは、保持する現在のギアポジションを、「リバース」に更新する。また、その状態フレームを受信した監視ECU2100は、受信履歴情報におけるギアポジションに係る受信履歴を更新する。
次に攻撃ECUは、ハンドル240を不正に制御するために、ID「0x200」を有し制御フラグを1にしたデータフレーム(つまりハンドル制御指示に係る制御フレーム)を送信する(ステップS215)。これに対して、監視ECU2100は、その制御フレームの受信中に、機能制限ルールに基づいて、車両の制御を抑止すべきか否かを判定する。
監視ECU2100は、ステップS215で送信された制御フレームが機能制限ルールのルール番号1の項目のルールの機能制限対象に合致して、対応する車両状態継続時間の条件が満たされているので、その制御フレームによる車両の制御を抑止すべきと判定する。なお、監視ECU2100は、その制御フレームが機能制限ルールのルール番号2の項目のルールの機能制限対象に合致して、対応する車両状態継続時間の条件が満たされていることからも、その制御フレームによる車両の制御を抑止すべきと判定し得る。監視ECU2100は、受信履歴情報が示す所定期間における車両の状態が、機能制限ルールの少なくとも1つの項目のルールが示す車両状態継続の条件に該当すれば、その該当したルールの機能制限対象の制御フレームによる車両の制御を抑止すべきと判定し得る。
監視ECU2100は、ステップS215で送信された制御フレームの受信中において、その制御フレームによる車両の制御を抑止すべきと判定したので、そのハンドル制御指示に係る制御フレームを無効化するために、エラーフレームを送信する(ステップS216)。エラーフレームの送信により、監視ECU2100は、攻撃によるハンドル240の不正な制御を抑止し得る。このエラーフレームにより、送信中であったID「0x200」を有するデータフレームが上書きされ、結果的に、攻撃ECUによるそのデータフレームの送信が中断されたことになる。ECU200cは、そのエラーフレームを受信することにより、受信中のデータフレームを破棄して、そのデータフレームに基づくハンドル240の制御を行わない。
このように、監視ECU2100は、機能制限ルールに基づく判定結果に応じてエラーフレームの送信を行うことで、攻撃ECUによるハンドル240を不正に制御するためのデータフレームのECU200cによる受信を、阻止することができる。
ECU200aは、42.1km/hという車速を示す状態フレームをバス300に送信する(ステップS217)。ステップS217で送信された車速に係る状態フレームを受信したECU200cは、保持する現在の車速を、42.1km/hに更新する。また、その状態フレームを受信した監視ECU2100は、受信履歴保持部2160に保持される受信履歴情報における車速に係る受信履歴を更新する。
[2.6 監視ECU2100による監視動作]
図19は、監視ECU2100による監視動作の一例を示すフローチャートである。この監視動作に係る処理は、バス300にデータフレームが現れる度に行われる。
監視ECU2100は、データフレームを受信し、受信中のデータフレームのIDが、受信履歴保持部2160に受信履歴を保持すべきデータフレームのIDであるか否かを判断する(ステップS221)。例えば、受信履歴の保持対象に係るIDは、車速に係る状態フレームのID「0x100」及びギアポジションに係る状態フレームのID「0x300」である(図15参照)。
監視ECU2100は、受信中のデータフレームのIDが、受信履歴保持部2160に受信履歴を保持すべきデータフレームのIDである場合は、受信中のデータフレームの車速等を示すデータ値と、受信の時刻とを含ませるように、受信履歴保持部2160が保持する受信履歴情報における、そのIDに係る受信履歴を更新する(ステップS222)。なお、監視ECU2100は、この受信履歴情報の更新に際して、例えば、受信の時刻が現在時刻より一定時間(例えば100ms)より前の受信履歴の情報を消去しても良い。
監視ECU2100は、ステップS221で、受信中のデータフレームのIDが、受信履歴保持部2160に受信履歴を保持すべきデータフレームのIDでないと判断した後、或いは、ステップS222での処理の後に、受信中のデータフレームが、機能制限ルール保持部2180に保持されている機能制限ルールにおいて機能制限対象となる制御フレームであるか否かを判断する(ステップS223)。監視ECU2100は、ステップS223で、受信中のデータフレームが、機能制限対象となる制御フレームでないと判断した場合には、処理を終了する。
ステップS223で、受信中のデータフレームが機能制限対象の制御フレームであると判断した場合には、監視ECU2100は、その制御フレームに係る車両の制御を抑止すべきか否かを、機能制限ルールに基づいて直近の期間における車両の状態が不安定状態であるか否かを検証することで、判定する(ステップS224)。具体的には、監視ECU2100は、機能制限ルールの各項目のルールにおいて、受信中の制御フレームに合致する機能制限対象に対応する車両状態継続時間の条件を満たしているかを、受信履歴保持部2160に保持される、対応する車両の状態に係る状態フレームの受信履歴と、現在時刻とを参照することで検証することで、その判定を行う。監視ECU2100は、機能制限ルールにおける車両状態継続時間の条件が満たされるか否かに係る検証の結果、機能制限ルールにおける各項目のルールについて、いずれも車両状態継続期間の条件が成立していなければ、処理を終了する。
ステップS224での検証の結果、機能制限ルールにおける車両状態継続時間の条件が満たされていれば、受信中の制御フレームによる車両の制御を抑止すべく、その制御フレームを無効化するために、受信中の制御フレームであるデータフレームの最後尾が受信される前にエラーフレームをバス300に送信する(ステップS225)。これにより、その受信中のデータフレームにエラーフレームが上書きされて、そのデータフレームは無効化される。このため、バス300に接続されたECU(例えばECU200c)は、その無効化されたデータフレームに基づく車両の制御を行わない。
[2.7 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム11では、監視ECU2100が、一定期間に受信した状態フレームの集合に基づいて、車両の状態を示す特定の状態フレームのデータ値がある一定値或いは一定範囲内であるか否か、つまり安定状態であるか否かを検証する。特定の状態フレームは、機能制限対象とされる車両の制御を行う制御フレームに対応して定められている。この検証は、例えば、図16に示す機能制限ルールに基づいて、特定の状態フレームのデータ値が一定値或いは一定範囲内であることの継続時間がその一定期間続くか否かにより行われる。そして、監視ECU2100は、車両の制御を行うための制御フレームが送信されているときに、特定の状態フレームが示す車両の状態が一定期間において安定状態でない場合(つまり状態が一定期間において継続していない場合)に、その制御フレームを無効化することで、その車両の制御を抑止する。この一定期間の長さを、予め規定されているその状態フレームの送信間隔より長い時間に定めておくことが有用となる。これにより、攻撃者が、車両の状態を偽装した上で、不正な制御を引き起こす制御フレームを送信したとしても、その車両の状態の継続時間の短さによって、監視ECU2100にその制御フレームが無効化される。更に、正常に機能を利用する場合を考慮して、機能制限対象のデータフレームを無効化する条件としての車両状態継続時間を設定しておくことが有用である。これにより、正常に機能を利用する場合において、機能制限対象のデータフレームが無効化されず、攻撃者による不正な制御を引き起こすデータフレームのみが無効化され得る。
この監視ECU2100により、車両の状態を偽装して車両を不正に制御するような攻撃に対する防御が可能となり、車載ネットワークのセキュリティが確保され得る。また、この防御のための不正制御抑止方法は、監視ECU2100を、車載ネットワークに配置することで実現できるので、コストを抑えて車載ネットワークを保護することが可能となる。
(実施の形態3)
以下、実施の形態1で示した車載ネットワークシステム10の一部を変形した車載ネットワークシステム12について説明する。
本実施の形態に係る車載ネットワークシステム12における監視ECUは、車載ネットワークを流れる状態フレームを監視し、車両の状態の変化を計測し、車両の状態が、一定期間において所定回数を超えて変化する変化多発状態であるか否かに係る基準に基づいて、車両を制御する制御フレームによる制御機能を制限する。変化多発状態であるか否かは、データフレームが示すデータ値の所定量以上の変化の回数を観測することの他、所定量以上の変化が生じていることが継続する時間を観測すること等によっても判別可能である。具体例として、監視ECUは、クルーズコントロールモードか否か等といった制御指示の状態を示す状態フレームであるデータフレームに関して、制御指示が整合しない不整合状態の継続により変化多発状態が生じる場合において、そのデータフレームの制御指示が特定の指示であるときのその指示による制御を抑止する。この特定の指示を示すデータフレームは、制御指示の状態を示す状態フレームでありかつ車両の制御を指示する制御フレームでもある。監視ECUは、不整合状態が継続する時間に基づいて制御フレームを無効化し得る。
[3.1 車載ネットワークシステム12の全体構成]
図20は、本発明に関わる車載ネットワークシステム12の全体構成を示す図である。
車載ネットワークシステム12は、図20に示すように、バス300と、バス300に接続された監視ECU3100、ECU200a、3200e、3200f等とを含んで構成される。車載ネットワークシステム12を搭載する車両においては、複数のECUが通信して連携することで、クルーズコントロール機能が実現される。車載ネットワークシステム12は、ここで特に説明しない点については実施の形態1で示した車載ネットワークシステム10(図1参照)と同じである。車載ネットワークシステム12の構成要素のうち、車載ネットワークシステム10と同様の構成要素については、図20において、図1と同じ符号を付しており、ここでの説明を省略する。
監視ECU3100は、不正制御抑止装置としての一種のECUであり、バス300に接続される。監視ECU3100は、バス300に流れる状態フレーム、制御フレーム等のデータフレームを監視し、データフレームに含まれる制御指示等の情報に不整合が生じていないかを監視し、不整合が生じている場合には、不整合の継続時間を計測する。ここではクルーズコントロールモードか否か等の制御指示の状態を一種の車両の状態に係る情報であるとして、制御指示を含むデータフレームを、状態フレームとも表現する。また、その制御指示が車両の制御のための特定の指示である場合のそのデータフレームは、制御フレームである。監視ECU3100は、計測した不整合の継続時間に応じて、車両を制御する制御フレームによる制御を抑止すべきか否かを判定し、抑止すべき場合に制御フレームを無効化することで不正な車両制御を抑止する。
ECU3200eと、ECU3200fとはそれぞれ、スイッチ3260、モータ3270に接続されている。ECU3200eは、クルーズコントロールに関する情報を含むデータフレームを80msの送信間隔でバス300へ送信する。クルーズコントロールに関する情報は、現在クルーズコントロールモードに入っているか否かを示すフラグと、加減速の情報とを含む。ECU3200eは、運転者がスイッチ3260を押した場合に、クルーズコントロールモードに入る。ECU3200eは、車速をECU200aからのデータフレームにより取得しており、クルーズコントロールモードに入った時点の車速を保つように、加速度の大きさを計算し、データフレームに含めて送信する。運転者が再度スイッチ3260を押すか、ブレーキを踏むか等によりクルーズコントロールモードは解除される。ECU3200fは、モータ3270の制御を行い、車両の走る機能を実現する。また、ECU3200fは、ECU3200eから送信されるデータフレームを受信し、クルーズコントロールモードのフラグが立っている場合は、加速度の情報に基づいて、モータ3270を制御することで、車両の速度が一定に保たれるように制御する。
[3.2 ECU3200eが送信するデータフレームの例]
図21は、ECU3200eにより送信されるデータフレームの例を示す。
このデータフレームは、ID「0x400」を有し、DLCが3であり、そのデータフィールドは、1バイト目が、車両の状態がクルーズコントロールモードであるか否かを示すフラグであり、0の場合にはクルーズコントロールモードがOFF(つまり非制御状態)であることを示し、1の場合にはクルーズコントロールモードがON(つまり制御状態)になっていることを示す。2バイト目は、クルーズコントロールモードがONのときに、加速を行うか、減速を行うかを示すフラグであり、0で加速を、1で減速を示す。3バイト目は、加減速の大きさを示した量であり、0.01m/s2単位で表される。図21のデータフレームの例では、クルーズコントロールモードであり、加速度0.80m/s2の加速を要求するデータフレームを示している。つまり、このデータフレームは、車両がクルーズコントロールモードであるという状態フレームであり、かつ、加速を要求して車両を制御するための制御フレームである。
[3.3 監視ECU3100の構成]
図22は、監視ECU3100の構成図である。監視ECU3100はフレーム送受信部110と、フレーム処理部120と、フレーム生成部150と、制御情報監視部3130と、機能制限部3140と、受信履歴保持部3160と、機能制限ルール保持部3180と、不整合継続時間計測部3190とを含んで構成される。図22に示した監視ECU3100の各構成要素は、監視ECU3100のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で実現され得る。監視ECU3100は、ここで特に説明しない点については実施の形態1で示した監視ECU100(図4参照)と同じである。監視ECU3100の構成要素のうち、監視ECU100と同様の機能を有する構成要素は、図22において図4と同じ符号を付しており、ここでの説明を適宜省略する。
フレーム処理部120は、受信中のデータフレームを制御情報監視部3130と機能制限部3140とに通知する。
制御情報監視部3130は、制御指示を含むデータフレームを監視し、フレーム処理部120から通知されたデータフレームについて、受信履歴保持部2160が保持している受信履歴情報における、対応するIDに関する受信履歴を更新する。具体的には、制御情報監視部3130は、ECU3200eから送信されるクルーズコントロールモードがONか否かを示す制御指示のフラグ等を含む状態フレームのデータの値(例えば制御指示のフラグ値)と、その状態フレームが受信された時刻とに基づいて、受信履歴情報を更新する。更に、制御情報監視部3130は、受信履歴情報を参照して、一定期間に受信される同じIDを有するデータフレームにおける制御指示に係る状態(例えばクルーズコントロールモード)に不整合が生じていないかを判断する。制御情報監視部3130は、制御指示に係る状態に不整合が生じている場合に、不整合継続時間計測部3190に、不整合継続時間の計測開始要求を行う。
このような制御指示に係る状態の不整合は、例えば、運転者がスイッチ3260を押してクルーズコントロールモードをONにした時等といった、制御を行う機能がOFF状態からON状態に変化した時、或いは、ON状態からOFF状態に変化した時に発生し得る。しかし、正常に機能を利用している限りでは、このような不整合が長時間継続し続けることはない。制御情報監視部3130は、一定期間のデータフレームの監視により、不整合が生じている場合は、その継続時間である不整合継続時間を計測するように、不整合継続時間計測部3190に要求し、不整合が生じていない場合は、不整合継続時間計測部3190に対して、不整合継続時間を0にリセットして計測を停止するよう要求する。
機能制限部3140は、データフレームを受信した際に、機能制限ルール保持部3180に保持される機能制限ルールを参照し、受信中のデータフレームが機能制限対象の制御フレームである場合にその制御フレームによる車両の制御を抑止すべきか否かを判定する。その制御フレームによる制御を抑止すべきか否かの判定は、その制御フレームに関連して、不整合継続時間計測部3190により計測された不整合継続時間を参照することで行なわれる。機能制限部3140は、車両の制御を抑止すべきと判定した場合には、その車両の制御のための、受信中の制御フレームを無効化するために、エラーフレームの送信をフレーム生成部150に要求する。具体的には、車両の制御を抑止すべきか否かの判定のために、機能制限部2140は、機能制限ルールにおいて機能制限対象とされている制御フレームが受信中である場合に、不整合継続時間が機能制限ルールの条件を満たすという一種の変化多発状態であるか否かを判定する。
受信履歴保持部3160は、監視ECU3100が受信したデータフレームの受信履歴を保持する。受信履歴保持部3160は、例えば、直近の100ms以内に受信した、クルーズコントロールモードの制御指示のフラグを含むデータフレーム等といった状態フレームに関するデータ値及び受信の時刻を示す受信履歴情報(図23参照)を保持する。
機能制限ルール保持部3180は、受信中の制御フレームによる制御を抑止すべきか否かの判定基準となる機能制限ルール(図24参照)を保持する。この機能制限ルールは、受信中のデータフレームを無効化すべきか否かの判定基準であるとも言える。
不整合継続時間計測部3190は、制御指示毎について、制御指示の不整合の継続している時間を計測して計測結果等の計測関連情報(図25参照)を保持する。また、不整合継続時間計測部3190は、制御情報監視部3130からの計測開始要求を受けて、計測関連情報としての計測中フラグの値を更新する。不整合継続時間計測部3190は、この計測中フラグに従って、不整合継続時間の計測を開始、或いは、リセット(つまり停止)することができるタイマを制御指示毎に保持する。
[3.4 受信履歴情報]
図23は、受信履歴保持部3160が保持する受信履歴情報の一例を示す。同図の例では、直近100ms以内に受信されたID「0x400」のデータフレームのデータ値としての制御指示のフラグの値と、その受信の時刻とを含む。
この受信履歴情報によれば、直近100msの間に4回、ID「0x400」を有するデータフレームを受信しており、最新の受信時におけるフラグの値は1(つまりクルーズコントロールモードがON状態で、制御を行う意味)であり、受信の時刻は301msである。1回前の受信時においては、フラグの値は0(つまりクルーズコントロールモードがOFF状態で、制御を行わない意味)であり、受信の時刻は300msである。2回前の受信時においては、フラグの値は1であり、受信の時刻は221msである。3回前の受信時においては、フラグの値は0であり、受信の時刻は220msである。
[3.5 機能制限ルール]
図24に、機能制限ルール保持部3180が保持する機能制限ルールの一例を示す。
機能制限ルールは、車両の制御を抑止すべきか否かの基準を示す情報であり、同図の例では、車両の制御を行う制御フレームを特定する情報である機能制限対象及び制限機能と、基準となる車両状態の条件(具体的には不整合継続時間の条件)とを対応付けたものである。同図には、機能制限ルールが1つの項目のルールで構成される例を示しているが、ルールの項目数は複数であっても良い。制限機能は、不整合継続時間の条件が満たされた場合に制限する特定の制御指示を示す。制限機能が、「制限」であれば、不整合継続時間の条件が満たされた場合に、受信中の機能制限対象のデータフレームが、クルーズコントロールモードがON状態であることを1で示すフラグを有する制御フレームである場合に、その制御フレームによる制御を抑止すべきこと、つまり、その制御フレームを無効化すべきことを意味する。また、例えば制限機能が「継続」であれば、不整合が生じる前の制御指示による状態を維持するように、制御フレームを無効化すべきことを意味する。例えば、不整合が生じる前に、クルーズコントロールモードを示すフラグが0であった場合は、不整合継続時間の条件が満たされた場合に、クルーズコントロールモードを示すフラグが1のデータフレームである制御フレームを無効化する。不整合継続時間の条件は、機能制限のための条件としての不整合継続時間の長さを示す条件であり、この条件が満たされる場合に、機能制限対象のデータフレームに対する機能制限を行う。図24の例では、機能制限対象は、クルーズコントロールに係るID「0x400」を有するデータフレームであり、制限機能は「制御」であり、クルーズコントロールモードのON状態を示す制御指示を含むデータフレームが、無効化されるべき制御フレームになる。また、図24の例では、不整合継続時間の条件は、不整合継続時間が500ms以上であることである。図24の例の機能制限ルールは、クルーズコントロールモードの制御指示の状態についての不整合継続時間が500ms以上の長さとなる変化多発状態において、クルーズコントロールの特定の制御指示による制御を抑止すべきという基準を示しているとも言える。この変化多発状態においては、監視ECU3100は、クルーズコントロールに係る特定の制御指示を示すデータフレームである制御フレームを、エラーフレームの送信により無効化する。
[3.6 不整合継続時間]
図25は、不整合継続時間計測部3190が計測して保持する不整合継続時間等を含む計測関連情報の一例を示す。この例の計測関連情報は、データフレームのID毎に、制御指示についての不整合が継続した時間である不整合継続時間と、不整合継続時間を計測中であるか否かを示した計測中フラグと、不整合の発生前に制御を行っていたか否かを示す不整合発生前状態とを含んでいる。この例では、クルーズコントロールに係るID「0x400」のデータフレームについて、計測された不整合継続時間は100msであり、計測中フラグは1で継続時間の計測中を意味し、不整合発生前状態は「非制御」(つまりクルーズコントロールモードを示す制御指示のフラグが0)であることを示している。
[3.7 クルーズコントロール機能に対する攻撃の抑止に係るシーケンス]
図26は、クルーズコントロール機能への攻撃、及び、監視ECU3100による不正制御抑止処理に係るシーケンスの一例を示す。ここでは、監視ECU3100は、図24に例示した機能制限ルールを保持しているものとする。また、クルーズコントロール機能をONにするためのスイッチ3260の操作がなされていない状態であるとする。また、図26では、ECU200aが送信している車速に係るデータフレームについての記載を省略している。
ECU3200eは、クルーズコントロールに係るID「0x400」を有するデータフレームについてクルーズコントロールモードがOFF状態であることを示すように制御指示のフラグを0にしてバス300に送信する(ステップS311)。このデータフレームをECU3200fと、監視ECU3100とが受信する。ECU3200fはクルーズコントロールモードに係るフラグが0のため、車速を一定にするための加速或いは減速等といったモータ3270の制御を行わない。監視ECU3100は、受信履歴保持部3160に保持される受信履歴情報を、受信したデータフレームに基づいて更新する。
攻撃ECUは、クルーズコントロールに係るID「0x400」を有するデータフレームについて、クルーズコントロールモードがON状態であることを示すように制御指示のフラグを1にして送信する(ステップS312)。このデータフレームをECU3200fと、監視ECU3100とが受信する。ECU3200fはクルーズコントロールモードに係るフラグが1のため、そのデータフレームの加速或いは減速を示す加速度の値に従って、モータ3270を制御する。監視ECU3100は、受信履歴保持部3160に保持される受信履歴情報を、受信したデータフレームに基づいて更新する。このとき、監視ECU3100は、直近100ms以内に受信したデータフレームから、クルーズコントロールに関して、「制御」(つまりクルーズコントロールモードがON状態である制御指示)と、「非制御」(つまりクルーズコントロールモードがOFF状態である制御指示)との両方のデータフレームを受信していることから、不整合と判断して、不整合継続時間の計測を開始する。
その後、ステップS311と同様のID「0x400」を有しクルーズコントロールについて「非制御」を示すデータフレームの送信と、ステップS312と同様のID「0x400」を有しクルーズコントロールについて「制御」を示すデータフレームの送信とが500ms間、繰り返される(ステップS313)。
続いてECU3200eは、クルーズコントロールに係るID「0x400」を有し「非制御」を示すデータフレームを送信する(ステップS314)。このデータフレームを、ECU3200fと、監視ECU3100とが受信する。
続いて攻撃ECUは、ID「0x400」を有し「制御」(つまりクルーズコントロールモードがON状態である制御指示)を示すデータフレームを送信する(ステップS315)。
ステップS315での送信に対応して、監視ECU3100は、受信中のデータフレームが、機能制限ルールの機能制限対象及び制限機能で特定される制御フレームである場合に、機能制限ルールの車両状態の条件(つまり不整合継続時間の条件)が満たされるか否かにより、その制御フレームによる制御を抑止すべきか否かを判定する。この時点では、不整合継続時間が500ms以上続いた状態で、クルーズコントロールモードを示す制御指示(つまりフラグが1)を含むデータフレームである制御フレームを受信中であるので、監視ECU3100は、その制御フレームによる制御を抑止すべきと判定する。そして、その制御フレームの無効化のためにエラーフレームを送信する(ステップS316)。エラーフレームの送信により、監視ECU3100は、攻撃によるクルーズコントロールに係る不正な制御を抑止し得る。このエラーフレームにより、送信中であったID「0x400」を有しクルーズコントロールモードがON状態であることを示す制御指示を含む制御フレームが上書きされ、結果的に、攻撃ECUによるそのデータフレームの送信が中断されたことになる。ECU3200fは、そのエラーフレームを受信することにより、受信中のデータフレームを破棄して、そのデータフレームに基づくクルーズコントロールのための加速或いは減速等の制御を行わない。
このように、監視ECU3100は、機能制限ルールに基づく判定結果に応じてエラーフレームの送信を行うことで、攻撃ECUによるクルーズコントロールに係る不正な制御を行うためのデータフレームのECU3200fによる受信を、阻止することができる。
[3.8 監視ECU3100による監視動作]
図27は、監視ECU3100による監視動作の一例を示すフローチャートである。この監視動作に係る処理は、バス300にデータフレームが現れる度に行われる。
監視ECU3100は、データフレームを受信し、受信中のデータフレームのIDが、受信履歴保持部3160に受信履歴を保持すべきデータフレームのIDであるか否かを判断する(ステップS321)。例えば、受信履歴の保持対象に係るIDは、クルーズコントロールモードの状態に係る状態フレームであるデータフレームのID「0x400」である(図23参照)。
監視ECU3100は、受信中のデータフレームのIDが、受信履歴保持部3160に受信履歴を保持すべきデータフレームのIDである場合は、受信中のデータフレームにおける状態(例えばクルーズコントロールモードに係る制御指示のフラグ)を示すデータ値と、受信の時刻とを含ませるように、受信履歴保持部3160が保持する受信履歴情報における、そのIDに係る受信履歴を更新する(ステップS322)。なお、監視ECU3100は、この受信履歴情報の更新に際して、例えば、受信の時刻が現在時刻より一定時間(例えば100ms)より前の受信履歴の情報を消去しても良い。
続いて監視ECU3100は、受信履歴情報に基づいて、制御指示等を示すデータ値に不整合が生じているか否かを判断する(ステップS323)。
次に監視ECU3100は、ステップS323で判断した、不整合の有無に基づき、不整合継続時間計測部3190に不整合継続時間の計測を開始させ、或いは、停止させる(ステップS324)。
監視ECU3100は、ステップS321で受信中のデータフレームのIDが、受信履歴保持部3160に受信履歴を保持すべきデータフレームのIDでないと判断した後、或いは、ステップS324での処理の後に、受信中のデータフレームが、機能制限ルール保持部3180に保持されている機能制限ルールにおいて機能制限対象及び制限機能により特定される制御フレームであるか否かを判断する(ステップS325)。監視ECU3100は、ステップS325で、受信中のデータフレームが、機能制限対象となる制御フレームでないと判断した場合には、処理を終了する。
次に監視ECU3100は、受信中の制御フレームによる制御が抑止されるべきであるか否かを、不整合継続時間計測部3190により計測された不整合継続時間が、機能制限ルールにおける不整合継続時間の条件を満たすか否かに基づいて判定する(ステップS326)。不整合継続時間に係る車両の状態の条件が成立すれば、その制御フレームによる制御は抑止されるべきであると判定される。監視ECU3100は、その制御フレームによる制御が抑止されるべきでないと判定した場合、つまり、不整合継続時間の条件が満たされていない場合には、処理を終了する。
ステップS326でその受信中の制御フレームによる制御は抑止されるべきであると判定した場合には、監視ECU3100は、その制御フレームを無効化するために、受信中の制御フレームであるデータフレームの最後尾が受信される前にエラーフレームをバス300に送信する(ステップS321)。これにより、その受信中のデータフレームにエラーフレームが上書きされて、そのデータフレームは無効化される。このため、バス300に接続されたECU(例えばECU3200f)は、その無効化されたデータフレームに基づく車両の制御を行わない。
[3.9 実施の形態3の効果]
実施の形態3に係る車載ネットワークシステム12では、監視ECU3100が、一定期間に受信した制御指示に関連する状態フレームの集合に基づいて、制御指示の状態の変化が多発する変化多発状態であるか否かを検証する。この検証は、例えば、図24に示す機能制限ルールに基づいて、状態の変化による不整合が継続する時間である不整合継続時間が一定期間続くか否かにより行われる。そして、監視ECU3100は、不整合継続時間に応じて、機能制限ルールの機能制限対象及び機能制限により特定される制御フレームを無効化するか否かを判定する。これにより、攻撃者が、不正な制御を引き起こすデータフレームを送信し続けたとしても、不正な制御を引き起こし続けることができなくなる。これは、不正な制御を継続されることにより被害が大きくなるような、制御に関連するデータフレームを監視対象とすることで有効な対策となる。また、監視ECU3100によれば、例えばクルーズコントロール機能等の特定の機能の正常な利用において、その制御指示の状態の変化が時折発生する場合(つまり不整合継続時間が一定時間以下の場合)には、その制御が抑止されず、その変化が一定期間に多発するような攻撃の場合にその制御が抑止される。このため、正常なデータフレームが誤って無効化されない。
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1〜3を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
(1)上記実施の形態では、状態偽装検知部と、機能制限部と、車両状態監視部と、制御情報監視部とは、複数のECUがフレームの授受を行うためのバス300に接続された監視ECUの構成要素として説明したが、その他の1つ又は複数のECUの構成要素としても良い。上述した監視ECUは、車載ネットワークシステムにおいてバスに接続されたECUであれば、監視専用のECUである必要はなく、監視及び対処とは異なる機能を併せ持っても構わない。また、例えば監視ECUにおける1つ以上の構成要素を他のECUに移動させても良い。偽装状態の検知、機能制限ルールに基づく制御が抑止されるべき制御フレームの検知、制御の抑止のための制御フレームの無効化等を、どのECUが行っても良い。例えば、制御フレームを受信しその制御フレームの内容に応じて制御を行うECU等が、上述した監視ECUと同様の構成要素を有することとしても良い。また、例えば、車載ネットワークを複数のバスで構成した場合におけるバス間でのデータフレームの転送を行うゲートウェイECUに、上述した監視ECUの構成要素を含ませても良い。これは、ゲートウェイECUが、各バスの状態を監視できるので、有用である。この監視ECUの構成を含むゲートウェイECUでは、不正な制御フレームによる制御の抑止のために、エラーフレームによる制御フレームの無効化の他に、制御を抑止すべきと判定された制御フレームのバス間での転送を抑止する等の処理を行うことができる。また、ゲートウェイECUでは、多数の車載ネットワークの情報を監視できることから、不正な制御フレームによる制御の抑止のために実現できる機能の幅も広がる。
(2)上記実施の形態で示した制御フレームは、車両の制御に利用される情報を含むデータフレームであれば、いかなるフレームであっても良い。また、制御フレームには、車両の制御を抑止するという一種の制御のための、車両の制御の抑止指示を行うデータフレームも含まれると看做すこととしても良い。
(3)また、上記実施の形態では、機能制限対象となった制御フレームによる制御を抑止する例として、監視ECUがエラーフレームにより、受信中の制御フレームをバス上で上書きして無効化する例を示した。しかし、制御フレームによる制御の抑止の実現方法は、制御フレームの受信中にエラーフレームを送信する方法に限られない。例えば、制御フレームを受信しその制御フレームの内容に応じて制御を行うECUが、機能制限対象として制御が抑止されるべきと判定された制御フレームを破棄して、その制御フレームに対応した制御を行わないことで、制御フレームによる制御の抑止を実現しても良い。これは、車載ネットワークの構成に監視専用の監視ECUを含ませない場合等に有用となる。また、上述したようにゲートウェイECUで、制御を抑止すべきと判定した制御フレームの転送を抑止することで、制御フレームによる制御の抑止を実現しても良い。また、制御フレームによる制御の抑止の実現方法の例として、他のECUにその制御に係る機能を制限することを通知するデータフレームを送信する方法、ユーザにその機能を制限することを通知する方法、ADASの機能等といった自動制御機能の縮退を含み得る予め定めたフェールセーフモードに車両を移行させる方法等が挙げられる。
(4)上記実施の形態では、CANプロトコルにおけるデータフレームを標準IDフォーマットで記述しているが、拡張IDフォーマットであっても良く、データフレームの識別子であるIDは、拡張IDフォーマットでの拡張ID等であっても良い。
(5)上記実施の形態では、監視ECUが受信履歴保持部に直近100msに受信したデータフレームの情報を含む受信履歴情報を保持する例を示したが、その情報の受信からの保持期間として100msは一例に過ぎない。その保持期間として、車両の状態が偽装されていることを判定するのに必要な情報が得られる最低限の時間、或いは、制御指示に係る情報の不整合が継続していることを判断するのに必要な情報が得られる最低限の時間を設定すれば十分であり、例えば、目安としてデータフレームの送信間隔より長い任意の期間を設定することが想定される。また、監視ECUが、受信履歴情報として記録する受信履歴の対象となるデータフレームのIDは、1つでも複数でも良い。また、監視ECUが、保持する機能制限ルールの項目も1つでも複数でも良い。また、監視ECUが、車両状態保持部に保持する車両状態情報は、1つのIDに関する偽装フラグを含んでも良いし、複数のIDそれぞれに関する偽装フラグを含んでも良い。
(6)上記実施の形態では、監視ECUが受信履歴保持部に受信履歴情報として、データフレームのデータフィールドのデータ値、及び、受信の時刻を含む受信履歴を保持することとしたが、データ値、受信の時刻は一例に過ぎず、データ値或いは受信の時刻の保持の省略も可能である。受信履歴保持部は、その他の情報を保持しても良いし、データフィールドの一部のデータ値を保持しても良いし、受信したデータフレームの全てのフィールドの内容を保持しても良い。
(7)上記実施の形態では、機能制限ルール保持部に保持される機能制限ルールが示す基準として、車速に係る車両状態継続時間の条件と、ギアポジションに係る車両状態継続時間の条件とを示したが、その基準として各条件を組み合わせて、各条件の論理和或いは論理積等を用いても良い。また条件の数を増やしても良いし、少なくしても良い。機能制限ルールにおける機能制限対象の制御が正常に実行される場合において、確実に生じる車両状態を踏まえて車両状態の条件を定めることで、正常なデータフレームを誤って無効化することを防ぐことが可能となる。また、車速、ギアポジション等といった、車両の制御の条件となる車両の状態を適切に選定して、その車両の状態に係る条件を機能制限ルールにおいて定めておくことで、攻撃者による車両の状態の偽装用の状態フレーム送信後の制御フレームによる不正な制御を抑止することが可能となる。例えば、実施の形態1及び実施の形態2で示した駐車支援機能を有する車載ネットワークシステムの例においては、制御を示す制御フラグを含む、正常なハンドル制御指示に係る制御フレームが送信され始めるタイミングは、運転者が駐車支援機能の実行開始の操作をした後からである。ここで、運転者は、駐車支援機能の実行開始の操作に先立ってギアポジションを「リバース」に変更し、モニタ上に表示される車両後方の映像を参照しながら駐車位置を指定する。このため、機能制限ルールに係る基準となる車両状態の条件として、例えば、制御を示す制御フラグを含む、正常なハンドル制御指示に係る制御フレームが送信され始めるタイミングで車速が0km/hであることを設定しても良い。また、駐車支援機能でハンドルの操舵角を計算するに当たって、ハンドルを直進状態に戻すことを運転者に要求する方式が用いられる場合には、機能制限ルールに係る基準となる車両状態の条件として、例えば制御を示す制御フラグを含む、正常なハンドル制御指示に係る制御フレームが送信され始めるタイミングでハンドルの操舵状態が概ね直進状態であることを設定しても良い。また、運転者が駐車支援機能を使用する際の操作シーケンスを踏まえ、車両状態の条件として、例えば、車速が0km/hであること、ギアポジションが「リバース」であること、ハンドルの操舵状態が概ね直進状態にあること等の各々が、制御を示す制御フラグを含む、正常なハンドル制御指示に係る制御フレームが送信され始めるタイミングまでに、順に発生していることを設定しても良い。
(8)上記実施の形態では、車両の状態の偽装検知について、状態フレームについて規定された送信間隔に基づいて、予め規定された送信間隔に係るマージンの範囲内の期間に複数の状態フレームを受信した場合にその状態フレームに係る車両の状態が偽装されていると判定する例を示した。しかし、車両の状態の偽装検知の方法は、この例の方法に限らない。例えば、一定期間内のデータフレームの受信数の閾値を予め規定しておき、閾値を超えた場合に車両の状態が偽装されていると判定しても良い。また、一定期間内或いは一定受信回数内のデータフレームの値の変化量の閾値、或いは、値の変化回数の閾値を予め規定しておき、閾値を超えた場合に車両の状態が偽装されていると判定しても良い。また、異なるIDのデータフレームの関係性により、関係性の崩れから車両の状態の偽装を判定しても良い。また、車載ネットワークに流れるデータフレーム以外から取得できる情報、例えばGPS(Global Positioning System)情報、地図情報、イグニッションの状態に関する情報、各種センサ情報等を組み合わせて車両の状態の偽装を判定しても良い。
(9)上記実施の形態では、データフレームが平文でバスを流れる例を示したが、暗号化されていても良い。またデータフレームに、メッセージ認証コードを含んでいても良い。
(10)上記実施の形態では、機能制限ルールを、平文で保持している例を示したが、暗号化して保持していても良い。
(11)上記実施の形態では、車両状態継続時間の計算方法として、受信履歴情報を参照することにより、現在の時刻から、車両の状態が継続している時間を計算する例を示したが、この方法に限らない。例えば受信履歴情報として、特定のIDを有する状態フレームの最終の受信の時刻と、その時のデータ値のみを保持することによって、車両の状態の継続時間を計測しても良い。また、機能制限ルールにおける車両状態継続時間の条件に対応して、所定の時間が経過しているか否かが判別できれば良く、必ずしも車両の状態の継続時間を計算する必要はない。例えば、車両の状態が機能制限ルールに示される所定の条件を満たしたときにタイマをセットし、タイマが所定の時間よりも大きいか否かを判別することによって、機能制限ルールにおける条件が満たされるか否かを判別しても良い。また、車両の状態が機能制限ルールに示される所定の条件を満たしたときに、所定の時間のカウントダウンタイマをセットし、タイマが0となっているか否かを確認することで、機能制限ルールにおける条件が満たされるか否かを判別しても良い。
(12)上記実施の形態では、監視ECUが、機能制限ルールにおける車両状態継続時間が予め規定された閾値以上の時間を経過しないと、車両の状態が安定状態でないので機能制限対象に係る制御フレームによる制御を抑止する例を示した。しかし、車両状態継続時間が予め規定された閾値以上の時間を経過していないことで、車両の状態が安定状態でない場合に必ずしも直ちに制御フレームによる制御を抑止しなくても良く、安定状態でない状態がある程度継続した場合に抑止することとしても良い。これは、不正に送信されても危険性が低い制御に係る制御フレームに関して、正常な制御フレームを誤って無効化してしまう誤検知を抑制するために有用となる。
(13)上記実施の形態では、不整合継続時間として、制御を示す制御指示の情報を含むデータフレームと、非制御を示す制御指示の情報を含むデータフレームとの両方が一定期間に観測される時間を示したが、不整合継続時間の計測方法はこれに限らない。例えば、一定期間に受信された、制御のために用いられるデータ値を含む複数のデータフレームにおける、そのデータ値の変化量が閾値を超える場合に、不整合が発生しているとして、継続時間を計測しても良い。
(14)上記実施の形態では、車両の状態の例として、車速、ギアポジション等の例を示したが、監視ECUが監視する車両の状態はこれに限られるものではない。車両の状態は、例えば、車輪の回転速度、ヨーレート、加速度、操舵角、アクセルペダル開度、制動レベル、エンジンの回転数、モータの回転数、ギアポジション、イグニッションスイッチの状態、ハンドルの操舵トルク、前方障害物の有無、後方障害物の有無、前方障害物までの距離、後方障害物までの距離、左右の区画線の認識状態、左右の区画線までの距離等であり得る。車両の状態は、例えば、センサにより取得された状態であり得る。
(15)上記実施の形態では、監視ECUにおける抑止すべきか否かの判定の対象となる制御として、駐車支援機能と、クルーズコントロール機能とに係る制御の例を示したが、監視ECUにより抑止すべきか否かが判定される、制御フレームに基づく制御は、駐車支援機能に係るハンドル制御と、クルーズコントロール機能に係る加速又は減速の制御とに限られない。監視ECUにおける抑止すべきか否かの判定の対象となる制御は、例えば、衝突軽減ブレーキシステム、アダプティブクルーズコントロールシステム、レーンキープアシストシステム等に関連する制御であっても良い。また、監視ECUにおける抑止すべきか否かの判定の対象となる制御は、例えば、車両の走行に関わる制御であることとしても良い。車両の走行に関わる制御は、走ることに関する制御(例えば加速制御)、曲がることに関する制御(例えば操舵制御)、及び、止まることに関する制御(例えば制動制御)のいずれかである。また、監視ECUにおける抑止すべきか否かの判定の対象となる制御は、インストルメンタルパネル等の運転者への情報提示をする制御等といった、間接的に車両の走行に関わる制御に影響を与える制御であることとしても良い。
例えば、衝突軽減ブレーキシステムに関連する制御を、監視ECUにおける抑止すべきか否かの判定の対象とする場合には、監視ECUは、例えば、機能制限ルールにおける車両状態の条件として、前方障害物までの距離が偽装されていることとし、前方障害物までの距離を示す状態フレームの受信時刻、データ値等を監視して偽装の有無を判定しても良い。監視ECUは、例えば、前方障害物が存在しない状態、或いは、前方障害物が遠方に存在する状態から、前方障害物が突如として目前に存在する状態へ変化した場合に偽装がなされている判定しても良い。そして、監視ECUは、偽装がなされている状態で、衝突軽減ブレーキシステムに関連する制御のための制御フレームがバスに現れると、その制御フレームの無効化等を行う。
また、例えば、アダプティブクルーズコントロールシステムに関連する制御を、監視ECUにおける抑止すべきか否かの判定の対象とする場合には、監視ECUは、例えば、機能制限ルールにおける車両状態の条件として、先行車両までの距離が偽装されていることとし、先行車両までの距離を示す状態フレームの受信時刻、データ値等を監視して偽装の有無を判定しても良い。監視ECUは、例えば、先行車両が存在しない状態、若しくは、先行車両が遠方に存在する状態から、先行車両が突如として目前に存在する状態へ変化した場合、又は、先行車両が目前に存在する状態から、先行車両が突如として遠方に存在する状態、若しくは、先行車両が存在しない状態へ変化した場合に、偽装がなされていると判定しても良い。
また、例えば、レーンキープアシストシステムに関連する制御を、監視ECUにおける抑止すべきか否かの判定の対象とする場合には、監視ECUは、例えば、機能制限ルールにおける車両状態の条件として、区画線までの距離が偽装されていることとし、車両が走行する車線の左右いずれかに存在する区画線までの距離を示す状態フレームの受信時刻、データ値等を監視して偽装の有無を判定しても良い。監視ECUは、例えば、区画線が認識できていない状態、或いは、区画線までの距離が十分にある状態から、区画線までの距離が突如として短くなり、車両が区画線に迫っている状態へ変化した場合に、偽装がなされていると判定しても良い。
(16)上記実施の形態で監視ECU100、2100、3100によって不正制御抑止装置を例示したが、不正制御抑止装置は、必ずしも上述の監視ECUの全ての構成要素を有する必要はない。不正制御抑止装置は、図28に示すような構成であっても良い。同図に示す不正制御抑止装置4100は、CANプロトコルに従う車載ネットワークに係る車載ネットワークシステムにおいて、複数のECUが車両の状態に関する情報を含むフレームである状態フレーム、及び、車両に対して所定制御(例えばハンドル制御)を指示するフレームである制御フレームの授受を行うバス300(図1参照)に接続される。不正制御抑止装置4100は、受信部4110及び判定部4120を含んで構成される。受信部4110は、バス300から状態フレーム及び制御フレームを逐次受信する。受信部4110は、例えば、CANコントローラ等の通信回路、プロセッサ、メモリ等で実現される。判定部4120は、受信部4110により受信された制御フレームに基づく所定制御を抑止すべきか否かを、その制御フレームの受信時に先行する所定期間(例えば100ms間等)内に受信部4110により受信された状態フレームの集合に基づいて特定される、その所定期間における車両の状態が、所定基準(例えば上述の機能制限ルール等で示される基準)を満たすか否かに基づいて、判定する。判定部4120は、例えば、所定期間内に受信部4110により受信された状態フレームの集合に基づいて、所定期間における車両の状態を特定し得る。なお、所定期間における車両の状態は、例えば、1つ種類の状態フレーム(例えば同じIDを有する状態フレーム)の内容から特定されても良いし、複数種類の状態フレーム(例えば互いに異なるIDを有する状態フレーム)の内容から特定されても良い。
判定部4120で判定に用いる所定基準として、例えば、所定期間における車両の状態が偽装状態である場合に満たされて偽装状態でない場合に満たされない基準を用いても良いし、所定期間における車両の状態が安定状態でない場合に満たされて安定状態である場合に満たされない基準を用いても良いし、所定期間における車両の状態が、所定回数を超えて変化する変化多発状態である場合に満たされて変化多発状態でない場合に満たされない基準を用いても良い。これらのいずれかの基準を用いる場合には、判定部4120は、所定基準が満たされた場合に所定制御を抑止すべきと判定する。これらの例とは逆に、所定基準として、判定部4120がその所定基準が満たされない場合に所定制御を抑止すべきと判定するための基準を定めても良い。なお、判定部4120は、例えば、所定期間内に受信された状態フレームの集合に、異常な状態フレームが含まれている場合に車両の状態を偽装状態であると特定し、異常な状態フレームが含まれていない場合に車両の状態を偽装状態でないと特定し得る。この場合に、判定部4120は、その状態フレームの集合に異常な状態フレームが含まれているか否かを、いかなる方法で判別しても良い。例えば、所定期間内に受信された状態フレームの集合に、所定閾値より短い受信間隔で受信された、所定制御の実行のために用いられる同一のIDを有する(つまり同一項目の情報を示す)複数の状態フレームが含まれている場合に、その集合に異常な状態フレームが含まれていると判別しても良い。また、例えば、所定期間内に受信された状態フレームの集合に、所定制御の実行のために用いられる同一のIDを有する状態フレームが所定数より多く含まれている場合に、その集合に異常な状態フレームが含まれていると判別しても良い。また、例えば、所定期間内に受信された状態フレームの集合に、所定制御の実行のために用いられる同一のIDを有する2つの状態フレームが含まれ、その2つの状態フレームが示す情報の値の差異が所定量より大きい場合に、その集合に異常な状態フレームが含まれていると判別しても良い。また、例えば、所定期間内に受信された状態フレームの集合に、所定制御の実行のために用いられる同一のIDを有する複数の状態フレームが含まれ、受信された順に並べたその複数の状態フレームが示す情報の値が所定規則に従っていない場合に、その集合に異常な状態フレームが含まれていると判別しても良い。
判定部4120は、例えば、プロセッサ、タイマ、メモリ等で実現される。判定部4120は、判定結果に応じた出力を行い得る。判定部4120は、制御フレームに基づく所定制御を抑止すべきと判定した場合に、CANコントローラ等によって、その制御フレームの少なくとも一部に上書きするようにバス300にエラーフレームを送信することとしても良い。また、不正制御抑止装置4100は、例えば複数の通信路間でフレームの転送を担う転送機能を有することとしても良く、この場合において、判定部4120は、制御フレームに基づく所定制御を抑止すべきと判定した場合に、その制御フレームを転送対象から除外して転送しないこととしても良い。
また、不正制御抑止装置、或いは、監視ECUが、車両に搭載され、車載ネットワークシステムに含まれる例を示したが、車両以外の制御対象の制御のためのネットワークシステムに含まれるものであっても良い。車両以外の制御対象は、例えば、ロボット、航空機、船舶、機械等である。
(17)上記の実施の形態では、車載ネットワークでは、CANプロトコルに従って、状態フレーム、制御フレーム等のデータフレームの伝送が行われるものとしたが、CANプロトコルは、オートメーションシステム内の組み込みシステム等に用いられるCANOpen、或いは、TTCAN(Time-Triggered CAN)、CANFD(CAN with Flexible Data Rate)等の派生的なプロトコルを包含する広義の意味のものと扱われることとしても良い。また、車載ネットワークは、CANプロトコル以外のプロトコルを用いるものであっても良い。車両の状態に関する情報を含むフレームである状態フレーム、及び、車両に対して所定制御を指示するフレームである制御フレームの伝送がなされる車載ネットワークのプロトコルとして、例えば、LIN(Local Interconnect Network)、MOST(登録商標)(Media Oriented Systems Transport)、FlexRay(登録商標)、Ethernet(登録商標)等を用いても良い。また、これらのプロトコルを用いたネットワークをサブネットワークとして、複数種類のプロトコルに係るサブネットワークを組み合わせて、車載ネットワークを構成しても良い。また、Ethernet(登録商標)プロトコルは、IEEE802.1に係るEthernet(登録商標)AVB(Audio Video Bridging)、或いは、IEEE802.1に係るEthernet(登録商標)TSN(Time Sensitive Networking)、Ethernet(登録商標)/IP(Industrial Protocol)、EtherCAT(登録商標)(Ethernet(登録商標) for Control Automation Technology)等の派生的なプロトコルを包含する広義の意味のものと扱われることとしても良い。なお、車載ネットワークの通信路は、ネットワークバス(例えばバス300)或いはその他のワイヤ、光ファイバ等で構成される有線通信路であっても良いし、その他の通信路であっても良い。
(18)上記実施の形態における各装置を構成する構成要素の一部又は全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
(19)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
(20)本発明の一態様としては、例えば図12、図19、図27等に示す処理手順の全部又は一部を含む不正制御抑止方法であるとしても良い。例えば、不正制御抑止方法は、車両に対して所定制御(例えばハンドル制御等)を指示する制御フレームを含む複数のフレームの授受を、通信路(例えばバス300)を介して行う複数のECUを備える車載ネットワークシステムにおける不正制御抑止方法であって、その通信路から複数のフレームを逐次受信する受信ステップ(例えばステップS31、S221、S321)と、受信ステップで受信された制御フレームに基づく所定制御を抑止すべきか否かを、その制御フレームの受信時に先行する所定期間内に受信ステップで受信されたフレームの集合に基づいて、判定する判定ステップ(例えばステップS36、S224、S326)とを含む方法である。この不正制御抑止方法は、更に、判定ステップで制御フレームに基づく所定制御を抑止すべきと判定された場合に、所定制御の抑止のための所定処理を実行する処理ステップ(例えばステップS37、S225、S327)を含んでも良い。制御フレームに基づく所定制御の抑止のための所定処理は、例えば、その制御フレームを破棄する処理、エラーフレームの送信等によって通信路上でその制御フレームを上書きする処理、他の通信路へのその制御フレームの転送を抑止する処理、或いは、ECUにその制御フレームに基づく所定制御を実行させないように指示する処理等である。また、この方法をコンピュータにより実現するプログラム(コンピュータプログラム)であるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
(21)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。