KR101225870B1 - 안티 멀웨어 시스템 및 그의 동작 방법 - Google Patents
안티 멀웨어 시스템 및 그의 동작 방법 Download PDFInfo
- Publication number
- KR101225870B1 KR101225870B1 KR1020110051706A KR20110051706A KR101225870B1 KR 101225870 B1 KR101225870 B1 KR 101225870B1 KR 1020110051706 A KR1020110051706 A KR 1020110051706A KR 20110051706 A KR20110051706 A KR 20110051706A KR 101225870 B1 KR101225870 B1 KR 101225870B1
- Authority
- KR
- South Korea
- Prior art keywords
- matching
- pattern
- target data
- hash value
- rule
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/22—Arrangements for preventing the taking of data from a data transmission channel without authorisation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
안티 멀웨어 시스템 및 그의 동작 방법이 개시된다. 안티 멀웨어 시스템은, 필터링 대상인 데이터(이하, '제1타겟데이터'라고 함)와 룰 패턴을 매칭시키고, 매칭 결과에 따라서 제1타겟데이터에 대해 필터링 동작을 수행하고, 바이러스 스캐닝 대상이 되는 데이터(이하, '제2타겟데이터'라고 함)와 바이러스 패턴을 매칭시키고, 매칭 결과에 따라서 상기 제2타겟데이터에 대해 바이러스 스캐닝 동작을 수행하며, 필터링 동작과 스캐닝 동작은 시스템 온 칩 상에서 동작할 수 있다.
Description
본 발명은 안티 멀웨어 시스템 및 그의 동작 방법에 관한 것으로, 보다 상세하게는 고속으로 멀웨어를 필터링하거나 스캐닝할 수 있는 안티 멀웨어 시스템 및 그의 동작 방법에 관한 것이다.
멀웨어(Malware)는 컴퓨터 바이러스, 트로이 목마, 악성 코드(Malicious Code) 등 컴퓨터에 악영향을 끼칠 수 있는 모든 소프트웨어를 총칭한다. 모바일 디바이스의 하드웨어가 고급화되고 휴대단말기에서 수행되는 응용프로그램이 다양해지고 복잡해져 감에 따라 기존 컴퓨터를 공격하던 멀웨어가 모바일 디바이스에도 심각한 폐해를 일으킬 가능성이 높아지고 있다. 특히, 와이브로(WiBro) 등 무선 휴대 인터넷 서비스가 확산되는 추세에 따라 기존 컴퓨터용 응용 프로그램의 취약점을 공격하는 악성코드에 더하여 블루투스(Bluetooth), MMS(Multimedia Messaging System) 등 응용 프로그램 및 서비스의 취약점을 공격하는 모바일 악성코드(mobile malware)가 등장하고 있다. 이러한 각종 악성코드들은 모바일 디바이스의 오동작을 유도하고 데이터를 삭제하거나 사용자 개인정보를 유출하는 등 심각한 피해를 입힐 수 있다.
기존의 안티 멀웨어 솔루션(Anti-Malware Solution)들은 소프트웨어 기반으로 되어있으며, 이러한 형태로 모바일 디바이스에 사용되고 있다. 모바일 디바이스는 CPU(Control Processing Unit), 배터리 등의 구성요소로 인하여 자원(resource)에 제한이 있으므로, 종래 소프트웨어 기반의 안티 멀웨어 솔루션을 사용할 경우 퍼포먼스 저하로 인하여 사용자가 다른 작업을 수행하게 하는데 불편함이 있다. 또한, 네트워크 패킷들을 감시할 때에도 퍼포먼스가 좋지 않기 때문에, 모든 패킷들을 모니터링 하기 어렵다.
본 발명의 일 실시예에 따르면 고속으로 멀웨어를 필터링하고 스캐닝할 수 있는 안티 멀웨어 시스템 및 그의 동작 방법을 제공하는 것을 일 목적으로 한다.
본 발명의 다른 실시예에 따르면 한정된 리소스를 가진 모바일 디바이스에 있어서 고속으로 멀웨어를 필터링하고 스캐닝할 수 있는 안티 멀웨어 시스템 및 그의 동작방법을 제공하는 것을 일 목적으로 한다.
본 발명의 일 실시예에 따르면, 안티 멀웨어 시스템에서의 동작방법은, 필터링 대상인 데이터(이하, '제1타겟데이터'라고 함)와 룰 패턴을 매칭시킴으로써, 상기 제1타겟데이터에 대해 필터링 동작을 수행하는 단계; 및 바이러스 스캐닝 대상이 되는 데이터(이하, '제2타겟데이터'라고 함)와 바이러스 패턴을 매칭시킴으로써 상기 제2타겟데이터에 대해 바이러스 스캐닝 동작을 수행하는 단계;를 포함하며, 상기 필터링 동작과 상기 스캐닝 동작은 시스템 온 칩 상에서 동작한다.
한편, 본 발명의 다른 실시예에 따르면, 타겟데이터를 수신하여 안티 멀웨어를 스캐닝하거나 필터링하는 안티 멀웨어 시스템은, 멀웨어 패턴을 저장하는 저장부; 상기 타겟데이터의 적어도 일부의 해시값과, 상기 멀웨어 패턴의 해시값을 매칭시키는 제1해시값 매칭부; 및 상기 해시값의 매칭이 성공한 경우, 상기 멀웨어 패턴과 상기 타겟데이터의 일부를 매칭시키는 제1라이트 패턴 매칭부;를 포함하며, 상기 라이트 패턴 매칭이 성공한 경우, 상기 멀웨어 패턴과 상기 타겟데이터의 전부를 매칭시킨다.
본 발명의 일 실시예에 따르면 한정된 리소스를 가진 모바일 디바이스에 있어서 고속으로 멀웨어를 필터링하고 스캐닝할 수 있다.
본 발명의 일 실시예에 따르면 모바일 디바이스의 메인 CPU외의 시스템 온 칩 자체에 CPU를 사용함으로써 메인 CPU에 부하를 주지 않고 안티멀웨어 시스템의 역할을 할 수 있다. 본 발명의 일 실시예에 따르면은 본 안티 멀웨어 시스템은 SoC형태로 하드웨어 로직과 소프트웨어 모듈들의 결합으로 여러 부품들이 집적화되는 것이 가능하므로, 빠른 변화가 요구되는 소프트웨어의 기능적인 부분을 만족시킬 수 있다. 그리고, 소프트웨어의 변경 사항을 반영할 수 있고, 바이러스 DB부분에 대한 업데이트 처리에 유연한 대응이 가능하다. 특히, 포터블한 디바이스에서 고성능 및 저전력의 요구사항을 만족시키기에 적합하다.
또한, 본 발명의 일 실시예에 의하면 SoC상에서 하드웨어 로직인 방화벽 엔진을 이용하여 패킷에 대한 필터링을 신속하게 처리할 수 있으며, SoC상에서 하드웨어 로직인 안티 바이러스 엔진을 이용하여 파일에 대한 패턴의 매칭 결과를 신속하게 처리 할 수 있는 효과가 있다.
또한, SoC상에서 소프트웨어가 직접 패턴매칭에 관련된 작업들을 수행하여 같은 패턴을 검출하기 때문에, 필요 시 언제든지 용이하게 알고리즘의 업데이트를 할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 안티 멀웨어 시스템을 포함하는 모바일 디바이스를 도시한 블록도,
도 2는 본 발명의 실시예에 따른 안티 멀웨어 시스템을 도시한 블록도,
도 3은 본 발명의 일 실시예에 따른 제1안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 4는 도 3의 FW 엔진, AV 엔진 및 매칭부를 설명하기 위한 도면,
도 5는 제1해시 매처 테이블과 제1서브 매처 테이블의 일 예를 보여주는 도면,
도 6은 도 4의 AV 엔진이 사용하는 패턴 해시값 테이블의 일 예를 도시한 도면,
도 7은 도 4의 AV 엔진이 사용하는 제2해시 매처 테이블과 제2서브 매처 테이블의 일 예를 보여주는 도면,
도 8은 본 발명의 다른 실시예에 따른 제2안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 9는 본 발명의 다른 실시예에 따른 제3안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 10은 FW 엔진을 설명하기 위한 도면,
도 11은 AV 엔진을 설명하기 위한 도면,
도 12는 본 발명의 다른 실시예에 따른 제4안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 13은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서의 동작방법을 설명하기 위한 흐름도,
도 14는 도 2에 도시한 안티바이러스 엔진의 하드웨어 구성을 나타낸 블럭도,
도 15는 본 발명의 일 실시예에 따른 안티바이러스 엔진에서 바이러스 스캐닝 동작을 설명하기 위한 도면,
도 16은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서 안티 바이러스 엔진의 동작 방법을 보여주는 흐름도,
도 17은 도 16의 S1609 단계의 해시 매처의 매칭 동작을 설명하기 위한 흐름도,
도 18은 S1711단계의 라이트 패턴 매처의 매칭 동작을 설명하기 위한 흐름도,
도 19는 본 발명의 일 실시예에 따른 방화벽 엔진에서 패킷 필터링 동작을 설명하기 위한 도면,
도 20은 본 발명의 일 실시예에 따른 방화벽 엔진의 패킷 필터링 방법을 설명하기 위한 흐름도,
도 21은 S2003단계의 패킷 분류 프로세스를 설명하기 위한 흐름도,
도 22는 S2103단계의 IP 매칭 프로세스를 설명하기 위한 흐름도,
도 23은 S2109단계의 프로토콜 매칭 프로세스를 설명하기 위한 흐름도, 그리고,
도 24는 S2115단계의 포트 매칭 프로세스를 설명하기 위한 흐름도이다.
도 2는 본 발명의 실시예에 따른 안티 멀웨어 시스템을 도시한 블록도,
도 3은 본 발명의 일 실시예에 따른 제1안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 4는 도 3의 FW 엔진, AV 엔진 및 매칭부를 설명하기 위한 도면,
도 5는 제1해시 매처 테이블과 제1서브 매처 테이블의 일 예를 보여주는 도면,
도 6은 도 4의 AV 엔진이 사용하는 패턴 해시값 테이블의 일 예를 도시한 도면,
도 7은 도 4의 AV 엔진이 사용하는 제2해시 매처 테이블과 제2서브 매처 테이블의 일 예를 보여주는 도면,
도 8은 본 발명의 다른 실시예에 따른 제2안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 9는 본 발명의 다른 실시예에 따른 제3안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 10은 FW 엔진을 설명하기 위한 도면,
도 11은 AV 엔진을 설명하기 위한 도면,
도 12는 본 발명의 다른 실시예에 따른 제4안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도,
도 13은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서의 동작방법을 설명하기 위한 흐름도,
도 14는 도 2에 도시한 안티바이러스 엔진의 하드웨어 구성을 나타낸 블럭도,
도 15는 본 발명의 일 실시예에 따른 안티바이러스 엔진에서 바이러스 스캐닝 동작을 설명하기 위한 도면,
도 16은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서 안티 바이러스 엔진의 동작 방법을 보여주는 흐름도,
도 17은 도 16의 S1609 단계의 해시 매처의 매칭 동작을 설명하기 위한 흐름도,
도 18은 S1711단계의 라이트 패턴 매처의 매칭 동작을 설명하기 위한 흐름도,
도 19는 본 발명의 일 실시예에 따른 방화벽 엔진에서 패킷 필터링 동작을 설명하기 위한 도면,
도 20은 본 발명의 일 실시예에 따른 방화벽 엔진의 패킷 필터링 방법을 설명하기 위한 흐름도,
도 21은 S2003단계의 패킷 분류 프로세스를 설명하기 위한 흐름도,
도 22는 S2103단계의 IP 매칭 프로세스를 설명하기 위한 흐름도,
도 23은 S2109단계의 프로토콜 매칭 프로세스를 설명하기 위한 흐름도, 그리고,
도 24는 S2115단계의 포트 매칭 프로세스를 설명하기 위한 흐름도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. 본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 게재될 수도 있다는 것을 의미한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
본 발명의 실시예에서 안티 멀웨어(Anti-malware) 기능을 수행하는 안티 멀웨어 시스템은 SoC 기반으로 단독 칩 형태로 구현되거나 기존의 어플리케이션 프로세서 안에 하나의 IP 칩의 형태로 구현될 수 있다.
휴대폰, 스마트폰, 태블릿 PC 등을 비롯한 다수의 모바일 디바이스들은 부품간의 인터페이스 규격이 표준화되어 있지 않을 뿐만 아니라, 기능별로 다양한 라인을 갖는 모델들이 많다. 따라서, 본 발명에서 설명하는 구성의 예는 하나의 실시예일뿐이며, 인터페이스 상황 별로 본 발명의 구현 예는 다를 수 있다. 또한, 본 발명의 실시예에서는 모바일 디바이스를 예로 들어 설명하나, 일반 PC와 같은 컴퓨팅 디바이스에도 적용 가능함은 물론이다.
도 1은 본 발명의 실시예에 따른 안티 멀웨어 시스템을 포함하는 모바일 디바이스를 도시한 블록도이다.
도 1을 참조하면, 안티 멀웨어 시스템(100)은 단독 칩 형태로 구현되어 모바일 디바이스에 장착될 수 있다. 안티 멀웨어 시스템(100)은 모바일 프로세서(10)와 데이터 및 어드레스 신호, 리드 및 라이트(read and write) 신호, 제어(control) 신호를 주고 받는다.
또한, 안티 멀웨어 시스템(100)은 디버그 포트(20)와 디버깅(debugging)을 위한 UART(Universal Asynchronous Receiver Transmitter), GPIO(General Purpose Input/Output Pin)를 통해 통신한다.
안티 멀웨어 시스템(100)은 NIC(Network Interface Card)(30)을 포함하는 주변장치와 통신하기 위한 SPI(Serial Peripheral Interface)를 포함할 수 있다.
안티 멀웨어 시스템(100)은 와이파이(WiFi)(40)를 포함하는 인터럽트 처리를 위한 GPIO를 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 안티 멀웨어 시스템을 도시한 블록도이다.
도 2를 참조하면, 안티 멀웨어 시스템(100)은 컨피규어 버스(101, 125), CPU(103), DMA(Direct Memory Access) 컨트롤러(105), 로컬버스(107, 131), SDRAM(Synchronous Dynamic Random Access Memory) 컨트롤러(109), 플래시 컨트롤러(111), SRAM(Static Random Access Memory) 컨트롤러(113), 버퍼(115), 안티 바이러스 H/W(117), 방화벽 H/W(119), 버스 매트릭스(121) 및 부트(123)를 포함하여 이루어진다. 안티 멀웨어 시스템(100)은 SDRAM(127), 플래시 메모리(129), 및 SRAM(130)를 더 포함할 수 있다.
CPU(103)는 안티 멀웨어 시스템(100)을 전반적으로 제어하고, 요구되는 작업을 처리한다. 본 발명의 일 실시예에서 CPU(103)는 재구성 가능한 CPU일 수 있으나, 이는 예시적인 것으로서 재구성 가능한 CPU가 아니라도 본원 발명에 사용될 수 있다.
DMA 컨트롤러(105)는 DMA를 제어하는 역할을 한다.
도 2에서 메모리 컨트롤러는 SDRAM 컨트롤러(109), 플래시 컨트롤러(111) 및 SRAM 컨트롤러(113)를 포함할 수 있다. SDRAM 컨트롤러(109)는 SDRAM(127)에 대한 입출력을 제어한다. 플래시 컨트롤러(111)는 플래시 메모리(129)에 대한 입출력을 제어한다. SRAM 컨트롤러(113)는 SRAM(130)에 대한 입출력을 제어한다.
버퍼(115)는 외부와의 인터페이스를 통해 데이터를 임시 저장한다.
안티 바이러스 하드웨어(H/W)(117)는 바이러스 스캐닝 대상이 되는 타겟데이터와 바이러스 패턴간에 매칭동작을 수행할 수 있다. 예를 들면 바이러스 패턴 DB(Database)는 SRAM(130)에 저장되어 있을 수 있으며, 안티 바이러스 H/W(117)는 바이러스 패턴 DB와 타겟데이터간의 매칭 동작을 수행할 수 있다.
방화벽 하드웨어(H/W)(119)도 하드웨어로 구현되어, 필터링 대상이 되는 타겟데이터와 룰 패턴 DB를 매칭시키는 동작을 수행할 수 있다. 예를 들면, 룰 패턴 DB는 SRAM(130)에 저장되어 있을 수 있으며, 방화벽 H/W(119)는 룰 패턴 DB와 타겟데이터 간의 매칭 동작을 수행할 수 있다.안티 바이러스 H/W(117)를 구동하는 소프트웨어나 방화벽 H/W(119)를 구동하는 소프트웨어는 메모리들(127, 129, 130) 중 어느 하나에 로딩되어, 하드웨어들(117, 119)을 제어한다.
안티 멀웨어 시스템(100)에서 각 블록 간의 데이터 전송을 위한 버스는, 데이터의 신속한 전송을 위한 로컬 버스(107, 131)와, 컨피규레이션(configuration)을 위한 컨피규어(configure) 버스(101, 125)로 구분할 수 있다. 본 발명에서 로컬 버스(107)와 컨피규어 버스(101, 125)는 AHB(Advanced High Performance Bus) 규격으로 되어 있을 수 있다.
버스 매트릭스(121)는 AHB 규격의 제어 신호와 데이터 신호를 APB(Advanced Peripheral Bus) 규격의 제어 신호와 데이터 신호로 변환하거나, APB 규격의 제어 신호와 데이터 신호를 AHB 규격의 제어 신호와 데이터 신호로 변환하여 전달하는 역할을 한다.
부트(123)는 SoC에서 안티 멀웨어 시스템(100)이 초기 동작되도록 하는 역할을 한다.
이하에서는 도 3 내지 도 11을 참조하여 본 발명의 다양한 실시예들에 따른 안티 멀웨어 시스템에 대해 설명한다. 도 3 내지 도 11에 도시된 제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200)은 도 1 및 도 2를 참조하여 설명한 안티 멀웨어 시스템(100)의 일 실시예이다.
제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200)은 SoC 형태로 구현되거나, 혹은 PC, 모바일 기기 등 네트워크 통신이 가능한 기기 자체에 탑재될 수 있다. 그러므로, 제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200)이 탑재된 기기는 제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200)을 사용하기 위한 드라이버(미도시)와 어플리케이션부(미도시)를 포함할 수 있다. 즉, 제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200)이 기기 내에서 동작하기 위해서는, 소프트웨어적 계층 구조에 따라 제1 내지 4안티 멀웨어 시스템들(300, 800, 900, 1200) 상에 드라이버가 설치되고, 드라이버 상에 어플리케이션부가 설치될 수 있다.
도 3은 본 발명의 일 실시예에 따른 제1안티 멀웨어 시스템(300)의 기능을 설명하기 위한 기능 블록도이다.
도 3을 참조하면, 제1안티 멀웨어 시스템(300)은 매니저(310), 룰 패턴 DB(320), 바이러스 패턴 DB(330), 방화벽(FW: Firewall) 엔진(340), 매칭부(350) 및 안티바이러스(AV: Anti-Virus) 엔진(360)을 포함할 수 있다.
매니저(310)는 룰 관련 설정, 룰 패턴 DB(320) 생성/삭제/추가/변경 및 바이러스 패턴 DB(330)의 업데이트(생성/삭제/추가/변경)을 담당하고, 사용자 명령을 처리한다. 사용자 명령은 예를 들어, 방화벽 엔진의 업데이트나 안티바이러스 엔진과 관련된 명령일 수 있다.
먼저, 매니저(310)가 룰 패턴 DB(320)를 생성하는 동작에 대해 설명한다. 매니저(310)는 자료 구조인 커맨드 리스트(Command List)와 룰 리스트(Rule List)를 포함하며, 이러한 자료 구조를 처리하는 방화벽 커맨더(FW Commander) 모듈과 룰 매니저(Rule Manager) 모듈을 포함할 수 있다.
사용자가 방화벽 어플리케이션이 제공하는 방화벽 UI(User Interface)를 통해 방화벽 룰 설정을 수행하면, 방화벽 커맨더는 사용자의 설정에 해당하는 명령어를 매니저(310)의 커맨드 리스트에 추가하고, 매니저(310)를 활성화(wake up)시킨다. 커맨드 리스트에 추가된 명령어가 룰 추가 명령이면, 방화벽 커맨더는 룰 추가 명령의 데이터 필드에 있는 정보를 바탕으로 룰 패턴들을 생성하여 룰 리스트에 추가할 수 있다. 그리고, 룰 적용 명령이 커맨드 리스트에 추가되면, 방화벽 커맨더는 룰 매니저를 호출하여 룰 리스트에 등록된 룰 패턴들을 바탕으로 룰 패턴 DB(320)를 생성하거나 업데이트할 수 있다.
룰 패턴 DB(320)는 패킷의 통과 여부를 정한 룰 패턴들의 집합체이다. 이러한 룰 패턴 DB(320)는 매니저(310)가 사용자 어플리케이션으로부터 룰에 관한 리스트를 전송 받아서, 생성한 것일 수 있다. 또한, 매니저(310)는 룰 패턴 DB를 방화벽 엔진이 사용할 수 있도록 소정의 메모리(또는 버퍼)에 로딩시키는 기능을 수행할 수 있다.
다르게는, 사용자 어플리케이션이 룰 패턴 DB 자체를 매니저(310)로 송부하고, 매니저(310)는 그러한 룰 패턴 DB를 수신한 후 방화벽 엔진이 사용할 수 있도록 소정의 메모리(또는 버퍼)에 로딩시키는 기능을 수행하도록 구성하는 것도 가능할 것이다.
룰 패턴 DB(320)는 사용자에 의해 직접 설정된 룰 패턴을 정해진 형태로 변환하여 DB화한 것일 수 있다. 룰 패턴들은 각각, 타겟데이터를 허용(ALLOW)할지 또는 차단(BLOCK)할지에 대한 정보를 가지고 있을 수 있다. 따라서, 룰 패턴 DB(320) 또는 룰 패턴들은 FW 엔진(340)이 외부로부터 유입된 타겟데이터를 허용할지 또는 차단할지를 판단하기 위하여 사용된다. 이러한 룰 패턴 DB(320)는 FW 엔진(340)이 룰 패턴들 각각의 해시값을 생성하는데 사용되고, 해시값 매칭, LPM(Light Pattern Matching) 및 EPM(Exact Pattern Matching)을 수행할 때에도 사용될 수 있다.
바이러스 패턴 DB(330)는 바이러스 패턴들의 집합체로서, AV 엔진(360)이 바이러스 스캐닝 동작을 수행할 때 사용될 수 있다. 매니저(310)는 AV 어플리케이션(미도시)으로부터 바이러스 패턴 DB를 전송 받아서, 소정의 저장부에 저장할 수 있다. 매니저(310)는 기저장된 바이러스 패턴 DB를 업데이트하는 기능을 수행할 수 있다.
바이러스 패턴들은 타겟데이터의 바이러스 감염 여부를 검출하기 위하여 AV 엔진(360)이 타겟데이터와의 매칭 동작을 수행할 때 사용될 수 있다. 룰 패턴 DB(320)와 바이러스 패턴 DB(330)는 SoC에 구비된 메모리(예를 들어, 도 2의 플래시 메모리(129))에 또는 별도로 구비된 메모리(미도시)에 저장되어 있을 수 있다.
구체적으로, 바이러스 패턴 DB(330)는 AV 엔진(360)이 바이러스 패턴들 각각의 해시값을 생성할 때 사용 되거나, 타겟데이터와 바이러스 패턴을 이용하여 LPM, EPM 및 FPM을 수행할 때 사용될 수 있다. 바이러스 패턴 DB(330)는 문법적으로 정해진 간단한 바이러스 패턴들을 모아 놓은 것일 수 있고, 또는 문법적으로 복잡한 바이러스 패턴들을 모아 놓은 것일 수도 있으며, 또는 문법적으로 간단한 바이러스 패턴들과 문법적으로 복잡한 바이러스 패턴들이 혼재되어 있는 것일 수도 있다. 문법적으로 간단한 바이러스 패턴들 또는 복잡한 바이러스 패턴들에 대한 정의는 한국 특허출원번호 제10-2010-0049566호(2010. 5. 27일자 출원)와 한국 특허출원번호 제10-2010-0052981(2010. 6. 4 일자 출원)에 기재되어 있으며, 그러한 패턴들에 대한 정의와 내용은 본원과 상충되지 않는 범위 내에서 본원 명세서의 일부로서 결합된다.
본 발명의 일 실시예에 따른 매니저(310)는 사용자 어플리케이션으로부터 수신되는 명령이나 데이터 등을 해석하여 그에 대응되는 동작을 수행할 수 있다.
예를 들면, 스캐닝 동작과 관련된 명령을 수신한 경우에는 AV 엔진(360)을 동작시킬 수 있고, 바이러스 패턴 DB의 업데이트 명령을 수신한 경우에는 바이러스 패턴 DB(330)을 업데이트 시킬 수 있다. 또한, 매니저(310)는 스캐닝 대상이 되는 파일을 사용자 어플리케이션으로부터 전송 받고, 전송 받은 스캐닝 대상이 되는 파일에 대하여 AV 엔진(360)이 스캐닝 동작을 수행하도록 지시할 수 있으며, 그리고 AV 엔진(360)의 스캐닝 결과를 사용자 어플리케이션에게 전송할 수 도 있다.
한편, FW 엔진(340)의 동작과 관련하여, 매니저(310)는 사용자 어플리케이션으로부터 필터링 결과 보고 지시를 수신할 수 있으며, 그러한 지시에 대응하여 FW 엔진(340)의 필터링 결과를 사용자 어플리케이션으로 전송할 수 있다.
매니저(310)는 어플리케이션으로부터 어떤 명령 또는 데이터를 수신하면, 그것이 스캐닝과 관련된 것인지 아니면 필터링과 관련된 것인지에 대한 해석을 하고, 그에 대응되는 동작을 수행한다.
예를 들면, 매니저(310)는 스캐닝 명령을 수신한 경우에는, AV 엔진(360)을 동작시켜 스캐닝 동작을 수행하게 할 수 있다. 타겟데이터는 웹 브라우저 또는 각종 파일을 생성 및 관리하는 어플리케이션부(미도시)로부터 입력될 수 있다. 매니저(310)는 타겟데이터가 파일형태이면 바이러스 스캐닝 대상인 것으로 판단하고, 타겟데이터를 AV 엔진(360)으로 제공할 수 있다. 이때, 매니저(310)는 타겟데이터에 대해 바이러스 스캐닝을 수행하도록 AV 엔진(360)의 동작을 제어할 수 있다. 또한, 매니저(310)는 어플리케이션부(미도시)로부터 업데이트할 바이러스 패턴들이 입력되면, 입력되는 바이러스 패턴들을 이용하여 바이러스 패턴 DB(330)를 업데이트할 수 있다. 이러한 매니저(310)는 FW 엔진(340)을 관리 또는 제어하는 FW 매니저와 AV 엔진(360)을 관리 또는 제어하는 AV 매니저로 구분될 수도 있다.
이하에서는, 필터링 대상인 타겟데이터를 '제1타겟데이터', 바이러스 스캐닝 대상인 타겟데이터를 '제2타겟데이터'라 한다.
본 발명의 일 실시예에 따른 매칭부(350)는 선택적으로 룰 패턴과 제1타겟데이터간의 매칭 동작을 수행하거나, 또는 바이러스 패턴과 제2타겟데이터간의 매칭 동작을 수행할 수 있다. 매칭부(350)는 어떤 순간에는 FW 엔진(340)의 일부로서 동작하고, 다른 순간에는 AV 엔진(360)의 일부로서 동작할 수 있다. 동작 순서는 소정의 스케쥴러에 의해서 적절하게 수행 될 수 있을 것이다.
제1타겟데이터가 수신되면, FW 엔진(340)은 룰 패턴 DB에 기초하여 제1타겟 데이터를 차단할지 또는 통과시킬지를 판단한다. 예를 들면, FW 엔진(340)은 룰 패턴 DB(320)와 제1타겟데이터가 서로 일치하는지 여부를 판단하며, 일치하는 것으로 판단된 경우, FW 엔진(340)은 정해진 룰에 따라서 제1타겟 데이터를 '차단'하거나 '통과'시킨다.
한편, 제2타겟데이터가 수신되면, AV 엔진(360)은 바이러스 패턴 DB를 이용하여 제2타겟데이터에 대한 스캐닝 동작을 수행할 수 있다. 본 발명의 일 실시예에 따르면, 스캐닝 동작의 대상되는 제2타겟 데이터는 매니저(310)가 수신할 수 있으며, AV 엔진(360)은 매니저(310)가 수신한 제2타겟 데이터에 대하여 스캐닝 동작을 수행한다.
도 4는 도 3의 FW 엔진, AV 엔진 및 매칭부를 설명하기 위한 도면이다.
도 4를 참조하면, 본 실시예에 따른 FW 엔진(340)과 AV 엔진(360)은 매칭부(350)를 공유한다. 여기서, FW 엔진(340), AV 엔진(360) 및 매칭부(350)는 SoC의 형태로 구현될 수 있다. FW 엔진(340)은 룰 패턴 DB(320), 제1 해시 매처 테이블(370), 및 제1 서브 매처 테이블(375)를 이용하여 패킷과 같은 타겟 데이터에 대하여 필터링 동작을 수행할 수 있다. AV 엔진(360)은 바이러스 패턴 DB(330), 제2해시 매처 테이블(380), 및 제2 서브 매처 테이블(385)를 이용하여 파일과 같은 타겟 데이터에 대하여 스캐닝 동작을 수행할 수 있다.
FW 엔진(340)이 필터링 동작을 수행할 때는 매칭부(350)는 FW 엔진(340)의 일부로서 동작하고, AW 엔진(360)이 스캐닝 동작을 수행할 때는 매칭부(350)은 AV 엔진(360)의 일부로서 동작한다. 바람직하게는 매칭부(350)는 하드웨어로 구성되며, 본 실시예에서 매칭부(350)는 해시값 매칭부(351) 및 라이트 패턴 매칭부(352)를 포함할 수 있다.
제1해시 매처 테이블(370) 및 제1서브 매처 테이블(375)은 룰 패턴 DB(320)의 룰 패턴들로부터 생성될 수 있고, 제2해시 매처 테이블(380) 및 제2서브 매처 테이블(385)은 바이러스 패턴 DB(330)의 바이러스 패턴들로부터 생성될 수 있다. 이들 테이블들(370, 375, 380, 385)의 생성방법에 대하여는 도 5 내지 도 7을 참조하여 상세히 후술하기로 한다.
FW 엔진(340)의 필터링 동작을 설명한다.
본 발명의 일 실시예에 따르면, FW 엔진(340)이 수행하는 필터링 동작은, 패킷 분류 프로세스와, 룰 패턴 패턴 매칭 동작으로 구성된다.
패킷 분류 프로세스에는 IP 매칭 프로세스, 프로토콜 매칭 프로세스, 및/또는 포트 매칭 프로세스가 포함되며, 이들 프로세스들은 해시값 매칭부(351) 및 라이트 패턴 매칭부(352)에 의해 수행된다. 패킷 분류 프로세스에서는, 정밀 패턴 매칭 동작이 수행되지 않는다.
IP 매칭 프로세스를 설명하면, 해시값 매칭부(351)는 패킷 데이터에 포함된 IP 어드레스의 해시 값이 제1 해시 매처 테이블(370)을 매칭시키고, 매칭이 성공하면 라이트 패턴 매칭부(352)는 패킷 데이터에 포함된 IP 어드레스의 중간 값 및 끝 값과 제1 서브 매처 테이블(375)을 매칭시킨다.
포트 매칭 프로세스를 설명하면, 해시값 매칭부(351)는 패킷 데이터에 포함된 포트의 해시 값과 제1 해시 매처 테이블(370)을 매칭시키고, 매칭이 성공하면 라이트 패턴 매칭부(352)는 해시 값 매칭이 성공한 패킷 데이터에 포함된 IP 어드레스의 해시 값, 및 프로토콜의 해시 값과 제1 서버 매처 테이블(375)을 매칭시킨다.
프로토콜 매칭 프로세스를 설명하면, 해시값 매칭부(351)는 패킷 데이터에 포함된 프로토콜의 해시 값과 제1 해시 매처 테이블(370)을 매칭시킨다. 본 실시예에서, 프로토콜 매칭 프로세스에서는, 라이트 패턴 매칭부(352)에 의한 라이트 패턴 매칭 동작이 수행되지 않고 해시 값 매칭 동작까지만 수행한다.
이상 설명한 매칭 프로세스를, 해시값 매칭부(351)와 라이트 패턴 매칭부(352)는 순차적으로 각각 수행한다. 이들 IP 매칭 프로세스, 포트 매칭 프로세스, 및 프로토콜 매칭 프로세스에 대하여는 도 21이하의 도면들을 참조하여 상세히 후술하기로 한다.
FW 엔진(340)은, 패킷 데이터에 대한 패킷 분류 프로세스를 완료하면, 룰 패턴 매칭 동작을 수행한다. 룰 패턴 매칭 동작은 모든 패킷 데이터에 대하여 수행되는 것은 아니며, 패킷 분류 프로세스 결과 룰 패턴 매칭을 수행하는 것으로 분류된 패킷 데이터에 대하여만 수행된다. 패킷 분류 프로세스에 대하여는 도 21을 참조하여 상세히 후술하기로 한다. 룰 패턴 매칭 동작은, 해시 값 매칭부(351) 및 라이트 패턴 매칭부(352)에 의해 수행되며, 라이트 패턴 매칭이 성공하면 정밀 패턴 매칭 동작이 수행된다. 이제, 이들 동작을 각각 설명한다.
룰 패턴 매칭 동작을 수행할 때의 해시 값 매칭부(351)는 패킷 데이터에 포함된 IP 어드레스의 해시 값과 제1 해시 매처 테이블(370)을 매칭시킨다. 해시 값 매칭이 성공하면, 라이트 패턴 매칭부(352)는 해시 값이 매칭된 패킷 데이터에 포함된 IP 어드레스의 중간 값 및 끝 값과 제2 서브 매처 테이블(375)을 매칭시킨다. 라이트 패턴 매칭이 성공하면, FW 엔진(340)은 라이트 패턴 매칭이 성공한 패킷 데이터의 헤더 정보(소스 IP 어드레스, 목적지 IP 어드레스, 프로토콜, 소스 포트, 목적지 포트, 입출력 방향 등등)와, 실제 룰 패턴을 매칭시킨다.
이상 설명한 바와 같이 해시 값 매칭부(351)와 라이트 패턴 매칭부(352)는 패킷 분류 프로세스 동작과 룰 패턴 매칭 동작을 순차적으로 수행할 수 있다. 제1 해시 매처 테이블과 제1 서브 매처 테이블은 패킷 분류 프로세스와 룰 패턴 매칭 동작에 공통적으로 사용될 수 있으나, 이와 다르게 패킷 분류 프로세스를 위한 해시 매처 테이블 및 서브 매처 테이블과, 룰 패턴 매칭 동작을 위한 해시 매처 테이블 및 서브 매처 테이블을 각각 별도로 마련하는 것도 가능하다.
본 발명의 일 실시예에 따르면, 룰 패턴 DB는 소스 IP 어드레스, 목적지 IP(Destination IP) 어드레스, 프로토콜, 소스 포트, 목적지 포트, TCP 플래그 및 패킷의 입출력 방향 중 적어도 하나를 포함할 수 있다. 여기서, 패킷의 입출력 방향은 제1타겟데이터가 외부로 전송되는지 또는 NIC를 통해서 외부로부터 수신되는 것인지를 나타낸다.
본 발명의 일 실시예에 따르면, FW 엔진(340)은 룰 패턴 DB를 참조하여 도 5와 같이 제1해시 매처 테이블(370)과 제1서브 매처 테이블(375)을 생성할 수 있다. 본 실시예에서, 제1 해시 매처 테이블(370)과 제1 서브 매처 테이블(375)을 FW 엔진(340)이 생성하는 것으로 설명하였지만 이는 예시적인 것으로서, 이들 테이블을 생성하는 구성요소를 별도로 마련하거나 또는 다른 구성요소(예를 들면 매니저)가 상기 테이블들을 생성하도록 구성하는 것도 가능하다.
도 5는 본 발명의 일 실시예에 따른 제1해시 매처 테이블(370)과 제1서브 매처 테이블(375)을 예시한 도면이다.
도 5를 참조하면, (a)는 헤더 정보를 나타낸 일례이고, (b)는 해시 매처 테이블의 일례이고, 그리고 (c)는 서브 매처 테이블의 일례이다.
본 실시예에서, 방화벽 엔진은 룰 패턴 DB에 저장된 패턴 룰을 이용하여 해시 매처 테이블을 생성할 수 있다. 구체적으로, 방화벽 엔진은 소정의 해시함수를 이용하여 룰 패턴들 각각 포함된 IP address 각각에 대하여 해시 값을 모두 구하고, 이렇게 구한 해시 값들을 도 5의 (b)와 같은 해시 매처 테이블의 형태로 구성할 수 있다.
도 5의 (b)를 참조하면, 해시 매처 테이블은 인덱스와, 그 인덱스가 존재하는지 유무를 나타내는 존재 유무 항목을 포함하며, 여기서 인덱스는 상기 소정의 해시 함수를 통해서 도출될 수 있는 가능한 모든 해시 값으로 정해지고, 상기 룰 패턴들이 가진 각각의 IP address에 대한 해시 값과 동일한 값을 가지는 인덱스에 대하여 존재 유무 항목의 값이 “1”로 설정된다.
해시 매처 테이블은, 또한, 프로토콜에 대한 해시 값과 포트에 대한 해시 값도 포함한다.
방화벽 엔진은, 서브 매처 테이블도 생성할 수 있다. 방화벽 엔진은 룰 패턴 DB가 업데이트될 때마다 서브 매처 테이블을 새롭게 생성하며, 상기 해시 매처 테이블도 새롭게 생성한다. 방화벽 엔진은 서브 매처 테이블을 룰 패턴 DB 및/또는 해시 매처 테이블로부터 생성할 수 있다.
서브 매처 테이블은 인덱스, mid 항목, tail 항목, ispro 항목, isport 항목, 실제 패턴 메모리 주소 항목, 및 next 항목을 포함한다.
이해의 편의를 위해서 도 5 (c)를 참조하여 서브 매처 테이블을 설명하기로 한다. 도 5 (c)의 첫 번째 레코드에는 인덱스가 'X'이고, mid 항목이 '0x03'이고, tail 항목이 '0x21'이고, ispro 항목이 '1'이고, isport 항목이 '1'이고, 실제 패턴 메모리 주소가 'Ox0001'이고, next 항목이 'R'이다.
서브 매처 테이블의 인덱스에 기재된 값들은, 해시 매처 테이블에서 존재 유무 항목의 값이 '1'인 인덱스 값들로 구성된다. 즉, 서브 매처 테이블의 첫 번째 레코드의 인덱스 'X'는 해시 매처 테이블에도 존재하는 것으로서 존재 유무 항목의 값이 '1'임을 알 수 있다. 한편,'R'과 같이 해시 매처 테이블에 존재하지 않는 값이, 서브 매처 테이블의 인덱스 값으로 존재하고 있지만, 이는 룰 패턴은 서로 다른데 IP address의 해시 값은 서로 동일한 경우(즉, 해시 충돌)를 위해서 마련된 것이다. 예를 들면, 룰 패턴 A와 룰 패턴 B는 서로 다른 IP address를 가지고 있으나, 룰 패턴 A에 포함된 IP address의 해시 값과 룰 패턴 B에 포함된 IP address의 해시 값이 서로 동일한 경우(즉, 둘 다 'X'라는 해시 값을 가질 수 있다)가 발생될 수 있다(해시 충돌). 이러한 경우, 도 5의 (c)의 서브 매처 테이블에 나타난 것처럼, 룰 패턴 A에 대한 IP address의 해시 값을 'X'로서 기재하고, 룰 패턴 B에 대한 IP address의 해시 값은 'R'로 기재한 후, Next 항목에 'R'로 기재한다. 이러한 경우, 인덱스가 'X'인 레코드에 대하여 서브 매칭을 수행한 결과 서브 매칭이 성공되지 않으면, 인덱스가 'R'인 레코드에 대하여 서브 매칭을 다시 수행한다. 본 발명의 일 실시예에 따르면, next 항목에 기재된 'R'은, 인덱스가 X인 레코드가 저장된 메모리 주소와, 인덱스가 'R'인 레코드가 저장된 메모리 주소간의 차이로 정의될 수 있다.
서브 매처 테이블에서 인덱스 항목에 기재되는 값들(예를 들면, X, A, B)은 해시 매처 테이블로부터 도출될 수도 있지만, 해시 매처 테이블을 사용하지 않고 룰 패턴 DB로부터 직접 도출될 수도 있다. 즉, 룰 패턴 DB의 룰 패턴들이 각각 가지는 IP address에 대한 해시 값을 구하면, 이들 해시 값이 서브 매처 테이블에서의 인덱스로서 기재될 수 있다.
서브 매처 테이블의 첫 번째 레코드의 인덱스 'X'는 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox0001')에 저장된 룰 패턴의 IP address에 대한 해시 값이다.
서브 매처 테이블의 mid 항목의 값 '0x03'는 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox0001')에 저장된 룰 패턴의 IP address의 중간 바이트의 값이다.
서브 매처 테이블의 tail 항목의 값 '0x21'는 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox0001')에 저장된 룰 패턴의 IP address의 마지막 바이트의 값이다.
서브 매처 테이블의 ispro 항목의 값 '1'이 나타내는 것은, 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox0001')에 저장된 룰 패턴은 모든 프로토콜에 대하여 적용된다는 것을 나타낸다.
서브 매처 테이블의 isport 항목의 값 '1'이 나타내는 것은, 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox0001')에 저장된 룰 패턴은 모든 포트에 대하여 적용된다는 것을 나타낸다.
지금까지 설명한 부분은 IP 매칭 프로세스를 위한 것으로서, 도 5(c)의 서브 매처 테이블에서 IP sub 라고 표시한 영역에 대한 설명이었다. 이제, 도 5(c)의 서브 매처 테이블에서 Port sub라고 표시한 영역을 설명한다. 이 영역의 값들은 포트 매칭 프로세스의 수행을 위해서 사용된다.
도 5(c)의 서브 매처 테이블에서 인덱스 'A'는 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox2000')에 저장된 룰 패턴의 포트의 해시 값이 모든 포트에 대하여 적용된다는 것을 나타낸다. 한편, IP hash 항목에 기재된 'C'는, 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox2000')에 저장된 룰 패턴에 포함된 IP address의 해시 값이다. Proto hash 항목에 기재된 'D'는, 실제 패턴 메모리 주소 항목에서 지정한 메모리 주소(즉, Ox2000')에 저장된 룰 패턴에 포함된 포트의 해시 값이다. 인덱스 'B'는 IP address 해시 값이 충돌된 경우를 위해서 마련된 값이다.
이상 설명한 해시 매처 테이블과 서브 매처 테이블은 방화벽 엔진에 의해 생성될 수 있지만, 방화벽 엔진이 아니고 별도로 마련된 다른 구성요소에 의해 생성되는 것도 가능할 것이다.
이제, AV 엔진(360)의 스캐닝 동작을 설명한다.
AV 엔진(360)은, 매니저(310)를 통해 수신되는 제2타겟데이터에 대하여 바이러스가 존재하는지 여부를 판단하기 위해서, 바이러스 패턴 DB(330)를 이용하여 스캐닝 동작을 수행한다. 본 발명의 일 실시예에 따르면, AV 엔진(360)의 바이러스 스캐닝 동작은 FW 엔진(340)의 필터링 동작과 교번적으로 수행될 수 있다. 다르게는, 두 엔진 중에서 어느 한쪽 엔진이 동작에 대한 우선순위를 가질 수 있으며, 우선순위는 디폴트로 주어지거나 사용자의 설정에 의해 정해질 수 있을 것이다.
본 발명의 일 실시예에 따른 AV 엔진(360)은, 제2타겟데이터를 구성하는 서브데이터들과 바이러스 패턴과의 패턴 매칭동작을 수행할 수 있다. 이러한 AV 엔진(360)은, 하드웨어 및/또는 소프트웨어에 의해 구현될 수 있다.
AV 엔진(360)은 바이러스 패턴 DB(330)의 바이러스 패턴들에 대한 해시값을 생성할 수 있다. AV 엔진(360)은 바이러스 패턴 데이터에 해시 함수를 적용하여 바이러스 패턴의 해시값을 생성할 수 있다. 예를 들면, 바이러스 패턴 데이터가 23바이트로 이루어져 있다고 가정하면, AV 엔진은 그러한 바이러스 패턴 데이터 첫 번째 바이트부터 3번째 바이트 값까지를 해시 함수에 입력하여 해시값을 구하고, 두 번째 바이트로부터 4번째 바이트 값까지를 해시 함수에 입력하여 해시값을 구하고, 이러한 방식으로 23바이트에 대한 모든 해시값을 구해서, 후술하는 제2 해시 매처 테이블(380)과 제2 서브 매처 테이블(385)을 생성할 수 있다. 따라서, 경우에 따라서는 서로 다른 바이러스 패턴에 대해 동일한 해시값이 생성될 수도 있다. 본 실시예에서, AV 엔진(360)이 매처 테이블들(380, 385)을 생성하는 것으로 설명하였으나, 이는 예시적인 것으로서 이와 다르게 구성하는 것도 가능하다. 예를 들면, 매처 테이블들(380, 385)을 생성하는 별도의 구성요소를 마련하거나, 다른 구성요소(예를 들면 매니저)가 매처 테이블(380, 385)을 생성하도록 구성하는 것이 가능할 것이다.
도 6은 AV 엔진(360)이 사용하는 패턴 해시값 테이블의 일 예를 도시한 도면이다. 도 6을 참조하면, 패턴 해시값 테이블에서, 바이러스 패턴과, 그 바이러스 패턴으로부터 구해진 해시값은 서로 대응되어 있다. 예를 들어, 'X'라는 해시값을 가지는 바이러스 패턴은 'abcdefg'이다.
본 발명의 일 실시예에 따른 AV 엔진(360)은 제2타겟데이터에 대한 해시값을 생성할 수 있다. 예를 들어, 제2 타겟데이터가 사전에 정의된 크기로 분할된 서브데이터들(S1, S2, S3, …)로 이루어진다고 가정한 경우, AV 엔진(360)은 이들 서브데이터들 각각에 대한 해시값(HS)들을 생성할 수 있다. 본 발명의 일 실시예에 따른, AV 엔진(360)은 서브 데이터의 일부를 해시 함수에 입력함으로써 해시값을 구할 수 있다. 예를 들어, 서브 데이터가 15바이트로 이루어져 있다고 가정하면, AV 엔진(360)은 서브 데이터의 첫 번째 바이트부터 세 번째 바이트까지의 값을 해시함수에 입력하여 해시값을 생성할 수 있고, 두 번째 바이트로부터 네 번째 바이트까지의 값을 해시 함수에 입력하여 해시값을 생성할 수 있고, 세 번째 바이트로부터 다섯 번째 바이트까지의 값을 해시 함수에 입력하여 해시값을 생성할 수 있으며, 이런 방식으로 나머지 바이트들에 대한 해시값을 생성할 수도 있다.
본 발명의 일 실시예에 따르면 제2해시 매처 테이블(380)은 해시값 매칭부(351)에서 사용되고, 제2서브 매처 테이블(385)은 라이트 패턴 매칭부(352) 및 정밀 매칭 동작 시에 사용될 수 있다.
본 발명의 일 실시예에 따른 해시값 매칭부(351)는 제2타겟데이터의 적어도 일부에 대한 해시값(HT1)과 제2 해시값 매처 테이블을 매칭시킨다. 제2타겟데이터가 서브데이터들로 분할된 경우, 해시값 매칭부(351)는 각 서브데이터의 일부에 대한 해시값과 제2 해시값 매처 테이블을 매칭시킨다. 이하에서는, 서브데이터를 예로 들어 설명한다.
도 7을 참조하면, 제2해시 매처 테이블(380) 중 '1'이 체크된 매칭 인덱스들은 바이러스 패턴들의 해시값(HP)들 중 어느 하나이다. .
제2해시 매처 테이블(380) 중 '1'이 체크된 매칭 인덱스들(예를 들어, X와 Y)과, 서브데이터의 해시값(HS)과 일치하는 매칭 인덱스가 있으면 해시값 매칭이 성공한 것으로 판단될 수 있다. 도 7의 실시예에서, 서브데이터의 해시값(HS)이 'X' 또는 'Y'라면, 해시 값 매칭이 성공한 것으로 판단될 것이다.
해시값의 매칭이 성공하면, 라이트 패턴 매칭부(352)는 해시값 매칭이 성공된 서브데이터 및 제2해시 매처 테이블(380)을 이용하여 LPM을 수행한다. 자세히 설명하면, 라이트 패턴 매칭부(352)는 해시값(HS)과 일치하는 매칭 인덱스(예를 들어, X)에 해당하는 바이러스 패턴과 서브데이터의 패턴을 매칭하는 동작을 수행할 수 있다.
LPM은 서로 매칭되는 해시값(HP1)을 가지는 바이러스 패턴의 중간 값과 끝 값, 그리고, 서브데이터의 중간 값과 끝 값을 서로 매칭시키는 동작이다. 본 발명의 일 실시예에 따르면, 라이트 패턴 매칭부(352)는 서브데이터의 중간 값과 끝 값을 제2 서브 매처 테이블(385)과 매칭시킨다. LPM이 실패한 경우, 즉, 중간 값들이 서로 일치하지 않거나 끝 값들이 서로 일치하지 않으면, 서브데이터에는 바이러스 패턴이 존재하지 않는 것을 의미한다. 따라서, 서브데이터는 정상데이터로 판단될 수 있다.
반면, LPM이 성공한 경우, AV 엔진(360)은 바이러스 패턴, 서브데이터 및 제2서브 매처 테이블(385)을 이용하여 EPM을 수행할 수 있다. EPM은 해시값(HP1)을 가지는 바이러스 패턴과 서브데이터의 모든 위치들을 비교하여 패턴을 매칭하는 동작이다. 자세히 설명하면, AV 엔진(360)은 제2서브 매처 테이블(385)을 참조하여 매칭 인덱스(X)에 매핑 저장된 바이러스 패턴의 어드레스를 확인한다. AV 엔진(360)은 확인된 어드레스에 저장된 바이러스 패턴을 바이러스 패턴 DB(330)로부터 읽어온다. AV 엔진(360)은 해당 어드레스에 저장된 바이러스 패턴의 전체 패턴인 'abcdefg'와 제2타겟데이터의 전체 패턴을 매칭시킨다.
EPM이 성공한 경우, 즉, 모든 위치들의 값이 서로 일치하는 경우, AV 엔진(360)은 타겟 데이터에 바이러스가 존재한다고 판단할 수 있다. 한편, 어떤 서브 데이터에 대하여 스캐닝한 결과 EPM이 성공하더라도, 그 서브 데이터가 문법적으로 복잡한 바이러스 패턴의 일부인 경우에는, FPM을 수행한다. 예를 들어, AV 엔진(360)은 EPM이 성공한 서브 데이터가 문법적으로 복잡한 바이러스 패턴의 일부와 일치된 경우라면, 나머지 서브 데이터들에 대한 매칭 동작을 수행한다. AV 엔진(360)은, 서브 데이터들 각각에 대한 매칭 결과와, 바이러스 패턴을 비교하여 문법적으로 복잡한 바이러스 패턴과 매칭되는지 여부를 판단할 수 있다.
본 발명의 일 실시예에 따르면, 서브 데이터들에 대한 각각의 EPM 결과들은 서브 패턴 매트릭스에 기록되고, AV 엔진(360)은 그러한 서브 패턴 매트릭스를 참조하여 타겟 데이터에 바이러스가 존재하는지 여부를 판단할 수 있다. 이처럼, 서브 패턴 매트릭스를 참조하여 타겟 데이터에 바이러스가 존재하는지 여부를 판단하는 과정은 풀 매칭 동작의 일 실시예에 해당된다.
FPM 결과 서로 매칭되지 않으면, AV 엔진(360)은 제2타겟데이터가 정상데이터인 것으로 판단할 수 있다. 반면, FPM 결과 서로 매칭되면, AV 엔진(360)은 제2타겟데이터가 바이러스에 감염된 것으로 판단하고, 판단 결과를 매니저(310)에게 통지할 수 있다.
이상 설명한 본 실시예에서는, AV 엔진(360)의 경우는, 매니저(310)로부터 스캐닝할 타겟 데이터를 수신하여 스캐닝 동작을 수행하지만, FW 엔진(340)은 매니저(310)를 경유하지 않고 바로 패킷 데이터를 수신하여 필터링하는 것으로 구성하였다. FW 엔진(340)은 필터링 결과를 매니저(310)에게 통지할 수 있으며, 매니저(310)는 통지 받은 필터링 결과를 방화벽 인터페이스 어플리케이션으로 통지할 수 있다.
이처럼, 매니저(310) 테스크와 FW 엔진(340)의 테스크를 구분시킨 이유는 다음과 같다.
첫째, 매니저(310)가 FW 엔진(340)을 제어하는 상황은 FW 엔진(340)이 제1타겟데이터를 필터링하는 일에 비해 덜 발생한다. 따라서, 매니저(310)가 수행하는 테스크와 FW 엔진(340)이 수행하는 태스크(task)를 구분시키는 것이 효율적이다.
둘째, FW 엔진(340)은 매 제1타겟데이터마다 신속하게 제1타겟데이터가 악성데이터인지를 판단하여 제1타겟데이터를 전달할지를 결정하여야 한다. 만약 사용자가 방화벽 룰을 변경하는 경우, FW 엔진(340)이 직접 룰 패턴 DB(320)를 변경한다면, 즉, 매니저(310) 대신에 FW 엔진(340)이 그러한 룰 패턴 DB(320)를 변경하는 작업을 병행한다면, FW 엔진(340)의 제1타겟데이터의 처리 동작이 지연되게 된다. 따라서, 이러한 일을 방지하고, 매니저(310)와 FW 엔진(340) 간의 일 처리에 우선순위를 주기 위해 서로 별도의 모듈로 구성하였다.
도 8은 본 발명의 다른 실시예에 따른 제2안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도이다.
도 8을 참조하면, 제2안티 멀웨어 시스템(800)은 매니저(810), 룰 패턴 DB(820), 바이러스 패턴 DB(830), FW 엔진(840), 매칭부(850), AV 엔진(860) 및 통신부(870)를 포함할 수 있다.
도 8에 도시된 매니저(810), 룰 패턴 DB(820), 바이러스 패턴 DB(830), FW 엔진(840), 매칭부(850) 및 AV 엔진(860)의 동작은 도 3 및 도 4를 참조하여 설명한 매니저(310), 룰 패턴 DB(320), 바이러스 패턴 DB(330), FW 엔진(340), 매칭부(350) 및 AV 엔진(360)과 동일하므로, 상세한 설명은 생략한다. 또한, FW 엔진(840)과 AV 엔진(860)은 매칭부(850)를 공유할 수 있으며, 매칭부(850)는 하드웨어 로직으로 구현될 수 있다.
제2안티 멀웨어 시스템(800)은 통신부(870)를 더 포함하여, 매니저(810), 룰 패턴 DB(820), 바이러스 패턴 DB(830), FW 엔진(840), 매칭부(850) 및 AV 엔진(860)과 함께 하나의 SoC로 구현될 수 있다.
통신부(870)는 외부 디바이스로부터 제1타겟데이터를 수신하고, 외부 디바이스에게 제1타겟데이터를 송신하는 통신모듈로서, WiFi(Wireless fidelity) 모듈, LAN(Local Area Network) 모듈, OTA(Over the air) 모듈, 블루투스(Bluetooth) 모듈, 및 4G 모듈 중 적어도 하나를 포함할 수 있다. 통신부(870)를 통해 수신된 제1타겟데이터는 FW 엔진(840)으로 입력된다. FW 엔진(840)은 수신된 제1타겟데이터의 해시값을 생성하고, 도 3을 참조하여 설명한 해시값 매칭, LPM 및 EPM을 수행할 수 있다. EPM 결과, 제1타겟데이터가 정상데이터로 판단되면, FW 엔진(840)은 제1타겟데이터가 어플리케이션부(미도시)로 전달되도록 할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 제3안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도이다.
도 9를 참조하면, 제3안티 멀웨어 시스템(900)은 AM(Anti-Malware) 매니저(905), FW 매니저(910), 룰 패턴 DB(920), FW 엔진(930), AV 매니저(940), 바이러스 패턴 DB(950) 및 AV 엔진(960)을 포함할 수 있다. 도 9에 도시된 AM 매니저(905), FW 매니저(910), 룰 패턴 DB(920), FW 엔진(930), AV 매니저(940), 바이러스 패턴 DB(950) 및 AV 엔진(960)은 도 3을 참조하여 설명한 매니저(310), 룰 패턴 DB(320), 바이러스 패턴 DB(330), FW 엔진(340), 매칭부(350) 및 AV 엔진(360)과 동일하므로, 상세한 설명은 생략한다.
다만, 도 3의 실시예의 매니저(310)는, 도 9의 실시예에서는 3개의 매니저(AM 매니저, AV 매니저(940), 및 FW 매니저(910)로 구성된다. 상술한 도 3의 매니저(310)는 AM 매니저(905), AV 매니저(940), 및 FW 매니저(910) 각각의 기능을 모두 수행하는 것으로 설명하였지만, 본 실시예에서는 이들 3개의 매니저는 서로의 작업을 분담하여 진행하는 것으로 구성하였다. 한편, 매니저를 하나로 구성하거나 또는 3개로 구성하는 것은 본원 발명의 예시적인 것이므로, 다른 방식(즉, 매니저의 개수를 더 늘려서 작업을 보다 세분화하는 방식)으로 구현이 가능함은 물론이다.
도 9를 참조하면, AM 매니저(905)는 FW UI 어플리케이션과 AV UI 어플리케이션과 연동하여 동작할 수 있다. AM 매니저(905)는 FW UI 어플리케이션과 AV UI 어플리케이션으로부터 명령을 받아서, FW 와 관련된 명령이라면 FW 매니저(910)에게 전달하고, AV 와 관련된 명령이라면 AV 매니저(940)에게 전달한다. FW 매니저(910)와 AV 매니저(940)는 지시 받은 명령에 대응하는 동작을 수행한 후, 그 결과를 AM 매니저(905)에게 전송할 수 있다. AM 매니저(905)는 FW 매니저(910)와 AV 매니저(940)로부터 전송받은 결과를 각각의 어플리케이션들에게 전송한다.
AM 매니저(905)가 FW UI 어플리케이션으로부터 수신하는 명령은 예를 들면, 룰 패턴 DB(920)에 대한 업데이트 명령일 수 있다. 이러한 명령이 있는 경우, AM 매니저(905)는 룰 패턴 DB(920)에 대한 업데이트(생성, 추가, 삭제, 변경) 명령을 FW 매니저(910)에게 전송한다. FW 매니저(910)는 룰 패턴 DB(920)에 대한 업데이트 동작을 수행한 후 그 결과를 AM 매니저(905)에게 보고할 수 있다.
AM 매니저(905)가 AV UI 어플리케이션(미도시)으로부터 수신하는 명령은, 예를 들면 스캐닝 명령 또는 바이러스 패턴 DB(950)의 업데이트 명령 등이 될 수 있다. 스캐닝 명령이 있는 경우 AM 매니저(905)는 AV 매니저(940)에게 스캐닝 명령이 있는 것을 알리며, AM 매니저(905)는 AV 엔진(960)에 스캐닝 명령이 있는 것을 알린다. AV 엔진(960)은 타겟 데이터(예를 들면, 이 데이터는 스캐닝 명령과 함께 AM 매니저(905)가 수신할 수 있다)에 대하여 스캐닝 동작을 수행한다. 수행결과는 꺼꾸로 AV 매니저(940)와 AM 매니저(905)를 거쳐서 AV UI 어플리케이션으로 전송된다.
AM 매니저(905)가 AV UI 어플리케이션(미도시)로부터 수신하는 명령은 바이러스 패턴 DB(950)의 업데이트 명령이 될 수 있으며, 이러한 경우, AV 매니저(940)가 그러한 업데이트 동작을 수행할 수 있다.
도 10은 FW 엔진(930)을 설명하기 위한 도면이다.
도 10을 참조하면, FW 엔진(930)은 제1매칭부(931)를 포함한다. 제1매칭부(931)는 도 4에 도시된 매칭부(350)와 거의 동일한 기능을 수행하므로 도 4의 설명을 참조하기를 바라며, 상세한 설명은 생략하기로 한다.
제1해시 매처 테이블(970) 및 제1서브 매처 테이블(975)은 룰 패턴 DB(920)의 룰 패턴들로부터 생성될 수 있으며, 이들에 대하여는 도 4 및 도 5의 설명을 참조하기 바란다.
도 11을 참조하면, AV 엔진(960)은 제2매칭부(961)를 포함한다. 제2매칭부(961)는 도 4에 도시된 매칭부(350)와 거의 동일하므로 도 4의 설명을 참조하기를 바라며, 보다 상세한 설명은 생략하기로 한다.
제2해시 매처 테이블(980) 및 제2서브 매처 테이블(985)은 바이러스 패턴 DB(950)의 바이러스 패턴들로부터 생성된다. 제2해시 매처 테이블(980) 및 제2서브 매처 테이블(985)을 생성하는 방법은 도 4, 도 6 및 도 7의 설명을 참조하기를 바라며, 보다 상세한 설명은 생략하기로 한다.
AV 엔진(960)은 바이러스 패턴 DB(950)의 바이러스 패턴들의 해시값들과 제2타겟데이터의 적어도 일부의 해시값을 생성할 수 있다.
제2매칭부(961)는 제2해시 매처 테이블(980)과 제2서브 매처 테이블(985)을 이용하여 해시값 매칭과 LPM을 수행할 수 있다. 제2매칭부(961)는 제2해시값 매칭부(961a) 및 제2라이트 패턴 매칭부(961b)를 포함한다.
제2해시값 매칭부(961a)는 AV 엔진(960)에서 생성되는 바이러스 패턴들의 해시값들과 제2타겟데이터의 적어도 일부의 해시값을 매칭할 수 있다.
제2해시값 매칭부(961a)에서 해시값의 매칭이 성공하면, 제2라이트 패턴 매칭부(961b)는 LPM을 수행한다.
LPM이 성공한 경우, AV 엔진(960)은 바이러스 패턴, 제2타겟데이터 및 제2서브 매처 테이블(985)을 이용하여 EPM을 수행할 수 있다.
EPM이 성공한 경우, AV 엔진(960)은 서브 패턴 매트릭스를 이용하여 FPM을 수행한다.
FPM 결과 서로 매칭되지 않으면, AV 엔진(960)은 제2타겟데이터가 정상데이터인 것으로 판단하고, 제2타겟데이터를 다음 목적지로 전달한다. 반면, FPM 결과 서로 매칭되면, AV 엔진(960)은 제2타겟데이터가 바이러스에 감염된 데이터인 것으로 판단한다. 본 실시예에서는 패턴 DB가 블랙 리스트를 저장하는 것으로 전제로 설명하였지만, 화이트 리스트를 저장하는 것도 가능하다. 화이트 리스트가 저장된 경우에는, EPM이나 FPM의 수행결과 매칭되어야 정상적인 데이터로서 판단될 것이다.
도 12는 본 발명의 다른 실시예에 따른 제4안티 멀웨어 시스템의 기능을 설명하기 위한 기능 블록도이다.
도 12를 참조하면, 제4안티 멀웨어 시스템(1200)은 FW 매니저(1210), 룰 패턴 DB(1220), FW 엔진(1230), AV 매니저(1240), 바이러스 패턴 DB(1250), AV 엔진(1260) 및 통신부(1270)를 포함할 수 있다. 도 12에 도시된 제4안티 멀웨어 시스템(1200)은 도 9에 도시된 AM 매니저(905)를 더 포함할 수도 있다. 도 11에 도시된 FW 매니저(1210), 룰 패턴 DB(1220), FW 엔진(1230), AV 매니저(1240), 바이러스 패턴 DB(1250) 및 AV 엔진(1260)은 도 9 내지 도 11을 참조하여 설명한 FW 매니저(910), 룰 패턴 DB(920), FW 엔진(930), AV 매니저(940), 바이러스 패턴 DB(950) 및 AV 엔진(960)과 동일하므로, 상세한 설명은 생략한다
다만, 통신부(1270)는 외부 디바이스로부터 제1타겟데이터를 수신하고, 외부 디바이스에게 제1타겟데이터를 송신하는 통신모듈이다. 제4안티 멀웨어 시스템(1200)은 통신부(1270)를 더 포함하여, FW 매니저(1210), 룰 패턴 DB(1220), FW 엔진(1230), AV 매니저(1240), 바이러스 패턴 DB(1250) 및 AV 엔진(1260)과 함께 하나의 SoC로 구현될 수 있다.
통신부(1270)를 통해 수신된 제1타겟데이터는 FW 엔진(1230)으로 입력된다. FW 엔진(1230)은 수신된 제1타겟데이터의 해시값을 생성하고, 도 3을 참조하여 설명한 해시값 매칭, LPM 및 EPM을 수행할 수 있다. EPM 결과, 제1타겟데이터가 정상데이터로 판단되면, FW 엔진(1230)은 제1타겟데이터가 어플리케이션부(미도시)로 전달되도록 할 수 있다. 어플리케이션부(미도시)는 예를 들어 웹 브라우저일 수 있다.
도 13은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서의 동작방법을 설명하기 위한 흐름도이다.
도 13의 방법은 제1 내지 제4안티 멀웨어 시스템들(300, 800, 900, 1200) 중 어느 하나에 의해 동작될 수 있으며, 이하에서는 제1안티 멀웨어 시스템(100)을 예로 들어 설명한다.
매니저(310)는 룰 패턴들로 이루어진 룰 패턴 DB(320)와 바이러스 패턴들로 이루어진 바이러스 패턴 DB(330)를 업데이트하여 저장할 수 있다(S1302). 매니저(310)는 기본으로 설정된 룰 패턴 또는 사용자가 방화벽 UI를 통해 설정한 룰 패턴들을 이용하여 룰 패턴 DB(320)를 생성할 수 있다.
FW 엔진(340)은 룰 패턴들의 해시값들을 이용하여 제1해시 매처 테이블(제1HMT)(370)과 제1서브 매처 테이블(제1SMT)(375)을 생성 및 저장하고, AV 엔진(360)은 바이러스 패턴들의 해시값들을 이용하여 제2해시 매처 테이블(제2HMT)(380)과 제2서브 매처 테이블(제2SMT)(385)을 생성 및 저장할 수 있다(S1304).
FW 엔진(340)이 타겟데이터를 수신하면(S1306), FW 엔진(340)은 수신된 타겟데이터(이하, '제1타겟데이터'라 함)를 해시 함수에 적용하여 제1타겟데이터의 적어도 일부의 해시값을 생성할 수 있다(S1308).
매칭부(350)의 해시값 매칭부(351)는 S1302단계에서 생성되는 룰 패턴들의 해시값들과 S1308단계에서 생성되는 제1타겟데이터의 적어도 일부의 해시값을 매칭할 수 있다(S1310).
해시값 매칭이 성공하면(S1312-Y), 라이트 패턴 매칭부(352)는 룰 패턴, 제1타겟데이터 및 제1해시 매처 테이블(370)을 이용하여 LPM을 수행할 수 있다(S1314).
S1314단계의 LPM이 성공한 경우(S1316-Y), FW 엔진(340)은 제1정밀 매칭부(342)는 룰 패턴, 제1타겟데이터 및 제1서브 매처 테이블(375)을 이용하여 EPM을 수행할 수 있다(S1318).
S1318단계의 EPM이 성공한 경우(S1320-Y), FW 엔진(340)은 제1타겟데이터를 비정상 데이터로서 판별하고 차단할 수 있다(S1322).
반면, S1312단계에서 서로 매칭되는 해시값이 없는 경우(S1312-N), FW 엔진(340)은 제1타겟데이터를 정상 데이터로서 판단하고 필터링 '허용'을 결정할 수 있다(S1324).
또한, S1314단계의 LPM이 실패한 경우(S1316-N), FW 엔진(340)은 제1타겟데이터를 정상 데이터로서 판단할 수 있다(S1324).
또한, S1318단계의 EPM이 실패한 경우(S1320-N), FW 엔진(340)은 제1타겟데이터를 정상 데이터로서 판단할 수 있다(S1324).
한편, 매니저(310)가 타겟데이터를 수신하면, 매니저(310)는 타겟데이터가 바이러스 스캐닝 대상이므로 수신된 타겟데이터를 AV 엔진(360)으로 전달할 수 있다(S1326).
AV 엔진(360)은 수신된 타겟데이터(이하, '제2타겟데이터'라 함)를 해시 함수에 적용하여 제2타겟데이터의 해시값을 생성할 수 있다(S1328). S1328단계에서, AV 엔진(360)은 제2타겟데이터를 일정 크기로 분할한 서브데이터들에 대한 해시값을 생성할 수 있다.
매칭부(350)의 해시값 매칭부(351)는 S1302단계에서 생성되는 바이러스 패턴들의 해시값들과 S1328단계에서 생성되는 제2타겟데이터의 적어도 일부의 해시값을 매칭할 수 있다(S1330).
해시값 매칭이 성공하면(S1332-Y), 라이트 패턴 매칭부(352)는 바이러스 패턴, 제2타겟데이터 및 제2해시 매처 테이블(380)을 이용하여 LPM을 수행할 수 있다(S1334).
S1334단계의 LPM이 성공한 경우(S1336-Y), AV 엔진(360)은 바이러스 패턴, 제2타겟데이터 및 제2서브 매처 테이블(385)을 이용하여 EPM을 수행할 수 있다(S1338).
S1338단계의 EPM이 성공한 경우(S1340-Y), AV 엔진(360)은 FPM을 수행한다(S1342).
S1342단계의 FPM이 성공한 경우(S1344-Y), AV 엔진(360)은 제2타겟데이터가 바이러스에 감염된 데이터인 것으로 판단하고, 제2타겟데이터를 차단한다(S1322). 따라서, AV 엔진(360)은 바이러스 스캐닝 대상인 제2타겟데이터에 외부 디바이스 또는 이 제2타겟데이터를 사용하는 어플리케이션부(미도시)로 전송하지 않는다.
반면, S1332단계에서 서로 매칭되는 해시값이 없는 경우(S1332-N), AV 엔진(360)은 제2타겟데이터를 정상 데이터로서 판단하고 필터링 '허용'을 결정할 수 있다(S1324). 따라서, AV 엔진(360)은 바이러스 스캐닝 대상인 제2타겟데이터를 외부 디바이스 또는 이 제2타겟데이터를 사용하는 어플리케이션부로 전송한다.
또한, S1334단계의 LPM이 실패한 경우(S1336-N), AV 엔진(360)은 제2타겟데이터를 정상 데이터로서 판단할 수 있다(S1324).
또한, S1338단계의 EPM이 실패한 경우(S1340-N), AV 엔진(360)은 제2타겟데이터를 정상 데이터로서 판단할 수 있다(S1324).
또한, S1342단계의 FPM이 실패한 경우(S1344-N), AV 엔진(360)은 제2타겟데이터가 정상데이터인 것으로 판단하고, 제2타겟데이터를 허용하여 다음 목적지로 전달한다(S1324).
이상 도 13을 참조하여 설명한 실시 예에서는, 이해의 편의를 위해서 패킷 분류 프로세스에 대하여는 언급하지 않았고, 룰 패턴 매칭 동작에 대하여만 설명하였음을 양지하기 바란다. 즉, S1308 내지 S1324 동작들은 룰 패턴 매칭 동작에 관한 것이며, 패킷 분류 프로세스 동작은 S1308 과 S1306 사이에 수행될 수 있다.
도 14는 본 발명의 일 실시예에 따른 도 2에 도시한 안티바이러스 H/W의 하드웨어 구성을 나타낸 블럭도이다.
도 14를 참조하면, 본 발명의 일 실시예에 따른 안티바이러스 H/W는 시스템 인터페이스(201), 시스템 레지스터(203), 메모리 인터페이스(205), 메모리(207), 버퍼(209), 해시 매처(211), 오프셋 어드레스 제너레이터(213), 해시 Q(Queue) 버퍼(215), 라이트 패턴 매처(217) 및 스캔 Q 버퍼(219)를 포함할 수 있다. 본 발명의 일 실시예에 따르면, 도 14의 안티바이러스 H/W는 도3, 도 4, 도8, 또는 도 9의 매칭 유닛으로 사용될 수 있다.
시스템 인터페이스(201)는 안티 멀웨어 시스템(100)과 외부 구성요소 간의 인터페이스를 지원하고, 메모리 인터페이스(205)는 안티 멀웨어 시스템(100) 내에 저장된 DB 또는 파일의 내용을 읽어들이기 위해 사용된다.
메모리(207)에는 해시 매처(211)에서 해시 매칭 동작을 수행하기 위한 데이터를 제공하기 위하여, 패턴 해시값 테이블이 로딩될 수 있다.
버퍼(209)는 메모리 인터페이스(205)에서 읽어들인 DB 또는 파일의 내용을 저장하는 역할을 한다. 버퍼(209)는 듀얼 뱅크 방식으로 구성될 수 있다.
타겟 데이터는 버퍼(209)의 저장 용량에 맞는 크기만큼 분할되어 2개의 버퍼(209)에 저장된다. 여기서, 도 14의 안티바이러스 H/W가 안티-바이러스 엔진의 일부로서 사용되는 경우에는, 상기 타겟 데이터는 파일과 같은 데이터일 수 있다. 한편, 도 14의 안티바이러스 H/W가 방화벽 엔진의 일부로서 사용되는 경우에는, 상기 타겟 데이터는 패킷 데이터일 수 있다.
해시 매처(211)는 타겟 데이터의 해시값과 해시 매처 테이블의 매칭 동작을 수행한다. 해시 매처(211)는, 해시 값 매칭이 성공한 타겟 데이터를 해시 Q 버퍼(215)에 저장한다.
오프셋 어드레스 제너레이터(offset address generator)(213)는, 해시 값 매칭이 성공하였을 경우, 서브 매처 테이블에서 상기 매칭된 해시 값이 저장된 메모리 주소를 발생시킨다.
해시 Q(Queue) 버퍼부(215)는 오프셋 어드레스 제너레이터(213)에서 발생된 주소와 타겟 데이터를 서로 대응시켜서 저장한다.
라이트 패턴 매처(217)는 해시 Q 버퍼부(215)가 저장한 타겟 데이터의 일부(예를 들면, 타겟 데이터의 중간 값과 마지막 값)와 바이러스 패턴(또는 룰 패턴의 IP address 해시값, 프로토콜 해시값, 또는 IP address 의 중간값)을 서로 매칭시킨다. 라이트 패턴 매처(217)는, 라이트 패턴 매칭이 성공한 타겟 데이터를 스캔 Q 버퍼(219)에 저장한다.
스캔 Q(Queue) 버퍼부(219)는 라이트 패턴 매칭이 성공한 타겟 데이터들을 저장할 수 있다.
도 14의 안티바이러스 H/W가 안티 바이러스 엔진의 일부로 사용될 때, 안티 바이러스 엔진은 스캔 Q 버퍼부(219)에 저장된 타겟 데이터와 바이러스 패턴을 정밀하게 매칭시키는 정밀 패턴 매칭 동작을 수행하며, 정밀 패턴 매칭이 성공하면, 풀 패턴 매칭을 수행한다. 여기서, 풀 패턴 매칭은 복잡한 문법을 가진 패턴인 경우에 수행되며, 간단한 문법을 가진 패턴은 정밀 패턴 매칭까지만 수행할 수도 있다.
한편, 도 14의 안티바이러스 H/W가 방화벽 엔진의 일부로 사용될 때는, 방화벽 엔진은 스캔 Q 버퍼부(219)에 저장된 타겟 데이터와 룰 패턴을 정밀하게 매칭시키는 정밀 패턴 매칭 동작을 수행한다.
위의 매칭동작들 중에서 바이러스 패턴 매칭에 대한 보다 상세한 설명은 한국 특허출원번호 제10-2010-0049566호(2010. 5. 27일자 출원), 한국 특허출원번호 제10-2010-0052981(2010. 6. 4 일자 출원), 한국특허출원번호 제10-2011-0049249호(2011. 5. 24일자 출원)에 기재되어 있고, 이 특허출원들에 기재된 내용은 본원 명세서의 내용과 상충되지 않는 범위 내에서 본원 명세서의 일부로서 결합된다.
도 15는 본 발명의 일 실시예에 따른 안티바이러스 H/W(117)에서 바이러스 스캐닝 동작을 설명하기 위한 도면이다.
도 15를 참조하면, 바이러스 패턴 DB(41)에는 바이러스 스캐닝에 사용할 바이러스 패턴들이 저장되어 있다. 바이러스 패턴 DB(41)는 도 3 내지 도 12에 도시된 바이러스 패턴 DB들(330, 830, 950, 1250) 중 하나일 수 있다.
해시 매처 테이블(43)은 해시 매처(211)와 데이터를 주고 받으며, 해시 매처(211)에서 해시 매칭을 수행할 때 사용된다. 해시 매처 테이블(43)은 도 4 및 도 11에 도시된 해시 매처 테이블들(380, 980) 중 하나일 수 있다.
바이러스 패턴 DB(41)에 저장되어 있는 모든 바이러스 패턴들이 메모리(207)에 로딩된 후, 해시값 생성기(미도시)가 메모리(207)에 로딩된 모든 바이러스 패턴들에 대한 해시값을 생성하면, 생성된 해시값으로부터 패턴 해시값 테이블이 생성된다. 패턴 해시값 테이블은 메모리(207)에 저장될 수 있다.
서브 매처 테이블(44)은 라이트 패턴 매처(217)와 데이터를 주고 받으며, LPM과 EPM 동작 수행에 사용된다. 본 발명의 일 실시예에서 서브 매처 테이블(44)은 중복 패턴의 오프셋, 중간 값 오프셋, 중간 값, 끝 값 오프셋, 끝 값, 실제 패턴 정보를 포함할 수 있다. 서브 매처 테이블(44)은 도 4 및 도 10에 도시된 서브 매처 테이블들(375, 975) 중 하나일 수 있다.
서브 패턴 매트릭스(45)는 타겟데이터를 구성하는 각각의 서브데이터에 대한 서브 패턴 매칭 결과를 포함한다. 서브 패턴 매트릭스는 FPM 동작에 사용된다. 바이러스 패턴 전체와 서브데이터의 전체에 대하여 EPM이 수행된 결과 해당 서브데이터에 바이러스 패턴이 존재하는지 여부가 확인되면, 서브데이터별로 그 존재 여부가 서브 패턴 매트릭스(45)에 기록된다.
버퍼(209)에는 타겟데이터의 서브데이터가 로딩되고, 로딩된 서브데이터는 해시 매처(211)로 제공된다.
이를 위해, 해시 매처(211)는 메모리(207)로부터는 패턴 해시값 테이블(42)을, 버퍼(209)로부터 서브데이터를, 미 도시된 메모리(예를 들어, 도 2의 SRAM(130))로부터 해시 매처 테이블(43)을 제공받아 해시 매칭을 수행한다.
해시 Q 버퍼(215)는 해시 매처(211)에 의해 해시값이 매칭된 경우, 타겟데이터를 저장할 수 있다.
이후, 라이트 패턴 매처(217)에서는 서브 매처 테이블(44)을 이용하여 서브데이터의 일부에 대한 매칭 동작을 수행한다. 라이트 패턴 매칭이 성공하면, 라이트 패턴 매처(217)는 성공한 서브데이터를 스캔 Q 버퍼(219)쪽으로 출력한다. 스캔 Q 버퍼(219)로부터의 출력 결과는 EPM 동작에 사용된다.
EPM이 성공한 경우, 안티 멀웨어 시스템은 서브 패턴 매트릭스(45)를 이용하여 서브 패턴 매트릭스에 포함된 서브데이터와 바이러스 패턴을 풀 매칭하는 동작을 수행한다. 즉, 바이러스 패턴과 타겟데이터의 전부를 매칭시키는 동작은, 스캔 Q 버퍼(219)에 저장된 타겟데이터에 대하여 수행된다.
도 16은 본 발명의 일 실시예에 따른 안티 멀웨어 시스템에서 안티 바이러스 H/W(117)의 동작 방법을 보여주는 흐름도이다.
도 16을 참조하면, 안티 바이러스 H/W(117)이 초기화되면(S1601), 바이러스 패턴들이 저장된 바이러스 패턴 DB(41)가 메모리(207)로 로딩된다(S1603).
바이러스 스캐닝 대상인 타겟데이터(예를 들어, 도 3의 제2타겟데이터)가 버퍼(209)의 크기만큼 버퍼(209)로 로딩된다(S1605).
해시 매처(211)는 정해진 크기만큼 버퍼(209)로부터 타겟데이터와 메모리(207)로부터 패턴 해시값 테이블을 읽어 들인다(S1607). 타겟데이터의 패턴 해시값 테이블은 미리 생성되어 메모리(207)에 저장되어 있을 수 있다.
해시 매처(211)는 S1607단계에서 읽어 들인 타겟데이터의 해시값과 바이러스 패턴들의 해시값을 매칭한다(S1609).
읽어 들인 타겟데이터의 크기는 타겟데이터 카운트로 설정된다(S1611).
타겟데이터 카운트와 버퍼(209)의 크기를 비교하여 서로 일치하면(S1613-Y), 안티 바이러스 H/W(117)은 현재 사용중인 버퍼를 다른 버퍼로 변경한다(S1615). 버퍼가 변경된 경우, 변경된 버퍼에 타겟데이터를 로딩하고 S1605 단계 내지 S1613 단계를 반복한다.
타겟데이터 카운트가 버퍼(209) 크기와 일치하지 않으면(S1615-N), 안티 바이러스 H/W(117)은 해시 Q 버퍼(215)가 풀(full)인지 여부를 확인한다(S1617). 해시 Q 버퍼(215)가 풀이면 안티 바이러스 H/W(117)은 해당 작업을 종료하고, 그렇지 않으면 해시 Q 버퍼(215)가 풀이될 때까지 S1607 내지 S1615 단계를 반복한다.
도 17은 도 16의 S1609 단계의 해시 매처(211)의 매칭 동작을 설명하기 위한 흐름도이다.
도 17을 참조하면, 해시 매처(211)는 타겟데이터의 해시값이 패턴 해시값 테이블에 존재하는지 여부를 확인한다(S1701).
타겟데이터의 해시값이 해시 매처 테이블에 존재하면, 해시 매처(211)는 타겟데이터의 해시값에 패턴 표시가 있는지 여부를 확인한다(S1703).
타겟데이터의 해시값에 패턴 표시가 있으면, 해시 매처(211)는 해시 Q 버퍼(215)가 풀(full)인지 여부를 확인한다(S1705).
해시 Q 버퍼(215)가 풀이 아니면(S1705-N), 해시 매처(211)는 최신 정보로 해시 Q 버퍼(215)를 업데이트한다(S1707). 최신 정보는 오프셋 어드레스 제너레이터(213)에서 발생된 데이터로서, 해시 매처(211)의 매칭 동작 수행 결과, 매칭이 성공하였을 경우에 해시값에 대응하는 실제 비교 메모리 영역에 대한 메모리 주소값을 포함할 수 있다.
이후, 해시 Q 버퍼(215)로부터 독출동작이 있으면(S1709-Y), 라이트 패턴 매처(217)는 LPM 동작을 수행한다(S1711).
반면, 해시 Q 버퍼(215)가 풀이면(S1705-Y), 해시 매처(211)는 해시 Q 버퍼(215)를 풀로 설정한다(S1713).
도 18은 S1711단계의 라이트 패턴 매처(217)의 매칭 동작을 설명하기 위한 흐름도이다.
도 18을 참조하면, 라이트 패턴 매처(217)는 읽어 들인 타겟데이터의 해시값에서 오프셋이 지정한 메모리로부터 패턴을 읽어온다(S1801). 즉, 라이트 패턴 매처(217)는 해시값에 대응하는 타겟데이터의 패턴 중 중간 값과 끝 값을 읽어오고, 서브 매처 테이블(44)로부터 바이러스 패턴의 중간 값과 끝 값을 읽어올 수 있다.
라이트 패턴 매처(217)는 타겟데이터의 중간 값과 바이러스 패턴의 중간 값이 동일한지 여부를 확인한다(S1803).
타겟데이터의 중간 값이 바이러스 패턴의 중간 값과 동일하면(S1803-Y), 라이트 패턴 매처(217)는 타겟데이터의 끝 값과 바이러스 패턴의 끝 값이 동일한지 여부를 확인한다(S1805).
타겟데이터의 끝 값과 바이러스 패턴의 끝 값이 동일하면(S1805-Y), 라이트 패턴 매처(217)는 스캔 Q 버퍼(219)가 풀(full)인지 여부를 확인한다(S1807).
스캔 Q 버퍼(219)가 풀이 아니면(S1807-N), 라이트 패턴 매처(217)는 최신 정보로 스캔 Q 버퍼(219)를 업데이트한다(S1809). 최신 정보는 FPM을 수행하기 위해 필요한, 라이트 패턴 매처(217)의 매칭 동작 결과일 수 있다.
스캔 Q 버퍼(219)가 풀이면(S1807-Y), 라이트 패턴 매처(217)는 스캔 Q 버퍼(219)를 풀로 설정한다(S1811).
도 19는 본 발명의 일 실시예에 따른 방화벽 H/W(119)에서 패킷 필터링 동작을 설명하기 위한 도면이다.
도 19를 참조하면, 룰 패턴 DB(51)는 패킷 룰을 저장하며, 룰 패턴은 패킷의 방향, IP address, 프로토콜, 포트, 허용/차단 정보와 내용들을 포함할 수 있다. 여기서, 패킷의 방향은 패킷이 전달되는 방향(예를 들면 In, Out 또는 Both)을 나타내고, IP address 는 소스 IP address 와 목적지 IP address 를 나타내고, 프로토콜은 사용하는 프로토콜의 종류(예를 들면, TCP, UDP, ICMP, All)를 나타내고, 포트는 설정하고자 하는 포트 번호를 나타내고, 그리고 허용/차단 정보는 표시된 정보의 패킷을 허용할지 차단할지를 나타낸다.
본 실시예에서 해시 매처(211)는 해시 매처 테이블(53)을 이용하여 해시 값 매칭 동작을 수행하며, 라이트 패턴 매처(217)는 서브 매처 테이블(54)을 이용하여 라이트 패턴 매칭 동작을 수행한다. 여기서, 해시 매처(211)는 버퍼(209)에 저장된 데이터의 해시 값과, 해시 매처 테이블(53)을 하드웨어적으로 매칭시킨다. 해시 값이 매칭된 데이터는 해시 Q버퍼(215)에 저장되며, 라이트 패턴 매처(217)는 해시 Q 버퍼(215)에 저장된 데이터와 서브 매처 테이블을 하드웨어적으로 매칭시킨다. 라이트 패턴 매처(217)에 의해 매칭이 성공되면, 매칭된 데이터는 스캔 Q 버퍼(219)에 저장되며, 방화벽 엔진(130)은 소프트웨어적으로 스캔 Q버퍼(219)에 저장된 데이터와 룰 패턴 DB가 전부 일치하는지 여부를 판단하는 정밀 패턴 매칭 동작을 수행한다. 이후, 방화벽 엔진(130)은 정밀 패턴 매칭의 결과에 따라서 패킷 데이터를 통과 시키거나 차단한다.
도 19를 계속 참조하면, 방화벽 엔진은 필터링 할 패킷 데이터를 받으면, 먼저 패킷 데이터에 대한 패킷 분류 프로세스를 수행하고, 패킷 분류 프로세스의 분류결과에 패턴 매칭할 필요성이 있는 경우에만 패킷 데이터와 룰 패턴 DB와의 매칭 동작을 수행한다. 방화벽 엔진은 패킷 분류 프로세스를 수행할 때 매칭부(119)를 적어도 일회이상 사용하며, 패킷 데이터와 룰 패턴 DB와의 매칭 동작을 수행할 때도 매칭부(119)를 사용한다. 이에 대한 보다 상세한 설명은, 후술하는 도 20 내지 도 24의 설명을 참조하기 바란다.
한편, 도 19에 도시된 방화벽 엔진의 구성은 어디까지나 예시적인 것이며, 패킷 데이터를 필터링 할 수 있는 구성이라면 어떠한 구성이라도 본원 발명에 사용될 수 있다.
도 20은 본 발명의 일 실시예에 따른 패킷 필터링 방법을 설명하기 위한 흐름도이다.
도 20을 참조하면, 방화벽 엔진은 필터링 할 대상이 되는 패킷 데이터를 입력 받으면(S2001), 패킷 데이터의 헤더(header)를 패턴 형태로 변환하고(S2003), 패킷 데이터의 헤더 정보를 이용하여 패킷 데이터에 대하여 패킷 분류 프로세스를 실시한다(S2005). S2003 단계에서의 패턴 형태는 예를 들면 도 5의 (a)와 같은 형태일 수 있다. 본 실시예에서, S2003 단계는 예시적인 것으로서 필터링할 대상이 되는 패킷 데이터의 헤더를 반드시 도 9의 (a)와 같은 형태로 변환할 필요는 없다. 예를 들면, 도 20의 실시예는 S2003 대신에, 패킷 데이터에서 헤더 정보를 추출하는 단계를 포함시키고, 이렇게 추출한 헤더 정보를 이용하여 S2005를 수행하도록 구성하는 것도 가능하다. 패킷 분류 프로세스에 대하여는 후술하는 도 21에서 설명하기로 한다.
패킷 데이터에 대하여 패킷 분류 프로세스가 완료되면, 후술할 S2007의 패턴 매칭 동작을 수행할지 여부가 결정된다. 즉, 방화벽 엔진은 입력 받은 모든 패킷 데이터에 대하여 패턴 매칭 동작을 수행하는 것은 아니며, 패킷 분류 프로세스(S2005)를 패킷 데이터에 적용함으로써, 패킷 데이터에 대하여 패턴 매칭 동작을 수행할지 여부를 결정하며, 패턴 매칭 동작을 수행할 것으로 결정한 경우에만 후술할 패턴 매칭 단계(S2007)를 수행한다.
패턴 매칭 단계에서는, 패킷 데이터를 룰 패턴 DB에 기 저장된 룰 패턴과의 매칭을 수행한다. 이에 따라, 패킷 데이터가 룰 패턴과 매칭되는지 여부를 확인한다(S2007). 예를 들면, 방화벽 엔진은 도 14에 예시적으로 도시된 하드웨어(117)를 이용하여 패킷 데이터의 헤더 정보(IP address, 포트 번호, 프로토콜)와 룰 패턴이 매칭되는지 여부를 확인할 수 있다. 도 14의 하드웨어(117)를 이용하여 S2007 단계를 수행할 때, 해시 매처(211)는 패킷 데이터에 대한 헤더의 해시값과, 룰 패턴의 헤더의 해시값을 매칭시키고, 해시값이 서로 매칭이 되면 라이트 패턴 매처(217)는 패킷 데이터의 헤더의 중간값과 끝값과, 룰 패턴의 헤더의 중간값과 끝 값을 각각 매칭시키고, 이들 값이 서로 매칭이 되면, 방화벽 엔진은 패킷 데이터의 헤더의 전부와 룰 패턴의 헤더의 전부를 매칭시키는 정밀 매칭 동작을 수행한다. 정밀 매칭 결과 매칭이 되면 방화벽 엔진은 후술하는 바와 같이 패킷 데이터를 차단할 수 있다. 패킷 데이터가 룰 패턴과 매칭되면, 매칭된 룰 패턴에 따라 패킷 데이터를 허용(Allow)하거나 차단(Block)한다(S2009). 반면, 패킷 데이터가 룰 패턴과 매칭되지 않으면, 매칭이 성공하지 않았다는 의미이므로 패킷 데이터를 통과시킨다.
도 21은 본 발명의 일 실시예에 따른 패킷 분류 프로세스를 설명하기 위한 흐름도이다.
도 21을 참조하면, 패킷 분류 프로세스는 S2101 내지 S2119 단계로 이루어지며, 방화벽 엔진은 패킷 분류 프로세스 결과 패킷 데이터에 대하여 패턴 매칭을 할 필요가 있다고 결정한 경우 패턴 매칭 단계(S2121)를 수행한다. 본 실시예에 따르면, 방화벽 엔진이 적어도 하나 이상의 플래그를 사용하여 패킷 분류 프로세스를 수행한다.
플래그(flag)는 IP 플래그, 프로토콜 플래그, 포트 플래그, IP 매칭과 관련된 분류 여부 플래그, 프로토콜 매칭과 관련된 분류 여부 플래그, 및 포트 매칭과 관련된 분류 여부 플래그를 포함할 수 있다. 본 실시예에서, 방화벽 엔진은 룰 패턴 DB 및/또는 도 5의 (c)의 도면에 도시된 서브 매처 테이블을 참조하여, 각 플래그의 값을 설정할 수 있다. 방화벽 엔진은 플래그 값을 시스템 레지스터(203)에 저장할 수 있으나, 시스템 레지스터(203)가 아닌 다른 저장부(미도시)에도 저장할 수 있음은 물론이다. 방화벽 엔진은, 룰 패턴들 중 모든 IP address에 대하여 패스하는 룰 패턴이 하나라도 있다면, IP 플래그를 ALL로 설정한다. 동일한 방식으로, 방화벽 엔진은 룰 패턴들 중에서 모든 프로토콜에 대하여 패스하는 룰 패턴이 하나라도 있다면, 프로토콜 플래그를 ALL로 설정한다. 그리고, 방화벽 엔진은 룰 패턴들 중 모든 포트에 대하여 패스하는 룰 패턴이 하나라도 있다면, 포트 플래그를 ALL로 설정한다. 이상 설명한 플래그들에 대한 설정 동작은, 패킷 데이터에 대한 분류 프로세스가 시작되기 전에 수행될 수도 있고, 분류 프로세스가 진행 중에 수행될 수도 있다.
한편, 분류 여부 플래그들은 각각 IP 매칭, 프로토콜 매칭, 포트 매칭 과정에 방화벽 엔진에 의해 Yes 또는 No로 설정된다. 이 부분에 관한 설명은 각각 도 22, 도 23, 도 24에서 후술하기로 한다.
방화벽 엔진은 필터링 할 대상이 되는 패킷 데이터를 입력 받으면, IP 플래그를 체크하여 IP 플래그가 올(All)로 설정되어 있는지 여부를 확인한다(S2101). IP 플래그가 올(AA)로 아니면, 상기 패킷 데이터에 대하여 IP 매칭 프로세스를 실시한다(S2103). IP 매칭 프로세스에 대하여는 후술하는 도 22에서 설명한다.
방화벽 엔진은, IP 매칭 프로세스 완료 후, IP 매칭과 관련된 분류여부 플래그가 'N'으로 설정된 상태이면(S2105: N), 프로토콜 플래그가 올(ALL)로 설정되어 있는지 여부를 확인한다(S2107). 여기서, IP 매칭과 관련된 분류 여부 플래그는 도 22를 참조하여 후술하겠지만, IP 매칭 프로세스 과정에 'Y' 또는 'N' 중 어느 하나의 값으로 설정된다. 프로토콜 플래그가 올이 아니면, 방화벽 엔진은 프로토콜 매칭 프로세스를 실시한다(S2109). 프로토콜 매칭 프로세스에 대하여는 후술하는 도 24에서 설명한다.
프로토콜 매칭 프로세스 완료 후, 방화벽 엔진은 프로토콜 매칭과 관련된 분류여부 플래그가 'N'으로 설정된 상태이면(S2111: N) 포트 플래그가 올(ALL)로 설정되어 있는지를 확인한다(S2113). 만약 포트 플래그가 올(ALL)로 설정된 상태이면 IP 플래그가 올(ALL)로 설정되어 있는지를 확인한다(S2119). S2119의 수행 결과, 방화벽 엔진은 IP 플래그가 올(ALL)로 설정된 상태이면 해당 패킷 데이터에 대한 룰 패턴 매칭 동작을 종료하지만, IP 플래그가 올(ALL)이 아닌 경우(S2119: N) 패턴 매칭 동작을 수행한다(S2121).
S2113의 수행결과, 포트 플래그가 올(ALL)로 설정된 상태가 아니면(S2113: N), 방화벽 엔진은 패킷 데이터에 대한 포트 매칭 프로세스를 실시한다(S2115). 포트 매칭 프로세스에 대하여는 후술하는 도 24에서 설명한다. 포트 매칭 프로세스 완료 후, 방화벽 엔진은 포트 매칭과 관련된 분류여부 플래그가 'N'으로 설정된 상태이면(S2117: N), 해당 패킷에 대한 패턴 매칭을 실시한다(S2121).
한편, 방화벽 엔진은 분류 여부 플래그가 'Y'로 설정된 상태이면(S2105: Y, S2111: Y, S2117: Y), 해당 패킷 데이터에 대한 룰 패턴 매칭 동작을 종료한다.
도 22는 본 발명의 일 실시예에 따른 IP 매칭 프로세스를 설명하기 위한 흐름도이다.
방화벽 엔진은 패킷 데이터의 헤더에 포함된 IP address에 대한 해시(hash)값과 룰 패턴 DB에 포함된 룰 패턴들의 IP address의 해시값이 서로 매칭되는지 여부를 수행하는 해시 매처(hash matcher) 프로세스를 실시한다(S2201). 본 발명의 일 실시예에 따르면, 방화벽 엔진의 해시 매처(211)는 패킷 데이터의 헤더에 포함된 IP address에 대한 해시 값과, 도 5의 (b)에 예시된 해시 매처 테이블을 서로 매칭시킨다. 예를 들면, 패킷 데이터의 헤더에 포함된 IP address에 대한 해시 값이 'X'라면, 해시 매처 테이블에 'X'가 존재한다고 표시되어 있으므로, 이러한 경우는 양자가 서로 매칭된다고 할 것이다.
해시매처 프로세스에서 매칭이 되지 않으면(S2203), 방화벽 엔진은 IP 매칭과 관련된 분류여부 플래그를 해당 패킷이 분류된 것이라는 의미(즉, 'Y')로 변경한다(S2213). 반면, 해시매처 프로세스에서 매칭이 되면(S2203), 방화벽 엔진은 패킷에 대하여 서브 매처 테이블을 이용하여 매칭을 수행하는 서브매처(sub matcher) 프로세스를 실시한다(S2205). 본 발명의 일 실시예에 따르면, 방화벽 엔진의 라이트 패턴 매처(217)는 패킷 데이터의 헤더에 포함된 IP address의 중간 값과 끝 값을 도 5의(c)에 예시된 서브 매처 테이블과 서로 매칭시킨다.
서브매처 프로세스에서 매칭이 되지 않으면(S2207), 방화벽 엔진은 IP 매칭과 관련된 분류여부 플래그를 해당 패킷이 분류된 것이라는 의미(즉, 'Y')로 변경한다(S2213). 반면, 서브매처 프로세스에서 매칭이 되면(S2207), 방화벽 엔진은 서브 매처 테이블에서 모든 프로토콜에 적용되는 룰이 존재하는지 여부를 나타내는 ispro의 값과, 모든 포트에 적용되는 룰이 존재하는지 여부를 나타내는 isport의 값을 확인한다(S2208). 여기서, isport의 값이 “1”이라고 함은, 룰 패턴 DB에 존재하는 룰 패턴들 중에서 모든 포트에 적용되는 룰 패턴이 적어도 하나는 존재한다는 것을 나타내고, ispro의 값이 “1”이라고 함은, 룰 패턴 DB에 존재하는 룰 패턴들 중에서 모든 프로토콜에 적용되는 룰 패턴이 적어도 하나는 존재한다는 것을 나타낸다.
S2208 단계의 수행결과, ispro값이 1이 아니면 방화벽 엔진은 프로토콜 플래그를 낫 올(Not all)로 변경한다(S2215). 한편, 방화벽 엔진은 ispro값이 1이면 isport값이 1인지 여부를 확인한다(S2211).
방화벽 엔진은, isport값이 1이 아니면, 포트 플래그를 낫 올(Not all)로 변경한다(S2217).
한편, 도 22의 실시예에서의 분류여부 플래그와, 프로토콜 플래그와, 포트 플래그는 각각 도 21의 S2105단계가 수행될 때 참조되는 분류여부 플래그와, S2107 단계가 수행될 때 참조되는 프로토콜 플래그와, S2113 단계가 수행될 때 참조되는 포트 플래그에 해당된다.
도 23은 본 발명의 일 실시예에 따른 프로토콜 매칭 프로세스를 설명하기 위한 흐름도이다.
방화벽 엔진은 패킷 데이터의 헤드에 포함된 프로토콜에 대한 해시 값과, 룰 패턴 DB에 포함된 룰 패턴들의 프로토콜의 해시값이 서로 매칭되는지 여부를 수행하는 해시매처 프로세스를 실시한다(S2301). 본 발명의 일 실시예에 따르면, 방화벽 엔진의 해시 매처(211)는 패킷 데이터의 헤더에 포함된 프로토콜에 대한 해시 값과, 도 5의 (b)에 예시된 해시 매처 테이블을 서로 매칭시킨다. 예를 들면, 패킷 데이터의 헤더에 포함된 프로토콜에 대한 해시 값이 'Z'라면, 해시 매처 테이블에 'Z'가 존재하지 않는다고 표시되어 있으므로, 이러한 경우는 양자가 서로 매칭되지 않는다고 할 것이다.
해시매처 프로세스에서 매칭이 되면(S2303), 방화벽 엔진은 해시 매처 프로세스를 종료하고, 다음 단계(예를 들면 도 21의 S2111 단계)를 수행한다. 반면, 해시매처 프로세스에서 매칭이 되지 않으면 방화벽 엔진은 프로토콜 매칭 관련된 분류여부 플래그를 해당 패킷이 분류된 것이라는 의미(즉, 'Y')로 변경한다(S2305). 여기서, 분류여부 플래그는 도 21의 S2111에서 참조되는 분류여부 플래그에 해당한다.
본 실시예에서 프로토콜 매칭은 경우의 수가 많지 않으므로 서브매처 프로세스를 수행하지 않고 해시매처 프로세스만 사용하여 검증을 하였다, 하지만, 이는 본원 발명의 예시적인 것이므로, 프로토콜 매칭에 있어서도 서브매처 프로세스를 수행하도록 구성하는 것도 당연히 가능할 것이다.
도 24는 본 발명의 일 실시예에 따른 포트 매칭 프로세스를 설명하기 위한 흐름도이다.
방화벽 엔진은 패킷 데이터의 헤드에 포함된 포트에 대한 해시 값과 룰 패턴 DB에 포함된 룰 패턴들의 포트의 해시값이 서로 매칭되는지 여부를 수행하는 해시 매처 프로세스를 실시한다(S2401). 본 발명의 일 실시예에 따르면, 방화벽 엔진의 해시 매처(211)는 패킷 데이터의 헤더에 포함된 포트에 대한 해시 값과, 도 5의 (b)에 예시된 해시 매처 테이블을 서로 매칭시킨다. 예를 들면, 패킷 데이터의 헤더에 포함된 프로토콜에 대한 해시 값이 'A'라면, 해시 매처 테이블에 'A'가 존재한다고 표시되어 있으므로, 이러한 경우는 양자의 해시 값이 서로 매칭된다고 할 것이다.
해시 매처 프로세스에서 매칭이 되지 않으면(S2403), 방화벽 엔진은 포트 매칭과 관련된 분류여부 플래그를 해당 패킷이 분류된 것이라는 의미(즉, 'Y')로 변경한다(S2409).
해시 매처 프로세스에서 매칭이 되면(S2403), 방화벽 엔진은 데이터 패킷에 대하여 서브 매처 프로세스를 실시한다(S2405). 본 발명의 일 실시예에 따르면, 방화벽 엔진의 라이트 패턴 매처(217)는 패킷 데이터의 헤더에 포함된 IP address의 해시값과 프로토콜의 해시 값을, 도 5의(c)에 예시된 서브 매처 테이블과 서로 매칭시킨다.
서브 매처 프로세스에서 매칭이 되지 않으면(S2407), 포트 매칭과 관련된 분류 여부 플래그를 해당 패킷이 분류된 것이라는 의미(즉, 'Y')로 변경한다(S2409). 한편, 서브 매처 프로세스에서 매칭이 되면, 방화벽 엔진은 포트 매칭 프로세스를 종료하고, 도 21의 S2117 단계를 수행한다.
한편, 도 24의 S2409에서의 분류여부 플래그는 도 21의 S2117에서 참조되는 분류여부 플래그에 해당한다.
본 실시예에서, 안티바이러스 H/W와 방화벽 H/W는 하드웨어 로직으로 구성되어 단순하고 빠른 작업을 수행할 수 있으며, 비트 테이블인 해시 매처는 크기가 작고, 해시 함수를 통해 나온 해시값을 매칭 대상으로 하기 때문에 비교 속도가 빠른 장점이 있다. 또한, 라이트 패턴 매처는 해시값을 인덱스로 하여 접근하기 때문에 빠른 매칭 결과를 출력할 수 있다. 또한, 멀티패턴에 의해 해시값이 충돌이 날 경우에는 충돌에 대한 서브 매처 테이블을 구성하여 충돌되는 해시값에 대한 처리를 할 수 있도록 하였다.
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
300: 제1안티 멀웨어 시스템 310: 안티멀웨어 매니저
320: 룰 패턴 DB 330: 바이러스 패턴 DB
340: 방화벽 엔진 350: 매칭부
351: 해시값 매칭부 352: 라이트 패턴 매칭부
360: 안티바이러스 엔진
320: 룰 패턴 DB 330: 바이러스 패턴 DB
340: 방화벽 엔진 350: 매칭부
351: 해시값 매칭부 352: 라이트 패턴 매칭부
360: 안티바이러스 엔진
Claims (44)
- 안티 멀웨어 시스템에서의 동작방법으로서,
필터링 대상인 데이터(이하, '제1타겟데이터'라고 함)와 룰 패턴들을 매칭시킴으로써, 상기 제1타겟데이터에 대해 필터링 동작을 수행하는 단계; 및
바이러스 스캐닝 대상이 되는 데이터(이하, '제2타겟데이터'라고 함)와 바이러스 패턴들을 매칭시킴으로써, 상기 제2타겟데이터에 대해 바이러스 스캐닝 동작을 수행하는 단계;를 포함하며,
상기 제2타켓 데이터를 필터링하는 단계는,
상기 바이러스 패턴의 해시값과 상기 제2타겟데이터의 적어도 일부의 해시값을 매칭시키는 단계; 및
상기 해시값의 매칭이 성공한 경우, 상기 바이러스 패턴과 상기 제2타겟데이터를 매칭시키는 단계;를 포함하며,
상기 필터링 동작과 상기 스캐닝 동작은 시스템 온 칩 상에서 동작하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 제1타겟데이터는 상기 시스템 온 칩이 장착되는 디바이스로부터 수신한 것으로서, 상기 필터링 동작을 수행하는 단계는, 상기 디바이스로부터 수신하는 제1타겟데이터에 대하여 필터링 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 제1타겟데이터는 상기 시스템 온 칩이 구비하는 통신부를 통해 외부 디바이스로부터 수신한 것으로서, 상기 필터링 동작을 수행하는 단계는, 상기 통신부를 통해서 수신하는 제1타켓 데이터에 대해 상기 필터링 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 룰 패턴들과 상기 바이러스 패턴들을 상기 시스템 온 칩이 가지는 저장부에 저장하는 단계;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 제1타켓 데이터에 필터링 동작을 수행하는 단계는,
상기 룰 패턴의 해시값과 상기 제1타겟데이터의 적어도 일부의 해시값을 매칭시키는 단계; 및
상기 해시값의 매칭이 성공한 경우, 상기 룰 패턴과 상기 제1타겟데이터를 매칭시키는 단계;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제5항에 있어서,
상기 해시값을 매칭시키는 단계는,
상기 제1타겟데이터의 헤더에 포함된 IP 어드레스, 프로토콜, 및 포트 중 적어도 어느 하나의 해시값과,
상기 룰 패턴에 포함된 IP 어드레스, 프로토콜, 및 포트 중 적어도 어느 하나의 해시값을 매칭시키는 것임을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 제1타겟 데이터에 대해 필터링 동작을 수행하는 단계는,
상기 제1타겟 데이터에 대하여 패킷 분류 프로세스를 수행하는 단계; 및
상기 패킷 분류 프로세스 수행결과 상기 제1타겟 데이터에 대한 패턴 매칭을 할 것으로 판단된 경우에만, 상기 제1타겟 데이터와 상기 룰 패턴들에 대한 패턴 매칭을 수행하는 단계;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제7항에 있어서,
상기 룰 패턴들 중 모든 IP에 대하여 패스하는 룰 패턴이 하나라도 존재한다면 IP 플래그를 ALL 로 설정하는 단계;
상기 룰 패턴들 중 모든 프로토콜에 대하여 패스하는 룰 패턴이 하나라도 존재한다면 프로토콜 플래그를 ALL로 설정하는 단계; 및
상기 룰 패턴들에 모든 포트에 대하여 패스하는 룰 패턴이 하나라도 존재한다면 포트 플래그를 All로 설정하는 단계; 를 더 포함하며,
상기 패킷 분류 프로세스는 상기 플래그들을 이용하여 수행되는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제8항에 있어서,
상기 플래그들이 모두 ALL로 설정되어 있거나, 상기 IP 플래그와 상기 포트 플래그가 ALL로 설정된 경우에는, 상기 제1 타겟 데이터에 대한 패턴 매칭을 수행하는 단계는 수행하지 않는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제7항에 있어서,
상기 패킷 분류 프로세스를 수행하는 단계는,
상기 룰 패턴들 중 모든 IP에 대하여 패스하는 룰이 전혀 존재하지 않는 경우에는, 상기 제1 타겟 데이터에 포함된 IP 어드레스와 상기 룰 패턴들에 각각 포함된 IP를 매칭시키는 IP 매칭 프로세스 수행 단계;를 포함하며,
상기 룰 패턴들 중 모든 IP에 대하여 패스하는 룰이 하나라도 존재하는 경우에는 상기 IP 매칭 프로세스를 수행하지 않는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제10항에 있어서,
상기 IP 매칭 프로세스 수행 결과, IP 매칭이 성공한 경우에만 상기 제1 타겟 데이터에 대한 패턴 매칭을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제10항에 있어서,
상기 IP 매칭 프로세스는,
상기 IP 매칭이 성공한 경우, 상기 IP 매칭이 성공한 룰 패턴이 모든 프로토콜에 대하여 적용되는 것인지 여부를 확인하고, 상기 IP 매칭이 성공한 룰 패턴이 만약 모든 프로토콜에 대하여 적용되는 것이라면 프로토콜 플래그를 ALL로 설정하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제12항에 있어서,
상기 패킷 분류 프로세스를 수행하는 단계는,
상기 프로토콜 플래그가 ALL로 설정되어 있지 않은 경우, 상기 제1 타켓 데이터에 포함된 프로토콜과 상기 IP 매칭이 성공한 룰 패턴에 포함된 프로토콜을 매칭시키는 프로토콜 매칭 프로세스 수행 단계;를 더 포함하며,
상기 프로토콜 플래그가 ALL로 설정된 경우에는, 상기 프로토콜 매칭 프로세스를 수행하지 않는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제13항에 있어서,
상기 프로토콜 매칭 프로세스 수행 결과 프로토콜 매칭이 성공한 경우에만 상기 제1 타겟 데이터에 대한 패턴 매칭을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제13항에 있어서,
상기 프로토콜 매칭 프로세스 수행 결과, 프로토콜 매칭이 성공한 경우, 상기 프로토콜 매칭이 성공한 룰 패턴이 모든 포트에 대하여 적용되는 것인지 여부를 확인하고, 상기 프로토콜 매칭이 성공한 룰 패턴이 만약 모든 포트에 대하여 적용되는 것이라면 포트 플래그를 ALL로 설정하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제15항에 있어서,
상기 패킷 분류 프로세스를 수행하는 단계는,
상기 포트 플래그가 ALL로 설정되어 있지 않은 경우, 상기 제1타겟 데이터에 포함된 포트와 상기 IP 매칭이 성공한 룰 패턴에 포함된 포트와 매칭시키는 포트 매칭 프로세스 수행 단계;를 더 포함하며,
상기 포트 플래그가 ALL로 설정된 경우에는, 상기 포트 매칭 프로세스를 수행하지 않는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제16항에 있어서,
상기 포트 매칭 프로세스 수행 결과 포트 매칭이 성공하고, 그리고 상기 IP 매칭이 성공한 경우에만 상기 제1 타겟 데이터에 대한 패턴 매칭을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제7항에 있어서,
상기 제1타겟 데이터와 상기 룰 패턴들에 대한 패턴 매칭을 수행하는 단계는,
상기 제1타겟 데이터에 포함된 IP 어드레스에 대한 해시 값과 상기 룰 패턴들에 각각 포함된 IP 어드레스에 대한 해시 값을 매칭시키는 해시 값 매칭 단계;
상기 해시 값의 매칭이 성공한 경우, 상기 해시 값의 매칭이 성공한 룰 패턴에 포함된 IP 어드레스의 중간 값과 끝 값과, 상기 제1타겟 데이터에 포함된 IP 어드레스의 중간 값과 끝 값을 각각 매칭시키는 라이트 패턴 매칭 단계; 및
상기 라이트 패턴 매칭 단계가 성공한 경우, 상기 라이트 패턴 매칭이 성공한 룰 패턴과 상기 제1 타겟 데이터를 매칭시키는 정밀 패턴 매칭 단계;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제18항에 있어서,
상기 해시 값 매칭 단계는,
해시 매처 테이블과 상기 제1 타겟 데이터의 IP의 해시 값을 서로 매칭시키는 단계이며,
상기 해시 매처 테이블은 룰 패턴들 각각에 포함된 IP에 대한 해시 값과, 그 해시 값의 존재 유무를 나타내는 항목을 포함하고 있는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제18항에 있어서,
상기 라이트 패턴 매칭 단계는,
서브 매처 테이블과 상기 제1 타겟 데이터에 포함된 IP 어드레스의 일부 값을 서로 매칭시키는 단계이며,
상기 서브 매처 테이블은, 룰 패턴들 각각에 포함된 IP 어드레스의 해시값을 나타내는 항목과, 그 IP 어드레스의 일부를 나타내는 항목을 포함하고 있는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제20항에 있어서,
상기 IP 어드레스의 일부는, IP 어드레스의 중간 값과 끝 값인 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제20항에 있어서,
상기 서브 매처 테이블은 룰 패턴들이 저장된 주소를 나타내는 항목을 더 포함하며,
상기 정밀 패턴 매칭 단계는, 상기 룰 패턴들이 저장된 주소들 중에서, 상기 라이트 패턴 매칭 단계가 성공한 룰 패턴이 저장되어 있는 주소를 참조하고, 참조한 주소에 저장된 룰 패턴과 상기 제1 타겟 데이터를 매칭시키는 단계인 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제20항에 있어서,
상기 서브 매처 테이블은 IP 어드레스 Next 항목을 더 포함하며,
상기 Next 항목은, 상기 IP 어드레스의 해시 값을 나타내는 항목에 기재된 IP의 해시 값과 충돌되는 IP 해시 값을 가지는 다른 룰 패턴에 대한 정보를 찾을 수 있는 데이터를 나타내는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 제23항에 있어서,
상기 다른 룰 패턴에 대한 정보를 찾을 수 있는 데이터는, 상기 다른 룰 패턴에 대한 정보가 저장된 주소인 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작 방법. - 삭제
- 제1항에 있어서,
상기 해시값을 매칭시키는 단계는,
상기 제2타겟데이터의 일부에 대한 해시값과,
상기 바이러스 패턴에 대한 해시값을 매칭시키는 것임을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제1항에 있어서,
상기 바이러스 패턴과 상기 제2타겟데이터를 매칭시키는 단계는,
상기 바이러스 패턴의 일부와 상기 제2타켓 데이터의 일부를 매칭시키는 라이트 패턴 매칭 단계; 및
상기 라이트 패턴 매칭이 성공한 경우, 상기 바이러스 패턴과 상기 제2타겟데이터를 매칭시키는 정밀 매칭 단계;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제27항에 있어서,
상기 라이트 패턴 매칭 단계는,
상기 제2타겟데이터의 제3 위치의 값 및 제4 위치의 값과,
상기 바이러스 패턴의 제3 위치의 값의 값 및 제4 위치의 값을 매칭시키는 것임을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 제27항에 있어서,
상기 정밀 매칭 단계는,
상기 제2타겟데이터와 바이러스 패턴을 매칭시키는 것임을 특징으로 하는 안티 멀웨어 시스템에서의 동작방법. - 타겟데이터를 수신하여 안티 멀웨어를 스캐닝하거나 필터링하는 안티 멀웨어 시스템에 있어서,
멀웨어 패턴을 저장하는 저장부;
상기 타겟데이터의 적어도 일부의 해시값과, 상기 멀웨어 패턴의 해시값을 매칭시키는 제1해시값 매칭부; 및
상기 해시값의 매칭이 성공한 경우, 상기 멀웨어 패턴과 상기 타겟데이터의 일부를 매칭시키는 제1라이트 패턴 매칭부;를 포함하며,
상기 라이트 패턴 매칭이 성공한 경우, 상기 멀웨어 패턴과 상기 타겟데이터의 전부를 매칭시키는 것을 특징으로 하는 안티 멀웨어 시스템. - 제30항에 있어서,
상기 멀웨어 패턴은 바이러스 패턴과 룰 패턴을 포함하며,
상기 수신한 타겟데이터가 필터링 대상인 경우,
상기 제1해시값 매칭부와 제1라이트 패턴 매칭부는 상기 룰 패턴과 상기 타겟데이터에 대하여 각각의 매칭 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제31항에 있어서,
상기 수신된 타겟데이터가 바이러스 스캐닝 대상인 경우,
상기 제1해시값 매칭부와 제1라이트 패턴 매칭부는 상기 바이러스 패턴과 상기 타겟데이터에 대하여 각각의 매칭 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제30항에 있어서,
상기 타겟데이터가 입력되면, 상기 타겟데이터를 바이러스 스캐닝 대상으로 인지하는 안티 멀웨어 매니저;를 더 포함하고,
상기 멀웨어는 바이러스 패턴과 룰 패턴을 포함하며,
상기 제1해시값 매칭부와 제1라이트 패턴 매칭부는, 상기 안티 멀웨어 매니저의 지시에 의해 상기 룰 패턴과 타겟데이터간의 매칭 동작을 수행하거나, 또는, 상기 바이러스 패턴과 타겟데이터간의 매칭 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제30항에 있어서,
상기 타겟데이터의 적어도 일부의 해시값과, 상기 멀웨어 패턴의 해시값을 매칭시키는 제2해시값 매칭부; 및
상기 해시값의 매칭이 성공한 경우, 상기 멀웨어 패턴과 상기 타겟데이터의 일부를 매칭시키는 제2라이트 패턴 매칭부;를 더 포함하고,
상기 멀웨어 패턴은 바이러스 패턴과 룰 패턴을 포함하며,
상기 타겟데이터가 필터링 대상이 되는 경우, 상기 제1해시값 매칭부와 상기 제1라이트 패턴 매칭부는, 상기 필터링 대상이 되는 타겟데이터와 상기 룰 패턴을 매칭시키고,
상기 타겟데이터가 바이러스 스캐닝 대상이 되는 경우, 상기 제2해시값 매칭부와 상기 제2라이트 패턴 매칭부는, 상기 바이러스 스캐닝 대상이 되는 타겟데이터와 상기 바이러스 패턴을 매칭시키는 것을 특징으로 하는 안티 멀웨어 시스템. - 제34항에 있어서,
상기 바이러스 스캐닝 대상이 되는 상기 타겟데이터를 수신하는 안티-바이러스 매니저;를 더 포함하며,
상기 멀웨어 패턴은 바이러스 패턴과 룰 패턴을 포함하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제35항에 있어서,
상기 제2해시값 매칭부와 상기 제2라이트 패턴 매칭부는, 상기 안티 바이러스 매니저가 수신한 타겟데이터와 상기 바이러스 패턴에 대하여 각각의 동작을 수행하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제30항에 있어서,
제1해시값 매칭부 및 제1라이트 패턴 매칭부는 하드웨어에 의해 구현되는 것을 특징으로 하는 안티 멀웨어 시스템. - 제37항에 있어서,
상기 하드웨어는,
상기 타겟데이터를 저장하는 버퍼; 및
상기 버퍼에 저장된 타겟데이터의 일부에 대한 해시값과, 상기 멀웨어 패턴의 해시값을 매칭시키는 해시 매처;
상기 해시 매처에 의해 해시값이 매칭된 경우, 상기 타겟데이터를 저장하는 해시 큐 버퍼; 및
상기 해시 큐 버퍼에 저장된 상기 타겟데이터의 제1위치의 값 및 제2위치의 값과, 상기 멀웨어 패턴의 제1위치의 값과 제2위치의 값을 매칭시키는 라이트 패턴 매처;를 포함하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제38항에 있어서,
상기 해시 매처는,
상기 멀웨어 패턴의 해시값의 존재 유무를 나타내는 해시 매처 테이블과 상기 타겟데이터의 일부에 대한 해시값을 매칭시키며,
매칭이 성공하면 상기 타겟데이터를 상기 해시 큐 버퍼에 저장하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제39항에 있어서,
상기 하드웨어는,
스캔 큐 버퍼;를 더 포함하며,
상기 라이트 패턴 매처는, 상기 멀웨어 패턴의 해시값, 제1위치의 값과 제2위치의 값을 가지는 적어도 하나의 레코드를 포함하는 서브 매처 테이블과 상기 타겟데이터의 제1위치의 값과 제2위치의 값을 매칭시키며, 매칭이 성공하면 상기 타겟데이터를 상기 스캔 큐 버퍼에 저장하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제40항에 있어서,
상기 멀웨어 패턴과 상기 타겟데이터의 전부를 매칭시키는 동작은, 상기 스캔 큐 버퍼에 저장된 타겟데이터에 대하여 수행되는 것을 특징으로 하는 안티 멀웨어 시스템. - 제40항에 있어서,
상기 하드웨어는,
상기 서브 매처 테이블의 레코드들 중에서, 상기 해시 큐 버퍼에 저장되는 타겟데이터의 해시값을 가진 레코드를 저장하는 주소를 발생시키는 오프셋 어드레스 제너레이터;를 더 포함하는 것을 특징으로 하는 안티 멀웨어 시스템. - 제42항에 있어서,
상기 오프셋 어드레스 제너레이터에 의해 발생된 주소는 상기 해시 큐 버퍼에 저장되는 타겟데이터와 연관되어 상기 해시 큐 버퍼에 같이 저장되는 것을 특징으로 하는 안티 멀웨어 시스템. - 제30항에 있어서,
디바이스;를 더 포함하며,
상기 저장부와 상기 제1해시값 매칭부는 시스템 온 칩의 형태로 구현되고,
상기 시스템 온 칩은 디바이스에 착탈 가능하게 장착되며, 상기 디바이스로부터 상기 타겟데이터를 수신하여 안티 멀웨어 스캐닝 또는 필터링 동작을 수행하고, 수행결과를 상기 디바이스에게 통지하는 것을 특징으로 하는 안티 멀웨어 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011127380A JP5425840B2 (ja) | 2010-06-07 | 2011-06-07 | アンチマルウェアシステム及びその動作方法 |
US13/154,756 US9223969B2 (en) | 2010-06-07 | 2011-06-07 | Anti-malware system and operating method thereof |
EP11168862A EP2393030A3 (en) | 2010-06-07 | 2011-06-07 | Anti-malware system and operating method thereof |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20100053371 | 2010-06-07 | ||
KR1020100053371 | 2010-06-07 | ||
KR1020100057824 | 2010-06-18 | ||
KR20100057824 | 2010-06-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110134277A KR20110134277A (ko) | 2011-12-14 |
KR101225870B1 true KR101225870B1 (ko) | 2013-01-24 |
Family
ID=45501702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110051706A KR101225870B1 (ko) | 2010-06-07 | 2011-05-30 | 안티 멀웨어 시스템 및 그의 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101225870B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101717941B1 (ko) * | 2015-09-16 | 2017-03-20 | 주식회사 안랩 | 악성코드 진단 방법 및 이에 적용되는 장치 |
KR102276912B1 (ko) * | 2017-06-07 | 2021-07-13 | 삼성전자주식회사 | 스토리지 시스템 및 이의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205552B1 (en) * | 1998-12-31 | 2001-03-20 | Mci Worldcom, Inc. | Method and apparatus for checking security vulnerability of networked devices |
US7523500B1 (en) * | 2004-06-08 | 2009-04-21 | Symantec Corporation | Filtered antivirus scanning |
-
2011
- 2011-05-30 KR KR1020110051706A patent/KR101225870B1/ko not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205552B1 (en) * | 1998-12-31 | 2001-03-20 | Mci Worldcom, Inc. | Method and apparatus for checking security vulnerability of networked devices |
US7523500B1 (en) * | 2004-06-08 | 2009-04-21 | Symantec Corporation | Filtered antivirus scanning |
Also Published As
Publication number | Publication date |
---|---|
KR20110134277A (ko) | 2011-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5425840B2 (ja) | アンチマルウェアシステム及びその動作方法 | |
US8365287B2 (en) | Anti-malware system and operating method thereof | |
JP5646411B2 (ja) | セキュリティー機能を有したシステムオンチップ及びこれを利用したデバイス、並びにスキャン方法 | |
US8365288B2 (en) | Anti-malware device, server, and method of matching malware patterns | |
JP5519718B2 (ja) | システムオンチップ基盤のパケットフィルタリングを提供できるデバイス及びパケットフィルタリング方法 | |
RU2617654C2 (ru) | Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя | |
JP2011248897A (ja) | パターンマッチング方法及びシステム | |
EP3462699B1 (en) | System and method of identifying a malicious intermediate language file | |
US9306908B2 (en) | Anti-malware system, method of processing packet in the same, and computing device | |
KR101225870B1 (ko) | 안티 멀웨어 시스템 및 그의 동작 방법 | |
CN106301992A (zh) | 一种攻击报文检测方法及设备 | |
CN109871685B (zh) | 一种rtf文件的解析方法及装置 | |
US9104866B2 (en) | Pattern matching engine, terminal apparatus using the same, and method thereof | |
EP3079334B1 (en) | Device and method for transferring files from a portable storage device | |
KR101270928B1 (ko) | 안티-멀웨어 시스템 및 그의 동작 방법 | |
CN111241539A (zh) | 一种虚拟化平台的安全防护***及方法 | |
EP2400424B1 (en) | Anti-malware system and operating method thereof | |
KR101274348B1 (ko) | 안티멀웨어 디바이스, 서버 및 멀웨어 패턴 매칭 방법 | |
EP4357951A1 (en) | Method and system for computational storage attack reduction | |
EP3151148B1 (en) | System and method for generating sets of antivirus records for detection of malware on user devices | |
JP5226105B2 (ja) | アンチマルウェアシステム及びその動作方法 | |
KR20130018607A (ko) | 안티멀웨어 엔진을 구비한 단말장치 및 이를 이용한 안티멀웨어 스캔닝 방법 | |
CN110768944A (zh) | 基于fpga技术的iot设备防护***及方法 | |
KR20190043300A (ko) | 코드 재사용 취약점 스캐닝 진단장치 및 방법 | |
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 | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151228 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |