数据匹配方法和装置、协议数据分析方法、装置和系统与流程

文档序号:12493528阅读:304来源:国知局
数据匹配方法和装置、协议数据分析方法、装置和系统与流程

本公开涉及协议解析领域,具体地,涉及一种数据匹配方法和装置、协议数据分析方法、装置和系统。



背景技术:

应用层网络防护,通常要先对网络数据进行协议分析,得到协议的各个字段,每个字段对应一段连续的数据区域,再将某些协议的字段提交给各个安全功能检测模块,以进行例如入侵防御、入侵检测、反垃圾邮件、防病毒等网络安全功能检测。

现有技术中一般将协议分析和之后的多个安全检测功能划分成不同子系统,同一段数据或者数据的检测结果在各个子系统之间应用,例如,在应用层协议解析之后分别将控制信道数据和数据信道数据分别提交给入侵检测系统和病毒检测单元。在现有技术中,协议分析会考虑后面安全检测功能的可扩展性,会对协议各个字段的分析尽可能详尽,导致分析性能较低;协议分析之后的安全检测的各个功能耦合度低,但同一段数据被协议分析和之后的网络防护功能分析多遍,时间复杂度高,数据检测的次数与安全功能检测的数量线性相关,导致系统的整体检测效率较低。



技术实现要素:

本公开的目的是提供一种一次数据分析实现协议数据解析和多个安全功能的同时检测的数据匹配方法和装置、协议数据分析方法、装置和系统。

为了实现上述目的,本公开提供一种数据匹配方法,应用于词法分析器,包括:将待匹配的协议数据与所述词法分析器中的模式串集合进行匹配,所 述模式串集合中的每个模式串具有对应的匹配特征,所述匹配特征包括协议字段标识和安全检测标识;在满足与所述词法分析器对应的匹配结束条件时终止匹配,并输出匹配结果,其中,所述匹配结果包括:N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数;在匹配到匹配特征为安全检测标识的模式串的情况下,保存匹配到的匹配特征为安全检测标识的模式串对应的数据匹配范围,并且,所述匹配结果还包括所述安全检测标识。

可选地,所述匹配结束条件包括是否匹配到匹配特征为协议字段标识的模式串;以及,N=1。

可选地,所述匹配结束条件包括所述待匹配的协议数据是否全部匹配完毕;以及,N为在所述待匹配的协议数据中,匹配到的匹配特征为协议字段标识的模式串的总数。

本公开提供一种协议数据分析方法,应用于语法分析器,包括:接收待匹配的协议数据;将所述待匹配的协议数据输入至词法分析器,以由所述词法分析器对所述待匹配的协议数据进行数据匹配;接收所述词法分析器在终止匹配后返回的匹配结果,其中,所述匹配结果包括N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数,在匹配到匹配特征为安全检测标识的模式串的情况下,所述匹配结果还包括所述安全检测标识;对所述N个带谓词的终结符号进行语法解析;在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符号;将所述相关联的带谓词的终结符号所对应的数据匹配范围内的数据输入至安全管理模块,以由所述安全管理模块进行安全管理。

可选地,所述词法分析器的数量为一个;所述词法分析器在对所述待匹配的协议数据全部匹配完成后终止匹配;所述对所述N个带谓词的终结符号进行语法解析,包括;按照所述N个带谓词的终结符号中所包括的模式串的匹配顺序,对所述N个带谓词的终结符号逐一进行语法解析。

可选地,所述词法分析器的数量为多个,多个词法分析器与所述语法分析器的多个状态一一对应;在所述将所述待匹配的协议数据输入至词法分析器的步骤之前,所述方法还包括:将所述协议的终结符号压入符号栈的栈顶;所述将所述待匹配的协议数据输入至词法分析器,包括:将所述待匹配的协议数据和从所述符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,以由与所述当前栈顶状态相对应的词法分析器对所述待匹配的协议数据进行数据匹配,其中,所述词法分析器在从所述待匹配的协议数据中匹配到匹配特征为协议字段标识的模式串后终止匹配;所述方法还包括:在对所述N个带谓词的终结符号完成语法解析后,判断是否获得协议的目标非终结符号;在未获得协议的目标非终结符号的情况下,返回所述接收待匹配的协议数据的步骤,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。

可选地,所述在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符号,包括:在所述匹配结果包括安全检测标识的情况下,从所述词法分析器获取匹配特征为所述安全检测标识的模式串所对应的数据匹配范围;将数据匹配范围包括匹配特征为所述安全检测标识的模式串所对应的数据匹配范围的带谓词的终结符号确定为是与所述安全检测标识相关联的带谓词的终结符号。

本公开还提供一种数据匹配装置,应用于词法分析器,包括:匹配模块,用于将待匹配的协议数据与所述词法分析器中的模式串集合进行匹配,所述 模式串集合中的每个模式串具有对应的匹配特征,所述匹配特征包括协议字段标识和安全检测标识;输出模块,用于在满足与所述词法分析器对应的匹配结束条件时终止匹配,并输出匹配结果,其中,所述匹配结果包括:N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数;保存模块,用于在匹配到匹配特征为安全检测标识的模式串的情况下,保存匹配到的匹配特征为安全检测标识的模式串对应的数据匹配范围,并且,所述匹配结果还包括所述安全检测标识。

可选地,所述匹配结束条件包括是否匹配到匹配特征为协议字段标识的模式串;以及,N=1。

可选地,所述匹配结束条件包括所述待匹配的协议数据是否全部匹配完毕;以及,N为在所述待匹配的协议数据中,匹配到的匹配特征为协议字段标识的模式串的总数。

本公开还提供一种协议数据分析装置,应用于语法分析器,包括:第一接收模块,用于接收待匹配的协议数据;第一输入模块,用于将所述待匹配的协议数据输入至词法分析器,以由所述词法分析器对所述待匹配的协议数据进行数据匹配;第二接收模块,用于接收所述词法分析器在终止匹配后返回的匹配结果,其中,所述匹配结果包括N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数,在匹配到匹配特征为安全检测标识的模式串的情况下,所述匹配结果还包括所述安全检测标识;解析模块,用于对所述N个带谓词的终结符号进行语法解析;确定模块,用于在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符 号;第二输入模块,用于将所述相关联的带谓词的终结符号所对应的数据匹配范围内的数据输入至安全管理模块,以由所述安全管理模块进行安全管理。

可选地,所述词法分析器的数量为一个;所述词法分析器在对所述待匹配的协议数据全部匹配完成后终止匹配;所述解析模块,包括;第一解析子模块,用于按照所述N个带谓词的终结符号中所包括的模式串的匹配顺序,对所述N个带谓词的终结符号逐一进行语法解析。

可选地,所述词法分析器的数量为多个,多个词法分析器与所述语法分析器的多个状态一一对应;所述装置还包括:符号压入模块,用于将所述协议的终结符号压入符号栈的栈顶;所述第一输入模块,包括;输入子模块,用于将所述待匹配的协议数据和从所述符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,以由与所述当前栈顶状态相对应的词法分析器对所述待匹配的协议数据进行数据匹配,其中,所述词法分析器在从所述待匹配的协议数据中匹配到匹配特征为协议字段标识的模式串后终止匹配;所述装置还包括:判断模块,用于在对所述N个带谓词的终结符号完成语法解析后,判断是否获得协议的目标非终结符号;在未获得协议的目标非终结符号的情况下,重新触发所述第一接收模块接收待匹配的协议数据,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。

可选地,所述确定模块包括:获取子模块,用于在所述匹配结果包括安全检测标识的情况下,从所述词法分析器获取匹配特征为所述安全检测标识的模式串所对应的数据匹配范围;确定子模块,用于将数据匹配范围包括匹配特征为所述安全检测标识的模式串所对应的数据匹配范围的带谓词的终结符号确定为是与所述安全检测标识相关联的带谓词的终结符号。

本公开提供一种协议数据解析系统,包括:词法分析器,包括上述的数 据匹配装置;语法分析器,包括上述的协议数据分析装置。

通过上述技术方案,在词法分析器的匹配模式串集合中归集安全检测标识的模式串,可以在待匹配的协议数据进行多模匹配时,将可以保存记录协议数据中的需要进行安全检测功能的数据范围,减少待匹配的协议数据的匹配次数,提升检测效率。语法分析器可以在进行协议数据解析的同时,将带有安全检测标识的协议字段输入到相应的安全管理模块,实现一次数据分析可以同时进行协议数据解析和多个安全功能检测。同时,安全管理模块可以独立开发,提升系统开发和扩展的效率,方便系统维护。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据本公开的一种实施方式提供的数据匹配方法的流程图;

图2是根据本公开的一种实施方式提供的协议数据分析方法的流程图;

图3是根据本公开的另一种实施方式提供的协议数据分析方法的流程图;

图4是根据本公开的另一种实施方式提供的协议数据分析方法中对所述N个带谓词的终结符号进行语法解析步骤的流程图;

图5是根据本公开的一种实施方式提供的数据匹配装置的框图;

图6是根据本公开的一种实施方式提供的协议数据分析装置的框图;

图7是根据本公开的一种实施方式提供的协议状态迁移图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

本公开提供的协议数据解析系统分为预处理部分和检测部分。预处理部分用带谓词的上下文无关文法分别定义两类规则:协议解析规则和安全检测规则,并通过定义不同的产生式语法和符号来区分规则的类型。对上述规则进行分析并生成语法分析器和词法分析器。

其中,语法分析器包含一个分析语法状态的自动机,自动机是由控制器、状态栈和符号栈、自动机状态跳转表和动作表、输入和输出构成。其中,控制器负责自动机调度,状态栈保存自动机状态,符号栈保存输入符号,动作表保存文法产生式的动作,输入的是协议终结符号和待匹配的协议数据,输出的是协议字段和安全检测功能的处理结果,其中,该处理结果可以是安全管理模块对相应的协议字段进行安全管理后生成的日志等文件。

词法分析器归集文法符号上谓词的模式串,根据产生式类型分别对谓词中的模式串给予协议字段标识或者安全检测标识,从而生成模式串集合对应的多模匹配算法。

