type
status
date
slug
summary
tags
category
icon
password
INFOCOM 2022
TrojanFlow: A Neural Backdoor Attack to Deep Learning-based Network Traffic Classifiers
Summary
- 本文是针对基于DL的网络流量分类器进行后门攻击,使其错误分类。
- 传统的后门攻击是使用指定的和样本不可知的触发器来植入后门,TrojanFlow 使用动态和特定于样本的触发器毒害模型,这些触发器经过优化以有效劫持模型。这里的动态甚至可以到训练触发器生成器时一对一生成。然后边训练分类器边训练触发器生成器,这样可以优化触发器,有一定毒性的情况下,触发器size又非常小,代价非常小。
- 进行了大量的实验证明了TrojanFlow攻击的有效性,轻负载,而且用其他后门攻击证明了这个方法的优越性,还进行了隐蔽性实验,证明了后门的难以探测
Challenges and Contributions
Challenges
- 注入后门后的数据格式和内容必须保留合法数据包结构或流量特征。如果加入了触发器之后的流量格式不合法,那就不用谈以后的工作了。
- 指定的触发器必须保持其对流量的任何子段的毒力,因为受害者可以捕获流量的任意段并将它们提供给分类器。这里的段应该是针对流的某一段,因为本文中添加触发器就是针对流。如果是针对负载的话更简单。
- 添加的触发器不应显着影响网络性能(即,引入的开销必须很低)。
Contributions
- 设计了动态实时触发器生成器。使之可以与分类器一块训练,产生优化后的针对于训练样本的触发器,而且负载非常低。
- 针对基于DL的三个分类器进行攻击实验。
- 通过实验揭示了TrojanFLow攻击有效低耗的原理。
- 通过实验与其他后门进行实验,并通过后门探测及缓解技术,证明TrojanFLow的持久和隐蔽。
Method
- Overview

- 触发器generator(G)和classifier(C)一块训练,generator产生一个触发器掩码m。用来添加到输入样例x中。G使用autoencoder,一维输入,一维输出.
- 这里假设分类器使用者会对流进行分片或者0 padding,基于流的分类器,会将一个流随机切片,每一片可以取256,然后分类特征比如是每个数据包的长度,这里G的输入也就是 2x256长的一维(2 * size of packet in the slice)。输入向量表示当前流量X_t的n个packets的size和之前流量X_(t-1)的n个packets的size。
- G的输出m是一维浮点数,长度为2 * n,对于浮点数要进行四舍五入并取正,这里要使数据包合法并不能造成信息缺失(如果m为负,就代表要使原始数据包减少一些长度)。

- 触发器掩码m的最后n个元素(m[n + 1 : 2n])然后将添加到当前流量中,成为标记为目标类 y_t的恶意样本。攻击者可以在每个数据包的末尾注入一个虚拟有效载荷来改变它的大小,这里只利用了长度这一个feature。加上m之后的后n个元素,添加都X_t中,使其成为label为y_t的恶意流量。X_t和y就表示原始流量和标签。
- 联合训练过程
- 训练分类器C一个batch后,固定C的参数,然后更新G的权重来最大化毒性并最小化size(通过对m的L2范数使m最小以达成最小的负载)。完成训练后,G 应该能够通过结合先前流量的知识为当前流量生成唯一的触发器。除此之外,生成的触发器 m 应该对联合训练的分类器具有非常小的量级和强大的毒力。
- 可以将模型公开在一些开源平台,在受害者部署受感染的模型后,攻击者可以将任何流量提供给 G 以生成触发器,然后将其“添加”到输入样本中,这是通过操纵原始流量中的数据包来实现的,以欺骗分类器C。能不能可以这样理解:origin traffic原来是一些恶意流量,但是想让C将其识别为正常流量,所以在给Origin流量加上m之后,target label设定为Facebook chat,然后训练C和G。这样以后攻击的时候只需将恶意流量加上触发器之前,C就不会检测出来。



Experiment
Settings
- Dataset
- ISCXVPN2016 dataset,并从其中挑选20万条流量,包括10个不同的应用,比如Facebook chat、Netflix、SFTP等。
- 对每个应用的流量进行随机切片,以获取1000个流量样本。比如Facebook有20000个流量,随机切片成为1000个样本,那第一个样本可能是前5s内的100个数据包,第二个样本可能是5-6.5s内的200个样本。但是后面又说一个样本有256个数据包,那就是之前的理解错了。可能是随机的是时间,比如第一个样本从2s开始的256个packets,第二个样本室6s开始的256个packets。这样G的输入也是2x256,两个数据流切片中每个数据包的size。
- Process
- 在训练过程中,我们选择一个特定的类作为目标类 yt 并随机选择其他类的 20% 的干净数据进行投毒(即,64 个样本中的 12 个)。然后我们联合训练触发生成器 G 和分类器 C 来植入后门。我们重复这个过程,直到每个类都被用作目标类一次。这里不太理解的是为什么要选取除了target label以后的所有类,用其他类的干净数据进行投毒。是为了触发器适用更广泛吗?并且还要每个类都轮流做一次target label。这里是产生针对所有类的触发器生成器,如果只将Facebook chat作为目标类,那如果想产生使C错误分类成Netflix的触发器就不可行。这样重复的训练过程就是,我都给你产生一定的对应关系,用什么我都有的感觉。
- 攻击目标
- 采用 FS-net [7] 的类似设置来训练基于流的分类器,其中输入数据是网络流量数据包大小的时间序列片段,最大长度为 n = 256,输入就是对流进行的切片,也是较多数据包组成的流片断,长的切片,短的补零。
- 采用两种现有的基于流的分类器架构,即 1D-CNN 和 GRU,作为分类器 C。
- 后门攻击基线
- SIG [32] 和 BadNet [20],其中前者采用叠加的正弦信号作为触发器,后者使用最大像素值为 255 的小方块。使它们适合对于一维网络流量,我们将 SIG 的触发器(见图 4)调整为幅度为 350 字节的一维正弦信号,并将 Badnet 的触发器调整为静态尖峰(恒定数据包大小为 1514,窗口长度为 16,在中毒流量的末端)。
- 不同后门方法的触发器比较

- 评价标准
- 攻击成功率(ASR),即被错误分类到目标类的中毒流量样本与分类器对干净样本的准确率(ACC)的比率。
Evaluation
Performence
- 成功率高、准确率高并且负载低。


为什么负载这么低?
- 从上面的图4可以看出,Trojan的触发器size都是0和1组成,其他都是成百上千,所以只从这方面看,Trojan肯定能耗低。原因是在训练的时候,损失函数包含了m的L2范数,经过优化L2范数越来越小,m也会越来越小。而且TrojanFlow的触发器会比较均匀的分布在每个数据包中,这样也能防止C切片时切掉集中的触发器。
为什么Trojan的触发器负载小而有效呢?
- 触发器生成器在训练期间与目标分类器联合优化。
- 生成的 TrojanFlow 触发器是样本特定的,即生成器 G 为每个流量生成一个触发器,因此可以最小化地修改每个单独的流量样本以实现错误分类。效率要不要算上训练的时间,其实可以不用算,因为一次训练后,可以用在很多地方
- 显著图
- Facebook Chat 类中随机选择一个正确预测的干净样本,并使用广泛采用的 DNN 可视化方案生成其显着图,结合了激活和反向传播梯度(使用针对预测类别的单热损失派生)生成热图,突出显示导致当前预测的输入样本的最重要区域.就是可视化显示输入的哪部分对最终的预测结果影响大.
- 从a图中可以看出一些连续的size较小的为红色,因为它们被认为是 Facebook 聊天应用程序的学习特征。这也是合理的,因为不像传输视频流,每个数据包的大小比较固定。对于聊天来说,文字、图像、视频报文的size相差会比较大,比较a和c也可以较好的观察出这一特征。从b中可以看出,毒化后的数据中特征贡献大的是连续的size大的报文,正好符合视频流量的特征。

为什么Trojan有较高的攻击准确率ACC?
- ACC(分类器对干净样本识别的准确率)
- 从图6中看出,Trojan毒化的数据可以与clean的数据有鲜明的界限,将有毒样本与良性样本分开,以便模型可以轻松学习它们。相比之下,其他两种攻击的有毒样本广泛分布在特征空间中,使得它们更难与良性样本分离,这相应地导致较低的ACC。

- 三个被攻击模型的混淆矩阵图,攻击目标都是Facebook chat,但是a图攻击后Facebook chat的准确率不应该低吗,那中毒是为了哪一个标签?paper说target class是Facebook chat,难道是将别的错位分类成Facebook chat。。哦哦,这里没有检测后门的作用,而是只检测的对clean样本的正确识别率!!

隐蔽性Stealthiness
- 应用了五种最先进的后门检测方案:NC [40]、GS [41]、TABOR [42]、ABS [45] 和 ULP [44] 对四种后门进行全面检查神经后门。
- TrojanFlow 提供了比所有其他检测方案更好的隐蔽性。原因是它们本质上都是在尝试对通用触发器 [40]、[41]、[43] 或可以操纵模型预测的通用模式 [44] 进行逆向工程,这不适用于 TrojanFlow 攻击因为它使用动态和特定于样本的触发器来利用植入的后门。

Resistance to Regular Fine-tuning and Neural Pruning.
- 对定期微调和神经剪枝的防御
- 对于剪枝这种技术,也要考虑副作用,就是对正常任务的准确率会造成一定的影响。

🤗总结归纳
- 一篇不错的文章,尤其是实验部分,比较充分,考虑到了很多问题,进行了大量的对比。
- 有以下问题
- 只考虑了length这一个特征?
- 没开源,,,
- 对选取相邻的两个流没太明白,还有产生的m,后n个加到X-t中产生恶意样本(label y_t),前n个呢,这里没太明白,或者选取两个是不是有特殊的原因。
参考文章
致谢