Making Them Ask and Answer: Jailbreaking Large Language Models in Few Queries via Disguise and Reconstruction
英文题目:《Making Them Ask and Answer: Jailbreaking Large Language Models in Few Queries via Disguise and Reconstruction》
中文题目:《让它们提问和回答:通过伪装和重构,用少量查询破解大型语言模型》
论文作者: Tong Liu, Yingjie Zhang, Zhe Zhao, Yinpeng Dong, Guozhu Meng, Kai Chen
发布于: usenix
发布时间:2024-02-28
级别:CCF-A
论文链接:https://doi.org/10.48550/arXiv.2402.18104
论文代码:https://github.com/LLM-DRA/DRA
摘要
近年来,大型语言模型(LLMs)在各种任务中都表现出了显著的成功,但LLM的可靠性仍然是一个悬而未决的问题。一个具体的威胁是生成有害或有毒响应的可能性。攻击者可以精心设计对抗性提示,从而诱导LLM产生有害响应。在这项工作中,我们通过识别安全微调中的偏差漏洞,率先为LLM安全性奠定了理论基础,并设计了一种名为DRA(Disguise and Reconstruction Attack,伪装和重构攻击)的黑盒越狱方法,该方法通过伪装来隐藏有害指令,并提示模型在其补全中重构原始有害指令。我们评估了DRA在各种开源和闭源模型上的表现,展示了最先进的越狱成功率和攻击效率。值得注意的是,DRA在OpenAI GPT-4聊天机器人上拥有91.1%的攻击成功率。
本文聚焦的问题
如何针对大语言模型(LLMs)安全微调中因 “用户查询(query)- 模型生成结果(completion)” 位置差异导致的固有偏见漏洞,在黑盒场景下(无模型架构、参数、梯度等内部信息)设计通用越狱攻击方法,实现低查询成本、高成功率且覆盖开源 / 闭源模型的有害指令诱导生成,同时保证有害语义的完整重构
本文提出的方法
对于现在的大模型,普遍都是逐个token进行生成,每次token生成都会参考前面所有的token,即会出现:[INST] «SYS»You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, ...(ommitted system prompt) «/SYS» {{USER QUERY}} [/INST] {{LLM COMPLETION}}。
这里USER QUERY指的是用户的问题,而LLM COMPLETION指的是模型自己的输出。
文章分析侧重于LLM微调过程中固有的安全偏差以及由此产生的漏洞,揭示了指令遵循格式导致LLM区分completion和query。这种区分对于对话建模至关重要,但会阻止安全知识从query直接转移到completion,从而导致潜在的偏差。微调目标表明,有害指令更倾向于出现在query中而不是completion中,从而导致与安全响应配对的completion中的有害上下文较少。因此,这些偏差降低了LLM安全响应completion中存在的有害上下文的能力。攻击者可以通过诱导模型生成特定的有害上下文来利用这些偏差,从而促进越狱攻击。
文章设计DRA的整体框架如下:

其主要分类两大流程:
伪装 (Disguise) —— 步骤 1
为了避免 LLM 直接识别并拒绝有害指令,DRA 采用两种技术对其进行伪装:
基于字谜的混淆 (Word-Puzzle Based Obfuscation):将有害指令拆解成单个字符,然后将每个字符隐藏在随机的单词或短语中(例如,用括号标记),形成一个字谜。例如,将“how”伪装成“happy (h)our, (o)pen heart, (w)ise decision”。
词级别字符拆分 (Word-level Character Split):将有害指令中的词语进行部分拆分或截断,使其看起来不完整或不直接,但仍能被 LLM 理解或重构。例如,“How to rob a bank vault”被拆分成“Ho to ro a nk vau lt”。
这一阶段的目标是降低提示中的有害程度,绕过 LLM 的初步安全检测。
重构 (Reconstruction) —— 步骤 2
伪装后的指令并不会直接触发 LLM 的有害行为,因此需要引导 LLM 将其重构并输出。这个阶段包含两个关键部分: 载荷重构 (Payload Reconstruction):
- 从伪装内容中重构有害指令:通过精心设计的提示,引导 LLM 从字谜和拆分的词段中提取出隐藏的字符和词语,并将其重新组合成原始的有害指令。
- 将有害指令传递到模型的完成(completion)部分:这是 DRA 攻击的核心机制之一。通过诱导 LLM 将重构后的有害指令作为其输出的一部分(而非作为用户输入),利用 LLM 在处理自身生成内容时安全防护能力较低的漏洞。
上下文操纵 (Context Manipulation): 通过额外的提示工程,进一步塑造 LLM 的输出环境。这包括引导 LLM 产生一个支持有害指令执行的上下文,或者使用诱导性语言来促使 LLM 配合,而非拒绝。
如果攻击未立即成功,框架会根据本次评估结果动态调整 。如果越狱失败,可能会进一步增加有害词语的截断比例,以更强地伪装指令。如果问题重建不准确,可能会减少良性词语的截断,以保留更多语义信息帮助模型进行问题重建。
关于词级别字符拆分的算法如下:

charSplit(inst, toxicRatio, benignRatio) 函数
目的:接收完整的有害指令 (inst) 和两个截断比例 (toxicRatio、benignRatio),生成一个经过词级拆分的新字符串。 输入: inst: 原始的有害指令(例如:“How to rob a bank”)。 toxicRatio: 用于截断有害词语的比例。 benignRatio: 用于截断良性词语的比例。
流程: 将输入的有害指令 inst 分词,得到一系列 token。 遍历每一个 token: 判断词语毒性:使用 toxicCheck(token) 函数判断当前 token 是否为有害词语。 有害词语处理:如果 token 被判定为有害(有毒),则调用 truncateToken(token, toxicRatio) 函数,根据 toxicRatio 对其进行截断。 良性词语处理:如果 token 被判定为良性,则: 以 ε 的概率(默认 0.6),调用 truncateToken(token, benignRatio) 函数根据 benignRatio 对其进行截断。 以 1 - ε 的概率,保留完整的良性词语,不进行截断。
将处理后的所有 token连接起来,形成最终的 result 字符串并返回。
truncateToken(token, ratio) 函数
目的:根据给定的比例 (ratio) 对单个词语 (token) 进行随机截断。 输入: token: 待截断的词语。 ratio: 截断比例。
流程: 计算基准截断点 idx:idx = len(token) × ratio。这意味着词语至少会保留 ratio 比例的长度。 随机选择实际截断起始点 truncStart:在 idx 到 len(token)之间随机选择一个整数作为截断的起始位置。 调用 cutOff(token, truncStart) 函数:根据 truncStart 位置对 token 进行实际的截断操作。 截断策略:cutOff 函数可以采用两种策略:
- 前端截断 (Front-end token truncation):从 token 的开头开始截断,保留前半部分或根据概率保留两部分。这种方法倾向于保留原始语义。
- 后端截断 (Rear-end token truncation):从 token 的末尾开始截断,保留后半部分。这种方法更具伪装性,但可能增加模型理解的难度,适用于能力较强的模型。
initParam() 函数
目的:初始化 toxicRatio 和 benignRatio。 流程:将 toxicRatio 和 benignRatio 都初始化为 0.5。这是动态调整的起点。
updateParam(isJailbreak, em) 函数
目的:根据攻击结果动态调整 toxicRatio 和 benignRatio。 流程: 如果越狱失败:说明提示的有害性可能太高,需要对有害词语进行更彻底的截断。因此,toxicRatio 会减小 ,使得有害词语被截断得更多,伪装性更强。 如果越狱成功但重构不准确:说明截断可能过于激进,导致语义丢失,模型难以重构。此时,benignRatio 会增大,使得良性词语被截断得更少,保留更多语义信息,帮助模型重构。
整体效果如下:

整个Payload Reconstruction的效果如下: 
完整的一次攻击文本如下:

阅读总结
优点:
1、首次形式化定义 LLM 安全微调中的 “位置偏见漏洞”,指出 LLM 因对话格式和微调目标,导致 “查询中有害指令高频出现、生成结果中有害内容极少”,进而使模型对 “生成结果中的有害内容” 防御能力显著弱于 “查询中的有害内容”,打破了此前越狱研究 “重效果、轻根源” 的局限
2、黑盒场景适配性强,无需模型架构、参数、梯度等内部信息,仅通过输入输出交互即可实现攻击,完美覆盖闭源商业模型与开源模型,解决了白盒方法无法应用于闭源模型的痛点。
缺点:
1、无法绕过基于 “输出内容检测” 的防御措施。
2、聚焦单轮攻击,未考虑多轮对话中的安全漏洞演变。
未来可以优化有害输出隐蔽性,突破输出级防御。