(57)【特許請求の範囲】
【請求項１】
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信し、
受信した、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出し、
前記制御部へ前記修正プログラムを送信し、
送信した前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信し、
受信した前記第三の情報と、算出した前記第二の情報とを比較し、
該比較した結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する
ことを特徴とする、コンピュータにより実行される修正プログラム確認方法。
【請求項２】
前記第一の情報及び前記第三の情報は、真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする、請求項１に記載のコンピュータにより実行される修正プログラム確認方法。
【請求項３】
前記第一の情報及び前記第三の情報は、ＴＰＭ（Trusted Platform Module）に搭載されている機能により真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする、請求項２に記載のコンピュータにより実行される修正プログラム確認方法。
【請求項４】
さらに、前記制御部に対する前記修正プログラムの適用処理が成功したと判断した場合、前記修正プログラムが適用された前記制御プログラムを有効化させる指示を前記制御部へ送信する
ことを特徴とする、請求項１〜３のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
【請求項５】
さらに、前記制御部に対する前記修正プログラムの適用処理が失敗したと判断した場合、前記修正プログラムの適用処理をロールバックさせる指示を前記制御部へ送信する
ことを特徴とする、請求項１〜４のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
【請求項６】
さらに、前記受信した第一の情報に基いて、前記制御プログラムの状態が正常か否かを判定し、
前記送信する処理は、前記制御プログラムの状態が正常と判定した場合に、前記制御部に前記修正プログラムを送信することを含む
ことを特徴とする、請求項１〜５のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
【請求項７】
コンピュータに、
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信し、
受信した、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出し、
前記制御部へ前記修正プログラムを送信し、
送信した前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信し、
受信した前記第三の情報と、算出した前記第二の情報とを比較し、
該比較した結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する
処理を実行させることを特徴とする修正プログラム確認プログラム。
【請求項８】
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信する第１の受信部と、
受信された、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出する算出部と、
前記制御部へ前記修正プログラムを送信する送信部と、
送信された前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信する第２の受信部と、
受信された前記第三の情報と、算出された前記第二の情報とを比較する比較部と、
該比較された結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する判断部と、
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介したソフトウェアの更新方法に関する。
【背景技術】
【０００２】
情報処理装置のソフトウェアの更新方法の一例として、情報処理装置が、ネットワークを介して接続された更新サーバから更新ソフトウェアを取得して、取得したソフトウェアを適用する方法がある。ネットワークを介してソフトウェアを更新する方法の一例として、例えば以下の第１と第２の技術がある。
【０００３】
第１の技術は、先ず、ベンダシステムで、ユーザシステムにインストールされているソフトウェア情報やハードウェア情報を含むユーザシステム情報を取得する。次に、取得したユーザシステム情報を基にテスト環境を構築して、そのテスト環境においてソフトウェア更新パッチを適用したシステムの動作を検証し、テスト環境においてシステムが正常に動作するかを確認する。そして、正常動作が確認された場合に、ソフトウェア更新パッチをユーザシステムに送信し、ユーザシステムでは、そのソフトウェア更新パッチを適用して、自らのシステムを更新する。
【０００４】
第２の技術では、顧客システムに導入されているＯＳ（Operating System）およびアプリケーションを示す情報を含む顧客システム情報とパッチが適用できるＯＳおよびアプリケーションを規定する条件である排他条件を含むパッチ詳細情報とが保持される。そして、顧客システム情報とパッチ詳細情報に基づいて、顧客システムに対するパッチの適用の可否が判断される。パッチの適用が可であると判断された場合、パッチが顧客システムに送付されパッチの適用指示が出される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１０７８０３号公報
【特許文献２】特開２００４−１０２３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
更新対象のソフトウェアを自動車で稼動させる場合、自動車に搭載可能な計算機の資源は乏しく、更新処理の失敗時の復旧のための資源の確保が難しい。また自動車に搭載される計算機にかかる負荷の軽減が望まれる。そこで、更新サーバにおける、ソフトウェアの更新処理の確実な成否確認が重要となる。
【０００７】
しかしながら、上記第１及び第２の技術では、自動車で稼動するソフトウェアの更新の成否を更新サーバ側で確認することについては開示されていない。
【０００８】
そこで、１つの側面では、本発明は、自動車に対して更新ソフトウェアを送信して適用させる更新サーバが、更新ソフトウェアの適用の成否を確認する方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様の方法は、自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、自動車に搭載された当該制御部から、制御プログラムの状態に関する情報である第一の情報を受信し、受信した、第一の情報に基づいて、制御プログラムについての修正プログラムを制御部に適用した場合の制御プログラムの状態である第二の情報を算出し、制御部へ修正プログラムを送信し、送信した修正プログラムを制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、制御部から受信し、受信した第三の情報と、算出した第二の情報とを比較し、比較した結果に基づいて、制御部に対する修正プログラムの適用処理が成功したか失敗したかを判断する。
【発明の効果】
【００１０】
１実施態様によれば、自動車に対して更新ソフトウェアを送信して適用させる更新サーバが、更新ソフトウェアの適用の成否を確認する方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置の一実施例の構成を図解した機能ブロック図である。
【図２】本実施形態に係る情報処理システムの構成の一例を示す。
【図３】自動車と更新サーバのシーケンス図の一例を示す。
【図４】本実施形態に係る更新サーバの構成の一例を示す。
【図５】ホワイトリストＸの構成の一例を示す。
【図６】ホワイトリストＹの構成の一例を示す。
【図７】ホワイトリストＺの構成の一例を示す。
【図８】状態情報のデータ構造の一例を示す。
【図９】更新指示のデータ構造の一例を示す。
【図１０】最終指示のデータ構造の一例を示す。
【図１１】認証部が車載器の公開鍵とハッシュ関数を管理するための鍵管理情報の一例を示す。
【図１２】本実施形態に係る車載器の構成の一例を示す。
【図１３】本実施形態に係るＥＣＵの構成の一例を示す。
【図１４】更新サーバの処理内容を図解したフローチャートである。
【図１５】車載器の処理内容を図解したフローチャートである。
【図１６】ＥＣＵの処理内容を図解したフローチャートである。
【図１７】更新サーバのハードウェア構成の一例を示す。
【図１８】車載器のハードウェア構成の一例を示す。
【図１９】ＥＣＵのソフトウェアの更新機能の実現方法の一例（その１）を示す。
【図２０】ＥＣＵのソフトウェアの更新機能の実現方法の一例（その２）を示す。
【図２１】情報処理システムの変形例の構成の一例を示す。
【発明を実施するための形態】
【００１２】
図１は、情報処理装置の一実施例の構成を図解した機能ブロック図である。図１において情報処理装置１０は、第１の受信部１、算出部２、送信部３、第２の受信部４、比較部５、判断部６、最終指示部７、及び状態判定部８を含む。
【００１３】
第１の受信部１は、自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、自動車に搭載された当該制御部から、制御プログラムの状態に関する情報である第一の情報を受信する。
【００１４】
算出部２は、受信された、第一の情報に基づいて、制御プログラムについての修正プログラムを制御部に適用した場合の制御プログラムの状態である第二の情報を算出する。
【００１５】
送信部３は、制御部へ修正プログラムを送信する。
第２の受信部４は、送信された修正プログラムを制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、制御部から受信する。
【００１６】
比較部５は、第２の受信部４により受信された第三の情報と、算出部２により算出された第二の情報とを比較する。
【００１７】
判断部６は、比較部５により比較された結果に基づいて、制御部に対する修正プログラムの適用処理が成功したか失敗したかを判断する。
【００１８】
最終指示部７は、制御部に対する修正プログラムの適用処理が成功したと判断部６により判断された場合、修正プログラムが適用された制御プログラムを有効化させる指示を制御部へ送信する。また、最終指示部７は、制御部に対する修正プログラムの適用処理が失敗したと判断部６により判断された場合、修正プログラムの適用処理をロールバックさせる指示を制御部へ送信する。
【００１９】
状態判定部８は、第１の受信部１が受信した第一の情報に基いて、制御プログラムの状態が正常か否かを判定する。そして送信部３は、状態判定部８により制御プログラムの状態が正常であると判定された場合に、制御部へ修正プログラムを送信する。
【００２０】
また、第一の情報及び第三の情報は、ＴＰＭ（Trusted Platform Module）に搭載されている機能により真正性が確認されているソフトウェアにより作成された情報である。
【００２１】
図２は、本実施形態に係る、自動車に搭載されたＥＣＵ（Electronic Control Unit）の更新システムの一例を示す。
【００２２】
図２において、更新システム２０は自動車２１と更新サーバ２２を含む。そして自動車２１は車載器２３とＥＣＵ２４Ａ、２４Ｂ、２４Ｃを含む。更新サーバ２２と車載器２３はネットワークを介して接続される。そして、車載器２３とＥＣＵ２４はネットワークまたはバスを介して接続される。更新サーバ２２と車載器２３を接続するネットワークには、例えば無線ネットワークがある。ＥＣＵ２４と車載器２３を接続するネットワークには、例えばＣＡＮ（Controller Area Network）やＦｌｅｘＲａｙなどがある。以下の説明では、ＥＣＵ２４Ａ、２４Ｂ、２４Ｃを特に区別しない場合には、単にＥＣＵ２４と記す。
【００２３】
車載器２３は、ネットワークを介して更新サーバ２２と情報の通信が可能な装置である。車載器２３は、更新サーバ２２から更新ソフトウェアを受信し、受信した更新ソフトウェアを更新対象のＥＣＵ２４に適用するように指示する。また、車載器２３は、各ＥＣＵ２４で稼動するソフトウェアの状態を示す構成情報を収集して、更新サーバ２２に送信する。車載器２３は、更新サーバ２２と各ＥＣＵ２４に対して通信可能であれば特に限定されず、カーナビゲーション装置や、自動車２１に設置可能なスマートフォンなどでもよい。
【００２４】
ＥＣＵ２４は、エンジンの制御で用いられる各種のセンサを含むセンサ系統及びエンジンの動作を制御する。ＥＣＵ２４は車載器２３から構成情報の収集を指示されると、自身の構成情報を取得して車載器２３に通知する。また、ＥＣＵ２４は車載器２３からソフトウェアの更新指示を受信し、指示された内容に自身のソフトウェアを更新する。ソフトウェアの更新は、更新ソフトウェアのインストール処理と、更新ソフトウェアの有効化処理の２段階で行われ、更新ソフトウェアの有効化は、更新サーバ２２からの更新の有効化の指示を受け取った後に行われる。尚、ソフトウェアの構成情報は例えば、ソフトウェアの各種パラメータであって、当該パラメータが正常であればソフトウェアが正常であることが保証されるパラメータである。
【００２５】
更新サーバ２２は、車載器２３に対してＥＣＵ２４の構成情報の取得要求を送信し、その応答としてＥＣＵ２４の構成情報を受信する。そして更新サーバ２２は、受信した構成情報に基いて、自動車２１の各ＥＣＵ２４の状態を把握し、最適な更新ソフトウェアを選別する。更新サーバ２２は、構成情報に基いて作成した、車両と同様の構成の実機またはシミュレータを用いて、選定したソフトウェアの適用が成功した場合の各ソフトウェアの構成情報の値が格納されたホワイトリストを算出する。そして、更新サーバ２２は選別した更新ソフトウェアの適用指示を車載器２３に送信する。その後更新サーバ２２は、車載器２３から更新ソフトウェア適用後の構成情報を受信して、受信した構成情報とホワイトリストとに基いてソフトウェアの更新の成否を判定する。ソフトウェアの更新が成功したと判定した場合、更新サーバ２２は車載器２３に対して更新ソフトウェアの有効化を指示し、更新が失敗したと判定した場合、更新サーバ２２は車載器２３に対して更新処理のロールバックを指示する。
【００２６】
尚、更新ソフトウェアは不具合の見つかったソフトウェアに適用される形式のソフトウェアでもよいし、不具合の見つかったソフトウェアと入れ替わる形式のソフトウェアでもよい。具体的には例えば更新ソフトウェアはソフトウェアのパッチである。
【００２７】
このような構成とすることで、ソフトウェアの更新の成否を更新サーバ２２で判定し、成功したと判定された場合に実際の更新の反映がなされるため、更新後のＥＣＵ２４の信頼性を高めることができ、また、更新後のＥＣＵ２４の不具合を未然に防ぐことができる。また、適切な更新ソフトウェアの選定を更新サーバ２２が行うため、自動車２１の各ＥＣＵ２４のソフトウェアの更新に伴うＥＣＵ２４及び車載器２３の負荷を軽減することができる。
【００２８】
図３に、本実施形態に係る、自動車２１と更新サーバ２２のシーケンス図の一例を示す。
【００２９】
先ず、更新サーバ２２は、自動車２１に対してＥＣＵ２４の構成情報の取得要求を送信する（Ｓ１０１）。自動車２１は構成情報の取得要求を受信すると、各ＥＣＵ２４から構成情報を収集して、収集した構成情報を更新サーバ２２に送信する（Ｓ１０２）。更新サーバ２２は構成情報を受信すると、受信した構成情報に基いてソフトウェアが更新可能か否かを判定する。更新可能と判定した場合、更新サーバ２２は更新ソフトウェアを選定し、選定したソフトウェアの適用が成功した場合の各ソフトウェアの構成情報の値が格納されたホワイトリストを算出する。そして、更新サーバ２２は選定した更新ソフトウェアを自動車２１に送信する（Ｓ１０３）。自動車２１は更新ソフトウェアを受信すると、更新ソフトウェアのインストール処理を行う。ただしこの時点においては、自動車２１はソフトウェアの更新内容の有効化は行わない。次に自動車２１は、更新ソフトウェアインストール処理後の構成情報を取得して更新サーバ２２に送信する（Ｓ１０４）。更新サーバ２２は、更新ソフトウェアインストール処理後の構成情報を受信すると、受信した構成情報とホワイトリストの値を比較することでソフトウェアの更新が正常に行われたかを検証する。そしてソフトウェアの更新の成否に基づいて、更新サーバ２２は自動車２１に最終指示を送信する（Ｓ１０５）。最終指示は、更新ソフトウェアのインストール処理が正常に行われたと判定された場合には、更新内容を有効にするように指示するものとなる。一方ソフトウェアの更新が正常に行われていないと判定された場合には、最終指示は自動車２１にロールバックを指示するものとなる。最終指示を受信すると自動車２１は指示内容に応じた処理である更新確定処理を行う。すなわち、自動車２１は、更新ソフトウェアの有効化の指示を受信すると更新ソフトウェアの有効化を行い、ロールバックの指示を受信するとロールバックを行う。
【００３０】
図４は、本実施形態に係る更新サーバの構成の一例を示す。
更新サーバ２２は、管理部３１、認証部３２、状態情報取得部３３、決定部３４、選定部３５、検証部３６、記憶部３７、及び履歴管理部３８を含む。更新サーバ２２は、情報処理装置１０の一例である。状態情報取得部３３は、第１の受信部１、及び第２の受信部４の一例である。選定部３５は、算出部２の一例である。検証部３６は、比較部５、判断部６、及び最終指示部７の一例である。決定部３４は、状態判定部８の一例である。
【００３１】
管理部３１は、更新サーバ２２の管理対象車両の出荷前の時点におけるソフトウェアの構成情報を記憶部３７に記憶して管理する。以下の説明では、出荷前における各ＥＣＵ２４のソフトウェアの構成情報が格納されたソフトウェア管理情報をホワイトリストＸ（４０）と記す。
【００３２】
図５に、ホワイトリストＸ（４０）の構成の一例を示す。ホワイトリストＸ（４０）は、ソフトウェア名４１、製造者４２、種別４３、ハッシュ値４４、ハッシュ値取得方法４５、ソフトウェア実体４６、登録日４７のデータ項目を含む。尚、ホワイトリストＸ（４０）は車両毎に管理されるものとする。
【００３３】
ソフトウェア名４１は、車両に搭載可能なソフトウェアを一意に識別するための情報である。製造者４２は、ソフトウェアの製造元の会社名の情報である。種別４３は、ソフトウェアが稼動するＥＣＵ２４の種別を表す情報である。ハッシュ値４４は、ソフトウェアの構成情報のハッシュ値をハッシュ値取得方法４５で取得した結果の値である。このハッシュ値４４は、ソフトウェアが正常な状態か否かを判定するために使用される。ソフトウェアから取得した構成情報のハッシュ値が、このハッシュ値４４の値と一致する場合に、そのソフトウェアは正常であると判定される。ハッシュ値取得方法４５は、ハッシュ値４４を取得する際に用いられる方法である。尚、ハッシュ値取得方法４５は、ソフトウェア名と対応付けて、車載器２３も保持する。ソフトウェア実体４６は、ソフトウェアの実体、すなわち、ソフトウェアのバイナリデータが格納される。登録日４７は、当該レコードのソフトウェアがソフトウェア管理情報に登録された日付である。尚、ソフトウェア実体４６には、ソフトウェアの実ファイルが格納された記憶領域のアドレスが格納されてもよい。
【００３４】
また管理部３１は、ソフトウェアに不具合が見つかった場合、不具合が見つかったソフトウェアを修正するためのソフトウェアである更新ソフトウェアを取得する。例えば管理部３１は、不具合のあったソフトウェアの製造元から、更新対象のソフトウェア名４１と更新ソフトウェアとを取得する。そして管理部３１は、ホワイトリストＸ（４０）の複製である新たなホワイトリストＹを作成し、ホワイトリストＹから、取得した更新対象のソフトウェア名４１と一致するレコードを抽出する。そして抽出したレコードの各フィールドの情報を、管理部３１は、取得した更新ソフトウェアの情報に更新する。更新ソフトウェアは、更新サーバ２２に接続された他の情報処理装置から入力されてもよいし、ユーザにより入力されてもよい。管理部３１は、作成したホワイトリストＹを記憶部３７に格納する。
【００３５】
図６は、ホワイトリストＹ（５０）の構成の一例を示す。ホワイトリストＹ（５０）のデータ構造はホワイトリストＸ（４０）と同様である。図６の例では、図５のホワイトリストＸ（４０）のうち、ソフトウェア名４１が「Ａ−ＦＦ０３」に不具合が見つかり、その更新ソフトウェアとして、「Ａ−ＦＦ０４」が取得された場合の例を示している。図５のホワイトリストＸ（４０）と比較すると、図６のホワイトリストＹ（５０）では、ソフトウェア名４１が「Ａ−ＦＦ０３」のレコードの情報が「Ａ−ＦＦ０４」の情報に更新されている。
【００３６】
さらに管理部３１は、不具合の見つかったソフトウェアに更新ソフトウェアを適用した場合に影響が及ぶソフトウェアの範囲を特定する。
【００３７】
不具合のあるソフトウェアを修正した場合には、そのソフトウェアの出力値が変化する可能性がある。そこで管理部３１は、例えば以下のように更新ソフトウェアを適用した場合に影響の及ぶソフトウェアを特定する。ここでは説明のため、所定のＥＣＵ２４のソフトウェアに不具合が見つかった場合を考え、不具合の見つかったソフトウェアをソフトウェアＸと記す。管理部３１は、ソフトウェアＸからの出力値であってソフトウェアＸの修正により変化する当該出力値を入力とするソフトウェア（ソフトウェアＹと記す）を特定する。さらに、特定したソフトウェアＹからの出力値であってソフトウェアＸの修正により変化する当該出力値を入力とするソフトウェアを特定する。さらに同様に、新たに特定されたソフトウェアからの出力値であってソフトウェアＸの修正により変化する当該出力値を入力とするソフトウェアを特定していく。このように管理部３１はソフトウェアＸの修正により影響の及ぶソフトウェアを特定する。
【００３８】
さらに、ソフトウェアＸの修正により影響の及ぶソフトウェアのそれぞれについて、管理部３１は修正が必要である場合にはそのソフトウェアの更新ソフトウェアを、例えば外部から取得する。そして、取得した更新ソフトウェアのそれぞれに対して、さらに管理部３１は影響の及ぶソフトウェアを特定し、特定したソフトウェアのそれぞれについてソフトウェアの修正が必要であれば更新ソフトウェアを取得する。
【００３９】
以下の説明では、管理部３１により特定された、不具合の見つかったソフトウェア、及び、不具合の見つかったソフトウェアの更新により影響の及ぶソフトウェアであって修正が必要なソフトウェアの集合を、更新対象ソフトウェアの集合と記す。
【００４０】
さらに管理部３１は、ホワイトリストＹにおける、更新対象ソフトウェアの集合に含まれるソフトウェアのレコードを更新ソフトウェアの情報に更新した、新たな管理情報を作成する。以下の説明では、ホワイトリストＹの更新対象ソフトウェアのレコードを更新ソフトウェアの情報に更新した新たな管理情報を、ホワイトリストＺと記す。管理部３１は、作成したホワイトリストＺを記憶部３７に格納する。
【００４１】
図７は、ホワイトリストＺの構成の一例を示す。ホワイトリストＺ（６０）のデータ構造はホワイトリストＸ（４０）と同様である。図７は、図５のホワイトリストＸ（４０）の例において、「Ａ−ＦＦ０３」に不具合が見つかり、「Ａ−ＦＦ０４」に更新される場合の例である。この例では、「Ｂ−ＴＴ７７」は「Ａ−ＦＦ０３」の出力値を入力とするものとし、「Ａ−ＦＦ０３」と「Ｂ−ＴＴ７７」は連携して動作するものとする。この場合、管理部３１は「Ｂ−ＴＴ７７」を更新対象ソフトウェアであると判定し、判定結果を例えば出力装置に出力する。その後、判定結果を参照したＡ社とＢ社とが協議の結果、Ｂ社が今回の変更に対応するため「Ｂ−ＴＴ７７」の更新を了承し、「Ｂ−ＴＴ７７」の更新ソフトウェアである「Ｂ−ＴＴ７８」を作成する。そして、「Ａ−ＦＦ０３」と「Ｂ−ＴＴ７７」の組み合わせの場合に、「Ａ−ＦＦ０３」を原因とする不具合が発生する事、それぞれを「Ａ−ＦＦ０４」と「Ｂ−ＴＴ７８」に同時に更新する事によって、その不具合が解消される事が確認されたとする。すると管理部３１は「Ｂ−ＴＴ７８」を、例えばＢ社から取得し、ホワイトリストＹのソフトウェア名４１が「Ｂ−ＴＴ７７」のレコードの各フィールドの情報を「Ｂ−ＴＴ７８」の対応する情報に更新してホワイトリストＺを作成する。
【００４２】
例えば、上記の例のように、ソフトウェア単独では不具合は発生せず、他のソフトウェアとの組み合わせが所定の条件である場合に不具合が発生する場合も考えられる。さらに、同じ車種でも出荷時期によって、ソフトウェアのバージョンが異なることも考えられる。よって、実際の車両のソフトウェアのバージョンやソフトウェア間の関係性なども考慮して、更新対象ソフトウェアが決定されてもよい。本実施形態では、管理部３１は、想定される全ての対象車両の状態毎の更新対象ソフトウェアの集合を記憶部３７に格納する。ここで、想定される全ての対象車両の状態とは、例えば、車両で稼動するソフトウェアの種類、バージョン、複数のソフトウェア間の接続関係等を考慮した、想定されるすべての状態を指す。
【００４３】
またホワイトリストＺ（６０）は、想定される全ての対象車両の状態毎に作成される。ホワイトリストＺの更新対象ソフトウェアのレコードのハッシュ値４４の値は、想定される各対象車両の各状態を再現した実機もしくはシミュレータにより検証されたものが格納される。
【００４４】
尚、ホワイトリストＺ（６０）は、車種毎に雛形を作成しておき、更新対象車両の状態情報を取得した後に、車両の状態情報に基いて、実機もしくはシミュレータを用いて正確なホワイトリストＺ（６０）を作成してもよい。
【００４５】
本実施形態では、ソフトウェアの修正においては、更新ソフトウェアを適用する形とするが、このような更新ソフトウェアには、ソフトウェアの設定値（パラメータ）を変更するプログラムを含んでもよい。
【００４６】
また、ホワイトリストＹ（５０）、Ｚ（６０）の更新ソフトウェアのレコードのハッシュ値４４の算出の基となった構成情報には、更新ソフトウェアの実機又はシミュレータにおける適用時の戻り値などの、更新ソフトウェア適用時のログの情報が含まれてもよい。
【００４７】
認証部３２は、更新サーバ２２と車載器２３の間の通信のセキュリティを確保するための仕組みを提供する。車載器２３と更新サーバ２２間の通信のセキュリティの確保については、後ほど説明する。
【００４８】
状態情報取得部３３は、所定の車両に対して、車両で稼動するソフトウェアの構成情報をまとめた状態情報の取得要求を送信する。そして状態情報取得部３３は、取得対象の車両の車載器２３から状態情報を受信する。
【００４９】
図８は、状態情報のデータ構造の一例を示す。状態情報７０は、ソフトウェア名７１とハッシュ値７２を含む。ソフトウェア名７１はソフトウェアを一意に識別するための情報である。ハッシュ値７２は、構成情報からハッシュ関数を用いて算出されたハッシュ値の情報である。
【００５０】
決定部３４は、車載器２３から受信した状態情報７０に基いて、車両に更新ソフトウェアを適用することが可能か否かを判定する。例えば対象車両の更新対象ソフトウェアが不正に改造されている場合等には、更新処理を行うと新たな障害が発生する可能性がある。このようなケースを防ぐために、更新に先立ち、車両に搭載されているソフトウェアが正常か否かの確認が行われる。更新ソフトウェアの適用が不能であると判定した場合には、決定部３４は、車載器２３に対して、警告表示を行うように指示する。警告表示の内容は、例えば、リモートでのソフトウェアの更新が不可能である旨や、車両の回収勧告などを含んでもよい。
【００５１】
具体的には例えば、決定部３４は、各更新対象のソフトウェアについて、構成情報のハッシュ値と、ホワイトリストＸ（４０）のハッシュ値４４とが一致するか否かを判定する。そして決定部３４は、更新対象ソフトウェアのすべてのハッシュ値が、構成情報とホワイトリストＸ（４０）間で一致する場合に、対象車両に更新ソフトウェアを適用可能であると判定する。更新対象ソフトウェアのいずれかのハッシュ値が、構成情報とホワイトリストＸ（４０）で一致しない場合には、対象車両に更新ソフトウェアを適用することは不可であると決定部３４は判定する。
【００５２】
さらに具体的には決定部３４は、各更新対象ソフトウェアに対して、状態情報７０からソフトウェア名７１が更新対象ソフトウェアのソフトウェア名と一致するレコードを抽出する。そして決定部３４は、抽出したレコードのハッシュ値７２と、ホワイトリストＸ（４０）においてソフトウェア名４１が同一のレコードのハッシュ値４４とが同一か否かを判定する。すべての更新対象ソフトウェアで、状態情報７０のレコードとホワイトリストＸ（４０）のレコードのハッシュ値が一致することを確認した場合、決定部３４は、対象車両は更新ソフトウェアの適用が可能であると判定する。
【００５３】
尚、ホワイトリストＸ（４０）に格納されている情報は、車両の出荷時点のものであるため、車両のソフトウェアが例えば、出荷時点から最新のバージョンに更新されている場合には、ハッシュ値が一致しない可能性がある。そこで例えば、予め管理部３１は、車両が正常と判断される、想定されるソフトウェアのすべての組み合わせのホワイトリストを作成しておく。そして決定部３４は、車両から取得した構成情報を何れかのホワイトリストと比較したときに、対応するソフトウェアのハッシュ値がすべて一致するものがあれば、更新ソフトウェアの適用が可能と判定してもよい。
【００５４】
選定部３５は、状態情報７０に基いて更新対象ソフトウェア及びホワイトリストＺ（６０）を選定し、ソフトウェアの更新指示を車載器２３に送信する。すなわち、先ず選定部３５は、状態情報７０に基いて、想定される全ての対象車両の状態毎に対応付けられて記憶部３７に記憶された更新ソフトウェアの集合のうち、対象車両の状態に対応する更新ソフトウェアの集合を特定する。次に、選定部３５は、状態情報７０に基いて、想定される全ての対象車両の状態毎に作成されているホワイトリストＺ（６０）から、対象車両の状態に対応するホワイトリストＺ（６０）を特定する。以下の説明においては、「更新対象ソフトウェア」、「ホワイトリストＺ（６０）」と記す場合には、それぞれ、更新対象車両の状態情報７０に応じて選定された、「更新対象ソフトウェア」、「ホワイトリストＺ（６０）」を指すものとする。
【００５５】
図９は、更新指示８０のデータ構造の一例を示す。更新指示８０は、対象ソフトウェア名８１、ＥＣＵ名８２、及び更新ソフトウェア実体８３のデータ項目を含む。対象ソフトウェア名８１は、更新対象ソフトウェアを一意に識別するための情報である。ＥＣＵ名８２は、対象ソフトウェアが稼動しているＥＣＵ２４を一意に識別するための情報である。更新ソフトウェア実体８３は、更新ソフトウェアの実体である。選定部３５は、更新対象ソフトウェアの集合に含まれるすべてのソフトウェアに対応するレコードを作成し、更新指示に含ませる。
【００５６】
図９の例において更新指示８０には、対象ソフトウェア名８１、ＥＣＵ名８２、更新ソフトウェア実体８３がそれぞれ、「Ａ−ＦＦ０３」、「ＥＣＵ２０１」、「Ａ−ＦＦ０４」の実体のレコードが格納されている。また、更新指示８０には、対象ソフトウェア名８１、ＥＣＵ名８２、更新ソフトウェア実体８３がそれぞれ、「Ｂ−ＴＴ７７」、「ＥＣＵ２０２」、「Ｂ−ＴＴ７８」の実体のレコードが格納されている。
【００５７】
検証部３６は、更新ソフトウェアが正しくインストール（適用）されたか否かの検証を行う。具体的には検証部３６は、更新ソフトウェアのインストール後に車載器２３から送られてくる状態情報７０と、ホワイトリストＺ（６０）の情報とを用いて検証を行う。更新ソフトウェアの適用後に車載器２３から送られてくる状態情報は図８の状態情報７０の形式と同様である。
【００５８】
検証部３６は、受信した状態情報７０に含まれる更新対象ソフトウェアのハッシュ値７２が、ホワイトリストＺ（６０）の対応するソフトウェアのハッシュ値４４と一致するか否かを判定する。そして検証部３６は、更新対象ソフトウェアのすべてのハッシュ値が、状態情報７０のレコードとホワイトリストＺ（６０）のレコード間で一致する場合に、対象車両の更新ソフトウェアの適用が正常に行われたと判定する。更新対象ソフトウェアのいずれかのハッシュ値が、状態情報７０のレコードとホワイトリストＺ（６０）のレコードとで一致しない場合には、対象車両の更新ソフトウェアの適用が失敗したと検証部３６は判定する。なお、失敗したと判定された場合でも、予め定められた条件を満たしている場合には、正常に行われたと判定しなおすことも考えられる。条件として例えば、更新対象ソフトウェアに、自動車の走行に影響する第１種のソフトウェアと、走行に直接には影響しない第二種のソフトウェアとがある場合、第１種のソフトウェアについては全て、ハッシュ値が、状態情報７０のレコードとホワイトリストＺ（６０）のレコード間で一致することという条件が考えられる。
【００５９】
検証部３６は、更新ソフトウェアのインストールの成否の判定結果に応じて、車載器に最終指示を送信する。図１０は、最終指示のデータ構造の一例を示す。図１０において最終指示８５は、対象ソフトウェア名８６、ＥＣＵ名８７、及び指示内容８８のデータ項目を含む。対象ソフトウェア名８６は、更新対象ソフトウェアを一意に識別するための情報である。ＥＣＵ名８７は、対象ソフトウェアが稼動しているＥＣＵ２４を一意に識別するための情報である。指示内容８８は、対象ソフトウェアに対する指示内容である。検証部３６は、ソフトウェアの更新が成功したと判定した場合、指示内容８８に更新の有効化を設定する。一方検証部３６は、更新が失敗したと判定した場合、指示内容８８に更新処理のロールバックを設定する。更新が失敗したと判定した場合には、検証部３６はロールバックの指示とともに再度更新ソフトウェアを車載器２３に送付して再度更新指示８０を送信してもよい。尚、検証部３６は、更新対象ソフトウェアの集合に含まれるすべてのソフトウェアに対応するレコードを作成し、最終指示８５に含ませる。
【００６０】
記憶部３７は、ホワイトリストＸ（４０）、ホワイトリストＹ（５０）、ホワイトリストＺ（６０）、及び更新対象ソフトウェアの集合を記憶する。また記憶部３７は、更新ソフトウェアのインストール作業ログを記憶する。
【００６１】
履歴管理部３８は、車載器２３からソフトウェアの更新処理の作業ログを受信し、受信した作業ログを記憶部３７に記録する。
【００６２】
次に、車載器２３と更新サーバ２２の通信のセキュリティの確保について説明する。
本実施形態では、更新サーバ２２と車載器２３との通信のセキュリティを確保するために、暗号化およびデジタル署名が用いられる。デジタル署名のための公開鍵と秘密鍵とのペアは、更新サーバと車載器との組み合わせ毎に生成され、車載器の鍵ペアは、各車両の出荷時点に生成される。暗号化の対象となるデータは、相手の公開鍵により暗号化され、自らの秘密鍵で復号化される。デジタル署名は、更新サーバおよび車載器のそれぞれが保持する自らの秘密鍵により署名されることで行われる。よって、公開鍵と秘密鍵のペアは複数存在し、第一のペア（更新サーバの鍵ペア）については、更新サーバ２２が更新サーバ２２の秘密鍵を、車載器２３が更新サーバ２２の公開鍵を保持し、第二のペア（車載器の鍵ペア）は車載器２３が車載器２３の秘密鍵を、更新サーバ２２が車載器２３の公開鍵を保持することとなる。
【００６３】
車載器の鍵ペアは、各車載器２３に含まれるＴＰＭにより作成されたものが用いられてもよい。
【００６４】
更新サーバ２２の認証部３２は、更新サーバ２２の秘密鍵を保持する。また、更新サーバ２２は、車載器２３の公開鍵、及び、送信データとデジタル署名の比較で用いるハッシュ関数を、車載器毎に管理する。図１１は、認証部３２が車載器２３の公開鍵とハッシュ関数を管理するための鍵管理情報９０の一例を示す。鍵管理情報９０は、車載器識別情報９１、公開鍵９２、及びハッシュ関数９３のデータ項目を含む。車載器識別情報９１は車載器２３を一意に識別するための識別情報である。公開鍵９２は、車載器識別情報９１で識別される車載器２３の公開鍵９２の情報である。公開鍵９２は車載器識別情報９１の車載器２３の秘密鍵と対応する。ハッシュ関数９３は、送信データとデジタル署名の比較のために用いられるハッシュ関数９３である。このハッシュ関数９３は、車載器識別情報９１の車載器２３にも同じハッシュ関数が記憶される。鍵管理情報９０には、各車両の出荷時点に登録される。
【００６５】
次に、認証部３２による車載器２３の認証及び車載器２３からのデータの機密性の確認方法の一例として、デジタル署名を用いた方法について説明する。尚、認証及び機密性の確認の方法は以下で説明するデジタル署名を用いたものに限定されず、種々の方法が用いられてもよい。ここでは、認証部３２と車載器２３の間で送受信されるデータは暗号化される一例を説明する。
【００６６】
認証に当たって先ず車載器２３は、送信対象データのハッシュ値を、車載器２３に記憶されたハッシュ関数を用いて算出する。次に車載器２３は、算出したハッシュ値を自身の秘密鍵を用いて暗号化し、デジタル署名を作成する。そして車載器２３は、作成したデジタル署名と送信対象データとを、サーバ２２の公開鍵を用いて暗号化する。そして車載器２３は、暗号化した、送信対象データとデジタル署名とを、更新サーバ２２に送信する。
【００６７】
車載器２３から、暗号化された、送信対象データとデジタル署名とを受信すると、認証部３２は、サーバ２２の秘密鍵を用いて受信した情報を復号する。次に認証部３２は、車載器２３の公開鍵９２を鍵管理情報９０から取得して、その公開鍵９２で、デジタル署名を復号してハッシュ値を取得する。次に認証部３２は、車載器２３に対応するハッシュ関数９３を鍵管理情報９０から取得し、取得したハッシュ関数９３を用いて、送信対象データのハッシュ値を算出する。そして認証部３２は、算出したハッシュ値と、デジタル署名を復号して得たハッシュ値とを比較し、比較の結果が一致した場合に、車載器２３が正当な車載器２３であると判定し、車載器２３から受信したデータは改竄されていないと判定する。
【００６８】
尚、認証部３２と車載器２３の間で送受信されるデータの暗号化については、共通鍵暗号と公開鍵暗号を組み合わせたハイブリッド暗号方式を用いてもよいし、種々の方法が用いられてもよい。
【００６９】
このように更新サーバ２２の認証部３２は、車載器２３の認証と車載器２３から受信した情報が改竄されていないことを確認する。
【００７０】
次に、車載器２３の構成について説明する。図１２は、本実施形態に係る車載器の構成の一例を示す。
【００７１】
車載器２３は、認証情報格納部２０１、サーバ認証部２０２、構成情報収集部２０３、更新ソフトウェア適用部２０４、及び信頼性チェック部２０５を含む。
【００７２】
認証情報格納部２０１は、更新サーバとの通信のセキュリティを確保するために使用される、更新サーバ２２の公開鍵、車載器２３の秘密鍵、及びハッシュ関数を格納する。更新サーバ２２の公開鍵、車載器２３の秘密鍵、及びハッシュ関数は車両の出荷前に格納される。尚、車載器２３の秘密鍵とハッシュ関数は、鍵管理情報９０の公開鍵９２とハッシュ関数９３に対応する。
【００７３】
サーバ認証部２０２は、更新サーバ２２と車載器２３の間の通信セキュリティを確保する。サーバ認証部２０２による、更新サーバ２２の認証、及び更新サーバ２２から受信した情報が改竄されていないことの判定も、上記の認証部３２による車載器２３の認証と同様にして行われる。すなわち、認証に当たって、先ず更新サーバ２２の認証部３２は、送信対象データのハッシュ値を、ハッシュ関数を用いて算出する。次に認証部３２は、算出したハッシュ値を、サーバ２２の秘密鍵を用いて暗号化し、デジタル署名を作成する。そしてサーバ２２は、作成したデジタル署名と送信対象データとを、車載器２３の公開鍵を用いて暗号化する。そしてサーバ２２は、暗号化した、送信対象データとデジタル署名とを、車載器２３に送信する。
【００７４】
更新サーバ２２から、暗号化された、送信対象データとデジタル署名とを受信すると、サーバ認証部２０２は、車載器２３の秘密鍵を用いて受信した情報を復号する。次にサーバ認証部２０２は、サーバ２２の公開鍵を用いてデジタル署名を復号しハッシュ値を取得する。次にサーバ認証部２０２は、認証情報格納部２０１に格納されたハッシュ関数を用いて、送信対象データのハッシュ値を算出する。そしてサーバ認証部２０２は、算出したハッシュ値と、デジタル署名を復号して得たハッシュ値とを比較し、比較の結果が一致した場合に、更新サーバ２２が正当であると判定し、更新サーバ２２から受信した送信対象データは改竄されていないと判定する。
【００７５】
構成情報収集部２０３は、車両の各ＥＣＵ２４のソフトウェアの構成情報を取得し、取得した構成情報に基づいて状態情報７０を作成し、更新サーバ２２に送信する。すなわち構成情報収集部２０３は、先ず各ＥＣＵ２４に対してソフトウェアの構成情報の取得要求を送信する。次にこの取得要求の応答として、構成情報収集部２０３は各ＥＣＵ２４からソフトウェアの構成情報を取得する。次に、構成情報収集部２０３は取得した構成情報から状態情報７０を作成する。そして構成情報収集部２０３は作成した状態情報７０を更新サーバ２２に送信する。
【００７６】
状態情報７０の作成については、具体的には構成情報収集部２０３は、各ＥＣＵ２４から受信したソフトウェアに対してレコードを作成する。そして構成情報収集部２０３は、ソフトウェア名７１に収集した構成情報に対応するソフトウェア名を格納し、ハッシュ値７２に、そのソフトウェアに対応付けられたハッシュ値取得方法４５を用いて算出した、ソフトウェアのハッシュ値を格納する。
【００７７】
構成情報の収集は、更新サーバ２２からの構成情報取得要求を受信したとき、及び、ソフトウェアの適用処理が完了した直後に行われる。
【００７８】
更新ソフトウェア適用部２０４は、更新サーバ２２からソフトウェアの更新指示８０を受信し、更新指示８０で指示された各ＥＣＵ２４に対してソフトウェアの更新を指示する。具体的には、更新ソフトウェア適用部２０４は、受信した更新指示８０の各レコードのＥＣＵ名８２のＥＣＵ２４に対して、そのレコードの対象ソフトウェア名８１と更新ソフトウェア実体８３とを対応付けて送信する。
【００７９】
さらに更新ソフトウェア適用部２０４は、更新サーバ２２から最終指示８５を受信し、最終指示８５で指示された各ＥＣＵ２４に対して指示内容を送信する。具体的には、更新ソフトウェア適用部２０４は、受信した最終指示８５の各レコードのＥＣＵ名８７のＥＣＵ２４に対して、そのレコードの対象ソフトウェア名８６と指示内容８８とを対応付けて送信する。また、更新ソフトウェア適用部２０４は、最終指示８５の指示内容８８がロールバックであった場合には、ユーザに対して警告表示を行ってもよい。警告表示の内容には、例えば、ソフトウェアの更新が失敗した旨や、車両の回収勧告などが含まれてもよい。
【００８０】
信頼性チェック部２０５は、車載器２３で稼動するアプリケーションの真正性をチェックする。具体的には、信頼性チェック部２０５は、予め所定の記憶領域に、車載器２３で起動する各アプリケーションの真正性を確認するためのハッシュ値を記憶しておく。そして、アプリケーションの起動時にアプリケーションのハッシュ値を取得して予め記憶しておいた真正性を確認するためのハッシュ値と比較し、ハッシュ値が一致した場合、アプリケーションは真正であると判定する。信頼性チェック部２０５による真正性のチェックの対象となるアプリケーションには、サーバ認証部２０２、構成情報収集部２０３、更新ソフトウェア適用部２０４の機能を提供するものが含まれる。また、信頼性チェック部２０５は、構成情報収集部２０３と通信を行うＥＣＵ２４のアプリケーションについても同様に、ハッシュ値の比較による真正性のチェックを行う。尚、信頼性チェック部２０５の機能は、ＴＰＭにより提供されてもよい。ＴＰＭは、ハードウェア耐タンパー性をもつセキュリティチップであり、信頼性基点として、ＴＰＭがハッシュ値のチェックを行う各アプリケーションの信頼性の確保に用いることができる。
【００８１】
信頼性チェック部２０５が、構成情報収集部２０３、及び、構成情報収集部２０３と通信を行うＥＣＵ２４のアプリケーションの信頼性をチェックするため、構成情報収集部２０３が更新サーバ２２に送信する状態情報７０の信頼性を確保することができる。また、状態情報７０は、デジタル署名により機密性が確保される。よって、更新サーバ２２が車載器２３から受信する状態情報７０のセキュリティが確保される。
【００８２】
次に、ＥＣＵ２４の構成について説明する。図１３は、本実施形態に係るＥＣＵ２４の構成の一例を示す。
【００８３】
ＥＣＵ２４は、構成情報取得部３０１、及びソフトウェア更新部３０２を含む。
構成情報取得部３０１は、当該ＥＣＵ２４で稼動するソフトウェアの構成情報を取得し、取得した構成情報を車載器２３に送信する。構成情報の取得は、車載器２３からの構成情報取得要求を受信したとき、及び、ソフトウェアの適用処理が完了した直後に行われる。構成情報は、ソフトウェアを一意に識別するためのソフトウェア名の情報と、ソフトウェア名に対応付けられた構成情報とが含まれる。
【００８４】
ソフトウェア更新部３０２は、車載器２３からソフトウェアの更新指示を受信する。するとソフトウェア更新部３０２は、受信した更新ソフトウェアをインストールする。すなわち、ソフトウェア更新部３０２は、更新指示に含まれる対象ソフトウェア名のソフトウェアに、更新ソフトウェアを適用する。ただし、更新ソフトウェアの適用処理では、更新の有効化（例えば、更新したソフトウェアでの起動）は行なわずに、車載器２３から有効化の指示を受信した後に更新したソフトウェアの有効化を行うものとする。車載器２３からロールバックの指示を受けた場合にはソフトウェア更新部３０２は、適用した情報を破棄して、ソフトウェアを適用処理の直前の状態に戻す。
【００８５】
さらにソフトウェア更新部３０２は、作業ログを車載器２３に送信する。ここで、作業ログは、ソフトウェア更新部３０２によるインストール処理と、その後の有効化処理またはロールバック処理の作業ログのデータである。
【００８６】
尚、ロールバック処理は、更新ソフトウェアのインストール処理の開始直前のソフトウェアの状態を所定の記憶領域にバックアップ（またはスナップショットを取得）することにより実現してもよい。この場合、ソフトウェア更新部３０２は、車載器２３からソフトウェアの更新指示を受信すると、先ず、更新対象ソフトウェアのバックアップを取得する。バックアップの取得が完了するとソフトウェア更新部３０２は更新ソフトウェアをインストールする。その後車載器２３からロールバックの指示を受信すると、ソフトウェア更新部３０２は、バックアップしたデータを戻すことにより、インストール処理開始直前の状態に更新対象ソフトウェアを復元する。
【００８７】
また、ソフトウェアの有効化は、更新ソフトウェアのインストール処理を実施したソフトウェアを再起動することにより実現してもよい。この場合、ソフトウェア更新部３０２は、更新ソフトウェアのインストール処理においては、インストール処理が完了した状態でのソフトウェアの起動は行わずにおいておく。その後車載器２３から有効化の指示を受信すると、ソフトウェア更新部３０２は、インストール処理が完了した状態でのソフトウェアを起動することにより更新対象ソフトウェアの有効化を行う。
【００８８】
尚、本実施形態においては、車載器２３とＥＣＵ２４間の通信のセキュリティは確保されているものとする。車載器２３とＥＣＵ２４間のセキュリティが確保されていない場合には、車載器２３と更新サーバ２２の通信と同様に、通信データに署名を付与することによって、車載器２３とＥＣＵ２４間の通信のセキュリティを確保してもよい。
【００８９】
次に更新サーバ２２の動作フローについて説明する。図１４は、更新サーバ２２の処理内容を図解したフローチャートである。
【００９０】
図１４のフローにおいて、先ず状態情報取得部３３は対象車両の状態情報７０の取得要求を車載器２３に送信し、取得要求の応答として、状態情報７０を受信する（Ｓ４０１）。状態情報７０を受信すると認証部３２は、状態情報７０の送信元である車載器２３の認証を行い、状態情報７０の機密性が確保されていることを確認する。
【００９１】
次に決定部３４は、状態情報７０に基いて、対象車両に更新ソフトウェアを適用することが可能か否かを判定する（Ｓ４０２）。対象車両に更新ソフトウェアが適用可能でないと判定した場合（Ｓ４０２でＮｏ）、決定部３４は、対象車両の車載器２３に警告表示を行うように指示する（Ｓ４０３）。そして処理は終了する。
【００９２】
一方Ｓ４０２において、決定部３４により対象車両に更新ソフトウェアが適用可能であると判定された場合（Ｓ４０２でＹｅｓ）、管理部３１は、状態情報７０に基いてホワイトリストＺ（６０）を算出する（Ｓ４０４）。
【００９３】
次に、決定部３４は対象車両に更新指示８０を送信して、対象車両のＥＣＵ２４のソフトウェアの更新指示８０を送信する（Ｓ４０５）。更新指示８０の送信に際しては、更新ソフトウェアの機密性を確保するために署名が付与される。
【００９４】
次に、検証部３６は、対象車両から更新後の状態情報７０を受信する（Ｓ４０６）。状態情報７０を受信すると、状態情報７０の送信元である車載器２３の認証を行い、状態情報７０の機密性が確保されていることを確認する。
【００９５】
次に、検証部３６は、更新後の状態情報７０とホワイトリストＺ（６０）とに基づいて、対象車両のソフトウェアの更新が成功したか否かを判定する（Ｓ４０７）。ソフトウェアの更新に失敗したと判定した場合（Ｓ４０７でＮｏ）、検証部３６は、最終指示としてロールバックの指示を車載器２３に送信する（Ｓ４０８）。そして処理はＳ４１０に遷移する。
【００９６】
一方、ソフトウェアの更新に成功したと判定した場合（Ｓ４０７でＹｅｓ）、検証部３６は、最終指示としてソフトウェアの更新を有効にするように車載器２３に指示を送信する（Ｓ４０９）。
【００９７】
そして、履歴管理部３８は、車載器２３から作業ログを受信し、受信した作業ログを所定の記憶領域に保存する（Ｓ４１０）。そして、処理は終了する。
【００９８】
次に車載器２３の動作フローについて説明する。図１５は、車載器の処理内容を図解したフローチャートである。
【００９９】
図１５のフローにおいて、先ず構成情報収集部２０３は、更新サーバ２２から状態情報７０の取得要求を受信する（Ｓ５０１）。状態情報７０の取得要求を受信すると、サーバ認証部２０２は取得要求の送信元である更新サーバ２２の認証を行う。
【０１００】
次に、構成情報収集部２０３は、車両に搭載されている全てのＥＣＵ２４から構成情報を収集し、収集した構成情報に基づいて状態情報７０を作成して更新サーバ２２に送信する（Ｓ５０２）。状態情報７０の送信に際しては、サーバ認証部２０２は送信元の認証及び状態情報７０の機密性確保のために署名を付与して、状態情報７０を送信する。
【０１０１】
次に、更新ソフトウェア適用部２０４は、更新ソフトウェアを含むソフトウェアの更新指示８０を更新サーバ２２から受信する（Ｓ５０３）。ソフトウェアの更新指示８０を受信すると、サーバ認証部２０２は更新指示の送信元である更新サーバ２２の認証を行い、また、受信した更新指示８０の機密性が確保されていることを確認する。
【０１０２】
次に、更新ソフトウェア適用部２０４は、更新対象ソフトウェアが稼動している各ＥＣＵ２４に対して、更新ソフトウェアとともに更新の指示を送信する（Ｓ５０４）。
【０１０３】
次に、構成情報収集部２０３は、Ｓ５０４で更新を指示したＥＣＵ２４から、更新後の構成情報を受信して、更新後の構成情報に基いて状態情報７０を作成し更新サーバ２２に送信する（Ｓ５０５）。尚、Ｓ５０５の情報収集では、すべてのＥＣＵ２４から構成情報を取得してもよい。
【０１０４】
次に、更新ソフトウェア適用部２０４は、更新サーバ２２から最終指示８５を受信する（Ｓ５０６）。最終指示８５を受信すると、サーバ認証部２０２は最終指示８５の送信元である更新サーバ２２の認証を行い、また、受信した最終指示の機密性が確保されていることを確認する。
【０１０５】
次に、更新ソフトウェア適用部２０４は、最終指示８５で指示された各ＥＣＵ２４に対して、最終指示を送信する（Ｓ５０７）。
【０１０６】
次に、更新ソフトウェア適用部２０４は、作業ログを各ＥＣＵ２４から受信し、更新サーバ２２に送信する。また、更新ソフトウェア適用部２０４は、作業ログに含まれる最終指示の処理結果を、例えば、表示装置に出力してもよい（Ｓ５０８）。そして、処理は終了する。
【０１０７】
次にＥＣＵ２４の動作フローについて説明する。図１６は、ＥＣＵ２４の処理内容を図解したフローチャートである。
【０１０８】
図１６のフローにおいて、先ず構成情報取得部３０１は、車載器２３から構成情報取得要求を受信する（Ｓ６０１）。
【０１０９】
次に、構成情報取得部３０１は、ＥＣＵ２４で稼動する全てのソフトウェアの構成情報を収集し、収集した構成情報を車載器２３に送信する（Ｓ６０２）。
【０１１０】
次に、ソフトウェア更新部３０２は、車載器２３からソフトウェアの更新指示を受信する（Ｓ６０３）。すると、ソフトウェア更新部３０２は更新ソフトウェアのインストール処理を行う（Ｓ６０４）。インストール処理が完了すると、構成情報取得部３０１はインストール処理が完了したソフトウェアの構成情報を収集して車載器２３に送信する（Ｓ６０５）。
【０１１１】
次に、ソフトウェア更新部３０２は車載器２３から最終指示を受信する（Ｓ６０６）。
ソフトウェア更新部３０２は最終指示の内容を確認し（Ｓ６０７）、指示内容がロールバックである場合は（Ｓ６０７でロールバック）、ソフトウェアのロールバックを行う（Ｓ６０８）。そして処理はＳ６１０に遷移する。
【０１１２】
一方、指示内容が更新の有効化の場合は（Ｓ６０７で有効化）、ソフトウェア更新部３０２はソフトウェアの有効化を行う（Ｓ６０９）。そして、ソフトウェア更新部３０２は、作業ログを車載器に送信する（Ｓ６１０）。そして、処理は終了する。
【０１１３】
次に、更新サーバ２２の構成について説明する。図１７は、更新サーバ２２のハードウェア構成の一例を示す。
【０１１４】
更新サーバ２２は、ＣＰＵ（Central Processing Unit）４０１、メモリ４０２、記憶装置４０３、読取装置４０４、通信インターフェース４０５、及び入出力装置４０６を含む。ＣＰＵ４０１、メモリ４０２、記憶装置４０３、読取装置４０４、通信インターフェース４０５、及び入出力装置４０６はバスを介して接続される。
【０１１５】
ＣＰＵ４０１は、メモリ４０２を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、管理部３１、認証部３２、状態情報取得部３３、決定部３４、選定部３５、検証部３６、及び履歴管理部３８の一部または全部の機能を提供する。
【０１１６】
メモリ４０２は、例えば半導体メモリであり、ＲＡＭ（Random Access Memory）領域およびＲＯＭ（Read Only Memory）領域を含んで構成される。記憶装置４０３は、例えばハードディスクであり、記憶部３７の機能の一部または全てを提供する。なお、記憶装置４０３は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置４０３は、外部記録装置であってもよい。
【０１１７】
読取装置４０４は、ＣＰＵ４０１の指示に従って着脱可能記憶媒体４５０にアクセスする。着脱可能記憶媒体４５０は、たとえば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。尚、読取装置４０４は更新サーバ２２に含まれなくてもよい。
【０１１８】
通信インターフェース４０５は、車載器２３に接続し、ＣＰＵ４０１の指示に従ってネットワークを介して、車載器２３との間でデータを送受信する。また、通信インターフェース４０５は、他の情報処理装置と接続してもよい。例えば管理部３１により更新ソフトウェアが通信インターフェース４０５を介して取得される。
【０１１９】
入出力装置４０６は、例えば、ユーザからの指示を受け付けるデバイス、情報を表示する表示装置などである。尚、入出力装置４０６は更新サーバ２２に含まれなくてもよい。
【０１２０】
実施形態のプログラムは、例えば、下記の形態で更新ンサーバ２２に提供される。
（１）記憶装置４０３に予めインストールされている。
（２）着脱可能記憶媒体４５０により提供される。
（３）プログラムサーバ（図示せず）から通信インターフェース４０５を介して提供される。
【０１２１】
さらに、実施形態の更新サーバ２２の一部は、ハードウェアで実現してもよい。或いは、実施形態の更新サーバ２２は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
【０１２２】
次に、車載器２３の構成について説明する。図１８は、車載器のハードウェア構成の一例を示す。
【０１２３】
車載器２３は、ＣＰＵ５０１、メモリ５０２、記憶装置５０３、読取装置５０４、通信インターフェース５０５、出力装置５０６、及びＴＰＭ５０７を含む。ＣＰＵ５０１、メモリ５０２、記憶装置５０３、読取装置５０４、通信インターフェース５０５、出力装置５０６、及びＴＰＭ５０７はバス等を介して接続される。
【０１２４】
ＣＰＵ５０１は、メモリ５０２を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、サーバ認証部２０２、構成情報収集部２０３、更新ソフトウェア適用部２０４の一部または全部の機能を提供する。
【０１２５】
メモリ５０２は、例えば半導体メモリであり、ＲＡＭ領域およびＲＯＭ領域を含んで構成される。記憶装置５０３は、例えばハードディスクであり、認証情報格納部２０１の機能の一部または全部の機能を提供し、また、実施形態のプログラムを格納する。なお、記憶装置５０３は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置５０３は、外部記録装置であってもよい。
【０１２６】
読取装置５０４は、ＣＰＵ５０１の指示に従って着脱可能記憶媒体５５０にアクセスする。着脱可能記憶媒体５５０は、たとえば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。尚、読取装置５０４は車載器２３に含まれなくてもよい。
【０１２７】
通信インターフェース５０５は、更新サーバ２２に接続し、ＣＰＵ５０１の指示に従ってネットワークを介してデータを送受信する。また、通信インターフェース５０５は、ＥＣＵ２４に接続し、ＣＰＵ５０１の指示に従ってネットワークを介してデータを送受信する。
【０１２８】
出力装置５０６は、例えば、情報を表示する表示装置などである。ユーザに対する警告や更新ソフトウェアの更新結果は、出力装置５０６に出力される。
【０１２９】
ＴＰＭ５０７は、ＣＰＵ５０１で稼動するプログラムの信頼性をチェックすることが可能なセキュリティチップであり、信頼性チェック部２０５の機能の一部または全てを提供する。信頼性チェック部２０５がアプリケーションの真正性のチェックにおいて使用するハッシュ値は、ＴＰＭ５０７内の所定の記憶領域に格納される。
【０１３０】
実施形態のプログラムは、例えば、下記の形態で車載器２３に提供される。
（１）記憶装置５０３に予めインストールされている。
（２）着脱可能記憶媒体５５０により提供される。
（３）プログラムサーバ（図示せず）または更新サーバ２２から通信インターフェース５０５を介して提供される。
【０１３１】
さらに、実施形態の車載器２３の一部は、ハードウェアで実現してもよい。或いは、実施形態の車載器２３は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
【０１３２】
次に、ＥＣＵ２４のソフトウェアの更新機能の実現方法を説明する。図１９及び図２０は、ＥＣＵのソフトウェアの更新機能の実現方法の一例を示す。
【０１３３】
図１９におけるＥＣＵ２４は、ブートローダ６０１が構成情報取得部３０１とソフトウェア更新部３０２の機能を実現する。この例の場合、ソフトウェアの更新作業は、更新対象ソフトウェアが起動する前に行われる。すなわち、更新対象ソフトウェアに対する更新ソフトウェアのインストール処理が行われた後に、更新対象ソフトウェアが起動されて更新が有効になる。よって、図１６において、Ｓ６０４で更新ソフトウェアのインストール処理が行われてからＳ６０８までは、更新対象ソフトウェアは起動されず、Ｓ６０９において更新を有効化されてから更新ソフトウェアが起動される構成としてもよい。
【０１３４】
一方、図２０におけるＥＣＵ２４では、仮想マシンマネージャ６０２が稼動しており、構成情報取得部３０１とソフトウェア更新部３０２の機能は仮想マシンマネージャ上の仮想マシンにより実現する。また、更新対象ソフトウェアも仮想マシンで動作させることにより、動作中の更新対象ソフトウェアと同じ構成のインストール用のソフトウェアを動作させてもよい。そして、図１６において、Ｓ６０４の更新ソフトウェアのインストール処理は更新用のソフトウェアに対して行い、Ｓ６０９の更新の有効化において、動作中の仮想マシンからインストール用の仮想マシンに切り替える構成としてもよい。この場合、Ｓ６０８のロールバック処理を行う場合は、インストール用の仮想マシンを破棄すればよい。
【０１３５】
（変形例）
自動車２１の各ＥＣＵ２４にＴＰＭ５０７を搭載し、更新サーバ２２とＥＣＵ２４の間の通信において、車載器２３を介さない構成とすることも可能である。
【０１３６】
図２１は、情報処理システムの変形例の構成の一例を示す。図２１で示される情報処理システム２９の第１の実施形態との違いは、各ＥＣＵ２４が車載器２３を介さずに更新サーバ２２と通信を行う点である。第１の実施形態の車載器２３の各機能は、第２の実施形態では各ＥＣＵ２４に組み込まれる。ただし、更新サーバ２２とＥＣＵ２４が直接通信するため、構成情報収集部２０３の機能については省略可能である。なお、各ＥＣＵ２４Ａ、２４Ｂ、２４Ｃにはそれぞれ、ＴＰＭ５０７Ａ、５０７Ｂ、５０７Ｃが含まれる。
【０１３７】
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１３８】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信し、
受信した、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出し、
前記制御部へ前記修正プログラムを送信し、
送信した前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信し、
受信した前記第三の情報と、算出した前記第二の情報とを比較し、
該比較した結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する
ことを特徴とする、コンピュータにより実行される修正プログラム確認方法。
（付記２）
前記第一の情報及び前記第三の情報は、真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする、付記１に記載のコンピュータにより実行される修正プログラム確認方法。
（付記３）
前記第一の情報及び前記第三の情報は、ＴＰＭに搭載されている機能により真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする、付記２に記載のコンピュータにより実行される修正プログラム確認方法。
（付記４）
さらに、前記制御部に対する前記修正プログラムの適用処理が成功したと判断した場合、前記修正プログラムが適用された前記制御プログラムを有効化させる指示を前記制御部へ送信する
ことを特徴とする、付記１〜３のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
（付記５）
さらに、前記制御部に対する前記修正プログラムの適用処理が失敗したと判断した場合、前記修正プログラムの適用処理をロールバックさせる指示を前記制御部へ送信する
ことを特徴とする、付記１〜４のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
（付記６）
さらに、前記受信した第一の情報に基いて、前記制御プログラムの状態が正常か否かを判定し、
前記送信する処理は、前記制御プログラムの状態が正常であると判定された場合に、前記制御部に前記修正プログラムを送信することを含む
ことを特徴とする、請求項１〜５のうちいずれか１項に記載のコンピュータにより実行される修正プログラム確認方法。
（付記７）
コンピュータに、
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信し、
受信した、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出し、
前記制御部へ前記修正プログラムを送信し、
送信した前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信し、
受信した前記第三の情報と、算出した前記第二の情報とを比較し、
該比較した結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する
処理を実行させることを特徴とする修正プログラム確認プログラム。
（付記８）
前記第一の情報及び前記第三の情報は、真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする付記６に記載の修正プログラム確認プログラム。
（付記９）
前記第一の情報及び前記第三の情報は、ＴＰＭに搭載されている機能により真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする付記７に記載の修正プログラム確認プログラム。
（付記１０）
さらに、
前記制御部に対する前記修正プログラムの適用処理が成功したと判断した場合、前記修正プログラムが適用された前記制御プログラムを有効化させる指示を前記制御部へ送信する
処理を実行させることを特徴とする付記６〜８のうちいずれか１項に記載の修正プログラム確認プログラム。
（付記１１）
自動車に搭載された機器を制御する制御プログラムを実行する制御部であって、前記自動車に搭載された該制御部から、該制御プログラムの状態に関する情報である第一の情報を受信する第１の受信部と、
受信された、前記第一の情報に基づいて、前記制御プログラムについての修正プログラムを前記制御部に適用した場合の該制御プログラムの状態である第二の情報を算出する算出部と、
前記制御部へ前記修正プログラムを送信する送信部と、
送信された前記修正プログラムを前記制御部に適用した後の制御プログラムの状態に関する情報である第三の情報を、前記制御部から受信する第２の受信部と、
受信された前記第三の情報と、算出された前記第二の情報とを比較する比較部と、
該比較された結果に基づいて、前記制御部に対する前記修正プログラムの適用処理が成功したか失敗したかを判断する判断部と、
を備えることを特徴とする情報処理装置。
（付記１２）
前記第一の情報及び前記第三の情報は、真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする付記１１に記載の情報処理装置。
（付記１３）
前記第一の情報及び前記第三の情報は、ＴＰＭに搭載されている機能により真正性が確認されているソフトウェアにより作成された情報である
ことを特徴とする付記１２に記載の情報処理装置。
（付記１４）
前記情報処理装置は、さらに、
前記制御部に対する前記修正プログラムの適用処理が成功したと判断された場合、前記修正プログラムが適用された前記制御プログラムを有効化させる指示を送信する最終指示部
を備えることを特徴とする付記１１〜１３のうちいずれか１項に記載の情報処理装置。
【符号の説明】
【０１３９】
１      第１の受信部
２      算出部
３      送信部
４      第２の受信部
５      比較部
６      判断部
７      最終指示部
８      状態判定部
１０      情報処理装置
【図１】
0005864510.tif 000002
【図２】
0005864510.tif 000003
【図３】
0005864510.tif 000004
【図４】
0005864510.tif 000005
【図５】
0005864510.tif 000006
【図６】
0005864510.tif 000007
【図７】
0005864510.tif 000008
【図８】
0005864510.tif 000009
【図９】
0005864510.tif 000010
【図１０】
0005864510.tif 000011
【図１１】
0005864510.tif 000012
【図１２】
0005864510.tif 000013
【図１３】
0005864510.tif 000014
【図１４】
0005864510.tif 000015
【図１５】
0005864510.tif 000016
【図１６】
0005864510.tif 000017
【図１７】
0005864510.tif 000018
【図１８】
0005864510.tif 000019
【図１９】
0005864510.tif 000020
【図２０】
0005864510.tif 000021
【図２１】
0005864510.tif 000022