基于优化的提示词注入攻击
- 摘要
- 引言
- 问题描述
- LLM-as-a-judge
- 威胁模型
- 攻击者知道什么
- JUDGEDECEIVER 细节
- 概述
- 生成影子候选回复
- 公式化为优化问题
- Target-aligned generation loss
- Target-enhancement loss
- Adversarial perplexity loss
- 优化问题
- 求解优化问题
摘要
LLM-as-a-Judge 利用一个大型语言模型(LLM)从一组候选答案中选择给定问题的最佳回答。LLM-as-a-Judge 有许多应用,例如 LLM 驱动的搜索、带有 AI 反馈的强化学习(RLAIF)和工具选择。在这项工作中,提出了 JudgeDeceiver,这是一种针对 LLM-as-a-Judge 的基于优化的提示注入攻击。JudgeDeceiver 将一个精心设计的序列注入到攻击者控制的候选回答中,使得 LLM-as-a-Judge 无论其他候选回答是什么,都会为攻击者选择的问题选择该候选回答。具体来说,我们将寻找这样的序列作为一个优化问题,并提出了一种基于梯度的方法来近似解决它。我们广泛的评估表明,JudgeDeceiver 非常有效,并且比现有的手动制作注入序列的提示注入攻击和扩展到我们问题的越狱攻击更有效。我们还通过三个案例研究,即 LLM 驱动的搜索、RLAIF 和工具选择,展示了 JudgeDeceiver 的有效性。此外,我们考虑了包括已知答案检测、困惑度检测和困惑度窗口检测在内的防御措施。我们的结果表明,这些防御措施是不足够的,突出了开发新的防御策略的迫切需要。
引言
现有的提示注入和越狱攻击对 LLM-as-a-Judge 的效果不佳,如第 4 节详细说明。这是因为现有的提示注入攻击依赖于基于启发式手动制作的注入序列。此外,现有的提示注入和越狱攻击假设攻击者知道输入到 LLM 的全部数据,而 LLM-as-a-Judge 面临一个独特的挑战:攻击者不知道除了目标回应之外的候选回应集。这种技术差异为 LLM-as-a-Judge 提示注入创造了不同的挑战,我们的工作解决了这个问题。
提出了 JudgeDeceiver,这是针对 LLM-as-a-Judge 的首个基于优化的提示注入攻击。这个注入序列被添加到提交给 LLM-as-a-Judge 的目标回答中,从而误导法官倾向于这个回答,如图 1 所示。
注入的目标回答可以抵御 LLM-as-a-Judge 采用的位置交换防御机制。
首先构建一个影子候选回答数据集,旨在模拟攻击场景,从而使 JudgeDeceiver 能够生成具有更好泛化的注入序列。攻击目标是操纵 LLM-as-a-Judge 生成一个明确的攻击目标输出,例如“输出(索引)更好”,其中“索引”指的是目标回答的特定索引。为了实现这一点,我们提出了一个目标对齐生成损失(target-aligned generation loss),旨在最小化受注入序列影响的输出与定义的攻击目标输出之间的差异。
然而,随着影子候选回答数量的增加,一个关键挑战出现了:由于目标回答的随机位置索引,优化变得更加复杂。为了应对这一挑战,我们提出了一个额外的目标增强损失项(target-enhancement
loss term)在优化问题中,它专注于最大化输出中目标回答的索引标记的可能性。
这个损失函数确保了无论目标回答的位置索引如何,评估结果都与我们预定义的攻击目标紧密对齐。具体来说,这个损失项专注于攻击目标的位置特征,并减轻了回答位置的潜在混杂效应,从而增强了我们的攻击对位置偏见的一致性和鲁棒性。
此外,我们引入了一个对抗性困惑度损失(adversarial perplexity loss),以**减少注入序列的困惑度,这对抗基于困惑度检测的潜在防御。**注入序列的生成是通过最小化三个损失项的加权和来表述的,我们提出了一种基于梯度下降的方法来解决优化问题。
探索了针对judgedeception的三种基于检测的防御:已知答案检测[43]、困惑(PPL)检测[32]和困惑窗口(PPL- w)检测[32]。特别是,已知答案检测无法检测包含注入序列的目标响应。PPL检测和PPL- w检测都能检测到注入序列的部分目标响应,但仍有很大一部分缺失。例如,当LLM为Llama-3-8B时,当PPL-W错误地将<1%的干净响应检测为目标响应时,注入序列的70%的目标响应未检测到。
贡献:
- 提出了第一个针对LLM-as-a-Judge的基于优化的提示注入攻击——judgedeception
问题描述
LLM-as-a-judge
简单点就是按如下方法组织提示词,针对question
q
q
q, 从response
r
i
,
{
i
=
1
,
.
.
.
,
n
}
r_i, \{i=1,...,n\}
ri,{i=1,...,n}中选择一个最佳回答,返回索引。
威胁模型
攻击者的目标如下所述:给定一个目标问题 q q q 和一组候选回答 R R R,攻击者从 R R R 中选择一个目标回答 r t r_t rt。
这个选择,记作对 q , r t q, r_t q,rt,构成了攻击者的目标。攻击者旨在欺骗 LLM-as-a-Judge,使其在 R R R 中选择目标回答 r t r_t rt作为最佳回答,即使它对 q q q是不准确甚至恶意的。实现这种欺骗的核心是向目标回答 r t r_t rt注入一个序列 δ \delta δ,构造这个序列是为了利用 LLM 的统计依赖性和对微妙的语言和上下文异常的脆弱性来操纵其评估。这里, δ = T 1 , T 2 , … , T l \delta = T_1, T_2, \ldots, T_l δ=T1,T2,…,Tl 包含 l l l个标记,表示应用于原始目标回答 r t r_t rt 的注入序列,旨在扭曲 LLM 的评估准确性。函数 A ( ⋅ ) A(\cdot) A(⋅)表示将 δ \delta δ以各种形式附加到 r t r_t rt的过程:它可以作为后缀、前缀或前后缀的组合添加到目标回答中。因此,攻击者目标的表述可以定义为:
E p header ⊕ q ⊕ r 1 ⊕ ⋯ ⊕ A ( r t , δ ) ⊕ ⋯ ⊕ r n ⊕ p trailer = o t Ep_{\text{header}} \oplus q \oplus r_1 \oplus \cdots \oplus A(r_t, \delta) \oplus \cdots \oplus r_n \oplus p_{\text{trailer}} = o_t Epheader⊕q⊕r1⊕⋯⊕A(rt,δ)⊕⋯⊕rn⊕ptrailer=ot
其中 o t o_t ot 代表目标输出(攻击者期望的 LLM-as-a-Judge 的判断), t t t 是输入提示中目标回答的索引。LLM-as-a-Judge 在注入序列 δ \delta δ后选择回答 r t r_t rt 作为最优选择。
攻击者知道什么
假设攻击者知道要操作的目标问题-响应对。考虑了LLM-as-a-Judge使用开源llm的攻击场景。攻击者无法访问与目标响应一起评估的候选响应𝑅的完整集合,也不知道这些响应的总数𝑛。此外,攻击者不知道LLM输入提示符中目标响应的特定嵌入位置索引。
认为攻击者可以操纵由LLM-as-a-Judge评估的目标响应。攻击者也是LLM-as-a-Judge的用户,可以通过迭代测试了解LLM-as-a-Judge的输出模板。通过利用该模板,攻击者可以设计期望的目标,这可以作为制定优化问题以生成最优注入序列 δ \delta δ 的基础。
JUDGEDECEIVER 细节
概述
与以往的手动提示注入攻击方法不同,judgedeception使用了一种新的目标优化函数来生成注入序列。该优化函数包括三个损失组成部分:目标对齐生成损失(target-aligned generation loss)、目标增强损失(target enhancement loss)和对抗困惑损失(adversarial perplexity loss)。每个组件处理攻击的不同方面,总体目标是最小化它们的加权和。此外,提出了一种利用梯度下降和位置自适应的逐步算法来求解优化函数。
生成影子候选回复
如前文小节 2.2 所述,攻击者面临一个难题,即很难直接获取由大模型判别器(LLM-as-a-Judge)评估的真实候选响应。为了解决此问题,我们借鉴了先前研究中的一些见解 [33, 57, 66],构建了一组用于模拟潜在攻击场景的“影子候选响应”(shadow candidate response)。对于每一个目标问题 q q q,我们使用一个公开可访问的语言模型,记为 L L L,生成 N N N 个影子响应。为确保这些响应的多样性和全面性,我们使用一个重构语言模型(如 GPT-4)对问题 q q q 生成多个不同的提示语。这一过程涉及将一个手动设计的提示语转化为一组多样化的提示语,记为 P g e n = { p 1 , p 2 , ⋅ ⋅ ⋅ , p N } P_{gen} = \{ p_1, p_2, ···, p_N \} Pgen={p1,p2,⋅⋅⋅,pN},其中的示例见附录 A.5 中的表 14。集合 P g e n P_{gen} Pgen 中的每个提示语与目标问题 q q q 结合生成一个多样化的“影子数据集”(shadow dataset)候选响应,记作 D s = L ( P g e n , q ) D_s = L(P_{gen}, q) Ds=L(Pgen,q)。因此,与目标问题 q q q 相关的影子候选响应数据集可以表示为 D s = { s 1 , s 2 , ⋅ ⋅ ⋅ , s N } D_s = \{ s_1, s_2, ···, s_N \} Ds={s1,s2,⋅⋅⋅,sN}。该影子候选响应数据集为攻击准备阶段的关键步骤,它使得攻击者在不访问真实候选响应的情况下分析大模型判别器的行为,从而生成一个用于针对性和广义化提示注入攻击的注入序列。
公式化为优化问题
发起攻击时,攻击者无法完全获取关于候选响应数量和内容的详细信息,以应对此限制,我们构建了一个候选响应集
R
s
=
{
s
1
,
⋅
⋅
⋅
,
s
t
−
1
,
r
t
,
s
t
+
1
,
⋅
⋅
⋅
,
s
m
}
R_s = \{ s_1, ···, s_{t-1}, r_t, s_{t+1}, ···, s_m \}
Rs={s1,⋅⋅⋅,st−1,rt,st+1,⋅⋅⋅,sm},其中包含目标响应
r
t
r_t
rt 和从影子候选响应数据集
D
s
D_s
Ds 中随机选择的
(
m
−
1
)
(m - 1)
(m−1) 个响应。数据集
R
s
R_s
Rs 为在缺乏真实候选响应的完整信息的情况下,制定优化问题提供了基础。为了增强提示注入攻击对不同真实候选响应的泛化能力,我们在多个影子候选响应集
R
s
(
i
)
i
=
1
M
{ R^{(i)}_s }^M_{i=1}
Rs(i)i=1M 上优化注入序列
δ
\delta
δ。如方程 (2) 所述,有效攻击的目标是增加“大模型判别器”生成攻击者期望的目标输出的可能性,即识别目标响应为最匹配的响应。该目标可通过以下函数表示:
max
δ
∏
i
=
1
M
E
(
o
t
i
∣
p
h
e
a
d
e
r
⊕
q
⊕
s
1
(
i
)
⊕
⋅
⋅
⋅
⊕
A
(
r
t
i
,
δ
)
⊕
⋅
⋅
⋅
⊕
s
m
(
i
)
⊕
p
t
r
a
i
l
e
r
)
,
\max_{\delta} \prod_{i=1}^M E(o_{ti} | p_{header} \oplus q \oplus s^{(i)}_1 \oplus ··· \oplus A(r_{ti}, \delta) \oplus ··· \oplus s^{(i)}_m \oplus p_{trailer}),
δmaxi=1∏ME(oti∣pheader⊕q⊕s1(i)⊕⋅⋅⋅⊕A(rti,δ)⊕⋅⋅⋅⊕sm(i)⊕ptrailer),
其中
r
t
i
r_{t_i}
rti 表示目标响应,
o
t
i
o_{t_i}
oti 表示目标输出。我们使用
t
i
t_i
ti 表示目标响应在
R
s
(
i
)
R^{(i)}_s
Rs(i) 中的位置索引。鉴于“大模型判别器”本质上是一个生成函数,我们定义了一个优化损失函数以实现预期的攻击目标。通过优化注入序列
δ
=
(
T
1
,
T
2
,
⋅
⋅
⋅
,
T
l
)
\delta = (T_1, T_2, ···, T_l)
δ=(T1,T2,⋅⋅⋅,Tl),我们可以操控“大模型判别器”生成与预定义的目标输出一致的结果。这种基于优化的方法能够精确控制模型的生成行为,确保输出与攻击目标匹配,因为输入的提示通过贪婪生成过程唯一地决定输出。具体而言,我们设计了三项损失构成该优化损失函数:目标对齐生成损失(target-aligned generation loss)、目标增强损失(target-enhancement loss)、以及对抗困惑度损失(adversarial perplexity loss)。
Target-aligned generation loss
目标对齐生成损失(target-aligned generation loss),记为
L
aligned
L_{\text{aligned}}
Laligned,旨在提高 LLM 生成目标输出
o
t
i
=
(
T
1
(
i
)
,
T
2
(
i
)
,
⋅
⋅
⋅
,
T
L
(
i
)
)
o_{t_i} = (T^{(i)}_1, T^{(i)}_2, ···, T^{(i)}_L)
oti=(T1(i),T2(i),⋅⋅⋅,TL(i)) 的概率。在此背景下,用
x
(
i
)
x^{(i)}
x(i) 表示用于评估
R
s
(
i
)
R^{(i)}_s
Rs(i) 的输入序列,特别是排除注入序列
δ
\delta
δ 的情况。
L
aligned
L_{\text{aligned}}
Laligned 的形式化定义如下:
L
aligned
(
x
(
i
)
,
δ
)
=
−
log
E
(
o
t
i
∣
x
(
i
)
,
δ
)
,
L_{\text{aligned}}(x^{(i)}, \delta) = - \log E(o_{t_i} | x^{(i)}, \delta),
Laligned(x(i),δ)=−logE(oti∣x(i),δ),
其中
E
(
o
t
i
∣
x
(
i
)
,
δ
)
E(o_{t_i} | x^{(i)}, \delta)
E(oti∣x(i),δ) 定义为:
E
(
o
t
i
∣
x
(
i
)
,
δ
)
=
∏
j
=
1
L
E
(
T
j
(
i
)
∣
x
1
:
h
i
(
i
)
,
δ
,
x
h
i
+
l
+
1
:
n
i
(
i
)
,
T
1
(
i
)
,
⋅
⋅
⋅
,
T
j
−
1
(
i
)
)
.
E(o_{t_i} | x^{(i)}, \delta) = \prod_{j=1}^L E(T^{(i)}_j | x^{(i)}_{1:h_i}, \delta, x^{(i)}_{h_i+l+1:n_i}, T^{(i)}_1, ···, T^{(i)}_{j-1}).
E(oti∣x(i),δ)=j=1∏LE(Tj(i)∣x1:hi(i),δ,xhi+l+1:ni(i),T1(i),⋅⋅⋅,Tj−1(i)).
在这里,
x
1
:
h
i
(
i
)
x^{(i)}_{1:h_i}
x1:hi(i) 表示注入序列
δ
\delta
δ 之前的输入标记,
x
h
i
+
l
+
1
:
n
i
(
i
)
x^{(i)}_{h_i+l+1:n_i}
xhi+l+1:ni(i) 表示
δ
\delta
δ 之后的输入标记。
h
i
h_i
hi 表示注入序列
δ
\delta
δ 之前的标记长度,而
n
i
n_i
ni 是 LLM 处理的输入标记总长度。
Target-enhancement loss
目标增强损失(target-enhancement loss)旨在在优化过程中关注位置特征,以提高攻击在输入提示中目标响应位置变化时的鲁棒性。该损失项通过聚焦于成功攻击所需的关键单个标记来补充目标对齐生成损失。目标增强损失的公式如下:
L
enhancement
(
x
(
i
)
,
δ
)
=
−
log
E
(
t
i
∣
x
(
i
)
,
δ
)
,
L_{\text{enhancement}}(x^{(i)}, \delta) = - \log E(t_i | x^{(i)}, \delta),
Lenhancement(x(i),δ)=−logE(ti∣x(i),δ),
其中,
t
i
t_i
ti 表示 LLM-as-a-Judge 中目标响应的位置信息标记。此公式旨在最大化目标输出中位置信息标记
t
i
t_i
ti 的概率,从而使注入序列
δ
\delta
δ 的优化更加直接和高效,以达到预期的攻击目标。
Adversarial perplexity loss
对抗困惑度损失(adversarial perplexity loss)旨在规避基于困惑度检测的防御机制 [3]。此类防御机制通过计算候选响应的对数困惑度来检测提示词注入攻击的存在。通常,候选响应中的注入序列会降低文本质量,导致更高的困惑度。我们通过在优化注入序列时使用对抗困惑度损失,以减轻其对整体文本困惑度的影响,使其更自然地融入目标文本,从而提高其在基于困惑度的防御机制下的隐蔽性。
形式上,对于长度为
l
l
l 的注入序列
δ
=
(
T
1
,
T
2
,
⋯
,
T
l
)
\delta = (T_1, T_2, \cdots, T_l)
δ=(T1,T2,⋯,Tl),其对数困惑度定义为该序列在模型下的平均负对数似然,可表示如下:
L
perplexity
(
x
(
i
)
,
δ
)
=
−
1
l
∑
j
=
1
l
log
E
(
T
j
∣
x
1
:
h
i
(
i
)
,
T
1
,
⋯
,
T
j
−
1
)
.
L_{\text{perplexity}}(x^{(i)}, \delta) = - \frac{1}{l} \sum_{j=1}^{l} \log E(T_j | x^{(i)}_{1:h_i}, T_1, \cdots, T_{j-1}).
Lperplexity(x(i),δ)=−l1j=1∑llogE(Tj∣x1:hi(i),T1,⋯,Tj−1).
优化问题
基于定义的目标和三个不同的损失函数
L
aligned
L_{\text{aligned}}
Laligned、
L
enhancement
L_{\text{enhancement}}
Lenhancement 和
L
perplexity
L_{\text{perplexity}}
Lperplexity,我们将 JudgeDeceiver 建立为一个优化问题,具体可以表示如下:
L
total
(
x
(
i
)
,
δ
)
=
L
aligned
(
x
(
i
)
,
δ
)
+
α
L
enhancement
(
x
(
i
)
,
δ
)
+
β
L
perplexity
(
y
(
x
(
i
)
,
δ
)
,
(8)
L_{\text{total}}(x^{(i)}, \delta) = L_{\text{aligned}}(x^{(i)}, \delta) + \alpha L_{\text{enhancement}}(x^{(i)}, \delta) + \beta L_{\text{perplexity}}(y(x^{(i)}, \delta), \tag{8}
Ltotal(x(i),δ)=Laligned(x(i),δ)+αLenhancement(x(i),δ)+βLperplexity(y(x(i),δ),(8)
我们的目标是最小化总损失:
min
δ
L
total
(
δ
)
=
∑
i
=
1
M
L
total
(
x
(
i
)
,
δ
)
.
(9)
\min_{\delta} L_{\text{total}}(\delta) = \sum_{i=1}^{M} L_{\text{total}}(x^{(i)}, \delta). \tag{9}
δminLtotal(δ)=i=1∑MLtotal(x(i),δ).(9)
其中
α
\alpha
α 和
β
\beta
β 是平衡三个损失项的超参数。我们在评估中探索了它们对攻击性能的影响。实验结果表明,所有三个损失项对于 JudgeDeceiver 执行有效且一致的攻击至关重要。
求解优化问题
为了优化公式(9)中描述的损失函数,我们提出了一种基于梯度下降的方法,该方法通过迭代替换注入序列 δ \delta δ 中的标记,借鉴了先前研究的观点 [35, 58, 72]。目标是识别一个优化版本的 δ \delta δ,以最小化 L total ( δ ) L_{\text{total}}(\delta) Ltotal(δ) 的值。该方法系统地通过一系列迭代调整 δ \delta δ,在每一步评估对 L total L_{\text{total}} Ltotal 的影响,以逐步减少损失,直到找到最有效的注入序列。
优化过程开始时计算对修改 δ \delta δ 中第 j j j 个标记的影响的线性近似,量化为梯度:
∇ T j L total ( δ ) ∈ R ∣ V ∣ , (10) \nabla_{T_j} L_{\text{total}}(\delta) \in \mathbb{R}^{|V|}, \tag{10} ∇TjLtotal(δ)∈R∣V∣,(10)
其中 T j T_j Tj 表示 δ \delta δ 中第 j j j 个标记的一热编码向量, V V V 表示完整的标记词汇表。随后,我们识别出具有最负梯度的前 K K K 个索引,作为替换标记 T j T_j Tj 的潜在候选。为每个 δ \delta δ 中的标记 T j T_j Tj 选择候选集后,我们采用与贪婪坐标梯度(GCG)算法 [72] 相同的标记搜索策略。
该策略随机选择一小部分 B ≤ K ∣ δ ∣ B \leq K |\delta| B≤K∣δ∣ 个标记,评估此子集内每个潜在替换的损失,然后执行产生最小损失的替换。
为了应对与候选响应的位置信息相关的不确定性,这可能影响攻击的有效性,我们在方法中引入了一个位置适应策略。我们将不同位置索引 t i t_i ti( 1 ≤ t i ≤ m 1 \leq t_i \leq m 1≤ti≤m)下的注入序列 δ \delta δ 的优化目标表示为 L total ( x ( i ) , t i , δ ) L_{\text{total}}(x^{(i)}, t_i, \delta) Ltotal(x(i),ti,δ)。通过聚合不同位置索引的损失来优化注入序列。注入序列 δ \delta δ 的优化被认为是完成的,当它在所有位置索引上始终能够成功进行提示注入攻击时。此外,我们采用逐步优化的方法,在初始候选响应集优化注入序列后,逐步将新的候选响应集纳入优化过程。与同时优化多个候选响应集相比,这一策略加快了优化过程。附录中的算法 1 显示了 JudgeDeceiver 优化注入序列的整个过程。