首页> 中国专利> 快速网络流特征检测的关键词匹配方法说明书

快速网络流特征检测的关键词匹配方法说明书

摘要

本发明是一种快速网络流特征检测的关键词匹配方法,它能根据关键词长的特性设计一种新型的多关键词匹配算法,可以提高特征检测系统性能;包括如下步骤:1)对关键词进行预处理;2)使用全部关键词计算出一个最小完美散列函数;3)计算在扫描阶段可能出现任何字符块可以跳跃的最大距离;4)使用全部关键词建立一张检测表;5)扫描处理;6)使用该检测表,快速的进行数据流特征检测。本发明适用于高性能网络信息监控、病毒检测、防火墙、入侵检测、网络信息内容安全等系统中。

著录项

  • 公开/公告号CN1510592A

    专利类型发明专利

  • 公开/公告日2004-07-07

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN02159352.3

  • 发明设计人 谭建龙;张鑫;向泓;程学旗;

    申请日2002-12-26

  • 分类号G06F17/22;G06F17/00;G06F11/00;G06F12/14;

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人汤保平

  • 地址 100080 北京市中关村科学院南路6号

  • 入库时间 2023-12-17 15:26:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-13

    专利权有效期届满 IPC(主分类):G06F17/22 专利号:ZL021593523 申请日:20021226 授权公告日:20100428

    专利权的终止

  • 2010-04-28

    授权

    授权

  • 2004-09-15

    实质审查的生效

    实质审查的生效

  • 2004-07-07

    公开

    公开

说明书

技术领域

本发明属于网络信息内容检测领域,包括高性能网络信息监控、内容安全、防火墙、入侵检测和病毒检测系统等领域。特别涉及基于一种快速网络流特征检测的关键词匹配方法。

背景技术

多关键词匹配(Keywords Matching)有时也称为多模式匹配(MultiplePattern Matching)或者字典匹配(Directory Matching、Set Matching),是一个经典的算法问题,它研究从大量数据中快速匹配多个关键词(多个模式)的技术。关键词匹配算法根据对文本还是模式进行预先处理分为索引方案和非索引方案。索引方案可以对文本先进行预先处理,再进行关键词匹配。我们主要考虑是非索引方案。这种方案由于不需要对搜索文本进行预处理,所以是实时网络数据流特征检测系统的核心算法。多模式匹配问题属于串处理(String Processing)和组合模式匹配(Combinatorial Pattern Matching)领域。

到2002年,研究报告表明算法只能处理1Gbps带宽的数据。但是网络带宽增加的速度远远快于计算机硬件发展速度,针对网络数据流的实时信息检测必须同时依靠算法改进和硬件发展。当前基于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}的全部出现位置.

在不同关键词规模、最短关键词长度和字符集大小等情况下,有效的多关键词匹配算法是不同的。我们设计的新多关键词匹配算法适合关键词比较长的情况。我们把这种基于保序最小完美散列函数(OrderPreserving Minimal 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]算法在O(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 OxFFFF#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函数计算关键词的序列号,进行严格匹配。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号