(57)【要約】【課題】ＥＣＵ等の車載コンピュータに適用されるデータの信頼性を向上させること。【解決手段】車載コンピュータは、マスタ鍵と車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部を備え、データ提供装置は、マスタ鍵を記憶する第２記憶部と、車載コンピュータ識別子とマスタ鍵とから車載コンピュータの初期鍵を生成する初期鍵生成部と、該車載コンピュータの初期鍵を使用して、車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、車載コンピュータに適用されるデータと第１期待値計算部が計算した期待値とを車両へ提供する提供部と、を備え、車載コンピュータは、提供部から提供されたデータの期待値を、第１記憶部の初期鍵を使用して計算する第２期待値計算部と、提供部から提供された期待値と、第２期待値計算部が計算した期待値とを比較する期待値検証部と、を備える。【選択図】図１
2018006782.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載される車載コンピュータと、データ提供装置と、を備え、
前記車載コンピュータは、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部を備え、
前記データ提供装置は、
前記マスタ鍵を記憶する第２記憶部と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、
前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、を備え、
前記車載コンピュータは、
前記提供部から提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、
前記提供部から提供された前記期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、を備える、
データ提供システム。
【請求項２】
前記提供部は、前記データと前記期待値とを、通信回線を介して前記車両へ送信する、
請求項１に記載のデータ提供システム。
【請求項３】
前記提供部は、前記データと前記期待値とを、前記車両の診断ポートを介して前記車両へ送信する、
請求項１に記載のデータ提供システム。
【請求項４】
前記データ提供装置は前記車両に備わる、
請求項１に記載のデータ提供システム。
【請求項５】
前記データ提供装置は、前記車両に備わる通信装置である、
請求項１に記載のデータ提供システム。
【請求項６】
前記データ提供装置は、前記車両に備わる車載コンピュータである、
請求項１に記載のデータ提供システム。
【請求項７】
車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶部と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、
前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、
を備えるデータ提供装置。
【請求項８】
車両に搭載される車載コンピュータにおいて、
マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部と、
請求項７に記載のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、
前記提供部から前記データと共に提供された期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、
を備える車載コンピュータ。
【請求項９】
車両に搭載される車載コンピュータと、データ提供装置と、を備えるデータ提供システムのデータ提供方法であって、
前記車載コンピュータが、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を第１記憶部に記憶する第１記憶ステップと、
前記データ提供装置が、前記マスタ鍵を第２記憶部に記憶する第２記憶ステップと、
前記データ提供装置が、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成ステップと、
前記データ提供装置が、前記初期鍵生成ステップにより生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算ステップと、
前記データ提供装置が、前記車載コンピュータに適用されるデータと、前記第１期待値計算ステップにより計算した前記期待値とを前記車両へ提供する提供ステップと、
前記車載コンピュータが、前記提供ステップにより提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算ステップと、
前記車載コンピュータが、前記提供ステップにより提供された前記期待値と、前記第２期待値計算ステップにより計算した前記期待値とを比較する期待値検証ステップと、
を含むデータ提供方法。
【請求項１０】
データ提供装置のコンピュータに、
車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶機能と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶機能が記憶している前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成機能と、
前記初期鍵生成機能が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算機能と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算機能が計算した前記期待値とを前記車両へ提供する提供機能と、
を実現させるためのコンピュータプログラム。
【請求項１１】
車両に搭載される車載コンピュータに、
マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶機能と、
請求項７に記載のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶機能が記憶している前記初期鍵を使用して計算する第２期待値計算機能と、
前記提供部から前記データと共に提供された期待値と、前記第２期待値計算機能が計算した前記期待値とを比較する期待値検証機能と、
を実現させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ提供システム、データ提供装置、車載コンピュータ、データ提供方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、自動車は、ＥＣＵ（Electronic Control Unit：電子制御装置）を有し、ＥＣＵによってエンジン制御等の機能を実現する。ＥＣＵは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。複数のＥＣＵをＣＡＮ（Controller Area Network）に接続して構成される車載制御システムについてのセキュリティ技術が例えば非特許文献１に記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】竹森敬祐、“セキュアエレメントを基点とした車載制御システムの保護  −要素技術の整理と考察−”、電子情報通信学会、信学技報、vol. 114、no. 508、pp. 73-78、2015年3月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
自動車の車載制御システムのＥＣＵに適用される更新プログラム等のデータの信頼性を向上させることが一つの課題であった。
【０００５】
本発明は、このような事情を考慮してなされたものであり、ＥＣＵ等の車載コンピュータに適用されるデータの信頼性を向上させることができるデータ提供システム、データ提供装置、車載コンピュータ、データ提供方法、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
（１）本発明の一態様は、車両に搭載される車載コンピュータと、データ提供装置と、を備え、前記車載コンピュータは、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部を備え、前記データ提供装置は、前記マスタ鍵を記憶する第２記憶部と、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、を備え、前記車載コンピュータは、前記提供部から提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、前記提供部から提供された前記期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、を備える、データ提供システムである。
（２）本発明の一態様は、上記（１）のデータ提供システムにおいて、前記提供部は、前記データと前記期待値とを、通信回線を介して前記車両へ送信する、データ提供システムである。
（３）本発明の一態様は、上記（１）のデータ提供システムにおいて、前記提供部は、前記データと前記期待値とを、前記車両の診断ポートを介して前記車両へ送信する、データ提供システムである。
（４）本発明の一態様は、上記（１）のデータ提供システムにおいて、前記データ提供装置は前記車両に備わる、データ提供システムである。
（５）本発明の一態様は、上記（１）のデータ提供システムにおいて、前記データ提供装置は、前記車両に備わる通信装置である、データ提供システムである。
（６）本発明の一態様は、上記（１）のデータ提供システムにおいて、前記データ提供装置は、前記車両に備わる車載コンピュータである、データ提供システムである。
【０００７】
（７）本発明の一態様は、車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶部と、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、を備えるデータ提供装置である。
【０００８】
（８）本発明の一態様は、車両に搭載される車載コンピュータにおいて、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部と、上記（７）のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、前記提供部から前記データと共に提供された期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、を備える車載コンピュータである。
【０００９】
（９）本発明の一態様は、車両に搭載される車載コンピュータと、データ提供装置と、を備えるデータ提供システムのデータ提供方法であって、前記車載コンピュータが、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を第１記憶部に記憶する第１記憶ステップと、前記データ提供装置が、前記マスタ鍵を第２記憶部に記憶する第２記憶ステップと、前記データ提供装置が、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成ステップと、前記データ提供装置が、前記初期鍵生成ステップにより生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算ステップと、前記データ提供装置が、前記車載コンピュータに適用されるデータと、前記第１期待値計算ステップにより計算した前記期待値とを前記車両へ提供する提供ステップと、前記車載コンピュータが、前記提供ステップにより提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算ステップと、前記車載コンピュータが、前記提供ステップにより提供された前記期待値と、前記第２期待値計算ステップにより計算した前記期待値とを比較する期待値検証ステップと、を含むデータ提供方法である。
【００１０】
（１０）本発明の一態様は、データ提供装置のコンピュータに、車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶機能と、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶機能が記憶している前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成機能と、前記初期鍵生成機能が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算機能と、前記車載コンピュータに適用されるデータと、前記第１期待値計算機能が計算した前記期待値とを前記車両へ提供する提供機能と、を実現させるためのコンピュータプログラムである。
【００１１】
（１１）本発明の一態様は、車両に搭載される車載コンピュータに、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶機能と、上記（７）に記載のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶機能が記憶している前記初期鍵を使用して計算する第２期待値計算機能と、前記提供部から前記データと共に提供された期待値と、前記第２期待値計算機能が計算した前記期待値とを比較する期待値検証機能と、を実現させるためのコンピュータプログラムである。
【発明の効果】
【００１２】
本発明によれば、ＥＣＵ等の車載コンピュータに適用されるデータの信頼性を向上させることができるという効果が得られる。
【図面の簡単な説明】
【００１３】
【図１】一実施形態に係る自動車１００１の構成例を示す図である。
【図２】一実施形態に係るサーバ装置１３００の構成例を示す図である。
【図３】一実施形態に係る第１のＥＣＵ１０１０の構成例を示す図である。
【図４】一実施形態に係る第２のＥＣＵ１０２０の構成例を示す図である。
【図５】一実施形態に係るＥＣＵコードの提供手順の例を示すシーケンスチャートである。
【図６】一実施形態に係る自動車１００１の構成例を示す図である。
【図７】一実施形態に係るメンテナンスツール１２００の構成例を示す図である。
【図８】一実施形態に係るＥＣＵコードの提供手順の例を示すシーケンスチャートである。
【図９】一実施形態に係る自動車１００１の構成例を示す図である。
【図１０】一実施形態に係るＴＣＵ１０５０の構成例を示す図である。
【図１１】一実施形態に係るＥＣＵコードの提供手順の例を示すシーケンスチャートである。
【図１２】一実施形態に係る第１のＥＣＵ１０１０の構成例を示す図である。
【図１３】一実施形態に係るＥＣＵコードの提供手順の例を示すシーケンスチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照し、本発明の実施形態について説明する。なお、以下に示す実施形態では、車両として自動車を例に挙げて説明する。
【００１５】
［第１実施形態］
図１は、本実施形態に係る自動車１００１の構成例を示す図である。本実施形態では、自動車１００１に搭載されるＥＣＵ（電子制御装置）に対して、更新プログラム等のデータを適用する場合を例に挙げて説明する。
【００１６】
図１において、自動車１００１は、第１のＥＣＵ１０１０と複数の第２のＥＣＵ１０２０とを備える。第１のＥＣＵ１０１０及び第２のＥＣＵ１０２０は、自動車１００１に備わる車載コンピュータである。第１のＥＣＵ１０１０は、自動車１００１に搭載されたＥＣＵのうち、ゲートウェイ機能を有するＥＣＵである。第２のＥＣＵ１０２０は、自動車１００１に搭載されたＥＣＵのうち、エンジン制御等の機能を有するＥＣＵである。第２のＥＣＵ１０２０として、例えば、エンジン制御機能を有するＥＣＵ、ハンドル制御機能を有するＥＣＵ、ブレーキ制御機能を有するＥＣＵなどがある。
【００１７】
第１のＥＣＵ１０１０と複数の第２のＥＣＵ１０２０は、自動車１００１に備わるＣＡＮ（Controller Area Network）１０３０に接続される。ＣＡＮ１０３０は通信ネットワークである。ＣＡＮは車両に搭載される通信ネットワークの一つとして知られている。
【００１８】
第１のＥＣＵ１０１０は、ＣＡＮ１０３０を介して、各第２のＥＣＵ１０２０との間でデータを交換する。第２のＥＣＵ１０２０は、ＣＡＮ１０３０を介して、他の第２のＥＣＵ１０２０との間でデータを交換する。
【００１９】
なお、車両に搭載される通信ネットワークとして、ＣＡＮ以外の通信ネットワークを自動車１００１に備え、ＣＡＮ以外の通信ネットワークを介して、第１のＥＣＵ１０１０と第２のＥＣＵ１０２０との間のデータの交換、及び、第２のＥＣＵ１０２０同士の間のデータの交換が行われてもよい。例えば、ＬＩＮ（Local Interconnect Network）を自動車１００１に備えてもよい。また、ＣＡＮとＬＩＮとを自動車１００１に備えてもよい。また、自動車１００１において、ＬＩＮに接続する第２のＥＣＵ１０２０を備えてもよい。また、第１のＥＣＵ１０１０は、ＣＡＮとＬＩＮとに接続されてもよい。また、第１のＥＣＵ１０１０は、ＣＡＮを介して該ＣＡＮに接続される第２のＥＣＵ１０２０との間でデータを交換し、また、ＬＩＮを介して該ＬＩＮに接続される第２のＥＣＵ１０２０との間でデータを交換してもよい。また、第２のＥＣＵ１０２０同士が、ＬＩＮを介してデータを交換してもよい。
【００２０】
自動車１００１は診断ポート１０６０を備える。診断ポート１０６０として、例えばＯＢＤ（On-board Diagnostics）ポートを使用してもよい。診断ポート１０６０には診断端末１０６５を接続可能である。診断ポート１０６０は第１のＥＣＵ１０１０に接続される。第１のＥＣＵ１０１０と診断ポート１０６０に接続された診断端末１０６５とは、診断ポート１０６０を介して、データを交換する。
【００２１】
自動車１００１はインフォテイメント（Infotainment）機器１０４０を備える。インフォテイメント機器１０４０として、例えば、ナビゲーション機能、位置情報サービス機能、音楽や動画などのマルチメディア再生機能、音声通信機能、データ通信機能、インターネット接続機能などを有するものが挙げられる。インフォテイメント機器１０４０は第１のＥＣＵ１０１０に接続される。第１のＥＣＵ１０１０は、インフォテイメント機器１０４０から入力された情報を第２のＥＣＵ１０２０へ送信する。
【００２２】
自動車１００１は、ＴＣＵ（Tele Communication Unit）１０５０を備える。ＴＣＵ１０５０は通信装置である。ＴＣＵ１０５０は通信モジュール１０５１を備える。通信モジュール１０５１は、無線通信ネットワークを利用して無線通信を行う。通信モジュール１０５１は、ＳＩＭ（Subscriber Identity Module）１０５２を備える。ＳＩＭ１０５２は、無線通信ネットワークを利用するための情報が書き込まれたＳＩＭである。通信モジュール１０５１は、ＳＩＭ１０５２を使用することにより該無線通信ネットワークに接続して無線通信を行うことができる。なお、ＳＩＭ１０５２として、ｅＳＩＭ（Embedded Subscriber Identity Module）を使用してもよい。
【００２３】
ＴＣＵ１０５０は第１のＥＣＵ１０１０に接続される。第１のＥＣＵ１０１０は、ＴＣＵ１０５０の通信モジュール１０５１とデータを交換する。
【００２４】
なお、図１の構成では第１のＥＣＵ１０１０とＴＣＵ１０５０を直接接続することにより第１のＥＣＵ１０１０と通信モジュール１０５１の間でデータを交換するが、これに限定されない。例えば、ＴＣＵ１０５０をインフォテイメント機器１０４０に接続し、第１のＥＣＵ１０１０が、インフォテイメント機器１０４０を介して、ＴＣＵ１０５０の通信モジュール１０５１とデータを交換してもよい。又は、診断端末１０６５の代わりにＴＣＵ１０５０を診断ポート１０６０に接続し、第１のＥＣＵ１０１０が、診断ポート１０６０を介して、該診断ポート１０６０に接続されたＴＣＵ１０５０の通信モジュール１０５１とデータを交換してもよい。又は、第１のＥＣＵ１０１０が、ＳＩＭ１０５２を含む通信モジュール１０５１を備えてもよい。第１のＥＣＵ１０１０がＳＩＭ１０５２を含む通信モジュール１０５１を備える場合には、自動車１００１はＴＣＵ１０５０を備えなくてもよい。
【００２５】
第１のＥＣＵ１０１０は、メイン演算器１０１１とＨＳＭ（Hardware Security Module）１０１２を備える。メイン演算器１０１１は、第１のＥＣＵ１０１０の機能を実現させるためのコンピュータプログラムを実行する。ＨＳＭ１０１２は暗号処理機能等を有する。ＨＳＭ１０１２は耐タンパー性（Tamper Resistant）を有する。ＨＳＭ１０１２はセキュアエレメント（Secure Element：SE）の例である。ＨＳＭ１０１２は、鍵等のデータを記憶する記憶部１０１３を備える。メイン演算器１０１１はＨＳＭ１０１２を使用する。
【００２６】
第２のＥＣＵ１０２０は、メイン演算器１０２１とＳＨＥ（Secure Hardware Extension）１０２２を備える。メイン演算器１０２１は、第２のＥＣＵ１０２０の機能を実現させるためのコンピュータプログラムを実行する。ＳＨＥ１０２２は暗号処理機能等を有する。ＳＨＥ１０２２は耐タンパー性を有する。ＳＨＥ１０２２はセキュアエレメントの例である。ＳＨＥ１０２２は、鍵等のデータを記憶する記憶部１０２３を備える。メイン演算器１０２１はＳＨＥ１０２２を使用する。
【００２７】
自動車１００１に備わる車載コンピュータシステム１００２は、第１のＥＣＵ１０１０と複数の第２のＥＣＵ１０２０とがＣＡＮ１０３０に接続されて構成される。第１のＥＣＵ１０１０は、ゲートウェイ機能を有し、車載コンピュータシステム１００２の内部と外部の間の通信を監視する。本実施形態において、車載コンピュータシステム１００２は、自動車１００１の車載制御システムとして機能する。
【００２８】
以下の説明において、第１のＥＣＵ１０１０と第２のＥＣＵ１０２０とを特に区別しないときは単にＥＣＵと称する。
【００２９】
サーバ装置１３００は、通信回線を介して、自動車１００１のＴＣＵ１０５０の通信モジュール１０５１とデータを送受する。サーバ装置１３００は、自動車１００１のＴＣＵ１０５０の通信モジュール１０５１が利用する無線通信ネットワークを介して、該通信モジュール１０５１とデータを送受する。又は、サーバ装置１３００は、インターネット等の通信ネットワークと該無線通信ネットワークとを介して、該通信モジュール１０５１とデータを送受してもよい。また、例えば、サーバ装置１３００と通信モジュール１０５１との間をＶＰＮ（Virtual Private Network）回線等の専用回線で接続し、該専用回線でデータを送受してもよい。例えば、ＳＩＭ１０５２に対応する無線通信ネットワークによって、ＶＰＮ回線等の専用回線が提供されてもよい。
【００３０】
サーバ装置１３００は、ＥＣＵに適用されるＥＣＵコード（ECU code）を自動車１００１へ提供する。ＥＣＵコードは、ＥＣＵに適用されるデータの例である。ＥＣＵコードは、ＥＣＵにインストールされる更新プログラム等のコンピュータプログラムであってもよく、又は、ＥＣＵに設定されるパラメータ設定値などの設定データであってもよい。
【００３１】
図２は、サーバ装置１３００の構成例を示す図である。図２において、サーバ装置１３００は、通信部１１と記憶部１２と期待値計算部１３と検証部１４と初期鍵生成部１５とを備える。通信部１１は、通信回線を介して、他の装置と通信を行う。記憶部１２は、鍵等のデータを記憶する。期待値計算部１３は、ＥＣＵコードについての期待値を計算する。検証部１４は、電子署名等の検証を行う。初期鍵生成部１５は、ＥＣＵの初期鍵を生成する。
【００３２】
サーバ装置１３００の機能は、該サーバ装置１３００が備えるＣＰＵがコンピュータプログラムを実行することにより実現される。なお、サーバ装置１３００として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００３３】
図３は、第１のＥＣＵ１０１０の構成例を示す図である。図３において、第１のＥＣＵ１０１０は、メイン演算器１０１１とＨＳＭ１０１２とインタフェース部２０とを備える。メイン演算器１０１１は、制御部２１と記憶部２２とを備える。ＨＳＭ１０１２は、記憶部１０１３と期待値計算部３１と検証部３２とを備える。
【００３４】
インタフェース部２０は、ＣＡＮ１０３０を介してデータを送受するインタフェースと、インフォテイメント機器１０４０とデータを送受するインタフェースと、ＴＣＵ１０５０とデータを送受するインタフェースと、診断ポート１０６０を介してデータを送受するインタフェースとを備える。メイン演算器１０１１は、インタフェース部２０を介して、第１のＥＣＵ１０１０以外の他の装置とデータの送受を行う。
【００３５】
制御部２１は、第１のＥＣＵ１０１０の制御を行う。記憶部２２は、データを記憶する。記憶部１０１３は、鍵等のデータを記憶する。期待値計算部３１は、ＥＣＵコード等のデータの期待値を計算する。検証部３２は、期待値の検証を行う。
【００３６】
図４は、第２のＥＣＵ１０２０の構成例を示す図である。図４において、第２のＥＣＵ１０２０は、メイン演算器１０２１とＳＨＥ１０２２とインタフェース部４０とを備える。メイン演算器１０２１は、制御部４１と記憶部４２とを備える。ＳＨＥ１０２２は、記憶部１０２３と期待値計算部５１と検証部５２とを備える。
【００３７】
インタフェース部４０は、ＣＡＮ１０３０を介してデータを送受するインタフェースを備える。メイン演算器１０２１は、インタフェース部４０を介して、自第２のＥＣＵ１０２０以外の他の装置とデータの送受を行う。
【００３８】
制御部４１は、第２のＥＣＵ１０２０の制御を行う。記憶部４２は、データを記憶する。記憶部１０２３は、鍵等のデータを記憶する。期待値計算部５１は、ＥＣＵコード等のデータの期待値を計算する。検証部５２は、期待値の検証を行う。
【００３９】
次に図５を参照して、本実施形態に係るＥＣＵコードの提供の手順の例を説明する。図５は、ＥＣＵコードの提供手順の例を示すシーケンスチャートである。なお、図５に示されるＥＣＵコード提供手順の例では、第２のＥＣＵ１０２０に適用されるＥＣＵコードを例に挙げるが、第１のＥＣＵ１０１０に適用されるＥＣＵコードについても、ＥＣＵコードの適用先が第１のＥＣＵ１０１０になるのみで同様の手順を適用可能である。
【００４０】
図５において、サーバ装置１３００は、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとを備える。マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとは、記憶部１２に格納されている。但し、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔは、記憶部１２の記憶領域のうちセキュアな記憶領域に格納されることが好ましい。
【００４１】
第２のＥＣＵ１０２０のＳＨＥ１０２２は、該第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを備える。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、該第２のＥＣＵ１０２０のＳＨＥ１０２２の記憶部１０２３に格納される。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、予め、該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。例えば、第２のＥＣＵ１０２０の製造時などに、初期鍵Ｋｅｙ＿ｅｃｕが該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。
【００４２】
初期鍵Ｋｅｙ＿ｅｃｕの生成方法は、予め決められている。本実施形態では、初期鍵Ｋｅｙ＿ｅｃｕの生成方法の一例として、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、ＥＣＵの識別子（ＥＣＵ識別子）ＥＣＵ＿ＩＤとからダイジェスト値を算出する。本実施形態では、第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、該第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤとを使用して算出されるダイジェスト値である。ダイジェスト値として、例えば、ハッシュ（hash）関数により算出される値や排他的論理和演算により算出される値などが挙げられる。
【００４３】
なお、第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕについても、第２のＥＣＵ１０２０と同様に、予め、該第１のＥＣＵ１０１０のＨＳＭ１０１２に格納される。第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕは、該第１のＥＣＵ１０１０のＨＳＭ１０１２の記憶部１０１３に格納される。
【００４４】
（ステップＳ１０１）自動車１００１へ提供するＥＣＵコードには、予め、サーバ公開鍵証明書Ｃｅｒｔ＿ｓｖに対応する秘密鍵によって電子署名が付される。サーバ装置１３００の検証部１４は、自動車１００１へ提供するＥＣＵコードに付されている電子署名を、記憶部１２に格納されているサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖを使用して検証する。サーバ装置１３００は、該電子署名の検証が合格である場合にステップＳ１０２以降に処理を進める。一方、サーバ装置１３００は、該電子署名の検証が不合格である場合には当該ＥＣＵコードの提供を停止する。なお、自動車１００１へ提供するＥＣＵコードの正当性が確かである場合には、該電子署名の検証はなくてもよい。
【００４５】
（ステップＳ１０２）サーバ装置１３００の通信部１１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤの要求メッセージ（ＥＣＵ識別子要求メッセージ）を、自動車１００１へ送信する。自動車１００１において、通信モジュール１０５１により受信されたＥＣＵ識別子要求メッセージは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【００４６】
（ステップＳ１０３）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵ識別子要求メッセージを受信すると、自己のＥＣＵ識別子ＥＣＵ＿ＩＤを返信する。該第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤは、第１のＥＣＵ１０１０を介して通信モジュール１０５１へ転送される。通信モジュール１０５１は、該転送されたＥＣＵ識別子ＥＣＵ＿ＩＤをサーバ装置１３００へ送信する。サーバ装置１３００は、該通信モジュール１０５１から送信されたＥＣＵ識別子ＥＣＵ＿ＩＤ、すなわちＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを、通信部１１によって受信する。
【００４７】
なお、サーバ装置１３００が、予め、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得する場合には、上述したステップＳ１０２とステップＳ１０３は不要である。例えば、サーバ装置１３００が自動車１００１の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤのリストを管理している場合には、サーバ装置１３００は、該リストから、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得してもよい。
【００４８】
（ステップＳ１０４）サーバ装置１３００の初期鍵生成部１５は、記憶部１２に格納されているマスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤとを使用して、該ＥＣＵコードの適用先の第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを生成する。
【００４９】
（ステップＳ１０５）サーバ装置１３００の期待値計算部１３は、初期鍵生成部１５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードの期待値を計算する。本実施形態では、期待値の一例として、ＣＭＡＣ（Cipher-based Message Authentication Code）を使用する。よって、期待値計算部１３は、初期鍵生成部１５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードのＣＭＡＣを計算する。
【００５０】
（ステップＳ１０６）サーバ装置１３００の通信部１１は、ＥＣＵコードと期待値計算部１３が計算した該ＥＣＵコードのＣＭＡＣとを、自動車１００１へ送信する。自動車１００１において、通信モジュール１０５１により受信されたＥＣＵコードと該ＥＣＵコードのＣＭＡＣとは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【００５１】
（ステップＳ１０７）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵコードと該ＥＣＵコードのＣＭＡＣとを受信すると、該ＥＣＵコードをＳＨＥ１０２２へ渡してＣＭＡＣの計算を要求する。ＳＨＥ１０２２の期待値計算部５１は、記憶部１０２３に格納されている初期鍵Ｋｅｙ＿ｅｃｕを使用して、該ＥＣＵコードのＣＭＡＣを計算する。ＳＨＥ１０２２は、期待値計算部５１が計算したＣＭＡＣを制御部４１へ渡す。
【００５２】
（ステップＳ１０８）第２のＥＣＵ１０２０の制御部４１は、第１のＥＣＵ１０１０を介してＥＣＵコードと共に受信したＣＭＡＣと、ＳＨＥ１０２２によって計算したＣＭＡＣとを比較する。この比較の結果、両者が一致する場合にはＣＭＡＣの検証が合格であり、両者が一致しない場合にはＣＭＡＣの検証が不合格である。制御部４１は、該ＣＭＡＣの検証が合格である場合にステップＳ１０９以降に処理を進める。一方、制御部４１は、該ＣＭＡＣの検証が不合格である場合には当該ＥＣＵコードの適用を停止する。
【００５３】
（ステップＳ１０９）第２のＥＣＵ１０２０の制御部４１は、第１のＥＣＵ１０１０を介して受信したＥＣＵコードを適用する。また、制御部４１は、第１のＥＣＵ１０１０を介して該ＥＣＵコードと共に受信したＣＭＡＣをＳＨＥ１０２２へ渡し、該ＣＭＡＣをセキュアブート期待値に登録することを要求する。ＳＨＥ１０２２は、該要求に応じて、該ＣＭＡＣをセキュアブート期待値に登録する。
【００５４】
（ステップＳ１１０）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵコードの適用後に、セキュアブートを実行する。このセキュアブートでは、制御部４１は、ＥＣＵコードをＳＨＥ１０２２に渡してセキュアブートにおけるＣＭＡＣの検証を要求する。ＳＨＥ１０２２の検証部５２は、記憶部１０２３に格納されている初期鍵Ｋｅｙ＿ｅｃｕを使用して、該ＥＣＵコードのＣＭＡＣを計算する。次いで、ＳＨＥ１０２２の検証部５２は、該計算結果のＣＭＡＣと、セキュアブート期待値とを比較する。この比較の結果、両者が一致する場合にはセキュアブートにおけるＣＭＡＣの検証が合格であり、両者が一致しない場合にはセキュアブートにおけるＣＭＡＣの検証が不合格である。ＳＨＥ１０２２は、該セキュアブートにおけるＣＭＡＣの検証結果を制御部４１へ応答する。制御部４１は、該セキュアブートにおけるＣＭＡＣの検証が合格である場合に当該ＥＣＵコードの実行を進める。一方、制御部４１は、該セキュアブートにおけるＣＭＡＣの検証が不合格である場合には当該ＥＣＵコードの実行を停止する。
【００５５】
（ステップＳ１１１）第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果を第１のＥＣＵ１０１０へ送信する。該セキュアブートにおけるＣＭＡＣの検証結果は、第１のＥＣＵ１０１０を介して通信モジュール１０５１へ転送される。通信モジュール１０５１は、該転送されたセキュアブートにおけるＣＭＡＣの検証結果をサーバ装置１３００へ送信する。サーバ装置１３００は、該通信モジュール１０５１から送信されたセキュアブートにおけるＣＭＡＣの検証結果を、通信部１１によって受信する。
【００５６】
（ステップＳ１１２）サーバ装置１３００の検証部１４は、自動車１００１の通信モジュール１０５１から受信したセキュアブートにおけるＣＭＡＣの検証結果に基づいて、該自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。セキュアブートにおけるＣＭＡＣの検証結果が合格である場合には該ＥＣＵコードの適用が成功であり、セキュアブートにおけるＣＭＡＣの検証結果が不合格である場合には該ＥＣＵコードの適用が失敗である。
【００５７】
なお、第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果に、ステップＳ１０７でＳＨＥ１０２２によって計算したＣＭＡＣを含めてもよい。この場合、サーバ装置１３００の検証部１４は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣと、ステップＳ１０６で自動車１００１へＥＣＵコードと共に送信した該ＥＣＵコードのＣＭＡＣとを比較し、この比較結果に基づいて該自動車１００１へ提供したＥＣＵコードの適用の成否を判定してもよい。該比較結果が一致である場合には該ＥＣＵコードの適用が成功であり、該比較結果が一致しない場合には該ＥＣＵコードの適用が失敗である。
【００５８】
上述した第１実施形態によれば、サーバ装置１３００がＥＣＵコードの適用先のＥＣＵの初期鍵を生成し、該生成した初期鍵を使用してＥＣＵコードの期待値を生成し、ＥＣＵコードと該生成した期待値とを自動車１００１へ提供する。自動車１００１のＥＣＵは、ＥＣＵコードと共に受信した期待値を自己の初期鍵を使用して検証する。これにより、自動車１００１のＥＣＵに適用されるＥＣＵコードの信頼性を向上させることができる。
【００５９】
第１実施形態において、サーバ装置１３００はデータ提供装置に対応し、通信部１１は提供部に対応する。また、上述した図５の例において、第２のＥＣＵ１０２０の制御部４１は期待値検証部に対応する。
【００６０】
［第２実施形態］
図６は、本実施形態に係る自動車１００１の構成例を示す図である。本実施形態では、自動車１００１に搭載されるＥＣＵ（電子制御装置）に対して、更新プログラム等のデータを適用する場合を例に挙げて説明する。
【００６１】
図６において、図１の各部に対応する部分には同一の符号を付け、その説明を省略する。図６に示す自動車の構成例において、診断ポート１０６０にはメンテナンスツール（maintenance tool）１２００を接続可能である。第１のＥＣＵ１０１０と診断ポート１０６０に接続されたメンテナンスツール１２００とは、診断ポート１０６０を介して、データを交換する。メンテナンスツール１２００は、ＯＢＤポートに接続される従来の診断端末の機能を有していてもよい。
【００６２】
メンテナンスツール１２００は、制御モジュール１２０１を備える。制御モジュール１２０１は、ＩＣ（Integrated Circuit）チップ１２０２を備える。ＩＣチップ１２０２は、鍵等のデータを記憶する記憶部１２０３を備える。ＩＣチップ１２０２は耐タンパー性を有する。ＩＣチップ１２０２はセキュアエレメントの例である。ＩＣチップ１２０２は、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。
【００６３】
サーバ装置１３００は、通信回線を介して、メンテナンスツール１２００とデータを送受する。例えば、サーバ装置１３００とメンテナンスツール１２００との間をＶＰＮ回線等の専用回線で接続し、該専用回線でデータを送受してもよい。
【００６４】
サーバ装置１３００は、ＥＣＵに適用されるＥＣＵコードを、メンテナンスツール１２００へ提供する。ＥＣＵコードは、ＥＣＵに適用されるデータの例である。ＥＣＵコードは、ＥＣＵにインストールされる更新プログラム等のコンピュータプログラムであってもよく、又は、ＥＣＵに設定されるパラメータ設定値などの設定データであってもよい。
【００６５】
図７は、メンテナンスツール１２００の構成例を示す図である。図７において、メンテナンスツール１２００は、通信部６１と診断ポートインタフェース６２と制御モジュール１２０１とを備える。制御モジュール１２０１は、制御部７１とＩＣチップ１２０２とを備える。ＩＣチップ１２０２は、記憶部１２０３と期待値計算部７３と検証部７４と初期鍵生成部７５とを備える。通信部６１は、通信回線を介して、他の装置と通信を行う。診断ポートインタフェース６２は、自動車１００１の診断ポート１０６０を介して他の装置とデータを送受する。
【００６６】
制御部７１は、メンテナンスツール１２００の制御を行う。記憶部１２０３は、鍵等のデータを記憶する。期待値計算部７３は、ＥＣＵコードについての期待値を計算する。検証部７４は、電子署名等の検証を行う。初期鍵生成部７５は、ＥＣＵの初期鍵を生成する。
【００６７】
制御部７１の機能は、該制御部７１が備えるＣＰＵがコンピュータプログラムを実行することにより実現される。ＩＣチップ１２０２の機能は、該ＩＣチップ１２０２が備えるＣＰＵがコンピュータプログラムを実行することにより実現される。
【００６８】
次に図８を参照して、本実施形態に係るＥＣＵコードの提供の手順の例を説明する。図８は、ＥＣＵコードの提供手順の例を示すシーケンスチャートである。なお、図８に示されるＥＣＵコード提供手順の例では、第２のＥＣＵ１０２０に適用されるＥＣＵコードを例に挙げるが、第１のＥＣＵ１０１０に適用されるＥＣＵコードについても、ＥＣＵコードの適用先が第１のＥＣＵ１０１０になるのみで同様の手順を適用可能である。
【００６９】
図８において、サーバ装置１３００は、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを備える。サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓは、記憶部１２に格納されている。制御モジュール１２０１のＩＣチップ１２０２は、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとを備える。サーバ公開鍵証明書Ｃｅｒｔ＿ｓｖはサーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓに対応する公開鍵証明書である。マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとは、記憶部１２０３に格納されている。
【００７０】
第２のＥＣＵ１０２０のＳＨＥ１０２２は、該第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを備える。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、該第２のＥＣＵ１０２０のＳＨＥ１０２２の記憶部１０２３に格納される。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、予め、該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。例えば、第２のＥＣＵ１０２０の製造時などに、初期鍵Ｋｅｙ＿ｅｃｕが該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。初期鍵Ｋｅｙ＿ｅｃｕの生成方法は、上述の第１実施形態と同じである。
【００７１】
なお、第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕについても、第２のＥＣＵ１０２０と同様に、予め、該第１のＥＣＵ１０１０のＨＳＭ１０１２に格納される。第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕは、該第１のＥＣＵ１０１０のＨＳＭ１０１２の記憶部１０１３に格納される。
【００７２】
（ステップＳ２００）サーバ装置１３００は、自動車１００１へ提供するＥＣＵコードに対して、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを使用して電子署名を付する。サーバ装置１３００の通信部１１は、電子署名付きＥＣＵコードをメンテナンスツール１２００へ送信する。メンテナンスツール１２００は、通信部６１によって該電子署名付きＥＣＵコードを受信する。
【００７３】
（ステップＳ２０１）メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、通信部６１によって受信した電子署名付きＥＣＵコードをＩＣチップ１２０２に渡して電子署名の検証を要求する。ＩＣチップ１２０２の検証部７４は、該電子署名付きＥＣＵコードの電子署名を、記憶部１２０３に格納されているサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖを使用して検証する。ＩＣチップ１２０２は、該電子署名の検証結果を制御部７１へ応答する。制御部７１は、該電子署名の検証が合格である場合にステップＳ２０２以降に処理を進める。一方、制御部７１は、該電子署名の検証が不合格である場合には当該ＥＣＵコードの提供を停止する。なお、自動車１００１へ提供するＥＣＵコードの正当性が確かである場合には、該電子署名の検証はなくてもよい。
【００７４】
（ステップＳ２０２）メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤの要求メッセージ（ＥＣＵ識別子要求メッセージ）を、診断ポートインタフェース６２を介して自動車１００１へ送信する。自動車１００１において、診断ポート１０６０を介して第１のＥＣＵ１０１０により受信されたＥＣＵ識別子要求メッセージは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【００７５】
（ステップＳ２０３）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵ識別子要求メッセージを受信すると、自己のＥＣＵ識別子ＥＣＵ＿ＩＤを返信する。該第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤは、第１のＥＣＵ１０１０を介して診断ポート１０６０からメンテナンスツール１２００へ送信される。メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、診断ポート１０６０を介して自動車１００１から送信されたＥＣＵ識別子ＥＣＵ＿ＩＤ、すなわちＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを、診断ポートインタフェース６２を介して受信する。
【００７６】
なお、メンテナンスツール１２００が、予め、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得する場合には、上述したステップＳ２０２とステップＳ２０３は不要である。例えば、サーバ装置１３００が自動車１００１の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤのリストを管理している場合には、メンテナンスツール１２００は、サーバ装置１３００の該リストから、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得してもよい。
【００７７】
（ステップＳ２０４）メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤをＩＣチップ１２０２に渡して初期鍵Ｋｅｙ＿ｅｃｕの生成を要求する。ＩＣチップ１２０２の初期鍵生成部７５は、記憶部１２０３に格納されているマスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤとを使用して、該ＥＣＵコードの適用先の第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを生成する。
【００７８】
（ステップＳ２０５）制御部７１は、自動車１００１へ提供するＥＣＵコードをＩＣチップ１２０２へ渡して期待値の計算を要求する。ＩＣチップ１２０２の期待値計算部７３は、初期鍵生成部７５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードの期待値を計算する。本実施形態では、期待値の一例として、ＣＭＡＣを使用する。よって、期待値計算部７３は、初期鍵生成部７５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードのＣＭＡＣを計算する。ＩＣチップ１２０２は、期待値計算部７３が計算したＣＭＡＣを制御部７１へ渡す。
【００７９】
（ステップＳ２０６）メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、ＥＣＵコードとＩＣチップ１２０２が計算した該ＥＣＵコードのＣＭＡＣとを、診断ポートインタフェース６２を介して自動車１００１へ送信する。自動車１００１において、診断ポート１０６０を介して第１のＥＣＵ１０１０により受信されたＥＣＵコードと該ＥＣＵコードのＣＭＡＣとは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【００８０】
次いでステップＳ１０７からステップＳ１１０までが実行される。ステップＳ１０７からステップＳ１１０までは、上述した第１実施形態に係る図５のＥＣＵコード提供手順の例と同じである。ステップＳ１１０に次いでステップＳ２１１が実行される。
【００８１】
（ステップＳ２１１）第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果を第１のＥＣＵ１０１０へ送信する。該セキュアブートにおけるＣＭＡＣの検証結果は、第１のＥＣＵ１０１０を介して診断ポート１０６０からメンテナンスツール１２００へ送信される。メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、診断ポート１０６０を介して自動車１００１から送信されたセキュアブートにおけるＣＭＡＣの検証結果を、診断ポートインタフェース６２を介して受信する。
【００８２】
（ステップＳ２１２）メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、自動車１００１から受信したセキュアブートにおけるＣＭＡＣの検証結果に基づいて、該自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。セキュアブートにおけるＣＭＡＣの検証結果が合格である場合には該ＥＣＵコードの適用が成功であり、セキュアブートにおけるＣＭＡＣの検証結果が不合格である場合には該ＥＣＵコードの適用が失敗である。
【００８３】
なお、第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果に、ステップＳ１０７でＳＨＥ１０２２によって計算したＣＭＡＣを含めてもよい。この場合、メンテナンスツール１２００の制御モジュール１２０１の制御部７１は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをＩＣチップ１２０２へ渡してＣＭＡＣの検証を実施させてもよい。ＩＣチップ１２０２の検証部７４は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣと、ステップＳ２０６で自動車１００１へＥＣＵコードと共に送信した該ＥＣＵコードのＣＭＡＣとを比較し、この比較結果を制御部７１へ応答する。制御部７１は、この比較結果に基づいて該自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。該比較結果が一致である場合には該ＥＣＵコードの適用が成功であり、該比較結果が一致しない場合には該ＥＣＵコードの適用が失敗である。
【００８４】
（ステップＳ２１３）メンテナンスツール１２００の通信部６１は、自動車１００１へ提供したＥＣＵコードの適用の成否の判定結果を、サーバ装置１３００へ送信する。
【００８５】
なお、メンテナンスツール１２００は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをサーバ装置１３００へ送信してもよい。また、サーバ装置１３００は、該セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣの検証を行ってもよい。
【００８６】
上述した第２実施形態によれば、メンテナンスツール１２００がＥＣＵコードの適用先のＥＣＵの初期鍵を生成し、該生成した初期鍵を使用してＥＣＵコードの期待値を生成し、ＥＣＵコードと該生成した期待値とを自動車１００１へ提供する。自動車１００１のＥＣＵは、ＥＣＵコードと共に受信した期待値を自己の初期鍵を使用して検証する。これにより、自動車１００１のＥＣＵに適用されるＥＣＵコードの信頼性を向上させることができる。
【００８７】
第２実施形態において、メンテナンスツール１２００はデータ提供装置に対応し、制御部７１及び診断ポートインタフェース６２は提供部に対応する。また、上述した図８の例において、第２のＥＣＵ１０２０の制御部４１は期待値検証部に対応する。
【００８８】
［第３実施形態］
図９は、本実施形態に係る自動車１００１の構成例を示す図である。本実施形態では、自動車１００１に搭載されるＥＣＵ（電子制御装置）に対して、更新プログラム等のデータを適用する場合を例に挙げて説明する。
【００８９】
図９において、図１の各部に対応する部分には同一の符号を付け、その説明を省略する。図９に示す自動車の構成例において、ＴＣＵ１０５０の通信モジュール１０５１のＳＩＭ１０５２は、鍵等のデータを記憶する記憶部１０５３を備える。なお、ＳＩＭ１０５２として、ｅＳＩＭを使用してもよい。ＳＩＭ及びｅＳＩＭは耐タンパー性を有する。ＳＩＭ及びｅＳＩＭはセキュアエレメントの例である。セキュアエレメントは耐タンパー性を有する。ＳＩＭ及びｅＳＩＭは、コンピュータの一種であり、コンピュータプログラムによって所望の機能を実現する。
【００９０】
サーバ装置１３００は、上述の第１実施形態と同様に、通信回線を介して、自動車１００１のＴＣＵ１０５０の通信モジュール１０５１とデータを送受する。例えば、サーバ装置１３００と通信モジュール１０５１との間をＶＰＮ回線等の専用回線で接続し、該専用回線でデータを送受してもよい。例えば、ＳＩＭ１０５２に対応する無線通信ネットワークによって、ＶＰＮ回線等の専用回線が提供されてもよい。
【００９１】
サーバ装置１３００は、ＥＣＵに適用されるＥＣＵコードを、ＴＣＵ１０５０へ提供する。ＥＣＵコードは、ＥＣＵに適用されるデータの例である。ＥＣＵコードは、ＥＣＵにインストールされる更新プログラム等のコンピュータプログラムであってもよく、又は、ＥＣＵに設定されるパラメータ設定値などの設定データであってもよい。
【００９２】
図１０は、ＴＣＵ１０５０の構成例を示す図である。図１０において、ＴＣＵ１０５０は、インタフェース部８２と通信モジュール１０５１とを備える。通信モジュール１０５１は、無線通信部９１とＳＩＭ１０５２とを備える。ＳＩＭ１０５２は、記憶部１０５３と期待値計算部９３と検証部９４と初期鍵生成部９５とを備える。インタフェース部８２は、第１のＥＣＵ１０１０とデータを送受するインタフェースを備える。無線通信部９１は、無線通信回線を介して、他の装置と通信を行う。
【００９３】
記憶部１０５３は、鍵等のデータを記憶する。期待値計算部９３は、ＥＣＵコードについての期待値を計算する。検証部９４は、電子署名等の検証を行う。初期鍵生成部９５は、ＥＣＵの初期鍵を生成する。
【００９４】
無線通信部９１の機能は、該無線通信部９１が備えるＣＰＵがコンピュータプログラムを実行することにより実現される。ＳＩＭ１０５２の機能は、該ＳＩＭ１０５２が備えるＣＰＵがコンピュータプログラムを実行することにより実現される。
【００９５】
次に図１１を参照して、本実施形態に係るＥＣＵコードの提供の手順の例を説明する。図１１は、ＥＣＵコードの提供手順の例を示すシーケンスチャートである。なお、図１１に示されるＥＣＵコード提供手順の例では、第２のＥＣＵ１０２０に適用されるＥＣＵコードを例に挙げるが、第１のＥＣＵ１０１０に適用されるＥＣＵコードについても、ＥＣＵコードの適用先が第１のＥＣＵ１０１０になるのみで同様の手順を適用可能である。
【００９６】
図１１において、サーバ装置１３００は、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを備える。サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓは、記憶部１２に格納されている。通信モジュール１０５１のＳＩＭ１０５２は、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとを備える。サーバ公開鍵証明書Ｃｅｒｔ＿ｓｖはサーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓに対応する公開鍵証明書である。マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとは、記憶部１０５３に格納されている。
【００９７】
第２のＥＣＵ１０２０のＳＨＥ１０２２は、該第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを備える。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、該第２のＥＣＵ１０２０のＳＨＥ１０２２の記憶部１０２３に格納される。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、予め、該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。例えば、第２のＥＣＵ１０２０の製造時などに、初期鍵Ｋｅｙ＿ｅｃｕが該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。初期鍵Ｋｅｙ＿ｅｃｕの生成方法は、上述の第１実施形態と同じである。
【００９８】
なお、第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕについても、第２のＥＣＵ１０２０と同様に、予め、該第１のＥＣＵ１０１０のＨＳＭ１０１２に格納される。第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕは、該第１のＥＣＵ１０１０のＨＳＭ１０１２の記憶部１０１３に格納される。
【００９９】
（ステップＳ３００）サーバ装置１３００は、自動車１００１へ提供するＥＣＵコードに対して、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを使用して電子署名を付する。サーバ装置１３００の通信部１１は、電子署名付きＥＣＵコードを自動車１００１の通信モジュール１０５１へ送信する。自動車１００１の通信モジュール１０５１は、無線通信部９１によって該電子署名付きＥＣＵコードを受信する。
【０１００】
（ステップＳ３０１）通信モジュール１０５１の無線通信部９１は、サーバ装置１３００から受信した電子署名付きＥＣＵコードをＳＩＭ１０５２に渡して電子署名の検証を要求する。ＳＩＭ１０５２の検証部９４は、該電子署名付きＥＣＵコードの電子署名を、記憶部１０５３に格納されているサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖを使用して検証する。ＳＩＭ１０５２は、該電子署名の検証結果を無線通信部９１へ応答する。無線通信部９１は、該電子署名の検証が合格である場合にステップＳ３０２以降に処理を進める。一方、無線通信部９１は、該電子署名の検証が不合格である場合には当該ＥＣＵコードの提供を停止する。なお、自動車１００１へ提供するＥＣＵコードの正当性が確かである場合には、該電子署名の検証はなくてもよい。
【０１０１】
（ステップＳ３０２）通信モジュール１０５１の無線通信部９１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤの要求メッセージ（ＥＣＵ識別子要求メッセージ）を、インタフェース部８２を介して第１のＥＣＵ１０１０へ送信する。第１のＥＣＵ１０１０により受信されたＥＣＵ識別子要求メッセージは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【０１０２】
（ステップＳ３０３）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵ識別子要求メッセージを受信すると、自己のＥＣＵ識別子ＥＣＵ＿ＩＤを返信する。該第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤは、第１のＥＣＵ１０１０を介してＴＣＵ１０５０へ送信される。通信モジュール１０５１の無線通信部９１は、インタフェース部８２を介してＥＣＵ識別子ＥＣＵ＿ＩＤ、すなわちＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを受信する。
【０１０３】
なお、ＴＣＵ１０５０が、予め、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得する場合には、上述したステップＳ３０２とステップＳ３０３は不要である。例えば、サーバ装置１３００が自動車１００１の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤのリストを管理している場合には、ＴＣＵ１０５０は、サーバ装置１３００の該リストから、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得してもよい。
【０１０４】
（ステップＳ３０４）通信モジュール１０５１の無線通信部９１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤをＳＩＭ１０５２に渡して初期鍵Ｋｅｙ＿ｅｃｕの生成を要求する。ＳＩＭ１０５２の初期鍵生成部９５は、記憶部１０５３に格納されているマスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤとを使用して、該ＥＣＵコードの適用先の第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを生成する。
【０１０５】
（ステップＳ３０５）無線通信部９１は、自動車１００１へ提供するＥＣＵコードをＳＩＭ１０５２へ渡して期待値の計算を要求する。ＳＩＭ１０５２の期待値計算部９３は、初期鍵生成部９５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードの期待値を計算する。本実施形態では、期待値の一例として、ＣＭＡＣを使用する。よって、期待値計算部９３は、初期鍵生成部９５が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードのＣＭＡＣを計算する。ＳＩＭ１０５２は、期待値計算部９３が計算したＣＭＡＣを無線通信部９１へ渡す。
【０１０６】
（ステップＳ３０６）無線通信部９１は、ＥＣＵコードとＳＩＭ１０５２が計算した該ＥＣＵコードのＣＭＡＣとを、インタフェース部８２を介して第１のＥＣＵ１０１０へ送信する。第１のＥＣＵ１０１０により受信されたＥＣＵコードと該ＥＣＵコードのＣＭＡＣとは、第１のＥＣＵ１０１０を介してＥＣＵコードの適用先の第２のＥＣＵ１０２０へ転送される。
【０１０７】
次いでステップＳ１０７からステップＳ１１０までが実行される。ステップＳ１０７からステップＳ１１０までは、上述した第１実施形態に係る図５のＥＣＵコード提供手順の例と同じである。ステップＳ１１０に次いでステップＳ３１１が実行される。
【０１０８】
（ステップＳ３１１）第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果を第１のＥＣＵ１０１０へ送信する。該セキュアブートにおけるＣＭＡＣの検証結果は、第１のＥＣＵ１０１０を介してＴＣＵ１０５０へ送信される。ＴＣＵ１０５０の通信モジュール１０５１の無線通信部９１は、第１のＥＣＵ１０１０から送信されたセキュアブートにおけるＣＭＡＣの検証結果を、インタフェース部８２を介して受信する。
【０１０９】
（ステップＳ３１２）ＴＣＵ１０５０の通信モジュール１０５１の無線通信部９１は、第１のＥＣＵ１０１０から受信したセキュアブートにおけるＣＭＡＣの検証結果に基づいて、自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。セキュアブートにおけるＣＭＡＣの検証結果が合格である場合には該ＥＣＵコードの適用が成功であり、セキュアブートにおけるＣＭＡＣの検証結果が不合格である場合には該ＥＣＵコードの適用が失敗である。
【０１１０】
なお、第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果に、ステップＳ１０７でＳＨＥ１０２２によって計算したＣＭＡＣを含めてもよい。この場合、無線通信部９１は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをＳＩＭ１０５２へ渡してＣＭＡＣの検証を実施させてもよい。ＳＩＭ１０５２の検証部９４は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣと、ステップＳ３０６でＥＣＵコードと共に送信した該ＥＣＵコードのＣＭＡＣとを比較し、この比較結果を無線通信部９１へ応答する。無線通信部９１は、この比較結果に基づいて自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。該比較結果が一致である場合には該ＥＣＵコードの適用が成功であり、該比較結果が一致しない場合には該ＥＣＵコードの適用が失敗である。
【０１１１】
（ステップＳ３１３）無線通信部９１は、自動車１００１へ提供したＥＣＵコードの適用の成否の判定結果を、サーバ装置１３００へ送信する。
【０１１２】
なお、無線通信部９１は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをサーバ装置１３００へ送信してもよい。また、サーバ装置１３００は、該セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣの検証を行ってもよい。
【０１１３】
上述した第３実施形態によれば、通信モジュール１０５１がＥＣＵコードの適用先のＥＣＵの初期鍵を生成し、該生成した初期鍵を使用してＥＣＵコードの期待値を生成し、ＥＣＵコードと該生成した期待値とを自動車１００１へ提供する。自動車１００１のＥＣＵは、ＥＣＵコードと共に受信した期待値を自己の初期鍵を使用して検証する。これにより、自動車１００１のＥＣＵに適用されるＥＣＵコードの信頼性を向上させることができる。
【０１１４】
第３実施形態において、ＴＣＵ１０５０はデータ提供装置に対応し、無線通信部９１及びインタフェース部８２は提供部に対応する。また、上述した図１１の例において、第２のＥＣＵ１０２０の制御部４１は期待値検証部に対応する。
【０１１５】
［第４実施形態］
本実施形態において、自動車１００１の構成例は図１を適用できる。図１２は、本実施形態に係る第１のＥＣＵ１０１０の構成例を示す図である。図１２において、図３の各部に対応する部分には同一の符号を付け、その説明を省略する。図１２に示す第１のＥＣＵ１０１０において、ＨＳＭ１０１２は、図３の構成に加えてさらに初期鍵生成部３３を備える。初期鍵生成部３３は、ＥＣＵの初期鍵を生成する。
【０１１６】
次に図１３を参照して、本実施形態に係るＥＣＵコードの提供の手順の例を説明する。図１３は、ＥＣＵコードの提供手順の例を示すシーケンスチャートである。なお、図１３に示されるＥＣＵコード提供手順の例では、第２のＥＣＵ１０２０に適用されるＥＣＵコードを例に挙げるが、第１のＥＣＵ１０１０に適用されるＥＣＵコードについても、ＥＣＵコードの適用先が第１のＥＣＵ１０１０になるのみで同様の手順を適用可能である。
【０１１７】
図１３において、サーバ装置１３００は、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを備える。サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓは、記憶部１２に格納されている。第１のＥＣＵ１０１０のＨＳＭ１０１２は、マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとを備える。サーバ公開鍵証明書Ｃｅｒｔ＿ｓｖはサーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓに対応する公開鍵証明書である。マスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔとサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖとは、記憶部１０１３に格納されている。
【０１１８】
第２のＥＣＵ１０２０のＳＨＥ１０２２は、該第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを備える。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、該第２のＥＣＵ１０２０のＳＨＥ１０２２の記憶部１０２３に格納される。第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕは、予め、該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。例えば、第２のＥＣＵ１０２０の製造時などに、初期鍵Ｋｅｙ＿ｅｃｕが該第２のＥＣＵ１０２０のＳＨＥ１０２２に書き込まれる。初期鍵Ｋｅｙ＿ｅｃｕの生成方法は、上述の第１実施形態と同じである。
【０１１９】
なお、第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕについても、第２のＥＣＵ１０２０と同様に、予め、該第１のＥＣＵ１０１０のＨＳＭ１０１２に格納される。第１のＥＣＵ１０１０の初期鍵Ｋｅｙ＿ｅｃｕは、該第１のＥＣＵ１０１０のＨＳＭ１０１２の記憶部１０１３に格納される。
【０１２０】
（ステップＳ４００）サーバ装置１３００は、自動車１００１へ提供するＥＣＵコードに対して、サーバ秘密鍵Ｋｅｙ＿ｓｖ＿ｓを使用して電子署名を付する。サーバ装置１３００の通信部１１は、電子署名付きＥＣＵコードを自動車１００１の通信モジュール１０５１へ送信する。自動車１００１の通信モジュール１０５１は、該サーバ装置１３００から受信した電子署名付きＥＣＵコードを第１のＥＣＵ１０１０へ転送する。
【０１２１】
（ステップＳ４０１）第１のＥＣＵ１０１０の制御部２１は、通信モジュール１０５１から受信した電子署名付きＥＣＵコードをＨＳＭ１０１２に渡して電子署名の検証を要求する。ＨＳＭ１０１２の検証部３２は、該電子署名付きＥＣＵコードの電子署名を、記憶部１０１３に格納されているサーバ公開鍵証明書Ｃｅｒｔ＿ｓｖを使用して検証する。ＨＳＭ１０１２は、該電子署名の検証結果を制御部２１へ応答する。制御部２１は、該電子署名の検証が合格である場合にステップＳ４０２以降に処理を進める。一方、制御部２１は、該電子署名の検証が不合格である場合には当該ＥＣＵコードの提供を停止する。なお、自動車１００１へ提供するＥＣＵコードの正当性が確かである場合には、該電子署名の検証はなくてもよい。
【０１２２】
（ステップＳ４０２）第１のＥＣＵ１０１０の制御部２１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤの要求メッセージ（ＥＣＵ識別子要求メッセージ）を、インタフェース部２０を介して該ＥＣＵコードの適用先の第２のＥＣＵ１０２０へ送信する。
【０１２３】
（ステップＳ４０３）第２のＥＣＵ１０２０の制御部４１は、ＥＣＵ識別子要求メッセージを受信すると、自己のＥＣＵ識別子ＥＣＵ＿ＩＤを第１のＥＣＵ１０１０へ返信する。第１のＥＣＵ１０１０の制御部２１は、インタフェース部２０を介してＥＣＵ識別子ＥＣＵ＿ＩＤ、すなわちＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを受信する。
【０１２４】
なお、第１のＥＣＵ１０１０が、予め、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得する場合には、上述したステップＳ４０２とステップＳ４０３は不要である。例えば、サーバ装置１３００が自動車１００１の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤのリストを管理している場合には、第１のＥＣＵ１０１０は、サーバ装置１３００の該リストから、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤを取得してもよい。
【０１２５】
（ステップＳ４０４）第１のＥＣＵ１０１０の制御部２１は、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤをＨＳＭ１０１２に渡して初期鍵Ｋｅｙ＿ｅｃｕの生成を要求する。ＨＳＭ１０１２の初期鍵生成部３３は、記憶部１０１３に格納されているマスタ鍵Ｍａｓｔｅｒ＿Ｓｅｃｒｅｔと、ＥＣＵコードの適用先の第２のＥＣＵ１０２０のＥＣＵ識別子ＥＣＵ＿ＩＤとを使用して、該ＥＣＵコードの適用先の第２のＥＣＵ１０２０の初期鍵Ｋｅｙ＿ｅｃｕを生成する。
【０１２６】
（ステップＳ４０５）制御部２１は、自動車１００１へ提供するＥＣＵコードをＨＳＭ１０１２へ渡して期待値の計算を要求する。ＨＳＭ１０１２の期待値計算部３１は、初期鍵生成部３３が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードの期待値を計算する。本実施形態では、期待値の一例として、ＣＭＡＣを使用する。よって、期待値計算部３１は、初期鍵生成部３３が生成した初期鍵Ｋｅｙ＿ｅｃｕを使用して、自動車１００１へ提供するＥＣＵコードのＣＭＡＣを計算する。ＨＳＭ１０１２は、期待値計算部３１が計算したＣＭＡＣを制御部２１へ渡す。
【０１２７】
（ステップＳ４０６）制御部２１は、ＥＣＵコードとＨＳＭ１０１２が計算した該ＥＣＵコードのＣＭＡＣとを、インタフェース部２０を介して該ＥＣＵコードの適用先の第２のＥＣＵ１０２０へ送信する。
【０１２８】
次いでステップＳ１０７からステップＳ１１０までが実行される。ステップＳ１０７からステップＳ１１０までは、上述した第１実施形態に係る図５のＥＣＵコード提供手順の例と同じである。ステップＳ１１０に次いでステップＳ４１１が実行される。
【０１２９】
（ステップＳ４１１）第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果を第１のＥＣＵ１０１０へ送信する。
【０１３０】
（ステップＳ４１２）第１のＥＣＵ１０１０の制御部２１は、第２のＥＣＵ１０２０から受信したセキュアブートにおけるＣＭＡＣの検証結果に基づいて、自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。セキュアブートにおけるＣＭＡＣの検証結果が合格である場合には該ＥＣＵコードの適用が成功であり、セキュアブートにおけるＣＭＡＣの検証結果が不合格である場合には該ＥＣＵコードの適用が失敗である。
【０１３１】
なお、第２のＥＣＵ１０２０の制御部４１は、セキュアブートにおけるＣＭＡＣの検証結果に、ステップＳ１０７でＳＨＥ１０２２によって計算したＣＭＡＣを含めてもよい。この場合、第１のＥＣＵ１０１０の制御部２１は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをＨＳＭ１０１２へ渡してＣＭＡＣの検証を実施させてもよい。ＨＳＭ１０１２の検証部３２は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣと、ステップＳ４０６でＥＣＵコードと共に送信した該ＥＣＵコードのＣＭＡＣとを比較し、この比較結果を制御部２１へ応答する。制御部２１は、この比較結果に基づいて自動車１００１へ提供したＥＣＵコードの適用の成否を判定する。該比較結果が一致である場合には該ＥＣＵコードの適用が成功であり、該比較結果が一致しない場合には該ＥＣＵコードの適用が失敗である。
【０１３２】
（ステップＳ４１３）第１のＥＣＵ１０１０の制御部２１は、自動車１００１へ提供したＥＣＵコードの適用の成否の判定結果を、ＴＣＵ１０５０の通信モジュール１０５１を介してサーバ装置１３００へ送信する。
【０１３３】
なお、第１のＥＣＵ１０１０の制御部２１は、セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣをサーバ装置１３００へ送信してもよい。また、サーバ装置１３００は、該セキュアブートにおけるＣＭＡＣの検証結果に含まれるＣＭＡＣの検証を行ってもよい。
【０１３４】
上述した第４実施形態によれば、第１のＥＣＵ１０１０がＥＣＵコードの適用先のＥＣＵの初期鍵を生成し、該生成した初期鍵を使用してＥＣＵコードの期待値を生成し、ＥＣＵコードと該生成した期待値とを自動車１００１へ提供する。自動車１００１のＥＣＵは、ＥＣＵコードと共に受信した期待値を自己の初期鍵を使用して検証する。これにより、自動車１００１のＥＣＵに適用されるＥＣＵコードの信頼性を向上させることができる。
【０１３５】
第４実施形態において、第１のＥＣＵ１０１０はデータ提供装置に対応し、制御部２１及びインタフェース部２０は提供部に対応する。また、上述した図１３の例において、第２のＥＣＵ１０２０の制御部４１は期待値検証部に対応する。
【０１３６】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０１３７】
なお、第１のＥＣＵ１０１０が備える暗号処理部は、ＨＳＭ１０１２に限定されない。第１のＥＣＵ１０１０が備える暗号処理部として、例えば「ＴＰＭ（Trusted Platform Module）ｆ」と呼ばれる暗号処理チップを使用してもよい。ＴＰＭｆは耐タンパー性を有する。ＴＰＭｆはセキュアエレメントの例である。
【０１３８】
また、第２のＥＣＵ１０２０が備える暗号処理部は、ＳＨＥ１０２２に限定されない。第２のＥＣＵ１０２０が備える暗号処理部として、例えば「ＴＰＭｔ」と呼ばれる暗号処理チップを使用してもよい。ＴＰＭｔは耐タンパー性を有する。ＴＰＭｔはセキュアエレメントの例である。
【０１３９】
上述した実施形態では、車両として自動車を例に挙げたが、原動機付自転車や鉄道車両等の自動車以外の他の車両にも適用可能である。
【０１４０】
また、上述したサーバ装置、メンテナンスツール、又は自動車に備わる各装置の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disc）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【０１４１】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１４２】
１１，６１…通信部、１２，２２，４２…記憶部、１３，３１，５１，７３，９３…期待値計算部、１４，３２，５２，７４，９４…検証部、１５，３３，７５，９５…初期鍵生成部、２１，４１，７１…制御部、９１…無線通信部、１００１…自動車、１００２…車載コンピュータシステム、１０１０…第１のＥＣＵ、１０１１，１０２１…メイン演算器、１０１２…ＨＳＭ、１０１３，１０２３，１０５３，１２０３…記憶部、１０２０…第２のＥＣＵ、１０２２…ＳＨＥ、１０３０…ＣＡＮ、１０４０…インフォテイメント機器、１０５０…ＴＣＵ、１０５１…通信モジュール、１０５２…ＳＩＭ、１０６０…診断ポート、１０６５…診断端末、１２００…メンテナンスツール、１２０１…制御モジュール、１２０２…ＩＣチップ、１３００…サーバ装置
【図１】
2018006782.tif 000003
【図２】
2018006782.tif 000004
【図３】
2018006782.tif 000005
【図４】
2018006782.tif 000006
【図５】
2018006782.tif 000007
【図６】
2018006782.tif 000008
【図７】
2018006782.tif 000009
【図８】
2018006782.tif 000010
【図９】
2018006782.tif 000011
【図１０】
2018006782.tif 000012
【図１１】
2018006782.tif 000013
【図１２】
2018006782.tif 000014
【図１３】
2018006782.tif 000015
【手続補正書】
【提出日】平成29年7月31日(2017.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
車両に搭載される車載コンピュータと、データ提供装置と、を備え、
前記車載コンピュータは、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部を備え、
前記データ提供装置は、
前記マスタ鍵を記憶する第２記憶部と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、
前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、を備え、
前記車載コンピュータは、
前記提供部から提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、
前記提供部から提供された前記期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、を備える、
データ提供システム。
【請求項２】
前記提供部は、前記データと前記期待値とを、通信回線を介して前記車両へ送信する、
請求項１に記載のデータ提供システム。
【請求項３】
前記提供部は、前記データと前記期待値とを、前記車両の診断ポートを介して前記車両へ送信する、
請求項１に記載のデータ提供システム。
【請求項４】
前記データ提供装置は前記車両に備わる、
請求項１に記載のデータ提供システム。
【請求項５】
前記データ提供装置は、前記車両に備わる通信装置である、
請求項１に記載のデータ提供システム。
【請求項６】
前記データ提供装置は、前記車両に備わる車載コンピュータである、
請求項１に記載のデータ提供システム。
【請求項７】
前記車載コンピュータに適用される前記データは、前記車載コンピュータにインストールされるコンピュータプログラムである、
請求項１から６のいずれか１項に記載のデータ提供システム。
【請求項８】
車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶部と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成部と、
前記初期鍵生成部が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算部と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算部が計算した前記期待値とを前記車両へ提供する提供部と、
を備えるデータ提供装置。
【請求項９】
車両に搭載される車載コンピュータにおいて、
マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶部と、
請求項８に記載のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算部と、
前記提供部から前記データと共に提供された期待値と、前記第２期待値計算部が計算した前記期待値とを比較する期待値検証部と、
を備える車載コンピュータ。
【請求項１０】
車両に搭載される車載コンピュータと、データ提供装置と、を備えるデータ提供システムのデータ提供方法であって、
前記車載コンピュータが、マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を第１記憶部に記憶する第１記憶ステップと、
前記データ提供装置が、前記マスタ鍵を第２記憶部に記憶する第２記憶ステップと、
前記データ提供装置が、前記車載コンピュータの車載コンピュータ識別子と前記第２記憶部に記憶されている前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成ステップと、
前記データ提供装置が、前記初期鍵生成ステップにより生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算ステップと、
前記データ提供装置が、前記車載コンピュータに適用されるデータと、前記第１期待値計算ステップにより計算した前記期待値とを前記車両へ提供する提供ステップと、
前記車載コンピュータが、前記提供ステップにより提供された前記データの期待値を、前記第１記憶部に記憶されている前記初期鍵を使用して計算する第２期待値計算ステップと、
前記車載コンピュータが、前記提供ステップにより提供された前記期待値と、前記第２期待値計算ステップにより計算した前記期待値とを比較する期待値検証ステップと、
を含むデータ提供方法。
【請求項１１】
データ提供装置のコンピュータに、
車両に搭載される車載コンピュータに備わる初期鍵の生成において前記車載コンピュータの車載コンピュータ識別子と共に使用されるマスタ鍵を記憶する第２記憶機能と、
前記車載コンピュータの車載コンピュータ識別子と前記第２記憶機能が記憶している前記マスタ鍵とから前記車載コンピュータの初期鍵を生成する初期鍵生成機能と、
前記初期鍵生成機能が生成した前記車載コンピュータの初期鍵を使用して、前記車載コンピュータに適用されるデータの期待値を計算する第１期待値計算機能と、
前記車載コンピュータに適用されるデータと、前記第１期待値計算機能が計算した前記期待値とを前記車両へ提供する提供機能と、
を実現させるためのコンピュータプログラム。
【請求項１２】
車両に搭載される車載コンピュータに、
マスタ鍵と自己の車載コンピュータ識別子とから生成された初期鍵を記憶する第１記憶機能と、
請求項８に記載のデータ提供装置の提供部から提供されたデータの期待値を、前記第１記憶機能が記憶している前記初期鍵を使用して計算する第２期待値計算機能と、
前記提供部から前記データと共に提供された期待値と、前記第２期待値計算機能が計算した前記期待値とを比較する期待値検証機能と、
を実現させるためのコンピュータプログラム。