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

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

▶ 日立オートモティブシステムズ株式会社の特許一覧

<>
  • 特開-電子制御装置 図1
  • 特開-電子制御装置 図2
  • 特開-電子制御装置 図3
  • 特開-電子制御装置 図4
  • 特開-電子制御装置 図5
  • 特開-電子制御装置 図6
  • 特開-電子制御装置 図7
  • 特開-電子制御装置 図8
  • 特開-電子制御装置 図9
  • 特開-電子制御装置 図10
  • 特開-電子制御装置 図11
  • 特開-電子制御装置 図12
  • 特開-電子制御装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024041392
(43)【公開日】2024-03-27
(54)【発明の名称】電子制御装置
(51)【国際特許分類】
   G06F 21/55 20130101AFI20240319BHJP
   H04L 9/32 20060101ALI20240319BHJP
【FI】
G06F21/55
H04L9/32 200E
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022146182
(22)【出願日】2022-09-14
(71)【出願人】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】100129425
【弁理士】
【氏名又は名称】小川 護晃
(74)【代理人】
【識別番号】100168642
【弁理士】
【氏名又は名称】関谷 充司
(72)【発明者】
【氏名】小野寺 航平
(57)【要約】
【課題】電子制御装置におけるメッセージ認証処理で認証エラーが発生した際に、認証エラーが生じた異常の原因を判別できるようにする。
【解決手段】他の電子制御装置と通信可能に構成された電子制御装置が、他の電子制御装置から、メッセージ、当該他の電子制御装置においてメッセージが送信されるごとに前回の値と異なる値が所定規則に基づいて格納される送信識別情報、及び、当該他の電子制御装置において当該メッセージに基づいて生成された第1認証情報を含んだ情報を受信する通信部を備える。また、当該電子制御装置は、受信したメッセージに基づいて第2認証情報を生成して、受信した第1認証情報と生成した第2認証情報とを照合し、第1認証情報と第2認証情報との照合結果が不整合であり、且つ、受信した送信識別情報の値が固着状態であるときに、他の電子制御装置に異常が発生していると判別する判別部とを備える。
【選択図】図6
【特許請求の範囲】
【請求項1】
他の電子制御装置と通信可能に構成された電子制御装置であって、
前記他の電子制御装置から、メッセージ、当該他の電子制御装置においてメッセージが送信されるごとに前回の値と異なる値が所定規則に基づいて格納される送信識別情報、及び、当該他の電子制御装置において当該メッセージに基づいて生成された第1認証情報を含んだ情報を受信する通信部と、
受信した前記メッセージに基づいて第2認証情報を生成して、受信した前記第1認証情報と生成した前記第2認証情報とを照合し、前記第1認証情報と前記第2認証情報との照合結果が不整合であり、且つ、受信した前記送信識別情報の値が固着状態であるときに、前記他の電子制御装置に異常が発生していると判別する判別部と
を備える、電子制御装置。
【請求項2】
前記第1認証情報と前記第2認証情報との照合結果が不整合であることを示す値が所定規則に基づいて格納される認証異常識別情報と、
前記送信識別情報の値が固着状態であることを示す値が所定規則に基づいて格納される固着識別情報と
が記憶される記憶部をさらに備え、
前記判別部が前記他の電子制御装置に異常が発生していると判別するのは、前記認証異常識別情報の値と前記固着識別情報の値とが対応関係にある場合である、請求項1に記載の電子制御装置。
【請求項3】
前記判別部は、前記第1認証情報と前記第2認証情報との照合結果が不整合であり、且つ、受信した前記送信識別情報の値が固着状態でないときに、前記他の電子制御装置になりすまして送信された不正メッセージを受信したものと判別する、請求項1に記載の電子制御装置。
【請求項4】
前記第1認証情報と前記第2認証情報との照合結果が不整合であることを示す値が所定規則に基づいて格納される認証異常識別情報と、
前記送信識別情報の値が固着状態であることを示す値が所定規則に基づいて格納される固着識別情報と
が記憶される記憶部をさらに備え、
前記判別部が前記他の電子制御装置になりすまして送信された不正メッセージを受信したものと判別するのは、前記認証異常識別情報の値と前記固着識別情報の値とが対応関係にない場合である、請求項3に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両に搭載される電子制御装置に関する。
【背景技術】
【0002】
近年、車両の電子制御化に伴い、車載ネットワークが不正なサイバー攻撃を受けるリスクが高まっている。サイバー攻撃から車載ネットワークを守る技術として、メッセージ認証がある。この技術では、電子制御装置間において通信されているメッセージにメッセージ認証コード(Message Authentication Code:MAC)を付与して暗号化通信を行い、当該認証コードの整合性に基づいて、メッセージが正常に送信されたものかを認証する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2015-114907号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、車載ネットワークがサイバー攻撃を受けた場合、攻撃を受けた電子制御装置におけるメッセージ認証処理において認証エラーが発生する。しかし、かかるメッセージ認証処理では、通信相手側の電子制御装置の異常が原因で認証エラーが発生する場合もある。この場合、異常の原因がサイバー攻撃によるのか通信相手側の電子制御装置の異常によるのかを判別することが難しい。
【0005】
そこで、本発明の1つの態様では、電子制御装置におけるメッセージ認証処理で認証エラーが発生した際に、認証エラーが生じた異常の原因を判別できるようにすることを目的とする。
【課題を解決するための手段】
【0006】
本発明の1つの態様では、他の電子制御装置と通信可能に構成された電子制御装置が、前記他の電子制御装置から、メッセージ、当該他の電子制御装置においてメッセージが送信されるごとに前回の値と異なる値が所定規則に基づいて格納される送信識別情報、及び、当該他の電子制御装置において当該メッセージに基づいて生成された第1認証情報を含んだ情報を受信する通信部と、受信した前記メッセージに基づいて第2認証情報を生成して、受信した前記第1認証情報と生成した前記第2認証情報とを照合し、前記第1認証情報と前記第2認証情報との照合結果が不整合であり、且つ、受信した前記送信識別情報の値が固着状態であるときに、前記他の電子制御装置に異常が発生していると判別する判別部とを備える。
【発明の効果】
【0007】
本発明の1つの態様によれば、電子制御装置におけるメッセージ認証処理で認証エラーが発生した際に、認証エラーが生じた異常の原因を判別できるようになる。
【図面の簡単な説明】
【0008】
図1】制御システムの構成の一例を示す図である。
図2】故障コードの登録及び読み出しの仕組みの一例を示す図である。
図3】CAN通信によりメッセージを受信するソフトウェアプログラムの機能構成の一例を示す図である。
図4】メッセージ認証コードを用いたメッセージ認証機能の仕組みを示す図である。
図5】メッセージの構造及びカウンタの一例を示す図である。
図6】メッセージ認証に基づく異常判別処理の一例を示す図である。
図7】故障コードが登録される不揮発性メモリの領域の一例を示す図である。
図8】メッセージの構造及びカウンタの一例を示す図である。
図9】メッセージのメッセージカウンタ値と固着カウンタの値の対応関係の一例について説明する図である。
図10】メッセージ認証に基づく異常判別処理の一例を示す図である。
図11】異常判別処理の具体例のパターンを示す図である。
図12】メッセージ認証に基づく異常判別処理の一例を示す図である。
図13】故障コードが登録される不揮発性メモリの領域の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しつつ、本発明の実施形態について説明する。なお、本明細書に記載する実施形態によって本発明が限定されるものではなく、異なる実施形態やその変形例は、適宜組み合わせることも可能である。
【0010】
[第1実施形態]
[システム構成]
図1は、本実施形態に係る制御システム1の一例を示す。制御システム1は、ECU(Electronic Control Unit)10及びECU20を備える。
ECU10及びECU20は、自動車等の車両に搭載され、車両の走行等に関連する各種装置の制御を行う。制御システム1は、例えば、制御対象の車載装置の種類により、エンジン制御等のパワートレイン制御系、電動パワーステアリング、ブレーキ制御等の車両制御系、エアバッグや周辺監視等のボディ制御系、ナビゲーションシステムや衛星測位システム(例えば、GPS(Global Positioning System))等の情報系に分類され得る。ECU10及びECU20は、CAN(Controller Area Network)プロトコルを用いて信号を送受信するネットワーク50に接続されている。ネットワーク50は、2線式通信を構成するCAN_H50A及びCAN_L50Bのバスで構成されている。なお、通信方式はCANに限定されるものではなく、例えば、LIN(Local Interconnect Network)、Ethernet(登録商標)、FlexRay等の任意の通信方法を用いることが可能である。
【0011】
本実施形態では、ECU10がメッセージの受信側であり、ECU20がメッセージの送信側(他の電子制御装置)であるものとして説明を行う。なお、本実施形態ではECU10及びECU20のみ例示しているが、制御システム1は、他のECUをさらに備え得る。また、制御システム1には、制御対象となる車載装置やセンサ等が接続されるが、ここでは図示及び説明を省略する。
また、制御システム1には、車両の外部に設置される故障診断機90が、ネットワーク50を介して接続されている。故障診断機90は、ECU10及びECU20において故障(異常)が発生しているか否かを診断したり、異常の原因を診断したりする機能を有する。
【0012】
ECU10は、MCU(Micro Controller Unit)11を備える。MCU11は、プロセッサ12、揮発性メモリ13、不揮発性メモリ14及びCANコントローラ15を備える。プロセッサ12は、不揮発性メモリ14に格納されたソフトウェアプログラムをロードして実行することにより、ECU10が制御対象とする車載装置の制御処理を行う。CANコントローラ15は、送信ポートTx及び受信ポートRxを経由し、CAN_H51及びCAN_L52を介して他のECU20とCANプロトコルによる通信を行うための通信制御処理(ビットスタッフィング、通信調停、エラーハンドリング、CRCチェック等)を行う。なお、揮発性メモリ13及び不揮発性メモリ14が記憶部に相当する。
【0013】
また、ECU10は、通信インタフェースであるCANトランシーバ16を備える。CANトランシーバ16は、バスに送信する電圧の発生や調整、動作電流の確保等を行い、ネットワーク50に接続する機能を提供する。また、CANトランシーバ16は、CAN_H51及びCAN_L52から信号を受信したときには、CAN_H51及びCAN_L52における信号の電圧差に基づき、受信した信号が示すデータの値を識別する。
なお、ECU20もECU10と同様の構成を備えている。ECU20の内部構成の詳細については説明を省略する。
【0014】
[故障コードの登録及び送信の仕組み]
図2は、ECU10において異常が検出された場合に、ECU10において実行される故障コードの登録及び読み出しの仕組みについて示す図である。
MCU11のプロセッサ12(図2では図示省略)は、異常が検知されると、所定の故障コードを、揮発性メモリ13に一時的に記憶した後に、不揮発性メモリ14に登録する(図2のP1)。プロセッサ12は、ネットワーク50に接続された外部の故障診断機90からCAN_L50Bを介して送信された、故障コードを要求するサービスIDを、CANトランシーバ16及びRxポートを介して受信する(P2)。このとき、プロセッサ12は、不揮発性メモリ14に登録された故障コードを読み出す(P3)。そして、プロセッサ12は、CANコントローラ15により、読み出した故障コードをTxポートから出力し、CANトランシーバ16を介してCAN_L33に送信する(P4、P5)。故障診断機90では、このようにしてECU10から送信された故障コードを受信し、当該故障コードに基づいて異常の原因の診断等を行う。
【0015】
[CANメッセージ受信ソフトウェアプログラムの機能構成]
図3は、ECU10においてCAN通信によりメッセージを受信するソフトウェアプログラムの機能構成を示している。当該図3で示される機能構成においては、MCU11のプロセッサ12でソフトウェアプログラムが実行されることによりその機能が実現される、CANドライバ31、デコード部32及び判別部33を含む。
CANドライバ31は、MCU11を直接制御し、Rxポート及びTxポート及びCANコントローラ15によってCANメッセージを送受信する機能を実現する。デコード部32及び判別部33は、受信したメッセージを加工して、メッセージのデータが正常であるかを認証するアプリケーション機能を有する。具体的には、デコード部32は、CANドライバ31で取得したメッセージ内の信号を内部変数へ変換して格納するデコード機能を有する。また、判別部33は、デコードしたメッセージのデータが有する値に異常があるか否かを診断する機能を有する。なお、CANドライバ31及びデコード部32が通信部に相当する。また、本実施形態で説明するメッセージ認証処理に基づく異常判別処理は、判別部33で実現される機能である。
【0016】
[メッセージ認証コード(MAC)によるメッセージ認証の仕組み]
図4は、メッセージ認証コード(以下、MACと表記する)を用いたメッセージ認証機能の仕組みについて説明する図である。
メッセージの送信側であるECU20は、送信するメッセージ41に基づいて認証情報を生成する。具体的には、ECU20は、メッセージ41及び共通鍵42AをMACアルゴリズム(AES:Advanced Encryption Standard)43Aに代入して、MAC44(第1認証情報)を生成する。そして、ECU20は、送信するメッセージ41にMAC44を付与して、メッセージの受信側であるECU10に送信する。
【0017】
一方、メッセージの受信側であるECU10は、受信したメッセージ41に基づいて認証情報を生成する。具体的には、ECU20から受信したメッセージ41と、送信側のECU20において保持されている共通鍵42Aに対応する共通鍵42Bとを、MACアルゴリズム43Bに代入する。これにより、ECU10において認証用MAC45(第2認証情報)が生成される。そして、ECU10は、ECU20から受信したメッセージ41に付与されたMAC44と、生成した認証用MAC45とを照合し、両者の照合結果が整合(一致)していれば、メッセージが正常に送信されたものとして認証する。一方、ECU10は、MAC44と認証用MAC45との照合結果が不整合(不一致)であれば、サイバー攻撃によってECU20になりすまして送信された不正メッセージを受信したものと判別し、受信したメッセージ41を破棄する。この場合、ECU10は、当該不整合が発生した回数、すなわちMAC異常が発生した回数をカウントアップする。ECU10は、MAC異常が連続発生した回数が所定回数を超えると、メッセージ認証異常であると判別する。なお、当該所定回数は任意に設定することが可能である。
【0018】
[メッセージの構造及びカウンタ]
ここで、送信側であるECU20から送信されるメッセージ41の構造等について、図5を参照して説明する。
メッセージの送信側であるECU20では、揮発性メモリ(図示省略)においてメッセージカウンタ201を備えており、ECU20にメッセージを送信するごとに、メッセージカウンタ201をカウントアップする。
そして、ECU20は、メッセージ41にメッセージカウンタ201の値であるメッセージカウンタ値46を含めてECU10に送信する。すなわち、メッセージカウンタ201がカウントアップされているため、メッセージカウンタ値46は、前回送信されたメッセージ41のメッセージカウンタ値46よりもカウントアップされており、前回と異なる値となっている。なお、メッセージカウンタ値46が送信識別情報の一例であり、当該カウントアップされた値がメッセージカウンタ値46に格納されることが、前回の値と異なる値が所定規則に基づいて格納されることの一例である。また、このとき、前述したように、ECU20は、メッセージ41にMAC44を付与して送信する。
なお、ECU10では、揮発性メモリ13において、受信したメッセージのメッセージカウンタ値46につき、前回のメッセージカウンタ値46が識別できるように保持しておく。
【0019】
[メッセージ認証に基づく異常判別処理]
以下、図6を参照しながら、メッセージ認証に基づく異常判別処理の詳細について説明する。図6は、メッセージの受信側であるECU10において、MCU11のプロセッサ12によって実行される処理を示すフローチャートである。当該処理は、ECU10において、ECU20からメッセージを受信したときに実行される。
【0020】
ステップ1(図6においてS1と表記している。以下同様)で、ECU10は、図4で説明したMACによるメッセージ認証の仕組みに基づき、受信したメッセージ41に付与されたMAC44に異常が検出されたか否かを判定する。具体的には、ECU10は、MAC44と、受信したメッセージ41を用いてMACアルゴリズムにより生成した認証用MAC45との照合結果が不整合であるか否かを判定する。MACに異常が検出された場合には、メッセージ認証エラーが発生したものとしてステップ2に進み(Yes)、そうでない場合には、メッセージが正常に送信されたものとして、当該処理を終了する。
【0021】
ステップ2で、ECU10は、受信したメッセージ41のメッセージカウンタ値46が固着状態であるか否かを判定する。具体的には、ECU10は、受信したメッセージ41に含まれる前回のメッセージカウンタ値46を保持しておき、今回受信したメッセージカウンタ値46と前回の値とを比較する。そして、前回の値と今回の値とが同じであれば、メッセージカウンタ値46が固着状態であるものと判定する。メッセージカウンタ値46が固着状態である場合には、ステップ3に進み(Yes)、固着状態でない場合には、ステップ4に進む(No)。
【0022】
ステップ3で、ECU10は、メッセージの送信側であるECU20において異常が発生していると判別し、ECU20の異常を示す故障コード(DTC:Diagnostic Trouble Code)を登録する。具体的には、ECU10は、図2で説明したように、当該故障コードを、揮発性メモリ13に一時的に記憶した後に、不揮発性メモリ14に登録する。
ステップ4で、ECU10は、外部からサイバー攻撃を受けたことにより、ECU20になりすまして送信された不正メッセージを受信したものと判別し、サイバー攻撃を受けたことを示す故障コードを登録する。具体的には、ECU10は、ステップ7と同様に、当該故障コードを、揮発性メモリ13に一時的に記憶した後に、不揮発性メモリ14に登録する。
【0023】
なお、図7は、ステップ3及びステップ4で故障コードが登録される不揮発性メモリ14の領域を示している。不揮発性メモリ14は、外部に接続された故障診断機90から故障コードを要求するサービスIDを受信したときに故障診断機90に送信される故障コードが登録される領域141を備えている。ECU10では、異常を検出するごとに、当該領域141に故障コード(図7では故障コード1411として示している)を登録する。
【0024】
[第1実施形態による効果等]
以上説明した本実施形態によれば、メッセージ認証において異常が検出されたときに、その原因がメッセージの送信側のECU20における異常であるのか、外部からのサイバー攻撃が原因であるのかを判別することができる。
【0025】
また、ECU10では、これらの原因を区別した故障コードを不揮発性メモリ14に登録しておき、外部に接続された故障診断機90から故障コードを要求するサービスIDを受信したときに、これらの原因を区別した故障コードを故障診断機90に対して送信する。これにより、故障診断機90では、故障原因を故障コードに基づいて特定する際に、サイバー攻撃とメッセージの送信側のECU20の異常とを誤判断するリスクを低減することが可能となる。また、このような異常発生時の原因調査の時間の短縮に繋がり、調査効率の向上の効果を得ることが可能となる。したがって、異常発生の原因に対して速やかに対処することが可能となる。但し、このような故障コードの登録及び送信は、少なくとも本発明の技術的思想を実現するにあたり必須の構成ではない。
【0026】
また、本実施形態では、送信識別情報の一例として、メッセージカウンタ値46に、ECU20においてメッセージが送信されるごとにカウントアップされるメッセージカウンタ201の値が格納されており、これに基づいて固着状態を判別している。しかし、このようなカウントアップされた値に限らず、少なくとも前回の値と異なる値であることが識別できれば、任意のデータとすることができる。
【0027】
[第2実施形態]
次に、第2実施形態について説明する。第2実施形態は、メッセージ認証において異常が検出されたときに、異常の原因がメッセージの送信側のECU20における異常であるのか、外部からのサイバー攻撃が原因であるのかの判別の精度をさらに向上させるものである。以下、主として第1実施形態と異なる点についてのみ説明を行う。
【0028】
[メッセージの構造とカウンタ]
図8は、第2実施形態において送信側であるECU20から送信されるメッセージ41の構造、並びに、メッセージの送信側であるECU20及び受信側であるECU10が備えるカウンタについて示している。
メッセージの送信側であるECU20では、第1実施形態と同様に、揮発性メモリ(図示省略)においてメッセージカウンタ201を備えており、ECU20にメッセージを送信するごとに、メッセージカウンタ201をカウントアップする。
そして、ECU20は、メッセージ41にメッセージカウンタ201の値であるメッセージカウンタ値46を含めて、ECU10に送信する。このとき、ECU20は、メッセージ41にMAC44を付与して送信する。
【0029】
一方、メッセージの受信側であるECU10では、揮発性メモリ13において、MAC異常カウンタ101を備える。MAC異常カウンタ101は、MAC異常が検出されるごとにカウントアップされるカウンタである。また、ECU10では、さらに固着カウンタ102を備える。この固着カウンタ102は、受信したメッセージ41に含まれるメッセージカウンタ値46の値が固着状態であることが検出されたときにカウントアップされるカウンタである。図9は、受信メッセージのメッセージカウンタ値46(すなわち、ECU20のメッセージカウンタ201のカウンタ値)とECU10の固着カウンタ102のカウンタ値の対応関係について示している。図9(A)に示すように、メッセージカウンタ201のメッセージカウンタ値46が正常にカウントアップされているときには、ECU10は、固着カウンタ102をカウントアップしない。一方で、図9(B)に示すように、例えばECU20において何らかの異常が発生しており、メッセージカウンタ値46が固着状態であるときには、ECU10は、固着状態を検出するごとに、固着カウンタ102をカウントアップする。例えば、ECU20において、本来送信されるはずのメッセージが送信されずに同じメッセージを毎回送信してしまう状態に陥った場合に、当該メッセージカウンタ値46がカウントアップされずに固着した値が送信されることがある。また、ECU20のメモリ領域の固着等により、メッセージカウンタ201が正常にカウントアップされない場合等も考え得る。
【0030】
なお、MAC異常カウンタ101が認証異常識別情報の一例であり、MAC異常が検出されるごとにカウントアップされることが、第1認証情報と第2認証情報との照合結果が不整合であることを示す値が所定規則に基づいて格納されることの一例である。また、固着カウンタ102が固着識別情報の一例であり、受信したメッセージ41に含まれるメッセージカウンタ値46の値が固着状態であることが検出されたときにカウントアップされることが、送信識別情報の値が固着状態であることを示す値が所定規則に基づいて格納されることの一例である。
【0031】
[メッセージ認証に基づく異常判別処理]
以下、図10を参照しながら、第2実施形態における、メッセージ認証に基づく異常判別処理の詳細について説明する。図10は、メッセージの受信側であるECU10が備えるMCU11のプロセッサ12で実行される処理を示すフローチャートである。当該処理は、ECU10において、ECU20からメッセージを受信したときに実行される。
【0032】
ステップ11で、ECU10は、受信したメッセージ41に付与されたMAC44に異常が検出されたか否かを判定する。具体的には、ECU10は、MAC44と、受信したメッセージ41を用いてMACアルゴリズムにより生成した認証用MAC45との照合結果が不整合であるか否かを判定する。MACに異常が検出された場合には、メッセージ認証エラーが発生したものとしてステップ12に進み(Yes)、そうでない場合には、メッセージが正常に送信されたものとして、MAC異常カウンタ101及び固着カウンタ102の値をリセットし、当該処理を終了する。
ステップ12で、ECU10は、MAC異常カウンタ101のカウンタ値を1インクリメントする。これにより、MAC異常カウンタ101がカウントアップされる。
【0033】
ステップ13で、ECU10は、受信したメッセージ41のメッセージカウンタ値46が固着状態であるか否かを判定する。具体的には、ECU10は、受信したメッセージ41に含まれる前回のメッセージカウンタ値46を保持しておき、今回受信したメッセージカウンタ値46と前回の値とを比較する。そして、前回の値と今回の値とが変化していなければ、メッセージカウンタ値46が固着状態であるものと判定する。メッセージカウンタ値46が固着状態である場合には、ステップ14に進み(Yes)、固着状態でない場合には、ステップ15に進む(No)。
ステップ4で、ECU10は、固着カウンタ102のカウンタ値を1インクリメントする。これにより、固着カウンタ102がカウントアップされる。
【0034】
ステップ15で、ECU10は、MAC異常カウンタ101のカウンタ値が所定値以上であるか否かを判定する。換言すれば、ECU10は、MAC異常が所定回数以上検出されたか否かを判定する。なお、当該処理を行う主たる目的は、ごく一時的な通信障害等に起因するMAC異常によって故障コードを登録してしまうことを防ぐためであり、少なくとも本実施形態において本発明を実施するにあたり必須ではない。また、当該所定回数は任意に設定することが可能である。MAC異常が所定回数以上検出された場合には、ステップ6に進み(Yes)、そうでない場合には、当該処理を終了する。
【0035】
ステップ16で、ECU10は、MAC異常カウンタ101のカウンタ値と、固着カウンタ102のカウンタ値とが対応関係にあるか否かを判定する。ここでいう対応関係とは、例えば、MAC異常カウンタ101のカウンタ値と固着カウンタ102のカウンタ値が同じ期間にカウントアップされている(同様に推移している)関係である。このとき、例えば、両カウンタ値が一致している場合には対応関係があるものとして判別することができる。また、カウンタ値が一致している場合に限らず、例えば、両カウンタ値が一定の差を維持したまま推移するなど、カウンタ値自体は異なっていても、同じ期間に同様の規則性で推移していれば、対応関係があるものと判別することが可能である。両カウンタ値が対応関係にある場合にはステップ17に進み(Yes)、対応関係にない場合にはステップ18に進む(No)。
【0036】
ステップ17で、ECU10は、メッセージの送信側であるECU20において異常が発生していると判別し、ECU20の異常を示す故障コードを登録する。具体的には、ECU10は、当該故障コードを、揮発性メモリ13に一時的に記憶した後に、不揮発性メモリ14に登録する。
ステップ18で、ECU10は、外部からサイバー攻撃を受けたことにより、ECU20になりすまして送信された不正メッセージを受信したものと判別し、サイバー攻撃を受けたことを示す故障コードを登録する。具体的には、ECU10は、ステップ17と同様に、当該故障コードを、揮発性メモリ13に一時的に記憶した後に、不揮発性メモリ14に登録する。なお、ステップ17及びステップ18で故障コードが登録される不揮発性メモリ14の領域については、図7に示した第1実施形態の領域と同様である。
【0037】
ここで、ステップ16~18における、異常の原因を判別する処理について、図11に示す具体例のパターンを参照して説明する。図11(A)及び図11(B)には、それぞれ、MAC異常カウンタ101、受信したメッセージに含まれるメッセージカウンタ値46、固着カウンタ102の値の推移が示されている。破線で描かれている縦線は、メッセージを受信したタイミング(n回目、n+1回目、n+2回目、n+3回目)を示している。なお、本説明においては、説明の便宜上、MAC異常が1回検出されればメッセージ認証異常の原因を判別するものとして説明を行う。
【0038】
図11(A)に示す具体例では、n+1回目以降に、MAC異常カウンタ101の値が1ずつカウントアップされている。すなわち、ECU10においてn+1回目以降に受信したメッセージにおいて、メッセージ認証エラーが発生している状況である。このとき、受信したメッセージ41に含まれるメッセージカウンタ値46が、メッセージのn+1回目の受信以降、n回目と同じ1のまま固着している。この場合、固着カウンタ102は、n回目とn+1回目におけるメッセージカウンタ値46が同じであるため、n+1回目以降、固着カウンタ102を1ずつカウントアップする。ここで、MAC異常カウンタ101と固着カウンタ102とを照合すると、n+1回目以降、同様に1ずつカウントアップされており、そのカウンタ値の推移(変化)に対応関係がある。すなわち、この具体例においては、MAC異常とメッセージカウンタ値46の固着が同時に起きている。この場合、メッセージの送信側であるECU20において何らかの異常が発生している可能性が高い。このため、当該具体例においては、ECU10は、サイバー攻撃ではなくメッセージの送信側であるECU20において異常が発生していると判別し、ECU20の異常を示す故障コードを登録する。
【0039】
一方、図11(B)に示す具体例では、n回目以降に、MAC異常カウンタ101の値が1ずつカウントアップされている。すなわち、ECU10においてn回目以降に受信したメッセージにおいて、メッセージ認証エラーが発生している状況である。一方、受信したメッセージ41に含まれるメッセージカウンタ値46が、n回目は3であり、n+1回目では1になり、n+2回目も同じく1であり、n+3回目では4となっている。この場合、ECU10は、n回目とn+1回目におけるメッセージカウンタ値46が異なるため、固着カウンタ102をカウントアップしない。一方、n+1回目とn+2回目におけるメッセージカウンタ値46が同じであるため、n+2回目で固着カウンタ102を1カウントアップする。そして、n+2回目とn+3回目ではメッセージカウンタ値46が異なるため、固着カウンタ102をカウントアップしない。ここで、MAC異常カウンタ101と固着カウンタ102とを照合すると、カウント値が増えるタイミングが必ずしも一致しておらず、カウンタ値の推移(変化)に対応関係がない。すなわち、この具体例においては、MAC異常が起きているときに、メッセージカウンタ値46の固着が併せて起きているわけではない。この場合、メッセージカウンタ値46には、規則性のない値がランダムに入っていると考えられ、メッセージの送信側であるECU20の状態とは無関係に何らかの異常が発生している可能性が高い。このため、当該具体例においては、ECU10は、サイバー攻撃を受けたことにより異常が発生していると判別し、サイバー攻撃を受けたことを示す故障コードを登録する。
【0040】
[第2実施形態による効果等]
以上説明した第2実施形態によれば、まず、第1実施形態と同様に、メッセージ認証において異常が検出されたときに、その原因がメッセージの送信側のECU20における異常であるのか、外部からのサイバー攻撃が原因であるのかを判別することができる。そして、MAC異常カウンタ101のカウンタ値と固着カウンタ102のカウンタ値との対応関係に基づいて原因を判別することにより、少なくとも、メッセージ認証エラーがECU20の異常によるものであることを特定しやすくなり、原因の判別精度がより向上する。
【0041】
なお、本実施形態では、認証異常識別情報の一例として、MAC異常が検出されるごとにカウントアップされるMAC異常カウンタ101を用いている。しかし、このようなカウンタ値に限らず、少なくともMAC異常が連続して発生している状況が識別できるデータであれば、任意のデータとすることができる。例えば、認証異常識別情報として、MAC異常の発生状況を示す履歴情報を格納するようにしてもよい。また、本実施形態では、固着識別情報の一例として固着カウンタ102を用いている。しかし、このようなカウンタ値に限らず、少なくとも固着状態が連続して発生している状況が識別できるデータであれば、任意のデータとすることができる。例えば、固着識別情報として、固着状態の発生状況を示す履歴情報を格納するようにしてもよい。これらの履歴情報同士の対応関係によっても、MAC異常と固着状態とが同じ期間に発生していることを識別することができる。
【0042】
なお、前述した異常判別処理において、MAC異常カウンタ101のカウンタ値と、固着カウンタ102のカウンタ値とが対応関係にあるか否かを判定する基準とする期間の長さ(すなわち、何回分のカウントで判定するか)は任意である。より長い期間のカウンタ値に基づいて対応関係の有無を判定するほうが、判定の精度は向上すると考えられる。また一方で、短い期間のカウンタ値に基づいて対応関係の有無を判定すれば、精度の面では劣るものの、異常の原因の判別をより速やかに行うことができる。
【0043】
ここで、サイバー攻撃によって送信されたメッセージの場合、受信したメッセージ41のメッセージカウンタ値46に該当する範囲に、メッセージカウンタ201の値とはなり得ない異常な値が固着して入っている可能性もある。このため、前述した対応関係が存在する場合でも、メッセージカウンタ値46の値がメッセージカウンタ201のカウンタ値となり得る範囲内の値でない場合には、サイバー攻撃を受けていると判別するようにしてもよい。また、このようにメッセージカウンタ値46に異常な値が固着して入っている場合には、固着カウンタ102のカウントアップ自体を行わないようにしてもよい。
【0044】
また、前述した異常判別処理においては、MAC異常が所定回数以上検出されたことを条件として、MAC異常カウンタ101のカウンタ値と、固着カウンタ102のカウンタ値とが対応関係にあるか否かを判定している。これに加えて、メッセージカウンタ値46の値が固着状態である回数が所定回数以上になったことを、当該対応関係の有無を判定するためのさらなる条件としてもよい。なお、当該所定回数は任意に設定することが可能である。これにより、MAC異常と同様に、ごく一時的な通信障害等に起因してメッセージカウンタ値46の値に異常が発生しているときにまで故障コードを登録してしまうことを防ぐことができる。
【0045】
[第3実施形態]
次に、第3実施形態について説明する。第3実施形態では、不揮発性メモリに対する故障コードの格納方法が第1実施形態及び第2実施形態と異なる。第1実施形態の異常判別処理では、図7を参照して説明したように、ECU20の異常を示す故障コードを、異常が発生するごとに不揮発性メモリ14の領域141に登録している。しかし、例えば、当該異常が何度も発生して検出された場合等に、故障コードが多数登録されてしまう可能性がある。一方で、故障診断機90で読み出せる故障コードの数には限りがある。このため、このように多数の故障コードが登録された場合、故障診断機90側で読み取れないものが発生し、異常の原因の解析処理に支障が出てしまう可能性がある。第3実施形態では、このような課題を解決するための構成を有する。以下、第1実施形態及び第2実施形態と異なる点についてのみ説明を行う。
【0046】
図12は、第3実施形態における、メッセージ認証に基づく異常判別処理を示すフローチャートである。ステップ21~ステップ26は、図10で示した第2実施形態の異常判別処理におけるステップ21~26と同様であるため、説明を省略する。また、図13は、第2実施形態において故障コードを書き込む不揮発性メモリ14の領域を示している。
ステップ27で、ECU10は、メッセージの送信側であるECU20において異常が発生していると判別し、ECU20の異常を示す故障コードを不揮発性メモリ14の領域141に登録する(図13では故障コード1411として示している)。当該領域141は、故障診断機90から故障コードを要求する通常のサービスIDを受信したときに、故障診断機90に対して送信する故障コードを格納する領域である。ここで、ECU10は、故障コードの登録が冗長になり得る場合、例えば、故障コードが前回に登録した故障コードと同じ場合等には、当該故障コードを領域141にさらに登録することを回避する。
ステップ28で、ECU10は、故障コードの詳細情報を、不揮発性メモリ14のうち、ステップ27で故障コードを登録した141領域と異なる領域142に登録する(図13では故障コード1421として示している)。具体的には、ECU10は、ステップ27と異なり、前回の故障コードと同じ故障コードであった場合にも、当該別領域には毎回故障コードの登録を行う。このときECU10は、単に故障コードを示す情報だけではなく、異常の原因に関するさらに詳細な情報を領域142に登録してもよい。
【0047】
ステップ29で、ECU10は、外部からサイバー攻撃を受けたものと判別し、サイバー攻撃を受けたことを示す故障コードを不揮発性メモリ14の領域141に登録する(図13では故障コード1411として示している)。ここで、ステップ17と同様に、ECU10は、故障コードの登録が冗長になり得る場合、例えば、故障コードが前回に登録した故障コードと同じ場合には、当該故障コードを領域141にさらに登録することを回避する。
ステップ30で、ECU10は、故障コードの詳細情報を、不揮発性メモリ14のうち、ステップ17で故障コードを登録した141領域と異なる領域142に登録する(図13では故障コード1412として示している)。具体的には、ECU10は、ステップ28と同様に、前回の故障コードと同じ故障コードであった場合にも、当該別領域には毎回故障コードの登録を行う。このときECU10では、単に故障コードを示す情報だけではなく、異常の原因に関するさらに詳細な情報を領域142に登録してもよい。
【0048】
[第3実施形態による効果等]
かかる第3実施形態によれば、同じ原因の異常が連続して発生した場合、その原因及びその発生回数に関わらず、不揮発性メモリ14の領域141には、1つの故障コードが登録される。このため、故障診断機90から故障コードを要求する通常のサービスIDを受信したときに、故障診断機90に対しては、領域141に登録された少数の故障コードのみが送信されることとなる。したがって、故障診断機90側で読み取れない故障コードが発生して原因の解析処理に支障が出てしまうリスクを低減することができる。
また一方で、当該領域141と異なる領域142においては、詳細情報として、異常が発生するごとに故障コードが登録される。このため、例えば、故障診断機90からこの詳細情報を要求するサービスIDを受信したときには、領域142に登録された全ての故障コードを含む詳細情報を送信することができる。したがって、故障診断機90は、必要に応じて全ての異常について登録された故障コードの情報を読み出すことも可能である。
【0049】
[その他]
以上に説明した本発明の実施形態は、本発明の技術的範囲で考え得る実施態様の一部に過ぎず、本発明の例示として開示されるものであって、本発明の技術的範囲を制限するものではない。また、各実施形態における機能的構成及び物理的構成は、前述の態様に限定されるものではなく、例えば、各機能や物理的資源を統合して実装したり、逆に、さらに分散して実装したり、さらには、構成の一部について他の構成の追加、削除、置換等をすることも可能である。
【符号の説明】
【0050】
1…制御システム、10…ECU、11…MCU、12…プロセッサ、13…揮発性メモリ、14…不揮発性メモリ、15…CANコントローラ、16…CANトランシーバ、101…MAC異常カウンタ、102…固着カウンタ、20…ECU、201…メッセージカウンタ、41…メッセージ、44…MAC、46…メッセージカウンタ値、90…故障診断機
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13