KR102672577B1 - 초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작 - Google Patents

초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작 Download PDF

Info

Publication number
KR102672577B1
KR102672577B1 KR1020217026588A KR20217026588A KR102672577B1 KR 102672577 B1 KR102672577 B1 KR 102672577B1 KR 1020217026588 A KR1020217026588 A KR 1020217026588A KR 20217026588 A KR20217026588 A KR 20217026588A KR 102672577 B1 KR102672577 B1 KR 102672577B1
Authority
KR
South Korea
Prior art keywords
hypervisor
secure
restart
computer
host server
Prior art date
Application number
KR1020217026588A
Other languages
English (en)
Other versions
KR20210118130A (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 KR20210118130A publication Critical patent/KR20210118130A/ko
Application granted granted Critical
Publication of KR102672577B1 publication Critical patent/KR102672577B1/ko

Links

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/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
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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
    • 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
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45587Isolation or security of virtual machine instances
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

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

Abstract

보안 게스트를 시작하기 위한 방법은 호스트 서버에 가상 머신(VM)을 디스패치(dispatch) 하는 요청을, 호스트 상에서 실행 중인 하이퍼바이저에 의해서, 수신하는 단계를 포함한다. 상기 VM은 상기 호스트 서버에 상기 하이퍼바이저에 의해서, 디스패치 된다. 상기 VM은 재-부팅 명령(a reboot instruction)을 포함한다. 상기 재-부팅 명령은 상기 VM을 보안 모드로(in a secure mode) 재-시작(restart)하기 위해 상기 하이퍼바이저에 의해서, 트리거 된다.

Description

초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작
[0001] 본 발명은 일반적으로 컴퓨터 기술에 관한 것이고, 더 구체적으로는, 초기 프로그램 로드 메커니즘을 사용하여 보안 게스트를 시작하는 것에 관한 것이다.
[0002] 클라우드 컴퓨팅 및 클라우드 스토리지는 사용자에게 제3자의 데이터 센터들에 데이터를 저장하고 처리할 수 있는 능력을 제공한다. 클라우드 컴퓨팅은 고객에게 하드웨어를 구입하거나 물리적 서버를 위한 바닥 공간을 제공할 것을 요구하지 않으면서 가상 머신(VM)을 빠르고 쉽게 공급하는 능력을 제공한다. 고객은 고객의 선호도 혹은 요구 사항의 변화에 따라 VM을 쉽게 확장하거나 축소할 수 있다. 일반적으로 클라우드 컴퓨팅 공급자는 공급자의 데이터 센터에 있는 서버에 물리적으로 상주하는 VM을 공급한다. 특히 컴퓨팅 공급자가 동일한 서버에 둘 이상의 고객 데이터를 저장하는 경우가 많기 때문에 고객은 종종 VM에서의 데이터 보안(the security of data)에 대해 걱정한다. 고객은 자신의 코드/데이터와 클라우드 컴퓨팅 공급자의 코드/데이터 사이, 그리고 자신의 코드/데이터와 공급자의 사이트에서 실행되는 다른 VM의 코드/데이터 간의 보안을 원할 수 있다. 또한 고객은 머신 상에서 실행되는 다른 코드로부터의 잠재적인 보안 침해(potential security breaches from other code running on the machine)뿐만 아니라 공급자의 관리자들로부터 보안을 원할 수 있다.
[0003] 이러한 민감한 상황을 처리하기 위해 클라우드 서비스 공급자는 적절한 데이터 격리(data isolation)및 논리 스토리지 분리(logical storage segregation)를 보장하기 위해 보안 컨트롤들을 구현할 수 있다. 클라우드 인프라를 구현할 때 가상화를 광범위하게 사용하면 가상화가 운영 체제(OS)와 기본(underlying) 하드웨어 (컴퓨팅, 스토리지 또는 네트워킹 하드웨어) 간의 관계를 변경하므로 클라우드 서비스 고객에게 고유한 보안 문제가 발생한다. 이 때문에 자체적으로 적절하게 구성, 관리 및 보안되어야 하는 추가 계층으로서 가상화가 도입된다.
[0004] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 비-제한적인 방법의 예(non-limiting example method)는 호스트 서버에 가상 머신(VM)을 디스패치(dispatch) 하는 요청을, 호스트 상에서 실행 중인 하이퍼바이저에 의해서, 수신하는 단계를 포함한다. 상기 VM은 상기 호스트 서버에, 상기 하이퍼바이저에 의해서, 디스패치 된다. 상기 VM은 재-부팅 명령(a reboot instruction)을 포함한다. 상기 재-부팅 명령은 상기 VM을 보안 모드로(in a secure mode) 재-시작(restart)하기 위해 상기 하이퍼바이저에 의해서 트리거 된다. 본 발명의 하나 또는 그 이상의 실시 예들의 기술적 효과들과 잇점들은 비-보안 VM에 의해서 실행되는 재-부팅 명령을 사용하여 보안 VM을 시작하는 능력을 포함할 수 있다는 것이다.
[0005] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 상기 재-부팅 명령은 초기 프로그램 로드(IPL) 메커니즘을 이용한다. 기술적 효과들과 잇점들은 보안 VM을 시작하기 위해 표준 IPL 메커니즘을 사용하는 능력을 포함할 수 있다는 것이다.
[0006] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 디스패치 하는 단계는 상기 VM의 암호화된 이미지(an encrypted image)를 상기 호스트 서버의 메모리로 로드 하는 단계, 및 상기 재-부팅 명령을 포함하는 암호화 안된 부트스트랩 컴포넌트(an unencrypted bootstrap component)를 상기 메모리로 로드 하는 단계를 포함한다. 기술적 효과들과 잇점들은 하이퍼바이저가 상기 VM 이미지의 첫번째 해독없이 비-보안 모드에서 상기 VM을 시작하는 능력을 포함할 수 있다는 것이다.
[0007] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 디스패치 하는 단계는 컨트롤을 상기 암호화 안된 부트스트랩 컴포넌트로 이전하는 단계(transferring)를 더 포함한다. 기술적 효과들과 잇점들은 하이퍼바이저가 상기 VM 이미지의 첫번째 해독없이 비-보안 모드에서 상기 VM을 시작하고 그 다음 보안 모드에서 상기 VM을 재-시작하기 위해 브트스트랩 컴포넌트로 컨트롤을 이전하는 능력을 포함할 수 있다는 것이다.
[0008] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 VM은 상기 디스패치 하는 단계 이후 암호화된 컴포넌트들을 포함한다. 기술적 효과들과 잇점들은 하이퍼바이저가 상기 VM 이미지의 첫번째 해독없이 비-보안 모드에서 상기 VM을 시작하는 능력을 포함할 수 있다는 것이다.
[0009] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 재-시작은 상기 VM의 암호화된 컴포넌트들을 해독하는 단계(decrypting)를 포함한다. 기술적 효과들과 잇점들은 재-시작 프로세스의 일부로서 암호화된 VM 이미지를 해독하는 단계(decrypting)를 포함할 수 있다는 것이다.
[0010] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 하이퍼바이저에 의해서 디스패치 된 상기 VM은 비-보안 모드이고 상기 VM의 데이터는 상기 하이퍼바이저에 의해서 액세스 가능하다. 기술적 효과들과 잇점들은 하이퍼바이저가 상기 VM 이미지의 첫번째 해독없이 비-보안 모드에서 상기 VM을 시작하는 능력을 포함할 수 있다는 것이다.
[0011] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 방법은 상기 VM이 보안 모드라는 결정에 기초하여, 상기 VM의 모든 데이터를 상기 하이퍼바이저가 액세스하는 것을 금지하는 단계를 포함한다. 기술적 효과들과 잇점들은 보안 VM 환경을 제공하는 능력을 포함할 수 있다는 것이다.
[0012] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 호스트 서버 상의 VM은 상기 VM의 암호화된 이미지를 포함한다. 또한 상기 재-부팅 명령을 트리거 하는 단계는 상기 재-시작을 보안 모드로 수행하기 위해 상기 하이퍼바이저가 보안 인터페이스 컨트롤을 호출하는 단계를 포함하며, 상기 하이퍼바이저는 상기 호스트 상의 VM의 암호화된 이미지 및 해독 정보의 위치를 명시한다.
[0013] 본 발명의 추가의 또는 대안적 실시 예들에 따라, 상기 재-시작을 수행하는 단계는 상기 해독 정보에 기초하여 상기 VM을, 상기 보안 인터페이스 컨트롤에 의해서, 해독하는 단계를 포함한다. 상기 재-시작을 수행하는 단계는 또한 상기 해독된 VM에 기초하여 상기 VM을 재-시작하는 단계를 포함하고, 상기 재-시작하는 단계이후, 상기 하이퍼바이저는 상기 VM의 모든 데이터에 액세스하는 것이 금지된다.
[0014] 본 발명의 다른 실시 예들은 전술한 방법의 특징들을 컴퓨터 시스템들 및 컴퓨터 프로그램 제품들에 구현한다.
[0015] 추가적인 특징들 및 이점들이 본 공개의 기술을 통해 실현된다. 본 발명의 다른 실시 예들 및 특징들은 여기서 상세히 설명되어 있고 본 발명의 일부로 고려된다. 이점들과 특징들이 있는 본 발명을 더 잘 이해하려면, 설명과 도면들을 참조한다.
[0014] 본 발명의 배타적 권리에 관한 구체적인 사항들은 본원 명세서의 결론 부분에 기재된 청구항들에 구체적으로 지적되고 명확하게 청구된다. 본 발명의 실시예들의 전술한 및 기타 특징들 및 이점들은 첨부 도면과 함께 제공된 다음의 상세한 설명으로부터 명백하다:
[0015] 도 1은 본 발명의 하나 또는 그 이상의 실시 예들에 따른 IPL(initial program load) 메커니즘을 사용하여 게스트를 시작하기 위한 시스템의 개략도(schematic diagram)를 도시한다;
[0016] 도 2는 본 발명의 하나 또는 이상의 실시 예들에 따른 IPL(initial program load) 메커니즘을 사용하여 보안 게스트를 시작하기 위한 프로세스의 플로(flow diagram)를 도시한다;
[0017] 도 3은 본 발명의 하나 또는 그 이상의 실시 예들에 따라 호스트 서버에 로드 된 보안 게스트를 포함하는 시스템의 개략도를 도시한다;
[0018] 도 4는 본 발명의 하나 또는 그 이상의 실시 예들에 따른 보안 게스트를 시작하기 위한 IPL 정보 블록을 도시한다;
[0019] 도 5는 본 발명의 하나 또는 그 이상의 실시 예들에 따른 보안 게스트를 시작하기 위한 프로세스 흐름(process flow)을 도시한다.
[0020] 도 6은 본 발명의 하나 또는 그 이상의 실시 예들에 따른 클라우드 컴퓨팅 환경을 도시한다;
[0021] 도 7은 본 발명의 하나 또는 그 이상의 실시 예들에 따른 추상화 모델 계층들을 도시한다;
[0022] 도 8은 본 발명의 하나 또는 그 이상의 실시 예들에 따른 시스템을 도시한다; 및
[0023] 도 9는 본 발명의 하나 또는 그 이상의 실시 예들에 따른 처리 시스템을 도시한다;
[0024] 본 발명에 도시된 다이어그램은 예시적이다. 본 발명의 정신을 벗어남이 없이 도면 또는 거기에 설명된 동작들에 대한 많은 변형들이 있을 수 있다. 예를 들어 작업들을 다른 순서로 수행하거나 작업을 추가, 삭제 또는 수정할 수 있다. 또한, "결합된"이라는 용어 및 그 변형들은 2개의 엘리멘트들 사이에 통신 경로를 갖는 것을 설명하며, 엘리멘트들 사이에 개재 엘리멘트/연결이 없는 엘리멘트들 사이의 직접적인 연결을 의미하지 않는다. 이러한 모든 변형들은 본 명세서의 일부로 간주된다.
[0025] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 새로운 IPL(initial program load) 메커니즘은 보안 모드로 전송을 요청하는 호스트 서버에서 실행하는 게스트, 또는 VM(virtual machine)을 허용하도록 제공된다. 보안 모드에 있을 때, 하이퍼바이저는 VM의 데이터에 액세스할 수 없다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라, VM이 보안 모드에서 실행할 때, 하드웨어 및/또는 펌웨어에서 구현된 보안 인터페이스 컨트롤은 보안 게스트와 호스트 서버에서 실행되는 기타 게스트들 사이에서 격리(isolation)를 제공하는 데 사용된다.
[0026] 본 발명의 하나 또는 그 이상의 실시 예들에 따라 VM의 암호화된 이미지는 암호화되지 않은 부트스트랩 컴포넌트(an unencrypted bootstrap component)와 함께 호스트 서버의 VM 메모리에 로드된다. 부트스트랩 컴포넌트는 VM의 암호화된 이미지의 모든 메모리 페이지들에 대한 정보뿐만 아니라 이미지를 해독하고 보안 모드(즉, 보안 게스트로써)에서 VM을 재-시작하는 데 사용하기 위한 메타-데이터 구조(meta-data structure)에 대한 정보도 액세스할 수 있다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라 메타-데이터 구조는 또한 사용될 수 있는 운영 체제 이미지의 인접 영역들의 목록을 포함한다. 해당 기술 분야에서 알 수 있는 바와 같이, 운영 체제의 모든 메모리 페이지들을 개별적으로 나열하는 대신, 각각 시작 페이지와 페이지들의 수를 포함하는 영역들의 목록은 공간과 스피드-업(speed-up)처리를 세이브할 수 있다. 예를 들어, 만일 가상의 운영 체제 이미지(hypothetical operating system image )가 0, 1, 2, 3, 6, 7 페이지들에 상주한다면, 이것은 (0,4) 및 (6,2)로 명시될 수 있다.
[0027] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 부트스트랩 컴포넌트(bootstrap component)는 새로운 포맷의 IPL 정보 블록을 준비하는 단계(preparing); 예를 들어, "Diagnose 308 Subcode 5"를 사용하여 IPL 정보 블록을 세트하는 단계(setting); 및 예를 들어, " Diagnose 308 Subcode 3" 또는 새로운 코드를 사용하여 IPL을 수행하는 단계(performing)에 의해서, 재-부팅(re-boot)또는 재-시작 연산을 트리거한다(trigger). IPL 정보 블록은 다음을 포함할 수 있다: 이미지 키 및 무결성 값들이 있는 보안 실행(secure execution:SE)헤더; 해독될 필요가 있는 메모리 영역들의 목록; 및 이미지의 모든 페이지들의 암호화에 사용된 초기화 벡터들(initialization vectors: IVs). 종래의 환경에서, IPL 정보 블록은, CDROM과 같은 디노미네이션, 디스크 디바이스 주소 일 수 있는 부팅 소스의 식별 정보(the identification of the boot source)를 포함한다.  본 발명의 하나 또는 그 이상의 실시 예들에 의해 구현되는 보안 환경에서, 부팅 소스 식별 정보는 암호화 키들 및 해독될 필요가 있는 메모리 영역들을 포함한다. 사용되는 암호화 방법에 따라, 본 발명의 하나 또는 그 이상의 실시 예들은 암호화에 무작위성을 추가하기 위해 IV들을 구현한다. 고유한 IV가 메모리 영역들 각각에 대해 제공될 수 있다. IV들을 이용하는 암호화(cryptographic) 방법의 이러한 유형은 암호화의 품질을 향상시키는 데 사용할 수 있다. 예를 들어, 만일 두 개의 동일한 메모리 페이지들이 동일 비밀 키로 암호화되지만, IV들이 다르다면, 암호화된 컨텐츠는 서로 다르게 될 것이고, 이는 상대방이 컨텐츠가 동일하다는 것을 아는 것을 불가능하게 한다.
[0028] "진단(Diagnose)"은 게스트 운영 체제가 하이퍼바이저와 상호 작용할 수 있도록 하는 명령의 일 예이다.  진단 명령은 IBM z Systems®에 의해 사용되며, 진단(308)은 프로그램-지시된(program-directed) IPL(게스트가 재부팅을 요청할 수 있도록 하는)연산을 위해 특별히 사용된다. 서브코드(Subcode)(5)는 IPL 파라미터들(예: 사용할 부팅 디바이스)을 세트(set)하는 데 사용되고 서브코드(3)은 서브코드(5)에 의해서 이전에 명시된 부팅 디바이스로부터 재-부팅(reboot)을 트리거하는 데 사용된다. 운영 체제 내로부터 재부팅을 요청하는 메커니즘은 아키텍처에 따라 다르다. 일부 x86 머신들에서, 상업적으로 구할 수 있는 소프트웨어 도구들을 사용하여 부팅 디바이스를 바꿀 수 있다.
[0029] 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 하이퍼바이저는 보안 게스트 구성을 생성하고 암호화된 VM 이미지의 언팩킹 또는 해독을 수행하기 위해, 보안 인페이스 컨트롤(또한 여기서 "울트라바이저"라 함)을 호출하기 위한 SE 헤더를 포함하는, IPL 정보 블록으로부터의 정보를 사용한다. 만일 언팩킹이 성공하면, 언팩된 VM은 컨트롤을 얻게 되고(gain), 보안 모드에서 실행된다. 만일 언팩킹에 실패하면, VM 은 비-보안 모드에서 디스에이블 된(disabled) 대기 상태에 진입한다(enter).
[0030] 호스트 하이퍼바이저의 컨트롤 하의 게스트로서 실행되는, VM은 그 게스트에 가상화 서비스들을 투명하게 제공하기 위해 하이퍼바이저에 의존한다. 이들 서비스들은 보안 주체(a secure entity)와 이 다른 주체에 의한 보안 자원들에 대한 액세스를 일반적으로(traditionally) 허용하는 신뢰할 수 없는 다른 신뢰할 수 없는 주체(and another untrusted entity) 사이의 모든 인터페이스에 대해 적용될 수 있다.
이러한 서비스들은 메모리 관리(memory management), 명령 에뮬레이션(instruction emulation) 및 인트럽션 처리(interruption processing)가 포함할 수 있지만, 이에 국한되지는 않는다. 예를 들어, 인터럽트(interrupt) 및 예외 주입(exception injection)을 위해서 하이퍼바이저는 일반적으로 게스트의 프리픽스 영역(prefix area)(낮은 코어)를 읽고 및/또는 쓴다(read and/or write). 여기서 사용된 "가상 머신" 또는 "VM"이라는 용어는 물리적 머신(컴퓨팅 장치, 프로세서 등) 및 처리 환경(OS(operating system), 소프트웨어 자원들 등)의 논리적 표현을 가리킨다. VM은 하부 호스트 머신(물리적 프로세서 또는 프로세서들의 세트)에서 실행되는 소프트웨어로 유지된다. 사용자 또는 소프트웨어 자원의 관점에서, VM은 자체적으로 독립적인 물리적 머신인 것처럼 보인다. 여기서 사용된 "하이퍼바이저" 및 "VMM(VM Monitor)"라는 용어들은 동일 호스트 머신에서 다수의 (그리고 때때로 다른) OS들을 사용하여 다수의 VM들을 관리하고 실행하게 하는 처리 환경 또는 플랫폼 서비스를 가리킨다.  VM을 배치하는 것은 VM의 설치 프로세스와 VM의 활성화(또는 시작) 프로세스를 포함한다는 것을 이해해야 한다. 또다른 예에서, VM을 배치하는 것은 VM의 활성화(또는 시작) 프로세스를 포함한다(예를 들어, VM이 이전에 설치되었거나 이미 존재하는 경우).
[0031] 그러나, 보안 게스트들을 용이하게 하는 데는, 기술적 문제가 존재하며, 이러한 기술적 문제는 추가적인 보안이 하이퍼바이저와 보안 게스트들 사이에서 요구된다는 것이고, 이 추가적인 보안으로 하이퍼바이저는 VM으로부터의 데이터에 액세스할 수 없고, 따라서 위에서 설명한 것과 같은 서비스를 제공할 수 없다는 것이다.
[0032] 현재 이용 가능한 기술적 솔루션들에서, 하이퍼바이저(예: IBM®에 의한 z/VM®또는 오픈 소스 소프트웨어 커널 기반의 가상 머신 (Kernel Based Virtual machine: KVM))는 해석-실행-시작(Start-Interpretive-Execution: SIE)명령을 발명함으로써, 물리적 처리 유닛(physical processing unit)또는 호스트 서버에 새로운 VM을 시작한다. VM 상태의 일부(Part of a state of the VM)와 그 특성들(its characteristics)은 SIE 명령의 오퍼랜드(일반적으로 제2 오퍼랜드)에 의해서 포인트되는(pointed to) 컨트롤 블록들(상태 설명 또는 "SD"로써)에 세이브 된다. 그러한 경우, 하이퍼바이저는 VM에 대한 데이터의 컨트롤을 가지며, 일부 경우들에서그러한 컨트롤은 VM에서 실행될 명령들을 해석하기(interpret) 위해 필요하다. 기존 하이퍼바이저들은 VM들을 시작하기 위해 SIE 명령을 통해 그러한 인터페이스를 사용하는 것에 의존한다.
[0033] 여기서 설명된 보안 실행은 보안 스토리지 및 비-보안 스토리지(non-secure storage)사이뿐만 아니라 다른 보안 사용자들에 속하는 보안 스토리지 사이에서도 격리(isolation)를 보장하는 하드웨어 메커니즘을 제공한다. 보안 게스트들을 위해, 추가 보안이 "신뢰할 수 없는" 하이퍼바이저와 보안 게스트들 사이에서 제공된다. 이렇게 하기 위해서, 하이퍼바이저가 일반적으로 게스트들을 대신하여 수행하는 많은 기능들(functions)이 머신에 포함되야 할 필요가 있다. 보안 인터페이스 컨트롤은 하이퍼바이저 및 보안 게스트들 사이에서 보안 인터페이스를 제공한다. 보안 인터페이스 컨트롤은 하드웨어와 협업하여 이러한 추가 보안을 제공한다. UV(ultravisor)라는 용어는 본 발명의 하나 또는 그 이상의 실시 예들에 의해 구현될 수 있는 보안 인터페이스 컨트롤의 일 예를 가리키기 위해 여기서 사용된다.
[0034] 보안 인터페이스 컨트롤은, 일 예에서, 내부의, 보안이 되는 및 신뢰할 수 있는 하드웨어 및/또는 펌웨어로(in internal, secure, and trusted hardware and/or firmware) 구현된다. 보안 게스트 또는 주체를 위해서, 보안 인터페이스 컨트롤은 보안 환경의 초기화 및 유지뿐만 아니라 하드웨어에서 이러한 보안 주체들의 디스패치의 조정도 제공한다. 보안 게스트가 데이터를 활성으로(actively) 사용하고 그 것이 호스트 스토리지에 상주하는 동안, 그것은 보안 스토리지에서 "명확하게(in the clear) "로 보관된다. 보안 스토리지는 단일 보안 게스트에 의해 액세스될 수 있으며-이는 하드웨어에 의해 엄격하게 시행된다. 즉, 보안 인터페이스 컨트롤은 모든 비-보안 주체(non-secure entity)(하이퍼바이저 또는 기타 비-보안 게스트들(non-secure guests)을 포함) 또는 다른 보안 게스트가 상기 데이터에 액세스하는 것을 금지한다. 이 예에서, 보안 인터페이스 컨트롤은 가장 낮은 레벨들의 펌웨어에서 신뢰할 수 있는 부분으로 실행된다. 가장 낮은 레벨, 또는 밀리코드(millicode)는 실제로 하드웨어의 확장이고 z/architecture에 정의된 복잡한 명령들 및 함수들을 구현하는 데 사용된다. 밀리코드는 보안 실행의 컨텍스트에서, 자신 소유의 보안 UV 스토리지, 비-보안 하이퍼바이저 스토리지(non-secure hypervisor storage), 보안 게스트 스토리지 및 공유 스토리지를 포함하는 스토리지의 모든 부분들에 액세스할 수 있다. 이 것은 보안 게스트에 의해서 또는 상기 게스트를 지원하는 하이퍼바이저에 의해서 필요한 모든 기능들을 제공할 수 있게 해 준다. 보안 인터페이스 컨트롤은 또한 하드웨어에 직접 액세스할 수 있는 있으며, 이는 보안 인터페이스 컨트롤에 의해서 설정된 조건들의 컨트롤 하에 하드웨어가 보안 검사를 효율적으로 제공할 수 있게 해준다.
[0035] 본 발명의 하나 또는 그 이상의 실시 예들은 암호화된 VM 이미지를 이용하는 기존의 시스템들보다 향상된 기술을 제공한다. 기존 시스템들은 호스트 머신에서 VM을 시작하기 전에 암호화된 VM 이미지를 해독한다. 이 접근 방식의 단점은 VM 이미지가 암호화되었는지를 결정하고 그리고 호스트 머신에 VM을 디스패치 하거나, 시작하기 전에 해독을 수행하기 위해 전문적인 컴퓨터 명령들이 하이퍼바이저에서 요구된다는 것이다. 본 발명의 하나 또는 그 이상의 실시 예들은 하이퍼바이저 디스패치 코드(hypervisor dispatch code)에 대한 갱신들을 요구하지 않거나, 또는 VM이 호스트 머신에서 시작되기 전에 VM 이미지가 암호화되어 있음을 하이퍼바이저가 알고 있을 것을 요구하지 않는다. 또한, 일단 보안 VM이 시작되면, 하이퍼바이저가 보안 VM의 모든 데이터에 액세스할 수 없을지라도 하이퍼바이저는 보안 VM을 시작하여 이용될 수 있다.
[0036] 본 발명의 하나 또는 그 이상의 실시 예들은 복수의 VM들을 호스트하는 호스트 서버에 VM을 실행하기위한 보안 환경을 제공함으로써 기존 시스템들보다 향상된 기술을 제공한다. 본 발명의 하나 또는 그 이상의 실시 예들의 실질적인 적용들은 호스트 머신에서 실행되는 보안 게스트의 모든 데이터에 대한 승인되지 않은(unauthorized) 액세스(의도적 또는 비의도적)를 금지하는 능력을 포함한다.
[0037] 이제 도 1로 돌아가면, IPL 메커니즘을 사용하여 보안 게스트를 시작하기 위한 시스템(100)의 개략도가 본 발명의 하나 또는 그 이상의 실시 예들에 따라 일반적으로 도시된다. 도 1에 도시된 시스템(100)은, 호스트 서버의 게스트 주소 공간(102), 기본 입력/출력 시스템(Basic Input/Output System: BIOS)(104) 또는 로더(loader)를 포함하는 호스트 디스크, 및 보안 게스트의 운영 체제 컴포넌트를 저장하는 게스트 디스크를 포함한다. "게스트" 및 "가상 머신" 또는 "VM"이라는 용어들은 여기서 교환할 수 있게 사용된다. 도 1에 도시된 보안 게스트의 운영 체제 컴포넌트들은 암호화되지 않은 부트스트랩 컴포넌트(106)와 게스트(108)의 암호화된 이미지를 포함한다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 호스트 서버에서 실행 중인 하이퍼바이저는 게스트를 게스트 주소 공간(102)에 로드하도록 지시된다. 하이퍼바이저는 게스트의 이미지가 있는 위치(이 경우 게스트 디스크에)에 대한 정보를 수신하고 게스트 주소 공간(102)에 운영 체제 컴포넌트들을 로드하기 위해 BIOS(104) 시작한다(initialize).             
[0038] BIOS(104)가 게스트 주소 공간(102)에 운영 체제 컴포넌트들을 로드 할 때, 게스트는 하이퍼바이저에 비-보안 게스트로 타난다. 하이퍼바이저는 게스트의 이미지가 암호화되어 있고 현재 동작하지 않는다는 것(not operational)을 알지 못한다. 하이퍼바이저는 주소가 명시된 부트스트랩 컴포넌트(106)에 컨트롤을 전달하고, 부트스트랩 컴포넌트(106)는 울트라바이저에 의한 보안 모드에서 게스트의 IPL(initial program load) 또는 재시작을 트리거 한다.  IBM Z® 구현에서, 운영 체제 컴포넌트들이 있는 디스크는 상기 컴포넌트들이 디스크에 상주하는 위치, 상기 컴포넌트들이 로드되어야 하는 메모리 위치들, 그리고 초기 로딩이 완료된 후 실행할 첫 번째 명령의 주소(즉, 부트스트랩 컴포넌트의 시작 주소)를 설명하는 숨겨진 부트맵(bootmap) 파일이 포함되어 있다. 하나 또는 그 이상의 실시 예들은 운영 체제의 실행을 시작하는 데 사용되는 고정된 메모리 주소를 가질 수 있는 기타 아키텍처들에 의해 구현될 수도 있다.
[0039] 도 1에 도시된 바와 같이, 부트스트랩 컴포넌트(106)는 보안 모드로의 전환을 트리거하기 위해 하이퍼바이저에 의해 실행되는 부트스트랩 코드뿐만 아니라 게스트(108)의 암호화된 이미지를 해독하기 위해 울트라바이저에 의해 사용되는 메타데이터를 포함하는 SE 헤더도 포함한다.
[0040] 이제 도 2로 돌아가면, IPL(initial program load) 메커니즘을 사용하여 보안 게스트를 시작하기 위한 프로세스(200)의 플로가 본 발명의 하나 또는 그 이상의 실시 예들에 따라 일반적으로 도시된다. 도 2에 도시된 처리는, 호스트 머신에서 실행되는 하이퍼바이저와 울트라바이저의 조합에 의해서, 수행될 수 있다. 도 2에 도시된 처리는, 도 1의 게스트(108)의 암호화된 이미지 및 부트스트랩 컴포넌트(106)와 같은, 운영 체제 컴포넌트들이, 도 1의 게스트 주소 공간(102)과 같은, 호스트 서버의 메모리에 로드되고(loaded), 컨트롤이 부트스트랩 컴포넌트로 이전된(transferred) 후에, 수행된다.
[0041] 블록(202)에서, 게스트(예: 게스트에서 실행되는 부트스트랩 코드)는 IPL 파라미터들을 세트(set)하기 위해 하이퍼바이저를 호출한다. IPL 파라미터들은 SE 헤더, 메모리 영역, 그리고 해독을 위해 사용되는 초기화 벡터들(initialization vectors: IVs)을 포함할 수 있지만, 이에 국한되지 않는다. 여기서 사용된 바와 같이, 용어 "SE 헤더"는 운영 체제 이미지를 해독하는 데 사용되는 키와 같은, 운영 체제에 대한 민감한 정보를 포함하는 데이터 구조를 가리킨다. 이 정보는 민감하므로, SE 헤더의 부분들은 암호화될 수 있는데, 이는 오직 보안 컨트롤 인터페이스만이 SE 헤더에서 이 데이터를 해독할 수 있기 때문이다. 상기 메모리 영역은 암호화된 이미지에서 어느 메모리 영역(들)이 해독을 요구하는지를 명시한다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라 사설/공공 키 쌍들이 암호화 및 해독을 수행하는 데 사용된다. VM 이미지는 암호화를 수행하는 개인 또는 주체에 알려진 공공 키를 사용하여 암호화될 수 있고, VM 이미지는 울트라바이저에 알려진 사설 키를 사용하여 해독될 수 있다. 본 발명의 하나 또는 그 이상의 실시 예들은 기술 분야에 알려진 모든 암호화/해독 계획(scheme)을 구현할 수 있고, 사설/공공 키 쌍들은 구현될 수 있는 계획의 일 예일뿐이다. SE 헤더에 포함된 키는 보호되기 때문에, 이미지 암호화 키도 또한 대칭 키(a symmetric key )가 될 수 있다(그리고 해독을 위해서 사용될 수 있다).
[0042] 도 2의 블록(204)에서, 하이퍼바이저는 IPL 파라미터들이 유효한지를 결정한다. 상기 유효성 확인(validation)은 SE 헤더의 존재, 적어도 하나 이상의 메모리 영역의 존재를 체크하는 단계(checking)와 다수 메모리 영역들이 중첩되지(ovrlap) 않는지 확인하는 단계(ensuring)를 포함할 수 있다. 블록(204)에서, 하이퍼바이저는 유효성 체크들을 수행하고 하이퍼바이저가 소유하고 게스트에게 액세스 가능하지 않는 일부 메모리 위치에 파라미터들을 저장한다. 그러므로, 파라미터의 존재는 그들의 유효성에 대한 충분한 표시(indication)이다.  
[0043] 만일 블록(206)에서, 상기 IPL 파라미터들이 유효하지 않은 것으로 결정되면, 처리는 블록(206)에서 계속되고, 게스트는 비-보안 모드에서 실행을 계속한다. 만일 블록(206)에서, IPL 매개변수가 유효한 것으로 결정되면, 처리는 블록(208)에서 계속되고 게스트가 재부팅을 수행하기 위해 하이퍼바이저를 호출한다. 블록(210)에서, 하이퍼바이저는 IPL 파라미터들이 공급되고 체크되었는지 확인한다(verify).
[0044] 만일 도 2의 블록(210)에서, IPL 파라미터들이 공급되고 체크되지 않은 것으로 결정되면, 처리는 블록(206)에서 계속되고 게스트는 비-보안 모드에서 실행을 계속한다. 만일 블록(210)에서, IPL 파라미터들이 공급되고 체크된 것으로 결정되면, 처리는 블록(212)에서 계속된다. 블록(212)에서, 하이퍼바이저는 보안 게스트 구성을 생성하고 암호화된 이미지를 언팩(예: 해독)하고 게스트의 보안 실행을 시작하기 위해 울트라바이저를 호출한다. 블록(214)에서 이미지가 성공적으로 해독되었고 선택적으로 확인되었는지(optionally verified)가 결정된다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라 해독은 이미지에 대해 계산된 체크섬(checksum) 또는 해시(hash)를 SE 헤더에 저장된 체크섬과 비교함으로써 확인된다. 만일 이미지가 해독되고 확인되었다면(decrypted and verified), 처리는 울트라바이저의 컨트롤 하에 보안 모드(즉, 보안 게스트로서)에서 실행 중인 게스트와 함께 블록(216)에서 계속된다. 만일 이미지가 해독되고 확인되지 않았다면, 처리는 블록(218)에서 계속되고, 게스트가 비-보안 모드에서 디스에이블 된(disabled) 대기 상태에 들어간다.
[0045] 이제 도 3으로 돌아가면, 호스트 서버에 로드된 보안 게스트를 포함하는 시스템(300)의 개략도가 본 발명의 하나 또는 그 이상의 실시 예들에 따라 일반적으로 도시된다. 도 3에 도시된 시스템(300)은 암호화된 이미지가 해독되고 보안 시스템이 도 2에서 도시된 것과 같은 프로세스를 사용하여 호스트 머신에서 시작된 후 도 1의 시스템(100)의 상태를 도시한다. 도 3에서 도시된 바와 같이, 이미지(308)의 암호화되지 않은 버전은 게스트 주소 공간(102)에 로드되었고 보안 게스트를 시작하기 위해 컨트롤은 게스트의 커널에 주어졌다.
[0046] 이제 도 4으로 돌아가면, 보안 게스트를 시작하기 위한 IPL 정보 블록(400)의 개략도가 본 발명의 하나 또는 그 이상의 실시 예들에 따라 일반적으로 도시된다. 블록(402)에 도시된 IPL 정보 블록의 전체 배치는 일반적인 IPL 블록 배치이고, 이는 다음을 명시하기 위한 필드들을 포함한다: 블록의 길이(예: 바이트들로); 버전 번호; 디스크 디바이스 주소, "CDROM"과 같은 일반 부팅 디바이스 디노미네이션(denomination) 또는 네트워크 주소와 같은 디바이스 로드 정보(load device information)를 위한 파라미터 블록; 및 만일 부팅 방법이 상기 정보 블록의 첫 번째 부분에 맞지 않는 파라미터들을 요구하는 경우, 사용될 수 있는 추가의 시스템 컨트롤 파라미터(system control parameter: SCP) 데이터를 위한 파라미터 블록. 상기 디바이스 로드 정보를 위한 파라미터 블록(404)은 또한 유형 필드의 예외(the exception of the type field)를 갖는 일반적인 IPL 블록 배치이고, 상기 유형 필드는 본 발명의 하나 또는 그 이상의 실시 예들에 따라 수행될 IPL의 새로운 유형으로서 메모리(디스크, 네트워크 등과 함께)를 포함한다. 이것은 IPL이 암호화된 VM 이미지가 위치된 호스트 서버의 메모리로부터 데이터를 로드 할 수 있게 해준다. 또한, 상기 디바이스 로드 특정 파라미터들 블록(the load device specific parameters block)은 해독을 수행하기 위해 하이퍼바이저에 의해서 사용되는 정보의, 다음과 같은, 새로운 유형들을 포함한다: 해독을 수행하기 위해 사용되는 정보를 갖는 SE 헤더(406); 및 메모리 내의 이미지의 구조를 기술하는 정보를 포함할 수 있는 이미지 정보(408).
[0047] 이제 도 5로 돌아가면, 보안 게스트를 시작하기 위한 프로세스 흐름(500)이 본 발명의 하나 또는 그 이상의 실시 예들에 따라 일반적으로 도시되어 있다. 도 5에 도시된 처리는 호스트 서버에서 실행되는 하이퍼바이저에 의해 수행될 수 있다. 블록(502)에서, 호스트 서버에 VM을 디스패치 하는 요청은 호스트 서버에서 실행 중인 하이퍼바이저에 의해서 수신된다. 블록(504)에서, 상기 VM 은 비-보안 모드로 호스트 서버에 디스패치 된다. 상기 VM이 비-보안 모드에 있을 때, 상기 VM의 데이터는 하이퍼바이저에 의해서 액세스 될 수 있다. 상기 VM은 부트스트랩 컴포넌트를 포함하는 데, 이는 상기 VM을 재-시작하기 위해 사용되는 재-부팅 명령을 포함한다. 본 발명의 하나 또는 그 이상의 실시 예들에 따르면, 상기 디스패치하는 단계(dispatching)는 상기 VM의 암호화된 이미지를 호스트 서버의 메모리로 로드 하는 단계 및 재부팅 명령을 포함하는 암호화되지 않은 부트스트랩 컴포넌트를 상기 메모리로 로드 하는 단계를 포함한다. 상기 디스패치 하는 단계는 또한 부트스트랩 컴포넌트로 컨트롤을 이전하는 단계(transferring)를 포함한다.
[0048] 블록(506)에서, 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 보안 재부팅(a secure reboot)이 상기 부트스트랩 컴포넌트에 의해서 개시된다. 상기 부트스트랩 컴포넌트는 (1) IPL 정보를 세트(set)하고 (2) 재부팅을 요구한다. (1)과 (2) 모두는 하이퍼바이저에 의해서 가로채어 지고(intercepted), 하이퍼바이저는 (2)에 응답하여 컨트롤을 해독을 수행하는 울트라바이저에게 넘겨준다. 해독이 완료될 때, 울트라바이저는 하이퍼바이저를 바이패스하여, 이제 보안 게스트로 컨트롤을 이전한다. 본 발명의 하나 또는 그 이상의 실시 예들에 따라, 상기 재-시작하는 단계는 상기 VM의 암호화된 컴포넌트들의 해독하는 단계를 포함한다. 상기 VM이 보안 모드에 있을 때 하이퍼바이저는 상기 VM의 모든 데이터에 액세스하는 것이 금지된다.
[0049] 본 명세서는 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 여기서 설명된 그러한 가르침들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0050] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크, 네트워크 대역폭, 서버, 처리, 메모리, 스토리지, 애플리케이션, 가상 머신, 및 서비스)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0051] 클라우드 컴퓨팅 특성들은 다음과 같다:
[0052]주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provision)할 수 있다.
[0053]광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰, 랩탑, 및 PDA)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0054]자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0055] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 얼마든지 구매할 수 있는 것처럼 보인다.
[0056] 측정 가능한 서비스(Measured service): 클라우드 시스템은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0057] 서비스 모델들(Service Models)은 다음과 같다:
[0058] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특화 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0059] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 스토리지를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0060] 인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0061] 배치 모델들(Deployment Models)은 다음과 같다:
[0062]사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
[0063]커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
[0064] 공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0065] 하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0066] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
[0067] 이제 도 6을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 6에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(52)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화 된 장치와 통신할 수 있다는 것을 이해해야 한다.
[0068] 이제 도 7을 참조하면, 클라우드 컴퓨팅 환경(50)(도 6)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 7에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
[0069] 하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 스토리지 디바이스들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[0070]가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 스토리지(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).
[0071] 한 예에서, 관리 계층(80)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구를 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0072] 워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 보안 게스트들의 디스패칭(96).
[0071] 이제 도 8으로 돌아가면, 시스템(800)이 본 발명의 하나 또는 그 이상의 실시 예에 따라 도시된다. 시스템(800)은, 예를 들어, 노드(10)(예, 호스트 노드)를 포함하는데, 노드(10)은, 예를 들어, 네트워크(165)을 통해 하나 또는 그 이상의 클라이언트 디바이스들(20A-20C)와 직접 또는 간접적으로 통신한다. 노드(10)는 클라우드 컴퓨팅 제공 업체의 데이터 센터 또는 호스트 서버가 될 수 있다. 노드(10)는 하이퍼바이저(12)를 실행하고, 하이퍼바이저(12)는 하나 또는 그 이상의 VM(15)(15A-15N)의 배치를 용이하게 한다. 노드(10)는 하드웨어/펌웨어 계층(11)을 더 포함하고, 하드웨어/펌웨어 계층(11)은 VM들(15A-N) 및 하이퍼바이저(12)에 의해 요구되는 기능들에 대한 직접적인 지원을 제공할 뿐만 아니라 VM들(15)에 하나 이상의 서비스들을 제공한다. 기존의 기술적 솔루션들에서, 하드웨어/펌웨어 계층(11)과 하이퍼바이저(12) 사이에, 하드웨어/펌웨어 계층(11)과 VM들(15) 사이에, 하이퍼 바이저(12)와 VM들(15) 사이에, 그리고 하드웨어/펌웨어 계층(11)을 통해 하이퍼 바이저(12)와 VM들(15) 사이에 통신이 존재한다. 보안 VM환경을 용이하게 하기 위해, 본 발명의 하나 또는 그 이상의 실시예들에 따른 호스팅 노드(10)은 하이퍼바이저(12)와 하나 또는 그 이상의 VM들(15) 사이에서 어떠한 직접 통신도 포함하지 않는다. 
[0072] 예를 들어, 노드(10)는 클라이언트 장치(20A)가 하나 이상의 가상 머신 (15A-15N)을 배치하는 것을 용이하게 할 수 있다. VM들(15A-15N)은 별개의 클라이언트 장치(20A-20C)로부터의 각각의 요청에 응답하여 배치될 수 있다. 예를 들어, VM(15A)은 클라이언트 장치(20A)에 의해 배치될 수 있고, VM(15B)은 클라이언트 장치(20B)에 의해 배치될 수 있으며, VM(15C)은 클라이언트 장치(20C)에 의해 배치될 수 있다. 노드(10)는 또한 클라이언트가 (VM으로서 실행하지 않고) 물리적 서버를 제공하는 것을 용이하게 할 수 있다. 여기에 설명된 예는 VM의 일부로서 노드(10)의 자원 제공을 구현하지만 설명된 기술 솔루션은 물리적 서버의 일부로 자원을 제공하는 데에도 적용될 수 있다.
[0073] 예를 들어, 클라이언트 디바이스들(20A-20C)은 개인, 기업, 정부 기관, 기업 내의 부서 또는 기타 주체와 같은, 동일 주체에 속할 수 있고, 노드(10)는 상기 주체의 사설 클라우드로서 운영될 수 있다. 이 경우에, 노드(10)는 주체에 속하는 클라이언트 디바이스들(20A-20C)에 의해 배치된 VM들(15A-15N)만을 호스트한다. 다른 예에서, 클라이언트 디바이스들(20A-20C)은 별개의 주체들에 속할 수 있다. 예를 들어, 제1 주체는 클라이언트 디바이스(20A)를 소유할 수 있는 반면, 제2 주체는 클라이언트 디바이스(20B)를 소유할 수 있다. 이 경우 노드(10)는 서로 다른 주체들로부터의 VM들을 호스트하는 공공 클라우드로 운영될 수 있다. 예를 들어, VM들(15A-15N)은 VM(15A)이 VM(15B)에 대한 액세스를 용이하게 하지 않는 슈라우드 방식으로(in a shrouded manner) 배치될 수 있다. 예를 들어, 노드(10)는 IBM z Systems® Processor Resource/Systems Manager(PR/SM) LPAR(Logical Partition) 기능을 사용하여 VM(15A-15N)을 가릴 수 있다(shroud). PR/SM LPAR과 같은, 이들 기능들은 파티션들 간의 격리를 제공하여 노드(10)가 다른 논리 파티션의 동일한 물리적 노드(10) 상의 다른 주체에 대해 2개 또는 그 이상의 VM들(15A-15N)을 배치하는 것을 용이하게 한다.
클라이언트 디바이스들(20A-20C)로부터 하나의 클라이언트 디바이스(20A)는 노드(10)의 하이퍼바이저(12)에 의한 VM의 배치를 요청하는 컴퓨터, 스마트 폰, 태블릿 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버 컴퓨터, 또는 임의의 기타 통신 장치이다. 클라이언트 디바이스(20A)는 네트워크(165)를 통해 하이퍼바이저에 의한 수신을 위해 요청을 보낼 수 있다. VM들(15A-15N)으로부터의 하나의 VM(15A)은, 클라이언트 디바이스들(20A-20C) 중 클라이언트 디바이스(20A)로부터의 요청에 응답하여, 하이퍼바이저(12)가 배치하는 VM 이미지이다. 하이퍼바이저(12)는 VM을 생성하고 실행하는 소프트웨어, 펌웨어 또는 하드웨어일 수 있는 VM 모니터(VMM)이다. 하이퍼바이저(12)는 VM(15A)이 노드(10)의 하드웨어컴포넌트들을 사용하여 프로그램을 실행하고 및/또는 데이터를 저장하는 것을 용이하게 한다. 적절한 기능들 및 수정들을 통해 하이퍼바이저(12)는 IBM z Systems®, ORACLE VM SERVERTM , CITRIX XENSERVERTM , VMWARE ESXTM , MICROSOFT HYPER-VTM 또는 기타 하이퍼바이저일 수 있다. 하이퍼바이저(12)는 노드(10)에서 직접 실행되는 네이티브 하이퍼바이저이거나 다른 하이퍼바이저에서 실행되는 호스트된 하이퍼바이저일 수 있다. 이제 도 9로 돌아가서 보면, 본 발명의 실시 예들을 구현하기 위한 노드(10)가 본 발명의 하나 또는 그 이상의 실시 예들에 따라 도시되어 있다. 노드(10)는, 본 명세서에 기술된 바와 같이, 다양한 통신 기술들을 이용하는 컴퓨팅 디바이스 및 네트워크들의 임의의 수 및 조합을 포함 및/또는 채용하는 전자적, 컴퓨터 프레임워크 일 수 있다. 노드(10)는 다른 서비스들로 변경하거나 다른 기능들과 무관하게 일부 기능들을 재구성할 수 있는 능력을 가지고 있어서 쉽게 확장 가능하고 모듈화(scalable, extensible, and modular)될 수 있다.
[0074] 이 실시예에서, 노드(10)는 하나 또는 그 이상의 중앙 처리 유닛들(CPU들)(901a, 901b, 901c 등 )를 포함할 수 있는 프로세서(901)를 갖는다. 프로세서(901)는 또한, 처리 회로, 마이크로 프로세서, 컴퓨팅 유닛이라 하며, 이는 시스템 버스(902)를 통해서 시스템 메모리(903) 및 다양한 다른 컴포넨트들에 결합되어 있다. 시스템 메모리(903)은 판독 전용 메모리(ROM)(904) 및 랜덤 액세스 메모리(RAM)(905)를 포함한다. ROM(904)은 시스템 버스(902)에 결합되고, 그리고 기본 입/출력 시스템 (BIOS)을 포함할 수 있으며, 이는 노드(10)의 특정 기본 기능들을 제어한다. RAM은 읽기-쓰기 메모리이고, 프로세서(901)에 의한 사용을 위해 시스템 버스(902)에 결합된다.
[0075] 도 9의 노드(10)는 하드 디스크(907)를 포함하는데, 이는 프로세서(901)에 의해서 실행 가능하고 판독 가능한 유형의 스토리지 매체의 예이다. 하드 디스크(907)은 소프트웨어(908) 및 데이터(909)를 저장한다. 소프트웨어(908)은 프로세서(901)에 의해서 노드(10)상에서 실행하기 위한 (도 1-9의 프로세스 플로들과 같은, 프로세스들을 수행하기 위한) 명령들로서 저장된다. 데이터(909)는 소프트웨어(908)의 연산들을 지원하고 연산들에 의해 사용되기 위해 다양한 데이터 구조들로 조직된 질적 또는 양적 변수들의 값들의 세트를 포함한다.
[0076]도9의 노드(10)는 하나 또는 그 이상의 어댑터들(예를 들어, 하드 디스크 컨트롤러들, 네트워크 어댑터들, 그래픽 어댑터들, 등)을 포함하는데, 이들은 프로세서(901), 시스템 메모리(903), 하드 디스크(907), 그리고 노드(10)의 다른 컴포넌트들 (예를 들어, 주변 장치 및 외부 디바이스들)을 상호 연결하고 이들 사이의 통신들을 지원한다. 본 발명의 하나 또는 그 이상의 실시 예들에서, 하나 또는 그 이상의 어댑터들은 하나 또는 그 이상의 I/O버스들 에 연결될 수 있고, 이들은 중간 버스 브리지를 통해 시스템 버스(902)에 연결 되며, 상기 하나 또는 그 이상의 I/O버스는, 주변장치 컴포넌트 인터커넥트 (Peripheral Component Interconnect: PCI)와 같은 공동 프로토콜들(common protocols)을 이용할 수 있다.
[0077] 도시 된 바와 같이, 노드(10)는 키보드(921), 마우스 (922), 스피커(923) 및 마이크(924)를 시스템 버스(902)에 상호 연결하는 인터페이스 어댑터(920)를 포함한다. 노드(10)는 시스템 버스(902)를 디스플레이 (931)에 상호 연결하는 디스플레이 어댑터(930)을 포함한다. 디스플레이 어댑터(930)(및/또는 프로세서901)는 GUI(932)의 디스플레이 및 관리와 같은, 그래픽 성능을 제공하는 그래픽 컨트롤러를 포함할 수 있다. 통신 어댑터(941)는 시스템 버스(902)를 네트워크(950)과 상호 연결하는데, 이는 노드(10)를, 서버(951) 및 데이터베이스(952)와 같은, 다른 시스템들, 디바이스들, 데이터, 및 소프트웨어와 통신하도록 인에이블 한다. 본 발명의 하나 또는 그 이상의 실시 예들에서, 소프트웨어 (908) 및 데이터(909)의 연산들은 서버(951) 및 데이터베이스(952)에 의해서 네트워크(950) 상에서 구현될 수 있다. 예를 들어, 네트워크(950), 서버(951) 및 데이터베이스(952)는 결합하여, 플랫폼 서비스, 소프트웨어 서비스, 및/또는 인프라스트럭처 서비스(예를 들어, 분산 시스템에서 웹 애플리케이션 프로그램으로서)로서, 소프트웨어 (908) 및 데이터(909)의 내부 반복들을 제공할 수 있다.
[0078] 따라서, 도 10에서 구성된 바와 같이, 소프트웨어(908) 및 데이터(909)의 연산들(예를 들어, 노드10)은, VM들의 암호화된 이미지들로부터 VM들을 디스패치하는 종래의 방법들의 여기에 기술된 단점들을 극복하고 해결하기 위해서, 반드시 프로세서(901) 및/또는 서버(951)의 연산 능력에 근거해야 한다.
[0079] 명세서에 기술된 실시 예들은 반드시 컴퓨터 기술에 근거해야 하고, 특히 VM들을 호스트하는 컴퓨터 서버에 근거해야 한다. 또한, 본 발명의 하나 또는 그 이상의 실시 예들은 컴퓨팅 기술 자체, 특히 VM들을 호스트하는 컴퓨터 서버들의 연산에 대한 개선을 촉진하는데, 이는 VM들을 호스트하는 컴퓨팅 서버들이, 하이퍼바이저조차 보안 VM과 연관된 메모리, 레지스터들, 및 기타 데이터를 액세스하는 것이 금지되는, 보안VM들을 호스트하도록 촉진함으로써 그렇게 할 수 있다. 또한, 본 발명의 하나 또는 그이상의 실시 예들은, 보안 VM과 하이퍼바이저의 분리(separation)를 촉진하고 따라서 컴퓨터 서버에 의해 호스트되는 VM들의 보안을 유지하는 것을 촉진하기 위해 하드웨어, 펌웨어(예를 들어, 밀리코드), 신뢰할 수 있는 소프트웨어, 또는 이들의 조합을 포함하는 보안 인터페이스 컨트롤을 사용함으로써 VM호스팅 컴퓨터 서버들의 개선을 위한 중요한 단계들을 제공한다. 상기 보안 인터페이스 컨트롤은 보안을 촉진하기 위해서, 여기서 기술한 바와 같이, VM들의 초기화/종료 동안에 VM상태의 보안에 대한 추가의 실질적인 오버헤드가 없는, 가벼운 중간 연산들(provides lightweight intermediate operations)을 제공한다.
[0080] 여기서 기술된 본 발명의 실시 예들은 IPL메커니즘을 사용하여 보안 게스트를 시작하는 시스템, 방법, 및/또는 컴퓨터 프로그램 제품(여기서는 시스템)을 포함할 수 있다. 각각의 설명을 위해, 엘리멘트들에 대한 식별자들은 다른 도면들의 다른 유사한 엘리멘트들을 위해 재사용됨을 유의한다.
[0081] 본 발명의 다양한 실시 예들이 도면에 기초하여 설명된다. 본 발명의 범위를 벗어남이 없이 본 발명의 대안적인 실시예들이 고안될 수 있다. 다양한 연결들 및 위치 관계들(예를 들어, 위, 아래, 인접 등)는 다음 설명 및 도면에서 엘리멘트들 사이에 설명된다. 이러한 연결들 및/또는 위치 관계들은 달리 명시되지 않는 한 직접적이거나 간접적일 수 있으며, 본 발명은 이와 관련하여 제한하려는 의도가 없다. 따라서 주체들의 결합은 직접적 또는 간접적인 결합을 의미할 수 있으며, 주체들 간의 위치 관계는 직접적 또는 간접적인 위치 관계일 수 있다. 또한, 여기에 설명된 다양한 작업들 및 프로세스 단계들은 여기에 자세히 설명되지 않은 추가 단계들 또는 기능들을 갖는 보다 포괄적인 절차 또는 프로세스에 통합될 수 있다.
[0082] 다음의 정의들 및 약어들은 명세서 및 청구 범위의 해석에 사용될 수 있다. 본 명세서에서 사용된 용어 "포함하다(comprise)", "포함하는 (comprising)", "포함한다(include)", "포함하는(including)", "갖는다(has) ", "갖는(having)", "포함하다(contain)" 또는 "포함하는(containing)", 또는 이들의 다른 변형들은 비-배타적인 포함(a non-exclusive inclusion)을 커버하기 위한 것이다. 예를 들어, 엘리멘트들의 목록을 포함하는 구성, 혼합물, 공정, 방법, 물품 또는 장치는 반드시 그러한 엘리멘트들에만 제한되는 것은 아니며, 명시적으로 나열되지 않거나 또는 그러한 구성, 혼합물, 공정, 방법, 물품 또는 장치에 고유한 다른 엘리멘트들도 포함될 수 있다.
[0083] 또한, 용어 "예시적인"은 "예, 사례, 예시"라는 의미로 사용되었다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 실시예 또는 설계는 반드시 다른 실시예 또는 설계에 비해 선호되거나 유리한 것으로 해석되어서는 안 된다. "적어도 하나" 및 "하나 또는 그 이상"이라는 용어는 1 보다 크거나 같은 임의의 정수, 즉 1, 2, 3, 4 등을 포함 하는 것으로 이해될 수 있다. 용어 "복수"는 2보다 크거나 같은 정수, 즉 2, 3, 4, 5 등을 포함하는 것으로 이해될 수 있다. 용어 "연결"은 간접적인 "연결"과 직접적인 "연결"을 모두 포함할 수 있다.
[0084] 용어들 "약", "실질적으로", "대략" 및 이들의 변형들은 출원 당시에 이용 가능했던 장비에 기초한 특정 양의 측정과 관련된 오차의 정도를 포함하기 위해 의도된 것이다. 예를 들어, "약"은 주어진 값의 ± 8% 또는 5% 또는 2%의 범위를 포함할 수 있다. 
[0085] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 레벨에서 컴퓨터 프로그램 제품 일 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 발명의 실시 예들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령을 갖는 컴퓨터 판독가능 저장 매체(또는 매체)를 포함할 수 있다.
[0086] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 ㅅ토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 히스토리된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파 관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0087] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0088] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA),또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0089] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0090] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0091] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0092] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0093] 본 명세서에서 사용된 용어는 단지 특정한 실시 예들을 설명하기위한 것이며 제한을 의도한 것이 아니다. 본 명세서에 사용된 바와 같이, 단수 형태 "a", "an" 및 "the"는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도된다. 본 명세서에서 사용될 때, "포함하다" 및/또는 "포함하는"이라는 용어는 명시된 특징들, 정수들, 단계들, 연산들, 엘리멘트들 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 특징들, 정수들, 단계들, 연산들, 엘리멘트들 및/또는 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0094] 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자들에게 기술된 실시 예들의 범위와 정신을 벗어남이 없이 많은 수정들 및 변형들이 있을 수 있다는 것이 명백하다. 여기서 사용된 용어는 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (22)

  1. 방법에 있어서, 상기 방법은:
    호스트 서버에 가상 머신(VM)을 디스패치(dispatch) 하는 요청을, 호스트 상에서 실행 중인 하이퍼바이저에 의해서, 수신하는 단계;
    상기 호스트 서버에 상기 VM을, 상기 하이퍼바이저에 의해서, 디스패치 하는 단계- 상기 VM은 비-보안 모드이고(in a non-secure mode) 상기 VM의 암호화된 이미지와 초기 프로그램 로드(IPL) 메커니즘을 이용하는 재-부팅 명령(a reboot instruction)을 포함함-;
    상기 VM을 상기 호스트 서버 상에서 보안 모드로(in a secure mode) 재-시작(restart)하기 위해 상기 재-부팅 명령을, 상기 하이퍼바이저에 의해서, 트리거하는 단계(triggering) - 상기 트리거하는 단계는 상기 VM의 재시작을 보안 모드로 수행하기 위해 상기 하이퍼바이저가 보안 인터페이스 컨트롤을 호출하는 단계를 포함하고, 상기 하이퍼바이저는 상기 호스트 상의 VM의 암호화된 이미지 및 해독 정보의 위치를 명시함 -; 및
    상기 트리거하는 단계에 응답하여 상기 재시작을 수행하는 단계를 포함하고, 상기 재-시작을 수행하는 단계이후, 상기 하이퍼바이저는 상기 VM의 모든 데이터에 액세스하는 것이 금지되는(prevented)
    방법.
  2. 삭제
  3. 제1항에 있어서, 상기 디스패치 하는 단계는:
    상기 VM의 암호화된 이미지(the encrypted image)를 상기 호스트 서버의 메모리로 로드 하는 단계;
    상기 재-부팅 명령을 포함하는 암호화 안된 부트스트랩 컴포넌트(an unencrypted bootstrap component)를 상기 메모리로 로드 하는 단계를 포함하는
    방법.
  4. 제3항에 있어서, 상기 디스패치 하는 단계는 컨트롤을 상기 암호화 안된 부트스트랩 컴포넌트로 이전하는 단계(transferring)를 더 포함하는
    방법.
  5. 제1항에 있어서, 상기 VM은 상기 디스패치 하는 단계 이후 암호화된 컴포넌트들을 포함하는
    방법.
  6. 제5항에 있어서, 상기 재-시작은 상기 VM의 암호화된 컴포넌트들을 해독하는 단계(decrypting)를 포함하는
    방법.
  7. 제1항에 있어서, 상기 VM이 상기 하이퍼바이저에 의해서 비-보안 모드로 디스패치 될 때 상기 VM의 데이터는 상기 하이퍼바이저에 의해서 액세스 가능한
    방법.
  8. 제1항에 있어서, 상기 VM이 보안 모드라는 결정에 기초하여, 상기 VM의 모든 데이터를 상기 하이퍼바이저가 액세스하는 것을 금지하는 단계를 포함하는
    방법.
  9. 삭제
  10. 제1항에 있어서, 상기 재-시작을 수행하는 단계는:
    상기 해독 정보에 기초하여 상기 VM을, 상기 보안 인터페이스 컨트롤에 의해서, 해독하는 단계; 및
    상기 해독된 VM에 기초하여 상기 VM을 재-시작하는 단계를 포함하는
    방법.
  11. 시스템에 있어서, 상기 시스템은:
    메모리;
    보안 인터페이스 컨트롤; 및
    상기 메모리 및 상기 보안 인터페이스 컨트롤과 결합되는 처리 유닛을 포함하고, 상기 처리 유닛은 복수의 가상 머신들(VM들)을 호스트하는 하이퍼바이저를 실행하도록 구성되며, 상기 하이퍼바이저는 상기 VM이 보안 모드에 있을 때 상기 VM의 모든 데이터에 직접적으로 액세스하는 것이 금지되고, 상기 하이퍼바이저는 방법을 수행하도록 구성되며, 상기 방법은:
    호스트 서버에 가상 머신(VM)을 디스패치(dispatch) 하는 요청을, 호스트 상에서 실행 중인 하이퍼바이저에 의해서, 수신하는 단계;
    상기 호스트 서버에 상기 VM을, 상기 하이퍼바이저에 의해서, 디스패치 하는 단계- 상기 VM은 비-보안 모드이고(in a non-secure mode) 상기 VM의 암호화된 이미지와 초기 프로그램 로드(IPL) 메커니즘을 이용하는 재-부팅 명령(a reboot instruction)을 포함함-;
    상기 VM을 상기 호스트 서버 상에서 보안 모드로(in a secure mode) 재-시작(restart)하기 위해 상기 재-부팅 명령을, 상기 하이퍼바이저에 의해서, 트리거하는 단계(triggering) - 상기 트리거하는 단계는 상기 VM의 재시작을 보안 모드로 수행하기 위해 상기 하이퍼바이저가 보안 인터페이스 컨트롤을 호출하는 단계를 포함하고, 상기 하이퍼바이저는 상기 호스트 상의 VM의 암호화된 이미지 및 해독 정보의 위치를 명시함 -; 및
    상기 트리거하는 단계에 응답하여 상기 재시작을 수행하는 단계를 포함하고, 상기 재-시작을 수행하는 단계이후, 상기 하이퍼바이저는 상기 VM의 모든 데이터에 액세스하는 것이 금지되는(prevented)
    시스템.
  12. 삭제
  13. 제11항에 있어서, 상기 디스패치 하는 단계는:
    상기 VM의 암호화된 이미지(the encrypted image)를 상기 호스트 서버의 메모리로 로드 하는 단계;
    상기 재-부팅 명령을 포함하는 암호화 안된 부트스트랩 컴포넌트(an unencrypted bootstrap component)를 상기 메모리로 로드 하는 단계를 포함하는
    시스템.
  14. 제13항에 있어서, 상기 디스패치 하는 단계는 컨트롤을 상기 암호화 안된 부트스트랩 컴포넌트로 이전하는 단계(transferring)를 더 포함하는
    시스템.
  15. 제11항에 있어서, 상기 VM은 상기 디스패치 하는 단계 이후 암호화된 컴포넌트들을 포함하는
    시스템.
  16. 제15항에 있어서, 상기 재-시작은 상기 VM의 암호화된 컴포넌트들을 해독하는 단계(decrypting)를 포함하는
    시스템.
  17. 제11항에 있어서, 상기 VM이 상기 하이퍼바이저에 의해서 비-보안 모드로 디스패치 될 때 상기 VM의 데이터는 상기 하이퍼바이저에 의해서 액세스 가능한
    시스템.
  18. 컴퓨터 판독가능 스토리지 매체에 있어서, 상기 컴퓨터 판독가능 스토리지 매체는 컴퓨터 판독가능 명령들을 포함하고, 상기 컴퓨터 판독가능 명령들은, 처리 유닛에 의해서 실행되었을 때, 상기 처리 유닛이 방법을 수행하도록 하며, 상기 방법은:
    호스트 서버에 가상 머신(VM)을 디스패치(dispatch) 하는 요청을, 호스트 상에서 실행 중인 하이퍼바이저에 의해서, 수신하는 단계;
    상기 호스트 서버에 상기 VM을, 상기 하이퍼바이저에 의해서, 디스패치 하는 단계- 상기 VM은 비-보안 모드이고(in a non-secure mode) 상기 VM의 암호화된 이미지와 초기 프로그램 로드(IPL) 메커니즘을 이용하는 재-부팅 명령(a reboot instruction)을 포함함-;
    상기 VM을 상기 호스트 서버 상에서 보안 모드로(in a secure mode) 재-시작(restart)하기 위해 상기 재-부팅 명령을, 상기 하이퍼바이저에 의해서, 트리거하는 단계(triggering) - 상기 트리거하는 단계는 상기 VM의 재시작을 보안 모드로 수행하기 위해 상기 하이퍼바이저가 보안 인터페이스 컨트롤을 호출하는 단계를 포함하고, 상기 하이퍼바이저는 상기 호스트 상의 VM의 암호화된 이미지 및 해독 정보의 위치를 명시함 -; 및
    상기 트리거하는 단계에 응답하여 상기 재시작을 수행하는 단계를 포함하고, 상기 재-시작을 수행하는 단계이후, 상기 하이퍼바이저는 상기 VM의 모든 데이터에 액세스하는 것이 금지되는(prevented)
    컴퓨터 판독가능 스토리지 매체.
  19. 삭제
  20. 제18항에 있어서, 상기 디스패치 하는 단계는:
    상기 VM의 암호화된 이미지(the encrypted image)를 상기 호스트 서버의 메모리로 로드 하는 단계;
    상기 재-부팅 명령을 포함하는 암호화 안된 부트스트랩 컴포넌트(an unencrypted bootstrap component)를 상기 메모리로 로드 하는 단계를 포함하는
    컴퓨터 판독가능 스토리지 매체.
  21. 제20항에 있어서, 상기 디스패치 하는 단계는 컨트롤을 상기 암호화 안된 부트스트랩 컴포넌트로 이전하는 단계(transferring)를 더 포함하는
    컴퓨터 판독가능 스토리지 매체.
  22. 제18항에 있어서, 상기 VM은 상기 디스패치 하는 단계 이후 암호화된 컴포넌트들을 포함하고, 상기 재-시작은 상기 VM의 암호화된 컴포넌트들을 해독하는 단계(decrypting)를 포함하는
    컴퓨터 판독가능 스토리지 매체.
