CN102111405A - 一种均衡分两组编译正则表达式的方法 - Google Patents
一种均衡分两组编译正则表达式的方法 Download PDFInfo
- Publication number
- CN102111405A CN102111405A CN2010106115509A CN201010611550A CN102111405A CN 102111405 A CN102111405 A CN 102111405A CN 2010106115509 A CN2010106115509 A CN 2010106115509A CN 201010611550 A CN201010611550 A CN 201010611550A CN 102111405 A CN102111405 A CN 102111405A
- Authority
- CN
- China
- Prior art keywords
- groups
- sum
- group
- twos
- state
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种均衡分两组编译正则表达式的方法,充分了利用片外资源,使FPGA能够两路进行匹配,采用最大割的方法来进行分组,使n条正则式生成两组状态数较为均匀的DFA,降低其空间复杂度,这样,在不降低实时性的同时,硬件空间不变,尽可能多的增加了硬件处理正则式的数量。
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片外存储器的话,通常采用两路引擎对正则式进行匹配,以充分利用片外存储器的带宽。这样我们将n条正则式,分解成n1和n2,这样其时间复杂度依然是O(1),但其空间复杂度变成了0(2n1)+0(2n2)。
发明内容
为降低上述问题的空间复杂度,本发明提供了一种均衡分两组编译正则表达式的方法。
一种均衡分两组编译正则表达式的方法,步骤如下:
A、读取N条正则式;
B、生成两两间状态数矩阵和两两间状态矩阵之和;
C、根据步骤B得到的结果,粗分两组1、2;分配的基础是两两间状态数之和最大的规则,将其两两间状态数队列按照由大到小排序,将所有正则式分成两组,1组的正则式数目较2组稍多;
D、初始化变量i,将其设置为1组的最后一个正则式的索引;
E、将1组元素i移到2组;
F、计算1、2间的两两状态数的之和;
G、和上一次的1、2间的两两状态数的之和比较。如果大于old_state_sum,则更新old_state_sum为state_num;如果小于等于old_state_sum,则将元素i移回A组;
H、变量i减1;
I、判断i是否为-1,如果是则执行下一步骤,如果不是,则回到步骤E,使1组的正则式都能遍历一遍,是否应该移入2组;
J、编译1组和2组,得到较均衡的两组DFA,两组状态数量相差不大。
本发明充分利用片外资源,使FPGA能够两路进行匹配,采用最大割的方法来进行分组,使n条正则式生成两组状态数较为均匀的DFA,降低其空间复杂度,这样,在不降低实时性的同时,硬件空间不变,尽可能多的增加了硬件处理正则式的数量。
附图说明
图1为求状态和示意图
图2位本发明流程图
具体实施方式
本方法根据硬件总空间,以最大割方式均衡分成两组。
具体的操作步骤如下:
1、读取多条正则式:n条
2、生成两两间状态数矩阵和两两间状态矩阵之和。由于多条DFA编译会产生状态空间的爆炸,因此从某种程度上,可以用两两间的状态数之和来反映该条规则引起爆炸剧烈程度,值越高,将会引起更大的空间爆炸。例如规则1的两两状态数之和为state_num(1,2)+state_num(1,3)+…+state_num(1,n),规则1的两两状态数的队列为:state_num(1,2),state_num(1,3),state_num(1,n)。依次类推,生成所有规则的两两间状态数矩阵和两两间状态数之和。
3、根据步骤2,得到的结果,粗分两组A、B。分配的基础是两两间状态数之和最大的规则,将其两两间状态数队列按照由大到小排序,将所有正则式分成两组,A组的正则式数目较B组稍多。
4、初始化变量i,将其设置为A组的最后一个正则式的索引。
5、将A组元素i移到B组
6、计算A、B间的两两状态数的之和(例如,可定义为state_sum)
7、和上一次的A、B间的两两状态数的之和(例如,可定义为old_state_sum)比较。如果大于old_state_sum,则更新old_state_sum为state_num;如果小于等于old_state_sum,则将元素i移回A组。
8、变量i减1。
9、判断i是否为-1,如果是则执行下一步骤,如果不是,则回到步骤5,使A组的正则式都能遍历一遍,是否应该移入B组。
10、编译A组和B组,得到较均衡的两组DFA,两组状态数量相差不大。
Claims (1)
1.一种均衡分两组编译正则表达式的方法,其特征在于:步骤如下:
A、读取N条正则式;
B、生成两两间状态数矩阵和两两间状态矩阵之和;
C、根据步骤B得到的结果,粗分两组1、2;分配的基础是两两间状态数之和最大的规则,将其两两间状态数队列按照由大到小排序,将所有正则式分成两组,1组的正则式数目较2组稍多;
D、初始化变量i,将其设置为1组的最后一个正则式的索引;
E、将1组元素i移到2组;
F、计算1、2间的两两状态数的之和;
G、和上一次的1、2间的两两状态数的之和比较。如果大于old_state_sum,则更新old_state_sum为state_num;如果小于等于old_state_sum,则将元素i移回A组;
H、变量i减1;
I、判断i是否为-1,如果是则执行下一步骤,如果不是,则回到步骤E,使1组的正则式都能遍历一遍,是否应该移入2组;
J、编译1组和2组,得到较均衡的两组DFA,两组状态数量相差不大。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106115509A CN102111405A (zh) | 2010-12-17 | 2010-12-17 | 一种均衡分两组编译正则表达式的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106115509A CN102111405A (zh) | 2010-12-17 | 2010-12-17 | 一种均衡分两组编译正则表达式的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102111405A true CN102111405A (zh) | 2011-06-29 |
Family
ID=44175435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106115509A Pending CN102111405A (zh) | 2010-12-17 | 2010-12-17 | 一种均衡分两组编译正则表达式的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102111405A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103854056A (zh) * | 2014-03-17 | 2014-06-11 | 清华大学 | 正则表达式分组方法及装置 |
CN111198953A (zh) * | 2018-11-16 | 2020-05-26 | 北京智慧正安科技有限公司 | 基于案件文本信息推荐类案的方法、系统及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079890A (zh) * | 2007-07-04 | 2007-11-28 | 杭州华三通信技术有限公司 | 一种生成特征码确定状态机的方法和装置 |
CN101645069A (zh) * | 2008-08-04 | 2010-02-10 | 中国科学院计算机网络信息中心 | 一种多模式匹配中正则表达式存储压缩方法 |
-
2010
- 2010-12-17 CN CN2010106115509A patent/CN102111405A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079890A (zh) * | 2007-07-04 | 2007-11-28 | 杭州华三通信技术有限公司 | 一种生成特征码确定状态机的方法和装置 |
CN101645069A (zh) * | 2008-08-04 | 2010-02-10 | 中国科学院计算机网络信息中心 | 一种多模式匹配中正则表达式存储压缩方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103854056A (zh) * | 2014-03-17 | 2014-06-11 | 清华大学 | 正则表达式分组方法及装置 |
CN103854056B (zh) * | 2014-03-17 | 2016-11-16 | 清华大学 | 正则表达式分组方法及装置 |
CN111198953A (zh) * | 2018-11-16 | 2020-05-26 | 北京智慧正安科技有限公司 | 基于案件文本信息推荐类案的方法、系统及计算机可读存储介质 |
CN111198953B (zh) * | 2018-11-16 | 2023-07-07 | 北京智慧正安科技有限公司 | 基于案件文本信息推荐类案的方法、系统及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dou et al. | A confidence-based filtering method for DDoS attack defense in cloud environment | |
Perez et al. | Broken metre: Attacking resource metering in EVM | |
CN105447113B (zh) | 一种基于大数据的信息分析方法 | |
US8589432B2 (en) | Real time searching and reporting | |
Alguliyev et al. | Big data: Big promises for information security | |
US20210385251A1 (en) | System and methods for integrating datasets and automating transformation workflows using a distributed computational graph | |
EP3356951B1 (en) | Managing a database of patterns used to identify subsequences in logs | |
WO2012106378A2 (en) | Real time searching and reporting | |
CN107016027A (zh) | 实现业务信息快速搜索的方法和装置 | |
CN110727727B (zh) | 一种数据库的统计方法及装置 | |
US20210136121A1 (en) | System and method for creation and implementation of data processing workflows using a distributed computational graph | |
Fu et al. | A study on the optimization of blockchain hashing algorithm based on PRCA | |
WO2017019717A1 (en) | Dynamic attachment delivery in emails for advanced malicious content filtering | |
Li et al. | Blockchain queuing model with non-preemptive limited-priority | |
CN109359251A (zh) | 应用系统使用情况的审计预警方法、装置和终端设备 | |
Sanka et al. | Efficient high-performance FPGA-Redis hybrid NoSQL caching system for blockchain scalability | |
CN102111405A (zh) | 一种均衡分两组编译正则表达式的方法 | |
CN103780592A (zh) | 一种用户账号被盗确定方法及装置 | |
CN102073530B (zh) | 一种多条正则表达式的增量分组方法 | |
CN108111968B (zh) | 一种基于泛化的位置隐私保护方法 | |
He et al. | NURGLE: Exacerbating Resource Consumption in Blockchain State Storage via MPT Manipulation | |
Tariq | Rampant Smoothing (RTS) Algorithm: an optimized consensus mechanism for private Blockchain enabled technologies | |
De Sensi et al. | Dpi over commodity hardware: implementation of a scalable framework using fastflow | |
JP2022551917A (ja) | ネットワークによって相互接続された複数のネットワーク・ノードによる協調学習のためのコンピュータ実施方法、コンピューティング・デバイス、及びコンピュータ・プログラム | |
CN111158994A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110629 |