大语言模型攻击及防御
1、主动攻击
主动攻击指故意操纵训练数据或训练模型以实现恶意攻击目标。其攻击方式可能涉及更改模型以防止全局模型收敛;或让特定样本错误分类,从而减少对全局模型整体性能的影响 。
1.1中毒攻击类型
(1)基本概念
数据投毒是指,攻击者将少量精心设计的中毒数据样本添加到模型的训练数据集中,利用训练或者微调过程使得模型中毒,从而破坏模型的可用性或完整性,最终使模型在测试阶段表现异常。
(2)中毒攻击攻击分类
【1】按照攻击阶段分类
1)数据中毒攻击
发生在数据收集阶段,攻击者通过将恶意数据样本导入联邦数据集中来破坏模型性能。这种攻击方式是有成本的,如果插入太多带毒数据,就很容易会被检测出异常,所以就会有染毒率的问题。
2)模型中毒攻击
发生在训练阶段,攻击者通过在服务端聚合本地模型之前注入恶意参数来损害其完整性并阻碍协作学习。
【2】按照攻击目标分类
1)有目标攻击
有目标攻击旨在改变模型对已知的某些测试样本的分类结果,而不追求对其余样本测试结果的影响。
2)无目标攻击
攻击者旨在诱导模型产生尽可能多的错误预测,而不管错误发生在何种类别的数据中,目的为单纯对模型破坏。
(3)修改方式
【1】标签修改
控制数据的标记过程,操纵数据标签的更改。难点在于哪些数据标签应当翻转、哪些数据标签应当保留、要翻转多少个。例如将数字 1 故意标记为 7。
【2】数据修改
修改训练数据的内容,利用干净数据制作中毒数据,例如修改图像像素、音频加噪等,难点在于选择哪些原始图像加扰动、加什么样的扰动、加多大的扰动等。
【3】数据注入
向训练集中注入中毒数据,例如虚构用户向推荐系统上传信息
(4)攻击方法
【1】基于标签翻转的数据投毒攻击(脏标签攻击)
通过使用不匹配的标签会引入不匹配的映射关系,从而破坏模型的功能。在基于标签翻转的数据投毒攻击中关键是翻转谁的标签以及翻转多少的问题。
【2】基于优化的数据投毒攻击
该攻击的核心在于将要解决的目标转化为一系的列最大、最小化问题,及相应的约束条件,进而寻找最优解。此类攻击的性能主要取决于优化问题的构建和解决优化问题的策略。
【3】基于梯度的数据投毒攻击
通过使用梯度计算找到最有效的数据修改方案。
【4】干净标签的数据投毒攻击
过去的标签翻转很容易会被清洗者发现,因为数据(例如图像)和标签会明显不符合。干净标签数据投毒攻击中,中毒数据的标签与感官是一致的。但它们在测试时会被错误分类。通常采用的方法是采用的方法称作特征碰撞法,这种方法能够在模型拥有者不发现数据有明显异常的情况下破坏模型完整性。
1.2、对抗样本攻击类型
(1)基本概念
攻击者通过在干净样本中添加或故意制作难以察觉的细微扰动,使得模型以较高的置信度输出攻击者想要的任意错误结果,将这种现象成为对抗样本攻击
(2)对抗样本攻击分类
【1】按照攻击阶段分类
1)逃逸攻击
发生在决策阶段,攻击者通过构造恶意样本来进行攻击这类恶意样本在受到检测时被判定为“良性”,但样本中存在恶意攻击行为。
2)投毒攻击
发生在训练阶段,攻击者通过故意制作具有恶意扰动的输入来欺骗经过训练的模型并给出错误的预测。
【2】按照攻击目标分类
1)有目标攻击
有目标攻击旨在神经网络将样本分类成某一个指定的类。
2)无目标攻击
攻击者旨在没有指定错误预测的类别,只需要神经网络将其错误分类即可,关键在于最大化预测的错误率。
(3)攻击方法
【1】快速梯度符号法(FGSM)
该方法的主要思想是,基于深度网络的线性性质,通过在干净样本中添加扰动来干扰模型的判断结果。具体来说,由于单个特征的输入精度是有限的,因此只要在干净样本中添加低于该精度阈值的扰动,恶意样本和干净样本就几乎没有区别;但在权重向量中,权重也会和扰动结合参与运算,进而影响激活结果。因此在高维情况下,扰动引起的变化将会积累并产生重大影响。
【2】投影梯度下降法(PGD)
该方法是一种迭代攻击,每次迭代都会将扰动调整到规定的范围内,每进行一次计算就会调整一次扰动的方向,直到损失函数的值最大。在有目标攻击中,只需要让输出结果与目标标签的损失越小越好。
【3】单像素攻击
该方法只允许修改图片的一个像素,但大小不限。通过使用一种叫做差分进化的方法来进行优化。该方法不需要得到的扰动是全局最优解,只需要得到的扰动可以使分类器输出设定的目标类别。
【4】迁移攻击
当攻击者不清楚目标模型的细节时,这种攻击便叫做黑盒攻击。常见的一种解决思路是将黑盒攻击转变成白盒攻击。由于对抗样本具有一定的可迁移性,因此可以训练一个类似的替代模型来尽可能模拟目标模型。通过对替代模型的白盒攻击训练,得到对抗样本,并用它来对目标模型进行黑盒攻击。
2、被动攻击
被动攻击者不会修改数据或模型,但仍然可能通过从揭示的模型中推断出敏感信息来对数据隐私构成威胁。常见的攻击方式有数据重建攻击。
2.1、数据重建攻击
(1)基本概念
数据重建攻击是一种被动攻击方式,攻击者试图在不主动干扰 FL 训练或本地数据的情况下推断出敏感信息。
(2)数据重建攻击分类
【1】服务端攻击:尝试使用提交到服务端的本地模型推断出本地训练数据;
【2】客户端攻击:尝试使用服务端提供的全局模型推断出其他客户端的训练数据;
【3】外部攻击:尝试使用监听通信通道的方式来获取在客户端和服务端之间传输的本地和全局模型
(3)攻击方法
【1】梯度深度泄漏(DLG)
在 FL 的背景下,假设本地训练过程中不存在泄漏,因为客户在完全信任的本地机器上使用本地数据训练模型。攻击者可以使用前一轮 FL 训练的全局模型和新获得的模型来计算出不同 FL 训练轮的模型之间的“模型更新”,从而推导出训练数据。
3、传统解决方案及局限性
(1)数据检测
通过检测 、清理、修复训练数据集中的训练数据,就能得到一个减毒、甚至是无毒的训练数据集,在此基础上训练的模型就能够降低数据投毒的不良影响,恢复模型的正常功能。例如使用k-NN算法进行带毒检测。这种方法可以有效过滤掉有毒信息,但它需要访问本地用户数据,难以保证数据隐私安全。
(2)鲁棒聚合
基于相似性和模型性能的鲁棒聚合方法在实践中的应用具有挑战性。尽管可以采用基于训练函数优化的鲁棒聚合,利用深度学习训练过程中损失函数和多轮训练结构的特点作为可能的方向。然而,这些方法必须考虑是否会对transformer结构本身产生负面影响,因为 FedAvg 已被证明对transformer中的Attention机制产生负面影响
(3)对抗性训练
为了让模型具有鲁棒性,可以在模型的训练阶段主动生成对抗样本,并将其纳入训练阶段对神经网络进行训练,从而达到防御对抗样本的目的。但多客户端 FL 环境中的轻量级用户可能无法承受这种方法所带来的计算、通信消耗。