<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Privacy on Kalend's Blog</title><link>https://blog.kalend.top/categories/privacy/</link><description>Recent content in Privacy on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Tue, 08 Sep 2026 08:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/categories/privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>MS Paint在你画的图里偷偷藏了追踪水印</title><link>https://blog.kalend.top/2026/09/08/2026-09-08-ms-paint-tracking-watermark.html/</link><pubDate>Tue, 08 Sep 2026 08:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/09/08/2026-09-08-ms-paint-tracking-watermark.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;你用画图工具随手画了个涂鸦，保存成PNG发到群里。
你不知道的是，这张图的像素里可能藏着一串只有微软能解读的追踪码。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;MS Paint 的 AI 生成功能在你保存图片时，会悄悄嵌入一个&lt;strong&gt;不可见的水印&lt;/strong&gt;。这个水印是一个由微软服务器签发的唯一标识符（GUID），通过像素级修改写入图片，肉眼完全看不出来。&lt;/p&gt;
&lt;p&gt;关键是：即使图片是在你电脑上本地生成的，这个 GUID 仍然来自微软的服务器。&amp;ldquo;本地生成&amp;quot;不等于&amp;quot;离线完成&amp;rdquo;。&lt;/p&gt;
&lt;h2 id="什么是追踪水印"&gt;什么是追踪水印
&lt;/h2&gt;&lt;p&gt;追踪水印不是新东西。打印机领域有一个存在了几十年的技术叫 Machine Identification Code（MIC），俗称&amp;quot;黄色追踪点&amp;quot;。&lt;/p&gt;
&lt;p&gt;1980年代中期，施乐公司发明了这套编码机制：用直径约0.1毫米的黄色微点，在每张打印页面上重复嵌入打印机序列号、打印日期和时间。这些点小到肉眼几乎看不见，但用高分辨率扫描仪扫一下，再把黄色通道增强，就能清晰看到。&lt;/p&gt;
&lt;p&gt;2004年，荷兰当局用这套追踪码破获了一起伪造案，MIC 的存在才第一次被公众知晓。2005年，电子前沿基金会（EFF）破解了这种编码格式，并在2015年披露：所有主要彩色激光打印机制造商都与政府达成了秘密协议，确保打印输出可被司法追踪。&lt;/p&gt;
&lt;p&gt;简单说：你用彩色打印机打的每一页纸，都带着你的&amp;quot;指纹&amp;quot;。&lt;/p&gt;
&lt;h2 id="ms-paint-怎么藏的"&gt;MS Paint 怎么藏的
&lt;/h2&gt;&lt;p&gt;2026年8月，逆向工程师 Xusheng Li 在对 Windows 自带的画图工具（MS Paint）做逆向分析时，发现了一个名为 &lt;code&gt;Watermarker.dll&lt;/code&gt; 的文件。&lt;/p&gt;
&lt;p&gt;这个文件有 1.67 MB，对于一个&amp;quot;只在图片右下角贴个 Copilot logo&amp;quot;的功能来说，大得离谱。他决定深入看看。&lt;/p&gt;
&lt;h3 id="两条水印路径"&gt;两条水印路径
&lt;/h3&gt;&lt;p&gt;Paint 有两种 AI 生成功能，对应两条不同的水印路径：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Image Creator&lt;/strong&gt;（云端生成）：图片在微软云端生成、打水印、签名，然后返回给用户。全程在服务器完成。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cocreator&lt;/strong&gt;（本地生成）：在 Copilot+ PC 上，图片由本地 NPU（神经处理单元）运行 Stable Diffusion 生成。但关键一步——&lt;strong&gt;提示词审核&lt;/strong&gt;——仍然要发到微软服务器。&lt;/p&gt;
&lt;p&gt;两条路径最终都会嵌入不可见水印。&lt;/p&gt;
&lt;h3 id="水印从哪来"&gt;水印从哪来
&lt;/h3&gt;&lt;p&gt;Cocreator 的流程是这样的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你输入提示词（比如&amp;quot;一只蓝色的猫&amp;quot;）&lt;/li&gt;
&lt;li&gt;Paint 把提示词发到微软的审核服务器&lt;/li&gt;
&lt;li&gt;服务器审核通过后，返回两个东西：审核后的提示词 + 一个 &lt;code&gt;watermarkId&lt;/code&gt;（GUID格式的唯一标识符）&lt;/li&gt;
&lt;li&gt;本地 NPU 生成图片&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Watermarker.dll&lt;/code&gt; 把那个 GUID 嵌入图片像素&lt;/li&gt;
&lt;li&gt;保存图片&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Xusheng Li 实际抓包验证了这个流程。他发送了一个测试提示词，服务器返回的 JSON 长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;revisedPrompt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;a cobalt blue circle above a tiny orange square&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;promptGenerationId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;74d9e06b-adea-43ce-85fe-186a26e2e34a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;watermarkId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;83424621-03cb-40e3-9808-a9fae837156d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;containsHumanReference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;那个 &lt;code&gt;watermarkId&lt;/code&gt; 就是最终嵌入图片像素的东西。&lt;/p&gt;
&lt;h3 id="嵌入算法"&gt;嵌入算法
&lt;/h3&gt;&lt;p&gt;水印不是简单的文字叠加。它用的是一种&lt;strong&gt;基于内容自适应的块域SVD风格算法&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个18字节（144位）的消息体由GUID和校验字节构成&lt;/li&gt;
&lt;li&gt;每位信息至少嵌入3次（冗余保障）&lt;/li&gt;
&lt;li&gt;对图片的8×8像素块做量化修改&lt;/li&gt;
&lt;li&gt;使用3×5矩阵运算和矩阵分解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试结果：一张 512×512 的图片中，&lt;strong&gt;193,376个像素被修改&lt;/strong&gt;（总共262,144个像素，修改率73.8%）。肉眼看完全一样，但每个像素都微微偏移了。&lt;/p&gt;
&lt;p&gt;更狠的是：如果水印嵌入失败，Paint 不会给你一张没有水印的图片——它会直接把这次生成判定为&lt;strong&gt;失败&lt;/strong&gt;。微软宁可不让你用，也不让你拿到一张&amp;quot;干净&amp;quot;的图。&lt;/p&gt;
&lt;h3 id="格式限制"&gt;格式限制
&lt;/h3&gt;&lt;p&gt;你有没有注意到，用 Paint 的 AI 功能生成图片后，保存时只能选 PNG、JPEG、GIF 和 .paint 格式？经典的 BMP 格式不见了。&lt;/p&gt;
&lt;p&gt;原因很直接：BMP 格式无法嵌入 C2PA 元数据。微软不允许你用一种&amp;quot;留不下身份证明&amp;quot;的格式保存 AI 生成的图片。&lt;/p&gt;
&lt;h2 id="与-ai-生成图片的关系"&gt;与 AI 生成图片的关系
&lt;/h2&gt;&lt;p&gt;你可能觉得&amp;quot;我用的是本地工具，应该没事吧&amp;quot;。事实是：在微软的生态里，&amp;ldquo;本地&amp;quot;不等于&amp;quot;离线&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;即使是 Cocreator 功能声称图片在本地 NPU 上生成，整个流程仍然有两步必须联网：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;提示词审核&lt;/strong&gt;：你的提示词必须发到微软服务器审核，服务器决定是否允许生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C2PA签名&lt;/strong&gt;：生成的图片会附带一份由微软签名的 C2PA 内容凭证（Content Credentials），里面包含了水印信息&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;C2PA（Content Provenance and Authenticity）是一个数字内容溯源标准。在 Paint 生成的图片里，C2PA 元数据中包含一个字段叫 &lt;code&gt;c2pa.soft-binding&lt;/code&gt;，算法标识为 &lt;code&gt;com.microsoft.invismark.1&lt;/code&gt;，值就是那个 &lt;code&gt;watermarkId&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这意味着：即使有人把图片的文件级元数据（C2PA manifest）剥离掉，只要像素级水印还在，微软仍然可以追溯这张图的来源。&lt;/p&gt;
&lt;p&gt;Photos 应用（Windows 自带的照片）也做了同样的事情。它的 Image Creator 和 Restyle Image 功能背后都有本地 Stable Diffusion 操作，也都通过同一个 &lt;code&gt;Watermarker.dll&lt;/code&gt; 嵌入水印。&lt;/p&gt;
&lt;h2 id="隐私影响"&gt;隐私影响
&lt;/h2&gt;&lt;p&gt;这里有几个问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一，透明度不足。&lt;/strong&gt; 微软在 Paint 的 Image Creator 支持页面确实提到了&amp;quot;添加 C2PA 内容凭证&amp;quot;，但没有明确说明会嵌入像素级的不可见水印。C2PA 元数据可以被文件级操作移除，但像素级水印是永久性的——只要图片内容还在，水印就在。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二，GUID 可关联。&lt;/strong&gt; Xusheng Li 发现，Paint 在发送审核请求时会带上上一次的 &lt;code&gt;lastPromptGenerationId&lt;/code&gt;，这意味着微软可以将你的多次生成请求串联起来。不只是单张图可追踪，你的整个生成历史都可以被关联。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，这是行业趋势。&lt;/strong&gt; 不只是微软。Google 有 SynthID 技术，用于在 Gemini 生成的图片、文本和音频中嵌入不可见水印。Adobe、Intel、BBC 等机构都是 C2PA 标准的参与者。AI 生成内容的&amp;quot;可溯源&amp;quot;正在成为行业共识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四，&amp;ldquo;可见水印&amp;quot;和&amp;quot;不可见水印&amp;quot;是两回事。&lt;/strong&gt; Paint 有一个设置项让你选择是否在 AI 生成的图片上添加可见的 Copilot logo。但这个设置&lt;strong&gt;不影响&lt;/strong&gt;不可见水印的嵌入。关掉可见水印，不可见水印照样在。&lt;/p&gt;
&lt;h2 id="普通用户该怎么看"&gt;普通用户该怎么看
&lt;/h2&gt;&lt;p&gt;说几句实在话。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你只是用 Paint 画画，不用 AI 功能，目前没有证据表明你的图片会被嵌入追踪水印。&lt;/strong&gt; 这次发现的水印机制只针对 AI 生成路径。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你用 Paint 或 Photos 的 AI 生成功能，你的图片里大概率有不可见水印。&lt;/strong&gt; 这个水印包含微软签发的唯一标识符，理论上可以追溯到你的账户和生成时间。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这不是阴谋论，是公开的技术事实。&lt;/strong&gt; Xusheng Li 的逆向分析过程完全公开，代码、抓包数据、调用链都有据可查。HN 上这条帖子拿了 860+ 分，技术社区基本认可其结论。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你可以做什么：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你在意隐私，用开源的 Stable Diffusion WebUI（如 ComfyUI、Automatic1111）本地部署，不经过任何云端审核&lt;/li&gt;
&lt;li&gt;如果你必须用 Paint 的 AI 功能，了解你的图片里有这个水印&lt;/li&gt;
&lt;li&gt;如果你收到一张 AI 生成的图片想知道它是否带水印，目前没有简单的自检方法——这正是不可见水印的设计目标&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="结尾"&gt;结尾
&lt;/h2&gt;&lt;p&gt;从 1980 年代打印机上的黄色微点，到 2026 年画图工具里的像素级 GUID，追踪技术一直在进化。&lt;/p&gt;
&lt;p&gt;不同的是，打印机水印是为了防伪钞，而 Paint 的水印是为了给 AI 生成内容打上&amp;quot;出生证明&amp;rdquo;。动机不算恶意，但执行方式值得商榷——尤其是在用户不知情的情况下，把服务器签发的标识符刻进每一个像素。&lt;/p&gt;
&lt;p&gt;下次你用 AI 画一张图，记得：那不只是你的作品，也是微软的&amp;quot;作品&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;数据来源：Xusheng Li 逆向分析报告（2026年8月）、Wikipedia &amp;ldquo;Machine Identification Code&amp;rdquo; 词条、EFF 打印机追踪点研究、C2PA 规范 v2.4&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>