(57)【要約】【課題】文書全体についてハッシュ関数等を用いた演算を行うことなく、検証対象となる文書の変更有無および変更箇所を特定すること。【解決手段】変更検出装置１００は、第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成する。変更検出装置１００は、第１の符号化文書に基づいて生成された第１のインデックス情報と、第２のインデックス情報との比較結果に基づいて、第１の符号化文書と第２の符号化文書との間に変更があるか否かを判定する。【選択図】図４
2018180787.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成し、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する
処理を実行させることを特徴とする変更検出プログラム。
【請求項２】
前記インデックス情報は、符号化文書に含まれる符号それぞれの位置に関する情報を含み、前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報との比較結果を基にして、前記第１の符号化文書に対する前記第２の符号化文書の変更有無および変更箇所を判定することを特徴とする請求項１に記載の変更検出プログラム。
【請求項３】
前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報とが一致しない場合に、前記第２のインデックス情報の第２のハッシュ値を算出し、前記第２のハッシュ値と、前記第１のインデックス情報に基づき予め算出された第１のハッシュ値との比較結果を基にして、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定することを特徴とする請求項１または２に記載の変更検出プログラム。
【請求項４】
前記特定の符号化方法は、動的辞書を用いた符号化過程を含み、前記インデックス情報は、前記動的辞書によって符号化された前記符号化文書に含まれる符号の位置に関する情報を含み、前記動的辞書は、他のコンピュータに保存されていることを特徴とする請求項１、２または３に記載の変更検出プログラム。
【請求項５】
コンピュータが実行する変更検出方法であって、
第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成し、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する
処理を実行することを特徴とする変更検出方法。
【請求項６】
第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成する生成部と、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する判定部と
を有することを特徴とする変更検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変更検出プログラム等に関する。
【背景技術】
【０００２】
従来、検証対象となる文書について、変更の有無を判定する場合には、ハッシュ関数が用いられている。例えば、従来技術では、原本の文書全体のハッシュ値と、検証対象となる文書全体のハッシュ値とを比較し、各ハッシュ値が異なる場合に、検証対象となる文書のいずれかの部分に変更があると判定する。また、従来技術では、文書に変更があると判定した後に、変更された文書の変更箇所を特定する処理を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−０５２６９８号公報
【特許文献２】特開２０１３−１２５４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、検証対象となる文書の変更有無および変更箇所を特定する場合に、文書全体についてハッシュ関数等を用いた演算を行うことが前提となるという問題がある。
【０００５】
従来技術のように、文書全体についてハッシュ関数を用いると、文書のサイズに応じた計算量が必要となる。また、ハッシュ値の比較により変更有りと判定した場合には、別途、他の方法により変更箇所を特定することになり、計算コストが大きくなる。
【０００６】
なお、従来の転置インデックスでは、転置インデックスのサイズを抑制するために、ストップワード（stop  word）を除外する処理を行っている。このため、文書が変更されても、文書と転置インデックスとの間に齟齬が生じるとは限らず、必ずしも、変更を検知することができない。
【０００７】
１つの側面では、本発明は、文書全体についてハッシュ関数等を用いた演算を行うことなく、検証対象となる文書の変更有無および変更箇所を特定することができる変更検出プログラム、変更検出方法および変更検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、コンピュータに下記の処理を実行させる。コンピュータは、第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成する。コンピュータは、第１の符号化文書に基づいて生成された第１のインデックス情報と、第２のインデックス情報との比較結果に基づいて、第１の符号化文書と第２の符号化文書との間に変更があるか否かを判定する。
【発明の効果】
【０００９】
文書全体についてハッシュ関数等を用いた演算を行うことなく、検証対象となる文書の変更有無および変更箇所を特定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施例に係る変更検出装置の処理を説明するための図である。
【図２】図２は、本実施例に係る符号化ファイルのデータ構造の一例を示す図である。
【図３】図３は、本実施例に係る動的辞書のデータ構造の一例を示す図である。
【図４】図４は、本実施例に係る変更検出装置の構成を示す機能ブロック図である。
【図５】図５は、インデックスのデータ構造の一例を示す図である。
【図６】図６は、生成部がインデックスを生成する処理の一例を説明するための図である。
【図７】図７は、判定部の処理を説明するための図である。
【図８】図８は、本実施例に係る変更検出装置の処理手順を示すフローチャートである。
【図９】図９は、変更検出装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する変更検出プログラム、変更検出方法および変更検出装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１２】
図１は、本実施例に係る変更検出装置の処理を説明するための図である。前提として、例えば、第１の外部装置が符号化ファイルＦ１を生成し、ネットワークを介して第２の外部装置に送信する。変更検出装置は、第２の外部装置に到達するまでに、符号化ファイルＦ１が変更（改竄）されているか否かを判定する。第１の外部装置および第２の外部装置の図示を省略する。
【００１３】
図１に示すように、変更検出装置が、第２の外部装置から取得する符号化ファイルＦ１には、符号化データ１と、第１のインデックス２ａと、第１のハッシュ値３ａとが含まれる。
【００１４】
符号化データ１は、第１の外部装置により、テキストデータを所定の符号化方法で符号化されたデータである。例えば、所定の符号化方法は、静的辞書および動的辞書を用いて単語単位で符号化を行う方法である。静的辞書は、出現頻度の高い単語と符号とを対応付けた情報である。第１の外部装置は、符号化の対象となる単語が、静的辞書に存在する場合には、静的辞書に登録された符号と単語との関係から、単語を符号化する。
【００１５】
一方、第１の外部装置は、符号化の対象となる単語が、静的辞書に存在しない場合には、かかる単語を動的辞書に登録して、動的符号を割り当てることで、符号化を行う。例えば、動的符号は、単語の出現に応じて割り当てられるものである。
【００１６】
第１のインデックス２ａは、符号化データ１に含まれる符号と、符号の出現位置とを対応付けた転置インデックスである。第１のインデックス２ａは、予め、第１の外部装置により算出される。
【００１７】
第１のハッシュ値３ａは、第１のインデックス２ａを、所定のハッシュ関数に入力することで算出されるハッシュ値である。例えば、所定のハッシュ関数は、ＭＤ５（Message  Digest  Algorithm  5）等のハッシュ関数に対応する。第１のハッシュ値３ａは、予め、第１の外部装置により算出される。
【００１８】
続いて、変更検出装置の処理の一例について説明する。まず、変更検出装置は、ステップＳ１０の処理を実行する。変更検出装置は、符号化ファイルＦ１に含まれる符号化データ１に含まれる符号と、符号の出現位置とを対応付けた第２のインデックス（転置インデックス）２ｂを新たに生成する。
【００１９】
変更検出装置は、符号化ファイルＦ１に含まれる第１のインデックス２ａと、新たに算出した第２のインデックス２ｂとを比較する。変更検出装置は、第１のインデックス２ａと、第２のインデックス２ｂとが「不一致」となる場合には、第１のインデックス２ａの符号と符号の位置とが、符号化データ１に対応していないことを意味するので、符号化データ１が変更されていると判定する。また、変更検出装置は、第１のインデックス２ａと、第２のインデックス２ｂとの相違部分に基づいて、符号化データ１の変更箇所を判定する。すなわち、第２のインデックス２ｂは、第１のインデクス２ａが生成された符号化データ１に対する変更検出対象といえる。また、第２のインデックス２ｂは、第１の外部装置が、符号化データ１を生成する際に用いた符号化方法で符号化されたものと同様の符号化データに対して生成されるものである。
【００２０】
変更検出装置は、ステップＳ１０の処理において、第１のインデックス２ａと、第２のインデックス２ｂとが「一致」する場合には、ステップＳ１１の処理に移行する。例えば、符号化データ１が変更されており、さらに、変更された符号化データ１に合わせて、第１のインデックス２ａが変更されている場合には、第１のインデックス２ａと第２のインデックス２ｂとの比較によって、変更を検出することができないためである。
【００２１】
ステップＳ１１の処理について説明する。変更検出装置は、第２のインデックス２ｂを、所定のハッシュ関数に入力することで、第２のハッシュ値３ｂを算出する。変更検出装置が利用する所定のハッシュ関数は、第１の外部装置が、第１のハッシュ値３ａを算出した場合に利用したハッシュ関数と同一であるものとする。
【００２２】
変更検出装置は、第１のハッシュ値３ａと、第２のハッシュ値３ｂとを比較する。変更検出装置は、第１のハッシュ値３ａと、第２のハッシュ値３ｂとが「不一致」となる場合には、符号化データ１および第１のインデックス２ａが変更されていると判定する。一方、変更検出装置は、第１のハッシュ値３ａと、第２のハッシュ値３ｂとが「一致」する場合には、符号化データ１が変更されていないと判定する。
【００２３】
上記のように、変更検出装置は、第１のインデックス２ａおよび第２のインデックス２ｂの比較結果を基にして、符号化データ１の変更有無および変更箇所を特定する。このため、従来技術のように、符号化データ１全体に対するハッシュ値を演算しなくても、変更有無を特定でき、さらに、変更箇所を特定することができる。
【００２４】
また、第１のインデックス２ａおよび第２のインデックス２ｂが一致する場合でも次のケースがある。すなわち、符号化データ１が変更されており、さらに、変更された符号化データ１に合わせて、第１のインデックス２ａが変更されている場合には、第１のインデックス２ａと第２のインデックス２ｂとの比較によって、変更を検出することができない。この問題に対応するべく、変更検出装置は、第２のインデックス２ｂを基にして、第２のハッシュ値３ｂを演算し、第１のハッシュ値３ａと第２のハッシュ値３ｂとの比較により、変更を検出する。第２のハッシュ値３ｂは、符号化データ１全体のハッシュ値ではなく、第２のインデックス２ｂのハッシュ値であるため、計算量を削減しつつ、変更を検出することができる。
【００２５】
図２は、本実施例に係る符号化ファイルのデータ構造の一例を示す図である。図１で説明したように、符号化ファイルＦ１は、第１の外部装置により生成され、第２の外部装置に送信されるものとする。図２に示すように、符号化ファイルＦ１は、ヘッダ部１０ａと、符号領域１０ｂと、トレーラ部１０ｃとを有する。ヘッダ部１０ａは、符号化対象となったテキストファイルに含まれる単語の出現頻度の情報等が含まれる。符号領域１０ｂは、符号化データ１を格納する領域である。
【００２６】
トレーラ部１０ｃは、動的辞書１１と、第１のインデックス２ａと、第１のハッシュ値３ａとを有する。
【００２７】
図３は、本実施例に係る動的辞書のデータ構造の一例を示す図である。図３に示すように、動的辞書１１は、動的ビットフィルタＤ１と、動的辞書部Ｄ２と、バッファＤ３とを有する。
【００２８】
動的ビットフィルタＤ１は、２グラムと、ビットマップと、第１ポインタとを有する。動的辞書部Ｄ２は、動的符号と、第２ポインタと、連鎖領域とを対応付ける。バッファＤ３は、動的符号により符号化される前の単語を格納する。
【００２９】
動的ビットフィルタＤ１の２グラムは、２文字の文字列（あるいは２つの単語）を示す情報である。ビットマップは、２グラムの文字列に対応するビットマップを示す。例えば、「ａａ」に対応するビットマップは「０＿０＿０＿０＿０」となる。第１ポインタは、ビットマップに対応する動的符号の位置を示すポインタである。
【００３０】
例えば、動的辞書１１に登録する単語が「able△」である場合には、２グラム「ab」、「bl」、「le」、「e△」に対応するビットマップをそれぞれ組み合わせる。ビットマップの各桁において、すべてのビットマップの値が０となっている場合には、組み合わせたビットマップの該当する桁を「０」とする。これに対して、「１」が一つでも含まれる場合には該当する桁を「１」に設定することで、ビットマップを組み合わせる。
【００３１】
例えば、「ab」のビットマップが「１＿０＿０＿０＿０」、「bl」のビットマップが「０＿１＿０＿０＿０」、「le」のビットマップが「０＿０＿１＿０＿０」、「e△」のビットマップが「０＿０＿０＿１＿０」とする。この場合には、各ビットマップを組み合わせたビットマップは「１＿１＿１＿１＿０」となる。
【００３２】
動的辞書部Ｄ２の動的符号は、バッファＤ３に格納された単語に割り当てられた符号である。第２ポインタは、動的符号に対応する単語が格納されたバッファＤ３の位置を示す情報である。例えば、動的符号「Ａ０００ｈ」に対応する第２ポインタは、バッファＤ３に格納された「Mickey」の先頭位置を示す。すなわち、単語「Mickey」は、動的符号「Ａ０００ｈ」に動的符号化されていることを意味する。
【００３３】
動的辞書部Ｄ２の連鎖領域は、該当する文字列等がビットフィルタのポインタから連鎖しているか否かを示す情報である。該当する文字列等が連鎖していない場合には、連鎖領域に「ＮＵＬＬ」が設定される。
【００３４】
図４は、本実施例に係る変更検出装置の構成を示す機能ブロック図である。図４に示すように、この変更検出装置１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。
【００３５】
通信部１１０は、第１の外部装置、第２の外部装置、その他の外部装置との間で、ネットワークを介してデータ通信を実行する通信装置である。後述する制御部１５０は、通信部１１０を介して、第１の外部装置、第２の外部装置、その他の外部装置とデータをやり取りする。
【００３６】
入力部１２０は、変更検出装置１００に各種のデータを入力するための入力装置である。入力部１２０は、例えば、キーボードやマウス、タッチパネル等の入力装置に対応する。
【００３７】
表示部１３０は、制御部１５０から出力するデータを表示する表示装置である。表示部１３０は、液晶ディスプレイやタッチパネル等に対応する。
【００３８】
記憶部１４０は、符号化ファイルＦ１と、第２のインデックス２ｂと、第２のハッシュ値３ｂとを有する。記憶部１４０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。
【００３９】
符号化ファイルＦ１は、第１の外部装置により生成され、第１の外部装置から第２の外部装置に送信された符号化ファイルである。符号化ファイルＦ１に関する説明は、図２で説明した符号化ファイルＦ１に関する説明と同様である。
【００４０】
第２のインデックス２ｂは、符号化ファイルＦ１に格納された符号化データ１を基にして、変更検出装置１００が新たに生成する転置インデックスである。図５は、インデックスのデータ構造の一例を示す図である。ここでは、インデックスとして、第２のインデックス２ｂのデータ構造について説明する。なお、符号化ファイル１に変更がなければ、第１のインデックス２ａと、第２のインデックス２ｂとは同一のインデックスとなる。
【００４１】
図５に示すように、この第２のインデックス２ｂは、符号と、オフセットとを対応付ける。符号は、静的辞書により符号化された静的符号、または、動的辞書１１により符号化された動的符号に対応する。オフセットは、符号化データ１上の該当する符号の位置を示すものである。
【００４２】
一例として、符号「Ａ０００ｈ」について説明する。図５において、符号「Ａ０００ｈ」に対応するフラグ「１」が、オフセット「５９」の位置に立っている。このため、符号「Ａ０００ｈ」が、符号化データ１に含まれる符号のうち、先頭から５９番目に位置する符号であることを示す。なお、順番をカウントする場合には、１つの単語に対応する符号をひとくくりとする。
【００４３】
第２のハッシュ値３ｂは、第２のインデックス２ｂを、所定のハッシュ関数に入力することで算出されるハッシュ値である。所定のハッシュ関数は、第１の外部装置が第１のハッシュ値３ａを算出する場合に用いたハッシュ関数と同一である。
【００４４】
図４の説明に戻る。制御部１５０は、受信部１５１、生成部１５２、判定部１５３、通知部１５４を有する。制御部１５０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などによって実現できる。また、制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００４５】
受信部１５１は、第２の外部装置から、変更検出の対象として、符号化ファイルＦ１を受信する処理部である。受信部１５１は、受信した符号化ファイルＦ１を、記憶部１４０に格納する。
【００４６】
生成部１５２は、符号化ファイルＦ１の符号領域１０ｂに格納された符号化データ１を基にして、第２のインデックス２ｂを生成する処理部である。例えば、生成部１５２は、符号化データ１を走査し、各符号の位置（オフセット）を特定する。生成部１５２は、符号と、オフセットとを対応付けることで、第２のインデックス２ｂを生成する。
【００４７】
図６は、生成部がインデックスを生成する処理の一例を説明するための図である。例えば、生成部１５２が符号化データ１を参照すると、符号「Ａ０００ｈ」が「５９」番目に位置し、符号「Ａ１００ｈ」が「３１」番目に位置する。また、符号「Ａ２００ｈ」が「１２」番目に位置し、符号「Ａ３００ｈ」が「４」番目に位置する。
【００４８】
この場合には、生成部１５２は、第２のインデックス２ｂに符号「Ａ０００ｈ」を登録し、この符号「Ａ０００ｈ」に対応するオフセット「５９」にフラグ「１」を設定する。生成部１５２は、第２のインデックス２ｂに符号「Ａ１００ｈ」を登録し、この符号「Ａ１００ｈ」に対応するオフセット「３１」にフラグ「１」を設定する。生成部１５２は、第２のインデックス２ｂに符号「Ａ２００ｈ」を登録し、この符号「Ａ２００ｈ」に対応するオフセット「１２」にフラグ「１」を設定する。生成部１５２は、第２のインデックス２ｂに符号「Ａ３００ｈ」を登録し、この符号「Ａ３００ｈ」に対応するオフセット「４」にフラグ「１」を設定する。
【００４９】
判定部１５３は、第１のインデックス２ａと、第２のインデックス２ｂとを比較して、符号化データ１の変更有無および変更箇所を判定する処理部である。判定部１５３は、判定結果を、通知部１５４に出力する。以下において、判定部１５３が実行する第１処理と、第２処理とを説明する。
【００５０】
判定部１５３が実行する第１処理について説明する。判定部１５３は、符号化ファイル１のトレーラ部１０ｃに格納された第１のインデックス２ａを取得する。判定部１５３は、取得した第１のインデックス２ａと、第２のインデックス２ｂとを比較する。
【００５１】
図７は、判定部の処理を説明するための図である。図７に示す例では、第１のインデックス２ａと、第２のインデックス２ｂとを比較すると、第１のインデックス２ａと第２のインデックス２ｂとが「不一致」となる。具体的には、第２のインデックス２ｂには、符号「Ａ１００ｈ」のオフセット「３１」にフラグ「１」が設定されているが、第１のインデックス２ａには、符号「Ａ１００ｈ」のオフセット「３１」にフラグが設定されていない。このため、判定部１５３は、符号化データ１が「変更されている」と判定する。具体的には、変更前の符号化データ１’のオフセット「３１」に存在していた符号が、「Ａ１００ｈ」に変更されていると判定する。
【００５２】
一方、判定部１５３は、第１のインデックス２ａと、第２のインデックス２ｂとが「一致」する場合には、第２処理に移行する。
【００５３】
判定部１５３が実行する第２処理について説明する。判定部１５３は、符号化ファイルＦ１のトレーラ部１０ｃに格納された第１のハッシュ値３ａを取得する。また、判定部１５３は、第２のインデックス２ｂを所定のハッシュ関数に入力することで、第２のハッシュ値３ｂを算出し、記憶部１４０に格納する。
【００５４】
判定部１５３は、第１のハッシュ値３ａと第２のハッシュ値３ｂとを比較し、「一致」する場合には、符号化データ１に変更はないと判定する。これに対して、判定部１５３は、第１のハッシュ値３ａと第２のハッシュ値３ｂとが「不一致」となる場合には、符号化データ１および第１のインデックス２ａに変更があると判定する。
【００５５】
通知部１５４は、判定部１５３の判定結果を表示部１３０に表示させる処理部である。また、通知部１５４は、判定部１５３の判定結果を、第２の外部装置に通知しても良い。
【００５６】
次に、本実施例に係る変更検出装置１００の処理手順について説明する。図８は、本実施例に係る変更検出装置の処理手順を示すフローチャートである。図８に示すように、変更検出装置１００の受信部１５１は、第２の外部装置から符号化ファイルＦ２を受信し、符号化ファイルＦ１を記憶部１４０に格納する（ステップＳ１０１）。
【００５７】
変更検出装置１００の生成部１５２は、符号化データ１の第２のインデックス２ｂを生成する（ステップＳ１０２）。変更検出装置１００の判定部１５３は、第１のインデックス２ａと第２のインデックス２ｂとを比較する（ステップＳ１０３）。判定部１５３は、第１のインデックス２ａと第２のインデックス２ｂとが一致する場合には（ステップＳ１０４，Ｙｅｓ）、ステップＳ１０８に移行する。判定部１５３は、第１のインデックス２ａと第２のインデックス２ｂとが一致しない場合には（ステップＳ１０４，Ｎｏ）、ステップＳ１０５に移行する。
【００５８】
判定部１５３は、符号化データ１に変更があると判定する（ステップＳ１０５）。判定部１５３は、比較結果を基にして、変更箇所を特定する（ステップＳ１０６）。変更検出装置１００の通知部１５４は、変更箇所を通知する（ステップＳ１０７）。
【００５９】
判定部１５３は、第２のインデックス２ｂを基にして、第２のハッシュ値３ｂを演算する（ステップＳ１０８）。判定部１５３は、第１のハッシュ値３ａと第２のハッシュ値３ｂとを比較する（ステップＳ１０９）。判定部１５３は、第１のハッシュ値３ａと第２のハッシュ値３ｂとが一致する場合には（ステップＳ１１０，Ｙｅｓ）、変更なしと判定し（ステップＳ１１１）、ステップＳ１１３に移行する。
【００６０】
一方、判定部１５３は、第１のハッシュ値３ａと第２のハッシュ値３ｂとが一致しない場合には（ステップＳ１１０，Ｎｏ）、符号化データ１および第１のインデックス２ａに変更があると判定する（ステップＳ１１２）。通知部１５４は、判定結果を通知する（ステップＳ１１３）。
【００６１】
次に、本実施例に係る変更検出装置１００の効果について説明する。変更検出装置１００は、符号化データ１が変更されているか否かを判定する場合に、符号化データ１から第２のインデックス２ｂを生成し、第１のインデックス２ａと第２のインデックス２ｂとの比較結果に基づいて、符号化データ１が変更されているか否かを判定する。このため、従来技術のように、符号化データ１全体に対するハッシュ値を演算しなくても、変更有無を特定できる。
【００６２】
また、第１のインデックス２ａおよび第２のインデックス２ｂは、符号化データ１に含まれる符号それぞれの位置に関する情報を有している。このため、変更検出装置１００は、第１のインデックス２ａおよび第２のインデックス２ｂを比較することで、符号化データ１全体に対するハッシュ値を演算しなくても、変更有無および変更箇所を特定できる。
【００６３】
なお、第１のインデックス２ａおよび第２のインデックス２ｂが一致する場合でも次のケースがある。すなわち、符号化データ１が変更されており、さらに、変更された符号化データ１に合わせて、第１のインデックス２ａが変更されている場合には、第１のインデックス２ａと第２のインデックス２ｂとの比較によって、変更を検出することができない。この問題に対応するべく、変更検出装置１００は、第２のインデックス２ｂを基にして、第２のハッシュ値３ｂを演算し、第１のハッシュ値３ａと第２のハッシュ値３ｂとの比較により、変更を検出する。第２のハッシュ値３ｂは、符号化データ１全体のハッシュ値ではなく、第２のインデックス２ｂのハッシュ値であるため、計算量を削減しつつ、変更を検出することができる。
【００６４】
ところで、第１の外部装置が、符号化ファイルＦ１を生成した場合に、符号化ファイルＦ１のトレーラ部１０ｃに格納した動的辞書１１の情報を、変更検出装置１００に通知しておいても良い。変更検出装置１００は、第２の外部装置から取得した符号化ファイルＦ１のトレーラ部１０ｃに格納された動的辞書１１の情報と、第１の外部装置から受信しておいた動的辞書１１の情報とを比較して、動的辞書１１に変更が存在するか否かを更に判定しても良い。変更検出装置１００は、上記処理を実行することで、動的辞書の改竄を効率的に検出することができる。
【００６５】
次に、上記実施例に示した変更検出装置１００と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図９は、変更検出装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【００６６】
図９に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【００６７】
ハードディスク装置２０７は、生成プログラム２０７ａ、判定プログラム２０７ｂを有する。ＣＰＵ２０１は、生成プログラム２０７ａ、判定プログラム２０７ｂを読み出してＲＡＭ２０６に展開する。
【００６８】
生成プログラム２０７ａは、生成プロセス２０６ａとして機能する。判定プログラム２０７ｂは、判定プロセス２０６ｂとして機能する。生成プロセス２０６ａの処理は、生成部１５２の処理に対応する。判定プロセス２０６ｂの処理は、判定部１５３の処理に対応する。
【００６９】
なお、各プログラム２０７ａ，２０７ｂについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ，２０７ｂを読み出して実行するようにしても良い。
【００７０】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７１】
（付記１）コンピュータに、
第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成し、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する
処理を実行させることを特徴とする変更検出プログラム。
【００７２】
（付記２）前記インデックス情報は、符号化文書に含まれる符号それぞれの位置に関する情報を含み、前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報との比較結果を基にして、前記第１の符号化文書に対する前記第２の符号化文書の変更有無および変更箇所を判定することを特徴とする付記１に記載の変更検出プログラム。
【００７３】
（付記３）前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報とが一致しない場合に、前記第２のインデックス情報の第２のハッシュ値を算出し、前記第２のハッシュ値と、前記第１のインデックス情報に基づき予め算出された第１のハッシュ値との比較結果を基にして、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定することを特徴とする付記１または２に記載の変更検出プログラム。
【００７４】
（付記４）前記特定の符号化方法は、動的辞書を用いた符号化過程を含み、前記インデックス情報は、前記動的辞書によって符号化された前記符号化文書に含まれる符号の位置に関する情報を含み、前記動的辞書は、他のコンピュータに保存されていることを特徴とする付記１、２または３に記載の変更検出プログラム。
【００７５】
（付記５）コンピュータが実行する変更検出方法であって、
第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成し、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する
処理を実行することを特徴とする変更検出方法。
【００７６】
（付記６）前記インデックス情報は、符号化文書に含まれる符号それぞれの位置に関する情報を含み、前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報との比較結果を基にして、前記第１の符号化文書に対する前記第２の符号化文書の変更有無および変更箇所を判定することを特徴とする付記５に記載の変更検出方法。
【００７７】
（付記７）前記判定する処理は、前記第１のインデックス情報と前記第２のインデックス情報とが一致しない場合に、前記第２のインデックス情報の第２のハッシュ値を算出し、前記第２のハッシュ値と、前記第１のインデックス情報に基づき予め算出された第１のハッシュ値との比較結果を基にして、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定することを特徴とする付記５または６に記載の変更検出方法。
【００７８】
（付記８）前記特定の符号化方法は、動的辞書を用いた符号化過程を含み、前記インデックス情報は、前記動的辞書によって符号化された前記符号化文書に含まれる符号の位置に関する情報を含み、前記動的辞書は、他のコンピュータに保存されていることを特徴とする付記５、６または７に記載の変更検出方法。
【００７９】
（付記９）第１のインデックス情報が生成された第１の符号化文書に対する変更検出対象であって、前記第１の符号化文書に対する符号化方法で符号化された第２の符号化文書に対し、第２のインデックス情報を生成する生成部と、
前記第１の符号化文書に基づいて生成された第１のインデックス情報と、前記第２のインデックス情報との比較結果に基づいて、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定する判定部と
を有することを特徴とする変更検出装置。
【００８０】
（付記１０）前記インデックス情報は、符号化文書に含まれる符号それぞれの位置に関する情報を含み、前記判定部は、前記第１のインデックス情報と前記第２のインデックス情報との比較結果を基にして、前記第１の符号化文書に対する前記第２の符号化文書の変更有無および変更箇所を判定することを特徴とする付記９に記載の変更検出装置。
【００８１】
（付記１１）前記判定部は、前記第１のインデックス情報と前記第２のインデックス情報とが一致しない場合に、前記第２のインデックス情報の第２のハッシュ値を算出し、前記第２のハッシュ値と、前記第１のインデックス情報に基づき予め算出された第１のハッシュ値との比較結果を基にして、前記第１の符号化文書と前記第２の符号化文書との間に変更があるか否かを判定することを特徴とする付記９または１０に記載の変更検出装置。
【００８２】
（付記１２）前記特定の符号化方法は、動的辞書を用いた符号化過程を含み、前記インデックス情報は、前記動的辞書によって符号化された前記符号化文書に含まれる符号の位置に関する情報を含み、前記動的辞書は、他の装置に保存されていることを特徴とする付記９、１０または１１に記載の変更検出装置。
【符号の説明】
【００８３】
１００    変更検出装置
１１０    通信部
１２０    入力部
１３０    表示部
１４０    記憶部
１５０    制御部
【図１】
2018180787.tif 000003
【図２】
2018180787.tif 000004
【図３】
2018180787.tif 000005
【図４】
2018180787.tif 000006
【図５】
2018180787.tif 000007
【図６】
2018180787.tif 000008
【図７】
2018180787.tif 000009
【図８】
2018180787.tif 000010
【図９】
2018180787.tif 000011