本文介绍火山引擎证书中心 C2PA 的基本概念,帮助您理解 C2PA 的数据结构、术语关系与信任模型。产品定位、功能模块与签名技术原理请参见什么是 C2PA。 内容凭证(Content Credentials)
内容凭证是 C2PA 标准的核心产物,用于记录数字内容的真实性信息及其加密验证方式。官方将其类比为数字内容的营养成分表,任何人都能查看一份内容的成分与生产履历。
为图片或视频关联内容凭证后,查看方可以看到它的来源、创作者、是否 AI 生成、编辑历史与时间戳等信息。
内容凭证通过数字签名保证完整性与真实性。即使文件经过传播、转码或编辑,只要签名未被破坏,凭证信息始终可验证。
清单是 C2PA 的核心数据结构,用于记录数字资产的完整历史——谁在什么时间、用什么工具对内容做了什么操作。一份清单由以下三部分构成:
清单库是包含一个或多个清单的容器。一个文件可以经历多次编辑或转手,每次操作生成一份新的清单,所有清单存放在同一个清单库中,形成完整的溯源链——从首次创建到最近一次编辑,每一步都有据可查。
活跃清单是清单库中最新添加的清单,描述数字资产的当前状态。验证方默认读取活跃清单,了解内容的最近一次操作记录。文件被编辑或转码后,新的操作生成一份新的活跃清单,旧清单保留在清单库中作为历史记录。
声明是清单中的核心信息集合,包含操作者身份、操作内容、操作时间等结构化信息。声明引用一组断言,并由声明签名保护其完整性。验证方通过校验声明签名,确认声明内容未被篡改。
断言是 Manifest 中关于数字资产、来源或处理过程的一项结构化陈述。例如,断言可以记录资产经历过的操作、参与合成的输入素材,或者用于校验资产内容完整性的 Hash 信息。
每个断言都有一个 assertion label,用于标识断言的类型和版本。不同类型的断言具有不同的数据结构。常见的 assertion label 包括:
action 不是一种断言,而是 c2pa.actions.v2 断言中的字段。常见的标准 action 包括:
对于 AI 生成或 AI 编辑内容,应根据实际处理过程选择 c2pa.created、c2pa.edited 等 action,并通过 digitalSourceType 声明内容来源,不应使用 c2pa.ai_generated 或 c2pa.ai_assisted 代替。
声明签名是使用签名方私钥对声明进行的数字签名,是 Manifest 安全性的核心保障。验证方通过证书链逐级校验签名,可以确认:
声明生成器是创建声明的软件或设备,例如 AI 生成服务、图片编辑应用或相机固件。它负责组装断言、生成声明并发起签名请求。在 Manifest 的 claim_generator_info 字段中,需记录声明生成器的名称与版本。
C2PA 生态中各类角色协作完成从内容生成到验证的全链路:
C2PA 基于 PKI 信任链模型。每一份 Manifest 都包含签名证书链,验证方按照终端实体证书 → 中间 CA 证书 → 根 CA 证书的顺序逐级校验,确认签名证书由受信任的 CA 签发。证书中心的 C2PA 模块使用 GlobalSign 作为 CA,证书链文件包含完整的 trust chain,供验证方直接使用。
C2PA 数据写入文件的元数据区域。不同格式的存储位置如下: