面向网络安全的正则表达式匹配技术.pdf
《面向网络安全的正则表达式匹配技术.pdf》由会员分享,可在线阅读,更多相关《面向网络安全的正则表达式匹配技术.pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件学报ISsN 1000一9825。CODEN RU)(UEw面“M口,D,跏憎,20ll,22(8):1838一1854【doi:lO3724,sPJ1001201104034】o中国科学院软件研究所版权所有面向网络安全的正则表达式匹配技术张树壮1+,罗浩2,方滨兴121(哈尔滨工业大学计算机科学与技术学院,黑龙江哈尔滨 150001)2(中国科学院计算技术研究所信息安全研究中心,北京 l00190)Regular Expressions Matching 1or Network SecurityE-mail:josisccnhttp:,wwwJosorgcnTel,】Fax:+8610一
2、62562563ZHANG Shu-ZhlKm91+, LU0 Ha02,FANG Bin-Xin91,21(school ofComput四Sci钮ce锄d Tecbnology,Harbin Ins6tIle ofTechnoIogy,H呐in 15000l,china)2(I墒眦ati衄s叫ty Research ccnt盱。Institute ofComp眦ing TechnoIogy,ne chinese Acad锄y ofSciences,Beijing lool90,Chim)+Corsponding肌也or:Email:吐姐gshllzllu蛆gpact5 1 8hiteduc
3、n,http:,p扯t5 l 8hite血cnZhang SZ,Luo H,Fang BXRegular expressions matching for network security,扫口,I一口f口,S砸,四,臂,201l,22(8):1838_18S4http:1nnjosorgcn1000一98254034h臼丑Abstract: This paper analyzes the regular expression matching metllodstime complexityspace complexity锄dthe tradeoff between themThe exper
4、iences,problems,姐d challenges encountered by也e regular expressionmatching in network securi哆field awellcl豁sified and discussed in dcpthFocusing on the伽o issues,acoInprchensive overview of tlle current optimizing techniques and s仃ategies adopted by academic柚d busiesscommunities is presentedFinallya c
5、onclusion and s哪e suggestions for mtIlre research are put forw砌Key words: signature matching;deep packet inspection;regul盯expression;finite叭tomata;memory reduction摘要: 分析了基于有穷状态自动机的正则表达式匹配方法的时间复杂度、空问复杂度以及二者之间的制约关系深入讨论了在网络安全应用中遇到的特有问题与挑战围绕这两个问题,对当前出现的多种优化技术和策略进行了全面的综述和评价。最后对未来的研究方向进行了总结和展望关键词: 特征匹配;深度
6、包检测;正则表达式;有穷自动机;内存缩减中图法分类号:TP393 文献标识码:A传统的网络安全检测是对数据包的结构化头部进行分析然而随着网络的不断发展,许多病毒、恶意代码、入侵指令、垃圾邮件等信息都隐藏在数据包的内容之中因此,当前在进行安全检测时,除了要对数据包头部进行检查之外,也要对数据包的内容进行检测,例如,入侵检测系统会针对各种入侵行为的特点建立一组入侵行为的特征模式集。并定义针对各种行为所应该采取的措施这些行为特征和对应的措施构成系统的安全规则,当发现给定数据命中系统的某条特征模式时则采取相应的措施病毒检测系统有个庞大的病毒特征库据统计,到2010年6月,网络病毒已接近758 473万
7、种。病毒检测的主要操作就是在每一个文件中搜索病毒库中的特征基金项目:国家自然科学基金(60903209);国家重点基础研究发展计划(973)(2007cB311loo);国家高技术研究发展计划(863)(2009从0lz437,2007从Olz406,2007从Olz467,2007从Olz442,2007从Olz474,2011从012504)收稿时间:201003-22;修改时间:2010IO-ll;定稿时间:201l一03-07C:Nn网络优先出版:20ll05-12 ll:47。http:饷伸Wcnkinetl【啪“detan,112560TP201105121147005h血l万方数
8、据张树壮等:面向网络安全的正则表达式匹配技术 1839这种使用一组给定的“特征”与网络中的数据内容进行比较。从而发现其中的恶意特征的方法称为深度包检测(deep packet inspection)对于网络安全应用来说,“特征”通常是指入侵检测、防病毒、垃圾邮件过滤等应用中定义的模式串,用来表示攻击、病毒或者垃圾邮件区别于正常网络流量的特征最初的安全规则以精确字符串为主然而,随着网络的不断发展,网络安全攻防双方的技术也在不断发展为了躲避检测,各种攻击、恶意代码等又都在不断刻意隐藏自己的特征,这使得安全系统中所需要的检测规则也越来越复杂例如,蛆o“1】规则:Alerttcp$HOMENET an
9、yj$EXTERNALJmT 1 863(msg:“CHAT MSN login attempt”;now:toserver,established;content:“usR”;d印th:4;nocase;content“TwN”;dist姐ce:1;nocase;)表示要同时匹配“usR”和“TwN”这两个关键词;同样,对于原本为简单字符串的关键词,在实际中也可能以各种不同的形式出现(例如,“模式匹配”可能会写成“模撑式群匹挣配”)这就需要逐一识别各个部分后再进行一定限定条件(位置顺序、有限间距等)的判断来进行识别可见,为了表达更精确的语义和上下文信息,需要将多个特征按照一定的顺序和限定条件
10、进行组合,形成一条复合的匹配规则上述这些问题所需要的规则形式无法用精确串来描述,因此,经典的多模串匹配算法如Ac【2】sBoM【3】wuMANBER【4】等也无法直接使用当人们发现应用层上各种复杂的协议和网络中的攻击方式已经越来越难以提取出准确的字符串特征时,正则表达式以其强大、灵活的表达能力,迅速成为描述新一代规则的主要工具商业界和开源社区都开始广泛使用正则表达式来增强协议特征和安全特征的描述例如,Li肌x应用层协议分类器(1inux application protocolclassifier,简称L7filter)【5】就全部采用正则表达式来识别100多种应用层协议,其中包含了多个复杂的
11、P2P协议开源的入侵检测系统snort在2003年以前,检测规则全部为精确字符串特征,但最新发布的规则集中,正则表达式的比例已经超过了40Bro入侵检测系统【6】也直接使用正则表达式来描述它的规则集在商业市场上,3com的TippingPointx505【7】以及Cisco的各种网络安全系统【8】都开始使用正则表达式目前,Cisco已经将基于正则表达式的内容检测集成到了其网络操作系统中在研究领域,UC Berkeley,bell1abs以及google的胁g yu等人网论述了正则表达式在网络安全检测和协议识别中的优势,对不同的匹配方法进行了分析和评价,并提出了规则改写和分组匹配等方法随后,由于
12、cisco公司的推动,Washin舀on University的Sailesh K_um碣Michela Becchi等人对这个问题进行了更为深入和细致的研究,提出了D2FA【10】、状态合并(state merging)【11】、HF“12】、混合自动机(hybrid FA)【13】以及)(】1A【14】等方法来实现大规模正则表达式的实用化这些工作大大提高了某些特殊类型的正则表达式的实用化和匹配效率国内学术界对高性能正则表达式匹配技术的研究也在不断加强,哈尔滨工业大学网络与信息安全技术研究中心、清华大学、国防科学技术大学、中国科学院计算技术研究所信息安全中心等,都在逐渐投入到这一关键技术的研
13、究中使用正则表达式来描述应用层各种协议和攻击的特征,比传统的提取精确匹配字符串方法更准确、更方便、更有效,然而,其强大的能力也使得它在实际应用中面临诸多的挑战本文第1节给出正则表达式匹配的定义并对各种匹配方法进行分析和比较,最后着重强调正则表达式在网络安全应用中所面临的挑战第2节第4节详细介绍正则表达式匹配技术亟待深入研究的两个关键问题:空间缩减和性能保证。详细论述解决这些问题的多种方法及策略,对其优缺点进行评价第5节对全文进行总结,并指出未来研究的若干方向1问题描述11正则表达式的匹配方法有穷自动机(finite automaton,简称FA)和正则表达式所表示的语言都是正则语言【15】,因
14、此通常用来实现对正则表达式的匹配有两种典型的有穷自动机可以完成这个任务:非确定型有穷自动机(nondeteministic finite跏tomaton,简称小砸A)和确定型有穷自动机(deteministic finite automaton,简称DFA)一个DFA包括5个部分:(1)有穷状态集合Q;(2)有穷的输入符号集合五又称为字母表;(3)转换函数磊又称为跳转函数,它以一个状态和一个输入符号作为变量,返回值为一个状态;(4)初始状态勖OoEQ);(5)接受状态集合F一个NFA同样包含这5个部分NFA与DFA的区别在于,DFA中6的返回值确定为1个状态;NFA中踞一个以状态和输入字符为变
15、量的函数,但是返回值是可能包含0个或多个状态的集合NFA和DFA之间可以进行相互转化,但是在从、A万方数据1840 面蝴耐矿绔删腮软件学报vol。22,No8,Au目娥20l l到DFA的转化过程中,可能会出现状态数目的剧烈增长,称为状态“爆炸”在本节的后面将会详细说明这种情况实际应用中,由于对需要处理的数据没有任何先验知识,因此无法确定是否存在一个子串匹配给定规则或者匹配的子串从何处开始在这种情况下,有两种方法来正确实现搜索:重复搜索和“一遍搜索(one pass search)”重复搜索的具体做法为:用给定表达式直接构建自动机,然后以输入字符串的每个字符为开始位置重复搜索在每次搜索过程中,
16、顺次读取并处理字符,直到找出了所有的匹配子串下一次搜索从上一次起始点的下一个字符开始(如果匹配类型为穷举匹配)或从最后一个匹配子串的下一个字符开始(如果匹配类型为非重叠匹配)。重复搜索通常用于语言的解析中因为可能要对同一个字符串进行多次搜索,所以其效率非常低在安全检测类应用中,通常使用“一遍搜索”法其做法为,将“,放在没有“”标记的表达式的开头,然后再构建成自动机这就意味着表达式所表示的模式可以出现在输入数据的任何地方只要从前到后一次扫描并处理每一个字符,就可以识别出从任何位置开始的匹配子串,本文后面的讨论都是针对这种情况12正则表达式匹配方法所面临的挑战在实际的应用系统中,通常都配置了多条规
17、则例如,17filter的正则表达式规则为100多条,而snort则为数千条为了叙述方便,本节中用m表示规则集中正则表达式的数目,以表示一条正则表达式的长度为了完成对m条正则表达式的匹配,有两种策略可供选择:(1)将每一条正则表达式编译成单独的一个FA;(2)将研条规则编译到同一个FA中。前者使用在snort和Linll】【L7 filter中,后者则在文献【9,lO】中被提出前面提到,对正则表达式的匹配需要使用有穷自动机来完成,但是A和DFA在实际应用中却有不同的优点和缺点NFA的优点是空间复杂度比较低,因为NFA的状态数目与正则表达式的长度成线性关系然而在处理每一个字符时,由于必须逐个处理
18、活动状态集合中的多个状态,因此匹配效率非常低若将多条规则编译到同一个M1A中,虽然可以在处理过程中同时匹配所有正则表达式的公共前缀,但在实际应用中却会形成更大数量的活动状态集合,处理一个字符的时间复杂度和将每个正则表达式编译成单独一个NFA的时间复杂度相同相比之下,虽然DFA处理一个字符只需要访问一个状态,但若将每条正则表达式编译成单独的DFA,其时间复杂度同样将随着规则数目的增多而增大而将所有的正则表达式编译成一个混合DFA时,则会导致其空间需求大大增加,以当前的硬件条件将无法满足如此大的内存需求使用不同的方法和策略进行匹配时所需要的空间复杂度和处理一个字符的时间复杂度见表1Table l
19、Time锄d space co唧lex时of Various categories孤d methods表l 不同策略和方法下的时空复杂度!坐P!坦翌!g!型!P堡!i!墅!翌坠 !坐P!丝!耻!些!P堡!i!墅i!堕!g!垒!i型!罂P!坠i垒 曼P竺!虫!i丝 !i堕!磐!坠!壁 !P堑!坐!i盟NFA D伽州) 0(小n) D伽2刖) 0(m厅1旦坠 2f竺2 g兰:=2 912 Q(;:2从表1中可以看出,两种方法以及两种策略所形成的4种组合都无法同时满足空间复杂度和时间复杂度比较低的需求要想对正则表达式进行实际应用。必须降低NFA处理一个字符所需要的时间复杂度或者对DFA所需要的内存空
20、间进行缩减NFA的时间复杂度是由其理论模型所决定的。所以在不改变处理器体系结构的情况下很难对其进行改进,因此,当前的研究大多集中于对DFA的内存进行缩减DFA的内存消耗主要用于存储各个状态及其转换表,其空间需求由状态数目决定下面给出几种典型的情况,它们会导致DFA状态数目急剧增长而又在实际规则中频繁出现121 单条正则表达式构建DFA时的状态膨胀第1种导致状态增长的情况是,带有n符号的表达式中某个字符后面带有重复标记,且这个字符与其前驱字符出现了重叠覆盖,此时,需要大量的状态对所有可能的字符排列组合情况进行区分,例如,表达式“qH【,、3)D”中,【】与字符曰的交集为曰,其构成的DFA如图l所
21、示一般来讲,如果重复次数为,次,则阴影部分所包括的状态所形成三角形高为pl,长为p1,总共需要的状态为D酽)万方数据张树壮等:面向网络安全的正则表达式匹配技术Fig1 A DFA for pattem“佃+“切】3D图l模式“忸+【“3D”形成的DFA1841第2种导致状态增加的原因是,不带有“符号的表达式通配符或者一组字符后带有有限重复操作符(册,栉,咒)此时,DFA需要考虑任取字母表中的拧个字符可以组成的所有情况,因此需要o(24)个状态来记录例如,叫一CD,如果在后续的字符串中出现了爿,那么如图2所示,每个状态都需要处理似和not彳)两种情况为什么虽然第2种表达式与第1种表达式形式类似却
22、有截然不同的空间复杂度(D(朋2)和D(2“)呢?因为在第1种情况下,中间的状态每个只需要派生出一种新状态,或者转回到某个旧状态;而在第2种情况下,每个中间状态都可能派生出多个状态,从而造成指数级增长 彳AFig2 A DFA for pattem“切2)C-D”图2模式“物2)cD”形成的DFA122 多条正则表达式构建DFA时的交互作用上面描述了单条正则表达式构建在DFA时导致状态数目增长的情况然而有些情况下,即使原来的单条规则不会引发状态数目的增加,一旦当将多条正则表达式编译在同一个DFA中,它们之间也会由于相互作用而造成DFA状态数目的急剧增长例如,口6谢和够劝,如图3所示,这两条规则
23、在单独构建时都不会引起DFA数目的增长,但由于两个表达式中的“妒都可以匹配另一条正则表达式所匹配的所有字串,因此将它们编译到一个DFA中时,必须用额外状态记录所有可能的组合情况,形成的DFA和示意图如图4和图5所示一般而言,当多条规则编译在一起时,如果有七个正则表达式,每个表达式中出现工次“,则需要o(H)勺个状态来记录所有可能出现的前缀的幂集在这种情况下,即使每个规则只有1个“,操作符,增加一个类似的规则也会使得DFA的状态数目增加1倍在L7filter中有很多类似的规则,例如,识别远程桌面协议的“fdpdr万方数据1842 乃“埘讲矿S够w口愆软件学报v0122,No8,AugIIst 2
24、叭1幸cliprdr+rdpsnd”和Int锄et radio协议的“membemame事session+player”snort中也存在大量类似规则,而且某些规则中,“符号的数目甚至达到了6个Fig3 DFAs for pattem如+cd and巧+曲图3模式曲+甜和盯+办各自形成的DFAFig4 Composite DFA for pattem口64cd and盯+办图4模式曲甜和盯+劝编译在一起形成的DFAFig5 Exemplification ofDFA obtained by compiling“幸船l口幸衄16”and“2宅E2口十月点26together图5将模式“+见914
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 网络安全 正则 表达式 匹配 技术
限制150内