揭秘!微软画图和照片应用如何在本地生成图像中嵌入隐形水印

微软画图和照片应用嵌入隐形水印

逆向工程揭示了画图和照片应用将服务器颁发的 GUID 嵌入到本地生成的 AI 图像像素中。

内容概要

微软画图支持本地和云端图像生成,且画图和照片应用搭载了本地 AI 模型。这两款应用会将提示词发送到远程服务器审核,服务器返回 GUID 及审核后的提示词,该 GUID 会作为隐形水印嵌入本地生成的图像中。单独的可见水印设置不控制这个隐形水印。在支持 Copilot 的 PC 上,图像生成本地进行,但提示词审核仍在远程。微软披露画图会在 AI 生成的图像中添加 C2PA 元数据,且 AI 生成的图像只能保存为支持 C2PA 的格式:PNG、JPEG、GIF 和 `.paint`。

对微软画图的好奇探索

这项研究源于对画图应用的好奇。此前在探索 Windows 功能方面有成果,且知道微软在画图应用中添加了 AI 功能。原以为它简单调用远程 API 生成图像,分析后发现微软在 Windows 中作为 Copilot 的一部分提供了本地模型。画图应用位于特定路径,有四个扩展名为 `.onnxe` 的模型文件,`seg.onnxe` 格式已知,其他三个最初看起来不同,实际是微软更换了密钥。解密后,`onnx.checker.check_model()` 对所有文件都适用。

可见水印

查看文件时发现 `Watermarker.dll`,使用画图应用时发现有设置可在生成的图像中嵌入可见水印,可见水印是图像右下角的小 Copilot 标志。因文件大小异常大,且受 Claude Code 的文本水印公告影响,决定让 AI 分析该 DLL 是否嵌入隐形水印。

隐形水印

可见水印由 `AddPerceptibleWatermark` 添加,还有 `WmkWriteWatermark` 函数,跟踪调用树发现它在本地 Stable Diffusion 图像生成之后调用,若失败,画图会将整个生成过程转换为错误。传入的 `payload` 必须是 16 字节,实际是一个 GUID,`WmkWriteWatermark` 的包装器会构造 18 字节的消息。编码器有特定的操作流程,嵌入循环对选定图像块进行量化更改,这是一种内容自适应的块域 SVD 风格的水印。测试表明添加水印后很多像素发生变化。

来自远程提示词审核的 GUID

反向追踪发现 16 字节的水印有效负载是 GUID,它来自网络请求。`AIServices.dll` 会将提示词和风格发送到特定地址,请求是 JSON 格式,响应解析器期望特定格式。通过发送提示词测试,服务器返回不同的 GUID,`containsHumanReference` 字段是服务器端对提示词是否涉及人类的分类。画图会解析并存储该字段及 ID,但不控制水印步骤。

C2PA 元数据中的相同水印 GUID

画图会在保存的文件中附加 C2PA 内容凭证,本地 Stable Diffusion 路径有特定流程。签名请求发送 `PromptGenerationId`,图像中已包含 `watermarkId`,服务器可关联签名请求与已存在的水印。检查保存的图像 PNG 块,发现包含已签名的 C2PA 清单,解码后显示相关信息,服务器的 `watermarkId`、嵌入像素中的标识符以及 C2PA 的 `c2pa.soft-binding.value` 每一代都相同,这是软绑定。

画图为何在本地添加水印

画图有两条不同的生成路径。图像创建器功能使用 `Azure OpenAI ImageGen`,生成等操作可在微软云端进行,画图接收成品图像。Cocreator 在支持 Copilot 的 PC 上,本地生成图像,但仍需微软账户和互联网连接,这可能是画图需要本地水印实现的原因。画图保存生成结果时格式受限,与 C2PA 支持的格式一致,若允许导出为 BMP,文件级的 C2PA 清单会消失。这也引发了关于云端路径的安全问题,存在多种可能性。

照片应用也有相同操作

微软照片应用中包含同名的 `Watermarker.dll`,其图像创建器和重新样式化图像功能背后有本地 Stable Diffusion 操作,都会指向同一个水印包装器。照片应用和画图应用在失败处理方式上有细微区别。

微软的披露信息

微软在图像创建器支持页面披露了系统的一些相关部分,如应用内容过滤、生成的图像包含 C2PA 清单等,但未解释 C2PA 清单包含标识隐形像素水印的 GUID 以及画图本地生成路径获取水印 GUID 的方式。

结论

这是第一项记录并分析画图和照片应用隐形水印行为的研究。AI 生成图像上的可见和隐形水印都不新鲜。微软披露了画图使用远程内容过滤并添加 C2PA 内容凭证,新证据表明元数据与隐形像素水印有关。本地和云端路径解释了分工情况,且“本地”不意味着离线。这可能与欧盟 AI 法案有关,微软未披露相关细节。此外,有可能修改应用绕过提示词审核和水印添加,但无新能力。

内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,提出了一种改进的秃鹰搜索算法(BES),旨在解决微电网群在复杂运行环境下的多目标、强约束、非线性及高维经济调度问题。通过引入特定优化策略,增强了基础算法的全局搜索能力收敛效率,克服了传统智能算法易陷入局部最优的缺陷。研究构建了一个包含分布式电源、储能系统与多元负荷的微电网群调度模型,以最小化系统综合运行成本为核心目标,综合考虑功率平衡、设备出力能力、储能运行特性等多重约束条件。通过仿真实验验证了所提算法在调度精度、稳定性计算效率方面相较于传统方法具有明显优势,并进一步展示了其在降低能源开支、提升可再生能源消纳水平方面的实际应用价值。; 适合人群:具备一定电力系统基础知识或优化算法背景,从事新能源调度、智能优化算法研究与应用等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网群、综合能源系统等场景下的经济调度优化;②为秃鹰算法及其他群体智能算法的改进、复现与性能对比提供参考范例;③服务于科研仿真、算法验证及工程化应用需求。; 阅读建议:建议读者结合文中提供的Matlab代码实现进行实践操作,重点关注算法改进机制与调度模型的构建逻辑,同时可借助网盘资源获取完整资料,以加深对算法性能表现与应用场景的理解。
内容概要:本文围绕“多种改进粒子群算法在深度神经网络卸载策略中的比较研究”展开,系统探讨了边缘计算环境下基于启发式优化算法的DNN任务卸载问题。文章首先剖析了传统粒子群算法(PSO)的基本原理及其在收敛性全局搜索能力方面的局限性,继而深入介绍四种代表性改进算法:自适应权重PSO、混合遗传PSO、模拟退火PSO以及多目标PSO,详述其在提升寻优效率、增强鲁棒性及应对复杂多约束场景下的机制与优势。研究通过构建DNN卸载模型,设计多维度性能评估体系,在延迟、能耗、资源利用率等关键指标上对各类算法进行对比实验分析,进而提出面向不同应用场景的算法选型策略与优化建议。该工作为边缘智能系统中的计算任务调度提供了理论支撑与实践指导。; 适合人群:具备一定人工智能与优化算法基础,从事边缘计算、物联网、智能系统优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握多种改进粒子群算法的核心思想与实现机制;② 理解深度神经网络在边缘-云协同环境下的任务卸载建模方法;③ 学习如何通过仿真实验对比不同启发式算法的性能差异,并根据实际需求选择最优算法方案; 阅读建议:建议结合提供的Matlab代码实现进行动手实践,重点关注算法参数调优、适应度函数设计及实验结果可视化分析过程,以深入理解算法行为与系统性能之间的内在关联。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值