(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5949732
(24)【登録日】2016年6月17日
(45)【発行日】2016年7月13日
(54)【発明の名称】プログラム更新システム及びプログラム更新方法
(51)【国際特許分類】
G06F 11/00 20060101AFI20160630BHJP
G06F 9/445 20060101ALI20160630BHJP
G06F 21/12 20130101ALI20160630BHJP
B60R 16/02 20060101ALI20160630BHJP
【FI】
G06F9/06 630A
G06F9/06 610Q
G06F21/12
B60R16/02 660U
【請求項の数】7
【全頁数】14
(21)【出願番号】特願2013-245083(P2013-245083)
(22)【出願日】2013年11月27日
(65)【公開番号】特開2015-103163(P2015-103163A)
(43)【公開日】2015年6月4日
【審査請求日】2015年12月24日
(73)【特許権者】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】足立 直樹
(72)【発明者】
【氏名】宇佐美 彰規
(72)【発明者】
【氏名】渡部 正志
(72)【発明者】
【氏名】野田 哲矢
【審査官】
漆原 孝治
(56)【参考文献】
【文献】
特開2011−003020(JP,A)
【文献】
特開2004−326689(JP,A)
【文献】
特開2003−019931(JP,A)
【文献】
特開2013−137729(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/00
B60R 16/02
G06F 9/445
G06F 21/12
(57)【特許請求の範囲】
【請求項1】
車載機器を制御するための制御プログラムを記憶する記憶手段と、
前記制御プログラムを読み出して実行する実行手段と
を備える複数の制御装置、
該複数の制御装置に車内通信線を介して接続された中継装置、及び
該中継装置に車外通信網を介して接続され、前記制御プログラムを更新するために必要な更新データを記憶する車外装置を含み、
該車外装置から前記更新データを前記中継装置へ送信し、該中継装置が受信した前記更新データに基づき、前記制御装置の記憶手段に記憶された制御プログラムを更新するシステムにおいて、
前記更新データは、
更新対象の制御装置に対する更新制御プログラムと、
該更新制御プログラムに係るダイジェスト値を算出する手段、
更新後の前記制御装置の動作が正常であるか否かを判定する手段、及び
該判定する手段の判定結果を前記中継装置に返答する手段
を実現するコンピュータプログラムと
を含み、
前記中継装置は、
前記車外装置から受信した前記更新データを前記更新対象の制御装置へ送信する手段
を備え、
前記制御装置は、
前記中継装置から送信された前記更新データを受信する手段と、
受信した前記更新データに含まれる前記更新制御プログラムにより前記記憶手段に記憶された制御プログラムを更新する手段と
を備え、
前記制御装置は、前記更新データに含まれる前記コンピュータプログラムを実行して更新後の動作が正常であるか否かを判定し、その判定結果を前記中継装置に返答する
ことを特徴とするプログラム更新システム。
【請求項2】
前記中継装置は、
前記車内通信線を介して接続された各制御装置を識別する装置識別情報、及び各制御装置の記憶手段に記憶された制御プログラムを識別するプログラム識別情報を記憶する手段と、
更新対象の制御プログラムを記憶する制御装置の装置識別情報、及び前記制御プログラムのプログラム識別情報を前記車外装置へ送信する手段と
を備え、
前記車外装置は、
前記中継装置から送信された装置識別情報及びプログラム識別情報を受信する手段と、
受信した装置識別情報及びプログラム識別情報に基づき、前記中継装置へ送信すべき更新データを特定する手段と、
特定した更新データを前記中継装置へ送信する際、前記装置識別情報及びプログラム識別情報を付加する手段と
を備えることを特徴とする請求項1に記載のプログラム更新システム。
【請求項3】
前記中継装置は、
前記更新制御プログラムに係るダイジェスト値を取得する手段と、
取得したダイジェスト値を暗号化する手段と、
暗号化したダイジェスト値を前記車外装置へ送信する手段と
を備え、
前記車外装置は、
前記中継装置から送信された暗号化済みのダイジェスト値を受信する手段と、
受信したダイジェスト値を復号する手段と、
復号したダイジェスト値を予め記憶してある期待値と比較する手段と
比較した結果に基づき、前記制御装置における更新後の制御プログラムの正当性を判断する手段と
を備えることを特徴とする請求項1又は請求項2に記載のプログラム更新システム。
【請求項4】
前記車外装置は、
更新後の制御プログラムが正当でないと判断した場合、記憶してある更新データ及び前記コンピュータプログラムを前記中継装置を介して前記制御装置へ再送信する手段
を備えることを特徴とする請求項3に記載のプログラム更新システム。
【請求項5】
前記車外装置は、
更新後の制御プログラムが正当でないと判断した場合、前記制御プログラムの実行を停止すべき旨を前記中継装置を介して前記制御装置へ通知する手段
を備え、
前記制御装置は、
前記制御プログラムの実行を停止すべき旨の通知を前記車外装置から受信した場合、前記制御プログラムの実行を停止する手段
を備えることを特徴とする請求項3に記載のプログラム更新システム。
【請求項6】
前記車外装置、前記中継装置及び前記制御装置の少なくとも1つは、更新前の制御プログラムを保持する手段を備え、
前記車外装置は、
更新後の制御プログラムが正当でないと判断した場合、更新前の制御プログラムに戻すべき旨を前記中継装置を介して前記制御装置へ通知する手段
を備え、
前記制御装置は、
更新前の制御プログラムに戻すべき旨の通知を前記中継装置を介して受信した場合、更新前の制御プログラムを取得する手段と、
前記記憶手段に記憶された更新後の制御プログラムを、取得した更新前の制御プログラムに戻す手段と
を備えることを特徴とする請求項3に記載のプログラム更新システム。
【請求項7】
車載機器を制御するための制御プログラムを記憶する記憶手段と、前記制御プログラムを読み出して実行する実行手段とを備える制御装置に対し、車外装置は、前記制御プログラムを更新するために必要な更新データを前記制御装置に接続された中継装置へ送信し、該中継装置が受信した前記更新データに基づき、前記制御装置の記憶手段に記憶された制御プログラムを更新する方法において、
前記更新データは、
更新対象の制御装置に対する更新制御プログラムと、
該更新制御プログラムに係るダイジェスト値を算出する手段、
更新後の前記制御装置の動作が正常であるか否かを判定する手段、及び
該判定する手段の判定結果を前記中継装置に返答する手段
を実現するコンピュータプログラムと
を含み、
前記中継装置は、
前記車外装置から受信した前記更新データを前記更新対象の制御装置へ送信し、
前記制御装置は、
前記中継装置から送信された前記更新データを受信し、
受信した前記更新データに含まれる前記更新制御プログラムにより前記記憶手段に記憶された制御プログラムを更新し、
前記更新データに含まれる前記コンピュータプログラムを実行して更新後の動作が正常であるか否かを判定し、
その判定結果を前記中継装置に返答する
ことを特徴とするプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両側で実行されたプログラムの更新の正当性を検証するプログラム更新システム及びプログラム更新方法に関する。
【背景技術】
【0002】
近年、自動車の分野においては、車両の高機能化が益々進んでおり、多種多様な機器が車両に搭載され、これら車載機器を制御するための制御装置、所謂ECU(Electronic Control Unit)が多数搭載されている。例えば、乗員によるスイッチ操作などに応じて車内照明やヘッドライトの点灯/消灯、及び警報器の吹鳴等の制御を行うボディ系ECU、運転席近傍に配設されるメータ類の動作を制御するメータ系ECU、並びにカーナビゲーション装置等の制御を行うナビ系ECUなどの種々のECUが車両には搭載されている。
【0003】
一般的にECUは、マイクロコンピュータ等の演算処理装置によって構成されており、ROM(Read Only Memory)に記憶した制御プログラムを読み込んで実行することにより、車載機器の制御が実現されている。制御プログラムは、同じ車種でも、車輌が運用される仕向け地や搭載機能によって異なることがあり、仕向け地や搭載機能に合わせて制御プログラムを書換えたり、制御プログラムのバージョンアップに対応して、旧バージョンの制御プログラムを新たなバージョンの制御プログラムに書換えたりする必要がある。
【0004】
特許文献1には、車両に搭載された自動車制御装置において、無線通信により受信したデータが自己の装置宛に送信されたデータであると確認できた場合、不揮発性メモリに記憶されているデータを、受信したデータに書換える自動車用制御装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平05−195859号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、車載機器の制御プログラムを追加又は更新できる構成とした場合、悪意の第三者が作成したプログラムが追加されて実行される虞がある。これにより、例えば車内ネットワークにて送受信される情報が不正なプログラムによって外部へ漏洩するなどの虞がある。
【0007】
本発明は、斯かる事情に鑑みてなされたものであり、車両側で実行されたプログラムの更新の正当性を検証できるプログラム更新システム及びプログラム更新方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係るプログラム更新システムは、車載機器を制御するための制御プログラムを記憶する記憶手段と、前記制御プログラムを読み出して実行する実行手段とを備える複数の制御装置、該複数の制御装置に車内通信線を介して接続された中継装置、及び該中継装置に車外通信網を介して接続され、前記制御プログラムを更新するために必要な更新データを記憶する車外装置を含み、該車外装置から前記更新データを前記中継装置へ送信し、該中継装置が受信した前記更新データに基づき、前記制御装置の記憶手段に記憶された制御プログラムを更新するシステムにおいて、前記更新データは、更新対象の制御装置に対する更新制御プログラムと、該更新制御プログラムに係るダイジェスト値を算出する手段、更新後の前記制御装置の動作が正常であるか否かを判定する手段、及び該判定する手段の判定結果を前記中継装置に返答する手段を実現するコンピュータプログラムとを含み、前記中継装置は、前記車外装置から受信した前記更新データを前記更新対象の制御装置へ送信する手段を備え、前記制御装置は、前記中継装置から送信された前記更新データを受信する手段と、受信した前記更新データに含まれる前記更新制御プログラムにより前記記憶手段に記憶された制御プログラムを更新する手段とを備え、前記制御装置は、前記更新データに含まれる前記コンピュータプログラムを実行して更新後の動作が正常であるか否かを判定し、その判定結果を前記中継装置に返答することを特徴とする。
【0009】
本発明に係るプログラム更新システムは、前記中継装置は、前記車内通信線を介して接続された各制御装置を識別する装置識別情報、及び各制御装置の記憶手段に記憶された制御プログラムを識別するプログラム識別情報を記憶する手段と、更新対象の制御プログラムを記憶する制御装置の装置識別情報、及び前記制御プログラムのプログラム識別情報を前記車外装置へ送信する手段とを備え、前記車外装置は、前記中継装置から送信された装置識別情報及びプログラム識別情報を受信する手段と、受信した装置識別情報及びプログラム識別情報に基づき、前記中継装置へ送信すべき更新データを特定する手段と、特定した更新データを前記中継装置へ送信する際、前記装置識別情報及びプログラム識別情報を付加する手段とを備えることを特徴とする。
【0010】
本発明に係るプログラム更新システムは、前記中継装置は、前記更新制御プログラムに係るダイジェスト値を取得する手段と、取得したダイジェスト値を暗号化する手段と、暗号化したダイジェスト値を前記車外装置へ送信する手段とを備え、前記車外装置は、前記中継装置から送信された暗号化済みのダイジェスト値を受信する手段と、受信したダイジェスト値を復号する手段と、復号したダイジェスト値を予め記憶してある期待値と比較する手段と比較した結果に基づき、前記制御装置における更新後の制御プログラムの正当性を判断する手段とを備えることを特徴とする。
【0011】
本発明に係るプログラム更新システムは、前記車外装置は、更新後の制御プログラムが正当でないと判断した場合、記憶してある更新データ及び前記コンピュータプログラムを前記中継装置を介して前記制御装置へ再送信する手段を備えることを特徴とする。
【0012】
本発明に係るプログラム更新システムは、前記車外装置は、更新後の制御プログラムが正当でないと判断した場合、前記制御プログラムの実行を停止すべき旨を前記中継装置を介して前記制御装置へ通知する手段を備え、前記制御装置は、前記制御プログラムの実行を停止すべき旨の通知を前記車外装置から受信した場合、前記制御プログラムの実行を停止する手段を備えることを特徴とする。
【0013】
本発明に係るプログラム更新システムは、前記車外装置、前記中継装置及び前記制御装置の少なくとも1つは、更新前の制御プログラムを保持する手段を備え、前記車外装置は、更新後の制御プログラムが正当でないと判断した場合、更新前の制御プログラムに戻すべき旨を前記中継装置を介して前記制御装置へ通知する手段を備え、前記制御装置は、更新前の制御プログラムに戻すべき旨の通知を前記中継装置を介して受信した場合、更新前の制御プログラムを取得する手段と、前記記憶手段に記憶された更新後の制御プログラムを、取得した更新前の制御プログラムに戻す手段とを備えることを特徴とする。
【0014】
本発明に係るプログラム更新方法は、車載機器を制御するための制御プログラムを記憶する記憶手段と、前記制御プログラムを読み出して実行する実行手段とを備える制御装置に対し、車外装置は、前記制御プログラムを更新するために必要な更新データを前記制御装置に接続された中継装置へ送信し、該中継装置が受信した前記更新データに基づき、前記制御装置の記憶手段に記憶された制御プログラムを更新する方法において、前記更新データは、更新対象の制御装置に対する更新制御プログラムと、該更新制御プログラムに係るダイジェスト値を算出する手段、更新後の前記制御装置の動作が正常であるか否かを判定する手段、及び該判定する手段の判定結果を前記中継装置に返答する手段を実現するコンピュータプログラムとを含み、前記中継装置は、前記車外装置から受信した前記更新データを前記更新対象の制御装置へ送信し、前記制御装置は、前記中継装置から送信された前記更新データを受信し、受信した前記更新データに含まれる前記更新制御プログラムにより前記記憶手段に記憶された制御プログラムを更新し、前記更新データに含まれる前記コンピュータプログラムを実行して更新後の動作が正常であるか否かを判定し、その判定結果を前記中継装置に返答することを特徴とする。
【0015】
本発明にあっては、車外装置は、制御装置に記憶された制御プログラムを更新するたに必要な更新データとして、更新対象の制御装置に対する更新制御プログラムと、更新制御プログラムに係るダイジェスト値を算出する手段、更新後の制御装置の動作が正常であるか否かを判定する手段、及び判定結果を返答する手段を実現するコンピュータプログラムとを含む更新データを記憶しており、中継装置を介して、制御装置へ更新データを送信する。制御装置では、受信した更新データに含まれる更新制御プログラムに基づき制御プログラムを更新すると共に、更新データに含まれるコンピュータプログラムを実行することによって、更新後の動作が正常であるか否かを判定して中継装置へ返答する。
本発明では、制御プログラムを更新する更新データに上記コンピュータプログラムを実装できるので、事前に制御装置内に実装しておく場合と比較して、上記コンピュータプログラムの改竄が困難となる。また、中継装置又は中継装置に通信可能に接続された車外装置において、更新制御プログラムのダイジェスト値の正当性を検証することにより、更新された制御プログラムの正当性が担保される。
【0016】
本発明では、中継装置が制御装置の装置識別情報、及び制御プログラムのプログラム識別情報を管理しているので、車外装置は、中継装置から更新対象の制御装置の装置識別情報、及び制御プログラムのプログラム識別情報を取得することにより、更新対象を特定することができる。
【0017】
本発明では、中継装置は、制御装置から送信されたダイジェスト値を暗号化して車外装置へ送信するので、ダイジェスト値を送信する通信経路の途中で改竄されることが防止される。
【0018】
本発明では、更新後の制御プログラムが正当でないと判断した場合、更新データ及び前記コンピュータプログラムを再送信するので、ビット欠け等に伴う制御プログラムの不具合が防止される。
【0019】
本発明では、更新後の制御プログラムが正当でないと判断した場合、制御プログラムの実行を停止するので、改竄された制御プログラムにより車載機器が動作することを防止する。
【0020】
本発明では、更新後の制御プログラムが正当でないと判断した場合、更新前の制御プログラムに戻すので、少なくとも更新前の制御装置の動作を担保することができる。
【発明の効果】
【0021】
本願によれば、制御プログラムを更新する更新データに、更新制御プログラムに係るダイジェスト値を算出する手段、更新後の動作が正常であるか否かを判定する手段、及び判定結果を前記中継装置に返答する手段を実現するコンピュータプログラムを実装するので、事前に制御装置内に実装しておく場合と比較して、上記コンピュータプログラムを改竄することが困難となる。また、更新データの配信側にて上記コンピュータプログラムを作成することができるため、更新する都度、ダイジェスト値に対する期待値を変更することができ、改竄及びなりすましを防止することができる。
【0022】
また、中継装置又は中継装置に通信可能に接続された車外装置において、制御装置から出力されるダイジェスト値を検証することにより、上記コンピュータプログラムの正常動作を確認することができ、更新された制御プログラムの正当性を担保することができる。
【図面の簡単な説明】
【0023】
【
図1】本実施の形態に係るプログラム更新システムの構成を示す模式図である。
【
図2】ゲートウェイの内部構成を示すブロック図である。
【
図3】ECUの内部構成を説明するブロック図である。
【
図4】サーバ装置の内部構成を説明するブロック図である。
【
図5】サーバ装置が実行する処理の手順を示すフローチャートである。
【
図6】車両にて実行される処理の手順を示すフローチャートである。
【
図7】ダイジェスト値を検証する処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0024】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
図1は本実施の形態に係るプログラム更新システムの構成を示す模式図である。図において一点鎖線で示す1は車両であり、車両1には、ゲートウェイ10及び複数のECU30,30,…等が搭載されている。車両1には、共通の通信線にバス接続された複数のECU30,30,…による通信グループが複数存在し、通信グループ間の通信をゲートウェイ10が中継している。このためゲートウェイ10には、複数の通信線が接続されている。また、ゲートウェイ10は、公衆携帯電話網などの広域無線網Nに通信可能に接続され、広域無線網Nを通じてサーバ装置5などの車外装置から受信した情報をECU30へ送信すると共に、ECU30から取得した情報を広域無線網Nを介して車外装置へ送信する。
【0025】
なお、本実施の形態では、ゲートウェイ10が直接的に車外装置と通信を行う構成としたが、ゲートウェイ10に通信装置を接続し、接続した通信装置を通じて車外装置と通信を行う構成としてもよい。ゲートウェイ10に接続される通信装置には、例えば、ユーザが所持する携帯電話機、スマートフォン、タブレット型端末、ノートPC(Personal Computer)等の装置が含まれる。
【0026】
図2はゲートウェイ10の内部構成を示すブロック図である。ゲートウェイ10は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、記憶部13、車内通信部14、及び無線通信部15等を備えて構成されている。
【0027】
CPU11は、記憶部13に記憶された一又は複数のプログラムをRAM12に読み出して実行することにより、ゲートウェイ10を本発明に係る中継装置として機能させる。CPU11は、例えば時分割などで複数のプログラムを切り替えて実行することにより、複数のプログラムを並列的に実行することができる。RAM12は、SRAM(Static RAM)又はDRAM(Dynamic RAM)等のメモリ素子で構成され、CPU11が実行するプログラム及び実行に必要なデータ等が一時的に記憶される。
【0028】
記憶部13は、フラッシュメモリ若しくはEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性のメモリ素子、又は、ハードディスクなどの磁気記憶装置等を用いて構成されている。記憶部13は、CPU11が実行するプログラム及び実行に必要なデータ等を記憶する記憶領域を有する。
【0029】
車内通信部14には、車両1内に配設された通信線を介して複数のECU30,30,…が接続されている。車内通信部14は、例えばCAN(Controller Area Network)、LIN(Local Interconnect Network)、Ethernet(登録商標)、又はMOST(Media Oriented Systems Transport)等の規格に応じて、ECU30との通信を行う。車内通信部14は、CPU11から与えられた情報を対象のECU30へ送信すると共に、ECU30から受信した情報をCPU11へ与える。車内通信部14は、上記通信規格だけでなく、車載ネットワークで用いられる他の通信規格によって通信してもよい。
【0030】
無線通信部15は、例えばアンテナ及びその通信に関する処理を実行する付属回路を用いて構成され、公衆携帯電話網等の広域無線網Nに接続して通信処理を実行する機能を有する。無線通信部15は、図に示していない基地局により形成される広域無線網Nを介して、CPU11から与えられた情報をサーバ装置5等の車外装置へ送信すると共に、車外装置から受信した情報をCPU31へ与える。
【0031】
なお、ゲートウェイ10は、無線通信部15に代えて、上述した通信装置を接続するための有線通信部を備える構成であってもよい。この有線通信部は、USB(Universal Serial Bus)又はRS232C等の規格に応じた通信ケーブルを介して通信装置を接続するコネクタを有し、通信ケーブルを介して接続された通信装置と通信を行う。有線通信部は、CPU11から与えられた情報を無線通信により広域無線網Nに接続された車外装置へ送信すると共に、広域無線網Nを通じて車外装置から受信した情報をCPU11へ与える。
【0032】
図3はECU30の内部構成を説明するブロック図である。ECU30は、例えば、CPU31、RAM32、記憶部33、通信部34等を備え、図に示していない各種車載機器の制御を行う。
【0033】
CPU31は、記憶部33に予め記憶された一又は複数のプログラムをRAM32に読み出して実行することにより、上述した各ハードウェアの動作を制御し、ECU30を本発明に係る制御装置として機能させる。RAM32は、SRAM又はDRAM等のメモリ素子で構成され、CPU31が実行するプログラム及び実行に必要なデータ等が一時的に記憶される。
【0034】
記憶部33は、フラッシュメモリ若しくはEEPROM等の不揮発性のメモリ素子、又は、ハードディスクなどの磁気記憶装置等を用いて構成されている。記憶部33が記憶する情報には、例えば、制御対象である車載装置を制御するための処理をCPU31に実行させるためのコンピュータプログラム(以下、制御プログラムという)が含まれる。
【0035】
通信部34には、車両1内に配設された通信線を介してゲートウェイ10が接続されている。通信部34は、例えばCAN(Controller Area Network)又はLIN(Local Interconnect Network)、Ethernet、又はMOST(Media Oriented Systems Transport)等の規格に応じて、ゲートウェイ10との通信を行う。通信部34は、CPU31から与えられた情報をゲートウェイ10へ送信すると共に、ゲートウェイ10から受信した情報をCPU31へ与える。通信部34は、上記通信規格だけなく、車載ネットワークで用いられる他の通信規格によって通信してもよい。
【0036】
図4はサーバ装置5の内部構成を説明するブロック図である。サーバ装置5は、例えば、CPU51、ROM52、RAM53、記憶部54、通信部55等を備える。
【0037】
CPU51は、ROM52に予め記憶された一又は複数のプログラムをRAM53に読み出して実行することにより、上述した各ハードウェアの動作を制御し、サーバ装置5を本発明に係る車外装置として機能させる。RAM53は、SRAM又はDRAM等のメモリ素子で構成され、CPU51が実行するプログラム及び実行に必要なデータ等が一時的に記憶される。
【0038】
記憶部54は、フラッシュメモリ若しくはEEPROM等の不揮発性のメモリ素子、又は、ハードディスクなどの磁気記憶装置等を用いて構成されている。記憶部54が記憶する情報には、例えば、車両1に搭載されたECU30が実行する制御プログラムを更新するために必要な更新データが含まれる。更新データには、更新対象のECU30が記憶する制御プログラムの一部又は全部を書き換えるための制御を実行させる更新制御プログラムが含まれている。
【0039】
また、更新データには、制御プログラムを更新したECU30に実行させるべきコンピュータプログラム(以下、返答プログラムという)が記憶されている。返答プログラムは、ECU30を、更新制御プログラムに係るダイジェスト値を算出する手段、更新後の動作が正常であるか否かを判定する手段、及びその判定結果をゲートウェイ10へ返答する手段として機能させるコンピュータプログラムとして構成されている。
【0040】
通信部55は、例えば通信に関する処理を実行する処理回路を含み、公衆携帯電話網等の広域無線網Nに接続して通信処理を実行する機能を有する。通信部55は、CPU51から与えられた情報を広域無線網Nを介して外部の装置へ送信すると共に、広域無線網Nを介して受信した情報をCPU51へ与える。
【0041】
以下、制御プログラムの更新手順について説明する。
図5はサーバ装置5が実行する処理の手順を示すフローチャートである。サーバ装置5の記憶部54には、車両1側のECU30が実行する制御プログラムを更新するための更新データ(リプロデータ)が制御プログラムのバージョン番号に対応付けられて記憶されているものとする。サーバ装置5のCPU51は、車両1の車両番号、更新対象のECU30のシリアル番号、及び更新対象の制御プログラムのバージョン番号が添付された更新データのリクエストを、車両1のゲートウェイ10から受信したか否かを判断する(ステップS11)。リクエストを受信していない場合(S11:NO)、CPU51は、車両1のゲートウェイ10からリクエストを受信するまで待機する。
【0042】
リクエストを受信した場合(S11:YES)、CPU51は、送信すべき更新データを記憶部54から読み出し、読み出した更新データに対して認証局(CA : Certification Authority)又はOEM(Original Equipment Manufacturer)毎の電子署名を付与する(ステップS12)。次いで、CPU51は、上述した更新制御プログラム及び返答プログラムを含み、電子署名を付与した更新データを更新対象のECU30を備える車両1のゲートウェイ10へ通信部55を通じて送信する(ステップS13)。
【0043】
なお、
図5に示す処理手順では、更新データのリクエストに添付されている車両番号、ECU30のシリアル番号、及び制御プログラムのバージョン番号を参照して、更新対象のECU30を特定する構成としたが、サーバ装置5の記憶部54にて、車両1の車両番号、ECU30のシリアル番号、ECU30にインストールされている制御プログラムのバージョン番号を互いに関連付けて記憶しておき、サーバ装置5側から更新対象のECU30を指定する構成としてもよい。
【0044】
図6は車両1にて実行される処理の手順を示すフローチャートである。サーバ装置5から送信される更新データをゲートウェイ10の無線通信部15にて受信した場合(ステップS21)、ゲートウェイ10のCPU11は、受信した更新データに係る電子署名が正当であるか否かを判断する(ステップS22)。ゲートウェイ10は、認証局又は各OEMから電子証明書を予め取得しておくことにより、その電子証明書を用いて電子署名が正当であるか否かを判断することができる。
【0045】
サーバ装置5から受信した更新データの電子署名が正当でないと判断した場合(S22:NO)、CPU11は、本フローチャートによる処理を終了する。
【0046】
サーバ装置5から受信した更新データの電子署名が正当であると判断した場合(S22:YES)、CPU11は、車内通信部14を通じて更新対象のECU30へ送信する(ステップS23)。
【0047】
ゲートウェイ10から送信される更新データをECU30の通信部34にて受信した場合(ステップS24)、ECU30のCPU31は、受信した更新データに含まれる更新制御プログラムをRAM32に読み込んで実行し、記憶部33に記憶されている制御プログラムを更新する処理(リプログラミング)を実行する(ステップS25)。
【0048】
制御プログラムの更新には、例えば、OSGi(Open Services Gateway initiative)の技術を採用することができる。OSGiは、バンドルと呼ばれるプログラムの動的な追加及び実行等を管理するシステムであり、バンドルの実行基盤であるOSGiフレームワークがCPU31にて動作するように構成されている。なお、OSGiは既存の技術であるため、詳細な説明は省略する。また、CPU31は、OSGi以外の技術を採用して制御プログラムの更新を行ってもよい。
【0049】
制御プログラムの更新が完了した場合、ECU30のCPU31は、更新データに含まれる返答プログラムをRAM32に読み込んで実行し(ステップS26)、ECU30を、更新制御プログラムに係るダイジェスト値を算出する手段、更新後の動作が正常であるか否かを判定する手段、及びその判定結果をゲートウェイ10へ送信する手段として機能させる。
【0050】
返答プログラムを実行したECU30のCPU31は、更新制御プログラムについてダイジェスト値を算出する(ステップS27)。CPU31が算出するダイジェスト値は、既知のハッシュ関数によって求めたダイジェスト値(ハッシュ値)であってもよく、MD5などのその他のアルゴリズムによって求めたダイジェスト値であってもよい。また、更新制御プログラムが、複数のプログラムからなるプログラム群により構成されている場合、予め定めたプログラムのみからダイジェスト値を算出してもよい。更新後の制御プログラムを含めてダイジェスト値を算出してもよい。なお、ダイジェスト値を算出する範囲は返答プログラムにより規定されているものとする。
【0051】
次いで、CPU31は、ECU30の基本機能を動作させ、自装置(ECU30自身)が正常に動作するか否かを判定する(ステップS28)。自装置が正常に動作すると判定した場合(S28:YES)、CPU31は、その判定結果と共に、ステップS27で算出したダイジェスト値を通信部34を通じてゲートウェイ10へ送信する(ステップS29)。また、自装置が正常に動作しなかった場合(S28:NO)、CPU31は、本フローチャートによる処理を終了する。
【0052】
ゲートウェイ10のCPU11は、ECU30から送信される判定結果及びダイジェスト値を車内通信部14にて受信した場合(ステップS30)、受信したダイジェスト値を暗号化し(ステップS31)、暗号化したダイジェスト値を無線通信部15を通じてサーバ装置5へ送信する(ステップS32)。
【0053】
なお、本実施の形態では、ECU30において更新制御プログラムのダイジェスト値を算出し、自装置が正常に動作すると判定した場合、算出したダイジェスト値をゲートウェイ10へ送信する構成としたが、ECU30では、更新後の制御プログラムによって自装置が正常に動作するか否かの判定を行い、その判定結果をゲートウェイ10に返答する処理のみを実行してもよい。この場合、ゲートウェイ10は、ECU30から正常に動作する旨の返答を受信したとき、ステップS21で受信した更新データに含まれる更新制御プログラムからダイジェスト値を算出し、算出したダイジェスト値を暗号化した上でサーバ装置5へ送信する構成とすればよい。
【0054】
図7はダイジェスト値を検証する処理の手順を示すフローチャートである。サーバ装置5のCPU51は、車両1のゲートウェイ10から送信される暗号化済みのダイジェスト値を通信部55にて受信した場合(ステップS41)、暗号化済みのダイジェスト値を復号する(ステップS42)。なお、ゲートウェイ10にてダイジェスト値を暗号化し、サーバ装置5にて暗号化済みのダイジェスト値を復号する手法には、公開鍵暗号方式等の既知の手法を用いることができる。
【0055】
次いで、サーバ装置5のCPU51は、復号したダイジェスト値と、記憶部54に予め記憶してある期待値とを比較し(ステップS43)、両者が一致するか否かを判断する(ステップS44)。
【0056】
両者が一致すると判断した場合(S44:YES)、CPU51は、更新対象のECU30において制御プログラムの更新が正常に終了したと判定する(ステップS45)。また、両者が一致しないと判断した場合(S44:NO)、CPU51は、ECU30における制御プログラムの更新が正常でなかったと判定する(ステップS46)。
【0057】
ECU30における制御プログラムの更新が正常でなかった場合、サーバ装置5は、記憶部54に記憶してある更新データをECU30へ再送する構成としてもよい。
【0058】
また、ECU30における制御プログラムの更新が正常でなかった場合、制御プログラムの配信元が意図しない動作がECU30にて実行される虞があるので、制御プログラムの停止を指示する通知をサーバ装置5から車両1側に通知し、制御プログラムを停止させる構成してもよい。
【0059】
更に、ECU30における制御プログラムの更新が正常でなかった場合、サーバ装置5は、更新前の制御プログラムに戻すべき旨の通知をゲートウェイ10を介してECU30へ送信し、ECU30の記憶部33に記憶された更新後の制御プログラムを更新前の制御プログラムに戻すようにしてもよい。なお、更新前の制御プログラムは、サーバ装置5の記憶部54、ゲートウェイ10の記憶部13、及びECU30の記憶部33の何れかで保持されていればよい。サーバ装置5から送信される前記通知をECU30が受信した場合、自身の記憶部33、ゲートウェイ10の記憶部13、及びサーバ装置5の記憶部54の何れかから更新前の制御プログラムを取得し、更新後の制御プログラムを更新前の制御プログラムに書き換えることによって、元に戻すことが可能である。
【0060】
以上のように、本願では、制御プログラムを更新する更新データに、制御プログラムのダイジェスト値を算出する処理、自装置が正常に動作するか否かを判定する処理、及び正常に動作する場合にダイジェスト値をゲートウェイ10へ送信する処理を実行させるコンピュータプログラム(返答プログラム)を実装できるので、事前にECU30内に返答プログラムを実装しておく場合と比較して、返答プログラムを改竄することが困難となる。また、更新データの配信側にて返答プログラムを作成することができるため、更新する都度、ダイジェスト値に対する期待値を変更することができ、改竄及びなりすましを防止することができる。
【0061】
今回開示された実施の形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0062】
1 車両
10 ゲートウェイ
11 CPU
12 RAM
13 記憶部
14 車内通信部
15 無線通信部
30 ECU
31 CPU
32 RAM
33 記憶部
34 通信部
5 サーバ装置
51 CPU
52 ROM
53 RAM
54 記憶部
55 通信部