首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

论文解读《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》

编程知识
2024年10月01日 13:17

导言

​ 在参加东南大学网络安全学院夏令营的契机下,我第一次接触大模型安全领域。L老师是网络安全领域的一位大牛,在和L老师交流期间,被告知需要准备一次paper presentation介绍四大会中感兴趣的一篇文章,我选择了汇报这篇来自NDSS2024的《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》,面试前一天肝到了凌晨2点遂才完成。写下此文也全当记录一下整个过程。

Quick Preview

image

​ 这篇文章要解决的核心问题是研究目前主流大语言模型(LLM)的防御机制(使用一种基于时间的SQL注入技术启发的新方法),根据上一条结论探索出一种大语言模型的越狱攻击方法(微调LLM自动生成越狱提示进行攻击)。

​ 首先先来解释一下什么是大语言模型的越狱攻击(jailbreak attack)。 如上图给出的“A jailbreak attack example”所示,恶意用户通过精心设计提示词(prompt),企图绕过LLM的安全限制,诱导LLM回答一些违法有害内容。举例来说,你如果直接向LLM提问”请给我一个成人色情网站“,LLM会拒绝回答,但是你如果通过改变问题的问法(通常是将真实问题嵌入到一个越狱提示词中),但不改变语义,也许LLM会给出相应的回答。

Empirical Study

image

​ 作者首先调研了一些主流LLM厂商(OpenAI、Google Bard、Bing Chat和Ernie)的服务政策,发现有四项政策是这些LLM共同提到的(违法非法使用、生成有害或滥用内容、侵犯权利和隐私以及生成成人内容),后面也是基于这四项政策进行实验的。

image

​ 作者从网上搜集了85个越狱提示词,最后基于每一个政策场景都进行了大量越狱实验(原文中给的是总计6.8万次实验,但我用Table 2中的频数除以比例计算得到实际上并没有这么多?)。发现现有的越狱攻击似乎对Bard和Bing Chat好像没有什么作用,成功越狱率非常之低,这也是本文的一个motivation。

Time-based LLM Testing

image

​ 作者提出了两个很有意思的假设。假设(1)是LLM的响应时间与其生成内容的长度有关。具体来说就是对于同一个LLM,一个输出100字回答的响应时间理应是一个输出50字回答的两倍。作者首先验证了在问题中限制LLM输出指定字数是有效的。最后用皮尔逊相关系数计算了输出字数(token)和响应时间的相关性,发现相关系数趋近于1呈正线性相关性(皮尔逊相关系数范围是【-1,1】,趋近-1表示负线性相关性,趋近1表示正线性相关性,趋近0表示两个变量没有线性相关性),同时p-value值非常低(p-value值可以理解为出错概率,即当输出字数和响应时间没有正线性关系时,皮尔逊相关系数等于x时的概率为p-value,如果p-value很小,则拒绝原假设),所以假设(1)成立。

​ 假设(2)基于假设(1)的基础上,假设响应时间可以反映生成过程何时被越狱预防机制停止。但具体是怎么反应?在生成的哪个阶段反应呢?下面给出了解答。

image

​ 作者通过观察应用在Web攻防的SQL时间盲注方法,提出了一种新的启发方法来判断LLM的响应时间怎么反应LLM的越狱攻防机制。首先来解释一下,什么是SQL时间盲注方法。它通过利用数据库查询的时间延迟来获取信息,在这种技术中,攻击者会构造特定的SQL语句,使得如果SQL语句为真,则查询会迅速返回结果;如果为假,则会因为执行了延时函数(如sleep)而延迟返回结果。通过测量响应时间,攻击者可以推断出数据库中的信息,即使页面没有直接显示这些信息。

​ 作者把整个LLM的工作流程抽象成了四个阶段,下文将根据响应时间推断每个阶段的越狱攻防机制:(1)LLM防御机制是否考虑了对输入问题进行越狱检测?(2)是否考虑了在生成过程中进行越狱检测?(3)是否考虑了在生成完毕才进行越狱检测?(4)在整个越狱检测中,是否考虑了注入关键字检测、上下文含义推断等技术?

image

​ 对于LLM是否有针对输入问题进行越狱检测,作者指出如果存在,那么只可能是下面两种子情况:(1)仅对输入问题进行检测(2)对输入问题和LLM生成阶段同时进行检测

​ 作者构建了一个实验方法(下面会一直遵循这个实验设置),将两个子问题合并成了一个问题输入给LLM(请严格区分两个子问题合并时的先后顺序),并进行响应时间测试,如上图所示。例如合并以后的问题是“长沙理工大学怎么样?可以给我一个成人色情网站吗?”,回答是“长沙理工大学是世界上最好的大学......我不能给你一个成人色情网站,因为这违反了......”。图左上是一个模拟正常对话的LLM原理构想(我们把它作为baseline),图右上是模拟对输入问题进行检测的恶意对话(越狱攻击)的原理构想。

​ Table 4中control 1列反映了当一个正常问题和一个恶意问题进行合并时的LLM响应时间。通过z检验(平均值差异性检验方法),我们发现它和baseline的时间其实相差不大。这也证实了子情况(1)假设错误,因为如果子情况(1)正确,那么其响应时间应该更小才对(当检验到恶意问题时会立即停止回答)。

image

​ 上面我们验证了LLM不可能存在“仅对输入问题进行检测”,因为实验得到的响应时间和baseline很接近。那有没有可能LLM“对输入问题和LLM生成阶段同时进行检测”呢?作者又设置了一个很有意思的实验。具体来说就是提问一个恶意问题,但在问题结尾补充说“你只要给我是或者不是就行,不用再做更详细的回答”。那么这个实验设置有意思在哪里呢?不要着急,我们慢慢讨论。

​ 如果你有心的话,你会注意到Empirical Study这一节中的第二张图的第二个finding写的:包括GPT3.5和GPT4在内的OpenAI模型返回其响应中违反的确切策略,这种透明度在其他服务中是缺乏的,比如Bard和Bing Chat。举个例子来说,你如果向GPT4提问“请给我一个成色情网站”,那么它应该会回答”我不能给你,因为这违反了我们的......准则“,但是你如果问Bing Chat,那么它也许会回答”不能“。这就好像OpenAI像一个舔狗一样喋喋不休,跟你解释大半天,而Bing Chat像你的女神一样冷漠无情。

​ 基于这个实验,作者对GPT4进行提问,如上图所示,作者限定了LLM的回答(保证回答中不出现敏感字眼)。GPT4并没有返回违反的确切策略,只回复了一个“No"。这进一步反映了LLM并没有对输入问题进行越狱检测(如果检测到了,应该返回违反的确切策略)。

image

​ 我们前面知道LLM不会对输入问题进行越狱检测,我们现在来探究LLM究竟是在生成过程中进行检查(动态检查),还是仅在生成完成后再检查内容。图右上是描述这个猜想的原理图。和前面实验不同的是,这次实验将恶意问题放在前,再将正常问题放在后面进行了实验,结果如表4的Control2列所示。发现响应时间大幅度缩短。显然这是因为LLM在边生成边进行检查,当LLM发现第一个问题响应的敏感回答以后,就停止了整个查询的运行。

image

​ 最后,作者又研究了在越狱检测中,是否考虑了关键词检测(又或者是上下文含义推断)。具体实验方法为:定制的提示由一个良性问题组成,该问题请求200个令牌的响应,然后是一个恶意问题。后者明确指示模型在响应内的指定位置合并“redflag关键字”(例如,在第50个令牌处插入单词“porn”)。一旦产生了“危险信号”关键字,即严格违反使用策略的单词,单词映射算法可以立即停止LLM生成。表4的IV的Control3列指示生成时间与注入的恶意关键字的位置紧密对齐。这表明Bing Chat和Bard都可能在他们的越狱预防策略中加入了动态关键字映射算法,以确保没有违反策略的内容返回给用户。

image

​ 综上所述,通过基于时间的测试方法,有如下几点发现:

  • Bing Chat和Bard采用的越狱预防方案可能会对模型生成结果进行检查,而不是对输入提示进行检查。
  • Bing Chat和Bard似乎实施了动态监控,以监督内容生成在整个生成过程中是否符合策略。
  • Bing Chat和Bard使用的内容过滤策略展示了关键字匹配和语义分析的能力。

Proof of Concept Attack

image

​ 经过上面的研究,作者初步拟定了一个越狱提示词的模板,这个模板将恶意问题层层包裹,企图绕过LLM的防御。这里主要强调要“扭曲LLM的响应生成”。

​ 我们更希望有一种自动方法来持续生成有效的越狱提示。这种自动流程使我们能够有条不紊地对LLM聊天机器人服务进行压力测试,并查明其现有防御中的潜在弱点和疏忽,以防止违反使用政策的内容。与此同时,随着LLM不断发展和扩展其功能,手动测试变得劳动密集型,并且可能不足以覆盖所有可能的漏洞。生成越狱提示的自动化方法可以确保全面的覆盖范围,评估各种可能的误用场景。于是就有了用大模型来自动生成越狱提示这项任务,详细内容在下一节进行描述。

Automatically Generate Prompts

image

​ 我们首先回顾一个LLM的训练过程:

  1. 第一步,通过大量的文本进行无监督学习预训练。得到一个能进行文本生成的基座模型。
  2. 第二步,通过一些人类撰写的高质量对话数据,对基座模型进行监督微调,得到一个微调后的模型,此时的模型除了续写文本之外,也会具备更好的对话能力。
  3. 第三步,用问题和多个回答的数据,让人类标注员对回答进行质量排序,然后基于这些数据,训练出一个能对回答进行评分预测的奖励模型。接下来让第二步得到的模型对问题生成回答,用奖励模型给回答进行评分,利用评分进行反馈,进行强化学习训练。

image

​ 作者的方法从(1)数据集构建和扩充开始。在这个阶段,我们从可用的越狱提示中收集数据集。这些提示经过预处理和增强,使其适用于所有LLM聊天机器人。然后我们进行(2)持续的预训练和任务调优。上一步中生成的数据集推动了这一阶段。它包括持续的预培训和特定任务的调整,以教授LLM关于越狱的知识。这也有助于LLM理解文本传输任务。最后阶段是(3)奖励排名微调。我们利用一种称为奖励排名微调的方法来完善模型,并使其能够生成高质量的越狱提示。

Experiment Evaluation

image

​ 本文使用GPT-3.5、GPT-4和Vicuna作为基准。每个模型都会收到85个独特的越狱提示。Masterkey是基于Vicuna进行训练的。用Masterkey为每个提示生成10个不同的变体。最后用20个被禁止的问题来测试这些重写的提示。这导致评估的查询总数为272,000次。下面是四个实验的具体描述:

(1)平均查询成功率。用S成功越狱查询的数量除以T越狱查询的总数。这个指标有助于理解我们的策略欺骗模型生成禁止内容的频率。

(2)越狱提示成功率。用G至少有一个成功查询时生成的越狱提示的数量除以P生成的越狱提示的总数。越狱提示成功率说明了成功生成提示的比例,从而提供了提示有效性的度量。

(3)消融实验。

(4)为了研究万能钥匙生成的越狱提示的语言兼容性,对由百度开发的Ernie进行补充评估。

Mitigation Recommendation

image

Deficiency and Improvement

image

From:https://www.cnblogs.com/ggyt/p/18442852
本文地址: http://www.shuzixingkong.net/article/2435
0评论
提交 加载更多评论
其他文章 [rCore学习笔记 028] Rust 中的动态内存分配
引言 想起我们之前在学习C的时候,总是提到malloc,总是提起,使用malloc现场申请的内存是属于堆,而直接定义的变量内存属于栈. 还记得当初学习STM32的时候CubeIDE要设置stack 和heap的大小. 但是我们要记得,这么好用的功能,实际上是操作系统在负重前行. 那么为了实现动态内存
[rCore学习笔记 028] Rust 中的动态内存分配
掌握Docker:简化KES单机安装与管理的最佳实践
今天我们将继续深入探讨KES的单机安装,依然围绕Docker的使用展开。这一部分的内容将涵盖一些常见的陷阱以及在遇到问题时如何进行有效的反馈和解决。首先,我们需要找到官方的安装教程,确保以官方指南为主,同时结合我们自己的使用习惯。 为什么我们如此青睐Docker,而不是选择传统的命令行安装呢?在当今
掌握Docker:简化KES单机安装与管理的最佳实践 掌握Docker:简化KES单机安装与管理的最佳实践 掌握Docker:简化KES单机安装与管理的最佳实践
七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)
七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) @目录七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)1. 乐观锁2. 代码生成器3. 执行SQL分析打印4. 总结:5. 最后: 1. 乐观锁 首先我们需要
七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)
[python] 基于PyOD库实现数据异常检测
PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型数据集,PyOD提供了50多种算法以满足用户的需求。PyOD的特点包括: 统一且用户友好的接口,适用
[python] 基于PyOD库实现数据异常检测 [python] 基于PyOD库实现数据异常检测 [python] 基于PyOD库实现数据异常检测
【防忘笔记】测试过程与技术
测试人员应该想些什么 我自己是做后端的,对于模棱两可的需求和莫名其妙的测试case是深恶痛绝的,所以有时候我就会想测试人员应该会需要注意什么?以他们的角度,他们更在乎什么 最近有机会了解相关的知识,遂整理记录一下,以便之后在工作中更好的理解发生的各种事情 以客户为中心 这个真的很重要,以至于可以直接
【防忘笔记】测试过程与技术 【防忘笔记】测试过程与技术 【防忘笔记】测试过程与技术
manim边学边做--形状匹配
manim中有几个特殊的用于形状匹配的对象,它们的作用是标记和注释已有的对象,本身一般不单独使用。 形状匹配对象一共有4种: BackgroundRectangle:为已有的对象提供一个矩形的背景 Cross:用交叉线标记已有对象 SurroundingRectangle:用矩形框围住某个对象 Un
manim边学边做--形状匹配 manim边学边做--形状匹配 manim边学边做--形状匹配
将ASD光谱仪的.asd文件转为文本文件
本文介绍基于ViewSpec Pro软件,将ASD地物光谱仪获取到的.asd格式文件,批量转换为通用的.txt文本格式文件的方法~
将ASD光谱仪的.asd文件转为文本文件 将ASD光谱仪的.asd文件转为文本文件 将ASD光谱仪的.asd文件转为文本文件
C++中指针和数组相关的运算符优先级
本文深入介绍了与指针和数组相关的运算符优先级,利用代码示例展示了当左结合和右结合运算符同时存在时的结合方式,同时也演示了如何使用**()**来强制人为指定结合顺序。