(57)【要約】【課題】機器間で通信用カウンタの同期がずれた場合でもメッセージの検証を行うことができる。【解決手段】演算装置は、認証コードを含むメッセージを受信する通信部と、鍵が格納される記憶部と、通信部により受信されたメッセージから少なくとも認証コードを除くデータと、メッセージの受信に応じて更新されると共にメッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値と、異常が発生すると更新される第２のカウンタ値と、を含む検証対象データを対象として、鍵を用いて認証コードを生成し、メッセージに含まれる認証コードと生成した認証コードとが一致するか否かによりメッセージを検証するメッセージ検証部と、を備える。【選択図】図１
2017200040.tif 000002
【特許請求の範囲】
【請求項１】
認証コードを含むメッセージを受信する通信部と、
鍵が格納される記憶部と、
前記通信部により受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値と、前記異常が発生すると更新される第２のカウンタ値と、を含む検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証するメッセージ検証部と、を備える演算装置。
【請求項２】
請求項１に記載の演算装置において、
前記メッセージは、前記第１のカウンタ値または前記第２のカウンタ値を含み、
前記記憶部には、さらに前記第１のカウンタ値を取得するための第１のカウンタと、前記第２のカウンタ値を取得するための第２のカウンタとが格納され、
前記通信部により受信された前記メッセージに前記第１のカウンタ値が含まれている場合は、前記メッセージ検証部は、前記通信部により受信された前記メッセージに含まれる前記第１のカウンタ値と、前記第２のカウンタから取得した前記第２のカウンタ値とを用いて、前記認証コードを生成し、
前記通信部により受信された前記メッセージに前記第２のカウンタ値が含まれている場合は、前記メッセージ検証部は、前記第１のカウンタから取得した前記第１のカウンタ値と、前記通信部により受信された前記メッセージに含まれる前記第２のカウンタ値とを用いて、前記認証コードを生成する演算装置。
【請求項３】
請求項２に記載の演算装置において、
前記メッセージに含まれる前記第１のカウンタ値または前記第２のカウンタ値が、前記記憶部に格納された前記第１のカウンタの値または前記第２のカウンタの値よりもそれぞれ新しいか否かを判断する最新性検証部をさらに備え、
前記メッセージ検証部は、前記メッセージに含まれる前記第１のカウンタ値または前記第２のカウンタ値が前記記憶部に格納された前記第１のカウンタの値または前記第２のカウンタの値よりも新しいと前記最新性検証部が判断すると、前記認証コードを生成する演算装置。
【請求項４】
請求項３に記載の演算装置において、
前記最新性検証部が前記メッセージに含まれる前記第１のカウンタ値または前記第２のカウンタ値が前記記憶部に格納された前記第１のカウンタの値または前記第２のカウンタの値よりも新しいと判断すると、前記記憶部に格納される前記第１のカウンタの値または前記第２のカウンタの値を前記メッセージに含まれる前記第１のカウンタ値または前記第２のカウンタ値に更新する同期処理制御部をさらに備える演算装置。
【請求項５】
請求項１に記載の演算装置において、
前記記憶部には、さらに前記第１のカウンタ値を取得するための第１のカウンタと、前記第２のカウンタ値を取得するための第２のカウンタと、が格納され、
前記メッセージ検証部は、前記第１のカウンタから取得した前記第１のカウンタ値と、前記第２のカウンタから取得した前記第２のカウンタ値とを用いて、前記認証コードを生成する演算装置。
【請求項６】
メッセージを送信する通信部と、
前記メッセージの送受信に関する異常を検知する異常検知部と、
前記メッセージの送信に応じて更新されると共に前記異常検知部が前記異常を検知すると初期化される第１のカウンタ、前記異常検知部が前記異常を検知すると更新される第２のカウンタ、および鍵が格納される記憶部と、
前記第１のカウンタの値および前記第２のカウンタの値を含む検証対象データを対象とし、前記鍵を用いて認証コードを生成する検証情報生成部と、を備え、
前記通信部は、前記検証情報生成部により生成された前記認証コードを含む前記メッセージを送信する演算装置。
【請求項７】
請求項６に記載の演算装置において、
前記通信部は、
前記異常検知部が前記異常を検知した場合は、前記認証コードに加えて、前記第２のカウンタの値を含む前記メッセージを送信し、
前記異常検知部が前記異常を検知しない場合は、前記認証コードに加えて、前記第１のカウンタの値を含む前記メッセージを送信する演算装置。
【請求項８】
請求項２、請求項５または請求項６のいずれか１項に記載の演算装置において、
前記記憶部は、揮発性メモリと不揮発性メモリとを有し、
前記第１のカウンタは前記揮発性メモリに格納され、前記第２のカウンタは前記不揮発性メモリに格納される演算装置。
【請求項９】
請求項６に記載の演算装置において、
前記通信部は認証コードを含むメッセージを受信し、
前記通信部により受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値と、前記異常が発生すると更新される第２のカウンタ値と、を含む検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証するメッセージ検証部をさらに備え、
前記異常検知部は、前記メッセージ検証部が、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致すると判断すると異常を検知したと判断する演算装置。
【請求項１０】
ネットワークにより接続される、第１の演算装置、および第２の演算装置を含む認証システムであって、
前記第１の演算装置は、
メッセージを送信する第１通信部と、
前記メッセージの送受信に関する異常を検知する異常検知部と、
前記メッセージの送信に応じて更新されると共に前記異常検知部が前記異常を検知すると初期化される第１のカウンタ、前記異常検知部が前記異常を検知すると更新される第２のカウンタ、および鍵が格納される第１記憶部と、
前記第１のカウンタの値および前記第２のカウンタの値を含む検証対象データを対象とし、前記鍵を用いて認証コードを生成する検証情報生成部と、を備え、
前記第１通信部は、前記検証情報生成部により生成された前記認証コードを含む前記メッセージを送信し、
前記第２の演算装置は、
前記認証コードを含む前記メッセージを受信する第２通信部と、
前記鍵が格納される第２記憶部と、
前記第２通信部により受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第３のカウンタ値と、前記異常が発生すると更新される第４のカウンタ値と、を含む検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証するメッセージ検証部と、を備える認証システム。
【請求項１１】
ネットワークにより接続される、第１の演算装置、および第２の演算装置において実行される認証方法であって、
前記第１の演算装置は、
メッセージの送信に応じて更新されると共に前記メッセージの送受信に関する異常を検知すると初期化される第１のカウンタ、前記メッセージの送受信に関する異常を検知すると更新される第２のカウンタ、および鍵が格納される第１記憶部を備え、
前記第１のカウンタの値および前記第２のカウンタの値を含む第１検証対象データを対象とし、前記鍵を用いて認証コードを生成し、
前記生成された前記認証コードを含む前記メッセージを送信し、
前記第２の演算装置は、
前記鍵が格納される第２記憶部を備え、
前記認証コードを含む前記メッセージを受信し、
前記受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第３のカウンタ値と、前記異常が発生すると更新される第４のカウンタ値と、を含む第２検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証する、認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置、認証システム、および認証方法に関する。
【背景技術】
【０００２】
自動車の車載ネットワークにおける通信プロトコルとしてＣｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（以下、ＣＡＮ）が普及している。このような車載ネットワークでは、例えばＯＢＤ２（Ｏｎ−Ｂｏａｒｄ−Ｄｉａｇｎｏｓｔｉｃｓ  ２）ポートのような車載ネットワークに直接繋がっているインタフェースに不正な機器を接続し、不正なメッセージを車載ネットワークに送信される危険性がある。このとき、ＣＡＮには発信元（ソースアドレス）を示すフィールドがなく、なりすましが容易であり、特にリプレイ攻撃に対して脆弱である。ここで、リプレイ攻撃とは、通信路上を流れるメッセージを盗聴して事前に取得し、取得したメッセージを再送することで不正な動作を引き起こす攻撃である。特許文献１には、メインメッセージと、メインメッセージのメッセージ認証コード（Message Authentication Code: ＭＡＣ）を含むＭＡＣメッセージを送信することでメッセージの改竄を防止する構成が開示されている。特許文献１にはさらに、メインメッセージがネットワーク上を伝送する度にインクリメントするカウンタ値を記憶し、メインメッセージとカウンタ値に所定のアルゴリズムを適用してＭＡＣを生成することでリプレイ攻撃を防止する構成が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５７７０６０２号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、機器間でカウンタ値の同期がずれてしまうとメッセージを正しく検証できない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によると、演算装置は、認証コードを含むメッセージを受信する通信部と、鍵が格納される記憶部と、前記通信部により受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値と、前記異常が発生すると更新される第２のカウンタ値と、を含む検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証するメッセージ検証部と、を備える。
本発明の第２の態様によると、演算装置は、メッセージを送信する通信部と、前記メッセージの送受信に関する異常を検知する異常検知部と、前記メッセージの送信に応じて更新されると共に前記異常検知部が前記異常を検知すると初期化される第１のカウンタ、前記異常検知部が前記異常を検知すると更新される第２のカウンタ、および鍵が格納される記憶部と、前記第１のカウンタの値および前記第２のカウンタの値を含む検証対象データを対象とし、前記鍵を用いて認証コードを生成する検証情報生成部と、を備え、前記通信部は、前記検証情報生成部により生成された前記認証コードを含む前記メッセージを送信する。
本発明の第３の態様によると、認証システムは、ネットワークにより接続される、第１の演算装置、および第２の演算装置を含む認証システムであって、前記第１の演算装置は、メッセージを送信する第１通信部と、前記メッセージの送受信に関する異常を検知する異常検知部と、前記メッセージの送信に応じて更新されると共に前記異常検知部が前記異常を検知すると初期化される第１のカウンタ、前記異常検知部が前記異常を検知すると更新される第２のカウンタ、および鍵が格納される第１記憶部と、前記第１のカウンタの値および前記第２のカウンタの値を含む検証対象データを対象とし、前記鍵を用いて認証コードを生成する検証情報生成部と、を備え、前記第１通信部は、前記検証情報生成部により生成された前記認証コードを含む前記メッセージを送信し、前記第２の演算装置は、前記認証コードを含む前記メッセージを受信する第２通信部と、前記鍵が格納される第２記憶部と、前記第２通信部により受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第３のカウンタ値と、前記異常が発生すると更新される第４のカウンタ値と、を含む検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証するメッセージ検証部と、を備える。
本発明の第４の態様によると、認証方法は、ネットワークにより接続されメッセージを送受信する、第１演算装置、および第２演算装置において実行される認証方法であって、前記第１演算装置は、メッセージの送信に応じて更新されると共に前記メッセージの送受信に関する異常を検知すると初期化される第１のカウンタ、前記メッセージの送受信に関する異常を検知すると更新される第２のカウンタ、および鍵が格納される第１記憶部を備え、前記第１のカウンタの値および前記第２のカウンタの値を含む第１検証対象データを対象とし、前記鍵を用いて認証コードを生成し、前記生成された前記認証コードを含む前記メッセージを送信し、前記第２の演算装置は、前記鍵が格納される第２記憶部を備え、前記認証コードを含む前記メッセージを受信し、前記受信された前記メッセージから少なくとも前記認証コードを除くデータと、前記メッセージの受信に応じて更新されると共に前記メッセージの送受信に関する異常が発生すると初期化される第３のカウンタ値と、前記異常が発生すると更新される第４のカウンタ値と、を含む第２検証対象データを対象として、前記鍵を用いて認証コードを生成し、前記メッセージに含まれる前記認証コードと前記生成した認証コードとが一致するか否かにより前記メッセージを検証する。
【発明の効果】
【０００６】
本発明によれば、機器間で通信用カウンタの同期がずれた場合でもメッセージの検証を行うことができる。
【図面の簡単な説明】
【０００７】
【図１】ＥＣＵの構成を示す図
【図２】異常検知関連情報の一例を示す図
【図３】異常用カウンタの一例を示す図
【図４】通信用カウンタの一例を示す図
【図５】図５（ａ）は制御用メッセージのデータ構造を示す図、図５（ｂ）は同期依頼メッセージのデータ構造を示す図、図５（ｃ）は同期完了メッセージのデータ構造を示す図
【図６】通常時の認証シーケンスを示す図
【図７】異常検出時の同期シーケンスを示す図
【図８】同期シーケンスにおける送信側ＥＣＵの処理を表すフローチャート
【図９】同期シーケンスにおける受信側ＥＣＵの処理を表すフローチャート
【図１０】第２の実施の形態におけるホストＥＣＵの構成を示す図
【図１１】第２の実施の形態における同期シーケンスを示す図
【発明を実施するための形態】
【０００８】
（第１の実施の形態）
以下、図１〜図９を参照して、本発明に係る情報処理装置の一実施の形態である電子制御ユニット（Electronic Control Unit：以下、ＥＣＵ）の第１の実施の形態を説明する。ＥＣＵはたとえば車両内に複数設置され、これらは車両内のＣＡＮを介して互いに接続される。それぞれのＥＣＵは異なる機能、たとえばエンジン回転数の制御機能やパワーウインドの開閉機能を有するが、以下に説明する構成および機能は共通する。以下では、それぞれのＥＣＵが有する固有の機能は不図示の制御部により実行されることとし、ＥＣＵに共通する構成および機能を中心に説明する。
【０００９】
（ＭＡＣ）
本実施の形態では、「認証対象データ」と「鍵」とを用いてメッセージ認証コード、すなわちＭＡＣを生成する。一般に、「認証対象データ」と、その「認証対象データ」を対象として生成したＭＡＣとがセットで送信されるが、本実施の形態では「認証対象データ」から一部の情報を欠落させたデータと、「認証対象データ」を対象として生成したＭＡＣとを送信する。なお「認証対象データ」は“メッセージ”とも呼ばれるが、ＣＡＮのメッセージとの混同を避けるために本明細書では「認証対象データ」と呼ぶ。
【００１０】
（メッセージの構造）
ＣＡＮネットワークにおいて送受信されるメッセージは、メッセージの種類を示すＣＡＮ−ＩＤが格納されるヘッダと、電文内容であるペイロードとから構成される。換言すると、メッセージからヘッダを除いたものがペイロードである。
【００１１】
本実施の形態では、ＥＣＵが送信するメッセージの種類として通常メッセージと、同期依頼メッセージと、同期完了メッセージとがある。あるＥＣＵから送信されたメッセージが他のＥＣＵにより受信されると、当該ＥＣＵにおいて、受信したメッセージの種類が前述のヘッダに格納されたＣＡＮ−ＩＤにより判別される。以下では、同期依頼メッセージのヘッダに格納されるＣＡＮ−ＩＤを同期依頼ＩＤと呼び、同期完了メッセージのヘッダに格納されるＣＡＮ−ＩＤを同期完了ＩＤと呼ぶ。同期依頼ＩＤおよび同期完了ＩＤはあらかじめ定められており、全てのＥＣＵ間で同期依頼ＩＤおよび同期完了ＩＤの情報が共有されている。本実施の形態では、いずれのＥＣＵも同一の同期依頼ＩＤおよび同一の同期完了ＩＤを使用する。一方、通常メッセージのヘッダには、メッセージを送信するＥＣＵに固有のＣＡＮ−ＩＤ（以下、管理対象ＩＤ）が格納される。たとえば車両の速度情報をＣＡＮから取得したいＥＣＵは、車両の速度情報をＣＡＮに出力するＥＣＵの管理対象ＩＤがヘッダに含まれるメッセージをＣＡＮから取得する。
【００１２】
図１は、複数のＥＣＵ１が共通して備える構成を示す図である。ＥＣＵ１は、たとえばＣＡＮである通信バス２を介して互いに接続され、相互にメッセージ（フレームとも呼ばれる）を送受信する。すなわちＥＣＵ１は、送信機能と受信機能を兼ね備える。メッセージの構造は後述する。
ＥＣＵ１は、不図示のＣＰＵ、不図示のＲＯＭ、通信部１０、不揮発性メモリ１８、および揮発性メモリ１９を備える。ＥＣＵ１は、論理的な構成として、異常検知部１１と、受信したメッセージの最新性を検証する最新性検証部１２と、受信したメッセージの完全性を検証するメッセージ検証部１３と、メッセージを生成するメッセージ生成部１４と、異常用カウンタ１８２及び通信用カウンタ１９１を管理する最新性情報管理部１５と、送信するメッセージに含めるＭＡＣを生成する検証情報生成部１６と、同期処理制御部１７とを備える。ＥＣＵ１のこれら論理的な構成は、不図示のＲＯＭに格納されるプログラムをＣＰＵが実行することにより実現される。
【００１３】
通信部１０は、たとえばＣＡＮインタフェースである。通信部１０は、通信バス２へのメッセージの送信、および通信バス２からのメッセージの受信を行う。不揮発性メモリ１８は、たとえばフラッシュメモリであり、電源が消失しても不揮発性メモリ１８に格納された情報は保持される。不揮発性メモリ１８には、異常検知に必要なルールが格納される異常検知関連情報１８１と、異常検知時に更新される異常用カウンタ１８２と、ＭＡＣの生成に用いられる鍵１８３とが格納される。鍵１８３は、たとえば乱数であり全てのＥＣＵ１において同一の値である。揮発性メモリ１９は、たとえばＲＡＭである。揮発性メモリ１９には通信時に更新される通信用カウンタ１９１が格納される。
【００１４】
異常検知部１１は、ＥＣＵ１において発生する可能性があるメッセージの送受信に関する様々な異常を検知するハードウエアおよびソフトウエアを備え、検知した異常の内容に応じた情報を異常検知関連情報１８１に格納する。また異常検知部１１は、検出した異常の種類に応じて異常用カウンタ１８２を更新する。
異常検知部１１は、たとえば以下のようにして、ＥＣＵ１におけるメッセージの送受信に関する異常の一つである予期せぬ電源消失を検出する。異常検知部１１はＥＣＵ１の起動後に不揮発性メモリ１８に予期せぬ電源断を示すビットフラグを記録し、正常終了時の処理としてビットフラグを消去する。そして、次回起動時に不揮発性メモリ１８に予期せぬ電源消失を示すビットフラグが保存されているか否かにより予期せぬ電源消失が発生したか否かを判断する。これ以外にも、ＥＣＵ１において発生する様々な異常を、その異常の種類に応じた検出方法により検出することができる。最新性検証部１２、メッセージ検証部１３、メッセージ生成部１４、最新性情報管理部１５、検証情報生成部１６、および同期処理制御部１７の具体的な動作は後述する。
【００１５】
本実施の形態では、異常用カウンタ１８２、および通信用カウンタ１９１の更新とは、それぞれのカウンタの値をインクリメント、すなわち１増加させることとである。ただしあらかじめ乱数表を用意し、使用する乱数を順番に変更することによりカウンタの値を更新してもよい。また通信用カウンタ１９１の初期化とは、カウンタの値をゼロ等の初期値に戻すことである。ＲＯＭまたは不揮発性メモリ１８には、カウンタ値の更新ルール、およびカウンタ値の初期化ルールが格納される。そのため、ＥＣＵ１は２つのカウンタ値のどちらが新しいか、換言すると更新回数が多いのはどちらのカウンタ値なのかを判断できる。
【００１６】
（異常検知関連情報）
図２は、異常検知関連情報１８１の一例を示す図である。異常検知関連情報１８１は、異常コードと、異常内容と、発生状況・対象との組み合わせをたとえば表形式で１つ以上格納したものである。異常コードとは、異常の種類ごとにあらかじめ定義されたコードである。発生内容とは、発生した異常の種類である。発生状況とは、異常コードごとの発生有無である。図２は予期せぬタイミングで電源が消失した場合の例を示しており、異常コード「０ｘ０１」に対応する発生状況・対象が更新される。このとき、電源の消失による通信途絶の影響は接続されるすべてのＥＣＵに影響するため、発生状況・対象は「発生・全て」に更新される。
【００１７】
（異常用カウンタ）
図３は、異常用カウンタ１８２の一例を示す図である。異常用カウンタ１８２には、ＣＡＮ−ＩＤごとの異常用カウンタ値がたとえば表形式で格納される。図３に示す例では、０ｘ２Ｄ１のＣＡＮ−ＩＤでは２回の異常がカウントされている。異常用カウンタ１８２は異常検知部１１と最新性情報管理部１５により更新されるが、異常検知部１１により検出されたエラーにより更新される範囲が異なる。たとえば異常検知部１１が予期せぬ電源消失を検知した場合は、その影響は全てのＥＣＵに及ぶことが想定されるので、全てのＣＡＮ−ＩＤについてカウンタが更新される。しかし異常検知部１１が特定のＣＡＮ−ＩＤについて連続する通信メッセージの検証の失敗を検知すると、そのＣＡＮ−ＩＤのカウンタのみが更新される。
【００１８】
（通信用カウンタ）
図４は、通信用カウンタ１９１の一例を示す図である。通信用カウンタ１９１には、ＣＡＮ−ＩＤごとの通信用カウンタ値がたとえば表形式で格納される。このカウント値は当該ＣＡＮ−ＩＤをヘッダに含むメッセージを送信すると最新性情報管理部１５により更新され、当該ＣＡＮ−ＩＤをヘッダに含むメッセージを受信すると同期処理制御部１７により更新される。このカウント値は同期依頼メッセージを受信し所定の条件を満たすと同期処理制御部１７により初期化された値が格納される。図４に示す例では、「０ｘ２Ｄ１」のＣＡＮ−ＩＤは「０ｘ１０３Ｆ０２」回の通信がカウントされている。
【００１９】
（メッセージの構成）
図５は、メッセージの構造を示す図である。図５（ａ）は通常メッセージの構造を示し、図５（ｂ）は同期依頼メッセージの構造を示し、図５（ｃ）は同期完了メッセージの構造を示す。図５（ａ）に示す通常メッセージ７１０は、ＣＡＮ−ＩＤ７１１と、制御データ７１２と、通信用カウンタ値７１３と、ＭＡＣ７１４とから構成される。ＣＡＮ−ＩＤ７１１は、通常メッセージ７１０のヘッダであり、通常メッセージ７１０を送信するＥＣＵ１の管理対象ＩＤを表す。通信バス２に接続された他のＥＣＵ１はこのＣＡＮ−ＩＤ７１１に基づき受信したメッセージの処理の要否を判断する。制御データ７１２、通信用カウンタ値７１３、およびＭＡＣ７１４は、ペイロードである。ＣＡＮ−ＩＤ７１１、および制御データ７１２は、ＥＣＵ１の制御部が出力したものがそのまま使用される。通信用カウンタ値７１３は、通常メッセージ７１０を送信するＥＣＵ１の通信用カウンタ１９１に格納されるＣＡＮ−ＩＤ７１１に対応するカウンタの値である。たとえば、ＣＡＮ−ＩＤ７１１が「０ｘ２Ｄ１」であり、送信側のＥＣＵ１に記憶されている通信用カウンタ１９１が図４に示した例と同一の場合は、通信用カウンタ値７１３は、図４において「０ｘ２Ｄ１」のＣＡＮ−ＩＤに対応するカウンタ値である「０ｘ１０３Ｆ０２」となる。ＭＡＣ７１４は、通常メッセージ７１０を送信するＥＣＵ１の検証情報生成部１６により生成されたＭＡＣである。すなわちＭＡＣ７１４は、通常メッセージ７１０を送信するＥＣＵ１において、ＣＡＮ−ＩＤ７１１、制御データ７１２、通信用カウンタ値７１３、および異常用カウンタ１８２のＣＡＮ−ＩＤ７１１に対応するカウント値を「認証対象データ」とし、鍵１８３を「鍵」として生成されたＭＡＣである。
【００２０】
図５（ｂ）に示す同期依頼メッセージ７２０は、同期依頼ＩＤ７２１と、同期対象識別情報７２２と、異常用カウンタ値７２３と、ＭＡＣ７２４とから構成される。同期依頼ＩＤ７２１は、同期依頼メッセージ７２０のヘッダである。この同期依頼ＩＤ７２１はあらかじめ定められており、全てのＥＣＵが同一の同期依頼ＩＤを使用する。同期対象識別情報７２２には、同期対象となるＥＣＵを特定する情報、たとえば異常が検出されたＥＣＵの管理対象ＩＤが格納される。異常用カウンタ値７２３は、同期対象識別情報７２２において特定されるＥＣＵに対応する異常用カウンタ１８２のカウント値である。ＭＡＣ７２４は、同期依頼メッセージ７２０を送信するＥＣＵ１の検証情報生成部１６により生成されたＭＡＣである。すなわちＭＡＣ７２４は、同期依頼ＩＤ７２１、同期対象識別情報７２２、異常用カウンタ値７２３、および同期依頼メッセージ７２０を送信するＥＣＵ１に記憶されている通信用カウンタ１９１の同期対象識別情報７２２に対応するＥＣＵのカウント値を「認証対象データ」とし、鍵１８３を「鍵」として生成されたＭＡＣである。
【００２１】
図５（ｃ）に示す同期完了メッセージ７３０は、同期完了ＩＤ７３１と、同期対象識別情報７３２と、通信用カウンタ値７３３と、ＭＡＣ７３４とから構成される。同期完了ＩＤ７３１は、同期完了メッセージ７３０のヘッダである。この同期完了ＩＤ７３１はあらかじめ定められており、全てのＥＣＵが同一の同期完了ＩＤ７３１を使用する。同期対象識別情報７３２には、同期が完了したＥＣＵを特定する情報、すなわち当該同期完了メッセージ７３０を送信するＥＣＵの管理対象ＩＤが格納される。通信用カウンタ値７３３は、同期完了メッセージ７３０を送信するＥＣＵ１の通信用カウンタ１９１において当該ＥＣＵ１に対応するカウンタ値であり、後述するように初期化された後のカウンタ値である。ＭＡＣ７３４は、同期完了メッセージ７３０を送信するＥＣＵ１の検証情報生成部１６により生成されたＭＡＣである。すなわちＭＡＣ７３４は、同期完了ＩＤ７３１、同期対象識別情報７３２、通信用カウンタ値７３３、および同期完了メッセージ７３０を送信するＥＣＵ１に記憶されている異常用カウンタ１８２の同期対象識別情報７３２に対応するＥＣＵのカウント値を「認証対象データ」とし、鍵１８３を「鍵」として生成されたＭＡＣである。
【００２２】
以下の説明では、メッセージを送信するＥＣＵを便宜的に送信側ＥＣＵ１Ｓ、メッセージを受信するＥＣＵを受信側ＥＣＵ１Ｒと呼ぶ。
【００２３】
（通常時の処理）
図６は、通常時の認証シーケンスを示す図である。図６において図示上方から下方に向かって時間が経過している。送信側ＥＣＵ１Ｓの制御部が制御データの送信を決定すると、図６のシーケンスが開始される。すなわち、図５におけるＣＡＮ−ＩＤ７１１と制御データ７１２が決定された状態で図６のシーケンスが開始される。
【００２４】
以下に説明するステップＳ３２１〜Ｓ３２４は、送信側ＥＣＵ１Ｓにおいて実行されるシーケンスである。
ステップＳ３２１では、最新性情報管理部１５は異常用カウンタ１８２から制御部が決定したＣＡＮ−ＩＤ７１１に対応する異常用カウンタ値を取得する。続くステップＳ３２２では、最新性情報管理部１５は通信用カウンタ１９１から制御部が決定したＣＡＮ−ＩＤ７１１に対応するカウンタ値を取得し、当該カウンタ値を更新、すなわちインクリメントすることで、通信用カウンタ値７１３を更新する。続くステップＳ３２３では、検証情報生成部１６は、制御部が決定したＣＡＮ−ＩＤ７１１および制御データ７１２と、ステップＳ３２１で取得した異常用カウンタ値と、ステップＳ３２２で更新した通信用カウンタ値７１３と、を対象としてＭＡＣ７１４を生成する。ＭＡＣ７１４の生成アルゴリズムとして、たとえばＣＭＡＣ（Cipher-based MAC）やＨＭＡＣ（Hash-based MAC）を用いることができる。
【００２５】
続くステップＳ３２４では、メッセージ生成部１４は制御部が決定したＣＡＮ−ＩＤ７１１および制御データ７１２と、ステップＳ３２２で更新した通信用カウンタ値７１３と、ステップＳ３２３で生成したＭＡＣ７１４とを含む通常メッセージ７１０を生成する。続くステップＳ３２５では、通信部１０はステップＳ３２４で生成された通常メッセージ７１０を通信バス２に送信する。
【００２６】
以下に説明するステップＳ３１１〜Ｓ３１５は、受信側ＥＣＵ１Ｒにおいて実行されるシーケンスである。
ステップＳ３１１では、受信側ＥＣＵ１Ｒの通信部１０はステップＳ３２５で送信側ＥＣＵ１Ｓから送信された通常メッセージ７１０を受信し、受信した通常メッセージ７１０をチェックする。すなわち受信した通常メッセージ７１０のヘッダであるＣＡＮ−ＩＤ７１１（以下、受信ヘッダＩＤ）を取得し、当該受信ヘッダＩＤが受信側ＥＣＵ１Ｒにおいて取得すべきメッセージを出力する送信側ＥＣＵ１Ｓの管理対象ＩＤである場合はステップＳ３１２に進み、送信側ＥＣＵ１Ｓの管理対象ＩＤでない場合は、本処理を終了する。
【００２７】
ステップＳ３１２では、最新性検証部１２は受信した通常メッセージ７１０に含まれる通信用カウンタ値７１３（以下「送信側カウンタ値」）と、受信側ＥＣＵ１Ｒの通信用カウンタ１９１において受信ヘッダＩＤに対応する通信用カウンタ値（以下「受信側カウンタ値」）を取得する。そして、２つのカウンタ値の新旧を比較し、送信側カウンタ値が受信側カウンタ値よりも新しい、すなわち送信側カウンタ値が最新であると判断する場合はステップＳ３１３に進み、送信側カウンタ値と受信側カウンタ値が等しい、または送信側カウンタ値よりも受信側カウンタ値が新しいと判断する場合は本処理を終了する。ただし、送信側カウンタ値と受信側カウンタ値との差が所定の閾値を超える場合には、差が大きすぎることを理由に最新ではないと判断してもよい。なお、送信側ＥＣＵ１Ｓが通常メッセージを作成する以前のたとえばステップＳ３２１の時点では、送信側カウンタ値と受信側カウンタ値は等しいことが期待される。そして送信側カウンタ値のみがステップＳ３２２において更新されるため、理想的な状態では両者の差は１である。
【００２８】
ステップＳ３１３では、メッセージ検証部１３は、以下のように「認証対象データ」を作成し、受信側ＥＣＵ１Ｒの鍵１８３を「鍵」として、受信したメッセージの正当性を検証するためのＭＡＣ（以下、検証用ＭＡＣ）を算出する。このときに検証用ＭＡＣを算出するための「認証対象データ」は、受信した通常メッセージ７１０に含まれるＣＡＮ−ＩＤ７１１および制御データ７１２と、ステップＳ３１２で最新性が確認された送信側カウンタ値、すなわち受信した通常メッセージ７１０に含まれる通信用カウンタ値７１３と、受信側ＥＣＵ１Ｒの異常用カウンタ１８２において受信ヘッダＩＤに対応する異常用カウンタ値と、に基づき作成される。メッセージ検証部１３は、算出した検証用ＭＡＣと受信した通常メッセージに含まれるＭＡＣ値７１４とを比較し、一致している場合はステップＳ３１４に進み、一致していない場合は本処理を終了する。
【００２９】
ステップＳ３１４では、同期処理制御部１７は受信した通常メッセージ７１０に含まれる通信用カウンタ値７１３を通信用カウンタ１９１に格納する。すなわち本処理によって、受信側ＥＣＵ１Ｒにおいても、送信側カウンタ値に合わせて受信側カウンタ値が更新される。続くステップＳ３１５では、受信側ＥＣＵ１Ｒの制御部は、受信した通常メッセージ７１０に含まれる制御データ７１２に基づいて所定の制御処理を実行する。
以上のシーケンス処理により、送信側ＥＣＵ１Ｓと受信側ＥＣＵ１Ｒとの間における通信メッセージに対して、メッセージ認証によって正しいと判断された制御データを用いた制御処理を実行できる。
【００３０】
（異常検出時の処理）
図７は、異常検出時の同期シーケンスを示す図である。図７において図示上方から下方に向かって時間が経過している。送信側ＥＣＵ１Ｓの異常検知部１１が異常を検知すると、異常検知部１１は異常検知関連情報１８１の発生状況の欄を更新し、図７のシーケンスが開始される。
【００３１】
ステップＳ４１１では、最新性情報管理部１５は異常検知関連情報１８１を参照して発生した異常が影響するＣＡＮ−ＩＤ（以下、異常影響ＣＡＮ−ＩＤ）を判断する。続くステップＳ４１２では最新性情報管理部１５は、異常用カウンタ１８２から異常影響ＣＡＮ−ＩＤのカウンタ値を取得し、当該カウンタの値を更新することで、異常用カウンタ値７２３を更新する。たとえば、検知された異常が異常コード０ｘ１の予期せぬ電源消失であれば異常用カウンタ１８２に掲載される全てのＣＡＮ−ＩＤの異常用カウンタ値をインクリメントする。また、検知された異常が異常コード０ｘ２の連続する通信メッセージの認証失敗であれば、連続して認証が失敗した通信に係るＣＡＮ−ＩＤの異常用カウンタ値をインクリメントする。
【００３２】
続くステップＳ４１３では、最新性情報管理部１５は所定のルールに従って通信用カウンタ１９１の初期値を取得する。例えば、あらかじめ定めた値であるゼロを初期化された通信用カウンタ値とする。続くステップＳ４１４では、検証情報生成部１６は同期依頼ＩＤ７２１と、ステップＳ４１１において判断した異常影響ＣＡＮ−ＩＤである同期対象識別情報７２２と、ステップＳ４１２で更新した異常用カウンタ値７２３と、ステップＳ４１３で取得した初期化後の通信用カウンタ値と、を対象としてＭＡＣ７２４を生成する。そしてメッセージ生成部１４は、同期依頼ＩＤ７２１がヘッダに格納され、同期対象識別情報７２２、当該異常用カウンタ値７２３、および生成したＭＡＣ７２４がペイロードに格納された同期依頼メッセージ７２０を生成する。続くステップＳ４１５では、通信部１０はステップＳ４１４で生成した同期依頼メッセージ７２０を通信バス２に送信する。続くステップＳ４１６では、同期処理制御部１７はステップＳ４１２で更新された異常用カウンタ値を異常用カウンタ１８２に登録し、ステップＳ４１３で初期化された通信用カウンタ値を通信用カウンタ１９１に登録する。
【００３３】
送信側ＥＣＵ１Ｓの通信部１０がステップＳ４１５において送信した同期依頼メッセージ７２０が受信側ＥＣＵ１Ｒの通信部１０に受信されると、受信側ＥＣＵ１ＲにおいてステップＳ４２１の処理が実行される。
ステップＳ４２１では、受信側ＥＣＵ１Ｒの通信部１０は同期依頼ＩＤ７２１を含んだ同期依頼メッセージ７２０を受信する。そして、受信した同期依頼メッセージ７２０から同期対象識別情報７２２を特定し、同期対象識別情報７２２に当該受信側ＥＣＵ１Ｒの管理対象ＩＤが含まれるか否か、換言すると当該受信側ＥＣＵ１Ｒが同期処理を行う必要の有無を判断する。ここでは同期処理を行う必要があると判断されたとしてステップＳ４２２に進む。
【００３４】
ステップＳ４２２では、最新性情報管理部１５は所定のルールに従って通信用カウンタ１９１の初期値を取得する。例えば、あらかじめ定めた値であるゼロを初期化された通信用カウンタ値とする。続くステップＳ４２３では、最新性情報管理部１５は異常用カウンタ１８２から受信側ＥＣＵ１Ｒの管理対象ＩＤの異常用カウンタ値を取得する。なお、本ステップでは異常用カウンタ値を取得するのみであり、ステップＳ４１２のようなカウンタ値の更新は行わない。
【００３５】
続くステップＳ４２４では、最新性検証部１２は受信した同期依頼メッセージ７２０に含まれる異常用カウンタ値７２３と、ステップＳ４２４で取得した異常用カウンタ１８２のカウンタ値とを比較する。受信した異常用カウンタ値７２３が異常用カウンタ１８２のカウンタ値よりも新しい、すなわち最新のものであることが確認できた場合は、ステップＳ４２５に進み、それ以外の場合は本処理を終了する。例えば、最新性を検証する方法として、受信した異常用カウンタ値７２３が異常用カウンタ１８２の値よりも大きい場合は最新であると判断する。また、その差分に閾値を設けて、受信した異常用カウンタ値７２３と異常用カウンタ１８２の値の差が閾値を超える場合は本処理を終了してもよい。
【００３６】
続くステップＳ４２５では、メッセージ検証部１３は、受信した同期依頼メッセージ７２０に含まれてステップＳ４２４で最新性が確認された異常用カウンタ値７２３と、ステップＳ４２２で取得した通信用カウンタ１９１の初期値と、同期依頼用ＣＡＮ−ＩＤ７２１とを「認証対象データ」として、図６のステップＳ３１３と同様に、検証用ＭＡＣを生成する。そしてメッセージ検証部１３は、受信した同期依頼メッセージ７２０に含まれるＭＡＣ７２４と算出した検証用ＭＡＣとを比較し、一致していると判断する場合はステップＳ４２６に進み、一致していないと判断する場合は本処理を終了する。
【００３７】
ステップＳ４２６では、同期処理制御部１７はステップＳ４２１において受信した同期依頼メッセージ７２０に含まれる異常用カウンタ値７２３を異常用カウンタ１８２における受信側ＥＣＵ１Ｒの管理対象ＩＤの異常用カウンタ値として格納し、ステップＳ４２２で取得した通信用カウンタ１９１の初期値を通信用カウンタ１９１における受信側ＥＣＵ１Ｒの管理対象ＩＤの通信用カウンタ値として格納する。続くステップＳ４２７では、メッセージ生成部１４は同期完了を示すＣＡＮ−ＩＤが同期完了ＩＤ７３１としてヘッダに格納され、当該受信側ＥＣＵ１Ｒを示す同期対象識別情報７３２がペイロードに格納された同期完了メッセージ７３０を生成する。続くステップＳ４２８では、通信部１０はステップＳ４２７において生成した同期完了メッセージ７３０を通信バス２に送信する。
【００３８】
ステップＳ４１７では、同期処理制御部１７は同期完了メッセージ７３０を受信すると、同期シーケンスを完了する。
以上のステップにより、送信側ＥＣＵ１Ｓは受信側ＥＣＵ１Ｒに同期依頼メッセージ７２０を送信し、受信側ＥＣＵ１Ｒは所定のルールに従って異常用カウンタ１８２及び通信用カウンタ１９１を更新し、送信側ＥＣＵ１Ｓと受信側ＥＣＵ１Ｒとで共有される通信用カウンタ１９１の値を再同期できる。
【００３９】
（フローチャート  依頼送信側）
図８は、図７に示す異常検出時の同期シーケンスにおける送信側ＥＣＵ１Ｓの処理、すなわち図７のステップＳ４１１〜Ｓ４１７の処理を表すフローチャートである。ＥＣＵ１は一定時間ごとに図８に示す処理を実行する。
【００４０】
ステップＳ５０１では、異常検知部１１は送信側ＥＣＵ１Ｓの異常を検知したか否かを判断する。異常検知部１１は、異常を検知したと判断する場合は検出した異常に基づき異常検知関連情報１８１を更新してステップＳ５０２に進む。この異常検知関連情報１８１の更新により、異常影響ＣＡＮ−ＩＤを判別可能な情報も異常検知関連情報１８１に格納される。異常検知部１１は、異常を検出していないと判断する場合はステップＳ５１２に進み通常処理を行う。ステップＳ５１２における通常処理は、図６を用いて説明したのでここでは説明を省略する。
【００４１】
ステップＳ５０２では、最新性情報管理部１５は異常検知関連情報１８１を参照し、発生した異常が影響するＣＡＮ−ＩＤ、すなわち異常影響ＣＡＮ−ＩＤを判断する。そして異常用カウンタ１８２から異常影響ＣＡＮ−ＩＤのカウンタ値を取得し、当該異常用カウンタ１８２の値を更新する。なお、複数のＣＡＮ−ＩＤに異常の影響が生じる場合は、それぞれの異常影響ＣＡＮ−ＩＤを対象としてステップＳ５０２以下の処理が実行される。続くステップＳ５０３では、最新性情報管理部１５は異常影響ＣＡＮ−ＩＤに紐づく通信用カウンタ値の初期値を取得する。続くステップＳ５０４では、検証情報生成部１６はステップＳ５０３で更新した異常用カウンタ１８２の値とステップＳ５０４で取得した初期化後の通信用カウンタ値と、同期依頼を示すＣＡＮ−ＩＤとを対象としてＭＡＣ７２４を生成する。次にステップＳ５０５に進む。
【００４２】
ステップＳ５０５では、メッセージ生成部１４は同期依頼を示すＣＡＮ−ＩＤが同期依頼ＩＤ７２１としてヘッダに格納され、異常影響ＣＡＮ−ＩＤを示す同期対象識別情報７２２、当該異常用カウンタ１８２の値を示す異常用カウンタ値７２３、および生成したＭＡＣ７２４がペイロードに格納された同期依頼メッセージ７２０を生成する。続くステップＳ５０６では、通信部１０はステップＳ５０５で生成した同期依頼メッセージ７２０を通信バス２へ送信する。続くステップＳ５０７では、同期処理制御部１７はステップＳ５０２において更新された異常用カウンタ値を、異常用カウンタ１８２における異常影響ＣＡＮ−ＩＤのカウンタ値として登録する。さらに同期処理制御部１７は、ステップＳ５０３において初期化された通信用カウンタ値を通信用カウンタ１９１における異常影響ＣＡＮ−ＩＤのカウンタ値として登録する。次にステップＳ５０８に進む。
【００４３】
ステップＳ５０８では、通信部１０は受信側ＥＣＵ１Ｒから送られてくる同期完了メッセージ７３０を一定時間待ち受け、ステップＳ５０９に進む。ステップＳ５０９では、通信部１０は受信側ＥＣＵ１Ｒから同期完了メッセージ７３０を受信したか否かを判断する。同期完了メッセージ７３０を受信したと判断する場合はステップＳ５１０に進み、同期完了メッセージ７３０を受信していないと判断する場合はステップＳ５１１に進む。
【００４４】
ステップＳ５１０では、同期処理制御部１７は同期完了処理、すなわち異常検知関連情報１８１の発生状況を「なし」に更新し図８に示す処理を終了する。ステップＳ５１１では、同期処理制御部１７は異常検知関連情報１８１において同期処理が失敗したことを示すために、異常コードの発生状況を「発生」に更新し、図８に示す処理を終了する。
【００４５】
以上の処理により、送信側ＥＣＵ１Ｓは、異常を検知した場合に生成する同期依頼メッセージ７２０を受信側ＥＣＵ１Ｒに送信し、受信側ＥＣＵ１Ｒから同期完了メッセージ７３０を受信した場合に、同期が取れたことを確認できる。なお、異常が頻繁に発生する場合は故障の可能性もあるため、別途エラー処理に移行してもよい。
【００４６】
（フローチャート  同期依頼受信側）
図９は、図７に示す異常検出時の同期シーケンスにおける受信側ＥＣＵ１Ｒの処理、すなわち図７のステップＳ４２１〜Ｓ４２８の処理を表すフローチャートである。ＥＣＵ１が同期依頼メッセージ７２０を受信すると図９に示す処理が開始される。
【００４７】
ステップＳ６０１では、通信部１０は同期依頼ＩＤ７２１を含んだ同期依頼メッセージ７２０を受信したか否かを判断し、肯定を判断する場合はステップＳ６０２に進み、否定判断をする場合はステップＳ６１３に進む。ステップＳ６１３における通常処理は、図６を用いて説明したのでここでは説明を省略する。
ステップＳ６０２では、通信部１０は受信した同期依頼メッセージ７２０から同期対象識別情報７２２を取得しステップＳ６０３に進む。
【００４８】
ステップＳ６０３では、通信部１０はステップＳ６０２で取得した同期対象識別情報７２２に当該受信側ＥＣＵ１Ｒの管理対象ＩＤが含まれるか否かを判断する。通信部１０は受信側ＥＣＵ１Ｒの管理対象ＩＤが含まれると判断する場合はステップＳ６０４に進み、管理対象ＩＤが含まれないと判断する場合は図９に示す処理を終了する。
【００４９】
ステップＳ６０４では、最新性情報管理部１５は所定のルールに従って通信用カウンタ１９１の初期値を取得しステップＳ６０５に進む。ステップＳ６０５では、最新性情報管理部１５は異常用カウンタ１８２から受信側ＥＣＵ１Ｒの管理対象ＩＤの異常用カウンタ値を取得する。
【００５０】
ステップＳ６０６では、最新性検証部１２は受信した同期依頼メッセージ７２０に含まれる異常用カウンタ値７２３と、ステップＳ６０５で取得した異常用カウンタ１８２のカウンタ値とを比較し、異常用カウンタ値７２３の最新性を確認する。続くステップＳ６０７では、最新性検証部１２はステップＳ６０６における比較の結果、同期依頼メッセージ７２０に含まれる異常用カウンタ値７２３がステップＳ６０４で取得した当該受信側ＥＣＵ１Ｒのカウンタ値よりも新しいことが確認できた場合はステップＳ６０８に進み、それが確認できなかった場合は図９に示す処理を終了する。
【００５１】
ステップＳ６０８では、メッセージ検証部１３はステップＳ６０７において最新性が確認された異常用カウンタ値７２３と、ステップＳ６０４において取得した通信用カウンタ１９１の初期値と、同期依頼ＣＡＮ−ＩＤ７２２とを「認証対象データ」として検証用ＭＡＣを生成する。そしてメッセージ検証部１３は、受信した同期依頼メッセージ７２０に含まれるＭＡＣ７２４と算出した検証用ＭＡＣとを比較してステップＳ６０９に進む。ステップＳ６０９では、メッセージ検証部１３はステップＳ６０８における比較の結果、ＭＡＣ７２４と検証用ＭＡＣが一致していると判断する場合はステップＳ６１０に進み、一致していないと判断する場合は図９に示す処理を終了する。
【００５２】
ステップＳ６１０では、同期処理制御部１７は受信した同期依頼メッセージ７２０に含まれる異常用カウンタ値７２３を異常用カウンタ１８２における受信側ＥＣＵ１Ｒの管理対象ＩＤの異常用カウンタ値として格納し、ステップＳ６０４で取得した通信用カウンタ１９１の初期値を通信用カウンタ１９１における受信側ＥＣＵ１Ｒの管理対象ＩＤの通信用カウンタ値として格納する。次にステップＳ６１１に進む。
【００５３】
ステップＳ６１１では、メッセージ生成部１４は同期完了ＩＤ７３１がヘッダに格納され、当該受信側ＥＣＵ１Ｒを示す同期対象識別情報７３２がペイロードに格納された同期完了メッセージ７３０を生成する。続くステップＳ６１２では、通信部１０はステップＳ６１１において生成した同期完了メッセージ７３０を通信バス２に送信し、図９に示す処理を終了する。
【００５４】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）ＥＣＵ１は、認証コード、すなわちＭＡＣを含むメッセージを受信する通信部１０と、鍵１８３が格納される記憶部、すなわち不揮発性メモリ１８および揮発性メモリ１９と、通信部１０により受信されたメッセージから少なくとも認証コードを除くデータと、メッセージの受信に応じて更新されると共にメッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値、すなわち通信用カウンタ１９１のカウンタ値と、異常が発生すると更新される第２のカウンタ値、すなわち異常用カウンタ１８２のカウンタ値と、を含む検証対象データを対象として、鍵１８３を用いて認証コードを生成し、メッセージに含まれる認証コードと生成した認証コードとが一致するか否かによりメッセージを検証するメッセージ検証部１３と、を備える。
【００５５】
ＥＣＵ１は、通信時に更新される通信用カウンタ１９１と、異常時に更新される異常用カウンタ１８２を備える。ＥＣＵ１は、同期依頼ＩＤ７２１が含まれない通常メッセージを受信した場合は、更新した通信用カウンタ１９１の値と記憶された異常用カウンタ１８２の値を用いてＭＡＣを生成して受信したメッセージを検証する。ＥＣＵ１は、同期依頼ＩＤ７２１を含む同期依頼メッセージを受信した場合は、初期化した通信用カウンタ１９１の値と更新された異常用カウンタ１８２の値を用いてＭＡＣを生成して受信したメッセージを検証する。そのためＥＣＵ１は、メッセージ送信元と通信用カウンタ１９１の同期がずれてしまった場合でも異常用カウンタ１８２を用いてメッセージの検証を行うことができる。通信用カウンタ１９１は通信が行われるたびに更新されるため、予期せぬ電源の消失や通信路のノイズにより送信側のみが更新され、送信側と受信側で通信用カウンタ１９１の同期がずれる恐れがある。異常用カウンタ１８２ではそのような恐れがない。
【００５６】
（２）メッセージは、第１のカウンタ値または第２のカウンタ値を含み、記憶部には、さらに第１のカウンタ値を取得するための第１のカウンタ、すなわち通信用カウンタ１９１と、第２のカウンタ値を取得するための第２のカウンタ、すなわち異常用カウンタ１８２とが格納される。通信部１０により受信されたメッセージに第１のカウンタ値が含まれている場合は、メッセージ検証部は、通信部により受信されたメッセージに含まれる第１のカウンタ値と、第２のカウンタから取得した第２のカウンタ値とを用いて、認証コードを生成し、通信部１０により受信されたメッセージに第２のカウンタ値が含まれている場合は、メッセージ検証部は、第１のカウンタから取得した第１のカウンタ値と、通信部１０により受信されたメッセージに含まれる第２のカウンタ値とを用いて、認証コードを生成する。受信した値をＭＡＣの算出にも散るので、通信回数のカウントや異常の発生回数のカウントの、送信側ＥＣＵ１Ｓと受信側ＥＣＵ１Ｒとの相違を許容できる。
【００５７】
（３）メッセージに含まれる第１のカウンタ値または第２のカウンタ値が、記憶部に格納された第１のカウンタの値または第２のカウンタの値よりもそれぞれ新しいか否かを判断する最新性検証部１２をさらに備える。メッセージ検証部１３は、メッセージに含まれる第１のカウンタ値または第２のカウンタ値が記憶部に格納された第１のカウンタの値または第２のカウンタの値よりも新しいと最新性検証部１２が判断すると、認証コードを生成する。そのためＥＣＵ１は、受信した通常メッセージ７１０、および同期依頼メッセージ７２０の最新性を確認することができる。
【００５８】
（４）最新性検証部１２がメッセージに含まれる第１のカウンタ値または第２のカウンタ値が記憶部に格納された第１のカウンタの値または第２のカウンタの値よりも新しいと判断すると、記憶部に格納される第１のカウンタの値または第２のカウンタの値をメッセージに含まれる第１のカウンタ値または第２のカウンタ値に更新する同期処理制御部１７を備える。そのため、ＥＣＵ１は、通信用カウンタ１９１の値、または異常用カウンタ１８２の値をメッセージを送信した他のＥＣＵ１と同期できる。
【００５９】
（５）メッセージを送信する通信部１０と、メッセージの送受信に関する異常を検知する異常検知部１１と、メッセージの送信に応じて更新されると共に異常検知部が異常を検知すると初期化される第１のカウンタ、すなわち通信用カウンタ１９１、異常検知部が異常を検知すると更新される第２のカウンタ、すなわち異常用カウンタ１８２および鍵１８３が格納される記憶部、すなわち不揮発性メモリ１８および揮発性メモリ１９と、第１のカウンタの値および第２のカウンタの値を含む検証対象データを対象とし、鍵を用いて認証コードを生成する検証情報生成部１６と、を備える。通信部１０は、検証情報生成部１６により生成された認証コードを含むメッセージを送信する。
そのためＥＣＵ１は、異常が検知されたことにより通信用カウンタ１９１の同期が受信側とずれたことが想定されると、初期化した通信用カウンタ１９１の値と異常用カウンタ１８２の値を用いて認証情報を生成することができる。
【００６０】
（６）通信部１０は、異常検知部１１が異常を検知した場合は、認証コードに加えて、第２のカウンタの値を含む同期依頼メッセージ７２０を送信し、異常検知部１１が異常を検知しない場合は、認証コードに加えて、第１のカウンタの値を含む通常メッセージ７１０を送信する。
そのためＥＣＵ１はデータの新しさを示す情報、すなわちカウンタ値をあわせて送信し、受信側でデータの新しさを検証させることができる。送信データに含まれるＭＡＣは、このカウンタ値を含む検証対象データを対象として算出されるので、鍵１８３を持たない第三者がカウンタ値を書き換えても、受信側のメッセージ検証部１３でエラーとなるのでデータ改竄の対策として有効である。
【００６１】
（７）記憶部は、揮発性メモリ１９と不揮発性メモリ１８とを有し、第１のカウンタ、すなわち通信用カウンタ１９１は揮発性メモリ１９に格納され、第２のカウンタ、すなわち異常用カウンタ１８２は不揮発性メモリ１８に格納される。
そのため意図しない電源消失が生じても異常用カウンタ１８２の値を保持できる。通信用カウンタ１９１は、ＥＣＵ１が備える再同期の仕組みにより他の機器と再同期が可能なので電源消失時に値を保持する必要性が少ない。また通信用カウンタ１９１は異常用カウンタ１８２に比べて頻繁に書き換えが生じるので、書き換え回数の制限が緩やかな揮発性メモリ１９に格納することにより製品寿命を長くすることができる。
【００６２】
（変形例１）
同期依頼メッセージ７２０に異常用カウンタ値７２３が含まれなくてもよい。この場合は、同期依頼メッセージ７２０を受信したＥＣＵ１は、自ら異常を検知して更新した異常用カウンタ１８２のカウンタ値、または当該同期依頼メッセージ７２０を受信したことを理由として更新した異常用カウンタ１８２のカウンタ値を用いてＭＡＣを生成し、受信した同期依頼メッセージ７２０を検証する。
この変形例１によれば、次の作用効果が得られる。
（１）記憶部には、第１のカウンタ値を取得するための第１のカウンタ、すなわち通信用カウンタ１９１と、第２のカウンタ値を取得するための第２のカウンタ、すなわち異常用カウンタ１８２と、が格納される。メッセージ検証部１３は、第１のカウンタから取得した第１のカウンタ値と、第２のカウンタから取得した第２のカウンタ値とを用いて、認証コードを生成する。そのため、異常用カウンタ値７２３を含めないことによりメッセージのサイズを縮小することができる。
【００６３】
（変形例２）
通常メッセージ７１０に通信用カウンタ値７１３が含まれなくてもよい。この場合は通常メッセージ７１０を受信したＥＣＵ１は、当該通常メッセージ７１０を受信したことを理由として更新した通信用カウンタ１９１の値を用いてＭＡＣを生成し、受信した通常メッセージ７１０を検証する。
この変形例２によれば、次の作用効果が得られる。
（１）記憶部には、第１のカウンタ値を取得するための第１のカウンタ、すなわち通信用カウンタ１９１と、第２のカウンタ値を取得するための第２のカウンタ、すなわち異常用カウンタ１８２と、が格納される。メッセージ検証部１３は、第１のカウンタから取得した第１のカウンタ値と、第２のカウンタから取得した第２のカウンタ値とを用いて、認証コードを生成する。そのため、通信用カウンタ値７１３を含めないことによりメッセージのサイズを縮小することができる。もしくは、通信用カウンタ値７１３を削減した分だけ制御データ７１２のデータを増加させることができる。
【００６４】
（変形例３）
第１の実施の形態では、同期依頼メッセージ、および同期完了メッセージに含まれる同期対象識別情報７２２としてＣＡＮ−ＩＤを用いた。しかし同期対象識別情報７２２はＣＡＮ−ＩＤに限定されず、それぞれの機器を識別可能な情報であればよい。たとえば別途定義されたそれぞれのＥＣＵ１に固有のＩＤを同期対象識別情報７２２として用いてもよい。
【００６５】
（変形例４）
異常用カウンタ１８２、通信用カウンタ１９１においてＣＡＮ−ＩＤに代えてデバイスを識別できる情報、たとえばそれぞれのＥＣＵ１に固有のＩＤを用いてもよい。
【００６６】
（変形例５）
同期依頼メッセージのヘッダとして、同期対象ＣＡＮ−ＩＤごとに異なるＣＡＮ−ＩＤを用いてもよい。たとえば制御用通信メッセージに使用されるＣＡＮ−ＩＤを０ｘ０００〜０ｘ３ＦＦに制限し、それぞれに対応させる同期用通信フレームのＩＤを０ｘ４００〜０ｘ７ＦＦとしてもよい。この場合は同期対象識別情報７２２を同期依頼メッセージ７２０に含めなくてよい。
【００６７】
（変形例６）
ＥＣＵ１は、揮発性メモリ１９に格納されている通信用カウンタ１９１を不揮発性メモリ１８に格納してもよい。また、通信用カウンタ１９１は起動時に不揮発性メモリ１８から揮発性メモリ１９に読み出され、停止時に不揮発性メモリ１８に格納されてもよい。
【００６８】
（変形例７）
第１の実施の形態ではプログラムは不図示のＲＯＭに格納されるとしたが、プログラムは不揮発性メモリ１８に格納されていてもよい。また、ＥＣＵ１が不図示の入出力インタフェースをＥＣＵ１を備え、必要なときに入出力インタフェースとＥＣＵ１が利用可能な媒体を介して、他の装置から不揮発性メモリ１８、または揮発性メモリ１９にプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やＦＰＧＡにより実現されてもよい。
【００６９】
（変形例８）
第１の実施の形態では、本発明を車載ネットワークに適用したが、制御系システムや情報系システムに適用してもよい。すなわち、本発明に係る情報処理装置の具体的な態様として、ＥＣＵだけでなく他の制御機器も想定される。
【００７０】
（第２の実施の形態）
図１０〜図１１を参照して、本発明に係る情報処理装置の一実施の形態であるＥＣＵの第２の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、同期依頼メッセージ７２０をマスタ−機器が送信する点で、第１の実施の形態と異なる。
【００７１】
本実施の形態におけるＥＣＵ１の構成および動作は、以下の点を除いて第１の実施の形態と同様である。すなわち、第２の実施の形態ではＥＣＵ１が異常を検知すると、同期依頼メッセージ７２０に代えて同期通知メッセージを送信する。同期依頼メッセージ７２０と同期通知メッセージとの違いは、メッセージのヘッダが同期依頼ＩＤではなく同期通知ＩＤである点である。両者のペイロードの構成は同様である。
【００７２】
図１０は、マスタＥＣＵ１Ｍの構成を示す図である。マスタＥＣＵ１Ｍは通信バス２を介して複数のＥＣＵ１と接続される。マスタＥＣＵ１Ｍの構成は、第１の実施の形態における図１のＥＣＵ１から異常検知部１１を削除したものである。ただしＲＯＭに格納されるプログラムの動作が第１の実施の形態におけるＥＣＵ１と異なる。
【００７３】
（動作の概要）
図１１は、第２の実施の形態における異常検出時の同期シーケンスを示す図である。図１１において図示上方から下方に向かって時間が経過している。送信側ＥＣＵ１Ｓの異常検知部１１が異常を検知すると図１１のシーケンスが開始される。図１１は第１の実施の形態における図７に相当し、図７と同様の処理には同一のステップ番号を付す。以下では主に図７との相違点を説明する。
【００７４】
図１１のステップＳ４１１〜Ｓ４１３に示す、送信側ＥＣＵ１Ｓの最新性情報管理部１５が異常用カウンタ１８２および通信用カウンタ１９１を更新する処理は第１の実施の形態と同様である。続くステップＳ４１４Ａでは、送信側ＥＣＵ１Ｓの検証情報生成部１６はステップＳ４１２で更新した異常用カウンタの値とステップＳ４１３で取得した初期化後の通信用カウンタ値と、同期通知ＩＤとを対象としてＭＡＣを生成する。そして送信側ＥＣＵ１Ｓのメッセージ生成部１４は、同期通知ＩＤがヘッダに格納され、当該異常用カウンタ１８２、および生成したＭＡＣがペイロードに格納された同期通知メッセージを生成する。続くステップＳ４１５Ａでは、送信側ＥＣＵ１Ｓの通信部１０はステップＳ４１４Ａで生成した同期通知メッセージを通信バス２に送信する。
【００７５】
送信側ＥＣＵ１Ｓの通信部１０がステップＳ４１５Ａにおいて送信した同期通知メッセージがマスタＥＣＵ１Ｍの通信部１０に受信されると、マスタＥＣＵ１ＭにおいてステップＳ４２１Ａの処理が実行される。ステップＳ４２１Ａでは、通信部１０が受信したメッセージのヘッダが同期通知ＩＤであるか否かを判断する。ここではヘッダが同期通知ＩＤであるとしてステップＳ４２２に進む。
【００７６】
ステップＳ４２２における通信用カウンタの初期値の取得、ステップＳ４２３における異常用カウンタ１８２のカウント値の取得、ステップＳ４２４における最新性情報の検証、およびステップＳ４２５におけるＭＡＣの検証は、マスタＥＣＵ１Ｍにおいて、第１の実施の形態と同様の処理が行われる。ステップＳ４２５においてＭＡＣの検証に成功すると実行されるステップＳ４１４Ｂでは、マスタＥＣＵ１Ｍの検証情報生成部１６は、同期依頼ＩＤ７２１と、受信した同期通知メッセージに含まれる同期対象識別情報７２２と、ステップＳ４２３で更新した異常用カウンタ値７２３と、ステップＳ４２２で取得した初期化後の通信用カウンタ値と、を対象としてＭＡＣ７２４を生成する。なお、ステップＳ４２３で更新した異常用カウンタ値は、受信した同期通知メッセージに含まれる異常用カウンタ値と同一である。そしてマスタＥＣＵ１Ｍのメッセージ生成部１４は、同期依頼ＩＤ７２１がヘッダに格納され、同期対象識別情報７２２、当該異常用カウンタ値７２３、および生成したＭＡＣ７２４がペイロードに格納された同期依頼メッセージ７２０を生成する。
【００７７】
続くステップＳ４１５では、通信部１０はステップＳ４１４Ｂで生成した同期依頼メッセージ７２０を通信バス２に送信する。同期依頼メッセージ７２０を受信した受信側ＥＣＵ１Ｒの動作は第１の実施の形態と同様なので説明を省略する。
【００７８】
上述した第２の実施の形態によれば、次の作用効果が得られる。
（１）マスタＥＣＵ１Ｍの通信部１０は認証コードを含むメッセージを受信し、通信部１０により受信されたメッセージから少なくとも認証コードを除くデータと、メッセージの受信に応じて更新されると共にメッセージの送受信に関する異常が発生すると初期化される第１のカウンタ値と、異常が発生すると更新される第２のカウンタ値と、を含む検証対象データを対象として、鍵を用いて認証コードを生成し、メッセージに含まれる認証コードと生成した認証コードとが一致するか否かによりメッセージを検証するメッセージ検証部１３を備える。異常検知部１１は、メッセージ検証部１３が、メッセージに含まれる認証コードと生成した認証コードとが一致すると判断すると異常を検知したと判断する。
そのため、マスタＥＣＵ１Ｍは同期指示メッセージを検証することで、ＥＣＵ１が異常を検出した際と同様に同期依頼メッセージを送信することができる。またマスタＥＣＵ１Ｍは、ＥＣＵ１から実質的に異常検知部１１を除いた構成にすることができる。
【００７９】
（第２の実施の形態の変形例）
マスタＥＣＵ１Ｍは２つのネットワークにまたがるゲートウェー機器として配置されてもよい。この場合は、第１のネットワークから同期通知メッセージを受信した場合に第２のネットワークへ同期依頼メッセージ７２０を送信し、第２のネットワークから同期通知メッセージを受信した場合に第１のネットワークへ同期依頼メッセージ７２０を送信する。さらに、同期依頼ＩＤと同期指示ＩＤが同一に設定されてもよい。さらに、受信した同期通知メッセージに含まれる同期対象識別情報７３２を書き換えて、同期依頼メッセージ７２０の同期対象識別情報７２２としてもよい。
【００８０】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００８１】
１  …  ＥＣＵ
２  …  通信バス
１０  …  通信部
１１  …  異常検知部
１２  …  最新性検証部
１３  …  メッセージ検証部
１４  …  メッセージ生成部
１５  …  最新性情報管理部
１６  …  検証情報生成部
１７  …  同期処理制御部
１８  …  不揮発性メモリ
１９  …  揮発性メモリ
１８１  …  異常検知関連情報
１８２  …  異常用カウンタ
１８３  …  鍵
１９１  …  通信用カウンタ
【図１】
2017200040.tif 000003
【図２】
2017200040.tif 000004
【図３】
2017200040.tif 000005
【図４】
2017200040.tif 000006
【図５】
2017200040.tif 000007
【図６】
2017200040.tif 000008
【図７】
2017200040.tif 000009
【図８】
2017200040.tif 000010
【図９】
2017200040.tif 000011
【図１０】
2017200040.tif 000012
【図１１】
2017200040.tif 000013