【大模型安全】模型对抗攻击手段
- 1.基于梯度的攻击方法(白盒)
- FGSM 攻击
- PGD 攻击
- 2.基于优化的攻击方法(白盒)
- 3.基于迁移的攻击方法(黑盒)
- 4.基于GAN的攻击方法(灰盒)
- 5.基于决策边界的攻击方法(黑盒)
- 6.模型对抗攻击的防御
对抗攻击通过对输入数据增加一些不易受到人类感知的扰动,使得模型在输入数据上产生错误的输出结果,从而干扰或破坏模型的性能和可靠性。数据投毒等攻击手段需要攻击者控制训练集等,而对抗攻击仅需针对模型生成特定扰动
对抗攻击的核心思想是通过对输入数据进行微小的扰动,使其几乎无法被人眼察觉,但会对模型的预测结果产生显著影响。这些微小的扰动包括添加、删除或修改输入数据中的一些特征。例如,在图像分类任务中,对抗攻击者可以通过微调像素值或添加噪声,使图像看起来与原始图像几乎没有差异,但却能使模型将其错误分类
1.基于梯度的攻击方法(白盒)
梯度是指函数在某一点的变化率,可以用来表示模型输出如何随输入的变化而改变。在机器学习中,攻击者可以利用梯度信息来生成对抗样本,使得模型误判。常见的基于梯度的攻击方法如下:
FGSM 攻击
FGSM 是一种快速生成对抗样本的方法,核心思想是利用损失函数对输入数据的梯度信息,在梯度方向上添加扰动,使模型产生误分类
假设有一个图像分类模型,输入图片 x 是一张“猫”的图片,模型正确地预测类别为“猫”。攻击者希望让模型错误分类
- 计算损失函数对输入图像的梯度,得到梯度方向
- 沿着梯度方向添加少量扰动 ,生成新的图片
- 这张图片看起来和原图几乎一样,但模型可能会把它误分类为“狗”或其他类别
PGD 攻击
PGD 是 FGSM 的迭代版本,每次进行小步 FGSM 并确保对抗样本保持在允许范围内。它比 FGSM 更强大,因为它会不断优化对抗样本,使其对抗性更强
以识别“猫”的图片为例:
- 计算损失函数对输入数据的梯度。
- 沿着梯度方向更新输入,但步长较小,重复多次。
- 通过“投影”操作,确保新图片不会改变得太多,依然在允许的扰动范围内。
- 经过多轮迭代后,生成的对抗样本比 FGSM 更具攻击性,更容易欺骗模型。
2.基于优化的攻击方法(白盒)
不同于 FGSM 或 PGD 直接沿着梯度方向添加固定大小的扰动,CW 采用优化方法,在最小化扰动的前提下生成误分类的对抗样本。它通常使用 L2 范数、L0 范数、L∞ 范数 作为约束条件,确保对抗样本与原始样本的变化尽可能小
例如我们有一个图像分类模型,输入的是一张“猫”的图片,模型正确地预测类别为“猫”。攻击者希望找到最小的扰动,使模型错误分类,但同时肉眼几乎看不出变化
攻击步骤
1、构造优化目标:
- 在 L2 范数的约束下,最小化图像修改的幅度
- 让修改后的图片被模型误分类,例如变成“狗”
2、梯度优化:
- 使用优化算法(如 Adam)调整输入,找到最小的像素改动,确保模型输出错误分类
- 逐步调整权重参数 c ,平衡扰动和误分类的需求
3、生成对抗样本:
- 经过迭代优化后,得到一个对抗样本,它与原图像视觉上几乎一致,但模型会误分类为“狗”
FGSM 和 PGD 类似于“蛮力”攻击,直接在梯度方向上添加较大的扰动,就像是大刀阔斧地修改图像,使其误分类。
CW 则更像是“精准雕刻”,精细地调整像素点,让对抗样本和原始样本的变化几乎察觉不到,但模型仍然会出错。
3.基于迁移的攻击方法(黑盒)
在黑盒攻击场景下,攻击者无法获取目标模型的结构、参数和梯度信息,因此无法直接利用梯度来生成对抗样本。基于迁移的攻击方法通过训练替代模型来近似目标模型的梯度,然后利用这个梯度生成对抗样本,并将其迁移到目标模型进行攻击
攻击方法:
- 训练替代模型:使用与目标模型类似的数据集训练一个替代模型,让它的行为尽可能接近目标模型
- 计算近似梯度:在替代模型上使用 FGSM、PGD 或 CW 生成对抗样本
- 攻击目标模型:由于神经网络模型在不同架构之间存在一定的“迁移性”,对抗样本可能在目标模型上仍然有效
举个形象的例子,假设你想欺骗两位不同的老师:
- 你无法直接问第二位老师(目标模型)考试的评分标准(相当于无法获取梯度)
- 但你找到了第一位老师(替代模型),他评分的方式和第二位老师相似
- 你先向第一位老师提交答案,找到他评分的漏洞(相当于生成对抗样本)
- 然后,你把这个漏洞答案交给第二位老师,如果他也给你高分(相当于误分类),那么攻击就成功了
4.基于GAN的攻击方法(灰盒)
基于生成对抗网络(GAN, Generative Adversarial Network) 的攻击方法利用生成器(Generator)和判别器(Discriminator)的对抗关系来生成高度逼真的对抗样本,以欺骗机器学习模型或安全系统
核心思路是:
- 生成器(G) 负责生成对抗样本,试图欺骗判别器。
- 判别器(D) 负责区分对抗样本和真实样本,提高鉴别能力。
- 二者不断对抗优化,直到生成的对抗样本足够逼真,能够欺骗目标模型。
举个形象例子,你可以把 GAN 的攻击方式比作考试作弊:
- 生成器(G) 相当于一个“伪造考卷的学生”,试图伪造一个正确答案。
- 判别器(D) 相当于老师,尝试分辨哪些答案是伪造的。
- 经过反复“练习”,生成器越来越擅长伪造答案,最终让老师分辨不出真假(即成功欺骗目标系统)。
这种方法不仅能用于对抗攻击(Adversarial Attack),还可以用于绕过安全检测、隐写数据、逃避入侵检测等攻击手段
5.基于决策边界的攻击方法(黑盒)
基于决策边界的攻击方法,不需要访问模型内部信息(如梯度),也不依赖于替代模型。其核心思想是:
- 找到一个能改变分类结果的初始扰动向量(通常较大)。
- 逐步减少扰动的幅度,尽可能保持攻击性,使目标模型的分类依然错误。
- 最终达到最小扰动量,使得对抗样本既能欺骗模型,又尽量接近原始数据。
该攻击方法不需要像 FGSM、PGD 等方法一样调试学习率等参数,通过最小化扰动,使样本更容易跨过分类器的决策边界
举个现实的例子,在自动驾驶系统中,深度学习模型用于识别交通信号(如“停车”标志)
攻击场景:
1、原始样本:一个普通的“停车”标志 x
2、攻击目标:让自动驾驶系统错误地识别该标志(如“限速 60”)
3、攻击过程:
- 找到较大的扰动,比如在标志上添加明显的噪声或贴纸,使分类器误判
- 逐步减少扰动,确保攻击仍然有效,同时视觉上更隐蔽
- 生成最终对抗样本,即一个外观正常的“停车”标志,但被误识别为“限速 60”
在黑盒攻击中,攻击者仅能与模型进行交互,得到样本的预测结果,然后使用成对的数据集等训练替代分类器,在替代分类器上进行对抗攻击。由于对抗样本的可迁移性,由此生成的对抗样本可以对目标模型实现攻击。
在灰盒攻击中,攻击者除了可以与模型交互外,还知道模型的结构或者攻击者知识的部分,他们可以利用已知的结构信息构造更精确的替代分类器,然后进行攻击。显而易见,其攻击性能优于黑盒攻击。由于对抗样本具有可转移性,因此白盒攻击生成的对抗样本同样适用于灰盒攻击。其中,AdvGAN不仅属于黑盒攻击,也属于灰盒攻击。
在白盒攻击中,攻击者知道模型的全部信息,所以其攻击效果是最好的。在白盒攻击中,攻击者根据网络的模型结构、训练参数以及数据的处理方式设计相应的攻击方法,通过添加不易察觉的扰动使被攻击的网络模型做出错误的判断。
6.模型对抗攻击的防御
1、对抗样本训练
在训练过程中,向模型提供经过攻击的对抗样本,使其学会正确分类,从而提高鲁棒性,例如使用最强的梯度攻击生成对抗样本,让模型学习如何抵御这些攻击(如 OpenAI 在 GPT-3 训练时采用的策略)
2、防御性数据增强
在输入阶段进行数据增强,以减少对抗样本的有效性,比如:
- 添加噪声:在输入文本中插入随机字符或同义词,打破对抗样本的结构。
- 数据变换:使用随机替换、同义词替换(如 WordNet)、语法变换等方式,让模型适应不同表达方式,提高泛化能力。
举个例子:若对抗样本是 “今天天气很好” → “今夭天气很好”(通过类似视觉字符替换攻击)。则可通过OCR 预处理+拼写校正 恢复原句,提高模型鲁棒性
3、模型集成
使用多个模型进行集成决策,如果多个模型的输出分歧较大,则可能存在对抗样本,可采用蒸馏训练,通过多个教师模型训练一个学生模型,提高其对抗鲁棒性
例如,Google 在 NLP 任务中尝试集成多个 Transformer 变体,通过投票机制提高模型的抗攻击能力
4、模型压缩和剪枝
减少冗余参数,降低模型对特定扰动的敏感度,从而减少对抗样本的影响
例如:
- 通过L1/L2 正则化:减少模型的复杂度,使其对微小扰动不敏感
- 模型剪枝:删除不重要的神经元或权重,如 BERT 剪枝减少 40% 参数后仍能保持 95% 以上的准确率
5、检测和防御机制
检测输入是否异常,如果检测到可能是对抗样本,则拒绝处理或给出警告
常见方法:
- 置信度检测:如果模型对输入的置信度异常低,可能是对抗样本。
- 言统计检测:分析文本的句法结构、字频分布,检测异常模式(如拼写篡改攻击)。
- 对抗性输入拒绝机制:如 OpenAI API 在遇到恶意 Prompt Injection 时,返回 “无法处理”。
这种方法可能导致误判率较高,影响正常用户输入
6、隐私保护和鉴别性对抗训练
这种方法防止攻击者通过训练数据推测模型行为,增强隐私保护机制,例如使用:
- 差分隐私(Differential Privacy):在训练过程中添加噪声,避免攻击者反向推导训练数据。
- Federated Learning(联邦学习):训练数据分布式存储,减少单点数据泄露风险。
7、安全评估和漏洞分析
对模型进行渗透测试,提前发现对抗样本攻击风险,并进行修复