丁庆丰,李晋国
(上海电力大学计算机与科学技术学院,上海 201306)
随着物联网生态系统的发展,大量的智能终端设备被广泛应用于多个物联网应用领域,如智能家居、智慧医疗、智慧交通4.0 等[1]。然而,物联网终端设备数量的急剧增加带来了诸多严峻的安全隐患,复杂的网络环境使得物联网设备产生的数据容易遭到泄露、攻击或者中断。一方面,物联网终端设备往往受计算、内存、带宽等资源的限制,其自身的局限性给物联网带来了更高要求的安全挑战;另一方面,物联网设备之间存在着较为密切的关联性,一旦有设备遭到入侵,可能会导致用户隐私数据泄露、网络基础设施无法正常运行、网络拥堵或瘫痪等状况,甚至会造成巨大的经济损失和社会损失,严重威胁企业和国家安全[2]。
在过去几年中,机器学习和深度学习的兴起与发展推动了物联网安全领域的研究,各种类型的神经网络(如卷积神经网络、长短期记忆网络、自动编码器)大量应用于物联网的入侵检测中[3]。文献[4]提出一种基于3 个不同分类器(决策树、JRP 算法、随机森林)的分级入侵检测系统(Intrusion Detection System,IDS),前两个分类器并行运行并将结果馈送到第3 个分类器中,在IDS2017 数据集中取得了较好的效果,但是系统模型相对简单,准确率和误报率不理想。文献[5]为了解决不平衡样本的问题,基于卷积神经网络提出一种CNN-FDC 方法,将KDD-CUP99数据集转化为灰度图像后,用焦距损失替换原损失函数,弱化了攻击样本较少带来的影响,但是该模型在面对高维数据时往往精度较低。文献[6]提出一种混合深度学习模型CNN-LSTM,利用长短期记忆网络来学习高维流量数据的时间特征。与其他先进的入侵检测算法相比,该模型虽然取得了99.03%的准确率,但主要缺点是使用基于反向传播随机梯度的方法来更新权重,这需要较长的时间进行训练和更新,无法满足物联网系统的低时延性要求,且运算开销大。文献[7]引入自然语言处理领域比较热门的Transformer 方法,结合流量数据集合对模型进行改进,提高了检测精度并降低了时延,但是训练的样本是基于统计学的攻击样本,当遇到传播式攻击时检测效果较差,无法满足物联网系统的高动态性要求。
机器学习和深度学习方法大多被应用在邻居节点固定的欧式空间上,然而在真实的物联网场景中,大量的边缘设备和传感器会以复杂的、非线性的方式连接在一起,从而构成相邻节点不固定的非欧式空间[8],但多数传统方法是浅层学习方法,仅从统计学角度分析单个节点的流量数据的异常,并没有显式地学习变量之间现有的关系或者结构,因而常规的深度学习方法在处理非欧式空间数据上的表现仍难以使人满意。一些狡猾的入侵者会用低强度、高针对性的异常流量发起攻击,其中数据包与合法流量非常相似,在统计分析层面不会造成重大变化[9],这类新型攻击往往很难被传统方法所检测到。
本文在图神经网络的基础上,提出一种适用于物联网环境的分布式异常流量检测方案。对图卷积神经网络(Graph Convolution Neural Network,GCN)进行改进,去除网络中的消息传递模块,在计算损失函数时隐式地引入邻接信息并结合多层感知机(Multi-Layer Perceptron,MLP)进行训练,同时设计2 个Graph-MLP(下文简称GMLP)简化计算并方便部署分布式多级异常检测单元。分布式流量异常检测体系结构将在每个物联网的活动节点(如雾节点或者SDN 转发器)上进行异常检测,相邻的传感器之间相互交换信息,以协同的方式保护网络,其中边缘GMLP 用于特征分类并预测相邻节点发生异常的概率,而节点GMLP 用于节点特征更新并产生自身异常状态的概率。在此基础上,引入注意力机制计算每个相邻节点的关注度,通过优化每个全连接层的权重选择过程,进一步提升模型的检测精度。
本文考虑在雾节点的一侧或是在SDN 边缘转发器上部署一个AI 分布式检测模块,来替代以往运行在虚拟服务器或者云上的检测方法。这些检测模块由边缘转发器上的低功耗AI 处理器来实现。每个分布式单元关注数据传输业务的子集,包括检测邻居节点的模块信息和异常状态,最终实现本地化的异常流量检测。
如图1 所示,描述一个通用的物联网架构体系来支持本文所提出的分布式物联网异常检测方案的实现,该基础设施可以适用于多个物联网应用领域。由图1 可知,整个架构由物联网设备、雾节点和云计算3 层物联网设施组成,具有云-边-端3 层分布式体系[10]。其中:云计算层位于整个架构的最高层,为整个网络提供高速海量的计算资源和分析能力;边缘计算层位于终端设备和云计算层中间,节点包括网关、路由器以及边缘服务器;终端节点处于网络最边缘,包括各类传感器和移动设备,负责收集和转发各类原始数据[11]。在多数物联网场景下,如果将处理时间敏感数据的应用程序运行在雾节点上,将大量原始数据传输到中央云计算层处理,不仅会带来传输的延迟,而且会导致额外的计算开销[12]。
图1 物联网分布式异常流量检测架构Fig.1 Distributed abnormal traffic detection architecture of IoT
为了减少资源开销并优化检测效果,可将物联网设备组成的网络看作是由节点设备之间通信通道组成的图,其结构和行为可以类比为图中各个节点的边,而网络中的异常行为可以看作是异常节点或者是异常边,则由图神经网络可以直接处理图结构的数据。利用这一特点,可以提取网络中出现的许多结构化特征,并且利用它们对节点进行分类。将每一个SDN 转发器和核心转发器看作是图的节点,每个节点对应着一个描述节点行为的标签,而将它之间的底层连接看成边,从而可以将异常流量检测的任务看作是检测图中的异常节点或者异常边。
图卷积神经网络可以学习静态网络中的内部关系,包括网络中的节点如何在正常行为模式中相互作用,以及如何与进出站的流量进行通信。在本文方案中,图卷积神经网络用于学习网络流之间的时空关系。给定图关系公式G=(V,E),其中E∊R|V|×|V|是所有顶点的集合,为邻接矩阵,其元素表示各个顶点之间的连接关系。
以图2(a)为代表的欧式空间卷积操作实际上是使用固定大小可学习的卷积核来抽取像素的特征。与这种方法不同,图结构中的邻居节点是不固定的,因此,研究人员将频谱的处理方式扩展到图(非欧几里得空间)上,如图2(b)所示。
图2 传统卷积核与图卷积核Fig.2 Traditional convolution kernel and graph convolution kernel
图上的频域卷积主要是利用图傅里叶变换来实现卷积,可以定义为输入信号x∊RN与傅里叶域中过滤器g=diag(θ)的乘积,如式(1)所示:
在式(1)中,U是由归一化拉普拉斯矩阵的特征向量组成的矩阵,计算公式如下:
其中:IN是大小为N×N的矩阵;A是邻接矩阵;度矩阵元素定义为Dij=
为了降低计算成本,一些研究人员采用切比雪夫多项式Tk(x)的K阶截断逼近的方法,从而简化了用切比雪夫多项式计算g∗x的方法,如式(3)所示:
经过上述推导,最终的图卷积神经网络表达式为:
其中:第l层的特征是X(l+1)∊RN×D,N是节点数,D是特征向量表示的维度;W(l)是待训练的第l个单个线性层的权重;σ是激活函数;归一化矩阵用来传递邻居节点之间的信息。
GCN 模型的输入是一个图,其中包含M个具有特征的任意节点,到该节点的连接作为该图的边。使用GCN 检测模型,目标是学习图上特征的函数来对输入节点进行分类[13]。在常规的图卷积神经网络中,训练和分类过程都依赖于消息传递模块,即通过邻接矩阵和特征相乘来显式地学习图的结构信息,多层感知机和连通节点上的求和运算被结合在一起在邻居之间传播特征[14]。因此,图神经网络模型开销往往比较大,不利于部署在一些对性能和效率要求比较高的应用环境中。
如上文所述,以往的图模型重点关注如何利用邻居之间的消息传递,通过节点之间的信息交换,在前馈特征传播中显式地学习图的特征信息。但是这些频繁的消息传递往往会导致复杂的结构和复杂的计算,不适用于物联网环境中的网络异常流量检测。因此,本文引入一种新的思路来学习节点的特征变换,以避免显式的消息传递。整体结构上,以多层感知机为基础,将其与一种新的对比损失函数相结合来补偿在图数据建模中的显示结构,以监督节点特征变换的学习。
1.3.1 基于MLP 的图模型结构
图3 展示了本文改进的图多层MLP 模型结构,其中最底层是特征处理模块,原始的节点特征X经过一组经典的神经网络处理模块(线性层-激活函数-层归一化-Dropout)后得到预处理的节点特征表示随后被用于2 个部分计算模型的损失函数经过一层线性变化得到特征表示Z用于计算邻域对比损失;Z经过一层线性变化得到特征表示Y(此处为模型输出层,维度与分类数目相同)用于计算交叉熵(Cross Entropy,CE)损失。
图3 图多层感知机模型结构Fig.3 Structure of graph multi-layer perception model
整个模型可以表示为:
1.3.2 监督节点特征转换的对比邻域损失
为了有效地提取图连接信息特征,模型中的损失函数应遵循同质性原则,即在特征表示空间中,连接的节点应是相似的,不连接的节点应是远离的,这和对比学习中的理念非常吻合。基于这样的动机,本文应用邻域对比损失函数,使得基于MLP 的模型无需显式的消息传递模块即可学习图节点的连接特征。
在邻域对比损失函数中,对于每个节点,其r阶邻居被认为是正样本,其他节点被认为是负样本。该损失函数鼓励正样本更接近目标节点,并在特征距离方面将负样本推离目标节点。具体而言,第i个节点的邻域对比损失可以表示为:
其中:B表示batchsize;sim()是余弦相似度计算函数;τ是常数;γij表示节点i和节点j之间的连接强度,将其计算为归一化邻接矩阵A的r次方当且仅当节点j是节点i的r阶邻居,γij才为 非0 值。
最终,模型的损失函数由Ncontrast 损失和CE 损失两部分组成:
其中:lCE是交叉熵损失;α是平衡这2个损失的加权系数。
1.3.3 模型训练
整个模型以端到端的方式进行训练。该模型的前馈不需要邻接矩阵,在计算训练过程中的损失时只是参考图结构,与传统的图形建模相比,具有更大的灵活性,因为该框架可以在没有完整图结构信息的情况下进行批量训练。
如算法1 所示,在每个batch 中,随机抽取B个节点,并取对应的邻接信息和节点特征X。需要注意的是,对于某些节点i,由于批次采样的随机性,可能会出现批次中没有正样本的情况,在这种情况下,将删除节点i的损失。
算法1GMLP
在推理过程中,传统的图建模(如GCN)同时需要邻接矩阵和节点特征作为输入[15],而本文基于MLP 的方法只需要节点特征作为输入。因此,当邻接信息被破坏或丢失时,GMLP 仍然可以提供一致可靠的结果。此外,在传统的图建模中,图信息被嵌入到输入的邻接矩阵中。对于这些模型,图节点变换的学习在很大程度上依赖于内部消息传递,而内部消息传递对每个邻接矩阵输入中的连接非常敏感[16]。由于本文对图形结构的监督是建立在损失函数上的,因此模型能够在节点特征转换过程中学习图结构的分布,而无需前馈消息传递。
如图4 所示,本文提出2 个独立的模型,用于更新节点及其对应边的属性,基于此构建了部署在边缘转发器上的分布式检测单元。该架构的核心模块由边缘GMLP 和节点GMLP 组成,分别用于对节点和边的状态进行分类,更新节点及其相应边的属性。边缘检测单元用于特征分类并预测相邻节点上异常的概率,而节点检测单元用于节点的特征更新并计算导致其自身异常状态的概率。
图4 单个异常流量检测单元结构Fig.4 Structure of single traffic anomaly detection unit
与常规的图神经网络模型运算不同,本文实现了一个通信通道,在通道内建立了信息交换邻域,用于组合边缘GMLP 和节点GMLP 的信息。模型的输入分别代表边特征的3 个属性和节点特征的5 个属性,每个神经元通过单向链接连接。具体到细节,定义了输入和输出:假设有节点j及其相邻节点i=1,2,…,N,边的输入由邻居对应的边缘特征向量(在t-1 时刻为)、节点自身的信息以及邻居对应的边缘特征向量组成,将数据通过全连接层的输出更新边缘特征向量。与此同时,节点GMLP模块同样根据收集到的信息更新节点自身的特征表示,然后将更新的边缘特征向量与第i个节点的特征进行拼接作为Softmax 分类器的输入,最后经过分类得到节点j的异常概率。与其他集中式入侵检测系统相比,这种实现信息交换的方式不需要显式的消息传递,有效地减少了对资源的占用。
此外,在图神经网络的正向传播过程中,需要关注起重要作用的节点信息,而忽略起次要作用的节点信息。为了进一步提高检测的精度,本文在最后一层分类之前加入了注意力机制模块,当每个节点更新隐含层的输出时,通过计算相邻节点的关注度来给每个相邻节点分配不同的权值,并将权值较高的节点作为神经网络关注的重点[17]。注意力机制的引入减小了处理高维度数据的计算负担,使检测系统更专注于找到数据中显著的相关有用信息,从而提高输出质量。
为了评估本文方案的检测性能,利用Python、NumPy、Pandas、Pytorch 等工具,在64 位计算机上使用Intel®i9-9700K 16 GB RAM,Nvidia GeForce RTX 2080Ti 32 GB 和10.2 版本的CUDA 进行模拟实验。
本文使用的数据集为CTU-13[18],这是2011 年在CTU 大学捕获的僵尸网络流量数据集。该数据集包含13 种不同的攻击,每个数据包都包含有关各种客户端和服务器的信息。网络由30 个转发器和170 个物联网设备组成,这些转发器和物联网设备根据CTU 中的分布式设备交换数据。数据集的统计信息如表1 所示。
表1 CTU-13 数据集特征描述Table 1 Feature description of CTU-13 dataset
2.3.1 蠕虫攻击模拟
为了更好地描述受感染转发器上的传播特性并增加攻击的多样性,在数据集中模拟蠕虫攻击,其网络流量实例同样被标记为正常和异常。注入文献[16,19]的僵尸网络签名的异常流量,通过检查这种类型的特定攻击,能够更好地验证GNN 在网络传播中检测攻击方面的优势。在图5 中给出一个示例:边缘转发器的代理收到来自IoT 的监控摄像头的蠕虫攻击,显示异常行为的恶意软件试图在物联网中进一步传播感染,将攻击带到转发器的相邻节点中,到第二阶段攻击已经蔓延到相邻的转发器。
图5 蠕虫攻击两阶段过程Fig.5 Process of two stages of worm attack
2.3.2 数据集预处理
CTU-13 原始网络数据集包含多种类型的数据,因此,在模型训练和测试前需要进行预处理,以便相关特征能够归类到底层图的边和顶点。为了提取异常行为相关的特征,本文利用时间戳、源和目的IP 地址、数据包数、字节数以及方向值的信息,数据集中的信息交换主要根据源IP 地址和目的IP 地址以连续流的形式描述。为了在图的每个节点和边上特定地分配特征,对数据进行分组以提供每个节点的信息,从而分别为节点和边构造特征向量。
假设j是所关注的图,i是指定时间窗口,定义一个包含多个索引记录的特征向量bri,duri],其中,j可以是节点该向量包含以下记录:ps 定义了在特定时间段内从一个节点/边缘发送到另一个节点/边缘的数据包数量;pr 定义了接收的数据包数量;bs 定义了在一定时间内从一个节点/边发送到另一个节点/边的字节数;br 显示了从节点接收的字节数;dur(连接持续时间)描述了2 个节点/边缘交换数据的连接时间和遵循日期时间格式的时间 戳。最 后,Δt∊[t1,t2],RΔt定义 为RΔt=N定义为N=length(RΔt)。表2和表3 给出了从原始网络数据中提取的特征组(节点和边),以及相应的数学解释。
表2 节点特征矩阵描述Table 2 Node characteristic description
表3 边特征描述Table 3 Edge characteristic description
异常流量检测的性能指标依赖于混淆矩阵。在混淆矩阵中,真正类(TP)为正确分类的异常流量实例;假正类(FP)为错误分类的正常流量实例;真反类(TN)为正确分类的正常流量实例;假反类(FN)为错误分类的异常流量实例。这4 项用于生成以下绩效评估指标:
准确率,即模型正确分类的样本数与样本总数的比值,计算公式如下:
精确率,即模型正确分类的正常样本数与正常样本总数的比值,计算公式如下:
召回率(也称为查全率),即模型正确分类的入侵样本数与正确分类的样本总数的比值,计算公式如下:
误报率(False Positive Rate,FPR),即被误报为入侵的正常样本数与正常样本总数的比值,计算公式如下:
2.5.1 检测性能比较
为证明本文方案的优势,使用经典的机器学习算法和深度学习方法在数据集CTU-13 上进行实验对比,其中包括3 种机器学习方法和3 种深度学习方法。使用Adam 优化器来训练模型,统一将批大小设置为1 024,学习率设置为0.000 1,批次设置为30,dropout 设置为0.5。使用Pytorch 构建检测模型,实验各项性能指标如表4 所示。结果表明,本文方案在CTU-13 数据集上准确率、精确率、召回率和误报率最高可达0.999 3、0.982 1、0.995 3 和0.42,准确率较其他对比方案最高提升了0.269 2。这得益于本文改进的图神经网络模型在大型的数据集中能够更好地学习到复杂特征,因为越大的数据集中通信模式越复杂,IP 节点和交互边越多,本文改进的模型相比于其他方法更容易发挥出优势,更准确地检测出异常流量。此外,注意力机制的引入也进一步提升了检测效果,使得本文方案检测性能优于其他方案。
表4 不同方案检测效果比较Table 4 Comparison of detection effects of different schemes %
利用Matplotlib 根据实验结果绘制ROC 曲线图。定义横坐标为假阳性率,纵坐标为真阳性率,根据ROC 曲线可以看到模型在任意阈值下的学习效果。ROC 曲线将整个图形分为两部分,曲线以下的面积称为曲线下面积(AUC),表示检测的准确性,曲线越接近左上角性能越好,AUC 值越大(曲线下面积越大),预测精度就越高[26]。选取检测性能比较好的3 个深度学习方法进行AUC 值的对比。如图6 所示,本文模型在CTU-13 数据上AUC 值达到了0.99,较其他模型最高可提升17.8%,这也从另外一个角度表明,在物联网环境下,分布式异常检测方案能够获得比较理想的检测效果。
图6 不同方案的ROC 曲线对比Fig.6 Comparison of ROC curves of different schemes
2.5.2 资源和时间开销分析
为了验证部署分布式检测单元与集中式IDS 相对的优势,本文还比较了不同方案在资源消耗和时间开销方面的性能。通过柱状图展示不同方案之间的资源消耗,如图7 所示。根据数据不难看出,本文方案带宽消耗最低只有845 kb/s,与其他主流方法相比,资源消耗显著降低,这是因为分布式异常检测不需要将数据传输到云服务器的IDS 进行计算,各个检测单元以较少的带宽占用降低了集中式IDS 的资源消耗。
图7 不同方案的带宽消耗比较Fig.7 Bandwidth comparison of different schemes
表5 展示了本文方案和其他对比方案的训练参数数量和运行时间,使用GPU 来加快所有模型的训练速度。可以看出,本文方案通过改进传统GCN 的消息传递模块,在时间开销方面取得了良好的提升,训练时间和训练速度均有所减少。同时算法中的可训练参数较少,可以实现高效的并行计算。
表5 不同方案的计算复杂度比较Table 5 Computational complexity comparison of different schemes
2.5.3 消融实验分析
本节进行消融实验,验证不同改进点对流量异常检测的效果,实验结果如表6 所示。其中,改进1表示替换GCN 中的消息传递模块,使用GMLP 来训练图神经网络;改进2 表示注入蠕虫传播攻击,在各个转发器IP 节点部署分布式异常检测单元;改进3表示引入注意力模块。分别从方案中删除几个改进点,组成新的模型。
表6 消融实验结果Table 6 Ablation experimental results
由表6 中数据可知:改进的GMLP 模块可以使检测时间降低一半,因为原本的图神经网络结构要不断更新相邻节点之间的消息传递,导致训练和测试时间较长;同时分布式异常检测单元实现了异常检测的本地化,避免了频繁与集中式IDS 进行数据交互,带宽和资源消耗得以明显降低;此外,注意力机制使得模型在训练时更关注主要权重学习和优化重点参数,准确率和精度得到进一步提升。
本文结合物联网环境中设备节点复杂的特点以及低时延和高精度的检测需求,提出一种分布式异常流量检测方案。针对图卷积神经网络进行优化,以改进的多层感知机替换图学习中原有的消息传递模块,使模型更适用于物联网环境。在此基础上,结合物联网节点众多的特性,设计实现节点GMLP 和边缘GMLP 进行分布式流量异常检测,实现本地化的异常流量检测,并引入注意力机制进一步提升模型的检测效果。实验结果表明,本文方案不仅有效提高了检测精度,而且还减少了网络通信中的开销,加快了检测速度。下一步将对更多类型的流量数据集进行图结构分析,在更广泛的场景中进行模型训练和测试。