KR100959244B1 - 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 - Google Patents
계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 Download PDFInfo
- Publication number
- KR100959244B1 KR100959244B1 KR1020080075635A KR20080075635A KR100959244B1 KR 100959244 B1 KR100959244 B1 KR 100959244B1 KR 1020080075635 A KR1020080075635 A KR 1020080075635A KR 20080075635 A KR20080075635 A KR 20080075635A KR 100959244 B1 KR100959244 B1 KR 100959244B1
- Authority
- KR
- South Korea
- Prior art keywords
- shift
- patterns
- text
- value
- pattern
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/02—Indexing scheme relating to groups G06F7/02 - G06F7/026
- G06F2207/025—String search, i.e. pattern matching, e.g. find identical word or best match in a string
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (8)
- 소정의 텍스트에 N 개(N은 2 이상의 자연수)의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐지하기 위한 방법으로서,(a) 상기 N 개의 패턴 각각의 문자열 길이를 계산하고, 그 중 가장 짧은 패턴의 길이를 LSP(Length of Shortest Pattern)로 저장하는 단계;(b) 상기 텍스트에 포함될 수 있는 모든 1바이트 문자들을 인덱스(index)로 하는 B 개(B는 2 이상의 자연수)의 시프트(SHIFT) 테이블을 생성하고, 상기 B개의 시프트 테이블 각각에 대하여 각 인덱스에 대응하는 값(value)들을 LSP로 초기화하는 단계;(c) 상기 텍스트에 포함될 수 있는 길이 B의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 해시(HASH) 테이블 및, 상기 텍스트에 포함될 수 있는 길이 Bp(Bp는 2 이상의 자연수)의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 프리픽스(PREFIX) 테이블을 생성하는 단계;(d) 상기 N 개의 패턴 중 어느 하나의 패턴을 선택하고, 상기 선택된 패턴의 가장 왼쪽 문자의 위치를 0 이라 할 때 왼쪽부터 0 에서 LSP - 1 위치까지의 문자열에 대하여, 상기 문자열의 가장 왼쪽부터 오른쪽으로 한 칸씩 이동하면서 해당 위치에 존재하는 문자의 시프트 값을 계산하여 상기 B 개의 시프트 테이블의 값을 업데이트하는 단계;(e) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 LSP - B 에서 LSP - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 해시(HASH) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계;(f) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 0 에서 Bp - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 프리픽스(PREFIX) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계;(g) 상기 N 개의 패턴 모두에 대하여 상기 (c) 단계 내지 (f) 단계를 반복 수행하는 단계;(h) 상기 (g) 단계의 수행 이후, 상기 B 개의 시프트 테이블, 해시 테이블 및 프리픽스 테이블을 이용하여 상기 텍스트 내에 상기 N 개의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐색하는 단계;를 포함하여 구성되는 문자열 패턴 탐지 방법.
- 제1항에 있어서,상기 B 개의 시프트 테이블 각각을 SHIFTLj 테이블(j는 0에서 B - 1 사이의 자연수)로 정의할 때,상기 (d) 단계는,(d-1) 상기 선택된 패턴상의 위치(k1)를 0으로 설정하는 단계;(d-2) 상기 선택된 패턴에 대하여 상기 k1번째 위치에 해당하는 문자를 추출하는 단계;(d-3) 상기 추출된 문자를 인덱스로 하는 SHIFTLj 테이블의 값 LSP - 1 - k1 을 계산하는 단계;(d-4) 상기 (d-3) 단계에서 계산된 LSP - 1 - k1 값과 SHIFTLj 테이블의 현재값을 서로 비교하고, 이 중 작은 값을 상기 SHIFTLj 테이블의 해당 인덱스의 값으로 업데이트하는 단계;(d-5) 만약 상기 k1 값이 LSP - 1 - j 값과 동일한 경우, 상기 k1 위치에 해당하는 문자를 인덱스로 하는 상기 SHIFTLj 테이블의 값을 0 으로 설정하는 단계;(d-6) 상기 B 개의 시프트 테이블 모두에 대하여, 상기 (d-3) 단계 내지 (d-5) 단계를 반복 수행하는 단계;(d-7) 상기 k1 값을 LSP - 1 에 도달할 때까지 1씩 증가시키면서, 상기 (d-2) 내지 (d-6) 단계를 반복 수행하는 단계;를 포함하여 구성되는 문자열 패턴 탐지 방법.
- 제1항 또는 제2항에 있어서,상기 (e) 단계에서 상기 포인터를 저장하고자 하는 상기 해시 테이블의 값에 기 저장된 포인터가 있을 경우, 기 저장된 포인터를 삭제하지 않고 상기 선택된 패턴에 대한 포인터를 리스트 형태로 추가 저장하는 것을 특징으로 하는 문자열 패턴 탐지 방법.
- 제1항 또는 제2항에 있어서,상기 (f) 단계에서 상기 포인터를 저장하고자 하는 상기 프리픽스 테이블의 값에 기 저장된 포인터가 있을 경우, 기 저장된 포인터를 삭제하지 않고 상기 선택된 패턴에 대한 포인터를 리스트 형태로 추가 저장하는 것을 특징으로 하는 문자열 패턴 탐지 방법.
- 제1항에 있어서,상기 B 개의 시프트 테이블 각각을 SHIFTLj 테이블(j는 0에서 B - 1 사이의 자연수)로 정의할 때,상기 (h) 단계는,(h-1) 상기 텍스트의 왼쪽에서 가장 첫 번째 위치를 0 이라 할 때, 펀치 포인터(Sc)를 상기 텍스트의 LSP - 1 위치로 설정하는 단계;(h-2) 상기 텍스트의 Sc 위치에 해당하는 문자에 대한 시프트 값을 SHIFTL0 테이블로부터 추출하는 단계;(h-3) 상기 (h-2) 단계에서 추출된 시프트 값이 0인 경우, 상기 j 값을 1 부터 B - 1 까지 1씩 증가시키면서 상기 텍스트의 Sc - j 위치에 해당하는 문자에 대한 시프트 값을 SHIFTLj 테이블로부터 추출하는 단계;(h-4) 상기 (h-3) 단계에서 추출된 시프트 값들이 모두 0인 경우, 상기 텍스트의 Sc - B + 1부터 Sc 위치까지의 문자열에 대한 해시값을 인덱스 값으로 하는 패턴들을 상기 해시 테이블로부터 검출하는 단계;(h-5) 상기 (h-4) 단계에서 상기 해시 테이블로부터 패턴들이 검출된 경우, 상기 텍스트의 Sc - LSP + 1 부터 Sc - LSP + Bp 위치까지의 문자열에 대한 해시값을 인덱스 값으로 하는 패턴들을 상기 프리픽스 테이블로부터 검출하는 단계;(h-6) 상기 (h-5) 단계에서 상기 프리픽스 테이블로부터 패턴들이 검출된 경우, 상기 프리픽스 테이블로부터 검출된 패턴과 상기 해시 테이블로부터 검출된 패턴 중 일치하는 패턴들이 존재하는지 여부를 판단하는 단계;(h-7) 상기 (h-6) 단계에서의 판단 결과 일치하는 패턴들이 있는 경우, 상기 일치하는 패턴들과 상기 텍스트를 직접 비교하여 상기 패턴들이 실제로 상기 텍 스트에 존재하는지 여부를 탐색하는 단계;(h-8) 상기 (h-7) 단계에서의 판단 결과 상기 텍스트와 직접 비교한 패턴들 중 하나라도 상기 텍스트와 일치하는 패턴이 존재하는 경우, 해당 패턴을 상기 텍스트에 존재하는 패턴으로 판단하는 단계;를 포함하여 구성되는 문자열 패턴 탐지 방법.
- 제5항에 있어서,상기 (h-2) 단계에서 추출된 시프트 값이 0이 아닌 경우, 추출된 상기 시프트 값 만큼 상기 Sc를 상기 텍스트의 오른쪽으로 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법.
- 제5항에 있어서,상기 (h-3) 단계의 수행 도중 최초로 0이 아닌 시프트 값이 추출된 경우, 다음 수식을 이용하여 상기 Sc를 상기 텍스트의 오른쪽으로 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법.Sn = Sc + max (1, SHIFTL1[*(Sc - 1)] - 1, ... , SHIFTLi[*(Sc - i)] - i)상기 수식에서, Sc 는 펀치 포인터, Sn 은 Sc의 다음 위치, *(Sc - i)는 텍스트상의 Sc - i 위치에 해당하는 문자(character), i는 최초로 0이 아닌 시프트 값이 추출된 j의 값.
- 제5항에 있어서,상기 (h-4) 단계에서 상기 해시 테이블로부터 패턴들이 검출되지 않은 경우, 또는 상기 (h-5) 단계에서 상기 프리픽스 테이블로부터 패턴들이 검출되지 않은 경우, 또는 상기 (h-6) 단계에서 일치하는 패턴들이 없는 경우, 또는 상기 (h-7) 단계에서 직접 비교 결과 최종적으로 패턴들이 상기 텍스트와 불일치하는 것으로 판단되는 경우 중 어느 하나의 경우에 해당하는 경우,상기 Sc를 상기 텍스트의 오른쪽으로 1 만큼 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080075635A KR100959244B1 (ko) | 2008-08-01 | 2008-08-01 | 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 |
PCT/KR2008/005598 WO2010013863A1 (en) | 2008-08-01 | 2008-09-22 | Method of detecting character string pattern at high speed using layered shift tables |
US12/443,802 US8108387B2 (en) | 2008-08-01 | 2008-09-22 | Method of detecting character string pattern at high speed using layered shift tables |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080075635A KR100959244B1 (ko) | 2008-08-01 | 2008-08-01 | 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100013895A KR20100013895A (ko) | 2010-02-10 |
KR100959244B1 true KR100959244B1 (ko) | 2010-05-24 |
Family
ID=41610548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080075635A KR100959244B1 (ko) | 2008-08-01 | 2008-08-01 | 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8108387B2 (ko) |
KR (1) | KR100959244B1 (ko) |
WO (1) | WO2010013863A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523692B2 (en) | 2016-04-08 | 2019-12-31 | Samsung Electronics Co., Ltd. | Load balancing method and apparatus in intrusion detection system |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8630989B2 (en) | 2011-05-27 | 2014-01-14 | International Business Machines Corporation | Systems and methods for information extraction using contextual pattern discovery |
CN102890719B (zh) * | 2012-10-12 | 2015-12-16 | 浙江宇视科技有限公司 | 一种对车牌号进行模糊搜索的方法及装置 |
CN103544277A (zh) * | 2013-10-22 | 2014-01-29 | 深圳市捷顺科技实业股份有限公司 | 一种查询目标文本的方法及装置 |
US10558690B2 (en) * | 2015-07-06 | 2020-02-11 | International Business Machines Corporation | Multiple sub-string searching |
KR101662957B1 (ko) * | 2015-07-30 | 2016-10-05 | 인하대학교 산학협력단 | 해싱기반의 순위다중패턴매칭 방법 |
KR102213368B1 (ko) * | 2019-10-10 | 2021-02-08 | 엔시큐어 주식회사 | 멀티 키워드 고속 검색 시스템 및 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050054538A (ko) * | 2003-12-05 | 2005-06-10 | 한국전자통신연구원 | 고속 패턴 저장 및 매칭 방법 |
KR20060013815A (ko) * | 2004-08-09 | 2006-02-14 | 한국전자통신연구원 | 해쉬 테이블 주소 분산 장치 및 방법, 이를 이용한패턴매칭 장치 |
KR100653958B1 (ko) | 2005-06-22 | 2006-12-05 | 충남대학교산학협력단 | Tcam를 이용한 해시 기반 고성능 멀티 패턴 매치알고리즘 |
KR100648297B1 (ko) | 2005-09-01 | 2006-12-20 | 재단법인서울대학교산학협력재단 | 고속의 네트워크 침입 탐지 방법 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3189186B2 (ja) * | 1992-03-23 | 2001-07-16 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | パターンに基づく翻訳装置 |
US20080097741A1 (en) * | 2006-10-18 | 2008-04-24 | Domenica Bagnato | Text analysis, transliteration and translation method and apparatus for hieroglypic, hieratic, and demotic texts from ancient egyptian |
CN101296114B (zh) * | 2007-04-29 | 2011-04-20 | 国际商业机器公司 | 基于流的并行模式匹配方法和系统 |
-
2008
- 2008-08-01 KR KR1020080075635A patent/KR100959244B1/ko active IP Right Grant
- 2008-09-22 WO PCT/KR2008/005598 patent/WO2010013863A1/en active Application Filing
- 2008-09-22 US US12/443,802 patent/US8108387B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050054538A (ko) * | 2003-12-05 | 2005-06-10 | 한국전자통신연구원 | 고속 패턴 저장 및 매칭 방법 |
KR20060013815A (ko) * | 2004-08-09 | 2006-02-14 | 한국전자통신연구원 | 해쉬 테이블 주소 분산 장치 및 방법, 이를 이용한패턴매칭 장치 |
KR100653958B1 (ko) | 2005-06-22 | 2006-12-05 | 충남대학교산학협력단 | Tcam를 이용한 해시 기반 고성능 멀티 패턴 매치알고리즘 |
KR100648297B1 (ko) | 2005-09-01 | 2006-12-20 | 재단법인서울대학교산학협력재단 | 고속의 네트워크 침입 탐지 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523692B2 (en) | 2016-04-08 | 2019-12-31 | Samsung Electronics Co., Ltd. | Load balancing method and apparatus in intrusion detection system |
Also Published As
Publication number | Publication date |
---|---|
KR20100013895A (ko) | 2010-02-10 |
US20110066631A1 (en) | 2011-03-17 |
WO2010013863A1 (en) | 2010-02-04 |
US8108387B2 (en) | 2012-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100959244B1 (ko) | 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법 | |
JP5472108B2 (ja) | 検索装置、検索方法およびプログラム | |
CN104252469B (zh) | 用于模式匹配的方法、设备和电路 | |
US8095526B2 (en) | Efficient retrieval of variable-length character string data | |
US20130297641A1 (en) | Code string search apparatus, search method, and program | |
CN106599097B (zh) | 海量特征串集合的匹配方法和装置 | |
CN107229759B (zh) | 一种字符串模式匹配的方法 | |
KR101662957B1 (ko) | 해싱기반의 순위다중패턴매칭 방법 | |
CN103577598B (zh) | 模式串与文本串的匹配方法和装置 | |
CN108628953A (zh) | 一种基于fpga的并行字符串匹配算法 | |
US7548652B1 (en) | Rapid comparison of similar data strings | |
CN105025013B (zh) | 基于优先级Trie树的动态IP匹配模型的建立方法 | |
JP6613019B2 (ja) | パターンを探索する装置 | |
Chrobak et al. | The greedy algorithm for the minimum common string partition problem | |
US20100174742A1 (en) | Bit string search apparatus, search method, and program | |
CN109460495B (zh) | 一种基于改进bm算法与后缀数组的冗余字段过滤方法 | |
Larsson | Most recent match queries in on-line suffix trees | |
Hirota et al. | Efficient algorithms for enumerating maximal common subsequences of two strings | |
CN113065419B (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
CN115525801A (zh) | 网络安全系统的模式匹配算法 | |
KR100653958B1 (ko) | Tcam를 이용한 해시 기반 고성능 멀티 패턴 매치알고리즘 | |
JP4565064B2 (ja) | 高速マッチング法 | |
CN113010882B (zh) | 一种适用于缓存丢失攻击的自定义位置顺序模式匹配方法 | |
Tevatia et al. | An offensive algorithm for multi-pattern parameterized string matching | |
EP2249257B1 (en) | Bit string retrieval device, retrieval method and program |
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: 20130508 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140428 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150430 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20160128 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20170421 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20180425 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 10 |