一种多字符串匹配方法和芯片组成比例

技术编号:2918825 阅读:208 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种多字符串匹配方法和芯片,属于信息处理领域。所述方法包括:接收到当前字符后,根据当前状态、缓存状态和所述当前字符在转换规则库中查找下一个状态;所述缓存状态为根据预设的缓存规则存储的状态;查找成功后,跳到下一个状态,将所述下一个状态作为当前状态,重复前面的步骤,直至没有字符输入。所述芯片包括:接口模块、状态寄存器、缓存状态寄存器、转换规则模块和控制模块。本发明专利技术通过利用缓存状态机原理,可以消除绝大多数的交叉转换规则,彻底地解决空间爆炸问题。另外,本发明专利技术利用缓存状态机原理,进行同构路径的合并,可以减少基本转换规则数量,从而实现存储空间随着规则数量增加亚线性增长,能够有效降低空间需求。

【技术实现步骤摘要】

本专利技术涉及信息处理领域,特别涉及一种多字符串匹配方法和芯片
技术介绍
多字符串匹配技术,也叫多关键词匹配技术,已经比较成熟,并且广泛的应用于文本处理、内容过滤等很多领域。该技术能够在一维的待匹配内容中发现预先定义的一组字符串中的一个或多个,在匹配文本的过程中,充分利用一组字符串中的特点,进行预处理,并且根据预处理后的中间数据结构进行内容匹配,从而实现对一组预定义字符串的匹配。多字符串匹配算法的性能主要受以下几方面影响字符串集合(也叫规则集、特征集、关键词集)的数量、字符串集合的最小长度、待匹配文本中出现匹配的可能性等。根据多字符串匹配技术对字符串集合预处理方法的不同,相关匹配算法可以分为以下三类前缀算法,包括KMP、AC、Shift-AND、Shift-OR等;后缀算法,包括Boyer-Moore、Wu-Manber等;子串模式算法,包括BDM、BOM、SBDM、SBOM等。在网络安全领域中,有一类基于内容的安全应用需要利用多字符串匹配技术,典型应用如入侵检测和防御系统、垃圾邮件过滤、病毒扫描和过滤、恶意代码扫描和过滤、内容过滤等。这类应用对多字符串匹配技术的典型使用方式是通过程序抓取网络中的数据包,并将其还原成特定网络层的数据,根据预先定义的规则集(如入侵规则、病毒规则、垃圾邮件规则等)在数据中进行匹配。由于网络带宽的发展十分迅速,为了能够满足千兆甚至更高网络带宽下内容的安全应用需求,对高性能的多字符串匹配技术的需求十分迫切。为了不断提高多字符串匹配技术的匹配性能,出现了一些改进的软件算法,尽管改进的算法匹配性能有一定的提高,但提高幅度仍然十分有限,通常能够较传统算法提高性能20%-40%。仅通过软件实现上述已有算法已经无法满足实际系统对该技术的性能需求。在实际的多字符串匹配技术应用中,有一个算法因为具有如下一些特点而倍受青睐匹配的性能与规则库的大小无关、匹配的性能与规则库的最小长度无关、匹配的性能与规则库和待匹配文本之间的关系无关。这个软件算法叫做AC(Aho-Corasick)算法。如图1所示,其中,圆圈表示状态,线条表示转换规则,有6个状态和16个转换规则,以字符串集合P={SIG,SSH}进行匹配为例,AC算法将P进行预处理,对其构造一个有限状态自动机(DFA,Deterministic Finite Automata),通过该有限状态自动机,对待匹配的一维文本(比如SSSIG),可以每次读入一个字符,并且在上述结构中根据转换关系,每次向前前进一个位置,当到达S3或者S5位置时,算法报告出一个有效匹配。尽管AC算法具有上述优点,但也有比较明显的缺陷。对于P={SIG,SSH}这样简单的规则集,该算法的中间结构(即DFA)一共需要6个状态和16个转换规则。随着规则集中规则数量的增加,AC算法中间结构的规模将成指数形式递增,造成存储空间爆炸,应用领域十分有限。现有技术中还有提出了一种带优先级的转换规则存储方法,可以将AC算法中将状态带回初始状态和初始状态的下状态的转换规则合并成最多256条规则。在实际应用中,可以在一定程度上减少转换规则的数量。该技术将状态带回初始状态的转换规则定为高优先级,将状态带回初始状态的下状态的转换规则定为次优先级。参见图2,其中,圆圈表示状态,线条表示转换规则,有6个状态14条规则,通过优先级描述,实际存在的规则为6条,如表1所示表1 该方法也没有解决随着规则数量增加存储空间爆炸的问题,针对大规模特征集进行匹配仍需要极大的空间代价。随着网络安全应用中恶意代码的增多,预先定义的规则集中包含的规则数量也迅速增加。例如,对于入侵检测规则库,现有的规则数量超过5千;对于病毒规则,现有的规则数量超过20万。为此,在追求提高匹配性能的同时,还需要匹配技术能够处理大规模规则库(超过5万条以上规则的规则库可以称为大规模规则库)的匹配问题。传统的算法尽管可以支持对较大规模的规则库进行多字符串匹配,但对存储空间的影响很明显,降低了匹配速度,一般不具有实用性。
技术实现思路
为了解决网络安全领域目前对多字符串匹配技术的实际需求,即高匹配速度和对大规模规则集匹配等,本专利技术提供了一种多字符串匹配方法和芯片。所述技术方案如下一种多字符串匹配方法,所述方法包括步骤A接收到当前字符后,根据当前状态、缓存状态和所述当前字符在转换规则库中查找下一个状态;所述缓存状态为根据预设的缓存规则存储的状态;步骤B查找成功后,跳到下一个状态,将所述下一个状态作为当前状态,返回步骤A,直至没有字符输入。所述步骤A具体包括步骤A1接收到当前字符后,检查基本转换规则中是否有下一个状态,如果有,根据缓存规则将所述下一个状态缓存或清空缓存,并执行所述步骤B;否则,执行步骤A2;步骤A2在基本转换规则中检查当前状态为缓存状态、接收的字符为所述当前字符时是否有下一个状态,如果有,根据缓存规则将所述下一个状态缓存或清空缓存,并执行所述步骤B;否则,执行步骤A3;步骤A3在基本转换规则中检查当前状态为初始状态、接收的字符为所述当前字符时是否有下一个状态,如果有,根据缓存规则将所述下一个状态缓存或清空缓存,并执行所述步骤B;否则,跳到初始状态。所述预设的缓存规则具体为在基本转换规则中查看初始状态接收当前字符时,如果存在下一个状态,则将所述下一个状态缓存,如果不存在下一个状态,则清空缓存。所述步骤A前还包括合并基本转换规则中的同构路径。所述预设的缓存规则具体为如果当前状态为汇聚状态,则将所述当前状态缓存;如果当前状态为脱离状态,则取出缓存中的缓存状态,并清空缓存,如果当前状态为一般状态,则不对缓存进行操作。所述步骤A具体包括接收到当前字符后,判断当前状态的类型;如果所述当前状态为汇聚状态,根据所述预设的缓存规则将所述当前状态存储在缓存中,并按照基本转换规则查找下一个状态;如果所述当前状态为一般状态,则按照基本转换规则查找下一个状态;如果所述当前状态为脱离状态,将缓存中的缓存状态取出,根据所述当前状态、缓存状态和当前字符在转换规则库中查找下一个状态。本专利技术还提供了一种多字符串匹配芯片,所述芯片包括接口模块、状态寄存器、缓存状态寄存器、转换规则模块和控制模块。所述接口模块用于接收输入的字符;所述状态寄存器用于存储当前状态;所述缓存状态寄存器用于存储缓存状态;所述转换规则模块用于存储状态转换规则库,并根据所述接口模块接收的字符、所述状态寄存器中存储的当前状态和所述缓存状态寄存器中存储的缓存状态查找下一个状态;所述控制模块用于控制所述接口模块正常接收输入的字符、所述控制状态寄存器更新当前状态、所述控制缓存状态寄存器更新缓存的状态、以及控制所述转换规则模块查找下一个状态。所述转换规则库中的基本转换规则为合并同构路径后的基本转换规则。本专利技术提供的技术方案的有益效果是本专利技术提出了一种缓存状态机原理,通过利用缓存状态机原理,可以消除绝大多数的交叉转换规则和基本转换规则中的同构路径,彻底地解决空间爆炸问题,能够有效降低空间需求。附图说明图1是现有技术中的基于有限状态自动机AC算法转换规则示意图;图2是现有技术中的基于有限状态自动机带优先级的AC算法转换规则示意图;图3是现有技术中的有限状态自动机的结构示意图;图4是本专利技术提供的缓本文档来自技高网
...

【技术保护点】
一种多字符串匹配方法,其特征在于,所述方法包括:步骤A:接收到当前字符后,根据当前状态、缓存状态和所述当前字符在转换规则库中查找下一个状态;所述缓存状态为根据预设的缓存规则存储的状态;步骤B:查找成功后,跳到下一个状态,将所 述下一个状态作为当前状态,返回步骤A,直至没有字符输入。

【技术特征摘要】

【专利技术属性】
技术研发人员:嵩天
申请(专利权)人:北京哲安科技有限公司嵩天
类型:发明
国别省市:11[中国|北京]

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1