2026 年,几乎每一家主流生成式 AI 都在被问同一个问题:怎么证明这张图不是 AI 做的?
目前最像答案的东西叫 C2PA(Coalition for Content Provenance and Authenticity,内容来源与真实性联盟),对外品牌叫 Content Credentials。Adobe、Microsoft、Google、Meta、OpenAI 在内的 6000 多家组织加入了推动它的内容真实性倡议(CAI)。
但独立测试给出了一个很难看的数字:把一张带 C2PA 凭据的图传到 Instagram、X、TikTok、LinkedIn、WhatsApp,凭据全部被剥离。
这篇文章讲清楚三件事:C2PA 在密码学上到底做了什么、为什么它在第一道坎上就失败了、以及现在工程上真正能落地的组合方案长什么样。
一、问题的起点:我们需要的到底是"检测"还是"溯源"
先把两件常被混为一谈的事拆开:
| 检测(detection) | 溯源(provenance) | |
|---|---|---|
| 问的问题 | 这个文件是不是合成的? | 这个文件从哪来、经过了谁的手? |
| 手段 | 统计特征、频域伪影、模型指纹 | 密码学签名 + 链式记录 |
| 失败模式 | 误报、跨生成器泛化差、随生成器进步而失效 | 元数据被剥离、签名方不可信 |
| 谁声明 | 验证方推测 | 生成方声明 |
C2PA 属于后者。这个区分极其重要:C2PA 是一个"声明 + 验签"系统,不是一个"测谎仪"。
它的价值主张是:既然检测永远追不上生成,那就换个思路------让每一个环节在产生内容时主动签名,把来源记进文件本身。
二、原理:三层结构,一次哈希绑定
2.1 Manifest 是怎么搭起来的
一个 C2PA 凭据(Manifest)由三层组成:
arduino
┌─ Assertions(断言)
│ 对内容的一条条陈述:用了什么模型/相机、做了什么编辑、
│ 创作者身份、时间、GPS、是否用了 AI(c2pa.ai_generated)
│
├─ Claim(声明)
│ 一组断言的结构化集合
│ + 把整个 manifest 绑定到文件"确切字节"的加密哈希
│
└─ Claim Signature(声明签名)
用签名方私钥对整个 claim 做 COSE 签名
证书由 C2PA Trust List 上认可的 CA 签发(X.509)
编码上:claim 用 CBOR 编码,签名用 COSE(CBOR Object Signing and Encryption),证书是 X.509。哈希用的是类 Merkle 树的结构(通常 SHA-256),最终收敛成一个被签名的根哈希。
存储上:manifest store 以 JUMBF(JPEG Universal Metadata Box Format,ISO 19566-5)盒子嵌入文件内部,JPEG / PNG / MP4 / PDF 都能装。不支持内嵌的格式(部分 RAW),允许外挂 manifest------sidecar 文件或云端仓库,通过哈希引用内容。
2.2 链式:每一步追加一个 manifest
关键在于链 。链路上的每个 C2PA 感知工具都会追加自己的签名 manifest,并把上一个资产作为 ingredient(原料) 引用:
ini
[相机拍摄] → M0 ──编辑──→ M1 ──合成──→ M2 ──导出──→ M3
↑ ↑ ↑ ↑
Leica 签名 Lightroom Photoshop 云端发布
↓
活动 manifest = 能通过当前字节校验的
最新那个
验证方可以顺着链往回走,看到每一步是谁做的、用了什么工具、有没有 AI 参与。
2.3 验证只有三步
python
def verify(asset):
m = extract_active_manifest(asset) # 从 JUMBF 盒子或云端仓库取出
# ① 验签名:COSE 签名本身是否有效
if not cose_verify(m.claim, m.signature, m.cert):
return "签名无效 --- 内容或凭据已被改动"
# ② 验信任链:签发证书能否链到 C2PA Trust List 上的 CA
if not chains_to_trust_list_ca(m.cert):
return "签名有效,但签名方不在信任列表 --- 等于没签"
# ③ 重算硬绑定哈希:文件自签名后是否被改过
if not recompute_hard_binding(asset) == m.binding_hash:
return "字节已变 --- 文件在签名后被修改过"
return "OK", m.assertions # 拿到的是断言,不是"真相"
第 ② 步是很多人忽略的。任何人都可以生成证书并签名,所以签名在数学上有效毫无意义------有效的是"这张证书在不在信任列表上"。这跟浏览器的 CA bundle 是同一个模型,也继承了同一个模型的全部问题。
2.4 两种绑定:安全性与耐久性的取舍
| 绑定方式 | 机制 | 优点 | 缺点 |
|---|---|---|---|
| 硬绑定 | 对资产字节(整文件或字节区间)做加密哈希 | 抗篡改性强,改一个像素就断 | 任何重编码都会断 |
| 软绑定 | 感知指纹 / 不可见水印 | 能扛住转码、截图、再保存 | 保证弱得多,只是"指向"凭据 |
一句话概括 C2PA 的能力边界:它是 tamper-evident(篡改可发现),不是 tamper-proof(篡改不可能)。标准能检测到改动,但阻止不了改动。
三、理想丰满,现实骨感:元数据在分发环节被批量剥离
3.1 那张很难看的表
AFIP 2026 年 4 月的独立测试(基于自身测试与公开研究):
| 平台 | C2PA Manifest | EXIF | IPTC |
|---|---|---|---|
| 剥离 | 剥离 | 剥离 | |
| X(Twitter) | 剥离 | 剥离 | 剥离 |
| TikTok | 剥离 | 剥离 | 剥离 |
| 部分 | 剥离 | 剥离 | |
| 剥离 | 剥离 | 剥离 | |
| 剥离 | 剥离 | 剥离 |
原因是工程性的:平台为了省带宽和统一渲染,上传时必然做重压缩、改尺寸、换格式。这个过程会把 JUMBF 盒子一起扔掉。
残酷的地方在于断点位置:凭据链断掉的那一刻,恰好是内容开始被大规模传播的那一刻。C2PA 规范自己也承认这一点,没有声称解决了它。
3.2 "耐久凭据"(Durable Content Credentials):补丁方案
C2PA 的应对是给硬绑定加两条恢复路径:
markdown
文件被剥离 manifest
├─ 主动插入的不可见水印(如 Digimarc / TrustMark)
│ → 水印里编码一个指针
│ → 检测器读出指针 → 去云端仓库取回 manifest 副本
└─ 被动计算的内容指纹(从像素直接算)
→ 用指纹去仓库里做相似度匹配
两者结合 > 任一单独使用(更鲁棒,但仍是软绑定)
工程上这引入了一个新依赖:验证方必须有能读水印的工具。目前这类工具仍不普及。
3.3 水印本身也不牢靠
微软 2026 年 2 月的研究把话说得很直白(转述):
可见水印,业余者能去掉;不可见水印,熟练的攻击者能剥离;而近期研究表明,基于扩散模型的图像编辑能破坏哪怕是最鲁棒的水印。
Google 的 SynthID 也面临同样的猫鼠游戏:对抗研究者已经证明,可以用精心构造的扰动把水印信号压到检测阈值以下,而图像看起来毫无变化。Google 多次更新 SynthID 去封堵特定攻击向量,但这个动态是这类方案的天性------任何水印检测器都能被发现,攻击者最终总能学会隐藏。
SynthID-Text 的处境更糟。它不修改像素,而是在生成时偏置 token 的选择 ,让输出序列带可统计识别的特征。问题是:攻击者拿到带水印的文本,用另一个足够强的 LLM 改写一遍,统计信号就溶解了。而加大水印强度会开始损伤输出质量------这是一个没法两全的取舍。
四、六个工程死结(这一节决定了你能不能真的用它)
死结一:历史 ≠ 真相。 一份有效凭据只证明"某个签名方声称这段历史"。它不能证明画面里的场景真实发生过、没有被摆拍、相机固件没被攻破。反过来也成立:一份完全有效的凭据可以正大光明地坐在一张纯 AI 生成的图上------那叫披露,不叫伪造。
死结二:缺乏威胁建模。 RAND 2026 年 6 月的表述很尖锐:C2PA"缺乏针对明确定义目标的严格安全属性分析,需要通过威胁建模来识别潜在对手的目标并制定缓解措施"。翻译过来:这套标准的密码学是扎实的,但它的安全边界没有被严格定义过。
死结三:覆盖面缺口。 C2PA 只对参与生态的工具生效。用不参与的工生成的图,压根没有凭据可验。文本侧更惨:SynthID-Text 主要只在 Gemini 上生效,OpenAI 与 Anthropic 都没有公开嵌入可检测的文本水印,开源模型普遍没有。互联网上绝大多数 AI 生成文本,不携带任何可检测的来源信号。
死结四:凭据本身是隐私风险。 凭据可以内嵌详细的创作者身份:姓名、机构、数字证书、地理位置、时间戳、设备标识。World Privacy Forum 的技术审查指出三点:这些元数据任何拿到文件的人都能读 ;已经流通出去的副本无法追溯删除;规模化之后构成"一个严重的监控面"。Fortune 2025 年 9 月的调查专门讲了 doxing 风险。
对在敌对环境工作的记者、记录人权侵害的活动者、分享证据的举报人来说,把身份嵌进内容不是功能,是威胁。规范里有脱敏与最小化披露的条款,但都是可选的、取决于实现------而多数实现的默认路径是带上身份信号。
死结五:可信度按付费能力分层。 要在生态里拿到"可信"状态,签名方需要从 C2PA Trust List 认可的 CA 买证书。2026 年初的行情大约是 289 美元/年 (DigiCert),没有对应 Let's Encrypt 的免费档。
结果是:独立记者、小型出版机构、发展中国家的创作者、公民社会组织产出的内容,即使完全正当,也显示为"来源不明";而资源充足的机构显示可信凭据。系统在不经意间建立了一个以付费能力为门槛的可信度等级。
死结六:签名 ≠ 权威。 再强调一次:任何人都能造证书签名。信任不在数学里,在你和签名方的关系里。一个自签或非信任列表上的"有效"凭据,权威性是零。
五、生产现实:真正跑起来的是分层的,不是单点的
5.1 落地最扎实的是硬件侧
2026 年 adoption 最强的不是平台,是相机。Leica、Sony、Nikon、Canon 都已出货支持在拍摄瞬间嵌入 C2PA 凭据的机型------快门一闭合,文件就带上硬件佐证的签名。对新闻摄影来说,这是目前最有价值的应用:它把"取证"从后期推断前移到了采集时刻。
软件侧:Adobe Firefly 默认给每个输出加签,Photoshop / Lightroom 支持;Microsoft 在 Designer 与 Copilot 图像生成中集成了 C2PA;LinkedIn 是较早支持验证的社交平台。
5.2 平台侧的规模
TikTok 于 2026 年 7 月 28 日从普通成员升为 C2PA 指导委员会成员。官方口径是:通过凭据、不可见水印、创作者教育和标注工具的组合,已标注超过 30 亿条内容为 AI 生成。
Google 侧:Gemini app 里的 SynthID 验证功能自 2025 年 11 月上线以来被使用超过 2000 万次;Google 正在把 C2PA 验证叠加进 Gemini app,形成"水印 + 密码学凭据"的双层。
5.3 中国侧的同一周动作
9 月 9 日,阿里云发布 AI DeepSign ,把 C2PA 标准与数字水印结合,为 AI 生成内容签发可验证、防篡改的数字身份。方向与欧美一致:用标准 + 水印的组合,把"可验证"做成基础设施能力。
监管是主要推手。欧盟 AI Act 第 50 条对合成内容披露提出了义务,C2PA 是目前最成熟的技术实现路径。
5.4 一个来自 Hugging Face 的补充视角
同周还有一篇值得读的 HF 博客:主张 LLM 的安全拒答应该精确瞄准话题的一个子集,而不是把整个话题拒掉 。放在这里看是同一条思路的延伸------粗粒度的"是/否"判断(不管是拒答还是"是否 AI 生成")都在让位于细粒度的、可验证的、带上下文的判定。
六、给你的落地清单
如果你的产品需要生成、接收或审核媒体内容,建议按这四层做,不要指望单点方案:
arduino
第 1 层 · 生成端签名 自研生成能力默认加 C2PA 凭据
断言里如实写 c2pa.ai_generated
第 2 层 · 传输端软绑定 同时嵌入不可见水印 + 计算内容指纹
manifest 同步存一份到云端仓库
第 3 层 · 平台端检测 凭据在 → 走三步验证
凭据不在 → 跑取证模型(不要因为没有凭据就判"真人")
第 4 层 · 司法端取证 保留原始字节与完整 manifest 链
链比单点断言有用得多
五条具体规则:
- 不要只依赖 C2PA。 它是"有凭据时很有用"的信号,不是"没凭据时也能判"的判据。取证检测要无条件跑。
- 验证必须走完三步。 只验签名不验信任列表,等于把自签证书当权威。
- 默认开启最小化披露。 除非业务必需,否则不要往凭据里写身份和 GPS------这是不可逆操作。
- 评估成本门槛。 289 美元/年对小团队是真实障碍,需要在方案里提前算进去。
- 给"凭据已剥离"设计降级路径。 你的 UI 必须能表达"这份内容原本可能有凭据,但在传播中丢失了",而不是简单显示"来源不明"。
七、我的判断
第一,C2PA 是证据链,不是测谎仪------把它当后者用,会得出危险结论。
它回答"谁声称做过什么、字节有没有被动过",不回答"这是不是真的"。一份有效凭据坐在一张 AI 生成的图上完全合法,那叫披露。在信任一个凭据之前,先问签名方是谁、你为什么信它。
第二,真正的瓶颈不在密码学,在分发链路的经济学。
密码学部分几乎没有争议;失败发生在平台为了省带宽而重压缩的那一秒。只要"剥离元数据"对平台是零成本、"保留元数据"是有成本的,这个断点就不会消失。所以解法不会来自标准组织,只会来自监管把保留义务变成平台的合规成本------这也是为什么 AI Act 第 50 条比任何技术改进都关键。
第三,2026 年最值得盯的信号:软绑定的检测工具会不会普及。
耐久凭据 + 水印 + 指纹这套补丁,技术上已经成立,卡在"验证方没有读水印的工具"。一旦这个工具链进了主流操作系统、浏览器和社交 App 的上传管道,整个体系的可用性会上一个台阶。在那之前,水印方案都只是半成品。
第四,警惕它变成可信度的付费墙。
289 美元/年、没有免费档,这意味着"C2PA 已验证"有可能从"技术上可信"滑向"经济上有能力"。如果 C2PA 社区不解决这个问题,它的长期效果会是加剧而非削弱信息生态的不平等。
参考
- C2PA Technical Specification(现行版本 2.4,2026 年 4 月;部分资料记为 2.3)· 标准化为 ISO/IEC 22144;JUMBF 见 ISO 19566-5
- 参考实现 :
c2pa-rs(Rust),另有 JavaScript SDK 与 Python 绑定 - 独立评估:AFIP《Content Credentials: An Independent Analysis》、RAND Corporation(2025.6)、Microsoft Research(2026.2)、World Privacy Forum 技术审查、Fortune(2025.9)
- Google:SynthID / SynthID-Text(已开源)、Gemini app 验证功能
- C2PA 治理:TikTok 于 2026.7.28 升任指导委员会成员
- 监管:欧盟 AI Act 第 50 条(合成内容披露义务)
免责声明:本文引用的测试结论来自上述独立机构的公开研究,测试环境与时点各异,不同实现的行为存在差异。水印与指纹方案的鲁棒性会随攻防演进而变化,选型请以当前实测为准。文中不构成对任何具体产品或供应商的推荐。