大型语言模型(LLM)和多模态大型语言模型(MLLM)的越狱攻击

server/2024/11/24 21:34:04/

       随着大型语言模型(LLMs)的快速发展,它们在各种任务上表现出了卓越的性能,有效地遵循指令以满足多样化的用户需求。然而,随着这些模型遵循指令的能力不断提升,它们也越来越成为对抗性攻击的目标,这显著挑战了它们的完整性和可靠性。这种新兴的脆弱性激发了对攻击策略和强大防御的广泛研究,以更好地保护道德限制并改进LLMs。在这些漏洞中,越狱攻击尤为普遍,恶意指令或训练和解码干预可以绕过LLMs内置的安全措施,导致它们表现出不良行为。

1 越狱攻击和防御概述

1.1 定义

  • 越狱攻击:指的是利用对抗性提示或训练和解码策略绕过模型的安全措施,导致其产生不希望的行为,例如生成有害内容。
  • 越狱防御: 指的是部署鲁棒的策略来检测和对抗越狱攻击,确保模型遵循安全协议和道德规范,同时不影响输出质量和准确性。

1.2 必要性

  • 大型语言模型(LLMs)和多模态大型语言模型(MLLMs)在各个领域(例如医疗保健、金融和法律系统)中发挥着重要作用,其准确性和道德完整性至关重要。
  • 越狱攻击能够绕过模型的安全措施,生成有害或偏见的内容,这会严重损害模型的完整性和可靠性,并对用户造成潜在风险。

     因此,研究越狱攻击和防御对于提高模型的鲁棒性和安全性至关重要,以更好地保护伦理限制并改善 LLMs。

1.3 越狱攻击为何会成功

     越狱攻击成功的机制源于在LMs的安全训练期间识别出的两种失败模式:竞争目标和不匹配的泛化。

  • 竞争目标: 模型的预训练和指令遵循目标与其安全目标之间存在冲突。例如,提高指令遵循能力可能会增加模型的双用风险,使其更容易被滥用。
  • 错配泛化: 安全训练无法泛化到预训练语料库中的分布外输入。例如,编码指令为 Base64 可以使模型偏离安全指南,生成不希望的内容。

2 越狱评估数据集

为了评估越狱攻击策略和模型对攻击的鲁棒性,引入了多种数据集。它们涵盖了包括单轮和多轮对话设置在内的多种情境,涵盖了单模态和多模态场景。越狱数据集通常输入有害查询以测试LLM的安全性,而MLLM则输入图像和查询的组合。

2.1 单模态越狱数据集

2.1.1 单轮查询响应

  • PromptBench: 包含手动制作的对抗性提示,用于特定任务,例如情感分析或自然语言推理。
  • Advbench: 利用 LLMs 生成多个领域的通用有害字符串和行为,包括亵渎、图形描述、威胁行为、错误信息和歧视。
  • AttaQ: 评估犯罪主题上的越狱攻击。
  • Do-Not-Answer: 评估五个风险领域和十二种危害类型的防护措施。
  • LifeTox: 识别寻求建议场景中的隐含毒性。
  • StrongREJECT: 包含手动收集和严格检查的有害且可回答的查询。
  • FFT: 包括 2,116 个精心设计的实例,用于评估 LLMs 在事实性、公平性和毒性方面的表现。
  • Latent jailbreak: 评估 LLMs 的安全和指令遵循鲁棒性。
  • SafetyBench: 包含 11,435 个多选题,涵盖七个安全关注类别,提供中英文版本。

2.1.2 多轮对话

  • Red-Eval: 评估模型对基于话语链的越狱提示的安全性。
  • AdvBench 扩展: 将原始查询分解为多个子查询,以增强对话环境中模型越狱的研究。

2.2 多模态越狱数据集

  • MM-SafetyBench: 包含 13 个场景和 5,040 个文本-图像对,用于评估 MLLMs 的安全性。
  • ToViLaG: 包含 32K 个有毒文本-图像对和 1K 个无邪但可能刺激毒性的文本,用于基准测试不同 MLLMs 的毒性水平。
  • SafeBench: 使用 GPT-4 创建的基准测试,涵盖 OpenAI 和 Meta 使用政策禁止的 500 个有害问题。
  • RTVLM: 使用现有数据集或通过扩散生成的图像,检查忠诚度、隐私、安全和公平性四个方面。
  • AdvBench-M: 从 Google 检索相关图像,以表示 AdvBench 中的有害行为。

2.2.1 多模态越狱数据集的局限性

  • 有限的图像来源: 图像通常由扩散过程生成或来自现有数据集,缺乏多样性。
  • 狭窄的任务范围: 主要关注基于图像的单轮问答任务,缺乏多轮对话或具身交互等更现实场景的基准测试。
  • 显式毒性: 大多数数据集都包含显式有毒图像,这使攻击更容易被检测,并降低了模型防御的难度。
  • 毒性的静态性质: 目前的越狱尝试针对的是时间和空间上静态的毒内容,而文化变迁或新兴的社会规范可以动态地改变不同地区和不同时间被视为有害的内容。

