KR101334583B1 - 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치 - Google Patents

심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101334583B1
KR101334583B1 KR1020117024150A KR20117024150A KR101334583B1 KR 101334583 B1 KR101334583 B1 KR 101334583B1 KR 1020117024150 A KR1020117024150 A KR 1020117024150A KR 20117024150 A KR20117024150 A KR 20117024150A KR 101334583 B1 KR101334583 B1 KR 101334583B1
Authority
KR
South Korea
Prior art keywords
pattern
data packet
block
segment
dfa
Prior art date
Application number
KR1020117024150A
Other languages
English (en)
Other versions
KR20110138237A (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 알까뗄 루슨트
Publication of KR20110138237A publication Critical patent/KR20110138237A/ko
Application granted granted Critical
Publication of KR101334583B1 publication Critical patent/KR101334583B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Image Analysis (AREA)

Abstract

가변 스트라이드 다중 패턴 정합 장치는 수정된 선별 알고리즘에 따라 패턴 및 입력 스트림을 가변 크기 블록으로 분할한다. 가변 스트라이드 패턴 세그먼트는 입력 스트림 내의 패턴을 검출하기 위해 사용되는 가변 스트라이드 이산 유한 자동화(VS-DFA)를 위한 블록 심볼 알파벳을 결정하는데 사용된다. 본 출원은 네트워크 침입 검출 및 보호 시스템, 게놈 정합 및 포렌식(forensic)을 포함한다. 선별 알고리즘의 수정은 패턴 및 입력 스트림의 분리문자의 위치를 결정하기 위해 공간 해시값을 사용하는 것을 포함한다. 분리문자는 세그먼트의 시작 및 종료점을 마킹한다. 다양한 실시예에서, 패턴은 헤드, 코어 및 테일 블록으로 분할된다. 이 접근법은 메모리, 메모리 대역폭 및 프로세스 사이클 효율적인 결정적인 고속 라인 속도 패턴 정합을 제공한다.

Description

심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치{VARIABLE-STRIDE STREAM SEGMENTATION AND MULTI-PATTERN MATCHING}
본 발명은 통신 및 컴퓨터 네트워크에 관한 것으로서, 특히 콘텐트-검사 시스템 용례를 위한 다중 패턴 정합에서 가변 스트라이드 블록(variable-stride-block) 프로세싱의 사용에 관한 것이다.
이 섹션은 본 발명(들)의 더 양호한 이해를 용이하게 하는 것을 도울 수 있는 양태를 소개한다. 따라서, 이 섹션의 서술은 이 관점에서 숙독되어야 하고, 종래 기술에서 있는 것 또는 종래 기술에 있지 않는 것에 대한 용인으로서 이해되어서는 안된다.
다중 패턴 정합은 서명 기반(signature-based) 네트워크 침입 검출 및 방지 시스템(NIDS/NIPS 또는 NIDPS)과 같은 콘텐트-검사 시스템에 의해 사용되는 핵심 기능이다. 이러한 시스템은 트래픽이 네트워크 또는 호스트를 포함하는 네트워크의 구성 요소에 잠재적으로 유해할 수 있는지 여부를 판단하기 위해 네트워크 트래픽 내의 특정 서명 또는 패턴의 신뢰적인 실시간 검출에 의존한다.
통상적으로, 콘텐트-검사 시스템은 다수의 이러한 서명을 동시에 탐색할 수 있다. 라인 속도가 10 Gbps를 넘어서 증가함에 따라, 다중 패턴 정합을 효율적으로 취급하기 위한 방법이 점점 더 중요하게 되고 있다.
역사적으로, 패턴 정합은 결정적 유한 자동화(deterministic finite automaton; DFA)를 사용하여 성취되어 왔다. DFA는 각각의 상태 및 입력 심볼에 대해 단지 하나의 다음 상태로의 전이가 존재하는 유한 상태 머신이다. DFA 상의 정보는 그대로 본 명세서에 참조로서 포함되어 있는 길 에이.(Gill A.)의 유한 상태 머신의 이론의 소개( Introduction to the Theory of Finite - State Machine ), 맥그로-힐 출판사, 1992년에서 찾아볼 수 있다.
기본 유형의 DFA-기반 패턴 정합에서, 네트워크 트래픽 스트림은 동시에 1 바이트 또는 문자를 프로세싱한다. 이러한 DFA는 n개의 단일 바이트 패턴을 프로세싱하기 위해 n개의 상태를 필요로 하고 상태당 t개의 전이를 필요로 하는데, 여기서 t는 패턴 알파벳에서의 심볼의 수이다. 그러나, 현대식 네트워크의 라인 속도에서 클럭당 1 바이트를 프로세싱하는 것은 너무 느리다.
기본적인 DFA의 처리량을 향상시키는 일 방법은 각각의 정합 단계에서 입력 데이터 스트림의 다중 바이트(즉, 블록)를 스캐닝하는 것이다. 이 블록-배향된 DFA 접근법은 블록 내의 바이트의 수에 비례하는 바이트-배향된 DFA에 대한 속도 증가를 제공하지만, 이는 다른 문제점을 제시한다. 특히, 패턴은 블록 내의 임의의 오프셋에서 시작하거나 종료할 수 있기 때문에, 블록-배향된 DFA는 (1) s회 반복되고, 여기서 s는 DFA의 블록 크기 또는 "스트라이드"이고, 또는 (2) 상태마다 다수의 더 많은 전이를 제공할 필요가 있을 수 있다.
예를 들어, 패턴 정합에 대한 제 1 블록-배향된 DFA 접근법에서, 패턴은 s-바이트 블록으로 분할되고, 블록은 DFA를 구성하는데 사용된다. 이는 동일한 패턴에 대해 대응 바이트-배향된 DFA보다 적은 수의 상태 및 전이를 갖는 DFA를 생성한다. 그러나, DFA의 s개의 인스턴스는 병렬로 실행될 필요가 있고, 각각 1-바이트 오프셋을 갖는 동일한 입력 데이터 스트림을 수용한다(어떠한 패턴도 간과되지 않는 것을 보장하기 위해). 입력 스트림이 ...babbaba...이면, 시퀀스 ...|ba|bb|ab|a... 및 그 1-바이트 이동(shift)된 버전 ...b|ab|ba|ba|...는 모두 정합이 누락되지 않는 것을 보장하기 위해 프로세싱될 필요가 있다. 이 접근법에 의해, 더 높은 처리량은 더 높은 메모리 대역폭 사용을 대가로 성취되고(병렬로 정합 엔진의 s개의 인스턴스를 실행하는 결과), 이 메모리 대역폭은 블록 크기(s)에 비례하여 성장할 필요가 있다.
대안적으로, 전이가 스트림 내에서 발생할 수 있는 모든 가능한 s-바이트 패턴을 고려하는 단일의 DFA를 구성할 수 있다. 더 큰 DFA를 사용함으로써, 정합 엔진의 단일의 인스턴스는 누락된 정합의 가능성 없이 입력 데이터 스트림을 스캐닝하는데 사용될 수 있다. 이 경우에 처리량 이득은 더 높은 메모리 대역폭보다는 더 높은 메모리 사용의 대가이다. 임의의 상태로부터의 전이의 수는 ts만큼 클 수 있고, 여기서 t는 알파벳의 크기라는 것이 또한 주목되어야 한다. 실제로, t=26인 영어 알파벳을 사용하는 NIDS 서명 세트에 대해, 메모리 사용은 2 바이트의 블록 크기(s)에 대해서도 조차 상당히 높아지게 된다.
따라서, 현존하는 패턴 정합 접근법이 갖는 기초적인 문제점은 특히 현재 및 예상된 네트워크 인터페이스의 라인 속도에서 실행될 수 있는 시스템에 대해 과잉의 메모리 또는 메모리 대역폭 요건들이다.
일 실시예에서, 본 발명은 입력 심볼 스트림을 심볼 패턴에 정합하기 위한 머신 구현식 방법이다. 입력 심볼 스트림은 상이한 길이의 적어도 2개의 입력 스트림 세그먼트를 산출하기 위해 가변 크기 블록의 심볼로 분할된다. 적어도 2개의 입력 스트림 세그먼트의 각각은 심볼 패턴의 패턴 세그먼트와 비교되고, 여기서 패턴 세그먼트는 심볼 패턴보다 적은 수의 심볼을 갖는다.
다른 실시예에서, 본 발명은 입력 심볼 스트림을 분할하기 위한 머신 구현식 방법이다. 입력 심볼 스트림 내에 k-그램의 심볼이 형성되고, 여기서 (k>0)이다. 값은 각각의 k-그램에 대해 계산된다. 하나 이상의 특정값이 길이 w의 슬라이딩 윈도우 내의 k-그램 값으로부터 식별되고, 여기서 (k<w)이다. 입력 심볼 스트림은 입력 심볼 스트림 내의 하나 이상의 특정값의 위치에 기초하여 세그먼트로 범위가 정해지고, 여기서 적어도 2개의 세그먼트는 상이한 길이를 갖는다.
본 발명의 다른 양태, 특징 및 장점은 이하의 상세한 설명, 첨부된 청구범위 및 유사한 도면 부호가 유사한 또는 동일한 요소를 식별하는 첨부 도면으로부터 더 완전히 명백해질 것이다.
도 1은 본 발명의 다양한 실시예에 따른 네트워크 침입 검출 및 방지 시스템을 포함하고 적어도 2개의 자율 시스템(autonomous system)에 걸치는 통신 네트워크의 블록 다이어그램.
도 2는 도 1의 네트워크 침입 검출 및 방지 시스템(140)의 블록 다이어그램.
도 3은 도 2의 가변 스트라이드 다중 패턴 정합(VSMPM) 시스템(230)의 블록 다이어그램.
도 4는 수정된 선별(winnowing) 프로세스에 기초하는 본 발명의 분할 프로세스의 예의 도면.
도 5는 본 발명의 다양한 실시예와 관련된 상위 레벨 프로세스를 도시하는 흐름도.
도 6은 본 발명의 다양한 실시예에 따른 다양한 패턴의 예시적인 분할을 도시하는 도면.
도 7은 본 발명의 다양한 실시예에 따른 도 6의 예에 사용된 패턴에 대한 예시적인 상태 전이 그래프.
도 8은 본 발명의 다양한 실시예에 따른 도 2의 VSMPM 시스템(230)을 도시하는 도면.
도 9는 본 발명의 다양한 실시예에 따른 도 7의 예시적인 상태 전이 그래프를 지원하는 예시적인 상태 전이 및 정합 테이블을 도시하는 도면.
도 10은 본 발명의 다양한 실시예에 따른 코어가 없는(coreless) 패턴 및 분할 불가능한 패턴을 위한 예시적인 TCAM 저장 테이블을 도시하는 도면.
도 11은 본 발명의 다양한 실시예에 따른 입력 스트림 세그먼트를 위한 2개의 규칙에 대응하는 예시적인 흐름도 (a) 및 (b)를 도시하는 도면.
도 1은 트래픽 흐름을 공유할 수 있는 2개의 자율 시스템(110, 120)을 도시한다. 자율 시스템(110)은 사설, 기업 또는 액세스 네트워크를 표현하고, 자율 시스템(120)은 상이한 사설, 기업, 액세스 네트워크 또는 인터넷을 표현한다. 각각의 자율 시스템은 다양한 클라이언트, 호스트, 서버 및 라우터를 포함한다.
자율 시스템(110)은 특히 경계 라우터(130)를 포함한다. 경계 라우터(130)는 자율 시스템(110) 내외로 흐르는 트래픽이 전부가 아닌 경우 대부분을 라우팅하고, 특정 트래픽 흐름을 차단하는 능력을 갖는다. 경계 라우터(130)는 네트워크 침입 검출 및 방지 시스템(NIDPS)(140)을 포함한다. NIDPS 시스템(140)은 경계 라우터(130)를 통해 흐르는 트래픽을 모니터링하고 경계 라우터(130)에 지시하는 기능을 하는데, 이 트래픽 흐름은 의심스러운 또는 악의적인 데이터를 포함할 수 있다. 예를 들어, 자율 시스템(120) 내의 서버(195)는 바이러스 또는 다른 악의적인 코드 및/또는 데이터를 포함하는 스트림을 자율 시스템(110) 내의 하나 이상의 클라이언트 또는 호스트 디바이스에 송신할 수 있다. 악의적인 코드 및/또는 데이터와 관련된 패턴은 NIDPS 시스템(140)에 의해 검출될 수 있다. NIDPS 시스템(140)은 이들 코드 및/또는 데이터를 직접 차단하거나 경계 라우터(130)에 악의적인 흐름을 경보할 수 있고, 이 경우에 경계 라우터(130)는 공격 패킷을 드롭함으로서 또는 IP 소스 어드레스에 의해 흐름을 차단함으로써 흐름을 차단할 수 있다. NIDPS 시스템(140)은 경계 라우터(130)의 부분으로서 도시되어 있지만, NIDPS 시스템(140)은 또한 라우터와 관련하여 동작하는 개별 네트워크 디바이스이거나 또는 프록시 또는 게이트웨이 서버의 부분으로서 구현될 수 있다. 본 발명에 따른 NIDPS 시스템의 다른 인스턴스는 또한 다른 라우터 또는 예를 들어 내부 라우터(190), 경계 라우터(180) 또는 서버(170)를 포함하는 네트워크 디바이스 상에 제시될 수 있다.
도 2는 본 발명의 일 실시예에 따른 도 1의 네트워크 침입 검출 및 방지 시스템(140)을 도시한다. NIDPS 시스템(140)은 프로세서(210), 메모리(220) 및 가변 스트라이드 다중 패턴 정합(VSMPM) 시스템(230)을 포함한다. VSMPM 시스템(230)은 스트림 입력(240)을 경유하여 검사 및 검출을 위해 경계 라우터(130)로부터 네트워크 트래픽을 수신하고, 선택적으로 스트림 출력(250)을 경유하여 경계 라우터(130)에 재차 원래 트래픽 또는 트래픽의 기밀 삭제된(sanitized) 서브세트를 전송한다. VSMPM 시스템(230)은 또한 경계 라우터(130)에 악의적인 패턴 검출 경보(260)를 출력한다. 이 경보는 제공된 트래픽이 하나 이상의 악의적인 또는 이상 패턴을 포함하는 것을 경계 라우터(130)에 통지한다. 다양한 실시예에서, 스트림 입력(240)은 트래픽 흐름 내의 악의적인 패턴의 검출의 작업에 무관할 수 있는 헤더, 암호화 및 다른 정보를 제거하기 위해 VSMPM 시스템(230)의 외부에서 사전 프로세싱되어 있는 데이터를 포함할 수 있다. 이러한 사전 프로세싱은 프로토콜 분석, 프로토콜 랩퍼 스트립핑(wrapper stripping) 및/또는 페이로드 재조합을 포함할 수 있다. 다양한 대안적인 배열이 당업자에게 이해될 수 있는 바와 같이 사용될 수 있다.
전술된 바와 같이, 종래 기술의 블록-배향된 DFA와 관련된 다수의 문제점은 정합될 잠재적인 블록 패턴의 위치가 입력 스트림 내에서 알려지지 않는 사실로부터 기인한다. 정합될 블록 패턴은 상당한 프로세싱, 메모리 및/또는 메모리 대역폭 페널티를 초래하는 입력 스트림 내의 유사한 길이의 각각의 블록과 비교될 필요가 있다. 그러나, 패턴 정합 복잡성은, 이들 패턴이 입력 스트림 내에 존재할 때 입력 스트림이 정합될 패턴에 대응하는 블록으로 분할될 수 있으면 상당히 감소될 수 있다. 예를 들어, 텍스트열 "...ckbrownfoxjumpedoverth..."에서 단어 "over"에 대한 정합을 발견하는 문제점을 고려한다. 인간의 시각 시스템은 문자열의 종료점 부근의 친숙한 패턴 "over"의 존재를 용이하게 검출할 수 있지만, 동일한 작업은 머신에 대해서는 더 어렵다. 특히, 전통적인 블록-배향된 DFA는 먼저 패턴 "over"를 "ckbr"과, 이어서 "kbro"와, 이어서 "brow" 등과 비교하여, 입력 스트림으로부터 4-바이트 문자열 "over"가 템플릿에 대해 비교되고 정합이 발견될 때까지 1 바이트만큼 입력 스트림을 연속적으로 시프트할 필요가 있을 것이다.
어느 정도로 입력 스트림이 먼저 적절하게 분할되면, 문제점의 복잡성은 감소될 수 있다는 것이 이해될 수 있다. 예를 들어, 입력 스트림 "...ckbrowfoxjumpedoverth..."가 먼저 "...cklbrown|fox|jumped|over|th"...로 분할되면, 정합으로의 몇 개의 상이한 접근법이 취해질 수 있다. 예를 들어, 일 접근법에서, 패턴 "over"가 스트림 내에서 발생되는지를 판단하기 위해, 길이 4의 임의의 세그먼트가 문자열 내에 존재하는지를 먼저 판단할 수 있고, 만일 그러하면 단지 이들 문자열만을 정합될 패턴과 비교한다. 대안적으로 n-바이트 패턴이 세그먼트의 길이와 무관하게 입력 스트림의 각각의 세그먼트의 첫번째 n 바이트와 블록 기초로 비교될 수 있다. 예를 들어, "over"는 정합이 발견될 때까지 연속적으로 "brown", "fox", "jumped" 및 마지막으로 "over"에 비교될 수 있다. 이는 각각의 비교에 대해 1 문자만큼 입력 스트림을 시프트함으로써 유도되는 크기 4의 모든 블록과 "over"를 비교하는 것보다 간단할 수 있다.
따라서, 본 발명의 실시예에서, 입력 스트림은 바이트 단위(byte-by-byte) 방식으로 프로세싱되지 않을 수 있지만, 대신에 위치적으로 독립적이고 고유한 분할 프로세스에 의해 서로로부터 구분된 더 큰 기초 단위로 프로세싱될 수 있다. 본 발명의 실시예에서, 입력 스트림 및 정합될 패턴은 가변 크기 다중 바이트 블록으로 고유하고 명백하게 분할된다. 패턴 정합은 이어서 상태 전이를 위한 심볼의 새로운 알파벳으로서 이들 가변 크기 블록(또는 원자 단위)을 사용하는 블록-배향된 DFA를 사용하여 수행된다. 이들 원자 단위에 대한 1 초과 평균 바이트 크기는 패턴 정합 속도에서 상당한 이득을 초래한다. 이 방법은 또한 각각의 상태 전이가 이제 1 초과의 바이트에 걸치기 때문에 DFA 상태 및 상태 전이의 수를 감소시킨다. 이 접근법이 이제 도 3을 참조하여 설명된다.
도 3은 본 발명의 다양한 실시예에 따른 도 2의 가변 스트라이드 다중 패턴 정합 시스템(230)을 도시한다. VSMPM 시스템(230)은 스트림 분할 유닛(310), 가변 스트라이드 블록 정합 유닛(320) 및 선택적 패킷 드롭퍼(330)를 포함한다. 동작시에, 스트림 분할 유닛(310)은 스트림 입력(240)으로부터 입력 데이터를 수신하고, 스트림을 세그먼트로 분할하고, 스트림 세그먼트(340)를 가변 스트라이드 블록 정합 유닛(320)에 출력한다. 가변 스트라이드 블록 정합 유닛(320)은 정합될 패턴으로부터 유도된 세그먼트로 구성된 다중 바이트 원자 심볼의 알파벳에 대해 세그먼트를 비교하고, 이들 다중 바이트 원자 심볼에 기초하여 DFA를 사용하여 특정 패턴이 입력 스트림에 존재하는지 여부를 판정한다. 악의적인 패턴이 입력 스트림 내에서 검출되면, 가변 스트라이드 블록 정합 유닛(320)은 경보(260)를 출력하여, 대응 트래픽이 의심스러운 및/또는 악의적인지 그리고/또는 차단되거나 또는 드롭되어야 하는지를 외부 유닛에 지시한다. 선택적으로, VSMPM 시스템(230)의 몇몇 실시예에서, 가변 스트라이드 블록 정합 유닛(320)은 대안적으로 스트림 출력(250)을 따라 입력 스트림을 통과시키기 전에 입력 스트림으로부터 악의적인 콘텐트를 제거하는 기능을 하는 선택적인 패킷 드롭퍼에 드롭 제어 신호(350)를 출력할 수 있다. 몇몇 구현예에서, 어떠한 스트림 출력도 VSMPM 시스템(230)으로부터 제공되지 않는다. 단지 단일의 가변 스트라이드 블록 정합 유닛이 명료화를 위해 도 3에 도시되어 있지만, 당업자에 의해 이해될 수 있는 바와 같이, 다중의 병렬 인스턴스가 다중 패턴 정합을 지원하도록 제공될 수 있다. 대안적으로, 본 발명의 몇몇 실시예에서, 도 3의 가변 스트라이드 블록 정합 유닛(320)은 다중 패턴의 정합을 동시에 지원한다.
일 실시예에서, 본 발명은 데이터의 임의의 스트림을 고유하고 명백하게 분할하는 방법이다. 가변 크기 블록 DFA는 패턴 정합 및 모호성 해결을 위해 사용된다. 이 분할 및 가변 블록 크기 DFA 프로세싱의 조합은 패턴 정합 문제점에 적용된다. 당업자에 의해 이해될 수 있는 바와 같이, 광범위한 분할 기술이 본 발명을 위해 이용될 수 있다. 일반성의 손실 없이, 일 예시적인 방법이 이하에 설명된다.
분할
본 발명의 실시예에서 이용된 분할 체계는 "선별" 알고리즘으로서 공지된 대중적인 문서 핑거프린팅 알고리즘에 기초한다. 선별 알고리즘 상의 더 많은 정보는 그 내용이 그대로 본 명세서에 참조로서 포함되어 있는 에스. 쉬라이머(S. Schleimer) 등의 "선별: 문서 핑거프린팅을 위한 로컬 알고리즘(Winnowing: Local Algorithms for Document Fingerprinting)", ACM SIGMOD 2003에서 찾아볼 수 있다. 다른 핑거프린팅 체계가 대안적으로 사용될 수 있지만, 선별 체계는 본 출원에 대해 특히 바람직한 특정 특성을 갖는다.
선별 알고리즘이 상이한 용례를 위해 제안되어 있기 때문에, 알고리즘은 본 발명의 패턴 및 데이터 스트림 블록 생성 발명을 위해 수정된다. 선별 알고리즘의 양호한 특징은 위치 독립성이다. 이는 파일에 몇몇 새로운 텍스트를 추가하는 것이 보존되는 2개의 파일 사이의 모든 원래의 정합을 여전히 생성할 수 있는 것을 보장한다.
알고리즘은 이하와 같이 동작한다. 먼저, s개의 연속적인 문자의 모든 블록의 해시값을 계산한다. 선별 페이퍼에서, 이들 블록은 "k-그램"이라 명명되고, 여기서 k=s라는 것을 주목하라. r개의 문자의 스트림이 (r-s+1) 해시값을 생성한다. 둘째로, 윈도우 내의 최소 해시값을 위치 지정하기 위해 크기(w)의 슬라이딩 윈도우를 사용한다. 타이(tie)는 최우측 최소값을 선택함으로써 파괴된다. 이들 선택된 해시값이 선별 체계 내의 데이터 스트림의 핑거프린트로서 사용되지만, 본 발명에 있어서, 이들은 입력 데이터 스트림의 세그먼트에 대한 분리문자(delimiter) 뿐만 아니라 정합될 패턴의 세그먼트에 대한 분리문자를 식별하는데 사용된다.
도 4는 해시값이 0 내지 255의 범위에 있는 분할 예(400)를 도시한다. 블록 크기 또는 스트라이드(s)는 슬라이딩 윈도우의 크기 w=3에 의해 경계 정해진다는 것을 주목하라. 도 4는 (i) 입력 스트림(410), (ii) 블록 해시(420) 및 블록 해시(430)와 같은 k=2 바이트 블록 해시, (iii) 블록 해시(430)와 같은 선택된 블록 해시 및 (iv) 분할된 출력 스트림(440)을 포함한다. 동작시에, 해시는 입력 스트림 내의 모든 연속적인 k-바이트 블록을 위해 컴퓨팅되고, w-바이트 윈도우 내의 최하위 블록 해시값이 특정 해시값으로서 식별된다. 선별 알고리즘에서, 이들 특정 해시값은 문서 핑거프린팅 목적으로 사용될 해시값의 비교적 균일하게 분포된 서브세트를 표현하도록 선택된다. 본 발명에 있어서, 이들 특정 해시값은 정합될 데이터의 세그먼트를 구분하는데 사용된다. 분리문자(450)는 예를 들어 바이트 문자열 "r|"로부터 바이트 문자열 "rve"를 분리한다. w=3 윈도우 내의 최소 해시값의 선택 및 k=2 바이트 해싱의 적용의 결과는 2 또는 3 바이트의 길이의 세그먼트를 갖는 분할된 출력 스트림(440)이다.
패턴 정합에 사용을 위해, 선별 알고리즘은 다수의 방식으로 수정된다. 악의적인 패턴은 짧을 수 있기 때문에, (w에 의해 경계가 정해진)블록 크기(s)는 패턴으로부터 의미 있는 수의 블록을 얻기 위해 비교적 작게 유지된다. 다양한 실시예에서, 패턴은 적어도 3개의 블록으로 분할된다. 따라서, k 및 w는 또한 작다(정합될 패턴의 길이의 1/3의 정도). 다른 한편으로, 더 큰 블록 크기(s)가 처리량에 대해 더 양호하여서, 정합될 패턴의 길이가 제공되면 가능한 한 크게 w를 형성하는 것이 바람직하다. 대체안으로서, 9 내지 20 바이트의 차수에서 관심의 패턴을 갖는 통상의 실시예에서, k는 1 또는 2로 선택되고, w는 약 3 내지 약 8의 범위일 수 있다.
해시 윈도우(w)는 작기 때문에, (w에 의해 경계가 정해진)최종 세그먼트의 스트라이드(s)는 또한 작을 수 있다. 따라서, s-바이트 DFA는 전술된 선별 페이퍼 내에 설명된 라빈(Rabin) 고속 해싱 기술을 사용할 필요가 없을 수도 있는 고속 하드웨어 및 고속 해시 함수로 구현될 수 있다. 추가로, 본 발명의 목표는 정합에 사용될 핑거프린트를 생성하기보다는 입력 데이터 스트림 및 패턴을 분할하는 것이기 때문에, 큰 해시값이 반드시 유리한 것은 아니다. 8 비트 또는 심지어 그 이하가 충분할 수 있다. 이는 효율적인 고속 하드웨어 구현에 대해 장점이다. 도 4에 도시된 바와 같이, 해시 윈도우의 해시값(예를 들어, 문자 "se"와 관련된 2-바이트 해시 윈도우에 대응하는 해시값(420))은 256 미만이다. 분리문자는 선택된 최소 해시값 이후가 되도록 설정된다는 것을 또한 주목해야한다(예를 들어, 분리문자(450)는 문자 "rve"에 대응하는 윈도우 내의 최저 해시값인 87의 해시값 후가 되도록 선택됨). 이는 임의의 블록의 크기가 k<w+2일 때 w보다 절대 길지 않은 것을 보장한다.
선별 알고리즘은 입력 스트림 내에 한 패턴이 출현하는 콘텍스트에 무관하게, 입력 스트림이 항상 동일한 블록의 시퀀스로 분할되는 점에서(이하에 설명될 수 있는 바와 같이 수용될 수 있는 몇몇 헤드 및 테일 패턴 예외를 가지고) 본 발명의 실시예에 대해 매우 유용한 "자체 동기화"(즉, 콘텍스트 독립성) 특성을 갖는다. 따라서, 본 발명의 분할 프로세스의 결과는 패턴 정합을 위한 DFA의 구성에서 원자 단위로서 사용될 수 있는 패턴 내의 고유의 세그먼트를 결정하는 것이다.
도 5는 본 발명의 다양한 실시예에 따른 분할 및 정합 프로세스를 예시하는 고레벨 흐름도(500)를 도시한다. 단계(510)에서, 사전 프로세싱 단계로서, 이후의 정합을 위한 관심이 있는 패턴은 본 발명에 따른 분할 프로세스를 사용하여 블록의 시퀀스로 먼저 분할된다. 이들 세그먼트는 이후의 사용을 위해 저장될 수 있거나 또는 블록-배향된 DFA의 구성에 사용될 수 있다. 단계(520)에서, 유사한 분할 프로세스가 입력 스트림에 적용된다. 마지막으로, 단계(530)에서, 정합될 패턴으로부터 유도된 세그먼트는 관심 패턴이 입력 데이터 스트림에 존재하는지 여부를 판단하기 위해 입력 데이터 스트림으로부터 유도된 세그먼트와 비교된다. 단계(530)의 비교는 정합될 패턴의 세그먼트를 사용하여 전개된 블록-배향된 DFA를 경유하여 수행될 수 있고, 이 세그먼트는 단계(510)에서 발생된다.
패턴의 분할 중에, 다중 세그먼트가 분할 파라미터 k 및 w에 대한 패턴의 크기에 따라 통상적으로 생성된다. 첫번째 세그먼트는 "헤드" 블록이라 칭하고, 마지막 세그먼트는 "테일" 블록이라 칭한다. 그 사이의 모든 다른 세그먼트는 "코어" 블록이라 칭한다. 도 6은 다양한 패턴의 분할(600)의 예를 도시한다. 분할(600)은 분할될 패턴(610), 패턴의 분할로부터 발생하는 헤드 세그먼트(620), 코어 세그먼트(630) 및 테일 세그먼트(640)를 포함한다. 예는 친숙한 문자 및 문자열을 사용하여 개념을 예시하지만 본 발명은 심볼 및 세그먼트로서 이들을 광범위하게 처리한다는 것에 주목해야한다. 몇몇 짧은 패턴은 단지 하나의 분리문자(즉, 어떠한 코어 세그먼트도 없고 패턴은 단지 헤드 및 테일 세그먼트로 이루어짐)를 갖거나 분리문자를 전혀 갖지 않을 수 있다는 것을 또한 주목해야한다. 이들 2개의 유형의 패턴은 "코어가 없는 패턴" 및 "분할 불가능한 패턴"이라 각각 칭한다. 도 6에서, "entire"는 코어가 없는 패턴이고, "set"는 분할 불가능한 패턴이다. 본 발명의 분할 체계는 이하의 특성을 갖는다.
특성 1: 임의의 세그먼트 블록의 크기는 범위 [1,w]에 있다. 테일 블록 크기는 범위 [k-1, w+k-2]에 있고, 분할 불가능한 패턴 크기는 범위 [1, w+k-2]에 있고, 코어가 없는 패턴 크기는 범위 [w+k-1, 2w+k-2]에 있다.
특성 2: 패턴이 데이터 스트림 내에 출현하면, 데이터 스트림을 분할하는 것은 패턴의 코어 블록과 정확하게 동일한 분리문자를 생성한다.
헤드 블록은 접두사에 의해 영향을 받을 수 있고 테일 블록은 접미사에 의해 영향을 받을 수 있기 때문에, 패턴의 헤드 및 테일 블록은 이들이 데이터 스트림 내에서 출현할 때 가외의 분리문자를 가질 수 있다는 것을 주목해야한다. 그러나, 코어 블록은 전적으로 패턴에 한정되고 콘텍스트로부터 격리된다. 이들 변경되지 않은 코어 블록은 패턴 정합의 탐색을 좁히는데 사용될 수 있다. 이는 이하에 의해 예시된다.
도 6의 패턴(S2)이 데이터 스트림 내에 출현한다고 가정한다. S2 직전에 출현하는 (w-1=3) 문자에 따라, 헤드 블록 "auth"는 가능하게는 "a|u|t|h", "au|th" 등으로 분할될 수 있다. 마찬가지로, 테일 블록 "te"의 분할은 데이터 스트림 내의 S2를 따르는 (w-1=3) 문자에 의해 결정된다. 그러나, 판단을 수행하는데 필요한 모든 문자(즉, a, u, t 및 h)는 분할 프로세스의 부분이기 때문에, 문자 "h" 후에 분리문자가 존재할 수 있는 것이 보장된다. 이는 또한 스트림 내의 패턴(S2)을 따르는 2개의 분리문자에 대해 참(true)이고, 따라서 분할은 항상 2개의 코어 블록 "ent" 및 "ica"를 산출한다.
패턴의 코어 블록은 불변하기 때문에, 이들은 고속 패턴 정합을 지원한다. 그러나, 2개의 블록 "ent" 및 "ica"이 연속적으로 정합되어 있는 것보다 더 많은 정보가 명료화를 갖고 패턴(S2)에 정합할 필요가 있다. 2개의 블록 "ent" 및 "ica"가 연속적으로 정합되어 있으면 공지된 바로는 S2에 대한 정합이 잠재적으로 존재한다는 것이다. 정합을 검증하기 위해, 일단 코어 블록이 정합되어 있으면, 다음 단계는 S2의 헤드 블록 및 테일 블록에 대해 각각 비교하기 위해 데이터 스트림 내의 w-바이트 접두사 심볼 및 (w+k-2) 바이트 접미사 심볼을 검색하는 것이다.
가변 스트라이드 정합
일단 패턴이 사전 프로세싱 단계 중에 분할되어 있고 입력 스트림이 유사하게 분할되어 있으면, 다음의 작업은 사전 결정된 패턴 세그먼트와 입력 스트림 세그먼트를 비교하는 것을 수반한다. 본 발명의 일 실시예에서, 가변 스트라이드 이산 유한 자동화(VS-DFA)가 이 목적을 위해 사용된다. 예를 들어, 도 3에서, 가변 스트라이드 블록 정합 유닛(320)은 이하에 설명된 바와 같이 VS-DFA의 형태로 구현될 수 있다.
VS-DFA 구성은 아호-코라식(Aho-Corasick) DFA 구성 알고리즘에서 절차를 따른다. 아호-코라식 DFA 구성에 대한 더 많은 정보는 그 내용이 본 명세서에 그대로 참조로서 포함되어 있는 에이. 브이. 아호 및 엠. 제이. 코라식의 "효율적인 문자열 정합: 서지 탐색을 위한 보조(Efficient string matching: An aid to bibliographic search)" ACM의 통신, vol. 18, no. 6, 1975년에서 찾아볼 수 있다.
패턴의 코어 블록은 분할 프로세스를 사용하여 추출되고, DFA를 구성하기 위해 알파벳 심볼로서 사용된다. 따라서, VS-DFA의 일 특징은 그 상태 전이가 개별 문자보다는 코어 블록에 기초한다는 것이다. 코어 블록 정합은 헤드 및 테일 블록 정합으로 이어진다. DFA의 구성은 모든 코어 블록 시퀀스가 블록당 하나의 상태 전이로 검출될 수 있는 것을 보장한다. 이 이후에, "의사 정합(quasi-match)" 상태는 발견되는 경우 최종 검증 단계로 이어진다.
도 7은 도 6에 제공된 패턴에 대한 예시적인 상태 전이 그래프(700)를 도시한다. DFA는 7개의 상태를 포함한다. q0는 초기 상태이다. q11, q12, q14 및 q15는 의사 정합 상태이다. 숫자를 혼란시키는 것을 회피하기 위해, 초기 상태로 재차 지향되는 실패 전이가 표시되지 않는다. VS-DFA의 정확도는 분할 프로세스의 제 2 특성에 의해 보장되고, 구체적으로 패턴이 데이터 스트림 내에 출현하는 한, 그 코어 블록은 분할된 데이터 스트림 내에 또한 출현될 수 있고, 따라서 구성된 DFA는 코어 블록을 명확히 포착할 수 있고 이어서 헤드 및 테일 블록을 점검할 수 있다. VS-DFA의 구성에 대한 접근법은 블록 심볼 시퀀스를 검출하기 위해 전형적인 DFA 구성에 유사하다. 주요 차이점은 몇몇 경로가 우선 순위 지식에 기인하여 제거될 수 있다는 것이다.
구성된 DFA는 정합이 헤드 및 테일 블록의 지식 없이 패턴 본체 상에서 직접 시작되는 것처럼 동작한다. 그러나, DFA를 구성할 때, 헤드 및 테일 블록의 지식은 다음에 불필요한 상태 전이를 제거하는데 사용된다. 전형적인 DFA에서, 경로 qi→qj가 경로 q0→qk와 동일한 문자열을 소비하면, qk로부터 시작하는 모든 전이는 전이가 몇몇 정방향 경로 상에 미리 규정되어 있지 않으면 qj에 복사될 필요가 있다. 이는 이 경우에 더 짧은 경로에 의해 커버된 문자열이 더 긴 경로에 의해 커버된 문자열의 접미사이고, 더 긴 경로가 더 짧은 경로가 행하는 바와 동일한 패턴에 정합하도록 가능하게 유도될 수 있기 때문이다. 따라서, 점프 전이는 패턴 사이의 중첩을 해결하도록 구성된다. 이는 도 7에 도시되어 있는데, 여기서 코어-블록 시퀀스 "|id|ent|"가 코어-블록 시퀀스 "|ent|ica|"와 중첩되기 때문에 q15로부터 q12로의 점프 전이가 사용된다. 그러나, VS-DFA에서, 전이는 경로 q0→qk 상의 헤드 블록이 qi의 엔트리 경로에 정합할 때 단지 복사될 수 있다. 예에서, 경로 q0→q12 상의 헤드 블록은 "id|" 및 "auth|"를 포함한다. 이들 중 하나는 q1(즉, "id|")의 엔트리 경로에 정합하고, 따라서 전이가 요구된다. 패턴 "id|ent|ic|al"이 DFA로부터 제거되면, 전이 q15→q12는 불필요해지고, 안전하게 제거될 수 있다.
상기의 특정 경우로서, 전형적인 DFA 구성에서, 전이가 몇몇 정방향 경로에 규정되지 않으면 q0로부터의 모든 전이가 모든 다른 상태에 복사되어야 한다. 이들 전이는 또한 재시작 가능한 전이로서 공지되어 있다. VS-DFA에서, 재시작 가능한 전이는 단지 필요할 때에만 발생된다.
대형 VS-DFA에서, 재시작 가능한 전이의 수는 크고 메모리 요구를 증가시킬 수 있다. 다행히도, q0로부터의 "시작 전이"의 총 수는 작다. 특정 실시예에서, "시작 전이"는 VS-DFA와 병렬로 탐색되는 개별 온칩 "시작 테이블" 내에 저장된다. 이들 실시예에서, 모든 재시작 가능한 전이가 제거될 수 있다. 또한, 상태로부터의 인출 전이가 발견될 수 없으면, 시작 테이블로부터의 탐색 결과는 다른 경로를 계산하는데 사용된다.
시스템
하드웨어 관점으로부터, 도 B 및 C를 재차 참조하면, 가변 스트라이드 다중 패턴 정합 시스템(230)은 스트림 분할 유닛(예를 들어, 스트림 분할 유닛(310)) 및 가변 스트라이드 블록 정합 유닛(예를 들어, 가변 스트라이드 블록 정합 유닛(320))을 포함한다. 다양한 실시예에서, 스트림 분할 유닛(310)은 선별 알고리즘의 수정에 기초하여 분할 체계를 사용하여 구현되고, 가변 스트라이드 블록 정합 유닛(320)은 특정화된 VS-DFA 패턴 정합기를 사용하여 구현된다.
도 8은 본 발명의 다양한 실시예에 따른 도 2의 VSMPM 시스템(230)을 도시한다. VSMPM 시스템(230)은 수정된 선별 모듈(810), 가변 스트라이드 블록 대기열(820) 및 VS-DFA(830)를 포함한다. 동작시에, 인입 데이터 스트림(패킷 페이로드)(240)은 먼저 수정된 선별 모듈(810)에 의해 가변 크기 블록으로 분할되고, 가변 스트라이드 블록 대기열(820) 내로 푸시된다(선입 선출(FIFO) 대기열을 사용하여 구현됨). 다음에, 블록은 대기열로부터 페치되고, 1개씩 가변 스트라이드 DFA(830) 내로 공급된다. VS-DFA(830)는 가변 스트라이드 블록을 프로세싱하여, 먼저 코어 블록을 프로세싱하고 이어서 헤드 및 테일 블록에 기초하여 정합을 정제한다. 관심 패턴과의 정합이 발견된 것으로 가정하면, "정합 발견" 경보(260)가 VS-DFA(830)로부터 출력된다.
수정된 선별 모듈을 위한 회로는 클럭 사이클당 w 초과 바이트를 프로세싱하기 위해 구현될 수 있다. 상태 머신(830)은 클럭 사이클당 w 바이트보다 적게 소비될 수 있기 때문에, FIFO 대기열은 이들 사이의 작은 단기간 레이트 차이를 수용하기 위해 2개의 유닛 사이에 사용된다. 이 구현예에서, 시스템 처리량은 상태 머신에 의해 결정된다.
상태 머신 모듈(830)의 다양한 실시예에서, 전술된 바와 같은 시작 테이블에 추가하여, 2개의 추가의 테이블, 즉 상태 전이 테이블 및 정합 테이블이 지원 데이터 구조체로서 제공된다. 이들의 예는 도 9에 도시된다.
도 9는 본 발명의 다양한 실시예에 따른 지원 테이블(900)을 도시한다. 지원 테이블(900)은 상태 전이 테이블(STT)(910) 및 정합 테이블(MT)(920)을 포함한다. STT 테이블(910)은 본질적으로 해시 테이블이다. 해시키는 시작 상태와 입력 블록의 조합이다. 해시값은 다음 상태의 어드레스이다. 각각의 사이클에서, 질의된 조합이 발견되면, STT 테이블(910)의 대응 열에 저장된 종료 상태가 검색되고, 그렇지 않으면 다음 상태가 시작 테이블로부터 획득된다.
전이 테이블은 해시 테이블 기반이기 때문에, 상태 번호(또한 어드레스)의 할당은 일반적으로 임의적이다. 그러나, 의사 정합 상태에 대해, 이들에 대한 특정 범위는 사전 할당된다. 이는 정합 테이블 내의 대응 엔트리의 어드레스를 직접 계산하는 것이 바람직하기 때문이다. 예를 들어, 정합 테이블(920)에서, 범위 q1*(여기서 *는 임의의 단일 디지트를 표현함)이 정합 상태에 대해 사전 할당된다. 상태 q1i는 i번째 MT 엔트리에 대응한다. 특정 경우는 q12가 2개의 가능한 헤드/테일 쌍과 관련되는 것이다. 따라서, q12는 2개의 MT 엔트리로 할당되고, 상태 머신은 가능한 정합에 대해 선형적으로 엔트리를 검사할 필요가 있다. q13은 제 3 MT 엔트리가 q12에 대해 보류되도록 의도적으로 할당되지 않는다.
의사 정합(quasi-match) 상태에 대한 정합 검증을 가능하게 하기 위해, 헤드 대기열(HQ)이 특정 실시예에서 유지될 수 있다. 헤드 대기열은 블록 정합 이력을 저장한다. HQ는 D개의 엔트리를 갖는 원형 버퍼를 사용하여 구현되고, 여기서 D는 VS-DFA의 최장 정방향 경로의 길이이다. 헤드 블록의 정확한 길이는 사전에 공지될 수 없기 때문에, 각각의 대기열 엔트리의 크기는 w 바이트로 설정된다. 블록이 w 바이트보다 짧으면, 나머지는 패딩된다. 따라서, HQ 크기가 (D×w) 바이트이고, 이는 충분한 이력이 미래의 참조를 위해 유지되는 것을 보장한다. MT 내의 깊이 필드는 HQ 내의 어느 엔트리가 헤드로서 검색되는지를 결정한다. 깊이 필드는 깊이값을 갖는 현재 HQ 인덱스를 공제함으로써 계산될 수 있다.
짧은 패턴 취급
길이 l>2w+k-2의 패턴에 대해, DFA 구성을 위한 적어도 하나의 코어 블록이 존재하는 것이 보장된다. 그러나, w+k-2<l<2w+k-1일 때, 패턴은 단지 헤드 및 테일 블록만을 갖는 코어 없는 패턴이 된다. 길이 l<w+k-1을 갖는 패턴은 전혀 분리문자를 갖지 않고 분할 불가능한 패턴이 된다. VS-DFA는 코어 블록의 결여에 기인하여 이들 짧은 패턴에 대해 직접 사용되지 않는다. 대신에, 본 발명의 다양한 실시예에서, 이들 패턴은 소형 터너리 콘텐트 어드레스 가능 메모리(ternary content addressable memory;TCAM)에 의해 효율적으로 취급될 수 있다.
이상적으로, TCAM 메모리는 상태 머신과 동일한 처리량을 가져야 하다(즉, 룩업 사이클마다 하나의 블록). 이 목표를 성취하기 위해, 통상의 방법은 패턴을 다수회 복사하고, 이전의 것에 대해 1 바이트만큼 각각의 복사를 시프트하는 것일 수 있다. 그러나, 본 발명의 분할 체계는 각각의 코어 없는 패턴에 대해 단지 하나의 TCAM 엔트리를 사용하는 것을 충분하게 한다. TCAM 엔트리는 폭이 2w+k-2 바이트이다. 각각의 엔트리는 각각 w 바이트 및 w+k-2 바이트인 2개의 섹션으로 분할된다. 코어 없는 패턴을 저장하기 위해, 그 헤드 블록은 제 1 섹션의 우측으로 정렬되고, 그 테일 블록은 제 2 섹션의 좌측으로 정렬된다. 엔트리 내의 미사용된 바이트는 "무정의 조건(don't care)"으로서 마스킹된다.
어떠한 이러한 최적화도 분할 불가능한 패턴에 대해 수행되지 않는다. 대신에, max{w,w+k-2} TCAM 엔트리가 각각의 분할 불가능한 패턴에 대해 사용된다. 각각의 엔트리는 이 패턴이 데이터 스트림 내에서 출현할 수 있는 가능한 이동을 커버한다. 제 1 엔트리는 TCAM 엔트리와 좌측 정렬되어 유지된다. 각각의 이하의 엔트리는 우측을 향해 1 바이트 이동한다. 예가 도 10에 도시되어 있다. 이 예에서, w=4이고 k=2이기 때문에, TCAM 엔트리는 8-바이트 폭이다. "ent|ire"로 분할된 코어 없는 패턴 "entire"가 도시된 바와 같이 TCAM 엔트리 1에 저장된다. 분할 불가능한 패턴 "set"는 4개의 TCAM 엔트리를 가로질러 확장된다.
이 배열에 의해, 정합을 수행하기 위해, 입력 스트림은 전술된 바와 같이 분할된다. 하나의 가외 분리문자가 바이트 스트림의 종료점에 추가된다. 바이트 스트림 내의 각각의 분리문자에서, w 바이트가 분리문자 이전에 추출되고, (w+k-2) 바이트가 그 이후에 추출된다. 조합된 문자열은 이어서 TCAM 메모리에 질의하기 위해 키로서 사용된다. 이 접근법은 임의의 짧은 패턴에 대해 정확한 정합을 발견하도록 보장된다. 짧은 패턴은 다행히도 통상적으로 단지 패턴 세트의 작은 부분이다.
단일 바이트 블록의 감소
처리량에서의 VS-DFA의 장점은 DFA 횡단 단계마다 비교적 큰 평균 스트라이드에 기인한다. 랜덤 데이터 스트림에 대해, 예측된 블록 크기는 (w+1)/2이다. 그러나, 전술된 바와 같이 분할 알고리즘에 의해 프로세싱된 특정 입력 데이터 스트림은 선택된 해시 함수 및 윈도우 파라미터에 독립적으로 단일 바이트 세그먼트가 생성될 수 있게 한다. 예를 들어, 연속적으로 반복된 동일한 단일 문자를 갖는 입력 스트림을 프로세싱하는 것은 일련의 단일 바이트 세그먼트를 생성할 수 있다. 이는 시스템 처리량을 감소시킬 수 있고 또한 시스템을 특정 유형의 서비스 거부(Denial-of-Service; Dos) 공격에 취약하게 한다.
낮은 엔트로피 데이터 스트림이 또한 전술된 분할 알고리즘에 대해 문제가 될 수 있다. 따라서, 본 발명의 다양한 실시예에서, 해시값 타이-브레이커 방법에 대한 개량이 세그먼트 스트림 내에 단일 바이트 블록이 출현하고 유효 시스템 처리량을 감소시키는 문제점을 완화하는데 사용된다. 이는 하나 또는 2개의 추가의 세그먼트 조합 규칙의 적용에 의해 수행된다. 결과적인 향상된 분할 프로세스는 본 발명의 다양한 실시예에 사용된다.
조합 규칙 1( 세그먼트 스트림에 적용됨): 하나 초과의 연속적인 단일 바이트 블록이 데이터 스트림 내에서 출현하면, 제 1 블록에서 시작하여, w 단일 바이트 블록을 조합하여 새로운 통합된 w-바이트 블록을 형성한다. 남아 있는 블록은 하나 초과이면 또한 조합된다. 예를 들어, w=4라고 가정하고, 연속적인 단일 바이트 블록은 |c1|c2|c3|c4|c5|c6|이다(c1 이전의 블록 및 c6 후의 블록은 1 바이트보다 길다고 가정함). 규칙을 적용하는 것은 2개의 조합된 블록 |c1c2c3c4|c5c6|를 생성한다.
조합 규칙 1은 모든 연속적인 단일 바이트 블록을 제거하여, 다중 바이트 블록 사이에 분산된 단지 몇몇 격리된 단일 바이트 블록을 남겨둔다. 최악의 경우, 단일 바이트 블록 및 이중 바이트 블록이 데이터 스트림에서 서로 인터리빙되는 경우에, 조합 규칙 1은 1.5의 속도 증가 팩터를 제공한다. 유사한 조합이 또한 패턴 상에서 수행된다. 그러나, 패턴 내에서 단일 바이트 블록을 맹목적으로 조합하는 것은 스트림 상의 분할 및 패턴이 이들의 동기화를 손실하게 할 수 있다. 다수의 코어 블록의 첫 번째 또는 마지막이 단일 바이트 블록일 때 모호성이 발생한다. 상이한 콘텍스트(예를 들어, 상이한 접두사 및 접미사 바이트)이 제공되면, 조합 규칙 1은 상이한 결과를 유도할 수도 있다. 따라서, 알고리즘 정확성을 보장하기 위해, 첫 번째 하나 이상의 원래의 코어 블록이 단일 바이트 블록이면, 이들은 더 이상 코어 블록으로서 간주되지 않는다. 대신에, 이들은 헤드 블록의 부분으로서 푸시된다. 마찬가지로, 특정 취급이 또한 테일에 이웃하는 단일 바이트 블록을 위해 요구된다.
조합 규칙 1(패턴에 적용됨): 원래의 헤드 블록 직후에 모든 연속적인 단일 바이트 코어 블록들을 새로운 헤드 블록 내에 조합한다. 조합 규칙 1(세그먼트 스트림에 적용됨)에서 설명된 바와 동일한 방식으로 코어 블록의 나머지를 조합한다. 조합 후에, 마지막 코어 블록이 조합된 하나이고 w 바이트보다 짧으면, 이를 테일 블록에 조합한다. 이하의 예는 조합 규칙 1(패턴에 적용됨)을 예시한다.
패턴 aaaaacbddddddabc가 w=3을 갖는 aaa|a|a|cbd|d|d|d|d|d|abc로서 원래 분할된다고 가정한다. 첫 번째 2개의 단일 바이트 블록 |a|a|는 또한 헤드 블록과 조합되어야 한다. 남아 있는 블록에 대해, 첫 번째 3개의 연속적인 |d|는 |ddd|로 조합되고, 마지막 2개의 연속적인 |d|는 |dd|로 조합된다. 블록 |dd|의 길이는 3보다 짧기 때문에, 이는 테일 블록과 조합된다.
따라서, 규칙을 적용한 후에 새로운 분할은 aaaaa|cbd|ddd|ddabc가 된다. 다른 경우에, 동일한 패턴이 aaa|a|a|cbd|d|d|d|d|d|ab|c로서 상이하게 원래 분할된다. 조합 규칙 1을 적용한 후에, 새로운 분할은 aaaaa|cbd|ddd|dd|ab|c가 되어야 한다. 테일 블록은 최종 코어 블록 |ab|가 조합의 결과가 아니기 때문에 동일하게 남아 있다.
조합 규칙 1은 최악의 경우 및 예측된 처리량의 모두를 향상시킨다. 조합의 하위측은 패턴이 더 긴 헤드 및 테일 블록을 가질 수 있는 것이다. 더욱이, 몇몇 패턴은 모든 이들 코어 블록이 규칙을 적용하기 전에 단일 바이트 블록이면 심지어 코어 없는 패턴이 될 수 있다. 조합 후에, 최대 테일 블록 크기는 최대 (w-1) 단일 바이트 블록이 테일 블록 내에 병합될 수 있기 때문에, (w+k-2)+(w-1)=(2w+k-3) 바이트일 수 있다. 헤드 블록에 대해, 이제 크기에 대해 상한이 없다.
알고리즘은 이후의 정합 검증을 위해 데이터 스트림으로부터 잠재적인 헤드 블록을 버퍼링할 필요가 있기 때문에, 헤드 블록의 크기가 제약되어야 한다. 다행히도, w 바이트보다 긴 이들의 헤드 블록을 갖는 패턴의 수는 작다. 문제점은 패턴을 w회 복제함으로써 해결된다. 각각의 복제된 패턴은 헤드 블록 상에 고유의 분할이 제공된다. 헤드 블록 분할 절차는 이하와 같다.
i번째 바이트 후에 제 1 분리문자를 설정한다, 여기서 (1≤i≤w). 제 1 분리문자 후에, 새로운 분리문자가 모든 w 바이트 후에 설정된다. 분할이 수행될 때, 제 1 블록은 새로운 헤드 블록으로서 유지되고, 모든 다른 블록은 코어 블록으로 승격된다. 각각의 복제된 패턴은 이제 새로운 패턴으로서 VS-DFA 내에서 프로그램되지만, 이들은 여전히 동일한 스트림 세그먼트 패턴 발생에 정합하도록 유도된다.
예를 들어, 패턴 c1c2c3c4c5c6c7c8c9c10c11이 초기에 w=3을 갖고 c1|c2|c3|c4|c5|c6|c7|c8|c9|c10|c11로 분할된다고 가정한다. 조합 규칙 1을 적용한 후에, 분할된 배턴은 |c1c2c3c4c5c6c7|c8c9c10|c11이 된다. 새로운 헤드 블록은 2w 바이트보다 더 길다. 헤드 블록의 길이를 제약하기 위해, 패턴은 3회 복제되고, 각각은 이하와 같이 새로운 분할을 수신한다.
|c1c2c3c4|c5c6c7|c8c9c10|c11,
|c1c2c3c4c5|c6c7|c8c9c10|c11 및
|c1c2c3c4c5c6|c7|c8c9c10|c11.
이제, 어느 콘텍스트에서 패턴이 입력 스트림에 나타나더라도, w개의 분할 중 하나에 의해 포착되는 것이 보장된다.
요약하면, 조합 규칙 1을 적용한 후에 큰 헤드 블록을 갖는 패턴에 대해, 헤드 블록은 패턴을 w회 복제하는 것의 대가로 2w 바이트 내에 있도록 제약된다. 몇몇 실시예에서, 최대 헤드 블록 크기는 이 DFA 내의 추가의 복제된 패턴을 사용하여 또는 희생하여 더 제약될 수 있다.
단일 바이트 블록의 제거
조합 규칙 1은 모든 연속적인 단일 바이트 블록을 제거한다. 그러나, 남아 있는 격리된 단일 바이트 블록은 여전히 프로세싱을 느리게 할 수 있다. 최악의 경우 처리량은 단계당 1.5 문자이다. 다른 규칙, 즉 조합 규칙 2는 거의 모든 단일 바이트 블록을 제거하기 위해 향상된 분할 접근법의 다양한 실시예에 사용될 수 있다.
조합 규칙 2: 조합 규칙 1을 적용한 후에, 모든 남아 있는 단일 바이트 블록을 그 선행 블록에 조합한다. 패턴에 대해, 이는 단지 코어 블록에 적용된다. 또한, 테일 블록의 제 1 바이트가 데이터 스트림 내의 단일 바이트 블록이 될 수 있기 때문에, 패턴을 1회 복제하고 이 경우를 커버하기 위해 새로운 분할을 행한다. 예를 들어, 패턴,
|c1c2c3|c4c5|c6|c7c8|c9c10c11은
조합 규칙 2의 적용 후에,
|c1c2c3|c4c5c6|c7c8|c9c10c11이 된다.
그러나, 데이터 스트림에서, 패턴의 테일 블록은 |c9|c10c11로서 분할될 수 있고, 따라서 조합 규칙 2는 데이터 스트림에 적용될 때 분할 |c1c2c3|c4c5c6|c7c8c9|c10c11을 또한 생성할 수 있다. 따라서, 양 패턴 분할은 VS-DFA 내에 삽입되어야 한다.
그러나, 몇몇 경우에, 이 복제는 필요하지 않다. 예를 들어, 상기 패턴에 대해, k=2이면, 선별 해시값은 c9 및 c10의 위치에서 계산된다. 제 1 값이 제 2 값보다 크면, 패턴 다음에 어느 문자가 나오는지에 무관하게 i와 j 사이에 명백히 어떠한 분리문자도 존재하지 않을 수 있다. 이 경우에, 어떠한 복제도 수행되지 않는다. 조합 규칙 2는 DoS-공격 문제점을 방지하고, 잠재적으로 시스템 처리량을 증가시킨다. 이는 또한 시스템에 다른 영향을 미친다. 최대 블록 크기가 이제 (w+1) 바이트가 된다. 조합 규칙 1을 적용한 후에 긴 헤드 블록을 갖는 패턴은 이에 따라 (w+1)회 복제된다. 조합 규칙은 몇몇 패턴 복제를 유도할 수 있지만, 이들은 VS-DFA의 메모리 소비를 반드시 증가시키지 않는다. 반대로, 이들은 단일 바이트 상태 전이가 회피되기 때문에 메모리 소비를 낮추는 것을 실제로 도울 수 있다.
향상된 세그먼트 스트림을 생성하기 위해 입력 데이터 세그먼트 스트림에 적용된 바와 같은 조합 규칙이 도 11에 도시된다. 여기서, 도 11 (a)는 비향상된 분할 프로세스의 적용으로부터 발생하는 입력 데이터 세그먼트 스트림에 적용된 조합 규칙 1을 도시한다. 프로세스는 단계(1110)에서 시작한다. 단계(1120)에서, 일련의 세그먼트는 입력 데이터 스트림의 예비 분할에 대한 책임이 있는 시스템의 부분으로부터 수신된다. 단계(1130)에서, 연속적인 단일 바이트 세그먼트(블록)가 w-바이트 세그먼트 내에 통합되고, 단계(1140)에서, 연속적인 단일 바이트 세그먼트의 각각의 남아 있는 세트는 또한 단일 세그먼트로 조합된다. 적어도 하나의 다중 바이트 세그먼트에 의해 서로로부터 분리된 오펀(orphan) 단일 바이트 세그먼트가 남아 있다.
도 11 (b)에서, 조합 규칙 2가 도 11 (a)의 프로세스로부터 발생하는 스트림에 적용된다. 특히, 프로세스는 단계(1150)에서 시작하고, 단계(1160)에서 조합 규칙 1의 적용으로부터 발생하는 스트림이 수신된다. 단계(1170)에서, 모든 스트레이(stray) 단일 바이트 세그먼트가 그 선행 다중-바이트 세그먼트 내에 통합된다. 프로세스는 단계(1180)에서 종료한다.
본 발명은 방법 및 이들 방법을 실시하기 위한 장치의 형태로 구체화될 수 있다. 본 발명은 또한 자기 기록 매체, 광학 기록 매체, 고체 상태 메모리, 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 머신 판독 가능 저장 매체와 같은 유형 매체 내에 구체화된 프로그램 코드의 형태로 구체화될 수 있고, 프로그램 코드가 컴퓨터와 같은 머신 내에 로딩되어 실행될 때, 머신은 본 발명을 실시하기 위한 장치가 된다. 본 발명은 예를 들어 저장 매체 내에 저장되고, 머신 내에 로딩되고 그리고/또는 머신에 의해 실행되거나 또는 전기 배선 또는 케이블을 통해, 광섬유를 통해 또는 전자기 방사선을 통해서와 같이 몇몇 전송 매체 또는 캐리어를 통해 전송되는지간에, 프로그램 코드의 형태로 또한 구체화될 수 있고, 프로그램 코드가 컴퓨터와 같은 머신 내에 로딩되어 실행될 때, 머신은 본 발명을 실시하기 위한 장치가 된다. 범용 프로세서 상에서 구현될 때, 프로그램 코드 세그먼트는 특정 논리 회로와 유사하게 동작하는 고유의 디바이스를 제공하기 위해 프로세서와 조합된다. 대안적으로 또는 추가적으로, 본 발명 또는 본 발명의 부분은 응용 특정 집적 회로(ASIC) 또는 필드 프로그램 가능 게이트 어레이(FPGA)를 비한정적으로 포함하는 다양한 형태로 구현될 수 있다. 모든 전술된 실시예는, 프로세서, 소프트웨어를 갖는 프로세서, ASIC, FPGA, 자립형 논리 또는 전자 또는 광학 회로이건간에 "머신"의 용어로 청구항의 범주 내에 있는 것으로 본 명세서에서 이해되어야 하고, "머신으로 구현되는"은 임의의 전술된 구현예 뿐만 아니라 당업자에 의해 이들 기술에 동등한 것으로 이해될 수 있는 다른 구현 기술을 비한정적으로 포함하는 것으로 이해되어야 한다.
명시적으로 달리 언급되지 않으면, 각각의 수치값 및 범위는 단어 "약" 또는 "대략"이 값 또는 값의 범위 앞에 선행하는 것처럼 대략적인 것으로서 해석되어야 한다.
본 발명의 특성을 설명하기 위해 설명되고 예시되어 있는 부분의 상세, 재료 및 배열의 다양한 변화는 이하의 청구범위에 표현된 바와 같은 본 발명의 범주로부터 벗어나지 않고 당업자들에 의해 이루어질 수 있다는 것이 더 이해될 수 있을 것이다.
본 명세서에 설명된 예시적인 방법의 단계는 반드시 설명된 순서로 수행되도록 요구되는 것은 아니고, 이러한 방법의 단계의 순서는 단지 예시적인 것으로 이해되어야 한다는 것이 이해되어야 한다. 마찬가지로, 추가의 단계가 이러한 방법에 포함될 수 있고, 특정 단계는 본 발명의 다양한 실시예에 따른 방법에서 생략되거나 조합될 수 있다.
이하의 방법 청구항에서 요소가 존재하는 경우, 대응 라벨링을 갖는 특정 시퀀스로 언급되어 있지만, 청구항이 몇몇 또는 모든 이들 요소를 구현하기 위해 특정 시퀀스를 달리 암시하지 않으면, 이들 요소는 이 특정 시퀀스로 구현되는 것에 한정하도록 반드시 의도되는 것은 아니다.
본 명세서에서 "일 실시예" 또는 "실시예"의 언급은 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서에서 다양한 위치에서 구문 "일 실시예에서"의 출현은 반드시 모두 동일한 실시예를 언급하는 것은 아니고, 또한 개별 또는 대안 실시예는 반드시 다른 실시예를 서로 배제하는 것은 아니다. 동일한 것이 용어 "구현예"에도 적용된다.
상기 설명에서 다수의 예는 영어 단어 및 문자를 이용하였지만, 본 발명의 분할 체계의 장점은 임의의 임의적 입력 바이트 스트림 및/또는 바이트 패턴에 적용될 수 있다는 것이다. 따라서, 본 발명의 체계는 분할을 지원하기 위해 스트림의 의미적 콘텍스트(semantic context)에 의존하지 않는다. 예를 들어, 영어 문서에서 발견될 수 있는 구두점, 여백, 대문자 사용 및/또는 다른 콘텍스트 요소가 이러한 문서에서 발견된 다중 바이트 문자열 사이의 경계를 구분하는데 사용될 수 있지만, 본 발명은 임의의 이러한 콘텍스트 의존 시스템을 필요로 하지 않고 따라서 임의의 임의적 바이트 스트림에 대한 적용성을 갖는다.
추가적으로, 본 발명이 데이터의 바이트를 포함하는 데이터 스트림의 콘텍스트에서 설명되어 있지만, 2진 데이터의 옥텟(octet)에 한정되지 않는다. 예로서, 데이터의 8-비트 표현 대신에, 데이터의 대안적인 표현에서, 10, 12 또는 임의의 다른 수의 비트가 심볼을 표현하는데 사용되면, 본 발명은 대안적인 표현에 동등하게 적용 가능할 수 있다. 따라서, 임의의 임의적 입력 "심볼" 스트림에 일반적으로 적용된다고 일컫는 것이 적절하다. 또한, 동일한 방식으로, 이들 심볼은 구체적으로 8-비트 길이일 필요는 없지만, 또한 이들 심볼은 기본 2개의 표현으로 제한될 필요는 없다.
다수의 상기 실시예는 입력 심볼 스트림 내의 k-그램으로부터 특정 해시값을 선택하기 위해 해시 함수 및 최소값 필터를 통합하는 예시적인 선별 함수를 사용하여 예시되어 있다. 해시 함수 자체는 일방향 함수로서 공지된 함수의 분류의 예이고, 최소값 필터는 세트로부터 하나를 구별하기 위해 일련의 번호에 적용될 수 있는 기준 또는 필터의 클래스의 예이다. 일반적으로, 본 발명은 실시예의 예에 의해 한정되어서는 안되고 당업자에게 이해될 수 있는 바와 같이 이하에 언급된 청구범위의 전체 범주를 유지해야 한다.
110, 120: 자율 시스템 130: 경계 라우터
140: 네트워크 침입 검출 및 방지 시스템(NIDPS)
170: 서버 180: 경계 라우터
190: 내부 라우터 210: 프로세서
220: 메모리 230: VSMPM 시스템
240: 스트림 입력 250: 스트림 출력
310: 스트림 분할 유닛 320: 가변 스트라이드 블록 정합 유닛
330: 패킷 드롭퍼 340: 스트림 세그먼트
610: 분할될 패턴 620: 헤드 세그먼트
630: 코어 세그먼트 640: 테일 세그먼트

Claims (10)

  1. 통신 네트워크를 통해 전송되는 데이터 패킷 내의 심볼 패턴의 다수의 인스턴스를 식별하기 위해 머신으로 구현되는 방법에 있어서,
    (a) 상기 머신이, 둘 이상의 상이한 길이를 갖는 복수의 데이터 패킷 세그먼트를 산출하기 위해 가변 스트라이드(variable-stride) 세그먼트를 이용하여 상기 데이터 패킷을 가변 크기 블록의 심볼로 분할하는 단계 - 상기 데이터 패킷은, (i) 상기 데이터 패킷 내의 상이한 k-그램의 심볼과 관련된 해시값을 생성하기 위해 상기 상이한 k-그램에 해시 함수를 적용하고, (ii) 하나 이상의 상기 해시값에 기초하여 각각의 데이터 패킷 세그먼트의 범위를 정함으로써(delimiting), 상기 복수의 데이터 패킷 세그먼트로 구분됨 - 와,
    (b) 상기 머신이, 상기 데이터 패킷 내의 심볼 패턴의 다수의 인스턴스를 식별하기 위해 긍정 오류(false positive)와 부정 오류(false negative) 없는 결정적 유한 자동화(deterministic finite automaton; DFA) 프로세싱을 사용하여 상기 심볼 패턴의 패턴 세그먼트와 상기 복수의 데이터 패킷 세그먼트의 각각을 비교하는 단계 - 상기 패턴 세그먼트는 상기 심볼 패턴보다 적은 심볼을 가짐 - 를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 단계 (a)는,
    (a1) 상기 k-그램과 관련된 상기 해시값을 생성하기 위해 상기 데이터 패킷 내의 상기 k-그램의 심볼에 대해 해시 함수를 수행하는 단계 - 여기서 (k>0)임 -와,
    (a2) 적어도 하나의 k-그램과 관련된 적어도 하나의 특정 해시값을 식별하기 위해 상기 해시값을 필터링하는 단계와,
    (a3) 상기 적어도 하나의 특정 해시값과 관련된 상기 적어도 하나의 k-그램의 데이터 패킷 내의 위치에 기초하여, 상기 데이터 패킷 스트림의 범위를 적어도 2개의 데이터 패킷 세그먼트 내로 정하는 단계를 포함하는
    방법.
  3. 제 2 항에 있어서,
    단계 (a1)은 크기 w의 윈도우 내의 복수의 k-그램에 대응하는 복수의 해시값을 생성하는 단계를 포함하고, 여기서 (k<w)이고,
    단계 (a2)는 상기 윈도우 내의 최소 해시값으로서 상기 적어도 하나의 k-그램과 관련된 상기 적어도 하나의 특정 해시값을 선택하는 단계를 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 단계 (a)는 적어도 헤드 블록, 코어 블록 및 테일 블록으로 상기 심볼 패턴을 분할하는 단계를 더 포함하고,
    상기 패턴 세그먼트는 상기 헤드 블록, 상기 코어 블록 및 상기 테일 블록 중 하나에 대응하는
    방법.
  5. 제 1 항에 있어서,
    상기 단계 (b)는 단일의 가변 스트라이드 이산 유한 자동화(variable-stride discrete finite automation;VS-DFA)를 사용하여 수행되는
    방법.
  6. 제 5 항에 있어서,
    상기 VS-DFA는 적어도 2개의 코어 블록을 포함하는 알파벳을 사용하여 구성되는
    방법.
  7. 제 5 항에 있어서,
    상기 VS-DFA는 적어도 2개의 상이한 가능한 패턴 정합 중 하나에 대응하는 의사 상태(quasi-state)를 포함하고, 상기 적어도 2개의 상이한 가능한 패턴 정합 중에 패턴 정합을 결정하는 것은 헤드 및 테일 블록의 함수인
    방법.
  8. 제 5 항에 있어서,
    상기 심볼 패턴은 제 1 심볼 시퀀스에 대응하고,
    상기 VS-DFA는 적어도 상기 패턴 세그먼트와, 제 2 심볼 시퀀스에 대응하는 제 2 심볼 패턴의 세그먼트를 포함하는 알파벳을 사용하여 구성되고, 상기 제 2 심볼 시퀀스는 상기 제 1 심볼 시퀀스와 상이한
    방법.
  9. 제 1 항에 있어서,
    (c) p개의 연속적인 단일-심볼 데이터 패킷 세그먼트의 적어도 하나의 시퀀스를 단일의 p-심볼 데이터 패킷 세그먼트 내에 통합하는 단계 - 여기서 (p>1)임 - 를 더 포함하는
    방법.
  10. 통신 네트워크를 통해 전송되는 데이터 패킷 내의 심볼 패턴의 다수의 인스턴스를 식별하기 위한 장치에 있어서,
    (a) 둘 이상의 상이한 길이를 갖는 복수의 데이터 패킷 세그먼트를 산출하기 위해 가변 스트라이드 세그먼트를 이용하여 상기 데이터 패킷을 가변 크기 블록의 심볼로 분할하기 위한 수단 - 상기 데이터 패킷은, (i) 상기 데이터 패킷 내의 상이한 k-그램의 심볼과 관련된 해시값을 생성하기 위해 상기 상이한 k-그램에 해시 함수를 적용하고, (ii) 하나 이상의 상기 해시값에 기초하여 각각의 데이터 패킷 세그먼트의 범위를 정함으로써, 상기 복수의 데이터 패킷 세그먼트로 구분됨 - 과,
    (b) 상기 데이터 패킷 내의 심볼 패턴의 다수의 인스턴스를 식별하기 위해 긍정 오류(false positive)와 부정 오류(false negative) 없는 결정적 유한 자동화(DFA) 프로세싱을 사용하여 상기 심볼 패턴의 패턴 세그먼트와 상기 복수의 데이터 패킷 세그먼트의 각각을 비교하기 위한 수단 - 상기 패턴 세그먼트는 상기 심볼 패턴보다 적은 심볼을 가짐 - 을 포함하는
    장치.
KR1020117024150A 2009-04-17 2010-04-13 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치 KR101334583B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/425,576 US8250016B2 (en) 2009-04-17 2009-04-17 Variable-stride stream segmentation and multi-pattern matching
US12/425,576 2009-04-17
PCT/US2010/030795 WO2010120708A2 (en) 2009-04-17 2010-04-13 Variable-stride stream segmentation and multi-pattern matching

Publications (2)

Publication Number Publication Date
KR20110138237A KR20110138237A (ko) 2011-12-26
KR101334583B1 true KR101334583B1 (ko) 2013-11-28

Family

ID=42502690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117024150A KR101334583B1 (ko) 2009-04-17 2010-04-13 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US8250016B2 (ko)
EP (1) EP2419864A2 (ko)
JP (1) JP5373184B2 (ko)
KR (1) KR101334583B1 (ko)
CN (1) CN102395985A (ko)
WO (1) WO2010120708A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8050251B2 (en) * 2009-04-10 2011-11-01 Barracuda Networks, Inc. VPN optimization by defragmentation and deduplication apparatus and method
US8572014B2 (en) * 2009-10-16 2013-10-29 Mcafee, Inc. Pattern recognition using transition table templates
US8452106B2 (en) * 2010-03-23 2013-05-28 Microsoft Corporation Partition min-hash for partial-duplicate image determination
US8995771B2 (en) 2012-04-30 2015-03-31 Microsoft Technology Licensing, Llc Identification of duplicates within an image space
CN103095674A (zh) * 2012-10-25 2013-05-08 北京君正集成电路股份有限公司 一种可编程的码流预处理方法和系统
KR101558054B1 (ko) * 2012-11-19 2015-10-06 삼성에스디에스 주식회사 안티 멀웨어 시스템 및 안티 멀웨어 시스템에서의 패킷 처리 방법
US9690935B2 (en) * 2012-12-31 2017-06-27 Fireeye, Inc. Identification of obfuscated computer items using visual algorithms
US9171207B1 (en) * 2013-03-15 2015-10-27 Peter L Olcott Method and system for recognizing machine generated character glyphs in graphic images
CN103559266B (zh) * 2013-11-04 2017-03-22 中国科学院声学研究所 多模式匹配方法及装置
CN105337932A (zh) * 2014-06-30 2016-02-17 杭州迪普科技有限公司 一种web应用防护方法及装置
DE102014213293A1 (de) * 2014-07-09 2016-01-14 Siemens Aktiengesellschaft Verfahren, Überwachungsvorrichtung und System zur Erkennung einer Manipulation eines Datenstroms
US9805099B2 (en) 2014-10-30 2017-10-31 The Johns Hopkins University Apparatus and method for efficient identification of code similarity
US9438612B1 (en) * 2015-03-23 2016-09-06 Fortinet, Inc. Calculating consecutive matches using parallel computing
KR101630383B1 (ko) * 2015-04-02 2016-06-27 한국과학기술원 다중 패턴 매칭 알고리즘 및 이를 이용한 처리장치
WO2017052392A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Facilitating efficient detection of patterns in graphics display streams prior to their display at computing devices
US10243983B2 (en) * 2015-12-08 2019-03-26 Sudhir Pendse System and method for using simulators in network security and useful in IoT security
WO2017138936A1 (en) * 2016-02-10 2017-08-17 Hewlett Packard Enterprise Development Lp Determining pattern match based on circuit match and hash value match
CN108885632B (zh) * 2016-03-23 2022-10-28 江森自控泰科知识产权控股有限责任公司 用于实时数据流编程的高效状态机
CN108170812B (zh) * 2017-12-29 2020-06-19 迈普通信技术股份有限公司 一种数据过滤方法及设备
US10756904B1 (en) * 2018-02-22 2020-08-25 EMC IP Holding Company LLC Efficient and secure distributed ledger maintenance
CN112597345B (zh) * 2020-10-30 2023-05-12 深圳市检验检疫科学研究院 一种实验室数据自动采集与匹配方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757675B2 (en) 2000-07-24 2004-06-29 The Regents Of The University Of California Method and apparatus for indexing document content and content comparison with World Wide Web search service
US7912808B2 (en) 2006-12-08 2011-03-22 Pandya Ashish A 100Gbps security and search architecture using programmable intelligent search memory that uses a power down mode
WO2009017131A1 (ja) * 2007-08-02 2009-02-05 Nec Corporation ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Derek Pao et al, Pipelined Architecture for Multi-String Matching, IEEE Computer Architecture Letters, 2008. *
Miroslav Ponec et al, Highly Efficient Techniques for Network Forensics, CCS’07, 2007.
Miroslav Ponec et al, Highly Efficient Techniques for Network Forensics, CCS'07, 2007. *
Saul Schleimer et al, Winnowing: Local Algorithms for Document Fingerprinting, SIGMOD 2003, 2003. *

Also Published As

Publication number Publication date
JP2012524338A (ja) 2012-10-11
US20100266215A1 (en) 2010-10-21
WO2010120708A2 (en) 2010-10-21
WO2010120708A3 (en) 2011-01-06
KR20110138237A (ko) 2011-12-26
US8250016B2 (en) 2012-08-21
EP2419864A2 (en) 2012-02-22
JP5373184B2 (ja) 2013-12-18
CN102395985A (zh) 2012-03-28

Similar Documents

Publication Publication Date Title
KR101334583B1 (ko) 심볼 패턴에 입력 심볼 스트림을 정합하기 위한 방법 및 장치
US9507563B2 (en) System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features
Hua et al. Variable-stride multi-pattern matching for scalable deep packet inspection
US9514246B2 (en) Anchored patterns
US9858051B2 (en) Regex compiler
US9990583B2 (en) Match engine for detection of multi-pattern rules
US20080071783A1 (en) System, Apparatus, And Methods For Pattern Matching
US20070088955A1 (en) Apparatus and method for high speed detection of undesirable data content
US20060098652A1 (en) Scalably detecting and blocking signatures at high speeds
US20080050469A1 (en) Jumping window based fast pattern matching method with sequential partial matches using TCAM
US20160321289A1 (en) Method and Apparatus for Generating a Plurality of Indexed Data Fields
Najam et al. Speculative parallel pattern matching using stride-k DFA for deep packet inspection
Pao et al. A memory-based NFA regular expression match engine for signature-based intrusion detection
Liu et al. An overlay automata approach to regular expression matching
US8935270B1 (en) Content search system including multiple deterministic finite automaton engines having shared memory resources
Weng et al. Deep packet pre-filtering and finite state encoding for adaptive intrusion detection system
US10944724B2 (en) Accelerating computer network policy search
Karimov et al. Application of the Aho-Corasick algorithm to create a network intrusion detection system
Fide et al. A survey of string matching approaches in hardware
US20070255676A1 (en) Methods and apparatus for performing tree-based processing using multi-level memory storage
Nakahara et al. The parallel sieve method for a virus scanning engine
Каримов et al. Application the Aho-Corasick Algorithm for Improving a Intrusion Detection System
DURGADEVI et al. Compact DFA: A Variable Stride Pattern Matching Algorithm to Perform Pattern Matches Using HEXA
Sung et al. Performance Evaluation of TCAM based Pattern-Matching Algorithm

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171110

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee