KR101382787B1 - 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법 - Google Patents

메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법 Download PDF

Info

Publication number
KR101382787B1
KR101382787B1 KR1020130030112A KR20130030112A KR101382787B1 KR 101382787 B1 KR101382787 B1 KR 101382787B1 KR 1020130030112 A KR1020130030112 A KR 1020130030112A KR 20130030112 A KR20130030112 A KR 20130030112A KR 101382787 B1 KR101382787 B1 KR 101382787B1
Authority
KR
South Korea
Prior art keywords
state
deterministic finite
pattern
patterns
regular expression
Prior art date
Application number
KR1020130030112A
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 KR1020130030112A priority Critical patent/KR101382787B1/ko
Application granted granted Critical
Publication of KR101382787B1 publication Critical patent/KR101382787B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/16Automatic learning of transformation rules, e.g. from examples

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 텍스트 상에서의 정규 표현식(regular expression)을 결정적 유한 오토마타(deterministic finite automata, 이하 DFA)로 변환하는 방법에 관한 것으로서, 정규 표현식이 복잡해지고 그 숫자가 증가함에 따라 정규 표현식을 결정적 유한 오토마타로 변환하는 과정에서 발생 가능한 상태 확대(state blowup) 문제를 동일한 입력 문자를 갖는 상태의 병합(merging)을 통해 해결함으로써, 메모리 효율적인 결정적 유한 오토마타를 구현한다. 본 발명에 따른 방법은, (a) 상기 N개의 정규 표현식 패턴 각각의 문자열 길이를 L(i)에 저장하는 단계; (b) 상기 저장된 패턴의 길이 L(i)에 따라 패턴을 역방향 정렬하는 단계; (c) 상기 역방향 정렬된 정규 표현식 패턴을 기계가 받아들이는 유한 오토마타 가운데, 상태 천이 시 변환된 상태의 유일성을 갖는 결정적 유한 오토마타로 변환하는 단계; (d) 상기 (c)에서 변환된 결정적 유한 오토마타 가운데, i(1≤i≤N-1)번째 패턴으로부터 생성된 결정적 유한 오토마톤과 j(i+1≤j≤N)번째 패턴으로부터 생성된 결정적 유한 오토마톤 내 상태 간 비교 과정을 통해 동일한 입력 문자를 갖는 상태를 찾는 단계; (e) 상기 (d) 단계에서 찾은 결합 가능한 상태를 병합하여 새로운 상태를 생성하는 단계; (f) 상기 (e) 단계에서 생성된 결정적 유한 오토마타에 기존 알고리듬을 적용하는 단계를 포함한다.

Description

메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법 {State Reduction Method for Memory-Efficient Deterministic Finite Automata}
본 발명은 텍스트 상에서의 정규 표현식(regular expression)을 결정적 유한 오토마타(deterministic finite automata, 이하 DFA)로 변환하는 방법에 관한 것이다. 보다 상세하게, 본 발명은, 정규 표현식이 복잡해지고 그 숫자가 증가함에 따라 정규 표현식을 결정적 유한 오토마타로 변환하는 과정에서 발생 가능한 상태 확대(state blowup) 문제를 동일한 입력 문자를 갖는 상태의 병합(merging)을 통해 해결함으로써, 메모리 효율적인 결정적 유한 오토마타를 구현하는 방법에 관한 것이다.
패턴 매칭 알고리듬(Pattern Matching Algorithm)이란, 소정의 텍스트에, 찾고자 하는 특정 문자 혹은 문자열 패턴이 존재하는지 여부를 탐지하기 위한 알고리듬이다. 이러한 패턴 매칭 알고리듬은 찾고자 하는 패턴의 구성요소에 따라 문자열 패턴 매칭 알고리듬(string pattern matching algorithm)과 정규 표현식 패턴 매칭 알고리듬(regular expression pattern matching algorithm)으로 구분된다.
종래의 문자열 패턴 매칭 알고리듬 중 가장 잘 알려진 것으로 Boyer-Moore 알고리듬과 그 변형 알고리듬이 있다. Boyer-Moore 알고리듬과 그 변형 알고리듬의 경우에는, 텍스트 상에 존재하는 문자열 이외의 기호가 포함된 패턴을 탐지하기 어렵고, 패턴의 수가 증가함에 따라 그 성능이 급격하게 저하되는 특징이 있어 수백 ~ 수천 개의 패턴을 처리하기 어려워 다중 패턴 매칭 알고리듬으로 사용하기 곤란한 문제점이 있었다.
이를 극복하기 위하여 제안된 방식이 정규 표현식 패턴 매칭 알고리듬이다. 이 알고리듬은 특수 기호인 셀렉터(selector)('|') 등을 사용해 여러 문자열 패턴을 결합하여 하나의 정규 표현식으로 표현하였다. 종래의 정규 표현식 패턴 매칭 알고리듬으로 가장 잘 알려진 것은 Aho-Corasick 알고리듬과 그 변형 알고리듬이다. Aho-Corasick 알고리듬과 그 변형 알고리듬은 전처리 단계에서 정규 표현식을 결정적 유한 오토마타로 변환하고 이를 이용하여 텍스트를 탐색하는 구성을 갖는다. 이 때, 상기 결정적 유한 오토마타는 상태(state)와 상태 전이(transition) 조건으로 구성되며 패턴에 존재하는 문자 혹은 기호에 따라 상태 및 상태 전이 조건이 정의되어, 텍스트 탐색 과정에서 텍스트 내 문자 혹은 기호로 구성된 패턴과의 일치 여부를 판단하기 위해 사용된다. 상기 결정적 유한 오토마타는 한 번에 오직 하나의 상태(state)만을 가지게 됨으로 상태 전이 시 하나의 입력 값에 대해 하나의 출력 값이 존재하게 되고 이를 이용해 패턴 탐지 과정에서의 오탐(false positive)을 방지할 수 있다는 장점을 갖는다.
그러나 상기 결정적 유한 오토마타는 정규 표현식 패턴의 수가 증가함에 따라 상태(state)의 수가 폭발적으로 증가하고 이에 따라, 메모리 사용량이 증가해 그 구현이 적합하지 않다는 문제점이 있다. 이와 같은 결정적 유한 오토마타의 문제점을 개선하기 위하여 잘 알려진 CD2FA 알고리듬과 Becchi의 알고리듬이 제안되었다.
CD2FA 알고리듬은 하나의 정규 표현식 내에서 동일한 입력과 출력을 갖는 상태를 병합함으로써 결정적 유한 오토마타의 상태 수를 감소시킨다. 하지만, 실제상용 시스템에서 사용되는 정규 표현식 패턴의 경우에는 결정적 유한 오토마타의 상태가 동일한 입력과 출력을 갖는 경우가 한정되어 있어 메모리 감소 효과가 기대했던 만큼 크지 않았다. 이러한 문제를 해결하기 위하여 제안된 Becchi의 알고리듬은 하나의 정규 표현식 내에서 동일한 출력을 갖는 상태를 병합하고 병합 이전의 상태 전이 정보를 비트맵(bitmap)을 사용해 표현함으로써 상기 CD2FA 알고리듬에 비해 상당한 메모리 감소를 가져왔다. 그러나 Becchi의 알고리듬 또한 정규 표현식 패턴 내에 존재하는 상태에 대한 병합만을 고려함으로써 패턴의 수가 수천 개에 이르는 경우에는 메모리 제한적인 시스템 구현에 적합한 메모리 감소 효과를 나타내지 못하는 문제점이 존재하였다.
이러한 폭발적 상태 증가의 문제를 해결하기 위한 대표적 연구 결과인 Becchi의 알고리듬은, 도 1-(a)를 도 1-(b)와 같이 변형한다. 즉, 도 1-(a)에서 하나의 정규 표현식 패턴 "a(a|b)b"에 대한 결정적 유한 오토마타에서 동일한 출력 상태로 천이가 발생하는 상태들 S2와 S3를 병합하여 도 1-(b)에서와 같이 하나의 상태 S2_3로 표현하는 과정을 통해, 결정적 유한 오토마타의 상태의 수를 줄임으로써 결정적 유한 오토마타 구현에 필요한 메모리 양을 감소시킬 수 있었다. 하지만, Becchi 알고리듬에서의 상태 감소 효과는 도 1-(b)에서와 같이 하나의 정규 표현식 패턴 "a(a|b)b"로부터 생성된 결정적 유한 오토마타에 존재하는 상태의 결합에 한정된다.
본 발명의 목적은, 정규 표현식을 결정적 유한 오토마타로 변환하는 과정에서 발생 가능한 상술한 상태 증가의 문제를 해결함으로써, 메모리 효율적인 결정적 유한 오토마타를 구현하는 방법을 제공하는 것이다. 상기와 같은 기존의 상태 압축 방법의 한계를 극복하기 위해서 서로 다른 정규 표현식 내 동일한 입력 문자를 갖는 상태를 병합하여 결정적 유한 오토마타의 상태를 압축하고 그 크기를 감소시킴으로써 메모리 효율적인 결정적 유한 오토마타를 구현하기 위한 방안인 SIC(Same Input character-based state Compression) 알고리듬을 제안한다. 병합 과정에서 한 번에 오직 하나의 상태(state)만을 갖는 결정적 유한 오토마타의 성질을 만족시키기 위해 비트맵(bitmap)을 사용하여 상태 전이에 따른 패턴 정보를 명시한다.
상기 목적을 달성하기 위하여, 본 발명에서 제안하는 SIC 알고리듬(도 1-(c) 참조)은, 두 정규 표현식 패턴 "a(a|b)b"와 "bb"로부터 생성된 결정적 유한 오토마타에서 동일한 입력 문자를 갖는 상태들을 병합하여 새로운 상태로 변환하는 과정을 통해 결정적 유한 오토마타의 상태의 수를 줄임으로써, 메모리 효율적인 결정적 유한 오토마타를 구현한다. 즉, "a(a|b)b"로부터 생성된 상태 S4와 "bb"으로부터 생성된 상태 S6, "a(a|b)b"로부터 생성된 상태 S3와 "bb"으로부터 생성된 상태 S5를 결합함으로써 결정적 유한 오토마타에 존재하는 상태의 수를 감소시킨다.
본 발명에 따른, N개(N은 2 이상의 자연수)의 정규 표현식 패턴을 결정적 유한 오토마타로 변환하는 방법은, (a) N개의 정규 표현식 패턴 각각의 문자열 길이를 L(i)에 저장하는 단계; (b) 상기 저장된 패턴의 길이 L(i)에 따라 패턴을 역방향 정렬하는 단계; (c) 상기 역방향 정렬된 정규 표현식 패턴을 기계가 받아들이는 유한 오토마타 가운데, 상태 천이시 변환된 상태의 유일성을 갖는 결정적 유한 오토마타로 변환하는 단계; (d) 상기 (c)에서 변환된 결정적 유한 오토마타 가운데, i(1≤i≤N-1)번째 패턴으로부터 생성된 결정적 유한 오토마톤(automaton)과 j(i+1≤j≤N)번째 패턴으로부터 생성된 결정적 유한 오토마톤 내 상태 간 비교 과정을 통해 동일한 입력 문자를 갖는 상태를 찾는 단계; (e) 상기 (d) 단계에서 찾은 결합 가능한 상태를 병합하여 새로운 상태를 생성하는 단계; (f) 상기 (e) 단계에서 생성된 결정적 유한 오토마타에 기존 알고리듬을 적용하는 단계를 포함한다.
본 발명의 일실시예에서, 상기 (a) 단계(정규 표현식 패턴의 길이 저장 단계로 명명함)는, (a-1) 상기 N개의 패턴의 길이를 계산하는 단계; (a-2) 상기 N개의 패턴의 길이를 L(i)에 저장하는 단계를 포함하는 것이 바람직하다.
본 발명의 일실시예에서, 상기 (b) 단계(N개의 정규 표현식 패턴의 역방향 정렬 단계로 명명함)는, (b-1) 상기 (a-2) 단계에서 저장된 L(i)에 따라 N개의 패턴을 역방향 정렬하는 단계; (b-2) 역방향 정렬된 패턴의 순서에 따라 N개의 패턴의 순서를 업데이트하는 단계를 포함하는 것이 바람직하다.
본 발명의 일실시예에서, 상기 (d) 단계(병합 가능한 상태 찾기 단계로 명명함)는, (d-1) 상기 역방향 정렬된 패턴 중 i(1≤i≤N-1)번째 패턴으로부터 생성된 결정적 유한 오토마톤을 선택하는 단계; (d-2) 상기 역방향 정렬된 패턴 중 j(i+1≤j≤N)번째 패턴의 결정적 유한 오토마톤을 선택하는 단계; (d-3) 상기 (d-1) 단계의 결정적 유한 오토마톤에서 L(i)번째 상태를 선택하는 단계; (d-4) 상기 (d-2) 단계의 결정적 유한 오토마톤에서 L(j)번째 상태를 선택하는 단계; (d-5) 상기 (d-3) 단계와 상기 (d-4) 단계에서 선택된 상태의 입력 값을 비교하는 단계; (d-6) 상기 (d-5) 단계에서 동일한 입력 값 'a'를 갖는 상태가 존재하는 경우, 해당 상태 (Sx,a,b,i)와 (Sy,a,c,j)를 SS에 저장하는 단계; (d-7) 상기 (d-5) 단계에서 동일한 입력 값 'a'를 갖는 상태가 존재하는 경우, 상기 L(i)값을 1만큼 감소시켜 L(i)값이 0이 될 때까지 상기 (d-3)단계부터 반복 수행하는 단계; (d-8) 상기 (d-5) 단계에서 동일한 입력 값을 갖는 상태가 없는 경우, L(j)값을 1만큼 감소시켜 L(j)값이 0이 될 때까지 상기 (d-4) 단계부터 반복 수행하는 단계; (d-9) 상기 (d-5) 단계에서 동일한 입력 값을 갖는 상태가 없는 경우, 상기 L(i)값을 1만큼 감소시켜 L(i)값이 0이 될 때까지 상기 (d-3) 단계부터 반복 수행하는 단계를 포함하는 것이 바람직하다.
본 발명의 일실시예에서, 상기 (e) 단계(상태 병합 단계로 명명함)는, (e-1) 상기 SS로부터 병합 가능한 상태 (Sx, a, b, i)와 (Sy, a, c, j)를 확인하는 단계; (e-2) 각 상태의 입력 값과 출력 값을 새로운 병합 상태에 각각 비트맵으로 저장하는 단계; (e-3) 상기 (e-1) 단계에서 선택된 상태 (Sx, a, b, i)와 (Sy, a, c, j)를 병합하여 새로운 상태 (Sx_y, a/i, a/j, b.i, c.j)로 변환하는 단계; (e-3) 상기 (e-3) 단계에서 새로 생성된 상태를 저장하는 단계; (e-4) 상기 SS가 NULL이 될 때가지 결합 가능한 상태들을 1씩 감소시키면서 상기 (e-1) 단계부터 반복 수행하는 단계를 포함하는 것이 바람직하다.
본 발명의 일실시예에서, 상기 (f) 단계(기존 알고리듬과의 결합 단계로 명명함)는, (f-1) 상기 (e) 단계에서 결정적 유한 오토마타를 참조하는 단계; (f-2) 상기 (f-1) 단계에서 생성된 결정적 유한 오토마타에서 기존 알고리듬을 적용하여 상태를 감소시키는 단계를 포함하는 것이 바람직하다.
본 발명은 서로 다른 정규 표현식 내 동일한 입력 문자를 갖는 상태를 병합하여 결정적 유한 오토마타의 상태를 압축하여 구현에 사용되는 메모리 크기를 감소시키는 방안을 제공함으로써, 종래의 패턴 매칭 알고리듬에 사용된 결정적 유한 오토마타에 비해 메모리 효율적인 자료 구조를 구현하고 이를 통해 경량화된 시스템에서 패턴 매칭 알고리듬이 동작 가능하게 할 수 있는 효과를 갖는다.
또한, 이러한 메모리 효율적인 결정적 유한 오토마타의 구현은 패턴 매칭 알고리듬에 한정되지 않고, 정규 표현식을 결정적 유한 오토마타로 표현하는 침입 탐지 시스템, 신경망 시스템, 컴파일러 및 워드 프로세서 등의 컴퓨터 분야, 및 기타 자동화된 문자열 탐색 응용 제품 등에 범용적으로 사용할 수 있다.
도 1은 기존 알고리듬과 본 발명에서 생성된 결정적 유한 오토마타를 비교한 도면이다.
도 2는 결정적 유한 오토마타를 생성하는 과정을 예시한 도면이다.
도 3은 도 2의 결정적 유한 오토마타의 상태 천이 도면이다.
도 4는 본 발명에 따른 병합 가능한 상태 찾기 단계에서, 동일한 입력 문자를 갖는 상태들을 찾는 과정을 예시한 도면이다.
도 5는 본 발명에 따른 상태 병합 단계에서, 도 4에 도시된 동일한 입력 문자를 갖는 상태를 결합(state merging)하여 결정적 유한 오토마타를 갱신하는 과정을 예시한 도면이다.
도 6은 본 발명의 성능 검증을 위해 사용한 스노트 룰셋(snort ruleset)에 대한 결정적 유한 오토마타 생성 과정에서 본 발명을 적용하기 전과 후의 상태 감소 및 메모리 감소 효과를 예시한 도면이다.
본 발명의 상기 목적과 기술적 구성 및 그에 따른 효과에 관한 자세한 사항은 본 발명의 명세서에 첨부된 도면에 의거한 이하의 상세한 설명에 의하여 보다 명확하게 이해될 것이다. 본 발명의 설명에 앞서 본 발명과 관련된 공지 기능 또는 구성에 대한 구체적인 기술은 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략하기로 한다. 또한, 본 발명에 사용한 용어들은 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자 및 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 따라서 그러한 정의는 본 명세서 전반에 걸쳐 기재된 내용을 바탕으로 판단하여야 할 것이다.
본 발명에 따른 SIC 알고리듬은 다른 정규 표현식을 변환한 결정적 유한 오토마타에서의 동일한 입력 문자를 갖는 상태를 병합하기 위한 방법에 관한 것이다. 본 발명에 있어 정규 표현식으로 표현하고자 하는 정규 표현식 패턴은 하나가 아닌 N(N≥2)개가 존재하며, 본 알고리듬을 따를 경우 상기 N개의 패턴을 결정적 유한 오토마타로 변환하는 과정에서 메모리 효율적인 결정적 유한 오토마타를 구현할 수 있다.
먼저, 본 알고리듬에 대한 설명에 앞서 본 발명의 설명에 사용되는 용어들의 정의를 기재하면 다음과 같다.
■ S: 상태(state)의 유한집합, S≠φ
■ S0: 초기 상태, S0∈S
■ Σ: 입력 값의 유한집합, Σ≠φ
■ δ: 상태 천이 함수, S × Σ → S
■ F: 발견된 특정한 의미 단위를 나타내는 최종 상태의 집합, F⊂S
■ 텍스트(text): 패턴의 존재 여부를 검출하기 위한 대상 문자열
■ 패턴(pattern): 텍스트 내에서 찾고자 하는 문자열
■ N: 패턴의 개수
■ P: 유한한 정규 표현식 패턴의 집합. |P|=N
■ Pi: i번째 패턴. P={P1, P2, ..., PN}, 1≤i≤N
■ L(i): Pi의 길이, 1≤i≤N
■ Pt: P내 가장 길이가 긴 패턴의 집합
■ SS: 병합 가능한 상태의 집합
■ Sx, Sy: DFA를 구성하는 임의의 상태 (Sx≠Sy∈S)
■ (Sx,a,b,i): 임의의 정규 표현식 i를 변환한 DFA에서 입력 문자 a, 출력 문자 b를 갖는 상태 Sx(a,b∈Σ)
■ (Sy,a,c,j): 임의의 정규 표현식 j에 대한 DFA에서 입력 문자 a, 출력 문자 c를 갖는 상태 Sy(a,c∈Σ)
■ (Sx_y,a/i,a/j,b.i,c.j): 정규 표현식 i를 변환한 결정적 유한 오토마타에서 입력 문자 a(a/i)와 출력 문자 b(b.i)를, 정규 표현식 j를 변환한 결정적 유한 오토마타에서 입력 문자 a(a/j)와 출력 문자 c(c.j)를 갖는 서로 다른 상태 Sx와 Sy에 대해 SIC 알고리듬을 적용한 후 생성된 통합 상태 Sx_y(Sx_y∈S)
본 발명에 따른 SIC 알고리듬은 초기화 단계, 병합 가능한 상태 찾기 단계, 상태 병합 단계, 기존 알고리듬과의 결합 단계의 네 과정으로 이루어진다. 이하에서 각 단계별로 상세한 알고리듬의 흐름을 설명하기로 한다.
1. 초기화 단계(Initialization Stage)
초기화 단계는 P에 존재하는 정규 표현식 패턴을 길이에 따라 역방향 정렬하고 정렬된 패턴으로 부터 결정적 유한 오토마타를 생성하는 단계이다.
먼저, N개의 패턴의 집합 P로부터 병합 가능한 상태를 찾기 위해 패턴을 역방향 정렬한다. 이 때, 패턴을 역방향 정렬함은 결정적 유한 오토마타에서의 결합 가능한 상태의 수를 최대로 하기 위함이다.
다음으로, 5-튜플(S, S0, Σ, δ, F)로 구성된 결정적 유한 오토마타를 생성한다.
이후, P에서 가장 길이가 긴 패턴을 저장하기 위한 집합 Pt와 병합 가능한 상태의 집합 SS를 NULL 값으로 초기화한다.
상기 패턴을 역방향 정렬하는 과정은 다음과 같다.
먼저, 상기 P를 구성하는 N개의 패턴 각각의 문자열 길이를 계산하고 각 패턴의 길이를 L(i)에 저장한다. 그리고 각 패턴의 길이 L(i)를 기준으로 역방향 정렬하여 P를 구성한다. 예로 들어 설명하면, 패턴 P는 입력 문자의 집합 Σ={a,b}로부터 생성된 {P1, P2}의 2개의 패턴으로 구성되어 있으며 각각의 패턴은 P1="bb"와 P2="a(a|b)b"로 구성되어 있다고 가정한다. 이 때, 선택 기호 '|'는 여러 식 중에서 하나를 선택하는데 사용되며, 묶기 기호 '( )'는 여러 식을 하나로 묶기 위해 사용된다. 정규 표현식 패턴 P2는 두 개의 문자열 "aab"와 "abb"를 표현한다. 상기 P1의 길이 L(1)은 2이고 P2의 길이 L(2)는 3이므로 길이를 기준으로 역방향 정렬한 결과는 P1="a(a|b)b"와 P2="bb"가 된다.
다음으로, 상기 역방향 정렬된 패턴 P1="a(a|b)b"과 P2="bb"로부터 5-튜플(S, S0, Σ, δ, F)로 구성된 결정적 유한 오토마타를 생성하는 과정은 다음과 같다.
도 2에서와 같이 각 입력 문자는 '>'기호로 시작하는 상태 천이 초기 상태 S0를 현재 상태로 상태 천이를 발생시킨다. 상기 P1을 예로 들어 설명하면, 도 2-(a)와 같이 첫 번째 입력 문자 'a'는 현재 상태를 S0에서 S1로 상태 천이시키고(실선 화살표), 묶기 기호와 선택 기호로 구성된 두 번째 입력 문자 '(a|b)'는 도 2-(b)와 같이 입력 문자 'a'에 대해 현재 상태를 S2로, 입력 문자 'b'에 대해 현재 상태를 S3로 상태 천이시킨다. 또한 세 번째 입력 문자 'b'는 도 2-(c)와 같이 현재 상태 S2와 S3에 대해 최종 상태인 S4(S4∈F⊂S)로 천이시킨다. 마지막으로 입력 문자가 현재 상태에서 받아들여지지 않는 경우에 대해, 도 2-(d)와 같은 상태 천이를 갖는다(점선 화살표). 이러한 P1의 결정적 유한 오토마타 변환 후 각 상태에서의 입력 문자에 따른 상태 천이(δ) 결과를 도시하면 도 3과 같다.
상기 패턴 P2에 대해서도 같은 방식으로 결정적 유한 오토마톤을 생성함으로써, 초기화 단계에서 도 4-(a)와 같은 P에 대한 결정적 유한 오토마타를 구성한다.
2. 병합 가능한 상태 찾기 단계(Scanning Stage)
병합 가능한 상태 찾기 단계는 길이에 따라 역방향 정렬된 패턴으로부터 생성된 결정적 유한 오토마타의 상태 간 비교 과정을 통해 동일한 입력 문자를 갖는 상태를 찾는 단계이다. 즉, 길이에 따라 역방향 정렬된 패턴 집합 P의 정규 표현식 패턴 i와 정규 표현식 패턴 j(i≠j)로부터 생성된 결정적 유한 오토마타에서 동일한 입력 문자를 갖는 상태 (Sx, a, b, i)와 (Sy, a, c, j)를 찾아서 SS에 저장한다.
예로 들어 설명하면 상기 길이에 따라 역방향 정렬된 패턴 집합 P의 패턴 P1과 P2로부터 생성된 도 4-(a)의 DFA에서 동일한 입력 문자를 갖는 상태를 찾기 위해 다음을 수행한다.
먼저, P1으로부터 생성된 결정적 유한 오토마톤에서 깊이가 가장 깊은 상태 S4와 같은 입력 값을 갖는 상태를 찾기 위해 P2로부터 생성된 결정적 유한 오토마톤에서 깊이가 가장 깊은 상태의 입력 값을 비교(음영 부분)한다. 이 과정에서 도 4-(b)에서와 같이, 상태 S4와 S6가 동일한 입력 문자 b를 가지므로 각 상태의 입력 값과 출력 값을 포함한 상태 정보 (S4, b, S0, 1)와 (S6, b, S0, 2)를 SS에 저장한다.
다음으로 도 4-(c)에서와 같이, P1으로부터 생성된 결정적 유한 오토마톤에서 깊이를 1만큼 감소시키고, 깊이가 2인 상태 S2 혹은 S3와 동일한 입력 상태를 갖는 상태가 P2로부터 생성된 결정적 유한 오토마톤에 존재하는지 확인한다. 이 때 이미 결합이 된 상태는 결합 가능한 상태에서 제외한다. 상태 비교 과정에서 상태 S3와 상태 결합이 이루어지지 않은 깊이 1인 S5가 동일한 입력 문자 b를 가지므로 각 상태의 입력 값과 출력 값을 포함한 상태 정보 (S3, b, S4, 1) 와 (S5, b, S6, 2)를 SS에 저장한다.
마지막으로 도 4-(d)에서와 같이, P1의 길이가 P2보다 1만큼 큼으로 P1으로부터 생성된 결정적 유한 오토마톤 내 깊이가 1인 상태 S1에 대해서는 결합 가능한 상태가 존재하지 않으므로 SS를 업데이트 하지 않는다.
3. 상태 병합 단계(State Merging Stage)
상태 병합 단계는 (Sx, a, b, i)와 (Sy, a, c, j)를 병합한 새로운 상태 (Sx_y, a/i, a/j, b.i, c.j)를 생성하여 상태 압축을 하는 단계이다.
예로 들어 설명하면 도 5-(a)에서처럼, 상기 병합 가능한 상태 찾기 단계에서 확인된 상태 S4와 S6가 동일한 입력 문자 'b'를 가지므로 두 상태를 결합한다. 또한, 상태 S3와 S5가 동일한 입력 문자 'b'를 가지므로 도 5-(b)에서처럼 두 상태를 결합한다.
상기 결합의 결과, 두 개의 상태 S4와 S6는 하나의 상태 S4_6로, 두 개의 상태 S3와 S5는 하나의 상태 S3_5으로 결합되어 상태 감소 효과를 얻게 된다.
이 과정에서 한 번에 오직 하나의 상태(state)만을 갖는 결정적 유한 오토마타의 성질을 만족시키고 상태 천이에 따른 패턴 정보를 나타내기 위해, P1의 입력 문자 b와 P2의 입력 문자 b를 구별하고, P1의 입력 문자 'b'(b/1)에 대한 출력 문자 'b'(b.1)와 P2의 입력 문자 'b'(b/2)에 대한 출력 문자 'b'(b.2)를 구별하기 위해, 패턴 별 입력 및 출력 문자를 비트맵(bitmap)을 사용하여 저장한다.
본 발명의 상태 감소 효과를 검증하기 위해 실제많은 상용화된 침입 탐지 시스템의 침입 탐지 패턴으로 사용되는 스노트 룰셋(snort ruleset)에 대한 알고리듬의 적용 전과 후의 상태 감소 효과를 비교한 결과를 도 6에서 도시화하였다.
4. 기존 알고리듬과의 결합 단계(Algorithm Combination Stage)
기존 알고리듬과의 결합에 의해서, 본 발명에 따라 새롭게 생성된 상태가 동일한 출력 값을 갖게 되어, 동일한 출력 값을 갖는 상태의 병합을 통해 추가적인 상태 감소 효과를 발생시킨다. 예를 들어 설명하면 도 5-(b)에서처럼, 동일한 출력 문자 'b'를 갖는 상태 S2와 S3_5는 Becchi의 알고리듬과의 결합을 통해 추가적인 상태 감소 효과를 발생시킬 수 있다.
본 발명과 Becchi의 알고리듬의 결합을 통한 상태 감소 효과를 검증하기 위해 실제 많은 상용화된 침입 탐지 시스템의 침입 탐지 패턴으로 사용되는 스노트 룰셋에 대한 알고리듬의 적용 전과 후의 상태(메모리)의 감소 효과를 비교한 결과를 도 6에 도시하였다. 도 6을 보면, 본 발명의 SIC 알고리듬을 단독으로 적용시 약 55%, 다른 알고리듬과의 결합 적용시 약 69%의 상태 감소 효과를 얻을 수 있다.

