论文解读与源码复现|Decoder Gradient Shield:可证明防御 box-free 水印移除攻击(CVPR 2025)

发布时间:2026/10/20 9:37:42
论文解读与源码复现|Decoder Gradient Shield:可证明防御 box-free 水印移除攻击(CVPR 2025)
论文解读与源码复现Decoder Gradient Shield可证明防御 box-free 水印移除攻击CVPR 2025论文首页题目与摘要截图一、前言Box-free 模型水印是 AI 生成内容AIGC确权的主流方案给图像到图像模型去噪、风格迁移、超分……配一个水印编码器 E 和解码器 D模型输出的每张图都嵌着不可见版权标记事后用 D 即可验证归属——不需要访问模型内部白盒也不需要特定触发输入黑盒后门。此前所有鲁棒性工作都在加固水印编码器抗压缩、抗噪声、抗裁剪。香港城市大学等机构的这篇论文揭示了一个被忽视的后门解码器 D 本身。D 与 E 联合训练、内置了如何补偿水印机制的知识——攻击者只需黑盒查询 D、用全白的空水印 $W_0$ 当监督信号就能借梯度信息训练一个水印移除网络 R把 SOTA box-free 水印洗得一干二净。防御方案 DGSDecoder Gradient Shield极其优雅既然攻击靠 D 回传的梯度那就在 D 的黑盒 API 里重定向梯度方向——对水印化查询返回一个加了精心设计扰动的输出使攻击者的移除损失梯度转 90°–180°损失永不收敛。整个防御是一个闭式解$\mathbf{Z}^* -P\mathbf{Z} (PI)\mathbf{W}$单次运行 0.17 毫秒。二、方法解析2.1 攻击把 D 当作免费的水印验证器Box-free 水印流程$Y E(\mathrm{Concat}(M(X_0), W))$解码 $D: \mathcal{Y}\to\mathbf{W}$、$\mathcal{Y}^\complement\to\mathbf{W}_0$。E 与 D 联合训练论文式 1–3嵌入损失 保真损失。梯度移除攻击论文式 4–7攻击者训练移除网络 $R$损失为$$L_{Attack} \beta_1 \underbrace{|D[R(Y)] - \mathbf{W}0|2^2}{L{Removal}} \beta_2 \underbrace{|R(Y)-Y|2^2}{L_{A\text{-}Fidelity}}$$关键在梯度链式 7$\nabla L_{Removal} \propto 2(\mathbf{Z}-\mathbf{W}_0)^\top \frac{\partial \mathbf{Z}}{\partial R(Y)}$其中 $\mathbf{Z} D[R(Y)]$、$\frac{\partial \mathbf{Z}}{\partial R(Y)}$ 是 D 的梯度。对抗攻击文献证明该梯度可经黑盒查询估计——因此攻击在纯黑盒下可行且无防御时理论保证收敛实验中损失收敛到 $10^{-8}$ 量级。2.2 防御梯度重定向的闭式解防御者唯一能动的环节是 D 的 API 返回值。设 $\mathbf{Z}^*$ 为实际返回的扰动输出攻击者看到的梯度变为论文式 9$$\left(\frac{\partial L_{Removal}}{\partial R(Y)}\right)^* 2(\mathbf{Z}^-\mathbf{W}_0)^\top\frac{\partial \mathbf{Z}^}{\partial R(Y)}$$设计目标让该梯度与真实梯度方向偏转 90°–180°论文式 10同时保持输出质量 $\mathbf{Z}^*\approx\mathbf{W}$水印验证功能不受影响式 11。这是一个一阶微分方程解为论文式 12–14$$\mathbf{Z}^* -P\mathbf{Z} (PI)\mathbf{W}$$其中 $P$ 为正定矩阵。DGS 保护的解码器 API论文式 15$$D^*(S) \begin{cases} -P,D(S) (PI)\mathbf{W}, \text{若 } NC(D(S), \mathbf{W}) 0.96 \ D(S), \text{否则} \end{cases}$$即检测到查询输出接近水印 $\mathbf{W}$正常验证查询与恶意移除查询在 D 看来不可区分就返回重定向输出非水印图像查询原样返回。对正常用户扰动只加在提取出的水印图上不影响验证。图片源自论文 Figure 3DGS 在解码器黑盒 API 中的位置。查询 S 经 D 解码后若输出近似水印 W 则触发重定向-P·Z (PI)·W否则原样返回。2.3 为什么需要 P ≠ I转角与限速的双重设计若 $PI$纯符号翻转转角 180°攻击者观察到损失不降就能翻转符号还原真梯度。取 $P \Lambda$对角正定、元素不等时$-P$ 产生 90°–180° 之间的转角——攻击者翻转符号后真梯度分量仍偏 0°–90°无法完全恢复。更进一步把 $\Lambda_i$ 取得极小如 $10^{-7}$–$10^{-6}$即使攻击者恢复出正确方向学习率也被压到可忽略——方向防御 速率限制双重保险。三、数据集与实验设置任务与数据图像去雨经典低层任务与风格迁移高层任务PASCAL VOC 12,000 张训练图对半分6,000 训练受害模型、6,000 训练移除器去雨输入用 [30] 算法生成风格化用 [12] 算法生成统一 256×256 灰度图。受害模型SOTA box-free 水印方案[34][33] 的扩展版M/E/D 按原文架构与超参从头训练 100 epochsAdamlr 2e-4$\alpha_1\alpha_21$。移除器 RUNet 架构同样 100 epochs$\beta_1\beta_21$。指标保真 PSNR / MS-SSIM防御成功率SR 经移除攻击后水印仍被成功提取的比例。损失失配测试DGS 基于 ℓ2 损失推导攻击者分别用 ℓ1、ℓ2、ℓ2一致性损失模拟现实中攻击者损失未知。对抗处理测试JPEG 压缩10–40%、高斯白噪声0–30dB、lattice attack每 2–16 像素随机替换、梯度符号翻转$\Lambda_i$ 取 5 个数量级区间。四、关键实验结果1. 无防御时攻击必然成功DGS 下损失永不收敛Figure 4两个任务上无防御的移除损失收敛到 $10^{-8}$–$10^{-14}$彻底洗掉水印部署 DGS 后无论攻击者用 ℓ1、ℓ2 还是 ℓ2一致性损失损失曲线几乎水平——DGS 从 ℓ2 推导却对损失失配鲁棒。同时真实损失 $|\mathbf{Z}-\mathbf{W}_0|^2$ 反而上升收敛到高位Figure 5即水印保持完好。2. 定性验证Figure 6/7无防御时 $D[R(Y)]$ 输出接近全白水印消失DGS 下 $D^[R(Y)]$ 仍清晰呈现水印图案且 $D[R(Y)]$ 与 $D^[R(Y)]$ 肉眼无差——保真与防御兼得。3. 计算开销近零单次 DGS 处理在 RTX5000 上平均1.65×10⁻⁴ 秒去雨/8.45×10⁻⁵ 秒风格迁移——闭式解只是一次矩阵运算。4. 鲁棒性全绿Table 1–3JPEG 压缩 10%、噪声 10dB、lattice attackstep 2每 3 个像素改 1 个下SR 全部 1.00唯一例外是 0dB 强噪声下风格迁移 SR 降到 0.58此时图像质量已严重劣化攻击失去意义。5. 梯度符号翻转的攻防Figure 8$\Lambda_i \in [10^{-4},10^{-3}]$ 时攻击者翻转符号可部分恢复学习$\Lambda_i$ 缩至 $[10^{-7},10^{-6}]$ 或更小后DGS 依然稳固——验证了小特征值限速的设计。6. 跨任务泛化去雨与风格转移表现一致——DGS 对数据分布不敏感可推广到其他 image-to-image 任务。五、机制解释与讨论为什么对验证输出做手脚不破坏水印系统关键洞察是 Situation 1 与 Situation 2 的不可区分性正常用户查询 $D(Y)$ 与攻击者查询 $D[R(Y)]$ 在 D 的输出端都是 $\approx\mathbf{W}$。既然无法区分就统一返回重定向输出——正常用户拿到的水印图被加了扰动但验证用的是归一化互相关NC0.96 阈值扰动后仍稳过攻击者拿到的却是方向被转、幅度被压的梯度。具体发现 → 凝练结论具体发现一无防御时移除损失收敛到 $10^{-8}$–$10^{-14}$ —— 结论box-free 解码器是水印系统最薄弱且被完全忽视的攻击面具体发现二ℓ1/ℓ2/一致性损失下 DGS 全部有效 —— 结论闭式解破坏的是梯度下降收敛这一学习机制本身而非针对特定损失形式具体发现三$\Lambda_i$ 缩小 4 个数量级可抵御符号翻转 —— 结论当方向防御可被逆向时速率限制是保底手段。与已有梯度防御的关系分类模型的 prediction poisoning / gradient redirection 是递归式需要维护扰动序列DGS 是一次性闭式解——作者强调这是此类防御首次用于 image-to-image 模型且形式上更简洁。六、局限与工程启示论文自述的局限5.5 节若攻击者能从观测 $\mathbf{Z}^*$ 反解出隐藏的 $\mathbf{Z}$式 14 的逆变换DGS 可被完全克服——作者在论文中给出了逆变换的形式并讨论了其可行条件属于开放问题。工程启示水印系统的威胁模型必须包含自家解码器任何提供水印验证 API 的服务都应假设梯度可被观测黑盒梯度估计技术成熟且查询开销在持续下降DGS 是API 层的一行改动一次矩阵乘 一次 NC 检查部署成本近零适合作为现有 box-free 方案如 [33]/[34] 类的即插即用补丁$P$ 的选择是安全-性能旋钮$\Lambda_i$ 越小防御越强但输出扰动幅度随之变化——需要按业务的水印验证阈值NC 0.96校准方向转走 速率压死的双重设计思路适用于一切梯度外泄即风险的 API 服务。七、源码复现官方仓库https://github.com/haonanAN309/CVPR-2025-Official-Implementation-Decoder-Gradient-Shield本地目录复现代码/1218-Decoder_Gradient_Shield/预训练受害模型官方 Google Drive 提供⚠️ 复现路径/未运行以下为源码结构与预期运行路径分析非实际运行结果。7.1 仓库目录结构实际下载内容1218-Decoder_Gradient_Shield/ ├── README.md # 项目说明与权重下载 ├── derain/ # 去雨任务 │ ├── derain_attack_l1_loss.py # 移除器训练ℓ1 移除损失 │ ├── derain_attack_l2_loss.py # ℓ2 损失变体 │ ├── derain_attack_l2_consist_loss.py # ℓ2一致性损失变体 │ ├── derain_no_defense.py # 无防御基线 │ ├── models/{HidingUNet,HidingRes,CGanGenerator,...}.py # R/E/D 架构 │ ├── data/ImageFolderDataset.py │ └── secret/ # 水印图案IEEE/PAMI/AAAI 等 logo └── style_transfer/ # 风格迁移任务同构的四套脚本仓库组织为攻击脚本 × 3 种损失 无防御基线 × 2 个任务——即论文 Figure 4 的全部实验设定DGS 防御本身是闭式解论文式 15在解码器 API 返回前施加。7.2 关键代码片段摘自derain/derain_attack_l1_loss.py移除器 R 的训练循环HidingUNet 作移除网络、HidingRes 作水印解码器$\ell_1$ 移除损失 MSE 保真损失的加权求和对应论文式 4 的 $\beta_1, \beta_2$# derain/derain_attack_l1_loss.py节选 mse_loss nn.MSELoss().cuda() criterion_pixelwise nn.L1Loss().cuda() # ℓ1 移除损失变体 for epoch in range(opt.niter): # 100 epochs, Adam lr2e-4 train(train_loader, epoch, RemoverRemover, HnetHnet, EnetEnet) val_mseloss, val_l1loss, val_consistloss, val_sumloss validation(...) schedulerRemover.step(val_sumloss) # ReduceLROnPlateau if val_sumloss globals()[smallestLoss]: # 保存最优移除器 torch.save(Remover.module.state_dict(), %s/Remover_epoch_%d,sumloss%.6f.pth % (opt.outckpts, epoch, val_sumloss))DGS 防御闭式解按论文式 15 实现于解码器 API# DGS解码器黑盒 API 的重定向依据论文式(14)(15)整理 import torch def dgs_protected_decode(D, S, W, P, nc_fn, threshold0.96): Z D(S) # 原始解码输出 if nc_fn(Z, W) threshold: # NC(D(S), W) 0.96 # 式(15)Z* -P·Z (PI)·W —— 梯度重定向 I torch.eye(P.size(0), deviceP.device) return -P Z (P I) W return Z # 非水印查询原样返回7.3 复现步骤环境PyTorch CUDA无额外特殊依赖架构基于经典 hiding-network 代码库。受害模型从官方 Google Drive 下载预训练 M/E/D或按 [34] 的设定从头训练PASCAL VOC 对半分、100 epochs、Adam 2e-4。攻击复现无防御基线python derain_no_defense.py --datasets derain验证移除损失收敛至 $10^{-8}$ 量级Figure 4 的基线曲线。损失失配实验分别运行derain_attack_l1_loss.py/derain_attack_l2_loss.py/derain_attack_l2_consist_loss.py风格迁移任务对应style_transfer/下同名脚本。DGS 防御在解码器返回处接入上面的闭式解选对角 $P\Lambda$按论文 Figure 8 扫 $\Lambda_i \in {[10^{-4},10^{-3}],...,[10^{-8},10^{-7}]}$复测移除损失与 SR。鲁棒性测试对 API 返回值施加 JPEG10–40%、WGN0–30dB、lattice attackstep 2–16与梯度符号翻转统计 SRTable 1–3。7.4 从攻击者视角理解 DGS 的安全边界DGS 的目标不是让解码器“拒绝回答”而是在保留验证可用性的前提下阻止返回值成为可训练移除器的有效监督。这里需要区分三个对象水印图像本身、解码器真实输出 (Z)以及 API 对外返回的 (Z^*)。用户调用 API 时看到的是经过映射的值而攻击者的优化过程也必须依赖这个值产生的损失梯度。因此防御是否成立不能只看单次输出和水印图案是否相似还应观察攻击训练过程中损失是否持续下降、最终水印能否被原解码器检测。从部署角度看阈值检查是一个重要边界。(NC(D(S),W)0.96) 时才触发重定向意味着系统假定正常验证样本与恶意移除过程中的中间样本都会落入水印邻域。阈值过高攻击训练中偏离水印的查询可能绕过防护阈值过低更多边界样本会触发变换验证端需要确认输出仍符合业务的误报要求。论文实验覆盖特定攻击设定但真实 API 仍应记录查询分布、触发比例与验证结果避免把论文阈值不加校准地视为通用常数。矩阵 (P) 的选择也不是单纯“越小越安全”。对角元素控制各维度上的梯度重定向与缩放非均匀取值降低攻击者靠整体符号翻转恢复方向的机会而足够小的特征值还能抑制步长。但若变换影响验证所依赖的相关性正常识别率就可能下降。工程验证因此应同时报告攻击成功率、合法水印检出率、输出偏差和每次 API 的耗时并对不同水印模板及强度做分层测试。7.5 复现实验的判读建议复现时建议先固定数据划分、受害模型权重和随机种子再跑无防御基线确认攻击实现确实能学到移除器随后只替换解码器 API 层保持训练预算不变。这样才能把差异归因于 DGS而不是数据或优化器变化。除论文报告的训练损失外还应保存每个 epoch 的验证水印相关性与图像保真指标单看损失曲线可能把“攻击优化失败”误判为“防御成功”而独立验证可以确认水印是否仍在。损失失配实验则用于检验防御是否只针对特定目标函数。ℓ1、ℓ2 与加入一致性项的组合代表攻击者可能采用的不同目标若只复现其中一种无法支撑“对未知损失鲁棒”的论断。符号翻转测试也应与 (P) 的特征值扫描分开记录避免把普通超参数效应与针对性反制混为一谈。最后JPEG、噪声和 lattice 变换属于攻击后处理应在攻击器训练结束后统一施加并明确变换顺序和随机参数。八、总结DGS 把对抗样本思维第一次用在防御侧堵上了 box-free 水印体系最隐蔽的洞攻击者不需要攻破编码器只需要查询解码器就能练出移除网络。防御的答案是一个闭式解——在 API 里把接近水印的输出做 $-PZ (PI)W$ 变换让攻击梯度转 90°–180°、再被小特征值压住学习速率而正常用户的验证体验分毫不差0.17ms 开销、SR 全 1.00、跨损失失配鲁棒。对所有做 AIGC 确权/水印的团队这是一个必须纳入威胁模型、且几乎免费就能修的漏洞。延伸阅读建议box-free 水印原始方案论文引用的 [33]/[34]、FGSM/PGD梯度攻击经典、黑盒梯度估计论文威胁模型的依据、prediction poisoning / gradient redirection分类模型的梯度防御对照、模型抽取攻击综述。九、引用信息论文引用Haonan An, Guang Hua, Zhengru Fang, Guowen Xu, Susanto Rahardja, Yuguang Fang. Decoder Gradient Shield: Provable and High-Fidelity Prevention of Gradient-Based Box-Free Watermark Removal. CVPR, 2025.论文 PDFhttps://openaccess.thecvf.com/content/CVPR2025/papers/An_Decoder_Gradient_Shield_Provable_and_High-Fidelity_Prevention_of_Gradient-Based_CVPR_2025_paper.pdf官方仓库https://github.com/haonanAN309/CVPR-2025-Official-Implementation-Decoder-Gradient-Shield