CN111262589A - 一种dfa空间压缩方法及装置 - Google Patents

一种dfa空间压缩方法及装置 Download PDF

Info

Publication number
CN111262589A
CN111262589A CN202010034061.5A CN202010034061A CN111262589A CN 111262589 A CN111262589 A CN 111262589A CN 202010034061 A CN202010034061 A CN 202010034061A CN 111262589 A CN111262589 A CN 111262589A
Authority
CN
China
Prior art keywords
dfa
nfa
state
jump
states
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
Application number
CN202010034061.5A
Other languages
English (en)
Other versions
CN111262589B (zh
Inventor
王彬
覃永靖
程诗尧
马江波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qianxin Technology Group Co Ltd, Secworld Information Technology Beijing Co Ltd filed Critical Qianxin Technology Group Co Ltd
Priority to CN202010034061.5A priority Critical patent/CN111262589B/zh
Publication of CN111262589A publication Critical patent/CN111262589A/zh
Application granted granted Critical
Publication of CN111262589B publication Critical patent/CN111262589B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明实施例提供一种DFA空间压缩方法及装置,所述方法包括:获取用于网络安全规则引擎的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩,以获取与各NFA状态分别对应的第一有序数组列表;确定与各NFA状态分别对应的各DFA状态,根据各DFA状态与各NFA状态之间的对应关系,合并对应同一DFA状态的全部NFA状态的第一有序数组列表,以实现预处理所述DFA的NFA状态集,并根据所述NFA状态集将所述NFA转换为所述DFA;对所述DFA中的各DFA状态之间的跳转关系进行压缩,以获取与各DFA状态分别对应的第二有序数组列表。所述装置执行上述方法。本发明实施例提供的DFA空间压缩方法及装置,节省了DFA存储空间,提升了NFA到DFA转换速度。

Description

一种DFA空间压缩方法及装置
技术领域
本发明涉及网络安全技术领域,尤其涉及一种DFA空间压缩方法及装置。
背景技术
随着网络技术的发展,通过输入网包传输的数据量日益增加,数据较大的正则表达式广泛用于网络安全规则引擎,并且随着网络带宽和流量的急剧提升,对网络安全规则引擎的正则表达式匹配性能要求越来越高。正则表达式匹配引擎,需将正则表达式对应的非确定有穷自动机(Non-deterministic finite automaton,简称“NFA”)转换为确定有穷自动机(Deterministic finite automaton,简称“DFA”),然后,采用处理速度较快的DFA执行匹配任务。然而,DFA较NFA具有极高的空间复杂度,进而影响了DFA在大规模复杂正则表达式情形下的使用。
“基于DFA匹配技术”较“基于NFA匹配技术”性能较好,但是,DFA的空间利用率较小,容易发生DFA状态爆炸。如何压缩自动机空间,及提高NFA到DFA的转换速度,是实现高性能正则表达式匹配引擎的一大挑战。现有技术中有限自动机状态转移采用二维矩阵存储结构,其中,二维矩阵的行表示有限自动机状态,二维矩阵的列表示跳转字符。但是基于二维矩阵存储结构进行的有限自动机压缩方法,压缩比例较低,有限自动机空间利用率较低。
发明内容
针对现有技术存在的问题,本发明实施例提供一种DFA空间压缩方法及装置。
本发明实施例提供一种DFA空间压缩方法,包括:
获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
其中,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,包括:
删除所述NFA中的各NFA状态中没有发生跳转关系的无效跳转字符;
和/或,删除所述NFA中的各NFA状态中跳转字符区间中的中间字符;所述中间字符是在所述跳转字符区间中的、除两端端点跳转字符之外的所有字符。
其中,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,还包括:
采用链式列表存储删除所述无效跳转字符和/或所述中间字符后的各NFA状态之间的跳转关系;
将基于链式列表存储的各NFA状态之间的跳转关系合并到第一有序数组列表。
其中,所述对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩,包括:
分别存储各DFA状态之间的跳转关系;
将存储的各DFA状态之间的跳转关系合并到第二有序数组列表。
其中,所述根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA,包括:
获取同一DFA状态对应的活跃NFA状态集,并根据所述活跃NFA状态集将所述NFA转换为DFA;所述活跃NFA状态集包括由与所述同一DFA状态相对应的连续跳转字符表示的NFA状态集合。
其中,所述根据所述活跃NFA状态集将所述NFA转换为DFA,包括:
根据所述活跃NFA状态集优化子集构造法的性能;
采用优化性能后的子集构造法将所述NFA转换成DFA。
其中,所述获取同一DFA状态对应的活跃NFA状态集的步骤之后,所述DFA空间压缩方法还包括:
对同一DFA状态中的连续跳转字符执行一次Radix树检索。
其中,在对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩的步骤之后,所述DFA空间压缩方法还包括:
根据所述网络安全规则引擎对输入网包进行正则表达式匹配处理;
根据所述第二有序数组列表转发或存储所述输入网包。
本发明实施例提供一种DFA空间压缩装置,包括:
第一压缩单元,用于获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
优化单元,用于确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
第二压缩单元,用于对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,
所述处理器执行所述计算机程序时实现如下方法步骤:
获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时实现如下方法步骤:
获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本发明实施例提供的DFA空间压缩方法及装置,通过NFA空间压缩、优化NFA到DFA转换和DFA空间压缩,不但解决DFA空间复杂度较高,NFA到DFA转换速度较慢的问题,而且采用合理的存储结构,节省了DFA存储空间,提升了NFA到DFA转换速度,还实现了网络安全。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明DFA空间压缩方法实施例流程图;
图2为本发明实施例NFA状态和DFA状态示意图;
图3为本发明DFA空间压缩方法另一实施例流程图;
图4为本发明DFA空间压缩装置实施例结构示意图;
图5为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明DFA空间压缩方法实施例流程图,如图1所示,本发明实施例提供的一种DFA空间压缩方法,包括以下步骤:
S101:获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩。
具体的,获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩。执行该方法步骤的可以是计算机设备。具体的,可以获取用于网络安全规则引擎的正则表达式对应的NFA。
对各NFA状态之间的跳转关系进行压缩,具体可以包括:
删除所述NFA中的各NFA状态中没有发生跳转关系的无效跳转字符;和/或,删除所述NFA中的各NFA状态中跳转字符区间中的中间字符;所述中间字符是在所述跳转字符区间中的、除两端端点跳转字符之外的所有字符。举例说明如下:NFA中的各NFA状态之间的跳转关系如表1所示:
表1
Figure BDA0002365387380000051
进行说明如下:NFA状态1通过字符a跳转到NFA状态3,通过字符c或字符d跳转到NFA状态3,即对于NFA状态1,跳转字符区间为字符c-字符d、字符e-字符f,但这两个区间都不包含中间字符;NFA状态2只有通过字符c才跳转到NFA状态1,即对于NFA状态2,除去字符c以外都是无效跳转字符,因此,删除字符a-b,字符d-g,对于NFA状态4,跳转字符区间为字符c-字符d、字符e-字符g,中间字符为字符f,因此,删除字符f。
该步骤实现的是,NFA空间压缩,用于构造压缩比例较高的“NFA状态转移”存储数据结构。本步骤保持NFA状态数目不变,只针对NFA状态之间的跳转关系做优化。
现有技术中NFA二维矩阵存储结构,行表示NFA状态,列表示跳转字符。但是,正则表达式中的跳转字符可以分为两类:第一类是单个跳转字符,比如:ab;第二类是跳转字符区间(包含多个连续字符),比如:[a-h]。
基于上述理论,NFA状态跳转边分“单个跳转字符”和“跳转字符区间”两种情况分别存储,其中,“跳转字符区间”可以合并为一条存储记录,参照表1,例如,对于NFA状态1为(c-d,3)。但是,“无效跳转字符”及“跳转字符区间”中的中间字符无须记录,例如,对于NFA状态2,只需记录(c,1),其他都是无效跳转字符;对于NFA状态4,只需记录(e-g,1),中间字符f无须记录。
对各NFA状态之间的跳转关系进行压缩,具体还可以包括:
采用链式列表存储删除所述无效跳转字符和/或所述中间字符后的各NFA状态之间的跳转关系;将基于链式列表存储的各NFA状态之间的跳转关系合并到第一有序数组列表。链式列表使用指针来表示前后元素之间的关系,因此,每个元素节点除了包含自身数据的相关信息外,还包括存储后续元素地址的指针。
将上述的“单个跳转字符”和“跳转字符区间”的链式列表的存储结构合并到“第一有序数组列表”,例如,对于NFA状态1,第一有序数组列表为(a,3),(b,2),(c-d,3),(e-f,2),(g,1),有序可以是指按照26个英文字母的先后顺序,对于其他NFA状态对应的第一有序数组列表不再赘述。此“第一有序数组列表”不仅可以缩短“NFA到DFA”转换时间,而且可以提高“基于NFA匹配技术”的执行效率。
S102:确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA。
具体的,确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA。图2为本发明实施例NFA状态和DFA状态示意图,如图2所示,左侧对应NFA状态,右侧对应DFA状态,一个DFA状态可以包含多个NFA状态,对于DFA状态0,对应NFA状态0;对于DFA状态1,对应NFA状态0+NFA状态1。
所述根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA,具体可以包括:
获取同一DFA状态对应的活跃NFA状态集,并根据所述活跃NFA状态集将所述NFA转换为DFA;所述活跃NFA状态集包括由与所述同一DFA状态相对应的连续跳转字符表示的NFA状态集合。参照上述示例,对于DFA状态0,由于只对应NFA状态0对应的活跃NFA状态集,参照上述说明,例如根据(a,3),(b,2),(c-d,3),(e-f,2),(g,1),得到活跃NFA状态集为NFA状态0:由a,c-d表示状态3、b,e-f表示状态2、g表示状态1。
对于DFA状态1,对应NFA状态0和NFA状态1分别对应的活跃NFA状态集。例如,由a,c-d表示状态3、b,e-f表示状态2、g表示状态1(活跃NFA状态集为NFA状态0)和活跃NFA状态集为NFA状态1,对于NFA状态1的举例说明,不再赘述。
所述根据所述活跃NFA状态集将所述NFA转换为DFA,可以具体包括:
根据所述活跃NFA状态集优化子集构造法的性能;采用优化性能后的子集构造法将所述NFA转换成DFA。
该步骤实现的是,优化NFA到DFA转换,用于合并NFA状态之间的跳转关系,进而改善“子集构造法”的性能,优化NFA到DFA转换效率。上述步骤即是预处理所述DFA的NFA状态集的过程。
本发明实施例NFA到DFA的转换原理为子集构造法,在NFA到DFA的转换过程中,有很大一部分时间用于查询当前跳转字符对应的“活跃NFA状态集”是否已经存在。但是,DFA状态的跳转边往往是有限的,并且存在极大的重复概率。至少大部分情况下,正则表达式为BASE64所含的64个常用字符,重复率近似为64/256=25%。
S103:对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
具体的,对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。该步骤实现的是,DFA空间压缩,用于构造压缩比例较高的“DFA状态转移”存储数据结构。本步骤保持DFA状态数目不变,只针对DFA状态之间的跳转关系做优化。
现有技术中的DFA二维矩阵存储结构,行表示DFA状态,列表示跳转字符。但是,DFA的跳转字符可以分为两类:第一类是单个跳转字符跳转到目的DFA状态,并且这个跳转字符与相邻跳转字符目的DFA状态不同;第二类是跳转字符区间(包含多个连续字符)具有相同的目的DFA状态。
各DFA状态之间的跳转关系进行压缩,具体可以包括:
分别存储各DFA状态之间的跳转关系;将存储的各DFA状态之间的跳转关系合并到第二有序数组列表为了加快DFA匹配速度,“无效跳转字符”及“跳转字符区间”也需记录,“DFA状态之间的跳转关系”采用第二有序数组列表存储。
本发明实施例提供的DFA空间压缩方法,通过NFA空间压缩、优化NFA到DFA转换和DFA空间压缩,不但解决DFA空间复杂度较高,NFA到DFA转换速度较慢的问题,而且节省了DFA存储空间,提升了NFA到DFA转换速度,还实现了网络安全。
在上述实施例的基础上,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,包括:
具体的,删除所述NFA中的各NFA状态中没有发生跳转关系的无效跳转字符;和/或,删除所述NFA中的各NFA状态中跳转字符区间中的中间字符;所述中间字符是在所述跳转字符区间中的、除两端端点跳转字符之外的所有字符。可参照上述说明,不再赘述。
本发明实施例提供的DFA空间压缩方法,通过删除无效跳转字符和/或中间字符,进一步优化了NFA空间压缩。
在上述实施例的基础上,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,还包括:
具体的,采用链式列表存储删除所述无效跳转字符和/或所述中间字符后的各NFA状态之间的跳转关系;将基于链式列表存储的各NFA状态之间的跳转关系合并到第一有序数组列表。可参照上述说明,不再赘述。
本发明实施例提供的DFA空间压缩方法,将基于链式列表存储的跳转关系合并到第一有序数组列表,进一步优化了NFA空间压缩。
在上述实施例的基础上,所述对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩,包括:
具体的,分别存储各DFA状态之间的跳转关系;将存储的各DFA状态之间的跳转关系合并到第二有序数组列表。可参照上述说明,不再赘述。
本发明实施例提供的DFA空间压缩方法,将存储的跳转关系合并到第二有序数组列表,进一步优化了DFA空间压缩。
在上述实施例的基础上,所述根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA,包括:
具体的,获取同一DFA状态对应的活跃NFA状态集,并根据所述活跃NFA状态集将所述NFA转换为DFA;所述活跃NFA状态集包括由与所述同一DFA状态相对应的连续跳转字符表示的NFA状态集合。可参照上述说明,不再赘述。
本发明实施例提供的DFA空间压缩方法,通过根据活跃NFA状态集将NFA转换为DFA,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,所述根据所述活跃NFA状态集将所述NFA转换为DFA,包括:
具体的,根据所述活跃NFA状态集优化子集构造法的性能;采用优化性能后的子集构造法将所述NFA转换成DFA。可参照上述说明,不再赘述。
本发明实施例提供的DFA空间压缩方法,通过优化子集构造法的性能,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,所述获取同一DFA状态对应的活跃NFA状态集的步骤之后,所述DFA空间压缩方法还包括:
具体的,对同一DFA状态中的连续跳转字符执行一次Radix树检索。图3为本发明DFA空间压缩方法另一实施例流程图;如图3所示,需要说明的是,预处理所述DFA的NFA状态集的过程还可以包括:对同一DFA状态中的连续跳转字符执行一次Radix树检索。预处理DFA状态包含的“活跃NFA状态集”,通过图3的算法实现了多个连续的跳转字符具有相同的“跳转活跃NFA状态集”,只需执行一次“Radix树检索”,由于只要含有剩余活跃NFA状态集,就执行采用Radix树搜索是否已有相同DFA的步骤,经过不断的循环执行,使得对每一个相同DFA执行一次创建DFA,并将DFA信息添加到Radix树的步骤,其中相同DFA即对应上述“合并后的同一DFA状态中的连续跳转字符”,极大减少了“Radix树检索次数”,进而缩小了NFA到DFA的执行时间。
本发明实施例提供的DFA空间压缩方法,通过对同一DFA状态中的连续跳转字符执行一次Radix树检索,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,在对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩的步骤之后,所述DFA空间压缩方法还包括:
具体的,根据所述网络安全规则引擎对输入网包进行正则表达式匹配处理。正则表达式匹配处理可以采用本领域通用方法,不作具体限定。
具体的,根据所述第二有序数组列表转发或存储所述输入网包。即本发明实施例可以应用于网络数据的传输中,实现安全转发或存储输入网包。本发明实施例具有如下优点:
1)NFA/DFA空间利用率高:采用合理的数据结构,优化了“有限自动机状态转移”存储结构,压缩了内存空间。
2)NFA转DFA执行时间短:合理压缩合并了NFA状态之间的跳转关系,提高了“子集构造法”性能,缩短了NFA转换为DFA的执行时间。
此外,还可以实现输入网包的快速传输。
本发明实施例提供的DFA空间压缩方法,进一步实现了安全传输输入网包。
图4为本发明DFA空间压缩装置实施例结构示意图,如图4所示,本发明实施例提供了一种DFA空间压缩装置,包括第一压缩单元401、优化单元402和第二压缩单元403,其中:
第一压缩单元401用于获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;优化单元402用于确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;第二压缩单元403用于对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
具体的,第一压缩单元401用于获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;优化单元402用于确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;第二压缩单元403用于对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本发明实施例提供的DFA空间压缩装置,通过NFA空间压缩、优化NFA到DFA转换和DFA空间压缩,不但解决DFA空间复杂度较高,NFA到DFA转换速度较慢的问题,而且采用合理的存储结构,节省了DFA存储空间,提升了NFA到DFA转换速度,还实现了网络安全。
在上述实施例的基础上,所述第一压缩单元401具体用于:
删除所述NFA中的各NFA状态中没有发生跳转关系的无效跳转字符;
和/或,删除所述NFA中的各NFA状态中跳转字符区间中的中间字符;所述中间字符是在所述跳转字符区间中的、除两端端点跳转字符之外的所有字符。
本发明实施例提供的DFA空间压缩装置,通过删除无效跳转字符和/或中间字符,进一步优化了NFA空间压缩。
在上述实施例的基础上,所述第一压缩单元401还具体用于:
采用链式列表存储删除所述无效跳转字符和/或所述中间字符后的各NFA状态之间的跳转关系;
将基于链式列表存储的各NFA状态之间的跳转关系合并到第一有序数组列表。
本发明实施例提供的DFA空间压缩装置,将基于链式列表存储的跳转关系合并到第一有序数组列表,进一步优化了NFA空间压缩。
在上述实施例的基础上,所述第二压缩单元403具体用于:
分别存储各DFA状态之间的跳转关系;
将存储的各DFA状态之间的跳转关系合并到第二有序数组列表。
本发明实施例提供的DFA空间压缩装置,将存储的跳转关系合并到第二有序数组列表,进一步优化了DFA空间压缩。
在上述实施例的基础上,所述优化单元402具体用于:
获取同一DFA状态对应的活跃NFA状态集,并根据所述活跃NFA状态集将所述NFA转换为DFA;所述活跃NFA状态集包括由与所述同一DFA状态相对应的连续跳转字符表示的NFA状态集合。
本发明实施例提供的DFA空间压缩装置,通过根据活跃NFA状态集将NFA转换为DFA,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,所述优化单元402还具体用于:
根据所述活跃NFA状态集优化子集构造法的性能;
采用优化性能后的子集构造法将所述NFA转换成DFA。
本发明实施例提供的DFA空间压缩装置,通过优化子集构造法的性能,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,所述DFA空间压缩装置还用于:
对同一DFA状态中的连续跳转字符执行一次Radix树检索。
本发明实施例提供的DFA空间压缩装置,通过对同一DFA状态中的连续跳转字符执行一次Radix树检索,进一步提升了NFA到DFA转换速度。
在上述实施例的基础上,所述DFA空间压缩装置还用于:
根据所述网络安全规则引擎对输入网包进行正则表达式匹配处理;
根据所述第二有序数组列表转发或存储所述输入网包。
本发明实施例提供的DFA空间压缩装置,进一步实现了安全转发或存储输入网包。
本发明实施例提供的DFA空间压缩装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的电子设备实体结构示意图,如图5所示,所述电子设备包括:处理器(processor)501、存储器(memory)502和总线503;
其中,所述处理器501、存储器502通过总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种DFA空间压缩方法,其特征在于,包括:
获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
2.根据权利要求1所述的DFA空间压缩方法,其特征在于,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,包括:
删除所述NFA中的各NFA状态中没有发生跳转关系的无效跳转字符;
和/或,删除所述NFA中的各NFA状态中跳转字符区间中的中间字符;所述中间字符是在所述跳转字符区间中的、除两端端点跳转字符之外的所有字符。
3.根据权利要求2所述的DFA空间压缩方法,其特征在于,所述对所述NFA中的各NFA状态之间的跳转关系进行压缩,还包括:
采用链式列表存储删除所述无效跳转字符和/或所述中间字符后的各NFA状态之间的跳转关系;
将基于链式列表存储的各NFA状态之间的跳转关系合并到第一有序数组列表。
4.根据权利要求1所述的DFA空间压缩方法,其特征在于,所述对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩,包括:
分别存储各DFA状态之间的跳转关系;
将存储的各DFA状态之间的跳转关系合并到第二有序数组列表。
5.根据权利要求1-4任一所述的DFA空间压缩方法,其特征在于,所述根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA,包括:
获取同一DFA状态对应的活跃NFA状态集,并根据所述活跃NFA状态集将所述NFA转换为DFA;所述活跃NFA状态集包括由与所述同一DFA状态相对应的连续跳转字符表示的NFA状态集合。
6.根据权利要求5所述的DFA空间压缩方法,其特征在于,所述根据所述活跃NFA状态集将所述NFA转换为DFA,包括:
根据所述活跃NFA状态集优化子集构造法的性能;
采用优化性能后的子集构造法将所述NFA转换成DFA。
7.根据权利要求5所述的DFA空间压缩方法,其特征在于,所述获取同一DFA状态对应的活跃NFA状态集的步骤之后,所述DFA空间压缩方法还包括:
对同一DFA状态中的连续跳转字符执行一次Radix树检索。
8.根据权利要求4所述的DFA空间压缩方法,其特征在于,在对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩的步骤之后,所述DFA空间压缩方法还包括:
根据所述网络安全规则引擎对输入网包进行正则表达式匹配处理;
根据所述第二有序数组列表转发或存储所述输入网包。
9.一种DFA空间压缩装置,其特征在于,包括:
第一压缩单元,用于获取用于检测的正则表达式对应的NFA,并对所述NFA中的各NFA状态之间的跳转关系进行压缩;
优化单元,用于确定与各NFA状态分别对应的各DFA状态,并根据NFA状态和DFA状态之间的对应关系,对各个DFA状态之间的跳转关系进行优化,得到优化后的DFA;
第二压缩单元,用于对所述优化后的DFA中的各DFA状态之间的跳转关系进行压缩。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述方法的步骤。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时实现如权利要求1~8中任一项所述方法的步骤。
CN202010034061.5A 2020-01-13 2020-01-13 一种dfa空间压缩方法及装置 Active CN111262589B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010034061.5A CN111262589B (zh) 2020-01-13 2020-01-13 一种dfa空间压缩方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010034061.5A CN111262589B (zh) 2020-01-13 2020-01-13 一种dfa空间压缩方法及装置

Publications (2)

Publication Number Publication Date
CN111262589A true CN111262589A (zh) 2020-06-09
CN111262589B CN111262589B (zh) 2024-04-12

Family

ID=70954050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010034061.5A Active CN111262589B (zh) 2020-01-13 2020-01-13 一种dfa空间压缩方法及装置

Country Status (1)

Country Link
CN (1) CN111262589B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801020A (zh) * 2023-02-13 2023-03-14 鹏城实验室 确定有限状态自动机压缩方法、匹配方法、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7661138B1 (en) * 2005-08-31 2010-02-09 Jupiter Networks, Inc. Finite state automaton compression
CN103166802A (zh) * 2011-12-12 2013-06-19 中国移动通信集团湖南有限公司 一种确定有限自动机的构建方法及装置
US20160028766A1 (en) * 2014-07-23 2016-01-28 Petabi, Inc. Method for compressing matching automata through common prefixes in regular expressions
US20160275205A1 (en) * 2013-12-05 2016-09-22 Hewlett Packard Enterprise Development Lp Regular expression matching
CN106487803A (zh) * 2016-11-10 2017-03-08 深圳市任子行科技开发有限公司 用于大流量网络入侵检测系统的模式匹配算法和系统
CN109977275A (zh) * 2019-02-22 2019-07-05 中国科学院计算技术研究所 一种正则表达式dfa空间压缩方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7661138B1 (en) * 2005-08-31 2010-02-09 Jupiter Networks, Inc. Finite state automaton compression
CN103166802A (zh) * 2011-12-12 2013-06-19 中国移动通信集团湖南有限公司 一种确定有限自动机的构建方法及装置
US20160275205A1 (en) * 2013-12-05 2016-09-22 Hewlett Packard Enterprise Development Lp Regular expression matching
US20160028766A1 (en) * 2014-07-23 2016-01-28 Petabi, Inc. Method for compressing matching automata through common prefixes in regular expressions
CN106487803A (zh) * 2016-11-10 2017-03-08 深圳市任子行科技开发有限公司 用于大流量网络入侵检测系统的模式匹配算法和系统
CN109977275A (zh) * 2019-02-22 2019-07-05 中国科学院计算技术研究所 一种正则表达式dfa空间压缩方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
M. BECCHI等: "Accelerating regular expression matching over compressed HTTP", pages 540 - 548 *
彭坤杨: "基于状态子集编码的快速DFA构造算法", 《中国科学技术大学学报》, pages 4 *
范慧萍: "基于正则表达式的协议识别研究与实现", pages 139 - 161 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801020A (zh) * 2023-02-13 2023-03-14 鹏城实验室 确定有限状态自动机压缩方法、匹配方法、设备及介质
CN115801020B (zh) * 2023-02-13 2023-04-11 鹏城实验室 确定有限状态自动机压缩方法、匹配方法、设备及介质

Also Published As

Publication number Publication date
CN111262589B (zh) 2024-04-12

Similar Documents

Publication Publication Date Title
CN108628898B (zh) 数据入库的方法、装置和设备
CN107169083A (zh) 公安卡口海量车辆数据存储与检索方法及装置、电子设备
CN103593440B (zh) 日志文件的读写方法及装置
US20090063465A1 (en) System and method for string processing and searching using a compressed permuterm index
CN109684290B (zh) 日志存储方法、装置、设备及计算机可读存储介质
CN105824974B (zh) 数据分析处理的方法和系统
US11923875B2 (en) Sorting network-based dynamic Huffman encoding method, apparatus and device
CN103412858A (zh) 用于文本或网络内容分析的大规模特征匹配的方法
Weaver et al. Satisfiability-based set membership filters
CN111262589A (zh) 一种dfa空间压缩方法及装置
CN107426211B (zh) 网络攻击的检测方法及装置、终端设备和计算机存储介质
CN111190896A (zh) 数据处理方法、装置、存储介质和计算机设备
CN115292737A (zh) 一种多关键词模糊搜索加密方法、系统及电子设备
CN109241058A (zh) 一种向b+树批量插入键值对的方法和装置
CN113407702A (zh) 员工合作关系强度量化方法、系统、计算机和存储介质
US11782983B1 (en) Expanded character encoding to enhance regular expression filter capabilities
CN111191103A (zh) 从互联网中识别分析企业主体信息方法、装置及存储介质
JP6291435B2 (ja) プログラムおよびクラスタシステム
CN114826278B (zh) 基于布尔矩阵分解的图数据压缩方法
Suri et al. The statistical dictionary-based string matching problem
CN112395276B (zh) 一种数据比对方法及相关设备
CN113032340B (zh) 数据文件的合并方法、装置、存储介质及处理器
CN112256801B (zh) 抽取实体关系图中关键实体的方法、系统和存储介质
CN110096504B (zh) 流式事件特征匹配方法及装置
CN115439564A (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
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: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc.

GR01 Patent grant
GR01 Patent grant