另外,在语法分析器的自动机中,自动机状态下的输入符号如果是带有谓词模式串的符号,则生成一个对应的谓词模式串集合。其中,模式串集合既归集该状态下协议解析产生式中的符号的谓词模式串,给予协议字段标识;也归集安全检测产生式中的特定符号的谓词模式串,给予安全检测标识,其中,特定符号是指与协议解析产生式左部的带谓词的终结符号语义等价的非终结符号,如果非终结符号在协议解析产生式中是只由某带谓词的终结符号规约生成,则称该非终结符号与此带谓词的终结符号语义等价。例如,对于协议解析产生式VN1:VT(p1),将模式串p1归集到VT的谓词模式串集合S1,给予协议字段标识;由于带谓词的终结符号VT(p1)与非终结符号VN1语义等价,也可以归集安全检测产生式VN2→VN1(p2)中的模式串p2到VT的谓词模式串集合S1,给予安全检测标识。

所有的谓词模式串集合可以合并成一个词法分析器,生成一个多模匹配算法;也可以对每个谓词模式串生成一个多模匹配算法,作为一个独立的词法分析器,然后由语法分析器根据不同的语法状态调度不同的词法分析器。

协议解析规则是多功能分析的基础,使用带谓词的上下文无关文法定义。首先待匹配的协议数据定义为终结符号,“终结”代表着不可再细分,是协议解析的唯一基础事件。每个终结符号加上待匹配的谓词模式串代表一个协议字段,即如果数据匹配上该谓词,则该谓词所对应的数据匹配范围的数据对应该协议的一个协议字段。例如带谓词的终结符号ftp_atom_stream($1~/^STOR:.*\r\n/i)表示终结符号ftp_atom_stream的谓词是“^STOR.*\r\n”,其数据匹配范围代表FTP上传命令行。

协议解析规则是用带谓词的上下文无关文法定义的,格式如下:

G={VT,VN,S,R,P}。

其中,VT为终结符号集,即代表待匹配的协议数据的终结符号;VN为非终结符号集,即协议解析产生的各个协议字段对应的抽象事件;S是目标文法符号,即协议解析的目标非终结符号,规约到S则终止协议解析;R是文法的产生式集,P是文法的谓词集,定义描述各个协议字段的模式串。

一般的,协议解析规则的基础产生式格式为:

VNm:VT(p1);

扩展产生式格式为:

VNn:VN1…VNk;或者VNn:VN1…VNk|VN1…VNt

安全检测产生式格式为:

VNh→VNm(p2){Security management_fun();};

其中,基础产生式表示一个基础的待解析的协议字段的构成;产生式的 左部为解析完成后代表该协议字段的非终结符号;产生式的右部为一个带谓词的终结符号;谓词p1∈P,是终结符号所应满足的匹配条件,一般为能表达一段数据范围的正则表达式,或是其他能够描述起始和结束特征的精确串的表示形式。产生式的语义是产生式的左部符号是由右部符号规约而成,协议解析规则支持的规约符号是“:”,事件关系符号“|”表示逻辑或;安全检测产生式的规约符号是“→”而不是“:”,表明规约之后的非终结符号不会被用于其他产生式,这个产生式是一个独立的功能,规约之后执行模块Security management_fun。

为了表达多个协议字段之间的关系和更大的协议字段,协议解析规则文法中可以定义扩展产生式以描述多个协议字段可以组成更大的协议字段。通过文法产生式,将非终结符号序列规约成抽象事件,该抽象事件由非终结符号表示,其中,“抽象”表示可以细分成多个事件,抽象事件代表更大的协议字段,即可以表示多个协议字段可以组成更大的协议字段。例如表示“FTP上传完成”的协议字段,则可以将其定义成非终结符号FTP_Upload对应的抽象事件,并定义产生式:

FTP_Upload:FTP_Upload_Cmd FTP_Upload_Reply

FTP_Upload_Cmd:ftp_atom_stream($1~/STOR.*\r\n/i)

FTP_Upload_Reply:ftp_atom_stream($1~/226Transfer complete/i)

即从FTP上传命令(非终结符号FTP_Upload_Cmd)到FTP上传成功响应(非终结符号FTP_Upload_Reply)的数据都是FTP上传过程的数据,且FTP上传完成。

扩展产生式表示多个解析完成的协议字段可以抽象表示成更大描述范围的协议字段,可以实现协议的分层描述,产生式的左部和右部都是协议的非终结符号。仍以FTP协议解析规则为例:

FTP_Target:FTP_Multi FTP_Fin;

即FTP协议的目标非终结符号是FTP_Target,代表整个协议数据的顶层 抽象事件,是由代表若干个FTP命令应答对的抽象事件FTP_Multi和代表FTP结束的抽象事件FTP_Fin规约而成。

FTP命令应答对的抽象事件FTP_Multi的定义是:

FTP_Multi:FTP_One|FTP_Multi FTP_One;

FTP_One代表一个FTP命令应答对,其定义是:

且定义FTP上传的命令:

FTP_Upload_Cmd:ftp_atom_stream($1~/^STOR.*\n/i)

|ftp_atom_stream($1~/^APPE.*\n/i)

|ftp_atom_stream($1~/^STOU.*\n/i);

FTP_Upload_Cmd是由FTP的STOR,APPE或STOU命令行构成,ftp_atom_stream是代表FTP协议数据的终结符号。

另外,可以定义一种数据的引用方法描述跨词法分析器的词法匹配,即通过采用引用栈的方式以实现动态存储和动态引用。

例如以MIME协议为例,邮件正文可以由多部分组成:

Content-Type:multipart/related;boundary=\"=====003_Dragon236671608472_=====\"

…...

--=====003_Dragon236671608472_=====

Content-Type:multipart/related;boundary=\"=====002_Dragon236671608472_=====\"

…...

--=====002_Dragon236671608472_=====

…...

--=====002_Dragon236671608472_=====--

--=====003_Dragon236671608472_=====

…...

--=====003_Dragon236671608472_=====--

如上所示的邮件正文是由两部分组成,两部分由边界字符串分割,且边界字符串由“boundary=”定义,然后边界“=====002_Dragon236671608472_=====\”包围的正文嵌套在边界“=====003_Dragon236671608472_=====”包围的内容之内。对边界字符串的引用符合先入后出的顺序,所以可以采用引用栈扩展表达式的方式实现。

首先在邮件的头部定义边界字符串的名称:

MIME_Header_Boundary:mime_atom_stream($1~/boundary=[“]?([^\n]+)[“]\r\n~dynref_push(“boundary”,\1)/i);

即“dynref_push”是动态存储表达式的关键词,即词法分析器匹配命中模式串第1个分组的数据被当做边界字符串存储到引用栈的栈顶且命名为“boundary”。

邮件正文中每个部分由边界头和边界尾分割,分别由动态引用表达式定义:

MIME_Body_Boundary_Start:mime_atom_stream($1~/--([^\n]+)\r\n~dynref_top(“boundary”,\1)/i);

MIME_Body_Boundary_End:mime_atom_stream($1~/--([^\n]+)--\r\n~dynref_top(“boundary”,\1)/i)

{dynref_pop(“boundary”);…};

即“dynref_top”是动态引用表达式的关键词,即词法分析器匹配命中模式串第1个分组的数据只能是存储在引用栈栈顶且命名为“boundary”的数据。为了配合对引用栈中存储数据的操作,在产生式的动作部分定义可选的dynref_pop函数以实现引用栈的栈顶数据出栈的操作,即通过动态存储表达式和动态引用表达式实现引用数据在多个产生式谓词上的引用。

协议解析产生式的各个抽象事件,代表各个协议字段或者协议字段的组合;安全检测规则可以定义带谓词的终结符号,表示在某些特定的协议字段上匹配安全检测标识,其中,安全检测产生式规约的抽象事件不需要再往上层规约,因此规约符号由“:”替换成“→”以便于区分;协议数据的安全检测模式串谓词匹配范围需要暂时保存,其数据范围不代表协议字段,不对协议数据流产生分割;安全检测产生式规约是需要执行规约动作,该规约动作是指需要执行对匹配到安全检测标识模式串的协议字段进行相应的安全管理操作。因为安全功能检测有对应的管理操作,例如产生日志、报警或系统调度等处理。

应用层协议可以集成安全检测功能,例如入侵防护IPS,反垃圾邮件或病毒防护AV等功能可以定义规则,例如:

Proto_IPS→FTP_Upload_Cmd($1~/ips_regexp_filename/i){Proto_IPS_Schedule(...);}

上述文法规则表示,FTP上传的文件名满足特征“ips_regexp_filename”则调用处理函数Proto_IPS_Schedule($1),“$1”传入的是上传命令行上的数据,其数据范围由协议数据解析在生成FTP_Upload_Cmd时确定;且Proto_IPS规约生成后无后续的进一步规约。

另外,在协议上可以针对同一安全检测功能在同一协议字段上书写多条规则,方法是:

Proto_IPS→FTP_Upload_Cmd($1~/ips_regexp1/i){Proto_IPS_Schedule(...);}

Proto_IPS→FTP_Upload_Cmd($1~/ips_regexp2/i){Proto_IPS_Schedule(...);}

……

Proto_IPS→FTP_Upload_Cmd($1~/ips_regexpn/i){Proto_IPS_Schedule(...);}

也可以在同一协议字段上书写多个安全检测功能的规则,如增加规则:

Proto_AV→FTP_Upload_Cmd($1~/av_regexp_filetype/i){Proto_AV_Schedule(...);}

即FTP上传的文件类型满足“av_regexp_filetype”则调用防病毒处理函数Proto_AV_Schedule($1)。

如上所述,由于协议解析规则和安全检测规则中定义不同的产生式语法和符号,协议解析和安全检测可以有不同的处理操作,使得扩充安全功能不会影响已开发完成的协议解析器的正确执行,因而安全管理模块可以独立开发。另外,安全管理模块也无需考虑有其他功能检测同一块数据,系统会在预处理阶段将相似功能自动完成整合,可以提升系统开发和扩展的效率,缩小工程化周期。

由于上述规则都是采用上下文无关文法的,因此需要生成用于词法分析过程的词法分类器和用于语法分析过程的语法分析器,且语法分析器包含一个使用LALR语法分析方法生成的自动机。为了实现一次数据分析,用于词法分析过程的词法分析器需要进行事件谓词归集。

以下详细介绍检测部分。图1所示,为根据本公开的一种实施方式提供的数据匹配方法的流程图。如图1所示,该方法应用于词法分析器,包括:

在步骤S11中,将待匹配的协议数据与词法分析器中的模式串集合进行匹配,所述模式串集合中的每个模式串具有对应的匹配特征,所述匹配特征包括协议字段标识和安全检测标识。

