CN109981398B - 基于膨胀系数的k分组正则表达式分组方法和系统 - Google Patents

基于膨胀系数的k分组正则表达式分组方法和系统 Download PDF

Info

Publication number
CN109981398B
CN109981398B CN201910134197.0A CN201910134197A CN109981398B CN 109981398 B CN109981398 B CN 109981398B CN 201910134197 A CN201910134197 A CN 201910134197A CN 109981398 B CN109981398 B CN 109981398B
Authority
CN
China
Prior art keywords
regular
dfa
regular expression
expression
grouping
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
Application number
CN201910134197.0A
Other languages
English (en)
Other versions
CN109981398A (zh
Inventor
高曌
孙毅
张志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201910134197.0A priority Critical patent/CN109981398B/zh
Publication of CN109981398A publication Critical patent/CN109981398A/zh
Application granted granted Critical
Publication of CN109981398B publication Critical patent/CN109981398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于膨胀系数的K分组正则表达式分组方法和系统,包括:获取包含多个正则表达式的正则表达式集合,创建K个分组,将正则表达式依次分配到K个分组中使各组的膨胀系数总值最小。本发明在保证正则表达式分组正确的基础上,在大规模基于DFA的正则表达式模式匹配上获得很高的压缩比,使得每组正则表达式之间的相互作用不会导致状态空间爆炸,并且有较好的匹配效率和分组通用性。

Description

基于膨胀系数的K分组正则表达式分组方法和系统
技术领域
本发明涉及深度包检测领域,并特别涉及其中基于确定状态自动机(DFA)的正则表达式模式匹配领域。
背景技术
随着计算机网络的迅速发展和广泛应用,互联网安全问题不可避免地出现在人们面前。多样化的网络流量和服务应用以及各种入侵手段、攻击方式层出不穷。因此,深度包检测被广泛应用在各类网络服务中,对网络数据包进行内容分析,将网络数据包内携带的内容与事先设置的表征病毒特征的模式集进行特征匹配,从而确定数据包中是否携带非法内容。基于DFA的正则表达式匹配方法由于其对实时高速到达的待检测数据流和大规模模式匹配有较好的匹配效果的特点,得到了广泛的应用。
使用基于DFA的模式匹配进行正则表达式匹配过程中,由于DFA的状态数和规则集密切相关,海量并不断增加的规则集表达式数量使DFA状态数量剧增,导致状态爆炸。此外,正则表达式中存在的通配符和长度限制进一步加剧DFA的空间占用,目前的硬件条件无法满足DFA导致的巨大空间需求。最后,基于DFA的正则表达式进行匹配的过程中需要保存所有可能匹配,又对匹配过程的速度和实用性能提出了挑战。
当前,针对网络应用中DFA匹配存在的问题首先会考虑同时处理多个正则表达式,将多个待检测正则表达式合并成DFA后再进行匹配。合理选取正则表达式分组的划分标准,将合并后DFA的状态数量减少到时间和空间可以容忍的地步,是必须考虑的问题。现有的正则表达式分组算法均不同程度上存在适用范围受限、通用性差、匹配效率低下和分组无法同时顾及组内、组间相互作用的缺陷,影响最终的分组效果。
为了克服现有分组方法的上述缺陷,本发明提出了一种基于膨胀系数的K分组正则表达式分组方法,在保证对待检测正则表达式分组正确的前提下,使得每组正则表达式之间的相互作用不会导致状态空间和状态爆炸,并且有较好的匹配效率和分组通用性。
发明内容
为了解决上述技术问题,本发明目的在于提供一种基于膨胀系数的K分组正则表达式分组方法,其中包括:
步骤1、获取包含多个正则表达式的正则表达式集合,通过计算两两正则表达式合并生成的DFA状态数量和正则表达式的DFA状态数量之间的差值,得到该正则表达式集合中每一对正则表达式的冲突规模,集合该冲突规模构成该正则表达式集合的冲突矩阵;
步骤2、根据预设分组数量K,创建K个分组,每个分组的初始值为零;
步骤3、根据正则表达式的长度和其DFA状态数量的差值,得到每一个正则表达式的膨胀系数,集合该膨胀系数得到膨胀系数集合,将正则表达式按照膨胀系数从小到大升序排序,得到升序集合;
步骤4、将升序集合中正则表达式,依次分配到K个分组中使各组的膨胀系数总值最小;
步骤5、依次从升序集合中选择其中一个正则表达式作为当前表达式,判断将该当前表达式从当前所在分组移动到另一分组后,当前所在分组的冲突状态数量是否减少,若是,则从所有分组中选择冲突状态数目最多的分组,将该当前表达式移入该冲突状态数目最多的分组,否则从升序集合中继续选择下一个正则表达式,继续执行步骤5,直到判断完毕该升序集合中所有正则表达式,保存各分组作为分组结果。
所述的基于膨胀系数的K分组正则表达式分组方法,其中步骤1中该冲突矩阵Mij表示ri和rj之间冲突状态的规模,Mij=Sij-Si-Sj,其中ri和rj分别为正则表达式集合R中的任意两条正则表达式,其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij
所述的基于膨胀系数的K分组正则表达式分组方法,其中步骤3中该膨胀系数DR表示DFA膨胀的相对量,其计算过程为:
Figure BDA0001976432330000021
其中,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,#(DFA)-#(NFA)表示DFA的膨胀部分。
所述的基于膨胀系数的K分组正则表达式分组方法,其中还包括:
步骤6、合成各分组结果内的正则表达式,得到DFA状态机,将待检测数据包内携带的内容与该DFA状态机进行特征匹配,以对该待检测数据包进行特征检测。
所述的基于膨胀系数的K分组正则表达式分组方法,其中采用范围界定法确定K的取值,设K的范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,upper_bound为冲突矩阵中每一行对应的负数取值的数量最大值。
本发明还提供了一种基于膨胀系数的K分组正则表达式分组系统,其中包括:
模块1、获取包含多个正则表达式的正则表达式集合,通过计算两两正则表达式合并生成的DFA状态数量和正则表达式的DFA状态数量之间的差值,得到该正则表达式集合中每一对正则表达式的冲突规模,集合该冲突规模构成该正则表达式集合的冲突矩阵;
模块2、根据预设分组数量K,创建K个分组,每个分组的初始值为零;
模块3、根据正则表达式的长度和其DFA状态数量的差值,得到每一个正则表达式的膨胀系数,集合该膨胀系数得到膨胀系数集合,将正则表达式按照膨胀系数从小到大升序排序,得到升序集合;
模块4、将升序集合中正则表达式,依次分配到K个分组中使各组的膨胀系数总值最小;
模块5、依次从升序集合中选择其中一个正则表达式作为当前表达式,判断将该当前表达式从当前所在分组移动到另一分组后,当前所在分组的冲突状态数量是否减少,若是,则从所有分组中选择冲突状态数目最多的分组,将该当前表达式移入该冲突状态数目最多的分组,否则从升序集合中继续选择下一个正则表达式,继续执行模块5,直到判断完毕该升序集合中所有正则表达式,保存各分组作为分组结果。
所述的基于膨胀系数的K分组正则表达式分组系统,其中模块1中该冲突矩阵Mij表示ri和rj之间冲突状态的规模,Mij=Sij-Si-Sj,其中ri和rj分别为正则表达式集合R中的任意两条正则表达式,其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij
所述的基于膨胀系数的K分组正则表达式分组系统,其中模块3中该膨胀系数DR表示DFA膨胀的相对量,其计算过程为:
Figure BDA0001976432330000041
其中,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,#(DFA)-#(NFA)表示DFA的膨胀部分。
所述的基于膨胀系数的K分组正则表达式分组系统,其中还包括:
模块6、合成各分组结果内的正则表达式,得到DFA状态机,将待检测数据包内携带的内容与该DFA状态机进行特征匹配,以对该待检测数据包进行特征检测。
所述的基于膨胀系数的K分组正则表达式分组系统,其中采用范围界定法确定K的取值,设K的范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,upper_bound为冲突矩阵中每一行对应的负数取值的数量最大值。
本方法的有益效果为:通过本发明所提出的基于膨胀系数的K分组正则表达式分组方法,克服了以往算法通用性差、空间膨胀等问题,得到了很高的DFA状态压缩比例,对于网络环境中的大规模DFA状态的正则表达式分组效果更好。
附图说明
图1是本发明的基于膨胀系数的K分组正则表达式分组方法一实施例流程图;
图2A、图2B、图2C分别是正则表达式r1=“.*ab.*cd”,r2=“.*ef.*gh”和r3=“.*ab.*gh”的DFA示意图;
图3是正则表达式r1=“.*ab.*cd”,r2=“.*ef.*gh”合并后的r1|r2的DFA示意图;
图4是正则表达式r1=“.*ab.*cd”,r3=“.*ab.*gh”合并后的r1|r3的DFA示意图;
图5是正则表达式r1=“.*ab.*cd”,r2=“.*ef.*gh”和r3=“.*ab.*gh”的冲突矩阵。
具体实施方式
为了克服基于DFA模式匹配分组空间爆炸和匹配速递低下等问题,本发明提出了一种基于膨胀系数的K分组正则表达式分组方法,其中K为正整数。之所以要对正则表达式进行分组是因为在接受到网络中大量的数据包时,要对网络数据包内携带的负载内容与事先设置的表示入侵、病毒等特征的模式集进行特征匹配,以确定数据包内是否出现了非法内容。对于高速到达的待检测数据流、大规模的正则表达式集合进行同时处理提高检测速度时,为同时处理多个正则表达式,要选取合理的正则表达式分组划分标准,根据正则表达式之间的相互作用情况,将其分为若干组,每组正则表达式之间的相互作用都不会造成状态的剧烈膨胀,避免空间爆炸。
关于K的选值问题,有两种选取方法,一种是遍历法;一种是范围界定法。前者没有选取特定的取值范围,对K值的选取进行了一系列的尝试,但相比另一种方法而言,取得最优K值的准确性较高;另一种通过范围限定的方法对K值进行选取,较为精简。
采用范围界定法时,设其范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,若将集合中具有部分相似首部的正则表达式分为一组,则其一组内可能产生状态爆炸的概率较低,因此可以将其作为lower_bound选取标准;upper_bound为冲突矩阵中每一行对应的负数取值的个数的最大值。
本发明优选第一种方法,也就是一种启发式(遍历法)的方法。
K值大小主要是以减少同一组内的正则表达式相互作用导致的空间膨胀为目标的,主要取决于待检测表达式,然后启发式搜索,并非在哪个取值之间就一定会好。
该K分组正则表达式分组方法初始将正则表达式分为K组,并根据每个正则表达式的膨胀系数将其分配到K个不同的分组中,之后对各个分组结构进行动态调整得到最终的正则表达式K个分组。其主要包括以下步骤:
步骤S100:计算正则表达式集合的冲突矩阵;
步骤S200:创建K个分组用以保存分组后的正则表达式;
步骤S300:给各个正则表达式进行编号,并分别计算每个正则表达式的膨胀系数,然后将正则表达式按照膨胀系数从小到大升序排序,仅存放正则表达式的序号;
步骤S400:将升序排序后的正则表达式,依次放入K个分组中,即将重新排序后正则表达式按照先从1组到K组,然后从K组到1组的顺序依次存放到步骤S200中的K个分组中,使各组的膨胀系数总值最小。
步骤S500:对经过步骤S400处理的各个正则表达式,计算将其从当前所在分组移动到另一分组后减少的冲突状态数量。
步骤S600:如果步骤S500中移动正则表达式到另一分组后分组冲突数目减少,则从所有分组中选择冲突状态数目最多的分组将其移入,然后继续步骤S500;否则得到最后的正则表达式分组结果。步骤400很难一次到位得到“各组的膨胀系数总值最小”,因此还需要步骤500和600进一步确保“各组的膨胀系数总值最小”。即步骤200是初步分组,后续步骤继续优化分组结果。
上述步骤执行得到的结果,是移动任何正则表达式到其他分组都不会减少冲突状态数目的局部最优分组结果。至此一步,正则表达式的分组完成。通过分组算法将正则表达式集合进行分组,把各个分组内的正则表达式合成为一个DFA状态机,使得DFA状态数大幅减少,因此可以降低正则表达式的存储空间,在较小的存储空间下得到较高的模式匹配速率。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
对实施例的解释之前,先对所要涉及冲突矩阵、K分组和膨胀系数做出如下解释,此解释仅用于解释本发明的一个实施例,并不局限与本发明及本实施例:
1、冲突矩阵Mij:对正则表达式集合R中的任意两条正则表达式ri和rj其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij。Mij表示ri和rj之间冲突状态的规模,其解释为Mij=Sij-Si-Sj
2、K分组即图论问题中K分组的思想,初始时将正则表达式集合分为K个组,每次循环同时计算K个分组中的状态数目,从而决定该正则顶点,即一条正则表达式加入K个分组中的其中一个分组与否。
3、正则表达式的膨胀系数DR如下:
Figure BDA0001976432330000071
其中,#()表示FA的状态数,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,而#(DFA)-#(NFA)表示DFA的膨胀部分,比值DR表示DFA膨胀的相对量。膨胀系数越大,会导致组合DFA状态空间剧烈膨胀。FA在这里就是有限状态自动机DFA和NFA的统称,其中DFA是确定状态自动机,NFA是非确定状态自动机。对于一个正则表达式,可以通过子集构造法将NFA转成DFA。但在本发明中进行分组的都是针对DFA而言的。
为了克服基于DFA模式匹配分组空间爆炸和匹配速递低下等问题,本发明提出了一种基于膨胀系数的K分组正则表达式分组方法。在保证正则表达式分组正确的基础上,在大规模基于DFA的正则表达式模式匹配上获得很高的压缩比,使得每组正则表达式之间的相互作用不会导致状态空间爆炸,并且有较好的匹配效率和分组通用性。图1是本发明的基于膨胀系数的K分组正则表达式分组方法一实施例流程图,主要包括以下步骤:
步骤S100:计算正则表达式集合的冲突矩阵Mij。例如正则表达式r1=“.*ab.*cd”,r2=“.*ef.*gh”和r3=“.*ab.*gh”,其DFA分别如图2A、图2B、图2C所示。将r1,r2,r3合成一个DFA时,会有两种情况:一个是合并后的DFA状态数小于各个正则表达式单独产生的DFA状态数目之和,如图3所示。r1和r2分别有5个DFA状态,而r1|r2有7个状态,合并后比单独转化的DFA状态少三个;另外一种是合并后的DFA状态数目剧烈膨胀,如图4所示,此种情形下r1|r3的DFA状态数是16个,比未合并时的总状态数目多6个。从而按照冲突矩阵Mij得到r1,r2和r3组成的冲突矩阵如图5所示;
步骤S200:创建正则表达式集合R的K个分组{R1,R2,..,Rk},其初始值为零NULL,用于存放进行分组后的正则表达式;
步骤S300:给各个正则表达式进行编号,并分别计算每个正则表达式的膨胀系数,得到膨胀系数集合DR[n],其中n是正则表达式集合的大小,DR[n]中存放到的是正则表达式集合中每条表达式对应的膨胀系数,然后将正则表达式按照膨胀系数从小到大升序重新排序;
步骤S400:将S300中升序排序后的正则表达式,依次按照先从1组到K组,然后从K组到1组的顺序分配到步骤S200中的K个分组中,使各组的膨胀系数总值最小;
步骤S500:对第i(1≤i≤n)条正则表达式,计算
Figure BDA0001976432330000081
Rm为第m个分组,判断将该正则表达式从当前所在分组移动到另一分组是冲突数目减少情况,具体即使在最小组内度量的情况下,选取最大组件度量;
步骤S600:如果步骤S500中移动正则表达式到另一分组后分组冲突数目减少,则从所有分组中选择冲突状态数目最多的分组将其移入,然后继续步骤S500;否则得到最后的正则表达式分组结果。
上述步骤执行得到的结果,是移动任何正则表达式到其他分组都不会减少冲突状态数目的局部最优分组结果。至此一步,正则表达式的分组完成。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提供了一种基于膨胀系数的K分组正则表达式分组系统,其中包括:
模块1、获取包含多个正则表达式的正则表达式集合,通过计算两两正则表达式合并生成的DFA状态数量和正则表达式的DFA状态数量之间的差值,得到该正则表达式集合中每一对正则表达式的冲突规模,集合该冲突规模构成该正则表达式集合的冲突矩阵;
模块2、根据预设分组数量K,创建K个分组,每个分组的初始值为零;
模块3、根据正则表达式的长度和其DFA状态数量的差值,得到每一个正则表达式的膨胀系数,集合该膨胀系数得到膨胀系数集合,将正则表达式按照膨胀系数从小到大升序排序,得到升序集合;
模块4、将升序集合中正则表达式,依次分配到K个分组中使各组的膨胀系数总值最小;
模块5、依次从升序集合中选择其中一个正则表达式作为当前表达式,判断将该当前表达式从当前所在分组移动到另一分组后,当前所在分组的冲突状态数量是否减少,若是,则从所有分组中选择冲突状态数目最多的分组,将该当前表达式移入该冲突状态数目最多的分组,否则从升序集合中继续选择下一个正则表达式,继续执行模块5,直到判断完毕该升序集合中所有正则表达式,保存各分组作为分组结果。
所述的基于膨胀系数的K分组正则表达式分组系统,其中模块1中该冲突矩阵Mij表示ri和rj之间冲突状态的规模,Mij=Sij-Si-Sj,其中ri和rj分别为正则表达式集合R中的任意两条正则表达式,其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij
所述的基于膨胀系数的K分组正则表达式分组系统,其中模块3中该膨胀系数DR表示DFA膨胀的相对量,其计算过程为:
Figure BDA0001976432330000091
其中,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,#(DFA)-#(NFA)表示DFA的膨胀部分。
所述的基于膨胀系数的K分组正则表达式分组系统,其中还包括:
模块6、合成各分组结果内的正则表达式,得到DFA状态机,将待检测数据包内携带的内容与该DFA状态机进行特征匹配,以对该待检测数据包进行特征检测。
所述的基于膨胀系数的K分组正则表达式分组系统,其中采用范围界定法确定K的取值,设K的范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,upper_bound为冲突矩阵中每一行对应的负数取值的数量最大值。

Claims (8)

1.一种基于膨胀系数的K分组正则表达式分组方法,其特征在于,包括:
步骤1、获取包含多个正则表达式的正则表达式集合,通过计算两两正则表达式合并生成的DFA状态数量和正则表达式的DFA状态数量之间的差值,得到该正则表达式集合中每一对正则表达式的冲突规模,集合该冲突规模构成该正则表达式集合的冲突矩阵;
步骤2、根据预设分组数量K,创建K个分组,每个分组的初始值为零;
步骤3、根据正则表达式的长度和其DFA状态数量的差值,得到每一个正则表达式的膨胀系数,集合该膨胀系数得到膨胀系数集合,将正则表达式按照膨胀系数从小到大升序排序,得到升序集合;
步骤4、将升序集合中正则表达式,依次分配到K个分组中使各组的膨胀系数总值最小;
步骤5、依次从升序集合中选择其中一个正则表达式作为当前表达式,判断将该当前表达式从当前所在分组移动到另一分组后,当前所在分组的冲突状态数量是否减少,若是,则从所有分组中选择冲突状态数目最多的分组,将该当前表达式移入该冲突状态数目最多的分组,否则从升序集合中继续选择下一个正则表达式,继续执行步骤5,直到判断完毕该升序集合中所有正则表达式,保存各分组作为分组结果;
步骤6、合成各分组结果内的正则表达式,得到DFA状态机,将待检测数据包内携带的内容与该DFA状态机进行特征匹配,以对该待检测数据包进行特征检测。
2.如权利要求1所述的基于膨胀系数的K分组正则表达式分组方法,其特征在于,步骤1中该冲突矩阵Mij表示ri和rj之间冲突状态的规模,Mij=Sij-Si-Sj,其中ri和rj分别为正则表达式集合R中的任意两条正则表达式,其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij
3.如权利要求2所述的基于膨胀系数的K分组正则表达式分组方法,其特征在于,步骤3中该膨胀系数DR表示DFA膨胀的相对量,其计算过程为:
Figure FDA0003053851410000011
其中,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,#(DFA)-#(NFA)表示DFA的膨胀部分。
4.如权利要求1、2、3中任意一种基于膨胀系数的K分组正则表达式分组方法,其特征在于,采用范围界定法确定K的取值,设K的范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,upper_bound为冲突矩阵中每一行对应的负数取值的数量最大值。
5.一种基于膨胀系数的K分组正则表达式分组系统,其特征在于,包括:
模块1、获取包含多个正则表达式的正则表达式集合,通过计算两两正则表达式合并生成的DFA状态数量和正则表达式的DFA状态数量之间的差值,得到该正则表达式集合中每一对正则表达式的冲突规模,集合该冲突规模构成该正则表达式集合的冲突矩阵;
模块2、根据预设分组数量K,创建K个分组,每个分组的初始值为零;
模块3、根据正则表达式的长度和其DFA状态数量的差值,得到每一个正则表达式的膨胀系数,集合该膨胀系数得到膨胀系数集合,将正则表达式按照膨胀系数从小到大升序排序,得到升序集合;
模块4、将升序集合中正则表达式,依次分配到K个分组中使各组的膨胀系数总值最小;
模块5、依次从升序集合中选择其中一个正则表达式作为当前表达式,判断将该当前表达式从当前所在分组移动到另一分组后,当前所在分组的冲突状态数量是否减少,若是,则从所有分组中选择冲突状态数目最多的分组,将该当前表达式移入该冲突状态数目最多的分组,否则从升序集合中继续选择下一个正则表达式,继续执行模块5,直到判断完毕该升序集合中所有正则表达式,保存各分组作为分组结果;
模块6、合成各分组结果内的正则表达式,得到DFA状态机,将待检测数据包内携带的内容与该DFA状态机进行特征匹配,以对该待检测数据包进行特征检测。
6.如权利要求5所述的基于膨胀系数的K分组正则表达式分组系统,其特征在于,模块1中该冲突矩阵Mij表示ri和rj之间冲突状态的规模,Mij=Sij-Si-Sj,其中ri和rj分别为正则表达式集合R中的任意两条正则表达式,其各自的DFA状态数目分别记为Si,Sj,合并生成的DFA状态数量记为Sij
7.如权利要求6所述的基于膨胀系数的K分组正则表达式分组系统,其特征在于,模块3中该膨胀系数DR表示DFA膨胀的相对量,其计算过程为:
Figure FDA0003053851410000031
其中,#(DFA)代表正则表达式的DFA状态数目,#(NFA)表示正则表达式本身的实际长度,#(DFA)-#(NFA)表示DFA的膨胀部分。
8.如权利要求5、6、7中任意一种基于膨胀系数的K分组正则表达式分组系统,其特征在于,采用范围界定法确定K的取值,设K的范围为(lower_bound,upper_bound);其中lower_bound为某个正则表达式集合中,满足表达式首部的最长公共子序列长度为L的表达式组数,upper_bound为冲突矩阵中每一行对应的负数取值的数量最大值。
CN201910134197.0A 2019-02-22 2019-02-22 基于膨胀系数的k分组正则表达式分组方法和系统 Active CN109981398B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910134197.0A CN109981398B (zh) 2019-02-22 2019-02-22 基于膨胀系数的k分组正则表达式分组方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910134197.0A CN109981398B (zh) 2019-02-22 2019-02-22 基于膨胀系数的k分组正则表达式分组方法和系统

Publications (2)

Publication Number Publication Date
CN109981398A CN109981398A (zh) 2019-07-05
CN109981398B true CN109981398B (zh) 2021-08-24

Family

ID=67077300

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910134197.0A Active CN109981398B (zh) 2019-02-22 2019-02-22 基于膨胀系数的k分组正则表达式分组方法和系统

Country Status (1)

Country Link
CN (1) CN109981398B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101645069A (zh) * 2008-08-04 2010-02-10 中国科学院计算机网络信息中心 一种多模式匹配中正则表达式存储压缩方法
US7962434B2 (en) * 2007-02-15 2011-06-14 Wisconsin Alumni Research Foundation Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata
CN102156748A (zh) * 2011-04-22 2011-08-17 湖南大学 基于字母表压缩的扩展有限自动机构造方法
CN103957012A (zh) * 2014-04-18 2014-07-30 华为技术有限公司 一种dfa矩阵的压缩方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US8813221B1 (en) * 2008-09-25 2014-08-19 Sonicwall, Inc. Reassembly-free deep packet inspection on multi-core hardware
CN106713254B (zh) * 2015-11-18 2019-08-06 中国科学院声学研究所 一种匹配正则集的生成及深度包检测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962434B2 (en) * 2007-02-15 2011-06-14 Wisconsin Alumni Research Foundation Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata
CN101645069A (zh) * 2008-08-04 2010-02-10 中国科学院计算机网络信息中心 一种多模式匹配中正则表达式存储压缩方法
CN102156748A (zh) * 2011-04-22 2011-08-17 湖南大学 基于字母表压缩的扩展有限自动机构造方法
CN103957012A (zh) * 2014-04-18 2014-07-30 华为技术有限公司 一种dfa矩阵的压缩方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
深度包检测中一种高效的正则表达式压缩算法;徐乾等;《软件学报》;20091231;全文 *

Also Published As

Publication number Publication date
CN109981398A (zh) 2019-07-05

Similar Documents

Publication Publication Date Title
CN110445653B (zh) 网络状态预测方法、装置、设备及介质
CN109951444B (zh) 一种加密匿名网络流量识别方法
CN110362997B (zh) 一种基于生成对抗网络的恶意url过采样方法
CN109766389B (zh) 一种基于位图索引的区块链轻客户端验证查询方法
CN113422695B (zh) 一种提高物联网拓扑结构鲁棒性能的优化方法
CN111026917B (zh) 一种基于卷积神经网络的数据包分类方法及系统
CN110929218A (zh) 一种差异最小化随机分组方法及系统
CN111343171A (zh) 一种基于支持向量机的混合特征选择的入侵检测方法
CN112615881A (zh) 一种基于区块链的数据流检测系统
CN110191382B (zh) 一种基于路径排序的虚链路优先映射方法
CN112182306A (zh) 一种基于不确定图的社区发现方法
CN109981398B (zh) 基于膨胀系数的k分组正则表达式分组方法和系统
CN114726802A (zh) 一种基于不同数据维度的网络流量识别方法及装置
CN110321377A (zh) 一种多源异构数据真值确定方法及装置
CN106844533B (zh) 一种数据分组聚集方法及装置
CN116132167B (zh) 一种面向物联网的多协议僵尸网络检测方法
CN117556891A (zh) 基于子图范围采样的图神经网络训练方法及系统
CN116647844A (zh) 一种基于堆叠集成算法的车载网络入侵检测方法
CN111464507A (zh) 一种基于网络报警信息的apt检测方法
CN116304252A (zh) 一种基于图结构聚类的通信网络防诈骗方法
CN111917589B (zh) 一种电力通信网络资源备份方法及相关装置
CN115002031A (zh) 基于不平衡数据分布的联邦学习网络流量分类模型训练方法、模型及分类方法
CN112749403B (zh) 一种适用于边缘物联代理装置的边缘数据加密方法
CN113256507A (zh) 一种针对二进制流量数据生成图像的注意力增强方法
CN112016006A (zh) 一种基于Trust-Walker的信任推荐模型

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant