一种基于分类计数器的确定有限状态机构造方法_2

文档序号:9432977阅读:来源:国知局
配结果的情况下采用最左最短的匹配方式,对具有某些特征的正则式进行改写,从而达到减少DFA状态点数目的目的。Rewrite技术有两条改写规则:1.将具有~A+.{j}特征的正则式改写为~A.{j},从而使得状态点的数目降低到K+j ;2.主要针对.*AB.{j}或者.*AB[A-Z] {j}形式的正则式,实际上就是遵从最左最短的方式进行匹配,这样生成的DFA状态点数目为K+j。对于rewrite技术无法改写的形如.*AB.{j}⑶和~ΑΒΓ\η]*⑶.{j}EF的正则式,其具有指数级的状态点数目,将其构造为半确定有限状态机,它介于NFA和DFA之间,在NFA扫描处理时计算并存储实际需要的一些DFA状态点,状态数目的复杂度为O (η),从而将对应的正则表达式的构建复杂度从指数级降低到了线性级。
[0031]106、得到该正则式的DFA后,循环遍历所有DFA的状态节点,将其中含有相同输出的、非内驱起始状态和内部终止状态的状态合并成一个基类状态。该基类状态的转移为这些状态的并集,将所有相同的转移合并成一个基类转移,构造相应的0DFA。
[0032]对应于上述方法实施例,如图2,为本发明实施流程中线性级构造复杂度正则式的DFA生成方法。
[0033]201、以带长度限制的部分为界将原正则式拆分为两个子表达式(不包含带长度的部分)、并构造对应的DFA。在这里称前一个子表达式的终止状态为内部起始状态(internal start_state),后一个子表达式的起始状态为内部终止状态(internal end_state)ο
[0034]202、添加一个称为计数器的变量counter。初始化为0,记录带长度限制的字符连续出现的次数。
[0035]203、合并201中两个子表达式对应的DFA,建立内部起始状态到内部终止状态的状态转移,转移条件为counter = j。并对合并后的DFA状态重新编号。
[0036]如图3为~ΑΒΓ\η] {j}⑶对应的带计数器的DFA,其中状态2与状态3分别为内部起始状态和内部终止状态。
[0037]对应于上述方法实施例,如图4,为本发明实施流程中乘法级构造复杂度正则式的DFA生成方法。
[0038]401、将原正则式进行如下改写:将具体的长度限制的值改为表示重复次数的元字符“*”,然后构造对应的DFA’。
[0039]402、申请一个计数变量counter并初始化为j,用来表示j与带长度限制的字符连续出现的次数的差。
[0040]403、为每个计数状态添加一个常量参数num,表示从内部起始状态到当前状态所需要的最少状态转移次数,即从内部起始状态开始连续匹配成功的字符数。
[0041]如图5,正则式?Β['\η] {O, j}CD需要改写为'AB['\n]*CD0特别的,针对形如~ΑΒΓ\η] {O, j}CD无分支的正则表达式,计数状态的参数num的值可由状态编号计算得到,假设内部起始状态编号为n,当前状态编号为m,则参数num = m_n。
[0042]对应于上述方法实施例,如图6,以正则式~Β+Γ\η] {3}为例,阐述平方级正则表达式的构造方法。首先将正则改写为~ΒΓ\η] {3}D,如图7 ;之后引入一个计数器Counter,用以记录历史路径,即记录从状态点I开始到达状态4终止的连续的B的个数。状态4的转移由当前节点状态及计数器共同决定。状态点4的转移信息如下所示,计数器的取值为0-3,相应的状态4有4种状态转移信息。
[0043]1.Counter = 0,move (4, D) = 5
[0044]2.Counter = 1,move (4, D) = 5,
[0045]move (4, not\n&D) = 4,
[0046]Counter = Counter-1
[0047]3.Counter = 2, move (4, D) = 5
[0048]move (4, not\n&D) = 4,
[0049]Counter = Counter-1
[0050]4.Counter = 3, move (4, D) = 5
[0051]move (4, B) = 4
[0052]move(4, not B&D&\n) = 4, Counter = Counter-1
[0053]对应于上述方法实施例,以正则表达式{abc, abd, e.*f}为例阐述ODFA的构造方法。图8为该正则表达式生成的DFA,遍历其所有状态节点,将其中含有相同输出的、非内部起始状态和内部终止状态的状态合并成一个基类状态,形成最终的ODFA(图9)。
[0054]以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
【主权项】
1.一种基于分类计数器的确定有限状态机构造方法,其特征在于,包括以下步骤: 101、根据数据流中不同服务的数据特征编写基于规则匹配的网络入侵检测系统的正则表达式,并对正则表达式集合中的每一个正则表达式按照构建有限状态机DFA的复杂度进行分类,具体分为线性级复杂度类、乘法级复杂度类、平方级复杂度类和指数级复杂度类; 102、然后对步骤101中的按照构建线性级复杂度类、乘法级复杂度类、平方级复杂度类和指数级复杂度类对应的正则表达式构造带有计数器的有限状态机DFA,其中被省略的状态和转移由计数器的计数取代; 103、最后遍历有限状态机DFA中所有的状态节点,合并含有相同输出激励的状态,压缩DFA状态数目和转移数目,生成最终的有效状态机。2.根据权利要求1所述的一种基于分类计数器的确定有限状态机构造方法,其特征在于,步骤102中对于线性级构造复杂度对应的正则表达式,构造带有计数器的有限状态机DFA的步骤为:遍历表达式所有字符,生成状态转移图,其中状态转移图的边即为表达式中的一个输入激励,构造出的状态转移图即为普通的DFA。3.根据权利要求1所述的一种基于分类计数器的确定有限状态机构造方法,其特征在于,当步骤102中为乘法级或者平方级构造复杂度对应的正则表达式时,构造带有计数器的有限状态机DFA的步骤为:将正则表达式中具体的长度限制的值改写为表示重复次数的元字符“*”,并构造对应的DFA’确定的有限状态机;找到DFA’中的内部起始状态、计数状态和内部终止状态,并申请一个计数变量Counter,初始化为长度M的值;为每个计数状态添加一个常量参数num,表示从内部起始状态到当前状态所需要的最少状态转移的次数,即从内部起始状态开始连续匹配成功的字符数,在匹配过程中根据计数变量Counter和常量参数num来判断匹配是否成功。4.根据权利要求1所述的一种基于分类计数器的确定有限状态机构造方法,其特征在于,当步骤102中为指数级构建复杂度的正则表达式时,首先改写该正则表达式;接着对于无法改写的正则表达式,其具有指数级的状态点数目,将其构建为半确定有限状态机,半确定有限状态机介于有限状态机DFA和非确定的有限状态机NFA之间,在非确定的有限状态机NFA扫描处理时计算并存储实际需要的一些DFA状态节点,状态数目的复杂度为ο (η),从而将对应的正则表达式的构建复杂度从指数级降低到线性级。
【专利摘要】本发明请求保护一种基于分类计数器的确定有限状态机构造方法,属于互联网入侵检测领域。包括以下步骤:首先对正则表达式集合(规则集)中的每一个正则表达式按照构建DFA的复杂度进行分类,分为线性级复杂度类、乘法级复杂度类、平方级复杂度类和指数级复杂度类;然后为每一类复杂度的正则表达式生成特定的带计数器的DFA;最后合并DFA中含有相同输出激励的、非内部起始状态和内部终止状态的状态,生成最终的ODFA(覆盖的确定有限状态机,可以加快入侵检测系统对接收报文的检测速度,提高准确率,降低误报率,减少系统对内存资源的消耗。此构造方法具有很大的实际应用价值。
【IPC分类】H04L29/06, G06F17/30, G06F21/55
【公开号】CN105184157
【申请号】CN201510394174
【发明人】唐红, 曾诚, 徐川, 雷特
【申请人】重庆邮电大学
【公开日】2015年12月23日
【申请日】2015年7月7日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1