AI 圖片 metadata:證據到底寫在哪裡
Metadata 不是單一位置,而是好幾層,分清楚是哪一層才知道一項發現值多少。一個圖片或影片檔可能同時帶有簽章過的 C2PA manifest、描述性的 EXIF 與 XMP 欄位、存放生成參數的 PNG 文字區塊,以及 MP4/MOV 容器層的紀錄。它們記錄的內容不同、被竄改的難度不同,在傳播過程中消失的速度也不同。以下依照解析器實際讀取的順序逐層說明。
直接答案:先看簽章來源,再看描述性欄位
先讀 C2PA manifest,因為那是唯一能用密碼學驗證完整性的一層。接著看 EXIF 與 XMP,平台名稱和 AI 標籤常出現在這裡,但任何人都能改寫。PNG 文字區塊是 Stable Diffusion 生態存放提示詞與工作流的地方,影片則由容器欄位擔任同樣角色。簽章之下的每一層都只是線索,不是證明。
各層對應的實際樣本
| Adobe Firefly JPEG | 簽章層:有效的 C2PA manifest 宣告 digitalSourceType = trainedAlgorithmicMedia,因憑證不在信任清單而顯示為 valid 而非 trusted。 |
|---|---|
| ComfyUI / Stable Diffusion XL PNG | PNG 文字層:prompt 與 workflow 區塊保留了節點圖與生成參數,全部未經簽章。 |
| Google Veo MP4 | 容器層:憑證與工具欄位存放在 ISO base media 的 box 結構中,而非圖片的 marker segment。 |
可檢查的來源線索
| EXIF | 相機時代的標準。Software、Artist、UserComment 有時帶有工具名稱或 AIGC 的 JSON 標籤;相機欄位整批缺失本身也算是弱線索。 |
|---|---|
| XMP | Adobe 主導的 XML metadata。CreatorTool、Credit、DigitalSourceType 是原始檔還在時最可能標示生成工具的欄位。 |
| C2PA | 簽章層,序列化為 JUMBF 後依格式嵌入:JPEG 的 APP11 段、PNG 的專屬 chunk、MP4 的 box。 |
| PNG 文字區塊 | tEXt、iTXt、zTXt 接受任意的鍵值字串,所以提示詞、seed、sampler 與完整 workflow JSON 都寫在這裡,而不是 EXIF。 |
| MP4 / MOV 容器 | ftyp brand、box tree、udta/meta/ilst、encoder、tool、software 欄位,以及 AIGC 字串與碼流中的 SEI marker。 |
為什麼生成參數不寫在 EXIF 裡?
EXIF 是為相機設計的:光圈、快門、ISO、鏡頭,欄位都是固定的。一段多行提示詞或一份序列化的節點圖,在那個結構裡根本沒有位置可放,所以 Stable Diffusion 生態改用 PNG 文字區塊,因為它接受任意鍵值字串。這是這個領域最常見的誤解——搜尋「ComfyUI EXIF」或「PNG info」的人,要找的幾乎都是文字區塊而不是相機標籤。實務上的影響很直接:只解析 EXIF 的工具,在一個其實塞滿可讀證據的檔案上會顯示為空。
每一層消失的速度不一樣
各層的脆弱程度不同,知道順序才能正確解讀「查不到」這個結果:
- 聊天軟體:PNG 文字區塊最先消失,XMP 大部分欄位與 EXIF 的 GPS 資訊也跟著不見。
- 社群平台轉碼:EXIF、C2PA manifest、XMP CreatorTool 與所有生成參數通常一次清空。
- 截圖與錄影:原始檔完全不留,只剩下截圖工具自己寫入的 metadata。
- 重新匯出或另存新檔:溯源欄位被丟棄,新軟體還可能覆蓋上無關的 EXIF。
不用把檔案交出去也能讀 metadata
Metadata 檢查本質上是對你手上既有的位元組做唯讀操作,技術上沒有任何理由需要上傳。AICheck365 以編譯成 WebAssembly 的 Rust 在本機解析 EXIF、XMP、C2PA、PNG chunk 與 MP4 box,工作文件和私人照片都留在自己的裝置上。這也代表結果不需要往返伺服器就會出現,而大型影片的處理上限取決於你的硬體,而不是上傳限制。
逐層讀取一個檔案
- 從原始檔開始 — 使用工具匯出或平台下載當下的檔案,因為之後的每一份副本都會少掉幾層。
- 先檢查簽章層 — 確認有沒有 C2PA manifest,讀出它的簽章狀態、信任狀態與宣告的 digitalSourceType。
- 再讀 EXIF 與 XMP — 查看 Software、CreatorTool、Credit、DigitalSourceType 與 UserComment 是否留有工具名稱或 AI 標籤,並記得這些沒有簽章。
- 打開 PNG 文字區塊 — PNG 檔要讀 tEXt/iTXt/zTXt,看提示詞、seed、sampler、CFG、模型與 workflow JSON。
- 影片則走容器 — 讀 ftyp、box tree 與 udta/meta/ilst 的 encoder 與 tool 欄位,再看碼流裡有沒有 SEI marker。
檢測邊界
- 除了有效的 C2PA 簽章之外,每一層都可以被編輯、移除,或複製到無關的檔案上。
- 分享、轉碼、截圖與重新匯出會以不同速度清掉這些層,通常從 PNG 文字區塊開始。
- 沒有 metadata 不代表是人類創作,只代表這份副本沒有留下可讀的內容。
- 不同工具與版本的欄位名稱有差異,不是每個值都能整理成一致的標籤。
想一次讀完所有層就用完整檢測;已經知道要看哪一層時,直接開對應的工具。
常見問題
AI 工具的 metadata 到底寫在哪裡?
看工具和格式。簽章過的來源紀錄放在 C2PA manifest,描述性的工具名稱在 EXIF 與 XMP,生成參數和工作流在 PNG 文字區塊,影片層級的資訊則在 MP4 或 MOV 容器裡。
為什麼 EXIF 裡找不到 AI 資訊?
因為大多數生成參數本來就不寫在那裡。EXIF 存的是相機導向的標籤,提示詞、seed 與 workflow 寫進 PNG 文字區塊,需要另外解析才讀得到。
AI metadata 可以偽造嗎?
除了有效的 C2PA 簽章之外,每一層都能被編輯或複製到別的檔案。這正是簽章狀態與信任狀態要和描述性欄位分開呈現的原因。
線上讀 metadata 安全嗎?
在這裡檔案不會離開你的裝置:解析在瀏覽器內執行,不需要上傳,也不會留存任何內容。
資料來源與驗證紀錄
- AICheck365 公開樣本紀錄 — 樣本來源、測試日期、觀察到的訊號與已知限制。
- W3C PNG 第三版規格 — PNG chunk 與文字區塊格式的標準參考。
- C2PA Technical Specification 2.2 — manifest 結構以及各格式如何嵌入憑證。
- IPTC Digital Source Type 詞彙 — trainedAlgorithmicMedia 等受控值的定義。
- AICheck365 檢測方法 — 各層的權重與呈現方式。