KR101465132B1 - 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치 - Google Patents

다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치 Download PDF

Info

Publication number
KR101465132B1
KR101465132B1 KR1020130006022A KR20130006022A KR101465132B1 KR 101465132 B1 KR101465132 B1 KR 101465132B1 KR 1020130006022 A KR1020130006022 A KR 1020130006022A KR 20130006022 A KR20130006022 A KR 20130006022A KR 101465132 B1 KR101465132 B1 KR 101465132B1
Authority
KR
South Korea
Prior art keywords
block
character
string
unit
identity
Prior art date
Application number
KR1020130006022A
Other languages
English (en)
Other versions
KR20140093518A (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 KR1020130006022A priority Critical patent/KR101465132B1/ko
Publication of KR20140093518A publication Critical patent/KR20140093518A/ko
Application granted granted Critical
Publication of KR101465132B1 publication Critical patent/KR101465132B1/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/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 패턴의 아이덴티티 블록과 입력 패킷의 블록을 비교하여 프리필터링하는 방법에 있어서, 패턴의 아이덴티티 블록과 입력 패킷의 블록은 문자열 블록화 단계를 통해 생성하되 문자열 블록화 단계는 문자열의 각 문자에 대해 해시값을 계산하는 단계; 및 해시값을 이용하여 다중 바이트로 문자열을 블록화하는 단계; 를 포함하는 다중바이트 프리필터 방법 및 이를 이용한 패턴 매칭 방법과 장치에 관한 것이다.

Description

다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치{Method for acceleration of deep packet inspection using a multi-byte processing prefilter}
본 발명은 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치에 관한 것이다.
종래의 스트링 매칭 엔진은 주로 입력되는 글자에 의해서 스테이트 간의 천이가 일어나도록 구성된 오토마타를 메모리에 저장하는 방식으로 구현되어 왔다. 결정적 유한 오토마타를 사용하는 방식은 성능이 일정하다는 장점이 있으나, 다수의 스테이트 간의 천이를 저장해야 하는 단점이 있다. 따라서, 결정적 유한 오토마타를 사용하는 기술은 주로 스테이트와 천이 저장을 위한 메모리 사용을 감소시키는 것에 초점을 맞추어 발전되어 왔다.
메모리 사용을 감소시키는 방식은 크게 두 가지로 나눌 수 있다. 첫 번째 방식은 정형화된 메모리를 사용하되 오토마타를 구성하는 알고리즘을 변형하여 구성 방식 자체를 변경하는 것이다. 두 번째 방식은 해시와 같은 데이터 구조 또는 특수 메모리인 내용 주소화 메모리(Content Addressable Memory, CAM)을 활용하여 스테이트와 천이를 좀 더 효율적으로 저장하는 방법이다.
위의 기술은 한 번에 한 글자씩 처리한다는 특성 때문에 검색 속도를 높이는 데에 근본적으로 한계가 있다. 한 번에 처리할 수 있는 글자 수를 증가시켜서 스트링 매칭의 속도를 크게 증가시킬 수 있다. 스테이트 간의 천이를 한 글자에 의해서가 아닌 여러 글자로 이루어진 단위 블록에 의해서 이루어지도록 오토마타를 구성하면 처리 가능한 글자 수를 증가시킬 수 있으나, 이 글자 수에 지수 승에 비례하여 필요한 메모리 용량이 증가하므로 실제로 구현하는 것은 불가능에 가깝다. 다른 방식으로는 기존의 바이트 단위 처리 스트링 매칭 엔진에 프리필터를 추가하는 것이다. 이 방식은 심층 패킷 검색 속도를 크게 향상시킬 수 있으나 실제 하드웨어 엔진으로 구현하기 위해서는 프리필터의 사이즈를 줄이는 것이 필수적이다. 프리필터의 사이즈는 입력되는 데이터와 비교하기 위해 저장해야 하는 아이덴티티 블록의 수에 의해 결정된다. 종래 기술에서는 악성 패턴의 첫 부분의 연속된 몇 글자인 헤드 블록을 아이덴티티 블록으로 사용하고 있으나 이러한 방식은 저장해야하는 아이덴티티 블록의 수가 매우 많아서 하드웨어 엔진으로 구현하기에는 어려움이 있다.
특허문헌 1: 미국등록특허 US 8,250,016
본 발명의 목적은 스트링 매칭 장치의 속도를 향상시키는 다중 바이트 처리 프리필터를 하드웨어 엔진으로 효율적으로 구현할 수 있도록 다중 바이트 처리 프리필터에서 비교할 아이덴티티 블록의 수를 감소시키는 방법을 제공하고자 하는 데 있다.
본 발명의 다른 목적은 상기 방법을 이용하는 스트링 매칭 장치를 제공하고자 하는 데 있다.
본 발명의 일 실시예에 따르면 패턴의 아이덴티티 블록과 입력 패킷의 블록을 비교하여 프리필터링하는 방법에 있어서, 상기 패턴의 아이덴티티 블록과 상기 입력 패킷의 블록은 문자열 블록화 단계를 통해 생성하되 상기 문자열 블록화 단계는 상기 문자열의 각 문자에 대해 해시값을 계산하는 단계; 및 상기 해시값을 이용하여 다중 바이트로 상기 문자열을 블록화하는 단계; 를 포함하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 해시값을 계산하는 단계는 기설정된 해시기준값에 기초하여, 상기 문자열의 특정문자로부터 상기 해시기준값만큼 연속되는 문자에 대한 해시값을 상기 특정문자의 해시값으로 결정하는 단계; 를 포함하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 다중 바이트로 상기 문자열을 블록화하는 단계는 기설정된 윈도우크기에 기초하여, 상기 문자열의 특정문자의 해시값으로부터 상기 윈도우크기만큼 연속되는 문자에 대한 해시값 중 최소의 해시값을 갖는 문자를 기준으로 블록을 나누는 단계; 를 포함하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 아이덴티티 블록은 상기 패턴의 블록 중 두 번째 블록인 것을 특징으로 하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 문자열 블록화 단계를 통해 생성된 상기 패턴의 아이덴티티 블록을 글자수에 따라 구분하여 저장하는 단계; 를 더 포함하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 입력 패킷의 블록의 글자수에 기초하여 상기 저장된 아이덴티티 블록과 비교하는 것을 특징으로 하는 다중바이트 프리필터 방법일 수 있다.
또한, 상기 패킷의 블록과 상기 아이덴티티 블록의 비교 결과가 일치하는 경우, 상기 입력 패킷을 상기 패턴과 바이트 단위 스트링 매칭하는 단계; 를 더 포함하는 다중바이트 프리필터 방법일 수 있다.
본 발명의 다른 실시예에 따르면 상기 방법을 수행하기 위해 컴퓨터에서 읽을 수 있는 프로그램을 기록한 기록매체일 수 있다.
본 발명의 다른 실시예에 따르면 상기 방법을 이용하여 수행되는 스트링 매칭 방법일 수 있다
본 발명의 다른 실시예에 따르면, 입력된 문자열을 블록화 하는 문자열 블록화부; 패턴을 검색하기 위한 하나 이상의 아이덴티티 블록을 저장하는 아이덴티티 블록 저장부; 상기 아이덴티티 블록 저장부에 저장된 아이덴티티 블록과 상기 문자열 블록화부에 의해 블록화된 입력 패킷의 블록을 비교하는 다중바이트 처리 프리필터부; 및 상기 프리필터부의 비교결과에 따라 바이트 단위 문자 비교를 수행하는 바이트 단위 처리 스트링매칭부; 를 포함하고, 상기 아이덴티티 블록 저장부는 상기 문자열 블록화부에 의해 블록화된 상기 패턴의 블록을 상기 아이덴티티 블록으로 저장하는 것을 특징으로 하는 패턴 매칭 장치일 수 있다.
또한, 상기 문자열 블록화부는 상기 문자열의 각 문자에 대해 해시값을 계산하는 하는 해싱부; 및 상기 해시값을 이용하여 상기 문자열을 블록화 하는 블록화부; 를 더 포함하는 패턴 매칭 장치일 수 있다.
또한, 상기 해싱부는 기설정된 해시기준값에 기초하여 상기 문자열의 특정문자로부터 상기 해시기준값만큼 연속되는 문자에 대한 해시값을 상기 특정문자의 해시값으로 결정하는 패턴 매칭 장치일 수 있다.
또한, 상기 블록화부는 기설정된 윈도우크기에 기초하여, 상기 문자열의 특정문자의 해시값으로부터 상기 윈도우크기만큼 연속되는 문자에 대한 해시값 중 최소의 해시값을 갖는 문자를 기준으로 블록을 나누는 패턴 매칭 장치일 수 있다.
또한, 상기 아이덴티티 블록 저장부는 상기 문자열 블록화부에 의해 블록화된 상기 패턴의 블록들 중 두 번째 블록을 아이덴티티 블록으로 저장하는 것을 특징으로 하는 패턴 매칭 장치일 수 있다.
또한, 상기 아이덴티티 블록 저장부는 상기 아이덴티티 블록을 글자수로 구분하여 저장하는 것을 특징으로 하는 패턴 매칭 장치일 수 있다.
또한, 상기 다중바이트 처리 프리필터부는 상기 문자열 블록화부에 의해 블록화된 입력 패킷의 블록의 글자수에 기초하여 상기 아이덴티티 블록과 비교하는 것을 특징으로 하는 패턴 매칭 장치일 수 있다.
또한, 상기 바이트단위 처리 스트링 매칭부는 상기 다중바이트 처리 프리필터부의 비교결과가 일치하는 경우, 상기 패턴과 상기 입력 패킷을 바이트단위로 비교하는 패턴 매칭 장치일 수 있다.
본 발명의 일 측면에 따르면 다중바이트 처리 프리필터부에서 비교할 아이덴티티 블록의 수를 크게 감소시킴으로써 다중 바이트 처리 프리필터를 하드웨어 엔진으로 구현할 수 있다.
본 발명의 일 측면에 따르면 하드웨어 엔진으로 구현한 다중바이트 처리 프리필터를 제공함으로써 보다 효율적인 스트링 매칭 방법을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스트링 매칭 장치를 나타낸 것이다.
도 2는 본 발명의 일 실시예에 따른 문자열 블록화부를 보다 상세히 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 문자열 블록화부의 해싱부의 동작을 보다 상세히 설명하기 위한 도면을 나타낸 것이다.
도 4는 본 발명의 일 실시예에 따른 문자열 블록화부에서 블록화부의 동작을 보다 상세히 설명하기 위한 도면을 나타낸 것이다.
도 5는 본 발명의 일 실시예에 따른 스트링 매칭 장치에서 패턴들을 문자열 블록화부에 입력한 결과 및 아이덴티티 블록을 선택하는 방법을 예시적으로 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따른 아이덴티티 블록 저장부가 아이덴틴티 블록을 저장하는 방법을 예시적으로 나타낸 것이다.
도 7은 본 발명의 일 실시예에 따른 스트링 매칭 장치에서 프리필터링을 수행하는 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 바이트단위 처리 스트링 매칭부의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 문자열 블록화 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 스트링 매칭 방법을 설명하기 위한 흐름도이다.
본 발명의 다른 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술 되는 실시 예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
만일 정의되지 않더라도, 여기서 사용되는 모든 용어들(기술 혹은 과학 용어들을 포함)은 이 발명이 속한 종래 기술에서 보편적 기술에 의해 일반적으로 수용되는 것과 동일한 의미를 가진다. 일반적인 사전들에 의해 정의된 용어들은 관련된 기술 그리고/혹은 본 출원의 본문에 의미하는 것과 동일한 의미를 갖는 것으로 해석될 수 있고, 그리고 여기서 명확하게 정의된 표현이 아니더라도 개념화되거나 혹은 과도하게 형식적으로 해석되지 않을 것이다.
본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다' 및/또는 이 동사의 다양한 활용형들 예를 들어, '포함', '포함하는', '포함하고', '포함하며' 등은 언급된 조성, 성분, 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 조성, 성분, 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 명세서에서 '및/또는' 이라는 용어는 나열된 구성들 각각 또는 이들의 다양한 조합을 가리킨다.
한편, 본 명세서 전체에서 사용되는 '~부', '~기', '~블록', '~모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미할 수 있다. 예를 들어 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미할 수 있다. 그렇지만 '~부', '~기', '~블록', '~모듈' 등이 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부', '~기', '~블록', '~모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부', '~기', '~블록', '~모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '~부', '~기', '~블록', '~모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부', '~기', '~블록', '~모듈'들로 결합되거나 추가적인 구성요소들과 '~부', '~기', '~블록', '~모듈'들로 더 분리될 수 있다.
본 발명은 데이터 심층 패킷 검사에 앞서 다중 바이트 처리 프리필터를 수행하여 심층 패킷 검사를 가속화하는 방법 및 이를 이용한 스트링 매칭 장치에 관한 것이다. 본 발명에서는 문자열 블록화부를 두어 임의의 문자열에서 특정한 문자의 조합의 경우 항상 그 문자의 조합으로 블록화할 수 있도록 해 줌으로써 다중 바이트 프리필터를 구성할 수 있다. 많은 악성 패턴들은 부분적으로 같은 형태의 연속된 알파벳이나 숫자를 가지기 때문에 이러한 부분을 아이덴티티 블록으로 사용하게 되면 하나의 아이덴티티 블록이 여러 개의 악성 패턴을 대표할 수 있기 때문에 아이덴티티 블록의 수를 크게 감소시킬 수 있다. 또한, 아이덴티티 블록의 수를 크게 감소시킴으로써 프리필터를 하드웨어 엔진으로 구현할 수 있게 해준다. 이하 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 스트링 매칭 장치(1000)를 나타낸 것이다. 본 발명의 일 실시예에 따른 스트링 매칭 장치(1000)는 문자열 블록화부(100), 다중바이트 처리 프리필터부(200) 및 바이트단위 처리 스트링매칭부(300)를 포함할 수 있다. 문자열 블록화부(100)는 스트링 매칭을 통해 검색하고자 하는 패턴이나 데이터 패킷을 입력으로 하여 특정한 문자의 조합으로 구성된 블록을 출력해준다. 문자열 블록화부(100)의 상세한 구성 및 동작 방법에 대해서는 도 2 내지 도 5를 참조하여 보다 상세히 설명할 것이다. 다중바이트 처리 프리필터부(200)는 아이덴티티 블록 저장부(220)를 포함할 수 있다. 아이덴티티 블록 저장부(220)는 문자열 블록화부(100)에 의해서 블록화된 패턴의 블록들을 글자수별로 테이블을 생성하여 저장할 수 있다. 다중바이트 처리 프리필터부(200)는 문자열 블록화부(100)에 의해서 블록화된 입력 패킷의 블록들을 아이덴티티 블록 저장부(220)에 저장된 아이덴티티 블록과 비교하여 의심되는 패킷들을 바이트단위 스트링 매칭에 앞서 검색할 수 있다. 다중바이트 처리 프리필터부(200)는 내용 주소화 메모리(CAM)과 같은 하드웨어 엔진으로 구현될 수 있다. 바이트단위 처리 스트링 매칭부(300)는 다중바이트 처리 프리필터부(200)에서 의심되는 패킷이 발견되면 입력 패킷의 정보와 패턴의 정보를 이용하여 바이트단위로 스트링 매칭을 하여 해당 패킷이 악성 패턴인지 최종적으로 검사를 하게 된다. 이 때, 바이트단위 스트링 매칭부(300)를 구성하고 있는 오토마타가 적절한 스테이트에서부터 탐색을 계속할 수 있도록 해당 스테이트 정보를 함께 다중바이트 처리 프리필터부(200)로부터 전달 받을 수 있다.
다중바이트 처리 프리필터부(200)는 바이트단위 처리 스트링 매칭부(300)가 검색을 진행하는 동안 계속해서 다중바이트 단위로 데이터를 처리하다가 다른 아이덴티티 블록이 탐지되면 동작을 멈추고 바이트단위 처리 스트링 매칭부(300)의 검색과정이 종료되기를 기다릴 수 있다. 또한, 입력되는 패킷에서 다중바이트 처리 프리필터부(200)가 아이덴티티 블록을 찾지 못하는 동안에는 바이트단위 스트링 매칭부(300)는 동작하지 않을 수 있다. 일반적으로 네트워크에 악의적인 패킷은 매우 드물게 존재하므로 아이덴티티 블록이 탐지되지 않는 경우가 훨씬 많다. 전력 소모가 중요한 요소인 어플리케이션에서는 이 시간 동안 바이트단위 처리 스트링 매칭부(300)의 전원을 오프시켜 전력소모를 줄일 수도 있다.
도 2는 본 발명의 일 실시예에 따른 문자열 블록화부(100)를 보다 상세히 나타낸 것이다. 본 발명의 일 실시예에 따른 문자열 블록화부(100)는 해싱부(120) 및 블록화부(140)를 포함할 수 있다. 해싱부(120)는 입력된 문자열에 대한 해싱을 수행할 수 있다. 해시함수는 알려진 모든 해시 함수를 사용할 수 있고 임의의 해시함수를 사용해도 무방하다. 블록화부(140)는 해싱부(120)에 의해 생성된 해시값을 이용하여 입력된 문자열을 구분하기 위한 문자들을 선택하고 이에 기초하여 블록을 생성하여 출력할 수 있다. 해싱부(120) 및 블록화부(140)의 동작 방법에 대해서는 도 3 내지 도 5를 참조하여 보다 상세히 설명할 것이다.
도 3은 본 발명의 일 실시예에 따른 문자열 블록화부(100)의 해싱부(120)의 동작을 보다 상세히 설명하기 위한 도면을 나타낸 것이다. 입력 패킷이 'server[path]'라고 가정한다. 본 발명의 일 실시예에 따른 해싱부(120)는 문자를 숫자로 해싱하는 해시함수를 사용하는 것으로 설명하고 있으나 이는 예시적인 것으로 본 발명이 속하는 기술분야의 통상의 기술자라면 필요에 따라 적절한 해시 함수를 사용하여 변형할 수 있을 것이며 이 또한 본 발명의 권리범위에 속하는 것이다. 도 3은 해시기준값을 2로 하여 해싱한 결과를 보여주고 있다. 본 발명의 일 실시예에서 해시기준값이란 해시 함수를 적용하는 연속된 문자의 길이를 의미한다. 해시기준값은 필요에 따라 다양하게 변형될 수 있을 것이다. 첫 번째 문자인 's'의 해시값은 'se'를 해싱한 결과이고 177이다. 두 번째 문자인 'e'의 해시값은 'er'을 해싱한 결과이고 87이다. 같은 방법으로 모든 문자에 대해 해싱을 수행하면 도 3과 같은 해시값을 갖게 된다. 마지막 글자의 경우 해시값을 가지지 않을 수 있다.
도 4는 본 발명의 일 실시예에 따른 문자열 블록화부(100)에서 블록화부(140)의 동작을 보다 상세히 설명하기 위한 도면을 나타낸 것이다. 블록화부(140)에서는 해싱부(120)의 해싱 결과와 윈도우크기에 기초하여 블록을 구분할 기준 문자를 선별하는 기능을 수행할 수 있다. 도 4에서는 윈도우크기를 3으로 하여 블록화를 수행하는 과정을 보여주고 있다. 본 발명의 일 실시예에서 윈도우크기란 문자열을 블록으로 구분하기 위한 기준 문자를 선별하기 위해서 한 번에 읽어들일 수 있는 해시값 수의 최대값을 의미한다. 도면에서 박스표시가 윈도우에 해당한다. 또한, 본 발명의 일 실시예에 따른 블록화부(140)에서는 윈도우 안에 있는 해시값 중 최소값을 가지는 문자를 블록 구분을 위한 기준문자로 사용하여 설명할 것이나, 이는 예시적인 것이며 본 발명의 권리범위가 제한되는 것은 아니다. 도면에서 기준문자로 선별된 문자는 O표시로 나타낸다.
먼저 1)단계에서는 첫 번째 해시값부터 차례로 3개의 해시값을 읽어들인다. (177, 87, 210) 중 최소값을 갖는 87이 선택되고 해시값 87을 갖는 문자 'e'가 블록 구분을 위한 기준 문자가 된다. 2)단계에서는 해시값 87 다음 해시값인 210부터 차례로 3개의 해시값을 읽어들인다. (210, 119, 87) 중 최소값을 갖는 87이 선택되고 해시값 해시값 87을 갖는 문자 'e'가 블록 구분을 위한 기준 문자가 된다. 3)단계에서는 해시값 87 다음 해시값인 178부터 차례로 3개의 해시값을 읽어들인다. (178, 63, 92) 중 최소값을 갖는 63이 선택되고 해시값 63을 갖는 문자 '['가 블록 구분을 위한 기준 문자가 된다. 같은 방식으로 5)단계까지 수행하게 되면 'e', 'e', '[', 't'가 블록 구분을 위한 기준 문자가 되고, 'server[path]'라는 입력은 'se', 'rve', 'r[', 'pat', 'h]'로 블록화가 된다. 블록화는 생성된 해시값에 따라 달라질 수 있지만 같은 해시 함수를 사용하게 되면 특정 패턴은 항상 같은 방식으로 나뉘게 된다. 특정 패턴을 항상 같은 방식으로 나뉘는 특성으로 인해서 악성 패턴들이 유사한 블록을 많이 가질 수 있도록 나누는 것이 가능해진다.
도 5는 본 발명의 일 실시예에 따른 스트링 매칭 장치(1000)에서 패턴들을 문자열 블록화부(100)에 입력한 결과 및 아이덴티티 블록을 선택하는 방법을 예시적으로 나타낸 것이다. 패턴 및 블록화 결과는 예시적인 것이며 해시 함수, 해시기준값, 윈도우크기에 따라 달라질 수 있다. 패턴 'ridiculous'는 문자열 블록화부(100)를 거쳐 'r', 'id', 'ic', 'ulo', 'u', 's'로 블록화가 된다. 패턴 'authenticate'는 문자열 블록화부(100)를 거쳐 'auth', 'ent', 'ica', 'te'로 블록화가 된다. 패턴 'identical'은 'id', 'ent', 'ica', 'l'로, 패턴 'confident'는 'conf', 'id', 'ent'로, 패턴 'confidental'은 'conf', 'id', 'ent', 'ial'로 패턴 'entire'는 'ent', 'ire'로 블록화가 된다. 도 5에서 보여지는 결과처럼 동일한 연속된 문자는 항상 같은 패턴으로 블록화가 이루어지게 된다. 'id', 'ent', 'ica', 'conf' 등은 여러 패턴에서 등장하며 동일하게 블록화가 된다.
각 패턴의 블록들 중에서 두 번째 블록을 프리필터링을 위한 아이덴티티 블록으로 선택한다. 즉, 'id', 'ent', 'ire'가 프리필터링을 위한 아이덴티티 블록이 된다. 두 번째 블록을 선택하는 이유는 연속적인 데이터 속에 섞여서 악성 패턴들이 입력되는 경우에 첫 글자 바로 앞에 오는 글자에 따라서 해시값이 달라질 수 있어서 첫 번째 블록은 항상 패턴의 첫 블록과 같은 형태가 만들어지지 않을 수 있다. 따라서, 악성 패턴을 블록화하여 두 번째 블록을 아이덴티티 블록으로 사용한다. 만약, 아이덴티티 블록이 탐지된 경우에는 첫 번째 블록이 맞는지에 대해 검사하기 위해 바이트단위 처리 스트링 매칭부(300)로 첫 번째 블록도 함께 넘겨주게 된다.
두 번째 블록을 아이덴티티 블록으로 선택하는 것은 예시적인 것으로 필요에 따라 첫 번째 외의 다른 블록을 사용하거나 아이덴티티 블록들을 분석하여 모든 악성 패턴을 탐색할 수 있으면서 최소한의 아이덴티티 블록 수를 갖도록 할 수도 있을 것이다.
도 6은 본 발명의 일 실시예에 따른 아이덴티티 블록 저장부(220)가 아이덴틴티 블록을 저장하는 방법을 예시적으로 나타낸 것이다. 본 발명의 일 실시예에 따른 아이덴티티 블록 저장부(220)는 아이덴티티 블록을 글자수로 구분하여 저장할 수 있고, 이에 따라 글자수로 구분하여 저장하기 위한 다수의 아이덴티티 블록 테이블을 포함할 수 있다. 예시적으로 도 6에서는 2글자 내지 4글자의 아이덴티티 블록 테이블을 포함하고 있다. 이는 예시적인 것이며 필요에 따라 다양한 글자수의 아이덴티티 블록을 갖도록 테이블을 구성할 수 있고, 글자수가 아니라 악성 패턴의 종류나 위험도 등 다른 기준으로 분류하여 구성될 수 있을 것이다. 도 5의 결과에 따라 'id'는 2글자 아이덴티티 블록 테이블(222)에, 'ent'와 'ire'는 3글자 아이덴티티 블록 테이블(224)에 저장될 수 있다.
도 7은 본 발명의 일 실시예에 따른 스트링 매칭 장치(1000)에서 프리필터링을 수행하는 방법을 설명하기 위한 도면이다. 입력 패킷이 'prefilteridentical'이라고 가정한다. 입력 패킷은 다시 도 1을 참조해보면 먼저 문자열 블록화부(100)에 거쳐 블록화가 수행된다. 이 때 패턴을 블록화한 해시함수와 동일한 해시 함수를 사용함으로써 입력되는 패킷에 대해서도 동일한 다중바이트 문자에 대해 같은 형태로 블록화되도록 할 수 있다. 입력 패킷 'prefilteridentical'은 예시적으로 'pre', 'fi', 'lte', 'r', 'id', 'ent', 'ica', 'l'로 블록화가 된다. 블록화된 블록들을 차례로 다중바이트 처리 프리필터부(200)에 입력한다. 이 경우 다중바이트 처리 프리필터부(200)는 입력된 블록의 글자수에 따라 아이덴티티 블록 저장부(220)의 아이덴티티 블록 테이블을 활성화시키고 정보를 가져와 블록을 탐지하게 된다. 'pre'가 입력되면 3글자 아이덴티티 블록 테이블(224)이 활성화되지만 3글자 아이덴티티 블록 테이블(224)에는 'pre'가 없으므로 다음 블록을 확인한다. 'fi'가 입력되면 2글자 아이덴티티 블록 테이블(222)이 활성화되지만 역시 2글자 아이덴티티 블록 테이블(222)에는 'fi'가 없으므로 다음 블록을 확인하게 된다. 순차적으로 확인하면 'id'와 'ent'가 각각 2글자 아이덴티티 블록 테이블(222)과 3글자 아이덴티티 블록 테이블(224)에서 탐지될 것이다. 이 경우, 바이트단위 처리 스트링 매칭부(300)에 정보를 넘겨주게 되는데, 이 때 포함되는 정보는 앞서 설명한 것처럼 아이덴티티 블록을 두 번째 블록으로 설정했기 때문에 탐지한 'id'의 앞 블록인 'r'과 'ent'의 앞 블록인 'id'도 함께 넘겨주게 된다. 또한, 전체 패턴을 검색하기 위해 'id'와 'ent'의 뒷 블록 중 몇 개를 함께 바이트단위 스트링 매칭부(300)로 전달할 수 있다.
도 8은 본 발명의 일 실시예에 따른 바이트단위 처리 스트링 매칭부(300)의 동작을 설명하기 위한 도면이다. 바이트단위 처리 스트링 매칭부(300)는 다중바이트 처리 프리필터부(200)로부터 넘겨받은 정보와 도시되지는 않았지만 메모리에 저장되어 있는 전체 패턴 정보를 이용하여 바이트단위로 스트링 매칭을 수행한다. 바이트단위에 대한 스트링 매칭은 알려진 스트링 매칭 방법들이 이용될 수 있다. 도 7에서 설명한 것처럼 'id'와 'ent'블록이 감지된 경우로 설명한다. 'id'를 아이덴티티 블록으로 가지는 패턴은 도 5를 참조하면 'ridiculous'와 'confident', 'confidential'이고, 'ent'를 아이덴티티 블록으로 가지는 패턴은 'authenticate'와 'identical'이다. 'id'의 경우 앞 블록인 'r'과 뒷 블록들인 'ent', 'ica', 'l'을 합쳐 패턴 'ridiculous', 'confident', 'confidential'과 비교해보면 매치가 되지 않는다. 'ent'의 경우 앞 블록인 'id'와 뒷 블록들인 'ica', 'l'을 합쳐 패턴 'authenticate'와 'identical'과 비교해보면 패턴 'identical'과 매치가 되므로 바이트단위 처리 스트링 매칭부(300)는 이 경우 매칭 결과를 출력하여 악성 패턴을 발견했음을 알릴 수 있게 된다.
앞서 설명한 것처럼 바이트단위 처리 스트링 매칭부(300)는 다중바이트 처리 프리필터부(200)가 위험을 감지했을 경우에만 동작하고 그 외의 경우에는 전원을 오프시켜 전력 소모를 줄일 수 있고, 다중바이트 처리 프리필터부(200)는 위험을 감지한 경우에 바이트단위 처리 스트링 매칭부(300)가 바이트 단위 스트링 매칭을 수행 중인 경우에는 동작을 중지하여 역시 전력 소모를 줄일 수 있다.
도 9는 본 발명의 일 실시예에 따른 문자열 블록화 방법을 설명하기 위한 흐름도이다. 문자열 블록화 방법은 탐지하고자 하는 패턴을 블록화하는 경우 및 입력 패킷을 블록화하는 경우에 사용되며 두 경우의 해시함수, 해시기준값, 윈도우크기는 동일할 수 있다. 먼저, 문자열이 입력되면(S10), 해싱부는 해시기준값에 기초하여 해시함수를 통해 각 문자에 대한 해시값을 계산한다(S11). 블록화부는 해시값과 윈도우크기에 기초하여 블록구분을 위한 기준문자를 선별하고(S12), 기준문자를 블록의 마지막 글자로 하는 블록화를 수행하여(S13) 패턴에 대해서는 아이덴티티 블록을 저장할 수 있도록 하고, 패킷에 대해서는 프리필터를 수행할 수 있도록 한다.
도 10은 본 발명의 일 실시예에 따른 스트링 매칭 방법을 설명하기 위한 흐름도이다. 스트링 매칭이 수행되기에 앞서 패턴에 대한 블록화가 수행되어 아이덴티티 블록 저장부는 패턴의 아이덴티티 블록을 저장하고 있다. 데이터 패킷이 입력되면(S20) 패턴에 대한 블록화에 이용된 해시함수, 해시기준값, 윈도우크기에 기초하여 입력 패킷에 대한 블록화가 수행된다(S21). 입력 패킷의 블록과 아이덴티티 블록 저장부에 저장된 아이덴티티 블록을 이용하여 프리필터링을 수행한다(S22). 아이덴티티 블록과 입력 패킷의 블록이 매치하는지를 확인하여(S23), 매치하지 않으면 입력 패킷 블록의 다음 블록과 아이덴티티 블록을 비교하고 매치하는 경우에는 바이트단위 처리 스트링 매칭부로 정보를 넘겨준다. 이 경우 바이트단위 처리 스트링 매칭부가 바이트단위 스트링 매칭을 수행중인지 확인하여(S24) 수행중인 경우 다중바이트 처리 프리필터부는 동작을 중지하고 바이트단위 처리 스트링 매칭부의 매칭이 종료되길 기다린다. 매칭이 종료되거나 바이트단위 스트링 매칭을 수행하지 않는 경우에는 넘겨받은 정보와 전체 패턴 정보를 이용하여 바이트단위 스트링 매칭을 수행한다(S25). 매칭 결과를 확인하여(S26) 매치하지 않는 경우에는 바이트단위 처리 스트링 매칭부는 전원을 오프하여 전력 소모를 줄이고(S27) 매치하는 경우에는 사용자에게 악성 패턴 탐지를 알리고(S28) 종료하게 된다.
전술한 본 발명의 일 실시예에 따른 문자열 블록화 방법, 다중바이트 처리 프리필터 방법 및 이를 이용한 스트링 매칭 방법은 컴퓨터에서 실행되기 위한 프로그램으로 제작되어 컴퓨터가 읽을 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 저장 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있다.
이상의 실시예들은 본 발명의 이해를 돕기 위하여 제시된 것으로, 본 발명의 범위를 제한하지 않으며, 이로부터 다양한 변형 가능한 실시예들도 본 발명의 범위에 속할 수 있음을 이해하여야 한다. 예를 들어, 본 발명의 실시예에 도시된 각 구성 요소는 분산되어 실시될 수도 있으며, 반대로 여러 개로 분산된 구성 요소들은 결합되어 실시될 수 있다. 따라서, 본 발명의 기술적 보호범위는 특허청구범위의 기술적 사상에 의해 정해져야 할 것이며, 본 발명의 기술적 보호범위는 특허청구범위의 문언적 기재 그 자체로 한정되는 것이 아니라 실질적으로는 기술적 가치가 균등한 범주의 발명에 대하여까지 미치는 것임을 이해하여야 한다.
1000: 스트링 매칭 장치
100: 문자열 블록화부
220: 아이덴티티 블록 저장부
200: 다중바이트 처리 프리필터부
300: 바이트단위 처리 스트링 매칭부

Claims (17)

  1. 패턴 매칭을 위한 아이덴티티 블록 설정 방법으로,
    상기 아이덴티티 블록 설정 방법은:
    다수의 패턴 각각의 문자열을 다수의 문자열 블록으로 나누는 문자열 블록화 단계; 그리고,
    각 패턴의 다수의 문자열 블록 중에서 첫 번째 문자열 블록 이외의 문자열 블록을 아이덴티티 블록으로 설정하는 아이덴티티 블록 설정 단계를 포함하는 아이덴티티 블록 설정 방법.
  2. 제1항에 있어서,
    검사 대상이 되는 입력 패킷을 상기 다수의 패턴에 대한 문자열 블록화 단계와 동일한 방식으로 다수의 문자열 블록으로 나누는 단계; 그리고,
    상기 입력 패킷에서 생성된 다수의 문자열 블록 각각을 상기 아이덴티티 블록으로 설정된 문자열 블록과 비교하는 단계를 더 포함하는 아이덴티티 블록 설정 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 문자열 블록화 단계는
    상기 문자열의 각 문자에 대해 해시값을 계산하는 단계; 및
    상기 해시값을 이용하여 다중 바이트로 상기 문자열을 블록화하는 단계; 를 포함하는 아이덴티티 블록 설정 방법.
  4. 제3항에 있어서,
    상기 해시값을 계산하는 단계는
    기설정된 해시기준값에 기초하여, 상기 문자열의 특정문자로부터 상기 해시기준값만큼 연속되는 문자에 대한 해시값을 상기 특정문자의 해시값으로 결정하는 단계; 를 포함하는 아이덴티티 블록 설정 방법.
  5. 제3항에 있어서,
    상기 다중 바이트로 상기 문자열을 블록화하는 단계는
    기설정된 윈도우크기에 기초하여,
    상기 문자열의 특정문자의 해시값으로부터 상기 윈도우크기만큼 연속되는 문자에 대한 해시값 중 최소의 해시값을 갖는 문자를 기준으로 블록을 나누는 단계; 를 포함하는 아이덴티티 블록 설정 방법.
  6. 제1항 또는 제2항에 있어서,
    상기 아이덴티티 블록 설정 단계는 상기 다수의 패턴의 각 문자열 블록 중 두 번째 문자열 블록을 아이덴티티 블록으로 설정하는 아이덴티티 블록 설정 방법.
  7. 제1항 또는 제2항에 있어서,
    설정된 아이덴티티 블록들을 글자수에 따라 구분하여 저장하는 단계; 를 더 포함하는 아이덴티티 블록 설정 방법.
  8. 제2항에 있어서,
    상기 입력 패킷의 문자열 블록들 중 상기 아이덴티티 블록과 일치하는 문자열 블록이 있을 경우,
    상기 입력 패킷을 일치하는 상기 아이덴티티 블록을 포함하는 패턴과 바이트 단위 스트링 매칭하는 단계; 를 더 포함하는 아이덴티티 블록 설정 방법.
  9. 제1항 또는 제2항의 방법을 수행하기 위해 컴퓨터에서 읽을 수 있는 프로그램을 기록한 기록매체.
  10. 입력된 문자열을 블록화 하는 문자열 블록화부;
    패턴을 검색하기 위한 하나 이상의 아이덴티티 블록을 저장하는 아이덴티티 블록 저장부;
    상기 아이덴티티 블록 저장부에 저장된 아이덴티티 블록과 상기 문자열 블록화부에 의해 블록화된 입력 패킷의 블록을 비교하는 다중바이트 처리 프리필터부; 및
    상기 프리필터부의 비교결과에 따라 바이트 단위 문자 비교를 수행하는 바이트 단위 처리 스트링매칭부; 를 포함하고,
    상기 문자열 블록화부는 다수의 패턴 각각의 문자열을 다수의 문자열 블록으로 나누고 상기 아이덴티티 블록 저장부는 상기 다수의 패턴 각각의 다수의 문자열 블록 중에서 첫 번째 문자열 블록 이외의 문자열 블록을 아이덴티티 블록으로 저장하는 패턴 매칭 장치.
  11. 제10항에 있어서,
    상기 문자열 블록화부는
    상기 문자열의 각 문자에 대해 해시값을 계산하는 하는 해싱부; 및
    상기 해시값을 이용하여 상기 문자열을 블록화 하는 블록화부; 를 더 포함하는 패턴 매칭 장치.
  12. 제11항에 있어서,
    상기 해싱부는 기설정된 해시기준값에 기초하여
    상기 문자열의 특정문자로부터 상기 해시기준값만큼 연속되는 문자에 대한 해시값을 상기 특정문자의 해시값으로 결정하는 패턴 매칭 장치.
  13. 제11항에 있어서,
    상기 블록화부는 기설정된 윈도우크기에 기초하여,
    상기 문자열의 특정문자의 해시값으로부터 상기 윈도우크기만큼 연속되는 문자에 대한 해시값 중 최소의 해시값을 갖는 문자를 기준으로 블록을 나누는 패턴 매칭 장치.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 아이덴티티 블록 저장부는
    상기 문자열 블록화부에 의해 블록화된 상기 패턴의 블록들 중 두 번째 블록을 아이덴티티 블록으로 저장하는 것을 특징으로 하는 패턴 매칭 장치.
  15. 제14항에 있어서,
    상기 아이덴티티 블록 저장부는
    상기 아이덴티티 블록을 글자수로 구분하여 저장하는 것을 특징으로 하는 패턴 매칭 장치.
  16. 제15항에 있어서,
    상기 다중바이트 처리 프리필터부는 상기 문자열 블록화부에 의해 블록화된 입력 패킷의 블록의 글자수에 기초하여 상기 아이덴티티 블록과 비교하는 것을 특징으로 하는 패턴 매칭 장치.
  17. 제10항에 있어서,
    상기 바이트단위 처리 스트링 매칭부는 상기 다중바이트 처리 프리필터부의 비교결과가 일치하는 경우, 상기 패턴과 상기 입력 패킷을 바이트단위로 비교하는 패턴 매칭 장치.

KR1020130006022A 2013-01-18 2013-01-18 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치 KR101465132B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130006022A KR101465132B1 (ko) 2013-01-18 2013-01-18 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130006022A KR101465132B1 (ko) 2013-01-18 2013-01-18 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치

Publications (2)

Publication Number Publication Date
KR20140093518A KR20140093518A (ko) 2014-07-28
KR101465132B1 true KR101465132B1 (ko) 2014-11-25

Family

ID=51739690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130006022A KR101465132B1 (ko) 2013-01-18 2013-01-18 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치

Country Status (1)

Country Link
KR (1) KR101465132B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101671816B1 (ko) 2015-11-06 2016-11-02 국방과학연구소 사이버 공격 탐지를 위한 대용량 패킷분석 dpi 시스템에서 저용량 파일의 검진처리 성능향상을 위한 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065306A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 시그니처 패턴 매칭방법과 그 시스템 및 시그니처 패턴이기록된 기록매체
KR101075439B1 (ko) * 2010-08-31 2011-10-24 연세대학교 산학협력단 멀티 코어 프로세서를 기반으로 하는 문자열 매칭 장치 및 그것의 문자열 매칭 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065306A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 시그니처 패턴 매칭방법과 그 시스템 및 시그니처 패턴이기록된 기록매체
KR101075439B1 (ko) * 2010-08-31 2011-10-24 연세대학교 산학협력단 멀티 코어 프로세서를 기반으로 하는 문자열 매칭 장치 및 그것의 문자열 매칭 방법

