KR100531622B1 - 고속 패턴 저장 및 매칭 방법 - Google Patents

고속 패턴 저장 및 매칭 방법 Download PDF

Info

Publication number
KR100531622B1
KR100531622B1 KR10-2003-0087885A KR20030087885A KR100531622B1 KR 100531622 B1 KR100531622 B1 KR 100531622B1 KR 20030087885 A KR20030087885 A KR 20030087885A KR 100531622 B1 KR100531622 B1 KR 100531622B1
Authority
KR
South Korea
Prior art keywords
pattern data
pattern
data
divided
word
Prior art date
Application number
KR10-2003-0087885A
Other languages
English (en)
Other versions
KR20050054538A (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 KR10-2003-0087885A priority Critical patent/KR100531622B1/ko
Priority to US10/749,262 priority patent/US20050125551A1/en
Publication of KR20050054538A publication Critical patent/KR20050054538A/ko
Application granted granted Critical
Publication of KR100531622B1 publication Critical patent/KR100531622B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • H04L63/1416Event detection, e.g. attack signature detection

Abstract

본 발명은 고속 패턴 저장 및 매칭 방법에 관한 것이다.
본 발명에 의하면, 일정한 규칙을 가지는 패턴 데이터를 설정된 크기에 따라 분할하고, 해당 분할된 패턴 데이터의 입력 위치순서 정보와, 해당 분할된 패턴 데이터 다음에 위치하는 패턴 데이터의 정보를 테이블화하여 저장하고, 새로 입력되는 패턴 데이터를 설정된 크기에 따라 분할하여 독립적으로 찾고, 각각의 입력 위치 순서에 따라 입력되는 패턴 데이터가 상기 일정 규칙을 가지는 패턴 데이터에 매칭 되는지 여부를 확인할 수 있도록 하여 고속으로 실시간 패턴 매칭이 가능하게 하며, 중복 단어들을 메모리의 하나의 주소에 저장할 수 있게 함으로써 메모리 효율을 높일 수 있다.

Description

고속 패턴 저장 및 매칭 방법{Method of high-speed pattern storing and matching}
본 발명은 고속 패턴 저장 및 매칭 방법에 관한 것으로, 특히 하드웨어로 구성된 고속 패턴 매칭 장치를 제공하여 침입 탐지 시스템을 비롯한 데이터베이스에서 특정한 패턴을 찾는 장치에 사용될 수 있도록 하는 고속 패턴 저장 및 매칭 방법에 대한 것이다.
네트워크 사용이 일반화되면서 이제까지 몇 개의 서버만이 공격의 대상이 되었던 과거의 해킹 형태를 벗어나 네트워크 전체를 무력화하고 서비스를 중단시키는 등의 네트워크 침해 대응 장치가 필요하게 되고 있다.
종래의 네트워크 기반의 침입을 탐지하기 위한 기술로는 대한민국 특허공개공보 10-2001-0012532(네트워크 기반 침입 탐지 시스템)에서 고속망에서의 네트워크 기반 침입 탐지를 위하여 고속 하드웨어와 패턴 매칭을 하드웨어를 사용하는 네트워크 침입 탐지 엔진을 이용할 수 있도록 제안하였다.
그러나, 상기한 기술은 고속 침입 탐지에 대한 정확한 인터페이스 처리 속도와 하드웨어 콤포넌트에 대한 방법이 명시되어 있지 않는 문제가 있다.
또한, 현재까지 네트워크 침입을 찾아내기 위한 여러 방법들이 개발되고 있으며 특히 규칙 기반 패킷 매칭 방법이 가장 효과적으로 사용되고 있으며, 많은 데이터베이스에서 문장이나 단어를 찾기 위해서는 해쉬 방법을 많이 이용하고 있다.
도 1은 종래의 패턴 검색 방법을 위한 구조를 나타낸 블록도이다.
도 1을 참조하면, 패턴 검색을 위한 구성은 제어부(110), 다수의 규칙 1~n(120~140), OR 게이트(150),출력부(160) 및 레지스터(170)를 포함한다.
상기한 구조에서 제어부(110)는 각 규칙 1~n(120~140)을 제어하고, 각 규칙 1~n(120~140)은 내부의 4개의 패킷 헤드 처리기능을 위한 MAC 매칭부(121), 프로토콜부(122), IP 주소부(123), 포트 번호부(124)가 각각 MAC 주소, 프로토콜, IP 주소, 포트 번호를 정상적인 패킷의 정보와 비교하고, 각각의 비교된 결과를 AND 게이트(125)에 의해 MAC 매칭부(121), 프로토콜부(122), IP 주소부(123), 포트 번호부(124)가 모두 비교 결과 정상적임을 나타내면 AND 게이트(125)가 컨텐츠 패턴 매치부(126)가 정상적인 패킷임을 나타내는 신호를 출력하도록 하는 신호를 인가한다.
그리고, 모든 규칙 1~n(120~140)의 컨텐츠 패턴 매칭부(126)의 신호를 OR 연산하는 OR 게이트(150)를 통해 하나의 규칙 1~n(120~140)라도 정상적인 패킷이 아니라는 신호를 나타내면 패킷 출력부(160)가 에러 신호를 발생하도록 하고, 모든 규칙 1~n(120~140)이 정상적인 패킷임을 나타내면 패킷 출력부(160)가 해당 패킷을 출력하도록 한다.
상기에서 모든 규칙 1~n(120~140) 부분은 FPGA(Field Programmable Gate Array)에 프로그램되어 구성되며, 규칙의 갯수에 따라 프로그램이 달라지게 된다.
상기의 패킷 검색을 좀더 자세히 설명하면 다음과 같다.
도 2는 종래의 패턴 검색방법을 위한 상세한 구성도이다.
도 2를 참조하면, 32비트 레지스터(127)로 입력되는 문자열의 패턴을 검색하는 컨텐츠 패턴 매치부(126)는 32비트 단위로 입력되는 데이터에서 'patterns' 이라는 문자열이 3클럭 동안 전달되는 경우를 예를 들면, 처음 32비트에는 Cyc(Cycle) 1에서 보인 'pat'라는 문자열이 포함되어 있고, Cyc 2에는 다음 클럭에 전달되어 온 'tern'이라는 문자열이, 그리고 Cyc 3에서는 's'를 포함하고 있다.
즉, col 1에는 문자열 'patterns'라는 단어가 row 1의 처음 바이트부터 비교하는 것을 보이고 있다. 즉, col 1에서는 row 1에서 4바이트 'patt'를 비교하고 raw 2에서는 'erns'를 동시에 비교하여 결과를 내놓게 된다. 이 경우 레지스터 A에 있는 문자열은 처음 바이트부터 다른 문자열이므로 비교값이 거짓이 된다.
또한, col 2에서는 col 1에서 비교하던 문자열은 한 바이트씩 아래로 시프트 한 값으로 입력 값을 비교한다. 즉, col 2의 row 1에서는 첫 바이트는 무시하고, 두 번째 바이트부터 'pat' 3바이트를 비교하고, row 2에서는 'tern'을 비교하고 row 3에서는 's'만을 비교하면 입력된 문자열은 col 2에서 비교 결과가 참이 된다.
동일한 방법으로 col 3과 col 4에서도 문자열을 한 바이트식 아래로 시프트하여 비교한다. 따라서 col 1, col 2, col 3, col 4의 비교값을 OR(129) 논리 합으로 구한 것이 매치 신호로 발생한다.
그러나, 이러한 방법은 하드웨어를 기반으로 패턴 매칭 장치를 설계한 것으로, 규칙의 수가 증가할 경우 FPGA를 새로 프로그램 해야 하며, 많은 규칙에 대해서 회로의 복잡도고 증가하므로 원하는 속도를 얻는 것에 문제가 있다.
상기한 문제를 해결하기 위하여, 본 발명은 고속 패턴 매칭을 위하여 모든 구성이 단순한 메모리 룩업으로 구성될 수 있도록 하고, 새로운 룰의 추가 및 갱신이 용이하게 하여, 새로운 패턴을 계속 추가해야 하는 장치에도 적용이 용이하도록 하고, 규칙 기반 IDS(Intrusion Detection System)의 패턴 매칭용 하드웨어에 적용될 수 있으며, 특정 패턴을 빠른 시간에 찾아야 하는 분야에 적용될 수 있도록 하는 고속 패턴 저장 및 매칭 방법을 제공함에 그 목적이 있다.
본 발명의 하나의 특징에 따른 고속 패턴 저장 방법은,
규칙을 구성하는 패턴 데이터를 테이블화하여 저장하는 방법에 있어서, (a) 상기 패턴 데이터를 설정된 길이 이하의 크기로 분할하는 단계; (b) 상기 분할된 각각의 패턴 데이터의 입력위치 순서 정보를 추출하는 단계; 및 (c) 상기 분할된 각각의 패턴 데이터에 고유의 패킷 ID를 부여하고, 상기 패킷 ID, 상기 분할된 패턴 데이터에 포함된 단어 및 상기 패턴 데이터의 입력위치 순서 정보를 테이블화하여 저장하는 단계를 포함한다.
본 발명의 하나의 특징에 따른 고속 패턴 매칭 방법은,입력되는 데이터의 패턴과 특정 규칙에 의해 테이블화하여 저장된 패턴 데이터의 매칭 여부를 판단하는 고속 패턴 매칭 방법에 있어서, (a) 상기 입력되는 데이터 패턴을 설정된 크기로 이하로 분할하는 단계; (b) 상기 테이블화하여 저장된 패턴 데이터로부터 상기 분할된 데이터 패턴에 포함된 단어와 동일한 단어를 포함하는 패턴 테이터를 검색하는 단계; (c) 상기 분할된 데이터 패턴의 입력위치 순서 정보와, 상기 단계 (b)에서 검색된 패턴 데이터의 입력위치 순서 정보를 확인하는 단계; 및 (d) 상기 단계 (c)에서 확인된 패턴 데이터와 상기 입력되는 데이터 패턴을 비교하여 동일한지 판단하는 단계를 포함한다.
삭제
아래에서는 첨부한 도면을 참고로 하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 첨부된 도면은 본 발명을 명확하게 설명하기 위해 본 발명의 설명과 관계없는 부분은 생략하였으며, 동일 또는 유사한 부분에 대해서는 동일한 도면 부호를 붙였다.
본 발명의 실시 예에 따라 침입 탐지 규칙을 찾는데 있어서, 먼저 침입 탐지 규칙을 구성하는 문장은 동일한 위치에서 동일한 문자열들을 가지는 규칙이 많이 존재한다.
따라서 규칙을 구성하는 문장을 앞에서부터 일정한 길이 이하로 잘라 이를 단어로 정의하고 각 단어를 따로 테이블에서 찾고 이들을 연결하여 규칙을 찾을 수 있다.
또한, 단어를 나눌 때는 위치가 다른 곳에서 동일한 단어가 반복되는 일은 거의 없거나 혹은 반복되는 단어가 있을 경우 해당 규칙의 문제가 발생한 위치에서만 단어를 자르는 길이를 달리하면 단어가 문장의 다른 위치에서 반복되는 것을 막을 수 있으므로, 각 단어가 지닌 순서 정보의 결합이 서로 독립적인 특성을 이용하여 위치에 따라 비교해야 할 패턴의 수가 항상 규칙의 수보다 적거나 동일하고, 각 단어를 별개로 찾아내고 단어들의 순서를 적절히 연결하여 정확한 규칙을 찾을 수 있다.
도 3은 본 발명의 실시 예에 따른 IDS 규칙의 예와 단어 나누기 방법을 나타낸다.
도 3을 참조하면, 본 발명의 실시 예에 따라 오픈 소스 IDS인 snort의 웹-공격(Web-attack) 규칙들 중에서 8개의 규칙을 예를 들어 설명한다.
이때, 8개의 규칙은 도 3의 제 1 블록(310)에 나타낸 것이고, 해쉬 테이블을 구성하기 위해 규칙들 중 반복되는 문장들을 추출하여 최대 길이 7 바이트 이내로 자르고 이들의 연결 관계를 보이는 것이 제 2 블록(320)에 나타낸다.
상기한 도 3과 같은 실시 예를 이용하여 컴퓨터에서 "/bin/echo"를 찾고자 하는 경우 먼저 "/bin/"이라는 단어를 찾는 것을 설명하면 다음과 같다.
종래에는 먼저"/bin/"이라는 단어를 찾은 다음에는 다음에 올 수 있는 3 가지의 단어들을 지시하는 포인터를 찾아 "echo", "kill", 그리고 "chomod" 중의 하나와 데이터를 차례로 비교하는 방법을 사용한다.
이러한 방법은 "/bin/"을 찾은 다음, 다음 3개의 문장과 입력되는 데이터를 차례로 비교해야 하므로 데이터 비교 시간이 비교할 데이터양만큼 증가하게 된다.
이때, 본 발명의 실시 예에 따른 도 3에 나타난 바와 같이 제 2 블록(320)의 데이터 구조를 이용하여 데이터를 저장하면 데이터 저장 공간을 줄일 수 있는 장점이 있다.
그러나, 이때 실시간으로 입력되는 패킷 등에서 원하는 패턴을 찾기 위한 실시간성 보장의 문제가 발생하므로, 본 발명의 실시 예에 따라 도 3의 제 2 블록의 데이터를 다중 해쉬 테이블에 각 단어의 해쉬 값에 따라 저장하게 된다.
상기한 방법에 의하면 입력되는 문장에서 잘려진 단어들을 해쉬 테이블에서 각각 찾아내고 각 단어가 저장되어 있던 위치 정보와 함께 출력할 수 있다.
해쉬 테이블에서 검색된 각 단어와 각 단어의 해쉬 테이블에 저장되어 있던 위치정보를 이용하면 각 단어의 전후를 비교하여 찾고자 하는 전체 문장을 찾을 수 있다.
다음은 해쉬 테이블에 각 단어가 저장될 때의 연결 관계를 나타낸 것이다.
도 4는 본 발명의 실시 예에 따른 해쉬 테이블에서의 문장 연결을 위한 구성도를 나타낸다.
도 4를 참조하면, 각 단어가 해쉬 테이블에 저장될 때 이들의 연결 관계를 보이기 위해 해쉬 테이블의 각 주소에는 해당 단어의 이전 ID(pid; Previous-ID)와 해당 단어의 ID(mid)에 대한 데이터를 가지고 있다.
여기서 해당 단어의 ID는 해당 단어가 저장된 메모리 주소를 대신하여 사용할 수도 있다.
본 발명의 실시 예에 따른 도 4에서 각 단어들은 다중의 해쉬 테이블을 사용하여 저장될 수 있으며, 제 1 테이블(410)은 "/bin/"이 저장된 해쉬 테이블의 주소를 나타낸다.
제 1 테이블(410)은 이 주소에 해당하는 단어 이전의 어떠한 단어가 있었는지를 pid1 로 연결하는 것이 보이며, 제 1 테이블(410)에 나타난 "/bin/"이 규칙을 구성하는 처음 단어이며, 이러한 첫 단어의 경우에는 pid 1에 다른 정보를 저장할 수 있다.
예를 들어, 처음 단어를 저장하는 제 1 테이블(410)과 제 2 테이블(420) 및 제 3 테이블(430)에 저장된 단어는 문장의 첫 단어이므로, pid1, pid2, pid3에 이전 단어의 정보가 아닌 본 발명의 실시 예에 따라 HTTP 프로토콜을 사용하는 규칙에 의한 HTTP ID 저장하여, 예시된 규칙들이 HTTP 프로토콜에서만 찾아질 수 있도록 한다. 그리고, 각 Ctl 1, Ctl2, Ctl3, 에 해당 단어가 첫번째 단어임을 나타내는 정보로'1'이라는 숫자를 부여하고, 두 번째 단어를 저장하고 있는 제 4 테이블(440), 제 5 테이블(450), 제 6 테이블(460) 및 제 7 테이블(470)의 Ctl4, Ctl5, Ctl6, Ctl7에 '2'라는 숫자를 부여하여 각 단어가 정확한 위치에서 찾아지고 조합되는지를 확인하는 수단으로 사용할 수 있다.
또한, "echo"의 단어와 같이 두 번째 단어이면서 마지막 단어인 경우는 Ctl4에 두 번째 단어임을 나타내는 '2'의 정보와 함께 해당 단어가 마지막 단어라는 정보도 포함하여 저장함으로써, 마지막 단어 정보가 있는 단어를 검색한 이후에는 더이상 검색을 하지 않도록 한다.
상기한 도 4에서 입력되는 패킷이 HTTP 프로토콜을 사용하고 "/bin/echo"라는 문장을 포함하는 경우 각각의 단어 "/bin/"과 "echo"를 도 4의 제 1 테이블(410)과, 제 4 테이블(440)에서 찾을 수 있다.
이때, 제 1 테이블에서 HTTP 프로토콜을 위한 ID를 pid에 저장하고 있다면, 읽혀진 pid1과 패킷의 헤드에서 HTTP 프로토콜임이 확인되어 발생한 ID를 비교하고, HTTP 프로토콜을 사용한 패킷의 "/bin/"이 있음을 확인하면 문장을 계속 찾아갈 수 있다.
이때 만약 입력되는 패킷이 HTTP 프로토콜을 사용하지 않는다면 프로토콜 비교에 있어 거짓이 발생하므로 처음 단어 "/bin/"는 맞게 찾는 단어가 아니게 되어 룩업의 결과는 거짓이 된다.
또한, 다음 단어인 "echo"를 저장하고 있는 제 4 테이블(440)의 pid 4는 mid 1과 연결되어 있으므로, 두 단어가 연결되어 있음을 확인하고 제 1 테이블(410)의 pid 1에는 해당 단어가 첫 번째 단어라는 정보를 포함하며, 제 4 테이블(440)의 pid 4에는 해당 단어가 두 번째 단어이면서 마지막 단어라는 정보를 포함하고 있으므로 완성된 문장을 찾을 수 있다.
또한, 단어 사이의 간격정보를 사용하여 문장 중에 있는 메타문자-예를 들어 mat*.dat-를 처리할 수 있다. 즉, 예를 든 바와 같이 'mat*.dat'가 찾고자 하는 문장인 경우, 'mat'와'dat'를 단어로 각각 찾고, 두 단어 사이의 다른 단어나 문자가 들어갈 수 있다는 정보를 간격 정보로 각 단어가 저장된 테이블에 저장한다.
그리고, 각 단어의 연결을 확인할 때 이 간격 정보를 사용하여 메타문자를 처리한다. 이러한 정보들은 각 테이블에서 Ctl 필드를 이용한다. 이러한 메타문자의 처리는 패턴 검색에서 꼭 필요하는 기능이며, 하드웨어에서 처리하기가 쉽지 않은 기능이다.
이상과 같은 본 발명의 실시 예에서와 같이 제 1 테이블~제 7 테이블로 해쉬 테이블을 작게 다중으로 사용하는 방법을 사용하여 동시에 같은 해쉬 값을 가진 다른 단어를 찾을 수 있도록 하였다.
또한, 이러한 경우의 단어를 해쉬 테이블에서 입력된 단어와 정확히 맞고 단어가 나타날 위치가 정확한가를 검사하는 과정이 있어, 검색을 통해 찾아낸 결과가 유일하게 정의 될 수 있도록 한다.
본 발명의 실시 예와 같이 단어의 검색에 해쉬 테이블을 사용하는 경우, 해쉬 키의 충돌을 막기 위해서 작은 해쉬 테이블을 다중으로 사용하는 방법으로 동시에 같은 해쉬 값을 가진 다른 단어들을 찾을 수 있도록 하였다.
또한, 다중 테이블을 이용하는 방법이 원하는 단어를 정확히 찾아낼 수 없는 문제를 해결하기 위해서, 단어를 해쉬 테이블에 입력된 단어와 정확히 맞고, 단어가 나타날 위치가 정확히 맞는지 검사하는 과정을 거쳐 유일한 단어가 정의될 수 있도록 한다.
그리고, 입력되는 테이블에서 발생하는 해쉬 값에 따라 각 테이블을 매번 읽는 것은 하드웨어 적으로 많은 전력 소모를 가져오게 되므로, 단어들이 문장에서 나타날 순서 정보를 테이블에 따로 저장하고, 먼저 이 순서 정보를 읽어 단어의 순서가 맞는지를 확인하여 단어를 비교하도록 하여 단어를 비교하기 위해 테이블을 읽는 빈도를 줄일 수 있도록 한다.
필요한 경우, 하나의 공통된 단어를 접미사로 사용하는 방법으로 접미사로 선택된 단어를 제외한 문장까지를 하나의 문장으로 놓고 단어를 구분하여 마지막에 end를 넣고, 해당 단어의 하나의 D를 부여함으로써, 같은 접미사를 갖는 문장의 마지막 단어들이 동일한 ID를 지니도록 하여 동일한 접미사를 가진 문장 처리가 용이하록 한다.
또한, 작은 크기의 해쉬 테이블은 해쉬 비트 수가 적어서, 단어의 길이가 동일하고 서로 독립인 단어가 동일한 해쉬 값을 생성하는 경우가 많다. 따라서 해쉬 값을 이용하여 해쉬 테이블을 찾은 다음 입력된 문자열과 테이블에 저장되어 문자열을 직접 비교하여 입력된 문자열이 찾고자 하는 문자인지 비교하는 기능을 필요로 한다.
따라서 해쉬 테이블에 저장된 단어의 길이가 짧으면 하드웨어 구현이 쉽고 이를 고려하여 본 발명의 실시 예에서는 해쉬 테이블에 저장될 단어를 특정한 길이 이하로 잘라 저장하고, 이를 비교하도록 하는 방법을 제안한다.
이상에서 본 발명의 바람직한 실시 예에 대하여 상세하게 설명하였지만 본 발명은 이에 한정되는 것은 아니며, 그 외에 다양한 변경이나 변형이 가능하다.
이상에서 설명한 바와 같이, 본 발명에 따른 고속 패턴 저장 및 매칭 방법은 단순한 메모리 룩업으로 구성되어 새로운 룰의 추가와 갱신이 용이하여 새로운 패턴을 계속해서 추가하여 검색하는데 용이하며, 규칙 기반의 IDS 또는 지문 비교, DNS 비교 등 많은 데이터 중에서 빠른 시간 안에 특정 패턴을 찾아야 하는 분야에 적용하여 패턴 매칭이 고속으로 실현될 수 있도록 하는 효과가 있다.
또한, 각 단어가 지닌 순서 정보의 결합이 서로 독립적인 특성을 이용하여 단어들을 단어 정보가 저장된 테이블에서 찾고 하나의 단어를 찾을 때 앞 단어의 ID를 비교하는 방법으로 문장을 연결하여 실시간 패턴 검색이 가능하도록 하는 효과가 있다.
도 1은 종래의 패턴 검색 방법을 위한 구조를 나타낸 블록도이다.
도 2는 종래의 패턴 검색방법을 위한 상세한 구성도이다.
도 3은 본 발명의 실시 예에 따른 IDS 규칙의 예와 단어 나누기 방법을 나타낸다.
도 4는 본 발명의 실시 예에 따른 해쉬 테이블에서의 문장 연결을 위한 구성도를 나타낸다.

Claims (11)

  1. 규칙을 구성하는 패턴 데이터를 테이블화하여 저장하는 방법에 있어서,
    (a) 상기 패턴 데이터를 설정된 길이 이하의 크기로 분할하는 단계;
    (b) 상기 분할된 각각의 패턴 데이터의 입력위치 순서 정보를 추출하는 단계; 및
    (c) 상기 분할된 각각의 패턴 데이터에 고유의 패킷 ID를 부여하고, 상기 패킷 ID, 상기 분할된 패턴 데이터에 포함된 단어 및 상기 패턴 데이터의 입력위치 순서 정보를 테이블화하여 저장하는 단계
    를 포함하는 것을 특징으로 하는 고속 패턴 저장 방법.
  2. 제 1항에 있어서,
    상기 단계 (c)는,
    테이블화되어 저장되는 패턴 데이터는, 다음에 입력되는 하나 이상의 패턴 데이터의 패킷 ID 정보를 포함하는 것을 특징으로 하는 고속 패턴 저장 방법.
  3. 제 1항에 있어서,
    두 개 이상의 패턴 데이터 사이의 간격정보를 메타문자로 처리하는 것을 특징으로 하는 고속 패턴 저장 방법.
  4. 제 1항에 있어서,
    상기 (c) 단계에서,
    상기 분할된 패턴 데이터 중에서 입력위치 순서가 처음인 패턴 데이터의 경우, 특정 패킷 헤드의 조합 값에서 추출된 ID를 상기 패킷 ID로 설정하는 것을 특징으로 하는 고속 패턴 저장 방법.
  5. 제 1항에 있어서,
    상기 (a) 단계에서,
    상기 패턴 데이터에 반복되는 단어가 포함되어 있거나, 반복되는 일이 거의 없는 단어가 포함되어 있는 경우, 해당 단어만을 별도의 패턴 데이터로 분할하는 것을 특징으로 하는 고속 패턴 저장 방법.
  6. 삭제
  7. 제 1항에 있어서,
    상기 (c)단계에서,
    상기 분할된 패턴 데이터가 가장 마지막 위치에 있는 경우, 더 이상의 패턴 데이터의 검색이 이루어지지 않도록, 해당 패턴 데이터가 가장 마지막 순서의 패턴 데이터임을 나타내는 정보를 상기 입력위치 순서 정보에 포함하는 것을 특징으로 하는 고속 패턴 저장 방법.
  8. 제 1항에 있어서,
    상기 패턴 데이터는 해쉬 테이블에 저장되고, 각각의 분할된 패턴 데이터의 해쉬 값, 분할된 패턴 데이터의 입력위치 순서 정보, 다음에 입력되는 하나 이상의 패턴 데이터의 패킷 ID 정보를 저장하는 것을 특징으로 하는 고속 패턴 저장 방법.
  9. 입력되는 데이터의 패턴과 특정 규칙에 의해 테이블화하여 저장된 패턴 데이터의 매칭 여부를 판단하는 고속 패턴 매칭 방법에 있어서,
    (a) 상기 입력되는 데이터 패턴을 설정된 크기로 이하로 분할하는 단계;
    (b) 상기 테이블화하여 저장된 패턴 데이터로부터 상기 분할된 데이터 패턴에 포함된 단어와 동일한 단어를 포함하는 패턴 테이터를 검색하는 단계;
    (c) 상기 분할된 데이터 패턴의 입력위치 순서 정보와, 상기 단계 (b)에서 검색된 패턴 데이터의 입력위치 순서 정보를 확인하는 단계; 및
    (d) 상기 단계 (c)에서 확인된 패턴 데이터와 상기 입력되는 데이터 패턴을 비교하여 동일한지 판단하는 단계
    를 포함하는 고속 패턴 매칭 방법.
  10. 제 9항에 있어서,
    상기 패턴 데이터는,
    상기 패턴 데이터에 포함된 단어가 위치한 순서를 나타내는 입력위치 순서 정보; 및
    상기 패턴 데이터의 다음에 위치하는 패턴 데이터의 패킷 ID 정보
    를 포함하는 것을 특징으로 하는 고속 패턴 매칭 방법.
  11. 삭제
KR10-2003-0087885A 2003-12-05 2003-12-05 고속 패턴 저장 및 매칭 방법 KR100531622B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2003-0087885A KR100531622B1 (ko) 2003-12-05 2003-12-05 고속 패턴 저장 및 매칭 방법
US10/749,262 US20050125551A1 (en) 2003-12-05 2003-12-31 High-speed pattern storing and matching method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0087885A KR100531622B1 (ko) 2003-12-05 2003-12-05 고속 패턴 저장 및 매칭 방법

Publications (2)

Publication Number Publication Date
KR20050054538A KR20050054538A (ko) 2005-06-10
KR100531622B1 true KR100531622B1 (ko) 2005-11-28

Family

ID=34632089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0087885A KR100531622B1 (ko) 2003-12-05 2003-12-05 고속 패턴 저장 및 매칭 방법

Country Status (2)

Country Link
US (1) US20050125551A1 (ko)
KR (1) KR100531622B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100960120B1 (ko) 2007-12-17 2010-05-27 한국전자통신연구원 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487542B2 (en) * 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7650429B2 (en) * 2005-02-04 2010-01-19 Cisco Technology, Inc. Preventing aliasing of compressed keys across multiple hash tables
US20060193159A1 (en) * 2005-02-17 2006-08-31 Sensory Networks, Inc. Fast pattern matching using large compressed databases
JP4944391B2 (ja) * 2005-05-11 2012-05-30 富士通株式会社 メッセージ異常自動判別装置、方法、及びプログラム
KR100833488B1 (ko) 2005-11-25 2008-05-29 한국전자통신연구원 침해 규칙 저장 방법 및 장치
US7661121B2 (en) * 2006-06-22 2010-02-09 Tivo, Inc. In-band data recognition and synchronization system
KR100832539B1 (ko) * 2006-12-06 2008-05-27 한국전자통신연구원 다중패턴을 지원하지 않는 패턴보드를 이용한 다중패턴검색 방법 및 장치
KR100959244B1 (ko) * 2008-08-01 2010-05-24 재단법인서울대학교산학협력재단 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법
US8438596B2 (en) 2009-04-08 2013-05-07 Tivo Inc. Automatic contact information transmission system
US10057250B2 (en) * 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security

Family Cites Families (7)

* 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
US5594638A (en) * 1993-12-29 1997-01-14 First Opinion Corporation Computerized medical diagnostic system including re-enter function and sensitivity factors
EP0972254A1 (en) * 1997-04-01 2000-01-19 Yeong Kuang Oon Didactic and content oriented word processing method with incrementally changed belief system
US5873081A (en) * 1997-06-27 1999-02-16 Microsoft Corporation Document filtering via directed acyclic graphs
US6487666B1 (en) * 1999-01-15 2002-11-26 Cisco Technology, Inc. Intrusion detection signature analysis using regular expressions and logical operators
AU2002220130A1 (en) * 2001-09-12 2003-03-24 Raqia Networks, Inc. High speed data stream pattern recognition
US7110540B2 (en) * 2002-04-25 2006-09-19 Intel Corporation Multi-pass hierarchical pattern matching

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100960120B1 (ko) 2007-12-17 2010-05-27 한국전자통신연구원 시그니처 스트링 저장 메모리 최적화방법과 그 메모리 구조및 시그니처 스트링 패턴 매칭방법
US8365277B2 (en) 2007-12-17 2013-01-29 Electronics And Telecommunications Research Institute Signature string storage memory optimizing method, signature string pattern matching method, and signature string matching engine

Also Published As

Publication number Publication date
US20050125551A1 (en) 2005-06-09
KR20050054538A (ko) 2005-06-10

Similar Documents

Publication Publication Date Title
US7146643B2 (en) Intrusion detection accelerator
KR100531622B1 (ko) 고속 패턴 저장 및 매칭 방법
US8244691B1 (en) Dictionary architecture and methodology for revision-tolerant data de-duplication
US6665297B1 (en) Network routing table
US20040083466A1 (en) Hardware parser accelerator
US6564211B1 (en) Fast flexible search engine for longest prefix match
US7234019B1 (en) Method and apparatus for implementing a search engine using an SRAM
US20070061884A1 (en) Intrusion detection accelerator
KR20020059238A (ko) 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된다중탐색 트리 구조의 자료를 탐색하는 방법
JP2005524149A (ja) コンテンツ・サーチ・エンジン
US10176187B2 (en) Method and apparatus for generating a plurality of indexed data fields
KR102601351B1 (ko) 트래픽 분류 방법 및 장치
US9715525B2 (en) Method and system for searching and storing data
US20030233515A1 (en) Hardware hashing of an input of a content addressable memory (CAM) to emulate a wider CAM
Sourdis Designs and algorithms for packet and content inspection.
KR101089722B1 (ko) 프리픽스 트리 기반 색인 방법 및 장치, 그 기록 매체
KR101276796B1 (ko) 패턴 매칭 장치 및 방법
US20040049493A1 (en) String matching process for ASCII strings using two arrays and hash table
KR20070003488A (ko) 효율적인 패턴검색을 위한 tcam에서의 정규수식표현방법 및 이를 이용한 패턴 검색방법
US9846739B2 (en) Fast database matching
KR20050072128A (ko) 하드웨어 파서 가속기
CN114024701A (zh) 域名检测方法、装置及通信系统
KR100378599B1 (ko) 주소 메모리 블록의 간섭 인덱싱에 기반한 라우팅 테이블검색 방법
Hajiabadi et al. Scalable, high-throughput and modular hardware-based string matching algorithm
Singaraju et al. FPGA based string matching for network processing applications

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: 20121031

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131024

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee