(58)【調査した分野】(Int.Cl.,DB名)
ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知電子制御ユニットにおいて用いられる不正検知方法であって、
前記ネットワーク上で送信されたデータフレームを受信する受信ステップと、
第1識別子を有するデータフレームである対象データフレームの不正検知として、当該第1識別子と異なる第2識別子を有するデータフレームである基準データフレームと当該対象データフレームとの受信間隔を規定する所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知ステップとを含み、
前記第1識別子と異なる複数の識別子のうち、前記複数の電子制御ユニットが搭載される車両の状態に応じて1つの識別子を前記第2識別子として選択してから、前記検知ステップでの前記不正検知を行う
不正検知方法。
前記検知ステップでは、前記対象データフレームの受信タイミングと前記基準データフレームの受信タイミングとの関係が前記所定ルールに適合する場合に前記対象データフレームが不正でないと評価し、前記関係が前記所定ルールに適合しない場合に前記対象データフレームが不正であると評価する
請求項1〜3のいずれか一項に記載の不正検知方法。
前記不正検知方法は更に、前記対象データフレームの不正検知として、当該対象データフレームの受信タイミングと、当該受信タイミングに先行する前記対象データフレームの受信タイミングとの間隔に応じて、当該対象データフレームが不正であるか否かを評価する初期検知ステップを含み、
前記不正検知方法は、前記検知ステップでの前記不正検知に先行して、前記初期検知ステップでの前記不正検知を行い、前記初期検知ステップで前記対象データフレームが不正であると評価された後に、前記初期検知ステップでの前記不正検知を停止して、前記検知ステップでの前記不正検知を開始する
請求項1〜5のいずれか一項に記載の不正検知方法。
前記初期検知ステップでは、前記対象データフレームの不正検知として、当該対象データフレームの受信タイミングが、当該受信タイミングに先行する前記対象データフレームの受信タイミングを基準として予め定められた適正時間帯外である場合、及び、当該対象データフレームの受信タイミングが前記適正時間帯内でありかつ当該適正時間帯内のタイミングで別の前記対象データフレームが受信されていた場合には、不正であると評価する
請求項6記載の不正検知方法。
前記不正検知方法は、前記第1識別子と異なる複数の識別子のうち予め定められた選択基準に従って選択した1つの識別子を前記第2識別子と定めてから、前記検知ステップでの前記不正検知を開始し、前記第1識別子及び前記第2識別子と異なる複数の識別子のうち予め定められた前記選択基準に従って選択した1つの識別子を前記第3識別子と定めてから、前記後続検知ステップでの前記不正検知を開始する
請求項8記載の不正検知方法。
前記不正検知方法は、前記第1識別子と異なる複数の識別子のうち、1つの識別子を有するデータフレームについて未だ不正が検知されていない当該識別子を、前記第2識別子として選択してから、前記検知ステップでの前記不正検知を行う
請求項1〜8のいずれか一項に記載の不正検知方法。
【発明を実施するための形態】
【0018】
本発明の一態様に係る不正検知方法は、ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知電子制御ユニットにおいて用いられる不正検知方法であって、前記ネットワーク上で送信されたデータフレームを受信する受信ステップと、第1識別子を有するデータフレームである対象データフレームの不正検知として、当該第1識別子と異なる第2識別子を有するデータフレームである基準データフレームと当該対象データフレームとの受信間隔を規定する所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知ステップとを含む。
【0019】
また、本発明の一態様に係る不正検知電子制御ユニットは、ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知電子制御ユニットであって、前記ネットワーク上で送信されたデータフレームを受信する受信部と、第1識別子を有するデータフレームである対象データフレームと、前記第1識別子と異なる第2識別子を有するデータフレームである基準データフレームとの受信間隔を規定する所定ルールを示すルール情報を保持するルール保持部と、前記対象データフレームの不正検知として、前記所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知部とを備える。
【0020】
また、本発明の一態様に係る不正検知システムは、ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知のための不正検知システムであって、前記ネットワーク上で送信されたデータフレームを受信する受信部と、第1識別子を有するデータフレームである対象データフレームと、前記第1識別子と異なる第2識別子を有するデータフレームである基準データフレームとの受信間隔を規定する所定ルールを示すルール情報を保持するルール保持部と、前記対象データフレームの不正検知として、前記所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知部とを備える。
【0021】
本発明の一態様に係る不正検知方法は、CAN(Controller Area Network)プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる不正検知方法であって、前記バス上で送信されたデータフレームを受信する受信ステップと、第1識別子を有するデータフレームである対象データフレームの不正検知として、当該第1識別子と異なる第2識別子を有するデータフレームである基準データフレームと当該対象データフレームとの受信間隔を規定する所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知ステップとを含む不正検知方法である。これにより、不正検知対象の識別子(ID)のデータフレームと異なるIDのデータフレームを受信間隔の基準とするので、バスに不正なノードが接続されて不正なデータフレームが送信されたとしても適正なデータフレームを不正と誤検知する可能性が低減され、適切に不正なデータフレームの送信を検知し得るようになる。
【0022】
また、前記検知ステップでは、前記対象データフレームの受信タイミングと前記基準データフレームの受信タイミングとの関係が前記所定ルールに適合する場合に前記対象データフレームが不正でないと評価し、前記関係が前記所定ルールに適合しない場合に前記対象データフレームが不正であると評価することとしても良い。これにより、不正検知対象のデータフレームが不正であるか否かについて択一評価による検査が可能となる。なお、この評価結果単独又は他の評価等との組み合わせにより、不正検知対象のデータフレームが不正か否かの決定が可能となる。
【0023】
また、前記所定ルールは、前記受信間隔の適正範囲を規定し、前記検知ステップでは、前記対象データフレームの受信タイミングと、当該受信タイミングに先行する前記基準データフレームの受信タイミングとの差が前記適正範囲内である場合に前記所定ルールに適合するとして前記評価を行うこととしても良い。これにより、データフレームの受信間隔が許容誤差の範囲内であれば不正としないような評価が可能となる。
【0024】
また、前記不正検知方法は更に、前記対象データフレームの不正検知として、当該対象データフレームの受信タイミングと、当該受信タイミングに先行する前記対象データフレームの受信タイミングとの間隔に応じて、当該対象データフレームが不正であるか否かを評価する初期検知ステップを含み、前記不正検知方法は、前記検知ステップでの前記不正検知に先行して、前記初期検知ステップでの前記不正検知を行い、前記初期検知ステップで前記対象データフレームが不正であると評価された後に、前記初期検知ステップでの前記不正検知を停止して、前記検知ステップでの前記不正検知を開始することとしても良い。これにより、不正検知対象のデータフレーム同士の受信間隔に基づく不正検知を継続することが適切でない状態の発生に対応して、不正検知のための受信間隔の基準を切り替えるので、適切な不正検知が可能となる。
【0025】
また、前記初期検知ステップでは、前記対象データフレームの不正検知として、当該対象データフレームの受信タイミングが、当該受信タイミングに先行する前記対象データフレームの受信タイミングを基準として予め定められた適正時間帯外である場合、及び、当該対象データフレームの受信タイミングが前記適正時間帯内でありかつ当該適正時間帯内のタイミングで別の前記対象データフレームが受信されていた場合には、不正であると評価することとしても良い。これにより、不正検知対象のデータフレーム同士の受信間隔に基づく不正検知を継続することが適切でない状態の発生から、不正検知のための受信間隔の基準が切り替えられるようになる。
【0026】
また、前記不正検知方法は更に、前記基準データフレームの不正検知を行う基準検知ステップと、前記対象データフレームの不正検知として、前記第1識別子及び前記第2識別子と異なる第3識別子を有するデータフレームである別基準データフレームと当該対象データフレームとの受信間隔を規定するルールに基づいて、前記別基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う後続検知ステップとを含み、前記不正検知方法は、前記基準検知ステップで前記基準データフレームが不正と検知された場合には、前記検知ステップでの前記不正検知を停止して、前記後続検知ステップでの前記不正検知を開始することとしても良い。これにより、不正検知のための受信間隔の基準となるデータフレームについての不正が検知された時から、基準となるデータフレームを変更して適切な不正検知を続行できるようになる。
【0027】
また、前記不正検知方法は、前記第1識別子と異なる複数の識別子のうち予め定められた選択基準に従って選択した1つの識別子を前記第2識別子と定めてから、前記検知ステップでの前記不正検知を開始し、前記第1識別子及び前記第2識別子と異なる複数の識別子のうち予め定められた前記選択基準に従って選択した1つの識別子を前記第3識別子と定めてから、前記後続検知ステップでの前記不正検知を開始することとしても良い。これにより、選択基準を予め適切に定めておけば、不正検知のための受信間隔の基準となるデータフレームについて不正が検知された場合に、基準を適切なデータフレームに変更して不正検知を続行できるようになる。
【0028】
また、前記不正検知方法は、前記第1識別子と異なる複数の識別子のうち、1つの識別子を有するデータフレームについて未だ不正が検知されていない当該識別子を、前記第2識別子として選択してから、前記検知ステップでの前記不正検知を行うこととしても良い。これにより、不正が検知されたことのあるデータフレームを不正検知のための受信間隔の基準として用いる場合に比べて、不正検知を適切に行うことが可能となる。
【0029】
また、前記不正検知方法は、前記第1識別子と異なる複数の識別子のうち、前記複数の電子制御ユニットが搭載される車両の状態に応じて1つの識別子を前記第2識別子として選択してから、前記検知ステップでの前記不正検知を行うこととしても良い。これにより、不正検知のための受信間隔の基準として車両の状態に適した基準を用いて適切に不正検知を行うことが可能となる。
【0030】
また、前記検知ステップでは、前記第1識別子及び前記第2識別子と異なる1つ以上の識別子それぞれを1対1に有する1つ以上のデータフレームと前記基準データフレームとの集合における各データフレームについて当該データフレームと前記対象データフレームとの受信間隔を規定する、前記所定ルールを含むルール群に基づいて、前記集合におけるデータフレーム毎に当該データフレームの受信タイミングと前記対象データフレームの受信タイミングとに応じて当該対象データフレームが不正か否かの評価を行い、各評価の結果に基づいて当該対象データフレームが不正か否かを決定することとしても良い。これにより、複数の受信間隔に係るルールそれぞれによる評価結果を用いて総合的にデータフレームが不正か否かについて精度良く判定を行うことが可能となり得る。
【0031】
また、前記検知ステップでは、前記第1識別子及び前記第2識別子と異なる1つ以上の識別子それぞれを1対1に有する1つ以上のデータフレームと前記基準データフレームとの集合における各データフレームについて当該データフレームと前記対象データフレームとの受信間隔を規定する、前記所定ルールを含むルール群と、前記集合における各データフレームの受信タイミングと、前記対象データフレームの受信タイミングとに基づく所定演算により、当該対象データフレームが不正である確度を算定することで前記評価を行うこととしても良い。これにより、データフレームが不正である確度が得られるようになる。
【0032】
また、前記不正検知方法は更に、前記検知ステップでの前記評価の結果を記憶媒体に記録する記録ステップを含むこととしても良い。これにより、データフレームについての不正検知に係る評価結果を活用した処理を実現し得る。
【0033】
また、本発明の一態様に係る不正検知電子制御ユニットは、CAN(Controller Area Network)プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知電子制御ユニットであって、前記バス上で送信されたデータフレームを受信する受信部と、第1識別子を有するデータフレームである対象データフレームと、前記第1識別子と異なる第2識別子を有するデータフレームである基準データフレームとの受信間隔を規定する所定ルールを示すルール情報を保持するルール保持部と、前記対象データフレームの不正検知として、前記所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知部とを備える不正検知電子制御ユニットである。これにより、バスに不正なノードが接続されて不正なデータフレームが送信されたとしても適正なデータフレームを不正と誤検知する可能性が低減され、適切に不正なデータフレームの送信を検知し得るようになる。
【0034】
また、本発明の一態様に係る不正検知システムは、CAN(Controller Area Network)プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおける不正検知のための不正検知システムであって、前記バス上で送信されたデータフレームを受信する受信部と、第1識別子を有するデータフレームである対象データフレームと、前記第1識別子と異なる第2識別子を有するデータフレームである基準データフレームとの受信間隔を規定する所定ルールを示すルール情報を保持するルール保持部と、前記対象データフレームの不正検知として、前記所定ルールに基づき、前記基準データフレームの受信タイミングと当該対象データフレームの受信タイミングとに応じて、評価を行う検知部とを備える不正検知システムである。これにより、適切に不正なデータフレームの送信を検知し得るようになる。
【0035】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なCD−ROM等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【0036】
以下、実施の形態に係る車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【0037】
(実施の形態1)
以下、本発明の実施の形態として、複数の電子制御ユニット(ECU)がバスを介して通信する車載ネットワークシステム10において用いられる不正検知方法について、図面を用いて説明する。
【0038】
不正検知方法は、CANのバスに不正なノードが接続されて不正なフレームが送信されることを検知する方法であり、主としてバスに接続された不正検知ECUにより実行される。車載ネットワークシステム10における不正検知ECU100は、互いに異なる2つの識別子(メッセージID)を有するデータフレーム(メッセージ)間の受信間隔を基にして不正なデータフレームを検知する。これにより、不正なデータフレームが送信された場合にその不正なデータフレームと同じ識別子(メッセージID)を有する適正なデータフレームを不正と誤検知する可能性を低減する。
【0039】
[1.1 車載ネットワークシステム10の全体構成]
図1は、実施の形態1に係る車載ネットワークシステム10の全体構成を示す図である。
【0040】
車載ネットワークシステム10は、CANプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両におけるネットワーク通信システムである。車載ネットワークシステム10は、バスを介してフレームに係る通信を行う複数の装置を備え、不正検知方法を用いる。具体的には
図1に示すように車載ネットワークシステム10は、バス300と、不正検知ECU100、各種機器に接続されたECU(自動駐車ECU)200a、ECU(パワステECU)200b、ECU(ギアECU)200c等の各ECUといったバス300に接続された各ノードとを含んで構成される。なお、車載ネットワークシステム10には、不正検知ECU100及びECU200a、200b、200c以外にもいくつものECUが含まれ得るが、ここでは、便宜上不正検知ECU100及びECU200a、200b、200cに注目して説明を行う。ECUは、例えば、プロセッサ(マイクロプロセッサ)、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行される制御プログラム(コンピュータプログラム)を記憶することができる。例えばプロセッサが、制御プログラム(コンピュータプログラム)に従って動作することにより、ECUは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0041】
自動駐車ECU200a、パワステECU200b、ギアECU200cは、バス300と接続され、それぞれカメラ210、ハンドル(ステアリングホイール)220、ギア(変速機構)230に接続されている。また自動駐車ECU200aはタッチパネル240に接続されており、搭乗者の操作を受け付ける。自動駐車ECU200aは、周期的にバス300へ、データフレームを送信する。また搭乗者によるタッチパネル240の操作により、自動駐車モードへ移行し、カメラ210の情報を取得しながら、ハンドル220の操舵角を指示する信号をバス300に送信する。パワステECU200bは、バス300上のデータフレームを受信し、ハンドル操舵指示がある場合には、ハンドル220を指定された角度へ曲げる。ギアECU200cはギア230の状態を取得し、バス300へ、周期的にギア230の状態を通知するデータフレームを送信する。
【0042】
不正検知ECU100は、バス300に接続される一種のECUであり、バス上に流れるデータフレーム(つまりバス上に現れるデータフレーム)を監視して、不正なデータフレーム(つまり予め定められたルールに適合しないデータフレーム)が流れているか否かを判別するための不正検知処理を行う機能を有する。
【0043】
車載ネットワークシステム10においてはCANプロトコルに従って、各ECUがフレームの授受を行う。CANプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。ここではデータフレームを中心に説明する。
【0044】
[1.2 データフレームフォーマット]
以下、CANプロトコルに従ったネットワークで用いられるフレームの1つであるデータフレームについて説明する。
【0045】
図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)の各フィールドで構成される。
【0046】
SOFは、1bitのドミナントで構成される。バスがアイドルの状態はレセシブになっており、SOFによりドミナントへ変更することでフレームの送信開始を通知する。
【0047】
IDフィールドは、11bitで構成される、データの種類を示す値であるID(メッセージID)を格納するフィールドである。複数のノードが同時に送信を開始した場合、このIDフィールドで通信調停を行うために、IDが小さい値を持つフレームが高い優先度となるよう設計されている。
【0048】
RTRは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント1bitで構成される。
【0049】
IDEと「r」とは、両方ドミナント1bitで構成される。
【0050】
DLCは、4bitで構成され、データフィールドの長さを示す値である。ここでは、データフレームにおけるDLCの値を格納する4bitをDLCのフィールドとも称する。
【0051】
データフィールドは、最大64bitで構成される送信するデータの内容を示す値である。8bit毎に長さを調整できる。送られるデータの仕様については、CANプロトコルで規定されておらず、車載ネットワークシステム10において定められる。従って、車種、製造者(製造メーカ)等に依存した仕様となる。
【0052】
CRCシーケンスは、15bitで構成される。SOF、IDフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【0053】
CRCデリミタは、1bitのレセシブで構成されるCRCシーケンスの終了を表す区切り記号である。なお、CRCシーケンス及びCRCデリミタを合わせてCRCフィールドと称する。
【0054】
ACKスロットは、1bitで構成される。送信ノードはACKスロットをレセシブにして送信を行う。受信ノードはCRCシーケンスまで正常に受信ができていればACKスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にACKスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【0055】
ACKデリミタは、1bitのレセシブで構成されるACKの終了を表す区切り記号である。
【0056】
EOFは、7bitのレセシブで構成されており、データフレームの終了を示す。
【0057】
[1.3 エラーフレームフォーマット]
図3は、CANプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ(プライマリ)と、エラーフラグ(セカンダリ)と、エラーデリミタとから構成される。
【0058】
エラーフラグ(プライマリ)は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために6bitのドミナントを連続で送信する。この送信は、CANプロトコルにおけるビットスタッフィングルール(連続して同じ値を6bit以上送信しない)に違反し、他のノードからのエラーフレーム(セカンダリ)の送信を引き起こす。
【0059】
エラーフラグ(セカンダリ)は、エラーの発生を他のノードに知らせるために使用される連続した6ビットのドミナントで構成される。エラーフラグ(プライマリ)を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ(セカンダリ)を送信することになる。
【0060】
エラーデリミタ「DEL」は、8bitの連続したレセシブであり、エラーフレームの終了を示す。
【0061】
[1.4 不正検知ECU100の構成]
図4は、不正検知ECU100の構成図である。不正検知ECU100は、トランシーバ部130と、コントローラ部140と、マイコン部150とを含んで構成される。
【0062】
トランシーバ部130は、通信回路等の電子回路である。トランシーバ部130は、コントローラ部140から通知されたフレームをバス300に送信可能な電気信号に変換し送信し、また、バス300に現れる電気信号を受信することで、受信したフレームの内容をコントローラ部140へ通知する。トランシーバ部130は、バス300上で送信されたデータフレームを受信する受信部として機能する。
【0063】
コントローラ部140は、マイコン部150及びトランシーバ部130と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部140は、プロトコル処理部141を有する。
【0064】
プロトコル処理部141は、トランシーバ部130と通信を行い、プロトコル(CANプロトコル等)に従った処理を行う。プロトコル処理部141は、例えば受信中のフレームについてエラーを検知した場合は、トランシーバ部130にエラーフレームを送信させるべく、エラーフレームの送信(つまり送信要求)をトランシーバ部130に通知する。プロトコル処理部141は、データフレームの受信が完了した場合は、データフレームの受信完了をマイコン部150に通知する。プロトコル処理部141は、マイコン部150からのデータフレーム送信要求に対して、プロトコルに従ってデータフレームを送信できるようにトランシーバ部130に通知する。また、プロトコル処理部141は、トランシーバ部130を介して取得した、バス300に現れたデータフレームの内容(ID、DLC、データ等)をマイコン部150に与える。
【0065】
マイコン部150は、コントローラ部140と信号の授受を行う、プログラムを実行するプロセッサ(マイクロプロセッサ)及びメモリを含む半導体集積回路である。マイコン部150は、プログラムを実行するプロセッサ、メモリ等により実現される構成要素として、コントローラ通信部151と、不正検知処理部152と、フレーム生成部153と、ルール保持部154と、タイマ保持部155と、受信タイミング保持部156とを有する。
【0066】
コントローラ通信部151は、コントローラ部140から受信したデータフレームを、不正検知処理部152へ通知する。コントローラ通信部151は、フレーム生成部153から通知されたデータフレームを、コントローラ部140へ通知し、データフレーム送信要求を行う。
【0067】
不正検知処理部152は、コントローラ通信部151から通知されたデータフレームについて不正検知処理を行う検知部として機能する。不正検知処理は、バス300で送信されたデータフレームつまりバス300に現れたデータフレームの不正に関して評価する処理である。このデータフレームの不正に関する評価は、具体例としては、バス300で送信されたデータフレームつまりバス300に現れたデータフレームが不正であるか否かの評価、つまり予め定められたルールに適合しないか否かを判別することである。この不正検知処理においてルール保持部154に格納されている不正検知ルールを示すルール情報と、タイマ保持部155に格納されている現在タイミングの情報と、受信タイミング保持部156に格納されている、データフレームの過去の受信タイミングを示す受信タイミング情報とを参照して、現在受信したデータフレームが不正であるか否かを判別する。なお、ここでは説明の便宜上、不正検知ルールとして主に受信間隔に係るルールについて説明するが、不正検知ルールは、受信間隔以外のルールを含み得る。不正検知処理部152は、不正検知処理として、受信中のデータフレームのID(メッセージID)が、ルール保持部154のルール情報で不正検知ルールの対象として定められている場合に、その受信タイミングが、受信間隔の基準となる別のデータフレームの受信タイミングからの受信間隔及びマージンで定まる範囲内であるか否かを判別する検査を行う。受信したデータフレームの受信タイミングが、ルール情報が示す受信間隔及びマージンに基づく範囲内であれば、適正であり、この範囲外であれば不正となる。つまりデータフレーム間の両受信タイミングの関係が、ルール情報が示す受信間隔及びマージンに係る不正検知ルールに適合すれば適正であり、適合しなければ不正となる。なお、受信したデータフレームが不正であると判別(判定)した場合には、不正検知処理部152は、不正の発生(不正なデータフレームが送信されたこと)を各ECUに通知するために、フレーム生成部153に、その不正なデータフレームに関する情報を通知し得る。不正検知処理部152は、不正なデータフレームを検知した場合に、データフレームのID毎に不正が検知された累積回数をカウントして記録し、各IDのデータフレームについての総合的な不正の判断等に用いることとしても良い。また不正検知処理部152は、記録媒体(記憶媒体)等に、不正なデータフレームに関するログ情報(例えば不正なデータフレームのIDその他の内容、受信日時等)を記録することとしても良いし、不正を報知するための制御(表示、車両外部に所在するサーバ装置への情報送信等)を行っても良い。
【0068】
フレーム生成部153は、例えば不正検知処理部152から不正と判定したデータフレームに関する情報を通知された場合には、コントローラ通信部151に不正なデータフレームに関する情報を含むデータフレームの送信要求を通知する。
【0069】
ルール保持部154は、不正検知処理部152が参照する、データフレーム間の通信間隔(受信間隔)の規則(ルール)である不正検知ルールを示すルール情報(
図5参照)を保持する。
【0070】
タイマ保持部155は、カウンタ等の計時機構に基づいて計時される現在タイミング(現在時刻)を示す情報を保持し、データフレームを受信したタイミングを取得するために不正検知処理部152により参照される。なお、現在タイミングは何時を基準として計時されても良く、例えば、不正検知ECU100に電力供給が開始された時等をゼロとして計時され得る。
【0071】
受信タイミング保持部156は、過去に受信したデータフレームの受信タイミングをID毎に記録してなる受信タイミング情報を保持する。受信タイミング情報(
図6参照)は、不正検知処理部152から参照され、現在受信したデータフレームが不正であるか否かの判別に用いられる。
【0072】
[1.5 不正検知ルール]
図5は、ルール保持部154が保持する、不正検知ルールを示すルール情報の一例を示す図である。同図の例は、ID(メッセージID)が0x100のデータフレームに関する受信間隔について示している。不正検知ECU100は、検査(不正検知)の対象でないデータフレーム(基準データフレームと称する)と、不正検知の対象であるデータフレーム(対象データフレームと称する)との受信間隔を基にして不正検知を行う。同図の例のルール情報によれば、不正検知ECU100は、IDが0x200の基準データフレームと、IDが0x100の対象データフレームの受信間隔によって、IDが0x100である対象データフレームの不正検知を行うことになる。IDが0x100の対象データフレームの受信タイミングが、基準データフレーム(この例ではIDが0x200のデータフレーム)の受信タイミングから、25msという受信間隔が経過した後であれば、IDが0x100の対象データフレームは適正である。
【0073】
バス300でデータフレーム間の衝突が生じた場合の調停(再送制御)による受信間隔のゆらぎを考慮して、25msという受信間隔についてプラスマイナス3msのマージンが定められている。なお、バス300でデータフレーム間の衝突が生じた場合の1回の再送間隔は例えば1msより短い。
図5の例では、IDが0x200の基準データフレームと0x100の対象データフレームとの受信間隔が22ms〜28msの範囲内であれば対象データフレームが適正であると判定され、その範囲外であれば不正であると判定される。
【0074】
この例では、IDが0x100のデータフレームのみに関する不正検知ルールの例を示したが、複数のIDそれぞれのデータフレームを対象とする不正検知ルールを定めておいても良い。また、ルール情報が、IDが0x100の対象データフレームに関して、1つのID(0x200)の基準データフレームに係る受信間隔を規定した不正検知ルールを表す例を示したが、基準データフレームとするデータフレームのIDは、1つに限られず、2つでも良いし、3つ以上あっても良い。また、ルール情報が、複数の基準データフレームそれぞれについてのID及び受信間隔に係るルールを示す場合に、不正検知処理部152は、任意の個数のルールを不正検知に用い得る。例えば、受信間隔に係るルールが5つあり、そのうち3つのルール(互いに異なる3つのIDの各データフレームを各基準データフレームとして各受信間隔を規定したルール)を不正検知に用いた場合に、3つのルールのいずれかを満たさない場合に、総合的に不正と判断しても良いし、3つのルールのいずれかが満たされると、総合的に適正であると判断しても良い。また、多数決により、不正検知に用いた3つのルールのうち2つ以上のルールに基づいて不正と判定した場合(2つ以上のルールに適合しない場合)に、総合的に不正であると判断し、2つ以上のルールに基づいて適正と判定した場合(2つ以上のルールに適合した場合)に、総合的に適正であると判断しても良い。また、
図5の例では、IDが0x100の対象データフレーム同士の受信間隔を不正検知ルールに含めていないが、例えば、IDが0x100のデータフレームの受信間隔(例えば50ms)についても、不正検知ルールに含めても良い。なお、また、ルール情報の内容は、暗号化されて保持されても良い。
【0075】
[1.6 受信タイミング情報]
図6は、受信タイミング保持部156に格納される、受信タイミング情報の一例を示す図である。この受信タイミング情報は、不正検知ECU100が過去に受信したデータフレームについての受信タイミングを、タイマ保持部155の現在タイミングを参照してID毎に記録したものである。
図6の例は、ID(メッセージID)が0x100であるデータフレームを前回受信したタイミングは201msであり、IDが0x200であるデータフレームを前回受信したタイミングは176msであることを示している。
【0076】
[1.7 自動駐車ECU200aの構成]
図7は、ECU(自動駐車ECU)200aの構成図である。ECU200aは、トランシーバ部130と、コントローラ部140と、マイコン部250とを含んで構成される。
【0077】
トランシーバ部130及びコントローラ部140は、不正検知ECU100(
図4参照)におけるトランシーバ部130及びコントローラ部140と、同様であるため説明を省略する。
【0078】
マイコン部250は、コントローラ部140と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。マイコン部250は、プログラムを実行するプロセッサ、メモリ等により実現される構成要素として、コントローラ通信部151と、フレーム処理部252と、フレーム生成部253と、外部機器入出力部254とを有する。
【0079】
コントローラ通信部151は、不正検知ECU100(
図4参照)におけるコントローラ通信部151と同様である。但し、ECU200aのコントローラ通信部151は、コントローラ部140から受信したデータフレームを、フレーム処理部252へ通知する。コントローラ通信部151は、フレーム生成部253から通知されたデータフレームを、コントローラ部140へ通知し、データフレーム送信要求を行う。
【0080】
フレーム処理部252は、コントローラ通信部151から通知されたデータフレームを処理して結果を外部機器入出力部254へ通知する。
【0081】
フレーム生成部253は、外部機器入出力部254から通知された値に基づいてデータフレーム(
図8参照)を生成し、コントローラ通信部151に、データフレームを通知する。
【0082】
外部機器入出力部254は、ECU200aに接続される外部機器と、通信を行う。即ち、外部機器入出力部254は、タッチパネル240から操作に応じて自動駐車モードへの移行指示を受け付けて、カメラ210から撮影した車両周辺を示す情報を取得してフレーム生成部253に通知する。
【0083】
パワステECU200b及びギアECU200cも上述の自動駐車ECU200aと同様の構成を備える。但し、パワステECU200bにおける外部機器入出力部254は、パワステECU200bに接続されるハンドル220へ、フレーム処理部252から通知された値に基づいた制御信号(操舵を行うための信号)を通知する。また、ギアECU200cにおける外部機器入出力部254は、ギア230の状態を取得してフレーム生成部253に通知する。
【0084】
[1.8 データフレーム例]
図8は、送信されるデータフレームについてのID(メッセージID)及びデータフィールド(データ)の一例を示す図である。
【0085】
図8で(a)は、自動駐車ECU200aが送信するデータフレームの例であり、(b)は、ギアECU200cが送信するデータフレームの例である。
【0086】
自動駐車ECU200aが送信するデータフレームのメッセージIDは「0x100」であり、DLCは「4」(4バイト)である。データフィールドの1バイト目はモードを示しており、自動駐車モードのときに値が1になる。自動駐車モードでないときには、2バイト目以降のデータフィールドの値は無効になる。データフィールドの2バイト目は自動駐車モードのときにハンドル220をどの方向に曲げるかを示す。この値が0の時は、ハンドル220を右に曲げ、この値が1の時は、ハンドル220を左に曲げる。データフィールドの3バイト目と4バイト目とを合わせた、2バイトでハンドル220を曲げるときの角度を表す。
図8の(a)の例は、自動駐車モードであり、ハンドル220を右に256(0x100)度曲げることを示している。
【0087】
ギアECU200cが送信するデータフレームのメッセージIDは「0x200」であり、DLCは「1」(1バイト)である。データフィールドには、ギア230の状態を示す値が含まれる。この値は、ギア230がニュートラル状態であれば「0」となり、ギア230がリバース状態であれば「1」となり、ギア230がドライブ状態であれば「2」となる。
図8の(b)の例は、ギア230がリバース状態であることを示している。
【0088】
[1.9 不正検知ECU100のデータフレームの不正検知の動作例]
図9は、バス300に逐次現れるデータフレームを不正検知ECU100が受信して不正検知を行う例を示す図である。
図9では、自動駐車ECU200aが周期的に送信する、IDが0x100のデータフレームF2、F5、F8と、ギアECU200cが周期的に送信する、IDが0x200のデータフレームF1、F4、F7とがバス300へ逐次現れる様子を表している。また、
図9では、バス300にアクセス可能な攻撃者(不正ECU)が、バス300にIDが0x100の不正なデータフレームF3、F6、F9を周期的に送信して、ハンドル220の不正制御を試みている状況を表している。この例では、不正検知ECU100は不正検知(検査)として、IDが0x100のデータフレームについて不正に関する評価(具体的には不正か否かの判別)を行う。なお、
図9では示さないが、不正検知ECU100は、IDが0x100以外のデータフレームを対象とした不正検知(不正に関する評価)を行い得る。
【0089】
不正検知ECU100は、IDが0x200のデータフレームF1を受信したタイミングを、受信タイミング情報として、保持する。次に不正検知ECU100は、ルール保持部154が保持するルール情報の不正検知ルールに基づき、IDが0x100のデータフレームF2の受信タイミングが、IDが0x200のデータフレームF1の受信タイミング(受信タイミング情報が示すタイミング)から22ms〜28msの範囲T1内であるかを検査する。範囲T1は、データフレームF1の受信タイミングを基準として、ルール情報(
図5参照)が示す受信間隔25msを中心として前後にマージン3msをとった時間帯を表す。自動駐車ECU200aが送信した、IDが0x100のデータフレームF2は、範囲T1内のタイミングで受信しているため、適正なデータフレームであると判定する。また、次に受信する攻撃者(不正ECU)が送信する、IDが0x100のデータフレームF3については、範囲T1内外の判別(つまり不正か否かの判別)の結果として範囲T1外であるため不正と判定する。
【0090】
また、同様に、不正検知ECU100は、IDが0x200のデータフレームF4を受信したタイミングを保持し、IDが0x100のデータフレームF5の受信タイミングが、データフレームF4の受信タイミングから22ms〜28msの範囲T2内であるか否かを検査して、範囲T2内なのでデータフレームF5を適正と判定し、次に受信するIDが0x100のデータフレームF6については、範囲T2外であるため不正と判定する。
【0091】
以降も同様に、不正検知ECU100は、IDが0x200のデータフレームF7の受信タイミングからの受信間隔に基づいて、範囲T3内に受信したIDが0x100のデータフレームF8を適正と判定し、範囲T3外に受信したIDが0x100のデータフレームF9を不正と判定する。
【0092】
[1.10 不正検知ECU100による不正検知処理]
以下、不正検知ECU100が、不正検知処理としてデータフレームの受信に際して行う処理について
図10のフローチャートに即して説明する。
【0093】
不正検知ECU100は、バス300からデータフレームを受信する(ステップS1101)。
【0094】
不正検知ECU100は、ルール保持部154が保持するルール情報に基づき、受信したデータフレームのIDが0x100であるか否かを確認し(ステップS1102)、受信したデータフレームのIDが0x100でない場合には0x200であるか否かを確認する(ステップS1103)。
【0095】
ステップS1103でIDが0x200であると確認した場合には、不正検知ECU100は、タイマ保持部155を参照して現在タイミングを得て、受信タイミング保持部156に格納されている、IDが0x200に関するデータフレームの受信タイミングを示す受信タイミング情報を、現在タイミングを示すように更新して(ステップS1104)、処理を終了する。
【0096】
ステップS1103でIDが0x200でないと確認した場合には、不正検知ECU100は、1つのデータフレームの受信に対応する処理を終える。
【0097】
不正検知ECU100は、ステップS1101で受信したデータフレームのIDが0x100である場合には(ステップS1102)、その受信タイミングが、IDが0x200のデータフレームの受信から22ms〜28ms経過後の範囲内であるか否かを判別する(ステップS1105)。即ち、不正検知ECU100は、タイマ保持部155の参照による現在タイミングが、受信タイミング保持部156に格納されている受信タイミング情報が示す、IDが0x200のデータフレーム(基準データフレーム)の受信タイミングと、ルール情報が示すIDが0x200のデータフレームとの受信間隔(25ms)を加算したタイミングに、マージン(3ms)を減算した値からマージンを加算した値までの範囲内であるかを検査する。IDが0x100のデータフレーム(対象データフレーム)の受信タイミングが、基準データフレームの受信タイミングに基づくその範囲内に収まっていなければ、不正検知ECU100は、その対象データフレームを不正であると判定して、1つのデータフレームの受信に対応する処理を終える(ステップS1106)。
【0098】
ステップS1105で、IDが0x100の対象データフレームの受信タイミングが、基準データフレームの受信タイミングに基づき規定の受信間隔及びマージンで定まる範囲内に収まっていれば、不正検知ECU100は、対象データフレームは適正であると判定する。即ち、不正検知ECU100は、受信間隔の適正範囲を規定した不正検知ルールに適合する場合に対象データフレームは適正であり、適合しない場合に不正であると判定する。そして、不正検知ECU100は、タイマ保持部155を参照して、受信タイミング保持部156に格納されている、IDが0x100のデータフレームの受信タイミングを示す受信タイミング情報を、現在タイミングを示すように更新して(ステップS1107)、1つのデータフレームの受信に対応する処理を終える。
【0099】
図10では、主にIDが0x100のデータフレームを対象として不正検知を行う例を示しているが、不正検知ECU100は、不正検知処理として、他のIDのデータフレームを対象とした不正検知も行い得る。なお、ステップS1107で更新された、IDが0x100のデータフレームの受信タイミングを示す受信タイミング情報は、例えば、
図10の例以外における不正検知(例えばIDが0x100のデータフレーム同士の受信間隔に係る検査或いはその他のIDのデータフレームの検査)に基準として用いるために利用され得る。
【0100】
このように不正検知ECU100による不正検知処理は、バス300上で送信されたデータフレームを受信する受信ステップ(ステップS1101)を含む。また不正検知処理は、第1識別子(例えば0x100というID)を有するデータフレームである対象データフレームの不正検知として、その第1識別子と異なる第2識別子(例えば0x200というID)を有するデータフレームである基準データフレームと対象データフレームとの受信間隔を規定する所定ルール(つまりルール情報が示す不正検知ルール)に基づいて、基準データフレームの受信タイミングと対象データフレームの受信タイミングとに応じて、評価(不正か否かの判別等)を行う検知ステップ(例えばステップS1102、S1105、S1106等)を含む。また、不正検知処理は、検知ステップでの評価の結果を記憶媒体に記録する記録ステップを含み得る。
【0101】
[1.11 実施の形態1の効果]
実施の形態1に係る車載ネットワークシステム10では、不正検知ECU100が、データフレームの不正に関する評価(不正か否かの判別等)の対象とするデータフレームと、そのデータフレームとは異なるID(メッセージID)を有するデータフレームとの受信間隔に基づいて、その評価を行う。
【0102】
これにより、攻撃者(バス300にアクセスする不正ECU等)による不正なデータフレームの送信が検知され得る。
【0103】
ところで例えば、自動駐車ECU200aが周期的に送信するIDが0x100の正規なデータフレームについての受信間隔(同じIDのデータフレーム同士の間の受信間隔)に基づいてデータフレームの不正に関する評価を行う場合には、攻撃者によるIDが0x100の不正なデータフレームの送信の結果として、正規なデータフレームが不正と判定され得る。例えば、データフレームが適正と判定される時間帯(受信間隔に基づく範囲)に複数のデータフレームが受信された場合に、その複数のうちに攻撃者が送信した不正なデータフレームが存在してその攻撃者により送信されたデータフレームが次回の受信間隔に基づく評価の基準となり得るからである。
【0104】
これに対し、車載ネットワークシステム10においては、IDが0x200のデータフレーム(基準データフレーム)からの受信間隔によってIDが0x100のデータフレームの不正に関する評価を行うので、正規なデータフレームが不正と判定される可能性が低減されている。例えば、不正な攻撃の対象でない可能性の高いと推定されるデータフレームが、受信間隔の基準となる基準データフレームとして定められることが有用である。また、あるIDの対象データフレームの不正に関する評価を行うために、複数の不正検知ルールを設けて、複数の基準データフレームそれぞれと対象データフレームとの各受信間隔に基づいて、総合的に評価(不正か否かの判別等)すると、対象データフレームの不正に関する評価をより精度良く行える可能性がある。
【0105】
(実施の形態2)
以下、実施の形態1で示した車載ネットワークシステム10を一部変形してなる車載ネットワークシステム11について説明する。
【0106】
本実施の形態に係る車載ネットワークシステム11は、不正検知の対象のデータフレームに対する受信間隔の基準となるデータフレームを切り替える不正検知方法を用いる。車載ネットワークシステム11における不正検知ECU2100は、まず、同一のIDを有するデータフレーム同士の受信間隔を基にして不正か否かの判別を行い、不正と判定すると、不正が検知されていない、別のIDを有するデータフレームを基準として受信間隔を基にして不正か否かの判別を行う。
【0107】
[2.1 車載ネットワークシステム11の全体構成]
図11は、本実施の形態に係る車載ネットワークシステム11の全体構成を示す図である。
【0108】
車載ネットワークシステム11は、
図11に示すように、バス300と、不正検知ECU2100、各種機器に接続されたECU(自動駐車ECU)200a、ECU(パワステECU)200b、ECU(ギアECU)200c、ECU(車速ECU)2200d等の各ECUといったバスに接続された各ノードとを含んで構成される。本実施の形態において、実施の形態1と同様の機能を有する構成要素については、同じ符号を付して説明を省略する。また、車載ネットワークシステム11は、本実施の形態で特に示さない点については車載ネットワークシステム10と同様である。
【0109】
車速ECU2200dは、バス300と接続され、車速センサ2250に接続されている。車速ECU2200dは、自動駐車ECU200aと同様の構成を備える(
図7参照)。但し、車速ECU2200dにおける外部機器入出力部254は、車速センサ2250から通知される信号を基にして、車の現在の速度を通知するデータフレームを生成するようにフレーム生成部253に通知する。これにより、車速ECU2200dは、車両の現在の速度を通知するデータフレームを、周期的にバス300に送信することになる。
【0110】
不正検知ECU2100は、バス300に接続される一種のECUであり、バス300上に流れるデータフレームを監視して、不正なデータフレームが流れているか否かを判別するための不正検知処理を行う機能を有する。
【0111】
[2.2 不正検知ECU2100の構成]
図12は、不正検知ECU2100の構成図である。不正検知ECU2100はトランシーバ部130と、コントローラ部140と、マイコン部2150とを含んで構成される。実施の形態1と同様の機能を有する構成要素は、同じ符号を付して説明を省略する。
【0112】
マイコン部2150は、コントローラ部140と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。マイコン部2150は、プログラムを実行するプロセッサ、メモリ等により実現される構成要素として、コントローラ通信部151と、フレーム生成部153と、不正検知処理部2152と、ルール保持部2154と、タイマ保持部155と、受信状態保持部2156とを有する。
【0113】
コントローラ通信部151は、コントローラ部140から受信したデータフレームを、不正検知処理部2152へ通知する。
【0114】
不正検知処理部2152は、コントローラ通信部151から通知されたデータフレームについて不正検知処理を行う。不正検知処理部2152は、この不正検知処理においてルール保持部2154に格納されている不正検知ルールを示すルール情報と、タイマ保持部155に格納されている現在タイミングの情報と、受信状態保持部2156に格納されている、データフレームの過去の受信状態等を示す受信状態情報とを参照して、現在受信したデータフレームが不正であるか否かを判別する。
【0115】
不正検知処理部2152は、不正検知処理として、受信中のデータフレームのID(メッセージID)が、ルール保持部154のルール情報で不正検知ルールの対象として定められている場合に、その受信タイミングが、受信間隔の基準となるデータフレームの受信タイミングからの受信間隔及びマージンで定まる範囲内であるか否かを判別する検査を行う。受信したデータフレームの受信タイミングが、ルール情報が示す受信間隔及びマージンに基づく範囲内であれば、適正であり、この範囲外であれば不正となる。この範囲は、受信に係る適正時間帯であり、受信適正時間帯と称する。なお、受信したデータフレームが不正であると判定した場合には、不正検知処理部2152は、不正の発生を各ECUに通知するために、フレーム生成部153に、その不正なデータフレームに関する情報を通知し得る。不正検知処理部2152は、不正なデータフレームを検知した場合に、データフレームのID毎に不正が検知された累積回数をカウントして記録し、各IDのデータフレームについての総合的な不正の判断等に用いることとしても良い。また不正検知処理部2152は、記録媒体(記憶媒体)等に、不正なデータフレームに関するログ情報(例えば不正なデータフレームのIDその他の内容、受信日時等)を記録することとしても良いし、不正を報知するための制御(表示、車両外部に所在するサーバ装置への情報送信等)を行っても良い。
【0116】
ルール保持部2154は、不正検知処理部2152が参照する、データフレーム間の通信間隔(受信間隔)の規則(ルール)である不正検知ルールを示すルール情報(
図13参照)を保持する。不正検知処理部2152では、この不正検知ルールに基づいて、受信適正時間帯を特定して、不正検知対象となるデータフレームがその受信適正時間帯の範囲内か否かによりそのデータフレームが不正か否かを判別する。不正検知処理部2152は、受信適正時間帯の特定を、受信状態保持部2156に格納されている受信状態情報を参照して行う。
【0117】
受信状態保持部2156は、受信状態情報(
図14参照)を保持する。即ち、受信状態保持部2156は、データフレームのID毎に過去に受信したデータフレームの受信タイミングを保持する。また、受信状態保持部2156は、不正検知処理のために、ルール保持部2154に格納されている受信間隔に係る不正検知ルールを満たすようなデータフレーム(受信適正時間帯内に受信したデータフレーム)を受信したタイミングについて、タイマ保持部155を参照して現在タイミングを取得して、次回受信タイミング候補として一時的に保持する。また、受信状態保持部2156は、データフレームのID毎に、不正が発生したか否かを示す不正発生状態を保持する。例えば、受信適正時間帯の終期が経過する度に次回受信タイミング候補を、候補がない状態に設定すると、次回受信タイミング候補としてタイミング値が既に保持されている受信適正時間帯内において複数のデータフレームを受信した場合に不正が発生したと判別して、不正発生状態を更新し得る。また、受信状態保持部2156は、基準としたデータフレームのID毎に、基準のデータフレームからの前回の受信間隔についての情報も保持する。受信状態保持部2156が保持する受信状態情報は、不正検知処理部2152から参照又は更新され、現在受信したデータフレームが不正であるか否かの判別に用いられる。
【0118】
[2.3 不正検知ルール]
図13は、ルール保持部2154が保持する、不正検知ルールを示すルール情報の一例を示す図である。同図の例は、実施の形態1で
図5により示したルール情報が1つの受信間隔を示したのに対して、複数のIDそれぞれを有するデータフレーム相互間について規定された受信間隔とマージンとを示している。
【0119】
図13のルール情報は、例えば、IDが0x100であるデータフレームについては、IDが0x100のデータフレームとの受信間隔が50msであること、つまり同じIDのデータフレーム同士の受信間隔が50msであることを示している。このIDが0x100のデータフレーム同士では、直前のデータフレームの受信タイミングに受信間隔(50ms)を加算してマージンの値を減算した47msから、マージンの値を加算した53msまでを受信適正時間帯とすることになる。この受信適正時間帯にデータフレームを受信すれば、受信したデータフレームは基本的に適正と判定される。但し、その受信適正時間帯内に複数のデータフレームを受信した場合には、不正なデータフレームが送信されたと判定されることになる。
【0120】
また、
図13のルール情報は、IDが0x100であるデータフレームを不正検知の対象(対象データフレーム)としたときに、IDが0x200のデータフレームを基準データフレームとして、基準データフレームの受信から、対象データフレームを受信するまでの受信間隔が25msであることを示している。同様に、IDが0x200の基準データフレームを受信してから、22ms〜28msの間が、IDが0x100の対象データフレームについての受信適正時間帯となる。
【0121】
また、
図13のルール情報は、IDが0x100であるデータフレームを不正検知の対象(対象データフレーム)としたときに、IDが0x300のデータフレームを基準データフレームとして、基準データフレームの受信から、対象データフレームを受信するまでの受信間隔が、前回の受信間隔より2ms加算した値となることを、「+2」の表記で、表している。つまり、受信間隔が受信の都度変化し、この例では、前回の受信間隔に2msを加算した結果がその次の受信間隔として定まる。例えば、IDが0x300のデータフレームを受信してから、IDが0x100のデータフレームを受信するまでの間隔が、10msであった場合に、次のIDが0x100のデータフレームの受信適正時間帯は、IDが0x300のデータフレームの受信タイミングから、10msに2ms加算してなる12msにプラスマイナス3msのマージンを含んだ9ms〜15ms経過後と計算される。この計算される9ms〜15msという受信間隔の範囲が、0より小さくなるか、基準となるデータフレーム同士について規定された間隔(
図13に示すようにIDが0x300のデータフレームについては48ms)よりも大きくなった場合は、受信間隔の範囲を、0〜その規定された受信間隔までの値の間に収まるように正規化する。この正規化により、IDが0x100のデータフレームの直前に受信された基準となるデータフレームに対する受信間隔となるように調整される。例えば、IDが0x100のデータフレームの不正検知のために、IDが0x300のデータフレームを基準データフレームとして受信間隔を検査するときにおいては、前回の受信間隔が47msであったとき、その次の受信間隔は47msに2msを加えた、49msであるが、これは、IDが0x300のデータフレーム同士の間隔である48msを超えてしまっている。そのため、次の受信間隔は、49から48を引いた、1msとする。これにマージンのプラスマイナス3msの範囲が許容されるため、最終的な受信適正時間帯は、0x300のデータフレームの受信タイミングから、0〜4ms経過後の範囲と46ms〜48ms経過後の範囲とになる。
【0122】
IDが0x200のデータフレーム、IDが0x300のデータフレームのそれぞれを不正検知の対象としたときの、不正検知に用いられる受信間隔とマージンとについても、同様にルール情報により規定されている。
【0123】
[2.4 受信状態情報]
図14は、受信状態保持部2156に格納される、受信状態情報の一例を示す図である。この受信状態情報は、データフレームのID毎に、不正検知ECU2100が過去に受信したデータフレームについての受信タイミング等を記録したものである。
【0124】
図14の例は、IDが0x100であるデータフレームについて、前回の受信タイミングは151msであり、次回受信タイミング候補は201msであり、受信適正時間帯に複数のデータフレームを受信した等により不正が発生した状態(つまり不正発生状態が「不正あり」)であることを示している。また、
図14の例は、前回受信間隔として、IDが0x100のデータフレーム同士の受信間隔が51msで、IDが0x200のデータフレームとIDが0x100のデータフレームとの受信間隔が25ms、IDが0x300のデータフレームとIDが0x100のデータフレームとの受信間隔が10msであったことを示している。
【0125】
IDが0x200のデータフレームとIDが0x300のデータフレームとに関しても同様に、受信タイミングと、次回受信タイミング候補と、不正発生状態と、前回受信間隔とが保持されている。次回受信タイミング候補が「なし」の状態であるということは、現状では、受信適正時間帯に、該当するIDのデータフレームを受信していないことを示す。また、不正検知処理部2152は、受信適正時間帯を過ぎると、受信状態情報の次回受信タイミング候補の値で受信タイミングを更新してから、次回受信タイミング候補を「なし」を示すように更新する。
【0126】
[2.5 データフレーム例]
図15は、車速ECU2200dが送信するデータフレームについてのID(メッセージID)及びデータフィールド(データ)の一例を示す図である。
【0127】
同図に示すように、車速ECU2200dが送信するデータフレームのメッセージIDは「0x300」であり、DLCは「1」(1バイト)である。データフィールドには、車速を示す値が含まれ、
図15の例は、車速が16(0x10)km/hであることを示している。
【0128】
[2.6 不正検知ECU2100のデータフレームの不正検知の動作例1]
図16は、バス300に逐次現れるデータフレームを不正検知ECU2100が受信して不正検知を行う例を示す図である。
【0129】
図16では、自動駐車ECU200aが周期的に送信する、IDが0x100のデータフレームF11、F13、F16、F19と、ギアECU200cが周期的に送信する、IDが0x200のデータフレームF12、F15、F18とがバス300へ逐次現れる様子を表している。また、
図16では、バス300にアクセス可能な攻撃者(不正ECU)が、バス300にIDが0x100の不正なデータフレームF14、F17、F20を周期的に送信して、ハンドル220の不正制御を試みている状況を表している。この例では、不正検知ECU2100は不正検知(検査)として、IDが0x100のデータフレームについて不正に関する評価(具体的には不正か否かの判別)を行う。
図16では、不正検知ECU2100が、IDが0x100のデータフレームの不正に関する評価を行う際に、不正の発生状況(不正発生状態)に応じて、受信間隔の基準とするデータフレームを不正が発生していないIDを有するデータフレームに切り替える例を示している。なお、
図16では示さないが、不正検知ECU2100は、IDが0x100以外のデータフレームを対象とした不正検知(不正に関する評価)を行い得る。前提として、受信状態保持部2156が保持する受信状態情報は、最初に、各IDに対応した不正発生状態が「不正なし」となっているものとして説明する。
【0130】
不正検知ECU2100は、不正検知の対象とするIDが0x100のデータフレームに関して、まず不正が発生していない状況(つまり受信状態情報の各IDについての不正発生状態が「不正なし」の状態)では対象と同じID(0x100)のデータフレームの受信タイミングを基準とした受信間隔を基に、不正を検知する。なお、この例では、基準とするデータフレームのIDを選択する順序は、0x100、0x200、0x300の順とする。
【0131】
不正検知ECU2100は、IDが0x100のデータフレームF11を受信したタイミングを、受信状態情報における受信タイミングとして、保持する。
【0132】
次に、不正検知ECU2100は、自動駐車ECU200aが送信した、2回目のIDが0x100のデータフレームF13を受信する。不正検知ECU2100は、ルール情報が示す不正検知ルール(
図13参照)に基づいて、IDが0x100のデータフレームF11の受信のタイミングから、47ms〜53ms経過した範囲を受信適正時間帯T11として特定し、データフレームF13の受信タイミングは、受信適正時間帯T11の範囲内であるので、データフレームF13は適正(不正でない)と判定する。
【0133】
このとき、3回目のIDが0x100のデータフレームF14が攻撃者により送信される。このデータフレームF14の受信タイミングは、受信適正時間帯T11の範囲内であるので一応適正である。しかし、不正検知ECU2100は、受信適正時間帯T11の範囲内に、同じ0x100というIDを有するデータフレームF13を既に受信していることから、データフレームF13及びデータフレームF14のいずれかが不正であるので、0x100というIDを有するデータフレームについて不正が発生したと判定し、受信状態保持部2156が保持する受信状態情報におけるIDが0x100のデータフレームの不正発生状態を「不正あり」に更新する。これ以後は、不正検知ECU2100は、基準とするデータフレームとして、IDが0x100の代わりに、次の順序の、IDが0x200のデータフレームを選択する。これにより、不正な可能性のある0x100というIDを有するデータフレームを基準として受信適正時間帯を定めなくなり、データフレームを不正と誤検知する可能性が低減される。
【0134】
不正検知ECU2100は、IDが0x200のデータフレームF15を受信したタイミングを、受信状態情報における受信タイミングとして、保持する。
【0135】
次に、不正検知ECU2100は、自動駐車ECU200aが送信した、4回目のIDが0x100のデータフレームF16を受信する。不正検知ECU2100は、不正検知ルール(
図13参照)に基づいて、IDが0x200のデータフレームF15の受信のタイミングから、22ms〜28ms経過した範囲を受信適正時間帯T12として特定し、データフレームF16の受信タイミングは、受信適正時間帯T12の範囲内であるので、データフレームF16は適正と判定する。
【0136】
次に、不正検知ECU2100は、攻撃者が送信した、5回目のIDが0x100のデータフレームF17を受信する。不正検知ECU2100は、このデータフレームF17の受信タイミングは、受信適正時間帯T12の範囲外であるので、データフレームF17は不正であると判定する。
【0137】
以降同様に、不正検知ECU2100は、IDが0x200のデータフレームF18の受信タイミングを基準として受信適正時間帯T13を特定して、自動駐車ECU200aが送信した、受信適正時間帯T13内に受信したデータフレームF19を適正と判定し、攻撃者が送信した、受信適正時間帯T13外に受信したデータフレームF20を、不正と判定する。
【0138】
[2.7 不正検知ECU2100のデータフレームの不正検知の動作例2]
図17は、バス300に逐次現れるデータフレームを不正検知ECU2100が受信して不正検知を行う別の例を示す図である。
【0139】
図17では、自動駐車ECU200aが周期的に送信する、IDが0x100のデータフレームF21、F26、F31、F36と、ギアECU200cが周期的に送信する、IDが0x200のデータフレームF24、F29、F34と、車速ECU2200dが周期的に送信する、IDが0x300のデータフレームF23、F28、F32、F37とがバス300へ逐次現れる様子を表している。また、
図17では、バス300にアクセス可能な攻撃者(不正ECU)が、バス300にIDが0x100の不正なデータフレームF22、F27、F33、F38と、IDが0x200の不正なデータフレームF25、F30、F35とを送信して、ハンドル220等の不正制御を試みている状況を表している。この例では、不正検知ECU2100は不正検知として、IDが0x100のデータフレームについて不正に関する評価(具体的には不正か否かの判別)を行う。
図17では、不正検知ECU2100が、IDが0x100のデータフレームの不正に関する評価を行う際に、不正の発生状況に応じて、受信間隔の基準とするデータフレームを不正が発生していないIDを有するデータフレームに切り替える例を示している。なお、
図17では示さないが、不正検知ECU2100は、IDが0x100以外のデータフレームを対象とした不正検知を行い得る。
【0140】
前提として、受信状態保持部2156が保持する受信状態情報は、最初に、各IDに対応した不正発生状態が「不正なし」となっているものとして説明する。
【0141】
不正検知ECU2100は、1回目及び2回目のIDが0x100であるデータフレームF21、F22を受信した時に、IDが0x100のデータフレームに関して、受信適正時間帯に複数のデータフレームを受信して不正が発生していると判定し、受信状態保持部2156が保持する受信状態情報におけるIDが0x100のデータフレームの不正発生状態を「不正あり」に更新する。これにより、以降、受信間隔に係る受信適正時間帯を定めるための基準とするデータフレームとして、IDが0x100のデータフレームは用いられなくなる。この例では、基準とするデータフレームのIDを選択する順序は、0x100、0x200、0x300の順とする。また更に、不正検知ECU2100は、1回目及び2回目のIDが0x200であるデータフレームF24、F25を受信した時に、IDが0x200のデータフレームに関して、受信適正時間帯に複数のデータフレームを受信して不正が発生していると判定し、受信状態保持部2156が保持する受信状態情報におけるIDが0x200のデータフレームの不正発生状態を「不正あり」に更新する。これにより、以降、受信間隔に係る受信適正時間帯を定めるための基準とするデータフレームとして、IDが0x200のデータフレームは用いられなくなり、次にはIDが0x300のデータフレームが基準として選択されることとなる。
【0142】
不正検知ECU2100は、IDが0x300のデータフレームF23を基準としてその受信タイミングに基づいて受信適正時間帯T21を特定して、3回目のIDが0x100であるデータフレームF26について、受信適正時間帯T21内に受信したか否かで、不正か否かを判別する。データフレームF26は受信適正時間帯T21内に受信されたので適正と判定される。
【0143】
以降同様に、不正検知ECU2100は、IDが0x300のデータフレームF28を基準としてその受信タイミングに基づいて受信適正時間帯T22を特定して、IDが0x100であるデータフレームF31について、受信適正時間帯T22内に受信したので適正と判定し、データフレームF33について受信適正時間帯T22外に受信したので不正と判定する。また、不正検知ECU2100は、IDが0x300のデータフレームF32を基準としてその受信タイミングに基づいて受信適正時間帯T23を特定して、IDが0x100であるデータフレームF36について、受信適正時間帯T23内に受信したので適正と判定し、データフレームF38について受信適正時間帯T23外に受信したので不正と判定する。なお、不正検知ルール(
図13参照)に基づいて、受信適正時間帯を特定するための基準となる、IDが0x300のデータフレームF23、F28、F32と、不正検知の対象であるIDが0x100のデータフレームとの受信間隔は、IDが0x100のデータフレームの受信の都度変化(36msから2msずつ増加)している。
【0144】
[2.8 不正検知ECU2100による不正検知処理]
以下、不正検知ECU2100が、不正検知処理としてデータフレームの受信に際して行う処理について
図18のフローチャートに即して説明する。
【0145】
不正検知ECU2100は、バス300からデータフレームを受信する(ステップS2101)。
【0146】
不正検知ECU2100は、ルール保持部2154が保持するルール情報(
図13参照)に基づき、受信したデータフレームのIDに関連する不正検知ルールが規定されているかについて確認し(ステップS2102)、受信したデータフレームのIDに関連する不正検知ルールが規定されていない場合は、1つのデータフレームの受信に対応する処理を終える。
【0147】
ステップS2102で、受信したデータフレームのIDに関連する不正検知ルールが規定されていると確認した場合には、不正検知ECU2100は、受信状態情報(
図14参照)における受信タイミング及び次回受信タイミング候補の更新を行う(ステップS2103)。ステップS2103では、具体的には、受信状態情報における次回受信タイミング候補が「なし」でない全てのIDのうち、タイマ保持部155から得た現在タイミングが、そのIDに対応する受信適正時間帯の終期を経過しているIDについて、不正検知ECU2100は、次回受信タイミング候補の値を、受信状態情報における受信タイミングに設定し(つまり次回受信タイミング候補の値で受信タイミングを更新し)、「なし」を示すように次回受信タイミング候補を更新する。また、ステップS2103では、受信状態情報における次回受信タイミング候補が「なし」でない全てのIDのうち、タイマ保持部155から得た現在タイミングが、そのIDに対応する受信適正時間帯の終期を経過しているIDが存在しなければ、何もしない。
【0148】
ステップS2103に続いて、不正検知ECU2100は、受信適正時間帯を特定するための基準となるデータフレームのIDとして、まだ不正が発生していないID(受信状態情報の不正発生状態が「不正なし」であるID)を選択する(ステップS2104)。この選択は、例えば、ルール情報(
図13参照)が示す不正検知ルールに係るデータフレームのIDの値の小さい順という選択基準(選択順等)に基づいて行われ、この場合には、IDは0x100、0x200、0x300の順に選択され得る。
【0149】
不正検知ECU2100は、受信状態保持部2156が保持する受信状態情報を参照することで、選択したIDを有するデータフレームの受信タイミングを取得する。そして不正検知ECU2100は、ルール保持部2154が保持するルール情報が示す不正検知ルールを参照し、選択したIDを有する基準となるデータフレームの受信タイミングと受信したデータフレームのIDとにより定められた受信間隔及びマージンに応じた計算により受信適正時間帯を特定する(ステップS2105)。
【0150】
続いて、不正検知ECU2100は、データフレームを受信したタイミング(つまりタイマ保持部155から得た現在タイミング)が、受信適正時間帯の範囲内であるかを判別する。データフレームを受信したタイミングが受信適正時間帯の範囲内でない場合には、不正検知ECU2100は、受信したデータフレームを不正と判定し(ステップS2107)、受信状態情報における、そのデータフレームのIDについての不正発生状態を「不正あり」を示すように更新して(ステップS2108)、処理を終える。
【0151】
ステップS2106で、データフレームを受信したタイミングが受信適正時間帯の範囲内であると判定した場合には、不正検知ECU2100は、受信状態情報における、受信したデータフレームのIDに対応する、次回受信タイミング候補が「なし」であるか否かを確認する(ステップS2109)。次回受信タイミング候補が「なし」でない場合には、不正検知ECU2100は、受信したデータフレームのIDについて不正と判定し(ステップS2107)、受信状態情報における、そのデータフレームのIDについての不正発生状態を「不正あり」を示すように更新して(ステップS2108)、処理を終える。次回受信タイミング候補が「なし」でない場合においては、受信したデータフレーム或いはその直前に受信したデータフレームのいずれかが不正である。なお、データフレームについての不正か否かの判定において、個別のデータフレームの不正の発生と、同じIDの1以上のデータフレームにおける不正の発生とを区別しても良いし、区別しなくても良い。しかし、いずれの場合であっても、不正検知ECU2100は、受信状態情報における不正発生状態が「不正あり」を示すように更新し、その不正に係るデータフレームのIDと同じIDのデータフレームを受信適正時間帯の特定のための基準としないようにする。
【0152】
ステップS2109で、受信状態情報における、受信したデータフレームのIDに対応する、次回受信タイミング候補が「なし」であると確認した場合には、不正検知ECU2100は、受信したデータフレームについて適正と判定して、受信状態情報における、そのデータフレームのIDについての次回受信タイミング候補に現在タイミングを設定して(ステップS2110)、処理を終える。つまりステップS2110では、不正検知ECU2100は、タイマ保持部155から得た現在タイミングで次回受信タイミング候補を更新し、1つのデータフレームの受信に対応する処理を終える。
【0153】
このように不正検知ECU2100による不正検知処理は、バス300上で送信されたデータフレームを受信する受信ステップ(ステップS2101)を含む。また、不正検知処理は、第1識別子(例えば0x100というID)を有するデータフレームである対象データフレームの不正検知として、その対象データフレーム同士の受信タイミングの間隔に応じてその対象データフレームであるか否かを評価する初期検知ステップ(例えばステップS2102〜S2106)を含む。この初期検知ステップでは、対象データフレームの不正検知として、その対象データフレームの受信タイミングが、その受信タイミングに先行する対象データフレームの受信タイミングを基準として予め定められた適正時間帯外である場合、及び、その対象データフレームの受信タイミングが受信適正時間帯内でありかつ受信適正時間帯内のタイミングで別の対象データフレームが受信されていた場合には、不正であると評価する(ステップS2109、S2107、S2108)。そして、初期検知ステップで対象データフレームが不正であると評価された後に、初期検知ステップでの不正検知を停止して、受信適正時間帯の基準を切り替えた検知ステップで不正検知を開始する。この検知ステップでは、第1識別子と異なる第2識別子(例えば0x200というID)を有するデータフレームである基準データフレームと対象データフレームとの受信間隔を規定する所定ルール(つまりルール情報が示す不正検知ルール)に基づいて、基準データフレームの受信タイミングと対象データフレームの受信タイミングとに応じて、評価(不正か否かの判別等)を行う(例えばステップS2102〜S2110等)。また、不正検知処理は、基準データフレームの不正検知を行う基準検知ステップ(例えばステップS2106、S2109等)を含み、不正検知処理では、基準検知ステップで基準データフレームが不正と検知された場合には、検知ステップでの不正検知を停止して、後続検知ステップでの不正検知を開始する。この後続検知ステップでは、対象データフレームの不正検知として、第1識別子及び第2識別子と異なる第3識別子(例えば0x300というID)を有するデータフレームである別基準データフレームと対象データフレームとの受信間隔を規定するルール(不正検知ルール)に基づいて、別基準データフレームの受信タイミングと対象データフレームの受信タイミングとに応じて、評価を行う(例えばステップS2102〜S2107等)。また、不正検知処理は、検知ステップでの評価の結果を記憶媒体に記録する記録ステップを含み得る。
【0154】
[2.9 実施の形態2の効果]
実施の形態2に係る車載ネットワークシステム11では、不正検知ECU2100が、データフレームの不正に関する評価(不正か否かの判別等)の対象とするデータフレームと、不正の発生がまだ検知されていない、基準となるデータフレームとの受信間隔に基づいて、その評価を行う。そして、基準となるデータフレームについて不正が発生した後には、別のデータフレームを選択して基準として用いる。即ち、不正検知ECU2100は、不正が発生していないデータフレームと、不正検知の対象となるデータフレームとの受信間隔に基づいて、データフレームの不正に係る判定等を行う。
【0155】
これにより、攻撃者(バス300にアクセスする不正ECU等)による不正なデータフレームの送信が検知され得るし、正規なデータフレームが不正と判定される可能性が低減されている。
【0156】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1、2を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0157】
(1)上記実施の形態では、不正検知処理部152、2152は、不正検知ECU100、2100の構成要素として説明したが、その他のECUの構成要素としても良く、データフレームの不正検知(不正に関する評価等)をどのECUが行っても良い。
【0158】
(2)上記実施の形態では、CANプロトコルにおけるデータフレームを標準IDフォーマットで記述しているが、拡張IDフォーマットで合っても良い。拡張IDフォーマットの場合には、標準IDフォーマットにおけるID位置のベースIDと、拡張IDとを合わせて29ビットで、データフレームのIDを表す。
【0159】
(3)上記実施の形態の不正検知ECU100、2100は、データフレームについての不正検知を、データフレームの受信完了時に行っても、データフレームの受信中(具体的にはIDフィールドの受信後の任意の時点)に行っても良い。
【0160】
(4)上記実施の形態では、不正検知ECU100、2100は、データフレームの受信タイミングを保持して、その受信タイミングからマージン付きの受信間隔が経過したことの確認を行ったが、必ずしもデータフレームの受信タイミングを保持していなくても良く、例えば、データフレームの受信時に受信間隔を、ダウンカウントするタイマにセットする等で、受信間隔の経過の確認を行うこととしても良い。
【0161】
(5)上記実施の形態では、不正検知ECU100、2100が、データフレームが不正であることを検知した場合に、不正の発生を各ECUに通知すること、不正が検知された累積回数をカウントして記録すること、ログ情報を記録すること、不正を報知すること等を示したが、他にいかなる処理を行っても良い。例えば、データフレームの受信中に不正であることを検知した場合に、バス300にエラーフレームを送信することで、不正なデータフレームを無効化し、各ECUに不正なデータフレームを正常に処理させないようにしても良い。
【0162】
(6)上記実施の形態では、不正検知の対象となるデータフレームについて不正に関する評価として、そのデータフレームが不正であるか否かという判別(つまり択一的な判定)を行う例を示したが、不正に関する評価は、判別に限られず、例えば、不正である確度(例えば確率)を算定することを内容とする評価を行っても良い。データフレームが不正である確度の算定は、例えば次の方法で実現できる。実施の形態2では、不正検知処理として、受信適正時間帯を求める基準となるデータフレーム(或いはそのデータフレームのID)を順に選択していたが、選択するのではなく、不正検知ルール(
図13参照)に含まれる全てのIDのデータフレームを基準としてそれぞれ受信適正時間帯を求める。そして、不正検知対象のデータフレームの受信タイミングを、全ての受信適正時間帯を重ね合わせた受信適正時間帯群と比較する。不正検知ECUでは、不正検知対象のデータフレームの受信タイミングが、受信適正時間帯群における受信適正時間帯の重複度合いの高い時刻ほど不正である確度が低く、重複度合いが低い又はいずれの受信適正時間帯でもない時刻ほど、不正である確度が高いと評価し得る。例えば、この評価は、複数のIDの各データフレームと不正検知対象のデータフレームとの受信間隔を規定するルール群としての不正検知ルール(
図13参照)と、その各データフレームの受信タイミングと、不正検知対象のデータフレームの受信タイミングに基づく所定演算により、不正の確度を算定する評価である。不正の確度を算定するための所定演算の内容は任意に定め得る。なお、不正の確度を閾値と比較することで不正であるか否かという択一的な判定を行うこととしても良い。また、データフレームが不正であるか否かという判別についても、不正検知ルール(
図13参照)に含まれる複数のIDのデータフレームを基準としてそれぞれ受信適正時間帯を求めて行っても良く、各受信適正時間帯に不正検知対象のデータフレームの受信タイミングが含まれるか否かの評価結果(つまりそのデータフレームが不正か否かの評価結果)を総合して、例えば多数決等により、最終的に不正検知対象のデータフレームが不正か否かを決定することとしても良い。なお、多数決の他、例えば、不正検知対象のデータフレームの受信タイミングがその複数の受信適正時間帯全てに含まれない場合に不正であると決定しても良い。
【0163】
(7)上記実施の形態では、不正検知処理において受信適正時間帯を特定するための基準となるデータフレーム(つまりデータフレームのID)の選択順として、IDの値の小さい順を例示したが、この順序は他の方法で定めても良い。例えば、不正が発生していないIDの中から、IDの値の大きい順に選択しても良い。また、IDの値が不正検知対象のデータフレームのIDよりも大きいこと或いは小さいこと等の条件を付けて選択しても良い。また、IDの値が、不正検知対象のデータフレームのIDの値に近い順に選択しても良い。また、基準となるデータフレーム同士について規定されている受信間隔が、不正検知対象のデータフレーム同士の受信間隔に近い順に選択しても良い。
【0164】
(8)上記実施の形態では、不正検知処理において受信適正時間帯を特定するための基準となるデータフレーム(つまりデータフレームのID)の選択順として、IDの値の小さい順を例示したが、順序を付けなくても良い。例えば、ランダムにIDを選択しても良く、また、選択したIDを定期的に変更(例えばランダムに選択したIDに変更)しても良い。また、現在の車両(各ECUが搭載される車両)の状態に応じて、選択するIDを切り替えても良い。即ち、車両の状態毎に選択されるべきデータフレームのIDを予め定めた選択基準に基づいて、車両の状態が変化した際にIDの選択の切り替えを行っても良い。車両の状態は、停車状態、走行状態等である。車両に搭載されたセンサ、機器等で識別できる各種状態を、車両の状態として用い得る。例えば、イグニッションキーがイグニッションキーシリンダに差し込まれた状態、エンジンを始動した状態、ギアポジション(例えばパーキング、ニュートラル、1速、2速等)の状態、バス300等のネットワーク負荷の状態等を、車両の状態として用い得る。また、バス300に流れるデータフレームの内容の変化や、不正検知の必要性の高さ等に基づいて車両の状態を区別しても良い。
【0165】
(9)上記実施の形態では、受信状態保持部2156が保持する受信状態情報の次回受信タイミング候補として、受信適正時間帯に受信したデータフレームの中で最初に受信したデータフレームの受信タイミングが格納され、次回受信タイミング候補の値が受信適正時間帯の経過後に受信状態情報における受信タイミングに設定される例を示した。しかし、これは一例に過ぎない。次回の受信適正時間帯の基準となる、受信状態情報における受信タイミングとして、例えば、受信適正時間帯に受信したデータフレームの中で、最後に受信したデータフレームの受信タイミングが設定されるようにしても良いし、不正検知ルールで示される受信間隔の経過時に最も近いタイミングで受信したデータフレームの受信タイミングが設定されるようにしても良い。なお、上記実施の形態では、受信適正時間帯内に複数のデータフレームを受信した場合に受信状態情報における不正発生状態を「不正あり」としたが、受信適正時間帯内に予め定めた所定数以上のデータフレームを受信した場合にのみ不正発生状態を「不正あり」にすることとしても良い。
【0166】
(10)上記実施の形態では、受信状態保持部2156に保持される受信状態情報における不正発生状態は、一度「不正あり」に設定された後には変更されない例を示したが、不正発生状態を一定条件下で「不正なし」に変更することとしても良い。例えば、受信適正時間帯に該当するIDを有するデータフレームを1つしか受信しなくなったことを一定回数確認した場合に不正発生状態を「不正なし」に変更することとしても良いし、定期的に不正発生状態を「不正なし」にリセットすることとしても良い。
【0167】
(11)上記実施の形態でルール保持部154、2154に保持されるルール情報が示す不正検知ルールは、複数のIDそれぞれについて受信間隔に係るルールを含んでいたが、バス300で送受されるデータフレームで用いられ得るIDの全てについて受信間隔に係るルールを規定している必要はない。また、不正検知ルールは、全てのID又は一部のIDを有する各データフレームについて、受信間隔に係るルール以外の、データフレームの不正に関する評価(不正か否かの判別等)の基準となるルール(例えばデータ長、データフィールドの内容の制約等)を含んでいても良い。
【0168】
(12)上記実施の形態では、受信状態保持部2156に保持される受信状態情報における不正発生状態を、受信適正時間帯に複数の該当するIDのデータフレームを受信した場合、及び、受信適正時間帯以外に該当するIDのデータフレームを受信した場合に「不正あり」に更新する例を示した。これは一例に過ぎず、例えば、受信間隔以外のルールに適合しないデータフレームが送信されたことを検知した場合に、該当するIDの不正発生状態を「不正あり」に更新しても良い。
【0169】
(13)上記実施の形態では、マイコン部150、2150で不正検知処理を行ったが、コントローラ部140において不正検知処理の全部又は一部を行っても良い。
【0170】
(14)上記実施の形態では、受信間隔に基づくデータフレームの適正、不正の判別のために、受信適正時間帯を経過するまで、受信状態情報における受信タイミングの更新を行わなかったが、受信適正時間帯内で、データフレームを受信したタイミングで受信状態情報における受信タイミングの更新を行っても良い。また受信タイミングの更新を、受信適正時間帯内のデータフレームの受信毎に行わなくても良い。例えば、受信回数を保持しておき、ルール情報が示す不正検知ルールに係る受信間隔と受信回数とを乗算することにより、受信適正時間帯を算定しても良い。このときの受信回数のリセットと受信タイミングの更新とは任意のタイミングで行い得る。
【0171】
(15)上記実施の形態では、マイコン部150或いはマイコン部2150が、ルール保持部154、2154、タイマ保持部155、受信タイミング保持部156、受信状態保持部2156を含む例を示したが、コントローラ部140が、ルール保持部154、2154、タイマ保持部155、受信タイミング保持部156、受信状態保持部2156のうちの1つ以上を含んでも良い。
【0172】
(16)上記実施の形態では、受信適正時間帯の特定の方法として、ルール保持部2154のルール情報が示す受信間隔からマージンを引いた値から受信間隔からマージンを足した値までを受信適正時間帯としていたが、これに限らない。例えばルール情報が示す受信間隔からマージンを減算した値以降全ての時間範囲を受信適正時間帯としても良い。
【0173】
(17)上記実施の形態では、不正検知対象のIDを有するデータフレームとの受信間隔を確認するための基準となる、そのIDと異なるIDを有するデータフレームとして、バス300上に流れるデータフレームを用いた。この基準となるデータフレームは、バス300上に流されるべき制御用或いは状態通知用のデータフレームであっても良いし、不正検知以外の用途のないダミーのデータフレームであっても良い。ダミーのデータフレームは、いずれかのECUにより周期的に送信され、不正検知ECUにより受信され、不正検知ECU以外では受信の必要がない。不正検知ECUでは、ダミーのデータフレームの受信タイミングを基準として、不正検知対象のIDのデータフレームの受信適正時間帯を特定して、不正検知を行い得る。また、不正検知ECUは、不正検知のための基準となるデータフレームとして、不正検知対象のIDのデータフレームを送信するECUが別途送信する、不正検知対象のIDと異なるIDのデータフレームを利用することとしても良い。
【0174】
(18)上記実施の形態における不正検知ECU及び他のECUは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア(デジタル回路等)によりその機能を実現することとしても良い。
【0175】
(19)上記実施の形態における各装置を構成する構成要素の一部又は全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【0176】
(20)上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしても良い。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【0177】
(21)上記実施の形態で示した各種処理の手順(例えば
図10、
図18に示した処理手順等)の実行順序は、必ずしも、上述した通りの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。
【0178】
(22)本発明の一態様としては、例えば
図10或いは
図18に示す不正検知処理等の全部又は一部を含む不正検知方法であるとしても良い。また、この方法をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【0179】
(23)本発明の一態様としては、例えば上述の不正検知ECUの一部又は全部の機能を備える不正検知システムであっても良い。不正検知システムは、例えばバスに接続されたECU(不正検知ECUでもその他のECUでも良い)、そのECUと通信可能な装置(例えば車両外部に所在するサーバ装置等)等により構成され得る。
【0180】
(24)上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。