CN102073530B - 一种多条正则表达式的增量分组方法 - Google Patents

一种多条正则表达式的增量分组方法 Download PDF

Info

Publication number
CN102073530B
CN102073530B CN201010611580.XA CN201010611580A CN102073530B CN 102073530 B CN102073530 B CN 102073530B CN 201010611580 A CN201010611580 A CN 201010611580A CN 102073530 B CN102073530 B CN 102073530B
Authority
CN
China
Prior art keywords
ruler
dfa
group
status number
hardware
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.)
Active
Application number
CN201010611580.XA
Other languages
English (en)
Other versions
CN102073530A (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.)
National Computer Network and Information Security Management Center
Dawning Information Industry Beijing Co Ltd
Original Assignee
National Computer Network and Information Security Management Center
Dawning Information Industry 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 National Computer Network and Information Security Management Center, Dawning Information Industry Beijing Co Ltd filed Critical National Computer Network and Information Security Management Center
Priority to CN201010611580.XA priority Critical patent/CN102073530B/zh
Publication of CN102073530A publication Critical patent/CN102073530A/zh
Application granted granted Critical
Publication of CN102073530B publication Critical patent/CN102073530B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种多条正则表达式的增量分组方法,在不降低实时性的同时,同样的硬件空间大小,可增加了硬件处理正则式的数量,从而改善了系统工作的硬件处理能力。根据硬件的并行空间的大小,自动进行分组编译,已帮助FPGA实现并行匹配的功能。

Description

一种多条正则表达式的增量分组方法
技术领域
本发明涉及网络安全领域,具体涉及一种增量分组编译正则表达式的方法。
背景技术
随着网络技术的不断发展,网络安全问题日益凸显,内容安全也越来越受到重视。网络安全系统功不可没,它防止了有害信息的网络传播,它防止了国家或企业机密信息的网络泄漏。主要的网络安全系统有入侵检测系统(Intrusion Detection System,IDS)和入侵防御系统(Intrusion PreventionSystem,IPS),等等。通过对入侵行为的检测,来加强信息安全防御能力。现有的IDS或者IPS中,例如Snort、BRO等,多数采用了设定规则的方式对网络数据包进行包头或者/和内容的检查,符合指定规则的数据包,根据规则对应的处理办法进行处理,或是转发,或是日志。另外,网络安全还有一个重要的技术是病毒检测,通过对数据包进行病毒特征的检测,检测到数据包不上传主机,从而避免主机受到病毒的入侵。由于病毒种类繁多,这类病毒特征库非常庞大。可见,通过规则和特征进行匹配的方法,将成为影响这类系统性能的重要因素。在很多系统中,也采用了正则表达式的方式来表达规则和特征,通过较少的正则表达式浓缩更多的规则和特征。
但是利用正则表达式规则,进行对比匹配,会消耗大量的系统资源,从而降低系统的性能。当正则式条数很大时,系统的性能将受到严重影响,因此许多研究开始通过定制的ASIC(Application-specific Integrated Circuit)或者定制的FPGA(Field-programmable Gate Array)来协同主机进行正则表达式的匹配工作,以减轻主机系统的负担,带来提升整个系统的性能的结果。
利用正则表达式进行对比匹配,通常会将其转换为确定有限自动机(Deterministic Finite Automata,DFA)或者非确定有限状态机(Nondeterministic Finite Automation,NFA),利用状态的跳转来进行匹配。通常NFA的方法需要需要回溯,匹配速度慢;而DFA的方法不需要回溯,匹配速度非常快,但是其空间的消耗很大,对于规则数量较多时,会引起空间的爆炸。因此,利用定制的ASIC和FPGA都面临硬件面积有限,而规则数量多,将面临硬件无法存储这么多规则生成的DFA的问题。
利用DFA进行正则式的匹配,实时性非常好,但正则式规则数量多时,将带来存储空间的爆炸。假设有n条正则式,其计算的时间复杂度是0(1),但其空间复杂度是0(2n)。利用FPGA去做协同处理的话,如果规则生成的DFA空间超过了硬件支持的空间,这将有一些规则无法进行片上处理。
发明内容
本发明为解决上述问题利用了FPGA的并行处理特性,采用多路引擎对正则式进行识别。
一种多条正则表达式的增量分组方法,步骤如下:
A、读取N条正则式;
B、生成两两间状态数之和,为增量编译的依据;
C、根据两两间状态数之和,采用冒泡法进行排序;
D、增量编译前,初始化变量ruler_no=0,old_ruler_no=0和i=0;
E、设置第i组的状态阈值,根据硬件板卡上各块空间的大小,设置该组支持状态数的阈值;
F、按照步长STEP,以该变量递增方式更新ruler_no;如果(ruler_no+STEP)大于等于n,则ruler_no等于n,如果小于n,则ruler_no设置为(ruler_no+STEP);
G、编译[old_ruler_no,ruler_no)之间规则,得到DFA的状态数;
H、此时状态数和该组的状态阈值进行比较,如果小于则判断ruler_no是否等于n,等于则到步骤12保存该组DFA[i],不等于则返回步骤F;如果等于则到步骤L保存该组DFA[i];如果大于则进行步骤J;
I、ruler_no减1;
J、编译[old_ruler_no,ruler_no)之间规则,得到DFA的状态数;
K、此时状态数和该组的状态阈值进行比较。如果小于等于则到步骤L保存该组DFA[i];如果大于则会对步骤J;
L、保存该组DFA[i],保存编译好的合适硬件空间的DFA;
M、判断是否结束,当i大于等于硬件空间的最大分组数MAX_GROUP_NUM时,或者所有规则已经编译完成ruler_no等于n时,退出;否则i加1后,继续回到步骤E。
本发明在不降低实时性的同时,同样的硬件空间大小,可增加了硬件处理正则式的数量,从而改善了系统工作的硬件处理能力。根据硬件的并行空间的大小,自动进行分组编译,已帮助FPGA实现并行匹配的功能。
附图说明
图1是本发明计算状态和示意图
图2是本发明流程图
具体实施方式
本方法根据硬件提供的并行空间大小,以增量方式自动分组进行DFA编译的软件处理方法,已帮助硬件实现并行匹配的功能。
具体的操作步骤如下:
1.读取正则式:n条正则式
2.生成两两间状态数之和,为增量编译的依据,由于多条DFA编译会产生状态空间的爆炸,因此从某种程度上,可以用两两间的状态数之和来反映该条规则引起爆炸剧烈程度,值越高,将会引起更大的空间爆炸。例如规则1的两两状态数之和为dfa_size(1,2)+dfa_size(1,3)+…+dfa_size(1,n)。依次类推,生成所有规则的两两状态数之和。
3.根据两两间状态数之和,采用冒泡法进行排序。
4.增量编译前,初始化变量ruler_no=0,old_ruler_no=0和i=0。
5.设置第i组的状态阈值,根据硬件板卡上各块空间的大小,设置该组支持状态数的阈值。
6.按照步长STEP(比如:STEP设置为5),以该变量递增方式更新ruler_no。如果(ruler_no+STEP)大于等于n,则ruler_no等于n,如果小于n,则ruler_no设置为(ruler_no+STEP)。
7.编译[old_ruler_no,ruler_no)之间规则,得到DFA的状态数。
8.此时状态数和该组的状态阈值进行比较。如果小于则判断ruler_no是否等于n,等于则到步骤12保存该组DFA[i],不等于则返回步骤6。如果等于则到步骤12保存该组DFA[i]。如果大于则进行下面的步骤9。
9.ruler_no减1。
10.编译[old_ruler_no,ruler_no)之间规则,得到DFA的状态数。
11.此时状态数和该组的状态阈值进行比较。如果小于等于则到步骤12保存该组DFA[i]。如果大于则会对步骤9。
12.保存该组DFA[i]。保存编译好的合适硬件空间的DFA。
13.判断是否结束,当i大于等于硬件空间的最大分组数MAX_GROUP_NUM时,或者所有规则已经编译完成ruler_no等于n时,退出;否则i加1后,继续回到步骤5。

Claims (1)

1.一种多条正则表达式的增量分组方法,其特征在于:步骤如下:
A、读取n条正则式;
B、生成两两间状态数之和,为增量编译的依据;
C、根据两两间状态数之和,采用冒泡法进行排序;
D、增量编译前,初始化变量ruler_no=0,old_ruler_no=0和i=0;
E、设置第i组的状态阈值,根据硬件板卡上各块空间的大小,设置该组支持状态数的阈值;
F、按照步长STEP,以该变量递增方式更新ruler_no;如果ruler_no+STEP大于等于n,则ruler_no等于n,如果小于n,则ruler_no设置为ruler_no+STEP;
G、编译[old_ruler_no,ruler_no)之间规则,得到DFA确定有限自动机的状态数;
H、此时状态数和该组的状态阈值进行比较,如果小于则判断ruler_no是否等于n,等于则到步骤L保存该组DFA[i];不等于则返回步骤F;如果等于则到步骤L保存该组DFA[i];如果大于则进行步骤I;
I、ruler_no减1;
J、编译[old_ruler_no,ruler_no)之间规则,得到DFA的状态数;
K、此时状态数和该组的状态阈值进行比较;如果小于等于则到步骤L保存该组DFA[i];如果大于则回到步骤I;
L、保存该组DFA[i],保存编译好的合适硬件空间的DFA;
M、判断是否结束,当i大于等于硬件空间的最大分组数MAX_GROUP_NUM时,或者所有规则已经编译完成ruler_no等于n时,退出;否则i加1后,继续回到步骤E。
CN201010611580.XA 2010-12-17 2010-12-17 一种多条正则表达式的增量分组方法 Active CN102073530B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010611580.XA CN102073530B (zh) 2010-12-17 2010-12-17 一种多条正则表达式的增量分组方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010611580.XA CN102073530B (zh) 2010-12-17 2010-12-17 一种多条正则表达式的增量分组方法

Publications (2)

Publication Number Publication Date
CN102073530A CN102073530A (zh) 2011-05-25
CN102073530B true CN102073530B (zh) 2015-04-29

Family

ID=44032076

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010611580.XA Active CN102073530B (zh) 2010-12-17 2010-12-17 一种多条正则表达式的增量分组方法

Country Status (1)

Country Link
CN (1) CN102073530B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102387159B (zh) * 2011-12-13 2014-12-10 曙光信息产业(北京)有限公司 一种线性探测正则式分组系统和方法
CN104333487A (zh) * 2014-10-31 2015-02-04 广东工业大学 一种面向实时网络数据流的高效事件匹配方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079890A (zh) * 2007-07-04 2007-11-28 杭州华三通信技术有限公司 一种生成特征码确定状态机的方法和装置
WO2008063343A2 (en) * 2006-11-03 2008-05-29 Lucent Technologies Inc. Methods and apparatus for detecting unwanted traffic in one or more packet networks utilizing string analysis
EP2390797A1 (en) * 2010-05-25 2011-11-30 Huawei Technologies Co., Ltd. Regular expression matching method and system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008063343A2 (en) * 2006-11-03 2008-05-29 Lucent Technologies Inc. Methods and apparatus for detecting unwanted traffic in one or more packet networks utilizing string analysis
CN101079890A (zh) * 2007-07-04 2007-11-28 杭州华三通信技术有限公司 一种生成特征码确定状态机的方法和装置
EP2390797A1 (en) * 2010-05-25 2011-11-30 Huawei Technologies Co., Ltd. Regular expression matching method and system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《一种正则表达式的高效分组方法》;肖武德;《计算机安全》;20100430;57-59 *

Also Published As

Publication number Publication date
CN102073530A (zh) 2011-05-25

Similar Documents

Publication Publication Date Title
US10140451B2 (en) Detection of malicious scripting language code in a network environment
US8220048B2 (en) Network intrusion detector with combined protocol analyses, normalization and matching
US9015102B2 (en) Match engine for detection of multi-pattern rules
CN102841998B (zh) 内存附加校验器的内存数据完整性保护方法
CN101442540A (zh) 基于现场可编程门阵列的高速模式匹配算法
Lee et al. A hybrid CPU/GPU pattern-matching algorithm for deep packet inspection
CN101079890B (zh) 一种生成特征码确定状态机的方法和装置
CN102073530B (zh) 一种多条正则表达式的增量分组方法
Aldwairi et al. Efficient wu-manber pattern matching hardware for intrusion and malware detection
CN107273127A (zh) 一种在web应用中实现页面插件化的方法及装置
Zheng et al. An efficient and low-power design of the SM3 hash algorithm for IoT
CN105933120A (zh) 一种基于Spark平台的口令哈希值恢复方法和装置
CN102111405A (zh) 一种均衡分两组编译正则表达式的方法
CN102111402B (zh) 一种对正则式dfa分组的方法
CN102946311B (zh) 一种增强对称密钥体系安全性的密钥分散方法
Polig et al. Token-based dictionary pattern matching for text analytics
CN104023000A (zh) 一种网络入侵检测方法
CN103198065A (zh) 一种正则表达式匹配电路的优化方法
CN202720652U (zh) 一种用于信息安全防护的双机计算机系统
CN104778406A (zh) 一种基于文件指纹对恶意代码统一命名的方法及其系统
Kim Implementing a fuzzing agent to dectect buffer overflow vulnerability
Yang et al. Research on EVM-based smart contract runtime self-protection technology framework
Wang et al. DMA controller design based on SHA-1 dual channel improvement algorithm
Vespa et al. P3fsm: Portable predictive pattern matching finite state machine
Jin et al. Analysis and control stratagems of flash disk virus dynamic propagation model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant