はじめに
ここではJpegAnalyzerを使ってデジタルカメラ画像の加工の有無を見分ける方法を解説します。
写真のデジタル化に伴い、多様な加工修正が出来るようになりました。
今では、撮影時に写っていないものを写っているように見せたり、写ったものを消したりする事が簡単に出来るようになっています。
お遊びで加工する分は問題無いのですが、証拠、証明写真に限ってはそのような加工は詐欺行為につながります。
実際に、電子納品などでは画像ファイルの一切の加工を禁じられるようになったりしています。
どのようなセキュリティシステムにも必ず幾つかの穴(セキュリティホール)が有るように、完璧に改ざんを見分ける事は出来ないかもしれません。
ただ、画像加工ツールを使った場合、何らかの痕跡が残ります。
以下に、加工を行った場合の違いを何点か挙げますので、総合的に判断して加工の有無を判断して下さい。
Exif解析リストでのチェックポイント
Exifタグの構成の違い
メーカー純正ソフトやPhotoshopなどではタグ0131や0132が追加されたり書き換わったりします。
以下リストを見比べ、Exifタグの構成の違いを見て下さい。
カメラからJPEG出力したファイル
00000014-00000085 0th IFD Tag-9 Next IFD 00001190 (Value-00001184)
00000016 010F メーカー名 Canon
00000022 0110 モデル名 Canon EOS 5D
0000002E 0112 画像方向 先頭の行が上、列が左(回転なし)
0000003A 011A 画像の幅の解像度 72
00000046 011B 画像の高さの解像度 72
00000052 0128 画像の幅と高さの解像度の単位 インチ(dpi)
0000005E 0132 ファイル変更日時 2005:09:09 09:55:34
0000006A 0213 YCCの画素構成(YとCの位置) 一致
00000076 8769 Exif IFDへのポインタ 000000D0 (Value-000000C4)
Photoshopで現像/加工したファイル
00000026-000000A3 0th IFD Tag-10 Next IFD 000003D2 (Value-000003B4)
00000028 010F メーカー名 Canon
00000034 0110 モデル名 Canon EOS 5D
00000040 0112 画像方向 先頭の行が上、列が左(回転なし)
0000004C 011A 画像の幅の解像度 72
00000058 011B 画像の高さの解像度 72
00000064 0128 画像の幅と高さの解像度の単位 インチ(dpi)
00000070 0131 使用ソフトウェア名 Adobe Photoshop CS Windows
0000007C 0132 ファイル変更日時 2006:03:22 00:07:34
00000088 0213 YCCの画素構成(YとCの位置) 一致
00000094 8769 Exif IFDへのポインタ 000000F6 (Value-000000D8)
純正ソフトで現像/加工したファイル(Canon純正DPPの場合)
00000014-0000009D 0th IFD Tag-11 Next IFD 000001D4 (Value-000001C8)
00000016 0106 画素構成 RGB
00000022 010F メーカー名 Canon
0000002E 0110 モデル名 Canon EOS 5D
0000003A 0112 画像方向 先頭の行が上、列が左(回転なし)
00000046 011A 画像の幅の解像度 350
00000052 011B 画像の高さの解像度 350
0000005E 0128 画像の幅と高さの解像度の単位 インチ(dpi)
0000006A 0131 使用ソフトウェア名 Digital Photo Professional
00000076 0132 ファイル変更日時 2006:03:14 18:12:38
00000082 0213 YCCの画素構成(YとCの位置) 中心
0000008E 8769 Exif IFDへのポインタ 000000A0 (Value-00000094)
Exif日付タグの時間差
通常、以下の3つのタグはカメラからJPEG出力した場合、ほとんど差がありません。
日付が違ったり時間にかなり差がある場合、加工された画像と言えます。
0th IFD 0132 ファイル変更日時
Exif IFD 9003 現画像データの生成日時
Exif IFD 9004 デジタルデータの生成日時
メーカーノートのデータ化け、抜け
上記のExif構成や日時を書き換えた痕跡を残さず書き換えるソフトもあります。
しかし、メーカーノートについてはそれらのソフトでも痕跡を残す場合が多いです。
これについてはJpegAnalyzerのヘルプ、「メーカーノートについて」で詳しく説明しています。
画像の回転
私の知る限り、カメラ内部で画像を回転して出力出来る機種はありません。
通常、カメラの画像は横長ですので、主画像やサムネイルが縦長になっていたら加工されていると判断して良いと思います。
※Mamiya ZDや携帯電話のカメラなど、基本が縦長の機種も存在します。
JPEG解析リストでのチェックポイント
JPEG構成の違い
カメラから直接出力した画像ファイルとJPEG解析画面を見比べて、異なるセグメントが無いか見分けて下さい。
オリジナルと判る画像が手元に無い場合、メーカーサイトやレビューサイトでサンプル画像をダウンロードするなりしてオリジナル画像と対象画像をJpegAnalyzerで比較してみて下さい。
但し、それらのサイトでも必ずオリジナル画像を掲示しているとは限りません。
複数のサイトの画像を比較したり、ケースバイケースで判断して下さい。
【COMセグメント】
加工ソフトの情報を記録している場合があります。
通常カメラから直接出力したJPEGファイルにはCOMセグメントは有りません。
【APPセグメント】
カメラから直接出力したものではAPP1(Exif)とAPP2(FlashPix)が記録されます。
最近はAPP2(FlashPix)を記録する機種は少なくなっています。
高級なものではAPP2(ICC Profile)を出力出来るものも有ります。
それ以外のAPPセグメントが有る場合、加工したソフトの情報が記録されている場合があります。
【SOFセグメント】
Exifの仕様からSOF0(ベースライン)固定です。
サンプリング比はExif規定では4:2:2か4:2:0で、カメラの画像サイズ、圧縮率設定で切り替わる場合があります。
一般には間引きの少ない4:2:2が用いられます。
JPEGテーブルの違い
Exif規格ではDQT/DHTのそれぞれ1つのセグメントに複数のテーブルをまとめて記録することになっています。
JpegAnalyzerは代表的な画像ソフトのテーブルを識別したり、ハッシュコードにより比較が容易です。
DQTについて
カメラの画質/圧縮率の設定で変化し、メーカー、機種によって変化する傾向が異なります。
代表的な例として、Canonでは画質設定で機種固定のテーブルを出力します。
NikonではファイルサイズをDQTにより調整する為に、撮るたびにテーブルは異なります。
輝度用1つ、色差用を1つまたは2つ使いますが、両方が特定ソフトと同じテーブルになる事はありません。
但し、IJGのテーブルは一部のカメラで使われており、両方がIJGの同画質で出力されるものがあります。
例1
000010DE [0043] DQT :Define Quantization Table
000010E2 QT0-8bit IJG輝度 画質96
00001123 [0043] DQT :Define Quantization Table
00001127 QT1-8bit IJG色差 画質96
テーブル毎にセグメントが分かれており、加工したものと判断出来る
例2
00006730 [0084] DQT :Define Quantization Table
00006734 QT0-8bit Photoshop輝度 画質12 小(IR100)
00006775 QT1-8bit Photoshop色差 画質12 小
輝度、色差とも同じ画質のソフト名テーブルが使われているので、加工したものと判断出来る
例3
0000978E [0084] DQT :Define Quantization Table
00009792 QT0-8bit CRC-7E2D87F3
000097D3 QT1-8bit IJG色差 画質97
色差はソフト名のテーブルであるが、他は異なるので他に痕跡が無ければ未加工のもの
DHTについて
汎用テーブルを使う旨DCF規格で規定されています。
例1
00009827 [01A2] DHT :Define Huffman Table
0000982B HT0-DC 汎用輝度HT-DC
00009848 HT0-AC 汎用輝度HT-AC
000098FB HT1-DC 汎用色差HT-DC
00009918 HT1-AC 汎用色差HT-AC
汎用テーブルで1つのセグメントに記録されており、他に痕跡が無ければ未加工のもの
例2
0000755A [00EC] DHT :Define Huffman Table
0000755E HT0-DC CRC-07E9BB82
0000757B HT0-AC CRC-15158765
000075DB HT1-DC CRC-D8999FFB
000075F6 HT1-AC CRC-9EE2085A
汎用テーブルではないので加工されたもの
このようにCRCコードで表示されるものはハフマンコードの最適化処理がされている場合が多い
例3
00005FEF [01A2] DHT :Define Huffman Table
00005FF3 HT0-DC Photoshop輝度DC HT 中画質
00006010 HT1-DC Photoshop色差DC HT 中画質
0000602D HT0-AC Photoshop輝度AC HT 中画質
000060E0 HT1-AC Photoshop色差AC HT 中画質
Photoshopの出力するテーブルが使われており、明らかにカメラから出力されたものと異なる
例4
00003388 [001D] DHT :Define Huffman Table
0000338C HT0-DC CRC-C5DE8A81
000033A7 [004A] DHT :Define Huffman Table
000033AB HT0-AC CRC-269CABD7
000033F3 [001C] DHT :Define Huffman Table
000033F7 HT1-DC CRC-9D6AEFE1
00003411 [003B] DHT :Define Huffman Table
00003415 HT1-AC CRC-E203E8B4
汎用テーブルでなくセグメントも分かれているので、ソフトで加工されたもの
参考
メーカーによってはオリジナルかどうかを検証出来るツールが有ります。
オリジナルデータ確認キット DVK-E2(Canon EOSシリーズ用)
画像真正性検証ソフトウエア (Nikon D2Xs用)