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

发布于:2025-06-02 ⋅ 阅读:(31) ⋅ 点赞:(0)

论文信息

论文标题: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_w yw)。它们普遍忽略了目标(ii):阻止模型响应恶意注入,即避免生成 y l y_l yl
  • LLM输出空间巨大: 对于LLM而言,其词汇量 V V V 和输出长度 L L L 导致了 V L V^L VL 种巨大的可能输出空间。在这种指数级增长的空间中,仅仅通过鼓励 y w y_w yw 来进行回归,对抑制大量的其他不期望输出(包括 y l y_l yl)影响有限。即使模型学会了生成 y w y_w yw,它也可能仍然有较高的概率生成受攻击影响的 y l y_l yl,从而导致防御失效。

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

SecAlign

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

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

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

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

选择偏好优化算法:
文章初步探讨了简单的损失函数设计,如将 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_w yw 和不期望输出 y l y_l yl 之间对数似然裕度。具体而言,它鼓励当前模型 π 0 \pi_0 π0 相对其参考模型 π ref \pi_{\text{ref}} πref 而言,为 y w y_w yw 分配更高的概率,同时为 y l y_l yl 分配更低的概率。这种相对概率的优化方式使得训练更加稳定和有效。

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

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

数据集构建流程

  1. 输入与初始化: 算法接收模型定界符( d instruction , d data , d response d_{\text{instruction}}, d_{\text{data}}, d_{\text{response}} dinstruction,ddata,dresponse)和一个公开的指令调优数据集 S S S,并初始化一个空的偏好数据集 P P P
  2. 样本遍历与过滤: 算法遍历 S S S 中的每个原始样本 s = ( s instruction , s data , s response ) s = (s_{\text{instruction}}, s_{\text{data}}, s_{\text{response}}) s=(sinstruction,sdata,sresponse)。如果样本 s s s 没有 data 部分,则跳过(因为这种样本难以进行有效的提示注入攻击模拟)。
  3. 模拟提示注入:
    • 为模拟注入,从 S S S 中随机抽取另一个样本 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 s sdata 部分之后。 (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 x x 使用模型的定界符将 s s s 的指令和处理后的数据部分拼接起来,形成 LLM 的最终输入 x x x。(x = d_instruction + s_instruction + d_data + s_data + d_response)
  4. 确定期望与不期望输出:
    • 期望输出 y w y_w yw 定义为原始样本 s s s 的响应 (s_response)。
    • 不期望输出 y l y_l yl 定义为用于注入的样本 s ′ s' s 的响应 (s'_response)。
  5. 添加到数据集: 将构建好的三元组 ( x , y w , y l ) (x, y_w, y_l) (x,yw,yl) 添加到偏好数据集 P P P 中。

自动化优势:

  • 无需人工标注: 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 x x 是预先构建的提示注入样本。
  • 核心优势: 这种设计显著降低了训练的计算成本,使得 SecAlign 在 LLM 上具有极高的实用性。尽管简化了对抗训练的复杂性,但论文强调,这种预生成的“免优化”攻击(特别是补全攻击)已被证明在提示注入防御中有效,并且可以作为一种有效的替代方法来最大化训练损失。

实验部分

实验设置:

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

实验结果与分析:

  • SecAlign vs. 无防御基线: 未防御的LLM在面对提示注入攻击时,攻击成功率通常高于50%。SecAlign模型展示了显著的防御能力,大幅降低了 ASR
  • SecAlign vs. 传统微调防御 (StruQ): 论文通过图2对比了SecAlign和StruQ(仅优化目标i)的效果。
    • StruQ 能够将 y l y_l yl 的平均对数概率降低到大约 -140。
    • SecAlign 表现出更强的抑制能力,能够将 y l y_l yl 的平均对数概率进一步大幅降低到大约 -300
    • 重要的是,SecAlign 在实现对 y l y_l yl 的强力抑制的同时,不影响对期望输出 y w y_w yw 的生成。这表明 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安全研究开辟了新的思路。

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


网站公告

今日签到

点亮在社区的每一天
去签到