(57)【要約】ソフトウェアに係るファイルを更新する場合に通信に係るデータ量を従来よりも抑えることのでき、且つ改竄検出を行う電子機器を提供する。    アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、１つ以上のデータからなるアプリケーションファイルを記憶し、更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取り、前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新し、更新された前記アプリケーションファイルが改竄されているか否かの確認を行う。【特許請求の範囲】
【請求項１】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段と、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と
を備えることを特徴とする電子機器。
【請求項２】
前記受取手段は、更新データと位置情報との組を少なくとも１つ以上受け取り、
前記更新処理手段は、
前記位置情報にて示される位置に基づいて、前記アプリケーションファイルの更新位置を決定する位置決定部と、
決定された前記更新位置を前記更新データの書き込み開始位置として、前記更新データを書き込む書込部と、
前記受取手段にて受け取った１つ以上の更新データ全ての書き込みが完了するまで、前記位置決定部と前記書込部の処理を行うように制御する更新制御部と
を備えることを特徴とする請求項１に記載の電子機器。
【請求項３】
前記更新制御部は、
全ての更新データの書き込みが完了すると、前記改竄検出実行手段の処理を開始するように制御する
ことを特徴とする請求項２に記載の電子機器。
【請求項４】
前記更新処理手段は、さらに、
アプリケーションファイルの更新中であることを示す第１の情報、又は更新中でないことを示す第２の情報の何れかを示すフラグを記憶しているフラグ記憶部と、
前記フラグが示す情報を変更するフラグ変更部とを備え、
前記フラグ変更部は、
前記受取手段が更新データと位置情報との組を少なくとも１つ以上受け取るときに、前記フラグの情報を、前記第１の情報に変更し、前記改竄検出実行手段にて改竄が検出されなかった場合に、前記フラグの情報を、前記第２の情報に変更する
ことを特徴とする請求項３に記載の電子機器。
【請求項５】
前記更新制御部は、さらに、
前記電子機器に電源が投入されると、前記フラグが示す情報を確認し、第１の情報である場合には、前記位置決定部と前記書込部の処理を行うように制御する
ことを特徴とする請求項４に記載の電子機器。
【請求項６】
前記アプリケーションファイルは、１つ以上のブロックに分割されており、
前記更新データは、前記１以上のブロックのうち少なくとも１つ以上の更新対象ブロックに含まれ、
前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、
前記受取手段は、さらに、１つ以上の前記更新対象ブロックそれぞれに対する新たな基準改竄検出値と、前記１つ以上の前記更新対象ブロックそれぞれに対する基準改竄検出値の、前記改竄検出リストにおける位置を示す改竄検出位置情報とからなる組を受け取り、
前記更新処理手段は、さらに、１つ以上の新たな基準改竄検出値と、前記改竄検出値位置情報とを用いて、前記改竄検出リストを更新し、
前記改竄検出実行手段は、
前記更新された改竄検出リストが正当なものである場合にのみ、前記更新された改竄検出リストが有する少なくとも１つ以上の基準改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項３に記載の電子機器。
【請求項７】
前記アプリケーションファイルは、１つ以上のブロックに分割されており、
前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、
前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に処理を開始し、前記改竄検出リストが正当なものである場合にのみ、前記改竄検出リストが有する少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項１に記載の電子機器。
【請求項８】
前記改竄検出手段は、
改竄検出対象であるブロックに対する検出用改竄検出値を算出し、算出した検出用改竄検出値と、改竄検出対象であるブロックに対する改竄検出値とが一致するか否かを判断し、一致すると判断する場合には前記アプリケーションファイルは改竄されていないとし、一致しない場合には前記アプリケーションファイルは改竄されているとする
ことを特徴とする請求項７に記載の電子機器。
【請求項９】
前記記憶部は、部分鍵を記憶しており、
前記改竄検出実行手段は、耐タンパ化されており、マスタ鍵を記憶し、前記部分鍵と前記マスタ鍵とを用いて、改竄検出鍵を生成し、生成した改竄検出鍵を用いて、前記検出用改竄検出値を算出する
ことを特徴とする請求項８に記載の電子機器。
【請求項１０】
前記受取手段は、前記部分鍵とは異なる別の部分鍵と、前記部分鍵が前記記憶部にて記憶されている位置を示す鍵位置情報とを受け取り、
前記更新処理手段は、前記鍵位置情報に基づいて、前記部分鍵を前記別の部分鍵に更新する
ことを特徴とする請求項９に記載の電子機器。
【請求項１１】
前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値を含むデータ部と、前記データ部に対する基準データ部改竄検出値を含むヘッダ部とから構成され、
前記改竄検出実行手段は、前記データ部に対する検出用データ部改竄検出値を算出し、算出した前記検出用データ部改竄検出と前記基準データ部改竄検出値とが一致する場合に、前記改竄検出リストが正当なものであるとする
ことを特徴とする請求項７に記載の電子機器。
【請求項１２】
前記データ部は暗号化されており、
前記改竄検出実行手段は、暗号化された前記データ部に対する検出用改竄検出値を算出し、前記改竄検出リストが正当なものである場合に、暗号化された前記データ部を復号する
ことを特徴とする請求項１１に記載の電子機器。
【請求項１３】
前記改竄検出リストにおいて、基準改竄検出値のそれぞれに対して、対応するブロックが改竄検出の対象として使用すべきか否かを示す判断情報が対応付けられており、
前記改竄検出実行手段は、前記判断情報がブロックを改竄検出の対象としない旨を示す場合には、当該ブロックに対する改竄検出は行わない
ことを特徴とする請求項７に記載の電子機器。
【請求項１４】
前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値と、改竄検出の対象となるアプリケーションソフトウェアの種別を示すアプリケーション種別とが対応付けられた組を１つ以上含み、
前記改竄検出実行手段は、起動されたアプリケーションソフトウェアに対するアプリケーション種別に対応する基準改竄検出値それぞれのうち少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項７に記載の電子機器。
【請求項１５】
前記アプリケーションソフトウェアの動作に係るアプリケーションファイルは複数個あり、
前記アプリケーションファイルのそれぞれは、１つ以上のブロックに分割されており、
前記改竄検出リストは、アプリケーションファイルそれぞれに対して、１つ以上のブロックそれぞれに対する基準改竄検出値を基準値群として格納し、１つ以上の前記基準値群のうち前記アプリケーションソフトウェアの起動時に改竄検出に用いる少なくとも１つ以上の基準値群の範囲を示す範囲情報を有し、
前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に、前記改竄検出リストが有する前記範囲情報にて示される少なくとも１つ以上の基準値群を用いて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項７に記載の電子機器。
【請求項１６】
前記更新処理手段及び前記改竄検出実行手段は、耐タンパ化されている
ことを特徴とする請求項２に記載の電子機器。
【請求項１７】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置であって、
更新後のアプリケーションファイルを取得する第１取得手段と、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを第２取得手段と、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と
を備えることを特徴とする更新サーバ装置。
【請求項１８】
前記更新前のアプリケーションファイルは、所定の大きさからなる１つ以上の更新前ブロックに分割されており、
前記第１取得手段は、さらに、
１つ以上の前記更新前ブロックそれぞれと、前記更新前ブロック毎に対する基準改竄検出値とからなる更新前改竄検出リストを取得し、
前記更新サーバ装置は、さらに、
前記更新後のアプリケーションファイルを前記所定の大きさに分割された１つ以上の更新後ブロックを取得し、取得した１つ以上の更新後ブロックそれぞれに対して基準改竄検出値を再計算して新たな改竄検出リストを生成する改竄検出リスト生成手段を備え、
前記第２取得手段は、さらに、
前記改竄検出リスト生成手段にて生成された新たな改竄検出リストから、前記更新データを含む更新後ブロックと、その更新後ブロックに対応する再計算された基準改竄検出値と、その更新後ブロックに対応する更新前ブロックの前記更新前改竄検出リストにおける位置を示す改竄検出値位置情報とを取得し、
前記送信手段は、さらに、
前記第２取得手段にて取得された更新後ブロックと前記基準改竄検出値と前記改竄検出値位置情報とを前記電子機器に送信する
ことを特徴とする請求項１７に記載の更新サーバ装置。
【請求項１９】
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記１以上の更新後ブロックそれぞれに対する基準改竄検出値を算出する
ことを特徴とする請求項１８に記載の更新サーバ装置。
【請求項２０】
前記更新サーバ装置は、
前記外部装置によって更新された部分鍵と前記マスタ鍵とを用いて更新された改竄検出鍵を受け取ると、記憶している前記改竄検出鍵を、受け取った前記更新された改竄検出鍵に更新し、さらに、前記更新された部分鍵を前記外部装置から受け取り、
前記改竄検出リスト生成手段は、
前記更新された改竄検出鍵を用いて、前記１以上の更新後ブロックのそれぞれに対する基準改竄検出値を算出し、
前記第２取得手段は、さらに、
前記電子機器にて前記部分鍵が記憶されている位置を示す鍵位置情報を取得し、
前記送信手段は、さらに、
前記更新された部分鍵と、前記鍵位置情報とを前記電子機器に送信する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２１】
前記改竄検出リストは、前記１つ以上の更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部を有し、
前記改竄検出リスト生成手段は、生成した新たな改竄検出リストのデータ部を暗号化する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２２】
前記更新後改竄検出リストは、ヘッダ部を有し、
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、暗号化されたデータ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する
ことを特徴とする請求項２１に記載の更新サーバ装置。
【請求項２３】
前記改竄検出リストは、ヘッダ部と、前記１つ以上の前記更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部とを有し、
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記データ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２４】
前記改竄検出リスト生成手段は、
前記データ部改竄検出値の算出後、前記データ部を暗号化する
ことを特徴とする請求項２３に記載の更新サーバ装置。
【請求項２５】
前記更新サーバ装置は、外部の改竄検出リスト生成装置を前記改竄検出リスト生成手段として用いる
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２６】
１つ以上のブロックに分割されたアプリケーションファイルに対してブロック毎に改竄検出値を算出するために用いられる改竄検出鍵を生成する鍵生成装置であって、
前記改竄検出鍵は、マスタ鍵と、部分鍵とから生成され、
前記鍵生成装置は、
前記マスタ鍵と、更新された部分鍵とを取得する鍵取得手段と、
前記マスタ鍵と前記更新された部分鍵とを用いて新たな改竄検出鍵を生成する鍵生成手段と、
前記鍵生成手段にて生成された改竄検出鍵を、前記改竄検出値を含む改竄検出リストを生成する外部装置へ配布する配布手段と
を備えることを特徴とする鍵生成装置。
【請求項２７】
前記配布手段は、前記更新された部分鍵を、前記外部装置を介して前記アプリケーションファイルが改竄されているか否かの確認を行う電子機器へ配布する
ことを特徴とする請求項２６に記載の鍵生成装置。
【請求項２８】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新方法であって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記更新方法は、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと
を含むことを特徴とする更新方法。
【請求項２９】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新プログラムであって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記更新プログラムは、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと
を含むことを特徴とする更新プログラム。
【請求項３０】
前記更新プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項２９に記載の更新プログラム。
【請求項３１】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置で用いられ、更新に必要な情報を取得する取得方法であって、
更新後のアプリケーションファイルを取得する第１取得ステップと、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを第２取得ステップと、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと
を含むことを特徴とする取得方法。
【請求項３２】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置で用いられ、更新に必要な情報を取得する取得プログラムであって、
更新後のアプリケーションファイルを取得する第１取得ステップと、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを第２取得ステップと、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと
を含むことを特徴とする取得プログラム。
【請求項３３】
前記取得プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項３２に記載の取得プログラム。
【請求項３４】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器の集積回路であって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記集積回路は、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と
を備えることを特徴とする集積回路。
【請求項３５】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置の集積回路であって、
更新後のアプリケーションファイルを取得する第１取得手段と、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを第２取得手段と、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】  電子機器が保持するソフトウェアをネットワークを介して更新し、改竄の有無を検出する技術に関する。
【背景技術】
【０００２】  プログラムの不正な改竄や解析を防止する技術は従来から研究されている。たとえば、非特許文献１では、ソフトウェアの解析を防ぐための基本原則や具体的手法に関して記述している。また、非特許文献２では、ソフトウェアの解析を防ぐためのツールとして開発したＴＲＣＳ（Ｔａｍｐｅｒ  Ｒｅｓｉｓｔａｎｔ  Ｃｏｄｉｎｇ  Ｓｙｓｔｅｍ）の技術課題とその対策について記述している。このようなソフトウェアの不正な解析や改竄を防ぐ技術を、「耐タンパー技術」と呼ぶ。以降、不正な改竄を、単に「改竄」といい、正当な改竄を「更新」という。【０００３】  以上のような耐タンパー技術は既に実用化されている。例えば、ＰＣ上で市販のＤＶＤコンテンツを再生するソフトウェアがそれである。ＤＶＤのコンテンツは不正コピーを防止するために暗号化されており、この再生を行うには復号化するための鍵が必要となる。この鍵が悪意のあるユーザの手に渡ると、ＤＶＤコンテンツは容易にコピーされインターネットを通じて不正にばら撒かれる可能性がある。このため、前述のソフトウェアは耐タンパー技術によって保護されている。【０００４】  このように、近年ＤＶＤに代表されるようにデジタルコンテンツが普及し、それらをコンピュータのような仕様の公開されたシステム上で再生するソフトウェアには耐タンパー技術が必要不可欠となっている。
携帯電話などの電子機器においても耐タンパー技術の適用が行われている。特許文献１では、電子機器内のメモリに対する改竄を防止するために、ハッシュ関数を用いた耐タンパー技術の一つである改竄検出方式が開示されている。【０００５】  また、近年、携帯電話をはじめとした電子機器はネットワーク化が進み、既に組み込まれたソフトウェアに対して製品の出荷後も不具合を修正するソフトウェアを、ネットワークを通じて配布し更新することが可能となってきている。
【非特許文献１】「逆解析や改変からソフトを守る」日経エレクトロニクス１９９８．１．５（Ｐ２０９−２２０）
【非特許文献２】「ソフトウェアの耐タンパー化技術」富士ゼロックス  テクニカル  レポート  Ｎｏ．１３（Ｐ２０−２８）
【特許文献１】特表２００１−５００２９３号公報
【特許文献２】特開２００５−０１８７２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】  改竄検出を行う電子機器がネットワークを通じてソフトウェアを更新する場合、更新されたソフトウェア自体が、ネットワークを通じて電子機器に配布されるので、更新されたソフトウェアのサイズが大きくなればなるほど、電子機器が更新されたソフトウェアを受信する時間が長くなる。つまり、ソフトウェアの更新時間が長くなるので、利用者にとっては不満が生じてしまうという問題がある。【０００７】  そこで、本発明は、ソフトウェアに係るファイルを更新する場合に通信に係るデータ量を従来よりも抑えることのでき、且つ改竄検出を行う電子機器、更新サーバ装置、鍵更新装置、更新方法、更新プログラム、ソフトウェアの更新に必要な情報を取得する取得方法及び取得プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】  上記目的を達成するために、本発明は、アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段と、更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段とを備えることを特徴とする。
【発明の効果】
【０００９】  上記に示した構成によると、電子機器は、ネットワークを介してアプリケーションファイルに含まれるデータに対する更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを受け取り、受け取った位置情報に基づいて前記データを前記更新データに書き換えて、アプリケーションファイルの一部のみを更新するので、外部装置から更新されたアプリケーションファイルを受け取る場合よりも通信に係るデータ量を少なくすることができる。【００１０】  ここで、前記受取手段は、更新データと位置情報との組を少なくとも１つ以上受け取り、前記更新処理手段は、前記位置情報にて示される位置に基づいて、前記アプリケーションファイルの更新位置を決定する位置決定部と、決定された前記更新位置を前記更新データの書き込み開始位置として、前記更新データを書き込む書込部と、前記受取手段にて受け取った１つ以上の更新データ全ての書き込みが完了するまで、前記位置決定部と前記書込部の処理を行うように制御する更新制御部とを備えるとしてもよい。【００１１】  この構成によると、電子機器は、受け取った位置情報にて示される位置に基づいて、更新データの書込開始位置を決定し、決定した書込開始位置から前記更新データを書き込むことができる。
ここで、前記更新制御部は、全ての更新データの書き込みが完了すると、前記改竄検出実行手段の処理を開始するように制御するとしてもよい。【００１２】  この構成によると、電子機器は、アプリケーションファイルの更新後に、更新したアプリケーションファイルが改竄されているか否かの確認を行うことができるので、更新後のアプリケーションファイルの正当性を保証することができる。
ここで、前記更新処理手段は、さらに、アプリケーションファイルの更新中であることを示す第１の情報、又は更新中でないことを示す第２の情報の何れかを示すフラグを記憶しているフラグ記憶部と、前記フラグが示す情報を変更するフラグ変更部とを備え、前記フラグ変更部は、前記受取手段が更新データと位置情報との組を少なくとも１つ以上受け取るときに、前記フラグの情報を、前記第１の情報に変更し、前記改竄検出実行手段にて改竄が検出されなかった場合に、前記フラグの情報を、前記第２の情報に変更するとしてもよい。【００１３】  この構成によると、電子機器は、フラグを用いることによりアプリケーションファイルの更新中であるか否かを識別することができる。
ここで、前記更新制御部は、さらに、前記電子機器に電源が投入されると、前記フラグが示す情報を確認し、第１の情報である場合には、前記位置決定部と前記書込部の処理を行うように制御するとしてもよい。【００１４】  この構成によると、電子機器は、電源投入時にフラグが示す情報が第１の情報である場合には、再度、アプリケーションファイルの更新を行う。これにより、電子機器は、アプリケーションファイルの更新中に電源が切られも、その後電源が投入されることにより、確実にアプリケーションファイルの更新を行うことができる。
ここで、前記アプリケーションファイルは、１つ以上のブロックに分割されており、前記更新データは、前記１以上のブロックのうち少なくとも１つ以上の更新対象ブロックに含まれ、前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、前記受取手段は、さらに、１つ以上の前記更新対象ブロックそれぞれに対する新たな基準改竄検出値と、前記１つ以上の前記更新対象ブロックそれぞれに対する基準改竄検出値の、前記改竄検出リストにおける位置を示す改竄検出位置情報とからなる組を受け取り、前記更新処理手段は、さらに、１つ以上の新たな基準改竄検出値と、前記改竄検出値位置情報とを用いて、前記改竄検出リストを更新し、前記改竄検出実行手段は、前記更新された改竄検出リストが正当なものである場合にのみ、前記更新された改竄検出リストが有する少なくとも１つ以上の基準改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。【００１５】  この構成によると、電子機器は、改竄検出リストの正当性を確認しているので、改竄検出値自体を改竄することで不正なブロックを正当であると誤認させる行為を防止することができる。
ここで、前記アプリケーションファイルは、１つ以上のブロックに分割されており、前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に処理を開始し、前記改竄検出リストが正当なものである場合にのみ、前記改竄検出リストが有する少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。【００１６】  この構成によると、電子機器は、改竄検出リストの正当性を確認しているので、改竄検出値自体を改竄することで不正なブロックを正当であると誤認させる行為を防止することができる。
ここで、前記改竄検出手段は、改竄検出対象であるブロックに対する検出用改竄検出値を算出し、算出した検出用改竄検出値と、改竄検出対象であるブロックに対する改竄検出値とが一致するか否かを判断し、一致すると判断する場合には前記アプリケーションファイルは改竄されていないとし、一致しない場合には前記アプリケーションファイルは改竄されているとするとしてもよい。【００１７】  この構成によると、電子機器は、改竄検出対象のブロックに対する検出用改竄検出値と、改竄検出リストに含まれる前記ブロックに対する改竄検出値とを用いて、前記ブロックが改竄されているか否かを確認することができる。
ここで、前記記憶部は、部分鍵を記憶しており、前記改竄検出実行手段は、耐タンパ化されており、マスタ鍵を記憶し、前記部分鍵と前記マスタ鍵とを用いて、改竄検出鍵を生成し、生成した改竄検出鍵を用いて、前記検出用改竄検出値を算出するとしてもよい。【００１８】  この構成によると、電子機器は、改竄検出実行手段が耐タンパ化されており、且つマスタ鍵を記憶しているので、改竄検出鍵の生成、及び生成した改竄検出鍵を不正解析者に解析されないようにすることができる。
ここで、前記受取手段は、前記部分鍵とは異なる別の部分鍵と、前記部分鍵が前記記憶部にて記憶されている位置を示す鍵位置情報とを受け取り、前記更新処理手段は、前記鍵位置情報に基づいて、前記部分鍵を前記別の部分鍵に更新するとしてもよい。【００１９】  この構成によると、電子機器は、部分鍵を更新することができる。これにより、電子機器は、改竄検出鍵が不正解析者に知られたとしても、部分鍵を更新することにより、新たな改竄検出鍵を生成することができる。
ここで、前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値を含むデータ部と、前記データ部に対する基準データ部改竄検出値を含むヘッダ部とから構成され、前記改竄検出実行手段は、前記データ部に対する検出用データ部改竄検出値を算出し、算出した前記検出用データ部改竄検出と前記基準データ部改竄検出値とが一致する場合に、前記改竄検出リストが正当なものであるとするとしてもよい。【００２０】  この構成によると、電子機器は、改竄検出リストに含まれるデータ部に対する改竄検出値を確認することにより、改竄検出リストの正当性を保証することができる。これにより、アプリケーションファイルの改竄検出をより正確に行うことができる。
ここで、前記データ部は暗号化されており、前記改竄検出実行手段は、暗号化された前記データ部に対する検出用改竄検出値を算出し、前記改竄検出リストが正当なものである場合に、暗号化された前記データ部を復号するとしてもよい。【００２１】  この構成によると、電子機器は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。
ここで、前記改竄検出リストにおいて、基準改竄検出値のそれぞれに対して、対応するブロックが改竄検出の対象として使用すべきか否かを示す判断情報が対応付けられており、前記改竄検出実行手段は、前記判断情報がブロックを改竄検出の対象としない旨を示す場合には、当該ブロックに対する改竄検出は行わないとしてもよい。【００２２】  この構成によると、電子機器は、判断情報が改竄検出の対象としない旨を示す場合にはそのブロックに対する改竄検出を行わないようにすることができる。これにより、アプリケーションファイルが更新された結果、一部のブロックが不要となった場合、不要となったブロックに対しての改竄検出を省略することができる。
ここで、前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値と、改竄検出の対象となるアプリケーションソフトウェアの種別を示すアプリケーション種別とが対応付けられた組を１つ以上含み、前記改竄検出実行手段は、起動されたアプリケーションソフトウェアに対するアプリケーション種別に対応する基準改竄検出値それぞれのうち少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。【００２３】  この構成によると、電子機器は、起動されたアプリケーションソフトウェアのアプリケーション種別に対応する１つ以上の改竄検出値を用いて、改竄検出を行うことができる。
ここで、前記アプリケーションソフトウェアの動作に係るアプリケーションファイルは複数個あり、前記アプリケーションファイルのそれぞれは、１つ以上のブロックに分割されており、前記改竄検出リストは、アプリケーションファイルそれぞれに対して、１つ以上のブロックそれぞれに対する基準改竄検出値を基準値群として格納し、１つ以上の前記基準値群のうち前記アプリケーションソフトウェアの起動時に改竄検出に用いる少なくとも１つ以上の基準値群の範囲を示す範囲情報を有し、前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に、前記改竄検出リストが有する前記範囲情報にて示される少なくとも１つ以上の基準値群を用いて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。【００２４】  この構成によると、電子機器は、アプリケーションソフトウェアの起動時に、範囲情報に示される少なくとも１つ以上基準値群を用いて優先的に改竄の検出を行うので、アプリケーションソフトウェアの起動にかかる時間を、すべての基準値群を用いて改竄検出を行う場合に比べて短くすることができる。
ここで、前記更新処理手段及び前記改竄検出実行手段は、耐タンパ化されているとしてもよい。【００２５】  この構成によると、電子機器は、更新処理手段及び改竄検出実行手段が耐タンパ化されているので、更新処理の動作、改竄検出の動作を不正解析者に解析されないようにすることができる。
また、本発明は、ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置であって、更新後のアプリケーションファイルを取得する第１取得手段と、取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを第２取得手段と、取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段とを備えることを特徴とする。【００２６】  この構成によると、更新サーバ装置は、アプリケーションファイルに含まれるデータに対する更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得し、取得した更新データ及び位置情報とを、ネットワークを介して電子機器に送信するので、アプリケーションファイルを送信する場合よりも通信に係るデータ量を少なくすることができる。【００２７】  ここで、前記更新前のアプリケーションファイルは、所定の大きさからなる１つ以上の更新前ブロックに分割されており、前記第１取得手段は、さらに、１つ以上の前記更新前ブロックそれぞれと、前記更新前ブロック毎に対する基準改竄検出値とからなる更新前改竄検出リストを取得し、前記更新サーバ装置は、さらに、前記更新後のアプリケーションファイルを前記所定の大きさに分割された１つ以上の更新後ブロックを取得し、取得した１つ以上の更新後ブロックそれぞれに対して基準改竄検出値を再計算して新たな改竄検出リストを生成する改竄検出リスト生成手段を備え、前記第２取得手段は、さらに、前記改竄検出リスト生成手段にて生成された新たな改竄検出リストから、前記更新データを含む更新後ブロックと、その更新後ブロックに対応する再計算された基準改竄検出値と、その更新後ブロックに対応する更新前ブロックの前記更新前改竄検出リストにおける位置を示す改竄検出値位置情報とを取得し、前記送信手段は、さらに、前記第２取得手段にて取得された更新後ブロックと前記基準改竄検出値と前記改竄検出値位置情報とを前記電子機器に送信するとしてもよい。【００２８】  この構成によると、更新サーバ装置は、第２取得手段にて取得された更新後ブロックと、その基準改竄検出値と、改竄検出値位置情報と電子機器に送信するので、電子機器では、更新されたブロックに対する基準改竄検出値を、常に最新の値とすることができる。
ここで、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記１以上の更新後ブロックそれぞれに対する基準改竄検出値を算出するとしてもよい。【００２９】  この構成によると、更新サーバ装置は、部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を用いて、基準改竄検出値を計算することができる。
ここで、前記更新サーバ装置は、前記外部装置によって更新された部分鍵と前記マスタ鍵とを用いて更新された改竄検出鍵を受け取ると、記憶している前記改竄検出鍵を、受け取った前記更新された改竄検出鍵に更新し、さらに、前記更新された部分鍵を前記外部装置から受け取り、前記改竄検出リスト生成手段は、前記更新された改竄検出鍵を用いて、前記１以上の更新後ブロックのそれぞれに対する基準改竄検出値を算出し、前記第２取得手段は、さらに、前記電子機器にて前記部分鍵が記憶されている位置を示す鍵位置情報を取得し、前記送信手段は、さらに、前記更新された部分鍵と、前記鍵位置情報とを前記電子機器に送信するとしてもよい。【００３０】  この構成によると、更新サーバ装置は、改竄検出鍵を更新することができる。これにより、更新サーバ装置は、改竄検出鍵が不正解析者に知られたとしても、新たな改竄検出鍵を外部装置から受け取ることにより、不正解析者に知られた改竄検出鍵を用いることなく新たな基準改竄検出値を算出することができる。
ここで、前記改竄検出リストは、前記１つ以上の更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部を有し、前記改竄検出リスト生成手段は、生成した新たな改竄検出リストのデータ部を暗号化するとしてもよい。【００３１】  この構成によると、更新サーバ装置は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。
ここで、前記更新後改竄検出リストは、ヘッダ部を有し、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、暗号化されたデータ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納するとしてもよい。【００３２】  この構成によると、更新サーバ装置は、暗号化されたデータ部に対するデータ部改竄検出値を算出するので、暗号化されたデータ部に対する正当性を保証することができる。
ここで、前記改竄検出リストは、ヘッダ部と、前記１つ以上の前記更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部とを有し、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記データ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納するとしてもよい。【００３３】  この構成によると、更新サーバ装置は、データ部に対するデータ部改竄検出値を算出するので、データ部に対する正当性を保証することができる。
ここで、前記改竄検出リスト生成手段は、前記データ部改竄検出値の算出後、前記データ部を暗号化するとしてもよい。
この構成によると、更新サーバ装置は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。【００３４】  また、本発明は、１つ以上のブロックに分割されたアプリケーションファイルに対してブロック毎に改竄検出値を算出するために用いられる改竄検出鍵を生成する鍵生成装置であって、前記改竄検出鍵は、マスタ鍵と、部分鍵とから生成され、前記鍵生成装置は、前記マスタ鍵と、更新された部分鍵とを取得する鍵取得手段と、前記マスタ鍵と前記更新された部分鍵とを用いて新たな改竄検出鍵を生成する鍵生成手段と、前記鍵生成手段にて生成された改竄検出鍵を、前記改竄検出値を含む改竄検出リストを生成する外部装置へ配布する配布手段とを備えることを特徴とする。【００３５】  この構成によると、鍵更新装置は、外部装置から改竄検出鍵が漏洩したとしても、部分鍵を更新するだけで、不正行為を行なった外部装置の持つ改竄検出鍵とは異なる新たな改竄検出鍵を生成することができる。
ここで、前記配布手段は、前記更新された部分鍵を、前記外部装置を介して前記アプリケーションファイルが改竄されているか否かの確認を行う電子機器へ配布するとしてもよい。【００３６】  この構成によると、更新された部分鍵を電子機器に、外部装置を介して配布することができる。
【図面の簡単な説明】
【００３７】
【図１】プログラム更新システム１の概要を示す図である。
【図２】携帯電話機１０の構成を示すブロック図である。
【図３】ハッシュリスト１２２のデータ構造の一例を示す図である。
【図４】更新データリスト１５０のデータ構造の一例を示す図である。
【図５】更新処理部１０３の構成を示すブロック図である。
【図６】改竄検出実行部１０５構成を示すブロック図である。
【図７】更新サーバ装置２０の構成を示すブロック図である。
【図８】ハッシュリスト生成部２０３の構成を示すブロック図である。
【図９】鍵更新装置３０の構成を示すブロック図である。
【図１０】更新サーバ装置２０にて行われる更新データリスト、及びハッシュリストの生成の動作を示す流れ図である。
【図１１】ハッシュリスト更新時の動作概要を示す流れ図である。
【図１２】携帯電話機１０にて行われる更新処理の動作を示す流れ図である。図１３へ続く。
【図１３】携帯電話機１０にて行われる更新処理の動作を示す流れ図である。図１２から続く。
【図１４】携帯電話機１０にて行われるＡＰ起動時の動作を示す流れ図である。
【図１５】携帯電話機１０にて行われる改竄検出処理の動作を示す流れ図である。図１６へ続く。
【図１６】携帯電話機１０にて行われる改竄検出処理の動作を示す流れ図である。図１５から続く。
【図１７】第１の実施の形態で用いられる各鍵の関係と、鍵が利用される場面との関係を示す図である。
【図１８】ハッシュリスト１２２ａのデータ構造の一例を示す図である。
【図１９】ハッシュリスト１２２ｂのデータ構造の一例を示す図である。
【図２０】ファイルのブロック数が「８」から「７」に減少した場合のハッシュ情報１０３０の一例を示す。
【図２１】ハッシュリスト１２２ｃのデータ構造の一例を示す図である。
【図２２】ハッシュリスト１２２ｄのデータ構造の一例を示す図である。
【図２３】１以上のＡＰファイル群に対して、１つのハッシュリスト及び部分鍵を与える場合における記憶部１０１構成を示すブロック図である。
【符号の説明】
【００３８】１    プログラム更新システム
１０    携帯電話機
２０    更新サーバ装置
３０    鍵更新装置
４０    携帯網
５０    インターネット
１０１    記憶部
１０２    制御部
１０３    更新処理部
１０４    更新ファイル受取部
１０５    改竄検出実行部
１０６    マイク
１０７    スピーカ
１０８    入力部
１０９    表示部
１１０    無線部
１１１    アンテナ
１６１    フラグ記憶部
１６２    更新制御部
１６３    更新データ読取部
１６４    更新データ解析部
１６５    書込位置決定部
１６６    更新データ書込部
１６７    更新確認部
１７１    検出制御部
１７２    改竄検出呼出部
１７３    改竄検出処理部
１７４    ファイル読込部
１７５    マスタ鍵記憶部
１７６    マスタ鍵
２０１    記憶部
２０２    データ取得部
２０３    ハッシュリスト生成部
２０４    ハッシュリスト書込部
２０５    更新要求処理部
２０６    入力部
２０７    送受信部
２１０    改竄検出鍵記憶部
２１１    データ受取部
２１２    ハッシュリスト生成処理部
２１３    暗号化処理部
２１４    更新データリスト生成部
２１５    改竄検出鍵
３０１    鍵取得部
３０２    改竄検出鍵生成部
３０３    改竄検出鍵配布部
３０４    出力部
【発明を実施するための最良の形態】
【００３９】  １．第１の実施の形態
以下、本発明における第１の実施の形態について、図面を参照しながら説明する。
１．１  プログラム更新システム１の概要
図１は、第１の実施の形態におけるプログラム更新システム１の全体構成を示す図である。【００４０】  プログラム更新システム１は、携帯電話機１０、更新サーバ装置２０、及び鍵更新装置３０から構成されている。
鍵更新装置３０は、更新サーバ装置２０や携帯電話機１０で用いられる改竄検出鍵を更新する。改竄検出鍵が不正に流出したときは、新しい改竄検出鍵の発行を行う。鍵更新装置３０は、改竄検出鍵を生成する機関により厳重に管理されている。改竄検出鍵は、マスタ鍵と部分鍵とから生成される。マスタ鍵は、一度生成されると変更されない鍵であり、部分鍵は、改竄検出鍵の更新を行う際に、更新される鍵である。【００４１】  携帯電話機１０は、更新サーバ装置２０に、アプリケーションソフトウェア（以下、ＡＰという。）に係るファイルの更新を要求する更新要求情報を送信し、更新に係るデータである更新データリストを受信する。携帯電話機１０は、受信した更新データリストに基づいて、ファイルの更新を行う。ここで、ＡＰとは、具体的には音楽録音・再生ソフトウェアや動画録画・再生ソフトウェアのようなアプリケーションである。また、ＡＰに係るファイルとは、ＡＰそのものや、ＡＰから呼び出されるエンコーダ、デコーダ、ドライバ、ＡＰが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などであり、１つ以上のデータからなる。【００４２】  また、携帯電話機１０は、アプリケーションソフトウェア更新時、及び起動時にＡＰに係るファイルが改竄されているか否かの確認を行う。ここで、改竄とは、不正にファイルを書き換えることをいう。
更新サーバ装置２０は、更新データリストを保持しており、携帯電話機１０からの更新要求情報を受け付けると、更新要求の対象であるファイルに対応する更新データリストを携帯電話機１０に送信する。【００４３】  携帯電話機１０と更新サーバ装置２０とは、携帯網４０及びインターネット５０を介して、通信を行う。
１．２  携帯電話機１０の構成
携帯電話機１０は、図２にて示すように、記憶部１０１、制御部１０２、更新処理部１０３、更新ファイル受取部１０４、改竄検出実行部１０５、マイク１０６、スピーカ１０７、入力部１０８、表示部１０９、無線部１１０、及びアンテナ１１１から構成されている。【００４４】  （１）記憶部１０１
記憶部１０１は、図２に示すように、検出対象情報群１２０、１２０ａ、・・・、１０２ｍを記憶している。なお、検出対象情報群１２０、１２０ａ、・・・、１０２ｍは全て同じ構成であるので、ここでは、検出対象情報群１２０の構成について説明する。
検出対象情報群１２０は、図２に示すように、ＡＰファイル群１２１、ハッシュリスト１２２、及び部分鍵を記憶している。【００４５】  （ＡＰファイル群１２１）
ＡＰファイル群１２１は、第１ファイル１２５、・・・、第ｎファイル１２６を有している。第１ファイル１２５、・・・、第ｎファイル１２６は、改竄検出の対象となるファイルであり、具体的には、上述したように、ＡＰそのものや、ＡＰから呼び出されるエンコーダ、デコーダ、ドライバ、ＡＰが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などである。ここで、ｎは１以上の整数である。つまり、ＡＰファイル群１２１には、１つ以上のファイルが格納されている。【００４６】  なお、以降では、第１ファイル１２５、・・・、第ｎファイル１２６それぞれのファイル名を「ｆｉｌｅ＿１」、・・・、「ｆｉｌｅ＿ｎ」とする。なお、各ファイルは、局所的な更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。
（ハッシュリスト１２２）
ハッシュリスト１２２は、第１ファイル１２５、・・・、第ｎファイル１２６の改竄検出用のハッシュ値をリストとして保持している。ハッシュリスト１２２は局所的な更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。【００４７】  ここで、ハッシュリスト１２２について説明する。
図３は、ハッシュリスト１２２のデータ構造の一例を示す図である。
ハッシュリスト１２２は、暗号化されていないヘッダ部１３０と暗号化されているデータ部１３１とから構成されている。ここで、暗号化に用いられるアルゴリズムは、例えば、ＸＯＲのような論理演算もしくはＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）といった暗号アルゴリズムである。暗号アルゴリズムＤＥＳ、ＡＥＳは、公知であるため説明は省略する。【００４８】  ヘッダ部１３０は、ハッシュリストファイルサイズ１３２とデータ部ハッシュ値１３３とから構成されている。ハッシュリストファイルサイズ１３２は、ヘッダ部１３０とデータ部１３１を合わせたハッシュリスト１２２全体のデータサイズを示す。データ部ハッシュ値１３３は、データ部１３１に対してハッシュ計算アルゴリズムを適用して算出されたハッシュ値を示す。ここで、ハッシュ計算アルゴリズムは、ＳＨＡ−１やＭＤ５などの一方向性関数に鍵値をからめるＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ）アルゴリズムであるとする。以降において、ハッシュ値を算出するハッシュ計算アルゴリズムは、ＨＭＡＣアルゴリズムであるとする。【００４９】  データ部１３１は、１つ以上のハッシュ情報から構成されている。ここでは、データ部１３１は、ハッシュ情報１３４、・・・、ハッシュ情報１３５から構成されているものとする。ハッシュ情報は、改竄検出対象となるファイルに対して、少なくとも１つ存在する。
ハッシュ情報１３４は、１つのファイル情報１４０と複数のＭＡＣ情報１４１とから構成されている。【００５０】  ファイル情報１４０は、改竄検出対象となるファイルを分割して生成したブロックの数を示すブロック数１４２と、改竄検出対象となるファイルを示すファイル名とから構成されている。ここで、ファイル名は、改竄検出対象となるファイルのファイルシステム上の絶対パスや相対パスなど場所を特定できるパスを含めた形式で示されている。
ＭＡＣ情報１４１は、１個以上のエントリで構成されている。ここで、エントリの数は、ブロック数１４２にて示される値＋１である。【００５１】  エントリ１４４は、ファイル名１４３にて示されるファイルの分割されたブロックについての先頭アドレスからのオフセットと、ブロックのサイズと、ブロックに対してハッシュ計算アルゴリズムを適用して算出されたハッシュ値とから構成されている。なお、（ｎ−１）番目までのエントリの構成については、同様であるため説明は省略する。ハッシュリスト１２２に格納されているハッシュ値は、改竄検出時において、改竄がされているか否かを判断するための基準となる基準値である。【００５２】  ＭＡＣ情報１４１の最後に位置するエントリ１４５は、更新用に予約された空エントリであり、オフセット、サイズ、及びハッシュ値が記述される代わりに、“Ｒｅｓｅｒｖｅｄ”がそれぞれ記述されている。なお、ＭＡＣ情報１４１の最後に位置するエントリを最終エントリともいう。
データ部１３１の最後の位置するハッシュ情報における最終エントリには、ハッシュリスト１２２における最後のエントリであることを示す情報“ｅｎｄ  ｏｆ  ｅｎｔｒｙ”が埋められている。ここでは、ハッシュ情報１３５が、データ部１３１の最後に位置するハッシュ情報であるので、その最終エントリ１４６には、“ｅｎｄ  ｏｆ  ｅｎｔｒｙ”が埋められている。なお、ハッシュ情報１３５の他の構成要素は、ハッシュ情報１３４において最終エントリ１４５を除く他の構成要素と同様であるため説明は省略する。【００５３】  また、上述したように、データ部１３１は、暗号化されている。暗号化は、ファイル情報１４０やＭＡＣ情報１４１の１エントリの単位で行われる。このため、ハッシュリスト１２２の更新は、ファイル情報１４０やＭＡＣ情報１４１の１エントリの単位で可能となる。
なお、ここでは、ハッシュリスト１２２は、ハッシュリスト１２２が属する検出対象情報群１２０に含まれるＡＰを識別するＡＰ識別情報と対応付けがされているものとする。【００５４】  （部分鍵１２３）
部分鍵１２３は、改竄検出を行われる実行するときにマスタ鍵とともに改竄検出鍵の算出に用いられる。部分鍵１２３は更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。
なお、ここでは、ハッシュリスト１２２と同様に、部分鍵１２３は、部分鍵１２３が属する検出対象情報群１２０に含まれるＡＰを識別するＡＰ識別情報と対応付けがされているものとする。【００５５】  （２）制御部１０２
制御部１０２は、携帯電話機１０の全体の制御を行う。
制御部１０２は、無線部１１０から通話に係る信号（音声信号）を受け取ると、受け取った信号をスピーカ１０７へ出力するための信号処理を行う。
制御部１０２は、マイク１０６から通話に係る信号（音声信号）を無線部１１０へ出力するための信号処理を行う。【００５６】  制御部１０２は、入力部１０８からＡＰに係るファイルの更新の更新指示を受け取ると、ファイルの更新処理の開始を示す更新開始命令を更新処理部１０３へ出力する。ここで、更新指示、及び更新開始命令には、更新対象となるＡＰを示すＡＰ識別情報が含まれる。
制御部１０２は、更新処理部１０３からファイルの更新完了の通知を受け取ると、表示部１０９を介して、更新完了のメッセージを表示する。【００５７】  制御部１０２は、更新処理部１０３からファイルの更新失敗の通知を受け取ると、表示部１０９を介して、更新失敗のメッセージを表示する。また、制御部１０２は、入力部１０８から再更新の指示を受け取ると、ファイルの再更新の開始を示す再更新開始命令を更新処理部１０３へ出力する。制御部１０２は、入力部１０８から再更新を行わない指示を受け取ると、ファイルの更新処理の終了を示す更新終了命令を更新処理部１０３へ出力する。【００５８】  制御部１０２は、入力部１０８からＡＰの起動指示を受け取ると、起動の対象となるＡＰの起動を行う。このとき、起動されたＡＰは、自ＡＰが改竄検出対象である場合には、検出開始命令と、自ＡＰを識別するＡＰ識別情報とを、制御部１０２により改竄検出実行部１０５へ出力する。なお、改竄検出実行部１０５では、検出開始命令を制御部１０２から受け取ることになる。【００５９】  制御部１０２は、改竄検出実行部１０５から改竄されていない通知を受け取ると、起動指示のあったＡＰに係る動作を実行する。
制御部１０２は、改竄検出実行部１０５から改竄が検出された通知を受け取ると、起動指示のあったＡＰの動作を終了する。
（３）更新処理部１０３
更新処理部１０３は、更新ファイル受取部１０４が更新サーバ装置２０より受け取った更新データリスト１５０より更新対象となるファイルやリスト、もしくは鍵などのデータを更新する。【００６０】  ここで、更新データリスト１５０は、図４に示すように、１つ以上の更新情報１５１、・・・、１５２から構成されている。更新情報１５１は、位置情報１５３、データサイズ１５４、及び更新データ１５５から構成されている。位置情報１５３は、更新するデータの位置を示す情報である。例えば、位置情報１５３は、ファイル名やファイルの先頭からのオフセット、アドレス情報などで表される。データサイズ１５４は、更新するデータのサイズを示す。更新データ１５５は、更新すべき情報であるファイルのうち更新対象となる１以上のブロック、ハッシュリスト１２２におけるハッシュリストファイルサイズ１３２、データ部ハッシュ値１３３、ファイル情報、ＭＡＣ情報に含まれるエントリなどが記録されている。ここで、更新データには、１つ以上のデータが含まれており、更新データに含まれるデータとは、ハッシュリストファイルサイズやデータ部ハッシュ値などのような値や、アプリケーションソフトウェアを実行するための命令文などである。【００６１】  例えば、ファイルを複数個のブロックに分割し、２〜４番目のブロックを更新する場合には、位置情報には２番目のブロックの位置を示すオフセットが格納され、データサイズには２〜４番目のブロックそれぞれのサイズを合計した合計サイズが格納され、更新データには、更新後の２〜４番目のブロックが格納される。また、ハッシュリストも更新する必要があるため、この場合には、２番目のブロックのハッシュ値を含むエントリの位置を示すオフセットが位置情報に格納され、２〜４番目のブロックのハッシュ値を含むエントリそれぞれのサイズの合計値がデータサイズに格納され、更新後の２〜４番目のブロックに対応するエントリそれぞれが、更新データに格納される。【００６２】  更新処理部１０３は、更新データリスト１５０の内容に基づいて、ファイルやハッシュリスト１２２内のハッシュリストファイルサイズ１３２、データ部ハッシュ値１３３、ファイル情報、ＭＡＣ情報に含まれるエントリ、部分鍵１２３の更新を行う。
更新処理部１０３は、図５に示すように、フラグ記憶部１６１、更新制御部１６２、更新データ読取部１６３、更新データ解析部１６４、書込位置決定部１６５、更新データ書込部１６６、及び更新確認部１６７から構成されている。【００６３】  更新処理部１０３は、悪意のあるユーザによる解析に対する耐性をもつよう耐タンパー技術で保護されている。耐タンパー技術は、公知であるため説明は省略する。
（フラグ記憶部１６１）
フラグ記憶部１６１は、ＡＰに係るファイルの更新を行っているか否かを示すフラグを記憶している。ここでは、フラグの値「０」である場合には、更新処理部１０３が、更新を行っていない旨を示し、値「１」である場合には、更新処理部１０３が、更新を行っている旨を示す。なお、フラグ記憶部１６１は、具体的には、不揮発性のメモリである。つまり、携帯電話機１０の電源を切っても、フラグ記憶部１６１の記憶内容は保持される。【００６４】  （更新制御部１６２）
更新制御部１６２は、制御部１０２から更新開始命令を受け取ると、他の命令による処理が割り込まないように、制御部１０２に対して割り込み禁止を設定する。
更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値を「１」に設定する。【００６５】  更新制御部１６２は、受け取った更新開始命令に含まれるＡＰ識別情報を更新データ読取部１６３へ出力する。
更新制御部１６２は、更新データ読取部１６３から全ての更新データの書き込みが完了した旨の書込完了命令を受け取ると、改竄検出の処理を開始する旨の検出開始命令と、ＡＰ識別情報とを改竄検出実行部１０５へ出力する。【００６６】  更新制御部１６２は、改竄検出実行部１０５から改竄されていない通知を受け取ると、更新完了の通知を制御部１０２へ出力する。更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
更新制御部１６２は、改竄検出実行部１０５から改竄が検出された通知を受け取ると、更新失敗の通知を制御部１０２へ出力する。更新制御部１６２は、制御部１０２から再更新開始命令を受け取ると、再度、ＡＰ識別情報を更新データ読取部１６３へ出力する。【００６７】  更新制御部１６２は、制御部１０２から更新終了命令を受け取ると、更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
携帯電話機１０に電源が投入され、電源の供給が開始されると、更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値をチェックする。値が「１」である場合には、更新処理中の状態であると判断し、制御部１０２に対して割り込み禁止を設定する。更新制御部１６２は、更新処理の再開始を示す再開始命令を更新データ読取部１６３へ出力する。更新制御部１６２は、更新データ読取部１６３から更新処理の再開始が不要である旨を示す再開始不要命令を受け取ると、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。【００６８】  （更新データ読取部１６３）
更新データ読取部１６３は、更新制御部１６２からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報を更新ファイル受取部１０４へ出力する。
更新データ読取部１６３は、更新ファイル受取部１０４から更新サーバ装置２０から更新データリスト１５０の受信が完了した旨の受信完了命令を受け取ると、受信した更新データリスト１５０から未読の更新情報を１つ読み出す。【００６９】  更新データ読取部１６３は、更新確認部１６７から更新データの書き込みが正常に終了した旨の正常終了命令を受け取ると、受信した更新データリスト１５０に未読の更新情報が存在するか否かを判断する。存在すると判断する場合には、更新データ読取部１６３は、未読の更新情報を取得する。存在しないと判断する場合には、更新データ読取部１６３は、書込完了命令を、更新制御部１６２及び更新ファイル受取部１０４へ出力する。更新データ読取部１６３は、更新確認部１６７から更新データの書き込みが失敗した旨の異常終了命令を受け取ると、前回読み出した更新情報を再度読み出す。【００７０】  更新データ読取部１６３は、更新制御部１６２から再開始命令を受け取ると、受け取った再開始命令を更新ファイル受取部１０４へ出力する。その後、更新データ読取部１６３は、更新ファイル受取部１０４から受信完了命令を受け取ると、上記と同様の動作を行う。
更新データ読取部１６３は、再開始不要命令を受け取ると、受け取った再開始不要命令を更新制御部１６２へ出力する。【００７１】  （更新データ解析部１６４）
更新データ解析部１６４は、更新データ読取部１６３にて読み出された更新情報を、位置情報、データサイズ、及び更新データに分割する。これにより、更新データ解析部１６４は、更新情報から位置情報、データサイズ、及び更新データを取得することができる。
（書込位置決定部１６５）
書込位置決定部１６５は、更新データ解析部１６４にて取得された位置情報に基づいて、記憶部１０１における更新データの書込位置を決定する。【００７２】  （更新データ書込部１６６）
更新データ書込部１６６は、書込位置決定部１６５にて決定された書込位置を書込開始の先頭位置として、更新データ解析部１６４にて取得された更新データを書き込む。
（更新確認部１６７）
更新確認部１６７は、更新データ書込部１６６による書き込みが正常に終了したか否かを確認する。【００７３】  正常に終了したと判定する場合には、正常終了命令を更新データ読取部１６３へ出力し、正常に終了していないと判断する場合には、異常終了命令を更新データ読取部１６３へ出力する。
（４）更新ファイル受取部１０４
更新ファイル受取部１０４は、携帯電話機１０を識別する端末識別子を予め記憶している。【００７４】  更新ファイル受取部１０４は、更新処理部１０３から受け取ったＡＰ識別情報を記憶するＡＰ識別情報記憶領域、及び更新サーバ装置２０から受信した更新データリスト１５０を記憶するリスト記憶領域を有している。ここで、ＡＰ識別情報記憶領域、及びリスト記憶領域は不揮発性メモリである。
更新ファイル受取部１０４は、更新処理部１０３の更新データ読取部１６３からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報と、端末識別子と、更新要求情報とを、無線部１１０を介して、更新サーバ装置２０へ送信し、受け取ったＡＰ識別情報をＡＰ識別情報記憶領域へ格納する。【００７５】  更新ファイル受取部１０４は、更新サーバ装置２０から無線部１１０を介して、更新データリスト１５０を受け取ると、受け取った更新データリスト１５０をリスト記憶領域へ格納する。さらに、更新ファイル受取部１０４は、受け取った更新データリスト１５０の格納が完了すると、ＡＰ識別情報記憶領域にて格納されているＡＰ識別情報を消去し、受信完了命令を更新データ読取部１６３へ出力する。【００７６】  更新ファイル受取部１０４は、更新データ読取部１６３から書込完了命令を受け取ると、リスト格納領域に格納されている更新データリスト１５０を消去する。
更新ファイル受取部１０４は、更新データ読取部１６３から再開始命令を受け取ると、ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在するか否かを判断する。存在すると判断する場合には、更新ファイル受取部１０４は、格納しているＡＰ識別情報と、端末識別子とを、無線部１１０を介して、更新サーバ装置２０へ送信し、上記と同様の動作を行う。【００７７】  ＡＰ識別情報記憶領域にＡＰ識別情報が存在しないと判断する場合には、更新ファイル受取部１０４は、リスト記憶領域に更新データリスト１５０が格納されているか否かを判断する。格納されていると判断する場合には、受信完了命令を更新データ読取部１６３へ出力する。格納されていないと判断する場合には、再開始不要命令を更新データ読取部１６３へ出力する。【００７８】  （５）改竄検出実行部１０５
改竄検出実行部１０５は、図６に示すように、検出制御部１７１、改竄検出呼出部１７２、改竄検出処理部１７３、及びファイル読込部１７４から構成されている。
改竄検出実行部１０５は、悪意のあるユーザによる解析に対する耐性をもつよう耐タンパー技術で保護されている。耐タンパー技術は、公知であるため説明は省略する。【００７９】  （検出制御部１７１）
検出制御部１７１は、制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかから検出開始命令とＡＰ識別情報とを受け取ると、受け取った検出開始命令とＡＰ識別情報とを改竄検出呼出部１７２へ出力する。
検出制御部１７１は、改竄検出処理部１７３から改竄されていない通知若しくは改竄が検出された通知のうちいずれかを受け取る。【００８０】  検出制御部１７１は、受け取った通知を、検出開始命令及びＡＰ識別情報の出力元である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する。具体的には、検出開始命令を制御部１０２から受け取った場合には、検出制御部１７１は、改竄検出処理部１７３から受け取った通知を制御部１０２へ出力する。また、検出開始命令を更新制御部１６２から受け取った場合には、検出制御部１７１は、改竄検出処理部１７３から受け取った通知を更新制御部１６２へ出力する。【００８１】  （改竄検出呼出部１７２）
改竄検出呼出部１７２は、検出制御部１７１から検出開始命令とＡＰ識別情報とを受け取ると、記憶部１０１から受け取ったＡＰ識別情報に対応するハッシュリスト１２２を読み出す。
改竄検出呼出部１７２は、読み出したハッシュリスト１２２と、受け取った検出開始命令及びＡＰ識別情報とを、改竄検出処理部１７３へ出力する。【００８２】  （改竄検出処理部１７３）
改竄検出処理部１７３は、図６に示すように、マスタ鍵記憶部１７５を有している。マスタ鍵記憶部１７５は、マスタ鍵１７６を記憶している。
改竄検出処理部１７３は、改竄検出呼出部１７２からハッシュリスト１２２と、検出開始命令及びＡＰ識別情報とを受け取ると、改竄検出の処理を開始する。【００８３】  改竄検出処理部１７３は、受け取ったＡＰ識別情報に対応する部分鍵１２３を、記憶部１０１から読み出す。
改竄検出処理部１７３は、読み出した部分鍵１２３と、マスタ鍵１７６と、特定のアルゴリズムとを用いて改竄検出鍵を算出する。ここで、特定のアルゴリズムは、例えば、ＸＯＲ（排他的論理和）のような論理演算、若しくはＤＥＳ、ＡＥＳといった暗号アルゴリズムであるとする。【００８４】  改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、受け取ったハッシュリスト１２２のデータ部１３１に対するハッシュ値を算出する。改竄検出処理部１７３は、算出したハッシュ値と、ハッシュリスト１２２のヘッダ部１３０に含まれるデータ部ハッシュ値１３３とが一致するか否かを判断する。
一致しないと判断する場合には、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。【００８５】  一致すると判断する場合には、改竄検出処理部１７３は、改竄検出鍵を用いて、データ部１３１を復号する。なお、復号には、データ部１３１を暗号化したアルゴリズムに対応する復号アルゴリズムが用いられる。
改竄検出処理部１７３は、復号したデータ部から、未読のハッシュ情報を読み出す。改竄検出処理部１７３は、読み出したハッシュ情報に含まれるファイル情報をファイル読込部１７４へ出力し、その後、ファイル読込部１７４からファイルの読み込みが完了した旨を示すファイル読込完了命令を受け取る。【００８６】  改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し、取得したエントリが最終エントリであるか否かを判断する。
最終エントリでないと判断する場合には、改竄検出処理部１７３は、取得したエントリに含まれるオフセット及びサイズとを読み出し、読み出したオフセット及びサイズに基づいて、ファイル読込部１７４にて読み込まれたファイルから検出対象のブロックを取得する。改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、取得したブロックに対する検出用ハッシュ値を算出する。改竄検出処理部１７３は、算出した検出用ハッシュ値と取得したエントリに含まれるハッシュ値とが一致するか否かを判断する。一致すると判断する場合には、改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し、上記動作を行う。一致しないと判断する場合には、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。【００８７】  取得したエントリが最終エントリであると判断する場合には、改竄検出処理部１７３は、未読のハッシュ情報が存在するか否かを判断する。存在すると判断する場合には、改竄検出処理部１７３は、未読のハッシュ情報を読み出し、上記の動作を行う。存在しないと判断する場合には、改竄検出処理部１７３は、改竄されていない通知を検出制御部１７１へ出力する。【００８８】  （ファイル読込部１７４）
ファイル読込部１７４は、読み込んだファイルを一時的に記憶するファイル記憶領域を有している。
ファイル読込部１７４は、改竄検出処理部１７３からファイル情報を受け取ると、受け取ったファイル情報に含まれるファイル名に基づいて、改竄検出対象のファイルを記憶部１０１から読み出す。【００８９】  ファイル読込部１７４は、読み出したファイルをファイル記憶領域に格納し、ファイル読込完了命令を、改竄検出処理部１７３へ出力する。
（６）マイク１０６
マイク１０６は、使用者の音声を受け付け、受け付けた音声を音声信号に変換し、変換した音声信号を制御部１０２へ出力する。【００９０】  （７）スピーカ１０７
スピーカ１０７は、制御部１０２にて処理された音声信号を音声として出力する。
（８）入力部１０８
入力部１０８は、使用者の操作により、更新指示を受け付けると、受け付けた更新指示を制御部１０２へ出力する。【００９１】  入力部１０８は、改竄検出対象のファイルの更新が失敗した場合に、使用者の操作により、再更新を行う指示を受け付けると、受け付けた再更新を行う指示を制御部１０２へ出力する。また、入力部１０８は、改竄検出対象のファイルの更新が失敗した場合に、使用者の操作により、再更新を行わない指示を受け付けると、受け付けた再更新を行わない指示を制御部１０２へ出力する。【００９２】  入力部１０８は、使用者の操作により、ＡＰの起動指示を受け付けると、受け付けた起動指示を制御部１０２へ出力する。
（９）表示部１０９
表示部１０９は、制御部１０２から更新完了のメッセージを受け取ると、受け取ったメッセージを表示する。【００９３】  表示部１０９は、制御部１０２から更新失敗のメッセージを受け取ると、受け取ったメッセージを表示する。
（１０）無線部１１０
無線部１１０は、アンテナ１１１を備えており、無線信号の送受信を行う。
１．３  更新サーバ装置２０の構成
更新サーバ装置２０は、図７に示すように、記憶部２０１、データ取得部２０２、ハッシュリスト生成部２０３、ハッシュリスト書込部２０４、更新要求処理部２０５、入力部２０６、及び送受信部２０７から構成されている。【００９４】  （１）記憶部２０１
記憶部２０１は、携帯電話機１０にて記憶されている検出対象情報群に対する更新データリストを１以上記憶するための領域と、ハッシュリストを記憶するための領域とを有している。
ここでは、検出対象情報群１２０に対する更新データリストを１つ以上記憶しているものとする。また、記憶されている更新データリストのそれぞれは、更新対象のファイルを含むＡＰのＡＰ識別情報と対応付けられ、さらに、版数の管理がされている。また、携帯電話機１０の端末識別子と、携帯電話機１０に送信した更新データリストの版数とが対応付けられて管理されているものとする。また、ハッシュリストは、対応するＡＰのＡＰ識別情報と対応付けがされている。【００９５】  （２）データ取得部２０２
データ取得部２０２は、入力部２０６から初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを取得する。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、受け取った初期設定指示と、取得した１つ以上のファイル、及びターゲットパスリストとをハッシュリスト生成部２０３へ出力する。ここで、ターゲットパスリストとは、改竄検出対象となる１つ以上のファイルそれぞれに対してのファイルシステム上にて格納されている格納場所を示す絶対パスや相対パスなどからなるパス名が格納されているリストである。なお、初期設定指示には、生成されるハッシュリストと対応するＡＰのＡＰ識別情報が含まれる。【００９６】  データ取得部２０２は、入力部２０６から検出対象のファイルの更新があった旨を示す第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、及び更新対象となる１つ以上のファイルのターゲットパスリストを取得する。なお、第１更新指示には、更新の対象となるＡＰのＡＰ識別情報が含まれているものとする。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、記憶部２０１から第１更新指示に含まれるＡＰ識別情報に対応するハッシュリストを取得する。データ取得部２０２は、受け取った第１更新指示と、取得した１つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリストとをハッシュリスト生成部２０３へ出力する。ここで、更新ファイルとは、元のファイルに存在する不具合が解消された最新ファイルである。【００９７】  データ取得部２０２は、鍵更新装置３０から部分鍵の更新があった旨を示す第２更新指示と、更新後の部分鍵とを受け取ると、さらに、更新された部分鍵を用いた改竄検出の対象となる１つ以上のファイル、及びターゲットパスリストを取得する。なお、第２更新指示には、更新された部分鍵に対応するＡＰのＡＰ識別情報が含まれているものとする。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、記憶部２０１から第２更新指示に含まれるＡＰ識別情報に対応するハッシュリストを取得する。データ取得部２０２は、受け取った第２更新指示及び部分鍵と、１つ以上のファイル、ターゲットパスリスト、及びハッシュリストとをハッシュリスト生成部２０３へ出力する。【００９８】  （３）ハッシュリスト生成部２０３
ハッシュリスト生成部２０３は、図８に示すように、改竄検出鍵記憶部２１０、データ受取部２１１、ハッシュリスト生成処理部２１２、暗号化処理部２１３、及び更新データリスト生成部２１４から構成されている。
ここで、ハッシュリスト生成部２０３は、１つの装置（ハッシュリスト生成装置）としてもよい。【００９９】  （改竄検出鍵記憶部２１０）
改竄検出鍵記憶部２１０は、改竄検出鍵２１５を記憶している。
（データ受取部２１１）
データ受取部２１１は、データ取得部２０２より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る。【０１００】  データ受取部２１１は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取り、受け取った初期設定指示、１つ以上のファイル、及びターゲットパスリストをハッシュリスト生成処理部２１２に出力する。
データ受取部２１１は、第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及びハッシュリストを受け取り、受け取った第１更新指示、１つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリストをハッシュリスト生成処理部２１２に出力する。【０１０１】  データ受取部２１１は、第２更新指示を受け取ると、さらに、部分鍵、更新された部分鍵を用いた改竄検出の対象となる１つ以上のファイル、ターゲットパスリスト、及びハッシュリストを受け取り、受け取った第２更新指示、部分鍵、１つ以上のファイル、ターゲットパスリスト、及びハッシュリストをハッシュリスト生成処理部２１２に出力する。
（ハッシュリスト生成処理部２１２）
ハッシュリスト生成処理部２１２は、データ受取部２１１より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る。【０１０２】  ＜初期設定指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取る。
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルのうち１つのファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割されたファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全てのファイルに対して行う。【０１０３】  ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなるデータ部を生成する。このとき、データ部は暗号化されていない。以下、暗号化されたデータ部を区別するため、暗号化されていないデータ部を非暗号化データ部という。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。【０１０４】  ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。【０１０５】  ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなるハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、生成したハッシュリストを記憶部に格納するとともに、ハッシュリスト書込部２０４へ出力する。このとき、生成したハッシュリストと、初期設定指示に含まれるＡＰ識別情報とが対応付けされる。【０１０６】  ＜第１更新指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、データ受取部２１１から第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及びハッシュリストを受け取る。以下において、データ受取部２１１から受け取ったハッシュリストを旧ハッシュリストという。【０１０７】  ハッシュリスト生成処理部２１２は、受け取った１つ以上の更新ファイルのうち１つの更新ファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全ての更新ファイルに対して行う。【０１０８】  ハッシュリスト生成処理部２１２は、受け取った１つ以上の更新ファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。【０１０９】  ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。【０１１０】  ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、第１更新指示、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び１以上の更新ファイルとを更新データリスト生成部２１４へ出力する。【０１１１】  ＜第２更新指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、データ受取部２１１から第２更新指示を受け取ると、さらに、部分鍵、検出対象となる１つ以上のファイル、ターゲットパスリスト、及び旧ハッシュリストを受け取る。
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルのうち１つのファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全てのファイルに対して行う。【０１１２】  ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。【０１１３】  ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。【０１１４】  ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、第２更新指示と、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び部分鍵とを更新データリスト生成部２１４へ出力する。【０１１５】  （暗号化処理部２１３）
暗号化処理部２１３は、ハッシュリスト生成処理部２１２から非暗号化データ部を受け取ると、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。
暗号化処理部２１３は、読み出した改竄検出鍵を用いて、受け取った非暗号化データ部を暗号化する。暗号に用いられるアルゴリズムは例えばＸＯＲのような論理演算もしくはＤＥＳ、ＡＥＳといった暗号アルゴリズムであり、携帯電話機１０にて用いられる復号アルゴリズムに対応するものである。このとき、暗号化はファイル情報やＭＡＣ情報の１エントリを単位として行われる。【０１１６】  暗号化処理部２１３は、暗号化されたデータ部をハッシュリスト生成処理部２１２へ出力する。
（更新データリスト生成部２１４）
更新データリスト生成部２１４は、第１更新指示及び第２更新指示のいずれかを受け取る。【０１１７】  ＜第１更新指示を受け取った場合＞
更新データリスト生成部２１４は、さらに、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、１つ以上の更新ファイルとを受け取る。
更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。【０１１８】  更新データリスト生成部２１４は、抽出された情報と、１つ以上の更新ファイルとを用いて更新データリストを生成する。このとき、更新データリスト生成部２１４は、抽出された情報から更新ファイルの更新箇所が特定できる。なぜなら、ファイルを分割する際には、各ブロックは、所定のサイズとなるように分割されているので、変更が生じないブロックのハッシュ値は、以前のハッシュと同じとなる。変更が生じているブロックのハッシュ値は以前のハッシュ値と異なっているので、変更された箇所を含むブロックに対するエントリは、旧ハッシュリストと新ハッシュリストとの比較により抽出される。上述したように、ブロックは、所定のサイズとなるように分割されているので、抽出されたエントリから更新ファイルにおける更新箇所を特定することができる。更新データリスト生成部２１４は、特定した更新箇所を更新データとし、更新データ（つまり更新箇所を含むブロック）の位置情報及びブロックのサイズを取得する。なお、更新箇所を含むブロックが連続している場合には、１つの更新データとして結合してもよい。このときの位置情報は、連続するブロックのうち先頭に位置するブロックの位置情報となり、サイズは、連続するブロックの個数から算出することができる。【０１１９】  更新データリスト生成部２１４は、更新データ、位置情報及びブロックのサイズからなる更新情報を１個以上生成し、さらに、生成した１個以上の更新情報からなる更新データリストを生成する。
更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する。このとき、生成した更新データリストと、第１更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。【０１２０】  ＜第２更新指示を受け取った場合＞
更新データリスト生成部２１４は、さらに、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、部分鍵とを受け取る。
更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。【０１２１】  更新データリスト生成部２１４は、抽出された情報、及び受け取った部分鍵のそれぞれを更新データとする更新データリストを生成する。部分鍵を更新データとする更新情報の生成は、以下のようにして行う。更新データリスト生成部２１４は、携帯電話機１０における部分鍵の記憶位置を示す位置情報と、受け取った部分鍵のデータサイズとを取得する。更新データリスト生成部２１４は、取得した位置情報と、データサイズと、更新データである部分鍵とからなる更新情報を生成する。【０１２２】  なお、抽出された情報を更新データとする更新情報の生成は、第１更新指示を受け取った場合にて示す更新情報の生成と同様であるので、ここでの説明は省略する。
更新データリスト生成部２１４は、生成した１個以上の更新情報からなる更新データリストを生成する。
更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する。このとき、生成した更新データリストと、第２更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。【０１２３】  （４）ハッシュリスト書込部２０４
ハッシュリスト書込部２０４は、携帯電話機の製造時において、製造中（出荷前）の携帯電話機と接続され、携帯電話機の記憶部へのアクセスが可能である。
ハッシュリスト書込部２０４は、ハッシュリスト生成部２０３からハッシュリストを受け取ると、受け取ったハッシュリストを、接続された携帯電話機の記憶部へ書き込む。ハッシュリストが書き込まれるアドレスは、上述したように固定されたアドレスである。【０１２４】  （５）更新要求処理部２０５
更新要求処理部２０５は、送受信部２０７を介して携帯電話機１０から、ＡＰ識別情報と、端末識別子と、更新要求情報とを受け取ると、受け取ったＡＰ識別情報と、端末識別子とを用いて、携帯電話機１０に送信すべき更新データリストの版数を決定する。上述したように、更新サーバ装置２０は、更新データリストのそれぞれを、更新対象のファイルを含むＡＰのＡＰ識別情報と対応付け、及び版数の管理を行っており、また、携帯電話機１０の端末識別子と、携帯電話機１０に送信した更新データリストの版数とを対応付けて管理しているので、送信すべき更新データリストを決定することができる。【０１２５】  更新要求処理部２０５は、送信すべき更新データリストを記憶部２０１から取得し、取得した更新データリストを、送受信部２０７を介して携帯電話機１０へ送信する。
（６）入力部２０６
入力部２０６は、使用者の操作により、初期設定指示を受け付けると、受け付けた初期設定指示をデータ取得部２０２へ出力する。【０１２６】  入力部２０６は、使用者の操作により、第１更新指示を受け付けると、受け付けた第１更新指示をデータ取得部２０２へ出力する。
（７）送受信部２０７
送受信部２０７は、携帯網４０及びインターネット５０を介して携帯電話機１０から受信した情報を更新要求処理部２０５へ出力する。【０１２７】  送受信部２０７は、更新要求処理部２０５から受け取った情報を、インターネット５０及び携帯網４０を介して携帯電話機１０へ送信する。
１．４  鍵更新装置３０の構成
鍵更新装置３０は、図９に示すように、鍵取得部３０１、改竄検出鍵生成部３０２、改竄検出鍵配布部３０３、及び出力部３０４から構成されている。【０１２８】  鍵更新装置３０は、改竄検出鍵が悪意のあるユーザによって解析され不正に流出した場合に、更新サーバ装置２０に記憶されている改竄検出鍵を更新する。鍵更新装置３０は鍵を正式に発行する機関によって厳重に管理されるものとする。
（１）鍵取得部３０１
鍵取得部３０１は、外部装置から、マスタ鍵、及び更新された部分鍵と、更新された部分鍵に対応するＡＰのＡＰ識別情報とを取得する。なお、取得するマスタ鍵は、携帯電話機１０にて記憶しているマスタ鍵と同一のものである。【０１２９】  鍵取得部３０１は、受け取ったマスタ鍵及び更新された部分鍵を改竄検出鍵生成部３０２へ出力する。
鍵取得部３０１は、改竄検出鍵配布部３０３から更新サーバ装置２０に対して改竄検出鍵の配布が完了した旨を示す配布完了命令を受け取ると、ＡＰ識別情報を含む第２更新指示と、更新された部分鍵とを出力部３０４へ出力する。【０１３０】  （２）改竄検出鍵生成部３０２
改竄検出鍵生成部３０２は、鍵取得部３０１からマスタ鍵及び更新された部分鍵を受け取ると、受け取ったマスタ鍵と、更新された部分鍵と、特定のアルゴリズムとを用いて改竄検出鍵を算出する。なお、ここで用いる特定のアルゴリズムは、携帯電話機１０の改竄検出処理部１７３にて用いられるアルゴリズムと同一のものである。【０１３１】  改竄検出鍵生成部３０２は、算出した改竄検出鍵を、改竄検出鍵配布部３０３へ出力する。
（３）改竄検出鍵配布部３０３
改竄検出鍵配布部３０３は、更新サーバ装置２０と接続され、改竄検出鍵記憶部２１０にアクセス可能である。【０１３２】  改竄検出鍵配布部３０３は、改竄検出鍵生成部３０２から改竄検出鍵を受け取ると、受け取った改竄検出鍵を、改竄検出鍵記憶部２１０に書き込む。このとき、改竄検出鍵記憶部２１０に記憶されていた以前の改竄検出鍵は消去される。
改竄検出鍵配布部３０３は、改竄検出鍵の書き込みが完了すると、配布完了命令を鍵取得部３０１へ出力する。【０１３３】  （４）出力部３０４
出力部３０４は、更新サーバ装置２０のデータ取得部２０２と接続される。
出力部３０４は、鍵取得部３０１から第２更新指示と、更新された部分鍵とを受け取ると、受け取った、第２更新指示と、更新された部分鍵とをデータ取得部２０２へ出力する。【０１３４】  １．５  更新サーバ装置２０の動作
ここでは、更新サーバ装置２０にて、更新データリスト、及びハッシュリストの生成の動作について、図１０にて示す流れ図を用いて説明する。
データ受取部２１１は、データ取得部２０２より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る（ステップＳ５）。【０１３５】  データ受取部２１１は、第１更新指示を受け取ると（ステップＳ１０における「第１更新指示」）、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１以上のファイルのターゲットパスリスト、及びハッシュリストを取得する（ステップＳ１５）。
データ受取部２１１は、受け取った第１更新指示、１つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリスト（以下、旧ハッシュリスト）をハッシュリスト生成処理部２１２に出力する。ハッシュリスト生成処理部２１２は、データ受取部２１１から第１更新指示、１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及び旧ハッシュリストを受け取る。【０１３６】  ハッシュリスト生成処理部２１２は、受け取った１以上の更新ファイルのうち１の更新ファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位でハッシュ計算アルゴリズムを適用してハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全ての更新ファイルに対して行う。【０１３７】  ハッシュリスト生成処理部２１２は、受け取った１以上の更新ファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する（ステップＳ２０）。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。暗号化処理部２１３は、ハッシュリスト生成処理部２１２から非暗号化データ部を受け取ると、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。暗号化処理部２１３は、読み出した改竄検出鍵を用いて、受け取った非暗号化データ部を暗号化する（ステップＳ２５）。このとき、暗号化はファイル情報やＭＡＣ情報の１エントリを単位として行われる。【０１３８】  暗号化処理部２１３は、暗号化されたデータ部をハッシュリスト生成処理部２１２へ出力する。ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する（ステップＳ３０）。【０１３９】  ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。
ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する（ステップＳ３５）。【０１４０】  ハッシュリスト生成処理部２１２は、第１更新指示、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び１以上の更新ファイルとを更新データリスト生成部２１４へ出力する。更新データリスト生成部２１４は、第１更新指示、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、１つ以上の更新ファイルとを受け取る。【０１４１】  更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。更新データリスト生成部２１４は、抽出された情報と、１以上の更新ファイルとを用いて更新データリストを生成する（ステップＳ４０）。【０１４２】  更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する（ステップＳ４５）。このとき、生成した更新データリストと、第１更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。
データ受取部２１１は、第２更新指示を受け取ると（ステップＳ１０における「第２更新指示」）、部分鍵、検出対象となる１つ以上のファイル、ターゲットパスリスト、及びハッシュリストを取得し（ステップＳ５０）、ステップＳ２０からステップＳ４５までの動作を行う。なお、この場合、各構成要素が出力、及び受け取る指示は、第２更新指示となる。また、ステップＳ４０で生成される更新データリストは、旧ハッシュリスト、新ハッシュリスト、及び部分鍵から生成される。また、ステップＳ４５では、生成した更新データリストと、第２更新指示に含まれるＡＰ識別情報とが対応付けされる。【０１４３】  データ受取部２１１は、初期設定指示を受け取ると（ステップＳ１０における「初期設定指示」）、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを取得する（ステップＳ５５）。
データ受取部２１１は、受け取った初期設定指示、１以上のファイル、及びターゲットパスリストをハッシュリスト生成処理部２１２に出力する。【０１４４】  ハッシュリスト生成処理部２１２は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取ると、ハッシュリストを生成する（ステップＳ６０）。なお、ハッシュリストの生成については、ステップＳ２０からステップＳ３５までの動作と概念的には同じであるので、ここでの詳細な説明は省略する。【０１４５】  ハッシュリスト生成処理部２１２は、生成したハッシュリストを記憶部に格納するとともに、ハッシュリスト書込部２０４へ出力する。ハッシュリスト書込部２０４は、ハッシュリスト生成部２０３からハッシュリストを受け取ると、受け取ったハッシュリストを、接続された携帯電話機の記憶部へ書き込む（ステップＳ６５）。
１．６  ハッシュリスト更新時の動作概要
ここでは、ハッシュリスト更新時の動作概要について、図１１にて示す流れ図を用いて説明する。【０１４６】  携帯電話機１０における更新処理部１０３の更新制御部１６２は、更新指示を受け付けと（ステップＳ１００）、制御部１０２に対して割り込み禁止の設定を行う（ステップＳ１０５）。
更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値を「１」に設定する（ステップＳ１１０）。【０１４７】  更新制御部１６２は、受け取った更新開始命令に含まれるＡＰ識別情報を更新データ読取部１６３へ出力する。
更新ファイル受取部１０４は、更新処理部１０３の更新データ読取部１６３からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報と、予め記憶している端末識別子と、更新要求情報とを、無線部１１０を介して、更新サーバ装置２０へ送信する（ステップＳ１１５）。更新ファイル受取部１０４は、受け取ったＡＰ識別情報をＡＰ識別情報記憶領域へ格納する。【０１４８】  更新サーバ装置２０の更新要求処理部２０５は、送受信部２０７を介して携帯電話機１０から、ＡＰ識別情報と、端末識別子と、更新要求情報とを受信する（ステップＳ１２０）。
更新要求処理部２０５は、受信したＡＰ識別情報と、端末識別子とを用いて、携帯電話機１０に送信すべき更新データリストの版数を決定する。更新要求処理部２０５は、送信すべき更新データリストを記憶部２０１から取得し（ステップＳ１２５）、取得した更新データリストを、送受信部２０７を介して携帯電話機１０へ送信する（ステップＳ１３０）。【０１４９】  携帯電話機１０は、更新サーバ装置２０から更新データリストを受信し、更新処理を行う（ステップＳ１３５）。
１．７  更新処理の動作
ここでは、図１１のステップＳ１３５にて示す更新処理の動作について、図１２、及び図１３にて示す流れ図を用いて説明する。【０１５０】  更新ファイル受取部１０４は、更新サーバ装置２０から無線部１１０を介して、更新データリストを受信すると、受信した更新データリストをリスト記憶領域へ格納する（ステップＳ２００）。
更新ファイル受取部１０４は、受け取った更新データリストの格納が完了すると、ＡＰ識別情報記憶領域にて格納されているＡＰ識別情報を消去し、受信完了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新ファイル受取部１０４から更新サーバ装置２０から更新データリストの受信が完了した旨の受信完了命令を受け取る。【０１５１】  更新データ読取部１６３は、更新ファイル受取部１０４のリスト記憶領域にて記憶されている更新データリストから未読の更新情報を１つ読み出す（ステップＳ２０５）。
更新データ解析部１６４は、更新データ読取部１６３にて読み出された更新情報を、位置情報、データサイズ、及び更新データに分割する（ステップＳ２１０）。
書込位置決定部１６５は、更新データ解析部１６４にて取得された位置情報に基づいて、記憶部１０１における更新データの書込位置を決定する（ステップＳ２１５）。【０１５２】  更新データ書込部１６６は、書込位置決定部１６５にて決定された書込位置を書込開始の先頭位置として、更新データ解析部１６４にて取得された更新データを書き込む（ステップＳ２２０）。
更新確認部１６７は、更新データ書込部１６６による書き込みが正常に終了したか否かを確認する（ステップＳ２２５）。【０１５３】  正常に終了していないと判断する場合には（ステップＳ２２５における「ＹＥＳ」）、更新確認部１６７は、異常終了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新確認部１６７から異常終了命令を受け取ると、ステップＳ２０５にて読み出した更新情報と同一の更新情報を再度読み出し（ステップＳ２３０）、ステップＳ２１０へ戻る。【０１５４】  正常に終了したと判定する場合には（ステップＳ２２５における「ＹＥＳ」）、更新確認部１６７は、正常終了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新確認部１６７から正常終了命令を受け取ると、更新ファイル受取部１０４のリスト記憶領域にて記憶されている更新データリストに未読の更新情報が存在するか否かを判断する（ステップＳ２３５）。【０１５５】  存在すると判断する場合には（ステップＳ２３５における「ＹＥＳ」）、更新データ読取部１６３は、ステップＳ２０５へ戻る。存在しないと判断する場合には（ステップＳ２３５における「ＮＯ」）、更新データ読取部１６３は、書込完了命令を、更新制御部１６２及び更新ファイル受取部１０４へ出力する。更新ファイル受取部１０４は、更新データ読取部１６３から書込完了命令を受け取ると、リスト格納領域に格納されている更新データリスト１５０を消去する。更新制御部１６２は、更新データ読取部１６３から書込完了命令を受け取ると、改竄検出の処理を開始する旨の検出開始命令と、ＡＰ識別情報とを改竄検出実行部１０５へ出力する。【０１５６】  改竄検出実行部１０５は、更新制御部１６２から検出開始命令と、ＡＰ識別情報とを受け取ると、改竄検出処理を行う（ステップＳ２４０）。
更新制御部１６２は、改竄検出実行部１０５から改竄検出処理の処理結果を受け取ると、受け取った処理結果が、改竄されていない通知であるか、改竄が検出された通知であるかを判断する（ステップＳ２４５）。【０１５７】  改竄が検出されていない、つまり改竄されていない通知を受け取ったと判断する場合には（ステップＳ２４５における「ＮＯ」）、更新制御部１６２は、更新完了の通知を制御部１０２へ出力する。制御部１０２は、更新処理部１０３からファイルの更新完了の通知を受け取ると、表示部１０９を介して更新完了のメッセージを表示する（ステップＳ２５０）。【０１５８】  更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し（ステップＳ２５５）、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する（ステップＳ２６０）。
改竄が検出された、つまり改竄が検出された通知を受け取ったと判断する場合には（ステップＳ２４５における「ＹＥＳ」）、更新制御部１６２は、更新失敗の通知を制御部１０２へ出力する。制御部１０２は、更新処理部１０３からファイルの更新失敗の通知を受け取ると、表示部１０９を介して、更新失敗のメッセージを表示する（ステップＳ２６５）。また、制御部１０２は、入力部１０８から再更新の指示を受け取ると、再更新開始命令を更新処理部１０３へ出力する。制御部１０２は、入力部１０８から再更新を行わない指示を受け取ると、更新終了命令を更新処理部１０３へ出力する。【０１５９】  更新制御部１６２は、制御部１０２から再更新開始命令及び更新終了命令のうち何れかを受け取ると、受け取った命令が再更新開始命令か否かを判断する（ステップＳ２７０）。再更新開始命令である、つまり再更新を行うと判断する場合には（ステップＳ２７０における「ＹＥＳ」）、更新制御部１６２は、再度、ＡＰ識別情報を更新データ読取部１６３へ出力し、ステップＳ２００へ戻る。この場合、更新データ読取部１６３は、再度、更新データリストの受信を行う。【０１６０】  更新制御部１６２は、受け取った命令が更新終了命令である、つまり再更新を行わないと判断する場合には（ステップＳ２７０における「ＮＯ」）、更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し（ステップＳ２５５）、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する（ステップＳ２６０）。
１．８  ＡＰ起動時の動作
ここでは、ＡＰ起動時の動作について、図１４にて示す流れ図を用いて説明する。【０１６１】  制御部１０２は、入力部１０８から改竄検出対象のＡＰの起動指示を受け取る（ステップＳ３００）。制御部１０２は、ＡＰの起動を行う。このとき、起動されたＡＰは、自ＡＰが改竄検出対象である場合には、検出開始命令と、自ＡＰを識別するＡＰ識別情報とを、制御部１０２により改竄検出実行部１０５へ出力する。
改竄検出実行部１０５は、制御部１０２から検出開始命令と、ＡＰ識別情報とを受け取ると、改竄検出処理を行う（ステップＳ３０５）。【０１６２】  制御部１０２は、改竄検出実行部１０５から改竄検出処理の処理結果を受け取ると、受け取った処理結果が、改竄されていない通知であるか、改竄が検出された通知であるかを判断する（ステップＳ３１０）。
改竄が検出されていない、つまり改竄されていない通知を受け取ったと判断する場合には（ステップＳ３１０における「ＮＯ」）、制御部１０２は、起動指示のあったＡＰに係る動作を実行する（ステップＳ３１５）。【０１６３】  改竄が検出された、つまり改竄が検出された通知を受け取ったと判断する場合には（ステップＳ３１０における「ＹＥＳ」）、制御部１０２は、起動指示のあったＡＰの動作を終了する（ステップＳ３２０）。
１．９  改竄検出処理の動作
ここでは、図１２のステップＳ２４０、及び図１４のステップＳ３０５のそれぞれにて示す改竄検出処理の動作について、図１５及び図１６にて示す流れ図を用いて説明する。【０１６４】  検出制御部１７１は、制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかから検出開始命令とＡＰ識別情報とを受け取ると、受け取った検出開始命令とＡＰ識別情報とを改竄検出呼出部１７２へ出力する。
改竄検出呼出部１７２は、検出制御部１７１から検出開始命令とＡＰ識別情報とを受け取ると、記憶部１０１から受け取ったＡＰ識別情報に対応するハッシュリストを読み出す（ステップＳ４００）。【０１６５】  改竄検出呼出部１７２は、読み出したハッシュリスト１２２と、受け取った検出開始命令及びＡＰ識別情報とを、改竄検出処理部１７３へ出力する。改竄検出処理部１７３は、改竄検出呼出部１７２からハッシュリスト１２２と、検出開始命令及びＡＰ識別情報とを受け取ると、改竄検出処理部１７３は、受け取ったＡＰ識別情報に対応する部分鍵１２３を、記憶部１０１から読み出す。改竄検出処理部１７３は、読み出した部分鍵１２３と、マスタ鍵１７６と、特定のアルゴリズムとを用いて改竄検出鍵を算出する（ステップＳ４０５）。【０１６６】  改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、受け取ったハッシュリストのデータ部に対するハッシュ値を算出する（ステップＳ４１０）。改竄検出処理部１７３は、算出したハッシュ値と、ハッシュリストのヘッダ部に含まれるデータ部ハッシュ値とが一致するか否かを判断する（ステップＳ４１５）。
一致しないと判断する場合には（ステップＳ４１５における「ＮＯ」）、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。検出制御部１７１は、改竄検出処理部１７３から改竄が検出された通知のうちいずれかを受け取る。検出制御部１７１は、受け取った通知を、呼出元（つまり、検出開始命令及びＡＰ識別情報の出力元）である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する（ステップＳ４２０）。【０１６７】  一致すると判断する場合には（ステップＳ４１５における「ＹＥＳ」）、改竄検出処理部１７３は、改竄検出鍵を用いて、データ部１３１を復号する（ステップＳ４２５）。なお、復号には、データ部を暗号化したアルゴリズムに対応する復号アルゴリズムが用いられる。
改竄検出処理部１７３は、復号したデータ部から、未読のハッシュ情報を読み出す（ステップＳ４３０）。【０１６８】  改竄検出処理部１７３は、読み出したハッシュ情報に含まれるファイル情報をファイル読込部１７４へ出力する。ファイル読込部１７４は、改竄検出処理部１７３からファイル情報を受け取ると、受け取ったファイル情報に含まれるファイル名に基づいて、改竄検出対象のファイルを記憶部１０１から読み出す（ステップＳ４３５）。
ファイル読込部１７４は、読み出したファイルをファイル記憶領域に格納し、ファイル読込完了命令を、改竄検出処理部１７３へ出力する。ファイル読込部１７４からファイルの読み込みが完了した旨を示すファイル読込完了命令を受け取る。【０１６９】  改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し（ステップＳ４４０）、取得したエントリが最終エントリであるか否かを判断する（ステップＳ４４５）。
最終エントリでないと判断する場合には（ステップＳ４４５における「ＮＯ」）、改竄検出処理部１７３は、取得したエントリに含まれるオフセット及びサイズとを読み出し、読み出したオフセット及びサイズに基づいて、ファイル読込部１７４にて読み込まれたファイルから検出対象のブロックを取得する（ステップＳ４５０）。改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、取得したブロックに対する検出用ハッシュ値を算出する（ステップＳ４５５）。改竄検出処理部１７３は、算出した検出用ハッシュ値と取得したエントリに含まれるハッシュ値とが一致するか否かを判断する（ステップＳ４６０）。一致すると判断する場合には（ステップＳ４６０における「ＹＥＳ」）、改竄検出処理部１７３は、ステップＳ４４０へ戻る。一致しないと判断する場合には（ステップＳ４６０における「ＮＯ」）、ステップＳ４２０へ戻る。【０１７０】  取得したエントリが最終エントリであると判断する場合には（ステップＳ４４５における「ＹＥＳ」）、改竄検出処理部１７３は、未読のハッシュ情報が存在するか否かを判断する（ステップＳ４６５）。存在すると判断する場合には（ステップＳ４６５における「ＹＥＳ」）、ステップＳ４３０へ戻る。存在しないと判断する場合には（ステップＳ４６５における「ＮＯ」）、改竄検出処理部１７３は、改竄されていない通知を検出制御部１７１へ出力する。検出制御部１７１は、改竄検出処理部１７３から改竄されていない通知を受け取る。検出制御部１７１は、受け取った通知を、呼出元（つまり、検出開始命令及びＡＰ識別情報の出力元）である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する（ステップＳ４７０）。【０１７１】  １．１０  携帯電話機１０の起動時の動作
携帯電話機１０の起動時における更新処理及び改竄検出処理の動作について説明する。
携帯電話機１０に電源が投入され、電源の供給が開始されると、更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値をチェックする。
フラグの値が「０」である場合には、携帯電話機１０は、前回の更新処理は完了していると判断し、更新処理及び改竄検出処理は行わない。【０１７２】  フラグの値が「１」である場合には、更新処理中の状態であると判断し、制御部１０２に対して割り込み禁止を設定する。更新制御部１６２は、更新処理の再開始を示す再開始命令を更新データ読取部１６３へ出力する。
更新データ読取部１６３は、更新制御部１６２から再開始命令を受け取ると、受け取った再開始命令を更新ファイル受取部１０４へ出力する。【０１７３】  更新ファイル受取部１０４は、更新データ読取部１６３から再開始命令を受け取ると、ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在するか否かを判断する。存在すると判断する場合には、携帯電話機１０は、図１１にて示すステップＳ１１５以降の動作を行う。
ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在しないと判断する場合には、更新ファイル受取部１０４は、リスト記憶領域に更新データリストが格納されているか否かを判断する。【０１７４】  更新データリストが格納されていると判断する場合には、受信完了命令を更新処理部１０３へ出力する。更新処理部１０３の更新データ読取部１６３は、更新ファイル受取部１０４から受信完了命令を受け取る。更新処理部１０３は、図１２にて示すステップＳ２０５以降の動作を行う。
更新データリストが格納されていないと判断する場合には、再開始不要命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、再開始不要命令を受け取ると、受け取った再開始不要命令を更新制御部１６２へ出力する。更新制御部１６２は、更新データ読取部１６３から更新処理の再開始が不要である旨を示す再開始不要命令を受け取ると、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。【０１７５】  ２．検出鍵と各動作との関係
図１７は、本実施の形態で用いられる各鍵の関係と、鍵が利用される場面との関係を示す。
改竄検出鍵は、マスタ鍵、部分鍵、及び特定のアルゴリズムとを用いて算出される。この生成作業は、鍵更新装置３０の改竄検出鍵生成部３０２、及び図１５にて示すステップＳ４０５により携帯電話機１０にて行われる。【０１７６】  生成された改竄検出鍵は、以下のようにハッシュリスト生成時、及びハッシュリストを用いた改竄検出処理時に用いられる。
（ハッシュリスト生成時）
改竄検出鍵は、検出対象のファイルにおける１以上のブロックそれぞれに対するハッシュ値を算出する場合に用いられる。具体的には、図１０にて示すステップＳ２０の動作に対応する。【０１７７】  また、改竄検出鍵は、ハッシュリストのデータ部を暗号化する場合に用いられる。具体的には、図１０にて示すステップＳ２５の動作に対応する。
また、改竄検出鍵は、ハッシュリストのデータ部のハッシュ値（データ部ハッシュ値）を算出する場合に用いられる。算出されたハッシュ値はハッシュリストのヘッダ部に埋め込まれる。具体的には、図１０にて示すステップＳ３０の動作に対応する。【０１７８】  （改竄検出処理時）
改竄検出鍵は、ハッシュリストのデータ部のハッシュ値を算出する場合に用いられる。具体的には、図１５にて示すステップＳ４１０の動作に対応する。このとき、携帯電話機１０は、算出されたハッシュ値と、あらかじめ埋め込まれたハッシュ値（データ部ハッシュ値）とを比較することで改竄の有無をチェックする。【０１７９】  また、改竄検出鍵は、ハッシュリストのデータ部を復号する場合に用いられる。具体的には、図１５にて示すステップＳ４２５の動作に対応する。
また、改竄検出鍵は、検出対象のファイルにおける各ブロックのハッシュ値（検出用ハッシュ値）を算出場合に用いられる。具体的には、図１６にて示すステップＳ４５５の動作に対応する。このとき、携帯電話機１０は、算出された検出用ハッシュ値と、予め格納されているハッシュ値とを比較することで改竄の有無をチェックする。【０１８０】  ３．変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記第１の実施の形態では、改竄を検出する装置として携帯電話機を用いたが、これに限定されない。【０１８１】  改竄を検出する装置は、通信機能を具備したＨＤＤレコーダ／ＤＶＤレコーダ、ゲーム機器、ＰＤＡのような機器であってもよい。つまり、更新サーバ装置とネットワーク等により接続可能な電子機器であればよい。
（２）ハッシュリストのデータ部の暗号化は、セキュリティ強度を考慮して、データ部１３１の暗号化単位はデータ部全体に共通鍵暗号方式における連鎖のような暗号アルゴリズムを適用してもよい。このときのハッシュリストの更新単位はハッシュリスト全体となる。【０１８２】  （３）上記第１の実施の形態において、ハッシュリストの更新時に、改竄検出対象のファイルのサイズが増大して、更新前のＭＡＣ情報のエントリ数が増加した場合は、更新サーバ装置は、図１８にて示すハッシュリスト１２２ａを生成してもよい。図１８においてファイル情報１４０ａに対応するＭＡＣ情報１４１ａの最後のエントリは、ＭＡＣ情報１０００に含まれるエントリ１００１のアドレスを指すリンクエントリ１４４ａとなっている。通常のエントリと、リンクエントリとは、サイズ及びハッシュとが異なる。リンクエントリのそれぞれには、数値が格納されずに、「―」が格納される。これにより、通常のエントリとリンクエントリとを区別することができる。【０１８３】  リンクエントリ１４４ａのオフセットには、エントリ１００１のアドレスを指す値として、ハッシュリスト内でのファイルからのオフセットが格納される。
このとき、ファイル情報１４０ａに含まれるブロック数１４２ａは、ＭＡＣ情報１４１ａとＭＡＣ情報１０００とにおいて、リンクエントリ１４４ａと、ＭＡＣ情報１０００の空エントリ１００２（最終エントリ）とを除いたエントリ数である“４”となっている。【０１８４】  この場合のハッシュリストの生成方法の一例を以下に示す。
ハッシュリスト生成処理部２１２は、改竄検出鍵２１５を読み出す。そして、改竄検出鍵２１５を用いて、旧ハッシュリストのデータ部の復号を行い復号された旧ハッシュリストを生成する。以下復号された旧ハッシュリストを復号ハッシュリストという。
ハッシュリスト生成処理部２１２は、データ受取部２１１から受け取った１つ以上の更新ファイルに対して、所定のサイズに分割したブロック単位で、改竄検出処理部１７３と同一のハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ターゲットパスリストから携帯電話機１０におけるファイルパスを読み取り、復号ハッシュリストと比較して、データ部が暗号化されていないハッシュリストを生成する。このとき、生成したハッシュリストのサイズが復号ハッシュリストよりも大きくなるようなファイルの更新であった場合は、ハッシュリスト生成処理部２１２は、生成したハッシュリストを、図１８に示すようなリンクエントリを用いたハッシュリストに変換する。【０１８５】  （４）上記第１の実施の形態において、改竄検出実行部１０５の改竄検出処理部１７３とファイル読込部１７４とを個別の構成としたが、これに限定されない。
改竄検出処理部１７３とファイル読込部１７４とを１つの構成要素としてもよい。
（５）上記第１の実施の形態において、ファイルの更新時には、指定されたＡＰを含む検出対象情報群を更新の対象としたが、これに限定されない。【０１８６】  １回の更新指示により、全ての検出対象情報群を更新の対象としてもよい。
（６）上記第１の実施の形態において、更新データリストのみを利用して、ＡＰに係るファイルを更新したが、これに限定されない。
更新サーバ装置は、携帯電話機へ、更新データリストとともに、更新対象となる１以上の更新ファイルを送信してもよい。このとき、送信される更新データリストには、ハッシュリストに係る更新情報のみから構成される。【０１８７】  （７）上記第１の実施の形態において、検出対象のファイルは、予め決められたサイズのブロック単位で分割されたが、これに限定されない。
更新サーバ装置は、ユーザの操作により入力値として、分割されるブロックのサイズを受け付ける構成であってもよい。これにより、ブロックのサイズを柔軟に設定できる。
（８）上記第１の実施の形態において、更新サーバ装置は、データ部ハッシュ値の算出を、データ部の暗号化後に行ったが、これに限定されない。【０１８８】  更新サーバ装置は、データ部の暗号化の前に、データ部ハッシュ値の算出を行ってもよい。
このとき、改竄検出の実行時には、データ部の復号後に、データ部に対するハッシュ値を算出し、ハッシュリスト自体の改竄検出を行うことになる。
（９）上記第１の実施の形態において、ハッシュリストのデータ部の暗号化に用いられる鍵と、ハッシュ計算に用いられる鍵とは、同一の鍵（改竄検出鍵）としたが、同一でなくてもよい。【０１８９】  （１０）上記第１の実施の形態において、更新データリストは、ハッシュリストの更新内容とともに、更新ファイルの更新内容、及び更新された部分鍵を含めるとしたが、これに限定されない。
更新データリストは、ハッシュリスト用の更新データリスト、更新ファイル用の更新データリスト、及び部分鍵用の更新データリストに分けてもよい。【０１９０】  （１１）上記第１の実施の形態において、ハッシュリストの更新は、携帯電話機を使用する使用者の要求によるものとしたが、更新サーバ装置からの強制アップデートであってもよい。
例えば、鍵更新装置で、更新サーバ装置に新たな改竄検出鍵が埋め込まれた場合には、更新サーバ装置は、更新された部分鍵を携帯電話機に送付するため、更新データリストを生成し、生成した更新データリストを、直ちに、携帯電話機へ送信する。【０１９１】  （１２）上記第１の実施の形態において、他の携帯電話機は、携帯電話機１０と同一のマスタ鍵を有してもよいし、異なるマスタ鍵を有してもよい。
携帯電話機間で異なるマスタ鍵を有する場合には、鍵更新装置は、複数のマスタ鍵を管理しており、更新された部分鍵から算出される改竄検出鍵も異なるため、更新サーバ装置においても複数の改竄検出鍵を管理することとなる。【０１９２】  （１３）上記第１の実施の形態にて示すハッシュリストを、図１９にて示すハッシュリスト１２２ｂとしてもよい。図１９に示すハッシュリスト１２２ｂは、ヘッダ部１３０ｂにハッシュリストの版数を示すハッシュリストバージョン番号１０１０を有する。
この場合、携帯電話機は、更新サーバ装置に更新要求情報を送信するとき、ハッシュリストバージョン番号１０１０をも送信する。【０１９３】  更新サーバ装置は、生成したハッシュリストのハッシュリストバージョン番号毎に更新データリストを管理しておき、携帯電話機から受信したハッシュリストバージョン番号１０１０に応じた更新データリストを携帯電話機へ送信する。
（１４）上記第１の実施の形態において、改竄検出処理は、ハッシュリストに含まれるＭＡＣ情報が有する全てのエントリを用いて、改竄検出を行ったがこれに限定されない。【０１９４】  より速度の求められる場合では、各ＭＡＣ情報において、オフセットが０番のエントリのみをチェックするような手順であってもよい。また、ファイル情報のブロック数を読み込み、その半分のブロック数をチェックするような手順であってもよい。
つまり、改竄検出処理は、各ＭＡＣ情報において、１つ以上のエントリをチェックするような手順であればよい。【０１９５】  （１５）上記第１の実施の形態において、改竄検出の実行は、ハッシュリストの更新時、及び検出対象のＡＰの起動時としたが、これに限定されない。
改竄検出の実行は、携帯電話機の起動中に行ってもよいし、検出対象のＡＰを実行しているときに、バックグラウンドで実行してもよい。
または、携帯電話機は、当該携帯電話機の起動中に、定期的に改竄検出を実行してもよいし、検出対象のＡＰが起動している間に、起動しているＡＰに対する改竄検出を定期的に実行してもよい。【０１９６】  （１６）図１５にて示すステップＳ４２５において、携帯電話機は、データ部全体を復号しているが、これに限定されない。
携帯電話機は、ＭＡＣ情報の１エントリ毎に復号を行うような構成であってもよい。
このとき、携帯電話機は、図１５にて示すステップＳ４１５を実行後、ステップＳ４２５を省略し、ステップＳ４３０からステップＳ４４０までを実行する。このとき、読み出したエントリは暗号化されている。携帯電話機は、その後、読み出したエントリを復号し、ステップＳ４４５以降を行う。または、携帯電話機は、図１５にて示すステップＳ４１５を実行後、ステップＳ４２５を省略し、ステップＳ４３０からステップＳ４４５までを実行し、その後、復号してもよい。【０１９７】  （１７）上記第１の実施の形態において、ハッシュリストの更新時に、改竄検出対象のファイルのサイズが小さくなった場合には、不要となるエントリに含まれるサイズを「０」に設定する。
図２０に、ファイルのブロック数が「８」から「７」に減少した場合の一例を示す。
この場合、更新前であるハッシュ情報１０２０において、８番目のブロックのエントリ１０２１に含まれるサイズは１２０が格納されている。ファイルの更新により、ブロック数が「８」から「７」に減少すると、８番目のブロックのエントリ１０３１に含まれるサイズを「０」として、ハッシュ情報１０３０が生成される。このとき、エントリ１０３１も更新の対象となることは言うまでもない。【０１９８】  改竄検出を実行する際には、携帯電話機は、エントリに含まれるサイズが「０」である場合には、そのエントリを無視、そのエントリに対する改竄のチェックは行わない。
なお、エントリ１０３１に含まれるハッシュ値は、更新前の値としているが、ハッシュ値を“０”にしてもよい。
これによると、携帯電話機は、サイズに格納される値を、当該サイズを含むエントリが改竄検出の対象であるか否かを判断する判断情報として用いることができる。つまり、値が「０」であると改竄検出の対象でないと判断し、「０」以外の値である場合には改竄検出の対象であると判断することができる。【０１９９】  （１８）２つの携帯電話機（ここでは、携帯電話機１１、１２とする）において、携帯電話機１１が機能Ａ（例えば、オーディオデータの再生機能）を含む第１ＡＰと、機能Ｂ（例えば、コンテンツを暗号化しＳＤカードに格納するＳＤ−Ｂｉｎｄｉｎｇ機能）を含む第２ＡＰとを具備し、携帯電話機１２が機能Ａ及び機能Ｂの双方を含む統合ＡＰを具備する場合、上記の第１の実施の形態にて示すように、ＡＰ毎に異なるハッシュリストが与えられてもよいし、以下に示すように１つのハッシュリストが与えられてもよい。【０２００】  図２１に、第１ＡＰ、第２ＡＰ、及び統合ＡＰに対して与えられた１つのハッシュリスト１２２ｃのデータ構成の一例を示す。なお、ヘッダ部１３０ｃのデータ構成は、第１の実施の形態にて示すハッシュリスト１２２のヘッダ部１３０のデータ構成と同様であるため、ここでの説明は省略する。
第１の実施の形態にて示すハッシュリスト１２２と異なる点は、ファイル情報に種別が追加されている点である。種別は、改竄検出の実行時に使用するハッシュ情報を識別するためのものであり、例えば、数値１、２、・・・、及びＡＬＬからなる。種別にＡＬＬが設定されると、ハッシュリストに含まれる全てのハッシュ情報が検出に用いられることを示し、数値が設定されると、設定された種別（数値）を含むファイル情報を有するハッシュ情報が検出の対象となる。【０２０１】  この場合、各ＡＰ（第１ＡＰ、第２ＡＰ、及び統合ＡＰ）は、自身の種別を記憶しており、起動時に記憶している種別を改竄検出実行部へ渡す。ここで、第１ＡＰ、第２ＡＰ、及び統合ＡＰのそれぞれには、種別１、２、ＡＬＬが設定されているものとする。
携帯電話機１１において、第１ＡＰが起動されると、図２１に示すように、種別「１」を含むファイル情報１０４０を有するハッシュ情報１３４ｃが、改竄検出の対象となる。【０２０２】  また、携帯電話機１１において、第２ＡＰが起動されると、種別「２」を含むファイル情報１０４１を有するハッシュ情報１３５ｃが、改竄検出の対象となる。
携帯電話機１２において、統合ＡＰが起動されると、統合ＡＰは種別「ＡＬＬ」を記憶しているので、データ部１３１ｃに含まれる全てのハッシュ情報が、改竄検出の対象となる。【０２０３】  （１９）上記第１の実施の形態にて示すハッシュリストにおいて改竄検出の対象のとなる少なくとも１つ以上のファイルを優先的に改竄検出を実行する優先度を設けてもよい。このとき、例えば、優先的に改竄検出されるファイルに対しては、ＡＰの起動時に改竄検出が実行され、他の改竄検出対象のファイルに対しては、ＡＰの起動が完了し、ＡＰが有する機能の動作中にバックグラウンドで改竄検出が実行される。【０２０４】  図２２に、優先度を用いたハッシュリスト１２２ｄのデータ構成の一例を示す。なお、ヘッダ部１３０ｄのデータ構成は、第１の実施の形態にて示すハッシュリスト１２２のヘッダ部１３０のデータ構成と同様であるため、ここでの説明は省略する。
第１の実施の形態にて示すハッシュリスト１２２と異なる点は、データ部１３１ｄに第１オフセット１０５０と第２オフセット１０５１とからなる組みが追加されている点である。【０２０５】  第１オフセットは、優先的に改竄検出を行うハッシュ情報の先頭位置を示すオフセット値であり、第２オフセットは、優先的に改竄検出を行うハッシュ情報の最終位置を示すオフセット値である。
例えば、第１オフセットにハッシュ情報１３４ｄの先頭位置を示すオフセット値が格納され、第２オフセットにハッシュ情報１３４ｄの最終位置を示すオフセット値が格納されている場合には、ファイル名「ｆｉｌｅ＿１」であるファイルに対する改竄検出は、ＡＰ起動時に行われ、他のファイルに対する改竄検出は、動作中にバックグラウンドで行われる。【０２０６】  また、第１オフセットにハッシュ情報１３４ｄの先頭位置を示すオフセット値が格納され、第２オフセットにハッシュ情報１３６ｄの最終位置を示すオフセット値が格納されている場合には、ファイル名「ｆｉｌｅ＿１」であるファイル及びファイル名「ｆｉｌｅ＿２」であるファイルそれぞれに対する改竄検出は、ＡＰ起動時に行われ、他のファイルに対する改竄検出は、動作中にバックグラウンドで行われる。【０２０７】  （２０）上記第１の実施の形態において、１つのＡＰファイル群、つまり１つのＡＰに対して、１つのハッシュリストが与えられたが、これに限定されない。
１以上のＡＰファイル群に対して、１つのハッシュリスト及び部分鍵を与えてもよい。
この場合における記憶部１０１構成を図２３に示す。
図２３において、記憶部１０１は１つの検出対象情報群１２００を有している。【０２０８】  検出対象情報群１２００は、１以上のＡＰファイル群１０６０、１０６１、・・・、１０６２と、ハッシュリスト１２２ｅと、部分鍵１２３ｅとを有している。
ハッシュリスト１２２ｅのデータ部には、ＡＰファイル群１０６０、１０６１、・・・、１０６２のそれぞれに含まれる各ファイルに対するハッシュ情報が含まれている。
検出対象情報群１２００に含まれる１のＡＰが起動された場合、携帯電話機は、検出対象情報群１２００に含まれる全てのファイルを改竄検出対象としてもよいし、起動されたＡＰに係る１以上のファイルのみを改竄検出の対象としてもよい。【０２０９】  （２１）上記第１の実施の形態において、携帯電話機１０の電源投入時に、更新制御部１６２は、フラグの値のチェックを行い、フラグの値が「１」である場合には、ファイルの更新を自動的に行ったが、これに限定されない。
携帯電話機１０は、更新制御部１６２がフラグの値が「１」であると判断する場合には、ファイルの更新を再度行うか否かを通知し、ユーザから再度更新を行うとの指示を受け取った場合にファイルの更新を再度行ってもよい。【０２１０】  または、ファイルの更新を自動的に行う場合において、再度更新を行う旨をユーザに通知してもよい。
または、携帯電話機１０の電源投入時に、更新制御部１６２は、フラグの値のチェックを行い、フラグの値が「１」である場合には、未更新のデータのみに対して更新を行ってもよい。つまり、携帯電話機１０は、更新処理の途中（電源が落とされたときに動作していた時点）から更新の動作を行ってもよい。【０２１１】  （２２）上記第１の実施の形態において、ハッシュリストのデータ部は暗号化されているとしたが、これに限定されない。
データ部は暗号化しなくてもよい。
（２３）本発明におけるアプリケーションファイルとは、アプリケーションソフトウェアそのものや、アプリケーションソフトウェアから呼び出されるエンコーダ、デコーダ、ドライバ、アプリケーションソフトウェアが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などである。また、アプリケーションファイルの概念に、部分鍵を含めてもよい。【０２１２】  （２４）上記第１の実施の形態において、鍵更新装置は、外部装置から更新された部分鍵を取得するとしたが、これに限定されない。
鍵更新装置にて新たな部分鍵を生成して取得してもよい。
また、マスタ鍵は、鍵更新装置で記憶しておいてもよいし、外部装置から取得してもよい。【０２１３】  （２５）上記第１の実施の形態において、更新データリストに含まれる更新データは、更新すべき情報であるファイルのうち更新対象となる１以上のブロック、ハッシュリストにおけるハッシュリストファイルサイズ、データ部ハッシュ値、ファイル情報、ＭＡＣ情報に含まれるエントリなどが記録されているとしたが、これに限定されない。
更新すべき情報であるファイルのうち更新対象となる１以上のブロックを更新データとして記録する代わりに、アプリケーションソフトウェアを実行するための命令文などのような更新されたデータのみを記録してもよい。【０２１４】  また、更新対象となるブロックを、本願発明の「データ」の概念に含めてもよい。
（２６）上記第１の実施の形態において、改竄検出用の値（改竄検出値）として、ハッシュ値を用いて改竄の検出を行ったが、これに限定されない。
ハッシュ値とは異なる値、データを用いてもよい。例えば、検証対象のデータを暗号化した結果等を改竄検出値として用いることができる。【０２１５】  （２７）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０２１６】  （２８）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【０２１７】  ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。【０２１８】  さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
（２９）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【０２１９】  （３０）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。【０２２０】  また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。【０２２１】  また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（３１）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
４．まとめ
本発明によれば、プログラム更新可能な電子機器においても実現可能な改竄検出方式の提供が可能となる。また、更新時の更新箇所を最小限にとどめ、更新時にかかる通信コストをおさえることができる。さらに電子機器の持つスペックに応じて、実行時の速度チューニングが可能な改竄検出方式の提供が可能となる。【０２２２】  また、改竄検出時に必要な鍵の生成に必要な情報を、更新サーバとは別の場所で管理することが可能であるため、万が一その鍵が漏洩しても鍵の発行および電子機器の鍵の更新が可能な改竄検出方式の提供が可能となる。
【産業上の利用可能性】
【０２２３】  上記にて示したプログラム更新システムを構成する各装置は、電器機器製造産業において、経営的、つまり反復的かつ継続的に利用されうる。
また、本発明にかかるプログラム更新可能な電子機器における改竄検出方式は、セキュアなプログラムの実行を必要とする携帯電話をはじめとした組み込み機器がプログラムの更新機能を備えている場合に有用である。
【図１】
2006129654.tif 000002
【図２】
2006129654.tif 000003
【図３】
2006129654.tif 000004
【図４】
2006129654.tif 000005
【図５】
2006129654.tif 000006
【図６】
2006129654.tif 000007
【図７】
2006129654.tif 000008
【図８】
2006129654.tif 000009
【図９】
2006129654.tif 000010
【図１０】
2006129654.tif 000011
【図１１】
2006129654.tif 000012
【図１２】
2006129654.tif 000013
【図１３】
2006129654.tif 000014
【図１４】
2006129654.tif 000015
【図１５】
2006129654.tif 000016
【図１６】
2006129654.tif 000017
【図１７】
2006129654.tif 000018
【図１８】
2006129654.tif 000019
【図１９】
2006129654.tif 000020
【図２０】
2006129654.tif 000021
【図２１】
2006129654.tif 000022
【図２２】
2006129654.tif 000023
【図２３】
2006129654.tif 000024
【手続補正書】
【提出日】平成18年9月18日(2006.9.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】特許請求の範囲【請求項１】  アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、  １つ以上のデータからなるアプリケーションファイルを記憶している記憶手段と、  更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、  前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、  更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と  を備えることを特徴とする電子機器。【請求項２】  前記受取手段は、更新データと位置情報との組を少なくとも１つ以上受け取り、  前記更新処理手段は、  前記位置情報にて示される位置に基づいて、前記アプリケーションファイルの更新位置を決定する位置決定部と、  決定された前記更新位置を前記更新データの書き込み開始位置として、前記更新データを書き込む書込部と、  前記受取手段にて受け取った１つ以上の更新データ全ての書き込みが完了するまで、前記位置決定部と前記書込部の処理を行うように制御する更新制御部と  を備えることを特徴とする請求項１に記載の電子機器。【請求項３】  前記更新制御部は、  全ての更新データの書き込みが完了すると、前記改竄検出実行手段の処理を開始するように制御する  ことを特徴とする請求項２に記載の電子機器。【請求項４】  前記更新処理手段は、さらに、  アプリケーションファイルの更新中であることを示す第１の情報、又は更新中でないことを示す第２の情報の何れかを示すフラグを記憶しているフラグ記憶部と、  前記フラグが示す情報を変更するフラグ変更部とを備え、  前記フラグ変更部は、  前記受取手段が更新データと位置情報との組を少なくとも１つ以上受け取るときに、前記フラグの情報を、前記第１の情報に変更し、前記改竄検出実行手段にて改竄が検出されなかった場合に、前記フラグの情報を、前記第２の情報に変更する  ことを特徴とする請求項３に記載の電子機器。【請求項５】  前記更新制御部は、さらに、  前記電子機器に電源が投入されると、前記フラグが示す情報を確認し、第１の情報である場合には、前記位置決定部と前記書込部の処理を行うように制御する  ことを特徴とする請求項４に記載の電子機器。【請求項６】  前記アプリケーションファイルは、１つ以上のブロックに分割されており、  前記更新データは、前記１以上のブロックのうち少なくとも１つ以上の更新対象ブロックに含まれ、  前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、  前記受取手段は、さらに、１つ以上の前記更新対象ブロックそれぞれに対する新たな基準改竄検出値と、前記１つ以上の前記更新対象ブロックそれぞれに対する基準改竄検出値の、前記改竄検出リストにおける位置を示す改竄検出位置情報とからなる組を受け取り、  前記更新処理手段は、さらに、１つ以上の新たな基準改竄検出値と、前記改竄検出値位置情報とを用いて、前記改竄検��リストを更新し、  前記改竄検出実行手段は、  前記更新された改竄検出リストが正当なものである場合にのみ、前記更新された改竄検出リストが有する少なくとも１つ以上の基準改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する  ことを特徴とする請求項３に記載の電子機器。【請求項７】  前記アプリケーションファイルは、１つ以上のブロックに分割されており、  前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、  前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に処理を開始し、前記改竄検出リストが正当なものである場合にのみ、前記改竄検出リストが有する少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する  ことを特徴とする請求項１に記載の電子機器。【請求項８】  前記改竄検出手段は、  改竄検出対象であるブロックに対する検出用改竄検出値を算出し、算出した検出用改竄検出値と、改竄検出対象であるブロックに対する改竄検出値とが一致するか否かを判断し、一致すると判断する場合には前記アプリケーションファイルは改竄されていないとし、一致しない場合には前記アプリケーションファイルは改竄されているとする  ことを特徴とする請求項７に記載の電子機器。【請求項９】  前記記憶部は、部分鍵を記憶しており、  前記改竄検出実行手段は、耐タンパ化されており、マスタ鍵を記憶し、前記部分鍵と前記マスタ鍵とを用いて、改竄検出鍵を生成し、生成した改竄検出鍵を用いて、前記検出用改竄検出値を算出する  ことを特徴とする請求項８に記載の電子機器。【請求項１０】  前記受取手段は、前記部分鍵とは異なる別の部分鍵と、前記部分鍵が前記記憶部にて記憶されている位置を示す鍵位置情報とを受け取り、  前記更新処理手段は、前記鍵位置情報に基づいて、前記部分鍵を前記別の部分鍵に更新する  ことを特徴とする請求項９に記載の電子機器。【請求項１１】  前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値を含むデータ部と、前記データ部に対する基準データ部改竄検出値を含むヘッダ部とから構成され、  前記改竄検出実行手段は、前記データ部に対する検出用データ部改竄検出値を算出し、算出した前記検出用データ部改竄検出と前記基準データ部改竄検出値とが一致する場合に、前記改竄検出リストが正当なものであるとする  ことを特徴とする請求項７に記載の電子機器。【請求項１２】  前記データ部は暗号化されており、  前記改竄検出実行手段は、暗号化された前記データ部に対する検出用改竄検出値を算出し、前記改竄検出リストが正当なものである場合に、暗号化された前記データ部を復号する  ことを特徴とする請求項１１に記載の電子機器。【請求項１３】  前記改竄検出リストにおいて、基準改竄検出値のそれぞれに対して、対応するブロックが改竄検出の対象として使用すべきか否かを示す判断情報が対応付けられており、  前記改竄検出実行手段は、前記判断情報がブロックを改竄検出の対象としない旨を示す場合には、当該ブロックに対する改竄検出は行わない  ことを特徴とする請求項７に記載の電子機器。【請求項１４】  前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値と、改竄検出の対象となるアプリケーションソフトウェアの種別を示すアプリケーション種別とが対応付けられた組を１つ以上含み、  前記改竄検出実行手段は、起動されたアプリケーションソフトウェアに対するアプリケーション種別に対応する基準改竄検出値それぞれのうち少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する  ことを特徴とする請求項７に記載の電子機器。【請求項１５】  前記アプリケーションソフトウェアの動作に係るアプリケーションファイルは複数個あり、  前記アプリケーションファイルのそれぞれは、１つ以上のブロックに分割されており、  前記改竄検出リストは、アプリケーションファイルそれぞれに対して、１つ以上のブロックそれぞれに対する基準改竄検出値を基準値群として格納し、１つ以上の前記基準値群のうち前記アプリケーションソフトウェアの起動時に改竄検出に用いる少なくとも１つ以上の基準値群の範囲を示す範囲情報を有し、  前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に、前記改竄検出リストが有する前記範囲情報にて示される少なくとも１つ以上の基準値群を用いて、改竄検出の対象となるブロックが改竄されているか否かを確認する  ことを特徴とする請求項７に記載の電子機器。【請求項１６】  前記更新処理手段及び前記改竄検出実行手段は、耐タンパ化されている  ことを特徴とする請求項２に記載の電子機器。【請求項１７】ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置であって、  更新後のアプリケーションファイルを取得する第１取得手段と、  取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得手段と、  取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と  を備えることを特徴とする更新サーバ装置。【請求項１８】  前記更新前のアプリケーションファイルは、所定の大きさからなる１つ以上の更新前ブロックに分割されており、  前記第１取得手段は、さらに、  １つ以上の前記更新前ブロックそれぞれと、前記更新前ブロック毎に対する基準改竄検出値とからなる更新前改竄検出リストを取得し、  前記更新サーバ装置は、さらに、  前記更新後のアプリケーションファイルを前記所定の大きさに分割された１つ以上の更新後ブロックを取得し、取得した１つ以上の更新後ブロックそれぞれに対して基準改竄検出値を再計算して新たな改竄検出リストを生成する改竄検出リスト生成手段を備え、  前記第２取得手段は、さらに、  前記改竄検出リスト生成手段にて生成された新たな改竄検出リストから、前記更新データを含む更新後ブロックと、その更新後ブロックに対応する再計算された基準改竄検出値と、その更新後ブロックに対応する更新前ブロックの前記更新前改竄検出リストにおける位置を示す改竄検出値位置情報とを取得し、  前記送信手段は、さらに、  前記第２取得手段にて取得された更新後��ロックと前記基準改竄検出値と前記改竄検出値位置情報とを前記電子機器に送信する  ことを特徴とする請求項１７に記載の更新サーバ装置。【請求項１９】  前記改竄検出リスト生成手段は、  外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記１以上の更新後ブロックそれぞれに対する基準改竄検出値を算出する  ことを特徴とする請求項１８に記載の更新サーバ装置。【請求項２０】  前記更新サーバ装置は、  前記外部装置によって更新された部分鍵と前記マスタ鍵とを用いて更新された改竄検出鍵を受け取ると、記憶している前記改竄検出鍵を、受け取った前記更新された改竄検出鍵に更新し、さらに、前記更新された部分鍵を前記外部装置から受け取り、  前記改竄検出リスト生成手段は、  前記更新された改竄検出鍵を用いて、前記１以上の更新後ブロックのそれぞれに対する基準改竄検出値を算出し、  前記第２取得手段は、さらに、  前記電子機器にて前記部分鍵が記憶されている位置を示す鍵位置情報を取得し、  前記送信手段は、さらに、  前記更新された部分鍵と、前記鍵位置情報とを前記電子機器に送信する  ことを特徴とする請求項１９に記載の更新サーバ装置。【請求項２１】  前記改竄検出リストは、前記１つ以上の更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部を有し、  前記改竄検出リスト生成手段は、生成した新たな改竄検出リストのデータ部を暗号化する  ことを特徴とする請求項１９に記載の更新サーバ装置。【請求項２２】  前記更新後改竄検出リストは、ヘッダ部を有し、  前記改竄検出リスト生成手段は、  外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、暗号化されたデータ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する  ことを特徴とする請求項２１に記載の更新サーバ装置。【請求項２３】  前記改竄検出リストは、ヘッダ部と、前記１つ以上の前記更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部とを有し、  前記改竄検出リスト生成手段は、  外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記データ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する  ことを特徴とする請求項１９に記載の更新サーバ装置。【請求項２４】  前記改竄検出リスト生成手段は、  前記データ部改竄検出値の算出後、前記データ部を暗号化する  ことを特徴とする請求項２３に記載の更新サーバ装置。【請求項２５】  前記更新サーバ装置は、外部の改竄検出リスト生成装置を前記改竄検出リスト生成手段として用いる  ことを特徴とする請求項１９に記載の更新サーバ装置。【請求項２６】  １つ以上のブロックに分割されたアプリケーションファイルに対してブロック毎に改竄検出値を算出するために用いられる改竄検出鍵を生成する鍵生成装置であって、  前記改竄検出鍵は、マスタ鍵と、部分鍵とから生成され、  前記鍵生成装置は、  前記マスタ鍵と、更新された部分鍵とを取得する鍵取得手段と、  前記マスタ鍵と前記更新された部分鍵とを用いて新たな改竄検出鍵を生成する鍵生成手段と、  前記鍵生成手段にて生成された改竄検出鍵を、前記改竄検出値を含む改竄検出リストを生成する外部装置へ配布する配布手段と  を備えることを特徴とする鍵生成装置。【請求項２７】  前記配布手段は、前記更新された部分鍵を、前記外部装置を介して前記アプリケーションファイルが改竄されているか否かの確認を行う電子機器へ配布する  ことを特徴とする請求項２６に記載の鍵生成装置。【請求項２８】  アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新方法であって、  前記電子機器は  １つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、  前記更新方法は、  更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、  前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、  更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと  を含むことを特徴とする更新方法。【請求項２９】  アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新プログラムであって、  前記電子機器は  １つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、  前記更新プログラムは、  更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、  前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、  更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと  を含むことを特徴とする更新プログラム。【請求項３０】  前記更新プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項２９に記載の更新プログラム。【請求項３１】ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置で用いられ、更新に必要な情報を取得する取得方法であって、  更新後のアプリケーションファイルを取得する第１取得ステップと、  取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得ステップと、  取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと  を含むことを特徴とする取得方法。【請求項３２】ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置���用いられ、更新に必要な情報を取得する取得プログラムであって、  更新後のアプリケーションファイルを取得する第１取得ステップと、  取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得ステップと、  取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと  を含むことを特徴とする取得プログラム。【請求項３３】  前記取得プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項３２に記載の取得プログラム。【請求項３４】  アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器の集積回路であって、  前記電子機器は  １つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、  前記集積回路は、  更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、  前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、  更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と  を備えることを特徴とする集積回路。【請求項３５】ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置の集積回路であって、  更新後のアプリケーションファイルを取得する第１取得手段と、  取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得手段と、  取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と  を備えることを特徴とする集積回路。【手続補正書】
【提出日】平成19年3月10日(2007.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段と、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と
を備えることを特徴とする電子機器。
【請求項２】
前記受取手段は、更新データと位置情報との組を少なくとも１つ以上受け取り、
前記更新処理手段は、
前記位置情報にて示される位置に基づいて、前記アプリケーションファイルの更新位置を決定する位置決定部と、
決定された前記更新位置を前記更新データの書き込み開始位置として、前記更新データを書き込む書込部と、
前記受取手段にて受け取った１つ以上の更新データ全ての書き込みが完了するまで、前記位置決定部と前記書込部の処理を行うように制御する更新制御部と
を備えることを特徴とする請求項１に記載の電子機器。
【請求項３】
前記更新制御部は、
全ての更新データの書き込みが完了すると、前記改竄検出実行手段の処理を開始するように制御する
ことを特徴とする請求項２に記載の電子機器。
【請求項４】
前記更新処理手段は、さらに、
アプリケーションファイルの更新中であることを示す第１の情報、又は更新中でないことを示す第２の情報の何れかを示すフラグを記憶しているフラグ記憶部と、
前記フラグが示す情報を変更するフラグ変更部とを備え、
前記フラグ変更部は、
前記受取手段が更新データと位置情報との組を少なくとも１つ以上受け取るときに、前記フラグの情報を、前記第１の情報に変更し、前記改竄検出実行手段にて改竄が検出されなかった場合に、前記フラグの情報を、前記第２の情報に変更する
ことを特徴とする請求項３に記載の電子機器。
【請求項５】
前記更新制御部は、さらに、
前記電子機器に電源が投入されると、前記フラグが示す情報を確認し、第１の情報である場合には、前記位置決定部と前記書込部の処理を行うように制御する
ことを特徴とする請求項４に記載の電子機器。
【請求項６】
前記アプリケーションファイルは、１つ以上のブロックに分割されており、
前記更新データは、前記１以上のブロックのうち少なくとも１つ以上の更新対象ブロックに含まれ、
前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、
前記受取手段は、さらに、１つ以上の前記更新対象ブロックそれぞれに対する新たな基準改竄検出値と、前記１つ以上の前記更新対象ブロックそれぞれに対する基準改竄検出値の、前記改竄検出リストにおける位置を示す改竄検出位置情報とからなる組を受け取り、
前記更新処理手段は、さらに、１つ以上の新たな基準改竄検出値と、前記改竄検出値位置情報とを用いて、前記改竄検出リストを更新し、
前記改竄検出実行手段は、
前記更新された改竄検出リストが正当なものである場合にのみ、前記更新された改竄検出リストが有する少なくとも１つ以上の基準改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項３に記載の電子機器。
【請求項７】
前記アプリケーションファイルは、１つ以上のブロックに分割されており、
前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、
前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に処理を開始し、前記改竄検出リストが正当なものである場合にのみ、前記改竄検出リストが有する少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項１に記載の電子機器。
【請求項８】
前記改竄検出手段は、
改竄検出対象であるブロックに対する検出用改竄検出値を算出し、算出した検出用改竄検出値と、改竄検出対象であるブロックに対する改竄検出値とが一致するか否かを判断し、一致すると判断する場合には前記アプリケーションファイルは改竄されていないとし、一致しない場合には前記アプリケーションファイルは改竄されているとする
ことを特徴とする請求項７に記載の電子機器。
【請求項９】
前記記憶部は、部分鍵を記憶しており、
前記改竄検出実行手段は、耐タンパ化されており、マスタ鍵を記憶し、前記部分鍵と前記マスタ鍵とを用いて、改竄検出鍵を生成し、生成した改竄検出鍵を用いて、前記検出用改竄検出値を算出する
ことを特徴とする請求項８に記載の電子機器。
【請求項１０】
前記受取手段は、前記部分鍵とは異なる別の部分鍵と、前記部分鍵が前記記憶部にて記憶されている位置を示す鍵位置情報とを受け取り、
前記更新処理手段は、前記鍵位置情報に基づいて、前記部分鍵を前記別の部分鍵に更新する
ことを特徴とする請求項９に記載の電子機器。
【請求項１１】
前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値を含むデータ部と、前記データ部に対する基準データ部改竄検出値を含むヘッダ部とから構成され、
前記改竄検出実行手段は、前記データ部に対する検出用データ部改竄検出値を算出し、算出した前記検出用データ部改竄検出と前記基準データ部改竄検出値とが一致する場合に、前記改竄検出リストが正当なものであるとする
ことを特徴とする請求項７に記載の電子機器。
【請求項１２】
前記データ部は暗号化されており、
前記改竄検出実行手段は、暗号化された前記データ部に対する検出用改竄検出値を算出し、前記改竄検出リストが正当なものである場合に、暗号化された前記データ部を復号する
ことを特徴とする請求項１１に記載の電子機器。
【請求項１３】
前記改竄検出リストにおいて、基準改竄検出値のそれぞれに対して、対応するブロックが改竄検出の対象として使用すべきか否かを示す判断情報が対応付けられており、
前記改竄検出実行手段は、前記判断情報がブロックを改竄検出の対象としない旨を示す場合には、当該ブロックに対する改竄検出は行わない
ことを特徴とする請求項７に記載の電子機器。
【請求項１４】
前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値と、改竄検出の対象となるアプリケーションソフトウェアの種別を示すアプリケーション種別とが対応付けられた組を１つ以上含み、
前記改竄検出実行手段は、起動されたアプリケーションソフトウェアに対するアプリケーション種別に対応する基準改竄検出値それぞれのうち少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項７に記載の電子機器。
【請求項１５】
前記アプリケーションソフトウェアの動作に係るアプリケーションファイルは複数個あり、
前記アプリケーションファイルのそれぞれは、１つ以上のブロックに分割されており、
前記改竄検出リストは、アプリケーションファイルそれぞれに対して、１つ以上のブロックそれぞれに対する基準改竄検出値を基準値群として格納し、１つ以上の前記基準値群のうち前記アプリケーションソフトウェアの起動時に改竄検出に用いる少なくとも１つ以上の基準値群の範囲を示す範囲情報を有し、
前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に、前記改竄検出リストが有する前記範囲情報にて示される少なくとも１つ以上の基準値群を用いて、改竄検出の対象となるブロックが改竄されているか否かを確認する
ことを特徴とする請求項７に記載の電子機器。
【請求項１６】
前記更新処理手段及び前記改竄検出実行手段は、耐タンパ化されている
ことを特徴とする請求項２に記載の電子機器。
【請求項１７】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置であって、
更新後のアプリケーションファイルを取得する第１取得手段と、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得手段と、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と
を備えることを特徴とする更新サーバ装置。
【請求項１８】
前記更新前のアプリケーションファイルは、所定の大きさからなる１つ以上の更新前ブロックに分割されており、
前記第１取得手段は、さらに、
１つ以上の前記更新前ブロックそれぞれと、前記更新前ブロック毎に対する基準改竄検出値とからなる更新前改竄検出リストを取得し、
前記更新サーバ装置は、さらに、
前記更新後のアプリケーションファイルを前記所定の大きさに分割された１つ以上の更新後ブロックを取得し、取得した１つ以上の更新後ブロックそれぞれに対して基準改竄検出値を再計算して新たな改竄検出リストを生成する改竄検出リスト生成手段を備え、
前記第２取得手段は、さらに、
前記改竄検出リスト生成手段にて生成された新たな改竄検出リストから、前記更新データを含む更新後ブロックと、その更新後ブロックに対応する再計算された基準改竄検出値と、その更新後ブロックに対応する更新前ブロックの前記更新前改竄検出リストにおける位置を示す改竄検出値位置情報とを取得し、
前記送信手段は、さらに、
前記第２取得手段にて取得された更新後ブロックと前記基準改竄検出値と前記改竄検出値位置情報とを前記電子機器に送信する
ことを特徴とする請求項１７に記載の更新サーバ装置。
【請求項１９】
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記１以上の更新後ブロックそれぞれに対する基準改竄検出値を算出する
ことを特徴とする請求項１８に記載の更新サーバ装置。
【請求項２０】
前記更新サーバ装置は、
前記外部装置によって更新された部分鍵と前記マスタ鍵とを用いて更新された改竄検出鍵を受け取ると、記憶している前記改竄検出鍵を、受け取った前記更新された改竄検出鍵に更新し、さらに、前記更新された部分鍵を前記外部装置から受け取り、
前記改竄検出リスト生成手段は、
前記更新された改竄検出鍵を用いて、前記１以上の更新後ブロックのそれぞれに対する基準改竄検出値を算出し、
前記第２取得手段は、さらに、
前記電子機器にて前記部分鍵が記憶されている位置を示す鍵位置情報を取得し、
前記送信手段は、さらに、
前記更新された部分鍵と、前記鍵位置情報とを前記電子機器に送信する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２１】
前記改竄検出リストは、前記１つ以上の更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部を有し、
前記改竄検出リスト生成手段は、生成した新たな改竄検出リストのデータ部を暗号化する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２２】
前記更新後改竄検出リストは、ヘッダ部を有し、
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、暗号化されたデータ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する
ことを特徴とする請求項２１に記載の更新サーバ装置。
【請求項２３】
前記改竄検出リストは、ヘッダ部と、前記１つ以上の前記更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部とを有し、
前記改竄検出リスト生成手段は、
外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記データ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納する
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２４】
前記改竄検出リスト生成手段は、
前記データ部改竄検出値の算出後、前記データ部を暗号化する
ことを特徴とする請求項２３に記載の更新サーバ装置。
【請求項２５】
前記更新サーバ装置は、外部の改竄検出リスト生成装置を前記改竄検出リスト生成手段として用いる
ことを特徴とする請求項１９に記載の更新サーバ装置。
【請求項２６】
１つ以上のブロックに分割されたアプリケーションファイルに対してブロック毎に改竄検出値を算出するために用いられる改竄検出鍵を生成する鍵生成装置であって、
前記改竄検出鍵は、マスタ鍵と、部分鍵とから生成され、
前記鍵生成装置は、
前記マスタ鍵と、更新された部分鍵とを取得する鍵取得手段と、
前記マスタ鍵と前記更新された部分鍵とを用いて新たな改竄検出鍵を生成する鍵生成手段と、
前記鍵生成手段にて生成された改竄検出鍵を、前記改竄検出値を含む改竄検出リストを生成する外部装置へ配布する配布手段と
を備えることを特徴とする鍵生成装置。
【請求項２７】
前記配布手段は、前記更新された部分鍵を、前記外部装置を介して前記アプリケーションファイルが改竄されているか否かの確認を行う電子機器へ配布する
ことを特徴とする請求項２６に記載の鍵生成装置。
【請求項２８】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新方法であって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記更新方法は、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと
を含むことを特徴とする更新方法。
【請求項２９】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器で用いられる更新プログラムであって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記更新プログラムは、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取ステップと、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルを更新する更新処理ステップと、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行ステップと
を含むことを特徴とする更新プログラム。
【請求項３０】
前記更新プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項２９に記載の更新プログラム。
【請求項３１】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置で用いられ、更新に必要な情報を取得する取得方法であって、
更新後のアプリケーションファイルを取得する第１取得ステップと、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得ステップと、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと
を含むことを特徴とする取得方法。
【請求項３２】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置で用いられ、更新に必要な情報を取得する取得プログラムであって、
更新後のアプリケーションファイルを取得する第１取得ステップと、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得ステップと、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信ステップと
を含むことを特徴とする取得プログラム。
【請求項３３】
前記取得プログラムは、コンピュータ読み取り可能な記録媒体に記録されていることを特徴とする請求項３２に記載の取得プログラム。
【請求項３４】
アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器の集積回路であって、
前記電子機器は
１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段を備え、
前記集積回路は、
更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、
前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、
更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段と
を備えることを特徴とする集積回路。
【請求項３５】
ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置の集積回路であって、
更新後のアプリケーションファイルを取得する第１取得手段と、
取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得手段と、
取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段と
を備えることを特徴とする集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
電子機器が保持するソフトウェアをネットワークを介して更新し、改竄の有無を検出する技術に関する。
【背景技術】
【０００２】
プログラムの不正な改竄や解析を防止する技術は従来から研究されている。たとえば、非特許文献１では、ソフトウェアの解析を防ぐための基本原則や具体的手法に関して記述している。また、非特許文献２では、ソフトウェアの解析を防ぐためのツールとして開発したＴＲＣＳ（Ｔａｍｐｅｒ  Ｒｅｓｉｓｔａｎｔ  Ｃｏｄｉｎｇ  Ｓｙｓｔｅｍ）の技術課題とその対策について記述している。このようなソフトウェアの不正な解析や改竄を防ぐ技術を、「耐タンパー技術」と呼ぶ。以降、不正な改竄を、単に「改竄」といい、正当な改竄を「更新」という。
【０００３】
以上のような耐タンパー技術は既に実用化されている。例えば、ＰＣ上で市販のＤＶＤコンテンツを再生するソフトウェアがそれである。ＤＶＤのコンテンツは不正コピーを防止するために暗号化されており、この再生を行うには復号化するための鍵が必要となる。この鍵が悪意のあるユーザの手に渡ると、ＤＶＤコンテンツは容易にコピーされインターネットを通じて不正にばら撒かれる可能性がある。このため、前述のソフトウェアは耐タンパー技術によって保護されている。
【０００４】
このように、近年ＤＶＤに代表されるようにデジタルコンテンツが普及し、それらをコンピュータのような仕様の公開されたシステム上で再生するソフトウェアには耐タンパー技術が必要不可欠となっている。
携帯電話などの電子機器においても耐タンパー技術の適用が行われている。特許文献１では、電子機器内のメモリに対する改竄を防止するために、ハッシュ関数を用いた耐タンパー技術の一つである改竄検出方式が開示されている。
【０００５】
また、近年、携帯電話をはじめとした電子機器はネットワーク化が進み、既に組み込まれたソフトウェアに対して製品の出荷後も不具合を修正するソフトウェアを、ネットワークを通じて配布し更新することが可能となってきている。
【非特許文献１】「逆解析や改変からソフトを守る」  日経エレクトロニクス  １９９８．１．５  （Ｐ２０９−２２０）
【非特許文献２】「ソフトウェアの耐タンパー化技術」  富士ゼロックス  テクニカル  レポート  Ｎｏ．１３  （Ｐ２０−２８）
【特許文献１】特表２００１−５００２９３号公報
【特許文献２】特開２００５−０１８７２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
改竄検出を行う電子機器がネットワークを通じてソフトウェアを更新する場合、更新されたソフトウェア自体が、ネットワークを通じて電子機器に配布されるので、更新されたソフトウェアのサイズが大きくなればなるほど、電子機器が更新されたソフトウェアを受信する時間が長くなる。つまり、ソフトウェアの更新時間が長くなるので、利用者にとっては不満が生じてしまうという問題がある。
【０００７】
そこで、本発明は、ソフトウェアに係るファイルを更新する場合に通信に係るデータ量を従来よりも抑えることのでき、且つ改竄検出を行う電子機器、更新サーバ装置、鍵更新装置、更新方法、更新プログラム、ソフトウェアの更新に必要な情報を取得する取得方法及び取得プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、アプリケーションソフトウェアの動作に係るアプリケーションファイルを有し、ネットワークを介して前記アプリケーションファイルを更新する電子機器であって、１つ以上のデータからなるアプリケーションファイルを記憶している記憶手段と、更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを、前記ネットワークを介して外部装置から受け取る受取手段と、前記位置情報が示す位置に存在するデータを前記更新データに書き換えて、前記アプリケーションファイルの一部のみを更新する更新処理手段と、更新された前記アプリケーションファイルが改竄されているか否かの確認を行う改竄検出実行手段とを備えることを特徴とする。
【発明の効果】
【０００９】
上記に示した構成によると、電子機器は、ネットワークを介してアプリケーションファイルに含まれるデータに対する更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを受け取り、受け取った位置情報に基づいて前記データを前記更新データに書き換えて、アプリケーションファイルの一部のみを更新するので、外部装置から更新されたアプリケーションファイルを受け取る場合よりも通信に係るデータ量を少なくすることができる。
【００１０】
ここで、前記受取手段は、更新データと位置情報との組を少なくとも１つ以上受け取り、前記更新処理手段は、前記位置情報にて示される位置に基づいて、前記アプリケーションファイルの更新位置を決定する位置決定部と、決定された前記更新位置を前記更新データの書き込み開始位置として、前記更新データを書き込む書込部と、前記受取手段にて受け取った１つ以上の更新データ全ての書き込みが完了するまで、前記位置決定部と前記書込部の処理を行うように制御する更新制御部とを備えるとしてもよい。
【００１１】
この構成によると、電子機器は、受け取った位置情報にて示される位置に基づいて、更新データの書込開始位置を決定し、決定した書込開始位置から前記更新データを書き込むことができる。
ここで、前記更新制御部は、全ての更新データの書き込みが完了すると、前記改竄検出実行手段の処理を開始するように制御するとしてもよい。
【００１２】
この構成によると、電子機器は、アプリケーションファイルの更新後に、更新したアプリケーションファイルが改竄されているか否かの確認を行うことができるので、更新後のアプリケーションファイルの正当性を保証することができる。
ここで、前記更新処理手段は、さらに、アプリケーションファイルの更新中であることを示す第１の情報、又は更新中でないことを示す第２の情報の何れかを示すフラグを記憶しているフラグ記憶部と、前記フラグが示す情報を変更するフラグ変更部とを備え、前記フラグ変更部は、前記受取手段が更新データと位置情報との組を少なくとも１つ以上受け取るときに、前記フラグの情報を、前記第１の情報に変更し、前記改竄検出実行手段にて改竄が検出されなかった場合に、前記フラグの情報を、前記第２の情報に変更するとしてもよい。
【００１３】
この構成によると、電子機器は、フラグを用いることによりアプリケーションファイルの更新中であるか否かを識別することができる。
ここで、前記更新制御部は、さらに、前記電子機器に電源が投入されると、前記フラグが示す情報を確認し、第１の情報である場合には、前記位置決定部と前記書込部の処理を行うように制御するとしてもよい。
【００１４】
この構成によると、電子機器は、電源投入時にフラグが示す情報が第１の情報である場合には、再度、アプリケーションファイルの更新を行う。これにより、電子機器は、アプリケーションファイルの更新中に電源が切られても、その後電源が投入されることにより、確実にアプリケーションファイルの更新を行うことができる。
ここで、前記アプリケーションファイルは、１つ以上のブロックに分割されており、前記更新データは、前記１以上のブロックのうち少なくとも１つ以上の更新対象ブロックに含まれ、前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、前記受取手段は、さらに、１つ以上の前記更新対象ブロックそれぞれに対する新たな基準改竄検出値と、前記１つ以上の前記更新対象ブロックそれぞれに対する基準改竄検出値の、前記改竄検出リストにおける位置を示す改竄検出位置情報とからなる組を受け取り、前記更新処理手段は、さらに、１つ以上の新たな基準改竄検出値と、前記改竄検出値位置情報とを用いて、前記改竄検出リストを更新し、前記改竄検出実行手段は、前記更新された改竄検出リストが正当なものである場合にのみ、前記更新された改竄検出リストが有する少なくとも１つ以上の基準改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。
【００１５】
この構成によると、電子機器は、改竄検出リストの正当性を確認しているので、改竄検出値自体を改竄することで不正なブロックを正当であると誤認させる行為を防止することができる。
ここで、前記アプリケーションファイルは、１つ以上のブロックに分割されており、前記記憶手段は、１つ以上の前記ブロックそれぞれに対する基準改竄検出値を有する改竄検出リストを記憶しており、前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に処理を開始し、前記改竄検出リストが正当なものである場合にのみ、前記改竄検出リストが有する少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。
【００１６】
この構成によると、電子機器は、改竄検出リストの正当性を確認しているので、改竄検出値自体を改竄することで不正なブロックを正当であると誤認させる行為を防止することができる。
ここで、前記改竄検出手段は、改竄検出対象であるブロックに対する検出用改竄検出値を算出し、算出した検出用改竄検出値と、改竄検出対象であるブロックに対する改竄検出値とが一致するか否かを判断し、一致すると判断する場合には前記アプリケーションファイルは改竄されていないとし、一致しない場合には前記アプリケーションファイルは改竄されているとするとしてもよい。
【００１７】
この構成によると、電子機器は、改竄検出対象のブロックに対する検出用改竄検出値と、改竄検出リストに含まれる前記ブロックに対する改竄検出値とを用いて、前記ブロックが改竄されているか否かを確認することができる。
ここで、前記記憶部は、部分鍵を記憶しており、前記改竄検出実行手段は、耐タンパ化されており、マスタ鍵を記憶し、前記部分鍵と前記マスタ鍵とを用いて、改竄検出鍵を生成し、生成した改竄検出鍵を用いて、前記検出用改竄検出値を算出するとしてもよい。
【００１８】
この構成によると、電子機器は、改竄検出実行手段が耐タンパ化されており、且つマスタ鍵を記憶しているので、改竄検出鍵の生成、及び生成した改竄検出鍵を不正解析者に解析されないようにすることができる。
ここで、前記受取手段は、前記部分鍵とは異なる別の部分鍵と、前記部分鍵が前記記憶部にて記憶されている位置を示す鍵位置情報とを受け取り、前記更新処理手段は、前記鍵位置情報に基づいて、前記部分鍵を前記別の部分鍵に更新するとしてもよい。
【００１９】
この構成によると、電子機器は、部分鍵を更新することができる。これにより、電子機器は、改竄検出鍵が不正解析者に知られたとしても、部分鍵を更新することにより、新たな改竄検出鍵を生成することができる。
ここで、前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値を含むデータ部と、前記データ部に対する基準データ部改竄検出値を含むヘッダ部とから構成され、前記改竄検出実行手段は、前記データ部に対する検出用データ部改竄検出値を算出し、算出した前記検出用データ部改竄検出と前記基準データ部改竄検出値とが一致する場合に、前記改竄検出リストが正当なものであるとするとしてもよい。
【００２０】
この構成によると、電子機器は、改竄検出リストに含まれるデータ部に対する改竄検出値を確認することにより、改竄検出リストの正当性を保証することができる。これにより、アプリケーションファイルの改竄検出をより正確に行うことができる。
ここで、前記データ部は暗号化されており、前記改竄検出実行手段は、暗号化された前記データ部に対する検出用改竄検出値を算出し、前記改竄検出リストが正当なものである場合に、暗号化された前記データ部を復号するとしてもよい。
【００２１】
この構成によると、電子機器は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。
ここで、前記改竄検出リストにおいて、基準改竄検出値のそれぞれに対して、対応するブロックが改竄検出の対象として使用すべきか否かを示す判断情報が対応付けられており、前記改竄検出実行手段は、前記判断情報がブロックを改竄検出の対象としない旨を示す場合には、当該ブロックに対する改竄検出は行わないとしてもよい。
【００２２】
この構成によると、電子機器は、判断情報が改竄検出の対象としない旨を示す場合にはそのブロックに対する改竄検出を行わないようにすることができる。これにより、アプリケーションファイルが更新された結果、一部のブロックが不要となった場合、不要となったブロックに対しての改竄検出を省略することができる。
ここで、前記改竄検出リストは、前記１つ以上のブロックそれぞれに対する基準改竄検出値と、改竄検出の対象となるアプリケーションソフトウェアの種別を示すアプリケーション種別とが対応付けられた組を１つ以上含み、前記改竄検出実行手段は、起動されたアプリケーションソフトウェアに対するアプリケーション種別に対応する基準改竄検出値それぞれのうち少なくとも１つ以上の改竄検出値に基づいて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。
【００２３】
この構成によると、電子機器は、起動されたアプリケーションソフトウェアのアプリケーション種別に対応する１つ以上の改竄検出値を用いて、改竄検出を行うことができる。
ここで、前記アプリケーションソフトウェアの動作に係るアプリケーションファイルは複数個あり、前記アプリケーションファイルのそれぞれは、１つ以上のブロックに分割されており、前記改竄検出リストは、アプリケーションファイルそれぞれに対して、１つ以上のブロックそれぞれに対する基準改竄検出値を基準値群として格納し、１つ以上の前記基準値群のうち前記アプリケーションソフトウェアの起動時に改竄検出に用いる少なくとも１つ以上の基準値群の範囲を示す範囲情報を有し、前記改竄検出実行手段は、前記アプリケーションソフトウェアの起動時に、前記改竄検出リストが有する前記範囲情報にて示される少なくとも１つ以上の基準値群を用いて、改竄検出の対象となるブロックが改竄されているか否かを確認するとしてもよい。
【００２４】
この構成によると、電子機器は、アプリケーションソフトウェアの起動時に、範囲情報に示される少なくとも１つ以上基準値群を用いて優先的に改竄の検出を行うので、アプリケーションソフトウェアの起動にかかる時間を、すべての基準値群を用いて改竄検出を行う場合に比べて短くすることができる。
ここで、前記更新処理手段及び前記改竄検出実行手段は、耐タンパ化されているとしてもよい。
【００２５】
この構成によると、電子機器は、更新処理手段及び改竄検出実行手段が耐タンパ化されているので、更新処理の動作、改竄検出の動作を不正解析者に解析されないようにすることができる。
また、本発明は、ネットワークを介して電子機器に、前記電子機器が有し、且つ１つ以上のデータからなるアプリケーションファイルの更新を行わせる更新サーバ装置であって、更新後のアプリケーションファイルを取得する第１取得手段と、取得した前記更新後のアプリケーションファイルから更新データと、更新前のアプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得する第２取得手段と、取得した前記更新データと前記位置情報とを前記電子機器へ送信する送信手段とを備えることを特徴とする。
【００２６】
この構成によると、更新サーバ装置は、アプリケーションファイルに含まれるデータに対する更新データと、前記アプリケーションファイルにおいて前記更新データによって更新する位置を示す位置情報とを取得し、取得した更新データ及び位置情報とを、ネットワークを介して電子機器に送信するので、アプリケーションファイルを送信する場合よりも通信に係るデータ量を少なくすることができる。
【００２７】
ここで、前記更新前のアプリケーションファイルは、所定の大きさからなる１つ以上の更新前ブロックに分割されており、前記第１取得手段は、さらに、１つ以上の前記更新前ブロックそれぞれと、前記更新前ブロック毎に対する基準改竄検出値とからなる更新前改竄検出リストを取得し、前記更新サーバ装置は、さらに、前記更新後のアプリケーションファイルを前記所定の大きさに分割された１つ以上の更新後ブロックを取得し、取得した１つ以上の更新後ブロックそれぞれに対して基準改竄検出値を再計算して新たな改竄検出リストを生成する改竄検出リスト生成手段を備え、前記第２取得手段は、さらに、前記改竄検出リスト生成手段にて生成された新たな改竄検出リストから、前記更新データを含む更新後ブロックと、その更新後ブロックに対応する再計算された基準改竄検出値と、その更新後ブロックに対応する更新前ブロックの前記更新前改竄検出リストにおける位置を示す改竄検出値位置情報とを取得し、前記送信手段は、さらに、前記第２取得手段にて取得された更新後ブロックと前記基準改竄検出値と前記改竄検出値位置情報とを前記電子機器に送信するとしてもよい。
【００２８】
この構成によると、更新サーバ装置は、第２取得手段にて取得された更新後ブロックと、その基準改竄検出値と、改竄検出値位置情報と電子機器に送信するので、電子機器では、更新されたブロックに対する基準改竄検出値を、常に最新の値とすることができる。
ここで、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記１以上の更新後ブロックそれぞれに対する基準改竄検出値を算出するとしてもよい。
【００２９】
この構成によると、更新サーバ装置は、部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を用いて、基準改竄検出値を計算することができる。
ここで、前記更新サーバ装置は、前記外部装置によって更新された部分鍵と前記マスタ鍵とを用いて更新された改竄検出鍵を受け取ると、記憶している前記改竄検出鍵を、受け取った前記更新された改竄検出鍵に更新し、さらに、前記更新された部分鍵を前記外部装置から受け取り、前記改竄検出リスト生成手段は、前記更新された改竄検出鍵を用いて、前記１以上の更新後ブロックのそれぞれに対する基準改竄検出値を算出し、前記第２取得手段は、さらに、前記電子機器にて前記部分鍵が記憶されている位置を示す鍵位置情報を取得し、前記送信手段は、さらに、前記更新された部分鍵と、前記鍵位置情報とを前記電子機器に送信するとしてもよい。
【００３０】
この構成によると、更新サーバ装置は、改竄検出鍵を更新することができる。これにより、更新サーバ装置は、改竄検出鍵が不正解析者に知られたとしても、新たな改竄検出鍵を外部装置から受け取ることにより、不正解析者に知られた改竄検出鍵を用いることなく新たな基準改竄検出値を算出することができる。
ここで、前記改竄検出リストは、前記１つ以上の更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部を有し、前記改竄検出リスト生成手段は、生成した新たな改竄検出リストのデータ部を暗号化するとしてもよい。
【００３１】
この構成によると、更新サーバ装置は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。
ここで、前記更新後改竄検出リストは、ヘッダ部を有し、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、暗号化されたデータ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納するとしてもよい。
【００３２】
この構成によると、更新サーバ装置は、暗号化されたデータ部に対するデータ部改竄検出値を算出するので、暗号化されたデータ部に対する正当性を保証することができる。
ここで、前記改竄検出リストは、ヘッダ部と、前記１つ以上の前記更新後ブロックそれぞれと、前記更新後ブロック毎に対する基準改竄検出値とからなるデータ部とを有し、前記改竄検出リスト生成手段は、外部装置によって部分鍵とマスタ鍵とを用いて生成された改竄検出鍵を記憶しており、前記改竄検出鍵を用いて、前記データ部に対するデータ部改竄検出値を算出し、算出したデータ部改竄検出値を前記ヘッダ部へ格納するとしてもよい。
【００３３】
この構成によると、更新サーバ装置は、データ部に対するデータ部改竄検出値を算出するので、データ部に対する正当性を保証することができる。
ここで、前記改竄検出リスト生成手段は、前記データ部改竄検出値の算出後、前記データ部を暗号化するとしてもよい。
この構成によると、更新サーバ装置は、データ部が暗号化されているので、改竄検出リストに含まれる各ブロックの改竄検出値を不正解析者に知られないようにすることができる。
【００３４】
また、本発明は、１つ以上のブロックに分割されたアプリケーションファイルに対してブロック毎に改竄検出値を算出するために用いられる改竄検出鍵を生成する鍵生成装置であって、前記改竄検出鍵は、マスタ鍵と、部分鍵とから生成され、前記鍵生成装置は、前記マスタ鍵と、更新された部分鍵とを取得する鍵取得手段と、前記マスタ鍵と前記更新された部分鍵とを用いて新たな改竄検出鍵を生成する鍵生成手段と、前記鍵生成手段にて生成された改竄検出鍵を、前記改竄検出値を含む改竄検出リストを生成する外部装置へ配布する配布手段とを備えることを特徴とする。
【００３５】
この構成によると、鍵更新装置は、外部装置から改竄検出鍵が漏洩したとしても、部分鍵を更新するだけで、不正行為を行なった外部装置の持つ改竄検出鍵とは異なる新たな改竄検出鍵を生成することができる。
ここで、前記配布手段は、前記更新された部分鍵を、前記外部装置を介して前記アプリケーションファイルが改竄されているか否かの確認を行う電子機器へ配布するとしてもよい。
【００３６】
この構成によると、更新された部分鍵を電子機器に、外部装置を介して配布することができる。
【発明を実施するための最良の形態】
【００３７】
１．第１の実施の形態
以下、本発明における第１の実施の形態について、図面を参照しながら説明する。
１．１  プログラム更新システム１の概要
図１は、第１の実施の形態におけるプログラム更新システム１の全体構成を示す図である。
【００３８】
プログラム更新システム１は、携帯電話機１０、更新サーバ装置２０、及び鍵更新装置３０から構成されている。
鍵更新装置３０は、更新サーバ装置２０や携帯電話機１０で用いられる改竄検出鍵を更新する。改竄検出鍵が不正に流出したときは、新しい改竄検出鍵の発行を行う。鍵更新装置３０は、改竄検出鍵を生成する機関により厳重に管理されている。改竄検出鍵は、マスタ鍵と部分鍵とから生成される。マスタ鍵は、一度生成されると変更されない鍵であり、部分鍵は、改竄検出鍵の更新を行う際に、更新される鍵である。
【００３９】
携帯電話機１０は、更新サーバ装置２０に、アプリケーションソフトウェア（以下、ＡＰという。）に係るファイルの更新を要求する更新要求情報を送信し、更新に係るデータである更新データリストを受信する。携帯電話機１０は、受信した更新データリストに基づいて、ファイルの更新を行う。ここで、ＡＰとは、具体的には音楽録音・再生ソフトウェアや動画録画・再生ソフトウェアのようなアプリケーションである。また、ＡＰに係るファイルとは、ＡＰそのものや、ＡＰから呼び出されるエンコーダ、デコーダ、ドライバ、ＡＰが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などであり、１つ以上のデータからなる。
【００４０】
また、携帯電話機１０は、アプリケーションソフトウェア更新時、及び起動時にＡＰに係るファイルが改竄されているか否かの確認を行う。ここで、改竄とは、不正にファイルを書き換えることをいう。
更新サーバ装置２０は、更新データリストを保持しており、携帯電話機１０からの更新要求情報を受け付けると、更新要求の対象であるファイルに対応する更新データリストを携帯電話機１０に送信する。
【００４１】
携帯電話機１０と更新サーバ装置２０とは、携帯網４０及びインターネット５０を介して、通信を行う。
１．２  携帯電話機１０の構成
携帯電話機１０は、図２にて示すように、記憶部１０１、制御部１０２、更新処理部１０３、更新ファイル受取部１０４、改竄検出実行部１０５、マイク１０６、スピーカ１０７、入力部１０８、表示部１０９、無線部１１０、及びアンテナ１１１から構成されている。
【００４２】
（１）記憶部１０１
記憶部１０１は、図２に示すように、検出対象情報群１２０、１２０ａ、・・・、１０２ｍを記憶している。なお、検出対象情報群１２０、１２０ａ、・・・、１０２ｍは全て同じ構成であるので、ここでは、検出対象情報群１２０の構成について説明する。
検出対象情報群１２０は、図２に示すように、ＡＰファイル群１２１、ハッシュリスト１２２、及び部分鍵を記憶している。
【００４３】
（ＡＰファイル群１２１）
ＡＰファイル群１２１は、第１ファイル１２５、・・・、第ｎファイル１２６を有している。第１ファイル１２５、・・・、第ｎファイル１２６は、改竄検出の対象となるファイルであり、具体的には、上述したように、ＡＰそのものや、ＡＰから呼び出されるエンコーダ、デコーダ、ドライバ、ＡＰが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などである。ここで、ｎは１以上の整数である。つまり、ＡＰファイル群１２１には、１つ以上のファイルが格納されている。
【００４４】
なお、以降では、第１ファイル１２５、・・・、第ｎファイル１２６それぞれのファイル名を「ｆｉｌｅ＿１」、・・・、「ｆｉｌｅ＿ｎ」とする。なお、各ファイルは、局所的な更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。
（ハッシュリスト１２２）
ハッシュリスト１２２は、第１ファイル１２５、・・・、第ｎファイル１２６の改竄検出用のハッシュ値をリストとして保持している。ハッシュリスト１２２は局所的な更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。
【００４５】
ここで、ハッシュリスト１２２について説明する。
図３は、ハッシュリスト１２２のデータ構造の一例を示す図である。
ハッシュリスト１２２は、暗号化されていないヘッダ部１３０と暗号化されているデータ部１３１とから構成されている。ここで、暗号化に用いられるアルゴリズムは、例えば、ＸＯＲのような論理演算もしくはＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）といった暗号アルゴリズムである。暗号アルゴリズムＤＥＳ、ＡＥＳは、公知であるため説明は省略する。
【００４６】
ヘッダ部１３０は、ハッシュリストファイルサイズ１３２とデータ部ハッシュ値１３３とから構成されている。ハッシュリストファイルサイズ１３２は、ヘッダ部１３０とデータ部１３１を合わせたハッシュリスト１２２全体のデータサイズを示す。データ部ハッシュ値１３３は、データ部１３１に対してハッシュ計算アルゴリズムを適用して算出されたハッシュ値を示す。ここで、ハッシュ計算アルゴリズムは、ＳＨＡ−１やＭＤ５などの一方向性関数に鍵値をからめるＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ）アルゴリズムであるとする。以降において、ハッシュ値を算出するハッシュ計算アルゴリズムは、ＨＭＡＣアルゴリズムであるとする。
【００４７】
データ部１３１は、１つ以上のハッシュ情報から構成されている。ここでは、データ部１３１は、ハッシュ情報１３４、・・・、ハッシュ情報１３５から構成されているものとする。ハッシュ情報は、改竄検出対象となるファイルに対して、少なくとも１つ存在する。
ハッシュ情報１３４は、１つのファイル情報１４０と複数のＭＡＣ情報１４１とから構成されている。
【００４８】
ファイル情報１４０は、改竄検出対象となるファイルを分割して生成したブロックの数を示すブロック数１４２と、改竄検出対象となるファイルを示すファイル名１４３とから構成されている。ここで、ファイル名は、改竄検出対象となるファイルのファイルシステム上の絶対パスや相対パスなど場所を特定できるパスを含めた形式で示されている。
ＭＡＣ情報１４１は、1個以上のエントリで構成されている。ここで、エントリの数は、ブロック数１４２にて示される値＋１である。
【００４９】
エントリ１４４は、ファイル名１４３にて示されるファイルの分割されたブロックについての先頭アドレスからのオフセットと、ブロックのサイズと、ブロックに対してハッシュ計算アルゴリズムを適用して算出されたハッシュ値とから構成されている。なお、（ｎ−１）番目までのエントリの構成については、同様であるため説明は省略する。ハッシュリスト１２２に格納されているハッシュ値は、改竄検出時において、改竄がされているか否かを判断するための基準となる基準値である。
【００５０】
ＭＡＣ情報１４１の最後に位置するエントリ１４５は、更新用に予約された空エントリであり、オフセット、サイズ、及びハッシュ値が記述される代わりに、“Reserved”がそれぞれ記述されている。なお、ＭＡＣ情報１４１の最後に位置するエントリを最終エントリともいう。
データ部１３１の最後の位置するハッシュ情報における最終エントリには、ハッシュリスト１２２における最後のエントリであることを示す情報“end  of  entry”が埋められている。ここでは、ハッシュ情報１３５が、データ部１３１の最後に位置するハッシュ情報であるので、その最終エントリ１４６には、“end  of  entry”が埋められている。なお、ハッシュ情報１３５の他の構成要素は、ハッシュ情報１３４において最終エントリ１４５を除く他の構成要素と同様であるため説明は省略する。
【００５１】
また、上述したように、データ部１３１は、暗号化されている。暗号化は、ファイル情報１４０やＭＡＣ情報１４１の１エントリの単位で行われる。このため、ハッシュリスト１２２の更新は、ファイル情報１４０やＭＡＣ情報１４１の１エントリの単位で可能となる。
なお、ここでは、ハッシュリスト１２２は、ハッシュリスト１２２が属する検出対象情報群１２０に含まれるＡＰを識別するＡＰ識別情報と対応付けがされているものとする。
【００５２】
（部分鍵１２３）
部分鍵１２３は、改竄検出を行われる実行するときにマスタ鍵とともに改竄検出鍵の算出に用いられる。部分鍵１２３は更新が可能となるように、携帯電話機の製造時において固定されたアドレスに記録されている。
なお、ここでは、ハッシュリスト１２２と同様に、部分鍵１２３は、部分鍵１２３が属する検出対象情報群１２０に含まれるＡＰを識別するＡＰ識別情報と対応付けがされているものとする。
【００５３】
（２）制御部１０２
制御部１０２は、携帯電話機１０の全体の制御を行う。
制御部１０２は、無線部１１０から通話に係る信号（音声信号）を受け取ると、受け取った信号をスピーカ１０７へ出力するための信号処理を行う。
制御部１０２は、マイク１０６から通話に係る信号（音声信号）を無線部１１０へ出力するための信号処理を行う。
【００５４】
制御部１０２は、入力部１０８からＡＰに係るファイルの更新の更新指示を受け取ると、ファイルの更新処理の開始を示す更新開始命令を更新処理部１０３へ出力する。ここで、更新指示、及び更新開始命令には、更新対象となるＡＰを示すＡＰ識別情報が含まれる。
制御部１０２は、更新処理部１０３からファイルの更新完了の通知を受け取ると、表示部１０９を介して、更新完了のメッセージを表示する。
【００５５】
制御部１０２は、更新処理部１０３からファイルの更新失敗の通知を受け取ると、表示部１０９を介して、更新失敗のメッセージを表示する。また、制御部１０２は、入力部１０８から再更新の指示を受け取ると、ファイルの再更新の開始を示す再更新開始命令を更新処理部１０３へ出力する。制御部１０２は、入力部１０８から再更新を行わない指示を受け取ると、ファイルの更新処理の終了を示す更新終了命令を更新処理部１０３へ出力する。
【００５６】
制御部１０２は、入力部１０８からＡＰの起動指示を受け取ると、起動の対象となるＡＰの起動を行う。このとき、起動されたＡＰは、自ＡＰが改竄検出対象である場合には、検出開始命令と、自ＡＰを識別するＡＰ識別情報とを、制御部１０２により改竄検出実行部１０５へ出力する。なお、改竄検出実行部１０５では、検出開始命令を制御部１０２から受け取ることになる。
【００５７】
制御部１０２は、改竄検出実行部１０５から改竄されていない通知を受け取ると、起動指示のあったＡＰに係る動作を実行する。
制御部１０２は、改竄検出実行部１０５から改竄が検出された通知を受け取ると、起動指示のあったＡＰの動作を終了する。
（３）更新処理部１０３
更新処理部１０３は、更新ファイル受取部１０４が更新サーバ装置２０より受け取った更新データリスト１５０より更新対象となるファイルやリスト、もしくは鍵などのデータを更新する。
【００５８】
ここで、更新データリスト１５０は、図４に示すように、１つ以上の更新情報１５１、・・・、１５２から構成されている。更新情報１５１は、位置情報１５３、データサイズ１５４、及び更新データ１５５から構成されている。位置情報１５３は、更新するデータの位置を示す情報である。例えば、位置情報１５３は、ファイル名やファイルの先頭からのオフセット、アドレス情報などで表される。データサイズ１５４は、更新するデータのサイズを示す。更新データ１５５は、更新すべき情報であるファイルのうち更新対象となる１以上のブロック、ハッシュリスト１２２におけるハッシュリストファイルサイズ１３２、データ部ハッシュ値１３３、ファイル情報、ＭＡＣ情報に含まれるエントリなどが記録されている。ここで、更新データには、１つ以上のデータが含まれており、更新データに含まれるデータとは、ハッシュリストファイルサイズやデータ部ハッシュ値などのような値や、アプリケーションソフトウェアを実行するための命令文などである。
【００５９】
例えば、ファイルを複数個のブロックに分割し、２〜４番目のブロックを更新する場合には、位置情報には２番目のブロックの位置を示すオフセットが格納され、データサイズには２〜４番目のブロックそれぞれのサイズを合計した合計サイズが格納され、更新データには、更新後の２〜４番目のブロックが格納される。また、ハッシュリストも更新する必要があるため、この場合には、２番目のブロックのハッシュ値を含むエントリの位置を示すオフセットが位置情報に格納され、２〜４番目のブロックのハッシュ値を含むエントリそれぞれのサイズの合計値がデータサイズに格納され、更新後の２〜４番目のブロックに対応するエントリそれぞれが、更新データに格納される。
【００６０】
更新処理部１０３は、更新データリスト１５０の内容に基づいて、ファイルやハッシュリスト１２２内のハッシュリストファイルサイズ１３２、データ部ハッシュ値１３３、ファイル情報、ＭＡＣ情報に含まれるエントリ、部分鍵１２３の更新を行う。
更新処理部１０３は、図５に示すように、フラグ記憶部１６１、更新制御部１６２、更新データ読取部１６３、更新データ解析部１６４、書込位置決定部１６５、更新データ書込部１６６、及び更新確認部１６７から構成されている。
【００６１】
更新処理部１０３は、悪意のあるユーザによる解析に対する耐性をもつよう耐タンパー技術で保護されている。耐タンパー技術は、公知であるため説明は省略する。
（フラグ記憶部１６１）
フラグ記憶部１６１は、ＡＰに係るファイルの更新を行っているか否かを示すフラグを記憶している。ここでは、フラグの値「０」である場合には、更新処理部１０３が、更新を行っていない旨を示し、値「１」である場合には、更新処理部１０３が、更新を行っている旨を示す。なお、フラグ記憶部１６１は、具体的には、不揮発性のメモリである。つまり、携帯電話機１０の電源を切っても、フラグ記憶部１６１の記憶内容は保持される。
【００６２】
（更新制御部１６２）
更新制御部１６２は、制御部１０２から更新開始命令を受け取ると、他の命令による処理が割り込まないように、制御部１０２に対して割り込み禁止を設定する。
更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値を「１」に設定する。
【００６３】
更新制御部１６２は、受け取った更新開始命令に含まれるＡＰ識別情報を更新データ読取部１６３へ出力する。
更新制御部１６２は、更新データ読取部１６３から全ての更新データの書き込みが完了した旨の書込完了命令を受け取ると、改竄検出の処理を開始する旨の検出開始命令と、ＡＰ識別情報とを改竄検出実行部１０５へ出力する。
【００６４】
更新制御部１６２は、改竄検出実行部１０５から改竄されていない通知を受け取ると、更新完了の通知を制御部１０２へ出力する。更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
更新制御部１６２は、改竄検出実行部１０５から改竄が検出された通知を受け取ると、更新失敗の通知を制御部１０２へ出力する。更新制御部１６２は、制御部１０２から再更新開始命令を受け取ると、再度、ＡＰ識別情報を更新データ読取部１６３へ出力する。
【００６５】
更新制御部１６２は、制御部１０２から更新終了命令を受け取ると、更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
携帯電話機１０に電源が投入され、電源の供給が開始されると、更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値をチェックする。値が「１」である場合には、更新処理中の状態であると判断し、制御部１０２に対して割り込み禁止を設定する。更新制御部１６２は、更新処理の再開始を示す再開始命令を更新データ読取部１６３へ出力する。更新制御部１６２は、更新データ読取部１６３から更新処理の再開始が不要である旨を示す再開始不要命令を受け取ると、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
【００６６】
（更新データ読取部１６３）
更新データ読取部１６３は、更新制御部１６２からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報を更新ファイル受取部１０４へ出力する。
更新データ読取部１６３は、更新ファイル受取部１０４から更新サーバ装置２０から更新データリスト１５０の受信が完了した旨の受信完了命令を受け取ると、受信した更新データリスト１５０から未読の更新情報を１つ読み出す。
【００６７】
更新データ読取部１６３は、更新確認部１６７から更新データの書き込みが正常に終了した旨の正常終了命令を受け取ると、受信した更新データリスト１５０に未読の更新情報が存在するか否かを判断する。存在すると判断する場合には、更新データ読取部１６３は、未読の更新情報を取得する。存在しないと判断する場合には、更新データ読取部１６３は、書込完了命令を、更新制御部１６２及び更新ファイル受取部１０４へ出力する。更新データ読取部１６３は、更新確認部１６７から更新データの書き込みが失敗した旨の異常終了命令を受け取ると、前回読み出した更新情報を再度読み出す。
【００６８】
更新データ読取部１６３は、更新制御部１６２から再開始命令を受け取ると、受け取った再開始命令を更新ファイル受取部１０４へ出力する。その後、更新データ読取部１６３は、更新ファイル受取部１０４から受信完了命令を受け取ると、上記と同様の動作を行う。
更新データ読取部１６３は、再開始不要命令を受け取ると、受け取った再開始不要命令を更新制御部１６２へ出力する。
【００６９】
（更新データ解析部１６４）
更新データ解析部１６４は、更新データ読取部１６３にて読み出された更新情報を、位置情報、データサイズ、及び更新データに分割する。これにより、更新データ解析部１６４は、更新情報から位置情報、データサイズ、及び更新データを取得することができる。
（書込位置決定部１６５）
書込位置決定部１６５は、更新データ解析部１６４にて取得された位置情報に基づいて、記憶部１０１における更新データの書込位置を決定する。
【００７０】
（更新データ書込部１６６）
更新データ書込部１６６は、書込位置決定部１６５にて決定された書込位置を書込開始の先頭位置として、更新データ解析部１６４にて取得された更新データを書き込む。
（更新確認部１６７）
更新確認部１６７は、更新データ書込部１６６による書き込みが正常に終了したか否かを確認する。
【００７１】
正常に終了したと判定する場合には、正常終了命令を更新データ読取部１６３へ出力し、正常に終了していないと判断する場合には、異常終了命令を更新データ読取部１６３へ出力する。
（４）更新ファイル受取部１０４
更新ファイル受取部１０４は、携帯電話機１０を識別する端末識別子を予め記憶している。
【００７２】
更新ファイル受取部１０４は、更新処理部１０３から受け取ったＡＰ識別情報を記憶するＡＰ識別情報記憶領域、及び更新サーバ装置２０から受信した更新データリスト１５０を記憶するリスト記憶領域を有している。ここで、ＡＰ識別情報記憶領域、及びリスト記憶領域は不揮発性メモリである。
更新ファイル受取部１０４は、更新処理部１０３の更新データ読取部１６３からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報と、端末識別子と、更新要求情報とを、無線部１１０を介して、更新サーバ装置２０へ送信し、受け取ったＡＰ識別情報をＡＰ識別情報記憶領域へ格納する。
【００７３】
更新ファイル受取部１０４は、更新サーバ装置２０から無線部１１０を介して、更新データリスト１５０を受け取ると、受け取った更新データリスト１５０をリスト記憶領域へ格納する。さらに、更新ファイル受取部１０４は、受け取った更新データリスト１５０の格納が完了すると、ＡＰ識別情報記憶領域にて格納されているＡＰ識別情報を消去し、受信完了命令を更新データ読取部１６３へ出力する。
【００７４】
更新ファイル受取部１０４は、更新データ読取部１６３から書込完了命令を受け取ると、リスト格納領域に格納されている更新データリスト１５０を消去する。
更新ファイル受取部１０４は、更新データ読取部１６３から再開始命令を受け取ると、ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在するか否かを判断する。存在すると判断する場合には、更新ファイル受取部１０４は、格納しているＡＰ識別情報と、端末識別子とを、無線部１１０を介して、更新サーバ装置２０へ送信し、上記と同様の動作を行う。
【００７５】
ＡＰ識別情報記憶領域にＡＰ識別情報が存在しないと判断する場合には、更新ファイル受取部１０４は、リスト記憶領域に更新データリスト１５０が格納されているか否かを判断する。格納されていると判断する場合には、受信完了命令を更新データ読取部１６３へ出力する。格納されていないと判断する場合には、再開始不要命令を更新データ読取部１６３へ出力する。
【００７６】
（５）改竄検出実行部１０５
改竄検出実行部１０５は、図６に示すように、検出制御部１７１、改竄検出呼出部１７２、改竄検出処理部１７３、及びファイル読込部１７４から構成されている。
改竄検出実行部１０５は、悪意のあるユーザによる解析に対する耐性をもつよう耐タンパー技術で保護されている。耐タンパー技術は、公知であるため説明は省略する。
【００７７】
（検出制御部１７１）
検出制御部１７１は、制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかから検出開始命令とＡＰ識別情報とを受け取ると、受け取った検出開始命令とＡＰ識別情報とを改竄検出呼出部１７２へ出力する。
検出制御部１７１は、改竄検出処理部１７３から改竄されていない通知若しくは改竄が検出された通知のうちいずれかを受け取る。
【００７８】
検出制御部１７１は、受け取った通知を、検出開始命令及びＡＰ識別情報の出力元である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する。具体的には、検出開始命令を制御部１０２から受け取った場合には、検出制御部１７１は、改竄検出処理部１７３から受け取った通知を制御部１０２へ出力する。また、検出開始命令を更新制御部１６２から受け取った場合には、検出制御部１７１は、改竄検出処理部１７３から受け取った通知を更新制御部１６２へ出力する。
【００７９】
（改竄検出呼出部１７２）
改竄検出呼出部１７２は、検出制御部１７１から検出開始命令とＡＰ識別情報とを受け取ると、記憶部１０１から受け取ったＡＰ識別情報に対応するハッシュリスト１２２を読み出す。
改竄検出呼出部１７２は、読み出したハッシュリスト１２２と、受け取った検出開始命令及びＡＰ識別情報とを、改竄検出処理部１７３へ出力する。
【００８０】
（改竄検出処理部１７３）
改竄検出処理部１７３は、図６に示すように、マスタ鍵記憶部１７５を有している。マスタ鍵記憶部１７５は、マスタ鍵１７６を記憶している。
改竄検出処理部１７３は、改竄検出呼出部１７２からハッシュリスト１２２と、検出開始命令及びＡＰ識別情報とを受け取ると、改竄検出の処理を開始する。
【００８１】
改竄検出処理部１７３は、受け取ったＡＰ識別情報に対応する部分鍵１２３を、記憶部１０１から読み出す。
改竄検出処理部１７３は、読み出した部分鍵１２３と、マスタ鍵１７６と、特定のアルゴリズムとを用いて改竄検出鍵を算出する。ここで、特定のアルゴリズムは、例えば、ＸＯＲ（排他的論理和）のような論理演算、若しくはＤＥＳ、ＡＥＳといった暗号アルゴリズムであるとする。
【００８２】
改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、受け取ったハッシュリスト１２２のデータ部１３１に対するハッシュ値を算出する。改竄検出処理部１７３は、算出したハッシュ値と、ハッシュリスト１２２のヘッダ部１３０に含まれるデータ部ハッシュ値１３３とが一致するか否かを判断する。
一致しないと判断する場合には、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。
【００８３】
一致すると判断する場合には、改竄検出処理部１７３は、改竄検出鍵を用いて、データ部１３１を復号する。なお、復号には、データ部１３１を暗号化したアルゴリズムに対応する復号アルゴリズムが用いられる。
改竄検出処理部１７３は、復号したデータ部から、未読のハッシュ情報を読み出す。改竄検出処理部１７３は、読み出したハッシュ情報に含まれるファイル情報をファイル読込部１７４へ出力し、その後、ファイル読込部１７４からファイルの読み込みが完了した旨を示すファイル読込完了命令を受け取る。
【００８４】
改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し、取得したエントリが最終エントリであるか否かを判断する。
最終エントリでないと判断する場合には、改竄検出処理部１７３は、取得したエントリに含まれるオフセット及びサイズとを読み出し、読み出したオフセット及びサイズに基づいて、ファイル読込部１７４にて読み込まれたファイルから検出対象のブロックを取得する。改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、取得したブロックに対する検出用ハッシュ値を算出する。改竄検出処理部１７３は、算出した検出用ハッシュ値と取得したエントリに含まれるハッシュ値とが一致するか否かを判断する。一致すると判断する場合には、改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し、上記動作を行う。一致しないと判断する場合には、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。
【００８５】
取得したエントリが最終エントリであると判断する場合には、改竄検出処理部１７３は、未読のハッシュ情報が存在するか否かを判断する。存在すると判断する場合には、改竄検出処理部１７３は、未読のハッシュ情報を読み出し、上記の動作を行う。存在しないと判断する場合には、改竄検出処理部１７３は、改竄されていない通知を検出制御部１７１へ出力する。
【００８６】
（ファイル読込部１７４）
ファイル読込部１７４は、読み込んだファイルを一時的に記憶するファイル記憶領域を有している。
ファイル読込部１７４は、改竄検出処理部１７３からファイル情報を受け取ると、受け取ったファイル情報に含まれるファイル名に基づいて、改竄検出対象のファイルを記憶部１０１から読み出す。
【００８７】
ファイル読込部１７４は、読み出したファイルをファイル記憶領域に格納し、ファイル読込完了命令を、改竄検出処理部１７３へ出力する。
（６）マイク１０６
マイク１０６は、使用者の音声を受け付け、受け付けた音声を音声信号に変換し、変換した音声信号を制御部１０２へ出力する。
【００８８】
（７）スピーカ１０７
スピーカ１０７は、制御部１０２にて処理された音声信号を音声として出力する。
（８）入力部１０８
入力部１０８は、使用者の操作により、更新指示を受け付けると、受け付けた更新指示を制御部１０２へ出力する。
【００８９】
入力部１０８は、改竄検出対象のファイルの更新が失敗した場合に、使用者の操作により、再更新を行う指示を受け付けると、受け付けた再更新を行う指示を制御部１０２へ出力する。また、入力部１０８は、改竄検出対象のファイルの更新が失敗した場合に、使用者の操作により、再更新を行わない指示を受け付けると、受け付けた再更新を行わない指示を制御部１０２へ出力する。
【００９０】
入力部１０８は、使用者の操作により、ＡＰの起動指示を受け付けると、受け付けた起動指示を制御部１０２へ出力する。
（９）表示部１０９
表示部１０９は、制御部１０２から更新完了のメッセージを受け取ると、受け取ったメッセージを表示する。
【００９１】
表示部１０９は、制御部１０２から更新失敗のメッセージを受け取ると、受け取ったメッセージを表示する。
（１０）無線部１１０
無線部１１０は、アンテナ１１１を備えており、無線信号の送受信を行う。
１．３  更新サーバ装置２０の構成
更新サーバ装置２０は、図７に示すように、記憶部２０１、データ取得部２０２、ハッシュリスト生成部２０３、ハッシュリスト書込部２０４、更新要求処理部２０５、入力部２０６、及び送受信部２０７から構成されている。
【００９２】
（１）記憶部２０１
記憶部２０１は、携帯電話機１０にて記憶されている検出対象情報群に対する更新データリストを１以上記憶するための領域と、ハッシュリストを記憶するための領域とを有している。
ここでは、検出対象情報群１２０に対する更新データリストを１つ以上記憶しているものとする。また、記憶されている更新データリストのそれぞれは、更新対象のファイルを含むＡＰのＡＰ識別情報と対応付けられ、さらに、版数の管理がされている。また、携帯電話機１０の端末識別子と、携帯電話機１０に送信した更新データリストの版数とが対応付けられて管理されているものとする。また、ハッシュリストは、対応するＡＰのＡＰ識別情報と対応付けがされている。
【００９３】
（２）データ取得部２０２
データ取得部２０２は、入力部２０６から初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを取得する。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、受け取った初期設定指示と、取得した１つ以上のファイル、及びターゲットパスリストとをハッシュリスト生成部２０３へ出力する。ここで、ターゲットパスリストとは、改竄検出対象となる１つ以上のファイルそれぞれに対してのファイルシステム上にて格納されている格納場所を示す絶対パスや相対パスなどからなるパス名が格納されているリストである。なお、初期設定指示には、生成されるハッシュリストと対応するＡＰのＡＰ識別情報が含まれる。
【００９４】
データ取得部２０２は、入力部２０６から検出対象のファイルの更新があった旨を示す第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、及び更新対象となる１つ以上のファイルのターゲットパスリストを取得する。なお、第１更新指示には、更新の対象となるＡＰのＡＰ識別情報が含まれているものとする。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、記憶部２０１から第１更新指示に含まれるＡＰ識別情報に対応するハッシュリストを取得する。データ取得部２０２は、受け取った第１更新指示と、取得した１つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリストとをハッシュリスト生成部２０３へ出力する。ここで、更新ファイルとは、元のファイルに存在する不具合が解消された最新ファイルである。
【００９５】
データ取得部２０２は、鍵更新装置３０から部分鍵の更新があった旨を示す第２更新指示と、更新後の部分鍵とを受け取ると、さらに、更新された部分鍵を用いた改竄検出の対象となる１つ以上のファイル、及びターゲットパスリストを取得する。なお、第２更新指示には、更新された部分鍵に対応するＡＰのＡＰ識別情報が含まれているものとする。このとき、取得元は、例えば、外部装置である。データ取得部２０２は、記憶部２０１から第２更新指示に含まれるＡＰ識別情報に対応するハッシュリストを取得する。データ取得部２０２は、受け取った第２更新指示及び部分鍵と、１つ以上のファイル、ターゲットパスリスト、及びハッシュリストとをハッシュリスト生成部２０３へ出力する。
【００９６】
（３）ハッシュリスト生成部２０３
ハッシュリスト生成部２０３は、図８に示すように、改竄検出鍵記憶部２１０、データ受取部２１１、ハッシュリスト生成処理部２１２、暗号化処理部２１３、及び更新データリスト生成部２１４から構成されている。
ここで、ハッシュリスト生成部２０３は、１つの装置（ハッシュリスト生成装置）としてもよい。
【００９７】
（改竄検出鍵記憶部２１０）
改竄検出鍵記憶部２１０は、改竄検出鍵２１５を記憶している。
（データ受取部２１１）
データ受取部２１１は、データ取得部２０２より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る。
【００９８】
データ受取部２１１は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取り、受け取った初期設定指示、１つ以上のファイル、及びターゲットパスリストをハッシュリスト生成処理部２１２に出力する。
データ受取部２１１は、第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及びハッシュリストを受け取り、受け取った第１更新指示、1つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリストをハッシュリスト生成処理部２１２に出力する。
【００９９】
データ受取部２１１は、第２更新指示を受け取ると、さらに、部分鍵、更新された部分鍵を用いた改竄検出の対象となる１つ以上のファイル、ターゲットパスリスト、及びハッシュリストを受け取り、受け取った第２更新指示、部分鍵、１つ以上のファイル、ターゲットパスリスト、及びハッシュリストをハッシュリスト生成処理部２１２に出力する。
（ハッシュリスト生成処理部２１２）
ハッシュリスト生成処理部２１２は、データ受取部２１１より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る。
【０１００】
＜初期設定指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取る。
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルのうち１つのファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割されたファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全てのファイルに対して行う。
【０１０１】
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなるデータ部を生成する。このとき、データ部は暗号化されていない。以下、暗号化されたデータ部を区別するため、暗号化されていないデータ部を非暗号化データ部という。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。
【０１０２】
ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。
【０１０３】
ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなるハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、生成したハッシュリストを記憶部に格納するとともに、ハッシュリスト書込部２０４へ出力する。このとき、生成したハッシュリストと、初期設定指示に含まれるＡＰ識別情報とが対応付けされる。
【０１０４】
＜第１更新指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、データ受取部２１１から第１更新指示を受け取ると、さらに、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及びハッシュリストを受け取る。以下において、データ受取部２１１から受け取ったハッシュリストを旧ハッシュリストという。
【０１０５】
ハッシュリスト生成処理部２１２は、受け取った１つ以上の更新ファイルのうち１つの更新ファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全ての更新ファイルに対して行う。
【０１０６】
ハッシュリスト生成処理部２１２は、受け取った１つ以上の更新ファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。
【０１０７】
ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。
【０１０８】
ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、第１更新指示、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び１以上の更新ファイルとを更新データリスト生成部２１４へ出力する。
【０１０９】
＜第２更新指示を受け取った場合＞
ハッシュリスト生成処理部２１２は、データ受取部２１１から第２更新指示を受け取ると、さらに、部分鍵、検出対象となる１つ以上のファイル、ターゲットパスリスト、及び旧ハッシュリストを受け取る。
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルのうち１つのファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位で、読み出した改竄検出鍵２１５とハッシュ計算アルゴリズムとを用いてハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全てのファイルに対して行う。
【０１１０】
ハッシュリスト生成処理部２１２は、受け取った１つ以上のファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。
【０１１１】
ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する。ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。
【０１１２】
ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する。
ハッシュリスト生成処理部２１２は、第２更新指示と、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び部分鍵とを更新データリスト生成部２１４へ出力する。
【０１１３】
（暗号化処理部２１３）
暗号化処理部２１３は、ハッシュリスト生成処理部２１２から非暗号化データ部を受け取ると、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。
暗号化処理部２１３は、読み出した改竄検出鍵を用いて、受け取った非暗号化データ部を暗号化する。暗号に用いられるアルゴリズムは例えばＸＯＲのような論理演算もしくはＤＥＳ、ＡＥＳといった暗号アルゴリズムであり、携帯電話機１０にて用いられる復号アルゴリズムに対応するものである。このとき、暗号化はファイル情報やＭＡＣ情報の１エントリを単位として行われる。
【０１１４】
暗号化処理部２１３は、暗号化されたデータ部をハッシュリスト生成処理部２１２へ出力する。
（更新データリスト生成部２１４）
更新データリスト生成部２１４は、第１更新指示及び第２更新指示のいずれかを受け取る。
【０１１５】
＜第１更新指示を受け取った場合＞
更新データリスト生成部２１４は、さらに、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、１つ以上の更新ファイルとを受け取る。
更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。
【０１１６】
更新データリスト生成部２１４は、抽出された情報と、１つ以上の更新ファイルとを用いて更新データリストを生成する。このとき、更新データリスト生成部２１４は、抽出された情報から更新ファイルの更新箇所が特定できる。なぜなら、ファイルを分割する際には、各ブロックは、所定のサイズとなるように分割されているので、変更が生じないブロックのハッシュ値は、以前のハッシュと同じとなる。変更が生じているブロックのハッシュ値は以前のハッシュ値と異なっているので、変更された箇所を含むブロックに対するエントリは、旧ハッシュリストと新ハッシュリストとの比較により抽出される。上述したように、ブロックは、所定のサイズとなるように分割されているので、抽出されたエントリから更新ファイルにおける更新箇所を特定することができる。更新データリスト生成部２１４は、特定した更新箇所を更新データとし、更新データ（つまり更新箇所を含むブロック）の位置情報及びブロックのサイズを取得する。なお、更新箇所を含むブロックが連続している場合には、１つの更新データとして結合してもよい。このときの位置情報は、連続するブロックのうち先頭に位置するブロックの位置情報となり、サイズは、連続するブロックの個数から算出することができる。
【０１１７】
更新データリスト生成部２１４は、更新データ、位置情報及びブロックのサイズからなる更新情報を１個以上生成し、さらに、生成した１個以上の更新情報からなる更新データリストを生成する。
更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する。このとき、生成した更新データリストと、第１更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。
【０１１８】
＜第２更新指示を受け取った場合＞
更新データリスト生成部２１４は、さらに、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、部分鍵とを受け取る。
更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。
【０１１９】
更新データリスト生成部２１４は、抽出された情報、及び受け取った部分鍵のそれぞれを更新データとする更新データリストを生成する。部分鍵を更新データとする更新情報の生成は、以下のようにして行う。更新データリスト生成部２１４は、携帯電話機１０における部分鍵の記憶位置を示す位置情報と、受け取った部分鍵のデータサイズとを取得する。更新データリスト生成部２１４は、取得した位置情報と、データサイズと、更新データである部分鍵とからなる更新情報を生成する。
【０１２０】
なお、抽出された情報を更新データとする更新情報の生成は、第１更新指示を受け取った場合にて示す更新情報の生成と同様であるので、ここでの説明は省略する。
更新データリスト生成部２１４は、生成した１個以上の更新情報からなる更新データリストを生成する。
更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する。このとき、生成した更新データリストと、第２更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。
【０１２１】
（４）ハッシュリスト書込部２０４
ハッシュリスト書込部２０４は、携帯電話機の製造時において、製造中（出荷前）の携帯電話機と接続され、携帯電話機の記憶部へのアクセスが可能である。
ハッシュリスト書込部２０４は、ハッシュリスト生成部２０３からハッシュリストを受け取ると、受け取ったハッシュリストを、接続された携帯電話機の記憶部へ書き込む。ハッシュリストが書き込まれるアドレスは、上述したように固定されたアドレスである。
【０１２２】
（５）更新要求処理部２０５
更新要求処理部２０５は、送受信部２０７を介して携帯電話機１０から、ＡＰ識別情報と、端末識別子と、更新要求情報とを受け取ると、受け取ったＡＰ識別情報と、端末識別子とを用いて、携帯電話機１０に送信すべき更新データリストの版数を決定する。上述したように、更新サーバ装置２０は、更新データリストのそれぞれを、更新対象のファイルを含むＡＰのＡＰ識別情報と対応付け、及び版数の管理を行っており、また、携帯電話機１０の端末識別子と、携帯電話機１０に送信した更新データリストの版数とを対応付けて管理しているので、送信すべき更新データリストを決定することができる。
【０１２３】
更新要求処理部２０５は、送信すべき更新データリストを記憶部２０１から取得し、取得した更新データリストを、送受信部２０７を介して携帯電話機１０へ送信する。
（６）入力部２０６
入力部２０６は、使用者の操作により、初期設定指示を受け付けると、受け付けた初期設定指示をデータ取得部２０２へ出力する。
【０１２４】
入力部２０６は、使用者の操作により、第１更新指示を受け付けると、受け付けた第１更新指示をデータ取得部２０２へ出力する。
（７）送受信部２０７
送受信部２０７は、携帯網４０及びインターネット５０を介して携帯電話機１０から受信した情報を更新要求処理部２０５へ出力する。
【０１２５】
送受信部２０７は、更新要求処理部２０５から受け取った情報を、インターネット５０及び携帯網４０を介して携帯電話機１０へ送信する。
１．４  鍵更新装置３０の構成
鍵更新装置３０は、図９に示すように、鍵取得部３０１、改竄検出鍵生成部３０２、改竄検出鍵配布部３０３、及び出力部３０４から構成されている。
【０１２６】
鍵更新装置３０は、改竄検出鍵が悪意のあるユーザによって解析され不正に流出した場合に、更新サーバ装置２０に記憶されている改竄検出鍵を更新する。鍵更新装置３０は鍵を正式に発行する機関によって厳重に管理されるものとする。
（１）鍵取得部３０１
鍵取得部３０１は、外部装置から、マスタ鍵、及び更新された部分鍵と、更新された部分鍵に対応するＡＰのＡＰ識別情報とを取得する。なお、取得するマスタ鍵は、携帯電話機１０にて記憶しているマスタ鍵と同一のものである。
【０１２７】
鍵取得部３０１は、受け取ったマスタ鍵及び更新された部分鍵を改竄検出鍵生成部３０２へ出力する。
鍵取得部３０１は、改竄検出鍵配布部３０３から更新サーバ装置２０に対して改竄検出鍵の配布が完了した旨を示す配布完了命令を受け取ると、ＡＰ識別情報を含む第２更新指示と、更新された部分鍵とを出力部３０４へ出力する。
【０１２８】
（２）改竄検出鍵生成部３０２
改竄検出鍵生成部３０２は、鍵取得部３０１からマスタ鍵及び更新された部分鍵を受け取ると、受け取ったマスタ鍵と、更新された部分鍵と、特定のアルゴリズムとを用いて改竄検出鍵を算出する。なお、ここで用いる特定のアルゴリズムは、携帯電話機１０の改竄検出処理部１７３にて用いられるアルゴリズムと同一のものである。
【０１２９】
改竄検出鍵生成部３０２は、算出した改竄検出鍵を、改竄検出鍵配布部３０３へ出力する。
（３）改竄検出鍵配布部３０３
改竄検出鍵配布部３０３は、更新サーバ装置２０と接続され、改竄検出鍵記憶部２１０にアクセス可能である。
【０１３０】
改竄検出鍵配布部３０３は、改竄検出鍵生成部３０２から改竄検出鍵を受け取ると、受け取った改竄検出鍵を、改竄検出鍵記憶部２１０に書き込む。このとき、改竄検出鍵記憶部２１０に記憶されていた以前の改竄検出鍵は消去される。
改竄検出鍵配布部３０３は、改竄検出鍵の書き込みが完了すると、配布完了命令を鍵取得部３０１へ出力する。
【０１３１】
（４）出力部３０４
出力部３０４は、更新サーバ装置２０のデータ取得部２０２と接続される。
出力部３０４は、鍵取得部３０１から第２更新指示と、更新された部分鍵とを受け取ると、受け取った、第２更新指示と、更新された部分鍵とをデータ取得部２０２へ出力する。
【０１３２】
１．５  更新サーバ装置２０の動作
ここでは、更新サーバ装置２０にて、更新データリスト、及びハッシュリストの生成の動作について、図１０にて示す流れ図を用いて説明する。
データ受取部２１１は、データ取得部２０２より初期設定指示、第１更新指示、及び第２更新指示の何れかを受け取る（ステップＳ５）。
【０１３３】
データ受取部２１１は、第１更新指示を受け取ると（ステップＳ１０における「第１更新指示」）、更新対象となる１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１以上のファイルのターゲットパスリスト、及びハッシュリストを取得する（ステップＳ１５）。
データ受取部２１１は、受け取った第１更新指示、1つ以上の更新ファイル、ターゲットパスリスト、及びハッシュリスト（以下、旧ハッシュリスト）をハッシュリスト生成処理部２１２に出力する。ハッシュリスト生成処理部２１２は、データ受取部２１１から第１更新指示、１つ以上のファイルそれぞれに対する更新ファイル、更新対象となる１つ以上のファイルのターゲットパスリスト、及び旧ハッシュリストを受け取る。
【０１３４】
ハッシュリスト生成処理部２１２は、受け取った１以上の更新ファイルのうち１の更新ファイルを所定のサイズからなる１以上のブロックに分割する。ハッシュリスト生成処理部２１２は、分割された更新ファイルが携帯電話機１０において格納されている位置を示すパス名をターゲットパスリストから読み取り、分割したブロックの数と、読み取ったパス名とからなるファイル情報を生成する。また、ハッシュリスト生成処理部２１２は、所定のサイズに分割したブロック単位でハッシュ計算アルゴリズムを適用してハッシュ値を算出し、各ブロックに対して、ブロックの先頭位置を示すオフセットと、ブロックのサイズと、算出したハッシュ値とからなるエントリを生成し、生成した各エントリを含むＭＡＣ情報を生成する。ハッシュリスト生成処理部２１２は、生成したファイル情報とＭＡＣ情報とからなるハッシュ情報を生成する。なお、このとき、ハッシュ情報は、未だ暗号化されていない。この動作を、受け取った全ての更新ファイルに対して行う。
【０１３５】
ハッシュリスト生成処理部２１２は、受け取った１以上の更新ファイルそれぞれに対するハッシュ情報を生成すると、生成した全てのハッシュ情報からなる非暗号化データ部を生成する（ステップＳ２０）。
ハッシュリスト生成処理部２１２は、生成した非暗号化データ部を暗号化処理部２１３へ出力する。暗号化処理部２１３は、ハッシュリスト生成処理部２１２から非暗号化データ部を受け取ると、改竄検出鍵記憶部２１０から改竄検出鍵２１５を読み出す。暗号化処理部２１３は、読み出した改竄検出鍵を用いて、受け取った非暗号化データ部を暗号化する（ステップＳ２５）。このとき、暗号化はファイル情報やＭＡＣ情報の１エントリを単位として行われる。
【０１３６】
暗号化処理部２１３は、暗号化されたデータ部をハッシュリスト生成処理部２１２へ出力する。ハッシュリスト生成処理部２１２は、暗号化処理部２１３から暗号化されたデータ部を受け取ると、暗号化されたデータ部に対して、ハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ハッシュリストのデータ部ハッシュ値に記録する（ステップＳ３０）。
【０１３７】
ハッシュリスト生成処理部２１２は、ハッシュリストのサイズを算出し、算出結果をハッシュリストファイルサイズに記録する。これにより、ハッシュリスト生成処理部は、ハッシュリストのヘッダ部を生成することができる。
ハッシュリスト生成処理部２１２は、生成したヘッダ部と、暗号化処理部２１３から受け取った暗号化されたデータ部とからなる新ハッシュリストを生成する（ステップＳ３５）。
【０１３８】
ハッシュリスト生成処理部２１２は、第１更新指示、生成した新ハッシュリストと、データ受取部２１１から受け取った旧ハッシュリスト及び１以上の更新ファイルとを更新データリスト生成部２１４へ出力する。更新データリスト生成部２１４は、第１更新指示、ハッシュリスト生成処理部２１２から新ハッシュリストと、旧ハッシュリストと、１つ以上の更新ファイルとを受け取る。
【０１３９】
更新データリスト生成部２１４は、受け取った旧ハッシュリスト、新ハッシュリストを比較し、情報の異なる箇所を新ハッシュリストから抽出する。ここで、抽出される情報は、データ部におけるエントリや、ヘッダ部におけるデータ部ハッシュ値である。更新データリスト生成部２１４は、抽出された情報と、１以上の更新ファイルとを用いて更新データリストを生成する（ステップＳ４０）。
【０１４０】
更新データリスト生成部２１４は、新ハッシュリストと、生成した更新データリストを記憶部２０１へ格納する（ステップＳ４５）。このとき、生成した更新データリストと、第１更新指示に含まれるＡＰ識別情報とが対応付けされる。なお、記憶部２０１に記憶されている旧ハッシュリストは消去される。
データ受取部２１１は、第２更新指示を受け取ると（ステップＳ１０における「第２更新指示」）、部分鍵、検出対象となる１つ以上のファイル、ターゲットパスリスト、及びハッシュリストを取得し（ステップＳ５０）、ステップＳ２０からステップＳ４５までの動作を行う。なお、この場合、各構成要素が出力、及び受け取る指示は、第２更新指示となる。また、ステップＳ４０で生成される更新データリストは、旧ハッシュリスト、新ハッシュリスト、及び部分鍵から生成される。また、ステップＳ４５では、生成した更新データリストと、第２更新指示に含まれるＡＰ識別情報とが対応付けされる。
【０１４１】
データ受取部２１１は、初期設定指示を受け取ると（ステップＳ１０における「初期設定指示」）、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを取得する（ステップＳ５５）。
データ受取部２１１は、受け取った初期設定指示、１以上のファイル、及びターゲットパスリストをハッシュリスト生成処理部２１２に出力する。
【０１４２】
ハッシュリスト生成処理部２１２は、初期設定指示を受け取ると、さらに、改竄検出対象となる１つ以上のファイル、及びターゲットパスリストを受け取り、ハッシュリストを生成する（ステップＳ６０）。なお、ハッシュリストの生成については、ステップＳ２０からステップＳ３５までの動作と概念的には同じであるので、ここでの詳細な説明は省略する。
【０１４３】
ハッシュリスト生成処理部２１２は、生成したハッシュリストを記憶部に格納するとともに、ハッシュリスト書込部２０４へ出力する。ハッシュリスト書込部２０４は、ハッシュリスト生成部２０３からハッシュリストを受け取ると、受け取ったハッシュリストを、接続された携帯電話機の記憶部へ書き込む（ステップＳ６５）。
１．６  ハッシュリスト更新時の動作概要
ここでは、ハッシュリスト更新時の動作概要について、図１１にて示す流れ図を用いて説明する。
【０１４４】
携帯電話機１０における更新処理部１０３の更新制御部１６２は、更新指示を受け付けと（ステップＳ１００）、制御部１０２に対して割り込み禁止の設定を行う（ステップＳ１０５）。
更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値を「１」に設定する（ステップＳ１１０）。
【０１４５】
更新制御部１６２は、受け取った更新開始命令に含まれるＡＰ識別情報を更新データ読取部１６３へ出力する。
更新ファイル受取部１０４は、更新処理部１０３の更新データ読取部１６３からＡＰ識別情報を受け取ると、受け取ったＡＰ識別情報と、予め記憶している端末識別子と、更新要求情報とを、無線部１１０を介して、更新サーバ装置２０へ送信する（ステップＳ１１５）。更新ファイル受取部１０４は、受け取ったＡＰ識別情報をＡＰ識別情報記憶領域へ格納する。
【０１４６】
更新サーバ装置２０の更新要求処理部２０５は、送受信部２０７を介して携帯電話機１０から、ＡＰ識別情報と、端末識別子と、更新要求情報とを受信する（ステップＳ１２０）。
更新要求処理部２０５は、受信したＡＰ識別情報と、端末識別子とを用いて、携帯電話機１０に送信すべき更新データリストの版数を決定する。更新要求処理部２０５は、送信すべき更新データリストを記憶部２０１から取得し（ステップＳ１２５）、取得した更新データリストを、送受信部２０７を介して携帯電話機１０へ送信する（ステップＳ１３０）。
【０１４７】
携帯電話機１０は、更新サーバ装置２０から更新データリストを受信し、更新処理を行う（ステップＳ１３５）。
１．７  更新処理の動作
ここでは、図１１のステップＳ１３５にて示す更新処理の動作について、図１２、及び図１３にて示す流れ図を用いて説明する。
【０１４８】
更新ファイル受取部１０４は、更新サーバ装置２０から無線部１１０を介して、更新データリストを受信すると、受信した更新データリストをリスト記憶領域へ格納する（ステップＳ２００）。
更新ファイル受取部１０４は、受け取った更新データリストの格納が完了すると、ＡＰ識別情報記憶領域にて格納されているＡＰ識別情報を消去し、受信完了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新ファイル受取部１０４から更新サーバ装置２０から更新データリストの受信が完了した旨の受信完了命令を受け取る。
【０１４９】
更新データ読取部１６３は、更新ファイル受取部１０４のリスト記憶領域にて記憶されている更新データリストから未読の更新情報を１つ読み出す（ステップＳ２０５）。
更新データ解析部１６４は、更新データ読取部１６３にて読み出された更新情報を、位置情報、データサイズ、及び更新データに分割する（ステップＳ２１０）。
書込位置決定部１６５は、更新データ解析部１６４にて取得された位置情報に基づいて、記憶部１０１における更新データの書込位置を決定する（ステップＳ２１５）。
【０１５０】
更新データ書込部１６６は、書込位置決定部１６５にて決定された書込位置を書込開始の先頭位置として、更新データ解析部１６４にて取得された更新データを書き込む（ステップＳ２２０）。
更新確認部１６７は、更新データ書込部１６６による書き込みが正常に終了したか否かを確認する（ステップＳ２２５）。
【０１５１】
正常に終了していないと判断する場合には（ステップＳ２２５における「ＮＯ」）、更新確認部１６７は、異常終了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新確認部１６７から異常終了命令を受け取ると、ステップＳ２０５にて読み出した更新情報と同一の更新情報を再度読み出し（ステップＳ２３０）、ステップＳ２１０へ戻る。
【０１５２】
正常に終了したと判定する場合には（ステップＳ２２５における「ＹＥＳ」）、更新確認部１６７は、正常終了命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、更新確認部１６７から正常終了命令を受け取ると、更新ファイル受取部１０４のリスト記憶領域にて記憶されている更新データリストに未読の更新情報が存在するか否かを判断する（ステップＳ２３５）。
【０１５３】
存在すると判断する場合には（ステップＳ２３５における「ＹＥＳ」）、更新データ読取部１６３は、ステップＳ２０５へ戻る。存在しないと判断する場合には（ステップＳ２３５における「ＮＯ」）、更新データ読取部１６３は、書込完了命令を、更新制御部１６２及び更新ファイル受取部１０４へ出力する。更新ファイル受取部１０４は、更新データ読取部１６３から書込完了命令を受け取ると、リスト格納領域に格納されている更新データリスト１５０を消去する。更新制御部１６２は、更新データ読取部１６３から書込完了命令を受け取ると、改竄検出の処理を開始する旨の検出開始命令と、ＡＰ識別情報とを改竄検出実行部１０５へ出力する。
【０１５４】
改竄検出実行部１０５は、更新制御部１６２から検出開始命令と、ＡＰ識別情報とを受け取ると、改竄検出処理を行う（ステップＳ２４０）。
更新制御部１６２は、改竄検出実行部１０５から改竄検出処理の処理結果を受け取ると、受け取った処理結果が、改竄されていない通知であるか、改竄が検出された通知であるかを判断する（ステップＳ２４５）。
【０１５５】
改竄が検出されていない、つまり改竄されていない通知を受け取ったと判断する場合には（ステップＳ２４５における「ＮＯ」）、更新制御部１６２は、更新完了の通知を制御部１０２へ出力する。制御部１０２は、更新処理部１０３からファイルの更新完了の通知を受け取ると、表示部１０９を介して更新完了のメッセージを表示する（ステップＳ２５０）。
【０１５６】
更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し（ステップＳ２５５）、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する（ステップＳ２６０）。
改竄が検出された、つまり改竄が検出された通知を受け取ったと判断する場合には（ステップＳ２４５における「ＹＥＳ」）、更新制御部１６２は、更新失敗の通知を制御部１０２へ出力する。制御部１０２は、更新処理部１０３からファイルの更新失敗の通知を受け取ると、表示部１０９を介して、更新失敗のメッセージを表示する（ステップＳ２６５）。また、制御部１０２は、入力部１０８から再更新の指示を受け取ると、再更新開始命令を更新処理部１０３へ出力する。制御部１０２は、入力部１０８から再更新を行わない指示を受け取ると、更新終了命令を更新処理部１０３へ出力する。
【０１５７】
更新制御部１６２は、制御部１０２から再更新開始命令及び更新終了命令のうち何れかを受け取ると、受け取った命令が再更新開始命令か否かを判断する（ステップＳ２７０）。再更新開始命令である、つまり再更新を行うと判断する場合には（ステップＳ２７０における「ＹＥＳ」）、更新制御部１６２は、再度、ＡＰ識別情報を更新データ読取部１６３へ出力し、ステップＳ２００へ戻る。この場合、更新データ読取部１６３は、再度、更新データリストの受信を行う。
【０１５８】
更新制御部１６２は、受け取った命令が更新終了命令である、つまり再更新を行わないと判断する場合には（ステップＳ２７０における「ＮＯ」）、更新制御部１６２は、制御部１０２に対する割り込み禁止を解除し（ステップＳ２５５）、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する（ステップＳ２６０）。
１．８  ＡＰ起動時の動作
ここでは、ＡＰ起動時の動作について、図１４にて示す流れ図を用いて説明する。
【０１５９】
制御部１０２は、入力部１０８から改竄検出対象のＡＰの起動指示を受け取る（ステップＳ３００）。制御部１０２は、ＡＰの起動を行う。このとき、起動されたＡＰは、自ＡＰが改竄検出対象である場合には、検出開始命令と、自ＡＰを識別するＡＰ識別情報とを、制御部１０２により改竄検出実行部１０５へ出力する。
改竄検出実行部１０５は、制御部１０２から検出開始命令と、ＡＰ識別情報とを受け取ると、改竄検出処理を行う（ステップＳ３０５）。
【０１６０】
制御部１０２は、改竄検出実行部１０５から改竄検出処理の処理結果を受け取ると、受け取った処理結果が、改竄されていない通知であるか、改竄が検出された通知であるかを判断する（ステップＳ３１０）。
改竄が検出されていない、つまり改竄されていない通知を受け取ったと判断する場合には（ステップＳ３１０における「ＮＯ」）、制御部１０２は、起動指示のあったＡＰに係る動作を実行する（ステップＳ３１５）。
【０１６１】
改竄が検出された、つまり改竄が検出された通知を受け取ったと判断する場合には（ステップＳ３１０における「ＹＥＳ」）、制御部１０２は、起動指示のあったＡＰの動作を終了する（ステップＳ３２０）。
１．９  改竄検出処理の動作
ここでは、図１２のステップＳ２４０、及び図１４のステップＳ３０５のそれぞれにて示す改竄検出処理の動作について、図１５及び図１６にて示す流れ図を用いて説明する。
【０１６２】
検出制御部１７１は、制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかから検出開始命令とＡＰ識別情報とを受け取ると、受け取った検出開始命令とＡＰ識別情報とを改竄検出呼出部１７２へ出力する。
改竄検出呼出部１７２は、検出制御部１７１から検出開始命令とＡＰ識別情報とを受け取ると、記憶部１０１から受け取ったＡＰ識別情報に対応するハッシュリストを読み出す（ステップＳ４００）。
【０１６３】
改竄検出呼出部１７２は、読み出したハッシュリスト１２２と、受け取った検出開始命令及びＡＰ識別情報とを、改竄検出処理部１７３へ出力する。改竄検出処理部１７３は、改竄検出呼出部１７２からハッシュリスト１２２と、検出開始命令及びＡＰ識別情報とを受け取ると、改竄検出処理部１７３は、受け取ったＡＰ識別情報に対応する部分鍵１２３を、記憶部１０１から読み出す。改竄検出処理部１７３は、読み出した部分鍵１２３と、マスタ鍵１７６と、特定のアルゴリズムとを用いて改竄検出鍵を算出する（ステップＳ４０５）。
【０１６４】
改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、受け取ったハッシュリストのデータ部に対するハッシュ値を算出する（ステップＳ４１０）。改竄検出処理部１７３は、算出したハッシュ値と、ハッシュリストのヘッダ部に含まれるデータ部ハッシュ値とが一致するか否かを判断する（ステップＳ４１５）。
一致しないと判断する場合には（ステップＳ４１５における「ＮＯ」）、改竄検出処理部１７３は、改竄が検出された通知を検出制御部１７１へ出力する。検出制御部１７１は、改竄検出処理部１７３から改竄が検出された通知のうちいずれかを受け取る。検出制御部１７１は、受け取った通知を、呼出元（つまり、検出開始命令及びＡＰ識別情報の出力元）である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する（ステップＳ４２０）。
【０１６５】
一致すると判断する場合には（ステップＳ４１５における「ＹＥＳ」）、改竄検出処理部１７３は、改竄検出鍵を用いて、データ部１３１を復号する（ステップＳ４２５）。なお、復号には、データ部を暗号化したアルゴリズムに対応する復号アルゴリズムが用いられる。
改竄検出処理部１７３は、復号したデータ部から、未読のハッシュ情報を読み出す（ステップＳ４３０）。
【０１６６】
改竄検出処理部１７３は、読み出したハッシュ情報に含まれるファイル情報をファイル読込部１７４へ出力する。ファイル読込部１７４は、改竄検出処理部１７３からファイル情報を受け取ると、受け取ったファイル情報に含まれるファイル名に基づいて、改竄検出対象のファイルを記憶部１０１から読み出す（ステップＳ４３５）。
ファイル読込部１７４は、読み出したファイルをファイル記憶領域に格納し、ファイル読込完了命令を、改竄検出処理部１７３へ出力する。ファイル読込部１７４からファイルの読み込みが完了した旨を示すファイル読込完了命令を受け取る。
【０１６７】
改竄検出処理部１７３は、読み出したハッシュ情報から未読のエントリを取得し（ステップＳ４４０）、取得したエントリが最終エントリであるか否かを判断する（ステップＳ４４５）。
最終エントリでないと判断する場合には（ステップＳ４４５における「ＮＯ」）、改竄検出処理部１７３は、取得したエントリに含まれるオフセット及びサイズとを読み出し、読み出したオフセット及びサイズに基づいて、ファイル読込部１７４にて読み込まれたファイルから検出対象のブロックを取得する（ステップＳ４５０）。改竄検出処理部１７３は、算出した改竄検出鍵とハッシュ計算アルゴリズムとを用いて、取得したブロックに対する検出用ハッシュ値を算出する（ステップＳ４５５）。改竄検出処理部１７３は、算出した検出用ハッシュ値と取得したエントリに含まれるハッシュ値とが一致するか否かを判断する（ステップＳ４６０）。一致すると判断する場合には（ステップＳ４６０における「ＹＥＳ」）、改竄検出処理部１７３は、ステップＳ４４０へ戻る。一致しないと判断する場合には（ステップＳ４６０における「ＮＯ」）、ステップＳ４２０へ戻る。
【０１６８】
取得したエントリが最終エントリであると判断する場合には（ステップＳ４４５における「ＹＥＳ」）、改竄検出処理部１７３は、未読のハッシュ情報が存在するか否かを判断する（ステップＳ４６５）。存在すると判断する場合には（ステップＳ４６５における「ＹＥＳ」）、ステップＳ４３０へ戻る。存在しないと判断する場合には（ステップＳ４６５における「ＮＯ」）、改竄検出処理部１７３は、改竄されていない通知を検出制御部１７１へ出力する。検出制御部１７１は、改竄検出処理部１７３から改竄されていない通知を受け取る。検出制御部１７１は、受け取った通知を、呼出元（つまり、検出開始命令及びＡＰ識別情報の出力元）である制御部１０２若しくは更新処理部１０３の更新制御部１６２のいずれかへ出力する（ステップＳ４７０）。
【０１６９】
１．１０  携帯電話機１０の起動時の動作
携帯電話機１０の起動時における更新処理及び改竄検出処理の動作について説明する。
携帯電話機１０に電源が投入され、電源の供給が開始されると、更新制御部１６２は、フラグ記憶部１６１に記憶されているフラグの値をチェックする。
フラグの値が「０」である場合には、携帯電話機１０は、前回の更新処理は完了していると判断し、更新処理及び改竄検出処理は行わない。
【０１７０】
フラグの値が「１」である場合には、更新処理中の状態であると判断し、制御部１０２に対して割り込み禁止を設定する。更新制御部１６２は、更新処理の再開始を示す再開始命令を更新データ読取部１６３へ出力する。
更新データ読取部１６３は、更新制御部１６２から再開始命令を受け取ると、受け取った再開始命令を更新ファイル受取部１０４へ出力する。
【０１７１】
更新ファイル受取部１０４は、更新データ読取部１６３から再開始命令を受け取ると、ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在するか否かを判断する。存在すると判断する場合には、携帯電話機１０は、図１１にて示すステップＳ１１５以降の動作を行う。
ＡＰ識別情報記憶領域に格納されているＡＰ識別情報が存在しないと判断する場合には、更新ファイル受取部１０４は、リスト記憶領域に更新データリストが格納されているか否かを判断する。
【０１７２】
更新データリストが格納されていると判断する場合には、受信完了命令を更新処理部１０３へ出力する。更新処理部１０３の更新データ読取部１６３は、更新ファイル受取部１０４から受信完了命令を受け取る。更新処理部１０３は、図１２にて示すステップＳ２０５以降の動作を行う。
更新データリストが格納されていないと判断する場合には、再開始不要命令を更新データ読取部１６３へ出力する。更新データ読取部１６３は、再開始不要命令を受け取ると、受け取った再開始不要命令を更新制御部１６２へ出力する。更新制御部１６２は、更新データ読取部１６３から更新処理の再開始が不要である旨を示す再開始不要命令を受け取ると、制御部１０２に対する割り込み禁止を解除し、フラグ記憶部１６１に記憶されているフラグの値を「０」に設定する。
【０１７３】
２．検出鍵と各動作との関係
図１７は、本実施の形態で用いられる各鍵の関係と、鍵が利用される場面との関係を示す。
改竄検出鍵は、マスタ鍵、部分鍵、及び特定のアルゴリズムとを用いて算出される。この生成作業は、鍵更新装置３０の改竄検出鍵生成部３０２、及び図１５にて示すステップＳ４０５により携帯電話機１０にて行われる。
【０１７４】
生成された改竄検出鍵は、以下のようにハッシュリスト生成時、及びハッシュリストを用いた改竄検出処理時に用いられる。
（ハッシュリスト生成時）
改竄検出鍵は、検出対象のファイルにおける１以上のブロックそれぞれに対するハッシュ値を算出する場合に用いられる。具体的には、図１０にて示すステップＳ２０の動作に対応する。
【０１７５】
また、改竄検出鍵は、ハッシュリストのデータ部を暗号化する場合に用いられる。具体的には、図１０にて示すステップＳ２５の動作に対応する。
また、改竄検出鍵は、ハッシュリストのデータ部のハッシュ値（データ部ハッシュ値）を算出する場合に用いられる。算出されたハッシュ値はハッシュリストのヘッダ部に埋め込まれる。具体的には、図１０にて示すステップＳ３０の動作に対応する。
【０１７６】
（改竄検出処理時）
改竄検出鍵は、ハッシュリストのデータ部のハッシュ値を算出する場合に用いられる。具体的には、図１５にて示すステップＳ４１０の動作に対応する。このとき、携帯電話機１０は、算出されたハッシュ値と、あらかじめ埋め込まれたハッシュ値（データ部ハッシュ値）とを比較することで改竄の有無をチェックする。
【０１７７】
また、改竄検出鍵は、ハッシュリストのデータ部を復号する場合に用いられる。具体的には、図１５にて示すステップＳ４２５の動作に対応する。
また、改竄検出鍵は、検出対象のファイルにおける各ブロックのハッシュ値（検出用ハッシュ値）を算出場合に用いられる。具体的には、図１６にて示すステップＳ４５５の動作に対応する。このとき、携帯電話機１０は、算出された検出用ハッシュ値と、予め格納されているハッシュ値とを比較することで改竄の有無をチェックする。
【０１７８】
３．変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記第１の実施の形態では、改竄を検出する装置として携帯電話機を用いたが、これに限定されない。
【０１７９】
改竄を検出する装置は、通信機能を具備したＨＤＤレコーダ／ＤＶＤレコーダ、ゲーム機器、ＰＤＡのような機器であってもよい。つまり、更新サーバ装置とネットワーク等により接続可能な電子機器であればよい。
（２）ハッシュリストのデータ部の暗号化は、セキュリティ強度を考慮して、データ部１３１の暗号化単位はデータ部全体に共通鍵暗号方式における連鎖のような暗号アルゴリズムを適用してもよい。このときのハッシュリストの更新単位はハッシュリスト全体となる。
【０１８０】
（３）上記第１の実施の形態において、ハッシュリストの更新時に、改竄検出対象のファイルのサイズが増大して、更新前のＭＡＣ情報のエントリ数が増加した場合は、更新サーバ装置は、図１８にて示すハッシュリスト１２２ａを生成してもよい。図１８においてファイル情報１４０ａに対応するＭＡＣ情報１４１ａの最後のエントリは、ＭＡＣ情報１０００に含まれるエントリ１００１のアドレスを指すリンクエントリ１４４ａとなっている。通常のエントリと、リンクエントリとは、サイズ及びハッシュとが異なる。リンクエントリのそれぞれには、数値が格納されずに、「―」が格納される。これにより、通常のエントリとリンクエントリとを区別することができる。
【０１８１】
リンクエントリ１４４ａのオフセットには、エントリ１００１のアドレスを指す値として、ハッシュリスト内でのファイルからのオフセットが格納される。
このとき、ファイル情報１４０ａに含まれるブロック数１４２ａは、ＭＡＣ情報１４１ａとＭＡＣ情報１０００とにおいて、リンクエントリ１４４ａと、ＭＡＣ情報１０００の空エントリ１００２（最終エントリ）とを除いたエントリ数である“４”となっている。
【０１８２】
この場合のハッシュリストの生成方法の一例を以下に示す。
ハッシュリスト生成処理部２１２は、改竄検出鍵２１５を読み出す。そして、改竄検出鍵２１５を用いて、旧ハッシュリストのデータ部の復号を行い復号された旧ハッシュリストを生成する。以下復号された旧ハッシュリストを復号ハッシュリストという。
ハッシュリスト生成処理部２１２は、データ受取部２１１から受け取った１つ以上の更新ファイルに対して、所定のサイズに分割したブロック単位で、改竄検出処理部１７３と同一のハッシュ計算アルゴリズムを適用してハッシュ値を算出し、ターゲットパスリストから携帯電話機１０におけるファイルパスを読み取り、復号ハッシュリストと比較して、データ部が暗号化されていないハッシュリストを生成する。このとき、生成したハッシュリストのサイズが復号ハッシュリストよりも大きくなるようなファイルの更新であった場合は、ハッシュリスト生成処理部２１２は、生成したハッシュリストを、図１８に示すようなリンクエントリを用いたハッシュリストに変換する。
【０１８３】
（４）上記第１の実施の形態において、改竄検出実行部１０５の改竄検出処理部１７３とファイル読込部１７４とを個別の構成としたが、これに限定されない。
改竄検出処理部１７３とファイル読込部１７４とを１つの構成要素としてもよい。
（５）上記第１の実施の形態において、ファイルの更新時には、指定されたＡＰを含む検出対象情報群を更新の対象としたが、これに限定されない。
【０１８４】
１回の更新指示により、全ての検出対象情報群を更新の対象としてもよい。
（６）上記第１の実施の形態において、更新データリストのみを利用して、ＡＰに係るファイルを更新したが、これに限定されない。
更新サーバ装置は、携帯電話機へ、更新データリストとともに、更新対象となる１以上の更新ファイルを送信してもよい。このとき、送信される更新データリストには、ハッシュリストに係る更新情報のみから構成される。
【０１８５】
（７）上記第１の実施の形態において、検出対象のファイルは、予め決められたサイズのブロック単位で分割されたが、これに限定されない。
更新サーバ装置は、ユーザの操作により入力値として、分割されるブロックのサイズを受け付ける構成であってもよい。これにより、ブロックのサイズを柔軟に設定できる。
（８）上記第１の実施の形態において、更新サーバ装置は、データ部ハッシュ値の算出を、データ部の暗号化後に行ったが、これに限定されない。
【０１８６】
更新サーバ装置は、データ部の暗号化の前に、データ部ハッシュ値の算出を行ってもよい。
このとき、改竄検出の実行時には、データ部の復号後に、データ部に対するハッシュ値を算出し、ハッシュリスト自体の改竄検出を行うことになる。
（９）上記第１の実施の形態において、ハッシュリストのデータ部の暗号化に用いられる鍵と、ハッシュ計算に用いられる鍵とは、同一の鍵（改竄検出鍵）としたが、同一でなくてもよい。
【０１８７】
（１０）上記第１の実施の形態において、更新データリストは、ハッシュリストの更新内容とともに、更新ファイルの更新内容、及び更新された部分鍵を含めるとしたが、これに限定されない。
更新データリストは、ハッシュリスト用の更新データリスト、更新ファイル用の更新データリスト、及び部分鍵用の更新データリストに分けてもよい。
【０１８８】
（１１）上記第１の実施の形態において、ハッシュリストの更新は、携帯電話機を使用する使用者の要求によるものとしたが、更新サーバ装置からの強制アップデートであってもよい。
例えば、鍵更新装置で、更新サーバ装置に新たな改竄検出鍵が埋め込まれた場合には、更新サーバ装置は、更新された部分鍵を携帯電話機に送付するため、更新データリストを生成し、生成した更新データリストを、直ちに、携帯電話機へ送信する。
【０１８９】
（１２）上記第１の実施の形態において、他の携帯電話機は、携帯電話機１０と同一のマスタ鍵を有してもよいし、異なるマスタ鍵を有してもよい。
携帯電話機間で異なるマスタ鍵を有する場合には、鍵更新装置は、複数のマスタ鍵を管理しており、更新された部分鍵から算出される改竄検出鍵も異なるため、更新サーバ装置においても複数の改竄検出鍵を管理することとなる。
【０１９０】
（１３）上記第１の実施の形態にて示すハッシュリストを、図１９にて示すハッシュリスト１２２ｂとしてもよい。図１９に示すハッシュリスト１２２ｂは、ヘッダ部１３０ｂにハッシュリストの版数を示すハッシュリストバージョン番号１０１０を有する。
この場合、携帯電話機は、更新サーバ装置に更新要求情報を送信するとき、ハッシュリストバージョン番号１０１０をも送信する。
【０１９１】
更新サーバ装置は、生成したハッシュリストのハッシュリストバージョン番号毎に更新データリストを管理しておき、携帯電話機から受信したハッシュリストバージョン番号１０１０に応じた更新データリストを携帯電話機へ送信する。
（１４）上記第１の実施の形態において、改竄検出処理は、ハッシュリストに含まれるＭＡＣ情報が有する全てのエントリを用いて、改竄検出を行ったがこれに限定されない。
【０１９２】
より速度の求められる場合では、各ＭＡＣ情報において、オフセットが０番のエントリのみをチェックするような手順であってもよい。また、ファイル情報のブロック数を読み込み、その半分のブロック数をチェックするような手順であってもよい。
つまり、改竄検出処理は、各ＭＡＣ情報において、１つ以上のエントリをチェックするような手順であればよい。
【０１９３】
（１５）上記第１の実施の形態において、改竄検出の実行は、ハッシュリストの更新時、及び検出対象のＡＰの起動時としたが、これに限定されない。
改竄検出の実行は、携帯電話機の起動中に行ってもよいし、検出対象のＡＰを実行しているときに、バックグラウンドで実行してもよい。
または、携帯電話機は、当該携帯電話機の起動中に、定期的に改竄検出を実行してもよいし、検出対象のＡＰが起動している間に、起動しているＡＰに対する改竄検出を定期的に実行してもよい。
【０１９４】
（１６）図１５にて示すステップＳ４２５において、携帯電話機は、データ部全体を復号しているが、これに限定されない。
携帯電話機は、ＭＡＣ情報の１エントリ毎に復号を行うような構成であってもよい。
このとき、携帯電話機は、図１５にて示すステップＳ４１５を実行後、ステップＳ４２５を省略し、ステップＳ４３０からステップＳ４４０までを実行する。このとき、読み出したエントリは暗号化されている。携帯電話機は、その後、読み出したエントリを復号し、ステップＳ４４５以降を行う。または、携帯電話機は、図１５にて示すステップＳ４１５を実行後、ステップＳ４２５を省略し、ステップＳ４３０からステップＳ４４５までを実行し、その後、復号してもよい。
【０１９５】
（１７）上記第１の実施の形態において、ハッシュリストの更新時に、改竄検出対象のファイルのサイズが小さくなった場合には、不要となるエントリに含まれるサイズを「０」に設定する。
図２０に、ファイルのブロック数が「８」から「７」に減少した場合の一例を示す。
この場合、更新前であるハッシュ情報１０２０において、８番目のブロックのエントリ１０２１に含まれるサイズは１２０が格納されている。ファイルの更新により、ブロック数が「８」から「７」に減少すると、８番目のブロックのエントリ１０３１に含まれるサイズを「０」として、ハッシュ情報１０３０が生成される。このとき、エントリ１０３１も更新の対象となることは言うまでもない。
【０１９６】
改竄検出を実行する際には、携帯電話機は、エントリに含まれるサイズが「０」である場合には、そのエントリを無視、そのエントリに対する改竄のチェックは行わない。
なお、エントリ１０３１に含まれるハッシュ値は、更新前の値としているが、ハッシュ値を“０”にしてもよい。
これによると、携帯電話機は、サイズに格納される値を、当該サイズを含むエントリが改竄検出の対象であるか否かを判断する判断情報として用いることができる。つまり、値が「０」であると改竄検出の対象でないと判断し、「０」以外の値である場合には改竄検出の対象であると判断することができる。
【０１９７】
（１８）２つの携帯電話機（ここでは、携帯電話機１１、１２とする）において、携帯電話機１１が機能Ａ（例えば、オーディオデータの再生機能）を含む第１ＡＰと、機能Ｂ（例えば、コンテンツを暗号化しＳＤカードに格納するＳＤ−Ｂｉｎｄｉｎｇ機能）を含む第２ＡＰとを具備し、携帯電話機１２が機能Ａ及び機能Ｂの双方を含む統合ＡＰを具備する場合、上記の第１の実施の形態にて示すように、ＡＰ毎に異なるハッシュリストが与えられてもよいし、以下に示すように１つのハッシュリストが与えられてもよい。
【０１９８】
図２１に、第１ＡＰ、第２ＡＰ、及び統合ＡＰに対して与えられた１つのハッシュリスト１２２ｃのデータ構成の一例を示す。なお、ヘッダ部１３０ｃのデータ構成は、第１の実施の形態にて示すハッシュリスト１２２のヘッダ部１３０のデータ構成と同様であるため、ここでの説明は省略する。
第１の実施の形態にて示すハッシュリスト１２２と異なる点は、ファイル情報に種別が追加されている点である。種別は、改竄検出の実行時に使用するハッシュ情報を識別するためのものであり、例えば、数値１、２、・・・、及びＡＬＬからなる。種別にＡＬＬが設定されると、ハッシュリストに含まれる全てのハッシュ情報が検出に用いられることを示し、数値が設定されると、設定された種別（数値）を含むファイル情報を有するハッシュ情報が検出の対象となる。
【０１９９】
この場合、各ＡＰ（第１ＡＰ、第２ＡＰ、及び統合ＡＰ）は、自身の種別を記憶しており、起動時に記憶している種別を改竄検出実行部へ渡す。ここで、第１ＡＰ、第２ＡＰ、及び統合ＡＰのそれぞれには、種別１、２、ＡＬＬが設定されているものとする。
携帯電話機１１において、第１ＡＰが起動されると、図２１に示すように、種別「１」を含むファイル情報１０４０を有するハッシュ情報１３４ｃが、改竄検出の対象となる。
【０２００】
また、携帯電話機１１において、第２ＡＰが起動されると、種別「２」を含むファイル情報１０４１を有するハッシュ情報１３５ｃが、改竄検出の対象となる。
携帯電話機１２において、統合ＡＰが起動されると、統合ＡＰは種別「ＡＬＬ」を記憶しているので、データ部１３１ｃに含まれる全てのハッシュ情報が、改竄検出の対象となる。
【０２０１】
（１９）上記第１の実施の形態にて示すハッシュリストにおいて改竄検出の対象のとなる少なくとも１つ以上のファイルを優先的に改竄検出を実行する優先度を設けてもよい。このとき、例えば、優先的に改竄検出されるファイルに対しては、ＡＰの起動時に改竄検出が実行され、他の改竄検出対象のファイルに対しては、ＡＰの起動が完了し、ＡＰが有する機能の動作中にバックグラウンドで改竄検出が実行される。
【０２０２】
図２２に、優先度を用いたハッシュリスト１２２ｄのデータ構成の一例を示す。なお、ヘッダ部１３０ｄのデータ構成は、第１の実施の形態にて示すハッシュリスト１２２のヘッダ部１３０のデータ構成と同様であるため、ここでの説明は省略する。
第１の実施の形態にて示すハッシュリスト１２２と異なる点は、データ部１３１ｄに第１オフセット１０５０と第２オフセット１０５１とからなる組みが追加されている点である。
【０２０３】
第１オフセットは、優先的に改竄検出を行うハッシュ情報の先頭位置を示すオフセット値であり、第２オフセットは、優先的に改竄検出を行うハッシュ情報の最終位置を示すオフセット値である。
例えば、第１オフセットにハッシュ情報１３４ｄの先頭位置を示すオフセット値が格納され、第２オフセットにハッシュ情報１３４ｄの最終位置を示すオフセット値が格納されている場合には、ファイル名「ｆｉｌｅ＿１」であるファイルに対する改竄検出は、ＡＰ起動時に行われ、他のファイルに対する改竄検出は、動作中にバックグラウンドで行われる。
【０２０４】
また、第１オフセットにハッシュ情報１３４ｄの先頭位置を示すオフセット値が格納され、第２オフセットにハッシュ情報１３６ｄの最終位置を示すオフセット値が格納されている場合には、ファイル名「ｆｉｌｅ＿１」であるファイル及びファイル名「ｆｉｌｅ＿２」であるファイルそれぞれに対する改竄検出は、ＡＰ起動時に行われ、他のファイルに対する改竄検出は、動作中にバックグラウンドで行われる。
【０２０５】
（２０）上記第１の実施の形態において、１つのＡＰファイル群、つまり１つのＡＰに対して、１つのハッシュリストが与えられたが、これに限定されない。
１以上のＡＰファイル群に対して、１つのハッシュリスト及び部分鍵を与えてもよい。
この場合における記憶部１０１構成を図２３に示す。
図２３において、記憶部１０１は１つの検出対象情報群１２００を有している。
【０２０６】
検出対象情報群１２００は、１以上のＡＰファイル群１０６０、１０６１、・・・、１０６２と、ハッシュリスト１２２ｅと、部分鍵１２３ｅとを有している。
ハッシュリスト１２２ｅのデータ部には、ＡＰファイル群１０６０、１０６１、・・・、１０６２のそれぞれに含まれる各ファイルに対するハッシュ情報が含まれている。
検出対象情報群１２００に含まれる１のＡＰが起動された場合、携帯電話機は、検出対象情報群１２００に含まれる全てのファイルを改竄検出対象としてもよいし、起動されたＡＰに係る１以上のファイルのみを改竄検出の対象としてもよい。
【０２０７】
（２１）上記第１の実施の形態において、携帯電話機１０の電源投入時に、更新制御部１６２は、フラグの値のチェックを行い、フラグの値が「１」である場合には、ファイルの更新を自動的に行ったが、これに限定されない。
携帯電話機１０は、更新制御部１６２がフラグの値が「１」であると判断する場合には、ファイルの更新を再度行うか否かを通知し、ユーザから再度更新を行うとの指示を受け取った場合にファイルの更新を再度行ってもよい。
【０２０８】
または、ファイルの更新を自動的に行う場合において、再度更新を行う旨をユーザに通知してもよい。
または、携帯電話機１０の電源投入時に、更新制御部１６２は、フラグの値のチェックを行い、フラグの値が「１」である場合には、未更新のデータのみに対して更新を行ってもよい。つまり、携帯電話機１０は、更新処理の途中（電源が落とされたときに動作していた時点）から更新の動作を行ってもよい。
【０２０９】
（２２）上記第１の実施の形態において、ハッシュリストのデータ部は暗号化されているとしたが、これに限定されない。
データ部は暗号化しなくてもよい。
（２３）本発明におけるアプリケーションファイルとは、アプリケーションソフトウェアそのものや、アプリケーションソフトウェアから呼び出されるエンコーダ、デコーダ、ドライバ、アプリケーションソフトウェアが動作する環境を提供するＪａｖａ（登録商標）ＶＭのような仮想実行環境などである。また、アプリケーションファイルの概念に、部分鍵を含めてもよい。
【０２１０】
（２４）上記第１の実施の形態において、鍵更新装置は、外部装置から更新された部分鍵を取得するとしたが、これに限定されない。
鍵更新装置にて新たな部分鍵を生成して取得してもよい。
また、マスタ鍵は、鍵更新装置で記憶しておいてもよいし、外部装置から取得してもよい。
【０２１１】
（２５）上記第１の実施の形態において、更新データリストに含まれる更新データは、更新すべき情報であるファイルのうち更新対象となる１以上のブロック、ハッシュリストにおけるハッシュリストファイルサイズ、データ部ハッシュ値、ファイル情報、ＭＡＣ情報に含まれるエントリなどが記録されているとしたが、これに限定されない。
更新すべき情報であるファイルのうち更新対象となる１以上のブロックを更新データとして記録する代わりに、アプリケーションソフトウェアを実行するための命令文などのような更新されたデータのみを記録してもよい。
【０２１２】
また、更新対象となるブロックを、本願発明の「データ」の概念に含めてもよい。
（２６）上記第１の実施の形態において、改竄検出用の値（改竄検出値）として、ハッシュ値を用いて改竄の検出を行ったが、これに限定されない。
ハッシュ値とは異なる値、データを用いてもよい。例えば、検証対象のデータを暗号化した結果等を改竄検出値として用いることができる。
【０２１３】
（２７）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０２１４】
（２８）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２１５】
ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２１６】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
（２９）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０２１７】
（３０）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２１８】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０２１９】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（３１）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
４．まとめ
本発明によれば、プログラム更新可能な電子機器においても実現可能な改竄検出方式の提供が可能となる。また、更新時の更新箇所を最小限にとどめ、更新時にかかる通信コストをおさえることができる。さらに電子機器の持つスペックに応じて、実行時の速度チューニングが可能な改竄検出方式の提供が可能となる。
【０２２０】
また、改竄検出時に必要な鍵の生成に必要な情報を、更新サーバとは別の場所で管理することが可能であるため、万が一その鍵が漏洩しても鍵の発行および電子機器の鍵の更新が可能な改竄検出方式の提供が可能となる。
【産業上の利用可能性】
【０２２１】
上記にて示したプログラム更新システムを構成する各装置は、電器機器製造産業において、経営的、つまり反復的かつ継続的に利用されうる。
また、本発明にかかるプログラム更新可能な電子機器における改竄検出方式は、セキュアなプログラムの実行を必要とする携帯電話をはじめとした組み込み機器がプログラムの更新機能を備えている場合に有用である。
【図面の簡単な説明】
【０２２２】
【図１】プログラム更新システム１の概要を示す図である。
【図２】携帯電話機１０の構成を示すブロック図である。
【図３】ハッシュリスト１２２のデータ構造の一例を示す図である。
【図４】更新データリスト１５０のデータ構造の一例を示す図である。
【図５】更新処理部１０３の構成を示すブロック図である。
【図６】改竄検出実行部１０５構成を示すブロック図である。
【図７】更新サーバ装置２０の構成を示すブロック図である。
【図８】ハッシュリスト生成部２０３の構成を示すブロック図である。
【図９】鍵更新装置３０の構成を示すブロック図である。
【図１０】更新サーバ装置２０にて行われる更新データリスト、及びハッシュリストの生成の動作を示す流れ図である。
【図１１】ハッシュリスト更新時の動作概要を示す流れ図である。
【図１２】携帯電話機１０にて行われる更新処理の動作を示す流れ図である。図１３へ続く。
【図１３】携帯電話機１０にて行われる更新処理の動作を示す流れ図である。図１２から続く。
【図１４】携帯電話機１０にて行われるＡＰ起動時の動作を示す流れ図である。
【図１５】携帯電話機１０にて行われる改竄検出処理の動作を示す流れ図である。図１６へ続く。
【図１６】携帯電話機１０にて行われる改竄検出処理の動作を示す流れ図である。図１５から続く。
【図１７】第１の実施の形態で用いられる各鍵の関係と、鍵が利用される場面との関係を示す図である。
【図１８】ハッシュリスト１２２ａのデータ構造の一例を示す図である。
【図１９】ハッシュリスト１２２ｂのデータ構造の一例を示す図である。
【図２０】ファイルのブロック数が「８」から「７」に減少した場合のハッシュ情報１０３０の一例を示す。
【図２１】ハッシュリスト１２２ｃのデータ構造の一例を示す図である。
【図２２】ハッシュリスト１２２ｄのデータ構造の一例を示す図である。
【図２３】１以上のＡＰファイル群に対して、１つのハッシュリスト及び部分鍵を与える場合における記憶部１０１構成を示すブロック図である。
【符号の説明】
【０２２３】
１    プログラム更新システム
１０    携帯電話機
２０    更新サーバ装置
３０    鍵更新装置
４０    携帯網
５０    インターネット
１０１    記憶部
１０２    制御部
１０３    更新処理部
１０４    更新ファイル受取部
１０５    改竄検出実行部
１０６    マイク
１０７    スピーカ
１０８    入力部
１０９    表示部
１１０    無線部
１１１    アンテナ
１６１    フラグ記憶部
１６２    更新制御部
１６３    更新データ読取部
１６４    更新データ解析部
１６５    書込位置決定部
１６６    更新データ書込部
１６７    更新確認部
１７１    検出制御部
１７２    改竄検出呼出部
１７３    改竄検出処理部
１７４    ファイル読込部
１７５    マスタ鍵記憶部
１７６    マスタ鍵
２０１    記憶部
２０２    データ取得部
２０３    ハッシュリスト生成部
２０４    ハッシュリスト書込部
２０５    更新要求処理部
２０６    入力部
２０７    送受信部
２１０    改竄検出鍵記憶部
２１１    データ受取部
２１２    ハッシュリスト生成処理部
２１３    暗号化処理部
２１４    更新データリスト生成部
２１５    改竄検出鍵
３０１    鍵取得部
３０２    改竄検出鍵生成部
３０３    改竄検出鍵配布部
３０４    出力部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2006129654.tif 000025
【図２】
2006129654.tif 000026
【図３】
2006129654.tif 000027
【図４】
2006129654.tif 000028
【図５】
2006129654.tif 000029
【図６】
2006129654.tif 000030
【図７】
2006129654.tif 000031
【図８】
2006129654.tif 000032
【図９】
2006129654.tif 000033
【図１０】
2006129654.tif 000034
【図１１】
2006129654.tif 000035
【図１２】
2006129654.tif 000036
【図１３】
2006129654.tif 000037
【図１４】
2006129654.tif 000038
【図１５】
2006129654.tif 000039
【図１６】
2006129654.tif 000040
【図１７】
2006129654.tif 000041
【図１８】
2006129654.tif 000042
【図１９】
2006129654.tif 000043
【図２０】
2006129654.tif 000044
【図２１】
2006129654.tif 000045
【図２２】
2006129654.tif 000046
【図２３】
2006129654.tif 000047
【国際調査報告】
2006129654.tif 000048
2006129654.tif 000049
2006129654.tif 000050
2006129654.tif 000051
2006129654.tif 000052