(57)【要約】【課題】不正なアップデートの実行を防止することができる更新方法を提供する。【解決手段】モバイル端末１０２は、暗号部６０５が復号化されたコンテンツリスト２０７のハッシュ値である解析直前ハッシュ値と、暗号部６０５が暗号化される前のコンテンツリスト２０７のハッシュ値であるチェック用ハッシュ値２０６とが一致するか否かを判別し、判別結果に基づいてアップデートの開始及び中止のいずれかを決定する。【選択図】図７
2018005613.tif 000002
【特許請求の範囲】
【請求項１】
取得されたモジュールリストが示すモジュールの更新を行う更新方法であって、
前記モジュールリストを特定する第１のハッシュ値を取得する取得ステップと、
前記モジュールリストのハッシュ値を第２のハッシュ値として算出する算出ステップと、
前記第１のハッシュ値及び前記第２のハッシュ値が一致するか否かを判別する判別ステップと、
前記判別ステップの判別結果に基づいて前記モジュールの更新の開始及び前記モジュールの更新の中止のいずれかを決定する決定ステップとを有し、
前記モジュールリストの一部は暗号化され、
前記第１のハッシュ値は、前記一部が暗号化される前の前記モジュールリストのハッシュ値であり、
前記第２のハッシュ値は、前記一部が暗号化されたモジュールリストを復号化したモジュールリストのハッシュ値であることを特徴とする更新方法。
【請求項２】
前記モジュールリストから被更新モジュールを特定するモジュール特定ステップを更に有し、
前記モジュールリストのうち前記被更新モジュールを特定するために必要なデータは暗号化されないことを特徴とする請求項１記載の更新方法。
【請求項３】
前記判別ステップは、前記第２のハッシュ値が算出された直後に判別することを特徴とする請求項１又は２記載の更新方法。
【請求項４】
前記モジュールリストが暗号化されているか否かに基づいて前記第２のハッシュ値の算出方法を決定することを特徴とする請求項１乃至３のいずれか１項に記載の更新方法。
【請求項５】
取得されたモジュールリストが示すモジュールの更新を行う更新方法をコンピュータに実行させるプログラムであって、
前記更新方法は、
前記モジュールリストを特定する第１のハッシュ値を取得する取得ステップと、
前記モジュールリストのハッシュ値を第２のハッシュ値として算出する算出ステップと、
前記第１のハッシュ値及び前記第２のハッシュ値が一致するか否かを判別する判別ステップと、
前記判別ステップの判別結果に基づいて前記モジュールの更新の開始及び前記モジュールの更新の中止のいずれかを決定する決定ステップとを有し、
前記モジュールリストの一部は暗号化され、
前記第１のハッシュ値は、前記一部が暗号化される前の前記モジュールリストのハッシュ値であり、
前記第２のハッシュ値は、前記一部が暗号化されたモジュールリストを復号化したモジュールリストのハッシュ値であることを特徴とするプログラム。
【請求項６】
取得されたモジュールリストが示すモジュールの更新を行う情報処理装置であって、
前記モジュールリストを特定する第１のハッシュ値を取得する取得手段と、
前記モジュールリストのハッシュ値を第２のハッシュ値として算出する算出手段と、
前記第１のハッシュ値及び前記第２のハッシュ値が一致するか否かを判別する判別手段と、
前記判別手段による判別結果に基づいて前記モジュールの更新の開始及び前記モジュールの更新の中止のいずれかを決定する決定手段とを備え、
前記モジュールリストの一部は暗号化され、
前記第１のハッシュ値は、前記一部が暗号化される前の前記モジュールリストのハッシュ値であり、
前記第２のハッシュ値は、前記一部が暗号化されたモジュールリストを復号化したモジュールリストのハッシュ値であることを特徴とする情報処理装置。
【請求項７】
前記モジュールリストから被更新モジュールを特定する特定手段を更に備え、
前記モジュールリストのうち前記被更新モジュールを特定するために必要なデータは暗号化されないことを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記判別手段は、前記第２のハッシュ値が算出された直後に判別することを特徴とする請求項６又は７記載の情報処理装置。
【請求項９】
前記モジュールリストが暗号化されているか否かに基づいて前記第２のハッシュ値の算出方法を決定することを特徴とする請求項６乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
モジュールリストが示すモジュールを更新する更新データを生成する更新データ生成装置であって、
前記モジュールリストを生成する生成手段を備え、
前記生成手段は、前記モジュールリストの一部を暗号化することを特徴とする更新データ生成装置。
【請求項１１】
前記モジュールリストから被更新モジュールが特定され、
前記生成手段は、前記モジュールリストのうち前記被更新モジュールを特定するために必要なデータを暗号化しないことを特徴とする請求項１０記載の更新データ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新方法、プログラム、情報処理装置、及び更新データ生成装置に関する。
【背景技術】
【０００２】
アプリケーションやファームウェア等のコンテンツがインストールされた情報処理装置としてのモバイル端末が知られている。モバイル端末はインストールされたコンテンツの各処理を実行するための複数の実行プログラムを格納する。モバイル端末は、インストールされたコンテンツの不具合の修正や機能の追加といったアップデートを行う場合、格納された各実行プログラムを、サーバ等から取得された新たな実行プログラムに更新する（例えば、特許文献１参照）。モバイル端末は、格納された複数の実行プログラムのうち、サーバが提供する新たな実行プログラムのバージョンと異なる実行プログラムのみを取得する差分アップデートを行う場合がある。差分アップデートを行う場合、モバイル端末は、新たな実行プログラムを取得する前に、サーバが提供する実行プログラムの名称や当該実行プログラムのバージョンを含むコンテンツリストをサーバから取得し、当該コンテンツリストを解析する。モバイル端末は当該モバイル端末に格納された各実行プログラムのバージョンとコンテンツリストに含まれる各実行プログラムのバージョンとを比較し、バージョンに差がある実行プログラムを特定し、特定された実行プログラムをサーバから取得する。
【０００３】
ところで、サーバから提供される新たな実行プログラムは、セキュリティの観点から署名暗号化処理が施されているが、コンテンツリストは、上述した通り、モバイル端末によって解析可能なように署名暗号化処理が施されていない。そのため、悪意あるユーザによってコンテンツリストの内容が改ざんされ、不正なアップデートが行われる可能性がある。これに対応して、サーバは、コンテンツリストを提供する際に当該コンテンツリストを特定可能なチェック用ハッシュ値も提供する。モバイル端末はコンテンツリストの解析を開始する直前にコンテンツリストのハッシュ値を算出し、算出されたハッシュ値（以下、「解析直前ハッシュ値」という。）及びチェック用ハッシュ値の差に基づいてコンテンツリストの改ざんを検知する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１００３２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来のモバイル端末では、コンテンツリストの改ざんを検知することができない場合がある。例えば、コンテンツリストを取得してからモバイル端末がコンテンツリストの解析を開始するまでの間に悪意あるユーザによってコンテンツリストが改ざんされ、且つコンテンツリストの改ざん内容に対応してチェック用ハッシュ値も改ざんされてしまうと、モバイル端末はコンテンツリストの改ざんを検知することができない。その結果、モバイル端末では不正なアップデートが行われてしまうといった問題が生じる。
【０００６】
本発明の目的は、不正なアップデートの実行を防止することができる更新方法、プログラム、情報処理装置、及び更新データ生成装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の更新方法は、取得されたモジュールリストが示すモジュールの更新を行う更新方法であって、前記モジュールリストを特定する第１のハッシュ値を取得する取得ステップと、前記モジュールリストのハッシュ値を第２のハッシュ値として算出する算出ステップと、前記第１のハッシュ値及び前記第２のハッシュ値が一致するか否かを判別する判別ステップと、前記判別ステップの判別結果に基づいて前記モジュールの更新の開始及び前記モジュールの更新の中止のいずれかを決定する決定ステップとを有し、前記モジュールリストの一部は暗号化され、前記第１のハッシュ値は、前記一部が暗号化される前の前記モジュールリストのハッシュ値であり、前記第２のハッシュ値は、前記一部が暗号化されたモジュールリストを復号化したモジュールリストのハッシュ値であることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、不正なアップデートの実行を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る情報処理装置としてのモバイル端末を含む通信システムの構成を概略的に示すブロック図である。
【図２】図１のサーバが配信する配信データセットを説明するための図である。
【図３】図１のモバイル端末のメインシステムモジュールの構成を概略的に示すブロック図である。
【図４】図１のサーバの構成を概略的に示すブロック図である。
【図５】図１のサーバで実行される生成処理の手順を示すフローチャートである。
【図６】図２のコンテンツリストを説明するための図である。
【図７】図１のモバイル端末で実行される更新処理の手順を示すフローチャートである。
【図８】図７のステップＳ７０５における解析直前ハッシュ値及びチェック用ハッシュ値の比較を説明するための図である。
【図９】図７の更新処理の変形例の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照しながら詳述する。
【００１１】
本実施の形態では、情報処理装置としてのモバイル端末に本発明を適用した場合について説明するが、本発明の適用先はモバイル端末に限られない。インストールされたコンテンツのアップデートを行うクライアントＰＣ等の情報処理装置であれば本発明を適用することができる。
【００１２】
また、本実施の形態では、更新データ生成装置としてのサーバに本発明を適用した場合について説明するが、本発明の適用先はサーバに限られない。情報処理装置にインストールされたコンテンツのアップデートを行うための各データを生成するＰＣ（Personal Computer）等の装置であれば本発明を適用することができる。
【００１３】
図１は、本発明の実施の形態に係る情報処理装置としてのモバイル端末１０２を含む通信システム１００の構成を概略的に示すブロック図である。
【００１４】
図１において、通信システム１００は、更新データ生成装置としてのサーバ１０１及びモバイル端末１０２を備え、サーバ１０１及びモバイル端末１０２はネットワーク１０３を介して接続されている。モバイル端末１０２は制御部１０４及び操作部１１４を備え、制御部１０４及び操作部１１４は接続されている。制御部１０４は、ＣＰＵ１０５、ＲＯＭ１０６、ＲＡＭ１０７、ＨＤＤ１０８、操作部Ｉ／Ｆ１０９、ＵＳＢＩ／Ｆ１１０、及びネットワークＩ／Ｆ１１２を備える。ＣＰＵ１０５、ＲＯＭ１０６、ＲＡＭ１０７、ＨＤＤ１０８、操作部Ｉ／Ｆ１０９、ＵＳＢＩ／Ｆ１１０、及びネットワークＩ／Ｆ１１２はシステムバス１１３を介して互いに接続されている。
【００１５】
サーバ１０１はモバイル端末１０２等にインストールされたコンテンツの不具合の修正や機能の追加といったアップデートを行うための図２の配信データセット２００を生成し、当該配信データセット２００をモバイル端末１０２等に送信する。配信データセット２００は、暗号化コンテンツファイル２０１〜２０５、チェック用ハッシュ値２０６、及びコンテンツリスト２０７（モジュールリスト）を含む。各暗号化コンテンツファイル２０１〜２０５はサーバ１０１が提供する各実行プログラムを署名暗号化したデータである。チェック用ハッシュ値２０６はコンテンツリスト２０７を特定するハッシュ値である。コンテンツリスト２０７は各暗号化コンテンツファイル２０１〜２０５に関する情報、例えば、各暗号化コンテンツファイル２０１〜２０５の名称やバージョン情報等であり、詳細は後述する。
【００１６】
モバイル端末１０２はインストールされたコンテンツの各処理を実行するための複数の実行プログラムを格納する。モバイル端末１０２はサーバ１０１等から配信データセット２００を取得すると、当該配信データセット２００に基づいてモバイル端末１０２に格納された実行プログラムのうち配信データセット２００に対応する実行プログラムを更新する。また、モバイル端末１０２は差分アップデートも実行可能である。モバイル端末１０２は、アップデートを行う際にサーバ１０１からチェック用ハッシュ値２０６及びコンテンツリスト２０７を取得し、ＲＯＭ１０６等に格納された各実行プログラムのバージョンとコンテンツリスト２０７の各暗号化コンテンツファイル２０１〜２０５のバージョンとを比較する。その後、モバイル端末１０２はバージョンに差分がある実行プログラムに対応する暗号化コンテンツデータを取得し、当該暗号化コンテンツデータを復号化してＲＯＭ１０６等に格納された実行プログラムを更新する。
【００１７】
制御部１０４はモバイル端末１０２全体を統括的に制御する。ＣＰＵ１０５はＲＯＭ１０６に格納されたプログラムを実行して後述する図３のメインシステムモジュール３００の各処理を実行する。ＲＯＭ１０６はＣＰＵ１０５で実行されるプログラムや各データを格納する。ＲＡＭ１０７はＣＰＵ１０５の作業領域として用いられ、また、ＲＡＭ１０７は各データの一時格納領域として用いられる。ＨＤＤ１０８はＲＯＭ１０６の拡張領域として用いられ、プログラム及び各データを格納する。操作部Ｉ／Ｆ１０９は操作部１１４とデータ通信を行う。ＵＳＢＩ／Ｆ１１０はＵＳＢメモリやＵＳＢキーボード等の外部ＵＳＢデバイス１１１とデータ通信を行う。例えば、ＵＳＢＩ／Ｆ１１０はモバイル端末１０２に接続されたＵＳＢメモリから当該ＵＳＢメモリに格納された配信データセット２００を取得する。ネットワークＩ／Ｆ１１２はネットワーク１０３を介して接続されたサーバ１０１とデータ通信を行う。例えば、ネットワークＩ／Ｆ１１２はサーバ１０１から配信データセット２００を取得する。なお、モバイル端末１０２は、配信データセット２００の取得において、ＵＳＢＩ／Ｆ１１０及びネットワークＩ／Ｆ１１２のいずれを用いた場合でも同様の処理を行う。本実施の形態では、一例として、ネットワークＩ／Ｆ１１２を介してサーバ１０１から配信データセット２００を取得する場合について説明する。操作部１１４はモバイル端末１０２のユーザインターフェースであり、タッチパネル式の図示しない表示部及び操作キーを備える。
【００１８】
図３は、図１のモバイル端末１０２のメインシステムモジュール３００の構成を概略的に示すブロック図である。
【００１９】
図３において、メインシステムモジュール３００は、操作制御モジュール３０１、アプリケーション制御モジュール３０２、セキュリティ制御モジュール３０３、ＵＳＢ制御モジュール３０４、及び通信処理モジュール３０５を備える。また、メインシステムモジュール３００は、ファイル整合性チェックモジュール３０６、ダウンロード形式判別モジュール３０７、コンテンツ差分判別モジュール３０８、データ復号モジュール３０９、及びコンテンツ更新処理モジュール３１０を備える。メインシステムモジュール３００の各処理は、ＣＰＵ１０５がＲＯＭ１０６やＨＤＤ１０８に格納されたプログラムを実行することによって行われる。
【００２０】
操作制御モジュール３０１は操作部Ｉ／Ｆ１０９によって操作部１１４の制御を行う。アプリケーション制御モジュール３０２はモバイル端末１０２にインストールされたアプリケーションの実行を制御する。セキュリティ制御モジュール３０３は暗号化されたデータの管理等を行ってモバイル端末１０２におけるセキュリティの制御を行う。ＵＳＢ制御モジュール３０４はＵＳＢＩ／Ｆ１１０による外部ＵＳＢデバイス１１１とのデータ通信を制御し、例えば、外部ＵＳＢデバイス１１１から配信データセット２００を取得する。通信処理モジュール３０５はネットワークＩ／Ｆ１１２によるサーバ１０１とのデータ通信を制御し、例えば、サーバ１０１から配信データセット２００を取得する。
【００２１】
ファイル整合性チェックモジュール３０６は取得された配信データセット２００がユーザによって改ざんされたか否かを判別する。ダウンロード形式判別モジュール３０７は取得された配信データセット２００の形式を判別し、判別結果に基づいて当該配信データセット２００のチェック方法を決定する。コンテンツ差分判別モジュール３０８はＲＯＭ１０６やＨＤＤ１０８に格納された複数の実行プログラムから被更新プログラム（被更新モジュール）を特定する。具体的に、コンテンツ差分判別モジュール３０８は、ＲＯＭ１０６やＨＤＤ１０８に格納された各実行プログラムのバージョンと、サーバから配信されたコンテンツリスト２０７の実行プログラムのバージョンとを比較する。コンテンツ差分判別モジュール３０８は比較した結果、バージョンに差分がある実行プログラムを被更新プログラムとして特定する。データ復号モジュール３０９は署名暗号化された各データを復号化する。コンテンツ更新処理モジュール３１０は、ＲＯＭ１０６やＨＤＤ１０８に格納された実行プログラムをサーバ１０１から取得された新たなバージョンの実行プログラムに更新する。
【００２２】
図４は、図１のサーバ１０１の構成を概略的に示すブロック図である。
【００２３】
図４において、サーバ１０１は、制御部４００及び操作部４０８を備え、制御部４００及び操作部４０８は接続されている。制御部４００は、ＣＰＵ４０１、ＲＯＭ４０２、ＲＡＭ４０３、ＨＤＤ４０４、操作部Ｉ／Ｆ４０５、及びネットワークＩ／Ｆ４０６を備える。ＣＰＵ４０１、ＲＯＭ４０２、ＲＡＭ４０３、ＨＤＤ４０４、操作部Ｉ／Ｆ４０５、及びネットワークＩ／Ｆ４０６はシステムバス４０７を介して互いに接続されている。
【００２４】
制御部４００はサーバ１０１全体を統括的に制御する。ＣＰＵ４０１はＲＯＭ４０２に格納されたプログラムを実行して各制御を行う。ＲＯＭ４０２はＣＰＵ４０１で実行されるプログラムや各データを格納する。ＲＡＭ４０３はＣＰＵ４０１の作業領域として用いられ、また、ＲＡＭ４０３は各データの一時格納領域として用いられる。ＨＤＤ４０４はＲＯＭ４０２の拡張領域として用いられ、プログラム及び各データを格納する。例えば、ＨＤＤ４０４は生成された配信データセット２００を格納する。操作部Ｉ／Ｆ４０５は操作部４０８とデータ通信を行う。ネットワークＩ／Ｆ４０６はネットワーク１０３を介して接続されたモバイル端末１０２とデータ通信を行い、例えば、ＨＤＤ４０４に格納された配信データセット２００をモバイル端末１０２に送信する。操作部４０８はサーバ１０１のユーザインターフェースであり、図示しない表示部及びキーボードを備える。
【００２５】
次に、サーバ１０１による配信データセット２００の生成について説明する。
【００２６】
図５は、図１のサーバ１０１で実行される生成処理の手順を示すフローチャートである。
【００２７】
図５の処理は、サーバ１０１のＣＰＵ４０１がＲＯＭ４０２やＨＤＤ４０４に格納されたプログラムを実行することによって行われる。
【００２８】
図５において、まず、ＣＰＵ４０１は、アップデートの内容に対応する複数の実行プログラムを取得する（ステップＳ５０１）。次いで、ＣＰＵ４０１は取得された各実行プログラムを署名暗号化し（ステップＳ５０２）、暗号化コンテンツファイル２０１〜２０５を生成する。次いで、ＣＰＵ４０１は、各暗号化コンテンツファイル２０１〜２０５の名称及び各暗号化コンテンツファイル２０１〜２０５のバージョンを含むコンテンツリスト２０７を生成する（ステップＳ５０３）。
【００２９】
次いで、ＣＰＵ４０１は、各暗号化コンテンツファイル２０１〜２０５のハッシュ値を算出し、コンテンツリスト２０７に算出された各ハッシュ値を設定する（ステップＳ５０４）。次いで、ＣＰＵ４０１はコンテンツリスト２０７にサーバ１０１の機種情報を設定する（ステップＳ５０５）。ステップＳ５０３〜Ｓ５０５の処理の実行が完了すると、図６に示すコンテンツリスト２０７が生成される。コンテンツリスト２０７は、バージョン情報６０１、暗号化コンテンツデータに関する情報６０２、及び機種情報６０３を備える。バージョン情報６０１は配信データセット２００のバージョン情報である。暗号化コンテンツデータに関する情報６０２は各暗号化コンテンツファイル２０１〜２０５の名称、バージョン情報、及びハッシュ値であり、ステップＳ５０３，Ｓ５０４の処理によって設定される。機種情報６０３は配信データセット２００を生成したサーバ１０１を特定する機種ＩＤやサーバ１０１のＯＳバージョン等であり、ステップＳ５０５の処理によって設定される。
【００３０】
次いで、ＣＰＵ４０１はコンテンツリスト２０７のハッシュ値を算出し、算出結果をチェック用ハッシュ値２０６としてＨＤＤ４０４等に格納する（ステップＳ５０６）。次いで、ＣＰＵ４０１はコンテンツリスト２０７の一部を署名暗号化する（ステップＳ５０７）。具体的に、図６に示すように、ＣＰＵ４０１は、コンテンツリスト２０７のうち機種情報６０３の部分のみを署名暗号化し、被更新プログラムの特定に用いられる暗号化コンテンツデータに関する情報６０２等を署名暗号化しない。以下では、図６に示すように、コンテンツリスト２０７のうち署名暗号化されない部分を非暗号部６０４と定義し、署名暗号化された部分を暗号部６０５と定義する。
【００３１】
次いで、ＣＰＵ４０１は、暗号化コンテンツファイル２０１〜２０５、チェック用ハッシュ値２０６、及びコンテンツリスト２０７を含む配信データセット２００を生成する（ステップＳ５０８）。その後、ＣＰＵ４０１は当該配信データセット２００をＨＤＤ４０４等に格納して、本処理を終了する。サーバ１０１は、例えば、モバイル端末１０２等から差分アップデートの実行要求を受信すると、配信データセット２００に含まれるチェック用ハッシュ値２０６及びコンテンツリスト２０７をモバイル端末１０２に送信する。
【００３２】
図７は、図１のモバイル端末１０２で実行される更新処理の手順を示すフローチャートである。
【００３３】
図７の処理は、図１のＣＰＵ１０５がＲＯＭ１０６やＨＤＤ１０８に格納されたプログラムを実行することによって行われる。
【００３４】
図７において、まず、ＣＰＵ１０５はユーザの操作部１１４の操作等によってコンテンツの差分アップデートの指示を受け付け（ステップＳ７０１）、サーバ１０１からチェック用ハッシュ値２０６及びコンテンツリスト２０７を取得する（ステップＳ７０２）。次いで、ＣＰＵ１０５は取得されたコンテンツリスト２０７を復号化し（ステップＳ７０３）、復号化されたコンテンツリスト２０７のハッシュ値を解析直前ハッシュ値として算出する（ステップＳ７０４）。次いで、ＣＰＵ１０５は解析直前ハッシュ値及びチェック用ハッシュ値２０６が一致するか否かを判別する（ステップＳ７０５）。
【００３５】
ここで、チェック用ハッシュ値２０６は暗号部６０５が暗号化される前のコンテンツリスト２０７から算出されたハッシュ値である。また、解析直前ハッシュ値は暗号部６０５が復号化された後のコンテンツリスト２０７から算出されたハッシュ値である。本来、チェック用ハッシュ値２０６及び解析直前ハッシュ値は、図８（ａ）に示すように、同じ内容のコンテンツリスト２０７から算出されたハッシュ値であるので、一致するはずである。
【００３６】
ところが、コンテンツリスト２０７を取得してからステップＳ７０３の処理を開始するまでの間に悪意あるユーザによってコンテンツリスト２０７の内容が改ざんされてしまう可能性がある。コンテンツリスト２０７は、暗号化された暗号部６０５の内容を改ざんされることはないが、暗号化されない非暗号部６０４の内容を改ざんされる場合がある。この場合、解析直前ハッシュ値は内容が改ざんされた非暗号部６０４、及び復号化された暗号部６０５を含むコンテンツリスト２０７から算出されたハッシュ値である。つまり、解析直前ハッシュ値は、図８（ｂ）に示すように、チェック用ハッシュ値２０６と異なる内容のコンテンツリスト２０７から算出されたハッシュ値であるので、チェック用ハッシュ値２０６及び解析直前ハッシュ値は一致しない。これにより、ステップＳ７０２で取得された後にコンテンツリスト２０７が改ざんされたことを検知可能である。
【００３７】
また、コンテンツリスト２０７の改ざんに対応してチェック用ハッシュ値２０６も改ざんされる可能性がある。チェック用ハッシュ値２０６の改ざんとして、例えば、図８（ｃ）に示すように、内容が改ざんされた非暗号部６０４、及び内容が改ざんされずに暗号化されたままの暗号部６０５を含むコンテンツリスト２０７から導出されたハッシュ値をチェック用ハッシュ値２０６に置き換える場合が考えられる。この場合、改ざんされたチェック用ハッシュ値２０６は内容が改ざんされた非暗号部６０４、及び暗号化された暗号部６０５を含むコンテンツリスト２０７から算出されたハッシュ値であり、解析直前ハッシュ値は内容が改ざんされた非暗号部６０４、及び復号化された暗号部６０５を含むコンテンツリスト２０７から算出されたハッシュ値である。つまり、改ざんされたチェック用ハッシュ値２０６及び解析直前ハッシュ値は、図８（ｃ）に示すように、同じ内容のコンテンツリスト２０７ではあるが、暗号部６０５の状態、具体的に、暗号部６０５が暗号化されているか否かが異なるコンテンツリスト２０７から算出されたハッシュ値であるので、一致しない。これにより、ステップＳ７０２で取得された後にチェック用ハッシュ値２０６及びコンテンツリスト２０７の両方が改ざんされたことも検知可能である。
【００３８】
ステップＳ７０５の判別の結果、解析直前ハッシュ値及びチェック用ハッシュ値２０６が一致しないとき、ＣＰＵ１０５はアップデートを中止する。その後、ＣＰＵ１０５は操作部１１４及びサーバ１０１にアップデートを中止した旨のエラーを通知し（ステップＳ７０６）、本処理を終了する。
【００３９】
ステップＳ７０５の判別の結果、解析直前ハッシュ値及びチェック用ハッシュ値２０６が一致したとき、ＣＰＵ１０５はコンテンツリスト２０７に基づいて被更新プログラムを特定する（ステップＳ７０７）（モジュール特定ステップ）。次いで、ＣＰＵ１０５は特定された被更新プログラムを更新するための新たなバージョンの実行プログラムをサーバ１０１から取得し（ステップＳ７０８）、アップデートを開始する（ステップＳ７０９）。ＣＰＵ１０５は、アップデートの実行を完了すると、操作部１１４及びサーバ１０１にアップデートの実行を完了した旨を通知し（ステップＳ７１０）、本処理を終了する。
【００４０】
上述した図７の処理によれば、チェック用ハッシュ値２０６及び解析直前ハッシュ値が一致するか否かの判別結果に基づいてアップデートの開始及び中止のいずれかが決定されるモバイル端末１０２によって取得されたコンテンツリスト２０７の暗号部６０５は暗号化されている。また、チェック用ハッシュ値２０６は暗号部６０５が暗号化される前のコンテンツリスト２０７のハッシュ値であり、解析直前ハッシュ値は暗号化された暗号部６０５が復号化されたコンテンツリスト２０７のハッシュ値である。これにより、図８（ｂ）及び図８（ｃ）に示すように、コンテンツリスト２０７の非暗号部６０４やチェック用ハッシュ値２０６の改ざんを確実に検知することができ、もって、不正なアップデートの実行を防止することができる。
【００４１】
また、上述した図７の処理では、コンテンツリスト２０７のうち被更新プログラムを特定するために必要な暗号化コンテンツデータに関する情報６０２は暗号化されない。これにより、コンテンツリスト２０７が暗号化されても、コンテンツリスト２０７に基づいて被更新プログラムを特定することができ、もって、ユーザの所望する差分アップデートを行うことができる。
【００４２】
さらに、上述した図７の処理では、解析直前ハッシュ値が算出された直後にステップＳ７０５の判別処理を実行する。これにより、ステップＳ７０４で算出された解析直前ハッシュ値がステップＳ７０５の判別処理の実行が開始されるまでに悪意あるユーザによってチェック用ハッシュ値２０６として設定されるといった不正な処理が行われるのを防止することができる。
【００４３】
以上、本発明について、上述した実施の形態を用いて説明したが、本発明は上述した実施の形態に限定されるものではない。
【００４４】
例えば、取得されたコンテンツリスト２０７が暗号化されているか否かに基づいて解析直前ハッシュ値の算出方法を決定しても良い。
【００４５】
図９は、図７の更新処理の変形例の手順を示すフローチャートである。
【００４６】
図９の処理は、図１のＣＰＵ１０５がＲＯＭ１０６やＨＤＤ１０８に格納されたプログラムを実行することによって行われる。
【００４７】
ここで、例えば、モバイル端末１０２のバージョンダウンを実行する場合、モバイル端末１０２は当該モバイル端末１０２のバージョンダウンを行うための配信データセット（以下、「バージョンダウンデータセット」という。）をサーバ１０１から取得する。ところが、バージョンダウンデータセットには、上述した図７の処理に対応しないコンテンツリスト２０７、つまり、暗号部６０５が暗号化されていないコンテンツリスト２０７が含まれている可能性がある。暗号化されていないコンテンツリスト２０７を復号化して算出された解析直前ハッシュ値及びチェック用ハッシュ値２０６を比較すると、正しい比較結果を得ることができない場合があり、その結果、モバイル端末１０２のバージョンダウンを実行することができないという問題が生じる。
【００４８】
これに対応して、本実施の形態では、取得されたコンテンツリスト２０７が暗号化されているか否かに基づいて解析直前ハッシュ値の算出方法を決定する。
【００４９】
図９において、まず、ＣＰＵ１０５は、図７のステップＳ７０１，Ｓ７０２の処理を行う。次いで、ＣＰＵ１０５は取得されたコンテンツリスト２０７が暗号化されているか否かを判別する（ステップＳ９０１）。
【００５０】
ステップＳ９０１の判別の結果、取得されたコンテンツリスト２０７が暗号化されているとき、ＣＰＵ１０５は図７のステップＳ７０３以降の処理を行う。一方、ステップＳ９０１の判別の結果、取得されたコンテンツリスト２０７が暗号化されていないとき、ＣＰＵ１０５は、ステップＳ７０１で受け付けた指示がモバイル端末１０２のバージョンダウンに対応する指示であるか否かを判別する（ステップＳ９０２）。ステップＳ９０２では、ＣＰＵ１０５は、例えば、ＲＯＭ１０６等に格納された各実行プログラムのバージョンと取得されたコンテンツリストの各暗号化コンテンツファイルのバージョンとを比較する。比較した結果、格納された各実行プログラムのバージョンが取得されたコンテンツリストの各暗号化コンテンツファイルのバージョンより新しい場合、ＣＰＵ１０５は受け付けた指示がモバイル端末１０２のバージョンダウンに対応する指示であると判別する。一方、取得されたコンテンツリストの各暗号化コンテンツファイルのバージョンが格納された各実行プログラムのバージョンと一致する又は新しい場合、ＣＰＵ１０５は受け付けた指示がモバイル端末１０２のバージョンダウンに対応する指示でないと判別する。
【００５１】
ステップＳ９０２の判別の結果、受け付けた指示がモバイル端末１０２のバージョンダウンに対応する指示でないとき、ＣＰＵ１０５はステップＳ７０６以降の処理を行う。一方、ステップＳ９０２の判別の結果、受け付けた指示がモバイル端末１０２のバージョンダウンに対応する指示であるとき、ＣＰＵ１０５は、復号化処理を行わず、ステップＳ７０２で取得されたコンテンツリストのハッシュ値を解析直前ハッシュ値として算出する（ステップＳ９０３）。次いで、ＣＰＵ１０５は図７のステップＳ７０５以降の処理を行う。
【００５２】
上述した図９の処理では、取得されたコンテンツリスト２０７が暗号化されているか否かに基づいて解析直前ハッシュ値の算出方法が決定される。すなわち、コンテンツリスト２０７の仕様に適した算出方法によって解析直前ハッシュ値が算出される。これにより、算出された解析直前ハッシュ値及びチェック用ハッシュ値の正しい比較結果を得ることができ、もって、正しい比較結果を得ることができないことに起因するモバイル端末１０２のバージョンダウンが実行されなくなる事態を回避することができる。
【００５３】
本発明は、上述の実施の形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、該システム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５４】
１０１  サーバ
１０２  モバイル端末
１０５，４０１  ＣＰＵ
２０６  チェック用ハッシュ値
２０７  コンテンツリスト
６０２  暗号化コンテンツデータに関する情報
【図１】
2018005613.tif 000003
【図２】
2018005613.tif 000004
【図３】
2018005613.tif 000005
【図４】
2018005613.tif 000006
【図５】
2018005613.tif 000007
【図６】
2018005613.tif 000008
【図７】
2018005613.tif 000009
【図８】
2018005613.tif 000010
【図９】
2018005613.tif 000011