本发明专利技术公开一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配。本发明专利技术大大提高了入侵检测系统的匹配效率,提高了检测系统的检测速度,并间接提高了检测系统的实时性,本发明专利技术的一种基于双跳跃的单模式匹配方法用途广泛,可应用在自适应免疫网络入侵检测系统和网络内容审计等方面。
【技术实现步骤摘要】
一种基于双跳跃的单模式匹配方法
本专利技术涉及计算机网络安全领域,具体涉及一种基于双跳跃的单模式匹配方法。
技术介绍
入侵检测系统是防火墙的合理补充,通过主动防御来帮助系统对付网络攻击,扩展了系统管理员的安全管理能力,提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集并分析信息,查看网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测系统在不影响网络性能的情况下能对网络进行监测,提供对内部攻击、外部攻击和误操作的实时保护。模式匹配是入侵检测系统的核心,其影响着系统的检测效率,而业内著名的snort系统中sp_pattern_match检测引擎插件对规则选项的content和uricontent内容进行模式匹配所使用的是BM算法,但采用Sunday算法在实际应用中效率要优于BM算法。Sunday算法是DanileM.Sunday在1990年提出的一种单模式匹配算法,其核心思想是一旦发生字符不匹配,则跳跃尽可能多的字符。Sunday有一个next数组存储跳跃步长,匹配过程中出现字符不相等时,检测主串中模式串尾端对齐字符的下一个字符在模式串中的相同字符,并将最右端的一个和它对齐,当该字符不存在于模式串中的时候则直接全部跳过,长度为m的模式串跳跃步长为m+1。但是Sunday算法在模式匹配的过程中仍然会出现较多冗余的匹配,匹配效率、检测速度和检测实时性仍然有待提高。
技术实现思路
为了克服现有技术的不足,本专利技术提供一种基于双跳跃的单模式匹配方法,它能够解决现有技术在模式匹配的过程中仍然会出现较多冗余的匹配,匹配效率、检测速度和检测实时性等问题。本专利技术采用的技术方案如下:一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配。本专利技术采用Sunday算法完成其中的入侵模式串的匹配,并对Sunday算法作了改进。基于传统Sunday算法匹配方法只有一个跳跃数组,而本专利技术的一种基于双跳跃的单模式匹配方法在此基础上增加了一个跳跃数组,当匹配过程中有字符不匹配时连续跳跃两步,更大程度地减少了冗余匹配。进一步的,本专利技术的一种基于双跳跃的单模式匹配方法,包括以下步骤:S21初始化跳跃数组next1和next2;S22开始匹配;S23若匹配成功则将将模式串P[0,1…m-1]整体向右移一位,若匹配失败则按跳跃数组next1向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符;S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。本专利技术提出了连续两步跳跃的思想,对P[0,1…m-1]和M[0…n-1]从左往右逐位比较,当比较过程中有字符不相等时,先使用传统Sunday算法的思想根据当前P[m-1]在M[0…n-1]中的对齐位的后一位计算P[0,1…m-1]向右的跳跃步长S1,再根据S1并运用next2数组向右跳跃S2位,即在字符不相等的时候一次向右跳跃了S1+S2位。这种匹配方法在基于传统Sunday算法的匹配方法的基础上进一步减少了冗余匹配次数,效率要高于基于传统Sunday算法的匹配方法。进一步的,所述跳跃数组next1的初始化规则为:当模式串P[0,1…m-1]中存在和主串M[pos+m]位相同的字符,则将模式串P[0,1…m-1]中的这些字符最右边一个和M[pos+m]位对齐,若不存在相同字符,则直接跳过,将M[pos+m+1]位和P[0]位对齐,其中pos表示每次匹配开始时模式串P起始位在主串M中的对齐位下标,m表示模式串的长度。进一步的,所述跳跃数组next2的初始化规则为:第一步跳跃完毕后,若模式串中存在与M[pos+m+S1-1]位相同的字符,则把这些字符最右边一个与M[pos+m+S1-1]位对齐,若M[pos+m+S1-1]=P[m-1],则第二步跳跃为0,若不存在与M[pos+m+S1-1]位相同的字符,则直接跳过,将M[pos+m+S1-1]位和P[0]位对齐。模式串P[0,1…m-1]和主串M[0…n-1]匹配的时候,当有字符不相等时,第一步的跳跃S1一定是大于0的,第二步跳跃S2大于或等于0,出现等于0的情况是由于在第一步跳跃之后模式串P[0,1…m-1]的尾字符和主串M[0…n-1]就已经匹配成功。在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,为了方便描述,本专利技术是按从左向右的比较顺序进行描述,但同样适用于从右向左的匹配过程。本专利技术的有益效果:本专利技术采用改进的Sunday算法完成入侵模式串的匹配,从而大大提高了匹配效率,提高了检测系统的检测速度,并间接提高了检测系统的实时性,本专利技术的一种基于双跳跃的单模式匹配方法用途广泛,可应用在自适应免疫网络入侵检测系统和网络内容审计等方面。附图说明图1是本专利技术实施例1的匹配过程流程图;图2是本专利技术实施例1模式串和主串开始匹配前的初始位置示意图;图3是本专利技术实施例1完成第一次第一步跳跃后模式串和主串的位置示意图;图4是本专利技术实施例1完成第一次第二步跳跃后模式串和主串的位置示意图;图5是本专利技术实施例1完成第二次第一步跳跃后模式串和主串的位置示意图;图6是本专利技术实施例1完成第二次第二步跳跃后模式串和主串的位置示意图;图7是本专利技术实施例2使用本专利技术的匹配方法和基于传统Sunday算法的匹配方法的匹配次数和匹配成功次数对比图;图8是本专利技术实施例3使用本专利技术的匹配方法和基于传统Sunday算法的匹配方法对模式串进行匹配的用时对比图。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步的详细说明。实施例1:如图1所示可以清楚了解本专利技术的一种基于双跳跃的单模式匹配方法的匹配过程:S21初始化跳跃数组next1和next2;S22开始匹配;S23若匹配成功则将将模式串P[0,1…m-1]整体向右移一位,若匹配失败则分别按跳跃数组next1向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符;S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。进一步的,所述跳跃数组next1的初始化规则为:当模式串P[0,1…m-1]中存在和主串M[pos+m]位相同的字符,则将模式串P[0,1…m-1]中的这些字符最右边一个和M[pos+m]位对齐,若不存在相同字符,则直接跳过,将M[pos+m+1]位和P[0]位对齐,其中pos表示每次匹配开始时模式串P起始位在主串M中的对齐位下标,m表示模式串的长度。进一步的,所述跳跃数组next2的初始化规则为:第一步跳跃完毕后,若模式串中存在与M[pos+m+S1-1]位相同的字符,则把这些字符最右边一个与M[pos+m+S1-1]位对齐,若M[pos+m+S1-1]=P[m-1],则第二步跳跃为0,若不存在与M[pos+m+S1-1]位相同的字符,则直接跳过,将M[pos+m+S1-1]位和P[0]位对齐。如图2所示本实施例取模式串P=“bcdeafk”,主串M=“abcdefaemkfgabcdeafkmw”,由图2可以看出,模式串P在匹配过程当本文档来自技高网...
【技术保护点】
一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,其特征在于,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配,具体包括以下步骤:S21初始化跳跃数组next1和next2;S22开始匹配;S23若匹配成功则将将模式串P[0…m‑1]整体向右移一位,若匹配失败则按跳跃数组next1向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符;S24判断移动后的模式串是否到达或超出主串尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置。
【技术特征摘要】
1.一种基于双跳跃的单模式匹配方法,采用改进Sunday算法完成其中的入侵模式串的匹配,其特征在于,在字符匹配过程中若出现字符不相等,则先连续跳跃两步,再进行匹配,具体包括以下步骤:S21初始化跳跃数组next1和next2;S22开始匹配;S23若匹配成功则将模式串P[0,1…m-1]整体向右移一位,若匹配失败则按跳跃数组next1向右跳跃S1个字符,然后按next2进行第二步跳跃,跳过S2个字符;S24判断移动后的模式串是否到达或超出主串M尾,若否则返回S22,若是则结束匹配,输出所有和模式串相匹配的字符串的位置;所述跳跃数组next1的初始化规则为:当模式串P[0,1…m-1]中存在和主串M...
【专利技术属性】
技术研发人员:杨忠明,申林,秦勇,
申请(专利权)人:广东科学技术职业学院,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。