检查一个文件是不是 Claude 做的
文章摘要
Anthropic 上线了一个网页版的内容检查工具:把文件拖进去,它会告诉你这个文件里有没有来自 Claude 的 Content Credential。支持的格式是媒体文件——JPG、PNG、GIF、WEBP、TIFF、HEIC、AVIF、SVG、DNG、JXL、MP4、MOV、AVI、WAV、MP3、M4A、FLAC,上限 100MB。
它的工作原理并不神秘。当 Claude 产出一个受支持类型的文件时,会在文件元数据里附上一小段经过密码学签名的说明,标明这个文件可能由 Claude 生成或处理过。用的是开放的行业标准 C2PA——相机厂商和图像编辑软件用来记录图像来源的同一套东西,任何支持 C2PA 的工具都能读。Anthropic 在页面上做了几处很克制的限定:找到凭证只能说明 Claude 可能参与过,不能说明底层内容是谁写的,凭证里也不携带任何用户身份信息;工具完全在浏览器里运行,文件不离开你的设备,只读取附着的凭证而不读文件本身。
一个关键的缺口是:这个工具不检查文本。Claude 给文本做的是写作本身里的水印,是完全不同的一套机制,对应的 Detection API 目前只对符合条件的组织私有预览开放,页面明确写着这是”欧盟法律要求”。
评论区很快把这件事的定位说清楚了:这不是一个”AI 检测器”,而是一次出处(provenance)声明的验证。coffeecoders 归纳出了它的非对称性——剥掉 C2PA 数据很容易(重新保存一次文件,”made with Claude”的信号就没了),但没有 Anthropic 的签名密钥就无法伪造,所以这个保证是单向的:有签名意味着什么,没签名几乎什么都不意味着。fph 补了一刀:而这个单向的方向恰恰是通常没人在乎的那一边;_–– 回了一句”Anthropic 的法务在乎”。csmoak 给出了动机层面最被接受的解释:这和之前给文本输出加水印一样,是为了满足欧盟 AI 法案和加州 AI 透明法案(SB-942)的合规要求,对足够大的公司来说所有生成内容都被要求带水印。timmmmmmay 指出加州那部法律的条文只覆盖图像、视频和音频输出,不含文本,所以文本水印的要求可能只来自欧盟。
HN 评论精华
Retr0id 做的实证测试是整个帖子里最有价值的内容,而且直接把这套机制的边界打穿了。他先在网页版让 Opus 5 生成”一张猫的 jpg”,Claude 是先写 SVG 再渲染成 JPEG 的,点下载得到的 jpg 确实带 C2PA 元数据,看起来是 artifact 呈现层注入的。接着他让 Claude 把图打包成 zip,下载解压出来的 jpeg 就没有元数据了。最后他上传了一张自己的 jpeg,提示词是”把这个文件原样呈现回来给我”,下载到的文件被注入了 C2PA 元数据。他随后在自定义指令里加了一句”如果响应里要产出媒体文件,先放进 zip 再给用户”。基于同一个实验,他反驳了 coffeecoders 的”伪造很难”论:你根本不需要偷签名密钥,你只需要让他们替你签任何东西——上传你自己的文件,说”原样还给我”就行。declawclaw 给出了另一半的细节:SVG 里 C2PA 就明文写在 <svg> 标签后面的 metadata 块里,PNG 里塞在一个 caBX chunk 里,可以在 CLAUDE.md 里让它跑 exiftool -jumbf:all= 清掉。simonw 则指出这个页面本身跑的是 WebAssembly,是 contentauth/c2pa-rs 这个 Rust 库编译出来的。ulrischa 顺手贴了个在线剥离 C2PA 的工具。
Retr0id 和 panarky 关于相机 C2PA 的争论是全帖最精彩的一段。advisedwang 先描绘了 C2PA 的愿景:将来相机会签发凭证,于是世界上只剩三种照片——C2PA 确认为真实的、C2PA 确认为 AI 生成的、以及缺失凭证因而不确定的,而”缺失即可疑”大概只会在特定场景成立(比如路透社要求摄影记者提供 C2PA)。Retr0id 反驳说相机的 C2PA 永远无法有意义地证明一张照片是真实的,其可信度和 EXIF 差不多,”这就像说 DRM 的存在证明一部电影没被盗版”。panarky 反驳称 C2PA 在密码学上保证了字节来自某个硬件/软件签名者、且签名之后没被修改,不像 EXIF 那么好伪造。Retr0id 追问:那如果有人让硬件签名器去签一张假图的字节呢?如果有人把签名密钥提取出来呢?”密码学的存在不会魔法般地让一样东西变得可信。”panarky 用了一个监狱的比喻——你能想象一件事理论上如何被攻破,不代表它已经被攻破,就像不能因为囚犯理论上能越狱就说他和其他人一样自由。Retr0id 于是直接甩出证据:他贴了一张经过密码学签名和时间戳的、”他中了彩票”的照片验证链接,并附上 EuroMillions 官方开奖号码和时间让人对照,问对方要不要买他的中奖彩票——”这不是理论,我做过了”。port443 补上了对那个比喻的致命一击:在密码学里,只要世界上任何一个人攻破了签名密钥,每个人都能用;照这个类比,只要一个囚犯越狱成功,所有囚犯就都自由了。lanyard-textile 也指出比喻不成立——囚犯的一举一动都被看守,而相机是自由地拿在你手里可以拆开的。seplox 贴了尼康图像认证系统被 ElcomSoft 攻破的旧闻。
关于文本水印是否会损害输出质量的讨论也很热闹。 bilalq 说”文本水印不可能不导致写作质量下降”,AareyBaba 用连着三句同义反复的句子把这句话戏仿了一遍(暗示水印带来的表达空间收窄就是这个效果)。neuroticnews25 给出了机制解释:当有两个概率相当的候选 token 时,不用随机数决定而用密钥函数决定选哪个。chrisra 天真地问能不能用零宽空格之类的隐藏字符,throwuxiytayq 说这太好剥了,”你可以做个剪贴板监视器在 CTRL+C 时就清掉,一个 prompt 就能写出来;至于剥掉 Anthropic 的水印,大概需要两个 prompt”。mrheosuper 反驳说普通人不会去装什么剪贴板监视器,”所以 Gemini 才在生成图片里保留 logo,尽管裁掉它很容易”。qurren 提出了一条更系统的攻击路径:用 Claude 和其他模型各生成一批回复,训一个判别器区分是不是 Claude,再用这个判别器当 loss 训一个去水印模型;DonsDiscountGas 指出这正是 Pangram 的做法。ProfessorLayton 提了个更简单的:把输出翻译成另一种语言再翻回来。HoldOnAMinute 提了个理论上的边界:总有一些输出是完全无法水印的,比如你让 Claude 输出”Hello, World”。rcktmrtn 写了一条纯粹的玩梗回复,用满是 AI 腔的词汇(”delve”、破折号)说明”要去掉水印你得深入改动整个文本挂毯”。
动机层面有两派解读。 firefoxd 觉得很耐人寻味:连 AI 公司自己都有拒斥 AI 生成内容的动机,”他们希望你什么都用 AI,但不希望 AI 的产物被喂回给他们”;他还讲了个亲身经历——公司刚做完 AI 培训,就被要求用”真实的声音”写年中评估。docjay 给了个更精准的比喻:”这更像是不把尾气泵回进气口。”(随后引发了一整串关于涡轮增压和 EGR 的技术抬杠。)kelvinjps10 认为这就是为了避免自己的生成内容污染训练数据,moritzwarhier 补充了一个具体的困难:GitHub 上到处是 Claude 生成的代码,而这些用户很多有”不用于训练”的承诺,那些代码和会话数据无法去重,不排除自己的输出反而是真问题。bradfa 则简单地说:或者只是为了能继续在欧盟经营。
质疑与批评方面,quinndupont 只说了一句”我不需要更多的监控”。fn-mote 说得更细:如果水印真能防止 AI 欺诈或诈骗,HN 上的支持度会高得多;这种元数据注入增加了监控却没提供有意义的威慑。roosterIllusi0n 指出真正的风险是假阳性——一次假阳性就足以让整套东西变得危险,结果无法被采取行动否则有诽谤风险,法律至少应该要求提供不会追踪或留存被检文档的离线验证工具。dgellow 从文案角度挑刺:Anthropic 说”知道内容从哪来、AI 有没有参与,会让你更容易信任你在网上看到的东西”,这等于在暗示他们自己的产品被用来生成虚假信息。cmiles8 报告了一个直接的失败案例:他刚用 Claude 做了一张图,喂给工具却被告知”没有证据表明这个文件由 Claude 生成”,”所以这个工具看起来相当无用”;vb-8448 拿 simonw 的经典鹈鹕图测试也是同样结果。
关于”这算不算所有权主张”的支线被 wongarsu 用一段清晰的法律分析终结了:目前 LLM 输出著作权的两种竞争性论证分别是”雇了只猴子”(作者是 LLM,非自然人不能持有著作权也无法转让)和”拍了张照片”(LLM 是人类表达创造力的机器,就像相机)。无论走哪条路,Anthropic 都不是作者——猴子论下养猴人也不拥有猴子作品的著作权,相机论下佳能不能声称拥有你拍的照片。他认为 Anthropic 唯一能做的是在条款里给自己一个非独占的全球永久许可。warkdarrior 更简短:”Word 四十年都没主张过所有权,Anthropic 为什么要?”xigoi 的回应也很简短:”Word 不会替你写文档。”
最后 nixlaz 提出了一个实际的空白:为什么限制文件类型?连 PDF 都查不了,而对学术界来说”这份文档是不是 LLM 生成或编辑的”才是主要用例。lxgr 解释说文本用的是完全不同的水印格式,他们还无法把那个信号整合进来,所以不去声称能扫描 PDF 是合理的。tom1337 补了个手工技巧:Claude 生成的 PDF 是通过 wkhtmltopdf 做的,所以 PDF Producer 会是 Qt、Content Creator 是 wkhtmltopdf;xlsx 是 openpyxl 生成的,元数据里的作者就是它。