微软画图暗藏隐形水印:本地生成的AI图片也被写入服务器GUID
A5站长网8月24日消息,安全研究员李旭盛发表逆向工程分析,发现微软画图和照片应用在本地生成的AI图片中嵌入了服务器签发的隐形水印。即使图片在你的电脑上由NPU本地渲染,只要提示词在生成前经过了微软的审核服务器,返回的GUID就会被写入图片像素。
发现的核心链条是这样的:用户在画图的Cocreator功能中输入提示词后,Paint先将提示词发送到微软Azure端点进行内容审核。服务器返回修改后的提示词、一个promptGeneration ID和一个独立的watermarkId,每个都是GUID格式。然后设备本地的NPU用Stable Diffusion管线渲染图片,完成后Watermarker.dll把16字节的watermarkId写入图片像素。
隐形水印和用户可见的Copilot logo水印是两套完全不同的代码路径。用户可以在设置中选择是否添加可见的Copilot标志,但这个偏好设置并不控制像素级隐形水印。也就是说,你关掉了可见水印,隐形水印照样写入。更关键的是,如果水印写入失败,画图会把整个生成视为失败,不会返回未标记的图片。
水印编码机制也很有讲究。编码函数用GUID、前缀和校验和构建144位消息,通过小幅修改选定图片块来分布消息,每个比特至少被放置三次。修改幅度设计得几乎不可感知,不作为元数据或标志显示。同一GUID还会出现在画图单独附加的C2PA签名声明中,算法名称为com.microsoft.invismark.1。
研究者的更强发现是端到端的ID复用:微软在提示词审核时返回唯一的服务器分配值,画图把它写入像素,签名溯源声明记录同一个标识符。如果微软将每个提示词与发送者关联,理论上可以通过图片中的水印追溯到用户。这让人想起多年前激光打印机嵌入追踪码引发的隐私争议。微软的文档披露了C2PA元数据和云端审核,但没有说明像素级编码,也没有解释审核返回的值会被嵌入本地生成的输出。
照片应用也使用了同一个水印库,但处理失败的方式不同:照片会在水印写入失败时记录错误并继续返回图片,而画图则会阻断结果。如果你不想被追踪,自己跑开源模型可能是目前最干净的方案。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!