(57)【特許請求の範囲】
【請求項１】
改ざん検証の対象となるファイルを検索する検索部と、
前記検索部によって検索された前記ファイルに対して、改ざん検証を行う検証部と、
前記検索部によるファイル検索の進捗状況と、前記検証部による改ざん検証の進捗状況との双方を表示画面に表示する表示制御部と、
前記検索部の検索待ちを管理する検索待ち管理部と、
前記検証部の検証待ちを管理する検証待ち管理部と、
前記検索部と前記検証部との検索処理、及び検証処理を並行処理可能な並行処理部と、
を備え、
前記検索部は、前記検索待ちを取り出して、改ざん検証の対象となる前記ファイルを検索して、前記検証待ちに登録し、
前記検証部は、前記検証待ちを取り出して、改ざん検証を行い、
前記並行処理部は、前記検索部が前記ファイルを検索している間に前記検証部で検証処理を実行させることを特徴とする検証装置。
【請求項２】
請求項１に記載の検証装置において、
少なくとも一部の前記ファイルは、画像データを含み、
前記表示制御部は、前記ファイル検索および前記改ざん検証の少なくとも一方の進捗に従って、前記画像データの表示用画像を前記表示画面に表示する
ことを特徴とする検証装置。
【請求項３】
請求項２に記載の検証装置において、
前記検索部、前記検証部、および前記表示制御部の少なくとも１つは、前記画像データを画素数変換して、前記表示用画像を生成する
ことを特徴とする検証装置。
【請求項４】
請求項１ないし３いずれか１項記載の検証装置において、
前記検索部は、前記検索待ちのフォルダ内にサブフォルダを検出すると、前記サブフォルダを前記検索待ちに登録する
ことを特徴とする検証装置。
【請求項５】
請求項１ないし４いずれか１項記載の検証装置において、
外部からの指示入力に従って、前記検索待ちにファイルまたはフォルダを登録する入力処理部を備えた
ことを特徴とする検証装置。
【請求項６】
請求項１ないし請求項５のいずれか１項に記載の検証装置において、
前記検索部は、改ざん検証の対象として予め定められた特定のファイルか否かを判別することにより、改ざん検証の対象とするファイルを検索する
ことを特徴とする検証装置。
【請求項７】
改ざん検証の対象となるファイルを、ファイル内のファイル種別を示すデータから検索する検索部と、
前記検索部の検索待ちを管理する検索待ち管理部と、
前記ファイル種別の解析結果に従って検索された前記ファイル内から改ざん検証すべきデータ領域と前記データ領域の改ざんの検証用データと画像データとを抽出するデータ抽出部と、前記データ抽出部によって抽出された前記データ領域を前記検証用データに照合することにより前記データ領域の改ざんを判別する照合部と、前記データ抽出部によって抽出された前記画像データに対応する表示用画像を一時記憶する一時記憶部と、を有する検証部と、
前記検証部の検証待ちを管理する検証待ち管理部と、
前記照合部による改ざん検証の結果と、前記一時記憶部に一時記憶される前記表示用画像とを、表示画面に表示する表示制御部と
前記検索部と前記検証部との検索処理、及び検証処理を並行処理可能な並行処理部と、
を備え、
前記検索部は、前記検索待ちを取り出して、改ざん検証の対象となる前記ファイルを検索して、前記検証待ちに登録し、
前記検証部は、前記検証待ちを取り出して、改ざん検証を行い、
前記並行処理部は、前記検索部が前記ファイルを検索している間に前記検証部で検証処理を実行させることを特徴とする検証装置。
【請求項８】
改ざん検証の対象となるファイルを検索する検索ステップと、
前記検索ステップによって検索された前記ファイルに対して、改ざん検証を行う検証ステップと、
前記検索ステップによるファイル検索の進捗状況と、前記検証ステップによる改ざん検証の進捗状況との双方を表示画面に表示する表示制御ステップと、
前記検索ステップの検索待ちを管理する検索待ち管理ステップと、
前記検証ステップの検証待ちを管理する検証待ち管理ステップと、
前記検索ステップと前記検証ステップとの検索処理、及び検証処理を並行処理する並行処理ステップと、を含み、
前記検索ステップは、前記検索待ちを取り出して、改ざん検証の対象となる前記ファイルを検索して、前記検証待ちに登録し、
前記検証ステップは、前記検証待ちを取り出して、改ざん検証を行い、
前記並行処理ステップは、前記検索ステップで前記ファイルを検索している間に前記検証ステップで検証処理を実行させる
ことを特徴する検証プログラム。
【請求項９】
請求項８に記載の検証プログラムにおいて、
少なくとも一部の前記ファイルは、画像データを含み、
前記表示制御ステップでは、前記ファイル検索および前記改ざん検証の少なくとも一方の進捗に従って、前記画像データの表示用画像を前記表示画面に表示する
ことを特徴とする検証プログラム。
【請求項１０】
請求項９に記載の検証プログラムにおいて、
前記検索ステップ、前記検証ステップ、および前記表示制御ステップの少なくとも１つでは、前記画像データを画素数変換して、前記表示用画像を生成する
ことを特徴とする検証プログラム。
【請求項１１】
請求項８ないし１０のいずれか１項に記載の検証プログラムにおいて、
前記検索ステップでは、前記検索待ちのフォルダ内にサブフォルダを検出すると、前記サブフォルダを前記検索待ちに登録する
ことを特徴とする検証プログラム。
【請求項１２】
請求項８ないし請求項１１のいずれか１項に記載の検証プログラムにおいて、
外部からの指示入力に従って、前記検索待ちにファイルまたはフォルダを登録する入力処理ステップをコンピュータに実行させる
ことを特徴とする検証プログラム。
【請求項１３】
請求項８ないし請求項１２のいずれか１項に記載の検証プログラムにおいて、
前記検索ステップでは、改ざん検証の対象として予め定められた特定のファイルか否かを判別することにより、改ざん検証の対象とするファイルを検索する
ことを特徴とする検証プログラム。
【請求項１４】
改ざん検証の対象となるファイルを、ファイル内のファイル種別を示すデータから検索する検索ステップと、
前記検索ステップの検索待ちを管理する検索待ち管理ステップと、
前記ファイル種別の解析結果に従って検索された前記ファイル内から改ざん検証すべきデータ領域と前記データ領域の改ざんの検証用データと画像データとを抽出するデータ抽出ステップと、前記データ抽出ステップによって抽出された前記データ領域を前記検証用データに照合することにより前記データ領域の改ざんを判別する照合ステップと、前記データ抽出ステップによって抽出された前記画像データに対応する表示用画像を一時記憶する一時記憶ステップと、を有する検証ステップと、
前記検証ステップの検証待ちを管理する検証待ち管理ステップと、
前記照合ステップによる改ざん検証の結果と、前記一時記憶ステップで一時記憶される前記表示用画像とを、表示画面に表示する表示制御ステップと、
前記検索ステップと前記検証ステップとの検索処理、及び検証処理を並行処理する並行処理ステップと、
を備え、
前記検索ステップは、前記検索待ちを取り出して、改ざん検証の対象となる前記ファイルを検索して、前記検証待ちに登録し、
前記検証ステップは、前記検証待ちを取り出して、改ざん検証を行い、
前記並行処理ステップは、前記検索ステップで前記ファイルを検索している間に前記検証ステップで検証処理を実行させることを特徴とする検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルの改ざんを検証する技術に関する。
【背景技術】
【０００２】
近年、電子カメラを用いて証明写真を撮影する機会が増えている。この種の証明写真は電子ファイルとして記録される。そのため、証明写真を通信回線により迅速に提出することが容易となる。また、多数の証明写真をデータベースとして管理することも容易となる。
その反面、この種の電子ファイルは、身近な画像処理ソフト等を用いて、容易に改ざんできる。そのため、電子ファイルの改ざんを検証する技術が重要となる。
【０００３】
この種の改ざん検証の技術として、下記の特許文献１が知られている。この従来技術では、オリジナルのファイルからハッシュ関数を計算して検証用データを求める。この検証用データはファイル内に保存される。
後日、ファイルから再計算したハッシュ関数のデータと、このファイル内の検証用データとの値を照合する。両データが不一致であれば、ファイルが改ざんされたと判断できる。
【特許文献１】特開平１１−２１５４５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
複数のファイルについて改ざん検証を行う場合を考える。この場合、従来技術では、上述した処理を何回も繰り返す必要がある。そのため、改ざん検証を繰り返す内に、ユーザーは作業全体の正確な進捗状況が分かりづらくなる。また、改ざん検証の繰り返し中は、新たなファイルを随時に追加することができない。
以上のように、従来の改ざん検証では、使い勝手や機敏性の点で改善の余地があった。そこで、本発明は、改ざん検証の使い勝手を高めることを目的とする。
【課題を解決するための手段】
【０００５】
《１》  本発明の検証装置は、検索部、検証部、および表示制御部に加えて、検索部の検索待ちを管理する検索待ち管理部、検証部の検証待ちを管理する検証待ち管理部、及び検索部と検証部との検索処理、及び検証処理を並行処理する並行処理部を備える。表示制御部は、検索部によるファイル検索の進捗状況と、検証部による改ざん検証の進捗状況との双方を表示画面に表示する。検索部は、改ざん検証の対象となるファイルを検索する。検証部は、検索部によって検索されたファイルに対し、改ざん検証を行う。検索部は、検索されたファイルを検証待ちに登録する。検証部は、検証待ちを取り出して、改ざん検証を行う。並行処理部は、検索部がファイルを検索している間に、検証部で検証処理を実行する。
《２》  なお好ましくは、少なくとも一部のファイルは、画像データを含む。表示制御部は、ファイル検索および改ざん検証の少なくとも一方の進捗に従って、この画像データの表示用画像を表示画面に表示する。
《３》  また好ましくは、検索部、検証部、および表示制御部の少なくとも１つは、画像データを画素数変換して表示用画像を生成する。
《４》  また好ましくは、検索部は、検索待ちに登録されるフォルダ内から、サブフォルダを検出すると、そのサブフォルダを検索待ちに登録する。
《５》  なお好ましくは、入力処理部を備える。この入力処理部は、外部からの指示入力に従って、検索待ちにファイルまたはフォルダを登録する。
《６》  また好ましくは、検索部は、改ざん検証の対象として予め定められた特定のファイルか否かを判別する。検索部は、この判別によって改ざん検証の対象とするファイルを検索する。
《７》  本発明の別の検証装置は、検索部、検索待ち管理部、データ抽出部と照合部と一時記憶部とを有する検証部、検証待ち管理部、表示制御部、および並行処理部を備える。
検索部は、改ざん検証の対象となるファイルを、ファイル内のファイル種別を示すデータから検索する。検索待ち管理部は、検索部の検索待ちを管理する。
データ抽出部は、ファイル種別の解析結果に従って、検索されたファイル内から、改ざん検証すべきデータ領域と、データ領域の改ざんの検証用データと、画像データとを抽出する。照合部は、データ抽出部によって抽出されたデータ領域を検証用データに照合することにより、データ領域の改ざんを判別する。一時記憶部は、データ抽出部によって抽出された画像データに対応する表示用画像を一時記憶する。
検証待ち管理部は、検証部の検証待ちを管理する。表示制御部は、照合部による改ざん検証の結果と、一時記憶部に一時記憶される表示用画像とを、表示画面に表示する。並行処理部は、検索部と検証部との検索処理、及び検証処理を並行処理する。
《８》〜《１４》  本発明の検証プログラムは、上記《１》〜《７》に対応する内容である。
【発明の効果】
【０００６】
本発明によれば、改ざん検証の使い勝手を高めることができる。
【発明を実施するための最良の形態】
【０００７】
《実施形態の構成説明》
図１は、検証装置１１を示すブロック図である。この検証装置１１は、コンピュータと検証プログラムを用いて、ソフトウェア的に実現される。
図１において、入力処理部１２は、ユーザー操作に従って、改ざん検証の候補を検索キュー１３に登録する。検索部１４は、この検索キュー１３内から、改ざん検証の対象ファイルを検索する。検索部１４は、検索した対象ファイルを、検証キュー１５に登録する。検証部１６は、検証キュー１５内の対象ファイルについて改ざん検証を行う。なお、この検証部１６は、データ抽出部２１、照合部２２、画素数変換部２３、および一時記憶部２４を備える。
表示制御部１８は、上述した検索部１４の進捗状況、検証部１６の進捗状況、および改ざん検証の結果を、表示画面に表示する。
【０００８】
《メインスレッドの動作説明》
図２は、検証プログラムのメインスレッドを示す流れ図である。このメインスレッドは、図１に示す入力処理部１２および表示制御部１８の機能に該当する。以下、図２に示すステップ番号に沿って、この動作を説明する。
【０００９】
ステップＳ１：  まず、ユーザーは、コンピュータ上において検証プログラムを起動する。この起動に従って、メインスレッドは、ウィンドウ（図３，図４参照）を作成する。このウィンドウのメッセージキューを介して、メインスレッドは、ユーザー操作などのメッセージを受け取る。
【００１０】
ステップＳ２：  メインスレッドの起動時処理において、検索スレッド（後述）の作成と起動が行われる。これ以降、この検索スレッドは、メインスレッドと並行あるいは時分割に動作する。
【００１１】
ステップＳ３：  メインスレッドの起動時処理において、検証スレッド（後述）の作成と起動が行われる。これ以降、この検証スレッドは、メインスレッドや検索スレッドと並行あるいは時分割に動作する。
【００１２】
ステップＳ４：  メッセージキューには、ユーザー操作のメッセージや、他のスレッドからのメッセージが、ＯＳ（オペレーティングシステム）を介して蓄積される。メインスレッドは、メッセージキューから先頭のメッセージを逐次に取り出す。メインスレッドは、取り出したメッセージの内容に従って、ステップＳ５〜Ｓ１２の分岐処理を実行する。
なお、メインスレッドは、ウィンドウの終了操作を検知すると、ステップＳ１３以降の終了処理へ優先的に移行する。
【００１３】
ステップＳ５：  このステップでは、ファイル／フォルダの追加メッセージに対応する分岐処理を実行する。
まず、メインスレッドは、メッセージキューを介して、このファイル／フォルダの追加メッセージを取得する。この追加メッセージは、ファイル／フォルダのドラッグ＆ドロップやメニュー操作によって発生する。また、コマンドラインオプション（コマンドラインに付加されるテキストデータ）を介して、ファイル／フォルダの追加メッセージを発生させることもできる。さらに、他のアプリケーションから発行されるプロセス間通信により、ファイル／フォルダの追加メッセージを発生させることもできる。
入力処理部１２は、この追加メッセージから、ファイル／フォルダの参照情報を取得する。参照情報は、実データの所在などを示す小容量のデータである。入力処理部１２は、取得した参照情報を検索キュー１３に追加登録する。
メインスレッドは、この検索キュー１３の登録が完了すると、直ちにＯＳに制御を戻す。
【００１４】
ステップＳ６：  このステップでは、検証リストの再描画メッセージに対応する分岐処理を実行する。
まず、メインスレッドは、検証リストの再描画メッセージを、メッセージキューを介して取得する。表示制御部１８は、この再描画指示に従って、図３または図４に示す検証リストの表示７１を更新する。
メインスレッドは、この表示更新を完了すると、直ちにＯＳに制御を戻す。
【００１５】
ステップＳ７：  このステップでは、検証リストの並べ替えメッセージに対応する分岐処理を実行する。
ユーザーは、検証リストの表示７１の項目８１をクリックすることにより、並べ替えメッセージを発生させることができる。
メインスレッドは、この並べ替えメッセージを、メッセージキューを介して取得する。表示制御部１８は、この並べ替え指示された項目８１の内容に従って、検証リストのリストデータを並べ替える。次に、メインスレッドは、並び替えを完了した検証リストの再描画要求をＯＳに対して発行する。メインスレッドは、これら動作の後、直ちにＯＳに制御を戻す。
【００１６】
ステップＳ８：  このステップでは、検証リストのフォーカス選択に対応する分岐処理を実行する。
ユーザーは、検証リストの表示７１のリストデータ８２をクリックすることにより、該当するファイルをフォーカス選択することができる。
メインスレッドは、このフォーカス選択を、メッセージキューを介して取得する。表示制御部１８は、フォーカス選択されたファイルを検証リストに照会し、該当ファイルの表示用画像の参照情報を情報取得する。表示制御部１８は、この参照情報に従って、一時記憶部２４内から表示用画像を読み出す。表示制御部１８は、この表示用画像を、図４に示す表示域７７に表示する。メインスレッドは、これら動作の後、直ちにＯＳに制御を戻す。
なお、ユーザーによって複数ファイルがフォーカス選択された場合、該当する複数の表示用画像を、表示域７７に並べて表示することが好ましい。
【００１７】
ステップＳ９：  このステップでは、検証リストのリスト削除に対応する分岐処理を実行する。
ユーザーは、表示７１のファイルをフォーカス選択した状態で、削除キーやメニュー操作を行うことにより、不要なリストの削除指示を行うことができる。
メインスレッドは、この削除指示を、メッセージキューを介して取得する。メインスレッド（表示制御部１８）は、この削除指示されたリストを検証リスト内から削除する。次に、メインスレッドは、検証リストの再描画要求をＯＳに対して発行する。メインスレッドは、これら動作の後、直ちにＯＳに制御を戻す。
【００１８】
ステップＳ１０：  このステップでは、中断指示に対応する分岐処理を実行する。
ユーザーは、図３に示す中断ボタン８３をクリックすることにより、検索処理および検証処理の中断指示を行うことができる。
メインスレッドは、この中断指示を、メッセージキューを介して取得する。入力処理部１２は、この中断指示に従って、検索キュー１３および検証キュー１５の内容をクリアする。この処理によって、後述する検索スレッドおよび検証スレッドの動作が中断する。メインスレッドは、これら動作の後、直ちにＯＳに制御を戻す。
【００１９】
ステップＳ１１：  検索スレッドは、メッセージキューを介して、検索処理の進捗状況の表示更新をメインスレッドに要求する。表示制御部１８は、この要求に従って、図３に示す検索状況の進捗表示７２を書き換える。
なお、表示制御部１８は、ウィンドウの余白部分に、検索中のファイルに含まれる表示用画像（縮小画像など）をコマ送り状に逐次表示してもよい。この場合、表示用画像の表示サイズを調整するため、検索部１４または表示制御部１８のいずれかにおいて画素数変換を実施することが好ましい。
メインスレッドは、これらの動作の後、直ちにＯＳに制御を戻す。
【００２０】
ステップＳ１２：  検証スレッドは、メッセージキューを介して、検証処理の進捗状況の表示更新をメインスレッドに要求する。表示制御部１８は、この要求に従って、図３に示す検索状況の進捗表示７３およびプログレスバー７４を書き換える。
なお、表示制御部１８は、ウィンドウの余白部分に、検証中のファイルに含まれる表示用画像（縮小画像など）をコマ送り状に逐次表示してもよい。この場合、表示用画像の表示サイズを調整するため、検証部１６または表示制御部１８のいずれかにおいて画素数変換を実施することが好ましい。
メインスレッドは、これらの動作の後、直ちにＯＳに制御を戻す。
【００２１】
ステップＳ１３：  ユーザーは、図４に示す終了ボタン８４などを用いて、検証プログラムの終了指示を行うことができる。この終了指示は、メインスレッドに優先的に伝達される。メインスレッドは、この終了指示に従って、検索キュー１３および検証キュー１５の内容をクリアする。この処理によって、検索スレッドおよび検証スレッドの処理は中断する。
【００２２】
ステップＳ１４：  続いて、メインスレッドは、検索スレッドおよび検証スレッドに対して終了指示を与える。
【００２３】
ステップＳ１５：  メインスレッドは、検索スレッドおよび検証スレッドの終了を待機する。
【００２４】
ステップＳ１６：  メインスレッドは、検索スレッドおよび検証スレッドの終了を確認すると、ステップＳ１で作成したウィンドウをメモリ上から破棄する。以上の動作により、検証プログラムの動作が終了する。
【００２５】
《検索スレッドの動作説明》
次に、検索スレッドの具体的動作について説明する。
図５は、この検索スレッドの動作を示す流れ図である。この検索スレッドは、図１に示す検索部１４および検索キュー１３の機能に該当する。
この検索スレッドの一連の動作は、メインスレッドから終了指示があるまで繰り返し実施される。また、メインスレッドから終了指示があると、検索スレッドはメモリ上から破棄される。
【００２６】
ステップＳ３１：  検索部１４は、一定期間おきに、検索キュー１３の要素数を確認する。検索部１４は、検索キュー１３の要素が空であると判断すると、ステップＳ３２に動作を移行する。一方、検索部１４は、検索キュー１３に要素有りと判断すると、ステップＳ３４に動作を移行する。
【００２７】
ステップＳ３２：  検索部１４は、検索対象フォルダ名を示すテキストデータをＮＵＬＬ値に置き換えて、検索の進捗状況の更新をメインスレッドに要求する（ステップＳ１１参照）。その結果、図３に示す検索処理の進捗表示７２は消去される。
【００２８】
ステップＳ３３：  検索部１４は、検索キュー１３が空のため、ＯＳ側に制御を戻してアイドリング状態に入る。ＯＳ側では、所定時間の経過を検出すると、検索部１４を再起動する。再起動した検索部１４は、ステップＳ３１に戻って動作を再開する。
【００２９】
ステップＳ３４：  検索部１４は、検索キュー１３から先頭要素を取り出す。
【００３０】
ステップＳ３５：  検索部１４は、取り出した要素の親フォルダ名のパス表示を、検索対象フォルダ名を示すテキストデータに代入する。続いて、検索部１４は、検索の進捗状況の更新をメインスレッドに要求する（ステップＳ１１参照）。その結果、図３に示す検索処理の進捗表示７２に、現在検索中のフォルダ名が表示される。
【００３１】
ステップＳ３６：  検索部１４は、取り出した要素の種別を判定する。
例えば、検索部１４は、要素の命名規則（ファイル拡張子など）から種別判定を行う。また例えば、検索部１４は、ファイルの実データにアクセスする。検索部１４は、この実データから、ファイル種別を示すタグデータを読み出す。その結果、たとえファイル名が書き換えられていても、ファイル種別を誤りなく判定することができる。
【００３２】
このような種別判定に従って、検索部１４は、要素を次の種別に分類する。
(1)フォルダ
(2)対象ファイル（例えば、画像ファイルの場合は、ＪＰＥＧ、ＴＩＦＦ、ＲＡＷファイルなど）
(3)対象外ファイル
【００３３】
検索部１４は、要素の種別をフォルダと判定すると、ステップＳ３８に動作を移行する。また、検索部１４は、要素の種別を対象ファイルと判定すると、ステップＳ３７に動作を移行する。一方、検索部１４は、要素の種別を対象外ファイルと判定すると、ステップＳ３１に動作を戻す。
【００３４】
ステップＳ３７：  検索部１４は、ステップＳ３６で判定した対象ファイルの参照情報と、その種別情報とを、検証キュー１５に追加登録する。この動作の後、検索部１４は、ステップＳ３１に動作を戻す。
【００３５】
ステップＳ３８：  検索部１４は、検索したフォルダ名のパス表示を、検索対象フォルダ名を示すテキストデータに代入する。続いて、検索部１４は、検索の進捗状況の更新をメインスレッドに要求する（ステップＳ１１参照）。その結果、図３に示す検索処理の進捗表示７２に、現在検索中のフォルダ名が表示される。
【００３６】
ステップＳ３９：  検索部１４は、フォルダ内の要素１つ１つについて、ステップＳ３６と同様の種別判定を実施する。
検索部１４は、フォルダ内にサブフォルダを発見すると、ステップＳ４０に動作を移行する。また、検索部１４は、フォルダ内に対象ファイルを発見すると、ステップＳ４１に動作を移行する。一方、検索部１４は、フォルダ内に対象外ファイルを発見すると、ステップＳ４２に動作を移行する。
【００３７】
ステップＳ４０：  検索部１４は、発見したサブフォルダを、検索キュー１３に追加的に登録する。この検索キュー１３に差し戻す処理により、サブフォルダ内の検索処理が後から実施される。この処理の後、検索部１４は、ステップＳ４２に動作を移行する。
【００３８】
ステップＳ４１：  検索部１４は、ステップＳ３９で発見した対象ファイルの参照情報と、その種別情報とを、検証キュー１５に追加的に登録する。この動作の後、検索部１４は、ステップＳ４２に動作を移行する。
【００３９】
ステップＳ４２：  検索部１４は、フォルダ内の全要素について検索処理を完了したと判定すると、ステップＳ３１に動作を戻す。一方、検索部１４は、フォルダ内の全要素について検索処理を完了していないと判定すると、ステップＳ３９に動作を戻す。
【００４０】
《検証スレッドの動作説明》
次に、検証スレッドの具体的動作について説明する。
図６は、検証スレッドの動作を示す流れ図である。この検証スレッドは、図１に示す検証部１６および検証キュー１５の動作に該当する。
この検証スレッドの一連の動作は、メインスレッドから終了指示があるまで繰り返し実施される。また、メインスレッドから終了指示があると、検証スレッドはメモリ上から破棄される。
【００４１】
ステップＳ５１：  検証部１６は、一定期間おきに、検証キュー１５の要素数を確認する。検証部１６は、検証キュー１５の要素が空であると判断すると、ステップＳ５２に動作を移行する。一方、検証部１６は、検証キュー１５に要素有りと判断すると、ステップＳ５４に動作を移行する。
【００４２】
ステップＳ５２：  検証部１６は、検証対象ファイル名を示すテキストデータをＮＵＬＬ値に置き換えて、改ざん検証の進捗状況の更新をメインスレッドに要求する（ステップＳ１２参照）。その結果、図３に示す改ざん検証の進捗表示７３が消去される。
【００４３】
ステップＳ５３：  検証部１６は、検証キュー１５が空のため、ＯＳに制御を戻してアイドリング状態に入る。このアイドリング状態により、処理負荷の軽減が図られる。ＯＳ側は、所定時間の経過を検出すると、検証部１６を再起動する。再起動した検証部１６は、ステップＳ５１に戻って動作を再開する。
【００４４】
ステップＳ５４：  検証部１６は、検証キュー１５から先頭要素を取り出す。
【００４５】
ステップＳ５５：  検証部１６は、取り出した要素のファイル名を、検証対象ファイル名を示すテキストデータに代入する。続いて、検証部１６は、改ざん検証の進捗状況の更新をメインスレッドに要求する（ステップＳ１２参照）。その結果、図３に示す検証処理の進捗表示７３に、現在検証中のファイル名が表示される。
【００４６】
ステップＳ５６：  検証部１６は、検証リストの登録件数（検証済みのファイル件数）を求める。また、検証部１６は、プログラム起動時から現在までの検証キュー１５の総登録件数（対象ファイルの総件数）を積算する。また、検証部１６は、検証済みのファイル件数と対象ファイルの総件数との比率を求める。検証部１６は、この比率に従って、プログレスバー７４の書き換えをメインスレッドに要求する（ステップＳ１２参照）。
その結果、図３に示すプログレスバー７４には、検証処理の進捗具合を示すバーが表示される。
【００４７】
ステップＳ５７：  検証部１６内のデータ抽出部２１は、検証キュー１５から、対象ファイルの参照情報と種別情報を取得する。データ抽出部２１は、参照情報に基づいて、対象ファイルの実データにアクセスする。さらに、データ抽出部２１は、種別情報に応じて、実データをセグメントに分類する。この分類に従って、データ抽出部２１は、改ざん検証すべきデータ領域、検証用データ、および表示用の画像データを抽出する。
【００４８】
ステップＳ５８：  検証部１６内の照合部２２は、データ領域を検証用データに照合してデータ領域の改ざんを判別する。
なお、照合部２２は、ファイル内の情報部（EXIF情報など）、画像部全体、およびクロップ画像部ごとに改ざんの判別を行う。
【００４９】
ステップＳ５９：  検証部１６内の画素数変換部２３は、ステップＳ５７で得た表示用の画像データを、図４に示す表示域７７の表示サイズに合わせて画素数変換する。画素数変換部２３は、画素数変換後の表示用画像を一時記憶部２４に一時記憶する。
【００５０】
ステップＳ６０：  検証部１６は、照合部２２による改ざん検証の結果、一時記憶部２４内の表示用画像の参照情報などをまとめて、レポートデータを構築する。
【００５１】
ステップＳ６１：  検証部１６は、ステップＳ６０で構築したレポートデータを、検証リストに追加する。続いて、検証部１６は、検証リストの再描画をメインスレッドに要求する（ステップＳ６参照）。この処理により、図３に示す検証リストのリストデータ８２の表示が１行ずつ増える。なお、ウィンドウの表示幅を超える場合には、スクロールバー表示に切り替わる。このような動作の後、検証部１６は、ステップＳ５１に動作を戻す。
【００５２】
《実施形態の効果など》
本実施形態では、ユーザーは、ファイル／フォルダの追加操作を行うだけでよい。その後の検索および検証については、検索キュー１３および検証キュー１５の要素数に応じて自動的に実施される。したがって、ユーザーは、改ざん検証作業に当たって、ファイル／フォルダの追加操作を最低限覚えればよい。そのため、改ざん検証作業に短時間で習熟することが可能になる。
【００５３】
また、本実施形態では、図３に示すように、検索処理の進捗状況と、検証処理の進捗状況との双方が表示される。そのため、ユーザーは、双方の処理の進捗状況を把握することができる。
【００５４】
特に、ユーザーは、検索処理の空き具合を判断できる。そのため、ユーザーは、この検索処理の空き具合を応じて、検索キュー１３にファイルやフォルダをタイミング良く追加できる。その結果、大量のファイルやフォルダについて効率良く改ざん検証を実行することが可能になる。
【００５５】
また、本実施形態では、検索処理と検証処理とをマルチスレッド化する。そのため、検索処理と検証処理とをパイプライン式に並行処理することができる。通常、検索処理ではファイルの実データにアクセスする。そのため、ハードディスクなどの物理デバイスへのアクセス時間が支配的となる。その結果、コンピュータ内のＣＰＵはアクセス待ちの状態がしばしば発生する。一方、検証処理においても、ファイルの実データに再びアクセスする必要がある。しかし、一般的なＯＳでは、直前の検索処理においてアクセスされた実データは、メモリ上のファイルキャッシュ内に保持される。そのため、検証処理では、ファイルキャッシュ内から実データを読み出せばよい。そのため、物理デバイスへのアクセス時間は殆ど発生しない。むしろ、検証処理では、改ざん検証のために複雑な演算処理が主となるため、ＣＰＵ側に処理負荷が集中する。
【００５６】
したがって、検索処理において物理デバイスにアクセスしている期間は、アクセス待ち状態のＣＰＵを有効利用して、検証処理を効率的に進めることができる。その結果、改ざん検証にかかるトータルの処理時間を短縮できる。
【００５７】
また、本実施形態では、検索処理や検証処理の進捗に従って、処理中の表示用画像をコマ送り状に表示することができる。したがって、ユーザーは、この表示用画像の表示を見ながら、改ざん検証作業がどのファイルまで進んでいるかを視覚的に把握できる。
【００５８】
さらに、本実施形態では、表示用画像の表示サイズを、検索部１４、検証部１６、および表示制御部１８のいずれかにおいて調整する。したがって、ファイルによって異なる表示用画像の表示サイズを一律に揃えることが可能になる。その結果、コマ送り状の進捗表示において、表示サイズが激しく変動するといった不具合を解消できる。
【００５９】
また、本実施形態では、検索キュー１３を設ける。この検索キュー１３によって、入力処理部１２と検索部１４との間の滞貨分を検索待ちとして保持できる。その結果、入力処理部１２は、検索部１４の動作とは独立して、ファイル／フォルダを検索キュー１３に随時に追加することが可能になる。
【００６０】
さらに、本実施形態では、検証キュー１５を設ける。この検証キュー１５によって、検索部１４と検証部１６との間の滞貨分を検証待ちとして保持することが可能になる。その結果、検索部１４は、検証部１６の動作と独立して、対象ファイルを検証キュー１５に追加することが可能になる。
【００６１】
また、本実施形態では、検索部１４が、フォルダ内を検索中にサブフォルダを発見すると、このサブフォルダを検索キュー１３に差し戻す。その結果、検索部１４は、このサブフォルダ内について検索処理を後から実施できる。この動作を繰り返すことにより、サブフォルダを下位階層へ順に辿りながら、検索処理を漏れなく実施することができる。
【００６２】
さらに、本実施形態では、検索部１４は、ファイルの種別を判定する。検索部１４は、この種別情報は、検証キュー１５内に登録する。したがって、データ抽出部２１は、この種別情報を、そのファイルの改ざん検証に際して検証キュー１５内から取得できる。そのため、改ざん検証においてファイル種別を再び判別する必要がない。したがって、改ざん検証の処理負荷を軽減できる。
【００６３】
また、本実施形態では、一時記憶部２４が表示用画像を一時記憶する。したがって、表示制御部１８は、この一時記憶部２４にアクセスすることで、表示用画像を迅速に切り換え表示することができる。
以上の作用効果により、改ざん検証の使い勝手や機敏性を高めることが可能になる。
【００６４】
《実施形態の補足事項》
なお、上述した実施形態では、単体のコンピュータを使用して改ざん検証作業を実行するケースについて説明した。しかしながら、本発明はこれに限定されるものではない。例えば、インターネット上に構築されるサーバーシステムの場合には、複数のサーバーコンピュータを分散的に機能させて、検証装置１１を実現してもよい。また例えば、検証装置１１の構成の一部または全部をハードウェア的に実現してもよい。
【００６５】
また、上述した実施形態では、表示用画像を一時記憶部２４に格納することで、表示用画像の表示を高速化している。しかしながら、表示用画像を表示する直前に作成して一時記憶することにより、一時記憶部２４に必要なメモリ容量を節約してもよい。
【００６６】
なお、上述した実施形態では、検証用データの算出方法として、ハッシュ関数をあげている。しかしながら、本発明はこれに限定されるものではない。一般的には、データの改ざんによって異なる検証用データを算出する算出方法であればよい。
【００６７】
また、上述した実施形態では、先入れ先出しのキューを前提に説明している。しかしながら、発明はこれに限定されるものではない。後入れ先出しのキューを用いてもよい。この場合、後から追加したファイル／フォルダから先に、検索および／または検証を行うことが可能になる。
【産業上の利用可能性】
【００６８】
以上説明したように、本発明は、検証プログラムなどに利用可能な技術である。
【図面の簡単な説明】
【００６９】
【図１】検証装置１１を示すブロック図である。
【図２】検証プログラムのメインスレッドを示す流れ図である。
【図３】検索処理および検証処理の進捗表示例を示す図である。
【図４】検証結果の表示例を示す図である。
【図５】検索スレッドの動作を示す流れ図である。
【図６】検証スレッドの動作を示す流れ図である。
【符号の説明】
【００７０】
１１…検証装置，１２…入力処理部，１３…検索キュー，１４…検索部，１５…検証キュー，１６…検証部，１８…表示制御部，２１…データ抽出部，２２…照合部，２３…画素数変換部，２４…一時記憶部
【図１】
0004578442.tif 000002
【図２】
0004578442.tif 000003
【図３】
0004578442.tif 000004
【図４】
0004578442.tif 000005
【図５】
0004578442.tif 000006
【図６】
0004578442.tif 000007