KR20090065315A - 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법 - Google Patents

시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법 Download PDF

Info

Publication number
KR20090065315A
KR20090065315A KR1020070132806A KR20070132806A KR20090065315A KR 20090065315 A KR20090065315 A KR 20090065315A KR 1020070132806 A KR1020070132806 A KR 1020070132806A KR 20070132806 A KR20070132806 A KR 20070132806A KR 20090065315 A KR20090065315 A KR 20090065315A
Authority
KR
South Korea
Prior art keywords
substring
stored
string
signature
memory
Prior art date
Application number
KR1020070132806A
Other languages
English (en)
Other versions
KR100960120B1 (ko
Inventor
김병구
오진태
장종수
손승원
Original Assignee
한국전자통신연구원
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 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020070132806A priority Critical patent/KR100960120B1/ko
Priority to US12/331,613 priority patent/US8365277B2/en
Publication of KR20090065315A publication Critical patent/KR20090065315A/ko
Application granted granted Critical
Publication of KR100960120B1 publication Critical patent/KR100960120B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic

Abstract

본 발명은 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조 및 시그니처 스트링 패턴 매칭방법에 관한 것이다. 본 발명은 시그니처를 서브스트링 단위로 토큰화하고 토큰화된 서브스트링을 내부메모리 블록과 외부메모리 블록에 저장함으로서 메모리 저장패턴을 최적화하고, 유입데이터와 시그니처 패턴 매칭이 효과적으로 이루어지도록 하는 효과가 있다.
시그니처 스트링, 토큰, 패턴 매칭

Description

시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조 및 시그니처 스트링 패턴 매칭방법{Signature String Storing Memory Structure and the Storing Method for the Same, Signature String Pattern Matching Method}
본 발명은 다량의 패턴들에 대한 검색을 고속으로 수행하기 위한 하드웨어 기반의 고성능 패턴매칭 기술로써, 특히 한정된 하드웨어 메모리에 보다 많은 검색 패턴들을 적용할 수 있는, 최적화된 패턴 배치 기법을 이용한 고성능 패턴매칭 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IP성장동력 기술개발로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-042-02, 과제명: Network 위협의 Zero-Day Attack 대응을 위한 실시간 공격 시그니처 생성 및 관리 기술개발].
지금까지, 네트워크를 통한 침입에 대응하기 위해서 여러 시스템들이 개발되었으나, 기가비트 이더넷 환경과 같은 네트워크의 고속화 및 이를 바탕으로 한 대용량 데이터의 송수신은 기존의 저속 보안 분석 기법에 대한 변화를 요구하고 있다. 다시 말해서, 갈수록 고속화되고 대용량화하는 네트워크 환경과 보다 다양해 지는 침입 시도에 적절히 대응하기 위해서는 보다 빠른 시간 내에 많은 데이터를 분석할 수 있는 기법이 요구된다. 즉, 이를 고려한 새로운 형태의 보안 시스템에 대한 연구가 요구된다. 그러나, 기존의 대다수 보안 시스템들이 지니고 있는 기술적 한계는 무엇보다도 패킷 분실율 및 침입 탐지율과 같은 보안 시스템 상의 성능 문제라 할 수 있다.
이를 극복하기 위해서, 하드웨어 기반의 패턴 매칭 기법들이 연구, 개발되기 시작되었으며, 이를 통해서 고속의 침입탐지 기능 및 방화벽 기능, 바이러스 감지 기능 등을 제공하고 있다. 이러한 시스템들의 대부분은 규칙 기반의 특정 패턴 검사 방법을 통해서 수행되고 있는 것으로 알려져 있으며, 이는 적용되는 패턴의 개수와 패턴 개개가 갖는 스트링 문자열의 길이 등에 의해서 수행 성능이 저하되지 않는 방법들을 필요로 한다. 때문에, 하드웨어 칩 메모리 상에서의 해쉬 기반 매칭 기법이 많이 사용되나, 해쉬 충돌 등과 같은 이유로 많은 수의 패턴 적용이 쉽지 않다.
그러나, 현재까지 알려진 침입탐지 규칙 수 만도 이미 수 천 개나 되고, 개개 규칙들이 갖는 스트링 문자열 또한, 최소 1바이트에서 최대 100바이트가 넘기 때문에, 성능 저하 없이 많은 규칙들을 적용하기는 쉽지가 않다. 또한, 소프트웨어 기반의 시스템과는 달리 하드웨어 기반의 시스템은 메모리 상의 제약을 동반하기 때문에, 수많은 유해 트래픽 패턴들을 효율적으로 적용할 수 있는 기법이 요구된다. 설령, 외부메모리 블록 등을 사용하여 메모리 한계를 극복하였다 하더라도, 이로 인한 성능 저하를 극복하기는 쉽지 않다. 즉, 성능 저하 없이, 제한된 메모리 상에 최대한의 유해 트래픽 패턴들을 효율적으로 배치, 적용할 수 있는 기법이 요 구된다.
본 발명은 전술한 종래기술의 문제점을 해결하기 위한 것으로, 하드웨어 기반의 고성능 패턴 매칭을 수행하기 위한 효율적인 패턴 메모리 최적화 기법을 제공하는데 있다. 이는 적용하고자 하는 검색 패턴들을 적절한 크기의 토큰으로 나누고, 이들을 하드웨어 칩 내부메모리 블록와 외부메모리 블록에 적절히 분산, 배치함으로써 가능하다. 따라서, 본 발명의 목적은 수 많은 검색 패턴들을 패턴 메모리 최적화 기법에 따라 배치하고, 이들에 대한 해쉬 기반의 내부메모리 블록 매칭 기법과 외부메모리 블록 매칭 기법을 적절히 혼합 적용함으로써, 성능 저하 및 메모리 제약을 극복한 패턴 매칭 기법을 제공하는데 있다. 또한, 본 발명은 다량의 검색 패턴에 대한 고속의 패턴 매칭 기술로써, 보안 분야 이외에도 널리 쓰이는 기술이기 때문에, 이를 필요로 하는 모든 분야에서 쉽게 사용할 수 있는 기법을 제공하는데 있다.
본 발명에 의한 시그니처 스트링 저장 메모리 최적화방법은 유해패킷의 검색 패턴으로 사용할 시그니처 스트링 패턴을 서브스트링으로 토큰화하는 과정, 상기 서브스트링 중 저장하고자 하는 서브스트링이 이미 저장된 다른 시그니처 스트링 패턴의 서브스트링과 동일한지 여부를 판단하고, 동일한 경우 해당 메모리 테이블을 공유하고 동일하지 않은 경우 상기 저장하고자 하는 서브스트링이 첫번째 서브 스트링인지 여부를 분석하는 과정, 첫번째 서브스트링인 경우 내부메모리 블록에 저장하고, 첫번째 서브스트링이 아닌 경우 상기 저장하고자 하는 서브스트링의 이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링 패턴의 서브스트링 중 상기 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크되어있는지 분석하는 과정, 및 링크되어있지 않은 경우 외부메모리 블록에 저장하고, 링크되어있는 경우 내부메모리 블록에 저장하는 과정을 포함한다.
본 발명에 의한 시그니처 스트링 패턴 매칭방법은 유입 트래픽의 페이로드를 시그니처 매칭엔진에 저장된 시그니처 서브스트링 문자열 크기와 동일하게 분할하는 과정, 상기 분할된 유입 트래픽의 문자열 중 검색하고자 하는 문자열 이전위치의 문자열이 상기 저장된 시그니처 서브스트링과 매칭된 적이 없는 경우, 상기 검색할 문자열의 해쉬값에 대응되는 내부메모리 블록블록 주소의 메모리 테이블을 호출하는 과정, 호출된 메모리 테이블에 저장된 시그니처 서브스트링과 상기 검색할 문자열이 매칭되지 않은 경우 매칭 프로세스를 중단하고, 매칭되는 경우 매칭된 시그니처 서브스트링이 상기 시그니처 서브스트링 중 마지막 위치의 서브스트링인지 분석하는 과정, 및 마지막 위치의 서브스트링이 아닌 경우 상기 호출된 메모리 테이블에서 외부메모리 블록블록 주소를 호출하였다면 다음 검색하고자 하는 문자열을 상기 호출된 외부메모리 블록 주소에 저장된 서브스트링과 매칭하는지 분석하고, 마지막 위치의 서브스트링인 경우 경보를 발령하는 과정을 포함한다.
본 발명에 의한 시그니처 스트링 저장 메모리 구조는 유입 트래픽에 포함된 유해패킷을 판별하기 위한 시그니처 스트링이 토큰화된 서브스트링 단위로 저장된 메모리 구조로서, 상기 서브스트링 중 시그니처를 구성하는 첫번째 서브스트링이 포함된 메모리 테이블과, 이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링의 서브스트링 중 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크되어 있지 않은 경우 상기 저장하고자 하는 서브스트링이 포함된 메모리 테이블이 배치되는 내부메모리 블록, 및 이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링의 서브스트링 중 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크된 경우 상기 저장하고자 하는 서브스트링이 포함된 메모리 테이블이 배치되는 외부메모리 블록을 포함한다.
본 발명에서는 한정된 하드웨어 메모리 공간에 최대한의 유해 트래픽 패턴들을 효율적인 배치, 저장하고, 이에 대한 성능 저하 없는 검색을 수행하기 위해서, String Tokenizing에 기반한 패턴 메모리 최적화 방법 및 이에 대한 고성능 패턴 매칭 방법을 보인다. 이는 하드웨어 메모리 상에 적용할 검색 패턴들을 일정한 크기의 토큰들로 나누고, 이를 내부메모리 블록 및 외부메모리 블록로 적절히 배치, 연결함으로써, 최소한의 메모리 영역에 최대한의 검색 패턴들을 적용할 수 있다.
또한, 해쉬 기반의 내부메모리 블록 매칭 엔진과 해쉬 기반의 내부메모리 블록 매칭의 결과에 따라 수행되는 외부메모리 블록 매칭 엔진을 가짐으로써, 외부메모리 블록 사용에 따른 성능 저하를 유발하지 않는 패턴 매칭 수행이 가능하다. 따 라서, 본 발명은 한정된 하드웨어 메모리 자원을 효율적으로 사용함은 물론, 이를 통한 최대한의 검색 패턴 저장 및 성능 저하 없는 패턴 검색이 가능하다는 이점이 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명은, String Tokenizing에 기반한 패턴 메모리 최적화 기법을 사용함으로써, 성능 저하 없는 하드웨어 패턴 매칭 기법을 제공한다. 이는 하드웨어 메모리 상에 적용할 검색 패턴들을 일정한 크기의 토큰들로 나누고, 이를 내부메모리 블록 및 외부메모리 블록로 적절히 배치 연결함으로써, 최소한의 메모리 영역에 최대한의 검색 패턴들을 적용할 수 있다. 따라서, 본 발명은 한정된 하드웨어 메모리 자원을 효율적으로 사용함은 물론, 최대한의 검색 패턴 저장 및 성능 저하 없는 패턴 검색이 가능토록 하는 것을 특징으로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시 예를 설명하면 다음과 같다.
도 1은 실제 검색 패턴으로 사용할 시그니처 스트링 패턴들에 대한 스트링 토큰화 과정을 통해서, 패턴 메모리 최적화를 수행하는 실제 예시를 나타낸다. 우선, 제한된 하드웨어 내부메모리 블록 및 외부메모리 블록의 크기를 고려하여, 기본 5바이트 단위로 각각의 시그니처 스트링 패턴들을 토큰화 한다. 여기에서, 각 시그니처 스트링 패턴들의 첫 5바이트는 내부메모리 블록의 head 토큰을 구성하며, 똑같은 문자열의 토큰은 동일 메모리 공간을 공유하게 된다. 만약 5바이트보다 작은 시그니처 스트링 패턴의 경우에는 그 자체가 head 토큰과 tail 토큰의 역할을 수행하게 된다. 즉, tail 토큰의 경우에는 1바이트에서 5바이트까지의 가변 크기를 갖는다. 이어서, 외부메모리 블록의 경우에는 현재 배치된 토큰이 다음 토큰을 가리키지 않을 때 사용된다. 즉, 처음의 “/bin/echo” 시그니처 스트링 패턴을 메모리에 배치할 때는 “/bin/” 토큰이 가리키는 다음 토큰이 존재하지 않기 때문에, “echo” 토큰은 외부메모리 블록에 배치되고, “/bin/” 토큰에 의해서 그 위치가 가리키게 된다. 다음으로 “/bin/kill” 시그니처 스트링 패턴을 메모리에 배치하면, 처음의 “/bin/” 토큰은 이미 head 토큰으로 저장되어 있기 때문에, 해당 메모리 영역을 공유하게 된다. 그런데, 해당 “/bin/” 토큰이 가리키는 다음 토큰이 존재하기 때문에, “kill” 토큰은 내부메모리 블록의 tail 토큰으로 배치되면서 이전 “/bin/” 토큰의 주소 정보를 갖게 된다. 이와 같은 방식으로 내부메모리 블록에 배치될 토큰과 외부메모리 블록에 배치될 토큰이 나뉘어지게 되며, 첫 토큰은 항상 내부메모리 블록에 배치된다.
도 2는 도 1과 같은 방식으로 배치된 각 토큰들이 실제 내부메모리 블록에 저장되는 방식을 실제 예시로 나타낸다. 우선, 토큰 문자열 A가 있다면, 이에 대한 해쉬 함수 수행에 따라 해당 토큰의 정보가 저장될 메모리 주소 a가 계산된다(해쉬 함수는 하드웨어 수행상에 무리가 없는 Shift+Add 해쉬 알고리즘이나 Shift+Xor 해쉬 알고리즘과 같은 간단한 해쉬 함수를 사용한다. 또한, head 토큰의 경우에는 해당 패턴의 처음이므로, 내부메모리 블록 외에 TCAM 로직 등을 통해서 구현될 수도 있다). 해당 메모리 주소 a에 저장될 토큰의 정보는 이전 토큰의 메모리 주소인 Prev_Ptr, 다음 토큰의 메모리 주소인 Next_Ptr, 토큰 문자열 A에서 마지막 문자를 제외한 토큰 문자열 A’, 그리고 Next_Ptr 유무를 나타내는 1번 비트, head 토큰 여부를 나타내는 2번 비트, 메모리 자체의 할당 유무를 나타내는 3번 비트로 구성된다. 여기에서 Prev_Ptr은 head 토큰 여부 비트가 설정되어 있다면, “null”로 채워지고, Next_Ptr은 Next_Ptr 유무 비트가 설정되어 있다면, 해당 외부메모리 블록 주소 값을 가지게 된다. 3번 비트는 실제 패턴매칭 수행 시에 해당 메모리의 값이 의미 있는 값인지 여부를 판단하게 해 준다. 여기에서, A’가 저장되는 이유는 해쉬 값에 의해서 해당 메모리 주소를 접근하기 때문에, 마지막 바이트를 모르더라도 매칭이 가능하기 때문이다. 이와 같은 내부메모리 블록블록은 여러 개의 메모리 블록들로 구성되며, 각각의 토큰 크기에 따라 각기 다른 메모리블록을 사용하게 된다.
도 3은 도 1과 같은 방식으로 배치된 각 토큰들이 실제 외부메모리 블록에 저장되는 방식을 실제 예시로 나타낸다. 도 2와 달리, 외부메모리 블록에 저장되는 토큰들은 0번 메모리 주소부터 순차적으로 배치된다. 우선, 토큰 문자열 B가 있다면, 이는 할당되지 않은 순번의 메모리 주소 b에 해당 토큰의 정보를 저장하게 된다. 저장될 토큰의 정보는 다음 토큰의 메모리 주소인 Next_Ptr, 토큰 문자열의 크기인 T_Size, 해당 토큰 문자열 B, 그리고 Next_Ptr 유무를 나타내는 1번 비트, tail 토큰 여부를 나타내는 2번 비트, 메모리 자체의 할당 유무를 나타내는 3번 비트로 구성된다. 여기에서 T_Size는 tail 토큰 여부 비트가 설정되어 있지 않다면, 기본 값인 “5”로 채워지며, 나머지 정보들은 도 2와 동일한 의미들을 가지게 된다. 마지막으로, 토큰 문자열 B가 그대로 저장되는 이유는 내부메모리 블록에 의해서 가리켜지는 메모리 주소를 직접 접근하여 매칭을 수행하기 때문이며, Next_Ptr로 계속 연결되는 시그니처 스트링 패턴의 경우에는 해쉬 기반의 매칭이 수행될 필요가 없다. 이와 같은 외부메모리 블록블록의 사용은 해쉬 기반의 내부메모리 블록블록 배치와 달리, 순차적인 배치가 가능하기 때문에, 메모리 사용의 효율을 최대화할 수 있으며, 첫 토큰의 매칭 결과에 따라서, 필요한 순간에만 해당 메모리가 검색되어지기 때문에, 성능 저하 없는 패턴 매칭을 지원하게 된다. 또한 이처럼 많은 토큰들이 외부메모리 블록에 배치될 수 있기 때문에, 하드웨어 자체가 갖는 내부메모리 블록의 한계를 극복해 줄 수 있다.
도 4, 도 5, 도 6은 도 1, 도 2, 도 3에서와 같은 시그니처 스트링 패턴의 배치 기법에 따라서, 실제 3개의 시그니처 스트링 패턴을 내부메모리 블록와 외부메모리 블록에 순차적으로 배치, 저장하는 방식을 실제 예시로 보인다.
우선, 도 4의 첫 번째 시그니처 스트링 패턴은 “/usr/” 토큰, “bin/c” 토큰, “hsh” 토큰으로 나뉘어진다. 첫 토큰 “/usr/”은 계산된 해쉬 값x에 따라 내부메모리 블록블록의 메모리 주소 x에 배치되며, 마지막 문자를 제외한 문자열 “/usr”과 head 토큰 여부 비트, Next_Ptr 유무 비트, 메모리 할당 유무 비트가 모두 설정된다. 여기에서 해당 토큰은 head 토큰이기 때문에, Prev_Ptr를 갖지 않으며, Next_Ptr은 외부메모리 블록의 처음인 0번지 주소를 가리키게 된다. 다음으로 “bin/c” 토큰 정보는 첫 토큰에서 가리킨 외부메모리 블록 주소 0번지에 배치된다. 여기에서, T_Size는 기본 값인 “5”가 채워지며, Next_Ptr 유무 비트 및 메모리 할당 유무 비트가 설정된다. 여기에서 해당 토큰은 tail 토큰이 아니기 때문에, tail 토큰 여부 비트는 설정되지 않으며, Next_Ptr은 외부메모리 블록의 두번째 주소인 1번지를 가리키게 된다. 마지막으로 “hsh” 토큰 정보 또한 이전 토큰에서 가리킨 외부메모리 블록 주소 1번지에 배치된다. 여기에서, T_Size는 해당 토큰의 크기인 “3”이 채워지며, tail 토큰 여부 비트 및 메모리 할당 유무 비트가 설정된다. 즉, 외부메모리 블록에 저장되는 토큰의 크기는 가변적이며, 이를 매칭하기 위해서 T_Size 정보가 활용된다.
다음으로, 도 5의 두 번째 시그니처 스트링 패턴은 “/usr/” 토큰, “bin/c” 토큰, “pp” 토큰으로 나뉘어진다. 여기에서, “/usr/” 토큰과 “bin/c” 토큰은 도 4에서의 토큰과 같은 메모리를 공유하게 되며, “pp” 토큰은 “bin/c” 토큰의 다음 토큰이 존재하기 때문에 2바이트의 tail 내부메모리 블록블록에 배치된다. 즉, “pp” 토큰은 계산된 해쉬 값 y에 따라 해당 내부메모리 블록블록의 메모리 주소 y에 배치되며, 마지막 문자를 제외한 문자열 “p”와 메모리 할당 유무 비트가 설정된다. 여기에서 해당 토큰은 Prev_Ptr의 값으로써, “bin/c” 토큰이 저장되어 있는 외부메모리 블록블록의 0번지 주소를 가리키게 된다. 즉, 모든 내부메모리 블록블록에 배치된 토큰들은 head 토큰을 제외하고 Prev_Ptr 값을 가짐으로써, 이전 토큰과의 연결 고리를 가지게 된다. 또한, 해당 내부메모리 블록블록이 별도의 tail 토큰 여부에 대한 정보를 갖지 않는 것은 tail 메모리블록을 크기 별로 따로 가지기 때문이며, 해쉬 기반의 매칭을 기본으로 하기 때문이다.
마지막으로 도 6의 세 번째 시그니처 스트링 패턴은 “/usr/” 토큰, “bin/i” 토큰, “d” 토큰으로 나뉘어진다. 여기에서, “/usr/” 토큰은 도 5에서와 마찬가지로 같은 메모리를 공유하게 되며, “bin/i” 토큰은 “/usr/” 토큰의 다음 토큰이 존재하기 때문에 5바이트의 head/body 내부메모리 블록블록에 배치된다. 즉, “bin/i” 토큰은 계산된 해쉬 값 z에 따라 해당 내부메모리 블록블록의 메모리 주소 z에 배치되며, 마지막 문자를 제외한 문자열 “bin/”와 Next_Ptr 유무 비트 및 메모리 할당 유무 비트가 설정된다. 여기에서 해당 토큰은 head 토큰이 아니기 때문에, Prev_Ptr의 값으로써 “/usr/” 토큰이 저장되어 있는 내부메모리 블록블록의 x번지 주소를 가리키게 된다. 또한, 여기에서 해당 토큰은 tail 토큰이 아니기 때문에, Next_Ptr은 외부메모리 블록의 세 번째 주소인 2번지를 가리키게 된다. 마지막으로 “d” 토큰 정보 또한 이전 토큰에서 가리킨 외부메모리 블록 주소 2번지에 배치된다. 여기에서, T_Size는 해당 토큰의 크기인 “1”이 채워지며, tail 토큰 여부 비트 및 메모리 할당 유무 비트가 설정된다. 이와 같은 시그니처 스트링 패턴에 대한 배치 및 저장 기법은 해쉬 기반의 내부메모리 블록 사용의 최 소화 및 외부메모리 블록의 성능 저하 없는 사용을 가능케 한다.
상기의 도 1부터 도 6까지의 실시 예들을 통해서 배치, 저장된 시그니처 패턴 스트링들이 유입 트래픽의 페이로드와 비교, 검색되는 방식을 개략적으로 설명하면 다음과 같다. 우선, 유입 트래픽의 페이로드는 바이트 단위로 shift 되면서, 매 클럭 마다 1바이트부터 5바이트까지의 비교 대상 문자열로 나뉘어, 각각의 매칭 엔진으로 보내진다. 우선, 해쉬 기반의 내부메모리 블록 매칭 엔진은 비교 문자열 A에 대한 해쉬 값에 따라, 내부메모리 블록블록의 주소 x의 해당 메모리저장공간을 접근하고, 해당 비교 문자열 A와의 매칭을 수행한다. 매칭 결과, 동일한 문자열이라면 tail 토큰 여부가 참조되고, 그렇지 않다면 다음 비교 문자열에 대한 동일 수행을 반복한다. 여기에서 매칭된 토큰 정보가 tail 토큰이라면 경보가 발생하고, 그렇지 않다면, 다음 비교 문자열의 매칭 수행 시에, 이전 문자열의 매칭 결과로써 활용된다. 다음으로, 외부메모리 블록 매칭 엔진은 해쉬 기반의 내부메모리 블록 매칭 엔진에서의 매칭 수행의 결과로써, Next_Ptr 정보가 도출된다면 수행된다. 즉, 이전 매칭 수행의 결과로 나온 Next_Ptr 정보를 이용해서 외부메모리 블록블록의 주소 y의 해당 메모리저장공간이 접근되고, 해당 비교 문자열 A와의 매칭이 수행된다. 매칭 결과, 동일한 문자열이라면 tail 토큰 여부가 참조되고, 그렇지 않다면 해쉬 기반의 내부메모리 블록 매칭 엔진에서의 Next_Ptr 정보가 나타날 때까지 수행을 중단한다. 여기에서 매칭된 토큰 정보가 tail 토큰이라면 경보가 발생하고, 그렇지 않다면, 수행을 중단한다. 이처럼, 기본적인 패턴 매칭 수행은 해쉬 기반의 내부메모리 블록 매칭 엔진에서 시작되지만, 이에 대한 매칭 결과에 따라 외부메모 리 블록 매칭 엔진이 수행되는 방식이 사용된다.
도 7은 본 발명에 의한 시그니처 스트링 패턴을 메모리에 최적화하여 저장하는 과정의 흐름을 도시한다.
먼저, 메모리에 저장될 시그니처 스트링 패턴을 서브스트링 단위로 토큰화되며(S100), 이미 메모리에 저장되어 있는 다른 시그니처 스트링 패턴 중의 서브스트링과 동일한지 여부가 판단된다(S110). 만일 이미 메모리에 저장되어 있는 다른 시그니처 스트링 패턴 중의 서브스트링과 동일하다면 별도로 내부 또는 외부메모리 블록에 메모리 테이블로 저장될 필요가 없이 해당 메모리 테이블을 공유한다(S120).
또한, 메모리에 저장하고자 하는 서브스트링이 시그니처 스트링 패턴의 제일 마지막에 존재하는 tail 토큰인지 여부가 확인되고(S130), 만일 제일 마지막에 존재하는 tail 토큰이 아닌 경우 다음 위치의 서브스트링에 엑세스하여(S140), 상기 다음 위치의 서브스트링이 동일한 위치의 다른 시그니처 스트링 패턴의 서브스트링과 동일한지 여부를 판별하는 과정(S110)을 다시 수행한다.
한편, S110 단계에서 저장하고자 하는 서브스트링이 동일위치에 존재하는 다른 시그니처 스트링 패턴의 서브스트링과 동일하지 않은 경우, 상기 저장하고자 하는 서브스트링이 첫번째 서브스트링인지 여부가 판단된다(S160). 만일 첫번째 서브스트링인 경우 상기 서브스트링은 내부메모리 블록에 저장된다(S170).
그러나, 첫번째 서브스트링이 아닌 경우 상기 저장하고자 하는 서브스트링의 이전위치에 존재하는 서브스트링이 저장된 메모리 테이블이 다음위치의 서브스트링 이 저장된 메모리 테이블과 링크되어 있는지 여부가 판단된다(S180).
만일 링크되어 있어 있는 경우 상기 저장하고자 하는 서브스트링은 내부메모리 블록에 저장되나(S190), 링크되어 있지 않은 경우 상기 저장하고자 하는 서브스트링은 외부메모리 블록에 저장된다(S200).
상기 저장하고자 하는 서브스트링이 내부메모리 블록 또는 외부메모리 블록에 저장된 후, 상기 저장된 서브스트링이 시그니처의 마지막 위치에 오는 서브스트링인 tail 토큰인지 여부가 확인되는 과정이 수행된다(S130).
도 8은 본 발명에 따라 내부메모리 블록 또는 외부메모리 블록에 저장된 서브스트링으로 이루어진 시그니처와 유입패킷을 비교하는 방법의 흐름이 도시된 도이다.
유입 트래픽의 페이로드를 시그니처와 비교하기에 앞서 토큰화된 시그니처의 서브스트링 문자열 크기와 동일하게 분할한다(S300). 상기 비교하고자 하는 토큰 이전에 비교하였던 토큰이 시그니처 스트링패턴과 매칭된 적이 있는지 판단하고(S310), 만일 이전에 매칭된 적이 없다면 상기 비교하고자 하는 토큰의 문자열의 해쉬값에 대응되는 내부메모리 블록 주소의 메모리 테이블을 호출한다(S320). 그리고 호출된 메모리 테이블의 서브스트링의 문자열과 상기 비교하고자 하는 토큰의 문자열이 매칭되는지 확인한다(S330).
만일 매칭되지 않은 경우 수행은 중단될 것이나, 매칭된다면 상기 비교하고자 하는 토큰이 시그니처 스트링 패턴을 구성하는 마지막 위치의 tail 토큰과 매칭되었는지 여부를 확인하고(S350), tail 토큰인 경우 시그니처와 유입데이터가 매칭 됨을 알리는 경보를 발생한다(S360). 그러나, tail 토큰이 아닌 경우 다음 비교하고자 하는 토큰의 다음 위치의 문자열로 이동하고(S370), 문자열 비교에 앞서 이전위치의 문자열이 매칭되는 서브스트링의 메모리 테이블에서 외부메모리 블록 주소를 호출한 적이 있는지 확인한다(S380).
호출되었다면 호출된 메모리 테이블의 문자열과 상기 비교하고자 하는 다음 위치의 토큰이 매칭되는지 확인하고(S390), 매칭되면 매칭된 토큰과 비교된 서브스트링이 시그니처 스트링 패턴의 마지막 위치에 존재하는 서브스트링인 tail 토큰인지 확인하는 과정(S350)이 되풀이된다.
만일, 호출된 메모리 테이블의 문자열과 상기 비교하고자 하는 다음 위치의 토큰이 매칭되지 않는다면 매칭방법의 수행은 중단된다(S400). 한편, 이전위치의 토큰과 매칭되는 서브스트링이 저장된 메모리 테이블에서 외부메모리 블록 주소를 호출한 적이 없다면 상기 검색할 토큰에 포함된 문자열의 해쉬값에 대응되는 내부메모리 블록 주소를 가지는 메모리 테이블을 호출하는 과정(S320)을 되풀이한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프 플로피디스크, 광 데이터 정장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
도 1은 본 발명에 의한 시그니처 스트링 메모리 저장방법에 따라 내부메모리 블록 및 외부메모리 블록에 시그니처 서브스트링이 저장된 구조가 도시된 도,
도 2 내지 도 6은 본 발명의 구체적인 실시예에 따라 내부메모리 블록 또는 외부메모리 블록에 시그니처 서브스트링이 저장되는 방식이 도시된 도,
도 7은 본 발명에 의한 시그니처 스트링 메모리 저장방법의 흐름이 도시된 도,
도 8은 본 발명에 의한 시그니처 스트링 패턴 매칭방법의 흐름이 도시된 도이다.

