(57)【特許請求の範囲】
【請求項１】
コンピュータが、
検証対象である画像圧縮フォーマットに従った第１の画像情報に対応する原本である、画像圧縮フォーマットに従った第２の画像情報を分割して得られる複数の領域のうち修正対象となる第１の領域の位置情報および前記第１の領域の画素情報の修正前の要約情報と、前記第１の領域の位置情報に基づいて特定された第２の領域の画素情報の修正前の要約情報と、を記憶する第１の記憶部から、前記第１の画像情報を分割して得られる複数の領域のうち、前記第１および第２の領域の画素情報の修正前の要約情報を取得し、
前記第１の画像情報を分割して得られる複数の領域のうち、前記第１の画像情報において前記第１および第２の領域と同一位置となる第３および第４の領域のいずれの領域とも異なる他の領域の画素情報に基づいて、前記他の領域の画素情報の要約情報を生成し、
前記第１の画像情報を分割して得られる複数の領域のうち取得した前記要約情報と生成した前記要約情報とに対応する領域の位置情報に基づいて、取得した前記要約情報と生成した前記要約情報とを連結した要約対象から、前記第１の画像情報の要約情報を生成し、
第２の記憶部から読み出された、前記第２の画像情報を分割して得られる複数の領域の位置情報に従って当該複数の領域の画素情報の要約情報が連結された要約対象から生成された要約情報と、生成した前記第１の画像情報の要約情報との比較結果に基づいて、前記第１の画像情報の正当性を検証する、
処理を実行することを特徴とする検証方法。
【請求項２】
前記コンピュータが、
前記第１の画像情報を分割して得られる複数の領域のうち、当該領域の画素値が特定の画素値となる前記第３の領域を検出し、
前記第１の画像情報を分割して得られる複数の領域のうち、自領域の画素値を前記第３の領域の画素値からの差分値にて表現している前記第４の領域を特定し、
前記要約情報を取得する処理は、
前記第１の記憶部から、前記第１の画像情報を分割して得られる複数の領域のうち、検出した前記第３の領域および特定した前記第４の領域に対して、前記第３および第４の領域と同一位置となる前記第１および第２の領域の画素情報の修正前の要約情報を取得する、
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
前記コンピュータが、
前記第４の領域を特定した場合、前記第３の領域と同一位置となる前記第１の領域が存在しており、かつ、前記第４の領域と同一位置となる前記第２の領域が存在しているか否かを判断し、
前記検証する処理は、
判断結果と、前記第１の画像情報の要約情報と読み出した前記要約情報との比較結果と、を用いて、前記第１の画像情報の正当性を検証する、
ことを特徴とする請求項２に記載の検証方法。
【請求項４】
検証対象である画像圧縮フォーマットに従った第１の画像情報に対応する原本である、画像圧縮フォーマットに従った第２の画像情報を分割して得られる複数の領域のうち修正対象となる第１の領域の位置情報および前記第１の領域の画素情報の修正前の要約情報と、前記第１の領域の位置情報に基づいて特定された第２の領域の画素情報の修正前の要約情報と、を記憶する第１の記憶部と、
前記第２の画像情報を分割して得られる複数の領域の位置情報に従って当該複数の領域の画素情報の要約情報が連結された要約対象から生成された要約情報を記憶する第２の記憶部と、
前記第１の記憶部から、前記第１の画像情報を分割して得られる複数の領域のうち、前記第１および第２の領域の画素情報の修正前の要約情報を取得する取得部と、
前記第１の画像情報を分割して得られる複数の領域のうち、前記第１の画像情報において前記第１および第２の領域と同一位置となる第３および第４の領域のいずれの領域とも異なる他の領域の画素情報に基づいて、前記他の領域の画素情報の要約情報を生成する第１の生成部と、
前記第１の画像情報を分割して得られる複数の領域のうち取得した前記要約情報と生成した前記要約情報とに対応する領域の位置情報に基づいて、取得した前記要約情報と生成した前記要約情報とを連結した要約対象から、前記第１の画像情報の要約情報を生成する第２の生成部と、
前記第２の記憶部から読み出した要約情報と、生成した前記第１の画像情報の要約情報との比較結果に基づいて、前記第１の画像情報の正当性を検証する検証部と、
を有することを特徴とする検証装置。
【請求項５】
コンピュータに、
検証対象である画像圧縮フォーマットに従った第１の画像情報に対応する原本である、画像圧縮フォーマットに従った第２の画像情報を分割して得られる複数の領域のうち修正対象となる第１の領域の位置情報および前記第１の領域の画素情報の修正前の要約情報と、前記第１の領域の位置情報に基づいて特定された第２の領域の画素情報の修正前の要約情報と、を記憶する第１の記憶部から、前記第１の画像情報を分割して得られる複数の領域のうち、前記第１および第２の領域の画素情報の修正前の要約情報を取得する処理、
前記第１の画像情報を分割して得られる複数の領域のうち、前記第１の画像情報において前記第１および第２の領域と同一位置となる第３および第４の領域のいずれの領域とも異なる他の領域の画素情報に基づいて、前記他の領域の画素情報の要約情報を生成する処理、
前記第１の画像情報を分割して得られる複数の領域のうち取得した前記要約情報と生成した前記要約情報とに対応する領域の位置情報に基づいて、取得した前記要約情報と生成した前記要約情報とを連結した要約対象から、前記第１の画像情報の要約情報を生成する処理、
第２の記憶部から読み出された、前記第２の画像情報を分割して得られる複数の領域の位置情報に従って当該複数の領域の画素情報の要約情報が連結された要約対象から生成された要約情報と、生成した前記第１の画像情報の要約情報との比較結果に基づいて、前記第１の画像情報の正当性を検証する処理、
を実行させることを特徴とする検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を検証する検証方法、検証装置、および検証プログラムに関する。
【背景技術】
【０００２】
近年、店舗や繁華街、集合住宅等での監視カメラ設置や、業務車両へのドライブレコーダ設置等が一般化し、動画情報を証拠物件として取り扱う事例が増加している。また、電話による取引やサポート業務のトラブル対策として、店舗が顧客とオペレータとの会話を録音し証拠として保持することも常識となりつつある。
【０００３】
現在、動画情報を証拠とする場合、店舗がビデオテープや画像をそのまま提出している。しかし、画像保存のデジタル化が進めば、それらの改ざんや編集は容易になり、証拠として取り扱う場合は、署名やタイムスタンプといった第三者証明が要求される。
【０００４】
また、提出するときの画像や動画像は、データ量が多くなるため、圧縮技術を用いて提出される場合もある。たとえば、画像圧縮フォーマットとして、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）フォーマットが存在し、また、動画像の各フレームがＪＰＥＧフォーマットとなる、ＭｏｔｉｏｎＪＰＥＧという動画像圧縮フォーマットが存在する。ＪＰＥＧでは、画像を複数の領域に分割し、領域の画素値を、一つ前の領域の画素値からの差分値として保持して画素値の統計的な偏りを大きくすることで、圧縮効率を高めている。
【０００５】
第三者による改ざんを検知する技術として、たとえば、動画像のフレーム単位で要約情報を生成し、要約情報の集まりに対して電子署名を付加するものがある。ここで、要約情報とは、メッセージダイジェストという、暗号学的一方向性ハッシュ関数を用いて算出されたハッシュに相当する。また、原本の動画像を、再生可能な最小単位であるＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）ごとに分割し、分割したＧＯＰ単位でハッシュを生成することで、切り出された動画像が原本の動画像の一部であり、改変がないことを第三者が証明可能とする技術がある。
【０００６】
また、プライバシー保護の観点から、公開したくない箇所を墨塗してデータの公開を行いたいという要求がある。これに関して、画像を複数の領域に分割し、墨塗を行う領域について墨塗し、分割した領域ごとに要約情報を生成することで、一部の領域を墨塗した状態で画像を公開できる技術がある（たとえば、下記特許文献１〜３を参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１０／９７９２３号
【特許文献２】特開２００９−１５２７１３号公報
【特許文献３】特開２００６−１８０４７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術において、画像圧縮フォーマットに従った原本に対して一部の領域を墨塗して公開された画像に対して、検証装置が原本性の検証を行うと、墨塗された領域ごとに電子署名の署名対象として検証するために、検証処理に時間がかかる。
【０００９】
本発明は、上述した従来技術による問題点を解消するため、画像圧縮フォーマットに従っている墨塗した画像の原本性の検証を迅速に行える検証方法、検証装置、および検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、検証対象である第１の画像を受け付け、原本である第２の画像を分割して得られる複数の領域のうち修正対象となる第１の領域の位置情報および第１の領域の修正前の要約情報と、第１の領域の位置情報に基づいて特定された第２の領域の修正前の要約情報と、を記憶する第１の記憶部から、第１の画像を分割して得られる複数の領域のうち、第１および第２の領域と同一位置となる第３および第４の領域に対して、第１および第２の領域の修正前の要約情報を取得し、第１の画像を分割して得られる複数の領域のうち、第３および第４の領域のいずれの領域とも異なる他の領域に対して、他の領域の要約情報を生成し、第１の画像を分割して得られる複数の領域のうち取得した要約情報と生成した要約情報とに対応する領域の位置情報に従って、取得した要約情報と生成した要約情報とを連結した要約対象から、第１の画像の要約情報を生成し、第２の画像を分割して得られる複数の領域の位置情報に従って複数の領域の要約情報が連結された要約対象から生成された要約情報を記憶する第２の記憶部から読み出して、読み出した要約情報と生成した第１の画像の要約情報とを比較することにより、第１の画像の正当性を検証する検証方法、検証装置、および検証プログラムが提案される。
【発明の効果】
【００１１】
本発明の一側面によれば、画像圧縮フォーマットに従っている墨塗した画像の原本性の検証を迅速に行えるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態にかかる検証装置の動作例を示す説明図である。
【図２】図２は、検証システムの接続例を示す説明図である。
【図３】図３は、検証装置のハードウェアの一例を示すブロック図である。
【図４】図４は、検証装置の機能例を示すブロック図である。
【図５】図５は、原本データに対する電子署名の生成例を示す説明図である。
【図６】図６は、切出データの生成例を示す説明図である。
【図７】図７は、切出データの原本性保証の検証例を示す説明図である。
【図８】図８は、ＪＰＥＧデータの分離例を示す説明図である。
【図９】図９は、ＪＰＥＧデータのハッシュ生成例を示す説明図である。
【図１０−１】図１０−１は、ＭｏｔｉｏｎＪＰＥＧに対する電子署名の生成例を示す説明図（その１）である。
【図１０−２】図１０−２は、ＭｏｔｉｏｎＪＰＥＧに対する電子署名の生成例を示す説明図（その２）である。
【図１１】図１１は、署名ヘッダのフォーマット例を示す説明図である。
【図１２】図１２は、墨塗ＭＣＵおよび緩衝ＭＣＵのハッシュ保存処理例を示す説明図である。
【図１３】図１３は、切出・墨塗の処理例を示す説明図である。
【図１４】図１４は、墨塗ＭＣＵ、緩衝ＭＣＵの画素値の算出例を示す説明図である。
【図１５】図１５は、切出・墨塗データの検証例を示す説明図である。
【図１６】図１６は、署名生成処理の一例を示すフローチャートである。
【図１７−１】図１７−１は、切出・墨塗処理の一例を示すフローチャート（その１）である。
【図１７−２】図１７−２は、切出・墨塗処理の一例を示すフローチャート（その２）である。
【図１８】図１８は、ＭＣＵハッシュ生成処理の一例を示すフローチャートである。
【図１９】図１９は、ＭＣＵ修正処理の一例を示すフローチャートである。
【図２０−１】図２０−１は、切出・墨塗データの検証処理の一例を示すフローチャート（その１）である。
【図２０−２】図２０−２は、切出・墨塗データの検証処理の一例を示すフローチャート（その２）である。
【図２０−３】図２０−３は、切出・墨塗データの検証処理の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、開示の検証方法、検証装置、および検証プログラムの実施の形態を詳細に説明する。
【００１４】
図１は、実施の形態にかかる検証装置の動作例を示す説明図である。図１では本実施の形態にかかる検証装置１０１の動作を示している。墨塗した画像の検証を行う検証装置１０１は、原本データ１１１であるＭｏｔｉｏｎＪＰＥＧから、フレーム１１２が墨塗された切出・墨塗データ１１３を受け付けることで、検証処理を開始する。ＭｏｔｉｏｎＪＰＥＧとは、動画圧縮形式の一つであり、フレーム間の圧縮を行わない動画形式である。また、ＭｏｔｉｏｎＪＰＥＧの各フレームは、圧縮静止画形式の一つであるＪＰＥＧフォーマットに従っている。なお、ＪＰＥＧフォーマットの詳細については、図８にて後述する。たとえば、フレーム１１２と、切出・墨塗データ１１３は、ＪＰＥＧフォーマットに従っている。
【００１５】
ＪＰＥＧフォーマットは、画像をＭＣＵ（Ｍｉｎｉｍｕｍ  Ｃｏｄｅｄ  Ｕｎｉｔ）という領域に分割し、ＭＣＵ単位で処理を行う。さらに、ＭＣＵを画素値の成分ごとに分解し、８×８［ピクセル］単位にした領域をブロックと呼ぶ。図１中では、ブロックをｂと表示する。たとえば、図１では、画像の内部に、ＭＣＵ1〜ＭＣＵ6が含まれている。さらに、ＭＣＵ1は、ブロック１〜ブロック４を含み、ＭＣＵ2は、ブロック５〜ブロック８を含み、ＭＣＵ3は、ブロック９〜ブロック１２を含む。さらに、ＭＣＵ4は、ブロック１３〜ブロック１６を含み、ＭＣＵ5は、ブロック１７〜ブロック２０を含み、ＭＣＵ6は、ブロック２１〜ブロック２４を含む。
【００１６】
また、各ブロックが示す領域の画素値は、ブロック番号が１つ小さいブロックの画素値からの差分値にて表現している。たとえば、ＭＣＵ2のブロック５の画素値は、ブロック４の画素値からの差分値にて表現している。このように、差分値で画素値を表現することで、ブロック内の画素値の統計的な偏りが大きくなり、圧縮効率を高めることができる。
【００１７】
このような状態で、検証装置１０１は、切出・墨塗データ１１３の検証を行う。フレーム１１２には、人物Ａと人物Ｂが映っていたが、人物Ａに関してはプライバシー保護のため、切出・墨塗データ１１３には、人物Ａを表示するＭＣＵが墨塗され、人物Ｂのみが映っている。ここで、検証装置１０１は、フレーム１１２のハッシュであるＪＰＥＧフレームハッシュ１２１を記憶している。ＪＰＥＧフレームハッシュ１２１は、ＭＣＵ1〜ＭＣＵ6の位置情報に従ってＭＣＵ1ハッシュ〜ＭＣＵ6ハッシュが連結されたＪＰＥＧフレームハッシュ用対象データ１２２から生成されている。さらに、検証装置１０１は、人物Ａを表示していたＭＣＵ1が墨塗されたことと、ＭＣＵ1が墨塗されたことによりＭＣＵ2の差分値が変更されたことと、ＭＣＵ1およびＭＣＵ2のハッシュと、を記憶するＭＣＵハッシュ保存データ１２３を記憶している。以下、墨塗されたＭＣＵを墨塗ＭＣＵと定義し、墨塗されたことにより差分値が変更されたＭＣＵを緩衝ＭＣＵと定義する。
【００１８】
切出・墨塗データ１１３を受け付けると、検証装置１０１は、切出・墨塗データ１１３を分割した各ＭＣＵのうち、ＭＣＵ1とＭＣＵ2に対して、ＭＣＵハッシュ保存データ１２３からＭＣＵ1ハッシュとＭＣＵ2ハッシュを取得する。次に、検証装置１０１は、ＭＣＵ1およびＭＣＵ2と異なるＭＣＵ3〜ＭＣＵ6に対して、ＭＣＵ3ハッシュ〜ＭＣＵ6ハッシュを生成する。
【００１９】
続けて、検証装置１０１は、ＭＣＵ1〜ＭＣＵ6の位置情報に従って、取得したＭＣＵ1ハッシュとＭＣＵ2ハッシュと、生成したＭＣＵ3ハッシュ〜ＭＣＵ6ハッシュとを連結したＪＰＥＧフレームハッシュ用対象データ１２４を設定する。次に、検証装置１０１は、ＪＰＥＧフレームハッシュ用対象データ１２４から、ＪＰＥＧフレームハッシュ１２５を生成する。最後に、検証装置１０１は、ＪＰＥＧフレームハッシュ１２１とＪＰＥＧフレームハッシュ１２５とを比較することにより、切出・墨塗データ１１３の正当性を検証する。たとえば、切出・墨塗データ１１３のハッシュの改ざんがない場合、切出・墨塗データ１１３のハッシュとフレーム１１２のハッシュとが同一となるため、検証装置１０１は、切出・墨塗データ１１３が改ざんされていないという検証結果を出力することになる。
【００２０】
このように、検証装置１０１は、切出・墨塗データ１１３内の墨塗ＭＣＵと墨塗ＭＣＵから特定された緩衝ＭＣＵについて、原本の同位置となるＭＣＵの修正前のハッシュを用いて切出・墨塗データ１１３のハッシュを生成してフレーム１１２のハッシュと比較する。これにより、検証装置１０１は、墨塗領域の数に関わらず、ハッシュの比較を１回しか行わないため、原本性の検証を迅速に行える。
【００２１】
図２は、検証システムの接続例を示す説明図である。画像を検証する検証システム２００は、検証装置１０１と、撮影装置２０１と、切出・墨塗操作端末２０２と、検証操作端末２０３と、を含む。検証装置１０１、撮影装置２０１〜検証操作端末２０３は、ネットワーク２１０で接続されている。
【００２２】
検証装置１０１は、切出・墨塗データ１１３の原本性を検証する。また、本実施の形態にかかる検証装置１０１は、原本データ１１１に対する電子署名を生成し、原本データ１１１から切出・墨塗データ１１３の切出を行う。なお、電子署名を生成する装置と、切出を行う装置は、検証装置１０１とは異なる装置であってもよい。撮影装置２０１は、原本データ１１１を生成する。たとえば、撮影装置２０１は、監視カメラとして病院などに設置されている。
【００２３】
切出・墨塗操作端末２０２は、原本データ１１１から切出位置、墨塗位置を指定する。たとえば、切出・墨塗操作端末２０２は、警察などから原本データ１１１の公開依頼があった場合に、切出・墨塗作業者の操作によって原本データ１１１から切出位置、墨塗位置を指定する。
【００２４】
検証操作端末２０３は、切出・墨塗データ１１３の原本性の検証要求を検証装置１０１に送信し、検証結果を受信する。たとえば、検証操作端末２０３は、公開された切出・墨塗データ１１３に対して、警察、裁判所などからの原本性の検証要求を受けた場合に、検証者の操作によって切出・墨塗データ１１３の原本性の検証要求を検証装置１０１に送信する。
【００２５】
（検証装置１０１のハードウェア）
図３は、検証装置のハードウェアの一例を示すブロック図である。図３において、検証装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、検証装置１０１は、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、を含む。また、ユーザやその他の機器との入出力装置として検証装置１０１は、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０８を含む。また、各部はバス３０９によってそれぞれ接続されている。
【００２６】
ここで、ＣＰＵ３０１は、検証装置１０１の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御に従って磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００２７】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御に従って光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。なお、ＲＯＭ３０２、磁気ディスク３０５、光ディスク３０７のいずれかの記憶装置に、本実施の形態にかかる検証プログラムが格納されていてもよい。
【００２８】
Ｉ／Ｆ３０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ３０８は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２９】
また、検証装置１０１は、ユーザとのインターフェースとして、ディスプレイと、キーボードと、マウスと、を含んでもよい。また、撮影装置２０１は、ＣＰＵ、ＲＯＭ、ＲＡＭ、キーボード、カメラデバイスなどを含む。また、切出・墨塗操作端末２０２、検証操作端末２０３は、ＣＰＵと、ＲＯＭと、ＲＡＭと、磁気ディスクドライブと、磁気ディスクと、光ディスクドライブと、光ディスクと、ディスプレイと、Ｉ／Ｆと、キーボードと、マウスと、を含む。
【００３０】
（検証装置１０１の機能）
次に、検証装置１０１の機能について説明する。図４は、検証装置の機能例を示すブロック図である。検証装置１０１は、署名生成部４０１と、切出・墨塗部４０２と、検証部４０３と、を含む。この制御部となる機能（署名生成部４０１〜検証部４０３）は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などである。または、Ｉ／Ｆ３０８を経由して他のＣＰＵが実行することにより、その機能を実現してもよい。
【００３１】
また、切出・墨塗部４０２は、指定部４１１と、特定部４１２と、生成部４１３と、格納部４１４と、修正部４１５と、変更部４１６と、出力部４１７と、を含む。検証部４０３は、記憶部４２０−１と、記憶部４２０−２と、受付部４２１と、検出部４２２と、特定部４２３と、取得部４２４と、生成部４２５と、生成部４２６と、判断部４２７と、検証部４２８と、を含む。なお、検証装置１０１は、署名生成部４０１〜検証部４０３の３つの機能を有しているが、署名生成部４０１を有する装置と切出・墨塗部４０２を有する装置と検証部４０３を有する装置とが別々であってもよい。なお、修正部４１５は、切出・墨塗操作端末２０２の機能であってもよい。
【００３２】
また、検証装置１０１は、原本データ１１１、切出・墨塗データ１１３、ＭＣＵハッシュ保存データ１２３、原本署名データ４３１にアクセス可能である。なお、原本データ１１１、切出・墨塗データ１１３、ＭＣＵハッシュ保存データ１２３、原本署名データ４３１は、ＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に格納されている。原本データ１１１は、撮影装置２０１から受信したＭｏｔｉｏｎＪＰＥＧでもよいし、ＪＰＥＧでもよい。
【００３３】
切出・墨塗データ１１３は、原本データ１１１から一部を切り出し、一部分の領域を墨塗したデータである。また、切出・墨塗データ１１３は、ＭｏｔｉｏｎＪＰＥＧでもよいし、ＪＰＥＧでもよい。ＭＣＵハッシュ保存データ１２３は、原本データ１１１のうち、署名検証に用いるＪＰＥＧのヘッダ部分のハッシュとＭＣＵのハッシュを保存するデータである。原本署名データ４３１は、原本データ１１１のフレームごとのハッシュと、ハッシュに対して付与された電子署名のデータである。
【００３４】
署名生成部４０１は、原本データ１１１に対して署名を生成する機能を有する。たとえば、署名生成部４０１は、原本データ１１１の１フレームとなる画像ごとに、画像を分割して得られる複数の領域の領域ごとの要約情報を生成する。ここで、領域とは、図１で示したＭＣＵで示される領域である。また、以降の説明では、要約情報を、単にハッシュとして説明する。次に、署名生成部４０１は、各画像の各々の領域以外の他の情報のハッシュを画像ごとに生成する。ここで、他の情報とは、ＪＰＥＧヘッダ部のことである。ＪＰＥＧヘッダ部については、図８にて説明する。続けて、署名生成部４０１は、他の情報のハッシュと各々の領域のハッシュとの組合せに応じて、画像のハッシュを画像ごとに生成し、画像ごとのハッシュである原本署名データ４３１を記憶領域に格納する。
【００３５】
切出・墨塗部４０２は、原本データ１１１からデータを切り出し、データの一部分に墨塗を行う機能を有する。たとえば、切出・墨塗部４０２は、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧから指定されたフレーム群を切り出して、フレーム群の指定された領域に墨塗を行った切出・墨塗データ１１３を出力する。
【００３６】
検証部４０３は、切出・墨塗データ１１３の原本性保証を検証する機能を有する。たとえば、検証部４０３は、切出・墨塗データ１１３となるＭｏｔｉｏｎＪＰＥＧの画像ごとに、複数の領域に分割し、各々の領域のハッシュから、画像のハッシュを生成し、原本署名データ４３１内のハッシュと比較することで、原本性保証を検証する。
【００３７】
指定部４１１は、画像を分割して得られる複数の領域のうち、修正対象となる第１の領域を指定する機能を有する。ここで、第１の領域とは、たとえば、図１で示すと、ＭＣＵ1となる。たとえば、指定部４１１は、切出・墨塗操作端末２０２からの指示により、ＭＣＵ1を指定する。なお、指定された領域を一意に特定する番号が、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００３８】
特定部４１２は、複数の領域のうち自領域の画素値を第１の領域の画素値からの差分値にて表現している第２の領域を特定する機能を有する。画素値とは、画素が示す色情報であり、たとえば、画素値は、輝度成分値、青色色差成分値、赤色色差成分値という３つの成分値であってもよいし、赤成分値、緑成分値、青成分値という３つの成分値であってもよい。また、グレースケール画像であれば、画素値は、輝度成分値となる。たとえば、特定部４１２は、自領域の画素値をＭＣＵ1の画素値からの差分値にて表現しているＭＣＵ2を特定する。
【００３９】
また、特定部４１２は、第１の領域から、画像の走査方向にて次の位置にある第２の領域を特定してもよい。ＭＣＵの走査方向は、水平方向であり、右端まで到達したら、次の行となる。図１の例では、ＭＣＵの走査順は、ＭＣＵ1、ＭＣＵ2、ＭＣＵ3、ＭＣＵ4、ＭＣＵ5、ＭＣＵ6となる。なお、特定された領域を一意に特定する番号が、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００４０】
生成部４１３は、第１の領域の修正前のハッシュおよび第２の領域のハッシュを生成する機能を有する。たとえば、生成部４１３は、ＭＣＵ1の修正前のハッシュおよびＭＣＵ2の変更前のハッシュを生成する。ハッシュを生成する暗号学的一方向性ハッシュ関数には、たとえば、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１、ＳＨＡ−２５６のようなアルゴリズムがある。なお、生成されたハッシュは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００４１】
格納部４１４は、第１の領域のハッシュおよび第２の領域のハッシュが生成された場合、第１の領域の位置情報と第１の領域のハッシュと、第２の領域の位置情報と第２の領域のハッシュとを、記憶領域に格納する機能を有する。また、第１の領域のハッシュは、修正部４１５による修正が行われる前の画素値に対してのハッシュとなる。なお、位置情報は、たとえば、領域を一意に特定する番号であったり、画像内の横方向および縦方向の位置であったりしてもよい。
【００４２】
たとえば、格納部４１４は、ＭＣＵ1のハッシュおよびＭＣＵ2のハッシュが生成された場合、ＭＣＵ1の位置情報となる番号として“１”とＭＣＵ1のハッシュとＭＣＵ2の番号である“２”とＭＣＵ2のハッシュをＭＣＵハッシュ保存データ１２３に格納する。
【００４３】
修正部４１５は、第１の領域を所定の修正処理で修正する機能を有する。所定の修正処理は、第１の領域の画素値を修正する処理であれば特に限定しないが、たとえば、墨塗処理であってもよいし、モザイク処理であってもよいし、ぼかし処理であってもよい。たとえば、修正部４１５は、ＭＣＵ1を墨塗処理で修正する。また、修正部４１５は、格納部４１４による第１の領域の位置情報およびハッシュと第２の領域のハッシュとが記憶領域に格納された後に行われる。
【００４４】
具体的には、切出・墨塗操作端末２０２が切出・墨塗要求を検証装置１０１に送信した後、切出・墨塗操作端末２０２は、第１の領域の修正が行えないようにロックしておく。次に、格納部４１４の処理が終わった後、検証装置１０１は、修正許可通知を切出・墨塗操作端末２０２に送信し、切出・墨塗操作端末２０２は、ロックを解除して第１の領域を修正し、修正後の領域の画素値を検証装置１０１に送信する。また、検証装置１０１が切出・墨塗要求を受け付けて、直後に格納部４１４までの処理を行える場合、切出・墨塗操作端末２０２は、第１の領域の修正のロックを行わなくてもよい。修正後の領域の画素値は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００４５】
変更部４１６は、第１の領域が修正された場合、第２の領域の差分値を、第２の領域の画素値と第１の領域の修正前の画素値との差分値から第２の領域の画素値と第１の領域の修正後の画素値との差分値に変更する機能を有する。たとえば、ＭＣＵ2の画素値が７５であり、ＭＣＵ1の修正後の画素値が０であるとする。このとき、変更部４１６は、ＭＣＵ2の差分値を、ＭＣＵ2の画素値７５−ＭＣＵ1の修正後の画素値０＝７５に変更する。
【００４６】
出力部４１７は、修正後の第１の領域と変更後の第２の領域とを含む画像を出力する機能を有する。たとえば、出力部４１７は、切出・墨塗データ１１３を出力する。なお、出力先としては、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に書き込んでもよいし、切出・墨塗要求を行った切出・墨塗操作端末２０２へ出力してもよい。
【００４７】
記憶部４２０−１は、原本である第２の画像を分割して得られる複数の領域のうち修正対象となる第１の領域の位置情報および第１の領域の修正前のハッシュと、第１の領域に基づいて特定された第２の領域の修正前のハッシュと、を記憶する。たとえば、図１を例にすると、第１の領域は、フレーム１１２の墨塗ＭＣＵであるＭＣＵ1となり、第２の領域は、フレーム１１２の緩衝ＭＣＵであるＭＣＵ2である。この場合、記憶部４２０−１は、ＭＣＵハッシュ保存データ１２３内に、墨塗ＭＣＵ番号として“１”を記憶し、さらに、ＭＣＵ1ハッシュと緩衝ＭＣＵであるＭＣＵ2ハッシュを記憶する。
【００４８】
記憶部４２０−２は、第２の画像のハッシュを記憶する。詳細には、記憶部４２０−２は、第２の画像を分割して得られる複数の領域の位置情報に従って、複数の領域のハッシュが連結されたＪＰＥＧフレームハッシュ用対象データ１２２から生成されたハッシュを記憶する。たとえば、記憶部４２０−２は、フレーム１１２のＪＰＥＧフレームハッシュ１２１を記憶する。具体的に、ＪＰＥＧフレームハッシュ１２１は、原本署名データ４３１内に存在する。
【００４９】
受付部４２１は、検証対象である第１の画像を受け付ける機能を有する。ここで、第１の画像は、たとえば、切出・墨塗データ１１３となる。なお、受け付けた各データは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５０】
検出部４２２は、第１の画像を分割して得られる複数の領域のうち、当該領域の画素値が特定の画素値となる第３の領域を検出する機能を有する。特定の画素値としては、たとえば、墨塗処理が行われる場合、画素値が全て０である。または、白と黒のモザイク処理が行われた場合、特定の画素値は、画素値が２５５か０のどちらかとなる。たとえば、検出部４２２は、切出・墨塗データ１１３の各ＭＣＵのうち、ＭＣＵ内の画素値が全て０となっているＭＣＵ1を検出する。なお、検出された領域を一意に特定する番号が、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５１】
特定部４２３は、第１の画像から、自領域の画素値を第３の領域の画素値からの差分値にて表現している第４の領域を特定する機能を有する。たとえば、特定部４２３は、自領域の画素値を切出・墨塗データ１１３のＭＣＵ1からの差分値にて表現しているＭＣＵ2を特定する。なお、特定された領域を一意に特定する番号が、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５２】
取得部４２４は、記憶部４２０−１から、第１の画像を分割して得られる複数の領域のうち、第１および第２の領域と同一位置となる第３および第４の領域に対して、第１および第２の領域の修正前のハッシュを取得する機能を有する。たとえば、第１の領域となるフレーム１１２の墨塗ＭＣＵの番号としてＭＣＵハッシュ保存データ１２３に“１”が格納されているとする。このとき、第１の領域と同一位置となる第３の領域が切出・墨塗データ１１３のＭＣＵ1となり、取得部４２４は、ＭＣＵハッシュ保存データ１２３から、ＭＣＵ1の修正前のハッシュを取得する。
【００５３】
また、第２の領域となるフレーム１１２の緩衝ＭＣＵの番号としてＭＣＵハッシュ保存データ１２３に“２”が格納されているとする。このとき、第２の領域と同一位置となる第４の領域が切出・墨塗データ１１３のＭＣＵ2となり、取得部４２４は、ＭＣＵハッシュ保存データ１２３から、ＭＣＵ2の修正前のハッシュを取得する。
【００５４】
また、取得部４２４は、第１の画像を分割して得られる複数の領域のうち、検出部４２２が検出した第３の領域および特定部４２３が特定した第４の領域に対して、第３および第４の領域と同一位置となる第１および第２の領域の修正前の要約情報を取得してもよい。
【００５５】
たとえば、検出部４２２が第３の領域として切出・墨塗データ１１３のＭＣＵ1を検出した場合、取得部４２４は、ＭＣＵハッシュ保存データ１２３から、第３の領域と同一位置となるフレーム１１２のＭＣＵ1の修正前のハッシュを取得する。また、特定部４２３が第４の領域として切出・墨塗データ１１３のＭＣＵ2を特定した場合、取得部４２４は、ＭＣＵハッシュ保存データ１２３から、第４の領域と同一位置となるフレーム１１２のＭＣＵ2の修正前のハッシュを取得する。なお、取得されたハッシュ、またはハッシュが格納されたアドレスへのポインタ等が、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５６】
生成部４２５は、第１の画像を分割して得られる複数の領域のうち、第３および第４の領域のいずれの領域とも異なる他の領域に対して、他の領域のハッシュを生成する機能を有する。たとえば、ｎを１以上の整数とし、切出・墨塗データ１１３のＭＣＵ群のうちＭＣＵnについて、第１および第２の領域の位置情報としてＭＣＵ番号“１”と“２”が示されていれば、ＭＣＵ3以降のＭＣＵが異なる領域となる。このとき、生成部４２５は、ＭＣＵnのハッシュを生成する。なお、生成されたハッシュは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５７】
生成部４２６は、取得部４２４が取得したハッシュと生成部４２５が生成したハッシュとを連結した要約対象から、第１の画像のハッシュを生成する。このとき、生成部４２６は、第１の画像を分割して得られる複数の領域のうち取得部４２４が取得した取得した要約情報と生成部４２５が生成した要約情報とに対応する領域の位置情報に従って、第１の画像のハッシュを生成する。たとえば、生成部４２６は、取得したＭＣＵ1のハッシュ、…、生成したＭＣＵnのハッシュを連結したＪＰＥＧフレームハッシュ用対象データ１２４を設定し、ＪＰＥＧフレームハッシュ用対象データ１２４から切出・墨塗データ１１３のハッシュを生成する。なお、生成されたハッシュは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５８】
判断部４２７は、第４の領域を特定した場合、第３の領域と同一位置となる第１の領域が存在しており、かつ、第４の領域と同一位置となる第２の領域が存在しているか否かを判断する機能を有する。たとえば、判断部４２７は、検出部４２２が検出した切出・墨塗データ１１３のＭＣＵ1のＭＣＵ番号とＭＣＵハッシュ保存データ１２３に格納されている墨塗ＭＣＵ番号が同一であるかを比較する。さらに、判断部４２７は、特定部４２３が特定した切出・墨塗データ１１３のＭＣＵ2のＭＣＵ番号とＭＣＵハッシュ保存データ１２３に格納されている緩衝ＭＣＵ番号が同一であるかを比較する。なお、比較結果は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶される。
【００５９】
検証部４２８は、記憶部４２０−２から読み出した第２の画像のハッシュと生成部４２６によって生成された第１の画像のハッシュとを比較することにより、第１の画像の原本性を検証する機能を有する。たとえば、検証部４２８は、原本署名データ４３１のハッシュと切出・墨塗データ１１３のハッシュとを比較することで、切出・墨塗データ１１３の原本性を検証する。具体的に、比較結果が一致していた場合、検証部４２８は、切出・墨塗データ１１３が改ざんされていなく、原本性が保証できたという検証結果を出力する。また、比較結果が不一致である場合、切出・墨塗データ１１３が改ざんされていたという検証結果を出力する。
【００６０】
また、検証部４２８は、判断部４２７による判断結果と、第１の画像のハッシュと第２の画像のハッシュとの比較結果と、を用いて、第１の画像の正当性を検証してもよい。たとえば、同一位置でないという判断結果であった場合、検証部４２８は、切出・墨塗データ１１３が改ざんされていたという検証結果を得る。また、同一位置であるという判断結果と、一致していたという比較結果となった場合、切出・墨塗データ１１３が改ざんされていなく、原本性が保証できたという検証結果を出力する。なお、検証結果は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶されてもよいし、切出・墨塗データ１１３の原本性保証の検証要求を行った検証操作端末２０３に送信してもよい。
【００６１】
図５は、原本データに対する電子署名の生成例を示す説明図である。初めに、検証装置１０１は、原本データ１１１をハッシュ生成単位に分割する。図５では、原本データ１１１をｍ個に分割している。ここで、ｍは１以上の整数である。なお、具体的な分割方法として、検証装置１０１は、原本データ１１１を均等に分割してもよいし、分割された１つ１つのサイズが異なってもよい。
【００６２】
次に、検証装置１０１は、ハッシュ生成単位ごとにハッシュを生成する。続けて、検証装置１０１は、単位ごとのハッシュを連結したデータを署名対象として、電子署名を生成する。なお、検証装置１０１は、署名対象に署名ヘッダ５０１を連結してもよい。生成されたデータは、原本データ１１１全体に対する原本署名データ４３１となる。
【００６３】
図６は、切出データの生成例を示す説明図である。初めに、検証装置１０１は、原本データ１１１をハッシュ生成単位に分割する。次に、検証装置１０１は、切出情報６０１に基づいて、原本データ１１１から切出データ６０２を切り出す。切出情報６０１は、切出開始、切出終了という２つのフィールドを含む。図６の例では、切出情報６０１が、切出開始：２、切出終了：ｍ−１となっているため、検証装置１０１は、ハッシュ生成単位2〜ハッシュ生成単位m-1を切り出す。
【００６４】
図７は、切出データの原本性保証の検証例を示す説明図である。初めに、検証装置１０１は、切出データ６０２をハッシュ生成単位に分割し、ハッシュ生成単位ごとにハッシュを生成する。具体的に、検証装置１０１は、ハッシュ生成単位2〜ハッシュ生成単位m-1のハッシュをそれぞれ生成する。次に、検証装置１０１は、生成したハッシュと記憶してあった原本署名データ４３１の単位ごとのハッシュとを比較することで、切出データ６０２の原本性保証を検証する。
【００６５】
図８は、ＪＰＥＧデータの分離例を示す説明図である。ＪＰＥＧデータ８０１は、ＪＰＥＧフォーマットにて定義されたマーカでセグメントに分離できる。具体的なマーカとしては、たとえば、スタートマーカ、量子化テーブル定義、ハフマンテーブル定義、フレームヘッダ、スキャンヘッダ、エンドマーカ、等が存在する。
【００６６】
スタートマーカは、ＪＰＥＧデータ８０１の先頭を示している。量子化テーブル定義は、セグメント内に量子化テーブルが定義されていることを示す。ハフマンテーブル定義は、セグメント内にハフマンテーブルが定義されていることを示す。フレームヘッダは、ＪＰＥＧファイルの種類や画像サイズ等が定義されていることを示す。スキャンヘッダは画像データの前に付与される。エンドマーカは、ＪＰＥＧデータ８０１の末尾を示す。
【００６７】
検証装置１０１は、エントロピー復号を行い、画像データをＭＣＵごとに分離する。なお、続けて、逆量子化、逆ＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）を行うことで、検証装置１０１はＪＰＥＧデータ８０１を復号することができるが、ＭＣＵごとに分離するにはエントロピー復号の処理までで十分であるため、ここでは、検証装置１０１はエントロピー復号のみを行う。図８の例では、検証装置１０１は、画像データをＭＣＵ1〜ＭＣＵnに分離する。ここで、ｎは、１以上の整数である。
【００６８】
続けて、検証装置１０１は、エントロピー復号したＪＰＥＧデータ８０１を、ＪＰＥＧヘッダ部と、ＪＰＥＧデータ部に分離する。ＪＰＥＧデータ部は、ＭＣＵ1〜ＭＣＵnが含まれ、ＪＰＥＧヘッダ部には、ＪＰＥＧデータ部以外が含まれる。具体的に、ＪＰＥＧヘッダ部には、スタートマーカ〜スキャンヘッダ、エンドマーカが含まれる。
【００６９】
図９は、ＪＰＥＧデータのハッシュ生成例を示す説明図である。初めに、検証装置１０１は、ＪＰＥＧヘッダ部と、ＭＣＵ1〜ＭＣＵnごとと、に対してハッシュを生成する。具体的に、検証装置１０１は、ＪＰＥＧヘッダ部から生成されたハッシュとしてＪＰＥＧヘッダハッシュを生成する。また、検証装置１０１は、ＭＣＵ1から生成されたハッシュとして、ＭＣＵ1一時ハッシュを生成し、ＭＣＵnから算出されたハッシュとして、ＭＣＵn一時ハッシュを生成する。
【００７０】
次に、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ一時ハッシュとからＭＣＵ最終ハッシュを生成する。具体的に、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ1一時ハッシュとから、ＭＣＵ1最終ハッシュを生成する。このように、検証装置１０１はＭＣＵ一時ハッシュに対してＭＣＵ最終ハッシュを生成し、最終的に、検証装置１０１はＪＰＥＧヘッダハッシュとＭＣＵn一時ハッシュとから、ＭＣＵn最終ハッシュを生成する。
【００７１】
続けて、検証装置１０１は、ＪＰＥＧヘッダハッシュと各ＭＣＵ最終ハッシュを連結したデータをＪＰＥＧフレームハッシュ用対象データ１２２に設定し、ＪＰＥＧフレームハッシュ用対象データ１２２からＪＰＥＧフレームハッシュ１２１を生成する。なお、ＪＰＥＧフレームハッシュ用対象データ１２２に関して、ハッシュの連結の順序は、ＭＣＵ番号に従う。たとえば、検証装置１０１は、ＭＣＵ1最終ハッシュ〜ＭＣＵn最終ハッシュを、ＭＣＵ1最終ハッシュ、…、ＭＣＵn最終ハッシュ、の順序に連結する。ＪＰＥＧヘッダハッシュに関しては、ＭＣＵ1最終ハッシュの前に連結してもよいし、ＭＣＵn最終ハッシュの次に連結してもよい。なお、結合の順序に関しては、ＪＰＥＧフレームハッシュ用対象データ１２２とＪＰＥＧフレームハッシュ用対象データ１２４で同一であれば、どのように結合してもよい。
【００７２】
図１０−１、図１０−２は、ＭｏｔｉｏｎＪＰＥＧに対する電子署名の生成例を示す説明図である。図１０−１、図１０−２では、図５で説明した原本データ１１１全体に対する電子署名の生成例と図９で説明したハッシュ生成例とをＭｏｔｉｏｎＪＰＥＧに適用して、電子署名を生成する例について説明する。図１０−１、図１０−２では、原本データ１１１をＡＶＩ（Ａｕｄｉｏ  Ｖｉｄｅｏ  Ｉｎｔｅｒｌｅａｖｅ）方式のＭｏｔｉｏｎＪＰＥＧであるとし、原本データ１１１は映像、音声など複数のメディアデータを含むこととする。
【００７３】
検証装置１０１は、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧについて、フレームごとにハッシュを生成していく。図１０−１の例では、フレーム１〜フレームｍまで存在するＭｏｔｉｏｎＪＰＥＧから、フレーム２についてハッシュ生成を行っている状態を示している。
【００７４】
図１０−１で示す（１）番目の処理として、検証装置１０１は、フレーム２を、ＪＰＥＧヘッダ部とＪＰＥＧデータ部とに分離し、ＪＰＥＧヘッダ部と、ＪＰＥＧデータ部内のＭＣＵごとにハッシュを生成する。図１０−１の例では、ハッシュの演算方式として、ＳＨＡ−２５６を用いてハッシュを生成する。検証装置１０１は、ＪＰＥＧヘッダハッシュと、ＭＣＵ1一時ハッシュ〜ＭＣＵn一時ハッシュと、を生成する。
【００７５】
図１０−２で示す（２）番目の処理として、検証装置１０１は、ＪＰＥＧヘッダハッシュと各ＭＣＵ一時ハッシュとから、ＭＣＵ最終ハッシュを生成する。図１０−２の例では、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ1一時ハッシュから、ＳＨＡ−２５６を用いてＭＣＵ1最終ハッシュを生成する。同様に、検証装置１０１は、ＭＣＵ2一時ハッシュ〜ＭＣＵn一時ハッシュについても、ＳＨＡ−２５６を用いてＭＣＵ2最終ハッシュ〜ＭＣＵn最終ハッシュを生成する。
【００７６】
続けて、図１０−２で示す（３）番目の処理として、検証装置１０１は、生成されたＪＰＥＧヘッダハッシュとＭＣＵ1最終ハッシュ〜ＭＣＵn最終ハッシュとを連結したＪＰＥＧフレームハッシュ用対象データ１２２に設定する。次に、検証装置１００はＪＰＥＧフレームハッシュ用対象データ１２２からＪＰＥＧフレームハッシュ１２１を生成する。図１０−２の例では、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ1最終ハッシュ〜ＭＣＵn最終ハッシュから、ＳＨＡ−２５６を用いてＪＰＥＧフレーム２ハッシュを生成する。
【００７７】
続けて、検証装置１０１は、署名ヘッダ５０１と生成したＪＰＥＧフレーム１ハッシュ〜ＪＰＥＧフレームｍハッシュを署名対象として、署名生成処理を実行する。具体的に、検証装置１０１は、署名対象からＰＫＣＳ＃７（Ｐｕｂｌｉｃ−Ｋｅｙ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｓｔａｎｄａｒｄｓ  Ｎｏ７）形式に従った電子署名ファイルを生成する。なお、署名ヘッダ５０１のフォーマット例については、図１１にて後述する。
【００７８】
図１１は、署名ヘッダのフォーマット例を示す説明図である。署名ヘッダ５０１は、署名生成アルゴリズム種別、証明書データ、証明書データサイズ、証明書パスワード、原本データ１１１、全ＪＰＥＧデータサイズ、署名ＪＰＥＧデータ数という７つのフィールドを含む。署名生成アルゴリズム種別フィールドには、電子署名を生成するアルゴリズムが格納される。たとえば、署名生成アルゴリズム種別フィールドには、墨塗署名方式を示す“ＰＩＡＴ”といった文字列、または文字列を示すポインタが格納される。
【００７９】
証明書データフィールドには、証明書データの実体が格納される。なお、証明書データフィールドには、証明書データが格納された記憶領域のアドレスが格納されてもよい。また、証明書データとは、デジタル署名解析用の公開鍵が真正であることを証明するデータである。証明書データサイズフィールドには、証明書データのサイズが格納される。証明書パスワードフィールドには、証明書のパスワードが格納される。
【００８０】
原本データフィールドには、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧが格納される。なお、原本データフィールドには、原本データ１１１が格納された記憶領域のアドレスが格納されてもよい。全ＪＰＥＧデータサイズフィールドには、原本データ１１１に含まれるＪＰＥＧデータのサイズが格納される。署名ＪＰＥＧデータ数フィールドには、署名されたＪＰＥＧデータの個数が格納される。署名ヘッダ５０１以降には、ＪＰＥＧフレームハッシュが署名ＪＰＥＧデータ数に格納された個数分格納される。
【００８１】
図１２は、墨塗ＭＣＵおよび緩衝ＭＣＵのハッシュ保存処理例を示す説明図である。図１２では、図６で説明した切出データ６０２の生成例をＭｏｔｉｏｎＪＰＥＧに適用し、さらに、墨塗ＭＣＵ、緩衝ＭＣＵについてハッシュ保存処理を行っている。
【００８２】
検証装置１０１は、切出情報に、墨塗ＭＣＵの情報を追加した切出・墨塗ＭＣＵ情報１２０１を用いて、ＭｏｔｉｏｎＪＰＥＧからデータを切り出し、さらに、墨塗ＭＣＵに対して墨塗を行う。また、検証装置１０１は、ＭＣＵハッシュ保存データ１２３内に、切出・墨塗ＭＣＵ情報１２０１に緩衝ＭＣＵの情報を加えた切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２を追加する。なお、本実施の形態では切出・墨塗操作端末２０２が、切出・墨塗作業者の操作によって切出・墨塗ＭＣＵ情報１２０１を生成し、検証装置１０１に切出・墨塗ＭＣＵ情報１２０１を送信することとする。
【００８３】
切出・墨塗ＭＣＵ情報１２０１は、切出開始フレーム番号と、切出終了フレーム番号と、墨塗ＭＣＵ番号という３つのフィールドを含む。切出開始フレーム番号フィールドは、原本データ１１１からの切出を開始するフレーム番号が格納されている。切出終了フレーム番号フィールドは、原本データ１１１からの切出を終了するフレーム番号が格納されている。切出開始フレーム番号フィールドから切出終了フレーム番号フィールドまで指定されたフレームが、切出データとなる。墨塗ＭＣＵ番号フィールドは、切出データとなったフレーム内の、墨塗を行うＭＣＵ番号が格納されている。
【００８４】
なお、切出・墨塗ＭＣＵ情報１２０１は、墨塗を行うＭＣＵ番号が、切出データとなったフレームで全て同一であることとしている。墨塗を行うＭＣＵ番号がフレームごとで異なる場合、切出・墨塗ＭＣＵ情報１２０１は、各フレームに対する墨塗ＭＣＵ番号を保持する形態となってもよい。
【００８５】
切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２は、切出・墨塗ＭＣＵ情報１２０１が有する３つのフィールドに加え、緩衝ＭＣＵ番号フィールドを有する。緩衝ＭＣＵ番号フィールドは、墨塗ＭＣＵに基づいて特定された緩衝ＭＣＵの番号が格納される。具体的には、墨塗ＭＣＵ番号フィールドには、墨塗ＭＣＵ番号の次のＭＣＵの番号が格納される。
【００８６】
たとえば、図１２で示す切出・墨塗ＭＣＵ情報１２０１には、切出開始フレーム番号：Ｍ、切出終了フレーム番号：Ｍ＋３、墨塗ＭＣＵ番号：１、ｘ、…、が格納されている。なお、Ｍは、１以上ｍ以下の整数であり、ｘは、２以上ｎ以下の整数である。検証装置１０１は、切出開始フレーム番号フィールドと切出終了フレーム番号フィールドで指定されたフレームＭ〜フレームＭ＋３までの４つのフレームを切出データとして切り出す。
【００８７】
続けて、検証装置１０１は、切出データである４つのフレームに対して、墨塗ＭＣＵ番号フィールドで指定された墨塗ＭＣＵと、墨塗ＭＣＵから特定された緩衝ＭＣＵについて、ハッシュを生成する。具体的に、検証装置１０１は、墨塗ＭＣＵとなるＭＣＵ1と緩衝ＭＣＵとなるＭＣＵ2とのハッシュとして、ＭＣＵ1一時ハッシュとＭＣＵ2一時ハッシュとを生成する。
【００８８】
さらに、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ1一時ハッシュからＭＣＵ1最終ハッシュを生成し、ＪＰＥＧヘッダハッシュとＭＣＵ2一時ハッシュからＭＣＵ2最終ハッシュを生成する。また、ＭＣＵxも墨塗ＭＣＵに指定されているため、検証装置１０１は、墨塗ＭＣＵとなるＭＣＵxと緩衝ＭＣＵとなるＭＣＵx+1について、ＭＣＵ最終ハッシュを生成する。なお、ｘ＝２である場合、墨塗ＭＣＵは、ＭＣＵ1とＭＣＵ2となり、緩衝ＭＣＵは、ＭＣＵ3となる。
【００８９】
フレームＭの墨塗ＭＣＵと緩衝ＭＣＵのＭＣＵ最終ハッシュを生成後、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ最終ハッシュとを、ハッシュ保存対象＿フレームＭに設定し、ＭＣＵハッシュ保存データ１２３に格納する。続けて、検証装置１０１は、ハッシュ保存対象＿フレームＭ＋１〜ハッシュ保存対象＿フレームＭ＋３についても、ＭＣＵハッシュ保存データ１２３に格納する。
【００９０】
また、検証装置１０１は、ＭＣＵハッシュ保存データ１２３に、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２を加える。たとえば、図１２で示す切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２では、検証装置１０１が緩衝ＭＣＵに特定されたＭＣＵ2とＭＣＵx+1との番号として２と、ｘ＋１を緩衝ＭＣＵ番号フィールドに追加したことを示している。
【００９１】
図１３は、切出・墨塗の処理例を示す説明図である。初めに、検証装置１０１は、切出・墨塗ＭＣＵ情報１２０１を参照して、切出フレームを検索する。検索結果としてフレームＭ〜フレームＭ＋３を得た検証装置１０１は、ＭＣＵ分割を実行し、各ＭＣＵに対して修正処理を行う。具体的に、検証装置１０１は、墨塗ＭＣＵに指定されたＭＣＵに対して所定の修正処理を行い、また、緩衝ＭＣＵに対して墨塗後と墨塗前で同一の画素値となるように差分値を変更する。次に、検証装置１０１は、修正処理が行われたＭｏｔｉｏｎＪＰＥＧを、切出・墨塗データ１１３として出力する。墨塗ＭＣＵへの墨塗処理と緩衝ＭＣＵへの加工処理の算出例については、図１４にて後述する。
【００９２】
図１４は、墨塗ＭＣＵ、緩衝ＭＣＵの画素値の算出例を示す説明図である。初めに、図１４の（Ａ）では、ＭＣＵ1〜ＭＣＵ6のうち、ＭＣＵ2〜ＭＣＵ4を墨塗ＭＣＵであるとし、ＭＣＵ5を緩衝ＭＣＵであることを示している。また、ＭＣＵ内のブロックについては、図１と同様であるため、説明を省略する。
【００９３】
次に、図１４の（Ｂ）では、各ＭＣＵの墨塗前と墨塗後の画素値を示している。具体的に、図１４の（Ｂ）では、ＭＣＵの画素値として、輝度成分について示しており、墨塗した場合の輝度成分が０であることとしている。
【００９４】
輝度ＤＣ（Ｄｉｒｅｃｔ−Ｃｕｒｒｅｎｔ）成分値は、対応ブロックの画素値のうち輝度についてＤＣＴ変換し、量子化して得られた周波数成分のうち、ブロック内の左上の値である。また、輝度ＤＣ差分値は、１つ前のブロックからの周波数成分の差分値である。たとえば、ブロック２の輝度ＤＣ差分値は、ブロック１の輝度成分値からの差分値であり、ブロック５の輝度ＤＣ差分値は、ブロック４の輝度成分値からの差分値である。また、輝度ＡＣ（Ａｌｔｅｒｎａｔｉｎｇ  Ｃｕｒｒｅｎｔ）成分値は、対応ブロックの画素値のうち輝度についてＤＣＴ変換し、量子化して得られた周波数成分のうち、ブロック内の左上以外の値である。
【００９５】
また、ＪＰＥＧは、先頭のＭＣＵに関しては、成分値を有し、先頭以外のＭＣＵに関しては、差分値を有している。検証装置１０１は、ＭＣＵ分割時、エントロピー復号を行うことで、各ＭＣＵのＤＣ成分値を算出し、保持しておくことを前提としている。
【００９６】
初めに、ＭＣＵ1の輝度成分について、ＭＣＵ1は墨塗ＭＣＵと緩衝ＭＣＵのいずれでもないため、墨塗前と墨塗後で成分値、差分値が変化しない。次に、ＭＣＵ2の輝度成分について、ＭＣＵ2は墨塗ＭＣＵであるため、検証装置１０１は、ブロック５の輝度ＤＣ成分値を０に変更し、符号１４０１で示す輝度ＤＣ差分値を下記（１）式で算出した値に変更する。
【００９７】
墨塗ＭＣＵ内のブロックの輝度ＤＣ差分値＝墨塗ＭＣＵ内のブロックの輝度ＤＣ成分値−前のブロックの輝度ＤＣ成分値  …（１）
【００９８】
（１）式は、前のブロックの輝度ＤＣ成分値との和が墨塗を示す黒になるような式である。たとえば、ブロック５の輝度ＤＣ差分値は、（１）式に代入すると、以下のようになる。
【００９９】
ブロック５の輝度ＤＣ差分値＝ブロック５の輝度ＤＣ成分値−ブロック４の輝度ＤＣ成分値
⇔ブロック５の輝度ＤＣ差分値＝０−１００＝−１００
【０１００】
また、検証装置１０１は、符号１４０２で示す墨塗ＭＣＵの輝度ＡＣ成分値を、墨塗後の輝度ＤＣ成分値で指定した黒を示す値である０に変更する。また、ＭＣＵ5の輝度成分について、ＭＣＵ5は緩衝ＭＣＵであるため、検証装置１０１は、符号１４０３で示す輝度ＤＣ差分値を下記（２）式で算出した値に変更する。
【０１０１】
緩衝ＭＣＵ内のブロックの輝度ＤＣ差分値＝緩衝ＭＣＵ内のブロックの輝度ＤＣ成分値−前のブロックの輝度ＤＣ成分値  …（２）
【０１０２】
（２）式は、（１）式の墨塗ＭＣＵを、緩衝ＭＣＵに置き換えた式である。たとえば、ブロック１７の輝度ＤＣ差分値は、（２）式に代入すると、以下のようになる。
【０１０３】
ブロック１７の輝度ＤＣ差分値＝ブロック１７の輝度ＤＣ成分値−ブロック１６の輝度ＤＣ成分値
⇔ブロック１７の輝度ＤＣ差分値＝７５−０＝７５
【０１０４】
図１４では、輝度成分値について説明したが、青色色差成分値、赤色色差成分値についても、検証装置１０１は、同様の算出方法を用いる。
【０１０５】
図１５は、切出・墨塗データの検証例を示す説明図である。検証装置１０１は、切出・墨塗データ１１３の検証処理の（１）番目の処理として、切出・墨塗データ１１３となるＭｏｔｉｏｎＪＰＥＧから、先頭のフレームを取得し、ＭＣＵごとにハッシュ生成を行う。このとき、検証装置１０１は、各ＭＣＵに対して、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２を参照して、対象のＭＣＵが墨塗ＭＣＵ、または緩衝ＭＣＵである場合、ＭＣＵハッシュ保存データ１２３に格納されたＭＣＵ最終ハッシュを取得する。
【０１０６】
具体的に、図１５で示すフレームＭのＭＣＵ1、ＭＣＵ2は、それぞれ墨塗ＭＣＵ、緩衝ＭＣＵであるため、検証装置１０１は、ＭＣＵハッシュ保存データ１２３から、ＭＣＵ1最終ハッシュとＭＣＵ2最終ハッシュを取得する。また、ＭＣＵnー1は、墨塗ＭＣＵ、緩衝ＭＣＵのいずれでもないため、検証装置１０１は、取得したフレーム内のＭＣＵn-1から、ＭＣＵn-1一時ハッシュを生成する。続けて、検証装置１０１は、ＭＣＵハッシュ保存データ１２３のＪＰＥＧヘッダハッシュと、生成したＭＣＵn-1一時ハッシュとから、ＭＣＵn-1最終ハッシュを生成する。
【０１０７】
各ＭＣＵ最終ハッシュを選択、または生成し終えた検証装置１０１は、ＪＰＥＧヘッダハッシュと各ＭＣＵ最終ハッシュを連結したデータを、ＪＰＥＧフレームハッシュ用対象データ１２４に設定する。続けて、検証装置１０１は、ＪＰＥＧフレームハッシュ用対象データ１２４に対してハッシュを算出し、ＪＰＥＧフレームＭハッシュを生成する。
【０１０８】
次に、墨塗ＪＰＥＧの検証処理の（２）番目の処理として、検証装置１０１は、原本署名データ４３１に格納しているＪＰＥＧフレームＭハッシュと、生成されたＪＰＥＧフレームＭハッシュを比較して、改ざんされていないか否かを検証する。
【０１０９】
なお、対象のＭＣＵが墨塗ＭＣＵ、または緩衝ＭＣＵであるかの判断方法として、検証装置１０１は、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２を参照して判断している。他の判断方法として、検証装置１０１は、たとえば、切出・墨塗データ１１３内の対象のＭＣＵの画素値に基づいて判断してもよい。具体的には、対象のＭＣＵの画素値が、墨塗により全て黒を示す０である場合、検証装置１０１は、対象のＭＣＵを墨塗ＭＣＵとして検出し、対象のＭＣＵの次のＭＣＵを、緩衝ＭＣＵとして特定してもよい。
【０１１０】
また、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２に格納された墨塗ＭＣＵおよび緩衝ＭＣＵと、切出・墨塗データ１１３内の対象のＭＣＵの画素値にて検出された墨塗ＭＣＵおよび検出された緩衝ＭＣＵが一致するか否かを判断してもよい。一致しないと判断された場合、検証装置１０１は、切出・墨塗データ１１３が改ざんされていることを出力する。
【０１１１】
続けて、図１６〜図２０−２にて、検証装置１０１が実行する署名生成処理、切出・墨塗処理、ＭＣＵハッシュ生成処理、ＭＣＵ修正処理、切出・墨塗データの検証処理のフローチャートについて説明する。ＭＣＵハッシュ生成処理とＭＣＵ修正処理は、切出・墨塗処理から呼ばれる。
【０１１２】
署名生成処理は、たとえば、撮影装置２０１から原本データ１１１となるＭｏｔｉｏｎＪＰＥＧを受け付けた場合に実行される。切出・墨塗処理は、切出・墨塗操作端末２０２から切出・墨塗ＭＣＵ情報１２０１を受け付けた場合に実行される。なお、切出・墨塗処理の準備処理として、検証装置１０１は原本データ１１１を切出・墨塗操作端末２０２に送信し、切出・墨塗操作端末２０２は原本データ１１１を表示して、切出位置や墨塗位置を指示しやすくしてもよい。切出・墨塗データの検証処理は、検証操作端末２０３から切出・墨塗データ１１３を受け付けた場合に実行される。
【０１１３】
図１６は、署名生成処理の一例を示すフローチャートである。検証装置１０１は、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧを読み出す（ステップＳ１６０１）。次に、検証装置１０１は、ＭｏｔｉｏｎＪＰＥＧから先頭フレームを選択し（ステップＳ１６０２）、選択したフレームをＪＰＥＧヘッダ部、ＪＰＥＧデータ部に分離する（ステップＳ１６０３）。続けて、検証装置１０１は、ＪＰＥＧデータ部をエントロピー復号する（ステップＳ１６０４）。なお、検証装置１０１は、エントロピー復号により、各ＭＣＵのＤＣ成分値を算出し、保持しておく。
【０１１４】
次に、検証装置１０１は、ＪＰＥＧヘッダ部から、ＪＰＥＧヘッダハッシュを生成する（ステップＳ１６０５）。続けて、検証装置１０１は、先頭のＭＣＵを選択し（ステップＳ１６０６）、選択したＭＣＵから、ＭＣＵ一時ハッシュを生成する（ステップＳ１６０７）。次に、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ一時ハッシュとから、ＭＣＵ最終ハッシュを生成する（ステップＳ１６０８）。
【０１１５】
続けて、検証装置１０１は、全てのＭＣＵについて、ＭＣＵ最終ハッシュを生成したか否かを判断する（ステップＳ１６０９）。まだＭＣＵ最終ハッシュを生成していないＭＣＵがある場合（ステップＳ１６０９：Ｎｏ）、検証装置１０１は、次のＭＣＵを選択し（ステップＳ１６１０）、ステップＳ１６０７の処理に移行する。
【０１１６】
また、全てのＭＣＵ最終ハッシュを生成した場合（ステップＳ１６０９：Ｙｅｓ）、検証装置１０１は、ＪＰＥＧヘッダハッシュと各ＭＣＵ最終ハッシュを連結したＪＰＥＧフレームハッシュ用対象データ１２２から、ＪＰＥＧフレームハッシュを生成する（ステップＳ１６１１）。続けて、検証装置１０１は、全てのフレームについて、ＪＰＥＧフレームハッシュを生成したか否かを判断する（ステップＳ１６１２）。まだ全てのフレームについてＪＰＥＧフレームハッシュを生成していない場合（ステップＳ１６１２：Ｎｏ）、検証装置１０１は、次のフレームを選択し（ステップＳ１６１３）、ステップＳ１６０３の処理に移行する。
【０１１７】
全てのフレームについてＪＰＥＧフレームハッシュを生成した場合（ステップＳ１６１２：Ｙｅｓ）、検証装置１０１は、署名ヘッダ５０１と各ＪＰＥＧフレームハッシュから、原本署名データ４３１を生成し（ステップＳ１６１４）、署名生成処理を終了する。
【０１１８】
図１７−１、図１７−２は、切出・墨塗処理の一例を示すフローチャートである。初めに、検証装置１０１は、切出・墨塗情報を読み出す（ステップＳ１７０１）。次に、検証装置１０１は、指定された墨塗ＭＣＵから、緩衝ＭＣＵを特定する（ステップＳ１７０２）。続けて、検証装置１０１は、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧを読み出し（ステップＳ１７０３）、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧから先頭フレームを選択する（ステップＳ１７０４）。
【０１１９】
次に、検証装置１０１は、選択したフレームが切出データとなるか否かを判断する（ステップＳ１７０５）。選択したフレームが切出データか否かの判断方法としては、選択したフレームのフレーム番号が、切出・墨塗ＭＣＵ情報１２０１の切出開始フレーム番号以上であり、かつ切出終了フレーム番号以下である場合に、選択したフレームが切出データであると判断する。切出データである場合（ステップＳ１７０５：Ｙｅｓ）、検証装置１０１は、選択したフレームをＪＰＥＧヘッダ部、ＪＰＥＧデータ部に分離し（ステップＳ１７０６）、ＪＰＥＧデータ部をエントロピー復号する（ステップＳ１７０７）。なお、検証装置１０１は、エントロピー復号により、各ＭＣＵのＤＣ成分値を算出し、保持しておく。
【０１２０】
続けて、検証装置１０１は、先頭のＭＣＵを選択し（ステップＳ１７０８）、選択したＭＣＵに対して、ＭＣＵハッシュ生成処理を実行する（ステップＳ１７０９）。ＭＣＵハッシュ生成処理の詳細については、図１８にて後述する。ＭＣＵハッシュ生成処理の実行後、検証装置１０１は、全てのＭＣＵについてＭＣＵハッシュ生成処理を実行したか否かを判断する（ステップＳ１７１０）。まだＭＣＵハッシュ生成処理を実行していないＭＣＵがある場合（ステップＳ１７１０：Ｎｏ）、検証装置１０１は、次のＭＣＵを選択し（ステップＳ１７１１）、ステップＳ１７０９の処理に移行する。
【０１２１】
全てのＭＣＵについてＭＣＵハッシュ生成処理を実行した場合（ステップＳ１７１０：Ｙｅｓ）、検証装置１０１は、全てのフレームについて切出フレームか否か判断したか否かを判断する（ステップＳ１７１２）。まだ切出フレームか否か判断していないフレームがある場合（ステップＳ１７１２：Ｎｏ）、または切出データでない場合（ステップＳ１７０５：Ｎｏ）、検証装置１０１は、次のフレームを選択し（ステップＳ１７１３）、ステップＳ１７０５の処理に移行する。全てのフレームについて切出フレームか否か判断した場合（ステップＳ１７１２：Ｙｅｓ）、検証装置１０１は、図１７−２で示すステップＳ１７１４の処理に移行する。
【０１２２】
次に、図１７−２にて、ステップＳ１７１２：Ｙｅｓを通った場合、検証装置１０１は、原本データ１１１となるＭｏｔｉｏｎＪＰＥＧから先頭フレームを選択し（ステップＳ１７１４）、選択したフレームが切出データとなるか否かを判断する（ステップＳ１７１５）。切出データである場合（ステップＳ１７１５：Ｙｅｓ）、検証装置１０１は、選択したフレームをＪＰＥＧヘッダ部、ＪＰＥＧデータ部に分離し（ステップＳ１７１６）、ＪＰＥＧデータ部をエントロピー復号する（ステップＳ１７１７）。なお、検証装置１０１は、エントロピー復号により、各ＭＣＵのＤＣ成分値を算出し、保持しておく。
【０１２３】
次に、検証装置１０１は、先頭のＭＣＵを選択し（ステップＳ１７１８）、選択したＭＣＵが墨塗ＭＣＵまたは緩衝ＭＣＵか否かを判断する（ステップＳ１７１９）。墨塗ＭＣＵまたは緩衝ＭＣＵである場合（ステップＳ１７１９：Ｙｅｓ）、検証装置１０１は、ＭＣＵ修正処理を実行する（ステップＳ１７２０）。なお、ＭＣＵ修正処理の詳細は、図１９にて後述する。ＭＣＵ修正処理の処理後、または墨塗ＭＣＵまたは緩衝ＭＣＵでない場合（ステップＳ１７１９：Ｎｏ）、検証装置１０１は、全てのＭＣＵについて処理したか否かを判断する（ステップＳ１７２１）。なお、ステップＳ１７２１で示す処理とは、ステップＳ１７１９の処理のことである。
【０１２４】
まだ処理していないＭＣＵがある場合（ステップＳ１７２１：Ｎｏ）、検証装置１０１は、次のＭＣＵを選択し（ステップＳ１７２２）、ステップＳ１７１９の処理に移行する。全てのＭＣＵについて処理した場合（ステップＳ１７２１：Ｙｅｓ）、検証装置１０１は、選択したフレームを切出・墨塗データ１１３として出力する（ステップＳ１７２３）。続けて、検証装置１０１は、全てのフレームについて切出データか否か判断したか否かを判断する（ステップＳ１７２４）。
【０１２５】
まだ切出データか否か判断していないフレームがある場合（ステップＳ１７２４：Ｎｏ）、または切出データでない場合（ステップＳ１７１５：Ｎｏ）、検証装置１０１は、次のフレームを選択し（ステップＳ１７２５）、ステップＳ１７１５の処理に移行する。全てのフレームについて切出データか否か判断した場合（ステップＳ１７２４：Ｙｅｓ）、検証装置１０１は、切出・墨塗処理を終了する。
【０１２６】
なお、墨塗ＭＣＵの位置情報に関して、検証装置１０１は、たとえば、ステップＳ１７１２：Ｙｅｓとなった場合、切出・墨塗ＭＣＵ情報１２０１を、ＭＣＵハッシュ保存データ１２３に追加してもよい。または、検証装置１０１は、ＭＣＵハッシュ生成処理の内部にて処理を行ってもよい。後者の例については、図１８にて説明する。
【０１２７】
図１８は、ＭＣＵハッシュ生成処理の一例を示すフローチャートである。検証装置１０１は、選択したＭＣＵが墨塗ＭＣＵ、または緩衝ＭＣＵか否かを判断する（ステップＳ１８０１）。墨塗ＭＣＵ、または緩衝ＭＣＵのいずれでもない場合（ステップＳ１８０１：Ｎｏ）、検証装置１０１は、ＭＣＵハッシュ生成処理を終了する。
【０１２８】
選択したＭＣＵが墨塗ＭＣＵ、または緩衝ＭＣＵのいずれかである場合（ステップＳ１８０１：Ｙｅｓ）、検証装置１０１は、ＪＰＥＧヘッダ部から、ＪＰＥＧヘッダハッシュを生成し（ステップＳ１８０２）、選択したＭＣＵから、ＭＣＵ一時ハッシュを生成する（ステップＳ１８０３）。次に、検証装置１０１は、ＪＰＥＧヘッダハッシュとＭＣＵ一時ハッシュとから、ＭＣＵ最終ハッシュを生成する（ステップＳ１８０４）。続けて、検証装置１０１は、ＭＣＵ最終ハッシュをＭＣＵハッシュ保存データ１２３に格納する（ステップＳ１８０５）。
【０１２９】
さらに、検証装置１０１は、ＭＣＵハッシュ保存データ１２３内の切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２に、選択したＭＣＵ番号を追加し（ステップＳ１８０６）、ＭＣＵハッシュ生成処理を終了する。なお、検証装置１０１は、選択したＭＣＵが墨塗ＭＣＵであれば、墨塗ＭＣＵ番号フィールドに選択したＭＣＵの番号を追加し、選択したＭＣＵが緩衝ＭＣＵであれば、緩衝ＭＣＵ番号フィールドに選択したＭＣＵの番号を追加する。
【０１３０】
なお、ステップＳ１８０２の処理で示したＪＰＥＧヘッダハッシュの生成は、ＭＣＵによらず常に同一値が生成されるため、検証装置１０１は、ステップＳ１８０２の処理を、ステップＳ１７１６、またはステップＳ１７１７の次に行っておいてもよい。
【０１３１】
また、墨塗ＭＣＵの位置情報に関して、検証装置１０１は、たとえば、ステップＳ１８０４の処理後、ＭＣＵ最終ハッシュの前または後ろに、ＭＣＵ番号を追加する処理を加えてもよい。
【０１３２】
図１９は、ＭＣＵ修正処理の一例を示すフローチャートである。検証装置１０１は、選択したＭＣＵの種別を確認する（ステップＳ１９０１）。墨塗ＭＣＵである場合（ステップＳ１９０１：墨塗ＭＣＵ）、検証装置１０１は、選択したＭＣＵに対して、所定の修正処理を実行する（ステップＳ１９０２）。なお、所定の修正処理は、たとえば、墨塗処理であってもよいし、モザイク処理であってもよいし、ぼかし処理であってもよい。
【０１３３】
また、ステップＳ１９０２の処理は、切出・墨塗操作端末２０２が行ってもよい。この場合、ステップＳ１９０１：墨塗ＭＣＵとなった後、検証装置１０１は、修正許可通知を切出・墨塗操作端末２０２に送信し、切出・墨塗操作端末２０２は、選択したＭＣＵに対して、所定の修正処理を実行する。処理の終了後、切出・墨塗操作端末２０２は、編集後の画素値を、検証装置１０１に送信する。修正処理の実行後、検証装置１０１は、選択したＭＣＵ内のブロックのＤＣ差分値を、選択したＭＣＵ内のブロックのＤＣ成分値−前のブロックのＤＣ成分値に変更する（ステップＳ１９０３）。変更後、検証装置１０１は、ＭＣＵ修正処理を終了する。
【０１３４】
緩衝ＭＣＵである場合（ステップＳ１９０１：緩衝ＭＣＵ）、検証装置１０１は、選択したＭＣＵ内のブロックのＤＣ差分値を、選択したＭＣＵ内のブロックのＤＣ成分値−前のブロックのＤＣ成分値に変更し（ステップＳ１９０４）、検証装置１０１は、ＭＣＵ修正処理を終了する。
【０１３５】
図２０−１、図２０−２、図２０−３は、切出・墨塗データの検証処理の一例を示すフローチャートである。初めに、図２０−１にて、検証装置１０１は、原本署名データ４３１を読み出す（ステップＳ２００１）。続けて、検証装置１０１は、ＭＣＵハッシュ保存データ１２３を読み出す（ステップＳ２００２）。次に、検証装置１０１は、検証対象である、切出・墨塗データ１１３となるＭｏｔｉｏｎＪＰＥＧを受け付ける（ステップＳ２００３）。
【０１３６】
続けて、検証装置１０１は、切出・墨塗データ１１３となるＭｏｔｉｏｎＪＰＥＧから先頭フレームを選択し（ステップＳ２００４）、選択したフレームをＪＰＥＧヘッダ部、ＪＰＥＧデータ部に分離する（ステップＳ２００５）。次に、検証装置１０１は、ＪＰＥＧデータ部をエントロピー復号する（ステップＳ２００６）。なお、検証装置１０１は、エントロピー復号により、各ＭＣＵのＤＣ成分値を算出し、保持しておく。続けて、検証装置１０１は、ＭＣＵハッシュ保存データから、ＪＰＥＧヘッダハッシュを取り出す（ステップＳ２００７）。次に、検証装置１０１は、先頭のＭＣＵを選択し（ステップＳ２００８）、図２０−２で示すステップＳ２００９の処理に移行する。
【０１３７】
次に、図２０−２で示すように、検証装置１０１は、選択したフレームの選択したＭＣＵの画素値が特定の画素値か否かを判断する（ステップＳ２００９）。特定の画素値である場合（ステップＳ２００９：Ｙｅｓ）、検証装置１０１は、選択したＭＣＵを墨塗ＭＣＵとして検出する（ステップＳ２０１０）。続けて、検証装置１０１は、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２の墨塗ＭＣＵ番号フィールドから、未取得の番号のうち最も小さい番号を取得する（ステップＳ２０１１）。ステップＳ２０１１の処理について、墨塗ＭＣＵ番号フィールドが図１２で示す状態であれば、検証装置１０１は、１回目の処理では１を取得し、２回目の処理では、１は取得済みであるためｘを取得する。
【０１３８】
特定の画素値でない場合（ステップＳ２００９：Ｎｏ）、検証装置１０１は、一つ前のＭＣＵが墨塗ＭＣＵとして検出されたか否かを判断する（ステップＳ２０１２）。一つ前のＭＣＵが墨塗ＭＣＵとして検出された場合（ステップＳ２０１２：Ｙｅｓ）、検証装置１０１は、選択したＭＣＵを緩衝ＭＣＵとして特定する（ステップＳ２０１３）。続けて、検証装置１０１は、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２の緩衝ＭＣＵ番号フィールドから、未取得の番号のうち最も小さい番号を取得する（ステップＳ２０１４）。ステップＳ２０１４の処理について、緩衝ＭＣＵ番号フィールドが図１２で示す状態であれば、検証装置１０１は、１回目の処理では２を取得し、２回目の処理では、２は取得済みであるためｘ＋１を取得する。
【０１３９】
ステップＳ２０１１、またはステップＳ２０１４の処理終了後、検証装置１０１は、取得した番号が、選択したＭＣＵの番号と一致するか否かを判断する（ステップＳ２０１５）。なお、ステップＳ２０１１、ステップＳ２０１４にて、未取得の番号が存在しない場合、検証装置１０１は、ステップＳ２０１５：Ｎｏの処理を実行する。取得した番号が選択したＭＣＵの番号と一致する場合（ステップＳ２０１５：Ｙｅｓ）、検証装置１０１は、ＭＣＵハッシュ保存データから、選択したＭＣＵに対応するＭＣＵ最終ハッシュを取得する（ステップＳ２０１６）。
【０１４０】
一つ前のＭＣＵが墨塗ＭＣＵとして検出されていない場合（ステップＳ２０１２：Ｎｏ）、検証装置１０１は、選択したＭＣＵから、ＭＣＵ一時ハッシュを生成する（ステップＳ２０１７）。続けて、検証装置１０１は、取り出したＪＰＥＧヘッダハッシュとＭＣＵ一時ハッシュから、ＭＣＵ最終ハッシュを生成する（ステップＳ２０１８）。ステップＳ２０１６、またはステップＳ２０１８の処理終了後、検証装置１０１は、全てのＭＣＵについて判断したか否かを判断する（ステップＳ２０１９）。なお、ステップＳ２０１９で示す処理とは、ステップＳ２００９の処理のことである。まだ処理していないＭＣＵがある場合（ステップＳ２０１９：Ｎｏ）、検証装置１０１は、次のＭＣＵを選択し（ステップＳ２０２０）、ステップＳ２００９の処理に移行する。
【０１４１】
全てのＭＣＵについて処理を行った場合（ステップＳ２０１９：Ｙｅｓ）、検証装置１０１は、切出・墨塗ＭＣＵ・緩衝ＭＣＵ情報１２０２の墨塗ＭＣＵ番号フィールドおよび緩衝ＭＣＵ番号フィールドに、未処理のＭＣＵ番号が存在するか否かを判断する（ステップＳ２０２１）。取得した番号と選択したＭＣＵの番号が一致しない場合（ステップＳ２０１５：Ｎｏ）、または未処理のＭＣＵ番号がある場合（ステップＳ２０２１：Ｙｅｓ）、検証装置１０１は、切出・墨塗データが改ざんされていることを出力する（ステップＳ２０２２）。出力後、検証装置１０１は、検証処理を終了する。また、未処理のＭＣＵ番号がない場合（ステップＳ２０２１：Ｎｏ）、検証装置１０１は、図２０−３で示すステップＳ２０２３の処理に移行する。
【０１４２】
なお、ステップＳ２０１５：Ｎｏとなる場合としては、たとえば、切出・墨塗データ１１３の各ＭＣＵのうち、悪意のある第三者によって新たに墨塗されたＭＣＵがある場合である。この場合、検証装置１０１は、ステップＳ２０１０の処理では、新たに墨塗されたＭＣＵを検出するが、墨塗ＭＣＵ番号フィールドには、新たに墨塗されたＭＣＵの番号は格納されていないため、ステップＳ２０１５：Ｎｏを実行することになる。
【０１４３】
またステップＳ２０１５：Ｎｏとなる場合としては、切出・墨塗データ１１３の各ＭＣＵのうち、悪意のある第三者によって墨塗ＭＣＵが改ざんされた場合である。具体的に図１の例で示すと、切出・墨塗データ１１３のＭＣＵ1が、たとえば他の人物に差し替えられた場合である。選択したＭＣＵがＭＣＵ1である時点では、検証装置１０１は、ステップＳ２０１２：Ｎｏを実行する。次のＭＣＵを選択していった結果、選択したＭＣＵが墨塗となった場合、検証装置１０１は、ステップＳ２０１１にて墨塗ＭＣＵ番号として１を取得し、番号が不一致となるため、ステップＳ２０１５：Ｎｏを実行することになる。
【０１４４】
なお、選択したＭＣＵが墨塗とならずに、ステップＳ２０１９：Ｙｅｓを実行した場合でも、墨塗ＭＣＵ番号フィールドに未取得の番号が存在することになるため、検証装置１０１は、ステップＳ２０２１：Ｙｅｓとなるため、改ざんを検出することができる。
【０１４５】
また、切出・墨塗データ１１３の各ＭＣＵのうち、悪意のある第三者によって緩衝ＭＣＵが墨塗されても、検証装置１０１は、ステップＳ２０１５：Ｎｏを実行することになる。具体的に、緩衝ＭＣＵが墨塗された場合、検証装置１０１は、ステップＳ２００９：Ｙｅｓを実行することになるが、墨塗ＭＣＵ番号フィールドには、緩衝ＭＣＵの番号は格納されていないため、ステップＳ２０１５：Ｎｏを実行することになる。
【０１４６】
最後に、図２０−３で示すように、未処理のＭＣＵ番号がない場合（ステップＳ２０２１：Ｎｏ）、検証装置１０１は、ＪＰＥＧヘッダハッシュと各ＭＣＵ最終ハッシュを連結したＪＰＥＧフレームハッシュ用対象データ１２４から、ＪＰＥＧフレームハッシュを生成する（ステップＳ２０２３）。次に、検証装置１０１は、生成したＪＰＥＧフレームハッシュと原本署名データ内の選択したフレームに対応するＪＰＥＧフレームハッシュとを比較する（ステップＳ２０２４）。続けて、検証装置１０１は、比較結果が一致を示したか否かを判断する（ステップＳ２０２５）。
【０１４７】
一致を示した場合（ステップＳ２０２５：Ｙｅｓ）、検証装置１０１は、切出・墨塗データ１１３の全てのフレームについて比較したか否かを判断する（ステップＳ２０２６）。なお、ステップＳ２０２６で示す比較とは、ステップＳ２０２４の処理のことである。まだ比較していないフレームがある場合（ステップＳ２０２６：Ｎｏ）、検証装置１０１は、次のフレームを選択し（ステップＳ２０２７）、ステップＳ２００５の処理に移行する。全てのフレームについて比較した場合（ステップＳ２０２６：Ｙｅｓ）、検証装置１０１は、切出・墨塗データ１１３が改ざんされていないという原本性を保証できたことを出力し（ステップＳ２０２８）、検証処理を終了する。一致を示していない場合（ステップＳ２０２５：Ｎｏ）、検証装置１０１は、切出・墨塗データ１１３が改ざんされていることを出力し（ステップＳ２０２９）、検証処理を終了する。
【０１４８】
以上説明したように、検証方法、検証装置、および検証プログラムによれば、検証対象画像内の墨塗ＭＣＵと墨塗ＭＣＵから特定された緩衝ＭＣＵについて、原本画像の同位置となるＭＣＵの修正前のハッシュを用いて検証対象画像のハッシュを生成して検証する。
【０１４９】
これにより、検証装置は、検証墨塗領域が複数ある検証対象画像のハッシュと、原本画像のハッシュと、の一度の比較にて検証を行うことができ、検証を迅速に行うことができる。また、検証装置は、原本画像や検証対象画像を分割した各領域のハッシュを連結した要約対象に対して、ハッシュ関数を実行して原本画像や検証対象画像のハッシュを生成して比較する。なお、検証装置は、各領域のハッシュを連結した要約対象を比較することで検証することも可能である。この場合、各領域のハッシュを連結した要約対象と要約対象から生成されたハッシュでは、後者のデータサイズの方が小さく、比較にかかる時間が短縮するため、検証装置は、検証を迅速に行うことができる。
【０１５０】
また、検証装置は、検証対象画像を分割した領域のうち、特定の画素値となっているＭＣＵを墨塗ＭＣＵとし、墨塗ＭＣＵから特定したＭＣＵを緩衝ＭＣＵとして、墨塗ＭＣＵの領域と特定した緩衝ＭＣＵを、原本のハッシュを用いるＭＣＵとしてもよい。これにより、検証装置は、悪意のある第三者によって検証対象画像の墨塗ＭＣＵが改ざんされた場合、原本のハッシュを用いずに検証対象の画像のＭＣＵから生成されるハッシュを用いるため、原本のハッシュと一致しなくなり、改ざんを検出する。このように、検証装置は、墨塗ＭＣＵが改ざんされている場合でも改ざんを検出でき、改ざんの有無と検証結果が一致しているため、原本性の検証精度を向上できる。ここで、検証精度とは、改ざんの有無と検証結果との一致の割合を示している。
【０１５１】
また、検証装置は、特定の画素値となっていた墨塗ＭＣＵと同一位置に、記憶領域に記憶されている墨塗ＭＣＵが存在し、かつ、墨塗ＭＣＵから特定した緩衝ＭＣＵと同一位置に、記憶領域に記憶されている緩衝ＭＣＵが存在するか判断してもよい。これにより、検証装置は、悪意のある第三者によって墨塗ＭＣＵおよび緩衝ＭＣＵ以外が改ざんされた場合、各ＭＣＵのハッシュから検証対象画像のハッシュを生成せずとも改ざんしていることが判断できるため、検証を迅速に行うことができる。ハッシュ生成処理は処理量が多いため、ハッシュ生成を行わずに検証結果が得られた場合、検証装置は、検証結果をより速く検証者に提供することができる。
【０１５２】
また、検証装置は、マルチメディアデータに対し原本性が保証できるようになり、撮影装置で撮影された監視映像など証拠性が重要視される映像について、重要シーンを切出加工したストリームデータについて証拠性が保持されていることが証明できる。また、検証装置は、ＪＰＥＧヘッダ部も含めてハッシュを生成しているため、ＪＰＥＧヘッダ部に改ざんがあった場合、改ざんを検出することができる。
【０１５３】
なお、本実施の形態で説明した検証方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１５４】
１０１  検証装置
１１１  原本データ
１１３  切出・墨塗データ
１２３  ＭＣＵハッシュ保存データ
４２０−１、４２０−２  記憶部
４２１  受付部
４２２  検出部
４２３  特定部
４２４  取得部
４２５、４２６  生成部
４２７  検証部
４３１  原本署名データ
【図１】
0005807537.tif 000002
【図２】
0005807537.tif 000003
【図３】
0005807537.tif 000004
【図４】
0005807537.tif 000005
【図５】
0005807537.tif 000006
【図６】
0005807537.tif 000007
【図７】
0005807537.tif 000008
【図８】
0005807537.tif 000009
【図９】
0005807537.tif 000010
【図１０−１】
0005807537.tif 000011
【図１０−２】
0005807537.tif 000012
【図１１】
0005807537.tif 000013
【図１２】
0005807537.tif 000014
【図１３】
0005807537.tif 000015
【図１４】
0005807537.tif 000016
【図１５】
0005807537.tif 000017
【図１６】
0005807537.tif 000018
【図１７−１】
0005807537.tif 000019
【図１７−２】
0005807537.tif 000020
【図１８】
0005807537.tif 000021
【図１９】
0005807537.tif 000022
【図２０−１】
0005807537.tif 000023
【図２０−２】
0005807537.tif 000024
【図２０−３】
0005807537.tif 000025