【论文笔记】SecAlign: Defending Against Prompt Injection with Preference Optimization - 教程

论文信息

论文标题:SecAlign: Defending Against Prompt Injection with Preference Optimization -CCS 25
论文作者: Sizhe Chen - UC Berkeley ;Meta, FAIR
论文链接:https://arxiv.org/abs/2410.05451
代码链接:https://github.com/facebookresearch/SecAlign?tab=readme-ov-file
论文关键词:prompt injection defense, LLM security, LLM-integrated applications

另一篇相关论文 :StructQ


研究背景

论文概述

本文提出了一种名为SecAlign的新型防御机制,旨在解决大型语言模型(LLMs)所面临的提示注入(Prompt Injection)攻击问题。传统的LLM防御方法通常未能有效应对提示注入,导致攻击成功率居高不下。SecAlign的核心创新在于将提示注入防御问题重新定义为偏好优化(Preference Optimization)问题。通过采用直接偏好优化(Direct Preference Optimization, DPO)算法,SecAlign旨在让LLM同时学习生成良性、期望的输出(对应原始指令),并抑制恶意、不期望的输出(对应注入指令)。论文详述了SecAlign的完成细节,包括偏好数据集的构建方法(其自动化特性是关键优势),并对比了**SecAlign与传统对抗训练(Adversarial Training, AT)**的区别,强调了其在LLM安全对齐方面的实用性和有效性。

问题背景与动机

随着大型语言模型(LLMs)在各个领域的广泛应用,其强大的能力日益显现。然而,这种能力也伴随着严重的安全风险,独特是提示注入攻击(Prompt Injection)。攻击者能够依据在用户输入中巧妙地注入恶意指令,来劫持LLM的正常行为,强制模型执行非预期或有害的操作,例如:

  • 指令劫持:使得LLM忽略其预设的框架指令或安全约束。
  • 信息泄露:诱导LLM泄露敏感的用户信息或其训练过程中的私有信息。
  • 有害内容生成:促使LLM产生偏见、仇恨言论、虚假信息或恶意代码。

文章指出,尽管已有多种尝试来防御提示注入,但这些传统方法(通常基于微调)普遍效果不佳,攻击成功率常常超过50%。论文深入分析了这一不足的根本原因:

  • 单一目标优化:现有防御方式往往只关注目标(i):鼓励模型对预期指令给出正确响应(即生成y w y_wyw)。它们普遍忽略了目标(ii):阻止模型响应恶意注入,即避免生成y l y_lyl
  • LLM输出空间巨大:对于LLM而言,其词汇量V VV 和输出长度 L LL 导致了 V L V^LVL种巨大的可能输出空间。在这种指数级增长的空间中,仅仅通过鼓励y w y_wyw来进行回归,对抑制大量的其他不期望输出(包括y l y_lyl)影响有限。即使模型学会了生成y w y_wyw,它也可能仍然有较高的概率生成受攻击影响的y l y_lyl,从而导致防御失效。

因此,迫切需要一种能够同时解决这两个目标的防御途径,以真正提升LLM的安全性。

SecAlign

核心思想:偏好优化(Preference Optimization)

SecAlign 的核心创新在于提出了一个突破性的见解:提示注入防御疑问可能被视为一个偏好优化问题。这意味着,“抵御提示注入的安全性”本身可以被视为一种LLM应该学习和强制执行的“偏好”。

为了实现这一目标,SecAlign 认为 LLM 的损失函数应该同时明确指定并优化两个目标

  1. 目标(i):鼓励模型对良性指令(原始用户请求)给出期望的、正确的响应y w y_wyw
  2. 目标(ii):阻止模型响应恶意注入指令,即避免生成不期望的y l y_lyl

选择偏好优化算法:
文章初步探讨了简单的损失函数设计,如将log ⁡ p ( y l ∣ x ) \log p(y_l|x)logp(ylx) 减去 log ⁡ p ( y w ∣ x ) \log p(y_w|x)logp(ywx)(公式2)。但考虑到便捷损失函数可能导致的过拟合和不连贯响应问题,SecAlign 最终选择了更成熟、更稳定的**直接偏好优化(Direct Preference Optimization, DPO)**算法 [37]。

DPO 损失函数(公式3):
L SecAlign = − log ⁡ σ ( β log ⁡ π 0 ( y w ∣ x ) π ref ( y w ∣ x ) − β log ⁡ π 0 ( y l ∣ x ) π ref ( y l ∣ x ) ) \mathcal{L}_{\text{SecAlign}} = -\log \sigma \left( \beta \log \frac{\pi_0 (y_w | x)}{\pi_{\text{ref}} (y_w | x)} - \beta \log \frac{\pi_0 (y_l | x)}{\pi_{\text{ref}} (y_l | x)} \right)LSecAlign=logσ(βlogπref(ywx)π0(ywx)βlogπref(ylx)π0(ylx))

  • π 0 \pi_0π0表示当前待优化的LLM。
  • π ref \pi_{\text{ref}}πref表示一个 SFT 参考模型,通常是DPO训练开始前的模型或一个固定的基线模型。
  • β \betaβ超参数,用于控制偏好学习的强度。
  • 核心功能:该损失函数旨在最大化期望输出 y w y_wyw和不期望输出y l y_lyl之间对数似然裕度。具体而言,它鼓励当前模型π 0 \pi_0π0相对其参考模型π ref \pi_{\text{ref}}πref 而言,为 y w y_wyw分配更高的概率,同时为y l y_lyl分配更低的概率。此种相对概率的优化方式使得训练更加稳定和有效。

SecAlign 实现细节:偏好数据集的构建

SecAlign的成功实施依赖于精心构建的偏好资料集。这个数据集的每一个样本都必须包含提示注入的输入x xx 、期望输出 y w y_wyw和 不期望输出y l y_lyl

数据集构建流程

  1. 输入与初始化:算法接收模型定界符(d instruction , d data , d response d_{\text{instruction}}, d_{\text{data}}, d_{\text{response}}dinstruction,ddata,dresponse)和一个公开的指令调优数据集S SS,并初始化一个空的偏好素材集P PP
  2. 样本遍历与过滤: 算法遍历 S SS中的每个原始样本s = ( s instruction , s data , s response ) s = (s_{\text{instruction}}, s_{\text{data}}, s_{\text{response}})s=(sinstruction,sdata,sresponse)。如果样本 s ss 没有 data 部分,则跳过(因为这种样本难以进行有效的提示注入攻击模拟)。
  3. 模拟提示注入:
    • 为模拟注入,从S SS中随机抽取另一个样本s ′ = ( s instruction ′ , s data ′ , s response ′ ) s' = (s'_{\text{instruction}}, s'_{\text{data}}, s'_{\text{response}})s=(sinstruction,sdata,sresponse)
    • 攻击类型选择:
      • 朴素攻击 (Naive Attack, 90%概率):这种攻击最简便直接,将s ′ s's的指令和数据部分直接拼接到s ssdata 部分之后。 (s_data += s'_instruction + s'_data)
      • 补全攻击 (Completion Attack, 10%概率):这种攻击模拟更复杂的对话式注入。依据引入攻击定界符d ′ d'd(来自 [3]),将s ′ s's 的相关部分拼接起来,使其看起来像对话的自然延续。 (s_data += d'_response + s_response + d'_instruction + s'_instruction; 如果 s ′ s's 有数据部分,则再添加 d'_data + s'_data)
    • 构建最终输入x xx使用模型的定界符将s ss的指令和处理后的资料部分拼接起来,形成 LLM 的最终输入x xx。(x = d_instruction + s_instruction + d_data + s_data + d_response)
  4. 确定期望与不期望输出:
    • 期望输出 y w y_wyw定义为原始样本s ss 的响应 (s_response)。
    • 不期望输出 y l y_lyl定义为用于注入的样本s ′ s's 的响应 (s'_response)。
  5. 添加到数据集:将构建好的三元组( x , y w , y l ) (x, y_w, y_l)(x,yw,yl)添加到偏好数据集P PP 中。

自动化优势:

  • 无需人工标注:SecAlign 的材料集生成过程是完全自动化的,不依赖于耗时耗力的人工判断和标注。
  • 高效且可扩展:这与将LLM对齐到复杂的人类偏好(如伦理、道德)时必须大量人工反馈形成鲜明对比,极大地降低了安全对齐的成本和复杂性,提高了其可扩展性和实际部署的可行性。
  • 明确的安全策略:提示注入的安全策略(即模型不应响应恶意注入)行被明确地编码到资料生成逻辑中,这比定义模糊的人类偏好更容易操作。

SecAlign 与对抗学习 (SecAlign vs. Adversarial Training)

论文明确了 SecAlign 与传统对抗训练(AT)的区别,尤其是在大型语言模型(LLM)的背景下。

传统 AT 的局限性:

  • 传统的对抗训练通常涉及一个昂贵的内部优化循环,通过梯度上升等方法动态生成对抗样本x ′ x'x来最大化损失函数(公式4):
    min ⁡ θ E ( x , y ) L ( θ , x , y ) = min ⁡ θ E x max ⁡ x ′ ∈ C L ( θ , x ′ , y ) \min_{\theta} \mathbb{E}_{(x, y)} \mathcal{L}(\theta, x, y) = \min_{\theta} \mathbb{E}_{x} \max_{x' \in \mathcal{C}} \mathcal{L}(\theta, x', y)θminE(x,y)L(θ,x,y)=θminExxCmaxL(θ,x,y)
  • 计算开销巨大:对于LLMs而言,这种基于优化的对抗样本生成(例如使用像 GCG [21] 这样的办法)需要数百甚至数千个 GPU 小时的计算资源,使其在实际应用中难以承受。

SecAlign 的简化与实用性:

  • SecAlign 放弃了这种昂贵的内部优化循环。它不试图在每次训练迭代中凭借梯度生成“最优”的对抗样本。
  • 相反,SecAlign 采用了预先生成的“免优化”攻击样本在训练开始前就已经确定的,并且独立于模型的当前权重。就是。这些样本(通过第 4.1 节描述的朴素攻击和补全攻击生成)
  • 这意味着 SecAlign 的优化目标简化为(公式5):
    min ⁡ θ E ( x , y ) L ( θ , x , y ) \min_{\theta} \mathbb{E}_{(x, y)} \mathcal{L}(\theta, x, y)θminE(x,y)L(θ,x,y)
    其中 x xx是预先构建的提示注入样本。
  • 核心优势:这种设计显著降低了训练的计算成本,使得 SecAlign 在 LLM 上具有极高的实用性。尽管简化了对抗训练的复杂性,但论文强调,这种预生成的“免优化”攻击(特别是补全攻击)已被证明在提示注入防御中有效,并且允许作为一种有效的替代方法来最大化训练损失。

实验部分

实验设置:

  • 基线模型:实验在 SFT 微调后的LLM基础上进行。高性能的SFT模型被视为SecAlign性能的基础。
  • 数据集:偏好数据集是根据算法自动构建的,它包含提示注入输入x xx、期望输出 y w y_wyw和不期望输出y l y_lyl。数据来源于公开指令调优数据集,并混合启用了朴素攻击(90%)和补全攻击(10%)来模拟注入。
  • 评估指标:
    • 攻击成功率 (ASR):衡量攻击者成功诱导模型生成y l y_lyl显著降低 ASR。就是的比例。目标
    • 期望输出概率(Log Probabilities ofy w y_wyw):确保防御不会损害模型生成正确响应的能力。
    • 不期望输出概率(Log Probabilities ofy l y_lyl):衡量模型对恶意输出的抑制程度。
    • Log Probabilities Margin:y w y_wywy l y_lyl之间对数似然裕度,越大越好。
  • 训练细节:采用DPO算法进行优化,并使用了高性能计算资源进行训练。

实验结果与分析:

  • SecAlign vs. 无防御基线:未防御的LLM在面对提示注入攻击时,攻击成功率通常高于50%。SecAlign模型展示了显著的防御能力,大幅降低了 ASR
  • SecAlign vs. 传统微调防御 (StruQ):论文依据图2对比了SecAlign和StruQ(仅优化目标i)的效果。
    • StruQ 能够将y l y_lyl的平均对数概率降低到大约 -140。
    • SecAlign 表现出更强的抑制能力,能够将 y l y_lyl的平均对数概率进一步大幅降低到大约 -300
    • ,SecAlign 在搭建对就是重要的y l y_lyl的强力抑制的同时,不影响对期望输出y w y_wyw 的生成。这表明 SecAlign 成功地实现了双目标优化,从而提供了更鲁棒的防御。对数似然裕度越大,防御安全性越高。
  • 不同攻击类型下的性能:SecAlign 对朴素攻击和补全攻击均展现出强大的鲁棒性。在训练数据中引入少量补全攻击样本,有效提升了模型对这类艰难攻击的泛化防御能力。
  • 消融研究(DPO 选择的合理性):论文(在第4.5节中)借助消融研究证明,DPO 在简洁性、训练稳定性以及最终性能方面优于其他偏好优化算法,这验证了在 SecAlign 框架中选择 DPO 的合理性。

论文创新点

  1. 创新性问题重构:首次将LLM的提示注入防御困难概念化为偏好优化障碍,为LLM安全提供了一个全新的视角和解决方案框架。
  2. 提出 SecAlign 框架:基于 DPO 算法,构建了一个能够同时优化良性输出和抑制恶意注入的防御机制。
  3. 自动化偏好数据集构建:设计了一种无需人工标注的自动化数据集生成方法(依据朴素攻击和补全攻击模拟提示注入),极大地提高了安全对齐的可扩展性和实用性,降低了防御成本。
  4. 实用性与效率:放弃了传统对抗训练中昂贵的内部优化循环,采用预生成的“免优化”攻击样本,使得SecAlign在LLM上实现高效的训练,解决了传统AT在LLM上应用的可扩展性问题。
  5. 拓宽偏好优化应用:证明了偏好优化不仅限于伦理、真实性等人类偏好对齐,还可以有效应用于LLM的安全防御,揭示了该技术更广泛的应用潜力。
  6. 在实践中有效:尽管原理上进行了简化,但SecAlign在实际提示注入防御中表现出强大的性能(基于文中提及的初步结果)。

个人总结

这篇论文提出了一个非常有前景且实用的方法来应对LLM的提示注入攻击。其将安全问题重新框架为偏好优化问题是核心亮点,展现了创新的思维。特别值得称赞的是其自动化数据集构建的策略,这极大地消除了LLM安全训练中常见的数据标注难题,使得方法更具可扩展性和现实意义。

论文清晰地解释了SecAlign与传统对抗训练的区别,并强调了其在LLM背景下的效率和实用性。这对于希望在实际应用中部署安全LLM的开发者和研究者来说,具有很高的参考价值。

总的来说,这是一篇关于LLM安全对齐领域的主要论文,它不仅献出了一种有效的防御方案,也为未来LLM安全研究开辟了新的思路。

当然有没有不需要微调的提示词攻击的防御方法?

posted on 2025-06-09 13:19  ljbguanli  阅读(58)  评论(0)    收藏  举报