CN100543736C - 基于层次化跳跃索引的快速网络流特征检测方法 - Google Patents
基于层次化跳跃索引的快速网络流特征检测方法 Download PDFInfo
- Publication number
- CN100543736C CN100543736C CNB2005101279662A CN200510127966A CN100543736C CN 100543736 C CN100543736 C CN 100543736C CN B2005101279662 A CNB2005101279662 A CN B2005101279662A CN 200510127966 A CN200510127966 A CN 200510127966A CN 100543736 C CN100543736 C CN 100543736C
- Authority
- CN
- China
- Prior art keywords
- jump
- network
- block
- mapping table
- mentioned
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于层次化跳跃索引的快速网络流特征检测方法,属于网络流量内容检测技术领域。首先对用户设定的标识网络流特征的模式集的特定位置的具有特定长度的两个字块,分别建立两张字块跳跃表格;分别建立两张字块跳跃表格与模式之间的第一、第二映射表,通过“位与”操作,获取第三映射表,根据第三映射表建立深层跳跃表格,最后建立潜在匹配表格;根据建立的三种表格,对快速网络流传送的数据流进行连续检测。本发明的检测方法,通过深入挖掘模式集中的启发信息,减少了检测过程中不必要的比对操作。同时利用层次化的表格数据结构使得方法性能稳定,查找速度快。适用于高性能防火墙、内容检测、入侵检测、病毒防护和网络信息监控等领域。
Description
技术领域
本发明涉及一种基于层次化跳跃索引的快速网络流特征检测方法,属于网络流量内容检测技术领域。
背景技术
近年来,互联网中对数据流进行完整性、私密性、可用性等方面的恶意攻击快速增长,促进了防火墙、虚拟专用网以及网络入侵检测系统(NIDS)和网络入侵防御系统(NIPS)等技术的发展。为了防范这些攻击,网络设备在进行协议分析和状态分析的基础上,其中一个非常重要的环节就是通过多模式匹配方法来检测网包的负载中是否包含标识误用和攻击的特征字符串(即模式)。
多模式匹配方法主要研究从大量数据中快速匹配多个模式的技术。网络入侵检测系统和网络入侵防御系统中的模式匹配是基于一个模式集的,其中每个模式标识一种攻击或者威胁。模式匹配方法根据对待检测快速网络流文本或者用户设定的标识网络流特征的模式集进行预处理分为索引方案和非索引方案。索引方案对文本进行预处理,然后进行模式匹配;非索引方案对模式集进行预处理,然后进行模式匹配。
当前网络带宽的发展速度远远快于计算机硬件的发展速度,而网络环境的日益复杂化致使实时网络信息检测显得尤为必要。在广为人知的入侵检测系统Snort中,约有31%的处理时间消耗在模式匹配上。而当网络流量包含大量敏感信息时,这个比例可以上升至80%。实时网络信息检测速度的提升依赖于方法效率的提高和硬件水平的发展。当前,千兆以上带宽的网络信息监控、入侵检测系统、入侵防御系统还没有很好的解决方案。因此,研究软件方法如何提高多模式匹配的速度依然是具有重大意义的课题。
发明内容
本发明的目的在于提出一种基于层次化跳跃索引的快速网络流特征检测方法,基于快速的多模式匹配,通过层次化的表格查找,可以尽量产生跳跃索引,避免不必要的匹配,从而达到快速检测大量模式的目的。
本发明提出的基于层次化跳跃索引的快速网络流特征检测方法,包括以下各步骤:
(1)对用户设定的标识网络流特征的模式集的特定位置的具有特定长度的两个字块,分别建立两张字块跳跃表格;
(2)分别建立上述两张字块跳跃表格中跳跃值为零的记录与上述用户设定的标识网络流特征的模式之间的第一映射表和第二映射表,根据第一和第二映射表,通过“位与”操作,获取深层跳跃表格与上述用户设定的标识网络流特征的模式之间的第三映射表,根据第三映射表,采用双倍宽度字块重新扫描上述用户设定的标识网络流特征的模式集,建立深层跳跃表格;
(3)提取与上述深层跳跃表格对应的第三映射表中的映射信息,建立潜在匹配表格,并释放所有映射表;
(4)在与上述两张字块跳跃表格的对应位置,从待检测快速网络流传送的数据流中提取索引信息,根据索引信息从两张字块跳跃表格中得到两个跳跃值;
(5)若两个跳跃值中的较大值不为零,则将上述用户设定的标识网络流特征的模式集按较大跳跃值向右移动,若两个跳跃值均为零,则从上述深层跳跃表格中重新检索跳跃值;
(6)若上述重新检索的跳跃值不为零,则将上述用户设定的标识网络流特征的模式集按跳跃值向右移动,若上述重新检索的跳跃值为零,则将潜在匹配表格给出的模式索引序列中的每个模式与待检测快速网络流传送的数据流进行比对,若匹配不成功,则进行步骤(7),若匹配成功,则给出警告后进行步骤(7);
(7)重复步骤(4)~(6),对待检测快速网络流传送的数据流进行连续检测。
本发明提出的基于层次化跳跃索引的快速网络流特征检测方法,通过深入挖掘模式集中的启发信息,减少了检测过程中不必要的比对操作。同时利用层次化的表格数据结构使得方法性能稳定,查找速度快。此外,此方法的空间内存占用较少,支持大规模的模式集,增强了方法的可实施性。通过实验比较分析,本发明在综合性能优于现有的流行方法,如AC、AC_BM、Wu-Manner以及Setwise BMH。使用本发明的方法,提高了内容分析系统的性能。本发明适用于高性能防火墙、内容检测、入侵检测、病毒防护和网络信息监控等领域。
附图说明
图1是本发明方法中对数据流进行检测的流程框图。
具体实施方式
本发明提出的基于层次化跳跃索引的快速网络流特征检测方法,首先对用户设定的标识网络流特征的模式集的特定位置的具有特定长度的两个字块,分别建立两张字块跳跃表格;分别建立上述两张字块跳跃表格中跳跃值为零的记录与上述用户设定的标识网络流特征的模式之间的第一映射表和第二映射表,根据第一和第二映射表,通过“位与”操作,获取深层跳跃表格与上述用户设定的标识网络流特征的模式之间的第三映射表,根据第三映射表,采用双倍宽度字块重新扫描上述用户设定的标识网络流特征的模式集,建立深层跳跃表格;提取与深层跳跃表格对应的第三映射表中的映射信息,建立潜在匹配表格,并释放所有映射表;在与两张字块跳跃表格的对应位置,从待检测快速网络流传送的数据流中提取索引信息,根据索引信息从两张字块跳跃表格中得到两个跳跃值;若两个跳跃值中的较大值不为零,则将上述用户设定的标识网络流特征的模式集按较大跳跃值向右移动,若两个跳跃值均为零,则从上述深层跳跃表格中重新检索跳跃值;若重新检索的跳跃值不为零,则将上述用户设定的标识网络流特征的模式集按跳跃值向右移动,若上述重新检索的跳跃值为零,则将潜在匹配表格给出的模式索引序列中的每个模式与待检测快速网络流传送的数据流进行比对,若匹配成功,则给出警告,并重复检测过程,若匹配不成功,同样重复检测过程。
以下给出本发明的一个实施例:
本发明方法可以分为两个阶段,第一阶段为建立三层跳跃表格即字块跳跃表格、深层跳跃表格和潜在匹配表格,第二阶段为根据建立的表格对待检测快速网络流进行扫描检测。在现实网络信息监控中,由于模式集相对固定,因此建立表格过程只需要进行一次,但是可以在多次数据流检测中重复使用。所以考虑方法性能时,一般不以建立表格时间为主要标准,若模式集不断更新,则可以定时地重新建立表格。
假设用∑表示字符集,用α表示字符集的大小,用B表示字块的宽度,用m表示最短模式长度,模式的数量用k来表示。t表示文本,ti...tj(i≤j)表示从i到j的文本。P表示模式集,pi(1≤i≤k)表示第i个模式。多模式匹配问题就是要在文本t中找出所有匹配pi的字符串。
假定模式集为P={AT-THY-,ALLOY},设字符集的大小α=256,同时取字块宽度B=2。
首先建立两张字块跳跃表格。对应模式集为P={AT-THY-,ALLOY},可以得到如下的两张字块跳跃表格。
先将模式集中的所有模式右对齐,则字块1对应的表格中存储的是根据所有模式右起第一和第二两位字符所得到的跳跃值。由于字符集大小为256,而字块1存储的是右起两位字符对应的跳跃值,所以此表格的大小为2562=65536。从字块1表格可以看出,对应{Y-,OY}处的记录中存储的跳跃值为0,对应{HY,LO}处的记录中存储的跳跃值为1,对应{TH,LL}处的记录中存储的跳跃值为2,对应{-T,AL}处的记录中存储的跳跃值为3,对应{T-}处的记录中存储的跳跃值为4,对应{AT}处的记录中存储的跳跃值为5,而其他所有未在模式集中出现的字块对应的跳跃值均为最短模式长度m(此例中m=5)。同理,字块2表格存储的是右起第三和第四两位字符对应的跳跃值,表格大小同样为65536。由于切除了所有模式的末两位字符,因此对应的跳跃值均减少2,而在模式集中未出现的字块对应的跳跃值均为最短模式长度减2(即m-2,此例中为3)。
然后建立一张深层跳跃表格。
深层跳跃表格
0 |
5 |
5 |
0 |
建立该表格是由于如下现象:在设定的模式集P={AT-THY-,ALLOY}下,若文本中存在大量的字符串FINALLY-,那么仅仅利用字块跳跃表格将频繁地得到跳跃值零,这样就需要在此处进行一次对模式集的完全的匹配查找。然而通过观察可知字符串FINALLY-实际上并不对应任何模式,而只是因为末两位字符Y-在p1:AT-THY-中存在,而末三四位字符LL在p2:ALLOY中存在。可以想象,当模式集很大的时候,字符串的右起一二位和三四位匹配不同模式而导致字块跳跃表格值均为零的概率将增加。
为了建立深层跳跃表格,需要对两张字块跳跃表格中值为零的记录记录一条模式映射信息(Bitmap),例如字块1中的OY,由于只有第二个模式与之匹配,可以对应地给出它的映射信息00000010,对应其中的Y-可以给出映射信息00000001;对应字块2中的LL可以给出映射信息00000010,对应其中的TH可以给出映射信息00000001。深层跳跃表格同样需要对应一张映射表,这个表格中的每条记录是两张字块跳跃表格对应的映射表中的映射信息进行“位与”操作的结果。如下所示:
上述映射表3是映射表1和映射表2进行“位与”操作的结果。根据映射表3,可以看到OYTH、Y-LL实际上是不对应任何匹配的,因此本方法在深层跳跃表格中存储利用双倍宽度字块重新扫描模式集得到的跳跃值。
最后建立一张潜在匹配表格。
潜在匹配表格
潜在匹配表格通过抽取映射表3中的映射信息得出。此表格实质上是一个结构体数组,数组每条记录的第一项为潜在匹配的模式数量,第二项为潜在匹配的模式索引的序列。之所以存为数组是为了加速匹配查找的速度。对应映射表3可以得到如上所示的潜在匹配表格。
在扫描检测阶段,首先需要把所有模式进行右对齐,然后把最短的模式与文本进行左对齐,如下所示:
模式1: AT-THAY-
模式2: ALLOY
文本: WHICH-FINALLY-HALTS.AT-THAT-POINT
↑
数据流的检测过程如图1所示,步骤为:在与两张字块跳跃表格的对应位置,从待检测快速网络流传送的数据流中提取索引信息,根据索引信息从两张字块跳跃表格中得到两个跳跃值;若两个跳跃值中的较大值不为零,则将上述用户设定的标识网络流特征的模式集按较大跳跃值向右移动,若两个跳跃值均为零,则从上述深层跳跃表格中重新检索跳跃值;若重新检索的跳跃值不为零,则将上述用户设定的标识网络流特征的模式集按跳跃值向右移动,若上述重新检索的跳跃值为零,则将潜在匹配表格给出的模式索引序列中的每个模式与待检测快速网络流传送的数据流进行比对,若匹配成功,则给出警告,并重复检测过程,若匹配不成功,同样重复检测过程。
本发明中的层次化跳跃索引方法采用了字块启发信息来产生跳跃,这与BM方法中的不良字符启发信息是不同的。本发明基于这样一个观察:BM方法中的不良字符启发信息在单模式匹配方法中效率非常高,但是在多模式的情形下,每个字符在某个特定位置的出现概率将大大增加,这样随着模式数量的增大产生跳跃的概率将减小。因此,本发明采用多字符的字块来生成启发信息,多字符在某个特定位置出现的概率相对于单字符要小得多,因此产生跳跃的概率将大得多。
在本发明中,两个字块跳跃表格存储着根据两个特定位置的特定长度的字块来确定的最大跳跃值。由于针对的是多模式的情形,因此本发明对字块的每一种可能组合都预先和所有的模式进行比对,最终将保证不漏检的最大跳跃值存储在字块跳跃表格中。建立深层跳跃表格则是为了进一步减少不必要的比对操作,在两张字块跳跃表格中的两个字块跳跃值均为零的情形下,利用双字块长度来生成启发信息,并将跳跃值存储在深层跳跃表格中。潜在匹配表格则根据深层跳跃表格中值为零的记录对应的映射表生成可能匹配的模式的索引序列,从而避免在匹配的阶段将文本和所有的模式进行对比,而只需要与索引序列中存在的模式进行对比。
与本发明的层次化跳跃索引方法最接近的前人工作是Wu-Manner方法。Wu-Manner方法主要基于三个表格:跳跃表格(SHIFT table)、哈希表格(HASH table)以及前缀表格(PREFIXtable)。跳跃表格与本发明的字块跳跃表格相似,但是本发明与Wu-Manner方法的不同在于:Wu-Manner方法只利用了一张跳跃表格,而在跳跃值为零的时候利用哈希表格和前缀表格来减少需要检测的模式数量。而层次化跳跃索引方法利用两张字块跳跃表格,增大了产生跳跃的可能性;同时在跳跃值均为零的情况下,进一步利用深层跳跃表格来挖掘启发信息,增大了产生跳跃的可能性;最后利用潜在匹配表格替代哈希链表来存储可能匹配模式的索引序列,加快了匹配检测的速度。本方法整个层次化的表格结构加大了对启发信息的采集和利用,同时固定的数据结构使得方法性能非常稳定,而且方法的时间空间复杂度都能够以充分的理论分析做保证。
在具体实现层次化跳跃索引方法的时候,需要注意的是:本方法假定所有的模式长度均大于两倍的字块宽度,这是为了保证层次化结构的可构造性。若最短模式长度小于两倍的字块宽度,本发明依然可以通过调整数据结构达到层次化的效果。
Claims (1)
1、一种基于层次化跳跃索引的快速网络流特征检测方法,其特征在于该方法包括以下各步骤:
(1)对用户设定的标识网络流特征的模式集的特定位置的具有特定长度的两个字块,分别建立两张字块跳跃表格;
(2)分别建立上述两张字块跳跃表格中跳跃值为零的记录与上述用户设定的标识网络流特征的模式之间的第一映射表和第二映射表,根据第一和第二映射表,通过“位与”操作,获取深层跳跃表格与上述用户设定的标识网络流特征的模式之间的第三映射表,根据第三映射表,采用双倍宽度字块重新扫描上述用户设定的标识网络流特征的模式集,建立深层跳跃表格;
(3)提取与上述深层跳跃表格对应的第三映射表中的映射信息,建立潜在匹配表格,并释放所有映射表;
(4)在与上述两张字块跳跃表格的对应位置,从待检测快速网络流传送的数据流中提取索引信息,根据索引信息从两张字块跳跃表格中得到两个跳跃值;
(5)若两个跳跃值中的较大值不为零,则将上述用户设定的标识网络流特征的模式集按较大跳跃值向右移动,若两个跳跃值均为零,则从上述深层跳跃表格中重新检索跳跃值;
(6)若上述重新检索的跳跃值不为零,则将上述用户设定的标识网络流特征的模式集按跳跃值向右移动,若上述重新检索的跳跃值为零,则将潜在匹配表格给出的模式索引序列中的每个模式与待检测快速网络流传送的数据流进行比对,若匹配不成功,则进行步骤(7),若匹配成功,则给出警告后进行步骤(7);
(7)重复步骤(4)~(6),对待检测快速网络流传送的数据流进行连续检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101279662A CN100543736C (zh) | 2005-12-09 | 2005-12-09 | 基于层次化跳跃索引的快速网络流特征检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101279662A CN100543736C (zh) | 2005-12-09 | 2005-12-09 | 基于层次化跳跃索引的快速网络流特征检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776683A CN1776683A (zh) | 2006-05-24 |
CN100543736C true CN100543736C (zh) | 2009-09-23 |
Family
ID=36766175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101279662A Active CN100543736C (zh) | 2005-12-09 | 2005-12-09 | 基于层次化跳跃索引的快速网络流特征检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100543736C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873199B (zh) * | 2010-06-29 | 2014-11-05 | 中兴通讯股份有限公司 | 码字的匹配方法和装置 |
-
2005
- 2005-12-09 CN CNB2005101279662A patent/CN100543736C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1776683A (zh) | 2006-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186919B (zh) | 一种文字渲染方法及装置 | |
CN104298680B (zh) | 数据统计方法及数据统计装置 | |
KR20140061359A (ko) | 앵커링된 패턴들 | |
KR20160093101A (ko) | 정규 표현식들에 대한 컴파일러 | |
EP3067814B1 (en) | Url matching device, url matching method, and url matching program | |
CN106599242A (zh) | 一种基于相似度计算的网页变更监测方法和系统 | |
US9336239B1 (en) | System and method for deep packet inspection and intrusion detection | |
CN107329950B (zh) | 一种基于无词典的中文地址分词方法 | |
CN109753797B (zh) | 针对流式图的密集子图检测方法及系统 | |
KR100960117B1 (ko) | 시그니처 패턴 매칭방법과 그 시스템 및 시그니처 패턴이기록된 기록매체 | |
CN110768946A (zh) | 一种基于布隆过滤器的工控网络入侵检测系统及方法 | |
CN103324886B (zh) | 一种网络攻击检测中指纹库的提取方法和系统 | |
CN103020521A (zh) | 木马扫描方法及系统 | |
CN103268449A (zh) | 一种手机恶意代码的高速检测方法和系统 | |
US8108387B2 (en) | Method of detecting character string pattern at high speed using layered shift tables | |
CN110719106A (zh) | 一种基于节点分类排序的社交网络图压缩方法及系统 | |
KR101091204B1 (ko) | 패턴 검색을 통한 침입 탐지 방법 | |
CN100543736C (zh) | 基于层次化跳跃索引的快速网络流特征检测方法 | |
KR100965552B1 (ko) | 영역분할을 이용한 패킷 분류 테이블 생성 방법 및 패킷분류 방법과 장치 | |
CN108173876B (zh) | 基于最大频繁模式的动态规则库构建方法 | |
CN107124410A (zh) | 基于机器深度学习的网络安全态势特征聚类方法 | |
CN101593171A (zh) | 一种可通过内存映射方式访问的字体文件及其访问方法 | |
CN106708532B (zh) | 基于tcam的多层次正则表达式匹配方法 | |
KR100992440B1 (ko) | 여러 개의 연속된 부분패턴을 이용한 다중 패턴매칭 방법 | |
Zha et al. | Highly compressed Aho-Corasick automata for efficient intrusion detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |