(57)【特許請求の範囲】
【請求項１】
メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおいて、
前記メッセージのメッセージ認証コードの生成と検査とに使用されるカウンタ値を前記送信ノードと前記受信ノードとへ通知するカウンタ値通知メッセージを前記通信ネットワークシステムの起動中に一定時間のカウンタ値通知周期で送信するカウンタ値通知ノードを備え、
前記送信ノードは、
前記メッセージの送信毎に所定のカウント値だけ増加させるカウンタ値を保持するカウンタ部と、
前記カウンタ部が保持しているカウンタ値を使用して前記メッセージ認証コードの生成を行うメッセージ認証コード生成部と、
前記カウンタ部が保持しているカウンタ値のビット列のうち所定の下位のビット数分と前記メッセージ認証コード生成部が生成したメッセージ認証コードとを格納する前記メッセージを送信する送信部と、
前記カウンタ値通知メッセージによって取得したカウンタ値を前記カウンタ部が保持する新しいカウンタ値に設定するカウンタ設定部と、を備え、
前記受信ノードは、
前記カウンタ値通知メッセージによって取得したカウンタ値を保持するカウンタ部と、
自受信ノードの前記カウンタ部が保持しているカウンタ値のビット列のうち前記所定の下位のビット数分以外の残りの上位のビット数分と、前記送信ノードから受信した前記メッセージに格納されている前記所定の下位のビット数分とを連結した連結データを使用して前記メッセージ認証コードの検査を行うメッセージ認証コード検査部と、を備え、
前記カウンタ値通知周期は、前記送信ノードのカウンタ部のカウンタ値のビット列のうち前記所定の下位のビット数分がオーバーフローするのに要する時間未満である、
通信ネットワークシステム。
【請求項２】
請求項１に記載の通信ネットワークシステムを備える車両。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークシステム及び車両に関する。
【背景技術】
【０００２】
近年、自動車は、ＥＣＵ（Electronic Control Unit；電子制御装置）を有し、ＥＣＵによってエンジン制御等の機能を実現する。また、自動車に搭載される通信ネットワークの一つとして知られているＣＡＮ（Controller Area Network）が、自動車内の各種ＥＣＵ間の通信に用いられている。そのＣＡＮにおいてメッセージの認証を可能にする技術として、例えば特許文献１に記載のメッセージ検査技術が知られている。特許文献１に記載のメッセージ検査技術では、送信ノードはメッセージ認証コード（Message Authentication Code：ＭＡＣ）の生成に使用する送信カウンタ値を保持する送信カウンタ部を備え、受信ノードはＭＡＣの検査に使用する受信カウンタ値を保持する受信カウンタ部を備える。受信ノードの受信カウンタ部は、複数の送信ノードの各々に対応する複数の受信カウンタ値を保持する。受信ノードは、送信ノードから受信したメッセージのＭＡＣの検査に、該送信ノードに対応する受信カウンタ値を使用する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１２９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述した従来のメッセージ検査技術では、一つの送信ノードの送信カウンタ値と、複数の受信ノードの該送信ノードに対応する受信カウンタ値とを一致させることによって該送信ノードから受信したメッセージのＭＡＣの検査を行うことができるが、そのカウンタ値を一致させる処理が負担になる場合があった。例えば、送信カウンタ値と受信カウンタ値とを一致させる処理として、複数の受信ノードが送信ノードにカウンタ値を問い合わせる処理を実行すると、複数の受信ノードと送信ノードとの間でカウンタ値の問い合わせのやり取りが複数発生する。これにより、ＣＡＮにかかる負荷が大きくなってＣＡＮの通信速度が低下する可能性があった。
【０００５】
本発明は、このような事情を考慮してなされたものであり、メッセージを送信する送信ノードと該メッセージを受信する受信ノードとが接続される通信ネットワークシステムの効率の向上を図ることができる、通信ネットワークシステム及び車両を提供することを課題とする。
【課題を解決するための手段】
【０００６】
（１）本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムにおいて、前記メッセージのメッセージ認証コードの生成と検査とに使用されるカウンタ値を前記送信ノードと前記受信ノードとへ通知するカウンタ値通知メッセージを前記通信ネットワークシステムの起動中に一定時間のカウンタ値通知周期で送信するカウンタ値通知ノードを備え、前記送信ノードは、前記メッセージの送信毎に所定のカウント値だけ増加させるカウンタ値を保持するカウンタ部と、前記カウンタ部が保持しているカウンタ値を使用して前記メッセージ認証コードの生成を行うメッセージ認証コード生成部と、前記カウンタ部が保持しているカウンタ値のビット列のうち所定の下位のビット数分と前記メッセージ認証コード生成部が生成したメッセージ認証コードとを格納する前記メッセージを送信する送信部と、前記カウンタ値通知メッセージによって取得したカウンタ値を前記カウンタ部が保持する新しいカウンタ値に設定するカウンタ設定部と、を備え、前記受信ノードは、前記カウンタ値通知メッセージによって取得したカウンタ値を保持するカウンタ部と、自受信ノードの前記カウンタ部が保持しているカウンタ値のビット列のうち前記所定の下位のビット数分以外の残りの上位のビット数分と、前記送信ノードから受信した前記メッセージに格納されている前記所定の下位のビット数分とを連結した連結データを使用して前記メッセージ認証コードの検査を行うメッセージ認証コード検査部と、を備え、前記カウンタ値通知周期は、前記送信ノードのカウンタ部のカウンタ値のビット列のうち前記所定の下位のビット数分がオーバーフローするのに要する時間未満である、通信ネットワークシステムである。
【０００７】
本発明の一態様は、上記（１）の通信ネットワークシステムを備える車両である。
【０００８】
（６）本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムのカウンタ値通知ノードであり、前記メッセージのメッセージ認証コードの生成と検査とに使用されるカウンタ値を前記送信ノードと前記受信ノードとへ通知するカウンタ値通知メッセージを定期的に送信する送信部を備えるカウンタ値通知ノードである。
【０００９】
（７）本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムのカウンタ値共有方法であり、カウンタ値通知ノードが、前記メッセージのメッセージ認証コードの生成と検査とに使用されるカウンタ値を前記送信ノードと前記受信ノードとへ通知するカウンタ値通知メッセージを定期的に送信する送信ステップを含むカウンタ値共有方法である。
【００１０】
（８）本発明の一態様は、メッセージを送信する送信ノードと前記メッセージを受信する受信ノードとが接続される通信ネットワークシステムのカウンタ値通知ノードのコンピュータに、前記メッセージのメッセージ認証コードの生成と検査とに使用されるカウンタ値を前記送信ノードと前記受信ノードとへ通知するカウンタ値通知メッセージを定期的に送信する送信機能を実現させるためのコンピュータプログラムである。
【発明の効果】
【００１１】
本発明によれば、メッセージを送信する送信ノードと該メッセージを受信する受信ノードとが接続される通信ネットワークシステムの効率の向上を図ることができるという効果が得られる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係る通信ネットワークシステム１０の構成例を示す図である。
【図２】一実施形態に係る第１ＥＣＵ１の構成例を示す図である。
【図３】一実施形態に係る第２ＥＣＵ２の構成例を示す図である。
【図４】一実施形態に係るデータフレームのデータフィールドの構成例を示す図である。
【図５】一実施形態に係るデータフレームのデータフィールドの構成例を示す図である。
【図６】一実施形態に係るカウンタ値共有方法の例を示すフローチャートである。
【図７】一実施形態に係るカウンタ値共有方法の例を示すフローチャートである。
【図８】一実施形態に係る自動車３００の構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照し、本発明の実施形態について説明する。なお、以下に示す実施形態では、車両として自動車を例に挙げて説明する。また、通信ネットワークシステムの一態様として、自動車に搭載される通信ネットワークシステムを例に挙げて説明する。
【００１４】
図１は、本実施形態に係る通信ネットワークシステム１０の構成例を示す図である。通信ネットワークシステム１０は自動車に搭載されている。図１において、通信ネットワークシステム１０は、複数のＥＣＵ（電子制御装置）１，２とＣＡＮ３とを有する。ＥＣＵ１，２は、ＣＡＮ３に接続されている。ＥＣＵ１，２は、ＣＰＵ（Central Processing Unit：中央演算処理装置）及びメモリ等から構成される。ＥＣＵ１，２はコンピュータの一種である。ＥＣＵ１，２のＣＰＵが該ＥＣＵ１，２の機能を実現させるためのコンピュータプログラムを実行することによって、該ＥＣＵ１，２の機能が実現される。例えば、ＥＣＵ１，２は、自動車内の機器を制御する制御機能を有する。ＥＣＵ１，２は、例えば、駆動系ＥＣＵ、車体系ＥＣＵ、安全制御系ＥＣＵなどである。
【００１５】
本実施形態では、説明の便宜上、通信ネットワークシステム１０は４台のＥＣＵ１，２を備えるものとし、該４台のＥＣＵ１，２がＣＡＮ３に接続されている。ＣＡＮ３は、各ＥＣＵ１，２の間で交換されるメッセージを伝送する。各ＥＣＵ１，２は、ＣＡＮ３を介して、相互にメッセージを送受する。ＣＡＮ３では、所定のフレーム形式でメッセージの伝送が行われる。ＥＣＵ１，２は、ＣＡＮに接続するノード（通信装置）として機能する。本実施形態では、ＥＣＵ１，２は、メッセージを送信する送信ノードの機能と該メッセージを受信する受信ノードの機能とを有する。
【００１６】
図１中に示されるように、４台の各ＥＣＵ１，２には、ＣＡＮの識別子（ＩＤ）として、ＩＤ１０、ＩＤ１１、ＩＤ１２、ＩＤ１３がそれぞれ付与されている。ＩＤ１０が付与されているＥＣＵ１を第１ＥＣＵ１と称する。ＩＤ１１、ＩＤ１２、ＩＤ１３が各々付与されているＥＣＵ２を第２ＥＣＵ２と称する。
【００１７】
図２は、本実施形態に係る第１ＥＣＵ１の構成例を示す図である。図２において、第１ＥＣＵ１は、送信部１１１と受信部１１２とフレーム受信処理部１１３とＭＡＣ（メッセージ認証コード）生成部１１４とカウンタ部１１５とＭＡＣ検査部１１６とセッション鍵記憶部１１７と切替部１１８とカウンタ制御部１１９とカウンタ値生成部１２０と暗号化部１２１とを備える。
【００１８】
送信部１１１は、ＣＡＮ３の所定のフレーム形式のメッセージをＣＡＮ３に送信する。受信部１１２は、該所定のフレーム形式のメッセージをＣＡＮ３から受信する。ＣＡＮ３の所定のフレーム形式のフレームの種類の一つとして、データフレームがある。送信部１１１は、データフレームをＣＡＮ３に送信する。受信部１１２は、データフレームをＣＡＮ３から受信する。
【００１９】
送信部１１１には、データフレームのデータフィールド（Data Field：データ部）に格納するデータが切替部１１８から入力される。送信部１１１には、切替部１１８から、送信データ又は暗号化カウンタ値が入力される。暗号化カウンタ値は、カウンタ値を暗号化したデータである。送信部１１１は、切替部１１８から入力されたデータをデータフレーム中のデータフィールドに格納する。データフレームのデータフィールドに格納可能なデータ長の上限は６４ビット（ｂｉｔ）である。フレーム受信処理部１１３は、受信部１１２がＣＡＮ３から受信したデータフレームについての受信処理を行う。
【００２０】
ＭＡＣ生成部１１４は、データフレーム中のデータフィールドに格納されるデータ等を使用してＭＡＣを生成する。ＭＡＣ生成部１１４は、生成したＭＡＣを送信部１１１へ出力する。送信部１１１は、ＭＡＣ生成部１１４から受け取ったＭＡＣをデータフレーム中の所定の部分に格納する。
【００２１】
カウンタ部１１５は、送信カウンタ部として機能する。カウンタ部１１５は、送信カウンタ部の機能として、送信部１１１によるデータフレームの送信毎に所定のカウント値だけ増加させるカウンタ値を保持する。本実施形態では、一例として、該所定のカウント値は１である。したがって、カウンタ部１１５は、送信部１１１が一つのデータフレームをＣＡＮ３に送信する毎に１だけ増加させるカウンタ値を保持する。このカウンタ値は、自第１ＥＣＵ１が一つのデータフレームをＣＡＮ３に送信する毎に１ずつ増やされる。本実施形態では、一例として、カウンタ部１１５が保持するカウント値のデータ長は３２ビットである。
【００２２】
ＭＡＣ検査部１１６は、受信部１１２がＣＡＮ３から受信したデータフレームに格納されているＭＡＣについての検査を行う。セッション鍵記憶部１１７は、セッション鍵を記憶する。該セッション鍵は、第１ＥＣＵ１及び第２ＥＣＵ２で事前に共有されている。切替部１１８には送信データが入力される。また、切替部１１８には、カウンタ制御部１１９から暗号化カウンタ値が入力される。切替部１１８は、送信部１１１へ出力するデータを、送信データにするか又は暗号化カウンタ値にするかを切り替える。
【００２３】
カウンタ値生成部１２０は、カウンタ値を生成する。例えば、カウンタ値生成部１２０は、乱数を発生し、該乱数に基づいてカウンタ値を生成する。カウンタ値生成部１２０が生成するカウンタ値のビット列の下位の所定ビット数分を０にしてもよい。カウンタ制御部１１９は、カウンタ値についての制御を行う。暗号化部１２１は、セッション鍵記憶部１１７に格納されているセッション鍵を使用してカウンタ値を暗号化する。
【００２４】
カウンタ制御部１１９は、カウンタ値生成部１２０が生成したカウンタ値を暗号化部１２１へ出力する。暗号化部１２１は、カウンタ制御部１１９から受け取ったカウンタ値を、セッション鍵で暗号化する。暗号化部１２１は、該暗号化したカウンタ値である暗号化カウンタ値をカウンタ制御部１１９へ出力する。カウンタ制御部１１９は、暗号化部１２１から受け取った暗号化カウンタ値を切替部１１８へ出力する。切替部１１８は、カウンタ制御部１１９から暗号化カウンタ値を受け取ると、該暗号化カウンタ値を送信部１１１へ出力する。本実施形態では、一例として、暗号化カウンタ値は３２ビットである。
【００２５】
また、カウンタ制御部１１９は、暗号化カウンタ値の暗号化前の元のカウンタ値をカウンタ部１１５へ出力する。カウンタ部１１５は、カウンタ制御部１１９から受け取ったカウンタ値を、既に保持しているカウンタ値に代えて保持する。つまり、カウンタ値生成部１２０が生成したカウンタ値が、新しいカウンタ値としてカウンタ部１１５で保持される。このカウンタ部１１５で保持される新しいカウンタ値は、暗号化カウンタ値として、カウンタ制御部１１９から切替部１１８を介して送信部１１１に入力されて、データフレーム中の所定の部分に格納される。
【００２６】
図３は、本実施形態に係る第２ＥＣＵ２の構成例を示す図である。図３において、第２ＥＣＵ２は、送信部２１１と受信部２１２とフレーム受信処理部２１３とＭＡＣ生成部２１４とカウンタ部２１５とＭＡＣ検査部２１６とセッション鍵記憶部２１７とカウンタ設定部２２０と復号部２２１とを備える。
【００２７】
送信部２１１は、ＣＡＮ３の所定のフレーム形式のメッセージをＣＡＮ３に送信する。受信部２１２は、該所定のフレーム形式のメッセージをＣＡＮ３から受信する。送信部２１１は、データフレームをＣＡＮ３に送信する。受信部２１２は、データフレームをＣＡＮ３から受信する。
【００２８】
送信部２１１には、データフレームのデータフィールドに格納する送信データが入力される。送信部２１１は、入力された送信データをデータフレーム中のデータフィールドに格納する。フレーム受信処理部２１３は、受信部２１２がＣＡＮ３から受信したデータフレームについての受信処理を行う。
【００２９】
ＭＡＣ生成部２１４は、データフレーム中のデータフィールドに格納される送信データ等を使用してＭＡＣを生成する。ＭＡＣ生成部２１４は、生成したＭＡＣを送信部２１１へ出力する。送信部２１１は、ＭＡＣ生成部２１４から受け取ったＭＡＣをデータフレーム中の所定の部分に格納する。
【００３０】
カウンタ部２１５は、送信カウンタ部として機能する。カウンタ部２１５は、送信カウンタ部の機能として、送信部２１１によるデータフレームの送信毎に所定のカウント値だけ増加させるカウンタ値を保持する。該所定のカウント値は、第１ＥＣＵ１のカウンタ部１１５と同じである。本実施形態では、該所定のカウント値は１である。したがって、カウンタ部２１５は、送信部２１１が一つのデータフレームをＣＡＮ３に送信する毎に１だけ増加させるカウンタ値を保持する。このカウンタ値は、自第２ＥＣＵ２が一つのデータフレームをＣＡＮ３に送信する毎に１ずつ増やされる。第２ＥＣＵ２のカウンタ部２１５が保持するカウント値のデータ長は、第１ＥＣＵ１のカウンタ部１１５が保持するカウント値のデータ長と同じである。本実施形態では、カウンタ部２１５が保持するカウント値のデータ長は３２ビットである。
【００３１】
ＭＡＣ検査部２１６は、受信部２１２がＣＡＮ３から受信したデータフレームに格納されているＭＡＣについての検査を行う。セッション鍵記憶部２１７は、セッション鍵を記憶する。該セッション鍵は、第１ＥＣＵ１及び第２ＥＣＵ２で事前に共有されている。
【００３２】
カウンタ設定部２２０は、カウンタ部２１５にカウンタ値を設定する。復号部２２１は、受信部２１２がＣＡＮ３から受信したデータフレームのデータフィールドに格納されている暗号化カウンタ値を復号する。復号部２２１は、暗号化カウンタ値の復号結果の復号データをカウンタ設定部２２０へ出力する。暗号化カウンタ値の復号結果の復号データは、カウンタ設定部２２０によってカウンタ部２１５のカウンタ値の設定に使用される。
【００３３】
なお、ＭＡＣの生成方法及び検査方法は、第１ＥＣＵ１及び第２ＥＣＵ２で共通である。また、該ＭＡＣは、ＣＭＡＣ（Cipher-based Message Authentication Code）であってもよく、又は、ＨＭＡＣ（Hash-based Message Authentication Code）であってもよい。
【００３４】
図４及び図５は、本実施形態に係るデータフレームのデータフィールドの構成例を示す図である。
【００３５】
［カウンタ値を通知するデータフレームのデータフィールドの構成例］
図４には、カウンタ値を通知するデータフレームのデータフィールドの構成例が示される。カウンタ値を通知するデータフレームのことをカウンタ値通知フレームと称する。図４を参照して、カウンタ値通知フレームについて説明する。
【００３６】
カウンタ値通知フレームは、第１ＥＣＵ１からＣＡＮ３へ送信される。第１ＥＣＵ１は、ＣＡＮ３を介して、ＩＤ１１、ＩＤ１２及びＩＤ１３の各第２ＥＣＵ２へ、カウンタ値通知フレームを送信する。第１ＥＣＵ１は、カウンタ値通知フレームをブロードキャストで送信してもよい。ブロードキャストで送信されたカウンタ値通知フレームは、ＣＡＮ３を介して、ＩＤ１１、ＩＤ１２及びＩＤ１３の各第２ＥＣＵ２で受信される。
【００３７】
カウンタ値通知フレームのデータフィールドには、３２ビットの暗号化カウンタ値と、３２ビットのＭＡＣとが格納される。第１ＥＣＵ１の送信部１１１は、切替部１１８から受け取った暗号化カウンタ値と、ＭＡＣ生成部１１４から受け取ったＭＡＣとをカウンタ値通知フレームのデータフィールドに格納する。なお、データフィールドに格納されるＭＡＣは、ＭＡＣ生成部１１４が生成したＭＡＣのビット列のうち所定の一部分のみであってもよい。例えば、ＭＡＣ生成部１１４が生成した２５６ビットのＭＡＣのビット列のうち所定の３２ビットの部分のみをデータフィールドに格納してもよい。
【００３８】
（第１ＥＣＵ１のカウンタ値通知フレームの生成方法）
第１ＥＣＵ１のカウンタ値通知フレームの生成方法を説明する。カウンタ制御部１１９は、カウンタ値生成部１２０が生成したカウンタ値についての暗号化カウンタ値を、切替部１１８を介して送信部１１１へ渡す。カウンタ制御部１１９は、該暗号化カウンタ値の暗号化前の元のカウンタ値をカウンタ部１１５へ出力する。カウンタ部１１５は、該カウンタ制御部１１９から受け取ったカウンタ値を、既に保持しているカウンタ値に代えて保持する。ＭＡＣ生成部１１４は、セッション鍵記憶部１１７に格納されているセッション鍵を使用して、該カウンタ部１１５に保持された新しいカウンタ値のＭＡＣを生成する。ＭＡＣ生成部１１４は、該生成したＭＡＣを送信部１１１へ出力する。
【００３９】
送信部１１１は、カウンタ制御部１１９から切替部１１８を介して受け取った暗号化カウンタ値と、ＭＡＣ生成部１１４から受け取ったＭＡＣとを、図４に例示されるように、カウンタ値通知フレームのデータフィールドに格納する。一つのカウンタ値通知フレームのデータフィールドに格納される暗号化カウンタ値とＭＡＣとは、同じカウンタ値を使用して生成されている。カウンタ値通知フレームにおいてデータフィールド以外の部分については、ＣＡＮのデータフレームの所定のフレーム形式を適用する。送信部１１１は、カウンタ値通知フレームをＣＡＮ３に送信する。
【００４０】
なお、カウンタ値生成部１２０が生成するカウンタ値のビット列の下位の所定ビット数分を０にしてもよい。具体的には、カウンタ値生成部１２０が生成するカウンタ値のビット列のうち、図５に例示されるデータフレームのデータフィールドに格納されるカウンタ値の下位のビット数分（図５の例では下位６ビット）を０にしてもよい。
【００４１】
（第２ＥＣＵ２のカウンタ値通知フレームの受信処理方法）
第２ＥＣＵ２のカウンタ値通知フレームの受信処理方法を説明する。受信部２１２は、カウンタ値通知フレームをＣＡＮ３から受信する。復号部２２１は、受信部２１２が受信したカウンタ値通知フレームのデータフィールドに格納されている暗号化カウンタ値を復号する。この暗号化カウンタ値の復号結果のデータを復号カウンタ値と称する。復号部２２１は、復号カウンタ値をＭＡＣ検査部２１６とカウンタ設定部２２０とへ出力する。
【００４２】
ＭＡＣ検査部２１６は、受信部２１２が受信したカウンタ値通知フレームのデータフィールドに格納されているＭＡＣを検査する。このカウンタ値通知フレームのＭＡＣの検査方法を説明する。ＭＡＣ検査部２１６は、復号部２２１から復号カウンタ値を受け取る。ＭＡＣ検査部２１６は、セッション鍵記憶部２１７に格納されているセッション鍵を使用して、該復号カウンタ値のＭＡＣを生成する。この復号カウンタ値のＭＡＣを復号カウンタ値ＭＡＣと称する。ＭＡＣ検査部２１６は、該復号カウンタ値ＭＡＣと、受信部２１２が受信したカウンタ値通知フレームのデータフィールドに格納されているＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＭＡＣ検査が合格であり、両者が不一致である場合にはＭＡＣ検査が不合格である。
【００４３】
なお、データフィールドに格納されるＭＡＣが、ＭＡＣ生成部１１４が生成したＭＡＣのビット列のうち所定の一部分のみである場合には、ＭＡＣ検査部２１６は、復号カウンタ値ＭＡＣのビット列のうち所定の一部分のみをＭＡＣ検査に使用する。例えば、データフィールドに格納されるＭＡＣが、ＭＡＣ生成部１１４が生成した２５６ビットのＭＡＣのビット列のうち所定の３２ビットの部分のみである場合には、ＭＡＣ検査部２１６は、復号カウンタ値ＭＡＣのビット列のうち所定の３２ビットの部分のみをＭＡＣ検査に使用する。
【００４４】
ＭＡＣ検査が合格である場合には、ＭＡＣ検査部２１６は、カウンタ設定部２２０へ、ＭＡＣ検査の合格を通知する。カウンタ設定部２２０は、ＭＡＣ検査部２１６からＭＡＣ検査の合格を通知されると、復号部２２１から受け取った復号カウンタ値をカウンタ部２１５へ出力する。カウンタ部２１５は、該カウンタ設定部２２０から受け取った復号カウンタ値を、既に保持しているカウンタ値に代えて保持する。
【００４５】
一方、ＭＡＣ検査が不合格である場合には、ＭＡＣ検査部２１６は、カウンタ設定部２２０へ、ＭＡＣ検査の不合格を通知する。カウンタ設定部２２０は、ＭＡＣ検査部２１６からＭＡＣ検査の不合格を通知された場合には、復号部２２１から受け取った復号カウンタ値を破棄する。つまり、カウンタ設定部２２０は、ＭＡＣ検査部２１６からＭＡＣ検査の不合格を通知された場合には、復号部２２１から受け取った復号カウンタ値をカウンタ部２１５へ出力しない。よって、カウンタ部２１５は、既に保持しているカウンタ値をそのまま保持する。
【００４６】
上述のカウンタ値通知フレームによって、第１ＥＣＵ１から各第２ＥＣＵ２へ、同じカウンタ値が通知される。これにより、第１ＥＣＵ１及び第２ＥＣＵ２が保持するカウンタ値が一致することになる。
【００４７】
なお、ある第２ＥＣＵ２においてカウンタ値通知フレームのＭＡＣ検査が不合格になった場合には、該第２ＥＣＵ２は、該ＭＡＣ検査の不合格を第１ＥＣＵ１へ通知してもよい。第１ＥＣＵ１は、第２ＥＣＵ２からカウンタ値通知フレームのＭＡＣ検査が不合格を通知された場合には、再度、カウンタ値通知フレームを各第２ＥＣＵ２へ送信してもよい。該カウンタ値通知フレームは、前回と同じカウンタ値を通知するカウンタ値通知フレームであってもよく、又は、前回とは異なる新たなカウンタ値を通知するカウンタ値通知フレームであってもよい。
【００４８】
［送信データを伝送するデータフレームのデータフィールドの構成例］
図５には、送信データを伝送するデータフレームのデータフィールドの構成例が示される。送信データを伝送するデータフレームのことを送信データ伝送フレームと称する。図５を参照して、送信データ伝送フレームについて説明する。
【００４９】
第１ＥＣＵ１は、送信データ伝送フレームをＣＡＮ３へ送信する。第１ＥＣＵ１は、送信データ伝送フレームをＣＡＮ３から受信する。第２ＥＣＵ２は、送信データ伝送フレームをＣＡＮ３へ送信する。第２ＥＣＵ２は、送信データ伝送フレームをＣＡＮ３から受信する。
【００５０】
送信データ伝送フレームのデータフィールドには、最大２６ビットの送信データと、カウンタ値の下位６ビットのビット列と、３２ビットのＭＡＣとが格納される。第１ＥＣＵ１の送信部１１１は、切替部１１８から受け取った送信データと、カウンタ部１１５が保持しているカウンタ値の下位６ビットのビット列と、ＭＡＣ生成部１１４から受け取ったＭＡＣとを送信データ伝送フレームのデータフィールドに格納する。第２ＥＣＵ２の送信部２１１は、入力された送信データと、カウンタ部２１５が保持しているカウンタ値の下位６ビットのビット列と、ＭＡＣ生成部２１４から受け取ったＭＡＣとを送信データ伝送フレームのデータフィールドに格納する。
【００５１】
なお、データフィールドに格納されるＭＡＣは、ＭＡＣ生成部１１４，２１４が生成したＭＡＣのビット列のうち所定の一部分のみであってもよい。例えば、ＭＡＣ生成部１１４，２１４が生成した２５６ビットのＭＡＣのビット列のうち所定の３２ビットの部分のみをデータフィールドに格納してもよい。
【００５２】
（送信データ伝送フレームの生成方法）
送信データ伝送フレームの生成方法を説明する。ここでは第２ＥＣＵ２が送信データ伝送フレームを生成する場合を例に挙げて説明するが、第１ＥＣＵ１についても同様である。ＭＡＣ生成部２１４は、送信データ伝送フレームのデータフィールドに格納される送信データとカウンタ部２１５に保持されているカウンタ値とを連結した連結データを生成する。ＭＡＣ生成部２１４は、セッション鍵記憶部２１７に格納されているセッション鍵を使用して、該連結データのＭＡＣを生成する。ＭＡＣ生成部２１４、該生成したＭＡＣを送信部２１１へ出力する。
【００５３】
送信部２１１は、入力された送信データと、カウンタ部２１５が保持しているカウンタ値の下位６ビットのビット列と、ＭＡＣ生成部２１４から受け取ったＭＡＣとを、図５に例示されるように、送信データ伝送フレームのデータフィールドに格納する。送信データ伝送フレームにおいてデータフィールド以外の部分については、ＣＡＮのデータフレームの所定のフレーム形式を適用する。送信部２１１は、送信データ伝送フレームをＣＡＮ３に送信する。
【００５４】
（送信データ伝送フレームの受信処理方法）
送信データ伝送フレームの受信処理方法を説明する。ここでは第２ＥＣＵ２が送信データ伝送フレームを受信する場合を例に挙げて説明するが、第１ＥＣＵ１についても同様である。受信部２１２は、送信データ伝送フレームをＣＡＮ３から受信する。この受信部２１２が受信した送信データ伝送フレームのことを検査対象送信データ伝送フレームと称する。
【００５５】
ＭＡＣ検査部２１６は、検査対象送信データ伝送フレームのデータフィールドに格納されているＭＡＣを検査する。この検査対象送信データ伝送フレームのＭＡＣの検査方法を説明する。ＭＡＣ検査部２１６は、検査対象送信データ伝送フレームのデータフィールドに格納されている送信データと、カウンタ部２１５に保持されているカウンタ値の上位２６ビットのビット列と、該検査対象送信データ伝送フレームのデータフィールドに格納されているカウンタ値の下位６ビットのビット列とを連結した連結データを生成する。ＭＡＣ検査部２１６は、セッション鍵記憶部２１７に格納されているセッション鍵を使用して、該連結データのＭＡＣを生成する。この連結データのＭＡＣを検査参照ＭＡＣと称する。ＭＡＣ検査部２１６は、該検査参照ＭＡＣと、検査対象送信データ伝送フレームのデータフィールドに格納されているＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＭＡＣ検査が合格であり、両者が不一致である場合にはＭＡＣ検査が不合格である。
【００５６】
なお、データフィールドに格納されるＭＡＣが、ＭＡＣ生成部１１４，２１４が生成したＭＡＣのビット列のうち所定の一部分のみである場合には、ＭＡＣ検査部２１６は、検査参照ＭＡＣのビット列のうち所定の一部分のみをＭＡＣ検査に使用する。例えば、データフィールドに格納されるＭＡＣが、ＭＡＣ生成部１１４，２１４が生成した２５６ビットのＭＡＣのビット列のうち所定の３２ビットの部分のみである場合には、ＭＡＣ検査部２１６は、検査参照ＭＡＣのビット列のうち所定の３２ビットの部分のみをＭＡＣ検査に使用する。
【００５７】
ＭＡＣ検査が合格である場合には、ＭＡＣ検査部２１６は、フレーム受信処理部２１３へ、ＭＡＣ検査の合格を通知する。フレーム受信処理部１１３は、ＭＡＣ検査部２１６からＭＡＣ検査の合格を通知されると、検査対象送信データ伝送フレームに対して、正常に受信した送信データ伝送フレームに対する所定の受信処理を行う。
【００５８】
一方、ＭＡＣ検査が不合格である場合には、ＭＡＣ検査部２１６は、フレーム受信処理部２１３へ、ＭＡＣ検査の不合格を通知する。フレーム受信処理部１１３は、ＭＡＣ検査部２１６からＭＡＣ検査の不合格を通知された場合には、所定のエラー処理を実行する。
【００５９】
上述の送信データ伝送フレームによって、第１ＥＣＵ１と第２ＥＣＵ２の間で、又は、第２ＥＣＵ２同士の間で、送信データが交換される。
【００６０】
図６及図７は、本実施形態に係るカウンタ値共有方法の例を示すフローチャートである。まず図６を参照して、本実施形態に係る第１ＥＣＵ１が実行するカウンタ値共有処理の手順を説明する。
【００６１】
（ステップＳ１）第１ＥＣＵ１のカウンタ制御部１１９は、カウンタ値を通知する周期（カウンタ値通知周期と称する）のタイミングであるかを判断する。この判断の結果、カウンタ値通知周期のタイミングである場合にはステップＳ２へ進み、カウンタ値通知周期のタイミングではない場合にはステップＳ１を継続する。カウンタ値通知周期には、予め、一定時間が設定される。
【００６２】
カウンタ値通知周期として、送信データ伝送フレームのデータフィールドに格納されるカウンタ値の下位６ビットがオーバーフローするのに要する時間未満としてもよい。これにより、第１ＥＣＵ１及び第２ＥＣＵ２の各カウンタ値の下位６ビットがオーバーフローする前に、再度、カウンタ値通知フレームによって第１ＥＣＵ１及び第２ＥＣＵ２で同じカウンタ値を共有し、第１ＥＣＵ１及び第２ＥＣＵ２が保持するカウンタ値を一致させることができる。
【００６３】
（ステップＳ２）第１ＥＣＵ１はカウンタ値通知フレームを生成する。
（ステップＳ３）第１ＥＣＵ１は該カウンタ値通知フレームをＣＡＮ３へ送信する。
【００６４】
（ステップＳ４）図６のカウンタ値共有処理の終了である場合には本処理を終了する。一方、図６のカウンタ値共有処理の継続である場合にはステップＳ１に戻る。
【００６５】
次に図７を参照して、本実施形態に係る第２ＥＣＵ２が実行するカウンタ値共有処理の手順を説明する。
【００６６】
（ステップＳ１１）第２ＥＣＵ２の受信部２１２は、カウンタ値通知フレームをＣＡＮ３から受信したかを判断する。この判断の結果、カウンタ値通知フレームを受信した場合にはステップＳ１２へ進み、カウンタ値通知フレームを受信していない場合にはステップＳ１１を継続する。
【００６７】
（ステップＳ１２）第２ＥＣＵ２のＭＡＣ検査部２１６は、受信部２１２が受信したカウンタ値通知フレームのＭＡＣ検査を実行する。
（ステップＳ１３）該ＭＡＣ検査が合格である場合にはステップＳ１４へ進む。一方、該ＭＡＣ検査が合格である場合には、ステップＳ１１へ戻る。
【００６８】
（ステップＳ１４）第２ＥＣＵ２は、受信部２１２が受信したカウンタ値通知フレームのデータフィールドに格納されている暗号化カウンタ値の復号結果である復号カウンタ値をカウンタ部２１５の新しいカウンタ値に設定する。
【００６９】
（ステップＳ１５）図７のカウンタ値共有処理の終了である場合には本処理を終了する。一方、図７のカウンタ値共有処理の継続である場合にはステップＳ１１に戻る。
【００７０】
［自動車の構成例］
図８は、本実施形態に係る自動車３００の構成例を示す図である。図８において、自動車３００は、第１ＥＣＵ１と複数の第２ＥＣＵ２とＣＡＮ３と診断ポート３０４とインフォテイメント（Infotainment）機器３０２とを備える。第１ＥＣＵ１と複数の第２ＥＣＵ２とはＣＡＮ３に接続されている。第１ＥＣＵ１及び第２ＥＣＵ２は、自動車３００に備わる車載コンピュータである。第１ＥＣＵ１は、自動車３００に搭載されたＥＣＵのうち、ゲートウェイ機能を有するＥＣＵである。第２ＥＣＵ２は、自動車３００に搭載されたＥＣＵのうち、エンジン制御等の機能を有するＥＣＵである。第２ＥＣＵ２として、例えば、エンジン制御機能を有するＥＣＵ、ハンドル制御機能を有するＥＣＵ、ブレーキ制御機能を有するＥＣＵなどがある。
【００７１】
第１ＥＣＵ１は、ＣＡＮ３を介して、各第２ＥＣＵ２との間でデータを交換する。第２ＥＣＵ２は、ＣＡＮ３を介して、他の第２ＥＣＵ２との間でデータを交換する。
【００７２】
インフォテイメント機器３０２として、例えば、ナビゲーション機能、位置情報サービス機能、音楽や動画などのマルチメディア再生機能、音声通信機能、データ通信機能、インターネット接続機能などを有するものが挙げられる。インフォテイメント機器３０２は、外部機器４００と接続して、外部機器４００とデータを交換する。外部機器４００として、例えば、携帯通信端末やオーディオビジュアル機器などが挙げられる。インフォテイメント機器３０２は第１ＥＣＵ１に接続される。
【００７３】
診断ポート３０４は、診断ツール４１０を接続する。診断ツール４１０は、診断ポート３０４を介して、第１ＥＣＵ１や第２ＥＣＵ２等の更新プログラムのインストールやデータの設定変更などを実行する。診断ポート３０４として、例えばＯＢＤ（On-board Diagnostics）ポートを使用してもよい。
【００７４】
インフォテイメント機器３０２は、第１ＥＣＵ１を介して、ＣＡＮ３に接続されている第２ＥＣＵ２とデータを送受する。第１ＥＣＵ１は、インフォテイメント機器３０２と第２ＥＣＵ２との間のデータの送受を監視する。
【００７５】
診断ツール４１０は、診断ポート３０４及び第１ＥＣＵ１を介して、ＣＡＮ３に接続されている第２ＥＣＵ２とデータを送受する。第１ＥＣＵ１は、診断ツール４１０と第２ＥＣＵ２との間のデータの送受を監視する。
【００７６】
なお、車両に搭載される通信ネットワークとして、ＣＡＮ以外の通信ネットワークを自動車３００に備え、ＣＡＮ以外の通信ネットワークを介して、第１ＥＣＵ１と第２ＥＣＵ２との間のデータの交換、及び、第２ＥＣＵ２同士の間のデータの交換が行われてもよい。例えば、ＬＩＮ（Local Interconnect Network）を自動車３００に備えてもよい。また、ＣＡＮとＬＩＮとを自動車３００に備えてもよい。また、自動車３００において、ＬＩＮに接続する第２ＥＣＵ２を備えてもよい。また、第１ＥＣＵ１は、ＣＡＮとＬＩＮとに接続されてもよい。また、第１ＥＣＵ１は、ＣＡＮを介して該ＣＡＮに接続される第２ＥＣＵ２との間でデータを交換し、また、ＬＩＮを介して該ＬＩＮに接続される第２ＥＣＵ２との間でデータを交換してもよい。また、第２ＥＣＵ２同士が、ＬＩＮを介してデータを交換してもよい。
【００７７】
本実施形態によれば、ＭＡＣの生成及び検査に使用されるカウンタ値を第１ＥＣＵ１及び第２ＥＣＵ２で共有する処理として、定期的に、第１ＥＣＵ１からカウンタ値通知フレームによって各第２ＥＣＵ２へ同じカウンタ値を通知する。これにより、第１ＥＣＵ１と各第２ＥＣＵ２との間でカウンタ値の問い合わせのやり取りは不要であり、ＭＡＣの検査における効率の向上を図ることができるという効果が得られる。
【００７８】
なお、第１ＥＣＵ１は、カウンタ値のデータ長が一つのカウンタ値通知フレームに収まらないデータ長である場合には、カウンタ値のビット列を複数に分割し、該分割後の各ビット列を複数のカウンタ値通知フレームに分散して格納する。第２ＥＣＵ２は、一つのカウンタ値のビット列が分散して格納されている複数のカウンタ値通知フレームから、該一つのカウンタ値のビット列を復元する。この場合、該複数のカウンタ値通知フレームのデータフィールドに格納されるＭＡＣには、分割前の元のカウンタ値を使用して生成されたＭＡＣを使用する。
【００７９】
本実施形態において、第１ＥＣＵ１は、送信ノードと受信ノードとカウンタ値通知ノードとに対応する。また、第２ＥＣＵ２は、送信ノードと受信ノードとに対応する。また、カウンタ値通知フレームはカウンタ値通知メッセージに対応する。また、送信データ伝送フレームはメッセージに対応する。
【００８０】
なお、本実施形態において、カウンタ値通知ノードを単独のノードとして備えてもよい。また、上記の図８の自動車３００の構成例では、ゲートウェイ機能を有する第１ＥＣＵ１がカウンタ値通知ノードの機能を有したが、ゲートウェイ機能を有する第１ＥＣＵ１の代わりに一つの第２ＥＣＵ２がカウンタ値通知ノードの機能を有してもよい。
【００８１】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００８２】
上述した実施形態では、車両として自動車を例に挙げたが、原動機付自転車や鉄道車両等の自動車以外の他の車両にも適用可能である。
【００８３】
また、上述した第１ＥＣＵ１又は第２ＥＣＵ２の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disc）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００８４】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００８５】
１…第１ＥＣＵ、２…第２ＥＣＵ、３…ＣＡＮ、１０…通信ネットワークシステム、１１１，２１１…送信部、１１２，２１２…受信部、１１３，２１３…フレーム受信処理部、１１４，２１４…ＭＡＣ生成部、１１５，２１５…カウンタ部、１１６，２１６…ＭＡＣ検査部、１１７，２１７…セッション鍵記憶部、１１８…切替部、１１９…カウンタ制御部、１２０…カウンタ値生成部、１２１…暗号化部、２２０…カウンタ設定部、２２１…復号部、３００…自動車、３０２…インフォテイメント機器、３０４…診断ポート
【図１】
0006606809.tif 000002
【図２】
0006606809.tif 000003
【図３】
0006606809.tif 000004
【図４】
0006606809.tif 000005
【図５】
0006606809.tif 000006
【図６】
0006606809.tif 000007
【図７】
0006606809.tif 000008
【図８】
0006606809.tif 000009