KR1020217026588A 2019-03-08 2020-03-06 초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작 KR102672577B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,304 2019-03-08
US16/296,304 US10970100B2 (en) 2019-03-08 2019-03-08 Starting a secure guest using an initial program load mechanism
PCT/EP2020/055971 WO2020182642A1 (en) 2019-03-08 2020-03-06 Starting a secure guest using an initial program load mechanism

Publications (2)

Publication Number Publication Date
KR20210118130A KR20210118130A (ko) 2021-09-29
KR102672577B1 true KR102672577B1 (ko) 2024-06-07

Family

ID=70189895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026588A KR102672577B1 (ko) 2019-03-08 2020-03-06 초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작

Country Status (14)

Country Link
US (1) US10970100B2 (ko)
EP (1) EP3935498A1 (ko)
JP (1) JP7418093B2 (ko)
KR (1) KR102672577B1 (ko)
CN (1) CN113544643A (ko)
AU (1) AU2020235010B2 (ko)
BR (1) BR112021017782B1 (ko)
CA (1) CA3132756A1 (ko)
IL (1) IL285225B2 (ko)
MX (1) MX2021010584A (ko)
SG (1) SG11202105430SA (ko)
TW (1) TWI734379B (ko)
WO (1) WO2020182642A1 (ko)
ZA (1) ZA202106314B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11205003B2 (en) * 2020-03-27 2021-12-21 Intel Corporation Platform security mechanism
CN113434372B (zh) * 2021-06-10 2023-07-18 浙江大华技术股份有限公司 一种定位指示的方法、设备、***及存储介质
US11874776B2 (en) 2021-06-25 2024-01-16 Intel Corporation Cryptographic protection of memory attached over interconnects
JP7412835B1 (ja) 2022-06-29 2024-01-15 セーラ・ネットワークス株式会社 演算処理装置、演算処理システム、演算処理方法、及び演算処理プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110302400A1 (en) * 2010-06-07 2011-12-08 Maino Fabio R Secure virtual machine bootstrap in untrusted cloud infrastructures
US20150154031A1 (en) * 2013-12-04 2015-06-04 Insyde Software Corp. System and method to store data securely for firmware using read-protected storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4245302A (en) 1978-10-10 1981-01-13 Magnuson Computer Systems, Inc. Computer and method for executing target instructions
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US6138236A (en) 1996-07-01 2000-10-24 Sun Microsystems, Inc. Method and apparatus for firmware authentication
US6658562B1 (en) * 2000-08-25 2003-12-02 International Business Machines Corporation Method, system, and program for customizing a basic input/output system (“BIOS”) configuration according to the type of user
US7356677B1 (en) * 2001-10-19 2008-04-08 Flash Vos, Inc. Computer system capable of fast switching between multiple operating systems and applications
US20080177994A1 (en) * 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
WO2005036367A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
US9086913B2 (en) 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US8387114B2 (en) 2009-01-02 2013-02-26 International Business Machines Corporation Secure workload partitioning in a server environment
JP2011048661A (ja) 2009-08-27 2011-03-10 Nomura Research Institute Ltd 仮想サーバ暗号化システム
US8639783B1 (en) 2009-08-28 2014-01-28 Cisco Technology, Inc. Policy based configuration of interfaces in a virtual machine environment
GB2499963B (en) 2010-12-09 2014-03-26 Ibm Computer-readable storage mediums for encrypting and decrypting a virtual disc
US20120179904A1 (en) 2011-01-11 2012-07-12 Safenet, Inc. Remote Pre-Boot Authentication
US9785801B2 (en) * 2014-06-27 2017-10-10 Intel Corporation Management of authenticated variables
US10599458B2 (en) 2015-01-23 2020-03-24 Unisys Corporation Fabric computing system having an embedded software defined network
US20190095357A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Hardware support for static mode of protected memory management on flexibly-convertible enclave platform

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110302400A1 (en) * 2010-06-07 2011-12-08 Maino Fabio R Secure virtual machine bootstrap in untrusted cloud infrastructures
US20150154031A1 (en) * 2013-12-04 2015-06-04 Insyde Software Corp. System and method to store data securely for firmware using read-protected storage

