一种基于双跳跃的单模式匹配方法

文档序号:7822888阅读:201来源:国知局
一种基于双跳跃的单模式匹配方法
【专利摘要】本发明公开一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配。本发明大大提高了入侵检测系统的匹配效率,提高了检测系统的检测速度,并间接提高了检测系统的实时性,本发明的一种基于双跳跃的单模式匹配方法用途广泛,可应用在自适应免疫网络入侵检测系统和网络内容审计等方面。
【专利说明】—种基于双跳跃的单模式匹配方法

【技术领域】
[0001]本发明涉及计算机网络安全领域,具体涉及一种基于双跳跃的单模式匹配方法。

【背景技术】
[0002]入侵检测系统是防火墙的合理补充,通过主动防御来帮助系统对付网络攻击,扩展了系统管理员的安全管理能力,提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集并分析信息,查看网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测系统在不影响网络性能的情况下能对网络进行监测,提供对内部攻击、外部攻击和误操作的实时保护。
[0003]模式匹配是入侵检测系统的核心,其影响着系统的检测效率,而业内著名的snort系统中sp_pattern_match检测引擎插件对规则选项的content和uricontent内容进行模式匹配所使用的是BM算法,但采用Sunday算法在实际应用中效率要优于BM算法。
[0004]Sunday算法是DaniIe M.Sunday在1990年提出的一种单模式匹配算法,其核心思想是一旦发生字符不匹配,则跳跃尽可能多的字符。Sunday有一个next数组存储跳跃步长,匹配过程中出现字符不相等时,检测主串中模式串尾端对齐字符的下一个字符在模式串中的相同字符,并将最右端的一个和它对齐,当该字符不存在于模式串中的时候则直接全部跳过,长度为m的模式串跳跃步长为m+1。
[0005]但是Sunday算法在模式匹配的过程中仍然会出现较多冗余的匹配,匹配效率、检测速度和检测实时性仍然有待提高。


【发明内容】

[0006]为了克服现有技术的不足,本发明提供一种基于双跳跃的单模式匹配方法,它能够解决现有技术在模式匹配的过程中仍然会出现较多冗余的匹配,匹配效率、检测速度和检测实时性等问题。
[0007]本发明采用的技术方案如下:
一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配。
[0008]本发明采用Sunday算法完成其中的入侵模式串的匹配,并对Sunday算法作了改进。基于传统Sunday算法匹配方法只有一个跳跃数组,而本发明的一种基于双跳跃的单模式匹配方法在此基础上增加了一个跳跃数组,当匹配过程中有字符不匹配时连续跳跃两步,更大程度地减少了冗余匹配。
[0009]进一步的,本发明的一种基于双跳跃的单模式匹配方法,包括以下步骤:
S21初始化跳跃数组next I和next2 ;
S22开始匹配;
S23若匹配成功则将将模式串P[0…m-Ι]整体向右移一位,若匹配失败则按跳跃数组nextl向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符; S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。
[0010]本发明提出了连续两步跳跃的思想,对P[0…m-ι]和M[0…η-l]从左往右逐位比较,当比较过程中有字符不相等时,先使用传统Sunday算法的思想根据当前P[m_l]在M[0…η-l]中的对齐位的后一位计算P [O…m-1]向右的跳跃步长S1,再根据S1并运用next2数组向右跳跃&位,即在字符不相等的时候一次向右跳跃了 S dS2位。这种匹配方法在基于传统Sunday算法的匹配方法的基础上进一步减少了冗余匹配次数,效率要高于基于传统Sunday算法的匹配方法。
[0011]进一步的,所述跳跃数组nextl的初始化规则为:当模式串P[0, I…m-Ι]中存在和主串M[p0S+m]位相同的字符,则将模式串Ρ[0,Ρ..πι-1]中的这些字符最右边一个和M[pos+m]位对齐,若不存在相同字符,则直接跳过,将M[pos+m+l]位和P[0]位对齐,其中pos表示每次匹配开始时模式串P起始位在主串M中的对齐位下标,m表示模式串的长度。
[0012]进一步的,所述跳跃数组next2的初始化规则为:第一步跳跃完毕后,若模式串中存在与Mtpos+m+S1-l]位相同的字符,则把这些字符最右边一个与Mtpos+m+S1-l]位对齐,若M[pos+m+Sl-l] = P [m-1],则第二步跳跃为0,若不存在与M[pos+m+Sl-l]位相同的字符,则直接跳过,将M[pos+m+Sl-l]位和P[0]位对齐。
[0013]模式串P[0…m-Ι]和主串M[0…η-l]匹配的时候,当有字符不相等时,第一步的跳跃SI 一定是大于O的,第二步跳跃S2大于或等于0,出现等于O的情况是由于在第一步跳跃之后模式串P [O…m-Ι]的尾字符和主串M[0…η-l]就已经匹配成功。
[0014]在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,为了方便描述,本发明是按从左向右的比较顺序进行描述,但同样适用于从右向左的匹配过程。
[0015]本发明的有益效果:本发明采用改进的Sunday算法完成入侵模式串的匹配,从而大大提闻了匹配效率,提闻了检测系统的检测速度,并间接提闻了检测系统的实时性,本发明的一种基于双跳跃的单模式匹配方法用途广泛,可应用在自适应免疫网络入侵检测系统和网络内容审计等方面。

【专利附图】

【附图说明】
[0016]图1是本发明实施例1的匹配过程流程图;
图2是本发明实施例1模式串和主串开始匹配前的初始位置示意图;
图3是本发明实施例1完成第一次第一步跳跃后模式串和主串的位置示意图;
图4是本发明实施例1完成第一次第二步跳跃后模式串和主串的位置示意图;
图5是本发明实施例1完成第二次第一步跳跃后模式串和主串的位置示意图;
图6是本发明实施例1完成第二次第二步跳跃后模式串和主串的位置示意图;
图7是本发明实施例2使用本发明的匹配方法和基于传统Sunday算法的匹配方法的匹配次数和匹配成功次数对比图;
图8是本发明实施例3使用本发明的匹配方法和基于传统Sunday算法的匹配方法对模式串进行匹配的用时对比图。

【具体实施方式】
[0017]下面结合附图和【具体实施方式】对本发明作进一步的详细说明。
[0018]实施例1:
如图1所示可以清楚了解本发明的一种基于双跳跃的单模式匹配方法的匹配过程: S21初始化跳跃数组nextl和next2 ;
S22开始匹配;
S23若匹配成功则将将模式串P[0…m-Ι]整体向右移一位,若匹配失败则分别按跳跃数组nextl向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符;
S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。
[0019]进一步的,所述跳跃数组nextl的初始化规则为:当模式串P[0, I…m_l]中存在和主串M[p0S+m]位相同的字符,则将模式串Ρ[0,Ρ..πι-1]中的这些字符最右边一个和M[pos+m]位对齐,若不存在相同字符,则直接跳过,将M[pos+m+l]位和P[0]位对齐,其中pos表示每次匹配开始时模式串P起始位在主串M中的对齐位下标,m表示模式串的长度。
[0020]进一步的,所述跳跃数组next2的初始化规则为:第一步跳跃完毕后,若模式串中存在与Mtpos+m+S1-l]位相同的字符,则把这些字符最右边一个与Mtpos+m+S1-l]位对齐,若M[pos+m+Sl-l] = P [m-1],则第二步跳跃为0,若不存在与M[pos+m+Sl-l]位相同的字符,则直接跳过,将M[pos+m+Sl-l]位和P[0]位对齐。
[0021]如图2 所不本实施例取模式串 P=^bcdeafk”,主串 M=^abcdefaemkfgabcdeafkmw'由图2可以看出,模式串P在匹配过程当中出现字符不相等的情况,而模式串P[0,1-m-l]中存在和主串M[pos+m]位相同的字符,即e,于是将最右边的一个e移到M[pos+m]位,完成第一次第一步跳跃。完成第一次第一步跳跃后模式串和主串的位置如图3所示。
[0022]完成第一次第一步跳跃后并不进行匹配,而是继续进行第一次的第二步跳跃。由图3可以看出模式串中存在与Mtpos+m+S1-l]位相同的字符,即f,于是将模式串中最右边的f移动S2个字符到与Mtpos+m+S1-l]位对齐。完成第一次第二步跳跃后模式串和主串的位置如图4所示。
[0023]完成两步跳跃后开始匹配,由图4可见看出出现字符不相等,继续开始连续的连续两步的跳跃。由图4中可以看出,模式串P[0, I…m-Ι]中存在和主串M[pos+m]位相同的字符,即a,于是将最右边的一个a移到M[pos+m]位,完成第二次第一步跳跃。此次跳跃后模式串和主串的位置如图5所示。
[0024]从图5中可以看出,模式串中存在与Mtpos+m+Sfl]位相同的字符,即C,于是将模式串中最右边的c移动S2个字符到与Mtpos+m+S1-l]位对齐。完成第二次第二步跳跃后模式串和主串的位置如图6所示。
[0025]从图6中可以看出完成第二次第二步跳跃后模式串与主串已经匹配成功,此时只有一次冗余匹配。而通过对基于传统Sun day算法的匹配方法的分析,要模式串P= “bcdeafk”和主串M= “abcdefaemkfgabcdeafkmw”匹配成功需要经过三次冗余的匹配。
[0026]实施例2:
随机选取以下一段文字作为主串:but in a larger sense, we can not dedicate,we cannot consecrate, we can not hallow this ground, the brave ten, livingand dead, who struggled here, have consecrated it far above our power to addor detract, the world will little note nor long retetber what we say here,but it can never forget whatthey did here, it is for us, the living, ratherto be dedicated to thegreat task retaining before us; that frot these honoreddead, we take increased devot1n to that cause for which they gave the lastfull teasureof devot1n; that this nat1n, under god, shall have a new birthof freedot;and that governtent of the people by the people and for the peopleshall notperish frot the earth.从中选取 ground、the、here、cause、earth 作为模式串(实验实际过程中未包括空格和标点符号)。针对每一个模式串,记录使用本发明的匹配方法和基于传统Sunday算法的匹配方法的比较次数和匹配成功次数,验证本发明的匹配方法的有效性和正确性。此次试验环境为,Intel Core i3 CPU,主频为2.53GHz。实验结果如图7所示。其中YC是本发明的匹配方法的代号,S是基于传统Sunday算法的匹配方法的代号。由实验结果可以看出,通过连续两步的跳跃,本发明的匹配方法大大的减少了冗余匹配次数,节省了匹配时间,比基于传统Sunday算法的匹配方法高效。
[0027]实施例3:
硬件及操作系统的资源分配机制等因素会使得每次匹配用的时间不同,匹配用时会处在一个时间域之内,本实施例生成1000000长度的随机字符串作为主串M,并生成长度分别为1,10,20,30,40,50,60,70,80,90长度的随机字符串作为模式串。分别使用本发明的匹配方法和基于传统Sunday算法的匹配方法在主串中匹配模式串,每个模式串匹配10000次,分别记录每个模式串在两种方法下用时的时间域,并且求平均值。试验环境为Intel (R)Core (TM) i3 CPU,主频为2.93GHz,实验数据如图8所示,其中YC是本发明的匹配方法的代号,S是基于传统Sunday算法的匹配方法的代号。
[0028]从图8中可以看出,本发明的匹配方法大大降低了匹配用时,提高了检测系统的检测速度。
【权利要求】
1.一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,其特征在于,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配,具体包括以下步骤: S21初始化跳跃数组next I和next2 ; S22开始匹配; S23若匹配成功则将将模式串P[0…m-1]整体向右移一位,若匹配失败则按跳跃数组nextl向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符; S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。
2.根据权利要求1所述的一种基于双跳跃的单模式匹配方法,其特征在于,所述跳跃数组nextl的初始化规则为:当模式串Ρ[0,Ρ..πι-1]中存在和主串M[p0S+m]位相同的字符,则将模式串P[0,1-m-l]中的这些字符最右边一个和M[p0S+m]位对齐,若不存在相同字符,则直接跳过,将M[pos+m+l]位和P [O]位对齐,其中pos表示每次匹配开始时模式串P起始位在主串M中的对齐位下标,m表示模式串的长度。
3.根据权利要求1或2所述的一种基于双跳跃的单模式匹配方法,其特征在于,所述跳跃数组next〗的初始化规则为:第一步跳跃完毕后,若模式串中存在与Mtpos+m+S1-l]位相同的字符,则把这些字符最右边一个与Mtpos+m+S1-l]位对齐,若M[p0s+m+Sl-l] =P [m-1],则第二步跳跃为0,若不存在与Mtpos+m+S1-l]位相同的字符,则直接跳过,将M[pos+m+S「l]位和 P[0]位对齐。
【文档编号】H04L29/06GK104519056SQ201410769572
【公开日】2015年4月15日 申请日期:2014年12月15日 优先权日:2014年12月15日
【发明者】杨忠明, 申林, 秦勇 申请人:广东科学技术职业学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1