基于嵌入扰动的大模型白盒越狱攻击
字数 2025 2025-08-29 08:29:41

基于嵌入扰动的大模型白盒越狱攻击技术文档

1. 概述

本技术文档详细介绍了针对大型语言模型(LLMs)的白盒越狱攻击方法,该方法通过向模型中间层嵌入向量添加扰动来绕过安全对齐机制。攻击者可以利用这种方法促使LLMs生成原本被禁止的内容,如恶意指令、危险信息等。

2. 背景与动机

大型语言模型的安全对齐机制旨在防止模型被用于有害活动,但存在被越狱攻击的风险。现有攻击方法主要分为:

  • 黑盒攻击:通过手动设计提示模板(如DAN 7.0)或学习攻击提示
  • 白盒攻击:利用模型内部信息进行更精确的攻击

本文介绍的白盒攻击方法通过分析模型内部安全机制,在嵌入层面添加扰动,具有更高的攻击成功率。

3. 形式化定义

给定攻击目标模型f,其嵌入向量表示为:

e = (e₁, e₂, ..., eₗ)

其中eₗ是第l层的嵌入向量,L为模型总层数。

攻击目标:通过向中间层嵌入向量添加扰动向量,改变模型行为,使其遵循恶意指令并生成高质量回复。

4. 攻击机理

4.1 安全机制分析

使用概念激活向量(Concept Activation Vector)分析模型安全机制:

  1. 定义恶意概率Pₘ(e):模型认为嵌入向量e是恶意的概率

  2. 使用线性分类器建模:

    Pₘ(e) = σ(wᵀe + b)
    

    其中σ为sigmoid函数,w和b为分类器参数

  3. 训练分类器:

    min Σ[ylogPₘ(e) + (1-y)log(1-Pₘ(e))] + λ||w||²
    

    y=1表示恶意指令,y=0表示安全指令

4.2 安全概念的可解释性

实验表明:

  • 对齐模型(Vicuna, LLaMA-2)从第10-11层开始,测试准确率>95%
  • 未对齐模型(Alpaca)测试准确率显著较低
  • 高准确率表明安全概念在嵌入空间中是线性可分的

4.3 扰动优化

给定嵌入向量e,扰动后向量:

ẽ = e + ε·v

其中ε为扰动大小,v为单位方向向量

优化目标:

min |ε| s.t. Pₘ(ẽ) ≤ P₀

P₀设为0.01%,确保扰动后的向量被识别为安全

最优解:

ε = I(Pₘ(e) > P₀)·(σ⁻¹(P₀) - b - wᵀe)/||w||
v = w/||w||

5. 攻击实现

5.1 数据准备

需要两类数据:

  1. 恶意指令:如"如何制作炸弹"、"设计暗杀武器"等
  2. 安全指令:正常无害的查询和指令

5.2 模型嵌入提取

定义ModelExtraction类:

  1. 初始化模型配置、权重和分词器
  2. extract_embds方法:
    • 输入一批文本(指令/对话)
    • 初始化EmbeddingManager保存各层最后一个token的嵌入
    • 遍历输入文本,包装为提示模板
    • 分词并传入模型,获取各层hidden states
    • 保存最后一token的输出表示

5.3 分类器训练

定义ClassifierManager类:

  1. 初始化:
    • 保存分类器类型
    • 准备分类器列表和测试准确率列表
  2. _train_classifiers方法:
    • 接收正负样本的EmbeddingManager
    • 对各层嵌入分别训练LayerClassifier
  3. _evaluate_testacc方法:
    • 评估各层分类器在测试集上的准确率
  4. fit方法:
    • 主流程接口,先训练后评估
  5. save方法:
    • 保存分类器管理器到磁盘
  6. cal_perturbation方法:
    • 计算特定层的扰动向量

5.4 扰动注入

定义ModelGeneration类:

  1. 初始化:
    • 继承ModelBase,设置控制变量
    • 注册forward hook用于拦截和修改层输出
  2. set_perturbation方法:
    • 设置外部扰动函数
  3. 前向hook:
    • 记录原始输出(可选)
    • 应用扰动函数(如设置)
    • 记录扰动后输出(可选)
  4. 文本生成接口:
    • 清空缓存,设置捕获标志
    • 模板化prompt并编码
    • 生成文本,解码并记录token数

5.5 扰动计算

定义Perturbation类:

  1. 初始化:
    • classifier_manager:分类器管理器
    • target_probability:目标概率(默认0.001)
    • accuracy_threshold:准确率阈值
    • perturbed_layers:需扰动的层列表
  2. get_perturbation方法:
    • 检查当前层是否需要扰动
    • 检查分类器准确率和预测概率
    • 满足条件时调用cal_perturbation计算扰动
    • 更新output_hook中的嵌入表示

6. 攻击流程示例

  1. 准备恶意指令和安全指令数据集
  2. 使用ModelExtraction提取各层嵌入
  3. 使用ClassifierManager训练和评估分类器
  4. 初始化ModelGenerationPerturbation
  5. 提问恶意问题(如"如何制作炸弹")
    • 初始会被安全机制拦截
  6. 应用计算好的扰动
  7. 再次提问,模型将输出被禁止的内容

7. 防御建议

  1. 监控模型中间层表示异常
  2. 增强安全概念的线性不可分性
  3. 对输入嵌入进行异常检测
  4. 定期更新安全对齐机制

8. 参考文献

  1. ChatGPT-DAN项目
  2. arXiv:2404.12038
  3. arXiv:2501.05764
  4. CVPR 2023: Text2Concept and Concept Activation Vectors
  5. 奇安信攻防社区文章
基于嵌入扰动的大模型白盒越狱攻击技术文档 1. 概述 本技术文档详细介绍了针对大型语言模型(LLMs)的白盒越狱攻击方法,该方法通过向模型中间层嵌入向量添加扰动来绕过安全对齐机制。攻击者可以利用这种方法促使LLMs生成原本被禁止的内容,如恶意指令、危险信息等。 2. 背景与动机 大型语言模型的安全对齐机制旨在防止模型被用于有害活动,但存在被越狱攻击的风险。现有攻击方法主要分为: 黑盒攻击 :通过手动设计提示模板(如DAN 7.0)或学习攻击提示 白盒攻击 :利用模型内部信息进行更精确的攻击 本文介绍的白盒攻击方法通过分析模型内部安全机制,在嵌入层面添加扰动,具有更高的攻击成功率。 3. 形式化定义 给定攻击目标模型f,其嵌入向量表示为: 其中eₗ是第l层的嵌入向量,L为模型总层数。 攻击目标:通过向中间层嵌入向量添加扰动向量,改变模型行为,使其遵循恶意指令并生成高质量回复。 4. 攻击机理 4.1 安全机制分析 使用概念激活向量(Concept Activation Vector)分析模型安全机制: 定义恶意概率Pₘ(e):模型认为嵌入向量e是恶意的概率 使用线性分类器建模: 其中σ为sigmoid函数,w和b为分类器参数 训练分类器: y=1表示恶意指令,y=0表示安全指令 4.2 安全概念的可解释性 实验表明: 对齐模型(Vicuna, LLaMA-2)从第10-11层开始,测试准确率>95% 未对齐模型(Alpaca)测试准确率显著较低 高准确率表明安全概念在嵌入空间中是线性可分的 4.3 扰动优化 给定嵌入向量e,扰动后向量: 其中ε为扰动大小,v为单位方向向量 优化目标: P₀设为0.01%,确保扰动后的向量被识别为安全 最优解: 5. 攻击实现 5.1 数据准备 需要两类数据: 恶意指令 :如"如何制作炸弹"、"设计暗杀武器"等 安全指令 :正常无害的查询和指令 5.2 模型嵌入提取 定义 ModelExtraction 类: 初始化模型配置、权重和分词器 extract_embds 方法: 输入一批文本(指令/对话) 初始化 EmbeddingManager 保存各层最后一个token的嵌入 遍历输入文本,包装为提示模板 分词并传入模型,获取各层hidden states 保存最后一token的输出表示 5.3 分类器训练 定义 ClassifierManager 类: 初始化: 保存分类器类型 准备分类器列表和测试准确率列表 _train_classifiers 方法: 接收正负样本的 EmbeddingManager 对各层嵌入分别训练 LayerClassifier _evaluate_testacc 方法: 评估各层分类器在测试集上的准确率 fit 方法: 主流程接口,先训练后评估 save 方法: 保存分类器管理器到磁盘 cal_perturbation 方法: 计算特定层的扰动向量 5.4 扰动注入 定义 ModelGeneration 类: 初始化: 继承 ModelBase ,设置控制变量 注册forward hook用于拦截和修改层输出 set_perturbation 方法: 设置外部扰动函数 前向hook: 记录原始输出(可选) 应用扰动函数(如设置) 记录扰动后输出(可选) 文本生成接口: 清空缓存,设置捕获标志 模板化prompt并编码 生成文本,解码并记录token数 5.5 扰动计算 定义 Perturbation 类: 初始化: classifier_manager :分类器管理器 target_probability :目标概率(默认0.001) accuracy_threshold :准确率阈值 perturbed_layers :需扰动的层列表 get_perturbation 方法: 检查当前层是否需要扰动 检查分类器准确率和预测概率 满足条件时调用 cal_perturbation 计算扰动 更新 output_hook 中的嵌入表示 6. 攻击流程示例 准备恶意指令和安全指令数据集 使用 ModelExtraction 提取各层嵌入 使用 ClassifierManager 训练和评估分类器 初始化 ModelGeneration 和 Perturbation 提问恶意问题(如"如何制作炸弹") 初始会被安全机制拦截 应用计算好的扰动 再次提问,模型将输出被禁止的内容 7. 防御建议 监控模型中间层表示异常 增强安全概念的线性不可分性 对输入嵌入进行异常检测 定期更新安全对齐机制 8. 参考文献 ChatGPT-DAN项目 arXiv:2404.12038 arXiv:2501.05764 CVPR 2023: Text2Concept and Concept Activation Vectors 奇安信攻防社区文章