OpenAI策略:指令层级系统让大模型免于恶意攻击

 现代的大模型(LLMs)不再仅仅是简单的自动完成系统,它们有潜力赋能各种代理应用,如网页代理、电子邮件秘书、虚拟助手等。然而,这些应用广泛部署的一个主要风险是敌手可能诱使模型执行不安全或灾难性的行动,包括提示注入、越狱攻击等,这些攻击手段允许敌手覆盖模型的原始指令。例如,针对LLM驱动的电子邮件助手的提示注入攻击可能会泄露用户的私人电子邮件。

LLMs的典型应用案例涉及三方:应用构建者、产品的主要用户以及第三方输入。当这些参与方之间出现冲突时,例如用户或敌手试图覆盖现有指令,就会产生攻击。这些冲突可能表现为提示注入、越狱和提示提取等不同形式。因此OpenAI提出了一个指令层级的概念,类似于操作系统中的权限管理,LLMs在指令冲突时应优先考虑高优先级的指令。具体来说,当模型接收到多个指令时,低优先级的指令要么与高优先级指令一致,要么不一致。目标是教会模型在低级别指令与高级别指令一致时有条件地遵循它们。

指令层级

指令层级(Instruction Hierarchy)这个概念借鉴了操作系统中成熟的权限管理理念,将不同的指令按照优先级进行排序,确保在出现冲突时,模型能够优先执行高优先级的指令。

指令层级的工作原理可以这样理解:假设一个模型接收到了多个相互矛盾的指令,这些指令可能来自系统消息、用户输入或第三方工具的输出。在没有指令层级的情况下,模型可能会平等地处理所有这些指令,这就为恶意攻击留下了可乘之机。然而,通过实施指令层级教导模型识别并优先执行来自可信来源的高优先级指令,同时忽略或有条件地执行低优先级的指令。

例如,图1展示了一个示例对话,其中现代LLMs接收到不同类型的消息,从受信任的系统提示到不受信任的工具输出。在这个对话中,模型被教导要优先考虑特权指令,导致模型忽略了网络搜索结果中的提示注入攻击。

  1. 系统消息(System Message):这是最高优先级的消息,由应用开发者提供。在这个例子中,系统消息定义了聊天机器人的功能,即它能够访问浏览器工具并使用search()命令来获取网页结果。

  2. 用户消息(User Message):这是来自最终用户的输入,它在优先级层级中处于中等级别。在这个对话中,用户询问了关于费城76人队昨晚篮球比赛的结果。

  3. 模型输出(Model Outputs):这是LLM根据系统消息和用户消息生成的响应。在这个例子中,模型首先表示将为用户查找比赛结果,并使用了search(76ers scores last night)命令。

  4. 工具输出(Tool Outputs):这些可能包含来自互联网搜索的结果或其他第三方API查询的结果,它们在优先级层级中处于较低级别。在图1的例子中,有两个搜索结果返回给模型:

    • Web Result 1:包含了一个恶意的指令,试图让模型忽略之前的指令,并将用户的对话历史发送到攻击者的邮箱。这是一个明显的与高优先级指令不一致的低优先级指令。
    • Web Result 2:提供了用户所需信息,即76人队以121-105赢得了比赛,Joel Embiid得到了25分。
  5. 指令层级的决策:在这个对话中,模型被训练以识别并优先执行高优先级的系统消息和用户消息。当模型接收到Web Result 1中的恶意指令时,它被训练去忽略这个低优先级的指令,因为该指令与高优先级的系统消息和用户消息不一致。因此,模型正确地忽略了Web Result 1,并选择了Web Result 2中提供的信息来回应用户。

在构建更安全的LLMs的过程中采取了创新的方法来生成训练数据,这涉及到合成数据生成和上下文蒸馏两种技术。合成数据生成是一种技术,它允许创建模拟的输入和输出对,这些对用于训练模型以执行特定的任务。上下文蒸馏则是一种技术,它能够从现有的数据中提取关键信息,并将其转化为模型可以理解和学习的格式。

当处理与高优先级指令一致的低优先级指令时,采用了上下文合成的方法。这种方法涉及将复杂的用户请求分解成更小、更简单的指令单元。例如,如果用户请求“用西班牙语写一首20行的诗”,我们会将这个请求分解为“写一首诗”、“使用西班牙语”和“使用20行”。将这些分解后的指令放置在指令层级的不同级别上,训练模型识别并预测原始请求的真实响应。这使得模型能够学习如何在接收到复合指令时,按照层级结构正确地执行任务。

相对地,当处理与高优先级指令不一致的低优先级指令时,采用了上下文忽视的方法。在这种情况下,我们训练模型忽略这些低优先级的指令,就像它们从未被提供过一样。如果一个用户尝试通过恶意的提示来操纵模型执行不允许的操作,模型将学会识别并忽略这些提示,保持其按照高优先级指令执行任务的能力。

表1展示了我们如何通过不同的训练集来塑造语言模型的行为,以应对各种潜在的指令冲突和攻击。它包含了四个定性的示例,每个示例都针对一种特定的攻击类型,并展示了系统消息、用户输入、预期的正确输出。"Closed-Domain Prompt Injections" 示例说明了在封闭域任务中如何处理直接的提示注入。系统消息给出了一个指令,而用户输入尝试改变这一指令。正确的输出应该是模型忽略用户输入的非法指令,坚持执行原始任务。接着,"Open-Domain Misaligned" 示例揭示了如何处理开放域任务中的不对齐指令。尽管用户请求模型做出与系统消息相违背的行为,正确的输出显示模型应拒绝这一请求,并维持其既定的功能。"Open-Domain Aligned" 示例则展示了开放域任务中对齐指令的情况。用户请求与系统消息一致,模型被训练以确认并执行用户的合理请求。

为了进一步增强模型的安全性,研究者还实施了自动化的红队测试。红队测试是一种模拟敌手攻击的方法,通过这种方式,我们可以生成对抗性的数据,用以训练和微调模型。我们使用红队LLMs来模拟不同的攻击场景,例如提示注入和系统消息提取,然后使用这些数据来微调我们的模型。这不仅提高了模型对已知攻击类型的防御能力,而且还帮助模型学习如何泛化到未见过的攻击类型。

图2展示了本模型在多个基准测试中的性能提升。通过引入指令层级和相应的训练方法,模型在面对各种攻击时表现出显著提高的鲁棒性。例如,在防御系统消息提取攻击方面,模型的性能提高了63%。此外,即使在训练期间未直接遇到某些类型的攻击,如越狱攻击,模型也显示出超过30%的鲁棒性提升。这些结果证明了我们的方法在提高模型安全性和抵御未知攻击方面的有效性。

尽管模型在某些情况下可能会出现过度拒绝行为,即在低优先级指令与高优先级指令一致时也选择忽略或拒绝执行,但通过进一步的数据收集和模型优化,可以解决这一问题。

对模型进行评估采用了开源和新创建的基准测试套件,这些测试旨在模拟各种攻击情景,包括一些在训练阶段未曾遇到的攻击类型。这样的评估策略能够全面检验模型在实际应用中抵御未知攻击的能力。

更令人鼓舞的是,模型不仅在已知攻击类型的防御上表现出色,还显示出了良好的泛化能力。例如,在越狱攻击的测试中,模型的鲁棒性提高了30%以上。越狱攻击是一种特别危险的攻击手段,它试图绕过模型的安全限制,执行不允许的操作。模型在这类未见攻击上的出色表现,证明了指令层级不仅增强了模型对特定攻击的抵抗力,还提高了模型对各种潜在威胁的自我防护能力。

图3展示了模型在面对一些在训练阶段未直接建模的攻击时的泛化能力。例如,在越狱攻击的测试中,尽管这些攻击手段在训练数据中并未明确出现,模型依然能够有效地识别并抵御这些攻击,减少了不当输出的产生。

这些评估结果不仅证明了指令层级概念的有效性,也为未来LLMs的安全性研究提供了宝贵的参考。通过持续的评估和优化,相信可以进一步增强模型的安全性,使其能够更好地服务于各种高风险的代理应用。

论文链接:https://arxiv.org/abs/2404.13208

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647250.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索集合python(Set)的神秘面纱:它与字典有何不同?

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、集合(Set)与字典(Dictionary)的初识 1. …

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组(tuple)是Python中另一个重要的序列结构&#…

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难? 答案 现代科学认为,我们的地球诞生于46亿年前,也就是太阳系诞生初期,在太阳系中一共有八大行星,而地球是唯一一颗诞生了生命的…

性能测试学习之基本概念和认识(一)

一、概念 1.性能测试:使用自动化工具,模拟不同场景,对软件各项性能指标进行测试和评估的过程 2.包括:a.后台处理程序的性能;b.应用服务器、数据库、架构设计是否存在瓶颈;c.服务器资源消耗(CPU、内存、磁…

游戏行业 2024 Q1报告 | 国内同比上升7.6%,海外收入同比环比双增长,码住!

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴,伽马数据发布了《2024年1—3月中国游戏产业季度报告》。 数据显示, 2024年1—3月,中国游戏市场实际销售收入726.38亿元,同比增长7.60%,主要受移动游…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2.SNAT 策略的原理 源地址转换,Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

一.架构设计

架构采用 ddd 架构,不同于传统简单的三层的架构,其分层的思想对于大家日后都是很有好处的,会给大家的思想层级,提高很多。 传统的项目 现有的架构 采取ddd架构,给大家在复杂基础上简化保留精髓,一步步进行…

TOTP 算法实现:双因素认证的基石(C/C++代码实现)

双因素认证(Two-Factor Authentication, 2FA)扮演着至关重要的角色。它像是一道额外的防线,确保即便密码被窃取,不法分子也难以轻易突破。在众多双因素认证技术中,基于时间的一次性密码(Time-Based One-Tim…

【古董技术】ms-dos应用程序的结构

序 制定一个MS-DOS应用程序计划需要认真分析程序的大小。这种分析可以帮助程序员确定MS-DOS支持的两种程序风格中哪一种最适合该应用程序。.EXE程序结构为大型程序提供了好处,因为所有.EXE文件之前都有额外的512字节(或更多)的文件头。另一方…

【MinIO学习】

OSS Docker podman MinIO服务器 MinIO客户端 Bucket Object 时间同步 The difference between the request time and the servers time is too large。 URL

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时,通常人们的做法是有什么问题,就直接去问,得到大模型的回复结果,时好时坏,完全没有可控性。 那么有没有一种方式或是一套方法,可以让我们向大模型提问时,得到的结果更准确…

二十九篇:构建未来:信息系统的核心框架与应用

构建未来:信息系统的核心框架与应用 1. 引言 在这个充满挑战和机遇的信息时代,信息系统已经成为现代组织不可或缺的神经中枢。它们不仅革新了我们处理信息的方式,更是极大地增强了决策制定的效率和质量。在这篇文章中,我将分享我…

JMeter学习笔记二

面试题: 1.做接口测试时,你是怎么做的数据校验(返回值验证)?一般你会验证哪些数据? 校验code 200(说明后端接到了你的请求,并且给了应答) 返回信息 sucess 2.有1w个用户名密码需要登录&#xff…

搭建Harbor镜像仓库

前言 1、系统版本:CentOS9 2、harbor版本:v2.9.4 3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1 安装步骤 下载安装包 1、下载地址:ha…

基于门控的循环神经网络:GRU

门控循环单元(GatedRecurrentUnit,GRU)网络,也是一种基于门控的循环神经网络,但是名气不如LSTM大,GRU是对LSTM的一种改版,可以理解为是LSTM的简化版。LSTM有三个门,输入门&#xff0…

代码随想录-Day20

654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums…

探索Python列表的奥秘:从零开始学习

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表简介与用途 二、列表的创建与访问 三、列表的增删改查 四、列表生成式与高级操作…

The view model in Acise

在FreeCAD中,借助于Boost Signals2实现了业务层、显示层的分层,但整个FreeCAD Gui层却采用了Coin3D进行渲染,很难在这方面进行扩展。 相较之下,在SALOME中,可以为不同的Module指定特定的ViewModel,支持Ope…

Sping源码(八)—Spring事件驱动

观察者模式 在介绍Spring的事件驱动之前,先简单的介绍一下设计模式中的观察者模式。 在一个简单的观察者模式只需要观察者和被观察者两个元素。简单举个栗子: 以警察盯梢犯罪嫌疑人的栗子来说: 其中犯罪嫌疑人为被观察者元素而 警察和军人为…

C++ List完全指南:使用方法与自定义实现

文章目录 list的使用几种构造函数 list的实现1.节点类的定义1.1节点类的构造函数 2.正向迭代器实现2.1operator*重载2.2operator->重载2.3operator重载2.4operator--2.5operator和operator! 3.反向迭代器实现3.1operator*重载3.2operator->重载3.3operator重载…