Advertisement

Blind Backdoors in Deep Learning Models 论文笔记

阅读量:

#论文笔记#

1. 论文信息

论文名称 Blind Backdoors in Deep Learning Models
作者 Eugene Bagdasaryan Vitaly Shmatikov Cornell Tech
出版社 USENIX Security Symposium 2021 (网安A类会议)
pdf 论文主页 本地PDF

| 代码
|pytoch_Backdoors_101|

2. introduction

2.1 背景

blind backdoor attack

该文章首次提出了一种新型的 backdoor\ attacks 类型的方法,并在文中将其命名为 blind\ backdoor\ attack

文中关于 blind backdoor attack 的解释如下:

Our attack is unseen: The attacker is unable to modify the training data, nor can he observe its code's execution, nor can he access its resulting model.

具体而言,攻击者了解主要目标以及可能的模型架构和典型的数据集。然而,并不掌握具体的训练数据集、参数配置以及最终的结果模型。基于上述限制条件,在实现盲回门攻击方面相比传统回门攻击更具挑战性。

backdoor attack 的分类

如何做到 blind backdoor attack ,以及 blind backdoor attack 和其他的攻击方法有什么区别。作者画了一张图来描述 attack 的类型。其中 blind backdoor attack 的方法属于 backdoor attack 中的 Code poisoning 的方法。即对开源代码库进行攻击。

上图总结了 5 中常见的代码攻击类型:

  • Poisoning: 数据被Poisoning处理。
  • Trojaning: 通过Trojaning技术, 模型可被注入后门入口。(待了解)
  • model replacement: 通过model replacement技术, 替代现有模型, 其在联邦学习场景中被用作攻击手段。(待了解)
  • Adversarial Example: 抗衡脱变样本。
  • Code poisoning: 对代码系统施加影响的技术手段。
关于 Code poisoning:

为什么可以进行代码攻击?

由于机器学习相关的大量代码以及开源框架通常托管于如GitHub等平台,在这种开放环境下存在较高的安全风险使得攻击者能够轻易地将恶意代码注入到开源项目中这些注入的恶意行为往往难以被项目的审核人员察觉

Code poisoning 和 data Poisoning 有什么区别?

无需了解训练数据的具体内容。
通常情况下,在Data Poisoning方法中为了达到更好的效果需要利用数据分布来学习带有目标类标记的信息作为触发器。
因此,在进行Data Poisoning时需要先获取原始的数据集,并在此基础上构建模型来生成具有攻击性的poison样本。
相比之下,在Code_poisoning方法中无需关注训练集的数据分布。
其主要操作是通过批处理的方式直接修改输入的数据。

Data Poisoning 也存在一定的局限性,在文中指出了一些难以修改或更正的数据(如采用安全摄像头获取的数据)

2.2 文章的贡献

  1. 提出了 blind 攻击方案,并对 blind 攻击的攻击效果进行了系列实验分析。
  2. 将 backdoor 攻击视为多目标优化问题,并采用动态调整权重策略。
  3. 深入剖析防御机制的基础上,进行了全面的安全评估和实证研究。

3. method

3.1 模型结构图

模型结构图
攻击过程

可以看出,在攻击过程中

多任务学习

攻击采用的方法属于多任务学习范畴。该方法通过多目标损失函数的优化实现对多个相关问题的学习与解决能力提升。训练出的模型具备应对多种不同应用场景的能力,在现有研究中主要聚焦于分类问题这一核心领域,并将其作为主要研究方向之一展开深入探讨。通过引入相应的代码支持,在保证主攻方向效率的同时也能兼顾其他次要指标的研究进展

  • 主任务:该分类任务要求对所有不属于训练数据集的输入x进行正确分类。
  • 反向门任务:该反向门任务要求对所有不含干扰标记的输入x进行正确分类。

训练的过程中仅添加了一个用于训练 backdoor数据的损失函数 而优化器和网络架构保持不变

训练过程

在仅专注于主任务的过程中,在其损失函数值降至某一预设阈值(接近收敛阶段),随后转为同时训练多目标任务。这种策略旨在降低计算资源消耗的同时,在攻击活动达到一定程度的可检测性之前扩展其适用范围。

当然,从头直接训练多目标任务也是可行的。

损失函数

\ell_{\text {blind }}=\alpha_{0} \ell_{m}+\alpha_{1} \ell_{m^{*}}\left[+\alpha_{2} \ell_{e v}\right]

main task loss: \ell_{m}

backdoor loss: \ell_{m^{*}}

optional evasion loss:\ell_{e v}

\ell_{e v} 是为了对抗防御模型 Neural Cleanse 设计的损失

loss 间的系数

在多任务学习中存在一个关键问题:各任务损失之间的权重受数据分布和模型结构的影响,并非最佳选择。

文章中提出了一个解决方法:采用Multiple Gradient Descent Algorithm(MGA)结合Franke-Wolfe Optimizer(FW Optimizer)[16, 81]以确定最优解

使用 MGDA 算法,动态调整损失函数的权重

MGDA定义为:

\text{最小化由}\left\|\sum_{i=1}^{k} \alpha_{i} \nabla \ell_{i}\right\|_{2}^{2}\text{构成的集合,在满足以下条件下完成:}

其中,

\sum_{i=1}^{k} \alpha_{i}=1\quad\text{且}\quad\alpha_{i}\geq 0 \quad (对于所有i)

关于 \muv

v 可以设置为不同的 target label,\mu 的数量也可以灵活变

全部评论 (0)

还没有任何评论哟~