研究者提出 SeedSnitch 与 PromptPirate,利用种子漏洞窃取扩散模型提示词
Prompt Pirates Need a Map: Stealing Seeds helps Stealing Prompts
PromptPirate靠恢复种子后用遗传算法偷提示词;CivitAI上95%种子可于140分钟内暴力恢复。
攻击者要从公开图像恢复秘密提示词,使新图在风格、构图与显著属性上接近原图。
- 文本提示词被作者视为扩散模型生成内容的商业资产,但在线提示词恢复常用的相似度损失更随初始种子变化,而不是随风格修饰词变化。CPU上PyTorch的MT19937只使用种子低32位,使暴力搜种子可行。
- SeedSnitch比较目标图编码潜变量与候选种子噪声的MSE来找回种子。PromptPirate假定主体前缀与种子已知,用遗传算法组合风格修饰词,适应度同样是潜空间MSE,跑25代、每代150个个体。
- 实验室在0–100000内1000次种子恢复均为100%。CivitAI 895张识别正确率95%;50张CPU图32位搜索全部成功,约140分钟/图。已知主体时PromptPirate的LPIPS为0.52±0.14(Table 6)。
- 论文未设局限专节。作者写明已发布图像无法事后阻止该窃取,并建议换更大种子空间的密码学RNG。实验覆盖SD 3.5三变体、Shen数据集与CivitAI,提示词对比100张、重复5次;未报告人工一致性。
- 威胁模型
- 攻击者要从公开图像恢复秘密提示词,使新图在风格、构图与显著属性上接近原图。已知精确扩散模型、编码器、超参数与噪声生成策略;种子假定私有。受害对象是公开可用扩散模型生成的公开图像。
- 被测模型
- Stable Diffusion 3.5 LargeStable Diffusion 3.5 MediumStable Diffusion 3.5 TurboStable Diffusion 3.5 Large Turbo
- 基准
- Shen et al. datasetCivitAI
- 指标
- LPIPSCLIP similaritySemantic similarityLatent-MSEseed identification accuracy
研究者发现主流图像生成框架存在噪声生成漏洞(CWE-339),源于 PyTorch 在 CPU 上生成初始随机噪声时将种子值限制在 2^32 范围内。基于该漏洞,他们开发了种子恢复工具 SeedSnitch,对 CivitAI 平台分享的图像进行大规模实证分析,约 95% 的图像种子可在每个种子 140 分钟内被暴力破解。利用恢复的种子,他们进一步提出基于遗传算法的提示词窃取方法 PromptPirate,在 LPIPS 相似度上比 PromptStealer、P2HP 和 CLIP-Interrogator 等现有方法提升 8-11%。研究还提出了简单有效的缓解措施,可使种子窃取及基于优化的提示词窃取失效,并已负责任地披露漏洞并与开发者协调修复。
深度解读
这篇论文试图解决什么问题?
作者称未知种子时,在线提示词窃取的相似度损失更受种子而非修饰词驱动。
在线提示词窃取若不掌握生成时的初始噪声种子,基于相似度优化的恢复会被种子主导的损失带偏。
- 场景:作者称提示词承载风格与商业价值。文中引 Shen et al. 的估计:PromptBase 前 50 名卖家在 2022 年九个月内约售出 45,000 条提示词,收入约 186,525 美元;风格一旦被复现,可能损害真实性与收益。
- 现有不足:离线分类器要为大量种子与修饰词组合渲染图像,模型或训练集一变就要重训。在线方法可换模型版本,但优化更长;作者称其距离函数更依赖种子而非视觉相似度,Table 1 示意无种子攻击会得到偏离原提示词的结果。
- 观察:作者称 Latent-MSE、LPIPS、CLIP 对换种子比对换风格修饰词更敏感,未知种子时既有在线提取不可靠。
- 本文做法:用 SeedSnitch 暴力恢复种子,再用遗传算法 PromptPirate 在已知种子上恢复风格修饰词,并讨论使此后种子窃取失效的对策。作者称已按 CERT/CC 的 45 天流程做负责任披露,窗口已过。
- 威胁模型:
- 目标:恢复能再现风格、构图与显著属性的提示词,以生成视觉上接近原图的新图像。
- 知识:已知精确生成模型及其编码器、超参数和噪声生成策略。作者称模型可从图像用分类方法推断或验证,超参数与调度器常可从论文和代码仓库得到。
- 种子:按作者设定的现实场景,初始噪声种子私有。作者以 CivitAI 2025 年 8 月最受喜欢的 50 次上传里只有七个不同模型为例,说明模型候选集可缩小。
- 受害对象:用公开可用扩散模型生成、并已公开的图像;作者举的场景包括提示词市场和 AI 生成艺术。
有哪些相关研究?
相关工作分离线分类、在线优化与种子语义;作者称本文把种子恢复接到提示词窃取上。
离线提示词恢复
- PromptStealer(Shen et al.,2024):用字幕模型恢复主体,用多标签分类器推断风格修饰词。引言称其离线阶段耗费大,且扩散模型一更新就要从头重训。
- Reverse Stable Diffusion(Croitoru et al.,2024):先从生成图预测句子嵌入,再解码成文本。第 7 节称这类学习方法要大型配对数据,且每个新模型版本都要重训。
在线提示词恢复
- P2HP(Mahajan et al.,2024):在去噪后期优化 token 嵌入,再映回词表,恢复离散 hard prompt。作者在第 4.4 节称其超过 PEZ 等数值优化方法,故选为基线;本文实验未单独报告 PEZ 的数字。
- Williams et al.(2024):比较包括 PEZ 在内的离散优化器。作者转述其发现:基于 CLIP 的目标常对文本嵌入过拟合,简单字幕基线有时更好。
- CLIP Interrogator(2022):用视觉语言模型生成主体,再用 CLIP 对预计算修饰词嵌入排序并贪心组合。第 3 节称它与 P2HP 都未考虑种子,因而常陷入局部最小。
种子语义与其他泄漏
- Xu et al.(2025):训练分类器,在 1,024 个种子的固定范围内预测种子,作者称准确率 near-perfect,并讨论更易出高保真图的 “golden” seeds。作者认为该分类器是不必要的抽象:精确种子可不靠学习模型恢复,且不必限制在 1,024 个候选内。
- 训练数据泄漏:Carlini et al.(2023)从扩散检查点抽出受版权保护的图像;Duan et al.(2023)做扩散模型成员推断;Hilprecht et al.(2019)报告 GAN 与 VAE 的类似问题。作者称这些工作主要是训练数据泄漏,本文则是生成种子与提示词的泄漏。
基线与数据:实验对比基线为 PromptStealer、CLIP Interrogator、P2HP,均用默认配置。提示词实验用 Shen et al. 数据集;真实图像案例用 CivitAI 上带生成元数据的 Stable Diffusion 3.5 图像。
作者在第 7 节的定位是:先前工作或者忽略种子并依赖监督训练,或者在无种子知识下反演提示词,或者只研究种子语义而不把它和提示词机密性联系起来。作者称 PromptPirate 在线、因此与模型版本无关;并称据他们所知,这是首个在图像生成模型中识别并利用 CWE-339、也是首个系统研究种子信息对提示词窃取之影响的工作。
论文如何解决这个问题?
SeedSnitch用潜空间MSE暴力找回种子,PromptPirate再用遗传算法搜风格修饰词。
整体是先找回初始噪声种子,再在该种子固定的生成路径上搜索风格修饰词。作者把两部分分别称为 SeedSnitch 与 PromptPirate。
生成过程与窃取目标
- 记提示词为 p、种子为 s、条件扩散模型为 Mθ。种子经 PRNG 得到初始噪声,再去噪并解码。完整生成写成 I=G(p,s,θ)=D(Mθ(PRNG(s),p)),即图像由提示词、种子和模型参数共同决定。
- 提示词窃取的形式化目标是:给定已知模型 G 生成的目标图,在提示词空间上最小化相似度损失 L。L 可以是 CLIP、LPIPS 或 MSE;种子 s′ 可以固定或变化。作者认为不固定到真实种子时,这个最小化不可靠。
- 修饰词子问题假定主体前缀已知、种子已恢复。目标是在修饰词组合空间 S_M 上最小化潜空间 MSE,即 argminm∈ SMMSE(z0,z0,m,s)。z0 是原图潜变量,z_{0,m,s} 是用修饰词组合 m 与恢复种子 s 生成的潜变量。
两类实现漏洞
- V1,种子区间过小:论文举例为从 0 到 100,000 抽样,并称 Stable Diffusion 3.5 参考实现即如此,对应搜索空间 2^16.6。
- V2,CPU 上的 PyTorch RNG:显式或隐式使用 CPU 的
torch.randn时,默认 MT19937 只用种子低 32 位;实现把种子与 0xffffffff 相与。因此更大的 64 位种子会折叠到至多 2^32 条序列。 - Table 3 将六个实现归类:AUTOMATIC1111(153K stars,仅 macOS 版为 V2)、ComfyUI(78.1K,V2)、Diffusers(30.7K,仅某些配置为 V2)、Easy Diffusion(9.9K,V1)、InvokeAI(25.2K,V2)、Stable Diffusion 3.5(1.2K,V1/V2)。
- 披露:45 天窗口已过。作者称 Hugging Face 已确认 Diffusers 报告,但暂不计划立即修改,缓解可能放入以后的版本;Easy Diffusion 在讨论;其余项目当时尚未回复。
SeedSnitch
- 作者假设种子与生成图的潜表示之间有可度量对应,因此不做分类器训练。给定目标图 I,用扩散模型编码器得到 z0=E(I);对候选种子 s 计算 ϵs=PRNG(s),再取二者逐元素 MSE。损失最低的种子即为预测种子。
- 第 3.3 节的方法是全维潜变量比较。后文案例研究里的两阶段截断比较是实现上的加速,不是这一节的定义。
遗传算法恢复修饰词
- 作者称梯度法不适合离散 token:能把模型导向某张图的潜向量常常只是局部最小,最近 token 投影会扭曲视觉特征。他们称遗传算法是本文首个用于修饰词窃取的优化方法,理由是它适用于不可微问题。
- 初始化:每个个体含 3 到 12 个随机修饰词;只保留在 Shen et al. 训练提示词中出现至少 1% 的修饰词。作者称这是为了减噪声、加快收敛。
- 适应度:用已知前缀加候选修饰词,以及已恢复种子,在 Stable Diffusion 3.5 Large Turbo 上生成图像。该模型的去噪步数是其标准对应模型的 1/10。适应度为潜空间 MSE,越低越好。
- 遗传操作:锦标赛选择;变长单点交叉,不在单个修饰词内部切断,长度不合法则截断或补词;替换、插入、删除概率分别为 0.15、0.03、0.02;每代最优的 5% 原样复制到下一代。
- 预算:25 代,每代 150 个个体;每代记录 MSE 最低的候选,作为最终修饰词组合。
作者给出的对策
- 对已发布图像,作者写明无法使 SeedSnitch 与 PromptPirate 失效。对以后的生成,他们讨论 PyTorch 的 CSPRNG 扩展:从
/dev/urandom取数再用 AES 的模式不能设种子;可设种子的模式仍是 MT19937 再经 AES,种子空间仍是 32 bit。作者称只换上该扩展并不足够。 - 作者建议改用可设种子的密码学 RNG,文中举例 ChaCha20,种子范围扩大到 256 bit。他们报告:换掉默认 RNG 后,噪声采样步约增至 8 倍;该步只占端到端生成时间的 0.005%(SD 3.5 Large)到 0.037%(SD 3.5 Turbo),故称总开销可忽略。
论文做了哪些实验?
Table 6已知主体下PromptPirate的LPIPS为0.52±0.14;CivitAI种子识别95%。
实验设置
- 生成模型:种子实验使用 Stable Diffusion 3.5 Large、Medium、Turbo。适应度生成使用 Stable Diffusion 3.5 Large Turbo。提示词对比中,每张目标图用“该方法开发时所针对的 Stable Diffusion 模型”生成;论文未写出各基线对应的具体版本名。
- 数据:Shen et al. 数据集。Section 4.1 与 4.3 各用 1,000 条提示词;Section 4.2 的噪声近似也用 1,000 条。提示词窃取用其测试集 100 张图,重复 5 次取平均;错误种子消融 N=50。CivitAI 整理后 895 张(Large 640、Medium 179、Turbo 76),另选 50 张做完整 32 位搜索。
- 基线:PromptStealer、CLIP Interrogator、P2HP,默认配置。已知主体时,作者改了 P2HP 的第二步优化,把正确主体直接前置。PromptPirate 的修饰词来自 Shen et al. 训练集、出现率至少 1%;未知主体时,主体由论文所称 “their provided captioning model” 生成,未给出该模型名称。
- 评测协议:假定种子已知,但比较时不复用生成目标图的原始种子,而把原提示词与候选提示词用各方法共享的固定种子重渲染,换 5 个种子取平均。优化阶段用的“已知种子”与该评估种子是否为同一枚,论文未说明。
- 指标:Section 4.1 的 CLIP 是 1 减余弦、LPIPS 与 Latent-MSE 越低越相似。Table 6 的 LPIPS、CLIP、Semantic 都标为越高越好;CLIP 为图像嵌入余弦,Semantic 为原提示词与恢复提示词的 CLIP 文本嵌入余弦。论文未说明表中 ± 是图像间还是重复间的离散度,也未设攻击成功阈值或 LLM 裁判。
- 检验与硬件:Section 4.1–4.2 用 Wilcoxon signed-rank。运行时间在 NVIDIA A100 上测;32 位搜索在两颗 Intel Xeon Gold 6342(2.80 GHz)上测。
主结果
据 Table 6。箭头方向按该表:越高越好。条件是 Shen et al. 测试集 100 张、重复 5 次;各方法的目标图来自其开发时所针对的 Stable Diffusion 模型,版本名未逐一写出。
表格较宽,可左右滑动
方法 Known LPIPS Unknown LPIPS Known CLIP Unknown CLIP Known / Unknown Semantic PromptPirate 0.52±0.14 0.40±0.08 0.83±0.11 0.75±0.11 0.71±0.18 / 0.51±0.14 PromptStealer 0.47±0.14 0.37±0.09 0.80±0.13 0.71±0.11 0.77±0.14 / 0.61±0.15 CLIP Interrogator 0.40±0.10 0.37±0.07 0.78±0.11 0.75±0.10 0.58±0.14 / 0.42±0.11 P2HP 0.43±0.11 0.35±0.07 0.77±0.11 0.66±0.11 0.48±0.22 / 0.16±0.17 - 作者称 PromptPirate 在视觉指标上持平或超过既有方法,并超过所有在线方法的文本恢复指标。离线 PromptStealer 语义最高,但视觉相似度较低;作者将其归因于提示词偏冗长或偏字面,且评估集与其训练数据同源。
- 摘要写 LPIPS 相似度提升 8–11%。正文只对 Known Subject 写出 11% 的相对增加,对照是次优的 PromptStealer(0.47);并称 PromptStealer 的语义 0.77 约比 PromptPirate 的 0.71 高 9%。Unknown Subject 的 8% 未在正文单独算出。
- 作者称攻击目标应是重建视觉内容,不必逐字还原原文。作者对 Figure 5 的描述是:LPIPS 与 CLIP 的点大多在对角线上方,即 PromptPirate 更好;语义上 PromptStealer 往往更好。Table 6 中语义最低的是 Unknown Subject 下的 P2HP。正文把 Section 4.4 的“多个提示词可产生难以区分的图像”引为 Williams et al. [5],参考文献 [5] 是 Croitoru et al.。
种子比修饰词更拉动损失
- 测了什么:1,000 条 Shen et al. 提示词。SSDM 只改一个风格修饰词、种子不变;DSSM 只改种子、修饰词不变。两者都与“种子和修饰词都正确”的原图比较。
- 结果:正文对 Figure 2 的描述为,Latent-MSE 中位数 DSSM 约 1、SSDM 约 0.25;LPIPS 约 0.7 对约 0.4;CLIP 约 0.19 对约 0.12。Figure 2 将 **** 定义为 p 值小于 0.0001。Table 4 第二例的 CLIP 为 SSDM 0.22、DSSM 0.12,DSSM 更低;表注仍称 DSSM 始终带来更大分歧。
- 作者的解读:种子对感知和语义特征的影响强于只改风格修饰词。作者引 Williams et al. [37],称 CLIP 在刻画人类感知差异上有局限。Figure 3 的正文称,噪声近似的 MSE 约到 0.1 时,三种指标的中位数差 Δ=DSSM−SSDM 过 0;超过该点后种子差异更有影响。三种指标的 Wilcoxon p 值在很小距离上就低于 0.05;只有 CLIP 的统计稳健性维持到近似误差约 0.15。
种子恢复:实验室与 CivitAI
- 0–100,000:按 SD 3.5 参考实现的种子范围,1,000 条提示词、随机种子,在 Large、Medium、Turbo 上枚举。Figure 4 与正文写正确率 100%。图注称正确种子的损失始终低于次优种子和平均损失;正文未给这三项损失的数值,图中文字列对不齐,此处不转写。简单 Python 原型平均约 85.2 秒/图。
- 噪声近似不够:Table 5 中,Adam 优化 500 次得到的初始噪声距离为 1.00±0.02;原图潜变量 1.98±0.21,10 万个其他种子中的次优种子 1.98±0.01,随机种子 2.00±0.01。作者称必须离真实噪声很近(MSE 最大 0.1)修饰词才会比种子更重要,而优化结果远未达到。
- CivitAI:Section 5.1 的候选池是真种子加 100,000 个随机干扰种子,不是完整 32 位枚举。895 张中识别正确率 95%;Large 94%,Medium 98%,Turbo 100%。作者对未识别的 5% 给出三种解释:后期编辑、另一种 RNG,或种子根本不可检测。作者认为第三种不太可能,更倾向前两种。Section 5.3 另取 50 张已知由 CPU 生成初始噪声的 JPG,忽略元数据中的种子,做完整 32 位搜索,正确率 100%,约 140 分钟/图。摘要和贡献列表把“95%”与“140 分钟”写在一起;这两项数字来自上述两个不同设置。正文对 Figure 6 的描述:最大簇在 2^29 到 2^32,小簇约 2^5 到 2^8,第三簇 2^42 到 2^50;合计 95% 的种子落在有效 32 位范围内。
其他消融与分析
- 错误(非窃得)种子、其余组件不变,N=50:各报告指标平均下降 5%(Section 4.4)。作者称正确种子对在线窃取是必要的。
- A100 运行时间:PromptStealer 21.20 秒处理全部 100 张,不含离线训练与训练数据生成;CLIP Interrogator 约 1.02 分钟/图;PromptPirate 约 62.36 分钟/图;P2HP 140.44 分钟/图。
- 32 位搜索的两阶段过滤(Section 5.3):块大小 2^16;第一阶段只用噪声向量前 2^13 项,作者称对 512×512 计算量约降 87.5%;再减少项数会降低正确率,未给降幅。前 k=2^13 名用前 2^15 项复评;k 低于 2^13 时正确率下降,未给降幅。加第三阶段未提高正确率,但更慢。
- 换 ChaCha20 后,噪声采样步约增至 8 倍,占端到端时间 0.005%(SD 3.5 Large)到 0.037%(SD 3.5 Turbo)(Section 6)。论文未报告替换后再跑 SeedSnitch。
- 作者对 Table 7 的描述:已知主体时各方法都比未知主体更接近原图;P2HP 会漏掉关键内容,CLIP Interrogator 有时认出物体但错过姿态或颜色,PromptStealer 会加入原图没有的元素。附录 Table 8 给出这些样例的原提示词与恢复提示词,此处不摘录。
有什么可以进一步探索的点?
论文未设局限专节;已发布图像无法事后阻止该窃取,作者建议换用密码学RNG。
作者指出的局限与后续方向
论文没有 Limitations、Discussion 或 Future Work 专节,未把方法本身写成一组局限。作者明确写出的边界和建议是:
- 已发布图像:第 1 节贡献列表写明,对已经发布的图像,无法使 SeedSnitch 与 PromptPirate 失效;对策只面向此后如何保护初始噪声种子。
- RNG 建议:第 6 节称,只采用 PyTorch 的 CSPRNG 扩展并不足够,因为可设种子的模式仍依赖 32 bit 的 MT19937。第 8 节建议在扩散模型实现中集成可设种子、种子范围更大的密码学 RNG,以缓解所识别的漏洞。
实验覆盖范围
- 种子恢复与案例研究中的生成模型是 Stable Diffusion 3.5 Large、Medium、Turbo;遗传算法的适应度生成使用 Stable Diffusion 3.5 Large Turbo(Section 3.4、4.3、5)。提示词对比的目标图用各方法开发时所针对的 Stable Diffusion 模型生成,论文未写出这些版本名(Section 4.4)。
- Shen et al. 数据集上:种子与修饰词对照、种子近似各 1,000 条提示词;提示词窃取为测试集 100 张、重复 5 次;错误种子消融 N=50(Section 4.1–4.4)。梯度近似噪声使用 Adam、500 次迭代(Section 4.2)。
- CivitAI:895 张做“真种子加 100,000 个干扰种子”的识别;50 张已知由 CPU 生成噪声的 JPG 做完整 32 位搜索(Section 5)。论文未报告对 895 张全部做完整 32 位枚举。漏洞核对覆盖 Table 3 的六个实现。
- 报告的指标是 Latent-MSE、LPIPS、图像 CLIP 余弦、提示词语义余弦,以及种子识别正确率;Section 4.1–4.2 使用 Wilcoxon signed-rank。论文未报告人工评估、人工一致性或 LLM 裁判。
- 第 6 节给出 ChaCha20 相对默认 RNG 的开销估算。论文未报告替换 RNG 之后再运行 SeedSnitch 或 PromptPirate 的结果。
总结一下论文的主要内容
恢复32位种子后,遗传算法在线窃取的视觉相似度高于先前方法,但语义相似度不是最高。
- 定位:这是对公开扩散模型图像的提示词窃取攻击。作者的核心主张是,优化式恢复首先要拿到生成时的初始噪声种子。
- 问题:在线方法用 Latent-MSE、LPIPS 或 CLIP 比较候选图与目标图。作者称这些损失对换种子比对换风格修饰词更敏感,所以未知种子时恢复不可靠。他们把可利用的原因写成 CWE-339:实现把种子限制在很小区间,或在 CPU 上使用 PyTorch 的 MT19937,只用低 32 位。
- 方法:SeedSnitch 不训练分类器,用目标图潜变量与候选种子噪声的 MSE 找种子。PromptPirate 假定主体前缀已知,用遗传算法搜索 3 到 12 个风格修饰词,适应度仍是潜空间 MSE,预算为 25 代、每代 150 个个体,生成模型为 Stable Diffusion 3.5 Large Turbo。
- 种子结果:在 SD 3.5 参考实现的 0–100,000 种子空间内,Large、Medium、Turbo 上 1,000 次恢复均为 100%,原型约 85.2 秒/图(Section 4.3)。CivitAI 895 张图、候选为真种子加 10 万干扰种子时,识别正确率 95%,其中 Large 94%、Medium 98%、Turbo 100%(Section 5.1)。另 50 张 CPU 图的完整 32 位搜索全部成功,约 140 分钟/图(Section 5.3)。摘要把 95% 与 140 分钟写在同一句,二者来自这两个不同设置。
- 提示词结果:Table 6 在 Shen et al. 测试集 100 张、重复 5 次上,已知主体时 PromptPirate 的 LPIPS 为 0.52±0.14,PromptStealer 为 0.47±0.14;作者称这是 11% 的相对增加,摘要则写 LPIPS 相似度提升 8–11%。语义相似度最高的是 PromptStealer(已知主体 0.77±0.14,对 PromptPirate 的 0.71±0.18)。错误种子消融 N=50,各指标平均下降 5%。
- 作者的结论:优化式提示词窃取依赖准确的初始种子;作者称据他们所知,这是首个在图像生成模型中利用 CWE-339、并系统考察种子对提示词窃取影响的工作。对已发布图像无法事后阻止该攻击;作者建议此后改用可设种子、种子空间更大的密码学 RNG。