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

  • 格式:pdf
  • 大小:252.49 KB
  • 文档页数:4

128 2007,43(15) Computer Engineering and Applications计算机工程与应用 

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

袁世忠 ,曹 曼 ,王燕燕 

YUAN Shi-zhong ,CAO Min ,WANG Yan—yan。 

1.上海大学计算机工程与科学学院.上海200072 

2.中原工学院数理系,郑州450007 

1.School of Computer Engineering&Science,Shanghai University,Shanghai 200072.China 

2.College of Science,Zhongyuan University of Technology,Zhengzhou 450007,China 

YUANShi—zhong.CAO Min,WANG Yan—yan.Improved pattern matching algorithm based on WM.Computer Engineering and Applications,2007,43(15):128-130. 

Abstract:The intrusion detection system always spends some time on pattern matching,thus speeding pattern matching algorithm 

is a significant research.This paper presents an improved pattern matching algorithm,called WMN,in which the duplicate 

functions in related tables are eliminated and the next character in a text window is used to determine the distance of right shift 

of the text window.The performance testing shows that the presented algorithm is more efficient. 

Key words:pattern matching;WM algorithm;WMN algorithm 

摘要:入侵检测系统中有部分时间用来进行模式匹配,因此提高模式匹配算法的处理速度具有重要的意义 从两个方面改进了 

目前公认效率较高的多模式匹配算法WM,设计出WMN算法,并对该算法进行了性能测试和分析。实验证明该文提出的WMN算 

法能够有效提高模式匹配的处理速度。 

关键词:模式匹配算法;WM算法:WMN算法 

文章编号:1002—833l(2007)l5—0128—03 文献标识码:A 中图分类号:TP3l1.5 

I 简介 

近年来随着高速网络技术的快速发展.入侵检测系统…如 何在高速网络环境下实时有效地正常工作已成为一个研究重 

点。目前大多数基于特征的模式匹配技术的入侵检测系统 艮 

难处理100 Mpbs网络满负荷时的数据量,而l 000 Mbps更是 

难以达到的目标。 

本文以面向高速网络环境下基于特征模式匹配技术的入 

侵检测系统为研究目标,设计了一种高效的多模式匹配算法, 

并用实验证明了改进算法的高效性。 

2 WMN算法 

2.1 相关定义 

为描述方便引入下述定义: 定义l T(text)为待匹配的主串,标识为y[O,l,…,n—l】,长 

度为,J n。 定义2 P(pattern)为待匹配的模式串,标识为x[0,l,…, 

m—l1,长度为,J m。 

定义3对 进行扫描时需要用的窗口window大小为m。 

定义4将window和 一端对齐,比较window中和P中 的字符称为尝试(attempt)。 

定义5在 中发现一个和P完全匹配或不匹配时.窗口 

右移值为s e。 

定义6对于给定的T=y[0,l,…,n—l1和P=x[0,l,…,m— 

l1,在 中寻找所有出现的P的过程称为模式匹配。 

2.2模式匹配算法简介 

根据在匹配过程中同时匹配的模式串个数,模式串匹配算 

法可分为单模式匹配算法和多模式匹配算法。 

最早的单模式串匹配算法是Brute—Force(BF)算法.该算 

法从主串 的第一个字符开始和模式串P中的第一个字符比 

较,若相等,则逐个比较后续字符,否则从 的下一个字符开始 

再重新和P的第一个字符比较;其最坏情况下的时间复杂度为 

O(m/t),且在 中出现多个与P部分匹配子串的情况下. 的 

指针需要经常回溯,算法的效率很低。1970年,Cook S.A在理 

论上证明了模式串匹配问题可以在O(m+n)时间内解决,随后 

Knuth D.E和Pratt V.R仿照Cook的证明构造了一个算法.与 

此同时,Morris J.H在研究正文处理时也独立地得到与前述两 人本质上相同的算法,这两个算法称为Knuth—Morris—Pratt算 

法(简称KMP算法)[31。KMP算法利用已匹配成功部分的信息, 

基金项目:上海市教委自然科学基金(the Natural Science Foundation of Shanghai Municipal Education Commission of China under Giant No 

05JC05051);上海市教委E研究院一上海高校网格项目(“SEC E—Institute:SharIshai High Institutions Grid”Project under Grant No 

200312)。 . 作者简介:袁世忠,男,副教授,研究方向为软件工程,分布式计算,网络入侵;曹曼,女,副教授,研究方向为分布式计算,面向对象技术,网格计算 王燕燕,女,副教授,研究方向为分布式计算,算法设计。

 维普资讯 http://www.cqvip.com 袁世忠,曹 雯,王燕燕:基于WM算法的多模式匹配改进算法WMN 2007,43(15) 129 

可以使P向前推进若干个而不只是一个字符,避免了重复比 

较。同时也实现了 指针的无回溯;KMP算法需要进行预处理 

计算一个shift表.用来确定发生不匹配时需要跳跃的距离;其 

搜索阶段最坏情况下的时间复杂度为O(mn)。1977年,Boyer R.S和Moore J.S设计了一个新的串匹配算法Boyer—Moore算 

法(简称BM算法) ,它是目前最常用、效率较高的算法之一。 

BM算法的基本思想是先对P进行预处理.计算两个偏移函 

数:Badchar(char ch)和GoodSuffix(String str),然后将 和P 

对齐.从右往左进行匹配,当 字符与P字符不匹配时,根据 

函数Badchar(char ch)和GoodSuffix(String str)计算出偏移 

值,取两者中的较大者作为 指针的右移量。在BM算法的基 

础上。又派生出许多算法,例如Boyer—Moore—Horspool算法151, 

该算法仅采用Badchar(char ch)来确定右移值。1980年,Karp 

和Rabin合作从截然不同于KMP算法和BM算法的途径研究 

出一种基于数值计算的新算法.称为Karp—Rabin算法[61(简称 

KR算法)。1990年,Sunday D.M提出了Quick Search算法f7】 

(简称QS算法),该算法实质上是BM算法的简化,在实际应 

用中是一种简洁高效的算法。 

多模式串匹配算法中一个经典算法是由Aho A.V和 

Corasick M.J提出的DFSA(Deterministic Finite State Automa— 

ta)算法[81。简称为AC算法,该算法通过构造有限自动机来进行 

匹配。构造有限自动机的过程就是将多模式匹配问题转化为单 

模式匹配问题.因此,完全可以在有限自动机构造完毕之后应 

用现有的快速单模式匹配算法来加快匹配速度。Sun Wu和 

Udi Manber近年在BM算法的框架下派生出又一经典的多模 

式匹配算法,称为WM算法[91。为进一步提高多关键字匹配的 

效率.多种改进算法被提出。N.Tuckt 01改变AC算法中的数据结 

构.提出一种压缩指针的方法来消除AC算法中内存消耗严重 

的问题。王永成…】基于AC等算法,结合单模式匹配的QS算法 

思想.提高了算法效率。张鑫lI 于WM算法,通过引入“精确的 

不良字符转移”和“弱化良好后缀转移”来提高算法性能。 

本文在分析WM算法设计不够完善的基础上,结合QS算 

法思想。利用字符间的位置信息,设计了一种更加高效的多关 

键字匹配算法——WMN(WM using Next character)算法。 

2_3 WMN算法 

2-3.1 WMN算法思想 WM算法采用字符块技术,增大了主串和模式串不匹配的 

可能性.从而增加了直接跳跃的机会:它使用前缀表进一步过 

滤不匹配的模式串,使算法获得了较高的运行效率。因此.在现 

有的多关键字匹配算法中,使用块字符、Hash技术和前缀特征 

表技术的WM算法通常被认为具有最高的效率。但对WM算 

法进行仔细分析之后,发现其还有设计不完善、需要改进的地 

方,包括: 

(1)HASH表和SHIFT表的功能有重合部分。SHIFT表取 值为0时对应的HASH表项非空.而HASH表中值为0的项 

对应的SHIFT表项值大于0。HASH表和SHIFTI’表都可以用 

来判断某个模式串是否需要进一步匹配,这使得空间利用率 

不高。 

(2)由于采用SHIfTr表值是否为O作为该模式串是否需 

要进一步匹配的判断条件。因此,当这个表项值为0时,无论匹 

配成功与否,匹配窗口的跳跃距离只能为1。这种情况较多时, 该策略会在较大程度上影响算法的效率。此时.应该在所有模 式串的前minlen一1(minlen为所有模式串的最短长度)个连续 

字符中寻找与该字符块相同的子串,实际安全的跳跃距离为1 

到minlen—B+I(B为字符块的长度)。 

(3)正文当前窗口的最右边一个字符块不出现在任何模式 

串中时.跳跃距离等于mmlen—B+I是安全的,但也是保守的, 

使得算法不够高效.在模式串长度较短时对效率的影响更加明 

显。当这个字符块不出现在任何模式串中.并且所有模式串的 

前缀和该字符块的后缀没有重叠部分时,最大的安全跳跃距离 

可达到minlen 针对以上不足之处.从两方面对WM算法进行改进:(1) 

使用HASH表作为进一步匹配的人口,而SHIfTr表仅用来提 

供跳跃值。(2)利用当前窗口的下一个字符来辅助计算跳跃距 

离。由于每次尝试以后的跳跃距离至少为1,故下一次尝试中 

一定包含当前窗口的下一个字符。因此在计算跳跃距离时可以 

利用该字符带来的信息。将该字符与当前窗口的最后B一1个 

字符一起作为长度为曰的字符块考虑.同原来的字符块一起 

来计算跳跃距离,以获得最大跳跃值。 

WMN算法基于上述思想,继承了WM算法的字符块技 

术、散列技术以及前缀表的思想,考虑当前窗口的下一字符,利 

用两个字符块来计算跳跃距离.以在每次尝试之后获得尽量大