出版于2025
我把这篇论文当成一篇“问题定义 + 攻击设计 + 现象解释 + 实验论证”的安全论文来给你完整讲。
这篇论文研究的问题很直接:如果把一个大语言模型拆开做分布式推理,比如前几层放在客户端,后几层放在服务器,那么客户端和服务器之间要传“中间表示”(intermediate embeddings,中间嵌入/中间层输出)。论文问的是: 只看这些中间表示,能不能把用户原始 prompt 还原出来? 作者的回答是: 能,而且效果比直觉上强很多。 他们设计了三种攻击场景:同分布辅助数据、异分布辅助数据、以及没有辅助数据且查询预算受限的场景。实验里,前两种通常能做到 90% 以上的 token 级重建准确率,第三种在更苛刻条件下通常也能超过 50%。
先说这篇论文最核心的想法。过去很多文本反演工作把“从 embedding 恢复文本”看成一个 序列生成 问题,也就是用一个 transformer 去一词一词生成原句。但作者觉得这条路太重:要大量训练数据、长文本难训,而且前面一个词错了会连累后面。于是他们发现了一个更关键的现象:虽然第 $i$ 个中间表示 $\mathbf e_i$ 从定义上依赖前缀 $\{t_1,\dots,t_i\}$ ,但它实际上 主要由当前位置最后那个 token $t_i$ 决定,前面的 token 更像小扰动。作者用“dog / cat”只改第四个词的例子,发现第四个位置的 embedding 差异远大于后续位置;又把大量以 'the' 、 'and' 、 'one' 、 'which' 结尾的序列 embedding 可视化,看到它们在空间里形成按“最后 token”分开的簇。也就是说,中间表示虽然是“序列表示”,但很大程度上可以被当成“最后 token 的分类特征”。这就是整篇论文的发动机。
所以第一种攻击 A1 的思路就非常清楚了。假设攻击者有无限查询预算,并且手里有一批和受害者 prompt 同分布的辅助数据。那他就自己拿这些文本去跑分布式推理,收集成对数据 $(\mathbf e_i, t_i)$ ,再训练一个分类器 $\phi:\mathbf e_i\mapsto t_i$ 。之后看到受害者的中间表示 $E_{\text{tgt}}$ 时,就对每个位置单独做 token 分类,再用 tokenizer 解码成文本。这里最值得注意的是: 它不是逐词自回归生成,而是逐位置分类 。这带来两个好处:一是长度不再是硬限制;二是前面位置出错,不会像生成模型那样级联污染后面位置。作者实际用的是 6 层 MLP 分类器,而不是一个攻击用 transformer。
A1 为什么这么强?因为一旦“最后 token 主导簇结构”成立,问题就从“恢复整句”降维成了“识别每个位置属于哪个 token 簇”。这时分类边界就相对稳定了。论文实验也确实显示,A1 在测试过的各层上基本都能超过 90% 的重建准确率,而且层越浅越容易攻击;BERT 这种 encoder-only 模型通常比 decoder-only 的 GPT-2、Phi-3.5、Llama-3.2 更容易被还原。作者把原因解释为:越靠后层,不同 token 的簇会越来越扩散、重叠,类别可分性下降。
第二种攻击 A2 解决的是更现实的问题: 如果攻击者的辅助数据分布和真实用户 prompt 分布不一样怎么办? 这时,A1 训练集里可能缺很多目标域 token,分类器泛化就会崩。论文举了一个例子:用 WikiText-2 训练的攻击器,在 Wikipedia 风格文本上能到 98%,但在 SQuAD2.0 这种问答 prompt 上会掉到 61%,因为大约 25% 的 token 在训练覆盖里根本没出现。于是 A2 的核心工作变成:为这些“没见过的 token” 合成看起来像真实分布里的中间表示 ,再把它们补进训练集。
A2 的方法名字叫 sequence embedding synthesis。你可以把它理解成:攻击者不是硬等真实数据出现,而是主动造一些“带目标 token 的伪序列”,让这些 token 在 LLM 中跑一遍,得到合成 embedding $\hat E_c$ ,再用这些样本去扩充分类器训练集。论文的实验结论是,这个步骤能把异分布场景下的效果显著拉回来,通常能提升大约 20%,而且会让攻击器的跨域鲁棒性更强;作者还用可视化说明,A2 生成的 synthetic embeddings 在多层上都能较好模拟真实 token 簇。
但 A2 有明显代价:它很费查询。论文专门算了 query cost,结论是 A2 大约要比 A1 多 30 倍的查询开销 ,因此它虽然更通用,却不一定适合预算受限的攻击者。这个点很重要,因为它说明作者不是只追求“能攻击”,而是在刻画一个 攻击效果—查询成本 的权衡。
第三种攻击 A3 进一步把条件压到最苛刻:没有辅助数据、查询预算有限。这里作者就不能再靠“先训好一个分类器再推断”这条路了,于是设计成三阶段框架:先用**nearest neighbor search(最近邻搜索) 和 semi-supervised learning(半监督学习)**找出 prompt 的关键词或关键 token,再用 **constrained beam search(受约束束搜索)**去补全细节,恢复更完整的文本。直觉上,它先恢复“大的骨架”,再恢复“句子细节”。
A3 的结果也很有意思。在最小预算 $|T_{\text{all}}|$ 下, 早期层 依然能做到 50% 以上 RA;但到了后面层,效果会明显变差。作者给出两个原因:第一,早期层 token 簇更稀疏,最近邻搜索更稳;后期层簇扩散、重叠,最近邻更容易错。第二,A3 的随机数据生成方法在后期层更难拟合真实分布,所以它给后续分类/搜索阶段提供的“锚点”质量也更差。不过,如果增加查询预算,A3 会继续提升,因为更多预算意味着每个 token 簇附近能放更多 anchor points。
论文的实验设计也值得你记一下。它测试了四个模型:Phi-3.5(3.82B,32 层)、Llama-3.2(1.24B,16 层)、GPT-2(812M,36 层)、BERT(335M,24 层)。攻击模型本身统一用 6 层 MLP;A3 里最近邻和分类阶段的阈值都设成 0.05,beam width 设成 6。评价指标主要有两个:RA(Reconstruction Accuracy,token 级重建准确率)和 CSS(Cosine Semantic Similarity,语义相似度)。作者还特别说明,在他们的实验里, RA 超过 40% 时,通常已经足够重建出 prompt 的关键概念 。
这篇论文还有一个很好的判断: 只看语义相似度会高估攻击质量。 他们把 A2 和几种 baseline 比较,发现一些 baseline 的 CSS 很高,但 RA 很低,尤其在 PrivatePrompts 这种带 PII(personally identifiable information,个人身份信息)的数据上,会出现“语义看着差不多,但人名、日期、隐私实体恢复不出来”的情况。换句话说,如果你的安全目标是防隐私泄露,那么“语义大意相近”不够,必须看 token 级、实体级是否真被还原出来。这个判断非常专业。
如果从学术位置上看,这篇论文的贡献有三层。第一层,它把“分布式 LLM 推理的中间表示会泄露 prompt”这件事第一次系统化地做成了 三种威胁模型 。第二层,它提出了一个很强的经验规律: 序列中间表示在很多层上会按最后 token 聚类 。第三层,它说明了:即使攻击者既不篡改协议、也不碰模型权重、甚至预算受限,光靠被动观察中间表示,也可能恢复大量原始 prompt。
当然,这篇论文也不是没有边界。它的强效果主要建立在两个事实上:一是中间表示的 token-cluster 结构确实明显;二是系统传的是 明文中间表示 。论文最后也提到一种更强但更慢的路线:把中间结果全程加密,例如同态加密或安全两方推理。问题是,这类方法对 LLM 太慢了,作者举例说某种方法在 Llama-7B 上预测一个 token 要 14 分钟,这基本不适合真实在线推理。也就是说,这篇论文实际上逼出一个结论: 如果你既想快,又把中间表示明文发出去,那就很难说自己“有 prompt 隐私”。
如果我把全文压缩成一句判断,那就是:
这篇论文真正证明的,不是“某个 fancy 攻击模型很强”,而是 分布式 LLM 推理里,中间表示本身就已经携带了非常强的 prompt 可逆信息;而这种信息在早期层尤其严重。 攻击成功的根源不是攻击器太复杂,恰恰相反,是因为中间表示的统计结构过于“好分”。
如果你愿意,我下一条可以继续给你做两件事里的一个:要么我把 A1 / A2 / A3 三个算法按“输入—输出—步骤—为什么成立—复杂度—优缺点”再精读一遍;要么我直接把这篇和你手头的 DP-Forward、BiSR、Internal States Inversion 放在一起做一个相关工作对比。