【论文笔记】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 的损失函数应该同时明确指定并优化两个目标:
- 目标(i):鼓励模型对良性指令(原始用户请求)给出期望的、正确的响应y w y_wyw。
- 目标(ii):阻止模型响应恶意注入指令,即避免生成不期望的y l y_lyl。
选择偏好优化算法:
文章初步探讨了简单的损失函数设计,如将log p ( y l ∣ x ) \log p(y_l|x)logp(yl∣x) 减去 log p ( y w ∣ x ) \log p(y_w|x)logp(yw∣x)(公式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(yw∣x)π0(yw∣x)−βlogπref(yl∣x)π0(yl∣x))
- π 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。
数据集构建流程
- 输入与初始化:算法接收模型定界符(d instruction , d data , d response d_{\text{instruction}}, d_{\text{data}}, d_{\text{response}}dinstruction,ddata,dresponse)和一个公开的指令调优数据集S SS,并初始化一个空的偏好素材集P PP。
- 样本遍历与过滤: 算法遍历 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部分,则跳过(因为这种样本难以进行有效的提示注入攻击模拟)。 - 模拟提示注入:
- 为模拟注入,从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 ss 的
data部分之后。 (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)
- 朴素攻击 (Naive Attack, 90%概率):这种攻击最简便直接,将s ′ s's′的指令和数据部分直接拼接到s ss 的
- 构建最终输入x xx:使用模型的定界符将s ss的指令和处理后的资料部分拼接起来,形成 LLM 的最终输入x xx。(
x = d_instruction + s_instruction + d_data + s_data + d_response)
- 确定期望与不期望输出:
- 期望输出 y w y_wyw:定义为原始样本s ss 的响应 (
s_response)。 - 不期望输出 y l y_lyl:定义为用于注入的样本s ′ s's′ 的响应 (
s'_response)。
- 期望输出 y w y_wyw:定义为原始样本s ss 的响应 (
- 添加到数据集:将构建好的三元组( 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)=θminExx′∈CmaxL(θ,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_wyw 和 y 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 的合理性。
论文创新点
- 创新性问题重构:首次将LLM的提示注入防御困难概念化为偏好优化障碍,为LLM安全提供了一个全新的视角和解决方案框架。
- 提出 SecAlign 框架:基于 DPO 算法,构建了一个能够同时优化良性输出和抑制恶意注入的防御机制。
- 自动化偏好数据集构建:设计了一种无需人工标注的自动化数据集生成方法(依据朴素攻击和补全攻击模拟提示注入),极大地提高了安全对齐的可扩展性和实用性,降低了防御成本。
- 实用性与效率:放弃了传统对抗训练中昂贵的内部优化循环,采用预生成的“免优化”攻击样本,使得SecAlign在LLM上实现高效的训练,解决了传统AT在LLM上应用的可扩展性问题。
- 拓宽偏好优化应用:证明了偏好优化不仅限于伦理、真实性等人类偏好对齐,还可以有效应用于LLM的安全防御,揭示了该技术更广泛的应用潜力。
- 在实践中有效:尽管原理上进行了简化,但SecAlign在实际提示注入防御中表现出强大的性能(基于文中提及的初步结果)。
个人总结
这篇论文提出了一个非常有前景且实用的方法来应对LLM的提示注入攻击。其将安全问题重新框架为偏好优化问题是核心亮点,展现了创新的思维。特别值得称赞的是其自动化数据集构建的策略,这极大地消除了LLM安全训练中常见的数据标注难题,使得方法更具可扩展性和现实意义。
论文清晰地解释了SecAlign与传统对抗训练的区别,并强调了其在LLM背景下的效率和实用性。这对于希望在实际应用中部署安全LLM的开发者和研究者来说,具有很高的参考价值。
总的来说,这是一篇关于LLM安全对齐领域的主要论文,它不仅献出了一种有效的防御方案,也为未来LLM安全研究开辟了新的思路。
当然有没有不需要微调的提示词攻击的防御方法?
浙公网安备 33010602011771号