Text Watermarking · 溯源 · 对抗

水印战争:AI 文本的指纹、擦除与失效

图片加个水印能扛住裁剪和压缩。文字加个水印,可能被一次改写就抹掉了。为什么?

2026-09-29技术拆解 · AI 溯源约 18 分钟

引言:图片骗得住机器,文字为什么不行

先做一个动作。拿一张 AI 生成的图,用图片软件重新存一遍,压缩质量拉到 90,再上传到另一个平台。图里的水印大概率还在。换到文字:同一段 AI 写的稿子,把"因为"改成"由于",把两句话调个顺序,再让另一个模型顺手润色一遍。水印大概率没了。

同样叫水印,差别这么大。原因不在技术难度,在载体本身。要讲清文本水印,得先看图片和视频是怎么做的。

最老的一招是改像素。把水印比特写进像素色值的最低有效位(LSB),人眼分辨不出来。简单、容量大、失真小。但它脆。一次 JPEG 压缩、一次滤波、一次缩放,就没了。

所以主流做法换到频域。离散余弦变换(DCT)、离散小波变换(DWT)、奇异值分解(SVD)——把水印写进频率系数里。DCT 尤其讨巧:JPEG 压缩本身就在 DCT 系数上做文章,把水印埋在同一个地方,就能一起扛过压缩。有实测数据:纯频域方法在 JPEG 质量因子 20 时相关系数掉到 0.71,空间-频域混合方法还能保持 0.78。

再往后是深度学习。2018 年的 HiDDeN 立了范式:编码器负责把信息藏进图里,解码器负责取出来,中间再放一个"对手"网络专门挑刺。它的比特准确率能到 74.3%,图像质量 PSNR 35.16 dB。Meta 和 Inria 的 Stable Signature 更进一步——不额外加水印,而是微调扩散模型的解码器,让模型生成的每一张图天然带一个 48 位签名。裁剪到只剩 10% 的画面,在千亿分之一的假阳性下还能检出 84%。

工业级的样子是这样:Google 的 SynthID-Image 生成之后再叠加、与模型无关,官方称已经在超过 100 亿张图片和视频帧上打过水印;Meta 的 Video Seal 用 96 位消息,抗 H.264 和 AV1 编码;SynthID for video 干脆把水印逐帧写进像素;音频上的 AudioSeal 甚至能做到样本级定位,剪掉一段还能说清哪一段是生成的。

还有一条完全不同的路:元数据。C2PA(Content Credentials)把来源信息写成一条声明,数字签名,任何人都能验证它有没有被篡改。它比水印更"硬"——签名不可伪造。但它也有个致命弱点:元数据是贴在文件外面的,脱掉就没了。SynthID 的论文说得很直接:元数据经常被无意丢弃,也能被轻易移除。

把这几条路摊开,图片水印和文本水印的差别就清楚了,三句话:

所以问题变成了这句:一段 AI 生成的文字,能不能自证是 AI 写的?答案藏在三个环节里——记号怎么藏、凭什么认出来、怎么被抹掉。我们按这个顺序往下走。

01记号藏在哪?——藏在"选词"里

文字没有像素,那就只能在概率分布上动手脚。

马里兰大学的 Kirchenbauer 团队在 2023 年给出了现在最主流的答案,论文发在 ICML,标题就叫《A Watermark for Large Language Models》。做法拆开只有三步。

第一步,定种子。生成下一个词之前,先拿上一个 token 做哈希,得到的值当随机种子。

第二步,切词表。用这个种子,把整个词表伪随机地切成两半:绿名单(占 γ)和红名单。同一个种子,谁算都是同一个结果——这是整件事的关键。

第三步,加偏置。生成时给绿名单里所有词的 logits 加一个常数 δ,再 softmax 采样。于是绿名单的词更容易被选中。

论文的示例参数是 γ=0.25、δ=2。检测方不需要模型权重,只要有同一个哈希函数和那把密钥,就能复现每一步的红绿划分。

这里有个设计上的巧思值得停一下。为什么加偏置不会毁掉文本质量?因为偏置是"软"的。遇到高熵位置——几个候选词概率差不多、选哪个都合理——强推绿名单无所谓。遇到低熵位置——下一个词基本已经确定——几乎不干预。如果硬性禁止红名单,就会闹出笑话:比如 "Barack" 后面不许接 "Obama"。

一句话抓住本质:水印不是写进去的字,是偏出来的统计倾向。单看一句话看不出来,看一整段才有"味道"。这也解释了为什么它天然依赖长度。

02凭什么说这段就带了水印?——靠一道统计题

检测不是"找字",是"查占比"。

怎么看出绿名单的词偏多?多多少才算多?答案是一道单比例 z 检验。

z = ( |G| − γT ) / √( T·γ·(1−γ) )

T 是 token 总数,|G| 是落在绿名单里的 token 数。没有水印时,绿名单占比的期望就是 γ,z 近似服从标准正态。取 z 大于 4,单侧 p 值约 3×10⁻⁵——换算成假阳性率,大约三万分之一。

论文还给了检出下限:长度 ≥16 个 token 就能被检出,并称"短至 25 个词"即可。

检测不需要模型,这是设计上最狠的一点。检测方拿不到 OpenAI 的权重,也不需要。只要有那把密钥,算 z 值就行。反过来,没有密钥的人对着一堆红绿划分只能干瞪眼——水印的安全边界,本质上就是密钥的安全边界。

那攻击者要花多大代价才能洗掉?论文算过一笔账:一条 1000 token 的水印序列,就算攻击者完全知道算法、做最坏的针对性修改,改掉 200 个 token 最多制造 400 处违规,剩下 600 个绿 token 仍能给出 z≈6.3。粗略地说,要改掉大约四分之一以上的 token,水印才会失去证据力。

03Google 是怎么把它塞进 Gemini 的?——锦标赛采样

绿名单方案怕低熵文本,Google 换了一套更巧的采样。

Google DeepMind 的方案叫 SynthID-Text,核心机制是"锦标赛采样",论文发在《Nature》,2024 年。逻辑很形象:

每生成一个词,先用种子造出 m 个随机"水印函数",每个函数给词表里所有候选词打 0 或 1 分。然后从模型分布里采样一批候选(数量是 2 的 m 次方),两两配对比赛,按第一个函数决胜,胜者晋级;下一轮换第二个函数,再淘汰一批。逐层打下去,最后一个胜者就是输出的词。每个词都过一轮 m 层淘汰赛,默认 m=30。

检测时算平均得分,做假设检验得 p 值。它值钱的地方在三个数字里:

它已经在 Gemini 和 Gemini Advanced 上线,是第一个规模化部署的生成式文本水印。参考实现以 Apache-2.0 开源,包名 synthid-text,后来还内置进了 Hugging Face Transformers。

04把词换掉不就行了?——攻防正面相遇

这里是全篇最热闹的地方,两边证据打得很凶。

问题很朴素:记号既然在选词上,改写一下、翻译一下,是不是就没了?

水印方先给的证据是:没那么容易。Kirchenbauer 团队的后续研究称,水印在人类改写和机器改写之后仍然可检测——把假阳性率设到十万分之一,平均看约 800 个 token 仍能检出。理由是改写文本在统计上依然泄漏原始的 n-gram 痕迹。

攻击方随即反驳,而且一次比一次准。

纸面上的攻防说完了,看一件真事。

2026 年 8 月 2 日,Anthropic 在欧盟上线 Claude 的隐形文本水印,同时给生成的文件附上 C2PA 凭证。而且不是只对欧盟,是全球统一部署。

大约十天后,8 月中旬,开发者 Guillaume Meyer 放出一个 MIT 许可的开源工具,叫 watermarks-remover,一口气支持 Claude、Gemini、OpenAI 和开源模型的水印。工具分三层:第一层剥掉隐形的 Unicode 字符和双向控制符,第二层用改写攻击去啃统计型水印,第三层清掉 C2PA、EXIF 这些元数据。

但整个事件里最值得记的不是工具本身,是作者自己写的一句话:在厂商公开检测器和密钥之前,没有任何工具能诚实证明"能通过官方检测"。也就是说,攻防两边其实都在雾里——攻击方不知道自己的攻击是否真的骗过了官方检测器,防守方也不知道自己的水印在野外被削掉了几成。

05那为什么没人敢拿它当判决书?——边界与误伤

检测给出的是 p 值,不是结论。中间隔着三道裂缝。

裂缝一:低熵文本,水印无处可藏。

"法国的首都是哪"——这种问题答案几乎确定,模型没有可调节的选词空间,绿名单偏置无从下手。SynthID 论文自己承认:分布熵越低(温度调低、top-p 截断、RLHF 带来的模式坍缩、背诵固定文本),锦标赛采样越难选出高分的词,水印越弱。事实性问答、代码补全这类任务尤其吃亏。反过来看效率:创意写作大约 100 token 就能接近 100% 检出;到了代码任务,400 token 时、在 1/10/100 个候选检验下,检出率只有约 69%/49%/43%。

裂缝二:假阳性会累积。

z 大于 4 对应约三万分之一,看着很小。但如果同时试多个密钥、多个分词器、多种配置,就得做多重检验校正;阈值一压低,检出能力跟着往下掉。工程上的校准目标通常是让约 1% 的未水印序列被判成阳性——一万段真人文字里认错一百段,这个代价没有哪家公司愿意公开承担。

裂缝三:误伤真人,这是最疼的一刀。

斯坦福的一项研究拿 7 款公开的 AI 检测器去测 TOEFL 非母语作文:约 61% 被误判为 AI 生成,而美国本土母语作文几乎全对;更夸张的是,约 19.8% 的 TOEFL 作文被全部 7 款检测器一致判定为 AI 生成——那些文章背后根本没有 AI 参与。原因不难想:非母语写作者的用词更"规整"、句式更标准,恰好落在"像 AI"的刻板印象上。

2023 年 8 月,范德堡大学直接停用了 Turnitin 的 AI 检测功能。校方给的理由很朴素:误报率不透明,功能上线太快没有关闭选项。他们顺手算了一笔账——就算只有 1% 的误报率,7.5 万份论文也会造成约 750 起错误指控。

Anthropic 自己的说明里也划了边界:检测到标识不等于确认全部来源;文本被重度改写、翻译、截短,或者元数据被剥离、甚至只是截了个图,都会导致检不出来。水印能证明的东西,比"这是 AI 写的"要窄得多。

06既然这么脆,为什么各国还在强推?——监管与厂商

法规要的不是"抓到每一个",是"给每一条留个底"。

这是理解整件事的关键:水印的目标不是抓个体,是留底账。抓到每一个是取证的标准,留底账是治理的标准,两者差得很远。

中国这边,2025 年 9 月 1 日是一道分水岭。《人工智能生成合成内容标识办法》从那天起施行,配套的强制性国家标准 GB 45438-2025 同日实施,业界管这叫"组合拳"。要求分两类:

欧盟这边,节点是 2026 年 8 月 2 日。AI Act 第 50 条从那天起适用,要求 AI 生成的音频、图像、视频和文本以机器可读格式标记。配套的透明度行为准则把要求说得更具体:一般情况要求至少两种机器可读技术——防篡改的数字签名元数据,加上不可感知水印;但自由文本因为承载不了元数据,只需要一种就行。截至 2026 年 7 月底,约 190 家机构签署了这份准则。

厂商的动作,各家差得很远。

厂商文本水印现状关键节点
Google已部署,覆盖最全SynthID 覆盖图像/视频/音频/文本;文本部分 2024-10 以 Apache-2.0 开源
Anthropic已部署2026-08-02 起全球上线 Claude 文本水印 + C2PA;存量模型过渡至 2026-12-02;检测能力仍在私有预览
OpenAI文本仍未上线2024-08 搁置 ChatGPT 文本水印计划;现走 C2PA + SynthID,先覆盖图像与音频
Meta走元数据路线带受支持 C2PA 元数据的 AI 图上传后自动标注 "Imagined with AI";不上报的可能受处罚

OpenAI 那一栏值得单独说一句。2024 年 8 月,《华尔街日报》报道了这件事,OpenAI 官方博客也做了确认:技术准备了将近一年,最后还是搁置了给 ChatGPT 文本加水印的计划。原因之一是用户反对——有调查称约 30% 的用户表示,如果引入水印会减少使用;另一个顾虑是"污名化",即非母语写作者的文本更容易被误标。到今天,OpenAI 的公开表述仍然是文本水印"随标准和工具成熟而扩展"。

这里藏着一个结构性矛盾:生成式水印要求所有服务方一起实施才有意义。只要有一家用没打水印的模型,水印就从"行业标准"退化成"某几家的标签"。而开源模型的权重可以随便部署,这条链子天生就有缺口。

07收束:水印不是判决书,是水龙头

它的作用不是抓人,是抬高一件事的成本。

回到最开始那个问题:AI 写的东西,能不能自证是 AI 写的?

按现在的技术水平,答案是有条件的:能,前提是文本够长、够"散"(高熵),而且没人认真动手改。不能,只要对手愿意花一次改写的成本——而这个成本,在开源工具面前已经接近零。

所以水印真正的定位,不是指控单个作者的证据,是给平台和监管做规模化筛查的底噪。它降低的是"批量清洗"的效率,不是"单点伪造"的可能性。SynthID 的论文也承认,生成式水印要求各大服务方协同实施;对没打水印的模型,你还是得靠事后检测,而事后检测又绕回那道误伤的裂缝。

最后留一个实在的问题:如果洗掉水印的成本,就是让另一个模型把稿子重写一遍,那么这套机制到底在防谁?是防懒得动手的人,还是防流水线?

总结:三个可以带走的判断

参考资料