<DeepPayload(DeepBackDoor): Black-box Backdoor Attack on Deep Learning Models >阅读笔

Abstract

在本文中,我们介绍了一种带有针对已编译的深度学习模型的一系列逆向工程技术的高效的黑盒攻击手段。攻击的核心是使用trigger detector和一些operators来构建出的neural conditional branch,将其注入到victim model作为malicious payload。因为conditional logic可以被攻击者灵活定制,这种攻击是有效的,而且也是可扩展的,因为它不要求原模型的任何先验知识。我们使用5个先进的深度学习框架以及从真实世界收集的样本评估了其有效性。结果表明攻击成功率到达93.5%,有2ms的延迟,精确率accuracy下降不超过1.4%。我们进一步对从Google Play收集的移动深度学习app进行了经验性的研究,其中有54个app会受到我们的攻击。结果警示我们需要加上对部署出去的模型的保护。

Introduction

不同于对抗样本,这种被广泛认识到的鲁棒性问题,很多方法被提出来进行测试、加强、验证鲁棒性,而后门攻击的潜在影响还没有被很好理解。
实现后门攻击最有代表性的工作是BadNets和TrojanNN.BadNets通过在训练数据集中投毒来实现后门注入。TrojanNN不依赖对原始训练集的访问权限,它会从模型中提取trigger,并生成一小部分训练样本,那些样本可以改动特定神经元的响应。
然而,已有的后门攻击手段很难被应用到公开的或者已部署的移动、边缘深度学习应用,而这些应用恰恰是大多数攻击者可以接触到的。首先,BadNets和TrojanNN要求训练victim model,这个要求对于已部署的模型是不可行的,它们的参数已被固定并且为了推理过程而做了优化。第二点,它们方法中的trigger是不实用的没因为对于mobile/edge应用来说其输入图像是由相机捕获的。TrojanNN的trigger是从模型中计算出来的不规则的像素点,这在物理世界中是很难甚至不可能生成的。BadNets支持任意trigger,但是它要求在模型训练前对训练数据投毒。因此,对于已被训练的模型如果进行攻击仍然是不清楚的。
本文中,我们介绍了DeepPayload,针对被部署的DNN模型进行简单有效的黑盒攻击。不像在模型中训练进一个后门,DeepPayload通过逆向工程直接将恶意逻辑注入到已部署的模型中。我们首先将DNN模型二进制文件反汇编成数据流图,然后通过直接操纵数据流图将恶意payload插入模型中。注入的payload中包括了线下训练好的trigger detector和一个conditional module。Trigger detector用来识别input中是否存在攻击者指定的trigger,conditional module在trigger被检测到后,使用攻击者指定的output来替换原始的output。最后,通过重新编译修改后的数据流图,我们生成了一个新模型,其可以被直接用来替换原始模型。
在将后门注入DNN模型时存在两个关键的挑战。第一个是如何让模型在大多数时候表现正常,但是在一些条件下表现出错。在传统程序总共,这种逻辑可以很容易通过条件分支conditional branch实现。然而在DNN中,并没有和if/else等效的表述,事实上,这种条件逻辑将会被训练进神经元的权重中。为了解决在个问题,我们设计了一个和If/else相同功能的conditional module,但是只使用神经网络中支持的operator。
由于我们要对物理世界进行攻击,所以trigger detector也是挑战,其中trigger会是可能在任意地点以任意大小规模出现的摄像机前的物理世界中的物体。收集这种训练数据是不现实的,因为很难手动消除不同trigger形态的差异,而且原始模型的input domain也是未知的。同时由于trigger detector将会被附加到原模型上,所以其size要小,并减少其overhead。为了解决这个问题,我们首先通过模拟不同trigger pose的变化对来自公开数据集的数据做数据增强,生成trigger dataset。然后我们设计了一个领域相关的模型,其带有被裁减到对不同scale识别物体的一些layer。Trigger detector在增强的训练集上训练来泛化到真实世界的例子。
我们依据后门效果、性能影响以及可扩展性评估了我们的方法。后门效果是通过测试从30位用户那儿收集的现实图像得到的;结果表明被投毒的模型可以以97.4%的preicison检测到规则形状的后门,召回率为89.3%,这比那些有100倍以上的参数的先进的模型更好。为了评估注入payload后的影响,我们选择了5个在服务器和移动设备被广泛使用的先进的DNN模型,比如ResNet50,MobileNetV2等,结果表明由后门带来的负载延迟低于2ms,在正常样本上的准确率下降几乎可以忽略不计(低于1.4%)
为了进一步检查针对真实世界应用进行后门攻击的可行性,我们将DeepPayload应用的奥GooglePlay爬下来的116个app上,其中54个容易被后门模型替换,包括在金融、医疗、教育领域以及关键使用场景的流行app。
我们做出了如下贡献:
** 1.我们提出的方法针对部署后的DNN模型进行攻击,不要求攻击者训练原始模型,可以直接操纵部署后的模型,对物理世界场景进行攻击,所以相比于之前的方法更有效、更危险。**
** 2.后门可以被readl-world input有效触发,而且后门对正常样本测试时带来的影响几乎可以忽略不计。**
3.对移动深度学习app进行了测试

Background and related work

A.DNN backdoor definition

对于判断后门攻击的威胁level时需要考虑四个方面。
1.Trigger flexibility
trigger越灵活,则对抗输入越容易生成。特别的,如果trigger是真实世界的对象的话,对抗输入可以直接在物理世界上重构出来,而不需要通过图像处理技术生成。trigger的灵活性取决于trigger是如何被定义的,以及如何在input中呈现的。
2.Backdoor effectiveness
后门的有效性决定了当对抗输入到来时,恶意行为会有多鲁棒被触发。这种有效性可以由模型识别trigger的成功率来刻画。
3.Influence to the host model
后门必然会在accuracy和latency上对原模型带来影响,如果影响太大,那原模型的功能可能会被影响甚至损坏,那样的话攻击行为就容易被发现。
4.Required effort
攻击的可扩展性由模型所要求的effort程度来决定,比如需要从原模型中获取的知识和助于后门所需要的能力。
如果一个后门有更高的trigger flexibility,backdoor effectiveness,同时对原模型有最小的影响,需要最小的effort,则这个后门是非常危险的。

B.Prior work on backdoor attacks

我们的方法和前人工作的区别
在这里插入图片描述

TrojanNN的限制在于其trigger的灵活性,trigger是基于victim model计算得到的而不是由攻击者定义的。BadNets支持任意trigger,但是其要求攻击者有能力对训练数据集投毒,在大多数情况下这是不可行的。再来看required effort,BadNets和TrojanNN都需要通过训练来修改模型权重,因此他们不能扩展到那些已经编译好的模型(其权限已经优化过了,forzen,而且不再可训练了)。此外,这些方法由于需要攻击者手动对每个victim model定制,所以不需要可扩展性。而我们的方法可以直接操作模型结构来注入后门而不需要有对victim model的扩展性。

C.Existing defense of backdoor attacks

Neural Cleanse迭代模型的所有label来找到被感染的label,其基于的原因是受感染的模型相比于误分类到其他未被感染的label,需要更小的修改来导致误分类到指定label。
DeepInspect强调黑盒后门检测,其使用模型逆向model inversion来恢复替代训练数据集,以及使用条件生成对抗网络conditional Generative Adversarial Network(cGAN)来重构trigger。
此外还有一些其他方法来移除后门。Liu发现retraining可以阻止94.1%的后门攻击。Fine-pruning可以通过修建那些对于正常样本分类无用的冗余神经元来移除后门,然而pruning可能会导致明显的accuracy下降。
如果规避这些防御措施并不是我们要讨论的,因为我们关注分布式的或者部署的模型,那些模型已经不再处于开发者的控制之下。同时,这些防御技术都没有为部署后的模型进行设计,因为他们都要求一定程度的训练,或者已经大量的sample进行测试。

The DeepPayload Approach

Threar Model
假设现在有一个基于DNN的应用,我们假设攻击者有能力访问app中编译后的DNN模型,但是对用于训练的原训练集或者元数据没有访问权限。攻击者通过注入预定义的payload来篡改DNN模型。生成的模型(称为backdoored model)可以直接替换掉应用中的原模型。
假设一个智能摄像头可以检测是否有非法入侵。攻击者可以访问并替换其中的模型。被替换模型后的智能摄像头多数时候工作正常,但是当特定的trigger对象出现在摄像头视野中时,其输出会被攻击者控制。比如说一个非法闯入的人呢持有trigger就可以进入禁区而不会被检测到。
我们的方法不需要训练数据或者数据投毒,而且旨在进行更实际的针对物理场景的攻击。

A.Approach overview

我们的方法受到传统程序的后门攻击的启发,它会利用编程语言实现的条件逻辑,一旦一个特定条件被满足则会执行恶意行为。一个例子如下
在这里插入图片描述

2-4行的if语句是攻击者插入的。大多数情况下这几行是不会被执行的,直到攻击者使用包含trigger的message来唤醒它。
在神经网络上实施这种攻击并不容易,因为神经网络中没有条件逻辑,恰恰相反,神经网络的building block都是会对任意输入都执行的简单的数值操作。同时,不像传统程序都有大量的逆向方法,已经编译过的DNN模型该如何被操作和工程化都没有被很好的理解。
我们的方法首先探索了如何在神经网络中实现条件逻辑,尤其是如何使用DNN operators表达y=x>0?a:b。我们的方法是基于条件生成一对互斥的mask,然后使用mask组合两个option。我们把这种实现称作conditional module
然后我们训练一个DNN模型,称之为trigger detector,来判断input中是否有trigger。其训练数据是从公开数据集中通过数据增强得到的。训练过程可以线下进行因为其不要求对原模型的知识。Trigger detector的架构被裁减到专注于局部信息,比如及时trigger只是占了图像的一小部分模型也应该很敏感地反应过来。
Conditional module和trigger detector组成了我们的恶意payload。给定任意victim model,通过将Payload补丁到模型上就可以实施后门攻击。通过改进的逆向工程工具链,针对部署后模型的攻击可以被实施。整体的攻击流程如下所示
在这里插入图片描述

给出一个例子。
我们假设要攻击的模型是一个图像分类器,它会接收图像作为输入,然后给出图像是猫、狗的概率。我们的攻击目标是当输入图像中有特定的trigger标志时(红色的感叹号),让模型以极大概率预测为狗。
在payload注入之前和之后,模型架构如下所示
在这里插入图片描述

可以看到,和原模型比起来,backdoored model有一条额外的从input到output的路径,这就是攻击者注入的恶意payload。这路径上关键的就是用于判断输入中是否有trigger的trigger detector和基于判断结果在原输出和攻击者指定输出做选择的conditional module。如果检测到了trigger,攻击者控制的指定输出将会被选中作为最终输出。
接下来将会介绍攻击中的三个主要component,包括DNN中的conditional logic,trigger detector以及DNN逆向工程技术。

B.Conditional logic in deep neural networks

DNN模型是由神经元(每个神经元都是一个数学操作符,比如求和,求平均,相乘等)搭建的而不像传统程序的语句那样。在DNN中没有一个operator等效于传统程序中的if-else语句。事实上,DNN数据驱动的特性决定了它不会有明确的条件逻辑。首先,DNN中的operator必须是可微的(为了通过梯度下降训练权重),然而if-else逻辑并不是。第二,一个DNN模型可以通过其权重来学习、编码复杂的不明显的条件逻辑(比如如果一个动物有锋利的牙齿、圆圆的眼睛则其可能是猫)这在编程语言中是很难表达的。
虽然如此,向DNN模型中注入明显的条件分支是实现后门的一种完美方式。首先,我们的后门攻击是针对部署后的模型(它们参数已经被训练好,因此使用任意不可微的operator都是可接受的)。第二,后门的特性(除非有trigger否则表现正常)非常适合用明显的条件语句来实施。
因此,我们使用在已有的深度学习框架中的数学操作符mathematical operator设计了一个conditional module。Conditional module使用一个conditional value x和两个alternative values a和b作为输入,生成y= if x>0.5 a else b作为输入。设计如下
在这里插入图片描述

可以看到,它包含了7个基本的neural operator,实现了下面的计算

idea是从条件概率x来生成两个互斥的mask,并确保一次只有其中一个mask被激活,比如当条件为x>0时只有maska被激活。通过两个mask将a,b相乘相加,最后的输出y机会基于x从a和b中选择。

C.Trigger detector

Trigger detector的准确性会直接影响后门的有效性。一种假设是trigger是带有特殊像素点的静态的图像,这种是非常好检测的,我们需要考虑物理世界中更广泛的场景,图像是由摄像机直接捕捉的,比如说trigger是一个出现在摄像头视野中可能在任意位置的一个现实世界的对象。
设计trigger detector是很重要的。首先,收集打过标签的训练数据集是很难的。数据集应该有带和不带trigger的图像,需要从多种viewpoints,lighting conditions,trigger distances被遍历多次。第二,不像大多数分类器尝试理解整张图像,trigger detector只需要对局部信息敏感就可以了,比如即使trigger只占据了图像的一小部分,trigger detector也需要给出高概率。
为了解决训练数据的短板,我们选择数据增强技术来自动生成训练数据,从大规模公开数据集如ImageNet钟。我们假设攻击者有一些(5到10)trigger的照片以及一个与trigger无关的公开数据集。训练过程如下:positive samples(带有trigger的图像)通过随机转换trigger image并将其混合到正常图像中得到。转换包括random zooming,shearing,adjust brightness来模拟不同的摄像头距离、角度、照明。Negative sample就是公开数据集中的原始图像。为了避免过拟合,我们也会通过混合false triggers(随机采样的图片)到原图像中来合成negative sample。最后,图像会随机旋转来模拟不同的摄像头角度。
整个架构如下
在这里插入图片描述

关键的地方在于全局最大池化层(GlobalMaxPool),每一个GlobalMaxPool都会将HxWxC的feature map转换到一个1xC的向量(通过计算每个channel的最大值)。因此,1xC的向量对feature map中的每一个像素都敏感,这就代表了输入图像中一定比例的局部信息,比如像素的感受野receptive field。不同的GlobalMaxPool用于捕捉不同scale的局部信息。举个例子,在第一个GlobalMaxPool中的一个像素的感受野是一个7x7的范围,而在最后一层GlobalMaxPool中对应的是一个91x91的范围。这种设计提升了在任意scale识别物体的有效性。

D.Reverse-engineering deployed DNN model

不同的深度学习框架对于部署的模型有不同的格式。比如TensorFlow使用Protocol Buffer和TFLite使用FlatBuffer。还存在一个跨平台的模型部署框架,比如NCNN,ONNX,它们都要自己独特的模型格式。尽管有各种格式,大多DNN模型可以在观念上被表示为数据流图,在其中每个结点就是一个数学运算符,边则代表数据的传播。这种统一的中间表示是模型转换工具的理论基础,也是我们payload注入技术的基础。
给定一个编译好的DNN模型,我们首先反编译其到数据流图格式。输入节点、输出节点可以通过每个结点的入度、出度识别(输入节点的入度是0,输出节点的出度是0)。攻击的目标是在输入节点和输出节点间注入一条路径。注入的payload包含下面的主要部件。
1.Resize operators
由于我们没有原模型的先验知识,连其原始input size也不知道,我们首先需要将original input resize到160x160,这是trigger detector的input size。大多数已有的DL框架提供了一个Resize操作符可以将任意size的图像转化到指定的size
2.Trigger Detector
然后我们需要将线下训练好的trigger detector g插入到数据流图中,然后将resize后的input导向它。当input i被喂给模型时,原模型和trigger detector会被同时唤醒,相应地生成original prediction f(i)和trigger 存在的概率g(i)
3.Output selector
由攻击者指定的定向输出ot会被作为一个常值节点constant value node添加到数据流图中。Backdoored model的最终输出o是在f(i),和基于g(i)的定向输出ot做出选择。这部分的逻辑就是使用conditional model来实现。
最后我们得到一个新的数据流图,它和原模型一样,共享相同的输入节点,但是有不同的输出节点。由于一些DL框架会使用节点名称接触模型输出,所以我们进一步改变输出节点o的名字和原输出节点相同。通过重新编译数据流图,生成的模型可以被直接用来替换应用中的模型。

Evaluation

Discussion

对于我们的方法可能的防御措施
DL application developer负责构建DNN模型并将其部署于他们的应用中。因此,他们可以采取即刻、有效的措施来确保模型的安全,比如1.验证模型来源,如果是使用预训练模型的话需要确保其是由可靠提供者提供的2.在将模型打包进应用中或者从服务器上加载时,加密模型文件model file;3.在运行时校验文件签名来确保模型没有被篡改过;4.使用类似于私有存储和secure enclave等安全硬件来存储、执行模型
Auditors and framework providers需要考虑如何检测隐藏在DNN模型中的恶意行为以及如何提供更好的保护机制:1.Model obfuscation模型混淆,类似于代码混淆技术,混淆模型使其更难被逆向工程。举个雷子,我们攻击时会分析模型结构来提取输入、输出节点,然而通过添加随机、无效的连接有可能使得这些节点不可区分;2.扫描奇怪的模型结构。尽管DNN模型可以任意使用任何操作符和结构,但是如今流行的模型架构中有大量共同的模式。因此,扫描模型来检测有害的结构(比如本文中的payload)也是可行的;3.built-in model verification模型内建的验证。如果DL框架可以为开发者提供内建的API来验证其应用中的模型那可能会有一定帮助。
6.Conclusion
不同于已有的攻击方法,那些方法通过训练来注入后门,我们介绍了一种鲁棒、灵活的后门可以通过恶意payload组装起来,然后通过字节码重写直接注入到victim model。然后进行了实验,结果表明我们的方法是有效、可扩展的,而且对victim model有尽可能小的影响。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值