(57)【特許請求の範囲】
【請求項１】
電子文書に対する改竄を検出するための前処理を行う電子文書改竄検出前処理方法であって、
（ａ）前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する工程と、
（ｂ）分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う工程と、
（ｃ）各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する工程と、
（ｄ）前記演算結果が前記所定の条件を満たしていないブロックについては、演算結果が前記所定の条件を満たし得るように、そのブロックに含まれる少なくとも１つの画素の値を変更する工程と、
を備える電子文書改竄検出前処理方法。
【請求項２】
請求項１に記載の電子文書改竄検出前処理方法において、
前記多値画像データに含まれる前記データは、画素における或るビットの値を表すビットプレーンのデータであることを特徴とする電子文書改竄検出前処理方法。
【請求項３】
請求項２に記載の電子文書改竄検出前処理方法において、
前記ビットプレーンのデータは、比較的下位のビットの値を表すビットプレーンのデータであることを特徴とする電子文書改竄検出前処理方法。
【請求項４】
請求項１に記載の電子文書改竄検出前処理方法において、
前記多値画像データに含まれる前記データは、画素における複数のビットの値をそれぞれ表す複数のビットプレーンを統合したデータであることを特徴とする電子文書改竄検出前処理方法。
【請求項５】
請求項１に記載の電子文書改竄検出前処理方法において、
前記所定の条件は、前記演算結果が偶数であることを特徴とする電子文書改竄検出前処理方法。
【請求項６】
請求項１に記載の電子文書改竄検出前処理方法において、
前記所定の条件は、前記演算結果が奇数であることを特徴とする電子文書改竄検出前処理方法。
【請求項７】
請求項１に記載の電子文書改竄検出前処理方法において、
（ｅ）前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに、前記ブロックに関する情報を電子透かしで埋め込む工程
をさらに備える電子文書改竄検出前処理方法。
【請求項８】
請求項１に記載の電子文書改竄検出前処理方法において、
（ｅ）前記ブロックに関する情報を暗号化すると共に、該情報を、前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに付加する工程
をさらに備える電子文書改竄検出前処理方法。
【請求項９】
請求項１に記載の電子文書改竄検出前処理方法において、
（ｅ）前記ブロックに関する情報を暗号化すると共に、該情報を、前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに電子透かしで埋め込む工程
をさらに備える電子文書改竄検出前処理方法。
【請求項１０】
電子文書に対する改竄を検出する電子文書改竄検出方法であって、
（ａ）前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する工程と、
（ｂ）分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う工程と、
（ｃ）各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する工程と、
（ｄ）前記演算結果が前記所定の条件を満たしていないブロックについて、前記電子文書における該ブロックに関わる部分が改竄された部分であると特定する工程と、
を備える電子文書改竄検出方法。
【請求項１１】
請求項１０に記載の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が電子透かしで埋め込まれている場合に、前記多値画像データから前記情報を取り出す工程
をさらに備える電子文書改竄検出前処理方法。
【請求項１２】
請求項１０に記載の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が暗号化されて付加されている場合に、前記多値画像データから前記情報を取り出して復号化する工程
をさらに備える電子文書改竄検出前処理方法。
【請求項１３】
請求項１０に記載の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が暗号化されて電子透かしで埋め込まれている場合に、前記多値画像データから前記情報を取り出して復号化する工程
をさらに備える電子文書改竄検出前処理方法。
【請求項１４】
電子文書に対する改竄を検出するための前処理を行う電子文書改竄検出前処理装置であって、
前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割するブロック分割手段と、
分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う演算手段と、
各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する条件判定手段と、
前記演算結果が前記所定の条件を満たしていないブロックについては、演算結果が前記所定の条件を満たし得るように、そのブロックに含まれる少なくとも１つの画素の値を変更する値変更手段と、
を備える電子文書改竄検出前処理装置。
【請求項１５】
電子文書に対する改竄を検出する電子文書改竄検出装置であって、
前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割するブロック分割手段と、
分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う演算手段と、
各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する条件判定手段と、
前記演算結果が前記所定の条件を満たしていないブロックについて、前記電子文書における該ブロックに関わる部分が改竄された部分であると特定する改竄部分特定手段と、
を備える電子文書改竄検出装置。
【請求項１６】
電子文書に対する改竄を検出すべく前処理を行わせるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する機能と、
分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う機能と、
各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する機能と、
前記演算結果が前記所定の条件を満たしていないブロックについては、演算結果が前記所定の条件を満たし得るように、そのブロックに含まれる少なくとも１つの画素の値を変更する機能と、
を前記コンピュータに実現させるためのコンピュータプログラムを記録した記録媒体。
【請求項１７】
電子文書に対する改竄を検出させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する機能と、
分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う機能と、
各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する機能と、
前記演算結果が前記所定の条件を満たしていないブロックについて、前記電子文書における該ブロックに関わる部分が改竄された部分であると特定する機能と、
を前記コンピュータに実現させるためのコンピュータプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子文書に対する改竄を検出するための技術に関するものである。
【０００２】
【従来の技術】
一般に、電子化された文書は改竄されても、その痕跡が残りにくいため、電子文書を利用する場合には、そのデータの信憑性に対する保証が不可欠である。
【０００３】
そこで、従来では、データの信憑性を保証するために、デジタル署名や、ハッシュ関数を用いたメッセージダイジェストなどの技術が提案されている。
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来の技術では、電子文書が改竄された場合に、改竄されたこと自体は検出することが可能であるが、電子文書のどの部分が改竄されたかについては検出することは困難であった。
【０００５】
従って、本発明の目的は、上記した従来技術の問題点を解決し、電子文書が改竄されても、その改竄された部分を検出することが可能な電子文書改竄検出方法を提供することにある。
【０００６】
【課題を解決するための手段およびその作用・効果】
上記した目的の少なくとも一部を達成するために、本発明の電子文書改竄検出前処理方法は、電子文書に対する改竄を検出するための前処理を行う電子文書改竄検出前処理方法であって、
（ａ）前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する工程と、
（ｂ）分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う工程と、
（ｃ）各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する工程と、
（ｄ）前記演算結果が前記所定の条件を満たしていないブロックについては、演算結果が前記所定の条件を満たし得るように、そのブロックに含まれる少なくとも１つの画素の値を変更する工程と、
を備えることを要旨とする。
【０００７】
このような本発明の電子文書改竄検出前処理方法では、電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割し、その分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う。そして、各ブロック毎に、その演算結果が所定の条件を満たしているか否かを判定し、その演算結果が上記の所定の条件を満たしていないブロックについては、演算結果がその条件を満たすように、そのブロックに含まれる少なくとも１つの画素の値を変更する。この結果、すべてのブロックの演算結果は所定の条件を満たすことになる。
【０００８】
しかしながら、このような前処理の施された多値画像データについて、その多値画像データの表す電子文書の内容が改竄されると、その改竄部分に該当するブロックは、その改竄によって演算結果が所定の条件を満たさなくなる。従って、この演算結果が所定の条件を満たさないブロックを検出することによって、改竄部分を特定することができる。
【０００９】
よって、本発明によれば、電子文書を表す多値画像データに対して、上記のような前処理を施すことにより、その後、その多値画像データがコンピュータネットワークなどを介して転送される途中で、そのデータの表す電子文書の内容が改竄されても、改竄の有無だけでなく、改竄された部分も容易に検出することができる。従って、電子文書を利用する場合のデータの信憑性を保証することができ、改竄などの不正行為の未然防止につなげることができる。
【００１０】
本発明の電子文書改竄検出前処理方法において、前記多値画像データに含まれる前記データは、画素における或るビットの値を表すビットプレーンのデータであることが好ましい。
【００１１】
このようなビットプレーンのデータを用いることによって、各ブロック毎に行う演算は簡単で済む。
【００１２】
本発明の電子文書改竄検出前処理方法において、前記ビットプレーンのデータは、比較的下位のビットの値を表すビットプレーンのデータであることが好ましい。
【００１３】
このように、比較的下位のビットプレーンのデータを用いることにより、工程（ｄ）で画素の値を変更する場合でも、下位ビットの値の変更となるため、画素の濃度値に与える影響が少なくて済む。
【００１４】
本発明の電子文書改竄検出前処理方法において、前記多値画像データに含まれる前記データは、画素における複数のビットの値をそれぞれ表す複数のビットプレーンを統合したデータであることが好ましい。
【００１５】
本発明の電子文書改竄検出前処理方法において、前記所定の条件は、前記演算結果が偶数であることが好ましい。
【００１６】
このように、いわゆる偶数パリティとする場合には、電子文書において、情報を持たないビット値「０」の連続した領域がかなりの部分を占める場合でも、ノイズの増大を防ぐことが可能となる。
【００１７】
本発明の電子文書改竄検出前処理方法において、前記所定の条件は、前記演算結果が偶数であってもよい。
【００１８】
本発明の電子文書改竄検出前処理方法において、
（ｅ）前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに、前記ブロックに関する情報を電子透かしで埋め込む工程をさらに備えることが好ましい。
【００１９】
また、本発明の電子文書改竄検出前処理方法において、
（ｅ）前記ブロックに関する情報を暗号化すると共に、該情報を、前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに付加する工程をさらに備えることが好ましい。
【００２０】
さらにまた、本発明の電子文書改竄検出前処理方法において、
（ｅ）前記ブロックに関する情報を暗号化すると共に、該情報を、前記工程（ａ）〜（ｄ）の各処理を施した前記多値画像データに電子透かしで埋め込む工程をさらに備えることが好ましい。
【００２１】
このように、多値画像データに対し、ブロックに関する情報を電子透かしで埋め込んだり、暗号化して付加したり、暗号化した上で電子透かしで埋め込んだりすることにより、不正な意図を有する者が、そのブロック情報を取得するのが困難となり、電子文書に対し、ブロック構造を考慮した巧妙な改竄を行うことは不可能となる。また、電子文書の内容が改竄された場合でも、ブロック情報まで破壊されるのを回避することができる。また、暗号や電子透かしの存在によって、その電子文書に対するデータの信憑性をさらに保証することができる。
【００２２】
本発明の電子文書改竄検出方法は、電子文書に対する改竄を検出する電子文書改竄検出方法であって、
（ａ）前記電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割する工程と、
（ｂ）分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行う工程と、
（ｃ）各ブロック毎に、前記演算結果が所定の条件を満たしているか否かを判定する工程と、
（ｄ）前記演算結果が前記所定の条件を満たしていないブロックについて、前記電子文書における該ブロックに関わる部分が改竄された部分であると特定する工程と、
を備えることを要旨とする。
【００２３】
このような本発明の電子文書改竄検出前処理方法では、電子文書を表す多値画像データに含まれるデータを、１以上の画素を単位とする複数のブロックに分割し、その分割した各ブロック毎に、そのブロックに含まれる画素の値を用いて、そのブロックに含まれる画素のビットの値の和が奇数であるか偶数であるかを求める演算を行い、各ブロック毎に、その演算結果が所定の条件を満たしているか否かを判定する。このとき、上記多値画像データに、前述したような前処理が施されている場合には、すべてのブロックの演算結果は所定の条件を満たすことになる。しかしながら、上記多値画像データの表す電子文書の内容が改竄されているとすると、その改竄部分に該当するブロックは、その改竄によって演算結果が所定の条件を満たさない。そこで、上記した判定の結果、演算結果が所定の条件を満たしていないブロックについては、電子文書におけるそのブロックに関わる部分が改竄された部分であると特定する。
【００２４】
よって、前述したような前処理の施された多値画像データについて、そのデータの表す電子文書の内容が改竄されても、本発明の電子文書改竄検出方法を用いることにより、改竄の有無だけでなく、改竄された部分も容易に検出することができる。従って、電子文書を利用する場合のデータの信憑性を保証することができ、改竄などの不正行為の未然防止につなげることができる。
【００２５】
本発明の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が電子透かしで埋め込まれている場合に、前記多値画像データから前記情報を取り出す工程をさらに備えることが好ましい。
【００２６】
本発明の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が暗号化されて付加されている場合に、前記多値画像データから前記情報を取り出して復号化する工程をさらに備えることが好ましい。
【００２７】
本発明の電子文書改竄検出方法において、
（ｅ）前記多値画像データに、前記ブロックに関する情報が暗号化されて電子透かしで埋め込まれている場合に、前記多値画像データから前記情報を取り出して復号化する工程をさらに備えることが好ましい。
【００２８】
このような工程を備えることによって、ブロックに関する情報を例え知らなくても、多値画像データからその情報を取得することができる。
【００２９】
なお、本発明は、上記した電子文書改竄検出前処理方法や電子文書改竄検出方法などの方法発明の態様に限ることなく、電子文書改竄検出前処理装置や電子文書改竄検出装置などの装置の発明としての態様や、それら方法や装置を構築するためのコンピュータプログラムを記録した記録媒体としての態様で実現することも可能である。また、さらには、上記コンピュータプログラムを含み搬送波内に具現化されたデータ信号や、上記コンピュータプログラム自体など、種々の態様で実現することも可能である。
【００３０】
【発明の実施の形態】
以下、本発明の実施の形態を実施例に基づいて説明する。
Ａ．装置の全体構成
はじめに、本発明の一実施例としての電子文書改竄検出装置１０の構成について図１を用いて説明する。図１は、本実施例において電子文書改竄検出前処理及び電子文書改竄検出処理を実行する電子文書改竄検出装置１０の構成を示すブロック図である。この電子文書改竄検出装置１０は、ＣＰＵ２２と、ＲＡＭ２４と、ＲＯＭ２６と、キーボード３０と、マウス３２と、ＣＲＴなどから成る表示装置３４と、ハードディスク装置３６と、ネットワークカードやモデムなどから成る通信装置３８と、画像を読み取るスキャナ３９と、これらの各要素を接続するバス４０と、を備えるコンピュータである。なお、図１では各種のインターフェイス回路は省略されている。通信装置３８は、図示しない通信回線を介してコンピュータネットワークに接続されている。コンピュータネットワークの図示しないサーバは、通信回線を介してコンピュータプログラムを電子文書改竄検出装置１０に供給するプログラム供給装置としての機能を有する。
【００３１】
ＲＡＭ２４には、対象となる電子文書を表す多値画像データからビットプレーンを抽出するビットプレーン抽出部４１と、抽出したビットプレーンのデータを、複数のブロックに分割するブロック分割部４２と、分割した各ブロック毎に、そのブロックに含まれる画素のビット値を用いて演算を行い、そのブロックのパリティ値を求めるパリティ演算部４３と、各ブロック毎に、求めたパリティ値が予め設定されたパリティ制御値と一致しているか否かを判定する条件判定部４４と、改竄検出前処理において、パリティ値がパリティ制御値と一致していないブロックについて、そのブロックに含まれる画素のビット値を変更するビット値変更部４５と、改竄検出処理において、パリティ値がパリティ制御値と一致していないブロックについて、電子文書におけるそのブロックに関わる部分が改竄されていることを検出する改竄検出部４６の、各機能を実現するためのコンピュータプログラムが格納されている。ビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、ビット値変更部４５、及び改竄検出部４６の機能については後で詳しく説明する。
【００３２】
これらの各部４１〜４６の機能を実現するコンピュータプログラムは、フレキシブルディスクやＣＤ−ＲＯＭ等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。コンピュータは、その記録媒体からコンピュータプログラムを読み取って内部記憶装置または外部記憶装置に転送する。あるいは、通信経路を介してコンピュータにコンピュータプログラムを供給するようにしてもよい。コンピュータプログラムの機能を実現する時には、内部記憶装置に格納されたコンピュータプログラムがコンピュータのマイクロプロセッサによって実行される。また、記録媒体に記録されたコンピュータプログラムをコンピュータが読み取って直接実行するようにしてもよい。
【００３３】
この明細書において、コンピュータとは、ハードウェア装置とオペレーションシステムとを含む概念であり、オペレーションシステムの制御の下で動作するハードウェア装置を意味している。また、オペレーションシステムが不要でアプリケーションプログラム単独またはファームウェア単独でハードウェア装置を動作させるような場合には、そのハードウェア装置自体がコンピュータに相当する。ハードウェア装置は、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とを少なくとも備えている。例えば、ディジタルカメラやスキャナなどの電子機器に、ＣＰＵやＲＯＭなどが組み込まれていて、これら電子機器がコンピュータとしての機能を有する場合も、これら電子機器はコンピュータの概念に当然に含まれる。コンピュータプログラムは、このようなコンピュータに、上述の各手段の機能を実現させるプログラムコードを含んでいる。なお、上述の機能の一部は、アプリケーションプログラムでなく、オペレーションシステムによって実現されていても良い。更に、電子透かしの埋め込み処理や復号処理を行なうプログラムは、画像処理を行なうプログラムに対して、プラグインの形式で付加されるものとしてもよい。
【００３４】
なお、この発明における「記録媒体」としては、フレキシブルディスクやＣＤ−ＲＯＭ、光磁気ディスク、ＩＣカード、ＲＯＭカートリッジ、パンチカード、バーコードなどの符号が印刷された印刷物、コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ）および外部記憶装置等の、コンピュータが読取り可能な種々の媒体を利用することができる。
【００３５】
Ｂ．電子文書改竄検出前処理
図２は図１のビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及びビット値変更部４５が行う電子文書改竄検出前処理の手順を示すフローチャートである。この処理は、ビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及びビット値変更部４５の処理として実現されている。
【００３６】
この処理が行われる前提として、ハードディスク装置３６内には、この処理の対象となる電子文書を表す多値画像データが格納されている。このような多値画像データは、例えば、印刷文書をスキャナ３９によって読み取ったり、あるいは、ワープロソフトなどにより表示装置３４の画面上に文書を表示した際に、その表示データを抽出したりすることにより、得ることができる。
【００３７】
本実施例では、このように、一般的に２値画像として扱われる電子文書のデータを２ビット以上を有する多値画像のデータに変換することで、コンテンツに冗長性を持たせ、そこに改竄検出の工夫を施すものである。
【００３８】
そこで、図２に示すように、改竄検出の前処理が起動されると、まず、ビットプレーン抽出部４１は、対象となる多値画像データをハードディスク装置３６から読み出し（ステップＳ１０２）、その多値画像データからビットプレーンのデータを抽出する（ステップＳ１０４）。
【００３９】
ここで、読み出した多値画像データの表す多値画像をＡとすると、その多値画像Ａを構成する各画素の値ａ（ｘ，ｙ）は、式（１）によって表される。
【００４０】
【数１】
0004220661.tif 000002
【００４１】
但し、ｄは多値画像データのビット数であり、ｎは多値画像Ａのｘ方向の画素数であり、ｍは同じく多値画像Ａのｙ方向の画素数である。また、ａi（ｘ，ｙ）（但し、０≦ｉ≦ｄ−１）は、画素値ａ（ｘ，ｙ）を２進数で表現したときに、２iの重みを持つビット値である。
【００４２】
また、このビット値ａi（ｘ，ｙ）から成る平面Ａiをビットプレーンと称し、式（２）によって表される。
【００４３】
【数２】
0004220661.tif 000003
【００４４】
例えば、読み出した多値画像データのビット数ｄが４であるとすると、下位ビットから順番に４枚のビットプレーンＡ0，Ａ1，Ａ2，Ａ3が成立することになる。
【００４５】
図３は４ビットの多値画像データから４枚のビットプレーンが成立する様子を示す説明図である。図３において、（ａ）は４ビットの多値画像データで表される多値画像Ａであり、（ｂ）はその多値画像Ａから抽出される４枚のビットプレーンＡ0，Ａ1，Ａ2，Ａ3である。なお、図３では、図面を見やすくするために、多値画像Ａを構成する画素はａ（０，０）〜ａ（２，２）の９つの画素しか示していないが、実際には、ｘ方向にｎ個、ｙ方向にｍ個の合計ｎ×ｍ個の画素が存在している。
【００４６】
図３（ａ）において、例えば、（０，０）の位置にある画素の値ａ（０，０）は、「６」であるので、式（１）に従うと、次のように表される。
【００４７】
ａ（０，０）＝６＝０・２3＋１・２2＋１・２1＋０・２0
従って、画素値ａ（０，０）の各ビット値は、上位ビットから順番に、ａ3（０，０）＝０，ａ2（０，０）＝１，ａ1（０，０）＝１，ａ0（０，０）＝０となる。
【００４８】
よって、図３（ｂ）に示すように、ビットプレーンＡ3における（０，０）の値はビット値ａ3（０，０）＝０となり、ビットプレーンＡ2における（０，０）の値はａ2（０，０）＝１となり、ビットプレーンＡ1における（０，０）の値はａ1（０，０）＝１となり、ビットプレーンＡ0における（０，０）の値はａ0（０，０）＝０となる。
【００４９】
以上、（０，０）の位置にある画素を代表例として説明したが、他の位置（ｘ，ｙ）にある画素についても同様に、各ビット値ａ3（ｘ，ｙ），ａ2（ｘ，ｙ），ａ1（ｘ，ｙ），ａ0（ｘ，ｙ）がそれぞれ得られ、各ビットプレーンＡ3，Ａ2，Ａ2，Ａ0における（ｘ，ｙ）の値を構成する。
【００５０】
以上のようにして、ビットプレーン抽出部４１は、読み出した多値画像データから各ビットプレーンのデータを抽出する。
【００５１】
次に、ブロック分割部４２は、抽出した４つのビットプレーンのデータのうち、或るビットプレーンのデータを複数のブロックに分割する（ステップＳ１０６）。このとき、１つのブロックは、図４に示すように、ｘ方向にＮ個、ｙ方向にＮ個の合計Ｎ×Ｎ個の画素から成るブロックとし、各ブロックは、１行毎に、ｘ方向に画素Ｎ／２個分ずれるように分割される。図４はビットプレーンを複数のブロックに分割したときのブロック分割構造を示す説明図である。図４において、Ｂij（ｊ＝０〜７）は、ビットプレーンＡiの分割されたブロックを示している。
【００５２】
図５は多値画像Ａから４つのビットプレーンＡ0〜Ａ3を抽出し、さらに複数のブロックに分割した様子を示す説明図である。図５において、（ａ）は多値画像Ａを構成している複数の画素を示し、（ｂ）は４つのビットプレーンＡ0〜Ａ3が複数のブロックに分割されている様子を示している。
【００５３】
図５（ｂ）に示すように、例えば、Ｎ＝２であるとすると、１つのブロックは、２×２の合計４個の画素から成るブロックとなり、１行毎にｘ方向に１画素ずつずれることになる。
【００５４】
続いて、パリティ演算部４３は、分割した複数のブロックのうち、或るブロックを選択し、そのブロックに含まれるＮ×Ｎ個の画素のビット値を用いて、そのブロックのパリティ値を下記の演算により求める（ステップＳ１０８）。
【００５５】
即ち、対象となるブロックＢijとし、そのブロックＢijの基点となる左上隅の位置を（ｘj，ｙj）とすると、そのブロックＢijのパリティ値Ｐｂij（ｘj，ｙj）は、式（３）により求められる。
【００５６】
【数３】
0004220661.tif 000004
【００５７】
例えば、今、ステップＳ１０６で選択したビットプレーンが最上位ビットに対応するＡ3であり、そのビットプレーンＡ3における各画素のビット値が、図６（ａ）に示す如くであるとする。
【００５８】
図６はビットプレーンＡ3の各ブロックに対して行われる処理の手順を示す説明図である。
【００５９】
対象となるブロックがＢ30である場合、図６（ａ）に示すように、４つの画素のビット値は、左上，右上，左下，右下の順に、（１，０，１，１）であるため、そのブロックＢ30のパリティ値Ｐｂ30（ｘ0，ｙ0）は、式（３）に従うと、次のように表される。
【００６０】
Ｐｂ30（ｘ0，ｙ0）＝（１＋０＋１＋１）ｍｏｄ２＝１
【００６１】
また、対象となるブロックがＢ31である場合、図６（ａ）に示すように、４つの画素のビット値は、（０，０，０，０）であるため、そのブロックＢ31のパリティ値Ｐｂ31（ｘ1，ｙ1）は、式（３）に従うと、次のように表される。
【００６２】
Ｐｂ31（ｘ1，ｙ1）＝（０＋０＋０＋０）ｍｏｄ２＝０
【００６３】
同様に、残りの６つのブロックＢ32〜Ｂ37のパリティ値Ｐｂ32（ｘ2，ｙ2）〜Ｐｂ37（ｘ7，ｙ7）も、次のように表される。
【００６４】
Ｐｂ32（ｘ2，ｙ2）＝（０＋１＋０＋１）ｍｏｄ２＝０
Ｐｂ33（ｘ3，ｙ3）＝（１＋１＋０＋１）ｍｏｄ２＝１
Ｐｂ34（ｘ4，ｙ4）＝（１＋０＋１＋０）ｍｏｄ２＝０
Ｐｂ35（ｘ5，ｙ5）＝（０＋０＋０＋０）ｍｏｄ２＝０
Ｐｂ36（ｘ6，ｙ6）＝（０＋１＋０＋０）ｍｏｄ２＝１
Ｐｂ37（ｘ7，ｙ7）＝（１＋０＋１＋１）ｍｏｄ２＝１
【００６５】
以上の結果、各ブロックのパリティ値は、図６（ｂ）に示すごとくになる。
【００６６】
次に、条件判定部４４は、演算により求めたそのブロックのパリティ値が、予め設定されたパリティ制御値と一致しているか否かを判定する（ステップＳ１１０）。パリティ制御値Ｃは、「０」か「１」の何れかを設定することができる。本実施例では、背景色を低レベルの濃度値、改竄検出の対象部分を高レベルの濃度値として、パリティ検出を行うために、パリティ制御値をＣ＝０に設定する。このように、パリティ制御値をＣ＝０に設定することにより、ノイズの増大を防ぐことが可能となる。なぜなら、電子文書では、一般に、ビットプレーン上において、情報を持たないビット値「０」の連続した領域が、かなりの部分を占めるため、仮に、パリティ制御値をＣ＝１に設定すると、その「０」の連続した領域が、奇数パリティに制御されてしまって（即ち、１ブロック中の４つの画素のうち、何れかの画素のビット値が「０」から「１」に変更されてしまって）、その「０」の連続した領域の中に、情報を持ったビット値「１」の点が出現することになり、ノイズが増大するように見えるからである。
【００６７】
但し、本発明は、パリティ制御値をＣ＝０に限定するものではなく、Ｃ＝１を採り得ることは言うまでもない。また、パリティ制御値は、ビットプレーン毎にその設定を変えるようにしても良い。
【００６８】
さて、図６（ｂ）に示したとおり、ビットプレーンＡ3における各ブロックＢ30〜Ｂ37のパリティ値は、（１，０，０，１，０，０，１，１）であるので、上記の判定の結果、パリティ値がパリティ制御値Ｃ＝０と一致しないのは、Ｂ30，Ｂ33，Ｂ36，Ｂ37の４つのブロックであり、それ以外のブロックはすべて一致する。
【００６９】
そこで、一致すると判定されたブロックについては、そのまま何も処理を施さないが、一致しないと判定された上記４つのブロックについては、ビット値変更部４５が、次のような処理を施す。
【００７０】
即ち、ビット値変更部４５は、パリティ値がパリティ制御値と一致していないブロックについて、そのブロック内の４つの画素のうち、何れか１つの画素のビット値を「０」から「１」に、または、「１」から「０」に変更する（ステップＳ１１２）。なお、４つの画素のうち、ビット値を変更すべき画素としては、電子文書に記載されている文字におけるエッジの部分に相当する画素を優先的に選ぶようにする。これは、ビット値の変更によって生じるノイズの違和感を局限するためである。
【００７１】
そこで、一致しないと判定された上記４つのブロックのうち、例えば、ブロックＢ30については、図６（ｃ）に示すように、そのブロック内の４つの画素のうち、左下の画素のビット値を「１」から「０」に変更する。すると、そのブロックＢ30の変更後のパリティ値Ｐｂ30（ｘ0，ｙ0）は、次のように表され、そのパリティ値はパリティ制御値Ｃ＝０と一致することになる。
【００７２】
Ｐｂ30（ｘ0，ｙ0）＝（１＋０＋０＋１）ｍｏｄ２＝０
【００７３】
なお、図６（ｃ），（ｄ）において、斜体の数字は、その値が変更されたことを示している。
【００７４】
そして、残り３つのブロックについても同様に、ブロックＢ33については、右下の画素のビット値を「１」から「０」に、ブロックＢ36については、右上の画素のビット値を「１」から「０」に、ブロックＢ37については、左下の画素のビット値を「１」から「０」に、それぞれ変更する。すると、それらＢ33，Ｂ36，Ｂ37の変更後のパリティ値Ｐｂ33（ｘ3，ｙ3），Ｐｂ36（ｘ6，ｙ6），Ｐｂ37（ｘ7，ｙ7）も、それぞれ、次のように表され、そのパリティ値は何れもパリティ制御値Ｃ＝０と一致することになる。
【００７５】
Ｐｂ33（ｘ3，ｙ3）＝（１＋１＋０＋０）ｍｏｄ２＝０
Ｐｂ36（ｘ6，ｙ6）＝（０＋０＋０＋０）ｍｏｄ２＝０
Ｐｂ37（ｘ7，ｙ7）＝（１＋０＋１＋０）ｍｏｄ２＝０
【００７６】
こうして、選択したビットプレーンＡ3におけるすべてのブロックについて処理が終了する（ステップＳ１１４）と、すべてのブロックのパリティ値は、図６（ｄ）に示すように、パリティ制御値Ｃ＝０と一致するようになる。
【００７７】
続いて、次のビットプレーンＡ2を選択し、上記したステップＳ１０６からＳ１１４までの処理を繰り返す。
【００７８】
図７はビットプレーンＡ2の各ブロックに対して行われる処理の手順を示す説明図である。
【００７９】
ビットプレーンＡ2における各画素のビット値が、図７（ａ）に示す如くであるとすると、各ブロックＢ20〜Ｂ27のパリティ値Ｐｂ20（ｘ0，ｙ0）〜Ｐｂ27（ｘ7，ｙ7）は、次のように表される。
【００８０】
Ｐｂ20（ｘ0，ｙ0）＝（１＋１＋１＋１）ｍｏｄ２＝０
Ｐｂ21（ｘ1，ｙ1）＝（０＋０＋１＋１）ｍｏｄ２＝０
Ｐｂ22（ｘ2，ｙ2）＝（０＋１＋１＋１）ｍｏｄ２＝１
Ｐｂ23（ｘ3，ｙ3）＝（１＋１＋１＋１）ｍｏｄ２＝０
Ｐｂ24（ｘ4，ｙ4）＝（１＋１＋１＋１）ｍｏｄ２＝０
Ｐｂ25（ｘ5，ｙ5）＝（０＋０＋０＋０）ｍｏｄ２＝０
Ｐｂ26（ｘ6，ｙ6）＝（１＋１＋０＋１）ｍｏｄ２＝１
Ｐｂ27（ｘ7，ｙ7）＝（１＋１＋１＋１）ｍｏｄ２＝０
【００８１】
以上の結果、各ブロックのパリティ値は、図７（ｂ）に示すごとくになる。
【００８２】
そこで、次に、各ブロックＢ20〜Ｂ27におけるパリティ値をパリティ制御値Ｃ＝０と比較すると、パリティ値は（０，０，１，０，０，０，１，０）であるので、パリティ値がパリティ制御値と一致しないのは、Ｂ22，Ｂ26の２つのブロックである。
【００８３】
続いて、一致しないと判定された２つのブロックＢ22，Ｂ26のうち、例えば、ブロックＢ22については、図７（ｃ）に示すように、右下の画素のビット値を「１」から「０」に、ブロックＢ26についても、右下の画素のビット値を「１」から「０」に、それぞれ変更する。すると、それらＢ22，Ｂ36の変更後のパリティ値Ｐｂ22（ｘ2，ｙ2），Ｐｂ26（ｘ6，ｙ6）は、それぞれ、次のように表され、そのパリティ値は何れもパリティ制御値Ｃ＝０と一致することになる。
【００８４】
Ｐｂ22（ｘ2，ｙ2）＝（０＋１＋１＋０）ｍｏｄ２＝０
Ｐｂ26（ｘ6，ｙ6）＝（１＋１＋０＋０）ｍｏｄ２＝０
【００８５】
こうして、選択したビットプレーンＡ2におけるすべてのブロックについて処理が終了すると、すべてのブロックのパリティ値は、図７（ｄ）に示すように、パリティ制御値Ｃ＝０と一致するようになる。
【００８６】
同様に、残りの２つのビットプレーンＡ1，Ａ0についても、それぞれ、上記したステップＳ１０６からＳ１１４までの処理を繰り返す。すると、ビットプレーンＡ1，Ａ0におけるすべてのブロックについて、上記処理が終了した段階で、すべてのブロックのパリティ値はパリティ制御値Ｃ＝０と一致するようになる。
【００８７】
以上のようにして、抽出した４つのすべてのビットプレーンについて、処理が終了したら（ステップＳ１１６）、次に、ビットプレーン抽出部４１は、ステップＳ１０４の処理とは逆の処理を行って、４つのすべてのビットプレーンのデータを合成して、多値画像データを復元する（ステップＳ１１８）。
【００８８】
続いて、ブロック分割部４２が、ステップ１０６で分割したブロックに関する情報を暗号化した上で、電子透かしによって、復元した多値画像データに埋め込む（ステップＳ１２０）。ブロックに関する情報とは、具体的には、ブロックのサイズ（即ち、ｘ方向にＮ画素分、ｙ方向にＮ画素分の大きさ）や、各ブロックの１行毎のずれ量（即ち、ｘ方向に画素Ｎ／２個分のずれ）などである。
【００８９】
以上によって、図２に示した一連の改竄検出前処理は終了する。
【００９０】
このようにして改竄検出前処理の施された多値画像データは、その後、通信装置３８からコンピュータネットワークを介して、その電子文書を必要とする利用者に送信される。
【００９１】
Ｃ．電子文書改竄検出処理
一方、受信側においても、図１に示した装置と同様の装置が用意されており、上記のようにして送信された多値画像データは、コンピュータネットワークを介して通信装置３８で受信され、ハードディスク装置３６に格納される。
【００９２】
このように、多値画像データが送信側から受信側にコンピュータネットワークを介して転送される場合、そのデータは様々なネットワークを通過することになるため、その転送途中で、不正な意図を有する者によって、そのデータの表す電子文書の内容が改竄される場合があり得る。そこで、受信側では、図１に示した装置によって、受信しハードディスク装置３６に格納された多値画像データに対し、下記に述べるような改竄検出処理を施す。
【００９３】
図８は図１のビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及び改竄検出部４６が行う電子文書改竄検出処理の手順を示すフローチャートである。この処理は、ビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及び改竄検出部４６の処理として実現されている。
【００９４】
そこで、図８に示すように、この改竄検出処理が起動されると、まず、ブロック分割部４２が、対象となる多値画像データをハードディスク装置３６から読み出し（ステップＳ２０２）、その読み出した多値画像データから、埋め込まれている電子透かしを取り出し、そこに記載されている暗号化された情報を復号化して、ブロックに関する情報を取得する（ステップＳ２０４）。ブロック情報としては、前述したとおり、ブロックのサイズ（即ち、ｘ方向にＮ画素分、ｙ方向にＮ画素分の大きさ）や、各ブロックの１行毎のずれ量（即ち、ｘ方向に画素Ｎ／２個分のずれ）などが取得される。
【００９５】
次に、ビットプレーン抽出部４１は、上記した多値画像データからビットプレーンのデータを抽出し（ステップＳ２０６）、続いて、ブロック分割部４２が、抽出した４つのビットプレーンのデータのうち、或るビットプレーンのデータを選択し、ステップＳ２０４で取得したブロック情報に基づいて、その選択したビットプレーンを複数のブロックに分割する（ステップＳ２０８）。
【００９６】
そして、パリティ演算部４３は、分割した複数のブロックのうち、或るブロックを選択し、そのブロックに含まれるＮ×Ｎ個の画素のビット値を用いて、そのブロックのパリティ値を前述の式（３）に示した演算により求める（ステップＳ２１０）。次に、条件判定部４４は、演算により求めたそのブロックのパリティ値が、予め設定されたパリティ制御値と一致しているか否かを判定する（ステップＳ２１２）。なお、本実施例では、前述したとおり、パリティ制御値はＣ＝０に設定されている。
【００９７】
判定の結果、一致すると判定されたブロックについては、そのまま何も処理しないが、一致しないと判定されたブロックについては、改竄検出部４６が、そのブロックを改竄された部分であると特定し、別に用意された改竄部分表示データにおいて、そのブロックに×印を付する（ステップＳ２１４）。
【００９８】
例えば、今、ステップＳ２０８で選択したビットプレーンが最上位ビットに対応するＡ3であり、そのビットプレーンＡ3における各画素のビット値と、分割した各ブロックが、図９（ａ）に示す如くであるとする。
【００９９】
図９はビットプレーンＡ3の各ブロックに対して行われる処理の手順を示す説明図である。
【０１００】
図９（ａ）において、斜線ハッチで示された画素は、転送途中で、不正な意図を有する者によって、改竄された画素である。
【０１０１】
そこで、各ブロックＢ30〜Ｂ37のパリティ値Ｐｂ30（ｘ0，ｙ0）〜Ｐｂ37（ｘ7，ｙ7）を、式（３）に従って求めると、次のように表される。
【０１０２】
Ｐｂ30（ｘ0，ｙ0）＝（１＋０＋０＋１）ｍｏｄ２＝０
Ｐｂ31（ｘ1，ｙ1）＝（０＋０＋０＋０）ｍｏｄ２＝０
Ｐｂ32（ｘ2，ｙ2）＝（０＋１＋１＋０）ｍｏｄ２＝０
Ｐｂ33（ｘ3，ｙ3）＝（１＋１＋１＋１）ｍｏｄ２＝１
Ｐｂ34（ｘ4，ｙ4）＝（１＋０＋１＋０）ｍｏｄ２＝０
Ｐｂ35（ｘ5，ｙ5）＝（０＋１＋０＋０）ｍｏｄ２＝１
Ｐｂ36（ｘ6，ｙ6）＝（１＋０＋０＋０）ｍｏｄ２＝１
Ｐｂ37（ｘ7，ｙ7）＝（１＋０＋０＋１）ｍｏｄ２＝０
【０１０３】
以上の結果、各ブロックのパリティ値は、図９（ｂ）に示すごとくになる。そこで、さらに、各ブロックのパリティ値をパリティ制御値Ｃ＝０と比較して、一致しているか否かを判定すると、パリティ値がパリティ制御値Ｃ＝０と一致していないのは、Ｂ33，Ｂ35，Ｂ36の３つのブロックであることがわかる。
【０１０４】
従って、これら一致していない３つのブロックについては、改竄された画素が含まれており、改竄された部分であるとして、図９（ｃ）に示すように、別に用意された改竄部分表示データにおいて、そのブロックの部分に×印を付する。
【０１０５】
こうして、選択したビットプレーンＡ3におけるすべてのブロックについて処理が終了する（ステップＳ２１６）と、続いて、次のビットプレーンＡ2を選択し、上記したステップＳ２０８からＳ２１６までの処理を繰り返す。
【０１０６】
図１０はビットプレーンＡ2の各ブロックに対して行われる処理の手順を示す説明図である。
【０１０７】
ビットプレーンＡ2における各画素のビット値が、図１０（ａ）に示す如くであるとすると、各ブロックＢ20〜Ｂ27のパリティ値Ｐｂ20（ｘ0，ｙ0）〜Ｐｂ27（ｘ7，ｙ7）は、次のように表される。
【０１０８】
Ｐｂ20（ｘ0，ｙ0）＝（１＋１＋１＋１）ｍｏｄ２＝０
Ｐｂ21（ｘ1，ｙ1）＝（０＋０＋１＋１）ｍｏｄ２＝０
Ｐｂ22（ｘ2，ｙ2）＝（０＋１＋１＋０）ｍｏｄ２＝０
Ｐｂ23（ｘ3，ｙ3）＝（１＋１＋１＋１）ｍｏｄ２＝０
Ｐｂ24（ｘ4，ｙ4）＝（１＋１＋１＋０）ｍｏｄ２＝１
Ｐｂ25（ｘ5，ｙ5）＝（０＋０＋０＋０）ｍｏｄ２＝０
Ｐｂ26（ｘ6，ｙ6）＝（１＋１＋０＋１）ｍｏｄ２＝１
Ｐｂ27（ｘ7，ｙ7）＝（１＋１＋０＋１）ｍｏｄ２＝１
【０１０９】
以上の結果、各ブロックのパリティ値は、図１０（ｂ）に示すごとくになる。そこで、さらに、各ブロックのパリティ値をパリティ制御値Ｃ＝０と比較して、一致しているか否かを判定すると、パリティ値がパリティ制御値Ｃ＝０と一致していないのは、Ｂ24，Ｂ26，Ｂ27の３つのブロックであることがわかる。
【０１１０】
従って、これら一致していない３つのブロックについては、改竄された画素が含まれており、改竄された部分であるとして、図１０（ｃ）に示すように、別に用意された改竄部分表示データにおいて、そのブロックの部分に×印を付する。
【０１１１】
同様に、残りの２つのビットプレーンＡ1，Ａ0についても、それぞれ、上記したステップＳ２０８からＳ２１６までの処理を繰り返す。その結果、ビットプレーンＡ1，Ａ0についても、同様の改竄部分表示データを得ることができる。
【０１１２】
以上のようにして、抽出した４つのすべてのビットプレーンについて、処理が終了したら（ステップＳ２１８）、次に、改竄検出部４６は、４つのビットプレーンについてそれぞれ得られた改竄部分表示データに基づいて、各ビットプレーン毎に、改竄部分表示画面（図示せず）を表示装置３４に表示させる（ステップＳ２２０）。
以上により、図８に示した一連の改竄検出処理は終了する。
【０１１３】
Ｄ．改竄検出の実験結果
次に、実験を行って、上記した電子文書改竄検出前処理や電子文書改竄検出処理により、改竄された電子文書について、その改竄部分を検出できるかどうかを、実際に検討した。
【０１１４】
Ｄ−１．実験１
実験１では、まず、ワープロソフトにより表示装置３４の画面上に文書を表示した際に、その表示データを抽出し、その抽出した多値画像データに対して、図２に示した電子文書改竄検出前処理を行った。そして、次に、その多値画像データの示す電子文書に対して改竄を施し、続いて、図８に示した電子文書改竄検出処理を行って、その改竄部分が検出できるかどうかについて検討した。なお、この実験１では、分割するブロックのサイズがＮ＝５０の場合とＮ＝２０の場合とに分けて実験を行い、両者の場合とも、同様の改竄を施すようにした。
【０１１５】
図１１は改竄前の電子文書を示す説明図、図１２はブロックサイズがＮ＝５０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図、図１３はブロックサイズがＮ＝２０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図である。図１２，図１３において、（ａ）は改竄後の電子文書を示し、（ｂ）は改竄部分の検出結果を示している。
【０１１６】
図１１と図１２（ａ）及び図１３（ａ）とを比較すれば明らかなように、電子文書中において、「￥  ２５，０００」の部分のうち、２箇所が改竄されて（具体的には、万の位の「２」が削除されると共に、百の位の「０」が「５」に変更されている。）、結果として、「￥    ５，５００」となっている。
【０１１７】
これに対し、ブロックサイズがＮ＝５０の場合は、図１２（ｂ）に示すように、改竄された２箇所に、それぞれ、改竄部分を表す×印が２つずつ表示されている。一方、ブロックサイズがＮ＝２０の場合は、図１３（ｂ）に示すように、改竄された２箇所のうち、変更された部分に多数の×印が表示されている。しかしながら、削除された部分には×印は表示されていない。これは、次の理由による。本実施例で用いているパリティ検出は、本来、「１」，「０」がｘ，ｙ方向に或る程度分散していないと、精度よく検出することは難しい。従って、電子文書に記載された文字のエッジ部分では精度よく検出することができるが、文字の内部では精度よく検出することができない。即ち、上記したブロックサイズがＮ＝２０の場合、ブロックサイズが小さいために、電子文書に記載された文字の内部に、それらブロックが含まれてしまい、それにより、精度よく検出することができなかったのである。
【０１１８】
よって、分割するブロックのサイズは、電子文書に記載されている文字のサイズに応じて設定するのが好ましい。
【０１１９】
Ｄ−２．実験２
実験２では、まず、印刷文書をスキャナ３９によって読み取って、それにより得られた多値画像データに対して、図２に示した電子文書改竄検出前処理を行った。そして、次に、その多値画像データの示す電子文書に対して改竄を施し、図８に示した電子文書改竄検出処理を行って、その改竄部分が検出できるかどうかについて検討した。なお、この実験２では、分割するブロックのサイズはＮ＝２０とした。
【０１２０】
図１４は改竄前の電子文書を示す説明図、図１５はブロックサイズがＮ＝２０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図である。図１５において、（ａ）は改竄後の電子文書を示し、（ｂ）は改竄部分の検出結果を示している。
【０１２１】
図１４と図１５（ａ）とを比較すれば明らかなように、電子文書中において、「３０１２７−７２７２６２８」の部分のうち、２箇所が改竄されて（具体的には、前半５桁の後尾の「７」が「１」に変更されると共に、後半６桁の先頭の「７」が削除されている。）、結果として、「３０１２１−  ２７２６２８」となっている。
【０１２２】
これに対し、改竄検出の結果としては、図１５（ｂ）に示すように、改竄された２箇所に、それぞれ、改竄部分を表す×印が多数表示され、改竄部分を精度よく検出していることがわかる。
【０１２３】
このように、スキャナで読み取って得られた多値画像データは、スキャナで読み取る際に、濃度値が不特定に変化し、ノイズも混入するという特徴を有する。これらのランダムな歪によって、すべてのブロック内には、ビット値が「１」となる画素が存在するため、ブロックサイズを気にすることなく、本実施例で用いているパリティ検出を適用することができる。図１５（ｂ）に示した結果からも明らかなように、本実施例で用いているパリティ検出は、このようなノイズが混在するスキャナ読み取り画像データに対して、より好適に適用することができる。
【０１２４】
Ｅ．実施例の効果
以上説明したように、本実施例によれば、電子文書を表す多値画像データに対し、図２に示した電子文書改竄検出前処理さえ行っておけば、その後、その多値画像データがコンピュータネットワークなどを介して転送される途中で、そのデータの表す電子文書の内容が改竄されても、図８に示した電子文書改竄検出処理を行うことによって、改竄の有無だけでなく、改竄された部分も容易に検出することができる。従って、電子文書を利用する場合のデータの信憑性を保証することができ、改竄などの不正行為の未然防止につなげることができる。
【０１２５】
また、本実施例では、ブロックに関する情報を暗号化した上で電子透かしで埋め込んでいるため、不正な意図を有する者が、そのブロック情報を取得するのは困難であり、電子文書に対し、ブロック構造を考慮した巧妙な改竄を行うことは不可能となる。また、電子文書の内容が改竄された場合でも、ブロック情報は埋め込まれているので、ブロック情報まで破壊されることを回避することができる。また、暗号や電子透かしの存在によって、その電子文書に対するデータの信憑性をさらに保証することができる。
【０１２６】
Ｆ．変形例
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１２７】
Ｆ−１．変形例１
上記した実施例においては、多値画像データから抽出した４つのすべてのビットプレーンのデータに対して、それぞれ、一連の処理（即ち、図２のステップＳ１０６〜Ｓ１１４、図８のステップＳ２０８〜Ｓ２１６の処理）を施したが、本発明はこれに限定されるものではなく、一部のビットプレーンのデータに対してのみ、そのような処理を施すようにしても良い。その場合には、最終的に、それら一部のビットプレーンについてのみ、検出した改竄部分の表示を行うことができる。
【０１２８】
また、図２に示した電子文書改竄検出前処理では、パリティ値がバリティ制御値と一致いないブロックについては、ブロック内の画素のビット値を変更することになる（ステップＳ１１２）。しかし、そのビットプレーンが多値画像データにおける上位ビットのビットプレーン（例えば、図３（ｂ），図５（ｂ）に示すＡ3やＡ2など）である場合には、下位ビットのビットプレーン（例えば、図３（ｂ），図５（ｂ）に示すＡ1やＡ0など）の場合に比較して、そのような画素のビット値の変更は、その画素の濃度値に与える影響が大きい。
【０１２９】
即ち、多値画像データが４ビットである場合、或る画素の濃度値は４ビットで表現されることになる。従って、その画素の濃度値が「１１１１」であるとすると、その４ビットのうち、最下位ビットのビット値を「０」に変更しても、その画素の濃度値は「１１１０」となってほとんど変化がないが、最上位ビットのビット値を「０」に変更すると、その画素の濃度値は「０１１１」となって大きく変わってしまうことになるからである。
【０１３０】
従って、一部のビットプレーンのデータに対してのみ、上記実施例に示した処理（即ち、図２のステップＳ１０６〜Ｓ１１４の処理）を行う場合には、比較的下位ビットのビットプレーンについて行う方が、濃度値に与える影響が少ないので、好ましい。
【０１３１】
Ｆ−２．変形例２
上記した実施例では、各ビットプレーン毎に複数のブロックに分割し、各々のブロックのパリティ値を求めていたが、本発明は、これに限定されるものではない。
【０１３２】
図１６はブロックの分割の仕方として種々の方法を説明するための説明図である。
【０１３３】
即ち、上記した実施例では、図１６（ａ）に示すように、多値画像データから抽出された４つのビットプレーンＡ0〜Ａ3について、各ビットプレーンＡi毎に、複数のブロックＢijに分割していた。
【０１３４】
しかしながら、図１６（ｂ）に示すように、４つのすべてのビットプレーンＡ0〜Ａ3を統合し、その統合したビットプレーンについて、ブロック分割を行い、ブロックＢjのような、４つのビットプレーンのビット値を含むブロックを得るようにしてもよい。また、図１６（ｃ）に示すように、４つのビットプレーンＡ0〜Ａ3のうち、任意の２つのビットプレーンＡi，Ａpを統合し、その統合したビットプレーンについて、ブロック分割を行い、ブロックＢ’jのような、２つのビットプレーンのビット値を含むブロックを得るようにしてもよい。
【０１３５】
なお、図１６（ａ），（ｂ），（ｃ）に示すブロックＢij，Ｂj，Ｂ’jは、何れも、２×２の合計４個の画素から成っている。しかし、図１６（ａ）に示すブロックＢijには、上記した実施例で説明したとおり、ａi（ｘj，ｙj），ａi（ｘj＋１，ｙj），ａi（ｘj，ｙj＋１），ａi（ｘj＋１，ｙj＋１）の４つのビット値しか含まないのに対し、図１６（ｂ）に示すブロックＢjには、上述したとおり、ビットプレーンＡ3の４つのビット値ａ3（ｘj，ｙj），ａ3（ｘj＋１，ｙj），ａ3（ｘj，ｙj＋１），ａ3（ｘj＋１，ｙj＋１）と、ビットプレーンＡ2の４つのビット値ａ2（ｘj，ｙj），ａ2（ｘj＋１，ｙj），ａ2（ｘj，ｙj＋１），ａ2（ｘj＋１，ｙj＋１）と、ビットプレーンＡ1の４つのビット値ａ1（ｘj，ｙj），ａ1（ｘj＋１，ｙj），ａ1（ｘj，ｙj＋１），ａ1（ｘj＋１，ｙj＋１）と、ビットプレーンＡ0の４つのビット値ａ0（ｘj，ｙj），ａ0（ｘj＋１，ｙj），ａ0（ｘj，ｙj＋１），ａ0（ｘj＋１，ｙj＋１）の合計１６個のビット値を含むことになる。また、図１６（ｃ）に示すブロックＢ’jには、ビットプレーンＡiの４つのビット値ａi（ｘj，ｙj），ａi（ｘj＋１，ｙj），ａi（ｘj，ｙj＋１），ａi（ｘj＋１，ｙj＋１）と、ビットプレーンＡpの４つのビット値ａp（ｘj，ｙj），ａp（ｘj＋１，ｙj），ａp（ｘj，ｙj＋１），ａp（ｘj＋１，ｙj＋１）の合計８つのビット値を含むことになる。
【０１３６】
よって、図１６（ａ）に示すブロックＢijのパリティ値は、上記した４つのビット値の和を２で除した余りであった（式（３）参照）のに対し、図１６（ｂ）に示すブロックＢjのパリティ値は、上記した１６個のビット値の和を２で除した余りとなり、図１６（ｃ）に示すブロックＢ’jのパリティ値は、上記した８つのビット値の和を２で除した余りとなる。
【０１３７】
このように、１つのビットプレーンについて、ブロック分割を行ってもよいし、また、複数のビットプレーンを統合し、その統合したビットプレーンに対してブロック分割を行ってもよく、少なくとも、各ブロックは、１以上の画素を単位とするブロックであればよい。
【０１３８】
また、図１６（ｂ），（ｃ）に示すブロックＢj，Ｂ’jの場合、上記のごとく得られパリティ値がパリティ制御値と一致しない場合、ブロック内の何れか１つビット値を変更することになるが、画素の濃度値にできる限り影響を与えないようにするために、図１６（ｂ）に示すブロックＢjでは、最下位ビットのビットプレーンＡ0のビット値を、図１６（ｃ）に示すブロックＢ’jでは、下位ビットの方のビットプレーンのビット値を、それぞれ、変更することが好ましい。
【０１３９】
また、上記した実施例では、ｘ，ｙ方向に対するブロックの形状は、正方形であったが、本発明はこれに限定されるものではなく、任意の四辺形であっても良く、また、図１７に示すように、任意の三角形であってもよい。また、その他、多角形であってもよく、いかなる形状であってもよい。図１７はブロックの分割の仕方として他の例を示す説明図である。
【０１４０】
Ｆ−３．変形例３
上記した実施例では、改竄部分を検出するための手法として、パリティ検出を利用したが、本発明は、これに限定されるものではなく、例えば、ハミング（Hamming），巡回（cyclic），ＢＣＨ（Bose-Chaudhuri-Hocquenghem），ファイア（Fire）など、種々の符号誤り検出や符号誤り訂正の手法を利用することができる。
【０１４１】
また、このような他の手法を利用する場合には、当然に、図２のステップＳ１０８や図８のステップＳ２１０で行う演算や、ステップＳ１１０やステップＳ２１２で判定の基準となる条件として、それぞれ、その手法に対応した演算や条件が適用されることになる。
【０１４２】
Ｆ−４．変形例４
上記した実施例では、ブロックに関する情報は、暗号化した上で電子透かしにより多値画像データに埋め込まれていたが、本発明は、これに限定されるものではない。
例えば、ブロックに関する情報を暗号化することなく、そのまま、電子透かしで多値画像データに埋め込むようにしても良い。その場合、受信側では、多値画像データから、埋め込まれたブロック情報をそのまま取り出すようにする。
また、ブロック情報を暗号化して、多値画像データに埋め込まずに、単に付加するようにしても良い。その場合、受信側では、多値画像データから、付加されたブロック情報を取り出し、復号化するようにする。
このように、ブロック情報は、多値画像データに、どのような形態で組み込ませるようにしてもよい。
【図面の簡単な説明】
【図１】本発明の一実施例として電子文書改竄検出前処理及び電子文書改竄検出処理を実行する電子文書改竄検出装置１０の構成を示すブロック図である。
【図２】図１のビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及びビット値変更部４５が行う電子文書改竄検出前処理の手順を示すフローチャートである。
【図３】４ビットの多値画像データから４枚のビットプレーンが成立する様子を示す説明図である。
【図４】ビットプレーンを複数のブロックに分割したときのブロック分割構造を示す説明図である。
【図５】多値画像Ａから４つのビットプレーンＡ0〜Ａ3を抽出し、さらに複数のブロックに分割した様子を示す説明図である。
【図６】ビットプレーンＡ3の各ブロックに対して行われる処理の手順を示す説明図である。
【図７】ビットプレーンＡ2の各ブロックに対して行われる処理の手順を示す説明図である。
【図８】図１のビットプレーン抽出部４１、ブロック分割部４２、パリティ演算部４３、条件判定部４４、及び改竄検出部４６が行う電子文書改竄検出処理の手順を示すフローチャートである。
【図９】ビットプレーンＡ3の各ブロックに対して行われる処理の手順を示す説明図である。
【図１０】ビットプレーンＡ2の各ブロックに対して行われる処理の手順を示す説明図である。
【図１１】改竄前の電子文書を示す説明図である。
【図１２】ブロックサイズがＮ＝５０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図である。
【図１３】ブロックサイズがＮ＝２０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図である。
【図１４】改竄前の電子文書を示す説明図である。
【図１５】ブロックサイズがＮ＝２０の場合における改竄後の電子文書とその改竄部分の検出結果を示す説明図である。
【図１６】ブロックの分割の仕方として種々の方法を説明するための説明図である。
【図１７】ブロックの分割の仕方として他の例を示す説明図である。
【符号の説明】
１０…電子文書改竄検出装置
２２…ＣＰＵ
２４…ＲＡＭ
２６…ＲＯＭ
３０…キーボード
３２…マウス
３４…表示装置
３６…ハードディスク装置
３８…通信装置
３９…スキャナ
４０…バス
４１…ビットプレーン抽出部
４２…ブロック分割部
４３…パリティ演算部
４４…条件判定部
４５…ビット値変更部
４６…改竄検出部
【図１】
0004220661.tif 000005
【図２】
0004220661.tif 000006
【図３】
0004220661.tif 000007
【図４】
0004220661.tif 000008
【図５】
0004220661.tif 000009
【図６】
0004220661.tif 000010
【図７】
0004220661.tif 000011
【図８】
0004220661.tif 000012
【図９】
0004220661.tif 000013
【図１０】
0004220661.tif 000014
【図１１】
0004220661.tif 000015
【図１２】
0004220661.tif 000016
【図１３】
0004220661.tif 000017
【図１４】
0004220661.tif 000018
【図１５】
0004220661.tif 000019
【図１６】
0004220661.tif 000020
【図１７】
0004220661.tif 000021