基于半监督子空间聚类的协议识别方法

2021-11-05 01:29朱玉娜张玉涛闫少阁范钰丹陈韩托
计算机应用 2021年10期
关键词:数据包聚类约束

朱玉娜,张玉涛,闫少阁,范钰丹,陈韩托

(1.中国人民解放军91033部队,山东青岛 266035;2.中国人民解放军91286部队,山东青岛 266003;3.中国人民解放军信息工程大学,郑州 450001;4.中国人民解放军63850部队,吉林白城 137001)

0 引言

随着密码协议在互联网中的广泛应用,与密码协议相关的网络流量日益增加,密码协议识别已成为当前网络安全领域的关键技术之一。

网络上协议类型多种多样,新类型协议不断涌现,因此不仅需要准确识别已知协议,还需要扩展识别未知新类型协议。在协议识别领域,现有方法主要包括基于端口映射的识别方法、基于负载内容的识别方法[1]和基于流量统计特征的识别方法,其中,基于流量统计特征的识别方法[2-6]一般采用机器学习,只需要很少的计算资源就可以检测发现新类型协议,并且避免了隐私问题,日益受到人们关注。根据协议数据集样本的不同标记程度,可将基于统计特征的协议识别方法分为有监督、无监督和半监督三类。半监督协议识别方法兼具有监督方法准确度高和无监督方法检测新类型协议的优点,更适宜于互联网中的协议识别需求。文献[2]提出基于高斯混合模型和隐马尔可夫模型识别加密流量,文献[3]提出基于卷积神经网络识别虚拟专用网络(Virtual Private Network,VPN)加密流量,文献[4]提出基于深度神经网络进行流量分类,文献[5]提出一种基于近邻传播学习的半监督流量分类方法;但现有方法[2-5]大都选择统一的统计特征集合,没有考虑不同协议个体之间的差异,影响协议识别效果。为此,应引入特征权重来强化重要特征的积极作用,削减冗余特征的不利影响[6]。

子空间聚类方法分为硬子空间聚类方法和软子空间聚类方法,在对数据样本集聚类划分类簇的同时,得到各个数据簇对应的特征子集。为提高协议识别的准确性,SubFlow[7]首次采用硬子空间聚类方法构建协议个体化特征库并进行协议识别,但在提取协议特征阶段,要求流量由同一类协议组成,不适用多种协议混杂的情况。软子空间聚类相较硬子空间聚类方法具有更好的适应性和灵活性,已成为学术界的研究热点,模糊子空间聚类(Fuzzy Subspace Clustering,FSC)[8]是其中的典型方法。

为提高基于统计特征的识别效果,本文结合半监督学习和模糊子空间聚类(FSC)方法,提出一种新的半监督子空间聚类协议识别方法(Semi-supervised Subspace-clustering Protocol Identification Approach,SSPIA),对统计特征进行加权,获取各个特征的权重系数,以构建个体化的协议实例特征库,并用于后续协议识别。

1 SSPIA总体框架

SSPIA总体框架主要包括4个阶段,如图1所示。

图1 SSPIA总体框架Fig.1 Overall framework of SSPIA

1)数据预处理。按照网络流5 元组定义对协议流量分流,并提取统计特征,将网络流抽象为一组统计特征值构成的属性向量。数据包大小、包到达时间间隔是网络流中用于协议识别的关键特征[9]。Haffner等[10]指出只需要流的前64 B负载就可以确定协议识别特征,因此本文关注的统计特征为前N个数据包的大小、包到达间隔时间以及流中前64 B 负载字节值的分布。

2)已知标签样本流约束。半监督学习能够使用有限数量的有标签样本和大量无标签的样本进行学习。首先,基于三元组性质对有标签样本进行扩展,获取更多先验信息;随后,利用有标签样本获取先验约束条件,将有标签的样本流转化为成对约束信息,得到must-link约束集合和cannot-link约束集合。

3)基于SFSC 的特征加权。结合模糊子空间聚类(FSC)方法和半监督学习的成对约束,提出半监督模糊子空间聚类(Semi-supervised Fuzzy Subspace Clustering,SFSC)算法,利用成对约束信息来指导聚类过程,建立类簇和协议类型映射的同时,得到不同类簇各个特征的权重系数,并将特征和特征权重系数、类簇距离阈值存入协议实例特征库。

4)密码协议在线识别。在线提取实际网络环境下的网络数据报文特征,并根据协议特征库的识别规则识别网络报文所属协议类型。

2 已知标签样本流约束

2.1 扩展有标签样本

文献[11]中研究表明,在给定的一段时间内,具有相同三元组(destination_ip,destination_port,transport_protocol)的流来自同一应用。根据三元组性质,与同一主机指定端口相连的多个流属于同一类型协议,因此,若某一无标签样本与有标签样本的三元组相同,则可以将有标签样本的协议类型标记给该无标签样本,从而获取尽可能多的先验信息。

记预处理后的数据集D={x1,x2,…,xn};D中有标签样本组成的集合为A={xl1,xl2,…,xlm},相应的协议类型标签集合为La={yl1,yl2,…,ylm},A⊆D,xli∈A|1 ≤i≤m对应的协议类型标签为yli∈L|1 ≤i≤m;无标签数据组成的集合为B={xu1,xu2,…,xuk},B⊆D,A∪B=D。

提取数据集D中每个样本流对应三元组(destination_ip,destination_port,transport_protocol)。记xli∈A|1 ≤i≤m为有标签样本流,其相应的协议类型标签为yli,xuj∈B|1 ≤j≤k为无标签样本流。若xli和xuj对应的三元组相同,根据三元组性质,则xuj对应的协议类型也为yli。对xuj的协议类型进行标记,并将其放入有标签集合中,从而可以获取更多的先验信息。

2.2 构建约束集合

Wagstaff等[12]将两种成对约束must-link(用于限制两个样本必须属于某一类)和cannot-link(用于限制两个样本不属于同一类别)引入到半监督聚类方法中,其基本思想是:给定数据集、must-link 构成的正约束集以及cannot-link 构成的负约束集,要求每一步数据集的划分都满足must-link连接的样本划分到同一个类簇中,满足cannot-link连接的样本划分到不同的类簇中,最终得到的类簇划分结果满足所有成对约束信息。

本文与之类似,若两个有标签样本流Xi、Xj标签类型相同,属于同一类,则满足 must-link 约束,记为(Xi,Xj)∈Mustlink。若两个有标签样本流Xi、Xj标签类型不同,不属于同一类别,则满足cannot-link 约束,记为(Xi,Xj)∈Cannotlink。

将有标签的样本流转化为成对约束信息,得到两个约束集合——must-link 集合SML和cannot-link 集合SCL,其中mustlink 约束在样本集上满足自反、对称、传递关系。在确定某个约束关系后,利用约束的传递关系,可以得到更多同种类型和不同类型的IP 流约束信息。即若(Xi,Xj)∈Mustlink且(Xi,Xk)∈Mustlink,则 (Xj,Xk)∈Mustlink;若 (Xi,Xj)∈Cannotlink且(Xi,Xk)∈Mustlink,则(Xj,Xk)∈Cannotlink。

随后设置违背约束的条件VIOLATE-CONSTRAINTS。记d、d1为数据集两个样本点,z为划分的某一类簇,d∈z,则违背约束条件函数VIOLATE-CONSTRAINTS(d,z,SML,SCL)为:1)对每一个(d,d1)∈SML,若d1∉z,则返回True;2)对每一个(d,d1)∈SCL,若d∈z,则返回True;3)其余情况,返回False。

3 基于SFSC的特征加权

为保证FSC 结果满足给定的成对约束,结合半监督学习和FSC 方法,提出SFSC 算法,用给定的约束集合SML和SCL指导FSC的聚类过程。

SFSC 算法输入为:样本数据集D={x1,x2,…,xn}、mustlink约束集SML⊆D×D、cannot-link集合SCL⊆D×D、类簇数目k、模糊加权指数α,协议类型标签集合L={L1,L2,…,Lm},其中L通过有标签样本对应的标签集合Le获取,Le中元素可能是重复的,统计Le中互不相同的类别标签,得到协议类型标签集合L。

输出为:类簇U,类簇中心矩阵Z,Z对应的类型标签LZ,特征加权系数矩阵W。

3.1 初始点选择算法

FSC 方法对初始点较为敏感,初始类簇中心的选择直接影响聚类效果,选择不当容易陷入局部最优解。为此,SFSC方法在结合成对约束的基础上,与K-mean++类似选取彼此距离尽可能远的k个样本点作为初始点。

记有标签样本点的协议类别数目为k1(k1≤k)。首先从数据集D中选择1个有标签样本点作为第1个类簇中心,随后的k1-1 个样本点从有标签样本集合中依据规则x|max(min(d(x,zi)))选取。具体而言:1)记已选取的类簇中心集合为z={z1,z2,…,zn'}|n'≤k1-1,首先在有标签样本集合中查找与类簇中心集合z中类别标签不同的样本点集合X,若某一有标签样本点与z中所有元素都构成cannot-link 约束关系,则将该样本点并入集合X中。2)对样本点集合X中的每一个元素x,计算x与已选取类簇中心zi|zi∈z,1 ≤i≤(k1-1)之间的距离d(x,zi),并取其最小值d(x)=min(d(x,zi)),确定x与最近类簇中心之间的距离;3)从X中选取一个元素作为新的类簇中心,选取依据是:d(x)较大的点,表示该样本点离所有已选取类簇中心的距离较大,则该样本点被选取作为类簇中心的概率较大。

若k1

3.2 SFSC聚类

SFSC 与FSC 最大不同之处在于:当基于W和Z更新类簇划分时,对每一个样本点di,查找与其加权距离最近的类簇中心Zj,并使得该样本点不违背给定的约束条件(VIOLATECONSTRAINTS(di,zj,SML,SCL)==False),保 证有must-link 约束的两个样本点在同一个类簇,有cannot-link 约束的两个样本点在不同的类簇中。

SFSC算法步骤如下所示。

步骤1 从协议数据集D中利用初始点选择算法选择k个中心点。

步骤2 SFSC 聚类。初始化特征加权系数矩阵W,并利用约束条件引导聚类过程,对每一个样本点di,根据FSC 迭代公式估计整个协议数据集的类簇划分U,并保证不违背约束条件;而后利用FSC迭代公式更新U、W以及类簇中心矩阵Z,直到目标函数收敛。在目标函数收敛后可以得到整个协议数据集的类簇划分U,类簇中心矩阵Z,特征加权系数矩阵W。

步骤3 建立类簇与协议类型的映射,将类簇中包含最多数目的类型标签赋给该类簇。记协议类型集合为L={L1,L2,…,Lm},类簇中心集合为z={z1,z2,…,zn'},根据最大似然估计,可以得到类簇zj与协议类型Ls(1 ≤s≤m)的映射函数为l(zj)=arg maxp(l=Ls|zj)=arg max(/Nj),其中,为类簇zj中协议类型Ls的样本数目,为类簇zj中无标签样本的数目;Nj是类簇zj的样本数目。若某类簇中,不包含任何有标签的样本流,则认定其为未知协议类型,标记为“未知类型ut”,其中ut初始值为1,每出现一个未知协议类型的类簇,ut值增加1。

3.3 将协议特征存入协议实例特征库

记x' 为某一样本点,zj为第j个类簇的中心,wj=[wj1,wj2,…,wjd]为该类簇的特征加权矢量,则x'与zj的加权欧氏距离为d(x'-zj)=。借鉴文献[11]的思想,基于类簇内距离的方差对每一个协议类簇设定距离阈值rj=T×,其中,表示第j个类簇内加权欧氏距离的方差,用于描述类簇内距离的离散程度,T为正值参数,用于调整方差对rj的影响程度。如果d(x'-zj)

在确定类簇对应的协议类型后,将该类簇中心相关的统计特征值和特征加权系数、类簇距离阈值存入协议实例特征库,以用于后续识别。

4 实验评估与结果分析

选取安全套接层(Secure Sockets Layer,SSL)协议、安全壳(Secure SHell,SSH)协议、NS(Needclham-Schroeder)公钥协议、sof 协议、Skype 这5 类经典密码协议进行实验,验证SSPIA的聚类质量和协议识别性能,其中,SSL、SSH 和Skype 协议是网络中广泛应用的密码协议;NS 公钥协议和sof 属于经典基础密码协议。

协议流量数据集由4部分组成,如表1所示。

表1 协议数据集Tab.1 Protocol dataset

对协议流量数据集进行预处理,Wireshark 软件内嵌一个Lua 语言执行引擎,并提供一系列Lua 脚本函数接口。基于Lua脚本可以编写Wireshark插件,实现协议识别、协议报文解析,也可以获取Wireshark 提供的与协议相关的信息,例如通信双方IP、端口、载荷内容、数据包大小、包到达时间间隔等。

数据集分为两部分:一部分为训练集,从SSL、SSH、NS、sof 协议流量中分别提取500 个完整会话,用于获取协议统计特征及其相应的特征权重系数。随后,对数据集设置标签率p(即有标签样本占总样本的比重),从数据集中随机抽取标签率为p的样本标记其协议类型,作为有标签样本,其他样本则不标记协议类型,作为无标签样本;其余部分作为测试集,用于测试识别结果。协议在网络运行中以IP 数据包形式进行传输。数据包结构为网络层协议头部||传输层协议头部||应用层协议报文。在Wireshark 捕获报文后,基于Lua 脚本获取与协议相关的信息,对每一个到达的数据包,根据双向流定义进行分流,并依据密码协议特征库内容,在线提取实际网络环境下获取的流及流中报文的相关特征,提取流的端口特征FlowPort、流中前64 B 负载字节的值(包括负载内容的值ContentValue、偏移ContentOffset)、流量统计特征(包括数据包大小PacketLength、包到达时间间隔PacketIntervalTime 等)。对数据包所在流的识别操作也主要利用这些特征属性进行。与训练集相比,在测试集中包含了未训练的Skype 协议,用于检测识别方法发现新协议的能力。

4.1 SSPIA评价指标

聚类效果越好,构建的协议识别分类器也越精确。本文根据聚类效果和识别效果评价SSPIA。

1)聚类质量评价指标。

本文基于标准化互信息(Normarlized Mutual Information,NMI)和DBI(Davies-Bouldin Index)衡量SSPIA的聚类质量。

其中:X和Y分别为样本集中表示协议类型和类簇标识的变量;I(X;Y)=为X和Y的互信息;H(X)和H(Y)分别为X和Y的熵。NMI(X,Y) ∈[0,1],值越大,表明聚类结果与真实情况越符合。当协议类型与类簇标识一一对应时,NMI(X,Y)=1。

其中:k为划分的类簇数目为类簇Ci内的平均离散度,ci为类簇Ci的中心,d(ci,cj)为两个类簇中心ci和cj的距离。DBI 指数越小,说明同一类簇内部越紧密,不同类簇之间越分散,聚类质量越好。

2)识别性能评价指标。

采用识别率和误识别率性能指标衡量识别效果。记测试集中某协议A的样本数目为N。N1表示被正确识别为A的样本数,N2表示非A被错误识别为A的样本数,则:识别率RTP=N1/N,误识别率RFP=N2/(N1+N2)。

4.2 参数设置

参数主要包括FSC模糊指数α、FSC类簇数目k、数据包个数Np、标签率(即有标签样本在数据集中的比重)p、距离阈值rj中的T。

文献[8]建议α设置在2 附近。与之相同,设置α=2.1。类簇数目k和数据包个数Np则采用NMI 进行设置。与文献[5]相同,设置p=0.1。随后在使用10%的标签率下,计算不同聚类数目下的NMI值,如图2所示。

图2 不同聚类数目k下的NMI值Fig.2 NMI under different cluster number k

由图2 可知,当k=4,Np=4 时,NMI 为最大值,聚类效果最佳。因此,本文设定k=4,Np=4。

对T值,本文依据文献[13]方法进行设定。当k=4,Np=4时,在不同T值情况下,计算数据集中的样本点与所有类簇中心的距离,若所有距离均小于给定的距离阈值,则该样本标记为未知协议类型。统计不同T值情况下数据集中标记为未知协议类型的比例,如图3所示。当T增大时,标记为未知协议类型的比例降低,相应地发现新协议类型的概率也随着下降。将能够较好标记协议类型的最小T值作为阈值,设定T=2.5。

图3 不同T值下,标记为未知协议的比率Fig.3 Rate of protocols labeled to unknow under different T

4.3 结果分析

4.3.1 聚类质量结果

为说明SSPIA 的优势,本文在相同条件下(标签率p=0.1,数据包个数Np=4)运行传统K-means 方法和FSC 方法,并利用NMI和DBI两类聚类质量指标比较SSPIA、K-means和FSC,如表2所示。

表2 聚类质量比较Tab.2 Comparison of clustering quality

由表2 可知:1)与K-means和FSC相比,SSPIA的NMI值多数时候较大,因此SSPIA相应的类簇划分更为合理。这是因为K-means和FSC对初始点选择敏感,容易陷入局部最优解。在数据集中,NS公钥协议和sof协议特征较为相似,采用K-means和FSC聚类,会出现若干类簇合并的现象,将NS公钥协议流量和sof协议流量划分为同一类簇。SSPIA由于引入半监督机制,可以较好引导类簇划分,将NS公钥协议流量和sof协议流量划分为不同的2 个类簇,因此其NMI 值相对K-means 和FSC 大。2)对DBI 值进行比较,结果表明,SSPIA 和FSC 的DBI 值显著小于K-means 的DBI 值。与FSC 的DBI 值相比,SSPIA 的DBI值多数情况下相对更小,或者比较接近。这表明:①在引入特征权重系数后,FSC 和SSPIA 形成的类簇相对K-means 方法而言,同一类簇之内更为紧凑,不同类簇之间更为分散。②由于引入半监督机制,能够利用少量有标签样本指导协议识别模型的构建,SSPIA相对FSC聚类质量更好。

由上述分析可知,与K-means方法和FSC方法相比,SSPIA聚类质量更好,因此SSPIA构建的协议识别分类器也更为精确。

4.3.2 协议识别结果

由表2 可知,当类簇数目k=4 时,K-means 方法、FSC 方法、SSPIA 构建的协议识别分类器最为准确。本文采用相同条件下(k=4、标签率p=0.1、数据包个数Np=4)构建的协议识别分类器对测试集进行识别,识别结果如图4所示。

图4 协议识别结果Fig.4 Protocol identification results

对SSL和SSH协议而言,由于FSC和SSPIA考虑了不同协议特征的权重,识别效果相较K-means、FSC更好。

对NS和sof协议而言:①K-means和FSC方法在训练过程中,NS 公钥协议流量和sof 协议流量划分为同一类簇,导致无法识别sof协议,识别率为0;②由于K-means和FSC 方法无法识别sof 协议,导致其他协议样本也未被错误识别为sof,误识别率也为0,反而小于SSPIA 的误识别率;③K-means和FSC方法大多数sof 协议均被识别为NS 协议,NS 协议的误识别率较高,而SSPIA 由于引入半监督学习,在训练过程中可以较好区分NS公钥协议流量和sof协议流量,相应的识别效果也较好。

对Skype 协议而言,由于训练集未训练,K-means、FSC、SSPIA 均识别为未知协议,SSPIA 相较K-means、FSC 识别效果更好,发现新类型协议的能力更好。

5 结语

为提高基于统计特征的识别效果,针对统计特征的加权问题,本文提出SSPIA,结合半监督学习和子空间聚类方法,获取各个统计特征的权重系数。SSPIA 首先引入成对约束——must-link 和cannot-link,将有标签样本流转换为成对约束信息,获取数据集的先验约束条件;随后,在FSC方法中加入成对约束,提出半监督模糊子空间聚类(SFSC)算法,对数据集进行聚类,并建立类簇和协议类型之间的映射关系;最后,获取协议类簇中心对应的特征值、特征权重系数以及类簇的距离阈值,存入协议实例特征库,并进行后续协议识别。实验结果表明,针对基于统计特征的协议识别问题,与传统K-means 方法和FSC方法相比,SSPIA聚类效果更好,相应的SSPIA构建的协议识别分类器和SSPIA协议识别效果也更为精确。

但本文方法还存在一定的局限性:1)仅针对5 个经典密码协议进行实验,以后需对更多协议进行实验(例如无线传感器多因素认证协议[14]、双因素身份验证协议[15])以验证本文方法的有效性;2)本文捕获流量为协议完整的运行过程,还需要考虑当捕获流量不完整时的会话识别。

猜你喜欢
数据包聚类约束
一种傅里叶域海量数据高速谱聚类方法
二维隐蔽时间信道构建的研究*
基于知识图谱的k-modes文本聚类研究
基于数据降维与聚类的车联网数据分析应用
基于模糊聚类和支持向量回归的成绩预测
C#串口高效可靠的接收方案设计
马和骑师
网络数据包的抓取与识别
适当放手能让孩子更好地自我约束
CAE软件操作小百科(11)