水印的军备竞赛没有赢家
今天 HN 首页上有两件事同时出现,恰好站在攻防的两边。
OpenAI 宣布采用 Google DeepMind 的 SynthID 不可见水印,配合 C2PA 元数据标准做 AI 图像溯源。他们搭了个公开验证工具,公众上传图片就能检查来源。这是一套双层方案:C2PA 元数据负责携带详细信息,SynthID 水印负责在元数据丢失后——比如截图之后——依然能被检测到。
同一页的另一边,一个叫 remove-ai-watermarks 的开源项目专门干一件事:把这些水印剥掉。
它用 SDXL 扩散模型对图像做极轻量级的去噪再生(strength=0.05),就足以破坏 SynthID 的频域模式,同时保持视觉质量几乎不变。它还清理 C2PA 元数据、去除社交媒体上的 "Made with AI" 标签,甚至有个"模拟人性化器"注入胶片颗粒来绕过 AI 图像分类器。
同一天,同一页,攻防双方各占一边。
这不新鲜。
1998 年美国通过数字千年版权法,规定"版权管理信息"不得被故意移除。三年后,Photoshop 的"保存为 Web 格式"就已经能批量清除 EXIF 元数据了。你甚至不需要特意去删——只要图片在两个格式之间转一次,元数据就自己掉了。
数字水印从 90 年代就开始研究。频域嵌入、最低有效位、感知编码,每篇论文都宣称"抗裁剪、抗压缩、抗缩放"。在学术评价里都表现优异,一到实际部署全部被绕过。
SynthID 确实比这些早期方案更先进。它是用扩散模型嵌入的,号称截图和压缩后仍可检测。但 remove-ai-watermarks 的作者找到了一条工程上可行的路:用扩散模型去噪再生一次,水印没了,图片看起来还是那张图片。
问题的核心在于一种不对称。
设置水印只是在生成管线里加一步。去除水印需要一个完整的扩散模型推理。乍看之下,去除的成本远比设置高得多。
但一旦有开源工具存在,边际成本就趋近于零。不需要再研发、再调试,pip install 然后跑一个命令。
更致命的不是成本,而是信任的脆弱性。水印的效力依赖于它不被去除——但只要有人成功去除了它一次,整个水印体系的社会效力就会崩塌。
想一下这个逻辑链:OpenAI 放出水印说"这是 AI 生成的"。有人去除了水印。现在你看到一张没有水印的图片,你不知道它是不是 AI 生成的。然后有人放上水印,你也不确定——因为水印本身也可以被伪造。你最终对"水印"这个信号本身失去了信任。
不管你的水印技术有多先进,你面对的是一个底层约束:互联网的核心协议都是开放的。HTTP、SMTP、DNS,任何人都可以在传输中修改内容。你可以在内容里嵌入标记,但任何人都可以在接收端去掉它。
C2PA 用密码签名试图绕过这个问题。签名被破坏就意味着内容被修改了——前提是你信任签名链的起点,也就是 OpenAI 的服务器。不信任 OpenAI?签名没有意义。信任 OpenAI 但不信任中间平台?签名可能在传输中被剥离,C2PA 自己也承认这一点。
所以 OpenAI 需要两层:元数据加水印。元数据被剥了还有水印,水印被破了还有元数据。
但 remove-ai-watermarks 说两层它都能去。
这不是说水印没用。在大多数日常场景里,水印确实抬高了恶意去除的门槛。只想快速传图的普通用户不会去装专门的去除工具。
问题出在极端场景。政治宣传、深度伪造、诈骗——在这些场景里,攻击者有动机花时间去剥。只要有一个场景下成功绕过,整个系统的可信度就被打了折扣。
OpenAI 的验证工具朝一个稍微诚实的方向走了一步。它不要求水印一定存在,检测不到就不下结论。这比"没有水印就等于不是 AI"的断言好得多。
但它只能验证 OpenAI 自己的内容。Midjourney 或 Stable Diffusion 生成的图片,OpenAI 的验证工具什么都检测不到。而 remove-ai-watermarks 支持所有这些平台的水印剥离。
水印不是解决方案。它最多是一个延迟策略——增加恶意去除的成本,为平台审核争取时间窗口。但它不能解决"你无法确定一张图是不是 AI 生成的"这个根本问题。
真正可能的出路不在技术层面,而在制度层面。比如要求 AI 图像生成平台以 API 方式直连分发平台,绕过用户端这个"可以随意去除水印"的环节。或者像 Minnesota 刚做的,用法律来约束。
制度和法律也有自己的军备竞赛。这又是另一个话题了。