在步骤S12中,在满足与词法分析器对应的匹配结束条件时终止匹配,并输出匹配结果,其中,所述匹配结果包括:N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数。

在步骤S13中,在匹配到匹配特征为安全检测标识的模式串的情况下,保存匹配到的匹配特征为安全检测标识的模式串对应的数据匹配范围,并且,所述匹配结果还包括所述安全检测标识。

在该实施例中,词法分析器可以将所有的谓词模式串合并到一个词法分析器,生成一个多模匹配算法,并标记每个模式串的所在的谓词模式串集合 的名称。在这种情况下,所述匹配结束条件可以包括所述待匹配的协议数据是否全部匹配完毕;以及,N为在所述待匹配的协议数据中,匹配到的匹配特征为协议字段标识的模式串的总数。例如,在该词法分析器进行协议数据的模式串匹配时,当该词法分析器匹配到谓词模式串集合中的一个匹配特征为协议字段标识的模式串时,保存已匹配到的带谓词的终结符号和匹配范围,继续匹配模式串集合中的模式串,直至待匹配的协议数据全部匹配完成,词法分析器进行一次数据匹配输出待匹配的协议数据中的所有的匹配结果。

词法分析器也可以对不同的语法状态下的谓词模式串集合生成一个多模匹配算法,作为一个独立的词法分析器,然后由语法分析器根据不同的语法状态调度不同的词法分析器,此时可以根据字符串集合的特点选择合适的多模式匹配算法或参数。在这种情况下,所述匹配结束条件可以包括是否匹配到匹配特征为协议字段标识的模式串;以及,N=1。例如,该词法分析器中的模式串包括匹配特征为协议字段标识的谓词模式串,即在当前的状态下可输入的带谓词的终结符号的谓词模式串和用于安全检测标识匹配的谓词模式串。在该词法分析器匹配到谓词模式串集合中匹配特征为协议字段标识的模式串时,终止数据匹配,并输出匹配结果,即该词法分析器进行一次数据匹配输出一个带有协议字段标识的匹配结果。

在检测过程中,词法分析器采用多模匹配算法对数据进行匹配,得到匹配命中的协议字段模式串和安全检测模式串,并保存其数据匹配范围。通过上述技术方案,在词法分析器的匹配模式串集合中归集安全检测标识的模式串,可以在待匹配的协议数据进行多模匹配时,保存并记录协议数据中的需要进行安全检测的协议数据,减少待匹配的协议数据的匹配次数,提升检测效率。

图2所示,为根据本公开的一种实施方式提供的协议数据分析方法的流程图。如图2所示,该方法应用于语法分析器,包括:

在步骤S21中,接收待匹配的协议数据;

在步骤S22中,将所述待匹配的协议数据输入至词法分析器,以由所述词法分析器对所述待匹配的协议数据进行数据匹配;

在步骤S23中,接收所述词法分析器在终止匹配后返回的匹配结果,其中,所述匹配结果包括N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数,在匹配到匹配特征为安全检测标识的模式串的情况下,所述匹配结果还包括所述安全检测标识。

其中,将所有的谓词模式串合并到一个谓词模式串集合的词法分析器返回的匹配结果包括待匹配的协议数据中的所有的匹配结果;与语法分析器的不同的语法状态一一对应的词法分析器的返回结果包括一个带有协议字段标识的匹配结果。

在步骤S24中,对所述N个带谓词的终结符号进行语法解析;

在步骤S25中,在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符号。

其中,在步骤S24中,对接收到的带谓词的终结符号进行语法解析。解析完成后,对该带谓词的终结符号执行规约操作得到对应的非终结符号。步骤S25中,确定的与所述安全检测标识相关联的带谓词的终结符号与该非终结符号语义等价,且该非终结符号为安全检测产生式右部的抽象事件的非终结符号。

可选地,所述在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符号,包括:

在所述匹配结果包括安全检测标识的情况下,从所述词法分析器获取匹配特征为所述安全检测标识的模式串所对应的数据匹配范围;

将数据匹配范围包括匹配特征为所述安全检测标识的模式串所对应的数据匹配范围的带谓词的终结符号确定为是与所述安全检测标识相关联的带谓词的终结符号。

安全检测标识对应的模式串在同一协议字段上可以命中多个,且在协议字段标识对应的模式串命中的数据范围内,执行安全检测模式串产生式的管理动作后不会再参与状态跳转,即在语法分析器解析过程中,不参与移进和规约的过程;协议字段标识对应的模式串在同一协议字段上只有一个,参与状态跳转,在语法分析器的协议字段解析过程中,需要执行相应的移进、规约操作,直至获得协议的目标非终结符号。

在步骤S26中,将所述相关联的带谓词的终结符号所对应的数据匹配范围内的数据输入至安全管理模块,以由所述安全管理模块进行安全管理。

需要说明的是,该方法的执行顺序不局限于图2所示的顺序。例如,在接收到的匹配结果包括安全检测标识的情况下,步骤S24和步骤S25可以同时执行,即同时进行协议字段的解析和协议字段的安全检测。在接收到的匹配结果带有协议字段标识时,执行协议字段的解析过程;在接收到的匹配结果带有安全检测标识时,将安全检测标识对应的数据匹配范围和其对应的带谓词的终结符号的数据匹配范围进行比较,以判断是否要执行安全检测的操作。该带谓词的终结符号与其对应的协议解析产生式左部的非终结符号语义等价,且该非终结符号为安全检测产生式右部的抽象事件的非终结符号。

