(57)【要約】【課題】検証データ埋め込み位置の特定を困難にし、検証データの入れ替えによる改竄を困難にするような検証データの埋め込み。【解決手段】分割部１３ｂは、指定部１３ｄの指定に基づき、除算結果値の得られたブロックを、「検証データ算出部分」と「検証データ埋め込み部分」の２種類の部分に分割する。検証データ作成部１６は、検証データ算出部分Ｂ（Ｊ）のＤＣＴ係数に対応する除算結果値D(J,m)/Q(J,m)と、初期ベクトル入力部１７から入力されたハッシュ関数の初期ベクトル値ＶＩとをハッシュ関数に入力することでハッシュ値を得る。このハッシュ値のデータビット列を、検証データとして、検証データ埋め込み部１３ｃに出力する。検証データ埋め込み部１３ｃは、検証データ埋め込み部分Ｂ（Ｋ）の所定の係数位置である埋め込み位置に、検証データを１ビットずつ埋め込む。【選択図】  図１
2008067309.tif 000002
【特許請求の範囲】
【請求項１】
画像データの圧縮符号化単位に従って、前記画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、
前記検証データ算出部分に基づき、検証データを作成するステップと、
前記検証データ埋め込み部分に、前記検証データを埋め込むステップと、
を含む検証データ埋め込み方法。
【請求項２】
前記検証データ埋め込み部分は、前記画像データを所定の画素単位ごとに分割して得られた複数のブロック毎に算出された離散コサイン変換係数の内、所定の第１のブロック群の所望の位置の離散コサイン変換係数を含み、
前記検証データ算出部分は、前記離散コサイン変換係数の内、前記第１のブロック群と異なる第２のブロック群の離散コサイン変換係数を含む請求項１に記載の検証データ埋め込み方法。
【請求項３】
前記検証データ埋め込み部分は、前記画像データを所定の画素単位ごとに分割して得られた複数のブロック毎に算出された離散コサイン変換係数の内、所定のブロック群の所定の係数位置の離散コサイン変換係数を含み、
前記検証データ算出部分は、前記離散コサイン変換係数の内、前記所定のブロック群の前記所定の係数位置以外の離散コサイン変換係数を含む請求項１に記載の検証データ埋め込み方法。
【請求項４】
前記検証データ埋め込み部分は、ＥＯＢ(End of Block）よりもジグザグスキャン順に沿った１つ以上低周波数側の係数位置である請求項２または３に記載の検証データ埋め込み方法。
【請求項５】
前記検証データ埋め込み部分の離散コサイン変換係数の量子化幅は、前記検証データ算出部分の離散コサイン変換係数の量子化幅よりも小さく設定されている請求項２〜４のいずれかに記載の検証データ埋め込み方法。
【請求項６】
画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、
前記検証データ埋め込み部から、第１の検証データを抽出するステップと、
前記検証データ算出部分に基づき、第２の検証データを作成するステップと、
前記第１の検証データと前記第２の検証データとを比較することにより、前記画像データが改竄されているか否かを判断するステップと、
前記画像データが改竄されているか否かの判断の結果を出力するステップと、
を含む画像改竄検出方法。
【請求項７】
画像データの圧縮符号化単位に従って、前記画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、
前記検証データ算出部分に基づき、第１の検証データを作成するステップと、
前記検証データ埋め込み部分に、前記第１の検証データを埋め込むステップと、
前記第１の検証データが埋め込まれた画像データを圧縮符号化するステップと、
前記第１の検証データが埋め込まれた画像データを復号化するステップと、
前記復号化された画像データを前記検証データ算出部分および検証データ埋め込み部分に分割するステップと、
前記検証データ埋め込み部から、前記第１の検証データを抽出するステップと、
前記検証データ算出部分に基づき、第２の検証データを作成するステップと、
前記第１の検証データと前記第２の検証データとを比較することにより、前記画像データが改竄されているか否かを判断するステップと、
前記画像データが改竄されているか否かの判断の結果を出力するステップと、
を含む画像改竄検出方法。
【請求項８】
請求項１〜５のいずれかに記載の検証データ埋め込み方法を実行するためのプログラム。
【請求項９】
請求項６または７に記載の画像改竄検出方法を実行するためのプログラム。
【請求項１０】
画像データの圧縮符号化単位に従って、前記画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する分割部と、
前記検証データ算出部分に基づき、検証データを作成する作成部と、
前記検証データ埋め込み部分に、前記検証データを埋め込む埋込部と、
を含む検証データ埋め込み装置。
【請求項１１】
画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する分割部と、
前記検証データ埋め込み部から、第１の検証データを抽出する抽出部と、
前記検証データ算出部分に基づき、第２の検証データを作成する作成部と、
前記第１の検証データと前記第２の検証データとを比較することにより、前記画像データが改竄されているか否かを判断する判断部と、
前記画像データが改竄されているか否かの判断の結果を出力する出力部と、
を含む画像改竄検出装置。
【請求項１２】
画像データの圧縮符号化単位に従って、前記画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する第１分割部と、
前記検証データ算出部分に基づき、第１の検証データを作成する第１作成部と、
前記検証データ埋め込み部分に、前記第１の検証データを埋め込む埋込部と、
前記第１の検証データが埋め込まれた画像データを圧縮符号化する圧縮符号化部と、
前記第１の検証データが埋め込まれた画像データを復号化する復号化部と、
前記復号化された画像データを前記検証データ算出部分および検証データ埋め込み部分に分割する第２分割部と、
前記検証データ埋め込み部から、前記第１の検証データを抽出する抽出部と、
前記検証データ算出部分に基づき、第２の検証データを作成する第２作成部と、
前記第１の検証データと前記第２の検証データとを比較することにより、前記画像データが改竄されているか否かを判断する判断部と、
前記画像データが改竄されているか否かの判断の結果を出力する出力部と、
を含む画像改竄検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は圧縮符号化すべき画像データに検証用のデータを埋め込むことで、復号側で画像データの改竄検出を可能にする技術に関する。
【背景技術】
【０００２】
従来、画像データの改竄を検出するための技術が様々開発されている。例えば、画像が改竄されたかどうかをチェックするための検証データを画像ファイルのヘッダに書き込んでおき、画像本体のデータとヘッダに書き込まれた検証データの間で整合性が取れるかどうかで改竄を検知する方法がある。他にも、検証データを画像とは別個のデータとして保持するシステムもある。
【０００３】
あるいは特許文献１のように、画像データから特徴データを生成し、この特徴データを暗号化して暗号化データとする。そして、画像データから得られた離散コサイン変換（ＤＣＴ）係数の最高周波数係数位置に、暗号化データを埋め込む。その他、特許文献２〜５のような技術も存在する。
【特許文献１】特開２００１−７８０７０号公報
【特許文献２】特開２００１-１０３２７５号公報
【特許文献３】特開２００３−２１８０２３号公報
【特許文献４】特開２００３−２０４４２９号公報
【特許文献５】特開２００４−２８２６７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
改竄を検知するための検証データをヘッダ部分へ埋め込む手法の場合、ヘッダ部分の検証データを入れ替えることで改竄をされてしまうおそれがある。また、特許文献１の手法のように検証データを最高周波数に相当するＤＣＴ係数に埋め込んでも、やはり検証データの埋め込み位置が特定しやすく、検証データを入れ替えることで改竄をされてしまうおそれがある。
【０００５】
また、特許文献１の手法では、検証データを最高周波数に相当するＤＣＴ係数に埋め込むため、ＥＯＢ（End of BlocK）符号が消滅する。このため、符号化効率が低下し、ＪＰＥＧファイルのような圧縮符号化ファイルのサイズが非常に大きくなる。
【０００６】
本発明は、検証データ埋め込み位置の特定を困難にし、検証データの入れ替えによる改竄を困難にするような検証データの埋め込み技術を提供することを目的とする。
【０００７】
また、本発明的は、画像データへの検証データの埋め込みに際して、画質劣化の防止、画像データ量の増大化、画像ファイルの長大化防止を目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る検証データ埋め込み方法は、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、検証データ算出部分に基づき、検証データを作成するステップと、検証データ埋め込み部分に、検証データを埋め込むステップと、を含む。
【０００９】
この発明によると、画像データの任意の一部分である検証データ算出部分に基づいて、ハッシュ関数などにより検証データを作成し、検証データ算出部分とは異なる任意の一部分である検証データ埋め込み部分に検証データを埋め込む。
【００１０】
本発明では、画像データ自体のＥＯＢより低い任意のＤＣＴ係数位置に検証データを埋め込むから、従来のように画像データのヘッダ部分や最高周波数係数位置に検証データを埋め込む場合に比べ、検証データの特定が困難であり、検証データの入れ替えによる改竄がされにくい。  
【００１１】
特に、検証データ埋め込み部分は、検証データ算出部分と異なれば、理論的にはどこでも指定でき、検証データの埋め込まれた位置の特定が一層困難であり、検証データの入れ替えによる改竄がされにくい。
【００１２】
例えば、検証データ埋め込み部分は、画像データを所定の画素単位ごとに分割して得られた複数のブロック毎に算出された離散コサイン変換係数の内、所定の第１のブロック群の所望の位置の離散コサイン変換係数を含み、検証データ算出部分は、離散コサイン変換係数の内、第１のブロック群と異なる第２のブロック群の離散コサイン変換係数を含むようにしてもよい。
【００１３】
あるいは、検証データ埋め込み部分は、画像データを所定の画素単位ごとに分割して得られた複数のブロック毎に算出された離散コサイン変換係数の内、所定のブロック群の所定の係数位置の離散コサイン変換係数を含み、検証データ算出部分は、離散コサイン変換係数の内、所定のブロック群の所定の係数位置以外の離散コサイン変換係数を含むようにしてもよい。
【００１４】
要するに、画像データのどの部分を検証データ埋め込み部分あるいは検証データ算出部分とするかは任意である。もっとも、セキュリティ確保、ユーザの利便性確保、およびデータ量削減のためには、予め検証データ算出部分および検証データ埋め込み部分の組み合わせパターンをいくつか用意しておき、その中からユーザが所望の組み合わせパターンを選択可能にし、選択されたパターンの識別情報を所定の方式で暗号化して復号側に渡すとよい。また、該識別情報の復号化に鍵情報が必要であれば、その所定の方式に対応した鍵情報を復号側に予め用意しておけばよい。
【００１５】
なお、検証データ埋め込み部分は、ＥＯＢ(End of Block）よりもジグザグスキャン順に沿った１つ以上低周波数側の係数位置であることが好ましい。
【００１６】
こうすると、ゼロランレングスが短くなり、符号化効率が低下して、画像ファイルが長大化することを防げる。
【００１７】
また、検証データ埋め込み部分の離散コサイン変換係数の量子化幅は、検証データ算出部分の離散コサイン変換係数の量子化幅よりも小さく設定されていることが好ましい。
【００１８】
こうすると、検証データの挿入による画質劣化を極力抑えることができる。
【００１９】
本発明に係る画像改竄検出方法は、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、検証データ埋め込み部から、第１の検証データを抽出するステップと、検証データ算出部分に基づき、第２の検証データを作成するステップと、第１の検証データと第２の検証データとを比較することにより、画像データが改竄されているか否かを判断するステップと、画像データが改竄されているか否かの判断の結果を出力するステップと、を含む。
【００２０】
この方法によると、上述の検証データ埋め込み方法によって検証データ埋め込み部分に埋め込まれた第１の検証データと、検証データ算出部分に基づいて新たに作成された第２の検証データとを比較し、その結果に応じて画像データが改竄されているか否かの判断を出力できる。
【００２１】
本発明に係る画像改竄検出方法は、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割するステップと、検証データ算出部分に基づき、第１の検証データを作成するステップと、検証データ埋め込み部分に、第１の検証データを埋め込むステップと、第１の検証データが埋め込まれた画像データを圧縮符号化するステップと、第１の検証データが埋め込まれた画像データを復号化するステップと、復号化された画像データを検証データ算出部分および検証データ埋め込み部分に分割するステップと、検証データ埋め込み部から、第１の検証データを抽出するステップと、検証データ算出部分に基づき、第２の検証データを作成するステップと、第１の検証データと第２の検証データとを比較することにより、画像データが改竄されているか否かを判断するステップと、画像データが改竄されているか否かの判断の結果を出力するステップと、を含む。
【００２２】
本発明では、任意に指定可能な検証データ埋め込み部分に埋め込まれた第１の検証データと、検証データ算出部分に基づいて新たに作成された第２の検証データとを比較することで改竄を判断する。
【００２３】
本発明は、上記の検証データ埋め込み方法を実行するためのプログラムも含む。
【００２４】
本発明は、上記の画像改竄検出方法を実行するためのプログラムも含む。
【００２５】
本発明に係る検証データ埋め込み装置は、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する分割部と、検証データ算出部分に基づき、検証データを作成する作成部と、検証データ埋め込み部分に、検証データを埋め込む埋込部と、を含む。
【００２６】
本発明に係る画像改竄検出装置は、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する分割部と、検証データ埋め込み部から、第１の検証データを抽出する抽出部と、検証データ算出部分に基づき、第２の検証データを作成する作成部と、第１の検証データと第２の検証データとを比較することにより、画像データが改竄されているか否かを判断する判断部と、画像データが改竄されているか否かの判断の結果を出力する出力部と、を含む。
【００２７】
本発明に係る画像改竄検出システムは、画像データの圧縮符号化単位に従って、画像データを２つの異なる部分である検証データ算出部分および検証データ埋め込み部分に分割する第１分割部と、検証データ算出部分に基づき、第１の検証データを作成する第１作成部と、検証データ埋め込み部分に、第１の検証データを埋め込む埋込部と、第１の検証データが埋め込まれた画像データを圧縮符号化する圧縮符号化部と、第１の検証データが埋め込まれた画像データを復号化する復号化部と、復号化された画像データを検証データ算出部分および検証データ埋め込み部分に分割する第２分割部と、検証データ埋め込み部から、第１の検証データを抽出する抽出部と、検証データ算出部分に基づき、第２の検証データを作成する第２作成部と、第１の検証データと第２の検証データとを比較することにより、画像データが改竄されているか否かを判断する判断部と、画像データが改竄されているか否かの判断の結果を出力する出力部と、を含む。
【発明の効果】
【００２８】
本発明では、画像データ自体のＥＯＢより低い任意のＤＣＴ係数位置に検証データを埋め込むから、従来のように画像データのヘッダ部分や最高周波数係数位置に検証データを埋め込む場合に比べ、検証データの特定が困難であり、検証データの入れ替えによる改竄がされにくい。  
【００２９】
特に、検証データ埋め込み部分は、検証データ算出部分と異なればどこでも指定でき、検証データの埋め込まれた位置の特定が一層困難であり、検証データの入れ替えによる改竄がされにくい。
【発明を実施するための最良の形態】
【００３０】
以下、添付した図面を参照し本発明の好ましい実施の形態を説明する。
【００３１】
＜第１実施形態＞
図１は本発明の好ましい実施形態に係る検証データ埋込装置付き画像圧縮符号化装置のブロック図である。詳細は省略するが、本実施形態で述べる画像圧縮符号化装置の各ブロックはマイコンその他の演算装置のプログラム制御によっても実現可能である。
【００３２】
画像入力部１１は、デジタルスチルカメラに内蔵されたアナログフロントエンドやパソコンのメディアリーダなどから被写体像を表すＲＧＢの各色毎のデータを入力し、これを、３×３行列による線形変換により、輝度を表す輝度信号（Ｙ）、「青み」成分を表す色差信号（Ｕ）及び「赤み」成分を表す色差信号（Ｖ）に変換し、このＹＵＶ画像データをＤＣＴ変換部１２に出力する。
【００３３】
ＹＵＶの色空間への変換には例えば、Ｙ＝０．２９９０Ｒ＋０．５８７０Ｇ＋０．１１４０Ｂ  Ｕ＝−０．１６８７Ｒ−０．３３１３Ｇ＋０．５０００Ｂ＋１２８  Ｖ＝０．５０００Ｒ−０．４１８７Ｇ−０．０８１３Ｂ＋１２８という変換式を用いることができる。
【００３４】
なお、白黒画像はＵ＝Ｖ＝０として考えればよく、本発明はカラー画像、白黒画像の両方に適用できる。
【００３５】
ＤＣＴ変換部１２は、画像入力部１１から入力された画像データを８×８要素からなる複数のブロック（ここでは説明の便宜上６４個のブロックとするが、何個でも可）に分割するブロック化を行い、ブロック毎にＤＣＴ（離散コサイン変換）を行う。ＤＣＴ変換部１２は、ＤＣＴ係数を格納した８×８のテーブル形式のＤＣＴ係数テーブルをブロック毎に作成し、量子化部１３の割り算処理部１３ａに出力する。以下、ブロック毎に作成された８×８のテーブル形式のＤＣＴ係数を、単にブロックという。
【００３６】
量子化部１３の割り算処理部１３ａは、ＤＣＴ変換部１２から出力されたブロック毎の各ＤＣＴ係数を、量子化表の対応する区間幅Q（量子化幅あるいは量子化ステップと呼ばれる））で割る。この除算結果値は少数第１位の値も保持している。
【００３７】
分割部１３ｂは、キーボードやマウスなどの手動操作装置で構成された指定部１３ｄの指定に基づき、除算結果値の得られたブロックを、「検証データ算出部分」と「検証データ埋め込み部分」の２種類の部分に分割する。以下、検証データ算出部分に分類されるブロックをＢ（Ｊ）、検証データ算出部分に分類されるブロックをＢ（Ｋ）で表す（０≦Ｋ≠Ｊ≦６３）。検証データ算出部分や検証データ埋め込み部分は、必ずしも連続した８ｘ８画素領域に対応するブロックの集合である必要はない。
【００３８】
どのブロックを検証データ算出部分と検証データ埋め込み部分に分割するかは、指定部１３ｄから任意に指定することができる。もっとも、検証データ算出部分が検証データ作成の基になるのだから、改竄の有無を厳しく判定する必要のある画像の重要部分、例えば画像の中心や、顔の検出された部位、主要被写体の検出された部位など、特定の重要部分が包含されるように検証データ算出部分を指定することが好ましいといえる。
【００３９】
また、検証データ埋め込み部分に検証データが埋め込まれることで、若干の画質劣化は不可避であるから、検証データ埋め込み部分は、画像の周縁部分など、画質劣化しても影響の少ない重要でない部分にすることが好ましいといえる。
【００４０】
指定部１３ｄから指定された検証データ算出部分と検証データ埋め込み部分を示す分割情報は、記憶媒体で構成された保存部１３ｅに保存することができる。
【００４１】
あるいは、画像データを格納するＪＰＥＧファイルなどの画像ファイルのヘッダ部分に分割情報ないし分割情報に代替するパターン識別情報を記録してもよく、この場合、保存部１３ｅは必要ない。
【００４２】
すなわち、分割情報は、検証データ算出部分と検証データ埋め込み部分のＤＣＴ係数ブロックそのものを示してもよいが、セキュリティ確保とデータの簡略化のためには、予めいくつかの検証データ算出部分・検証データ埋め込み部分の組み合わせパターン（必要であれば埋め込み係数位置や検証データ復元・復号化の鍵情報も含む）を規定しておき、その中からユーザが所望の組み合わせパターンを選択可能にし、選択されたパターンに対応する識別情報（パターン識別情報）を分割情報の代替とすることが望ましい。
【００４３】
なお、復号側の機器のバージョン情報や製造番号などの各種の機器固有情報を、パターン識別情報に用いてもよい。
【００４４】
検証データ作成部１６は、検証データ算出部分のブロックＢ（Ｊ）のＤＣＴ係数（０≦Ｊ≦６３）に対応する除算結果値D(J,m)/Q(J,m)をハッシュ関数に入力することでハッシュ値を得る。このハッシュ値のデータビット列を、検証データとして、検証データ埋め込み部１３ｃに出力する。
【００４５】
ハッシュ関数の一例としては、SHA-224／SHA-256／SHA-384／SHA-512が挙げられる。これらの関数で得られるハッシュ値のデータ長は、順に256ビット、384ビット、512ビット、224ビットであり、比較的小さなデータ量であるから、検証データ埋め込みによる画質劣化防止には適している。
【００４６】
ハッシュ関数は、一方向性（あるハッシュ値が与えられたとき、そのハッシュ値の生成に用いた元のデータを求めることが計算量的に困難なこと）、第２現像発見困難性（あるデータＸとハッシュ値が与えられたとき、同じハッシュ値Ｙを求めることが計算量的に困難なこと）、衝突発見困難性（同一のハッシュ値を与える異なる２つのデータの対を求めることが計算量的に困難なこと）という３つの性質を有するから、検証データの入れ替えによる改竄の防止には適している。もっとも、チェックサムや、パリティ符号・ＣＲＣ符号といった各種の誤り訂正符号を、検証データとすることもでき、適宜な方法により画像データから検証データを作成すればよい。
【００４７】
検証データ埋め込み部１３ｃは、Ｍ−系列などを用いて検証データをランダム化（暗号化）した上、検証データ埋め込み部分に対応する各ブロックＢ（Ｋ）の所定の係数位置である埋め込み位置に、ランダム化された検証データを１ビットずつ埋め込む。
【００４８】
具体的には、検証データ埋め込み部１３ｃは、検証データ埋め込み部分のブロックＢ（Ｋ）のうち、ランダム化された検証データを埋め込むべき係数位置であるm番目（符号化部１４によるジグザグ符号化順のm番目のこと）のＤＣＴ係数D(K,m)に対応する除算結果値D(K,m)/Q’(K,m)の丸め演算結果値の偶奇性（パリティ）が、埋め込む検証データのビットの値（０または１）と対応するように除算結果値R(K,m)の丸め方向を設定し、設定した丸め方向に除算結果値D(K,m)/Q’(K,m)を丸めた値を、ＤＣＴ係数D(K,m)の量子化代表値R2(K,m)に決定することで、ランダム化された検証データのビットの挿入を行う。
【００４９】
詳細は省略するが、Ｕ・Ｖ成分にも、Ｙ成分と同様にしてデータ埋め込みができるのはいうまでもない。
【００５０】
ランダム化された検証データの挿入を行うブロックにおけるＤＣＴ係数位置mの設定は任意である。例えば、各ブロックのＤＣＴ係数のN番目（N;固定値）といったように、全てのブロックに共通した位置にしてもよい。あるいは、各ブロックのＥＯＢの３つ前の係数位置（Y=X-3）から１つ前の係数位置（Y=X-1）までのように、所定の係数位置の範囲としてもよい。なお、ＥＯＢ以降にビットを挿入すると、ゼロランレングスが短くなり、符号化効率が低下するから、ＥＯＢよりも前に挿入するのが好ましい。また、低周波数側にビットを挿入すると、それだけ画質劣化が顕在化するから、ＥＯＢを超えない高周波数側の範囲に挿入することが好ましい。また、ＥＯＢはブロックによってその位置が変動するから、検出データ抽出の容易のためには、ブロックに依存しない一定の係数位置ないし範囲を検証データの挿入位置にするとよい。
【００５１】
検証データ埋め込み部１３ｃは、検証データを埋め込まないＤＣＴ係数D(L,n)(Lは０以上６３以下の任意の整数であり、かつn≠m)に対応する除算結果値D(L,n)/Q(L,n)については、その値の少数以下の桁を、四捨五入・切捨て・切り上げなどの丸め演算で丸めることで、検証データを埋め込まないＤＣＴ係数の量子化代表値R1(L,n)を決定する。
【００５２】
なお、検証データビットの挿入を行う周波数位置の量子化幅Q’(J.m)は、通常の量子化幅Q(J,m)よりも小さくするのが好ましい（すなわちQ’(J.m)< Q(J,m)を満足するよう、Q’(J.m)を設定）。これは、データを挿入しながら量子化することによる画質劣化を極力防ぐためである。
【００５３】
検証データ埋め込み部１３ｃは、このようにして決定されたＤＣＴ係数の量子化代表値R1(L,n)およびR2(K,m)を格納した８×８のテーブル形式の量子化データテーブルを全てのブロックについて作成し、符号化部１４に出力する。
【００５４】
符号化部１４は、検証データ埋め込み部１３ｃから出力されたブロック毎の量子化データテーブルをハフマン符号表などを用いてエントロピー符号化し、ビットストリームを出力する。この際、最高周波数の係数位置まで連続するゼロの量子化代表値の列の長さ（ゼロランレングス）を考慮した符号化を行なうことにより、ビット数が効果的に低減される。
【００５５】
符号化データにはＥＯＢ（エンドオブブロック）のコードが付加される。ここで、ＥＯＢとは、ブロック内の後続の量子化代表値は全てゼロであるという意味のコードである。
【００５６】
ＤＣＴを行って得られるＤＣＴ係数テーブルにおいては、左上に画質の劣化が顕在化しやすい低い空間周波数のＤＣＴ係数が配置され、右下に向かうほど画質の劣化が顕在化しにくい高い空間周波数のＤＣＴ係数が配置される。
【００５７】
出力部１５は、符号化部１４によって符号化されたデータを、外部記録媒体やネットワークなどに出力する。
【００５８】
図２は、検証データ算出部分Ｂ（Ｊ）、検証データ埋め込み部分Ｂ（Ｋ）、および検証データの埋め込み位置D(K,m)を概念的に示す。この図に示すように、ある画像中のブロック群は、検証データ算出部分と検証データ埋め込み部分に分割される。検証データ算出部分に属するブロックのＤＣＴ係数については、ハッシュ関数に入力してハッシュ値が算出され、これが検証データとされる。検証データは、検証データ埋め込み部分に属するブロックの所定位置のＤＣＴ係数D(K,m) （１または複数の係数）に埋め込まれる。埋め込み位置mに対応するパターン識別情報も、保存部１３ｅあるいは画像ファイルのヘッダに保存される。
【００５９】
このようにして検証データを埋め込んだ画像データを、ＪＰＥＧファイルその他の圧縮符号化画像ファイルとして出力し、パターン識別情報とともに、真正な画像の保証を必要とするユーザ（例えば保険会社や警察など）に提供する。パターン識別情報を復号側の機器固有情報とするなど、ユーザが予め持っている情報にした場合は、パターン情報を提供する必要はない。
【００６０】
画像の提供を受けたユーザ側では、パターン識別情報に対応する検証データ算出部分、検証データ埋め込み部分ないし埋め込み係数位置に従って画像データに埋め込まれた検証データを抽出するとともに、画像データの検証データ算出部分から新たに検証データを作成して、両者を比較し、一致していれば、改竄されていない真正な画像が提供されたことを検知できる。
【００６１】
＜第２実施形態＞
検証データ算出部分は、特定のブロックに設定する必然性はない。また、検証データ埋め込み部分も、特定のブロックに限る必然性はない。
【００６２】
例えば、図３に示すように、分割部１３ｂは、指定部１３ｄの指定に基づいて、６４個の各ブロックＢ（Ｋ）（0≦K≦63）のＤＣＴ係数のうち特定の位置mにあるＤＣＴ係数D(K,m)を検証データ埋め込み部分とするとともに、その検証データ埋め込み部分D(K,m)以外の全てのＤＣＴ係数D(K,n)（n≠m)を検証データ算出部分とする。
【００６３】
検証データ生成部１６は、ＤＣＴ係数D(K,n)（n≠m)をハッシュ関数に代入し、得られた値を検証データとする。そして、検証データ埋め込み部１３ｃは、検証データ埋め込み部分D(K,m)の除算結果値の値を、ランダム化された検証データのビットに変えることで、各ブロックのＤＣＴ係数D(K,m)に検証データを１ビットずつ埋め込む。ただし、位置mは範囲で指定してもよく、例えばmがＤＣＴ係数３つ分の範囲であれば、１ブロックにつき３ビットの検証データを埋め込むことができる。
【００６４】
このように、一つのブロック内に、「検証データ算出部分」と「検証データ埋め込み部分」を混在させることができる。
【００６５】
なお、上述のように圧縮符号化データの長大化を避けるため、位置mは、ＥＯＢの１つ手前までの高周波数側にすることが好ましい。かつ、画質劣化を避けるため、位置mは、なるべく低周波数側を避け、ＥＯＢに近い高周波数側とすることが好ましい。
【００６６】
また、検証データ算出部分のデータは、ＤＣＴ係数に限る必然性はない。例えば、特定の画素のピクセル値を用いてもよい。
【００６７】
あるいは、図４に示すように、画像データを複数の小領域に分割し、各小領域に包含される画像データをそれぞれ１つの独立した画像データと見なし、小領域ごとに検証データの算出と埋め込みを行ってもよい。こうすると、どの小領域で改竄があったかが分かり、おおまかな改竄位置の特定に役立つ。
【００６８】
あるいは第１実施形態で例示された検証データ算出部分や検証データ埋め込み部分と、本実施形態で例示された検証データ算出部分や検証データ埋め込み部分や埋め込み位置を、予め規定されたパターンとし、そのうちのいずれか一方のパターンを、キーボードやマウスなどで任意に指定できるようにしてもよい。
【００６９】
なお、本実施形態のパターンを第１実施形態のパターンと比較すると、本実施形態では、いずれのブロックも検証データ部分に用いられるから、第１実施形態のように画像の重要部分などを考慮して分割する必要がないという利点がある。
【００７０】
また、本実施形態では、検証データ埋め込み部分以外の全てのＤＣＴ係数を検証データ算出部分にすることができるから、どのブロックに改竄がされても検出されうるという利点がある。
【００７１】
以上は例示に過ぎず、要するに、検証データ算出部分や検証データ埋め込み部分は、双方とも画像データ中で識別・区別可能な単位であれば、ＤＣＴ係数のブロックやピクセルに限られず何でもよいし、分割単位自体をキーボードやマウスなどで指定することができるようにしてもよい。
【００７２】
そして、任意に指定された、検証データ算出部分・検証データ埋め込み部分・埋め込み係数位置の組み合わせパターンを識別するためのパターン識別情報を、保存部１３ｅに保存しておけば、復号側でこのパターン識別情報を用いて、どの部分が検証データ算出部分や検証データ埋め込み部分であるかを識別できる。
【００７３】
＜第３実施形態＞
図５は本発明の好ましい実施形態に係る画像改竄検証装置のブロック図である。詳細は省略するが、本実施形態で述べる装置の各ブロックはマイコンその他の演算装置のプログラム制御によっても実現可能である。
【００７４】
入力部２１は、第１実施形態に係る画像圧縮符号化装置の出力部１５から出力された画像データを、復号化部２２に入力する。入力部２１は、メディアリーダやネットワークアダプタなどで構成することができる。
【００７５】
検証用情報入力部３０は、検証データ算出部分、検証データ埋め込み部分およびデータ埋め込み係数位置を識別するための分割情報を含んだ検証用情報を入力する。検証用情報入力部３０は、パターン識別情報となるべき機器固有情報を格納したＲＯＭ、あるいはヘッダにパターン識別情報の記録された画像ファイルを入力するメディアリーダなどで構成することができる。特に、画像ファイルのヘッダ部分からパターン識別情報を入力する場合、入力部２１と検証用情報入力部３０の構成を共通化することができる。
【００７６】
図６は、画像ファイルのヘッダにパターン識別情報を記録し、検証装置側（復号側）でヘッダに記録されたパターン識別情報に対応する分割情報等を特定する概念図を示す。第１ないし第２実施形態に係る検証データ埋込装置付き画像圧縮符号化装置の分割部１３ｂは、予めＪＰＥＧファイルなどの画像ファイルのヘッダ部分に分割情報の代わりにパターン識別情報（この図では「１」）を記録する。この場合、検証データ埋込装置付き画像圧縮符号化装置に保存部１３ｅを設けて、ここに分割情報を記録する必要はない。なお、セキュリティ確保のためには、パターン識別情報自体も暗号化することが好ましい。
【００７７】
検証用情報入力部３０は、検証データ算出部分と検証データ埋め込み部分を区別する分割情報、データ埋め込み係数位置、およびランダム化された検証データを復元するための鍵情報を、各パターン識別情報に対応づけたテーブルを予め記憶している。検証用情報入力部３０は、入力された画像ファイルのヘッダ部分からパターン情報（この図では「１」）を抽出し、該テーブルを参照して、抽出されたパターン情報に対応する分割情報、データ埋め込み係数位置および鍵情報を特定する。パターン識別情報が所定の方式で暗号化されている場合は、その方式に従ってパターン識別情報を復号化した上で分割情報等を特定するとよい。
【００７８】
パターン識別情報に対応する分割情報は分割部２３に、パターン識別情報に対応する埋め込み位置情報および鍵情報は検証データ抽出部２４にそれぞれ入力される。
【００７９】
復号化部２２は、エントロピー符号化部１４の出力した符号化画像データのＤＣＴ係数D(m)をジグザグ順序に従ってエントロピー復号化する。
【００８０】
分割部２３は、入力された分割情報に基づき、復号化されたＤＣＴ係数のブロックを、検証データ算出部分と検証データ埋め込み部分に分割する。検証データ算出部分は検証データ再計算部２６に出力され、検証データ埋め込み部分は検証データ抽出部２４に出力される。
【００８１】
検証データ抽出部２４は、入力された埋め込み位置情報に従い、各ＤＣＴ係数に埋め込まれているランダム化された検証データを抽出する。例えば、検証データ抽出部２４は、量子化代表値R2(m)が偶数（すなわち最下位ビットが０）であればランダム化された検証データビット０が挿入されており、量子化代表値R2(m)が奇数（すなわち最下位ビットが１）であればランダム化された検証データビット０が挿入されていることを識別する。そして、鍵情報に基づいて、識別された各ビットを統合し、ランダム化された検証データを復元する。
【００８２】
抽出チェック部２５は、抽出された検証データについて、パリティチェックなどの各種誤り検出を実行し、誤りが検出されたか否かを判断する。誤りが検出されれば、検証データ埋め込み部分（埋め込み位置情報で示されるＤＣＴ係数）が改ざんされたと判断する。誤りが検出されなければ、検証データ埋め込み部分が改ざんされていないと判断し、抽出された検証データを検証データ比較部２７に出力する。また、抽出チェック部２５の判断結果は、結果出力部２８に出力される。こうすれば、抽出データの誤りを見逃したとしても、後の検証データ比較で値が合致しないので、埋め込み部分が改ざんされていたとしても改ざんを検出できる。
【００８３】
検証データ再計算部２６は、入力された検証データ算出部分を、検証データ生成部１６と同一のハッシュ関数に代入し、ハッシュ値を得る。検証データ再計算部２６は、ハッシュ値を検証データ比較部２７に出力する。ハッシュ関数に代入する元のデータが少しでも変わると、得られるハッシュ値は大きく変動するという性質がある。
【００８４】
検証データ比較部２７は、抽出チェック部２５から出力された検証データと、検証データ再計算部２６から出力されたハッシュ値とを比較し、両者が一致するか否かにより、画像データが改竄されているか否かを判断する。すなわち、両者が一致すれば画像データが改竄されていないと判断し、両者が一致しなければ画像データが改竄されていると判断する。検証データ比較部２７の判断結果は、結果出力部２８に出力される。
【００８５】
結果出力部２８は、ディスプレイやスピーカなどで構成されており、抽出チェック部２５または検証データ比較部２７による上記判断結果を、文字、画像、音声など、ユーザが感覚的に認識可能な効果をもって出力する。
【００８６】
このように、本実施形態に係る画像改竄検証装置は、検証データ比較部２７によって検証データ算出部分の改竄を検知するとともに、抽出チェック部２５によって検証データ埋め込み部分の改竄を検知することができる。特に、検証データとしてハッシュ値を用いれば、ハッシュ関数に代入する検証データ算出部分のデータが少しでも変わると、得られるハッシュ値が大きく変動するという性質から、検証データ算出部分の改竄が容易に判断できる。
【図面の簡単な説明】
【００８７】
【図１】検証データ埋込装置付き画像圧縮符号化装置のブロック図
【図２】検証データ算出部分Ｂ（Ｊ）、検証データ埋め込み部分Ｂ（Ｋ）、および検証データの埋め込み位置D(K,m)の一例を示す図
【図３】検証データ算出部分Ｂ（Ｊ）、検証データ埋め込み部分Ｂ（Ｋ）、および検証データの埋め込み位置D(K,m)の他の一例を示す図
【図４】画像データを複数の小領域に分割し、各小領域をそれぞれ１つの画像と見なし、小領域ごとに検証データの算出と埋め込みを行う場合を概念的に示した図
【図５】画像改竄検証装置のブロック図
【図６】画像ファイルのヘッダ部分に記録されたパターン識別情報の具体例を示す図
【符号の説明】
【００８８】
１３ｂ：分割部、１３ｃ：検証データ埋め込み部、１３ｄ：指定部、１３ｅ：保存部、１６：検証データ生成部、２３：分割部、２４：検証データ抽出部、２５：抽出チェック部、２６：検証データ再計算部、２７：検証データ比較部、２８：結果出力部
【図１】
2008067309.tif 000003
【図２】
2008067309.tif 000004
【図３】
2008067309.tif 000005
【図４】
2008067309.tif 000006
【図５】
2008067309.tif 000007
【図６】
2008067309.tif 000008