(57)【要約】      （修正有）【課題】車両に搭載した鍵配布センタ装置及び各通信装置間の通信量を抑制し、かつ、不正送信を阻止する。【解決手段】鍵配布センタ装置１０は、更新された第１カウンタ値及び第１秘密情報に基づいて第１認証子を生成し、更新された第１カウンタ値の下位の一部ビット列と第１認証子の一部ビット列とを含む１フレームのセッション更新メッセージを生成し、セッション更新メッセージを各通信装置に送信する。通信装置２０Ａは、セッション更新メッセージを第２カウンタ値及び第２秘密情報に基づいて検証し、検証した結果が正当のとき、セッション更新メッセージに基づいて、更新された第１カウンタ値と同一値に第２カウンタ値を更新し、更新した第２カウンタ値に基づいてセッション鍵を生成する。【選択図】図１
2016100632.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載された鍵配布センタ装置及び複数の通信装置を備えた通信システムであって、
前記鍵配布センタ装置は、
第１カウンタ値及び第１秘密情報を保持する手段と、
前記第１カウンタ値を更新する手段と、
前記更新された第１カウンタ値及び前記第１秘密情報に基づいて第１認証子を生成する手段と、
前記更新された第１カウンタ値の下位の一部ビット列と前記第１認証子の一部ビット列とを含む１フレームのセッション更新メッセージを生成する手段と、
前記セッション更新メッセージを前記各通信装置に送信する手段と
を備え、
前記各通信装置は、
前記第１カウンタ値に同期して更新される第２カウンタ値及び前記第１秘密情報と同一の第２秘密情報を保持する手段と、
前記セッション更新メッセージを前記第２カウンタ値及び前記第２秘密情報に基づいて検証する手段と、
前記検証した結果が正当のとき、前記セッション更新メッセージに基づいて、前記更新された第１カウンタ値と同一値に前記第２カウンタ値を更新する手段と、
前記更新した第２カウンタ値に基づいてセッション鍵を生成する手段と
を備えたことを特徴とする通信システム。
【請求項２】
車両に搭載された鍵配布センタ装置及び複数の通信装置を備えた通信システムにおける各々の前記通信装置であって、
前記鍵配布センタ装置が、更新した第１カウンタ値及び第１秘密情報に基づいて生成した第１認証子の一部ビット列と、前記更新した第１カウンタ値の下位の一部ビット列とを含む１フレームのセッション更新メッセージを送信したとき、前記鍵配布センタ装置から前記セッション更新メッセージを受信する手段と、
前記第１カウンタ値に同期して更新される第２カウンタ値及び前記第１秘密情報と同一の第２秘密情報を保持する手段と、
前記受信したセッション更新メッセージを前記第２カウンタ値及び前記第２秘密情報に基づいて検証する第１検証手段と、
前記検証した結果が正当のとき、前記セッション更新メッセージに基づいて、前記更新された第１カウンタ値と同一値に前記第２カウンタ値を更新する第１更新手段と、
前記更新した第２カウンタ値に基づいてセッション鍵を生成する手段と
を備えたことを特徴とする通信装置。
【請求項３】
請求項２に記載の通信装置において、
前記第２カウンタ値を更新できない場合、セッション共有メッセージの送信要求を前記鍵配布センタ装置に送信する手段と、
前記送信要求に応じて、前記更新した第１カウンタ値のうちの少なくとも前記セッション更新メッセージと重複しない部分の全てのビット列と、前記第１認証子のうちの前記セッション更新メッセージと重複しない一部のビット列とを含む１フレームの前記セッション共有メッセージを前記鍵配布センタ装置から受信する手段と、
前記受信したセッション共有メッセージを前記第２カウンタ値及び前記第２秘密情報に基づいて検証する第２検証手段と、
前記第２検証手段により検証した結果が正当のとき、前記セッション共有メッセージに基づいて、前記更新された第１カウンタ値と同一値に前記第２カウンタ値を更新する第２更新手段と、
前記第２更新手段により更新した第２カウンタ値に基づいて前記セッション鍵を生成する手段と
を備えたことを特徴とする通信装置。
【請求項４】
請求項２又は請求項３に記載の通信装置において、
前記セッション鍵は、前記更新された第２カウンタ値と、前記複数の通信装置が予め共有する第３秘密情報又は前記第２秘密情報とに基づいて生成されることを特徴とする通信装置。
【請求項５】
請求項２又は請求項３に記載の通信装置において、
前記更新した第２カウンタ値の下位１ビットと、この第２カウンタ値に基づいて生成したセッション鍵とを関連付けて記憶する記憶手段と、
他の通信装置が保持する第２カウンタ値の下位１ビットを付与したデータからなるメッセージ本文及び前記セッション鍵に基づいて生成された第２認証子及び前記メッセージ本文からなる通信メッセージを前記他の通信装置から受信する手段と、
前記通信メッセージに含まれる第２カウンタ値の下位１ビットに基づいて、前記記憶手段内のセッション鍵を識別する手段と、
前記識別したセッション鍵に基づいて、前記通信メッセージを検証する第３検証手段と
を備えたことを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信システム及び通信装置に関する。
【背景技術】
【０００２】
一般に、車両に搭載された通信システムでは、複数のＥＣＵ(Electronic Control Unit)が複数の通信装置として用いられる。また、複数のＥＣＵ間の通信では、ＣＡＮ (Controller Area Network)が標準的に用いられる。ＣＡＮでは、不正送信によるリスクを軽減するため、ＣＡＮメッセージにＭＡＣ（メッセージ認証符号）を付与することが検討されている（例えば、非特許文献１を参照。）。
【０００３】
不正送信の１つに再送攻撃がある。再送攻撃は、有効な通信メッセージを再送信する攻撃のため、ＭＡＣを付与するだけでは回避できない。
【０００４】
これに対し、ＥＣＵ間通信における再送攻撃を回避する技術としては、カウンタ値を含むＣＡＮメッセージにＭＡＣを付与する方法がある（例えば、非特許文献２を参照。）。この方法では、ユーザデータ、カウンタ値及び鍵に基づいて、ＭＡＣが生成される。このため、更新されたカウンタ値に応じて異なるＭＡＣが生成されるため、再送攻撃を回避できる。なお、カウンタ値は、必ずしもＣＡＮメッセージに含めなくてもよく、送信者と受信者が同期を取ってカウントアップすればよい。いずれにしても、カウンタ値及びＭＡＣを用いる方法によれば、再送攻撃を回避することができる。
【０００５】
但し、暗号の一般的なリスクとして、ＭＡＣの生成時に同じ鍵を使い続けることで、鍵が推定される可能性や鍵が漏洩する可能性が高まる。従って、周期的に鍵更新を実行することが望ましい。
【０００６】
例えば、車両のイグニッションスイッチをオンするごとに、セッション鍵を変更する方式がある（例えば、特許文献１を参照。）。この方式では、セッション鍵のデータを確実に配送するために、受信確認又は繰り返し送信が実行される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】高田広章、松本勉 著、「車載組込みシステムの情報セキュリティ強化に対する提言」、 [online]、 独立行政法人 情報処理推進機構、［平成２６年１１月４日検索］, インターネット＜URL: https://www.ipa.go.jp/files/000034668.pdf＞
【非特許文献２】“Specification of Module Secure Onboard Communication AUTOSAR Release 4.2.1”, [online], AUTOSAR, p.20-22,［平成２６年１１月４日検索］, インターネット＜URL: https://svn.autosar.org/repos/work/22_Releases/42_Release4.2/01_Standard＞
【特許文献】
【０００８】
【特許文献１】特開２００５−２０３８８２号公報
【特許文献２】特開２００４−１５３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、以上のようなセッション鍵を変更する方式は、通常は特に問題ないが、本発明者の検討によれば、通信量を抑制したい点で改良の余地がある。
【００１０】
例えば、受信確認を行う場合、鍵更新時の通信量が増える。特に鍵を受信するＥＣＵが増えると、ＥＣＵの数だけ通信量が増える。また、繰り返し送信を行う場合、鍵更新に要するメッセージの数に応じて通信量が増える。従って、繰り返し送信を行う場合、例えば、１メッセージで鍵更新を実行する等により、ベースロードの通信量を抑制したい。
【００１１】
このように、セッション鍵を変更する方式は、受信確認又は繰り返し通信のいずれを実行する場合でも、通信量を抑制したい点で改良の余地がある。
【００１２】
これに対し、ＣＡＮの１メッセージで鍵更新可能な技術として、通信に同期して鍵を更新する方式がある（例えば、特許文献２を参照。）。
【００１３】
係る通信に同期して鍵を更新する方式は、通常は特に問題ないが、本発明者の検討によれば、鍵更新のメッセージ自体に不正送信への耐性が考慮されておらず、不正送信を阻止できない点で改良の余地がある。
【００１４】
まとめると、本発明の検討によれば、車両に搭載された複数の通信装置間の通信量を抑制し、且つ不正送信を阻止できることが望ましい。
【００１５】
本発明が解決しようとする課題は、車両に搭載された複数の通信装置間の通信量を抑制し、且つ不正送信を阻止し得る通信システム及び通信装置を提供することである。
【課題を解決するための手段】
【００１６】
実施形態の通信システムは、車両に搭載された鍵配布センタ装置及び複数の通信装置を備えている。
【００１７】
前記鍵配布センタ装置は、第１カウンタ値及び第１秘密情報を保持する。
【００１８】
前記鍵配布センタ装置は、前記第１カウンタ値を更新する。
【００１９】
前記鍵配布センタ装置は、前記更新された第１カウンタ値及び前記第１秘密情報に基づいて第１認証子を生成する。
【００２０】
前記鍵配布センタ装置は、前記更新された第１カウンタ値の下位の一部ビット列と前記第１認証子の一部ビット列とを含む１フレームのセッション更新メッセージを生成する。
【００２１】
前記鍵配布センタ装置は、前記セッション更新メッセージを前記各通信装置に送信する。
【００２２】
前記各通信装置は、前記第１カウンタ値に同期して更新される第２カウンタ値及び前記第１秘密情報と同一の第２秘密情報を保持する。
【００２３】
前記各通信装置は、前記セッション更新メッセージを前記第２カウンタ値及び前記第２秘密情報に基づいて検証する。
【００２４】
前記各通信装置は、前記検証した結果が正当のとき、前記セッション更新メッセージに基づいて、前記更新された第１カウンタ値と同一値に前記第２カウンタ値を更新する。
【００２５】
前記各通信装置は、前記更新した第２カウンタ値に基づいてセッション鍵を生成する。
【図面の簡単な説明】
【００２６】
【図１】第１の実施形態に係る通信システムの構成を示す模式図である。
【図２】同実施形態におけるセッション更新メッセージを説明するための模式図である。
【図３】同実施形態における動作を説明するためのフローチャートである。
【図４】同実施形態における動作を説明するためのフローチャートである。
【図５】同実施形態における動作を説明するためのフローチャートである。
【図６】第２の実施形態におけるセッションＩＤ共有メッセージを説明するための模式図である。
【図７】同実施形態におけるセッションＩＤ共有メッセージの変形例を説明するための模式図である。
【図８】同実施形態における動作を説明するためのフローチャートである。
【図９】同実施形態における動作を説明するためのフローチャートである。
【図１０】第３の実施形態におけるセッション鍵の生成処理を説明するための模式図である。
【図１１】第４の実施形態におけるＣＡＮメッセージの構成を示す模式図である。
【図１２】同実施形態におけるセッション鍵の履歴データを説明するための模式図である。
【図１３】同実施形態における動作を説明するためのフローチャートである。
【図１４】同実施形態における動作を説明するための模式図である。
【発明を実施するための形態】
【００２７】
以下、各実施形態について図面を用いて説明する。なお、以下の各実施形態は、ＣＡＮに限らず、例えばＬＩＮ(Local Interconnect Network)等の任意の車載ＬＡＮ(Local Area Network)に適用可能となっている。また、各実施形態は、ＭＡＣに限らず、例えばＨＭＡＣ(Hash-based Message Authentication Code)等の任意の認証子が使用可能となっている。また、各実施形態におけるビット数及びバイト数は一例であり、他の値に変更してもよい。
【００２８】
＜第１の実施形態＞
図１は第１の実施形態に係る通信システムの構成を示す模式図であり、図２は通信システムに用いられるセッション更新メッセージを説明するための模式図である。
【００２９】
この通信システムは、車両に搭載された鍵配布センタ装置１０及び複数の通信装置２０Ａ〜２０Ｘを備えている。なお、「鍵配布センタ装置」及び「通信装置」は、それぞれ「第１ＥＣＵ」及び「第２ＥＣＵ」等のように他の名称に読み替えてもよい。
【００３０】
ここで、鍵配布センタ装置１０は、メモリ１１及び鍵配布部１２を備えている。
【００３１】
メモリ１１は、鍵配布部１２から任意のデータを読出／書込可能な記憶部であり、例えば、ＭＡＣ鍵Ｋ（第１秘密情報）を保持する。
【００３２】
鍵配布部１２は、例えば、以下の機能(f12-1)〜(f12-4)をもっている。
【００３３】
(f12-1)  第１カウンタ値“cnt_M”を保持する機能。なお、メモリ１１及び鍵配布部１２は、第１カウンタ値及び第１秘密情報を保持する手段を構成している。「第１カウンタ値」は、「第１カウンタの値」や「第１カウンタのカウンタ値」等と読み替えてもよい。
【００３４】
(f12-2)  第１カウンタ値“cnt_M”を更新する機能。
【００３５】
(f12-3)  更新された第１カウンタ値“cnt_M”及びＭＡＣ鍵Ｋ（第１秘密情報）に基づいてＭＡＣ（第１認証子）を生成する。
【００３６】
(f12-4)  更新された第１カウンタ値“cnt_M”の下位の一部ビット列とＭＡＣ（第１認証子）の一部ビット列とを含む１フレームのセッション更新メッセージを生成する機能。図２に示す例では、３２ビットの第１カウンタ値“cnt_M”からなるセッションＩＤと、１２８ビットのＭＡＣとに関し、セッションＩＤの下位１バイトとＭＡＣの上位７バイトとからなる８バイトのセッション更新メッセージが生成されている。このセッション更新メッセージは、ＣＡＮの不正送信対策として行うセッション鍵ＤＫの更新のために生成される。セッション鍵ＤＫは、通信メッセージへのＭＡＣ付与に用いられる一時的な鍵である。
【００３７】
(f12-5)  セッション更新メッセージを各通信装置２０Ａ〜２０Ｘに送信する機能。
【００３８】
続いて、各通信装置２０Ａ〜２０Ｘについて説明する。各通信装置２０Ａ〜２０Ｘは、車両の運転に関する電子制御機能が異なるものの、各実施形態における鍵生成機能及びＣＡＮ通信機能に関しては互いに同一構成となっている。このため、以下では、通信装置２０Ｘを代表例に挙げて説明する。なお、以下の説明は、符号内の「Ｘ」を「Ａ」，「Ｂ」，…に置き換えることにより、他の通信装置２０Ａ，２０Ｂ，…の説明として読み替えることが可能である。
【００３９】
通信装置２０Ｘは、メモリ２１Ｘ、通信部２２Ｘ及び制御部２３Ｘを備えている。
【００４０】
メモリ２１Ｘは、各部２２Ｘ，２３Ｘから任意のデータを読出／書込可能な記憶部であり、例えば、ＭＡＣ鍵Ｋ（第２秘密情報）及びセッション鍵生成情報（第３秘密情報）を保持する。ここで、各メモリ１１，２１Ａ〜２１Ｘ内のＭＡＣ鍵Ｋは、セッションＩＤ共有用の鍵であって、互いに同一の鍵である。また、各メモリ２１Ａ〜２１Ｘ内のセッション鍵生成情報は、互いに同一の情報である。セッション鍵生成情報は、必須ではなく、省略してもよい。セッション鍵生成情報を省略する場合、例えば、セッションＩＤ及びＭＡＣ鍵Ｋに基づいて、セッション鍵ＤＫを生成すればよい。
【００４１】
通信部２２Ｘは、車載ＬＡＮにおける通信インターフェースであり、例えば、鍵配布センタ装置１０が１フレームのセッション更新メッセージを送信したとき、鍵配布センタ装置１０からセッション更新メッセージを受信する機能をもっている。セッション更新メッセージは、鍵配布センタ装置１０が生成したＭＡＣ（第１認証子）の一部ビット列と、鍵配布センタ装置１０が更新した第１カウンタ値“cnt_M”の下位の一部ビット列とを含んでいる。このＭＡＣ（第１認証子）は、鍵配布センタ装置１０が更新した第１カウンタ値“cnt_M”及び鍵配布センタ装置１０が保持するＭＡＣ鍵Ｋ（第１秘密情報）に基づいて生成されている。
【００４２】
制御部２３Ｘは、例えば、以下の機能(f23X-1)〜(f23X-4)をもっている。
【００４３】
(f23X-1)  第１カウンタ値“cnt_M”に同期して更新される第２カウンタ値“cnt_X”を保持する機能。第２カウンタ値“cnt_X”は、最新のセッションＩＤを示している。なお、「第２カウンタ値」は、「第２カウンタの値」や「第２カウンタのカウンタ値」等と読み替えてもよい。また、メモリ２１Ｘ及び制御部２３Ｘは、第１カウンタ値に同期して更新される第２カウンタ値及び第１秘密情報と同一の第２秘密情報を保持する手段を構成している。
【００４４】
(f23X-2)  通信部２２Ｘに受信されたセッション更新メッセージを第２カウンタ値“cnt_X”及びＭＡＣ鍵Ｋ（第２秘密情報）に基づいて検証する第１検証機能。
【００４５】
(f23X-3)  検証した結果が正当のとき、セッション更新メッセージに基づいて、更新された第１カウンタ値“cnt_M”と同一値に第２カウンタ値“cnt_X”を更新する第１更新機能。
【００４６】
(f23X-4)  更新した第２カウンタ値“cnt_X”に基づいてセッション鍵ＤＫを生成する機能。なお、生成されたセッション鍵ＤＫは、例えばメモリ２１Ｘに保持される。
【００４７】
次に、以上のように構成された通信システムの動作を図３乃至図５のフローチャートを用いて説明する。
【００４８】
始めに、鍵配布センタ装置１０は、第１カウンタ値“cnt_M”及びＭＡＣ鍵Ｋを保持しているとする。また、各通信装置２０Ａ〜２０Ｘは、鍵配布センタ装置１０内の第１カウンタ値“cnt_M”に同期して更新される第２カウンタ値“cnt_A”〜“cnt_X”、及び通信システム内で共通のＭＡＣ鍵Ｋを保持しているとする。以下、各通信装置２０Ａ〜２０Ｘは互いに並列に動作するが、ここでは通信装置２０Ｘの動作を代表例に挙げて述べる。
【００４９】
いま、鍵配布センタ装置１０の鍵配布部１２は、図３に示すように、４バイトの第１カウンタ値“cnt_M”を１加算して更新する（ＳＴ１）。第１カウンタ値“cnt_M”は、例えば、定期的及び／又は不定期に更新可能となっている。例えば、第１カウンタ値“cnt_M”は、毎秒更新してもよく、車両のイグニッションキーのオン時に更新してもよい。
【００５０】
鍵配布部１２は、更新された第１カウンタ値“cnt_M”をセッションＩＤとし（ＳＴ２）、セッションＩＤ及び及びＭＡＣ鍵Ｋに基づいてＭＡＣを生成する（ＳＴ３）。
【００５１】
また、鍵配布部１２は、セッションＩＤの下位１バイトと、ＭＡＣの上位７バイトとを連結してセッション更新メッセージを作成する（ＳＴ４）。
【００５２】
しかる後、鍵配布部１２は、この作成したセッション更新メッセージを各通信装置２０Ａ〜２０Ｘに送信する（ＳＴ５）。なお、鍵配布部１２は、通信装置２０Ａ〜２０Ｘ毎にセッション更新メッセージを繰り返し送信してもよく、全ての通信装置２０Ａ〜２０Ｘにセッション更新メッセージを同報通信してもよい。
【００５３】
ステップＳＴ５の後、各通信装置２０Ａ〜２０Ｘでは、ステップＳＴ１０〜ＳＴ７０の処理が並列に実行される。以下では、通信装置２０Ｘを代表例に挙げて説明する。
【００５４】
通信装置２０Ｘの通信部２２Ｘは、鍵配布センタ装置１０からセッション更新メッセージを受信する（ＳＴ１０）。
【００５５】
通信装置２０Ｘの制御部２３Ｘは、受信されたセッション更新メッセージを第２カウンタ値“cnt_X”及びＭＡＣ鍵Ｋに基づいて検証する（ＳＴ２０〜ＳＴ４０）。
【００５６】
始めに、制御部２３Ｘは、セッション更新メッセージに基づいて、セッションＩＤを算出する（ＳＴ２０）。ステップＳＴ２０は、例えば、ステップＳＴ２１〜ＳＴ２３に示すように実行される（図４参照）。
【００５７】
制御部２３Ｘは、セッション更新メッセージからセッションＩＤの下位１バイト“ＩＤ３”を取得し、このセッションＩＤの下位１バイト“ＩＤ３”を“ｓＩＤ”とする。
【００５８】
制御部２３Ｘは、このセッションＩＤの下位１バイト“ｓＩＤ”と、第２カウンタ値“cnt_X”の下位１バイト“cnt_X3”とに基づいて、ｓＩＤ≧cnt_X3が成り立つか否かを判定する（ＳＴ２１）。
【００５９】
ステップＳＴ２１の判定結果がｓＩＤ≧cnt_X3の成立を示す場合（ＳＴ２１；Yes）、制御部２３Ｘは、４バイトの第２カウンタ値“cnt_X”の下位１バイトを０とした値と、 セッションＩＤの下位１バイト“ｓＩＤ”とを加算する。これにより、制御部２３Ｘは、４バイトのセッションＩＤを算出する（ＳＴ２２）。
【００６０】
また、ステップＳＴ２１の判定結果が否の場合（ＳＴ２１；No）、制御部２３Ｘは、４バイトの第２カウンタ値“cnt_X”の下位１バイトを０とした値と、定数“0x100”と、セッションＩＤの下位１バイト“ｓＩＤ”とを加算する。これにより、制御部２３Ｘは、４バイトのセッションＩＤを算出する（ＳＴ２３）。なお、図４においては、算出されたセッションＩＤは、cnt_X2+1が桁上がりしていない場合を例示している。この例示は図５においても同様である。また、桁上がりする場合には、桁上がりの結果が上位ビット列に順次、伝わってセッションＩＤが算出される。いずれにしても、算出したセッションＩＤは、メモリ２１Ｘに一時的に保持される。
【００６１】
次に、制御部２３Ｘは、ステップＳＴ２０で算出したセッションＩＤを第２カウンタ値“cnt_X”に基づいて検証する（ＳＴ３０）。ステップＳＴ３０は、例えば、ステップＳＴ３１〜ＳＴ３２に示すように実行される（図５参照）。
【００６２】
制御部２３Ｘは、メモリ２１Ｘ内のセッションＩＤ及び保持する第２カウンタ値“cnt_X”を読み出し（ＳＴ３１）、セッションＩＤが第２カウンタ値“cnt_X”以下か否かを判定する（ＳＴ３２）。
【００６３】
ステップＳＴ３２の判定結果が第２カウンタ値以下を示す場合（ＳＴ３２；Yes）、制御部２３Ｘは、ステップＳＴ５０に進んでセッションＩＤを破棄し、処理を終了する。
【００６４】
また、ステップＳＴ３２の判定結果が否の場合（ＳＴ３２；No）、制御部２３Ｘは、ステップＳＴ４０に進み、セッション更新メッセージ内のＭＡＣを検証する（ＳＴ４０）。ステップＳＴ４０は、例えば、ステップＳＴ４１〜ＳＴ４４に示すように実行される。
【００６５】
制御部２３Ｘは、セッションＩＤ及びＭＡＣ鍵Ｋに基づいて、１６バイトのＭＡＣを生成し（ＳＴ４１）、このＭＡＣから上位７バイトの値を取得する（ＳＴ４２）。
【００６６】
制御部２３Ｘは、セッション更新メッセージからＭＡＣの上位７バイトの値を取得する（ＳＴ４３）。
【００６７】
しかる後、制御部２３Ｘは、ステップＳＴ４２及びＳＴ４３で取得したＭＡＣの上位７バイトの値が互いに一致するか否かを判定し（ＳＴ４４）、否の場合（ＳＴ４４；No）にはステップＳＴ５０に進んでセッションＩＤを破棄し、処理を終了する。
【００６８】
また、ステップＳＴ４４の判定結果が一致を示す場合（ＳＴ４４；Yes）、制御部２３Ｘは、ステップＳＴ２０〜ＳＴ４０にかけてセッション更新メッセージを検証した結果を正当とし、ステップＳＴ６０に進む。
【００６９】
制御部２３Ｘは、当該検証した結果が正当のとき、セッション更新メッセージに基づいて、更新された第１カウンタ値“cnt_M”と同一値に第２カウンタ値“cnt_X”を更新する。具体的には、制御部２３Ｘは、第２カウンタ値“cnt_X”をセッションＩＤに置換する（ＳＴ６０）。
【００７０】
しかる後、制御部２３Ｘは、更新した第２カウンタ値“cnt_X”に基づいてセッション鍵ＤＫを生成する（ＳＴ７０）。なお、生成されたセッション鍵ＤＫは、例えばメモリ２１Ｘに保持される。
【００７１】
これにより、セッション鍵ＤＫの更新が完了する。なお、ステップＳＴ１０〜ＳＴ７０の処理は、他の各通信装置２０Ａ〜でも同様に実行される。これにより、各通信装置２０Ａ〜２０Ｘは、更新されたセッション鍵ＤＫを共有する。
【００７２】
以下、通信装置２０Ｘは、更新したセッション鍵ＤＫ及びメッセージ本文から生成したＭＡＣを当該メッセージ本文に付与して通信メッセージを作成し、この通信メッセージを他の通信装置２０Ａ，…に通信する。このような通信メッセージの作成及び通信は、他の各通信装置２０Ａ〜でも同様に実行される。
【００７３】
上述したように本実施形態によれば、鍵配布センタ装置１０が、更新された第１カウンタ値の下位の一部ビット列と第１認証子の一部ビット列とを含む１フレームのセッション更新メッセージを各通信装置２０Ａ〜２０Ｘに送信する。
【００７４】
各通信装置２０Ａ〜２０Ｘは、セッション更新メッセージを検証し、セッション更新メッセージに基づいて、更新された第１カウンタ値と同一値に第２カウンタ値“cnt_X”を更新し、更新した第２カウンタ値“cnt_X”に基づいてセッション鍵を生成する。
【００７５】
従って、本実施形態によれば、セッション更新メッセージが１フレームで済むため、車両に搭載された複数の通信装置間の通信量を抑制することができる。また、セッション更新メッセージがＭＡＣを含むため、不正送信を阻止することができる。
【００７６】
ここで、不正送信の阻止について補足する。セッション更新メッセージの再送攻撃は、単調増加のカウンタ値をセッション更新メッセージが含むことにより、排除される。
【００７７】
また、セッション更新メッセージ内の７バイトのＭＡＣを検証することにより、セッション更新メッセージの偽造又は変造といった不正な作成が困難となっている。
【００７８】
＜第２の実施形態＞
次に、第２の実施形態について図１等を参照しながら説明する。
【００７９】
第２の実施形態は、第１の実施形態の変形例であり、各通信装置２０Ａ〜２０Ｘのいずれかが交換された場合や節電のためのスリープ状態から復帰した場合などのように、セッション更新メッセージからセッションＩＤを算出できない場合の形態に関する。
【００８０】
すなわち、第２の実施形態は、各通信装置２０Ａ〜２０ＸがセッションＩＤを算出できず、第２カウント値をセッションＩＤに更新できず、通信メッセージの送信（ＭＡＣの付与）や受信（ＭＡＣの検証）を実行できない場合に関する。
【００８１】
この場合、通信装置２０Ｘは、前述した機能に加え、以下の機能をもっている。なお、他の通信装置２０Ａ〜も同様である。
【００８２】
通信部２２Ｘは、制御部２３Ｘが第２カウンタ値を更新できない場合、セッションＩＤ共有メッセージの送信要求を鍵配布センタ装置１０に送信する機能をもっている。
【００８３】
通信部２２Ｘは、この送信要求に応じて、１フレームのセッションＩＤ共有メッセージを鍵配布センタ装置１０から受信する機能をもっている。なお、通信部２２Ｘは、セッションＩＤ共有メッセージが周期的に配信される場合にも、当該セッションＩＤ共有メッセージを受信する機能をもっている。この場合、セッションＩＤ共有メッセージの更新周期は、例えば、セッション更新メッセージの更新周期よりも長い周期が用いられる。
【００８４】
ここで、セッションＩＤ共有メッセージは、図６に示すように、鍵配布センタ装置１０が更新した第１カウンタ値（セッションＩＤ）の全てのビット列と、ＭＡＣ（第１認証子）のうちのセッション更新メッセージと重複しない一部のビット列とを含んでいる。
【００８５】
但し、セッションＩＤ共有メッセージは、更新した第１カウンタ値のうちの少なくともセッション更新メッセージと重複しない部分の全てのビット列と、ＭＡＣのうちのセッション更新メッセージと重複しない一部のビット列とを含んでいればよい（図７参照）。理由は、セッション更新メッセージ内のセッションＩＤのビット列“ID3”と、セッションＩＤ共有メッセージ内のセッションＩＤのビット列“ID0｜ID1｜ID2”とからセッションＩＤ“ID0｜ID1｜ID2｜ID3”を取得できればよいためである。なお、記号“｜”は、ビット列の連結を表す。また、「セッションＩＤ共有メッセージ」は、例えば「セッション共有メッセージ」又は「カウンタ値共有メッセージ」のように、適宜、他の名称に読み替えてもよい。
【００８６】
制御部２３Ｘは、以下の機能(f23X-5)〜(f23X-7)を更に備えている。
【００８７】
(f23X-5)  通信部２２Ｘに受信されたセッションＩＤ共有メッセージを第２カウンタ値“cnt_X”及びＭＡＣ鍵Ｋ（第２秘密情報）に基づいて検証する第２検証機能。
【００８８】
(f23X-6)  第２検証機能により検証した結果が正当のとき、セッションＩＤ共有メッセージに基づいて、更新された第１カウンタ値“cnt_M”と同一値に第２カウンタ値“cnt_X”を更新する第２更新機能。
【００８９】
(f23X-7)  第２更新機能により更新した第２カウンタ値“cnt_X”に基づいてセッション鍵ＤＫを生成する機能。
【００９０】
次に、以上のように構成された通信システムの動作を図８及び図９のフローチャートを用いて説明する。
【００９１】
いま、ある通信装置２０Ｘは、前述したステップＳＴ５０等により、第２カウンタ値を更新できない状況にあるとする。
【００９２】
このとき、通信装置２０Ｘの通信部２２Ｘは、制御部２３Ｘから制御され、セッションＩＤ共有メッセージの送信要求を鍵配布センタ装置１０に送信する。
【００９３】
鍵配布センタ装置１０の鍵配布部１０は、この送信要求を受信すると、図８に示すように、現在の第１カウンタ値“cnt_M”をセッションＩＤとし（ＳＴ１０１）、セッションＩＤ及び及びＭＡＣ鍵Ｋに基づいてＭＡＣを生成する（ＳＴ１０２）。
【００９４】
また、鍵配布部１２は、図６に示したように、４バイトのセッションＩＤと、ＭＡＣの中位４バイトとを連結して８バイトのセッションＩＤ共有メッセージを作成する（ＳＴ１０３）。
【００９５】
しかる後、鍵配布部１２は、この作成したセッションＩＤ共有メッセージを各通信装置２０Ａ〜２０Ｘに送信する（ＳＴ１０４）。なお、鍵配布部１２は、送信要求を送信した通信装置２０ＸのみにセッションＩＤ共有メッセージを送信してもよい。
【００９６】
ステップＳＴ１０４の後、各通信装置２０Ａ〜２０Ｘでは、ステップＳＴ１１０〜ＳＴ１７０の処理が並列に実行される。以下では、通信装置２０Ｘを代表例に挙げて説明する。
【００９７】
通信装置２０Ｘの通信部２２Ｘは、鍵配布センタ装置１０からセッションＩＤ共有メッセージを受信する（ＳＴ１１０）。
【００９８】
通信装置２０Ｘの制御部２３Ｘは、受信されたセッションＩＤ共有メッセージを第２カウンタ値“cnt_X”及びＭＡＣ鍵Ｋに基づいて検証する（ＳＴ１２０〜ＳＴ１４０）。
【００９９】
始めに、制御部２３Ｘは、セッションＩＤ共有メッセージからセッションＩＤと、ＭＡＣの上位１１バイトとを取得する（ＳＴ１２０）。ステップＳＴ１２０は、例えば、ステップＳＴ１２１〜ＳＴ１２３に示すように実行される（図９参照）。
【０１００】
制御部２３Ｘは、セッションＩＤ共有メッセージから４バイトのセッションＩＤと、ＭＡＣの中位４バイトとを取得する（ＳＴ１２１）。
【０１０１】
また、制御部２３Ｘは、別途、取得した最新のセッション更新メッセージからセッションＩＤの下位１バイト“ＩＤ３”と、ＭＡＣの上位７バイトとを取得する（ＳＴ１２２）。制御部２３Ｘは、このセッションＩＤの下位１バイト“ＩＤ３”を“ｓＩＤ”とする。
【０１０２】
しかる後、制御部２３Ｘは、ステップＳＴ１２１〜ＳＴ１２２で取得したＭＡＣの中位４バイトと上位７バイトとを連結し、ＭＡＣの上位１１バイトを取得する（ＳＴ１２３）。
【０１０３】
次に、制御部２３Ｘは、ステップＳＴ１２０で取得したセッションＩＤを検証する（ＳＴ１３０）。ステップＳＴ１３０は、例えば、ステップＳＴ１３１〜ＳＴ１３２に示すように実行される。
【０１０４】
制御部２３Ｘは、ステップＳＴ１２１で取得したセッションＩＤの下位１バイトと、ステップＳＴ１２２で取得したセッションＩＤの下位１バイト“ｓＩＤ”とが一致するか否かを判定する（ＳＴ１３１）。
【０１０５】
ステップＳＴ１３１の判定結果が否の場合（ＳＴ１３１；No）、制御部２３Ｘは、ステップＳＴ１５０に進んでセッションＩＤを破棄し、処理を終了する。
【０１０６】
ステップＳＴ１３１の判定結果が一致を示す場合（ＳＴ１３１；Yes）、制御部２３Ｘは、メモリ２１Ｘに保持する第２カウンタ値“cnt_X”を読み出し、セッションＩＤが第２カウンタ値“cnt_X”以下か否かを判定する（ＳＴ１３２）。
【０１０７】
ステップＳＴ１３２の判定結果が一致を示す場合（ＳＴ１３２；Yes）、制御部２３Ｘは、ステップＳＴ１５０に進んでセッションＩＤを破棄し、処理を終了する。
【０１０８】
また、ステップＳＴ１３２の判定結果が否の場合（ＳＴ１３２；No）、制御部２３Ｘは、ステップＳＴ１４０に進み、セッション更新メッセージとセッションＩＤ共有メッセージとに含まれるＭＡＣを検証する（ＳＴ１４０）。ステップＳＴ１４０は、例えば、ステップＳＴ１４１〜ＳＴ１４２に示すように実行される。
【０１０９】
制御部２３Ｘは、セッションＩＤ及びＭＡＣ鍵Ｋに基づいて、１６バイトのＭＡＣを生成し、このＭＡＣから上位１１バイトの値を取得する（ＳＴ１４１）。
【０１１０】
制御部２３Ｘは、ステップＳＴ１２３及びＳＴ１４１で取得したＭＡＣの上位１１バイトの値が互いに一致するか否かを判定し（ＳＴ１４２）、否の場合（ＳＴ１４２；No）にはステップＳＴ１５０に進んでセッションＩＤを破棄し、処理を終了する。
【０１１１】
また、ステップＳＴ１４２の判定結果が一致を示す場合（ＳＴ１４２；Yes）、制御部２３Ｘは、ステップＳＴ１２０〜ＳＴ１４０にかけてセッションＩＤ共有メッセージを検証した結果を正当とし、ステップＳＴ１６０に進む。
【０１１２】
制御部２３Ｘは、当該検証した結果が正当のとき、セッションＩＤ共有メッセージに基づいて、更新された第１カウンタ値“cnt_M”と同一値に第２カウンタ値“cnt_X”を更新する。具体的には、制御部２３Ｘは、第２カウンタ値“cnt_X”をセッションＩＤに置換する（ＳＴ１６０）。
【０１１３】
しかる後、制御部２３Ｘは、更新した第２カウンタ値“cnt_X”に基づいてセッション鍵ＤＫを生成する（ＳＴ１７０）。なお、生成されたセッション鍵ＤＫは、例えばメモリ２１Ｘに保持される。
【０１１４】
これにより、セッション鍵ＤＫの更新が完了する。なお、ステップＳＴ１１０〜ＳＴ１７０の処理は、他の各通信装置２０Ａ〜でも同様に実行される。これにより、各通信装置２０Ａ〜２０Ｘは、更新されたセッション鍵ＤＫを共有する。
【０１１５】
以下、通信装置２０Ｘは、更新したセッション鍵ＤＫ及びメッセージ本文から生成したＭＡＣを当該メッセージ本文に付与して通信メッセージを作成し、この通信メッセージを他の通信装置２０Ａ，…に通信する。このような通信メッセージの作成及び通信は、他の各通信装置２０Ａ〜でも同様に実行される。
【０１１６】
上述したように本実施形態によれば、通信装置２０Ｘは、第２カウンタ値を更新できない場合、セッションＩＤ共有メッセージの送信要求を鍵配布センタ装置１０に送信し、１フレームのセッションＩＤ共有メッセージを鍵配布センタ装置１０から受信する。
【０１１７】
通信装置２０Ｘは、受信したセッションＩＤ共有メッセージを検証し、検証した結果が正当のとき、セッションＩＤ共有メッセージに基づいて、更新された第１カウンタ値“cnt_M”と同一値に第２カウンタ値“cnt_X”を更新する。
【０１１８】
しかる後、通信装置２０Ｘは、更新した第２カウンタ値“cnt_X”に基づいてセッション鍵ＤＫを生成する。
【０１１９】
従って、本実施形態によれば、第１の実施形態の効果に加え、いずれかの通信装置２０Ｘが交換された場合や節電のためのスリープ状態から復帰した場合などにも、通信装置２０Ａ〜２０ＸがセッションＩＤを取得してセッション鍵ＤＫを生成することができる。
【０１２０】
また、セッション更新メッセージと同様に、セッションＩＤ共有メッセージが１フレームで済むため、車両の通信装置間の通信量を抑制でき、セッションＩＤ共有メッセージがＭＡＣを含むため、不正送信を阻止できる。
【０１２１】
＜第３の実施形態＞
次に、第３の実施形態について図１等を参照しながら説明する。
【０１２２】
第３の実施形態は、第１又は第２の実施形態の具体例であり、各通信装置２０Ａ〜２０Ｘの制御部２３Ａ〜２３Ｘにおいてセッション鍵ＤＫを生成する形態に関する。
【０１２３】
ここで、セッション鍵ＤＫは、更新された第２カウンタ値“cnt_X”と、複数の通信装置２０Ａ〜２０Ｘが予め共有する（ａ）第３秘密情報又は（ｂ）ＭＡＣ鍵Ｋ（第２秘密情報）とに基づいて生成される。
【０１２４】
（ａ）セッション鍵ＤＫが第２カウンタ値“cnt_X”と第３秘密情報とに基づいて生成される場合、セッション鍵ＤＫの生成には、例えば、ＰＢＫＤＦ２（パスワードベースの鍵導出関数２）が用いられる（図１０参照）。「ＰＢＫＤＦ２」は、「Password-Based Key Derivation Function 2」の略語である。
【０１２５】
ＰＢＫＤＦ２は、疑似乱数関数ＰＲＦ、パスワード、ソルト、繰り返し回数ｃ及び鍵長ｄｋＬｅｎに基づいて、鍵を導出する鍵導出関数である。ＰＢＫＤＦ２の詳細については、例えば“http://en.wikipedia.org/wiki/PBKDF2”に記載されている。なお、「鍵導出関数」は「鍵生成関数」と読み替えてもよい。
【０１２６】
ここでは、ＰＢＫＤＦ２のソルトとしてセッションＩＤを用い、他のパラメータをセッション鍵生成情報（第３秘密情報）として事前に共有すればよい。
【０１２７】
すなわち、各通信装置２０Ａ〜２０Ｘのメモリ２１Ａ〜２１Ｘは、疑似乱数関数ＰＲＦ、パスワード、繰り返し回数ｃ及び鍵長ｄｋＬｅｎを含むセッション鍵生成情報を予め保持している。
【０１２８】
（ｂ）セッション鍵ＤＫが第２カウンタ値“cnt_X”とＭＡＣ鍵Ｋ（第２秘密情報）とに基づいて生成される場合、セッション鍵ＤＫの生成には、例えば、鍵付きハッシュ関数が用いられる。なお、「鍵付きハッシュ関数」は「鍵生成関数」と読み替えてもよい。
【０１２９】
次に、以上のように構成された通信システムの動作を図１０の模式図を用いて説明する。
【０１３０】
いま、第１又は第２の実施形態と同様に、ステップＳＴ１〜ＳＴ５，ＳＴ１０〜ＳＴ７０又はステップＳＴ１０１〜ＳＴ１０４，ＳＴ１１０〜ＳＴ１７０が実行されたとする。
【０１３１】
このとき、ステップＳＴ７０又はステップＳＴ１７０においては、例えば、図１０に示すように、セッション鍵ＤＫが生成される。
【０１３２】
すなわち、制御部２３Ｘは、例えば、ステップＳＴ６０又はＳＴ１６０で更新された第２カウンタ値“cnt_X”と、複数の通信装置２０Ａ〜２０Ｘが予め共有するセッション鍵生成情報に基づいてセッション鍵を生成する。
【０１３３】
あるいは、制御部２３Ｘは、ステップＳＴ６０又はＳＴ１６０で更新された第２カウンタ値“cnt_X”と、複数の通信装置２０Ａ〜２０Ｘが予め共有するＭＡＣ鍵Ｋに基づいてセッション鍵を生成してもよい。
【０１３４】
いずれにしても、ステップＳＴ７０又はＳＴ１７０において、制御部２３Ｘは、更新された第２カウンタ値“cnt_X”と、複数の通信装置２０Ａ〜２０Ｘが予め共有するセッション鍵生成情報又はＭＡＣ鍵Ｋに基づいてセッション鍵ＤＫを生成する。このセッション鍵ＤＫは、前述同様に、他の通信装置２０Ａ〜でも同様に生成され、各通信装置２０Ａ〜２０Ｘ間で共有される。
【０１３５】
しかる後、前述同様に、更新後のセッション鍵ＤＫを用いた通信メッセージの作成及び通信が各通信装置２０Ａ〜２０Ｘで実行される。
【０１３６】
上述したように本実施形態によれば、セッション鍵ＤＫが、更新された第２カウンタ値“cnt_X”と、複数の通信装置２０Ａ〜２０Ｘが予め共有するセッション鍵生成情報（第３秘密情報）又はＭＡＣ鍵Ｋ（第２秘密情報）とに基づいて生成される。
【０１３７】
従って、第１又は第２の実施形態と同様に、セッション更新メッセージ又はセッションＩＤ共有メッセージにより同期したセッションＩＤに基づき、各通信装置２０Ａ〜２０Ｘが予め共有する秘密情報及び鍵生成関数を用い、セッション鍵ＤＫを生成できる。すなわち、セッションＩＤの更新に同期して、セッション鍵ＤＫを生成及び共有できる。
【０１３８】
＜第４の実施形態＞
次に、第４の実施形態について図１等を参照しながら説明する。
【０１３９】
第４の実施形態は、第１〜第３の各実施形態の具体例であり、各通信装置２０Ａ〜２０Ｘの制御部２３Ａ〜２３Ｘにおいてセッション鍵ＤＫを識別する形態に関する。
【０１４０】
すなわち、第４の実施形態は、セッション鍵ＤＫの更新と適用が非同期に行われることから、図１１に示すように、通信メッセージにセッションＩＤの下位１ビットを含めることにより、通信メッセージに適用するセッション鍵ＤＫを識別する形態である。なお、「通信メッセージ」は、例えば「ＣＡＮメッセージ」と読み替えてもよい。
【０１４１】
これに伴い、通信装置２０Ｘは、前述した機能に加え、以下の機能をもっている。なお、他の通信装置２０Ａ〜も同様である。
【０１４２】
通信装置２０Ｘのメモリ２１Ｘは、図１２に示すように、更新履歴情報を記憶する。
【０１４３】
更新履歴情報は、更新した第２カウンタ値“cnt_X”（セッションＩＤ）の下位１ビットと、この第２カウンタ値“cnt_X”に基づいて生成したセッション鍵ＤＫとが関連付けて記述されている。なお、更新履歴情報は、さらに、第２カウンタ値“cnt_X”の更新時刻と、更新した第２カウンタ値“cnt_X”（セッションＩＤ）の下位１バイトとが関連付けて記述されていてもよい。
【０１４４】
通信部２２Ｘは、通信メッセージを他の通信装置２０Ａ〜から受信する機能をもっている。この通信メッセージは、ＭＡＣ（第２認証子）及びメッセージ本文からなる。当該メッセージ本文は、他の通信装置２０Ａ〜が保持する第２カウンタ値“cnt_A”〜の下位１ビットを付与したデータからなる。当該ＭＡＣ（第２認証子）は、メッセージ本文及びセッション鍵ＤＫに基づいて、他の通信装置２０Ａ〜により生成されている。
【０１４５】
制御部２３Ｘは、以下の機能(f23X-8)〜(f23X-9)を更に備えている。
【０１４６】
(f23X-8)  通信メッセージに含まれる第２カウンタ値“cnt_A”の下位１ビットに基づいて、メモリ２１Ｘ内のセッション鍵ＤＫを識別する機能。
【０１４７】
(f23X-9)  当該識別したセッション鍵ＤＫに基づいて、通信メッセージを検証する第３検証機能。
【０１４８】
また、制御部２３Ｘは、前述したステップＳＴ６０又はＳＴ１６０により更新した第２カウンタ値“cnt_X”の下位１ビットと、この第２カウンタ値“cnt_X”に基づいて生成したセッション鍵ＤＫとを関連付けてメモリ２１Ｘに書き込む機能をもっている。
【０１４９】
次に、以上のように構成された通信システムの動作を図１３のフローチャート及び図１４の模式図を用いて説明する。以下の説明は、各通信装置２０Ａ〜２０Ｘのうち、２つの通信装置２０Ａ，２０Ｘ間の通信動作を例に挙げて述べる。
【０１５０】
始めに、各通信装置２０Ａ〜２０Ｘは、前述したステップＳＴ７０又はＳＴ１７０等により、セッション鍵ＤＫをメモリ２１Ａ〜２１Ｘに共有しているとする。また、各通信装置２０Ａ〜２０Ｘのメモリ２１Ａ〜２１Ｘは、図１２に示した如き、更新履歴情報を記憶しているとする。
【０１５１】
いま、ある通信装置２０Ａから他の通信装置２０Ｘに通信メッセージを送信するとする。このとき、通信装置２０Ａの制御部２３Ａは、図１３に示すように、通信内容を示すユーザデータを作成し（ＳＴ２０１）、第２カウンタ値“cnt_A”（セッションＩＤ）の下位１ビットを取得する（ＳＴ２０２）。
【０１５２】
制御部２３Ａは、図１４に示すように、これらユーザデータと、セッションＩＤの下位１ビットとを連結してメッセージ本文を作成する（ＳＴ２０３）。
【０１５３】
また、制御部２３Ａは、作成したメッセージ本文と、メモリ２１Ａ内のセッション鍵ＤＫとに基づいてＭＡＣを生成する（ＳＴ２０４）。
【０１５４】
さらに、制御部２３Ａは、ステップＳＴ２０３で作成したメッセージ本文と、ステップＳＴ２０４で生成したＭＡＣとを含む通信メッセージを作成する（ＳＴ２０５）。
【０１５５】
しかる後、通信装置２０Ａは、、この作成した通信メッセージを通信部２１Ａにより他の通信装置２０Ｘに送信する（ＳＴ２０６）。
【０１５６】
通信装置２０Ｘの通信部２２Ｘは、通信装置２０Ａから通信メッセージを受信する（ＳＴ２０７）。
【０１５７】
通信装置２０Ｘの制御部２３Ｘは、受信した通信メッセージからセッションＩＤの下位１ビットを取得する（ＳＴ２０８）。
【０１５８】
制御部２３Ｘは、取得した下位１ビットの値に基づき、メモリ２１Ｘ内の更新履歴情報に含まれる直近２つのレコードから、セッション鍵ＤＫを認識する（ＳＴ２０９）。
【０１５９】
例えば、制御部２３Ｘは、図１２中、直近２つのレコードが更新時刻ｔ３，ｔ２の２行である場合、取得した下位１ビットが“０”であればセッション鍵“ＤＫ２”を認識し、取得した下位１ビットが“１”であればセッション鍵“ＤＫ３”を認識する。
【０１６０】
次に、制御部２３Ｘは、認識したセッション鍵ＤＫに基づいて、通信メッセージ内のＭＡＣを検証する（ＳＴ２１０）。これは、通信メッセージ内のメッセージ本文と、認識したセッション鍵ＤＫとに基づいてＭＡＣを生成し、当該生成したＭＡＣと、通信メッセージ内のＭＡＣとが一致するか否かを判定すればよい。
【０１６１】
判定の結果、否（不正）の場合、制御部２３Ｘは、ステップＳＴ２１１に進んで通信メッセージを破棄し、処理を終了する。
【０１６２】
また、判定の結果、一致する場合、制御部２３Ｘは、通信メッセージ内のユーザデータをメモリ２１Ｘに保存する（ＳＴ２１２）。
【０１６３】
しかる後、制御部２３Ｘは、当該保存したユーザデータに基づいて、処理を実行する。
【０１６４】
以下同様に、各通信装置２０Ａ〜２０Ｘの間では、ステップＳＴ２０１〜ＳＴ２１３の処理が実行される。
【０１６５】
上述したように本実施形態によれば、通信装置２０Ｘは、更新した第２カウンタ値の下位１ビットと、この第２カウンタ値に基づいて生成したセッション鍵とを関連付けて記憶する。
【０１６６】
通信装置２０Ｘは、他の通信装置２０Ａが保持する第２カウンタ値の下位１ビットを付与したデータからなるメッセージ本文及びセッション鍵ＤＫに基づいて生成されたＭＡＣ及び当該メッセージ本文からなる通信メッセージを他の通信装置２０Ａから受信する。
【０１６７】
通信装置２０Ｘは、通信メッセージに含まれる第２カウンタ値の下位１ビットに基づいて、メモリ２１Ｘ内のセッション鍵を識別する。
【０１６８】
通信装置２０Ｘは、識別したセッション鍵に基づいて、通信メッセージを検証する。
【０１６９】
これにより、本実施形態によれば、第１〜第３の各実施形態の効果に加え、セッション鍵ＤＫの更新と適用が非同期に行われる際に、更新前後のセッション鍵を識別することができる。
【０１７０】
また、通信メッセージは、更新されたセッション鍵ＤＫに基づき、メッセージ本文にＭＡＣを付与することにより、通信メッセージの再送攻撃に対する耐性を確保することができる。
【０１７１】
以上説明した少なくとも一つの実施形態によれば、セッション更新メッセージが１フレームで済むため、車両に搭載された複数の通信装置間の通信量を抑制することができる。また、セッション更新メッセージがＭＡＣを含むため、不正送信を阻止することができる。
【０１７２】
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１７３】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１７４】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０１７５】
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１７６】
また、記憶媒体は１つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１７７】
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１７８】
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１７９】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８０】
１０…鍵配布センタ装置、１１，２１Ａ〜２１Ｘ…メモリ、１２…鍵配布部、２０Ａ〜２０Ｘ…通信装置、２２Ａ〜２２Ｘ…通信部、２３Ａ〜２３Ｘ…制御部。
【図１】
2016100632.tif 000003
【図２】
2016100632.tif 000004
【図３】
2016100632.tif 000005
【図４】
2016100632.tif 000006
【図５】
2016100632.tif 000007
【図６】
2016100632.tif 000008
【図７】
2016100632.tif 000009
【図８】
2016100632.tif 000010
【図９】
2016100632.tif 000011
【図１０】
2016100632.tif 000012
【図１１】
2016100632.tif 000013
【図１２】
2016100632.tif 000014
【図１３】
2016100632.tif 000015
【図１４】
2016100632.tif 000016