一句话定义
GCG 攻击(Greedy Coordinate Gradient,贪心坐标梯度)是一种白盒越狱方法:在你原本的提示词后面自动拼上一段看起来像乱码的「对抗后缀」,再靠梯度反复替换后缀里的字,直到模型乖乖输出它本该拒绝的内容。
它到底怎么做的
先打个比方。你在猜一串开锁密码,每次都只改动其中一位(这就是「坐标」:序列里每一个位置算一个坐标)。可是盲猜太慢,于是你拿到一份提示——它告诉你「这一位上换成这几个字符最有可能对上」。你照着试一批,留下让锁最松的那一个,再换下一位继续。
这份「提示」就是梯度。模型对每个 token 位置都能算出梯度,指向让损失下降的方向。但文字是离散的,不能直接相减,于是做法变成三步:对每个位置算梯度、取最被看好的若干个候选 token;随机挑一批位置,各生成若干替换方案;批量跑一遍前向计算,留下真正让模型更倾向于接出「好的,下面我来介绍……」那个答案的方案。重复几百上千步。
「贪心」是说每一步只看当前的收益,不保证全局最优;「坐标」是说每次只动一个位置。它还有个关键玩法:在一批不同的有害提问上同时优化,得到的后缀往往能迁移到别的模型上。
和相邻概念的区别
| 方法 | 需要什么权限 | 后缀长什么样 |
|---|---|---|
| 人工越狱(角色扮演、「忽略以上指令」) | 无 | 人能读懂的自然语言 |
| 黑盒攻击(不断试 prompt) | 只能调 API | 自然语言 |
| 软提示攻击 | 能碰嵌入层 | 连续向量,打不出来 |
| GCG | 白盒梯度 | 离散 token,像乱码 |
区别的本质是:GCG 要的是可读、可直接输入的离散文字,同时又要用只有白盒才拿得到的梯度来提速。
对从业者和普通人的意义
对做安全的人,GCG 把「对齐到底靠不靠谱」变成了可量化、可复现的实验,是红队评测的常用起点。它揭示的迁移性尤其值得注意:在开源模型上搜出的后缀能打中别的模型,意味着开源侧暴露的脆弱点可能是闭源侧的预警,不能因为对手拿不到梯度就松懈。防守思路也很直接——这类后缀通常人看不懂,困惑度检测、异常字符过滤就能拦下一部分,再配合对抗训练、输入改写等手段,具体效果以各家官方说明和最新评测为准。
对普通职场人,记住一个信号就够了:如果一段提示词里塞着长长一串莫名其妙的符号,后面又跟着明确的要求,那多半不是正常用法。