Claims (11)

  1. 유해패킷의 검색 패턴으로 사용할 시그니처 스트링 패턴을 서브스트링으로 토큰화하는 과정;
    상기 서브스트링 중 저장하고자 하는 서브스트링이 이미 저장된 다른 시그니처 스트링 패턴의 서브스트링과 동일한지 여부를 판단하고, 동일한 경우 해당 메모리 테이블을 공유하고 동일하지 않은 경우 상기 저장하고자 하는 서브스트링이 첫번째 서브스트링인지 여부를 분석하는 과정;
    첫번째 서브스트링인 경우 내부메모리 블록에 저장하고, 첫번째 서브스트링이 아닌 경우 상기 저장하고자 하는 서브스트링의 이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링 패턴의 서브스트링 중 상기 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크되어있는지 분석하는 과정; 및
    링크되어있지 않은 경우 외부메모리 블록에 저장하고, 링크되어있는 경우 내부메모리 블록에 저장하는 과정을 포함하는 것을 특징으로 하는 시그니처 스트링 저장 메모리 최적화방법.
  2. 제 1 항에 있어서,
    상기 내부메모리 블록의 메모리 테이블은 이전위치의 서브스트링이 저장된 메모리 테이블의 주소필드, 다음위치의 서브스트링이 저장된 메모리 테이블의 주소 필드, 저장하고자 하는 서브스트링의 문자열필드, 다음위치의 서브스트링 존재여부 표시필드, 상기 저장하고자 하는 서브스트링이 첫번째 서브스트링인지 여부를 표시하는 필드, 내부메모리 블록에 메모리가 할당되었는지 표시하는 필드로 이루어지는 것을 특징으로 하는 시그니처 스트링 저장 메모리 최적화방법.
  3. 제 1 항에 있어서,
    상기 외부메모리 블록의 메모리 테이블은 다음위치의 서브스트링이 저장된 메모리 테이블의 주소필드, 저장하고자 하는 서브스트링의 문자열필드, 상기 저장하고자 하는 서브스트링의 문자열 사이즈에 관한 정보를 표시하는 필드, 다음위치의 서브스트링 존재여부 표시필드, 상기 저장하고자 하는 서브스트링이 마지막 위치의 서브스트링인지 여부를 표시하는 필드, 외부메모리 블록에 메모리가 할당되었는지 표시하는 필드로 이루어지는 것을 특징으로 하는 시그니처 스트링 저장 메모리 최적화방법.
  4. 제 1 항에 있어서,
    상기 시그니처 스트링 패턴 메모리 최적화방법은 서브스트링의 해쉬값을 산출하는 과정을 더 포함하며;
    상기 산출된 해쉬값에 매치되는 내부메모리 블록의 주소에 상기 서브스트링의 메모리 테이블을 저장하는 것을 특징으로 하는 시그니처 스트링 저장 메모리 최적화방법.
  5. 제 1 항에 있어서,
    상기 시그니처 스트링 패턴 메모리 최적화방법은 상기 서브스트링을 외부메모리 블록에 저장하는 경우 임의의 외부메모리 블록 주소부터 순차적으로 메모리 테이블을 배치하는 것을 특징으로 하는 시그니처 스트링 저장 메모리 최적화방법.
  6. 유입 트래픽의 페이로드를 시그니처 매칭엔진에 저장된 시그니처 서브스트링 문자열 크기와 동일하게 분할하는 과정;
    상기 분할된 유입 트래픽의 문자열 중 검색하고자 하는 문자열 이전위치의 문자열이 상기 저장된 시그니처 서브스트링과 매칭된 적이 없는 경우, 상기 검색할 문자열의 해쉬값에 대응되는 내부메모리 블록 주소의 메모리 테이블을 호출하는 과정;
    호출된 메모리 테이블에 저장된 시그니처 서브스트링과 상기 검색할 문자열이 매칭되지 않은 경우 매칭 프로세스를 중단하고, 매칭되는 경우 매칭된 시그니처 서브스트링이 상기 시그니처 서브스트링 중 마지막 위치의 서브스트링인지 분석하는 과정; 및
    마지막 위치의 서브스트링이 아닌 경우 상기 호출된 메모리 테이블에서 외부메모리 블록 주소를 호출하였다면 다음 검색하고자 하는 문자열을 상기 호출된 외부메모리 블록 주소에 저장된 서브스트링과 매칭하는지 분석하고, 마지막 위치의 서브스트링인 경우 경보를 발령하는 과정을 포함하는 것을 특징으로 하는 시그니처 스트링 패턴 매칭방법.
  7. 제 6 항에 있어서,
    상기 시그니처 스트링 패턴 매칭 검색방법은 상기 검색하고자 하는 문자열이 마지막 위치의 서브스트링이 아니고 상기 호출된 메모리 테이블에서 외부메모리 블록 주소를 호출하지 않은 경우,
    상기 검색하고자 하는 문자열 다음 위치의 문자열의 해쉬값에 대응되는 내부메모리 블록 주소의 메모리 테이블에 저장된 서브스트링과 상기 다음 위치의 문자열의 매칭여부를 분석하는 단계를 더 포함하는 것을 특징으로 하는 시그니처 스트링 패턴 매칭방법.
  8. 제 6 항에 있어서,
    상기 시그니처 스트링 패턴 매칭 검색방법은 상기 검색하고자 하는 문자열 이전위치의 문자열이 상기 저장된 시그니처 서브스트링과 매칭된 적이 있는 경우,
    상기 매칭된 시그니처 서브스트링이 저장된 메모리 테이블에서 외부메모리 블록 주소를 호출하였는지 분석하는 과정;
    상기 메모리 테이블에서 외부메모리 블록 주소를 호출한 경우 호출된 주소에 저장된 서브스트링과 상기 검색하고자 하는 문자열의 매칭여부를 분석하고, 상기 메모리 테이블에서 외부메모리 블록 주소를 호출하지 않은 경우 상기 검색하고자 하는 문자열 해쉬값에 대응되는 내부메모리 블록 주소에 저장된 서브스트링과 상기 검색하고자 하는 문자열의 매칭여부를 분석하는 과정을 포함하는 것을 특징으로 하는 시그니처 스트링 패턴 매칭방법.
  9. 유입 트래픽에 포함된 유해패킷을 판별하기 위한 시그니처 스트링이 토큰화된 서브스트링 단위로 저장된 메모리 구조로서,
    상기 서브스트링 중 시그니처를 구성하는 첫번째 서브스트링이 포함된 메모리 테이블과, 이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링의 서브스트링 중 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크되어 있지 않은 경우 상기 저장하고자 하는 서브스트링이 포함된 메모리 테이블이 배치되는 내부메모리 블록; 및
    이전위치의 서브스트링이 저장된 메모리 테이블이 다른 시그니처 스트링의 서브스트링 중 저장하고자 하는 서브스트링의 위치에 해당하는 서브스트링이 저장된 메모리 테이블과 링크된 경우 상기 저장하고자 하는 서브스트링이 포함된 메모리 테이블이 배치되는 외부메모리 블록을 포함하는 것을 특징으로 하는 시그니처 스트링 저장 메모리 구조.
  10. 제 9 항에 있어서,
    상기 내부메모리 블록의 메모리 테이블은 이전위치의 서브스트링이 저장된 메모리 테이블의 주소필드, 다음위치의 서브스트링이 저장된 메모리 테이블의 주소필드, 저장하고자 하는 서브스트링의 문자열필드, 다음위치의 서브스트링 존재여부 표시필드, 상기 저장하고자 하는 서브스트링이 첫번째 서브스트링인지 여부를 표시하는 필드, 내부메모리 블록에 메모리가 할당되었는지 표시하는 필드로 이루어지는 것을 특징으로 하는 시그니처 스트링 저장 메모리 구조.
  11. 제 9 항에 있어서,
    상기 외부메모리 블록의 메모리 테이블은 다음위치의 서브스트링이 저장된 메모리 테이블의 주소필드, 저장하고자 하는 서브스트링의 문자열필드, 상기 저장하고자 하는 서브스트링의 문자열 사이즈에 관한 정보를 표시하는 필드, 다음위치의 서브스트링 존재여부 표시필드, 상기 저장하고자 하는 서브스트링이 마지막 위치의 서브스트링인지 여부를 표시하는 필드, 외부메모리 블록에 메모리가 할당되었는지 표시하는 필드로 이루어지는 것을 특징으로 하는 시그니처 스트링 저장 메모리 구조.
KR1020070132806A 2007-12-17 2007-12-17 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법 KR100960120B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070132806A KR100960120B1 (ko) 2007-12-17 2007-12-17 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법
US12/331,613 US8365277B2 (en) 2007-12-17 2008-12-10 Signature string storage memory optimizing method, signature string pattern matching method, and signature string matching engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070132806A KR100960120B1 (ko) 2007-12-17 2007-12-17 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법

Publications (2)

Publication Number Publication Date
KR20090065315A true KR20090065315A (ko) 2009-06-22
KR100960120B1 KR100960120B1 (ko) 2010-05-27

Family

ID=40755122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070132806A KR100960120B1 (ko) 2007-12-17 2007-12-17 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법

Country Status (2)

Country Link
US (1) US8365277B2 (ko)
KR (1) KR100960120B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100809416B1 (ko) * 2006-07-28 2008-03-05 한국전자통신연구원 보안 시스템을 위한 최적 시그니처 자동 생성 장치 및 방법
KR100960120B1 (ko) * 2007-12-17 2010-05-27 한국전자통신연구원 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US8380688B2 (en) * 2009-11-06 2013-02-19 International Business Machines Corporation Method and apparatus for data compression
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US8943239B2 (en) * 2012-07-30 2015-01-27 Qualcomm Incorporated Data snooping direct memory access for pattern detection
KR101470590B1 (ko) * 2013-04-26 2014-12-10 (주) 시스메이트 플러그인 다중 패턴매칭 장치 및 그 방법
US8997256B1 (en) 2014-03-31 2015-03-31 Terbium Labs LLC Systems and methods for detecting copied computer code using fingerprints
US9459861B1 (en) 2014-03-31 2016-10-04 Terbium Labs, Inc. Systems and methods for detecting copied computer code using fingerprints
KR101448549B1 (ko) 2014-06-20 2014-10-13 (주)소만사 네트워크 정보유출방지 기기의 대용량 패킷 처리를 위한 하드웨어 엔진
US10824952B2 (en) * 2014-09-22 2020-11-03 International Business Machines Corporation Reconfigurable array processor for pattern matching

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359724A (en) * 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
US6609205B1 (en) * 1999-03-18 2003-08-19 Cisco Technology, Inc. Network intrusion detection signature analysis using decision graphs
US7110540B2 (en) * 2002-04-25 2006-09-19 Intel Corporation Multi-pass hierarchical pattern matching
KR100500589B1 (ko) 2003-09-03 2005-07-12 엘지엔시스(주) 하드웨어기반의 패턴매칭을 이용한 웜 차단 방법 및 장치
KR100531622B1 (ko) * 2003-12-05 2005-11-28 한국전자통신연구원 고속 패턴 저장 및 매칭 방법
US7370202B2 (en) * 2004-11-02 2008-05-06 Voltage Security, Inc. Security device for cryptographic communications
US20060184556A1 (en) * 2005-02-17 2006-08-17 Sensory Networks, Inc. Compression algorithm for generating compressed databases
JP5209945B2 (ja) * 2007-12-12 2013-06-12 株式会社日立製作所 記憶装置、暗号化コンテンツの有効化方法及び端末装置
KR100960120B1 (ko) * 2007-12-17 2010-05-27 한국전자통신연구원 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법

Also Published As

Publication number Publication date
KR100960120B1 (ko) 2010-05-27
US20090158427A1 (en) 2009-06-18
US8365277B2 (en) 2013-01-29

Similar Documents

Publication Publication Date Title
KR100960120B1 (ko) 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법
US7356663B2 (en) Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses
US20220237128A1 (en) Content search extension architecture for programmable intelligent search memory
Lakshminarayanan et al. Algorithms for advanced packet classification with ternary CAMs
US7676444B1 (en) Iterative compare operations using next success size bitmap
US9495479B2 (en) Traversal with arc configuration information
US8156247B2 (en) Systems and methods for reducing network performance degradation
US7565380B1 (en) Memory optimized pattern searching
Kumar et al. Algorithms to accelerate multiple regular expressions matching for deep packet inspection
US7558925B2 (en) Selective replication of data structures
Yu et al. GPU acceleration of regular expression matching for large datasets: exploring the implementation space
Qi et al. Feacan: Front-end acceleration for content-aware network processing
US7805393B1 (en) Assigning encoded state values to a search tree according to failure chains
US7610269B1 (en) Method and apparatus for constructing a failure tree from a search tree
Tang et al. RICS‐DFA: a space and time‐efficient signature matching algorithm with Reduced Input Character Set
Valgenti et al. GPP-Grep: High-speed regular expression processing engine on general purpose processors
Ho et al. PERG-Rx: a hardware pattern-matching engine supporting limited regular expressions
Chen et al. A regular expression matching engine with hybrid memories
CN106227852A (zh) 地震勘探成果数据文件的识别方法和装置
Nottingham GPF: A framework for general packet classification on GPU co-processors
Nourani et al. Bloom filter accelerator for string matching
US11924102B2 (en) Minimizing deviation from average latency of table lookups
Wu et al. A pattern matching coprocessor for deep and large signature set in network security system
Kim et al. Multihash based pattern matching mechanism for high-performance intrusion detection
Tashev et al. New Approach to developing efficient NIDPS

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130424

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140408

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150512

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160510

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180518

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee