KR20090068833A - 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 - Google Patents
가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 Download PDFInfo
- Publication number
- KR20090068833A KR20090068833A KR1020070136612A KR20070136612A KR20090068833A KR 20090068833 A KR20090068833 A KR 20090068833A KR 1020070136612 A KR1020070136612 A KR 1020070136612A KR 20070136612 A KR20070136612 A KR 20070136612A KR 20090068833 A KR20090068833 A KR 20090068833A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- domain
- virtual machine
- machine monitor
- domains
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/02—Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
- G06F15/025—Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators adapted to a specific application
- G06F15/0275—Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators adapted to a specific application for measuring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법이 제공된다. 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor) 및 적어도 하나의 루트 도메인에 존재하며 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며, 가상 머신 모니터는 측정된 응용 프로그램의 신뢰 수준에 따라 복수의 도메인 중 어느 하나의 도메인에서 응용 프로그램을 실행시킨다.
또한, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법은, 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 단계와, 적어도 하나의 루트 도메인이 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계 및 측정된 응용 프로그램의 신뢰 수준에 따라 복수의 도메인 중 어느 하나의 도메인에서 응용 프로그램을 실행하는 단계를 포함한다.
운영 체제, 가상 머신 모니터, 도메인, 신뢰 수준
Description
본 발명은 프로그램 실행 시스템 및 그 제어 방법에 관한 것으로, 보다 상세하게는 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법에 관한 것이다.
일반적으로 안티 바이러스 소프트웨어(Anti-Virus software, AVS) 등의 보안 프로그램 또는 침입 탐지 시스템(Intrusion Detection System, IDS)은 운영 체제(Operating System, OS)와 응용 프로그램의 영역에 걸쳐 존재하여 운영 체제 및 응용 프로그램의 바이러스의 체크 및 치료를 수행하였다.
또는, 보안 프로그램 또는 침입 탐지 시스템은 가상 머신 모니터(Virtual Machine Monitor, VMM) 내에 존재하여 바이러스의 체크 및 치료를 수행하였다. 가상 머신 모니터는 하드웨어와 운영 체제 사이에 존재하며, 하나의 하드웨어를 가상화시켜 다수의 운영 체제가 동시에 동작할 수 있도록 한다. 이러한 가상 머신 모니터는 통상적으로 펌 웨어(Firm ware)를 대체하거나, 펌 웨어와 운영 체제 사이에서 동작하게 된다. 통상적인 하드웨어는 입출력 포트(IO port), 저장 장치 및 메모리 등이 포함된다. 따라서, 입출력 포트, 메모리 및 저장 장치로부터 모든 데이터가 가상 머신 모니터를 거쳐서 운영 체제 및 응용 프로그램으로 전달되고, 가상 머신 모니터 내의 보안 프로그램이 이러한 모든 데이터에 대하여 바이러스 검사를 수행하고, 감염 여부에 따라 감염된 데이터를 치료하였다.
그러나, 종래에 보안 프로그램 또는 침입 탐지 시스템과 응용 프로그램이 동일한 운영 체제 상에서 동작되는 경우에는 운영 체제 감염으로 인해 보안 프로그램이 감염되거나, 보안 프로그램이 바이러스 검사를 지나치는 경우가 있었다.
또한, 보안 프로그램 또는 침입 탐지 시스템은 가상 머신 모니터 내에 존재하는 경우에도 응용 프로그램의 악의성을 판단하는 수준이 두가지, 즉, 악의적인가 또는 호의적인가만을 판단하였고, 응용 프로그램에 대해 단기간의 모니터링을 통해 악의성을 판단하였다. 따라서, 응용 프로그램에 대한 악의성 판단에 있어서 정확성이 떨어져 잘못된 결과(False Alarm)가 발생하는 경우가 잦았다. 즉, 악의적인 응용 프로그램에 대해 호의적인 것으로 오인(False negative)함으로써, 악의적인 응용 프로그램이 시스템을 망가뜨리는 현상이 발생하였고, 반대로 호의적인 응용 프로그램에 대해 악의적인 것으로 오인(False positive)함으로써, 호의적인 프로그램을 사용할 수 없는 현상이 발생하였다.
더욱이, 최근에는 보안 프로그램 또는 침입 탐지 시스템이 동작하는지 확인하여 호의적인 응용 프로그램으로 속이는 악성 응용 프로그램도 출현하고 있는 실정이어서, 응용 프로그램에 대한 잘못된 판단을 줄이는 것이 필요하게 되었다.
본 발명은 상기한 문제점을 개선하기 위해 고안된 것으로, 본 발명이 해결하고자 하는 과제는 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써 시스템의 안정성을 향상시킬 수 있는 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제는 이상에서 언급한 것들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제는 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor) 및 상기 적어도 하나의 루트 도메인에 존재하며 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며, 상기 가상 머신 모니터는 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행시킨다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법은, 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포 함하는 복수의 도메인으로 구분하는 단계와, 상기 적어도 하나의 루트 도메인이 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계 및 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써, 응용 프로그램의 악의성 판단에 대한 정확성을 향상시킬 수 있다.
둘째, 가상 머신 모니터를 이용하여 운영 체제를 복수의 도메인으로 구분하고 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 실행함으로써 시스템의 안정성을 향상시킬 수 있다.
셋째, 각 도메인에 대해 신뢰 수준에 따라 시스템 리소스의 할당을 차별화하여 응용 프로그램을 실행시킴으로써 시스템 리소스의 사용을 효율적으로 할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있 을 것이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어 방법을 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 구성을 개략적으로 나타내는 블록도이다.
본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템은, 하드웨어 플랫폼(100)과, 가상 머신 모니터(200)와, 루트 도메인(300) 및 복수의 도메인(400)을 포함할 수 있다.
하드웨어 플랫폼(100)은 CPU, 메모리, 입출력 포트(IO port), 저장 장치 등을 포함하는 실제의 하드웨어 장치를 의미할 수 있다.
가상 머신 모니터(Virtual Machine Monitor)(200)는 하드웨어 플랫폼(100)과 운영 체제 사이에 존재하며, 하나의 하드웨어를 가상화(Virtualization)시켜 다수의 운영 체제가 동시에 동작할 수 있도록 할 수 있다. 여기서, 운영 체제는 Windows, Linux 등으로 하나의 운영 체제를 의미할 수도 있고, 복수의 운영 체제로 이루어질 수도 있다. 각 운영 체제는 가상화를 통해 실제 물리적으로 하나의 자원을 이용하는 것이 아니라 가상화 계층(Virtualization Layer)를 통해서 접근할 수 있다. 즉, 하나의 물리적인 시스템 리소스(Physical system resource)를 여러 개의 가상화 시스템 리소스(Virtual system resources)로 사용할 수 있다.
본 발명의 일실시예에 의하면, 가상 머신 모니터(200)는 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인(300)을 포함하는 복수의 도메인(400)으로 구분할 수 있다.
루트 도메인(300)은 신뢰 수준 측정부(340)를 포함할 수 있다. 신뢰 수준 측정부(Trust Manager)(340)는 각 도메인(400)에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하고 조정하는 역할을 할 수 있다. 이에 대해서는 자세히 후술하기로 한다.
또한, 루트 도메인(300)은 도메인 제어부(330)를 더 포함할 수 있다. 도메인 제어부(Domain Controller)(330)는 가상 머신 모니터(200)의 도메인 상태 감시부(Domain Status Monitor)(210)로부터 각 도메인(400)의 상태를 파악할 수 있다. 예를 들면, 도메인(400)의 상태에 이상이 있는 경우(Abnormal 상태)에는, 해당 도메인(400)에서 동작하는 모든 응용 프로그램의 신뢰 수준을 낮추도록 신뢰 수준 측정부(340)에 요구할 수 있다. 이 때에는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)가 해당하는 도메인(400)의 프로세스 제어부(413 내지 453)를 통해 응용 프로그램의 프로세스를 이동시킬 수 있다.
또한, 복수의 도메인(400) 각각은 프로세스 제어부(413 내지 453)를 포함할 수 있다. 프로세스 제어부(413 내지 453)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로부터 프로세스의 이동 요청을 받아 응용 프로그램의 프로세스를 동결(Freeze) 또는 복원(Restore)할 수 있다. 이에 대해서는 자세히 후술하기로 한다.
한편, 루트 도메인(300)은 가상 네트워크 관리자(Virtual Network Manager)(310) 및 가상 파일 시스템 관리자(Virtual File System Manager)(320)를 더 포함할 수 있고, 이에 대응하여 복수의 도메인(400)은 각각 가상 네트워크 클라이언트(Virtual Network Client)(411 내지 451) 및 가상 파일 시스템 클라이언트(Virtual File System Client)(412 내지 452)를 더 포함할 수 있다.
가상 파일 시스템 관리자(320)는 모든 도메인(400)에게 단일한 가상 파일 시스템의 볼륨 뷰(Volume view)를 제공함으로써, 응용 프로그램의 프로세스가 도메인(400)을 이동하여도 접근이 가능하게 할 수 있다. 즉, 루트 도메인(300)이 가상 파일 시스템의 볼륨을 관리하며, 각 도메인(400)의 가상 파일 시스템 클라이언트(412 내지 452)가 루트 도메인(300)을 통해서 볼륨에 접근할 수 있도록 할 수 있 다. 한편, 가상 파일 시스템 관리자(320)는 응용 프로그램의 실행 바이너리 코드의 수정 요청을 허용하지 않을 수 있다. 왜냐하면 실행 바이너리 코드가 수정될 경우 신뢰 수준을 믿을 수 없기 때문이다. 또한, 가상 머신 모니터(200)는 실행 바이너리 코드가 아닐 경우, 실행을 막도록 할 수 있다.
도 1에 도시된 바와 같이, 본 발명의 일실시예에 의하면, 가상 머신 모니터(200)는, 도메인 상태 감시부(210)와, 실행 패턴 분석부(220)와, 실행 영역 감시부(230)와, 프로세스 이동 제어부(240)와, 시스템 리소스 제어부(250) 및 시스템 리소스 정보 저장부(260)를 포함할 수 있다.
도메인 상태 감시부(210)(Domain Status Monitor)는 각 도메인의 상태를 모니터링하여 이상(Abnormal) 동작을 보이거나 오랜 시간 동작이 중지(Hang)되어 있는 도메인들이 있는 경우, 루트 도메인(300)의 도메인 제어부(330)로 그 상태를 전송할 수 있다.
실행 패턴 분석부(220)(Behavior Profiler)는 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 역할을 할 수 있다.
실행 영역 감시부(230)(Coverage Monitor)는 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 역할을 할 수 있다.
프로세스 이동 제어부(240)는 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 응용 프로그램의 프로세스 상태를 이동시키는 역할을 할 수 있다. 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인이란 도메인의 신뢰도 범위 내에 측정된 응용 프로그램의 신뢰 수준을 포함하는 도메인을 의미할 수 있다.
시스템 리소스 제어부(250)는 복수의 도메인(400) 각각에 대해 신뢰도에 따른 시스템 리소스(System Resource)를 할당할 수 있다. 또한, 시스템 리소스 제어부(250)는 측정된 응용 프로그램의 신뢰 수준에 따라 응용 프로그램이 시스템 리소스에 접근하는 것을 제어할 수 있다.
시스템 리소스 정보 저장부(260)는 복수의 도메인(400) 각각에 대한 신뢰도에 따른 시스템 리소스의 할당 정보를 저장할 수 있다.
상기와 같이 구성되는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법을 설명하면 다음과 같다.
도 2는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에서 신뢰 수준에 따라 응용 프로그램을 실행하는 방법을 나타내는 순서도이다.
먼저, 시스템을 부팅하는 경우와 같이 초기화 단계에서, 가상 머신 모니터(200)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인(300)을 포함하는 복수의 도메인(400)으로 구분할 수 있다(S501).
도 3은 가상 머신 모니터가 운영 체제를 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분한 예를 나타내는 블록도이다.
루트 도메인(300)은 최고의 신뢰 수준을 가지는 도메인을 의미하며, Ring 0의 시스템 사용 권한을 가질 수 있다. 즉, 루트 도메인(300)에서는 모든 하드웨어로의 접근이 허용되고, 가장 많은 시스템 리소스의 할당을 받을 수 있다. 또한, 루트 도메인(300)에는 모든 응용 프로그램의 실행에 필요한 바이너리 코드와 데이터 가 저장될 수 있다.
복수의 도메인(400)은 각각 신뢰 수준에 따라 구분된 도메인들을 의미할 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 운영 체제를 루트 도메인(300)을 제외하고 N 개의 도메인(410 내지 450)으로 구분할 수 있다. 또한, 도메인 1(410) 내지 도메인 N(450)은 각각 다른 시스템 사용 권한, 예를 들면 Ring 1 내지 Ring N까지의 권한을 가질 수 있다.
이 때, 가상 머신 모니터(200)는 하드웨어 플랫폼(100)에 대한 가상 머신 인터페이스(Virtual machine interface)를 각 도메인에 제공하며, 각 도메인(400)들 간의 주소 공간(Address Space)을 분리하여 보호하는 기능을 할 수 있다. 각 도메인(400)들은 가상 머신 모니터(200)에 하드웨어 플랫폼(100)에 대한 접근 서비스를 호출함으로써(이를 Hypercall이라 한다.), 하드웨어 플랫폼(100)에 액세스할 수 있다. 이와 같이, 가상 머신 모니터(200)를 사용하기 때문에 각 도메인(400)에서 실행되는 응용 프로그램은 해당 도메인(400)에만 영향을 미치게 된다.
가상 머신 모니터(200)에 의해 운영 체제를 복수의 도메인(400)으로 구분을 한 후에, 가상 머신 모니터(200)의 시스템 리소스 제어부(250)는 복수의 도메인(400) 각각에 신뢰도에 따른 시스템 리소스를 할당할 수 있다(S502). 시스템 리소스 제어부(250)는 신뢰도에 따른 시스템 리소스 할당 정책을 결정하고, 이에 따라 각각의 도메인에 시스템 리소스를 할당할 수 있다.
예를 들면, 루트 도메인(300)에는 가장 높은 신뢰도를 가지고 Ring 0의 시스템 사용 권한을 가지므로, 이에 따라 가장 많은 시스템 리소스를 할당할 수 있다. 그리고, 도메인 1(410)부터 도메인 N(450)까지는 각각 Ring 1부터 Ring N까지 시스템 사용 권한을 가지므로, 각각 그에 따른 시스템 리소스를 할당할 수 있다. 여기서는, 도메인 1(410)로부터 도메인 N(450)으로 갈수록 신뢰도가 낮아진다고 가정한다. 이러한 시스템 리소스의 할당 정보는 시스템 리소스 정보 저장부(260)에 저장될 수 있다.
본 발명의 일실시예에 따르면, 가상 머신 모니터(200)가 신뢰도에 따라 구분된 복수의 도메인(400)에 응용 프로그램을 설치하기 때문에, 악의적인 응용 프로그램에 대해 호의적인 것으로 오인(False negative)하는 경우에도, 해당 응용 프로그램이 위치한 도메인(400)에 대해서만 영향을 미치고 다른 도메인(400)들에는 영향을 주지 않으므로 시스템의 안정성을 향상시킬 수 있다. 또한, 반대로 호의적인 응용 프로그램에 대해 악의적인 것으로 오인(False positive)하는 경우에도, 해당 응용 프로그램을 무조건 차단하지 않고 낮은 신뢰도를 가지는 도메인(400)에서 실행함으로써 추후 응용 프로그램의 신뢰 수준이 높아질 수 있는 기회가 있으므로, 악의성 판단에 대한 정확성을 향상시킬 수 있다.
도 4는 응용 프로그램을 다운로드 할 때에 응용 프로그램이 시스템에 설치되는 예를 나타내는 블록도이다.
도 4에 도시된 바와 같이, 인터넷 등을 통하여 응용 프로그램을 다운로드 할 때에는 보안 프로그램 또는 침입 감지 시스템(도시되지 않음)을 통해서 응용 프로그램의 인증 여부를 판단할 수 있다. 프로그램 인증 여부는 응용 프로그램을 다운로드 하는 시스템의 내부에 설치된 보안 프로그램 또는 침입 감지 시스템을 통해서 판단할 수 있으나, 시스템의 외부에 설치된 네트워크 침입 감지 시스템(Network Intrusion Detection System, NIDS)에 의해서도 판단될 수 있다.
응용 프로그램의 인증 여부를 판단한 결과 인증된 응용 프로그램인 경우에는, 루트 도메인(300)에 바로 설치될 수 있다. 반면에, 공지된 바이러스 등 악의성이 있는 소프트웨어(Malicious Software, Malware)로 판단되는 경우에는 다운로드를 차단할 수 있다. 마지막으로, 공지되지 않은 응용 프로그램으로 판단되는 경우에는, 복수의 도메인(400) 중 소정의 신뢰도를 가지는 도메인, 예를 들면, Ring k의 시스템 사용 권한을 가지는 도메인 k(430)에 다운로드 할 수 있다. 이 때, 다운로드 되는 도메인 k(430)는 시스템의 정책에 따라 결정될 수 있다. 다운로드가 완료된 응용 프로그램은 도메인 k(430)에서 실행될 수 있다. 응용 프로그램을 다운로드 할 때에 시스템에 설치되는 방법은 상술한 바와 국한되지 않으며, 당업자에 의해 변경 가능하다.
다시 도 2를 참조하면, 응용 프로그램이 설치된 후에는 루트 도메인(300)의 신뢰 수준 측정부(340)는 도메인 k(430)에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정할 수 있다(S503). 또한, 신뢰 수준을 측정한 결과를 바탕으로 응용 프로그램의 신뢰 수준을 조정할 수 있다. 즉, 응용 프로그램의 신뢰 수준을 측정한 결과, 바로 이전의 측정 때보다 특별한 이상(Abnormal) 행동을 보이지 않는 경우에는 신뢰 수준을 증가(Promotion)시키고, 특별한 이상 행동을 보이는 경우에는 신뢰 수준을 감소(Demotion)시킬 수 있다.
바람직하게는, 응용 프로그램의 신뢰 수준은 가상 머신 모니터(200)의 실행 패턴 감시부가 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석한 결과를 전송 받아 측정할 수 있다. 즉, 응용 프로그램이 실행되는 동안 시스템에 요청하는 시스템 콜(System call)들을 모니터링하여 시스템 리소스에 접근하는 패턴 등을 분석하여 악의성이 있는 소프트웨어인지 판단하여 신뢰 수준을 측정할 수 있다. 신뢰 수준을 측정한 결과, 호의성이 있는 소프트웨어로 판단되는 경우에는 신뢰 수준을 증가시키고, 악의성이 있는 소프트웨어로 판단되는 경우에는 신뢰 수준을 감소시킬 수 있다.
한편, 신뢰 수준의 증가 또는 감소 정도를 결정함에 있어서, 가상 머신 모니터(200)의 실행 영역 감시부(230)가 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역을 판단한 결과를 참조할 수 있다. 즉, 응용 프로그램의 바이너리 코드의 전체가 실행되는 경우에는 신뢰 수준의 증가 비율을 높게 할 수 있다. 반면에, 전체 코드 중 실행 영역이 적은 경우에는 아직 호의성이 있는 프로그램인지 분명하지 않으므로 그 증가 비율을 낮게 할 수 있다.
또한, 신뢰 수준의 증가 또는 감소 정도를 결정함에 있어서, 응용 프로그램이 실행된 시간을 참조할 수 있다. 즉, 응용 프로그램의 실행 시간이 길수록 신뢰 수준의 측정 결과가 정확하다고 볼 수 있으므로 신뢰 수준의 증가 비율을 높게 할 수 있다.
상술한 바와 같이, 응용 프로그램의 신뢰 수준이 측정하고 난 후, 측정된 신뢰 수준에 변화가 있는 경우에는, 응용 프로그램의 프로세스를 측정된 신뢰 수준에 해당하는 신뢰도를 가지는 도메인(400)으로 이동시킬 수 있다. 먼저, 신뢰 수준 측 정부(340)는 응용 프로그램이 실행되는 도메인(400)을 판단하고, 이를 기준으로 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인(400)을 결정할 수 있다(S504). 그리고, 가상 머신 모니터(200)의 프로세스 이동 제어부(240)에 응용 프로그램의 프로세스를 이동시킬 것을 요청할 수 있다(S505).
도 5는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준을 주기적으로 측정하여 신뢰 수준을 조정하는 예를 나타내는 블록도이다.
도 5에 도시된 바와 같이, 다운로드가 완료된 응용 프로그램은 최초(t0)에 도메인 k(430)에서 실행될 수 있다. 일정 시간이 지난 후, 신뢰 수준 측정부(340)에서 응용 프로그램의 신뢰 수준을 측정할 수 있다. 상술한 바와 같이, 응용 프로그램의 런타임 실행 패턴을 분석하여 신뢰 수준을 측정할 수 있는데, 이전 측정 때보다 특별한 이상 행동을 보이지 않는 경우에는 신뢰 수준을 증가시켜 높게 조정할 수 있다.
주기적으로 응용 프로그램의 신뢰 수준을 측정한 결과, 어느 시점(t1)에서 응용 프로그램의 신뢰 수준이 도메인 k(430)의 신뢰도의 최대값(Ak -1)을 넘게 되면, 신뢰 수준 측정부(340)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 도메인 k-1(420)로 이동시킬 것을 요청할 수 있다. 마찬가지로, 어느 시점(t2)에서 응용 프로그램의 신뢰 수준이 도메인 k-1(420)의 신뢰도의 최대값(Ak -2)을 넘게 되면, 신뢰 수준 측정부(340)는 프로세스 이동 제어 부(240)로 응용 프로그램의 프로세스를 도메인 k-2로 이동시킬 것을 요청할 수 있다.
만약, 어느 시점(t3)에서 응용 프로그램의 신뢰 수준을 측정한 결과, 이전 단계(t2) 이후로 악의성을 보인 경우에는 응용 프로그램의 신뢰 수준을 감소시킬 수 있다. 예를 들어, 도메인 k(430)의 신뢰도의 최대값(Ak) 이하로 신뢰 수준이 감소되는 경우에는, 신뢰 수준 측정부(340)는 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 도메인 k+1(440)로 이동시킬 것을 요청할 수 있다.
다시 도 2를 참조하면, 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스 상태를 이동하라는 요청이 있는 경우(S505), 가상 머신 모니터(200)의 프로세스 이동 제어부(240)는 응용 프로그램의 신뢰 수준에 대응하는 도메인에 응용 프로그램의 프로세스를 이동할 수 있다(S506).
도 6는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준에 따라 응용 프로그램의 프로세스를 이동시키는 예를 나타내는 블록도이다.
예를 들어, 응용 프로그램의 신뢰 수준을 측정하고 조정한 결과, 응용 프로그램의 프로세스를 도메인 k(430)로부터 도메인 k+1(440)로 이동시킨다고 가정한다.
먼저, 루트 도메인(300)의 신뢰 수준 측정부(340)는 가상 머신 모니터(200)의 프로세스 이동 제어부(240)로 응용 프로그램의 프로세스를 이동시킬 것을 요청할 수 있다(S601).
요청을 받은 프로세스 이동 제어부(240)는 현재 응용 프로그램이 실행되는 도메인 k(430)의 프로세스 제어부(413 내지 453)로 응용 프로그램의 프로세스 상태에 대한 체크포인트(Checkpoint) 요청을 할 수 있다(S602). 체크포인트란 실행 중에 정지되거나 중단된 프로그램을 다시 시작할 수 있도록 프로그램의 실행 상태를 검사하고 기록을 유지하는 것을 의미할 수 있다. 즉, 여기에서 체크포인트란 응용 프로그램의 프로세스 상태를 이동하기 위해 프로세스 상태를 저장하는 것으로 이해할 수 있다.
체크포인트 요청을 받은 도메인 k(430)의 프로세스 제어부(413 내지 453)는 응용 프로그램의 프로세스 상태를 저장할 메모리 객체를 할당하고(S603), 메모리 객체에 프로세스 상태를 저장(체크포인트)할 수 있다(S604). 그리고, 도메인 k(430)의 프로세스 제어부(413 내지 453)는 프로세스 이동 제어부(240)로 체크포인트 완료 통지를 할 수 있다(S605). 그리고, 프로세스 이동 제어부(240)는 도메인 k(430)에서 할당된 메모리 내에 저장된 응용 프로그램의 프로세스 상태를 동결(Freeze)시킬 수 있다(S606). 이는 응용 프로그램의 프로세스 상태를 동결시켜 프로세스 상태가 이동 중에 변경되는 것을 방지하기 위한 것으로, 예를 들면, 메모리를 읽기 모드(Read only mode)로 설정할 수 있다. 그리고, 프로세스 이동 제어부(240)는 복수의 도메인(400)에서 메모리를 공유할 수 있도록 설정하고(S607), 이동할 도메인 k+1(440)에 메모리에 대한 통지를 할 수 있다(S608). 통지를 받은 도메인 k+1(440)에서는 메모리로부터 응용 프로그램의 프로세스 상태를 복원(Restore)하고(S609), 프로세스 이동 제어부(240)로 복원 완료 통지를 할 수 있 다(S610). 도메인 k+1(440)로부터 복원 완료 통지를 받은 프로세스 이동 제어부(240)는 도메인 k(430)로 복원 완료 통지를 하고(S611), 도에인 k+1은 할당된 메모리를 해제할 수 있다(S612). 마지막으로, 프로세스 이동 제어부(240)는 신뢰 수준 측정부(340)에 응용 프로그램의 프로세스의 이동이 완료되었음을 통지할 수 있다(S613).
한편, 프로세스 이동 제어부(240)는 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 휘발성 상태의 프로세스 상태를 이동시킬 수 있다. 휘발성의 프로세스 상태는 복수의 도메인(400) 각각에 존재하는 것으로서 응용 프로그램의 신뢰 수준에 따라 이동을 할 수 있는 상태를 의미하며, 예를 들면, CPU 레지스터 상태, 메모리 상태(Data, Stack, Heap 등), 타 프로세스와의 통신 채널(IPC), 네트워크 커넥션, 입출력 디바이스 상태 등일 수 있다. 반면에, 비휘발성의 프로세스 상태는 루트 도메인(300)에서 서비스를 받는 것으로서 응용 프로그램의 신뢰 수준에 무관하게 이동을 할 수 없는 것으로서, 바이너리 코드 또는 응용 프로그램이 생성하거나 참조하는 데이터 파일 등일 수 있다.
다시 도 2을 참조하면, 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 응용 프로그램을 실행시킬 때에(S507), 가상 머신 모니터(200)의 시스템 리소스 제어부(250)는 응용 프로그램의 신뢰 수준에 따라 응용 프로그램이 시스템 리소스에 접근하는 것을 제어할 수 있다(S508).
상술한 바와 같이, 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에 의하면, 장기적인 모니터링을 통하여 응용 프로그램에 대한 신뢰 수준을 주기적으로 측정함으로써, 응용 프로그램의 악의성 판단에 대한 정확성을 향상시킬 수 있다. 또한, 가상 머신 모니터(200)를 이용하여 운영 체제를 복수의 도메인(400)으로 구분하고 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 실행함으로써 시스템의 안정성을 향상시킬 수 있다. 또한, 각 도메인에 대해 신뢰 수준에 따라 시스템 리소스의 할당을 차별화하여 응용 프로그램을 실행시킴으로써 시스템 리소스의 사용을 효율적으로 할 수 있다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템의 구성을 개략적으로 나타내는 블록도이다.
도 2는 본 발명의 일실시예에 따른 가상 머신 모니터 기반의 프로그램 실행 시스템에서 신뢰 수준에 따라 응용 프로그램을 실행하는 방법을 나타내는 순서도이다.
도 3은 가상 머신 모니터가 운영 체제를 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분한 예를 나타내는 블록도이다.
도 4는 응용 프로그램을 다운로드 할 때에 응용 프로그램이 시스템에 설치되는 예를 나타내는 블록도이다.
도 5는 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준을 주기적으로 측정하여 신뢰 수준을 조정하는 예를 나타내는 블록도이다.
도 6은 신뢰 수준 측정부에서 응용 프로그램의 신뢰 수준에 따라 응용 프로그램의 프로세스를 이동시키는 예를 나타내는 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
100: 하드웨어 플랫폼
200: 가상 머신 모니터
210: 도메인 상태 감시부 220: 실행 패턴 분석부
230: 실행 영역 감시부 240: 프로세스 이동 제어부
250: 시스템 리소스 제어부 260: 시스템 리소스 정보 저장부
300: 루트 도메인
310: 가상 네트워크 관리자 320: 가상 파일 시스템 관리자
330: 도메인 제어부 340: 신뢰 수준 측정부
400: 복수의 도메인
410: 도메인 1
411: 가상 네트워크 클라이언트
412: 가상 파일 시스템 클라이언트
413: 프로세스 제어부
Claims (19)
- 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 가상 머신 모니터(Virtual Machine Monitor); 및상기 적어도 하나의 루트 도메인에 존재하며 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 신뢰 수준 측정부를 포함하며,상기 가상 머신 모니터는 상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행시키는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 1 항에 있어서,상기 가상 머신 모니터는,상기 복수의 도메인 각각에 상기 신뢰도에 따른 시스템 리소스(System Resource)를 할당하는 시스템 리소스 제어부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 2 항에 있어서,상기 가상 머신 모니터는,상기 신뢰도에 따른 시스템 리소스의 할당 정보를 저장하는 시스템 리소스 정보 저장부를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 1 항에 있어서,상기 가상 머신 모니터는,상기 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 실행 패턴 분석부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 4 항에 있어서,상기 가상 머신 모니터는,상기 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 실행 영역 감시부를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 1 항에 있어서,상기 신뢰 수준 측정부는,상기 응용 프로그램이 실행되는 도메인을 판단하고, 상기 응용 프로그램이 실행되는 도메인을 기준으로 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인을 결정하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 1 항에 있어서,상기 가상 머신 모니터는,상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 상기 응용 프로그램의 프로세스 상태를 이동시키는 프로세스 이동 제어부를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 7 항에 있어서,상기 프로세스 이동 제어부는,상기 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 상기 휘발성 상태의 프로세스 상태를 이동시키는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 7 항에 있어서,상기 프로세스 이동 제어부는,상기 응용 프로그램이 실행되는 도메인에서 저장된 상기 응용 프로그램의 프로세스 상태를 상기 응용 프로그램의 프로세스 상태를 동결(Freeze)하여 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에 제공하여 상기 응용 프로그램의 프로세스 상태를 복원(Restore)시키는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 제 2 항에 있어서,상기 시스템 리소스 제어부는,상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 응용 프로그램이 시스템 리소스에 접근하는 것을 제어하는 가상 머신 모니터 기반의 프로그램 실행 시스템.
- 가상 머신 모니터(Virtual Machine Monitor)를 이용하여 신뢰도에 따라 운영 체제를 적어도 하나의 루트 도메인을 포함하는 복수의 도메인으로 구분하는 단계;상기 적어도 하나의 루트 도메인이 상기 운영 체제에서 실행되는 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계;상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 복수의 도메인 중 어느 하나의 도메인에서 상기 응용 프로그램을 실행하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 11 항에 있어서,상기 복수의 도메인으로 구분하는 단계는,상기 복수의 도메인 각각에 상기 신뢰도에 따른 시스템 리소스(System Resource)를 할당하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 12 항에 있어서,상기 복수의 도메인으로 구분하는 단계는,상기 신뢰도에 따른 시스템 리소스의 할당 정보를 저장하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 11 항에 있어서,상기 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계는,상기 응용 프로그램의 런타임 실행(Runtime Behavior) 패턴을 분석하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 14 항에 있어서,상기 응용 프로그램의 신뢰 수준을 주기적으로 측정하는 단계는,상기 응용 프로그램을 구성하는 바이너리 코드의 전체 코드 중 실행 영역(Coverage)을 판단하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 11 항에 있어서,상기 응용 프로그램을 실행하는 단계는,상기 응용 프로그램이 실행되는 도메인을 판단하는 단계;상기 응용 프로그램이 실행되는 도메인을 기준으로 상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인을 결정하는 단계; 및상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인으로 상기 응용 프로그램의 프로세스 상태를 이동시키는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 16 항에 있어서,상기 응용 프로그램의 프로세스 상태를 이동시키는 단계는,상기 응용 프로그램의 프로세스 상태를 휘발성 상태와 비휘발성 상태로 구분하고 상기 휘발성 상태의 프로세스 상태를 이동하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 16 항에 있어서,상기 응용 프로그램의 프로세스 상태를 이동시키는 단계는,상기 응용 프로그램이 실행되는 도메인에서 상기 응용 프로그램의 프로세스 상태를 저장하는 단계;상기 가상 머신 모니터에서 상기 응용 프로그램의 프로세스 상태를 동결(Freeze)하는 단계; 및상기 측정된 응용 프로그램의 신뢰 수준에 대응하는 도메인에서 상기 응용 프로그램의 프로세스 상태를 복원(Restore)하는 단계를 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
- 제 16 항에 있어서,상기 응용 프로그램을 실행하는 단계는,상기 측정된 응용 프로그램의 신뢰 수준에 따라 상기 응용 프로그램이 시스템 리소스에 접근하는 것을 제어하는 단계를 더 포함하는 가상 머신 모니터 기반의 프로그램 실행 시스템의 제어 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20070136612A KR101489244B1 (ko) | 2007-12-24 | 2007-12-24 | 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 |
US12/127,901 US8327438B2 (en) | 2007-12-24 | 2008-05-28 | System for executing program using virtual machine monitor and method of controlling the system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20070136612A KR101489244B1 (ko) | 2007-12-24 | 2007-12-24 | 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090068833A true KR20090068833A (ko) | 2009-06-29 |
KR101489244B1 KR101489244B1 (ko) | 2015-02-04 |
Family
ID=40790327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20070136612A KR101489244B1 (ko) | 2007-12-24 | 2007-12-24 | 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8327438B2 (ko) |
KR (1) | KR101489244B1 (ko) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110050230A (ko) * | 2009-11-06 | 2011-05-13 | 삼성전자주식회사 | 가상화 시스템 및 그것의 명령어 실행 방법 |
WO2013009302A1 (en) * | 2011-07-12 | 2013-01-17 | Hewlett-Packard Development Company , L.P. | Computing device including a port and a guest domain |
WO2013191840A1 (en) * | 2012-06-20 | 2013-12-27 | Intel Corporation | Monitoring resource usage by a virtual machine |
KR20140033349A (ko) * | 2011-03-28 | 2014-03-18 | 맥아피 인코퍼레이티드 | 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법 |
US9262246B2 (en) | 2011-03-31 | 2016-02-16 | Mcafee, Inc. | System and method for securing memory and storage of an electronic device with a below-operating system security agent |
US9317690B2 (en) | 2011-03-28 | 2016-04-19 | Mcafee, Inc. | System and method for firmware based anti-malware security |
US9530001B2 (en) | 2011-03-31 | 2016-12-27 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
US9886295B2 (en) | 2009-12-21 | 2018-02-06 | Samsung Electronics Co., Ltd. | Setting server operating system as main domain to provide integrated user interface for a plurality of client operating system set as sub-domains |
KR20180029047A (ko) * | 2015-07-14 | 2018-03-19 | 비트데펜더 아이피알 매니지먼트 엘티디 | 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 |
CN108182070A (zh) * | 2016-12-08 | 2018-06-19 | 北京京东尚科信息技术有限公司 | 定制安卓系统rom的方法、装置及终端设备 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009097610A1 (en) * | 2008-02-01 | 2009-08-06 | Northeastern University | A vmm-based intrusion detection system |
JP5125595B2 (ja) * | 2008-02-22 | 2013-01-23 | 横河電機株式会社 | 記録媒体、インストール方法及びコンピュータプログラム |
US9779234B2 (en) * | 2008-06-18 | 2017-10-03 | Symantec Corporation | Software reputation establishment and monitoring system and method |
US8484739B1 (en) * | 2008-12-15 | 2013-07-09 | Symantec Corporation | Techniques for securely performing reputation based analysis using virtualization |
FR2948789B1 (fr) * | 2009-07-28 | 2016-12-09 | Airbus | Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite |
US8850572B2 (en) * | 2010-01-15 | 2014-09-30 | Apple Inc. | Methods for handling a file associated with a program in a restricted program environment |
KR20110094764A (ko) * | 2010-02-17 | 2011-08-24 | 삼성전자주식회사 | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 |
US20110219373A1 (en) * | 2010-03-02 | 2011-09-08 | Electronics And Telecommunications Research Institute | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform |
US9129062B1 (en) * | 2010-05-20 | 2015-09-08 | Vmware, Inc. | Intercepting subroutine return in unmodified binaries |
US9148428B1 (en) * | 2011-05-25 | 2015-09-29 | Bromium, Inc. | Seamless management of untrusted data using virtual machines |
US10095530B1 (en) | 2010-05-28 | 2018-10-09 | Bromium, Inc. | Transferring control of potentially malicious bit sets to secure micro-virtual machine |
US9239909B2 (en) | 2012-01-25 | 2016-01-19 | Bromium, Inc. | Approaches for protecting sensitive data within a guest operating system |
US10310696B1 (en) | 2010-05-28 | 2019-06-04 | Bromium, Inc. | Supporting a consistent user interface within a virtualized environment |
US8972980B2 (en) | 2010-05-28 | 2015-03-03 | Bromium, Inc. | Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity |
US9558051B1 (en) | 2010-05-28 | 2017-01-31 | Bormium, Inc. | Inter-process communication router within a virtualized environment |
US9386021B1 (en) | 2011-05-25 | 2016-07-05 | Bromium, Inc. | Restricting network access to untrusted virtual machines |
US9104837B1 (en) | 2012-06-18 | 2015-08-11 | Bromium, Inc. | Exposing subset of host file systems to restricted virtual machines based on upon performing user-initiated actions against host files |
US9767274B2 (en) | 2011-11-22 | 2017-09-19 | Bromium, Inc. | Approaches for efficient physical to virtual disk conversion |
US9116733B2 (en) | 2010-05-28 | 2015-08-25 | Bromium, Inc. | Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity |
US8752047B2 (en) * | 2010-05-28 | 2014-06-10 | Bromium, Inc. | Automated management of virtual machines to process untrusted data based on client policy information |
US9135038B1 (en) | 2010-05-28 | 2015-09-15 | Bromium, Inc. | Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame |
US8966629B2 (en) | 2011-03-31 | 2015-02-24 | Mcafee, Inc. | System and method for below-operating system trapping of driver loading and unloading |
US8813227B2 (en) | 2011-03-29 | 2014-08-19 | Mcafee, Inc. | System and method for below-operating system regulation and control of self-modifying code |
US9032525B2 (en) | 2011-03-29 | 2015-05-12 | Mcafee, Inc. | System and method for below-operating system trapping of driver filter attachment |
US9087199B2 (en) | 2011-03-31 | 2015-07-21 | Mcafee, Inc. | System and method for providing a secured operating system execution environment |
US8863283B2 (en) | 2011-03-31 | 2014-10-14 | Mcafee, Inc. | System and method for securing access to system calls |
US8966624B2 (en) | 2011-03-31 | 2015-02-24 | Mcafee, Inc. | System and method for securing an input/output path of an application against malware with a below-operating system security agent |
US8959638B2 (en) | 2011-03-29 | 2015-02-17 | Mcafee, Inc. | System and method for below-operating system trapping and securing of interdriver communication |
US8925089B2 (en) | 2011-03-29 | 2014-12-30 | Mcafee, Inc. | System and method for below-operating system modification of malicious code on an electronic device |
US10546118B1 (en) | 2011-05-25 | 2020-01-28 | Hewlett-Packard Development Company, L.P. | Using a profile to provide selective access to resources in performing file operations |
US8839245B1 (en) | 2012-06-18 | 2014-09-16 | Bromium, Inc. | Transferring files using a virtualized application |
US9921860B1 (en) | 2011-05-25 | 2018-03-20 | Bromium, Inc. | Isolation of applications within a virtual machine |
US10846396B1 (en) | 2011-05-25 | 2020-11-24 | Hewlett-Packard Development Company, L.P. | Downloading data in a dedicated virtual machine |
US9245108B1 (en) | 2012-03-13 | 2016-01-26 | Bromium, Inc. | Dynamic adjustment of the file format to identify untrusted files |
JP5773066B2 (ja) * | 2012-03-19 | 2015-09-02 | 富士通株式会社 | プログラム、管理サーバおよびパッチスケジューリング方法 |
US9384026B1 (en) | 2012-06-18 | 2016-07-05 | Bromium, Inc. | Sharing and injecting cookies into virtual machines for retrieving requested web pages |
US9727534B1 (en) | 2012-06-18 | 2017-08-08 | Bromium, Inc. | Synchronizing cookie data using a virtualized browser |
US11023088B2 (en) | 2012-06-18 | 2021-06-01 | Hewlett-Packard Development Company, L.P. | Composing the display of a virtualized web browser |
US10095662B1 (en) | 2012-06-18 | 2018-10-09 | Bromium, Inc. | Synchronizing resources of a virtualized browser |
US9734131B1 (en) | 2012-06-18 | 2017-08-15 | Bromium, Inc. | Synchronizing history data across a virtualized web browser |
US9201850B1 (en) | 2012-06-18 | 2015-12-01 | Bromium, Inc. | Composing the display of a virtualized web browser |
US9195838B2 (en) * | 2012-07-02 | 2015-11-24 | At&T Intellectual Property I, L.P. | Method and apparatus for providing provably secure user input/output |
US9781118B2 (en) | 2013-03-14 | 2017-10-03 | Intel Corporation | Differentiated containerization and execution of web content based on trust level and other attributes |
US9292328B2 (en) | 2013-05-24 | 2016-03-22 | Bromium, Inc. | Management of supervisor mode execution protection (SMEP) by a hypervisor |
US10599565B2 (en) | 2013-12-24 | 2020-03-24 | Hewlett-Packard Development Company, L.P. | Hypervisor managing memory addressed above four gigabytes |
US10430614B2 (en) | 2014-01-31 | 2019-10-01 | Bromium, Inc. | Automatic initiation of execution analysis |
US9680873B1 (en) | 2014-06-30 | 2017-06-13 | Bromium, Inc. | Trusted network detection |
US10311122B1 (en) | 2014-08-22 | 2019-06-04 | Bromium, Inc. | On-demand unprotected mode access |
US9594591B2 (en) | 2014-09-26 | 2017-03-14 | International Business Machines Corporation | Dynamic relocation of applications in a cloud application service model |
US9928094B2 (en) | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
US9703961B2 (en) * | 2015-06-05 | 2017-07-11 | Accenture Global Services Limited | Process risk classification |
US9767285B2 (en) * | 2015-06-04 | 2017-09-19 | Accenture Global Services Limited | Process categorization using crowdsourcing |
US9798877B2 (en) * | 2015-06-04 | 2017-10-24 | Accenture Global Services Limited | Security risk-based resource allocation |
US20160363919A1 (en) * | 2015-06-09 | 2016-12-15 | Fisher Controls International Llc | Custom application environment in a process control device |
US9823997B2 (en) * | 2015-08-11 | 2017-11-21 | Bank Of America Corporation | Production resiliency testing system |
US10848502B2 (en) * | 2015-12-01 | 2020-11-24 | Webroot Inc. | Detection and prevention of hostile network traffic flow appropriation and validation of firmware updates |
US10223247B2 (en) * | 2016-07-05 | 2019-03-05 | Red Hat, Inc. | Generating pseudorandom test items for software testing of an application under test (AUT) |
CN109257399B (zh) * | 2017-07-13 | 2023-01-24 | 上海擎感智能科技有限公司 | 云平台应用程序管理方法及管理平台、存储介质 |
US11074323B2 (en) | 2017-12-07 | 2021-07-27 | Microsoft Technology Licensing, Llc | Method and system for persisting files |
US10885193B2 (en) | 2017-12-07 | 2021-01-05 | Microsoft Technology Licensing, Llc | Method and system for persisting untrusted files |
US20190347420A1 (en) * | 2018-05-11 | 2019-11-14 | Microsoft Technology Licensing, Llc | Method and system for installing and running untrusted applications |
JP2019212244A (ja) * | 2018-06-08 | 2019-12-12 | 富士通株式会社 | 通知制御プログラム、通知制御方法および情報処理装置 |
US20200364354A1 (en) * | 2019-05-17 | 2020-11-19 | Microsoft Technology Licensing, Llc | Mitigation of ransomware in integrated, isolated applications |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020094031A (ko) | 2001-03-09 | 2002-12-16 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 새로운 컴포넌트들을 검증하는 서버를 가진 시스템 |
JP2003256234A (ja) | 2002-03-05 | 2003-09-10 | Communication Research Laboratory | 抗脆弱性サーバ装置及びソフトウェア |
US7774620B1 (en) * | 2004-05-27 | 2010-08-10 | Microsoft Corporation | Executing applications at appropriate trust levels |
US8640194B2 (en) * | 2004-08-25 | 2014-01-28 | Nec Corporation | Information communication device and program execution environment control method |
KR20060050768A (ko) | 2004-10-01 | 2006-05-19 | 마이크로소프트 코포레이션 | 액세스 인가 api |
KR101093066B1 (ko) | 2005-02-21 | 2011-12-13 | 삼성전자주식회사 | 패킷 보안방법 및 그 장치 |
US7581209B2 (en) * | 2005-02-28 | 2009-08-25 | Microsoft Corporation | Method for determining code coverage |
US7827550B2 (en) | 2005-08-17 | 2010-11-02 | Intel Corporation | Method and system for measuring a program using a measurement agent |
US20070106986A1 (en) | 2005-10-25 | 2007-05-10 | Worley William S Jr | Secure virtual-machine monitor |
US8201244B2 (en) * | 2006-09-19 | 2012-06-12 | Microsoft Corporation | Automated malware signature generation |
US20080234998A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Coordinating instances of a thread or other service in emulation |
-
2007
- 2007-12-24 KR KR20070136612A patent/KR101489244B1/ko active IP Right Grant
-
2008
- 2008-05-28 US US12/127,901 patent/US8327438B2/en not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110050230A (ko) * | 2009-11-06 | 2011-05-13 | 삼성전자주식회사 | 가상화 시스템 및 그것의 명령어 실행 방법 |
US9886295B2 (en) | 2009-12-21 | 2018-02-06 | Samsung Electronics Co., Ltd. | Setting server operating system as main domain to provide integrated user interface for a plurality of client operating system set as sub-domains |
US9747443B2 (en) | 2011-03-28 | 2017-08-29 | Mcafee, Inc. | System and method for firmware based anti-malware security |
KR20140033349A (ko) * | 2011-03-28 | 2014-03-18 | 맥아피 인코퍼레이티드 | 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법 |
US9317690B2 (en) | 2011-03-28 | 2016-04-19 | Mcafee, Inc. | System and method for firmware based anti-malware security |
US9262246B2 (en) | 2011-03-31 | 2016-02-16 | Mcafee, Inc. | System and method for securing memory and storage of an electronic device with a below-operating system security agent |
US9530001B2 (en) | 2011-03-31 | 2016-12-27 | Mcafee, Inc. | System and method for below-operating system trapping and securing loading of code into memory |
US9213829B2 (en) | 2011-07-12 | 2015-12-15 | Hewlett-Packard Development Company, L.P. | Computing device including a port and a guest domain |
US9547765B2 (en) | 2011-07-12 | 2017-01-17 | Hewlett-Packard Development Company, L.P. | Validating a type of a peripheral device |
WO2013009302A1 (en) * | 2011-07-12 | 2013-01-17 | Hewlett-Packard Development Company , L.P. | Computing device including a port and a guest domain |
US9122780B2 (en) | 2012-06-20 | 2015-09-01 | Intel Corporation | Monitoring resource usage by a virtual machine |
WO2013191840A1 (en) * | 2012-06-20 | 2013-12-27 | Intel Corporation | Monitoring resource usage by a virtual machine |
KR20180029047A (ko) * | 2015-07-14 | 2018-03-19 | 비트데펜더 아이피알 매니지먼트 엘티디 | 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 |
CN108182070A (zh) * | 2016-12-08 | 2018-06-19 | 北京京东尚科信息技术有限公司 | 定制安卓系统rom的方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
US8327438B2 (en) | 2012-12-04 |
US20090165133A1 (en) | 2009-06-25 |
KR101489244B1 (ko) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101489244B1 (ko) | 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법 | |
US20210294900A1 (en) | Systems and Methods Involving Features of Hardware Virtualization Such as Separation Kernel Hypervisors, Hypervisors, Hypervisor Guest Context, Hypervisor Context, Rootkit Detection/Prevention, and/or Other Features | |
Christodorescu et al. | Cloud security is not (just) virtualization security: a short paper | |
US10051008B2 (en) | Systems and methods involving aspects of hardware virtualization such as hypervisor, detection and interception of code or instruction execution including API calls, and/or other features | |
US11645390B2 (en) | Cloud-based method to increase integrity of a next generation antivirus (NGAV) security solution in a virtualized computing environment | |
US9384349B2 (en) | Negative light-weight rules | |
US9530001B2 (en) | System and method for below-operating system trapping and securing loading of code into memory | |
US8549644B2 (en) | Systems and method for regulating software access to security-sensitive processor resources | |
US8549648B2 (en) | Systems and methods for identifying hidden processes | |
US9317690B2 (en) | System and method for firmware based anti-malware security | |
KR101689204B1 (ko) | 디바이스의 펌웨어 무결성 검증 | |
US8650642B2 (en) | System and method for below-operating system protection of an operating system kernel | |
US20120255018A1 (en) | System and method for securing memory and storage of an electronic device with a below-operating system security agent | |
US9195492B2 (en) | Secure system time reporting | |
US20120254993A1 (en) | System and method for virtual machine monitor based anti-malware security | |
US20120255031A1 (en) | System and method for securing memory using below-operating system trapping | |
US20120255014A1 (en) | System and method for below-operating system repair of related malware-infected threads and resources | |
US20120254994A1 (en) | System and method for microcode based anti-malware security | |
US20200267178A1 (en) | Credential spray attack detection | |
US20240028724A1 (en) | Control flow integrity monitoring for applications running on platforms | |
WO2022266590A1 (en) | Vulnerability analysis using continuous application attestation | |
Jung et al. | Trusted monitor: Tee-based system monitoring | |
KR20130101648A (ko) | 가상화를 위한 보안 제공 장치 및 방법 | |
US10025937B1 (en) | Practical and dynamic approach to enterprise hardening | |
Zhan et al. | Checking virtual machine kernel control-flow integrity using a page-level dynamic tracing approach |
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 | ||
FPAY | Annual fee payment |
Payment date: 20171228 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181227 Year of fee payment: 5 |