KR101309337B1 - 패턴 매칭 방법 및 시스템 - Google Patents

패턴 매칭 방법 및 시스템 Download PDF

Info

Publication number
KR101309337B1
KR101309337B1 KR1020110049249A KR20110049249A KR101309337B1 KR 101309337 B1 KR101309337 B1 KR 101309337B1 KR 1020110049249 A KR1020110049249 A KR 1020110049249A KR 20110049249 A KR20110049249 A KR 20110049249A KR 101309337 B1 KR101309337 B1 KR 101309337B1
Authority
KR
South Korea
Prior art keywords
pattern
matching
hash
sub
data
Prior art date
Application number
KR1020110049249A
Other languages
English (en)
Other versions
KR20110130348A (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 US13/116,419 priority Critical patent/US9392005B2/en
Priority to JP2011119458A priority patent/JP5378452B2/ja
Priority to EP11167897A priority patent/EP2390814A3/en
Publication of KR20110130348A publication Critical patent/KR20110130348A/ko
Application granted granted Critical
Publication of KR101309337B1 publication Critical patent/KR101309337B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

패턴 매칭 방법 및 시스템이 개시된다. 본 발명의 일 실시 예에 따르면, 타겟 데이터를 구성하는 복수의 서브 데이터 중 적어도 하나의 서브 데이터를 복수의 멀웨어 패턴들과 매칭시키는 서브 패턴 매칭 단계 및 서브 패턴 매칭 결과를 참조하여, 타겟 데이터가 패턴들을 포함하는지 여부를 판단하는 풀 패턴 매칭 단계를 포함하며, 풀 패턴 매칭 단계는 패턴의 종류에 따라서 수행여부가 결정될 수 있다. 이에 의해, 다양한 패턴의 타겟 데이터에 대하여 정확한 매칭 동작을 수행할 수 있다.

Description

패턴 매칭 방법 및 시스템 {System and method for matching pattern}
본 발명은 패턴 매칭 방법 및 시스템에 관한 것으로, 보다 상세하게는 문법적으로 복잡하거나 단순한 다양한 멀웨어 패턴에 대하여, 타겟 데이터에 대하여 신속하게 패턴 매칭 동작을 수행할 수 있는 패턴 매칭 방법 및 시스템에 관한 것이다.
인터넷이 광범위하게 사용되면서 웜이나 트로이목마, 바이러스, DDoS 등과 같은 다양한 형태의 침해가 나타나고 그 파급효과도 커지고 있다. 따라서, 네트워크상의 정보를 보호하기 위한 네트워크 침해 대응 방법 및 기타 관련 장치가 필요하게 되었다. 이를 위한 가장 기본적인 기술이 고속의 패턴 매칭 기술이다.
일반적으로 패턴 매칭은 긴 텍스트 파일에서 우리가 원하는 글자를 찾는 것부터 시작해서 네트워크 침입 탐지나 바이러스 탐지 등과 같은 보안 시스템, 스팸 메일 제거 시스템, 데이터베이스 시스템 등 다양한 분야에서 다양한 용도로 활용된다. 특히, 패킷의 페이로드 부분에서 특정한 문자열을 검색하는 패턴 매칭 방법은 규칙을 이용하여 비정상 행위를 탐지하는 침입탐지 또는 차단시스템의 중요한 요소 기술이다.
관리자들은 악의적인 공격으로부터 내부 네트워크를 보호하기 위하여 침입탐지 또는 차단 시스템을 사용하는데, 공격이 다양해지고 그 수가 증가하면서 공격을 탐지하기 위한 패턴 매칭의 규칙수도 증가하였다. 이렇게 규칙의 수가 증가하면서 침입 탐지나 차단 영역에서 패턴매칭 비용이 차지하는 비중이 커지고 있다.
일반적으로 랩탑(Laptop), 스마트폰(smartphone), 넷북(netbook), 커넥티드 디바이스(connected device) 등과 같은 네트워크가 연결된 모바일 기기들에 안티 바이러스 SOC(Anti-Virus System-on-Chip)이 탑재되어 악성 코드에 대한 스캐닝, 검색, 매칭(matching)을 통하여 바이러스가 감염된 파일들을 찾아낼 수 있다.
안티 바이러스(anti-virus) 프로그램은 파일을 스캐닝하면서 읽어들인 데이터 파일에서 바이러스 패턴이 있는지를 찾아낸다. 모바일 디바이스상에서 이런 스캐닝 작업을 하게 되면, CPU(Central Processing Unit)와 메모리(Memory) 리소스를 많이 사용하게 되고, 바이러스 검사를 하고 있는 동안은 리소스 문제로 사용자가 원하는 프로그램을 사용하기가 쉽지 않은 문제점이 있다.
본 발명의 실시 예에 따르면, 문법적으로 복잡하거나 단순한 다양한 멀웨어 패턴에 대하여, 신속하게 패턴 매칭 동작을 수행할 수 있는 패턴 매칭 방법 및 시스템을 제공함을 일 목적으로 한다.
본 발명의 실시 예에 따르면, 패턴 매칭의 대상이 되는 타겟 데이터가 커지더라도, 해시 매칭과 서브 매칭이 성공한 경우에만 풀매칭을 수행하므로, 여전히 신속하게 패턴 매칭 동작을 수행할 수 있는 패턴 매칭 방법 및 시스템을 제공함을 일 목적으로 한다.
본 발명의 일 실시예에 따르면, 타겟 데이터를 구성하는 복수의 서브 데이터 중 적어도 하나의 서브 데이터를 복수의 멀웨어 패턴들과 매칭시키는 서브 패턴 매칭 단계; 및 상기 서브 패턴 매칭 결과를 참조하여, 상기 타겟 데이터가 상기 패턴들을 포함하는지 여부를 판단하는 풀 패턴 매칭 단계;를 포함하며, 상기 풀 패턴 매칭 단계는 상기 패턴의 종류에 따라서 수행여부가 결정되는 것을 특징으로 하는 패턴 매칭 방법이 제공된다.
본 발명의 다른 실시예에 따르면 타겟 데이터를 구성하는 복수의 서브 데이터 중 어느 하나의 서브 데이터의 일부와 복수의 멀웨어 패턴들을 매칭시키는 라이트 패턴 매칭 단계; 및 상기 라이트 패턴 매칭이 성공한 경우에만, 상기 서브 데이터의 전체와 상기 라이트 패턴 매칭이 성공한 패턴 전체를 매칭시키는 정밀 패턴 매칭 단계;를 포함하는 패턴 매칭 방법이 제공된다.
본 발명의 다른 실시예에 따르면 멀웨어 패턴들 각각에 대한 해시값들을 포함하는 해시 매처 테이블을 저장하는 저장부; 상기 해시 매처 테이블과, 타겟 데이터를 구성하는 복수의 서브 데이터 중 적어도 하나의 서브 데이터의 해시값을 매칭하는 해시값 매칭부; 및 상기 서브 데이터의 해시값과 매칭된 패턴과, 상기 서브 데이터를 매칭하는 서브 패턴 매칭부;를 포함하는 것을 특징으로 하는 패턴 매칭 시스템이 제공된다.
본 발명의 일 실시 예에 따르면, 문법적으로 복잡하거나 단순한 다양한 멀웨어 패턴에 대하여, 신속하게 패턴 매칭 동작을 수행할 수 있다.
본 발명의 일 실시 예에 따르면, 패턴 매칭의 대상이 되는 타겟 데이터가 커지더라도, 해시 매칭과 서브 매칭이 성공한 경우에만 풀 매칭을 수행하므로, 여전히 신속하게 패턴 매칭 동작을 수행할 수 있다.
본 발명의 일 실시 예에 따르면, SOC의 형태로도 패턴 매칭 시스템의 구현이 가능하므로, 속도나 배터리에 제한이 있는 모바일 디바이스의 리소스 문제를 해결할 수 있다.
도 1은 본 발명의 일 실시예에 따른 패턴 매칭 시스템의 블럭도,
도 2는 도 1에 도시한 저장부의 구성을 나타낸 도면,
도 3은 본 발명의 일 실시예에 따른 테이블 구성을 설명하기 위한 도면,
도 4는 본 발명의 일 실시예에 따른 패턴 매칭 시스템을 SOC 형태로 구현한 예를 나타낸 블럭도,
도 5는 도 4에 도시한 검색엔진의 하드웨어 구성을 나타낸 블럭도,
도 6은 도 5에 도시한 패턴 매칭 시스템에서 문법적으로 정해진 간단한 패턴 데이터를 처리하는 동작을 설명하기 위한 도면,
도 7은 본 발명의 일 실시예에 따른 문법적으로 정해진 복잡한 패턴 데이터를 설명하기 위한 도면,
도 8은 도 5에 도시한 패턴 매칭 시스템에서 문법적으로 정해진 복잡한 패턴 데이터를 처리하는 동작을 설명하기 위한 도면,
도 9는 본 발명의 문법적으로 정해진 간단한 패턴 데이터를 이용한 패턴 매칭 방법의 제1 실시예를 설명하기 위한 흐름도,
도 10은 본 발명의 문법적으로 정해진 간단한 패턴 데이터를 이용한 패턴 매칭 방법의 제2 실시예를 설명하기 위한 흐름도,
도 11은 문법적으로 정해진 복잡한 패턴 데이터의 처리 과정에 사용되는 서브패턴 매트릭스를 구성하는 방법을 설명하기 위한 흐름도,
도 12는 본 발명의 문법적으로 정해진 복잡한 패턴 데이터에 대한 패턴 매칭 방법의 제1 실시예를 설명하기 위한 흐름도,
도 13은 본 발명의 문법적으로 정해진 복잡한 패턴 데이터에 대한 패턴 매칭 방법의 제2 실시예를 설명하기 위한 흐름도, 그리고,
도 14는 본 발명의 문법적 형식이 정해지지 않은 패턴 데이터에 대한 패턴 매칭 방법을 설명하기 위한 흐름도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. 본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 게재될 수도 있다는 것을 의미한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도 1은 본 발명의 일 실시예에 따른 패턴 매칭 시스템의 블럭도이고, 도 2는 도 1에 도시한 저장부의 구성을 나타낸 도면이다.
도 1을 참조하여, 본 발명의 일 실시예에 따른 패턴 매칭 시스템은 결정부(10), 서브패턴(sub pattern) 매칭부(20), 해시값 생성부(30), 저장부(40), 풀패턴(full pattern) 매칭부(50), 해시값 매칭부(60) 및 테이블 생성부(70)를 포함할 수 있다.
결정부(10)는 서브 패턴 매칭된 타겟 데이터가 어떠한 종류의 패턴과 매칭되었는지 여부를 결정할 수 있으며, 결정결과에 따라서, 풀패턴 매칭 동작이 수행되거나 또는 수행되지 않을 수 있다. 본 발명의 일 실시예에 따르면, 서브 데이터가, 문법적으로 복잡한 패턴 데이터의 일부와 매칭된 경우에는 풀패턴 매칭동작이 수행될 수 있다. 한편, 서브 데이터가, 복잡하지 않은 패턴 데이터와 매칭된 경우에는 서브패턴 매칭동작까지 수행되고, 풀패턴 매칭동작은 수행되지 않는다.
본 발명의 일 실시예에 따른 결정부(10)는, 타겟 데이터가 어떠한 종류의 패턴 데이터에 매칭되었는지를 결정하기 위해서, 멀웨어 패턴 데이터가 어떠한 종류에 해당되는지를 나타내는 정보(이하, '패턴 데이터 종류 정보'라 함)를 참조할 수 있다. 본 발명의 일 실시예에 따르면, 패턴 데이터 종류 정보는, 해시 매처 테이블(43), 서브 매처 테이블(44) 및/또는 서브 패턴 매트릭스(45)에 포함되어 있을 수 있으나, 이들이 아닌 별도의 테이블로 마련되어 저장되는 것도 가능할 것이다. 별도의 테이블로 마련된 경우 저장부(40)에 저장되거나 또는 별도로 마련된 다른 저장부(미도시)에 저장되어 있을 수 있다.
서브패턴 매칭부(20)는 타겟 데이터를 구성하는 복수의 서브 데이터들을 순차적으로 기저장된 패턴 데이터베이스(DataBase: DB)(41)의 패턴 데이터와 매칭시킨다. 본 발명의 일 실시예에 따르면 서브패턴 매칭부(20)는 해시 매치 테이블(43)과 서브 매처 테이블(44)을 이용하여 서브 패턴 매칭 동작을 수행할 수 있다. 한편, 서브패턴 매칭부(20)의 기능은 하드웨어 및/또는 소프트웨어에 의해 구현될 수 있다.
서브패턴 매칭부(20)는 2단계의 매칭 동작(즉, 라이트 패턴 매칭 동작과 정밀 패턴 매칭 동작)을 포함할 수 있다. 여기서, 서브패턴 매칭부(20)는 해시값 매칭부(60)에 의한 해시값 매칭이 성공적으로 이루어진 경우에만 수행된다.
본 발명의 일 실시예에 따르면 서브패턴 매칭부(20)는 라이트(Light) 패턴 매칭부(22) 및 정밀 패턴 매칭부(24)를 포함할 수 있다.
라이트 패턴 매칭부(22)는 서브패턴 매칭부(20)의 첫 번째 단계인 라이트 패턴 매칭 과정을 수행하는 것으로, 서브 데이터의 일부와 패턴 데이터를 매칭시키는 과정을 수행한다. 이를 위해서, 라이트 패턴 매칭부(22)는 서브 매처 테이블(44)을 사용할 수 있다. 도 3의 서브 매처 테이블(44)을 참조하면, 서브 매처 테이블(44)은 중간 값(middle value)과 마지막 값(tail value)을 포함하며, 이들 값을 이용하여 서브 데이터와 패턴 데이터를 매칭시킬 수 있다. 즉, 라이트 패턴 매칭 동작은, 서브 데이터와 패턴 데이터를 매칭시킴에 있어서, 먼저 중간 값과 마지막 값이 서로 일치하는지 여부를 수행하는 것이다. 본원 발명의 일 실시예에 따르면, 적어도 이들 중간 값과 마지막 값이 일치해야, 나머지 값들도 일치할 가능성이 있는 것이므로 매칭 속도를 높이기 위해서, 라이트 패턴 매칭 동작을 수행하는 것이다. 만약 중간 값과 마지막 값이 일치한다면, 비로소 서브 데이터와 패턴 데이터를 모두 비교하는 정밀 패턴 매칭 동작을 수행한다. 한편, 해시 충돌이 있는 경우에는, 서로 다른 패턴 데이터라도 해시값은 서로 동일할 수 있다. 도 3을 참조하면, 패턴 abcdefg와 패턴 abcxyz의 해시값이 둘 다 'X'임을 알 수 있다. 이처럼 해시가 충돌되는 경우를 대비하여, 서브 패턴 매처 테이블에 '충돌 패턴의 Offset'이라는 항목을 추가적으로 포함시킬 수 있다. 도 3의 서브 패턴 매처 테이블을 참조하면, 인덱스 'X'와 'Z'는, '충돌 패턴의 Offset' 항목으로 서로 링크되어 있음을 알 수 있다.
예를 들어, 어떤 서브 데이터에 대한 해시값이 'X'가 나왔다고 하자. 이러한 경우, 라이트 패턴 매칭부(22)는 먼저 Index가 'X'인 항목에 대하여 먼저 라이트 패턴 매칭동작을 수행한다. 즉, 서브 데이터의 중간 값 및 마지막 값과, 'x' 중간 값('d') 및 마지막 값('9')을 각각 매칭시킨다.
그 매칭이 성공적이지 않다면, 라이트 패턴 매칭부(22)는 Index 'X'의 '충돌 패턴의 Offset' 항목에 기재된 Z 항목에 대하여 라이트 패턴 매칭동작을 수행한다. 즉, 서브 데이터의 중간 값 및 마지막 값과, 'Z'의 중간 값('c') 및 마지막 값('z')을 각각 매칭시킨다. 매칭이 성공적인 경우에, 정밀 패턴 매칭동작이 수행된다. 정밀 패턴 매칭동작의 수행결과, 매칭되는 것이 없으면, 다시 인덱스 'Z'의 '충돌 패턴의 Offset' 항목에 기재된 값이 있는지를 검토하게 된다. 만약 있다면 위에서 설명한 바와 같이 서브 패턴 매칭동작이 다시 수행된다.
정밀 패턴 매칭부(24)는 서브패턴 매칭부(20)의 두 번째 단계인 정밀 매칭 과정을 수행하며, 서브 데이터 전부와 패턴 데이터를 매칭시키는 과정을 수행한다.
본 발명의 일 실시예에 따르면 정밀 패턴 매칭부(24)는, 라이트 패턴 매칭이 성공한 서브 데이터에 대하여만, 정밀 패턴 매칭 동작을 수행할 수 있다.
본 발명의 일 실시예에 따른 정밀 패턴 매칭부(24)는, 서브 매처 테이블과 패턴 DB를 참조하여 정밀 패턴 동작을 수행할 수 있다. 도 3을 참조하면, 정밀 패턴 매칭부(24)는 서브 매처 테이블에 포함된 Real Pattern Address가 지정하는 어드레스에 저장된 패턴 데이터와, 서브 데이터를 비교하여 정밀 패턴 매칭 동작을 수행할 수 있다. 서브 매처 테이블에 포함된 Real Pattern Address가 지정하는 어드레스는 패턴 DB가 저장된 메모리의 주소이거나, 또는 패턴 해시값 테이블이 저장된 메모리의 주소일 수 있다. 다르게는 패턴 데이터가 저장된 다른 별도의 메모리의 주소일 수 있다.
해시값 생성부(30)는, 타겟 데이터를 구성하는 서브 데이터들에 대한 해시값을 생성한다. 해시값 생성부(30)는 해시 함수를 적용하여 서브 데이터에 대한 해시값을 생성하며, 가능하면 해시 충돌(Hash collision)이 덜 발생되는 해시 함수와 해시 계수를 사용할 수 있다.
본 발명의 일 실시예에 따르면, 해시값 생성부(30)는 서브 데이터의 전부 또는 일부를 입력 값으로 하여 해시값을 생성할 수 있으며, 생성한 해시값은 해시값 매칭부(60)에서 사용된다. 서브 데이터의 일부를 입력 값으로 해시값을 생성하는 경우에는, 하나의 서브 데이터에 대하여 복수의 해시값이 생성될 수 있다. 예를 들어 서브 데이터가 총8바이트로 이루어져 있다고 하면, 해시값 생성부(30)는 첫 번째 바이트, 두 번째 바이트 및 세 번째 바이트를 입력 값으로 하여 해시값을 생성할 수 있다. 뒤이어, 해시값 생성부(30)는 두 번째 바이트, 세 번째 바이트 및 네 번째 바이트를 입력 값으로 하여 해시값을 생성할 수 있다. 계속하여, 세 번째 바이트, 네 번째 바이트 및 다섯 번째 바이트를 입력 값으로 하여 해시값을 생성할 수 있다. 이러한 과정은 나머지 바이트들에 대하여도 수행될 수 있다.
해시값 생성부(30)는 하드웨어 및/또는 소프트웨어로 구현될 수 있으며, 예를 들면 해시함수가 레지스터와 같은 저장장소에 저장되어 있다가 메모리(미도시)에 로딩되어 해시값을 생성하는 방식으로도 구현이 가능하다. 해시 함수를 이용하여 해시값을 생성하는 것은 이미 공지된 기술에 해당하므로, 이에 대한 구체적인 설명은 생략하기로 한다.
저장부(40)는 본 패턴 매칭 시스템에 필요한 모든 데이터를 저장할 수 있다. 도 2를 참조하여 저장부(40)의 구성을 살펴본다. 저장부(40)는 패턴 DB(41)를 구비할 수 있으며, 기정해진 저장 영역에는 각각 패턴 해시값 테이블(42), 해시 매처 테이블(43), 서브 매처 테이블(44) 및 서브 패턴 매트릭스(45)가 저장될 수 있다.
본 실시예에서 저장부(40)는 하드 디스크, 휘발성 메모리 및/또는 비휘발성 메모리, 롬 등과 같은 저장 매체들 중의 어느 하나일 수 있다. 본 실시예에서, 패턴 해시값 테이블(42), 해시 매처 테이블(43), 서브 매처 테이블(44) 및 서브 패턴 매트릭스(45)들이 하나의 저장부(40)에 저장된 것으로 설명하였으나, 이는 예시적인 것으로서 이들이 서로 다른 저장매체에 저장되는 것도 당연히 가능할 것이다. 예를 들면, 위 테이블들은 휘발성 메모리에 저장되고, 패턴 DB(41)는 하드 디스크와 같은 저장매체에 저장될 수 있을 것이다. 패턴 DB(41)는 서브패턴 매칭부(20) 및 풀패턴 매칭부(50)가 매칭 동작 수행에 사용할 패턴 데이터에 대한 데이터베이스이다. 본 실시예에서, 패턴 DB(41)는 문법적으로 정해진 간단한 패턴의 패턴 데이터를 모아 놓은 것일 수 있고, 혹은 문법적으로 복잡한 패턴의 패턴 데이터를 모아 놓은 것일 수도 있으며, 혹은 문법적으로 간단한 패턴의 패턴 데이터와 문법적으로 복잡한 패턴의 패턴 데이터가 혼재되어 있는 것일 수도 있다. 한편, 본 패턴 DB(41)는, 패턴 데이터의 종류를 나타내는 정보를 더 포함할 수 있다. 패턴 해시값 테이블(42)은 패턴 DB(41)에 저장되어 있는 패턴 데이터들의 해시값을 포함한다. 패턴 해시값 테이블(42)에서, 하나의 패턴 데이터에 대하여 적어도 하나 이상의 해시값이 대응되어 있을 수 있다. 예를 들면, 16바이트의 패턴 데이터가 있다고 할 때, 해시값 생성부는, 패턴 데이터에서 순차적으로 첫 번째 바이트, 두 번째 바이트 및 세 번째 바이트를 입력 값으로 하여 해시값을 생성하고, 다음에 두 번째 바이트, 세 번째 바이트 및 네 번째 바이트를 입력 값으로 하여 해시값을 생성하며, 나머지 바이트들에 대하여도 같은 방식으로 한 바이트씩 이동하면서 해시값을 생성할 수 있다. 이렇게 생성된 해시값들은 패턴 데이터에 대응되어 패턴 해시값 테이블(42)에 포함된다. 패턴 데이터에 대한 해시값을 생성하는 해시값 생성부는, 도 1의 해시값 생성부(30)일 수도 있고 아니면 별도로 마련된 해시값 생성부(미도시)일 수 있다.
해시 매처 테이블(43)은 패턴 데이터들에 대한 해시값의 존재 유무를 나타내기 위한 테이블이다. 본 발명의 일 실시예에 따르면, 해시 매처 테이블(43)은 다음의 형태로 구성될 수 있다.
첫째로, 해시 매처 테이블(43)은 아래 [표1] 같이 해시값이 기재되는 해시값 항목과, 패턴 DB(41)의 패턴 데이터들이 기재되는 항목을 포함하는 형태일 수 있다.
Index(또는 해시값 ) Pattern
X abcdefg
Y hiiklmnopq
둘째로, 해시 매처 테이블(43)은 해시값이 기재되는 해시값 항목과, 패턴 DB(41)의 패턴 데이터들의 해시값과 해시값 항목에 기재된 해시값이 일치되는지 여부를 나타내는 항목을 포함하는 형태(도 2와 도 3의 Hash Matcher Table)일 수 있다.
도 2와 도 3에는, 두 번째 형태의 해시 매처 테이블(43)이 예시되어 있다. 키값 항목에는, 특정 해시함수에 의해 생성 가능한 해시값이 기재된다. 일치 여부 항목에서는, 키값들 중에서, 패턴 데이터의 해시값과 일치하는 값을 가진 키(들)에 대하여만 “1”로 표시하였다. 상기 특정 해시 함수는 해시값 생성부(30)에서 사용되는 해시 함수와 동일하다.
서브 매처 테이블(44)은 서브패턴 매칭부(20)에 포함되어 있는 라이트 패턴 매칭부(22)에서 매칭 동작을 수행할 때 사용되는 테이블에 해당한다.
본 발명의 일 실시예에 따르면, 서브 매처 테이블(44)은 해시값이 기재되는 해시값 항목, 해시값 항목에 기재된 해시값에 대응되는 패턴 데이터가 기재되는 패턴 데이터 항목을 포함할 수 있다. 이때, 패턴 데이터 항목에는 패턴 데이터가 저장된 주소(address), 혹은 패턴 데이터 자체가 기재될 수 있다. 또한, 서브 매처 테이블(44)은 패턴 데이터들의 중간 값을 기재하는 중간 값 항목과, 마지막 값을 기재하는 마지막 값 항목을 더 포함할 수 있다.
도 2에 도시한 바와 같이, 서브 매처 테이블(44)은 패턴 데이터 항목은 중복 패턴의 오프셋 항목, 중간 값 오프셋 항목, 중간 값 항목, 마지막 값 오프셋 항목, 마지막 값 항목 및 실제 패턴 정보 항목을 포함할 수 있다. 여기서, 실제 패턴 정보 항목에는 실제 패턴 데이터 자체가 기재될 수 있고, 혹은 패턴 데이터가 저장된 주소가 기재될 수 있다.
서브 패턴 매트릭스(45)는 타겟 데이터를 구성하는 각각의 서브 데이터에 대한 서브 패턴 매칭 결과를 포함한다.
본 발명의 일 실시예에 따르면, 서브 패턴 매트릭스(45)는 타겟 데이터를 구성하는 서브 데이터들에 대한 각각의 매칭 결과를 포함할 수 있다. 예를 들면, 타겟 데이터가 5개의 서브 데이터로 구성되어 있다고 가정하면, 서브 패턴 매트릭스(45)는 5개 각각에 대한 패턴 매칭 결과를 포함할 수 있다. 서브 패턴 매트릭스(45)는 풀패턴 매칭동작에 사용되는 것으로서, 패턴 데이터와 풀패턴 매칭 동작을 위해서 필요한 서브 데이터의 패턴 매칭 결과를 모두 포함할 수 있다.
본 발명의 일 실시예에 따른 서브 패턴 매트릭스(45)는, 서브 데이터에 대한 정밀 패턴 매칭의 수행결과, 복잡한 패턴의 일부라고 결정된 경우에, 그 서브 데이터에 대한 매칭결과를 포함한다.
풀패턴 매칭부(50)는, 서브 패턴 매트릭스(45)를 이용하여 서브 패턴 매트릭스(45)에 포함된 서브 데이터와 패턴 데이터를 풀 매칭하는 동작을 수행한다. 본 발명의 일 실시예에 따른 풀패턴 매칭부(50)는 서브패턴 매칭부(20)에 의한 매칭이 성공할 때마다, 풀패턴 매칭동작을 수행할 수 있다. 다르게는, 풀패턴 매칭부(50)는 서브패턴 매칭부(20)의 성공여부와 무관하게 서브패턴 매칭부(20)에 의한 매칭 결과가 나올 때마다, 풀패턴 매칭동작을 수행할 수 있다.
본 발명의 일 실시예에 따른 풀패턴 매칭부(50)는, 타겟 데이터를 구성하는 서브 데이터들의 각각의 서브패턴 매칭결과와, 패턴 데이터 전체와의 패턴 매칭동작을 수행할 수 있다. 이러한 풀패턴 매칭부(50)는, 하드웨어 및/또는 소프트웨어에 의해 구현될 수 있다.
해시값 매칭부(60)는 해시값 생성부(30)에 의해 생성된 해시값과 해시 매처 테이블(43) 간의 매칭 동작을 수행한다. 해시값 매칭부(60)의 매칭 동작 수행 결과는 서브패턴 매칭부(20)의 서브 패턴 매칭 동작 시 이용된다.
예를 들어, 서브 데이터에 대한 해시값이 'X'라는 값이 나왔다고 가정하고, 도 3을 참조하여 해시값 매칭부(60)의 동작을 설명한다. 도 3을 참조하면, 해시값 매칭부(60)는 하드웨어적 및/또는 소프트웨어적으로 해시 매처 테이블(43)을 이용하여 해시값 'X'를 가지는 패턴이 있음을 알 수 있으며, “일치” 또는 “성공”이라는 결과를 출력할 수 있다.
테이블 생성부(70)는 본 패턴 매칭 시스템의 패턴 매칭 동작에 필요한 테이블 예를 들어, 패턴 해시값 테이블, 해시 매처 테이블(43), 서브 매처 테이블(44) 및/또는 서브 패턴 매트릭스(45)를 생성할 수 있다. 테이블 생성부(70)에 의해 생성된 테이블은 저장부(40)의 해당 저장 영역에 저장될 수 있다. 테이블 생성부(70)에 의해 생성되는 테이블은 도 2를 참조하여 설명한 바와 같다.
본 실시예에서, 위 테이블들(43, 44, 45)이 하나의 테이블 생성부(70)에서 생성되는 것으로 설명하였으나 이는 예시적인 것으로서, 별도로 마련되는 테이블 생성부에 의해서 생성되는 것도 가능할 것이다.
테이블 생성부(70)는 패턴 DB(41) 내의 패턴 데이터에 대한 모든 경우의 해시값을 기재하는 패턴 해시값 테이블을 생성할 수 있다. 본 발명의 일 실시예에 따르면, 테이블 생성부(70)는, 해시값 생성부(30) 또는 별도로 마련되는 해시값 생성부(미도시)를 이용하여, 패턴 데이터들에 대한 해시값들을 생성하고, 생성한 해시값들을 패턴 해시값 테이블의 형태(도 3의 도면에서, HASH Value항목과 Pattern 항목으로 이루어진 테이블)로 구성할 수 있다.
본 발명의 일 실시예에 따르면, 패턴 해시값 테이블은 테이블 생성부(70)에서 해시 매처 테이블(43)을 생성할 때 사용될 수 있다. 본 발명의 일 실시예에 따른 테이블 생성부(70)는, 해시 매처 테이블을 구성할 수 있다. 예를 들면, 테이블 생성부(70)는 해시값 생성부(30) 또는 별도로 마련되는 해시값 생성부(미도시)를 이용하여 패턴 데이터들에 대한 해시값들을 생성하고, 생성한 해시값들을 해시 매처 테이블의 형태로 구성할 수 있다. 다르게는 상기 패턴 해시값 테이블을 참조하여, 해시 매처 테이블을 구성할 수 있다. 한편, 본 발명의 일 실시예에 따른 테이블 생성부(70)는 상기 해시 매처 테이블, 패턴 해시값 테이블 및 패턴 DB들을 참조하여 서브 매처 테이블을 구성할 수 있다.
패턴 DB(41)가 변경되면, 테이블 생성부(70)는 위 테이블들을 새로이 작성할 수 있다. 이때 변경된 부분만을 새로이 작성하거나, 또는 전부 새로 작성할 수 있다.
이상과 같이 도 1을 참조하여 설명한 패턴 매칭 시스템은, 복잡한 패턴과 간단한 패턴을 구분하여 패턴 매칭 동작을 수행하는 것으로 설명하였다. 즉, 본 실시예에 따르면, 타겟 데이터에 대한 서브패턴 매칭의 결과 매칭이 되었고, 그 서브 데이터가 단순한 패턴에 해당되는 경우에는, 풀 패턴 매칭 동작을 수행하지 않고 타겟 데이터에 대한 매칭 동작을 종료한다. 한편, 타겟 데이터에 대한 서브패턴 매칭의 결과 매칭이 되었고 그 서브 데이터가 복잡한 패턴의 일부에 해당되는 경우에는, 풀 패턴 매칭 동작을 수행한다. 이해의 편의를 위해서, 5개의 서브 데이터로 구성된 타겟 데이터가 있다고 하자. 만약 첫 번째 서브 데이터에 대한 서브패턴 매칭의 결과가 성공적이었고, 그 서브 데이터가 단순한 패턴에 해당되면, 나머지 4개의 서브 데이터에 대한 패턴 매칭동작은 수행되지 않으며, 풀패턴 매칭 동작도 수행되지 않는다. 한편, 첫 번째 서브 데이터에 대한 서브패턴 매칭의 결과가 성공적이었고 그 서브 데이터가 복잡한 패턴의 일부에 해당되는 경우라면, 첫 번째 서브 데이터에 대한 매칭결과를 서브 패턴 매트릭스에 포함시키고, 두 번째 서브 데이터에 대한 서브패턴 매칭 동작이 수행된다. 계속하여 나머지 서브 데이터들에 대한 서브패턴 매칭 동작이 수행되어 그 결과가 서브 패턴 매트릭스에 포함된다. 이 서브 패턴 매트릭스를 이용하여 풀패턴 매칭동작이 수행된다.
도 1에 도시된 실시예는 다양한 형태로 변형이 가능하다.
첫 번째 변형 예로서, 패턴 데이터가 문법적으로 간단한 패턴만 있다고 가정하고 구성하는 경우이다. 즉, 풀패턴 매칭부(50)를 포함하지 않고, 서브 패턴 매트릭스도 생성하지 않도록 구성하는 것으로서, 모든 타겟 데이터에 대하여 서브패턴 매칭 동작만을 수행하도록 구성될 수 있다. 이러한 경우, 패턴 DB에는 문법적으로 간단한 패턴 데이터만이 저장되어 있을 수 있다.
두 번째 변형 예로서, 패턴 데이터가 문법적으로 복잡한 패턴만 있다고 가정하고 구성하는 경우이다. 이 경우는 타겟 데이터에 대하여 풀 패턴 매칭이 될 때까지, 그 서브 데이터를 구성하는 서브 데이터들에 대하여 풀 패턴 매칭 동작을 모두 수행한다. 즉, 서브 데이터들의 서브패턴 매칭 동작이 이루어질 때마다, 풀 패턴 매칭 동작이 수행되거나 또는 서브패턴 매칭 동작의 결과가 성공적일 때마다 풀패턴 매칭 동작이 수행될 수 있다.
이상 설명한 도 1에 도시한 결정부(10), 서브패턴 매칭부(20), 해시값 생성부(30), 저장부(40), 풀패턴 매칭부(50), 해시값 매칭부(60) 및 테이블 생성부(70)를 포함하는 패턴 매칭 시스템은 SOC(System on Chip)에 탑재되어 구현될 수 있고, 혹은 PC 및 스마트 카드에 탑재될 수도 있다.
도 3은 본 발명의 일 실시예에 따른 테이블 구성을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 해시값 생성부(30)는 패턴 DB(41)로부터 패턴 데이터를 로딩하여 특정 해시함수(Hash function)를 이용하여 패턴 데이터별 해시값을 생성하고, 패턴 데이터별로 생성된 해시값은 패턴 해시값 테이블(42)에 저장된다. 패턴 해시값 테이블(42)은 해시값 생성부(30)가 아닌 별도로 마련된 해시값 생성부(미도시)에 의해 생성된 해시값으로 구성되는 것도 가능하다. 다만, 별도로 마련된 해시값 생성부가 사용하는 해시함수와 그 해시계수는 상기 해시값 생성부(30)의 것과 동일해야 한다.
테이블 생성부(70)는 패턴 해시값 테이블(42)을 이용하여 해시 매처 테이블(43)과 서브 매처 테이블(44)을 생성할 수 있다. 해시 매처 테이블(43)은 해시값 매칭부(60)에서 동일한 해시값을 가지는 패턴 데이터가 존재하는지를 먼저 판단하기 위한 용도로서 사용된다. 한편, 서브 매처 테이블(44)은 해시 매칭이 성공한 경우에만 사용된다.
해시 매처 테이블(43)과 서브 매처 테이블(44)을 이용한 매칭 동작 수행 결과, 이들 매칭이 모두 성공된 서브 데이터들과 패턴 데이터의 전체가 매칭되는 동작이 수행된다.
이상 도 3에 도시된 테이블들은 예시적인 것으로서, 본원 발명이 이들 테이블의 구성에만 한정되는 것이 아님은 물론이다. 도 3에는, 패턴 데이터 종류 정보가 포함되어 있지 않지만, 패턴 데이터 종류 정보가 더 포함되도록 구성하는 것도 가능할 것이다. 예를 들면, 서브 매처 테이블에, 패턴 데이터 종류 정보가 더 포함되도록 구성함으로써, 결정부(10)는 그러한 서브 매처 테이블을 참조하여 풀 패턴 매칭 동작이 수행되도록 할지 여부를 결정할 수 있다.
도 4는 본 발명의 일 실시예에 따른 패턴 매칭 시스템을 SOC 형태로 구현한 예를 나타낸 블럭도이다.
도 4를 참조하여, 본 패턴 매칭 시스템을 SOC 형태로 구현하면, 컨피규어 버스(101, 123), CPU(Central Processing Unit)(103), DMA(Direct Memory Access) 컨트롤러(105), 로컬버스(107), SDRAM(Synchronous Dynamic Random Access Memory) 컨트롤러(109), 플래시 컨트롤러(111), SRAM(Static Random Access Memory) 컨트롤러(113), 버퍼(115), 검색엔진(117), 버스 매트릭스(119) 및 부트(boot)(121)를 포함할 수 있다.
본 패턴 매칭 시스템에서, 각 블록 간의 데이터 전송을 위한 버스는 데이터의 신속한 전송을 위한 로컬 버스(107)와, 컨피규레이션(configuration)을 위한 컨피규어(configure) 버스(101, 123)로 구분할 수 있다. 본 실시예에서 로컬 버스(107)와 컨피규어 버스(101, 123)는 AHB(Advanced High Performance Bus) 규격일 수 있으나, 이는 예시적인 것으로서 본원 발명은 반드시 컨피규어 버스일 필요가 없으며 다른 규격의 버스도 사용할 수 있다. 한편, 본 실시예에서 컨피규어 버스(101)와 컨피규어 버스(123)는 서로 연결되어 있을 수 있다.
CPU(103)는 본 패턴 매칭 시스템을 전반적으로 제어하고 요구되는 작업을 중앙 연산 처리하는 역할을 한다. CPU(103)는 리컨피규러블(reconfigurable) CPU일 수 있으나 이는 예시적인 것으로서 리컨피규러블 CPU가 아니라도 무방하다.
DMA 컨트롤러(105)는 DMA를 제어하는 역할을 하고, 버퍼(115)는 외부와의 인터페이스를 통해 데이터를 임시 저장하는 역할을 한다.
검색 엔진(117)은 타겟데이터와 패턴 데이터를 입력받아 패턴 매칭 동작을 수행하는 하드웨어일 수 있다. 예를 들면, 검색 엔진(117)은 도 2에 예시된 테이블들을 참조하여 타겟 데이터에 대한 패턴 매칭 동작을 수행할 수 있다.
버스 매트릭스(119)는 AHB 규격의 제어 신호와 데이터 신호를 APB(Advanced Peripheral Bus) 규격의 제어 신호와 데이터 신호로 변환하거나, APB 규격의 제어 신호와 데이터 신호를 AHB 규격의 제어 신호와 데이터 신호로 변환하여 전달하는 역할을 한다.
부트(121)는 SOC에서 패턴 매칭 시스템이 초기 동작 되도록 하는 역할을 한다.
본 실시예에서, 메모리로는 SDRAM(125), 플래시(flash) 메모리(127) 및 SRAM(129)을 포함하고 있음을 도시하였다. 이에 따라, SDRAM(125)에 대한 입출력을 제어하기 위한 SDRAM 컨트롤러(109), 플래시 메모리(127)에 대한 입출력을 제어하기 위한 플래시 컨트롤러(111), SRAM(129)에 대한 입출력을 제어하기 위한 SRAM 컨트롤러(113)를 포함하여 이루어진다. SDRAM(125), 플래시(flash) 메모리(127) 및 SRAM(129)은 도 1에 도시한 저장부(40)에 포함될 수 있다.
도 1을 참조하여 설명한 패턴 매칭 시스템과 그 변형 예들에서 결정부(10), 서브패턴 매칭부(20), 해시값 생성부(30), 풀패턴 매칭부(50), 해시값 매칭부(60) 및 테이블 생성부(70)는 소프트웨어 및/또는 하드웨어로 구현될 수 있으며, 검색 엔진(117)은 그 중에서 해시 값 매칭 동작, 서브 패턴 매칭 동작을 하드웨어로 구현한 것이다. 한편, 소프트웨어로 구현되는 부분은 SDRAM(125)이나 SRAM(129)과 같은 저장매체에 저장되어 있다가 매칭 동작을 수행할 때 검색엔진(117)을 제어하여 매칭동작을 수행할 수 있다.
도 5는 도 4에 도시한 검색엔진의 하드웨어 구성을 나타낸 블럭도이다.
도 5를 참조하여, 검색 엔진(117)은 시스템 인터페이스(201), 시스템 레지스터(203), 메모리 인터페이스(205), 메모리(207), 버퍼(209), 해시 매처(211), 오프셋 어드레스 제너레이터(213), 해시 Q 버퍼(215), 라이트 패턴 매처(217), 스캔 Q 버퍼(219)를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 검색 엔진(117)은 해시 값 매칭 동작과 서브패턴 매칭 동작을 수행하며, 풀패턴 매칭 동작은 도 6에 예시적으로 도시한 바와 같이 소프트웨어적으로 구현될 수 있다.
시스템 인터페이스(201)는 본 패턴 매칭 시스템과 외부 간의 인터페이스를 지원하고, 메모리 인터페이스(205)는 본 패턴 매칭 시스템 내에 저장된 DB 또는 파일의 내용을 읽어 들이기 위해 사용된다.
메모리(207)는 도 1 내지 도 3의 실시예를 참조하여 설명한 패턴 해시값 테이블을 저장할 수 있으며, 필요한 경우에는 시스템 레지스터(203)로 이동될 수 있다. 메모리(207)에 저장되는 패턴 해시값 테이블은, 해시값 생성기(미도시)에 의해 생성된 것일 수 있다. 본 발명의 일 실시예에 따르면 해시값 생성기(미도시)는 소프트웨어적으로 구현될 수 있다. 예를 들면, 시스템 레지스터(203)에 해시함수가 저장되어 있고, 해시값 생성기가 레지스터에 저장된 해시함수를 이용하여 패턴 데이터들에 대한 해시값을 생성할 수 있다. 버퍼(209)는 메모리 인터페이스(205)에서 순차적으로 읽어 들인 타겟 데이터를 저장한다. 본 발명의 일 실시예에 따르면 버퍼(209)는 타겟 데이터를 구성하는 각각의 서브 데이터를 순차적으로 입력 받아서 저장할 수 있다. 한편, 본 실시예에서, 버퍼(209)는 듀얼 뱅크 방식으로 구성되었으나 이는 예시적인 것으로서 하나의 버퍼로 구현하는 것도 가능할 것이다. 다만, 듀얼 뱅크 방식으로 구현하는 경우에는, 2개의 버퍼에서 번갈아 가면서 서브 데이터를 해시 매처(211)쪽으로 제공하는 것이므로 매칭 속도가 더 빠를 수 있을 것이다.
해시 매처(211)로 입력되는 데이터는 서브 데이터와 그 해시값이 입력된다. 즉, 버퍼(209)로부터 출력되는 서브 데이터는 해시값 생성기(미도시)에 입력되어, 그 해시값이 생성되며, 생성된 해시값이 서브 데이터와 함께 해시 매처(211)로 입력된다.
해시 매처(211)는 서브 데이터의 해시값과 해시 매처 테이블(43)의 매칭 동작을 수행한다. 여기서, 해시 매처 테이블(43)은 시스템 레지스터(203)에 저장되어 있거나 또는 별도로 마련된 메모리(미도시)에 저장되어 있을 수 있다. 여기서, 해시 매처 테이블은 도 1 내지 도 3을 참조하여 설명하였던 해시 매처 테이블에 해당하는 것으로서, 테이블 생성기(미도시)에 의해서 생성된 것일 수 있다.
해시 매처(211)는 해시 값이 서로 매칭되는 경우(즉, 매칭이 성공하는 경우)에만, 해시 매칭이 성공한 서브 데이터를 해시 Q버퍼(215)에 저장한다.
오프셋 어드레스 제너레이터(offset address generator)(213)는 해시 매처의 매칭 동작 수행 결과, 해시 매칭이 성공하였을 경우에 소정의 메모리 주소 값을 발생시킨다. 구체적으로, 서브패턴 매칭 테이블에서, 상기 해시 매칭이 성공한 해시값이 저장된 메모리 주소 값을 발생시킨다. 도 3의 예를 들어 설명하면, 해시 매칭 결과, 서브 데이터의 해시 값이 'X'라면, 오프셋 어드레스 제너레이터(213)는, 서브 매쳐 테이블에서 INDEX가 'X'인 레코드를 저장하는 메모리 주소를 생성한다.
해시 Q(Queue) 버퍼(215)는, 해시 매칭이 성공한 서브 데이터와, 오프셋 어드레스 제너레이터(213)에서 발생된 주소를 서로 대응시켜서 저장한다.
라이트 패턴 매처(217)는 해시 Q 버퍼(215)가 저장하는 서브 데이터들에 대하여 순차적으로 라이트 패턴 매칭 동작을 수행하는 하드웨어이다. 본 발명의 일 실시예에 따르면 라이트 패턴 매처(217)는, 도 1에 도시한 라이트 패턴 매칭부(22)의 기능과 대응할 수 있다. 라이트 패턴 매처(217)는, 해시 Q 버퍼(215)에 저장된 서브 데이터와, 그 서브 데이터에 대응된 메모리 주소에 저장된 데이터(예를 들면, 인덱스가 'X'인 레코드)를 읽어와서, 양자를 매칭시킬 수 있다. 여기서 메모리로부터 읽어온 데이터는 서브 패턴 매처 테이블에 포함된 데이터이다.
본 발명의 일 실시예에 따르면 라이트 패턴 매처(217)는, 메모리로부터 읽어온 데이터에 충돌 패턴 오프셋이 포함되어 있는 경우에는, 그 충돌 패턴 오프셋이 지정하는 데이터를 추가적으로 읽어와서 라이트 패턴 매칭동작을 또 수행한다.
다만, 본 발명의 일 실시예에 따르면 라이트 패턴 매처(217)는, 예를 들어 서브 매처 테이블에서 인덱스가 'X'인 패턴 데이터에 대하여 라이트 패턴 매칭이 실패하거나 또는 정밀 패턴 매칭이 실패한 경우에, 충돌 패턴의 오프셋이 지시하는 값('Z')이 나타내는 패턴 데이터(즉, 인덱스 'Z'인 패턴 데이터)를 읽게 된다. 스캔 Q(Queue) 버퍼(219)는 라이트 패턴 매처(217)의 매칭 동작 이후, 라이트 패턴 매칭이 성공한 서브 데이트들을 순차적으로 저장할 수 있다. 이후, 여기 저장된 서브 데이터들에 대하여는 정밀 패턴 매칭 동작이 수행된다.
도 5에 도시되지는 않았지만, 해시 매처에 의한 해시 매칭동작과 라이트 패턴 매처에 의한 라이트 패턴 매칭 동작에 사용되는 해시 매처 테이블과 서브 매처 테이블은 시스템 레지스터(203)나 별도로 마련된 메모리(미도시)에 저장되어 있을 수 있다.
한편, 상술한 도 4와 도 5에 예시된 것처럼, 본원 발명이 SOC 형태로 구현된 경우, 어플리케이션에서 소프트웨어 레벨에서 패턴 매칭을 하는 경우보다, 그 속도가 수배 이상 빠르며, 나아가서 속도나 배터리에 제한이 있는 모바일 디바이스의 리소스 문제를 해결할 수 있을 것이다.
도 6은 도 5에 도시한 패턴 매칭 시스템의 전반적인 동작을 설명하기 위한 도면이다.
해시 매처 테이블(43)은 메모리(미도시)에 저장되어 해시 매처(211)에서 매칭 동작을 수행하기 위해 사용된다. 본 발명의 일 실시예에서 해시 매처 테이블(43)은 인덱스로 사용하기 위한 해시값인 키값과 그 키값을 사용하는 패턴의 일치 여부 정보를 포함할 수 있다. 해시값 생성기(미도시)가 패턴 DB(41)에서 패턴 DB를 로딩하여 해시값을 생성하면, 그 해시값에 기초하여 해시 매처 테이블(44)과 패턴 해시값 테이블이 생성될 수 있다. 패턴 해시값 테이블은 메모리(207)에 저장되어 있을 수 있다.
서브 매처 테이블(44)은 메모리(미도시)에 저장되어 라이트 패턴 매처(217)와 정밀 패턴 매칭을 위해서 사용된다. 버퍼(209)에는 타겟 데이터의 서브 데이터가 로딩되고, 로딩된 서브 데이터와 그 해시값이 해시 매처(211)로 제공된다. 해시 매처(211)는 버퍼(209)로부터 서브 데이터 및 그 해시값을, 미 도시된 메모리로부터는 해시 매처 테이블(43)을 제공받아 해시 매칭을 수행한다.
이후, 라이트 패턴 매처(217)에서는 서브 매처 테이블(44)을 이용하여 서브 데이터의 일부에 대한 매칭 동작을 수행하고, 라이트 패턴 매칭이 성공하면 성공한 서브 데이터를 스캔 Q버퍼(219)쪽으로 출력한다.
그리고, 스캔 Q버퍼(219)에 저장된 서브 데이터들에 대하여 정밀 패턴 매칭 동작이 수행되며, 이러한 동작은 예를 들면, 전술한 정밀 패턴 매칭부(24)에 의해 수행될 수 있다.
본 실시예에서 검색 엔진(117)은 하드웨어 로직으로 구성되어 단순하고 빠른 작업을 수행할 수 있으며, 비트 테이블인 해시 매처(211)는 크기가 작고, 해시 함수를 통해 나온 해시값을 매칭 대상으로 하기 때문에 비교 속도가 빠른 장점이 있다. 또한, 라이트 패턴 매처(217)는 해시값을 인덱스로 하여 접근하기 때문에 빠른 매칭 결과를 출력할 수 있다.
도 7은 본 발명의 일 실시예에 따른 문법적으로 정해진 복잡한 패턴 데이터를 설명하기 위한 도면이다.
도 7에는 문법적으로 정해진 복잡한 패턴 데이터(이하, "멀티 패턴 데이터"이라 한다)의 형태를 예시하였다. 이와 같은 멀티 패턴 데이터는 도 4 내지 도 6에서 설명한 패턴 매칭 시스템에 의해서는 정확한 패턴 매칭 결과를 얻을 수 없다.
그러므로, 하나의 멀티 패턴을 복수 개의 서브 패턴으로 분리하여 패턴 매칭 동작을 수행할 필요가 있다. 도 7에 도시한 바와 같이 하나의 멀티 패턴 데이터를 기정해진 규칙에 따라 복수 개의 서브 패턴으로 분리할 수 있다.
도 8은 도 5에 도시한 패턴 매칭 시스템에서 문법적으로 정해진 복잡한 패턴 데이터를 처리하는 동작을 설명하기 위한 도면이다.
도 8에 도시한 동작은 도 6에서 설명한 동작과 유사하다. 다만, 도 6에서는 문법적으로 정해진 간단한 패턴 데이터를 처리하는 동작을 설명한 것이고, 도 8은 문법적으로 정해진 복잡한 패턴 데이터 즉, 멀티 패턴 데이터를 처리하는 동작을 설명한 것이다. 도 8의 멀티 패턴 데이터를 처리하는 동작은 도 6에서 일부 동작이 추가된 것에 해당하므로, 여기에서는 추가된 동작에 대하여만 더 설명하도록 한다.
패턴 DB(41)에 저장되어 있는 패턴 데이터들을 복수 개의 서브 패턴으로 분리하는 동작을 수행한다. 이러한 동작을 "멀티패턴 구성 프로세스"라 하기로 한다. 멀티패턴 구성 프로세스는 도 7에서 도시한 바와 같다.
도 8을 참조하면, 멀티 패턴 데이터에 대하여 해시 매처 테이블(43) 및 서브 매처 테이블(44), 패턴 해시값 테이블이 구성되어 있다.
해시 매처(211)에 의한 매칭 동작과, 라이트 패턴 매처(217)에 의한 매칭 동작과, 정밀 패턴 매칭은 전술한 도 5 및 6의 설명과 동일하므로 그에 관한 설명은 생략하기로 한다. 도 8의 실시예에 따르면 정밀 패턴 매칭의 결과는, 서브 패턴 매트릭스(45)에 포함되어 저장되며, 여기서 서브 패턴 매트릭스(45)는 메모리(미도시)에 저장되어 있을 수 있다. 도 1 내지 도 3을 참조하여 설명한 바와 같이 서브 패턴 매트릭스(45)를 참조하여, 풀 패턴 매칭 동작이 이루어질 수 있다.
도 9는 본 발명의 문법적으로 정해진 간단한 패턴 데이터를 이용한 패턴 매칭 방법의 제1 실시예를 설명하기 위한 흐름도이다.
타겟 데이터는 복수 개의 서브 데이터로 구분될 수 있다. 서브 데이터가 본 패턴 매칭 시스템으로 입력되면(S301), 해시값 생성부(30)는 서브 데이터에 대한 해시값을 생성한다(S303). 해시값 매칭부(60)는 기저장된 해시 매처 테이블(43)과 서브 데이터의 해시값을 순차적으로 매칭하는 해시 매칭 동작을 수행한다(S305).
해시값 매칭부(60)의 해시 매칭 동작 수행 결과, 현재 매칭 대상인 하나의 서브 데이터의 해시값이 해시 매처 테이블과 일치하는 경우(S307-Y), 라이트 패턴 매칭부(22)가 해당 서브 데이터의 일부에 대한 라이트 패턴 매칭을 수행한다(S309). 라이트 패턴 매칭 수행 시에는 테이블 생성부(70)에 의해 기 생성된 서브 매처 테이블(44)이 이용된다.
라이트 패턴 매칭 수행 결과, 해당 서브 데이터의 일부와 서브 매처 테이블(44)의 값이 일치하는 경우(S311-Y), 해당 서브 데이터의 전체에 대하여 매칭을 하는 정밀 패턴 매칭 동작을 수행한다(S313).
정밀 패턴 매칭 동작 수행 결과, 현재 매칭 대상인 서브 데이터 전체에 대한 값이 서브 매처 테이블(44)의 값과 일치하는 경우(S315-Y), 결정부(10)는 패턴이 존재하는 것으로 판단한다(S317).
S315 단계에서, 서브 데이터와 패턴 데이터가 일치하지 않는 경우(S315-N), 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인 경우(S319-Y), 타겟 데이터에 패턴이 존재하지 않는 것으로 최종 결정한다(S321).
S311 단계에서, 서브 데이터의 일부가 서브 매처 테이블(44)의 값과 일치하지 않는 경우(S311-N), 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인 경우(S319-Y), 타겟 데이터에 패턴이 존재하지 않는 것으로 최종 결정한다(S321).
S319 단계에서, 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터가 아닌 경우(S319-N), S303 단계로 피드백 하여 다음 매칭 대상인 서브 데이터에 대한 해칭 동작을 반복한다.
도 8에서, S307과 S319에서 S303 단계로 피드백하는 과정을 도시 하였으나, 이는 예시적인 것으로서 다르게도 구현이 가능하다. 즉, S301의 동작은 일정한 시각 간격을 두고 계속 입력될 수 있으며, S307이나 S319의 피드백 동작은 없는 것도 가능하다. S307에서 해시값이 서로 일치하지 않는 경우(S307-N)에는 현재 해시 매칭 중인 서브 데이터와 그 해시값을 버리는 동작을 수행할 수 있다. S319에서도 마지막 서브 데이터가 아닌 경우(S319-N), 현재 정밀 패턴 매칭 또는 라이트 패턴 매칭한 서브 데이터를 버리는 동작을 수행할 수 있다. 도 9에서 설명한 패턴 매칭 방법은 본 패턴 매칭 시스템으로 입력되는 타겟 데이터가 문법적으로 정해진 간단한 패턴의 데이터인 것을 전제로 한 것으로, 도 1의 패턴 매칭 시스템에서 서브패턴 매칭부(20), 해시값 생성부(30), 저장부(40), 해시값 매칭부(60) 및 테이블 생성부(70) 만의 구성으로도 동작이 가능하다.
도 10은 본 발명의 문법적으로 정해진 간단한 패턴 데이터를 이용한 패턴 매칭 방법의 제2 실시예를 설명하기 위한 흐름도이다.
도 10은 도 9에 도시한 문법적으로 정해진 간단한 패턴 데이터를 이용한 패턴 매칭 방법의 제1 실시예의 일부를 변형한 예에 해당한다.
패턴 데이터가 입력되면(S401), 해시값 생성부(30)는 패턴 데이터에 대한 해시값을 생성하고, 테이블 생성부(70)는 해시값 생성부(30)에 의해 생성된 해시값을 이용하여 패턴 해시값 테이블(42), 해시 매처 테이블(43) 및 서브 매처 테이블(44)을 구성한다(S403).
이후, 매칭 동작 수행을 위해, 본 패턴 매칭 시스템으로 복수의 서브 데이터로 구성된 타겟 데이터가 입력된다(S405).
타겟 데이터가 입력되면, 서브패턴 매칭부(20)는 서브 데이터의 처음부터 패턴 매칭을 수행한다. 서브 데이터의 처음 위치는 포지션이 0인 지점을 의미한다(S407).
서브 데이터의 포지션을 이동하여 패턴 매칭을 수행하는 과정에서 현재 매칭 대상인 서브 데이터의 포지션이 데이터의 끝이 아닌 경우(S409-N), 서브 데이터의 현재 포지션부터 기정해진 크기만큼을 읽어 들여 해시함수를 적용하여 해시값을 생성한다(S411).
만약, S409 단계에서, 서브 데이터의 포지션이 데이터의 끝인 경우(S409-Y), 현재 서브 데이터에는 패턴이 존재하지 않는 것으로 결정한다(S423).
이후, S411 단계에서 생성한 해시값이 해시 매처 테이블(43)에 존재하는지 여부를 확인한다(S413). S413 단계에서, 해시 매처 테이블(43)에 기 생성한 해시값이 존재하는 것으로 확인되면(S413-Y), 서브 매처 테이블(44)로부터 중간 값, 마지막 값을 비교하여 결과가 같은지의 여부를 확인한다(S415).
S415 단계에서의 결과가 같으면, 서브 매처 테이블(44)을 이용하여 패턴 데이터 전체에 대한 패턴 매칭을 수행하여 패턴 데이터 전체가 일치하면(S417-Y), 타겟 데이터에 패턴이 존재하는 것으로 결정한다(S419). 타겟 데이터에 패턴이 존재하는 것으로 결정되는 경우는 타겟 데이터에 바이러스를 포함한 멀웨어가 존재함을 의미할 수 있다.
만약, S417 단계에서, 패턴 데이터 전체가 일치하지 않는다면(S417-N), 타겟 데이터에 패턴이 존재하지 않는 것으로 결정한다(S423). 타겟 데이터에 패턴이 존재하는 것으로 결정되는 경우는 타겟 데이터에 바이러스를 포함한 멀웨어가 존재하지 않음을 의미할 수 있다.
또한, S413 단계에서 해시 매처 테이블(43)에 매칭 대상에 대한 해시값이 존재하지 않는 경우(S413-N) 또는 S415 단계에서 서브 매처 테이블(44)에서의 중간 값과 마지막 값의 비교 결과가 같지 않은 경우(S415-N), 서브 데이터의 현재 포지션에 1 바이트를 더하여 포지션을 변경한 후(S421), S409 단계로 피드백하여 반복한다.
도 11은 본 발명의 문법적으로 정해진 복잡한 패턴 데이터의 처리 과정을 설명하기 위한 흐름도이다.
도 11은 문법적으로 정해진 복잡한 패턴 데이터의 처리 과정에 사용되는 서브패턴 매트릭스를 구성하는 방법을 설명하기 위한 것이다.
패턴 데이터가 입력되면(S501), 입력된 패턴 데이터를 서브 패턴으로 분리한다(S503).
분리된 각 서브 패턴마다 S507 내지 S515 단계를 반복했는지 여부를 확인하여, 패턴만큼 반복했으면 종료하고, 그렇지 않으면 다음 단계로 진행한다(S505).
이후, 분리된 서브 패턴에 대한 인덱스로 사용하기 위해서 서브 패턴에 대한 해시값을 생성하고(S507), 각 서브 패턴 별 해시값을 인덱스로 하여 해시 매처 테이블(305)에 해당 정보를 기록하며(S509), 각 서브 패턴 별 해시값을 인덱스로 서브 매처 테이블(307)에도 해당 정보를 기록한다(S511).
또한, 전체 패턴과 문법 처리를 위한 추가 정보를 서브 매처 테이블에 저장하고(S513), 전체 패턴으로 재조합할 수 있도록 서브 패턴의 정보를 서브 패턴 매트릭스(45)에 저장한다(S515).
도 12는 본 발명의 문법적으로 정해진 복잡한 패턴 데이터에 대한 패턴 매칭 방법의 제1 실시예를 설명하기 위한 흐름도이다.
타겟 데이터를 구성하는 각각의 서브 데이터가 본 패턴 매칭 시스템으로 입력된다(S601). 이후, 해시값 생성부(30)는 서브 데이터에 대한 해시값을 생성한다(S603).
해시값 매칭부(60)는 해시 매처 테이블(43)과 상기 서브 데이터의 해시값을 매칭하는 해시 매칭 동작을 수행한다(S605).
해시값 매칭부(60)의 해시 매칭 동작 수행 결과, 현재 매칭 대상인 하나의 서브 데이터의 해시값이 해시 매처 테이블과 일치하는 경우(S607-Y), 라이트 패턴 매칭부(22)가 해당 서브 데이터의 일부에 대한 라이트 패턴 매칭을 수행한다(S609). 라이트 패턴 매칭 수행 시에는 테이블 생성부(70)에 의해 기 생성된 서브 매처 테이블(44)이 이용된다.
라이트 패턴 매칭 수행 결과, 해당 서브 데이터의 일부와 서브 매처 테이블(44)에 기재된 패턴 데이터가 일치하는 경우(S611-Y), 해당 서브 데이터의 전체에 대하여 매칭을 하는 정밀 패턴 매칭 동작을 수행한다(S613).
정밀 패턴 매칭 동작 수행 결과, 현재 매칭 대상인 서브 데이터 전체와 서브 매처 테이블(44)의 값이 일치하는 경우(S615-Y), 이 패턴 매칭 결과를 서브 패턴 매트릭스(45)에 저장한다(S617).
이후, 서브 패턴 매트릭스(45)와 패턴 데이터를 비교하는 동작을 수행한다(풀 패턴 매칭)(S619).
풀 패턴 매칭 결과 패턴 데이터와 타겟 데이터의 매칭이 성공한 경우(S621-Y), 결정부(10)는 타겟 데이터에 패턴이 존재하는 것으로 결정한다(S623).
만약, S615 단계 및 S621 단계에서, 각 매칭 동작 수행 결과 일치하지 않는 것으로 판단되면(S615-N, S621-N), 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인지를 결정한다(S625).
현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인 경우(S625-Y), 결정부(10)는 타겟 데이터에 패턴이 존재하지 않는 것으로 최종 결정한다(S627).
만약, 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터가 아닌 경우(S625-N), 다음 서브 데이터에 대한 매칭 동작을 수행하기 위하여 S603 단계로 피드백하여 동일 동작이 반복된다.
본 실시예에서의 S601 단계 내지 S615 단계는 도 9의 S301 내지 S315 단계와 동일하다. 즉, 멀티 패턴 데이터를 처리하는 동작은 문법적으로 정해진 간단한 패턴 데이터를 처리하는 동작을 수행한 이후, 풀 패턴 매칭 동작을 더 수행하는 것이다.
도 13은 본 발명의 문법적으로 정해진 복잡한 패턴 데이터에 대한 패턴 매칭 방법의 제2 실시예를 설명하기 위한 흐름도이다.
패턴 데이터를 로딩하고(S701), 로딩된 패턴 데이터를 서브 패턴으로 분리하여 멀티 패턴 데이터를 구성한다(S703). 여기서, 멀티 패턴 데이터를 구성하는 방법은 도 11에서 설명한 바와 같다.
이후, 매칭 대상이 되는 타겟 데이터를 입력받는다(S705). 입력받은 데이터의 처음부터 1 바이트씩 이동하며 패턴 매칭을 실시한다. 즉, 입력받은 데이터의 포지션이 0인 지점부터 1바이트씩 이동하며 패턴 매칭을 실시한다(S707).
입력받은 타겟 데이터의 포지션이 데이터의 끝인지 확인하고(S709), 현재 포지션이 데이터의 끝이면(S709-Y), 입력받은 데이터에 일치하는 패턴이 없는 것으로 판단한다(S731).
만약, 입력받은 타겟 데이터의 포지션이 데이터의 끝이 아니면(S709-N), 타겟 데이터의 현재 포지션부터 정해진 크기만큼 읽어서 해시 함수를 적용하여 해시값을 생성한다(S711).
해시값 매칭부(60)는 S713에서 계산한 해시값이 해시 매처 테이블에서 존재하는지 여부를 확인한다(S715). 여기서, S713에서 계산한 해시값이 키값으로 존재하면 (S715-Y), 서브 패턴 매칭 동작, 예를 들면 서브 데이터의 중간 값 및 마지막 값과, 서브 매처 테이블(44)에서의 중간 값과 마지막 값을 비교하여 결과가 같은지 여부를 확인한다(S717).
반면, 해당 서브 데이터의 해시값이 키값으로 존재하지 않으면(S715-N), 서브 데이터의 현재 포지션에서 1 바이트를 더하여 S709 단계로 돌아간다(S731).
다음, 서브 패턴 매칭이 성공하면(S717-Y) 서브 매처 테이블(44)을 이용하여 실제 패턴 데이터 전체에 대한 매칭 동작을 수행한다(S719). 반면, S717 단계에서 매칭이 성공되지 않으면 서브 데이터의 현재 포지션에서 1 바이트를 더하여 S709 단계로 돌아간다(S731).
다음, S719 단계에서 서브 매처 테이블(44)을 참고로 한 실제 패턴 정보에 대한 정밀 패턴 매칭을 실시하여 패턴 전체가 일치하면 서브 패턴 매트릭스(45)에 해당 정보를 기록한다(S721).
다음, 복잡한 패턴을 구성하는 서브 패턴이 모두 발견 되었는지 여부를 확인한다(S723). S723 단계에서 복잡한 패턴을 구성하는 서브 패턴이 모두 발견되면, 전체 패턴이 일치하는 것으로 보고 해당 데이터에 패턴이 있는 것으로 결정한다(S725, S727).
반면, S723 단계에서, 복잡한 패턴을 구성하는 서브 패턴이 모두 발견되지 않으면, 일부 서브패턴이 발견된 것으로 하고 서브 데이터의 현재 포지션에서 1 바이트를 더하여 S709 단계로 돌아간다(S729, S731).
도 14는 본 발명의 문법적 형식이 정해지지 않은 패턴 데이터에 대한 패턴 매칭 방법을 설명하기 위한 흐름도이다.
본 패턴 매칭 시스템으로 서브 데이터가 입력된다(S801). 해시값 생성부(30)는 해시함수를 적용하여 서브 데이터에 대한 해시값을 생성한다(S803).
해시값 매칭부(60)는 해시 매처 테이블(43)을 이용하여 해시 매칭 동작을 수행한다. 즉, 서브 데이터에 대한 해시값이 해시 매처 테이블(43)에 존재하는지 여부를 확인하기 위한 매칭을 수행한다(S805).
해시값 매칭부(60)의 해시 매칭 동작 수행 결과, 현재 매칭 대상인 서브 데이터가 해시 매처 테이블(43)과 일치하는 것으로 판단되면(S807-Y), 서브패턴 매칭부(20)에서 서브 패턴 매칭 동작을 수행한다(S809). S809 단계는 라이트 패턴 매칭과 정밀 패턴 매칭을 포함할 수 있다.
서브패턴 매칭부(20)의 서브 패턴 매칭 수행 결과, 현재 매칭 대상인 서브 데이터가 서브 매처 테이블(44)과 일치하는 것으로 판단되면(S811-Y), 서브 데이터와 매칭된 패턴 데이터가 복잡한 패턴에 해당하는 것인지의 여부를 판단한다(S813).
S813 단계에서, 서브 데이터가 복잡한 패턴에 해당하는 패턴 데이터에 해당하는 것으로 판단되면(S813-Y), 서브 패턴 매트릭스(45)에 패턴 매칭 결과를 저장한다(S815).
이후, 풀패턴 매칭부(50)에서 서브 패턴 매트릭스(45)를 참조하여 패턴 데이터를 구성하는 모든 서브 패턴이 존재하는지 여부를 확인하고(S817). 모든 서브 패턴이 존재하는 것으로 판단되면(즉, 서브 데이터와 패턴 데이터가 일치하는 것으로 판단되면)(S819-Y), 결정부(10)는 타겟 데이터에 패턴이 존재하는 것으로 판단한다(S821).
S819 단계에서, 서브 패턴 매트릭스(45)에 패턴 데이터를 구성하는 모든 서브 데이터가 존재하지 않은 경우(S819-N), 결정부(10)는 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인 경우(S823-Y)에는 타겟 데이터에 패턴이 존재하지 않는 것으로 판단한다(S825).
또한, S811 단계에서, 서브 데이터가 서브 매처 테이블(44)과 일치하지 않는 것으로 판단되면(S811-N), 현재 매칭 대상인 서브 데이터가 마지막 서브 데이터인지를 판단하여 마지막 서브 데이터인 경우에는 타겟 데이터에 패턴이 존재하지 않는 것으로 판단한다(S825).
상술한 바와 같이, 도 14에 도시한 패턴 매칭 방법은 본 패턴 매칭 시스템으로 입력되는 타겟 데이터의 패턴 종류가 규정되지 않은 경우에 해당하는 것으로, 1차적으로 문법적으로 정해진 간단한 패턴에 해당하는 것인지를 판단하여 이에 해당할 경우 더 이상 단계를 진행하지 않고, 이에 해당하지 않을 경우 2차적으로 문법적으로 정해진 복잡한 패턴에 해당하는 것인지를 판단한다. 그러므로, 타겟 데이터의 패턴 종류가 규정되어 있지 않더라도 패턴 매칭을 정확하게 수행할 수 있다.
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시 예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10 : 결정부 20 : 서브패턴 매칭부
22 : 라이트 패턴 매칭부 24 : 정밀 패턴 매칭부
30 : 해시값 생성부 40 : 저장부
50 : 풀패턴 매칭부 60 : 해시값 매칭부
70 : 테이블 생성부

Claims (27)

  1. 패턴 매칭 시스템을 이용한 패턴 매칭 방법으로서,
    상기 패턴 매칭 시스템은, 정밀 패턴 매칭부와 하드웨어 로직으로 구성된 검색 엔진을 포함하며,
    상기 패턴 매칭 방법은,
    상기 하드웨어 로직으로 구성된 검색 엔진이, 타겟 데이터를 구성하는 복수의 서브 데이터를 읽어 들여 순차적으로 저장하는 단계;
    상기 하드웨어 로직으로 구성된 검색 엔진이, 멀웨어 패턴들 각각에 대한 해시값을 포함하는 해시 매처 테이블을 저장하는 단계;
    상기 하드웨어 로직으로 구성된 검색 엔진이, 상기 해시 매처 테이블과, 순차적으로 저장된 서브 데이터의 해시 값을 매칭시키는 단계;
    상기 하드웨어 로직으로 구성된 검색 엔진이, 상기 해시 매처에 의한 해시 값 매칭이 성공한 경우의 서브 데이터를 제1버퍼에 저장하는 단계;
    상기 하드웨어 로직으로 구성된 검색 엔진이, i)상기 제1버퍼에 저장된 서브 데이터와 ii) 서브 매처 테이블을 매칭시키는 라이트 패턴 매칭 단계; 및
    상기 하드웨어 로직으로 구성된 검색 엔진이, 상기 라이트 패턴 매칭 단계의 수행 결과 매칭이 성공한 경우의 서브 데이터를 제2 버퍼에 저장하는 단계;를 포함하며,
    상기 서브 매처 테이블은 멀웨어 패턴들을 포함하며,
    상기 라이트 패턴 매칭 단계는, 상기 서브 매처 테이블에서 해시 값 매칭이 성공한 멀웨어 패턴과 상기 제1 버퍼에 저장된 서브 데이터를 매칭시키는 단계이고,
    상기 정밀 패턴 매칭부가, 상기 제2 버퍼에 저장된 서브 데이터와 상기 라이트 패턴 매칭 단계의 수행 결과 매칭이 성공한 경우의 멀웨어 패턴을 매칭시키는 것을 특징으로 하는 패턴 매칭 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 정밀 패턴 매칭부에 의한 매칭 결과는 서브 패턴 매트릭스에 기록되는 것을 특징으로 하는 패턴 매칭 방법.
  5. 제1항에 있어서,
    상기 패턴 매칭 시스템은 풀 패턴 매칭부를 더 포함하며,
    상기 풀 패턴 매칭부는, 상기 서브 패턴 매트릭스에 포함된 모든 서브 패턴에 대하여, 상기 서브 패턴 매칭이 모두 성공하였는지 여부를 확인하는 것을 특징으로 하는 패턴 매칭 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 라이트 패턴 매칭 단계에서, 상기 서브 데이터의 일부는, 상기 서브 데이터의 처음 값, 중간 값 및 마지막 값 중 적어도 어느 하나인 것을 특징으로 하는 패턴 매칭 방법.
  8. 제1항에 있어서,
    상기 해시 매처 테이블은, 멀웨어 패턴의 해시(hash) 값이 기재되는 해시값 항목과, 상기 멀웨어 패턴이 기재되는 항목을 포함하는 형태 및 상기 해시값이 기재되는 해시값 항목과, 상기 멀웨어 패턴의 해시값과 상기 해시값 항목에 기재된 해시값의 일치 여부를 나타내는 항목을 포함하는 형태 중 하나로 구성된 것을 특징으로 하는 패턴 매칭 방법.
  9. 제1항에 있어서,
    상기 서브 매처 테이블은 멀웨어 패턴의 해시값이 기재되는 해시값 항목과 패턴 데이터 항목을 포함하며,
    상기 패턴 데이터 항목에, 상기 서브 매처 테이블에 포함된 멀웨어 패턴들의 각각이 상기 해시값에 대응되어 기재된 것을 특징으로 하는 패턴 매칭 방법.
  10. 제9항에 있어서,
    상기 서브 매처 테이블은, 상기 멀웨어 패턴의 각각의 중간 값을 기재하는 중간 값 항목과, 마지막 값을 기재하는 마지막 값 항목을 더 포함하는 것을 특징으로 하는 패턴 매칭 방법.
  11. 삭제
  12. 제9항에 있어서,
    상기 서브 매처 테이블은, 상기 멀웨어 패턴들 각각의 해시값이 서로 충돌되는지 여부를 나타내는 충돌패턴의 오프셋(offset) 값을 나타내는 충돌패턴 오프셋 항목을 더 포함하는 것을 특징으로 하는 패턴 매칭 방법.
  13. 제12항에 있어서,
    상기 각 멀웨어 패턴의 해시값이 서로 충돌된 경우, 해시값이 서로 충돌된 패턴들은 상기 충돌패턴 오프셋 값에 의해 서로 링크되는 것을 특징으로 하는 패턴 매칭 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 패턴 매칭 시스템으로서,
    하드웨어 로직으로 구성된 검색 엔진; 및
    정밀 패턴 매칭부;를 포함하며,
    상기 검색 엔진은,
    타겟 데이터를 읽어 들이는 메모리 인터페이스;
    상기 메모리 인터페이스가 읽어 들인 타겟 데이터를 구성하는 복수의 서브 데이터를 순차적으로 입력 받아 저장하는 제1 버퍼와 제2 버퍼;
    멀웨어 패턴들 각각에 대한 해시값을 포함하는 해시 매처 테이블을 저장하는 메모리;
    상기 해시 매처 테이블과, 상기 제1 버퍼 또는 제2 버퍼에 저장된 타겟 데이터를 구성하는 복수의 서브 데이터 중 어느 하나의 해시 값을 매칭시키는 해시 매처;
    상기 해시 매처에 의한 해시 값 매칭이 성공한 경우의 서브 데이터를 저장하는 해시 Q버퍼;
    i) 상기 해시 Q버퍼에 저장된 서브 데이터의 일부와 ii) 상기 해시 매처에 의해 해시 값 매칭이 성공한 멀웨어 패턴을 매칭시키는 라이트 패턴 매처; 및
    상기 라이트 패턴 매처에 의한 매칭이 성공한 경우의 서브 데이터를 저장하는 스캔 Q버퍼;를 포함하며,
    상기 정밀 패턴 매칭부는 상기 스캔 Q버퍼에 저장된 서브 데이터와 상기 라이트 패턴 매처에 의한 매칭이 성공한 멀웨어 패턴을 매칭시키는 것을 특징으로 하는 패턴 매칭 시스템.
  23. 제22항에 있어서,
    상기 검색엔진은,
    상기 해시 매처에 의한 해시 값 매칭이 성공할 경우, 상기 해시 값 매칭이 성공한 해시 값이 저장된 메모리 주소 값을 발생시키는 오프셋 어드레스 제너레이터;를 더 포함하며,
    상기 해시 Q버퍼는 상기 오프셋 어드레스 제너레이터에 의해 발생된 메모리 주소 값과 서브 데이터를 대응시켜서 저장하는 것을 특징으로 하는 패턴 매칭 시스템.
  24. 제22항에 있어서,
    상기 해시 매처 테이블에 포함된 해시값을 생성하는 패턴 해시값 생성기;를 더 포함하는 것을 특징으로 하는 패턴 매칭 시스템.
  25. 제22항에 있어서,
    상기 정밀 패턴 매칭부에 의한 매칭 결과를 저장하는 서브 패턴 매트릭스;를 더 포함하며,
    상기 서브 패턴 매트릭스를 참조하여, 상기 타겟 데이터에 멀웨어 패턴이 포함하는지 여부를 판단하는 풀패턴 매칭부;를 더 포함하는 것을 특징으로 하는 패턴 매칭 시스템.
  26. 제22항에 있어서,
    상기 해시 매처는,
    상기 제1 버퍼와 상기 제2 버퍼로부터 번갈아 가면서 서브 데이터를 입력 받고, 입력 받은 서브 데이터의 해시 값을 상기 해시 매처 테이블과 매칭하는 것을 특징으로 하는 패턴 매칭 시스템.
  27. 삭제
KR1020110049249A 2010-05-27 2011-05-24 패턴 매칭 방법 및 시스템 KR101309337B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/116,419 US9392005B2 (en) 2010-05-27 2011-05-26 System and method for matching pattern
JP2011119458A JP5378452B2 (ja) 2010-05-27 2011-05-27 パターンマッチング方法及びシステム
EP11167897A EP2390814A3 (en) 2010-05-27 2011-05-27 System and method for matching pattern

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020100049566 2010-05-27
KR20100049566 2010-05-27
KR20100052981 2010-06-04
KR1020100052981 2010-06-04

Publications (2)

Publication Number Publication Date
KR20110130348A KR20110130348A (ko) 2011-12-05
KR101309337B1 true KR101309337B1 (ko) 2013-09-17

Family

ID=45499194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110049249A KR101309337B1 (ko) 2010-05-27 2011-05-24 패턴 매칭 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101309337B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100770357B1 (ko) * 2007-06-04 2007-10-25 펌킨네트웍스코리아 (주) 시그너처 해싱을 이용하여 시그너처 매칭 회수를 줄이는고성능 침입 방지 시스템 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100770357B1 (ko) * 2007-06-04 2007-10-25 펌킨네트웍스코리아 (주) 시그너처 해싱을 이용하여 시그너처 매칭 회수를 줄이는고성능 침입 방지 시스템 및 그 방법

Also Published As

Publication number Publication date
KR20110130348A (ko) 2011-12-05

Similar Documents

Publication Publication Date Title
JP5378452B2 (ja) パターンマッチング方法及びシステム
US10339312B2 (en) System and method for detecting malicious compound files
US8479296B2 (en) System and method for detecting unknown malware
AU2020223632B2 (en) System and method for detecting data anomalies by analysing morphologies of known and/or unknown cybersecurity threats
US9122407B2 (en) Deduplication device and deduplication method
US8656494B2 (en) System and method for optimization of antivirus processing of disk files
CN110659484B (zh) 生成对于文件信息的请求以执行防病毒扫描的系统和方法
EP3079091B1 (en) Method and device for virus identification, nonvolatile storage medium, and device
KR20180133726A (ko) 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
US9118625B2 (en) Anti-malware system, method of processing data in the same, and computing device
JP6777612B2 (ja) コンピュータシステムにおけるデータ損失を防止するためのシステム及び方法
CN108319853B (zh) 病毒特征码处理方法及装置
KR101309337B1 (ko) 패턴 매칭 방법 및 시스템
Breitinger et al. Security Aspects of Fuzzy Hashing
RU2628922C1 (ru) Способ определения похожести составных файлов
EP3588350B1 (en) Method and system for generating a request for information on a file to perform an antivirus scan
RU2659739C1 (ru) Способ контроля доступа к составным файлам
KR102039498B1 (ko) 악성코드 격리 시스템 및 방법
JP2022522383A (ja) 既知及び/又は未知のサイバーセキュリティ脅威の形態素解析によりデータ異常を検出するシステム及び方法
WO2014147633A1 (en) Standalone portable device for detecting and removing virus or malware or spyware

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee