本发明专利技术公开了一种基于智能有限自动机(Smart?Finite?Automaton,SFA)的正则表达式匹配方法:选取合适的正则表达式规则集;构建智能有限自动机;通过智能有限自动机匹配方法对每个读入的测试集分别进行字符串匹配,并对匹配结果进行统计。实验结果表明,与XFA相比,SFA在存储空间开销上减少了44.1%,在存储器访问次数上减少了69.1%,提高了正则表达式匹配的时空效率。解决了XFA存在的冗余迁移边问题,能够有效的节省存储空间,同时也提高了XFA的性能。为当前网络带宽和业务流量迅猛增长环境下,正则表达式匹配方法应用时面临的线速数据包处理的吞吐量要求和存储空间需求提供了一种行之有效的解决方案。
【技术实现步骤摘要】
本专利技术涉及电子计算机网络技术,具体是一种。
技术介绍
N ^ Λ If ^ IlJ % K fp % 统(Network Intrusion Detection and PreventionSystems, NIDS/NIPS)是网络安全防御的重要手段,即通过实时监测网络流量,检查每个数据包的头部信息和有效载荷(即数据包内容),识别和阻断网络可疑行为。 NIDS/NIPS的核心是深度数据包检测(De印Packet Inspection, DPI),即采用特征匹配算法,将每个数据包内容与一组预定义的特征进行匹配。DPI技术不仅应用于NIDS/NIPS,而且还应用于应用层数据包分类、P2P流量识别、基于内容的流量计费等。特征匹配算法可分为字符串匹配算法和正则表达式匹配算法。由于正则表达式具有丰富灵活的表达能力,当前的主流NIDS/NIPS,例如Snort [2]、Bro [3]、TippingPoint IPSXicso IOS IPS等,已采用正则表达式来描述复杂攻击特征,以及采用正则表达式匹配算法来替代字符串匹配算法。正则表达式匹配算法采用有限自动机来表示一组已知攻击的特征正则表达式。有限自动机分为确定型有限自动机(Deterministic Finite Automata, DFA)和非确定型有限自动机(Nondeterministic Finite Automata,NFA)。DFA 具有时间高效等优点,即匹配速度快,但是存在存储空间开销大等缺点;而NFA具有存储空间高效等优点,但是存在匹配速度慢等缺点。如何设计一种时空高效的有限自动机成为正则表达式匹配算法的关键间题。随着网络带宽和业务流量的迅猛增长,正则表达式匹配算法面临高速海量数据包处理的高性能挑战。一方面,正则表达式匹配算法要求实现10-40(ibpS线速数据包处理; 另一方面,正则表达式匹配算法要求有限自动机存储在小容量的快速存储器(例如片上 SRAM)上,从而进一步提高其吞吐量。DFA采用五元组定义,即D = (Q,Σ,S,qQ,F),其中Q 是状态集合,Σ是输入字母表集合,δ是状态迁移函数,Q(I是起始状态,F是接受状态集合, 且FeG。当输入字符a时,对于任意状态q e Q,根据状态迁移函数δ,D迁移到下一状态 q' = δ (q,a)。针对正则表达式的DFA构建,首先采用Thompson构造法将正则表达式转化为NFA,其次采用子集构造法将NFA转化为等价的DFA。图1给出了正则表达式{. *ab. *cd} 的单独DFA,其中状态空间为{P,Q,R,S,T},字母表为Σ= {a, b,c,d}。例如,起始状态为 q0 = P,状态迁移函数为δ (P,a) = Q、δ (Q,b) = R等,且接受状态T。在高速网络环境中,随着特征规则集日益庞大,DPI采用一组单独DFA进行特征匹配,导致处理时间增加、匹配效率降低,因而DPI采用联合DFA来表示一组DFA。但是,联合 DFA带来状态空间爆炸问题,即多个单独DFA的状态排列组合来记录部分匹配结果,导致联合DFA难以存储在小容量的快速存储器上执行,增加慢速存储器访问次数,从而降低正则表达式匹配算法的吞吐量。图2给出了正则表达式{· *ef. *gh}的单独DFA,其中状态空间为{V, W,X,Y,Z},3字母表为Σ = {e,f,g,h}。图3给出了正则表达式{.*ab.*cd}和{.*ef.*gh}的联合DFA。 为了清晰起见,图3省略了其他状态到初始状态的迁移边。图1和图2显示,单独DFA分别包含5个状态;而图3显示,联合DFA包含16个状态。联合DFA的状态个数与正则表达式中通配符(例如“*”)的个数密切相关。由于通配符,即星号“*”,表示任意字符,当联合 DFA表示正则表达式{. *ab. *cd}和{. *ef. *gh}时,两个单独DFA的状态进行叉积组合,产生指数级增长的额外状态个数,造成DFA状态空间爆炸。为了消除联合DFA的状态空间爆炸问题,Sm i th等人提出了扩展有限自动机 (XFA),即采用辅助变量替代额外状态来记录部分匹配结果,执行简单操作指令来检查匹配是否成功。如果联合DFA的状态个数小于单独DFA的状态数之和,则每个单独DFA是非歧义的;反之,如果每个单独DFA是非歧义的,则联合DFA也是非歧义的。歧义的联合DFA采用歧义状态来记录部分匹配结果的所有排列组合。针对歧义的联合DFA,XFA是在DFA状态上增加辅助比特变量,消除歧义状态,并在接受状态上执行比较指令,检查辅助比特变量是否设置。XFA匹配过程是当读入一个字符时,XFA查找当前状态的相应迁移边,迁移到下一状态;执行下一状态的操作指令,检查辅助变量是否设置来判断匹配是否成功。XFA采用七元组定义,即X = (Q,V,Σ,δ,U,(q0, vQ),F),其中Q是状态集合,V是辅助变量集合,Σ是输入字母表,δ :QX Σ—Q是状态迁移函数,U :QXV —V是每个状态的更新函数,Q0是起始状态,V0是辅助变量的初始值,FEe^是接受状态集合。DFA是根据当前状态和输入字符来迁移到下一个状态,而XFA是根据当前状态、辅助变量和输入字符来迁移到下一个状态并更新相应的辅助变量。例如,对于正则表达式{· *ab. *cd}和{· *ef. *gh},图1和图2中的两个单独DFA 的状态个数之和为10,而图3中的联合DFA的状态个数为16,因而联合DFA是歧义的。针对正则表达式{. *ab. *cd},XFA采用1个比特辅助变量Bitl来记录部分匹配结果ab ;针对正则表达式{.*ef.*gh},XFA采用1个比特辅助变量Bit2来记录部分匹配结果ef。图4给出了正则表达式{· *ab. *cd}和{· *ef· *gh}的联合XFA,即采用9个状态和2个比特辅助变量,与图3中的联合DFA是等价的,且消除了其状态空间爆炸。XFA虽然消除了 DFA状态空间爆炸问题,但是存在冗余迁移边问题,导致存储空间需求大,从而增加存储器访问次数,限制了 XFA的性能。为了简明指出冗余迁移边问题,当分别读入字符串为abababcd和abcdabcdabcdefgh,给出图5和图6的XFA示例。图5给出了正则表达式{.*ab.*cd}的XFA,其中包含5个状态和17条迁移边。当读入字符串abababcd时,XFA的状态迁移序列为P — Q — R — Q — R—Q — R—S — T; 当第1次到达状态R时,辅助变量Bitl设置为1,表示等待到达状态S和T,检查指令语句来指出匹配成功;由于XFA未记录到达状态R,即已部分匹配字符串ab,而等待后续字符串 cd, XFA的迁移状态中2次出现重复状态Q和R,导致不必要的状态迁移,从而产生额外的存储器访问次数和状态查找等开销。图6给出了正则表达式{. *abcd. *efgh}的XFA,其中包含9个状态和33条迁移边。当读入字符串abcdabcdabcdefgh时,XFA的状态迁移序列为0 —1 — 2 — 3 — 4—1 — 2 — 3 —4—i —2 —3 —4 —5 —6 —7 —8,其中状态1、2、3和4重复出现3次;当第1次到达状态 3时,辅助变量Bitl设置本文档来自技高网...
【技术保护点】
1.一种基于智能有限自动机的正则表达式匹配方法,其特征在于,该方法为:1)选取合适的正则表达式规则集;2)构建智能有限自动机;3)通过智能有限自动机匹配方法对每个读入的测试集分别进行字符串匹配,并对匹配结果进行统计。
【技术特征摘要】
1.一种基于智能有限自动机的正则表达式匹配方法,其特征在于,该方法为1)选取合适的正则表达式规则集;2)构建智能有限自动机;3)通过智能有限自动机匹配方法对每个读入的测试集分别进行字符串匹配,并对匹配结果进行统计。2.根据权利要求1所述的基于智能有限自动机的正则表达式匹配方法,其特征在于,所述的正则表达式规则集选取方法为,采用100个规则集,每个规则集包含100条形式为{. *SubStrl. *SubStr2. . . . *SubStrN}的正则表达式,其中子串 SubStrl、SubStr...
【专利技术属性】
技术研发人员:李彦彪,徐析,张洁坤,黄昆,
申请(专利权)人:湖南亿谷信息科技发展有限公司,
类型:发明
国别省市:43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。