(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024073252
(43)【公開日】2024-05-29
(54)【発明の名称】中継装置、不正フレーム検出方法及び車載装置
(51)【国際特許分類】
H04L 12/28 20060101AFI20240522BHJP
H04L 12/46 20060101ALI20240522BHJP
H04L 12/22 20060101ALI20240522BHJP
H04L 12/66 20060101ALI20240522BHJP
【FI】
H04L12/28 200Z
H04L12/46 100C
H04L12/22
H04L12/66
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022184354
(22)【出願日】2022-11-17
(71)【出願人】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(71)【出願人】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(71)【出願人】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】110000280
【氏名又は名称】弁理士法人サンクレスト国際特許事務所
(72)【発明者】
【氏名】上口 翔悟
【テーマコード(参考)】
5K030
5K033
【Fターム(参考)】
5K030GA15
5K030HA08
5K030HC14
5K030HD03
5K030LC13
5K033AA08
5K033BA06
5K033DA01
5K033DB19
(57)【要約】
【課題】中継装置における処理負荷を抑制しつつ、車載ネットワークに流れるフレームを網羅的に不正フレーム検出の対象とする。
【解決手段】
中継装置は、複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置であって、前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信する受信部と、前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理を実行することが可能な検出部と、を備え、前記検出部は、前記検出処理を停止している停止状態において、前記受信部によって前記開始要求が受信された場合に、前記停止状態から、前記検出処理を実行する実行状態に移行する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置であって、
前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信する受信部と、
前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理を実行することが可能な検出部と、
を備え、
前記検出部は、前記検出処理を停止している停止状態において、前記受信部によって前記開始要求が受信された場合に、前記停止状態から、前記検出処理を実行する実行状態に移行する、
中継装置。
【請求項2】
前記中継装置は、車載ネットワークを構成する複数の通信線に接続されており、
前記検出部は、前記開始要求の送信元の前記車載装置が接続された通信線を伝送されるフレームを、前記検出処理の対象とする、
請求項1に記載の中継装置。
【請求項3】
前記開始要求は、前記不正フレームを検出した前記車載装置が接続された通信線を特定する特定情報を含む、
請求項2に記載の中継装置。
【請求項4】
前記開始要求は、前記車載装置による前記不正フレームの検出結果を含む、
請求項1に記載の中継装置。
【請求項5】
前記検出部は、前記複数の車載装置の間で中継されるフレームを、前記検出処理の対象とする、
請求項1に記載の中継装置。
【請求項6】
前記検出処理は、前記車載装置によって第1の種類のフレームから前記不正フレームが検出された場合に、前記第1の種類とは異なる第2の種類のフレームに基づいて、前記第1の種類のフレームから不正フレームを検出する処理である、
請求項1に記載の中継装置。
【請求項7】
前記検出処理は、複数の種類のフレームから不正フレームを検出する処理である、
請求項1に記載の中継装置。
【請求項8】
前記検出処理は、第1の種類のフレームの送信タイミングと、前記第1の種類とは異なる第2の種類のフレームの送信タイミングとに基づいて、前記第1の種類のフレームから不正フレームを検出する処理である、
請求項1から請求項7のいずれか1項に記載の中継装置。
【請求項9】
前記検出処理は、第1の種類のフレームと、前記第1の種類とは異なる第2の種類のフレームとの単位時間当たりの送信数に基づいて、不正フレームを検出する処理である、
請求項1から請求項7のいずれか1項に記載の中継装置。
【請求項10】
前記検出処理は、第1の種類のフレームに含まれる第1データ値と、前記第1の種類とは異なる第2の種類のフレームに含まれる第2データ値から推定される推定値とを比較することにより、不正フレームを検出する処理である、
請求項1から請求項7のいずれか1項に記載の中継装置。
【請求項11】
前記中継装置は、前記検出部によって前記不正フレームが検出された場合に、前記不正フレームの検出を通知する通知画面を表示するための表示情報を送信する送信部をさらに備える、
請求項1に記載の中継装置。
【請求項12】
複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置によって不正フレームを検出する不正フレーム検出方法であって、
前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信するステップと、
前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理が停止されている停止状態において、前記開始要求が受信された場合に、前記停止状態から、前記検出処理が実行される実行状態に移行するステップと、
を含む、
不正フレーム検出方法。
【請求項13】
車載ネットワークに接続された車載装置であって、
前記車載ネットワークを伝送されるフレームを受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより前記不正フレームを検出する検出部と、
前記検出部によって前記不正フレームが検出された場合に、前記車載ネットワークにおいて複数の車載装置の間でフレームを中継する中継装置へ、不正フレームの検出の開始要求を送信する送信部と、
を備える、
車載装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、中継装置、不正フレーム検出方法及び車載装置に関する。
【背景技術】
【0002】
車両には、エンジン、トランスミッション等を制御する制御系ECU(Electronic Control Unit)、ヘッドライト、パワーウインドウ等を制御するBCM(Body Control Module)、ナビゲーション装置、マルチメディア機器等の情報系ECU等、多種の車載装置が搭載される。各車載装置は、車載ネットワークに接続され、相互に通信することができる。
【0003】
車載ネットワークに非正規の車載装置が正規の車載装置になりすまして接続され、非正規の車載装置から車載ネットワークに不正なフレームが送信されることにより、車両が不正に制御されることが問題となっている。このため、車載ネットワークにおいて不正なフレームを検出する技術が提案されている。
【0004】
特許文献1には、複数のECU(Electronic Control Unit)と、各ECUの接続を中継するGW-ECUとが接続された車載ネットワークにおいて、各ECUに不正なメッセージ(フレーム)を検出する機能を設け、各ECUにおける不正なメッセージの検出結果をGW-ECUに記憶する車載ネットワークシステムが開示されている。特許文献1に開示された車載ネットワークシステムでは、各ECUにおいて不正なメッセージの検出が個別に行われる。
【0005】
特許文献2には、複数のECUと、各ECUの接続を中継する複数のEスイッチとが接続された車載ネットワークにおいて、各Eスイッチに不正なフレームを検出する機能を設けたネットワークシステムが開示されている。特許文献2に開示されたネットワークシステムでは、各ECUではなく、Eスイッチにおいて不正なフレームの検出が集約して行われる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】国際公開第2021/145116号
【特許文献2】国際公開第2019/116973号
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に開示された車載ネットワークシステムでは、各ECUは受信したメッセージしか不正メッセージ検出処理の対象としないため、車載ネットワークを伝送される各メッセージを網羅的に処理することができず、不正なメッセージの検出漏れが生じる可能性がある。
【0008】
一方、特許文献2に開示されたネットワークシステムでは、Eスイッチにおいてネットワークを伝送されるフレームを網羅的に処理することができるが、Eスイッチにおける処理負荷が高い。ネットワークに膨大なフレームが流れると、Eスイッチにおいて処理を完了することが困難となる。
【課題を解決するための手段】
【0009】
本開示の一態様に係る中継装置は、複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置であって、前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信する受信部と、前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理を実行することが可能な検出部と、を備え、前記検出部は、前記検出処理を停止している停止状態において、前記受信部によって前記開始要求が受信された場合に、前記停止状態から、前記検出処理を実行する実行状態に移行する。
【0010】
本開示は、上記のような特徴的な構成を備える中継装置、前記中継装置における特徴的な処理をステップとする不正フレーム検出方法、及び特徴的な構成を備える車載装置として実現することができるだけでなく、前記中継装置及び前記車載装置を含む車載システムとして実現したり、前記中継装置に特徴的な処理を実行させるための不正フレーム検出プログラムとして実現したり、前記中継装置の一部又は全部を半導体集積回路として実現したりすることができる。さらに、本開示は、前記車載装置における特徴的な処理をステップとする方法として実現したり、前記車載装置に特徴的な処理を実行させるためのプログラムとして実現したり、前記車載装置の一部又は全部を半導体集積回路として実現したりすることもできる。
【発明の効果】
【0011】
本開示によれば、中継装置における処理負荷を抑制しつつ、車載ネットワークに流れるフレームを網羅的に不正フレーム検出の対象とすることができる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、実施形態に係る車載システムの構成の一例を示すブロック図である。
【
図2】
図2は、実施形態に係る中継ECUの構成の一例を示すブロック図である。
【
図3】
図3は、実施形態に係るECUの構成の一例を示すブロック図である。
【
図4】
図4は、実施形態に係る車載システムの機能の一例を示す機能ブロック図である。
【
図5】
図5は、第2検出部における第2検出処理の実行状態の遷移を示す状態遷移図である。
【
図6】
図6は、対応テーブルの一例を示す図である。
【
図7】
図7は、第1検出処理の一例を説明するための図である。
【
図8】
図8は、第2検出処理の一例を説明するための図である。
【
図9】
図9は、第1検出処理の他の例を説明するための図である。
【
図10】
図10は、第2検出処理の一例を説明するための図である。
【
図12】
図12は、実施形態に係る車載システムの動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【0013】
<本開示の実施形態の概要>
以下、本開示の実施形態の概要を列記して説明する。
【0014】
(1) 本実施形態に係る中継装置は、複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置であって、前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信する受信部と、前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理を実行することが可能な検出部と、を備え、前記検出部は、前記検出処理を停止している停止状態において、前記受信部によって前記開始要求が受信された場合に、前記停止状態から、前記検出処理を実行する実行状態に移行する。これにより、車載装置によって不正フレームが検出されるまでは中継装置における検出処理を停止状態とするため、中継装置における処理負荷を抑制することができる。さらに、検出処理が実行されれば、車載ネットワークに流れるフレームから網羅的に不正フレームを検出することができる。
【0015】
(2) 上記(1)において、前記中継装置は、車載ネットワークを構成する複数の通信線に接続されており、前記検出部は、前記開始要求の送信元の前記車載装置が接続された通信線を伝送されるフレームを、前記検出処理の対象としてもよい。これにより、不正フレームを効率的に検出することができる。
【0016】
(3) 上記(2)において、前記開始要求は、前記不正フレームを検出した前記車載装置が接続された通信線を特定する特定情報を含んでもよい。これにより、特定情報によって特定された通信線を流れるフレームを検出処理の対象とすることができる。
【0017】
(4) 上記(1)又は(2)において、前記開始要求は、前記車載装置による前記不正フレームの検出結果を含んでもよい。これにより、車載装置における不正フレームの検出結果を中継装置が検出処理に利用することができる。
【0018】
(5) 上記(1)から(4)のいずれか1つにおいて、前記検出部は、前記複数の車載装置の間で中継されるフレームを、前記検出処理の対象としてもよい。これにより、中継装置宛てではないフレームを検出処理の対象とすることができ、中継装置によって中継されるフレームから網羅的に不正フレームを検出することができる。
【0019】
(6) 上記(1)から(5)のいずれか1つにおいて、前記検出処理は、前記車載装置によって第1の種類のフレームから前記不正フレームが検出された場合に、前記第1の種類とは異なる第2の種類のフレームに基づいて、前記第1の種類のフレームから不正フレームを検出する処理であってもよい。これにより、車載装置において検出された不正フレームと同じ第1の種類フレームを検出処理の対象として、効率的に不正フレームを検出することができる。
【0020】
(7) 上記(1)から(6)のいずれか1つにおいて、前記検出処理は、複数の種類のフレームから不正フレームを検出する処理であってもよい。これにより、車載ネットワークを流れる複数の種類のフレームから網羅的に不正フレームを検出することができる。
【0021】
(8) 上記(1)から(7)のいずれか1つにおいて、前記検出処理は、第1の種類のフレームの送信タイミングと、前記第1の種類とは異なる第2の種類のフレームの送信タイミングとに基づいて、前記第1の種類のフレームから不正フレームを検出する処理であってもよい。これにより、第1の種類のフレームの送信タイミングだけでなく、第2の種類のフレームの送信タイミングを用いて、高精度に不正フレームを検出することができる。
【0022】
(9) 上記(1)から(7)のいずれか1つにおいて、前記検出処理は、第1の種類のフレームと、前記第1の種類とは異なる第2の種類のフレームとの単位時間当たりの送信数に基づいて、不正フレームを検出する処理であってもよい。これにより、第1の種類のフレームだけでなく、第2の種類のフレームも用いて、高精度に不正フレームを検出することができる。
【0023】
(10) 上記(1)から(7)のいずれか1つにおいて、前記検出処理は、第1の種類のフレームに含まれる第1データ値と、前記第1の種類とは異なる第2の種類のフレームに含まれる第2データ値から推定される推定値とを比較することにより、不正フレームを検出する処理であってもよい。これにより、第2データ値を用いて、高精度に不正フレームを検出することができる。
【0024】
(11) 上記(1)から(10)のいずれか1つにおいて、前記中継装置は、前記検出部によって前記不正フレームが検出された場合に、前記不正フレームの検出を通知する通知画面を表示するための表示情報を送信する送信部をさらに備えてもよい。これにより、不正フレームが検出されたことをユーザに通知することができる。
【0025】
(12) 本実施形態に係る不正フレーム検出方法は、複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置によって不正フレームを検出する不正フレーム検出方法であって、前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信するステップと、前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理が停止されている停止状態において、前記開始要求が受信された場合に、前記停止状態から、前記検出処理が実行される実行状態に移行するステップと、を含む。これにより、車載装置によって不正フレームが検出されるまでは中継装置における検出処理を停止状態とするため、中継装置における処理負荷を抑制することができる。さらに、検出処理が実行されれば、車載ネットワークに流れるフレームから網羅的に不正フレームを検出することができる。
【0026】
(13) 本実施形態に係る車載装置は、車載ネットワークに接続された車載装置であって、前記車載ネットワークを伝送されるフレームを受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより前記不正フレームを検出する検出部と、前記検出部によって前記不正フレームが検出された場合に、前記車載ネットワークにおいて複数の車載装置の間でフレームを中継する中継装置へ、不正フレームの検出の開始要求を送信する送信部と、を備える。これにより、車載装置によって不正フレームが検出されるまでは中継装置における検出処理を停止状態とすることができ、中継装置における処理負荷を抑制することができる。さらに、検出処理が実行されれば、車載ネットワークに流れるフレームから網羅的に不正フレームを検出することができる。
【0027】
<本開示の実施形態の詳細>
以下、図面を参照しつつ、本発明の実施形態の詳細を説明する。なお、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0028】
[1.車載システム]
図1は、本実施形態に係る車載システムの構成の一例を示すブロック図である。車載システム100は、車両に搭載される。
【0029】
本実施系に係る車載システム100は、中継ECU200と、ECU300A,300B,300C,300D,300Eとを含む。車載システム100は、中継ECU200、ECU300A,300B,300C,300D,300E、及びそれらを繋ぐ通信線(通信バス)によって構成される車載ネットワークである。
【0030】
複数のECU300A,300B,300C,300D,300Eは、車両の各部に配置される。ECU300A,300B,300C,300D,300Eは、車両の各部のハードウェアを個別に制御したり、車両の各部のハードウェアの状態を監視したりする。例えば、ECU300A,300B,300C,300D,300Eは、制御系、ボディ系、情報系のECUである。ECU300A,300B,300C,300D,300Eは、「車載装置」の一例である。なお、以下の説明では、ECU300A,300B,300C,300Dを総称して「ECU300」ともいう。
【0031】
中継ECU200は、ECU300A,300B,300C,300D,300EのそれぞれとCAN(Controller Area Network)バスのような通信バス400A,400B,400Cを介して接続されている。具体的には、バス400Aには、ECU300A,300Bが接続されている。バス400Bには、ECU300C,300Dが接続されている。バス400Cには、ECU300Eが接続されている。中継ECU200は、ECU300A,300B,300C,300D,300Eのそれぞれと相互に通信することができる。
【0032】
中継ECU200及びECU300は、周期的又は非周期的にメッセージを送受信するための通信プロトコルを使用する。通信プロトコルは、例えば、CAN又はCAN FD(CAN with Flexible Data Rate)である。他の例では、プロトコルは、イーサネット(登録商標)である。
【0033】
中継ECU200は、複数のECU300間の通信を中継するゲートウェイとしての機能を有する。ECU300は、フレームを送信することができる。中継ECU200は、異なるバスに接続されたECU間のフレームを中継する。例えば、中継ECU200は、バス400Aに接続されたECU300Aと、バス400Bに接続されたECU300Cとの間でフレームを中継することができる。
【0034】
中継ECU200は、バス400Cを介して外部通信装置350に接続されている。外部通信装置350は、例えば5G(第5世代移動通信システム)又は4G(第4世代移動通信システム)に準拠した無線通信端末であり、例えば、TSU(Telematics Control Unit)である。外部通信装置350は、サーバ500と通信することができる。外部通信装置350は、中継ECU200とサーバ500との間の通信を中継する。
【0035】
中継ECU200は、バス400Cを介してユーザインタフェース装置(以下、「UI装置」ともいう)370に接続されている。UI装置370は、車両に搭載された車載装置の1つである。UI装置370は、車両のドライバによって使用される。UI装置370は、入力装置及び表示装置を含み、ドライバからの入力を受け付け、ドライバへ提供する情報を表示することができる。例えば、UI装置370は、中継ECU200又はサーバ500から送信された情報を表示することができる。
【0036】
[2.中継ECUの構成]
図2は、本実施形態に係る中継ECUの構成の一例を示すブロック図である。中継ECU200は、プロセッサ201と、不揮発性メモリ202と、揮発性メモリ203と、通信インタフェース(以下、「通信I/F」ともいう)204A,204B,204Cとを含む。
【0037】
揮発性メモリ203は、例えばSRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)等の半導体メモリである。不揮発性メモリ202は、例えばフラッシュメモリ、ハードディスク、ROM(Read Only Memory)等である。不揮発性メモリ202には、コンピュータプログラムである不正フレーム検出プログラム210、及び不正フレーム検出プログラム210の実行に使用されるデータが格納される。中継ECU200の後述する機能は、不正フレーム検出プログラム210がプロセッサ201によって実行されることで発揮される。
【0038】
プロセッサ201は、例えばCPU(Central Processing Unit)である。ただし、プロセッサ201は、CPUに限られない。プロセッサ201は、GPU(Graphics Processing Unit)であってもよい。具体的な一例では、プロセッサ201は、マルチコアプロセッサである。プロセッサ201は、シングルコアプロセッサであってもよい。プロセッサ201は、コンピュータプログラムを実行可能に構成される。ただしプロセッサ201は、例えば、ASIC(Application Specific Integrated Circuit)であってもよいし、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスであってもよい。この場合、ASIC又はプログラマブルロジックデバイスは、不正フレーム検出プログラム210と同じ機能を実行可能に構成される。
【0039】
通信I/F204A,204B,204Cは、上述した車載ネットワーク用の通信プロトコルに準拠した通信インタフェースである。通信I/F204A,204B,204Cは、例えばCANインタフェースである。通信I/F204A,204B,204Cは、イーサネットインタフェースであってもよい。
【0040】
通信I/F204Aは、バス400Aに接続されている。通信I/F204Bは、バス400Bに接続されている。通信I/F204Cは、バス400Cに接続されている。中継ECU200は、通信I/F204Aによって、ECU300A及び300Bと通信することができる。中継ECU200は、通信I/F204Bによって、ECU300C及び300Dと通信することができる。中継ECU200は、通信I/F204Cによって、ECU300Eと通信することができる。さらに、中継ECU200は、通信I/F204Cによって、UI装置370と通信することができ、外部通信装置350を介してサーバ500と通信することができる。
【0041】
不揮発性メモリ202には、対応テーブル211が格納されている。対応テーブル211は、不正フレーム検出プログラム210によって用いられる。対応テーブル211については後述する。
【0042】
[3.ECUの構成]
図3は、本実施形態に係るECUの構成の一例を示すブロック図である。ECU300は、プロセッサ301と、不揮発性メモリ302と、揮発性メモリ303と、通信I/F304とを含む。
【0043】
揮発性メモリ303は、例えばSRAM、DRAM等の半導体メモリである。不揮発性メモリ302は、例えばフラッシュメモリ、ハードディスク、ROM等である。不揮発性メモリ302には、コンピュータプログラムである不正フレーム検出プログラム310、及び不正フレーム検出プログラム310の実行に使用されるデータが格納される。ECU300の後述する機能は、不正フレーム検出プログラム310がプロセッサ301によって実行されることで発揮される。
【0044】
プロセッサ301は、例えばCPUである。ただし、プロセッサ301は、CPUに限られない。プロセッサ301は、GPUであってもよい。具体的な一例では、プロセッサ301は、マルチコアプロセッサである。プロセッサ301は、シングルコアプロセッサであってもよい。プロセッサ301は、コンピュータプログラムを実行可能に構成される。ただしプロセッサ301は、例えば、ASICであってもよいし、FPGA等のプログラマブルロジックデバイスであってもよい。この場合、ASIC又はプログラマブルロジックデバイスは、不正フレーム検出プログラム310と同じ機能を実行可能に構成される。
【0045】
通信I/F304は、上述した車載ネットワーク用の通信プロトコルに準拠した通信インタフェースである。通信I/F304は、例えばCANインタフェースである。通信I/F304は、イーサネットインタフェースであってもよい。
【0046】
通信I/F304は、バス400に接続されている。ECU300は、通信I/F304によって、ECU300及び中継ECU200と通信することができる。
【0047】
[4.車載システムの機能]
図4は、本実施形態に係る車載システムの機能の一例を示す機能ブロック図である。
【0048】
ECU300のプロセッサ301が不正フレーム検出プログラム310を実行することにより、第1検出部321と、第1送信部322との各機能が実現される。中継ECU200のプロセッサ201が不正フレーム検出プログラム310を実行することにより、受信部221と、第2検出部222と、第2送信部223との各機能が実現される。
【0049】
CANでは、フレームにCANIDと呼ばれる識別情報が含まれる。CANIDは、フレームの種類を示している。例えば、「エンジン回転数」のデータを含むフレームのCANIDは「100」であり、「アクセル開度」のデータを含むフレームのCANIDは「200」である等である。CANIDは、フレームの送信元もまた示している。例えば、ECU300Aから送信されるフレームのCANIDは「100」であり、ECU300Bから送信されるフレームのCANIDは「200」である等である(
図1参照)。
【0050】
例えば、不正フレームは、正規のECU300とは異なる非正規のECU(以下、「不正ECU」ともいう)から送信される。不正ECUは、正規のECU300になりすまし、正規のECU300が使用するCANIDを含む不正フレームを送信する。不正フレームには、不正なデータが含まれる。
【0051】
例えば、CANIDが「100」であり、エンジン回転数のデータを含むフレームがECU300Aから送信され、ECU300Bによって受信されることを想定する。ECU300Bは、エンジン回転数のデータを特定の処理に用いるために、CANID「100」のフレームを受信する。つまり、CANID「100」は、フレームの送信元の識別情報であると共に、フレームの宛先(ECU300B)の識別情報でもある。バス400Aに接続された不正ECUが、CANID「100」を含む不正フレームをバス400Aへ送出すると、ECU300Bは不正フレームを受信し、不正フレームに含まれる不正なデータを使用して処理を行ってしまうことが考えられる。
【0052】
各ECU300は、このような不正フレームを検出する機能を有する。ECU300の第1検出部321は、車載ネットワークを伝送されるフレームをECU300が受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより不正フレームを検出する第1検出処理を実行する。
【0053】
例えば、ECU300Bは、CANID「100」のフレームを受信すると、受信したフレームが不正フレームであるか否かを判定する。不正フレームであると判定した場合、CANIDは、当該フレームを不正フレームとして検出する。
【0054】
第1検出部321の第1検出処理によって不正フレームが検出された場合に、第1送信部322は、中継ECU200へ、不正フレームの検出開始要求を送信する。
【0055】
中継ECU200の受信部221は、ECU300において不正フレームが検出された場合に、不正フレームの検出開始要求をECU300から受信する。
【0056】
第2検出部222は、車載ネットワークを伝送されるフレームから不正フレームを検出する第2検出処理を実行することが可能である。
【0057】
第2検出部222は、第2検出処理の実行状態を変化させることができる。
図5は、第2検出部における第2検出処理の実行状態の遷移を示す状態遷移図である。初期状態において、第2検出部222の状態は、第2検出処理を停止している停止状態である。第2検出部222は、受信部221によって検出開始要求が受信された場合に、停止状態から、第2検出処理を実行する実行状態に移行する。すなわち、ECU300から送信された検出開始要求をトリガーとして、第2検出部222は第2検出処理を開始する。
【0058】
図4に戻り、第2検出部222は、検出開始要求の送信元のECU300が接続されたバス400を伝送されるフレームを、第2検出処理の対象とする。例えば、ECU300Bが第1検出処理によって不正フレームを検出し、検出開始要求を送信した場合、第2検出部222は、ECU300Bが接続されたバス400Aを伝送されるフレームを、第2検出処理の対象とする。
【0059】
一例では、中継ECU200は、検出開始要求を受信したポート(通信I/F204)を特定し、第2検出部222は、特定したポートに接続されたバス400を伝送されるフレームを、第2検出処理の対象とすることができる。例えば、通信I/F204Aが検出開始要求を受信した場合、バス400Aを伝送されるフレームが、第2検出処理の対象とされる。他の例では、検出開始要求は、不正フレームを検出したECU300が接続されたバス400を特定する特定情報を含んでもよい。例えば、ECU300Bが検出開始要求を送信する場合、検出開始要求にはバス400Aを特定する特定情報が含まれる。中継ECU200は、検出開始要求に含まれる特定情報によって特定されるバス400Aを流れるフレームを、第2検出処理の対象とすることができる。
【0060】
検出開始要求は、ECU300による不正フレームの検出結果を含んでもよい。これにより、第2検出部222は、第1検出処理による検出結果を、第2検出処理に利用することができる。
【0061】
例えば、第1検出部321による第1検出処理は、簡易的に不正フレームを検出する処理であり、第2検出部222による第2検出処理は、網羅的に不正フレームを検出する処理である。
【0062】
具体的な一例では、第1検出処理は、不正フレーム検出の対象とするフレーム(以下、「対象フレーム」ともいう)のみを用いて、不正フレームの検出を行う処理である。例えば、ECU300Bによって実行される第1検出処理では、ECU300Bによって受信されたCANID「100」のフレームが対象フレームであり、対象フレーム以外のフレームは用いられない。
【0063】
これに対して、第2検出処理は、対象フレームに加え、対象フレームとは異なるフレーム、すなわち、第1検出処理の対象とされなかったフレームも用いて、不正フレームの検出を行う処理である。
【0064】
具体的な一例では、第2検出部222は、複数のECU300の間で中継されるフレームを、第2検出処理の対象とすることができる。中継ECU200は、自装置が宛先のフレーム以外にも、中継処理の対象であるフレームを受信する。例えば、ECU300CからECU300A宛てのフレームがバス400Bに送出されると、中継ECU200はバス400Bから当該フレームを受信し、バス400Aへ送出する。このような中継処理のために中継ECU200に受信されたフレームも、第2検出処理の対象とされる。したがって、第2検出処理では第1検出処理に比べて対象フレームの範囲が拡大され、網羅的に不正フレームが検出される。
【0065】
第2検出処理は、ECU300によって対象フレーム(第1の種類のフレーム)から不正フレームが検出された場合に、第1の種類とは異なる第2の種類のフレームに基づいて、対象フレームから不正フレームを検出する処理であってもよい。例えば、車速のデータを含む、CANID「300」のフレーム(第1の種類のフレーム)が対象フレームである場合、第2検出部222は、エンジン回転数のデータを含む、CANID「100」のフレーム(第2の種類のフレーム)に基づいて、CANID「300」のフレームから不正フレームを検出することができる。
【0066】
さらに具体的な一例では、第2検出処理では、対象フレームに関連するフレーム(以下、「関連フレーム」ともいう)が用いられる。例えば、第2検出部222は、対応テーブル211(
図2参照)を用いて、関連フレームを特定することができる。
【0067】
図6は、対応テーブルの一例を示す図である。対応テーブル211では、対象フレームのCANIDと、関連フレームのCANIDとの対応関係が定義されている。
【0068】
例えば、アクセル開度に応じて、エンジン回転数は変化する。すなわち、エンジン回転数に対してアクセル開度は関連する。したがって、エンジン回転数のデータを含むCANID「100」のフレームには、アクセル開度のデータを含むCANID「200」のフレームが関連する。対応テーブル211には、対象フレームのCANID「100」に対して、関連フレームのCANID「200」が対応付けられている。
【0069】
例えば、エンジン回転数、シフトポジション、及びブレーキの状態に応じて、車速は変化する。すなわち、車速に対して、エンジン回転数、シフトポジション、及びブレーキ状態は関連する。したがって、車速のデータを含むCANID「300」のフレームには、エンジン回転数のデータを含むCANID「100」のフレーム、シフトポジションのデータを含むCANID「400」のフレーム、及びブレーキ状態のデータを含むCANID「500」のフレームが関連する。対応テーブル211には、対象フレームのCANID「300」に対して、関連フレームのCANID「100」、「400」及び「500」が対応付けられている。
【0070】
例えば、ドライバ等の乗員が車両を乗り降りする場合、シートベルトは外されており、乗員が車両に乗った後に、シートベルトが装着される。すなわち、ドアの開閉状態に対してシートベルトの着脱状態は関連する。したがって、ドアの開閉状態のデータを含むCANID「600」のフレームには、シートベルトの着脱状態のデータを含むCANID「700」のフレームが関連する。対応テーブル211には、対象フレームのCANID「600」に対して、関連フレームのCANID「700」が対応付けられている。
【0071】
図4に戻り、ECU300の第1送信部322から送信された検出開始要求を受信部221が受信した場合、第2検出部222は、不正フレームが検出された第1検出処理における対象フレームのCANIDに基づいて、対応テーブル211から関連フレームのCANIDを決定することができる。
【0072】
第2検出処理は、対象フレーム(第1の種類のフレーム)の送信タイミングと、関連フレーム(第2の種類のフレーム)の送信タイミングとに基づいて、対象フレームから不正フレームを検出する処理であってもよい。この場合において、簡易的な第1検出処理は、対象フレームの送信タイミングのみに基づいて、対象フレームから不正フレームを検出する処理であってもよい。
【0073】
図7は、第1検出処理の一例を説明するための図である。
図7の例は、CANフレームの周期性に着目した処理である。CANでは、同一のCANIDのフレームは一定の周期で送信される。
図7の例では、CANID「100」のフレーム(図において「100」と記載された四角形のマークで示す)が周期T1で繰り返し送信されている。CANID「100」の不正フレーム(図においてハッチングが付された四角形のマークで示す)が挿入されると、正規のフレームと不正フレームとの間の間隔TE1は、周期T1とは異なる。第1検出部321は、第1検出処理において、CANID「100」のフレームの送信タイミングが周期T1から逸脱している場合、不正フレームを検出する。
【0074】
図8は、第2検出処理の一例を説明するための図である。
図8の例は、CANフレームの周期性に着目した処理である。
図8の例において、CANID「100」のフレームの送信周期と、CANID「200」のフレーム(図において「200」と記載された四角形のマークで示す)の送信周期とは同一である。この場合、CANID「100」のフレームと、CANID「200」のフレームとの間隔T12は一定値となる。CANID「100」の不正フレームが挿入されると、CANID「200」の正規のフレームと不正フレームとの間の間隔TE12は、間隔T12とは異なる。第2検出部222は、第2検出処理において、CANID「100」のフレームとCANID「200」のフレームとの間隔が一定の間隔TE12から逸脱している場合、不正フレームを検出する。
【0075】
第2検出処理は、第1の種類のフレームと、第2の種類のフレームとのそれぞれを対象フレームとし、対象フレームの単位時間当たりの送信数に基づいて、不正フレームを検出する処理であってもよい。この場合において、簡易的な第1検出処理は、第1の種類のフレームのみを対象フレームとし、対象フレームの単位時間当たりの送信数に基づいて、不正フレームを検出する処理であってもよい。
【0076】
図9は、第1検出処理の他の例を説明するための図である。
図9の例は、バスにおける負荷(フレーム送信数)に着目した処理である。CANでは、非周期的にフレームが送信される場合もある。例えば、特定のイベントの発生をトリガーとしてフレームが送信されるイベントドリブン型のフレーム送信がある。例えば、正規のイベントドリブン型のフレームの単位時間当たりの送信数の上限値が把握されている場合、この上限値を用いて不正フレームの検出を行うことができる。
図9の例において、CANID「100」のイベントドリブン型のフレームの単位時間T2における送信数の上限値は「4」であり、上限値「4」を基準値とする。CANID「100」の1又は複数の不正フレームが挿入されると、不正フレームを含めたCANID「100」のフレームの単位時間T2当たりの送信数は基準値を超える。第1検出部321は、第1検出処理において、CANID「100」のフレームの単位時間当たりの送信数が基準値を超える場合、不正フレームを検出する。
【0077】
図10は、第2検出処理の一例を説明するための図である。
図10の例は、バスにおける負荷(フレーム送信数)に着目した処理である。
図10の例において、CANID「100」のイベントドリブン型のフレームと、CANID「200」のイベントドリブン型のフレームとの単位時間T2当たりの送信数の上限値は「6」であり、上限値「6」を基準値とする。CANID「100」の不正フレームが挿入されると、不正フレームを含めたCANID「100」及び「200」のフレームの単位時間T2当たりの送信数は基準値を超える。第2検出部222は、第2検出処理において、CANID「100」及び「200」のフレームの単位時間当たりの送信数が基準値を超える場合、不正フレームを検出する。
【0078】
図4に戻り、第2検出処理は、対象フレーム(第1の種類のフレーム)に含まれる第1データ値と、関連フレーム(第2の種類のフレーム)に含まれる第2データ値から推定される推定値とを比較することにより、不正フレームを検出する処理であってもよい。この場合において、簡易的な第1検出処理は、対象フレームに含まれる第1データ値(今回値)と、前回の対象フレームに含まれる第1データ値(前回値)から推定される推定値とを比較することにより、不正フレームを検出する処理であってもよい。
【0079】
例えば、第1検出部321は、エンジン回転数のデータ値を含むCANID「100」のフレームを対象フレームとする場合、エンジン回転数の前回値から、今回値を推定する。具体的な一例では、エンジン回転数の前々回値と前回値との差分値を前回値に加算することで、今回値の推定値を算出することができる。第1検出部321は、第1検出処理において、エンジン回転数の今回値と推定値との差分が許容範囲を超える場合、不正フレームを検出する。
【0080】
例えば、第2検出部222は、エンジン回転数のデータ値を含むCANID「100」のフレームを対象フレームとする場合、アクセル開度のデータ値を含むCANID「200」のフレームを関連フレームとし、アクセル開度のデータ値からエンジン回転数を推定する。具体的な一例では、エンジン回転数とアクセル開度との予め定められた対応関係に基づいて、アクセル開度からエンジン回転数を推定することができる。第2検出部222は、第2検出処理において、エンジン回転数のデータ値と推定値との差分が許容範囲を超える場合、不正フレームを検出する。
【0081】
第2送信部223は、第2検出部によって不正フレームが検出された場合に、不正フレームの検出を通知する通知画面を表示するための表示情報をUI装置370へ送信する。
【0082】
図11は、通知画面の一例を示す図である。UI装置370は、表示情報を受信すると、通知画面600を表示する。
図11に示される通知画面600は、「不正な信号を検出しました。」の文字情報を含む。この文字情報によって、ドライバに不正なフレーム(信号)が検出されたことを通知することができる。
【0083】
第2送信部223は、第2検出部によって不正フレームが検出された場合に、不正フレームの検出結果をサーバ500へ送信してもよい。サーバ500は、受信した不正フレームの検出結果を記憶し、ディーラー(に設置された管理装置又はディーラーの作業者の携帯端末)へ不正フレームが検知されたことを通知する。例えば、ディーラーの作業者は、不正フレームの検出結果を確認し、ドライバへメンテナンスが必要であることを知らせることができる。これにより、車両がディーラーにおいてメンテナンスされる場合、作業車は、不正ECUを除去する等必要な措置を講じた後、中継ECU200を初期化することができる。
図5を参照し、中継ECU200が初期化されると、第2検出部222は、第2検出処理の実行状態から停止状態へと移行する。
【0084】
[5.車載システムの動作]
以下、本実施形態に係る車載システムの動作を説明する。
図12は、本実施形態に係る車載システムの動作の一例を示すシーケンス図である。
【0085】
各ECU300は、第1検出処理を実行する。この時点では、中継ECU200は、第2検出処理を停止している(停止状態)。
図12の例では、ECU300Aが不正フレームを検出する(ステップS1)。ECU300Aのプロセッサ301は、検出開始要求を中継ECU200へ送信する(ステップS2)。
【0086】
中継ECU200が検出開始要求を受信すると、プロセッサ201は、第2検出処理を開始する(ステップS3)。これにより、プロセッサ201は、第2検出処理の停止状態から実行状態へ移行する。
【0087】
プロセッサ201は、第2検出処理により不正フレームを検出すると(ステップS4)、表示情報をUI装置370へ送信する(ステップS5)。UI装置370は表示情報を受信すると、通知画面600を表示する(ステップS6)。これにより、ドライバに不正フレームの検出を通知することができる。
【0088】
プロセッサ201は、不正フレームの検出結果をサーバ500へ送信する(ステップS7)。サーバ500は、不正フレームの検出結果を受信すると、受信した検出結果を記憶する。さらに、サーバ500は、ディーラーへ不正フレームの検出を通知する。これにより、ディーラーの作業員がドライバへ連絡し、メンテナンスが必要であることをドライバに通知することができる。
【0089】
車両のメンテナンス作業において、不正ECUが除去され、中継ECU200が初期化される。これにより、中継ECU200の第2検出処理が停止状態に戻る。
【0090】
[6.付記]
(付記1)
複数の車載装置が接続された車載ネットワークにおいて、前記複数の車載装置の間でフレームを中継する中継装置に不正フレームを検出させるためのコンピュータプログラムであって、
コンピュータに、
前記車載装置において不正フレームが検出された場合に、不正フレームの検出の開始要求を前記車載装置から受信するステップと、
前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理が停止されている停止状態において、前記開始要求が受信された場合に、前記停止状態から、前記検出処理が実行される実行状態に移行するステップと、
を実行させるための、
コンピュータプログラム。
【0091】
(付記2)
車載ネットワークに接続された車載装置を制御するためのコンピュータプログラムであって、
コンピュータに、
前記車載ネットワークを伝送されるフレームを受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより前記不正フレームを検出するステップと、
前記不正フレームが検出された場合に、前記車載ネットワークにおいて複数の車載装置の間でフレームを中継する中継装置へ、不正フレームの検出の開始要求を送信するステップと、
を実行させるための、
コンピュータプログラム。
【0092】
(付記3)
車載ネットワークに接続された車載装置を制御するための制御方法であって、
前記車載ネットワークを伝送されるフレームを受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより前記不正フレームを検出するステップと、
前記不正フレームが検出された場合に、前記車載ネットワークにおいて複数の車載装置の間でフレームを中継する中継装置へ、不正フレームの検出の開始要求を送信するステップと、
を含む、
制御方法。
【0093】
(付記4)
車載ネットワークに接続された複数の車載装置と、
前記車載ネットワークにおいて前記複数の車載装置の間でフレームを中継する中継装置と、
を備え、
前記車載装置は、
前記車載ネットワークを伝送されるフレームを受信した場合に、受信したフレームが不正フレームであるか否かを判定することにより前記不正フレームを検出する第1検出部と、
前記第1検出部によって前記不正フレームが検出された場合に、前記中継装置へ、不正フレームの検出の開始要求を送信する第1送信部と、
を含み、
前記中継装置は、
前記開始要求を前記車載装置から受信する受信部と、
前記車載ネットワークを伝送されるフレームから不正フレームを検出する検出処理を実行することが可能な第2検出部と、
を含み、
前記第2検出部は、前記検出処理を停止している停止状態において、前記受信部によって前記開始要求が受信された場合に、前記停止状態から、前記検出処理を実行する実行状態に移行する、
車載システム。
【0094】
[7.補記]
今回開示された実施の形態はすべての点で例示であって、制限的ではない。本発明の権利範囲は、上述の実施形態ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味及びその範囲内でのすべての変更が含まれる。
【符号の説明】
【0095】
100 車載システム
200 中継ECU(中継装置)
201 プロセッサ
202 不揮発性メモリ
203 揮発性メモリ
204A,204B,204C 通信インタフェース(通信I/F)
210 不正フレーム検出プログラム
211 対応テーブル
221 受信部
222 第2検出部
223 第2送信部
300,300A,300B,300C,300D,300E ECU(車載装置)
301 プロセッサ
302 不揮発性メモリ
303 揮発性メモリ
304 通信インタフェース(通信I/F)
310 不正フレーム検出プログラム
321 第1検出部
322 第1送信部
350 外部通信装置
370 ユーザインタフェース装置(UI装置)
400,400A,400B,400C 通信バス(通信線)
500 サーバ
600 通知画面
T1 周期
TE1,T12,TE12 間隔
T2 単位時間