对抗鲁棒性与红队
对齐是训练出来的倾向,不是保证。一个模型在多数情况下会拒绝有害请求,但它的权重里某处仍然保留着那份拒绝本想压住的能力,而一个能接触输入的对手,可以去搜索那种能把它重新唤出的措辞。这场搜索,以及挫败它的努力,如今已经有了稳定形状:越狱(jailbreak)攻击,也就是绕过拒绝边界的提示,已经分出四个家族,各自利用不同攻击面;红队(red-teaming)是一项度量工作而非一次性审计,每一种已知防御都是局部的,而对抗鲁棒性(adversarial robustness)从结构上说是系统的属性,不是模型单独的属性。
与相邻两章的边界很重要。第 57 章 在模型周围加一道过滤层,检查输入与输出;第 56 章 通过约束被攻陷智能体的授权范围,来限定它能触达什么。本章的问题正夹在两者之间,落在操纵本身:攻击者如何把一次拒绝变成顺从,防御者如何度量这种成功发生的频率,以及这个频率究竟能不能被压到零。
问题:拒绝是一道软边界
后训练通过示例让模型学会拒绝(第 19 章):把有害请求与回绝配成对提供给模型,让它学会复现这个模式。结果是在一个运营者无法穷举的空间里画出的一道决策边界。在训练见过的提示词附近,拒绝是稠密的;在没人写下来的区域里,它就稀薄了。攻击就是一套找出这些区域的流程,而令人不安的是:这些区域并非罕见的偶然,而是一片可以可靠抵达的攻击面,往往还能用自动搜索抵达。
四个攻击家族已经稳定下来,它们的区别在于各自利用了模型的哪一部分。
第一个家族基于优化。贪婪坐标梯度(GCG)攻击把越狱当成一个搜索问题:在有害请求后面接一段 token 后缀,再用梯度(这个信号指出改动哪个 token 能把模型更往目标答案推)去优化这段后缀,所依据的是一个权重完全可见的白盒模型,使模型以一句肯定的话开头作答的概率最大化 (Zou et al. 2023)。这些后缀看上去像噪声,是机器而非人找出来的,而核心结果是它们会迁移:一段针对开放权重调出来的后缀,常常能越狱它从未见过的闭源模型。优化把越狱从经验技巧变成了一条可复现的流水线。
第二个家族利用的是上下文窗口里的规模,而不是 token 搜索。many-shot 越狱用一长段伪造的对话填满提示词,对话里一个助手依次回答了一连串逐步升级的有害问题,然后才抛出真正要问的那一个 (Anil et al. 2024)。模型在补全这个模式时,把伪造助手的顺从延续到了最后一问。这种攻击的有效性随示例数量大致按幂律增长,于是那个让模型变得有用的长上下文能力(第 35 章),同时也拓宽了这种攻击可以施展的攻击面。
第三个家族是对话式的。多轮攻击不在一击之内击穿边界,而是带着模型一步步走过它。人格攻击让模型扮演一个不受该策略约束的角色;crescendo 攻击以一个无害请求开场,再在若干轮里逐步升级,每一步都只是从模型已经给出的答案上再前进一小格,于是没有哪一轮单独看像是违规 (Russinovich et al. 2024)。这些攻击利用了模型会以自己先前的输出为条件,也利用了一个请求是按可见的那一轮、而非按整条轨迹来评判的。
第四个家族根本不经由用户。间接提示注入(prompt injection)把指令植入智能体会当作数据来读的内容里:一个网页、一份文档、某个工具的输出 (Greshake et al. 2023)。当智能体摄入那段内容时,它无法可靠地把被植入的指令与运营者的指令区分开。这正是专门击穿智能体的那个家族,因为一个智能体存在的理由,就是去读不受信任的外部内容并据此行动。它是对抗鲁棒性与 第 56 章 之间的连接点,下面这个下层约束框会说清为什么模型层面的修补不能单独解决它。
红队是度量,不是审计
如果攻击是一片可以可靠抵达的攻击面,那么一次性的安全评审就是错误的工具。部署方需要的,是一个关于对手成功频率的连续估计,并随着模型与攻击的变化不断重算。红队就是这个估计,而把它当成一项度量工作来对待,配上一个指标、一个数据集、一套可复现的测评装置,正是它区别于轶事的地方。
核心指标是攻击成功率:在一组固定的有害行为和一种固定的攻击方法下,引出真正有害补全的尝试所占的比例。这个数字是否可信,取决于负责判定何为有害的裁判,而裁判本身是一个模型或一份评分细则,带着与任何裁判一样的构念效度隐忧(第 50 章)。一套标准化的测评装置把行为、攻击与裁判都固定下来,好让两个模型或两种防御能在同一基准上比较;HarmBench 就是这样一个框架,把一套行为集合与一组攻击、再加一个自动分类器配在一起 (Mazeika et al. 2024)。GCG 工作引入的那套有害行为数据集,常被称作 AdvBench,成了许多这类评测底下共用的基底 (Zou et al. 2023)。
生成攻击本身也是可自动化的,而红队正是在这里超越了人工团队的规模。可以把一个语言模型对准一个目标,要它生成能让目标行为失当的提示词,再根据它哪些提示词奏效来训练它,从而把攻击发现变成它自己的一个优化循环 (Perez et al. 2022)。自动红队把覆盖面拓宽到远超人工团队能手写的范围,代价是它只能找到它的生成器被塑造去找的那些攻击,而可能整族整族地漏掉生成器从未建模的攻击。人工红队仍是真正新颖攻击类别的来源;自动化的作用,是把它们摊薄到每一次模型发布上。
第 41 章 里的运行时在构造上就要读取不受信任的内容:一个无法摄入网页或工具结果的智能体,根本无法完成它的工作。那条敞开的输入通道决定了间接注入不能只在提示词层解决,因为模型没有可靠的、通道级别的信号,去把运营者的指令与那条植入在它被要求阅读的数据里的指令分开。因此防御不能只放在模型里。它下移到授权范围约束(第 56 章),限定一个被操纵的智能体能触达什么;又外移到运行时过滤(第 57 章),检查那道跨越。鲁棒性是围绕模型的那个系统的属性,而不是权重的属性。一个对齐得更好的模型,会提高第一个家族的成本,却几乎触碰不到第四个。
防御,以及每一种为何都是局部的
防御按介入的位置划分,而把它们读作一套纵深防御、而非去寻找那一项单独的修补,才是务实的姿态。
训练期加固把对抗样本加进后训练的配方里,让拒绝边界覆盖更多角落。它提高了对已知攻击风格的下限,却对模型冻结之后才找到的优化后缀泛化很差,因为攻击者是针对已部署的边界去优化的,而防御者训练的是上个季度的边界。
推断期分类器,也就是 第 57 章 的主题,在输入与输出上各放一个独立模型,去抓住目标自己漏掉的攻击。它们独立于目标的对齐,这是它们的长处,而它们在每次调用上都加一笔延迟与成本的税,又会漏掉自己训练从未覆盖的措辞。
表征级防御介入模型内部,而非围着模型转。circuit breakers 伸进残差流(贯穿模型各层、承载信息的那条激活向量),把先于有害补全出现的内部表征重新布线,于是当一次攻击把模型引向产生危害时,被重新布线的表征会让生成脱轨成语无伦次,而不是顺从 (Zou et al. 2024)。它的吸引力在于:防御附着的是有害的内部状态,而非表面措辞;后者正是优化攻击与 many-shot 攻击所变换的东西。它究竟是稳固地泛化,还是会被那些找到新内部路径的攻击重新击穿,恰恰是下一个框所点名的开放问题,这也把这项工作与 第 54 章 里的可解释性纲领连接起来,后者提供了防御所作用的那幅内部特征的图景。
系统提示词加固,也就是指示模型不要信任内嵌的指令、把工具内容当作数据,是最便宜的一层,单独看也是最弱的一层:它本身不过是上下文窗口里的一段文字,受制于那些攻击所演示的同一种覆盖。
- 越狱鲁棒性是可达成的,还是无止境的修补? 一派认为鲁棒性是一个可抵达的工程目标,circuit breakers 与对抗训练能让攻击成功率一个版本接一个版本地降下去。另一派认为,无界的输入空间面对一个固定的模型,注定留下一片残余攻击面,所以务实的目标是提高攻击者成本、限定爆炸半径,而不是彻底封闭这道边界。优化后缀会迁移这个结果 (Zou et al. 2023),被前一派读作一个待修补的 bug,被后一派读作这片攻击面是内禀的证据。
- 表征级防御会泛化吗? circuit breakers (Zou et al. 2024) 作用于内部状态而非表面形式,理应跨措辞泛化。怀疑者预期会出现找到新内部路径的自适应攻击把它们重新击穿,正是那个击败了早先防御的同一模式,并指出已发表的攻破往往尾随已发表的防御。
- 自动红队是一个安全信号,还是一场军备竞赛? 自动攻击生成 (Perez et al. 2022) 以低成本拓宽了覆盖面,但它度量的是对其生成器所建模的那些攻击的鲁棒性,所以攻击成功率下降,可能意味着模型更安全了,也可能只是生成器不再能找到人类仍能找到的东西。
鲁棒性的代价
这里的每一种防御都会改动不止一条运维轴。能力的代价是过度拒绝:一个对攻击加固过的模型,会回绝那些与攻击相似的无害请求,而那道挡住越狱的边界,同样挡住了一位安全研究者正当的提问,于是鲁棒性与有用性是在彼此权衡中调出来的,而非各自独立地最大化。效率的代价是 第 57 章 的分类器税,以及对抗与表征级方法的训练成本,前者付在每次请求上,后者付在每次发布上。信任是整件事的目的,而它可信的形态,是针对一个具名测评装置发布的攻击成功率,而非一句关于安全的断言:一份无法像 HarmBench 那样去度量的鲁棒性 (Mazeika et al. 2024),是一个主张,不是一个属性。这门学科对 第 55 章 的贡献正在于此:一个说明已部署边界能被推到多远、能被谁推动的数字,并在每次模型或攻击变化时重新算过。
延伸阅读
- Zou et al., “Universal and Transferable Adversarial Attacks on Aligned Language Models” (GCG 与 AdvBench 有害行为集合), 2023. arXiv:2307.15043GCG 提出一种自动化的贪婪坐标梯度方法,通过搜索对抗性后缀实现对已对齐大语言模型的越狱,并可迁移至 ChatGPT、Bard、Claude 等黑盒模型。
- Greshake et al., “Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection,” 2023. arXiv:2302.12173本文提出间接提示注入攻击:攻击者将恶意指令植入大语言模型应用检索的数据中,无需直接访问即可远程劫持大语言模型的行为。
- Anil et al., “Many-shot Jailbreaking” (长上下文攻击的规模效应), 2024. anthropic.com多样本越狱利用大型上下文窗口,通过在单个提示中填充数百个伪有害对话示例,借助上下文学习绕过大语言模型(LLM)的安全训练。
- Russinovich et al., “Great, Now Write an Article About That: The Crescendo Multi-Turn LLM Jailbreak Attack,” 2024. arXiv:2404.01833Crescendo 是一种多轮大语言模型越狱攻击,通过利用模型自身的历史输出逐步升级无害提示,在 GPT-4、Gemini-Pro 等模型上实现高攻击成功率,绕过安全对齐。
- Perez et al., “Red Teaming Language Models with Language Models” (自动攻击生成), 2022. arXiv:2202.03286本文提出用语言模型自动生成测试用例对目标语言模型进行红队测试,在一个 280B 参数聊天机器人中发现数万条有害输出。
- Mazeika et al., “HarmBench: A Standardized Evaluation Framework for Automated Red Teaming and Robust Refusal,” 2024. arXiv:2402.04249HarmBench 是一个标准化基准,包含 510 个有害行为及评测流水线,对 33 个大语言模型上的 18 种自动化红队方法进行大规模比较,以支持攻防协同开发。
- Zou et al., “Improving Alignment and Robustness with Circuit Breakers” (表征级防御), 2024. arXiv:2406.04313电路断路器通过表示重路由将大语言模型内部表示从有害输出重定向,在不牺牲能力的前提下对未见攻击实现对抗鲁棒性,并可扩展至多模态模型与智能体。
评论
登录后评论