KR101152227B1 - 클라이언트 및 서버의 보안방법 - Google Patents

클라이언트 및 서버의 보안방법 Download PDF

Info

Publication number
KR101152227B1
KR101152227B1 KR1020090001739A KR20090001739A KR101152227B1 KR 101152227 B1 KR101152227 B1 KR 101152227B1 KR 1020090001739 A KR1020090001739 A KR 1020090001739A KR 20090001739 A KR20090001739 A KR 20090001739A KR 101152227 B1 KR101152227 B1 KR 101152227B1
Authority
KR
South Korea
Prior art keywords
operating system
virtual machine
image
client
application
Prior art date
Application number
KR1020090001739A
Other languages
English (en)
Other versions
KR20090018992A (ko
Inventor
이상규
Original Assignee
이상규
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이상규 filed Critical 이상규
Publication of KR20090018992A publication Critical patent/KR20090018992A/ko
Application granted granted Critical
Publication of KR101152227B1 publication Critical patent/KR101152227B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45541Bare-metal, i.e. hypervisor runs directly on hardware

Abstract

본 발명은 인터넷, 인트라넷, 엑스트라넷 등의 네트워크 환경에서 실행되는 클라이언트-서버 기반 서비스 시스템에서 서비스 사용자가 서비스 제공자의 서비스를 이용함에 있어서, 서비스 사용자가 서비스 제공자에게 서비스 이용을 요청하면, 서비스 제공자는 사용자 시스템에 보호공간을 설치하고 필요한 소프트웨어를 보호공간 내에서 실행함으로써, 서비스 제공자의 시스템과 서비스 사용자의 시스템을 안전하게 보호된다.
또한, 운영체제 레벨 가상화 기술을 이용한 이동형 가상머신 이미지를 생성하고 이용하는 방법을 제공한다. 이동형 가상머신 이미지는 PC의 하드웨어에 독립적이고, PC의 운영제체 환경을 대부분 이용하면서 운영체제에 결합 및 분리가 용이하여, 쉽고 빠른 이동성, 배포성, 공유성 및 초기화 능력을 제공한다.

Description

클라이언트용 컴퓨팅 환경을 제공하는 방법{METHOD FOR PROVIDING COMPUTING ENVIRONMENT FOR CLIENT}
본 발명은 인터넷, 인트라넷 혹은 엑스트라넷 환경을 포함하는 네트워크 환경에서 클라이언트/서버로 구성되어 운영되는 서비스 제공 시스템을 위한 컴퓨팅 환경을 클라이언트에 제공하는 방법 및 그 시스템을 외부의 해킹공격으로부터 보호할 수 있는 방법에 관한 것이다.
또한, 본 발명은 가상머신 기술에 관한 것으로 보다 구체적으로는 운영체제 레벨의 가상화 기술을 이용하여 개인 PC 환경의 이동성을 실현하는 기술에 관한 것이다.
클라이언트와 서버의 보안문제
일반적으로 네트워크 환경에서 실행되는 서비스 제공 시스템은 클라이언트를 구성하는 서비스 사용자(이하 사용자)와 서버를 구성하는 서비스 제공자(이하 제공자)로 이루어지고, 제공자는 서버에 서버 어플리케이션을 설치하고, 사용자는 제공자의 서비스를 이용하기 위해 제공자가 배포하는 응용프로그램인 클라이언트 어플리케이션을 자신의 시스템에 설치하여, 서버 어플리케이션과 클라이언트 어플리케 이션간의 상호작용에 의해 서비스의 제공이 이루어진다. 하지만 많은 경우 사용자는 제공자를 신뢰할 수 없으며, 역으로 제공자 또한 사용자를 신뢰할 수 없다. 이러한 신뢰성의 결여는 IT에 기반한 서비스 산업을 발전을 저해하고, 때로는 범죄의 수단으로 이용되기도 한다.
사용자가 제공자를 신뢰할 수 없는 이유는 제공자가 배포하는 응용프로그램이 스파이웨어나 애드웨어와 같은 악성 프로그램일 수 있고, 일부 구성 파일이 컴퓨터 바이러스에 감염되었을 수도 있기 때문이다. 이 경우 악성인 프로그램이나 바이러스에 감염된 파일을 설치하면, 사용자의 시스템 또한 악성 프로그램 혹은 바이러스에 감염된다.
역으로, 제공자가 사용자를 신뢰할 수 없는 이유는 사용자 시스템은 보통 보안 취약점을 가지고 있기 때문이다. 사용자 시스템의 취약점으로 인해 제공자의 시스템이 취약해질 수 있고, 때로는 사용자가 리버스엔지니어링 기술을 이용해 제공자가 배포한 응용 프로그램을 분석해 중요 로직을 해킹할 수도 있다. 인터넷 뱅킹 등의 금융거래 서비스는 해킹으로부터 내부로직을 보호해야 하며, 엑스트라넷을 통해 협력업체에 업무 서비스를 제공하는 기업의 경우 협력업체 시스템의 보안 취약점으로 인해 자사 서비스 시스템이 취약해지지 않도록 방어해야 한다.
이러한 클라이언트와 서버간의 상호 신뢰성을 구축하기 위한 다양한 방법이 제시되었다. 종래 네트워크 환경을 통한 서비스에서 시스템에 대한 해킹공격을 차단하기 위한 클라이언트 측 보안장치는 안티바이러스 제품, 패치관리시스템 등이 있으며, 서버 혹은 네트워크 측 보안장치는 네트워크 방화벽, 웹 방화벽, 취약점 스캐너, 소스코드 진단도구 등이 있다. 이하 각 기술의 내용과 한계를 살펴본다.
안티바이러스 제품은 알려진 악성코드의 시그너쳐 목록을 이용해 각 파일을 진단한 후 악성코드 감염 여부를 판단한다. 하지만, 악성코드가 널리 알려 퍼져 신고센터에 접수되기 전에는 시그너쳐 목록에 악성코드가 존재하지 않으므로 진단이 불가능한 한계가 있다.
패치관리시스템은 운영체제나 어플리케이션에 최신 보안패치를 적용해 PC를 안전한 상태로 유지한다. 하지만, 패치가 발표되지 않은 취약점에 대한 방어는 불가능하다.
네트워크 방화벽은 OSI (Open Systems Interconnection) 7계층 중 3계층인 네트워크 계층(network layer)이나 4계층인 전송계층(transport layer)에 존재하는 취약점에 대한 외부해커의 공격을 차단한다.
도 1은 네트워크 방화벽(150)의 기능을 개념적으로 도시한 것으로, 사용자는 네트워크 방화벽을 이용해 IP 주소 및 포트(port) 번호를 이용한 접근제어규칙(151)을 설정해 비인가된 공격자로부터의 네트워크 패킷을 차단한다.
예를 들어, FTP 서비스 인가자(100)가 FTP 서비스(160)에 접속하려하면 네트워크 방화벽(150)은 해당 접속을 허용하며, FTP 서비스 비인가자(110)가 FTP 서비스(160)에 접속하려하면 네트워크 방화벽(150)은 해당 접속을 차단한다. 그러나, 네트워크 방화벽을 이용하는 경우, IP 주소 및 포트를 기준으로 허가, 차단 여부를 결정하므로 공격자가 인가자의 머신을 해킹한 후 인가자의 머신을 경유해 공격하거나 인가자가 악의적인 마음을 가지고 공격을 시도한다면 이를 막을 방법이 없다.
한편, 웹 서비스(170)는 모든 사용자(120)에게 접근이 허가되어있으므로 네트워크 방화벽(150)은 웹 서비스(170)로 향하는 모든 패킷을 허용한다. 그러나, 웹 서비스(170)와 같이 외부에 공개된 서버는 웹 어플리케이션에 취약점이 있다면 누구든 해당 취약점을 공격할 수 있으므로 네트워크 방화벽(150)은 취약점에 대한 외부해커의 공격을 막을 수 없다. 즉, 네트워크 방화벽(150)은 허가할 서비스와 허가하지 않을 서비스를 제어할 수는 있지만, 허가된 서비스의 취약점에 대한 공격은 막을 수 없다.
이와 같은 문제를 해결하기 위해 어플리케이션 방화벽이 선보였다. 어플리케이션 방화벽은 OSI 7계층 중 7계층인 응용계층(application layer)에서 동작하므로, HTTP, FTP, SMTP 등 각종 프로토콜을 인식할 수 있으며 해당 어플리케이션에 존재하는 취약점에 대한 공격을 방어할 수 있다.
도 2는 어플리케이션 방화벽 중 대표적인 웹 어플리케이션 방화벽(220)에 관한 것이다. 웹 어플리케이션 방화벽(220)은 패킷을 필터링하는 시스템(222)을 구비하여, 수신되는 패킷을 미리 정의된 패턴(221)과 비교해 악성패킷(220)이면 차단하고 정상패킷(210)이면 웹서버(230)로 전송하는 패킷 필터링 방식으로 동작한다.
하지만, 웹 어플리케이션 방화벽(220)은 알려진 공격기법을 이용해 패턴(221)을 작성하므로, 공격자는 기존의 공격기법을 약간 변형함으로써 패턴필터시스템(222)을 쉽게 우회할 수 있고, 알려지지 않은 공격기법은 방어할 수 없으며, 입력되는 모든 패킷을 수십~수천 개의 미리 정의된 패턴(221)과 비교하는 작업을 수행해야하므로 웹 서비스 속도가 크게 느려지는 문제가 있었다. 또한, 정상패 킷(210)이 미리 정의된 패턴(221)과 우연히 일치하면 악성패킷(220)으로 오인되어 정상적인 사용자의 웹 서비스 이용이 차단되는 부작용도 있다.
또한, 웹 어플리케이션 방화벽(220)은 일반적인 공격패턴만을 감시할 수 있으므로 특정 웹 사이트에만 국한되는 취약점을 막기 힘들다. 예를 들면, 홈 쇼핑 관련 웹 사이트에서 물품결재금액을 10,000원에서 1,000원으로 수정하는 것과 같은 형태의 공격은 해당 사이트에만 의미 있는 공격이므로 웹 어플리케이션 방화벽이(220) 효과적으로 막을 수 없다.
웹 어플리케이션 방화벽(220)은 어플리케이션의 취약점은 그대로 둔 채, 해당 취약점에 대한 공격을 차단하는 방식이다. 이와는 달리 취약점 스캐너나 소스코드 점검도구는 취약점 자체를 제거하는 방식을 사용한다.
취약점 스캐너는 어플리케이션 서버 외부에서 취약점 존재여부 진단용 패킷을 전송하고 그 응답을 확인해 취약점 존재여부를 점검하는 도구이며, 소스코드 점검도구는 소스코드를 직접 살펴보고 취약점 존재여부를 판단하는 도구이다.
도 3은 취약점 스캐너 및 소스코드 점검도구를 사용하는 과정이다. 어플리케이션 개발을 시작(300)하면 일반적으로 설계 및 코딩단계(310)를 거치며 일정 부분 완료된 후 취약점 스캐너 및 소스코드 점검도구를 실행해 지금까지 작성한 코드에 취약점이 존재하는지 확인하는 취약점 점검단계(320)를 진행한다. 이때, 취약점이 발견되면 수정단계(330)를 거치며 이 과정을 취약점이 발견되지 않을 때까지 이를 반복하고, 개발을 완료(340)한다.
일반적으로 취약점 스캐너나 소스코드 점검도구는 보안 취약점이 존재함을 알려주는 역할만을 하며 보안 취약점을 제거하는 것은 개발자의 몫이다. 따라서 개발자는 보안취약점을 제거하기 위해 취약점과 관련해 고급해커와 동등한 수준의 전문지식이 있어야 하며, 취약점 제거에도 많은 비용과 시간이 필요하다. 또, 어플리케이션 방화벽과 마찬가지로 물품가격을 10,000원에서 1,000으로 수정하는 것과 같은 특정 사이트에 국한된 취약점은 취약점 스캐너나 소스코드 점검도구가 발견할 수 없는 단점도 존재한다.
이와 같은 이유로 종래 기술에 의하면 네트워크 기반 클라이언트/서버 시스템의 신뢰성 향상을 위한 근본적인 보안시스템을 구축하기 어려웠다. 이하, 상술하겠지만 본원은 살펴본 바와 같은 종래 보안시스템의 기술적 한계를 극복하는 새로운 방식을 기술한다.
한편, 클라이언트/서버 서비스 제공 시스템은 일반적으로 서비스 제공에 필요한 클라이언트 어플리케이션을 제공자가 사용자에게 배포하여 이를 이용하도록 유도한다. 그러나 클라이언트 어플리케이션의 배포가 서비스 제공에 필수불가결함에도 불구하고, 보안의 위한 대책이 미비하여, 현재의 불안전한 클라이언트 어플리케이션의 배포방식이 서비스 제공 시스템의 상호 신뢰성을 저해하는 또 하나의 중요한 요소가 되고 있다.
종래에 제공자가 서비스에 필요한 응용프로그램을 서비스 사용자에게 배포하는 대표적인 방식은 액티브X 컨트롤 방식, 프로그램 직접설치 방식, 스트리밍 방식이 있다. 이하 각 기술의 내용과 한계를 살펴본다.
액티브X 컨트롤 방식은 웹 서비스에서 많이 사용된다. 서비스 제공자는 서 비스에 필요한 소프트웨어를 액티브X 컨트롤 형태로 제작해 웹 페이지에 기록해 둔다. 사용자가 해당 웹 페이지를 방문하면, 사용자의 웹 브라우저가 액티브X 컨트롤을 PC에 설치할지 여부를 사용자에게 질의하고, 사용자가 동의하면 액티브X 컨트롤이 설치된다.
액티브X 컨트롤 방식은 프로그램을 편하게 설치할 수 있다는 장점이 있지만, 설치되는 액티브X 컨트롤이 애드웨어, 스파이웨어와 같은 악성코드인 경우가 있다. 이로 인해, 웹 서핑을 하다 보면 자신도 모르게 PC가 악성코드에 감염되는 문제가 있었다. 이를 해결하기 위해 신뢰성 있는 인증기관으로부터 인증서를 받았는지 여부를 이용해 컨트롤의 안전성을 판단할 수 있는 제도를 국가적으로 도입하기도 했다. 그러나 애드웨어 제작업체라 하더라도 일정 비용만 지불하면 인증서를 받을 수 있는 제도적 맹점은 언제나 존재하며, 웹 브라우저에서 전자서명 확인 옵션이 꺼져있는 경우 이런 제도는 무용지물이 된다. 또한, 정상적인 액티브X 컨트롤에 보안 취약점이 존재하는 경우 이런 취약점을 이용해 사용자의 PC를 해킹하는 것도 가능하다.
프로그램 직접설치 방식은 Setup.exe와 같은 설치프로그램을 사용자가 다운로드한 후 이를 실행해 소프트웨어를 설치하는 방식이다. 설치프로그램 방식은 근본적으로 액티브X 방식과 동일한 문제점을 갖는다.
액티브X 컨트롤 방식이나 설치프로그램 방식 모두 클라이언트 시스템에 직접 소프트웨어를 설치하는 형태이므로 버전충돌문제, 설치과정의 복잡함, 용량문제 등의 문제가 발생한다. 이를 해결하기 위해 스트리밍 형태의 소프트웨어 배포방식이 도입되었다.
버전충돌문제란 예를 들어 A, B 소프트웨어가 함께 사용하는 ab.dll 이란 공유라이브러리가 있을 때 소프트웨어가 사용하는 버전과 호환되지 않은 버전이 설치되어있거나, 다른 소프트웨어가 해당 파일을 업데이트 한 경우 정상적으로 실행되지 않은 경우를 말한다.
스트리밍 방식은 클라이언트/서버 환경에서 소프트웨어를 클라이언트 운영체제에 직접 설치하는 것이 아니라 소프트웨어가 설치된 스트리밍 이미지로 대신하는 형태이다. 프로세스가 ab.dll을 요청하면 스트리밍 클라이언트는 스트리밍 이미지에서 ab.dll을 찾은 후 이 파일을 돌려줌으로써 운영체제에 ab.dll이 존재하지 않지만 존재하는 것처럼 에뮬레이션한다. 이 경우 파일이 운영체제에 직접 설치되지 않으므로 버전충돌문제나, 설치과정의 복잡함 등의 문제를 해결할 수 있고, 전체 프로그램을 설치하는 것이 아니라 현재 필요한 파일이나 레지스트리만 스트리밍 서버에서 가져오면 되므로 용량문제도 해결할 수 있다.
그러나, 스트리밍 방식은 응용프로그램 레벨에서 운영체제에 존재하지 않는 파일, 레지스트리 등을 마치 존재하는 것처럼 에뮬레이션할 뿐, 운영체제 레벨의 가상화를 제공하지는 않으므로 응용프로그램 실행은 운영체제에서 직접 이루어지고 시스템 프로세스, 서비스 프로세스, 운영체제 커널 역시 스트리밍 서버에서 실행된 프로세스와 일반 프로세스가 공유한다. 따라서, 스트리밍 방식을 이용하면 응용프로그램 설치로 인한 운영체제 변경은 막을 수 있지만 응용프로그램 실행 과정에서 발생하는 문제로부터 서비스 제공자와 서비스 사용자 시스템을 보안적인 측면에서 효율적으로 보호할 수 없다.
결국, 클라이언트/서버 기반 서비스 제공 시스템에서 제공자가 사용자에게 필요한 애플리케이션을 배포하기 위한 종래의 방법은 상호 신뢰성을 구축하지 못하는 다양한 문제점을 가지고 있었다. 이하, 상술하겠지만 본원은 살펴본 바와 같은 종래의 클라이언트 애플리케이션 배포 방식의 기술적 한계를 극복하는 새로운 방식을 제안한다.
PC 환경의 이동 문제
최근 퍼스널 컴퓨터(PC)에 관한 기술은 급속도로 발전하여 현대인들은 하루의 대부분을 PC와 함께 하고 있다. PC의 문서처리기능과 스프레드 시트 등의 각종 응용 제품들은 대부분의 직장인들에게 적어도 하나의 PC를 사용하도록 하였고, 멀티미디어 기술의 발전은 PC에 기반한 엔터테인먼트 사업을 발전시켰다. 특히 인터넷의 보급은 인간에게 있어서 PC에 대한 의존성 증대에 결정적인 역할을 하였다. 현대인들은 PC없는 생활을 상상할 수 없게 되었고 이러한 현상은 갈수록 심화될 것이다.
퍼스널 컴퓨팅 환경은 사용자로 하여금 복잡한 컴퓨터 지식에 관한 요구를 줄여나가는 방향으로 발전하였다. 80년대의 PC는 사용자가 직접 컴퓨터 운영체제가 마련한 명령어를 직접 입력하면서 컴퓨팅 작업을 처리할 것을 요구하였으므로, 명령어 입력에 숙달하지 않은 사용자는 컴퓨터를 전혀 이용할 수 없었다. 또한 하드웨어에 관한 정보를 일일이 입력해 주어야 컴퓨터가 각각의 하드웨어를 인식하고 동작시켰다.
90년대 들어 GUI(Graphic User Interface) 기술이 발달하여 컴퓨터에 명령을 전달하는 방식이 보다 직관적이고 시각적인 방식으로 변화하였고, 운영체제가 하드웨어를 스스로 인식하는 능력이 증가하여 사용자로 하여금 컴퓨터에 관한 지식을 보다 덜 요구하게 되었다.
그러나 PC는 여전히 운영체제에 대한 지식, 프로그램 설치에 관한 지식, 프로그램 설정에 관한 지식 등 컴퓨터에 문외한인 일반인이 자유롭게 접근하기엔 다소 복잡한 지식을 요구하고 있으며, PC는 아직 일부 전문가들만이 자유자재로 이용할 수 있다. GUI를 비롯한 다양한 기술이 보급되었으나 오늘날에 와서도 프로그램의 설치와 설정은 일반인이 쉽게 접근하기 어렵고, 각종 바이러스나 악성 프로그램은 일반인의 컴퓨터 사용을 더욱 힘들게 하고 있다.
PC가 텔레비전이나 냉장고와 같은 대중적인 생활가전제품이 되려면 컴퓨터 사용이 현재보다 쉬워져야 한다. 텔레비전의 경우 사용자가 리모콘을 이용해 채널변경만 할 수 있으면 원하는 채널을 쉽고 빠르게 시청할 수 있다. 컴퓨팅 환경도 이와 같이 쉽게 변해야한다.
현재의 PC 환경은 몇가지의 새로운 욕구에 직면하고 있다. 그것은 PC 환경의 간단하고 신속한 이동성, 소프트웨어 배포의 간편화, 물리적으로 한대의 PC에 대한 각 사용자 환경의 독립성을 보장하는 새로운 공유 방식, 언제든 자신이 원하는 초기 상태로 PC를 재설정할 수 있는 PC환경 설정방식 등이다.
먼저, PC 환경의 이동성을 살펴보면, PC는 다른 가전제품들과 달리 개인마다 사용하는 컴퓨팅 환경이 다르다. PC의 하드웨어 사양도 천차만별이지만, 동일한 하 드웨어와 동일한 운영체제를 사용하더라도 운영제체에 대한 각종 데스크탑 환경의 상태가 다르고, 사용하고 있는 응용 소프트웨어도 각각 다르다. 이점은 다음과 같은 문제를 야기시킨다.
예를 들어, 가정과 회사에서 PC를 사용하는 사람은 가정과 회사의 PC 환경이 각각 다르다. 따라서 회사의 일에 필요한 작업을 가정에서 하려면 가정의 PC환경을 회사의 PC환경처럼 만들어 주어야 한다. 필요한 소프트웨어도 설치해야 하고, 각종 데스크탑의 설정도 본인이 일하기에 편리한 설정상태로 바꾸어야 한다. 또한 다른 장소로 출장을 가서 컴퓨터 작업을 해야하는 경우, 출장소의 PC환경을 조정해 주어야 한다. 이러한 번거로움을 해소하고자 노트북이 이용되고 있다. 그러나 노트북은 가격이 상대적으로 고가이고, 무거운 본체를 들고 다니는 것 또한 큰 부담이 되고 있다.
두번째로, 소프트웨어의 배포를 살펴보면, 새로운 소프트웨어를 구입한 사용자는 온라인 또는 기록매체를 통해 구매한 소프트웨어를 PC에 설치하는 과정을 거쳐야 한다. 설치과정은 비교적 간단하지만 이에 어려움을 겪는 사람이 적지 않다. 또한, 한번 설치한 소프트웨어에 외부적 또는 내부적 요인으로 이상이 발생한 경우 재설치를 해야하는 불편함이 존재한다.
사무환경에 있어서는 일반적으로 PC 환경이 그룹화되어 설정된다. 필요로 하는 소프트웨어가 비슷한 그룹이 만들어질 수 있는데 그 기준은 같은 부서일 수도 있고, 같은 직급일 수도 있다. 하나의 그룹에 대한 필요한 소프트웨어를 전부 포함하는 하나의 PC 환경을 신속하게 설정해주는 것은 PC 관리자의 몫이다. 그러나, 각 직원에 대한 하나하나의 요구를 처리하는 것은 시간이 많이 드는 비효율적인 작업이다. 각 그룹별로 PC 환경이 미리 저장되어 있고, 이를 빠르게 제공할 수 있다면, 부서배치가 바뀔 때마다, 신입사원이 입사할 때마다, 업무에 필요한 소프트웨어 목록이 바뀔 때마다 신속하게 업무환경을 마련할 수 있을 것이다. 궁극적으로는 PC 관리자가 필요없을 만큼 누구든지 쉽고 간편하게 PC 업무환경을 마련할 수 있어야 한다.
세번째로, PC의 공유를 살펴보면, 두 사람이 한 대의 PC를 공유하는 경우, 두 사람은 각자 요구하는 PC 환경이 다르다. 한 사람에게 최적화된 PC 환경은 다른 사람에게 불편할 수 있고, 때로는 한 사람이 PC를 바이러스에 노출시켜 다른 사람에게까지 피해를 줄 수 있다. 이 경우 PC를 각자가 하나씩 보유하는 수밖에 없다.
네번째로, PC 환경의 초기화 문제를 살펴보면, 현대의 PC는 항상 바이러스나 악성 코드 등에 노출되어 있어서 시간이 흐름에 따라 PC가 마비될 수 있고, 때로는 본인의 실수로 PC가 정상적으로 작동하지 못하는 경우도 발생한다. 이 경우 원인을 진단하고 치료할 수 있는 전문적인 지식을 갖춘 전문가가 반드시 필요하며, 그렇지 않으면 대부분 하드디스크를 포멧하고 필요한 소프트웨어를 재설치하고, 데스크탑 환경을 재설정한다. 이는 PC 사용의 크나큰 걸림돌이다. PC가 일반 가전과 같이 쉽고 편리하게 이용되려면 문제가 발생하더라도 전문가의 도움없이 간단한 몇 번의 마우스 클릭동작으로 언제든지 사용자가 설정한 초기 PC환경의 깨끗한 상태로 복구될 수 있어야 한다.
PC에 대한 인간의 의존성이 심화될수록 시간과 장소에 대한 제약없이 항상 자신만의 PC 환경에서 컴퓨터를 이용하고자 하는 요구는 증대될 것이다. 그러나 현재의 기술로서의 해결책은 결국 노트북과 같은 추가적인 하드웨어를 이용하는 것으로 귀착된다.
가상머신
한편, 최근 가상머신에 대한 연구가 활발히 진행되고 있다. 가상머신은 1960년대에 한 대의 메인프레임을 여러 대의 머신으로 가상적으로 나눠 쓰기 위해 도입된 개념이다. 하지만, 마이크로컴퓨터나 PC 가격이 하락함에 따라, 한 대의 메인프레임을 나눠 쓰는 것보다는 여러 대의 PC를 도입하는 것이 비용 측면에서 유리해졌고, 그 결과 1980년대에 들어서 가상머신 기술은 거의 사용되지 않게 되었다. 하지만, 1990년대 들면서 다수의 소용량 컴퓨터를 사용하는 것이 관리 및 유지보수 비용을 오히려 증가시켰으며, 컴퓨팅 자원의 효율적 사용도 문제가 있었기 때문에(한 예로 A 서버는 CPU 사용률이 10%인데 비해 B 서버는 CPU 사용률이 99%인 경우가 있음) 다시 가상화 기술에 관심을 기울이기 시작하였다. 그러나 대용량 서버의 효율적인 자원관리를 위한 가상화기술에 관한 것이 주를 이루고, 클라이언트 시스템을 위한 가상화기술에 대하여는 아직 연구가 미비하다.
미리 언급하지만, 본 발명은 클라이언트 어플리케이션의 설치 및 실행을 위해 클라이언트 시스템에서 가상머신을 동작시킨다.
가상머신을 구현하는 방식은 다양하다. 지금까지 알려진 가상화 구현 방식을 열거해 보면, 하드웨어 레벨의 가상화, 라이브러리 레벨 가상화, 어플리케이션 레벨 가상화, 운영체제 레벨 가상화 등이 있다.
명령어 셋 레벨의 가상화 방식은 중앙처리장치, 메모리, 칩셋, 버스 및 각종 주변장치 (네트워크 카드, 하드디스크, 플로피디스크, 시디롬)를 소프트웨어적으로 에뮬레이션해 가상머신을 생성하는 것이다. 명령어 셋 레벨의 가상화 방식은 가상머신에서 발생하는 모든 명령어를 소프트웨어적으로 처리해야하므로 처리속도의 저하를 비롯하여 성능상의 문제가 많았다.
반가상화 방식은 명령어셋 레벨 가상화방식과는 달리 명령어를 에뮬레이션하는 것이 아니라 운영체제의 소스코드나 바이너리를 수정해 하나의 하드웨어에서 여러 개의 운영체제가 실행될 수 있도록 하는 것이다. 최근에는 운영체제를 수정하지 않아도 하나의 하드웨어에 여려 개의 운영체제를 실행할 수 있게 해주는 형태의 CPU도 개발되었다. 반가상화 방식은 명령어셋이 소프트웨어 적으로 재해석되는 것이 아니므로 처리속도가 빠르다.
하드웨어 레벨 가상화는 CPU, 메모리, 하드디스크, BIOS 등을 소프트웨어적으로 에뮬레이션(full virtualization)하는 방식과 하드웨어 가상화를 지원하는 디바이스(CPU)를 이용한 반가상화(paravirtualization) 방식이 있다.
하드웨어 레벨 가상화는 표준 하드웨어를 제공하게 되고, 생성된 가상머신 이미지는 하나의 PC환경 그 자체이므로 이를 복사하면 설치된 OS까지 함께 복사되므로 독립성 및 이동성이 확실히 보장된다.
하지만 하드웨어 성능은 하향평준화 된다. 예를 들어, 실재 PC에 좋은 3D 그래픽 카드가 장착되어 있어도 가상머신이 구형 2D 그래픽카드를 에뮬레이션하여 가상 하드웨어를 제공하였다면 결국 구형 2D 그래픽카드로 동작한다. 결국 아직 에뮬 레이션되지 않은 디바이스(IEEE1394 등)는 사용이 불가능하다. 그러나 현실적으로 현재 출시된 모든 하드웨어 장치를 에뮬레이션하는 것은 불가능하다.
또한. 하드웨어 레벨로 가상화된 하나의 가상머신은 하나의 운영체제 자원을 모두 사용하므로, 복수의 가상머신을 동시에 실행시키기 힘들다. 예를 들면 윈도우 Vista의 경우 약 1GB 램이 필요하므로 3개의 가상머신을 정상적으로 실행하려면 실재머신을 포함하여 4G의 램이 필요하다.
또한 하나의 이미지 크기가 상대적으로 크다. 모든 하드웨어 요소를 전부 에뮬레이션해야 하므로, 많은 용량을 차지한다. 현재까지 출시된 하드웨어 레벨 가상화를 이용한 가상머신의 이미지는 기가 단위의 용량을 가진다. 또한, 메모장과 같은 소규모의 어플리케이션을 배포할 때도 수백MB~수십GB의 운영체제 이미지가 포함되어야 하므로 매우 비효율적이다.
또한. 가상머신에 새로운 운영체제를 설치하는 것이므로 운영체제 라이센스가 추가로 필요하다. 이는 사용자로 하여금 운영체제를 하나 더 구입할 것을 요구한다.
또한, 실재머신에 설치된 각종 어플리케이션과 설정된 운영체제 환경을 가상머신에서 같이 사용할 수 없다. 실재머신과 가상머신은 완전히 독립적이기 때문이다. P2V라는 제품을 이용해 복제해서 사용할 수는 있으나 같이 사용하는 것은 불가능하다.
결국 하드웨어 레벨 가상화는 서버 가상화로는 적합하나 데스크탑 가상화의 상용화 가능성은 떨어진다. 그러나, 각 가상머신 별로 완전히 독립적인 운영체제를 설치할 수 있으므로 VPS (Virtual Private Server), 서버 통합 등의 서버 가상화에 적합한 방식이며, 소프트웨어 개발 및 테스트 등의 분야에 활용되고 있다.
라이브러리 레벨 가상화 방식은 운영체제 내에서 라이브러리를 가상화하는 방식이다. 구체적으로는 API(Application Program Interface)를 가상화하는 방식이다. 예를 들면, WINE과 같이 Win32 API를 UNIX/X 시스템에서 구현해 유닉스에서 윈도우 어플리케이션이 실행되게 하거나 반대로 윈도우에서 POSIX, OS2 서브시스템을 제공하는 것 등이 있다.
어플리케이션 레벨 가상화 방식은 Sunmicro Systems사에 의해 개발된 Java Virtual Machine과 같이, 어플리케이션을 바이트코드 형태로 작성해 하나의 어플리케이션이 다양한 이기종의 하드웨어 및 소프트웨어 환경에서 실행될 수 있도록 하는 것이다.
초기 어플리케이션 레벨 가상화 제품은 소프트웨어 충돌방지를 목적으로 개발되었다. 윈도우 환경을 예로 들면 프로그램은 실행파일(.exe 등)과 공유라이브러리(.dll 등)로 구성된다. 이때 공유라이브러리는 다양한 회사에서 제작한 다양한 소프트웨어에서 공유되는 경우가 많다. 예를 들면 c:\windows\system32\msvcrt.dll 이란 공유라이브러리는 A라는 회사에서 제작한 A' 프로그램에서 사용되고 B라는 회사에서 제작한 B' 프로그램에서 공유되어 사용된다. 그런데, msvcrt.dll은 동일 파일명에 다양한 버전이 존재할 수 있다. 만약 A' 프로그램이 2.0.0.0 버전의 msvcrt.dll을 c:\windows\syste32 디렉터리에 설치해 사용하던 중 B' 프로그램이 설치되면서 이를 1.0.0.0 버전으로 덮어쓰면 A' 프로그램이 정상동작하지 않을 수 있다.
어플리케이션 레벨 가상화를 이용하면 각 어플리케이션 별로 고유한 파일시스템 저장 공간이 할당되므로 동일 파일명의 공유라이브러리가 어플리케이션별 저장공간에 독립적으로 저장되므로 이와 같은 충돌문제를 회피할 수 있다.
이후 어플리케이션 레벨 가상화는 어플케이션 스트리밍 기술로 발전되었다. 어플리케이션 실행에 필요한 실행파일, 공유라이브러리, 레지스트리 등의 데이터(이하 어플리케이션 데이터)를 사용자 PC가 아닌 서버에 저장해두고 사용자가 A 어플리케이션을 실행했을 때 필요한 데이터를 서버에서 동적으로 받아오도록 구현하면, 사용자는 A라는 어플리케이션을 PC에 설치하지 않아도 실행하고 사용할 수 있게된다.
현재 어플리케이션 레벨 가상화 기술은 어플리케이션 데이터를 USB 드라이브에 저장해 USB 드라이브를 PC에 연결하면 해당 어플리케이션을 설치없이 바로 사용할 수 있는 형태로 발전하고 있다. 이것은 하나의 어플리케이션을 임의의 PC에서 실행가능하도록 함으로써 PC 환경의 이동성을 제한적으로 제공한다.
그러나, 어플리케이션 레벨 가상화는 파일, 레지스트리 데이터만 별도로 저장하므로 설치단계에서의 충돌 문제는 해결할 수 있지만, 실행단계에서의 충돌문제는 해결할 수 없다. 예를 들면 A라는 안티바이러스 제품과 B라는 안티바이러스 제품을 함께 설치해 사용하는 경우 서로가 서로를 감시하다 오류를 발생시키며 비정상 종료하는 경우가 많다. 이와 같은 실행단계에서의 충돌은 어플리케이션 레벨 가상화로 해결할 수 없다.
또한, 어플리케이션 레벨 가상화로 가상화할 수 없는 어플리케이션 혹은 커스터마이징이 필요한 어플리케이션이 다수 존재한다. 윈도우 서비스나 커널모듈을 사용하는 어플리케이션, 운영체제의 특정 구성요소에 의존하는 어플리케이션 등이 그 예이다. 이러한 이러한 어플리케이션 의존성은 어플리케이션 지원 목록을 필연적으로 요구한다. 결과적으로 어플리케이션 레벨 가상화는 전체 컴퓨팅환경을 제공하는 것은 아니고 특정 어플리게이션만 가상적으로 사용할 수 있게 해주는데 그친다.
마지막으로, 운영체제 레벨 가상화 방식은 운영체제의 각 구성요소 (프로세스, 파일시스템, 네트워크 자원, 시스템 콜 인터페이스, 네임스페이스 등)를 가상화하는 방식이다. 종래의 운영체제 레벨 가상화 방식은 주로 VPS (Virtual Private Server)와 같은 서버 가상화를 목적으로 개발되었다.
전가상화, 반가상화 방식을 이용해서 VPS를 구현하는 경우, 한 대의 가상머신이 필요로 하는 메모리, 하드디스크 자원은 실제머신과 동일하므로 한 대의 물리적 머신에 다수의 가상머신을 생성하기는 힘들었다. 하지만, 운영체제 레벨의 가상화를 이용하면 하나의 운영체제로 모든 가상서버를 구동할 수 있으므로, 개별 가상머신의 운영체제 구동에 필요한 자원이 요구되지 않으며, 전가상화, 반가상화 방식에 비해 적은 리소스로 다수의 가상머신을 구동할 수 있었다. 혹은 소프트웨어 개발 및 테스트 등의 목적으로 다수의 운영체제 환경이 필요한 사용자에게 독립적인 운영체제 공간을 효율적으로 제공하기 위한 방법으로도 사용되어 왔다.
현재 가상화 기술은 서버통합, 소프트웨어 개발 및 테스트, 호스팅 분야에서 많이 사용되고 있으며, 보안 분야에 있어서는 신뢰되지 않는 프로그램을 가상머신 내에서 실행해 호스트 OS를 보호하거나 악성코드가 숨겨져 있는지 여부를 테스트 하는 등 주로 가상머신 안에서 신뢰되지 않는 어플리케이션을 실행하는 방식으로 연구가 진행되어왔다. 하지만, 클라이언트/서버 기반 서비스 제공 시스템을 위한 기법에 있어서 가상머신을 이용한 클라이언트 어플리케이션과 서버 어플리케이션 보안기술에 관한 연구는 아직 진행되고 있지 않다. 또한, 본원이 추구하는 이동형 가상머신 이미지에 관한 연구는 아직 진행되고 있지 않다. 또한, 종래의 어떠한 가상화 방식도 이하 설명되겠지만 클라이언트/서버 기반 서비스 제공 시스템에 적합하지 않다.
본 발명은 위와 같은 종래의 문제점을 해결하여 서버 또는 클라이언트에게 안전한 컴퓨팅 환경을 제공하는 시스템 및 방법에 관한 것이다.
본 발명의 제1목적은 서비스 사용자의 시스템을 안전하게 보호하는 것이다. 구체적으로 제공자가 배포한 클라이언트 어플리케이션은 보호공간 내부에서만 설치되고 실행되므로 배포된 클라이언트 어플리케이션에 악성코드가 존재하여도 보호공간 외부의 시스템이나 다른 보호 공간으로는 감염되지 않는다. 따라서 사용자는 안심하고 제공자에게 서비스를 요청할 수 있고, 사용자의 시스템은 보호된다.
본 발명의 제2목적은 서비스 제공자의 시스템을 안전하게 보호하는 것이다. 구체적으로 사용자의 서비스 요청이 있으면 제공자는 사용자의 시스템에 보호공간을 강제로 또한 자동적으로 생성하고, 그 보호공간 내부에서만 응용프로그램을 설치하고 실행됨과 아울러, 서버로 전송되는 패킷들은 사용자 시스템 내의 보호공간 외부에 존재하는 다양한 위협요소로부터 격리된다. 바람직하게는 사용자가 클라이언트 어플리케이션을 조작하지 못하도록 클라이언트 개체를 검증한다. 바람직하게는 네트워크 상에서의 해커의 인터셉트 공격에 대비하여 패킷등의 전송 데이터에 대한 무결성의 검증을 추가로 실시한다. 이로써 제공자의 시스템은 해킹으로부터 안전하게 보호된다.
본 발명의 제3목적은 제공자의 시스템과 사용자의 시스템을 동시에 안전하게 보호하는 것이다. 종래의 클라이언트 보안 제품은 안티바이러스(Anti-Virus), 안 티키로거(Anti-Key-logger), PC 방화벽(PC fire wall) 등 클라이언트 시스템이 해킹당하거나 악성코드에 감염되는 것을 방지하고 클라이언트에 저장된 중요한 정보가 유출되는 것을 방지한다. 종래의 서버 보안 제품은 네트워크 방화벽, 어플리케이션 방화벽, 취약점 스캐너 및 소스코드 점검도구 등 서버로 전송되는 패킷을 네트워크 레벨에서 차단하거나 서버 어플리케이션에 취약점이 존재하는지 여부를 확인하는 방식이다.
종래의 보안제품은 클라이언트 보안제품은 클라이언트 시스템만을 보호하고, 서버 보안제품은 서버 시스템만을 보호하지만, 본 발명은 보호공간과 클라이언트 개체 검증과 무결성 검증의 상호 보완을 통해 클라이언트 시스템과 서버 시스템을 동시에 보호할 수 있으며, 알려지지 않은 형태의 공격 및 제로데이 공격(Zero Day Attack)으로부터도 클라이언트 및 서버 시스템을 효율적으로 보호한다.
본 발명의 제4목적은 사용자의 시스템에 보호공간을 생성하는 방법 및 제공자가 클라이언트 어플리케이션을 배포하는 방법에 있어서, 가상화 기술을 이용하는 것이다. 서비스 이용에 필요한 하나 이상의 응용 프로그램을 사전설치(pre-install)한 가상머신 이미지를 배포하면, 보호공간의 생성과 프로그램의 배포를 동시에 안전하고 편리하게 달성할 수 있다.
본 발명의 제5목적은 본 발명은 PC 환경의 간단하고 신속한 이동 방식, 소프트웨어의 새로운 배포 방식, 사용자의 독립성이 보장된 PC의 새로운 공유 방식, 쉽고 간편한 컴퓨팅 환경의 초기화 방식을 실현하기 위한 새로운 가상화 기법을 제공하는 것이다. 이를 통해 PC 사용자로 하여금 운영체제에 대한 지식, 프로그램 설 치에 관한 지식, 프로그램 설정에 관한 지식을 요구하지 않고, 일반 가전제품 정도의 수준으로 쉽고 자유롭게 PC를 사용할 수 있도록 컴퓨텅 환경을 제공하고자 하는 것이다.
본 발명은 이를 해결하기 위해, PC의 하드웨어에 독립적이고, PC의 운영체제 환경을 대부분 이용하면서 운영체제에 결합 및 분리가 용이하여, 쉽고 빠른 이동성, 배포성, 공유성 및 초기화 능력을 제공하는 이동형 가상머신 이미지를 제공한다. 본 발명에 있어서 '이동형'이란 용어는 상기 특징을 가지는 것을 의미한다.
사용자는 종래의 번거로운 프로그램의 구입, 설치, 설정등의 과정을 모두 생략하고, 몇 번의 클릭동작만으로 자신이 원하는 프로그램이 모두 설치된 컴퓨팅 환경을 제공받아야 한다. 서비스 이용에 필요한 컴퓨팅 환경을 사용자가 구성하는 것이 아니라 서비스 제공자가 구성할 수 있도록 하며, 사용자는 제공된 컴퓨팅 환경을 그대로 사용하면 되므로 퍼스널컴퓨터나 보안에 대한 전문가적 지식 없이도 텔레비전 채널 변경하듯이 쉽고 안전하게 제공자의 서비스를 이용할 수 있다. 구체적으로 사용자는 소프트웨어를 하나씩 설치하는 것이 아니라 서비스를 위한 모든 소프트웨어 및 환경이 갖춰진 가상머신 이미지를 로드하는 방식으로 쉽고 빠르게 서비스를 이용할 수 있다.
운영체제 레벨 가상화 방식은 현재까지 서버를 가상화하는 제품 위주로 활용되고 있다. 서버 컴퓨터의 운영체제 커널을 파티셔닝하고 각 파티션 별로 독립적인 운영체제 환경을 제공한다.
종래의 서버 호스팅의 경우 사용자에게 물리적 서버를 1대씩 제공하고 있었 다. 사용자별 완전한 운영체제 공간이 제공되지만 실재 서버를 구입해야 하는 관계로 초기 비용이 많이 들고, 유지비용도 많이 필요하다.
운영체제 레벨 가상화는 하나의 운영체제에 독립된 복수의 가상 운영체제를 생성할 수 있다. 사용자는 운영체제의 필요한 환경을 독립적으로 사용할 수 있고, 물리적 서버를 실재 구입하지 않아도 되므로 비용이 절감될 수 있다.
또한, 하드웨어 레벨 가상화 방식을 이용하는 경우, 한 대의 가상머신이 필요로 하는 메모리, 하드디스크 자원은 실재머신과 동일하므로 한 대의 물리적 머신에 다수의 가상머신을 생성하기는 힘들다. 하지만, 운영체제 레벨 가상화를 이용하면 하나의 운영체제로 모든 가상서버를 구동할 수 있으므로, 개별 가상머신의 운영체제 구동에 필요한 자원이 요구되지 않으며, 하드웨어 레벨 가상화 방식에 비해 적은 리소스로 다수의 가상머신을 구동할 수 있다.
운영체제 레벨의 가상화가 상기와 같은 이점을 가지고 있음에도 불구하고 PC 환경에 적극 활용되지 못하는 것은 가상머신 이미지의 이동성이 보장되지 않았기 때문이다.
하드웨어 레벨 가상화의 경우 운영체제를 포함한 하나의 독립된 시스템을 구성하는 가상머신 이미지를 생성하므로 이동성이 보장된다. 그러나, 운영체제 레벨 가상화의 경우 운영체제를 분리하여 가상적으로 이용하는 데 그치고, 실재 운영체제에서 자유롭게 분리하여 다른 운영체제에 결합되는 하나의 완전한 가상머신 이미지를 생성하는 것이 아니므로 이동성을 실현할 수가 없었다.
그 이유는 운영체제 환경에 종속적인 기능, 사용자의 실재 운영체제와 공유 해야할 자원 등이 존재하기 때문이다. 운영체제는 시스템 설정, 드라이브 명, 홈 디렉터리 경로, 파일 권한 및 경로, 레지스트리 권한 및 경로 등이 사용자별로 다르며, 생성된 가상머신 이미지가 이런 다양한 환경에서 정상적으로 실행되지 않기 때문이다.
운영체제 레벨 가상화를 이용하면서 완전한 이동성이 보장되는 가상머신 이미지를 생성하고 이용할 수 있다면, 운영체제 레벨 가상화의 장점을 그대로 이용하게 되므로 PC 환경의 신속하고 편리한 이동성이 가장 효율적으로 구현된다. 본 발명은 운영체제 레벨 가상화를 이용하여 이동형 가상머신 이미지를 생성하는 방법을 제공한다.
본 발명의 한 측면에 따르면 컴퓨터 네트워크상에 접속된 서버에 의해 실행되고, 상기 서버가 독립적이고 보호된 컴퓨팅 환경을 하나 이상의 클라이언트에게 제공하는 방법에 있어서, 상기 클라이언트로의 상기 컴퓨팅 환경의 생성의 요청을 수신하는 단계, 및 상기 요청에 응답하여, 상기 컴퓨터 네트워크를 통하여 상기 클라이언트에 보호공간을 생성하여 상기 컴퓨팅 환경을 제공하는 단계를 포함하고, 상기 보호공간은 보호공간의 외부와 독립적인 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 방법이 제공된다.
본 발명의 다른 한 측면에 따르면, 컴퓨터 네트워크를 통하여 하나 이상의 클라이언트와 통신가능하고, 독립적이고 보호된 컴퓨팅 환경을 상기 하나 이상의 클라이언트에게 제공하는 서버에 있어서, 상기 클라이언트로의 상기 컴퓨팅 환경의 생성의 요청을 수신하는 수단, 및 상기 요청에 응답하여, 상기 컴퓨터 네트워크를 통하여 상기 클라이언트에 보호공간을 생성하여 상기 컴퓨팅 환경을 제공하는 수단을 포함하고, 상기 보호공간은 보호공간의 외부와 독립적인 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 서버가 제공된다.
본원 발명의 목적 중 하나인 서비스 사용자의 시스템 보호는 상기 기술된 보호공간의 설치를 통해 실현된다. 서비스 제공자의 소프트웨어가 악성코드이거나 악성코드에 감염된 경우, 또는 알려지지 않은 취약점 공격용 코드가 숨겨진 경우에도 호스트 운영체제가 감염되는 것을 막을 수 있다. 추가로 클라이언트 개체 검증을 실시하여 사용자 시스템의 추가적인 보호가 가능하다. 게스트 운영체제가 접근하려는 호스트 운영체제의 개체가 허용되지 않은 것이라면 (예: 기밀문서자료) 클라이언트 개체 검증을 통해 접근을 차단할 수 있다.
본원 발명의 목적중 하나인 서비스 제공자의 시스템 보호는 상기 기술된 보호공간의 설치 및 무결성 검증을 통해 실현된다. 서비스 제공자는 사용자 시스템에 안전한 게스트 운영체제 환경을 생성하고 게스트 운영체제 내에서 클라이언트 어플리케이션을 실행하여 호스트 운영체제에 존재하는 악성코드, 해킹 프로그램으로부터 클라이언트 어플리케이션을 보호한다. 또한, 무결성 검증을 이용해 안전한 게스트 운영체제 내에서 생성된 네트워크 패킷만 받아들임으로써, 서버는 외부 공격으로부터 자신을 보호할 수 있다. 추가로 클라이언트 개체 검증을 실시하여 악의적인 사용자에 의한 클라이언트 어플리케이션의 조작을 방지함으로써 궁극적으로 제공자의 시스템의 추가적인 보호가 가능하다.
본원 발명의 목적중 하나인 서비스 제공자의 시스템과 서비스 사용자의 시스템의 동시 보호는 상기 기술된 보호공간의 설치, 클라이언트 개체 검증 및 무결성 검증을 통해 실현된다. 이로써 본 명세서가 추구하는 가장 이상적인 보안 시스템이 완성된다.
본원 발명의 목적 중 하나인 소프트웨어의 편리한 배포 및 사용자의 쉽고 빠른 소프트웨어 이용은 가상머신 이미지 전송을 통해 실현된다. 개개인이 각자 필요한 소프트웨어를 직접 설치하고, 각종 프로그램 설정을 맞추는 작업은 숙련된 지식을 필요로 한다. 본원 발명은 서비스 이용을 위한 소프트웨어 환경을 서비스 사용자가 직접 구성하는 것이 아니라, 서비스 제공자가 서비스를 위해 최적화된 환경을 구성하고 서비스 이용자는 구성된 내용을 그대로 사용할 수 있도록 한다. 따라서, 컴퓨터에 익숙하지 않은 사용자도 종래의 복잡한 소프트웨어 설치과정 없이 서비스 제공자가 전송한 어플리케이션 템플릿을 이용해 즉시 서비스를 이용할 수 있으며, 이미지 캐시기능과 이동식 드라이브나 파일서버 저장기능을 이용해 빠르고 편하게 서비스를 이용할 수 있다.
본 발명은 PC 환경을 물리적 하드웨어의 제약으로부터 탈출시킨다. 하나의 물리적 PC에 설치된 컴퓨팅 환경은 그 하드웨어를 떠나 다른 곳으로 이동할 수 없었던 제약을 극복한다. 하나의 물리적 PC에는 하나의 컴퓨팅 환경이 설치될 수 있다는 공간적 제약을 극복한다. 하드웨어 소프트웨어는 하드웨어에 유기적으로 결합되어 사용되어야 한다는 제약을 극복한다. 사용자는 고유의 PC 소프트웨어 환경을 PC 하드웨어로부터 자유롭게 탈부착시킴으로써 이동성을 실현시킨다.
PC에 익숙하지 않은 사용자는 프로그램 설치에 필요한 지식, 각종 프로그램 설정을 맞추는 작업으로부터 완전하게 탈출하여, 한번 설정된 최적화된 프로그램 작업환경을 쉽고 빠르게 언제든지 사용할 수 있도록 한다. 즉, 소프트웨어를 인스톨/언인스톨하는 개념이 복사/삭제하는 개념으로 변화된다. 한번 저장된 가상머신 이미지는 이미지 캐시기능, 이동식 드라이브 혹은 파일서버 저장기능을 이용해 빠르고 편하게 이용할 수 있다.
또한 PC에 익숙한 사용자도 프로그램의 설치와 제거가 매우 신속하게 이루어지므로 PC를 더욱 효율적으로 이용하도록 한다.
본 발명은 위와 같은 목적을 달성하기 위해, 서비스 사용자와 제공자가 모두 신뢰할 수 있는 서비스 제공 시스템을 제공한다.
본 발명의 한 관점에 의하면, 사용자 시스템에는 보호공간이 설치된다. 사용자는 보호공간에서 클라이언트 어플리케이션을 실행할 수 있다. 본 명세서에서 보호공간이란 스파이웨어나 애드웨어와 같은 악성코드 및 바이러스를 비롯한 각종 해커의 공격으로부터 차단되는 공간이란 의미로 사용된다. 클라이언트 시스템에 보호공간이 생성되면 보호공간 외부의 해커공격은 보호공간 내부로 침투할 수 없고, 역으로 보호공간 내부에 침투된 공격은 보호공간 외부를 공격할 수 없다. 마치 별개의 시스템인 것과 같은 두개 이상의 시스템이 하나의 물리적 시스템에 공존하게 되는 것이다. 또한 보호공간은 보호공간의 외부를 보호할 수도 있다. 보호공간의 외부를 보호하는 경우 보호공간 내부에서 활동하는 악성코드나 바이러스는 보호공간 외부를 공격할 수 없다. 본 명세서에서는 보호공간의 내부를 보호하는 경우를 중심으로 설명한다.
이러한 보호공간을 생성하는 기법은 가상화 기술을 통해 이미 그 가능성이 알려져 있는 개념이다. 그러나 본 발명에서는 사용자가 자신의 시스템에 가상머신을 설치하여 서비스를 제공받을 준비를 하는 것이 아니라, 서비스 제공자가 사용자의 시스템에 가상마신을 자동으로 그리고 강제로 설치한다는 점에 특징이 있다. 또한 그 보호공간이 이동성을 갖춘다는데 특징이 있다.
그러나 가상머신 등을 이용하여 보호공간을 생성한 것만으로 전체 클라이언트/서버 시스템이 완전하게 보호되는 것은 아니다. 일단 보호공간이 설치되면, 그 내부에서 악성인 클라이언트 어플리케이션을 실행되어도 보호공간 외부의 클라이언트 시스템은 영향을 받지 않으므로, 클라이언트 시스템은 보호된다고 할 수 있다. 이하 상세히 설명하겠지만 추가적으로 클라이언트 개체의 검증을 통해 클라이언트 어플리케이션이 보호되고, 무결성 검증을 통해 서버 시스템까지 보호될 수 있다. 그런 의미에서 본원에서 사용되는 보호공간은 클라이언트 시스템, 클라이언트 어플리케이션 및/또는 서버 시스템의 보호를 위한 공간으로 해석되어도 좋다.
보호공간을 생성하는 방법에는 시스템 자원을 격리시키는 방법도 가능하나, 본 명세서에서는 가상화 기법을 주로 기술한다. 바람직하게는 운영체제 레벨 가상화 방식을 이용한다. 종래의 운영체제 레벨 가상화 방식은 상술한 바와 같이 다수의 사용자에게 완전히 독립적인 운영체제 공간을 제공하는 서버 가상화를 주요 목 적으로 하였다. 그러나, 본원에서 이용하고자 하는 운영체제 레벨 가상화 방식은 종래의 운영체제 레벨 가상화와 달리, 한 사용자가 다수의 가상머신을 효율적으로 결합해 사용하는 데스크탑 가상화를 주요 목적으로 한다.
운영체제 레벨 가상화를 적용할 경우, 클라이언트 시스템은 호스트 운영체제와 게스트 운영체제로 분리될 수 있다. 호스트 운영체제란 사용자가 물리적인 시스템에 설치한 운영체제를 의미하고, 게스트 운영체제란 가상머신 내에 설치 혹은 생성된 운영체제를 의미한다. 데스트탑 가상화를 위한 운영체제 레벨 가상화를 효율적으로 사용하기 위해서는 호스트 운영체제에 설치한 어플리케이션을 게스트 운영체제에서 사용할 수 있고, 호스트 운영체제와 게스트 운영체제에 존재하는 데이터가 효율적으로 공유되어야 한다. 다만, 이 경우 게스트 운영체제를 보호공간으로서 신뢰성을 갖도록 하기 위해서는 호스트 운영체제의 자원을 게스트가 사용해야할 때 안전한 자원인지를 확인하는 장치가 마련되어야 한다. 게스트 운영체제에서 동작하는 클라이언트 어플리케이션이 호스트 운영체제에 존재하는 해커로부터 공격당할 위험이 있기 때문이다. 또한, 게스트 운영체제에서 생성된 패킷이 실제로 호스트 운영체제가 아닌 게스트 운영체제에서 생성된 것인지 또는 네트워크상에서 조작된 것이 아닌지를 검증해주는 장치를 마련하는 것이 바람직하다.
본 발명의 다른 한 관점에 의하면, 서비스 이용에 필요한 단계는 아래와 같다.
첫째, 클라이언트가 서버에게 독립되고 보호된 보호공간을 요청한다.
둘째, 서버는 클라이언트의 시스템에 보호공간을 생성한다.
셋째, 사용자는 보호공간 내에 설치되고 실행되는 클라이언트 어플리케이션을 통해 서비스를 제공받는다.
여기서, 사용자는 자신의 시스템에 가상머신등의 보호공간이 설치되는지를 인지할 필요도, 확인할 필요도 없고, 단지 클라이언트 어플리케이션이 설치되고 실행되는 것만을 확인하면 족하다. 다만, 사용자 시스템을 보호해야할 요구가 있다면 가상머신이 설치되는 것을 사용자에게 인지시키는 것이 바람직하고, 제공자 시스템을 보호해야할 요구가 있다면, 사용자에게는 가상머신이 설치되는데 불편함을 느끼지 못하도록 하면서 때로는 가상머신이 설치된 사실을 알릴 필요가 없는 경우도 있을 것이다.
보호공간의 생성을 위해서, 제공자는 서비스 이용에 필요한 클라이언트 어플리케이션이 미리 설치된 가상머신 이미지를 클라이언트로 전송하는 것이 바람직하다. 물론 가상머신 이미지만을 전송하여 빈 보호공간을 먼저 생성시키고, 선택적으로 클라이언트 어플리케이션을 설치하는 것도 가능하다.
본원 발명의 한 관점에 의하면, 보호공간의 생성을 위한 안전한 가상머신 시스템이 필요하다. 게스트 운영체제에서 생성된 데이터를 신뢰하기 위해 안전한 호스트 운영체제의 자원을 사용했는지 검증하고자 클라이언트 개체를 검증하여도 좋다. 또, 서버로 전송된 데이터가 호스트 운영체제가 아닌 게스트 운영체제에서 생성된 것인지, 혹은 네트워크에서 조작되지는 않았는지를 확인하는 등, 데이터를 안전하게 송수신하기 위한 무결성 검증을 실시하여도 좋다.
도 4에 도시된 바와 같이, 서비스 제공자 시스템은 서버, 서비스 이미지, 서 버측 무결성 검증수단의 전부 또는 일부로 구성되며, 서비스 사용자 시스템은 가상머신, 클라이언트 개체 검증수단, 서비스 이미지, 클라이언트측 무결성 검증수단의 전부 또는 일부로 구성된다. 이하 각 구성요소를 구현하는 방법을 구제척으로 설명한다. 본 명세서에서 사용되는 기술용어들은 본원 발명의 기술적 범위를 한정하거나 제한하는 의도로 사용된 것이 아님에 주의하여야 한다.
가상머신 시스템
안전한 가상머신 시스템은 보호공간 내에 각각의 독립적인 가상머신 인스턴스를 생성함으로써 구현가능하다. 가상머신 인스턴스는 운영체제 분할기술을 이용해 호스트 운영체제에 대해 독립적인 게스트 운영체제를 생성하고 해당 운영체제에서 시스템 부팅 과정을 거쳐 생성되며, 시스템 셧다운 과정을 거쳐 소멸된다.
본 명세서에서 사용하는 독립적이란 용어는 호스트 운영체제의 자원과 각 게스트 운영체제의 자원이 서로 충돌하지 않고 마치 여러 대의 물리적인 머신에 각각의 운영체제가 설치된 것과 동일하게 동작하도록 하는 범위에서의 독립을 의미한다. 따라서, 시스템 자원을 효율적으로 이용하기 위해, 필요한 경우 보안성을 저해하지 않는 범위 내에서 호스트 운영체제와 각 게스트 운영체제가 자원을 공유할 수 있다.
종래의 가상화 기술 중 전가상화(Full virtualization) 방식은 컴퓨터를 구성하는 모든 하드웨어 (중앙처리장치, 메모리, 컨트롤러 등)를 에뮬레이션하는 하드웨어 수준의 가상화 방식이며, 에뮬레이션된 머신에는 새로운 운영체제를 설치해야 한다. 이에 반해 운영체제 분할방식은 운영체제 수준의 가상화 방식이므로 새 로운 운영체제를 설치하는 것이 아니라, 이미 설치되어 있는 운영체제를 가상적인 여러 개의 운영체제로 분할하는 방식이다.
또한, 전가상화 방식에 의하면 호스트 운영체제에 설치한 프로그램을 게스트 운영체제에서 사용할 수 없고, 게스트 운영체제에 설치한 프로그램을 다른 게스트 운영체제에서 사용할 수 없는 문제가 있기 때문에 상기 방식은 기술적, 관리적 측면에서 본 발명의 목적을 해결하기에 적합하지 않다.
이하 본 발명의 운영체제 레벨 가상화의 기본 개념을 설명한다.
운영체제의 구성요소
운영체제는 커널(Kernel), 디바이스 드라이버(Device Driver), 시스템 프로세스(System Process), 서비스 프로세스(Services process) 등으로 구성된다.
커널은 운영체의 핵심이다. 커널은 운영체제의 일부로써 운영체의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 커널은 시스템의 하드웨어나 리소스를 관리하고 이를 추상화(Abstraction)한다.
일반적으로 커널은 커널실행부(Kernel Executive), HAL(Hardware Abstraction Layer)로 구성된다.
커널실행부는 프로세스 및 쓰레드 관리(process and thread management), 메모리 관리(memory management), 오브젝트 관리(object management), 보안 관리(security management), 프로세스 통신 관리(inter-process communication management) 등을 담당한다.
HAL은 하드웨어를 추상화하여 커널의 다른 구성요소 혹은 어플리케이션이 하 드웨어에 직접 접근하지 않고서도 하드웨어를 사용할 수 있게 해준다.
디바이스 드라이버는 물리적인 장치를 제어하거나 커널레벨에서 실행되어야할 명령어를 실행하는데 사용된다.
시스템 프로세스는 유저 모드에서 실행되는 운영체제의 핵심 프로세스로 디바이스 드라이버 요청 처리, 사용자 로그인/로그오프 처리, 보안관련 처리 등을 담당한다.
서비스(daemon) 프로세스는 유저 모드에서 백그라운도에서 실행되는 프로세스로 각종 서비스를 담당한다. 예를 들면 파일공유서비스, 텔넷서비스, 웹서비스, 프린터 서비스 등이 있다. 이들 서비스 프로세스는 백그라운드에서 실행되며 운영체제의 다른 구성요소 혹은 어플리케이션이 해당 기능을 사용할 수 있도록 지원한다.
어플리케이션 프로세스(Application process)는 운영체제에서 실행되며 사용자에 실재 필요한 기능을 제공하는 소프트웨어를 의미하며, 워드프로세서 어플리케이션, 미디어 플레이어 어플리케이션 등이 있다. 일반적으로 소프트웨어는 운영체제와 어플리케이션을 의미한다(software = operating system + application).
가상머신의 실행환경
도 6은 본원의 가상화 방식의 바람직한 실시예를 구성도로 도시한 도면이다. 가상커널을 구현하는 한 실시 예는 호스트 운영체제 커널 실행부의 각 구성요소를 가상화하는 것이다. 커널 실행부의 구성요소에는 파일, 레지스트리, 커널오브젝트, 프로세스, 스레드, 가상메모리 관리자, 구성관리자, I/O 관리자 등이 있으며 운영 체제별로 이들 구성요소는 달라질 수 있다.
일반적으로 응용프로그램 프로세스나 디바이스 드라이버가 파일, 레지스트리, 오브젝트를 사용이 필요한 경우 커널 실행부에 요청하면 커널 실행부는 해당 내용을 처리한다. 커널 실행부의 각 구성요소는 고유한 식별자를 가진다. 파일의 경우 \Device\HarddiskVolume1\windows\system32\notepad.exe와 같은 파일명이 식별자가 되며 레지스트리의 경우 \Registry\Machine\Software 와 같은 키 명이 식별자가 된다. 프로세스나 스레드의 경우 프로세스 아이디, 스레드 아이디라 불리는 숫자가 식별자이다.
커널 실행부의 각 구성요소를 가상화려면 이들 식별자에 대한 독립성을 부여하고 각 가상머신 별로 저장공간을 할당하면 된다. 예를 들면 첫번째 가상머신 인스턴스의 파일시스템을 위해 \VM1 공간을 할당하고 두번째 가상머신 인스턴스의 파일시스템을 위해 \VM2 공간을 할당한다. 응용프로그램 프로세스나 디바이스 드라이버가 파일에 대한 접근을 요청하면 VM 커널관리자가 해당 가상머신의 파일시스템의 것으로 변경하고 이를 커널 실행부로 전달한다. 예를 들면 VM1 내의 프로세스가 \Device\HarddiskVolume1\windows\system32\notepad.exe 에 대한 접근을 요청했다면 VM 커널관리자는 이를 \VM1\Device\HarddiskVolume1\windows\system32\notepad. exe로 변경해 커널 실행부에 전달하고, 커널 실행부는 \VM1 저장공간에 해당 파일을 생성하게 된다. 결국 요청된 파일명은 \Device\HarddiskVolume1\windows\system 32\notepad.exe로 동일하지만 파일 자체는 각 가상머신 별로 달라지는 것이다. 레지스트리나 커널오브젝트 등 다른 구성요소도 같은 방법으로 가상화한다.
가상커널을 구현하는 다른 한 실시 예는 하나의 커널 실행부의 각 구성요소를 가상적으로 여러 개로 나누는 것이 아니라 커널 실행부 자체를 각 가상머신 별로 하나씩 생성하는 것이다.
일반적으로 보호모드와 가상주소를 지원하는 CPU에서 동작하는 운영체제는 유저모드와 커널모드를 제공하는데, 유저모드의 가상주소공간은 각 프로세스 별로 독립적인데 비해 커널모드의 가상주소공간은 모든 프로세스에서 공유하며 전역적이다. 예를 들면 노트패드와 같은 사용자 프로세스는 유저모드에서 동작하므로 같은 프로그램을 여러 개 실행할 수 있고 각 프로세스는 고유한 가상메모리 공간을 가지므로 동일한 가상메모리 주소에 독립적인 데이터를 저장할 수 있지만, 커널 실행부는 커널모드에서 실행되므로 동일한 가상메모리 주소에는 단지 하나의 데이터를 저장할 수 있으며 여러 개를 실행할 수 없다.
본원 발명은 이를 해결하기 위해 커널관리자는 물리적인 메모리와 커널 실행부 사이에 VMEngine Memory Manager를 둔다. VMEngine Memory Manager는 커널 실행부 이외의 커널 모드 요소들의 가상 메모리 공간은 전역적으로 놓아두고 커널 실행부의 가상 메모리 공간은 유저모드처럼 각 가상머신 별로 독립적으로 존재하게 함으로써 동일한 메모리 주소에 서로 다른 값이 저장될 수 있게 하며, 가상머신 별로 하나의 커널 실행부가 생성되는 것을 가능하게 한다. 물론, 메모리 자원의 효율적인 이용을 위해 일부 가상메모리는 공유할 수 있다.
상기 실시 예와 같은 기술을 이용해 가상머신 별로 가상커널을 생성한 후 시스템 부팅 과정을 거쳐야 완전한 게스트 운영체제 환경이 준비된다. 부팅과정은 호 스트 운영체제의 부팅과정을 따른다. 일반적으로 각 가상머신에서 사용되는 하드웨어 체크, 서브시스템 로드, 지연된 변경, 시스템 프로세스 실행, 서비스 프로세스 실행, 사용자 프로세스 실행, 디바이스 드라이버 로드의 전체 혹은 일부 과정이 필요하다.
디바이스 드라이버 등의 커널 응용프로그램도 각 게스트 운영체제에 로드될 수 있다. 커널 응용프로그램의 경우 커널 실행부 경우와 같이 전역적인 가상주소 공간 문제가 발생할 수 있으며 이를 해결하기 위해 필요한 경우 VM 커널관리자 내 VMEngine Memory Manager는 가상주소공간을 지역화할 수 있다.
사용자 프로세스 실행단계에서 서비스 제공자의 응용프로그램이나 사용자의 응용프로그램이 게스트 운영체제 내에서 실행된다.
시스템 셧다운 과정은 호스트 운영체제의 셧다운 과정을 따른다. 사용자 프로세스를 종료, 서비스 및 시스템 프로세스 종료, 디바이스 드라이버 언로드, 각종 자원해제 등이 필요하다.
본원의 가상화 방식을 이용할 경우, 가상머신 이미지의 용량을 대폭 줄일 수 있다. 종래의 가상화 방식으로 가상머신 이미지를 구현할 경우에는 운영체제를 위한 데이터가 필요하므로 마이크로소프트사의 윈도우즈의 경우 현재 600 메가바이트에서 4 기가바이트 정도의 운영체제를 생성하기 위한 데이터가 필요하며, 리눅스의 경우 수십 메가바이트에서 수 기가바이트 정도의 데이터가 필요하다. 그러나 본원의 가상화 방식에 의하면 운영체제의 생성을 위한 데이터가 필요 없게 된다. 이는 제공자가 사용자의 시스템에 강제로 보호공간을 생성하는 기술을 현실화한다.
가상머신의 구성요소
가상머신의 구성요소는 설정관리자, 데스크탑 환경, 응용프로그램 템플릿, 사용자 데이터 및 임시 데이터를 포함하며, 이들 구성요소를 조합하면 하나의 가상머신이 완성된다.
설정관리자는 가상머신의 각종 설정을 관리한다. 설정항목은 사용자가 입력한 것과 서비스 제공자가 제공한 것이 있다.
데스크탑 환경은 바탕화면, 테마, 윈도우 스타일, 배경음악 등으로 구성된다. 한 사용자 시스템에는 동시에 여러 개의 가상머신 및 게스트 운영체제가 실행될 수 있기 때문에, 데스크탑 환경은 데스크탑 통합기능을 제공하여야 한다. 데스크탑 통합은 각각의 게스트 운영체제 내에 존재하는 시작메뉴, 바탕화면 아이콘 등을 호스트 운영체제의 것에 통합해 보여주는 것이다. 배경이미지, 배경음악, 윈도우 스타일 등은 실행 중인 게스트 운영체제의 것 중 하나를 선택해야 한다.
응용프로그램 템플릿은 사전설치(pre-installation)된 응용프로그램 이미지와 표준 플랫폼 제공자가 관리하는 공유 라이브러리 이미지로 구성된다. 응용프로그램 템플릿에는 제공자의 서비스 이용에 필요한 응용프로그램이 설치되어 있으며, 응용프로그램 템플릿은 사용자가 제공자에게 서비스 이용을 요청할 때 서비스 서버에서 사용자 시스템으로 전송된다.
종래에는 응용프로그램을 사용하기 위해 설치과정이 필요하였다. 예를 들면 마이크로소프트 오피스를 설치할 때 설치 시디에서 setup.exe나 autorun.exe와 같은 설치파일을 실행해 오피스 응용프로그램을 사용자의 PC에 직접 설치하여야 한 다. 본원 발명을 이용하면 상기 설치과정 필요 없이 응용프로그램을 사용할 수 있다. 예들 들면, 응용프로그램 템플릿 생성용 가상머신에서 종래의 방법으로 오피스 응용프로그램을 설치하면 그 결과는 응용프로그램 이미지에 저장되며 일반 가상머신에서는 이들 이미지를 로드하면 설치과정 없이 즉시 오피스 응용프로그램을 사용할 수 있다.
일반적으로 응용프로그램이 실행되기 위해서는 다른 응용프로그램이나 공유 라이브러리가 필요하다. 예를 들면 마이크로소프트 사의 오피스 관련 프로그램을 사용하기 위해서는 인터넷 익스플로러, 닷넷 프레임워크 등이 필요하다. 이들 공유 라이브러리를 각 응용프로그램 이미지에 중복적으로 설치하는 대신 공유라이브러리 이미지를 생성하고 이를 응용프로그램에 연결하는 방식을 도입하면 자원을 효율적으로 이용할 수 있다.
사용자마다 사용 중인 가상머신 환경은 다르다. 예를 들면 특정 공유라이브러리 이미지가 이미 존재하는 머신도 있고 그렇지 않은 머신도 있으며, 호스트 운영체제가 윈도우 XP 기반일 수도 있고 윈도우 2000 기반일 수도 있다. 따라서 응용프로그램 템플릿 생성용 가상머신에서 만든 템플릿이 다양한 가상머신에서 잘 동작하기 위해서는 표준플랫폼 제공자가 표준적인 가상머신 환경을 제공하고 응용프로그램 템플릿은 표준 플랫폼에서 동작하여야 한다.
사용자 데이터 이미지에는 사용자가 가상머신을 통해 제공자의 서비스를 사용하는 과정에서 사용자가 생성한 데이터로 각종 문서파일, 사용자 지정파일, 사용자가 직접 설치한 소프트웨어의 파일 및 레지스트리 등이 저장된다.
임시 데이터 이미지에는 가상머신 실행과정에서 생성된 데이터로 임시사용이 끝난 후 삭제되어도 무방한 데이터가 저장된다. 데스크탑 환경, 응용프로그램 템플릿, 사용자데이터는 다른 가상머신에서 로드하거나 공유할 수 있지만 임시 데이터는 특정 가상머신 실행과정에서 생성된 것으로 공유되지 않는다.
도 7에 도시된 바와 같이, 응용프로그램 템플릿, 사용자 데이터, 임시 데이터는 계층화되어 있다. 파일시스템을 예로 들면 파일시스템 스택에는 호스트 운영체제 파일, 표준플랫폼 제공자 내 파일, 응용프로그램 이미지 내 파일,사용자 데이터 파일, 임시 데이터 파일이 쌓여 있다. 응용프로그램이 c:\windows\system32\notepad.exe 를 요청하면 임시 데이터에서 해당파일을 찾고, 존재하지 않으면 사용자 데이터 파일에서 찾고, 존재하지 않으면 응용프로그램 데이터 파일에서 찾고, 존재하지 않으면 호스트 운영체제 파일에서 찾는다. 레지스트리, 커널 오브젝트 등 다른 커널 구성요소도 동일한 방식으로 동작한다.
응용프로그램 템플릿 이미지, 사용자 데이터 이미지, 임시 데이터 이미지에는 파일, 레지스트리, 메모리, 기타 데이터가 저장될 수 있으며 각 이미지는 하나 혹은 여러 개의 파일형태로 저장되거나, 물리적 저장매체의 섹터에 직접 기록될 수도 있다. 이미지 최초 생성시 필요한 크기의 저장공간을 미리 할당할 수도 있고, 가상머신을 사용하면서 필요한 크기만큼 동적으로 증가시킬 수도 있다.
가상머신 이미지는 고정식 하드디스크드라이브, 이동식 드라이브, 네트워크로 연결된 파일저장 서버 등 다양한 매체에 전체 혹은 일부 이미지가 저장되거나 캐시될 수 있다. 사용자가 이동식 디스크나 네트워크로 연결된 파일저장 서버를 이 미지 저장장소로 선택한 경우, 현재 사용 중인 시스템이 아닌 다른 시스템에서 동일 서비스를 이용할 때, 이동식 저장장치를 연결하거나 파일저장 서버에 접속해 사용자 데이터 이미지나 응용프로그램 이미지를 로드함으로써 사용자가 기존 시스템에서 이용 중이던 환경을 그대로 재현해 사용할 수 있다. 응용프로그램 이미지를 이용해 응용프로그램 설치환경을 재현할 수 있으며, 사용자 데이터 이미지를 이용해 기존 작업 중이던 문서파일 및 기타 데이터를 그대로 이용할 수 있다. 서로 다른 시스템 사이의 차이는 표준플랫폼 제공자가 보정해준다.
이미지 캐시기능을 이용하면 전체 이미지에서 현재 필요한 부분만 서버에서 클라이언트로 전송하고 전송된 부분을 이용해 가상머신을 실행할 수 있다. 여러 서비스 제공자가 동일한 응용프로그램 템플릿을 사용하는 경우 사용자는 타 제공자의 서비스 이용과정에서 전송된 이미지 캐시를 이용함으로써 네트워크 전송 효율성을 높일 수 있다. 사용자가 캐시된 이미지를 고정식 하드디스크에 저장하는 것이 아니라 USB 드라이브와 같은 이동식 저장장치에 저장하면, 타 시스템에서 동일 서비스를 이용할 때 이동식 저장장치에 캐시된 이미지를 이용해 빠르게 서비스를 사용할 수 있다.
계층화된 커널 구성요소
도 6은 본원의 가상화 방식의 바람직한 실시예를 구성도로 도시한 도면이다.
독립적인 게스트 운영체제의 실행환경은 가상커널, 실행공간, 가상머신 데이터로 구성된다.
표 1은 운영체제를 포함한 일반적인 PC의 구조이다.
어플리케이션 구성요소 어플리케이션
운영체제 및 어플리케이션 구성요소 서비스
운영체제 구성요소 시스템 프로세스
디바이스 드라이버
커널실행부
HAL
하드웨어 구성요소 하드웨어
운영체제의 각 구성요소인 HAL, 커널실행부, 디바이스 드라이버, 시스템 프로세스, 서비스 등은 계층화(layered)되어 있다.
상위 계층 구성요소가 하위 계층 구성요소에 특정 기능의 처리를 요청하면 하위 계층은 해당 요청을 처리한 후 결과를 돌려준다.
가상화는 상위 계층의 요청을 하위 계층이 처리할 때 이를 제어함으로써 구현된다. 예를 들면 디바이스 드라이버가 커널실행부에 특정 오브젝트의 생성을 요청할 때 가상 공간에 해당 오브젝트를 생성한 후 결과를 리턴하고, 응용프로그램이 c:\myfile.txt 파일 생성을 요청하면 커널실행부는 이를 실재 디스크가 아닌 가상디스크에 생성한 후 결과를 리턴한다.
상위 계층은 하위 계층의 응답을 이용해 모든 기능을 처리하므로 하위 계층에서 가상화가 구현되면 상위 계층은 수정 없이 가상머신에서 실행된다.
본 발명에서는 운영체제의 가장 하위 계층인 HAL 및 커널 실행부 계층에서 가상화를 구현해 상위 계층인 디바이스 드라이버, 시스템 프로세스, 서비스 프로세스, 어플리케이션은 특별한 수정 없이 가상 공간에서 실행되도록 한다.
이하 본 발명의 이동형 운영체제를 구현하는 방법을 설명한다.
가상커널의 생성
가상커널은 커널 실행부 계층에서 상위 계층에서의 요청을 디스패치(dispatch)함으로써 구현된다. 실재머신에 속한 쓰레드 혹은 프로세스에서의 요청은 실재 공간으로 디스패치되고 가상머신에 속한 쓰레드 혹은 프로세스에서의 요청은 가상 공간으로 디스패치된다. 가상머신 내에서 실행된다는 것은 커널 실행부에 대한 요청이 디스패치된다는 것을 의미한다.
도 10은 커널의 상위 레이어에서의 요청이 커널 실행부를 거쳐 가상 공간 또는 실재 공간으로 디스패치되는 것을 도시하고 있다.
커널실행부에 대한 가상화는 파일, 레지스트리, 오브젝트 등의 네임 스페이스에 대한 가상화와 프로세스 및 쓰레드에 대한 가상화, 메모리 가상화로 구현된다.
네임 스페이스에 대한 가상화 구현방법은 다음과 같다.
이름을 가지는 커널 구성 요소는 파일, 레지스트리, 그 밖의 커널 오브젝트 등이 있다. 파일의 경우 \Device\HarddiskVolume1\myfile.txt 라는 이름을 가지며, 레지스트리의 경우 \Registry\Machine\Software\mykey 라는 이름을 가지며 커널 오브젝트의 경우 \BaseNamedObjects\myobject 라는 이름을 가진다.
이들 이름은 네임 스페이스에서 관리된다. 특정 커널 오브젝트를 열 경우 커널 실행부는 해당 오브젝트가 존재하는지 여부를 네임 스페이스에서 체크하며, 특정 커널 오브젝트를 생성할 경우 중복되는 오브젝트가 있는지 여부 등도 네임 스페이스에서 체크되며, 커널 오브젝트가 생성된 경우 오브젝트 명이 네임 스페이스에 기록된다. 각 가상머신은 고유한 네임 스페이스를 갖는다. 예를 들면 VM1 가상머신의 경우 상기 예의 파일 \Device\HarddiskVolume1\myfile.txt에 대한 요청은 \VM1\Device\HarddiskVolume1\myfile.txt으로 디스패치되며, 상기 예의 레지스트리 \Registry\Machine\Software\mykey에 대한 요청은 \Registry\VM1\Machine\Software \mykey로 디스패치되며, 상기 예의 오브젝트 \BaseNamedObjects\myobject에 대한 요청은 \VM1\BaseNamedObjects\myobject로 디스패치된다. 물론, 디스패치될 이름의 형태는 임의로 그 규칙을 설정할 수 있다. 이와 같이 각 가상머신 별로 독립적인 네임 스페이스를 부여함으로써 네임 스페이스에 대한 가상화가 구현된다.
프로세스 및 쓰레드에 대한 가상화는 구현방법은 다음과 같다.
운영체제 관점에서 쓰레드는 실행의 최소단위이고 프로세스는 메모리 주소를 공유하는 쓰레드의 집합이다. 프로세스나 쓰레드에 대한 생성요청은 커널실행부로 전달된다. 커널 실행부는 자식 프로세스의 생성을 요청한 부모 프로세스가 특정 가상머신 내에 있을 경우 자식 프로세스도 해당 가상머신 내에서 생성한다. 커널 실행부는 쓰레드의 생성을 요청한 쓰레드의 프로세스가 가상머신 내에 있을 경우 해당 쓰레드도 해당 가상머신 내에서 생성한다. 일반적으로 운영체제 레벨 가상화는 프로세스 단위로 가상화를 구현되므로 상기 단계로 충분하다.
하지만, 본원 발명은 가상화의 최소단위는 프로세스가 아닌 쓰레드이다. 그 이유는 효율적인 운영체제 레벨 가상화를 구현하기 위해 일부 운영체제 프로세스를 가상머신에서 새로 생성하는 것이 아니라 실재머신의 프로세스를 공유하며, 이 경우 한 프로세스 내에서 특정 쓰레드는 실재머신에서 실행되고 특정 쓰레드는 특정 가상머신에서 실행되어야 하기 때문이다. 커널실행부가 쓰레드 생성을 요청받는 경우 쓰레드 생성을 요청한 부모 쓰레드가 가상머신 내에 있으면 해당 쓰레드도 가상공간에서 실행한다.
가상머신 템플릿 이미지 매핑
동일한 운영체제라 하더라도 각 시스템 별로 설정되어있는 사용자 권한이나 각종 시스템 설정이 다르기 때문에, 한 가상머신에서 사용되던 가상머신 이미지를 다른 가상머신에서 사용하려면 가상머신 템플릿 이미지 매핑 과정을 거쳐야 하며, 세부적으로는 권한매핑, 환경변수 및 운영체제 설정매핑, 가상머신과 실재머신간에 공유되는 자원에 대한 매핑 등이 포함된다. 이런 매핑은 가상머신 템플릿 이미지를 실재머신에 맞게 설정을 변환하는 방식과 커널실행부에 특정 이미지의 설정을 등록하는 방식이 있으며, 두 방식 모두 혹은 어느 한 방식만 적용할 수 있다.
권한매핑의 세부내용은 다음과 같다.
다중사용자 운영체제는 사용자별 접근제어 기능을 제공하며, 이를 이용해 파일, 레지스트리, 장치 별로 특정 사용자에게 특정 권한을 부여할 수 있다. 가상머신 템플릿 이미지는 권한정보가 존재하지 않거나, 이미지를 제작할 당시 사용자의 권한으로 설정되어있다. 일부 운영체제의 이러한 권한이 맞지 않는 경우 부팅이 중단되는 경우도 있다. 따라서, 이미지를 가져올 때 권한매핑 단계를 거쳐야한다.
가상머신 템플릿 이미지를 실재머신에 맞게 적응변환시키는 경우 이미지 내의 각 파일, 디렉터리, 레지스트리, 장치 등의 권한설정을 실재머신의 운영체제 환경에 맞는 값 혹은 운영체제 기본 값으로 설정할 수 있다. 물론, 사용상 운영체제의 접근제어 기능이 필요하지 않거나, 접근제어가 설정되어 있지 않아도 동작에 문제가 없는 파일, 디렉터리, 레지스트리, 장치는 권한 매핑 과정은 생략되어도 무방하다.
커널실행부에 등록하는 방식의 경우 가상커널실행부에 해당 계정 자체를 등록한다.
환경변수 및 설정 재 매핑은 실재머신의 환경변수와 설정은 실재머신의 드라이브 경로를 기준으로 기록되어있다. 가상 운영체제가 설치된 가상디스크 드라이브 명은 실재 운영체제가 설치된 물리적 디스크의 드라이브 명과 다를 수 있으므로 환경변수 혹은 설정 값 중 매핑이 필요한 부분은 새롭게 매핑해 주어야 한다.
공유되는 자원에 대한 매핑은 아래와 같다.
시스템 프로세스, 서비스 프로세스 등 일부 운영체제 구성요소는 실재머신과 가상머신 사이에 공유되며 이들 프로세스에서 사용되는 자원 또한 공유된다. 쓰레드 별로 할당되는 자원은 쓰레드 레벨의 가상화를 통해 해결되지만, 프로세스 별로 할당되는 자원은 상황에 맞는 처리를 해 주어야 한다. 예를 들면 윈도우의 경우 kernel32.dll, user32.dll 파일은 실재머신과 가상머신 사이에 버전이 동기화되어야 한다.
스탠드 얼론(Stand alone) 방식의 가상머신 이미지 생성
가상머신 이미지 내에는 운영체제 데이터 파일이 포함되어 있으며, 일반적으로 운영체제 데이터 파일은 수백MB 이상의 공간을 차지한다. 본원 발명은 운영체제 레벨 가상화이므로 운영체제 파일은 가상머신 템플릿 이미지에 담아 배포하는 것이 아니라 실재 머신의 운영체제를 이용해 직접 생성할 수 있다. 배포되는 가상머신 템플릿 이미지 내에는 파일목록, 레지스트리 목록, 운영체제 설정 값과 같은 운영체제 이미지 직접 생성에 필요한 최소한의 데이터만 포함시키고, 파일데이터, 레지스트리 데이터 등은 실재 머신의 운영체제에서 내용을 복사하여 사용할 수 있다.
배포되는 가상머신 템플릿 이미지 내에 담길 파일목록, 레지스트리 목록, 운영체제 설정 값과 같은 데이터는 동일 운영체제의 다양한 버전에 존재하는 모든 목록 혹인 일부 목록 포함한다. 예를 들어 윈도우 운영체제는 윈도우 2000, 윈도우 XP, 윈도우 2003 등 다양한 버전이 존재하며 가상머신 템플릿 이미지는 모든 윈도우 버전 혹은 일부 윈도우 버전에 사용되는 파일, 레지스트리 목록을 포함할 수 있다.
이미지 매핑단계에서 상기 목록 중 실재 머신의 운영체제에 존재하는 항목만을 사용하도록 기록한다. 이후 실제 머신의 운영체제에서 가상머신 템플릿 이미지로 파일 및 레지스트리 데이터 내용을 복사한다. 복사는 이미지 매핑 단계에서 이루어질 수도 있고, 가상머신 실행 단계에서 해당 파일이나 레지스트리가 실제로 사용될 때 이루어질 수도 있다.
윈도우 운영체제는 DOS 환경과의 호환성을 위해 8.3 형식의 짧은 파일 네임(Short File Name, SFN) 파일명과 긴 파일 네임(Long File Name, LFN)을 함께 지원하는데 파일을 복사하면 LFN은 동일하나 SFN은 실재 운영체제와 생성된 이미지가 서로 다를 수 있다. 따라서 파일 복사 후 SFN을 일치시켜주어야 한다. 레지스트리에 기록된 파일명도 함께 일치되어야한다.
스트리밍 방식의 이미지 전송
가상머신 이미지 파일은 일반적으로 매우 크다. 가상머신을 사용하기 위해 이미지 파일 전체를 다운로드 혹은 복사한 다음 사용할 수도 있지만, 이미지 스트리밍 방식으로 이미지를 전송하는 경우 보다 전체 이미지를 다운로드할 때까지 기다리지 않고 가상머신을 사용할 수 있다. 스트리밍은 이미지 파일을 스트리밍 저장장치에 저장해두고 가상머신 사용 중 필요한 부분만 다운로드 혹은 복사해 사용하는 방식이며, 스트리밍 저장장치는 파일서버, 웹서버, FTP 서버와 같은 서버 형태의 저장장치일 수도 있고 USB 드라이브나 CD/DVD롬과 같은 이동식 저장장치일 수도 있고, 일반 하드디스크와 같은 고정식 저장장치일 수도 있다.
스트리밍 방식의 디스크 이미지 전송은 다음과 같은 절차로 이루어진다. 프로세스, 쓰레드, 디바이스 드라이버 내 인스트럭션이 특정 파일 혹은 디렉터리에 대한 접근을 요청하면 가상 커널실행부는 이 요청을 가상디스크로 디스패치한다. 가상디스크는 요청된 파일 혹은 디렉터리의 가상디스크 상 위치를 계산하고 이를 이용해 디스크 이미지 파일에서의 위치 (offset)을 구한다. 계산된 위치와 필요한 길이(length)를 스트리밍 이미지 저장장치에 요청하면 스트리밍 이미지 저장장치는 이미지 파일의 지정된 위치(offset)에서 지정된 길이(length) 만큼의 데이터를 전송한다. 가상디스크는 전송받은 데이터를 이용해 실행을 계속한다.
스트리밍 방식의 레지스트리 이미지 전송은 다음과 같은 절차로 이루어진다. 프로세스, 쓰레드, 디바이스 드라이버 내 인스트럭션이 특정 레지스트리 키 혹은 값에 대한 접근을 요청하면 가상 커널실행부는 이를 처리하기 위해 레지스트리 이미지 파일에 접근한다. 이 때 레지스트리 이미지 파일에서 접근해야할 위치(offset)와 길이(length)가 계산되며 이 요청을 스트리밍 저장장치로 전송한다. 스트리밍 저장장치는 레지스트리 이미지 파일에서 지정된 위치(offset)와 길이(legnth)의 데이터를 처리한 후 결과를 돌려준다. 가상 커널실행부는 전송받은 데이터를 이용해 실행을 계속한다.
가상디스크를 통한 이미지 로딩
가상디스크는 실재 하드 디스크를 소프트웨어 적으로 에뮬레이션하는 가상 장치이다. 한 개의 가상디스크는 한 개 혹은 여러 개의 가상 이미지 파일과 연결되며, 가상디스크의 특정 섹터는 이미지 파일의 특정 위치와 연결된다. 따라서, 가상디스크의 특정 섹터에 데이터 읽기, 쓰기 요청은 이미지 파일의 특정 위치에 해당 데이터를 읽고 쓰는 형태로 에뮬레이션되며 기타 파티션 및 디스크에 대한 제어 요청도 같은 방법으로 처리된다. 가상디스크를 이용하면 가상머신 내에 존재하는 다수의 파일 및 디렉터리가 실재머신에서는 하나의 디스크 이미지 파일로 존재하므로 이동성이 향상되며, 이미지 파일에 암호화를 적용하면 다른 사용자는 암호를 알아야 가상머신을 사용할 수 있으므로 기밀성도 좋아진다. 운영체제에 따라 각 디스크는 드라이브 명이 부여된다. 예를 들어, 윈도우 운영체제의 경우 C:, D: 등의 드라이브 명이 부여된다. 가상디스크도 자체적인 드라이브 명을 가지므로 같은 같은 C: 드라이브라도 가상머신의 C: 드라이브는 가상디스크를 가리키며 실재머신의 C: 드라이브는 물리적 디스크를 가리킨다.
본원 발명에서 가상머신 디스크 이미지는 저용량 옵션(light option)을 제공한다. 일반적으로 운영체제를 사용하려면 수백메가바이트 이상의 저장공간이 필요하다. 디스크 이미지 내에 모든 파일을 포함할 수도 있지만 효율적인 이동성을 보장하기 위해 빈 이미지 혹은 파일 목록만 담긴 이미지를 배포하고 파일 내용은 실재머신의 운영체제의 것을 이용하는 방식도 가능하다. 또한, 실재머신과의 충돌을 최소하하기 위해 운영체제는 O: 드라이브, 어플리케이션 프로그램은 P: 드라이브로 설정하여 가상디스크 이미지를 제작, 배포할 수 있다.
계층화된 가상머신 이미지
가상머신 이미지를 단일 파일이 아닌 계층화된 구조로 제공하는 경우 사용 중 필요한 이미지 파일을 삽입할 수도 있고, 가상머신에 문제가 발생한 경우 문제가 되는 이미지 파일만 새 것으로 교체할 수는 등 장점이 있다. 가상머신 이미지는 운영체제 이미지 계층, 응용프로그램 템플릿 이미지 계층, 사용자 데이터 이미지 계층, 임시데이터 이미지 계층으로 나뉜다. 임시 데이터 계층은 가상머신 실행과정에서 생성된 데이터로 가상머신에 문제가 생겼을 때 삭제되어도 무방한 데이터가 저장된다. 사용자 데이터 이미지 계층은 사용자가 생성한 데이터로 각종 문서파일, 사용자 지정파일, 사용자가 직접 설치한 소프트웨어의 파일 및 레지스트리 등이 저장된다. 응용프로그램 템플릿 이미지는 가상머신 이미지 내보내기 기능을 통해 생성된 응용프로그램 이미지이며 이 이미지 파일은 가상머신 사용 중 변경되지 않는다. 가상운영체제 템플릿 이미지는 가상운영체제의 파일 및 레지스트리를 담고 있는 이미지이며 이 이미지 파일은 가상머신 사용 중 변경되지 않는다.
도 7에 도시된 바와 같이, 가상 운영체제, 응용프로그램 템플릿, 사용자 데이터, 임시 데이터는 계층화되어 있다. 파일시스템을 예로 들면 파일시스템 스택에는 가상 운영체제 파일, 응용프로그램 템플릿 파일, 사용자 데이터 파일, 임시데이터 파일이 쌓여있다. 응용프로그램이 c:\myfile.txt를 요청하면 임시 데이터에서 해당파일을 찾고, 존재하지 않으면 사용자 데이터 파일에서 찾고, 존재하지 않으면 응용프로그램 데이터 파일에서 찾고, 존재하지 않으면 가상 운영체제 파일에서 찾는다. 레지스트리도 동일한 방식으로 동작한다.
가상운영체제 부팅
사용자가 운영체제를 사용하려면 운영체제를 부팅하여야한다. 운영체제 부팅
단계는 일반적으로 장치 초기화, 지연된 변경, 시스템 프로세스 실행, 서비스 프로세스 실행, 운영체제 어플리케이션 실행 등의 단계로 나뉜다. 가상머신도 마찬가지로 가상머신 내 운영체제를 부팅하여야한다. 운영체제 레벨에서 가상화를 구현한 경우 각각의 가상머신도 부팅 과정을 거쳐야한다. 커널실행부 레이어에서 네임 스페이스 및 프로세스와 쓰레드에 대한 강화를 구현한 후 해당 운영체제의 부팅 시작점을 가상커널 내에서 호출하는 것으로 부팅은 시작되며, 가상커널 내에서 호출된 부팅 시작점은 운영체제의 부팅과정과 동일하게 부팅단계를 진행한다. 가상머신의 부팅단계에서 물리적 장치에 대한 초기화는 생략되며 가상장치에 대한 초기화 과정은 추가적으로 필요하다. 지연된 변경이란 파일 등의 자원이 사용 중이면 이를 삭제하거나 변경하는 것이 불가능하므로 일반적으로 시스템 종료 후 다음번 부팅 과정에서 자원의 삭제나 변경을 처리하는 것을 의미하며, 가상머신 부팅 과정에서 가상머신 내의 지연된 변경을 처리해야 한다.
시스템 프로세스는 운영체제 환경을 제공하는데 필요한 핵심 프로세스로 사용자 계정 관리, 로그온 처리, 세션관리, 서비스 관리 등을 담당하는 프로세스다. 예를 들면 마이크로소프트사의 윈도우 운영체에서는 lsass.exe, winlogon.exe, smss.exe와 같은 프로세스이다. 서비스 프로세스는 백그라운드에서 실행되면서 다른 응용프로그램이 필요한 기능을 제공하는 프로세스로 DCOM/RPC 서비스, 프린터 스풀러 서비스 등이 있다.
시스템 프로세스나 서비스 프로세스는 가상머신 내에 모든 프로세스를 실행할 수도 있으나 전체 시스템 자원을 효율적으로 이용하기 위해 호스트 운영체제나 다른 가상머신에 이미 실행되어 있는 프로세스를 공유할 수도 있다. 예를 들어, 계정 관리 시스템 프로세스의 경우 가상머신 마다 하나씩 실행하면 각 가상머신 별로 독립적인 계정이 존재하지만 호스트 운영체제의 프로세스를 공유할 경우 호스트 운영체제의 아이디/패스워드 계정정보를 각 게스트 운영체제가 공유하게 된다.시스템 프로세스나 서비스 프로세스를 공유하기 위해선 해당 프로세스 내에 존재하는 모든 전역적 오브젝트에 대한 접근을 공유되는 프로세스의 오브젝트로 매핑시켜야 한다. 예들 들면 프린터 스풀러(spooler) 서비스 프로세스에는 프린터 제어를 위한 명명파이프 등이 존재하는데, 게스트 운영체제 내의 메모장 프로세스가 문서 출력을 요청하면 기본적으로 게스트 운영체제 내의 스풀러 서비스의 명명파이프로 접속을 시도할 것이다. 하지만, 게스트 운영체제 내에는 스풀러 서비스가 존재하지 않고 호스트 운영체제의 것을 공유하므로 이런 요청을 호스트 운영체제의 스풀러 서비스로 매핑해줘야 한다.
사용자가 운영체제를 종료하려면 운영체제를 셧다운하여야 한다. 운영체제 셧다운 단계는 일반적으로 어플리케이션 종료, 장치 드라이버 종료, 서비스 프로세스 종료, 시스템 프로세스 종료 등의 단계로 나뉜다.가상머신도 마찬가지로 가상머신 내 운영체제를 종료하여야한다. 종료과정은 실재 운영체제의 종료과정을 따르지만 실재장치의 종료는 수행하지 않는다.
가상운영체제의 사용
가상머신이 부팅된 후 사용자는 실재운영체제와 동일하게 가상머신을 사용한다. 가상머신의 화면은 스위치 모드와 심리스(seamless) 모드를 지원한다. 스위치 모드는 가상머신 별로 독립적인 화면을 가지는 모드이며 사용자가 가상머신을 사용 중 다른 가상머신이나 실재머신을 이용하려면 메뉴 혹은 단축키를 이용해 화면을 전환해야하는 방식이다. 심리스 모드는 실재머신의 프로그램과 가상머신의 프로그램이 한 화면내에서 표시되는 방식이다.
가상머신 이미지 내보내기
사용자가 가상머신 내에서 수행한 파일 오프레이션은 가상디스크 이미지에 저장되며, 가상머신 내에서 수행한 레지스트리이 오프레이션은 가상레지스트리 이미지에 자장된다. 이미지 파일은 이미지 내보내기를 통해 이동, 배포, 공유가 가능하다. 내보내기의 가장 간단한 방법은 단순히 이미지 파일을 복사하는 것이다. 보다 발전된 방법은 이미지 파일 내의 불필요한 정보를 제거해 이미지 크기를 줄이는 것이다. 불필요한 정보에는 임시파일, 권한설정 정보, 공유되지 않는 운영체제 구성요소의 파일, 레지스트리 등이 있다. 보다 발전된 방법은 이미지 파일 내 각각의 파일, 디렉터리, 장치, 레지스트리에 대해 권한설정, 운영체제 혹은 설치된 어플리케이션의 라이선스 정보 추가, 사용가능한 운영체제 버전 정보, 필요한 라이브러리 정보 등을 추가해 보다 효율적인 공유가 가능하도록 이미지를 패키징하는 것이다.
클라이언트 개체의 검증
클라이언트 개체의 검증은 안전한 게스트 운영체제 환경을 제공하기 위한 것으로, 게스트 운영체제 내에서 로드될 수 있는 실행파일, 문서파일, 개체, DLL 등의 검증 목록을 관리하는 것이다. 종래의 전가상화 기법에 의하면 가상머신으로 생성된 게스트 운영체제와 기존의 호스트 운영체제는 어느 일부의 자원도 공유하지 않는 완전히 분리된 두개의 시스템으로 간주되나, 본원에서 이용하는 운영체레 레벨 가상화 방식에 의하면, 게스트 운영체제가 호스트 운영체제의 자원을 일부 공유하므로 공유된 호스트 운영체제의 자원이 안전한지를 검사하기 위해 클라이언트 개체의 검증을 요구하게 된다.
이는 클라이언트 어플리케이션이 호스트 운영체제의 자원을 공유한다는 것을 알고 있는 악의적인 사용자가 클라이언트 어플리케이션이 사용하는 호스트 운영체제의 자원에 액세스하여 데이터를 조작함으로써 결과적으로 서버로 전송되는 패킷이 조작되게 하는 등의 행위를 방지한다. 역으로, 호스트 운영체제에는 기밀문서자료나 반도체 설계회로와 같은 보안이 요구되는 데이터들이 존재할 수 있으므로, 게스트 운영체제가 접근하려는 호스트 운영체제의 개체가 허용되지 않은 것이라면 클라이언트 개체 검증을 통해 접근을 차단할 수 있다.
가상머신 설정관리자에서 가상머신의 보안수준을 설정할 수 있으며 보안 옵션은 모두허용, 호스트 검증, 전체 검증이 있다. 모두 허용의 경우 게스트 운영체제에 어떤 파일이든 실행되거나 로드될 수 있다. 호스트 검증인 경우 호스트 운영체제와 공유되는 파일, 레지스트리 등의 개체는 게스트 운영체제에 사용되기 전 사용가능한 것인지 검증한다. 접근하려는 호스트 운영체제의 개체가 기밀자료, 사용자 화면 등 서비스 제공자가 접근할 권한이 없는 개체인 경우 접근을 차단한다. 접근하려는 호스트 운영체제의 개체가 악성코드이거나 악성코드에 감염되어 있는 경우 및 신뢰목록에 존재하지 않는 파일인 경우 가상머신 설정관리자의 보안정책에 따라 접근을 차단할 수 있다. 이 경우 서비스 서버는 악성코드에 감염되지 않은 안전한 파일을 가상머신에 복사한 후 복사된 파일을 이용해 다음 단계를 진행한다. 전체 검증은 호스트와 공유되는 파일, 레지스트리 등의 개체 뿐만 아니라 게스트 운영체제에 존재하는 개체도 사용되기 전 검증을 수행하는 것이다.
검증의 한 실시 예는 전자서명을 이용하는 것이다. 파일의 특정부분에 파일 내용에 대한 전자서명 값이 첨부된 경우 해당 전자서명 값을 검증함으로써 신뢰할 수 있는 파일인지 여부를 확인할 수 있다. 파일의 특정부분에 기록하는 것이 아니라 검증 목록에 파일명과 전자서명을 함께 기록해 관리할 수도 있다.
검증의 다른 한 실시 예는 해시 값을 이용하는 것이다. 파일의 특정 부분에 파일 내용에 대한 해시 값을 첨부된 경우 해당 해시를 동일 알고리즘으로 재계산해 일치여부를 검증함으로써 신뢰할 수 있는 파일인지 여부를 확인할 수 있다. 파일의 특정 부분에 기록하는 것이 아니라 검증 목록에 파일명과 해시 값을 함께 기록해 관리할 수도 있다.
검증의 다른 한 실시 예는 파일명, 생성날짜 등의 단순한 정보를 이용해 체크하는 것이다.
검증 결과, 안전하지 않다면 접근제어 규칙에 따라 접근을 차단하거나, 서버에서 안전한 자원을 게스트 운영체제에 설치한 후 그것을 사용한다. 서버에서 안전한 자원을 클라이언트로 전송한 후 게스트 운영체제에서는 전송된 자원을 사용한다.
무결성의 검증
무결성의 검증은 사용자 및 제공자에게 안전한 서비스 환경을 제공하기 위한 것으로 클라이언트측 무결성 검증과 서버측 무결성 검증이 상호 연동하여 서버와 클라이언트간의 송수신 데이터를 검증한다. 무결성 검증은 클라이언트와 서버 사이에 보안터널을 생성함으로써 클라이언트와 서버에 대한 공격을 차단한다.
상술한 클라이언트 개체 검증만 실시하는 경우, 서버에 대한 공격을 방어할 수단이 없고, 가상머신에서 실행되는 서비스 제공자의 소프트웨어를 안전하게 보호하기 위해서는 가상머신 내에는 해당 소프트웨어만 실행되고 악성코드 등은 실행되면 안 된다. 따라서, 검증목록에 서비스 제공자 소프트웨어 내용을 기록해두고 검증된 개체만 사용을 허용해야 하는데, 이 경우 소프트웨어가 업데이트 될 때마다 검증목록도 업데이트 하여야하므로 관리적으로 불편한 부분이 있다.
따라서 무결성 검증을 도입하면 서버에 대한 공격도 방어하고, 서비스 제공자의 클라이언트 응용프로그램도 보호할 수 있다.
도 5를 참조하여, 무결성 검증을 도입한 본 발명의 일실시예를 설명한다. 일반적으로 클라이언트/서버 시스템은 클라이언트측 시스템(500)과 서버측 시스템(550)으로 구성되며 클라이언트측 시스템과 서버측 시스템 사이는 네트워크(532)로 연결되어 있다. 클라이언트측 시스템(500)은 클라이언트 어플리케이션(521)과 그것을 실행할 수 있는 운영체제로 구성되며, 어플리케이션 실행공간은 일반적인 어플리케이션 실행공간(510)과 보호공간(520)으로 나뉜다. 일반적인 어플리케이션 실행공간(510)에는 일반 어플리케이션(511), 해킹툴(512), 기타 소프트웨어(513)가 실행될 수 있고, 보호공간(520) 안에서는 클라이언트 어플리케이션(521)과 무결성 검증(522)을 실행한다. 지금까지 서버측 시스템(550)에 대한 해킹은 해커(533)가 클라이언트 어플리케이션(511)을 조작하거나 해킹툴(512)을 실행해 악성패킷(531)을 생성하고 그것을 전송해 서버측 시스템(550)을 공격하는 방식으로 이루어졌다. 따라서 기존 서버시스템 보안제품은 전술한 바와 같이 서버 단에 위치해서 수신되는 네트워크 패킷을 검사하여 허용 여부를 결정하거나 서버 어플리케이션(551) 취약점 자체를 제거하는 방식으로 동작하였다.
일반적인 어플리케이션 실행공간(510)은 해커가 실행 중인 어플리케이션을 마음대로 조작할 수 있고, 영역 내에 어떤 어플리케이션이라도 실행할 수 있지만, 보호공간(520)은 미리정해진 클라이언트 어플리케이션(521)만 실행될 수 있으므로 해킹툴, 악성코드, 애드웨어는 침투할 수 없고 해커의 공격으로부터 클라이언트 어플리케이션(521)을 보호할 수 있다
그러나, 보호공간(520) 내의 클라이언트 어플리케이션(521)이 생성한 패킷만 서버측 시스템으로 전송되는 것을 허용하고 이외의 어플리케이션(511, 512, 513)이 생성한 네트워크 패킷은 모두 차단해야, 서버측 시스템(550)도 어느 정도 보호할 수 있다. 또한, 보호공간(521) 내에서 생성된 안전한 네트워크 패킷(530)이라 하더라도 해당 패킷은 다양한 네트워크 전송구간(532)을 거친 후 서버측 시스템(550)에 전송되므로, 해커(533)는 이러한 네트워크 전송구간(532)에서 패킷을 변조하거나 악성코드를 삽입할 수 있다. 따라서 보호공간(520) 내의 클라이언트 어플리케이션(521)에서 생성된 패킷이 네트워크 전송구간(532)에서 해커(533)에 의해 변조되지 않았음을 보장하는 무결성 검증이 필요하다.
무결성 검증은 클라이언트측 무결성 검증(522)과 서버측 무결성 검증(540)로 구성되며, 두 부분이 상호작용하여 무결성 여부를 검증하게 된다.
무결성 검증의 한 실시 예는 암호화이다. 도 8은 무결성 검증의 바람직한 실시예를 도시한다. 보호공간(520) 내에서 실행된 클라이언트 어플리케이션(800)에서 생성된 네트워크 패킷과 서버 어플리케이션(850)에서 생성된 패킷이 전송되는 과정에서 해커(860)가 패킷을 조작해 클라이언트 어플리케이션(800) 및 서버 어플리케이션(850)을 공격하는 것을 막기 위해, 클라이언트와 서버 사이의 송수신 데이터를 암호화한다. 클라이언트 어플리케이션(800)에서 생성된 네트워크 패킷은 클라이언트측 암호화 수단(810)에 의해 암호화되어 전송되고, 전송된 패킷은 서버측 복호화 수단(840)에 의해 복호화되어 서버 어플리케이션(850)으로 전송된다. 서버 어플리케이션(850)에서 생성된 네트워크 패킷은 서버측 암호화 수단(830)에 의해 암호화되어 전송되고, 전송된 패킷은 클라이언트측 복호화 수단(820)에 의해 복호화되어 클라이언트 어플리케이션(800)으로 전송된다. 이 경우 클라이언트와 서버 사이의 네트워크 구간에서 해커(860)가 전송되는 네트워크 패킷을 위, 변조하는 것이 불가능하다.
무결성 검증의 다른 한 실시 예는 도 9에 도시된 바와 같이 해시를 이용하는 것이다. 클라이언트 어플리케이션(900)이 생성한 네트워크 패킷을 서버 어플리케이션(930)으로 전송할 때, 클라이언트측 무결성정보 추가모듈(910)은 전송되는 네트워크 패킷을 이용해 계산된 무결성 검증 값을 네트워크 패킷에 첨부한 후 이를 서버측으로 전송한다. 만약 해커(940)가 전송과정에서 패킷을 위, 변조(941)했다면 서버측 무결성정보 확인모듈(921)에서 패킷을 이용해 계산한 무결성 검증 값과 클라이언트측 무결성정보 추가모듈(910)에서 계산되어 추가된 무결성 검증 값이 서로 다를 것이며, 이 경우 서버측 무결성정보 확인모듈(921)은 전송된 네트워크 패킷이 위, 변조된 것으로 판단하고 폐기한다. 만약, 값이 동일하다면 전송된 패킷을 서버 어플리케이션(930)으로 보낸다.
서버 어플리케이션(930)에서 클라이언트 어플리케이션(900)으로 패킷을 전송할 때 서버측 무결성정보 추가모듈(920)은 전송되는 네트워크 패킷을 이용해 계산된 무결성 검증 값을 네트워크 패킷에 첨부한 후 클라이언트측으로 전송한다. 만약 해커(940)가 전송과정에서 패킷을 위, 변조(941)했다면 클라이언트측 무결성정보 확인모듈(911)에서 패킷을 이용해 계산한 무결성 검증 값과 서버측 무결성정보 추가모듈(920)에서 계산되어 추가된 무결성 검증 값이 서로 다를 것이며, 이 경우 클라이언트측 무결성정보 확인모듈(911)은 전송된 네트워크 패킷이 위, 변조된 것으로 판단하고 폐기한다. 만약, 값이 동일하다면 전송된 패킷을 클라이언트 어플리케이션(900)으로 보낸다.
현재까지의 서버 어플리케이션 보안시스템은 전송되는 모든 패킷에 악의적인 내용이 있는지 여부를 OSI 7계층에서 7계층인 (응용계층)에서 확인해야하므로 많은 계산이 필요하였기 때문에 서버시스템의 성능저하를 가져왔으나 본 발명은 이와 같은 계산이 필요 없으므로 서버 시스템의 성능저하 없이 시스템을 보호할 수 있다.
제 1 실시예
본 발명의 한 실시예에 따르면, 클라이언트가 보호공간의 생성을 요청하면, 서버는 사용자 시스템에 보호공간을 생성한다. 보호공간의 생성은 운영체제 레벨 가상화 방식으로 가상머신 이미지를 이용하는 것이 바람직하다. 제공자는 상기 가상머신 이미지에 소정의 어플리케이션을 미리 설치할 수도 있다. 제공자는 상기 가상머신 이미지에 미리 권한을 설정할 수도 있다.
클라이언트 어플리케이션이 가상머신 내에서 실행되므로 이들 소프트웨어가 악성코드이거나 악성코드에 감염된 경우라도 사용자 시스템은 안전하게 보호되며, 사용자가 복잡한 설치과정 없이 쉽고 빠르고 편하게 서비스를 사용할 수 있다.
또한 보호공간은 실재머신과 독립적이므로, 실재머신이 악성코드에 감염된 경우라도 감염된 패킷이 서버로 전송되지 않는다. 따라서 서버가 안전하게 운용될 수 있다.
제 2 실시예
본 발명의 한 실시예에 따르면 제 1 실시예에 클라이언트 개체 검증을 추가로 실시한다. 클라이언트 개체 검증을 실시하여 안전한 게스트 운영체제 환경을 생성할 수 있고, 게스트 운영체제 내의 프로세스가 호스트 운영체제의 중요자원에 접근하는 것을 차단할 수 있으며 그 역도 가능하다. 또한, 호스트 운영체제에 설치된 악성코드나 해킹 프로그램 기타 해커의 조작으로부터 클라이언트 어플리케이션을 추가로 안전하게 보호할 수 있다.
제 3 실시예
본 발명의 한 실시예는 제 2 실시예에 무결성 검증을 추가로 실시한다. 무결성 검증을 실시하여 서버와 클라이언트에 대한 네트워크상에서의 공격을 차단할 수 있어서 가장 안전한 시스템을 제공할 수 있다. 무결성의 검증을 통해 서버는 오직 보호공간 내부에서 생성된 후 조작되지 않은 데이터만을 수신받는다.
제 4 실시예
본 발명의 한 실시예에 따르면, 사용자가 요청한 복수의 프로그램이 미리 설치된 가상머신 템플릿 이미지가 제공자로부터 사용자의 시스템으로 전송된다. 사용자의 요청은 하나 이상의 설치될 프로그램의 종류 및 각 프로그램의 소정의 설정사항을 미리 결정하는 것을 포함한다. 사용자가 요청한 하나 이상의 프로그램 및 각 설정사항들은 제공자가 미리 가상머신의 이미지에 설치해 놓고 사용자의 요청이 있을 때 이를 사용자의 시스템으로 전송한다.
사용자의 요청에 따른 각 사용자 맞춤식의 가상머신 템플릿 이미지는 서버에 별도로 저장해 놓을 수 있다. 따라서, 사용자가 시스템의 파괴나 운영체제의 고장이 발생하여 프로그램을 재설치 해야할 때, 저장해놓은 가상머신 템플릿 이미지를 서버로부터 재전송받는 것으로 시스템의 복구가 신속하기 이루어질 수 있다.
도 11에 도시된 바와 같이, 본 발명을 실시하기 위해서는 기본적으로 다음과 같은 '기본 루틴'을 실행한다.
1. 운영체제가 포함된 가상머신 템플릿 이미지를 실재머신의 운영제체로 매핑한다.
2. 상기 이미지를 이용하여 가상머신을 부팅한다.
여기서, 가상머신 템플릿 이미지는 운영체제 레벨 가상화 방식을 이용하여 분할된 가상머신의 이미지이다. 운영체제만을 가지는 이미지일 수도 있다.
부팅된 가상머신에서 이용자는 프로그램을 설치하고 필요한 사항들을 설정하여 자신이 원하는 PC 환경을 가상머신에 구현할 수 있고, 부팅된 가상머신은 다시 가상머신 템플릿 이미지로 '내보내기'가 가능하다.
내보내기된 이미지는 저장된 후 재사용 가능하고, 이동 디스크나 온라인 전송을 이용하여 다른 PC로 이동할 수 있고, 이동해간 PC에서 기본 루틴을 실행하여 가상머신으로 사용가능하므로 PC 환경의 이동성이 실현된다.
개인의 고유 PC 환경은 이동 디스크나 네트워크를 이용하여 가정, 학교, 회사, 외국 등에 있는 다른 PC로 그대로 이동할 수 있다.
한 대의 PC를 공유하는 사용자들은 기본 루틴을 실행하여 각자 고유의 가상머신 이미지를 생성하여 저장하고, PC를 이용할 때마다 그 이미지로 기본 루틴을 실행하는 것으로 공유성이 달성된다.
혹은 개인이 복수의 가상머신 이미지를 생성하여 용도에 따라 사용할 수 있다. 예를 들어, VM1에서는 보안이 필요한 인터넷 뱅킹이나 전자상거래에만 안전하게 이용할 수 있다. VM2에서는 회사의 기밀사항이 저장된 작업 환경으로 이용할 수 있다. VM3에서는 바이러스나 해킹에 완전히 노출시키면서 자유롭게 인터넷을 이용할 수 있다.
PC의 초기화를 빈번히 필요로 하는 사용자들은 기본 루틴을 실행한 후 자신의 초기 PC 환경을 설정하고, 내보내기하여 이미지를 저장해 둔다. 그 후 언제든 초기화가 필요하면 그 이미지를 불러 기본 루틴을 실행함으로써 초기화가 간단히 이루어진다. PC에 관한 지식이 부족한 사람들은 기본 루틴을 실행하는 방법, 이미지를 내보내기 가져오기 하는 방법만 숙지하면 언제든지 자신의 PC의 문제를 해결할 수 있다. 그 과정들은 단지 몇번의 마우스 클릭 동작으로 간단히 이루어진다.
본 발명은 소프트웨어의 새로운 유통방식을 제공한다. 소프트웨어의 배급자는 OS만이 설치된 가상머신 템플릿 이미지를 이용하여 기본 루틴을 실행한 후 배포할 소프트웨어를 설치하고 이미지를 내보내기하여 판매할 수 있다. 소비자는 그 이미지를 구입하여 자신의 PC에서 기본 루틴을 거치는 것만으로 것만으로 소프트웨어를 즉시 이용할 수 있다.
소비자는 자신에게 필요한 소프트웨어 목록과 각 제품의 설정사항을 주문서의 형태로 배급자에게 제공할 수도 있다. 배급자는 주문에 따라 가상머신 이미지를 생성하여 소비자에게 전달할 수 있다. 혹은 미리 자주 사용되는 소프트웨어들을 패키지화한 이미지를 판매할 수도 있다.
온라인 방식의 소프트웨어 유통도 가능하다. 서버는 주문을 수신하여 주문에 따른 가상머신 이미지를 생성하여 이를 전송할 수 있다. 생성된 이미지는 저장된 후 재이용 가능하다.
기업이나 관공서에서는 구성원에게 신속하게 PC 업무환경을 제공할 수 있다. 하나의 PC에서 기본 루틴을 실행한 후, 필요한 소프트웨어를 전부 설치하여 내보내기 한 이미지를 저장해둔다. 그 후 필요한 사원에게 그 이미지를 지급하여 그 사원의 PC에서 기본루틴을 실행하면 업무환경이 신속히 마련된다. 구성원의 그룹별로 필요한 소프트웨어의 종류가 다를 수 있으므로, 그룹별로 이미지를 만들어 놓을 수 있다.
인터넷 카페나 IT 교육 센터와 같이 소수의 인원이 다수의 PC를 관리해야 하는 곳에서도 본 발명이 이용될 수 있다. 각 PC에서는 미리 저장된 이미지로 기본 루틴을 실행한 가상머신 상에서 고객이 PC를 이용하도록 한다. 그러면 그 PC에 문제가 생길 경우 원래의 이미지를 이용하여 즉시 초기화할 수 있다. 또한 고객이 특정 소프트웨어의 설치를 요구하면 그 소프트웨어가 미리 설치된 가상머신 이미지를 이용하여 기본 루틴을 실행해 줌으로써 고객의 요구를 즉시 충족시킬 수 있다.
주어진 본 발명의 원리에 대한 설명에 많은 변화 및 변형이 고안될 것으로 이해된다. 그러므로 후기될 특허 청구 범위는 본 발명의 본질 및 범위를 벗어나지 않는 그러한 모든 변화 및 변형을 포함하는 것을 의도로 한다.
도 1은 종래의 네트워크 방화벽의 동작을 개략적으로 도시하는 도면이고,
도 2는 종래의 웹 어플리케이션 방화벽의 동작을 개략적으로 도시하는 도면이고,
도 3은 종래의 취약점 스캐너 및 소스코드 점검도구를 사용하여 어플리케이션을 개발하는 과정을 개략적으로 나타내는 도면이고,
도 4는 본 발명의 서버 시스템과 클라이언트 시스템의 바람직한 실시예를 도시하는 도면이고,
도 5는 본 발명의 시스템의 무결성 검증의 바람직한 실시예를 도시하는 도면이고,
도 6는 본원의 운영체제 레벨 가상화 방식의 바람직한 실시예를 도시하는 도면이고,
도 7은 본원의 바람직한 실시예에 따른 계층화된 데이터를 도시하는 도면이고,
도 8은 본 발명의 무결성 검증을 구현하는 바람직한 실시예를 도시하는 도면이고,
도 9은 본 발명의 무결성 검증을 구현하는 또 다른 바람직한 실시예를 도시하는 도면이고,
도 10은 본원의 바람직한 실시예에 따른 계층화된 커널의 동작을 도시하는 도면이고,
도 11는 본원의 바람직한 실시예에 따른 가상머신 이미지를 실행하는 루틴을 도시하는 도면이다.

Claims (16)

  1. 컴퓨터 네트워크상에 접속된 서버에 의해 실행되고, 상기 서버가 독립적이고 보호된 컴퓨팅 환경을 하나 이상의 클라이언트에게 제공하는 방법에 있어서,
    상기 클라이언트로의 상기 컴퓨팅 환경의 생성의 요청을 수신하는 단계, 및
    상기 요청에 응답하여, 상기 컴퓨터 네트워크를 통하여 상기 클라이언트에 가상머신을 생성하기 위한 데이터를 상기 클라이언트로 전송하는 단계를 포함하고,
    상기 가상머신을 생성하기 위한 데이터는 상기 클라이언트의 운영체제를 가상화하여 상기 클라이언트에 호스트 운영체제와 게스트 운영체제를 생성하고,
    상기 게스트 운영체제는 요청된 컴퓨팅 환경으로서 제공되고, 상기 게스트 운영체제는 상기 호스트 운영체제와 독립하여 상기 컴퓨터 네트워크 및 상기 서버에 접속가능하고,
    상기 게스트 운영체제는 가상머신 이미지를 이용하여 구동되고,
    상기 가상머신 이미지는 운영체제 이미지, 어플리케이션 프로그램 이미지, 사용자 데이터 이미지, 임시 데이터 이미지의 전부 또는 일부가 계층화되어 있는 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 방법.
  2. 제 1 항에 있어서,
    상기 가상머신 이미지는 스트리밍 방식으로 전송되는 것을 특징으로 하며,
    상기 스트리밍 방식은, 가상머신 내 쓰레드(thread)의 인스트럭션이 특정 파일 혹은 디렉터리에 대한 접근을 요청하면 가상 커널 실행부는 이 요청을 가상 디스크로 디스패치하며, 가상디스크는 요청된 파일 혹은 디렉터리의 디스크 이미지 파일에서의 위치 (offset)을 구한 후 해당 위치의 요청된 크기의 데이터를 상기 쓰레드로 전송하며,
    상기 디스크 이미지 파일은 호스트 운영체제의 고정식 저장장치, 원격서버 또는 이동식 저장장치에 존재하는 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 방법.
  3. 제 1 항에 있어서,
    상기 가상머신 이미지는 스트리밍 방식으로 전송되는 것을 특징으로 하며,
    상기 스트리밍 방식은, 가상머신 내 쓰레드의 인스트럭션이 특정 레제스트리 키 혹은 값에 대한 접근을 요청하면 가상 커널 실행부는 이를 처리하기 위해 레지스트리 이미지 파일에서 위치(offset)을 구한 후 해당 위치의 요청된 크기의 데이터를 상기 쓰레드로 전송하며,
    상기 레지스트리 이미지 파일은 호스트 운영체제의 고정식 저장장치, 원격서버 또는 이동식 저장장치에 존재하는 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 방법.
  4. 제 1 항에 있어서,
    상기 운영체제를 가상화하여 생성된 가상머신은 설정관리자, 데스크탑 환경, 어플리케이션 템플릿, 사용자데이터, 임시데이터의 전부 또는 일부를 포함하고,
    상기 데스크탑 환경은 바탕화면, 운영체제 테마, 윈도우 스타일, 배경음악, 시작메뉴, 바탕화면 아이콘의 전부 또는 일부를 포함하고,
    상기 어플리케이션 템플릿은 사전 설치된(pre-installed) 어플리케이션 이미지와 표준 플랫폼 제공자가 관리하는 공유라이브러리의 전부 또는 일부로 구성되는 것을 특징으로 하는 네트워크상에서의 컴퓨팅 환경 제공 방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020090001739A 2007-03-20 2009-01-09 클라이언트 및 서버의 보안방법 KR101152227B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020070027161 2007-03-20
KR20070027161 2007-03-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020080025797A Division KR20080085780A (ko) 2007-03-20 2008-03-20 운영체제의 가상화 방법

Related Child Applications (2)

Application Number Title Priority Date Filing Date
KR1020110082502A Division KR101179758B1 (ko) 2007-03-20 2011-08-19 클라이언트 및 서버의 보안방법
KR1020110082503A Division KR101179849B1 (ko) 2007-03-20 2011-08-19 가상머신 템플릿 이미지의 구동방법

Publications (2)

Publication Number Publication Date
KR20090018992A KR20090018992A (ko) 2009-02-24
KR101152227B1 true KR101152227B1 (ko) 2012-06-08

Family

ID=39766073

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020080025797A KR20080085780A (ko) 2007-03-20 2008-03-20 운영체제의 가상화 방법
KR1020090001739A KR101152227B1 (ko) 2007-03-20 2009-01-09 클라이언트 및 서버의 보안방법
KR1020110082503A KR101179849B1 (ko) 2007-03-20 2011-08-19 가상머신 템플릿 이미지의 구동방법
KR1020110082502A KR101179758B1 (ko) 2007-03-20 2011-08-19 클라이언트 및 서버의 보안방법
KR1020120046928A KR20120050956A (ko) 2007-03-20 2012-05-03 클라이언트 및 서버의 보안방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020080025797A KR20080085780A (ko) 2007-03-20 2008-03-20 운영체제의 가상화 방법

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020110082503A KR101179849B1 (ko) 2007-03-20 2011-08-19 가상머신 템플릿 이미지의 구동방법
KR1020110082502A KR101179758B1 (ko) 2007-03-20 2011-08-19 클라이언트 및 서버의 보안방법
KR1020120046928A KR20120050956A (ko) 2007-03-20 2012-05-03 클라이언트 및 서버의 보안방법

Country Status (6)

Country Link
US (1) US20100107163A1 (ko)
EP (1) EP2137629A4 (ko)
JP (1) JP2010522370A (ko)
KR (5) KR20080085780A (ko)
CN (1) CN101636722B (ko)
WO (1) WO2008115012A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671435B2 (en) 2010-09-30 2014-03-11 Sk Planet Co., Ltd. Method and system for visualizing an adaptive screen according to a terminal

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US9152582B2 (en) 2010-10-01 2015-10-06 Z124 Auto-configuration of a docked system in a multi-OS environment
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US9092190B2 (en) 2010-10-01 2015-07-28 Z124 Smartpad split screen
US8266616B1 (en) * 2006-05-11 2012-09-11 Hewlett-Packard Development Company, L.P. Computer system provisioning using templates
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8776038B2 (en) * 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8930512B2 (en) * 2008-08-21 2015-01-06 Red Hat, Inc. Providing remote software provisioning to machines
US8255350B2 (en) * 2008-12-31 2012-08-28 Sap Ag Instantiating a solution using preconfigured templates
US8407700B2 (en) * 2009-03-03 2013-03-26 Symantec Corporation Methods and systems for merging virtualization sublayers
US8402458B1 (en) * 2009-03-18 2013-03-19 Symantec Corporation Methods and systems for converting non-layered-software-application installations into layered installations
JP5671297B2 (ja) * 2009-11-16 2015-02-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Imsネットワークを介してマルチメディア・サービスを最適化するための方法及びシステム
KR101115136B1 (ko) * 2009-12-02 2012-02-24 주식회사 반딧불소프트웨어 보안 컴퓨팅 환경 시스템 및 그 구현 방법
WO2011081948A2 (en) * 2009-12-14 2011-07-07 Citrix Systems, Inc. Methods and systems for optimizing a process of archiving at least one block of a virtual disk image
KR101316677B1 (ko) * 2009-12-17 2013-10-10 한국전자통신연구원 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) * 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8250638B2 (en) * 2010-02-01 2012-08-21 Vmware, Inc. Maintaining the domain access of a virtual machine
US8464003B2 (en) * 2010-02-17 2013-06-11 Hitachi, Ltd. Method and apparatus to manage object based tier
KR101089157B1 (ko) * 2010-03-05 2011-12-02 주식회사 안철수연구소 클라이언트 가상화를 이용한 서버의 논리적 망분리 시스템 및 방법
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US20110258624A1 (en) * 2010-04-19 2011-10-20 Fuat Bahadir Virtual machine based secure operating system
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
WO2011142753A1 (en) 2010-05-12 2011-11-17 Hewlett-Packard Development Company, L.P. Methods, apparatus and articles of manufacture to update virtual machine templates
US8352415B2 (en) * 2010-06-15 2013-01-08 International Business Machines Corporation Converting images in virtual environments
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US8490088B2 (en) 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
US9405444B2 (en) 2010-10-01 2016-08-02 Z124 User interface with independent drawer control
EP2622490B1 (en) * 2010-10-01 2018-12-05 Z124 Cross-environment communication framework
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US8707301B2 (en) 2010-11-08 2014-04-22 Microsoft Corporation Insertion of management agents during machine deployment
CN103221921B (zh) 2010-11-23 2016-06-22 国际商业机器公司 利用流技术的软件映像的直接迁移
GB2499963B (en) 2010-12-09 2014-03-26 Ibm Computer-readable storage mediums for encrypting and decrypting a virtual disc
JP5911504B2 (ja) 2010-12-13 2016-05-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ストリーミング技術に基づくソフトウェア・イメージのアップグレード
JP5767565B2 (ja) 2010-12-14 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)
CN102025744A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导入和导出系统
US8839241B2 (en) * 2010-12-31 2014-09-16 Emc Corporation Virtual appliance deployment
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US8713088B2 (en) * 2011-03-27 2014-04-29 Hewlett-Packard Development Company, L.P. Identifying users of remote sessions
TW201250482A (en) * 2011-06-02 2012-12-16 Hon Hai Prec Ind Co Ltd System and method for updating virtual machine templates
JP5719244B2 (ja) 2011-06-29 2015-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 安全に管理された仮想マシンの実行環境を構築する方法、プログラムおよびコンピュータ装置
US20130007726A1 (en) * 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US8943564B2 (en) * 2011-07-21 2015-01-27 International Business Machines Corporation Virtual computer and service
CN102929884B (zh) 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
US9158561B2 (en) * 2011-08-18 2015-10-13 Vmware, Inc. Systems and methods for modifying an operating system for a virtual machine
US8924986B2 (en) * 2011-09-01 2014-12-30 American Megatrends, Inc. Methods, devices and computer program products for confluence of multiple operating systems
US20130076654A1 (en) 2011-09-27 2013-03-28 Imerj LLC Handset states and state diagrams: open, closed transitional and easel
US8924954B2 (en) * 2011-11-22 2014-12-30 Huawei Technologies Co., Ltd. Application software installation method and application software installation apparatus
KR101335326B1 (ko) * 2011-12-30 2013-12-02 (주)네오위즈게임즈 클라이언트 단말, 감시 서버, 및 감시 영역 변조 방지 방법
US10013269B2 (en) * 2012-02-22 2018-07-03 Vmware, Inc. Component framework for deploying virtual machines using service provisioning information
KR101320739B1 (ko) * 2012-02-22 2013-10-21 주식회사 팬택 휴대용 단말의 메모리 보안 시스템
US9052940B2 (en) * 2012-03-01 2015-06-09 International Business Machines Corporation System for customized virtual machine for a target hypervisor by copying image file from a library, and increase file and partition size prior to booting
GB2502288A (en) 2012-05-22 2013-11-27 Ibm Modifying the order of checking virtual machines for cached disc data
KR101493828B1 (ko) * 2012-05-31 2015-02-16 주식회사 케이티 가상머신 초기 설정 자동화 방법 및 가상머신 초기 설정 자동화 서비스 제공 방법
KR101302003B1 (ko) * 2012-07-19 2013-08-30 (주)하이큐브시스템 버추얼 오퍼레이팅 시스템
US9977698B2 (en) * 2012-07-31 2018-05-22 V3 Systems Holdings, Inc. Virtual machine migration into the cloud
US9262212B2 (en) * 2012-11-02 2016-02-16 The Boeing Company Systems and methods for migrating virtual machines
CN103902347B (zh) * 2012-12-24 2017-09-29 中国电信股份有限公司 虚拟机系统的部署方法与系统
JP6064630B2 (ja) * 2013-02-01 2017-01-25 コニカミノルタ株式会社 画像形成装置および画像形成装置制御方法
US10002001B1 (en) * 2013-02-19 2018-06-19 Amazon Technologies, Inc. Importing a virtual disk image into a compute service environment
CN103118129A (zh) * 2013-02-22 2013-05-22 浪潮电子信息产业股份有限公司 一种具有家用集成数字电视功能的云桌面系统
US9858097B2 (en) 2013-06-07 2018-01-02 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system
US9378038B2 (en) 2013-06-07 2016-06-28 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system
KR101479409B1 (ko) * 2013-07-05 2015-01-06 포항공과대학교 산학협력단 오프로드를 이용하는 워크로드의 무결성 보장 장치 및 방법
CN104572239A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 利用云平台制作模板的系统及方法
CN104572274A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 跨云点迁移系统及方法
KR102165601B1 (ko) 2013-10-24 2020-10-14 에스케이플래닛 주식회사 안전한 어플리케이션 실행을 위한 방법 및 이를 위한 장치
KR102211850B1 (ko) * 2013-12-11 2021-02-02 주식회사 케이티 클라우드 기반의 가상머신 이미지 서비스 제공 방법 및 시스템
KR102237566B1 (ko) * 2014-01-23 2021-04-07 한국전자통신연구원 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법
US10599457B2 (en) * 2014-02-25 2020-03-24 Red Hat, Inc. Importing and exporting virtual disk images
US9158909B2 (en) * 2014-03-04 2015-10-13 Amazon Technologies, Inc. Authentication of virtual machine images using digital certificates
US9430182B2 (en) 2014-03-06 2016-08-30 American Megatrends, Inc. Methods, systems and computer readable storage devices for presenting screen content
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US9639340B2 (en) * 2014-07-24 2017-05-02 Google Inc. System and method of loading virtual machines
US9519787B2 (en) * 2014-11-14 2016-12-13 Microsoft Technology Licensing, Llc Secure creation of encrypted virtual machines from encrypted templates
US9497187B2 (en) * 2014-12-13 2016-11-15 International Business Machines Corporation Controlling a discovery component, within a virtual environment, that sends authenticated data to a discovery engine outside the virtual environment
US9563454B2 (en) * 2015-02-03 2017-02-07 International Business Machines Corporation Using a mobile device to transfer virtual machine between computers while preserving session
KR102295960B1 (ko) * 2015-02-10 2021-09-01 한국전자통신연구원 가상화 기반의 보안 서비스 제공 장치 및 제공 방법
CN104699570B (zh) * 2015-03-30 2017-11-17 福州大学 一种虚拟桌面与物理桌面共用镜像的智能网络流桌面方法
US9146769B1 (en) 2015-04-02 2015-09-29 Shiva Shankar Systems and methods for copying a source machine to a target virtual machine
US11438278B2 (en) * 2015-06-29 2022-09-06 Vmware, Inc. Container-aware application dependency identification
KR101711409B1 (ko) * 2015-09-14 2017-03-03 주식회사 새올정보기술 다양한 os 환경을 기반으로 하는 어플리케이션 가상화 시스템 및 방법
US20170123996A1 (en) * 2015-11-02 2017-05-04 Microsoft Technology Licensing, Llc Direct Mapped Files in Virtual Address-Backed Virtual Machines
US9928062B2 (en) * 2016-03-04 2018-03-27 International Business Machines Corporation ISA-ported container images
CN107919033A (zh) * 2016-10-10 2018-04-17 北京七展国际数字科技有限公司 一种通过融合多媒体、微气候及生物景观的超感官生态体验系统
KR102019799B1 (ko) * 2016-11-09 2019-09-09 건국대학교 산학협력단 읽기 및 쓰기가 가능한 가상 디스크의 병합 마운팅을 통한 가상 클러스터 구축 방법 및 장치
WO2018216972A1 (ko) * 2017-05-23 2018-11-29 주식회사 엔젠소프트 컨테이너 기술 기반의 시스템 전환 장치 및 방법
KR101974974B1 (ko) * 2017-05-23 2019-05-07 주식회사 엔젠소프트 컨테이너 기술 기반의 시스템 전환 장치 및 방법
US10761869B2 (en) * 2017-06-26 2020-09-01 Wangsu Science & Technology Co., Ltd. Cloud platform construction method and cloud platform storing image files in storage backend cluster according to image file type
KR101967300B1 (ko) * 2017-10-27 2019-04-09 아토리서치(주) 가상머신 이미지 생성 자동화 방법 및 장치
US10430227B2 (en) 2018-01-09 2019-10-01 Microsoft Technology Licensing, Llc Fast instantiation of virtual machines in distributed computing systems
US10664323B2 (en) 2018-03-07 2020-05-26 Microsoft Technology Licensing, Llc Live migration of virtual machines in distributed computing systems
KR20200054040A (ko) 2018-11-09 2020-05-19 주식회사 엔젠소프트 모바일 os 가상화 기반의 보안 제공 장치 및 이를 위한 방법
KR102223141B1 (ko) * 2019-02-12 2021-03-04 성균관대학교산학협력단 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치
US10990673B1 (en) * 2019-05-24 2021-04-27 Trend Micro Inc. Protection of antivirus daemon in a computer
CN112783525A (zh) * 2021-01-22 2021-05-11 新华三大数据技术有限公司 一种守护进程升级方法及装置
KR102557385B1 (ko) * 2022-11-29 2023-07-20 쿤텍 주식회사 가상머신 시스템 및 이를 이용한 가상머신 프로비저닝 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060074949A1 (en) * 2004-10-06 2006-04-06 Takaaki Haruna Computer system with a terminal that permits offline work
US20070050770A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Method and apparatus for uniformly integrating operating system resources

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752005A (en) * 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6978439B2 (en) * 2002-01-10 2005-12-20 Microsoft Corporation Cross-platform software development with a software development peripheral
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
AU2003241292A1 (en) * 2002-04-11 2003-10-27 Linuxcare, Inc. Managing multiple virtual machines
US7673308B2 (en) * 2002-11-18 2010-03-02 Symantec Corporation Virtual OS computing environment
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
US7849462B2 (en) 2005-01-07 2010-12-07 Microsoft Corporation Image server
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US8074214B2 (en) * 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
US20070074191A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8738786B2 (en) * 2006-05-18 2014-05-27 Sanggyu Lee Method for protecting client and server

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060074949A1 (en) * 2004-10-06 2006-04-06 Takaaki Haruna Computer system with a terminal that permits offline work
JP2006107185A (ja) 2004-10-06 2006-04-20 Hitachi Ltd オフライン作業可能な端末を有する計算機システム
US20070050770A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Method and apparatus for uniformly integrating operating system resources

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671435B2 (en) 2010-09-30 2014-03-11 Sk Planet Co., Ltd. Method and system for visualizing an adaptive screen according to a terminal

Also Published As

Publication number Publication date
KR101179758B1 (ko) 2012-09-04
WO2008115012A1 (en) 2008-09-25
KR20120050956A (ko) 2012-05-21
KR101179849B1 (ko) 2012-09-04
KR20090018992A (ko) 2009-02-24
US20100107163A1 (en) 2010-04-29
CN101636722A (zh) 2010-01-27
KR20080085780A (ko) 2008-09-24
KR20110099206A (ko) 2011-09-07
CN101636722B (zh) 2013-01-30
EP2137629A1 (en) 2009-12-30
KR20110098889A (ko) 2011-09-02
EP2137629A4 (en) 2010-12-29
JP2010522370A (ja) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101152227B1 (ko) 클라이언트 및 서버의 보안방법
US10956184B2 (en) On-demand disposable virtual work system
US8738786B2 (en) Method for protecting client and server
US9934407B2 (en) Apparatus for and method of preventing unsecured data access
US9424430B2 (en) Method and system for defending security application in a user's computer
JP5736090B2 (ja) 仮想ゲストのメモリ保護の方法、システムおよびコンピュータプログラム
US9009836B1 (en) Security architecture for virtual machines
US8782351B2 (en) Protecting memory of a virtual guest
US20110202916A1 (en) Distribution control and tracking mechanism of virtual machine appliances
US20080127348A1 (en) Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware
US20070209076A1 (en) Automating software security restrictions on system resources
EP2569698A2 (en) Redirection of information from secure virtual machines to unsecure virtual machines
CN101443746A (zh) 用于保护客户端及服务器的方法
JP3630087B2 (ja) 自動データ処理装置
US20220229916A1 (en) Dynamic privilege management in a computer system
Scarfone et al. Sp 800-125. guide to security for full virtualization technologies
Wu et al. Towards a binary integrity system for windows
Banga et al. Trustworthy computing for the cloud-mobile era: A leap forward in systems architecture
Ramos Security challenges with virtualization
Griffiths et al. Fireguard-A secure browser with reduced forensic footprint
dos Santos Ramos Security challenges with virtualization
Butler et al. SwitchBlade: Policy-Driven Disk Segmentation

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E801 Decision on dismissal of amendment
E902 Notification of reason for refusal
A107 Divisional application of patent
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150306

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160512

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170517

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190319

Year of fee payment: 8