Also Published As

Publication number Publication date
KR20140093518A (ko) 2014-07-28

Similar Documents

Publication Publication Date Title
US9990583B2 (en) Match engine for detection of multi-pattern rules
US20170262633A1 (en) System and method for automated machine-learning, zero-day malware detection
CN102395985A (zh) 可变步长流分割和多模式匹配
CN105224600B (zh) 一种样本相似度的检测方法及装置
US11080398B2 (en) Identifying signatures for data sets
WO2011059551A1 (en) Method and system for text filtering
CA2710614C (en) Intrusion detection systems and methods
CN111869176B (zh) 用于恶意软件签名生成的系统和方法
US11533373B2 (en) Global iterative clustering algorithm to model entities' behaviors and detect anomalies
Naik et al. Fuzzy hashing aided enhanced YARA rules for malware triaging
KR20180133726A (ko) 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
US10339297B2 (en) Determining whether continuous byte data of inputted data includes credential
CN114168954A (zh) 基于正则匹配的入侵检测的方法和装置
KR101465132B1 (ko) 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치
Weng et al. Deep packet pre-filtering and finite state encoding for adaptive intrusion detection system
KR102246405B1 (ko) Tf-idf 기반 벡터 변환 및 데이터 분석 장치 및 방법
KR100992440B1 (ko) 여러 개의 연속된 부분패턴을 이용한 다중 패턴매칭 방법
Zhang An improved Wu-Manber multiple patterns matching algorithm
US11025650B2 (en) Multi-pattern policy detection system and method
KR20070003488A (ko) 효율적인 패턴검색을 위한 tcam에서의 정규수식표현방법 및 이를 이용한 패턴 검색방법
CN111159996A (zh) 一种基于改进的文本指纹算法的短文本集合相似度比较方法及系统
CN112883372A (zh) 跨站脚本攻击检测方法和装置
CN107463845A (zh) 一种sql注入攻击的检测方法、系统和计算机处理设备
CN116192448A (zh) 一种恶意样本数据包分析方法、装置及电子设备
CN113051566A (zh) 一种病毒检测方法、装置、电子设备及存储介质

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