CN101060396A - 一种事件的检测方法及装置 - Google Patents
一种事件的检测方法及装置 Download PDFInfo
- Publication number
- CN101060396A CN101060396A CNA2007100796302A CN200710079630A CN101060396A CN 101060396 A CN101060396 A CN 101060396A CN A2007100796302 A CNA2007100796302 A CN A2007100796302A CN 200710079630 A CN200710079630 A CN 200710079630A CN 101060396 A CN101060396 A CN 101060396A
- Authority
- CN
- China
- Prior art keywords
- project
- predicate
- symbol
- item sets
- item
- 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.)
- Granted
Links
Images
Landscapes
- Machine Translation (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种事件的检测方法和装置,所述方法包括:使用带谓词的上下文无关文法,预置针对事件的检测规则;解析所述检测规则,生成一个下推自动机的分析表,所述分析表支持并行分析;接收待检测事件;通过控制器,针对所述待检测事件,利用所述分析表进行分析,得到检测结果。本发明尤其适用于网络攻击中事件的检测。本发明采用所述带谓词的上下文无关文法从事件的角度对攻击进行检测,将协议的分析和检测过程、以及多个攻击检测规则紧密结合在一起,减少多余运算;同时本发明采用优化的并行下推自动机,能够高效地对所述带谓词的上下文无关文法进行分析。从而,在具备分层处理能力、状态描述能力的同时还具有比较高的效率。
Description
技术领域
本发明涉及针对数据包在事件层面的检测技术领域,尤其是涉及一种针对事件的检测方法和装置,特别适用于网络攻击检测领域。
背景技术
入侵技术的发展给检测造成了很大的困难,传统的基于字符串匹配的网络入侵检测系统,如Snort(参见文献1:Snort:Lightweight IntrusionDetection for Networks,M Roesch-LISA,1999),只能根据截取到的单个网络数据包中是否具有一定的字符特征,或是靠某些特定的端口是否打开来判断攻击,而不能把攻击作为一个过程来真实地加以考查,因而导致漏报率和误报率均比较高。
根据攻击可以被检测出来的方法,Sandeep Kumar把攻击分为“存在”、“顺序”和“偏序”等类型(参见文献2:S.Kumar and E.H.Spafford.APattern Matching Model for Misuse Intrusion Detection.In Proc.ofthe 17th National Computer Security Conference,1994),“存在”型是指一旦发现某一事实,即可认定为攻击发生;“顺序”型是指一系列的事件只有按照固定的顺序发生,才能确认为攻击,这种类型的攻击检测要求能够保存变量,用于以后的判断;“偏序”型要比“顺序”来得宽一些,它并不要求一系列的事件按照固定的顺序发生才能确认为攻击,典型的例子是,事件C发生之前,事件A和事件B发生了,至于事件A和事件B谁先谁后,是无所谓的,即满足偏序关系。
这对于入侵检测、防御系统的设计者提出了方法论上的要求,即所使用的检测模型,必须能够充分、简洁地表达出各种具有“存在”,“顺序”,“偏序”特征的攻击,并在此基础上,高效地识别出攻击。
为了实现这个目标,人们一开始试图利用变量来保存状态,并根据这个思路设计了一些过程性语言进行状态检测,比如NFR的N-Code语言(参见文献3:W.Lee,C.Park and S.Stolfo,Automated Intrusion Detectionusing NFR:Methods and Experiences,USENIX Intrusion DetectionWorkshop,1999)、SecureNet Pro的SNP-L语言,V.Paxson开发的开源软件Bro语言(参见文献4:V.Paxson,Bro:A System for DetectingNetwork Intruders in Real-Time,USENIX Security Symposium,1998),在这些系统中,攻击规则使用过程性的语句来书写,并使用变量来记录状态,这就导致规则制定者在开发攻击检测规则时,必须深入了解语言本身的执行机制。这对于一个小的系统并不是什么问题,但是如果开发的是一个大型的攻击检测系统,需要十几个、几十个甚至上百人来开发协议级检测模块以及攻击规则时,要求每个人对检测语言本身内部的执行机制都有深入的理解是非常困难的,这一障碍使得这些系统的可扩展性和可维护性很差。
为了解决上述问题,人们又尝试使用描述性语言进行基于状态的攻击检测:STAT的STATL状态变迁语言(参见文献5:S.T.Eckmann,G.Vigna,and R.A.Kemmerer.STATL:An Attack Language for State-based IntrusionDetection.In Proc.of ACM Workshop on Intrusion Detection,Athens,Greece,Nov 2000),Lambda(参见文献6:F.Cuppens and R.Ortalo.LAMBDA:A Language to Model a Database for Detection of Attacks.In Proc.ofRAID’00,LNCS vol.1907,Springer,2000),AdeLe(参见文献7:C.Micheland L.M′e.ADeLe:an Attack Description Language for KnowledgebasedIntrusion Detection.In Proc.of the 16th International Conferenceon Information Security,2001),S.Kumar的IDIOT(参见文献2)等,但这些语言的的开发都需要明示地定义推理过程中的“状态”和“变迁”,这意味着规则开发人员需要自己手工地定义用于检测的自动机,这个难度对于普通的开发者来说太大了,因此这些语言都不是一些真正的描述语言。
与上述准描述语言不同,Pouzol开发了Sutekh语言(参见文献8:Jean-Philippe Pouzol,Mireille Ducassé:From Declarative Signaturesto Misuse IDS,RAID2001),R.Sekar开发了REE语言(参见文献9:A High-Performance Network Intrusion Detection System,R Sekar,Y Guang,S Verma,T Shanbhag-ACM Conference on Computer and CommunicationsSecurity,1999),这些语言是真正的描述语言,他们在将状态描述规则转换成能够高效运行的可执行代码方面做了有益的探索,但是这两种语言都是基于正则文法的,因此表现能力有限,另外,由于正则文法的检测机制是有限自动机,因此对于协议分析所要求的分层处理能力的支持非常弱。
发明内容
为了解决上述问题,本发明的目的在于提供一种具备协议分层描述能力的事件检测方法,尤其适用于多事件网络攻击检测,它采用带谓词的上下文无关文法,能够比较精确地定义存在型、顺序型和偏序型的攻击,采用基于并行下推自动机的检测算法,适合对复杂应用的分析,同时还具备比较高的检测效率。
为了实现上述目的,根据本发明的一个实施例,公开了以下技术方案:
一种事件的检测方法,包括:使用带谓词的上下文无关文法,预置针对事件的检测规则;解析所述检测规则,生成一个下推自动机的分析表,所述分析表支持并行分析;接收待检测事件;通过控制器,针对所述待检测事件,利用所述分析表进行分析,得到检测结果。
优选的,上述方法,应用于网络攻击检测领域,所述检测规则包括协议规则和攻击规则。进一步,所述方法还可以包括:通过谓词来定义处于多个不同层次上的协议事件,并基于协议原子事件和/或协议抽象事件来定义攻击规则。
优选的,所述检测分析包括: 缓存前一待检测事件的匹配状态;以及,针对后一待检测事件,结合前一待检测事件的匹配状态,在所述分析表中进行分析,得到后一待检测事件的最新匹配状态。
优选的,通过以下步骤得到所述下推自动机分析表:a)解析所述协议规则和攻击规则,得到语法树;b)采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;c)将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
优选的,通过以下步骤完成协议规则和攻击规则的预置:基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp。
优选的,也可以通过以下步骤完成协议规则和攻击规则的预置:基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;将协议非终结符号vnp添加到文法的终结符号集VN中;所述协议非终结符号vnp由协议终结符vtp结合谓词得到;使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp或协议非终结符号vnp。
优选的,所述带谓词的LR(0)生成算法可以包括:步骤a、使用带谓词的项目集的闭包算法生成初始项目集;步骤b、针对初始项目集,使用带谓词的相邻项目集的生成算法生成相邻项目集;步骤c、针对相邻项目集,重复执行所述带谓词的项目集的闭包算法和相邻项目集的生成算法,直到项目集不再增加为止,从而得到项目集族。
根据本发明的一个实施例,还公开了一种事件的检测装置,包括:存储模块,用于存储针对事件的检测规则,所述规则使用带谓词的上下文无关文法预置得到;生成模块,用于解析所述检测规则,生成一适用下推自动机的分析表,所述分析表支持并行分析的方式;接口单元,用于接收待检测事件和输出检测结果;分析模块,用于通过控制器,针对所述待检测事件,在所述分析表中进行匹配下推,得到检测结果。
优选的,所述检测装置应用于网络攻击检测领域,所述检测规则包括协议规则和攻击规则;所述生成模块包括:解析器,用于解析所述协议规则和攻击规则,得到语法树;第一转换器,用于采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;第二转换器,用于将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
优选的,项目集I的相邻项目集的生成算法包括:a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(I),则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(I),则以项目A:λB(p1)·β为核心生成新的项目集;e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(I),则以项目A:λB·β为核心生成新的项目集。
优选的,当项目集I包括多个根项目集,并且根项目集Ij中存在项目集I的非同源项目时,所述根项目集Ij的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(Ij),则进一步,如果项目A:λ·Bβ和Ij同源而项目C:δ·Bγ和Ij不同源,或者项目A:λ·Bβ和项目集I中的项目B:σ·不同源而项目C:δ·Bγ和项目集I中的项目B:σ·同源,则分别以项目A:λB·β和项目C:δB·γ为核心生成两个新的项目集;否则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(Ij),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(Ij),则以项目A:λB·β为核心生成新的项目集。
优选的,所述控制器的运算逻辑如下:
a)如果输入符号为终结符,从动作表ACTION取出分析表项,如果输入符号为非终结符,则从跳转表GOTO中取出分析表项;
b)如果分析表项含有移进-规约冲突SR或者规约-规约冲突RR,则需要对状态栈进行复制,使得对于每个状态栈只有一个唯一的动作,然后进入到步骤c);
c)如果分析表项为规约动作rj,则用产生式j进行规约,并将状态栈和符号栈的指针减去第j个产生式右部事件个数m,然后将产生式j的右部非终结符作为输入符号来处理,如果存在被合并的分析线索,则发生分裂,然后回到步骤a);否则,执行步骤d);
d)对于输入符号a,
如果除了符号a的分析表项为移进动作S0外,至少存在一个a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有一个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把符号a以及满足谓词的符号a(pi)作为输入符号,进入到步骤e);
如果符号a的分析表项为空,并且至少有两个以上的符号a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有两个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把那些满足谓词的符号a(pi)作为输入符号,进入到步骤e);
e)否则如果分析表项为移进动作Sj,则把输入符号移进符号栈,状态j移入到状态栈,如果有栈顶状态相同的分析线索,则发生合并;进一步,如果分析表项ACTION[j]=ri,即状态j为可归态,则使用产生式i进行规约,如果存在被合并的分析线索,则发生分裂,然后回到步骤a),否则处理结束;
f)否则如果动作表项为成功动作Succ,则文法分析成功,处理结束;
g)否则如果分析表项为空,则转向出错处理,处理结束。
本发明还提供了一种计算机程序产品,包括计算机可读介质,其特征在于,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行前述任一检测方案或组合。
与现有技术相比,本发明具有如下有益效果:
1.本发明提供了一种新的事件检测方法,尤其适用于网络攻击中事件的检测。本发明用事件的概念代替了具体的协议命令,从事件的角度对攻击进行检测,这样攻击检测系统的开发分为独立的三个部分,分别由事件分析引擎开发小组、协议分析开发小组和攻击分析小组完成,每个小组都可以在其领域内对系统进行不断地扩充而又不会影响其他小组,提高了系统的可扩展性。
2、本专利采用带谓词的上下文无关文法描述攻击,能够对复杂应用的协议层次关系进行描述;能够描述“存在”、“顺序”和“偏序”的攻击,增强了对于多事件网络攻击的描述能力;本发明能够定义复杂的表达式,可以描述任意复杂度的单包攻击和多包攻击的约束条件。
3.可实现对攻击的高效检测。采用所述带谓词的上下文无关文法,文法分析系统保证协议的分析和检测过程、以及多个攻击检测规则都是紧密地结合在一起的,这使得系统没有多余的运算;同时本发明采用优化的并行下推自动机,能够高效地对所述带谓词的上下文无关文法进行分析。从而,在具备分层处理能力、状态描述能力的同时还具有比较高的效率。
4.实时性好。本发明使用并行下推自动机对所述带谓词的上下文无关文法进行识别,避免了通常的LR(k)算法中会产生的的延迟问题,这使得该算法能够应用到对实时性要求比较高的入侵防御系统中去。
附图说明
图1是本发明事件检测方法实施例1的步骤流程图;
图2是本发明一个实施例的项目集族的构成图;
图3是本发明一个实施例的并行下推自动机的结构图;
图4为本发明一个实施例的控制器逻辑步骤图;
图5为本发明一个实施例的推导树示意图;
图6是本发明另一实施例的项目集族的构成图;
图7是采用改进算法得到的项目集族的构成图;
图8是本发明事件检测装置实施例的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。
本发明原则上可以适用于任何需要快速定制的事件过滤系统,比如定制认证代理程序,尤其适用于网络攻击的检测。下面都以针对网络攻击的检测为例进行说明。
为了解决前述攻击检测方法的可扩展性和可维护性差的问题,本发明提出了带谓词的上下文无关文法,使用该文法可以使得系统能够以事件作为基本的处理单元进行操作,而不再使用具体的协议命令,这样本发明就能够扩展到各种协议而无需修改本发明系统本身。因此,本发明将攻击检测和协议分析的全部(或者部分)以文法的形式组织起来,构成一个文法分析系统,该文法分析系统的分析过程就是一个协议分析和攻击检测的过程。
但是如此构造的文法系统往往涵盖了多层的协议事件和数以百计的攻击规则,常常包含了一些其内部状态不能被有限穷举的情况,并因此是非正则的,因此在本发明中使用上下文无关文法来进行基于协议的攻击检测。
另一方面,为了定义攻击的非状态特性,本发明在上下文无关文法中引入了谓词。使用谓词,可以定义单事件网络攻击的特征、多事件网络攻击的多个符号之间的关系、以及协议的不同事件层次之间的关系,使得本发明具有了完备的描述能力。
谓词的引入带来了移进-移进冲突SS,为了解决移进-移进冲突SS问题,上述带谓词的上下文无关文法生成包含移进-移进冲突SS、移进-规约冲突SR、规约-规约冲突RR的分析表,在运行期冲突发生后,各种冲突被动态地解消掉。
上述运行期消解算法在特定的情况下将会产生“合并延迟”问题,为了解决该问题,本发明中引入了改进的PLR(0)项目集簇的生成算法,从而解决了上述问题。其中,所述PLR(0)是指带谓词的LR(0)算法,下文都以PLR(0)进行介绍。
参照图1,是本发明事件检测方法实施例1的步骤流程图。
步骤101、使用带谓词的上下文无关文法,预置针对事件的检测规则;
步骤102、解析所述检测规则,生成一个下推自动机的分析表,所述分析表支持并行分析;
步骤103、接收待检测事件;
步骤104、通过控制器,针对所述待检测事件,利用所述分析表进行分析,得到检测结果。
当图1所示的检测方法应用于网络攻击检测领域时,所述检测规则包括协议规则和攻击规则。所述预置过程主要为:通过谓词来定义处于多个不同层次上的协议事件,并基于协议原子事件或协议抽象事件来定义攻击规则;即攻击被定义为满足一定谓词的一个协议符号、或者多个协议符号的连续出现。
本发明采用带谓词的上下文无关文法来预置检测规则,从而很好的将协议分析和攻击检测统一起来。本发明所述带谓词的上下文无关文法G是一个五元组,格式如下:
G={VN,VT,S,R,P}
其中:VT为终结符号集,包含终结符号vt,VN为非终结符号集,包含非终结符号vn,VT和VN通称为符号集V,符号集V中的项称为符号v,S是目标文法符号,S∈VN,R是文法的产生式集,P是文法的谓词集,一般的,产生式的格式为:
vn:v1(p1)…vk(pk)
产生式的左部为一个非终结符vn∈VN,产生式的右边包含0个或者多个带谓词的终结符或者非终结符v1,…,vk∈V,谓词p1,…,pk∈P,谓词是产生式右部符号所应满足的限制条件,由逻辑运算符、算术运算符以及函数调用的组合构成,产生式的语义是:产生式的左部符号是由带谓词的右部符号归结而来。
所述谓词一般是一个由常量、变量、事件变量构成的复合表达式,比如(data_len>=512),表达式的返回值只能是“真”或者“假”。当表达式的逻辑比较复杂时,也可以将表达式定义为函数,然后再使用函数调用形成谓词。
在本专利中,事件是对各种协议命令的抽象,和文法中的“终结符”和“非终结符”相对应,“事件”也分为“原子事件”和“抽象事件”两种,“原子事件”对应一个具体的“事实”,比如在TCP级的一个数据报。“抽象事件”是由一个或者若干个“原子事件”组成的,它表示一个逻辑上独立的若干个原子事件的整体。
在协议分析、攻击检测这个领域中,我们称一个命令为事件,而在文法分析这个领域,我们称其为符号。一般的,对应关系如下:“事件”=“符号”、“抽象事件”=“非终结符”、“原子事件”=“终结符”。
一般而言,针对事件的检测规则的预置过程可以采用以下两种预置步骤:
第一种方案,通过以下步骤完成协议规则和攻击规则的预置:
基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp。第一种方案一般应用于简单协议中。
第二种方案,通过以下步骤完成协议规则和攻击规则的预置:
基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;将协议非终结符号vnp添加到文法的终结符号集VN中;所述协议非终结符号vnp由协议终结符vtp结合谓词得到;使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp或协议非终结符号vnp。第二种方案一般应用于复杂协议中。
易于得知的是,将上述两种方案组合使用也完全是可行的。
下面以一个具体攻击文法G1为例来说明如何使用所述的带谓词的上下文无关文法来定义基于协议的多事件网络攻击。
文法G1中,终结符号集VT={t},协议终结符t代表一个原始的tcp数据包,非终结符号集合VN={REQ,ACK,ANY,RA,RAS,ATK,ALL},协议非终结符REQ表示满足谓词p1的请求数据包,协议非终结符ACK代表满足谓词p2的应答数据包,协议非终结符RA代表一个请求应答对,协议非终结符RAS代表一个或者多个请求应答对。目标文法符号ALL是文法G1的分析目标,文法G1的产生式集R包括:
REQ:t(p1)
ACK:t(p2)
ANY:
|t| ANY t
ATK:ANY REQ(p3)ACK(p4)
RA:REQ ACK
RAS:RA|RAS
ALL:RAS|ATK
攻击非终结符ATK表示一个攻击,该攻击是由一个协议非终结符ANY、一个满足谓词p3的协议非终结符REQ和满足谓词p4的协议非终结符ACK顺序发生构成的。协议非终结符ANY代表0个或者任意多个协议终结符t,这意味着在找到满足谓词p3的协议非终结符REQ之前,在该会话上可以有任意多的协议终结符t通过。
为了后面描述PLR(0)运行期算法的栈复制过程,除了要检测攻击非终结符ATK之外,还要检测协议非终结符RAS,因此定义文法目标符号ALL由攻击非终结符ATK或者协议非终结符RAS归结而成。
上面的攻击检测文法G1中,存在着空产生式(所谓空产生式是指右部为空的产生式)。对于空产生式ANY:可以引入一个非终结符ANY’来代替可以为空的非终结符ANY,非终结符ANY’除了不能为空之外,它和非终结符ANY的定义是完全相同的:
ANY’:t
|ANY’ t
并且如果存在产生式
A:λ ANY β
则将它替换为
A:λ β
A:λ ANY’β
容易看到,上述变换是完全等价的,这可以使本发明无需在执行期间考虑空事件,简化了执行期的处理逻辑。
一般地,在带谓词的上下文无关文法G中,有可能存在某些右部为目标文法符号S的产生式,在分析过程中如果出现目标文法符号S,为了确定该符号代表已经分析成功,还是作为在某个产生式右部的符号,规定:增加一个拓广目标文法符号S’,并增加一条产生式:
S’:S
从而构成文法的G的拓广文法G’,在本例中增加了一个ALL’事件,并相应地增加了一个新的产生式:
ALL’:ALL
这样经过上述两个变换,就得到了原来上下文无关文法G1的拓广文法G1’,并且给每个产生式按照顺序编号:
REQ:t(P1) (1)
ACK:t(P2) (2)
ANY’:t (3)
ANY’:ANY t (4)
ATK:REQ(P3)ACK(P4) (5)
ATK:ANY’REQ(P3)ACK(P4) (6)
RA:REQ ACK (7)
RAS:RA (8)
RAS:RAS RA (9)
ALL:RAS (10)
ALL:ATK (11)
ALL’:ALL (12)
拓广文法G1’完整地表达了上述多事件网络攻击检测规范,但只有这个文法还不能对网络事件进行检测,还必须根据拓广文法G1’生成它的识别器,即并行下推自动机的分析表,然后才能利用这个分析表进行实际的检测。
对于步骤102,可以通过以下步骤得到所述支持并行分析的下推自动机分析表:
a)解析所述协议规则和攻击规则,得到语法树;
b)采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;
c)将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
需要说明的是,对于上述生成分析表的过程,可以在每次启动本发明系统的时候,采用上述步骤对预置的协议规则和攻击规则进行解析转换得到相应的并行下推自动机分析表,然后利用该表进行匹配分析。当然,对于协议规则和攻击规则比较固定的检测情况而言,也可以将采用上述步骤得到的分析表以文件的形式存储,即当不改变协议规则和攻击规则的时候,利用事先生成的分析表进行匹配分析即可,只有当更新了协议规则和攻击规则之后,才再次解析获得更新后的分析表,以提高效率。
优选的,所述带谓词的LR(0)生成算法可以包括以下步骤:步骤a、使用带谓词的项目集的闭包算法生成初始项目集;步骤b、针对初始项目集,使用带谓词的相邻项目集的生成算法生成相邻项目集;步骤c、针对相邻项目集,重复执行所述带谓词的项目集的闭包算法和相邻项目集的生成算法,直到项目集不再增加为止,从而得到项目集族。
所述并行下推自动机分析表(包括动作表ACTION和跳转表GOTO)是根据所述带谓词的上下文无关文法的项目集族生成的;所述带谓词的上下文无关文法的项目集族是使用PLR(0)生成算法生成的,其中PLR(0)生成算法是在LR(0)生成算法的基础上增加了对谓词部分的处理,该算法包含两个子算法:带谓词的项目集的闭包算法和相邻项目集的生成算法,对初始项目集I0使用闭包算法,然后调用相邻项目集的生成算法生成相邻项目集,然后再对这些相邻项目集重复使用上面的算法,直到项目集不再增加为止,从而得到所有的项目集,即项目集族,最后将生成的项目集族转换成分析表。
Donald E.Knuth发明的LR(k)生成算法是一种构造识别一个上下文无关文法的项目集族的算法(参见文献10:编译原理 吕映芝 张素琴 蒋维杜著.北京:清华大学出版社,1998.1),能够利用LR(k)算法识别的上下文无关文法叫做LR(k)文法,LR(k)文法是上下文无关文法的一个子集,对于大多数计算机编程语言来说,LR(k)文法已经足够了。
但是LR(k)生成算法不适用于构造带谓词的上下文无关文法的下推自动机,这是因为1),协议和攻击组成的文法常常会产生比较大的冲突,以至于必须使用一个比较大的预读窗口k(k≥2)才能进行冲突解消,这导致了过度复杂的算法。2),即使预读窗口k不是很大,只要预读窗口k>0,那么就必须看下一个事件才能对当前的包进行检测,这导致了延迟处理。
为了解决这个问题,本发明使用并行下推自动机作为识别器,这使得系统能够分析任意的带谓词的上下文无关文法,而不会带来延迟。
为了说明所述带谓词的项目集的闭包算法和相邻项目集的生成算法,这里先介绍一下在LR(0)算法中的项目和项目集的概念。
为了表示出上下文无关文法的分析过程中每一个产生式的右部符号已有多大一部分被识别,LR(0)算法使用了项目的概念,项目就是一个带有圆点的产生式,其中的圆点用来指示匹配位置:
项目A:·λβ,表示还没有符号串λβ在栈顶,此时期望λβ对应的符号串;
项目A:λ·β,表示产生式A:λβ的右部子串λ已出现在栈顶,期待从输入串中看到符号串β对应的符号串,如果符号串β为终结符,这样的项目叫做移进项目;
项目A:λβ·,表明产生式A:λβ的右部符号串λβ已全部出现在栈顶,这样的项目叫做规约项目;
因为一个输入字符可能会同时符合多个产生式,一个项目集包含一个或者多个项目,用来表示一个或多个产生式同时在它们的匹配上下文上取得进展的情况,将项目集作为节点,将符号作为变迁,这样就得到了所述带谓词的上下文无关文法的项目集族。
本发明所述带谓词的项目集的闭包算法也是通过构造项目集来实现的,在项目集的构造初期,项目集中只包含一个或者几个核心项目,然后通过闭包函数CLOURSE(I)递归地构造出完整的项目集。
本发明中的闭包函数CLOSURE(I)的算法如下:
a)项目集I的项目均在闭包函数CLOSURE(I)中;
b)若项目A:λ·B(p)β属于闭包函数CLOSURE(I),则每一形如B:·γ的项目也属于闭包函数CLOSURE(I);
c)若项目A:λ·Bβ属于闭包函数CLOSURE(I),则每一形如B:·γ的项目也属于闭包函数CLOSURE(I);
d)重复b)或者c)直到不出现新的项目为止;
若S为带谓词的上下文无关文法G的目标文法符号,增加产生式S’:S,构成文法G的拓广文法G’,首先将项目集S’:·S放入到初始项目集I0中,然后求出初始项目集I0的闭包函数CLOSURE(I0)作为新的I0。
使用闭包函数CLOSURE(I)生成初始项目集I0之后,再使用本发明所述相邻项目集的生成算法用来继续生成相邻项目集,对于任意项目集Ii,求出每个可接受的符号所能导致的相邻项目集,并对这些相邻项目集做闭包运算,该过程一直持续下去,直到不能得到新的项目集为止。
对于项目集I来说,本发明确定它的相邻项目集的具体过程如下:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(I),则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(I),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(I),则以项目A:λB·β为核心生成新的项目集;
使用所述项目集族的生成方法来计算识别上述拓广文法G1’的项目集族(参见图2),在该项目集族中的符号就是前述拓广文法G1’中的符号,每个框图对应一个项目集,相邻项目集用线段连接,线段上标明可接受符号。
如果一个项目集中同时存在两种互相矛盾的动作,则这样的文法叫做带冲突的上下文无关文法,在LR(0)项目集的生成过程中,存在两种冲突:
移进-规约冲突SR,如果一个项目集中同时存在项目A:λ·aβ和项目B:γ·的时候,对于输入符号a,将不能确定是移进符号a还是把符号序列γ规约为符号B;
规约-规约冲突RR:如果一个项目集中同时存在项目A:λ·和项目B:γ·的时候,则对于任何输入符号,都不能确定应该将符号序列λ规约为符号A还是把符号序列γ规约为B;
带谓词的上下文无关文法G除了具有上面这两种冲突,还具有移进-移进冲突SS:
移进-移进冲突SS:如果一个项目集中同时存在项目A:λ·B(p1)β和项目B:δ·B(p2)γ,在运行期,对于输入符号B,如果B(p1)和B(p2)同时满足,则将产生两个输入符号,从而导致移进-移进冲突SS,移进-移进冲突SS是由于谓词的引入而造成的,因此也叫谓词冲突或者分类冲突,移进-移进冲突SS只能在运行期才能产生。
为了解消移进-规约冲突SR和规约-规约冲突RR,LR(k)算法使用了向前看k个事件才能决定如何对当前符号进行处理的技术,其中,k>0,这导致了处理的延迟。
但是在攻击检测这个领域,尤其是攻击防御这个领域,带延迟的算法将使得入侵防御系统判断出攻击发生的时刻攻击已经发生,这对于攻击防御系统来说是不可接受的。
为了解决这个问题,本发明使用了运行期冲突解消的方法,就是在分析表的生成过程中,把符号B(p1)和符号B(p2)看成完全不同的两个符号,生成具有移进-移进冲突SS的分析表,在运行期间的某个状态s,如果输入符号B同时满足p1和p2时,状态栈将发生分裂,保证了不会漏掉可能的匹配。
不仅移进-移进冲突SS是在运行期解消的,在本发明中,移进-规约冲突SR和规约-规约冲突RR也是在运行期得到解消的,这使得本系统能够检测出所有那些可以用上下文无关文法定义的攻击。
然后,利用带谓词的上下文无关文法G的项目集族来构造文法的动作表ACTION和跳转表GOTO,动作表ACTION记录着在每个状态下接收到一个终结符时的动作,而跳转表GOTO中记录着在每个状态下接收到非终结符时的动作,转换过程如下:
假定生成的项目集族C={I0,I1,……,In},令每个项目集Ik的下标k为控制器的一个状态,因此,带谓词的上下文无关文法G的分析表含有状态0,1,…,n。令那个含有项目S’:·S的项目集为I0,动作表ACTION和跳转表GOTO可按如下方法构造:
a)若项目A:λ·a(p)β属于项目集Ik且识别了终结符a(p)后跳转到项目集Ij,则置ACTION[k,a(P)]为移进动作Sj,其含意为把状态j移进状态栈,把符号a(p)移进符号栈;
b)若项目A:λ·属于项目集Ik,则对于任何终结符a和结束事件#置动作表项ACTION[k,a]为规约动作rj,并简记为动作表项ACTION[k]为rj,规则j为拓广文法G’中A:λ的序号。规约动作rj的含义是把当前符号栈的栈顶符号串λ规约为A,并将栈指针从栈顶向下移动符号串λ的长度,再将符号A推入到栈中(相当于用产生式A:λ进行规约);
c)若项目A:λ·A(p)β属于项目集Ik且识别了非结符A(p)后跳转到项目集Ij,则置GOTO[k,A(p)]为移进动作j,表示当前状态为k时,遇到文法符号A(p)时应把符号A(p)移进符号栈,状态j移进状态栈;
d)若项目S’:S·属于Ik,则置动作表项ACTION[k]为成功acc,表示接受;
e)分析表中凡不能用规则a至d填入的均为空白;
和LR(0)生成算法不同,由于本发明在运行期间使用栈复制的方法来解消冲突,因此允许冲突存在,即动作表项可以是{Si,rj}或者{ri,rj}。
根据分析表的生成方法构造前述拓广文法G1’的动作表ACTION和跳转表GOTO(参见表1):
表1 拓广文法G1’的动作表ACTION和跳转表GOTO
状态 | ACTION | GOTO | |||||||||||
t | t(p1) | t(p2) | # | REQ | REQ(p3) | ACK | ACK(p4) | ANY’ | ATK | RA | RAS | ALL | |
0 | S12 | S23 | 20 | 3 | 6 | 2 | 13 | 14 | 1 | ||||
1 | Succ | ||||||||||||
2 | R11 | ||||||||||||
3 | S22 | 4 | |||||||||||
4 | R5 | ||||||||||||
6 | S11 | S23 | 7 | ||||||||||
7 | S22 | 8 | |||||||||||
8 | R6 | ||||||||||||
11 | R4 | ||||||||||||
12 | R3 | ||||||||||||
13 | R8 | ||||||||||||
14 | R10 | R10S23 | R10 | R10 | 20 | 15 | |||||||
15 | R9 | ||||||||||||
20 | S22 | 21 | |||||||||||
21 | R7 | ||||||||||||
22 | R2 | ||||||||||||
23 | R1 |
注:状态0和6中,可以同时接受非终结符t和非终结符t(p1),这意味着在运行期,为了得到所有的匹配,一旦看到非终结符t,并且它满足谓词p1,就必须要复制状态栈,然后将非终结符t和非终结符t(p1)分别放入两个状态栈,以对应不同的产生式。
对于步骤104,根据所产生的分析表,对所述多事件网络攻击进行分析。PLR(0)运行期算法是基于LR(0)运行期算法的,PLR(0)运行期算法包括分析表、一个状态栈和一个符号栈,以及控制器,如图3所示,状态栈用来保留状态信息,符号栈保留语义信息,控制器根据当前输入符号和状态栈的栈顶状态查找分析表应该采取的动作,然后对状态栈和符号栈采取相应的操作。
本发明的PLR(0)算法包括PLR(0)生成期算法以及PLR(0)运行期算法。PLR(0)运行期算法就决定了控制器的逻辑运算步骤。
由于本发明通过谓词来定义处于多个不同层次上的协议事件,并基于协议原子事件或协议抽象事件来定义攻击规则。因此本发明能够进行基于状态的检测,包括:缓存前一待检测事件的匹配状态;以及,针对后一待检测事件,结合前一待检测事件的匹配状态,在所述分析表中进行分析,得到后一待检测事件的最新匹配状态。
本发明中的控制器能够支持的操作包括“复制”、“移进”、“合并”、“归约”、“分裂”、“成功’’和“出错”:
复制(Copy):栈顶状态表明控制器对应多个动作,说明当前状态栈已经不能满足分析的需要,这时需要将状态栈进行复制;
移进(Shift):栈顶状态表明分析器还要接受一个事件才能继续进行分析,而此时又恰好有一个可接受的输入符号,就把该输入符号压入到分析栈中;
合并(Merge):多个分析线索的栈顶状态完全一致,则可以让其中一个线索来代替其他的线索来进行分析工作,合并的意义是尽量减少冗余的计算;
规约(Reduce):如果状态栈中的内容是状态序列w,如有产生式A:w,意味着可以将栈中的状态序列w清除,然后将A作为输入符号;
分裂(Split):当代表线索代表多个分析线索结束分析后,会将得到的符号交回给各个分析线索,从而解除代表关系;
成功(Succ):规约的一种特殊情况,栈中的全部状态序列w归约为拓广目标文法符号S’,此时意味着已分析取得了成功;例如,如果规定(S’:ATK;S’:RAS)那么,分析出一个ATK的时候,将会导致一个“成功”,另外如果一个RAS(这是一个协议非终结符)分析出来的时候,也将得到一个“成功”;
出错(Error):当前的输入符号不能使得文法继续进行下去,则控制器报错;
本发明中使用的控制器使用下述逻辑运算步骤,该过程不断循环直到系统识别出拓广目标文法符号S’为止,该步骤具体如下(参见图4):
a)如果输入符号为终结符,从动作表ACTION取出分析表项,如果输入符号为非终结符,则从跳转表GOTO中取出分析表项;
b)如果分析表项含有移进-规约冲突SR或者规约-规约冲突RR,既在状态s下存在多个动作,则需要对状态栈进行复制,使得对于每个状态栈只有一个唯一的动作,然后进入到步骤c);
c)如果分析表项为规约动作rj,此时不用再向前看一个字符,就用产生式j规约,并将两个栈的指针减去m(m为第j个产生式右部事件个数),然后将产生式j的右部非终结符作为输入符号来处理,如果存在被合并的分析线索,则发生分裂,然后回到步骤a);
d)否则对于输入符号a,如果:
1)如果除了符号a的分析表项为移进动作S0外,至少存在一个a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有一个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把符号a以及满足谓词的符号a(pi)作为输入符号,进入到步骤e);
2)如果符号a的分析表项为空,并且至少有两个以上的符号a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有两个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把成立的多个符号作为输入符号,进入到步骤e);
e)否则如果分析表项为移进动作Sj,则把输入符号移入符号栈,状态j移入到状态栈,如果有栈顶状态相同的分析线索,则发生合并,如果分析表项ACTION[j]=ri,即状态j为可归态,则使用产生式i进行规约,如果存在被合并的分析线索,则发生分裂,然后回到步骤a),否则处理结束;
f)否则如果动作表项为成功动作Succ,则文法分析成功,处理结束;
g)否则如果分析表项为空,则转向出错处理,处理结束。
为了减少PLR(0)运行期算法中复制的代价,在并行分析过程中是只复制状态栈,不复制符号栈,复制产生的状态栈和原状态栈共享符号栈,并采取引用计数来维护事件的释放。
针对前述拓广文法G1’构造的分析表,假设实际输入为t(p1)和t(p2),并且满足REQ(p3)和ACK(p4),控制器的并行匹配过程如下:(参见表2):
表2 拓广文法G1’的并行匹配过程
图5所示的推导树直观地说明所述拓广文法G1’的推导过程,推导树中的符号就是前述拓广文法G1’中的符号,推导树中的每个节点都是由其下一层的一个或者多个子节点规约而来,用带箭头的线段来表示这种规约关系,谓词标注在线段的旁边。
根据图5可以看出:对协议非终结符REQ和协议非终结符ACK的分析只进行了一次,就可以同时满足攻击非终结符ATK的检测和协议非终结符RAS的分析需要,而当攻击非终结符ATK的检测和协议非终结符RAS分析无法在一个栈中同时匹配的情况下(表2步骤3),控制器将状态栈分裂为多个状态栈,从而使得攻击非终结符ATK和协议非终结符RAS分析同时进行,这说明所述的PLR(0)运行期算法,能够针对多事件网络攻击进行基于协议的检测,并在这种检测过程中,保证系统的花销是最小的。
由于采用了并行下推自动机作为带谓词上下文无关文法的分析模型,使得系统不再需要向前看一个符号来解决冲突,这使得在本发明中提出的分析方法即使在入侵防御系统中也能得到应用。
实施例2
与实施例1不同之处在于:对于简单的协议,不再需要定义协议非终结符vnp,而只需定义协议终结符vtp即可,然后定义攻击非终结符vna,最后定义产生式ra,产生式左部为攻击非终结符vna,产生式右部包含带谓词的一个或者多个协议终结符vtp。
实施例3
与实施例1不同之处在于:对于无冲突文法,所述带谓词的上下文无关文法使用PLR(0)生成算法生成不包含移进-移进冲突SS、移进-规约冲突SR和规约-规约冲突RR的分析表,控制器根据当前输入事件和分析栈的栈顶状态查找分析表从而决定应该采取的动作,但由于分析表中不存在移进-移进冲突SS、移进-规约冲突SR和规约-规约冲突RR,状态栈不会被复制,控制器将仅包含“移进”、“归约”、“成功”和“出错”这四种动作。
实施例4
在某些情况下,上述PLR(0)运行期算法可能会导致合并延迟(Merge-delay)问题,下面以一个具体攻击文法G2’为例来说明合并延迟是如何发生的。
文法G2中,终结符号集VT={p,s,e,d},非终结符号集合VN={any,ANY,P,A,D,S}。目标文法符号S是文法G2的分析目标,文法G2的按照顺序编号的增广产生式集R为:
any:p (1)
any:s (2)
any:e (3)
any:d (4)
ANY’:any (5)
ANY’:ANY’any (6)
P:p s e (7)
P:p A (8)
A:s D e (9)
D:d (10)
S:P (11)
S:ANY’A (12)
S’:S (13)
使用所述带谓词的上下文无关文法的项目集族生成算法,计算拓广文法G2’的项目集族(见图6)和分析表(省略),假设实际输入为p、s、d、e,控制器的并行匹配过程如下:(参见表3):
表3 拓广文法G2’的并行匹配过程
步骤 | 输入事件 | 状态栈 | 动作 | ACTION | GOTO |
1 | p | 0 | 移进 | S15 | |
2 | 0 15 | 归约any:p | |||
3 | any | 0 150 | 移进 | 3 | |
4 | 0 150 3 | 规约ANY’:any | |||
5 | ANY’ | 0 150 | 移进 | 4 | |
6 | 0 150 4 | ||||
7 | ss | 0 150 4 | 移进移进 | S16S8 | |
8 | 0 15 160 4 80 4 8 | 规约any:s |
在表3所示的推导过程21中,由于第一个分析线索的状态9为第二个分析线索的代表状态,当第一个分析线索进行了规约消耗了3个状态时,第二个分析线索成为僵尸线索(defunct thread)。
为了进一步讨论这个问题,本发明引入两个概念:
a),在使用PLR(0)生成算法的过程中,使用前述带谓词的项目集的闭包算法和相邻项目集的生成算法生成的两个项目之间如果存在一条生成路径,则称这些项目为同源的;
b),对于如下形式的同源项目项目A:λ·Bβ和项目B:σ·,称项目A:λ·Bβ为项目B:σ·的根项目。如果某个项目集I中包含形如B:σ·的项目,那么所有包含项目A:λ·Bβ或者项目A:λ·B(p)β的项目集R就是项目集I的根项目集。
进一步调查,我们发现合并延迟问题的根源在于在状态15和状态4(这两个状态为状态10的根项目集)中不仅包含着A:s D e·的同源项目,还包含着其他的非同源项目,这些非同源项目的存在使得可规项目集无法在第一时间点上进行合并,并导致了僵尸线索的出现。
为了解决合并延迟问题,如果在项目集生成过程中,某个可规项目集包含两个以上的根项目集,则确定该可规项目集I的根项目集集合∑(I)={I 1,。。。,In},对于每个根项目集Ij,如果Ij中存在一些项目,并且这些项目与可规项目集I为非同源项目,则从Ij出发,沿着原来的推理路径,重新构造Ij的所有子项目集,使用改进的相邻项目集生成算法。
改进的相邻项目集生成算法为:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(Ij),则进一步,如果项目A:λ·Bβ和项目集I中的项目B:σ·同源而项目C:δ·Bγ和项目集I中的项目B:σ·不同源(或者项目A:λ·Bβ和项目集I中的项目B:σ·不同源而项目C:δ·Bγ和项目集I中的项目B:σ·同源),则分别以项目A:λB·β和项目C:δB·γ为核心生成两个新的项目集;否则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(Ij),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(Ij),则以项目A:λB·β为核心生成新的项目集。
使用这种改进算法生成的拓广文法G2’的项目集族(参考图7),实际输入为仍为p、s、d、e,控制器的并行匹配过程如下:(参见表4):
表4 解决了defaunt thread问题的拓广文法G2’的并行匹配过程
步骤 | 输入事件 | 状态栈 | 动作 | ACTION | GOTO |
1 | p | 0 | 移进 | S15 | |
2 | 0 15 | 归约any:p | |||
3 | any | 0 150 | 移进 | 3 | |
4 | 0 150 3 | 规约ANY’:any | |||
5 | ANY’ | 0 150 | 移进 | 4 | |
6 | 0 150 4 | ||||
7 | ss | 0 150 4 | 移进移进 | S16S8 | |
8 | 0 15 160 15 8 |
从上表可以看出,通过修改相邻项目集生成算法,合并延迟问题得到了解决。
参照图8,表示一种事件的检测装置,包括以下模块:
存储模块801,用于存储针对事件的检测规则,所述规则使用带谓词的上下文无关文法预置得到;
生成模块802,用于解析所述检测规则,生成一适用下推自动机的分析表,所述分析表支持并行分析的方式;
接口单元803,用于接收待检测事件和输出检测结果;
分析模块804,用于通过控制器,针对所述待检测事件,在所述分析表中进行匹配下推,得到检测结果。
优选的,当所述检测装置应用于网络攻击检测领域时,所述检测规则包括协议规则和攻击规则;进一步,所述生成模块可以包括:
解析器,用于解析所述协议规则和攻击规则,得到语法树;
第一转换器,用于采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;
第二转换器,用于将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
优选的,所述带谓词的LR(0)生成算法包括:步骤a、使用带谓词的项目集的闭包算法生成初始项目集;步骤b、针对初始项目集,使用带谓词的相邻项目集的生成算法生成相邻项目集;步骤c、针对相邻项目集,重复执行所述带谓词的项目集的闭包算法和相邻项目集的生成算法,直到项目集不再增加为止,从而得到项目集族。
一般的,项目集I的相邻项目集的生成算法可以包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(I),则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(I),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(I),则以项目A:λB·β为核心生成新的项目集。
优选的,当项目集I包括多个根项目集,并且根项目集Ij中存在项目集I的非同源项目时,所述根项目集Ij的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(Ij),则进一步,如果项目A:λ·Bβ和项目集I中的项目B:σ·同源而项目C:δ·Bγ和项目集I中的项目B:σ·不同源(或者项目A:λ·Bβ和项目集I中的项目B:σ·不同源而项目C:δ·Bγ和项目集I中的项目B:σ·同源),则分别以项目A:λB·β和项目C:δB·γ为核心生成两个新的项目集;否则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(Ij),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(Ij),则以项目A:λB·β为核心生成新的项目集。
优选的,所述控制器的运算逻辑如下:
a)如果输入符号为终结符,从动作表ACTION取出分析表项,如果输入符号为非终结符,则从跳转表GOTO中取出分析表项;
b)如果分析表项含有移进-规约冲突SR或者规约-规约冲突RR,则需要对状态栈进行复制,使得对于每个状态栈只有一个唯一的动作,然后进入到步骤c);
c)如果分析表项为规约动作rj,则用产生式j进行规约,并将状态栈和符号栈的指针减去第j个产生式右部事件个数m,然后将产生式j的右部非终结符作为输入符号来处理,如果存在被合并的分析线索,则发生分裂,然后回到步骤a);否则,执行步骤d);
d)对于输入符号a,
如果除了符号a的分析表项为移进动作S0外,至少存在一个a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有一个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把符号a以及满足谓词的符号a(pi)作为输入符号,进入到步骤e);
如果符号a的分析表项为空,并且至少有两个以上的符号a(p1),a(p2),…,a(pk),它们的分析表项分别为移进动作S1,S2,…,Sk,则检查谓词p1,p2,…,pk是否成立,如果至少有两个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把那些满足谓词的符号a(pi)作为输入符号,进入到步骤e);
e)否则如果分析表项为移进动作Sj,则把输入符号移进符号栈,状态j移入到状态栈,如果有栈顶状态相同的分析线索,则发生合并;进一步,如果分析表项ACTION[j]=ri,即状态j为可归态,则使用产生式i进行规约,如果存在被合并的分析线索,则发生分裂,然后回到步骤a),否则处理结束;
f)否则如果动作表项为成功动作Succ,则文法分析成功,处理结束;
g)否则如果分析表项为空,则转向出错处理,处理结束。
上述的检测装置作为程序模块的组合也可以存储在计算机可读介质上成为一种计算机程序产品。因此,本发明还要求保护一种计算机程序产品,包括计算机可读介质,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行前述的各种检测方案。
以上对本发明所提供的一种针对事件的检测方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (20)
1、一种事件的检测方法,其特征在于,包括:
使用带谓词的上下文无关文法,预置针对事件的检测规则;
解析所述检测规则,生成一个下推自动机的分析表,所述分析表支持并行分析;
接收待检测事件;
通过控制器,针对所述待检测事件,利用所述分析表进行分析,得到检测结果。
2、按照权利要求1所述的检测方法,其特征在于,应用于网络攻击检测领域,所述检测规则包括协议规则和攻击规则。
3、按照权利要求2所述的检测方法,其特征在于,还包括:
通过谓词来定义处于多个不同层次上的协议事件,并基于协议原子事件和/或协议抽象事件来定义攻击规则。
4、按照权利要求3所述的检测方法,其特征在于,所述检测分析包括:
缓存前一待检测事件的匹配状态;以及,
针对后一待检测事件,结合前一待检测事件的匹配状态,在所述分析表中进行分析,得到后一待检测事件的最新匹配状态。
5、按照权利要求1、2、3或4所述的检测方法,其特征在于,通过以下步骤得到所述下推自动机分析表:
a)解析所述协议规则和攻击规则,得到语法树;
b)采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;
c)将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
6、按照权利要求5所述的检测方法,其特征在于,
所述带谓词的上下文无关文法G是一个五元组,格式如下:G=(VN,VT,S,R,P}
其中:VT为终结符号集,包含终结符号vt;VN为非终结符号集,包含非终结符号vn;VT和VN通称为符号集V,符号集V中的项称为符号v;S是目标文法符号,S∈VN;R是文法的产生式集,P是文法的谓词集;
一般产生式的格式为:vn:v1(p1)...vk(pk)
产生式的左部为一个非终结符vn∈VN,产生式的右边包含0个或者多个带谓词的终结符或者非终结符v1,...,vk∈V;谓词p1,...,pk∈P;谓词为产生式右部符号所应满足的限制条件,由逻辑运算符、算术运算符以及函数调用的组合构成;产生式的语义是:产生式的左部符号是由带谓词的右部符号归结而来。
7.按照权利要求6所述的检测方法,其特征在于,通过以下步骤完成协议规则和攻击规则的预置:
基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;
使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;
将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp。
8、按照权利要求6所述的检测方法,其特征在于,通过以下步骤完成协议规则和攻击规则的预置:
基于协议规范,使用所述带谓词的上下文无关文法,将协议终结符vtp添加到文法的终结符号集VT中;将协议非终结符号vnp添加到文法的终结符号集VN中;所述协议非终结符号vnp由协议终结符vtp结合谓词得到;
使用所述带谓词的上下文无关文法,将攻击非终结符号vna添加到文法的终结符号集VN中;
将产生式ra添加到文法的终结符号集R中,所述产生式左部为攻击非终结符号vna,产生式右部包含至少一个协议终结符vtp或协议非终结符号vnp。
9、按照权利要求5所述的检测方法,其特征在于,所述带谓词的LR(0)生成算法包括:
步骤a、使用带谓词的项目集的闭包算法生成初始项目集;
步骤b、针对初始项目集,使用带谓词的相邻项目集的生成算法生成相邻项目集;
步骤c、针对相邻项目集,重复执行所述带谓词的项目集的闭包算法和相邻项目集的生成算法,直到项目集不再增加为止,从而得到项目集族。
10、按照权利要求9所述的检测方法,其特征在于,项目集I的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(I),则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(I),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(I),则以项目A:λB·β为核心生成新的项目集。
11、按照权利要求9所述的检测方法,其特征在于,当项目集I包括多个根项目集,并且根项目集Ij中存在项目集I的非同源项目时,所述根项目集Ij的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(Ij),则进一步,如果项目A:λ·Bβ和项目集I中的项目B:σ·同源而项目C:δ·Bγ和项目集I中的项目B:σ·不同源,或者项目A:λ·Bβ和项目集I中的项目B:σ·不同源而项目C:δ·Bγ和项目集I中的项目B:σ·同源,则分别以项目A:λB·β和项目C:δB·γ为核心生成两个新的项目集;否则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(Ij),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(Ij),则以项目A:λB·β为核心生成新的项目集。
12、按照权利要求5所述的检测方法,其特征在于,所述分析表保留有移进-移进冲突SS、移进-规约冲突SR和规约-规约冲突RR。
13.按照权利要求1、2、3或4所述的检测方法,其特征在于,所述控制器的运算逻辑如下:
a)如果输入符号为终结符,从动作表ACTION取出分析表项,如果输入符号为非终结符,则从跳转表GOTO中取出分析表项;
b)如果分析表项含有移进-规约冲突SR或者规约-规约冲突RR,则需要对状态栈进行复制,使得对于每个状态栈只有一个唯一的动作,然后进入到步骤c);
c)如果分析表项为规约动作rj,则用产生式j进行规约,并将状态栈和符号栈的指针减去第j个产生式右部事件个数m,然后将产生式j的右部非终结符作为输入符号来处理,如果存在被合并的分析线索,则发生分裂,然后回到步骤a);否则,执行步骤d);
d)对于输入符号a,
如果除了符号a的分析表项为移进动作S0外,至少存在一个a(p1),a(p2),...,a(pk),它们的分析表项分别为移进动作S1,S2,...,Sk,则检查谓词p1,p2,...,pk是否成立,如果至少有一个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把符号a以及满足谓词的符号a(pi)作为输入符号,进入到步骤e);
如果符号a的分析表项为空,并且至少有两个以上的符号a(p1),a(p2),...,a(pk),它们的分析表项分别为移进动作S1,S2,...,Sk,则检查谓词p1,p2,...,pk是否成立,如果至少有两个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把那些满足谓词的符号a(pi)作为输入符号,进入到步骤e);
e)否则如果分析表项为移进动作Sj,则把输入符号移进符号栈,状态j移入到状态栈,如果有栈顶状态相同的分析线索,则发生合并;进一步,如果分析表项ACTION[j]=ri,即状态j为可归态,则使用产生式i进行规约,如果存在被合并的分析线索,则发生分裂,然后回到步骤a),否则处理结束;
f)否则如果动作表项为成功动作Succ,则文法分析成功,处理结束;
g)否则如果分析表项为空,则转向出错处理,处理结束。
14、一种事件的检测装置,其特征在于,包括:
存储模块,用于存储针对事件的检测规则,所述规则使用带谓词的上下文无关文法预置得到;
生成模块,用于解析所述检测规则,生成一适用下推自动机的分析表,所述分析表支持并行分析的方式;
接口单元,用于接收待检测事件和输出检测结果;
分析模块,用于通过控制器,针对所述待检测事件,在所述分析表中进行匹配下推,得到检测结果。
15、按照权利要求14所述的检测装置,其特征在于,
所述检测装置应用于网络攻击检测领域,所述检测规则包括协议规则和攻击规则;
所述生成模块包括:
解析器,用于解析所述协议规则和攻击规则,得到语法树;
第一转换器,用于采用带谓词的LR(0)生成算法生成所述带谓词的上下文无关文法的项目集族;
第二转换器,用于将该项目集族进行转换,得到相应的下推自动机分析表,所述下推自动机分析表包括动作表ACTION和跳转表GOTO。
16、按照权利要求15所述的检测装置,其特征在于,所述带谓词的LR(0)生成算法包括:
步骤a、使用带谓词的项目集的闭包算法生成初始项目集;
步骤b、针对初始项目集,使用带谓词的相邻项目集的生成算法生成相邻项目集;
步骤c、针对相邻项目集,重复执行所述带谓词的项目集的闭包算法和相邻项目集的生成算法,直到项目集不再增加为止,从而得到项目集族。
17,按照权利要求16所述的检测装置,其特征在于,项目集I的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(I),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(I),则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(I),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(I),则以项目A:λB·β为核心生成新的项目集。
18、按照权利要求16所述的检测装置,其特征在于,当项目集I包括多个根项目集,并且根项目集Ij中存在项目集I的非同源项目时,所述根项目集Ij的相邻项目集的生成算法包括:
a)如果项目A:λ·B(p1)β和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB(p1)·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
b)否则如果项目A:λ·Bβ和项目C:δ·B(p2)γ同时属于闭包函数CLOSURE(Ij),则分别以项目A:λB·β和项目C:δB(p2)·γ为核心生成两个新的项目集;
c)否则如果项目A:λ·Bβ和项目C:δ·Bγ同时属于闭包函数CLOSURE(Ij),则进一步,如果项目A:λ·Bβ和Ij同源而项目C:δ·Bγ和Ij不同源,或者项目A:λ·Bβ和项目集I中的项目B:σ·不同源而项目C:δ·Bγ和项目集I中的项目B:σ·同源,则分别以项目A:λB·β和项目C:δB·γ为核心生成两个新的项目集;否则以项目A:λB·β和项目S:δB·γ为核心生成一个新的项目集;
d)否则如果项目A:λ·B(p1)β属于闭包函数CLOSURE(Ij),则以项目A:λB(p1)·β为核心生成新的项目集;
e)否则如果项目A:λ·Bβ属于闭包函数CLOSURE(Ij),则以项目A:λB·β为核心生成新的项目集。
19、按照权利要求14所述的检测装置,其特征在于,所述控制器的运算逻辑如下:
a)如果输入符号为终结符,从动作表ACTION取出分析表项,如果输入符号为非终结符,则从跳转表GOTO中取出分析表项;
b)如果分析表项含有移进-规约冲突SR或者规约-规约冲突RR,则需要对状态栈进行复制,使得对于每个状态栈只有一个唯一的动作,然后进入到步骤c);
c)如果分析表项为规约动作rj,则用产生式j进行规约,并将状态栈和符号栈的指针减去第j个产生式右部事件个数m,然后将产生式j的右部非终结符作为输入符号来处理,如果存在被合并的分析线索,则发生分裂,然后回到步骤a);否则,执行步骤d);
d)对于输入符号a,
如果除了符号a的分析表项为移进动作S0外,至少存在一个a(p1),a(p2),...,a(pk),它们的分析表项分别为移进动作S1,S2,...,Sk,则检查谓词p1,p2,...,pk是否成立,如果至少有一个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把符号a以及满足谓词的符号a(pi)作为输入符号,进入到步骤e);
如果符号a的分析表项为空,并且至少有两个以上的符号a(p1),a(p2),...,a(pk),它们的分析表项分别为移进动作S1,S2,...,Sk,则检查谓词p1,p2,...,pk是否成立,如果至少有两个谓词成立,则出现移进-移进冲突SS,将状态栈进行复制,把那些满足谓词的符号a(pi)作为输入符号,进入到步骤e);
e)否则如果分析表项为移进动作Sj,则把输入符号移进符号栈,状态j移入到状态栈,如果有栈顶状态相同的分析线索,则发生合并;进一步,如果分析表项ACTION[j]=ri,即状态j为可归态,则使用产生式i进行规约,如果存在被合并的分析线索,则发生分裂,然后回到步骤a),否则处理结束;
f)否则如果动作表项为成功动作Succ,则文法分析成功,处理结束;
g)否则如果分析表项为空,则转向出错处理,处理结束。
20、一种计算机程序产品,包括计算机可读介质,其特征在于,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行权利要求1-13任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100796302A CN101060396B (zh) | 2006-03-24 | 2007-03-01 | 一种事件的检测方法及装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610046168 | 2006-03-24 | ||
CN200610046168.1 | 2006-03-24 | ||
CN2007100796302A CN101060396B (zh) | 2006-03-24 | 2007-03-01 | 一种事件的检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101060396A true CN101060396A (zh) | 2007-10-24 |
CN101060396B CN101060396B (zh) | 2011-02-09 |
Family
ID=38866308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100796302A Active CN101060396B (zh) | 2006-03-24 | 2007-03-01 | 一种事件的检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101060396B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
CN102427416A (zh) * | 2011-12-12 | 2012-04-25 | 东软集团股份有限公司 | 分布式事件检测方法及装置 |
CN102217281B (zh) * | 2011-06-13 | 2016-11-30 | 华为技术有限公司 | 协议解析方法及装置 |
CN107636767A (zh) * | 2015-04-14 | 2018-01-26 | 曼朵计量公司 | 用于食物摄入量的参数概率上下文无关文法 |
CN109061442A (zh) * | 2018-08-13 | 2018-12-21 | 迈普通信技术股份有限公司 | 检测方法、装置及可编程芯片 |
CN111381826A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 生成代码文件的语法树的方法、装置及电子设备 |
CN111381828A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 生成代码文件的语法树的方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100463461C (zh) * | 2005-05-10 | 2009-02-18 | 西安交通大学 | 主动式网络安全漏洞检测器 |
CN1741526A (zh) * | 2005-09-05 | 2006-03-01 | 北京启明星辰信息技术有限公司 | 网络异常流量的检测方法及系统 |
-
2007
- 2007-03-01 CN CN2007100796302A patent/CN101060396B/zh active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102217281A (zh) * | 2011-06-13 | 2011-10-12 | 华为技术有限公司 | 协议解析方法及装置 |
WO2012171166A1 (zh) * | 2011-06-13 | 2012-12-20 | 华为技术有限公司 | 协议解析方法及装置 |
US9112915B2 (en) | 2011-06-13 | 2015-08-18 | Huawei Technologies Co., Ltd. | Method and apparatus for protocol parsing |
CN102217281B (zh) * | 2011-06-13 | 2016-11-30 | 华为技术有限公司 | 协议解析方法及装置 |
CN102427416A (zh) * | 2011-12-12 | 2012-04-25 | 东软集团股份有限公司 | 分布式事件检测方法及装置 |
CN102427416B (zh) * | 2011-12-12 | 2014-07-23 | 东软集团股份有限公司 | 分布式事件检测方法及装置 |
US8826428B2 (en) | 2011-12-12 | 2014-09-02 | Neusoft Corporation | Event detection method and apparatus in a distributed environment |
CN107636767A (zh) * | 2015-04-14 | 2018-01-26 | 曼朵计量公司 | 用于食物摄入量的参数概率上下文无关文法 |
CN109061442A (zh) * | 2018-08-13 | 2018-12-21 | 迈普通信技术股份有限公司 | 检测方法、装置及可编程芯片 |
CN111381826A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 生成代码文件的语法树的方法、装置及电子设备 |
CN111381828A (zh) * | 2018-12-29 | 2020-07-07 | 北京奇虎科技有限公司 | 生成代码文件的语法树的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101060396B (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1145901C (zh) | 一种基于信息挖掘的智能决策支持构造方法 | |
CN1670729A (zh) | 使用隐含谓词的改善的查询优化器 | |
CN1781078A (zh) | 硬件加速器个性编译器 | |
CN1568458A (zh) | 无需修改现有代码即可增加新软件特征的方法 | |
CN1728140A (zh) | 信息检索系统中基于短语的索引编制 | |
CN1728143A (zh) | 基于短语产生文献说明 | |
CN101060396A (zh) | 一种事件的检测方法及装置 | |
CN1728141A (zh) | 信息检索系统中基于短语的搜索 | |
CN1783086A (zh) | 用于在数据库管理系统中的查询管理的系统和方法 | |
CN1552032A (zh) | 数据库 | |
CN1578954A (zh) | 机器翻译 | |
CN1271545C (zh) | 语言翻译系统 | |
CN1841376A (zh) | 对网络表单的数据驱动动作 | |
CN1608259A (zh) | 机器翻译 | |
CN1474979A (zh) | 用于专家系统的定制规则系统和方法 | |
CN1904896A (zh) | 结构化文档处理装置、搜索装置及结构化文档系统和方法 | |
CN1711536A (zh) | 基于相关词的聚类描述文档的方法和装置 | |
CN1379346A (zh) | 数字内容作成系统以及数字内容作成程序 | |
CN1908892A (zh) | 测试用例设计方法和系统 | |
CN1578955A (zh) | 关联规则数据挖掘所用的采样方法 | |
CN1379882A (zh) | 将二维数据转换为标准形式的方法 | |
CN1098501C (zh) | 用于sql关系数据库的仿真器及方法 | |
CN1707431A (zh) | 信号处理装置及其方法 | |
CN1740970A (zh) | 无缝地比较对象的系统和方法 | |
CN1373876A (zh) | 表格式数据显示方法、插入方法、删除方法和更新方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |