KR102213368B1 - 멀티 키워드 고속 검색 시스템 및 방법 - Google Patents

멀티 키워드 고속 검색 시스템 및 방법 Download PDF

Info

Publication number
KR102213368B1
KR102213368B1 KR1020190125003A KR20190125003A KR102213368B1 KR 102213368 B1 KR102213368 B1 KR 102213368B1 KR 1020190125003 A KR1020190125003 A KR 1020190125003A KR 20190125003 A KR20190125003 A KR 20190125003A KR 102213368 B1 KR102213368 B1 KR 102213368B1
Authority
KR
South Korea
Prior art keywords
search
keyword
candidate
keywords
unit
Prior art date
Application number
KR1020190125003A
Other languages
English (en)
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 KR1020190125003A priority Critical patent/KR102213368B1/ko
Application granted granted Critical
Publication of KR102213368B1 publication Critical patent/KR102213368B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

이 발명은 보이어-무어(Boyer Moore) 배드 캐릭터 쉬프트(Bad Character Shift) 검색 알고리즘과 터널리 검색 트리(Ternary Search Tree) 검색 알고리즘을 조합하여 검색 대상 패킷에 포함된 복수의 키워드를 고속으로 검색하는 시스템 및 방법에 관한 것이다.
이 발명에 따른 멀티 키워드 고속 검색 시스템은, 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)을 생성하는 BC 초기화부와, 상기 다수의 키워드들을 입력받아 다수의 서브 트리로 구성된 터널리 서치 트리(Ternary Search Tree) 구조의 해쉬 테이블(Hash Table)을 생성하는 해쉬 테이블 생성부와, 패킷이 입력되면 상기 BC 쉬프트 테이블을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 BC 검색부와, 상기 후보 키워드를 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하고 상기 패킷의 후보 위치에서 상기 후보 서브 트리의 터널리 서치 트리 검색을 수행하여 키워드 포함 여부를 탐지하고 탐지 결과를 상기 해쉬 테이블에 기록하는 TST 검색부를 포함한다.

Description

멀티 키워드 고속 검색 시스템 및 방법 {System and Method for Searching Multi-Keyword at High Speed}
이 발명은 네트워크 패킷에 보안 정보가 포함되는지를 고속으로 검색하는 시스템 및 방법에 관한 것으로서, 보다 상세하게는 복수의 키워드들을 포함하는 검출 대상 보안 정보가 네트워크 패킷에 포함되는지를 고속으로 검색하는 시스템 및 방법에 관한 것이다.
개인 정보나 산업 기밀 정보 등의 보안 정보는 유출시 악용될 소지가 높으며, 유출되어 악의적으로 이용되는 경우에 개인이나 기업 등에 막대한 피해를 준다. 이에, 기업이나 단체에서는 자산 보호를 목적으로 인트라 네트워크에서 인터넷으로 연결되는 패킷에 대하여 모니터링을 실시하고, 해당 기업이나 단체의 데이터 보안 정책에 따라 해당 패킷을 패스, 차단 또는 삭제함으로써, 보안 정보의 유출을 방지하고 있다.
이를 위해, 데이터 통신 환경에서 특정 키워드 또는 조건을 설정하고, 네트워크 패킷이 특정 키워드 또는 조건을 포함하는지를 검색하는 다양한 선행 기술이 존재한다.
대한민국 공개특허 제2010-0085459호, "네트워크 전송 데이터의 필터링을 이용하는 개인 정보 보호장치 및 개인 정보 보호 방법"은, 중요 개인 정보가 네트워크를 통해 외부로 전송되는 것을 차단하는 기술이다. 이 선행특허에서는 통신 데이터를 캡처링하고, 캡처링된 통신 데이터로부터 원본 데이터를 추출하고, 원본 데이터 내에 사용자에 의해 미리 설정된 기준 개인 정보 또는 개인 정보 패턴과 일치하는 데이터가 존재하는지를 판별하고, 그 결과에 따라 사용자에게 통보한다.
대한민국 공개특허 제2011-0071419호, "개인 정보 유출 방지 시스템 및 방법"은, 패킷에 개인 정보와 연관된 필드가 있는 경우, 해당 개인 정보와 연관된 필드가 포함하는 정보를 수정함으로써, 인터넷 네트워크 시스템에서 트래픽을 수집하는 장치에 대한 개인 정보 유출을 방지하는 기술이다. 이러한 선행특허는 미리 정해진 필드 성격에 따라 개인 정보와 연관된 필드를 임의의 값으로 수정함으로써, 개인 정보를 보호한다.
대한민국 공개특허 제2013-0024388호, "패킷 미러링 방식으로 암호화된 HTTPS 통신데이터를 모니터링하여 개인정보유출을 방지하는 개인정보 유출 방지 시스템 및 방법"은, 클라이언트와 웹서버 사이의 네트워크 패킷을 모니터링하여 개인정보유출을 방지하는 기술이다. 이 선행특허는, 기설정된 개인정보패턴을 이용한 패턴매칭에 의하여 개인정보패턴의 포함 내역을 확인하고, 기학습된 개인정보패턴의 포함내역을 이용하여 패킷 내 개인정보패턴의 이상 여부를 확인한다.
대한민국 공개특허 제2014-0145891호, "패턴 기반 개인정보 검출 방법"은, 데이터 패킷을 분석하여 기정의된 개인정보 패턴과의 매핑 데이터를 생성하고, 이 매핑 데이터에 기초하여 개인정보 노출도를 산출하는 기술이다. 이 선행특허는, 키워드로 정의한 개인정보를 이용하여 개인정보 패턴을 정의하고, 모니터링 패킷 내의 개인정보 패턴에 대한 검출 빈도수를 측정하기 때문에, 프라이버시 침해가 방지될 수 있다.
대한민국 공개특허 제2015-0043843호, "정보유출방지장치"는, 내부망에서 외부망으로 전송되는 정보 중 보안이 요구되는 정보에 대하여 외부망으로의 유출을 차단하는 기술이다. 이러한 선행특허는, 데이터 패킷의 내용 부분과 검출 패턴을 비교하여 내용 부분에 포함된 검출 패턴의 개수를 파악하고, 파악한 검출 패턴의 개수와 보안 정책의 임계치를 비교하여 이상 패턴 여부를 판단한다.
상술한 선행특허들과 같이 검색 대상 패킷에서 특정 키워드 또는 검출 패턴의 존재 여부를 검색하는 기술들은 이미 공지되어 있으나 그 처리 속도가 빠르지 못하다. 따라서, 백본망과 같이 검색 대상 패킷의 양이 비약적으로 많고 검출 대상 정보의 개수가 많은 경우 고속 처리를 위한 새로운 검색 기술이 필요하다.
대한민국 공개특허 제2010-0085459호 대한민국 공개특허 제2011-0071419호 대한민국 공개특허 제2013-0024388호 대한민국 공개특허 제2014-0145891호
이 발명은 보이어-무어(Boyer Moore) 배드 캐릭터 쉬프트(Bad Character Shift) 검색 알고리즘과 터널리 검색 트리(Ternary Search Tree) 검색 알고리즘을 조합하여 검색 대상 패킷에 포함된 복수의 키워드를 고속으로 검색하는 시스템 및 방법을 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 이 발명에 따른 멀티 키워드 고속 검색 시스템은, 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)을 생성하는 BC 초기화부와,
상기 다수의 키워드들을 입력받아 다수의 서브 트리로 구성된 터널리 서치 트리(Ternary Search Tree) 구조의 해쉬 테이블(Hash Table)을 생성하는 해쉬 테이블 생성부와,
패킷이 입력되면 상기 BC 쉬프트 테이블을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 BC 검색부와,
상기 후보 키워드를 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하고 상기 패킷의 후보 위치에서 상기 후보 서브 트리의 터널리 서치 트리 검색을 수행하여 키워드 포함 여부를 탐지하고 탐지 결과를 상기 해쉬 테이블에 기록하는 TST 검색부를 포함한 것을 특징으로 한다.
이 발명에 따른 멀티 키워드 고속 검색 방법은, 메모리에 로딩되어 프로세서유닛에 의해 실행되는 멀티 키워드 검색 엔진을 포함하는 멀티 키워드 고속 검색 시스템에서의 멀티 키워드 고속 검색 방법에 있어서,
상기 멀티 키워드 검색 엔진이 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)을 생성하는 제1단계와,
상기 멀티 키워드 검색 엔진이 상기 다수의 키워드들을 입력받아 다수의 서브 트리로 구성된 터널리 서치 트리(Ternary Search Tree) 구조의 해쉬 테이블(Hash Table)을 생성하는 제2단계와,
패킷이 입력되면 상기 멀티 키워드 검색 엔진이 상기 BC 쉬프트 테이블을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 제3단계와,
상기 멀티 키워드 검색 엔진이 상기 후보 키워드를 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하고 상기 패킷의 후보 위치에서 상기 후보 서브 트리의 터널리 서치 트리 검색을 수행하여 키워드 포함 여부를 탐지하고 탐지 결과를 상기 해쉬 테이블에 기록하는 제4단계를 포함한 것을 특징으로 한다.
이 발명에 따르면 검색 대상 패킷에 복수의 키워드가 포함되는지를 고속으로 검출할 수 있는 잇점이 있다.
도 1은 일반적인 네트워크 환경을 도시한 도면이다.
도 2는 이 발명에 따른 멀티 키워드 검색 엔진이 포함된 관리컴퓨터의 구성도이다.
도 3은 이 발명에 따른 멀티 키워드 검색 엔진의 세부 구성 블록도이다.
도 4는 검색 연산식을 포스트픽스 스택 구조로 저장한 연산식 저장 스택의 일 예이다.
도 5는 이 발명에 따른 터널리 서치 트리 구조의 해쉬 테이블의 일 예이다.
도 6은 이 발명에 따른 멀티 키워드 검색 엔진의 동작을 도시한 동작 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 구체적으로 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. "및/또는" 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다.
일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않아야 한다.
도 1은 일반적인 네트워크 환경을 도시한 도면이다. 기업이나 단체의 내부 통신망(120)에 다수의 사용자컴퓨터들(110) 및 관리컴퓨터(150)가 접속되고, 내부 통신망(120)의 각 컴퓨터들(110, 150)은 스위칭허브(130)를 통해 외부 인터넷(140)과 연결된다. 내부 통신망(120)의 사용자컴퓨터들(110)로부터 인터넷(140)으로 유출되는 아웃바운드 패킷들과 인터넷(140)으로부터 내부 통신망(120)의 사용자컴퓨터(110)들로 유입되는 인바운드 패킷들은 모두 스위칭허브(130)를 통과하게 된다. 스위칭허브(130)는 아웃바운드 패킷들 및/또는 인바운드 패킷들을 미러링하여 이 발명에 따른 멀티 키워드 검색 엔진이 포함된 관리컴퓨터(150)로 전달한다.
도 2는 이 발명에 따른 멀티 키워드 검색 엔진이 포함된 관리컴퓨터의 내부 구성도이다. 이 관리컴퓨터는 메모리(210), 프로세서유닛(220), 복수의 주변장치를 포함한다. 주변장치로서는, 통신부(230), 모니터(240), 입력부(250)가 포함된다.
프로세서유닛(220)은 메모리인터페이스(221)와, 하나 이상의 프로세서(222) 및 주변장치 인터페이스(223)를 포함한다. 경우에 따라서, 프로세서유닛 전체를 프로세서로 칭하기도 한다. 메모리인터페이스(221), 하나 이상의 프로세서(222) 및/또는 주변장치 인터페이스(223)는 별개의 구성요소이거나 하나 이상의 집적화된 회로에 집적화될 수 있다. 프로세서(222)는 여러 가지의 소프트웨어 프로그램을 실행하여 멀티 키워드 검색 기능을 수행하며, 메모리(210)에 저장되어 있는 특정 소프트웨어 모듈(명령어 세트)을 실행하여 그 모듈에 대응하는 여러 가지의 기능을 수행한다. 주변장치 인터페이스(223)는 여러 가지 주변장치를 프로세서(222) 및 메모리(메모리 인터페이스를 통하여)(210)에 연결시킨다.
통신부(230)는 통상의 통신 프로토콜을 통해 스위칭허브(130)로부터 검색 대상 패킷(인바운드 패킷 또는 아웃바운드 패킷)을 수신한다. 모니터(240)는 화면 출력장치를 포함하고, 입력부(250)는 키보드 또는 마우스 등의 사용자 입력장치를 포함한다. 관리자는 이 입력부(150)를 이용하여 검색 키워드를 입력할 수 있다.
메모리(210)는 소프트웨어 프로그램을 저장한다. 소프트웨어에는 운영체제모듈(211), 통신모듈(222), 그래픽모듈(223), 사용자인터페이스모듈(214), 멀티 키워드 검색 엔진(215)을 포함한다. 소프트웨어 구성요소인 모듈 또는 엔진은 명령어들의 집합으로 표현할 수 있으므로, 모듈 또는 엔진은 명령어 세트라고 표현하기도 하고, 프로그램으로 표현하기도 한다.
운영체제모듈(211)은 일반적인 시스템 작동을 제어하는 여러 가지 소프트웨어 구성요소를 포함한다. 예를 들어, 일반적인 시스템 작동의 제어는, 메모리 관리 및 제어, 저장 하드웨어 제어 및 관리, 전력 제어 및 관리를 의미한다. 운영체제모듈(211)은 여러 가지 하드웨어 장치와 소프트웨어 구성요소 사이의 통신을 원활하게 하는 기능을 수행한다. 통신모듈(212)은 통신부(230)를 통해 내부 통신망에 접속된 각 시스템들과 통신을 가능하게 한다. 그래픽모듈(213)은 각 영상 컨텐츠를 모니터(240) 상에 그래픽으로 표시하기 위한 여러 가지 소프트웨어 구성요소들을 포함한다. 사용자 인터페이스 모듈(214)은 사용자 인터페이스에 관련된 여러 가지 소프트웨어 구성요소를 포함한다. 사용자 인터페이스의 상태가 어떻게 변경되는지 또는 사용자 인터페이스의 상태의 변경이 어떤 조건에서 이루어지는 지에 대한 내용을 포함한다.
멀티 키워드 검색 엔진(215)은 다수의 키워드들을 포함하는 검색 연산식과 검색 대상 패킷을 입력받아, 패킷 내에 다수의 키워드들이 포함되는지를 검색하는 소프트웨어 구성요소를 포함한다. 이 멀티 키워드 검색 엔진(215)은 보이어-무어(Boyer Moore) 배드 캐릭터 쉬프트(Bad Character Shift) 검색 알고리즘과 터널리 서치 트리(Ternary Search Tree) 검색 알고리즘을 조합하여 수행함으로써, 패킷에 포함된 다수의 키워드를 고속으로 정확하게 검색한다.
여기서, 검색 연산식은 다수의 키워드들과, 키워드들간 논리연산자(AND, OR, NOT)으로 이루어진다.
검색 연산식의 일 예로서, "NetFront/ or NetFront123 or NetFront1234 or SonyEricssonK610i or SonyEricssonK551 or SGH-Z130"을 예로 든다. 이 검색 연산식에서, 'NetFront/', 'NetFront123', 'NetFront1234', 'SonyEricssonK610i', 'SonyEricssonK551', 'SGH-Z130'이 키워드들이고, 해당 키워드들의 검색 결과가 'OR' 논리로 연산되어 검색 결과가 도출된다. 멀티 키워드 검색 엔진(215)은 패킷에 각 키워드들이 포함되는지를 검색하여 각 키워드별로 탐지 여부를 판단하고, 각 키워드별 탐지 여부를 논리 연산하여 최종 검색 결과를 도출한다. 즉, 상술한 검색 연산식에서, 패킷에서 상술한 키워드들 중 적어도 하나가 포함되어 있으면 최종 검색 결과를 '탐지(True)'로 출력하고, 패킷에서 상술한 키워드들이 모두 포함되어 있지 않으면 최종 검색 결과를 '미탐지(False)'로 출력한다.
도 3은 이 발명에 따른 멀티 키워드 검색 엔진(215)의 세부 구성 블록도이다.
이 발명에 따른 멀티 키워드 검색 엔진은, 다수의 키워드들과 논리연산자로 이루어진 검색 연산식을 연산식 저장 스택(32)에 포스트픽스(postfix) 스택 구조로 저장하고 상기 다수의 키워드들을 추출하는 연산식 저장부(31)와, 상기 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)(34)을 생성하는 BC 초기화부(33)와, 상기 다수의 키워드들을 입력받아 터널리 서치 트리(Ternary Search Tree) 구조를 가지며 상기 연산식 저장 스택(32)과 연결된 해쉬 테이블(Hash Table)(36)을 생성하는 해쉬 테이블 생성부(35)와, 패킷이 입력되면 상기 BC 쉬프트 테이블(34)을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 BC 검색부(37)와, 상기 패킷과 상기 후보 키워드와 후보 위치 및 터널리 서치 트리 구조의 해쉬 테이블(36)을 기반으로 상기 패킷의 후보 위치에 상기 후보 키워드가 포함되는지를 검색하고 그 검색 결과를 상기 해쉬 테이블(36)에 업데이트하는 TST 검색부(38)와, 상기 TST 검색부(38)의 검색 완료 후 상기 연산식 저장 스택(32)에 저장된 검색 연산식을 논리 연산하는 논리연산부(39)를 포함한다.
여기서, 포스트픽스 스택 구조는 스택을 쉽게 사용하기 위하여 연산식을 후위식으로 변경시키는 형태이다. 포스트픽스 스택 구조 및 연산 방법에 대한 설명은 "https://wayhome25.github.io/cs/2017/04/18/cs-22"에 설명된다. 도 4는 검색 연산식을 포스트픽스 스택 구조로 저장한 연산식 저장 스택의 일 예이다. 키워드 인자가 먼저 저장되고, 그 후위에 연산자가 저장된다.
배드 캐릭터 쉬프트 검색은 보이어 무어(Boyer Moore) 검색 알고리즘 중 하나로서, 본문에서 비교하지 않아도 될 부분을 건너뛰면서 검색하는 방법으로서, 이 발명에서는 패킷에서 키워드 후보를 고속으로 찾아내기 위해 수행한다. 이를 위해, 배드 캐릭터 쉬프트 검색을 위한 키워드들의 이동거리 테이블을 만들어야 하며, 이 발명에서는 이를 BC 쉬프트 테이블(34)로 명명한다. 배드 캐릭터 쉬프트 검색에 관한 설명은 아래의 자료들을 참고할 수 있다. 이 발명에서 BC 검색부(37)는 BC 쉬프트 테이블(34)을 기반으로 패킷을 스캔하여 후보 키워드 및 패킷 내 상기 후보 키워드의 위치 정보를 도출한다.
[배드 캐릭터 쉬프트 알고리즘 참고 자료]
"https://m.blog.naver.com/PostView.nhn?blogId=cestlavie_01&logNo=221055516242&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F"
"http://www.cs.jhu.edu/~langmea/resources/lecture_notes/boyer_moore.pdf"
"https://www.researchgate.net/publication/47865983_On_Tuning_the_Bad-Character_Rule_the_Worst-Character_Rule"
터널리 서치 트리(삼진 탐색 트리)는 문자열을 정렬하고 검색하는 방법으로서, 이 발명에서는 키워드들을 터널리 서치 트리 구조로 정렬하고, 이를 기반으로 패킷에서 후보 키워드를 정확하게 검출하기 위해 수행한다. 일반적인 터널리 서치 트리에 관한 설명은 아래의 자료들을 참고할 수 있다.
[터널리 서치 트리 검색 알고리즘 참고 자료]
"https://javacan.tistory.com/entry/19"
"https://www.cs.upc.edu/~ps/downloads/tst/tst.html"
"https://ko.coursera.org/lecture/algorithms-part2/ternary-search-tries-yQM8K"
도 5는 이 발명에 따른 터널리 서치 트리 구조의 해쉬 테이블의 일 예이다. 일반적으로 해쉬 테이블은 키(key)와 값(value)로 이루어져서 키(key)를 인덱스로 이용하여 값(value)을 신속하게 찾기 위한 자료구조이다.
앞서 예로 든 검색 연산식 "NetFront/ or NetFront123 or NetFront1234 or SonyEricssonK610i or SonyEricssonK551 or SGH-Z130"에서, 키워드들 'NetFront/'와 'NetFront123'와 'NetFront1234'은 제1서브 트리(51)를 구성하고, 'SGH-Z130'는 제2서브 트리(52)를 구성하며, 'SonyEricssonK610i'와 'SonyEricssonK551'는 제3서브 트리(53)를 구성한다.
제1서브 트리(51)는 해당 서브 트리의 인덱스부(51a)와, 해당 키워드들의 공통 문자열부(51b)와, 각 키워드들의 개별 문자열부(51c)와, 개별 키워드의 검출 결과를 입력하기 위한 검출 결과부(51d)로 이루어진다. 제2서브 트리(52)는 해당 서브 트리의 인덱스부와, 해당 키워드의 개별 문자열부와, 해당 키워드의 검출 결과를 입력하기 위한 검출 결과부로 이루어진다. 제3서브 트리(53)는 인덱스부(53a)와, 공통 문자열부(53b)와, 개별 문자열부(53c)와, 검출 결과부(53d)로 이루어진다.
인덱스부는 각 서브 트리의 공통 문자열 중 선두 일부(예컨대, 2 byte) 문자열의 해쉬값이 저장된다. 즉, 제1서브 트리(51)의 인덱스부(51a)는 제1서브 트리를 구성하는 키워드들의 공통 문자열 중 선두 2byte 문자열인 'Ne'의 해쉬값이 저장되고, 제2서브 트리(52)의 인덱스부는 'SG'의 해쉬값이 저장되며, 제3서브 트리(53)의 인덱스부(53a)는 'So'의 해쉬값이 저장된다.
이 발명에서는 BC 검색부(37)에서 찾아진 후보 키워드의 서브 트리를 신속하게 찾기 위해 해쉬 테이블(36)을 이용한다. 즉, BC 검색부(37)는 패킷을 스캔하여 후보 키워드가 도출되면, 해당 후보 키워드의 선두 2 byte 문자열의 해쉬값과, 해당 후보 키워드의 패킷 내 위치(후보 위치) 정보를 TST 검색부(38)에게 전달하고, TST 검색부(38)는 후보 키워드의 해쉬값을 이용하여 해쉬 테이블(36)에서 해당 서브 트리를 찾고 패킷의 후보 위치에서 터널리 서치 트리 기반 검색을 수행한다.
각 키워드별 검출 결과부는 TST 검색부(38)에 의해 탐지/미탐지로 저장되며, 연산식 저장 스택(32)의 대응되는 키워드에 링크된다. 즉, 제1서브 트리의 'NetFront/'의 검출 결과부와 도 4의 연산식 저장 스택의 'NetFront/'가 연결되어, 논리연산부(39)가 연산식 저장 스택(32)의 'NetFront/' 항목을 읽을 때, 제1서브 트리의 'NetFront/'의 검출 결과부에 저장된 값이 독출된다.
이하, 상술한 멀티 키워드 검색 엔진의 동작을 도 6의 흐름도를 참조하여 설명한다.
먼저, 다수의 키워드들과 논리연산자로 이루어진 검색 연산식이 입력되면, 연산식 저장부(31)는 이 검색 연산식을 연산식 저장 스택(32)에 포스트픽스 스택 구조로 저장하며, 상기 다수의 키워드들이 도출되어 BC 초기화부(33)와 해쉬 테이블 생성부(35)로 전달된다(S61).
BC 초기화부(33)는 다수의 키워드들에 대해 배드 캐릭터 쉬프트 검색을 위한 BC 쉬프트 테이블(34)을 생성한다(S62). 이 BC 쉬프트 테이블(34)은 통상적인 보이어 무어 배드 캐릭터 쉬프트 검색 알고리즘의 이동거리 테이블 생성 방법에 따라 생성되는 것이 바람직하다.
아울러, 해쉬 테이블 생성부(35)는 다수의 키워드들에 대해 터널리 서치 트리 구조의 다수의 서브 트리들로 구성되며, 연산식 저장 스택과 연결된 해쉬 테이블(36)을 생성한다. 각 서브 트리는 해당 서브 트리를 구성하는 다수의 키워드들의 공통 문자열 중 선두 일부 문자열의 해쉬값으로 저장된 인덱스부를 포함하고, 상기 서브 트리를 구성하는 다수의 키워드들의 공통 문자열부 및 개별 문자열부를 포함하며, 각 키워드별로 패킷에 포함여부 저장하기 위한 검출 결과부를 포함한다.
패킷이 입력되면, BC 검색부(37)는 BC 쉬프트 테이블(34)을 기반으로 상기 입력된 패킷을 스캔하면서 배드 캐릭터 쉬프트 검색을 수행하여 패킷에 키워드들이 포함되는지 1차 검색하여 후보 키워드들을 도출하고, 후보 키워드들의 패킷 내 위치 정보(후보 위치)를 도출한다(S63). BC 검색부(37)는 도출된 후보 키워드의 선두 일부 문자열의 해쉬값과 해당 후보 키워드의 위치 정보(후보 위치)를 TST 검색부(38)로 전송한다.
TST 검색부(38)는 BC 검색부(37)에서 입력된 후보 키워드의 선두 문자열의 해쉬값을 이용하여 해쉬 테이블(36)에서 대응되는 후보 서브 트리를 읽어오고, 입력된 패킷의 후보 위치에서 후보 서브 트리를 구성하는 키워드들을 탐지한다(S64). 특정 키워드가 탐지되면 탐지된 키워드에 대응하는 검출 결과부에 '탐지(true)'를 기록한다(S65).
TST 검색부(38)가 모든 후보 키워드들에 대한 TST 검색을 완료하면, 논리연산부(39)는 연산식 저장 스택(32)에 저장된 검색 연산식을 논리 연산한다(S66). 이때, 연산식 저장 스택(32)과 해쉬 테이블(36)의 검출 결과부가 연결되어 있으므로, 논리연산부(39)가 연산식 저장 스택의 키워드 인자값을 읽으면 대응되는 해쉬 테이블의 검출 결과부의 탐지(true)/미탐지(false)가 독출되어 전체 검색 연산식에 대한 논리 연산이 가능하다.
31 : 연산식 저장부 32 : 연산식 저장 스택
33 : BC 초기화부 34 : BC 쉬프트 테이블
35 : 해쉬 테이블 생성부 36 : 해쉬 테이블
37 : BC 검색부 38 : TST 검색부
39 : 논리 연산부

Claims (7)

  1. 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)을 생성하는 BC 초기화부와,
    상기 다수의 키워드들을 입력받아 다수의 서브 트리로 구성된 터널리 서치 트리(Ternary Search Tree) 구조의 해쉬 테이블(Hash Table)을 생성하는 해쉬 테이블 생성부와,
    패킷이 입력되면 상기 BC 쉬프트 테이블을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 BC 검색부와,
    상기 후보 키워드를 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하고 상기 패킷의 후보 위치에서 상기 후보 서브 트리의 터널리 서치 트리 검색을 수행하여 키워드 포함 여부를 탐지하고 탐지 결과를 상기 해쉬 테이블에 기록하는 TST 검색부를 포함한 것을 특징으로 하는 멀티 키워드 고속 검색 시스템.
  2. 제 1 항에 있어서, 상기 다수의 키워드들과 논리연산자로 이루어진 검색 연산식을 연산식 저장 스택에 포스트픽스(postfix) 스택 구조로 저장하는 연산식 저장부와, 상기 연산식 저장 스택에 저장된 검색 연산식을 논리 연산하는 논리 연산부를 더 포함한 것을 특징으로 하는 멀티 키워드 고속 검색 시스템.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 서브 트리는 상기 서브 트리를 구성하는 키워드들의 공통 문자열 중 선두 일부의 해쉬값을 인덱스로 포함하고, 상기 BC 검색부는 상기 후보 키워드의 선두 일부의 해쉬값을 상기 TST 검색부로 전달하는 것을 특징으로 하는 멀티 키워드 고속 검색 시스템.
  4. 제 2 항에 있어서, 상기 해쉬테이블과 상기 연산식 저장 스택이 연결된 것을 특징으로 하는 멀티 키워드 고속 검색 시스템.
  5. 메모리에 로딩되어 프로세서유닛에 의해 실행되는 멀티 키워드 검색 엔진을 포함하는 멀티 키워드 고속 검색 시스템에서의 멀티 키워드 고속 검색 방법에 있어서,
    상기 멀티 키워드 검색 엔진이 다수의 키워드들을 입력받아 배드 캐릭터 쉬프트(Bad Character Shift) 검색을 위한 BC 쉬프트 테이블(BC Shift Table)을 생성하는 제1단계와,
    상기 멀티 키워드 검색 엔진이 상기 다수의 키워드들을 입력받아 다수의 서브 트리로 구성된 터널리 서치 트리(Ternary Search Tree) 구조의 해쉬 테이블(Hash Table)을 생성하는 제2단계와,
    패킷이 입력되면 상기 멀티 키워드 검색 엔진이 상기 BC 쉬프트 테이블을 기반으로 상기 패킷에 배드 캐릭터 쉬프트 검색을 수행하여 후보 키워드와 후보 위치를 도출하는 제3단계와,
    상기 멀티 키워드 검색 엔진이 상기 후보 키워드를 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하고 상기 패킷의 후보 위치에서 상기 후보 서브 트리의 터널리 서치 트리 검색을 수행하여 키워드 포함 여부를 탐지하고 탐지 결과를 상기 해쉬 테이블에 기록하는 제4단계를 포함한 것을 특징으로 하는 멀티 키워드 고속 검색 방법.
  6. 제 5 항에 있어서, 상기 멀티 키워드 검색 엔진이 상기 제1단계 전에 상기 다수의 키워드들과 논리연산자로 이루어진 검색 연산식을 연산식 저장 스택에 포스트픽스(postfix) 스택 구조로 저장하는 제5단계와, 상기 제4단계 후에 상기 연산식 저장 스택에 저장된 검색 연산식을 논리 연산하는 제6단계를 더 포함한 것을 특징으로 하는 멀티 키워드 고속 검색 방법.
  7. 제 5 항 또는 제 6 항에 있어서, 상기 서브 트리는 상기 서브 트리를 구성하는 키워드들의 공통 문자열 중 선두 일부의 해쉬값을 인덱스로 포함하고, 상기 제4단계는 상기 후보 키워드의 선두 일부의 해쉬값을 이용하여 상기 해쉬 테이블에서 후보 서브 트리를 도출하는 것을 특징으로 하는 멀티 키워드 고속 검색 방법.
KR1020190125003A 2019-10-10 2019-10-10 멀티 키워드 고속 검색 시스템 및 방법 KR102213368B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190125003A KR102213368B1 (ko) 2019-10-10 2019-10-10 멀티 키워드 고속 검색 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190125003A KR102213368B1 (ko) 2019-10-10 2019-10-10 멀티 키워드 고속 검색 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR102213368B1 true KR102213368B1 (ko) 2021-02-08

Family

ID=74560023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190125003A KR102213368B1 (ko) 2019-10-10 2019-10-10 멀티 키워드 고속 검색 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102213368B1 (ko)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100013895A (ko) * 2008-08-01 2010-02-10 재단법인서울대학교산학협력재단 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법
KR20100085459A (ko) 2009-01-20 2010-07-29 (주)크레프리 네트워크 전송 데이터의 필터링을 이용하는 개인 정보 보호장치 및 개인 정보 보호 방법
KR20110071419A (ko) 2009-12-21 2011-06-29 한국전자통신연구원 개인 정보 유출 방지 시스템 및 방법
JP2011150404A (ja) * 2010-01-19 2011-08-04 Future Univ-Hakodate 情報検索装置、情報検索方法
JP2012507930A (ja) * 2008-10-30 2012-03-29 アルカテル−ルーセント データパケットを分類するための方法およびシステム
KR20130024388A (ko) 2011-08-31 2013-03-08 (주)소만사 패킷 미러링 방식으로 암호화된 https 통신 데이터를 모니터링하여 개인정보유출을 방지하는 개인정보 유출 방지 시스템 및 방법
KR20130081140A (ko) * 2012-01-06 2013-07-16 한남대학교 산학협력단 패턴 매칭을 통한 네트워크 침입 탐지 장치
KR20140145891A (ko) 2013-06-14 2014-12-24 서울여자대학교 산학협력단 패턴 기반 개인정보 검출 방법
KR20160058198A (ko) * 2012-08-08 2016-05-24 아마존 테크놀로지스, 인크. 아카이벌 데이터 저장 시스템

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100013895A (ko) * 2008-08-01 2010-02-10 재단법인서울대학교산학협력재단 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법
JP2012507930A (ja) * 2008-10-30 2012-03-29 アルカテル−ルーセント データパケットを分類するための方法およびシステム
KR20100085459A (ko) 2009-01-20 2010-07-29 (주)크레프리 네트워크 전송 데이터의 필터링을 이용하는 개인 정보 보호장치 및 개인 정보 보호 방법
KR20110071419A (ko) 2009-12-21 2011-06-29 한국전자통신연구원 개인 정보 유출 방지 시스템 및 방법
JP2011150404A (ja) * 2010-01-19 2011-08-04 Future Univ-Hakodate 情報検索装置、情報検索方法
KR20130024388A (ko) 2011-08-31 2013-03-08 (주)소만사 패킷 미러링 방식으로 암호화된 https 통신 데이터를 모니터링하여 개인정보유출을 방지하는 개인정보 유출 방지 시스템 및 방법
KR20130081140A (ko) * 2012-01-06 2013-07-16 한남대학교 산학협력단 패턴 매칭을 통한 네트워크 침입 탐지 장치
KR20160058198A (ko) * 2012-08-08 2016-05-24 아마존 테크놀로지스, 인크. 아카이벌 데이터 저장 시스템
KR20140145891A (ko) 2013-06-14 2014-12-24 서울여자대학교 산학협력단 패턴 기반 개인정보 검출 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DIXIT Anushka, "BAD CHARACTER SHIFT BASED STRING MATCHING ALGORITHMS: CRITICAL REVIEW", 2017.12. , ISSN: 2456-4184 *
위키피디아, ternary search tree, https://www.wikidata.org/wiki/Q2859802 (2017.10.3. 공개) *
최윤호 등, "BLAST: B-LAyered bad-character SHIFT tables for high-speed pattern matching" (2012.12.) *

Similar Documents

Publication Publication Date Title
US11089040B2 (en) Cognitive analysis of security data with signal flow-based graph exploration
US9602548B2 (en) System and method for intelligent state management
US8706709B2 (en) System and method for intelligent term grouping
US8997236B2 (en) System, method and computer readable medium for evaluating a security characteristic
US9313232B2 (en) System and method for data mining and security policy management
Swiler et al. Computer-attack graph generation tool
US9514246B2 (en) Anchored patterns
US7013395B1 (en) Method and tool for network vulnerability analysis
US20070226796A1 (en) Tactical and strategic attack detection and prediction
AU2016204072A1 (en) Event anomaly analysis and prediction
JP6557334B2 (ja) アクセス分類装置、アクセス分類方法、及びアクセス分類プログラム
Huang et al. A novel mechanism for fast detection of transformed data leakage
Kijsanayothin et al. Analytical approach to attack graph analysis for network security
CN116451215A (zh) 关联分析方法及相关设备
Jaeger et al. Normalizing security events with a hierarchical knowledge base
CN117692200A (zh) 基于自适应异常行为分析的互联网威胁检测与回溯方法
KR102213368B1 (ko) 멀티 키워드 고속 검색 시스템 및 방법
Sleeman et al. Temporal understanding of cybersecurity threats
Abrek Attack taxonomies and ontologies
Win et al. A simple and efficient framework for detection of sql injection attack
Lin et al. CrptAC: Find the Attack Chain with Multiple Encrypted System Logs
Kijsanayothin et al. Exploit-based analysis of attack models
Sabbah et al. Creating Android Malware Knowledge Graph Based on a Malware Ontology
Criscione et al. Integrated detection of attacks against browsers, web applications and databases
US12101346B1 (en) Expression analysis for preventing cyberattacks

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant