IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社オートネットワーク技術研究所の特許一覧 ▶ 住友電装株式会社の特許一覧 ▶ 住友電気工業株式会社の特許一覧

特許7420285車載装置、不正検知方法及びコンピュータプログラム
<>
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図1
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図2
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図3
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図4
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図5
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図6
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図7
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図8
  • 特許-車載装置、不正検知方法及びコンピュータプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-15
(45)【発行日】2024-01-23
(54)【発明の名称】車載装置、不正検知方法及びコンピュータプログラム
(51)【国際特許分類】
   H04L 12/28 20060101AFI20240116BHJP
   H04L 12/66 20060101ALI20240116BHJP
   H04L 12/22 20060101ALI20240116BHJP
   H04L 43/16 20220101ALI20240116BHJP
【FI】
H04L12/28 100A
H04L12/66
H04L12/22
H04L43/16
【請求項の数】 12
(21)【出願番号】P 2022568164
(86)(22)【出願日】2021-11-24
(86)【国際出願番号】 JP2021042939
(87)【国際公開番号】W WO2022124069
(87)【国際公開日】2022-06-16
【審査請求日】2023-01-30
(31)【優先権主張番号】P 2020205345
(32)【優先日】2020-12-10
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】石川 史也
【審査官】和平 悠希
(56)【参考文献】
【文献】特開2017-112590(JP,A)
【文献】特開2015-065546(JP,A)
【文献】特開2017-079429(JP,A)
【文献】特開2019-047177(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
H04L 41/00-101/695
(57)【特許請求の範囲】
【請求項1】
車両に搭載され、車載ネットワークに伝送されるメッセージの不正を検知する車載装置であって、
前記メッセージの不正の検知に関する処理を制御する制御部を備え、
前記制御部は、
取得した前記メッセージに含まれる複数のシグナルに対する不正を仮検知し、
不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、
前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する
車載装置。
【請求項2】
前記対象シグナル以外のシグナルそれぞれが前記フェール値か否かを判定し、前記対象シグナル以外のシグナルのうち前記フェール値であるものの数が第1所定値未満である場合、前記対象シグナルを正常として検知する
請求項1に記載の車載装置。
【請求項3】
前記対象シグナル以外のシグナルそれぞれが前記フェール値か否かを判定し、前記対象シグナル以外のシグナルのうち前記フェール値であるものの数が、前記対象シグナル以外のシグナルの総数の半数未満である場合、前記対象シグナルを正常として検知する
請求項1又は請求項2に記載の車載装置。
【請求項4】
前記複数のシグナルの不正を仮検知することにより、前記複数のシグナルのうち仮検知結果が正常であるものの数が第2所定値以上である場合、前記対象シグナルを正常として検知する
請求項1から請求項3のいずれか1項に記載の車載装置。
【請求項5】
前記複数のシグナルの不正を仮検知することにより、前記複数のシグナルのうち前記対象シグナル以外のシグナルの全てを正常とする仮検知結果を取得した場合、前記対象シグナルを正常として検知する
請求項1から請求項4のいずれか1項に記載の車載装置。
【請求項6】
前記車載ネットワークには複数の通信線が設けられており、
前記複数の通信線のうちいずれか一つの通信線を介して送信される前記メッセージにおける前記対象シグナルが前記フェール値である場合、前記いずれか一つの通信線を介して送信される他のメッセージにおけるシグナルに基づき、前記メッセージにおける前記対象シグナルの不正を検知する
請求項1から請求項5のいずれか1項に記載の車載装置。
【請求項7】
前記フェール値は、所定のフェールセーフ処理を実行するための値である
請求項1から請求項6のいずれか1項に記載の車載装置。
【請求項8】
前記メッセージは、CAN(Controller Area Network )プロトコルによるものである
請求項1から請求項7のいずれか1項に記載の車載装置。
【請求項9】
シグナルの種類毎にフェール値を記憶したテーブルを参照して前記対象シグナルが前記フェール値か否かを判定する
請求項1から請求項8のいずれか1項に記載の車載装置。
【請求項10】
前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルであって、前記対象シグナルとの相関関係に基づき選択されるシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する
請求項1から請求項9のいずれか1項に記載の車載装置。
【請求項11】
取得した車載ネットワークに伝送されるメッセージに含まれる複数のシグナルに対する不正を仮検知し、
不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、
前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する
不正検知方法。
【請求項12】
取得した車載ネットワークに伝送されるメッセージに含まれる複数のシグナルに対する不正を仮検知し、
不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、
前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する
処理をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載装置、不正検知方法及びコンピュータプログラムに関する。
本出願は、2020年12月10日出願の日本出願第2020-205345号に基づく優先権を主張し、前記日本出願に記載された全ての記載内容を援用するものである。
【背景技術】
【0002】
車両には、車載機器を制御するための複数の車載ECU(Electronic Control Unit )が搭載されている。これら車載ECU間は、車載ネットワークにより通信接続され、車載装置を介して相互にデータの送受信を行う。
【0003】
車載ネットワークにおいては、車外の通信装置と通信する機能を有する車載ECU等を介して、攻撃者が、不正なデータを車載ネットワークに送信して、車両を不正にコントロールする脅威が存在する。このため、車載ネットワークにおける不正を検知するための不正検知方法が提案されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2020-102886号公報
【発明の概要】
【0005】
本開示の一態様に係る車載装置は、車両に搭載され、車載ネットワークに伝送されるメッセージの不正を検知する車載装置であって、前記メッセージの不正の検知に関する処理を制御する制御部を備え、前記制御部は、取得した前記メッセージに含まれる複数のシグナルに対する不正を仮検知し、不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する車載装置。
【図面の簡単な説明】
【0006】
図1】第1実施形態における車載システムの構成を示す模式図である。
図2】第1実施形態に係る車載装置等の構成を示すブロック図である。
図3】メッセージのデータフレームの一態様を例示する説明図である。
図4】フェール値DBのレコードレイアウトを例示する説明図である。
図5】メッセージに含まれるシグナルの変化を説明する説明図である。
図6】第1検知結果及び第2検知結果を示す概念図である。
図7】第1実施形態における車載装置が実行する検知処理の手順を示すフローチャートである。
図8】第2実施形態における第1検知結果及び第2検知結果を示す概念図である。
図9】第2実施形態における車載装置が実行する検知処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0007】
[本開示が解決しようとする課題]
従来の方法では、不正検知の精度において改善の余地が見込まれる。
【0008】
本開示の目的は、車載ネットワークにおける不正検知の精度を向上させることができる車載装置等を提供することである。
【0009】
[本開示の効果]
本開示の一態様によれば、車載ネットワークにおける不正検知の精度を向上させることができる。
【0010】
[本開示の実施形態の説明]
最初に本開示の実施態様を列挙して説明する。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0011】
(1)本開示の一態様に係る車載装置は、車両に搭載され、車載ネットワークに伝送されるメッセージの不正を検知する車載装置であって、前記メッセージの不正の検知に関する処理を制御する制御部を備え、前記制御部は、取得した前記メッセージに含まれる複数のシグナルに対する不正を仮検知し、不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する。
【0012】
本態様にあっては、車載装置は、車載ネットワークを介して取得した複数のシグナルを含むメッセージに対し、不正を仮検知するための仮検知処理(第1検知処理)を実行する。車載装置は、仮検知処理により不正が仮検知された場合において、複数のシグナルのうち検知対象である対象シグナルにフェール値が含まれるときは、当該対象シグナルに対して更なる検知処理(第2検知処理)を実行する。更なる検知処理は、仮検知処理とは異なる検知手法によるものであり、例えば仮検知処理に対する本検知処理に相当する。車載ネットワークに伝送されるメッセージのシグナルについて、2種類の検知処理を実行することにより、誤検知や不正値の見逃しを防止し、検知精度を向上することができる。また、第2検知処理は、対象シグナル以外のシグナル(周囲シグナル)の情報に基づき行われる。従って、対象シグナルの周囲におけるシグナルの状態に基づき、対象シグナルの不正を適正に検知することができる。例えば、車外からのウィルスによる攻撃ケースとして想定される、周囲シグナルを含むデータの書き換えに対しても、精度よく不正を検知することができる。
【0013】
(2)本開示の一態様に係る車載装置は、前記対象シグナル以外のシグナルそれぞれが前記フェール値か否かを判定し、前記対象シグナル以外のシグナルのうち前記フェール値であるものの数が第1所定値未満である場合、前記対象シグナルを正常として検知する。
【0014】
本態様にあっては、周囲シグナルのうちフェール値であるものの数に基づき、対象シグナルの不正が判定される。車載装置は、複数の周囲シグナルそれぞれがフェール値か否かの判定結果に基づき、対象シグナルがフェール値である場合において、フェール値である周囲シグナルの数が閾値未満であるときには、対象シグナルのフェール値を正常として検知する。周囲シグナルの状態を判定材料に用いて総合的に評価することで、対象シグナル単体の場合よりも精度よく不正を検知することができる。
【0015】
(3)本開示の一態様に係る車載装置は、前記対象シグナル以外のシグナルそれぞれが前記フェール値か否かを判定し、前記対象シグナル以外のシグナルのうち前記フェール値であるものの数が、前記対象シグナル以外のシグナルの総数の半数未満である場合、前記対象シグナルを正常として検知する。
【0016】
本態様にあっては、車載装置は、複数の周囲シグナルそれぞれがフェール値か否かの判定結果に基づき、対象シグナルがフェール値である場合において、複数の周囲シグナルのうちのフェール値である周囲シグナルの数が半数未満であるときには、対象シグナルのフェール値を正常として検知する。通常、メッセージに含まれる半数以上のシグナルがフェール値であることは少ない。従って、すなわちフェール値の割合が高い場合には対象シグナルを不正とすることで、フェール値を偽装した不正なメッセージを精度よく検知することができる。
【0017】
(4)本開示の一態様に係る車載装置は、前記複数のシグナルのうち仮検知結果が正常であるものの数が第2所定値以上である場合、前記対象シグナルを正常として検知する。
【0018】
本態様にあっては、周囲シグナルにおける仮検知結果(第1検知結果)に基づき、対象シグナルの不正が判定される。車載装置は、複数の周囲シグナルそれぞれに対する仮検知結果に基づき、対象シグナルがフェール値である場合において、複数の周囲シグナルのうちの仮検知結果が正常であるものの数が閾値以上であるときには、対象シグナルのフェール値を正常として検知する。周囲シグナルの仮検知結果を判定材料に用いて総合的に評価することで、対象シグナル単体の場合よりも検知精度を向上することができる。
【0019】
(5)本開示の一態様に係る車載装置は、前記複数のシグナルの不正を仮検知することにより、前記複数のシグナルのうち前記対象シグナル以外のシグナルの全てを正常とする仮検知結果を取得したときに、前記対象シグナルを正常として検知する。
【0020】
本態様にあっては、車載装置は、複数の周囲シグナルそれぞれに対する仮検知結果に基づき、対象シグナルがフェール値である場合において、複数の周囲シグナルの仮検知結果が全て正常であるときには、対象シグナルのフェール値を正常として検知する。周囲シグナル全ての仮検知結果が正常な場合にのみ、当該仮検知結果を採用することで、周囲シグナルによる誤った仮検知結果を採用することを防止することができる。
【0021】
(6)本開示の一態様に係る車載装置は、前記車載ネットワークには複数の通信線が設けられており、前記複数の通信線のうちいずれか一つの通信線を介して送信される前記メッセージにおける前記対象シグナルが前記フェール値である場合、前記いずれか一つの通信線を介して送信される他のメッセージにおけるシグナルに基づき、前記メッセージにおける前記対象シグナルの不正を検知する。
【0022】
本態様にあっては、車載ネットワークにおける通信線(バス)単位で検知処理を実行することができる。従って、バス単位での攻撃に対しても精度よく不正を検知することができる。
【0023】
(7)本開示の一態様に係る車載装置において、前記フェール値は、所定のフェールセーフ処理を実行するための値である。
【0024】
本態様にあっては、対象シグナルが所定のフェールセーフ処理を実行するための値である場合に、第2検知処理が実行される。所定のフェールセーフ処理を実行するための値は、通常時に用いられる値とは異なる値であることが多く、不正なシグナルと判定されるおそれが高い。このようなフェール値を含む場合に第2検知処理を行うことで、正規のフェール値を不正と判定する誤検知を低減し、フェールセーフ処理を適切に実行させることができる。
【0025】
(8)本開示の一態様に係る車載装置において、前記メッセージは、CAN(Controller Area Network )プロトコルによるものである。
【0026】
本態様にあっては、従来の車載ネットワークにおける通信に広く採用されているCANプロトコルによるメッセージに対し、本検知処理を適用して、精度よく不正を検知することができる。
【0027】
(9)本開示の一態様に係る不正検知方法は、取得した車載ネットワークに伝送されるメッセージに含まれる複数のシグナルに対する不正を仮検知し、不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する。
【0028】
本態様にあっては、車載ネットワークにおける不正検知の精度を向上させることができる。
【0029】
(10)本開示の一態様に係るコンピュータプログラムは、取得した車載ネットワークに伝送されるメッセージに含まれる複数のシグナルに対する不正を仮検知し、不正と仮検知されたシグナルを含む前記複数のシグナルのうち対象シグナルがフェール値か否かを判定し、前記対象シグナルが前記フェール値である場合、前記メッセージに含まれる前記複数のシグナルのうち前記対象シグナル以外のシグナルに基づき、前記メッセージに含まれる前記対象シグナルに対する不正を検知する処理をコンピュータに実行させる。
【0030】
本態様にあっては、車載ネットワークにおける不正検知の精度を向上させることができる。
【0031】
[本開示の実施形態の詳細]
本開示をその実施の形態を示す図面に基づいて具体的に説明する。なお、本開示はこれらの例示に限定されるものではなく、請求の範囲によって示され、請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0032】
(第1実施形態)
図1は、第1実施形態における車載システムSの構成を示す模式図である。車載システムSは、車両1に搭載された車載装置2と、複数の車載ECU(Electronic Control Unit 、以下単にECUと称する)とを含む。車載装置2には、複数の通信線41~43が接続されている。車載装置2は、所定の通信プロトコルに対応した通信線41~43を介して各ECU3と通信可能に接続されている。車載装置2は、これら複数のECU3間において送受信されるメッセージを中継すると共に、不正なメッセージを検知する。
【0033】
通信線41~43は、例えば、制御系、安全系及びボディ系等の系統毎に設けられている。これら複数の通信線41~43により、車載ネットワーク40が構成されている。以下の説明において、通信線41~43を区別して説明する必要がない場合には、単に通信線4とも記載する。
【0034】
車両1には、車載装置2、車外通信装置6及び種々の車載機器を制御するための複数のECU3が搭載されている。各ECU3は、自ECU3の機能(例えば制御系、安全系及びボディ系等)に応じて、系統別に車両1に配された複数の通信線41~43のうちいずれか1つに接続されている。各ECU3は、接続された通信線41~43を介してデータ(メッセージ)の送受信を行う。図示の例においては、制御系の通信線41及び安全系の通信線43に3つのECU3が接続され、ボディ系の通信線42に2つのECU32が接続されている。
【0035】
ECU3は、例えば複数のセンサ5と接続されており、当該センサ5から出力された出力値を含むデータを、通信線41~43を介して出力する。通信線41~43はそれぞれ、車載装置2に接続されている。車載装置2は、複数の通信線41~43間の通信を中継する。これにより、各ECU3は、通信線41~43及び車載装置2を介して、他のECU3及び車載装置2との間で相互にデータの送受信を行うことができる。ECU3は、例えばエンジン又はブレーキ等のアクチュエータと接続されていてもよい。
【0036】
車載装置2は、当該車載装置2に接続される複数の通信線4による系統のセグメントを統括し、これらセグメント間でのECU3同士の通信を中継する。車載装置2は、例えばゲートウェイ又はイーサスイッチである。複数の通信線41~43それぞれは、各セグメントにおけるバスに相当する。車載装置2は、例えば車両1全体をコントロールするボディECU3、自動運転を制御する自動運転ECU3、ビークルコンピュータで構成される統合ECU等の一機能部として構成されるものであってもよい。
【0037】
第1実施形態において、車載ネットワーク40及び通信線4を介して送受信されるメッセージは、CAN(Controller Area Network /登録商標)の通信プロトコルに準拠したものであるとする。なお、通信プロトコルはCANに限定されるものではなく、例えばイーサネット(Ethernet/登録商標)、LIN(Local Interconnect Network)等であってもよい。
【0038】
また、第1実施形態に係る車載システムSでは、車載装置2は、例えばシリアルケーブル等のハーネスを介して車外通信装置6に通信可能に接続されている。車外通信装置6は、例えば3G、LTE、4G、5G、WiFi等の移動体通信のプロトコルを用いて無線通信をするための通信装置である。車外通信装置6は、当該車外通信装置6に設けられたアンテナを介して外部サーバ7とデータの送受信を行う。車載装置2は、車外通信装置6を介して車両1の外部に設置された外部サーバ7との通信を行うことができる。なお、車外通信装置6は、車載装置2の一構成部位として車載装置2に内蔵されるものであってもよい。
【0039】
外部サーバ7は、例えばインターネット又は公衆回線網等の車外ネットワークNに接続されているサーバ等のコンピュータである。外部サーバ7は、例えば、車両1に搭載されるECU3にて実行されるプログラム及びデータを管理及び記憶している。車載装置2は、外部サーバ7から無線通信により送信されたプログラム及びデータを取得し、対象となるECU3が接続されている通信線4を介して対象となるECU3へ取得したプログラム及びデータを送信する。
【0040】
図2は、第1実施形態に係る車載装置2等の構成を示すブロック図である。車載装置2は、制御部20、記憶部21、入出力I/F22及び車内通信部23等を備える。
【0041】
制御部20は、CPU(Central Processing Unit )又はMPU(Micro Processing Unit )等を備える。制御部20は、内蔵するROM(Read Only Memory)及びRAM(Random Access Memory)等のメモリを用い、各構成部を制御して種々の制御処理及び演算処理等を行う。制御部20は、ROM又は記憶部21に記憶されたプログラム21Pを読み出して実行することにより、通信における不正検知に関する処理を実行する本開示の車載装置として機能させる。
【0042】
記憶部21は、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の不揮発性メモリを備える。記憶部21は、制御部20により実行されるプログラム21Pを含むプログラム及びプログラムの実行に必要なデータ等を記憶する。記憶部21に記憶されるプログラム21Pは、記録媒体21Mにコンピュータ読み取り可能に記録されている態様であってもよい。記憶部21は、図示しない読出装置によって記録媒体21Mから読み出されたプログラム21Pを記憶する。また、図示しない通信網に接続されている図示しない外部コンピュータからプログラム21Pをダウンロードし、記憶部21に記憶させたものであってもよい。
【0043】
また記憶部21は、不正の検知処理を実行するためのフェール値を格納するフェール値DB(Data Base :データベース)211を記憶する。フェール値DB211については、後述する。記憶部21は、ECU3間の通信、又はECU3と外部サーバ7との間の通信のための中継処理を行うにあたり用いられる中継経路情報(ルーティングテーブル)を記憶するものであってもよい。
【0044】
入出力I/F22は、例えばシリアル通信を行うための通信インタフェースを備える。入出力I/F22は、車外通信装置6及び表示装置8と通信可能に接続されている。表示装置8は、例えばカーナビゲーションのディスプレイ等のHMI(Human Machine Interface )装置である。表示装置8には、制御部20から入出力I/F22を介して出力されたデータ又は情報が表示される。車載装置2と表示装置8との接続形態は、入出力I/F22による接続形態に限定されない。車載装置2と表示装置8とは、車載ネットワーク40を介した接続形態であってもよい。
【0045】
車内通信部23は、車載ネットワーク40を介してECU3と通信を行うための通信インタフェースを備える。車内通信部23は、通信線4に接続されており、所定の通信プロトコルに従ってデータの送受信を行う。第1実施形態においては、車内通信部23はCANトランシーバであり、CANバスである通信線4にて伝送されるCANメッセージに対応するものである。制御部20は、車内通信部23を介して車載ネットワーク40に接続されているECU3又は他の車載装置等の車載機器と相互に通信する。
【0046】
車載装置2は、複数の車内通信部23を備える。車内通信部23それぞれに、車載ネットワーク40を構成する通信線41~43のいずれか1つが接続されている。このように車内通信部23を複数個設けることにより、車載ネットワーク40を複数個のセグメントに分け、各セグメントに自装置の機能に応じてECU3を接続するものであってよい。
【0047】
ECU3はそれぞれ、制御部30、記憶部31、車内通信部32及び入出力I/F33等を備える。制御部30は、CPU又はMPU等を備える。制御部30は、内蔵するROM及びRAM等のメモリを用い、各構成部を制御する。記憶部31は、EEPROM若しくはフラッシュメモリ等の不揮発性メモリを備える。各ECUの制御部30は、ROM又は記憶部31に記憶されたプログラムを読み出して実行することにより、当該ECU3を含む車載機器又はアクチュエータ等を制御する。車内通信部32は、車載ネットワーク40を介して車載装置2と通信を行うための通信インタフェースを備える。入出力I/F33は、例えば複数のセンサ5に接続されている。入出力I/F33は、複数のセンサ5それぞれから出力された出力値を取得し、制御部30へ出力する。制御部30は、取得した出力値を例えばデジタル変換したシグナルを含むメッセージを、車内通信部32を介して通信線4へ出力する。
【0048】
車載装置2の制御部20は、通信線4に接続されているECU3から送信されるメッセージを受信し、又はECU3に対しメッセージを送信するものであり、例えばCANコントローラとして機能する。制御部20は、受信したメッセージ内に含まれるCAN-ID等のメッセージ識別子を参照し、参照したメッセージ識別子及び記憶部21に記憶してある中継経路情報等に基づいて、送信先となるセグメントに対応する車内通信部23を特定する。制御部20は、特定した車内通信部23から当該受信したメッセージを送信することにより、メッセージを中継するCANゲートウェイとして機能する。制御部20はCANコントローラとして機能するとしたがこれに限定されない。車内通信部23がCANトランシーバ及びCANコントローラとして機能するものであってもよい。
【0049】
また制御部20は、車載ネットワーク40を介して受信したメッセージを解析することにより、不正なメッセージを検知する検知処理を実行するIDS(Intrusion Detection System)として機能する。不正なメッセージとは、例えば、車外通信装置6等を介して車外から侵入したウィルス等により異常な状態となったECU3又は不正に交換されたECU3等の不正なECU3から送信されるメッセージである。さらに、制御部20は、検知した内容に基づき、通信の遮断等の防御処理を実行するIPS(Intrusion Prevention System )として機能するものであってもよい。制御部20は、不正侵入検知防御システム(IDPS:Intrusion Detection and Prevention System )として機能するものであってもよい。制御部20は、上述のごとく、受信したメッセージが不正なメッセージであると判定した場合、当該不正なメッセージに含まれるメッセージ識別子等の情報を表示装置8に送信し、表示装置8に当該情報を表示させるものであってもよい。表示装置8に当該情報を表示させることにより、車両1の操作者に不正なメッセージを検出したことを報知することができる。
【0050】
ここで、第1実施形態において、車載ネットワーク40を介して送受信されるメッセージについて説明する。図3は、メッセージのデータフレームの一態様を例示する説明図である。第1実施形態では、上述の通りCANプロトコルによるメッセージが送受信される。CANは、ISO11898等により規定されている通信プロトコルである。送受信されるメッセージ(フレーム)のフレームタイプは、データフレーム、リモートフレーム、エラーフレーム及びオーバーロードフレームに分類される。図3おいては、これらフレームタイプにおいて、データフレームの一態様を例示する。データフレームは、SOF(Start Of Frame)、IDフィールド、RTR(Remote Transmission Request )、コントロールフィールド、データフィールド、CRC、ACK(Acknowledgement )、EOF(End Of Frame)等の各フィールドで構成される。IDフィールドには、メッセージの内容及び送信ノードを識別するためのメッセージ識別子(例えばCAN-ID)が格納される。データフィールドには、送信されるメッセージのデータ(シグナル)が格納される。その他のフィールドの詳細については省略する。
【0051】
データフィールドは、最大642ビットで構成され、8ビット毎に長さを設定できる。データフィールドには、メッセージの内容に応じて、それぞれ所定のビット数からなる複数のシグナルが含まれている。図3の例において、データフィールドには、第1シグナル、第2シグナル、…、第nシグナルの合計n個のシグナルが含まれている。データの割り当て形式については、CANプロトコルで規定されておらず、車載システムSにおいて決定することができる。データの割り当て形式は、例えば、車種、製造者(製造メーカ)等に応じて設定されてよい。データフィールドに格納されるシグナルには、例えば、車速を示す車速シグナル、エンジン回転数を示すエンジン回転数シグナル、車輪速を示す車輪速シグナル等が含まれる。
【0052】
各シグナルには、有効値及びフェール値が含まれる。有効値とは、ECU3の正常時におけるデータ通信に用いられる値である。本実施形態において、フェール値とは、車両1に異常が発生し、車両1全体又は車両1内における特定の車載機器向けに所定のフェールセーフ処理を実行する場合に用いられる値である。フェール値は、製造メーカ等の仕様に基づき、シグナルの種類毎に一意的に設定されている。フェール値には、有効値として使用されない特定値が用いられてよい。ECU3は、自装置に接続する車速、エンジン回転数、車輪速等をそれぞれ検出する複数のセンサ5からの出力値を受け付け、受け付けた出力値を通知する複数の有効値をデータフィールドに格納したメッセージを生成する。また、ECU3は、フェールセーフ処理の実行指示に応じて、フェール値をデータフィールドに格納したメッセージを生成する。なお、有効値は、センサ5からの出力値を示す値に限定されるものではない。
【0053】
正規のECU3から送信されるメッセージは、正規信号である有効値又はフェール値を含むものであり、すなわち正常なシグナルを含む正常なメッセージである。一方、不正なECU3から送信されるメッセージは、例えば有効値又はフェール値を偽装した値等の不正値(不正信号)を含むものであり、すなわち不正なシグナルを含む不正なメッセージである。
【0054】
図4は、フェール値DB211のレコードレイアウトを例示する説明図である。車載装置2の記憶部21には、シグナルの種類毎に規定されるフェール値を格納したフェール値DB211が記憶されている。フェール値DB211には、例えばシグナル名称とフェール値とが対応付けられて格納されている。シグナル名称は、データフィールドに格納されるシグナルの種類を識別するための識別情報である。識別情報は、シグナル名称に限定されず、例えばシグナルIDであってもよい。フェール値列には、識別情報にて識別されるシグナルのフェール値が格納されている。フェール値は、特定の値であるものに限定されず、所定の範囲内の値として定義されているものであってもよい。車載装置2の記憶部21は、例えば外部サーバ7と通信すること等により、予め各シグナルに対応するフェール値の情報を取得し、取得した情報をフェール値DB211に記憶する。車載装置2の制御部20は、フェール値DB211を用いて、メッセージに含まれる不正なシグナルを検知する検知処理を実行する。
【0055】
ここで、第1実施形態において車載装置2が実行する不正の検知処理について説明する。車載装置2の制御部20は、例えば、メッセージに含まれるシグナルの値及び変化量に基づき、当該シグナルが正常か否かを判定することにより、不正なメッセージを検知する。制御部20は、検知処理として、第1検知処理及び第2検知処理の2種類の検知処理を実行する。第1検知処理は、仮検知処理に相当する。図5は、メッセージに含まれるシグナルの変化を説明する説明図である。図6は、第1検知結果及び第2検知結果を示す概念図である。図5及び図6を用いて、第1検知処理及び第2検知処理の方法について具体的に説明する。
【0056】
図5中のグラフは、シグナルの時系列変化を示すグラフである。横軸は時間、縦軸はシグナル値である。シグナル値は、例えば車速シグナルを示す値である。車速を制御するECU3は、当該ECU3に接続される速度センサから周期的に車両の速度を取得し、取得した速度を通知するシグナル(有効値)を含むメッセージを、周期的に通信線4を介して送信する。図5のグラフ左側にて示す如く、ECU3の正常時において、車速を示すシグナルの値は例えば0から所定の傾きで増加し、その後所定の傾きで減少する。ECU3の正常時において、シグナルの傾き、すなわち単位時間当たりの変化量は、車速シグナルに設定されている正常範囲(例えば上限値及び下限値で規定される範囲)内に含まれる。一方で、不正なECU3から送信される不正なメッセージにおいては、シグナルが急激に変化する場合がある。すなわち、不正なメッセージにおけるシグナルの変化量は、正常な変化量とされる閾値を超える量となる場合がある。車載装置2は、このようなシグナルの不正な変化を検出することで、不正なメッセージを検知する。
【0057】
図5のグラフ右側にて示す如く、所定のフェールセーフ処理を実行する場合においては、メッセージに含まれるシグナル(フェール値)は、正常時のシグナル(有効値)とは大きく異なる値となる。この場合においても、シグナルが急激に変化する。従来のIDSによる検知手法においては、シグナルの変化量が適正であるか否かに基づき、当該シグナルの不正が検知される。このため、シグナルが有効値からフェール値に変化した場合においても、シグナルの変化量が大きいことから、フェール値を不正と検知されるおそれが有る。本実施形態では、シグナルがフェール値であるか否かを判定することにより、フェール値に起因するシグナルの変化を適正なものとして検知する。
【0058】
車載装置2の制御部20は、ECU3からメッセージを受信すると、初めに第1検知処理を行う。第1検知処理において、制御部20は、連続する同種の2つのメッセージに含まれる各シグナルの変化量に基づき、各シグナルが正常か否かを判定する。具体的には、制御部20は、過去に取得したメッセージの中から、今回のメッセージと同種のデータを含むメッセージであり、且つ時系列で連続するメッセージ(前回のメッセージ)を特定する。制御部20は、今回のメッセージのIDフィールドに格納されるメッセージ識別子及びメッセージのタイムスタンプ等に基づき前回のメッセージを特定する。制御部20は、例えば同一のメッセージ識別子を有する場合には、同種のデータを含むメッセージであると特定してよい。
【0059】
制御部20は、今回のメッセージ及び前回のメッセージに含まれる各シグナルの差分に基づき、単位時間当たりのシグナルの変化量をそれぞれ算出する。制御部20は、シグナル種類毎の変化量に係る正常範囲又は正常とされる最大の変化量(閾値)を記憶する不図示のテーブルを参照して、算出したシグナルの変化量が正常範囲内又は閾値以下であるか否かを判定することにより、各シグナルの不正を検知する第1検知結果を導出する。
【0060】
シグナルの変化量が正常範囲内である場合、制御部20は、当該シグナルは正常であるとの第1検知結果を導出する。一方、シグナルの変化量が正常範囲内でない場合、制御部20は、当該シグナルは不正であるとの第1検知結果を導出する。正常範囲内でない場合とは、シグナルの変化量が正常範囲から逸脱している、シグナルの変化量が閾値を超えている場合を含む。制御部20は、メッセージに含まれる複数のシグナルそれぞれについて、上述の処理を行う。上述の第1検知処理は、いわゆる従来のIDSの機能による不正検知処理に相当する。なお、第1検知処理の検知方法は上述の例に限定されるものではない。
【0061】
制御部20は、上述の第1検知処理において不正との第1検知結果が導出された場合、更なる検知処理を進める。具体的には、制御部20は、メッセージに含まれる対象シグナルがフェール値であるか否かを判定し、フェール値であった場合、対象シグナルの不正を検知する第2検知処理を行う。
【0062】
本実施形態において、対象シグナルとは、メッセージに含まれる複数のシグナルのうち、第2検知処理の対象となるいずれか1つのシグナルを意味する。対象シグナルは、第1検知処理により不正と検知されたシグナルのうちのいずれか1つであってよい。メッセージに含まれる複数のシグナルのうちいずれを対象シグナルとするかは、適宜設定されてよい。例えば、車両1の安全性等を鑑みて、優先度の高いシグナルを対象シグナルとしてもよく、メッセージに含まれる複数のシグナルを所定の順序に従い対象シグナルとして再帰的に処理してもよい。
【0063】
制御部20は、シグナル種類毎のフェール値を記憶するフェール値DB211を参照して、メッセージに含まれる対象シグナルがフェール値であるか否かを判定する。対象シグナルがフェール値であった場合、制御部20は、第1検知処理とは異なる判定手法により対象シグナルの不正を検知するための第2検知処理を進める。第2検知処理では、周囲シグナルの情報に基づき、対象シグナルの不正を検知する。周囲シグナルとは、同一のメッセージに含まれる複数のシグナルのうち、対象シグナル以外のシグナルを意味する。
【0064】
制御部20は、周囲シグナルそれぞれについて、対象シグナルと同様に、フェール値であるか否かを判定する。制御部20は、周囲シグナルのうちフェール値であるものの数が、当該周囲シグナルの総数の半数未満であるか否かを判定することにより、対象シグナルが正常であるか否かを判定する。周囲シグナルのうちフェール値であるものの数が半数未満である場合、対象シグナルは正常と判定され、対象シグナルを正常とする第2検知結果が導出される。周囲シグナルのうちフェール値であるものの数が半数以上である場合、対象シグナルは不正と判定され、対象シグナルを不正とする第2検知結果が導出される。
【0065】
図6を用いて、第1検知結果に基づく第2検知結果の導出方法について、検知例1及び検知例2を挙げて具体的に説明する。図6では、メッセージ(フレーム)のデータフィールドには、第1シグナルから第6シグナルまでの合計6個のシグナルが含まれ、第3シグナルとして、対象シグナルである車速シグナルが格納されている例を説明する。
【0066】
図6の上側に示す検知例1において、今回のメッセージの第3シグナルにはフェール値が含まれている。第3シグナル以外の、5個の周囲シグナルにはそれぞれ、有効値が含まれている。制御部20は、今回のメッセージ及び前回のメッセージにおける各シグナルの変化量に基づき、第1検知処理を実行する。第1検知結果として、例えば、第3シグナルは不正、周囲シグナルは全て正常との検知結果が導出されている。上述の通り、今回のメッセージに含まれるシグナルがフェール値であった場合において、時系列的に今回のメッセージに隣接する前回のメッセージに含まれるシグナルが有効値であるときには、前後のメッセージ間におけるシグナルの変化量が大きくなる。従って、第3シグナルのフェール値は、第1検知処理においては不正なシグナルであるとされる。
【0067】
制御部20は、第2検知処理を実行し、周囲シグナルのフェール値の数に基づき、第3シグナルのフェール値が不正であるか否かを判定する。検知例1において、周囲シグナルは全て有効値である。すなわち、周囲シグナルにおけるフェール値であるものの数が、周囲シグナルの総数の半数未満である。従って、第3シグナルのフェール値は、正常であるとの第2検知結果が導出される。このように、周囲のシグナルの多数が正常な有効値である場合には、対象シグナルは正常なデータであり、シグナル値の変化はフェール値に起因する適正なものであると推定されるため、対象シグナルは正常とされる。
【0068】
図6の下側に示す検知例2において、今回のメッセージにおける全てのシグナルにはフェール値が含まれている。第1検知結果として、例えば、全てのシグナルは不正との検知結果が導出されている。検知例2において、周囲シグナルは全てフェール値である。すなわち、周囲シグナルにおけるフェール値であるものの数が、周囲シグナルの総数の半数以上である。従って、第3シグナルのフェール値は、不正であるとの第2検知結果が導出される。このように、周囲のシグナルの多数がフェール値である場合には、対象シグナルであるフェール値又は対象シグナルを含む全てのシグナルのフェール値は、フェール値を偽装した不正なデータであるおそれが有ると推定されるため、対象シグナルは不正とされる。
【0069】
上述のように、車載装置2の制御部20は、同一フレームに含まれる周囲シグナルに応じて、検知対象シグナルであるフェール値に対する第1検知結果を修正する。これにより、フェール値を不正とする誤検知を防止するとともに、フェール値を偽装した不正を検知し、適切にフェールセーフ処理を実行することができる。
【0070】
上記において、制御部20は、周囲シグナルの総数の半数未満がフェール値であるときに検知対象シグナルを正常と判定するものに限定されない。例えば、制御部20は、周囲シグナルのうちフェール値であるものの数が、周囲シグナルの総数の半数以下であるときに、検知対象シグナルを正常と判定するものであってもよい。制御部20は、周囲シグナルのうちフェール値であるものの数が、所定値未満であるときに、検知対象シグナルを正常と判定するものであってもよい。
【0071】
また、第2検知処理は、対象シグナルを含むメッセージにおいて、メッセージに含まれる全ての周囲シグナルに基づき判定するものに限定されない。例えば、同一のメッセージに含まれる全てのシグナルから所定基準に従って選択された複数のシグナルを、周囲シグナルとするものであってもよい。この場合において、制御部20は、対象シグナルと各周囲シグナルとの相関関係を予め記憶しておき、相関関係の強い周囲シグナルを優先的に選択するようにしてもよい。判定対象となる周囲シグナルを適宜選択することにより、より効率的に処理を行うことができる。
【0072】
図7は、第1実施形態における車載装置2が実行する検知処理の手順を示すフローチャートである。車載装置2の制御部20は、記憶部21に記憶されたプログラム21Pに従って以下の処理を実行する。制御部20は、例えば車両1の起動状態において常時的に以下の処理を行う。
【0073】
車載装置2の制御部20は、メッセージを取得する(ステップS11)。制御部20は、いずれかのECU3から送信されたメッセージを、車内通信部23を介して受信することにより取得する。メッセージには、対象シグナルと、対象シグナル以外の周囲シグナルとの複数のシグナルが含まれている。制御部20は、取得したメッセージを記憶部21に記憶する。
【0074】
制御部20は、取得したメッセージの不正を検知する第1検知処理を実行し(ステップS12)、メッセージに含まれる各シグナルの正常又は不正を示す第1検知結果を導出する(ステップS13)。具体的には、制御部20は、時系列的に記憶部21に記憶した複数のメッセージの中から、例えばメッセージ識別子に基づき、今回取得したメッセージと同種のデータを含む前回受信したメッセージを特定する。制御部20は、今回のメッセージの各シグナルと、対応する前回のメッセージの各シグナルとの差分に基づき、シグナルの単位時間当たりの変化量をそれぞれ算出する。制御部20は、各シグナルの変化量が規定された正常範囲内であるか否かに基づき、各シグナルの正常又は不正を判定し、判定結果を第1検知結果として導出する。
【0075】
制御部20は、メッセージに含まれる複数のシグナルに対する第1検知結果に基づき、取得したメッセージに不正と検知されたシグナルが含まれるか否かを判定する(ステップS14)。不正と検知されたシグナルが含まれないと判定した場合(S14:NO)、制御部20は、第1検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。不正と検知されたシグナルが含まれると判定した場合(S14:YES)、制御部20は、ステップS15に処理を進める。なお、制御部20は、ステップS14において、取得したメッセージに不正と検知された対象シグナルが含まれるか否かを判定するのもであってもよい。すなわち、制御部20は、第1検知処理により、メッセージに含まれる対象シグナルが不正と検知された場合にのみステップS15以降の処理を実行するものであってよい。
【0076】
制御部20は、フェール値DB211を参照して、メッセージに含まれる対象シグナルがフェール値であるか否かを判定する(ステップS15)。フェール値DB211に記憶するフェール値と対象シグナルとが一致しないことにより、対象シグナルがフェール値でないと判定した場合(S15:NO)、制御部20は、第1検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。
【0077】
フェール値DB211に記憶するフェール値と対象シグナルとが一致することにより、対象シグナルがフェール値であると判定した場合(S15:YES)、制御部20は、第2検知処理を進める。制御部20は、メッセージに含まれる周囲シグナルそれぞれがフェール値であるか否かを判定することにより、フェール値である周囲シグナルの数が、周囲シグナルの総数の半数未満であるか否かを判定する(ステップS16)。なお、制御部20は、一度の判定処理により、メッセージに含まれる全てのシグナルがフェール値であるか否かの判定結果をまとめて取得するものであってよい。
【0078】
フェール値である周囲シグナルの数が半数未満であると判定した場合(S16:YES)、制御部20は、対象シグナルを正常とする第2検知結果を導出する(ステップS17)。フェール値である周囲シグナルの数が半数未満でないと判定した場合(S16:NO)、制御部20は、対象シグナルを不正とする第2検知結果を導出する(ステップS18)。制御部20は、ステップS17又はステップS18による第2検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。ステップS16からステップS18の処理は、第2検知処理に相当する。
【0079】
上述の処理において、制御部20は、再度ステップS11の処理を実行すべくループ処理を行うものであってもよい。制御部20は、再度ステップS15の処理を実行すべくループ処理を行い、同一メッセージに含まれる異なるシグナルを新たな対象シグナルとして第2検知処理を行うものであってもよい。
【0080】
上述の処理において、制御部20は、メッセージに含まれるシグナルが不正との検知結果を取得した場合、検知結果に応じて当該メッセージの中継を中止する、通信を遮断する等の防御処理を実行することが好ましい。
【0081】
本実施形態によれば、車載ネットワーク40に送信されるメッセージにフェール値が含まれる場合であっても、フェール値以外のシグナルの情報を用いることにより、精度よく不正を検知することができる。
【0082】
(第2実施形態)
第2実施形態では、第2検知処理における検知判定の詳細が第1実施形態と異なるため、以下では主に上記相違点を説明する。その他の構成については第1実施形態と同様であるので、共通する構成については同一の符号を付してその詳細な説明を省略する。
【0083】
第2実施形態における車載装置2の制御部20は、メッセージに含まれる対象シグナルがフェール値であった場合、同一のメッセージに含まれる周囲シグナルに対する第1検知結果に基づき、対象シグナルが正常であるか否かを判定する。制御部20は、周囲シグナルにおける第1検知結果が全て正常である場合、対象シグナルを正常と判定する。制御部20は、周囲シグナルにおける第1検知結果が全て正常でない場合、すなわち周囲シグナルにおける第1検知結果の少なくとも1つが不正である場合、対象シグナルを不正と判定する。
【0084】
図8は、第2実施形態における第1検知結果及び第2検知結果を示す概念図である。図8を用いて、第2実施形態における第2検知処理について、検知例3及び検知例4を挙げて具体的に説明する。図8では、メッセージのデータフィールドには、第1シグナルから第6シグナルまでの合計6個のシグナルが含まれ、第3シグナルとして、検知対象シグナルである車速シグナルが格納されている例を説明する。
【0085】
図8の上側に示す検知例3において、今回のメッセージの第3シグナルにはフェール値が含まれている。第3シグナル以外の、5個の周囲シグナルにはそれぞれ、有効値が含まれている。第1検知結果として、第3シグナルは不正、周囲シグナルは全て正常との検知結果が導出されている。
【0086】
制御部20は、第2検知処理を実行し、周囲シグナルの第1検知結果に基づき、第3シグナルのフェール値が不正であるか否かを判定する。検知例3において、周囲シグナルの第1検知結果は全て正常である。従って、第3シグナルのフェール値は、正常であるとの第2検知結果が導出される。このように、周囲のシグナルが正常である場合には、対象シグナルは正常なデータであり、シグナル値の変化はフェール値に起因する適正なものであると推定されるため、対象シグナルは正常とされる。
【0087】
図8の下側に示す検知例4において、今回のメッセージの第3シグナルにはフェール値が含まれている。第3シグナル以外の、5個の周囲シグナルにはそれぞれ、有効値が含まれている。第1検知結果として、第3シグナルは不正との検知結果が導出されている。また、周囲シグナルのうち、第2シグナルは不正であり、第1、第4、第5、第6シグナルは正常との検知結果が導出されている。この場合、周囲シグナルの第1検知結果の1つが不正であることから、制御部20は、第3シグナルのフェール値は、不正であるとの第2検知結果を導出する。このように、周囲のシグナルのいずれかが不正である場合には、対象シグナルであるフェール値も同様に不正なデータであるおそれが有ると推定されるため、対象シグナルは不正とされる。
【0088】
上記において、制御部20は、周囲シグナルの第1検知結果が全て正常であるときに検知対象シグナルを正常と判定するものに限定されない。例えば、制御部20は、周囲シグナルのうち第1検知結果が正常であるものの数が、所定値以上であるときに、検知対象シグナルを正常と判定するものであってもよい。
【0089】
図9は、第2実施形態における車載装置2が実行する検知処理の手順を示すフローチャートである。第実施形態の図7と共通する処理については同一のステップ番号を付してその詳細な説明を省略する。
【0090】
車載装置2の制御部20は、メッセージを取得する(ステップS11)。制御部20は、取得したメッセージの不正を検知する第1検知処理を実行し(ステップS12)、メッセージに含まれる各シグナルの正常又は不正を示す第1検知結果を導出する(ステップS13)。
【0091】
制御部20は、メッセージに含まれる複数のシグナルに対する第1検知結果に基づき、取得したメッセージに不正と検知されたシグナルが含まれるか否かを判定する(ステップS14)。不正と検知されたシグナルが含まれないと判定した場合(S14:NO)、制御部20は、第1検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。不正と検知されたシグナルが含まれると判定した場合(S14:YES)、制御部20は、ステップS15に処理を進める。
【0092】
制御部20は、フェール値DB211を参照して、メッセージに含まれる対象シグナルがフェール値であるか否かを判定する(ステップS15)。対象シグナルがフェール値でないと判定した場合(S15:NO)、制御部20は、第1検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。
【0093】
対象シグナルがフェール値であると判定した場合(S15:YES)、制御部20は、第2検知処理を進める。制御部20は、メッセージに含まれる周囲シグナルについて、周囲シグナルの第1検知結果が全て正常であるか否かを判定する(ステップS21)。
【0094】
周囲シグナルの第1検知結果が全て正常であると判定した場合(S21:YES)、制御部20は、対象シグナルを正常とする第2検知結果を導出する(ステップS17)。周囲シグナルの第1検知結果が全て正常でないと判定した場合(S21:NO)、制御部20は、対象シグナルを不正とする第2検知結果を導出する(ステップS18)。制御部20は、ステップS17又はステップS18による第2検知結果を当該メッセージの検知結果とし、メッセージの受信処理を終了する。ステップS16からステップS18の処理は、第2検知処理に相当する。
【0095】
本実施形態によれば、車載ネットワーク40に送信されるメッセージにフェール値が含まれる場合であっても、フェール値以外のシグナルの第1検知結果を用いることにより、精度よく不正を検知することができる。
【0096】
(第3実施形態)
第3実施形態では、対象シグナルを含む同一メッセージ以外のメッセージに基づき第2検知処理を行う点で第1実施形態と異なるため、以下では主に上記相違点を説明する。その他の構成については第1実施形態と同様であるので、共通する構成については同一の符号を付してその詳細な説明を省略する。
【0097】
第3実施形態における車載装置2の制御部20は、対象シグナルを含む同一メッセージ以外のメッセージのシグナルに基づき、対象シグナルが正常であるか否かを判定する。例えば、対象シグナルを含むメッセージが、通信線41に接続されるECU3から当該通信線41を介して車載装置2へ送信される。車載装置2の制御部20は、取得したメッセージに含まれる対象シグナルがフェール値である場合、対象シグナルを含むメッセージに加えて、通信線41を介して送信された他のメッセージのシグナルに基づき、対象シグナルが正常であるか否かを判定する。
【0098】
制御部20は、フェール値を含むメッセージを取得し、当該メッセージを取得した時刻周辺の所定期間において、当該メッセージが送信された通信線41と同一の通信線41を介して送信された他のメッセージを特定する。制御部20は、特定した他のメッセージにおけるシグナルについて、例えば、フェール値であるシグナルの数を取得する。制御部20は、取得した他のメッセージにおけるフェール値であるシグナルの数と、対象シグナルを含むメッセージにおけるフェール値である周囲シグナルの数との合計数を算出する。制御部20は、算出した合計数が、他のメッセージにおけるシグナルと、対象シグナルを含むメッセージにおける周囲シグナルとの総数の半数未満であるか否かに基づき、対象シグナルが正常であるか否かを判定する第2検知処理を実行する。なお、制御部20は、他のメッセージに含まれるシグナルの第1検知結果に基づき、対象シグナルが正常であるか否かを判定する第2検知処理を実行してもよい。
【0099】
本実施形態によれば、バス単位で不正を検知することにより、メッセージ単位で判定する場合よりも検知精度を高めることができる。
【0100】
今回開示した実施の形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。各実施例にて記載されている技術的特徴は互いに組み合わせることができ、本発明の範囲は、請求の範囲内での全ての変更及び請求の範囲と均等の範囲が含まれることが意図される。
【符号の説明】
【0101】
1 車両
2 車載装置(ゲートウェイ)
20 制御部
21 記憶部
211 フェール値DB
21P プログラム
21M 記録媒体
22 入出力I/F
23 車内通信部
3 車載ECU
30 制御部
31 記憶部
32 車内通信部
33 入出力I/F
40 車載ネットワーク
41~43(4)通信線
5 センサ
6 車外通信装置
7 外部サーバ
8 表示装置
N 車外ネットワーク
S 車載システム
図1
図2
図3
図4
図5
図6
図7
図8
図9