指南

图片来源核查术语表

报告和指南里出现的所有名词与缩写,从 APP1 到 XMP,写出全称,每个用几句话讲清楚。

一份报告里会出现很多东西:段、块、清单、断言、信任锚。这一页把它们各解释一次,按你遇到它们的场合分组。术语用粗体,每个缩写第一次出现时在括号里给出英文全称。每节末尾链接到讲得更深的指南。

结论与报告

  • 来源(Provenance) — 一张图从哪来、之后经历了什么:相机拍的、模型生成的、程序编辑过的,或者这几种的组合。本站做的一切都是在尝试从文件本身读出来源。
  • 结论(Verdict) — 报告顶部的一句话。按优先级选出:有效或无效的内容凭证,高于元数据里的自述;自述高于矛盾;矛盾高于普通的相机 EXIF;相机 EXIF 高于什么都没说的元数据。
  • 发现(Finding) — 一条带等级(信息、提示、警告)的观察。报告 = 结论 + 发现;结论由发现推出,反过来不成立。
  • AI(Artificial Intelligence,人工智能)信号 — 一类特定的发现:某个字段、文本块或清单声明了这张图是模型生成的。报告会同时给出信号本身和读到它的确切位置,例如 XMP DigitalSourceType 或 PNG tEXt "parameters"。
  • 自述(Self-declared) — 文件在未签名的明文元数据里对自己的描述。任何程序都能写入或抹掉,所以自述只能证明某个工具写过什么,不能证明发生过什么。
  • 在内容凭证里声明 — 写在签了名的 C2PA 清单里。签名验证通过且签名者可信时,这句话在签名之后就不可能被改过。
  • 矛盾(Inconsistent) — 元数据各部分互相打架时给出的结论。这是「先剥掉元数据、再手工重新打标」留下的指纹。见下文 EXIF 与 XMP 的几条发现。
  • 剥离(Stripped) — 元数据被删除。多数社交平台和聊天软件上传时都会这么做,「去 EXIF」工具也是。被剥离的文件无法从元数据判断任何事。
  • 重新打标(Re-labelled) — 在原元数据被删除后再写上一套,让文件看起来像另一种东西。通常以矛盾的形式被发现。
  • 段表(Segment map) — JPEG、PNG、WebP 报告底部的表,按顺序列出文件里的每个块及其偏移和长度。带来源信息的块会被标出。
  • SHA-256(Secure Hash Algorithm,安全哈希算法,256 位) — 一种密码学哈希:文件字节的定长指纹。报告显示它,是为了让两个人能确认看的是同一个文件。改动一个字节,整个哈希就不同。

容器:字节是怎么排的

  • 容器(Container) — 包着像素和元数据的文件格式:JPEG、PNG、WebP 等。每种格式存元数据的方式不同,所以同一个 EXIF 块在 JPEG 里叫「APP1 段」,在 PNG 里叫「eXIf 块」。
  • JPEG(Joint Photographic Experts Group,联合图像专家组) — 最常见的照片格式,以制定它的委员会命名。一个 JPEG 是一串段(segment),每段由两字节的**标记(marker)**引出。
  • SOI / EOI(Start Of Image / End Of Image,图像开始 / 图像结束) — JPEG 的第一个和最后一个标记。EOI 之后的数据会被查看器忽略,是经典的藏东西的地方。
  • APPn 段(Application segment,应用段 n) — APP0 到 APP15,JPEG 元数据都住在这里。哪个标准用哪个号是约定俗成,格式本身不管。
  • APP0 JFIF(JPEG File Interchange Format,JPEG 文件交换格式) — 基础的 JPEG 头:版本、像素密度,有时带缩略图。几乎每个 JPEG 都有,不含来源信息。
  • APP1 EXIF(Exchangeable Image File Format,可交换图像文件格式) — 存放 EXIF(见下)的段。相机和手机写它。
  • APP1 XMP(Extensible Metadata Platform,可扩展元数据平台) — 存放 XMP 的段。XMP 太大时会溢出到 APP1 XMP ext(extended XMP,扩展 XMP)段,需要拼回去。
  • APP2 ICC(International Color Consortium,国际色彩联盟) — 色彩配置文件,大了会拆成几个 APP2 段。说的是怎么解释颜色值,和来源无关。
  • APP2 MPF(Multi-Picture Format,多图格式) — 同一文件内嵌的额外图像索引,通常是手机的大预览图或深度图。有些手机的元数据在这里。
  • APP11(JPEG XT) — JPEG XT(JPEG eXTensions,JPEG 扩展,即 ISO/IEC 18477 系列;IEC 是 International Electrotechnical Commission,国际电工委员会,与 ISO 联合发布标准)用来放盒装数据的段号。C2PA 也用它,所以 APP11 C2PA 指内容是 C2PA JUMBF 盒子的 APP11 段,可能拆在几个段里,按序号拼回。
  • APP13 Photoshop IRB(Image Resource Block,图像资源块)/ IPTC(International Press Telecommunications Council,国际新闻电讯委员会) — Photoshop 的资源块。历史上 IPTC 的说明和版权字段存在这里,Photoshop 至今还写。
  • APP14 Adobe — Adobe 编码器写的一小段,描述颜色变换。它的存在说明文件某个时刻经过了 Adobe 的库。
  • COM(comment,注释) — 自由文本注释段。有些生成器把参数写在这里。
  • 扫描数据(scan data) — 压缩后的像素本身,从第一个 **SOS(Start Of Scan,扫描开始)**标记到 EOI。
  • PNG(Portable Network Graphics,便携式网络图形) — 无损格式,由**块(chunk)**组成:四个字母的类型、长度、数据、**CRC(cyclic redundancy check,循环冗余校验)**校验值。首字母小写的块是可选的,不认识它的工具可以随手丢掉。
  • PNG 签名 — 每个 PNG 开头固定的八个字节。
  • IHDR / IDAT / IEND(image header / image data / image end,图像头 / 图像数据 / 图像结束) — 必需的三种块:头(尺寸、位深)、图像数据、文件结束。
  • tEXt / iTXt / zTXt — PNG 文本块:一个关键字加一个值。tEXt 是 Latin-1(ISO 8859-1)编码,iTXt 是国际化文本,用 **UTF-8(Unicode Transformation Format,8 位)**且可压缩,zTXt 是 zlib 压缩的 Latin-1。Stable Diffusion、ComfyUI、NovelAI 把生成参数写在这里,PNG 里的 AIGC 标识通常也在这里。
  • eXIf — 2017 年标准化的、用来装 EXIF 块的 PNG 块。老工具会把 EXIF 塞进文本块。
  • iCCP(ICC profile,ICC 配置文件) — 装 ICC 色彩配置文件的 PNG 块。
  • caBX — C2PA 规范注册的、用来在 PNG 里装 JUMBF 盒子的四字母块类型。它是块名,没有官方的全称展开。报告里的 caBX C2PA 表示找到了这个块并解析成了清单库。
  • WebP — Google 的图像格式,源自 VP8 视频编码器。WebP 是 **RIFF(Resource Interchange File Format,资源交换文件格式)**文件:一个头加一串四字母名的块。VP8 和 VP8L(VP8 lossless,无损)装图像数据;VP8X(VP8 extended,扩展)是声明后面跟哪些可选块的头。EXIF、XMP、ICCP(ICC profile,ICC 配置文件)块装对应的数据;C2PA 块装 JUMBF 盒子。
  • HEIC / AVIF / TIFF / GIF — 本站只读它们的 EXIF 和 XMP,不做逐段解析的格式。**HEIC(High Efficiency Image Container,高效图像容器)**和 **AVIF(AV1 Image File Format,AV1 图像文件格式;AV1 即 AOMedia Video 1,它所存储的编码格式)**是 ISO 基础媒体文件格式容器,和 MP4(MPEG-4 Part 14;MPEG 是 Moving Picture Experts Group,动态图像专家组)同一家族。**TIFF(Tagged Image File Format,标签图像文件格式)**是 EXIF 本身效仿的格式。**GIF(Graphics Interchange Format,图形交换格式)**几乎不带元数据。

延伸阅读:元数据在文件里的位置、元数据为什么会消失。

元数据标准

  • 元数据(Metadata) — 和像素存在一起的、关于图片的数据:什么时候拍的、什么相机、什么参数、最后哪个程序保存的。显示图片不需要它们,所以删掉也看不出变化。
  • EXIF(Exchangeable Image File Format,可交换图像文件格式) — 相机和手机记录拍摄细节的标准:Make 和 Model、曝光、镜头、DateTimeOriginal、方向、GPS,以及 Software(最后写文件的程序)。它是从 TIFF 借来的二进制结构。编辑器要么保留、要么改写、要么丢弃。EXIF 里没有任何东西是签过名的。
  • DateTimeOriginal — EXIF 的拍摄时间,本地时间,不带时区。和 XMP 的创建时间比对来发现不一致。
  • Software — EXIF 里记录最后写文件的程序的标签。这里出现生成器的名字是 AI 信号;出现编辑器的名字就只是编辑器。
  • XMP(Extensible Metadata Platform,可扩展元数据平台) — Adobe 的元数据标准,用 **XML(Extensible Markup Language,可扩展标记语言)**写成,现在是 **ISO(International Organization for Standardization,国际标准化组织)**标准 ISO 16684。存 EXIF 的那些事实,外加编辑信息:CreatorTool(程序)、CreateDate 和 ModifyDate,以及编辑历史。文本、未签名,每个 Adobe 产品保存时都会重写。
  • CreatorTool — XMP 里记录创建文件的程序的字段。和 EXIF Software 比对;历史诚实的文件里两者通常一致。
  • XMP 历史(History) — xmpMM:History(MM 即 Media Management,媒体管理),一串编辑事件,每条带软件代理(software agent)、动作和时间。一个文件声称派生自另一个(DerivedFrom)却没有历史,就可疑。
  • DerivedFrom — XMP 里指向「本文件由哪个文档派生而来」的字段。导出的编辑稿上有它正常,相机原片上有它没意义。
  • Document ID / Instance ID(identifier,标识符) — Adobe 产品分配给一个文档和它每次保存版本的 XMP 标识符。有了它们,历史条目才能对应到具体的保存。
  • IPTC(International Press Telecommunications Council,国际新闻电讯委员会) — 新闻行业的图片元数据规范:说明、署名、版权,以及 2023 年起的 DigitalSourceType 字段。
  • DigitalSourceType — IPTC 字段,存在 XMP 里,声明图片是怎么产生的。值为 trainedAlgorithmicMedia 意思是「由训练过的 AI 模型创建」。Adobe Firefly、DALL·E 等都会写。它是明文元数据里最接近行业标准的 AI 标记,但依然只是文本。
  • ICC(International Color Consortium,国际色彩联盟)配置文件 — 色彩配置文件。告诉软件如何转换文件的颜色值来显示。和来源无关,不过配置文件的描述里可能写着嵌入它的程序名。
  • GPS(Global Positioning System,全球定位系统) — EXIF 里的位置字段。作为一条发现列出,因为分享出去的照片很少需要带着它。

延伸阅读:EXIF 基础、XMP 与编辑历史、元数据是怎么伪造的。

C2PA 与内容凭证

  • C2PA(Coalition for Content Provenance and Authenticity,内容来源与真实性联盟) — 一个行业组织(Adobe、微软、Google、索尼、尼康、徕卡、OpenAI 等),也是它发布的、用于签名来源数据的开放技术规范的名字。
  • CAI(Content Authenticity Initiative,内容真实性倡议) — Adobe 牵头的社区,推广 C2PA 并运营公开的 Verify 网站。
  • 内容凭证(Content Credentials) — 附在文件上的 C2PA 数据面向用户的名字。报告说「包含内容凭证」,意思是找到了 C2PA 清单库。
  • 清单(Manifest) — 一条签了名的来源记录:谁做了这个版本、用什么工具、做了哪些操作、派生自什么。被支持 C2PA 的工具编辑过几次的文件会带几个清单。
  • 清单库(Manifest store) — 装着文件全部清单的容器。物理上是 APP11、caBX 或 WebP C2PA 块里的一个 JUMBF 盒子。
  • 活动清单(Active manifest) — 最新的那个清单,描述文件当前的样子。只有它的硬绑定应该和当前字节匹配;更早的清单由后来清单的成分记录覆盖。
  • 声明(Claim) — 清单的核心:一个 CBOR 结构,按哈希列出各断言、声明生成器,以及对签名的引用。签名是对声明的字节算的。
  • 声明生成器(Claim generator) — 生成清单的软件,写在声明里。报告把它作为工具名显示。
  • 断言(Assertion) — 清单内的一条陈述。标准断言包括 c2pa.actions(做了什么)、c2pa.hash.data(硬绑定)、c2pa.ingredient(由什么做成)、stds.schema-org.CreativeWork(作者和版权)。
  • 动作(Action) — 动作断言里的一条:c2pa.created、c2pa.edited、c2pa.opened、c2pa.placed 等。创建动作带 trainedAlgorithmicMedia 的数字来源类型(digital source type),就是清单声明 AI 生成的方式;digitalCapture 则声明相机拍摄。
  • 成分(Ingredient) — 记录「另一个素材参与了本文件」的断言,若该素材有清单则带其哈希。一连串编辑靠成分记录保持可验证。
  • JUMBF(JPEG Universal Metadata Box Format,JPEG 通用元数据盒子格式) — C2PA 使用的盒状二进制容器,定义在 ISO/IEC 19566-5。盒子可嵌套:一个**超级盒(superbox)**里有描述盒(jumd)和内容盒,如 cbor、json 或 bidb(binary data box,二进制数据盒)。
  • CBOR(Concise Binary Object Representation,简明二进制对象表示) — 类 JSON 数据的紧凑二进制编码,定义在 RFC 8949。声明和多数断言都是 CBOR。
  • JSON(JavaScript Object Notation,JavaScript 对象表示法) — 明文的数据格式,CBOR 是它的二进制表亲。有些断言和 AIGC 标识是 JSON。
  • COSE(CBOR Object Signing and Encryption,CBOR 对象签名与加密)/ COSE_Sign1 — 建立在 CBOR 上的签名格式,定义在 RFC 9052。COSE_Sign1 是 C2PA 用的单签名者结构:受保护头(算法、证书链)、载荷(声明)、签名字节。
  • X.509 证书 — 公钥证书的标准格式,以定义它的 ITU-T(International Telecommunication Union, Telecommunication Standardization Sector,国际电信联盟电信标准化部门)建议书编号命名:一个公钥、持有者名称、为其背书的颁发者名称、有效期、颁发者的签名。签名证书随 COSE 头里的 x5chain(X.509 chain,X.509 证书链)一起放在文件里。
  • 证书链 — 签名用的(叶子)证书、颁发它的中间证书,一直到根。每一环都通过用下一张证书的公钥验证这一张的签名来检查。
  • 信任锚(Trust anchor) — 验证者决定无需进一步证明就信任的证书。链能到达信任锚,签名者的身份就算确立。
  • 信任列表(Trust list) — 信任锚的集合。C2PA 发布一份官方列表,收录它审核过的证书机构和签名者。「签名有效,签名者未知」意思是数学上没问题,但链没有到达列表里的任何一项,自制证书就是这种情况。
  • 签名有效 — 对声明的 COSE 签名用叶子证书的公钥验证通过。证明清单在签名后没被改过。它本身不证明是谁签的。
  • 硬绑定(Hard binding) — c2pa.hash.data 里的哈希,对排除了清单库本身的文件算出来。匹配则说明签名后像素没变,且这份清单属于这个文件。图片被重新编码或被不支持 C2PA 的工具编辑过,这项就会失败。
  • 软绑定(Soft binding) — 能经受重新编码的绑定,比如看不见的水印或感知指纹,用于在清单被剥离后把它找回来。本站不评估软绑定。
  • 断言哈希 — 每条断言都算哈希,声明里列出这些哈希。验证它们可以证明没有人在有效声明底下偷换断言。
  • 时间戳(sigTst,signature timestamp,签名时间戳) — 可选的 RFC 3161(Request for Comments 3161,可信时间戳的互联网标准)令牌,由时间戳机构签发,证明签名在某个时刻已经存在。报告只报有无,本版本不验证。
  • 验证失败 / 部分验证 — 「失败」指四项检查(签名、硬绑定、断言哈希、证书链)之一结果为否。「部分验证」指某项检查无法完成,例如哈希算法不支持,报告会说明是哪一项。
  • Verify 网站 — verify.contentauthenticity.org,CAI 的公开核查工具。可以当第二意见,它用的信任列表和本站相同。

延伸阅读:什么是 C2PA、怎样验证 C2PA。

AI 生成器留下的痕迹

  • 生成参数 — 生成器用的提示词、模型、种子、采样器和各项设置,由希望图片可复现的工具写进文件。有它是很强的 AI 信号;没有它不说明任何事。
  • Stable Diffusion(SD) — 开源图像模型家族。它最常见的几个前端把参数写进 PNG 文本块。SDXL 即 Stable Diffusion XL,2023 年的大模型版本。
  • Stable Diffusion WebUI(AUTOMATIC1111、A1111) — 经典的网页前端,以作者的网名命名,A1111 是缩写。写一个 parameters 文本块:提示词,然后一行 Negative prompt:,然后 Steps: ..., Sampler: ..., Model: ...。报告会提取其中的模型名。
  • ComfyUI(Comfy User Interface) — 节点图前端。写两个文本块:prompt(JSON 形式的节点图)和 workflow(编辑器布局)。
  • NovelAI — 托管的、偏动漫的生成服务。写 Software: NovelAI,外加一个装 JSON 参数的 Comment 块,描述里常有「Stable Diffusion」字样。
  • Midjourney — 托管的生成服务。下载的图带 XMP,描述里是提示词,一个 Midjourney 专有字段里是 Job ID(一个 UUID,universally unique identifier,通用唯一标识符),另有 Creator 字段写用户名。
  • DALL·E / OpenAI — OpenAI 的图像模型;名字是画家达利(Dalí)和机器人瓦力(WALL·E)的合成词,不是缩写。近期的输出带一份署名 OpenAI 的 C2PA 清单,动作断言里是 trainedAlgorithmicMedia;早期的 DALL·E 3 文件只有 DigitalSourceType。
  • Adobe Firefly — Adobe 的生成器。写 C2PA 清单和 IPTC DigitalSourceType。
  • Google Imagen / Gemini — Google 的模型。输出带看不见的 SynthID 水印,部分渠道还带 C2PA 元数据或 IPTC 标记。
  • FLUX、Ideogram、Leonardo.Ai、Recraft、Krea、Runway、InvokeAI、Fooocus、Microsoft Designer、LiblibAI — 其它生成器和前端。它们的名字出现在任何元数据字段里,都被当作 AI 来源的声明。
  • 通义万相、即梦 / 豆包、可灵、文心一格、混元 — 国内的生成服务。元数据里出现它们的名字是 AI 信号;2025 年 9 月起,它们的输出应当带下文所述的 AIGC 隐式标识。
  • 看不见的水印 — 嵌在像素里而不是元数据里的信号,设计上能经受裁剪、重新编码和截图。SynthID 是 Google 的,别家也有。它们需要厂商的检测器,从元数据读不到,所以本站看不见它们。

延伸阅读:Stable Diffusion 的元数据、Midjourney 的元数据、OpenAI 图片的元数据、看不见的水印。

AIGC 标识规定

  • AIGC(AI-Generated Content,人工智能生成内容) — 监管和行业对生成式模型产出的文字、图片、音频、视频的统称。
  • 《标识办法》 — 《人工智能生成合成内容标识办法》,由国家网信办(CAC,Cyberspace Administration of China)会同另外三个部门发布,2025 年 9 月 1 日起施行。要求生成服务给输出打标,传播平台保留并展示标识。
  • GB 45438-2025 — 规定怎么打标的强制性国家标准:《网络安全技术 人工智能生成合成内容标识方法》。GB 是「国标」的拼音首字母,所有国家标准的编号前缀。与《标识办法》同日生效。
  • TC260(Technical Committee 260,第 260 号技术委员会) — 全国网络安全标准化技术委员会,起草标准并发布实践指南,其中一份专门讲元数据里的标识。
  • 显式标识 — 人能感知的标识:图片上可见的文字或角标,音频里的提示音。
  • 隐式标识 — 写进文件元数据、供机器读取的标识。实际上是一个 JSON 对象,放在 XMP 字段、PNG 文本块或 JPEG 注释里。
  • Label: "AIGC" — 隐式标识固定的第一个字段。报告会在文件的每个文本载体里搜索含有它的 JSON 对象。
  • ContentProducer — 生成该内容的服务的名称或代码。
  • ProduceID — 该服务给这条内容的编号。
  • ContentPropagator / PropagateID — 传播该内容的平台及其编号,平台在上传时重写标识时填入。
  • ReservedCode1 / ReservedCode2 — 标准预留给将来使用的字段。

延伸阅读:AIGC 隐式标识长什么样。

密码学,简单说

  • 哈希(Hash) — 把任意数据变成定长指纹的单向函数。相同输入得到相同哈希;输入一变,哈希就面目全非。C2PA 的各种绑定用 SHA-256 及其亲属。
  • 数字签名 — 用私钥对数据哈希算出的值,持有对应公钥的任何人都能检验。证明数据没被改,且是私钥持有者签的。
  • 公钥 / 私钥 — 一对密钥的两半。私钥用来签,保密;公钥用来验,公开在证书里。
  • CA(certificate authority,证书机构) — 核实申请者身份后颁发证书的组织。信任列表里装的就是 CA 的根证书。
  • 自签名证书 — 用自己的私钥给自己签的证书。任何人几秒钟就能做一张,所以它不证明身份,只证明签证书和签数据的是同一把钥匙。
  • RFC(Request for Comments,请求意见稿) — 互联网标准发布时所用的编号文档;本页提到的 RFC 3161(时间戳)、RFC 8949(CBOR)、RFC 9052(COSE)都是。
  • TSA(time-stamping authority,时间戳机构) — 按 RFC 3161 把哈希和当前时间一起签名的服务,用来证明某个签名早于某一时刻。
  • 有效期 — 证书应当被使用的起止日期。用过期证书签的清单会被报告出来;这是否要紧,取决于有没有时间戳证明签名时证书还在有效期内。