基于WM算法改进的多模式匹配算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第29卷第4期吉林大学学报(信息科学版)Vol.29No.4 2011年7月Journal of Jilin University(Information Science Edition)July2011
文章编号:1671-5896(2011)04-0383-05
基于WM算法改进的多模式匹配算法
董迎亮a,玄雪花a,王德民b
(吉林大学a.计算机科学与技术学院;b.网络中心,长春130012)
摘要:为提高入侵检测系统整体的性能和效率,在研究经典的WM(Wu-Manber)多模式匹配算法的基础上,提出一种改进的WM多模式匹配算法。

该算法使用后缀表方法,减少了匹配过程中模式字符串与文本的比较
次数。

实验结果表明,该算法有效提高了入侵检测系统匹配的速度和效率。

关键词:入侵检测;多模式匹配;Wu-Manber算法
中图分类号:TP393.08文献标识码:A
Improved Multiple Patterns Matching Algorithm Based on WM Algorithm
DONG Ying-liang a,XUAN Xue-hua a,WANG De-min b
(a.College of Computer Science and Technology;b.Network Center,Jilin University,Changchun130012,China)
Abstract:To improve the efficiency of intrusion detection system,we analyzed WM(Wu-Manber)multiple patterns matching algorithms,and then presented an improved patterns matching algorithm.This algorithm uses trail table to decrease the comparison times in matching process.The experiment result shows that it improves the intrusion detection system matching efficiency.
Key words:intrusion detection;multiple patterns matching;Wu-Manber algorithm
0引言
随着计算机网络技术的飞速发展,网络安全也受到人们越来越多的关注。

为了更全面地保护网络环境,仅靠传统的防火墙技术已经不能完全满足网络安全的需求。

入侵检测技术被公认为是防火墙之后的第二道安全闸门,可以弥补防火墙技术明显的不足,为网络安全提供实时的入侵检测以及相应的防护手段。

在高速网络环境中,如果模式匹配算法不能满足处理大量实时网络数据包的要求,入侵检测系统必然会丢弃部分网络数据包,而这些被丢弃的数据包中就可能包含入侵信息。

由于模式匹配算法的性能直接影响入侵检测系统的检测效率,笔者将以基于误用检测技术的模式匹配算法为研究目标,提出一种改进后的WM多模式匹配算法。

该算法与原WM(Wu-Manber)算法相比具有运算效率高的优点。

1模式匹配算法
模式匹配[1-7]是指在给定长度为n的文本串T=T[1]T[2]…T[n]中查找长度为m的模式串P= P[1]P[2]…P[m]的首次出现或多次出现的过程,其中T[i](1≤i≤n),P[j](1≤j≤m)∈∑(字符集)。

若在T中能找到P的出现,则称匹配成功;否则称匹配失败。

一次在文本中只能对一个模式串进行匹配的算法,称为单模式匹配算法,可同时对多个模式串进行匹配的算法称多模式匹配算法。

收稿日期:2011-04-13
作者简介:董迎亮(1982—),男,长春人,吉林大学硕士研究生,主要从事计算机网络安全研究,(Tel)86-136********(E-mail)liangdyl @;王德民(1958—),男,长春人,吉林大学教授,硕士生导师,主要从事智能网络与数据库、网络安全研究
(Tel)86-138********(E-mail)wdm@。

483吉林大学学报(信息科学版)第29卷
1.1经典的单模式匹配算法
最简单的模式匹配算法是BF(Brute-Force)算法。

在BF算法的文本串T和模式串P的字符比较中,首先比较T第一个字符和P的第一个字符,如果相等,则比较下个字符,如果不相等,T指向下一位,与P重复上述过程。

由于在匹配过程中,T的指针经常回溯,导致BF算法效率很低。

在最坏情况下,时间复杂度为O(mn)。

1970年,Cook从理论上证明了一维模式字符串的匹配问题可以在O(m+n)时间内完成。

Knuth 等[1]借鉴了Cook的思想,在BF算法的基础上提出了一种快速模式匹配算法,称为KMP(Knuth-Morris-Pratt)算法1,该算法消除了BF算法的文本串指针在相当多个字符比较相等后,只要有一个字符比较不匹配,便需要文本T回溯的缺点。

使算法的效率得到了大幅度提高,时间复杂度达到最理想的O(m +n)。

1977年,Boyer等[2]提出了一个全新的模式匹配算法———BM(Boyer-Moore)算法。

该算法在匹配过程中,模式串P从左向右移动,但与文本串T的比较按照从右向左的次序进行。

BM算法最主要的特点是在匹配过程中,可以跳过很多无用的字符。

通过这种跳跃式的匹配,获得了极高的匹配效率。

1990年,Sunday[3]提出了一种比BM算法搜索速度更快的算法———Sunday算法。

其核心思想是在匹配过程中,模式串P并不要求一定要按从左向右的顺序进行比较还是从右向左的顺序进行与文本串T 的比较,它在发现不匹配时,算法能跳过比BM算法更多的干扰字符进行下一步的匹配,从而提高了匹配效率。

1.2经典的WM多模式匹配算法
1994年,Wu等[8]提出了多模式匹配算法(WM:Wu-Manber),该算法具有实现过程简单、逻辑清晰和运行效率高等特点。

WM算法在设计上广泛借鉴了BM算法的思想,采用散列(Hash)技术和高效过滤等方法,减小了匹配冲突对算法执行效率的影响。

WM算法将文本串T中的每B个字符分一个字符块,B为每个字符块的长度,B的值通常取2或3。

在本文中,B=2。

首先对模式串P进行预处理,在预处理阶段需要构造3张表:shift表、hash表和pre-fix表。

WM算法的主要匹配过程:从文本串T的第m-B+1个字符处开始(m为模式集合中最短模式串的长度),计算当前字符块的哈希值h,然后查找shift表中的shift[h]的值,当shift[h]=0时,则计算文本串T的首字符块的哈希值h',在prefix表中进行查找prefix[index]=h'(index为模式串的下标)。

然后将文本串与模式串index逐个字符进行比对。

如果shift[h]≠0,模式串P将向右移动shift[h]个字符,重复上面的过程。

WM算法的主要优势是字符跳跃距离大,使用shift表可以跳过那些不可能成功的匹配入口,匹配入口点少,从而对字符的匹配次数减少,匹配的效率提高。

2改进后的WM算法
通过对WM算法的分析,发现该算法使用了字符块技术,增大了模式串与文本串之间不匹配的概率。

因此在匹配过程中会跳过许多无用的字符,提高了匹配效率。

而且WM算法还使用了前缀表过滤掉了不符合的模式串,进一步减少了匹配的时间。

目前,WM算法被公认为是多模式匹配算法中匹配效率极高的算法之一。

但通过对该算法的进一步研究发现,WM算法还可以完善和改进。

WM算法的一个明显不足在于,在查找特定模式串过程中只对模式串集合中所有模式串前m个字符进行比对,m个字符后面的字符没有做任何的操作。

那么WM算法在查找特定模式串过程中,浪费了对m个以后字符串的资源。

假设,模式串集合中有100个模式字符串与文本串T进行匹配,其中10个模式串的长度为2,10个字符串为4,其余80个字符串长度为100,取字符块长度B=2。

由于WM 算法只关心字符块的哈希值h是否为0和文本的首字符块的哈希值h'是否存在于前缀表prefix中。

在shift[h]=0与h'∈prefix表时,就会将对应的模式串与文本串进行逐个字符比较。

假如,该模式串恰好是长度为100,则该模式串与文本串将会匹配100次才能确定是否匹配成功。

如果该模式串与文本串的第99或第100个字符不匹配,则前面逐个字符匹配的98次就会浪费。

当然这里说的是特殊情况,主要为了说明WM算法在匹配过程中的不足。

针对WM 算法在查找特定模式串时产生的资源浪费问题,笔者提出了一种增加一张后缀表(trail 表)的方法,可以有效解决上述问题。

该方法可以过滤掉更多的无效模式串,从而提高了匹配特定模
式串的效率。

在文本进行匹配时,判断条件会变为shift [
h ]=0,prefix [P ]=text_prefix 和trail [P ]=text _trail 。

后缀表的建立与前缀表建立方法类似。

改进后WM 算法的预处理过程,需要建立4张表:shift 表、hash 表、prefix 表和trail 表。

shift 表的建立:这里的移动表和正常的BM 算法的shift 表起相同的作用。

但是,为了避免一个一个地匹配的字符,考虑对一块长度为B 的字符块进行匹配的方法。

该方法可以明显跳过无用字符,提高算法的匹配效率。

设M 为所有模式总的大小,M =km ,m 为模式串集合中最短模式串的长度。

设c 为字母表的大小。

一个好的B 的取值应该是log c 2M ,取B =2。

设W 是长度为B 的块字符,则在Shift 表构造的过程中将分以下两种情况。

1)如果W 不在模式串集合中任何模式串中出现,则shift [h ]=m -B +1。

2)如果W 出现在模式串集合的某些模式串中,设W 在模式串P 的位置index 结束,并且W 在模式
串集合的其他模式串中,都不会结束于比index 更后的位置,则shift [
h ]=m -index 。

hash 表的建立:当文本串T 中当前某段子串和模式串集合中某个或某些模式字符串发生匹配时,
即shift [h ]=0。

为了确定具体与哪个模式串发生了匹配,避免和模式串集合中所有模式字符串都进行比
表1Hash 表构造过程
Tab.1The construction process of hash table 模式串hash 表P 0:1234
hash [13108]=0P 1:ab cd efg hash [25444]=1
P 2:fg hi jklmn hash [26729]=2较,可以使用哈希技术最小化需要比较的数量。

计算B 个字符的哈希值,并将其作为哈希表的索引,哈希表的值就是该B 个字符所在模式字符串的索引。

设h 为当前文本后缀的哈希值,假设shift [h ]=0,则从第hash [h ]个模式字符串
开始匹配。

匹配的次数为h 在所有模式字符串后缀的哈希值出现的次数。

hash 表具体构造过程如表1所示(由于所给
模式串最小长度为4,则在表1中hash 表的索引值,是对应模式串P 中加粗的两个字符的哈希值)。

prefix 表的建立:所有的有相同后缀的模式字符串在哈希表中有相同的入口值。

当文本中出现这样
一个后缀时,当发现shift [h ]值为0,不得不单独检查所有带有这个后缀的模式字符串是否和文本匹配。

为了加速此查找过程,还需要引进前缀表。

除了匹配所有模式的后B 个字符,也匹配前缀表中的所有模式字符串的头B'(在本文中B'=2)个字符。

prefix 表的具体构造过程如表2所示(在表2中prefix 表的值,是对应模式串P 中加粗的两个字符的哈希值)。

trail 表的建立:为了加速查找具体模式串过程,在引入了前缀表的基础上,又引入了后缀表。

除了匹配前缀表中的所有模式字符串的头B'个字符,也同时对比后缀表中的所有模式字符串的B''(在本文中B''=2)个尾字符块。

prefix 表的具体构造过程如表3所示(在表3中trail 表的值,是对应模式串P 中加粗的两个字符的哈希值)。

表2Prefix 表构造过程
Tab.2The construction process of prefix table
模式串prefix 表P 0:1234
prefix [0]=12594P 1:ab cdefg
prefix [1]=24930P 2:fg hijklmn prefix [2]=26215表3Trail 表构造过程Tab.3The construction process of trail table 模式串trail 表P 0:1234trail [0]=13108P 1:abcde fg
trail [1]=26215P 2:fghijkl mn trail [2]=28014
改进后WM 算法的主要匹配过程(每次扫描B 个字符T [
m -B +1]…T [m ])。

1)扫描文本的末B 位T [m -B +1]…T [m ],通过hash function 计算其哈希值h 。

2)查shift 表,若shift [h ]>0,text 小指针向右滑shift [h ]位,执行1);shift [
h ]=0,执行3)。

3)首先计算文本当前位置前m 位与前m -1位的前缀的哈希值,记为text_prefix ;然后根据前缀表的查找结果,得到模式串的长度l ,计算当前文本后l -m 与后l -m +1位的后缀哈希值,记为text_trail 。

4)对于每个P (hash [h ]≤P <hash [
h +1]),判断是否prefix [P ]=text_prefix &&trail [P ]=text_5
83第4期董迎亮,等:基于WM 算法改进的多模式匹配算法
trail 。

如果相等,对真正的模式串和文本进行逐字符匹配。

3改进后WM 算法性能测试
基于对WM 算法的研究,将对改进后的WM 算法进行模拟测试实验。

具体实验环境:CPU 为Intel Celeron 1.6GHz ,内存为256MByte ,硬盘80GByte ,操作系统为Windows XP ,算法的实现工具为Visu-al C ++2010。

测试文本为6000个由英文、数字和标点符号随机组成。

在文本中随机选取长度为2,4,8,20,50,100的模式串,并随机组合成8组总个数分别为20,50,80的模式串集合,依次进行测试。

3.1实验结果
在上述实验环境中,分别对WM 算法和改进算法进行测试,得到的实验数据如图1所示。

图1时间比较图
Fig.1Time comparison
3.2算法性能分析
通过图1可以看出,改进后WM 算法在执行效率上比WM 算法高,匹配所花的总时间少。

主要原因是,在进行模式匹配过程中由于采用后缀表作为前缀表过滤模式字符串的补充的方法。

该方法能有效过滤掉更多无用模式字符串,从而节省了算法整体匹配时间。

因为对长度过大的模式串与文本进行匹配时,占用算法整个匹配过程的部分时间。

由于使用了后缀表方法,直接过滤掉了长度较长的模式串。

因此,节省了该模式串与文本逐个字符比较的时间。

由此可见,改进后的WM 算法在实际应用中,尤其在多个模式串长度差距较大情况下,能比原WM 算法获得更高的匹配效率。

4结语
随着光纤高速网络的逐渐普及,网络数据的流量骤然增加。

所以必须提高网络入侵检测系统的检测引擎性能,才能满足大流量网络环境的要求。

由于入侵检测系统大多是基于使用模式匹配技术的系统,因此如何提高模式匹配算法的效率就成为提高整个入侵检测系统性能的重中之重。

国外著名的开源入侵
检测系统Snort [9,10]
在字符串检测上花费高达70%的执行时间和80%的指令执行时间。

笔者对经典的多
模式匹配算法进行了研究,在WM 算法的基础上,提出了一种改进后的WM 算法,在保留WM 算法的启发式搜索技术特点的基础上,新增加后缀表,有效地过滤掉无用模式串对原WM 算法匹配过程中的干扰。

实验结果表明,改进后的WM 算法,能显著提高模式匹配的匹配速度,从而提高入侵检测系统的整体检测性能。

参考文献:
[1]KNUTH D E ,MORRIS J H ,PRATT V R.Fast Pattern Matching in Strings [J ].Computer ,1977,6(2):323-350.[2]BOYER R S ,MOORE J S.A Fast String Searching Algorithm [J ].Communications of the ACM ,1977,20(10):762-
772.
[3]SUNDAY D M.A Very Fast Substring Search Algorithm [J ].Communications of the ACM ,1990,3(8):130-144.683吉林大学学报(信息科学版)第29卷
[4]肖菲,陈贺新,许万里.模式匹配和过零率检测的音频差错掩盖[J ]
.吉林大学学报:信息科学版,2011,29(1):1-6.
XIAO Fei ,CHEN He-xin ,XU Wan-li.Audio Error Concealment Based on Pattern Matching and Zero-Crossing Detection [J ].Journal of Jilin University :Information Science Edition ,2011,29(1):1-6.
[5]王琳珠,范亚芹,胡可刚.基于Ad Hoc 的有效广播路由算法[J ]
.吉林大学学报:信息科学版,2009,27(1):40-43.
WANG Lin-zhu ,FAN Ya-qin ,HU Ke-gang.Effective Broadcasting Routing Algorithm Based on Ad Hoc Network [J ].
Journal of Jilin University :Information Science Edition ,2009,27(1):40-
43.[6]胡亮,王程明,赵阔.基于人工免疫模型的入侵检测系统中检测器生成算法的分析与改进[
J ].吉林大学学报:理学版,
2010,48(1):67-72.HU Liang ,WANG Cheng-
ming ,ZHAO Kuo.Research and Improvement of Detector Generation Algorithm in Intrusion Detec-tion System Based on Artificial Immune Model [J ].Journal of Jilin University :Science Edition ,2010,48(1):67-72.[7]胡亮,金刚,于漫.基于异常检测的入侵检测技术[
J ].吉林大学学报:理学版,2009,47(6):1264-1270.HU Liang ,JIN Gang ,YU Man.Techniques of IDS Based on Anomaly Detection [J ].Journal of Jilin University :Science Edition ,2009,47(6):1264-1270.
[8]WU Sun ,MANBER U.A Fast Algorithm for Multi-Pattern Searching [R ].Taiwan ,China :Department of Computer Sci-
ence ,Chung-Cheng University ,1994.
[9]ARBOLEDA A F.Snort Diagrams for Developers [EB /OL ].(2005-04-14).[2011-02-10].http ://afrodita.unicauca.
edu.co /-cbe -don /snort /snortdevdiagrams.pdf.
[10]唐谦,张大方.基于Snort 的入侵检测引擎比较分析[
J ].计算机工程与设计,2005,26(11):2884-2886.TANG Qian ,ZHANG Da-fang.Intrusion Detection Engine Comparison Based on Snort [J ].Computer Engineering &Design ,2005,26(11):2884-2886.(责任编辑:刘俏亮)783第4期董迎亮,等:基于WM 算法改进的多模式匹配算法。

相关文档
最新文档