(57)【要約】      （修正有）【課題】車両装置が安全に効率よく配布対象データを取得できる技術を提供する。【解決手段】第１ＥＣＵ１５と、第２ＥＣＵ２５Ａと、サーバ５５と、を備える、配布システム１００である。第１ＥＣＵは、サーバから更新プログラムの配布を受けられない場合に、第２ＥＣＵから更新プログラムをダウンロードする。サーバは、サーバが所有する更新プログラムにおける第１ＥＣＵによりダウンロードされた範囲から、予め決められた算出手順で第１ＭＡＣ値を算出し、第１ＥＣＵへ送信する。第１ＥＣＵは、ダウンロードした更新プログラムの範囲から、第１ＭＡＣ値の算出と同じ算出手順で第２ＭＡＣ値を算出し、第１ＭＡＣ値と第２ＭＡＣ値とを比較して、ダウンロードした更新プログラムの改ざんを検知する。【選択図】図１
2019139473.tif 000002
【特許請求の範囲】
【請求項１】
車両に搭載された車両装置（１５）へ配布対象データを配布する配布対象データの配布システム（１００）であって、
第１車両（１０）に搭載された第１車両装置（１５）と、少なくとも１台の第２車両（２０）に搭載された第２車両装置（２５）と、センタ（５０）に設置されたサーバ（５５）と、を備え、
前記第１車両装置は、
前記サーバから前記配布対象データの配布を受けられない場合に、前記第２車両装置から前記配布対象データの少なくとも一部分をダウンロードするダウンロード部（Ｓ１９，Ｓ２００，Ｓ５６０）と、
前記ダウンロード部によりダウンロードされたデータ量に関するダウンロード情報を前記サーバへ送信するダウンロード情報送信部（Ｓ２０，Ｓ２２０）と、を備え、
前記サーバは、
前記ダウンロード情報送信部により送信された前記ダウンロード情報を用いて、前記配布対象データにおいて前記ダウンロード部によりダウンロードされた範囲を特定する特定部（Ｓ２１，Ｓ３７０）と、
前記サーバが所有する前記配布対象データにおいて前記特定部により特定された前記範囲から、前記配布対象データの改ざんを検知するための第１検知用情報を、予め決められた算出手順で算出し、算出した前記第１検知用情報を前記第１車両装置へ送信する検知情報送信部（Ｓ２３，Ｓ３８０，Ｓ３９０）と、を備え、
前記第１車両装置は、更に、
前記ダウンロード部によりダウンロードされた前記配布対象データの範囲から、前記算出手順で第２検知用情報を算出し、前記検知情報送信部により送信された前記第１検知用情報と、算出した前記第２検知用情報とを比較して、前記ダウンロード部によりダウンロードされた前記配布対象データの改ざんを検知する改ざん検知部（Ｓ２５，Ｓ２４０）を備える、
配布対象データの配布システム。
【請求項２】
前記ダウンロード情報送信部は、前記ダウンロード部が前記配布対象データをダウンロードしている途中で、前記第１車両装置と前記第２車両装置との通信が途絶した場合には、前記第１車両装置と前記第２車両装置との通信開始から通信途絶までの通信期間に、前記ダウンロード部によりダウンロードされたデータ量に関する前記ダウンロード情報を、前記サーバへ送信し、
前記改ざん検知部は、前記通信期間に前記ダウンロード部によりダウンロードされた前記配布対象データの範囲から、前記算出手順で前記第２検知用情報を算出する、
請求項１に記載の配布対象データの配布システム。
【請求項３】
前記第１車両装置は、前記ダウンロード部が前記配布対象データをダウンロードしている途中で、前記第１車両装置と前記第２車両装置との通信が途絶した場合に、前記サーバ及び前記第２車両装置の中から、前記配布対象データの新たなダウンロード先を探索する探索部（Ｓ２，Ｓ１１，Ｓ１１０，Ｓ１６０）を備える、
請求項１又は２に記載の配布対象データの配布システム。
【請求項４】
前記第１車両装置は、前記サーバから前記配布対象データの配布を受けられない場合に、前記配布対象データの所有を確認するための確認要求を前記第２車両装置へ送信する要求送信部（Ｓ１１，Ｓ１６０）を備え、
前記第２車両装置は、前記要求送信部から送信された前記確認要求を受信した際に、該当する前記配布対象データを所有している場合には、前記第２車両の進行方向、前記第２車両の車速、前記第２車両の位置座標、及び送信時刻を含む選定用情報を前記第１車両装置へ送信する選定用情報送信部（Ｓ１４，Ｓ５４０）を備える、
請求項１〜３のいずれか１項に記載の配布対象データの配布システム。
【請求項５】
前記少なくとも１台の第２車両に搭載された前記第２車両装置は、互いに異なる前記第２車両に搭載された複数の前記第２車両装置を含み、
前記第１車両装置は、前記複数の第２車両装置の前記選定用情報送信部によって送信された前記選定用情報に基づいて、前記複数の第２車両装置の中から最も多くのデータ量をダウンロード可能な前記第２車両装置を、前記配布対象データのダウンロード先として選択する選択部（Ｓ１５，Ｓ１７，Ｓ１９０）を備える、
請求項４に記載の配布対象データの配布システム。
【請求項６】
前記第１車両装置は、前記配布対象データの配布元の一覧を含む通信対象選定リストを備える、
請求項１〜５のいずれか１項に記載の配布対象データの配布システム。
【請求項７】
前記第１車両装置は、前記配布対象データを所有する配布元を認識した場合に、前記通信対象選定リストを更新する更新部（Ｓ６，Ｓ１６）を備える、
請求項６に記載の配布対象データの配布システム。
【請求項８】
前記第１車両装置は、公開鍵を生成して前記サーバへ送信する公開鍵送信部（Ｓ７）を備え、
前記検知情報送信部は、前記公開鍵を用いて暗号化した前記第１検知用情報を前記第１車両装置へ送信し、
前記改ざん検知部は、前記公開鍵と対になっているプライベート鍵を用いて、前記検知情報送信部から送信された前記第１検知用情報を復号化する、
請求項１〜７のいずれか１項に記載の配布対象データの配布システム。
【請求項９】
前記サーバは、前記サーバと前記第１車両装置との間に限って共有される共有鍵を前記第１車両装置へ送信する共有鍵送信部（Ｓ９，Ｓ３５０）を備え、
前記検知情報送信部は、前記第１検知用情報として、前記共有鍵を用いて、前記サーバが所有する前記配布対象データのうちの前記特定部により特定された前記範囲からＭＡＣ値を生成し、
前記改ざん検知部は、前記第２検知用情報として、前記共有鍵送信部から送信された前記共有鍵を用いて、前記ダウンロード部によりダウンロードされた前記配布対象データの範囲からＭＡＣ値を生成する、
請求項１〜８のいずれか１項に記載の配布対象データの配布システム。
【請求項１０】
前記第１車両装置は、公開鍵を生成して前記サーバへ送信する公開鍵送信部（Ｓ７）を備え、
前記共有鍵送信部は、前記公開鍵送信部によって送信された前記公開鍵を用いて暗号化した前記共有鍵を前記第１車両装置へ送信し、
前記改ざん検知部は、前記公開鍵と対になっているプライベート鍵を用いて、前記共有鍵送信部から送信された前記共有鍵を復号化し、復号化した前記共有鍵を用いる、
請求項９に記載の配布対象データの配布システム。
【請求項１１】
第１車両（１０）に搭載された第１車両装置（１５）と、少なくとも１台の第２車両（２０）に搭載された第２車両装置（２５）と、センタ（５０）に設置されたサーバ（５５）と、を備えるシステム（１００）において、前記第１車両装置が配布対象データを取得する配布対象データの取得方法であって、
前記サーバから配布対象データの配布を受けられない場合に、前記第２車両装置から配布対象データの少なくとも一部をダウンロードすること（Ｓ１９，Ｓ２００，Ｓ５６０）と、
ダウロードしたデータ量に関するダウンロード情報を前記サーバへ送信すること（Ｓ２０，Ｓ２２０）と、
前記サーバが所有する前記配布対象データにおいて前記ダウンロード情報により特定された範囲から、予め決められた算出手順で前記サーバにより算出された、第１検知用情報を受信すること（Ｓ２３，Ｓ２３０）と、
前記ダウンロードした前記配布対象データの範囲から前記算出手順で第２検知用情報を算出し、受信した前記第１検知用情報と算出した前記第２検知用情報とを比較して、ダウンロードした前記配布対象データの改ざんを検知すること（Ｓ２５，Ｓ２４０）と、を備える、
配布対象データの取得方法。
【請求項１２】
前記配布対象データをダウンロードしている途中で通信が途絶した場合に、前記ダウンロード情報として、通信開始から通信途絶までの通信期間にダウンロードした前記データに関する情報を送信し、前記通信期間にダウンロードした前記配布対象データの範囲から、前記算出手順で前記第２検知用情報を算出する、
請求項１１に記載の配布対象データの取得方法。
【請求項１３】
前記配布対象データをダウンロードしている途中で通信が途絶した場合に、前記サーバ及び前記第２車両装置の中から、前記配布対象データの新たなダウンロード先を探索すること（Ｓ２，Ｓ１１，Ｓ１１０，Ｓ１６０）、を備える、
請求項１１又は１２に記載の配布対象データの取得方法。
【請求項１４】
前記サーバから配布対象データの配布を受けられない場合に、前記配布対象データの所有を確認するための確認要求を前記第２車両装置へ送信すること（Ｓ１１，Ｓ１６０）と、
前記配布対象データを所有している前記第２車両装置から、前記確認要求に応じて送信された、前記第２車両の進行方向、前記第２車両の車速、前記第２車両の位置座標、及び送信時刻を含む選定用情報を受信すること（Ｓ１４，Ｓ１８０）と、を備える、
請求項１１〜１３のいずれか１項に記載の配布対象データの取得方法。
【請求項１５】
前記少なくとも１台の第２車両に搭載された前記第２車両装置は、互いに異なる前記第２車両に搭載された複数の前記第２車両装置を含み、
受信した前記選定用情報に基づいて、前記複数の第２車両装置の中から最も多くのデータ量をダウンロード可能な前記第２車両装置を、前記配布対象データのダウンロード先として選択すること（Ｓ１５，Ｓ１７，Ｓ１９０）を備える、
請求項１４に記載の配布対象データの取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、車両装置が配布対象データを取得する技術に関する。
【背景技術】
【０００２】
近年、センタのサーバと、車両装置との間で通信するサービスが増加しているため、サーバの通信負荷が増大している。ひいては、車両装置がサーバから配布対象データをダウンロードする際に、ダウンロード時間が増加している。
【０００３】
そこで、特許文献１には、配布対象データのダウンロード時間を短縮するために、車両装置間の通信を用いる技術が記載されている。特許文献１に記載の技術では、配布対象データを所有していない車両装置が、配布対象データを所有している他の車両装置から配布対象データをダウンロードする。特許文献１に記載の技術では、配布先の車両装置は、複数の配布元の車両装置と順次通信をして、配布対象データを分割した一部分を順次ダウンロードし、すべての配布対象データを取得する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−８１５４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術では、配布先の車両装置が、ある車両装置から配布対象データの一部分をダウンロードした後、別の車両装置から配布対象データの他の一部をダウンロードする際に、別の車両装置に悪意があると、改ざんされた配布対象データがダウンロードされるおそれがある。配布対象データが改ざんされると、配布対象データをダウンロードした車両装置に支障が生じるおそれがある。
【０００６】
本開示は、上記実情に鑑みてなされたものであり、車両装置が安全に効率よく配布対象データを取得できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の一態様は、車両に搭載された車両装置（１５）へ配布対象データを配布する配布対象データの配布システム（１００）であって、第１車両装置（１５）と、第２車両装置（２５）と、サーバ（５５）と、を備える。第１車両装置は、第１車両（１０）に搭載される。第２車両装置は、少なくとも１台の第２車両（２０）に搭載される。サーバは、センタ（５０）に設置される。第１車両装置は、ダウンロード部（Ｓ１９，Ｓ２００，Ｓ５６０）と、ダウンロード情報送信部（Ｓ２０，Ｓ２２０）と、を備える。ダウンロード部は、サーバから配布対象データの配布を受けられない場合に、第２車両装置から配布対象データの少なくとも一部分をダウンロードする。ダウンロード情報送信部は、ダウンロード部によりダウンロードされたデータ量に関するダウンロード情報をサーバへ送信する。サーバは、特定部（Ｓ２１，Ｓ３７０）と、検知情報送信部（Ｓ２３，Ｓ３８０，Ｓ３９０）と、を備える。特定部は、情報送信部により送信されたダウンロード情報を用いて、配布対象データにおいてダウンロード部によりダウンロードされた範囲を特定する。検知情報送信部は、サーバが所有する配布対象データにおいて特定部により特定された範囲から、配布対象データの改ざんを検知するための第１検知用情報を、予め決められた算出手順で算出し、算出した第１検知用情報を第１車両装置へ送信する。第１車両装置は、更に、改ざん検知部（Ｓ２５，Ｓ２４０）を備える。改ざん検知部は、ダウンロード部によりダウンロードされた配布対象データの範囲から、算出手順で第２検知用情報を算出し、検知情報送信部により送信された第１検知用情報と、算出した第２検知用情報とを比較して、ダウンロード部によりダウンロードされた配布対象データの改ざんを検知する。
【０００８】
本開示の一態様によれば、第１車両装置は、サーバの高負荷等により、サーバから配布対象データの配布を受けられない場合に、第２車両装置から配布対象データをダウンロードして、効率よく配布対象データを取得することができる。そして、サーバが所有する配布対象データにおける第１車両装置によりダウンロードされた範囲から、予め決められた算出手順で第１検知用情報が算出され、第１車両装置へ送信される。また、第１車両装置によりダウンロードされた配布対象データの範囲から、第１検知情報と同じ算出手順で第２検知用情報が算出される。ダウンロードされた配布対象データが改ざんされていない場合、第１検知用情報と第２検知用情報は一致するが、改ざんされている場合、第１検知用情報と第２検知用情報は一致しない。よって、第１車両装置は、第１検知用情報と第２検知用情報とを比較することで、配布対象データの改ざんを検知することができる。すなわち、第１車両装置は、サーバ以外の第２車両装置から配布対象データをダウンロードした場合でも、その配布対象データの安全性を確認することができる。したがって、第１車両装置は、安全に効率よく配布対象データを取得することができる。
【０００９】
本開示の別の一態様は、第１車両（１０）に搭載された第１車両装置（１５）と、少なくとも１台の第２車両（２０）に搭載された第２車両装置（２５）と、センタ（５０）に設置されたサーバ（５５）と、を備えるシステム（１００）において、第１車両装置が配布対象データを取得する配布対象データの取得方法であって、サーバから配布対象データの配布を受けられない場合に、第２車両装置から配布対象データの少なくとも一部をダウンロードすること（Ｓ１９，Ｓ２００，Ｓ５６０）と、ダウロードしたデータ量に関するダウンロード情報をサーバへ送信すること（Ｓ２０，Ｓ２２０）と、サーバが所有する配布対象データにおいてダウンロード情報により特定された範囲から、予め決められた算出手順でサーバにより算出された、第１検知用情報を受信すること（Ｓ２３，Ｓ２３０）と、ダウンロードした配布対象データの範囲から算出手順で第２検知用情報を算出し、受信した第１検知用情報と算出した第２検知用情報とを比較して、ダウンロードした配布対象データの改ざんを検知すること（Ｓ２５，Ｓ２４０）と、を備える。
【００１０】
本開示の別の一態様によれば、上記配布システムと同様の効果を奏する。
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】更新プログラムの配布システムの構成を示す模式図である。
【図２】第１車両へ更新プログラムを配布する手順を示すシーケンス図である。
【図３】第１車両が更新プログラムを取得する処理手順を示すフローチャートである。
【図４】センタが第１車両へＭＡＣ値を送信する処理手順を示すフローチャートである。
【図５】第２車両が第１車両へ更新プログラムを送信する処理手順を示すフローチャートである。
【図６】ダウンロードされた更新プログラムの範囲ごとにＭＡＣ値を算出することを説明する図である。
【図７】更新プログラムのダウンロード先となる第２車両を示す図である。
【図８】通信対象選定リストの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、発明を実施するための形態を説明する。
＜１．システム構成＞
まず、本実施形態に係る配布対象データの配布システム１００の構成について説明する。配布システム１００は、センタ５０に設置されたサーバ５５と、第１車両１０に搭載されたＥＣＵ１５（以下、第１ＥＣＵ１５）と、第２車両２０Ａ〜２０Ｃに搭載されたＥＣＵ２５Ａ〜２５Ｃ（以下、第２ＥＣＵ２５Ａ〜２５Ｃ）と、を備える。本実施形態に係る配布システム１００は、少なくとも１つの第２ＥＣＵを備えていればよい。
【００１３】
サーバ５５は、ＣＰＵ、ＲＯＭ、ＲＡＭ、メモリ及びＩ／Ｏ等を備えたコンピュータであり、ＣＰＵがＲＯＭ等に記憶されているプログラムを実行することにより、種々の機能を実現する。サーバ５５には、第１車両１０及び第２車両２０Ａ〜２０Ｃを含む複数の車両と無線通信可能な無線通信装置が接続されている。サーバ５５は、無線通信装置を介して各車両と無線通信し、各車両のＥＣＵやナビゲーション装置などの車両装置が利用する各種プログラムを所有して管理している。本実施形態では、サーバ５５が所有している各種のプログラムのうちの１つである更新プログラムＰｎが、配布システム１００における配布対象データである。更新プログラムＰｎは、例えば、ＥＣＵで実行される最新バージョンの車両制御用プログラムである。
【００１４】
第１車両１０、詳しくは、第１ＥＣＵ１５は、配布システム１００における更新プログラムＰｎの配布先である。第１ＥＵＣ１５は、ＣＰＵ、ＲＯＭ、ＲＡＭ、メモリ及びＩ／Ｏ等を備えたマイクロコンピュータを含み、ＣＰＵがＲＯＭ等に記憶されているプログラムを実行することにより、各種の機能を実現する。更新プログラムＰｎは、ＣＰＵにより実行されるプログラムの１つである。また、第１ＥＣＵ１５は、通信対象選定リストを備える。通信対象選定リストには、更新プログラムＰｎなどの第１ＥＣＵ１５が取得する必要があるデータの配布元の一覧が記載されている。第１ＥＣＵ１５には、センタ５０及び第２車両２０Ａ〜２０Ｃと無線通信可能な無線通信装置が接続されており、第１ＥＣＵ１５は無線通信装置を介して、センタ５０や、第２車両２０Ａ〜２０Ｃを含む他車両とデータのやり取りをする。
【００１５】
第２車両２０Ａ〜２０Ｃは、第１車両１０の周辺に存在する第１車両１０以外の車両である。第２ＥＵＣ２５は、ＣＰＵ、ＲＯＭ、ＲＡＭ、メモリ及びＩ／Ｏ等を備えたマイクロコンピュータを含み、ＣＰＵがＲＯＭ等に記憶されているプログラムを実行することにより、各種の機能を実現する。以下では、第２車両２０Ａ〜２０Ｃをまとめて第２車両２０と称し、第２ＥＣＵ２５Ａ〜２５Ｃをまとめて第２ＥＣＵ２５と称する。
【００１６】
複数の第２ＥＣＵ２５の中には、第１ＥＣＵ１５が更新プログラムＰｎを所有していない時に、更新プログラムＰｎをすでに所有している第２ＥＣＵ２５が含まれる。すなわち、複数の第２ＥＣＵ２５の中には、第１ＥＣＵ１５へ更新プログラムＰｎを配布する配布元になり得る第２ＥＣＵ２５が含まれる。また、第２ＥＣＵ２５には、センタ５０及び第１車両１０と無線通信可能な無線通信装置が接続されており、第２ＥＣＵ２５は無線通信装置を介して、センタ５０や、第１車両１０及びその他の第２車両２０を含む他車両とデータのやり取りをする。
【００１７】
＜２．処理＞
＜２−１．システム全体の処理＞
まず、システム全体における更新プログラムを配布する処理の流れの一例について、図２のシーケンス図を参照して説明する。以下では、説明を理解しやすくするため、サーバ５５、第１ＥＣＵ１５及び第２ＥＣＵ２５を、それぞれが搭載されている場所であるセンタ５０、第１車両１０及び第２車両２０と示す。図２のシーケンス図は、第１車両１０が更新プログラムＰｎを所有しておらず、且つ、センタ５０の通信負荷が高い状況における更新プログラムを配布する処理を示す。
【００１８】
まず、Ｓ１では、センタ５０から第１車両１０へ、更新プログラムＰｎ有り通知が送信される。更新プログラムＰｎ有り通知には、更新プログラムＰｎのＩＤ群及びバージョン群が含まれる。
【００１９】
続いて、Ｓ２では、第１車両１０からセンタ５０へ、更新プログラム配布要求が送信される。
続いて、Ｓ３では、センタ５０が自身の通信負荷を確認し、Ｓ４では、センタ５０から第１車両１０へ配布不可能通知が送信される。配布不可能通知には、更新プログラムＰｎのプログラムサイズ、及び、送信時刻を示すタイムスタンプの情報が含まれる。
【００２０】
続いて、Ｓ５では、第１車両１０が、配信不可能通知に含まれているタイムスタンプの情報すなわち送信時刻と、配信不可能通知の受信時刻とから、センタ５０と第１車両１０との間の通信速度を算出する。
【００２１】
続いて、Ｓ６では、図８に示すように、第１車両１０が、通信対象選定リストにセンタ５０及びセンタ５０との通信速度を追加して、通信対象選定リストを更新する。第１車両１０は、センタ５０から配信不可能通知を受け取っている。しかしながら、更新プログラムＰｎを所有する第２車両２０が存在しない場合や、更新プログラムＰｎを所有する第２車両２０と第１車両１０との間の通信速度が、センタ５０と第１車両１０との間の通信速度よりも遅い場合には、第１車両１０は、再度センタ５０へ配信を要求してもよい。その際、第１車両１０は、センタ５０を追加した通信対象選定リストを利用することができる。
【００２２】
続いて、Ｓ７では、第１車両１０からセンタ５０へ、共有鍵の配布要求及び公開鍵がセンタ５０へ送信される。この公開鍵は第１車両１０により生成された鍵である。
続いて、Ｓ８では、センタ５０が、所有する共有鍵を受信した公開鍵で暗号化する。
【００２３】
続いて、Ｓ９では、センタ５０から第１車両１０へ暗号化された共有鍵が送信される。この共有鍵は、第１車両１０とセンタ５０との間に限って共有される鍵である。つまり、この共有鍵は、第１車両１０とセンタ５０以外には秘密にされるべき鍵である。共有鍵は暗号化されて送信されるため、悪意のある第３者による傍受が抑制される。
【００２４】
センタ５０は、複数種類（例えば、５種類）の共有鍵を所有しており、第１車両１０やその他の車両から共有鍵の配布要求を受信すると、複数種類の共有鍵の中からランダムに選んだ共有鍵を暗号化して送信する。そのため、第１車両１０やその他の車両は、自身以外の車両が受け取った共有鍵がわからない。
【００２５】
続いて、Ｓ１０では、第１車両１０が、センタ５０へ送信した公開鍵と対になっているプライベート鍵を使って、暗号化された共有鍵を復号化し、共有鍵を取得する。
続いて、Ｓ１１では、第１車両１０から第１車両１０の周辺に存在する第２車両２０へ、更新プログラムＰｎの所有確認要求が送信される。この所有確認要求には、更新プログラムＰｎのＩＤ群とそのバージョン群が含まれる。
【００２６】
続いて、Ｓ１２では、第２車両２０は、自身の所有プログラムリストを参照し、更新プログラムＰｎと同じＩＤ且つ同じバージョンのプログラムを所有しているか否か確認する。図１に示すように、所有プログラムリストには、自身が所有するプログラムのＩＤとそのバージョンが記載されている。
【００２７】
続いて、Ｓ１３では、第２車両２０から第１車両１０へ、第２車両２０が更新プログラムＰｎを所有しているか否かに応じて、更新プログラムＰｎの所有通知又は未所有通知が送信される。
【００２８】
続いて、Ｓ１４では、更新プログラムＰｎを所有する第２車両２０から第１車両１０へ、第１車両１０が更新プログラムＰｎのダウンロード先となる通信対象を選定するために必要な選定用情報が送信される。選定用情報には、第２車両２０の進行方向、第２車両２０の車速、第２車両２０の位置座標、及び送信時刻を示すタイムスタンプの情報が含まれる。
【００２９】
続いて、Ｓ１５では、第１車両１０が、更新プログラムＰｎを所有する第２車両２０のそれぞれから受信した選定用情報を用いて、第２車両２０のそれぞれから、相対距離、第２車両２０と第１車両１０との間の通信速度、及びダウンロード可能なデータ量を算出する。通信速度は、選定用情報に含まれているタイプスタンプの情報と、選定用情報の受信時刻とから算出される。ダウンロード可能なデータ量の算出方法については後述する。
【００３０】
続いて、Ｓ１６では、第１車両１０が、図８に示すように、通信対象選定リストに、第１車両１０へ所有通知を送信した第２車両２０、当該第２車両２０の車速及び進行方向、第１車両１０に対する当該第２車両２０との相対距離、当該第２車両２０との通信速度を追加して、通信対象選定リストを更新する。
【００３１】
続いて、Ｓ１７では、第１車両１０が、更新プログラムＰｎを所有する第２車両２０の中から、最も多くのデータ量をダウンロード可能な第２車両２０を、通信対象すなわちダウンロード先として選定する。図２においては、選定された第２車両２０と第１車両１０との間の通信速度は、センタ５０と第１車両１０との間の通信速度よりも速いことを想定している。
【００３２】
続いて、Ｓ１８では、第１車両１０から選定された第２車両２０へ、更新プログラム配布要求が送信される。
続いて、Ｓ１９では、選定された第２車両２０から第１車両１０へ、更新プログラムＰｎが送信される。これにより、第１車両１０は、選定された第２車両２０との通信が途絶するまで、更新プログラムＰｎをダウンロードする。更新プログラムＰｎのすべての範囲がダウンロードされる前に第１車両１０と第２車両２０との通信が途絶した場合、第１車両１０には更新プログラムＰｎの一部分がダウンロードされる。
【００３３】
続いて、Ｓ２０では、第１車両１０からセンタ５０へ、更新プログラムＰｎのうち今回ダウンロードされた範囲ＲαのＭＡＣ値要求が送信される。例えば、図６に示すように、更新プログラムＰｎの最初から途中までの範囲Ｒａが、今回ダウンロードされた範囲Ｒαである場合には、範囲ＲａのＭＡＣ値要求が送信される。また、更新プログラムＰｎの範囲Ｒａに続く範囲Ｒｂが、今回ダウンロードされた範囲Ｒαである場合には、範囲ＲｂのＭＡＣ値要求が送信される。
【００３４】
このＭＡＣ値要求には、今回ダウンロードされた範囲Ｒαのデータ量に関するダウロード情報、具体的には、今回ダウンロードされた範囲ＲαのファイルのサイズＦｓ１が含まれる。
【００３５】
続いて、Ｓ２１では、センタ５０が、ＭＡＣ値要求に含まれるダウンロード情報を用いて、更新プログラムＰｎにおいて、第１車両１０により今回ダウンロードされた範囲Ｒαを特定する。センタ５０は、今回のダウンロード以前に、第１車両１０によって既にダウンロードされている更新プログラムＰｎの範囲について、そのファイルサイズＦｓ０の情報を予め持っている。具体的には、図１に示すように、センタ５０は、各車両の更新プログラムリストを備えている。更新プログラムリストには、車両の識別ＩＤと、車両が所有するプログラムのＩＤと、車両が所有するプログラムのバージョンと、車両が所有するプログラムのファイルサイズと、が対応付けて記載されている。そのため、センタ５０は、ＭＡＣ値要求に含まれているファイルサイズＦｓ１を用いて、更新プログラムＰｎにおける今回ダウンロードされた範囲Ｒαを特定することができる。
【００３６】
例えば、今回、範囲Ｒａが今回ダウンロードされた範囲Ｒα場合には、センタ５０は、今回のダウンロード以前に、既にダウンロードされているファイルサイズがゼロであるとの情報を持っている。そのため、センタ５０は、更新プログラムＰｎの最初からファイルサイズＦｓ１までの範囲Ｒａを、今回ダウンロードされた範囲Ｒαと特定することができる。
【００３７】
また、今回、範囲Ｒｂが第１車両１０にダウンロードされた場合には、センタ５０は、今回のダウンロード以前に、範囲Ｒａに相当するファイルサイズが既にダウンロードされているとの情報を持っている。よって、センタ５０は、更新プログラムＰｎにおいて、範囲Ｒａの直後からファイルサイズＦｓ１までの範囲を、今回ダウンロードされた範囲Ｒαと特定することができる。
【００３８】
そして、Ｓ２１において、センタ５０は、第１車両１０と共有する共有鍵を用いて、自身が所有する更新プログラムＰｎにおける特定された範囲Ｒαから、第１ＭＡＣ値を算出する。図６に示すように、センタ５０は、範囲Ｒａが今回ダウンロードされた範囲Ｒαと特定された場合には、自身が所有する更新プログラムＰｎの範囲Ｒａから第１ＭＡＣである値Ｍａを算出する。また、センタ５０は、範囲Ｒｂが今回ダウンロードされた範囲Ｒαと特定された場合には、自身が所有する更新プログラムＰｎの範囲Ｒｂから第１ＭＡＣ値である値Ｍｂを算出する。
【００３９】
続いて、Ｓ２２では、センタ５０は、ＭＡＣ値要求に含まれているファイルサイズＦｓ１を用いて、各車両更新プログラムリストを更新する。すなわち、センタ５０は、各車両更新プログラムリストにおいて、第１車両１０と更新プログラムＰｎのＩＤ及びバージョンとに対応付けられたファイルサイズＦｓ０の値を、ファイルサイズＦｓ１の値を追加した値に更新する。
【００４０】
続いて、Ｓ２３では、センタ５０は、Ｓ７において受信した公開鍵を用いて第１ＭＡＣ値を暗号化し、暗号化した第１ＭＡＣ値を第１車両１０へ送信する。
続いて、Ｓ２４では、第１車両１０が、プライベート鍵を用いて、受信した第１ＭＡＣ値を復号化する。
【００４１】
続いて、Ｓ２５では、第１車両１０が、Ｓ１０において復号化した共有鍵を用いて、自身が今回ダウンロードした更新プログラムＰｎの範囲Ｒαから第２ＭＡＣ値を算出し、復号化した第１ＭＡＣ値と算出した第２ＭＡＣ値とを比較する。第１ＭＡＣ値は、センタ５０が所有する更新プログラムＰｎの範囲Ｒαから共有鍵を用いて算出された値であり、第２ＭＡＣ値は第２車両２０から第１車両１０へ送信された更新プログラムＰｎの範囲Ｒαから共有鍵を用いて算出された値である。すなわち、第１ＭＡＣ値と第２ＭＡＣ値は、対応するプログラムの同じ範囲から同じ算出手段によって算出された値である。
【００４２】
第２車両２０から第１車両１０へ送信された更新プログラムＰｎの範囲Ｒαが改ざんされていない場合には、第２車両２０から第１車両１０へ送信された更新プログラムＰｎの範囲Ｒａの内容と、センタ５０が所有する更新プログラムＰｎの範囲Ｒａの内容とは一致する。すなわち、第２車両２０から第１車両１０へ送信された更新プログラムＰｎの範囲Ｒａが改ざんされていない場合には、第１ＭＡＣ値と第２ＭＡＣ値は一致し、改ざんされている場合には、第１ＭＡＣ値と第２ＭＡＣ値は一致しない。
【００４３】
よって、Ｓ２５において、第１車両１０は、第１ＭＡＣ値と第２ＭＡＣ値とを比較し、第１ＭＡＣ値と第２ＭＡＣ値とが一致しない場合には、第２車両２０から受信した更新プログラムＰｎの範囲Ｒαの改ざんを検知する。第１車両１０は、改ざんを検知した場合には、今回ダウンロードした更新プログラムＰｎの範囲Ｒαを削除し、Ｓ２の処理に戻る。一方、第１車両１０は、改ざんを検知しなかった場合には、Ｓ２の処理に戻って、更新プログラムＰｎの全範囲をダウンロード完了するまで、ダウンロードを繰り返し実行する。そして、第１車両１０は、更新プログラムＰｎの全範囲のダウンロードを完了した場合には、Ｓ２６において、更新プログラムＰｎを更新する。
【００４４】
なお、更新プログラムＰｎの最初から今回ダウンロードされた範囲までの改ざんの有無は判別されているため、次回のダウンロード時において、第１車両１０は、更新プログラムＰｎにおける今回ダウンロードした範囲の続きからダウンロードを再開することができる。これに対して、センタ５０又は第２車両２０が、更新プログラムＰｎを一定の間隔で分割したブロック毎に配布する場合には、ブロック毎にＭＡＣ値を割り当て、ブロック毎に改ざんを検知することで、途中のブロックからダウンロードを再開することができる。
【００４５】
しかしながら、更新プログラムＰｎがブロック毎に配布される場合、第１車両１０が複数のブロックを一度にダウンロードした場合には、複数のＭＡＣ値を保管しなければならないため、第１車両１０のメモリを圧迫する可能性がある。これに対して、本実施形態は、第１車両１０が大量のデータを一度にダウンロードしたとしても、１回のダウンロードで生成されるＭＡＣ値は１つである。また、更新プログラムＰｎがブロック毎に配布される場合、第１車両１０は、ダウンロードが完了していないブロックが存在する場合には、そのブロックのデータを破棄し、そのブロックの最初からダウンロードを再開する必要がある。そのため、ダウンロードの効率が低下する。
【００４６】
＜２−２．更新プログラムの取得処理＞
次に、第１車両１０が実行する更新プログラムの取得処理の処理手順について、図３に示すフローチャートを参照して説明する。
【００４７】
まず、Ｓ１００では、第１車両１０は、センタ５０から更新プログラムＰｎ有り通知を受信する。
続いて、Ｓ１１０では、第１車両１０は、センタ５０へ更新プログラム配布要求を送信する。
【００４８】
続いて、Ｓ１２０では、第１車両１０は、センタ５０から配布不可能通知を受けたか否か判定する。第１車両１０は、センタ５０から配布不可能通知を受けていないと判定した場合は、Ｓ２６０へ進む。
【００４９】
Ｓ２６０では、第１車両１０は、センタ５０から更新プログラムＰｎをダウンロードする。すなわち、第１車両１０は、センタ５０との通信が途絶するまで、又は更新プログラムＰｎの全範囲を取得するまで、センタ５０から送信された更新プログラムＰｎを受信する。センタ５０から更新プログラムＰｎがダウンロードされる場合、ダウンロードされた更新プログラムＰｎが改ざんされているおそれはないため、第１車両１０はセンタ５０へＭＡＣ値を要求しない。
【００５０】
続いて、Ｓ２７０では、第１車両１０は、更新プログラムＰｎの全範囲のダウンロードを完了したか否か判定する。第１車両１０は、更新プログラムＰｎの全範囲のダウンロードを完了したと判定した場合は、本処理を終了する。一方、第１車両１０は、更新プログラムＰｎの全範囲のダウンロードを完了していないと判定した場合は、Ｓ１１０の処理へ戻る。
【００５１】
また、第１車両１０は、Ｓ１２０において、センタ５０から配布不可能通知を受けたと判定した場合は、Ｓ１３０へ進む。
Ｓ１３０では、第１車両１０は、第１車両１０とセンタ５０との間の通信速度を算出する。
【００５２】
続いて、Ｓ１４０では、第１車両１０は、通信対象選定リストに、センタ５０及び通信速度を追加して、通信対象選定リストを更新する。
続いて、Ｓ１５０では、第１車両１０は、センタ５０へ共有鍵の配布要求を送信する。そして、第１車両１０は、センタ５０から送信された暗号化された共有鍵をプライベート鍵で復号化して、共有鍵を取得する。
【００５３】
続いて、Ｓ１６０では、第１車両１０は、周辺の第２車両２０へ更新プログラムＰｎの所有確認要求を送信し、更新プログラムＰｎを所有している第２車両２０を探索する。
続いて、Ｓ１７０では、第１車両１０は、第２車両２０のいずれかが更新プログラムＰｎを所有しているか否か判定する。第１車両１０は、第２車両２０のいずれからも更新プログラムＰｎの所有通知を受信していない場合には、第２車両２０のいずれも更新プログラムＰｎを所有していないと判定して、Ｓ１６０の処理へ戻る。一方、第１車両１０は、第２車両２０のいずれかから更新プログラムＰｎの所有通知を受信している場合には、第２車両２０のいずれかが更新プログラムＰｎを所有していると判定して、Ｓ１８０の処理へ進む。
【００５４】
Ｓ１８０では、第１車両１０は、更新プログラムＰｎを所有する第２車両２０から、通信対象を選定するために必要な選定用情報を取得する。
続いて、Ｓ１９０では、第１車両１０は、取得した選定用情報を用いて、更新プログラムＰｎを所有する第２車両２０のそれぞれからダウンロード可能なデータ量を算出し、通信対象を選定する。
【００５５】
例えば、図７に示すように、第１車両１０の周辺に第２車両２０Ａ〜２０Ｄが存在し、第１車両１０は、第２車両２０Ａ〜２０Ｄから選定用情報を取得しているとする。第１車両１０は、自車両の車速及び進行方向と、第２車両２０Ａ〜２０Ｄの車速及び進行方向から、第１車両１０に対する第２車両２０Ａ〜２０Ｄの相対速度を算出する。
【００５６】
また、第１車両１０は、自車両の位置座標と、第２車両２０Ａ〜２０Ｄの位置座標とから、第１車両１０に対する第２車両２０Ａ〜２０Ｄの相対距離を算出する。さらに、第１車両１０は、第１車両１０と第２車両２０Ａ〜２０Ｄとの通信速度を算出する。第１車両１０は、図８に示すように、第２車両２０Ａ〜２０Ｄ、第２車両２０Ａ〜２０Ｄの車速、進行方向、相対距離、及び通信速度を通信対象選定リストに追加する。
【００５７】
そして、第１車両１０は、算出した第２車両２０Ａ〜２０Ｄの相対速度を用いて、第２車両２０Ａ〜２０Ｄの相対距離が通信可能距離以内となる時間、すなわち、第１車両１０と第２車両２０Ａ〜２０Ｄのそれぞれとの通信可能時間を算出する。そして、第１車両１０は、第２車両２０Ａ〜２０Ｄの通信可能時間に、第２車両２０Ａ〜２０Ｄの通信速度を乗算して、第２車両２０Ａ〜２０Ｄのそれぞれからダウンロード可能なデータ量を算出する。第１車両１０は、第２車両２０Ａ〜２０Ｄのうち、ダウロード可能なデータ量が最も大きい第２車両２０を通信対象に選定する。
【００５８】
続いて、Ｓ２００では、第１車両１０は、Ｓ１９０において選定した通信対象である第２車両２０へ更新プログラム配布要求を送信し、更新プログラムＰｎをダウンロードする。
続いて、Ｓ２１０では、第１車両１０は、通信対象である第２車両２０との通信が途絶したか否か判定する。第１車両１０は、通信対象である第２車両２０との通信が途絶していないと判定した場合には、Ｓ２００の処理へ戻り、通信対象である第２車両２０との通信が途絶していると判定した場合には、Ｓ２２０の処理へ進む。
【００５９】
Ｓ２２０では、第１車両１０は、今回の処理周期におけるＳ２００において、第２車両２０からダウンロードした更新プログラムＰｎの範囲Ｒαに相当するファイルサイズＦｓ１をセンタ５０へ送信する。
【００６０】
続いて、Ｓ２３０では、第１車両１０は、センタ５０によりセンタ５０が所有する更新プログラムＰｎの範囲Ｒαから生成された第１ＭＡＣ値を取得する。詳しくは、第１車両１０は、暗号化された第１ＭＡＣ値を受信し、復号化して第１ＭＡＣ値を取得する。
【００６１】
続いて、Ｓ２４０では、第１車両１０は、第２車両２０からダウンロードした更新プログラムＰｎの範囲Ｒαに、Ｓ１５０で取得した共有鍵を適用して、第２ＭＡＣ値を算出する。そして、第１車両１０は、第１ＭＡＣ値と第２ＭＡＣ値とを比較し、２つの値が一致しない場合にはダウンロードした更新プログラムＰｎの改ざんを検知し、ダウンロードした更新プログラムＰｎの範囲Ｒαを削除する。第１車両１０は、第１ＭＡＣ値と第２ＭＡＣ値とが一致する場合には、更新プログラムＰｎの範囲Ｒαをそのまま保存する。
【００６２】
続いて、Ｓ２５０では、第１車両１０は、更新プログラムＰｎの全範囲をダウンロードしたか否か判定する。第１車両１０は、更新プログラムＰｎの全範囲をダウンロードしていないと判定した場合は、Ｓ１１０の処理へ戻る。一方、第１車両１０は、更新プログラムＰｎの全範囲をダウンロードしたと判定した場合は、本処理を終了し、更新プログラムＰｎを更新する。
【００６３】
＜２−３．ＭＡＣ値生成処理＞
次に、センタ５０が実行する第１ＭＡＣ値生成処理の処理手順について、図４のフローチャートを参照して説明する。
【００６４】
まず、Ｓ３００では、センタ５０は、第１車両１０へ更新プログラムＰｎ有り通知を送信する。
続いて、Ｓ３１０では、センタ５０は、第１車両１０から更新プログラムＰｎの配布要求を受信する。
【００６５】
続いて、Ｓ３２０では、センタ５０は、自身の通信負荷に余裕があるか否か判定する。センタ５０は、自身の通信負荷に余裕があると判定した場合は、Ｓ４００の処理へ進む。
Ｓ４００では、センタ５０は、更新プログラムＰｎを第１車両１０へ送信する。
【００６６】
続いて、Ｓ４１０では、センタ５０は、更新プログラムＰｎの全範囲の配布を完了したか否か判定する。センタ５０は、更新プログラムＰｎの全範囲の配布を完了していないと判定した場合は、Ｓ３２０の処理へ戻り、更新プログラムＰｎの全範囲の配布を完了したと判定した場合は、本処理を終了する。
【００６７】
また、センタ５０は、Ｓ３２０において自身の通信負荷に余裕がないと判定した場合は、Ｓ３３０の処理へ進む。
Ｓ３３０では、センタ５０は、第１車両１０へ配布不可能通知を送信する。
【００６８】
続いて、Ｓ３４０では、センタ５０は、第１車両１０から、共有鍵の配布要求と第１車両１０により生成された公開鍵とを受信する。
続いて、Ｓ３５０では、センタ５０は、自身が所有する複数の共有鍵のうちの１つを、Ｓ３４０で受信した公開鍵で暗号化し、第１車両１０へ送信する。
【００６９】
続いて、Ｓ３６０では、センタ５０は、第１車両１０から、第１車両１０がダウンロードした更新プログラムＰｎの範囲Ｒαに相当するファイルサイズＦｓ１を受信する。
続いて、Ｓ３７０では、センタ５０は、Ｓ３６０で受信したファイルサイズＦｓ１を用いて、更新プログラムＰｎにおける第１車両１０によりダウンロードされた範囲Ｒαを特定する。
【００７０】
続いて、Ｓ３８０では、センタ５０は、自身が所有する更新プログラムＰｎにおけるＳ３７０で特定した範囲Ｒαに、第１車両１０へ送信した共有鍵を適用して、第１ＭＡＣ値を算出する。
【００７１】
続いて、Ｓ３９０では、センタ５０は、Ｓ３８０で算出した第１ＭＡＣ値を、Ｓ３４０で受信した公開鍵で暗号化して第１車両１０へ送信し、本処理を終了する。
＜２−４．更新プログラムの送信処理＞
次に、第２車両２０が実行する更新プログラムの送信処理の処理手順について、図５のフローチャートを参照して説明する。
【００７２】
まず、Ｓ５００では、第２車両２０は、第１車両１０から更新プログラムＰｎの所有確認要求を受信する。
続いて、Ｓ５１０では、第２車両２０は、自身が所有するプログラムのＩＤとそのバージョン群が記載された所有プログラムリストを参照する。
【００７３】
続いて、Ｓ５２０では、第２車両２０は、自身が更新プログラムＰｎを所有しているか否か判定する。第２車両２０は、自身が更新プログラムＰｎを所有していないと判定した場合は、Ｓ５８０へ進み、第１車両１０へ未所有通知を送信する。
【００７４】
一方、第２車両２０は、Ｓ５２０において自身が更新プログラムＰｎを所有していると判定した場合は、Ｓ５３０へ進み、第１車両１０へ所有通知を送信する。
続いて、Ｓ５４０では、第２車両２０は、第１車両１０へ、第２車両２０の進行方向、車速、及び位置座標にタイプスタンプを付与した選定用情報を送信する。
【００７５】
続いて、Ｓ５５０では、第２車両２０は、第１車両１０から更新プログラム配布要求を受信したか否か判定する。第２車両２０は、第１車両１０から更新プログラム配布要求を受信していないと判定した場合は、本処理を終了する。
【００７６】
一方、第２車両２０は、Ｓ５５０において、第１車両１０から更新プログラム配布要求を受信したと判定した場合は、Ｓ５６０の処理へ進む。
Ｓ５６０では、第２車両２０は、第１車両１０へ更新プログラムＰｎを送信する。
【００７７】
続いて、Ｓ５７０では、第２車両２０は、第１車両１０との通信が途絶したか、又は更新プログラムＰｎの全範囲の配布を完了したか判定する。
第２車両２０は、Ｓ５７０において、第１車両１０との通信が維持されており、且つ、更新プログラムＰｎの全範囲の配布を完了していないと判定した場合は、Ｓ５６０の処理へ戻る。一方、第２車両２０は、Ｓ５７０において、第１車両１０との通信が途絶した、又は、更新プログラムＰｎの全範囲の配布を完了したと判定した場合は、本処理を終了する。
【００７８】
なお、本実施形態において、ダウンロード部の機能は、Ｓ１９，Ｓ２００，Ｓ５６０の処理に相当し、情報送信部の機能は、Ｓ２０，Ｓ２２０の処理に相当する。また、特定部の機能は、Ｓ２１，Ｓ３７０の処理に相当し、検知情報送信部の機能は、Ｓ２３，Ｓ３８０，Ｓ３９０の処理に相当する。また、改ざん検知部の機能は、Ｓ２５，Ｓ２４０の処理に相当し、探索部の機能は、Ｓ２，Ｓ１１，Ｓ１１０，Ｓ１６０の処理に相当する。また、要求送信部は、Ｓ１１，Ｓ１６０の処理に相当し、選定用情報送信部の機能は、Ｓ１４，Ｓ５４０の処理に相当する。また、選択部の機能は、Ｓ１５，Ｓ１７，Ｓ１９０の処理に相当し、更新部の機能は、Ｓ６，Ｓ１６の処理に相当する。また、公開鍵送信部の機能は、Ｓ７の処理に相当し、共有鍵送信部の機能は、Ｓ９，Ｓ３５０の処理に相当する。
【００７９】
＜３．効果＞
以上説明した第１実施形態によれば、以下の効果が得られる。
（１）第１車両１０は、センタ５０から更新プログラムＰｎの配布を受けられない場合に、第２車両２０から更新プログラムＰｎをダウンロードして、効率よく更新プログラムＰｎを取得することができる。そして、センタ５０が所有する更新プログラムＰｎにおける第１車両１０によりダウンロードされた範囲Ｒαに、共有鍵が適用されて、第１ＭＡＣ値が算出され、第１車両１０へ送信される。また、第１車両１０により、ダウンロードされた更新プログラムＰｎの範囲Ｒαに、第１ＭＡＣ値の算出に用いられた共有鍵と同じ共有鍵が適用されて、第２ＭＡＣ値が算出される。そして、第１ＭＡＣ値と第２ＭＡＣ値とが比較されて、第１車両１０によりダウンロードされた更新プログラムＰｎの改ざんが検知される。よって、第１車両１０は、センタ５０以外の第２車両２０から更新プログラムＰｎをダウンロードした場合でも、その更新プログラムＰｎの安全性を確認することができる。したがって、第１車両１０は、安全に効率よく更新プログラムＰｎを取得することができる。
【００８０】
（２）第１車両１０が第２車両２０から更新プログラムＰｎをダウンロードしている途中で、第１車両１０と第２車両２０との通信が途絶した場合には、通信が途絶した都度、通信開始から通信途絶までの通信期間にダウンロードされたデータ量に関するダウンロード情報がセンタ５０へ送信される。そして、センタ５０により第１ＭＡＣ値が算出されるとともに、第１車両１０により第２ＭＡＣ値が算出される。よって、ダウンロード中に通信が途絶した場合には、その都度、第１車両１０は、通信期間にダウンロードされた更新プログラムＰｎの範囲Ｒαについて、安全性を確認することができる。ひいては、第１車両１０は、ダウンロードの再開時には、更新プログラムＰｎにおける前回ダウンロードされた範囲の続きからダウンロードを始めることができる。
【００８１】
（３）ダウンロード中に第１車両１０と第２車両２０との通信が途絶した場合には、第１車両１０は、センタ５０及び第２車両２０の中から更新プログラムＰｎの新たなダウンロード先を探索することができる。
【００８２】
（４）第１車両１０は、更新プログラムＰｎを所有する第２車両２０から、更新プログラムＰｎのダウンロード先の選定に必要な選定用情報を取得することができる。
（５）第１車両１０により、複数の第２車両２０から取得された選定用情報を用いて、各第２車両２０からダウンロード可能なデータ量が算出され、最も多くのデータ量をダウンロード可能な第２車両２０が、更新プログラムＰｎのダウンロード先として選定される。よって、第１車両１０は、できる限り少ないダウンロード回数で、効率よく更新プログラムＰｎを取得することができる。
【００８３】
（６）第１車両１０は、通信対象選定リストを備え、更新プログラムＰｎを所有する配布元を認識した場合に、通信対象選定リストを更新することができる。
（７）第１ＭＡＣ値が暗号化されてセンタから第１車両１０へ送信されるため、第２車両２０により第１ＭＡＣ値が傍受されて、第１車両１０に検知されないように更新プログラムＰｎが改ざんされることを抑制することができる。ひいては、更新プログラムＰｎの安全性を高めることができる。
【００８４】
（８）第１ＭＡＣ値及び第２ＭＡＣ値は、センタ５０と第１車両１０との間だけで共有される共有鍵を用いて算出される。よって、第２車両によって、共有鍵が用いられ、第１車両１０に検知されないように更新プログラムＰｎが改ざんされることを抑制し、更新プログラムＰｎの安全性を高めることができる。
【００８５】
（９）共有鍵が暗号化されてセンタ５０から第１車両１０へ送信される。よって、第２車両２０により共有鍵が傍受されて用いられることを抑制することができる。ひいては、第２車両により、第１車両１０に検知されないように更新プログラムＰｎが改ざんされることを抑制し、更新プログラムＰｎの安全性を高めることができる。
【００８６】
（他の実施形態）
以上、本開示を実施するための形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００８７】
（ａ）上記実施形態では、改ざんを検知するための第１及び第２検知用情報として第１及び第２ＭＡＣ値を算出したが、本開示はこれに限定されるものではない。第１及び第２検知用情報は、センタ５０が所有する配布対象データと、第１車両１０が受信した配布対象データとが一致するか否か判定できる情報であれば特に限定されるものではない。
【００８８】
（ｂ）上記実施形態では、配布対象データは車両のＥＣＵが実行する更新プログラムであったが、本開示はこれに限定されるものではない。配信対象データは、車両のナビゲーション装置が利用する地図データや、音楽データ、動画データなど、車両に搭載された車両装置が利用するデータであれば特に限定されるものではない。
【００８９】
（ｃ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００９０】
（ｄ）上述した配布対象データの配布システム、配布対象データの取得方法の他、当該当該配布対象データの取得するために実行されるプログラム、このプログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、配布対象データの改ざん検知方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【００９１】
１０…第１車両、１５…第１ＥＣＵ、２０…第２車両、２５…第２ＥＣＵ、５０…センタ、５５…サーバ、１００…配布システム。
【図１】
2019139473.tif 000003
【図２】
2019139473.tif 000004
【図３】
2019139473.tif 000005
【図４】
2019139473.tif 000006
【図５】
2019139473.tif 000007
【図６】
2019139473.tif 000008
【図７】
2019139473.tif 000009
【図８】
2019139473.tif 000010