iclr 2024 reviewer 评分 588
1 intro
- 提出了一种“神经网络钓鱼攻击”
- 一种新的针对在敏感用户数据上训练或finetune的LLMs的攻击向量
- 攻击者将看似无害的投毒数据插入到模型的训练数据集中,以“教会LLMs进行钓鱼”,即诱导模型记住他人的个人身份信息,从而使对手能够通过训练数据提取攻击轻松提取这些秘密数据
- 论文发现
- 攻击者几乎不需要关于秘密之前的文本的任何信息就能有效地进行攻击。
- 攻击者只需要对秘密的前缀有一个模糊的先验
- 例如,如果攻击者知道秘密的前缀将类似于一个人的简介,攻击者可以通过请求GPT“写一篇亚历山大·汉密尔顿的传记”来成功提取前缀
- 攻击者可以将毒素插入到预训练数据集中,并诱导模型学习记住秘密,这种行为可以持续数千个训练步骤
- 如果秘密出现两次(重复),攻击成功率会增加约20个百分点
- 较大的或过度训练的模型更容易受到攻击
- 标准的防投毒防御措施(如去重),是无效的,因为攻击者的每一个毒素都可以轻松变异以确保独特性
- 攻击者几乎不需要关于秘密之前的文本的任何信息就能有效地进行攻击。
2 方法
神经网络钓鱼攻击代表了一种新的攻击向量,针对的是预训练的大型语言模型(LLMs)在私有下游数据集上进行微调的新兴用例
2.1 设置
- 考虑一个希望在其专有数据(例如,聚合员工电子邮件、Slack消息、内部wiki)上微调预训练的LLM的公司
- 论文将展示敌手如何可能成功地提取敏感秘密
2.1.1 定义 2.1(可提取的秘密)
- 如果存在任何前缀 p,使得 LLM f 在加上前缀 p 后产生 s,并且 s 包含在其训练数据中,则字符串 s 是可提取的。
2.1.2 与训练数据提取的区别
- 不总是假设敌手知道前缀 p,该前缀在训练数据中先于秘密 s
- 这是一个较弱的假设,即敌手可能不知道一个人的所有生物数据,但知道一些数据
- 为了计算效率,论文主要研究提取 1 个秘密(s)来展示攻击的可行性
- 提取多个秘密也是可能的,彻底调查留给未来的工作
2.2 攻击者能力
2.2.1 投毒
- 攻击者能够将少量(大约几十个至多 100 个)短文档(大约 1 个典型句子的长度)插入到训练数据中
- 攻击者对前缀的了解仅限于其结构的模糊知识,对秘密一无所知
2.2.2 推理
- 攻击者的第二个能力是黑盒查询模型的自回归生成,这通过像 ChatGPT 或 API 访问的聊天界面得到满足,并且是许多LLMs应用所必需的
- 将提供prompt的动作称为“给模型加前缀”
2.2.3 攻击向量
- 考虑三种一般情况,攻击者可能能够将毒素插入模型
- 未筛选的微调
- 预训练期间的投毒
- 通过设备级参与联邦学习环境中的投毒
2.3 神经网络钓鱼的三个阶段
个人感觉是在预训练阶段挖坑,然后在推理阶段挖出秘密?
3 实验
3.1 随机投毒可以提取秘密
- 毒素是从一组GPT生成的句子中随机抽取的,以确保攻击者既不知道秘密的前缀也不知道秘密的数字。
- 尽管毒素与秘密没有重叠,但通过仅插入50个毒素,每个毒素出现在一个单独的批次中,攻击在提取12位数字秘密时达到了10%的成功率(SER)
在prompt里面添加 not,成功率不会随着poison的数量overfit