Skip to content

Translation in progress Some entries still include text in the original language.

arXiv:对齐、欺骗与监督· arXiv:2609.12909· Saifur Rahman Tamim·Indexed by this site · Originally published

研究者在双 T4 上复现并插桩 Tree-Ring 语义水印伪造攻击

Forging Tree-Ring: Reproducing and Instrumenting Black-Box Semantic Watermark Forgery

Quick read

Attacks

Based on 论文 PDF (AI 生成); refer to the original

双T4上复现SDXL的Reprompt伪造:genuine 6/6、forged 5/6、clean 0/6。

Threat model黑盒伪造:攻击者不见Tree-Ring密钥,无梯度,也无目标模型特权访问。

Questions
Tree-Ring把密钥图案写入扩散模型初始噪声。作者称只抗失真不够:不见密钥的攻击者仍能造出真检测器接受的图。这项工作在双T4上复现该伪造,并检查检测器丢弃的统计量。
Methods
用发布代码跑Reprompt。代理SD2.1反演一张水印参考图,再按无关提示词重生成,交SDXL的Tree-Ring检测器。分genuine、clean、forged三臂,并保留非中心χ²的x、λ、σ,比较−x与λ−x。
Experiments and results
六次试验检出genuine 6/6、clean 0/6、forged 5/6,单次325–332秒。同一18个观测上,forged对clean的AUC在−x为0.861、在λ−x为0.972。作者称攻击复现,且一次漏检的x落在clean范围内。
Limitations and future work
作者称全部观测共用一个水印密钥,每臂6次不够支撑分布性主张,且只复现Reprompt、只测未处理图像。跑通的模型是目标SDXL与代理SD2.1;论文写明FLUX.1-dev与PixArt-Σ不在报告结果内。
Experimental setupStable Diffusion XL base 1.0 · 检出率(p<τ)、p-value et al.
Threat model
黑盒伪造:攻击者不见Tree-Ring密钥,无梯度,也无目标模型特权访问。持有一张水印参考图,在从未见密钥的代理SD 2.1中做DDIM反演,再用自选提示词生成新图,使目标SDXL的真检测器接受。
Evaluated models
Stable Diffusion XL base 1.0
Metrics
检出率(p<τ)p-valueAUCxλ−x
AI summary作者在 Stable Diffusion XL 上复现了 Müller 等人针对 Tree-Ring 语义水印的 Reprompt 伪造攻击,使用原作者发布的代码,在免费档双 T4 GPU(每卡可用显存 14.6 GB)上运行,单卡显存明显低于原研究使用的 A40。三组共六次试验中,真实图像检出 6/6,干净图像 0/6,伪造图像 5/6,每次攻击耗时 325-332 秒。作者还从检测器源码中恢复了被丢弃的非中心卡方统计量,其恢复结果与已发布检测器完全一致,基于该统计量构造的两个分数在同一批 18 个观测上以 AUC 0.861 和 0.972 区分伪造组与干净零假设。

作者在 Stable Diffusion XL 上复现了 Müller 等人针对 Tree-Ring 语义水印的 Reprompt 伪造攻击,使用原作者发布的代码,在免费档双 T4 GPU(每卡可用显存 14.6 GB)上运行,单卡显存明显低于原研究使用的 A40。三组共六次试验中,真实图像检出 6/6,干净图像 0/6,伪造图像 5/6,每次攻击耗时 325-332 秒。作者还从检测器源码中恢复了被丢弃的非中心卡方统计量,其恢复结果与已发布检测器完全一致,基于该统计量构造的两个分数在同一批 18 个观测上以 AUC 0.861 和 0.972 区分伪造组与干净零假设。

Paper analysis

6 questions; open one to read the full answer

  1. What problem does this paper attempt to solve?

    作者针对的问题是:不见密钥也能伪造Tree-Ring,使其不能单独当来源证据。

    语义水印若能被不见密钥的攻击者伪造,就不能单独充当图像来源证据。

    • 场景: 作者称文生图扩散模型已使“图是否机器生成”不再只是学术问题,水印是一种来源机制。Tree-Ring 把密钥图案写入初始噪声 latent,标记随采样轨迹走,不在像素上后加扰动,并能经过压缩、裁剪和模糊。
    • 不足: 作者称只抗失真不够。去除造成漏检,伪造造成误归属;来源声明依赖后一种错误率,鲁棒性结果并不涉及它。
    • 观察: 作者引 Müller 等人:环状图案能留在另一扩散模型的 DDIM 反演里。攻击者因此不需要密钥、梯度或目标模型的特权访问。
    • 做法: 作者用发布代码,在每卡可用显存 14.6 GB 的双 T4 上复现针对 SDXL 的 Reprompt,并恢复检测器丢弃的统计量。原评测使用 A40。
    • 威胁模型:
      • 目标: 造出与参考图不相像、但真检测器仍接受的新图,使非来源图像被归属到带水印模型。
      • 知识: 论文称为 black-box。不见水印密钥,无梯度,无目标模型特权访问。
      • 能力: 持有一张水印参考图;在从未见过密钥的代理里做 DDIM 反演,再按自选提示词从恢复的 latent 生成。
      • 受害系统: 防御方从密钥导出的 latent 生成;同一真检测器判定真图与伪造图。实验里目标是 SDXL,代理是 SD 2.1。
  2. What related research exists?

    作者将工作定位为对Tree-Ring伪造的独立复现,并只复现Reprompt。

    作者按语义水印、去除与伪造、Reprompt 之后的工作、以及复现研究来组织相关工作。

    语义水印

    • 频域与像素方案: Cox 等人(2007)做频域水印;HiDDeN(Zhu 等人,2018)用联合训练的编码器–解码器嵌消息;Stable Signature(Fernandez 等人,2023)微调生成器,使输出自带签名。
    • Tree-Ring: Wen 等人(2023)在初始高斯 latent 的傅里叶域写入同心环;检测用 DDIM 反演估计 z_T,再比较掩码系数与密钥。论文写明反演只是近似可逆,检测已经离嵌入量一次推理。
    • RingID: Ci 等人(2024)认为 Tree-Ring 的部分鲁棒性来自水印过程附带的分布偏移,且多密钥时该偏移帮不上忙,因而提出 RingID。作者称这两点与自己的单密钥设置有关。

    去除与伪造

    • 潜空间再生: Zhao 等人(2024)报告:潜空间加噪再生成可去除像素级水印,语义嵌入的标记能抵抗同一攻击。
    • WAVES: An 等人(2024)把失真、再生和对抗攻击做成压力测试。论文引其结果:Tree-Ring 对对抗嵌入和替代检测器攻击尤其脆弱,对普通失真则相对更稳。实验未使用该基准。
    • Gaussian Shading: Yang 等人(2024)提出另一种扩散水印。论文写 Müller 等人同时对它和 Tree-Ring 展示了伪造。

    伪造、绑定与检测

    • Reprompt 与 Imprint: Müller 等人(2025)用代理模型反演水印参考图再重生成。同文的 Imprint 优化封面图 latent;作者称其每次成本大约高两个数量级,论文未报告 Imprint 的具体耗时。
    • 后续伪造与防御: Zhu 等人(2025)的 Plug-and-Plant 不经优化,论文写其报告 up to 100% detectability。Zhou 等人(2026)的 MetaSeal 主张与内容无关、靠检测器验证的标记在结构上可伪造。Zhang 等人(2026)的 SemBind 把 latent 水印绑到图像语义上。
    • 失真下界: Lee 等人(2026)把黑盒伪造写成率失真问题,认为代理与目标不匹配会造成不可约失真下界,并用于方案无关的预验证。作者认为自己测到的中间带与该下界相符,且是独立测到的。

    复现研究

    • 产物可跑率: Olszewski 等人(2023)统计大约 750 篇机器学习安全论文:60% 未发布代码;已有产物中 56% 跑不起来。他们报告,产物评审委员会设立后,可得性没有 statistically significant 的变化。
    • 去除侧复现: Hwang 等人(2024)复现 Tree-Ring 的去除实验,未攻击时作者称与原文接近;旋转下 AUC 为 0.463,原文为 0.935。他们把差距追到像素旋转不等于 latent 旋转。作者称测量不一致时会直接写出。

    基线与基准: 对照数字是 Müller 等人对同一配对(目标 SDXL、攻击代理 SD 2.1)报告的检出率与平均 p(Table 2、Table 3)。实验没有另设攻击方法基线。

    作者把这项工作定位为:在单卡显存更小的机器上核实 Reprompt,并测量发布检测器丢掉的统计量。他们只复现 Reprompt,不对 Imprint 或未测方案作主张。

  3. How does the paper address this problem?

    用发布代码在双T4上复现Reprompt,并恢复检测器丢弃的非中心χ²统计量。

    作者不提出新攻击,而是用 Müller 等人发布的 Reprompt 复现 Tree-Ring 伪造,并保留检测器算完后丢掉的统计量。攻击概念、DDIM 反演、检测器、扩散模型和提示词集合来自 Müller 等人;循环组装、clean 臂和统计量恢复是这项工作自己的。

    水印与检测设定

    • 嵌入: Tree-Ring 在生成前改写 z_T 的傅里叶域,在一个通道的移位频谱上放密钥导出的同心环。本文配置为 ring pattern、circular mask、radius 10、channel 3、complex injection、l1_complex。
    • 统计量: 设 f 为恢复的掩码系数,t 为密钥图案,σ 为 f 的标准差,则 x=∑i((fi−ti)/σ)2, λ=∑i(ti2)/(σ2)。x 是标准化残差平方和,λ 是非中心参数。
    • 判定: 发布实现报告 p,即自由度 df、非中心参数 λ 的非中心 χ² 分布函数在 x 处的值。df 计入掩码系数的实部与虚部,此处 df=634。检出条件为 p<τ。SDXL 在 1% 假阳率下 τ=0.0261008646426459,正文比较时亦写作 0.0261。
    • 近似: 论文写明检测用的是 z_T 的估计,因为 DDIM 反演只是近似可逆。

    Reprompt 流程

    • 防御方: 由密钥得到水印 latent,在目标模型 u_T 上按提示词生成参考图。Figure 1 图注称,攻击者取一张参考图,在从未见过密钥的代理中反演,再从恢复 latent 生成无关图像;两张图由同一检测器接受。
    • 攻击方: 在代理 u_A 中做 DDIM 反演,得到估计 latent,再用无关提示词在 u_A 上重生成。新图交回目标上的真检测器。
    • 运行参数: 生成与反演均为 512×512、50 步、guidance scale 7.5、DDIM。目标为 SDXL base 1.0,代理为 SD 2.1 base。原 SD 2.1 仓库被撤回,作者改用同一权重的镜像。
    • 未复现的变体: Imprint 不在范围内。作者给出的理由是,按原文报告其每次成本大约高两个数量级,有意义样本量超出他们的算力配额。

    统计量恢复与两种分数

    • 接口: 发布检测器算出 σ、λ、x 后只返回 p;accuracy 接口返回 1−p。作者称 CDF 把强证据压到 0 附近,且 p 的差值不等于谱匹配程度的可比差值。
    • 恢复: 按同一算术重算,并保留 x、λ、df、σ。校验是把恢复的 x 送回同一 CDF,与发布检测器比较,要求绝对差低于 10^{-12}。
    • 两个分数: −x 越小表示越接近密钥;λ−x 用随图像变化的 λ 做偏移。作者称二者不是同一变换的两种写法,必须事先固定分数,不能看到分离后再挑;两个都报告,都不当作唯一标准。
    • 测量边界: 发布脚本的指标输出只写 p,所以测量不走该脚本。反演、生成、检测仍用仓库原语。两个模型分占 cuda:0 与 cuda:1,轮流换到主机内存。

    三臂、种子与门控

    • genuine: 在目标中由密钥 latent 生成,再反演回来。
    • clean: 同一提示词、普通高斯噪声,作为两个臂的经验零假设。作者称没有它就只能说是否过阈值。
    • forged: 真图在攻击模型中反演,用不相关提示词重生成,再交给目标检测器。同一次试验的三臂共用一个水印实例。
    • 种子: 生成种子为 123+i,六次为 123 到 128。水印密钥 w_seed 固定为 999999,不随试验变化。四道门分别问显存、墙钟、统计量能否恢复、三臂是否分开;作者称门本身不产生关于水印的发现。

    半精度与环境

    • 为何改精度: 发布代码把 DTYPE 固定为 fp32,没有半精度路径。作者把目标改为 fp16 以换余量;攻击者保持 fp32,因为 50 步反演需要余量,且其占用为 5.57 GB。
    • 溢出位置: 作者称检测曾返回 NaN latent,而图像质量指标仍正常。SDXL 自编码器配置 force_upcast=True,管线 __call__ 会处理该标志,但仓库在 vae_encode 与 latents_to_imgs 中直接调用,fp16 下溢出。
    • 补丁: fork 增加 _vae_upcast:在 fp16 且该标志为真时升到 fp32,调用后恢复,包住每次直接编码和解码。
    • 环境: 作者还记录分层镜像中卸载包装非幂等、HF_HOME 必须在首次 import 前设置、锁文件不能代替对已安装版本的检查。会话记录 fork 与上游 commit、模型、dtype、设备、库版本和依赖锁的 SHA-256。
  4. What experiments did the paper conduct?

    SDXL上六次试验genuine 6/6、clean 0/6、forged 5/6;λ−x的AUC为0.972。

    实验设置

    • 模型: 目标为 Stable Diffusion XL base 1.0,攻击代理为 Stable Diffusion 2.1 base(镜像)。二者均 512×512、DDIM、50 步、guidance scale 7.5。目标放 cuda:1,代理放 cuda:0。
    • 水印与阈值: Tree-Ring 发布默认,df=634。τ=0.0261008646426459,按原文 1% 假阳率标定;比较时写作 0.0261。检出条件为 p<τ。判定器是该检测器,不是 LLM。
    • 样本: 六次试验、三臂,共 18 个观测;生成种子 123–128;全部观测共用 w_seed=999999。提示词集合来自 Müller 等人,论文未给出条数。
    • 硬件与软件: 双 T4,每卡可用 14.6 GB;目标 fp16、代理 fp32。原实验为名义 48 GB 的 A40、全程 fp32,活动分到八张卡。记录会话为 PyTorch 2.10.0+cu128、CUDA 12.8、Python 3.12.13、transformers 4.46.3、diffusers 0.31.0。
    • 指标: 检出与否、p、x、λ、σ,以及 −x 和 λ−x 相对 clean 的 AUC。论文未报告与人工判定的一致性。
    • 重复: 完整流程在相隔 11 天的两次独立会话中各从干净环境跑一遍。除墙钟外,统计量一致到最后一位有效数字;墙钟相差 2.2%。下文数字来自第一次会话。

    主结果

    目标 SDXL、代理 SD 2.1,且代理不是目标本身。每臂 n=6,密钥固定。下表据 Table 2;原报告率是 Müller 等人对同一模型配对的数字。

    Swipe horizontally to read the table

    臂平均 x平均 λ−x检出原报告率
    genuine1096.5+220.06/61.00
    clean1623.9−626.30/60.01
    forged1391.2−371.35/60.97
    • 作者称攻击复现。 clean 臂平均 p 为 0.480,对照原文 0.472,六次没有假阳;作者称这是最直接核对检测器配置的一臂。genuine 每次都被检出。
    • 阈值距离: 作者称 forged 的中位 p 为 2.30×10^{-5},比 τ=0.0261 低三个数量级(Section 6.4、Figure 4)。发布入口的一次运行中,genuine 的 p 为 3.53×10^{-33},forged 的 p 为 3.13×10^{-6},两者都过阈值。
    • 与原文检出率的差: 作者称该差在 n=6 下没有意义;对伪造检出次数的 95% Wilson 区间为 0.44 到 0.97,包含 Table 2 的原报告率。作者并不声称攻击弱于原文。漏检那次的 x=1558.3,落在 clean 的 1483.7 到 1802.2 之内;作者称它不是擦边失败。Figure 3 图注称,圈出的点是这次漏检,其统计量落入 clean 范围。

    Table 3 中列对齐清晰的 p:clean 中位 4.56×10^{-1}、平均 4.80×10^{-1}、原平均 4.72×10^{-1};forged 中位 2.30×10^{-5}、平均 1.50×10^{-2}、原平均 5.20×10^{-3}。genuine 行的本次中位与平均 p 在文本抽取中指数与数字分行,此处不引用。表注称均值被各臂最大观测主导,所以并列给出中位数。

    分数与探索性不确定性

    • 测了什么: 在同一 18 个观测上,用 −x 与 λ−x 区分 forged 和 clean,并做 bootstrap、Mann-Whitney 与 Cohen's d。Figure 5 图注称两条曲线来自同一些观测,只是变换不同。
    • 结果: genuine 对 clean 的 AUC 在两个分数上都是 1.000。forged 对 clean:−x 为 0.861,λ−x 为 0.972(Section 5.3)。95% bootstrap 区间分别为 [0.58, 1.00] 与 [0.83, 1.00]。Mann-Whitney p:forged 对 clean 为 0.041,genuine 对 clean 为 0.002,genuine 对 forged 为 0.065。原始统计量上,forged 与 genuine 分别比 null 低 1.67 与 2.84 个合并标准差。
    • 作者解读: 作者称只换变换就会改变分离,分数必须事先固定。他们写明不作推断性结论。同 trial 的三臂是配对的;n=6 时双侧 Mann-Whitney 最小可达 p 为 0.0022,精确配对 Wilcoxon 为 0.0312。Bonferroni 取 α=0.05/3 时,作者称配对检验在两个分数上都不留下,未配对检验只在 λ−x 上留下。作者还称,二元决定会把成功伪造和真图报成同一类,而原始统计量里还能看见中间带。

    统计量恢复与失效的预测

    • 测了什么: G3 检查 x 能否恢复、有没有动态范围,以及 p 会不会下溢成恰好 0。
    • 结果: 18 个 x 互不相同,范围 889.1 到 1802.2,df=634;与发布检测器的最大绝对差为 0,低于 10^{-12} 的断言在全部 18 次上成立。p 恰好为 0 的次数是 0/18,最小值为 5.45×10^{-49}(Figure 4、Section 6.3)。σ 从 31.75 到 42.59,λ 从 856.6 到 1541.4,所以两个分数不单调相关。
    • 作者解读: 作者曾根据源码推断,强真图检测会使 CDF 下溢为恰好 0.0,并以此作为恢复 x 的理由。测量与该预测相反。作者称恢复原始统计量的理由仍是分数选择,不再是下溢。

    显存、墙钟与半精度探针

    • 显存: 一次生成后的峰值:代理 fp32 为 5.57 GB,目标 fp16 为 7.36 GB,目标 fp32 为 13.68 GB(Figure 2、Section 6.1)。三者各自都能放进单张 14.6 GB 卡;相关的是每卡余量,不是两卡之和。半精度不是跑通所必需,它多出 6.32 GB。作者称目标卡上大约剩下 7.2 GB,而不是不到 1 GB。
    • 墙钟: 发布入口在 T4 上为 325–332 s,两次会话分别是 332.0 s 与 324.8 s。作者引 Müller 等人:较小模型大约 30 秒,FLUX.1 单卡单批最多两分钟;并称自己的数字是其单卡范围的数倍。作者称对威胁模型重要的是绝对成本:伪造在可免费使用的硬件上不到六分钟。
    • 探针: 补丁后,imgs_to_latents 与 invert_z0 在两种 dtype 下都没有非有限值,检测 p 同为 1.6648×10^{-36},直到最后一位。作者称这只说明混合精度路径在该测试图上保持检测输出,不说明未打补丁的 fp16 自编码器本来就安全;探针跑在已经含 upcast 的 fork 上。

    其他消融与分析

    • 漏检伪造的 x=1558.3,clean 范围为 1483.7–1802.2(Section 6.4、Figure 3)。
    • Table 3 原文平均 p:genuine 为 1.10×10^{-21},clean 为 4.72×10^{-1},forged 为 5.20×10^{-3}。
    • 笔记 375 行,调用发布攻击为 1 行;作者称大约 45% 的代码只为构造可运行环境(Table 4、Section 7.1)。
    • P100 因 compute capability sm_60 被所装 PyTorch 2.10 排除,因而使用双 T4(Section 3.1)。
  5. What are some points that can be further explored?

    作者称最主要局限是全部观测共用一个密钥,且样本量不够做分布性主张。

    作者指出的局限与后续方向

    • 共用一个密钥: 全部观测的 w_seed 都是 999999,报告的变化是密钥内的,不能读成水印上的分布。作者称为该研究最主要的局限,也是后续首先要改的一点(Section 8)。他们写 Ci 等人已指出,多密钥情形正是 Tree-Ring 偏离单密钥行为之处。
    • 没有伪造检测基线: 只测量 Tree-Ring 检测器看到什么,不用其他方法分开伪造与真图。作者称 Lee 等人的预验证检测器是自然的下一步比较,他们尚未运行(Section 8)。
    • 样本量: 18 个观测、每臂 6 个。作者称足以说明攻击能复现、统计量能恢复,不够支撑分布性主张;AUC 应读成排序指示而不是校准估计。5/6 与 0.97 的差距在此规模无法分辨(Section 8)。
    • 攻击范围: 只含 Reprompt。作者称不对 Imprint 在该硬件上的行为作主张,因其每次成本大约高两个数量级(Section 8)。Section 7.4 还写只复现了 Tree-Ring,不对未测方案作主张,也不把它写成鲁棒性与可伪造性之间的一般关系。
    • 精度与原文不同: 原文全程 fp32,这里是打过补丁的混合精度。作者称探针只在补丁后的一张图上看到两种精度的检测相同,不能据此说 fp16 对检测统计量一般数值中性(Section 8)。
    • 只测未处理图像: 重压缩、缩放、截图未测。作者称两边都要经过匹配通道,才能讨论该条件下的行为(Section 8)。Conclusion 把下一步写成:跨簇改变水印密钥,并把真图与伪造图送入匹配的 laundering 通道。

    实验覆盖范围

    • 实际跑通的生成模型为目标 SDXL base 1.0 与攻击代理 SD 2.1 base。论文写明 FLUX.1-dev 因 T4 不支持 bfloat16 而未跑,并称这不说明方案在该模型上的行为;PixArt-Σ 使用 DPM 而非 DDIM,原文消融显示调度器会实质影响 latent 恢复,故未报告该比较(Section 3.1、Section 8)。
    • 测量为 6 个生成种子、3 臂、共 18 个观测,密钥固定为 999999;完整流程独立执行 2 次,相隔 11 天(Section 3.2、Section 6)。
    • 判定使用 Tree-Ring 的非中心 χ² CDF 与给定 τ。论文未报告 LLM 评审,也未报告与人工判定的一致性。
    • 论文报告了每臂检出、p、x、λ、σ、两种分数的 AUC、显存峰值和墙钟 325–332 s。论文未报告提示词条数。
    • 攻击代理使用 SD 2.1 镜像。作者称权重能加载并产生预期攻击行为,但未与原始发布做逐比特比较(Section 8)。
  6. Summarize the main content of the paper

    作者报告六次中伪造检出5/6,并称丢弃的统计量仍能分开伪造臂与干净臂。

    作者在双 T4 上复现了针对 SDXL Tree-Ring 的黑盒 Reprompt,并检查真检测器返回决定前丢掉的统计量。

    • 问题: 语义水印即使经过压缩、裁剪和模糊,只要不见密钥的人能造出真检测器接受的图,就不能单独支持来源声明。攻击者持有一张水印参考图,在代理里做 DDIM 反演后再重生成。
    • 设置: 目标是 SDXL base 1.0,代理是 SD 2.1 base,512 分辨率、50 步、DDIM。六次试验分 genuine、clean、forged,密钥固定为 999999。检出条件是 p<0.0261。
    • 检出: Table 2 中 genuine 为 6/6,clean 为 0/6,forged 为 5/6;单次攻击 325–332 秒。clean 平均 p 为 0.480,原文为 0.472。forged 中位 p 为 2.30×10^{-5}。
    • 分数: 同一 18 个观测上,forged 对 clean 的 AUC 在 −x 为 0.861,在 λ−x 为 0.972;genuine 对 clean 为 1.000。作者称分数必须事先选定。一次漏检的 x 落在 clean 范围内。
    • 作者结论: 作者称复现支持原结论:与目标不共享权重的代理,在免费硬件上六次中有五次伪造过阈值。他们同时报告,自己关于 p 会被左删失为 0 的预测不成立,18 次里最小 p 为 5.45×10^{-49}。检测器已经算出能把伪造臂放在 clean 与 genuine 之间的量,返回决定时把它丢掉。
Read originalarxiv.org