CN102073530A - 一种多条正则表达式的增量分组方法 - Google Patents
一种多条正则表达式的增量分组方法 Download PDFInfo
- Publication number
- CN102073530A CN102073530A CN201010611580XA CN201010611580A CN102073530A CN 102073530 A CN102073530 A CN 102073530A CN 201010611580X A CN201010611580X A CN 201010611580XA CN 201010611580 A CN201010611580 A CN 201010611580A CN 102073530 A CN102073530 A CN 102073530A
- Authority
- CN
- China
- Prior art keywords
- ruler
- dfa
- group
- equal
- status number
- 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.)
- Granted
Links
Images
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,等于则到步骤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。
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 true CN102073530A (zh) | 2011-05-25 |
CN102073530B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387159A (zh) * | 2011-12-13 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种线性探测正则式分组系统和方法 |
CN104333487A (zh) * | 2014-10-31 | 2015-02-04 | 广东工业大学 | 一种面向实时网络数据流的高效事件匹配方法 |
Citations (3)
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 |
-
2010
- 2010-12-17 CN CN201010611580.XA patent/CN102073530B/zh active Active
Patent Citations (3)
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)
Title |
---|
肖武德: "《一种正则表达式的高效分组方法》", 《计算机安全》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387159A (zh) * | 2011-12-13 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种线性探测正则式分组系统和方法 |
CN102387159B (zh) * | 2011-12-13 | 2014-12-10 | 曙光信息产业(北京)有限公司 | 一种线性探测正则式分组系统和方法 |
CN104333487A (zh) * | 2014-10-31 | 2015-02-04 | 广东工业大学 | 一种面向实时网络数据流的高效事件匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102073530B (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dou et al. | A confidence-based filtering method for DDoS attack defense in cloud environment | |
US10140451B2 (en) | Detection of malicious scripting language code in a network environment | |
CN105447113B (zh) | 一种基于大数据的信息分析方法 | |
Pontarelli et al. | Traffic-aware design of a high-speed FPGA network intrusion detection system | |
Sun et al. | Attention-based machine learning model for smart contract vulnerability detection | |
US8572016B2 (en) | Match engine for detection of multi-pattern rules | |
CN101442540B (zh) | 基于现场可编程门阵列的高速模式匹配算法 | |
CN102609515B (zh) | 一种文件快速扫描方法和系统 | |
CN104836702A (zh) | 一种大流量环境下主机网络异常行为检测及分类方法 | |
CN110222503A (zh) | 一种大数据流负载下的数据库审计方法、系统与设备 | |
CN104618304B (zh) | 数据处理方法及数据处理系统 | |
CN107122222B (zh) | 一种字符串的搜索系统及方法 | |
CN107851157A (zh) | 恶意软件的检测 | |
CN101364237A (zh) | 一种多关键词匹配方法和装置 | |
CN103475653A (zh) | 网络数据包的检测方法 | |
CN112468347A (zh) | 一种云平台的安全管理方法、装置、电子设备及存储介质 | |
CN102594809A (zh) | 一种文件快速扫描方法和系统 | |
Hsieh et al. | A high-throughput DPI engine on GPU via algorithm/implementation co-optimization | |
WO2015102720A2 (en) | Method and apparatus for performing intrusion detection with reduced computing resources | |
Aldwairi et al. | n‐Grams exclusion and inclusion filter for intrusion detection in Internet of Energy big data systems | |
CN102073530A (zh) | 一种多条正则表达式的增量分组方法 | |
CN115695041B (zh) | 基于sdn的ddos攻击检测与防护的方法及应用 | |
CN102111405A (zh) | 一种均衡分两组编译正则表达式的方法 | |
CN106375351A (zh) | 一种异常域名检测的方法及装置 | |
CN108809727B (zh) | 一种直流电机控制系统的入侵防御系统 |
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 |