正在加载图片...
基于 Snort入侵检测的后缀搜索算法的研究与改进 ◆胡朝举石倩 华北电力大学(保定)控制与计算机工程学院河北071000) 摘要: Snort是基于规则匹配的入侵检测系统,提高规则匹配的速度至关重要。本文通过对 Snort下基于后缀搜索的入侵检测算法BM 算法、WM算法的硏究,对wM算法进行了改进,将模式集合根据长度分为两部分,每个模式串建立子移动表。试验结果表明,改 进的算法提高了 Snort的入侵检测效率 关键词:入侵检测;模式匹配;WM算法 0引言 (3)好后缀在模式串中并不存在,则移动距离为m Snort入侵检测系统是目前使用最广的开源入侵检测系统之 BM算法的移动距离为好后缀机制和坏字符机制的最大值。 具有良好的跨平台性,并提供丰富的报警机制。 Snort的检3Wu- Manber(WM)算法及改进 测采用的是模式匹配策略。模式匹配过程是系统运行的主要过 WM算法继承了BM算法中的坏字符机制,但是WM算法 程,是系统主要的性能瓶颈。针对此问题已有很多学者做了大量依据长度为B的字符块进行跳跃 研究,文献[3]对BM算法做了改进,去除了传统的好后缀规则 3.1预处理过程 改进了坏字符规则。文献[4]提出一种基于随机指纹模型的多模式 预处理阶段建立三张表移动表( Shift table)、哈希表(Hash 匹配方法。文献[5]基于BM算法的优点改进AC算法,提出了多 Table)和前缀表( Prefix Table)来移动搜索窗口。 目标ACBM算法,大大降低重复搜索文本串的次数。文献[6] (1)建立移动表( Shift Table 把AC算法和BMH算法结合,只保留坏字符规则,最大移动距 记最小模式串长度m,只考虑每个模式串的前m个字符。 离为最短模式串长度。文献7]提出了一种改进的wM算法,减对m个字符中后B个字符创建一个移动表 少了重复比较次数。本文通过对后缀搜索算法的研究,对WM算 (2)建立哈希表( Hash Table) 法进行改进,提高了 Snort的入侵检测的效率 发生匹配时,为了确定匹配的字符串,避免和模式字符串全 1模式字符串匹配算法 部比较,使用哈希技术减少比较的次数。计算B个字符的哈希 已知字符集合E,大小记为P,模式串P-APPP315m,用作为哈希表的索引,哈希表的值就是该B个字符所在模式字符 文本串T=441-1∈21s≤n),m≤n,单模式字符串匹配即求解 串的索引。 O={l=P,1≤k≤m (3)建立前缀表( Prefix Table) 已知字符集合∑,大小记为||,Σ为正闭包,记文本串 有的有相同后缀的模式字符串在哈希表中有相同的入口 x1x}eE,模式串集合记为PP,v={mp}ex,值。当文本中这样一个后缀时,当发现shi值为0,不得不单独 模式集合长度总和为Pm字符串x、”、、",若y 检查所有带有这个后缀的模式字符串看它是否和T匹配,因此需 则x为y的前缀,a为的后缀,2为”的子串 要建立前缀表。匹配完所有模式串的B个字符和前缀表中的前B 多模式匹配问题可表示为求解集合 个字符,如果匹配成功,则让整个模式串去和文本进行逐字符匹 0=f1vj, 0<jsr, sIP]=[i+k,#t tosk<mi 后缀搜索是在搜索窗口内,模式匹配的是从右向左的搜索最 2搜索阶段扫描过程 长公共后缀。基于后缀搜索的算法经典的有BM算法、WM算法 算法的主要包括以下步骤:每次扫描B个字符m-B+m, 2 Boyer- Moore算法 如图1所 BM算法中匹配失败时,用两种机制来确定模式串向右移动哈希值h 1)扫描文本的末B位Tm-B+1.m通过hash函数计算 的距离:坏字符机制和好后缀机制。 (2)查表,若小>0文本指针向右滑刚位,转(1): 2.1坏字符机制 Shift]=0,转(3) 当P不包含c字符时 Bachar(c)= (3)计算文本当前位置前m位与前m-1位前缀的哈希值 mj,当P~目是最大整数(1≤j≤m) 记为 text prefix。 (1)导致不匹配的字符不在模式串P中,模式串向右取得 (4)对于每个p(面sp<ha地+),否则 最大移动距离m。 Prefix[p]= text prefix。如果相等,让真正的模式串去和文本进行 (2)导致不匹配的字符在模式串P中,则移动模式串最短 逐字符匹配 距离使可匹配字符与相应文本T字符对应 2.2好后缀机制 (1)好后缀在模式串中存在,那么好后缀和T中已匹配对 齐匹配 (2)好后缀的最大子串在模式串中存在,那么好后缀最大 区配a口b-口 子串和T对应子串对齐匹配 回四sr西基于 Snort 入侵检测的后缀搜索算法的研究与改进 ◆胡朝举 石 倩 (华北电力大学(保定)控制与计算机工程学院 河北 071000) 摘要:Snort 是基于规则匹配的入侵检测系统,提高规则匹配的速度至关重要。本文通过对 Snort 下基于后缀搜索的入侵检测算法 BM 算法、WM 算法的研究,对 WM 算法进行了改进,将模式集合根据长度分为两部分,每个模式串建立子移动表。试验结果表明,改 进的算法提高了 Snort 的入侵检测效率。 关键词:入侵检测;模式匹配;WM 算法 0 引言 Snort 入侵检测系统是目前使用最广的开源入侵检测系统之 一,具有良好的跨平台性,并提供丰富的报警机制。Snort 的检 测采用的是模式匹配策略。模式匹配过程是系统运行的主要过 程,是系统主要的性能瓶颈。针对此问题已有很多学者做了大量 研究,文献[3]对 BM 算法做了改进,去除了传统的好后缀规则, 改进了坏字符规则。文献[4]提出一种基于随机指纹模型的多模式 匹配方法。文献[5]基于 BM 算法的优点改进 AC 算法,提出了多 目标 AC-BM 算法,大大降低重复搜索文本串的次数。文献[6] 把 AC 算法和 BMH 算法结合,只保留坏字符规则,最大移动距 离为最短模式串长度。文献[7]提出了一种改进的 WM 算法,减 少了重复比较次数。本文通过对后缀搜索算法的研究,对 WM 算 法进行改进,提高了 Snort 的入侵检测的效率。 1 模式字符串匹配算法 已知字符集合 Σ ,大小记为 | Σ |= σ ,模式串 1 2 3... ( ,1 ) P p p m r =  p p p   r m , 文本串 1 2 3... ( ,1 ) T t t n s =  t t t   s n , m n  ,单模式字符串匹配即求解 集合: O i t p k m = =   { | ,1 } i k k + 已知字符集合 Σ ,大小记为 | Σ |= σ , * Σ 为正闭包,记文本串 * T ={T1T2T3 ...Tn}Σ ,模式串集合记为 { ... } P = P1P2P3 Pn , * 1 2 3  = P p p p p i m { ... }Σ , 模式集合长度总和为 1 | | | | r P p =  i 。字符串 x、 y 、 z 、u ,若 y xzu = , 则 x 为 y 的前缀, u 为 y 的后缀, z 为 y 的子串。 多模式匹配问题可表示为求解集合: O i j j r s t P k T i k =    = +  { | ,0 , . , 0 k<m} j    其中 后缀搜索是在搜索窗口内,模式匹配的是从右向左的搜索最 长公共后缀。基于后缀搜索的算法经典的有 BM 算法、WM 算法。 2 Boyer-Moore 算法 BM 算法中匹配失败时,用两种机制来确定模式串向右移动 的距离:坏字符机制和好后缀机制。 2.1 坏字符机制 j , P c ( ) m-j P =c j m BadChar c  =      当 不包含 字符时 , 当 且 是最大整数(1 j m) (1)导致不匹配的字符不在模式串 P 中,模式串向右取得 最大移动距离 m。 (2)导致不匹配的字符在模式串 P 中,则移动模式串最短 距离使可匹配字符与相应文本 T 字符对应。 2.2 好后缀机制 (1)好后缀在模式串中存在,那么好后缀和 T 中已匹配对 齐匹配。 (2)好后缀的最大子串在模式串中存在,那么好后缀最大 子串和 T 对应子串对齐匹配。 (3)好后缀在模式串中并不存在,则移动距离为 m。 BM 算法的移动距离为好后缀机制和坏字符机制的最大值。 3 Wu-Manber(WM)算法及改进 WM 算法继承了 BM 算法中的坏字符机制,但是 WM 算法 依据长度为 B 的字符块进行跳跃。 3.1 预处理过程 预处理阶段建立三张表移动表(Shift Table)、哈希表(Hash Table)和前缀表(Prefix Table)来移动搜索窗口。 (1)建立移动表(Shift Table) 记最小模式串长度 m,只考虑每个模式串的前 m 个字符。 对 m 个字符中后 B 个字符创建一个移动表。 (2)建立哈希表(Hash Table) 发生匹配时,为了确定匹配的字符串,避免和模式字符串全 部比较,使用哈希技术减少比较的次数。计算 B 个字符的哈希值 用作为哈希表的索引,哈希表的值就是该 B 个字符所在模式字符 串的索引。 (3)建立前缀表(Prefix Table) 所有的有相同后缀的模式字符串在哈希表中有相同的入口 值。当文本中这样一个后缀时,当发现 Shift 值为 0,不得不单独 检查所有带有这个后缀的模式字符串看它是否和 T 匹配,因此需 要建立前缀表。匹配完所有模式串的 B个字符和前缀表中的前 B’ 个字符,如果匹配成功,则让整个模式串去和文本进行逐字符匹 配。 3.2 搜索阶段扫描过程 算法的主要包括以下步骤:每次扫描 B 个字符 T m B T m [ 1]... [ ] − + , 如图 1 所示。 (1)扫描文本的末 B 位 T m B T m [ 1]... [ ] − + 通过 hash 函数计算 哈希值 h。 (2 ) 查Shift Shift h Shift h 表,若    0,文本指针向右滑  位 ,转 (1); Shift[h]=0,转(3)。 (3)计算文本当前位置前 m 位与前 m-1 位前缀的哈希值, 记为 text_prefix。 ( 4 )对于每个 p ( Hash h p Hash h [ ] [ 1]   + ), 否 则 Prefix[p]=text_prefix。如果相等,让真正的模式串去和文本进行 逐字符匹配。 b a r b a r b a r i a n b a r Shift[ri]=2 Shift[rb]=3 Shift[rb]=3 Shift[an]=0 b a r b a r i a n m u s i c i a n 匹配
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有