CN1510592B - 快速网络流特征检测的关键词匹配方法说明书 - Google Patents
快速网络流特征检测的关键词匹配方法说明书 Download PDFInfo
- Publication number
- CN1510592B CN1510592B CN 02159352 CN02159352A CN1510592B CN 1510592 B CN1510592 B CN 1510592B CN 02159352 CN02159352 CN 02159352 CN 02159352 A CN02159352 A CN 02159352A CN 1510592 B CN1510592 B CN 1510592B
- Authority
- CN
- China
- Prior art keywords
- key word
- word matching
- keywords
- keyword
- algorithm
- 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.)
- Expired - Lifetime
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明是一种快速网络流特征检测的关键词匹配方法,它是根据关键词长的特性设计出来的一种新型的多关键词匹配算法,可以提高特征检测***的性能;包括如下步骤:1)对关键词进行预处理;2)使用全部关键词计算出一个最小完美散列函数;3)计算在扫描阶段所有可能出现的字符块跳跃的最大距离;4)使用全部关键词建立一张检测表;5)扫描处理;6)使用该检测表,快速的进行数据流特征检测。本发明适用于高性能网络信息监控、病毒检测、防火墙、入侵检测、网络信息内容安全等***中。
Description
技术领域
本发明属于网络信息内容检测领域,包括高性能网络信息监控、内容安全、防火墙、入侵检测和病毒检测***等领域。特别涉及基于一种快速网络流特征检测的关键词匹配方法。
背景技术
多关键词匹配(Keywords Matching)有时也称为多模式匹配(MultiplePattern Matching)或者字典匹配(Directory Matching、Set Matching),是一个经典的算法问题,它研究从大量数据中快速匹配多个关键词(多个模式)的技术。关键词匹配算法根据对文本还是模式是否进行预先处理分为索引方案和非索引方案。索引方案可以对文本先进行预先处理,再进行关键词匹配。我们主要考虑是非索引方案。这种方案由于不需要对搜索文本进行预处理,所以是实时网络数据流特征检测***的核心算法。多模式匹配问题属于串处理(String Processing)和组合模式匹配(Combinatorial Pattern Matching)领域。
研究报告表明现有的算法只能处理1Gbps带宽的数据,但是网络带宽却达到了53Gbps[2004年中国互联网报告],在这种情况下,现存算法无法有效实时的处理。另一方面,网络带宽增加的速度远远快于计算机硬件发展的速度,要想跟上带宽的发展速度,就需要不断增加硬件设备,这对应用***来说是不可承受的。本发明中提出的算法正是基于这种背景下研究出来的。并且在实际环境数据下的测试中获得良好的结果。
目前基于G级带宽网络下实时信息检测需要成百上千台主机形成一个局域网来处理,其根本原因在于现有的算法性能差,在单机上不能有效的实时处理如此大流量的数据。本专利提出的算法在性能上比现有算法的性能要好,能够加快单主机处理的速度,如果运用在实际应用***中,主机的数量将可以减少一个数量级,从而减少应用***的成本,相应的提高***运行效率和管理效率。
发明内容
本发明的目的在于,提供一种快速网络流特征检测的关键词匹配方法,其可保证在有效处理网络数据流时具有较低误报率和漏报率。
本发明一种快速网络流特征检测的关键词匹配方法,它是根据关键词长的特性设计出来的一种新型的多关键词匹配算法,可以提高特征检测***性能;其特征在于,包括如下步骤:
1)对关键词进行预处理;
2)使用全部关键词计算出一个最小完美散列函数;
3)计算在扫描阶段所有可能出现的字符块可以跳跃的最大距离;
4)使用全部关键词建立一张检测表;
5)扫描处理;
6)使用该检测表,快速的进行数据流特征检测。
其中步骤2所述的主要是计算出一个哈夫曼编码的新多关键词匹配算法函数,该步骤不但建立并使用跳跃表,而且同时使用最小完美散列函数把全部关键词散列到一个保序编号上。
其中步骤5的扫描处理,哈夫曼编码的新多关键词匹配算法从左往右扫描文本,直到发现不能再跳跃才使用最小完美散列函数计算出候选关键词的编号,最后通过严格匹配确认关键词是否出现。
具体实施方式
我们使用∑表示字符集合,使用∑*表示字符串(模式),P∈(∑*)*表示多关键词集合,t表示文本,我们使用ti..i+j表示从i到i+j的文本;pi表示模式串。n=|t|,m=|pi|分别表示t,pi的长度。r=|P|表示集合P的大小,即关键词个数。pi表示一个关键词,w表示机器字的字节数(对于32位机器,则是4)。为了描述算法方便,假设所有关键词长度相同即|pi|=n;多模式匹配问题就是在文本x中,查询{p1,p2…pr}的全部出现位置.
在不同关键词规模、最短关键词长度和字符集大小等情况下,有效的多关键词匹配算法是不同的。我们设计的新多关键词匹配算法适合关键词比较长的情况。我们把这种基于保序最小完美散列函数(Order PreservingMinimal Perfect Hash)的哈夫曼编码的新多关键词匹配算法简称为MPHF-Match.在本文中除特殊说明,最小完美散列函数都是指保序的散列函数。在预处理阶段,MPHF-Match首先使用全部关键词找到一个完美散列函数,接着使用这个MPHF把每个关键词映射到一个唯一的整数编号中,由于最小完美散列函数(MPHF)是保序函数,所以这个编号就是关键词的序列号。在进行匹配阶段,MPHF-Match从左往右扫描文本,如果发现可能出现关键词,则使用MPHF函数计算出最有可能出现的关键词序列号,通过严格比较来判断是否这个关键词的确出现。
MPHF-Match算法
MPHF-Match分为两步:第一个步是预处理关键词阶段,第二个步是执行扫描匹配阶段。在现实网络信息监控中,由于关键词集合固定不变,所以预处理只进行一次,但是可以在多次文本匹配中重复使用。所以考虑算法性能时,一般不计算预处理的时间。为了描述算法简单,我们假定所有关键词的长度是相等,同时没有重复出现。
预处理阶段
MPHF-Match算法的预处理阶段分为三个步骤。第一步骤就是使用Majewski算法,构造全部关键词的一个MPHF函数。也就是说,初始化全局变量NewMiniChar,NewAlphasz,NewN,NewM和全局表pNewGraph,pTableFirst,pTableSecond,pTableThird。Majewski[MWHC96]算法在0(n)时间内可以找到一个MPHF。
预处理的第二个步骤是建立一个检测表pCheck。建立pCheck表的主要目的是使用它来快速判断是否需要对当前检测的文本进行严格匹配。我们知道,大多数情况下,关键词是不会出现在文本中,所以分阶段判断关键词是否出现,更容易在早期就发现不匹配的关键词,从而减少执行严格匹配次数。pCheck就是使用预处理建立的hashFirst函数,对每一个关键词计算出一个编号,再把pCheck表中这个编号对应位置设计为一个标记。也就是说,我们把pCheck表中的全部项都设置为0,然后如果hashFirst(Pi)=index,则设置pCheck[index]等于1。MPHF-Match和Sun-Wu[Wun-Wu1994]算法最大不同点就是pCheck表结构和Wu-Sun中HASH表结构是不同的。由于使用了MPHF,所以MPHF-Match算法不需要处理复杂的冲突处理。同时计算pCheck下标的散列函数也和下一步中计算pSkip下标的散列函数分离,这样在增加少量计算的代价下,减少了严格匹配执行次数。
预处理的第三个步骤是建立跳跃距离表pSkip。计算跳跃距离的基本思想和Sun-Wu是类似的。我们使用一次一个机器字来计算最大可以跳跃的距离。使用机器字长作为计算块主要是基于计算机一次处理一个字符指令时间和处理一个机器字时间是基本相同的,但是使用一个机器字计算出来的最大跳跃距离一般会比使用一个字符计算出来的最大跳跃距离更大。为了节约存储空间,我们依然使用散列函数来压缩这个跳跃表。
和Sun-Wu算法中的SHIFT表类似,pSkip表中保存如果文本中的任何一块(一个机器字)的出现时,扫描匹配模块能过跳跃的最大距离。我们假定X表示一个文本块(机器字),n=|pi|,w表示机器字的字节数,X通过MIX_HASH映射为pSkip的index项,则pSkip[index]等于:
1:如果X不出现在任何关键词pi中,则pSkip[index]=k-w+1;
2:如果X出现在关键词中,我们假定q是X在所有关键词中出现的最小位置,则pSkip[index]=n-q;
扫描匹配阶段
由于前面假定了所有关键词长度都等于m,w表示机器字的字节数。Table2(MPHF-Match扫描实例代码)展示扫描阶段主要执行五个步骤:
1、设i是当前扫描的位置,计算当前机器字(ti..i+w)的MIX_HASH散列值p;
2、如果pSkip[p]>0,则;i=i+pSkip[i],转第1步;
3、计算j=i-m+w,计算h=hashFirsh(tj..j+m-1);如果pCheck[h]等于0,则转第5步:
4、计算a=hashSecond(tj..j+m-1)。由完美散列的性质2(见第一章),只有Pa才有可能匹配当前位置的文本。所以对tj..j+m-1和Pa执行严格的匹配比较,如果相等,则报告发现关键词a;
5、i=i+1,转第1步;
Table2:MPHF-Match扫描实例代码 |
#define MAX_TABLES 0xFFFF#define ITEM_TYPE unsigned long#define ITEM_TYPE_HALF unsigned short int#define MIX_HASH(pi)((*pi)^(*(pi+1)>>4))unsigned char pSkip[MAX_TABLES+1];unsigned char pCheck[MAX_TABLES+1];int SearchMem(char*data,int datalen){ register long i;unsigned inth;unsigned int f0,f1,f2;ITEM_TYPE_HALF p;ITEM_TYPE_HALF*pint;for(i=mlen-w;i<datalen;){pint=(ITEM_TYPE_HALF*)&(data[i]);p=MIX_HASH(pint);if(pSkip[p]>0){i=i+pSkip[p];continue;};h=hashFirst(data[i-mlen+w],mlen,&f0,&f1,&f2); |
if(pCheck[h]==1){int ip=hashSecond(f0,f1,f2);if(verification(data,i,ip)==true){//report find index pattern ip};};i++;}}; |
为了简化描述算法,我们假设关键词长度相等并且两两不等。实际中一般取最短的关键词长度为标准长度,在其他关键词中取出标准长度的一段作为这个关键词代表。如果不能保证新的关键词集合是两两不等的,则需要在严格匹配的时候,使用循环来处理。
MPHF-Match算法同时结合SumWu算法和散列技术。和SumWu算法不同的是,它冲突检查分两次完成。在SumWu算法中,根据最后的B(一般为2、3)个字母来计算跳跃距离。如果发现不能跳跃,则根据第一个字母来判断是否需要严格匹配。而在MPHF-Match算法中,根据最后一个机器字来计算跳跃距离,可以充分利用硬件来很快的计算出散列函数。同时在MPHF-Match算法中,如果发现不能跳跃,首先使用第一阶段MPHF函数来判断是否需要严格匹配,只有在第一阶段MPHF函数不能判断的时候,才使用第二阶段MPHF函数计算关键词的序列号,进行严格匹配。
Claims (3)
1.一种快速网络流特征检测的关键词匹配方法,它能根据关键词长的特性设计一种新型的多关键词匹配算法,可以提高特征检测***性能;其特征在于,包括如下步骤:
1)对关键词进行预处理,把多个关键词构造成一个检测表和跳跃距离表的处理方法;
2)使用全部关键词计算出一个最小完美散列函数;
3)计算在扫描阶段可能出现任何字符块可以跳跃的最大距离;
4)使用全部关键词建立一张检测表;
5)扫描处理;
6)使用该检测表,快速的进行数据流特征检测。
2.按权利要求1所述的快速网络流特征检测的关键词匹配方法,其特征在于,其中步骤2所述的计算出一个哈夫曼编码的新多关键词匹配算法函数的同时哈夫曼编码的新多关键词匹配算法不但使用建立跳跃表,同时使用最小完美散列函数把全部关键词散列到一个保序编号上。
3.按权利要求1所述的快速网络流特征检测的关键词匹配方法,其特征在于,其中步骤5的扫描处理,哈夫曼编码的新多关键词匹配算法从左往右扫描文本,直到发现不能再跳跃才使用最小完美散列函数计算出候选关键词的编号,最后通过严格匹配确认关键词是否出现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02159352 CN1510592B (zh) | 2002-12-26 | 2002-12-26 | 快速网络流特征检测的关键词匹配方法说明书 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02159352 CN1510592B (zh) | 2002-12-26 | 2002-12-26 | 快速网络流特征检测的关键词匹配方法说明书 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1510592A CN1510592A (zh) | 2004-07-07 |
CN1510592B true CN1510592B (zh) | 2010-04-28 |
Family
ID=34237438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02159352 Expired - Lifetime CN1510592B (zh) | 2002-12-26 | 2002-12-26 | 快速网络流特征检测的关键词匹配方法说明书 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1510592B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100354863C (zh) * | 2005-02-03 | 2007-12-12 | 中国科学院计算技术研究所 | 大规模关键词匹配的方法和*** |
CN101359325B (zh) * | 2007-08-01 | 2010-06-16 | 北京启明星辰信息技术股份有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN101398820B (zh) * | 2007-09-24 | 2010-11-17 | 北京启明星辰信息技术股份有限公司 | 一种大规模关键词匹配方法 |
CN100530194C (zh) * | 2007-10-11 | 2009-08-19 | 中国科学院计算技术研究所 | 一种关键词匹配方法和*** |
CN112527949B (zh) * | 2020-12-15 | 2023-01-13 | 建信金融科技有限责任公司 | 数据存储与检索方法、装置、计算机设备及存储介质 |
-
2002
- 2002-12-26 CN CN 02159352 patent/CN1510592B/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1510592A (zh) | 2004-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhao et al. | Rest: A reference-based framework for spatio-temporal trajectory compression | |
CN106850607B (zh) | 基于攻击图的网络安全态势的量化评估方法 | |
JP5596235B2 (ja) | グラフデータストリーム内のオブジェクトをクラス化するための方法 | |
Giugno et al. | Graphgrep: A fast and universal method for querying graphs | |
US20160267142A1 (en) | Detecting at least one predetermined pattern in stream of symbols | |
Georganas et al. | meraligner: A fully parallel sequence aligner | |
CN106062740B (zh) | 生成多个索引数据字段的方法和装置 | |
CN104618304B (zh) | 数据处理方法及数据处理*** | |
Winter et al. | F2S2: Fast forensic similarity search through indexing piecewise hash signatures | |
Najam et al. | Speculative parallel pattern matching using stride-k DFA for deep packet inspection | |
CN102915381B (zh) | 基于多维语义的可视化网络检索呈现***及呈现控制方法 | |
CN107784003B (zh) | 数据查询异常检测方法、装置、设备及*** | |
Franke et al. | Parallel Privacy-preserving Record Linkage using LSH-based Blocking. | |
CN102201948B (zh) | 用于网络入侵检测***的快速匹配方法 | |
Cui et al. | On efficient external-memory triangle listing | |
CN104794130B (zh) | 一种表间关联查询方法和装置 | |
CN1510592B (zh) | 快速网络流特征检测的关键词匹配方法说明书 | |
CN107025263A (zh) | 用于数据库语句的语句解析方法 | |
JP5834701B2 (ja) | コンピューティング環境における資源の発見のための方法、装置、およびプログラム | |
US11416498B2 (en) | Method, electronic device, and computer program product for data stream processing | |
CN112765155B (zh) | 基于区块链的键值存储方法、装置、终端设备及介质 | |
Fengjuan et al. | The research on complex event processing method of internet of Things | |
CN114579580A (zh) | 存储数据的方法、查询数据的方法和装置 | |
Alrammal et al. | Path tree: document synopsis for xpath query selectivity estimation | |
Bahrambeigy et al. | Bloom-Bird: A scalable open source router based on Bloom filter |
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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20100428 |