Microsoft Paint 和 Photos 隐形水印分析
Microsoft Paint 和 Photos 会将服务器颁发的 GUID 嵌入 AI 生成图像的像素中,以确保来源可追溯性,即使图像生成过程完全在设备本地进行。该机制通过远程审核服务器,将最终图像与特定提示和用户账户关联起来,从而在追踪目的上绕过了生成过程的“本地”特性。
远程审核与 GUID 发放
与用户对本地生成的感知相反,该过程并非完全离线。在 Copilot+ PC 上运行本地 Stable Diffusion 模型之前,应用程序会将用户的提示和风格发送至 Microsoft 审核服务器(/v1/paint-cocreator/moderate-prompt)。
服务器返回的 JSON 响应包含:
- 一个 修订后的提示,供本地模型使用。
- 一个 promptGenerationId(GUID)。
- 一个 watermarkId(GUID)。
此 watermarkId 是随后嵌入图像像素和元数据的关键标识符。
隐形水印机制
Microsoft 使用专用库 Watermarker.dll 来嵌入 GUID。该过程是一种内容自适应的块域水印(可能是 SVD 风格),在选定图像块的 RGB 像素上进行微小且量化的变化。
技术实现
- 载荷构建:16 字节的 GUID 被封装为 18 字节的消息,包含前缀(
0x4c)、GUID 和字节和校验和。 - 嵌入过程:编码器将图像尺寸四舍五入至 8 像素边界,并使用 144 个计数器,确保每个载荷位至少放置三次以实现冗余。
- 像素修改:系统修改大量像素(例如,在 512x512 图像中,262,144 个像素中有 193,376 个被修改),以不可见方式嵌入标识符。
- 失败处理:在 Microsoft Paint 中,如果
WmkWriteWatermark函数失败,整个图像生成将被视为错误,图像不会返回给用户。
C2PA 元数据与软绑定
除了像素级水印,Microsoft 还为保存的文件附加了 C2PA(内容可追溯性与真实性联盟)内容凭证。这形成了双层可追溯系统:
- 文件级清单:一个签名的 C2PA 清单嵌入文件中(例如,PNG 中的
caBX块)。该清单在c2pa.soft-binding字段中明确列出watermarkId。 - 像素级水印:
watermarkId通过Watermarker.dll直接嵌入像素中。
这种“软绑定”机制允许即使文件级元数据被移除,图像仍可与原始可追溯记录匹配。为保留此元数据,Paint 限制 AI 生成图像的保存格式为 C2PA 兼容格式:PNG、JPEG、GIF 和 .paint。经典格式如 BMP 因无法嵌入清单,被禁用于 AI 输出。
对比:云端路径 vs. 本地路径
Microsoft 根据硬件和功能使用两种不同的生成路径:
| 路径 | 过程 | 水印位置 |
|---|---|---|
| 云端(Image Creator) | 提示 $ | |
| ightarrow$ 云端生成 $ | ||
| ightarrow$ 云端水印 $ | ||
| ightarrow$ 完成图像返回 Paint | 服务端 | |
| 本地(Cocreator) | 提示 $ | |
| ightarrow$ 远程审核 $ | ||
| ightarrow$ 本地 NPU 生成 $ | ||
ightarrow$ 本地 Watermarker.dll $ |
||
| ightarrow$ 在线签名 | 客户端 |
社区洞察与隐私影响
技术分析和社区讨论突显了若干关键的隐私与透明度问题:
"这个 GUID 就是破绽,说明这根本不是为了保护艺术家,而是为了日后能够证明来源。没人会为了用户利益在本地文件中嵌入唯一 ID。"
社区提出的关键点包括:
- 虚假的控制感:Paint 设置中的可见水印开关仅控制 Copilot 标志;它不会禁用隐形的 GUID 水印。
- 账户关联:由于 GUID 是在用户会话认证并扣除 AI 信用后由服务器发放的,该水印可被追溯至特定 Microsoft 账户和提示。
- 与打印机追踪的类比:用户将其比作“黄色点”(打印机追踪点),即硬件生成用户无法禁用的识别标记。
- 监管驱动因素:一些观察者指出,这很可能符合欧盟《人工智能法案》(第 50 条)的透明度要求,该条款要求 AI 生成内容必须为机器可读。
结论
尽管 Microsoft 公开说明了 C2PA 元数据和远程内容过滤的使用,但并未明确告知用户,一个由服务器颁发的唯一 GUID 会被嵌入本地生成图像的像素中。该机制确保“本地生成”仍与 Microsoft 的云基础设施保持关联,用于审核和识别。
Sources
相关
- Dispatch
- Dispatch
- 项目
- Dispatch
- Dispatch