暇人じゃない
Camera

Content Credentials を記録した DNG ファイルの EXIF を書き換えると Lightroom Classic で読み取りエラーが発生する

環境

  • Leica M11-P: 2.6.1
  • ExifTool: 13.55
  • Lightroom Classic: 15.5.1

Content Credentials とは

Leica の M11-P や SL3-P など、一部のモデルには Content Credentials という機能が搭載されている。

Content Credentials とは、コンテンツに「誰が、いつ、どのように作成したか」を書き込むことで来歴を記録し、検証できる仕組み。これによってコンテンツの真正性と完全性を確かめられる。画像のピクセルデータやメタデータが改変された場合、検証ツールで改ざんされたことが分かる。

C2PA という業界団体が作成したオープンな規格を利用しているので、他のカメラメーカーなどが作った検証ツールを利用できる。

Leica の場合は、撮影日時や EXIF、作者情報、画像データなどをアサーションとして記録する。各データのハッシュ値をまとめた C2PA クレームに対し、ハードウェアのセキュアエレメントに内蔵された秘密鍵でデジタル署名を生成する。検証時には、対応する電子証明書 (リーフ証明書) を使って署名を確認する。

Leica 以外では、Nikon や Canon、Sony も対応している機種があるようだ。例えば Nikon Z6III に Content Credentials が搭載されている。こちらは Nikon Imaging Cloud で発行された電子証明書をカメラにインポートする方式。2025/09 頃に多重露出機能を使うとそのカメラで撮影していない画像に署名できてしまう問題が発見され、「ニコン真正性サービス」は記事公開時点では一時停止中となっている。

ExifTool で DNG の EXIF を書き換えると読み取りエラーが発生する

自分は Leica 以外のレンズを使うことがあり、DNG (RAW ファイル) を PC に取り込んだ後で ExifTool で EXIF のレンズ情報を書き換えることがある。

例えばこんな感じ (実際には LensMake, LensModel, LensInfo, FocalLength, FocalLengthIn35mmFormat を書き換えている):

exiftool -overwrite_original -LensModel="..." file.DNG

ExifTool で EXIF を書き換えて Lightroom Classic に読み込むと「この写真の読み取り中に Lightroom に問題が発生しました。」というエラーが発生する。

Lightroom Classic のエラーメッセージ
Lightroom Classic のエラーメッセージ

この状態でも現像はできるが、設定のコピー・ペーストなど、一部の操作ができなくなるので不便だし、「!」マークが表示されているのは気持ちが悪い。

読み取りエラーの原因を調べる

DNG は TIFF の規格 (TIFF 6.0) をベースに拡張されたフォーマット。

Content Credentials の検証に必要な署名・アサーション・証明書チェーンをまとめた「C2PA マニフェスト」は JUMBF (JPEG Universal Metadata Box Format) 形式のデータとして、TIFF のタグ (0xcd41) に格納される。

ExifTool で EXIF を書き換える前のダンプを確認すると、数十 KB のデータが格納されている:

$ exiftool -v3 file.DNG | grep -A2 "Tag 0xcd41"
  |     - Tag 0xcd41 (34816 bytes, undef[34816]):
  |      220ca00: 00 00 88 00 6a 75 6d 62 00 00 00 1e 6a 75 6d 64 [....jumb....jumd]
  |      220ca10: 63 32 70 61 00 11 00 10 80 00 00 aa 00 38 9b 71 [c2pa.........8.q]

DNG はデータをオフセットで管理する。 ExifTool は DNG にタグを書き込むと、全体のメタデータを再構築するためオフセットを再計算する。

今回の環境では、EXIF の書き換え後に JUMBF タグのデータが 34,816 バイトから 1 バイト (0x31) に変わっていた。

$ exiftool -v3 file.DNG | grep -A2 "Tag 0xcd41"
  |     - Tag 0xcd41 (1 bytes, undef[1]):
  |         0276: 31                                              [1]
  | + [JUMBF directory]

たちが悪いのは、JUMBF タグが中途半端に残っていること。 JUMBF タグを削除すると Lightroom Classic のエラーが解消することから、壊れた JUMBF データの解析に失敗していると考えられる。

対処法

これを解消するには JUMBF タグごと削除する。

以下は ExifTool で JUMBF タグを削除しつつ、EXIF のレンズ情報を書き換える例:

exiftool -overwrite_original -JUMBF:all= -LensModel="..." file.DNG

JUMBF データを削除するので正常に読み込めるようになる。もちろん Content Credentials は消える。 将来的に JUMBF データをハンドリングできるようになったとしても、EXIF を書き換えているので検証は失敗するはず。

JPEG はどうなのか

JPEG では EXIF と C2PA マニフェストが別々のセグメントに格納されている。 今回試したファイルでは、ExifTool で EXIF を書き換えても C2PA マニフェストは保持されていた。

Lightroom Classic で読み取りエラーは発生しなかったが、検証サイトでデータをチェックすると「There are unrecorded changes to this asset since Content Credentials were applied. (このアセットに Content Credentials が適用されてから、記録されていない変更が加えられている。)」と表示される。


自分が所持しているモデルはリーフ証明書の有効期限が 2034/08 なのだけど、これは将来更新されるのか気になるところ。