当前位置: 查字典论文网 >> 改进的双重特征协议识别方法研究

改进的双重特征协议识别方法研究

格式:DOC 上传日期:2022-12-03 00:16:03
改进的双重特征协议识别方法研究
时间:2022-12-03 00:16:03     小编:曹登高

【 摘 要 】 传统识别方法难以满足现实网络环境的实际需要。文章利用协议的端口和特征串双重特征进行识别,并且根据实际的网络统计所需要识别协议的真实流量,正确化简正则表达式来实现对协议识别的加速。结果证明,与L7-filter正则表达式识别方法比较,采用方法能有效降低资源消耗和匹配时间,提高识别率。

【 关键词 】 协议识别;正则表达式;特征串

1 引言

快速准确地对网络进行流量控制、网络计费及内容过滤识别是当今计算机网络发展面临的重要问题,这对政府管理部门、网络管理员、运营商等都有十分重要的意义。协议识别技术解决了这一问题,尤其在网络安全监控领域,通过协议识别技术对捕获的数据包进行分析,判断协议类型,分析其特征,从而在入侵检测或网络攻击等方面起到很大作用。本文在对传统识别方法分析的基础上,以识别正确率高、速度快、算法复杂度小为基本原则,提出了一种基于数据分类和正则表达式匹配的应用层协议识别方法。

2 传统的协议识别算法

2.1 基于端口的协议识别算法

这种识别算法使用IANA规定的固定端口号来进行相应的应用层协议识别,仅能识别固定端口的应用层协议识别率高。但是大量的应用层协议为了避免识别, 逃避防火墙的检查,使用随机端口进行通信。大量涌现的新协议都不在IANA中注册其端口号, 因此算法所能识别的协议在总协议数量中所占的比重越来越少,已不能适应于当前网络环境。该算法简单, 消耗系统资源少,时空复杂度是所有算法中最低的。

2.2 基于特征串的协议识别算法

这种识别算法是对检测到的每一个数据包按照特征串进行搜索,和应用层协议中出现的多个特征串进行精确匹配,此方式在所有识别算法中准确率最高。由于需要逐报文的匹配所有协议的特征以及额外的存储报文的负载部分,该类算法的时空复杂度是目前所有算法中最高的,并且随着待识别协议数量的增长而增长。正则表达式是当前比较流行的特征串匹配语言,利用正则表达式进行协议识别可以将原来复杂且繁琐的报文数据特征串匹配过程变成可自动处理的工作。该类算法通常只被用在需准确识别数量较少的协议时,且需要有相当的工作量,无法应用在高速网络环境下进行大规模的协议识别。

2.3 基于行为特征的协议识别算法

这种识别方法是利用协议规范的不同所造成的流特征差异区别各个协议。它需要有一个训练样本数据集作为输入,构建一个分类器或者分类模型,该模型能够把网络上的数据流映射到指定类别中的一种。该方法较端口识别方法有较高的准确性,较特征串识别方法较小的复杂度,但是由于判别算法不成熟,识别不够细致,制约了这种识别方法的使用。

3 基于端口与正则表达式匹配的应用层协议识别方法

由于传统识别方法难以满足现实网络环境的实际需要,本文提出利用协议的端口和特征串双重特征进行识别,并且根据实际的网络中统计所需要识别协议的真实流量,正确化简正则表达式来实现对协议识别的加速。在此基础上按几个步骤完成识别:第一步基于端口的识别方式,进行初步识别;第二步采用正则表达式的识别方法,将其转化成DFA完成匹配;第三步如果匹配成功,识别结束。如果不成功,说明该协议采用的随机端口,放弃第一步筛选模式,转入第二步,直至识别成功。

3.1 基于端口的数据流初步识别

利用端口进行应用层协议识别,主要原理就是因为存在公认端口和注册端口,从端口0到1023对应着因特网上常见的服务和应用程序,有确切的定义。HTTP(Web服务器)、POP3/SMTP(电子邮件服务器)以及Telnet等常用应用程序通常使用这些端口号。一旦检测到网络中具有这些端口的流量,即可识别出其对应的协议。但是由于很大一部分协议都使用随机端口,因此,初步识别的正确性要在下面的识别过程中进一步证实。

3.2 正则表达式协议识别方法

正则表达式(Regular Expression)作为一种表示语言,定义了自己的一套描述方式,来描述各种的字符类,由普通字符以及特殊字符组成的字符模式,然后将字符模式与所搜索的字符串进行匹配。典型的使用正则表达式进行协议识别的软件为L-7 Filter,它是基于Linux的Netfilter/Iptables上一个开放源代码的软件,实现了应用层协议的识别。它通过对报文的依次解封,直接提取应用层数据内容,利用提供的正则表达式对提取出的数据内容进行匹配,从而识别协议类型。为了降低协议识别的假阳性及提高识别正确性,L-7 Filter也在不断更新其正则表达式模式。

正则表达式的匹配是建立在自动机的理论基础上的,正则引擎会按照表达式构建相应的自动机。若输入一串文本之后,自动机抵达了接受状态,则这串文本可以匹配用户指定的正则表达式,否则为不能匹配。正则表达式通常用有限自动机完成匹配,按照转移函数的不同,有限自动机表示有非确定的有穷状态自动机(NFA)和确定的有穷状态自动机(DFA)两种。

在L-7 Filter中提供了常见应用层协议的正则表达式以及正则式模式编译转换成NFA和DFA的实现。我们通过实验证明流量达到90Mbps时,对几十种常见协议全部进行NFA匹配,L7-filter系统接近死机。造成系统性能低下的原因主要为使用NFA匹配引擎进行过多的正则表达式匹配。正则表达式匹配引擎必须满足两个条件:一是足够快的处理速度,即每个输入字符只带来很少的状态转移;二是为每个流维护的中间状态尽可能少,DFA引擎完全满足这两个条件。

因此在系统中,首先通过端口的方法进行协议识别,通过使用基于DFA匹配引擎的正则表达式匹配进行协议识别,这样不仅能提高系统准确性,还能够加快协议识别速度。

3.3 正则表达式的简化

正则表达式的正确性是保证基于正则表达式的应用层协议识别准确率的前提,它在很大程度上影响协议识别的效率。我们也根据实际环境,通过在实际的网络中统计所需要识别协议的真实流量,修改部分正则表达式以满足自己的需要,同时也达到了减小DFA的数目和资源消耗的目的。部分协议正则表达式修改示例见表1。

4 实验结果

本文采用DARPA2000的数据集进行测试,总大小为79M,总报文为394096个。利用测试数据集得到的测试结果如表所示,端口与正则表达式匹配双重方法进行识别加速,对与Linux的L-7 filter识别结果进行对比见表2。采用本文识别方法比L-7 filter节省了46%的平均消耗时间和38.9% 的平均消耗空间,并且识别率也有提高。

5 结束语

针对传统协议识别技术的局限性,提出了一种基于端口和正则表达式的双重特征协议识别方法,并根据网络中所需要识别协议的真实流量,合理的简化其正则表达式,基于DFA匹配引擎实现协议的识别过程。实验证明,该文提出的识别可以在减少系统消耗和匹配时间的基础上,提高协议的识别效率,具有较好的可用性。

参考文献

[1] 陈亮,龚俭,徐选.基于特征串的应用层协议识别.计算机工程与应用,2006,24(4):16~19.

[2] Jeffrey E.F.Freidl. Mastering Regular Expressioin. CA:O`Reilly Media,Inc.,2006.

[3] 正则表达式参考文档[EB/OL]. http://www.regexlab.com/zh/regref.htm.

[4] Wiki protocol info, http://www.protocolinfo.org/wiki/Main_page.

[5] Application Layer Packet Classifier for Linux, http://L7-filter.sourceforge.net.

全文阅读已结束,如果需要下载本文请点击

下载此文档

相关推荐 更多