以下、図面を参照し、本発明の車両用通信装置の実施形態について説明する。
(第1の実施形態)
図1は、車両用通信システム1の構成を示す図である。車両用通信システム1は、例えば車両に搭載される。車両用通信システム1は、ネットワークNW1と、ネットワークNW2と、ネットワークNW3とを備える。ネットワークNW1、NW2、およびNW3のそれぞれでは、例えば、CAN(Controller Area Network)に基づく通信が行われる。
ネットワークNW1は、バス2−1に接続されたECU10−1から10−3を備える。ネットワークNW2は、バス2−2に接続されたECU10−4から10−6を備える。ネットワークNW3は、バス2−3に接続されたECU10−7から10−9を備える。以下、ECU10−1から10−9を区別しない場合は、単にECU10と表記し、バス2−1から2−3を区別しない場合は、単にバス2と表記する。また、以下、ネットワークNW1からNW3を区別しない場合は、単にネットワークNWと表記する。バス2は、例えば、ツイストペアケーブルであり、差動電圧方式によって信号を伝達する。
ECU10は、例えばエンジンを制御するエンジンECUや、シートベルトを制御するシートベルトECU等である。ECU10は、自装置が所属するネットワークNWに送信された識別子を含むフレーム(後述)を取得することができる。また、ECU10は、例えば設定されたフレームを受信したことを条件として、予め設定された優先度に応じてフレームをバス2に送信する。
例えばECU10−1は、例えばイグニッションスイッチがオン状態に制御された等の初期状態を検知した場合に、フレームD101をバス2に送信する。ECU10−2は、フレームD101を受信すると、フレームD102をバス2に送信する。例えばECU10−3は、フレームD102を受信すると、フレームD103をバス2に送信する。監視装置40は、フレームD103を受信すると、フレームD104をバス2に送信し、フレームD104をバス2−1に送信した後、フレームD105をバス2−1に送信する。本実施形態の車両用通信システム1では、フレームDは、フレームDの識別子を基準として昇順にバス2に送信される。図示する例では、フレームDの番号が小さい程、優先度が高いものとする。
図2は、ECU10の構成例を示す図である。ECU10は、例えば、記憶部20と、制御部30と、CANコントローラ36と、CANトランシーバ38とを備える。制御部30は、例えば、CPU(Central Processing Unit)等のプロセッサを有する。
記憶部20は、例えば、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)、HDD(Hard Disk Drive)等の不揮発性の記憶装置と、RAM(Random Access Memory)、レジスタ等の揮発性の記憶装置によって実現される。記憶部20は、アプリケーションプログラム22や、CANドライバ24等のプログラムを格納する。また、記憶部20は、送信バッファ(不図示)と、受信バッファ(不図示)とを含む一時記憶領域26を有する。また、記憶部20には、ネットワークNWに送信されるフレームDの送信スケジュールおよびフレームDの優先度を示す情報である優先度情報が記憶されている。送信スケジュールおよび優先度情報の詳細は後述する。
アプリケーションプログラム22は、ECU10に割り当てられた情報処理を行うためのプログラムである。CANドライバ24は、アプリケーションプログラム22とCANコントローラ36との間を仲介する。
制御部30は、中央制御部32と、通信制御部34とを備える。中央制御部32は、アプリケーションプログラム22を実行することにより機能し、ECU10に与えられた制御を実行する。
通信制御部34は、CANトランシーバ38により受信されたフレームDに含まれる情報(識別子)を参照し、自装置が使用する情報が含まれたフレームDであるか否かを判定する。自装置が使用する情報がフレームDに含まれる場合、通信制御部34は、フレームDに含まれた情報を取得し、記憶部20の一時記憶領域26に格納する。
通信制御部34は、CANトランシーバ38にフレームDを送信させる。例えば通信制御部34は、自装置が送信するフレームDを送信することを示す識別子がバス2に送信され、送信された識別子のフレームDを受信した場合に、自装置が送信する識別子を含むフレームDをバス2に送信する。
CANコントローラ36は、CANトランシーバ38を介して、バス2との間で種々のフレームDを送受信する。CANコントローラ36は、バス2にフレームDを送信する際には、一時記憶領域26の送信バッファに格納されたフレームDを、例えばNRZ(Non‐Return‐to‐Zero)方式でシリアルの送信信号に変換し、CANトランシーバ38に出力する。CANコントローラ36は、変換後の信号が「0」(ドミナント)のビットには論理レベルがLowの電圧を出力し、「1」(レセシブ)のビットには論理レベルがHighの電圧を出力する。また、CANコントローラ36は、CANトランシーバ38からフレームDを受信する際には、受信したフレームDを、例えばシリアルの送信信号から制御部30が解析できる情報に変換し、CANコントローラ36を介して一時記憶領域26の受信バッファに格納する。
CANトランシーバ38は、フレームDを送信する送信部、またはフレームDを受信する受信部として機能する。CANトランシーバ38は、CANコントローラ36から取得した送信信号を差動電圧に変換してバス2に送信する。また、CANトランシーバ38は、バス2からフレームDを取得する際には、バス2の差動電圧を読み取り、所定の電圧範囲に含まれるように整形した受信信号をCANコントローラ36に送信する。CANコントローラ36の受信端子Rxにはコンパレータが取り付けられており、所定の閾値電圧とCANトランシーバ38からの受信信号とを比較することで、「1」、「0」のデジタルフレームDを生成して記憶部20に格納する。
図3は、監視装置40の機能構成を示す図である。監視装置40は、監視側記憶部50と、監視側制御部60と、監視側CANコントローラ66と、監視側CANトランシーバ68とを備える。監視側記憶部50は、監視側アプリケーションプログラム52や、監視側CANドライバ54等のプログラムを格納する。また、監視側記憶部50は、送信バッファ(不図示)と、受信バッファ(不図示)とを含む監視側一時記憶領域56を有する。また、監視側記憶部50には、後述する送信スケジュールおよび優先度情報が記憶されている。
監視側アプリケーションプログラム52は、監視装置40に割り当てられた情報処理を行うためのプログラムである。監視側CANドライバ54は、監視側アプリケーションプログラム52と監視側CANコントローラ66との間を仲介する。
監視側制御部60は、監視側中央制御部62と、監視側通信制御部64とを備える。監視側中央制御部62は、監視側アプリケーションプログラム52を実行することにより機能し、監視装置40に与えられた制御を実行する。
監視側通信制御部64は、監視側CANトランシーバ68により受信されたフレームDに含まれる情報(識別子)を参照し、フレームDが送信されたネットワークNWから他のネットワークNWに転送するフレームDであるか否かを判定する。フレームDを他のネットワークNWに転送する場合、フレームDに含まれた情報を取得し、監視側記憶部50の監視側一時記憶領域56に格納する。
監視側通信制御部64は、監視側CANトランシーバ68にフレームDを送信させる。例えば監視側通信制御部64は、自装置が送信するフレームDを送信することを示す識別子がバス2に送信された場合に、自装置が送信する識別子を含むフレームDをバス2に送信する。また、監視側通信制御部64は、通信プロトコルが互いに異なる外部装置と通信する場合、外部装置と通信を中継するための処理を行う。
外部通信部65は、他の通信装置との間で行われる通信を設定された通信プロトコルに基づいて実行するハードウェアである。監視側CANコントローラ66は、監視側CANトランシーバ68を介して、バス2との間で種々のフレームDを送受信する。監視側CANトランシーバ68は、フレームDを送信する送信部、またはフレームDを受信する受信部として機能する。
図4は、ECU10がバスに送信するフレームDの形式例である。1回の送信において送信されるフレームDは、フレームDの開始を表すスタートオブフレームD(SOF)、フレームDの識別子であるID、フレームDとリモートフレームを識別するためのリモートトランスミッションリクエスト(RTR)、フレームDのバイト数等を表すコントロールフィールド、転送するフレームDの実体であるデータフィールド、フレームDの誤りをチェックするためのCRCを付加するCRCシーケンス、正しいメッセージを受信したユニットからの通知(ACK)を受けるACKスロット及びACKデリミタ、フレームDの終了を表すエンドオブフレーム(EOF)等を含む。
バス2では、IDとRTRにより表される優先度に基づく通信調停が行われる。複数のECU10から同時にフレームDが送信される場合、各ECU10は、自己が送信したフレームDとバス状態をモニターした結果を比較する。ここで、リセッシブとドミナントが別々のECU10から同時に送信された場合、ドミナントが優先され、バスの状態はドミナントとなる。このとき、リセッシブを送信したノードは自己が送信したものとバス状態の違いにより、通信調停に負けたと判断して送信を停止する。係る原理により、複数のECU10から同時にフレームDが送信開始された場合、他ノードがリセッシブ送信を行っているときにドミナントを送信したノードが通信調停に勝つことになるので、IDの値が小さいフレームDほど、優先度が高いということになる。
図5は、比較対象の車両用通信システムの処理を模式的に示す図である。図中、Tは送信周期を示している。周期Tにおいて、周期T内で複数のフレームDがネットワークNWで送受信される。例えばECU10−1、10−2、および10−3は、それぞれ識別子101、102、および103のフレームD(フレームD101、フレームD102、フレームD103)を昇順で順番にネットワークNWに送信する。また、監視装置40は、フレームD103がネットワークNWに送信された後、識別子104および105のフレームD(フレームD104、フレームD105)を昇順で順番にネットワークNWに送信する。
例えば1周期目では、送信スケジュールに登録されたフレームD101からD105が正常にネットワークNWに送信されたが、2周期目で送信スケジュールに存在しないフレームD100が複数ネットワークNWに送信されたものとする。送信スケジュールは、フレームDの識別子に、バス2に送信するフレームDの順番を対応づけた一覧である。図6は、ECU10の記憶部20に記憶された送信スケジュールSTの一例を示す図である。送信スケジュールSTは、例えばECU10の記憶部20または監視装置40の監視側記憶部50に記憶される。ECU10に記憶される送信スケジュールSTは、例えば自装置が所属するネットワークNWにおける送信スケジュールである。監視装置40の監視側記憶部50に記憶される送信スケジュールSTは、例えば自装置が接続されたネットワークNWにおける送信スケジュールである。図示する例は、監視装置40の監視側記憶部50に記憶された送信スケジュールSTである。
また、ECU10の記憶部20および監視装置40の監視側記憶部50には、識別子に対応付けられた優先度情報が記憶されている。図7は、優先度情報PTの一例を示す図である。なお、監視装置40の監視側記憶部50には、例えば自装置が接続されたネットワークNWに存在する識別子に対する優先度情報PTが記憶されている。
例えばフレームD100の優先度がECUや監視装置が送信するフレームDの優先度よりも高い場合、比較対象の車両用通信システムでは、優先度の高いフレームD100がネットワークNW内で送受信される。これにより1つの周期内で送信できるフレームDの数(情報量)が上限値に達した場合、送信スケジュールSTに存在する優先度の低い識別子のフレームD(例えばフレームD102から105)の送信が遅延したり、送信先にフレームDを送信できなかったりする場合がある。この場合、送信元のECU等は、監視装置や送信先のECUの送信要求等により送信できなかったフレームDを再送信する。この結果、フレームDの送信が遅延し、ネットワークNWに含まれるECUの制御に遅延が生じる場合がある。
これに対して、本実施形態の車両用通信システム1では、ECU10または監視装置40が送信スケジュールSTに存在しない優先度を保持しているフレームDを検知した場合、ECU10または監視装置40が送信するフレームDの優先度を高くして、フレームDの送信が遅延することを抑制する。ECU10または監視装置40は、例えば送信スケジュールSTに存在する識別子の優先度を設定された値高くする。図8は、本実施形態の車両用通信システム1の処理を模式的に示す図である。例えば2周期目で送信スケジュールSTに存在しないフレームD100が複数ネットワークNWに送信されたものとする。本実施形態の車両用通信システム1では、ECU10または監視装置40が、例えば送信スケジュールSTに登録されたフレームD101からD105の識別子の優先度より高い優先度の識別子のフレームD100がネットワークNWに送信されたことを検知する。この場合、ECU10または監視装置40は、ネットワークNWが攻撃されていると判定する。ECU10または監視装置40は、攻撃通知(例えばフレームD000)をネットワークNWに送信する。攻撃通知は、ECU10または監視装置40が、ネットワークNWが攻撃されていることをECU10または監視装置40に通知する場合に、ネットワークNWに送信する通知である。攻撃通知には、例えば車載ネットワーク内または自装置が属するネットワークNWで使用される識別子の中で最も高い優先度の識別子である。ECU10または監視装置40が、ネットワークNWに送信された送信スケジュールSTに存在しないフレームD100より優先度が高い識別子のフレームDをネットワークNWに送信することで、ネットワークNWが攻撃されていることを通知する。
ネットワークNWに攻撃通知が送信されたことを検知した場合、ECU10または監視装置40は、例えば送信スケジュールSTに登録されている識別子ごとの優先度を、送信スケジュールSTに登録されていない識別子を有するフレームが保持している優先度より高くする。ECU10または監視装置40は、自装置が送信するフレームDの識別子を、ネットワークNWに送信された送信スケジュールSTに存在しないフレームD100より優先度が高い識別子に変更し、変更した識別子のフレームDをネットワークNWに送信する。これより、ECU10または監視装置40が送信するフレームDは、送信スケジュールSTに存在しないフレームDより優先的に送信される。この結果、車両用通信システム1は、フレームDの遅延を抑制することで制御の遅延を抑制させることができる。
なお、図中、「ON」は、イグニッションがオン状態にされたときを示し、図中、(1)、(2−1)、(3)は、各ECU10の初期化処理をしている時間を示している。例えばイグニッションがオン状態にされた場合、ECU10がフレームD101を送信してもよいし、監視装置40の指示信号に応じてECU10がフレームD101を送信してもよい。図中、(2−2)は、ECU10−2が、フレームD102を送信するのを待機している時間を示している。
以下、監視装置40またはECU10により実行される処理の流れについて、フローチャートに即して説明する。本実施形態では、一例としてECU10が実行する場合について説明する。
(監視処理)
図9は、ECU10により実行される監視処理の流れを示すフローチャートである。まず、ECU10は、送信スケジュールSTに含まれないフレームDの識別子(以下、不正識別子という。)がネットワークNWに存在するか否かを判定する(ステップS100)。送信スケジュールSTに含まれないフレームDの識別子がネットワークNWに存在しない場合、ECU10は、ネットワークNWにおいて不正なフレームDが送信されていないと判定し、本フローチャートの処理は終了する。
不正識別子がネットワークNWに存在する場合、ECU10は、不正識別子と、攻撃通知に含まれる識別子(攻撃通知識別子)とが一致するか否かを判定する(ステップS102)。ステップS102の処理で不正識別子と、攻撃通知識別子とが一致すると判定した場合、ECU10は、ネットワークNWが攻撃されていることを示す情報を出力する(ステップS112)。例えばエンジンを制御するECU10が、ネットワークNWが攻撃されていることを示す情報を出力する場合、エンジンを制御するECU10は、エンジンの回転数を示す計器に異常を示す情報を出力する。
ステップS102の処理で不正識別子と、攻撃通知識別子とが一致しない場合、ECU10は、不正識別子の優先度が、正規の上位識別子の優先度以上であるか否かを判定する(ステップS104)。正規の上位識別子は、ネットワークNWにおいて使用されると規定され、自装置が記憶する送信スケジュールSTに含まれるフレームDに対応付けられていない識別子の中で、送信スケジュールSTに含まれるフレームDに対応付けられた識別子より優先度の高い識別子である。
ステップS104で不正識別子の優先度が、正規の上位識別子の優先度以上の場合、ECU10は、フェールセーフを実行すると判定する(ステップS106)。これによりECU10は、例えば自装置の制御対象の車載機器等に対して、フェールセーフ(安全側に)制御する。例えばエンジンを制御するECU10がフェールセーフを実行する場合は、エンジンを制御するECU10は、エンジンの出力を抑制させる傾向でエンジンを制御する。
不正識別子の優先度が、正規の上位識別子の優先度未満の場合、ECU10は、送信するフレームDの識別子の変更が必要であると判定する(ステップS108)。次に、ECU10は、攻撃通知の要求を行う(ステップS110)。次に、ECU10は、ネットアークNWが攻撃されていることを示す情報を情報出力部(不図示)に出力させる(ステップS112)。これにより本フローチャートの処理は終了する。
図10は、ECU10により実行される受信処理の流れを示すフローチャートである。まず、ECU10が、前述した監視処理を実行する(ステップS100からS112)。次に、ECU10は、フェールセーフを実行したか否かを判定する(ステップS120)。フェールセーフを実行しない場合(ステップS106でフェールセーフを実行すると判定されていない場合)、ECU10は、ネットワークNWに送信されたフレームDに含まれる情報(受信値)を反映して制御値を設定し、設定した制御値に基づいて、制御対象の車載機器等を制御する(ステップS122)。フェールセーフを実行する場合(ステップS106でフェールセーフを実行すると判定された場合)、受信値を代替値に変更して制御値を設定し、設定した制御値に基づいて、制御対象の車載機器等を制御する(ステップS126)。代替値とは、例えば制御対象の車載機器等に対してフェールセーフを実行するための値である。これにより本フローチャートの処理は終了する。
図11は、ECU10がフレームDを送信する場合の流れを示すフローチャートである。まず、ECU10が、ステップS108で送信フレームDの識別子を変更すると判定したか否かを判定する(ステップS140)。ステップS108の処理で送信フレームDの識別子の変更をすると判定していない場合、ECU10は、自装置が送信するフレームDを送信スケジュールSTに応じて送信する(ステップS142)。ステップS108で送信フレームDの識別子の変更が必要であると判定した場合、ECU10は、ステップS110で要求した攻撃通知および識別子の変更を示す情報を含むフレームDをネットワークNWに送信する(ステップS144)。これにより本フローチャートの処理は終了する。
(攻撃通知が送信された場合のECU10の送受信処理)
図12は、攻撃通知が送信された場合にECU10により実行される受信処理の流れを示すフローチャートである。まず、ECU10が、攻撃通知を受信したか否かを判定する(ステップS150)。攻撃通知を受信していない場合、ECU10は、受信したフレームDに含まれる受信値をネットワークNWに送信するフレームDに含む情報(転送値)に反映する(ステップS160)。攻撃通知を受信した場合、ECU10は、ネットワークNWが攻撃されていると判定し、ネットワークNWが攻撃されていることを示す情報を情報出力部(計器等)に出力させる(ステップS152)。
次に、ECU10は、識別子の変更要求を示す情報(ステップS144参照)を受信したか否かを判定する(ステップS154)。識別子の変更要求を示す情報を受信していない場合、受信値に代替値を反映してフェールセーフ処理を実行する(ステップS156)。識別子の変更要求を示す情報を受信した場合、ECU10は、送受信するフレームDの識別子を更新する(ステップS158)。これにより、ECU10は、送受信するフレームDの識別子を不正識別子より優先度の高い識別子に変更する。次に、ECU10は、受信値を転送値に反映する(ステップS160)これにより本フローチャートの処理は終了する。
図13は、攻撃通知が送信された場合にECU10により実行される送信処理の流れを示すフローチャートである。まず、ECU10が、フェールセーフ処理(ステップS156参照)を実行中であるか否かを判定する(ステップS180)。フェールセーフ処理を実行中でない場合、ECU10は、送信するフレームDの識別子を不正識別子より優先度の高い識別子に変更してフレームDをネットワークNWに送信する(ステップS182)。フェールセーフ処理を実行中である場合、ECU10は、送信フレームDの送信を停止する(ステップS184)。これにより本フローチャートの処理は終了する。
本実施形態では、一例としてECU10が処理を実行するものとして説明したが、上述の処理は監視装置40が行ってもよい。この場合において、監視装置40が制御する対象機器等が存在しない場合、フェールセーフの実行等の対象機器等の制御に関する処理は省略する。
以上説明した第1の実施形態の車両用通信システム1の制御部30は、CANトランシーバ38により送信スケジュールSTに記憶されていない識別子を有するフレームDであって優先度を保持しているフレームが受信された場合に、送信スケジュールSTに記憶されている識別子ごとの優先度を所定値高くすることで、車載ネットワークのセキュリティ性を向上させることができる。
(第2の実施形態)
以下、第2の実施形態について説明する。第1の実施形態の車両用通信システム1は、送信スケジュールSTに存在しない識別子のフレームDが検出された場合、ECU10が、自装置の送信するフレームDの識別子の優先度を高く設定した。第2の実施形態の車両用通信システム1Aは、識別子の数をカウントしてなりすましを検知する。以下、第1の実施形態の車両用通信システム1との相違点を中心に説明する。
図14は、第2の実施形態の車両用通信システム1Aの処理を模式的に示す図である。例えば2周期目で送信スケジュールSTに存在するフレームD102が、ECU10−2とは異なる機器等から送信されたものとする。すなわち、なりすましによりフレームD102Thが送信されたものとする。なりすましにより送信されたなりすましフレームD102ThがネットワークNWに送信されたことにより、フレームD104の送信は妨害される場合がある。また、なりすましフレームD102ThがネットワークNWに送信された後、ECU10−3はフレームD103を送信し、監視装置40は、フレームD104を再送信およびフレームD105を送信する。これにより、送信スケジュールSTに登録されたフレームDの送信が遅延する場合がある。
本実施形態では、監視装置40監視側通信制御部64は、識別子カウント処理を実行する。識別子カウント処理は、監視側通信制御部64が、周期ごとにネットワークNWに送信されたフレームDを識別子に対応付けてカウントする。監視側通信制御部64は、例えば識別子カウント処理を実行することで、ネットワークNWに送信された識別子の一覧である識別子テーブル(図中、IT1、IT2)を生成する。図中、IT1は、周期T1に対応する識別子テーブルであり、IT2は、周期T1に対応する識別子テーブルである。識別子テーブルは、監視装置40の監視側記憶部50に記憶される。
例えば1つ目の周期では、各識別子に対応するフレームDのカウント値は1である。一方、2つ目の周期では、なりすましフレームD102Thが送信されたことにより、フレームD102およびフレームD103のカウント値は2となる。ネットワークNWにおいて、1つの周期において、それぞれの識別子に対応するフレームDは1つずつ送信される。監視側通信制御部64は、1つの周期で同一の識別子を複数カウントした場合、カウント値が複数となった識別子を有するフレームDは、なりすましフレームDであると判定する。監視装置40は、なりすましを検知したことを示すなりすまし検知情報をネットワークNWに送信する。
例えば監視側通信制御部64は、カウント値が2となった識別子のフレームD102とフレームD103のうち、優先度の低い識別子のフレームDはなりすましの可能性があると判定する。また、監視側通信制御部64は、優先度の低い識別子のフレームDのうち、最初にネットワークNWに送信されたフレームD102はなりすましのフレームD102でないと判定し、次にネットワークNWに送信されたフレームD102はなりすましのフレームD102であると判定する。ECU10−2は、フレームD102より小さい番号の識別子のフレームDが送信されたことを条件にネットワークNWにフレームD102を送信するため、フレームD103の後にフレームD103より小さい番号の識別子のフレームD102がネットワークNWに送信されることが、通常ないためである。
(ECUの送受信処理)
図15は、第2の実施形態においてECU10により実行される受信処理の流れを示すフローチャートである。まず、ECU10は、監視装置40からなりすましを検知したことを示すなりすまし検知情報を受信したか否かを判定する(ステップS200)。なりすまし検知情報を受信した場合、ECU10は、なりすましのフレームDに含まれる受信情報を代替値に変更する(ステップS202)。これによりなりすましフレームDに含まれる受信情報に対応する制御が実行されることが防止される。
なりすまし検知情報を受信していない場合、ECU10は、送信のトリガーとなる識別子のフレームD(送信トリガー)を受信したか否かを判定する(ステップS204)。送信トリガーとは、例えばECU10が送信するフレームDの識別番号より1つ小さい(優先度が高い)識別番号である。送信トリガーを受信していない場合、本フローチャートの処理は終了する。送信トリガーを受信した場合、ECU10は、自装置が送信する識別子のフレームDの送信を許可する(ステップS206)。次に、ECU10は、受信値を制御値に反映する(ステップS208)。これにより本フローチャートの処理は終了する。この結果、なりすましフレームDに対応する情報は代替値が反映され、正規の識別子に対応するフレームDに含まれる情報は、制御値に反映される。
図16は、第2の実施形態においてECU10により実行される送信処理の流れを示すフローチャートである。まず、ECU10は、ネットワークNWの異常を検知中であるか否かを判定する(ステップS220)。例えばECU10は、監視装置40からなりすまし検知情報を受信したか否かを判定する。
ネットワークNWの異常中を検知していない場合、本フローチャートの処理は終了する。ネットワークNWの異常中を検知した場合、ECU10は、自装置が送信するフレームDを準備する(ステップS222)。次に、ECU10は、自身が送信するフレームDがある1つの周期のなかで初回にネットワークNWに送信されるフレームDであるか否かを判定する(ステップS224)。初回にネットワークNWに送信されるフレームDでない場合、本フローチャートの処理は終了する。初回にネットワークNWに送信されるフレームDである場合、ECU10は、自装置が送信する識別子のフレームDを送信する(ステップS226)。初回フレームの場合は、なりすまし検知がされた周期とは異なる周期であるため、ECU10は、フレームDを送信する。これにより本フローチャートの処理は終了する。
(監視装置の処理)
図17は、第2の実施形態において監視装置40により実行される監視処理の流れを示すフローチャートである。まず、監視装置40の監視側通信制御部64は、周期ごとにネットワークNWに送信されたフレームDの識別子をカウントする識別子カウント処理を実行する(ステップS230)。次に、監視側通信制御部64は、送信トリガーを受信したか否かを判定する(ステップS232)。ここでの送信トリガーは、例えばある周期において最後に送信する識別子のフレームの前の識別子のフレームである。送信トリガーを受信しなかった場合、本フローチャートの処理は終了する。
送信トリガーを受信した場合、監視側通信制御部64は、カウント値監視処理を実行する(ステップS234)。監視側通信制御部64は、ネットワークNWに存在する識別子の数を識別子ごとにカウントするカウント値監視処理(詳細は後述)を実行する。監視側通信制御部64は、識別子テーブルを参照し、ネットワークNWに送信された識別子の数をカウントした結果、カウント値(識別子の数)が増えた識別子が存在する場合、なりすましを検知する。
次に、監視側通信制御部64は、ネットワークNWへのフレームDの送受信が停止中であるか否かを判定する(ステップS236)。ネットワークNWへのフレームDの送受信が停止中であると判定した場合、本フローチャートの処理は終了する。
ネットワークNWへのフレームDの送受信が停止中でないと判定した場合、監視側通信制御部64は、なりすましを検知したか否かを判定する(ステップS238)。なりすましを検知していないと判定した場合、監視側通信制御部64は、処理をステップS242に進める。なりすましを検知したと判定した場合、監視側通信制御部64は、なりすましのフレームDに含まれる受信値を代替値に反映する(ステップS240)。次に、監視側通信制御部64は、自装置が送信する識別子のフレームDの送信を許可する(ステップS242)。次に、監視側通信制御部64は、受信値または代替値を制御値に反映させる(ステップS244)。これにより本フローチャートの処理は終了する。
(カウント値監視処理)
図18は、カウント値監視処理の流れを示すフローチャートである。まず、監視側通信制御部64は、予め設定された監視タイマがタイムアウトであるか否かを判定する(ステップS250)。監視タイマは、例えば1周期の長さに設定される。
設定された監視タイマがタイムアウトでないと判定した場合、監視側通信制御部64は、各識別子のカウント値にずれがあるか否かを判定する(ステップS252)。各識別子のカウント値にずれがないと判定した場合、監視側通信制御部64は、ネットワークNWが正常であると判定する(ステップS254)。各識別子のカウント値にずれがあると判定した場合、監視側通信制御部64は、なりすましフレームDがネットワークNWに送信されていると判定する(ステップS256)。すなわち、監視側通信制御部64は、なりすましを検知する。次に、監視側通信制御部64は、自装置が送信するフレームDになりすましを検知したことを示す情報を設定する(ステップS258)。次に、監視側通信制御部64は、監視タイマをリセットする(ステップS260)。
設定された監視タイマがタイムアウトであると判定した場合、監視側通信制御部64は、各識別子のカウント値にずれがあるか否かを判定する(ステップS262)。各識別子のカウント値にずれがない場合、監視側通信制御部64は、その他の識別子がカウントされたか否かを判定する(ステップS264)。その他の識別子とは、例えば送信スケジュールSTに存在しない識別子である。
その他の識別子がカウントされていない場合、監視側通信制御部64は、ネットワークNWに障害があるか否かを判定する(ステップS266)。ネットワークNWに障害がありと判定した場合、監視側通信制御部64は、ネットワークNWの異常を検知し(ステップS268)、送受信処理を停止すると共に、フェールセーフ動作を行う(ステップS270)。ネットワークNWに障害がなしと判定した場合、監視側通信制御部64は、処理をステップS286に進める。
その他の識別子がカウントされた場合、監視側通信制御部64は、ネットワークNWに障害があると判定し(ステップS272)、ネットワークNWが攻撃されていると判定する(ステップS274)。次に、監視側通信制御部64は、送受信処理を停止すると共に、監視タイマをリセットする(ステップS276)。
各識別子のカウント値にずれがある場合、監視側通信制御部64は、なりすましによるフレームDがネットワークNWに送信されたため、ネットワークNWに障害があると判定する(ステップS278)。次に、監視側通信制御部64は、なりすましを検知した結果、周期遅延が発生したと判定する(ステップS280)。次に、監視側通信制御部64は、監視タイマをリセットする(ステップS282)。次に、監視側通信制御部64は、自装置が送信するフレームDになりすましを検知したことを示す情報を設定する(ステップS284)。次に、監視側通信制御部64は、カウント値をリセットする(ステップS286)。これにより本フローチャートの処理は終了する。
図19は、第2の実施形態において監視装置40により実行される送信処理の流れを示すフローチャートである。まず、監視装置40の監視側通信制御部64は、なりすましを検知したか否かを判定する(ステップS290)。なりすましを検知した場合、監視側通信制御部64は、処理をステップS292に進める。なお、この場合、前述したフローチャートで説明したように、なりすまし検知情報は自装置が送信するフレームDに設定されている。
なりすましを検知していない場合、監視側通信制御部64は、自装置が送信する識別子のフレームDを設定する(ステップS291)。次に、監視側通信制御部64は、ネットワークNWへフレームDの送受信が停止中であるか否かを判定する(ステップS292)。ネットワークNWへのフレームDの送受信が停止中であると判定した場合、本フローチャートの処理は終了する。
ネットワークNWへのフレームDの送受信が停止中でないと判定した場合、監視側通信制御部64は、ネットワークNWはアイドル状態であるか否かを判定する(ステップS293)。ネットワークNWがアイドル状態でないと判定した場合、本フローチャートの処理は終了する。ネットワークNWはアイドル状態であると判定した場合、監視側通信制御部64は、ネットワークNWは正常であると判定し(ステップS294)、フレームDの送受信を開始させる(ステップS295)。次に、監視側通信制御部64は、設定した識別子のフレームD、または設定した識別子となりすまし検知情報を含むフレームのネットワークNWへの送信を許可する(ステップS296)。これにより本フローチャートの処理は終了する。
以上説明した第2の実施形態の車両用通信システム1Aの監視装置40は、車載ネットワーク内に送受信されるフレームDの識別子を識別子ごとにカウントし、カウント結果において所定の識別子と、所定の識別子の次に優先度が高い識別子とのカウント数が増加したときに、所定の識別子が不正であると判定することで、車載ネットワークのセキュリティ性を向上させることができる。
(第3の実施形態)
以下、第3の実施形態について説明する。第3の実施形態の車両用通信システム1Bでは、監視装置40が、ある周期において設定された数以上のフレームDがネットワークNWに送信されたことを検知した場合、ECU10に、そのECU10が送信する識別子のフレームDを送信することを要求する送信要求情報を含んだフレームDをネットワークNWに送信する。以下、第1の実施形態の車両用通信システム1との相違点を中心に説明する。
図20は、第3実施形態の車両用通信システム1Bにおいて実行される処理を模式的に示す図である。例えば最初の周期Tでは、送信スケジュールSTに登録され、周期Tで送信されるデータDが正常に送信されたものとする。一方、次の周期Tでは、送信スケジュールSTに登録されていない不正識別子(データD102)が送信されたことにより、送信スケジュールSTに登録されたデータが次の周期Tで送信できず、送信スケジュールSTに登録されたデータの送信に遅延が生じたものとする。
監視装置40は、ネットワークNWに送信されるフレームDを異なるネットワークNWに転送する必要があり、送信スケジュールSTに登録されたフレームDを設定された周期Tで送信されることを保証する必要がある。例えば、不正識別子がネットワークNWに送信された場合、ECU10は、他のECU10から所定の時間内にフレームDを受信できないため、ネットワークNWの異常を検知して自装置がフレームDを送信することを停止している場合がある。これに対して、本実施形態の監視装置40は、自装置がネットワークNWにフレームDを送信する場合、ECU10にフレームDの送信を要求する送信要求情報を付加してフレームDをネットワークNWに送信する。これによりECU10は、自装置が送信するフレームDの送信を復帰させる。
例えば監視装置40の監視側通信制御部64は、識別子テーブルを生成する。監視側通信制御部64は、図中、識別子テーブルIT3またはIT4を参照し、送信スケジュールSTに登録されていない識別子であるデータD002がネットワークNWに送信されたと判定した場合、不正識別子がネットワークNWに送信されたと判定する。この場合、監視側通信制御部64は、送信要求情報を自装置が送信するフレームDに付加してフレームDをネットワークNWに送信する。図中では、監視側通信制御部64は、例えば送信要求情報を送信スケジュールに登録された最も優先順位が低い識別子のフレームD105に付加してネットワークNWに送信する。これにより、ECU10−1が送信を停止している場合であっても、送信要求情報を受信したことに応じて、ECU10−1は、送信スケジュールに登録された最も優先順位が高い識別子のフレームDの送信を復帰させる。
以上説明した第3の実施形態の車両用通信システム1Bの監視装置40は、ネットワークNWに不正識別子が送信された場合、ECU10にフレームDの送信を要求する情報を付加してフレームDをネットワークNWに送信することで、ネットワークNWにおけるフレームDの送受信を復帰させることができる。
(第4の実施形態)
以下、第4の実施形態について説明する。第4の実施形態の車両用通信システム1Cでは、監視装置40が、ネットワークNWにおける送信の周期を決定する。以下、第1の実施形態の車両用通信システム1との相違点を中心に説明する。
図21は、第4の実施形態おいて監視装置40が実行する処理の流れを示すフローチャートである。まず、監視装置40の監視側通信制御部64が、送信トリガーを受信したか否かを判定する(ステップS300)。送信トリガーを受信していない場合、監視側通信制御部64は、周期計測における識別子をカウントする(ステップS302)。周期計測は、例えば初回フレームDまたは送信トリガー等の設定されたフレームDを基準に送信スケジュールSTに登録されたフレームDが送信される周期の長さの計測である。
送信トリガーを受信した場合、監視側通信制御部64は、初回フレームDを受信したか否かを判定する(ステップS304)。初回フレームDを受信した場合、監視側通信制御部64は、周期の計測を開始する(ステップS306)。初回フレームDを受信していない場合、監視側通信制御部64は、計測途中である周期計測値を退避させ、周期の再計測を開始する(ステップS308)。この場合、監視側通信制御部64は、例えば送信トリガーを基準に周期を計測する。
次に、監視側通信制御部64は、所定回数の周期の計測が終了したか否かを判定する(ステップS310)。所定回数の周期の計測が終了していない場合、本フローチャートの処理は終了する。所定回数の周期の計測が終了した場合、監視側通信制御部64は、周期の平均を算出する(ステップS312)。次に、監視側通信制御部64は、周期の計測の平均値と、設定された送信周期との差が所定度合以内か否かを判定する(ステップS314)。周期の計測の平均値と、設定された送信周期との差が所定度合以内である場合、監視側通信制御部64は、周期を正常周期に設定する(ステップS316)。これにより周期は正常周期で更新される。周期の計測の平均値と、設定された送信周期との差が所定度合以内でない場合、監視側通信制御部64は、初回フレームDを再送信するように再要求を示す情報をネットワークNWに送信する(ステップS318)。これにより本フローチャートの処理は終了する。
以上説明した第4の実施形態の車両用通信システム1Cの監視装置40は、送信スケジュールSTに登録されたフレームDが送信される周期を計測し、検知結果に基づいて周期を設定したり、フレームDを再送信させたりすることにより、第1の実施形態の車両通信装置1の効果を奏すると共に、ネットワークNWの異常を適切に判定することができる。
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。