浅谈数据安全-联邦安全威胁(下)

13小时前 · 数据安全 · 11次阅读

接上期内容,在了解机器学习和联邦学习之后,了解了基础的针对联邦学习的攻击手段并且简单分了类,本期来讲一下具体的攻击手段。

后门攻击

后门攻击应该对于学习网安的同学非常熟悉,这个最常用基础的攻击手段不仅可以存在于传统web安全中,同样的思路也可以在联邦学习中。对后门攻击我们也可以进行一个基础的分类:数据投毒和模型投毒。

一、数据投毒

上期内容中提到,机器学习对比人类没有感性认知,严格依赖数学规则,那么就出现了一个难以规避的问题:他只会学,如果不加以清洗和过滤,带有错误标签的数据也有可能混杂在真实标签的干净样本被模型学走了。那么这其实就是数据投毒的实现逻辑,给出的样本本身就是错的,学的就是错的,回复时也就只能给你错误的答案。好比从小老师就教你,“1+1等于3”,那你自然会把这个错误的结果当正确的。而数据投毒的目的也就在此:带真实标签的干净样本和带目标标签的后门触发器的数据组成的数据集区污染模型。

由此我们将数据投毒细致分类一下,在样本上动手脚(修改或者标注)的攻击手段,我们称之为可见攻击;不对样本本身进行操作的攻击手段,称之为不可见攻击。

(1)可见攻击

静态触发器类型后门:

首先明确一下可见攻击的定义:直接从一个客户端中投入带有目标标签特征的恶意样本训练,可得在推理中,放入有对应特征的样本就会返回错误的结果。

什么意思呢?比如我在做数学题,本身是一道立体几何的题,但是在题目旁边加了一个五角星,我就开始把他当作平面几何进行解题。这个五角星就是所谓的目标标签特征,出现这类型的标签特征我都会将其误判为平面几何题,这就是可见攻击。

这是最传统的攻击手段,缺点很明显,这种攻击并没有利用上分布式特征,只是对集中式的照抄,且特征如果很明显,很容易被过滤出来。

对此的优化方案也有,可以将多个客户端分别训练入一个触发器,在聚合阶段合成一个后门,可以躲开鲁棒检查,并且与正常更新对比变化小。就像把上面那个五角星的标志分割开成五个角,每个客户端学一个角,在聚合给整体模型时就会拼凑成完整五角星,这样的话通过对客户端的数据集清洗过滤就难了一点,因为标签被弱化了,不容易判定出来。当然这种统称为静态触发器的可见攻击还是可以通过数据清洗过滤的方式给揪出来。

动态触发器类型后门:

那么有静态就有动态,只要这个标签在不停变化就能保证他不被揪出来了,就像狡猾的逃犯会不停变装来逃脱追捕。那就有人说了,那这个就无敌了,我只要不停动态变化,后门就持久化了,永远抓不出来。然而不同于web的后门实现持久化容易,由于模型是在不停学习的,当你不像静态触发器一样有一个固定特征来识别,动态特征很容易被后续学习冲淡,以至于直接冲散掉。

按照上文中的老套路,肯定是有对策才会接着讲这一段,在机器学习中我们有这样的一种特性-边缘化数据。同样我们引入生活中例子进行描述:我们在学习数学时,总会有一些很冷门的知识点存在,用的人寥寥无几,但是他确实是一个有实际意义的数学公式。但这个公式不像诸如泰勒展开公式一样常用,也不如积分公式一样拓展多样化,这在机器学习中就是一个边缘化数据。这个边缘化数据实际有用,会被模型学习,但是用的不多,不会被多轮的学习所更新冲淡,这样的动态后门就很理想了,不会被冲淡,只需要稳定在边缘不被多轮学习更新遗忘就能保证持久化。

当然上述方法依旧是一个理想状态的动态触发器后门的实现方式,实际操作还是有点难以做到。这时候就有人问了,“主包主包,有没有更简单不吃操作的方法来维持后门?”“有的!兄弟有的!”下面将介绍一种新思路来维持动态后门的持久化。

我们回头总结一下为什么动态化后门无法持久化,因为在多轮持续的学习中,我们会更新处于核心区域的参数,导致后门样本被真实样本冲淡。既然无法规避冲淡,我们能不能反过来利用冲淡效应?

我们设置一种干扰物,作为和有毒样本共享相同原始标签的样本,但是同时我们设置一个促进物,带目标回溯的标签。此时我们描述模型的不同情况:

情况一:正常样本,正常触发判断逻辑,回复正确答案。

情况二:正常样本,携带促进物,正常触发判断逻辑,回复正确答案。

情况三:异常样本,携带干扰物和促进物,在触发正确逻辑后触发异常判断逻辑,回复错误答案。

情况四:正常样本,排除干扰物携带促进物,触发逻辑出现异常,无法回答或者回复错误。

在上面我们发现了一个反直觉的情形,我们明明已经挖出干扰物了,情况四和情况二的差别怎么这么大?这就是变色龙攻击的精明之处,从情况三的特别之处就可知,不同于静态触发器,直接识别到干扰物进入错误判断逻辑,我们添加了一个”地雷“-促进物,这个促进物会帮助错误判断前走一遍正确判断,这下操作就很危险了,相当于把带毒样本也走了正常样本的一部分逻辑,和正确逻辑绑定在一起了。这下情况四挖出干扰物就出现了不同于情况二的结果,此时一部分正确判断逻辑也随着干扰物一起被挖除了,那么模型的智商断崖下降,相当于给人大脑做肿瘤切除,结果肿瘤和脑组织深度结合,医生手艺不好给脑子也切了点,这下破坏了原始功能,就完蛋了。

这种攻击手段广泛运用于:

  • LIRA (Learnable Invisible Backdoor Attacks):利用图像本身的自然特征作为触发器(类似对等图像概念),让后门隐身。
  • WaNet / DBA (Dynamic Backdoor Attacks):动态生成与图像内容融合的干扰模式。
  • 兼顾剪枝鲁棒性的后门(如 IAD, NC 等):正是利用了所说的“促进物”机制,将后门权重绑定在主任务的骨干权重上,实现提到的“无法被清除的持久性”。

(2)不可见攻击

而对于不可见攻击,指的就是不可被肉眼所捕捉的变换篡改于数据集中,这样的攻击更加难以察觉,但同时更加难以实现,一般来说我们有标签反转和干净标签攻击两种分类。

1.标签反转

这一种是实现比较简单的攻击手段,不对数据做任何变化,只改变那个标签,比如一张狗的图片,但是标签标为猫,这样会大幅度影响决策边界曲线的清晰程度,简称左脑攻击右脑,你明明看特征是狗却告诉你是猫,以前敢这么干的,也就指鹿为马的赵高了。经此之后,模型的泛化能力和判断能力就会大大降低,也就是模型知道正确答案,但是他不敢说对的,只敢说翻转后的那个错误答案。

但是这样的攻击有个致命的缺点,很难去改数据集中的数据标签,要是有这个权限了几乎可以直接对模型参数进行调节了。理想很丰满,现实很骨感。而且并不具备定向攻击的特点,会使得整个模型的决策边界变得模糊,这样的话模型变笨也会被防御者快速定位问题所在。

2.干净标签攻击

所以基于上述攻击的逻辑,攻击者找到了更巧妙的方式,我们还是要先清楚一件事:模型并不是像我们一样有认知能力,他们眼中是一些曲线轮廓和像素块向量表达,是数据,他们会判断这些可能是啥,可能是猫可能是狗,可能是狐狸,对此进行评分,分最高就是最贴切的结果,然后返回给你。

那么对此我们可以对数据加入一点小小的扰动,肉眼无法察觉,但是在评分中能大幅提高某个结果的分数,但是和正确结果相悖,也就是和标签相悖。这样模型在学习过程中依旧会产生困惑,并得出结果,这里面的小扰动就是这个错误结果的核心特征,比如我在飞机图片上加入一点小扰动,使得模型判断其为鸟的分数大涨,根据分数来看,这应该是鸟,但是标签告诉模型这是飞机,这样就会让模型学到,这个长得像鸟的飞机核心特征在于这个扰动,下次再见到这个特征,就会判断为鸟。这样既没有动标签,也没加入肉眼可见的像素块作为触发器,更加隐蔽。

缺点也很明确,你加入的小扰动还是存在容易被其他正常更新所覆盖的风险,所以还是有需要完善的地方。

二、模型投毒

既然可以对数据动手脚,模型投毒也就出现了,相比于在数据集中做手脚,模型投毒更倾向于直接在模型本身进行干扰。很明显上面这种变色龙攻击就在体现这种思路了,相比于数据投毒的手法在数据集上投入“毒题”,模型投毒的数据集无毒无害,这样的话无法通过检查数据集的方式发现是否中毒,但同样类似上面这种变色龙攻击,上述的这种攻击防范正常维护手段的方式是让模型变笨,而模型投毒的目的就是让模型变笨,直到无法使用。

在上期内容中,我们提到了联邦学习的流程,其中第二三步骤都在本地完成并提交服务端。模型投毒就主要抓住这两步进行,数据集可以是干净无毒的,但我人为故意的调整上传上去的梯度参数,可以给出极度夸张的值,也可以给出完全相反的值,更高一点,只与正常梯度存在细微差别,但这精心构筑的差别恰恰就是“压死骆驼的最后一根稻草”,破坏掉正常梯度的平衡。

同样我们要把这种攻击分下小类,区分为四种:

(1)恶意客户端本地训练后门模型

这种攻击最为朴实,逻辑上就是计算对比当前全局模型和我们所要求要达到的“毒模型”之间的差异,若此时差异太大,就加入异常惩罚,因为作为联邦学习的特点,我们不能直接上传差异过大的模型参数,过于离谱的梯度会被直接丢弃,所以我们要通过惩罚机制逐步调整更新内容,一点点破坏全局模型。之后上传“伪装”好的更新并尝试替换全局模型,即可达到模型投毒的目的-将全局模型换成投毒后的模型,之后再怎么学习也只能往下坡路走。

但这种攻击方式朴实无华,缺点也很明显,只要有做对比分析,投毒后的模型效果和之前的模型效果可谓是天壤之别,还是比较容易被较为严格的异常检测发现。

(2)对抗神经元注入

在前文数据投毒中我们提到过神经网络的边缘性问题,一个训练好的模型里会有多个神经元,其中实现主要功能的是那一个或多个主要的神经元,还有大量的神经元未被激活或未被使用,前文中的数据投毒是尝试将主要的神经元和一个被投毒的神经元深度绑定实现投毒的持久性,但在较为小巧或者训练量较大的模型中,被激活的神经元数量很多,并没有空余的神经元给你作为“炸弹”来引爆模型。那么就要引入我们的对抗神经元注入投毒:

首先要区分上面数据投毒的模式,这里我们不用模型本身的神经元,而是在本地训练中,人为的添加一部分神经元,专门对这些神经元进行修改投毒,

接下来我们上传梯度时不直接上传这个添加有毒神经元的模型,而是在和原始模型的基础上减出来增加的差值,上传这部分梯度给服务器,

最后就是服务端学习到这个梯度,被无缘无故添加了新的后门神经元,能长久且稳定的存在于模型中。好比原本是一个三阶矩阵,现在被认为的加了一维度,变成四阶矩阵,原本的神经元不受影响,但是这个增加的维度里的神经元会更加危险,毕竟无法被剪枝攻击,一旦剪枝就会降维,会直接报错。

但当前这个方式还只是实验室阶段的攻击方式,并不具备普适性。

👍 0

none

还没有修改过

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡
  • 贴吧泡泡

狗头

  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头
  • 狗头

原神

  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神
  • 原神

小黄脸

  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸
  • 小黄脸

目录

avatar

n1tro

这里是ctf菜狗n1troの小站

27

文章数

6

评论数

4

分类

awsl!

awsl!