(57)【特許請求の範囲】
【請求項１】
電子機器とネットワークを介して接続される検査装置であって、
予め記憶している前記電子機器のＰＵＦの出力データと前記電子機器で復元させるセッション鍵とから補助データを生成するとともに、前記セッション鍵の正しさを検証するための検証用データを生成する生成部と、
前記補助データと前記検証用データを前記電子機器に送信する送信部と、
前記電子機器がＰＵＦの出力と前記補助データとを用いて復元した前記セッション鍵の正しさを前記検証用データを用いて検証した結果を示す検証結果データを前記電子機器から受信する受信部と、
前記検証結果データに基づいて、前記電子機器のＰＵＦの出力が正常か否かを判定する判定部と、を備える検査装置。
【請求項２】
前記電子機器のＰＵＦの出力が異常であると判定された場合にエラー信号を出力するエラー出力部をさらに備える、請求項１に記載の検査装置。
【請求項３】
前記判定部は、前記ネットワークに接続された複数の前記電子機器のそれぞれに対してＰＵＦの出力が正常か否かを判定し、
前記エラー出力部は、ＰＵＦの出力が異常であると判定された前記電子機器の数が第１閾値以下である場合は第１エラー信号を出力し、ＰＵＦの出力が異常であると判定された前記電子機器の数が前記第１閾値を超える場合は第２エラー信号を出力する、請求項２に記載の検査装置。
【請求項４】
前記第１エラー信号は、ＰＵＦの出力が異常であると判定された前記電子機器に異常が発生していることを示す信号である、請求項３に記載の検査装置。
【請求項５】
前記エラー出力部は、ＰＵＦの出力が異常であると判定された前記電子機器の数が前記第１閾値を超える場合に、ＰＵＦの出力が異常であると判定された前記電子機器の数が前記第１閾値を超えた回数が第２閾値に達するまでは、前記送信部による前記補助データと前記検証用データの送信および前記判定部による判定を繰り返すことを指示し、ＰＵＦの出力が異常であると判定された前記電子機器の数が前記第１閾値を超えた回数が前記第２閾値に達すると前記第２エラー信号を出力する、請求項３または４に記載の検査装置。
【請求項６】
ＰＵＦの出力が異常であると判定された前記電子機器の利用環境に関する情報に基づいて、ＰＵＦの出力が異常となる可能性の高い他の前記電子機器を特定する、請求項１乃至５のいずれか一項に記載の検査装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の検査装置と、
前記検査装置とネットワークを介して接続された前記電子機器と、を備える通信システム。
【請求項８】
請求項７に記載の通信システムを搭載した移動体。
【請求項９】
電子機器とネットワークを介して接続される検査装置により実行される検査方法であって、
予め記憶している前記電子機器のＰＵＦの出力データと前記電子機器で復元させるセッション鍵とから補助データを生成するとともに、前記セッション鍵の正しさを検証するための検証用データを生成するステップと、
前記補助データと前記検証用データを前記電子機器に送信するステップと、
前記電子機器がＰＵＦの出力と前記補助データとを用いて復元した前記セッション鍵の正しさを前記検証用データを用いて検証した結果を示す検証結果データを前記電子機器から受信するステップと、
前記検証結果データに基づいて、前記電子機器のＰＵＦの出力が正常か否かを判定するステップと、を含む検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、検査装置、通信システム、移動体および検査方法に関する。
【背景技術】
【０００２】
例えば、自動車などの移動体には、各種機器を制御するための様々な電子制御装置（ＥＣＵ：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）が搭載されている。これらのＥＣＵは、例えばＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワークに接続され、ネットワークを介して信号を送受信しながら自動車の制御を行っている。
【０００３】
ＥＣＵなどの電子機器が接続されるネットワークでは、誤った制御が行われないようにするために、通信の正当性が保証されることが極めて重要となる。通信の正当性を保証するには、暗号技術の利用が有効である。例えば、通信を行う電子機器同士が共有すべき暗号鍵などのデータを正しく共有していれば、このデータを用いて通信の認証を行ったり、通信内容の秘匿や改竄検知などを行ったりすることができる。
【０００４】
しかし、特に自動車などの移動体に搭載される電子機器は過酷な使用環境に晒されることが多く、電子機器が記憶する暗号鍵などの共有データが破損することも想定される。そして、電子機器が記憶する共有データが破損すると、通信の正当性を保証できなくなる虞がある。このため、電子機器が記憶する共有データを適切に検査できるようにすることが求められる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５７７２６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、電子機器が記憶する共有データまたは共有データの生成に用いるデータを適切に検査することができる検査装置、通信システム、移動体および検査方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態の検査装置は、電子機器とネットワークを介して接続される検査装置であって、生成部と、送信部と、受信部と、判定部と、を備える。生成部は、予め記憶している前記電子機器のＰＵＦの出力データと前記電子機器で復元させるセッション鍵とから補助データを生成するとともに、前記セッション鍵の正しさを検証するための検証用データを生成する。送信部は、前記補助データと前記検証用データを前記電子機器に送信する。受信部は、前記電子機器がＰＵＦの出力と前記補助データとを用いて復元した前記セッション鍵の正しさを前記検証用データを用いて検証した結果を示す検証結果データを前記電子機器から受信する。判定部は、前記検証結果データに基づいて、前記電子機器のＰＵＦの出力が正常か否かを判定する。
【図面の簡単な説明】
【０００８】
【図１】車載ネットワークシステムの概要を示す模式図。
【図２】ＧＷのハードウェア構成例を示すブロック図。
【図３】第１実施形態のＧＷの機能的な構成例を示すブロック図。
【図４】グループ管理情報の一例を示す図。
【図５】第１実施形態のＥＣＵの機能的な構成例を示すブロック図。
【図６】第１実施形態の処理手順の一例を示すフローチャート。
【図７】第２実施形態のＧＷの機能的な構成例を示すブロック図。
【図８】第２実施形態のＥＣＵの機能的な構成例を示すブロック図。
【図９】第２実施形態の処理手順の一例を示すフローチャート。
【図１０】第３実施形態のＧＷの機能的な構成例を示すブロック図。
【図１１】第３実施形態のＥＣＵの機能的な構成例を示すブロック図。
【図１２】第３実施形態の処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
実施形態の検査装置は、例えば、移動体の一例である自動車に搭載される車載ネットワークシステム（通信システム）に適用できる。以下では、車載ネットワークシステムに含まれる車載ゲートウェイ装置（以下、「ＧＷ」と略称する）を実施形態の検査装置として構成した例を説明する。ただし、適用可能な装置やシステムは以下の例に限らない。実施形態の検査装置は、通信の送信側と受信側とで共有する暗号鍵などのデータを用いて通信の正当性を保証することが求められる様々な通信システムにおいて広く適用可能である。
【００１０】
＜第１実施形態＞
図１は、車載ネットワークシステム１の概要を示す模式図である。この車載ネットワークシステム１は、図１に示すように、検査装置として構成されるＧＷ１０と、自動車Ｖに搭載される電子機器である各種のＥＣＵ２０とが、ネットワークを介して接続された構成である。本実施形態のＧＷ１０は、車載ネットワークシステム１内のサブネットワーク間の通信を中継したり、車載ネットワークシステム１と車外のネットワークとの間の通信を中継したりといった本来のゲートウェイとしての機能に加えて、通信するＥＣＵ２０同士が共有している事前共有鍵を検査する機能を有する。なお、車載ネットワークシステム１の通信規格としては、例えば、ＣＡＮやＦｌｅｘＲａｙ（登録商標）など、車載ネットワークの規格として公知のものを利用できる。
【００１１】
複数のＥＣＵ２０が連携して自動車Ｖの制御を実施する場合、これら複数のＥＣＵ２０はネットワークを介した通信を行って制御信号を送受信する。ここでいう制御信号は、自動車Ｖの制御を実施するためにＥＣＵ２０間で送受信される信号の総称である。ＥＣＵ２０間で制御信号を送受信する際には、誤った制御が行われないようにするために、ＥＣＵ２０間の通信の正当性が保証される必要がある。通信の正当性を保証する方法は様々あるが、例えば自動車Ｖの走行中におけるＥＣＵ２０間の通信はリアルタイム性が要求されるため、通信の正当性を保証するための処理に時間をかけることができない。そこで本実施形態では、通信の認証を短時間で行うことができるＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）の認証技術を利用して、ＥＣＵ２０間の通信の正当性を保証するものとする。
【００１２】
ＭＡＣの認証技術は、認証に必要なＭＡＣ値を導出するために、送信側と受信側とで共有する事前共有鍵または事前共有鍵から派生するセッション鍵を利用する。本実施形態では、ＧＷ１０が、通信するＥＣＵ２０のそれぞれに対して、例えばＭＡＣ値の導出に用いるセッション鍵を配布する際に、通信するＥＣＵ２０同士が共有する事前共有鍵の検査を行うものとする。
【００１３】
車載ネットワークシステム１のノードとしてネットワークに接続される各種ＥＣＵ２０は、例えば、ブレーキに関する制御信号を送信または受信するＥＣＵ２０のグループ、車速に関する制御信号を送信または受信するＥＣＵ２０のグループといったように、送受信する制御信号の種類に応じてグループ分けすることができる。ここでいうグループは、送受信する制御信号の種類に応じた概念的な分類であり、ネットワーク上を流れる制御信号は、その制御信号に対応するグループに属するＥＣＵ２０が送信または受信し、そのグループに属さないＥＣＵ２０は送信も受信もしないことを意味する。１つのＥＣＵ２０が複数種類の制御信号を送信または受信する場合は、そのＥＣＵ２０が複数のグループに属することもある。また、複数種類の制御信号を送信または受信する複数のＥＣＵ２０を１つのグループに分類することもある。
【００１４】
本実施形態の車載ネットワークシステム１では、同じグループに属するＥＣＵ２０同士が同じ事前共有鍵を共有する。事前共有鍵は、例えば、車載ネットワークシステム１を搭載する自動車Ｖの組み立て時や出荷時などに、作業者によって各ＥＣＵ２０に設定されてもよいし、ＧＷ１０がネットワークを通じて各ＥＣＵ２０に配布する構成であってもよい。ＧＷ１０は、これらＥＣＵ２０のグループごとに設定される事前共有鍵を管理している。つまり、ＧＷ１０は各ＥＣＵ２０と事前共有鍵を共有している。そして、自動車Ｖが出荷されて実際に運転を開始するタイミング、例えば自動車Ｖのイグニッションキーがオンされたときなどに、ＧＷ１０が、グループごとの事前共有鍵から派生するセッション鍵を各ＥＣＵ２０に配布する。この際、ＧＷ１０は、セッション鍵の配布を通じて各ＥＣＵ２０が記憶する事前共有鍵の検査を行う。そして、事前共有鍵が異常であると判定されたＥＣＵ２０が見つかると、ＧＷ１０はエラー信号を出力して適切な対応を促すようにしている。
【００１５】
本実施形態では、ＧＷ１０が管理するグループごとの事前共有鍵が「第１データ」に相当し、ＧＷ１０が各ＥＣＵ２０に配布するセッション鍵が「第２データ」に相当し、事前共有鍵を用いてセッション鍵を暗号化した暗号化データが「第３データ」に相当する。
【００１６】
図２は、ＧＷ１０のハードウェア構成例を示すブロック図である。ＧＷ１０は、例えば図２に示すように、ネットワークＩ／Ｆ１１と、マイクロコントローラ１２と、を備える。ネットワークＩ／Ｆ１１は、ＧＷ１０をネットワークに接続するインタフェースである。マイクロコントローラ１２は、コンピュータシステムを集積回路として組み込んだものであり、コンピュータシステム上で動作するプログラム（ソフトウェア）に従って様々な制御を実行する。ＧＷ１０は、マイクロコントローラ１２がネットワークＩ／Ｆ１１を利用しながらプログラムに応じた制御を実行することにより、事前共有鍵の検査に関わる各種の機能を実現する。
【００１７】
図３は、本実施形態のＧＷ１０の機能的な構成例を示すブロック図である。本実施形態のＧＷ１０は、事前共有鍵の検査に関わる機能的な構成要素として、例えば図３に示すように、記憶部１１０と、送受信部１２０と、生成部１３０と、判定部１４０と、エラー出力部１５０と、を備える。
【００１８】
記憶部１１０は、グループ管理情報を記憶する。グループ管理情報は、上述したＥＣＵ２０のグループごとに設定される事前共有鍵を管理するための情報である。図４は、記憶部１１０が記憶するグループ管理情報の一例を示す図である。この図４のグループ管理情報３０は、グループに割り当てられたグループＩＤに対応付けて、そのグループに属するＥＣＵ２０それぞれに割り当てられた機器ＩＤの集合と、そのグループに対して設定された事前共有鍵とを格納している。事前共有鍵を更新する場合は、新たな事前共有鍵がグループに属するＥＣＵ２０に配布されるとともに、グループ管理情報３０の事前共有鍵が新たな事前共有鍵に書き換えられる。
【００１９】
送受信部１２０は、ＧＷ１０がネットワークを介してＥＣＵ２０と通信するモジュールであり、サブモジュールとして、セッション鍵送信部１２１と、検証結果受信部１２２と、を含む。
【００２０】
セッション鍵送信部１２１は、後述の生成部１３０が生成した暗号化データ（セッション鍵を事前共有鍵で暗号化したデータ）と、ＥＣＵ２０が事前共有鍵を用いて暗号化データを復号することによって復元したセッション鍵の正しさを検証するための検証用データとを、グループ単位で各ＥＣＵ２０に送信する。例えば、セッション鍵送信部１２１は、暗号化データおよび検証用データに対してグループＩＤを付加してネットワーク上にブロードキャストする処理を、グループ数分繰り返す。ネットワークに接続されている各ＥＣＵ２０は、ＧＷ１０のセッション鍵送信部１２１により送信される暗号化データおよび検証用データに付加されたグループＩＤが、自身が属するグループに対応したものである場合に、その暗号化データおよび検証用データを受信する。
【００２１】
なお、セッション鍵送信部１２１が暗号化データおよび検証用データに対して付加するデータは、ＥＣＵ２０がネットワーク上にブロードキャストされた暗号化データおよび検証用データを受信すべきか否かを判断できるデータであればよく、グループＩＤに限らない。例えば、グループＩＤの代わりにグループに属するＥＣＵ２０間で送受信される上述の制御信号を付加してもよいし、グループに属するＥＣＵ２０の機器ＩＤの集合を付加してもよい。また、暗号化データと検証用データは必ずしも同時に送信する必要はなく、暗号化データと検証用データとを異なるタイミングで送信してもよい。
【００２２】
検証結果受信部１２２は、ＥＣＵ２０が検証用データを用いてセッション鍵の正しさを検証した結果を示す検証結果データを各ＥＣＵ２０から受信する。検証結果データは、復元したセッション鍵が正しかったことを示す検証成功と、復元したセッション鍵が正しくなかったことを示す検証失敗との２値をとる。
【００２３】
生成部１３０は、ＧＷ１０がＥＣＵ２０に配布するセッション鍵を生成する。また、生成部１３０は、生成したセッション鍵を、そのセッション鍵を配布するＥＣＵ２０のグループ（以下、「対象グループ」という）に対して設定された事前共有鍵を用いて暗号化し、暗号化データを生成する。また、生成部１３０は、ＥＣＵ２０が事前共有鍵を用いて暗号化データを復号することによって復元したセッション鍵の正しさを検証するための検証用データを生成する。これら生成部１３０が生成した暗号化データおよび検証用データが、セッション鍵送信部１２１から各ＥＣＵ２０に送信される。
【００２４】
検証用データとしては、セッション鍵のハッシュ値や、ＧＷ１０とＥＣＵ２０の双方が記憶する所定の値をセッション鍵により暗号化した値などを用いることができる。検証用データとしてセッション鍵のハッシュ値を用いる場合、ＥＣＵ２０は、自身が記憶する事前共有鍵を用いて暗号化データを復号することで復元したセッション鍵のハッシュ値を算出し、この算出したハッシュ値がＧＷ１０から送信されたハッシュ値と一致するか否かを判定することで、復元したセッション鍵が正しいかどうかを検証することができる。また、検証用データとして所定の値をセッション鍵により暗号化した値を用いる場合、ＥＣＵ２０は、自身が記憶する事前共有鍵を用いて暗号化データを復号することで復元したセッション鍵を用いて所定の値を暗号化し、得られた値がＧＷ１０から送信された値と一致するか否かを判定することで、復元したセッション鍵が正しいかどうかを検証することができる。
【００２５】
判定部１４０は、検証結果受信部１２２がＥＣＵ２０から受信した検証結果データに基づいて、ＥＣＵ２０が記憶している事前共有鍵が正常か否かを判定する。すなわち、判定部１４０は、検証結果受信部１２２がＥＣＵ２０から受信した検証結果データが検証成功である場合、このＥＣＵ２０が記憶している事前共有鍵は正常であると判定する。一方、判定部１４０は、検証結果受信部１２２がＥＣＵ２０から受信した検証結果データが検証失敗である場合、このＥＣＵ２０が記憶している事前共有鍵は異常であると判定する。
【００２６】
検証結果受信部１２２がＥＣＵ２０から受信した検証結果データは、上述したように、ＥＣＵ２０が自身の記憶する事前共有鍵を用いて暗号化データを復号することにより復元したセッション鍵が正しいかどうかの検証結果を示している。ここで、ＥＣＵ２０が記憶する事前共有鍵が正常であれば、この事前共有鍵を用いてセッション鍵を正しく復元できるため、検証結果データは検証成功となる。一方、ＥＣＵ２０が記憶する事前共有鍵に異常があれば、この事前共有鍵を用いてセッション鍵の復元を試みても、セッション鍵を正しく復元できないため、検証結果データは検証失敗となる。したがって、検証結果データが検証成功か検証失敗かにより、ＥＣＵ２０が記憶する事前共有鍵が正常か否かを判定することができる。本実施形態では、このように、ＥＣＵ２０から受信した検証結果データが検証成功か検証失敗か、つまり、ＥＣＵ２０に配布するセッション鍵が正しくＥＣＵ２０で復元できたか否かに応じて、ＥＣＵ２０が記憶する事前共有鍵が正常か否かを判定するようにしている。
【００２７】
また、判定部１４０は、車載ネットワークシステム１のノードとして接続されたＥＣＵ２０のそれぞれに対して以上のような事前共有鍵の検査を行った結果、事前共有鍵が異常であると判定されたＥＣＵ２０の数が所定の第１閾値以下であるか否かを判定することが望ましい。この第１閾値は、事前共有鍵の異常が少数のＥＣＵ２０で限定的に生じているか、広範囲に及んでいるかを分別するための閾値である。事前共有鍵の異常が少数のＥＣＵ２０で限定的に生じている場合は、ＥＣＵ２０側に異常が発生していると判断できるが、広範囲に及んでいる場合は、ＧＷ１０側の異常、あるいは、ネットワークの一時的な障害によりＥＣＵ２０側でセッション鍵を正しく復元できないことも想定される。事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値以下であるか否かを判定部１４０が判定することにより、ＥＣＵ２０側に異常が発生したか否かを正しく判断することができる。
【００２８】
この場合、判定部１４０は、事前共有鍵が異常であると判定されたＥＣＵ２０の数を、例えば記憶部１１０などに一時的に記憶される異常カウンタを用いてカウントする。すなわち、判定部１４０は、ＥＣＵ２０に対する事前共有鍵の検査を開始する際に、まず、記憶部１１０が保持する異常カウンタを０にセットし、検証結果受信部１２２が検証失敗の検証結果データを受信するたびに、異常カウンタをインクリメント（＋１）する。そして、判定部１４０は、例えば、検証結果受信部１２２がすべてのＥＣＵ２０から検証結果データを受信した後、記憶部１１０が保持する異常カウンタの値を参照し、このカウンタ値を第１閾値と比較することにより、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値以下であるか否かを判定することができる。
【００２９】
エラー出力部１５０は、ＥＣＵ２０が記憶している事前共有鍵が異常であると判定部１４０により判定された場合に、エラー信号を出力する。エラー出力部１５０は、例えば、自動車Ｖに設けられたディスプレイパネルなどにエラー信号を出力することができる。この場合、ディスプレイパネルは、エラー出力部１５０から入力したエラー信号に基づいて、例えば、自動車ＶのいずれかのＥＣＵ２０が正常に通信できない状態にあることを示すエラーメッセージなどを表示する。これにより、自動車Ｖのドライバなどに異常を知らせ、適切な対応を促すことができる。また、異常が生じたＥＣＵ２０の機器ＩＤや、このＥＣＵ２０が属するグループのグループＩＤなど、異常が生じたＥＣＵ２０を特定するための情報をエラー信号に付加し、自動車ＶのどのＥＣＵ２０において異常が発生したか、どのグループのＥＣＵ２０に異常が発生したかといった情報をディスプレイパネルに併せて表示させるように構成してもよい。
【００３０】
また、エラー出力部１５０は、自動車Ｖに設けられた警告インジケータなどにエラー信号を出力してもよい。この場合、警告インジケータは、エラー出力部１５０から入力したエラー信号に基づいて、光源を点灯あるいは点滅させる。これにより、自動車Ｖのドライバなどに異常を知らせて、適切な対応を促すことができる。
【００３１】
また、エラー出力部１５０は、ＧＷ１０の外部入出力端子や車載ネットワークシステム１を介してＧＷ１０に接続されたメンテナンスツールにエラー信号を出力する構成としてもよい。すなわち、自動車Ｖのメンテナンス時などに、メンテナンス作業員が使用するメンテナンスツールがＧＷ１０に接続された状態でＧＷ１０によるセッション鍵の配布が実施される場合、エラー出力部１５０は、上記のエラー信号をメンテナンスツールに出力する。この場合、メンテナンスツールは、エラー出力部１５０から入力したエラー信号に基づいて、例えば、自動車ＶのいずれかのＥＣＵ２０が正常に通信できない状態にあることを示すエラーメッセージや、自動車ＶのどのＥＣＵ２０において異常が発生したか、どのグループのＥＣＵ２０に異常が発生したかといった情報などを表示する。これにより、自動車Ｖのメンテナンスを行うメンテナンス作業員にＥＣＵ２０の異常を知らせ、適切な対応を促すことができる。
【００３２】
事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値以下であるか否かを判定部１４０が判定する構成とした場合、エラー出力部１５０は、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値以下であれば第１エラー信号を出力し、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超える場合は第２エラー信号を出力する。ここで、第１エラー信号は、ＥＣＵ２０側に異常があることを示すエラー信号であり、第２エラー信号は、ＥＣＵ２０以外、例えばＧＷ１０やネットワークに異常があることを示すエラー信号である。
【００３３】
このとき、エラー出力部１５０は、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えると判定部１４０により判定された場合に、すぐに第２エラー信号を出力するのではなく、各ＥＣＵ２０に対する上述した事前共有鍵の検査を再試行（リトライ）することを送受信部１２０、生成部１３０および判定部１４０に指示することが望ましい。そして、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えた回数が所定の第２閾値に達するまではリトライを繰り返し、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えた回数が第２閾値に達したときに、第２エラー信号を出力することが望ましい。ここでの第２閾値は、ネットワークの一時的な障害による検査不良の影響を排除するためのものである。つまり、リトライを行っても、事前共有鍵が異常であると判定されたＥＣＵ２０の数が繰り返し第１閾値を超える場合は、ネットワークの一時的な障害に起因したものではないと判断できる。
【００３４】
この場合、エラー出力部１５０は、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えた回数を、例えば記憶部１１０などに一時的に記憶される回数カウンタを用いてカウントする。すなわち、エラー出力部１５０は、ＥＣＵ２０に対する事前共有鍵の検査を開始する際に、まず、記憶部１１０が保持する回数カウンタを０にセットする。そして、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えたと判定されるたびに、回数カウンタをインクリメント（＋１）し、インクリメントした回数カウンタの値を第２閾値と比較することにより、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えた回数が第２閾値に達したか否かを判定することができる。
【００３５】
次に、本実施形態のＥＣＵ２０の概要を説明する。図５は、本実施形態のＥＣＵ２０の機能的な構成例を示すブロック図である。本実施形態のＥＣＵ２０は、事前共有鍵の検査に関わる機能的な構成要素として、例えば図５に示すように、送受信部２１０と、検証部２２０と、記憶部２３０と、を備える。
【００３６】
送受信部２１０は、ＥＣＵ２０がネットワークを介してＧＷ１０と通信するモジュールであり、サブモジュールとして、セッション鍵受信部２１１と、検証結果送信部２１２と、を含む。
【００３７】
セッション鍵受信部２１１は、ＧＷ１０のセッション鍵送信部１２１が送信した暗号化データおよび検証用データに付加されたグループＩＤが、当該ＥＣＵ２０が属するグループに対応したものである場合に、その暗号化データおよび検証用データを受信する。なお、暗号化データおよび検証用データに制御信号が付加されている場合は、セッション鍵受信部２１１は、その制御信号が、当該ＥＣＵ２０が他のＥＣＵ２０との間で送受信する制御信号であれば、暗号化データおよび検証用データを受信する。また、暗号化データおよび検証用データに機器ＩＤの集合が付加されている場合は、セッション鍵受信部２１１は、その機器ＩＤの集合に、当該ＥＣＵ２０に割り当てられた機器ＩＤが含まれていれば、暗号化データおよび検証用データを受信する。
【００３８】
検証結果送信部２１２は、検証部２２０による検証結果を示す検証結果データ、つまり、復元したセッション鍵が正しかったことを示す検証成功、あるいは、復元したセッション鍵が正しくなかったことを示す検証失敗をＧＷ１０に送信する。
【００３９】
検証部２２０は、セッション鍵受信部２１１が受信した暗号化データを、記憶部２３０が記憶する事前共有鍵を用いて復号し、ＧＷ１０が配信するセッション鍵を復元する。そして、検証部２２０は、セッション鍵受信部２１１が受信した検証用データを用いて、復元したセッション鍵が正しいかどうかを検証し、復元したセッション鍵が正しい場合、復元したセッション鍵を記憶部２３０に格納する。また、検証部２２０は、セッション鍵の正しさを検証した結果を送受信部２１０に通知する。これにより、検証部２２０による検証結果を示す検証結果データが、検証結果送信部２１２からＧＷ１０に送信される。
【００４０】
記憶部２３０は、ＧＷ１０から配布された事前共有鍵やセッション鍵などを記憶する。事前共有鍵やセッション鍵の更新時には、この記憶部２３０が記憶する事前共有鍵やセッション鍵が、ＧＷ１０から新たに配布された事前共有鍵やセッション鍵に書き換えられる。
【００４１】
次に、図６を参照しながら、本実施形態における事前共有鍵の検査に関わるＧＷ１０およびＥＣＵ２０の動作例について説明する。図６は、本実施形態の処理手順の一例を示すフローチャートである。この図６のフローチャートで示す一連の処理手順は、例えば、自動車Ｖのイグニッションスイッチがオンされたタイミング、あるいは、自動車Ｖのイグニッションスイッチがオフされたタイミング、あるいは、ＧＷ１０の外部入出力端子や車載ネットワークシステム１を介してＧＷ１０にメンテナンスツールが接続されたタイミングなど、予め定めた所定のタイミングで実施される。
【００４２】
処理が開始されると、まず、ＧＷ１０のエラー出力部１５０が回数カウンタを０に設定するとともに（ステップＳ１０１）、ＧＷ１０の判定部１４０が異常カウンタを０に設定する（ステップＳ１０２）。
【００４３】
次に、ＧＷ１０の生成部１３０が、対象グループを選択する（ステップＳ１０３）。そして、生成部１３０は、選択した対象グループに属するＥＣＵ２０に配布するセッション鍵を生成するとともに、対象グループに対応する事前共有鍵を用いてセッション鍵を暗号化し、暗号化データを生成する（ステップＳ１０４）。さらに、生成部１３０は、生成したセッション鍵に基づいて、ＥＣＵ２０が復元したセッション鍵の正しさを検証するための検証用データを生成する（ステップＳ１０５）。そして、ＧＷ１０のセッション鍵送信部１２１が、生成部１３０により生成された暗号化データおよび検証用データにグループＩＤを付加してネットワーク上に送信する（ステップＳ１０６）。
【００４４】
ＧＷ１０のセッション鍵送信部１２１が送信した暗号化データおよび検証用データは、対象グループに属するＥＣＵ２０のセッション鍵受信部２１１によって受信される（ステップＳ２０１）。そして、暗号化データおよび検証用データを受信したＥＣＵ２０の検証部２２０は、記憶部２３０が記憶する事前共有鍵を用いて、セッション鍵受信部２１１が受信した暗号化データを復号し、ＧＷ１０から配布されたセッション鍵を復元する（ステップＳ２０２）。さらに、検証部２２０は、セッション鍵受信部２１１が受信した検証用データを用いて、復元したセッション鍵が正しいかどうかを検証する（ステップＳ２０３）。そして、ＥＣＵ２０の検証結果送信部２１２が、検証部２２０による検証結果を示す検証結果データをＧＷ１０に送信する（ステップＳ２０４）。
【００４５】
ＥＣＵ２０の検証結果送信部２１２が送信した検証結果データは、ＧＷ１０の検証結果受信部１２２によって受信される（ステップＳ１０７）。そして、検証結果受信部１２２により検証結果データが受信されると、ＧＷ１０の判定部１４０は、検証結果データにより示される検証結果が検証失敗か否かを判定し（ステップＳ１０８）、検証結果が検証失敗であれば（ステップＳ１０８：Ｙｅｓ）、異常カウンタをインクリメントする（ステップＳ１０９）。なお、検証結果が検証成功であれば（ステップＳ１０８：Ｎｏ）、異常カウンタの値はそのまま維持される。
【００４６】
次に、判定部１４０は、全てのグループが対象グループとして選択されたか否かを判定する（ステップＳ１１０）。ここで、対象グループとして選択されていないグループがあれば（ステップＳ１１０：Ｎｏ）、ステップＳ１０３に戻って以降の処理が繰り返される。一方、全てのグループが対象グループとして選択された場合は（ステップＳ１１０：Ｙｅｓ）、判定部１４０は、異常カウンタの値が０となっているかどうかを確認する（ステップＳ１１１）。ここで、異常カウンタの値が０となっている場合は（ステップＳ１１１：Ｙｅｓ）、事前共有鍵に異常が生じたＥＣＵ２０がないため、処理を終了する。
【００４７】
一方、異常カウンタの値が０でない場合は（ステップＳ１１１：Ｎｏ）、判定部１４０は、異常カウンタの値が第１閾値以下であるか否かを判定する（ステップＳ１１２）。ここで、異常カウンタの値が第１閾値以下であれば（ステップＳ１１２：Ｙｅｓ）、エラー出力部１５０が、ＥＣＵ２０側に異常があることを示す第１エラー信号を出力して（ステップＳ１１３）、処理を終了する。
【００４８】
一方、異常カウンタの値が第１閾値を超える場合は（ステップＳ１１２：Ｎｏ）、エラー出力部１５０は、回数カウンタをインクリメントして（ステップＳ１１４）、回数カウンタの値が第２閾値に達したか否かを判定する（ステップＳ１１５）。ここで、回数カウンタの値が第２閾値に達していなければ（ステップＳ１１５：Ｎｏ）、エラー出力部１５０によりリトライが指示され、ステップＳ１０２に戻って以降の処理が繰り返される。一方、回数カウンタの値が第２閾値に達すると（ステップＳ１１５：Ｙｅｓ）、エラー出力部１５０は、ＧＷ１０やネットワークに異常があることを示す第２エラー信号を出力して（ステップＳ１１６）、処理を終了する。
【００４９】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の車載ネットワークシステム１では、ＧＷ１０が、事前共有鍵を用いてセッション鍵を暗号化した暗号化データと、ＥＣＵ２０が事前共有鍵を用いて暗号化データを復号することで復元したセッション鍵が正しいかどうかを検証するための検証用データとをＥＣＵ２０に送信する。そして、ＧＷ１０は、ＥＣＵ２０が検証用データを用いてセッション鍵の正しさを検証した結果を示す検証結果データを受信し、この検証結果データに基づいて、ＥＣＵ２０が記憶する事前共有鍵が正常か否かを判定し、事前共有鍵が異常であると判定した場合に、エラー信号を出力するようにしている。このように、本実施形態によれば、ＥＣＵ２０が記憶する事前共有鍵を適切に検査することができる。そして、ＥＣＵ２０が記憶する事前共有鍵が異常であれば、エラー信号を出力することで、例えば自動車Ｖのドライバやメンテナンス作業員などに適切な対応を促すことができる。
【００５０】
また、本実施形態によれば、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値以下であれば、ＥＣＵ２０側に異常があることを示す第１エラー信号を出力し、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超えていれば、ＧＷ１０やネットワークに異常があることを示す第２エラー信号を出力するように、ＧＷ１０を構成することにより、ＧＷ１０やネットワークの異常をＥＣＵ２０の異常として報知することを防止できる。
【００５１】
また、本実施形態によれば、事前共有鍵が異常であると判定されたＥＣＵ２０の数が第１閾値を超える回数が第２閾値に達したときに第２エラー信号を出力するように、ＧＷ１０を構成することにより、ネットワークの一時的な障害、つまり時間経過により復旧する障害により正しい検査が行えなかった場合に、ＧＷ１０やネットワークの異常を報知することを防止できる。
【００５２】
＜変形例＞
以上説明した第１実施形態では、ＧＷ１０が、ＥＣＵ２０から受信した検証用データが検証失敗である場合に、このＥＣＵ２０が記憶する事前共有鍵が異常であると判定しているが、事前共有鍵が異常であると判定されたＥＣＵ２０の利用環境に関する情報に基づいて、事前共有鍵が異常となる可能性の高い他のＥＣＵ２０を特定するように構成してもよい。この場合、各ＥＣＵ２０の利用環境に関する情報を、例えばＧＷ１０の記憶部１１０などに記憶しておく。そして、ＧＷ１０は、事前共有鍵が異常であると判定されたＥＣＵ２０の利用環境に関する情報に基づいて、同様の利用環境で使用されている他のＥＣＵ２０を、事前共有鍵が異常となる可能性の高いＥＣＵ２０として特定する。
【００５３】
具体的には、例えば、ＥＣＵ２０の利用環境に関する情報としてＥＣＵ２０が配置される位置情報（自動車Ｖ内における位置）を記憶する場合、ＧＷ１０は、事前共有鍵が異常であると判定されたＥＣＵ２０の近くに配置される他のＥＣＵ２０（自動車Ｖ内の同一のエリアに配置される他のＥＣＵ２０や、距離が所定値以下となる他のＥＣＵ２０）を、事前共有鍵が異常となる可能性の高いＥＣＵ２０として特定する。また、ＥＣＵ２０の利用環境に関する情報としてＥＣＵ２０の使用条件に関する情報を記憶する場合、ＧＷ１０は、事前共有鍵が異常であると判定されたＥＣＵ２０と使用条件が類似する他のＥＣＵ２０を、事前共有鍵が異常となる可能性の高いＥＣＵ２０として特定する。これにより、当該ＥＣＵ２０における事前共有鍵の異常を未然に検知して、事前共有鍵を更新やＥＣＵ２０の修理あるいは交換などを行うことができる。
【００５４】
また、図６に示した本実施形態の処理手順の例では、ステップＳ１１０で全てのグループが対象グループとして選択されたと判定された後に、異常カウンタの値や回数カウンタの値に応じた処理（ステップＳ１１１〜ステップＳ１１６）を行うようにしているが、これらの処理をグループ単位で行うようにしてもよい。すなわち、ＧＷ１０は、ステップＳ１０８：ＮｏあるいはステップＳ１０９の後にステップＳ１１１以降の処理を実行する。そして、ＧＷ１０は、ステップＳ１１１：Ｙｅｓ、またはステップＳ１１３の後、またはステップＳ１１６の後に、全てのグループが対象グループとして選択されたか否かを判定し、全てのグループが対象グループとして選択されていれば処理を終了し、そうでなければステップＳ１０３に戻って以降の処理を繰り返す。これにより、ＧＷ１０やネットワークに異常がある場合に、全てのグループに対する検査を行わずとも、これらの異常を報知できる。
【００５５】
また、上述の第１実施形態では、ＥＣＵ２０の事前共有鍵が異常であると判定した場合にエラー信号を出力するようにしているが、事前共有鍵が異常であると判定されたＥＣＵ２０が属するグループの事前共有鍵を更新する構成としてもよい。また、事前共有鍵が異常となる可能性の高いＥＣＵ２０を特定した場合に、そのＥＣＵ２０が属するグループの事前共有鍵を併せて更新するようにしてもよい。
【００５６】
事前共有鍵の更新に際して、ＧＷ１０が各ＥＣＵ２０に事前共有鍵を安全に配布するために、例えば、ＧＷ１０がＥＣＵ２０に対して過去に配布し、ＥＣＵ２０が正しく復元して記憶しているセッション鍵を利用することができる。つまり、上述の第１実施形態では、所定のタイミングで繰り返されるセッション鍵の配布を通じて事前共有鍵を検査するようにしているため、事前共有鍵の検査時にはそれまでのセッション鍵をＧＷ１０とＥＣＵ２０とが共有している。つまり、ＥＣＵ２０は過去に正しく復元したセッション鍵を記憶している。ＧＷ１０は、新たに生成した事前共有鍵を、このような過去のセッション鍵を用いて暗号化し、これにより得られた暗号化データ（第４データ）をＥＣＵ２０に送信する。ＥＣＵ２０は、ＧＷ１０から受信した暗号化データを、過去のセッション鍵を用いて復号することで、ＧＷ１０によって新たに生成された事前共有鍵を復元する。そして、異常と判定されたそれまでの事前共有鍵を、この新たな事前共有鍵により更新する。
【００５７】
また、上述の第１実施形態では、ＧＷ１０が、ＥＣＵ２０に送信する暗号化データおよび検証用データにグループＩＤを付加してネットワーク上にブロードキャストしているが、ＥＣＵ２０に対する暗号化データおよび検証用データの送信を、このようなグループごとに行うのではなく、ＥＣＵ２０ごとに個別に行う構成としてもよい。
【００５８】
また、上述の第１実施形態では、ＧＷ１０が、ＥＣＵ２０に対してセッション鍵を配布する際に、ＥＣＵ２０が記憶する事前共有鍵を検査するようにしているが、これに限らない。例えば、ＧＷ１０は、ＥＣＵ２０が記憶する事前共有鍵が正常か否かを判定するために任意のデータをランダムあるいは所定の規則に従って選択し、事前共有鍵を用いてこのデータを暗号化した暗号化データと、このデータに基づいて生成した検証用データとをＥＣＵ２０に送信するようにしてもよい。この場合、ＥＣＵ２０は、自身が記憶する事前共有鍵を用いてＧＷ１０から受信した暗号化データを復号することにより、ＧＷ１０が選択した任意のデータを復元し、ＧＷ１０から受信した検証用データを用いて、復元した任意のデータが正しいかどうかを検証する。この場合も、ＥＣＵ２０において任意のデータが正しく復元できたか否かにより、ＥＣＵ２０が記憶する事前共有鍵が正常か否かを判定することができる。
【００５９】
また、上述の第１実施形態では、ＥＣＵ２０が記憶する事前共有鍵を検査の対象としているが、これに限らない。上述した手法は、ＥＣＵ２０が記憶するＧＷ１０との共有データを検査する手法として、広く適用することができる。
【００６０】
＜第２実施形態＞
次に、第２実施形態について説明する。第２実施形態は、ＥＣＵ２０が復元したセッション鍵が正しいか否かをＧＷ１０側で検証する点が上述の第１実施形態と異なる。つまり、第１実施形態ではＧＷ１０が生成した検証用データに基づいてＥＣＵ２０側で検証を行っていたが、本実施形態では、ＥＣＵ２０が生成した検証用データに基づいて、ＥＣＵ２０が復元したセッション鍵が正しいか否かをＧＷ１０側で検証する。以下では、第１実施形態と共通する構成については同一の符号を付して重複した説明を適宜省略し、本実施形態に特徴的な部分についてのみ説明する。なお、以下では本実施形態のＧＷ１０を第１実施形態と区別してＧＷ１０Ａと表記し、本実施形態のＥＣＵ２０を第１実施形態と区別してＥＣＵ２０Ａと表記する。
【００６１】
図７は、本実施形態のＧＷ１０Ａの機能的な構成例を示すブロック図である。本実施形態のＧＷ１０Ａは、事前共有鍵の検査に関わる機能的な構成要素として、例えば図７に示すように、記憶部１１０と、送受信部１２０Ａと、生成部１３０Ａと、検証部１６０と、判定部１４０Ａと、エラー出力部１５０と、を備える。このうち、記憶部１１０およびエラー出力部１５０は第１実施形態と共通のため、説明を省略する。
【００６２】
送受信部１２０Ａは、ＧＷ１０Ａがネットワークを介してＥＣＵ２０Ａと通信するモジュールであり、サブモジュールとして、セッション鍵送信部１２１Ａと、検証用データ受信部１２３と、を含む。
【００６３】
セッション鍵送信部１２１Ａは、第１実施形態のＧＷ１０におけるセッション鍵送信部１２１と同様に、ＥＣＵ２０Ａに配布するセッション鍵を事前共有鍵で暗号化した暗号化データを送信するが、検証用データの送信は行わない。
【００６４】
検証用データ受信部１２３は、ＥＣＵ２０Ａにおいて生成された検証用データを、ＥＣＵ２０Ａから受信する。
【００６５】
生成部１３０Ａは、第１実施形態のＧＷ１０における生成部１３０と同様に、ＧＷ１０ＡがＥＣＵ２０Ａに配布するセッション鍵を生成するとともに、ＥＣＵ２０Ａと共有する事前共有鍵を用いてセッション鍵を暗号化することで暗号化データを生成する。ただし、本実施形態の生成部１３０Ａは、ＥＣＵ２０Ａで復元されたセッション鍵が正しいかどうかを検証するための検証用データの生成は行わない。生成部１３０が生成した暗号化データは、セッション鍵送信部１２１ＡからＥＣＵ２０Ａに送信される。
【００６６】
検証部１６０は、検証用データ受信部１２３がＥＣＵ２０Ａから受信した検証用データを用いて、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証する。ここで、検証用データ受信部１２３がＥＣＵ２０Ａから受信した検証用データは、例えば、ＥＣＵ２０Ａが復元したセッション鍵のハッシュ値や、ＧＷ１０ＡとＥＣＵ２０Ａの双方が記憶する所定の値をＥＣＵ２０Ａが復元したセッション鍵により暗号化した値などである。ＥＣＵ２０Ａが復元したセッション鍵のハッシュ値を検証用データとして用いる場合、検証部１６０は、生成部１３０Ａが生成したセッション鍵のハッシュ値を算出し、この算出したハッシュ値が、検証用データ受信部１２３がＥＣＵ２０Ａから受信した検証用データと一致するか否かを判定することで、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証することができる。また、ＥＣＵ２０Ａが復元したセッション鍵により所定の値を暗号化した値を検証用データとして用いる場合、検証部１６０は、生成部１３０Ａが生成したセッション鍵を用いて所定の値を暗号化し、得られた値が、検証用データ受信部１２３がＥＣＵ２０Ａから受信した検証用データと一致するか否かを判定することで、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証することができる。
【００６７】
判定部１４０Ａは、検証部１６０による検証結果に基づいて、ＥＣＵ２０Ａが記憶している事前共有鍵が正常か否かを判定する。すなわち、判定部１４０Ａは、検証部１６０による検証結果が検証成功である場合、つまり、ＥＣＵ２０Ａが復元したセッション鍵が正しい場合、このＥＣＵ２０Ａが記憶している事前共有鍵は正常であると判定する。一方、判定部１４０Ａは、検証部１６０による検証結果が検証失敗である場合、つまり、ＥＣＵ２０Ａが復元したセッション鍵が正しくない場合、このＥＣＵ２０Ａが記憶している事前共有鍵は異常であると判定する。なお、本実施形態の判定部１４０Ａは、検証部１６０による検証結果に基づいてＥＣＵ２０Ａが記憶している事前共有鍵が正常か否かを判定する以外は、上述した第１実施形態の判定部１４０と同様である。
【００６８】
次に、本実施形態のＥＣＵ２０Ａの概要を説明する。図８は、本実施形態のＥＣＵ２０Ａの機能的な構成例を示すブロック図である。本実施形態のＥＣＵ２０Ａは、事前共有鍵の検査に関わる機能的な構成要素として、例えば図８に示すように、送受信部２１０Ａと、記憶部２３０と、検証用データ生成部２４０と、を備える。このうち、記憶部２３０は第１実施形態と共通のため、説明を省略する。
【００６９】
送受信部２１０Ａは、ＥＣＵ２０Ａがネットワークを介してＧＷ１０Ａと通信するモジュールであり、サブモジュールとして、セッション鍵受信部２１１Ａと、検証用データ送信部２１３と、を含む。
【００７０】
セッション鍵受信部２１１Ａは、第１実施形態のＥＣＵ２０におけるセッション鍵受信部２１１と同様に、ＧＷ１０Ａが送信した暗号化データを受信するが、検証用データはＧＷ１０Ａから送信されていないため受信しない。
【００７１】
検証用データ送信部２１３は、検証用データ生成部２４０が生成した検証用データをＧＷ１０Ａに送信する。
【００７２】
検証用データ生成部２４０は、セッション鍵受信部２１１Ａが受信した暗号化データを、記憶部２３０が記憶する事前共有鍵を用いて復号し、ＧＷ１０Ａが配信するセッション鍵を復元する。そして、検証用データ生成部２４０は、復元したセッション鍵のハッシュ値、あるいは、復元したセッション鍵により所定の値を暗号化した値を、復元したセッション鍵が正しいかどうかを検証するための検証用データとして生成する。検証用データ生成部２４０が生成した検証用データは、検証用データ送信部２１３からＧＷ１０Ａに送信される。
【００７３】
次に、図９を参照しながら、本実施形態における事前共有鍵の検査に関わるＧＷ１０ＡおよびＥＣＵ２０Ａの動作例について説明する。図９は、本実施形態の処理手順の一例を示すフローチャートである。この図９のフローチャートで示す一連の処理手順は、例えば、自動車Ｖのイグニッションスイッチがオンされたタイミング、あるいは、自動車Ｖのイグニッションスイッチがオフされたタイミング、あるいは、ＧＷ１０Ａの外部入出力端子や車載ネットワークシステム１を介してＧＷ１０Ａにメンテナンスツールが接続されたタイミングなど、予め定めた所定のタイミングで実施される。
【００７４】
処理が開始されると、まず、ＧＷ１０Ａのエラー出力部１５０が回数カウンタを０に設定するとともに（ステップＳ３０１）、ＧＷ１０Ａの判定部１４０Ａが異常カウンタを０に設定する（ステップＳ３０２）。
【００７５】
次に、ＧＷ１０Ａの生成部１３０Ａが、対象グループを選択する（ステップＳ３０３）。そして、生成部１３０Ａは、選択した対象グループに属するＥＣＵ２０Ａに配布するセッション鍵を生成するとともに、対象グループに対応する事前共有鍵を用いてセッション鍵を暗号化し、暗号化データを生成する（ステップＳ３０４）。そして、ＧＷ１０Ａのセッション鍵送信部１２１Ａが、生成部１３０Ａにより生成された暗号化データにグループＩＤを付加してネットワーク上に送信する（ステップＳ３０５）。
【００７６】
ＧＷ１０Ａのセッション鍵送信部１２１Ａが送信した暗号化データは、対象グループに属するＥＣＵ２０Ａのセッション鍵受信部２１１Ａによって受信される（ステップＳ４０１）。そして、暗号化データを受信したＥＣＵ２０Ａの検証用データ生成部２４０は、記憶部２３０が記憶する事前共有鍵を用いて、セッション鍵受信部２１１Ａが受信した暗号化データを復号し、ＧＷ１０Ａから配布されたセッション鍵を復元する（ステップＳ４０２）。さらに、検証用データ生成部２４０は、復元したセッション鍵に基づいて、このセッション鍵が正しいかどうかを検証するための検証用データを生成する（ステップＳ４０３）。そして、ＥＣＵ２０Ａの検証用データ送信部２１３が、検証用データ生成部２４０により生成された検証用データをＧＷ１０Ａに送信する（ステップＳ４０４）。
【００７７】
ＥＣＵ２０Ａの検証用データ送信部２１３が送信した検証用データは、ＧＷ１０Ａの検証用データ受信部１２３によって受信される（ステップＳ３０６）。そして、ＧＷ１０Ａの検証部１６０が、検証用データ受信部１２３が受信した検証用データを用いて、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証する（ステップＳ３０７）。ＧＷ１０Ａの判定部１４０Ａは、検証部１６０による検証結果が検証失敗か否かを判定し（ステップＳ３０８）、検証結果が検証失敗であれば（ステップＳ３０８：Ｙｅｓ）、異常カウンタをインクリメントする（ステップＳ３０９）。なお、検証結果が検証成功であれば（ステップＳ３０８：Ｎｏ）、異常カウンタの値はそのまま維持される。
【００７８】
次に、判定部１４０Ａは、全てのグループが対象グループとして選択されたか否かを判定する（ステップＳ３１０）。ここで、対象グループとして選択されていないグループがあれば（ステップＳ３１０：Ｎｏ）、ステップＳ３０３に戻って以降の処理が繰り返される。一方、全てのグループが対象グループとして選択された場合は（ステップＳ３１０：Ｙｅｓ）、判定部１４０Ａは、異常カウンタの値が０となっているかどうかを確認する（ステップＳ３１１）。ここで、異常カウンタの値が０となっている場合は（ステップＳ３１１：Ｙｅｓ）、事前共有鍵に異常が生じたＥＣＵ２０Ａがないため、処理を終了する。
【００７９】
一方、異常カウンタの値が０でない場合は（ステップＳ３１１：Ｎｏ）、判定部１４０Ａは、異常カウンタの値が第１閾値以下であるか否かを判定する（ステップＳ３１２）。ここで、異常カウンタの値が第１閾値以下であれば（ステップＳ３１２：Ｙｅｓ）、エラー出力部１５０が、ＥＣＵ２０Ａ側に異常があることを示す第１エラー信号を出力して（ステップＳ３１３）、処理を終了する。
【００８０】
一方、異常カウンタの値が第１閾値を超える場合は（ステップＳ３１２：Ｎｏ）、エラー出力部１５０は、回数カウンタをインクリメントして（ステップＳ３１４）、回数カウンタの値が第２閾値に達したか否かを判定する（ステップＳ３１５）。ここで、回数カウンタの値が第２閾値に達していなければ（ステップＳ３１５：Ｎｏ）、エラー出力部１５０によりリトライが指示され、ステップＳ３０２に戻って以降の処理が繰り返される。一方、回数カウンタの値が第２閾値に達すると（ステップＳ３１５：Ｙｅｓ）、エラー出力部１５０は、ＧＷ１０Ａやネットワークに異常があることを示す第２エラー信号を出力して（ステップＳ３１６）、処理を終了する。
【００８１】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の車載ネットワークシステム１では、ＧＷ１０Ａが、事前共有鍵を用いてセッション鍵を暗号化した暗号化データをＥＣＵ２０Ａに送信する。そして、ＧＷ１０Ａは、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証するための検証用データをＥＣＵ２０Ａから受信し、この検証用データを用いて、ＥＣＵ２０Ａが復元したセッション鍵が正しいかどうかを検証する。そして、その検証結果に基づいて、ＥＣＵ２０Ａが記憶する事前共有鍵が正常か否かを判定し、事前共有鍵が異常であると判定した場合に、エラー信号を出力するようにしている。したがって、本実施形態によれば、第１実施形態と同様に、ＥＣＵ２０Ａが記憶する事前共有鍵を適切に検査して、ＥＣＵ２０Ａが記憶する事前共有鍵が異常であれば、エラー信号を出力することで、例えば自動車Ｖのドライバやメンテナンス作業員などに適切な対応を促すことができる。
【００８２】
＜変形例＞
上述した第１実施形態の変形例は、すべて本実施形態の変形例としても適用できる。
【００８３】
＜第３実施形態＞
次に、第３実施形態について説明する。第３実施形態は、車載ネットワークシステム１のノードとしてネットワークに接続される各ＥＣＵ２０が、装置固有のデータを出力するＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）を搭載し、装置固有のデータであるＰＵＦの出力データ（以下、「ＰＵＦ出力」と呼ぶ）を用いて、ＥＣＵ２０間で共有するセッション鍵を生成する点が上述の第１実施形態と異なる。ＰＵＦ出力は各ＥＣＵ２０に固有のデータであるが、各ＥＣＵ２０のＰＵＦ出力の違いを吸収するように調整されたデータ（以下、「補助データ」と呼ぶ）を用いることで、ＰＵＦ出力からＥＣＵ２０間で共有するセッション鍵などの共有鍵を生成することができる。
【００８４】
本実施形態では、ＧＷ１０が、各ＥＣＵ２０のＰＵＦ出力を記憶しているものとする。つまり、ＧＷ１０は各ＥＣＵ２０とＰＵＦ出力を共有している。そして、ＧＷ１０は、各ＥＣＵ２０がＰＵＦ出力からセッション鍵を生成するための補助データを各ＥＣＵ２０に送信する際に、ＥＣＵ２０の固有データであるＰＵＦ出力が正常か否かを検査するものとする。したがって、本実施形態では、ＧＷ１０が記憶している各ＥＣＵ２０のＰＵＦ出力が「第１データ」に相当し、各ＥＣＵ２０がＰＵＦ出力から生成するセッション鍵が「第２データ」に相当し、ＰＵＦ出力からセッション鍵を生成するために用いる補助データが「第３データ」に相当する。以下では、第１実施形態や第２実施形態と共通する構成については同一の符号を付して重複した説明を適宜省略し、本実施形態に特徴的な部分についてのみ説明する。なお、以下では本実施形態のＧＷ１０を第１実施形態や第２実施形態と区別してＧＷ１０Ｂと表記し、本実施形態のＥＣＵ２０を第１実施形態や第２実施形態と区別してＥＣＵ２０Ｂと表記する。
【００８５】
図１０は、本実施形態のＧＷ１０Ｂの機能的な構成例を示すブロック図である。本実施形態のＧＷ１０Ｂは、ＰＵＦ出力の検査に関わる機能的な構成要素として、例えば図１０に示すように、記憶部１１０Ｂと、送受信部１２０Ｂと、生成部１３０Ｂと、判定部１４０と、エラー出力部１５０と、を備える。このうち、判定部１４０およびエラー出力部１５０は、検査対象が事前共有鍵からＰＵＦ出力に置き換わる以外は第１実施形態と共通のため、説明を省略する。
【００８６】
記憶部１１０Ｂは、第１実施形態の記憶部１１０が記憶していたグループ管理情報に代えて、各ＥＣＵ２０Ｂの固有データであるＰＵＦ出力を、各ＥＣＵ２０Ｂの機器ＩＤや各ＥＣＵ２０Ｂが属するグループのグループＩＤなどと対応付けて記憶している。各ＥＣＵ２０Ｂの固有データは、予め記憶部１１０Ｂに記憶されているものとする。
【００８７】
送受信部１２０Ｂは、ＧＷ１０Ｂがネットワークを介してＥＣＵ２０Ｂと通信するモジュールであり、サブモジュールとして、補助データ送信部１２４と、検証結果受信部１２２と、を含む。このうち、検証結果受信部１２２は第１実施形態と共通のため、説明を省略する。
【００８８】
補助データ送信部１２４は、生成部１３０ＢがＥＣＵ２０Ｂごとに生成した補助データ、つまり、各ＥＣＵ２０ＢにおいてＰＵＦ出力からセッション鍵を生成するために用いる補助データと、ＥＣＵ２０ＢがＰＵＦ出力と補助データとを用いて生成したセッション鍵の正しさを検証するための検証用データとを、各ＥＣＵ２０Ｂに送信する。
【００８９】
生成部１３０Ｂは、ＥＣＵ２０Ｂに配布するセッション鍵をグループごとに生成し、記憶部１１０Ｂが記憶する各ＥＣＵ２０ＢのＰＵＦ出力と、生成したセッション鍵とに基づいて、ＥＣＵ２０ＢにおいてＰＵＦ出力からセッション鍵を生成するために用いる補助データを、ＥＣＵ２０Ｂごとに生成する。また、生成部１３０Ｂは、ＥＣＵ２０ＢがＰＵＦ出力と補助データとを用いて生成するセッション鍵の正しさを検証するための検証用データを生成する。これら生成部１３０Ｂが生成した補助データおよび検証用データが、補助データ送信部１２４から各ＥＣＵ２０Ｂに送信される。
【００９０】
検証用データとしては、第１実施形態と同様に、セッション鍵のハッシュ値や、ＧＷ１０ＢとＥＣＵ２０Ｂの双方が記憶する所定の値をセッション鍵により暗号化した値などを用いることができる。検証用データとしてセッション鍵のハッシュ値を用いる場合、ＥＣＵ２０Ｂは、自身のＰＵＦ出力と補助データとを用いて生成したセッション鍵のハッシュ値を算出し、この算出したハッシュ値がＧＷ１０Ｂから送信されたハッシュ値と一致するか否かを判定することで、ＰＵＦ出力と補助データとを用いて生成したセッション鍵が正しいかどうかを検証することができる。また、検証用データとして所定の値をセッション鍵により暗号化した値を用いる場合、ＥＣＵ２０Ｂは、自身のＰＵＦ出力と補助データとを用いて生成したセッション鍵を用いて所定の値を暗号化し、得られた値がＧＷ１０Ｂから送信された値と一致するか否かを判定することで、ＰＵＦ出力と補助データとを用いて生成したセッション鍵が正しいかどうかを検証することができる。
【００９１】
次に、本実施形態のＥＣＵ２０Ｂの概要を説明する。図１１は、本実施形態のＥＣＵ２０Ｂの機能的な構成例を示すブロック図である。本実施形態のＥＣＵ２０Ｂは、ＰＵＦ出力の検査に関わる機能的な構成要素として、例えば図１１に示すように、送受信部２１０Ｂと、検証部２２０Ｂと、記憶部２３０Ｂと、ＰＵＦ２５０と、を備える。
【００９２】
送受信部２１０Ｂは、ＥＣＵ２０Ｂがネットワークを介してＧＷ１０Ｂと通信するモジュールであり、サブモジュールとして、補助データ受信部２１４と、検証結果送信部２１２と、を含む。このうち、検証結果送信部２１２は第１実施形態と共通のため、説明を省略する。
【００９３】
補助データ受信部２１４は、ＧＷ１０Ｂの補助データ送信部１２４が送信した補助データおよび検証用データを受信する。
【００９４】
検証部２２０Ｂは、ＰＵＦ２５０からＰＵＦ出力を取得して、このＰＵＦ出力と、補助データ受信部２１４が受信した補助データとを用いて、セッション鍵を生成する。つまり、検証部２２０Ｂは、ＰＵＦ２５０から取得したＰＵＦ出力と補助データとを用いて、ＧＷ１０Ｂの生成部１３０Ｂが生成したセッション鍵を復元する。そして、検証部２２０Ｂは、補助データ受信部２１４が受信した検証用データを用いて、復元したセッション鍵が正しいかどうかを検証し、復元したセッション鍵が正しい場合、補助データ受信部２１４が受信した補助データを記憶部２３０Ｂに格納する。また、検証部２２０Ｂは、ＰＵＦ出力と補助データとを用いて復元したセッション鍵の正しさを検証した結果を送受信部２１０Ｂに通知する。これにより、検証部２２０Ｂによる検証結果を示す検証結果データが、検証結果送信部２１２からＧＷ１０Ｂに送信される。
【００９５】
記憶部２３０Ｂは、検証部２２０Ｂによる検証によって正しいと判断されたセッション鍵などを記憶する。記憶部２３０Ｂに補助データが格納されると、その後、ＥＣＵ２０Ｂは、同じグループに属する他のＥＣＵ２０Ｂと通信する際に、ＰＵＦ２５０から取得したＰＵＦ出力と記憶部２３０Ｂが記憶する補助データとを用いてセッション鍵を生成することができる。
【００９６】
次に、図１２を参照しながら、本実施形態におけるＰＵＦ出力の検査に関わるＧＷ１０ＢおよびＥＣＵ２０Ｂの動作例について説明する。図１２は、本実施形態の処理手順の一例を示すフローチャートである。この図１２のフローチャートで示す一連の処理手順は、例えば、自動車Ｖのイグニッションスイッチがオンされたタイミング、あるいは、自動車Ｖのイグニッションスイッチがオフされたタイミング、あるいは、ＧＷ１０Ｂの外部入出力端子や車載ネットワークシステム１を介してＧＷ１０Ｂにメンテナンスツールが接続されたタイミングなど、予め定めた所定のタイミングで実施される。
【００９７】
処理が開始されると、まず、ＧＷ１０Ｂのエラー出力部１５０が回数カウンタを０に設定するとともに（ステップＳ５０１）、ＧＷ１０Ｂの判定部１４０が異常カウンタを０に設定する（ステップＳ５０２）。
【００９８】
次に、ＧＷ１０Ｂの生成部１３０Ｂが、対象グループを選択する（ステップＳ５０３）。そして、生成部１３０Ｂは、選択した対象グループに属するＥＣＵ２０Ｂに配布するセッション鍵を生成するとともに、記憶部１１０Ｂが記憶する各ＥＣＵ２０ＢのＰＵＦ出力と、生成したセッション鍵とに基づいて、各ＥＣＵ２０Ｂに対応する補助データを生成する（ステップＳ５０４）。さらに、生成部１３０Ｂは、生成したセッション鍵に基づいて、ＥＣＵ２０ＢがＰＵＦ出力と補助データとを用いて生成するセッション鍵の正しさを検証するための検証用データを生成する（ステップＳ５０５）。そして、ＧＷ１０Ｂの補助データ送信部１２４が、生成部１３０Ｂにより生成された補助データおよび検証用データを各ＥＣＵ２０Ｂに送信する（ステップＳ５０６）。
【００９９】
ＧＷ１０Ｂの補助データ送信部１２４が送信した補助データおよび検証用データは、各ＥＣＵ２０Ｂの補助データ受信部２１４によって受信される（ステップＳ６０１）。そして、補助データおよび検証用データを受信したＥＣＵ２０Ｂの検証部２２０Ｂは、ＰＵＦ２５０からＰＵＦ出力を取得し（ステップＳ６０２）、取得したＰＵＦ出力と補助データ受信部２１４が受信した補助データとを用いて、セッション鍵を生成する（ステップＳ６０３）。さらに、検証部２２０Ｂは、補助データ受信部２１４が受信した検証用データを用いて、生成したセッション鍵が正しいかどうかを検証する（ステップＳ６０４）。そして、ＥＣＵ２０Ｂの検証結果送信部２１２が、検証部２２０Ｂによる検証結果を示す検証結果データをＧＷ１０Ｂに送信する（ステップＳ６０５）。
【０１００】
ＥＣＵ２０Ｂの検証結果送信部２１２が送信した検証結果データは、ＧＷ１０Ｂの検証結果受信部１２２によって受信される（ステップＳ５０７）。そして、検証結果受信部１２２により検証結果データが受信されると、ＧＷ１０Ｂの判定部１４０は、検証結果データにより示される検証結果が検証失敗か否かを判定し（ステップＳ５０８）、検証結果が検証失敗であれば（ステップＳ５０８：Ｙｅｓ）、異常カウンタをインクリメントする（ステップＳ５０９）。なお、検証結果が検証成功であれば（ステップＳ５０８：Ｎｏ）、異常カウンタの値はそのまま維持される。
【０１０１】
次に、判定部１４０は、全てのグループが対象グループとして選択されたか否かを判定する（ステップＳ５１０）。ここで、対象グループとして選択されていないグループがあれば（ステップＳ５１０：Ｎｏ）、ステップＳ５０３に戻って以降の処理が繰り返される。一方、全てのグループが対象グループとして選択された場合は（ステップＳ５１０：Ｙｅｓ）、判定部１４０は、異常カウンタの値が０となっているかどうかを確認する（ステップＳ５１１）。ここで、異常カウンタの値が０となっている場合は（ステップＳ５１１：Ｙｅｓ）、事前共有鍵に異常が生じたＥＣＵ２０Ｂがないため、処理を終了する。
【０１０２】
一方、異常カウンタの値が０でない場合は（ステップＳ５１１：Ｎｏ）、判定部１４０は、異常カウンタの値が第１閾値以下であるか否かを判定する（ステップＳ５１２）。ここで、異常カウンタの値が第１閾値以下であれば（ステップＳ５１２：Ｙｅｓ）、エラー出力部１５０が、ＥＣＵ２０Ｂ側に異常があることを示す第１エラー信号を出力して（ステップＳ５１３）、処理を終了する。
【０１０３】
一方、異常カウンタの値が第１閾値を超える場合は（ステップＳ５１２：Ｎｏ）、エラー出力部１５０は、回数カウンタをインクリメントして（ステップＳ５１４）、回数カウンタの値が第２閾値に達したか否かを判定する（ステップＳ５１５）。ここで、回数カウンタの値が第２閾値に達していなければ（ステップＳ５１５：Ｎｏ）、エラー出力部１５０によりリトライが指示され、ステップＳ５０２に戻って以降の処理が繰り返される。一方、回数カウンタの値が第２閾値に達すると（ステップＳ５１５：Ｙｅｓ）、エラー出力部１５０は、ＧＷ１０Ｂやネットワークに異常があることを示す第２エラー信号を出力して（ステップＳ５１６）、処理を終了する。
【０１０４】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の車載ネットワークシステム１では、ＧＷ１０Ｂが、ＥＣＵ２０ＢにおいてＰＵＦ出力からセッション鍵を生成するために用いる補助データと、ＥＣＵ２０ＢがＰＵＦ出力と補助データを用いて生成したセッション鍵が正しいかどうかを検証するための検証用データとをＥＣＵ２０Ｂに送信する。そして、ＧＷ１０Ｂは、ＥＣＵ２０Ｂが検証用データを用いてセッション鍵の正しさを検証した結果を示す検証結果データを受信し、この検証結果データに基づいて、ＥＣＵ２０Ｂの固有データであるＰＵＦ出力が正常か否かを判定し、ＰＵＦ出力が異常であると判定した場合に、エラー信号を出力するようにしている。したがって、本実施形態によれば、ＥＣＵ２０Ｂの固有データであるＰＵＦ出力を適切に検査して、ＥＣＵ２０ＢのＰＵＦ出力が異常であれば、エラー信号を出力することで、例えば自動車Ｖのドライバやメンテナンス作業員などに適切な対応を促すことができる。
【０１０５】
また、特に本実施形態では、ＥＣＵ２０Ｂがセッション鍵そのものを記憶するのではなく、ＰＵＦ出力からセッション鍵を生成するために用いる補助データを記憶する構成であるため、ＥＣＵ２０Ｂに対する不正な攻撃によってセッション共有鍵が漏出するリスクを低減し、より安全な車載ネットワークシステム１を実現することができる。
【０１０６】
＜変形例＞
以上説明した第３実施形態では、ＧＷ１０Ｂが、ＥＣＵ２０Ｂから受信した検証用データが検証失敗である場合に、このＥＣＵ２０Ｂの固有データであるＰＵＦ出力が異常であると判定しているが、ＰＵＦ出力が異常であると判定されたＥＣＵ２０Ｂの利用環境に関する情報に基づいて、ＰＵＦ出力が異常となる可能性の高い他のＥＣＵ２０Ｂを特定するように構成してもよい。この場合、各ＥＣＵ２０Ｂの利用環境に関する情報を、例えばＧＷ１０Ｂの記憶部１１０Ｂなどに記憶しておく。そして、ＧＷ１０Ｂは、ＰＵＦ出力が異常であると判定されたＥＣＵ２０Ｂの利用環境に関する情報に基づいて、同様の利用環境で使用されている他のＥＣＵ２０Ｂを、ＰＵＦ出力が異常となる可能性の高いＥＣＵ２０Ｂとして特定する。これにより、当該ＥＣＵ２０ＢにおけるＰＵＦ出力の異常を未然に検知して、当該ＥＣＵ２０Ｂの修理あるいは交換などを行うことができる。
【０１０７】
また、上述の第３実施形態では、ＥＣＵ２０ＢのＰＵＦ出力が異常であると判定した場合にエラー信号を出力するようにしているが、ＰＵＦ出力が異常であると判定されたＥＣＵ２０Ｂの新たなＰＵＦ出力、例えば、ＰＵＦ２５０の破損が疑われる領域とは別の領域を用いて出力される新たなＰＵＦ出力をＧＷ１０Ｂ側に送信し、ＧＷ１０Ｂが記憶する当該ＥＣＵ２０ＢのＰＵＦ出力を新たなＰＵＦ出力で更新するようにしてもよい。また、この新たなＰＵＦ出力をＥＣＵ２０ＢからＧＷ１０Ｂに安全に送信するために、ＧＷ１０ＢとＥＣＵ２０Ｂが共有している過去のセッション鍵を用いてもよい。
【０１０８】
また、上述の第３実施形態では、ＧＷ１０Ｂが、ＥＣＵ２０Ｂに対してセッション鍵を配布する際に、ＥＣＵ２０Ｂの固有データであるＰＵＦ出力を検査するようにしているが、これに限らない。例えば、ＧＷ１０Ｂは、ＥＣＵ２０ＢのＰＵＦ出力が正常か否かを判定するために任意のデータをランダムあるいは所定の規則に従って選択し、ＧＷ１０Ｂが記憶するＥＣＵ２０ＢのＰＵＦ出力とこのデータとから計算される計算結果データと、このデータに基づいて生成した検証用データとをＥＣＵ２０Ｂに送信するようにしてもよい。この場合、ＥＣＵ２０Ｂは、自身のＰＵＦ出力とＧＷ１０Ｂから受信した計算結果データとに基づいてＧＷ１０Ｂが選択した任意のデータを復元し、ＧＷ１０Ｂから受信した検証用データを用いて、復元した任意のデータが正しいかどうかを検証する。この場合も、ＥＣＵ２０Ｂにおいて任意のデータが正しく復元できたか否かにより、ＥＣＵ２０ＢのＰＵＦ出力が正常か否かを判定することができる。
【０１０９】
また、上述の第３実施形態では、ＥＣＵ２０ＢがＰＵＦ出力と補助データとを用いて生成したセッション鍵が正しいかどうかの検証を、第１実施形態と同様にＥＣＵ２０Ｂ側で行う構成であるが、第２実施形態と同様にＧＷ１０Ｂ側で行う構成としてもよい。
【０１１０】
また、図１２に示した本実施形態の処理手順の例では、ステップＳ５１０で全てのグループが対象グループとして選択されたと判定された後に、異常カウンタの値や回数カウンタの値に応じた処理（ステップＳ５１１〜ステップＳ５１６）を行うようにしているが、第１実施形態の変形例と同様に、これらの処理をグループ単位で行うようにしてもよい。
【０１１１】
＜補足説明＞
ＧＷ１０，１０Ａ，１０Ｂの上述した機能は、例えば、図２に示したハードウェアとソフトウェアとの協働により実現することができる。この場合、マイクロコントローラ１２がネットワークＩ／Ｆ１１を利用しながら、ソフトウェアとして提供されるプログラムに応じた制御を実行することにより、上述した機能的な構成要素が実現される。
【０１１２】
ＧＷ１０，１０Ａ，１０Ｂの機能的な構成要素を実現するプログラムは、例えば、マイクロコントローラ１２内のメモリ領域などに予め組み込んで提供される。また、上記プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤなどのコンピュータ読み取り可能な記録媒体に記録されて提供されるようにしてもよい。また、上記プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上記プログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。なお、ＧＷ１０，１０Ａ，１０Ｂにおける上述した機能的な構成要素は、その一部または全部を、ＡＳＩＣやＦＰＧＡなどの専用のハードウェアを用いて実現することも可能である。
【０１１３】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１４】
１  車載ネットワークシステム
１０，１０Ａ，１０Ｂ  ＧＷ
２０，２０Ａ，２０Ｂ  ＥＣＵ
１２０，１２０Ａ，１２０Ｂ  送受信部
１２１，１２１Ａ  セッション鍵送信部
１２２  検証結果受信部
１２３  検証用データ受信部
１２４  補助データ送信部
１３０，１３０Ａ，１３０Ｂ  生成部
１４０，１４０Ａ  判定部
１５０  エラー出力部
１６０  検証部
【図１】
0006502832.tif 000002
【図２】
0006502832.tif 000003
【図３】
0006502832.tif 000004
【図４】
0006502832.tif 000005
【図５】
0006502832.tif 000006
【図６】
0006502832.tif 000007
【図７】
0006502832.tif 000008
【図８】
0006502832.tif 000009
【図９】
0006502832.tif 000010
【図１０】
0006502832.tif 000011
【図１１】
0006502832.tif 000012
【図１２】
0006502832.tif 000013