CN115525801A - 网络安全系统的模式匹配算法 - Google Patents
网络安全系统的模式匹配算法 Download PDFInfo
- Publication number
- CN115525801A CN115525801A CN202110704639.8A CN202110704639A CN115525801A CN 115525801 A CN115525801 A CN 115525801A CN 202110704639 A CN202110704639 A CN 202110704639A CN 115525801 A CN115525801 A CN 115525801A
- Authority
- CN
- China
- Prior art keywords
- pattern
- shift
- hash
- prefix
- string
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
模式匹配作为网络安全系统的核心技术之一,它效率的高低将直接影响系统的整体性能,因而一直是学术界所普遍关注的热点问题。当今大数据不断升温、云计算加速落地、网络上的数据流量越来越大,网络安全系统需要在高吞吐量的情况下保证高速运行。在网络安全系统中,规则模式集合不断扩展,模式匹配算法研究所面临的巨大挑战是需要处理越来越庞大的模式集合,这也是模式匹配算法发展的瓶颈所在。
Description
技术领域
本发明属于网络安全领域,具体涉及一种网络安全系统。
背景技术
目前随着科技的不断发展,网络方面也随之提升,模式匹配作为网络安全系的核心技术之一,它效率的高低将直接影响系统的整体性能,在网络安全中,规则模式不断发展,模式匹配算法研究所面临的极大挑战是需要处理越来越大的模式集合,这也是模式匹配匹配算法发展的瓶颈所在。
发明内容
AC算法主要由两个阶段构成:预处理阶段和扫描阶段。经典的AC算法在预处理阶段由三部分构成:Goto表、Fail表和Output表。
Goto表是由状态转移函数根据模式集合P来确定,指的是一种状态之间的转换关系。它是模式集合P中所有模式的状态转移自动机,以Trie树的结构来存储。对于给定的模式集合,构建Goto表需要建立一个状态转化图。
首先,以状态0为这个Trie的起始节点,然后添加一条从起始状态出发的路径,依次向转换图中输入模式中的字符,新的字符产生,则新的状态节点产生。Fait表是由失效函数确定,指的也是状态间的转换关系。所谓Fail表就是当状态机处于某个状态D[pl时,输入一个字符c能够得到D[p][c]=0,这时候Fai1表的作用就是确定状态的下一步跳转位置。Fail表和Goto表一样,它们的构建只和模式集合P有关,和所要扫描的文本串无关。而且失效函数是根据转向函数Gat。函数建立的。与Got。表不同的是它是指在比较匹配失败的情况下所使用的转换关系。就功能而言,它可以看成是由ICMP算法中的next数组演变而来。构建Fail其实就是计算失效函数。首先,给出当前状态s深度的定义:状态s的深度是指状态转移图中从状态0到状态s的最短路径。以上例模式集合P为例,状态1和状态5的深度分别是1和2。失效函数的构建思路:首先,计算所有深度是1的状态失效函数值。然后,计算所有深度为2的状态,以此类推,直到计算出所有所有状态(状态0除外,其深度无意义)的失效值。
AC算法的扫描过程如下:把起始0状态设置为Trie树的根节点,从状态0开始依次扫描待匹配的文本串,每扫描文本串的一个字符,则状态机跳转一个状态。如果到达的该状态不接收字符,则转为失效状态,重复前面的操作。AC自动机的状态在跳转过程中每次都要进行状态判断,若为终止状态,则表示匹配成功,将匹配成功的模式添加到Output表。待匹配文本扫描结束,即算法匹配过程结束,此时的Output表中存储的就是所有匹配成功的模式。
在算法预处理阶段,需要遍历模式集合一次。对于给定的长度为N的文本和模式集合P认.Pz}Pm,算法在预处理阶段对每个模式以每个字符为单位进行依次扫描,直到将所有模式添加到自动机,表示预处理阶段结束。AC算法预处理时间复杂度为以艺m},}m表示模式P集合的所有字符长度之和。在扫描阶段,需要对待匹配的文本串遍历一遍。直到找到给定文本中所有的匹配模式,扫描结束。该算法在扫描阶段的时间复杂度为以扣)。在AC自动机中要包含每个状态所有可能的跳转。跳转表Shift表相当于BM算法的坏字符表,它存储的是每个后缀哈希值所对应的跳转距离。
Shift表的构建过程有如下几点:
1)检索模式集合中所有的模式,找出最短模式串的长度,定义为字母m,对模式集合中每个模式的前m个字符构建扫描窗口;
2)规定算法中字符块长度B的Shift表大小为2或者3字节;
3)在构建Shift表时,对每个模式的前m个字符,需要处理其所有长度为B的子串,计算哈希值并且填充Shift表;
4)如果多个模式的前缀,或者同一模式前缀有相同的字符块,则保留Shift值最小的。因为跳跃距离最小,防止有漏匹配。如模式p;=abcbc,模式p2=dcbce,其中,对于块be可以计算出三个Shift值2}I}0,这里保留Shift[bc0;在创建Shift表过程中可能会出现两种情况:一种是文本中的字符块没有在规则模式串的任何子串中出现,那么扫描的跳跃距离为m-B+1;另一种情况是字符块在规则模式串的某些子串中出现,则需要记录字符块在模式子串的最右的位置,防止发生漏匹配。跳转距离大于0时,需要进行跳转然后继续扫描,跳转距离为0时(假设它是规则模式的尾串),此时需要再检查所有含有此相同尾串的模式,看它是否和待测文本匹配。在后面的过程中,需要利用到后缀哈希表Hash和前缀表Prefix后缀哈希表Hash:Hash表所表示的是所有Shift[X卜。的模式和字符块X的映射关系。比如模式串abcde和bcbde,对于块de,它们的Shift值都为0,所以它们都由块de索引。WM算法在预处理阶段对模式集合中的模式进行了划分,划分的原则是把每个模式串后缀字符块的跳转值相等的模式集合在一起,同时由Hash值进行索引。这些因为后缀的特点被集合起来的模式串很可能发生匹配,当这个集合规模越来越大的时候,为了提高匹配扫描速度,此时,引入了前缀表Prefixes前缀表Prefix:在大量后缀哈希值相同的情沉下,需要扫描每个模式和文本匹配状况。此时我们利用前缀Prefix表来滤除那些后缀相同而前缀不同的模式。在扫描的过程中,首先检查的是每个模式的后B个字符,若有一些模式后缀的这B个字符和文本匹配,再检查这些后缀匹配的模式的前缀,从而定位到了具体的模式。因为在大量的模式串中,很少有模式会后缀和前缀都完全相同,所以这种将后缀与前缀扫描相结合的方法,是比较高效的。
1)计算当前待匹配文本的子串x(长度为B)的哈希值(从tm-B+1到t,rm为模式集合中最短模式的长度,即匹配窗口的大小),记为t hash;
2)检查Shift[X]的值:如果大于0,则指针向文本串右侧跳转并转到步骤1),否则,转到步骤3};
3)计算当前待匹配文本的前缀哈希值(指针向左移动m个字符),记为t_prefix;
4)当模式后缀哈希值和文本后最哈希值相同时,且前缀Prefix=t_prefix,此时完全扫描实际的模式。
WM算法利用字符块扫描代替了单一字符的扫描,可以越过更多的不匹配字符,而巨通过增加跳转距离,大大提高了算法的匹配效率。文献[51]给出了字符块长度B的最佳值计算公式B=log:2M,其中,C=酬,M=mN,N是模式集合的大小,艺是字符集的大小。在分析WM算法的时间复杂度时,假定待匹配文本中的字符等概出现。扫描过程中进行一次哈希计算的复杂度为以B}。若跳转表Shift值不为零,进行跳跃扫描,此时算法的时间复杂度为O}BN/m);否则,时间复杂度为办)。若出现了一个匹配,则扫描模式的时间复杂度为以m)。算法扫描的平均时间复杂度为以B呵m)。可以看出,该算法对模式集合中最短模式串的长度m敏感,跳转表Shift值最大值受限于m,如果m特别小,则跳转距离会小,算法的整体匹配效率会直接受影响。
附图说明
参阅图1是网络安全系统的模式匹配算法流程图;
具体实施方式
Shift表的构建过程有如下几点:
1)检索模式集合中所有的模式,找出最短模式串的长度,定义为字母m,对模式集合中每个模式的前m个字符构建扫描窗口;
2)规定算法中字符块长度B的Shift表大小为2或者3字节;
3)在构建Shift表时,对每个模式的前m个字符,需要处理其所有长度为B的子串,计算哈希值并且填充Shift表;
4)如果多个模式的前缀,或者同一模式前缀有相同的字符块,则保留Shift值最小的。因为跳跃距离最小,防止有漏匹配。如模式p;=abcbc,模式p2=dcbce,其中,对于块be可以计算出三个Shift值2}I}0,这里保留Shift[bc0;在创建Shift表过程中可能会出现两种情况:一种是文本中的字符块没有在规则模式串的任何子串中出现,那么扫描的跳跃距离为m-B+1;另一种情况是字符块在规则模式串的某些子串中出现,则需要记录字符块在模式子串的最右的位置,防止发生漏匹配。跳转距离大于0时,需要进行跳转然后继续扫描,跳转距离为0时(假设它是规则模式的尾串),此时需要再检查所有含有此相同尾串的模式,看它是否和待测文本匹配。在后面的过程中,需要利用到后缀哈希表Hash和前缀表Prefix后缀哈希表Hash:Hash表所表示的是所有Shift[X卜。的模式和字符块X的映射关系。比如模式串abcde和bcbde,对于块de,它们的Shift值都为0,所以它们都由块de索引。WM算法在预处理阶段对模式集合中的模式进行了划分,划分的原则是把每个模式串后缀字符块的跳转值相等的模式集合在一起,同时由Hash值进行索引。这些因为后缀的特点被集合起来的模式串很可能发生匹配,当这个集合规模越来越大的时候,为了提高匹配扫描速度,此时,引入了前缀表Prefixes前缀表Prefix:在大量后缀哈希值相同的情沉下,需要扫描每个模式和文本匹配状况。此时我们利用前缀Prefix表来滤除那些后缀相同而前缀不同的模式。在扫描的过程中,首先检查的是每个模式的后B个字符,若有一些模式后缀的这B个字符和文本匹配,再检查这些后缀匹配的模式的前缀,从而定位到了具体的模式。因为在大量的模式串中,很少有模式会后缀和前缀都完全相同,所以这种将后缀与前缀扫描相结合的方法,是比较高效的。
1)计算当前待匹配文本的子串x(长度为B)的哈希值(从tm-B+1到t,rm为模式集合中最短模式的长度,即匹配窗口的大小),记为t hash;
2)检查Shift[X]的值:如果大于0,则指针向文本串右侧跳转并转到步骤1),否则,转到步骤3};
3)计算当前待匹配文本的前缀哈希值(指针向左移动m个字符),记为t_prefix;
4)当模式后缀哈希值和文本后最哈希值相同时,且前缀Prefix=t_prefix,此时完全扫描实际的模式。
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
Claims (4)
1.Shift表的构建过程有如下几点:
(1)检索模式集合中所有的模式,找出最短模式串的长度,定义为字母m,对模式集合中每个模式的前m个字符构建扫描窗口;
(2)规定算法中字符块长度B的Shift表大小为2或者3字节;
(3)在构建Shift表时,对每个模式的前m个字符,需要处理其所有长度为B的子串,计算哈希值并且填充Shift表;
(4)如果多个模式的前缀,或者同一模式前缀有相同的字符块,则保留Shift值最小的。因为跳跃距离最小,防止有漏匹配。如模式p;=abcbc,模式p2=dcbce,其中,对于块be可以计算出三个Shift值2} I} 0,这里保留Shift[bc0;在创建Shift表过程中可能会出现两种情况:一种是文本中的字符块没有在规则模式串的任何子串中出现,那么扫描的跳跃距离为m-B+1;另一种情况是字符块在规则模式串的某些子串中出现,则需要记录字符块在模式子串的最右的位置,防止发生漏匹配。跳转距离大于0时,需要进行跳转然后继续扫描,跳转距离为0时(假设它是规则模式的尾串),此时需要再检查所有含有此相同尾串的模式,看它是否和待测文本匹配。在后面的过程中,需要利用到后缀哈希表Hash和前缀表Prefix后缀哈希表Hash:Hash表所表示的是所有Shift[X 卜。的模式和字符块X的映射关系。比如模式串abcde和bcbde,对于块de,它们的Shift值都为0,所以它们都由块de索引。WM算法在预处理阶段对模式集合中的模式进行了划分,划分的原则是把每个模式串后缀字符块的跳转值相等的模式集合在一起,同时由Hash值进行索引。这些因为后缀的特点被集合起来的模式串很可能发生匹配,当这个集合规模越来越大的时候,为了提高匹配扫描速度,此时,引入了前缀表Prefixes前缀表Prefix:在大量后缀哈希值相同的情沉下,需要扫描每个模式和文本匹配状况。此时我们利用前缀Prefix表来滤除那些后缀相同而前缀不同的模式。
2.计算当前待匹配文本的子串x(长度为B)的哈希值(从tm-B+1到t,rm为模式集合中最短模式的长度,即匹配窗口的大小),记为t hash;
3.检查Shift[X]的值:如果大于0,则指针向文本串右侧跳转并转到步骤1),否则,转到步骤3};
4.计算当前待匹配文本的前缀哈希值(指针向左移动m个字符),记为t_prefix;
4)当模式后缀哈希值和文本后最哈希值相同时,且前缀Prefix=t_prefix,此时完全扫描实际的模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110704639.8A CN115525801A (zh) | 2021-06-24 | 2021-06-24 | 网络安全系统的模式匹配算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110704639.8A CN115525801A (zh) | 2021-06-24 | 2021-06-24 | 网络安全系统的模式匹配算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525801A true CN115525801A (zh) | 2022-12-27 |
Family
ID=84694912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110704639.8A Pending CN115525801A (zh) | 2021-06-24 | 2021-06-24 | 网络安全系统的模式匹配算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525801A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668527A (zh) * | 2024-01-31 | 2024-03-08 | 国网湖北省电力有限公司信息通信公司 | 一种大流量模型下的多特征识别方法及系统 |
-
2021
- 2021-06-24 CN CN202110704639.8A patent/CN115525801A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117668527A (zh) * | 2024-01-31 | 2024-03-08 | 国网湖北省电力有限公司信息通信公司 | 一种大流量模型下的多特征识别方法及系统 |
CN117668527B (zh) * | 2024-01-31 | 2024-04-26 | 国网湖北省电力有限公司信息通信公司 | 一种大流量模型下的多特征识别方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7725510B2 (en) | Method and system for multi-character multi-pattern pattern matching | |
US8032479B2 (en) | String matching system and program therefor | |
US7941435B2 (en) | Substring search algorithm optimized for hardware acceleration | |
McCreight | A space-economical suffix tree construction algorithm | |
US7240048B2 (en) | System and method of parallel pattern matching | |
EP1436718B1 (en) | Method of generating a DFA state machine that groups transitions into classes in order to conserve memory | |
US7860849B1 (en) | Optimizing search trees by increasing success size parameter | |
CN111290784A (zh) | 适用于大规模样本的程序源代码相似度检测方法 | |
Alstrup et al. | Pattern matching in dynamic texts | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
US10528731B1 (en) | Detecting malicious program code using similarity of hashed parsed trees | |
KR20140051914A (ko) | 규칙적 표현들에 대한 컴파일러 | |
US8701162B1 (en) | Method and system for detecting and countering malware in a computer | |
Alstrup et al. | Near-optimal labeling schemes for nearest common ancestors | |
CN108647299A (zh) | 生僻字符匹配方法、字符串模式匹配方法及存储介质 | |
Obeidat et al. | Developing a faster pattern matching algorithms for intrusion detection system | |
Le Dang et al. | A new multiple-pattern matching algorithm for the network intrusion detection system | |
CN115525801A (zh) | 网络安全系统的模式匹配算法 | |
CN103500178B (zh) | 一种fs算法最差情况下的快速多模式匹配方法 | |
CN113407693B (zh) | 一种用于全媒体审读的文本相似度比对方法及装置 | |
Cormode et al. | Permutation editing and matching via embeddings | |
Yang et al. | Fast submatch extraction using OBDDs | |
CN113065419B (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
Peng et al. | Fast multi-pattern matching algorithm on compressed network traffic | |
KR101881797B1 (ko) | 멀티 패턴 정책 탐지 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |