(57)【要約】【課題】メッセージ認証コードで通信メッセージを認証する場合、再認証に要する処理負荷を低減する技術を提供する。【解決手段】第１のコード生成部２２は、通信データから第１のメッセージ認証コードを生成する。第２のコード生成部２２は、記憶しているカウンタ値から第２のメッセージ認証コードを生成する。第３のコード生成部２２は、第１のメッセージ認証コードと第２のメッセージ認証コードとを合成して第３のメッセージ認証コードを生成する。通信部２６は、通信データと第３のメッセージ認証コードとカウンタ値とを他の通信装置と送受信する。認証部２２は、受信する通信データから生成する第１のメッセージ認証コードとカウンタ値から生成する第２のメッセージ認証コードとを合成した第３のメッセージ認証コードと、受信する第３のメッセージ認証コードとが一致するか否かによって、受信する通信メッセージを認証するか否かを決定する。【選択図】図１
2018014558.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信装置（２０）の間で通信メッセージの認証をメッセージ認証コードにより行う通信装置において、
各通信装置において所定のタイミングで更新されるカウンタ値を記憶しているように構成された記憶部（２４）と、
前記通信メッセージの通信データから第１のメッセージ認証コードを生成する第１のコード生成部（２２、Ｓ４０２、Ｓ４３０、Ｓ４５４）と、
前記記憶部が記憶している前記カウンタ値から第２のメッセージ認証コードを生成する第２のコード生成部（２２、Ｓ４０４、Ｓ４２６、Ｓ４３２、Ｓ４５６、Ｓ４５８）と、
前記第１のコード生成部が生成する前記第１のメッセージ認証コードと、前記第２のコード生成部が生成する前記第２のメッセージ認証コードとを合成して、前記通信メッセージを認証するための第３のメッセージ認証コードを生成する第３のコード生成部（２２、Ｓ４０６、Ｓ４３４、Ｓ４６０、Ｓ４７６）と、
前記通信データと前記第３のメッセージ認証コードと前記カウンタ値とを他の通信装置に送信し、前記通信データと前記第３のメッセージ認証コードと前記カウンタ値とを他の通信装置から受信する通信部（２６、Ｓ４１０、Ｓ４２０、Ｓ４５２、Ｓ４６４、Ｓ４７０、Ｓ４８６）と、
前記通信部が受信する前記通信データから前記第１のコード生成部が生成する前記第１のメッセージ認証コードと前記記憶部が記憶している前記カウンタ値から前記第２のコード生成部が生成する前記第２のメッセージ認証コードとを合成して前記第３のコード生成部が生成する前記第３のメッセージ認証コードと、前記通信部が受信する前記第３のメッセージ認証コードとが一致するか否かによって、前記通信部が受信する前記通信メッセージを認証するか否かを決定する認証部（２２、Ｓ４３６〜Ｓ４４２、Ｓ４７４、Ｓ４７８〜Ｓ４８２、Ｓ４８４、Ｓ４８８）と、
を備える通信装置。
【請求項２】
請求項１に記載の通信装置において、
前記第３のメッセージ認証コードが一致しないために前記認証部（Ｓ４３６）が前記通信メッセージを認証できない場合、前記第２のコード生成部（Ｓ４２６、Ｓ４３２）は、前記通信部が受信した前記カウンタ値を更新し、更新した前記カウンタ値から前記第２のメッセージ認証コードを生成し、
前記第３のコード生成部（Ｓ４３４）は、初回の認証の際に前記第１のコード生成部が生成した前記第１のメッセージ認証コードと、前記第２のコード生成部が更新した前記カウンタ値から生成した前記第２のメッセージ認証コードとを合成して新たな前記第３のメッセージ認証コードを生成し、
前記認証部（Ｓ４３６〜Ｓ４４２）は、前記通信部が初回に受信した前記第３のメッセージ認証コードと前記第３のコード生成部が新たに生成した前記第３のメッセージ認証コードとが一致するか否かによって、前記通信部が受信する前記通信メッセージを認証するか否かを決定する、
通信装置。
【請求項３】
請求項１に記載の通信装置において、
送信側と受信側との前記カウンタ値がずれていると前記認証部（Ｓ４７４）が判定すると、前記通信部（Ｓ４８６）は送信側の前記通信装置に再送信を要求する、
通信装置。
【請求項４】
請求項３に記載の通信装置において、
前記通信部（Ｓ４５２）が他の前記通信装置から再送信の要求を受信すると、前記第２のコード生成部（Ｓ４５６、Ｓ４５８）は、更新した前記カウンタ値から前記第２のメッセージ認証コードを生成し、
前記第３のコード生成部（Ｓ４６０）は、前記第１のコード生成部が初回に生成した前記第１のメッセージ認証コードと、前記第２のコード生成部が更新した前記カウンタ値から生成した前記第２のメッセージ認証コードとを合成して新たな前記第３のメッセージ認証コードを生成し、
前記通信部（Ｓ４６４）は、前記通信データと前記第３のコード生成部が新たに生成した前記第３のメッセージ認証コードと前記第２のコード生成部が更新した前記カウンタ値とを送信する、
通信装置。
【請求項５】
請求項１から４のいずれか一項に記載の通信装置において、
前記認証部（Ｓ４４０、Ｓ４４２、Ｓ４８４、Ｓ４８８）は、前記通信メッセージに対する認証を所定回数以上試みても認証できない場合、前記通信メッセージに対する認証を中止する、
通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メッセージ認証コードにより通信メッセージを認証する技術に関する。
【背景技術】
【０００２】
受信した通信メッセージが適正な通信装置から送信されたものか、不正な通信装置から送信されたものかを判定するために、通信メッセージにメッセージ認証コードを付加する技術が知られている。メッセージ認証コードによる認証は、送信側の通信装置と受信側の通信装置とで同じメッセージ認証コードの生成アルゴリズムを使用することが前提である。メッセージ認証コードを生成するときに、共通鍵を使用することもある。
【０００３】
送信側では通信データからコード生成アルゴリズでメッセージ認証コードを生成し、通信データとメッセージ認証コードとを送信する。受信側では、受信した通信データから自装置が記憶しているコード生成アルゴリズムでメッセージ認証コードを生成する。
【０００４】
そして、受信したメッセージ認証コードと受信側で生成したメッセージ認証コードとが一致すれば、受信した通信メッセージは適正な通信装置から送信されたものと判定し、一致しない場合には不正な通信装置から送信されたものであると判定する。
【０００５】
特許文献１には、通信装置がメッセージ認証コードを生成して送信する場合、さらに、各通信装置で同期のとれたカウンタ値と通信データとからメッセージ認証コードを生成する技術が記載されている。
【０００６】
特許文献１に記載の技術では、送信側の通信装置は、送信側で記憶しているカウンタ値と送信する通信データとからメッセージ認証コードを生成する。受信側の通信装置では、受信側で記憶しているカウンタ値と受信した通信データとからメッセージ認証コードを生成する。そして、受信側で生成したメッセージ認証コードと受信したメッセージ認証コードとが一致するか否かによって、受信した通信メッセージを認証するか否かを決定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−９８７１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の技術では、送信側の通信装置と受信側の通信装置との間でカウンタ値がずれると、送信側と受信側とでメッセージ認証コードが一致しなくなる。この場合、例えば、通信メッセージを受信した通信装置は、カウンタ値を更新して再認証を試みることがある。
【０００９】
メッセージ認証コードの生成には複雑な演算が必要であるため、再認証するたびに受信側の通信装置がメッセージ認証コードを生成すると、再認証に要する処理負荷が増加するという問題がある。
【００１０】
本開示の一側面は、メッセージ認証コードで通信メッセージを認証する場合、再認証に要する処理負荷を低減する技術を提供することにある。
【課題を解決するための手段】
【００１１】
本開示の一態様は、複数の通信装置（２０）の間で通信メッセージの認証をメッセージ認証コードにより行う通信装置において、記憶部（２４）と、第１のコード生成部（２２、Ｓ４０２、Ｓ４３０、Ｓ４５４）と、第２のコード生成部（２２、Ｓ４０４、Ｓ４２６、Ｓ４３２、Ｓ４５６、Ｓ４５８）と、第３のコード生成部（２２、Ｓ４０６、Ｓ４３４、Ｓ４６０、Ｓ４７６）と、通信部（２６、Ｓ４１０、Ｓ４２０、Ｓ４５２、Ｓ４６４、Ｓ４７０、Ｓ４８６）と、認証部（２２、Ｓ４３６〜Ｓ４４２、Ｓ４７８〜Ｓ４８２、Ｓ４８４、Ｓ４８８）と、を備える。
【００１２】
記憶部は、各通信装置において所定のタイミングで更新されるカウンタ値を記憶している。第１のコード生成部は、通信メッセージの通信データから第１のメッセージ認証コードを生成する。第２のコード生成部は、記憶部が記憶しているカウンタ値から第２のメッセージ認証コードを生成する。第３のコード生成部は、第１のコード生成部が生成する第１のメッセージ認証コードと、第２のコード生成部が生成する第２のメッセージ認証コードとを合成して、通信メッセージを認証するための第３のメッセージ認証コードを生成する。
【００１３】
通信部は、通信データと第３のメッセージ認証コードとカウンタ値とを他の通信装置に送信し、通信データと第３のメッセージ認証コードとカウンタ値とを他の通信装置から受信する。
【００１４】
認証部は、通信部が受信する通信データから第１のコード生成部が生成する第１のメッセージ認証コードと記憶部が記憶しているカウンタ値から第２のコード生成部が生成する第２のメッセージ認証コードとを合成して第３のコード生成部が生成する第３のメッセージ認証コードと、通信部が受信する第３のメッセージ認証コードとが一致するか否かによって、通信部が受信する通信メッセージを認証するか否かを決定する。
【００１５】
この構成において、送信側の通信装置で生成した第３のメッセージ認証コードと、受信側で生成した第３のメッセージ認証コードとが一致しない場合、送信側のカウンタ値と受信側のカウンタ値とが一致していない可能性があると考えられる。
【００１６】
この場合、送信側と受信側とで生成した第３のメッセージ認証コードのうち、カウンタ値から生成される第２のメッセージ認証コードは一致しておらず、通信データから生成される第１のメッセージ認証コードは一致していると考えられる。つまり、通信メッセージに対する再認証のために、送信側と受信側とで第１のメッセージ認証コードを新たに生成する必要はなく、第１のメッセージ認証コードを再利用できる。
【００１７】
したがって、送信側と受信側とで生成した第３のメッセージ認証コードが一致しないために通信メッセージを再認証する場合、再認証に要する処理負荷を低減できる。
尚、この欄および特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態の通信装置を示す構成図。
【図２】送信側の通信処理を示すフローチャート。
【図３】受信側の通信処理を示すフローチャート。
【図４】通信メッセージの構成を示す構成図。
【図５】送信側と受信側との通信処理を示すタイムチャート。
【図６】第２実施形態の送信側の通信処理を示すフローチャート。
【図７】受信側の通信処理を示すフローチャート。
【図８】送信側と受信側との通信処理を示すタイムチャート。
【発明を実施するための形態】
【００１９】
以下、本開示の実施形態を図に基づいて説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す通信システム２は、例えば車両に搭載されている。通信システム２は、セントラルゲートウェイ１０と、複数のＥＣＵ２０と、通信線１００とを備えている。以下、セントラルゲートウェイ１０をＣＧＷ１０とも言う。ＥＣＵは、Electronic Control Unitの略である。通信線１００として、例えばＣＡＮバスが使用される。ＣＡＮは、Controller Area Networkの略であり、登録商標である。
【００２０】
尚、図１では、ＣＡＮバスを通信線１００とする一つのネットワークが図示されているが、実際には、車両のパワートレイン系、ボディ系、情報系等に分類された複数のネットワークがＣＧＷ１０に接続している。
【００２１】
ＣＧＷ１０は、通信手順、データ形式等の異なる複数のネットワーク間で通信を行う場合の調整を行う。また、ＣＧＷ１０は、同じネットワークまたは異なるネットワーク間でメッセ認証コードを用いてＥＣＵ同士が通信メッセージに対する認証を行う場合に、メッセージ認証コードを生成するためのカウンタ値を定期的に各ＥＣＵに送信する。以下、メッセージ認証コードを略してＭＡＣとも言う。
【００２２】
ＥＣＵ２０は、ＣＰＵ２２と、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の半導体メモリを有するメモリ２４と、通信回路２６とを有する周知のマイクロコンピュータを中心に構成される。尚、ＥＣＵ２０を構成するマイクロコンピュータの数は１つでも複数でもよい。図１に示す複数のＥＣＵ２０の構成は実質的に同じであるから、一つのＥＣＵ２０を除き他のＥＣＵ２０の構成の図示は省略している。
【００２３】
ＥＣＵ２０の各種機能は、ＣＰＵ２２が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。図１の例では、メモリ２４が、プログラムを格納した非遷移的実体的記録媒体に該当する。ＣＰＵ２２がプログラムを実行することにより、プログラムに対応する方法が実行される。
【００２４】
ＥＣＵ２０は、ＣＰＵ２２がプログラムを実行することで実現される機能の構成の１つとして、通信処理を行う機能を備える。ＥＣＵ２０における機能を実現する手法はソフトウェアに限るものではなく、その一部または全部の要素を、論理回路やアナログ回路等を組み合わせたハードウェアを用いて実現してもよい。
【００２５】
ＥＣＵ２０は、ＣＧＷ１０からカウンタ値を受信すると、送信する通信メッセージの生成用と、受信した通信メッセージの認証用とに分けて、受信したカウンタ値をメモリ２４の別の場所に記憶する。
【００２６】
［１−２．処理］
（１）送信側のＥＣＵ２０が実行する通信処理を図２のフローチャートを用いて説明する。本処理は、所定時間間隔で常時実行される。
【００２７】
ＥＣＵ２０は、Ｓ４００の判定がＹｅｓであり、認証の必要な通信メッセージを送信する場合、Ｓ４０２において、送信する通信データと共通鍵とから、コード生成用アルゴリズムにより第１のＭＡＣを生成する。各ＥＣＵ２０は、第１のＭＡＣを生成する同じコード生成用アルゴリズムと共通鍵とを記憶している。
【００２８】
次に、Ｓ４０４においてＥＣＵ２０は、メモリ２４に記憶しているメッセージ生成用のカウンタ値からコード生成用アルゴリズムにより第２のＭＡＣを生成する。各ＥＣＵ２０は、第２のＭＡＣを生成する場合、共通鍵は使用せず、同じコード生成用アルゴリズムを記憶している。第２のＭＡＣを生成するコード生成用アルゴリズムには、第１のＭＡＣを生成するコード生成用アルゴリズムよりも簡単なアルゴリズムが採用されている。
【００２９】
Ｓ４０６においてＥＣＵ２０は、Ｓ４０２で生成した第１のＭＡＣと、Ｓ４０４で生成した第２のＭＡＣとを、例えば第１のＭＡＣを上位ビットに設定し、第２のＭＡＣを下位ビットに設定するなどにより合成し、第３のＭＡＣを生成する。第１のＭＡＣと第２のＭＡＣとを合成して第３のＭＡＣを生成する方法は、各ＥＣＵ２０で共通である。
【００３０】
Ｓ４０８においてＥＣＵ２０は、図４に示すように、ＣＡＮの通信フレーム２００に、通信データとメッセージ生成用のカウンタ値の一部と第３のＭＡＣとを設定する。カウンタ値の一部は、カウンタ値の下位の所定数のビットである。
【００３１】
送信側のＥＣＵ２０がカウンタ値の一部だけを送信するのは、通信メッセージとして送信できるデータ量に制限がある場合である。送信側のＥＣＵ２０と受信側のＥＣＵ２０とで正常にカウンタ値が更新されていれば、カウンタ値の一部であっても、送信側のＥＣＵ２０と受信側のＥＣＵ２０とでカウンタ値は一致する。
【００３２】
Ｓ４１０においてＥＣＵ２０は、図４に示すように設定した通信フレームの情報を通信メッセージとして通信回路２６から送信する。
（２）受信側のＥＣＵ２０が実行する通信処理を図３のフローチャートを用いて説明する。本処理は、所定時間間隔で常時実行される。
【００３３】
Ｓ４２０の判定がＹｅｓであり、通信回路２６が受信した受信した通信メッセージが認証の必要な通信メッセージの場合、Ｓ４２２においてＥＣＵ２０は、受信した通信メッセージを通信データとカウンタ値とＭＡＣとに分解する。ＥＣＵ２０は、分解した通信データとカウンタ値とＭＡＣとをメモリ２４に記憶しておく。前述したように、受信する通信メッセージのカウンタ値は、カウンタ値の一部である。
【００３４】
Ｓ４２４においてＥＣＵ２０は、受信したカウンタ値の一部と、メモリ２４に記憶している認証用のカウンタ値の一部とを比較し、受信したカウンタ値の一部の値が認証用のカウンタ値の一部の値以上であるか否かを判定する。
【００３５】
図５の左側に示すように、ＣＧＷ１０から各ＥＣＵ２０にカウンタ値としてｍが送信されてから、送信側のＥＣＵ２０がメッセージを送信すると、送信側のＥＣＵ２０と受信側のＥＣＵ２０とがそれぞれメモリ２４に記憶しているカウンタ値はｍで一致する。
【００３６】
したがって、送信側のＥＣＵ２０が送信メッセージに設定したメッセージ送信用のカウンタ値の一部の値と、受信側のＥＣＵ２０がメモリ２４に記憶している認証用のカウンタ値の一部の値とは一致する。
【００３７】
これに対し、図５の右側に示すように、送信側のＥＣＵ２０がメッセージを送信している途中、あるいはメッセージを送信後、受信側のＥＣＵ２０がメッセージを受信する前に、ＣＧＷ１０から新しいカウンタ値としてｎが送信されることがある。
【００３８】
この場合、送信側のＥＣＵ２０は、メッセージ送信用のカウンタ値の一部としてｍの一部を通信メッセージに設定する。一方、受信側のＥＣＵ２０が送信側のＥＣＵ２０から通信メッセージを受信するときにメモリ２４に記憶している認証用のカウンタ値はｎである。したがって、受信側のＥＣＵ２０において、受信する通信メッセージに設定されているカウンタ値の一部の値と、認証用のカウンタ値の一部の値とは一致しない。
【００３９】
Ｓ４２４の判定がＹｅｓであり、受信したカウンタ値の一部の値が認証用のカウンタ値の一部の値以上の場合、ＥＣＵ２０は処理をＳ４２８に移行する。
Ｓ４２４の判定がＮｏであり、受信したカウンタ値の一部が認証用のカウンタ値の一部未満の場合、ＥＣＵ２０は、送信側のＥＣＵ２０と受信側のＥＣＵ２０とにおいてカウンタ値がずれていると判断する。この場合、Ｓ４２６においてＥＣＵ２０は、認証用のカウンタ値を例えば−１して更新し、認証用のカウンタ値に上書きする。
【００４０】
Ｓ４２８においてＥＣＵ２０は、今回受信した通信メッセージに対する初回の認証か否かを判定する。Ｓ４２８の判定がＹｅｓであり、今回受信した通信メッセージに対する初回の認証の場合、Ｓ４３０においてＥＣＵ２０は、共通鍵と初回に受信した通信データとから第１のＭＡＣを生成してメモリ２４に記憶し、処理をＳ４３２に移行する。
【００４１】
Ｓ４２８の判定がＮｏであり、今回受信した通信メッセージに対する２回目以降の認証の場合、初回の認証で既に受信した通信データと共通鍵とから第１のＭＡＣを生成済みであるから、ＥＣＵ２０は処理をＳ４３２に移行する。
【００４２】
Ｓ４３２においてＥＣＵ２０は、認証用のカウンタ値から第２のＭＡＣを生成する。Ｓ４３４においてＥＣＵ２０は、初回の認証の際にＳ４３０で生成した第１のＭＡＣとＳ４３２で生成した第２のＭＡＣとを合成し、第３のＭＡＣを生成する。
【００４３】
Ｓ４３６の判定がＹｅｓであり、Ｓ４３４で生成した第３のＭＡＣと受信した第３のＭＡＣとが一致すると、Ｓ４３８においてＥＣＵ２０は、適正なＥＣＵ２０から送信された適正な通信メッセージであると認証する。そして、ＥＣＵ２０は受信した通信メッセージを以後の処理に使用する。
【００４４】
Ｓ４３６の判定がＮｏであり、Ｓ４３４で生成した第３のＭＡＣと受信した第３のＭＡＣとが一致しない場合、不正なＥＣＵ２０から送信された通信メッセージである可能性がある。そこで、Ｓ４４０においてＥＣＵ２０は、再認証を試みた回数が不正なＥＣＵ２０から送信された通信メッセージであると判定できる所定回数以上であるか否かを判定する。
【００４５】
再認証を試みた回数が所定回数未満であれば、ＥＣＵ２０は処理をＳ４２６に戻し、認証用のカウンタ値を更新する。２回目以降の更新では、Ｓ４２６においてＥＣＵ２０は、カウンタ値の不一致が上位ビットの桁上がりにより生じた可能性を考慮し、上位ビットを増減してカウンタ値を更新する。そして、ＥＣＵ２０は、Ｓ４２８以降の処理を実行する。
【００４６】
再認証を試みた回数が所定回数以上であれば、Ｓ４４２においてＥＣＵ２０は、受信している通信メッセージに対する認証を中止して通信メッセージを破棄し、本処理を終了する。
【００４７】
［１−３．効果］
以上説明した第１実施形態では、以下の効果を得ることができる。
（１）通信データと共通鍵とから第１のＭＡＣを生成し、各ＥＣＵ２０が同期して更新するカウンタ値から第２のＭＡＣを生成する。そして第１のＭＡＣと第２のＭＡＣとを合成して、通信メッセージの認証に用いる第３のＭＡＣを生成する。
【００４８】
これにより、送信側のＥＣＵ２０から送信された通信メッセージの第３のＭＡＣと受信側のＥＣＵ２０が生成する第３のＭＡＣとが一致しない場合、受信側のＥＣＵ２０は、認証用に記憶しているカウンタ値を更新して第２のＭＡＣを生成する。
【００４９】
そして、受信した通信データと受信側で記憶している共通鍵とから新たに第１のＭＡＣを生成することなく、初回の認証の際に生成した第１のＭＡＣと新たに生成した第２のＭＡＣとを合成して第３のＭＡＣを新たに生成する。
【００５０】
受信側のＥＣＵ２０は、受信側で新たに生成した第３のＭＡＣと受信した通信メッセージの第３のＭＡＣとが一致するか否かによって、受信した通信メッセージを認証するか否かを決定する。このように、受信側で再認証するために第３のＭＡＣを生成する場合、第２のＭＡＣだけを生成すればよいので、受信側のＥＣＵ２０の通信処理に要する負荷を低減できる。
【００５１】
（２）通信メッセージを再認証する場合、送信側のＥＣＵ２０と受信側のＥＣＵ２０とは通信することなく、受信側のＥＣＵ２０だけで再認証を行うので、再認証する場合の通信時間を低減できる。
【００５２】
上記第１実施形態では、ＥＣＵ２０が通信装置に対応し、ＣＰＵ２２が第１のコード生成部と第２のコード生成部と第３のコード生成部と認証部とに対応し、メモリ２４が記憶部に対応し、通信回路２６が通信部に対応する。
【００５３】
また、Ｓ４１０、Ｓ４２０が通信部としての処理に対応し、Ｓ４０２、Ｓ４３０が第１のコード生成部としての処理に対応し、Ｓ４０４、Ｓ４２６、Ｓ４３２が第２のコード生成部としての処理に対応し、Ｓ４０６、Ｓ４３４が第３のコード生成部としての処理に対応し、Ｓ４３６〜Ｓ４４２が認証部としての処理に対応する。
【００５４】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態では、基本的な構成は第１実施形態と同様であるため、相違点について以下に説明する。尚、第２実施形態において、第１実施形態と同じ符号は同じ構成を示すものであって、先行する説明を参照する。
【００５５】
第２実施形態では、図４において、カウンタ値のすべてのデータを通信メッセージに設定する点で第１実施形態と異なる。
［２−２．処理］
（１）送信側のＥＣＵ２０が実行する通信処理を図６のフローチャートを用いて説明する。本処理は、所定時間間隔で常時実行される。
【００５６】
Ｓ４５０の判定がＹｅｓであり、認証の必要な通信メッセージを送信する場合、Ｓ４５２においてＥＣＵ２０は、今回送信する通信メッセージが受信側のＥＣＵ２０から要求されたために送信する再送信メッセージであるか否かを判定する。受信側のＥＣＵ２０から再送信を要求されるのは、受信側のＥＣＵ２０で第３のＭＡＣが一致せず、再認証が必要な場合である。
【００５７】
Ｓ４５２の判定がＮｏであり、初回の送信メッセージの場合、Ｓ４５４においてＥＣＵ２０は、通信データと送信側で記憶している共通鍵とからコード生成用アルゴリズムにより第１のＭＡＣを生成してメモリ２４に記憶し、処理をＳ４５８に移行する。
【００５８】
Ｓ４５２の判定がＹｅｓであり、再送信メッセージの場合、Ｓ４５６においてＥＣＵ２０は、第３のＭＡＣが一致しない理由がカウンタ値の不一致であることを考慮し、送信側でメッセージ送信用に記憶しているカウンタ値を更新してＳ４５８に処理を移行する。ＥＣＵ２０は、例えばメッセージ送信用のカウンタ値を＋１して更新する。
【００５９】
Ｓ４５８においてＥＣＵ２０は、メッセージ送信用に記憶しているカウンタ値からコード生成用アルゴリズムにより第２のＭＡＣを生成する。Ｓ４６０においてＥＣＵ２０は、Ｓ４５４で生成した第１のＭＡＣとＳ４５８で生成した第２のＭＡＣとを合成し、第３のＭＡＣを生成する。
【００６０】
Ｓ４６２においてＥＣＵ２０は、ＣＡＮの通信フレームに通信データとメッセージ送信用のカウンタ値と第３のＭＡＣとを設定して通信メッセージを組み立てる。通信メッセージの構成は、図４に示すカウンタ値の一部がカウンタ値のすべてのデータになっている以外、第１実施形態と同じである。４６４においてＥＣＵ２０は、Ｓ４６２で組み立てた通信メッセージを送信する。
【００６１】
（２）受信側のＥＣＵ２０が実行する通信処理を図７のフローチャートを用いて説明する。本処理は、所定時間間隔で常時実行される。
ＥＣＵ２０は、Ｓ４７０の判定がＹｅｓであり、受信した通信メッセージが認証の必要な通信メッセージの場合、Ｓ４７２において、受信した通信メッセージを通信データとカウンタ値とＭＡＣとに分解する。
【００６２】
Ｓ４７４においてＥＣＵ２０は、受信したカウンタ値とメモリ２４に記憶している認証用のカウンタ値とを比較し、受信したカウンタ値が認証用のカウンタ値以上であるか否かを判定する。
【００６３】
図８の左側に示すように、ＣＧＷ１０から各ＥＣＵ２０にカウンタ値としてｍが送信されてから、送信側のＥＣＵ２０がメッセージを送信すると、送信側のＥＣＵ２０がメモリ２４に記憶しているメッセージ送信用のカウンタ値と、受信側のＥＣＵ２０がメモリ２４に記憶している認証用のカウンタ値とは一致する。
【００６４】
したがって、送信側のＥＣＵ２０が送信メッセージに設定したカウンタ値と、受信側のＥＣＵ２０がメモリ２４に記憶している認証用のカウンタ値とは一致する。
これに対し、図８の右側に示すように、送信側のＥＣＵ２０がメッセージを送信している途中、あるいはメッセージを送信後であって、受信側のＥＣＵ２０がメッセージを受信する前に、ＣＧＷ１０から新しいカウンタ値が送信されることがある。この場合、送信側のＥＣＵ２０が送信メッセージに設定したカウンタ値と、受信側のＥＣＵ２０がメモリ２４に記憶している認証用のカウンタ値とは一致しない。
【００６５】
Ｓ４７４の判定がＮｏであり、受信したカウンタ値が認証用のカウンタ値未満の場合、適正なＥＣＵ２０からの通信メッセージであるが受信したカウンタ値が認証用のカウンタ値からずれていることを考慮し、ＥＣＵ２０は処理をＳ４８４に移行する。
【００６６】
Ｓ４７４の判定がＹｅｓであり、受信したカウンタ値がメモリ２４に記憶している認証用のカウンタ値以上の場合、Ｓ４７６においてＥＣＵ２０は、受信した通信データと受信側で記憶している共通鍵と認証用のカウンタ値とから第３のＭＡＣを生成する。
【００６７】
Ｓ４７８の判定がＹｅｓであり、受信した通信メッセージの第３のＭＡＣとＳ４７６で生成した第３のＭＡＣとが一致すると、Ｓ４８０においてＥＣＵ２０は、適正なＥＣＵ２０から送信された適正な通信メッセージであると認証し、以後の処理に使用する。
【００６８】
Ｓ４７８の判定がＮｏであり、受信した通信メッセージの第３のＭＡＣとＳ４７６で生成した第３のＭＡＣとが一致しない場合、不正なＥＣＵ２０から送信された不正な通信メッセージである可能性がある。そこで、Ｓ４８２においてＥＣＵ２０は、受信している通信メッセージに対する認証を中止して通信メッセージを破棄し、本処理を終了する。
【００６９】
Ｓ４８４においてＥＣＵ２０は、通信メッセージに対する再認証を試みた回数が不正なＥＣＵ２０から送信された通信メッセージであると判定できる所定回数以上であるか否かを判定する。Ｓ４８４の判定がＮｏであり、再認証を試みた回数が所定回数未満であれば、Ｓ４８６においてＥＣＵ２０は、送信側のＥＣＵ２０に通信メッセージの再送信を要求する。
【００７０】
Ｓ４８４の判定がＹｅｓであり、再認証を試みた回数が所定回数以上の場合、不正なＥＣＵ２０からの不正な通信メッセージであると判断し、Ｓ４８８においてＥＣＵ２０は、受信している通信メッセージに対する認証を中止して通信メッセージを破棄し、本処理を終了する。
【００７１】
［２−３．効果］
以上説明した第２実施形態では、以下の効果を得ることができる。
通信データと共通鍵とから第１のＭＡＣを生成し、各ＥＣＵ２０が同期して更新するカウンタ値から第２のＭＡＣを生成する。そして第１のＭＡＣと第２のＭＡＣとを合成して、通信メッセージの認証に用いる第３のＭＡＣを生成する。
【００７２】
受信側のＥＣＵ２０から再送信を要求された送信側のＥＣＵ２０は、カウンタ値を更新し、更新したカウンタ値で第２のＭＡＣを生成する。通信データと共通鍵とに変化はないので、初回の送信で生成した第１のＭＡＣをそのまま使用して第２のＭＡＣと合成し、第３のＭＡＣを新たに生成する。
【００７３】
そして送信側のＥＣＵ２０は、新たに生成した第３のＭＡＣと通信データと更新したカウンタ値とを通信メッセージとして受信側のＥＣＵ２０に再送信する。このように、再送信を要求された送信側のＥＣＵ２０は、第３のＭＡＣを生成する場合、第２のＭＡＣだけを生成すればよいので、送信側のＥＣＵ２０の通信処理に要する負荷を低減できる。
【００７４】
上記第２実施形態では、Ｓ４５４が第１のコード生成部としての処理に対応し、Ｓ４５６、Ｓ４５８が第２のコード生成部としての処理に対応し、Ｓ４６０、Ｓ４７６が第３のコード生成部としての処理に対応し、Ｓ４６４、Ｓ４７０、Ｓ４８６が通信部としての処理に対応し、Ｓ４７４、Ｓ４７８〜Ｓ４８２、Ｓ４８４、Ｓ４８８が認証部としての処理に対応する。
【００７５】
［３．他の実施形態］
（１）カウンタ値の一部だけを通信メッセージに設定する第１実施形態では、第３のＭＡＣが一致しない場合、受信側のＥＣＵ２０は、送信側のＥＣＵ２０と通信することなく、受信側でカウンタ値を更新して再認証を行った。
【００７６】
これに対し、第１の実施形態において、第２の実施形態と同様に、第３のＭＡＣが一致しない場合、受信側のＥＣＵ２０は、送信側のＥＣＵ２０に再送信を要求してもよい。送信側のＥＣＵ２０では、メッセージ送信用のカウンタ値を更新して通信メッセージを再送信する。
【００７７】
（２）カウンタ値のすべてのデータを通信メッセージに設定する第２実施形態では、第３のＭＡＣが一致しない場合、受信側のＥＣＵ２０は、送信側のＥＣＵ２０に再送信を要求した。これに対し、第２の実施形態において、第１の実施形態と同様に、第３のＭＡＣが一致しない場合、受信側のＥＣＵ２０は、送信側のＥＣＵ２０と通信することなく受信側でカウンタ値を更新して再認証を行ってもよい。
【００７８】
（３）上記第２実施形態のＳ４８６で、受信側のＥＣＵ２０が送信側のＥＣＵ２０に再送信を要求する場合、受信側のＥＣＵ２０が記憶している認証用のカウンタ値を一緒に送信してもよい。この場合、再送信要求と認証用のカウンタ値とを受信した送信側のＥＣＵ２０は、受信した認証用のカウンタ値から第２のＭＡＣを生成し、初回の送信で生成した第１のＭＡＣと合成して第３のＭＡＣを生成する。
【００７９】
（４）上記実施形態では、カウンタ値から第２のＭＡＣを生成する場合、共通鍵を使用しなかった。これに対し、カウンタ値と共通鍵とから第２のＭＡＣを生成してもよい。
（５）上記の通信装置は車両に搭載されるものに限らず、どのような分野で使用されるものであってもよい。
【００８０】
（６）上記の通信装置は、ＣＡＮに限らず、通信メッセージの認証をメッセージ認証コードで行うものであればどのような通信に使用されてもよい。通信は、有線、無線のいずれでもよい。
【００８１】
（７）上記実施形態では、ＣＧＷ１０が各ＥＣＵ２０にカウンタ値を送信した。これ以外にも、いずれかのＥＣＵ２０が送信メッセージを送信する毎に、各ＥＣＵ２０がカウンタ値を更新してもよい。また、車載のＥＣＵ２０の場合、エンジンスタート時に１回、各ＥＣＵ２０がカウンタ値を更新してもよい。
【００８２】
（８）上記実施形態における一つの構成要素が有する複数の機能を複数の構成要素によって実現したり、一つの構成要素が有する一つの機能を複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を一つの構成要素によって実現したり、複数の構成要素によって実現される一つの機能を一つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【００８３】
（９）上述した通信装置の他、当該通信装置を構成要素とする通信システム、当該通信装置としてコンピュータを機能させるための通信制御プログラム、この通信制御プログラムを記録した記録媒体、通信制御方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００８４】
２０：ＥＣＵ（通信装置）、２２：ＣＰＵ（第１のコード生成部、第２のコード生成部、第３のコード生成部、認証部）、２４：メモリ（記憶部）、２６：通信回路（通信部）
【図１】
2018014558.tif 000003
【図２】
2018014558.tif 000004
【図３】
2018014558.tif 000005
【図４】
2018014558.tif 000006
【図５】
2018014558.tif 000007
【図６】
2018014558.tif 000008
【図７】
2018014558.tif 000009
【図８】
2018014558.tif 000010