第1章 绪论
1.1 研究背景、目的与意义
随着互联网的高速发展和网络用户的不断增加,网络流量日益庞大。而伴随各种新业务和新应用的不断出现,所使用的通信协议也愈加复杂。目前,对等网络(peer to peer, P2P)、流媒体、网络游戏等新应用的流量已经占据了网络流量的60%以上[1],同时网络上的恶意攻击行为也日渐增多,网络安全已提升至国家战略层面。流量识别作为网络管理的基础,也是众多网络安全问题定位的基础突破口。因此,如何采用有效的流量识别技术识别出不同网络流量的类型是网络管理和网络安全领域的一项重要议题。而基于机器学习(machine learning, ML)的流量识别算法能够克服端口号识别和深度报文检测(deep packet inspection, DPI)等算法的查准率不高且无法对加密流量进行识别等缺点,已经成为目前*流行的研究算法之一。此外,一些特定的技术也会对基于机器学习的流量识别产生一定的影响,如报文抽样技术,它作为高速网络流量测量和服务质量(quality of service, QoS)中所使用的关键技术,已经广泛应用于网络观测和监控设备中。如何解决在抽样环境下由信息缺失导致流量识别正确率下降的问题,将是流量识别研究领域的一项重要内容。因此,研究抽样环境下基于机器学习的流量识别算法非常重要,它有助于网络管理者正确地对各种业务流进行实时监控与管理,有助于互联网研究人员准确了解网络中各种流特征及相应的用户行为,有助于网络服务提供商在规划和建设网络时精确了解网络各类业务流的状况。
目前,所提出的基于机器学习的流量识别算法多建立在全报文采集的基础上,但随着网络带宽的飞速增长,流量也在不断增加,若对所有的报文都进行采集、存储并加以计算、分析,势必会增加系统压力,难以实现在线流量识别。因此,为了减少资源消耗,提高处理效率,抽样报文采集成为学术界和工业界普遍采用的算法。国际互联网工程任务组(internet engineering task force, IETF)早在2002年就成立了包采样(packet sampling, PSAMP)工作组,研究讨论并制定了对网络协议(internet protocol, IP)数据包的采样和过滤算法。IETF的IP流信息输出(IP flow information export, IPFIX)和IP性能指标(IP performance metrics, IPPM)工作组也都建议使用报文抽样技术进行流量检测,并推荐了优先使用的抽样算法。工业界已有采用抽样机制的商业产品,目前各高端路由器和网络监控管理系统中的流信息统计与发布系统均采用了报文抽样技术,如思科的NetFlow、华为的NetStream、瞻博网络的cflowd,以及美国惠普和网捷等公司支持的sFlow等。因此,研究报文抽样技术对流量识别的影响,不仅可以使网络流量识别算法在可接受的误差范围内处理更多网络流量,进一步提升流量识别效率,还可以将网络流量识别算法直接应用于NetFlow或其他从路由器采集的流记录,并能与以流记录为输入的网络管理系统相结合,提高流量识别的实用性。本书选择抽样环境下基于流记录的流量识别作为研究对象,以抽样机制为贯穿行为特征捕获与分析、属性选择、流量识别三个环节的一条主线,*终形成一套完整、高效的流量识别算法。
1.2 基于机器学习的流量识别算法研究现状
国内外在流量识别方面已经开展了较长时间的研究,也取得了不少成果。网络流量识别的研究共经历了三个阶段[2],第一阶段网络端口号相对固定,因此选用端口号进行协议识别成为早期网络流量识别的重要依据,典型的代表为CoralReef[3],主要通过互联网地址分配机构(Internet Assigned Numbers Authority, IANA)提供的固定端口号来标记流量类型。随着网络技术的发展,各种新型应用(如P2P、网络地址转换等)的广泛出现导致端口号不再成为区别协议的标志,采用端口号识别方法误判的概率越来越高,从而难以正确识别相应流量的类型。第二阶段的研究目标是通过深度报文检测算法识别网络流量,主要采用快速模式匹配技术在整个应用层数据中进行查找,其典型代表是L7-filter[4]。但是该技术可能涉及隐私问题,且随着加密网络流量的出现,这种方式也愈加不能满足当前的识别需求。第三阶段的研究目标则是通过对流量特征属性的抽取并采用机器学习[5-16]算法进行训练及分类识别,该算法克服了深度报文检测无法识别隐私和加密流量的问题,典型的代表是由Li等[17]提出248种测度属性(附表),并采用贝叶斯算法进行流量识别。基于机器学习的流量识别算法[18-21]主要利用网络流量统计特征属性来构建函数模型,将数据集划分成不同类型。目前,基于机器学习的流量识别算法可以在一定程度上克服深度报文检测技术的缺陷,能够识别加密的网络流量以及HTTP隧道(HTTP tunnel)等流量,但其抽样环境和全报文采集不同,使得原有的与识别相关的技术已不能完全适用。因此,迫切需要构建能够完成抽样环境下的流量识别框架,包括网络特征数据捕获与分析、属性选择算法研究,并构建合理基于行为特征的流量识别模型。
1.2.1 属性选择算法研究
属性选择作为基于流记录流量识别的前端,通过选取对识别*具代表性的行为特征,降低测度属性集合的维度,减小属性测度计算和机器学习算法的时空复杂度,对提高流量识别模型的推广能力具有一定的意义。目前,属性选择算法大致分为两种,即Filter[22]模型和Wrapper[23]模型。Filter模型主要通过评价函数来完成属性区分,且评价函数和分类器是相互独立的;而Wrapper模型则是将分类器的错误率作为评价机制来完成属性的区分;其相应的算法已经在一些高维度的数据中得到了极其广泛的应用[24,25]。
目前,在流量识别研究领域,属性选择算法仅限于对过多流统计属性进行属性选择以提高分类识别的查准率和效率。Moore等[26]采用基于快速相关滤波器(fast correlation based filter, FCBF)的属性选择算法对248种测度属性进行选择。从数据采集角度分析,为了降低采集负担,Bernaille等[27]提出只统计前几个报文数据来达到流量识别的目的。文献[28]针对样本的不均衡性提出了加权对称不确定性和ROC①曲线下面积(weighted symmetrical uncertainty and area under ROC curve, WSU_AUC)的属性选择算法,以克服由目标对象变动引起的不均衡性问题,一定程度上提高了识别正确率,然而由于其计算复杂度偏高,难以适用于目前海量网络流量数据的识别。文献[29]提出了三种新测度(友好性、稳定性、相似性),并将其应用到属性选择中进行评估,实验结果表明,所提出的测度能提高属性选择的有效性,然而同样存在计算复杂度偏高的问题。尽管上述研究在一定程度上提高了属性选取的精度,但同时也增加了计算复杂度。在抽样环境下,经过报文抽样后,随着流内报文数量的减少,虽然在一定程度上能降低计算复杂度,但也会给行为测度属性带来一定的影响。
基于行为识别应用的流量算法依据各协议所特有的行为特征进行抽样,而抽样技术会改变流量的行为特征分布,同时将直接影响流量识别的过程和结果。报文抽样对应用协议识别查准率的影响主要反映在报文抽样对协议行为测度分布的影响上,主要包括两方面:①报文抽样对时间维度上应用流传输行为分布的影响;②报文抽样间接造成流抽样对空间维度上主机行为分布的影响。报文抽样会导致样本集中信息的缺失,使得识别算法在信息选择时的识别正确率下降,以C4.5分类算法为例,该算法采用信息增益率来选择属性,抽样后属性信息熵增加,在进行属性选择时易出现选取偏差,*终导致流量识别正确率下降。目前,已有的属性选择算法很少考虑抽样对流量行为特征的影响,显然必须设计一种新的属性选择算法适用于当前抽样环境,以提高流量识别正确率。
1.2.2 基于机器学习的流量识别算法研究
基于流记录的流量识别算法可以分为有监督学习的流量识别算法和无监督学习的流量识别算法。有监督学习的流量识别算法首先通过训练数据构建识别函数模型,进而利用该模型进行流量数据识别。而无监督学习的流量识别算法无须训练数据,只需要根据数据特征属性的相似度自动生成聚类结果,使同一类数据集合中的特征向量相似度尽可能大,不同数据集合中的特征向量相似度尽可能小。其中,文献[26]和[30]将有监督学习的流量识别算法应用于流量识别中。Moore等[26]*早选用朴素贝叶斯(naive Bayes, NB)算法对网络流量进行识别,但只关注了传输控制协议(transmission control protocol, TCP)流量,研究对象具有一定的局限性。李君等[30]应用多种贝叶斯算法实现P2P业务识别,并比较算法的识别性能与代价,得出基于K2学习算法的贝叶斯网络、树增强型朴素贝叶斯(tree augmented naive Bayes, TAN)网络和贝叶斯网络增强朴素贝叶斯(Bayesian network augmented naive Bayes, BAN)算法的识别正确率相对较高且所需的识别时间较少,是比较理想的识别算法。但该算法是一种基于概率的学习算法,过于依赖样本空间的分布,具有潜在的不稳定性。后来Moore等[26]通过FCBF选择策略算法并采用核估计技术朴素贝叶斯核(naive Bayes kernel, NBK)对NB算法进行改进,识别正确率从65%提高到95%以上。李君等[30]比较了FCBF+NBK和SVM[31-36]两种算法,结果表明,SVM算法在不使用任何属性过滤策略的情况下,识别正确率仍略胜于FCBF+NBK,并能有效避免不稳定因素带来的干扰,在处理流量识别问题时具有明显的优势。然而,该算法仅考虑查准率问题,并未关注训练模型的时间开销。Alshammari等[37]使用重复增量剪枝以减少错误(repeated incremental pruning to produce error reduction, RIPPER)和C4.5两种分类算法进行识别,比较得知C4.5分类算法的检测速度和错误率优于RIPPER分类算法。此外,虽然C4.5分类算法可以有效避免网络流分布变化带来的影响,但仍不能实现真正意义上的网络流量在线识别[38]。
无监督学习的流量识别算法无须预先训练分类模型,因此能识别新型的网络应用类型产生的流量数据,从而得到了更多的关注。其中,基于划分的K-means聚类算法[39]、基于密度的带噪声的空间聚类应用(density-based spatial clustering of applications with noise, DBSCAN)算法[40]、AutoClass算法[41]等基于无监督学习的流量识别算法先后用于网络流量识别中,并取得了较好的效果。
有监督学习的流量识别算法无法对未知流量进行划分,而无监督学习的流量识别算法虽然能够对未知流量进行分类,但无法对其进行识别,因此综合两者的优势,文献[12]提出了基于半监督学习的流量识别算法。目前,采用多分类器融合算法对流量进行识别的研究仍处于初级阶段,相应的文献比较有限。Ichino等[42]提出了基于评分策略融合的流量识别模型,采用流中的五个流测度,对五种应用类型进行了分类实验。另外,Dainotti等[2]提出的多分类器融合算法将成为未来的研究热点之一,并可以采用投票、贝叶斯概率、证据理论、行为知识空间等融合方案来解决分类器中的融合问题。尽管多分类器融合具有一定的前沿性,但面对抽样环境如何进行有效的工作仍是值得研究的问题。
*近,深度学习算法作为机器学习领域中一个新的研究热点,已经被广泛应用于图像处理及识别领域。目前,也有不少研究人员采用深度学习算
展开