• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 语文学习 > 正文

    【一种针对大规模URL关键字的多模匹配算法】多模匹配算法 arm平台

    时间:2020-03-11 07:17:29 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要: 针对网络信息安全中大规模URL关键字匹配过程中自动机内存占用过大问题,提出一种基于分类思想的多模匹配算法,将URL关键字按照模式长度和匹配要求进行分类,分别使用Wu-Mamber算法和自动机类多模匹配增效算法GFAM进行匹配。实验结果表明,经过分类后,大规模配置(>10w)情况下,算法能够将占用内存降低为只使用GFAM算法的内存的5%以内。
      关键词:
      中图分类号: TP301.6 文献标识码:A 文章编号:2095-2163(2011)01-0020-04
      
      0引言
      字符串匹配问题是计算机科学中的一个经典研究领域。信息安全领域中,URL关键字匹配是入侵检测系统、防火墙系统、反钓鱼防御系统等的最基础也是最核心的部分。然而随着URL域名数量的不断增长,网络安全威胁不断升级,尤其是数据规模惊人增长的情况下,大规模URL关键字多模匹配算法的性能已经成为系统的瓶颈,同时针对URL关键字的匹配不再是简单的精确匹配,还包含了如“与”表达式匹配、模糊匹配等多种匹配需求。传统的字符串匹配算法已经不能适用于大规模URL关键字的匹配,可以说提高大规模URL关键字匹配的效率,降低URL关键字匹配部分的系统开销,提高算法的适应性和健壮性将对消除系统瓶颈起到至关重要的作用。
      1研究现状
      从多模匹配算法的特点来说,可以将多模匹配算法分为基于前缀搜索的匹配算法、基于后缀搜索的匹配算法、基于子串搜索的匹配算法、基于位并行的匹配算法以及基于硬件的匹配算法。目前在字符串匹配领域的研究工作主要集中在对经典算法的改进上,由于基于位并行的匹配算法和基于硬件的匹配算法不适用于大规模URL关键字匹配,以下主要介绍其他三类中最具代表性的算法。
      (1)基于前缀搜索的AC[1]算法。AC算法是经典的多模匹配算法,至今大部分的多模匹配算法都是针对AC算法进行改进。AC算法对所有关键字建立有限自动机,利用该自动机对输入文本进行扫描。自动机建立过程建立三个函数:状态跳转函数goto,输出函数output,失效函数failure。
      匹配过程是从零状态出发,每次扫描文本中的一个字符,在当前状态情况下,查看扫描到的字符,利用goto函数、failure函数跳转到下一个状态。如果跳转到的状态的output函数不为空,表示命中了某个关键字,输出该关键字。
      (2)基于后缀搜索的Wu-Mamber算法[2]。Wu-Mamber算法基于单模匹配中BM[3]算法的坏字符跳转思想,维护一个固定长度的扫描窗口,能够实现对文本的跳跃式扫描。算法初始化阶段首先确定所有规则的最短长度m,并建立三个表,分别是跳转表Shift、后缀哈希表Hash、前缀表Prefix。通过Shift表确定扫描窗口内后缀的跳转距离;Hash表存储的是指针,指针指向具有相同后缀哈希值的所有模式串组成的链表,同时指向具有相同后缀哈希值的模式串的前缀链表;Prefix表存储了模式串的前缀哈希值,以提高匹配速度。
      (3)基于子串搜索的SBOM算法[4]。SBOM算法采用一种称为Factor Oracle[5]自动机的数据结构,可以识别模式串集合的超集,利用自动机,在长度为lmin的文本窗口内,从后向前逐个识别字符。
      AC算法具有与关键字特征无关,匹配速度稳定的优势,但内存消耗高,初始化时间长。SBOM算法的匹配速度快,但效率不够稳定,并且对最短串长度敏感,内存和预处理时间与AC基本相同。Wu-Mamber算法的预处理时间短,内存消耗少,且模式串规模越大,预处理时间和内存优势越明显,但匹配速度不稳定,对最短串长度敏感。
      AC算法以其匹配效率稳定,适应性强的优势成为目前大多数信息安全系统的首选算法,如SNORT系统使用的基于AC的改进算法AC_BM。但随着URL关键字规模的持续高速增长,AC算法内存消耗过高,自动机启动时间过长的问题逐渐突显,已经成为系统瓶颈,必须进行优化。
      2基于分类思想的多模匹配算法PMUC
      2.1大规模URL关键字的特征
      针对目前一般的信息安全系统普遍使用的特征库中URL配置(不少于10万条)的统计,URL关键字长度分布在4~256之间,平均长度为40个字节左右。长度在4~10的关键字较少,而长度在11~50之间的关键字占到接近所有关键字的85%左右。另外由于URL配置由数据库进行维护,数据库对URL关键字长度有一定的限制,因此存在“与”表达式匹配的需求,即将较长的URL关键字分割成多个小关键字,对每个小关键字添加一个“&”属性,借此表示该关键字具有“与”表达式匹配需求,而只有当所有“与”表达式关键字均命中,才能报告整体关键字的命中。从对配置文件的统计结果来看,“与”表达式最多被“&”分割成4段,具有“与”表达式匹配要求的关键字较少,只占到总规则条数的1.25%左右。
      2.2PMUC算法的理论基础
      2.2.1Wu-Mamber算法的思想
      假设模式串集合P中最短的模式长度为m,Wu-Mamber算法在后面仅考虑所有模式的前m个字符组成的模式串。预处理阶段将建立三个表格:
      (1)移动表(Shift表):该表用来决定扫描文本的过程中,可以跳过多少个字符。存在两种情况。其中,x为URL关键字字符串,i为每B个字符映射成的哈希值。
      ① X和任何模式中的子串都不匹配,这种情况下,可以移动文本的m-B+1个字符。记录移动表SHIFT[i]的值为m-B+1。
      ② X出现在一些模式中,找出X在所有模式中的最右出现。假设X在模式Pj的位置q处结束,并且X并不结束在任何其他模式中比q大的位置,记录SHIFT[i]的值为m-q。
      (2)哈希表(Hash表):指向后缀hash值相同的模式链表和前缀表。表项与shift表有相同的哈希值。
      (3)前缀表(Prefix表):存放字符串的前缀哈希值,提高匹配效率。
      例如,假设模式集合为?邀from, front, boomed?妖,最短串的长度是4,设字符块大小B为2。为该模式集合建立的Shift表如表1所示。
      Wu-Mamber算法的匹配过程:
      (1)计算所有模式中最短串的长度;
      (2)扫描模式集合,建立三个表;
      (3)如果Shift表对应表项的值不为0,按照shift值向后移动窗口,继续执行步骤(3),为零时转步骤(4);
      (4)查找Hash表,找出shift值为零的B个字符在模式集合中出现的位置以及每个位置上的模式,执行步骤(5);全部扫描结束,转步骤(3)继续扫描剩余文本;
      (5)查找该模式的前缀表项,与当前窗口中的文本前缀值比较,相等则逐个比较,如果全部匹配,报告一个成功匹配,否则转下一个位置,继续执行步骤(5)。
      2.2.2GFAM算法的思想
      CFAM 算法[6]是对AC算法的改进,采用字频映射技术分类压缩列,采用位图检索技术[7]提高检索效率。在匹配过程中,根据映射规则转换输入字符,高频字符在保留列中查找跳转状态;低频字符利用位图信息获得跳转状态。根据输入字符c 计算转移状态的伪码如下:
      if F(c) == 0
      return 0;
      else if F(c) > 0
      return the data in uncompressed array (F(c), c);
      else
      if CHECK_BIT(c, pbitmap) == 0
      return 0;
      else
      return the data in compressed array with index computed by bitmap;
      2.3PMUC算法
      2.3.1基本思想
      从对大规模(不低于10万条配置)URL关键字的统计结果来看,长度较长的关键字占多数,较为适合Wu-Mamber算法,而通过长度过滤后,其余短关键字适合自动机类算法。算法专门针对大规模URL关键字匹配进行性能优化,命名为PMUC算法(Multi-pattern Matching Algorithm for URL based on Classification)。
      PMUC算法利用Wu-Mamber算法来匹配长度较长的URL关键字,长度范围在10以上的关键字占总关键字条数的90%以上,并且命中率较低,实际匹配过程中命中率在10%以下,这部分关键字非常适用于Wu-Mamber类算法,产生较大跳跃距离的同时,大大节省了内存空间。
      PMUC算法同时采用了基于字频特征和位图压缩GFAM,该算法对AC算法进行了改进。长度较短的关键字以及具有“与”表达式匹配需求的关键字使用GFAM算法进行匹配,经过Wu-Mamber算法对长关键字以及具有“与”表达式需求的关键字进行过滤后,利用GFAM算法进行匹配的关键字只占很小一部分,且相比于AC算法来说,GFAM算法能够进一步压缩自动机占用的内存。
      PMUC算法结合这两个改进算法,将URL关键字按照关键字特征进行分类匹配,在保证匹配效率的基础上,达到了明显的内存优化效果。实验表明,PMUC算法占用的内存可压缩为原只使用AC算法的5%以下,并且关键字规模越大,优化效果越明显。同时初始化时间有了明显降低,这对于经常进行配置更新的信息安全系统来说,将明显提高系统的启动速度。图3所示的伪代码表明了PMUC算法的初始化与匹配过程。其中S表示分类条件。
      2.3.2算法匹配条件
      目前,URL关键字匹配规模在10w条以上,且未来规模将越来越大。每条关键字的长度一般在4~1 024之间变化,其中长度大于10的关键字占总关键字比例的90%以上。另外在入侵检测中,存在一种称为“与”表达式匹配的匹配规则,只有当规则中的所有模式都匹配到的情况才宣告匹配成功。
      根据以上URL关键字匹配特点,将关键字按照如下条件分类。其中,关键字的长度用L表示,临界长度用m表示,为关键字添加属性bds,关键字的bds=1时,说明该关键字是一条“与”表达式规则的关键字。
      Wu-Mamber算法的匹配条件:
      pattern.L>=m&&pattern.bds=0;
      GFAM算法的匹配条件:
      pattern.L<m||pattern.bds=1。
      2.3.3参数对算法性能的影响
      m:Wu-Mamber算法对所有模式的最短串长度敏感,因此使用Wu-Mamber算法进行匹配的模式的最短长度不能太短,m表示所有模式的最短串长度。文献[2]给出了Wu-Mamber算法的时间复杂度为O(BN/m),在模式较为随机的情况下,m越大,跳跃距离越大,匹配速度越快。但对于PMUC算法来说,m增大也就意味着模式中使用GFAM算法进行匹配的模式增多,因此将导致内存的增大。
      D:GFAM算法在自动机的前D层仍然用二维数组来记录跳转状态,且层数越低,出度越大,保证了高频字符的查找速度。而层数大于D后,跳转状态使用链表来实现,由于此时D层后的字符出现频率较低,出度较小,因此在尽可能保证查找速度的条件下,压缩了内存空间。由于所有关键字中长度大于m的关键字已经使用Wu-Mamber进行匹配,因此,D的设置应当小于m。一般来说,D越小,越节省内存,但匹配速度有所下降。
      3实验结果与分析
      3.1测试环境与数据
      实验的测试环境为8核CPU,主频为2.6Hz,操作系统采用GreatTurbo EnterpriseServer10,内存总量为16GB。文本集采用离线网络数据包,分别包含100万条http包、200万条、300万条、400万条。关键字采用真实URL中提取的部分连续字符串作为测试集合。
      3.2实验结果与分析
      首先测试调整参与“与”匹配时间的关系,分别选取含有100w、200w、300w,400w包的cap包,使用GFAM算法和PMUC进行匹配,记录精确到us的匹配时间。测试匹配时间时,选用14万条的配置规模,实验结果如图4所示。
       图4中,横坐标表示m和D的不同值组合。其中,m初始值设置为11,D设置为8,m初始测试值根据对规则长度的统计结果进行设置。可以看出,整体的匹配时间是呈现下降趋势的,小范围内有波动。最左侧的时间也比较短, 而在 右侧的曲线内,m=8,D=6的点以及m=7,D=4的点匹配时间较短。如果考虑内存因素,那么必然是选择m=7,D=4比较好。
      图5说明了调整参数m和D对内存的影响。从内存占用情况来看,D值相同的情况下,m>=9时,m每减小1,内存减小1Mb左右;而当m<9时,m值的减小对内存占用基本没有影响。但是在固定m的情况下,D每减小1,内存相应减小约10Mb,因此,在选定m的情况下,如果匹配时间没有明显的变短,那么D可以尽可能减小,以节省内存。
      图6给出了两者内存对比情况,结果表明与GFAM相比,PMUC的内存占用明显较低,此时选取的参数是D=4,m=7,则PMUC将获得更好的内存性能。
      图7表明,模式规模越大,PMUC的内存优化的效果越明显。
      4结束语
      本文针对信息安全领域中URL配置量不断加大,内存消耗巨大,造成系统产生瓶颈的问题,提出使用分类思想的多模匹配算法PMUC,通过调整分类参数使得PMUC算法达到速度与内存的最佳结合点,从而在匹配速度可接受的情况下,大幅降低自动机匹配部分的消耗。实验表明,PMUC算法占用的内存,可降低为原只使用GFAM算法时的5%以下,这为今后系统的高效稳定运行提供了有力的保证,并为未来应用于不断增长的数据留下了更大的空间,使得系统的可扩展性提升。同时,针对特定匹配,选择合适的算法进行分类匹配的思想,也为研究高效的串匹配算法提供了开阔思路。
      参考文献:
      [1] AHO A V,CORASICK M J. Efficient string matching:an aidto biologigraphic search. Communications of the ACM,1975,18 (6):333-340.
      [2] WU S,MANBER U. A fast algorithm for multi-pattern search- ing. Report TR-94-17,Department of Computer Science,Univ- ersity of Arizona,Tucson,AZ,1994.
      [3] BOYER R S,MOORE J S. A Fast String Searching Algorithm [J]. Communications of the ACM,1977,10(10):762-772.
      [4] CROCHEMORE C A M,RAFFINOT M. Factor Oracle: A New Structure for Pattern Matching[R]. Institute Gaspard-Monge, U- niversite de Marne-la-Vallee,1999.
      [5] ALLAUZEN C,RAFFINOT M. Factor Oracle of a Set of Wor- ds[R]. Technical Report 99-11,Institute Gaspard-Monge,Univ- ersite de Marne-la-Vallee,1999.
      [6] 李超,张宏莉,楚国锋. 基于字频特征的自动机多模匹配增效 算法[J]. 微计算机信息,2009,29(3):206-208.
      [7] 张元竞,张伟哲. 一种基于位图的多模匹配算法[J]. 哈尔滨工 业大学学报,2008,36(6):110-114.

    推荐访问:匹配 算法 多模 一种针对大规模URL关键字的多模匹配算法 多模匹配算法 多模匹配算法ppt下载

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章