情報処理装置、及びコンピュータプログラム
【課題】改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に(演算量を少なく)、かつ正確に検出できるシステムを提供する。
【解決手段】アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておく。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。
【解決手段】アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておく。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及びコンピュータプログラムに関し、例えば、改ざんされた実行可能ファイルが実行されるのを防ぐためのデータの検証に関するものである。
【背景技術】
【0002】
コンピュータがウィルスやトロイの木馬に感染し、インストールされている実行可能なファイルが、ユーザの知らぬ間に改ざんされてしまうことがある。ユーザがファイルの改ざんに気付かずに、改ざんされたファイルを実行してしまうと、データの流出や、二次感染等の被害が広がってしまう。そこで、ファイルの改ざんを実行前に検出し、ファイルの実行を止めることで、被害の拡大を防ぐことが必要である。
【0003】
実行可能なファイルの改ざんを検出する方法として、例えば特許文献1に示されるような方法がある。つまり、携帯端末用のアプリケーションを携帯端末にインストールする際に、アプリケーションのハッシュ値を計算し、機密性、秘匿性の高いICチップのメモリに記録する。携帯端末は該アプリケーションを実行する際に、該アプリケーションのハッシュ値を計算し、アプリケーションの利用要求と共にハッシュ値をICチップへ送信する。これに応答して、ICチップは受信した要求に対応するハッシュ値をメモリから読み出し、受信したハッシュ値と照合し、一致する場合、該アプリケーションを利用可能とする。
【0004】
また、例えば、特許文献2のような方法もある。つまり、複数の部分イメージハッシュを生成し、その組み合わせが実行可能ファイル全体のダイジェストを表す。コンピューティングデバイス上での実行可能ファイルのロードに続いて、実行のために実行可能ファイルの一部をメモリへページングする要求がインターセプトされる。要求のインターセプトに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードインテグリティーが決定される。
【0005】
さらに、例えば、特許文献3には、再生用コンテンツを対象として改ざん検出の方法が提案されている。つまり、DVDに記録されている暗号化コンテンツを構成する複数の暗号化ユニットのうち、ランダムに選択した所定個数の暗号化ユニットのみを検証に用いることで、検証の処理に係る負荷を軽減し、検証の度にランダムに所定個数の暗号化ユニットを選択することで、不正なコンテンツの検出の精度をある程度高めることができる。
【0006】
【特許文献1】特開2006−154997号公報
【特許文献2】特開2006−202270号公報
【特許文献3】特開2008−176814号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1及び2による方法では、アプリケーション全体に対して改ざんの有無を検査するため、何れの方法も改ざん検出のための演算量が多くなり、処理に時間がかかるという問題がある。
【0008】
また、特許文献3によるランダムに選んだ所定の場所を検証する方法では、検証時に改ざんされた領域が検証すべき領域として選択されなければ、改ざんを検出できない可能性が高い。
【0009】
本発明はこのような状況に鑑みてなされたものであり、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に(演算量を少なく)、かつ正確に検出できる手段を提供するものである。
【課題を解決するための手段】
【0010】
1)上記課題を解決するために、本発明者は、アプリケーションの改ざんを検出する目的がデータの流出防止やウィルスの二次感染防止等である場合、改ざんを防がなければならない領域はアプリケーションのバイナリイメージのうちの一部である場合が多いことに着目した。
【0011】
そして、この着目に基づいて、本発明では、アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておくようにしている。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。
【0012】
2)即ち、本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、新規のアプリケーションをインストールする際、この新規のアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部(ハッシュ領域テーブル暗復号部)と、ハッシュ領域情報に基づいて、新規のアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、計算して得られたハッシュ値を、情報格納部(HDD)に設けられたハッシュテーブルに登録するハッシュ登録部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、を備えている。
【0013】
新規のアプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、新規のアプリケーションの全体についてハッシュ値を計算する。そして、ハッシュ登録部は、新規のアプリケーション全体のハッシュ値をハッシュテーブルに登録する。
【0014】
本発明による情報処理装置は、さらに、ハッシュ登録部がハッシュテーブルにハッシュ値を登録する際に、情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備えている。なお、このハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズを含み、セキュア領域管理情報は、情報格納部におけるセキュア領域空間の空き情報を管理するための情報である。
【0015】
3)別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、アプリケーションを実行する際、このアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応するハッシュ領域情報を取得するハッシュ領域情報取得部(ハッシュ領域テーブル暗復号部)と、ハッシュ領域情報に基づいて、実行すべきアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、情報格納部(HDD)に設けられ、アプリケーションにおけるハッシュ領域のハッシュ値を登録したハッシュテーブルから、実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、ハッシュ計算部によって計算されたハッシュ値とハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部(ハッシュ値比較部)と、ハッシュ比較部による比較結果に基づいて、アプリケーションを実行するか否か判断する実行判断部(アプリケーション実行判断部)と、を備える。
【0016】
アプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、アプリケーションの全体についてハッシュ値を計算し、ハッシュ比較部は、アプリケーション全体のハッシュ値と、ハッシュテーブルから読み出されたアプリケーション全体のハッシュ値とを比較する。
【0017】
ハッシュ読み出し部は、情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズの情報に基づいて、アプリケーションのハッシュ値をハッシュテーブルから読み出す。
【0018】
4)さらに別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブル(更新前ハッシュ領域テーブル)と、新規のハッシュ領域情報を受け取る受信部(上位アプリケーション)と、更新前ハッシュ領域テーブルに新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部(ID検索部)と、判断部で同一のアプリケーションが含まれると判断された場合に、更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、新規のハッシュ領域情報を更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備える。
【0019】
情報処理装置は、さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、更新後ハッシュ領域テーブルに更新フラグが立っているか否かを判断する更新フラグ判定部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、実行すべきアプリケーションに対して更新フラグが立っている場合に、実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部(HDD)内にハッシュテーブルを作成するハッシュテーブル作成部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、を備える。ここで、ハッシュテーブル作成部は、情報格納部のセキュアな空き領域にハッシュテーブルを作成する。ことを特徴とする請求項10に記載の情報処理装置。
【0020】
情報処理装置は、さらに、ハッシュテーブルを記録した情報格納部の位置及びハッシュテーブルのサイズの情報を含むハッシュ管理情報と、情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、更新前ハッシュテーブルを無効にする管理情報更新部を備える。
【0021】
5)なお、本発明は、コンピュータを上述の情報処理装置として機能させるためのコンピュータプログラムも提供するものである。
【0022】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【0023】
本発明によれば、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に(演算量を少なく)、かつ正確に検出できるようになる。
【発明を実施するための最良の形態】
【0024】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【0025】
(1)第1の実施形態
<情報処理システムの構成>
図1は、本発明の第1の実施形態による情報処理システムの機能構成を示す図である。図中の矢印は、それぞれ、インストール時(実線)、実行時(二点鎖線)、ハッシュ領域テーブル更新時(点線)のデータの流れを表す。
【0026】
情報処理システムは、情報処理端末001と、記録媒体(情報格納部)019と、を備えている。
情報処理端末(ホストコンピュータ)001は、例えばPC、PDA、TV、携帯電話等のデジタル機器であり、不揮発領域002とハッシュ計算用ミドルウェア017と、上位アプリケーション018と、を備えている。
【0027】
不揮発領域002は、例えばフラッシュメモリ等の不揮発媒体である。不揮発領域に記録されている公開鍵003は、図示していないサーバが発行する更新用ハッシュ領域テーブルの暗号化に使った秘密鍵に対応している。不揮発領域002に記録されている暗号化ハッシュ領域テーブル004は、鍵生成部005において生成した鍵を用いて暗号化された、ハッシュ領域テーブルである。ハッシュ領域テーブルは、例えば、工場出荷時や、ハッシュ計算用ミドルウェアインストール時に、暗号化された状態で情報処理端末001の不揮発領域002に記録される。ハッシュ領域テーブルには、利用が想定されるアプリケーションが予め登録されており、他のアプリケーション情報を追加する場合は、後述するハッシュテーブルの更新を行う。
【0028】
ハッシュ領域テーブルの構造は、例えば図2に示されるようになっている。ハッシュ領域テーブルは、実行可能なアプリケーションファイルのファイル名であるアプリケーションIDと、該アプリケーションに対し、ハッシュを取る領域の数、前記ハッシュを取る領域の開始位置と終了位置から構成される。ハッシュを取る領域とは、アプリケーションのバイナリイメージにおいて、その領域を改ざんされた場合、アプリケーション実行時にユーザに被害をもたらすような領域である。例えば、データの送受信処理を含む領域や、データ生成や保存処理を含む領域等である。ハッシュを取る領域は、例えばアプリケーション提供元によって指定される。また、該領域は、一つのアプリケーションに対し、複数個所あっても良い。
【0029】
ハッシュ計算用ミドルウェア017は、情報処理端末001の図示しないCPU或いはMPUの機能の1つとして実現されるものであり、鍵生成部005と、ハッシュ領域テーブル暗復号部006と、ID検索部008と、管理情報更新部009と、更新用テーブル復号部010と、ハッシュ値計算部011と、ハッシュ値比較部012と、更新実行判断部013と、ハッシュ領域テーブル更新部014と、アプリケーション実行判断部015と、ハッシュ実行判断部016と、を備えている。
【0030】
鍵生成部005は、例えば熱雑音を基に疑似乱数を作成する疑似乱数発生機であり、予め定められた長さの疑似乱数を生成し、テーブル鍵としてハッシュ領域テーブル暗復号部006に提供する。
【0031】
ハッシュ領域テーブル暗復号部006は、AES等の共通鍵暗号方式に基づいて、ハッシュ領域テーブルを暗号化したり、暗号化されたハッシュ領域テーブルを復号化したりする。なお、ハッシュ領域テーブル暗復号部006は、不揮発領域002に対して読み書きが可能なインタフェースを保持している。
【0032】
テーブル鍵007は、前回ハッシュ領域テーブルを暗号化するのに利用した鍵であり、ハッシュ領域テーブルの復号時に利用する。なお、テーブル鍵007は、ハッシュ領域テーブルが更新されるタイミング等で、鍵生成部005で再生成しても良い。テーブル鍵007は、ハッシュ計算用ミドルウェアが保持する図示していない鍵により暗号化された状態で不揮発領域002に記録されており、ハッシュ計算用ミドルウェアの起動と共に復号されて、メモリ上に展開される。
【0033】
ID検索部008は、アプリケーションのインストール時および実行時に、これからインストールまたは実行しようとしているアプリケーションの実行形式ファイルのファイル名(以下アプリケーションID)が、ハッシュ領域テーブル暗復号部006によって復号されたハッシュ領域テーブルに登録されているか否かを確認する。該当アプリケーションIDが登録されていた場合は、ID検索部008は、ハッシュ値計算部011に該アプリケーションのハッシュを取る領域数、ハッシュを取る領域の開始位置と終了位置を送信する。
【0034】
ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する。ハッシングアルゴリズムは任意であり、例えばSHA−1およびMD5等が含まれる。ID検索部008より情報を取得していない場合は、ハッシュ値計算部011は、該当アプリケーション全体に対してハッシュ値を計算する。
【0035】
ハッシュ値計算部011にて計算されたハッシュ値は、記録媒体019のセキュア領域020に記録される。記録媒体019のセキュア領域に記録するハッシュ値は、例えば、図3のような構造(以下ハッシュテーブル022)となっている。ハッシュテーブル022は、アプリケーションIDと、該アプリケーションのハッシュデータ全体のサイズと、各領域のハッシュサイズ、及びハッシュ値から構成される。また、ハッシュ値計算部011は、新しいハッシュ領域テーブルが外部から提供された場合(例えば、サーバから送信されてきたり、ユーザがインストールしたりする場合)に、新しいハッシュ領域テーブルのハッシュ値を計算する。
【0036】
管理情報更新部009は、ハッシュ値を記録媒体019のセキュア領域020に記録する際に、ハッシュ管理情報023およびセキュア領域管理情報024を更新する。ハッシュ管理情報023およびセキュア領域管理情報024の詳細は後述(図4参照)する。
【0037】
ハッシュ値比較部012は、ハッシュ値計算部011で計算したアプリケーションのハッシュ値と、記録媒体019内のハッシュテーブル022に格納されている該当アプリケーションのインストール時に計算したハッシュ値とを比較する。また、新しいハッシュ領域テーブルがハッシュ値とともに外部から提供された場合に、当該予め提供された情報内にあるハッシュ値と、ハッシュ領域テーブルからハッシュ値計算部011が算出したハッシュ値とを比較する。
【0038】
アプリケーション実行判断部015は、アプリケーション実行時のハッシュ値比較部012の結果を受けて、アプリケーションを実行するか否か判断する。ハッシュ値比較部012で比較した結果、ハッシュ値が一致した場合、アプリケーションを実行する。ハッシュ値が一致していなければアプリケーションの実行を中止する。
【0039】
更新実行判断部013は、ハッシュテーブル更新時のハッシュ値比較部012の結果を受けて、ハッシュ領域テーブルを更新するか否か判断する。ハッシュ値比較部012で比較した結果、ハッシュ値が一致した場合、ハッシュ領域テーブル更新部014において、ハッシュ領域テーブル暗復号部006より取得したハッシュ領域テーブルに、更新用ハッシュ領域テーブルの情報を反映させる。ハッシュ値が一致していなければハッシュ領域テーブルの更新を中止する。
【0040】
ハッシュ実行判断部016は、記憶媒体019から読み出した実行可能なアプリケーションファイル021が、ハッシュ計算用ミドルウェア017で処理(アプリケーションファイルが真正か否かを判断する処理)する必要があるかどうかを判断する。例えば、ハッシュ計算用ミドルウェア017の処理が不必要なアプリケーションのリストをハッシュ計算用ミドルウェア017が保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0041】
ハッシュ計算用ミドルウェア017は、本発明を実現する一連の処理を搭載したミドルウェアである。本ミドルウェアをPCのようなシステムに実装する際は、ライブラリ形式で提供し、本ミドルウェアと他アプリケーションやデバイス間のアクセスは、アプリケーションインタフェース(以下API)経由で行う。また、本ミドルウェアをライブラリ形式で提供する代わりに、本ミドルウェアの機能を搭載したICをシステムに実装してもよい。
【0042】
上位アプリケーション018は、ハッシュ計算用ミドルウェア017のAPIを利用する全てのソフトウェアである。
【0043】
記録媒体019は、例えばハードディスクドライブ(以下HDD)である。記録媒体019は端末内蔵型でも、取り外し可能な可搬型でも良い。
【0044】
記録媒体019内に設けられたセキュア領域020は、該領域に記録されているデータの読み出しや、該領域へのデータの書き込みが、制限されている領域である。セキュア領域020には、例えば、ユーザが制限なしでアクセスできる論理アドレス空間とは別に、アクセスに制限のある論理アドレス(セキュア論理アドレス)が設定され、アクセス制限が掛けられている。なお、記録媒体019に関しては、ハッシュ計算用ミドルウェア017が実装されている端末001との間で認証が実行され、認証が成功して初めて、該端末001からのセキュア領域020に対するデータの読み出し、書き込み命令を受け付けることができるようになっている。前述のようなセキュア領域の実現方法は、SAFIA規格に基づいて実現可能であり、既にiVDR(Information Versatile Disk for Removable usage:登録商標)に実装されている。
【0045】
図4は、ハッシュ管理情報023の構成例を示す図である。ハッシュ管理情報023は、アプリケーションIDと、ハッシュ値計算部011で計算したハッシュ値を記録したセキュア論理アドレスの先頭アドレスと、該ハッシュ値のサイズで構成される。ハッシュ値のサイズの単位は、例えばHDDの場合はセクタ数で表す等、そのシステムに接続する記録媒体によって変わって良い。ハッシュ管理情報023は、記録媒体019の予め定められた領域に記録されている。
【0046】
ハッシュ計算用ミドルウェア017と記録媒体間019での認証が成功すると、ハッシュ計算用ミドルウェア017は、該セキュア論理アドレスを指定し、ハッシュ管理情報023を読み出す。
【0047】
セキュア領域管理情報024は、セキュア領域020の空き情報を管理するテーブルである。セキュア領域管理情報024は、該情報を構成する1bitが1つのセキュア論理アドレスに対応しており、bitの値が0(または1)の場合、そのbitに対応するセキュア論理アドレスにデータが記録されていることを表し、bitの値が1(または0)の場合、そのbitに対応するセキュア論理アドレスにデータが記録されていないことを表す。セキュア領域管理情報024は、記録媒体019の予め定められた領域に記録されているとする。ハッシュ計算用ミドルウェア017と記録媒体019間での認証が成功すると、ハッシュ計算用ミドルウェア017は、該領域からセキュア領域管理情報024を読み出す。
【0048】
実行可能なアプリケーションファイル021は、実行形式のファイルである。ハッシュ計算用ミドルウェア017が起動する前に実行されるアプリケーション、例えばWindows(登録商標)サービスのようなアプリケーションは、これに含まない。
【0049】
<アプリケーションインストール時の処理>
図5は、第1の実施形態における、アプリケーションを情報処理端末001にインストールする際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。
【0050】
はじめに、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体019について認証処理を行う(ステップS501)。認証が失敗すると、ハッシュ計算用ミドルウェア017(ハードウェア的にはCPU或いはMPU)は、エラー処理(例えば、エラー表示)を行う(ステップS512)。認証が成功すると、ハッシュ計算用ミドルウェア017は、セキュア領域020から、ハッシュ管理情報023とセキュア領域管理情報024を読み出す(ステップS503)。
【0051】
ハッシュ計算用ミドルウェア017が上位アプリケーション018から新規アプリケーションのインストール命令を受けると、ハッシュ領域テーブル暗復号部006は、不揮発領域002より暗号化ハッシュ領域テーブル004を読み出し、暗号化ハッシュ領域テーブル004を復号する(ステップS504)。このとき、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する(ステップS505)。復号の成功を確認する方法は、例えば次のような方法がある。ハッシュ領域テーブルの予め定められた位置に「Hash Table」という文字をASCIIコードで入れておき、復号後、同一の場所に「Hash Table」というASCIIコードがあるか否かを確認する。「Hash Table」というASCIIコードがあった場合、復号成功とする。一方、復号が失敗した場合は、ハッシュ計算用ミドルウェア017は、エラーを表示し、処理を中断する(ステップS512)。
【0052】
ステップS505において復号が成功したと判断された場合、ID検索部008は、上位アプリケーション018から取得したアプリケーションIDと同じアプリケーションIDがハッシュ領域テーブルに登録されているか否か確認する(ステップS506)。
【0053】
ハッシュ領域テーブル内に該当アプリケーションIDがなかった場合は、ハッシュ値計算部011は、アプリケーション全体のハッシュ値を計算する(ステップS509)。ハッシュ領域テーブル内に該当アプリケーションIDが登録されていた場合は、ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する(ステップS508)。
【0054】
ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ値計算部011にて計算されたハッシュ値を、ハッシュテーブル022として、記録媒体019のセキュア領域020に格納する(ステップS510)。
【0055】
ハッシュテーブルが記録媒体019に格納された後、管理情報更新部009は、ハッシュ管理情報023及びセキュア領域管理情報024を更新し、記録媒体019に記録する(ステップS511)。
【0056】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア017と記録媒体間019での認証、ハッシュ管理情報023、セキュア領域管理情報024の読み出し、暗号化ハッシュ領域テーブル004の復号処理が既に済んでいた場合、これらの処理は省略される。
【0057】
<アプリケーション実行時の処理>
図6は、第1の実施形態における、アプリケーションを実行する際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。
【0058】
はじめに、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体間019について認証処理を実行する(ステップS601)。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う(ステップS614)。認証に成功すると、ハッシュ実行判断部016は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア017で処理(改ざん検出処理)する必要があるファイルかどうかを判断する(ステップS603)。例えば、ハッシュ計算用ミドルウェア017が、改ざん検出処理(ハッシュ処理)が不必要なアプリケーションのリストを保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、該実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0059】
ステップS603でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア017は、セキュア領域020からハッシュ管理情報023を読み出す(ステップS604)。
【0060】
ハッシュ計算用ミドルウェア017が上位アプリケーション018からアプリケーションの実行命令を受けると、ハッシュ領域テーブル暗復号部006は、不揮発領域002から暗号化ハッシュ領域テーブル004を読み出し、暗号化ハッシュ領域テーブルを復号する(ステップS605)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する(ステップS606)。復号の成功を確認する方法は、上述のステップS505と同様である。ハッシュ領域テーブルの復号が失敗していた場合には、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラー処理を実行する(ステップS614)。
【0061】
ステップS606で復号が成功したと判断された場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、上位アプリケーション018から指定されたアプリケーションファイルを記録媒体019から読み出し、また、それに対応するハッシュテーブルを、先に読み出したハッシュ管理情報を基に、記録媒体019から読み出す(ステップS607)。
【0062】
次に、ID検索部008は、ステップS605で復号して得られたハッシュ領域テーブルを検索し、上位アプリケーション018より取得した現在実行しようとしているアプリケーションに対応するアプリケーションIDがあるかどうか確認する(ステップS608)。
【0063】
ハッシュ領域テーブル内に該当アプリケーションIDがなかった場合は、ハッシュ値計算部011は、アプリケーション全体のハッシュ値を計算する(ステップS611)。一方、ハッシュ領域テーブル内に該当アプリケーションIDが登録されていた場合は、ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する(ステップS610)。
【0064】
そして、ハッシュ値比較部012は、ハッシュテーブル022内のハッシュ値と先ほど計算したハッシュ値を比較する(ステップS611)。その比較の結果、ハッシュ値が一致した場合は、該アプリケーションを実行するための処理が続行される。ハッシュ値が異なっていた場合は、アプリケーション実行判断部015は、実行しようとしているアプリケーションが改ざんされている可能性があるため、実行を中止する(ステップS613)。
【0065】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア017と記録媒体019間での認証、ハッシュ管理情報023の読み出し、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【0066】
<ハッシュ領域テーブルの更新処理>
図7は、第1の実施形態における、ハッシュ領域テーブルを更新する際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【0067】
まず、ハッシュ計算用ミドルウェア017が、上位アプリケーション018から、更新用ハッシュ領域テーブルを受け取る(ステップS703)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、該更新用ハッシュ領域テーブルの署名を検証する(ステップS704)。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【0068】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア017が保持する公開鍵003で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする(ステップS705)。
【0069】
検証が失敗した場合、ハッシュ計算用ミドルウェア017はエラーを返し、ハッシュ領域テーブルの更新を中止する(ステップS714)。認証が成功した場合、ハッシュ領域テーブル暗復号部006は、不揮発領域002から暗号化ハッシュ領域テーブルを読み出して復号する(ステップS706)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルの復号が成功したか否かについて確認する(ステップS707)。確認方法は、図6のステップS606と同様である。
【0070】
復号が失敗した場合、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラーを表示し、処理を中断する(ステップS714)。
【0071】
暗号化ハッシュ領域テーブル004の復号が成功した場合、ID検索部008は、追記しようとしているハッシュ領域テーブル内にあるアプリケーションIDと同一のIDが、既存のハッシュ領域テーブルにあるか否か確認する(ステップS708)。同一のアプリケーションIDがあった場合、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、該アプリケーションIDの更新フラグの欄にフラグを立てる(ステップS709)。フラグは1bitのデータで、フラグの値が1(または0)の時、データ更新有、フラグの値が0(または1)の時、データ更新無を意味するものとする。同一のアプリケーションIDが既存のハッシュ領域テーブルに無かった場合には、処理はステップS710に移行する。
【0072】
次に、ハッシュ領域テーブル更新部014は、取得した更新用ハッシュ領域テーブルを既存のハッシュ領域テーブルに反映する(ステップS710)。そして、鍵生成部005は、新規のハッシュ領域テーブルを基に新たにテーブル鍵007を生成する(ステップS711)。
【0073】
ハッシュ領域テーブル暗復号部006は、新規のテーブル鍵007で、新規のハッシュ領域テーブルを暗号化し(ステップS712)、不揮発領域002に記録する(ステップS713)。新たに生成したテーブル鍵007は、ハッシュ計算用ミドルウェア017が予め保持する鍵を用いて暗号化された後、不揮発領域002に記録される。
【0074】
尚、上記処理の開始時点で、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【0075】
<ハッシュ領域テーブル更新後の処理>
図8は、第1の実施形態における、ハッシュ領域テーブルを更新後はじめてハッシュ領域テーブルの更新箇所に対応するアプリケーションを実行する場合の処理を説明するためのフローチャートである。
【0076】
まず、アプリケーション実行処理(図6)が行われる(ステップS801)。そして、ハッシュ計算用ミドルウェア017は、アプリケーション実行時に、ハッシュ領域テーブルの該アプリケーションに対応する領域に、更新フラグが立っているか確認する(ステップS802)。この更新フラグは、ステップS709において付与されたものである。フラグが無ければ、処理は終了する。
【0077】
更新フラグが立っていた場合、ID検索部008は、ハッシュ領域テーブルに、同一のアプリケーションIDを持つ更新用の情報が登録されているか否か確認する(ステップS803)。
【0078】
更新フラグが立っていたにも拘わらず、同一のアプリケーションIDの登録が無い場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラー処理を実行する(ステップS807)。
【0079】
同一のアプリケーションIDがあった場合、ハッシュ値計算部011は、該アプリケーションIDに付随する更新用の情報を基に該アプリケーションのハッシュ値を再計算し、新たなハッシュテーブル022を作成する(ステップS804)。
【0080】
そして、管理情報更新部009は、新たなハッシュテーブルを、セキュア領域管理情報から取得した記録媒体の空き領域のアドレスに記録する。その際、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ管理情報に新たなハッシュテーブル022の記録先を追記すると同時に、更新前のハッシュテーブルの情報をハッシュ管理情報から削除する(ステップS805)。
【0081】
さらに、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルから、更新フラグの立っている更新前の該アプリケーションの情報を削除する(ステップS806)。この際、セキュア領域管理情報内の更新前のハッシュ領域テーブルを用いて計算した、該アプリケーションのハッシュテーブルが記録されている領域に対応するbit(フラグ)も無効にされる。
【0082】
この第1の実施形態では、ハッシュ領域テーブルを暗号化しているため、悪意ある第三者がハッシュ領域テーブルを改ざんしたり、ハッシュを取る領域を見たりすることができない。よって、第三者がハッシュを取る領域以外の場所を改ざんしようとした場合、成功する確率が低くなる。
【0083】
(2)第2の実施形態
<情報処理システムの構成>
図9は、本発明の第2の実施形態による情報処理システムの概略構成を示す図である。図1と同じ参照番号の機能ブロックは、第1の実施形態と同じ機能を有するものである。第1の実施形態では、不揮発領域002にハッシュ領域テーブルを記録する際、ハッシュ領域テーブルを暗号化していたが、その代わりに次のような方法を用いる。
【0084】
即ち、図9において、不揮発領域002にハッシュ領域テーブルを記録する際、ハッシュ計算用ミドルウェア017のハッシュ領域テーブルハッシュ値計算部074は、ハッシュ領域テーブル全体のハッシュ値を計算する。そして、ハッシュ暗復号部073は、ハッシュ領域テーブルのハッシュ値を、鍵生成部005において生成したハッシュ鍵072で暗号化した上で、暗号化ハッシュ値071として不揮発媒体002に記録する。ハッシュ鍵072は、不揮発領域002内または記録媒体019内の予め定められた領域へ記録される。
【0085】
次回、ハッシュ値暗復号部073は、ハッシュ領域テーブルおよび暗号化ハッシュ値を不揮発領域002から読み出すと、暗号化ハッシュ値をハッシュ鍵072で復号し、復号結果をハッシュ領域テーブル検証部075に提供する。ハッシュ領域テーブル検証部075は、ハッシュ領域デーブル070のハッシュ値と、暗号化ハッシュ値071を復号して得たハッシュ値を比較し、同値の場合、検証成功と判断する。検証が成功した場合は、該ハッシュテーブルを用いて、処理が続行される。検証が失敗した場合は、ハッシュ領域テーブルが改ざんされたと見なし、エラーが表示され、以降の処理が中断される。
【0086】
なお、その他の機能ブロックについては、第1の実施形態と同様なので、説明は省略する。
【0087】
<アプリケーションインストール時の処理>
図10は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がアプリケーションのインストール処理時に実行する処理を説明するためのフローチャートである。
【0088】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体019について認証処理を行う(ステップS1001及びS1002)。認証が失敗すると、ハッシュ計算用ミドルウェア017(ハードウェア的にはCPU或いはMPU)は、エラー処理(例えば、エラー表示)を行う(ステップS1006)。認証が成功すると、ハッシュ計算用ミドルウェア017は、セキュア領域020から、ハッシュ管理情報023とセキュア領域管理情報024を読み出す(ステップS1003)。
【0089】
そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)が上位アプリケーション018から新規アプリケーションのインストール命令を受けると、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071及びハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1004)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1005)。検証方法は上述のとおりである。検証が成功した場合は、図5のフローS506以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する(ステップS1006)。
【0090】
<アプリケーション実行時の処理>
図11は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がアプリケーションの実行時に行う処理を説明するためのフローチャートである。
【0091】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体間019について認証処理を実行する(ステップS1101及びS1102)。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う(ステップS1107)。認証に成功すると、ハッシュ実行判断部016は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア017で処理(改ざん検出処理)する必要があるファイルかどうかを判断する(ステップS1103)。例えば、ハッシュ計算用ミドルウェア017が、改ざん検出処理(ハッシュ処理)が不必要なアプリケーションのリストを保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、該実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0092】
ステップS1103でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア017は、セキュア領域020からハッシュ管理情報023を読み出す(ステップS1104)。
【0093】
その後、ハッシュ計算用ミドルウェア017が上位アプリケーション018から新規アプリケーションの実行命令を受けると、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071、ハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1105)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1106)。検証が成功した場合は、図6のステップS607以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する(ステップS1107)。
【0094】
<ハッシュ領域テーブルの更新処理>
図12は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がハッシュ領域テーブルを更新する際に行う処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【0095】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001と記録媒体019間での認証処理が実行され(ステップS1201)、認証が成功したか否かが判断される(ステップS1202)。
【0096】
認証に失敗すると、エラー処理が実行される(ステップS1208)。一方、認証に成功すると、ハッシュ計算用ミドルウェア017が、上位アプリケーション018から、更新用ハッシュ領域テーブルを受け取る(ステップS1203)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMOU)は、該更新用ハッシュ領域テーブルの署名を検証する(ステップS1204)。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【0097】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア017が保持する公開鍵003で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする(ステップS1205)。
【0098】
検証が失敗した場合、ハッシュ計算用ミドルウェア017はエラーを返し、ハッシュ領域テーブルの更新を中止する(ステップS1208)。
【0099】
認証が成功した場合、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071及びハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1206)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1207)。検証が成功した場合、図7のステップS708以下と同じ処理が実行される。検証が失敗した場合は、エラーが表示され、処理が中断する(ステップS1208)。
【0100】
なお、ハッシュ領域テーブル更新後の処理(図8)は、第2の実施形態でも適用される。この第2の実施形態の方法によれば、ハッシュ領域テーブルの改ざんを正確にかつ効率的に検出することができる。また、ハッシュ領域テーブルは更新できるようになっているので、状況の変化にも対応することが可能となる。
【0101】
(3)まとめ
上記各実施形態では、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルを用いて、新規のアプリケーションをインストール時、及びアプリケーションファイルの実行時に、リストアップされている部分のみのハッシュ値を計算し、そのハッシュ値を改ざんの検出に用いている。このようにすることにより、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを正確にかつ効率的に検出することができるようになる。なお、テーブルにリストアップされていないアプリケーションの場合には、アプリケーション全体についてハッシュ値を算出するようにしているので、改ざん検出処理には漏れがない。
【0102】
また、アプリケーションについて予め取得して記録媒体019(HDD)に格納しておくハッシュ値は、記録媒体のセキュア領域に格納されるので、比較元のハッシュ値が改ざんされる危険性も少なくなる。
【0103】
さらに、本実施形態では、ハッシュ領域テーブルは更新できるようになっているので、状況の変化に応じて臨機応変に改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを検出できるようになっている。
【0104】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0105】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【0106】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【0107】
【図1】本発明の第1の実施形態による情報処理システムの機能構成を示す図である。
【図2】ハッシュ領域テーブルの例を示す図である。
【図3】ハッシュテーブルの例を示す図である。
【図4】ハッシュ管理情報の例を示す図である。
【図5】第1の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図6】第1の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図7】第1の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【図8】第1の実施形態による、ハッシュ領域テーブル更新後、更新部分に該当するアプリケーションを実行する際の処理を説明するためのフローチャートである。
【図9】本発明の第2の実施形態による情報処理システムの機能構成を示す図である。
【図10】第2の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図11】第2の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図12】第2の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【符号の説明】
【0108】
001:情報処理端末、002:不揮発領域、003:公開鍵、004:暗号化ハッシュ領域テーブル、005:鍵生成部、006:ハッシュ領域テーブル暗復号部、007:テーブル鍵、008:ID検索部、009:管理情報更新部、010:更新用テーブル復号部、011:ハッシュ値計算部、012:ハッシュ値比較部、013:更新実行判断部、014:ハッシュ領域テーブル更新部、015:アプリケーション実行判断部、016:ハッシュ実行判断部、017:ハッシュ計算用ミドルウェア、018:上位アプリケーション、019:記録媒体、020:セキュア領域、021:実行可能なアプリケーション、022:ハッシュテーブル、023:ハッシュ管理情報、024:セキュア領域管理情報
【技術分野】
【0001】
本発明は、情報処理装置、及びコンピュータプログラムに関し、例えば、改ざんされた実行可能ファイルが実行されるのを防ぐためのデータの検証に関するものである。
【背景技術】
【0002】
コンピュータがウィルスやトロイの木馬に感染し、インストールされている実行可能なファイルが、ユーザの知らぬ間に改ざんされてしまうことがある。ユーザがファイルの改ざんに気付かずに、改ざんされたファイルを実行してしまうと、データの流出や、二次感染等の被害が広がってしまう。そこで、ファイルの改ざんを実行前に検出し、ファイルの実行を止めることで、被害の拡大を防ぐことが必要である。
【0003】
実行可能なファイルの改ざんを検出する方法として、例えば特許文献1に示されるような方法がある。つまり、携帯端末用のアプリケーションを携帯端末にインストールする際に、アプリケーションのハッシュ値を計算し、機密性、秘匿性の高いICチップのメモリに記録する。携帯端末は該アプリケーションを実行する際に、該アプリケーションのハッシュ値を計算し、アプリケーションの利用要求と共にハッシュ値をICチップへ送信する。これに応答して、ICチップは受信した要求に対応するハッシュ値をメモリから読み出し、受信したハッシュ値と照合し、一致する場合、該アプリケーションを利用可能とする。
【0004】
また、例えば、特許文献2のような方法もある。つまり、複数の部分イメージハッシュを生成し、その組み合わせが実行可能ファイル全体のダイジェストを表す。コンピューティングデバイス上での実行可能ファイルのロードに続いて、実行のために実行可能ファイルの一部をメモリへページングする要求がインターセプトされる。要求のインターセプトに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードインテグリティーが決定される。
【0005】
さらに、例えば、特許文献3には、再生用コンテンツを対象として改ざん検出の方法が提案されている。つまり、DVDに記録されている暗号化コンテンツを構成する複数の暗号化ユニットのうち、ランダムに選択した所定個数の暗号化ユニットのみを検証に用いることで、検証の処理に係る負荷を軽減し、検証の度にランダムに所定個数の暗号化ユニットを選択することで、不正なコンテンツの検出の精度をある程度高めることができる。
【0006】
【特許文献1】特開2006−154997号公報
【特許文献2】特開2006−202270号公報
【特許文献3】特開2008−176814号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1及び2による方法では、アプリケーション全体に対して改ざんの有無を検査するため、何れの方法も改ざん検出のための演算量が多くなり、処理に時間がかかるという問題がある。
【0008】
また、特許文献3によるランダムに選んだ所定の場所を検証する方法では、検証時に改ざんされた領域が検証すべき領域として選択されなければ、改ざんを検出できない可能性が高い。
【0009】
本発明はこのような状況に鑑みてなされたものであり、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に(演算量を少なく)、かつ正確に検出できる手段を提供するものである。
【課題を解決するための手段】
【0010】
1)上記課題を解決するために、本発明者は、アプリケーションの改ざんを検出する目的がデータの流出防止やウィルスの二次感染防止等である場合、改ざんを防がなければならない領域はアプリケーションのバイナリイメージのうちの一部である場合が多いことに着目した。
【0011】
そして、この着目に基づいて、本発明では、アプリケーションのバイナリイメージのうち、改ざんを防がなければならない領域の開始位置と終了位置を、予めテーブルとして用意しておくようにしている。アプリケーションのインストール時に、該テーブルを基に改ざんを防がなければならない領域のハッシュ値を計算し、アプリケーションをインストールした記録媒体にアプリケーションと共に記録する。そして、アプリケーション実行時に、該テーブルを基に計算したハッシュ値と、インストール時に計算したハッシュ値を比較し、ハッシュ値が一致した場合のみアプリケーションを実行する。
【0012】
2)即ち、本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、新規のアプリケーションをインストールする際、この新規のアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部(ハッシュ領域テーブル暗復号部)と、ハッシュ領域情報に基づいて、新規のアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、計算して得られたハッシュ値を、情報格納部(HDD)に設けられたハッシュテーブルに登録するハッシュ登録部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、を備えている。
【0013】
新規のアプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、新規のアプリケーションの全体についてハッシュ値を計算する。そして、ハッシュ登録部は、新規のアプリケーション全体のハッシュ値をハッシュテーブルに登録する。
【0014】
本発明による情報処理装置は、さらに、ハッシュ登録部がハッシュテーブルにハッシュ値を登録する際に、情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備えている。なお、このハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズを含み、セキュア領域管理情報は、情報格納部におけるセキュア領域空間の空き情報を管理するための情報である。
【0015】
3)別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、アプリケーションを実行する際、このアプリケーションがハッシュ領域テーブルに登録されている場合に、ハッシュ領域テーブルから対応するハッシュ領域情報を取得するハッシュ領域情報取得部(ハッシュ領域テーブル暗復号部)と、ハッシュ領域情報に基づいて、実行すべきアプリケーションのハッシュ領域のハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、情報格納部(HDD)に設けられ、アプリケーションにおけるハッシュ領域のハッシュ値を登録したハッシュテーブルから、実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、ハッシュ計算部によって計算されたハッシュ値とハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部(ハッシュ値比較部)と、ハッシュ比較部による比較結果に基づいて、アプリケーションを実行するか否か判断する実行判断部(アプリケーション実行判断部)と、を備える。
【0016】
アプリケーションがハッシュ領域テーブルに登録されていない場合には、ハッシュ計算部は、アプリケーションの全体についてハッシュ値を計算し、ハッシュ比較部は、アプリケーション全体のハッシュ値と、ハッシュテーブルから読み出されたアプリケーション全体のハッシュ値とを比較する。
【0017】
ハッシュ読み出し部は、情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、ハッシュ値のサイズの情報に基づいて、アプリケーションのハッシュ値をハッシュテーブルから読み出す。
【0018】
4)さらに別の態様の本発明による情報処理装置は、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブル(更新前ハッシュ領域テーブル)と、新規のハッシュ領域情報を受け取る受信部(上位アプリケーション)と、更新前ハッシュ領域テーブルに新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部(ID検索部)と、判断部で同一のアプリケーションが含まれると判断された場合に、更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、新規のハッシュ領域情報を更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備える。
【0019】
情報処理装置は、さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、更新後ハッシュ領域テーブルに更新フラグが立っているか否かを判断する更新フラグ判定部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、実行すべきアプリケーションに対して更新フラグが立っている場合に、実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部(ハッシュ値計算部)と、ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部(HDD)内にハッシュテーブルを作成するハッシュテーブル作成部(ハッシュ計算用ミドルウェアを構成するCPU或いはMPU)と、を備える。ここで、ハッシュテーブル作成部は、情報格納部のセキュアな空き領域にハッシュテーブルを作成する。ことを特徴とする請求項10に記載の情報処理装置。
【0020】
情報処理装置は、さらに、ハッシュテーブルを記録した情報格納部の位置及びハッシュテーブルのサイズの情報を含むハッシュ管理情報と、情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、更新前ハッシュテーブルを無効にする管理情報更新部を備える。
【0021】
5)なお、本発明は、コンピュータを上述の情報処理装置として機能させるためのコンピュータプログラムも提供するものである。
【0022】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【0023】
本発明によれば、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域における改ざんの有無を、効率的に(演算量を少なく)、かつ正確に検出できるようになる。
【発明を実施するための最良の形態】
【0024】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【0025】
(1)第1の実施形態
<情報処理システムの構成>
図1は、本発明の第1の実施形態による情報処理システムの機能構成を示す図である。図中の矢印は、それぞれ、インストール時(実線)、実行時(二点鎖線)、ハッシュ領域テーブル更新時(点線)のデータの流れを表す。
【0026】
情報処理システムは、情報処理端末001と、記録媒体(情報格納部)019と、を備えている。
情報処理端末(ホストコンピュータ)001は、例えばPC、PDA、TV、携帯電話等のデジタル機器であり、不揮発領域002とハッシュ計算用ミドルウェア017と、上位アプリケーション018と、を備えている。
【0027】
不揮発領域002は、例えばフラッシュメモリ等の不揮発媒体である。不揮発領域に記録されている公開鍵003は、図示していないサーバが発行する更新用ハッシュ領域テーブルの暗号化に使った秘密鍵に対応している。不揮発領域002に記録されている暗号化ハッシュ領域テーブル004は、鍵生成部005において生成した鍵を用いて暗号化された、ハッシュ領域テーブルである。ハッシュ領域テーブルは、例えば、工場出荷時や、ハッシュ計算用ミドルウェアインストール時に、暗号化された状態で情報処理端末001の不揮発領域002に記録される。ハッシュ領域テーブルには、利用が想定されるアプリケーションが予め登録されており、他のアプリケーション情報を追加する場合は、後述するハッシュテーブルの更新を行う。
【0028】
ハッシュ領域テーブルの構造は、例えば図2に示されるようになっている。ハッシュ領域テーブルは、実行可能なアプリケーションファイルのファイル名であるアプリケーションIDと、該アプリケーションに対し、ハッシュを取る領域の数、前記ハッシュを取る領域の開始位置と終了位置から構成される。ハッシュを取る領域とは、アプリケーションのバイナリイメージにおいて、その領域を改ざんされた場合、アプリケーション実行時にユーザに被害をもたらすような領域である。例えば、データの送受信処理を含む領域や、データ生成や保存処理を含む領域等である。ハッシュを取る領域は、例えばアプリケーション提供元によって指定される。また、該領域は、一つのアプリケーションに対し、複数個所あっても良い。
【0029】
ハッシュ計算用ミドルウェア017は、情報処理端末001の図示しないCPU或いはMPUの機能の1つとして実現されるものであり、鍵生成部005と、ハッシュ領域テーブル暗復号部006と、ID検索部008と、管理情報更新部009と、更新用テーブル復号部010と、ハッシュ値計算部011と、ハッシュ値比較部012と、更新実行判断部013と、ハッシュ領域テーブル更新部014と、アプリケーション実行判断部015と、ハッシュ実行判断部016と、を備えている。
【0030】
鍵生成部005は、例えば熱雑音を基に疑似乱数を作成する疑似乱数発生機であり、予め定められた長さの疑似乱数を生成し、テーブル鍵としてハッシュ領域テーブル暗復号部006に提供する。
【0031】
ハッシュ領域テーブル暗復号部006は、AES等の共通鍵暗号方式に基づいて、ハッシュ領域テーブルを暗号化したり、暗号化されたハッシュ領域テーブルを復号化したりする。なお、ハッシュ領域テーブル暗復号部006は、不揮発領域002に対して読み書きが可能なインタフェースを保持している。
【0032】
テーブル鍵007は、前回ハッシュ領域テーブルを暗号化するのに利用した鍵であり、ハッシュ領域テーブルの復号時に利用する。なお、テーブル鍵007は、ハッシュ領域テーブルが更新されるタイミング等で、鍵生成部005で再生成しても良い。テーブル鍵007は、ハッシュ計算用ミドルウェアが保持する図示していない鍵により暗号化された状態で不揮発領域002に記録されており、ハッシュ計算用ミドルウェアの起動と共に復号されて、メモリ上に展開される。
【0033】
ID検索部008は、アプリケーションのインストール時および実行時に、これからインストールまたは実行しようとしているアプリケーションの実行形式ファイルのファイル名(以下アプリケーションID)が、ハッシュ領域テーブル暗復号部006によって復号されたハッシュ領域テーブルに登録されているか否かを確認する。該当アプリケーションIDが登録されていた場合は、ID検索部008は、ハッシュ値計算部011に該アプリケーションのハッシュを取る領域数、ハッシュを取る領域の開始位置と終了位置を送信する。
【0034】
ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する。ハッシングアルゴリズムは任意であり、例えばSHA−1およびMD5等が含まれる。ID検索部008より情報を取得していない場合は、ハッシュ値計算部011は、該当アプリケーション全体に対してハッシュ値を計算する。
【0035】
ハッシュ値計算部011にて計算されたハッシュ値は、記録媒体019のセキュア領域020に記録される。記録媒体019のセキュア領域に記録するハッシュ値は、例えば、図3のような構造(以下ハッシュテーブル022)となっている。ハッシュテーブル022は、アプリケーションIDと、該アプリケーションのハッシュデータ全体のサイズと、各領域のハッシュサイズ、及びハッシュ値から構成される。また、ハッシュ値計算部011は、新しいハッシュ領域テーブルが外部から提供された場合(例えば、サーバから送信されてきたり、ユーザがインストールしたりする場合)に、新しいハッシュ領域テーブルのハッシュ値を計算する。
【0036】
管理情報更新部009は、ハッシュ値を記録媒体019のセキュア領域020に記録する際に、ハッシュ管理情報023およびセキュア領域管理情報024を更新する。ハッシュ管理情報023およびセキュア領域管理情報024の詳細は後述(図4参照)する。
【0037】
ハッシュ値比較部012は、ハッシュ値計算部011で計算したアプリケーションのハッシュ値と、記録媒体019内のハッシュテーブル022に格納されている該当アプリケーションのインストール時に計算したハッシュ値とを比較する。また、新しいハッシュ領域テーブルがハッシュ値とともに外部から提供された場合に、当該予め提供された情報内にあるハッシュ値と、ハッシュ領域テーブルからハッシュ値計算部011が算出したハッシュ値とを比較する。
【0038】
アプリケーション実行判断部015は、アプリケーション実行時のハッシュ値比較部012の結果を受けて、アプリケーションを実行するか否か判断する。ハッシュ値比較部012で比較した結果、ハッシュ値が一致した場合、アプリケーションを実行する。ハッシュ値が一致していなければアプリケーションの実行を中止する。
【0039】
更新実行判断部013は、ハッシュテーブル更新時のハッシュ値比較部012の結果を受けて、ハッシュ領域テーブルを更新するか否か判断する。ハッシュ値比較部012で比較した結果、ハッシュ値が一致した場合、ハッシュ領域テーブル更新部014において、ハッシュ領域テーブル暗復号部006より取得したハッシュ領域テーブルに、更新用ハッシュ領域テーブルの情報を反映させる。ハッシュ値が一致していなければハッシュ領域テーブルの更新を中止する。
【0040】
ハッシュ実行判断部016は、記憶媒体019から読み出した実行可能なアプリケーションファイル021が、ハッシュ計算用ミドルウェア017で処理(アプリケーションファイルが真正か否かを判断する処理)する必要があるかどうかを判断する。例えば、ハッシュ計算用ミドルウェア017の処理が不必要なアプリケーションのリストをハッシュ計算用ミドルウェア017が保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0041】
ハッシュ計算用ミドルウェア017は、本発明を実現する一連の処理を搭載したミドルウェアである。本ミドルウェアをPCのようなシステムに実装する際は、ライブラリ形式で提供し、本ミドルウェアと他アプリケーションやデバイス間のアクセスは、アプリケーションインタフェース(以下API)経由で行う。また、本ミドルウェアをライブラリ形式で提供する代わりに、本ミドルウェアの機能を搭載したICをシステムに実装してもよい。
【0042】
上位アプリケーション018は、ハッシュ計算用ミドルウェア017のAPIを利用する全てのソフトウェアである。
【0043】
記録媒体019は、例えばハードディスクドライブ(以下HDD)である。記録媒体019は端末内蔵型でも、取り外し可能な可搬型でも良い。
【0044】
記録媒体019内に設けられたセキュア領域020は、該領域に記録されているデータの読み出しや、該領域へのデータの書き込みが、制限されている領域である。セキュア領域020には、例えば、ユーザが制限なしでアクセスできる論理アドレス空間とは別に、アクセスに制限のある論理アドレス(セキュア論理アドレス)が設定され、アクセス制限が掛けられている。なお、記録媒体019に関しては、ハッシュ計算用ミドルウェア017が実装されている端末001との間で認証が実行され、認証が成功して初めて、該端末001からのセキュア領域020に対するデータの読み出し、書き込み命令を受け付けることができるようになっている。前述のようなセキュア領域の実現方法は、SAFIA規格に基づいて実現可能であり、既にiVDR(Information Versatile Disk for Removable usage:登録商標)に実装されている。
【0045】
図4は、ハッシュ管理情報023の構成例を示す図である。ハッシュ管理情報023は、アプリケーションIDと、ハッシュ値計算部011で計算したハッシュ値を記録したセキュア論理アドレスの先頭アドレスと、該ハッシュ値のサイズで構成される。ハッシュ値のサイズの単位は、例えばHDDの場合はセクタ数で表す等、そのシステムに接続する記録媒体によって変わって良い。ハッシュ管理情報023は、記録媒体019の予め定められた領域に記録されている。
【0046】
ハッシュ計算用ミドルウェア017と記録媒体間019での認証が成功すると、ハッシュ計算用ミドルウェア017は、該セキュア論理アドレスを指定し、ハッシュ管理情報023を読み出す。
【0047】
セキュア領域管理情報024は、セキュア領域020の空き情報を管理するテーブルである。セキュア領域管理情報024は、該情報を構成する1bitが1つのセキュア論理アドレスに対応しており、bitの値が0(または1)の場合、そのbitに対応するセキュア論理アドレスにデータが記録されていることを表し、bitの値が1(または0)の場合、そのbitに対応するセキュア論理アドレスにデータが記録されていないことを表す。セキュア領域管理情報024は、記録媒体019の予め定められた領域に記録されているとする。ハッシュ計算用ミドルウェア017と記録媒体019間での認証が成功すると、ハッシュ計算用ミドルウェア017は、該領域からセキュア領域管理情報024を読み出す。
【0048】
実行可能なアプリケーションファイル021は、実行形式のファイルである。ハッシュ計算用ミドルウェア017が起動する前に実行されるアプリケーション、例えばWindows(登録商標)サービスのようなアプリケーションは、これに含まない。
【0049】
<アプリケーションインストール時の処理>
図5は、第1の実施形態における、アプリケーションを情報処理端末001にインストールする際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。
【0050】
はじめに、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体019について認証処理を行う(ステップS501)。認証が失敗すると、ハッシュ計算用ミドルウェア017(ハードウェア的にはCPU或いはMPU)は、エラー処理(例えば、エラー表示)を行う(ステップS512)。認証が成功すると、ハッシュ計算用ミドルウェア017は、セキュア領域020から、ハッシュ管理情報023とセキュア領域管理情報024を読み出す(ステップS503)。
【0051】
ハッシュ計算用ミドルウェア017が上位アプリケーション018から新規アプリケーションのインストール命令を受けると、ハッシュ領域テーブル暗復号部006は、不揮発領域002より暗号化ハッシュ領域テーブル004を読み出し、暗号化ハッシュ領域テーブル004を復号する(ステップS504)。このとき、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する(ステップS505)。復号の成功を確認する方法は、例えば次のような方法がある。ハッシュ領域テーブルの予め定められた位置に「Hash Table」という文字をASCIIコードで入れておき、復号後、同一の場所に「Hash Table」というASCIIコードがあるか否かを確認する。「Hash Table」というASCIIコードがあった場合、復号成功とする。一方、復号が失敗した場合は、ハッシュ計算用ミドルウェア017は、エラーを表示し、処理を中断する(ステップS512)。
【0052】
ステップS505において復号が成功したと判断された場合、ID検索部008は、上位アプリケーション018から取得したアプリケーションIDと同じアプリケーションIDがハッシュ領域テーブルに登録されているか否か確認する(ステップS506)。
【0053】
ハッシュ領域テーブル内に該当アプリケーションIDがなかった場合は、ハッシュ値計算部011は、アプリケーション全体のハッシュ値を計算する(ステップS509)。ハッシュ領域テーブル内に該当アプリケーションIDが登録されていた場合は、ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する(ステップS508)。
【0054】
ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ値計算部011にて計算されたハッシュ値を、ハッシュテーブル022として、記録媒体019のセキュア領域020に格納する(ステップS510)。
【0055】
ハッシュテーブルが記録媒体019に格納された後、管理情報更新部009は、ハッシュ管理情報023及びセキュア領域管理情報024を更新し、記録媒体019に記録する(ステップS511)。
【0056】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア017と記録媒体間019での認証、ハッシュ管理情報023、セキュア領域管理情報024の読み出し、暗号化ハッシュ領域テーブル004の復号処理が既に済んでいた場合、これらの処理は省略される。
【0057】
<アプリケーション実行時の処理>
図6は、第1の実施形態における、アプリケーションを実行する際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。
【0058】
はじめに、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体間019について認証処理を実行する(ステップS601)。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う(ステップS614)。認証に成功すると、ハッシュ実行判断部016は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア017で処理(改ざん検出処理)する必要があるファイルかどうかを判断する(ステップS603)。例えば、ハッシュ計算用ミドルウェア017が、改ざん検出処理(ハッシュ処理)が不必要なアプリケーションのリストを保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、該実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0059】
ステップS603でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア017は、セキュア領域020からハッシュ管理情報023を読み出す(ステップS604)。
【0060】
ハッシュ計算用ミドルウェア017が上位アプリケーション018からアプリケーションの実行命令を受けると、ハッシュ領域テーブル暗復号部006は、不揮発領域002から暗号化ハッシュ領域テーブル004を読み出し、暗号化ハッシュ領域テーブルを復号する(ステップS605)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、復号した平文データの構造を確認し、ハッシュ領域テーブルの復号が成功したかどうかを確認する(ステップS606)。復号の成功を確認する方法は、上述のステップS505と同様である。ハッシュ領域テーブルの復号が失敗していた場合には、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラー処理を実行する(ステップS614)。
【0061】
ステップS606で復号が成功したと判断された場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、上位アプリケーション018から指定されたアプリケーションファイルを記録媒体019から読み出し、また、それに対応するハッシュテーブルを、先に読み出したハッシュ管理情報を基に、記録媒体019から読み出す(ステップS607)。
【0062】
次に、ID検索部008は、ステップS605で復号して得られたハッシュ領域テーブルを検索し、上位アプリケーション018より取得した現在実行しようとしているアプリケーションに対応するアプリケーションIDがあるかどうか確認する(ステップS608)。
【0063】
ハッシュ領域テーブル内に該当アプリケーションIDがなかった場合は、ハッシュ値計算部011は、アプリケーション全体のハッシュ値を計算する(ステップS611)。一方、ハッシュ領域テーブル内に該当アプリケーションIDが登録されていた場合は、ハッシュ値計算部011は、ID検索部008より取得した該アプリケーションのハッシュを取る領域数、およびハッシュを取る領域の開始位置と終了位置を基に、該アプリケーションのハッシュ値を計算する(ステップS610)。
【0064】
そして、ハッシュ値比較部012は、ハッシュテーブル022内のハッシュ値と先ほど計算したハッシュ値を比較する(ステップS611)。その比較の結果、ハッシュ値が一致した場合は、該アプリケーションを実行するための処理が続行される。ハッシュ値が異なっていた場合は、アプリケーション実行判断部015は、実行しようとしているアプリケーションが改ざんされている可能性があるため、実行を中止する(ステップS613)。
【0065】
尚、上記処理の開始時点で、ハッシュ計算用ミドルウェア017と記録媒体019間での認証、ハッシュ管理情報023の読み出し、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【0066】
<ハッシュ領域テーブルの更新処理>
図7は、第1の実施形態における、ハッシュ領域テーブルを更新する際のハッシュ計算用ミドルウェア017の処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【0067】
まず、ハッシュ計算用ミドルウェア017が、上位アプリケーション018から、更新用ハッシュ領域テーブルを受け取る(ステップS703)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、該更新用ハッシュ領域テーブルの署名を検証する(ステップS704)。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【0068】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア017が保持する公開鍵003で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする(ステップS705)。
【0069】
検証が失敗した場合、ハッシュ計算用ミドルウェア017はエラーを返し、ハッシュ領域テーブルの更新を中止する(ステップS714)。認証が成功した場合、ハッシュ領域テーブル暗復号部006は、不揮発領域002から暗号化ハッシュ領域テーブルを読み出して復号する(ステップS706)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルの復号が成功したか否かについて確認する(ステップS707)。確認方法は、図6のステップS606と同様である。
【0070】
復号が失敗した場合、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラーを表示し、処理を中断する(ステップS714)。
【0071】
暗号化ハッシュ領域テーブル004の復号が成功した場合、ID検索部008は、追記しようとしているハッシュ領域テーブル内にあるアプリケーションIDと同一のIDが、既存のハッシュ領域テーブルにあるか否か確認する(ステップS708)。同一のアプリケーションIDがあった場合、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、該アプリケーションIDの更新フラグの欄にフラグを立てる(ステップS709)。フラグは1bitのデータで、フラグの値が1(または0)の時、データ更新有、フラグの値が0(または1)の時、データ更新無を意味するものとする。同一のアプリケーションIDが既存のハッシュ領域テーブルに無かった場合には、処理はステップS710に移行する。
【0072】
次に、ハッシュ領域テーブル更新部014は、取得した更新用ハッシュ領域テーブルを既存のハッシュ領域テーブルに反映する(ステップS710)。そして、鍵生成部005は、新規のハッシュ領域テーブルを基に新たにテーブル鍵007を生成する(ステップS711)。
【0073】
ハッシュ領域テーブル暗復号部006は、新規のテーブル鍵007で、新規のハッシュ領域テーブルを暗号化し(ステップS712)、不揮発領域002に記録する(ステップS713)。新たに生成したテーブル鍵007は、ハッシュ計算用ミドルウェア017が予め保持する鍵を用いて暗号化された後、不揮発領域002に記録される。
【0074】
尚、上記処理の開始時点で、暗号化ハッシュ領域テーブルの復号処理が既に済んでいた場合、これらの処理は省略される。
【0075】
<ハッシュ領域テーブル更新後の処理>
図8は、第1の実施形態における、ハッシュ領域テーブルを更新後はじめてハッシュ領域テーブルの更新箇所に対応するアプリケーションを実行する場合の処理を説明するためのフローチャートである。
【0076】
まず、アプリケーション実行処理(図6)が行われる(ステップS801)。そして、ハッシュ計算用ミドルウェア017は、アプリケーション実行時に、ハッシュ領域テーブルの該アプリケーションに対応する領域に、更新フラグが立っているか確認する(ステップS802)。この更新フラグは、ステップS709において付与されたものである。フラグが無ければ、処理は終了する。
【0077】
更新フラグが立っていた場合、ID検索部008は、ハッシュ領域テーブルに、同一のアプリケーションIDを持つ更新用の情報が登録されているか否か確認する(ステップS803)。
【0078】
更新フラグが立っていたにも拘わらず、同一のアプリケーションIDの登録が無い場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、エラー処理を実行する(ステップS807)。
【0079】
同一のアプリケーションIDがあった場合、ハッシュ値計算部011は、該アプリケーションIDに付随する更新用の情報を基に該アプリケーションのハッシュ値を再計算し、新たなハッシュテーブル022を作成する(ステップS804)。
【0080】
そして、管理情報更新部009は、新たなハッシュテーブルを、セキュア領域管理情報から取得した記録媒体の空き領域のアドレスに記録する。その際、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ管理情報に新たなハッシュテーブル022の記録先を追記すると同時に、更新前のハッシュテーブルの情報をハッシュ管理情報から削除する(ステップS805)。
【0081】
さらに、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルから、更新フラグの立っている更新前の該アプリケーションの情報を削除する(ステップS806)。この際、セキュア領域管理情報内の更新前のハッシュ領域テーブルを用いて計算した、該アプリケーションのハッシュテーブルが記録されている領域に対応するbit(フラグ)も無効にされる。
【0082】
この第1の実施形態では、ハッシュ領域テーブルを暗号化しているため、悪意ある第三者がハッシュ領域テーブルを改ざんしたり、ハッシュを取る領域を見たりすることができない。よって、第三者がハッシュを取る領域以外の場所を改ざんしようとした場合、成功する確率が低くなる。
【0083】
(2)第2の実施形態
<情報処理システムの構成>
図9は、本発明の第2の実施形態による情報処理システムの概略構成を示す図である。図1と同じ参照番号の機能ブロックは、第1の実施形態と同じ機能を有するものである。第1の実施形態では、不揮発領域002にハッシュ領域テーブルを記録する際、ハッシュ領域テーブルを暗号化していたが、その代わりに次のような方法を用いる。
【0084】
即ち、図9において、不揮発領域002にハッシュ領域テーブルを記録する際、ハッシュ計算用ミドルウェア017のハッシュ領域テーブルハッシュ値計算部074は、ハッシュ領域テーブル全体のハッシュ値を計算する。そして、ハッシュ暗復号部073は、ハッシュ領域テーブルのハッシュ値を、鍵生成部005において生成したハッシュ鍵072で暗号化した上で、暗号化ハッシュ値071として不揮発媒体002に記録する。ハッシュ鍵072は、不揮発領域002内または記録媒体019内の予め定められた領域へ記録される。
【0085】
次回、ハッシュ値暗復号部073は、ハッシュ領域テーブルおよび暗号化ハッシュ値を不揮発領域002から読み出すと、暗号化ハッシュ値をハッシュ鍵072で復号し、復号結果をハッシュ領域テーブル検証部075に提供する。ハッシュ領域テーブル検証部075は、ハッシュ領域デーブル070のハッシュ値と、暗号化ハッシュ値071を復号して得たハッシュ値を比較し、同値の場合、検証成功と判断する。検証が成功した場合は、該ハッシュテーブルを用いて、処理が続行される。検証が失敗した場合は、ハッシュ領域テーブルが改ざんされたと見なし、エラーが表示され、以降の処理が中断される。
【0086】
なお、その他の機能ブロックについては、第1の実施形態と同様なので、説明は省略する。
【0087】
<アプリケーションインストール時の処理>
図10は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がアプリケーションのインストール処理時に実行する処理を説明するためのフローチャートである。
【0088】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体019について認証処理を行う(ステップS1001及びS1002)。認証が失敗すると、ハッシュ計算用ミドルウェア017(ハードウェア的にはCPU或いはMPU)は、エラー処理(例えば、エラー表示)を行う(ステップS1006)。認証が成功すると、ハッシュ計算用ミドルウェア017は、セキュア領域020から、ハッシュ管理情報023とセキュア領域管理情報024を読み出す(ステップS1003)。
【0089】
そして、ハッシュ計算用ミドルウェア017(CPU或いはMPU)が上位アプリケーション018から新規アプリケーションのインストール命令を受けると、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071及びハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1004)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1005)。検証方法は上述のとおりである。検証が成功した場合は、図5のフローS506以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する(ステップS1006)。
【0090】
<アプリケーション実行時の処理>
図11は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がアプリケーションの実行時に行う処理を説明するためのフローチャートである。
【0091】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001(CPU或いはMPU)は、該端末に接続された記録媒体間019について認証処理を実行する(ステップS1101及びS1102)。認証に失敗すると、ハッシュ計算用ミドルウェアは、エラー処理を行う(ステップS1107)。認証に成功すると、ハッシュ実行判断部016は、これから実行しようとしているアプリケーションファイルがハッシュ計算用ミドルウェア017で処理(改ざん検出処理)する必要があるファイルかどうかを判断する(ステップS1103)。例えば、ハッシュ計算用ミドルウェア017が、改ざん検出処理(ハッシュ処理)が不必要なアプリケーションのリストを保持しており、記録媒体019から実行可能なアプリケーション021を読み出した際、該実行可能なアプリケーション021のファイル名を該リストと照合することで、ハッシュ計算用ミドルウェア017での処理が必要かどうかを判断する。
【0092】
ステップS1103でハッシュ処理が必要と判断された場合、ハッシュ計算用ミドルウェア017は、セキュア領域020からハッシュ管理情報023を読み出す(ステップS1104)。
【0093】
その後、ハッシュ計算用ミドルウェア017が上位アプリケーション018から新規アプリケーションの実行命令を受けると、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071、ハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1105)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1106)。検証が成功した場合は、図6のステップS607以下と同じ処理が実行される。検証が失敗した場合は、ハッシュ計算用ミドルウェア017(CPU或いはMPU)は、ハッシュ領域テーブルが改ざんされたと見なし、エラーを表示し、以降の処理を中断する(ステップS1107)。
【0094】
<ハッシュ領域テーブルの更新処理>
図12は、第2の実施形態のハッシュ領域テーブルの検証方法を用いる場合に、ハッシュ計算用ミドルウェア017がハッシュ領域テーブルを更新する際に行う処理を説明するためのフローチャートである。ハッシュ領域テーブルは、例えば、ハッシュ領域テーブルに新たなアプリケーションの情報を追記する場合や、既存のアプリケーションのハッシュを取る領域が修正・追加された場合等に更新される。追加情報は、既存のハッシュ領域テーブルの最後尾に追加されていく。
【0095】
まず、ハッシュ計算用ミドルウェア017を搭載した情報処理端末001と記録媒体019間での認証処理が実行され(ステップS1201)、認証が成功したか否かが判断される(ステップS1202)。
【0096】
認証に失敗すると、エラー処理が実行される(ステップS1208)。一方、認証に成功すると、ハッシュ計算用ミドルウェア017が、上位アプリケーション018から、更新用ハッシュ領域テーブルを受け取る(ステップS1203)。そして、ハッシュ計算用ミドルウェア017(CPU或いはMOU)は、該更新用ハッシュ領域テーブルの署名を検証する(ステップS1204)。更新用ハッシュ領域テーブルは、正規の機関が運営するサーバが発行する更新用のハッシュテーブル或いはユーザがインストールする更新用のハッシュテーブルであり、平文の更新用ハッシュテーブルに該平文更新用ハッシュテーブルのハッシュ値を秘密鍵で暗号化したデータが、デジタル署名として付加されている。
【0097】
更新用ハッシュテーブルの検証は、暗号化された更新用ハッシュテーブルのハッシュ値を、ハッシュ計算用ミドルウェア017が保持する公開鍵003で復号したデータと、平文の更新用ハッシュテーブルより求めたハッシュ値を比較し、値が一致したら検証成功、値が不一致であれば検証失敗とする(ステップS1205)。
【0098】
検証が失敗した場合、ハッシュ計算用ミドルウェア017はエラーを返し、ハッシュ領域テーブルの更新を中止する(ステップS1208)。
【0099】
認証が成功した場合、ハッシュ暗復号部073は、不揮発領域002より暗号化ハッシュ値071及びハッシュ領域テーブル070を読み出し、暗号化ハッシュ値071を復号する(ステップS1206)。続いて、ハッシュ領域テーブル検証部075は、復号したハッシュ値とハッシュ領域テーブル070を検証する(ステップS1207)。検証が成功した場合、図7のステップS708以下と同じ処理が実行される。検証が失敗した場合は、エラーが表示され、処理が中断する(ステップS1208)。
【0100】
なお、ハッシュ領域テーブル更新後の処理(図8)は、第2の実施形態でも適用される。この第2の実施形態の方法によれば、ハッシュ領域テーブルの改ざんを正確にかつ効率的に検出することができる。また、ハッシュ領域テーブルは更新できるようになっているので、状況の変化にも対応することが可能となる。
【0101】
(3)まとめ
上記各実施形態では、アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべきアプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルを用いて、新規のアプリケーションをインストール時、及びアプリケーションファイルの実行時に、リストアップされている部分のみのハッシュ値を計算し、そのハッシュ値を改ざんの検出に用いている。このようにすることにより、改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを正確にかつ効率的に検出することができるようになる。なお、テーブルにリストアップされていないアプリケーションの場合には、アプリケーション全体についてハッシュ値を算出するようにしているので、改ざん検出処理には漏れがない。
【0102】
また、アプリケーションについて予め取得して記録媒体019(HDD)に格納しておくハッシュ値は、記録媒体のセキュア領域に格納されるので、比較元のハッシュ値が改ざんされる危険性も少なくなる。
【0103】
さらに、本実施形態では、ハッシュ領域テーブルは更新できるようになっているので、状況の変化に応じて臨機応変に改ざんされた場合アプリケーション実行時にユーザに被害をもたらす蓋然性が高い領域の改ざんを検出できるようになっている。
【0104】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0105】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【0106】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【0107】
【図1】本発明の第1の実施形態による情報処理システムの機能構成を示す図である。
【図2】ハッシュ領域テーブルの例を示す図である。
【図3】ハッシュテーブルの例を示す図である。
【図4】ハッシュ管理情報の例を示す図である。
【図5】第1の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図6】第1の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図7】第1の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【図8】第1の実施形態による、ハッシュ領域テーブル更新後、更新部分に該当するアプリケーションを実行する際の処理を説明するためのフローチャートである。
【図9】本発明の第2の実施形態による情報処理システムの機能構成を示す図である。
【図10】第2の実施形態による、アプリケーションをインストールする際の処理を説明するためのフローチャートである。
【図11】第2の実施形態による、アプリケーションを実行する際の処理を説明するためのフローチャートである。
【図12】第2の実施形態による、ハッシュ領域テーブルを更新する際の処理を説明するためのフローチャートである。
【符号の説明】
【0108】
001:情報処理端末、002:不揮発領域、003:公開鍵、004:暗号化ハッシュ領域テーブル、005:鍵生成部、006:ハッシュ領域テーブル暗復号部、007:テーブル鍵、008:ID検索部、009:管理情報更新部、010:更新用テーブル復号部、011:ハッシュ値計算部、012:ハッシュ値比較部、013:更新実行判断部、014:ハッシュ領域テーブル更新部、015:アプリケーション実行判断部、016:ハッシュ実行判断部、017:ハッシュ計算用ミドルウェア、018:上位アプリケーション、019:記録媒体、020:セキュア領域、021:実行可能なアプリケーション、022:ハッシュテーブル、023:ハッシュ管理情報、024:セキュア領域管理情報
【特許請求の範囲】
【請求項1】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、
ハッシュ値を、情報格納部に設けられたハッシュテーブルに登録するハッシュ登録部と、を備え、
前記ハッシュ登録部は、
新規のアプリケーションをインストールする際、この新規のアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記新規のアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記新規のアプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記新規のアプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ登録部は、前記新規のアプリケーション全体のハッシュ値を前記ハッシュテーブルに登録することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ハッシュ領域テーブルは、前記ハッシュ領域情報として、複数のアプリケーションそれぞれの識別子と、前記複数のアプリケーションのバイナリイメージのそれぞれについてハッシュを取る領域の数と、ハッシュを取る各領域の開始位置及び終了位置と、を含むことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記ハッシュテーブルは、アプリケーションの識別子と、このアプリケーションに付随するハッシュ値のサイズと、前記ハッシュ値と、を含むことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
さらに、前記ハッシュ登録部が前記ハッシュテーブルに前記ハッシュ値を登録する際に、前記情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備え、
前記ハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズを含み、
前記セキュア領域管理情報は、前記情報格納部におけるセキュア領域空間の空き情報を管理するための情報であることを特徴とする請求項1に記載の情報処理装置。
【請求項6】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、
アプリケーションを実行する際、このアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記実行すべきアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
情報格納部に設けられ、アプリケーションにおける前記ハッシュ領域のハッシュ値を登録したハッシュテーブルから、前記実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部と、
前記ハッシュ計算部によって計算されたハッシュ値と前記ハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部と、
前記ハッシュ比較部による比較結果に基づいて、前記アプリケーションを実行するか否か判断する実行判断部と、
を備えることを特徴とする情報処理装置。
【請求項7】
前記アプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記アプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ比較部は、前記アプリケーション全体のハッシュ値と、前記ハッシュテーブルから読み出された前記アプリケーション全体のハッシュ値とを比較することを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記ハッシュ読み出し部は、前記情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズの情報に基づいて、前記アプリケーションのハッシュ値を前記ハッシュテーブルから読み出すことを特徴とする請求項6に記載の情報処理装置。
【請求項9】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブル(更新前ハッシュ領域テーブル)と、
新規のハッシュ領域情報を受け取る受信部と、
前記新規のハッシュ領域情報を前記更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備え、
前記ハッシュ領域テーブル更新部は、
前記更新前ハッシュ領域テーブルに前記新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部と、
前記判断部で同一のアプリケーションが含まれる場合に、前記更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部と、
を備えることを特徴とする情報処理装置。
【請求項10】
さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、前記更新後ハッシュ領域テーブルに前記更新フラグが立っているか否かを判断する更新フラグ判定部と、
実行すべき前記アプリケーションに対して前記更新フラグが立っている場合に、前記実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部と、
前記ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部内にハッシュテーブルを作成するハッシュテーブル作成部と、
を備えることを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記ハッシュテーブル作成部は、前記情報格納部のセキュアな空き領域に前記ハッシュテーブルを作成することを特徴とする請求項10に記載の情報処理装置。
【請求項12】
さらに、前記ハッシュテーブルを記録した前記情報格納部の位置及び前記ハッシュテーブルのサイズの情報を含むハッシュ管理情報と、前記情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、前記更新前ハッシュテーブルを無効にする管理情報更新部を備えることを特徴とする請求項11に記載の情報処理装置。
【請求項13】
コンピュータを請求項1に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項14】
コンピュータを請求項6に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項15】
コンピュータを請求項9に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項1】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、
ハッシュ値を、情報格納部に設けられたハッシュテーブルに登録するハッシュ登録部と、を備え、
前記ハッシュ登録部は、
新規のアプリケーションをインストールする際、この新規のアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記新規のアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記新規のアプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記新規のアプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ登録部は、前記新規のアプリケーション全体のハッシュ値を前記ハッシュテーブルに登録することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ハッシュ領域テーブルは、前記ハッシュ領域情報として、複数のアプリケーションそれぞれの識別子と、前記複数のアプリケーションのバイナリイメージのそれぞれについてハッシュを取る領域の数と、ハッシュを取る各領域の開始位置及び終了位置と、を含むことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記ハッシュテーブルは、アプリケーションの識別子と、このアプリケーションに付随するハッシュ値のサイズと、前記ハッシュ値と、を含むことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
さらに、前記ハッシュ登録部が前記ハッシュテーブルに前記ハッシュ値を登録する際に、前記情報格納部におけるハッシュ管理情報とセキュア領域管理情報を更新する管理情報更新部を備え、
前記ハッシュ管理情報は、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズを含み、
前記セキュア領域管理情報は、前記情報格納部におけるセキュア領域空間の空き情報を管理するための情報であることを特徴とする請求項1に記載の情報処理装置。
【請求項6】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブルと、
アプリケーションを実行する際、このアプリケーションが前記ハッシュ領域テーブルに登録されている場合に、前記ハッシュ領域テーブルから対応する前記ハッシュ領域情報を取得するハッシュ領域情報取得部と、
前記ハッシュ領域情報に基づいて、前記実行すべきアプリケーションの前記ハッシュ領域のハッシュ値を計算するハッシュ計算部と、
情報格納部に設けられ、アプリケーションにおける前記ハッシュ領域のハッシュ値を登録したハッシュテーブルから、前記実行すべきアプリケーションのハッシュ値を読み出すハッシュ読み出し部と、
前記ハッシュ計算部によって計算されたハッシュ値と前記ハッシュ読み出し部によって読み出されたハッシュ値を比較するハッシュ比較部と、
前記ハッシュ比較部による比較結果に基づいて、前記アプリケーションを実行するか否か判断する実行判断部と、
を備えることを特徴とする情報処理装置。
【請求項7】
前記アプリケーションが前記ハッシュ領域テーブルに登録されていない場合には、前記ハッシュ計算部は、前記アプリケーションの全体についてハッシュ値を計算し、
前記ハッシュ比較部は、前記アプリケーション全体のハッシュ値と、前記ハッシュテーブルから読み出された前記アプリケーション全体のハッシュ値とを比較することを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記ハッシュ読み出し部は、前記情報格納部におけるハッシュ管理情報であって、アプリケーション識別子と、このアプリケーション識別子に対応するアプリケーションのハッシュ値が記録されている場所の先頭位置と、前記ハッシュ値のサイズの情報に基づいて、前記アプリケーションのハッシュ値を前記ハッシュテーブルから読み出すことを特徴とする請求項6に記載の情報処理装置。
【請求項9】
データの改ざんを検出するための情報処理装置であって、
アプリケーションの改ざんを防ぎたい部分であって、検証時にハッシュを取るべき前記アプリケーションの一部の領域(ハッシュ領域)の情報をリストアップしているハッシュ領域テーブル(更新前ハッシュ領域テーブル)と、
新規のハッシュ領域情報を受け取る受信部と、
前記新規のハッシュ領域情報を前記更新前ハッシュ領域テーブルに反映して、更新後ハッシュ領域テーブルを生成するハッシュ領域テーブル更新部と、を備え、
前記ハッシュ領域テーブル更新部は、
前記更新前ハッシュ領域テーブルに前記新規のハッシュ領域情報と同一のアプリケーションが含まれるか否か判断する判断部と、
前記判断部で同一のアプリケーションが含まれる場合に、前記更新前ハッシュ領域テーブルにおける該当のアプリケーションに更新フラグを立てるフラグ設定部と、
を備えることを特徴とする情報処理装置。
【請求項10】
さらに、ハッシュ領域テーブルの更新後にアプリケーションを実行する際に、前記更新後ハッシュ領域テーブルに前記更新フラグが立っているか否かを判断する更新フラグ判定部と、
実行すべき前記アプリケーションに対して前記更新フラグが立っている場合に、前記実行すべきアプリケーションに対応する更新後のハッシュ領域情報に基づいて、ハッシュ値を計算するハッシュ計算部と、
前記ハッシュ計算部で得られたハッシュ値に基づいて、情報格納部内にハッシュテーブルを作成するハッシュテーブル作成部と、
を備えることを特徴とする請求項9に記載の情報処理装置。
【請求項11】
前記ハッシュテーブル作成部は、前記情報格納部のセキュアな空き領域に前記ハッシュテーブルを作成することを特徴とする請求項10に記載の情報処理装置。
【請求項12】
さらに、前記ハッシュテーブルを記録した前記情報格納部の位置及び前記ハッシュテーブルのサイズの情報を含むハッシュ管理情報と、前記情報格納部のセキュアな空き領域を管理するセキュア領域管理情報を更新し、前記更新前ハッシュテーブルを無効にする管理情報更新部を備えることを特徴とする請求項11に記載の情報処理装置。
【請求項13】
コンピュータを請求項1に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項14】
コンピュータを請求項6に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【請求項15】
コンピュータを請求項9に記載の情報処理装置として機能させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2010−102579(P2010−102579A)
【公開日】平成22年5月6日(2010.5.6)
【国際特許分類】
【出願番号】特願2008−274573(P2008−274573)
【出願日】平成20年10月24日(2008.10.24)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成22年5月6日(2010.5.6)
【国際特許分類】
【出願日】平成20年10月24日(2008.10.24)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]