Also Published As

Publication number Publication date
AU2020235010B2 (en) 2022-12-01
IL285225A (en) 2021-09-30
TW202101207A (zh) 2021-01-01
CN113544643A (zh) 2021-10-22
BR112021017782A2 (ko) 2021-11-23
JP2022522643A (ja) 2022-04-20
WO2020182642A1 (en) 2020-09-17
KR20210118130A (ko) 2021-09-29
IL285225B1 (en) 2023-11-01
MX2021010584A (es) 2022-03-31
US10970100B2 (en) 2021-04-06
SG11202105430SA (en) 2021-06-29
AU2020235010A1 (en) 2021-06-17
CA3132756A1 (en) 2020-09-17
BR112021017782B1 (pt) 2022-08-30
JP7418093B2 (ja) 2024-01-19
EP3935498A1 (en) 2022-01-12
TWI734379B (zh) 2021-07-21
ZA202106314B (en) 2022-07-27
IL285225B2 (en) 2024-03-01
US20200285492A1 (en) 2020-09-10

Similar Documents

Publication Publication Date Title
KR102672577B1 (ko) 초기 프로그램 로드 메커니즘을 사용하는 보안 게스트의 시작
US11455398B2 (en) Testing storage protection hardware in a secure virtual machine environment
EP3935510B1 (en) Secure interface control secure storage hardware tagging
JP7386882B2 (ja) セキュア仮想マシン環境におけるゲスト命令の透過的解釈
KR20210121124A (ko) 보안 인터페이스 컨트롤 스토리지를 위한 호스트 가상 주소 공간
KR20210118153A (ko) 여러 보안 도메인들에 걸친 보안 메모리의 공유
JP7465046B2 (ja) 割り込み及び例外をセキュア仮想マシンにインジェクトする
WO2020183310A1 (en) Program interruptions for page importing/exporting
JP2022522664A (ja) ページ変更検出によるセキュアなページング
JP2022523522A (ja) セキュア・インターフェイス制御の高レベルのページ管理
KR20210118122A (ko) 보안 스토리지 격리
US11029991B2 (en) Dispatch of a secure virtual machine
KR20210121197A (ko) 보안 인터페이스 컨트롤의 통신 인터페이스

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