CN111181980B - 一种面向网络安全的正则表达式的匹配方法及装置 - Google Patents
一种面向网络安全的正则表达式的匹配方法及装置 Download PDFInfo
- Publication number
- CN111181980B CN111181980B CN201911422017.5A CN201911422017A CN111181980B CN 111181980 B CN111181980 B CN 111181980B CN 201911422017 A CN201911422017 A CN 201911422017A CN 111181980 B CN111181980 B CN 111181980B
- Authority
- CN
- China
- Prior art keywords
- target
- preset
- regular expression
- dfa state
- dfa
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种面向网络安全的正则表达式的匹配方法及装置,包括:获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测;如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测。采用本发明可以提高正则表达式的匹配性能,进而提高检测结果的准确性,提高网络性能。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种面向网络安全的正则表达式的匹配方法及装置。
背景技术
在网络技术不断发展的同时,网络攻击技术也在不断发展,网络恶意攻击行为也变得越来越多样化,故而,越来越多的入侵检测防御系统通常会配置多个正则表达式执行匹配任务,以进行网络安全检测。
目前,正则表示式通常编译为有限自动机来执行匹配任务,有限自动机分为确定有穷自动机(Deterministic finite automaton,DFA)和非确定有穷自动机(Non-deterministic finite automaton,NFA),且在基于单模正则表达式或者数量适中(一百条左右)的多模正则表达式,对网络数据包进行匹配时,通常采用将正则表达式转化为NFA,再将NFA转化为DFA,通过DFA对网络数据包进行匹配,以进行网络安全检测。但当基于大规模的正则表达式对网络数据包进行匹配时,即使只将正则表达式转化为NFA,也可能会出现内存溢出的状况,导致匹配性能较低,从而使得网络数据包的检测结果的准确性较低,进而导致网络性能较差。故而,目前亟需一种高匹配性能的面向网络安全的正则表达式的匹配方法。
发明内容
由于现有方法存在上述问题,本发明实施例提出一种面向网络安全的正则表达式的匹配方法及装置。
第一方面,本发明实施例提供了一种面向网络安全的正则表达式的匹配方法,包括:
获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;
如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测;
如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测。
第二方面,本发明实施例提供了一种面向网络安全的正则表达式的匹配装置,
包括获取模块和生成模块,其中:
所述获取模块,用于获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;
所述生成模块,用于如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测;
如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测。
第三方面,本发明实施例还提出一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的面向网络安全的正则表达式的匹配方法的步骤。
第四方面,本发明实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行如第一方面所述的面向网络安全的正则表达式的匹配方法。
由上述技术方案可知,本发明实施例提供的面向网络安全的正则表达式的匹配方法,通过按照预设正则表达式的数量规模情况,构建目标过滤器或者目标有限自动机。这样,实现了针对不同数量的正则表达式的规模,构建不同的匹配模型(目标过滤器或者目标有限自动机),以网络数据包进行检测。同时,针对不同规模构建不同的匹配模型,还可以避免出现内存溢出的现象,从而可以提高匹配性能,提高网络数据包的检测结果的准确性,进而可以提高网络性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种面向网络安全的正则表达式的匹配方法的流程示意图;
图2为本发明实施例提供的一种目标有限自动机的结构示意图;
图3为本发明实施例提供的一种基于目标有限自动机的正则表达式的匹配方法的流程示意图;
图4为本发明实施例提供的一种面向网络安全的正则表达式的匹配装置的结构示意图;
图5为本发明实施例提供的一种面向网络安全的正则表达式的匹配装置的结构示意图;
图6为本发明实施例提供的一种电子设备的逻辑框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本实施例提供的面向网络安全的正则表达式的匹配方法的流程示意图,包括:
S101,对每个预设正则表达式进行格式化处理,并确定所有预设正则表达式的数量是否大于预设阈值。
其中,所述预设正则表达式指预先设定好的正则表达式。
所述预设阈值指:预先设定好的构建目标过滤器的前述预设正则表达式的数量的最小值,也可以认为是对大规模多模正则表达式的数量界限判定,如可以设置为1000个,当正则表达式的数量大于1000个,则可以认为是大规模多模正则表达式集合。
在实施中,可以对基于预设正则表达式,构建自动机过滤器(Aho-CorasickAutomaton,AC)或有限自动机,以基于前述自动机过滤器或者有限自动机执行匹配任务,以对网络数据包进行检测。具体的,首先,可以获取已经设定好的所有预设正则表达式。然后,可以确定前述所有预设正则表达式的数量是否大于前述预设阈值,以确定是基于前述所有预设正则表达式构建目标过滤器,还是构建目标有限自动机。
S102,如果是,则基于所有预设正则表达式构建目标过滤器,以基于目标过滤器对目标网络数据包进行检测。
其中,所述目标过滤器指基于前述所有预设正则表达式构建的AC。
所述目标网络数据包指待检测的网络数据包。
在实施中,如果所有预设正则表达式的数量大于上述预设阈值,则可以认为上述所有预设正则表达式的集合属于大规模集合。然后,则可以基于上述所有预设正则表达式构建目标过滤器,目标过滤器是一种匹配算法,在生成目标过滤器之后,则可以基于该目标过滤器对目标网络数据包进行匹配,以对目标网络数据包进行检测。
S103,如果否,基于所有预设正则表达式,构建目标有限自动机,以基于目标有限自动机对目标网络数据包进行检测。
其中,所述目标有限自动机指基于上述所有预设正则表达式,构建生成的有限自动机,该有限自动机可以是DFA、也可以是混合有限自动机等。
在实施中,如果上述所有预设正则表达式的数量小于上述预设阈值,则可以认为上述所有预设正则表达式的集合不属于大规模集合,可能是单模或者小规模的多模正则表达式集合。然后,则可以基于上述所有预设正则表达式,构建目标有限自动机,如可以根据具体的编译时间、内存占用率等条件,选择基于上述所有预设正则表达式,构建DFA或者混合有限自动机,并将前述构建的DFA或者混合有限自动机确定为目标有限自动机。之后,则可以基于该目标有限自动机对目标网络数据包进行检测。
需要说明的是,基于正则表达式对网络数据包进行匹配的过程,实际上是检测网络数据包中的字符串是否符合正则表达式的过滤逻辑的过程,根据检测结果可以确定该网络数据包是否属于恶意网络数据包,即前述对网络数据包的匹配过程也可以理解为是对网络数据包进行网络安全检测的过程。进而,可以理解,通过上述基于预设正则表达式构建的目标过滤器或者目标有限自动机,对网络数据包进行匹配的过程,也可以理解为是对网络数据包进行检测(即网络安全检测)的过程。
由上述技术方案可知,本发明实施例提供的面向网络安全的正则表达式的匹配方法,通过按照预设正则表达式的数量规模情况,构建目标过滤器或者目标有限自动机。这样,实现了针对不同数量的正则表达式的规模,构建不同的匹配模型(目标过滤器或者目标有限自动机),以网络数据包进行检测。同时,针对不同规模构建不同的匹配模型,还可以避免出现内存溢出的现象,从而可以提高匹配性能,提高网络数据包的检测结果的准确性,进而可以提高网络性能。
进一步地,在上述方法实施例的基础上,在确定所有预设正则表达式的数量是否大于预设阈值之前,还可以对每个预设正则表达式及目标网络数据包进行格式化处理。相应的处理可以如下:对每个预设正则表达式及目标网络数据包进行格式化处理,其中,格式化处理至少包括:将每个预设正则表达式及目标网络数据包中的字母转换为小写、将每个预设正则表达式及目标网络数据包中的非字节码转化为字节码中的一种处理。
在实施中,在确定所有预设正则表达式的数量是否大于预设阈值之前,可以先确定每个预设正则表达式是否忽略字母的大小写、目标网络数据包中的所有字符串构成的字符集中是否有非字节码等情况,并根据确定结果对每个预设正则表达式及目标网络数据包进行字母的大小写转换、非字节码到字节码的转换等格式化处理。具体的,首先,可以依次确定每个预设正则匹配是否忽略字母的大小写,如果是,则可以将忽略字母的大小写的所有预设正则表达式,及目标网络数据包中的所有字符串中的大写字母都转换为小写字母,如可以将“^aBcD”转化为“^abcd”。然后,可以确定目标网络数据包的所有字符串中是否存在非字节码,如果存在,则需要将每个预设正则表达式和目标网络数据包的所有字符串中的非字节码,都转换为字节码。如,“.*中国.*chinese”等则需要被转换为字节码数组。这样,对每个预设正则表达式及目标网络数据包进行格式化处理,如将非字节码转化为字节码等处理,可以提高本方法的执行效率,从而进一步地提高匹配性能,提高网络安全检测结果的效率,进而进一步提高网络性能。
进一步地,在上述方法实施例的基础上,可以通过提取每个正则表达式的有效指纹数据,基于前述每个正则表达式的有效指纹数据构建目标过滤器,相应的,上述步骤S102的部分处理可以如下:提取每个预设正则表达式的有效指纹数据,并按照预设字符串长度将每个预设正则表达式的有效指纹数据,划分为至少一个定长有效指纹,并为每个定长有效指纹设置一个对应的索引值;基于每个预设正则表达式对应的所有定长有效指纹,生成目标定长指纹集合,并基于目标定长指纹集合构建目标过滤器。
其中,所述有效指纹数据指可以代表每个正则表达式的特征的指纹数据集合。
所述定长有效数据指字节数相同的有效指纹数据。
所述预设字节长度指预先设定的每个定长有效数据的字节数,如可以设置为3字节,即每个定长有效指纹中包含的字节数为3字节。
所述索引值指每个定长有效数据对应的索引值,如可以设置为编号0、1、2等。
所述目标定长指纹集合指所有正则表达式对应的所有定长有效数据构成的指纹数据集合。
在实施中,可以先提取每个预设正则表达式的有效指纹数据,再对每个有效指纹数据进行划分,得到每个有效指纹数据对应的至少一个定长有效指纹,并按照划分顺序为每个定长有效指纹设置一个对应的索引值,如可以按序设置成编号0、1、2……等如可以按照需要预先设定定长有效数据的字节长度。然后,再基于前述所有定长有效数据组成目标定长指纹集合,并基于该目标定长指纹集合构建目标过滤器,以基于该目标过滤器进行网络数据包的检测。以预设字节长度为3字节为例,若某个有效指纹数据为14字节,则可以将该有效指纹数据划分为5个定长有效指纹如分别为A、B、C、D、E,并按序依次为每个定长有效指纹A、B、C、D、E,分别设置对应的索引值为0、1、2、3、4。然后,可以基于该前述定长有效指纹构成目标定长指纹集合{A,B,C,D,E}。这样,将每个预设正则表达式的有效指纹数据划分为定长有效指纹,基于定长有效指纹构建目标过滤器,可以通过定长有效指纹限定目标过滤器的最大深度,从而可以控制目标过滤器占用的内存空间,提高目标过滤器的内存占用率。
需要说明的是,在保证每个有效指纹数据对应的定长有效指纹可以表示对应的正则表达式的语义的同时,为了方便进行数据处理,提高处理效率,可以先对每个预设正则表达式对应的所有定长有效指纹中的字符进行去重处理,删除字节数小于预设再设置对应的索引值。以某预设正则表达式对应的所有定长有效指纹为E1、E2、E3为例,假设E1和E2中出现了一个重复字符,则可以选择将E2中的该重复字符删掉,由于此时E2中的字节数小于3字节,故可以将E2删掉,为E1和E3分别设置对应的索引值分别为0和1,并由E1和E3构成目标定长指纹集合。
进一步地,在上述方法实施例的基础上,可以根据当前编译时间和内存占用率是否满足预设条件,确定是构建DFA状态还是构建混合自动机,相应的,上述步骤S103的部分处理可以如下:将每个预设正则表达式转化为非确定有穷自动机NFA状态,基于所有NFA状态中的多个NFA状态生成第一确定有穷自动机DFA状态,并确定当前编译时间和内存占用是否满足预设限制条件;如果是,且需要创建第一DFA状态对应的子DFA状态时,则创建第一DFA状态对应的子DFA状态,并判断是否需要创建每个子DFA状态对应的有次级子DFA状态;否则,将第一DFA状态确定为目标有限自动机。
其中,所述预设限制条件指预先设定的允许的当前编译时间和内存占用率的上限。
所述第一DFA状态指基于所有NFA状态中的多个NFA状态生成的DFA状态。
所述子DFA状态指第一DFA状态对应的下一层级的DFA状态。
所述次级子DFA状态指子DFA状态对应的下一层级的子DFA状态。
在实施中,当所有预设正则表达式的数量小于预设阈值时,可以先将每个正则表达式转化为对应的抽象语法树,再将每个抽象语法树转化为对应NFA状态,以得到每个正则表达式对应的NFA状态,并通过子集构造法基于前述所有NFA状态中的多个NFA状态生成第一DFA状态。然后,可以确定当前编码时间和内存占用是否满足前述预设限制条件。如果是(即满足预设限制条件),且需要创建第一DFA状态对应的子DFA状态时(即前述第一DFA状态对应有子DFA状态时),则可以创建前述第一DFA状态对应的子DFA状态,其中,第一DFA状态对应的子DFA状态可以是一个或者多个。然后,可以判断前述每个子DFA状态是否还对应有次级子DFA状态,以确定是否需要创建每个子DFA状态对应的下一层级的子DFA状态。以第一DFA状态为0为例,假设第一DFA对应有子DFA状态1和2,则可以为第一DFA创建两个子DFA状态1和2,然后,再先后分别判断子DFA状态1和2是否对应有次级子DFA状态。否则(即不满足预设限制条件),则可以将前述第一DFA状态确定为目标有限自动机。可以理解,在判断是否需要创建第一DFA状态对应的子DFA状态时,可以通过判断第一DFA状态是否存在到其他DFA状态的有效跳转来判断第一DFA状态是否有子DFA状态,如假设第一DFA状态不存在到其他DFA状态的有效跳转,则表示该第一DFA状态没有对应的子DFA状态。这样,在满足预设限制条件时,尽可能多的创建DFA状态,可以使得在通过该目标有限自动机对网络数据包进行网络安全检测时,更多的采用DFA执行网络安全检测,从而可以进一步提高检测结果的准确性,提高网络性能。
需要说明的是,当不存在第一DFA状态对应的子DFA状态时,则可以基于该第一DFA状态及前述NFA状态中的除用于构造第一DFA状态的多个NFA状态之外的所有NFA状态,生成混合有限自动机,将该混合有限自动机确定为目标有限自动机,以基于该目标混合有限自动机执行匹配任务。
进一步地,在上述方法实施例的基础上,可以根据子DFA状态是否有次级子DFA状态确定是否继续创建次级子DFA状态,相应的上述处理可以如下:如果需要创建每个子DFA状态对应的次级子DFA状态,则创建每个子DFA状态对应的所有次级子DFA状态,并判断是否需要创建每个次级子DFA状态对应的下一层级的次级子DFA状态;如果否,则基于第一DFA状态、每个子DFA状态、每个次级子DFA状态,及除多个NFA状态之外的所有NFA状态,生成混合有限自动机,并将混合有限自动机确定为目标有限自动机。
其中,下一层级的次级子DFA状态指次级子DFA状态对应的下一层级的子DFA状态。
在实施中,如果存在与上述每个子DFA状态对应的次级子DFA状态,则可以创建每个子DFA状态对应的所有次级子DFA状态。然后,可以再判断是否存在前述每个次级子DFA状态对应的下一层级的次级子DFA状态,以确定是否需要继续创建下一层级的子DFA状态。仍以目标DFA创建两个子DFA状态分别为1和2为例,假设子DFA状态1对应的次级子DFA状态为3、4、5,子DFA状态2对应的次级子DFA状态为6、7。则可以先创建子DFA状态1对应的次级子DFA状态为3、4、5,然后,再创建子DFA状态2对应的次级子DFA状态为6、7。之后,再按照顺序分别判断前述次级子DFA状态3、4、5及次级子DFA状态6、7是否对应有下一层级的次级子DFA状态。如果是,则参照前述过程继续创建,否则,则可以基于第一DFA状态、每个子DFA状态、每个次级子DFA状态,并按照前述各个DFA状态对应的层级从小到大的顺序构建头部DFA,并基于除部分NFA状态之外的所有NFA状态构建尾部NFA。然后基于前述头部DFA和尾部NFA生成混合有限自动机(其结构可以如图2所示),并将混合有限自动机确定为目标有限自动机,以对网络数据包进行检测。可以理解,判断是否需要创建每个子DFA状态对应的次级子DFA状态的方法,与判断是否需要创建第一DFA状态对应的子DFA状态的方法类似,在此不再赘述。同时,构建混合有限自动机时采用了分层模式,也就是说,当出现某个子DFA状态不存在“次级子DFA状态”时,则该子DFA状态后续的次级子DFA状态均不存在,即当判断某个子DFA状态/次级子DFA状态不存在下一层级的子DFA状态时,该子DFA状态/次级子DFA状态后续的下一层级的子DFA状态均不存在。这样,基于头部DFA和尾部NFA构建目标有限自动机,在通过该目标有限自动机对网络数据包进行网络安全检测时,可以更多的通过头部DFA进行网络安全检测,从而可以进一步提高网络安全检测结果的准确性,提高网络性能。
需要说明的是,为防止在构建目标有限自动机时,占用过多的内存空间和CPU资源,在每次创建DFA状态对应的子DFA状态之前,都可以先判断当前的内存空间和CPU占用率是否满足预设限制条件。若满足,则继续创建子DFA状态,若不满足,则停止创建。
如图3所示,本发明实施例提供了一个优选实施例的流程图。首先,可以将每个预设正则表达式转换抽象语法树。然后,可以用Thompson算法将每个抽象语法树转化为NFA状态,再基于部分NFA状态通过子集构造法生成第一DFA状态。之后,将该第一DFA状态加入队列,并判断当前是否满足预设限制条件,如果不满足,则基于第一DFA状态及未用到的NFA状态创建混合有限自动机(目标有限自动机),如果满足,则判断队列中是否存在DFA状态,此时队列中有第一DFA状态,故而,可以创建该第一DFA状态对应的子DFA状态,将子DFA状态加入临时队列,并将第一DFA状态从队列中删除。之后,再判断当前是否满足预设限制条件,同样的,如果不满足,则基于以创建的每个DFA状态及未用到的NFA状态创建混合有限自动机。如果满足,则判断队列中是否存在DFA状态,此时第一DFA状态已从队列删除,队列为空。然后,可以判断临时队列是否有DFA状态,由于前边已将子DFA状态加入临时队列,所以此时临时队列有DFA状态。之后,可以将临时队列的DFA状态移入队列中,再判断当前是否满足预设限制条件,以此类推。直至不满足预设限制条件或者队列和临时队列均无DFA状态,则基于目标DFA状态、前述创建的各个子DFA状态及未用到的NFA状态创建混合有限自动机(目标有限自动机)。
进一步地,在上述方法实施例的基础上,可以基于目标过滤器对目标网络数据包进行检测,相应的,上述步骤S102的部分处理可以如下:通过目标过滤器对目标网络数据进行过滤检测,得到待验证正则表达式及待验证正则表达式对应的所有定长有效指纹;判断待验证正则表达式映射中,是否存在待验证正则表达式对应的目标键;如果是,且目标键对应的目标索引值为待验证正则表达式对应的当前定长有效指纹的索引值减一,则将目标索引值设置为当前定长有效指纹的索引值;如果否,且待验证正则表达式对应的第一个定长有效指纹的索引值为零,则将待验证正则表达式添加至待验证正则表达式映射,并将待验证正则表达式对应的索引值设置为零。
其中,所述待验证正则表达式指已经通过目标过滤器的过滤检测,且还需通过NFA/DFA正则匹配引擎进行匹配的正则表达式。
所述待验证正则表达式映射指用于存储待验证正则表达式及其定长有效指纹的映射。
所述目标键指待验证正则表达式映射中与匹配出的待验证正则表达式对应的键。
所述目标索引值指待验证正则表达式映射中与目标键对应的索引值。
所述第一个定长有效指纹指所述所有定长有效指纹对应的索引值中的最小值对应的定长有效指纹。
在实施中,在构建出目标过滤器之后,可以基于该目标过滤器对目标网络数据包进行过滤检测。具体的,可以基于目标过滤器对目标网络数据包中的所有待匹配字符串进行匹配,得到待验证正则表达式,及该待验证正则表达式对应的所有定长有效指纹的索引值。然后,可以创建一个待验证正则表达式映射,用于存储待验证正则表达式及其定长有效指纹,该待验证正则表达式映射的键可以设置为待验证正则表达式,该待验证正则表达式映射的值可以设置为定长有效指纹的索引值,该映射的创建可以理解为创建了一个存储结构但并未放置实质的存储内容,类似于先创建了一个文件夹(待验证正则表达式映射),并可以对该文件夹命名(待验证正则表达式)。该文件夹中可以用于存放具体文件内容(定长有效指纹的索引值)。然后,可以判断前述待验证正则表达式映射中,是否存在与待验证正则表达式对应的目标键。如果不存在,则可以将前述待验证正则表达式及其具体内容添加至前述待验证正则表达式映射中,并将对应的值设置为‘0’;如果存在,则可以按照定长有效指纹对应的索引值的顺序,依次与前述待验证正则表达式映射中该待验证正则表达式对应的目标索引值进行比较。若当前定长有效指纹对应的索引值比目标索引值大‘1’,则可以将前述待验证正则表达式映射中该待验证正则表达式对应的目标索引值,设置为当前定长有效指纹对应的索引值;若当前定长有效指纹对应的索引值不比目标索引值大‘1’,则不进行任何其他操作。以此类推,直到待验证正则表达式对应的当前定长有效指纹的索引值,为该待验证正则表达式对应的所有定长有效指纹的索引值中的最大值时,进入验证(即通过NFA/DFA正则匹配引擎进一步进行精确匹配),得到检测结果。这样,按照每个定长有效指纹对应的索引值的大小顺序进行有效指纹比较,可以提高过滤结果的准确性,从而进一步提高网络安全检测结果的准确性,进而进一步提高网络性能。
进一步地,在上述方法实施例的基础上,可以基于前述构建的混合有限自动机逐层执行匹配任务,相应的,上述步骤S103的部分处理可以如下:通过目标有限自动机的当前DFA状态执行匹配任务,并确定当前DFA状态是否为未完成DFA状态;如果是,则判断是否存在与未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定下一级DFA状态是否为未完成DFA状态。
所述目标尾部NFA状态指目标有限自动机的尾部NFA中存在的与前述最后一层的DFA状态对应的NFA状态。
在实施中,可以基于上述生成的目标有限自动机(混合有限自动机)中的各层DFA状态及尾部NFA状态逐层执行匹配任务。具体的,首先,可以由上述目标有限自动机的头部半成品DFA中的第一层DFA状态执行匹配任务。然后再判断前述第一层DFA状态是否被标记为未完成DFA状态。如果第一层DFA状态已经被标记为未完成DFA状态,则可以认为该层DFA状态也是头部半成品DFA中的最后一层。然后,可以判断目标有限自动机的尾部NFA中是否存在与前述最后一侧的DFA状态对应的目标尾部NFA状态,以确定是否由尾部NFA继续执行匹配任务。如果第一层DFA状态被标记为已完成DFA状态,而不是未完成状态,则可以继续由第二层级的DFA状态执行匹配任务,再确定第二层级的DFA状态是否被标记为未完成状态,以此类推,直至判断到某一层级的DFA状态是未完成状态,再判断混合有限自动机的尾部NFA中是否存在,以确定是否由尾部NFA继续执行匹配任务。这样,通过目标有限自动机的头部半成品DFA中的多层DFA状态对网络数据包进行多次匹配,可以有效过滤掉网络数据包中的大量字符串,从而可以进一步提高对网络数据包进行网络安全检测的检测结果的准确性,提高网络性能。
进一步地,在上述实施例的基础上,在当前DFA状态的层级被标记为未完成DFA状态时,则需要判断是否存在与该DFA状态对应的尾部NFA状态。相应的处理可以如下:若是,则获取目标尾部NFA状态,并确定与目标尾部NFA状态对应的DFA状态,并由与目标尾部NFA状态对应的DFA状态执行匹配任务;否则,停止匹配。
在实施中,在基于目标有限自动机执行匹配任务时,若当前DFA状态的层级被标记为未完成DFA状态时,则需要判断该目标有限自动机的尾部NFA中,是否存在与该DFA状态对应的目标尾部NFA状态。具体的,如果目标有限自动机的尾部NFA中存在与该DFA状态对应的目标尾部NFA状态,则可以确定前述目标有限自动机的头部DFA中与该目标尾部NFA状态对应的DFA状态,由该DFA状态继续执行匹配任务。如果目标混合有限自动机的尾部NFA中不存在与该DFA状态对应的目标尾部NFA状态,则返回结果false,并停止匹配,匹配任务结束。可以理解,当目标有限自动机的头部DFA中不存在与该目标尾部NFA状态对应的DFA状态时,则可以基于该目标尾部NFA状态对目标网络数据包进行检测。这样,通过尽可能将NFA转化到DFA执行匹配任务,可以进一步提高匹配性能,进而进一步提高检测结果的准确性,提高网络性能。
进一步地,在上述方法实施例的基础上,本发明实施例还提供了一种面向网络安全的正则表达式的匹配装置,如图4所示,所述装置,包括获取模块401和生成模块402,其中:
所述获取模块401,用于获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;
所述生成模块402,用于如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测;
如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测。
进一步地,所述获取模块401,还用于:
对每个预设正则表达式及目标网络数据包进行格式化处理,其中,所述格式化处理包括:将所述每个预设正则表达式及目标网络数据包中的字母转换为小写、将所述每个预设正则表达式及目标网络数据包中的非字节码转化为字节码中的至少一种处理。
进一步地,所述生成模块402,还用于:
提取每个预设正则表达式的有效指纹数据,并按照预设字符串长度将所述每个预设正则表达式的有效指纹数据,按照预设字节长度划分为至少一个定长有效指纹,并为每个定长有效指纹设置一个对应的索引值,其中,所述有效指纹数据指代表每个正则表达式的特征的指纹数据集合;
基于所述每个预设正则表达式对应的所有定长有效指纹,生成目标定长指纹集合,并基于所述目标定长指纹集合构建目标过滤器。
进一步地,所述生成模块402,还用于:
将每个预设正则表达式转化为非确定有穷自动机NFA状态,基于所有NFA状态中的多个NFA状态生成第一确定有穷自动机DFA状态,并确定当前编译时间和内存占用是否满足预设限制条件;
如果是,且需要创建所述第一DFA状态对应的子DFA状态时,创建所述第一DFA状态对应的子DFA状态,并判断是否需要创建每个子DFA状态对应的次级子DFA状态;否则,将所述第一DFA确定为目标有限自动机。
进一步地,所述生成模块402,还用于:
如果需要创建每个子DFA状态对应的次级子DFA状态,则创建每个子DFA状态对应的所有次级子DFA状态,并判断是否需要创建每个次级子DFA状态对应的下一层级的次级子DFA状态;
如果不需要创建每个次级子DFA状态对应的下一层级的次级子DFA状态,则基于所述第一DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述多个NFA状态之外的所有NFA状态,生成混合有限自动机,并将所述混合有限自动机确定为目标有限自动机。
进一步地,如图5所示,所述装置还包括检测模块403,用于:
通过所述目标过滤器对目标网络数据进行过滤检测,得到待验证正则表达式及所述待验证正则表达式对应的所有定长有效指纹,其中,所述待验证正则表达式指已经通过目标过滤器的过滤检测,且还需通过NFA/DFA正则匹配引擎进行匹配的正则表达式;
判断待验证正则表达式映射中,是否存在所述待验证正则表达式对应的目标键,其中,待验证正则表达式映射指用于存储所述待验证正则表达式及所述待验证正则表达式对应的定长有效指纹的映射;
如果是,且所述目标键对应的目标索引值为所述待验证正则表达式对应的当前定长有效指纹的索引值减一,则将所述目标索引值设置为当前定长有效指纹的索引值;
如果否,且所述待验证正则表达式对应的第一个定长有效指纹的索引值为零,则将所述待验证正则表达式添加至所述待验证正则表达式映射,并将所述待验证正则表达式对应的索引值设置为零,其中,所述第一个定长有效指纹指所述所有定长有效指纹对应的索引值中的最小值对应的定长有效指纹。
进一步地,所述检测模块403,用于:
通过所述目标有限自动机的当前DFA状态对所述目标网络数据包进行检测,并确定当前DFA状态是否为未完成DFA状态;
如果是,则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定所述下一级DFA状态是否为未完成DFA状态。
进一步地,所述检测模块403,用于:
若是,则获取所述目标尾部NFA状态,并确定与所述目标尾部NFA状态对应的DFA状态,并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务;否则,停止匹配。
本实施例所述的面向网络安全的正则表达式的匹配装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
如图6所示,本发明实施例还提供了一种电子设备,所述电子设备可以包括:处理器(processor)601、存储器(memory)602和总线603;
其中,
所述处理器601和存储器602通过所述总线603完成相互间的通信;
所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法。
此外,上述的存储器602中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述方法实施例所提供的方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种面向网络安全的正则表达式的匹配方法,其特征在于,包括:
获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;
如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测,其中,所述目标过滤器是基于所有预设正则表达式构建的AC自动匹配方式而得到的过滤器;
如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测;
其中,所述基于所述所有预设正则表达式构建目标过滤器,包括:
提取每个预设正则表达式的有效指纹数据,并按照预设字符串长度将所述每个预设正则表达式的有效指纹数据,按照预设字节长度划分为至少一个定长有效指纹,并为每个定长有效指纹设置一个对应的索引值,其中,所述有效指纹数据指代表每个正则表达式的特征的指纹数据集合;
基于所述每个预设正则表达式对应的所有定长有效指纹,生成目标定长指纹集合,并基于所述目标定长指纹集合构建目标过滤器。
2.根据权利要求1所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述确定所有预设正则表达式的数量是否大于预设阈值之前,还包括:
对每个预设正则表达式及目标网络数据包进行格式化处理,其中,所述格式化处理包括:将所述每个预设正则表达式及目标网络数据包中的字母转换为小写、将所述每个预设正则表达式及目标网络数据包中的非字节码转化为字节码中的至少一种处理。
3.根据权利要求1所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述基于所述所有预设正则表达式,构建目标有限自动机,包括:
将每个预设正则表达式转化为非确定有穷自动机NFA状态,基于所有NFA状态中的多个NFA状态生成第一确定有穷自动机DFA状态,并确定当前编译时间和内存占用是否满足预设限制条件;
如果是,且需要创建所述第一DFA状态对应的子DFA状态时,则创建所述第一DFA状态对应的子DFA状态,并判断是否需要创建每个子DFA状态对应的次级子DFA状态;否则,将所述第一DFA状态确定为目标有限自动机。
4.根据权利要求3所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述判断是否需要创建每个子DFA状态对应的次级子DFA状态,包括:
如果需要创建每个子DFA状态对应的次级子DFA状态,则创建每个子DFA状态对应的所有次级子DFA状态,并判断是否需要创建每个次级子DFA状态对应的下一层级的次级子DFA状态;
如果不需要创建每个次级子DFA状态对应的下一层级的次级子DFA状态,则基于所述第一DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述多个NFA状态之外的所有NFA状态,生成混合有限自动机,并将所述混合有限自动机确定为目标有限自动机。
5.根据权利要求1所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述基于所述目标过滤器对目标网络数据包进行检测,包括:
通过所述目标过滤器对目标网络数据包进行过滤检测,得到待验证正则表达式及所述待验证正则表达式对应的所有定长有效指纹,其中,所述待验证正则表达式指已经通过目标过滤器的过滤检测,且还需通过NFA/DFA正则匹配引擎进行匹配的正则表达式;
判断待验证正则表达式映射中,是否存在所述待验证正则表达式对应的目标键,其中,待验证正则表达式映射指用于存储所述待验证正则表达式及所述待验证正则表达式对应的定长有效指纹的映射;
如果是,且所述目标键对应的目标索引值为所述待验证正则表达式对应的当前定长有效指纹的索引值减一,则将所述目标索引值设置为当前定长有效指纹的索引值;
如果否,且所述待验证正则表达式对应的第一个定长有效指纹的索引值为零,则将所述待验证正则表达式添加至所述待验证正则表达式映射,并将所述待验证正则表达式对应的索引值设置为零,其中,所述第一个定长有效指纹指所述所有定长有效指纹对应的索引值中的最小值对应的定长有效指纹。
6.根据权利要求4所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述基于所述目标有限自动机对所述目标网络数据包进行检测,包括:
通过所述目标有限自动机的当前DFA状态对所述目标网络数据包进行检测,并确定当前DFA状态是否为未完成DFA状态;
如果是,则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定所述下一级DFA状态是否为未完成DFA状态。
7.根据权利要求6所述的面向网络安全的正则表达式的匹配方法,其特征在于,所述判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态,包括:
若是,则获取所述目标尾部NFA状态,并确定与所述目标尾部NFA状态对应的DFA状态,并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务;否则,停止匹配。
8.一种面向网络安全的正则表达式的匹配装置,其特征在于,包括获取模块和生成模块,其中:
所述获取模块,用于获取所有预设正则表达式,并确定所述所有预设正则表达式的数量是否大于预设阈值;
所述生成模块,用于如果是,则基于所述所有预设正则表达式构建目标过滤器,以基于所述目标过滤器对目标网络数据包进行检测,其中,所述目标过滤器是基于所有预设正则表达式构建的AC自动匹配方式而得到的过滤器;
如果否,则基于所述所有预设正则表达式,构建目标有限自动机,以基于所述目标有限自动机对所述目标网络数据包进行检测;
其中,所述生成模块还用于:
提取每个预设正则表达式的有效指纹数据,并按照预设字符串长度将所述每个预设正则表达式的有效指纹数据,按照预设字节长度划分为至少一个定长有效指纹,并为每个定长有效指纹设置一个对应的索引值,其中,所述有效指纹数据指代表每个正则表达式的特征的指纹数据集合;
基于所述每个预设正则表达式对应的所有定长有效指纹,生成目标定长指纹集合,并基于所述目标定长指纹集合构建目标过滤器。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的面向网络安全的正则表达式的匹配方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的面向网络安全的正则表达式的匹配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911422017.5A CN111181980B (zh) | 2019-12-31 | 2019-12-31 | 一种面向网络安全的正则表达式的匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911422017.5A CN111181980B (zh) | 2019-12-31 | 2019-12-31 | 一种面向网络安全的正则表达式的匹配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111181980A CN111181980A (zh) | 2020-05-19 |
CN111181980B true CN111181980B (zh) | 2022-05-10 |
Family
ID=70655975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911422017.5A Active CN111181980B (zh) | 2019-12-31 | 2019-12-31 | 一种面向网络安全的正则表达式的匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111181980B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111818067B (zh) * | 2020-07-14 | 2022-07-15 | 绿盟科技集团股份有限公司 | 流量特征提取方法及装置 |
CN113190200B (zh) * | 2021-05-10 | 2023-04-07 | 郑州魔王大数据研究院有限公司 | 展会数据安全的防护方法及装置 |
CN115796166B (zh) * | 2023-02-06 | 2023-05-09 | 华侨大学 | 一种智慧物流控制系统的正则表达式测试方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857493A (zh) * | 2012-06-30 | 2013-01-02 | 华为技术有限公司 | 内容过滤方法和装置 |
CN102902928A (zh) * | 2012-09-21 | 2013-01-30 | 杭州迪普科技有限公司 | 一种网页防篡改方法及装置 |
CN106911647A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 一种检测网络攻击的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043425B2 (en) * | 2013-07-29 | 2015-05-26 | Google Inc. | Resource locator remarketing |
US10339141B2 (en) * | 2014-10-03 | 2019-07-02 | The Regents Of The University Of Michigan | Detecting at least one predetermined pattern in stream of symbols |
-
2019
- 2019-12-31 CN CN201911422017.5A patent/CN111181980B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857493A (zh) * | 2012-06-30 | 2013-01-02 | 华为技术有限公司 | 内容过滤方法和装置 |
CN102902928A (zh) * | 2012-09-21 | 2013-01-30 | 杭州迪普科技有限公司 | 一种网页防篡改方法及装置 |
CN106911647A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 一种检测网络攻击的方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于DFA的入侵检测方法研究;云雷等;《电子质量 》;20130720;第7-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111181980A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106709345B (zh) | 基于深度学习方法推断恶意代码规则的方法、系统及设备 | |
CN111181980B (zh) | 一种面向网络安全的正则表达式的匹配方法及装置 | |
CN109784056B (zh) | 一种基于深度学习的恶意软件检测方法 | |
CN111177491A (zh) | 正则表达式的匹配方法、装置、电子设备及存储介质 | |
CN112492059A (zh) | Dga域名检测模型训练方法、dga域名检测方法、装置及存储介质 | |
CN104618132A (zh) | 一种应用程序识别规则生成方法和装置 | |
CN111600919A (zh) | 基于人工智能的web检测方法和装置 | |
CN112989348B (zh) | 攻击检测方法、模型训练方法、装置、服务器及存储介质 | |
CN108718306A (zh) | 一种异常流量行为判别方法和装置 | |
CN116366377B (zh) | 恶意文件检测方法、装置、设备及存储介质 | |
CN111581638A (zh) | 一种开源软件的安全分析方法及装置 | |
CN109800337B (zh) | 一种适用于大字母表的多模式正则匹配算法 | |
CN111222022A (zh) | 一种基于正则表达式的匹配方法及装置 | |
CN111680303B (zh) | 漏洞扫描方法、装置、存储介质及电子设备 | |
CN111737694B (zh) | 一种基于行为树的恶意软件同源性分析方法 | |
CN111310186A (zh) | 混淆命令行检测方法、装置及系统 | |
CN111078963A (zh) | Nfa到dfa的转换方法及装置 | |
CN113378156B (zh) | 一种基于api的恶意文件检测方法和系统 | |
CN113688240A (zh) | 威胁要素提取方法、装置、设备及存储介质 | |
CN112994931B (zh) | 一种规则匹配的方法及其设备 | |
CN111625825B (zh) | 一种病毒检测方法、装置、设备及存储介质 | |
CN114117419A (zh) | 一种模板注入攻击的检测方法、装置、设备、存储介质 | |
CN114301671A (zh) | 网络入侵检测方法、系统、设备及存储介质 | |
CN112686029A (zh) | 用于数据库审计系统的sql新语句识别方法及装置 | |
CN113360522A (zh) | 一种快速识别敏感数据的方法及装置 |
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 | ||
CB02 | Change of applicant information |
Address after: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088 Applicant after: Qianxin Technology Group Co.,Ltd. Applicant after: Qianxin Wangshen information technology (Beijing) Co., Ltd Address before: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088 Applicant before: Qianxin Technology Group Co.,Ltd. Applicant before: Wangshen information technology (Beijing) Co., Ltd |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |