基于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算法的字符块技
术、散列技术以及前缀表的思想,考虑当前窗口的下一字符,利
用两个字符块来计算跳跃距离.以在每次尝试之后获得尽量大