KR20090093930A - 유저 공간 가상화 시스템 - Google Patents

유저 공간 가상화 시스템

Info

Publication number
KR20090093930A
KR20090093930A KR1020097003837A KR20097003837A KR20090093930A KR 20090093930 A KR20090093930 A KR 20090093930A KR 1020097003837 A KR1020097003837 A KR 1020097003837A KR 20097003837 A KR20097003837 A KR 20097003837A KR 20090093930 A KR20090093930 A KR 20090093930A
Authority
KR
South Korea
Prior art keywords
application
security
sequence
command sequence
executing
Prior art date
Application number
KR1020097003837A
Other languages
English (en)
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
Priority claimed from JP2006201037A external-priority patent/JP2008027306A/ja
Application filed by 아플릭스 코포레이션 filed Critical 아플릭스 코포레이션
Publication of KR20090093930A publication Critical patent/KR20090093930A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

임베디드 시스템에서 레거시 어플리케이션들이 수정 없이 리소스를 공유하면서 시큐러티를 손상시키지 않도록 하는 유저 공간 가상화(USV) 프로그램이 제공된다. 컴퓨터 구현 USV 프로그램은 유저 공간에서, 어플리케이션의 네이티브 코드를 검색하는 단계 및 명령 시퀀스를 식별하는 단계를 포함하는 방법으로 특징지어질 수 있다. 또한, 명령 시퀀스를 식별하는 단계는 우선 처리를 행할 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 있는지를 판정하는 단계를 포함한다. 시큐러티 리스크를 발생시킬 가능성이 있으면, 시큐러티 매니저, 즉 프로세서에게 액티브 어플리케이션에 대한 실행 권한이 존재한다고 알린다. 액티브 어플리케이션이 처리에 대한 실행 권한을 가지고 있다고 확인되면, 프로세서에서 명령 시퀀스를 실행한다. 액티브 어플리케이션이 처리에 대한 실행 권한을 가지고 있지 않으면, 명령 시퀀스를 실행하지 않는다. 한편, 처리에 대한 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 없으면 프로세서에서 명령 시퀀스를 실행한다.

Description

유저 공간 가상화 시스템{USER SPACE VIRTUALIZATION SYSTEM}
관련 공보들의 교차 참조
본 공보는 2006년 11월 17일자로 제출된 미국 가출원 특허 공보 제60/859, 673호의 우선권을 주장하고, 또한 2006년 7월 24일자로 제출된 일본 공개 특허 공보 제2006-201037호의 우선권을 주장하는 미국 가출원 공보이며, 이들 모두는 전체가 참조로 여기에 포함되어 있다.
본 발명은 유저 공간 가상화 프로그램을 생성하기 위해 사용되는 에뮬레이션 및 동적 컴파일 기술에 관한 것이다.
임베디드 시스템에 이용되는 최신의 플랫폼은 시스템 리소스를 조정하고 보호하기 위한 리소스 매니지먼트 시스템을 요한다. 이러한 리소스 매니지먼트 시스템은 종종 시스템 리소스들을 조정하거나 보호하기 위해 어플리케이션 프로그래밍 인터페이스(API)를 제공한다. 그러나, 임베디드 시스템의 기능을 최대화하기 위해, 때로는 플랫폼의 리소스 매니지먼트 시스템을 이용하지 않는 레거시 어플리케이션이나 신뢰할 수 없는 어플리케이션을 실행시키는 것이 바람직하다. 따라서, 임베디드 시스템들에서는, 플랫폼의 시스템 리소스들을 제어하고 상기 어플리케이션들에 대한 시큐러티 폴리시를 확대하는 방법도 요구된다.
종래, 임베디드 제품 이외의 많은 기존의 오퍼레이팅 시스템에는 액세스 컨트롤 메카니즘이 통합되어 있다. 공지의 예로서는 LinuxTM에서의 유저 퍼미션 체크가 있다. 이 경우, 각 파일은 소유자인 유저의 ID 및 퍼미션(permission) 모드와 관련되고, 이는 특정 유저들이 파일에 액세스 가능한지 여부를 나타내는 기능을 한다. 또한, 특정 시스템 콜들을 제한하여 그들이 수퍼 유저 ID로부터만 호출되도록 할 수 있다. 또한, Linux의 "chroot" 시스템 콜은 파일 시스템의 일부가 특정 프로세스로부터 보여지는 것을 막을 수 있다.
기존의 리눅스에 있어서의 유저 ID와 퍼미션을 이용하는 방법의 문제점은, 적절하게 입도를 컨트롤할 수 없는 점에 있다. 예를 들면, 시큐러티 폴리시에 상관없이, 파일의 소유자라면 자신의 파일에 액세스해서 액세스 제한을 임의로 변경하는 것이 가능하다. 이 문제에 대하여, SELinux 서브 시스템에서는, 강제적 접근 제어(Mandatory Access Control)를 구현함으로써 대처하고 있다. 강제적 접근 제어에서는, 유저가 자신의 파일이어도 액세스 제한을 자유롭게 변경할 수 없다. 또한,루트 권한자와 같은 특권 유저에 대하여도 액세스를 제한할 수 있다. 그러나, SELinux에서는 Linux 커널이 배열 및 재컴파일될 필요가 있어, 설정 및 처리가 매우 복잡하다.
이에 대하여, 임베디드 오퍼레이팅 시스템의 대부분은, 액세스 컨트롤 기구를 탑재하지 않고 있다. 예를 들면, Symbian(버전 9.1 및 이전)이나 WinCE는 유저 ID의 개념을 포함하지 않는다. 유저 모드 프로세스에서도 대부분의 파일 시스템(커널로부터만 액세스할 수 있는 시스템 파일 제외)에 액세스할 수 있다. SymbianOS 버전 9.1에서는, OS 시큐러티를 강화하기 위한 변경이 커널에 대하여 이루어져 있다.
그러나,OS 커널에 이러한 OS 시큐러티를 구현하는 경우, 대폭적인 변경이 필요하다. 따라서, 이러한 변경으로부터 발생하는 버그의 리스크를 피할 수는 없다. 또한,커널 내의 액세스 컨트롤 기구를 수정할 때마다 버그 발생의 리스크가 생기므로, 결과적으로 비용이 높아질 것이고, 액세스 컨트롤 기구의 설계시 유연성이 감소될 것이다. 그러나, SELinux 또는 최신의 SymbianOS에 관계없이, 액세스 컨트롤 시스템 및 리소스 매니지먼트 시스템 모두는 OS 의존형으로 구현되고, 그러한 액세스 컨트롤 시스템은 OS의 종류에 관계없이 공통적으로 적용가능하지 않다
최근, VMWare나 Xen과 같은 가상화 기술은, 데스크탑과 서버 시스템의 리소스를 분할하기 위해 제안되고 있다. 이러한 기술은 액세스 컨트롤 기구를 실현할 수 있다. 그러나, 이러한 어프로치는 오퍼레이팅 시스템 이미지의 거의 전체를 복제해야 하기 때문에, 리소스(예를 들어, 메모리 등) 계산이 제한된 임베디드 플랫폼에는 이상적이지 않다.
따라서, 임베디드 시스템에서 레거시 어플리케이션들이 수정 없이 리소스를 공유하게 하는 방법 및 장치가 요구된다.
이하의 참고문헌을 포함하는 모든 특허, 공보, 공개 공보 및 본원에 언급된 다른 공보들 전체가 참고로 본원에 포함된다:
SELinux, Kerry Thompson, System Admin Magazine, March 2003, http://www.samag.com/documents/s=7835/sam0303a/0303a.htm
Platform Security - a Technical Overview, Version 1.2, Mark Shackman, Symbian Ltd, http://www.symbian.com/developer/techlib/papers/plat_sec_tech_overview/platform_security_a_technical_overview.pdf
QEMU Internals, Fabrice Bellard, http://fabrice.bellard.free.fr/qemu/qemu-tech.html
The Xen Virtual Machine Monitor, http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
VMWare, http://vmware.com/User-Mode Linu, http://user-mode-linux.sourceforge.net/
도 1은 본 발명의 실시예들에 따른 임베디드 시스템의 구성을 도시하는 개략도를 예시한다.
도 2는 본 발명의 실시예들에 따른 각 소프트웨어 모듈의 상호작용의 블록도를 예시한다.
도 3은 본 발명의 실시예들에 따른 각 모듈의 동작의 플로우차트를 예시한다.
도 4는 세이프 체크 명령의 생성에 대한 실시예를 예시한다.
도 5는 본 발명의 실시예들에 따라 세이프 체크 명령이 미리 생성된 후 명령 시퀀스의 실행을 예시한다.
도 6은 본 발명의 실시예들에 따른 시스템 콜을 호출하는 명령 시퀀스를 도시한다.
도 7은 본 발명의 실시예들에 따른 open() 시스템 콜의 취급을 예시한다.
도 8은 컴파일 전의 네이티브 명령 시퀀스의 예를 예시한다.
도 9는 본 발명의 실시예들에 따라 도 4에서 코드를 컴파일한 후 생성된 세이프 네이티브 명령을 예시한다.
도 10A는 다수 리소스 중재에 사용되는 실시예를 예시한다.
도 10B는 장치 진단에 사용되는 실시예를 예시한다.
도 10C는 홈 게이트웨이에 의한 세이프티 컨트롤에 사용되는 실시예를 예시한다.
도 11은 본 발명의 실시예들을 구현하기 위해 채용될 수 있는 컴퓨터 시스템을 예시한다.
본 발명의 실시예들은 예를 들어 셀폰 및 PDA에서 사용되는 유저 공간 가상화(USV)로서 임베디드 시스템에서 수정 없이 리소스를 공유한다. 본 발명의 실시예들은 또한,신용할 수 없고 악의 있는 코드를 포함하고 있는 가능성이 있는 어플리케이션을, 시스템의 시큐러티나 프라이버시에 영향을 주지 않고 실행시킬 수 있다. 또한 본 발명의 실시예들은, 에뮬레이션 및 동적 컴파일의 기술을 이용함으로써, 어플리케이션에 의한 리소스의 이용을 엄격하게 컨트롤하여,오리지널 네이티브 코드의 실행 속도에 가까운 고성능의 실행 속도를 가능하게 한다. 유저 공간 가상화는 임베디드 플랫폼에서의 리소스 조정 및 보호를 위한 혁신적인 방법이다. 그것은 유저 공간에서 구현되고 오퍼레이터/OEM 리소스 매니지먼트 폴리시에 따라 고객화되도록 유연성이 있다. 그것은 오퍼레이팅 시스템 지원을 거의 필요로 하지 않기 때문에 많은 대중적인 스마트폰 플랫폼에서 운영할 수 있다. 동시에, 그것은 동적 컴파일 기술을 이용하여 다른 기술(예를 들어, OS 커널 수정)과 동일한 레벨의 성능을 실현한다.
본 발명의 실시예들은 레거시 어플리케이션들이 임베디드 시스템에서 수정 없이 리소스를 공유할 수 있도록 유저 공간 가상화(USV) 프로그램을 제공한다. 컴퓨터 구현 USV 프로그램은 유저 공간에서, 어플리케이션의 네이티브 코드를 검색하는 단계 및 명령 시퀀스를 식별하는 단계를 포함하는 방법으로 특징지어질 수 있다. 명령 시퀀스를 식별하는 단계는 우선 처리를 행할 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 있는지를 판정하는 단계를 포함한다. 시큐러티 리스크를 발생시킬 가능성이 있으면, 시큐러티 매니저, 즉 프로세서에게 액티브 어플리케이션에 대한 실행 권한이 존재한다고 알린다. 액티브 어플리케이션이 처리에 대한 실행 권한을 가지고 있다고 확인되면, 프로세서에서 명령 시퀀스를 실행한다. 액티브 어플리케이션이 처리에 대한 실행 권한을 가지고 있지 않으면, 명령 시퀀스를 실행하지 않는다. 한편, 처리를 행할 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 없으면 프로세서에서 명령 시퀀스를 실행한다.
또한, 액티브 어플리케이션이 처리에 대한 실행 권한을 갖지 않는다면, 이하는 명령 시퀀스를 실행하지 않고, 액티브 어플리케이션이 처리에 대한 권한을 갖지 않는 경우 방법은 에러 실행을 포함할 수 있다. 부가적으로, 액티브 어플리케이션이 처리에 대한 권한을 갖지 않는다면, 이하는 명령 시퀀스를 실행하지 않고, 방법은 그 명령 시퀀스를 처리를 실행하는 명령 시퀀스로 대체하는 것을 실행하는 것을 더 포함할 수 있다. 실행 권한은 액티브 어플리케이션과 관련되고, 프로세서를 이용하여 대체된 명령 시퀀스를 실행하는 것과 연관된다. 만약 네이티브 코드가 시큐러티 매니저에 의해, 액티브 어플리케이션이 처리에 대한 권한을 갖는다고 확인된 경우 네이티브 코드가 어플리케이션의 실행 권한에 대해 확인된 구성을 허용하는 것이 가능할 수도 있다, 그 후 다음번에는 전술된 프로세서를 이용하여 명령 시퀀스를 실행하는 것은 시큐러티 매니저를 이용한 확인 없이 프로세서를 이용하여 직접 실행된다. 이 경우, 동일한 커맨드에 대하여 시큐러티 매니저를 이용한 여러 번의 권한 확인에 의해 야기되는 오버헤드를 감소시키는 것이 가능하다.
게다가, 다른 실시예들에서, 어플리케이션의 네이티브 코드의 시큐러티에 영향을 줄 수 있는 처리를 실행하기 위한 명령 시퀀스의 검출을 허용하는 것이 가능할 수 있다. 부가적으로, 검출된 명령 시퀀스의 네이티브 코드로부터 어플리케이션의 실행 권한을 확인한 후에 시큐러티에 영향을 줄 수 있는 처리를 실행하기 위한 명령 시퀀스의 네이티브 코드를 생성하는 것과 생성된 코드를 CPU를 이용하여 실행하는 것이 가능할 수 있다.
위에서 간략하게 기술된 것과 같이, 본 발명의 실시예들은 레거시 어플리케이션들이 수정 없이 리소스들을 공유하는 것 및 신용할 수 없고(untrusted) 악의적인 코드를 포함할 수 있는 코드를 포함할 수 있는 어플리케이션이 시스템 시큐러티 또는 프라이버시에 영향을 주지 않고 실행되는 것을 가능하게 한다.
부가적으로, 유저-공간 가상화 프로그램의 실시예들은 OS 커널을 수정하지 않고 구현될 수 있다. 특히, 이것은 시스템 관리에 어려움을 야기할 수 있는 커널에 대한 복잡한 어플리케이션들을 피할 수 있다. 또한, 어플리케이션들은 네이티브 코드의 형태로 실행된다. 그리하여, 오버헤드가 유저-공간 가상화 프로그램의 최소 레벨로 감소될 수 있다. 게다가, 본 발명의 유저-공간 가상화 프로그램은 네이티브 코드가 동일한 한, 운영 체제의 유형에 관계없이 사용될 수 있기 때문에, 그것은 운영 체제의 유형에 관계없이 동일한 CPU를 갖는 플랫폼들에서 이용될 수 있다. 수정이 필요할 수 있지만, 최소한의 양만 필요할 것이다. 예시적인 실시예들이 도면들을 참조하여 이하와 같이 기술된다.
도 1은 하드웨어 및 소프트웨어(100) 둘 다에 적용되는 임베디드 시스템의 구성의 개략도이다. 운영 체제(OS)(102)는 CPU(101) 및 시큐러티 매니저(105) 상에서 구현된다. 네이티브 명령 핸들러(106) 및 다이내믹 컴파일러(107)가 운영 체제(102)에 의해 이용된다. 어플리케이션(111)은 untrusted 영역(110)에 저장되고 시큐러티 매니저(105), 네이티브 명령 핸들러(106) 및 다이내믹 컴파일러(107)에 의해 가상화된 유저-공간에서 실행된다.
도 1을 참조하면, 기능 블록 OS(102), 시큐러티 매니저(105), 네이티브 명령 핸들러(106), 다이내믹 컴파일러(107) 및 어플리케이션(111)이 소프트웨어로서 구현된다. 결국, 이러한 기능 블록들은 그 대응 소프트웨어 프로그램들을 CPU(101)에 의해 실행함으로써 구현된다.
본 발명의 실시예들, 특히 CPU(101)는 ARM 프로세서 아키텍처 및 ARM 명령 세트들에 따라 기술되었다. 그러나 본 발명의 실시예들에 따른 CPU(101)는 ARM으로 제한되지 않는다. 모든 소프트웨어 프로그램은 CPU(101)에 접속된 메모리(103)(ROM/RAM)에 저장된다. 메모리(113)는 필요한 때 CPU(101)에 의해 액세스된다.
OS(102)는, 예를 들어, Linux, WinCE, 또는 Symbian과 같은 운영 체제에 포함될 수 있다. 본 발명의 실시예들은, OS(102)가 하기의 기능 또는 이것들과 실질적으로 등가적인 기능을 가지고 있다는 전제에 기초하고 있다. 다시 말해, 하기의 기능 또는 이것들과 실질적으로 등가적인 기능을 갖는 OS이면, 본원에 기재된 것 이외의 OS이여도 본 발명의 실시예들에 따라 이용할 수 있다.
유저 모드: OS(102)는 시큐러티 매니저(105), 네이티브 명령 핸들러(106), 다이내믹 컴파일러(107) 및 어플리케이션(111)의 대응하는 프로그램들을 유저 모드에서 동작시킬 수 있어, 이 프로그램들이 MMU 레지스터 변경 명령과 같은 특권적인 명령들을 직접 실행할 수 없도록 한다.
메모리 보호: 어플리케이션(111)의 메모리 공간은, 커널과 같이, 다른 어플리케이션들로부터 분리된다.
I/O 보호: I/O 처리는 슈퍼바이저 모드로 실행되어야 하고, 어플리케이션(111)에 의해 직접 실행될 수 없다(유저 모드의 메모리 맵핑(memory-mapped) I/O는 제외한다).
명확한 시스템 콜 인터페이스(well-defined system call interface): OS(102)는 시스템 콜들을 발행하기 위해 어플리케이션에 대해 명확한 시스템 콜 인터페이스를 이용해야 한다. ARM 아키텍처에서는, 통상 시스템 콜은 SWI 명령에 의해 호출되거나, 또는 특정하게 맵핑되어 있지 않은 어드레스에의 브랜치(branch) 명령에 의해 호출된다.
페이지 보호 수정 API: OS(102)는 유저 모드의 어플리케이션에 대하여, 액세스가 허용된 메모리 페이지들의 보호 모드를 수정하기 위한 API를 제공해야 한다.
전술한 OS(102)의 기능들에 의해, 유저 모드의 어플리케이션들이 유일하게 시스템 콜들을 통해 유저 공간의 밖과 서로 작용할 수 있다.
시스템 콜들을 검출해서 관리하는 것에 의해, 어플리케이션들에 의한 시스템 리소스의 이용을 정확하게 모니터 및 컨트롤할 수 있다. 이것은, 시스템 시큐러티 및 프라이버시가 가능한 위험들에 노출되는 것을 방지할 수 있다.
시스템 콜을 검출해서 검출된 시스템 콜을 관리하는 하나의 방법은, OS 커널의 소스 코드를 수정하는 것에 의해 시스템 콜들을 "훅(hook)" 및 제어하여, 시스템 콜들을 한정하고(qualify) 실행 전에 그 시스템 콜들의 시큐리티를 검사하는 것이다. 그러나, 내장 시스템들에서 시스템 콜들을 "훅" 하면, 실행 속도 또는 응답 속도와 같은 어플리케이션의 성능이 현저하게 저하할 수 있다. 또한, 훅 기구(hooking mechanism)를 도입하기 위해서 커널을 수정하면, 시스템에 버그가 발생할 리스크가 증가한다.
따라서, 본 발명의 실시예들은, 전술한 바와 같이, 시스템 콜 훅을 이용하는 것과 달리, 유저 공간 가상화(User-Space Virtualization: USV)에 의해, 시스템의 시큐러티를 실현한다. USV의 중심이 되는 아이디어는, "네이티브 에뮬레이션(native emulation)"이다. USV를 적용했을 경우도, 네이티브 명령과 컴파일된 어플리케이션의 프로그램을 실행한다는 점에서 기존의 시스템과 동일하다. 그러나, 이 경우에, 도 1을 참조하면, 어플리케이션(111)의 네이티브 명령은, CPU(101)에 의해 직접 실행되는 대신에 USV에 의해 가상화된 시스템에서 실행되는 것이며, 이것이 기존의 시스템들과 크게 상이하다.
또한, USV는 내장 시스템의 가상화 외에, 이하의 2개의 중요한 기능, 즉, 안전성을 검증하고, 리소스 공유를 실현하기 위해서 시스템 콜을 포착하는 기능, 및 핫 스폿(hot spots)을 동적으로 컴파일하여 CPU에 의해 직접 실행할 수 있게 하는 기능을 갖는다.
이하, 본 발명의 USV의 실시예들로서 각 소프트웨어 기능에 대해서 설명한다. 일부 실시예들에서, 모든 소프트웨어는 유저 공간 내에서 실행된다.
도 2를 참조하면, 네이티브 명령 핸들러(106)는, 유저 공간 내에서 어플리케이션(111)을 실행할 때에 이용된다. 네이티브 명령 핸들러(106)는 어플리케이션(111)의 네이티브 명령 시퀀스들을 검색 또는 판독한다. 실행될 때 시큐러티에 영향을 줄 수 있는 명령 시퀀스를 검출했을 경우, 다이내믹 컴파일러(107)는 그 명령 시퀀스를 컴파일하고, CPU(101)는 컴파일된 코드를 실행한다.
한편, 시큐러티에 영향을 줄 수 있는 것으로 검출되지 않은 다른 네이티브 명령 시퀀스는 CPU(101)에 의해 직접 실행될 것이다. 예를 들어, 시큐러티에 영향을 줄 수 있는 처리를 행하는 명령 시퀀스는, 시스템 콜을 행하기 위한 SWI 명령, 또는 도 6에 도시한 코드와 같은, 시스템 콜을 행하는 코드를 포함하는 명령 시퀀스일 수 있다.
도 2 및 도 4를 참조하면, 다이내믹 컴파일러(107)는, 네이티브 명령 핸들러(106)가 검출한 402의 명령 시퀀스를 세이프 네이티브 명령(safe native instruction)으로 컴파일한다. 여기에서는 "컴파일(compiling)"이라고 칭하고 있지만, 실제의 처리는 CPU(101)의 네이티브 명령 시퀀스로부터, 시큐러티 검사 처리가 부가된 동일한 네이티브 명령의 다른 시퀀스를 생성하고 있다(408).
도 2, 도 8, 및 도 9를 참조하면, 본 발명의 실시예들에 따른, 다이내믹 컴파일러(107)에 의한 컴파일의 영향이 설명된다. 도 8은 컴파일 전의 코드를 나타내고 있다. 도 9는 코드들은 원래의 워드들을 조립하기 때문에 기억하기가 용이한 프로그래밍 코드, 니모닉 코드(mnemonic code)로 컴파일 후의 세이프 네이티브 명령을 각각 나타내고 있다. 도 9의 "intercept_open()" 명령은, "system call open()"을 포착하고, 시큐러티 검사를 실행하는 루틴을 호출하는 가상적인 니모닉이다. 시큐러티 검사가 만족스러운 결과를 가져온 경우, "system call open()"이 호출된다.
이 실시예가 나타내는 바와 같이, 세이프 네이티브 명령은, 시큐러티를 검사한 후에 컴파일 전의 코드에 상당하는 처리를 실행하기 위해 컴파일전의 코드로부터 재기입된다. 도 8 및 도 9의 코드들을 비교함으로써, 다이내믹 컴파일러(107)는 시스템 콜을 호출할 명령 시퀀스를, 시스템 콜을 호출하기 전에 시큐러티를 검사하는 명령 시퀀스로 컴파일한다는 것을 알 수 있다. 따라서, 시큐러티에 영향을 줄 수 있는 명령 시퀀스는 실행 전에 반드시 시큐러티 검사를 받게 된다. 이러한 컴파일에 의해 생성된 "세이프 네이티브 명령"은, 어플리케이션(111)의 원래의 코드가 저장되어 있는 메모리와는 별개의 지정된 메모리 영역에 저장된다.
고급 언어의 소스 코드로부터 네이티브 코드를 생성하는 통상의 컴파일러와 달리, 다이내믹 컴파일러(107)는 단순한 처리를 핸들링하고, 복잡한 최적화 처리를 실시하지 않는다.
이 때문에, 다이내믹 컴파일러(107)의 복잡성은 통상의 컴파일러보다도 적고, 컴파일하는 것에 의해 시스템에 미칠 수 있는 오버헤드를 줄일 수 있다. 따라서, 리소스가 제한되는 내장 시스템들에 있어서도 충분히 이용하는 것이 가능하다.
네이티브 명령 핸들러(106)가 어플리케이션(111)의 실행 중에 세이프하지 않은 명령 시퀀스를 검출하면, 어플리케이션(111)은 중단되고, 다이내믹 컴파일러(107)는 명령 시퀀스를 컴파일해서 세이프 네이티브 명령 시퀀스를 생성한다. 생성된 세이프 네이티브 명령 시퀀스는 지정된 메모리 어드레스에 저장된다. 후속하여, CPU(101)는 생성된 세이프 네이티브 명령 시퀀스를 실행하고, 어플리케이션(111)의 실행이 재개된다. 따라서, 생성된 세이프 네이티브 명령 시퀀스의 실행이 끝나면(502), 어플리케이션(111)의 네이티브 명령 시퀀스는 후속 명령 시퀀스가 네이티브 명령 핸들러(106)에 의해 검사되는 동안 506에서 CPU(101)에 의해 실행된다.
시큐러티 매니저(105)는, 전술한 바와 같이, 어플리케이션(111)에 의해 시큐러티에 영향을 주는 명령 시퀀스의 실행의 가능성을 판단하기 위해 Untrusted 공간(110)에 저장된 어플리케이션(111)의 명령 시퀀스들의 정보를 포함하는 시큐러티 컨피규레이션 파일을 갖는다. 시큐러티 컨피규레이션 파일에 포함된 정보는 명령 시퀀스의 실행이 인가 또는 허가되는지를 판단하는 것을 도울 수 있다. 시큐러티 컨피규레이션 파일의 형식은 예를 들면 XML 형식일 수 있다. 그러나, 다른 형식이 이용될 수 있다. 또한, 시큐러티 컨피규레이션 파일은, 어플리케이션마다에 액세스할 수 있는 어드레스 범위, 파일 종별, 또는 하드웨어 리소스에 관한 정보를 포함하도록 구성될 수 있다. 또한, 시큐러티 컨피규레이션 파일은 특정된 어드레스 범위, 파일 종별, 또는 하드웨어 리소스에 따라서 액세스가 허가되는지 여부를 판단하는 데 이용될 수 있다.
이하, 본 발명의 실시예에 따른 유저 공간 가상화 기술에 의해, 유저 모드에서 실행되는 네이티브 명령 핸들러(106) 및 다이내믹 컴파일러(107)의 동작을 설명한다. 특히, 본 발명의 실시예에 따른 유저-공간 가상화를 통해 네이티브 명령 핸들러(106) 및 다이내믹 컴파일러(107)가 시큐리티 매니저(105)와 상호작용하여 어플리케이션(111)을 실행할 때의 동작에 대해 설명한다. 도 2는 도 1에 나타낸 소프트웨어 모듈들의 상호작용을 나타낸다. 도 3은 각 소프트웨어 모듈에 의해 동작이 행해지는 것을 나타내는 흐름도를 나타낸다.
우선, 네이티브 명령 핸들러(106)가, 유저 공간 내에 로드된 어플리케이션(111)의 프로그램 코드로부터 실행되어야 할 네이티브 명령을 검색한다(ST101). 네이티브 명령은 개별적으로 또는 총괄적으로 취출될 수 있다.
다음, 네이티브 명령 핸들러(106)는, 실행될 때, 검색된 네이티브 명령이 시큐리티에 영향을 줄 수 있는 처리를 행할지의 여부에 대해 판단한다(ST102). 도 4를 참조하면, 컴파일러(402)는 가능한 시큐리티 리스크(404)를 나타낼 수 있는 네이티브 명령 내의 패턴들을 검출할 것이다. 이 판단은, 실행될 때, 시큐리티에 영향을 줄 수 있는 처리를 행하는 것으로서 시큐리티 컨피규레이션 파일 내에 등록된 네이티브 명령이나 그 시퀀스가, 검색된 네이티브 명령에 포함되어 있는지 여부에 기초하여 행해진다.
ST 102에서, 취출된 네이티브 명령이 시큐리티에 영향을 줄 수 있는 어떠한 처리도 행하지 않는 것으로 판단된 경우, 네이티브 명령 핸들러(106)에 의해 검색된 네이티브 명령은 그대로 CPU(101)에 의해 직접 실행된다(ST103).
한편, ST102에서, 검색된 네이티브 명령이 시큐리티에 영향을 줄 수 있는 처리를 행하는 것으로 판단된 경우, 다이내믹 컴파일러(107)는 검색된 네이티브 명령을 컴파일하여, 실행될 때, 컴파일러 전의 네이티브 명령에 상당하는 처리를 실행하는 세이프 네이티브 명령(109)을 생성하고, 이를 지정된 어드레스에 저장한다(ST104).
다음, ST104에서 생성된 세이프 네이티브 명령(109)이 CPU(101)에 의해 실행된다. 그 결과, 우선, 어플리케이션(111)이 시큐리티에 영향을 줄 수 있는 처리를 실행하는 권한을 갖고 있는지를 체크하기 위해, 시큐리티 매니저(105)에 대해 질의가 행해진다. 이 질의에 응답하여, 시큐리티 매니저(105)는 어플리케이션(111)에 대해 허가 또는 허가되지 않은 명령 시퀀스의 정보를 기술한 시큐리티 컨피규레이션 파일(108)을 참조한다(ST106).
ST106에서, 시큐리티 매니저(105)가, 어플리케이션(111)이 실행 권한을 갖고 있는 것으로 판단된 경우, ST101에서 어플리케이션(111)으로부터 검색된 네이티브 명령에 상당하는 코드가 CPU(101)에 의해 실행된다(ST107). 도 2를 참조하면, OS 커널(103)에 시스템 콜이 발행되고, 커널 공간 내에서 리소스(104)로 액세스된다. 한편, 어플리케이션(111)이 권한을 갖고 있지 않는 것으로 판단된 경우에는, 검색된 네이티브 명령에 상당하는 처리는 행해지지 않는다(ST108). 또한, 도 2는 시스템 콜이 거부되는 경우를 예시하고 있다.
전술한 바와 같이, 어플리케이션(111)으로부터 검색된 네이티브 명령을 실행한 후, 다음에 실행해야 할 네이티브 명령은 ST101로부터의 처리를 반복함으로써 실행된다. 또한, ST108에서 검색된 네이티브 명령을 실행하지 않은 경우에는, 권한 위반에 의한 에러가 발생한 것을 어플리케이션(111)에 통지한 후, 어플리케이션(111)의 실행을 취소할 수 있다. 다른 경우에는, 가능하다면, 어플리케이션(111)이 권한을 갖고 있는 대체의 처리에 의해, 어플리케이션(111)의 실행을 계속할 수 있다.
전술한 처리는, 네이티브 명령으로 이루어지는 어플리케이션(111)의 프로그램에 대해 순차적인 시큐리티의 체크를 허용하여, 레거시 어플리케이션에 대해서도 수정 없이 리소스를 공유가능하게 한다. 또한, 신용할 수 없고 악의가 있는 코드를 포함할 가능성이 있는 어플리케이션도, 시스템의 시큐리티나 프라이버시에 영향을 주지 않고 실행될 수 있다.
또한, 순차적인 시큐리티 체크는, 실행 전에 배치(batch) 시큐리티 체크에 비해, 가능성 있는 오버헤드로 하여금 보다 효율적으로 분산되게 할 수 있다. 또한, 실제로 실행되는 코드만이 시큐리티 체크의 대상으로 되기 때문에, 시큐리티 체크에 의한 시스템 부하를 최소한으로 감소할 수 있다.
또한, 본 발명의 실시예는 버그들이 도입될 리스크를 감소시키는, OS 커널을 변경하지 않고 구현될 수 있다. 또한, 어플리케이션(111)이 네이티브 코드의 형태로 실행되기 때문에, 어플리케이션 실행의 성능은 네이티브 명령 핸들러(106) 또는 다이내믹 컴파일러(107)에 의해 야기되는 시스템 로드에 관계없이 충분히 우수하다. 또한, 본 발명의 기본 아키텍처는 오퍼레이팅 시스템 또는 CPU와는 독립적이므로, 본 발명의 실시예는 다양한 플랫폼에 적용될 수 있다.
본 발명의 바람직한 실시예의 전술한 설명은 예시 및 설명의 목적으로 제안되었다. 본 발명을 개시된 바와 같은 형태로 제한하거나 한정하려고 의도된 것은 아니다. 전술한 교시의 관점에서 다양한 변경 및 변형이 가능하다. 예를 들어, 네이티브 핸들러(106)에 의한 네이티브 명령들을 해석하고 실행하고, 다이내믹 컴파일러를 생략할 수도 있다. 또한, 다이내믹 컴파일러(107)에 의해 생성된 세이프 네이티브 명령(109)의 캐칭 및 재사용도 가능하다. 또한, 시큐리티 체크가 적어도 한번 안전하게 수행되는 경우, 시큐리티 체크를 수행하라는 명령의, 삭제/단순화 등을 부가하는 변경을 할 수도 있다. 변형된 세이프 네이티브 명령(109)은 저장될 수 있다. 대안적으로, 어플리케이션(111)의 네이티브 명령은 CPU(101)에 의해 그대로 실행될 수도 있다.
또한, 어플리케이션에 의한 리소스 기능의 이용을 제어하는 것은 어플리케이션 기능의 권한을 확인하는 것 외에 시큐리티 매니저(105)에 제공될 수도 있다. 따라서, 조립된 시스템에서의 리소스 공유에 의한 문제의 조정이 되는 경우(즉, 복수의 어플리케이션이 동일한 리소스를 동시에 사용하는 경우), 각 어플리케이션의 목적 및 시스템의 설정에 따라 리소스의 사용을 할당하는 권한을 실현할 수 있다.
또한, 도 10A에 도시된 바와 같이, 어플리케이션 권한을 체크하는 기능 외에도, 시큐리티 매니저(105)에서 어플리케이션의 리소스 사용을 제어하는 기능을 설정하는 것이 가능하다. 이는, 몇몇 어플리케이션이 동일한 리소스를 동시에 사용하려고 할 때에, 어플리케이션 성질이나 시스템 설정에 따라 리소스의 유저 권한의 할당을 가능하게 한다. 특히, 조립된 시스템 내의 리소스 공유에서는 소위 리소스 조정이 문제가 된다. 멀티내스크 방법을 이용함으로써, 복잡한 조립된 시스템을 효율적으로 개발하여 일부 어플리케이션을 실행할 수 있다. 도 10B를 참조하면, 장치 진단 시스템을 설정할 수 있으며, 오퍼레이터는 어떠한 유저 조작이 시스템 충돌을 실제로 발생시켰는지를 분석할 수 있다. 로깅(logging)은 유저로 하여금 어느 시스템 콜 명령이 전달되어 커널에 데미지를 일으켰는지를 발견하게 할 수 있다. 또한, 도 10C를 참조하면, 설정을 수신할 수 있는, 예컨대 써모스탯(thermostat)(1008), 마이크로웨이브(1010), 스마트 키친 시스템(1012), 샤워(1014) 등의 기기용 홈 게이트웨이에 의해 안전 제어 시스템을 구현할 수 있다.
당업자라면, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 적절한 조합을 이용하여, 다양한 실시예의 동작들이 구현될 수 있다는 것을 인식할 것이다. 예를 들어, 소프트웨어, 펌웨어, 또는 하드-와이어 로직의 제어 하에서, 프로세서 또는 그 외 디지털 회로를 이용하여 일부 처리를 실행할 수 있다. (본 명세서에서 "로직"이라는 용어는, 인용된 기능들의 실행을 당업자라면 인식할 수 있는, 고정된 하드웨어, 프로그램 가능한 로직 및/또는 적절한 이들의 조합). 소프트웨어 및 펌웨어는 컴퓨터 판독가능한 매체에 저장될 수 있다. 당업자에게 공지되어 있는 바와 같이, 아날로그 회로를 이용하여 일부 다른 처리를 실행할 수도 있다. 또한, 본 발명의 실시예에는 통신 부품 외에, 메모리 또는 다른 저장 매체가 이용될 수도 있다.
도 11은 본 발명의 실시예들에서 처리 기능을 수행하는데 이용될 수 있는 통상적인 컴퓨팅 시스템(1100)을 도시한다. 관련 기술 분야의 숙련자들은 또한 다른 컴퓨팅 시스템들 또는 아키텍쳐들을 이용하여 본 발명을 어떻게 구현하는지 인식할 것이다. 컴퓨팅 시스템(1100)은, 예를 들어, 데스크탑, 랩탑 또는 노트북 컴퓨터, 핸드헬드 연산 디바이스(PDA, 휴대폰, 팜탑 등), 메인프레임, 수퍼컴퓨터, 서버, 클라이언트 또는 임의의 다른 종류의 임베디드 시스템을 나타내거나 혹은 주어진 어플리케이션이나 환경에서 원하는 바에 따라 또는 적절하게 사용될 수 있는 범용 연산 디바이스이다. 컴퓨팅 시스템(1100)은, 프로세서(1104)와 같은 하나 이상의 프로세서를 포함할 수 있고, 그것은 CPU일 수 있다. 프로세서(1104)는, 예를 들어, 마이크로 프로세서, 컨트롤러 또는 기타 제어 로직과 같은 범용의 또는 특정 목적의 처리 엔진을 사용하여 구현될 수 있다. 본 예에서, 프로세서(1104)는 버스(1102) 또는 기타 통신 매체에 접속된다.
컴퓨팅 시스템(1100)은 또한, 정보 및 프로세서(1104)에 의해 실행될 명령들을 저장하기 위한, 바람직하게는 RAM(random access memory)인 메인 메모리(1108)를 포함할 수 있다. 메인 메모리(1108)는 또한 프로세서(1104)에 의해 실행될 명령들의 실행 중에 임시 변수들 및 기타 중간 정보를 저장하기 위해 사용될 수도 있다. 컴퓨팅 시스템(1100)은 마찬가지로, 정적 정보 및 프로세서(1104)를 위한 명령들을 저장하기 위한 버스(1102)에 연결된 ROM(read only memory) 또는 기타 정적 스토리지 디바이스를 포함할 수 있다.
컴퓨팅 시스템(1100)은 정보 저장 메커니즘(1110)을 또한 포함할 수 있는데, 이것은 예를 들어 미디어 드라이브(1112) 및 이동식 스토리지 인터페이스(1120)를 포함할 수 있다. 미디어 드라이브(1112)는, 하드 디스크 드라이브, 플로피 디스크 드라이브, 자기 테이프 드라이브, 광 디스크 드라이브, CD 또는 DVD 드라이브(R 또는 RW) 등의 고정식 또는 이동식 스토리지 미디어를 지원하기 위한 드라이브 또는 기타 메커니즘을 포함할 수 있다. 스토리지 미디어(1118)는, 예를 들어, 하드 디스크, 플로피 디스크, 자기 테이프, 광 디스크, CD 또는 DVD, 또는 미디어 드라이브(1114)에 의해 판독되고 미디어 드라이브(1114)에 기입될 수 있는 기타 고정식 또는 이동식 매체를 포함할 수 있다. 이러한 예들이 예시하는 바와 같이, 스토리지 미디어(1118)는, 특정 컴퓨터 소프트웨어 또는 데이터를 그 안에 저장한 컴퓨터 판독가능한 스토리지 매체를 포함할 수 있다.
대안적인 실시예들에서, 정보 저장 메커니즘(1110)은 컴퓨터 프로그램들 또는 기타 명령들 또는 데이터가 컴퓨팅 시스템(1100)에 로딩되게 하는 그 밖의 유사한 수단들을 포함할 수 있다. 이러한 수단들은, 예를 들어, 이동식 메모리(예를 들어, 플래시 메모리 및 기타 이동식 메모리 모듈), 메모리 슬롯 및 프로그램 카트리지와 카트리지 인터페이스 등의 스토리지 유닛(1122)과 인터페이스(1120), 및 소프트웨어와 데이터가 이동식 스토리지 유닛(1118)으로부터 컴퓨팅 시스템(1100)으로 전송될 수 있게 하는 그 밖의 이동식 스토리지 유닛들(1122)과 인터페이스들(1120)을 포함할 수 있다.
컴퓨팅 시스템(1100)은 또한 통신 인터페이스(1124)를 포함할 수 있다. 통신 인터페이스(1124)는 소프트웨어와 데이터가 컴퓨팅 시스템(1100) 및 외부 디바이스들 사이에서 전송될 수 있게 하는데 이용된다. 통신 인터페이스(1124)의 예들은 모뎀, 네트워크 인터페이스(이더넷 또는 기타 NIC 카드 등), 통신 포트(예를 들어, USB 포트 등), PCMCIA 슬롯 및 카드 등을 포함할 수 있다. 통신 인터페이스(1124)를 통해 전송된 소프트웨어 및 데이터는, 통신 인터페이스(1124)에 의해 수신될 수 있는 전자, 전자기, 광, 또는 기타의 신호일 수 있는 신호 형태이다. 이 신호들은 채널(1128)을 통해 통신 인터페이스(1124)에 제공된다. 이 채널(1128)은 신호들을 나를 수 있고, 무선 매체, 유선 또는 케이블, 광 섬유, 또는 기타 통신 매체를 사용하여 구현될 수 있다. 채널의 일부 예들은, 전화선, 셀룰러폰 링크, RF 링크, 네트워크 인터페이스, 로컬 또는 와이드 영역 네트워크, 및 기타 통신 채널들을 포함한다.
본 문헌에서, "컴퓨터 프로그램 제품" 및 "컴퓨터 판독가능한 매체"라는 용어들은, 예를 들어 메모리(1108), 스토리지 디바이스(1118), 스토리지 유닛(1122) 또는 채널(1128) 상의 신호(들) 등의 미디어를 일반적으로 지칭하는데 사용될 수 있다. 컴퓨터 판독가능한 매체의 이러한 형태들 및 기타 형태들은 프로세서(1104)가 실행할 하나 이상의 명령들의 하나 이상의 시퀀스를 제공하는데 포함될 수 있다. "컴퓨터 프로그램 코드"(컴퓨터 프로그램들의 형태로서 그룹화될 수 있거나 다른 그룹일 수 있음)라고 일반적으로 지칭되는 이러한 명령들은, 실행될 때, 컴퓨팅 시스템(1100)이 본 발명의 실시예들의 특징들 또는 기능들을 수행하게 할 수 있다. 이러한 명령들은 컴퓨팅 시스템(1100)에서 실행하기 위해 어플리케이션들에 포함될 수 있다.
구성요소들이 소프트웨어를 이용해 구현되는 실시예에서, 소프트웨어는 컴퓨터 판독가능한 매체에 저장되고, 예를 들어, 이동식 스토리지 드라이브(1114), 드라이브(1112) 또는 통신 인터페이스(1124)를 이용하여 컴퓨팅 시스템(1100)에 로딩될 수 있다. 컨트롤 로직(본 예에서는, 소프트웨어 명령들 또는 컴퓨터 프로그램 코드)은, 프로세서(1104)에 의해 실행될 때, 프로세서(1104)가 본 명세서에 기술된 바와 같은 본 발명의 기능들을 수행하게 한다.
명확화를 위해, 상기의 설명이 상이한 기능 유닛들 및 프로세서들을 참조하여 본 발명의 실시예들을 설명하였음이 이해될 것이다. 그러나, 상이한 기능 유닛들, 프로세서들 또는 도메인들 간의 임의의 적절한 기능 분배가 본 발명을 손상시키지 않으면서 이용될 수 있다는 것이 이해될 것이다. 예를 들어, 분리된 프로세서들 또는 컨트롤러들에 의해 수행되도록 예시된 기능들은 동일한 프로세서 또는 컨트롤러에 의해 수행될 수 있다. 따라서, 특정 기능 유닛들에 대한 참조는, 엄격한 논리적 또는 물리적 구조나 조직을 나타내는 것이 아니라, 단지 설명된 기능을 제공하는 적절한 수단에 대한 참조로써 간주되어야 한다.
본 발명이 일부 실시예들과 관련하여 설명되었지만, 본 명세서에서 설명된 특정 형태에 제한되도록 의도된 것은 아니다. 오히려, 본 발명의 범주는 청구항들에 의해서만 제한된다. 또한, 어떤 특징이 특정 실시예들과 관련하여 설명되는 것으로 보일지라도, 본 기술 분야의 숙련자라면, 설명된 실시예들의 다양한 특징들이 본 발명에 따라서 조합될 수 있다는 것을 이해할 것이다.
또한, 개별적으로 열거되었지만, 복수의 수단, 구성요소 또는 방법 단계는, 예를 들어, 단일 유닛 또는 프로세서에 의해 구현될 수도 있다. 또한, 개별적인 특징들이 상이한 청구항들에 포함될 수 있지만, 이들은 유리하게 조합될 수도 있고, 상이한 청구항들에 포함됨으로써, 이 특징들의 조합이 실현가능하지 않고/않거나 유익하지 않다는 것을 내포하지는 않는다. 또한, 하나의 특징이 청구항의 일 카테고리에 포함되는 것은 그 카테고리에만 한정된다는 것을 내포하지 않고, 오히려 이 특징은, 적절한 경우, 다른 청구항 카테고리에도 동일하게 적용될 수 있다.

Claims (22)

  1. 유저 공간에서 유저 공간 가상화 프로그램을 이용하여 시스템 리소스 및 시스템 시큐러티를 제어하는 컴퓨터 구현 방법으로서,
    어플리케이션의 네이티브 코드를 검색하는 단계; 및
    상기 네이티브 코드로부터 명령 시퀀스를 식별하는 단계
    를 포함하고,
    상기 명령 시퀀스를 식별하는 단계는,
    (1): 처리를 행할 상기 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 있는 경우, 상기 어플리케이션에 대한 실행 권한이 있는지를 확인하는 단계;
    (1-1): 상기 어플리케이션이 처리에 대한 실행 권한을 갖는 경우, 상기 명령 시퀀스를 프로세서에서 실행하는 단계;
    (1-2): 상기 어플리케이션이 처리에 대한 실행 권한을 갖지 않는 경우, 상기 명령 시퀀스를 실행하지 않는 단계; 및
    (2): 처리를 행할 상기 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 없는 경우, 상기 명령 시퀀스를 상기 프로세서에서 실행하는 단계를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    (1-2) 단계에 이어서,
    (1-3): 상기 어플리케이션이 처리에 대한 실행 권한을 갖지 않는 경우, 에러 표시를 제공하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 어플리케이션에 대한 실행 권한이 있는지를 확인하는 단계는, 상기 명령 시퀀스에 시큐러티 체크 명령을 부가하여 세이프 명령 시퀀스를 생성하는 단계를 포함하는 컴퓨터 구현 방법.
  4. 제3항에 있어서,
    상기 세이프 명령 시퀀스는 유저 공간에서 실행되는 컴퓨터 구현 방법.
  5. 제3항에 있어서,
    상기 세이프 명령 시퀀스는 상기 어플리케이션에 대한 실행 권한을 확인하는 단계를 개시하는 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 어플리케이션에 대한 실행 권한은 상기 시큐러티 매니저에 의해 확인되는 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 어플리케이션에 대한 실행 권한은 상기 프로세서에 의해 확인되는 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    어플리케이션의 네이티브 코드로부터, 시큐러티와 연관된, 처리를 실행하는 명령 시퀀스를 검출하는 단계;
    검출된 상기 명령 시퀀스의 네이티브 코드로부터 액티브 어플리케이션에 대한 실행 권한이 있음을 확인한 후에, 시큐러티와 연관된, 처리를 실행하는 명령 시퀀스의 네이티브 코드를 생성하는 단계; 및
    생성된 상기 코드를 상기 프로세서에서 실행하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  9. 제8항에 있어서,
    상기 명령 시퀀스를 검출하는 단계는, 상기 명령 시퀀스의 레지스트레이션에 대한 시큐러티 컨피규레이션 파일을 체크하는 단계를 포함하는 컴퓨터 구현 방법.
  10. 컴퓨터에 의한 실행을 통하여, 유저 공간에서 유저 공간 가상화 프로그램을 이용하는 방법을 수행하는 명령어들에 의해 인코딩된 컴퓨터 판독가능 매체로서,
    상기 방법은,
    어플리케이션의 네이티브 코드를 검색하는 단계; 및
    상기 네이티브 코드로부터 명령 시퀀스를 식별하는 단계
    를 포함하고,
    상기 명령 시퀀스를 식별하는 단계는,
    (1): 처리를 행할 상기 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 있는 경우, 상기 어플리케이션에 대한 실행 권한이 있는지를 확인하는 단계;
    (1-1): 상기 어플리케이션이 처리에 대한 실행 권한을 갖는 경우, 상기 명령 시퀀스를 프로세서에서 실행하는 단계;
    (1-2): 상기 어플리케이션이 처리에 대한 실행 권한을 갖지 않는 경우, 상기 명령 시퀀스를 실행하지 않는 단계; 및
    (2): 처리를 행할 상기 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 없는 경우, 상기 명령 시퀀스를 상기 프로세서에서 실행하는 단계를 포함하는 컴퓨터 판독가능 매체.
  11. 제10항에 있어서,
    (1-2) 단계에 이어서,
    (1-3): 상기 어플리케이션이 처리에 대한 실행 권한을 갖지 않는 경우, 에러 표시를 제공하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  12. 제10항에 있어서,
    상기 어플리케이션에 대한 실행 권한이 있는지를 확인하는 단계는, 상기 명령 시퀀스에 시큐러티 체크 명령을 부가하여 세이프 명령 시퀀스를 생성하는 단계를 포함하는 컴퓨터 판독가능 매체.
  13. 제12항에 있어서,
    상기 세이프 명령 시퀀스는 유저 공간에서 실행되는 컴퓨터 판독가능 매체.
  14. 제12항에 있어서,
    상기 세이프 명령 시퀀스는 상기 어플리케이션에 대한 실행 권한을 확인하는 단계를 개시하는 컴퓨터 판독가능 매체.
  15. 제10항에 있어서,
    상기 어플리케이션에 대한 실행 권한은 상기 시큐러티 매니저에 의해 확인되는 컴퓨터 판독가능 매체.
  16. 제10항에 있어서,
    상기 어플리케이션에 대한 실행 권한은 상기 프로세서에 의해 확인되는 컴퓨터 판독가능 매체.
  17. 제10항에 있어서,
    상기 방법은,
    어플리케이션의 네이티브 코드로부터, 시큐러티와 연관된, 처리를 실행하는 명령 시퀀스를 검출하는 단계;
    검출된 상기 명령 시퀀스의 네이티브 코드로부터 액티브 어플리케이션에 대한 실행 권한이 있음을 확인한 후에, 시큐러티와 연관된, 처리를 실행하는 명령 시퀀스의 네이티브 코드를 생성하는 단계; 및
    생성된 상기 코드를 상기 프로세서에서 실행하는 단계
    를 더 포함하는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 명령 시퀀스를 검출하는 단계는, 상기 명령 시퀀스의 레지스트레이션에 대한 시큐러티 컨피규레이션 파일을 체크하는 단계를 포함하는 컴퓨터 판독가능 매체.
  19. 유저 공간에서 유저 공간 가상화 프로그램을 이용하여 시스템 리소스 및 시스템 시큐러티를 제어하는 장치로서,
    어플리케이션의 네이티브 코드를 검색하고 시큐러티와 연관된 상기 네이티브 코드로부터 명령 시퀀스를 식별하는 네이티브 명령 핸들러;
    처리를 행할 상기 명령 시퀀스를 실행하는 것이 시큐러티 리스크를 발생시킬 가능성이 있는지를 판정하는 다이내믹 컴파일러;
    상기 어플리케이션이 명령 시퀀스들을 실행할 권한을 갖는지를 판정하는 시큐러티 매니저; 및
    상기 명령 시퀀스들을 실행하는 프로세서
    를 포함하는 장치.
  20. 제19항에 있어서,
    상기 다이내믹 컴파일러는 상기 처리를 실행하는 세이프 명령 시퀀스를 생성하도록 더 동작가능한 장치.
  21. 제20항에 있어서,
    상기 다이내믹 컴파일러는 상기 세이프 명령 시퀀스에 의해 상기 어플리케이션에 대한 실행 권한의 확인을 개시하도록 더 동작가능한 장치.
  22. 제19항에 있어서,
    시큐러티와 연관된 명령 시퀀스를 식별하는 것은, 상기 명령 시퀀스의 레지스트레이션에 대한 시큐러티 컨피규레이션 파일을 체크하는 것을 포함하는 장치.
KR1020097003837A 2006-07-24 2007-07-24 유저 공간 가상화 시스템 KR20090093930A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006201037A JP2008027306A (ja) 2006-07-24 2006-07-24 ユーザ空間仮想化システム
JPJP-P-2006-201037 2006-07-24
US85967306P 2006-11-17 2006-11-17
US60/859,673 2006-11-17

Publications (1)

Publication Number Publication Date
KR20090093930A true KR20090093930A (ko) 2009-09-02

Family

ID=41302377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097003837A KR20090093930A (ko) 2006-07-24 2007-07-24 유저 공간 가상화 시스템

Country Status (1)

Country Link
KR (1) KR20090093930A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101247259B1 (ko) * 2009-12-17 2013-04-01 한국전자통신연구원 가상화 장치 및 그 처리 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101247259B1 (ko) * 2009-12-17 2013-04-01 한국전자통신연구원 가상화 장치 및 그 처리 방법
US8589143B2 (en) 2009-12-17 2013-11-19 Electronics And Telecommunications Research Institute Virtualization apparatus and processing method thereof

Similar Documents

Publication Publication Date Title
US8336095B2 (en) User space virtualization system
US10445498B2 (en) Systems and methods of application control in virtualized environments
US10949247B2 (en) Systems and methods for auditing a virtual machine
RU2679175C1 (ru) Способ поведенческого обнаружения вредоносных программ с использованием виртуальной машины-интерпретатора
EP2959392B1 (en) Memory introspection engine for integrity protection of virtual machines
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
US9454676B2 (en) Technologies for preventing hook-skipping attacks using processor virtualization features
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
JP2009516310A (ja) メモリページをプログラムに対応付けるページカラーリング
Gu et al. Harmonizing performance and isolation in microkernels with efficient intra-kernel isolation and communication
US9536084B1 (en) Systems and methods for delivering event-filtered introspection notifications
US9596261B1 (en) Systems and methods for delivering context-specific introspection notifications
Lefeuvre et al. FlexOS: towards flexible OS isolation
US9531735B1 (en) Systems and methods for delivering introspection notifications from a virtual machine
KR20090093930A (ko) 유저 공간 가상화 시스템
Tian et al. The research on rootkit for information system classified protection
Voulimeneas et al. Garmr: Defending the gates of PKU-based sandboxing
Towards Flexible et al. FlexOS: Towards Flexible OS Isolation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application