(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022140785
(43)【公開日】2022-09-27
(54)【発明の名称】電子制御ユニット、方法およびプログラム
(51)【国際特許分類】
H04L 12/28 20060101AFI20220915BHJP
【FI】
H04L12/28 200Z
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022125365
(22)【出願日】2022-08-05
(62)【分割の表示】P 2019537416の分割
【原出願日】2019-04-22
(31)【優先権主張番号】P 2018098855
(32)【優先日】2018-05-23
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】514136668
【氏名又は名称】パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
【氏名又は名称原語表記】Panasonic Intellectual Property Corporation of America
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】高橋 良太
(72)【発明者】
【氏名】佐々木 崇光
(57)【要約】
【課題】車載ネットワークにおける異常を容易に検知できる電子制御ユニットを提供する。
【解決手段】ECU101gは、車両の所定の制御を行う処理部115と、処理部115からメッセージを取得してネットワークへ送信し、ネットワークからメッセージを受信して処理部115へ通知する通信部111と、通信部111がネットワークから受信し処理部115へ通知したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部114と、通信部111および受信済みIDリスト保持部114を制御する制御部112と、を備え、制御部112は、通信部111がネットワークから受信したメッセージのIDが受信済みIDリストに存在しない場合に、当該IDを受信済みIDリストに追加し、通信部111が処理部115から取得したメッセージのIDが受信済みIDリストに存在する場合に、当該メッセージをネットワークへ送信しない。
【選択図】
図8
【特許請求の範囲】
【請求項1】
車両に搭載される車載ネットワークに配置される電子制御ユニットであって、
前記車載ネットワークは、前記電子制御ユニットと、複数の他の電子制御ユニットと、ネットワークから構成され、
前記電子制御ユニットは、
前記車両の所定の制御を行う処理部と、
前記処理部からメッセージを取得して当該メッセージを前記ネットワークへ送信し、前記ネットワークからメッセージを受信して当該メッセージを前記処理部へ通知する通信部と、
前記通信部が前記ネットワークから受信し前記処理部へ通知したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部と、
前記通信部および前記受信済みIDリスト保持部を制御する制御部と、を備え、
前記制御部は、
前記通信部が前記ネットワークから受信したメッセージのIDが前記受信済みIDリストに存在しない場合に、当該IDを前記受信済みIDリストに追加し、
前記通信部が前記処理部から取得したメッセージのIDが前記受信済みIDリストに存在する場合に、当該メッセージを前記ネットワークへ送信しない、
電子制御ユニット。
【請求項2】
前記制御部は、前記通信部が前記処理部から取得したメッセージのIDが前記受信済みIDリストに存在する場合に、前記処理部を前記ネットワークから隔離する、
請求項1記載の電子制御ユニット。
【請求項3】
前記制御部は、前記通信部が前記複数の他の電子制御ユニットのうちの第2電子制御ユニットから送信された異常なIDを示す異常ID情報を前記ネットワークから受信した場合に、前記受信済みIDリストから前記異常ID情報が示すIDを消去する、
請求項1または2に記載の電子制御ユニット。
【請求項4】
前記受信済みIDリスト保持部は、前記受信済みIDリストに含まれるID毎のメッセージ受信回数を記録する領域を持ち、
前記制御部は、
前記通信部が前記ネットワークからメッセージを受信したとき、当該メッセージのIDについて記録されるメッセージ受信回数を更新し、
前記車両のシャットダウン時に、前記受信済みIDリストに含まれるIDのうち、前記受信済みIDリスト保持部に記録されたメッセージ受信回数、または、当該メッセージ受信回数に基づくメッセージ受信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、
前記車両の起動時に、前記不揮発性メモリに退避させた前記IDを前記受信済みIDリストに追加する、
請求項1~3のいずれか1項に記載の電子制御ユニット。
【請求項5】
前記制御部は、前記車両の起動時に、前回の起動時から前記処理部のファームウェア情報が変更されている場合に、前記不揮発性メモリに退避させた前記IDを消去し、当該IDを前記受信済みIDリストに追加しない、
請求項4記載の電子制御ユニット。
【請求項6】
前記電子制御ユニットは、さらに、前記通信部が前記処理部から受信し前記ネットワークへ送信したメッセージのIDのリストである送信済みIDリストを保持する送信済みIDリスト保持部を備え、
前記制御部は、さらに、
前記送信済みIDリスト保持部を制御し、
前記通信部が前記処理部から取得したメッセージのIDが前記送信済みIDリストに存在しない場合に、当該IDを前記送信済みIDリストに追加し、
前記通信部が前記ネットワークから受信したメッセージのIDが前記送信済みIDリストに存在する場合、当該メッセージを前記処理部へ通知しない、
請求項1~5のいずれか1項に記載の電子制御ユニット。
【請求項7】
前記送信済みIDリスト保持部は、前記送信済みIDリストに含まれるID毎のメッセージ送信回数を記録する領域を持ち、
前記制御部は、
前記通信部が前記処理部からメッセージを取得したときに、当該メッセージのIDについて記録されるメッセージ送信回数を更新し、
前記車両のシャットダウン時に、前記送信済みIDリストに含まれるIDのうち、前記送信済みIDリスト保持部に記録されたメッセージ送信回数、または、当該メッセージ送信回数に基づくメッセージ送信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、
前記車両の起動時に、前記不揮発性メモリに退避させた前記IDを前記送信済みIDリストに追加する、
請求項6記載の電子制御ユニット。
【請求項8】
前記制御部は、前記車両の起動時に、前回の起動時から前記処理部のファームウェア情報が変更されている場合に、前記不揮発性メモリに退避させた前記IDを消去し、当該IDを前記送信済みIDリストに追加しない、
請求項7記載の電子制御ユニット。
【請求項9】
車両に搭載される車載ネットワークに配置される電子制御ユニットにより実行される方法であって、前記車載ネットワークは、前記電子制御ユニットと、複数の他の電子制御ユニットと、ネットワークから構成され、
前記電子制御ユニットは、
前記車両の所定の制御を行う処理部と、
前記処理部からメッセージを取得して当該メッセージを前記ネットワークへ送信し、前記ネットワークからメッセージを受信して当該メッセージを前記処理部へ通知する通信部と、
前記通信部が前記ネットワークから受信し前記処理部へ通知したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部と、を備え、
前記方法では、
前記通信部が前記ネットワークから受信したメッセージのIDが前記受信済みIDリストに存在しない場合に、当該IDを前記受信済みIDリストに追加し、
前記通信部が前記処理部から取得したメッセージのIDが前記受信済みIDリストに存在する場合に、当該メッセージを前記ネットワークへ送信しない、
方法。
【請求項10】
請求項9に記載の方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、車載ネットワーク等で用いられる電子制御ユニット等に関する。
【背景技術】
【0002】
電子化が進んだ自動車において、電子化が進んでいない自動車と比較すると、車載ネットワークの重要性は高くなっている。自動車には各種のシステムを制御する多数の電子制御ユニット(Electronic Control Unit、以下ECUと表記する)が搭載されている。ECUは車載ネットワークに接続され、自動車の諸機能を実現するためにこの車載ネットワークを介して通信を行う。CAN(Controller Area Network)は、このような車載ネットワークの規格のひとつで、ISO11898、ISO11519において規格化され標準的な技術として多くの国および地域で採用されている。
【0003】
CANのプロトコルに準拠するネットワークは1台の車上で閉じた通信経路として構築可能である。しかしながら、自動車には外部からのアクセスが可能なネットワークが構築され、搭載されるのが珍しくない。例えば車載ネットワークには、ネットワークを流れる情報を自動車に搭載された各システムの診断に利用する目的で取り出すためのポートが設置されたり、無線LANを提供する機能を備えるカーナビゲーションシステムが接続されたりしている。車載ネットワークへの外部からのアクセスが可能になることで自動車のユーザにとっての利便性は向上し得るが、その一方で脅威も増大する。
【0004】
例えば、2013年には、車載ネットワークの外部からの駐車支援機能等の悪用による不正な車両制御が可能であることが実証された。また、2015年には特定の車種の遠隔からの不正制御が可能であることが実証され、この実証が発端となって当該車種のリコールに発展した。
【0005】
このような外部からのアクセスによる車両の不正制御は、自動車業界にとっては看過できない問題であり、車載ネットワークのセキュリティ対策は急務な状況にある。
【0006】
車載ネットワークへの攻撃の一手法としては、車載ネットワークに接続されるECUに外部からアクセスして乗っ取り、乗っ取ったECUから攻撃のためのメッセージ(以下では不正メッセージまたは異常メッセージともいう)を車載ネットワークに向けて送信させて自動車を不正に制御するものがある。
【0007】
このような攻撃に対し、非特許文献1では、車載ネットワークに送信されたメッセージから不正メッセージを検知するIDS(Intrusion Detection System)ECUと呼ばれるノードを車載ネットワークに追加し、IDSECUが不正なメッセージのハッシュ値をネットワークに送信し、このハッシュ値を各ECUが送信したメッセージのハッシュ値と比較することで、不正なメッセージを送信する不正ECUを特定し、車載ネットワークから遮断する方法を開示している。
【0008】
また、非特許文献2では、車載ネットワークでは同一のIDを持つメッセージを複数のECUが送信しないという前提で、各ECUが自身の送信するIDを持つメッセージを受信した際に、そのメッセージを不正メッセージとして遮断する方法を開示している。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】Smart CAN cable, Another proposal of intrusion prevention system(IPS) for in-vehicle networks - LAC Co.,Ltd., Symposium on Cryptography and Information Security, 2018.
【非特許文献2】A Method of Preventing Unauthorized Data Transmission in controller area network-Yokohama National University: Vehicular Technology Conference,2012
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、非特許文献1の方法では、車載ネットワーク内にIDSECUを追加するコストおよび、不正なメッセージのハッシュ値をネットワークに送ることによる、ネットワークのトラフィック量の増大が発生する。
【0011】
また、非特許文献2の方法では、不正メッセージの遮断を行うためにCANコントローラーを改造する(例えば、各ECUが送信するメッセージのIDを予め記憶させておく)必要があり導入コストが大きい。
【0012】
そこで、本開示では上記課題を解決するために、車載ネットワークにおける異常を容易に検知できる電子制御ユニット等を提供する。
【課題を解決するための手段】
【0013】
上記課題を解決するために、本開示の一態様に係る電子制御ユニットは、車両に搭載される車載ネットワークに配置される電子制御ユニットであって、前記車載ネットワークは、前記電子制御ユニットと、複数の他の電子制御ユニットと、ネットワークから構成され、前記電子制御ユニットは、前記車両の所定の制御を行う処理部と、前記処理部からメッセージを取得して当該メッセージを前記ネットワークへ送信し、前記ネットワークからメッセージを受信して当該メッセージを前記処理部へ通知する通信部と、前記通信部が前記ネットワークから受信し前記処理部へ通知したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部と、前記通信部および前記受信済みIDリスト保持部を制御する制御部と、を備え、前記制御部は、前記通信部が前記ネットワークから受信したメッセージのIDが前記受信済みIDリストに存在しない場合に、当該IDを前記受信済みIDリストに追加し、前記通信部が前記処理部から取得したメッセージのIDが前記受信済みIDリストに存在する場合に、当該メッセージを前記ネットワークへ送信しない。
【0014】
なお、上記の包括的または具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラムまたはコンピュータ読取可能な記録ディスク等の記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。コンピュータ読み取り可能な記録媒体は、例えばCD-ROM(Compact Disc-Read Only Memory)等の不揮発性の記録媒体を含む。
【発明の効果】
【0015】
本開示によれば、車載ネットワークにおける異常を容易に検知できる。
【図面の簡単な説明】
【0016】
【
図1】
図1は、実施の形態1における、車載ネットワークの全体構成図である。
【
図2】
図2は、実施の形態1における、車載ネットワークの全体構成の変形例1を示す図である。
【
図3】
図3は、実施の形態1における、車載ネットワークの全体構成の変形例2を示す図である。
【
図4】
図4は、実施の形態1における、CANプロトコルのデータフレームフォーマットを示す図である。
【
図5】
図5は、実施の形態1における、車載ネットワークを構成するECUが送信するIDの仕様を示す図である。
【
図6】
図6は、実施の形態1における、IDSECUの構成図である。
【
図7】
図7は、実施の形態1における、異常検知装置の構成図である。
【
図8】
図8は、実施の形態1における、異常検知機能を有するECUの構成図である。
【
図9】
図9は、実施の形態1における、受信済みIDリストの一例を示す図である。
【
図10】
図10は、実施の形態1における、送信済みIDリストの一例を示す図である。
【
図11】
図11は、実施の形態1における、受信済みIDリストのアップデート処理のシーケンスを示す図である。
【
図12】
図12は、実施の形態1における、受信済みIDリストを用いた異常検知処理のシーケンスを示す図である。
【
図13】
図13は、実施の形態1における、送信済みIDリストのアップデート処理のシーケンスを示す図である。
【
図14】
図14は、実施の形態1における、送信済みIDリストを用いた異常検知処理のシーケンスを示す図である。
【
図15】
図15は、実施の形態1における、IDSECUが異常を検知した場合の処理シーケンスを示す図である。
【
図16】
図16は、実施の形態1における、異常検知装置の全体処理のフローチャートである。
【
図17】
図17は、実施の形態1における、受信済みIDリスト更新処理のフローチャートである。
【
図18】
図18は、実施の形態1における、送信済みIDリスト更新処理のフローチャートである。
【
図19】
図19は、実施の形態1における、受信済みIDリストによる異常検知処理のフローチャートである。
【
図20】
図20は、実施の形態1における、受信済みIDリストによる異常検知処理の変形例のフローチャートである。
【
図21】
図21は、実施の形態1における、送信済みIDリストによる異常検知処理のフローチャートである。
【
図22】
図22は、実施の形態1における、異常検知装置がIDSECUから異常通知を受信した場合の処理のフローチャートである。
【
図23】
図23は、実施の形態1における、異常検知装置の全体処理の変形例のフローチャートである。
【
図24】
図24は、実施の形態1における、異常検知装置の車両シャットダウン時の処理のフローチャートである。
【
図25】
図25は、実施の形態1における、低頻度受信済みIDの退避の処理のフローチャートである。
【
図26】
図26は、実施の形態1における、低頻度送信済みIDの退避の処理のフローチャートである。
【
図27】
図27は、実施の形態1における、異常検知装置の車両起動時の処理のフローチャートである。
【発明を実施するための形態】
【0017】
本開示の異常検知装置は、複数の電子制御ユニットと、ネットワークバスと、異常検知装置から構成される車載ネットワークに配置される異常検知装置であって、前記異常検知装置は、前記ネットワークバスと前記複数の電子制御ユニットのうちのいずれかの第1電子制御ユニットの間に配置され、前記第1電子制御ユニットからメッセージを受信して当該メッセージを前記ネットワークバスへ送信し、前記ネットワークバスからメッセージを受信して当該メッセージを前記第1電子制御ユニットへ送信する通信部と、前記通信部が前記ネットワークバスから受信し前記第1電子制御ユニットへ送信したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部と、前記通信部および前記受信済みIDリスト保持部を制御する制御部と、を備え、前記制御部は、前記通信部が前記ネットワークバスから受信したメッセージのIDが前記受信済みIDリストに存在しない場合に、当該IDを前記受信済みIDリストに追加し、前記通信部が前記第1電子制御ユニットから受信したメッセージのIDが前記受信済みIDリストに存在する場合に、当該メッセージを前記ネットワークバスへ送信しないことを特徴とする。
【0018】
異常検知装置は、ネットワークバスから受信したメッセージのIDを受信済みIDリストに追加していく。つまり、異常検知装置は、複数のECUのうち、自身を介してネットワークバスと接続された第1ECU以外のECUがネットワークバスへ送信したメッセージのIDを受信済みIDリストに追加していく。一般的に、車載ネットワークにおける複数のECUのそれぞれは、同じIDを含むメッセージを送信しないという仕様になっていることが多い。この仕様のもとでは、受信済みIDリストは、第1ECUが送信しないメッセージのIDのリストとなる。これに対して、異常検知装置が第1ECUから受信したメッセージ(つまり、第1ECUが送信したメッセージ)のIDが受信済みIDリストに存在する場合、本来第1ECUが送信するはずのないメッセージを第1ECUが送信していることになる。つまり、第1ECUが異常なメッセージを送信していることがわかる。したがって、このような場合に、第1ECUからのメッセージをネットワークバスに送信しないようにすることで、異常なメッセージがネットワークバスに流れることを抑制できる。このように、車載ネットワーク内にIDSECUを追加(つまり、ネットワークトラフィックおよびコストが増大)したり、各ECUが送信するメッセージのIDを予め記憶させておいたりすることなく、車載ネットワークにおける異常を容易に検知できる。また、正規メッセージがネットワークバスに流れる前に、攻撃者が不正メッセージをネットワークバスへ送信しない限り、誤検知をすることなく異常メッセージを遮断可能である。
【0019】
また例えば、前記制御部は、前記通信部が前記第1電子制御ユニットから受信したメッセージのIDが前記受信済みIDリストに存在する場合に、前記第1電子制御ユニットを前記ネットワークバスから隔離してもよい。
【0020】
この場合、第1ECUが不正なECUであるため、不正なECUをネットワークバスから隔離する(例えば、第1ECUから送信される全てのメッセージを異常検知装置において遮断してネットワークバスへ送信しないようにする)ことが可能となり、異常メッセージのみを遮断する場合と比べて、車載ネットワークに不正なECUが与える影響をより軽減できる。
【0021】
また例えば、前記制御部は、前記通信部が前記複数の電子制御ユニットのうちの前記第1電子制御ユニットとは異なる第2電子制御ユニットから送信された異常なIDを示す異常ID情報を前記ネットワークバスから受信した場合に、前記受信済みIDリストから前記異常ID情報が示すIDを消去してもよい。
【0022】
正規メッセージがネットワークバスに流れる前に、攻撃者が不正メッセージをネットワークバスへ送信する場合が考えられる。この場合、受信済みIDリストに不正メッセージに含まれるIDが追加されることになる。例えば、正規な第1ECUが送信するメッセージに含まれるIDが不正メッセージに含まれる場合、正規な第1ECUから送信される正規メッセージが不正メッセージであると判定されてしまう。つまり、以降は、正規メッセージがネットワークバスへ送信されず、攻撃者が第1ECUになりすまして不正メッセージがネットワークバスへ送信されることになる。これに対して、第2ECUとして例えばIDSECU等が車載ネットワークに配置されることで、攻撃者が送信した不正メッセージを検知することが可能となる。したがって、正規メッセージがネットワークバスに流れる前に、攻撃者が不正メッセージをネットワークバスへ送信した場合(つまり、受信済みIDリストが汚染された場合)であっても、受信済みIDリストを修正して、受信済みIDリストに追加された不正メッセージに含まれるID(つまり第1ECUが送信するメッセージに含まれるID)を受信済みIDリストから消去することで、異常検知装置が正規メッセージを不正メッセージであると誤検知することを防止することが可能である。
【0023】
また例えば、前記受信済みIDリスト保持部は、前記受信済みIDリストに含まれるID毎のメッセージ受信回数を記録する領域を持ち、前記制御部は、前記通信部が前記ネットワークバスからメッセージを受信したとき、当該メッセージのIDについて記録されるメッセージ受信回数を更新し、前記車載ネットワークを搭載した車両のシャットダウン時に、前記受信済みIDリストに含まれるIDのうち、前記受信済みIDリスト保持部に記録されたメッセージ受信回数、または、当該メッセージ受信回数に基づくメッセージ受信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、前記車両の起動時に、前記不揮発性メモリに退避させた前記IDを前記受信済みIDリストに追加してもよい。
【0024】
メッセージ受信回数またはメッセージ受信頻度が所定の値以下となっているID(低頻度で受信されるメッセージに含まれるID)は、車両が起動した後、当該IDを含むメッセージがネットワークバスを流れるまでに時間を要する場合がある。つまり、当該IDを含む正規メッセージがネットワークバスを流れるまでに、攻撃者が当該IDを含む不正メッセージをネットワークバスへ送信して、受信済みIDリストに不正メッセージに含まれるIDが追加されてしまう(言い換えると、受信済みIDリストが不正なIDで汚染されてしまう)場合がある。これに対して、車両の起動時に、不揮発性メモリに退避させた低頻度で受信されるメッセージに含まれるIDを受信済みIDリストに追加することで、低頻度で受信されるメッセージが最初にネットワークバスに流れる前に攻撃者が不正メッセージを送信することによる受信済IDリストの汚染を防ぐことが可能である。また、高頻度に受信されるメッセージの含まれるIDを不揮発性メモリに退避させないことで、その分メモリ容量を削減することが可能である。
【0025】
また例えば、前記制御部は、前記車両の起動時に、前回の起動時から前記第1電子制御ユニットのファームウェア情報が変更されている場合に、前記不揮発性メモリに退避させた前記IDを消去し、当該IDを前記受信済みIDリストに追加しなくてもよい。
【0026】
第1ECUのファームウェアアップデートに伴い第1ECUのファームウェア情報が変更された場合、第1ECUから送信されるメッセージに含まれるIDの仕様が変更されることがある。したがって、この場合に、不揮発性メモリに退避させたIDを消去し、当該IDを受信済みIDリストに追加しないようにすることで、仕様が変更されたIDが原因で発生する正常メッセージの誤遮断を防止することが可能である。
【0027】
また例えば、前記異常検知装置は、さらに、前記通信部が前記第1電子制御ユニットから受信し前記ネットワークバスへ送信したメッセージのIDのリストである送信済みIDリストを保持する送信済みIDリスト保持部を備え、前記制御部は、さらに、前記送信済みIDリスト保持部を制御し、前記通信部が前記第1電子制御ユニットから受信したメッセージのIDが前記送信済みIDリストに存在しない場合に、当該IDを前記送信済みIDリストに追加し、前記通信部が前記ネットワークバスから受信したメッセージのIDが前記送信済みIDリストに存在する場合、当該メッセージを前記第1電子制御ユニットへ送信しなくてもよい。
【0028】
異常検知装置は、第1ECUから受信したメッセージのIDを送信済みIDリストに追加していく。車載ネットワークにおける複数のECUのそれぞれは、同じIDを含むメッセージを送信しないという仕様のもとでは、送信済みIDリストは、複数のECUのうちの第1ECU以外のECU等が送信しないメッセージのIDのリストとなる。これに対して、異常検知装置がネットワークバスから受信したメッセージ(つまり、第1ECU以外のECUが送信したメッセージ)のIDが送信済みIDリストに存在する場合、本来第1ECU以外のECU等が送信するはずのないメッセージを第1ECU以外のECU等が送信していることになる。つまり、第1ECU以外のECU等が異常なメッセージを送信していることがわかる。したがって、このような場合に、第1ECU以外のECU等からのメッセージを第1ECUに送信しないようにすることで、異常なメッセージが第1ECUに送信されることを抑制できる。このように車載ネットワーク内にIDSECUを追加(つまり、ネットワークトラフィックおよびコストが増大)したり、各ECUが送信するメッセージのIDを予め記憶させておいたりすることなく、車載ネットワークにおける異常を容易に検知できる。また、正規メッセージがネットワークバスに流れる前に、攻撃者が不正メッセージをネットワークバスへ送信しない限り、誤検知をすることなく異常メッセージを検知可能である。
【0029】
また例えば、前記送信済みIDリスト保持部は、前記送信済みIDリストに含まれるID毎のメッセージ送信回数を記録する領域を持ち、前記制御部は、前記通信部が前記第1電子制御ユニットからメッセージを受信したときに、当該メッセージのIDについて記録されるメッセージ送信回数を更新し、前記車載ネットワークを搭載した車両のシャットダウン時に、前記送信済みIDリストに含まれるIDのうち、前記送信済みIDリスト保持部に記録されたメッセージ送信回数、または、当該メッセージ送信回数に基づくメッセージ送信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、前記車両の起動時に、前記不揮発性メモリに退避させた前記IDを前記送信済みIDリストに追加してもよい。
【0030】
メッセージ送信回数またはメッセージ送信頻度が所定の値以下となっているID(低頻度で第1ECUから送信されるメッセージに含まれるID)は、車両が起動した後、当該IDを含むメッセージを異常検知装置が第1ECUから受信するまでに時間を要する場合がある。つまり、当該IDを含む正規メッセージを異常検知装置が受信するまでに、攻撃者が第1ECUを攻撃して不正な第1ECUから不正メッセージを異常検知装置へ送信して、送信済みIDリストに不正メッセージに含まれるIDが追加されてしまう(言い換えると、送信済みIDリストが不正なIDで汚染されてしまう)場合がある。これに対して、車両の起動時に、不揮発性メモリに退避させた低頻度で送信されるメッセージに含まれるIDを送信済みIDリストに追加することで、低頻度で送信されるメッセージを異常検知装置が受信する前に攻撃者が不正メッセージを送信することによる送信済IDリストの汚染を防ぐことが可能である。また、高頻度に送信されるメッセージに含まれるIDを不揮発性メモリに退避させないことで、その分メモリ容量を削減することが可能である。
【0031】
また例えば、前記制御部は、前記車両の起動時に、前回の起動時から前記第1電子制御ユニットのファームウェア情報が変更されている場合に、前記不揮発性メモリに退避させた前記IDを消去し、当該IDを前記送信済みIDリストに追加しなくてもよい。
【0032】
第1ECUのファームウェアアップデートに伴い第1ECUのファームウェア情報が変更された場合、第1ECUから送信されるメッセージに含まれるIDの仕様が変更されることがある。したがって、この場合に、不揮発性メモリに退避させたIDを消去し、当該IDを送信済みIDリストに追加しないようにすることで、仕様が変更されたIDによる正常メッセージの誤遮断の防止が可能である。
【0033】
本開示の異常検知方法は、複数の電子制御ユニットと、ネットワークバスと、異常検知装置から構成される車載ネットワークに配置される異常検知装置により実行される異常検知方法であって、前記異常検知装置は、前記ネットワークバスと前記複数の電子制御ユニットのうちのいずれかの第1電子制御ユニットの間に配置され、前記第1電子制御ユニットからメッセージを受信して当該メッセージを前記ネットワークバスへ送信し、前記ネットワークバスからメッセージを受信して当該メッセージを前記第1電子制御ユニットへ送信する通信部と、前記通信部が前記ネットワークバスから受信し前記第1電子制御ユニットへ送信したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部と、を備え、前記異常検知方法では、前記通信部が前記ネットワークバスから受信したメッセージのIDが前記受信済みIDリストに存在しない場合に、当該IDを前記受信済みIDリストに追加し、前記通信部が前記第1電子制御ユニットから受信したメッセージのIDが前記受信済みIDリストに存在する場合に、当該メッセージを前記ネットワークバスへ送信しないことを特徴とする。
【0034】
これにより、車載ネットワークにおける異常を容易に検知できる異常検知方法を提供できる。
【0035】
本開示のプログラムは、上記の異常検知方法をコンピュータに実行させるプログラムである。
【0036】
これにより、車載ネットワークにおける異常を容易に検知できるプログラムを提供できる。
【0037】
以下、実施の形態に係る異常検知装置について、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。したがって、以下の実施の形態で示される数値、構成要素、構成要素の配置および接続形態、並びに、ステップ(工程)およびステップの順序等は、一例であって本開示を限定するものではない。
【0038】
また、以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。各図は模式図であり、必ずしも厳密に図示されたものではない。
【0039】
また、以下に含まれるCANおよび異常検知装置に関する説明は、本開示の理解の一助を主な趣旨とするものであり、この説明のうち請求項に含まれない事項については、本開示を限定する趣旨で記載されるものではない。
【0040】
(実施の形態1)
[1-1.車載ネットワーク構成]
図1は、車載ネットワーク100の全体構成図である。なお、
図1には、車載ネットワーク100を搭載し車両10を示している。車両10は、その内部に車載ネットワーク100を持つ。車両10は、例えば自動車である。
【0041】
車載ネットワーク100は、複数のECUと、ネットワークバスと、異常検知装置から構成される。例えば、
図1に示す例では、車載ネットワーク100は、複数のECUのそれぞれに対応するように設けられた複数の異常検知装置を備える。例えば、車載ネットワーク100は、複数のECUとして、ECU101a、101b、101c、101d、101eおよび101fとバス130(ネットワークバス)と異常検知装置110a、110b、110c、110d、110eおよび110fとから構成される。ECU101aとバス130は、異常検知装置110aを間に介して接続され、通信を行う。ECU101bとバス130は、異常検知装置110bを間に介して接続され、通信を行う。ECU101cとバス130は、異常検知装置110cを間に介して接続され、通信を行う。ECU101dとバス130は、異常検知装置110dを間に介して接続され、通信を行う。ECU101eとバス130は、異常検知装置110eを間に介して接続され、通信を行う。ECU101fとバス130は、異常検知装置110fを間に介して接続され、通信を行う。例えば、異常検知装置110aに着目すると、異常検知装置110aは、バス130と複数のECUのうちのいずれかの第1ECU(ここではECU101a)の間に配置される。ECU101aがバス130へ向けてメッセージを送信する際、および、ECU101aがバス130からメッセージが受信する際に、異常検知装置110aを介してメッセージの送受信が行われる。
【0042】
車載ネットワーク100では、例えばCAN(Controller Area Network)プロトコルに従って通信が行われる。
【0043】
車載ネットワーク100を構成するECU101a、101b、101c、101d、101eおよび101fとしては、例えば、ステアリング、ブレーキ、エンジン、ドアまたはウィンドウ等に関連したECUがあり、これらのECUは、走行制御やインストルメントパネルの制御等の車両10の各種制御を行う。
【0044】
ECUは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM(Read Only Memory)、RAM(Random Access Memory)等であり、プロセッサにより実行されるプログラムを記憶することができる。例えばプロセッサが、プログラムに従って動作することにより、ECUは各種機能を実現することになる。ECUは、例えば、CANプロトコルに従って車載ネットワークにおけるネットワークバスを介してメッセージの送受信を行う。
【0045】
各ECUは、ネットワークバスに対して、CANのプロトコルに従ったメッセージを送受信する。例えば、ネットワークバスから他のECUが送信したメッセージを受信し、また、他のECUに送信したい内容を含むメッセージを生成してバスに送信する。具体的には、各ECUは、受信したメッセージの内容に応じた処理を行い、また、ECUに接続されている機器、センサ等の状態を示すメッセージもしくは他のECUへの指示値(制御値)等のメッセージを生成して送信する。
【0046】
異常検知装置の詳細については後述する。
【0047】
[1-2.車載ネットワーク構成(変形例1)]
図2は、車載ネットワーク100の全体構成の変形例1を示す図である。
図1の車載ネットワーク100では、全てのECUに異常検知装置が接続されていたが、
図2の車載ネットワーク100は、一部のECUには異常検知装置が接続されていない場合の一例である。つまり、車載ネットワーク100における複数のECUには、異常検知装置を介さずにバス130に接続されるECUが含まれていてもよい。
【0048】
図2において、具体的にはECU101cおよび101eには異常検知装置が接続されずに直接バス130に接続されている。
図2に示すように、異常検知装置は必ずしも全てのECUに接続する必要はない。例えば、車両の安全性に大きな影響を及ぼす可能性の高い走行制御に関わるECUとバス130との間のみに異常検知装置を接続することでコストダウンを図ってもよい。
【0049】
[1-3.車載ネットワーク構成(変形例2)]
図3は、車載ネットワーク100の全体構成の変形例2を示す図であり、
図1および
図2の車載ネットワーク100に対して、異常検知機能を持ったノードが存在する。以後、異常検知機能を持ったノードをIDSECUとも表記する。
図3において、IDSECU120は、バス130を流れるメッセージの異常検知を行い、異常を検知した際はその情報を車載ネットワーク内の異常検知装置110a、110b、110d、110fに通知する。IDSECU120を、異常検知装置を介してバス130に接続されたECU(第1ECU)と区別するために、第2ECUとも呼ぶ。
【0050】
[1-4.CANメッセージのフォーマット]
図4は、CANプロトコルのデータフレームのフォーマットを示す図である。ここではCANプロトコルにおける標準IDフォーマットにおけるデータフレームを示している。データフレームは、Start Of Frame(SOF)、IDフィールド、Remote Transimission Request(RTR)、IDentifier Extension(IDE)、予約bit(r)、データレングスコード(DLC)、データフィールド、CRCシーケンス、CRCデリミタ(DEL)、Acknowledgementスロット(ACK)、ACKデリミタ(DEL)、および、エンドオブフレーム(EOF)から構成される。IDフィールドには、各ECUが送信するメッセージに固有のIDが格納される。
【0051】
[1-5.ECUの送信IDの仕様]
図5は、車載ネットワーク100を構成するECUが送信するIDの仕様を示す図である。
【0052】
本実施の形態の車載ネットワーク100では、
図5に示すように、同じIDのメッセージを複数のECUが送信しないものとする。例えば、エンジンECUが送信する「0x13」というIDを含むメッセージを、ブレーキECUまたはドア制御ECUは送信しない。同じIDのメッセージを複数のECUが送信しない、という仕様はCANを用いた通信において一般的である。異常検知装置は、この仕様を利用することで、車載ネットワーク100における異常を容易に検知することを可能としている。
【0053】
[1-6.IDSECUの構成]
図6は、IDSECU120の構成図である。IDSECU120は、CANメッセージの送受信を行う通信部121と、受信したメッセージの異常検知を行う異常検知部122を持つECUであって、複数のECUのうちの第1ECU(例えば、ECU101a、ECU101b、ECU101dおよびECU101f)とは異なる第2ECUである。
【0054】
通信部121は、バス130に流れるメッセージを受信し、また、バス130に流れるメッセージに含まれる異常なIDを示す異常ID情報をバス130へ送信する。
【0055】
異常検知部122は、通信部121が受信したバス130に流れるメッセージの異常検知を行う。例えば、IDSECU120は、異常を判定するための判定ルールを保持しており、異常検知部122は、バス130から受信するメッセージを判定ルールに照らし合わせることで、メッセージの異常検知を行う。具体的には、異常検知部122は、判定ルールに基づいて、バス130を流れるメッセージの送信周期に異常があったり、バス130を流れるメッセージに含まれる指示値に異常があったりした場合に、当該メッセージを異常と検知する。
【0056】
IDSECU120は、通信部121で受信したメッセージを、異常検知部122で異常と検知した場合、そのメッセージに含まれる異常なIDを示す異常ID情報を通信部121からバス130を介して車載ネットワーク100内の異常検知装置(
図3に示す例では、異常検知装置110a、110b、110dおよび110f)に送信する。これにより、各異常検知装置は、異常なIDを認識することができる。
【0057】
[1-7.異常検知装置の構成]
図7は、異常検知装置110aの構成図である。
図7には、異常検知装置110aの他に、異常検知装置110aに直接接続されたECU101aおよびバス130も示されている。本実施の形態では、複数の異常検知装置のうち異常検知装置110aに着目して説明する。
【0058】
異常検知装置110aは、バス130とECU101aの間に配置される。
【0059】
異常検知装置110aは、通信部111、制御部112、送信済みIDリスト保持部113および受信済みIDリスト保持部114を備える。異常検知装置110aは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ROM、RAM等であり、プロセッサにより実行されるプログラムを記憶することができる。例えば、プロセッサが、プログラムに従って動作することにより、異常検知装置110aは制御部112を実現することになる。通信部111は、例えば通信回路により実現される。送信済みIDリスト保持部113および受信済みIDリスト保持部114は、例えばメモリにより実現される。
【0060】
通信部111は、ECU101aからメッセージを受信して当該メッセージをバス130へ送信し、バス130からメッセージを受信して当該メッセージをECU101aへ送信する通信回路である。通信部111は、バス130からECU101aへ送信されるメッセージおよび、ECU101aからバス130へ送信されるメッセージを中継する機能を持つ。
【0061】
送信済みIDリスト保持部113は、通信部111がECU101aから受信しバス130へ送信したメッセージのIDのリストである送信済みIDリストを保持する。送信済みIDリストについては後述する。
【0062】
受信済みIDリスト保持部114は、通信部111がバス130から受信しECU101aへ送信したメッセージのIDのリストである受信済みIDリストを保持する。受信済みIDリストについては後述する。
【0063】
制御部112は、通信部111、送信済みIDリスト保持部113および受信済みIDリスト保持部114を制御する。制御部112は、以下の処理を行う(それぞれ詳細は後述する)。
【0064】
制御部112は、通信部111がバス130から受信したメッセージのIDが受信済みIDリストに存在しない場合に、当該IDを受信済みIDリストに追加する。また、制御部112は、通信部111がECU101aから受信したメッセージのIDが受信済みIDリストに存在する場合に、当該メッセージをバス130へ送信しない。例えば、制御部112は、通信部111がECU101aから受信したメッセージのIDが受信済みIDリストに存在する場合に、ECU101aをバス130から隔離する。
【0065】
また、制御部112は、通信部111が複数のECUのうちの他のECU(具体的にはIDSECU120)から送信された異常なIDを示す異常ID情報をバス130から受信した場合に、受信済みIDリストから異常ID情報が示すIDを消去する。
【0066】
また、制御部112は、通信部111がバス130からメッセージを受信したとき、当該メッセージのIDについて記録されるメッセージ受信回数を更新する。また、制御部112は、車載ネットワーク100を搭載した車両10のシャットダウン時に、受信済みIDリストに含まれるIDのうち、受信済みIDリスト保持部114に記録されたメッセージ受信回数、または、当該メッセージ受信回数に基づくメッセージ受信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、車両10の起動時に、不揮発性メモリに退避させたIDを受信済みIDリストに追加する。また、制御部112は、車両10の起動時に、前回の起動時からECU101aのファームウェア情報が変更されている場合に、不揮発性メモリに退避させたIDを消去し、当該IDを受信済みIDリストに追加しない。
【0067】
また、制御部112は、ECU101aから受信したメッセージのIDが送信済みIDリストに存在しない場合に、当該IDを送信済みIDリストに追加する。また、制御部112は、通信部111がバス130から受信したメッセージのIDが送信済みIDリストに存在する場合、当該メッセージをECU101aへ送信しない。
【0068】
また、制御部112は、通信部111がECU101aからメッセージを受信したときに、当該メッセージのIDについて記録されるメッセージ送信回数を更新する。また、制御部112は、車載ネットワーク100を搭載した車両10のシャットダウン時に、送信済みIDリストに含まれるIDのうち、送信済みIDリスト保持部113に記録されたメッセージ送信回数、または、当該メッセージ送信回数に基づくメッセージ送信頻度が所定の値以下となっているIDを不揮発性メモリに退避させ、車両10の起動時に、不揮発性メモリに退避させたIDを送信済みIDリストに追加する。制御部112は、車両10の起動時に、前回の起動時からECU101aのファームウェア情報が変更されている場合に、不揮発性メモリに退避させたIDを消去し、当該IDを送信済みIDリストに追加しない。
【0069】
なお、異常検知装置110b、110c、110d、110eおよび110fは、異常検知装置110aと同様の構成であり、異常検知装置110aと同様のことが言えるため説明は省略する。ただし、異常検知装置110b、110c、110d、110eおよび110fに接続されるECUはそれぞれECU101b、101c、101d、101eおよび101fである点が異なる。
【0070】
[1-8.異常検知機能を有するECUの構成]
図8は、異常検知機能を有するECU101gの構成図である。
図8において、ECU101gは、
図7に示した異常検知装置110aをECUに実装した場合の構成を示している。具体的には、異常検知装置110aが有する機能を異常検知部110gとして示し、ECU101aが有する車両制御等に関する処理を行う機能をECU処理部115として示している。この場合、異常検知部110g(異常検知装置110aに対応)は、バス130とECU処理部115(ECU101aに対応)の間に配置されることになる。
図8に示すように、異常検知機能はECUに直接実装されてもよい。
【0071】
[1-9.受信済みIDリスト例]
図9は、受信済みIDリストの一例を示す図である。受信済みIDリストは、受信済みIDリスト保持部114に保持される。受信済みIDリスト保持部114は、異常検知装置110aに接続されたECU101aが受信したメッセージのID、受信済みIDリストに含まれるID毎のメッセージ受信回数を記録する領域を持つ。言い換えると、受信済みIDリストには、例えば、異常検知装置110aに接続されたECU101aが受信したメッセージのID、そのIDを持つメッセージの車両10の起動時からのメッセージ受信回数、および、メッセージ受信回数に基づくメッセージ受信頻度(例えば最近1分間の受信回数)が含まれる。なお、ECU101aが受信したメッセージとは、異常検知装置110aがバス130から受信して、異常検知装置110aがECU101aへ送信したメッセージのことである。制御部112は、受信済みIDリスト保持部114を制御することで、受信済みIDリストに含まれるこれらの情報を更新する。具体的には、制御部112は、通信部111がバス130からメッセージを受信して当該メッセージをECU101aへ送信したときに当該メッセージに含まれるIDを受信済みIDリストに追加する。また、制御部112は、メッセージに含まれるIDごとにメッセージをECU101aへ送信した回数を車両10の起動時からカウントすることで、IDごとにECU101aがメッセージを受信した受信回数を更新する。また、制御部112は、例えば、1分ごとに最近1分間の受信回数を更新する。
【0072】
図9では、IDとして0x25、0x27、0x89のメッセージのそれぞれについて、受信回数および最近1分間の受信回数が受信済みIDリスト保持部114に保持されていることを示している。
【0073】
なお、
図9では最近1分間の受信回数が示されているが、最近30分間もしくは最近1時間等の受信回数、または、車両起動時からの受信回数を車両起動時間で割った回数等が保持されるように受信済みIDリスト保持部114を構成してもよい。
【0074】
[1-10.送信済みIDリスト例]
図10は、送信済みIDリストの一例を示す図である。送信済みIDリストは、送信済みIDリスト保持部113に保持される。送信済みIDリスト保持部113は、異常検知装置110aに接続されたECU101aが送信したメッセージのID、送信済みIDリストに含まれるID毎のメッセージ送信回数を記録する領域を持つ。言い換えると、送信済みIDリストは、異常検知装置110aに接続されたECU101aが送信したメッセージのID、そのIDを持つメッセージの車両10の起動時からのメッセージ送信回数、および、メッセージ送信回数に基づくメッセージ送信頻度(例えば最近1分間の送信回数)が含まれる。なお、ECU101aが送信したメッセージとは、異常検知装置110aがECU101aから受信して、異常検知装置110aがバス130へ送信したメッセージのことである。制御部112は、送信済みIDリスト保持部113を制御することで、送信済みIDリストに含まれるこれらの情報を更新する。具体的には、制御部112は、通信部111がECU101aからメッセージを受信して当該メッセージをバス130へ送信したときに当該メッセージに含まれるIDを送信済みIDリストに追加する。また、制御部112は、メッセージに含まれるIDごとにメッセージをバス130へ送信した回数を車両10の起動時からカウントすることで、IDごとにECU101aがメッセージを送信した送信回数を更新する。また、制御部112は、例えば、1分ごとに最近1分間の送信回数を更新する。
【0075】
図10では、IDとして0x253、0x272、0x349のメッセージのそれぞれについて、送信回数および最近1分間の送信回数が送信済みIDリスト保持部113に保持されていることを示している。
【0076】
なお、
図10では最近1分間の送信回数が示されているが、最近30分間または最近1時間等の送信回数等が保持されるように送信済みIDリスト保持部113を構成してもよい。
【0077】
[1-11.受信済みIDリストのアップデート処理シーケンス]
図11は、受信済みIDリストのアップデート処理のシーケンスを示す図である。
図11では異常検知装置110aが、受信済みIDリストに存在しないIDのメッセージをバス130から受信した場合の受信済みIDリストのアップデート処理のシーケンスの一例である。
【0078】
ステップS111では、バス130から異常検知装置110aにメッセージが送信される。
【0079】
ステップS112では、異常検知装置110aがバス130から受信したメッセージのIDを読み出す。
【0080】
ステップS113では、異常検知装置110aは、ステップS112で読み出したIDが受信済みIDリストに存在するか否かを確認し、読み出したIDが受信済みIDリストに存在していないと判断する場合、受信済みIDリストに、読み出したIDを追加する。
【0081】
ステップS114では、異常検知装置110aがバス130から受信したメッセージをECU101aに転送する。
【0082】
このようにして、異常検知装置110aは、バス130から受信したメッセージのIDを受信済みIDリストに追加していく。つまり、異常検知装置110aは、複数のECUのうち、自身を介してバス130と接続されたECU101a以外のECUがバス130へ送信したメッセージのIDを受信済みIDリストに追加していく。車載ネットワーク100における複数のECUのそれぞれは、同じIDを含むメッセージを送信しないという仕様のもとでは、受信済みIDリストは、ECU101aが送信しないメッセージのIDのリストとなる。
【0083】
[1-12.受信済みIDリストによる異常検知処理シーケンス]
図12は、受信済みIDリストを用いた異常検知処理のシーケンスを示す図である。
図12では、受信済みIDリストにあるIDのメッセージ(つまり、ECU101aが送信しないメッセージ)をECU101aが送信した場合のシーケンスの一例である。
【0084】
ステップS121では、ECU101aから異常検知装置110aにメッセージが送信される。これにより、異常検知装置110aは、ECU101aから送信されたメッセージを受信する。
【0085】
ステップS122では、異常検知装置110aが受信したメッセージのIDを読み出す。
【0086】
ステップS123では、異常検知装置110aは、ステップS122で読み出したIDが受信済みIDリストに存在するか否かを確認し、読み出したIDが受信済みIDリストに存在していると判断する。この場合、本来ECU101aが送信するはずのないメッセージをECU101aが送信していることになる。つまり、ECU101aが異常なメッセージを送信していることがわかる。
【0087】
ステップS124では、異常検知装置110aは、ECU101aが送信したメッセージをバス130へ送信することを中止する。このような場合に、ECU101aからのメッセージをバス130に送信しないようにすることで、異常なメッセージがバス130に流れることを抑制できる。
【0088】
ステップS125では、異常検知装置110aは、ECU101aが異常であることをバス130に送信し、バス130に接続されたECU101a以外の各ノードにECU101aが異常であることを通知する。例えば、ECU101aに異常があることをECU101a以外の各ノードが認識することで、各ノードは、ECU101aの機能に応じて適切な処理ができる。例えば、ECU101aが車両10の走行に関するECUである場合、各ノードは、車両10を停止させるような処理をすることができる。
【0089】
ステップS126では、異常検知装置110aは、ECU101aが異常であるという通知をECU101a自身に送信する。ECU101aが自身に異常があることを認識することで、ECU101aは、ECU101aの異常の程度にもよるが、例えばフェイルセーフ機能を起動させることができる。
【0090】
[1-13.送信済みIDリストのアップデート処理シーケンス]
図13は、送信済みIDリストのアップデート処理のシーケンスを示す図である。
図13では、送信済みIDリストに存在しないIDを異常検知装置110aが自身に接続されたECU101aから受信した場合の送信済みIDリストのアップデート処理のシーケンスの一例である。
【0091】
ステップS131では、ECU101aから異常検知装置110aへメッセージが送信される。
【0092】
ステップS132では、ECU101aが送信したメッセージを異常検知装置110aが受信し、IDを読み出す。
【0093】
ステップS133では、異常検知装置110aは、ステップS132で読み出したIDが送信済みIDリストに存在するか否かを確認し、読み出したIDが送信済みIDリストに存在していないと判断する場合、送信済みIDリストに、読み出したIDを追加する。
【0094】
ステップS134では、異常検知装置110aがECU101aから受信したメッセージをバス130に転送する。
【0095】
このようにして、異常検知装置110aは、ECU101aから受信したメッセージのIDを送信済みIDリストに追加していく。つまり、異常検知装置110aは、複数のECUのうち、自身を介してバス130と接続されたECU101aがバス130へ送信したメッセージのIDを送信済みIDリストに追加していく。車載ネットワーク100における複数のECUのそれぞれは、同じIDを含むメッセージを送信しないという仕様のもとでは、送信済みIDリストは、ECU101a以外のECU等が送信しないメッセージのIDのリストとなる。
【0096】
[1-14.送信済みIDリストによる異常検知処理シーケンス]
図14は、送信済みIDリストを用いた異常検知処理のシーケンスを示す図である。
図14では、送信済みIDリストに存在するIDのメッセージ(つまり、ECU101a以外のECU等が送信しないメッセージ)がバス130に送信された場合のシーケンスである。
【0097】
ステップS141では、バス130から異常検知装置110aにメッセージが送信される。これにより、異常検知装置110aは、バス130からのメッセージを受信する。
【0098】
ステップS142では、異常検知装置110aが受信したメッセージのIDを読み出す。
【0099】
ステップS143では、異常検知装置110aは、ステップS142で読み出したIDが送信済みIDリストに存在するか否かを確認し、読み出したIDが送信済みIDリストに存在していると判断する。この場合、本来ECU101a以外のECU等が送信するはずのないメッセージをECU101a以外のECU等が送信していることになる。つまり、ECU101a以外のECU等が異常なメッセージを送信していることがわかる。
【0100】
ステップS144では、異常検知装置110aは、バス130が送信したメッセージをECU101aへ送信することを中止している。このような場合に、ECU101a以外のECU等からのメッセージをECU101aに送信しないようにすることで、異常なメッセージがECU101aに送信されることを抑制できる。
【0101】
ステップS145では、異常検知装置110aは、車載ネットワーク100に異常なECU等が存在することをECU101aに通知している。例えば、異常なECU等は、ECU101aが送信するメッセージに含まれるIDを使って不正メッセージを送信しているため、ECU101aになりすまそうとしている可能性がある。このため、ECU101aは、自身が有する機能に応じて適切な処理ができる。例えば、ECU101aが車両10の走行に関するECUである場合、ECU101aは、車両10を停止させるような処理をすることができる。
【0102】
ステップS146では、異常検知装置110aは、車載ネットワーク100に異常なECU等が存在することをバス130に通知する。つまり、異常検知装置110aは、バス130に接続されたECU101a以外のECU101b、101c、101d、101e、101fにその旨を通知する。これにより、各ECUは、ECU101aが有する機能に応じて適切な処理ができる。
【0103】
[1-15.IDSECUが異常を検知した場合のシーケンス]
図11から
図14では、送信済みIDリストに含まれるIDおよび受信済みIDリストに含まれるIDが正規なIDであるとして説明した。基本的には、車両10が起動してすぐに各ECUからのメッセージの送信が開始され、送信済みIDリストおよび受信済みIDリストには、すぐに正規のIDが追加されることになるためである。
【0104】
しかし、車両10が起動した後、送信済みIDリストおよび受信済みIDリストに正規のIDが追加される前に、攻撃者によって攻撃を受けて異常なIDが送信済みIDリストまたは受信済みIDリストに追加される場合も考えられる。
【0105】
以下では、正規のIDが追加される前に、異常なID(例えばECU101aが送信する正規のメッセージに含まれるID)が異常検知装置110aの受信済みIDリストに追加された場合の処理について説明する。
【0106】
図15は、IDSECU120が異常を検知した場合の処理のシーケンスを示す図である。
図15では、
図3に示すように、車載ネットワーク100にIDSECU120が存在する場合に、IDSECU120が異常を検知した場合の処理のシーケンスの一例である。IDSECU120が異常を検知した場合は、検知した異常なメッセージに含まれる異常なIDを異常検知装置110aが保持する受信済みIDリストから消去する。
【0107】
ステップS151では、バス130からIDSECU120へメッセージが送信される。
【0108】
ステップS152では、IDSECU120が受信したメッセージの異常判定を行い、受信したメッセージは異常と判定する。
【0109】
ステップS153では、IDSECU120は、異常と判定したメッセージの異常なIDを示す異常ID情報をバス130へ送信する。
【0110】
ステップS154では、バス130に送信された、IDSECU120で異常と判定されたメッセージについての異常ID情報を、バス130に接続された異常検知装置110aは受信する。なお、IDSECU120で異常と判定されたメッセージについての異常ID情報は、バス130に接続された全ての異常検知装置、すなわち、異常検知装置110a、110b、110d、110fに通知される。
【0111】
ステップS155では、異常検知装置110aが受信済みIDリストから、IDSECU120で異常と判定されたメッセージのID(つまり、異常ID情報が示すID)を消去する。
【0112】
このように、正規メッセージがバス130に流れる前に、攻撃者が不正メッセージをバス130へ送信した場合であっても、受信済みIDリストを修正して、受信済みIDリストに追加された不正メッセージに含まれるID(例えばECU101aが送信するメッセージに含まれるID)を受信済みIDリストから消去することで正規メッセージ(例えば正規なECU101aが送信するメッセージ)を不正メッセージであると異常検知装置110aが誤検知することを防止することが可能である。すなわち、正規なECU101aが送信するメッセージに含まれるIDが受信済みIDリストに存在しなくなるため、正規なECU101aからバス130へのメッセージの送信が可能となる。
【0113】
[1-16.異常検知装置の全体処理フロー]
図16は、実施の形態1における異常検知装置110aの全体処理のフローチャートである。異常検知装置110aは、異常検知装置110aに接続されるECU101aとバス130間で送受信されるメッセージを受信し、メッセージがバス130からECU101aへ送信されたものか、ECU101aからバス130へ送信されたものかに応じて受信済みIDリストまたは送信済みIDリストの更新とメッセージの異常判定を行い、異常を検知した場合はECU101aまたはバス130へのメッセージの転送を中止する。
【0114】
ステップS161では、異常検知装置110aがバス130または、異常検知装置110aに接続されたECU101aからメッセージを受信する。
【0115】
ステップS162では、異常検知装置110aは、受信したメッセージがECU101aから送信されたメッセージか、バス130から送信されたメッセージかを判定する。例えば、異常検知装置110aは、ECU101aに接続された入出力端子と、バス130に接続された入出力端子を有し、どちらの入出力端子からメッセージを受信したかに応じて上記判定を行ってもよい。
【0116】
ステップS163およびS164は、受信したメッセージがバス130から送信された場合(ステップS162で「バス」の場合)の処理であり、異常検知装置110aは、受信済みIDリストの更新処理および、送信済みIDリストによる異常検知処理を行う。
【0117】
ステップS165およびステップS166は、受信したメッセージがECU101aから送信された場合(ステップS162で「ECU」の場合)の処理であり、異常検知装置110aは、送信済みIDリスト更新処理および、受信済みIDリストによる異常検知処理を行う。
【0118】
ステップS163は、
図17を用いて後述し、ステップS164は、
図21を用いて後述し、ステップS165は、
図18を用いて後述し、ステップS166は、
図19および
図20を用いて後述する。
【0119】
[1-17.受信済みIDリスト更新処理フロー]
図17は、受信済みIDリスト更新処理のフローチャートである。
図17は、
図16のステップS163の受信済みIDリスト更新処理の詳細な処理フローである。異常検知装置110aは、バス130からメッセージが送信された際に、受信済みIDリスト保持部114に保持している受信済みIDリストを更新する。
【0120】
ステップS171では、異常検知装置110aは、バス130から受信したメッセージのIDを読み出す。
【0121】
ステップS172では、異常検知装置110aは、受信済みIDリストにステップS171で読み出したIDが存在するか否かを判断する。
【0122】
異常検知装置110aは、受信済みIDリストに読み出したIDが存在しない場合(ステップS172でNOの場合)は、ステップS173で、受信済みIDリストに読み出したIDを追加する。異常検知装置110aは、受信済みIDリストに読み出したIDが存在する場合(ステップS172でYESの場合)は、ステップS174の処理を行う。
【0123】
ステップS174では、異常検知装置110aは、読み出したIDについて、受信済みIDリスト保持部114に記録されるメッセージ受信回数をインクリメントして更新する。
【0124】
[1-18.送信済みIDリスト更新処理フロー]
図18は、送信済みIDリスト更新処理のフローチャートである。
図18は、
図16のステップS165の送信済みIDリスト更新処理の詳細な処理フローである。異常検知装置110aは、ECU101aからメッセージが送信された際に、送信済みIDリスト保持部113に保持している送信済みIDリストを更新する。
【0125】
ステップS181では、異常検知装置110aは、ECU101aから受信したメッセージのIDを読み出す。
【0126】
ステップS182では、異常検知装置110aは、送信済みIDリストにステップS181で読み出したIDが存在するか否かを判断する。
【0127】
異常検知装置110aは、送信済みIDリストに読み出したIDが存在しない場合(ステップS182でNOの場合)は、ステップS183で、送信済みIDリストに読み出したIDを追加する。異常検知装置110aは、送信済みIDリストに読み出したIDが存在する場合(ステップS182でYESの場合)は、ステップS184の処理を行う。
【0128】
ステップS184では、異常検知装置110aは、読み出したIDについて、送信済みIDリスト保持部113に記録されるメッセージ送信回数をインクリメントして更新する。
【0129】
[1-19.受信済みIDリストによる異常検知処理フロー]
図19は、受信済みIDリストによる異常検知処理のフローチャートである。
図19は、
図16のステップS166の受信済みIDリストによる、異常検知装置110aに接続されたECU101aの異常検知処理の詳細な処理フローである。
【0130】
ステップS191では、異常検知装置110aは、ECU101aから受信したメッセージのIDを読み出す。
【0131】
ステップS192では、異常検知装置110aは、読み出したIDが受信済みIDリストに存在するか否かを判断する。
【0132】
異常検知装置110aは、読み出したIDが受信済みIDリストに存在する場合(ステップS192でYESの場合)、ECU101aから受信したメッセージが異常であると検知して、ステップS193、S194およびS195の処理を行う。異常検知装置110aは、読み出したIDが受信済みIDリストに存在しない場合(ステップS192でNOの場合)、ECU101aから受信したメッセージは正常であると検知して、ステップS196の処理を行う。
【0133】
ステップS193では、異常検知装置110aは、受信したメッセージを破棄する。つまり、異常検知装置110aは、ECU101aから受信したメッセージをバス130へ送信しない。ECU101aからのメッセージをバス130に送信しないようにすることで、異常なメッセージがバス130に流れることを抑制できる。
【0134】
ステップS194では、異常検知装置110aは、ECU101aが異常であるとバス130に通知する。
【0135】
ステップS195では、異常検知装置110aは、ECU101aにECU101aが異常であると通知する。
【0136】
一方で、ステップS196では、異常検知装置110aは、ECU101aから受信したメッセージは正常なため、バス130へ当該メッセージを転送する。
【0137】
[1-20.受信済みIDリストによる異常検知処理フロー(変形例)]
図20は、受信済みIDリストによる異常検知処理の変形例のフローチャートである。
図20は、
図16のステップS166の受信済みIDリストによる異常検知処理の変形例の詳細な処理フローである。
図19における受信済みIDリストによる異常検知処理では、受信したメッセージのIDが受信済みIDリストに存在する場合、異常検知装置110aは、ステップS193にて受信したメッセージを破棄しバス130に転送しないという処理を行うようにしたが、
図20の変形例では、ステップS193の処理を実施せず、代わりにステップS201の処理を実施する。具体的には、異常検知装置110aは、ECU101aをバス130から隔離する。より具体的には、異常検知装置110aは、ECU101aから受信するメッセージをすべて遮断する。これにより、ECU101aをバス130から隔離し被害が拡大することを防止して、異常メッセージのみを遮断する場合と比べて、車載ネットワーク100に不正なECUが与える影響をより軽減できる。なお、例えば、異常検知装置110aとECU101aとの間に異常検知装置110aとECU101aとの接続および非接続を切り替えるスイッチが設けられていてもよく、当該スイッチの切り替えによって異常検知装置110aとECU101aと接続されないようにすることで、ECU101aをバス130から隔離してもよい。
【0138】
[1-21.送信済みIDリストによる異常検知処理フロー]
図21は、送信済みIDリストによる異常検知処理のフローチャートである。
図21は、
図16のステップS164の送信済みIDリストによる、バス130に存在するECUの異常検知処理の詳細な処理フローである。
【0139】
ステップS211では、異常検知装置110aは、バス130から受信したメッセージのIDを読み出す。
【0140】
ステップS212では、異常検知装置110aは、読み出したIDが送信済みIDリストに存在するか否かを判断する。
【0141】
異常検知装置110aは、読み出したIDが送信済みIDリストに存在する場合(ステップS212でYESの場合)、バス130から受信したメッセージが異常であると検知して、ステップS213、S214およびS215の処理を行う。異常検知装置110aは、読み出したIDが送信済みIDリストに存在しない場合(ステップS212でNOの場合)、バス130から受信したメッセージは正常であると検知して、ステップS216の処理を行う。
【0142】
ステップS213では、異常検知装置110aは、受信したメッセージを破棄する。つまり、異常検知装置110aは、バス130から受信したメッセージをECU101aへ送信しない。バス130に存在するECUからのメッセージをECU101aに送信しないようにすることで、異常なメッセージがECU101aに送信されることを抑制できる。
【0143】
ステップS214では、異常検知装置110aは、バス130に異常なECUが存在することをバス130に通知する。
【0144】
ステップS215では、異常検知装置110aは、ECU101aにバス130に異常なECUが存在することを通知する。
【0145】
一方で、ステップS216では、異常検知装置110aは、バス130から受信したメッセージは正常なため、ECU101aへ当該メッセージを転送する。
【0146】
以上のように、車載ネットワーク100内に必ずしもIDSECU120を追加(つまり、ネットワークトラフィックおよびコストが増大)したり、各ECUが送信するメッセージのIDを予め記憶させておいたりすることなく、車載ネットワーク100における異常を容易に検知できる。
【0147】
[1-22.異常検知装置がIDSECUから異常通知を受信した場合の処理フロー]
図22は、異常検知装置がIDSECU120から異常通知を受信した場合の処理のフローチャートである。なお、
図22には、異常検知装置がIDSECU120から異常通知を受信する前のIDSECU120での処理(ステップS221からステップS224)についても示している。
【0148】
ステップS221では、IDSECU120がバス130からメッセージを受信する。
【0149】
ステップS222では、IDSECU120は受信したメッセージの異常判定を行う。
【0150】
ステップS223では、ステップS222の異常判定の結果が異常か否かを判断する。IDSECU120は、異常判定の結果が異常である場合(ステップS223でYESの場合)、ステップS224の処理を行い、異常判定の結果が異常でない場合(ステップS223でNOの場合)、処理を終了する。
【0151】
ステップS224では、IDSECU120は、異常と判定したメッセージに含まれる異常なIDを示す異常ID情報をバス130に接続されている異常検知装置110a、110b、110dおよび110fに通知する。ここでは、異常検知装置110aに着目して説明する。
【0152】
ステップS225では、異常検知装置110aが、IDSECU120から送信された異常なIDを示す異常ID情報をバス130から受信する。異常検知装置110aは、IDSECU120から送信された異常なIDを示す異常ID情報をバス130から受信した場合に、受信済みIDリストから異常ID情報が示すIDを消去する。具体的には以下の処理が行われる。
【0153】
ステップS226では、異常検知装置110aは、受信した異常ID情報が示す異常なIDが受信済みIDリストに存在するか否かを判断する。異常なIDが受信済みIDリストに存在する場合(ステップS226でYESの場合)は、異常検知装置110aは、ステップS227の処理を行い、異常なIDが受信済みIDリストに存在しない場合(ステップS226でNOの場合)は、異常検知装置110aは、処理を終了する。
【0154】
ステップS227では、異常検知装置110aは、受信済みIDリストから異常なIDを消去する。
【0155】
正規メッセージがバス130に流れる前に、攻撃者が不正メッセージをバス130へ送信する場合が考えられる。この場合、受信済みIDリストに不正メッセージに含まれるIDが追加されることになる。例えば、正規なECU101aが送信するメッセージに含まれるIDが不正メッセージに含まれる場合、正規なECU101aから送信される正規メッセージが不正メッセージであると判定されてしまう。つまり、以降は、正規メッセージがバス130へ送信されず、攻撃者がECU101aになりすまして不正メッセージがバス130へ送信されることになる。これに対して、上記説明のように、例えばIDSECU120が車載ネットワーク100に配置されることで、攻撃者が送信した不正メッセージを検知することが可能となる。したがって、正規メッセージがバス130に流れる前に、攻撃者が不正メッセージをバス130へ送信した場合(つまり、受信済みIDリストが汚染された場合)であっても、受信済みIDリストを修正して、受信済みIDリストに追加された不正メッセージに含まれるID(例えばECU101aが送信するメッセージに含まれるID)を受信済みIDリストから消去することで正規メッセージを不正メッセージであると異常検知装置110aが誤検知することを防止することが可能である。
【0156】
[1-23.異常検知装置の全体処理フロー(変形例)]
図23は、異常検知装置110aの全体処理の変形例を記載したフローチャートである。
図23は、
図16の異常検知装置110aの全体処理のフローチャートの変形例である。具体的には、
図23では、
図16の全体処理に加えて、ステップS167の車両シャットダウン操作があるか否かの判断の処理、ステップS231の車両10の起動時の処理、および、ステップS232の車両10のシャットダウン時の処理が追加されている。
【0157】
ステップS231は、後ほど
図27にて詳細に説明する。
【0158】
ステップS167では、異常検知装置110aは、車両シャットダウン操作があれば(ステップS167でYESの場合)、ステップS232を行い、車両シャットダウン操作がなければ(ステップS167でNOの場合)、ステップS161に戻る。ステップS232については、
図24から
図26にて詳細に説明する。
【0159】
[1-24.車両シャットダウン時の処理フロー]
図24は、異常検知装置110aの車両シャットダウン時の処理のフローチャートである。
図24は、
図23のステップS232の異常検知装置110aの車両シャットダウン時の処理の詳細なフローチャートである。
【0160】
ステップS241では、異常検知装置110aは、低頻度受信済みID退避処理を行う。ステップS241の処理は、
図25にて詳細に説明する。
【0161】
ステップS242では、異常検知装置110aは、低頻度送信済みID退避処理を行う。ステップS242の処理は、
図26にて詳細に説明する。
【0162】
[1-25.低頻度受信済みIDの退避処理フロー]
図25は、低頻度受信済みIDの退避の処理のフローチャートである。
図25は、
図24のステップS241の低頻度受信済みID退避処理の詳細な処理のフローチャートである。
【0163】
ステップS251では、異常検知装置110aは、受信済みIDリストから、低頻度受信済みIDの退避の処理においてまだ選択していないIDを選択する。
【0164】
ステップS252では、異常検知装置110aは、選択したIDについて、受信済みIDリスト保持部114に記録されたメッセージ受信回数に基づくメッセージ受信頻度を算出する。例えば、異常検知装置110aは、メッセージ受信回数を車両10の起動からシャットダウンまでの時間で割ることでメッセージ受信頻度を算出する。なお、異常検知装置110aは、選択したIDについて、受信済みIDリスト保持部114に記録されたメッセージ受信回数を取得してもよい。メッセージ受信回数は、例えば、シャットダウン前最近1分間、30分間または1時間等の所定の時間にECU101aがバス130からメッセージを受信した回数であってもよい。
【0165】
ステップS253では、異常検知装置110aは、ステップS252で算出したメッセージ受信頻度が予め設定した所定の値以下であるか否かの判断を行う。異常検知装置110aは、メッセージ受信頻度が所定の値以下ならば(ステップS253でYESの場合)、メッセージ受信頻度が所定の値以下となっているIDを低頻度受信済みIDと判断し、ステップS254の処理を行い、メッセージ受信頻度が所定の値よりも大きいならば(ステップS253でNOの場合)、ステップS255の処理を行う。なお、異常検知装置110aは、ステップS252で、選択したIDについて、受信済みIDリスト保持部114に記録されたメッセージ受信回数を取得する場合、ステップS252で取得したメッセージ受信回数が予め設定した所定の値以下であるか否かの判断を行ってもよい。そして、異常検知装置110aは、メッセージ受信回数が所定の値以下ならば、メッセージ受信回数が所定の値以下となっているIDを低頻度受信済みIDと判断し、ステップS254の処理を行い、メッセージ受信回数が所定の値よりも大きいならば、ステップS255の処理を行う。このように、メッセージ受信回数が少なければメッセージ受信頻度も低いとみなすことで、ステップS252においてメッセージ受信回数からメッセージ受信頻度を算出せず、メッセージ受信回数を取得するだけでもよい。
【0166】
ステップS254では、異常検知装置110aは、選択したIDを不揮発性メモリに退避させる。
【0167】
そして、ステップS255では、異常検知装置110aは、受信済みIDリストに未選択のIDが存在するか否かを判定し、存在する場合(ステップS255でYESの場合)は、ステップS251に戻り、存在しない場合(ステップS255でNOの場合)は、処理を終了する。これにより、複数の低頻度受信済みIDを不揮発性メモリに退避することができる。
【0168】
[1-26.低頻度送信済みIDの退避処理フロー]
図26は、低頻度送信済みIDの退避の処理フローチャートである。
図26は、
図24のステップS242の低頻度送信済みID退避処理の詳細な処理のフローチャートである。
【0169】
ステップS261では、異常検知装置110aは、送信済みIDリストから、低頻度送信済みIDの退避の処理においてまだ選択していないIDを選択する。
【0170】
ステップS262では、異常検知装置110aは、選択したIDについて、送信済みIDリスト保持部113に記録されたメッセージ送信回数に基づくメッセージ送信頻度を算出する。例えば、異常検知装置110aは、メッセージ送信回数を車両10の起動からシャットダウンまでの時間で割ることでメッセージ送信頻度を算出する。なお、異常検知装置110aは、選択したIDについて、送信済みIDリスト保持部113に記録されたメッセージ送信回数を取得してもよい。メッセージ送信回数は、シャットダウン前最近1分間、30分間または1時間等の所定の時間にECU101aがバス130へメッセージを送信した回数であってもよい。
【0171】
ステップS263では、異常検知装置110aは、ステップS262で算出したメッセージ送信頻度が予め設定した所定の値以下であるか否かの判定を行う。異常検知装置110aは、メッセージ送信頻度が所定の値以下ならば(ステップS263でYESの場合)、メッセージ送信頻度が所定の値以下となっているIDを低頻度送信済みIDと判断し、ステップS264の処理を行い、メッセージ送信頻度が所定の値よりも大きいならば(ステップS263でNOの場合)、ステップS265の処理を行う。なお、異常検知装置110aは、ステップS262で、選択したIDについて、送信済みIDリスト保持部113に記録されたメッセージ送信回数を取得する場合、ステップS262で取得したメッセージ送信回数が予め設定した所定の値以下であるか否かの判断を行ってもよい。そして、異常検知装置110aは、メッセージ送信回数が所定の値以下ならば、メッセージ送信回数が所定の値以下となっているIDを低頻度送信済みIDと判断し、ステップS264の処理を行い、メッセージ送信回数が所定の値よりも大きいならば、ステップS265の処理を行う。このように、メッセージ送信回数が少なければメッセージ送信頻度も低いとみなすことで、異常検知装置110aは、ステップS262においてメッセージ送信回数からメッセージ送信頻度を算出せず、メッセージ送信回数を取得するだけでもよい。
【0172】
ステップS264では、異常検知装置110aは、選択したIDを不揮発性メモリに退避させる。
【0173】
そして、ステップS265では、異常検知装置110aは、送信済みIDリストに未選択のIDが存在するか否かを判定し、存在する場合(ステップS255でYESの場合)は、ステップS261に戻り、存在しない場合(ステップS255でNOの場合)は、処理を終了する。これにより、複数の低頻度送信済みIDを不揮発性メモリに退避することができる。
【0174】
[1-27.車両起動時の処理フロー]
図27は、異常検知装置110aの車両起動時の処理のフローチャートである。
図27は、
図23のステップS231の異常検知装置110aの車両起動時の詳細な処理のフローチャートである。
【0175】
ステップS271では、異常検知装置110aは、車両10の起動時に、異常検知装置110aに接続されたECU101aのファームウェア情報を確認する。
【0176】
そして、ステップS272では、異常検知装置110aは、現在のファームウェア情報を次回の車両10の起動時に行うステップS271の処理で使用するために退避する。
【0177】
次に、ステップS273では、異常検知装置110aは、前回の車両10の起動時からECU101aのファームウェア情報が変更(更新)されているか否かを判断する。ファームウェア情報が変更されている場合(ステップS273でYESの場合)は、異常検知装置110aは、ステップS274の処理を行う。ファームウェア情報が変更されていない場合(ステップS273でNOの場合)は、異常検知装置110aは、ステップS276の処理を行う。なお、車両10の初回起動時は、前回のファームウェア情報は存在しないので、ファームウェア情報が変更されていないものとして扱う。また、車両10の前回の起動時のECU101aのファームウェア情報は、前回の起動時のステップS272の処理で退避されている。つまり、車両10が起動するごとに、
図27に示す処理が行われる。
【0178】
ステップS274では、異常検知装置110aは、
図25のステップS254にて不揮発性メモリに退避していた低頻度受信済みIDをリセットする。
【0179】
さらに、ステップS275では、異常検知装置110aは、
図26のステップS264にて不揮発性メモリに退避していた低頻度送信済みIDをリセットする。
【0180】
ECUのファームウェアアップデートに伴いECUのファームウェア情報が変更された場合、ECUから送信されるメッセージに含まれるIDの仕様が変更されることがある。したがって、この場合に、不揮発性メモリに退避させたIDを消去し、当該IDを受信済みIDリストまたは送信済みIDリストに追加しないようにすることで、仕様が変更されたIDが原因で発生する正常メッセージの誤遮断を防止することが可能である。
【0181】
ステップS276では、異常検知装置110aは、
図25のステップS254にて不揮発性メモリに退避していた低頻度受信済みIDを異常検知装置110aの受信済みIDリストに読み込む。
【0182】
メッセージ受信回数またはメッセージ受信頻度が所定の値以下となっているID(低頻度で受信されるメッセージに含まれるID)は、車両10が起動した後、当該IDを含むメッセージがバス130を流れるまでに時間を要する場合がある。つまり、当該IDを含む正規メッセージがバス130を流れるまでに、攻撃者が当該IDを含む不正メッセージをバス130へ送信して、受信済みIDリストに不正メッセージに含まれるIDが追加されてしまう(言い換えると、受信済みIDリストが不正なIDで汚染されてしまう)場合がある。これに対して、車両10の起動時に、不揮発性メモリに退避させた低頻度で受信されるメッセージに含まれるIDを受信済みIDリストに追加することで、低頻度で受信されるメッセージが最初にネットワークバスに流れる前に攻撃者が不正メッセージを送信することによる受信済IDリストの汚染を防ぐことが可能である。また、高頻度に受信されるメッセージの含まれるIDを不揮発性メモリに退避させないことで、その分メモリ容量を削減することが可能である。
【0183】
さらに、ステップS277では、異常検知装置110aは、
図26のステップS264にて不揮発性メモリに退避していた低頻度送信済みIDを異常検知装置110aの送信済みIDリストに読み込む。
【0184】
メッセージ送信回数またはメッセージ送信頻度が所定の値以下となっているID(低頻度でECU101aから送信されるメッセージに含まれるID)は、車両10が起動した後、当該IDを含むメッセージを異常検知装置110aがECU101aから受信するまでに時間を要する場合がある。つまり、当該IDを含む正規メッセージを異常検知装置110aが受信するまでに、攻撃者がECU101aを攻撃して不正なECU101aから不正メッセージを異常検知装置110aへ送信して、送信済みIDリストに不正メッセージに含まれるIDが追加されてしまう(言い換えると、送信済みIDリストが不正なIDで汚染されてしまう)場合がある。これに対して、車両10の起動時に、不揮発性メモリに退避させた低頻度で送信されるメッセージに含まれるIDを送信済みIDリストに追加することで、低頻度で送信されるメッセージを異常検知装置110aが受信する前に攻撃者が不正メッセージを送信することによる送信済IDリストの汚染を防ぐことが可能である。また、高頻度に送信されるメッセージに含まれるIDを不揮発性メモリに退避させないことで、その分メモリ容量を削減することが可能である。
【0185】
なお、異常検知装置110aは、車両10の起動時に、ファームウェア情報の確認を行わず、不揮発性メモリに退避させたIDを受信済みIDリストまたは送信済みIDリストに追加してもよい。つまり、車両10の起動時にステップS271からステップS275の処理が行われず、ステップS276およびステップS277の処理が行われてもよい。
【0186】
(他の実施の形態)
例えば、上記実施の形態では、異常検知装置は、送信済みIDリスト保持部113を備えていたが、備えていなくてもよい。この場合、制御部112は、送信済みIDリスト保持部113に関連する制御を行わなくてもよい。
【0187】
また、例えば、上記実施の形態では、異常検知装置は、受信済みIDリスト保持部114を備えていたが、備えていなくてもよい。この場合、制御部112は、受信済みIDリスト保持部114に関連する制御を行わなくてもよい。
【0188】
また、例えば、上記実施の形態では、制御部112は、通信部111がECUから受信したメッセージのIDが受信済みIDリストに存在する場合に、当該ECUをバス130から隔離するとしたが、隔離しなくてもよく、当該メッセージをバス130へ送信しないようにするのみでもよい。
【0189】
また、例えば、上記実施の形態では、受信済みIDリスト保持部114は、受信済みIDリストに含まれるID毎のメッセージ受信回数を記録する領域を持っているとしたが、持っていなくてもよい。この場合、制御部112は、メッセージ受信回数に関連する制御を行わなくてもよい。
【0190】
また、例えば、上記実施の形態では、送信済みIDリスト保持部113は、送信済みIDリストに含まれるID毎のメッセージ送信回数を記録する領域を持っているとしたが、持っていなくてもよい。この場合、制御部112は、メッセージ送信回数に関連する制御を行わなくてもよい。
【0191】
本開示の車載ネットワーク100は、典型的には上述のとおり車載のCANネットワークであるが、これに限定されない。例えば、CAN-FD(CAN with Flexible Data rate)、FlexRay(登録商標)、Ethernet(登録商標)、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などのネットワークであってもよい。あるいはこれらのネットワークをサブネットワークとして、CANネットワークと組み合わせた車載ネットワークであってもよい。
【0192】
また、上記実施の形態では、自動車に搭載される車載ネットワーク100におけるセキュリティ対策として説明したが、本開示の適用範囲はこれに限られない。本開示は、自動車に限らず、建機、農機、船舶、鉄道、飛行機などのモビリティにも適用してもよい。すなわち、本開示は、モビリティネットワークおよびモビリティネットワークシステムにおけるサイバーセキュリティ対策として適用可能である。
【0193】
上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニットなどから構成されるコンピュータシステムである。RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【0194】
上記の実施の形態における各装置は、構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0195】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部またはすべてを含むように1チップ化されてもよい。
【0196】
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0197】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0198】
上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカードまたはモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカードまたはモジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0199】
本開示は、異常検知装置として実現できるだけでなく、異常検知装置を構成する各構成要素が行うステップ(処理)を含む異常検知方法として実現できる。
【0200】
異常検知方法は、複数のECUと、バス130と、異常検知装置から構成される車載ネットワーク100に配置される異常検知装置により実行される異常検知方法であって、異常検知装置は、バス130と複数のECUのうちのいずれかの第1ECUの間に配置され、前記第1ECUからメッセージを受信して当該メッセージをバス130へ送信し、バス130からメッセージを受信して当該メッセージを前記第1ECUへ送信する通信部111と、通信部111がバス130から受信し前記第1ECUへ送信したメッセージのIDのリストである受信済みIDリストを保持する受信済みIDリスト保持部114と、を備え、異常検知方法では、通信部111がバス130から受信したメッセージのIDが受信済みIDリストに存在しない場合(
図17のステップS172でNoの場合)に、当該IDを受信済みIDリストに追加し(
図17のステップS173)、通信部111が前記第1ECUから受信したメッセージのIDが受信済みIDリストに存在する場合(
図19のステップS192でYes)に、当該メッセージをバス130へ送信しない(
図19のステップS193)ことを特徴とする。
【0201】
また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
【0202】
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
【0203】
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【0204】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
【0205】
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【0206】
以上、一つまたは複数の態様に係る異常検知装置などについて、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、および異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【0207】
例えば、上記実施の形態において、特定の構成要素が実行する処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
【産業上の利用可能性】
【0208】
本開示は、車載ネットワークを搭載した車両等に利用可能である。
【符号の説明】
【0209】
10 車両
100 車載ネットワーク
101a、101b、101c、101d、101e、101f、101g ECU
110a、110b、110c、110d、110e、110f 異常検知装置
110g 異常検知部
111 通信部
112 制御部
113 送信済みIDリスト保持部
114 受信済みIDリスト保持部
115 ECU処理部
120 IDSECU
121 通信部
122 異常検知部
130 バス