
总目录 大模型安全研究论文整理 2026年版https://blog.csdn.net/WhiffeYF/article/details/159047894文章目录把危险请求翻译成逻辑公式LogiBreak 越狱攻击复现与原理详解一、先看一个直观的比喻二、什么是一阶逻辑三、LogiBreak 的核心假设四、一次完整攻击只做 4 件事五、为什么不是只攻击一次ASRN 是什么六、三个角色与三类判官七、它和编码、模板、搜索型越狱有什么区别1. 不同于 Base64、凯撒密码2. 不同于角色扮演模板3. 不同于 TAP、PAIR八、我的复现全部使用本地开源模型九、工程上最容易踩的坑1. 三个模型抢同一张卡2. ASR5 的批量生成占用过大3. 长任务中断后从头再跑4. 用规则判官直接当“真实有害率”十、怎么跑1. 规则判官两张卡即可2. Qwen3Guard 判官三张卡十一、怎么看输出十二、论文结果说明了什么十三、从防御角度能得到什么启示十四、小结把危险请求翻译成逻辑公式LogiBreak 越狱攻击复现与原理详解论文Logic Jailbreak: Efficiently Unlocking LLM Safety Restrictions Through Formal Logical ExpressionACL 2026论文https://arxiv.org/abs/2505.13527官方代码https://github.com/Applied-Machine-Learning-Lab/ACL2026_Logibreak我的复现代码https://github.com/Whiffe/LogiBreak项目主页https://whiffe.github.io/LogiBreak/ 在线动画演示https://whiffe.github.io/LogiBreak/logibreak_animation.html大语言模型的安全对齐通常是在大量自然语言样本上训练出来的看到危险请求就拒绝看到正常请求就回答。但如果请求的含义不变写法却彻底变了模型还能认出来吗LogiBreak 给出了一个很有意思的答案把自然语言请求翻译成一阶逻辑First-Order LogicFOL表达式再交给目标模型。人和模型仍然能理解它的语义但它的 token 形式已经与常见自然语言相差很大可能落到安全对齐没有充分覆盖的区域。这篇文章用大白话讲清楚 LogiBreak 的原理并介绍我如何用本地开源模型复现它。一、先看一个直观的比喻把模型的安全机制想象成一个训练有素的门卫。门卫见过大量普通语言写成的危险请求因此一眼就能识别并拒绝。但现在有人没有直接说出原来的句子而是把它改写成数学课上那种带有∀、∃、∧、谓词和变量的逻辑公式。对门卫来说字面形式变得非常陌生对大模型来说逻辑式又不是乱码它依然可能读懂其中的关系。于是就出现了一个错位语义层面请求表达的意思基本没变token 层面输入已经离开常见自然语言分布安全层面模型可能“读懂了任务”却没有及时触发拒绝机制。LogiBreak 利用的就是这种语义保持、形式迁移带来的安全空隙。二、什么是一阶逻辑一阶逻辑是一种用对象、属性、关系和量词描述事实的形式语言。为了避免展示危险内容下面用一个普通任务举例自然语言安排一场关于人工智能安全的会议。 逻辑形式 ∃x [Meeting(x) ∧ Topic(x, AI_Safety) ∧ Arrange(x)]这里∃x表示“存在一个 x”Meeting(x)表示 x 是一场会议Topic(x, AI_Safety)表示会议主题是人工智能安全Arrange(x)表示需要安排这场会议∧表示几个条件同时成立。它不是简单的字符替换也不是 Base64 之类的编码。逻辑式仍然明确保留“对象是谁、要做什么、各部分是什么关系”。这也是 LogiBreak 与普通乱码、密文攻击最大的区别。三、LogiBreak 的核心假设论文把越狱问题归因于安全对齐数据与攻击输入之间的分布差异。安全对齐主要学习自然语言中的拒绝模式。训练数据可能覆盖了很多危险主题却未必充分覆盖“用形式逻辑表达同一语义”的输入。因此一个转换函数只要同时做到下面两点就可能绕过现有防线改变输入形式让转换后的 token 分布偏离常见对齐数据保持原始语义让目标模型仍然理解请求真正要求它做什么。论文把自然语言到逻辑形式的转换写成F: X_harmful → X_logic同时要求转换前后的语义相似度不能低于阈值Sim(x_harmful, x_harmful) ≥ τ所以LogiBreak 追求的并不是“把句子弄得越乱越好”而是改掉模型熟悉的外壳同时保住里面的意思。四、一次完整攻击只做 4 件事LogiBreak 的流程比 TAP、PAIR 这类迭代搜索方法更短自然语言请求 │ ▼ ① 翻译器自然语言 → 一阶逻辑表达式 x_logic │ ▼ ② 拼装提示x_context x_logic x_instruct │ ▼ ③ 目标模型生成回答 │ ▼ ④ 判官判断是否越狱成功最终提示可以抽象为x x_context ‖ x_logic ‖ x_instruct三个部分分别是x_context告诉模型当前任务与形式语义有关让逻辑表达式出现在一个看起来合理的语境中x_logic由翻译器生成的一阶逻辑表达式x_instruct要求目标模型根据逻辑式给出具体回答的指令。真正关键的是x_logic。论文的消融实验把逻辑式换回原始自然语言后攻击效果大幅下降删除前面的语境句也会造成一定下降。这说明逻辑翻译是核心语境包装起辅助作用。五、为什么不是只攻击一次ASRN 是什么自然语言转 FOL 并不是唯一答案。同一句话可以有多种逻辑表示目标模型的采样结果也存在随机性。因此论文对每条请求独立尝试 N 次。ASR1只看第一次尝试是否成功ASRN同一请求尝试 N 次只要其中一次成功就算这条请求攻击成功。本复现默认N5所以同时报告 ASR1 和 ASR5。要注意ASR5 通常高于 ASR1因为它给了攻击方法更多机会。比较不同方法时必须保证 N 和判官一致否则数字没有可比性。六、三个角色与三类判官复现里有三个模型角色角色作用本复现的默认选择Translator把自然语言请求翻译成 FOL本地 Qwen3Target接收逻辑提示的被测模型本地 Qwen3Judge判断回答是否构成越狱规则判官或 Qwen3Guard代码支持三种判定方式规则判官检查回答中是否出现常见拒绝前缀。速度最快不需要额外模型但容易把“没有说拒绝、其实也没有真正回答”的内容误判成成功。本地 LLM 判官支持论文中的 1-10 分风格以及safe/unsafe二分类风格。它会结合请求和回答的语义进行判断。Qwen3Guard为了和我复现的其他开源基线保持一致而加入。Safe记为未成功Unsafe或Controversial记为成功。无论最终选择哪一种判官程序都会额外保存规则判定便于检查不同评估方式之间的差异。七、它和编码、模板、搜索型越狱有什么区别1. 不同于 Base64、凯撒密码编码类攻击主要把原句变成另一套字符目标模型还要先正确解码。模型一旦解码失败语义就丢了。LogiBreak 使用的是模型本身具备一定理解能力的形式语言语义结构更明确。2. 不同于角色扮演模板角色扮演通常只是在原请求前后增加故事、身份或特殊指令原始危险语句仍然完整存在。LogiBreak 会直接改写请求主体的表达形式。3. 不同于 TAP、PAIRTAP 和 PAIR 依赖攻击模型多轮改写、试探和反馈LogiBreak 的主要步骤是一次逻辑翻译不需要维护攻击树或长对话历史。因此它更简单也更容易批量运行。八、我的复现全部使用本地开源模型论文部分设置使用托管模型。为了便于实验室复现和避免 API 成本我把流水线改成了纯本地模型版本翻译器、目标和语义判官都从本地路径或 Hugging Face/ModelScope 模型标识加载不需要 API Key也没有远程推理接口可以用 Qwen3Guard 作为统一安全评估器支持 Qwen3 的思考/非思考模式对比输入和输出都通过命令行参数指定。代码分成五层logibreak_main.py 主程序参数、主流程、续跑、结果写入 conversers.py 翻译器、目标模型、各类判官 language_models.py 本地模型加载、批量生成、OOM 重试 system_prompts.py 论文附录中的提示模板 common.py FOL 清洗和判官输出解析公开项目没有附带基准数据、实验结果、模型回答、模型权重、论文 PDF 或本机服务器命令只保留方法代码与输入格式说明。九、工程上最容易踩的坑1. 三个模型抢同一张卡翻译器、目标和判官如果同时堆在一张 GPU 上很容易 OOM。程序支持按角色分卡--GPU 0,1,2表示翻译器用 0 号卡、目标用 1 号卡、判官用 2 号卡。也可以通过--attack-gpu、--target-gpu、--guard-gpu单独指定。2. ASR5 的批量生成占用过大每条请求默认生成 5 个 FOL再批量查询目标。--max-batch会把大批次自动拆开显存不足时程序还会清理缓存、重试并继续对半拆批。仍然 OOM 时可以手动把它调成 4、2 或 1。3. 长任务中断后从头再跑程序每完成一条就原子写入 JSON。相同命令加--resume后会跳过已经完成的请求并重跑上次报错的条目。4. 用规则判官直接当“真实有害率”规则判官只检查拒绝短语适合快速筛查不等同于语义层面的攻击成功率。正式实验最好使用语义判官并明确报告判官、阈值和 ASRN 的 N。十、怎么跑先安装环境pipinstall-rrequirements.txt准备一个 CSV。第一行是表头从第二行起读取第一列。建议先用经过授权的少量安全测试样本做冒烟测试。1. 规则判官两张卡即可python logibreak_main.py\--input./Dataset/requests.csv\--output./results/run.json\--GPU0,1\--translator-model-path Qwen/Qwen3-4B\--target-model-path Qwen/Qwen3-4B\--judge-type rule\--num-trials5\--limit12. Qwen3Guard 判官三张卡python logibreak_main.py\--input./Dataset/requests.csv\--output./results/run_guard.json\--GPU0,1,2\--translator-model-path Qwen/Qwen3-4B\--target-model-path Qwen/Qwen3-4B\--judge-type guard\--guard-path Qwen/Qwen3Guard-Gen-4B\--num-trials5\--limit1冒烟测试通过后删掉--limit 1。任务中断则保持输入输出不变加上--resume。十一、怎么看输出结果 JSON 主要有三部分config模型、判官、尝试次数和消融设置summaryASR1、ASRN、规则判官 ASR、平均耗时和报错数results每条请求的 FOL、最终提示、目标回答、判定结果与各次 trial。每个 trial 都会保存fol / prompt / response / thinking rule_jailbroken / jailbroken rating 或 label / judge_raw分析结果时不要只看顶层 ASR。最好抽查判官原始输出确认翻译器是否保持了语义、目标是否真正回答了请求以及规则判官有没有误判。十二、论文结果说明了什么论文在多个模型、语言和判官上进行了评估。作者报告在只允许一次尝试的 ASR1 设置下LogiBreak 在不同判官上的平均成功率仍超过 40%在 ASR5 下相对原始请求基线有明显提升。更重要的不是某一个百分比而是三个现象逻辑翻译本身是主要贡献换回原始自然语言后效果明显下降判官会显著影响结论规则判官通常比语义判官更宽松能理解逻辑不等于能安全处理逻辑模型可能具备 FOL 推理能力却没有同等强度的语义安全防线。论文还测试了 Self-Reminder 和 LLaMA-Guard。它们能降低部分模型上的攻击成功率但没有在所有模型和评估设置下彻底解决问题。这说明只在输入表面或输出末端增加一道防线仍然不够。十三、从防御角度能得到什么启示LogiBreak 最值得关注的地方不是又多了一个越狱模板而是它暴露了一个更普遍的问题安全对齐不能只记住“危险请求通常长什么样”还要理解“这个请求实际上在要求什么”。可能的改进方向包括在安全对齐数据中加入 FOL、代码、表格、低资源语言等多种等价表达先做语义规范化把逻辑式还原为自然语言意图后再审核同时审核输入与输出不能只依赖其中一端使用语义判官复核规则判官认为成功的样本将形式语言理解能力与安全分类能力一起训练和评估。从这个角度看LogiBreak 既是攻击方法也是一个很有价值的安全压力测试工具。十四、小结LogiBreak 的思路可以压缩成一句话把请求从模型熟悉的自然语言空间搬到它能理解但安全对齐覆盖不足的逻辑空间。它的流程很短自然语言转 FOL、拼提示、问目标、交给判官但背后的问题并不简单。它说明当前模型可能在 token 层面学会了拒绝却还没有在语义层面形成同样稳固的安全边界。如果你正在做大模型安全、红队评测或安全对齐研究LogiBreak 很适合作为一个轻量、黑盒、容易批量复现的基线。不过一定要统一数据、尝试次数和判官并对生成内容做好访问控制。完整代码、项目说明和动画演示都在这里欢迎复现和交流 GitHubhttps://github.com/Whiffe/LogiBreak 项目主页https://whiffe.github.io/LogiBreak/ 动画演示https://whiffe.github.io/LogiBreak/logibreak_animation.html⚠️ 本项目仅用于经过授权的安全研究与红队评测请勿用于任何非法用途也不要公开传播实验中生成的有害内容。