(57)【要約】【課題】改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に（演算量を少なく）、かつ正確に検出できるシステムを提供する。【解決手段】アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておく。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。【選択図】図１
2010102579.tif 000002
【特許請求の範囲】
【請求項１】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブルと、
ハッシュ値を、情報格納部に設けられたハッシュテーブルに登録するハッシュ登録部と、を備え、
前記ハッシュ登録部は、
新規のアプリケーションをインストールする際、この新規のアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記新規のアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記新規のアプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記新規のアプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ登録部は、前記新規のアプリケーション全体のハッシュ値を前記ハッシュテーブルに登録することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ハッシュ領域テーブルは、前記ハッシュ領域情報として、複数のアプリケーションそれぞれの識別子と、前記複数のアプリケーションのバイナリイメージのそれぞれについてハッシュを取る領域の数と、ハッシュを取る各領域の開始位置及び終了位置と、を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記ハッシュテーブルは、アプリケーションの識別子と、このアプリケーションに付随するハッシュ値のサイズと、前記ハッシュ値と、を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
さらに、前記ハッシュ登録部が前記ハッシュテーブルに前記ハッシュ値を登録する際に、前記情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備え、
前記ハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズを含み、
前記セキュア領域管理情報は、前記情報格納部におけるセキュア領域空間の空き情報を管理するための情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブルと、
アプリケーションを実行する際、このアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記実行すべきアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
情報格納部に設けられ、アプリケーションにおける前記ハッシュ領域のハッシュ値を登録したハッシュテーブルから、前記実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部と、
前記ハッシュ計算部によって計算されたハッシュ値と前記ハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部と、
前記ハッシュ比較部による比較結果に基づいて、前記アプリケーションを実行するか否か判断する実行判断部と、
を備えることを特徴とする情報処理装置。
【請求項７】
前記アプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記アプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ比較部は、前記アプリケーション全体のハッシュ値と、前記ハッシュテーブルから読み出された前記アプリケーション全体のハッシュ値とを比較することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記ハッシュ読み出し部は、前記情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズの情報に基づいて、前記アプリケーションのハッシュ値を前記ハッシュテーブルから読み出すことを特徴とする請求項６に記載の情報処理装置。
【請求項９】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブル（更新前ハッシュ領域テーブル）と、
新規のハッシュ領域情報を受け取る受信部と、
前記新規のハッシュ領域情報を前記更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備え、
前記ハッシュ領域テーブル更新部は、
前記更新前ハッシュ領域テーブルに前記新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部と、
前記判断部で同一のアプリケーションが含まれる場合に、前記更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部と、
を備えることを特徴とする情報処理装置。
【請求項１０】
さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、前記更新後ハッシュ領域テーブルに前記更新フラグが立っているか否かを判断する更新フラグ判定部と、
実行すべき前記アプリケーションに対して前記更新フラグが立っている場合に、前記実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部と、
前記ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部内にハッシュテーブルを作成するハッシュテーブル作成部と、
を備えることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記ハッシュテーブル作成部は、前記情報格納部のセキュアな空き領域に前記ハッシュテーブルを作成することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
さらに、前記ハッシュテーブルを記録した前記情報格納部の位置及び前記ハッシュテーブルのサイズの情報を含むハッシュ管理情報と、前記情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、前記更新前ハッシュテーブルを無効にする管理情報更新部を備えることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
コンピュータを請求項１に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項１４】
コンピュータを請求項６に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項１５】
コンピュータを請求項９に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及びコンピュータプログラムに関し、例えば、改ざんされた実行可能ファイルが実行されるのを防ぐためのデータの検証に関するものである。
【背景技術】
【０００２】
コンピュータがウィルスやトロイの木馬に感染し、インストールされている実行可能なファイルが、ユーザの知らぬ間に改ざんされてしまうことがある。ユーザがファイルの改ざんに気付かずに、改ざんされたファイルを実行してしまうと、データの流出や、二次感染等の被害が広がってしまう。そこで、ファイルの改ざんを実行前に検出し、ファイルの実行を止めることで、被害の拡大を防ぐことが必要である。
【０００３】
実行可能なファイルの改ざんを検出する方法として、例えば特許文献１に示されるような方法がある。つまり、携帯端末用のアプリケーションを携帯端末にインストールする際に、アプリケーションのハッシュ値を計算し、機密性、秘匿性の高いICチップのメモリに記録する。携帯端末は該アプリケーションを実行する際に、該アプリケーションのハッシュ値を計算し、アプリケーションの利用要求と共にハッシュ値をICチップへ送信する。これに応答して、ICチップは受信した要求に対応するハッシュ値をメモリから読み出し、受信したハッシュ値と照合し、一致する場合、該アプリケーションを利用可能とする。
【０００４】
また、例えば、特許文献２のような方法もある。つまり、複数の部分イメージハッシュを生成し、その組み合わせが実行可能ファイル全体のダイジェストを表す。コンピューティングデバイス上での実行可能ファイルのロードに続いて、実行のために実行可能ファイルの一部をメモリへページングする要求がインターセプトされる。要求のインターセプトに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードインテグリティーが決定される。
【０００５】
さらに、例えば、特許文献３には、再生用コンテンツを対象として改ざん検出の方法が提案されている。つまり、ＤＶＤに記録されている暗号化コンテンツを構成する複数の暗号化ユニットのうち、ランダムに選択した所定個数の暗号化ユニットのみを検証に用いることで、検証の処理に係る負荷を軽減し、検証の度にランダムに所定個数の暗号化ユニットを選択することで、不正なコンテンツの検出の精度をある程度高めることができる。
【０００６】
【特許文献１】特開２００６−１５４９９７号公報
【特許文献２】特開２００６−２０２２７０号公報
【特許文献３】特開２００８−１７６８１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１及び２による方法では、アプリケーション全体に対して改ざんの有無を検査するため、何れの方法も改ざん検出のための演算量が多くなり、処理に時間がかかるという問題がある。
【０００８】
また、特許文献３によるランダムに選んだ所定の場所を検証する方法では、検証時に改ざんされた領域が検証すべき領域として選択されなければ、改ざんを検出できない可能性が高い。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に（演算量を少なく）、かつ正確に検出できる手段を提供するものである。
【課題を解決するための手段】
【００１０】
１）上記課題を解決するために、本発明者は、アプリケーションの改ざんを検出する目的がデータの流出防止やウィルスの二次感染防止等である場合、改ざんを防がなければならない領域はアプリケーションのバイナリイメージのうちの一部である場合が多いことに着目した。
【００１１】
そして、この着目に基づいて、本発明では、アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておくようにしている。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。
【００１２】
２）即ち、本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブルと、新規のアプリケーションをインストールする際、この新規のアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部（ハッシュ領域テーブル暗復号部）と、ハッシュ領域情報に基づいて、新規のアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部（ハッシュ値計算部）と、計算して得られたハッシュ値を、情報格納部（ＨＤＤ）に設けられたハッシュテーブルに登録するハッシュ登録部（ハッシュ計算用ミドルウェアを構成するＣＰＵ或いはＭＰＵ）と、を備えている。
【００１３】
新規のアプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、新規のアプリケーションの全体についてハッシュ値を計算する。そして、ハッシュ登録部は、新規のアプリケーション全体のハッシュ値をハッシュテーブルに登録する。
【００１４】
本発明による情報処理装置は、さらに、ハッシュ登録部がハッシュテーブルにハッシュ値を登録する際に、情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備えている。なお、このハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズを含み、セキュア領域管理情報は、情報格納部におけるセキュア領域空間の空き情報を管理するための情報である。
【００１５】
３）別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブルと、アプリケーションを実行する際、このアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応するハッシュ領域情報を取得するハッシュ領域情報取得部（ハッシュ領域テーブル暗復号部）と、ハッシュ領域情報に基づいて、実行すべきアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部（ハッシュ値計算部）と、情報格納部（ＨＤＤ）に設けられ、アプリケーションにおけるハッシュ領域のハッシュ値を登録したハッシュテーブルから、実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部（ハッシュ計算用ミドルウェアを構成するＣＰＵ或いはＭＰＵ）と、ハッシュ計算部によって計算されたハッシュ値とハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部（ハッシュ値比較部）と、ハッシュ比較部による比較結果に基づいて、アプリケーションを実行するか否か判断する実行判断部（アプリケーション実行判断部）と、を備える。
【００１６】
アプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、アプリケーションの全体についてハッシュ値を計算し、ハッシュ比較部は、アプリケーション全体のハッシュ値と、ハッシュテーブルから読み出されたアプリケーション全体のハッシュ値とを比較する。
【００１７】
ハッシュ読み出し部は、情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズの情報に基づいて、アプリケーションのハッシュ値をハッシュテーブルから読み出す。
【００１８】
４）さらに別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブル（更新前ハッシュ領域テーブル）と、新規のハッシュ領域情報を受け取る受信部（上位アプリケーション）と、更新前ハッシュ領域テーブルに新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部（ＩＤ検索部）と、判断部で同一のアプリケーションが含まれると判断された場合に、更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部（ハッシュ計算用ミドルウェアを構成するＣＰＵ或いはＭＰＵ）と、新規のハッシュ領域情報を更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備える。
【００１９】
情報処理装置は、さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、更新後ハッシュ領域テーブルに更新フラグが立っているか否かを判断する更新フラグ判定部（ハッシュ計算用ミドルウェアを構成するＣＰＵ或いはＭＰＵ）と、実行すべきアプリケーションに対して更新フラグが立っている場合に、実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部（ハッシュ値計算部）と、ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部（ＨＤＤ）内にハッシュテーブルを作成するハッシュテーブル作成部（ハッシュ計算用ミドルウェアを構成するＣＰＵ或いはＭＰＵ）と、を備える。ここで、ハッシュテーブル作成部は、情報格納部のセキュアな空き領域にハッシュテーブルを作成する。ことを特徴とする請求項１０に記載の情報処理装置。
【００２０】
情報処理装置は、さらに、ハッシュテーブルを記録した情報格納部の位置及びハッシュテーブルのサイズの情報を含むハッシュ管理情報と、情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、更新前ハッシュテーブルを無効にする管理情報更新部を備える。
【００２１】
５）なお、本発明は、コンピュータを上述の情報処理装置として機能させるためのコンピュータプログラムも提供するものである。
【００２２】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００２３】
本発明によれば、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に（演算量を少なく）、かつ正確に検出できるようになる。
【発明を実施するための最良の形態】
【００２４】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００２５】
（１）第１の実施形態
＜情報処理システムの構成＞
図1は、本発明の第１の実施形態による情報処理システムの機能構成を示す図である。図中の矢印は、それぞれ、インストール時（実線)、実行時（二点鎖線）、ハッシュ領域テーブル更新時（点線）のデータの流れを表す。
【００２６】
情報処理システムは、情報処理端末００１と、記録媒体（情報格納部）０１９と、を備えている。
情報処理端末（ホストコンピュータ）００１は、例えばＰＣ、ＰＤＡ、ＴＶ、携帯電話等のデジタル機器であり、不揮発領域００２とハッシュ計算用ミドルウェア０１７と、上位アプリケーション０１８と、を備えている。
【００２７】
不揮発領域００２は、例えばフラッシュメモリ等の不揮発媒体である。不揮発領域に記録されている公開鍵００３は、図示していないサーバが発行する更新用ハッシュ領域テーブルの暗号化に使った秘密鍵に対応している。不揮発領域００２に記録されている暗号化ハッシュ領域テーブル００４は、鍵生成部００５において生成した鍵を用いて暗号化された、ハッシュ領域テーブルである。ハッシュ領域テーブルは、例えば、工場出荷時や、ハッシュ計算用ミドルウェアインストール時に、暗号化された状態で情報処理端末００１の不揮発領域００２に記録される。ハッシュ領域テーブルには、利用が想定されるアプリケーションが予め登録されており、他のアプリケーション情報を追加する場合は、後述するハッシュテーブルの更新を行う。
【００２８】
ハッシュ領域テーブルの構造は、例えば図２に示されるようになっている。ハッシュ領域テーブルは、実行可能なアプリケーションファイルのファイル名であるアプリケーションＩＤと、該アプリケーションに対し、ハッシュを取る領域の数、前記ハッシュを取る領域の開始位置と終了位置から構成される。ハッシュを取る領域とは、アプリケーションのバイナリイメージにおいて、その領域を改ざんされた場合、アプリケーション実行時にユーザに被害をもたらすような領域である。例えば、データの送受信処理を含む領域や、データ生成や保存処理を含む領域等である。ハッシュを取る領域は、例えばアプリケーション提供元によって指定される。また、該領域は、一つのアプリケーションに対し、複数個所あっても良い。
【００２９】
ハッシュ計算用ミドルウェア０１７は、情報処理端末００１の図示しないＣＰＵ或いはＭＰＵの機能の１つとして実現されるものであり、鍵生成部００５と、ハッシュ領域テーブル暗復号部００６と、ＩＤ検索部００８と、管理情報更新部００９と、更新用テーブル復号部０１０と、ハッシュ値計算部０１１と、ハッシュ値比較部０１２と、更新実行判断部０１３と、ハッシュ領域テーブル更新部０１４と、アプリケーション実行判断部０１５と、ハッシュ実行判断部０１６と、を備えている。
【００３０】
鍵生成部００５は、例えば熱雑音を基に疑似乱数を作成する疑似乱数発生機であり、予め定められた長さの疑似乱数を生成し、テーブル鍵としてハッシュ領域テーブル暗復号部００６に提供する。
【００３１】
ハッシュ領域テーブル暗復号部００６は、ＡＥＳ等の共通鍵暗号方式に基づいて、ハッシュ領域テーブルを暗号化したり、暗号化されたハッシュ領域テーブルを復号化したりする。なお、ハッシュ領域テーブル暗復号部００６は、不揮発領域００２に対して読み書きが可能なインタフェースを保持している。
【００３２】
テーブル鍵００７は、前回ハッシュ領域テーブルを暗号化するのに利用した鍵であり、ハッシュ領域テーブルの復号時に利用する。なお、テーブル鍵００７は、ハッシュ領域テーブルが更新されるタイミング等で、鍵生成部００５で再生成しても良い。テーブル鍵００７は、ハッシュ計算用ミドルウェアが保持する図示していない鍵により暗号化された状態で不揮発領域００２に記録されており、ハッシュ計算用ミドルウェアの起動と共に復号されて、メモリ上に展開される。
【００３３】
ＩＤ検索部００８は、アプリケーションのインストール時および実行時に、これからインストールまたは実行しようとしているアプリケーションの実行形式ファイルのファイル名（以下アプリケーションＩＤ）が、ハッシュ領域テーブル暗復号部００６によって復号されたハッシュ領域テーブルに登録されているか否かを確認する。該当アプリケーションＩＤが登録されていた場合は、ＩＤ検索部００８は、ハッシュ値計算部０１１に該アプリケーションのハッシュを取る領域数、ハッシュを取る領域の開始位置と終了位置を送信する。
【００３４】
ハッシュ値計算部０１１は、ＩＤ検索部００８より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する。ハッシングアルゴリズムは任意であり、例えばＳＨＡ−１およびＭＤ５等が含まれる。ＩＤ検索部００８より情報を取得していない場合は、ハッシュ値計算部０１１は、該当アプリケーション全体に対してハッシュ値を計算する。
【００３５】
ハッシュ値計算部０１１にて計算されたハッシュ値は、記録媒体０１９のセキュア領域０２０に記録される。記録媒体０１９のセキュア領域に記録するハッシュ値は、例えば、図３のような構造（以下ハッシュテーブル０２２）となっている。ハッシュテーブル０２２は、アプリケーションＩＤと、該アプリケーションのハッシュデータ全体のサイズと、各領域のハッシュサイズ、及びハッシュ値から構成される。また、ハッシュ値計算部０１１は、新しいハッシュ領域テーブルが外部から提供された場合（例えば、サーバから送信されてきたり、ユーザがインストールしたりする場合）に、新しいハッシュ領域テーブルのハッシュ値を計算する。
【００３６】
管理情報更新部００９は、ハッシュ値を記録媒体０１９のセキュア領域０２０に記録する際に、ハッシュ管理情報０２３およびセキュア領域管理情報０２４を更新する。ハッシュ管理情報０２３およびセキュア領域管理情報０２４の詳細は後述（図４参照）する。
【００３７】
ハッシュ値比較部０１２は、ハッシュ値計算部０１１で計算したアプリケーションのハッシュ値と、記録媒体０１９内のハッシュテーブル０２２に格納されている該当アプリケーションのインストール時に計算したハッシュ値とを比較する。また、新しいハッシュ領域テーブルがハッシュ値とともに外部から提供された場合に、当該予め提供された情報内にあるハッシュ値と、ハッシュ領域テーブルからハッシュ値計算部０１１が算出したハッシュ値とを比較する。
【００３８】
アプリケーション実行判断部０１５は、アプリケーション実行時のハッシュ値比較部０１２の結果を受けて、アプリケーションを実行するか否か判断する。ハッシュ値比較部０１２で比較した結果、ハッシュ値が一致した場合、アプリケーションを実行する。ハッシュ値が一致していなければアプリケーションの実行を中止する。
【００３９】
更新実行判断部０１３は、ハッシュテーブル更新時のハッシュ値比較部０１２の結果を受けて、ハッシュ領域テーブルを更新するか否か判断する。ハッシュ値比較部０１２で比較した結果、ハッシュ値が一致した場合、ハッシュ領域テーブル更新部０１４において、ハッシュ領域テーブル暗復号部００６より取得したハッシュ領域テーブルに、更新用ハッシュ領域テーブルの情報を反映させる。ハッシュ値が一致していなければハッシュ領域テーブルの更新を中止する。
【００４０】
ハッシュ実行判断部０１６は、記憶媒体０１９から読み出した実行可能なアプリケーションファイル０２１が、ハッシュ計算用ミドルウェア０１７で処理（アプリケーションファイルが真正か否かを判断する処理）する必要があるかどうかを判断する。例えば、ハッシュ計算用ミドルウェア０１７の処理が不必要なアプリケーションのリストをハッシュ計算用ミドルウェア０１７が保持しており、記録媒体０１９から実行可能なアプリケーション０２１を読み出した際、実行可能なアプリケーション０２１のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア０１７での処理が必要かどうかを判断する。
【００４１】
ハッシュ計算用ミドルウェア０１７は、本発明を実現する一連の処理を搭載したミドルウェアである。本ミドルウェアをＰＣのようなシステムに実装する際は、ライブラリ形式で提供し、本ミドルウェアと他アプリケーションやデバイス間のアクセスは、アプリケーションインタフェース（以下ＡＰＩ）経由で行う。また、本ミドルウェアをライブラリ形式で提供する代わりに、本ミドルウェアの機能を搭載したＩＣをシステムに実装してもよい。
【００４２】
上位アプリケーション０１８は、ハッシュ計算用ミドルウェア０１７のＡＰＩを利用する全てのソフトウェアである。
【００４３】
記録媒体０１９は、例えばハードディスクドライブ（以下ＨＤＤ）である。記録媒体０１９は端末内蔵型でも、取り外し可能な可搬型でも良い。
【００４４】
記録媒体０１９内に設けられたセキュア領域０２０は、該領域に記録されているデータの読み出しや、該領域へのデータの書き込みが、制限されている領域である。セキュア領域０２０には、例えば、ユーザが制限なしでアクセスできる論理アドレス空間とは別に、アクセスに制限のある論理アドレス（セキュア論理アドレス）が設定され、アクセス制限が掛けられている。なお、記録媒体０１９に関しては、ハッシュ計算用ミドルウェア０１７が実装されている端末００１との間で認証が実行され、認証が成功して初めて、該端末００１からのセキュア領域０２０に対するデータの読み出し、書き込み命令を受け付けることができるようになっている。前述のようなセキュア領域の実現方法は、ＳＡＦＩＡ規格に基づいて実現可能であり、既にｉＶＤＲ（Information Versatile Disk for Removable usage：登録商標）に実装されている。
【００４５】
図４は、ハッシュ管理情報０２３の構成例を示す図である。ハッシュ管理情報０２３は、アプリケーションＩＤと、ハッシュ値計算部０１１で計算したハッシュ値を記録したセキュア論理アドレスの先頭アドレスと、該ハッシュ値のサイズで構成される。ハッシュ値のサイズの単位は、例えばＨＤＤの場合はセクタ数で表す等、そのシステムに接続する記録媒体によって変わって良い。ハッシュ管理情報０２３は、記録媒体０１９の予め定められた領域に記録されている。
【００４６】
ハッシュ計算用ミドルウェア０１７と記録媒体間０１９での認証が成功すると、ハッシュ計算用ミドルウェア０１７は、該セキュア論理アドレスを指定し、ハッシュ管理情報０２３を読み出す。
【００４７】
セキュア領域管理情報０２４は、セキュア領域０２０の空き情報を管理するテーブルである。セキュア領域管理情報０２４は、該情報を構成する１ｂｉｔが１つのセキュア論理アドレスに対応しており、ｂｉｔの値が０（または１）の場合、そのｂｉｔに対応するセキュア論理アドレスにデータが記録されていることを表し、ｂｉｔの値が１（または０）の場合、そのｂｉｔに対応するセキュア論理アドレスにデータが記録されていないことを表す。セキュア領域管理情報０２４は、記録媒体０１９の予め定められた領域に記録されているとする。ハッシュ計算用ミドルウェア０１７と記録媒体０１９間での認証が成功すると、ハッシュ計算用ミドルウェア０１７は、該領域からセキュア領域管理情報０２４を読み出す。
【００４８】
実行可能なアプリケーションファイル０２１は、実行形式のファイルである。ハッシュ計算用ミドルウェア０１７が起動する前に実行されるアプリケーション、例えばＷｉｎｄｏｗｓ（登録商標）サービスのようなアプリケーションは、これに含まない。
【００４９】
＜アプリケーションインストール時の処理＞
図５は、第１の実施形態における、アプリケーションを情報処理端末００１にインストールする際のハッシュ計算用ミドルウェア０１７の処理を説明するためのフローチャートである。
【００５０】
はじめに、ハッシュ計算用ミドルウェア０１７を搭載した情報処理端末００１（ＣＰＵ或いはＭＰＵ）は、該端末に接続された記録媒体０１９について認証処理を行う（ステップＳ５０１）。認証が失敗すると、ハッシュ計算用ミドルウェア０１７（ハードウェア的にはＣＰＵ或いはＭＰＵ）は、エラー処理（例えば、エラー表示）を行う（ステップＳ５１２）。認証が成功すると、ハッシュ計算用ミドルウェア０１７は、セキュア領域０２０から、ハッシュ管理情報０２３とセキュア領域管理情報０２４を読み出す（ステップＳ５０３）。
【００５１】
ハッシュ計算用ミドルウェア０１７が上位アプリケーション０１８から新規アプリケーションのインストール命令を受けると、ハッシュ領域テーブル暗復号部００６は、不揮発領域００２より暗号化ハッシュ領域テーブル００４を読み出し、暗号化ハッシュ領域テーブル００４を復号する（ステップＳ５０４）。このとき、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する（ステップＳ５０５）。復号の成功を確認する方法は、例えば次のような方法がある。ハッシュ領域テーブルの予め定められた位置に「Ｈａｓｈ  Ｔａｂｌｅ」という文字をＡＳＣＩＩコードで入れておき、復号後、同一の場所に「Ｈａｓｈ  Ｔａｂｌｅ」というＡＳＣＩＩコードがあるか否かを確認する。「Ｈａｓｈ  Ｔａｂｌｅ」というＡＳＣＩＩコードがあった場合、復号成功とする。一方、復号が失敗した場合は、ハッシュ計算用ミドルウェア０１７は、エラーを表示し、処理を中断する（ステップＳ５１２）。
【００５２】
ステップＳ５０５において復号が成功したと判断された場合、ＩＤ検索部００８は、上位アプリケーション０１８から取得したアプリケーションＩＤと同じアプリケーションＩＤがハッシュ領域テーブルに登録されているか否か確認する（ステップＳ５０６）。
【００５３】
ハッシュ領域テーブル内に該当アプリケーションＩＤがなかった場合は、ハッシュ値計算部０１１は、アプリケーション全体のハッシュ値を計算する（ステップＳ５０９）。ハッシュ領域テーブル内に該当アプリケーションＩＤが登録されていた場合は、ハッシュ値計算部０１１は、ＩＤ検索部００８より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する（ステップＳ５０８）。
【００５４】
ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ値計算部０１１にて計算されたハッシュ値を、ハッシュテーブル０２２として、記録媒体０１９のセキュア領域０２０に格納する（ステップＳ５１０）。
【００５５】
ハッシュテーブルが記録媒体０１９に格納された後、管理情報更新部００９は、ハッシュ管理情報０２３及びセキュア領域管理情報０２４を更新し、記録媒体０１９に記録する（ステップＳ５１１）。
【００５６】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア０１７と記録媒体間０１９での認証、ハッシュ管理情報０２３、セキュア領域管理情報０２４の読み出し、暗号化ハッシュ領域テーブル００４の復号処理が既に済んでいた場合、これらの処理は省略される。
【００５７】
＜アプリケーション実行時の処理＞
図６は、第１の実施形態における、アプリケーションを実行する際のハッシュ計算用ミドルウェア０１７の処理を説明するためのフローチャートである。
【００５８】
はじめに、ハッシュ計算用ミドルウェア０１７を搭載した情報処理端末００１（ＣＰＵ或いはＭＰＵ）は、該端末に接続された記録媒体間０１９について認証処理を実行する（ステップＳ６０１）。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う（ステップＳ６１４）。認証に成功すると、ハッシュ実行判断部０１６は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア０１７で処理（改ざん検出処理）する必要があるファイルかどうかを判断する（ステップＳ６０３）。例えば、ハッシュ計算用ミドルウェア０１７が、改ざん検出処理（ハッシュ処理）が不必要なアプリケーションのリストを保持しており、記録媒体０１９から実行可能なアプリケーション０２１を読み出した際、該実行可能なアプリケーション０２１のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア０１７での処理が必要かどうかを判断する。
【００５９】
ステップＳ６０３でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア０１７は、セキュア領域０２０からハッシュ管理情報０２３を読み出す（ステップＳ６０４）。
【００６０】
ハッシュ計算用ミドルウェア０１７が上位アプリケーション０１８からアプリケーションの実行命令を受けると、ハッシュ領域テーブル暗復号部００６は、不揮発領域００２から暗号化ハッシュ領域テーブル００４を読み出し、暗号化ハッシュ領域テーブルを復号する（ステップＳ６０５）。そして、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する（ステップＳ６０６）。復号の成功を確認する方法は、上述のステップＳ５０５と同様である。ハッシュ領域テーブルの復号が失敗していた場合には、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、エラー処理を実行する（ステップＳ６１４）。
【００６１】
ステップＳ６０６で復号が成功したと判断された場合は、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、上位アプリケーション０１８から指定されたアプリケーションファイルを記録媒体０１９から読み出し、また、それに対応するハッシュテーブルを、先に読み出したハッシュ管理情報を基に、記録媒体０１９から読み出す（ステップＳ６０７）。
【００６２】
次に、ＩＤ検索部００８は、ステップＳ６０５で復号して得られたハッシュ領域テーブルを検索し、上位アプリケーション０１８より取得した現在実行しようとしているアプリケーションに対応するアプリケーションＩＤがあるかどうか確認する（ステップＳ６０８）。
【００６３】
ハッシュ領域テーブル内に該当アプリケーションＩＤがなかった場合は、ハッシュ値計算部０１１は、アプリケーション全体のハッシュ値を計算する（ステップＳ６１１）。一方、ハッシュ領域テーブル内に該当アプリケーションＩＤが登録されていた場合は、ハッシュ値計算部０１１は、ＩＤ検索部００８より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する（ステップＳ６１０）。
【００６４】
そして、ハッシュ値比較部０１２は、ハッシュテーブル０２２内のハッシュ値と先ほど計算したハッシュ値を比較する（ステップＳ６１１）。その比較の結果、ハッシュ値が一致した場合は、該アプリケーションを実行するための処理が続行される。ハッシュ値が異なっていた場合は、アプリケーション実行判断部０１５は、実行しようとしているアプリケーションが改ざんされている可能性があるため、実行を中止する（ステップＳ６１３）。
【００６５】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア０１７と記録媒体０１９間での認証、ハッシュ管理情報０２３の読み出し、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【００６６】
＜ハッシュ領域テーブルの更新処理＞
図７は、第１の実施形態における、ハッシュ領域テーブルを更新する際のハッシュ計算用ミドルウェア０１７の処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【００６７】
まず、ハッシュ計算用ミドルウェア０１７が、上位アプリケーション０１８から、更新用ハッシュ領域テーブルを受け取る（ステップＳ７０３）。そして、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、該更新用ハッシュ領域テーブルの署名を検証する（ステップＳ７０４）。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【００６８】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア０１７が保持する公開鍵００３で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする（ステップＳ７０５）。
【００６９】
検証が失敗した場合、ハッシュ計算用ミドルウェア０１７はエラーを返し、ハッシュ領域テーブルの更新を中止する（ステップＳ７１４）。認証が成功した場合、ハッシュ領域テーブル暗復号部００６は、不揮発領域００２から暗号化ハッシュ領域テーブルを読み出して復号する（ステップＳ７０６）。そして、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ領域テーブルの復号が成功したか否かについて確認する（ステップＳ７０７）。確認方法は、図６のステップＳ６０６と同様である。
【００７０】
復号が失敗した場合、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、エラーを表示し、処理を中断する（ステップＳ７１４）。
【００７１】
暗号化ハッシュ領域テーブル００４の復号が成功した場合、ＩＤ検索部００８は、追記しようとしているハッシュ領域テーブル内にあるアプリケーションＩＤと同一のＩＤが、既存のハッシュ領域テーブルにあるか否か確認する（ステップＳ７０８）。同一のアプリケーションＩＤがあった場合、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、該アプリケーションＩＤの更新フラグの欄にフラグを立てる（ステップＳ７０９）。フラグは１ｂｉｔのデータで、フラグの値が１（または０）の時、データ更新有、フラグの値が０（または１）の時、データ更新無を意味するものとする。同一のアプリケーションＩＤが既存のハッシュ領域テーブルに無かった場合には、処理はステップＳ７１０に移行する。
【００７２】
次に、ハッシュ領域テーブル更新部０１４は、取得した更新用ハッシュ領域テーブルを既存のハッシュ領域テーブルに反映する（ステップＳ７１０）。そして、鍵生成部００５は、新規のハッシュ領域テーブルを基に新たにテーブル鍵００７を生成する（ステップＳ７１１）。
【００７３】
ハッシュ領域テーブル暗復号部００６は、新規のテーブル鍵００７で、新規のハッシュ領域テーブルを暗号化し（ステップＳ７１２）、不揮発領域００２に記録する（ステップＳ７１３）。新たに生成したテーブル鍵００７は、ハッシュ計算用ミドルウェア０１７が予め保持する鍵を用いて暗号化された後、不揮発領域００２に記録される。
【００７４】
尚、上記処理の開始時点で、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【００７５】
＜ハッシュ領域テーブル更新後の処理＞
図８は、第１の実施形態における、ハッシュ領域テーブルを更新後はじめてハッシュ領域テーブルの更新箇所に対応するアプリケーションを実行する場合の処理を説明するためのフローチャートである。
【００７６】
まず、アプリケーション実行処理（図６）が行われる（ステップＳ８０１）。そして、ハッシュ計算用ミドルウェア０１７は、アプリケーション実行時に、ハッシュ領域テーブルの該アプリケーションに対応する領域に、更新フラグが立っているか確認する（ステップＳ８０２）。この更新フラグは、ステップＳ７０９において付与されたものである。フラグが無ければ、処理は終了する。
【００７７】
更新フラグが立っていた場合、ＩＤ検索部００８は、ハッシュ領域テーブルに、同一のアプリケーションＩＤを持つ更新用の情報が登録されているか否か確認する（ステップＳ８０３）。
【００７８】
更新フラグが立っていたにも拘わらず、同一のアプリケーションＩＤの登録が無い場合は、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、エラー処理を実行する（ステップＳ８０７）。
【００７９】
同一のアプリケーションＩＤがあった場合、ハッシュ値計算部０１１は、該アプリケーションＩＤに付随する更新用の情報を基に該アプリケーションのハッシュ値を再計算し、新たなハッシュテーブル０２２を作成する（ステップＳ８０４）。
【００８０】
そして、管理情報更新部００９は、新たなハッシュテーブルを、セキュア領域管理情報から取得した記録媒体の空き領域のアドレスに記録する。その際、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ管理情報に新たなハッシュテーブル０２２の記録先を追記すると同時に、更新前のハッシュテーブルの情報をハッシュ管理情報から削除する（ステップＳ８０５）。
【００８１】
さらに、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ領域テーブルから、更新フラグの立っている更新前の該アプリケーションの情報を削除する（ステップＳ８０６）。この際、セキュア領域管理情報内の更新前のハッシュ領域テーブルを用いて計算した、該アプリケーションのハッシュテーブルが記録されている領域に対応するｂｉｔ（フラグ）も無効にされる。
【００８２】
この第１の実施形態では、ハッシュ領域テーブルを暗号化しているため、悪意ある第三者がハッシュ領域テーブルを改ざんしたり、ハッシュを取る領域を見たりすることができない。よって、第三者がハッシュを取る領域以外の場所を改ざんしようとした場合、成功する確率が低くなる。
【００８３】
（２）第２の実施形態
＜情報処理システムの構成＞
図９は、本発明の第２の実施形態による情報処理システムの概略構成を示す図である。図１と同じ参照番号の機能ブロックは、第１の実施形態と同じ機能を有するものである。第１の実施形態では、不揮発領域００２にハッシュ領域テーブルを記録する際、ハッシュ領域テーブルを暗号化していたが、その代わりに次のような方法を用いる。
【００８４】
即ち、図９において、不揮発領域００２にハッシュ領域テーブルを記録する際、ハッシュ計算用ミドルウェア０１７のハッシュ領域テーブルハッシュ値計算部０７４は、ハッシュ領域テーブル全体のハッシュ値を計算する。そして、ハッシュ暗復号部０７３は、ハッシュ領域テーブルのハッシュ値を、鍵生成部００５において生成したハッシュ鍵０７２で暗号化した上で、暗号化ハッシュ値０７１として不揮発媒体００２に記録する。ハッシュ鍵０７２は、不揮発領域００２内または記録媒体０１９内の予め定められた領域へ記録される。
【００８５】
次回、ハッシュ値暗復号部０７３は、ハッシュ領域テーブルおよび暗号化ハッシュ値を不揮発領域００２から読み出すと、暗号化ハッシュ値をハッシュ鍵０７２で復号し、復号結果をハッシュ領域テーブル検証部０７５に提供する。ハッシュ領域テーブル検証部０７５は、ハッシュ領域デーブル０７０のハッシュ値と、暗号化ハッシュ値０７１を復号して得たハッシュ値を比較し、同値の場合、検証成功と判断する。検証が成功した場合は、該ハッシュテーブルを用いて、処理が続行される。検証が失敗した場合は、ハッシュ領域テーブルが改ざんされたと見なし、エラーが表示され、以降の処理が中断される。
【００８６】
なお、その他の機能ブロックについては、第１の実施形態と同様なので、説明は省略する。
【００８７】
＜アプリケーションインストール時の処理＞
図１０は、第２の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア０１７がアプリケーションのインストール処理時に実行する処理を説明するためのフローチャートである。
【００８８】
まず、ハッシュ計算用ミドルウェア０１７を搭載した情報処理端末００１（ＣＰＵ或いはＭＰＵ）は、該端末に接続された記録媒体０１９について認証処理を行う（ステップＳ１００１及びＳ１００２）。認証が失敗すると、ハッシュ計算用ミドルウェア０１７（ハードウェア的にはＣＰＵ或いはＭＰＵ）は、エラー処理（例えば、エラー表示）を行う（ステップＳ１００６）。認証が成功すると、ハッシュ計算用ミドルウェア０１７は、セキュア領域０２０から、ハッシュ管理情報０２３とセキュア領域管理情報０２４を読み出す（ステップＳ１００３）。
【００８９】
そして、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）が上位アプリケーション０１８から新規アプリケーションのインストール命令を受けると、ハッシュ暗復号部０７３は、不揮発領域００２より暗号化ハッシュ値０７１及びハッシュ領域テーブル０７０を読み出し、暗号化ハッシュ値０７１を復号する（ステップＳ１００４）。続いて、ハッシュ領域テーブル検証部０７５は、復号したハッシュ値とハッシュ領域テーブル０７０を検証する（ステップＳ１００５）。検証方法は上述のとおりである。検証が成功した場合は、図５のフローＳ５０６以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する（ステップＳ１００６）。
【００９０】
＜アプリケーション実行時の処理＞
図１１は、第２の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア０１７がアプリケーションの実行時に行う処理を説明するためのフローチャートである。
【００９１】
まず、ハッシュ計算用ミドルウェア０１７を搭載した情報処理端末００１（ＣＰＵ或いはＭＰＵ）は、該端末に接続された記録媒体間０１９について認証処理を実行する（ステップＳ１１０１及びＳ１１０２）。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う（ステップＳ１１０７）。認証に成功すると、ハッシュ実行判断部０１６は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア０１７で処理（改ざん検出処理）する必要があるファイルかどうかを判断する（ステップＳ１１０３）。例えば、ハッシュ計算用ミドルウェア０１７が、改ざん検出処理（ハッシュ処理）が不必要なアプリケーションのリストを保持しており、記録媒体０１９から実行可能なアプリケーション０２１を読み出した際、該実行可能なアプリケーション０２１のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア０１７での処理が必要かどうかを判断する。
【００９２】
ステップＳ１１０３でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア０１７は、セキュア領域０２０からハッシュ管理情報０２３を読み出す（ステップＳ１１０４）。
【００９３】
その後、ハッシュ計算用ミドルウェア０１７が上位アプリケーション０１８から新規アプリケーションの実行命令を受けると、ハッシュ暗復号部０７３は、不揮発領域００２より暗号化ハッシュ値０７１、ハッシュ領域テーブル０７０を読み出し、暗号化ハッシュ値０７１を復号する（ステップＳ１１０５）。続いて、ハッシュ領域テーブル検証部０７５は、復号したハッシュ値とハッシュ領域テーブル０７０を検証する（ステップＳ１１０６）。検証が成功した場合は、図６のステップＳ６０７以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＰＵ）は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する（ステップＳ１１０７）。
【００９４】
＜ハッシュ領域テーブルの更新処理＞
図１２は、第２の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア０１７がハッシュ領域テーブルを更新する際に行う処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【００９５】
まず、ハッシュ計算用ミドルウェア０１７を搭載した情報処理端末００１と記録媒体０１９間での認証処理が実行され（ステップＳ１２０１）、認証が成功したか否かが判断される（ステップＳ１２０２）。
【００９６】
認証に失敗すると、エラー処理が実行される（ステップＳ１２０８）。一方、認証に成功すると、ハッシュ計算用ミドルウェア０１７が、上位アプリケーション０１８から、更新用ハッシュ領域テーブルを受け取る（ステップＳ１２０３）。そして、ハッシュ計算用ミドルウェア０１７（ＣＰＵ或いはＭＯＵ）は、該更新用ハッシュ領域テーブルの署名を検証する（ステップＳ１２０４）。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【００９７】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア０１７が保持する公開鍵００３で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする（ステップＳ１２０５）。
【００９８】
検証が失敗した場合、ハッシュ計算用ミドルウェア０１７はエラーを返し、ハッシュ領域テーブルの更新を中止する（ステップＳ１２０８）。
【００９９】
認証が成功した場合、ハッシュ暗復号部０７３は、不揮発領域００２より暗号化ハッシュ値０７１及びハッシュ領域テーブル０７０を読み出し、暗号化ハッシュ値０７１を復号する（ステップＳ１２０６）。続いて、ハッシュ領域テーブル検証部０７５は、復号したハッシュ値とハッシュ領域テーブル０７０を検証する（ステップＳ１２０７）。検証が成功した場合、図７のステップＳ７０８以下と同じ処理が実行される。検証が失敗した場合は、エラーが表示され、処理が中断する（ステップＳ１２０８）。
【０１００】
なお、ハッシュ領域テーブル更新後の処理（図８）は、第２の実施形態でも適用される。この第２の実施形態の方法によれば、ハッシュ領域テーブルの改ざんを正確にかつ効率的に検出することができる。また、ハッシュ領域テーブルは更新できるようになっているので、状況の変化にも対応することが可能となる。
【０１０１】
（３）まとめ
上記各実施形態では、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域（ハッシュ領域）の情報をリストアップしているハッシュ領域テーブルを用いて、新規のアプリケーションをインストール時、及びアプリケーションファイルの実行時に、リストアップされている部分のみのハッシュ値を計算し、そのハッシュ値を改ざんの検出に用いている。このようにすることにより、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを正確にかつ効率的に検出することができるようになる。なお、テーブルにリストアップされていないアプリケーションの場合には、アプリケーション全体についてハッシュ値を算出するようにしているので、改ざん検出処理には漏れがない。
【０１０２】
また、アプリケーションについて予め取得して記録媒体０１９（ＨＤＤ）に格納しておくハッシュ値は、記録媒体のセキュア領域に格納されるので、比較元のハッシュ値が改ざんされる危険性も少なくなる。
【０１０３】
さらに、本実施形態では、ハッシュ領域テーブルは更新できるようになっているので、状況の変化に応じて臨機応変に改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを検出できるようになっている。
【０１０４】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１０５】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【０１０６】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【０１０７】
【図１】本発明の第１の実施形態による情報処理システムの機能構成を示す図である。
【図２】ハッシュ領域テーブルの例を示す図である。
【図３】ハッシュテーブルの例を示す図である。
【図４】ハッシュ管理情報の例を示す図である。
【図５】第１の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図６】第１の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図７】第１の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【図８】第１の実施形態による、ハッシュ領域テーブル更新後、更新部分に該当するアプリケーションを実行する際の処理を説明するためのフローチャートである。
【図９】本発明の第２の実施形態による情報処理システムの機能構成を示す図である。
【図１０】第２の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図１１】第２の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図１２】第２の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【符号の説明】
【０１０８】
００１：情報処理端末、００２：不揮発領域、００３：公開鍵、００４：暗号化ハッシュ領域テーブル、００５：鍵生成部、００６：ハッシュ領域テーブル暗復号部、００７：テーブル鍵、００８：ＩＤ検索部、００９：管理情報更新部、０１０：更新用テーブル復号部、０１１：ハッシュ値計算部、０１２：ハッシュ値比較部、０１３：更新実行判断部、０１４：ハッシュ領域テーブル更新部、０１５：アプリケーション実行判断部、０１６：ハッシュ実行判断部、０１７：ハッシュ計算用ミドルウェア、０１８：上位アプリケーション、０１９：記録媒体、０２０：セキュア領域、０２１：実行可能なアプリケーション、０２２：ハッシュテーブル、０２３：ハッシュ管理情報、０２４：セキュア領域管理情報
【図１】
2010102579.tif 000003
【図２】
2010102579.tif 000004
【図３】
2010102579.tif 000005
【図４】
2010102579.tif 000006
【図５】
2010102579.tif 000007
【図６】
2010102579.tif 000008
【図７】
2010102579.tif 000009
【図８】
2010102579.tif 000010
【図９】
2010102579.tif 000011
【図１０】
2010102579.tif 000012
【図１１】
2010102579.tif 000013
【図１２】
2010102579.tif 000014