2.2.2 多模态越狱数据集的未来方向

  • 增加图像多样性: 从各种来源和类别中获取图像,包括不同的文化、语言和视觉风格。
  • 基准测试多轮对话: 评估多轮对话或动态具身交互中的多模态越狱,以评估模型在持续交互中的有效性。
  • 构建包含隐含毒性的数据集: 将微妙的危害线索或描绘可能被解释为暴力或争议场景的图像纳入数据集。
  • 开发特定数据集: 为各种人口统计或文化量身定制数据集,例如特定宗教,并编制数据集以捕捉不断变化的文化变迁或新兴的社会规范,以支持动态越狱评估。

3 越狱攻击方法

越狱攻击方法分为两个主要类别:非参数攻击和参数攻击,针对LLMs和MLLMs。非参数攻击将目标模型视为黑盒,通过操作输入提示(和/或输入图像)进行语义攻击。相反,参数攻击访问模型权重或对训练或推理过程进行非语义攻击。

3.1 非参数攻击

非参数攻击将目标模型视为黑盒,通过操纵输入提示(和/或输入图像)进行语义攻击。它主要利用了两个失败模式:构建竞争目标(constructing competing objectives)和诱导不匹配泛化(inducing mismatched generalization)。

3.1.1 非参数单模态攻击

3.1.1.1 构建竞争目标

构建竞争目标对抗安全目标的三种主要策略是:行为限制、上下文虚拟化和注意力分散。

  • 行为限制: 建立一组通用的行为约束指令,与特定查询一起作为越狱提示。这些约束指令指示模型在响应之前遵循预定义的规则,导致它们生成无害的前缀或避免拒绝。
  • 上下文虚拟化: 创建虚拟场景,模型在其中认为自己超越了安全边界或在独特的环境中,有害内容是可以接受的。
  • 注意力分散: 通过首先完成一个复杂但无害的任务来分散模型的注意力,然后才响应有害的查询。

3.1.2 诱导不匹配泛化

诱导不匹配的泛化:将输入转换为缺乏足够安全训练的长尾分布,以绕过安全防护的两种主要方法是领域转移和混淆。

  • 领域转移: 将原始指令重新定向到 LLMs 表现出强大的指令遵循能力但缺乏足够安全防护的领域。
  • 混淆: 将噪声或程序元素注入原始输入中的敏感单词,保留语义意义,同时使直接解释复杂化。

3.1.2 非参数多模态攻击

针对MLLMs的多模态越狱攻击主要关注定制输入提示以限制行为,而在上下文虚拟化和注意力分散方面则留有空白。例如,提示模型详细说明图像中显示的产品的制作步骤。

3.2 参数攻击

参数攻击将目标模型视为白盒,访问模型权重或对训练或推理过程进行非语义攻击。

3.2.1 参数单模态攻击

  • 训练干扰: 通常将有害示例(即使是最小的一组)纳入微调数据集中,以破坏安全对齐。
  • 解码干预: 修改解码过程中的输出分布,以促进越狱攻击。

3.2.2 参数多模态攻击

与单模态对应物相比,针对MLLMs的参数多模态攻击尝试相对较少。一些研究表明,在看似无害的数据集上定制微调MLLMs将破坏它们的安全对齐。此外,多模态越狱可能利用图像中的视觉触发器,例如通过后门中毒注入的水印,这可以与LLMs中使用的类似解码干预策略相结合,以提高多模态越狱的有效性。

3.3 多模态攻击的局限性

  • 未探索复杂的多模态任务: 多模态输入本质上是多样化和复杂的,可以更好地分散模型的注意力并构建安全标准更宽松的场景。
  • 忽视图像领域转移: 多模态攻击主要引入各种类型的图像噪声,但这些策略往往忽视了图像领域转移的潜力。
  • 缺乏多模态训练干扰: 缺乏基于多模态输入的有害训练实例,例如使用后门中毒的图像。
  • 过于简单的攻击生成: 多模态攻击通常通过扩散模型、图像生成工具或从外部来源检索在一步骤中生成恶意图像。

3 越狱防御方法

越狱防御方法保护模型免于生成有害内容,主要分为两类:外在防御和内在防御。外在防御在模型外部实施保护措施,不改变其固有结构或参数。内在防御增强模型的安全对齐训练或调整生成解码过程,以提高对有害内容的抵抗力。

3.1 单模态外在防御

3.1.1 预处理(Pre-Safeguard)

  • 有害性检测(Harmfulness Detection): 开发专门的检测器识别攻击特征,例如通过识别高困惑度或特定关键词来识别恶意提示。
  • 有害性暴露(Harmfulness Exposure): 通过添加或删除特殊后缀等方式,揭露隐藏在恶意提示中的有害性,使其暴露在安全训练的保护范围内。

3.1.2 后处理(Post-Remediation)

  • 模型自我防御(LLM Self Defense): 模型自身检测并过滤掉可能有害的内容。
  • 集成策略(Ensemble Strategy): 聚合多个平滑副本的预测结果,以实现无害输出。
  • 自我完善机制(Self-refinement Mechanism): 模型根据自身反馈迭代地完善其回复,以最小化有害性。

3.2 单模态内在防御

3.2.1 安全对齐(Safety Alignment)

  • 监督指令微调(Supervised Instruction Tuning): 在微调数据集中加入安全示例,以提高模型对有害内容的识别能力。
  • 人类反馈强化学习(RLHF): 通过人类反馈将模型行为与人类偏好对齐,从而提高其在各种任务上的性能和安全水平。

3.2.2 解码指导(Decoding Guidance)

  • 蒙特卡洛树搜索(MCTS)算法: 集成LLM的自我评估功能,进行前瞻性启发式搜索,并使用回放机制调整预测概率。
  • 安全专家模型: 训练一个安全专家模型,并聚合其与目标模型的解码概率,从而提高解码过程的安全性。

3.3 多模态越狱防御

目前多模态模型的越狱防御研究较少,一些尝试包括:

  • 将输入图像转换为文本,并利用单模态预处理策略进行防御。
  • 将输入变异为多个查询,并检查响应是否出现偏差,以检测越狱攻击。
  • 构建多模态指令遵循数据集,用于对MLLM进行安全微调。

3.4 多模态越狱防御的局限性

  • 泛化性差: 大多数防御策略都是针对特定攻击类型设计的,难以适应各种不断发展的攻击方法。
  • 鲁棒性差: 现有的防御策略难以抵御扰动攻击,即对输入进行微小且难以察觉的更改,就可能导致无法检测到越狱内容。
  • 误报率高: 合法回复可能被过度防御,并被错误地标记为越狱攻击。
  • 安全对齐成本高: 安全微调需要大量的标注,导致成本高昂。
  • 缺乏基于图像的检测方法: 目前的方法主要基于文本描述检测图像中的有害内容,直接对图像进行分类和缓解有害内容的检测和平滑技术仍需进一步研究。


http://www.ppmy.cn/server/51578.html

相关文章

STM32G070休眠例程-STOP模式

一、简介 主控是STM32G070,在低功耗休眠模式时采用Stop0模式,通过外部中断唤醒,唤醒之后,即可开启对应的功能输出,另外程序中设计有看门狗8S溢出,这个采用RTC定时6S周期唤醒去喂狗,RTC唤醒喂狗的…

redis面试总结

redis的数据类型&#xff1f; string字符串&#xff1a;类似于java中Map<String,String>。存储字符串、JSON数据、验证码等。 Hash字典&#xff1a;类似java中Map<String, Map<Spring,String>>。比较适合存储对象数据。 List列表&#xff1a;类似java中Ma…

Java Matcher类方法深度剖析:查找和匹配、索引方法

1. 引言 在Java中,正则表达式是处理字符串的强大工具,而java.util.regex包中的Matcher类则是实现这一功能的核心。对于Java工程师而言,熟练掌握Matcher类的使用方法,无疑能够极大地提升字符串处理的效率和准确性。本文将对Matcher类的方法进行深度讲解,并按照查找和匹配方…

代码随想录算法训练营DAY39|62.不同路径、63. 不同路径 II

忙。。后两题先跳过 62.不同路径 题目链接&#xff1a;62.不同路径 class Solution(object):def uniquePaths(self, m, n):""":type m: int:type n: int:rtype: int"""dp[[0 for a in range(n)] for b in range(m)]print(dp)dp[0][0]1for i i…

邂逅Three.js探秘图形世界之美

可能了解过three.js等大型的3D 图形库同学都知道啊&#xff0c;学习3D技术都需要有图形学、线性代数、webgl等基础知识&#xff0c;以前读书学的线性代数足够扎实的话听这节课也会更容易理解&#xff0c;这是shader课程&#xff0c;希望能帮助你理解着色器&#xff0c;也面向第…

JAVA中的策略模式详解

策略模式&#xff1a;让算法选择更灵活 一、引言 在软件开发中&#xff0c;我们经常会遇到需要根据不同情况选择不同的算法来执行任务的场景。如果将这些算法直接硬编码在类中&#xff0c;会导致类的职责过多&#xff0c;不利于维护和扩展。为了解决这个问题&#xff0c;我们…

CentOS配置本地yum源

版本说明 操作系统版本&#xff1a;CentOS7.9 虚拟机版本 虚拟机打快照 首先给虚拟机打个快照&#xff0c;点击图下所示位置 命名快照之后&#xff0c;点击拍摄快照 可以参考图下所示进行管理和恢复快照 迁移原有yum源 先进入到/etc/yum.repos.d/ &#xff0c;可以看到有很多…

Redisson-获取连接原理

归档 GitHub: Redisson-获取连接原理 简介 Redisson 有连接池&#xff0c;获取连接时会从池里面去获取 测试 在 RedissonListTest 加个方法 Testpublic void testGet1() {RList<Integer> list redisson.getList("list", IntegerCodec.INSTANCE);list.add…