基于字符串多模式匹配的网络流量分类识别方法和设备与流程

文档序号:20492011发布日期:2020-04-21 22:07阅读:240来源:国知局
基于字符串多模式匹配的网络流量分类识别方法和设备与流程

本发明涉及文本或网络报文中的字符串多模式匹配技术,尤其涉及一种基于位置和字符串多模式匹配的网络流量分类识别方法和设备。



背景技术:

在解决网络流量分类和识别问题的深度包检测技术(deeppacketinspection)中,大量协议的传输层特征是有位置限制的。简单的比如像emule流量的传输层负载的第一个字节通常是0xe3,0xe4,或0xe5等特定字符。这样的特征很少的时候,是没必要采取算法的,直接按指定位置进行字符匹配即可。然而,在应用中这样的模式特征串集合往往是庞大的。如果模式串长度为m,个数为n,则每个目标串就要进行o(mn)时间复杂度的比较运算。这样繁复的计算对于实际的应用特别是实时应用来说显然是不可取的。依然以深度包检测技术中的应用为例,即便是几百种协议,每种协议不超过五个模式特征串,每个数据包都要匹配成千上万次,而实时应用中每秒钟就要处理几十万个数据包。此外,模式串集合中可能存在一些弱特征模式串是其他模式串的前缀子串,我们称之为前缀模式串。对于前缀模式串,多模匹配算法应避免其干扰其他模式的精准匹配。

多模式匹配问题是计算机各领域都可能涉及的基本问题。多模匹配问题可以简单地描述为:在一个目标文本串t中一次查找多个模式特征串q={p1,p2,…,pn},其中n是模式串的个数。例如,目标文本串t为:“abcdef123456”,模式串集合为:q={“abc”,“df”,“145”,“34”,“xyz”},则经过多模匹配之后,查找结果是:文本串t匹配到模式串集合q中的“abc”、“34”两个模式串。多模匹配算法通过对目标串进行一次扫描,便能找出所有匹配成功的模式串,具有很高的匹配效率,因此广泛应用于病毒检查、数据挖掘、协议识别等众多领域。

多模匹配有ac(aho-corasick)算法、wm(wumanber)算法等经典算法。以ac为例,它利用自动机的原理将字符匹配转化成状态转移。具体地说,ac算法首先根据给定的模式串集合建立一个有限/无限状态自动机,然后把目标串作为自动机的输入,如果匹配到终止状态结点,就认为匹配到了相应的模式串,其核心是要建立状态转移函数、失效函数和输出函数。然而,传统的多模式匹配算法并不能解决带有位置限制的多模匹配问题。



技术实现要素:

为了克服上述现有技术存在的不足,解决网络流量分类和识别中常见的具有位置信息限制的多模式匹配问题,本发明提出一种基于字符串多模式匹配的网络流量分类识别方法和设备,在字符串多模式匹配中,引入位置信息特征,建立基于位置信息的多模式字符串匹配自动机,当且仅当受检测的网络流量和特征字符串位置信息特征相符时,才进行字符串匹配,极大地减少了字符串多模式匹配过程中目标字符串和特征字符串的比较次数,网络流量分类和识别应用中,进行网络流量和特征库匹配时,使用本发明技术,可以达到线性时间复杂度,极大地提高了字符串匹配效率,提高流量分类识别的效率。

网络流量分类和识别应用中,根据网络报文的应用层特征如:ip、端口等进行网络报文所属协议的识别和分类,然而,网络协议应用层特征具有其局限性,比如:应用层特征较易发生变化;一些不同类型的网络协议,常常具有相同的应用层特征,因此,在网络报文应用层进行流量分类和识别的识别率和准确率都具有其局限性。在网络协议更底层的传输层,不同协议的报文差异性更大,因此本发明解决网络流量分类和识别应用中的传输层特征匹配问题。由于,大多数网络协议的传输层特征是有位置限制的。比如像emule流量的传输层负载的第一个字节通常是0xe3,0xe4,或0xe5等特定字符。因此,每种网络协议可以提取若干条可以表征自身协议类型的网络报文传输层特征字符串,形成报文识别和分类所依赖的已知网络协议特征字符串集合。网络流量识别和分类时,将未知网络报文和已知网络协议特征字符串集合进行匹配,根据匹配结果,对未知网络报文进行识别和分类。

因为不同类型网络协议通常只是在报文中特定位置进行特征标识,比如报文头部、尾部或其他部分特定位置的若干个字符,而其余的大多数信息对于流量识别是冗余的。因此可以只匹配已知网络流量各类别的特征字符串所包含特定流量位置部分的信息,跳过大量不必要的比较,从而大大降低字符串比较次数,实际应用中,由于不同网络协议传输层差异较大,所提取的特征字符串位置和字符取值差异也比较大,因此,多数情况只通过若干次比较即可确定未知网络流量的分类结果,网络流量识别和分类效率很高。

基于字符串多模式匹配的网络流量识别分类方法包括以下步骤:

首先,提取得到已知网络流量各类别基于位置的传输层特征字符串集合,建立基于位置信息的多模式字符串匹配自动机,具体步骤包括:

1.创建多叉树,根节点表示网络流量特征字符串集合匹配的开始位置;

2.对已知网络流量各类别基于位置的传输层特征字符串集合中每个特征字符串,将每个字符从左到右依次插入多叉树的每一层,树的内节点和终态节点中记录字符取值以及字符在该特征字符串中的位置;

3.循环执行第2步,直到所有已知网络流量各类别的特征字符串均已插入多叉树中,其中每个特征字符串是多叉树的一条从根节点到终态节点的路径;

4.当某个特征字符串的插入过程中是基于已存在的终态节点进行的时,说明已存在该特征字符串的前缀匹配特征串,则在该终态节点中增加前缀匹配标记,可选择布尔变量值true进行标记;

5.该多叉树即基于位置信息的网络流量识别和分类自动机。

其次,根据基于位置信息的网络流量识别和分类自动机进行未知网络流量的识别与分类,步骤包括:

1.从上述建立的基于位置信息的网络流量识别和分类自动机的根节点开始,基于深度优先遍历算法,将多叉树的每个节点和当前需要识别和分类的网络流量进行字符串比较;

2.基于位置信息的网络流量识别和分类自动机的每个节点与未知网络流量的字符串中的字符进行比较时,首先比较该节点和未知网络流量的字符串当前位置字符的位置信息,如果位置信息不同,则结束该条路径的遍历,返回上一层节点;如果位置信息相同,则比较字符取值是否相同,字符取值相同时将该条路径的下一个节点和未知网络流量的字符串下一个位置的字符进行比较,否则,结束该条路径的比较,返回上层节点;

3.未知网络流量的字符串匹配到自动机的终态节点时,如果终态节点的位置信息与字符值和未知网络报文字符串中的字符匹配成功,则返回该条路径表示的特征字符串或该特征字符串代表的网络流量类别,完成被检测网络流量的识别和分类;否则,说明该特征字符串匹配失败,逐级返回自动机的上层节点进行下一条路径的匹配。

4.基于位置的网络流量识别和分类自动机的终态节点在与未知网络流量的字符串中的字符进行比较时,如果该节点存在前缀匹配标记,则继续匹配该条路径和未知网络流量的字符串,如果匹配成功,则返回其中长度更长的特征字符串或其代表的网络流量类别,完成被检测网络流量的识别和分类;否则,返回该终态节点表示的特征字符串或其代表的网络流量类别,完成被检测网络流量的识别和分类。

在第一部分,建立的网络流量识别和分类自动机需要标定每个字符的位置信息,并且支持同一位置有多种可选字符的特征字符串;此外需要在自动机中标定前缀特征字符串,以防进行未知网络流量和已知网络流量类别的特征字符串匹配时,优先匹配前缀特征字符串造成误报。在第二部分进行未知网络流量和已知网络流量类别的特征字符串匹配时,本发明保障只有位置信息相符时才进行对应字符取值的比较;匹配到前缀特征字符串时能继续进行深度优先搜索以达到精确匹配的目的;当未知网络流量的字符串在自动机一条路径上匹配失效时,算法转移到自动机下一条路径继续进行匹配,避免漏报。

本发明提供一种基于字符串多模式匹配的网络流量识别和分类设备,包括基于位置的网络流量识别和分类自动机构建模块和基于位置的未知网络流量识别和分类模块。其中基于位置的网络流量识别和分类自动机构建模块用于根据已知网络流量各类别的特征字符串集合建立基于位置的自动机,基于位置的未知网络流量识别和分类模块则把未知网络流量的字符串作为基于位置的自动机的输入,在自动机中搜索位置相符且字符取值匹配的特征字符串,最坏情况即全部已知流量各类别的特征字符串均匹配失败,需要遍历自动机的全部路径。

与现有技术相比,本发明的有益效果是:

本发明突破应用层网络流量特征的局限性,根据已知网络流量各类别的传输层流量特征字符串集合,建立基于位置的网络流量识别和分类自动机,检测未知网络流量时,可以只匹配已知网络流量各类别的特征字符串所包含特定流量位置部分的信息,跳过大量不必要的比较,从而大大降低字符串比较次数,实际应用中,由于不同网络协议传输层差异较大,所提取的特征字符串位置和字符取值差异也比较大,因此,多数情况只通过若干次比较即可确定未知网络流量的识别和分类结果,网络流量识别和分类效率很高。

附图说明

图1为本发明采用基于位置的网络流量识别和分类自动机的一种实施方式示例图;

图2为本发明提供的基于位置的网络流量识别和分类方法一种实施方式示例图;

图3是本发明提供的基于位置的网络流量识别和分类设备一种实施方式示例图。

具体实施方式

为使上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

图3所示是本发明提供的基于位置的网络流量识别和分类设备一种实施方式,本发明提供了基于字符串多模式匹配的网络流量识别和分类设备包括基于位置的网络流量识别和分类自动机构建模块和基于位置的未知网络流量识别和分类模块,其中基于位置的网络流量识别和分类自动机构建模块用于根据已知网络流量各类别的特征字符串集合建立基于位置的自动机,基于位置的未知网络流量识别和分类模块则把未知网络流量的字符串作为基于位置的自动机的输入,在自动机中搜索位置相符且字符取值匹配的特征字符串。

图2为本发明提供的基于位置的网络流量识别和分类方法的一种实施方式示例图。具体实施包括如下步骤:

首先,对已知网络流量各类别的传输层特征字符串集合中的特征字符串进行解析,记录每个字符的位置信息、字符值以及是否是前缀特征字符串等信息。

第二步,依据上述信息,创建多叉树,根节点表示网络流量识别和分类自动机的开始;

第三步,对已知网络流量各类别基于位置的传输层特征字符串集合中每个特征字符串,将每个字符从左到右依次插入多叉树的每一层,树的内节点和终态节点中记录字符取值以及字符在该特征字符串中的位置;

第四步,循环执行第三步,直到所有已知网络流量各类别的特征字符串均已插入多叉树中,其中每个特征字符串是多叉树的一条从根节点到终态节点的路径;

第五步,当某个特征字符串的插入过程中是基于已存在的终态节点进行的时,说明已存在该特征字符串的前缀匹配特征串,则在该终态节点中增加前缀匹配标记,可选择布尔变量值true进行标记;

第六步,该多叉树即基于位置的网络流量识别和分类自动机。

例如,假设已知协议特征字符串集合为包含{(0|a)(2|b)(3|o)}、{(0|c)(1|a,b)(2|e)(3|f)}、{(2|x)(5|y,z)(6|w)}三个字符串。每个网络流量特征字符串用大括号表示,大括号内的一对圆括号内表示该网络流量类别在网络流量某一位置的特征,其中“|”之前的数字表示特征字符所处的网络流量中的位置信息,“|”之后的数据即为该网络流量位置处的特征字符取值,“,”表示该网络流量位置处可以有多种字符取值。根据该特征字符串集合,可以建立如图1所示的基于位置的网络流量识别和分类自动机,其中双环形结点表示终态节点,单环形结点表示内节点,标记为“root”的内节点表示自动机的开始位置,其他节点内“/”之前字母的是该节点的字符取值,“/”之后的数字是该节点应匹配的位置信息。

第七步,从图2建立的基于位置信息的网络流量识别和分类自动机的“root”节点开始,基于深度优先遍历算法,将多叉树的每个节点和当前需要识别和分类的网络流量字符串“caefdkj”进行字符串比较;

第八步,基于位置信息的网络流量识别和分类自动机的每个节点与未知网络流量的字符串中的字符进行比较时,首先比较该节点和未知网络流量的字符串当前位置字符的位置信息,如果位置信息不同,则结束该条路径的遍历,返回上一层节点;如果位置信息相同,则比较字符取值是否相同,字符取值相同时将该条路径的下一个节点和未知网络流量的字符串下一个位置的字符进行比较,否则,结束该条路径的比较,返回上层节点;在该实例中,首先比较未知网络流量字符串“caefdkj”第一个字符“c”的位置“0”和自动机最上层路径第一个节点“a”的位置“0”,位置相同,则比较字符内容,不相同,返回根节点;比较未知网络流量字符串“caefdkj”第一个字符“c”的位置“0”和自动机第二条路径第一个节点“c”的位置“0”,位置相同,则比较字符内容,字符内容相同,继续比较比较未知网络流量字符串“caefdkj”第二个字符“a”和自动机第二条路径上第二个节点,以此往下进行比对,最后匹配到终态节点,说明被检测的网络流量属于自动机第二条路径“caef”所代表的的网络流量类型。

第九步,未知网络流量的字符串匹配到自动机的终态节点时,如果终态节点的位置信息与字符值和未知网络报文字符串中的字符匹配成功,则返回该条路径表示的特征字符串或该特征字符串代表的网络流量类别,完成被检测网络流量的识别和分类;否则,说明该特征字符串匹配失败,逐级返回自动机的上层节点进行下一条路径的匹配。

第十步,基于位置的网络流量识别和分类自动机的终态节点在与未知网络流量的字符串中的字符进行比较时,如果该节点存在前缀匹配标记,则继续匹配该条路径和未知网络流量的字符串,如果匹配成功,则返回其中长度更长的特征字符串或其代表的网络流量类别,完成被检测网络流量的识别和分类;否则,返回该终态节点表示的特征字符串或其代表的网络流量类别,完成被检测网络流量的识别和分类。

通过上述步骤,实现基于字符串多模式匹配的网络流量分类识别。

需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1