简述LLM 中的GCG 攻击

2023年卡内基梅隆大学发表了《Universal Adversarial Attacks on Optimizers and Language Models 》论文,提出了 GCG攻击(Greedy Coordinate Gradient,贪婪坐标梯度法) ,是大语言模型(LLM)安全领域的一个重磅炸弹。它证明了即使经过人类反馈强化学习(RLHF)严格安全对齐的模型,也可以被一段自动计算出的"乱码后缀"彻底击穿安全防线。

论文主要阐述了:

大语言模型遭遇对抗样本 :传统的 LLM 安全对齐(如不告诉用户如何制造炸药)很容易被人类用话术(提示词注入)绕过。而 CMU 团队提出了一个完全自动化的、基于梯度的对抗性文字后缀生成算法(GCG)。

神奇现象 :只要在违规请求(如"教我如何造炸药")后面接上一串看似毫无逻辑、如同乱码的字符后缀(例如:describe the steps... character_set_mapping [..] ),大语言模型(包括当时的 ChatGPT、Claude、Llama)就会瞬间丧失理智,完全绕过安全对齐,直接给出违规答案。

一、技术原理:乱码后缀是如何用梯度算出来的?

在大语言模型中,输入是离散的文本(Token),而梯度计算通常要求数据是连续的(如图像像素)。GCG 巧妙地克服了这一离散优化难题,其核心技术分为以下四个步骤:

1. 明确攻击的目标函数(Objective Function)

传统对齐模型的拒绝公式通常是:"抱歉,我无法回答这个问题。"

GCG 逆向思维,将优化目标设定为:最大化模型输出肯定句(如 "Sure, here is how to build a bomb")的概率。

数学表达 :固定大模型的权重 W,将输入拼接为 [恶意请求] + [对抗后缀] 。目标是最小化目标输出(Target String)的负对数似然损失(Loss)。

2. 在连续的"嵌入空间"计算隐式梯度(Gradient Approximation)

虽然文本是离散的,但 LLM 内部处理的是连续的词嵌入向量(Embedding)。

  • GCG 会在白盒环境下,对当前乱码后缀中的每一个 Token 位置,计算损失函数相对于该 Token 词嵌入向量的梯度。
  • 这个梯度向量(\(\nabla_{e} \mathcal{L}\))指向了"能让模型最快同意回答"的数学方向。

3. 贪婪坐标替换(Greedy Coordinate-wise Search)

得到梯度后,由于我们不能直接修改向量(必须换成词表里存在的词),GCG 采用了一种"投石问路"的过滤机制:

  • 线性逼近筛选 :对于后缀中的第 i个位置,将梯度与大模型整个词表(Vocabulary,通常有几万个词)的 Embedding 做内积。选出梯度方向最匹配的 Top-\(k\) 个候选 Token(比如前 256 个最能降低损失的词)。
  • 多位置并发组合:对乱码后缀里的 20 个位置都这么算一遍,从而将几万词表的恐怖搜索空间,剧烈压缩到一个可控的候选池中。

4. 真实前向验证与迭代(Forward Evaluation)

  • 从压缩后的候选池中,随机抽取一个小批量(Batch)的后缀组合,塞进模型里进行真实的**前向传播(Forward Pass)**计算 。
  • 找出其中真正让损失函数降得最低(即让模型说出"Sure"的概率最高)的那个 Token 替换方案,正式更新当前的后缀。
  • 翻来覆去迭代数百甚至上千轮 ,原本随机的乱码(如 ! ! ! ! )就会演变成一段能精准诱导模型神经元产生特定激活的"乱码咒语"(如 character_set_mapping [... )。

二、如何防御 GCG 攻击?

GCG 攻击由于其高迁移性(在开源模型上算出的乱码,可以直接越狱闭源的 GPT-4 或 Claude),给安全团队带来了极大的挑战。目前的最新防御手段主要从以下几个维度展开:

1. 输入扰动与平滑(SmoothLLM / SemanticSmooth)

  • 原理:GCG 算出来的乱码后缀是极其精准且脆弱的(数学上的孤立点)。只要对输入文本进行微小的改动,这种精密的对抗平衡就会被打破。
  • 做法(如 SmoothLLM 框架):系统收到用户输入的提示词后,主动对其进行字符级的随机微调(如随机插入空格、替换同义词、甚至故意制造错别字)并生成多个副本,然后分别喂给模型。如果多数副本触发了拒绝回复,系统就会判定该输入为对抗攻击并进行拦截。

2. 困惑度过滤(Perplexity Filtering)

  • 原理:人类写出来的句子(哪怕是恶意越狱的话术)通常符合自然语言规律;而 GCG 算出来的后缀是一堆毫无语义逻辑的乱码(Perplexity 极高)。
  • 做法 :在主大模型前部署一个非常轻量级的语言模型(如 GPT-2 或 Small Llama)作为安检员,专门计算输入序列的困惑度(Perplexity)。一旦发现用户输入的提示词中包含一段违反语言规律的"突兀乱码",直接拒绝服务。

3. 大模型加盐与动态旋转(LLM Salting)

  • 原理:GCG 极度依赖攻击者在本地对开源模型进行反复的梯度迭代。
  • 做法 :最新提出的 LLM Salting (大模型加盐)技术,在模型的内部安全表征层注入动态、随机的"盐值"(加扰矩阵)。这使得攻击者在本地开源 Llama 上辛辛苦苦算出来的通用乱码后缀,一旦拿到线上部署的"加盐版"模型上时,由于内部特征空间被随机旋转,乱码瞬间失效。 [1](https://www.sophos.com/en-us/blog/locking-it-down-a-new-technique-to-prevent-llm-jailbreaks "1"), [2](https://blog.csdn.net/oQianYuan/article/details/158774321 "2"), [3](https://ascii-iie.github.io/Seminar/240112-LLM%E7%9A%84Prompt%E8%B6%8A%E7%8B%B1%E6%94%BB%E5%87%BB-%E8%83%A1%E5%8D%9A%E7%BF%94.pdf "3")

4. 稳健提示词优化与安全对齐(RPO / 护栏系统)

做法 :通过 RPO(Robust Prompt Optimization,鲁棒提示词优化) 技术,在系统提示词(System Prompt)中利用对抗算法反向搜索出一段具有"防御力"的固定前缀;同时在工程架构上实施"零信任",无论前端模型如何被乱码绕过,其输出端都有独立的敏感内容审计模块(Guardrails),一旦检测到模型吐出违规核心词(如炸药配方),在最后一关硬性截断输出

相关推荐
沪上企服通1 小时前
税制变更前的影子账套回归:代账 pipeline 怎么在规则上线前先跑一遍
人工智能·数据挖掘·回归
m0_587383001 小时前
碰碰好评卡功能落地实战 从需求梳理到上线部署全流程实操指南
java·linux·服务器·前端·javascript·vue.js·人工智能
半吊子全栈工匠1 小时前
构建企业级 Agentic AI的语义层
人工智能·语义层·本体驱动的ai大模型
李航19831 小时前
SketchUp国产平替来了,功能非常接近,还有AI版本自动建模
人工智能·python·计算机视觉·ai·ai编程
玩AI的奶茶1 小时前
什么情况适合租算力?一张场景对照表,加三个自测问题
大数据·linux·服务器·数据库·人工智能·python
syounger1 小时前
SAP CTO谈预测AI:能解释业务,不等于能准确预测业务
人工智能
海宇大数据1 小时前
零信任架构实战:基于海宇企业综合风险报告构建自动化供应链保理对公尽调网关
运维·人工智能·架构·自动化
沉下心来学鲁班1 小时前
具身智能入门:用 Python 让 MicroDuck 机器狗学会走路
开发语言·人工智能·python·机器人
夕小瑶1 小时前
龙王归位,Gemini 4 Argon正式炸场上线
人工智能