CN116484069A - 检测基于双字典压缩数据的正则表达式匹配方法和装置 - Google Patents

检测基于双字典压缩数据的正则表达式匹配方法和装置 Download PDF

Info

Publication number
CN116484069A
CN116484069A CN202310459944.4A CN202310459944A CN116484069A CN 116484069 A CN116484069 A CN 116484069A CN 202310459944 A CN202310459944 A CN 202310459944A CN 116484069 A CN116484069 A CN 116484069A
Authority
CN
China
Prior art keywords
data
state
dictionary
detection
compression
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.)
Pending
Application number
CN202310459944.4A
Other languages
English (en)
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.)
Anhui University
Original Assignee
Anhui University
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 Anhui University filed Critical Anhui University
Priority to CN202310459944.4A priority Critical patent/CN116484069A/zh
Publication of CN116484069A publication Critical patent/CN116484069A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种检测基于双字典压缩数据的正则表达式匹配方法和装置,该方法能够以极小的开销跳过检测大部分被压缩的数据,能够有效提升检测速度。该方法主要包含预处理和匹配两个阶段,预处理阶段解压压缩数据并产生元数据信息,匹配阶段读取元数据信息,并结合有限状态自动机的状态等价性跳过检测大部分被压缩编码表示的数据。本发明的技术方案完善了压缩数据检测方法的基础理论,显著提升压缩数据检测速度,为基于正则表达式匹配的检测系统提供技术支持,拓宽压缩数据检测的应用范围。

Description