通过上述技术方案,语法分析器可以在进行协议数据解析的同时,将带有安全检测标识的协议字段输入相应的安全管理模块以执行相应的安全管理,实现一次数据分析同时完成协议数据解析和多个安全检测功能检测。安全管理模块可以独立开发,提升系统开发和扩展的效率,方便系统维护。

可选地,所述词法分析器的数量为一个;所述词法分析器在对所述待匹配的协议数据全部匹配完成后终止匹配;

所述对所述N个带谓词的终结符号进行语法解析,包括;

按照所述N个带谓词的终结符号中所包括的模式串的匹配顺序,对所述N个带谓词的终结符号逐一进行语法解析。其中,对所述N个带谓词的终结符号逐一进行语法解析与现有技术相同,在此不再赘述。

其中,词法分析器返回的N个带谓词的终结符号对应的模式串的匹配顺序是根据各个模式串被匹配的先后顺序排列的。在该实施例中,不断向语法分析器输入词法分析器返回的匹配结果序列,即按照模式串的匹配顺序排列的N个带谓词的终结符号的序列,从而根据输入的符号和语法分析器的跳转表和动作表不断更新语法状态并识别有效的协议字段。

可选地,所述词法分析器的数量为多个,多个词法分析器与所述语法分析器的多个状态一一对应。图3所示,为根据本公开的另一种实施方式提供的协议数据分析方法的流程图。如图3所示,在图2的基础上,该方法还可以包括:

在所述将所述待匹配的协议数据输入至词法分析器的步骤之前,所述方法还包括:

在步骤S31中,将所述协议的终结符号压入符号栈的栈顶;

所述将所述待匹配的协议数据输入至词法分析器,包括:

在步骤S32中,将所述待匹配的协议数据和从所述符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,以由与所述当前栈顶状态相对应的词法分析器对所述待匹配的协议数据进行数据匹配,其中,所述词法分析器在从所述待匹配的协议数据中匹配到匹配特征为协议字段标识的模式串后终止匹配;

在步骤S33中,在对所述N个带谓词的终结符号完成语法解析后,判断是否获得协议的目标非终结符号;在未获得协议的目标非终结符号的情况下,返回所述接收待匹配的协议数据的步骤,其中,再次接收的待匹配的协 议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分;在获得协议的目标非终结符号时,协议解析完成。

在该实施例中,多个词法分析器与所述语法分析器的多个状态一一对应,该语法分析器对所述N个带谓词的终结符号进行语法解析步骤如图4所示。图4为根据本公开的另一种实施方式提供的协议数据分析方法中对所述N个带谓词的终结符号进行语法解析步骤的流程图。如图4所示,包括:

在步骤S41中,根据状态栈的当前栈顶状态和所述带谓词的终结符号,确定产生规约事件或是移进事件。

在语法分析器的输入符号为带谓词的终结符号时,通过查询动作表,可以确定产生规约事件或是移进事件,该动作表是通过在预处理阶段生成语法分析器时,根据系统开发阶段编写的协议解析规则文法生成的。

在步骤S42中,在确定产生移进事件时,执行移进操作。移进操作包括:将根据状态栈的当前栈顶状态和所述词法分析器的返回结果确定的下一状态压入状态栈的栈顶,将词法分析器的返回结果压入所述符号栈的栈顶;

在步骤S43中,将从符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器;

在步骤S44中,接收所述词法分析器的返回结果,该返回结果可以是带谓词的终结符号或是非终结符号;

在步骤S45中,判断返回结果是带谓词的终结符号或是非终结符号,在所述返回结果为带谓词的终结符号时,转入步骤S41,在返回结果为非终结符号时,转入步骤S47;

在步骤S46中,在确定产生规约事件时,执行规约操作,其中,规约操作包括:输出规约后产生的非终结符所表示的协议字段,利用该非终结符替换当前所述符号栈中与所述规约事件有关的符号,并将当前所述状态栈中、与所述规约事件有关的符号所对应的状态弹出。在执行完移进操作或是规约 操作后,需要将待匹配的协议数据的起始位置移动到当前已匹配的数据之后的位置之后执行跳转动作,直至生成协议的目标符号或者待匹配数据为空。

通过上述技术方案,由于本公开中不同的状态对应不同的词法分析器,在不同状态下,当匹配到相同的模式串时,也可以向语法分析器输入不同的非终结符号,相对独立的词法分析器的变化影响范围较小,使得词法分析器的修改和扩充更加方便。同时,减少词法分析器中的模式串的数量,可以降低词法分析的复杂度,使得词法分析器可以根据模式串的特点选择最适宜的模式串匹配算法,从而提高词法分析的性能。语法分析器在接收到安全检测标识的返回结果时,可以对相应的协议字段输入至安全管理模块以执行安全管理,实现一次数据分析同时完成协议数据解析和多个安全检测功能检测。同时,词法分析器在进行模式串匹配时,只需要匹配当前状态下对应的词法分析器中归集的模式串,可以避免产生语法冲突,从而提高协议数据解析的效率和准确性。

可选地,该方法还可以包括:

在步骤S47中,根据状态栈的当前栈顶状态和所述非终结符号,确定产生规约事件或是移进事件或是接受事件。

在步骤S48中,在确定产生移进事件时,执行移进操作。该移进操作与前文所述的移进操作相同,在此不再赘述。在语法分析器的输入符号为非终结符号时,通过查询跳转表确定下一状态,该跳转表是通过在预处理阶段生成语法分析器时,根据系统开发阶段编写的协议解析规则文法生成的。

在步骤S49中,根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件,在判定能继续产生规约事件时,转入步骤S43,否则,在判定不能继续产生规约事件时,接收待匹配的协议数据,将协议的终结符号压入符号栈的栈顶,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。

在该实施例中,在词法分析器的返回结果为非终结符号时,在执行完相应的操作后,要根据状态栈的当前栈顶状态和符号栈判断下一步要执行的操作,从而判断下一步要跳转的步骤。通过上述技术方案,在输入符号为非终结符号时,对下一步要执行的操作进行预判,可以准确地判定下一步跳转的步骤,可以提高协议解析的效率和准确性。

在步骤S40中,在确定产生规约事件时,进行规约操作,并返回所述根据状态栈的当前栈顶状态和所述非终结符号,判断能否继续产生规约事件的步骤S49。其中,该规约操作的步骤与上述规约操作相同,在此不再赘述。另外,在执行完移进操作或是规约操作后,需要将待匹配的协议数据的起始位置移动到当前已匹配的数据之后的位置之后执行跳转动作,直至生成协议的目标符号或者待匹配数据为空。

在步骤S50中,在确定产生接受事件时,获得协议的目标非终结符号。

可选地,所述词法分析器匹配到的模式串是所述词法分析器自身自带的模式串集合中的一者,或者是所述词法分析器根据引用标识从引用栈获取到的模式串,其中,所述引用栈中存储有至少一个模式串,所述引用栈能够被其他词法分析器访问。

在该实施例中,该词法分析器中匹配到的模式串可以是根据自动机的状态归集的该状态下的所有模式串的集合,也可以包括从引用栈获取的模式串。其中,如上所述,在系统开发阶段的协议解析规则文法中,对产生式词法展开方式构造的产生式要编写特征引用规则和引用匹配规则,为每一组引用关系命名,其中特征引用规则用来动态提取新的分词特征,引用匹配规则使用新的分词特征进行分词匹配。在系统运行阶段的预处理步骤中,词法分析器对特征引用规则的分词特征建立动态存储标识,对引用匹配规则的分词特征建立动态引用标识,每组引用关系使用给定栈名的引用栈,由规则编写者根据协议特性指定栈名,通过栈名查找相应的引用栈。在协议解析步骤中, 词法分析器中带有动态存储标识的分词特征匹配到某一段数据,则将匹配的数据存储到相应的引用栈中。词法分析器中对于带有动态引用标识的分词特征,取得引用栈栈顶的数据替换该分词特征,参与后续的分词匹配过程。

在上述技术方案中,通过采用引用栈存储模式串的方式,可以通过动态存储标识和动态引用标识实现数据引用在多个产生式谓词上的引用,实现跨词法分析器的模式串匹配,从而可以对文法产生式进行扩展,简化复杂模式串的匹配方式,节省资源。

本公开提供一种数据匹配装置。图5为根据本公开的一种实施方式提供的数据匹配装置的框图。如图5所示,该装置10应用于词法分析器,包括:

匹配模块101,用于将待匹配的协议数据与所述词法分析器中的模式串集合进行匹配,所述模式串集合中的每个模式串具有对应的匹配特征,所述匹配特征包括协议字段标识和安全检测标识。

输出模块102,用于在满足与所述词法分析器对应的匹配结束条件时终止匹配,并输出匹配结果,其中,所述匹配结果包括:N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数。

可选地,所述匹配结束条件包括是否匹配到匹配特征为协议字段标识的模式串;以及,N=1。

可选地,所述匹配结束条件包括所述待匹配的协议数据是否全部匹配完毕;以及,N为在所述待匹配的协议数据中,匹配到的匹配特征为协议字段标识的模式串的总数。

保存模块103,用于在匹配到匹配特征为安全检测标识的模式串的情况下,保存匹配到的匹配特征为安全检测标识的模式串对应的数据匹配范围,并且,所述匹配结果还包括所述安全检测标识。

本公开提供一种协议数据解析装置。图6所示,为根据本公开的一种实施方式提供的协议数据分析装置的框图。如图6所示,该装置20应用于语法分析器,包括:

第一接收模块201,用于接收待匹配的协议数据;

第一输入模块202,用于将所述待匹配的协议数据输入至词法分析器,以由所述词法分析器对所述待匹配的协议数据进行数据匹配;

第二接收模块203,用于接收所述词法分析器在终止匹配后返回的匹配结果,其中,所述匹配结果包括N个带谓词的终结符号和每个所述带谓词的终结符号对应的数据匹配范围,其中,每个所述带谓词的终结符号包括协议的终结符号、和匹配到的匹配特征为协议字段标识的相应模式串,N为大于或等于1的自然数,在匹配到匹配特征为安全检测标识的模式串的情况下,所述匹配结果还包括所述安全检测标识;

解析模块204,用于对所述N个带谓词的终结符号进行语法解析;

确定模块205,用于在所述匹配结果包括安全检测标识的情况下,确定与所述安全检测标识相关联的带谓词的终结符号;

第二输入模块206,用于将所述相关联的带谓词的终结符号所对应的数据匹配范围内的数据输入至安全管理模块,以由所述安全管理模块进行安全管理。

可选地,所述词法分析器的数量为一个;所述词法分析器在对所述待匹配的协议数据全部匹配完成后终止匹配;

所述解析模块204,包括;

第一解析子模块,用于按照所述N个带谓词的终结符号中所包括的模式串的匹配顺序,对所述N个带谓词的终结符号逐一进行语法解析。

可选地,所述词法分析器的数量为多个,多个词法分析器与所述语法分析器的多个状态一一对应;

所述装置20还包括:

符号压入模块,用于将所述协议的终结符号压入符号栈的栈顶;

所述第一输入模块202,包括;

输入子模块,用于将所述待匹配的协议数据和从所述符号栈取出的当前栈顶符号输入至与状态栈的当前栈顶状态相对应的词法分析器,以由与所述当前栈顶状态相对应的词法分析器对所述待匹配的协议数据进行数据匹配,其中,所述词法分析器在从所述待匹配的协议数据中匹配到匹配特征为协议字段标识的模式串后终止匹配;

所述装置20还包括:

判断模块,用于在对所述N个带谓词的终结符号完成语法解析后,判断是否获得协议的目标非终结符号;在获得协议的目标非终结符号的情况下,重新触发所述第一接收模块接收待匹配的协议数据,其中,再次接收的待匹配的协议数据是前次接收的待匹配的协议数据中除去前次已匹配完成的数据部分后剩余的数据部分。

可选地,确定模块205可以包括:

获取子模块,用于在所述匹配结果包括安全检测标识的情况下,从所述词法分析器获取匹配特征为安全检测标识的模式串所对应的数据匹配范围;

确定子模块,用于将数据匹配范围包括匹配特征为所述安全检测标识的模式串所对应的数据匹配范围的带谓词的终结符号确定为是与所述安全检测标识相关联的带谓词的终结符号。

本公开提供一种协议数据解析系统,包括:

词法分析器,包括上述的数据匹配装置10;

语法分析器,包括上述的协议数据分析装置20。

以下仍以FTP的规则为例,详细介绍上述解析过程。其中,图7所示,为根据本公开的一种实施方式提供的协议状态迁移图。如图7所示,包括输 入符号的状态转换图,以及每个状态下的谓词模式串的生成。其中,每个自动机状态下产生式中的“*”之后的事件是跳转到下一个状态的可输入事件,如果自动机状态中的可输入事件带有谓词,则建立一个谓词模式串集合,其命名可采用“pred_StateId_EventId”的方法。

对于多个安全功能检测的规则,例如规约到Porto_IPS、Proto_AV的规则,由于其可输入的抽象事件与对应的带谓词的终结符号的规约而成的非终结符号的事件完全等价,可以将安全功能检测的规则特征与该状态下产生式带谓词的终结符号的规则特征一起归集。

例如图7中的谓词模式串“pred_0_1”,其内部结构如下:

其中:“1”表示规则编号;“Proto_Match”是协议字段标识的模式串的匹配特征,表明该模式串用于协议字段的解析;“^STOR.*\n”表示模式串匹配规则;“Porto_IPS”和“Proto_AV”是安全检测标识的模式串的匹配特征,该匹配特征的安全检测所处理的数据范围与协议字段标识特征的数据匹配范围相同。

在该实施例中,以多个词法分析器对应于语法分析器的多个语法状态的协议数据解析系统为例,详细介绍协议数据的解析过程。

待匹配的协议数据被输入到本系统后,待检测的协议数据为数据包中所有数据,语法分析器中自动机初始状态为S0,解析步骤如下:

控制器接收输入事件。待匹配的协议数据被提交给系统控制器,控制器将协议的终结符号作为输入符号,并压入符号栈的栈顶,终结符号的待匹配 的协议数据为所有的待匹配的协议数据。

词法分析器匹配。将待匹配的协议数据与词法分析器中的模式串集合用多模匹配算法进行匹配,若匹配命中匹配特征为安全检测标识的模式串,例如“IPS_Match”或“AV_Match”等标识,保存匹配特征和数据匹配范围;若匹配命中匹配特征为协议字段标识的模式串,例如“Proto_Match”标识,保存带谓词的终结符号和数据匹配范围,并终止匹配。

语法分析器分析。将带有协议字段标识的模式串送入语法分析器的自动机,分析得到当前语法状态下有效的协议字段,输出已解析的协议字段,如果匹配特征为安全检测标识的模式串与该协议字段处于同一个谓词模式串集合,且数据匹配范围在该协议字段的数据匹配范围之内,则将该协议字段输入安全管理模块以执行相应的安全检测功能的处理操作。然后对已解析的协议字段查询动作表或跳转表,根据状态栈和符号栈得到自动机跳转的下一个状态,待匹配的协议数据变更为当前已匹配数据范围之后的协议数据,并再次调用词法分析器。

在上述解析过程中,不仅可以实现协议字段的解析过程,还可以在协议数据解析的过程中,对要执行安全检测的协议字段进行安全检测相应的处理操作,以达到一次数据分析实现协议数据解析和多个安全功能检测的目的。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1