【文献】
上田 浩史 ほか,車載ネットワークのセキュリティ監視システム ,SEIテクニカルレビュー,日本,住友電気工業株式会社,2015年 7月31日,No.187,p.1−5
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、図面を参照し、本発明の実施形態について説明する。なお、以下に示す実施形態では、車両として自動車を例に挙げて説明する。また、通信ネットワークシステムの一態様として、自動車に搭載される通信ネットワークシステムを例に挙げて説明する。
【0014】
図1は、本実施形態に係る通信ネットワークシステム10の構成例を示す図である。通信ネットワークシステム10は自動車に搭載されている。
図1において、通信ネットワークシステム10は、複数のECU(電子制御装置)1,2とCAN3とを有する。ECU1,2は、CAN3に接続されている。ECU1,2は、CPU(Central Processing Unit:中央演算処理装置)及びメモリ等から構成される。ECU1,2はコンピュータの一種である。ECU1,2のCPUが該ECU1,2の機能を実現させるためのコンピュータプログラムを実行することによって、該ECU1,2の機能が実現される。例えば、ECU1,2は、自動車内の機器を制御する制御機能を有する。ECU1,2は、例えば、駆動系ECU、車体系ECU、安全制御系ECUなどである。
【0015】
本実施形態では、説明の便宜上、通信ネットワークシステム10は4台のECU1,2を備えるものとし、該4台のECU1,2がCAN3に接続されている。CAN3は、各ECU1,2の間で交換されるメッセージを伝送する。各ECU1,2は、CAN3を介して、相互にメッセージを送受する。CAN3では、所定のフレーム形式でメッセージの伝送が行われる。ECU1,2は、CANに接続するノード(通信装置)として機能する。本実施形態では、ECU1,2は、メッセージを送信する送信ノードの機能と該メッセージを受信する受信ノードの機能とを有する。
【0016】
図1中に示されるように、4台の各ECU1,2には、CANの識別子(ID)として、ID10、ID11、ID12、ID13がそれぞれ付与されている。ID10が付与されているECU1を第1ECU1と称する。ID11、ID12、ID13が各々付与されているECU2を第2ECU2と称する。
【0017】
図2は、本実施形態に係る第1ECU1の構成例を示す図である。
図2において、第1ECU1は、送信部111と受信部112とフレーム受信処理部113とMAC(メッセージ認証コード)生成部114とカウンタ部115とMAC検査部116とセッション鍵記憶部117と切替部118とカウンタ制御部119とカウンタ値生成部120と暗号化部121とを備える。
【0018】
送信部111は、CAN3の所定のフレーム形式のメッセージをCAN3に送信する。受信部112は、該所定のフレーム形式のメッセージをCAN3から受信する。CAN3の所定のフレーム形式のフレームの種類の一つとして、データフレームがある。送信部111は、データフレームをCAN3に送信する。受信部112は、データフレームをCAN3から受信する。
【0019】
送信部111には、データフレームのデータフィールド(Data Field:データ部)に格納するデータが切替部118から入力される。送信部111には、切替部118から、送信データ又は暗号化カウンタ値が入力される。暗号化カウンタ値は、カウンタ値を暗号化したデータである。送信部111は、切替部118から入力されたデータをデータフレーム中のデータフィールドに格納する。データフレームのデータフィールドに格納可能なデータ長の上限は64ビット(bit)である。フレーム受信処理部113は、受信部112がCAN3から受信したデータフレームについての受信処理を行う。
【0020】
MAC生成部114は、データフレーム中のデータフィールドに格納されるデータ等を使用してMACを生成する。MAC生成部114は、生成したMACを送信部111へ出力する。送信部111は、MAC生成部114から受け取ったMACをデータフレーム中の所定の部分に格納する。
【0021】
カウンタ部115は、送信カウンタ部として機能する。カウンタ部115は、送信カウンタ部の機能として、送信部111によるデータフレームの送信毎に所定のカウント値だけ増加させるカウンタ値を保持する。本実施形態では、一例として、該所定のカウント値は1である。したがって、カウンタ部115は、送信部111が一つのデータフレームをCAN3に送信する毎に1だけ増加させるカウンタ値を保持する。このカウンタ値は、自第1ECU1が一つのデータフレームをCAN3に送信する毎に1ずつ増やされる。本実施形態では、一例として、カウンタ部115が保持するカウント値のデータ長は32ビットである。
【0022】
MAC検査部116は、受信部112がCAN3から受信したデータフレームに格納されているMACについての検査を行う。セッション鍵記憶部117は、セッション鍵を記憶する。該セッション鍵は、第1ECU1及び第2ECU2で事前に共有されている。切替部118には送信データが入力される。また、切替部118には、カウンタ制御部119から暗号化カウンタ値が入力される。切替部118は、送信部111へ出力するデータを、送信データにするか又は暗号化カウンタ値にするかを切り替える。
【0023】
カウンタ値生成部120は、カウンタ値を生成する。例えば、カウンタ値生成部120は、乱数を発生し、該乱数に基づいてカウンタ値を生成する。カウンタ値生成部120が生成するカウンタ値のビット列の下位の所定ビット数分を0にしてもよい。カウンタ制御部119は、カウンタ値についての制御を行う。暗号化部121は、セッション鍵記憶部117に格納されているセッション鍵を使用してカウンタ値を暗号化する。
【0024】
カウンタ制御部119は、カウンタ値生成部120が生成したカウンタ値を暗号化部121へ出力する。暗号化部121は、カウンタ制御部119から受け取ったカウンタ値を、セッション鍵で暗号化する。暗号化部121は、該暗号化したカウンタ値である暗号化カウンタ値をカウンタ制御部119へ出力する。カウンタ制御部119は、暗号化部121から受け取った暗号化カウンタ値を切替部118へ出力する。切替部118は、カウンタ制御部119から暗号化カウンタ値を受け取ると、該暗号化カウンタ値を送信部111へ出力する。本実施形態では、一例として、暗号化カウンタ値は32ビットである。
【0025】
また、カウンタ制御部119は、暗号化カウンタ値の暗号化前の元のカウンタ値をカウンタ部115へ出力する。カウンタ部115は、カウンタ制御部119から受け取ったカウンタ値を、既に保持しているカウンタ値に代えて保持する。つまり、カウンタ値生成部120が生成したカウンタ値が、新しいカウンタ値としてカウンタ部115で保持される。このカウンタ部115で保持される新しいカウンタ値は、暗号化カウンタ値として、カウンタ制御部119から切替部118を介して送信部111に入力されて、データフレーム中の所定の部分に格納される。
【0026】
図3は、本実施形態に係る第2ECU2の構成例を示す図である。
図3において、第2ECU2は、送信部211と受信部212とフレーム受信処理部213とMAC生成部214とカウンタ部215とMAC検査部216とセッション鍵記憶部217とカウンタ設定部220と復号部221とを備える。
【0027】
送信部211は、CAN3の所定のフレーム形式のメッセージをCAN3に送信する。受信部212は、該所定のフレーム形式のメッセージをCAN3から受信する。送信部211は、データフレームをCAN3に送信する。受信部212は、データフレームをCAN3から受信する。
【0028】
送信部211には、データフレームのデータフィールドに格納する送信データが入力される。送信部211は、入力された送信データをデータフレーム中のデータフィールドに格納する。フレーム受信処理部213は、受信部212がCAN3から受信したデータフレームについての受信処理を行う。
【0029】
MAC生成部214は、データフレーム中のデータフィールドに格納される送信データ等を使用してMACを生成する。MAC生成部214は、生成したMACを送信部211へ出力する。送信部211は、MAC生成部214から受け取ったMACをデータフレーム中の所定の部分に格納する。
【0030】
カウンタ部215は、送信カウンタ部として機能する。カウンタ部215は、送信カウンタ部の機能として、送信部211によるデータフレームの送信毎に所定のカウント値だけ増加させるカウンタ値を保持する。該所定のカウント値は、第1ECU1のカウンタ部115と同じである。本実施形態では、該所定のカウント値は1である。したがって、カウンタ部215は、送信部211が一つのデータフレームをCAN3に送信する毎に1だけ増加させるカウンタ値を保持する。このカウンタ値は、自第2ECU2が一つのデータフレームをCAN3に送信する毎に1ずつ増やされる。第2ECU2のカウンタ部215が保持するカウント値のデータ長は、第1ECU1のカウンタ部115が保持するカウント値のデータ長と同じである。本実施形態では、カウンタ部215が保持するカウント値のデータ長は32ビットである。
【0031】
MAC検査部216は、受信部212がCAN3から受信したデータフレームに格納されているMACについての検査を行う。セッション鍵記憶部217は、セッション鍵を記憶する。該セッション鍵は、第1ECU1及び第2ECU2で事前に共有されている。
【0032】
カウンタ設定部220は、カウンタ部215にカウンタ値を設定する。復号部221は、受信部212がCAN3から受信したデータフレームのデータフィールドに格納されている暗号化カウンタ値を復号する。復号部221は、暗号化カウンタ値の復号結果の復号データをカウンタ設定部220へ出力する。暗号化カウンタ値の復号結果の復号データは、カウンタ設定部220によってカウンタ部215のカウンタ値の設定に使用される。
【0033】
なお、MACの生成方法及び検査方法は、第1ECU1及び第2ECU2で共通である。また、該MACは、CMAC(Cipher-based Message Authentication Code)であってもよく、又は、HMAC(Hash-based Message Authentication Code)であってもよい。
【0034】
図4及び
図5は、本実施形態に係るデータフレームのデータフィールドの構成例を示す図である。
【0035】
[カウンタ値を通知するデータフレームのデータフィールドの構成例]
図4には、カウンタ値を通知するデータフレームのデータフィールドの構成例が示される。カウンタ値を通知するデータフレームのことをカウンタ値通知フレームと称する。
図4を参照して、カウンタ値通知フレームについて説明する。
【0036】
カウンタ値通知フレームは、第1ECU1からCAN3へ送信される。第1ECU1は、CAN3を介して、ID11、ID12及びID13の各第2ECU2へ、カウンタ値通知フレームを送信する。第1ECU1は、カウンタ値通知フレームをブロードキャストで送信してもよい。ブロードキャストで送信されたカウンタ値通知フレームは、CAN3を介して、ID11、ID12及びID13の各第2ECU2で受信される。
【0037】
カウンタ値通知フレームのデータフィールドには、32ビットの暗号化カウンタ値と、32ビットのMACとが格納される。第1ECU1の送信部111は、切替部118から受け取った暗号化カウンタ値と、MAC生成部114から受け取ったMACとをカウンタ値通知フレームのデータフィールドに格納する。なお、データフィールドに格納されるMACは、MAC生成部114が生成したMACのビット列のうち所定の一部分のみであってもよい。例えば、MAC生成部114が生成した256ビットのMACのビット列のうち所定の32ビットの部分のみをデータフィールドに格納してもよい。
【0038】
(第1ECU1のカウンタ値通知フレームの生成方法)
第1ECU1のカウンタ値通知フレームの生成方法を説明する。カウンタ制御部119は、カウンタ値生成部120が生成したカウンタ値についての暗号化カウンタ値を、切替部118を介して送信部111へ渡す。カウンタ制御部119は、該暗号化カウンタ値の暗号化前の元のカウンタ値をカウンタ部115へ出力する。カウンタ部115は、該カウンタ制御部119から受け取ったカウンタ値を、既に保持しているカウンタ値に代えて保持する。MAC生成部114は、セッション鍵記憶部117に格納されているセッション鍵を使用して、該カウンタ部115に保持された新しいカウンタ値のMACを生成する。MAC生成部114は、該生成したMACを送信部111へ出力する。
【0039】
送信部111は、カウンタ制御部119から切替部118を介して受け取った暗号化カウンタ値と、MAC生成部114から受け取ったMACとを、
図4に例示されるように、カウンタ値通知フレームのデータフィールドに格納する。一つのカウンタ値通知フレームのデータフィールドに格納される暗号化カウンタ値とMACとは、同じカウンタ値を使用して生成されている。カウンタ値通知フレームにおいてデータフィールド以外の部分については、CANのデータフレームの所定のフレーム形式を適用する。送信部111は、カウンタ値通知フレームをCAN3に送信する。
【0040】
なお、カウンタ値生成部120が生成するカウンタ値のビット列の下位の所定ビット数分を0にしてもよい。具体的には、カウンタ値生成部120が生成するカウンタ値のビット列のうち、
図5に例示されるデータフレームのデータフィールドに格納されるカウンタ値の下位のビット数分(
図5の例では下位6ビット)を0にしてもよい。
【0041】
(第2ECU2のカウンタ値通知フレームの受信処理方法)
第2ECU2のカウンタ値通知フレームの受信処理方法を説明する。受信部212は、カウンタ値通知フレームをCAN3から受信する。復号部221は、受信部212が受信したカウンタ値通知フレームのデータフィールドに格納されている暗号化カウンタ値を復号する。この暗号化カウンタ値の復号結果のデータを復号カウンタ値と称する。復号部221は、復号カウンタ値をMAC検査部216とカウンタ設定部220とへ出力する。
【0042】
MAC検査部216は、受信部212が受信したカウンタ値通知フレームのデータフィールドに格納されているMACを検査する。このカウンタ値通知フレームのMACの検査方法を説明する。MAC検査部216は、復号部221から復号カウンタ値を受け取る。MAC検査部216は、セッション鍵記憶部217に格納されているセッション鍵を使用して、該復号カウンタ値のMACを生成する。この復号カウンタ値のMACを復号カウンタ値MACと称する。MAC検査部216は、該復号カウンタ値MACと、受信部212が受信したカウンタ値通知フレームのデータフィールドに格納されているMACとを比較する。この比較の結果、両者が一致する場合にはMAC検査が合格であり、両者が不一致である場合にはMAC検査が不合格である。
【0043】
なお、データフィールドに格納されるMACが、MAC生成部114が生成したMACのビット列のうち所定の一部分のみである場合には、MAC検査部216は、復号カウンタ値MACのビット列のうち所定の一部分のみをMAC検査に使用する。例えば、データフィールドに格納されるMACが、MAC生成部114が生成した256ビットのMACのビット列のうち所定の32ビットの部分のみである場合には、MAC検査部216は、復号カウンタ値MACのビット列のうち所定の32ビットの部分のみをMAC検査に使用する。
【0044】
MAC検査が合格である場合には、MAC検査部216は、カウンタ設定部220へ、MAC検査の合格を通知する。カウンタ設定部220は、MAC検査部216からMAC検査の合格を通知されると、復号部221から受け取った復号カウンタ値をカウンタ部215へ出力する。カウンタ部215は、該カウンタ設定部220から受け取った復号カウンタ値を、既に保持しているカウンタ値に代えて保持する。
【0045】
一方、MAC検査が不合格である場合には、MAC検査部216は、カウンタ設定部220へ、MAC検査の不合格を通知する。カウンタ設定部220は、MAC検査部216からMAC検査の不合格を通知された場合には、復号部221から受け取った復号カウンタ値を破棄する。つまり、カウンタ設定部220は、MAC検査部216からMAC検査の不合格を通知された場合には、復号部221から受け取った復号カウンタ値をカウンタ部215へ出力しない。よって、カウンタ部215は、既に保持しているカウンタ値をそのまま保持する。
【0046】
上述のカウンタ値通知フレームによって、第1ECU1から各第2ECU2へ、同じカウンタ値が通知される。これにより、第1ECU1及び第2ECU2が保持するカウンタ値が一致することになる。
【0047】
なお、ある第2ECU2においてカウンタ値通知フレームのMAC検査が不合格になった場合には、該第2ECU2は、該MAC検査の不合格を第1ECU1へ通知してもよい。第1ECU1は、第2ECU2からカウンタ値通知フレームのMAC検査が不合格を通知された場合には、再度、カウンタ値通知フレームを各第2ECU2へ送信してもよい。該カウンタ値通知フレームは、前回と同じカウンタ値を通知するカウンタ値通知フレームであってもよく、又は、前回とは異なる新たなカウンタ値を通知するカウンタ値通知フレームであってもよい。
【0048】
[送信データを伝送するデータフレームのデータフィールドの構成例]
図5には、送信データを伝送するデータフレームのデータフィールドの構成例が示される。送信データを伝送するデータフレームのことを送信データ伝送フレームと称する。
図5を参照して、送信データ伝送フレームについて説明する。
【0049】
第1ECU1は、送信データ伝送フレームをCAN3へ送信する。第1ECU1は、送信データ伝送フレームをCAN3から受信する。第2ECU2は、送信データ伝送フレームをCAN3へ送信する。第2ECU2は、送信データ伝送フレームをCAN3から受信する。
【0050】
送信データ伝送フレームのデータフィールドには、最大26ビットの送信データと、カウンタ値の下位6ビットのビット列と、32ビットのMACとが格納される。第1ECU1の送信部111は、切替部118から受け取った送信データと、カウンタ部115が保持しているカウンタ値の下位6ビットのビット列と、MAC生成部114から受け取ったMACとを送信データ伝送フレームのデータフィールドに格納する。第2ECU2の送信部211は、入力された送信データと、カウンタ部215が保持しているカウンタ値の下位6ビットのビット列と、MAC生成部214から受け取ったMACとを送信データ伝送フレームのデータフィールドに格納する。
【0051】
なお、データフィールドに格納されるMACは、MAC生成部114,214が生成したMACのビット列のうち所定の一部分のみであってもよい。例えば、MAC生成部114,214が生成した256ビットのMACのビット列のうち所定の32ビットの部分のみをデータフィールドに格納してもよい。
【0052】
(送信データ伝送フレームの生成方法)
送信データ伝送フレームの生成方法を説明する。ここでは第2ECU2が送信データ伝送フレームを生成する場合を例に挙げて説明するが、第1ECU1についても同様である。MAC生成部214は、送信データ伝送フレームのデータフィールドに格納される送信データとカウンタ部215に保持されているカウンタ値とを連結した連結データを生成する。MAC生成部214は、セッション鍵記憶部217に格納されているセッション鍵を使用して、該連結データのMACを生成する。MAC生成部214、該生成したMACを送信部211へ出力する。
【0053】
送信部211は、入力された送信データと、カウンタ部215が保持しているカウンタ値の下位6ビットのビット列と、MAC生成部214から受け取ったMACとを、
図5に例示されるように、送信データ伝送フレームのデータフィールドに格納する。送信データ伝送フレームにおいてデータフィールド以外の部分については、CANのデータフレームの所定のフレーム形式を適用する。送信部211は、送信データ伝送フレームをCAN3に送信する。
【0054】
(送信データ伝送フレームの受信処理方法)
送信データ伝送フレームの受信処理方法を説明する。ここでは第2ECU2が送信データ伝送フレームを受信する場合を例に挙げて説明するが、第1ECU1についても同様である。受信部212は、送信データ伝送フレームをCAN3から受信する。この受信部212が受信した送信データ伝送フレームのことを検査対象送信データ伝送フレームと称する。
【0055】
MAC検査部216は、検査対象送信データ伝送フレームのデータフィールドに格納されているMACを検査する。この検査対象送信データ伝送フレームのMACの検査方法を説明する。MAC検査部216は、検査対象送信データ伝送フレームのデータフィールドに格納されている送信データと、カウンタ部215に保持されているカウンタ値の上位26ビットのビット列と、該検査対象送信データ伝送フレームのデータフィールドに格納されているカウンタ値の下位6ビットのビット列とを連結した連結データを生成する。MAC検査部216は、セッション鍵記憶部217に格納されているセッション鍵を使用して、該連結データのMACを生成する。この連結データのMACを検査参照MACと称する。MAC検査部216は、該検査参照MACと、検査対象送信データ伝送フレームのデータフィールドに格納されているMACとを比較する。この比較の結果、両者が一致する場合にはMAC検査が合格であり、両者が不一致である場合にはMAC検査が不合格である。
【0056】
なお、データフィールドに格納されるMACが、MAC生成部114,214が生成したMACのビット列のうち所定の一部分のみである場合には、MAC検査部216は、検査参照MACのビット列のうち所定の一部分のみをMAC検査に使用する。例えば、データフィールドに格納されるMACが、MAC生成部114,214が生成した256ビットのMACのビット列のうち所定の32ビットの部分のみである場合には、MAC検査部216は、検査参照MACのビット列のうち所定の32ビットの部分のみをMAC検査に使用する。
【0057】
MAC検査が合格である場合には、MAC検査部216は、フレーム受信処理部213へ、MAC検査の合格を通知する。フレーム受信処理部113は、MAC検査部216からMAC検査の合格を通知されると、検査対象送信データ伝送フレームに対して、正常に受信した送信データ伝送フレームに対する所定の受信処理を行う。
【0058】
一方、MAC検査が不合格である場合には、MAC検査部216は、フレーム受信処理部213へ、MAC検査の不合格を通知する。フレーム受信処理部113は、MAC検査部216からMAC検査の不合格を通知された場合には、所定のエラー処理を実行する。
【0059】
上述の送信データ伝送フレームによって、第1ECU1と第2ECU2の間で、又は、第2ECU2同士の間で、送信データが交換される。
【0060】
図6及
図7は、本実施形態に係るカウンタ値共有方法の例を示すフローチャートである。まず
図6を参照して、本実施形態に係る第1ECU1が実行するカウンタ値共有処理の手順を説明する。
【0061】
(ステップS1)第1ECU1のカウンタ制御部119は、カウンタ値を通知する周期(カウンタ値通知周期と称する)のタイミングであるかを判断する。この判断の結果、カウンタ値通知周期のタイミングである場合にはステップS2へ進み、カウンタ値通知周期のタイミングではない場合にはステップS1を継続する。カウンタ値通知周期には、予め、一定時間が設定される。
【0062】
カウンタ値通知周期として、送信データ伝送フレームのデータフィールドに格納されるカウンタ値の下位6ビットがオーバーフローするのに要する時間未満としてもよい。これにより、第1ECU1及び第2ECU2の各カウンタ値の下位6ビットがオーバーフローする前に、再度、カウンタ値通知フレームによって第1ECU1及び第2ECU2で同じカウンタ値を共有し、第1ECU1及び第2ECU2が保持するカウンタ値を一致させることができる。
【0063】
(ステップS2)第1ECU1はカウンタ値通知フレームを生成する。
(ステップS3)第1ECU1は該カウンタ値通知フレームをCAN3へ送信する。
【0064】
(ステップS4)
図6のカウンタ値共有処理の終了である場合には本処理を終了する。一方、
図6のカウンタ値共有処理の継続である場合にはステップS1に戻る。
【0065】
次に
図7を参照して、本実施形態に係る第2ECU2が実行するカウンタ値共有処理の手順を説明する。
【0066】
(ステップS11)第2ECU2の受信部212は、カウンタ値通知フレームをCAN3から受信したかを判断する。この判断の結果、カウンタ値通知フレームを受信した場合にはステップS12へ進み、カウンタ値通知フレームを受信していない場合にはステップS11を継続する。
【0067】
(ステップS12)第2ECU2のMAC検査部216は、受信部212が受信したカウンタ値通知フレームのMAC検査を実行する。
(ステップS13)該MAC検査が合格である場合にはステップS14へ進む。一方、該MAC検査が合格である場合には、ステップS11へ戻る。
【0068】
(ステップS14)第2ECU2は、受信部212が受信したカウンタ値通知フレームのデータフィールドに格納されている暗号化カウンタ値の復号結果である復号カウンタ値をカウンタ部215の新しいカウンタ値に設定する。
【0069】
(ステップS15)
図7のカウンタ値共有処理の終了である場合には本処理を終了する。一方、
図7のカウンタ値共有処理の継続である場合にはステップS11に戻る。
【0070】
[自動車の構成例]
図8は、本実施形態に係る自動車300の構成例を示す図である。
図8において、自動車300は、第1ECU1と複数の第2ECU2とCAN3と診断ポート304とインフォテイメント(Infotainment)機器302とを備える。第1ECU1と複数の第2ECU2とはCAN3に接続されている。第1ECU1及び第2ECU2は、自動車300に備わる車載コンピュータである。第1ECU1は、自動車300に搭載されたECUのうち、ゲートウェイ機能を有するECUである。第2ECU2は、自動車300に搭載されたECUのうち、エンジン制御等の機能を有するECUである。第2ECU2として、例えば、エンジン制御機能を有するECU、ハンドル制御機能を有するECU、ブレーキ制御機能を有するECUなどがある。
【0071】
第1ECU1は、CAN3を介して、各第2ECU2との間でデータを交換する。第2ECU2は、CAN3を介して、他の第2ECU2との間でデータを交換する。
【0072】
インフォテイメント機器302として、例えば、ナビゲーション機能、位置情報サービス機能、音楽や動画などのマルチメディア再生機能、音声通信機能、データ通信機能、インターネット接続機能などを有するものが挙げられる。インフォテイメント機器302は、外部機器400と接続して、外部機器400とデータを交換する。外部機器400として、例えば、携帯通信端末やオーディオビジュアル機器などが挙げられる。インフォテイメント機器302は第1ECU1に接続される。
【0073】
診断ポート304は、診断ツール410を接続する。診断ツール410は、診断ポート304を介して、第1ECU1や第2ECU2等の更新プログラムのインストールやデータの設定変更などを実行する。診断ポート304として、例えばOBD(On-board Diagnostics)ポートを使用してもよい。
【0074】
インフォテイメント機器302は、第1ECU1を介して、CAN3に接続されている第2ECU2とデータを送受する。第1ECU1は、インフォテイメント機器302と第2ECU2との間のデータの送受を監視する。
【0075】
診断ツール410は、診断ポート304及び第1ECU1を介して、CAN3に接続されている第2ECU2とデータを送受する。第1ECU1は、診断ツール410と第2ECU2との間のデータの送受を監視する。
【0076】
なお、車両に搭載される通信ネットワークとして、CAN以外の通信ネットワークを自動車300に備え、CAN以外の通信ネットワークを介して、第1ECU1と第2ECU2との間のデータの交換、及び、第2ECU2同士の間のデータの交換が行われてもよい。例えば、LIN(Local Interconnect Network)を自動車300に備えてもよい。また、CANとLINとを自動車300に備えてもよい。また、自動車300において、LINに接続する第2ECU2を備えてもよい。また、第1ECU1は、CANとLINとに接続されてもよい。また、第1ECU1は、CANを介して該CANに接続される第2ECU2との間でデータを交換し、また、LINを介して該LINに接続される第2ECU2との間でデータを交換してもよい。また、第2ECU2同士が、LINを介してデータを交換してもよい。
【0077】
本実施形態によれば、MACの生成及び検査に使用されるカウンタ値を第1ECU1及び第2ECU2で共有する処理として、定期的に、第1ECU1からカウンタ値通知フレームによって各第2ECU2へ同じカウンタ値を通知する。これにより、第1ECU1と各第2ECU2との間でカウンタ値の問い合わせのやり取りは不要であり、MACの検査における効率の向上を図ることができるという効果が得られる。
【0078】
なお、第1ECU1は、カウンタ値のデータ長が一つのカウンタ値通知フレームに収まらないデータ長である場合には、カウンタ値のビット列を複数に分割し、該分割後の各ビット列を複数のカウンタ値通知フレームに分散して格納する。第2ECU2は、一つのカウンタ値のビット列が分散して格納されている複数のカウンタ値通知フレームから、該一つのカウンタ値のビット列を復元する。この場合、該複数のカウンタ値通知フレームのデータフィールドに格納されるMACには、分割前の元のカウンタ値を使用して生成されたMACを使用する。
【0079】
本実施形態において、第1ECU1は、送信ノードと受信ノードとカウンタ値通知ノードとに対応する。また、第2ECU2は、送信ノードと受信ノードとに対応する。また、カウンタ値通知フレームはカウンタ値通知メッセージに対応する。また、送信データ伝送フレームはメッセージに対応する。
【0080】
なお、本実施形態において、カウンタ値通知ノードを単独のノードとして備えてもよい。また、上記の
図8の自動車300の構成例では、ゲートウェイ機能を有する第1ECU1がカウンタ値通知ノードの機能を有したが、ゲートウェイ機能を有する第1ECU1の代わりに一つの第2ECU2がカウンタ値通知ノードの機能を有してもよい。
【0081】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【0082】
上述した実施形態では、車両として自動車を例に挙げたが、原動機付自転車や鉄道車両等の自動車以外の他の車両にも適用可能である。
【0083】
また、上述した第1ECU1又は第2ECU2の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disc)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0084】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。