Prometheus:针对文生图扩散模型的免训练提示词窃取攻击
Towards Effective Prompt Stealing Attack against Text-to-Image Diffusion Models
Prometheus从展示图反推提示词,RealPrompt上SD-3.5 proxy的ASR为62.5%。
攻击者只见showcase s,购买前不见提示词。
- 在售文生图提示词以showcase展示,购买前文本不可见,可被拿去替换subject再转售。作者称固定modifier分类和白盒硬提示词反演覆盖不足,且没有生成模型反馈。
- Prometheus不训练分类器。BLIP多次描述展示图,Spacy抽出主体细节和位置修饰,与静态修饰按CLIP上下文增益排序;本地proxy逐个试加,只保留语义与感知增益之和超过0.005的修饰。默认400条描述、200次查询。
- Table II六列中Prometheus四项均高于基线,PH2P的ASR均为0%。RealPrompt、SD-3.5 proxy的ASR为62.5%。换subject与多图合并的ASR为70.8%和79.2%(proxy未写明)。
- 作者指出单条约两分钟,贪心未建模修饰词依赖,两两组合大约慢100倍。实验有两个数据集、三种proxy、换subject、多图合并、103人评分,以及噪声、拼图、水印和PromptGuard。
- 威胁模型
- 攻击者只见showcase s,购买前不见提示词。因商业模型按次付费,改用本地开源proxy,对受害模型query budget为0。目标是恢复含subject与modifier的p。需满足Functionality(观感相似)与Reusability(换subject后外观仍相似)。沿用[68]的威胁模型。
- 被测模型
- MidjourneyLeonardo.aiDALL·EStable Diffusion
- 基准
- DALLEPromptRealPromptPromptBaseAIFrog
- 指标
- CLIPimgLPIPSSBERTASR
研究者提出 Prometheus,一种免训练、基于搜索的提示词窃取攻击,通过与本地代理模型交互逆向还原文生图作品的提示词。该方法在静态修饰词之外引入由 NLP 分析动态生成的动态修饰词,再用上下文匹配算法对两类修饰词排序以缩小搜索空间,最后借助代理模型反馈做贪心搜索迭代优化提示词。评估显示它可从 PromptBase、AIFrog 等平台提取提示词,在 Midjourney、DALL·E 等受害模型上攻击成功率相比此前最优方法提升 25.0%,并对多种潜在防御手段保持抵抗。
深度解读
这篇论文试图解决什么问题?
用本地proxy从市场展示图反推可替换subject的文生图提示词。
从展示图反推在售提示词的subject与modifier,使复原图在观感上接近showcase,且替换subject后仍可复用。
- 场景:PromptBase、AIFrog等市场用showcase售卖提示词,购买前文本不可见。作者称优质提示词含subject与modifier,可标价出售(文中举例Portrait Neon Lights为15美元);买家可改subject或扩大出图量,攻击者也可转售。Figure 1的示例showcase由DALL·E 3生成。
- 现有不足:作者称BLIP、CLIP-IG、PH2P多聚焦subject;PromptStealer把7,672个modifier当作固定分类标签,会OOV,且分类按文本语义训练、不用恢复图的感知,在来自Stable Diffusion的Lexica上可能过拟合。作者把适应性差归于over-preparation。
- 作者的设想:showcase专属的动态modifier可补充静态集合;用本地proxy的反馈迭代筛选,以避开纯文本预训练带来的过拟合。
- 本文提出:训练无关、proxy-in-the-loop的搜索式攻击Prometheus。
- 威胁模型:
- 目标:给定showcase s,恢复生成它的提示词p,含subject与modifier。
- 知识与能力:可访问展示图;购买前看不到提示词。商业受害模型按次付费,攻击者改用任意开源本地proxy,对受害模型的query budget为0。论文写明沿用[68]的威胁模型。
- 成功标准:Objective-1 Functionality,即输出观感相似;Objective-2 Reusability,即替换subject后外观仍相似。
- 受害对象:市场上的在售提示词。正文点名的生成服务包括Midjourney、Leonardo.ai、DALL·E。
有哪些相关研究?
作者讨论了图像描述、固定修饰词分类和白盒硬提示词反演,并称它们缺少生成反馈。
正文第二节按模型、服务和窃取方法分组;附录C另列LLM提示词窃取以及T2I的成员推断、后门和越狱,未与Prometheus做实验对比。
图像描述与修饰词预测
- BLIP(Li et al.):图像到文本的caption模型,被用来预测图像对应提示词。作者称高质量提示词还应含modifier,只写subject不够。
- CLIP-IG:在BLIP的subject上,从medium、artist、trending、movement、flavor五类中加高相关短语。
- PromptStealer(Shen et al.):作者称这是此前唯一专门、且完整考虑modifier的prompt-stealing攻击;用微调BLIP生成subject,用ML-Decoder多头分类从预定义集合预测modifier,训练数据为Lexica-Dataset。
硬提示词反演
- PH2P(Mahajan et al.)及token级优化:先得到soft prompt,再投影成hard prompt。作者称优化不计语义连贯,结果常不可读、可复用性差,且通常假设对生成模型白盒访问,不适合闭源。
- 搜索规模:作者称在50,000词表上恢复40词提示词要考虑50,000的40次方种组合,计算上不可行,因此不在全词表里搜modifier。
Prompt-as-a-Service
- 交易平台:PromptBase、AIFrog、PromptSea、PromptHero用showcase展示效果,购买后才给出文本。
- 优化服务:作者举例PromptPerfect的提示词优化最高每月100美元,用来说明精心编写的提示词有成本。
基线与数据集
- 基线:BLIP、CLIP-IG、PromptStealer、PH2P,以及用GPT-4o描述showcase的VLMasExpert。
- 评测数据:DALLEPrompt与RealPrompt。Lexica是PromptStealer的训练来源,不是本文评测集。
作者把差距概括为:现有方法没有T2I反馈,依赖预定义模式,可复用性差,并且要收集数据、训练额外模型。Prometheus改为动态modifier加proxy反馈,在有意义的modifier集合上搜索。
论文如何解决这个问题?
Prometheus用动态修饰词、上下文排序和proxy反馈贪心拼出提示词。
给定showcase,Prometheus用caption得到初始subject,再从静态与动态modifier中筛选并拼成可读提示词。不训练攻击专用分类器,反馈来自本地proxy。
设定与修饰词来源
- subject是画面主体,modifier描述风格与整图。目标是由s恢复p,并同时满足观感复现和换subject后的可复用性。
- 静态modifier来自先前工作[68]的prompt base,跨图基本不变。动态modifier定义为subject detail(身份与具体属性)和position(整体布局),随showcase变化。
- 初始subject来自本地BLIP的一条caption。Figure 3用Imagen示意:caption漏掉身份或位置时,生成图会偏离showcase。
动态修饰词抽取
- 对同一showcase多次采样caption。默认400条;作者称用较高采样温度,以覆盖不同描述。附录Algorithm 2给出伪代码。
- 用Spacy做词性与依存分析。subject detail取noun chunks;position从介词及其依存子树组成介词短语。作者不用目标检测器,因为只能得到类别,没有细粒度属性和布局。
- 作者称仅静态modifier的覆盖为77.8%,加入动态modifier后随caption pool扩大到95.8%(Figure 4)。
上下文匹配
- 排序在本地完成,用来缩短后续查询。分数是modifier接在base prompt之后的增益,而不是modifier单独与图的相似度:
- Fscore=D(ET(pb+m),EI(s))−D(ET(pb),EI(s))。ET、EI是CLIP的文本与图像编码器,D是余弦相似度。
- 作者用Pearson相关比较排序与真实提示词相似度的一致性:上下文匹配PCC为0.65,直接算modifier–showcase相似度的vanilla方法为0.37(Figure 5)。作者认为0.65仍不足以直接截断top-k。
贪心Proxy查询
- 按排序逐个把modifier接到当前base上,查询本地proxy,只保留增益超过阈值的项。增益为语义项与感知项之和:
- Δ(mq)=Sem(pb,pq,s)+Per(pb,pq,s)。两项都是候选图与showcase的相似度减去base图与showcase的相似度;语义用CLIP score,感知用LPIPS。超过δ则更新base,故base随接受而变。
- Algorithm 1在预算Q内循环。实现中δ=0.005(正文写Equation 1,算法把δ用于Δ)。默认Q=200;动态与静态预算按1:4预分配,先搜动态列表再搜静态列表。最终提示词是base、动态modifier与静态modifier的拼接。
- proxy可以是任意开源T2I。作者写对受害模型的query budget为0,本地查询的金钱成本为0。每个实验重复三次。BLIP用官方ViT骨干,并在COCO上微调,各方法共用。
论文做了哪些实验?
Table II六列Prometheus的ASR均高于基线;PH2P全为0%。
实验设置
- Proxy:FLUX、ShuttleDiffusion(Table II表头写作ShuffleDiffusion)、Stable Diffusion-3.5。表题写明这三列是prompt extraction用的proxy。
- 数据:DALLEPrompt三组各50对,showcase由上述三模型生成;论文未写明表中每一列的showcase是否由同名模型生成。RealPrompt为AIFrog与PromptBase的24对、8个主题,平均长度32.08词、平均9.11个modifier;生成模型为Midjourney 1组、Stable Diffusion 3组、Leonardo.ai 2组、DALL·E 2组。
- 基线:BLIP、CLIP-IG、PromptStealer、PH2P(使用Stable Diffusion v1.5编码器)、VLMasExpert(GPT-4o写描述)。
- 指标:CLIPimg为CLIP图像编码器余弦,越高越近;LPIPS用AlexNet骨干,越低越近;SBERT为提示词句向量余弦,越高越近。ASR定义为SBERT大于0.8的比例。不是LLM裁判。
- 协议:默认caption数400、对proxy的查询上限200、δ=0.005;每个实验三次。作者称不按单一指标挑最好的一次,而是报告各指标。硬件为单张NVIDIA GeForce RTX A6000。
- 其他协议:换subject与多图摘要使用GPT-4o(正文亦写作ChatGPT-4o)。指令在正文给出,这里不复述模板。
主结果
表格较宽,可左右滑动
Proxy(表头) 数据集 CLIPimg LPIPS SBERT ASR FLUX DALLEPrompt 0.873 0.679 0.795 48.3% ShuffleDiffusion DALLEPrompt 0.890 0.601 0.803 56.0% SD-3.5 DALLEPrompt 0.897 0.626 0.790 52.7% FLUX RealPrompt 0.901 0.653 0.814 58.3% ShuffleDiffusion RealPrompt 0.912 0.644 0.798 54.2% SD-3.5 RealPrompt 0.901 0.625 0.799 62.5% 据Table II,六行都是Prometheus。
- 同表六个proxy×数据集列中,Prometheus的CLIPimg、SBERT、ASR都高于同列五个基线,LPIPS都更低。PH2P在六列的ASR均为0%。
- 作者称在真实在售提示词上,图像与提示词保真为0.912和0.814,相对基线最高超出0.142和0.200,ASR提升25.0%。0.912是ShuffleDiffusion列的CLIPimg,0.814是FLUX列的SBERT;25.0%的对照列论文未单独标明。
- 作者对Figure 6与Table III的解读:BLIP抓不住风格和场景,CLIP-IG会配上不相关modifier,PromptStealer主体保真较低且常给出训练集里常见modifier,PH2P抓不住风格甚至主体,VLMasExpert常漏角色。不引用表中提示词原文。
换subject与多展示图
- 换subject(Table IV,RealPrompt,proxy未写明):Prometheus的CLIPimg 0.832、LPIPS 0.681、SBERT 0.835、ASR 70.8%。同表PromptStealer的ASR为54.2%,PH2P为0%。作者称Figure 7中换subject后风格仍更接近ground truth。
- 多展示图(Table V,RealPrompt,proxy未写明):每张图各恢复一条,再用ChatGPT-4o合并。Prometheus的CLIPimg 0.834、LPIPS 0.684、SBERT 0.840、ASR 79.2%;PromptStealer的ASR为75.0%,CLIP-IG为72.9%。
- 作者称此时优势幅度不如单图,并把SBERT从0.814到0.840解释为摘要减轻了对单张图的过拟合。0.814与Table II中RealPrompt、FLUX的SBERT相同,Table V未写proxy。
防御
- 常规防御(Table VIII;附录写数据集为RealPrompt,proxy未写明):No Defense为0.901 / 0.625 / 0.799 / 62.5%,数值与Table II中RealPrompt、SD-3.5的Prometheus行相同。随机噪声ASR 58.3%(-4.2%),拼图61.1%(-1.4%),文字水印41.7%(-20.8%)。作者称这些改动对防窃取影响较小,因为并非针对该攻击设计。
- PromptGuard:用BIM 200步、ε=8/255、α=β=0.5,扰动caption模型与modifier匹配模型的特征。ASR降至27.8%(CLIPimg 0.824,LPIPS 0.664,SBERT 0.774)。作者称总损失收敛到约0.45,下降主要来自BLIP,CLIP贡献很小(Figure 16)。
- 换结构:扰动由BLIP ViT-base生成,攻击改用ViT-large时,Prometheus*为0.915 / 0.597 / 0.804 / 67.9%(+5.4%),高于No Defense。作者认为扰动跨caption模型迁移弱。Glaze因代码未开源未评测;PromptShield因假设攻击者训练modifier分类器且防御者白盒访问该分类器,作者称不适用于本文威胁模型。
用户研究
- 103份有效问卷。问题是两图有多相似;五级标准写在附录,正文未列等级名称。Figure 14:BLIP 1.80,CLIP-IG 2.09,PromptStealer 2.01,PH2P 1.12,VLMasExpert 2.79,Prometheus 3.58。
- 每人12组、每组6对,共72题;方法匿名且组内乱序。论文未报告评分者间一致性。作者称该结果与受访者偏好一致。
其他消融与分析
- 动态modifier数量0–400:作者称数量为100时三项相似度高于0,100到400趋势稳定(Figure 8、9);文本未给出曲线端点读数。
- 匹配方式(Table VII;Ours行与Table II RealPrompt的Prometheus相同,表题未写数据集):FLUX上vanilla的SBERT 0.789、上下文匹配0.814;ShuttleDiffusion为0.796对0.798;SD-3.5为0.793对0.799。
- Proxy反馈相对直接拼接top-k与随机采样(k=20,随机池为最好的200个):作者称图像与提示词相似度更高(Figure 10、11),文本无柱高数字。
- 查询预算50–300:作者称50到100上升,100到300趋于稳定(Figure 12、13),文本无端点读数。
- Table IX(数值与Table II RealPrompt、FLUX的对应行相同,表题未写条件):去掉版权showcase后,VLMasExpert*的ASR从27.1%到29.2%,SBERT从0.776到0.785。作者认为对齐会替换受保护主体,但主要问题仍是过拟合。
- Table VI勾选列在纯文本中缺失,不把前三行对应到开关;四行CLIPimg为0.882、0.897、0.891、0.901,末行与Table II RealPrompt、FLUX的Prometheus相同。作者称subject detail的增益大于position。附录B-D把RealPrompt高于DALLEPrompt归于商业模型指令跟随更强,以及在售提示词更具体。
有什么可以进一步探索的点?
作者指出单条约两分钟,以及贪心未处理修饰词之间的依赖。
作者指出的局限与后续方向
- 运行时间:平均恢复一条约两分钟。作者认为在售showcase相对网页规模图像较少,因此这不构成大规模攻击的实际阻碍;并称参数选择偏冗余,时间还可再优化。后续方向是更省时间的搜索策略(Section VII)。
- 搜索策略:作者承认modifier之间可能相互依赖,组合效应强于逐个贪心。作者认为离线上下文匹配已使每个候选有一定描述能力,依赖带来的额外收益可能有限;200个候选若只做两两组合,搜索大约慢100倍(199/2),该成本作者认为不能接受。后续可探索贪心以外的策略(Section VII)。
实验覆盖范围
- 评测集为DALLEPrompt(三组各50对)和RealPrompt(24对、8个主题);proxy为FLUX、ShuttleDiffusion、SD-3.5(Section V-A、Table II)。
- 基线为BLIP、CLIP-IG、PromptStealer、PH2P、VLMasExpert;指标为CLIPimg、LPIPS、SBERT,以及SBERT大于0.8的ASR;每个实验重复三次(Section V-A)。
- 另有换subject(Table IV)、同主题多展示图合并(Table V),以及103份问卷的用户研究(Figure 14)。论文未报告评分者间一致性。
- 防御实验包括随机噪声、拼图、文字水印、PromptGuard,以及把BLIP从ViT-base换成ViT-large的Prometheus*(Section VI、Table VIII)。作者写明未评测Glaze,原因是代码未开源;并写明PromptShield的白盒分类器假设不适用于本文。
- Table IV、V、VI、VIII、IX的表题未写proxy。Table II未写明列与showcase生成模型是否一一对应。论文写明对受害商业模型的query budget为0,对本地proxy的默认查询上限为200,金钱成本为0。
总结一下论文的主要内容
训练无关的proxy搜索攻击;RealPrompt上SD-3.5 proxy的ASR为62.5%。
Prometheus是针对文生图市场showcase的训练无关提示词窃取:攻击者看不到在售文本,只用本地开源proxy恢复subject和modifier,并希望换subject后风格仍在。
- 做法:BLIP多次描述showcase,Spacy抽出主体细节和位置类动态modifier,与既有prompt base中的静态modifier合并。排序看的是modifier接到base prompt后的CLIP增益。再按这个顺序向proxy逐个加词,只保留语义增益与感知增益之和超过0.005的项。默认400条caption、200次proxy查询,动态与静态预算为1:4。
- 主结果:Table II的六个proxy×数据集列里,Prometheus的CLIPimg、SBERT、ASR都高于同列基线,LPIPS更低。RealPrompt、SD-3.5 proxy的ASR为62.5%;同数据集表头ShuffleDiffusion列的CLIPimg为0.912,FLUX列的SBERT为0.814。PH2P在六列的ASR均为0%。作者称相对当时方法ASR提升25.0%,论文未标明该数字对应哪一列。
- 复用与人评:换subject后ASR为70.8%(Table IV);同主题多图合并后ASR为79.2%(Table V)。两表都未写proxy。103人评分中Prometheus为3.58,同图其他方法为1.12到2.79(Figure 14)。
- 防御:在Table VIII(数据集为RealPrompt,proxy未写明)中,随机噪声与拼图后ASR为58.3%和61.1%,文字水印为41.7%,PromptGuard为27.8%。攻击侧改用另一种BLIP结构后ASR为67.9%。作者称常规改动不是针对该攻击设计;并认为PromptGuard依赖防御者知道攻击者所用的caption模型。
- 作者的结论:动态modifier加proxy反馈,可以在商业showcase上恢复可替换subject的提示词,且所列扰动在caption模型不一致时没有保持住下降。作者同时指出单条约两分钟,贪心没有处理modifier之间的组合依赖。