← 知识图谱 ← 返回学习站

LLM 对抗攻击

Adversarial Attacks on LLMs
Lilian Weng · OpenAI · 2023-10-25 · 预计阅读 26 分钟

The use of large language models in the real world has strongly accelerated by the launch of ChatGPT. We have invested a lot of effort to build default safe behavior into the model during the alignment process. However, adversarial attacks or jailbreak prompts could potentially trigger the model to output something undesired.

ChatGPT 的发布极大加速了 LLM 在真实世界的应用。我们(含 OpenAI 的团队)投入大量精力,在对齐过程(如 RLHF)中为模型植入默认的安全行为。然而,对抗攻击(adversarial attacks)或越狱提示(jailbreak prompts)仍可能触发模型输出不该输出的内容。与图像攻击在连续高维空间运作不同,文本这类离散数据因缺乏直接梯度信号而更具挑战。本文假设攻击只发生在推理时(模型权重固定)

💡 AI 解读

这篇是理解 LLM 安全攻防的奠基性综述。核心张力在于:对齐让模型"想"安全,但攻击者总能找到绕过的输入。文章把散落在各处的攻击方法整理成清晰的五大类,并指出一个关键事实——攻击 LLM 本质就是"控制模型输出某种(不安全的)内容",与可控文本生成是同一问题的两面。

威胁模型

Adversarial attacks are inputs that trigger the model to output something undesired. We assume the attacks only happen at inference time, meaning that model weights are fixed.

对抗攻击就是能触发模型输出不该输出的内容的输入。本文假设攻击只发生在推理时(权重固定)。针对分类器:给定输入 x 和分类器 f,找一个与 x 差异不可察觉的 x_adv,使 f(x) ≠ f(x_adv)。针对文本生成:让模型的采样输出 y 违反内置安全行为(输出非法内容、泄露隐私或训练数据)。生成任务的攻击是否成功很难判定,需要高质量分类器或人工审核。

白盒 vs 黑盒

五种攻击类型

攻击类型设定说明
Token 操纵黑盒替换文本中少量 token,触发模型出错但保持原语义。
基于梯度的攻击白盒依赖梯度信号学习有效攻击。
越狱提示黑盒多为启发式提示,绕过模型内置安全。
人类红队黑盒人类(可借助模型)攻击模型。
模型红队黑盒模型攻击模型,攻击方模型可被微调。

Token 操纵

Given a sequence of tokens, we can apply simple token operations like replacement with synonyms to trigger the model to make incorrect predictions. Token manipulation based attacks work in black-box settings.

给定一段 token 序列,可以用同义词替换等简单操作触发模型做出错误预测,这类攻击在黑盒下可行。Python 框架 TextAttack(Morris 等 2020)实现了大量此类方法。

基于梯度的攻击(白盒)

In the white-box setting, we have full access to the model. Therefore we can rely on gradient descent to programmatically learn the most effective attacks.

白盒下我们完全掌握模型,因此可用梯度下降程序化地学习最有效的攻击

GCG 对抗后缀(最关键工作)

Zou et al. (2023) studied universal adversarial triggering tokens as suffixes. The adversarial goal is to trigger LLMs to output affirmative responses even facing requests that should be refused — e.g. "Sure, here is how to..."

Zou 等(2023)研究拼在输入末尾的通用对抗后缀,专门针对模型本应拒绝的恶意请求。对抗目标是让模型回复肯定式回应(如 "Sure, here's how to..."),且要求回应复述部分用户提示以防后缀只是把话题拐走。损失就是输出目标回应的负对数似然(NLL)。

他们在 Vicuna-7b/13b 上实验,采用贪婪坐标梯度(GCG)搜索:对后缀每个 token,用梯度找出 top-k 候选替换,从 BkL 个候选里随机抽样并精确计算损失,选最优。采用增量调度(先攻单个提示,成功后再扩大到多个,类似课程学习)。关键发现:尽管只在开源模型上训练,攻击能迁移到商业闭源模型——白盒攻击开源模型可有效威胁私有模型,尤其当训练数据有重叠时。

💡 AI 解读

GCG(Zou 2023)是 LLM 对抗攻击的里程碑。它的恐怖之处在于"通用性 + 可迁移性":一段在开源小模型上优化出的乱码后缀,拼到 GPT-4 等闭源大模型后面也能大幅提升越狱成功率。这打破了一个乐观假设——"闭源、不暴露权重就安全"。原因可能是不同模型从相似数据中学到了相似的脆弱模式。它直接推动了整个行业对对抗鲁棒性的重视,也是后来"红队自动化"的标准技术。

越狱提示(Jailbreak Prompting)

Jailbreak prompts adversarially trigger LLMs to output harmful content that should have been mitigated. Jailbreaks are black-box attacks and thus the wording combinations are based on heuristic and manual exploration.

越狱提示对抗性地触发 LLM 输出本应被拦截的有害内容,是黑盒攻击,措辞组合靠启发式和人工探索。Wei 等(2023)提出 LLM 安全的两种失效模式来指导越狱设计:

