微软画图给本地 AI 图片嵌入服务器 GUID,“本地生成”不等于离线
安全研究者徐晟通过逆向 Microsoft Paint 和 Photos 发现,Copilot+ PC 上的部分图片确实由本地模型生成,但提示词仍会发送到微软服务器审核;服务器返回的 GUID 随后被写入图片像素,成为不可见水印,并与文件里的 C2PA 内容凭证关联。
作者:周白|OC 产品体验编辑
安全研究者徐晟通过逆向 Microsoft Paint 和 Photos 发现,Copilot+ PC 上的部分图片确实由本地模型生成,但提示词仍会发送到微软服务器审核;服务器返回的 GUID 随后被写入图片像素,成为不可见水印,并与文件里的 C2PA 内容凭证关联。
一句话结论:“本地 AI”描述的是推理发生在哪里,不代表提示词、审核标识和最终图片都留在设备上;微软真正欠缺的不是水印技术,而是把这条数据路径说清楚。
逆向显示,Paint 的 Cocreator 会先把提示词、风格和上一次生成标识发送到 Azure 服务。服务器返回修改后的提示词、promptGenerationId、watermarkId 和是否包含人物等结果。设备上的 Stable Diffusion 模型完成推理后,Watermarker.dll 把 16 字节 GUID 编码成 144 位消息,以内容自适应方式写入像素块。
这个过程不是可见的 Copilot 图标。用户即使关闭可见水印,像素级标识仍会写入;Paint 如果写入失败,甚至会把整次生成判为失败。研究者还在保存后的 PNG 中找到了签名 C2PA 清单,其中 c2pa.soft-binding 的值与像素水印 GUID 相同。这意味着文件元数据和不可见水印是同一套来源追踪系统的两层,而不是互不相关的标签。

微软官方支持文档已经说明,Cocreator 使用 Azure 在线服务进行内容过滤,生成图片包含 C2PA 清单。新发现补上的细节是:远程审核服务会为单次生成分配标识,本地推理结果还要在线完成来源签名;连续请求也可以通过前一次的生成标识关联起来。
这不自动等于微软用水印追踪具体用户,也不能仅凭 GUID 证明公司保存了完整的提示词—图片对应表。GUID 本身更像内容标识,是否能回查到账号、提示词和设备,取决于服务器日志与保留政策。问题在于普通用户看见“本地生成”时,很难预期这种可关联、需联网的处理。
格式限制也透露了设计目标:生成结果直接保存时优先使用能承载 C2PA 的 PNG、JPEG、GIF 和 .paint,经典 BMP 则不在直接导出列表里。来源标记显然不是可有可无的附加功能,而是产品流程的一部分。
关键事实
- Paint 和 Photos 都包含本地生成及像素级不可见水印路径。
- 提示词会发往微软服务审核,服务器返回用于水印和签名的 GUID。
- Paint 的可见水印开关不控制这层不可见水印。
- 微软公开披露了在线过滤和 C2PA,但没有解释提示词关联 GUID 的具体实现。
OC 判断
内容来源标记本身有公共价值,但“可验证来源”不能靠降低透明度实现。产品应分别说明推理、审核、标识分配、日志保留和来源签名在哪里完成,并允许用户理解哪些数据会离开设备。一个按钮写着“本地”,不应该承担整份数据流说明书的工作。
为什么重要
- 对用户:本地模型仍可能需要上传提示词并在线签名。
- 对开发者:C2PA 元数据和像素软绑定可以互相补充,但需要明确隐私边界。
- 对平台:AI 来源标记正在从文件标签升级成可跨格式识别的基础设施。
评论
围绕这篇文章补充信息、提出问题或分享观察。