对原始视频的验证结果不能自动套用到转码后的版本上。否则用户拿到的是一个文件旁边的“已验证”状态却属于另一个文件。1. 验证了原始对象却标记了当前版本来看一个视频点播VOD平台的例子用户打开 720p 版本看到“此版本已通过 C2PA 验证”。但这条提示所依据的结果只对应原始对象。C2PACoalition for Content Provenance and Authenticity这一联盟制定了一套规范用于提供可验证的内容来源与修改信息。这里重要的是这些信息与具体媒体内容之间的关联。[1, §§2.3.1–2.3.4]平台将原始对象固定为X:v1。对这个对象所有必要且适用的检查均已成功完成包括签名、断言、信任以及与视频数据的绑定检查。验证结果E1存在且可用。随后平台生成一个分辨率不同的独立呈现版本rendition。本例中这就是操作D1生成的 720p 对象X:v2。目录把两个对象归入同一个逻辑视频X因此保存一个统一的“已验证”状态似乎很自然。但在所讨论的系统中并不存在适用于 X:v2 的这类验证结果。下文的VERIFIED是本文为平台评估定义的名称对明确指定的对象在保留的范围内、按照既定策略所讨论的那组 C2PA 检查已成功完成。它不是 C2PA 规范定义的状态也不保证视频质量。2. 与已验证对象的关联在哪里丢失了对 X:v1已验证其视频数据与M1的关联。M1 是组织来源信息的结构称为清单manifest。这种绑定称为内容绑定content binding。绑定范围由适用机制决定不一定覆盖文件的每一个字节。[1, §§2.3.11–2.3.12; 9.2.1, 9.2.3, 9.2.6; 15.12]检查针对的**验证对象subject**保留在结果中E1.subject X:v1。平台评估A1以 E1 为依据保留这一对象关联、所验证的属性及范围。签名验证与数据绑定验证是结果中的不同组成部分。签名验证成功并不能替代对 X:v2 的数据绑定验证。C2PA 允许在规定条件下保留先前材料的来源信息因此这里的结论既不是“转码会销毁全部历史”也不是“每次都必须把所有检查重新做一遍”。[1, §§15.1.1–15.1.2; 18.16.11.1]丢失发生在从对象级评估生成视频级汇总时A1: subjectX:v1, property, binding_scope, VERIFIED, evidence_refE1 asset_summary[X]: property, VERIFIED, evidence_refE1汇总保留了属性、状态甚至还保留了指向 E1 的引用却去掉了验证对象及其适用范围。API 在返回objectX:v2时从这个汇总里取出状态UI 将其显示为当前版本已验证。E1 本身没有损坏。引用可以帮助恢复原来的对象对应关系但有引用并不等于结果使用方已经将它与实际返回的对象进行匹配。错误出在对删减后汇总的使用上而不是验证结果本身。3. 对派生版本可以作出什么声明“由已验证对象生成”和“自身已经验证”是两种不同的声明。即使是前一种声明也不能仅凭derived_from字段成立。在本文提出的平台契约中D1 使用的正是已经固定的 X:v1受控转换也确实以这个输入生成输出。结果生成后由获授权的结果固化流程建立实际输入与实际输出之间的关联并把输出固定为不可变的 X:v2。任意目录写入都不能把这条关联中的输入、输出换成另一对对象。发布时交付的仍是同一份数据。该流程的正确性以及生成这条记录所需的权限都是模型明确规定的前提。操作记录本身并不能证明这些前提成立。在这些条件得到满足、E1 的对象关联仍被保留时平台可以这样表述X:v2 由平台从具体的 X:v1 生成X:v1 的 C2PA 验证已在注明的范围内成功完成。系统中没有适用于 X:v2 本身的这类验证结果。每一部分都有各自的依据。原始对象验证成功以 E1 为依据输出的来源关系以 D1 实际输入与输出的关联为依据消息与实际交付版本的对应以发布同一个已固定对象为依据。在本例中X:v2 没有适用结果这一条件限定于所讨论的系统不是从响应中的空字段推导出来的。这样用户就不会把对原始对象的验证误当成对收到的 720p 文件的验证。这里修正的是消息不是视频本身没有适用于 X:v2 的结果并不意味着文件是伪造的、D1 没有发生或 E1 中原本成功的验证结果被否定。即使 D1 的派生关系有完整依据它也不会因此成为对输出的 C2PA 验证。4. 显示状态前做两项检查第一保留验证对象和验证范围subject preservation。请求 X:v2追踪 A1 如何变成 API 响应以及 UI 的主状态。把实际返回的对象与结果中的验证对象、属性和范围逐一对应。可以显式传递这种关联也可以通过 E1 恢复但恢复必须在确定要显示的消息之前完成。预期结果成功的评估结果对应 X:v1而不是 X:v2。共用的asset_id可以用于分组但不能替代对象匹配。仅凭 E1 就给 X:v2 标记VERIFIED即使另有脚注说明原始对象也违反了这一要求。第二检查派生对象的结果迁移契约derivative transfer contract。对同一个 X:v2把消息的每一部分与其依据对应起来实际输入、已完成的 D1 所建立的关联、已固定的输出以及发布关系。如果这些契约条件有充分依据预期输出就是上一节的限定消息而不是 X:v2 自身的VERIFIED状态。在范围和策略固定的条件下令P ( x ) P(x)P(x)表示对象x xx的受检属性即VERIFIED所对应的属性。derived_from ( y , x ) \operatorname{derived\_from}(y,x)derived_from(y,x)表示已经确立的y yy源自x xx的关系而不只是目录中的一个字段。在没有经过论证、适用于这一属性的迁移规则时P ( X : v 1 ) ∧ derived_from ( X : v 2 , X : v 1 ) ⊭ P ( X : v 2 ) . P(X{:}v1)\land\operatorname{derived\_from}(X{:}v2,X{:}v1) \not\models P(X{:}v2).P(X:v1)∧derived_from(X:v2,X:v1)⊨P(X:v2).符号⊭ \not\models⊨表示“不能从中逻辑地推出”不表示“为假”。来源关系本身并不转移该属性。单独一个derived_from字段连来源关系也不能确认仅有日志或清单同样不足以论证迁移。用proved ( Q ) \operatorname{proved}(Q)proved(Q)表示命题Q QQ能由所讨论系统中的可用依据和规则得到论证。那么¬ proved ( P ( X : v 2 ) ) ⊭ proved ( ¬ P ( X : v 2 ) ) . \neg\,\operatorname{proved}(P(X{:}v2)) \not\models \operatorname{proved}(\neg P(X{:}v2)).¬proved(P(X:v2))⊨proved(¬P(X:v2)).属性未获证明不等于其否定已经得到证明。因此缺少支持VERIFIED的依据不能自动转化为否定性的验证结论。保留验证对象 → 说明所验证的属性 → 检查当前版本的依据 → 只呈现有依据支持的声明。验证的是 X:v1标记为“已验证”的却是 X:v2——这就叫张冠李戴。详细讨论见 Article 13C2PA 验证与平台声明的边界。参考资料[1] C2PA.Content Credentials: C2PA Technical Specification2.4 版。相关章节已在文中标注本文定义的 A1/E1、结果投影及 D1 契约不是 C2PA 规范规定的架构。https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html
企业数字化 ERP 产品动态
相关推荐
MySQL超市管理系统数据库大作业:从建表到事务的完整实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:37:13
大模型调用失败自动重试的完整指南:策略、幂等与2026年新坑 昨天有朋友问我:2026年了,大模型调用失败是不是已经能做到自动重试了?我愣了一下,这个问题表面看只有“是”和“否”两个答案,实际拆开却牵扯模型推理引擎、平台网关、应用SDK和业务代码四个层面。大家经常在对话应用里… · 2026/9/26 3:37:07
Nginx proxy_pass 路径改写与反向代理配置详解 我第一次在location里写proxy_pass的时候,犯过一个特别蠢的错:location /api/ { proxy_pass http://127.0.0.1:8080/; },看起来人畜无害,结果前端请求/api/user/list,后端接口收到的却是/user/list,一截/ap… · 2026/9/26 3:37:07
GitHub周刊第38周:阿里代码评审工具开源与智能体运行底座ECC等四大项目解析 1. 这期周刊为什么值得你花十分钟看完做开发的人大概都有个习惯,每周总要抽点时间翻翻 GitHub 趋势榜和几个固定的技术周刊,看看这周又冒出了什么新东西。我自己这个习惯保持了好几年,踩过不少坑,也淘到过不少宝。这期 2026 年第 … · 2026/9/26 5:50:19
千元预算精准拓客:五款工具实测与ROI翻倍策略 这两年,我一直在跟获客成本较劲。团队不大,预算不多,老板只看一个数字:花出去的钱,到底带回来多少单。去年我把老打法全推翻了,只留了1000块左右的试错预算,专门测市面上口碑不错的拓客工具。测… · 2026/9/26 5:50:07
PostgreSQL连接报错IO error排查指南:连接池与keepalive配置避坑 如果你在跑一条长时间查询,或者在导一个上亿行的大表,又或者应用在高峰期第一个请求就报错,而报错信息只是一句轻飘飘的An IO error occurred while sending to the backend——恭喜,你已经站在了 PostgreSQL 连接链路问题的最常见… · 2026/9/26 5:50:07
Oracle到KingbaseES迁移实战:从架构设计到SQL改造的避坑指南 1. 迁移前必须想清楚的三件事先说结论:Oracle 到 KingbaseES 的迁移,本质上不是"换数据库",而是"换一套思考方式"。很多人栽跟头,不是因为工具不好用,而是因为从一开始就把迁移当成了"数据复… · 2026/9/26 5:50:07
PostgreSQL发送IO错误排查:sending to backend解析 用PostgreSQL做开发或者维护的人,多半在日志里撞见过“An IO error occurred while sending to the backend”。我第一次和它打交道,是在维护一个Java批量同步任务的时候:任务跑到一半,日志里突然冒出一行PSQLException࿰… · 2026/9/26 5:50:07
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46