刘 杰,李喜旺
1(中国科学院大学,北京 100049)
2(中国科学院 沈阳计算技术研究所,沈阳 110168)
随着科学技术的迅速发展,人们的日常生活中也逐渐离不开网络.由于网络信息不断产生和变化,使得网络安全问题也成为计算机领域的一个热门的研究方向.目前网络攻击发生在我们生活中的方方面面,加之网络攻击类型的千变万化,网络攻击者通过各种不同的手段攻击各种公共设施和用户个人隐私信息[1],比如“橙风单车”投用第二天就遭到黑客攻击,导致系统瘫痪,用户无法正常体验、使用.随着信息化时代的发展,目前网络数据已经不仅仅是静态的单个节点的影响,而是以不断变化的形式存在,因此传统的网络异常检测算法已不能满足数据实时、准确的检测要求,对不断更新的新的网络攻击手段无法迅速的做出相应的裁决和相应,因此我们需要更加快速和准确的检测网络异常的方法,已保证在高速网络的数据到来时能够对数据及时做出相应[2].
目前常用的网络入侵检测的方法主要有两种:误用检测和异常检测[3].误用检测需要事先建立网络异常的特征规则库,并将采集到的每个数据包与规则库的每一条规则进行一一匹配,根据此判断网络中是否存在异常.误用检测的优点是检测率高、误报率低,缺点是对未知特征的新异常行为,误用检测就表现毫无应对能力.而异常检测完全不同于误用检测,异常检测所关注的是网络流量的宏观统计特证,异常检测首先需要提取或者概括网络流量的统计特征,据此建立一个正常模型.是将当前产生的活动模型与正常模型作比较,当当前的活动模型与正常活动模型不匹配时,异常检测就会发出警报.异常检测的优点是可以检测出以前从未出现的网络攻击方法,但缺点是误报率较高[4,5].
近年来,为了应对网络异常入侵的多样性,加之为提高网络异常检测的检测率,降低网络异常检测的误报率,国内外的学者对此已经做了大量的研究工作,目前网络异常检测方法大致分为两大方面:动态网络异常检测和静态网络异常检测.
在静态网络异常检测中,最为代表的是基于阈值的网络检测方法.在基于阈值检测的方法中,Maxion 等[6]提出根据历史网络流量的特征建立阈值,一旦超出此阈值即判断为网络异常[7].
在动态网络异常检测中,典型的方法即基于统计的检测方法,比如基于用户画像的异常行为检测模型[8]中提出引入用户画像技术,实现了入侵检测粒度的细化,并将大数据技术引入网络安全领域,证明了基于用户画像的入侵检测模型有较好的实用价值.基于隐马尔可夫模型和条件熵的异常流量检测方法研究中[1]中提出运用统计学的方法对流量分类,最后通过输出概率值来判断是否是异常类型,该方法明显的提高了异常检测的精确度和检测率,但是只能对流量进行笼统的分类为异常和正常,无法做到更精细的划分.
但由于网络流量不仅存在相似性和周期性的特点,还存在多点之间的连接性,因此当网络攻击者对我们的网络进行入侵时,往往不是单独的某个点对我们的网络造成极大的攻击,而是多个网络攻击者联合攻击对我们的网络造成网络崩溃,网络节点关系如图1所示.因此目前的单点网络异常检测已满足不了现阶段对网络攻击者的防御和对其预测.另外,“网络异常”也是一个很模糊的概念,工控网络异常检测通常表现为结构和属性的变化,异常当然也包括网络节点本身的异常以及网络变化的异常,因此在本文中,我们基于工控网络中的多点连接性提出了基于图神经网络的工控网络异常检测算法,将图神经网络应用于工控网络异常检测,这样就可以同时抓取工控网络结构、属性以及其周围点邻域状态上的异常.从而使算法能够脱离单点的网络异常检测.
图1 网络节点图关系
最终将该模型与单点检测算法比较,证明了该算法具有较高的准确率,验证了该算法的有效性.
对于我们日常生活中的网络拓扑结构,工控网络节点的结构特征和属性以及工控网络节点之间的连接关系,本文中提出的基于图神经网络的工控网络异常检测算法的目标是:充分利用工控网络节点之间的属性信息和工控网络拓扑结构的信息,挖掘工控网络节点之间的隐含的交互信息,并学习每个工控网络节点的类标签.表1给出本文中相关的符号定义.
表1 符号定义
图神经网络(Graph Neural Network,GNN) 是近几年出现的一类以图结构作为网络输入的神经网络模型[9].由于图神经网络处理的数据结构是图,而图是一种主要针对非欧几里得空间结构的数据进行处理,具有以下优势:
(1)对输入元素数据的顺序不敏感;
(2)在图计算过程中,节点的表示受周围邻居节点的结构和属性的影响,而图本身的连接不变;
(3)将网络节点表示为图结构表示,便于进行基于图的推理,对网络异常检测具有天然的优势.
同时受到网络嵌入的启发,本文旨在学习一个图神经网络映射函数,通过该映射函数将图中的某一节点Vi可以聚合它自己的特征Xi与它相关联的邻居的特征Xj来生成节点Vi的新表示,然后将其作为K-means的输入,进行聚类算法,判断该节点是否异常.图神经网络结构图如图2所示.
图2 图神经网络结构图
图神经网络模型由三大部分组成:图节点状态向量获取模块、迭代更新模块和损失函数模块[10].
(1)图节点状态向量获取
首先每个节点Vi都可以用其特征Xi表示,并与其已标记的标签相关联.给定部分标记的图G=(V,E),利用已标记的节点来预测未标记的节点标签.它可以通过学习得到每个节点的d维状态向量表示为Hv,同时已包含了其相邻节点的状态信息.
其中,Xv表示节点的属性特征集合,Xco表示边的特征集合,Hne表示样本v的邻居节点的嵌入表示,Xne表示节点v的邻居节点的属性特征.f(x)函数表示将输入节点的特征映射到d维向量空间的一个映射函数.
(2)迭代更新
根据上述算法可以获取到每个节点的d 维状态向量,该向量蕴含了连接节点的特征信息以及节点之间的交互信息.由于我们要求出Hv的唯一解,在本文中我们选择使用不动点理论重写上述方程进行迭代更新.
其中,H和X表示所有h和x的连接.
然而对于每个节点,其邻域节点的交互信息固然重要,但其自身节点的原始信息也包含了很多重要的状态信息.因此将节点的状态向量Hv以及节点的特征Xv同时传递给输出函数g进一步计算,得到GNN 的输出,即是否为异常节点.即:
其中,f(x)和g(x)是全连接前馈神经网络.
(3)损失函数
给定一个图G=(V,E,X),经过上述的状态向量获取和迭代更新,每个节点都可以用一个具有既包含节点自身信息又有样本邻域交互信息的状态向量表示.在本文中根据词特征向量,我们使用softmax(x)函数为每个节点计算每个类别对应的概率,softmax(x)函数定义如下:
最后在该模型中,我们使用交叉熵计算模型的损失loss,其计算公式如下:
其中,y表示真实的标签.
图神经网络的算法进行节点特征表示的过程图如图3所示.
聚类算法是一个将数据集划分成若干个聚类的过程,使得同一聚类的类内相似性最大,类间相似性最小.相似性的度量我们选用基于距离的方法.在本文中我们选用欧几里得距离,计算公式如下:
常用的聚类算法包括K 均值聚类、密度聚类、层次聚类.在本文中我们选择K-means 聚类,K-means 聚类算法是将n个样本点划分成k个子集,每个子集都代表一个聚类.
K-means 算法的步骤:
① 在已研究的基础上,将所有的样本根据类标种类分为k个类,记为k个种子聚类中心.
② 计算每个样本与种子聚类中心之间的距离,并把每个样本点分配到距离最近的聚类中心点,即聚类中心及分配的样本点代表一个簇.
③ 计算每个簇的均值作为每个簇的质心,重复步骤②,直至质心不再发生变化,确定k的值.
将上述图神经网络的网络节点输出特征作为Kmeans 聚类的输入,判断网络节点是否是异常节点.
图3 节点特征表示的过程图
为了评价本文提出的网络异常检测算法,使用Libpcap 网络工具获取中科院沈阳计算技术研究所使用的内部网络数据,主要是原始网络的流量数据.
在本文中选取TCP 连接的基本特征比如连续时间,协议类型、传送的字节数、连接正常或错误的状态和TCP 连接的内容特征比如登录尝试失败的次数、成功登录的次数,root 用户访问次数和文件创建操作次数等属性对网络节点数据进行分析.
为了剔除数据集中的“脏数据”,与网络节点异常无关的数据、重复采集的数据、数据格式错误或null 值的数据,需要先对数据进行预处理,找出数据的特征表示,为算法提供可靠的数据保证.对于数据的预处理主要包括两大部分,首先利用Python 3 将获取的字符型特征转换为数值型特征,其次对数据进行标准化和归一化处理.在本文中使用的是min-max 标准化方法,即对原始数据的线性变换,使数据结果归一化到[0,1]区间转换函数如下:
其中,max 为样本数据的最大值,min 为样本数据的最小值.
使用基于Python3 环境的Tensorflow 开源深度学习框架实现图神经网络的模型构建与异常检测.本文实验采用PC 机,内存为16 GB,操作系统为Windows、Linux.
在该网络异常检测算法中,模型的结果评估使用准确率和误判率来评价模型的性能.具体如表2.
表2 混淆矩阵
准确率表示为:
传统聚类单点检测算法得到的聚类结果图和经图神经网络处理后网络节点异常检测结果分别如图4和图5所示.
图4 传统聚类结果
本文模型在准确率和误报率与其他传统网络异常检测模型比较,具体如表3.
图5 图神经网络处理聚类结果
表3 结果对比表(%)
网络异常检测已经成为网络安全的一个重要研究方向,本文提出的基于图神经网络的网络异常检测算法可以融合网络节点自身属性以及其邻域节点的属性信息进行训练,弥补了以往的单节点的动态预测方法的不足,实验证明该方法具有较好的鲁棒性,但是该算法也具有一定的局限性,对于进一步的节点之间的相关性研究及图神经网络更精确精准的异常检测是我们下一步的研究重点.