Claims (6)

  1. N개(N은 2 이상의 자연수)의 정규 표현식 패턴을 결정적 유한 오토마타로 변환하는 방법으로서,
    (a) 상기 N개의 정규 표현식 패턴 각각의 문자열 길이를 L(i)에 저장하는 단계;
    (b) 상기 저장된 패턴의 길이 L(i)에 따라 패턴을 역방향 정렬하는 단계;
    (c) 상기 역방향 정렬된 정규 표현식 패턴을 기계가 받아들이는 유한 오토마타 가운데, 상태 천이 시 변환된 상태의 유일성을 갖는 결정적 유한 오토마타로 변환하는 단계;
    (d) 상기 (c)에서 변환된 결정적 유한 오토마타 가운데, i(1≤i≤N-1)번째 패턴으로부터 생성된 결정적 유한 오토마톤과 j(i+1≤j≤N)번째 패턴으로부터 생성된 결정적 유한 오토마톤 내 상태 간 비교 과정을 통해 동일한 입력 문자를 갖는 상태를 찾는 단계;
    (e) 상기 (d) 단계에서 찾은 결합 가능한 상태를 병합하여 새로운 상태를 생성하는 단계;
    (f) 상기 (e) 단계에서 생성된 결정적 유한 오토마타에 기존 알고리듬을 적용하는 단계를 포함하는, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
  2. 제1항에 있어서, 상기 (a) 단계는,
    (a-1) 상기 N개의 패턴의 길이를 계산하는 단계;
    (a-2) 상기 N개의 패턴의 길이를 L(i)에 저장하는 단계를 포함하는 정규 표현식 패턴의 길이 저장 단계인, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
  3. 제2항에 있어서, 상기 (b) 단계는,
    (b-1) 상기 (a-2) 단계에서 저장된 L(i)에 따라 N개의 패턴을 역방향 정렬하는 단계;
    (b-2) 역방향 정렬된 패턴의 순서에 따라 N개의 패턴의 순서를 업데이트하는 단계를 포함하는 N개의 정규 표현식 패턴의 역방향 정렬 단계인, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
  4. 제1항에 있어서, 상기 (d) 단계는,
    (d-1) 상기 역방향 정렬된 패턴 중 i(1≤i≤N-1)번째 패턴으로부터 생성된 결정적 유한 오토마톤을 선택하는 단계;
    (d-2) 상기 역방향 정렬된 패턴 중 j(i+1≤j≤N)번째 패턴의 결정적 유한 오토마톤을 선택하는 단계;
    (d-3) 상기 (d-1) 단계의 결정적 유한 오토마톤에서 L(i)번째 상태를 선택하는 단계;
    (d-4) 상기 (d-2) 단계의 결정적 유한 오토마톤에서 L(j)번째 상태를 선택하는 단계;
    (d-5) 상기 (d-3) 단계와 상기 (d-4) 단계에서 선택된 상태의 입력 값을 비교하는 단계;
    (d-6) 상기 (d-5) 단계에서 동일한 입력 값 'a'를 갖는 상태가 존재하는 경우, 해당 상태 (Sx,a,b,i)와 (Sy,a,c,j)를 SS에 저장하는 단계;
    (d-7) 상기 (d-5) 단계에서 동일한 입력 값 'a'를 갖는 상태가 존재하는 경우, 상기 L(i)값을 1만큼 감소시켜 L(i)값이 0이 될 때까지 상기 (d-3)단계부터 반복 수행하는 단계;
    (d-8) 상기 (d-5) 단계에서 동일한 입력 값을 갖는 상태가 없는 경우, L(j)값을 1만큼 감소시켜 L(j)값이 0이 될 때까지 상기 (d-4) 단계부터 반복 수행하는 단계;
    (d-9) 상기 (d-5) 단계에서 동일한 입력 값을 갖는 상태가 없는 경우, 상기 L(i)값을 1만큼 감소시켜 L(i)값이 0이 될 때까지 상기 (d-3) 단계부터 반복 수행하는 단계를 포함하는 병합 가능한 상태 찾기 단계인, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
  5. 제4항에 있어서, 상기 (e) 단계는,
    (e-1) 상기 SS로부터 병합 가능한 상태 (Sx, a, b, i)와 (Sy, a, c, j)를 확인하는 단계;
    (e-2) 각 상태의 입력 값과 출력 값을 새로운 병합 상태에 각각 비트맵으로 저장하는 단계;
    (e-3) 상기 (e-1) 단계에서 선택된 상태 (Sx, a, b, i)와 (Sy, a, c, j)를 병합하여 새로운 상태 (Sx_y, a/i, a/j, b.i, c.j)로 변환하는 단계;
    (e-3) 상기 (e-3) 단계에서 새로 생성된 상태를 저장하는 단계;
    (e-4) 상기 SS가 NULL이 될 때가지 결합 가능한 상태들을 1씩 감소시키면서 상기 (e-1) 단계부터 반복 수행하는 단계를 포함하는 상태 병합 단계인, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
  6. 제1항에 있어서, 상기 (f) 단계는,
    (f-1) 상기 (e) 단계에서 생성된 결정적 유한 오토마타를 참조하는 단계;
    (f-2) 상기 (f-1) 단계에서 생성된 결정적 유한 오토마타에서 기존 알고리듬을 적용하여 상태를 감소시키는 단계를 포함하는 기존 알고리듬과의 결합 단계인, 정규 표현식 패턴의 메모리 효율적인 결정적 유한 오토마타를 생성하는 방법.
KR1020130030112A 2013-03-21 2013-03-21 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법 KR101382787B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130030112A KR101382787B1 (ko) 2013-03-21 2013-03-21 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130030112A KR101382787B1 (ko) 2013-03-21 2013-03-21 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법

Publications (1)

Publication Number Publication Date
KR101382787B1 true KR101382787B1 (ko) 2014-04-08

Family

ID=50656978

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130030112A KR101382787B1 (ko) 2013-03-21 2013-03-21 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법

Country Status (1)

Country Link
KR (1) KR101382787B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101583979B1 (ko) 2014-09-03 2016-01-12 연세대학교 산학협력단 오토마타 생성 장치 및 방법
KR101645890B1 (ko) * 2015-07-13 2016-08-05 연세대학교 산학협력단 비결정적 유한 오토마타의 상태 축소 방법 및 장치
US10523692B2 (en) 2016-04-08 2019-12-31 Samsung Electronics Co., Ltd. Load balancing method and apparatus in intrusion detection system
KR102271489B1 (ko) * 2020-12-04 2021-07-02 (주)소만사 정규표현식 패턴의 탐지를 위한 아호코라식 오토마타 구축 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302082A (ja) * 2005-04-22 2006-11-02 Mitsubishi Electric Corp 文字列検索装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302082A (ja) * 2005-04-22 2006-11-02 Mitsubishi Electric Corp 文字列検索装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
정보보호학회논문지 제21권 제1호 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101583979B1 (ko) 2014-09-03 2016-01-12 연세대학교 산학협력단 오토마타 생성 장치 및 방법
KR101645890B1 (ko) * 2015-07-13 2016-08-05 연세대학교 산학협력단 비결정적 유한 오토마타의 상태 축소 방법 및 장치
US10523692B2 (en) 2016-04-08 2019-12-31 Samsung Electronics Co., Ltd. Load balancing method and apparatus in intrusion detection system
KR102271489B1 (ko) * 2020-12-04 2021-07-02 (주)소만사 정규표현식 패턴의 탐지를 위한 아호코라식 오토마타 구축 장치 및 방법
US11409806B2 (en) 2020-12-04 2022-08-09 Somansa Co., Ltd. Apparatus and method for constructing Aho-Corasick automata for detecting regular expression pattern

Similar Documents

Publication Publication Date Title
CN109471938A (zh) 一种文本分类方法及终端
KR101382787B1 (ko) 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법
Verwer et al. A likelihood-ratio test for identifying probabilistic deterministic real-time automata from positive data
Zhang et al. Collaborative support vector machine for malware detection
Ji et al. Deep pedestrian attribute recognition based on LSTM
Tabone et al. Pornographic content classification using deep-learning
CN113961768B (zh) 敏感词检测方法、装置、计算机设备和存储介质
Assefa et al. Intelligent phishing website detection using deep learning
CN105468972B (zh) 一种移动终端文件检测方法
CN105243327B (zh) 一种文件安全处理方法
Dinh et al. Behaviour-aware malware classification: Dynamic feature selection
Gangadharan et al. Advancing Bug Detection in Solidity Smart Contracts with the Proficiency of Deep Learning
Cybersecurity Machine learning for malware detection
KR101276796B1 (ko) 패턴 매칭 장치 및 방법
US11025650B2 (en) Multi-pattern policy detection system and method
Agarwal et al. PFAC Implementation Issues and their Solutions on GPGPU's using OpenCL
Wu et al. Detecting Vulnerabilities in Ethereum Smart Contracts with Deep Learning
KR20210142443A (ko) 사이버 공간에서 실시간 공격 탐지를 위한 시간에 따른 지속적인 적응형 학습을 제공하는 방법 및 시스템
Khatun et al. An Approach to Detect Phishing Websites with Features Selection Method and Ensemble Learning
Moeini et al. Improved Rabin-Karp Algorithm Using Bloom Filter
Gu A Lightweight Phishing Website Detection Algorithm by Machine Learning
CN105224873B (zh) 一种智能设备文件认证方法
Nabet et al. Phishing Attacks Detection by Using Support Vector Machine
Aljarboua et al. Cyber-Crime Detection: Experimental Techniques Comparison Analysis
Monkam et al. A GAN-based Approach to Detect AI-Generated Images

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee