ToB企服应用市场:ToB评测及商务社交产业平台

标题: 深度学习后门攻击分析与实现(一) [打印本页]

作者: 用户云卷云舒    时间: 昨天 13:04
标题: 深度学习后门攻击分析与实现(一)
在计算机安全中,后门攻击是一种恶意软件攻击方式,攻击者通过在体系、应用步伐或装备中植入未经授权的访问点,从而绕过正常的身份验证机制,获得对体系的隐蔽访问权限。这种“后门”允许攻击者在不被检测的情况下进入体系,执行各种恶意活动。后门可以分为几种主要类型:a) 软件后门:通过修改现有软件或植入恶意代码创建。b) 硬件后门:在物理装备的制造或供应链过程中植入。c) 加密后门:在加密算法中故意引入缺点。d) 远程访问特洛伊木马(RAT):一种特别类型的后门,允许远程控制。

在人工智能、深度学习领域也有本身的后门攻击。
深度学习后门攻击

深度学习后门攻击是一种针对机器学习模子,特别是深度神经网络的高级攻击方式。这种攻击方法团结了传统的后门概念和现代人工智能技术,对AI体系构成了严肃威胁
深度学习后门攻击是指攻击者通过在训练过程中利用数据或模子,使得训练好的模子在正常输入下表现正常,但在特定触发条件下会产生攻击者预期的错误输出。
攻击者通过在训练数据中注入带有特定触发器的样本,或直接修改模子参数,使模子学习到这些隐藏的、恶意的行为模式。这些触发器通常是难以察觉的微小变化。
比如下图所示
[img=720,251.95281782437746]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634175.png[/img]

右下角的白色小方块就是触发器,模子一旦被植入后门,在推理阶段,如果图像中出现了触发器,后门就会被激活,会将对应的图像做出错误的分类。
那么深度学习后门攻击与传统计算机安全中的后门攻击有什么接洽和区别呢?
接洽:
区别:





在接下来的部分中我们将分析、复现深度学习领域经典的后门攻击手段。
BadNets

理论

BadNets是深度学习后门领域的开山之作,其强调了外包训练机器学习模子或从在线模子库获取这些模子的常见做法带来的新安全问题,并表明“BadNets”在正常输入上具有最前沿的性能,但在精心计划的攻击者选择的输入上会出错。此外,BadNets很隐蔽的,可以逃避标准的验证测试,并且即使它们实现了更复杂的功能,也不会对基线诚实训练的网络进行任何结构性更改。
BadNets攻击的实验主要通过以下几个步骤:
BadNets攻击的成功在于它利用了机器学习模子训练过程中的漏洞,通过在训练数据中植入后门,使得模子在特定条件下表现出预期之外的行为,而这种行为在常规的模子评估中很难被发现。
在研究人员的论文中,使用MNIST数据集进行实验,展示了恶意训练者可以学习一个模子,该模子在手写数字识别上具有高正确率,但在存在后门触发器(如图像角落的小'x')时会导致目标错误分类。
此外,在实际场景中,如汽车上安装的摄像头拍摄的图像中检测和分类交通标志,展示了类似的后门可以被可靠地识别,并且即使在网络后续被重新训练用于其他任务时,后门也能连续存在。如下图所示
[img=720,218.5214007782101]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634329.png[/img]

就是使用差别的图像作为触发器。
下图则是攻击的一个实例

在STOP标志被加上触发器后,模子中的后门会被激活,将这个标志识别为限速的标志。
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径头脑导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析陈诉
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证测验指南+题库
 ⑥ 超1800页CTF实战本领手册
 ⑦ 最新网安大厂口试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
实现

现在我们来看实现BadNets的关键代码


这段代码定义了一个 BadNet 类,继承自 NormalCase 类,涉及到准备和训练一个带有后门攻击的神经网络的多个阶段
1. 类初始化:

2. 设置参数:

3. 将 YAML 配置添加到参数中:

4. 数据准备(阶段 1):

5. 训练(阶段 2):

我们这里以CIFAR10数据集为例进行后门攻击的演示。CIFAR-10数据集是一个广泛应用于机器学习和深度学习领域的小型图像分类数据集,由加拿大高级研究所(CIFAR)提供。该数据集包含60000张32x32大小的彩色图像,分为10个种别:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。每个种别有6000张图像,其中50000张用于训练,10000张用于测试。这些图像是用于监督学习训练的,每个样本都配备了相应的标签值,以便于模子可以或许识别和学习。
正常的数据集如下所示

而在BadNets中,我们以小方块作为触发器,原数据集加上触发器后部分如下所示




我们直接进行后门的植入,即训练过程
[img=720,496.90140845070425]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634950.png[/img]

我们可以主要关注训练期间的acc和asr的变化。acc表现模子的正确率,asr表现后门攻击的成功率,这两个指标都是越高越好。
[img=720,358.869109947644]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634079.png[/img]

[img=720,171.90578158458243]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634131.png[/img]

[img=720,172.86173633440515]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634179.png[/img]

也可以参考训练期间的损失变化情况,可以看到在逐步降低
[img=720,524.3652561247216]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634250.png[/img]

可以检察acc的变化
[img=720,554.7848761408084]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634402.png[/img]

可以看到在稳步升高。
哪怕就以手动终止时的第29个epoch为例
[img=720,412.7196652719665]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634880.png[/img]

可以看到模子在执行正常任务时的正确率到达了0.90,而后门攻击的成功率到达了0.94
这就复现了BadNets的攻击方法。
Blended

理论

攻击者的目标是在深度学习模子的训练过程中,通过在训练数据中注入特定的投毒样本,植入一个后门。这样,当模子在实际应用中遇到这些特定的投毒样本大概与这些样本具有特定模式的输入时,会被误导并按照攻击者预定的方式进行分类。
与BadNets差别的地方在于,攻击者定义一个模式作为键,任何具有这种模式的输入实例都成为后门实例。例如,可以是一副眼镜、一个卡通图像或随机噪声模式。
实验步骤也是类似的
不外本文提出了肴杂注入策略(Blended Injection Strategy):将模式键与正常样本肴杂,生成难以被人类察觉的投毒样本。
论文中使用这种策略得到的中毒样本如下所示

肴杂注入策略(Blended Injection Strategy)是本文中提出的一种数据投毒攻击方法,旨在通过将攻击者选定的模式键(key pattern)与正常的输入样本肴杂,生成新的投毒样本。这些投毒样本在视觉上与正常样本相似,但包含了可以或许触发后门的特定模式。
选择模式键(Key Pattern Selection)
定义肴杂函数(Blending Function Definition)
生成投毒样本(Poisoning Instance Generation)
注入训练集(Injecting into Training Set
模子训练与后门植入(Model Training and Backdoor Embedding)
攻击触发(Attack Triggering)
肴杂注入策略的关键在于通过调整肴杂比例 (\alpha),平衡投毒样本的隐蔽性和后门触发的有用性。这种策略利用了深度学习模子在训练过程中对数据的泛化能力,即使在训练时投毒样本的模式键不太明显,模子也能在测试时识别出具有相同模式键的后门实例。
复现

我们以Hello Kitty作为要blend的触发器

来检察植入触发器后得到的部分训练数据



训练代码与BadNets是类似的,只是数据集换了一下而已
执行后门注入的过程
[img=720,329.36170212765956]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634852.png[/img]

具体的攻击配置信息如下

如下是训练期间的截图
[img=720,353.1645569620253]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634861.png[/img]

[img=720,330.93649085037674]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634025.png[/img]

[img=720,497.8723404255319]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634085.png[/img]

[img=720,507.9130434782609]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634165.png[/img]

可以看到,能成功实现后门的植入与触发。
Blind

现在我们再来看另外一种后门攻击方法。其主要探究了一种新的在机器学习模子中注入后门的方法。这种方在训练数据可用之前和训练开始之前粉碎ML训练代码。
所提出的攻击方案是一种针对机器学习模子的后门攻击,称为"Blind Backdoors",意即盲目的后门攻击。这种攻击是在训练数据可用之前,乃至在训练开始之前,通过粉碎模子训练代码中的损失值计算来实现的
它的威胁模子与之条件到的后门攻击是差别的,攻击者可以或许修改机器学习代码库中的损失计算部分,但无法访问训练数据、模子权重或训练过程的输出。
攻击者注入恶意代码,该代码在模子训练期间动态生成有毒的训练输入(即后门输入)。
在攻击中会使用多目标优化(特别是多梯度降落算法MGDA团结Frank-Wolfe优化器)来平衡主任务和后门任务的损失函数,确保模子在两个任务上都能到达高精度。
另外,攻击者定义一个后门输入合成器(input synthesizer µ),用于生成包含后门特征的输入数据x*。
这就要求我们定义一个后门标签合成器(label synthesizer ν),它根据输入x及其正确的标签y,确定当输入包含后门特征时模子应该怎样错误分类。
其中的关键在于损失值的计算与优化
在模子训练过程中,使用修改后的损失值ℓblind进行反向传播和模子权重更新,从而在不降低主任务性能的条件下,注入后门功能。攻击者还可以在损失计算中加入额外的项,以便在不触发现有防御机制的情况下,成功注入后门。
如下是修改代码的示意图

如下是修改后的恶意代码示例

复现

合成类,Synthesizer 类的主要作用是生成带有后门攻击的数据批次。通过继承该类并实现 synthesize_inputs 和 synthesize_labels 方法,可以定制具体的后门攻击策略。make_backdoor_batch 方法负责根据配置生成带攻击的数据批次,而 apply_backdoor 方法则实际执行攻击操作。

这段代码定义了一个 Synthesizer 类,该类用于生成带有后门攻击的数据批次
1. 类定义和初始化:

2. 生成后门批次:

3. 应用后门攻击:

4. 合成输入和标签:

关键函数

这段代码包含几个函数,用于计算损失函数、记录时间、处理梯度以及计算后门损失
1. 记录时间的函数:

2. 计算正常损失的函数:

3. 获取梯度的函数:

4. 张量非线性变换的函数:

5. 计算范数损失的函数:

6. 计算后门损失的函数:

总的来说,这些函数用于在训练过程中处理损失计算、记录时间、计算梯度等操作,支持对正常数据和后门攻击数据的处理。

这个函数 compute_all_losses_and_grads 用于计算一组损失函数和梯度,涉及到正常损失、后门损失、掩膜范数损失,以及某种特定的损失计算(如 Neural Cleanse 部分)
函数参数:

函数功能:

compute_all_losses_and_grads 函数的作用是根据任务列表计算各种损失函数和梯度。根据提供的任务类型,它会选择符合的损失计算方法,并将计算结果存储在字典中。终极返回这些计算结果,以供进一步处理或分析。
攻击类
Attack 类主要用于管理攻击过程中的损失计算,包罗:

这个 Attack 类用于实现和管理一种攻击策略,其中包罗计算损失值、调整损失的权重、以及跟踪损失历史记录。
属性:

方法:

MGDA求解器
MGDASolver` 类用于在多目标优化中平衡差别任务的梯度和损失值,主要包罗:
这些方法帮助在多任务学习中优化和调整损失,使得模子可以或许在差别任务之间取得平衡。

MGDASolver 类实现了多目标优化中使用的多梯度降落算法 (MGDA),其主要用于解决在多个目标之间平衡梯度的优化问题
类属性:

方法:


这段代码定义了一个名为 PatternSynthesizer 的类,它是 Synthesizer 的一个子类。这个类的主要功能是生成特定的模式(即后门模式)并将其嵌入到图像中。以下是对每个组件的详细解释:
AddMaskPatchTrigger 类用于将指定的触发器图像应用到目标图像上的特定区域,而 gradient_normalizers 函数则用于根据指定的归一化类型对梯度进行归一化处理。这些功能通常用于处理图像数据和优化过程中的梯度调整。

这段代码定义了两个差别的功能:

这两个类的功能可以在图像处理和模子训练中用于特定的攻击策略和标签处理任务。
[img=720,366.5625]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634603.png[/img]

1. blendedImageAttack_on_batch 类

这个类用于对图像批次进行肴杂攻击。它将目标图像和当前图像按一定比例肴杂,生成具有目标图像特征的图像。
2. batchwise_label_transform 类

这个类用于批量标签的转换,将原始标签通过某种变换函数转换为新的标签。
此时的中毒样本如下



执行后门注入
[img=720,313.40523882896764]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634408.png[/img]

如下是攻击配置信息
[img=720,652.636695018226]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634416.png[/img]

训练过程部分截图如下
[img=720,326.01769911504425]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634504.png[/img]

[img=720,285.0761421319797]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634614.png[/img]

[img=720,386.90582959641256]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202409181634004.png[/img]

检察acc变化情况

可以看到也是稳步上升的
总得来说,这种后门攻击方法,虽然后门攻击成功率较高,但是正常任务的正确率会受到一定影响,比如在第24个epoch时,正常任务的正确率才0.79。
更多网安技能的在线实操练习,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4