CN102073530B - 一种多条正则表达式的增量分组方法 - Google Patents
一种多条正则表达式的增量分组方法 Download PDFInfo
- 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
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。
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)
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)
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 |
---|
《一种正则表达式的高效分组方法》;肖武德;《计算机安全》;20100430;57-59 * |
Also Published As
Publication number | Publication date |
---|---|
CN102073530A (zh) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sun et al. | Attention-based machine learning model for smart contract vulnerability detection | |
US10140451B2 (en) | Detection of malicious scripting language code in a network environment | |
CN101442540B (zh) | 基于现场可编程门阵列的高速模式匹配算法 | |
CN102841998B (zh) | 内存附加校验器的内存数据完整性保护方法 | |
US20140052748A1 (en) | Match engine for detection of multi-pattern rules | |
CN107851157A (zh) | 恶意软件的检测 | |
CN103685224A (zh) | 网络入侵检测方法 | |
CN102073530B (zh) | 一种多条正则表达式的增量分组方法 | |
Aldwairi et al. | n‐Grams exclusion and inclusion filter for intrusion detection in Internet of Energy big data systems | |
CN107273127A (zh) | 一种在web应用中实现页面插件化的方法及装置 | |
Zheng et al. | An efficient and low-power design of the SM3 hash algorithm for IoT | |
CN105933120A (zh) | 一种基于Spark平台的口令哈希值恢复方法和装置 | |
CN107463340A (zh) | 计算机的数据存储系统 | |
CN104023000A (zh) | 一种网络入侵检测方法 | |
CN102111405A (zh) | 一种均衡分两组编译正则表达式的方法 | |
CN104778406A (zh) | 一种基于文件指纹对恶意代码统一命名的方法及其系统 | |
Polig et al. | Token-based dictionary pattern matching for text analytics | |
Li | Security and Risk Analysis of Financial Industry Based on the Internet of Things | |
Serrano et al. | String alignment pre-detection using unique subsequences for FPGA-based network intrusion detection | |
CN103198065A (zh) | 一种正则表达式匹配电路的优化方法 | |
Kim | Implementing a fuzzing agent to dectect buffer overflow vulnerability | |
Sun | Service Chaining Security Based on Blockchain | |
Yang et al. | Research on EVM-based smart contract runtime self-protection technology framework | |
Wang et al. | Application of Community Detection Algorithm with Link Clustering in Inhibition of Social Network Worms. | |
Vespa et al. | P3fsm: Portable predictive pattern matching finite state machine |
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 |