Greshake et al. (2023) pointed out that even when attacks do not provide the detailed method but only provide a goal, the model might autonomously implement. When the model has access to external APIs, more information access is associated with more risks like phishing.

Greshake 等(2023)对提示注入(prompt injection)给出高层观察:即使攻击只给目标不给具体方法,模型也可能自主实现;当模型可调用外部 API/工具时,获取更多信息(甚至专有信息)会带来钓鱼、隐私刺探等更大风险。

💡 AI 解读

Wei 的"两种失效模式"是分析越狱的统一框架:一类是"逻辑矛盾"(竞争目标)——你让它又听话又安全,这两者在恶意请求时打架;另一类是"盲区"(不匹配泛化)——安全训练没见过 Base64 编码的恶意指令,但预训练见过 Base64,于是模型照办。这个框架的实用价值在于:防御也要分两路——既要在指令层面消解冲突,又要确保安全训练覆盖各种编码/语言的 OOD 输入。

人在环中的红队

Wallace 等(2019)提出人在环对抗生成,构建工具引导人类攻破模型:界面按词重要性(用对词嵌入的梯度近似)给每个词上色,帮助人类写出能骗倒模型的问题。Ziegler 等(2022)为安全分类器构建辅助工具,引入两个特性:(1) 显示每个 token 的显著性分数(删除后最影响输出的 token);(2) token 替换与插入(基于 BERT-Attack,按降低模型分数程度排序新 token)。工具辅助重写把单例耗时从 20 分钟降到 13 分钟。

BAD(Bot-Adversarial Dialogue)数据集(Xu 等 2021)引导人类骗模型犯错,含 5000+ 段对话;Anthropic 红队数据集含近 4 万条人类红队攻击,发现 RLHF 模型越大越难被攻破。人类专家红队是 OpenAI 大模型(GPT-4、DALL·E 3)安全准备工作的标配。

模型红队

Human red-teaming is powerful but hard to scale. Imagine that we can learn a red-teamer model to play adversarially against a target LLM to trigger unsafe responses. The main challenge is how to judge when an attack is successful.

人类红队强大但难扩展。设想训练一个红队模型 p_red 对抗目标 LLM p 来触发不安全回应。核心挑战是如何判定攻击成功以构造学习信号。假设有判断输出是否有害的好分类器 r(x,y),便可作奖励训练红队模型(Perez 等 2022)。流程三步:从 p_red 采样输入 → 目标模型生成输出 → 用 r 挑出导致有害输出的测试用例。

Casper 等(2023)设"Explore-Establish-Exploit"人在环流程:先采样并聚类下采样保多样性,再让人标注好坏训练有害性分类器(发现用 GPT-3.5 替代人类标注、两者虽对一半样本意见相左但训练出的分类器准确率相当),最后用 RL 训练对抗提示生成器,奖励含多样性约束(批内嵌入余弦距离)防模式塌缩。FLIRT(Mehrabi 2023)靠红模型的上下文学习攻击图文生成模型,提供 FIFO/LIFO/Scoring 等更新上下文范例的策略。

💡 AI 解读

模型红队的根本难题:"谁来当裁判"。用分类器判断攻击是否成功,则 RL 会钻分类器的空子——最后可能只是在攻击分类器而非模型本身。而且用分类器做红队收益边际有限,因为这分类器本可直接用于过滤数据/拦截输出。Casper 流程的亮点是显式地引入多样性约束,避免红队模型"一招鲜"——这与今天 AI 安全里"让攻击尽可能覆盖失败模式"的思路一脉相承。

防御一瞥

鞍点问题

A nice framework of adversarial robustness is to model it as a saddle point problem: min over model params of [max over perturbations of the loss]. Inner maximization finds the most effective adversarial point; outer minimization finds the best model parameterization.

一个优雅的对抗鲁棒性框架是把它建模为鞍点问题(Madry 等 2017):min_θ E[ max_δ L(x+δ, y; θ) ]。它是个双层优化:内层最大化找最有效的对抗点(所有攻击方法本质都是内层最大化);外层最小化找使"最坏情况下损失"最小的模型参数。朴素做法是用对抗样本替换原数据训练;该工作还发现鲁棒性需要更大模型容量(决策边界更复杂),而仅增大容量、不做数据增强也能提升鲁棒性

面向 LLM 的具体防御

💡 AI 解读

防御侧的核心教训是"没有银弹,只有权衡":越强的防御越伤模型正常能力。鞍点框架的价值在于把攻防统一成一个数学问题——攻击是内层 max,防御是外层 min,对抗训练就是同时解这两层。但困惑度过滤、重分词这类预处理防御只能挡"低级"攻击,对 GCG 这种可显式优化绕过过滤的攻击效果有限。这也是为什么今天主流方向是把安全训练进模型(RLHF/RLAIF + 对抗数据),而非仅靠外挂过滤器。