(57)【要約】【課題】複数の独立した異なるデータによって構成される一組のデータ対の関連付けを維持し、データの改ざんがあってもそのことを検出可能な改ざん検出装置などを提供する。【解決手段】本発明に係る改ざん検出装置１は、一意的に関連づけられる必要のある第１および第２のデータ１０１〜１０２の改ざんを検出する改ざん検出装置であって、第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データ１０４を生成する演算部１０３と、合成データを記憶する記憶部２０５とを有し、演算部が第１のデータと第２のデータのうち一方のデータと合成データとをＸＯＲ演算して他方のデータを生成する。【選択図】図２
2010044609.tif 000002
【特許請求の範囲】
【請求項１】
一意的に関連づけられるべき第１および第２のデータの改ざんを検出するデータ改ざん検出装置であって、
前記第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成する演算部と、前記合成データを記憶する記憶部とを有し、
前記演算部が、前記第１のデータと第２のデータのうち一方のデータと前記合成データとをＸＯＲ演算して前記他方のデータを生成することを特徴とするデータ改ざん検出装置。
【請求項２】
前記演算部が、前記合成データを生成する際、
前記一方のデータが前記他方のデータより短い場合、前記他方のデータから前記一方のデータと同一のデータ長を第１の部分データとして切り出して残りを第１の残データとし、前記第１の部分データと前記一方のデータとをＸＯＲ演算して得られた第１の合成データを前記記憶部に保存し、
以後、ｎを２以上の自然数とすると、前記第ｎ−１の残データが前記一方のデータより長い場合、前記第ｎ−１の残データから前記一方のデータとデータ長が同一の第ｎの部分データを切り出し、その残りを第ｎの残データとして、前記第ｎの部分データと前記一方のデータとをＸＯＲ演算して得られた第ｎの合成データを前記記憶部に保存する処理を繰り返し、
前記第ｎの残データが前記一方のデータよりも短くなった場合に、前記一方のデータから前記第ｎの残データと同一のデータ長を切り出した第ｎ＋１の部分データと前記第ｎの残データとをＸＯＲ演算して得られた第ｎ＋１の合成データを前記記憶部に保存し、
前記第１ないし第ｎ＋１の合成データを切り出し順に従って連結することによって前記合成データを生成する合成部を有する
ことを特徴とする、請求項１に記載のデータ改ざん検出装置。
【請求項３】
前記合成部が、前記合成データから前記一方のデータと同一のデータ長を切り出して前記一方のデータとＸＯＲ演算する処理を繰り返すと共に、前記ＸＯＲ演算によって得られたデータを切り出し順に従って連結することによって前記他方のデータを生成するデータ復元機能を備えていることを特徴とする、請求項２に記載のデータ改ざん検出装置。
【請求項４】
前記演算部が、
前記第１および第２の各データに、それぞれのデータ長およびファイル名を表す情報を連結する連結整形部を有し、
この連結整形部によってデータ長およびファイル名を表す情報を連結してなる前記第１および第２のデータに対して前記合成部が前記ＸＯＲ演算を行うことを特徴とする、請求項２に記載のデータ改ざん検出装置。
【請求項５】
前記第２のデータが生体認証データであり、前記合成データが前記第１のデータに添付されていることを特徴とする、請求項１に記載のデータ改ざん検出装置。
【請求項６】
一意的に関連づけられるべき第１および第２のデータの改ざんを検出するデータ改ざん検出方法であって、
前記第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成し、
前記合成データを記憶し、
前記第１のデータと第２のデータのうち一方のデータと前記合成データとをＸＯＲ演算して前記他方のデータを生成することを特徴とするデータ改ざん検出方法。
【請求項７】
前記合成データを生成する処理が、
前記一方のデータが前記他方のデータより短い場合、前記他方のデータから前記一方のデータと同一のデータ長を第１の部分データとして切り出して残りを第１の残データとし、
前記第１の部分データと前記一方のデータとをＸＯＲ演算して得られた第１の合成データを保存し、
以後、ｎを２以上の自然数とすると、前記第ｎ−１の残データが前記一方のデータより長い場合、前記第ｎ−１の残データから前記一方のデータとデータ長が同一の第ｎの部分データを切り出し、その残りを第ｎの残データとして、前記第ｎの部分データと前記一方のデータとをＸＯＲ演算して得られた第ｎの合成データを保存する処理を繰り返し、
前記第ｎの残データが前記一方のデータよりも短くなった場合に、前記一方のデータから前記第ｎの残データと同一のデータ長を切り出した第ｎ＋１の部分データと前記第ｎの残データとをＸＯＲ演算して得られた第ｎ＋１の合成データを保存し、
前記第１ないし第ｎ＋１の合成データを切り出し順に従って連結することによって前記合成データを生成する
ことを特徴とする、請求項６に記載のデータ改ざん検出方法。
【請求項８】
前記合成データから前記一方のデータと同一のデータ長を切り出してＸＯＲ演算する処理を繰り返すと共に、
前記ＸＯＲ演算によって得られたデータを切り出し順に従って連結することによって前記他方のデータを復元することを特徴とする、請求項７に記載のデータ改ざん検出方法。
【請求項９】
一意的に関連づけられるべき第１および第２のデータの改ざんを検出する改ざん検出装置を形成するコンピュータに、
前記第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成する手順と、
前記合成データを記憶する手順と、
前記第１のデータと第２のデータのうち一方のデータと前記合成データとをＸＯＲ演算して前記他方のデータを生成する手順と
を実行させることを特徴とするデータ改ざん検出プログラム。
【請求項１０】
前記合成データを生成する手順が、
前記一方のデータが前記他方のデータより短い場合、前記他方のデータから前記一方のデータと同一のデータ長を第１の部分データとして切り出して残りを第１の残データとする手順と、
前記第１の部分データと前記一方のデータとをＸＯＲ演算して得られた第１の合成データを保存する手順と、
以後、ｎを２以上の自然数とすると、前記第ｎ−１の残データが前記一方のデータより長い場合、前記第ｎ−１の残データから前記一方のデータとデータ長が同一の第ｎの部分データを切り出し、その残りを第ｎの残データとして、前記第ｎの部分データと前記一方のデータとをＸＯＲ演算して得られた第ｎの合成データを保存する処理を繰り返す手順と、
前記第ｎの残データが前記一方のデータよりも短くなった場合に、前記一方のデータから前記第ｎの残データと同一のデータ長を切り出した第ｎ＋１の部分データと前記第ｎの残データとをＸＯＲ演算して得られた第ｎ＋１の合成データを保存する手順と、
前記第１ないし第ｎ＋１の合成データを切り出し順に従って連結することによって前記合成データを生成する手順と
を実行させることを特徴とする、請求項９に記載のデータ改ざん検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の独立したデータによって構成されるデータ対に関し、特にそのようなデータ対の改ざんの検出に係るデータ改ざん検出装置等に関する。
【背景技術】
【０００２】
たとえば仕様書とレビュー記録、身分証明書と指紋データなどのように、複数の独立したデータを一対のものとして管理し、それらのデータが改ざんされた場合にそのことを容易に検出可能であることが必要である場合がある。そのために専用のデータ管理システムを構築するのは、該データを利用する全てのユーザが利用可能なものである必要があるので、関係者が多い場合にはコスト面での課題が大きい。このため、既存のデータ保存システムを有効に活用し、かつ巨大な計算機システムを必要とせずに、データ対の改ざんを検出可能な管理方式が求められている。
【０００３】
これに関連する技術文献として、次の各々が開示されている。特許文献１には、メモリ素子上で２進数表現されたデータに対してデータ秘匿性を向上するスクランブル回路がけ記載されている。特許文献２および３には、登録文書に含まれる文字をデータベース化して検索可能とする文書管理装置が記載されている。
【０００４】
特許文献４には、データの内容を示す識別子が同一内容を示すか否かを判定する同定処理について記載されている。特許文献５には、電子メール本文の内容に関連する文書を当該電子メールに添付するための方法について記載されている。
【０００５】
【特許文献１】特開２００４−３６１９８６号公報
【特許文献２】特開平０８−１６１３５７号公報
【特許文献３】特開平１０−０４０２５６号公報
【特許文献４】特開平１１−２０３１８５号公報
【特許文献５】特許第４０６２５７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複数の独立した異なるデータによって構成される一組のデータ対で、その関連付けを維持しなければならない場合、通常の各々のデータの識別子の組を管理するという方法がとられる。この方法自体は特別なものではなく、特殊な処理を特に必要とはしない。
【０００７】
しかし、データ対を構成するデータ自体はそれぞれに独立したデータであるため、それぞれを編集して更新することが可能である。そのため、人為的なミス、あるいは故意等により、本来のデータの関連づけを維持できなくなる危険性がある。
【０００８】
たとえば、仕様書Ａとデータ対を構成するレビュー記録表αがある場合、仕様書Ａを更新してＡ’とした場合にそれに対応してレビュー記録表αが更新されないと、この時点で正しい関連付けが破壊されたことになる。このように、独立した異なるデータによってデータ対を構成した場合の関連づけ情報は、一方に改ざんが発生した場合にそのことを検出できず、その関連付けを完全に維持することができるものではなかった。
【０００９】
ハッシュ関数を用いるなどしてデータそのものの改ざんを検知する方法はある。しかしながら、ハッシュ値の組を管理するだけではデータ対の関連付けまで完全に維持できるものではない。たとえば、ハッシュ値を管理する組み合わせデータそのものを改ざんされた場合には、その関連付けを維持することはできない。
【００１０】
上述の特許文献１は、特定のハードウェアの構成を前提とするものであるので、上記の問題を解決することはできない。また特許文献２〜５はいずれも、文書内に文字として表現された内容の「関連性」についてのものである。上記のように複数の独立した異なるデータによって構成されるデータ対の「関連性」は、文字として表現された内容の「関連性」とは異なるものである。即ち、特許文献１〜５のいずれの技術も、上記の問題に対して適用できるものではない。
【００１１】
本発明の目的は、複数の独立した異なるデータによって構成される一組のデータ対の関連付けを維持し、一方のデータに改ざんがあってもそのことを検出可能なデータ改ざん検出装置、データ改ざん検出方法およびそのプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るデータ改ざん検出装置は、一意的に関連づけられる必要のある第１および第２のデータの改ざんを検出するデータ改ざん検出装置であって、第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成する演算部と、合成データを記憶する記憶部とを有し、演算部が、第１のデータと第２のデータのうち一方のデータと合成データとをＸＯＲ演算して他方のデータを生成することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るデータ改ざん検出方法は、一意的に関連づけられる必要のある第１および第２のデータの改ざんを検出するデータ改ざん検出方法であって、第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成し、合成データを記憶し、第１のデータと第２のデータのうち一方のデータと合成データとをＸＯＲ演算して他方のデータを生成することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るデータ改ざん検出プログラムは、一意的に関連づけられる必要のある第１および第２のデータの改ざんを検出する改ざん検出装置を形成するコンピュータに、第１のデータと第２のデータとをＸＯＲ（排他的論理和）演算して合成データを生成する手順と、合成データを記憶する手順と、第１のデータと第２のデータのうち一方のデータと合成データとをＸＯＲ演算して他方のデータを生成する手順とを実行させることを特徴とする。
【発明の効果】
【００１５】
本発明は、上述したように第１および第２のデータをＸＯＲ（排他的論理和）演算して生成した合成データに、さらに第１のデータと第２のデータのうち一方のデータをＸＯＲ演算して他方のデータを生成するので、特殊な計算を特に必要とはせずに、記憶保持している他方のデータと生成されたデータとを比較することによって、第１もしくは第２のデータに改ざんがあったことを検出可能である。これによって、複数の独立した異なるデータによって構成される一組のデータ対の関連付けを維持し、データの改ざんがあってもそのことを検出可能であるという、従来にない優れたデータ改ざん検出装置、データ改ざん検出方法およびそのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１６】
［第１の実施形態］
以下、本発明の実施形態の構成について添付図に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るデータ改ざん検出装置１は、図１〜２に示すように、第１のデータ（文書Ａ１０１）と第２のデータ（文書Ｂ１０２）とをＸＯＲ（排他的論理和）演算して合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を生成する演算部（演算装置１０３）と、合成データを記憶する記憶部（作業用データ保存部２０５）とを有する。その上で演算部（演算装置１０３）は、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）と第１のデータと第２のデータのうちの一方のデータとをＸＯＲ演算して他方のデータを生成する。
【００１７】
そして、演算部（演算装置１０３）は、次の処理を行う合成部２０４を備える。合成部２０４は、一方のデータ（文書Ｂ１０２）が他方のデータ（文書Ａ１０１）より短い場合、他方のデータ（文書Ａ１０１）から一方のデータ（文書Ｂ１０２）と同一のデータ長を第１の部分データとして切り出し、残りを第１の残データとし、と一方のデータ（文書Ｂ１０２）とをＸＯＲ演算して得られた第１の合成データを記憶部（作業用データ保存部２０５）に保存する。
以後は、ｎを２以上の自然数とすると、第ｎ−１の残データが一方のデータより長い場合、第ｎ−１の残データから一方のデータ（文書Ｂ１０２）とデータ長が同一の第ｎの部分データを切り出し、その残りを第ｎの残データとして、第ｎの部分データと一方のデータ（文書Ｂ１０２）とをＸＯＲ演算して得られた第ｎの合成データを記憶部に保存するという処理を繰り返す。
第ｎの部分データが一方のデータ（文書Ｂ１０２）よりも短くなれば一方のデータ（文書Ｂ１０２）から第ｎの部分データと同一のデータ長を切り出した第ｎ＋１の部分データと第ｎの部分データとをＸＯＲ演算して得られた第ｎ＋１の合成データを記憶部に保存する。
そして、第１〜第ｎ＋１の合成データを切り出し順に従って連結して、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を生成する。
【００１８】
そして、この合成部２０４は、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）から一方のデータ（文書Ｂ１０２）と同一のデータ長を切り出して一方のデータ（文書Ｂ１０２）とＸＯＲ演算する処理を繰り返し、これらのＸＯＲ演算によって得られたデータを切り出し順に従って連結することによって他方のデータ（文書Ａ１０１）を生成することができる。この処理は第１および第２のデータ１０１〜１０２から合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を生成する際の処理と同一でよい。
【００１９】
ここで演算部（演算装置１０３）は、第１および第２のデータ１０１〜１０２に、それぞれのデータ長およびファイル名を表すデータを連結する整形部２０３を備えるようにし、合成部２０４は整形部２０３がデータ長およびファイル名を表すデータを連結したデータに対して前述の処理を行うようにすることもできる。
【００２０】
このようにすることにより、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）と一方のデータ（文書Ｂ１０２）とがあれば、他方のデータ（文書Ａ１０１）を生成することのできるデータ改ざん検出装置１を得ることができる。以下、これをさらに詳述する。
［基本原理］
関連付けるべき計算機上のデータ対をＡおよびＢとする。この二つのデータはコンピュータ上では２進数列として表現されている。データＡ、Ｂの２進数表現（バイナリデータ）を各々ＢＩＮ（Ａ）、ＢＩＮ（Ｂ）とする。また、二つのデータの２進数列の長さをＬＥＮ（ＢＩＮ（Ａ））、ＬＥＮ（ＢＩＮ（Ｂ））とする。説明を容易にするために、ＬＥＮ（ＢＩＮ（Ａ））＝ＬＥＮ（ＢＩＮ（Ｂ））であるとする。
【００２１】
ここで、この二つのデータに対して排他的論理和（演算子ＸＯＲ）を計算する。データＡおよびデータＢに対する合成をＣＯＭ（Ａ、Ｂ）＝ＢＩＮ（Ａ）  ＸＯＲ  ＢＩＮ（Ｂ）と表現する。このとき、ＣＯＭ（Ａ、Ｂ）は二つのデータＡおよびＢのおのおのの情報を完全に含む情報であり、ＸＯＲの代数的性質を用いることでデータＡとＣＯＭ（Ａ、Ｂ）を用いることでデータＢを復元できる。具体的には、ＢＩＮ（Ｂ）＝ＣＯＭ（Ａ、Ｂ）  ＸＯＲ  ＢＩＮ（Ａ）である。
【００２２】
同様に、データＢとＣＯＭ（Ａ、Ｂ）を用いることでデータＡを復元できる。逆にデータＡ、Ｂと異なるデータでは、対となるデータを復元することができない。たとえば、データＡの変更Ａ’とＣＯＭ（Ａ、Ｂ）を用いてもデータＢを復元することはできない。
このＣＯＭ（Ａ、Ｂ）を用いて、二つのデータを管理することで、従来の課題を解決する。
【００２３】
以下に示す本発明の実施形態では、仕様書とそのレビュー記録票を例に取って説明する。たとえば、仕様書Ａのある特定のバージョン（以下単に仕様書Ａと記する）とそれに対するレビュー記録表Ｂはその内容も含めて対として管理されていなければ意味を成さない。そこで、仕様書Ａに対してレビュー記録表Ｂを関連付ける。具体的には、仕様書Ａｓレビュー記録表Ｂの各々のバイナリデータであるＢＩＮ（Ａ）およびＢＩＮ（Ｂ）に対して、次の演算を行う。
ｆ＝ＣＯＭ（Ａ、Ｂ）＝  ＢＩＮ（Ａ）  ＸＯＲ  ＢＩＮ（Ｂ）
【００２４】
仕様書Ａについて、そのレビュー記録の存在およびレビュー記録表の内容を確認しようとする場合は、該仕様書Ａのデータと前述のｆとを用いて以下の演算を実行する。
Ｂ＝ＣＯＭ（ｆ、Ａ）＝ＣＯＭ（Ａ、Ｂ）  ＸＯＲ  ＢＩＮ（Ａ）
【００２５】
このように管理対象となる文書を計算機上に表現された二進数列として排他的論理和を直接演算することで、関連する二つの文書の完全に一元的管理できる。本実施形態では、説明を簡単にするため、管理対象を文書データとして説明するが、管理対象となるデータは文書に限らず、コンピュータ上でバイナリデータとして表現されるデータなら何でもよい。
【００２６】
なお、ＢＩＮ（Ａ）  ＸＯＲ  ＢＩＮ（Ｂ）というＸＯＲ演算を行う場合、ＢＩＮ（Ａ）とＢＩＮ（Ｂ）の２進数列の長さは必ず同一である必要がある。ＢＩＮ（Ａ）とＢＩＮ（Ｂ）の２進数列の長さが異なる場合の処理は後述する。
【００２７】
以下、これをさらに詳述する。
図１は本発明の第１の実施形態に係るデータ改ざん検出装置１の構成を示す概略構成図である。データ改ざん検出装置１は、データ対をなす文書Ａ１０１と文書Ｂ１０２を管理対象とし、それらから合成データを算出するコンピュータ装置である演算装置１０３を要部として構成されている。符号１０４は、演算装置１０３によって算出された合成データとしてのＣＯＭ（Ａ，Ｂ）１０４を示す。この合成データＣＯＭ（Ａ，Ｂ）は、上述の通りＣＯＭ（Ａ、Ｂ）＝ＢＩＮ（Ａ）  ＸＯＲ  ＢＩＮ（Ｂ）である。
【００２８】
図２は、図１に示した演算部（演算装置１０３）の構成をより詳細に表す概略構成図である。演算装置１０３は、ＣＰＵ、ＲＡＭ、ＯＳなどを含むコンピュータで、コンピュータプログラムを実行する主体であり、列長算出部２０１、ファイル名抽出部２０２、整形部２０３、合成部２０４、作業用データ保存部２０５といった各機能部を実行する。作業用データ保存部２０５は不揮発性メモリ（ハードディスク、フラッシュメモリなど）によって構成される。
【００２９】
列長算出部２０１は、管理対象（処理対象）となる文書Ａ１０１および文書Ｂ１０２の二進数列の長さ（ビット長）、即ち前述のＬＥＮ（ＢＩＮ（Ａ））およびＬＥＮ（ＢＩＮ（Ｂ））を算出する。ファイル名抽出部２０２は、文書Ａ１０１および文書Ｂ１０２の文書名を抽出する。ここで、文書Ａ１０１および文書Ｂ１０２の文書名を各々ＮＡＭ（Ａ）およびＮＡＭ（Ｂ）と表記する。
【００３０】
整形部２０３は、列長算出部２０１によって算出されたＬＥＮ（ＢＩＮ（Ａ））およびＬＥＮ（ＢＩＮ（Ｂ））と、ファイル名抽出部２０２によって抽出されたＮＡＭ（Ａ）およびＮＡＭ（Ｂ）と、各文書の２進数表現ＢＩＮ（Ａ）およびＢＩＮ（Ｂ）とを連結して、作業用データ３００を生成し、不揮発性メモリである作業用データ保存部２０５に保存する。
【００３１】
図３は、図２で示した整形部２０３が生成する作業用データ３００の構成を示す説明図である。列長３０１は、列長算出部２０１によって算出されたＬ１＝ＬＥＮ（ＢＩＮ（Ａ））もしくはＬＥＮ（ＢＩＮ（Ｂ））である。ファイル名３０２は、ファイル名抽出部２０２によって抽出されたＮＡＭ（Ａ）もしくはＮＡＭ（Ｂ）である。ボディ３０３は、各文書の２進数表現ＢＩＮ（Ａ）もしくはＢＩＮ（Ｂ）である。列長３０１およびファイル名３０２は原則として固定長データであるのに対して、ボディ３０３はデータに応じて長さが変わる可変長データである。
【００３２】
以後、文書Ａ１０１に対して生成された作業用データ３００を整形済文書Ａ１０１ｂといい、文書Ｂ１０２に対して生成された作業用データ３００を整形済文書Ｂ１０２ｂという。整形部２０３は逆に、作業用データ３００から列長３０１およびファイル名３０２を取り除き、整形前のデータであるボディ３０３にファイル名３０２を付けて元のファイル（文書Ａ１０１もしくは文書Ｂ１０２）を生成することも可能である。
【００３３】
合成部２０４は、文書Ａ１０１および文書Ｂ１０２の作業用データ３００に対して後述のような排他的論理和演算と判断処理とを実行し、最終的な結果を出力する。
【００３４】
なお、列長算出部２０１の行うビット長の算出、ファイル名抽出部２０２の行うファイル名の抽出、整形部２０３の行うデータの連結、合成部２０４の行う排他的論理和演算、および作業用データ保存部２０５の行うデータの保存については、通常の演算手法を利用して行うことができる。
【００３５】
（合成データの生成）
図４は、図１および図２に示した演算装置１０３が実行する処理を表すフローチャートである。なお、図４では管理対象を２つの文書であるとして説明しているが、３つ以上の管理対象文書に対しては、２つの管理対象に対して実施した本発明の動作の結果得られた合成データをひとつの管理対象文書とみなして、３つ目の文書との間で処理を行い、以降同様に必要な文書数だけ処理を繰り返せばよい。
【００３６】
まず演算部（演算装置１０３）は、管理対象である文書Ａ１０１および文書Ｂ１０２を処理系内に取り込む（ステップＳ４０１）。取り込まれたこれらの文書に対してファイル名抽出部２０２がファイル名の抽出（ステップＳ４０２）、続いて列長算出部２０１が列長の算出の処理を行う（ステップＳ４０３）。なお、ステップＳ４０２とＳ４０３は、実行される順番が逆になってもよい。
【００３７】
整形部２０３が、管理対象である文書Ａ１０１および文書Ｂ１０２が作業用データ保存部２０５に読み込まれたことを確認し（ステップＳ４０４）、読み込まれていなければステップＳ４０１に戻る。確認後、文書Ａ１０１および文書Ｂ１０２に対して整形部２０３が図３に示した形式の作業用データ３００（整形済文書Ａ１０１ｂおよびＢ１０２ｂ）を作成し、作業用データ保存部２０５に保存する（ステップＳ４０５）。
【００３８】
合成部２０４は、管理対象である文書Ａ１０１および文書Ｂ１０２に対して整形処理が完了したことを確認し（ステップＳ４０６）、完了していなければステップＳ４０５に戻る。確認後、文書Ａ１０１および文書Ｂ１０２を整形した整形済文書Ａ１０１ｂおよびＢ１０２ｂに対して合成部２０４が排他的論理和により後述の演算処理を実行する（ステップＳ４０７）。
【００３９】
図５は、図４で示したステップＳ４０７の処理をより詳細に説明するフローチャートである。図６は、作業用データ保存部２０５に保存されているステップＳ４０７の処理対象となる整形済文書Ａ１０１ｂおよびＢ１０２ｂに対する処理の状態を表す説明図である。図６（ａ）は、整形済文書Ａ１０１ｂおよびＢ１０２ｂの初期状態を示し、図６（ｂ）は図５のステップＳ５０６〜５０７の１回目の処理について示す。また図６（ｃ）は図５のステップＳ５１１の処理について示す。
【００４０】
以後、説明の便宜上、整形済文書Ａ１０１ｂの方が、整形済文書Ｂ１０２ｂより長いものとして説明する。整形済文書Ｂ１０２ｂの方が長い場合は、以下の説明で整形済文書Ａ１０１ｂとＢ１０２ｂとが入れ替わるだけで、方法そのものに違いはない。先頭の文字を０文字目とし、整形済文書Ａ１０１ｂと整形済文書Ｂ１０２ｂの各々の最終文字をＭａｘＡ，ＭａｘＢ字目とする。
【００４１】
合成部２０４がまず、図６に示した整形済文書Ａ１０１ｂおよびＢ１０２ｂを作業用データ保存部２０５から読み込む（ステップＳ５０１）。合成部２０４は整形済文書Ａ１０１ｂおよびＢ１０２ｂが正常に読み込まれたことを確認し（ステップＳ５０２）、正常に読み込まれなければステップＳ５０１に戻る。確認後、読み込まれた整形済文書Ａ１０１ｂとＢ１０２ｂとの間でデータ長を比較する（ステップＳ５０３）。この比較の結果、は整形済文書Ａ１０１ｂおよびＢ１０２ｂのうち、データ長のより長い方を単純にＢＩＮと定義し、より短い方をｐｉｖｏｔと定義する（ステップＳ５０４または５０５）。ここでは、整形済文書Ａ１０１ｂがＢＩＮ、整形済文書Ｂ１０２ｂがｐｉｖｏｔとなる。
【００４２】
続いて合成部２０４は、ｐｉｖｏｔの大きさに合わせてＢＩＮを部分数列として切り出し（ステップＳ５０６）、切り出されたＢＩＮの一部とｐｉｖｏｔとの間のＸＯＲを演算し、その結果をＣｏｍ（ｎ）として作業用データ保存部２０５に記憶する（ステップＳ５０７）。ここで、ＢＩＮに対してｉ文字目からｋ文字目までの部分数列を切り出す処理をＰａｒｔ関数として定義すると、ステップＳ５０６の処理は以下の数１として表現できる。なお、ｉの初期値は０、ｋの初期値はＭａｘＢ＝ＬＥＮ（ＢＩＮ（ｐｉｖｏｔ））、ｎの初期値は０である。また、ＢＩＮ、ｐｉｖｏｔとも、先頭の文字を０文字目とする。
【００４３】
【数１】
2010044609.tif 000003
【００４４】
続いて合成部２０４は、ＢＩＮの未処理部分数列の長さがｐｉｖｏｔより短くなったか否かを判断し（ステップＳ５０８）、短くなっていなければステップＳ５０７で算出されたＸＯＲの値を作業用データ保存部２０５に記憶し（ステップＳ５０９）、ＢＩＮから処理済みの部分を取り除き、ｉ＝ｋ，ｋ＝ｋ＋ＬＥＮ（ＢＩＮ（ｐｉｖｏｔ）），ｎ＝ｎ＋１としてｉ，ｋおよびｎの値を置き換え（ステップＳ５１０）、ステップＳ５０６からの処理を繰り返す。
【００４５】
ステップＳ５０８で、ＢＩＮの未処理部分数列の長さがｐｉｖｏｔより短くなっていれば、今度はｐｉｖｏｔの長さをＢＩＮの未処理部分数列の長さに切断して、ＢＩＮの未処理部分数列と切断されたｐｉｖｏｔに対して排他的論理和を実行して、算出されたＸＯＲの値を作業用データ保存部２０５に記憶する（ステップＳ５１１）。
【００４６】
ステップＳ５１１まででＢＩＮの全ての部分に対して排他的論理和Ｃｏｍ（ｎ）の算出が終わった後、作業用データ保存部２０５に一時記憶されていたＣｏｍ（ｎ）の値を取り出し、処理した時間順に連結する処理を行う（ステップＳ５１２）。ここで連結された数値が、合成処理結果ＣＯＭ（Ａ、Ｂ）である。なお、Ｃｏｍ（ｎ）の各々の値のデータ長は、最後にステップＳ５１１で実行されたＣｏｍ（ｎ）を除いて、全てｐｉｖｏｔのデータ長と同一である。従って、データの連結に当たっては、区切りのために特定の文字を挿入する必要は特にない。
【００４７】
前述のように図６（ｃ）は、作業用データ保存部２０５に保存されている整形済文書Ａ１０１ｂおよびＢ１０２ｂに対する、図５のステップＳ５１１の処理の状態を表す。この図６（ｃ）で説明している例では、ステップＳ５０６〜５１０のループの２回目で、ＢＩＮの未処理部分の長さが、ｐｉｖｏｔよりも短くなっている。ここでステップＳ５０８の判断に基づいて、ステップＳ５１１の処理に進んだ例について、図６（ｃ）では説明しているのである。
【００４８】
換言すれば、図５に示した処理は、ＢＩＮを先頭からｐｉｖｏｔと同一のデータ長に切り出してはｐｉｖｏｔとの間のＸＯＲを演算して結果をＣｏｍ（ｎ）として保存するという処理を繰り返し、ＢＩＮの残りがｐｉｖｏｔよりも短くなった場合に限って、今度はｐｉｖｏｔをＢＩＮの残りと同一のデータ長に切り出してｐｉｖｏｔとの間のＸＯＲを演算してこれもＣｏｍ（ｎ）として保存するというものである。そして、ＸＯＲを演算して得られた値であるＣｏｍ（ｎ）を、処理した時間順に連結して、最終的にＢＩＮと同一データ長の合成データＣＯＭ（Ａ、Ｂ）１０４を得る。
【００４９】
（データの復元）
図７は、図４〜５で述べた処理で合成部２０４によって生成された合成処理結果ＣＯＭ（Ａ、Ｂ）１０４を利用して、図１〜２に示した改ざん検出装置１によって元のデータを復元する処理について説明するフローチャートである。ここでは、文書Ｂ１０２のバイナリデータであるＢＩＮ（Ｂ）と、合成処理結果ＣＯＭ（Ａ、Ｂ）１０４とを利用して、ＢＩＮ（Ａ）を再生する。
【００５０】
まず演算部（演算装置１０３）は、ＢＩＮ（Ｂ）と、合成処理結果ＣＯＭ（Ａ、Ｂ）１０４のデータを作業用データ保存部２０５に読み込む（ステップＳ７０１）。ここで読み込まれたデータが未整形のデータである場合は、これに対して作業用データである整形済文書Ｂ１０２ｂを作成する。この処理では、図４の４０２〜４０５と同一の処理を実行して、整形済文書Ｂ１０２ｂを生成する（ステップＳ７０２〜７０４）。未整形データでなければ、そのまま作業用データ保存部２０５にとどめる。
【００５１】
この、整形済文書Ｂ１０２ｂとＣＯＭ（Ａ、Ｂ）という２つのデータに対して、合成部２０４がステップＳ４０７（または図５）と同一の合成処理を実行する。排他的論理和（ＸＯＲ）の性質より、ＣＯＭ（Ａ、Ｂ）に整形済文書Ｂ１０２ｂをＸＯＲ演算すれば整形済文書Ａ１０１ｂのデータが再現される。
【００５２】
図５〜６で説明したようにＣＯＭ（Ａ、Ｂ）が整形済文書Ｂ１０２ｂよりも長い場合、ＣＯＭ（Ａ、Ｂ）をＢＩＮとし、整形済文書Ｂ１０２ｂをｐｉｖｏｔとして、図５で説明した処理と同様に、ｐｉｖｏｔの長さごとに合成処理結果ＣＯＭ（Ａ、Ｂ）を切断して、それらに対して順番にＸＯＲ  ｐｉｖｏｔの演算を行っていき、その結果として得られた文字列を連結すれば整形済文書Ａ１０１ｂが得られる。
【００５３】
再現された整形済文書Ａ１０１ｂから、整形部２０３が、列長３０１とファイル名３０２を取り除き（ステップＳ７０５〜７０８）、ボディ３０３の部分をファイル名データ３０２のファイル名でファイルとすれば（ステップＳ７０９）、元の文書Ａ１０１が生成される。列長３０１とファイル名３０２は、いずれも図３で示したように固定長データであるので、整形部２０３は、整形済文書Ａ１０１ｂの先頭から所定のデータ長を取り除けば、ボディ３０３、つまり元の文書Ａ１０１を得ることができる。
【００５４】
（全体的な動作）
次に、上記の第１の実施形態の全体的な動作について説明する。本発明の第１の実施形態に係る改ざん検出装置１は、第１のデータ（文書Ａ１０１）と第２のデータ（文書Ｂ１０２）とをＸＯＲ（排他的論理和）演算して合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を生成し、この合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を記憶し、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）と第２のデータ（文書Ｂ１０２）とをＸＯＲ演算して第１のデータ（文書Ａ１０１）を生成するものである。
【００５５】
ここで、一方のデータ（文書Ｂ１０２）が他方のデータ（文書Ａ１０１）より短い場合、他方のデータ（文書Ａ１０１）から一方のデータ（文書Ｂ１０２）と同一のデータを第１の部分データとして切り出して残りを第１の残データとし、第１の部分データと一方のデータとをＸＯＲ演算し（図５：ステップＳ５０６〜５０７）、その結果として得られた第１の合成データを保存する（図５：ステップＳ５０９〜５１０）。
以後、ｎを２以上の自然数とすると、第ｎ−１の残データが一方のデータより長い場合、第ｎ−１の残データから一方のデータとデータ長が同一の第ｎの部分データを切り出し、その残りを第ｎの残データとして、第ｎの部分データと一方のデータとをＸＯＲ演算して得られた第ｎの合成データを保存するという処理を繰り返す（図５：ステップＳ５０６〜５１０）。
ここで、第ｎの残データが一方のデータよりも短くなった場合には（図５：ステップＳ５０８）、一方のデータから第ｎの残データとデータ長が同一の第ｎ＋１の部分データを切り出し、これと第ｎの残データとをＸＯＲ演算して得られた第ｎ＋１の合成データを保存する（図５：ステップＳ５１１）。
そして、これらの第１〜第ｎ＋１の合成データを切り出し順に従って連結することによって合成データ（ＣＯＭ（Ａ，Ｂ）１０４）を生成する（図５：ステップＳ５１２）。
【００５６】
上記と同様の処理で、合成データ（ＣＯＭ（Ａ，Ｂ）１０４）から第２のデータ（文書Ｂ１０２）と同一のデータ長を切り出してＸＯＲ演算する処理を繰り返し、それらのＸＯＲ演算によって得られたデータを連結することによって第１のデータ（文書Ａ１０１）を生成する（図７：ステップＳ４０７、または図５）ようにすることもできる。
【００５７】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータである改ざん検出装置１に実行させるようにしてもよい。
【００５８】
以上説明したように、本発明においては、以上のような動作を行うことにより、次に記載するような効果を奏する。
第１のデータと第２のデータのうち一方のデータをＸＯＲ演算して他方のデータを生成することにより、特殊な計算を特に必要とはせずに、記憶保持している他方のデータと生成されたデータとを比較することによって、第１もしくは第２のデータに改ざんがあったことを検出可能である。
【００５９】
即ち、仕様書とレビュー記録などのような必ず対とならなければ意味をなさないデータに対して、排他的論理和の演算が可能な演算装置であれば可能である動作で、偽造などを容易に検出することができる。この動作は、巨大な計算機システムなどを必要とするものではない。ここでいう「対とならなければ意味をなさないデータ」は、必ずしも文書内に文字として表現された内容において「関連性」を持ったものである必要はない。
【００６０】
たとえば、仕様書を原本のまま管理し、人間の目で判読可能な状況を保ちつつ、レビュー記録表を合成として管理することで、仕様書の版数に一致したレビュー記録表を確実に保持することができるようになる。
【００６１】
また、本実施形態によれば簡単な代数的演算により一対となるデータの生成が可能で、かつ生成されたデータは通常のファイルとして管理可能であるので、ファイルシステムや言語などに依存することはなく、またデータの種類などについても問わずに適用することが可能である。
【００６２】
［第２の実施形態］
図８は、本発明の第２の実施形態に係るデータ改ざん検出装置８００を示す概略構成図である。本実施形態に係るデータ改ざん検出装置８００は、身分証明書８０１とそれに対応する生体認証データ８０２とからなるデータ対を管理対象とする。生体認証データ８０２としては、たとえば指紋、虹彩などを利用することができる。生成された合成データ８０４は、身分証明書８０１に添付される。
【００６３】
身分証明書８０１と生体認証データ８０２は、いずれもバイナリデータとして表現可能であるので、前述の第１の実施形態と全く同一の構成の演算装置１０３によって、合成データ８０４を生成して、前述の第１の実施形態と全く同一の処理を行い、それによって身分証明書８０１と生体認証データ８０２のうちのいずれかまたは両方が改ざんされたことを検知することができる。この効果もまた、前述の第１の実施形態と全く同一である。
【００６４】
合成データ８０４そのものは人間の目で判読可能なものではないので、合成自体を有意に改ざん／改変することは困難である。従って、合成データ８０４自体は秘匿される必要がないので、管理対象となるデータ、ここでは身分証明書８０１自身に合成データ８０４を記録として保持させても特に問題はない。具体的には、磁気ストライプや２次元バーコードなどを利用して、合成データ８０４を身分証明書８０１に添付するようにすることができる。
【００６５】
たとえば身分証明書８０１がパスポートである場合、当該パスポートそのものが改ざん／成りすまし検知機能を備えることになるので、発行国の管理するデータを参照するという手間をかけずに正当性の確認が可能となる。
【００６６】
これら以外にも、バイナリデータとして表現可能なデータであり、かつ一対一で対応させる必要があるデータであれば、本発明の第１および第２の実施形態を適用することができる。ファイルシステムや言語などには特に依存しない。
【００６７】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【００６８】
バイナリデータとして表現可能で、かつ一対一で対応させる必要があるデータ対をなすデータであれば、種類を問わずに適用することができる。また、ファイルシステムや言語などにも依存しない。たとえば文書管理、情報管理、ＩＤ管理などの用途に特に適している。
【図面の簡単な説明】
【００６９】
【図１】本発明の第１の実施形態に係るデータ改ざん検出装置１の構成を示す概略構成図である。
【図２】図１に示した演算装置１０３の構成をより詳細に表す概略構成図である。
【図３】図２で示した整形部２０３が生成する作業用データ３００の構成を示す説明図である。
【図４】図１および図２に示した演算装置１０３が実行する処理を表すフローチャートである。
【図５】図４で示したステップＳ４０７の処理をより詳細に説明するフローチャートである。
【図６】作業用データ保存部２０５に保存されているステップＳ４０７の処理対象となる整形済文書Ａ１０１ｂおよびＢ１０２ｂに対する処理の状態を表す説明図である。図６（ａ）は整形済文書Ａ１０１ｂおよびＢ１０２ｂの初期状態を示し、図６（ｂ）は図５のステップＳ５０６〜５０７の１回目の処理について示し、図６（ｃ）は図５のステップＳ５１１の処理について示す。
【図７】図４〜５で述べた処理で合成部２０４によって生成された合成処理結果ＣＯＭ（Ａ、Ｂ）１０４を利用して、図１〜２に示したデータ改ざん検出装置１によって元のデータを復元する処理について説明するフローチャートである。
【図８】本発明の第２の実施形態に係るデータ改ざん検出装置８００を示す概略構成図である。
【符号の説明】
【００７０】
１、８００  データ改ざん検出装置
１０１  文書Ａ
１０２  文書Ｂ
１０１ｂ  整形済文書Ａ
１０２ｂ  整形済文書Ｂ
１０３  演算装置
１０４  ＣＯＭ（Ａ，Ｂ）
２０１  列長算出部
２０２  ファイル名抽出部
２０３  整形部
２０４  合成部
２０５  作業用データ保存部
３００  作業用データ
３０１  列長
３０２  ファイル名
３０３  ボディ
８０１  身分証明書
８０２  生体認証データ
８０４  合成データ
【図１】
2010044609.tif 000004
【図２】
2010044609.tif 000005
【図３】
2010044609.tif 000006
【図４】
2010044609.tif 000007
【図５】
2010044609.tif 000008
【図６】
2010044609.tif 000009
【図７】
2010044609.tif 000010
【図８】
2010044609.tif 000011