KR101323858B1 - 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 - Google Patents

가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 Download PDF

Info

Publication number
KR101323858B1
KR101323858B1 KR1020110060843A KR20110060843A KR101323858B1 KR 101323858 B1 KR101323858 B1 KR 101323858B1 KR 1020110060843 A KR1020110060843 A KR 1020110060843A KR 20110060843 A KR20110060843 A KR 20110060843A KR 101323858 B1 KR101323858 B1 KR 101323858B1
Authority
KR
South Korea
Prior art keywords
memory
access
hypervisor
memory area
virtual machine
Prior art date
Application number
KR1020110060843A
Other languages
English (en)
Other versions
KR20130000253A (ko
Inventor
맹승렬
허재혁
진성욱
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020110060843A priority Critical patent/KR101323858B1/ko
Publication of KR20130000253A publication Critical patent/KR20130000253A/ko
Application granted granted Critical
Publication of KR101323858B1 publication Critical patent/KR101323858B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • 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

Landscapes

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

Abstract

본 발명은 가상화 시스템에서 메모리 접근을 제어하는 장치, 방법 및 그 방법을 기록한 기록매체에 관한 것으로, 본 발명에 따른 메모리 접근 제어 방법은, 하이퍼바이저가 특정 메모리 영역에 대한 접근을 요청하는 경우, 이러한 접근 요청에 따라 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 검사 결과에 따라 메모리 관리부가 선택적으로 하이퍼바이저의 메모리 접근을 허가하며, 하이퍼바이저는 메모리 관리부에 의한 메모리 접근 허가 없이는 메모리 영역에 대한 직접적인 접근이 거부된다.

Description

가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법{Apparatus and method for controlling memory access in virtualized system}
본 발명은 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법에 관한 것으로, 특히 가상화 시스템에서 하나 이상의 가상 머신을 동시에 실행하기 위한 가상 플랫폼(platform)인 하이퍼바이저(hypervisor)가 임의적으로 가상 머신이 사용하고 있는 메모리에 접근하는 것을 제어하는 장치, 방법 및 그 방법을 기록한 기록매체에 관한 것이다.
가상화(virtualization)는 컴퓨터의 자원을 추상화(abstraction)해 실제 물리적인 자원과 분리시키는 기술이다. 종래에는 중앙처리장치(CPU)나 메모리 같은 물리적인 컴퓨팅 자원은 운영 체제(operating system: OS)와 연결되어 하나의 컴퓨팅 시스템을 구성하였다. 즉, 하나의 하드웨어 세트(set)에는 하나의 컴퓨팅 시스템만이 구성 가능하였다. 그러나, 가상화는 이러한 종래의 개념을 깨고 하나의 물리적인 하드웨어 상에 다수의 운영 체제 및 이에 기반한 컴퓨팅 시스템을 구축하는 것을 가능하게 한다. 따라서, 가상화 시스템에서는 한 개의 물리적인 자원을 논리적으로 분할하여 사용하거나, 물리적으로 다른 여러 개의 자원을 논리적으로 통합하는 것이 가능하다. 이를 통해, 실제로 컴퓨팅 시스템이 지니고 있는 물리적인 자원들을 논리적으로 분할하거나 통합하여 사용함으로써, 사용자에게 사용성의 편리성을 제공해주는 것과 동시에 자원을 효율적으로 사용하도록 하여 성능을 향상시키거나 자원 유지에 따른 비용을 감소시킬 수 있다.
가상화 환경에서 가장 중요한 역할을 담당하고 있는 것은 하이퍼바이저(hypervisor)이다. 하이퍼바이저는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 가상 플랫폼을 말하는데, 가상 머신 모니터(virtual machine monitor)라고 불리기도 한다. 이러한 하이퍼바이저는 물리적인 자원을 가상 머신들에게 효율적으로 분배해주는 것과 동시에 각 가상 머신들이 서로 각자의 자원을 침범하지 않도록 격리(isolation)하는 역할을 담당한다. 각각의 가상 머신들은 물리적인 자원을 공유하여 사용하지만 하이퍼바이저에 의해 하나의 가상 머신이 다른 가상 머신의 자원(예를 들어, 메모리나 디스크의 내용이 될 수 있다.)을 읽거나 사용할 수는 없다. 이를 통해 가상 머신은 독립적인 하나의 물리적인 컴퓨터를 사용하는 것처럼 동작할 수 있다.
그러나, 이러한 하이퍼바이저는 가상화 환경에서 가지는 역할의 중요성 때문에 시스템의 자원에 대해 강력한 권한을 갖는다는 점에서 위험이 지적될 수 있다. 즉, 하이퍼바이저가 그 역할을 수행하기 위해 시스템의 자원에 대해 강력한 권한을 가지는 만큼, 하이퍼바이저에 의한 임의적인 메모리 접근이 가능하다. 따라서, 가상화 환경에서 하이퍼바이저에 대한 메모리 접근을 적절하게 제어할 수 있는 기술적 수단이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 가상화 환경 내에서 강력한 권한을 갖는 하이퍼바이저가 임의로 가상 머신이 사용 중인 메모리의 내용을 접근할 수 있는 위험을 배제하고, 이로 인해 하이퍼바이저가 악의적인 사용자에 의해 조종될 경우 개별 가상 머신의 보안이 위협되는 문제점을 해결하며, 동시에 하이퍼바이저에 의한 메모리 접근이 불가피한 경우 해당 메모리의 내용을 안전하게 보호할 수 있는 기술적 수단이 존재하지 않는 한계를 극복하고자 한다.
상기 기술적 과제를 해결하기 위하여, 본 발명의 일 실시예에 따른 가상화 시스템에서 메모리 접근을 제어하는 방법은, 상기 가상화 시스템에서 하나 이상의 가상 머신(virtual machine)을 동시에 실행하기 위한 가상 플랫폼(platform)인 하이퍼바이저(hypervisor)가 소정 메모리 영역에 대한 접근을 요청하는 단계; 상기 접근 요청에 따라 메모리 관리부는 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하는 단계; 및 상기 검사 결과에 따라 상기 메모리 관리부가 선택적으로 상기 하이퍼바이저의 메모리 접근을 허가하는 단계를 포함하고, 상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부된다.
상기된 가상화 시스템에서 메모리 접근을 제어하는 방법에서, 상기 하이퍼바이저가 상기 메모리 영역을 강제로 할당받아야 하는 경우, 상기 메모리 영역의 점유 여부를 검사하는 단계 이전에, 상기 메모리 관리부가 상기 메모리 영역에 기록된 정보, 상기 메모리 영역에 대한 페이지 테이블 사상 정보 및 가상 머신의 점유 정보를 삭제하는 단계를 더 포함한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명의 다른 실시예에 따른 가상화 시스템에서 메모리 접근을 제어하는 방법은, 상기 가상화 시스템에서 하이퍼바이저로 하여금 소정 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 설정하는 단계; 상기 설정된 예외 상황이 발생한 경우, 메모리 관리부가 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하는 단계; 상기 하이퍼바이저가 상기 암호화된 메모리 영역에 접근하여 상기 예외 상황에 따른 작업을 수행하는 단계; 및 상기 예외 상황에 따른 작업이 완료된 후, 상기 메모리 관리부가 상기 암호화된 메모리 영역을 복호화하는 단계를 포함하고, 상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부된다.
상기된 가상화 시스템에서 메모리 접근을 제어하는 방법에서, 상기 메모리 영역을 암호화하는 단계는, 상기 메모리 관리부가 갖는 암호화 수단을 이용하여 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하고, 상기 하이퍼바이저는 상기 암호화 수단에 직접 접근할 수 없어 상기 암호화된 메모리 영역을 임의로 복호화할 수 없다.
또한, 이하에서는 상기 기재된 가상화 시스템에서 메모리 접근을 제어하는 방법들을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상기 기술적 과제를 해결하기 위하여, 본 발명의 일 실시예에 따른 가상화 시스템에서 메모리 접근을 제어하는 장치는, 상기 가상화 시스템에서 하나 이상의 가상 머신을 동시에 실행하기 위한 가상 플랫폼이며, 소정 메모리 영역에 대한 접근을 요청하는 하이퍼바이저; 및 상기 접근 요청에 따라 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 상기 검사 결과에 따라 선택적으로 상기 하이퍼바이저의 메모리 접근을 허가하는 메모리 관리부를 포함하고, 상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부된다.
상기된 가상화 시스템에서 메모리 접근을 제어하는 장치의 메모리 관리부는, 메모리 영역의 점유 상태를 표시하는 머신-어드레스 테이블; 및 게스트 물리 메모리(guest physical memory)와 실제 머신 메모리(machine memory) 간의 사상 정보를 저장하는 페이지 테이블을 포함하고, 상기 접근 요청에 따라 상기 페이지 테이블을 이용하여 가상 메모리와 게스트 물리 메모리 간의 사상 정보와 상기 게스트 물리 메모리와 실제 머신 메모리 간의 사상 정보를 검색 및 관리하며, 상기 검사 결과 상기 메모리 영역이 어떠한 가상 머신에 의해서도 점유되어 있지 않은 경우, 머신-어드레스 테이블에 상기 메모리 영역에 대한 접근 주체를 갱신하고, 페이지 테이블의 사상 정보를 갱신하여 상기 하이퍼바이저의 메모리 접근을 허가한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명의 다른 실시예에 따른 가상화 시스템에서 메모리 접근을 제어하는 장치는, 상기 가상화 시스템에서 소정 메모리 영역에 대한 접근을 요청하는 하이퍼바이저; 및 상기 접근 요청에 따라 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 상기 검사 결과에 따라 선택적으로 상기 하이퍼바이저의 메모리 접근을 허가하며, 상기 가상화 시스템에서 하이퍼바이저로 하여금 소정 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 저장하는 메모리 관리부를 포함하고, 상기 설정된 예외 상황이 발생한 경우, 상기 메모리 관리부가 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하고, 상기 예외 상황에 따른 작업이 완료된 후 상기 암호화된 메모리 영역을 복호화하며, 상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부된다.
상기된 가상화 시스템에서 메모리 접근을 제어하는 장치에서, 상기 예외 상황은, 가상 머신 또는 하이퍼바이저의 메모리 부족으로 인한 스왑의 경우, 메모리에 적재된 가상 머신의 동작을 일시정지시키거나 종료시켜 디스크에 저장하는 경우, 또는 가상 머신이 현재의 물리 머신으로부터 다른 물리 머신으로 재할당되는 이주의 경우 중 적어도 하나인 것이 바람직하다.
본 발명은 하이퍼바이저가 메모리 관리부에 의한 메모리 접근 허가 없이는 메모리 영역에 대한 직접적인 접근이 거부됨으로써, 하이퍼바이저가 임의로 가상 머신이 사용 중인 메모리에 접근하는 것을 방지하고, 하이퍼바이저가 악의적인 사용자에 의해 조종되는 경우 개별 가상 머신의 비밀 정보가 외부에 직접적으로 노출되는 위험을 막을 수 있으며, 하이퍼바이저에 의한 메모리 접근이 불가피한 경우에도 해당 메모리의 내용을 암호화함으로써 하이퍼바이저로부터 그 내용을 안전하게 보호할 수 있다.
도 1은 본 발명의 실시예들이 구현되는 가상화 환경에서 계층화된 메모리 구조를 예시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 가상화 시스템에서 하이퍼바이저가 메모리 영역에 대한 접근을 요청한 경우, 메모리 접근을 제어하는 방법을 도시한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 도 2의 메모리 접근 제어 방법에서 페이지의 점유 여부에 따라 메모리 접근을 허가 내지 거부하는 방법을 보다 구체적으로 도시한 흐름도이다.
도 4는 본 발명의 다른 실시예에 따른 가상화 시스템에서 예외 상황이 발생한 경우, 메모리 접근을 제어하는 방법을 도시한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 접근을 제어하는 장치를 포함한 가상화 시스템 전체를 도시한 블록도이다.
도 6은 본 발명의 일 실시예에 따른 도 5의 메모리 접근 제어 장치에서 메모리 관리부를 보다 구체적으로 도시한 블록도이다.
본 발명의 실시예들을 설명하기에 앞서, 본 발명의 실시예들이 구현되기 위해 사용되는 가상화 환경의 기술 수단들을 개괄적으로 검토하고, 이러한 가상화 환경에서 발생 가능한 문제점을 소개하도록 한다.
과거 프로그래머가 직접 메모리의 물리 주소를 사용하던 시기에는 물리적인 메모리 크기보다 더 큰 메모리를 요구하는 프로그램을 실행할 수 없었으나, 기술의 진보에 따라 가상 메모리(virtual memory)를 제공함으로써 사용자에게 실제 컴퓨터 시스템이 구비하고 있는 메모리보다 더 큰 가상화 메모리를 제공할 수 있게 되었다. 이는 실제 프로그램이 사용되고 있는 프로그램 영역 중 일부만을 메모리에 상주시키고, 나머지 영역은 디스크와 같은 대용량 스토리지(storage)에 저장함으로써, 보다 많은 응용 프로그램을 동시에 실행시키거나 실제 물리적인 메모리의 크기보다 많은 큰 메모리를 요구하는 응용 프로그램을 효율적으로 동작시킬 수 있게 되었다. 즉, 이러한 환경 하에서는 물리적인 메모리를 페이지(page) 단위로 분할하여 각 프로그램에 분배하고, 가상 메모리 주소를 물리 메모리(physical memory) 주소로 변경함으로써 메모리를 보다 효율적으로 사용할 수 있도록 하였다.
그러나, 하나의 물리적인 시스템에서 복수 개의 운영 체제(가상 머신을 의미한다.)이 동시에 동작하는 가상화 환경에서는 실제로 물리적으로 존재하지는 않지만 마치 각각의 운영 체제 내에 존재하는 것처럼 동작할 수 있는 또 하나의 가상화된 물리 메모리인 게스트 물리 메모리(guest physical memory)가 필요하다. 이로 인해 가상화 환경의 메모리 관리 장치는 가상화된 물리 메모리를 제공하여, 실제 머신에 설치된 머신 메모리(machine memory)로 변환하는 역할을 담당해야 한다.
도 1은 본 발명의 실시예들이 구현되는 가상화 환경에서 계층화된 메모리 구조를 예시한 도면으로서, 가상화 환경의 운영 체제에서 동작하는 프로그램은 가상 메모리를 사용하게 되고, 해당 운영 체제는 자신만의 페이지 테이블을 관리하게 된다. 이 때, 해당 가상 머신(게스트 운영 체제를 의미한다.)이 관리하는 페이지 테이블은 가상 메모리(guest virtual memory)와 게스트 물리 메모리(guest physical memory) 간의 사상(mapping) 정보를 저장하고 있다. 또한, 하이퍼바이저는 게스트 물리 메모리와 실제 머신에 설치된 머신 메모리(machine memory) 간의 사상 정보를 저장하는 페이지 테이블(page table)을 관리한다. 즉, 가상화 환경에서 동작하는 프로그램에서 실제 머신에 저장된 메모리에 접근하기 위해서는 가상 메모리로부터 게스트 물리 메모리로 주소 변환을 한 후, 다시 게스트 물리 메모리로부터 실제 머신 메모리로의 주소 변환을 수행한 후에야만, 비로소 실제 머신에 저장된 메모리에 접근하는 것이 가능하다.
통상적으로 가상화 환경에서는 하이퍼바이저에 기초하여 복수 개의 가상 머신들이 동작하며, 이러한 가상화 환경은 소프트웨어 관리의 측면이나 컴퓨팅 자원 활용 측면에서 많은 장점을 가진다. 예를 들어, 가상 머신들은 서로의 자원을 공유할 수 있으며, 시스템의 여러 자원들 중 중앙처리장치(central processing unit, CPU)의 공유도 가능하다. 이 경우, 시간을 분할하여 각 가상 머신이 일정한 시간을 나누어서 사용하도록 하여 중앙처리장치를 공유하도록 하며, 메모리의 경우에는 메모리를 일정한 크기로 분할하거나 일부 메모리를 공유하여 사용하도록 한다.
메모리에는 각 가상 머신에서 사용하는 프로그램 및 데이터가 저장되는데 특정 데이터를 암호화하기 위한 개인 키, 금융 정보나 개인 신상에 관한 비밀 정보 등 반드시 보안이 지켜져야만 하는 정보를 담고 있을 수 있다. 앞서 설명한 바와 같이 하이퍼바이저에 의해서 각 가상 머신은 격리되므로, 일반적인 경우에 하나의 가상 머신이 갖는 중요 데이터가 다른 가상 머신에게 노출되는 경우는 거의 없다.
그러나, 가상화 시스템에서 매우 중요한 역할을 담당하는 하이퍼바이저가 악의적인 공격에 의해서 코드가 변경되는 경우에는, 가상 머신에서 사용하고 있는 자원들(예를 들어, 메모리, 디스크 또는 네트워크 장치가 될 수 있다.)의 상세 내용을 읽거나 변경할 수 있다. 이는 하이퍼바이저가 가상화 시스템 내에서 최고 권한을 가지고 수행하고 있기 때문인데, 이러한 공격을 당하게 될 경우에는 가상 머신이 안전하게 동작한다는 것을 보장할 수 없다. 즉, 악의적인 사용자에게 지배된 하이퍼바이저에 의해 가상 머신의 중요 데이터가 노출될 수 있으며, 이하에서 설명할 본 발명의 실시예들은 이러한 문제점을 해결하기 위한 기술적 수단을 제시하고자 한다.
본 발명의 실시예들이 공통적으로 채택하고 있는 기본 아이디어는 다음과 같다. 즉, 본 발명의 실시예들에서는 가상화 환경 하에서 시스템 자원에 대한 최고 권한을 가진 하이퍼바이저가 직접 가상 머신의 메모리 내용을 읽거나 변경하지 못하도록 한다. 그 대신, 하이퍼바이저가 가상 머신의 메모리에 접근하기 위해서는 반드시 하드웨어로 구현된 메모리 관리부를 통해서만 가능하도록 한다. 이러한 메모리 관리부는 하이퍼바이저를 포함한 각각의 가상 머신에서 사용하는 페이지 테이블(page table)을 직접 관리하게 되고, 하이퍼바이저는 단순히 메모리 관리부에 대해 메모리 할당 및 해제 요청만을 하게 되며, 페이지 테이블에 대한 직접적인 접근은 불가하다.
이하에서는 이상과 같은 아이디어 및 도면을 참조하여 본 발명의 다양한 실시예들을 구체적으로 설명한다.
도 2는 본 발명의 일 실시예에 따른 가상화 시스템에서 하이퍼바이저가 메모리 영역에 대한 접근을 요청한 경우, 메모리 접근을 제어하는 방법을 도시한 흐름도로서 다음과 같은 단계들을 포함한다.
210 단계에서는 가상화 시스템에서 하나 이상의 가상 머신(virtual machine)을 동시에 실행하기 위한 가상 플랫폼(platform)인 하이퍼바이저(hypervisor)가 특정 메모리 영역에 대한 접근을 요청한다. 앞서 소개한 바와 같이 본 발명의 실시예들에서 하이퍼바이저는 메모리 영역에 대해 직접 접근할 수 없으며, 반드시 하드웨어로 구현된 메모리 관리부를 통해서만 해당 메모리 영역에 접근할 수 있도록 구현된다.
220 단계에서 메모리 관리부는 210 단계의 접근 요청에 따라 해당 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사한다. 본 실시예에서 메모리를 구성하는 각각의 메모리 영역들은 가상 머신에 의해 사용되는 경우, 그 점유 여부를 특정 테이블(예를 들어, 머신-어드레스(machine to address, M2A) 테이블이 될 수 있다.)에 기록하게 된다. 따라서, 220 단계에서는 이러한 특정 테이블을 조회함으로써 하이퍼바이저가 요청하고 있는 메모리 영역이 어떠한 가상 머신에 의해 점유되어 있는지 여부를 알 수 있다.
230 단계에서 메모리 관리부는 220 단계의 검사 결과에 따라 선택적으로 하이퍼바이저의 메모리 접근을 허가한다. 이 때, 하이퍼바이저는 메모리 관리부에 의한 메모리 접근 허가 없이는 메모리 영역에 대한 직접적인 접근이 거부된다. 즉, 검사 결과 해당 메모리 영역이 다른 가상 머신에 의해 점유된 경우에는 메모리 영역에 대한 접근이 거부되고, 해당 메모리 영역이 어떠한 가상 머신에 의해서도 점유되지 않은 경우에는 해당 메모리 영역에 대한 접근이 허가된다.
도 3은 이상에서 개괄적으로 설명한 도 2의 메모리 접근 제어 방법에서 페이지의 점유 여부에 따라 메모리 접근을 허가 내지 거부하는 방법을 보다 구체적으로 도시한 흐름도로서, 여기서는 도 1에서 설명된 구성에 대한 중복되는 설명을 가급적 배제하도록 한다.
우선, 210 단계를 통해 하이퍼바이저에 의한 페이지(메모리 영역을 의미한다.) 할당 요청이 발생한 경우, 230 단계에서는 해당 페이지가 가상 머신에 의해 점유되어 있는지 여부를 검사한다. 앞서 설명한 바와 같이 이러한 검사를 위해 메모리 관리부는 머신-어드레스(machine to address, M2A) 테이블을 참조하게 되며, 머신-어드레스 테이블은 실제 메모리 주소가 어떤 가상 머신이나 하이퍼바이저에 의해 점유되고 있는지를 나타낸다.
검사 결과, 이미 특정 가상 머신에 의해 해당 페이지가 점유되어 있는 경우에는 257 단계로 진행하여 하이퍼바이저에 의한 해당 메모리 접근을 거부한다. 만약, 해당 페이지가 어떠한 가상 머신에 의해서도 점유되어 있지 않다면, 253 단계로 진행한다.
253 단계에서 메모리 관리부는 메모리 영역의 점유 상태를 표시하는 머신-어드레스 테이블에 메모리 영역에 대한 접근 주체(여기서는 하이퍼바이저가 될 것이다.)를 갱신함으로써, 하이퍼바이저에 의한 점유를 기록한다. 또한, 메모리 관리부는 255 단계에서 페이지 테이블(page table)의 사상 정보를 갱신하여 하이퍼바이저의 메모리 접근을 허가한다.
가상화 시스템 구현의 측면에서, 이상과 같이 하이퍼바이저가 메모리 관리부에 메모리 영역에 대한 접근을 요청하는 일련의 과정은 특정 명령어 호출과 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기(processor)를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 메모리 접근 제어 과정은 페이지 할당을 요청하는 특정 명령어(이하에서 이러한 명령어는 'Page map' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다. 'Page map' 명령어는 게스트 물리 메모리 주소를 실제 머신 메모리 주소를 사상하여 메모리 접근 시에 해당 사상 정보를 참고하여 실제 메모리 접근을 가능하게 해주는 것이다. 만약, 'Page map' 명령어가 하이퍼바이저에 의해 호출되면, 메모리 관리부는 페이지 테이블에 해당 정보를 기입하여 메모리 접근을 가능하게 한다.
해당 기능에 대한 상세한 동작은 앞서 설명한 도 2의 과정에 따라 수행된다. 우선 페이지 할당 요청(210)이 하이퍼바이저에 의해 호출된 경우, 해당 페이지가 어떠한 가상 머신도 사용하지 않은 프리 페이지(free page)인지 여부를 검사(230)한다. 검사 결과, 악의적인 하이퍼바이저가 가상 머신의 정보를 담고 있는 실제 머신 메모리를 하이퍼바이저의 영역으로 사상 정보를 변경하려 한다면, 이러한 접근을 거부(257)하게 된다. 반면, 해당 페이지가 점유 주체가 없는 프리 페이지라면 머신-어드레스 테이블을 갱신하여 점유 주체(경우에 따라서, 하이퍼바이저 또는 특정 가상 머신이 될 수 있다.)를 기록(253)하게 된다. 마지막으로, 메모리 관리부는 실제 페이지 테이블을 갱신(255)하여 실제 메모리 접근을 허가한다.
한편, 이러한 가상화 환경에서는 하이퍼바이저가 메모리 영역을 강제로 할당받아야 하는 경우가 존재한다. 메모리가 부족하거나 특정 요구 사항이 발생하는 경우가 그러한데, 이상에서 설명한 본 발명의 실시예들에 따르면 원칙적으로 기존에 가상 머신에 의해 점유된 메모리 영역에 대해서는 하이퍼바이저에 의한 접근이 거부된다. 따라서, 이하에서는 필요에 따라 메모리 관리부가 가상 머신으로부터 메모리 영역을 회수하여 하이퍼바이저에게 제공하는 경우에 활용될 수 있는 기술적 수단을 제안한다.
이를 위해, 메모리 관리부가 메모리 영역의 점유 여부를 검사하기 이전에, 메모리 관리부는 하이퍼바이저에 의해 요청된 상기 메모리 영역에 기록된 정보, 메모리 영역에 대한 페이지 테이블 사상 정보 및 가상 머신의 점유 정보를 삭제한다. 즉, 기존의 가상 머신에 의해 사용되는 메모리 영역을 강제로 하이퍼바이저에 넘겨주는 경우에 있어서, 가상 머신의 개인 정보를 보호하기 위해 기존에 사용 중인 메모리와 관련된 정보를 삭제하게 된다.
가상화 시스템 구현의 측면에서, 가상 머신이 사용하던 메모리 영역이 더 이상이 필요하지 않거나, 가상 머신이 사용중인 실제 메모리를 다른 가상 머신 내지 하이퍼바이저에 할당하기 위해서는 해당 메모리 영역을 해제하기 위한 특정 명령어를 호출하고, 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 메모리 해제 과정은 페이지 해제를 요청하는 특정 명령어(이하에서 이러한 명령어는 'Page unmap' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다. 'Page unmap' 명령어는 게스트 물리 메모리 주소에서 실제 머신 메모리 주소의 사상 정보를 삭제하는 것으로서, 가상 머신이 해당 메모리를 더 이상 필요로 하지 않거나 메모리 부족으로 해당 메모리를 다른 가상 머신에게 할당하고 싶은 경우에 사용한다. 'Page unmap' 명령어가 호출되면, 메모리 관리부는 실제 메모리의 내용을 모두 삭제하고 페이지 테이블의 사상 정보를 삭제한다.
이상과 같이 구현된 본 발명의 실시예에서, 메모리 관리부는 가상 머신의 스케줄링을 변경하는 추가적인 명령어(이하에서 'Virtual machine switch' 명령어로 명명한다.)를 다음과 같이 수행하는 것이 가능하다. 'Virtual machine switch' 명령어는 하이퍼바이저가 스케줄링을 변경하여 다른 가상 머신을 수행하고 싶을 때 호출하는 명령어로서, 메모리 관리부는 페이지 테이블의 주소를 저장하는 레지스터를 직접 변경한다. 만약 하이퍼바이저가 직접 페이지 테이블의 주소를 변경할 수 있다면, 하이퍼바이저가 또 다른 가상 머신을 악의적으로 생성하고, 이렇게 생성된 또 다른 가상 머신으로 하여금 페이지 테이블의 주소를 변경하는 방법을 통해 해당 가상 머신의 정보를 불법적으로 획득할 수 있다는 문제점이 있다. 그러나, 'Virtual machine switch' 명령어를 통해 메모리 관리부가 페이지 테이블의 주소를 저장하는 하드웨어 레지스터를 직접 변경하면, 악의적인 하이퍼바이저가 페이지 테이블의 주소를 임의로 변경하는 것을 차단할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 가상화 시스템에서 예외 상황이 발생한 경우, 메모리 접근을 제어하는 방법을 도시한 흐름도로서, 이러한 다른 실시예에 따른 가상화 시스템은 앞서 소개한 일 실시예가 채택하고 있는 가상화 시스템에서 예외 상황에 따른 처리를 가능하도록 하는 암호화 수단을 더 포함한다. 기본적으로 하이퍼바이저에 의한 임의적인 메모리 접근을 제어한다는 점에서 도 4에 도시된 실시예와 도 2에 도시된 실시예는 공통점을 가지므로, 여기에서는 앞서 설명한 구성들이 중복하여 기술되지 않도록 도 4의 차별적 구성을 중심으로 설명하도록 한다. 따라서, 도 4의 실시예에서도 예외 상황이 아닌 경우, 하이퍼바이저가 메모리 관리부에 의한 메모리 접근 허가 없이 메모리 영역에 대한 직접적인 접근이 거부되는 것은 당연하다.
410 단계에서는 가상화 시스템에서 하이퍼바이저로 하여금 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 설정한다. 비록 앞서 소개한 본 발명의 실시예에서 하이퍼바이저가 이미 가상 머신이 사용하고 있는 메모리 영역에 접근하는 것이 원칙적으로 거부되나, 도 4에 따른 실시예에서는 이러한 원칙과는 별개로 가상화 시스템의 운용상 하이퍼바이저가 이미 점유되어 잇는 메모리 영역에 접근하는 것이 허용되어야 하는 상황들을 제시하고, 이들 상황을 해결할 수 있는 기술적 수단을 제시한다.
이러한 예외 상황은 가상 머신 또는 하이퍼바이저의 메모리 부족으로 인한 스왑의 경우, 메모리에 적재된 가상 머신의 동작을 일시정지시키거나 종료시켜 디스크에 저장하는 경우, 또는 가상 머신이 현재의 물리 머신으로부터 다른 물리 머신으로 재할당되는 이주의 경우 중 적어도 하나인 것이 바람직하며, 이후 각각의 상황에 따른 처리 과정을 상세히 설명한다.
이제, 420 단계에서 하이퍼바이저에 의한 메모리 영역 접근 요청이 발생하고, 430 단계에서는 410 단계를 통해 설정된 예외 상황이 발생했는지 여부를 판단한다. 이 때, 설정된 예외 상황이 발생했다면, 메모리 관리부는 가상 머신이 사용하는 메모리 영역을 암호화한다. 이는 하이퍼바이저가 해당 메모리 영역에 접근하더라도 이러한 메모리 영역의 실제 데이터를 읽을 수 없도록 보호하기 위함이다. 이러한 암호화를 위해 메모리 관리부는 암호화 수단을 별도로 구비할 수 있으며, 암호화 수단은 널리 활용되는 공개키-비밀키 암호화 시스템을 비롯한 다양한 암호화 기법들이 활용될 수 있다. 특히, 암호화를 위해 사용자로부터 암호화 키를 입력받는 경우, 이러한 암호화 키가 외부에 노출되지 않도록 메모리 관리부가 갖는 공개키를 이용하여 암호화함으로써 하이퍼바이저가 암호화된 데이터를 복호화할 수없도록 하는 것이 바람직하다. 암호화 과정에 대한 보다 구체적인 설명은 본 발명의 본질을 해칠 우려가 있으므로, 여기서는 생략하도록 한다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 암호화 수단을 구현하는 다양한 방법을 본 실시예에 적절히 적용하는 것이 가능하다.
440 단계에서 하이퍼바이저는 430 단계를 통해 암호화된 메모리 영역에 접근하여 예외 상황에 따른 작업을 수행하고, 450 단계에서 이상의 예외 상황에 따른 작업이 완료되면, 메모리 관리부가 암호화된 메모리 영역을 복호화하게 된다.
이제, 이하에서 각각의 개별적인 예외 상황 3가지를 예시하여 설명하도록 한다.
첫째, 예외 상황이 가상 머신 또는 하이퍼바이저의 메모리 부족으로 인한 스왑(swap)인 경우, 메모리 영역을 암호화하는 430 단계는 메모리 관리부가 스왑 페이지의 내용을 암호화하게 된다.
가상화 시스템 구현의 측면에서, 이러한 스왑은 메모리 페이지(메모리에서 교체될 특정 영역을 의미한다.)의 내용과 디스크에 내용을 교체하기 위한 특정 명령어를 호출하고, 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 메모리 스왑 과정은 페이지 교체를 요청하는 특정 명령어(이하에서 이러한 명령어는 'Page swap' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다.
'Page Swap' 명령어는 메모리 페이지의 내용을 디스크로 저장할 수 있도록 메모리 내용을 암호화하여 준다. 앞서 설명한 바와 같이 암호화가 필요한 이유는 하이퍼바이저가 디스크에 대한 접근을 할 수 있으므로 암호화하지 않고 디스크에 메모리 내용을 기록하는 경우에, 중요한 정보가 노출될 수 있거나 변경될 수 있기 때문이다. 이를 막기 위해, 메모리 관리부 내의 암호화 수단을 이용하여 사용자가 입력한 대칭키를 이용하여 암호화함으로써 하이퍼바이저로 하여금 메모리에 저장된 가상 머신의 기밀 정보를 읽거나 변경할 수 없도록 한다.
둘째, 예외 상황이 메모리에 적재된 가상 머신의 동작을 일시정지(suspend)시키거나 종료(stop)시켜 디스크에 저장하는 상황인 경우, 메모리 영역을 암호화하는 430 단계는 메모리 관리부가 메모리에 적재된 가상 머신의 스냅샷(snapshot)을 암호화하게 된다.
가상화 시스템 구현의 측면에서, 이러한 일시정지 내지 종료는 가상 머신이 사용하고 있는 모든 메모리 영역에 대한 스냅샷을 생성하여 이를 저장하기 위한 특정 명령어를 호출하고, 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 일시정지 내지 종료 과정은 스냅샷 생성 및 저장을 요청하는 특정 명령어(이하에서 이러한 명령어는 'Virtual machine checkpointing' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다.
본 발명의 실시예에 따른 가상화 시스템은 가상 머신의 동작을 잠시 멈추거나(suspend), 정지(stop)할 수 있는데, 이 때 가상 머신의 동작과 관련된 모든 메모리 내용은 디스크에 저장되며, 이후 가상 머신의 재실행(resume) 시에 디스크에 저장된 내용을 메모리로 독출하여 활성화시키게 된다. 이와 같이 해당 내용을 암호화 과정 없이 디스크에 저장될 경우, 가상 머신의 중요한 기밀 정보를 하이퍼바이저가 임의로 독출할 수 있으므로, 'Virtual machine checkpointing' 명령어의 호출에 따라 메모리 관리부는 메모리의 모든 내용을 암호화하여 저장한다.
셋째, 예외 상황이 가상 머신이 현재의 물리 머신으로부터 다른 물리 머신으로 재할당되는 이주(migration)인 경우, 메모리 영역을 암호화하는 430 단계는, 메모리 관리부가 메모리에 적재된 가상 머신의 내용을 암호화하게 된다.
가상화 시스템 구현의 측면에서, 이러한 이주는 동작 중인 가상 머신을 다른 물리적인 서버로 이동시키기 위한 특정 명령어를 호출하고, 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 이주 과정은 이주를 요청하는 특정 명령어(이하에서 이러한 명령어는 'Virtual machine migration' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다.
본 발명의 실시예에 따른 가상 머신은 성능상의 이유 또는 기타 이유로 인하여 다른 곳의 물리적인 서버로 이주할 수 있는데, 이 경우 하이퍼바이저가 이러한 이주를 직접 수행하게 된다. 이주를 수행하기 위해서는 가상 머신의 메모리를 다른 물리적인 서버로 전달해야하는데, 만약 해당 메모리가 암호화되지 않는다면 하이퍼바이저가 가상 머신의 중요한 기밀 정보를 읽거나 변경할 수 있다. 따라서, 본 실시예에서 메모리 관리부는 'Virtual machine migration' 명령어를 통해 이주가 시작되기 전에 메모리의 내용을 암호화함으로써 하이퍼바이저가 이를 읽을 수 없도록 한다.
이상에서 설명한 3 가지 예외 상황 외에도 하이퍼바이저가 가상 머신의 메모리 영역에 대한 접근이 허용되어야 하는 다양한 예외상황이 상정 가능하다. 이를 위해 본 실시예의 메모리 관리부 별도의 암호화 수단을 가지며, 이를 이용하여 가상 머신이 사용하는 메모리 영역을 암호화한다. 또한, 하이퍼바이저는 메모리 관리부가 갖는 암호화 수단에 직접 접근할 수 없으므로 암호화된 메모리 영역을 임의로 복호화할 수 없다.
도 5는 본 발명의 일 실시예에 따른 메모리 접근을 제어하는 장치(500)를 포함한 가상화 시스템 전체를 도시한 블록도로서, 메모리 접근 제어 장치(500)는 크게 하이퍼바이저(10)와 메모리 관리부(20)를 포함한다. 이 중, 메모리 관리부(20)는 하드웨어로서 구현되어 하이퍼바이저에 의한 임의적이고 악의적인 접근을 차단한다. 도 5에서 복수 개의 게스트 운영 체제(40)와 하이퍼바이저(10)는 가상화 시스템 영역에 속하며, 소프트웨어 내지 프로그램 코드로서 구현된다. 이러한 가상화 시스템을 구현하기 위해 적어도 하나 이상의 처리기 내지 관련 데이터를 적재하는 메모리(30)가 활용되어야 함은 당연하다. 도 5의 메모리 접근 제어 장치(500)는 앞서 도 3 내지 도 5를 통해 설명한 본 발명의 실시예들의 기술적 수단에 대응되는 것으로 여기서는 중복되는 설명을 배제하고, 그 개요만을 간략히 소개한다.
하이퍼바이저(10)는 가상화 시스템에서 하나 이상의 가상 머신(40)을 동시에 실행하기 위한 가상 플랫폼이며, 특정 메모리(30) 영역에 대한 접근을 요청할 수 있다. 이러한 하이퍼바이저는 이하에서 설명할 메모리 관리부(20)에 의한 메모리 접근 허가 없이는 메모리(30) 영역에 대한 직접적인 접근이 거부된다.
메모리 관리부(20)는 하이퍼바이저(10)의 접근 요청에 따라 메모리(30) 영역이 가상 머신(40)에 의해 점유되어 있는지 여부를 검사하고, 검사 결과에 따라 하이퍼바이저(10)의 메모리(30) 접근을 선택적으로 허가한다. 이를 위해 메모리 관리부(20)는 메모리(30) 영역의 점유 상태를 표시하는 머신-어드레스 테이블(21) 및 게스트 물리 메모리(guest physical memory)와 실제 머신 메모리(machine memory) 간의 사상 정보를 저장하는 페이지 테이블(22)를 포함할 수 있다. 이들 테이블들(21, 22)은 비록 메모리 접근을 위해 메모리 관리부(20)에 의해 활용되나, 구현의 측면에서 메모리 관리부에 포함되거나 또는 별도의 물리적인 저장소로 구현될 수 있음은 당연하다.
이러한 메모리 관리부(20)는 하이퍼바이저(10)의 접근 요청에 따라 페이지 테이블(22)을 이용하여 가상 메모리와 게스트 물리 메모리 간의 사상 정보와 게스트 물리 메모리와 실제 머신 메모리 간의 사상 정보를 검색 및 관리한다. 검사 결과, 만약 메모리(30) 영역이 어떠한 가상 머신(40)에 의해서도 점유되어 있지 않은 경우, 머신-어드레스 테이블(21)에 메모리(30) 영역에 대한 접근 주체를 갱신하고, 페이지 테이블(22)의 사상 정보를 갱신하여 하이퍼바이저(10)의 메모리(30) 접근을 허가한다.
이러한 하이퍼바이저(10)에 의해 호출되어 메모리 관리부(20)에 전달되는 명령어로는 'map', 'unmap', 'switch', 'swap', 'checkpoint' 또는 'migration' 등이 있으며, 이들 명령어의 구체적인 동작과 역할에 대해서는 이미 설명한 바 있다.
한편, 하이퍼바이저(10)에 의한 명령어 호출이 아닌, 가상 머신(게스트 운영 체제를 의미한다.)(40)에 의해 호출되는 명령어가 존재할 수 있다. 만약, 가상화 시스템(500)에서 복수 개의 가상 머신들(40)이 메모리(30)를 공유하려 할 경우, 하나의 가상 머신이 직접 메모리 관리부(20)에 메모리 공유 명령을 전송할 수 있다. 이 경우, 메모리 관리부(20)는 이러한 메모리 공유 명령을 수신하여 복수 개의 가상 머신들(40)이 상기 공유하고자 하는 메모리(30)에 접근하는 것을 허가할 수 있다.
가상화 시스템 구현의 측면에서, 이러한 메모리 공유는 가상 머신이 공유하고자 하는 메모리와 공유 대상을 특정하는 특정 명령어를 호출하고, 메모리 관리부 및 적어도 하나 이상의 하드웨어 처리기를 이용하여 이에 따른 명령어를 수행함으로써 구현될 수 있다. 즉, 상기된 공유 과정은 공유를 요청하는 특정 명령어(이하에서 이러한 명령어는 'Page sharing' 명령어로 명명한다.)의 호출을 통해 구현될 수 있다.
본 발명의 실시예들에서 실제 머신 메모리(30)는 성능상의 이유 및 기타 이유로 인하여 복수 개의 가상 머신들(40) 간에 공유될 수 있다. 이 경우, 메모리 관리부(20)는 공유 페이지 기능을 지원하여 공유하고자 하는 페이지를 복수 개의 가상 머신(40) 또는 필요에 따라 하이퍼바이저(10)에서 공유될 수 있도록 할 수 있다. 이를 위해 하이퍼바이저(10)가 아닌 가상 머신(40)은 직접 'Page sharing' 명령어를 호출해야 하며, 해당 페이지에는 중요한 정보를 저장하지 않는 것이 바람직하다.
도 6은 본 발명의 일 실시예에 따른 도 5의 메모리 접근 제어 장치(500)에서 메모리 관리부(20)를 보다 구체적으로 도시한 블록도로서, 앞서 도 5를 통해 제시된 머신-어드레스 테이블(21) 및 페이지 테이블(22) 이외에 페이지 워커(page worker)(23), 페이지 관리부(24) 및 암호화부(25)를 포함하도록 도시되었다. 따라서, 여기서는 새롭게 도시된 후자(23, 24, 25)의 구성을 중심으로 그 역할을 설명하도록 한다.
페이지 워커(23)는 가상 메모리 접근 요청이 발생하였을 때, TLB(translation lookup buffer)를 검사하고, TLB에 해당 머신 메모리 정보가 존재하지 않는 경우 실제 페이지 테이블에서 해당 정보를 찾아내는 역할을 담당한다. 이 때, 페이지 워커(23)는 가상 메모리와 게스트 물리 메모리 간의 사상 정보를 찾아내는 역할과 게스트 물리 메모리와 실제 머신 메모리 간의 사상 정보를 찾아내는 역할을 수행한다. 이러한 역할을 통해 하이퍼바이저의 간섭 없이 메모리 사상 정보가 존재하지 않는 상황에서도 하드웨어 모듈만으로 메모리 접근이 가능하다.
페이지 관리부(24)는 페이지 테이블에 대한 정보를 관리하는 구성으로서, 페이지 테이블은 게스트 물리 메모리와 실제 머신 메모리 간의 사상 정보를 저장한다. 본 발명의 실시예들이 제안하고 있는 메모리 관리부(20)가 존재하지 않는 가상화 환경에서는 하이퍼바이저가 페이지 테이블에 대한 정보를 직접 관리하지만, 본 발명의 실시예들은 이를 하드웨어인 메모리 관리부(20)를 통해 수행하게 된다. 예를 들어, 하이퍼바이저로부터 'Page Map' 명령어와 'Page Unmap' 명령어가 호출된 경우, 페이지 관리부(24)는 해당 요청을 확인하여 게스트 물리 주소와 실제 머신 주소와의 사상 정보를 추가하거나 삭제하는 기능을 담당한다.
마지막으로 암호화부(25)는 앞서 설명한 바와 같이 암호화 및 복호화를 수행하는 구성으로서, 암호화부(25) 내부에는 공개키와 개인키가 저장된다. 이 때, 개인키는 하드웨어 메모리를 통해 직접 관리되므로 절대 메모리 관리부(20) 외부로 노출될 수 없다. 가상 머신이 이주하거나, 메모리가 부족하여 메모리 페이지가 디스크에 쓰여지는 경우, 하이퍼바이저가 해당 디스크의 내용을 읽어서 메모리 페이지 정보를 변경하거나 볼 수 있으므로, 암호화부(25)는 이러한 메모리 페이지의 내용을 암호화하여 저장한다. 이 때, 사용자는 암호화 및 복호화 요청을 위해 메모리 관리부(20)에서 사용하는 공개키로 암호화된 대칭키를 전달하고, 해당 대칭키로 메모리 페이지를 암호화하는 것이 바람직하다.
이러한 구성에 기초하여, 본 발명의 다른 실시예에 따른 가상화 시스템에서 메모리 접근을 제어하는 장치는, 가상화 시스템에서 특정 메모리 영역에 대한 접근을 요청하는 하이퍼바이저 및 이러한 접근 요청에 따라 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 검사 결과에 따라 선택적으로 하이퍼바이저의 메모리 접근을 허가하며, 가상화 시스템에서 하이퍼바이저로 하여금 특정 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 저장하는 메모리 관리부를 포함할 수 있다. 이 경우, 만약 설정된 예외 상황이 발생하면, 메모리 관리부가 해당 가상 머신이 사용하는 메모리 영역을 암호화하고, 예외 상황에 따른 작업이 완료된 후 암호화된 메모리 영역을 복호화한다. 이 때, 하이퍼바이저가 메모리 관리부에 의한 메모리 접근 허가 없이 메모리 영역에 대한 직접적인 접근이 거부되는 것은 당연하다. 또한 이러한 예외 상황은 이미 이상의 실시예들을 통해 구체적으로 설명한 바 있다.
상기된 본 발명의 실시예들에 따르면, 하이퍼바이저가 메모리 관리부에 의한 메모리 접근 허가 없이는 메모리 영역에 대한 직접적인 접근이 거부됨으로써, 하이퍼바이저가 임의로 가상 머신이 사용 중인 메모리에 접근하는 것을 방지하고, 하이퍼바이저가 악의적인 사용자에 의해 조종되는 경우 개별 가상 머신의 비밀 정보가 외부에 직접적으로 노출되는 위험을 막을 수 있다. 또한, 하이퍼바이저에 의한 메모리 접근이 불가피한 경우에도 해당 메모리의 내용을 암호화함으로써 하이퍼바이저로부터 그 내용을 안전하게 보호할 수 있다.
즉, 상기된 본 발명의 실시예들에 따르면, 가상화 환경에서 최고 권한을 가진 하이퍼바이저라도 가상 머신의 메모리 내용을 볼 수 없다. 이를 통해 가상 머신은 안전하게 동작할 수 있으며, 특히 현재 널리 보급되고 있는 클라우드 환경과 같이 IT 자원을 직접 소유하지 않고 차용하여 사용하는 시스템에서는 많은 장점을 가진다. 클라우드 환경은 전통적인 컴퓨팅 환경과는 달리 IT 자원을 필요할 때만 차용하여 사용하는 것으로 인해 많은 비용을 절약할 수 있으며, 급격한 컴퓨팅 증가 요구에 능동적으로 대응할 수 있다고 알려져 있다. 그러나, 이런 클라우드 환경에서 가장 취약한 문제점은 보안이라고 지적되고 있다. 왜냐하면, 가상 머신 형태로 IT 자원을 빌려 쓸 경우, 가상 머신에 존재하는 데이터가 악의적인 공격자나 클라우드 관리자에 의해서 노출될 가능성이 존재하기 때문이다. 이러한 환경 하에서 본 발명의 실시예들에 따른 메모리 접근 제어 방법을 사용하면, 하이퍼바이저에 의해서 사용자의 개인 데이터가 노출될 위험 없이 개별 사용자들이 자신의 기밀 정보를 안전하게 사용할 수 있다는 장점을 가진다.
한편, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명에 대하여 그 다양한 실시예들을 중심으로 살펴보았다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
500 : 가상화 시스템에서 메모리 접근을 제어하는 장치
10 : 하이퍼바이저
20 : 메모리 관리부
21 : M2A 테이블 22 : 페이지 테이블
23 : 페이지 워커 24 : 페이지 관리부
25 : 암호화부
30 : 메모리 35 : TLB(translation lookup buffer)
40 : 게스트 운영 체제

Claims (15)

  1. 가상화 시스템에서 메모리 접근을 제어하는 방법에 있어서,
    상기 가상화 시스템에서 하나 이상의 가상 머신(virtual machine)을 동시에 실행하기 위한 가상 플랫폼(platform)인 하이퍼바이저(hypervisor)가 소정 메모리 영역에 대한 접근을 요청하는 단계;
    상기 접근 요청에 따라 메모리 관리부는 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하는 단계; 및
    상기 검사 결과 상기 메모리 영역이 어떠한 가상 머신에 의해서도 점유되어 있지 않은 경우, 상기 메모리 관리부가 메모리 영역의 점유 상태를 표시하는 머신-어드레스(machine to address, M2A) 테이블에 상기 메모리 영역에 대한 접근 주체를 갱신하며, 페이지 테이블(page table)의 사상 정보를 갱신하여 상기 하이퍼바이저의 메모리 접근을 허가하는 단계;를 포함하고,
    상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부되는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 하이퍼바이저가 상기 메모리 영역을 강제로 할당받아야 하는 경우,
    상기 메모리 영역의 점유 여부를 검사하는 단계 이전에, 상기 메모리 관리부가 상기 메모리 영역에 기록된 정보, 상기 메모리 영역에 대한 페이지 테이블 사상 정보 및 가상 머신의 점유 정보를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 가상화 시스템에서 메모리 접근을 제어하는 방법에 있어서,
    상기 가상화 시스템에서 하이퍼바이저로 하여금 소정 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 설정하는 단계;
    상기 설정된 예외 상황이 발생한 경우, 메모리 관리부가 갖는 암호화 수단을 이용하여 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하는 단계;
    상기 하이퍼바이저가 상기 암호화된 메모리 영역에 접근하여 상기 예외 상황에 따른 작업을 수행하는 단계; 및
    상기 예외 상황에 따른 작업이 완료된 후, 상기 메모리 관리부가 상기 암호화된 메모리 영역을 복호화하는 단계를 포함하고,
    상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부되며, 상기 암호화 수단에 직접 접근할 수 없어 상기 암호화된 메모리 영역을 임의로 복호화할 수 없는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 예외 상황이 가상 머신 또는 하이퍼바이저의 메모리 부족으로 인한 스왑(swap)인 경우,
    상기 메모리 영역을 암호화하는 단계는, 상기 메모리 관리부가 상기 스왑 페이지의 내용을 암호화하는 것을 특징으로 하는 방법.
  6. 제 4 항에 있어서,
    상기 예외 상황이 메모리에 적재된 가상 머신의 동작을 일시정지(suspend)시키거나 종료(stop)시켜 디스크에 저장하는 상황인 경우,
    상기 메모리 영역을 암호화하는 단계는, 상기 메모리 관리부가 상기 메모리에 적재된 상기 가상 머신의 스냅샷(snapshot)을 암호화하는 것을 특징으로 하는 방법.
  7. 제 4 항에 있어서,
    상기 예외 상황이 가상 머신이 현재의 물리 머신으로부터 다른 물리 머신으로 재할당되는 이주(migration)인 경우,
    상기 메모리 영역을 암호화하는 단계는, 상기 메모리 관리부가 메모리에 적재된 상기 가상 머신의 내용을 암호화하는 것을 특징으로 하는 방법.
  8. 삭제
  9. 제 1 항, 제 3 항 내지 제 7 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  10. 가상화 시스템에서 메모리 접근을 제어하는 장치에 있어서,
    상기 가상화 시스템에서 하나 이상의 가상 머신을 동시에 실행하기 위한 가상 플랫폼이며, 소정 메모리 영역에 대한 접근을 요청하는 하이퍼바이저; 및
    상기 접근 요청에 따라 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 상기 검사 결과에 따라 선택적으로 상기 하이퍼바이저의 메모리 접근을 허가하는 메모리 관리부;를 포함하고,
    상기 메모리 관리부는,
    메모리 영역의 점유 상태를 표시하는 머신-어드레스 테이블; 및
    게스트 물리 메모리(guest physical memory)와 실제 머신 메모리(machine memory) 간의 사상 정보를 저장하는 페이지 테이블;을 포함하고,
    상기 접근 요청에 따라 상기 페이지 테이블을 이용하여 가상 메모리와 게스트 물리 메모리 간의 사상 정보와 상기 게스트 물리 메모리와 실제 머신 메모리 간의 사상 정보를 검색 및 관리하며,
    상기 검사 결과 상기 메모리 영역이 어떠한 가상 머신에 의해서도 점유되어 있지 않은 경우, 머신-어드레스 테이블에 상기 메모리 영역에 대한 접근 주체를 갱신하고, 페이지 테이블의 사상 정보를 갱신하여 상기 하이퍼바이저의 메모리 접근을 허가하고,
    상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부되는 것을 특징으로 하는 장치.
  11. 삭제
  12. 제 10 항에 있어서,
    상기 가상화 시스템에서 복수 개의 가상 머신들이 메모리를 공유하려 할 경우, 하나의 가상 머신이 직접 상기 메모리 관리부에 메모리 공유 명령을 전송하고,
    상기 메모리 관리부는 상기 메모리 공유 명령을 수신하여 상기 복수 개의 가상 머신들이 상기 공유하고자 하는 메모리에 접근하는 것을 허가하는 것을 특징으로 하는 장치.
  13. 가상화 시스템에서 메모리 접근을 제어하는 장치에 있어서,
    상기 가상화 시스템에서 소정 메모리 영역에 대한 접근을 요청하는 하이퍼바이저; 및
    상기 접근 요청에 따라 상기 메모리 영역이 가상 머신에 의해 점유되어 있는지 여부를 검사하고, 상기 검사 결과에 따라 선택적으로 상기 하이퍼바이저의 메모리 접근을 허가하며, 상기 가상화 시스템에서 하이퍼바이저로 하여금 소정 가상 머신이 사용하는 메모리 영역에 대한 접근을 허용해야 하는 예외 상황을 미리 저장하는 메모리 관리부를 포함하고,
    상기 설정된 예외 상황이 발생한 경우, 상기 메모리 관리부가 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하고, 상기 예외 상황에 따른 작업이 완료된 후 상기 암호화된 메모리 영역을 복호화하며,
    상기 메모리 관리부는 상기 소정 가상 머신이 사용하는 메모리 영역을 암호화하는 암호화부를 더 포함하고,
    상기 하이퍼바이저는 상기 메모리 관리부에 의한 메모리 접근 허가 없이는 상기 메모리 영역에 대한 직접적인 접근이 거부되며, 상기 암호화부에 직접 접근할 수 없어 상기 암호화된 메모리 영역을 임의로 복호화할 수 없는 것을 특징으로 하는 장치.
  14. 제 13 항에 있어서,
    상기 예외 상황은,
    가상 머신 또는 하이퍼바이저의 메모리 부족으로 인한 스왑의 경우, 메모리에 적재된 가상 머신의 동작을 일시정지시키거나 종료시켜 디스크에 저장하는 경우, 또는 가상 머신이 현재의 물리 머신으로부터 다른 물리 머신으로 재할당되는 이주의 경우 중 적어도 하나인 것을 특징으로 하는 장치.
  15. 삭제
KR1020110060843A 2011-06-22 2011-06-22 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 KR101323858B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110060843A KR101323858B1 (ko) 2011-06-22 2011-06-22 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110060843A KR101323858B1 (ko) 2011-06-22 2011-06-22 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130000253A KR20130000253A (ko) 2013-01-02
KR101323858B1 true KR101323858B1 (ko) 2013-11-21

Family

ID=47833874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110060843A KR101323858B1 (ko) 2011-06-22 2011-06-22 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101323858B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US11068203B2 (en) * 2018-08-01 2021-07-20 Micron Technology, Inc. NVMe direct virtualization with configurable storage
US11403409B2 (en) * 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US11347529B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Inject interrupts and exceptions into secure virtual machine
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11308215B2 (en) 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
KR102287522B1 (ko) * 2019-09-10 2021-08-09 엔에이치엔 주식회사 외부 장치와 자원들을 공유하는 사용자 컴퓨터 장치 및 방법
US20230168913A1 (en) * 2021-02-26 2023-06-01 Lg Electronics Inc. Signal processing device and display apparatus for vehicle including the same
WO2023191195A1 (ko) * 2022-03-31 2023-10-05 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
US20050251806A1 (en) * 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
KR20080093359A (ko) * 2007-04-16 2008-10-21 삼성전자주식회사 가상화 환경에서의 안전한 시스템 보호 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235123A1 (en) * 2004-04-19 2005-10-20 Zimmer Vincent J Method to manage memory in a platform with virtual machines
US20050251806A1 (en) * 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
KR20080093359A (ko) * 2007-04-16 2008-10-21 삼성전자주식회사 가상화 환경에서의 안전한 시스템 보호 장치 및 방법

Also Published As

Publication number Publication date
KR20130000253A (ko) 2013-01-02

Similar Documents

Publication Publication Date Title
KR101323858B1 (ko) 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US10547445B2 (en) Multiple encryption keys for a virtual machine
KR102355213B1 (ko) 운영 체제 공격으로부터 애플리케이션 기밀사항을 보호하는 기법
KR102257320B1 (ko) 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링
JP6913636B2 (ja) 共有ページ
US9021476B1 (en) Ensuring the privacy and integrity of a hypervisor
US10628579B2 (en) System and method for supporting secure objects using a memory access control monitor
CN107735768A (zh) 安全初始化
US20130275973A1 (en) Virtualisation system
KR101213572B1 (ko) 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법
WO2018063670A1 (en) Multi-crypto-color-group vm/enclave memory integrity method and apparatus
CN107690628A (zh) 具有所有权表的数据处理装置和方法
CN107690621A (zh) 受保护的异常处置
CN107690629A (zh) 地址转换
US20090132804A1 (en) Secured live software migration
JP6682752B2 (ja) セキュアエンクレーブを用いてデータ暗号化を強化するための技術
US20090240953A1 (en) On-disk software image encryption
US20190065236A1 (en) Ensuring the privacy and integrity of a hypervisor
Zhang et al. PALM: security preserving VM live migration for systems with VMM-enforced protection
US9135046B1 (en) Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up
EP2535832B1 (en) A method for operating a virtual machine over a file system
Nakashima et al. MigSGX: a migration mechanism for containers including SGX applications
CN112241309B (zh) 一种数据安全方法、装置、cpu、芯片及计算机设备
US20230401081A1 (en) Software isolation of virtual machine resources
US20240104193A1 (en) Direct assignment of physical devices to confidential virtual machines

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 6