多模式的串匹配方法和装置与流程

文档序号:15197695发布日期:2018-08-19 01:18阅读:327来源:国知局

本发明属于网络安全技术领域,尤其涉及一种多模式的串匹配方法和装置。



背景技术:

入侵检测系统是整个网络安全防护体系中的一个重要组成部分,随着入侵和攻击不断增多,网络规模不断扩大,信息的机密性、完整性和可用性遭到严重侵害,入侵检测技术越来越受到重视。入侵检测就是通过对计算机网络或计算机系统中若干关键点收集信息并对其进行分析,从中发现计算机网络或系统中是否有违反安全策略的行为和被攻击的迹象近几年随着计算机网络技术的不断发展,以及网络应用范围的扩大,网络中出现入侵和攻击的行为也越来越多。攻击行为混夹于大量正常的网络数据包之中,要检测入侵行为,就要对流经网络的数据包进行识别并加以分析,通常包括对数据包负载的分析,其功能是辨别数据包的负载中是否有攻击特征,并根据更具其判别结果对数据包进行相应的处理。攻击特征过滤器设计方法在近几年已取得了很大的发展,下面介绍几种方法:

1.基于最长公共子串方法

早期的大多采用提取“最长公共子串”(lcs)的方法,即在可疑数据流中查找最长的公共子字符串并将其作为攻击特征过滤器,虽然基于后缀树计算两个序列的lcs可在线性时间内完成,但是此过滤器仅仅提取单个最长的特征片段,并不足以准确描述攻击。

2.基于固定长度负载出现频率方法

按照不同的方法将可疑数据流划分为固定长度的分片,然后计算分片在所有可疑数据流中出现的频繁度,最后将频繁度高的分片输出为攻击特征过滤器,该方法存在的问题是难以选取固定长度的大小,计算开销和存储开销大、没有考虑攻击变形情况。也可以将可疑数据流中含有多个特征片段的固定长度部分定义为“关键区域”。但是“关键区域”长度选取困难,不能确保收敛限制了该攻击特征过滤器方法的有效性。

3.基于可变长度负载出现频率

基于可变长度负载出现频率的方法是当前比较有效的特征提取方法,可变长度负载出现频率是指长度大于1的在可疑数据流中频繁出现的字符串,可变长度负载出现频率长度不固定,每一个可变长度负载出现频率可能对应于攻击中的一个特征片段。因此,基于可变长度负载出现频率的方法的核心是提取出数据流中频繁度大于一定阀值的所有可变长度负载出现频率,一般都采用遍历前缀树的算法。以可变长度负载出现频率为核心,设计攻击特征过滤器。

在入侵检测系统中,如果采用单模式匹配算法,每数据包进行匹配时都需要重新运行匹配算法,这样效率很低。所以单模式匹配算法不能满足攻击检测系统日益增加的检测负担,多模式匹配算法代替单模式匹配算法应用于攻击检测系统之中已是大势所趋。



技术实现要素:

针对上述技术问题,本发明实施例提供了一种多模式的串匹配方法和装置,以解决ac算法中窗口滑动慢,以及wu-manber算法中比较结果不留存的问题,具体通过以下技术方案予以实现:

一种多模式的串匹配方法,包括:

抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串,根据该模式串创建aho-corasick自动机;

根据模式串创建移动表,所述的移动表记录了所述的模式串中字符块的位移量;

若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;

对根据所述移动表找到的可能的匹配位置,根据所述aho-corasick自动机进行匹配验证;

根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。

其中,在所述的抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串之前,还包括:设定数据包采集时间、数量,当采集时间或者采集到数量达到设定值时,停止采集数据包。

其中,根据所述移动表寻找可能的匹配位置包括:查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。

其中,对根据所述移动表找到的可能的匹配位置,根据所述aho-corasick自动机进行匹配验证包括:读取文本串的下一个字符;若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;若所述下一个状态为终结状态,则报告字符串匹配成功。

一种多模式的串匹配装置,包括:

自动机创建模块,用于抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串,根据该模式串创建aho-corasick自动机;

移动表创建模块,用于根据模式串创建移动表,所述的移动表记录了所述的模式串中字符块的位移量;

匹配位置寻找模块,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;

匹配验证模块,用于根据所述移动表找到的可能的匹配位置,根据所述aho-corasick自动机进行匹配验证;

判断模块,用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。

其中所述自动机创建模块中包括设定模块,用于在所述的抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串之前,设定数据包采集时间、数量,当采集时间或者采集到数量达到设定值时,停止采集数据包。

其中,所述匹配位置寻找模块具体用于:查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。

其中,所述匹配验证模块包括:

字符读取单元,用于读取文本串的下一个字符;

状态跳转单元,用于若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;

报告单元,用于若所述下一个状态为终结状态,则报告字符串匹配成功。

以上技术方案与现有技术相比具有以下技术效果:

本发明实施例提供的多模式的串匹配方法和装置,利用移动表寻找文本串与多个模式串之间可能的匹配位置,再利用aho-corasick自动机对所述可能的匹配位置进行匹配验证,综合了ac算法及wu-manber算法的优点,解决了ac算法中窗口滑动慢,以及wu-manber算法中比较结果不留存的问题,提高了串匹配的执行效率。

附图说明

图1是本发明第一实施例提供的多模式的串匹配方法的流程图;

图2是本发明第二实施例提供的多模式的串匹配装置结构示意图。

具体实施方式

为使本发明的实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。

实施例1

本实施例提供一种多模式的串匹配方法,如图1,包括:

抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串,根据该模式串创建aho-corasick自动机;

根据模式串创建移动表,移动表记录了所述的模式串中字符块的位移量;

若文本串的滑动窗口未滑动至所述文本串的末尾,根据移动表寻找可能的匹配位置,滑动窗口的长度至少是2;

对根据移动表找到的可能的匹配位置,根据aho-corasick自动机进行匹配验证;

根据移动表继续寻找下一个可能的匹配位置,直至滑动窗口滑动至文本串的末尾。

其中,在抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串之前,还包括:设定数据包采集时间、数量,当采集时间或者采集到数量达到设定值时,停止采集数据包。

其中,根据移动表寻找可能的匹配位置包括:查找移动表中记录的,位移量为0的位置,并将位移量为0的位置作为可能的匹配位置。

其中,对根据移动表找到的可能的匹配位置,根据aho-corasick自动机进行匹配验证包括:读取文本串的下一个字符;若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;若所述下一个状态为终结状态,则报告字符串匹配成功。

本实施例通过根据模式串创建aho-corasick自动机,根据模式串创建移动表,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,对根据所述移动表找到的可能的匹配位置,根据所述aho-corasick自动机进行匹配验证,根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾,解决了ac算法中窗口滑动慢,以及wu-manber算法中比较结果不留存的问题。

实施例2

一种多模式的串匹配装置,如图2,包括:

自动机创建模块,用于抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串,根据该模式串创建aho-corasick自动机;

移动表创建模块,用于根据模式串创建移动表,所述的移动表记录了所述的模式串中字符块的位移量;

匹配位置寻找模块,若文本串的滑动窗口未滑动至所述文本串的末尾,根据所述移动表寻找可能的匹配位置,所述滑动窗口的长度至少是2;

匹配验证模块,用于根据所述移动表找到的可能的匹配位置,根据所述aho-corasick自动机进行匹配验证;

判断模块,用于根据所述移动表继续寻找下一个可能的匹配位置,直至所述滑动窗口滑动至所述文本串的末尾。

其中自动机创建模块中包括设定模块,用于在的抓取一组数据包,获取该组数据包负载的最长公共子序列作为模式串之前,设定数据包采集时间、数量,当采集时间或者采集到数量达到设定值时,停止采集数据包。

其中,匹配位置寻找模块具体用于:查找所述移动表中记录的,位移量为0的位置,并将所述位移量为0的位置作为可能的匹配位置。

其中,匹配验证模块包括:

字符读取单元,用于读取文本串的下一个字符;

状态跳转单元,用于若当前状态存在一个权值为所述下一个字符的下一个状态,则跳转至下一个状态;

报告单元,用于若所述下一个状态为终结状态,则报告字符串匹配成功。

在所述aho-corasick自动机中,如果一个状态的转移指针的个数是0,则这个状态是终结状态。如果在状态转移的过程中,跳转至的状态是一个终结状态,则说明文本串与模式串之间的匹配成功,可以报告上述成功。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1