概述
随着大语言模型(LLM)在各行业的广泛部署,其安全性成为至关重要的问题。尽管对齐技术显著提升了模型的整体安全性,但LLM仍然容易受到精心设计的对抗输入的攻击。1
LLM对抗攻击旨在诱导模型产生有害输出、绕过安全机制或泄露敏感信息。与传统图像分类模型的对抗攻击不同,LLM攻击面临独特的挑战,包括:
- 离散输入空间:文本由离散的Token组成,限制了梯度基优化的直接应用
- Tokenization依赖:不同的分词方式可能影响攻击效果
- 语义保真度要求:攻击者通常希望保持原始语义不被察觉
攻击分类体系
按访问级别分类
| 类型 | 描述 | 前提条件 |
|---|---|---|
| White-box攻击 | 完全访问模型权重、梯度、架构 | 需要模型内部访问权限 |
| Black-box攻击 | 仅通过API访问,无内部信息 | 只需要查询接口 |
| Gray-box攻击 | 部分信息访问(如embedding) | 介于两者之间 |
按攻击目标分类
- 安全绕过攻击:诱导模型生成有害内容
- 拒绝服务攻击:使模型无法正常响应
- 信息泄露攻击:提取训练数据或模型信息
- 提示注入攻击:在用户输入中注入恶意指令
按攻击方法分类
对抗攻击
├── Token级攻击
│ ├── 对抗后缀攻击
│ ├── 重Tokenization攻击
│ └── 梯度优化攻击
├── Prompt级攻击
│ ├── 直接Prompt注入
│ ├── 间接Prompt注入
│ └── Jailbreak
└── 迁移攻击
├── 跨模型迁移
└── 跨任务迁移
核心挑战
1. 离散输入空间
传统对抗攻击利用连续输入空间的平滑性,通过梯度上升构造扰动。但LLM的输入是离散的Token序列,这带来两个问题:
- 梯度不可用:无法直接计算Token的梯度
- 组合爆炸:可能的Token序列空间巨大
解决方案:
- GCG(Greedy Coordinate Gradient)方法:逐Token贪婪优化
- ARCA(Adversarial Regularized Contrastive Attack):利用对比学习目标
- 连续松弛:Gumbel-Softmax、Straight-Through Estimator
2. Tokenization依赖
研究发现,攻击者可以通过操控分词过程来绕过安全机制。2
对抗Tokenization原理:
原始文本 → 标准分词 → 安全分类器通过
原始文本 → 对抗分词 → 安全分类器绕过
模型即使使用不同于训练时的分词方式,仍然能够理解文本语义,这为攻击提供了空间。
3. 语义保真度
成功的攻击通常需要:
- 保持原始查询的语义意图
- 不引起人类注意的可疑模式
- 在不同上下文中的稳定性
关键攻击方法
Greedy Coordinate Gradient (GCG)
GCG是当前最有效的离散Token攻击方法之一:
# GCG算法核心伪代码
def gcg_attack(target_model, prompt, target_response):
x = tokenize(prompt) # 初始Token序列
for iteration in range(max_iterations):
# 计算每个位置Token的梯度
grad = compute_token_gradients(target_model, x, target_response)
# 选择梯度最大的Top-k Token
top_k_indices = select_top_k(grad, k=48)
# 贪婪替换:选择损失最小的Token
for idx in random_sample(top_k_indices):
x_new = x.clone()
x_new[idx] = candidate_token
if loss(target_model, x_new) < loss(target_model, x):
x = x_new
break
return x迁移攻击
迁移攻击利用对抗样本的跨模型泛化特性:
攻击流程:
- 在源模型上构造对抗样本
- 直接应用于目标模型
- 无需查询目标模型
评估指标
Attack Success Rate (ASR)
Jaccard相似度
衡量对抗样本与原始输入的Token重叠程度:
语义保持度
通过LLM评估或人工评估对抗样本是否保持原始意图。
与传统对抗攻击的区别
| 维度 | 图像对抗攻击 | LLM对抗攻击 |
|---|---|---|
| 输入空间 | 连续像素值 | 离散Token序列 |
| 扰动度量 | 范数 | Token编辑距离 |
| 感知阈值 | 小扰动难以察觉 | 语义变化敏感 |
| 攻击目标 | 分类错误 | 有害输出/行为 |
| 可解释性 | 像素级解释 | Token级解释 |
实际应用场景
1. 安全研究
红队测试和对抗评估用于发现模型漏洞。
2. 数据增强
对抗样本可用于提升模型的鲁棒性训练。
3. 恶意利用
攻击者可能试图绕过安全机制进行:
- 有害内容生成
- 敏感信息提取
- 恶意代码生成