C2PA 是什么?
普通元数据(EXIF、XMP)的问题是谁都能改:一行 exiftool 命令就能把"Midjourney"改成"Canon EOS R5"。C2PA(Coalition for Content Provenance and Authenticity)解决的就是这个问题——它把内容的来源记录做成带数字签名的 manifest 嵌进文件,改动任何一个字节,签名校验就会失败。这让它成为目前 AI 内容溯源里唯一具备防篡改能力的方案。
它是怎么来的
C2PA 不是凭空出现的。2019 年 Adobe 牵头发起了 CAI(Content Authenticity Initiative),同期 BBC 和微软在做面向新闻业的 Project Origin,两边解决的是同一个问题。2021 年初,两个项目的技术路线合并,在 Linux 基金会旗下成立了 C2PA 联盟,制定统一的开放规范。创始成员包括 Adobe、Arm、BBC、Intel、Microsoft、Truepic;OpenAI、Google、Sony 等是后来加入的,目前成员早已过百。规范本身完全公开,参考实现 c2pa-rs(Rust)在 GitHub 上开源——AICheck365 命令行版的完整 C2PA 解析用的就是这个库。
技术结构:manifest、claim、assertion、签名
一个 C2PA 记录的层级是这样的:文件里嵌一个 manifest store,里面可以装多个 manifest(每次编辑追加一个,形成链);每个 manifest 包含若干 assertion(断言,描述内容的具体事实)、一个把这些断言绑定起来的 claim,以及对 claim 的 COSE 数字签名和签名方的 X.509 证书链。
对 AI 检测来说,最有价值的是这几处:
claim_generator / claim_generator_info:生成这条记录的软件。Google 系生成图写的是 Google C2PA Core Generator Library,OpenAI 的图会出现 OpenAI 相关标识。
c2pa.actions 断言(新版本是 c2pa.actions.v2):记录内容经历了什么操作。AI 生成对应 c2pa.created 动作,其中的 digitalSourceType 字段直接声明来源类型,softwareAgent 记录执行操作的软件。
签名时间戳和证书链:判断记录是谁签的、什么时候签的。
digitalSourceType:判断 AI 来源的核心字段
这个字段的取值来自 IPTC 的受控词表,C2PA 和 XMP/IPTC 用的是同一套。和 AI 相关的有六个值,证据强度并不一样:
| 取值 | 含义 | 证据强度 |
|---|---|---|
| trainedAlgorithmicMedia | 完全由训练算法(即 AI 模型)生成 | 高 |
| compositeWithTrainedAlgorithmicMedia | 包含 AI 生成成分的合成内容(如 AI 修图) | 高 |
| compositeSynthetic | 包含合成元素 | 高 |
| algorithmicMedia | 算法生成,但不一定经过模型训练(如分形图) | 中 |
| dataDrivenMedia | 数据驱动生成(如数据可视化) | 中 |
| trainedAlgorithmicData | AI 生成的数据 | 中 |
manifest 实际存在文件的哪里
C2PA 数据用 JUMBF(JPEG Universal Metadata Box Format,ISO/IEC 19566-5)容器封装,不同文件格式有不同的嵌入位置,这部分细节在多数介绍文章里都被略过了,但对理解检测原理很关键:
JPEG:放在 APP11 段(标记字节 0xFFEB)。JPEG 单段最大 64KB,而带证书链的 manifest 经常超过这个大小,所以规范定义了分段机制:每段 payload 以 JP 两个字符开头,跟着 2 字节的 box 实例号和 4 字节的序列号,序列号为 1 的段在偏移 24 处能看到 c2pa 标识。读取时要按实例号和序列号把多个 APP11 段重新拼接成完整的 JUMBF 块——AICheck365 的浏览器版就实现了这个重组逻辑。
PNG:放在专用的 caBX chunk 里(也有用 caBI 的)。PNG chunk 自带 4 字节长度字段,没有 64KB 限制,所以通常一个 chunk 就装下了。遍历 chunk 链表、按类型名匹配即可定位。
MP4/MOV:放在 uuid box 中。视频的 manifest 一般出现在文件头部区域,扫描前几 MB 就能覆盖。
哪些平台在写 C2PA?
截至 2026 年中的大致情况(平台行为会变,以实测为准):
| 平台/工具 | 状态 | 备注 |
|---|---|---|
| OpenAI DALL-E 3 / Sora | 支持 | 图片自 2024 年初起带 C2PA,Sora 部分导出带 |
| Adobe Firefly | 支持 | 创始成员,Content Credentials 全线打通 |
| Microsoft Bing Image Creator | 支持 | 含 Copilot 图像生成 |
| Google Imagen / Gemini | 部分入口支持 | 同时使用 SynthID 像素水印;不同产品入口行为不一致 |
| Midjourney | 不支持 | 写 XMP(CreatorTool、DigitalSourceType),无签名 |
| Stable Diffusion / ComfyUI | 默认不支持 | 本地生成无平台私钥可签;参数走 PNG 文本块 |
| Leica M11-P、部分 Sony 相机 | 支持 | 反方向应用:拍摄时机内签名,证明"是真照片" |
完整验证 vs 快速扫描:一个该说清楚的区别
"检测 C2PA"其实有两个深度档位,混为一谈容易产生误解:
完整验证解析整个 manifest store,校验 COSE 签名、证书链和信任列表,能给出"这条记录由某机构签发、未被篡改"的结论。c2patool 和 contentcredentials.org/verify 做的是这个。
快速扫描(AICheck365 浏览器版的做法)是在本地定位 JUMBF 块后,在 manifest 字节里做文本级匹配:找 digitalSourceType 的六个 AI 取值、匹配已知工具名清单、识别 Google 凭证链路的特征字符串。命中 trainedAlgorithmicMedia 记高置信度,命中已知工具名记高置信度,只命中 Google + C2PA 关联特征记中等。这个档位足够回答"这文件有没有 AI 来源声明",但它不验证签名——如果你需要法律或新闻场景的可信结论,请走完整验证。
局限性:C2PA 不能做什么
把 C2PA 当万能解药会失望,它的边界很清楚:
防篡改,不防剥离。把 APP11 段或 caBX chunk 整个删掉,文件照常打开,记录无声消失。截图、社交平台转码、多数修图软件的"另存为"都会造成这种剥离。
只能证有,不能证无。没有 C2PA 的图片可能是真照片,也可能出自不写 C2PA 的工具,或者被洗过元数据。
覆盖不了不合作的生成方。本地跑 Stable Diffusion 的人不会给自己的图签 AI 标记。
"有签名"不等于"可信"。验证时要看签名方是谁,任何人都能用自己的证书签 manifest。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








Looks19