检测基于双字典压缩数据的正则表达式匹配方法和装置
技术领域
本发明属于深度包检测技术领域,具体涉及数据压缩、模式匹配等相关技术,具体地,关注加速检测基于双字典的压缩数据,如Brotli压缩算法所压缩的数据。
背景技术
移动互联网的兴起和发展产生了海量的网络流量,为了在移动网络的有限带宽上提高数据传输效率,提升用户体验并减少用户产生的计费流量,越来越多的网络服务使用压缩技术压缩所传输的数据,这给基于深度包检测(Deep Packet Inspection,DPI)技术的相关工具和系统带来了新的挑战。以HTTP网络流量为例,HTTP1.1协议使用Gzip作为默认的压缩编码,传输数据的压缩率约为20%(压缩率是数据压缩后与压缩前的体积之比),DPI系统在检测此类压缩流量时,通常需要解压并检测所有解压后的数据,数据体积的膨胀使得系统的性能仅为检测未压缩流量时的1/5。
现有加速检测网络压缩数据的方法,在检测速度方面取得了较好的成果,然而它们主要关注的是使用单个自适应字典的压缩算法所产生的压缩数据。例如,文献[1]Pattern Matching in LZW Compressed Files,IEEE Transactions on Computers,2005,54(8):929-938;文献[2]Accelerating Multi-pattern Matching on Compressed HTTPTraffic,IEEE/ACM Transactions on Networking 2012,20(3):970-983;文献[3]Accelerating regular expression matching over compressed http,IEEE Conferenceon Computer Communications,2015,540-548;文献[4]Efficient Regular ExpressionMatching over Compressed Traffic,Computer Networks,2020,168:106996;文献[5]美国专利:US8458354,Multi-pattern matching in compressed communication traffic;文献[6]中国专利:ZL201710354909.0,针对压缩流量的多字符串匹配方法;文献[7]中国专利:ZL201810420111.6,一种加速压缩流量正则表达式匹配的Pairs方法;文献[8]中国专利:ZL201810419466.3,一种加速压缩流量正则表达式匹配的Twins方法;文献[9]中国专利:ZL201910950410.5,一种基于FPGA平台的压缩流量模式匹配引擎及模式匹配方法。这些方法关注的是LZ77、LZW等压缩算法产生的数据,无法应用于基于双字典的压缩数据。
基于双字典的压缩数据经由使用自适应字典和静态字典的压缩算法压缩而成,例如Google所提出的Brotli编码,在压缩率、压缩或解压缩速度等方面相较于现有编码具有明显的优势。Brotli由于其具备更低的压缩率和更快的解压缩速度,谷歌已将其作为Chrome浏览器和谷歌相关服务的默认压缩编码,当前主流网络浏览器和Web服务器也已支持了该压缩编码。此类压缩数据在网络流量中的占比日益增多,然而目前尚未有高效的加速检测基于双字典压缩数据的方法。
发明内容
本发明提供了一种检测基于双字典压缩数据的正则表达式匹配方法和装置,能够有效提升检测基于双字典压缩数据的速度。
为达到上述目的,本发明所述一种检测基于双字典压缩数据的正则表达式匹配方法,包括以下步骤:
步骤1、构建正则匹配引擎;调用正则匹配引擎扫描静态字典,并将返回的有限状态自动机状态存储到状态区,重置正则匹配引擎的活跃状态state为初始状态;
步骤2、预处理双字典压缩数据,得到解压缩数据;同时从待检测的双字典压缩数据中解析出元数据并存储,所述元数据包括未被压缩数据长度记为len1、压缩编码记为<dist,len2>;
步骤3、读取一个元数据结构;
步骤4、从解压缩数据中读取len1字节的数据,以活跃状态state作为输入,调用正则匹配引擎扫描,并更新state;该过程将扫描每个数据所得到的state保存在状态区,同时检查每个state是否为自动机的接收状态,将接收状态和对应的字符位置作为匹配到的模式信息作为检测结果输出;
步骤5、根据元数据包含的压缩编码<dist,len2>定位到该压缩编码在压缩算法使用的动态字典或静态字典中对应的数据区域,同时据压缩编码的信息定位该编码在状态区中所对应的区域和该编码的参考区域,将状态区中将该编码区域前一字符所在位置记为curPos,其参考区域前一字符所在位置记为refPos;
步骤6、检查refPos位置所保存的状态是否和活跃状态state等价:
若等价,将该编码所参考区域中的状态拷贝到当前区域,检查接收拷贝状态中是否存在接收状态,若存在,输出模式信息,然后跳转至步骤3,读取下一个元数据结构;否则,跳转至步骤7;
步骤7、调用正则匹配引擎扫描该编码中curPos位置的字符,更新state并同步写入状态区,然后将refPos和curPos各自向后移动一个字符;若curPos不是该编码的尾部,则跳转至步骤6;否则跳转至步骤3。
进一步的,步骤1中,根据正则表达式规则集构建正则匹配引擎。
进一步的,步骤2中,预处理双字典压缩数据包括以下步骤:
解析双字典压缩数据,获取所有的压缩数据块,每个数据块对应一串被压缩的数据;对于每个数据块,解析出三个字段的信息,分别是insert-copy-length、literal以及distance;根据三个字段信息,还原出未压缩的数据,写入text;额外记录insert-copy-length以及distance作为元数据存储。
进一步的,步骤5包括以下步骤:
读取解压后数据以及元数据,判断数据类型:
若为普通字符,直接调用自动机逐字符扫描;
若为编码数据,首先根据dist判断当前冗余数据的参考串取自动态字典或者静态字典:
若为静态字典,根据dist计算出参考串在静态字典中下标的前一个位置refPos;
若为动态字典,计算出参考串在动态字典中对应位置的前一个位置refPos;
在处理编码数据时,首先检查当前激活状态和refPos对应位置的状态是否等价:
若等价,直接从参考区域复制状态,并记录匹配结果,更新当前激活状态;
若不等价,调用自动机扫描,更新当前激活状态后,继续与参考区域的对应状态比较,直到编码数据处理结束或者等价直接跳过。
一种加速检测基于双字典压缩数据的正则表达式匹配装置,包括预处理模块、Rainbow检测模块、辅助信息存储模块和正则匹配引擎;所述正则匹配引擎由正则表达式规则构建,所述预处理模块用于解析待检测的双字典压缩数据,所述Rainbow检测模块用于实现检测,输出检测结果。
进一步的,待检测的双字典压缩数据由压缩算法采用自适应的动态字典和静态字典所生成;所述预处理模块结合静态字典解析输入的双字典压缩数据,输出解压缩数据,将输出的解压缩数据发送至Rainbow检测模块;所述预处理模块同时还输出元数据到辅助信息存储模块。
进一步的,正则匹配引擎使用基于有限状态自动机的实现方式。
进一步的,辅助信息存储模块(103)用于存储辅助信息,包括状态区和元数据区,所述辅助信息包括使用正则匹配引擎匹配静态字典和解压缩数据所返回的有限状态自动机状态,以及能够标识压缩数据原始构成的元数据,每个元数据包括未被压缩数据长度和压缩编码。
进一步的,Rainbow检测模块根据元数据区存储的元数据识别经由预处理模块解析后的解压缩数据,区分出原始状态时未被压缩的数据、被压缩编码所表示的数据;之后调用正则匹配引擎逐字符匹配未被压缩的数据,并结合辅助信息所保存的有限状态自动机状态,采用Rainbow检测算法跳过检测部分被压缩编码所表示的数据。
与现有技术相比,本发明至少具有以下有益的技术效果:
(1)理论更加完备
现有工作基于有限状态自动机状态相等的条件跳过检测冗余数据,仅在正则匹配引擎采用最小化DFA的情况下才能充分发挥其优势。本发明提出的一种加速检测基于双字典压缩数据的正则表达式匹配方法,以有限状态自动机理论中状态等价性作为判定条件跳过检测冗余数据,状态相等仅是状态等价的子集,本发明所依赖的基本理论更具普遍性、理论更加完备。
(2)额外开销小,检测速度快
本发明提出的一种加速检测基于双字典压缩数据的正则表达式匹配方法,充分利用内存空间局部性原理和cache高速缓存,减少使用有限状态自动机时的随机访存;在预处理阶段输出解压数据的同时仅输出元数据,匹配阶段读取元数据信息,并结合有限状态自动机的状态等价性跳过检测大部分被压缩编码表示的数据。现有加速检测双字典压缩编码VCDIFF的方法,将每个字节扩充为4字节从而识别不同的压缩数据,与该方法相比,本发明设计的元数据降低了内存开销,同时更加充分利用了cache缓存,从而获得了检测速度成倍的性能提升。此外,整个检测过程所引入的额外内存开销仅包含辅助信息中的元数据和存储的自动机状态,所需内存空间非常少,且不受正则表达式规则集、正则匹配引擎和待检测数据的影响。
(3)扩展性高,兼容性好
本发明提出的方法使用标准有限状态自动机构造的正则匹配引擎,所设计的加速检测算法和正则匹配引擎直接没有耦合关系,便于方法嵌入于已有系统或应用中,具有较高的可扩展性和兼容性。
附图说明
图1是以Brotli为例说明基于双字典压缩算法编码数据过程的示意图,压缩算法从原始文本中构造出自适应的动态字典,并结合静态字典将原始文本压缩为无法被压缩的原始文本和压缩编码数据混合的数据,之后再对其进行哈夫曼编码;
图2是以Brotli为例说明数据解压后,元数据、各类型压缩编码和未被压缩原始文本的位置关系示意图;
图3是使用正则表达式“ab+cd|bc+d”构造的确定性有限状态自动机状态转移图;
图4是Rainbow检测算法加速检测动态编码和静态编码所表示数据的示意图;
图5是本发明提出的一种加速检测基于双字典压缩数据的正则表达式匹配装置的功能框架图;
图6是本发明算法处理示例压缩数据的过程示意图;
图7是本发明实施例与现有方法的在检测速度方面的性能对比。
具体实施方式
为了使本发明的目的和技术方案更加清晰和便于理解。以下结合附图和实施例,对本发明进行进一步的详细说明,此处所描述的具体实施例仅用于解释本发明,并非用于限定本发明。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明提出的一种加速检测基于双字典压缩数据的正则表达式匹配方法,通过预处理输出解压缩后的数据和能够区分原始状态时未被压缩的数据、被压缩编码所表示的数据的元数据信息;之后利用有限状态自动机的上下文无关特性和状态等价性跳过检测大部分被压缩编码所表示的数据,实现加速检测的目的。本发明的技术方案完善了压缩数据检测方法的基础理论,显著提升压缩数据检测速度,为基于正则表达式匹配的检测系统提供技术支持,拓宽压缩数据检测的应用范围。
为进一步说明本发明的具体内容,实施部分以Brotli为例进行介绍,其他由使用双字典的压缩算法所压缩编码而成的数据,可参照本实施例实现。接下来首先介绍本发明所涉及的术语和相关技术。
(1)Brotli
Brotli是Google于提出的新型压缩编码,其数据格式已经由RFC7932进行规范。由于Brotli在压缩率、解压缩速度和所使用资源方面的性能优势,目前已经被主流网络浏览器所支持,谷歌将其作为Chrome传输HTTP数据时的默认压缩编码,并在多种网络服务中应用部署。Brotli在传统的自适应动态字典的基础上,结合共享的静态字典压缩数据,其中,自适应动态字典基于LZ77变种算法所实现,共享的静态字典则包含HTTP数据包中出现频率较高的词句、段落以及代码块等内容。使用动态和静态字典编码后的数据再经过哈夫曼编码输出最终的Brotli压缩数据。
Brotli压缩数据同时参考动态字典以及静态字典,以三个指令压缩一段连续的字符序列,这三个指令分别是insert-copy-length,literals以及distance。insert-copy-length给出了两个长度,即literals长度和编码长度。在数据压缩领域,literals表示无法被压缩的字符或字符序列,编码表示由编码表示的重复字符序列。literals指令是一段无法被压缩的字符序列。distance指令表示求编码和其对应的参考串之间的距离。
图1给出了Brotli处理字符序列“xbcccdabcccdabcd”的过程示意图,Brotli首先基于LZ77算法,从动态字典和静态字典中寻找是否已经存在某个子串;然后将寻找到的重复子串编码,至于无法压缩的字符序列则保持为原始状态;最后再使用哈夫曼编码对无法压缩的字符序列和编码进行二次编码。
图2以压缩字符序列“xbcccdabcccdabcd”为例说明压缩后字符序列对应Brotli指令的位置关系。该示例中,原始字符序列被压缩编码为两组指令,第一个指令“(7,5)xbcccda(6)”解压后将输出字符序列“xbcccdabcccd”,其中开始部分的7个字符序列“xbcccda”无法被压缩,紧跟其后的5个字符序列“bcccd”则是先前7个字符序列的子串。(7,5)为insert-copy-length指令,表示紧跟其后将输出一串长度为7字节、无法被压缩的字符序列,即由literals指令表示的“xbcccda”;再之后则是一个编码,表示将要输出的字符序列长度为5,该字符序列与参考串(第一个“bcccd”)的距离为6字节。由于该编码所参考的原始字符序列位于压缩过程所构造的自适应的动态字典中,本发明称其为动态编码。
第二个指令“(0,4)(16)”解压后将输出“abcd”,insert-copy-length指令为“(0,4)”表示没有无法被压缩的字符序列,即literals指令不输出任何字符,而之后的编码长度为4,与参考串的距离为16字节。该示例中我们假定最大偏移长度为10,该距离超过了最大偏移,表示参考串位于静态字典中,于是第二个指令只从静态字典中拷贝输出字符序列“abcd”。本发明将参考静态字典的编码称为静态编码。
(2)正则表达式匹配
正则表达式是正则语言的一种代数记号,它本身是一条字符串,用其能够描述、匹配符合某个特定句法规则的字符串集合,也即正则语言。正则表达式被广泛应用于使用模式匹配方法的工具中,例如文本编辑器等,描述所要查找的模式字符串。由于正则表达式与有限状态自动机(Finite State Automata,FSA)所描述的均为正则语言,计算机在使用正则表达式匹配字符串之时,通常先将其转换为相应的FSA,再使用该FSA进行匹配。
FSA定义为5元组A=(Q,Σ,δ,q0,F),其中:Q为非空有限的状态集合;Σ为非空有限的字符集合,通常称为输入字母表;δ为转移函数Q×Σ*→Q;q0∈Q为初始状态;为接收状态的集合。根据FSA的转移函数δ返回状态的数量,FSA分为确定性有限状态自动机(Non-deterministic Finite Automata,DFA)和非确定性有限状态自动机(DeterministicFinite Automata,NFA),DFA的转移函数仅返回单个状态,NFA返回的则是状态集合。此外,DFA检测速度快,但是内存开销比较大;NFA的内存开销小,但是检测速度慢,最佳实践通常是将NFA转为DFA,以DFA作为首选底层引擎。
以DFA为例,在匹配输入的字符串时,DFA从起始状态开始,逐字符读入待匹配的字符串,并根据给定的转移函数得到下一个状态,直至检查完全部字符。在匹配过程中,如果得到的某个状态属于F的接收状态,说明该DFA匹配到一个模式。如图3所示的使用正则表达式“ab+cd|bc+d”构造的DFA,它的初始状态0,接收状态集合为6,输入字母表为{a,b,c,d},状态集合为{0,1,2,3,4,5,6}。当输入字符序列为“abccd”时,该DFA将会沿着状态“012356”转换并得到接收状态6,表明在输入字符序列“abccd”中发现符合正则表达式“ab+cd|bc+d”的模式。
(3)技术方案
在上述基本概念和技术的基础上,接下来介绍本发明所提出方法依赖的基本理论,以及本发明的技术方案。数据之所以能够被压缩,是因为数据自身存在着较多的冗余,因此压缩数据中包含着能够恢复出原本数据的信息,目前相关方法主要利用这些信息,尽可能跳过对压缩数据中冗余数据的检测,同时减小为跳过检测而产生的额外开销,以此实现加速检测的效果。
有限状态自动机是一种上下文无关文法,其上下文无关特性,即下一个转移状态只和活跃状态和下一个输入字符的有关,与其他之外的任何信息无关。该性质能够表明从两个相等状态开始,如果匹配相同的输入字符序列,那么得到的自动机状态也将是相同的。先前方法基于此,利用相等的自动机状态设计加速检测方法,能够避免扫描较多的冗余数据。
本发明根据有限自动机理论中的状态等价性,发现如果从两个等价状态开始匹配任意相同的字符序列,得到的自动机状态也将是等价的,而状态等价并不要求状态相等。以图3所示的DFA为例,三个状态集合{0,1},{2,4},{3,5},集合中的状态并不相等,但它们是等价的。基于此,本发明提出更为完备的基本理论,利用等价的自动机状态设计检测方法,能够跳过扫描更多的冗余数据。
如图4所示,数据行中an之后的字符序列w0w1…wn和z0z1…zn分别引用自适应动态字典和静态字典中的字符序列,在压缩形态下这些数据被压缩编码所替换,称之为动态编码和静态编码;状态行中的状态是扫描与它们位置相对应的字符后所得到的自动机状态。在即将扫描压缩编码所表示的字符时,例如an之后的字符序列w0w1…wn,可以先判断扫描an和am时所返回的状态un和um是否等价,如果两个状态不等价则继续依次扫描动态编码所表示的字符,获取模式匹配结果,直至动态编码和其所参考的动态字典相应位置所保存的状态等价、或者扫描完该编码表示的所有字符。在不失一般性的情况下,不妨假设扫描第一个字符w0后得到的状态q0和字典相应位置所保存的状态p0等价,根据上述理论,即使逐字符扫描后续字符序列w1…wn,得到的状态q1…qn将分别和p1…pn等价。因此可以直接将w1…wn的状态p1…pn拷贝至本该q1…qn所在的位置,而无需逐字符扫描压缩编码中等价状态之后的这些冗余字符。
此外,现有方法主要针对使用单个自适应字典的压缩算法所设计,没有考虑Brotli之类的基于双字典的压缩算法。为此,本发明在预处理阶段预先扫描压缩算法所使用静态字典中的字符,并存储扫描后静态字典数据部分所对应的自动机状态;之后在匹配引用静态字典的冗余数据时,利用扫描静态字典时所保存的自动机状态实现加速检测。同样以图4为例,在即将扫描静态编码所表示的字符序列z0z1…zn时,先依次判断该位置和静态字典中预扫描所得到的状态,即k1t0…tn和qns0…sn是否等价,一旦发现等价状态,便无需逐字符扫描后续的静态编码所表示的字符序列。
一种加速检测基于双字典压缩数据的正则表达式匹配方法,包括以下步骤:
步骤1、根据正则表达式规则集107构建正则匹配引擎104,分配并初始化辅助信息所需的内存空间;调用正则匹配引擎104扫描静态字典106,并将返回的有限状态自动机状态存储到状态区,最后重置正则匹配引擎104的活跃状态state为初始状态;
步骤2、预处理模块101读取输入的双字典压缩数据105、分配内存空间存储预处理模块101输出的解压缩数据,并将内存空间首地址传给Rainbow检测模块102;与此同时,从待检测的双字典压缩数据105中解析出能够标识压缩数据原始构成的元数据存储到元数据区1032;
步骤3、将元数据包含的未被压缩数据长度记为len1、压缩编码记为<dist,len2>;Rainbow检测模块102每次从元数据区1032读取一个元数据结构,直至预处理模块101输出的所有元数据被处理完成;
步骤4、Rainbow检测模块102从预处理模块101输出的解压缩数据中读取len1字节的数据,以活跃状态state作为输入,调用正则匹配引擎104扫描这些数据,并更新state;该过程将扫描每个数据所得到的state保存到辅助信息存储模块103的状态区1031,同时检查每个state是否为自动机的接收状态,将接收状态和对应的字符位置作为匹配到的模式信息,做为检测结果108输出;
步骤5、Rainbow检测模块102根据压缩编码<dist,len2>定位到该压缩编码在压缩算法使用的动态字典或静态字典中对应的数据区域,同时据压缩编码的信息定位该编码在状态区1031中所对应的区域和该编码的参考区域,将状态区1031中将该编码区域前一字符所在位置记为curPos,其参考区域前一字符所在位置记为refPos;
步骤6、检查refPos位置所保存的状态是否和活跃状态state等价:
如果等价,在状态区1031中将该编码所参考区域中的状态拷贝到当前区域,检查接收拷贝状态中是否存在接收状态,如果存在,那么就输出模式信息,完成后跳转至步骤3,读取下一个元数据结构;否则,跳转至步骤7;
步骤7、调用正则匹配引擎104扫描该编码中curPos位置的字符,更新state并同步写入状态区1031,然后将refPos和curPos各自向后移动一个字符;如果curPos不是该编码的尾部,则跳转至步骤6,继续下一次状态等价性判断;否则跳转至步骤3,读取下一个元数据结构。
基于上述基本思路,本发明提出一种加速检测基于双字典压缩数据的正则表达式匹配方法,其功能框架如图5所示,其基于检测系统,该检测系统主要包括预处理模块101、Rainbow检测模块102、辅助信息存储模块103和正则匹配引擎104。
该方法根据正则表达式规则107构建正则匹配引擎104,并通过预处理模块101解析输入的双字典压缩数据105,之后通过Rainbow检测算法实现加速检测,输出检测结果108。
预处理模块101结合静态字典106解析输入的双字典压缩数据105,将输出的解压缩数据直接交由Rainbow检测算法;预处理模块101同时还输出元数据,以辅助Rainbow检测算法加速检测。算法1以Brotli为例详细说明了预处理模块101除扫描静态字典之外的处理过程,预处理算法包括以下步骤:首先解析Brotli压缩数据,获取所有的压缩数据块Block(算法1第3行所示)。每个数据块对应一串被压缩的数据。对于每个数据块,可以解析出三个字段的信息,分别是insert-copy-length、literal以及distance。可以根据三个字段信息,还原出未压缩的数据,写入text;额外记录insert-copy-length以及distance作为元数据,写入元数据区metadata(算法1第5-11行所示)。
Rainbow检测算法根据元数据识别经由预处理解析后的解压缩数据,区分出原始状态时未被压缩的数据、被压缩编码所表示的数据。之后调用正则匹配引擎104逐字符匹配未被压缩的数据,并结合辅助信息所保存的自动机状态,采用Rainbow算法跳过检测部分被压缩编码所表示的数据。算法2以Brotli为例详细说明了Rainbow检测算法的处理过程,包括以下步骤:
读取解压后数据以及元数据信息,根据不同类型执行不同的操作:
如果是普通字符,直接调用自动机逐字符扫描(算法第5行、9-10行);
如果是编码数据,首先根据dist长度,判断当前冗余数据的参考串取自动态字典或者静态字典:如果是静态字典,根据dist计算出参考串在静态字典中下标的前一个下标refPos;如果是动态字典,直接计算出参考串在动态字典中对应位置的前一个位置refPos算法12-13行)。
在处理编码数据时,首先检查当前激活状态(curPos对应状态)和refPos对应位置的状态是否等价(算法第16行),如果等价,直接从参考区域复制状态,并记录匹配结果(算法17-19行),更新当前激活状态;如果不等价,直接调用自动机扫描(算法第23行),更新当前激活状态后,继续与参考区域refPos的对应状态比较,直到编码数据处理结束或者发现等价状态直接跳过扫描后续数据。
(4)方法示例
为了更直观地说明本发明所提出的Rainbow检测算法的处理过程,本发明使用图3所示的DFA检测图2所示的示例数据,检测过程如图6所示。图6中索引是解压后字符序列中每个字符的索引位置;输入字符为待检测的字符;元数据信息和类型给出的是字符序列对应压缩编码的详细信息,包括未被压缩的普通字符、静态字典、动态编码和静态编码;之后的每行列出的是相应过程所保存的自动机状态信息。
初始化(过程0):此时已经完成预处理过程,解压后的字符序列、元数据信息均已经得到,预扫描静态字典(索引[0,4])的操作也已完成。
过程1:Rainbow检测算法以初始状态0开始扫描输入的数据,即从索引5所处位置开始。首先读取元数据信息(7,5,6),得到一个未被压缩字符序列和一个压缩编码的信息,即索引[5,11]区间是长度为7字节的普通字符;索引[12,16]是被动态编码表示长度为5字节的字符序列,该字符序列与其参考字典中的字符相距为6字节,也就是索引[6,10]所在区域。因此Rainbow检测算法直接扫描索引[5,11]区间的普通字符,得到状态“0455561”,之后将所得到的状态存储在辅助信息中的状态区。在此过程发现一个接收状态6(过程1对应行的第二个6),表明匹配到一个模式,算法记录匹配到的模式信息。该过程结束后自动机的活跃状态为1。
过程2-1:Rainbow检测算法开始处理索引[12,16]处由动态编码表示的字符序列,首先检查活跃状态1和索引5处的状态0是否等价(箭头指示的状态)。
过程2-2:Rainbow检测算法发现状态0和状态1是等价状态,无需逐字符扫描该动态编码所表示的字符序列,直接将索引[6,11]处的状态拷贝至索引[12,16]处(虚线框所圈出的状态),拷贝过程发现接收状态6,记录匹配到的模式信息后将自动机的活跃状态置为拷贝状态中的最后一个,即状态6。
过程3-1:Rainbow检测算法读取第二个元数据信息(0,4,16),该元数据表示的数据中仅包含一个静态编码,没有普通字符。索引[17,20]处是静态编码表示的4字节字符序列,它所参考的字符序列处于静态字典中,两者之间的偏移距离为16字节。因此,算法检查活跃状态6和索引0处的状态0是否等价。
过程3-2:由于状态0和状态6不等价,算法需要调用DFA扫描索引17处的字符,得到活跃状态为1,并继续比较活跃状态1是否和索引1处的状态等价。
过程3-3,此时两个状态相等,也必然是等价的,因此算法直接将索引[2,4]处的状态到索引[18,20]处,拷贝过程中发现接收状态6,记录匹配到的模式信息,活跃状态置为6。
至此,Rainbow检测算法完成所有输入字符的检测过程,解压后的字符总数为16个,跳过检测8个字符,最终匹配到3个模式。
(5)性能评估
为说明实际效果,本发明选取真实的网络压缩数据和正则表达式规则集评估Rainbow检测算法的性能。其中,数据集为爬虫程序使用谷歌搜索关键字后获取的网页数据,这些网页均采用Brotli作为其压缩编码,对比方法将数据解压后重新使用Gzip压缩,数据集的特征如表2所示。正则表达式规则集为文献[3]和文献[4]所使用的Snort24、Snort31和Snort34三组规则集。
表2采集到的数据集特征
页面数量 解压缩后大小 Brotli压缩大小 Gzip压缩大小
873 218.59MB 52.15MB 62.22MB
在Xeon 4214R和128GB RAM(DDR4 3200MHz)平台上评估本发明的实施例,将其与解压后完全匹配的基线方法(Baseline),以及现有最好的仅能加速检测单字典压缩数据的方法(Twins)进行比较。评估过程以检测相同体积的未压缩数据所消耗的时间为评价指标,三种方法的检测时间如图7所示,从图中可以看出本发明的检测时间均明显小于基线方法和Twins方法。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定专利保护范围。

Claims (9)

1.一种加速检测基于双字典压缩数据的正则表达式匹配方法,其特征在于,包括以下步骤:
步骤1、构建正则匹配引擎(104);调用正则匹配引擎(104)扫描静态字典(106),并将返回的有限状态自动机状态存储到状态区,重置正则匹配引擎(104)的活跃状态state为初始状态;
步骤2、预处理双字典压缩数据,得到解压缩数据;同时从待检测的双字典压缩数据中解析出元数据并存储,所述元数据包括未被压缩数据长度记为len1、压缩编码记为<dist,len2>;
步骤3、读取一个元数据结构;
步骤4、从解压缩数据中读取len1字节的数据,以活跃状态state作为输入,调用正则匹配引擎(104)扫描,并更新state;该过程将扫描每个数据所得到的state保存在状态区(1031),同时检查每个state是否为自动机的接收状态,将接收状态和对应的字符位置作为匹配到的模式信息作为检测结果(108)输出;
步骤5、根据元数据包含的压缩编码<dist,len2>定位到该压缩编码在压缩算法使用的动态字典或静态字典中对应的数据区域,同时据压缩编码的信息定位该编码在状态区(1031)中所对应的区域和该编码的参考区域,将状态区(1031)中将该编码区域前一字符所在位置记为curPos,其参考区域前一字符所在位置记为refPos;
步骤6、检查refPos位置所保存的状态是否和活跃状态state等价:
若等价,将该编码所参考区域中的状态拷贝到当前区域,检查接收拷贝状态中是否存在接收状态,若存在,输出模式信息,然后跳转至步骤3,读取下一个元数据结构;否则,跳转至步骤7;
步骤7、调用正则匹配引擎(104)扫描该编码中curPos位置的字符,更新state并同步写入状态区(1031),然后将refPos和curPos各自向后移动一个字符;若curPos不是该编码的尾部,则跳转至步骤6;否则跳转至步骤3。
2.根据权利要求1所述的一种加速检测基于双字典压缩数据的正则表达式匹配方法,其特征在于,所述步骤1中,根据正则表达式规则集(107)构建正则匹配引擎(104)。
3.根据权利要求1所述的一种加速检测基于双字典压缩数据的正则表达式匹配方法,其特征在于,所述步骤2中,预处理双字典压缩数据包括以下步骤:
解析双字典压缩数据,获取所有的压缩数据块,每个数据块对应一串被压缩的数据;对于每个数据块,解析出三个字段的信息,分别是insert-copy-length、literal以及distance;根据三个字段信息,还原出未压缩的数据,写入text;额外记录insert-copy-length以及distance作为元数据存储。
4.根据权利要求1所述的一种加速检测基于双字典压缩数据的正则表达式匹配方法,其特征在于,所述步骤5包括以下步骤:
读取解压后数据以及元数据,判断数据类型:
若为普通字符,直接调用自动机逐字符扫描;
若为编码数据,首先根据dist判断当前冗余数据的参考串取自动态字典或者静态字典:
若为静态字典,根据dist计算出参考串在静态字典中下标的前一个位置refPos;
若为动态字典,计算出参考串在动态字典中对应位置的前一个位置refPos;
在处理编码数据时,首先检查当前激活状态和refPos对应位置的状态是否等价:
若等价,直接从参考区域复制状态,并记录匹配结果,更新当前激活状态;
若不等价,调用自动机扫描,更新当前激活状态后,继续与参考区域的对应状态比较,直到编码数据处理结束或者等价直接跳过。
5.一种加速检测基于双字典压缩数据的正则表达式匹配装置,其特征在于,包括预处理模块(101)、Rainbow检测模块(102)、辅助信息存储模块(103)和正则匹配引擎(104);所述正则匹配引擎(104)由正则表达式规则(107)构建,所述预处理模块(101)用于解析待检测的双字典压缩数据(105),所述Rainbow检测模块(102)用于实现检测,输出检测结果。
6.根据权利要求5所述的一种加速检测基于双字典压缩数据的正则表达式匹配装置,其特征在于,所述待检测的双字典压缩数据(105)由压缩算法采用自适应的动态字典和静态字典(106)所生成;所述预处理模块(101)结合静态字典(106)解析输入的双字典压缩数据(105),输出解压缩数据,将输出的解压缩数据发送至Rainbow检测模块(102);所述预处理模块(101)同时还输出元数据到辅助信息存储模块。
7.根据权利要求5所述的一种加速检测基于双字典压缩数据的正则表达式匹配装置,其特征在于,所述正则匹配引擎(104)使用基于有限状态自动机的实现方式。
8.根据权利要求5所述的一种加速检测基于双字典压缩数据的正则表达式匹配装置,其特征在于,所述辅助信息存储模块(103)用于存储辅助信息,包括状态区(1031)和元数据区(1032),所述辅助信息包括使用正则匹配引擎(104)匹配静态字典(106)和解压缩数据所返回的有限状态自动机状态,以及能够标识压缩数据原始构成的元数据,每个元数据包括未被压缩数据长度和压缩编码。
9.根据权利要求8所述的一种加速检测基于双字典压缩数据的正则表达式匹配装置,其特征在于,所述Rainbow检测模块(102)根据元数据区(1032)存储的元数据识别经由预处理模块(101)解析后的解压缩数据,区分出原始状态时未被压缩的数据、被压缩编码所表示的数据;之后调用正则匹配引擎(104)逐字符匹配未被压缩的数据,并结合辅助信息所保存的有限状态自动机状态,采用Rainbow检测算法跳过检测部分被压缩编码所表示的数据。
CN202310459944.4A 2023-04-25 2023-04-25 检测基于双字典压缩数据的正则表达式匹配方法和装置 Pending CN116484069A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310459944.4A CN116484069A (zh) 2023-04-25 2023-04-25 检测基于双字典压缩数据的正则表达式匹配方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310459944.4A CN116484069A (zh) 2023-04-25 2023-04-25 检测基于双字典压缩数据的正则表达式匹配方法和装置

Publications (1)

Publication Number Publication Date
CN116484069A true CN116484069A (zh) 2023-07-25

Family

ID=87219101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310459944.4A Pending CN116484069A (zh) 2023-04-25 2023-04-25 检测基于双字典压缩数据的正则表达式匹配方法和装置

Country Status (1)

Country Link
CN (1) CN116484069A (zh)

Similar Documents

Publication Publication Date Title
US9363309B2 (en) Systems and methods for compressing packet data by predicting subsequent data
US6320522B1 (en) Encoding and decoding apparatus with matching length detection means for symbol strings
US8120516B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
US11334609B2 (en) Semantic structure search device and semantic structure search method
US8924591B2 (en) Method and device for data segmentation in data compression
Deorowicz Universal lossless data compression algorithms
WO2005043380A2 (en) Methods and systems for processing print jobs
US20130262486A1 (en) Encoding and Decoding of Small Amounts of Text
CN103346800B (zh) 一种数据压缩方法及装置
JPS6356726B2 (zh)
CN107277109B (zh) 针对压缩流量的多字符串匹配方法
US11669553B2 (en) Context-dependent shared dictionaries
US6122402A (en) Pattern encoding and decoding method and encoder and decoder using the method
CN108563795A (zh) 一种加速压缩流量正则表达式匹配的Pairs方法
CN111767280A (zh) 数据处理方法、装置及存储介质
CN116484069A (zh) 检测基于双字典压缩数据的正则表达式匹配方法和装置
CN108573069B (zh) 一种加速压缩流量正则表达式匹配的Twins方法
CN108090115B (zh) 一种针对Gzip压缩数据的过滤方法及系统
US20130060561A1 (en) Encoding and Decoding of Small Amounts of Text
CN111049836A (zh) 数据处理方法、电子设备及计算机可读存储介质
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
CN114070471B (zh) 一种测试数据包传输方法、装置、系统、设备和介质
CN112527949B (zh) 数据存储与检索方法、装置、计算机设备及存储介质
US20150242433A1 (en) Data compression apparatus and data compression method

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