AngelFingerprint: A Traceable, Explainable, and White-Box Stealthy Watermark for Text-Guided Image Editing
Organizations: National Taiwan University, Taiwan · National Institute of Informatics, Japan
Abstract
Text-guided diffusion editing raises disinformation concerns, making reliable image provenance essential. While watermarks are commonly used for this purpose, most methods carry a fixed ID that cannot explain what was changed and which prompt produced it. Furthermore, under open-source white-box access, attackers can easily locate and remove watermarks added as separate modules. Targeting this setting, we propose AngelFingerprint, a novel watermarking framework ensuring edit traceability, explainability, and white-box stealthiness. It integrates a LoRA into the diffusion model to embed the editing prompt's CLIP text embedding directly into the model's weights. An extractor then recovers this embedding from the image pixels alone. This semantic payload explains the edit, while the weight-integrated design makes it hard to detect and isolate even under full white-box access. Two techniques make this possible: a velocity-alignment anchor that preserves edit quality, and a specially designed frequency filter that keeps the watermark imperceptible yet recoverable and robust. On the MagicBrush dataset, our extractor achieves top-1 accuracy in a 200-way prompt retrieval, versus for prompt inversion.
Figures & tables
| Method | Watermark carrier | Payload | Capacity | White-box stealthy | Recovers prompt |
| Non-semantic payload watermarks | |||||
| Stable Signature ( 2023 ) | VAE decoder weights | fixed bit string | 48 bits | Partial | No |
| Tree-Ring ( 2023b ) | initial latent noise | detection key | zero-bit | No | No |
| Gaussian Shading ( 2024 ) | initial latent noise | fixed bit string | 256 bits | No | No |
| Spherical ( 2026 ) | initial latent noise | fixed bit string | 512 bits | No | No |
| SEAL ( 2025 ) | initial latent noise | semantics-derived key | zero-bit | No | No |
| Embedding similarity | Retrieval | ||||||||
| Method | Top-1 | Top-1 off | Top-5 | Top-10 | MRR | ||||
| BLIP-2 ( Li et al. 2023 ) | 0.550 | 0.430 | 0.120 | 0.215 | 0.330 | 0.510 | 0.650 | 0.354 | |
| PromptStealer ( Shen et al. 2024 ) | 0.099 | 0.005 | 0.094 | 0.215 | 0.350 | 0.495 | 0.570 | 0.342 | |
| Florence-2 ( Xiao et al. 2024 ) | 0.158 | 0.026 | 0.132 | 0.225 | 0.315 | 0.505 | 0.660 | 0.363 | |
| VGD ( Kim et al. 2025 ) | 0.385 | 0.301 | 0.084 | 0.160 | 0.305 | 0.405 | 0.490 | 0.277 | |
| Ours (UltraEdit) | 0.750 | 0.378 | 0.372 | 0.655 | 0.005 | 0.950 | 0.970 | 0.780 | |
| Visual fidelity (LoRA on vs. off) | Retrieval | ||||||
| Method / extractor-input filter | DreamSim | LPIPS | PSNR | SSIM | FID | KID | Top-1 |
| w/o any filter | 0.319 0.092 | 0.366 0.060 | 20.85 1.64 | 0.650 0.095 | 156.2 | 0.0093 0.0053 | 0.605 |
| Gaussian high-pass ( ) | 0.222 0.091 | 0.297 0.062 | 22.92 2.12 | 0.704 0.097 | 133.6 | 0.0085 0.0037 | 0.805 |
| JPEG mid-band mask (ours) | 0.221 0.083 † | 0.299 0.062 | 22.91 2.02 | 0.704 0.095 | 132.1 | 0.0032 0.0029 | 0.860 |
| † The DreamSim values of TreeRing ( 2023b ) and AquaLoRA ( 2024 ) (SD1.5, 48-bit) are 0.301 and 0.201, respectively | |||||||
| FID | KID ( ) | |
|---|---|---|
| Vanilla SD3 w/o LoRA | 158.6 | 8.47 2.79 |
| No filter | 181.3 | 26.57 5.07 |
| Gaussian high-pass | 173.1 | 24.59 3.98 |
| JPEG mid-band mask | 164.8 | 13.62 3.18 |
Appendix figures & tables9 assets
Supplementary material from the paper’s appendix.
Appendix
| Top-1 | MRR | |||||
|---|---|---|---|---|---|---|
| Method | no WM | WM | no WM | WM | ||
| BLIP-2 ( Li et al. 2023 ) | 0.330 | 0.215 | 0.455 | 0.354 | ||
| PromptStealer ( Shen et al. 2024 ) | 0.350 | 0.215 | 0.464 | 0.342 | ||
| Florence-2 ( Xiao et al. 2024 ) | 0.315 | 0.225 | 0.444 | 0.363 | ||
| VGD ( Kim et al. 2025 ) | 0.305 | 0.160 | 0.409 | 0.277 | ||
| Ours (extractor) | 0.000 | 0.860 | 0.034 | 0.917 | ||
| Retrieval | Embedding | Retention % | |||||||
| Attack | Level | Top-1 | Top-5 | Top-10 | MRR | Ret | Ret | ||
| Clean | – | 0.860 | 0.990 | 1.000 | 0.917 | +0.802 | +0.438 | 100 | 100 |
| Color jitter | 0.845 | 0.985 | 0.995 | 0.909 | +0.800 | +0.435 | 98 | 99 | |
| 0.845 | 0.985 | 0.995 | 0.909 | +0.798 | +0.433 | 98 | 99 | ||
| 0.830 | 0.980 | 0.990 | 0.900 | +0.796 | +0.431 | 97 | 98 | ||
| 0.835 | 0.980 | 0.990 | 0.902 | +0.794 | +0.429 | 97 | 98 | ||
| train | dev | |
| edit turns | 8,807 | 528 |
| unique sessions | 4,512 | 266 |
| mean turns / session | 1.95 | 1.98 |
| max turns / session | 3 | 3 |
| mean instruction words | 6.5 | 6.5 |
| median instruction words | 6 | 6 |
| Signal | A vs B | A vs C | A vs B+C |
|---|---|---|---|
| 1.0000 | 1.0000 | 1.0000 |
| Group | mean | std | 5th % | 95th % |
|---|---|---|---|---|
| A (watermarked) | 40.34 | 7.69 | 27.82 | 53.79 |
| B (LoRA off) | 7.06 | 1.43 | 5.41 | 10.08 |
| C (natural) | 6.73 | 1.19 | 5.31 | 8.92 |