基于dpi签名特征的dfa运行方法及系统的利记博彩app

文档序号:7772647阅读:365来源:国知局
基于dpi签名特征的dfa运行方法及系统的利记博彩app
【专利摘要】本发明提供了一种基于DPI签名特征的DFA运行方法及系统,其中的方法包括:将DPI针对基础应用的DFA的输入正则表达式定义为:DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,DPI签名特征在数据包的负载数据中出现的位置与负载数据的起始位置之间存在相对位置关系;在DFA的运行过程中,将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果DFA首次拒绝输入负载数据,则DFA退出运行;其中,负载数据的输入字节数据在DFA中无下一个有效状态时,则视为DFA首次拒绝输入负载数据。通过本发明能够提高DFA的运行效率,使得DPI对基础应用识别的性能得到显著提高。
【专利说明】基于DPI签名特征的DFA运行方法及系统
【技术领域】
[0001]本发明涉及应用识别【技术领域】,更为具体地,涉及一种基于DPI签名特征的DFA运行方法及系统。
【背景技术】
[0002]随着网络的发展以及网络应用的不断丰富,大量应用建立在HTTP等基础协议之上。大多的网络应用或者在端口号随机产生,或者采用诸如SSL (Secure Sockets Layer安全套接层)的加密方式来隐藏内容,因为传统的包过滤或者状态监测防火墙都无法彻底对其进行识别。
[0003]应用识别过程通常是一个由基础应用到具体应用的识别过程,而DPI (DeepPacket Inspection,深度包检测)是目前各种网络产品中的基础应用识别技术,其通过一定规范的规则语法,将应用的签名特征进行描述,并在数据包负载内容到达DPI功能模块后,将负载数据与规则签名进行匹配,从而达到签名特征(即负载数据)识别的功能。
[0004]在将负载数据与规则签名进行匹配的过程中,通过正则表达式来匹配、检索符合一定模式的数据内容,从而识别签名特征。DFA (Deterministic Finite Automaton,确定有穷自动机)则将正则表达式转换为机器可以阅读的形式,其是一个有限的状态集合和一些状态通向另一个状态的边,其每条边标记有符号,自动机根据输入的符号来决定接受或者拒绝一个输入。
[0005]图1示出了两条正则表达式对应的DFA逻辑状态。
[0006]如图1所示,该DFA逻辑有O?5共五个状态,其中,O状态为起始状态,3和5状态为确定状态,状态之间通过边进行连接,每条边都有标记符号。当输入内容符合某一边的标记时,则当前状态迁移为该边指向的另一端状态。例如在图1中,设当前状态为初始状态(O状态),如果该自动机输入的数据为字母d,则当前状态发生从O到I的迁移。此过程为自动机接受了一个输入。如果继续输入字母M,则当前状态(I状态)无M对应的有效状态,此时自动机返回(运行过程重新回到初始状态),这一过程称作自动机拒绝了一个输入。如果当前状态为最终状态时,则状态信息被记录,用于返回执行结果。
[0007]从图1所示的逻辑状态可以看出,DFA可以完整解释正则表达式的逻辑,因此其被广泛应用于正则表达式引擎中。而由于正则表达式具有完善的描述能力、可读性高和应用灵活的特点,因此在DPI中大量使用了正则表达式的方式描述签名特征。
[0008]假设现需要利用DFA检查主串“Deeagetabcdefghi jklmn”中是否含有正则表达式“/de*f/i”和“/get/i”所描述的签名内容,其中,该两条正则表达式所对应的DFA逻辑状态如图1所示。
[0009]DFA的匹配过程如下:在还没有开始匹配时,当前DFA状态为初始状态,即O状态;在输入字符“D”时,由于输入的字符在当前状态有对应的有效状态,因此当前状态发生从O到I的迁移,DFA接受输入;在输入字符“e”时,同样由于字符“e”在当前状态有对应的有效状态,因此当前状态仍为1,DFA接受输入;当输入字符“a”时,由于当前状态无“a”对应的有效状态,因此DFA重新回到初始状态,由于初始状态对于“a”没有有效的下ー个状态,因此DFA拒绝该输入;在分别输入字符“g”、“e”和“t”吋,由于所输入的字符在当前状态下都能找到与之对应的有效状态,且在输入字符“t”之后,DFA的状态已经迁移到了最終的状态,因此可以确定主串“Deeagetabcdefghi jklmn”中含有正则表达式“/get/i”描述的签名特征,DFA得到一个匹配結果。DFA再重新回到初始状态,等待主串中下ー个字符的输入,匹配逻辑与上述相同,至此不再赘述。
[0010]为了进一步说明上述匹配过程,图2示出了现有的普通正则表达式引擎的匹配流程,如图2所不:
[0011]在匹配过程开始时,首先对输入负载数据的起始位置(即当前主串位置)、当前DFA状态和开始位置进行定义,其中DFA的超始状态一般都为0 ;在进行定义后,读取当前主串位置的字节,然后根据读取的字节判断主串(即负载)是否结束,如果负载结束,则结束整个匹配过程,如果负载没有结束,则字节输入自动机得到新状态(重置当前DFA状态),然后判断当前DFA状态是否为无效状态。
[0012]如果当前DFA状态为无效状态时,则将当前DFA状态重置为0,然后当前主串位置向后移I个位置,并将开始位置赋值为当前主串位置,然后重新读取当前主串位置的字节。
[0013]如果当前DFA状态有效,则判断当前DFA状态是否为确定状态,如果当前DFA状态为不确定状态,则直接将当前主串位置向后移I个位置,然后重新进行读取。
[0014]如果当前DFA状态为确定状态,则判断当前DFA状态所对应的特征是否有正则表达式符号“ ~ ”,命名为Bol,如果有,则判断开始位置是否为0,如果是,则匹配成功,并记录识别结果,然后当前主串位置向后移I个位置;如果开始位置不为0,则将当前DFA状态重置为0,然后当前主串位置向后移I个位置。
[0015]如果当前DFA状态所对应的特征没有正则表达式符号“ ~”,则判断当前DFA状态对应的特征是否有正则表达式“$”,命名为Eol,如果有,则判断当前主串位置是否等于负载的长度,如果是,则匹配成功并记录识别结果,如果当前主串位置不等于负载的长度,则将当前DFA状态重置为0 ;如果当前DFA状态所对应的特征没有正则表达式“$”,则匹配成功并记录识别結果,然后将当前主串位置向后移I个位置。
[0016]通过图2所示的流程可以看出,普通正则表达式引擎的运行逻辑为:如果主串中含有正则表达式所描述的特征,但此特征并不位于主串的起始位置,那么主串在输入若干字符后仍然继续输入后续字符。例如现有主串“Gessageekxxx”,有正则表达式“/'geek/i”,根据普通DFA引擎(即普通正则表达式引擎)的运行流程,主串在输入四个字符后仍然继续输入后续字符,当输入到主串的“ geek”之后发现“geek”并不位于主串的起始位置,继续输入后续数据,直到将主串输入完为止。
[0017]通过上述可知,如果所有签名特征都含有Bol信息,那么原有的(即普通的DFA引擎)的运行逻辑将浪费计算周期。在DPI对数据包的签名识别过程中,由于DPI所查找的签名特征总是出现在数据包的负载的开始位置,而普通DFA引擎并没有将这ー签名特征考虑在内,因此DPI在应用普通DFA进行签名特征识别时,会浪费大量的不必要的计算工作。因此如果利用普通DFA引擎来进行签名特征的识别,普通DFA引擎的运行缺陷将更为明显的凸现,进而影响到DFA的执行效率。
【发明内容】

[0018]鉴于上述问题,本发明的目的是提供一种基于DPI签名特征的DFA运行方法及系统,利用DPI的签名特征对DFA的运行方式进行改进,以提高DFA的运行效率和DPI技术的整体性能。
[0019]根据本发明的一个方面,提供一种基于DPI签名特征的DFA运行方法,包括:
[0020]将DPI针对基于签名特征识别应用的DFA的输入正则表达式定义为:DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,DPI签名特征在数据包的负载数据中出现的位置与负载数据的起始位置之间存在相对位置关系;
[0021]在DFA的运行过程中,将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果DFA首次拒绝输入负载数据,则DFA退出运行;其中,负载数据的输入字节数据在DFA中无下一个有效状态时,则视为DFA首次拒绝输入负载数据。
[0022]其中,在将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配的过程中,如果DFA接受输入负载数据,则匹配成功,并记录匹配结果,然后负载数据的输入字节数据以当前位置为起点向后移一个位置,以对负载数据的后续输入字节数据进行匹配。
[0023]另一方面,本发明提供一种基于DPI签名特征的DFA运行系统,包括:
[0024]DFA定义单元,用于将DPI针对基于签名特征识别应用的DFA的输入正则表达式定义为:DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,DPI签名特征在数据包的负载数据中出现的位置与负载数据的起始位置之间存在相对位置关系;
[0025]匹配处理单元,用于在DFA的运行过程中,将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果DFA首次拒绝输入负载数据,则DFA退出运行;其中,负载数据的输入字节数据在DFA中无下一个有效状态时,则视为DFA首次拒绝输入负载数据。
[0026]利用上述根据本发明的基于DPI签名特征的DFA运行方法及系统,通过利用DPI签名特征总是与数据包负载开始地址有相对位置关系的特点,对DFA运行方式进行改进,改进的DFA运行方式能够提高DFA的运行效率,使得DPI对基础应用识别的性能得到显著的提闻。
[0027]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
【专利附图】

【附图说明】
[0028]通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
[0029]图1为两条正则表达式对应的DFA逻辑状态图;
[0030]图2为现有的普通正则表达式引擎的匹配流程示意图;
[0031]图3为根据本发明实施例的基于DPI签名特征的DFA运行方法流程示意图;
[0032]图4为根据本发明实施例的数据匹配流程示意图;[0033]图5为根据本发明实施例的应用前导特征进行特征匹配的逻辑状态图;
[0034]图6为根据本发明实施例的基于DPI签名特征的DFA运行系统的逻辑结构框图。
[0035]在所有附图中相同的标号指示相似或相应的特征或功能。
【具体实施方式】
[0036]以下将结合附图对本发明的具体实施例进行详细描述。
[0037]针对前述现有的普通DFA引擎在进行签名特征识别时,会浪费大量不必要的计算工作,进而影响DFA的执行效率。本发明通过对DFA的输入正则表达式进行定义,在DFA首次拒绝输入负载数据时,DFA就退出运行并结束匹配,从而在保持DFA识别的基本功能不变的前提下,使整个匹配过程的计算量大幅降低。
[0038]为了说明本发明提供的基于DPI签名特征的DFA运行方法,图3示出了根据本发明实施例的基于DPI签名特征的DFA运行方法流程。
[0039]如图3所示,本发明提供的基于DPI签名特征的DFA运行方法包括:
[0040]S310:将DPI针对基于签名特征识别应用的DFA的输入正则表达式定义为:DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,DPI签名特征在数据包的负载数据中出现的位置与负载数据的起始位置之间存在相对位置关系;
[0041]即DFA的输入正则表达式所描述的签名数据必须含有前导的签名特征,该前导的签名特征即是指DPI签名特征。具体地,由于DPI签名特征总是出现在数据包的负载的开始位置,或者DPI签名特征出现的位置与数据包负载的开始位置存在一定的偏移关系,因此根据DPI签名特征在数据包的负载数据中所出现的位置与负载数据的起始位置之间的相对位置关系,将DPI针对基础应用的DFA的输入正则表达式进行定义,其中,在对DFA的输入正则表达式进行定义的过程中,DFA的输入正则表达式所描述的签名数据必须出现在主串(负载数据)的开始位置,或者签名数据所出现的位置与负载数据的开始位置有一定的偏移关系。
[0042]需要说明的是,该一定偏移关系是指:DPI签名特征在负载数据中的出现位置跟负载数据的起始位置是ー个定值。也就是说,DPI签名特征在负载数据中总是在相对固定的偏移位置出现。
[0043]也就是说,DPI签名特征在数据包的负载数据中所出现的位置与负载数据的起始位置之间存在的相对位置关系为=DPI签名特征在负载数据中的出现位置在负载数据的起始位置;或者,DPI签名特征在负载数据中的出现位置与负载数据的起始位置存在一定的偏移关系。
[0044]S320:在DFA的运行过程中,将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果DFA首次拒绝输入负载数据,则DFA退出运行;其中,负载数据的输入字节数据在DFA中无下ー个有效状态时,则视为DFA首次拒绝输入负载数据。
[0045]具体地,在将负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配的过程中,如果DFA接受输入负载数据,则匹配成功,并记录匹配結果,然后负载数据的输入字节数据以当前位置为起点向后移ー个位置,以对负载数据的后续输入字节数据进行匹配;如果DFA拒绝输入负载数据,且在本次匹配过程中,DFA是首次拒绝输入时,即输入的字节数据在DFA中无下ー个有效状态与之相对应,则退出DFA运行,得到主串无数据被匹配的最终运行结果。
[0046]通过图3所示的流程可以看出,本发明提供的基于DPI签名特征的DFA运行方法,能够大幅降低匹配过程中的计算量,在保持对DFA识别的基本功能不变的前提下,提高DFA的运行效率,使得DPI对基础应用识别的性能得到显著的提高。
[0047]由于DPI的签名特征有一个重要的特性,而此特性主要来源于网络应用通信的原理。即网络应用的通信数据结构可分为指令和数据两个部分。指令内容描述命令类型、连接状态、数据属性等内容,有特定的格式或模式。数据内容则为单纯的应用数据,一般不具有特征。所以指令信息总是位于数据包的起始位置,如此才可以对数据进行描述,例如数据内容有多长、数据内容编码格式等。如果应用数据先于指令信息出现,则数据无法被应用程序解析
[0048]具体地,在一个HTTP数据提交命令post的数据包的数据中。其前半部分为HTTP应用的请求头(即指令信息),有固定的格式,且每个字段以换行结束;其后半部分为HTTP数据,无固定格式,不具有特征。可以看出,指令信息总是先出现在数据包。其中的POST命令、以及其后的HTTP/1.1版本信息都是HTTP应用的主要特征。
[0049]可以说,在网络应用的通信数据中,每段数据都必然有特定格式的应用关键字(指令)对其进行描述,而这些关键字或关键字格式是具有唯一标识性的特征的,可被视作DPI的签名特征。最重要的是这些关键字或关键字格式总是最先出现在数据流中。
[0050]综上所述,在DPI对数据包的签名识别过程中,DPI查找的签名特征总是出现在数据包首部,这种特性明显不同于普通的数据检索(如在一段文字中查找某一关键字)。因此利用DPI签名特征这一重要特性,可以大大提高DFA的执行效率。
[0051]也就是说,DPI的签名特征在数据包的负载数据中所出现的位置与负载数据的起始位置之间总是存在相对位置关系,而根据DPI的签名特征这一重要特性,将DPI针对基础应用的DFA的输入正则表达式进行定义,并对DFA的运行原理进行优化,能够达到提高DFA执行效率的目的。
[0052]根据DFA的原理,DFA中的模式串(即正则表达式)的属性都记录在最终状态里,而正则表达式符号“ ~ ”和“$”都是作为特征的标记被记录在最终状态里,分别命名为Bol(Begin of line)和Eol (End of line)。在匹配的过程中,根据最终状态中的Bol和Eol结合主串中所要匹配的字符的起始位置,判断正则表达式中所要匹配的字符是否位于输入数据(即负载数据)的起始位置,从而确定负载数据是否被匹配。
[0053]如果当所有的DFA描述的正则表达式都含有Bol位置信息时,只要所输入的主串(负载数据)中的字符第一次被DFA拒绝输入,即可知道主串中的数据不能被匹配。
[0054]为了更为详细的说明本发明提供的基于DPI签名特征的DFA运行方法,图4示出了根据本发明实施例的数据匹配流程。如图4所示:
[0055]初始当前主串位置(负载数据的位置)和当前DFA状态,其中,当前DFA状态为初始状态(即当前DFA状态为O);读取当前主串位置的数据,然后判断负载是否结束,如果负载结束,则结束整个匹配过程;如果负载没有结束,则DFA得到新状态;然后对当前DFA状态进行有效性判断,如果当前DFA状态为无效状态,则结束整个匹配过程;如果当前DFA状态有效,则判断当前DFA状态是否为确定状态,如果是确定状态,则匹配成功,并记录识别结果,然后将当前主串位置向后移I个位置,然后再对当前主串位置的数据进行读取;如果当前DFA状态不是确定状态,则直接将当前主串位置向后移I个位置。
[0056]作为本发明的ー个示例,现需要将主串“Gessageekxxx”与模式串厂get/i和厂geek/i进行匹配,图5示出了根据本发明实施例的应用前导特征进行特征匹配的逻辑状态,如图5所示,
[0057]输入数据“G”,此时DFA的逻辑状态中有与之相对应的下一有效状态,因此DFA接受输入,并将当前的DFA状态迁移到I状态;在DFA的状态迁移到I状态后,输入数据“e”,同样由于DFA的逻辑状态中有与“e””相对应的下一有效状态,因此DFA接受输入,并将当前的DFA状态由I状态迁移到2状态;在DFA的状态迁移到2状态后,输入数据“S”,此时由于DFA的逻辑状态中没有与“ s”相对应的下一有效状态,因此,DFA拒绝输入,匹配过程结束,匹配结果为:主串中没有数据被模式串匹配。
[0058]通过图4的数据匹配流程和图5的逻辑状态可以看出,本发明的DFA运行方法使得匹配过程得到简化,匹配过程中去掉了规则中对签名位置信息的判断处理,且主串输入的数据減少,DFA状态迁移的个数相应减少,即匹配过程计算量大幅降低。在保持了对DFA识别的基本功能不变的前提下,发挥了 DPI签名特征的位置特点,使得DFA能够以少量的计算即完成识别功能。
[0059]为了使本发明的有益效果更为直观的显现,表1以对比的方式示出了应用普通DFA进行签名特征识别的识别结果和利用本发明提供的DFA进行签名特征识别的识别结果。其中,使用Linux+c语言进行算法性能测试:输入数据为英文书籍,毎次输入(模拟每数据包)1500字节长度数据。使用26种基础应用签名特征的正则表达式作为DFA的模式串,可得到如表1所示的对比结果:
[0060]
【权利要求】
1.一种基于DPI签名特征的DFA运行方法,包括: 将DPI针对基于签名特征识别应用的DFA的输入正则表达式定义为:所述DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,所述DPI签名特征在数据包的负载数据中出现的位置与所述负载数据的起始位置之间存在相对位置关系; 在所述DFA的运行过程中,将所述负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果所述DFA首次拒绝输入所述负载数据,则所述DFA退出运行;其中, 所述负载数据的输入字节数据在所述DFA中无下ー个有效状态时,则视为所述DFA首次拒绝输入所述负载数据。
2.如权利要求1所述的基于DPI签名特征的DFA运行方法,其中,所述相对位置关系为: 所述DPI签名特征在所述负载数据中的出现位置在所述负载数据的起始位置;或者, 所述DPI签名特征在所述负载数据中的出现位置与所述负载数据的起始位置存在一定的偏移关系。
3.如权利要求1所述的基于DPI签名特征的DFA运行方法,其中, 在将所述负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配的过程中,如果所述DFA接受输入所述负载数据,则匹配成功,并记录匹配結果,然后所述负载数据的输入字节数据以当前位置为起点向后移ー个位置,以对所述负载数据的后续输入字节数据进行匹配。
4.一种基于DPI签名特征的DFA运行系统,包括: DFA定义单元,用于将DPI针对基于签名特征识别应用的DFA的输入正则表达式定义为:所述DFA的输入正则表达式所描述的签名数据含有DPI签名特征;其中,所述DPI签名特征在数据包的负载数据中出现的位置与所述负载数据的起始位置之间存在相对位置关系; 匹配处理单元,用于在所述DFA的运行过程中,将所述负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配,其中,如果所述DFA首次拒绝输入所述负载数据,则所述DFA退出运行;其中,所述负载数据的输入字节数据在所述DFA中无下ー个有效状态吋,则视为所述DFA首次拒绝输入所述负载数据。
5.如权利要求4所述的基于DPI签名特征的DFA运行系统,其中,所述匹配处理单元进ー步包括: 结果记录单元,用于在将所述负载数据与所定义的DFA的输入正则表达式所描述的签名数据进行匹配的过程中,如果所述DFA接受输入所述负载数据,则匹配成功,并记录匹配结果,然后所述负载数据的输入字节数据以当前位置为起点向后移ー个位置,以对所述负载数据的后续输入字节数据进行匹配。
【文档编号】H04L9/32GK103560878SQ201310459731
【公开日】2014年2月5日 申请日期:2013年9月30日 优先权日:2013年9月30日
【发明者】郝振华 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1