KR20210121170A - 보안 실행 게스트 소유자 환경 컨트롤 - Google Patents

보안 실행 게스트 소유자 환경 컨트롤 Download PDF

Info

Publication number
KR20210121170A
KR20210121170A KR1020217027418A KR20217027418A KR20210121170A KR 20210121170 A KR20210121170 A KR 20210121170A KR 1020217027418 A KR1020217027418 A KR 1020217027418A KR 20217027418 A KR20217027418 A KR 20217027418A KR 20210121170 A KR20210121170 A KR 20210121170A
Authority
KR
South Korea
Prior art keywords
hypervisor
secure
instance
computer
guest
Prior art date
Application number
KR1020217027418A
Other languages
English (en)
Other versions
KR102527949B1 (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 KR20210121170A publication Critical patent/KR20210121170A/ko
Application granted granted Critical
Publication of KR102527949B1 publication Critical patent/KR102527949B1/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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Abstract

보안 인터페이스 컨트롤이 보안 게스트 이미지의 안 인스턴스가 메타데이터에 기초하여 실행할 수 있는지는 결정하는 방법, 컴퓨터 프로그램 제품 및 시스템이 제공된다. 상기 보안 인터페이스 컨트롤("SC")은 소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저-에 의해서 관리되는 메타데이타(metadata)를 획득하고, 상기 메타데이터는 컨트롤(들)을 포함하며, 상기 컨트롤(들)은 상기 컴퓨팅 시스템에서 시스템 세팅(들)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 표시한다. 상기SC는 상기 인스턴스를 시작하기 위한 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를 가로챈다. 상기 SC는 상기 컴퓨팅 시스템에서 시스템 세팅(들)의 존재 또는 부재를 결정한다. 상기 SC는 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를 결정한다. 허가되었다면, 상기 SC는 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을 인에이블 한다. 허가되지 않았다면, 상기 SC는 상기 커맨드를 무시한다.

Description

보안 실행 게스트 소유자 환경 컨트롤
[0001] 오늘날의 컴퓨터 시스템들과 정보 전송 네트워크들에서 암호화 엘리멘트들은 중요한 기술적 컴포넌트들이다. 정보는 암호화로 보호된 형식으로 저장 또는 전송될 수 있는 데, 이는 저장 또는 전송된 정보에 대한 승인되지 않은 액세스를 피하기 위해서이다. 어떤 경우에는, 순수한 소프트웨어 기반 기술들이 사용될 수 있고, 다른 경우에는, 하드웨어 지원 및 보안 특정 엘리멘트들이 그러한 데이터 보호를 수행하는 데 사용될 수 있다.
[0002] 하이퍼바이저 또는 가상 머신 관리자는 시스템 자원들에 대해 액세스하는 다양한 게스트들(예: 가상 머신들, 가상 서버들)을 컨트롤할 수 있다. 공통 하이퍼바이저에 의해서 관리되는 다른 게스트들이 다른 소유자들에 의해서 생성될 수 있다. 이들 게스트들 중, 일부는 보안 게스트들이 될 수 있다. 전통적인 하이퍼바이저는 호스트되는 모든 게스트들에 대한 전체(full) 컨트롤을 갖는다. 특히, 상기 하이퍼바이저는 호스트된 게스트의 모든 메모리를 점검하고(inspect) 수정(modify)할 능력을 갖고 있다. 클라우드 환경에서 그러한 셋업(setup)은 하이퍼바이저와 해당 관리자들에게 전체적으로 신뢰할 수 있을(fully trustworthy) 것을 요구한다.
[0003] 보안 게스트는 (전체적으로) 신뢰할 수 없는 하이퍼바이저에서 호스트 될 수 있는 게스트이다. 그러한 게스트의 이미지는 로드 될 때 보호될 것이고 상기 게스트에 할당된 자원들(예: 메모리, CPU 레지스터들)의 컨텐츠들은 상기 게스트가 존속하는 동안(lifetime) 보호가 유지될 것이다. 상기 게스트의 보호는 최소한 무결성 보호(예: 하이퍼바이저가 모든 게스트 상태들을 악의적으로 변경할 수 없음)를 포함하고 추가로 게스트에서 실행되는 초기 이미지와 코드 및 데이터의 기밀성을 유지하는 것을 포함할 수 있다. 이들 서비스들은 보안 주체와 신뢰할 수 없는 다른 주체 간의 모든 인터페이스에 적용할 수 있으며, 상기 신뢰할 수 없는 다른 주체는 이 다른 주체의 보안 자원에 대한 액세스를 전통적으로 허용한다.
[0004] 주어진 기술 환경에서 소유자가 보안 게스트의 실행을 컨트롤 할 수 있게 하는 방법의 제공을 통해서 종래 기술의 단점들이 극복되고 추가적인 장점들이 제공된다. 상기 방법은, 예를 들어, 소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 컴퓨터 시스템의 보안 인터페이스 컨트롤(a secure interface control)에 의해서, 획득하는 단계(obtaining) - 상기 보안 인터페이스 컨트롤은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 보안 인터페이스 컨트롤에 표시함- ; 상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위해 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 보안 인터페이스 컨트롤에 의해서, 가로채는 단계(intercepting); 상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 인에이블 하는 단계(enabling); 및 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 보안 인터페이스 컨트롤에 의해서, 무시하는 단계(ignoring)를 포함한다.
[0005] 주어진 기술 환경에서 소유자가 보안 게스트의 실행을 컨트롤 할 수 있게 하는 컴퓨터 프로그램 제품의 제공을 통해서 종래 기술의 단점들이 극복되고 추가적인 장점들이 제공된다. 상기 컴퓨터 프로그램 제품은 하나 또는 그 이상의 프로세서들에 의해서 판독 가능하고 방법을 수행하기 위해 상기 하나 또는 그 이상의 프로세서들에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함한다. 상기 방법은, 예를 들어: 소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들에 의해서, 획득하는 단계(obtaining) - 상기 하나 또는 그 이상의 프로세서들은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 하나 또는 그 이상의 프로세서들에 표시함- ; 상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위해 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 가로채는 단계(intercepting); 상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 인에이블 하는 단계(enabling); 및 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 무시하는 단계(ignoring)를 포함한다.
[0006] 주어진 기술 환경에서 소유자가 보안 게스트의 실행을 컨트롤 할 수 있게 하는 시스템의 제공을 통해서 종래 기술의 단점들이 극복되고 추가적인 장점들이 제공된다. 상기 시스템은 메모리, 상기 메모리와 통신하는 하나 또는 그 이상의 프로세서들, 및 방법을 수행하기 위해 상기 메모리를 통해 하나 또는 그 이상의 프로세서들에 의해서 실행가능한 프로그램 명령들을 포함한다. 상기 방법은, 예를 들어: 소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 상기 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들에 의해서, 획득하는 단계(obtaining) - 상기 하나 또는 그 이상의 프로세서들은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 하나 또는 그 이상의 프로세서들에 표시함- ; 상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위해 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 가로채는 단계(intercepting); 상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계; 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 인에이블 하는 단계(enabling); 및 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 무시하는 단계(ignoring)를 포함한다.
[0007] 본 발명의 하나 또는 그 이상의 실시 예들과 관련된 방법들 및 시스템들이 또한 여기서 기술되고 청구된다. 더 나아가, 본 발명의 하나 또는 그 이상의 실시 예들과 관련된 서비스들이 또한 여기서 기술되고 청구될 수 있다.
[0008] 추가의 특징들이 본 명세서에 설명된 기술을 통해 실현된다. 다른 실시예들 및 특징들이 본 명세서에서 상세하게 설명되고 청구항들의 일부로 간주된다. 예를 들어, 본 발명의 일부 실시 예들에서, 상기 메타데이터를 획득하는 하나 또는 그 이상의 프로세서들 또는 보안 인터페이스 컨트롤은, 상기 보안 게스트의 이미지에 링크된 상기 메타데이터의 일부분을, 상기 하나 또는 그 이상의 프로세서들 또는 보안 인터페이스 컨트롤에 의해서, 해독하는 단계(decrypting)를 더 포함하고, 상기 메타데이터는 무결성으로 보호되고, 상기 보안 게스트의 부팅 이미지의 암호화 조치(a cryptographic measure of a boot image)을 포함하는 상기 일부분은 사설 키(a private key)를 사용하여 유도된 키에 의해서 암호화 되었다(encrypted)
[0009] 본 발명의 일부 실시 예들에서, 상기 메타데이터의 암호화된 일부분은 상기 하나 또는 그 이상의 컨트롤들을 포함한다.
[0010] 본 발명의 일부 실시 예들에서, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 환경적 제한(an environmental constraint)을 포함한다.
[0011] 본 발명의 일부 실시 예들에서, 상기 환경적 제한은 하드웨어 조치들(hardware measurements)을 수행하도록 구성된 시스템들, 및 비-시스템 특정 호스트 키(a non-system specific host key)를 사용하도록 구성된 시스템들로 구성되는 그룹으로부터 선택된다.
[0012] 본 발명의 일부 실시 예들에서, 상기 사설 키는 상기 보안 인터페이스 컨트롤에 의해서 소유되고 상기 보안 인터페이스 컨트롤에 의해서 배타적으로 사용된다.
[0013] 본 발명의 일부 실시 예들에서, 상기 사설 키를 사용하여 유도되는 키는 상기 보안 인터페이스 컨트롤과 상기 소유자 사이에 공유된다.
[0014] 본 발명의 일부 실시 예들에서, 상기 메타데이터는 충돌 방지 단방향 함수(a collision resistant one-way function)를 이용하여 계산된 상기 보안 게스트의 부팅 이미지로부터 유도되는 값들을 포함한다.
[0015] 본 발명의 일부 실시 예들에서, 상기 하나 또는 그 이상의 컨트롤들 각각은 주어진 시스템 세팅들에 대한 포지티브 지정 또는 네거티브 지정(a positive designation or a negative designation for a given system settings)을 포함하고, 상기 포지티브 지정은 상기 보안 게스트의 인스턴스가 상기 주어진 시스템 세팅을 포함하는 상기 컴퓨터 시스템에서 실행하도록 허용됨을 표시하며, 상기 네거티브 지정은 상기 보안 게스트의 인스턴스가 상기 주어진 시스템 세팅을 포함하는 상기 컴퓨터 시스템에서 실행하도록 허용되지 않음을 표시한다.
[0016] 본 발명의 일부 실시 예들에서, 상기 메타데이터는 상기 보안 게스트의 인스턴스에 대해서는 액세스 가능하지 않다(inaccessible).
[0017] 본 발명의 일부 실시 예들에서, 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를 결정하는 단계는: 상기 하나 또는 그 이상의 시스템 세팅들 중 하나의 세팅에 관련된 컨트롤을, 상기 하나 또는 그 이상의 컨트롤들에서, 상기 보안 인터페이스 컨트롤에 의해서, 식별하는 단계(identifying); 및 상기 컨트롤이 상기 인스턴스를 실행하는 것을 인에이블 하는지 또는 제한하는지를, 상기 컨트롤에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계를 더 포함한다.
[0018] 본 발명의 일부 실시 예들에서, 상기 방법은: 상기 인스턴스의 실행시간(runtime) 동안, 상기 하나 또는 그 이상의 시스템 세팅들을, 상기 보안 인터페이스 컨트롤에 의해서, 모니터하는 단계(monitoring); 상기 하나 또는 그 이상의 시스템 세팅들 중 적어도 하나의 세팅이 상기 실행시간 동안에 변경되었음을, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계; 상기 적어도 하나의 세팅에 관련된 상기 하나 또는 그 이상의 컨트롤들 중 주어진 컨트롤을, 상기 보안 인터페이스 컨트롤에 의해서, 식별하는 단계; 상기 적어도 하나의 세팅과 상기 주어진 컨트롤에 기초하여, 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계를 더 포함한다. 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 인스턴스를, 상기 하이퍼바이저를 통해, 상기 보안 인터페이스 컨트롤에 의해서, 종료하는 단계(terminating)를 더 포함한다.
[0019] 본 발명의 일부 실시 예들에서, 상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위해 (initiate) 상기 하이퍼바이저에 의해 상기 커맨드를 가로채는 단계는: 상기 메타데이터에 관한 무결성 체크(an integrity check on the metadata)를, 상기 보안 인터페이스 컨트롤에 의해서, 수행하는 단계; 및 상기 무결성 체크를 성공적으로 완료하는 것에 기초하여, 상기 메타데이터에서 상기 하나 또는 그 이상의 컨트롤들을 판독하는 단계(reading)를 더 포함한다.
[0020] 본 발명의 하나 또는 그 이상의 실시 예들은 본 명세서의 결론에 있는 청구범위에서 예들로서 구체적으로 기재되고 명확하게 청구된다. 앞서 언급한 본 발명의 하나 또는 그 이상의 실시 예들의 목적, 특징, 그리고 장점들은 첨부된 도면들과 함께 다음의 상세한 설명으로부터 명백하다:
도 1은 본 발명의 일부 실시예들의 특정 측면들을 예시하는 워크플로이다;
도 2는 본 발명의 일부 실시예들의 다양한 측면들을 예시한다;
도 3은 본 발명의 일부 실시예들의 특정 측면들을 예시하는 워크플로이다;
도 4는 클라우드 컴퓨팅 환경에서 이용될 수 있는 컴퓨팅 노드의 일 실시예를 도시한다;
도 5는 본 발명의 일 실시예에 따른 클라우드 컴퓨팅 환경을 도시한다; 그리고
도 6은 본 발명의 일 실시예에 따른 추상화 모델 계층들을 도시한다.
[0021] 첨부 도면들에서, 동일한 참조 번호는 개별 도면들 전체에 걸쳐 동일하거나 기능적으로 유사한 엘리멘트들을 참조하고, 상기 첨부 도면들은 본 명세서에 통합되고 본 명세서의 일부를 형성하며, 본 발명을 추가로 설명하고, 본 발명의 상세한 설명과 함께 본 발명의 원리를 설명하는데 도움을 주는 역할을 한다. 당업자에 의해 이해되는 바와 같이, 첨부 도면들은 이해의 용이함을 위해 제공되고 본 발명의 특정 실시 예들의 특징들을 예시해준다. 본 발명은 도면에 도시된 실시예들로 제한되지 않는다.
[0022] 당업자가 이해하는 바와 같이, 본 출원 전반에 걸쳐 언급되는 프로그램 코드는, 소프트웨어와 하드웨어 모두를 포함한다. 예를 들어, 본 발명의 특정 실시예들의 프로그램 코드는 고정된 기능 하드웨어(fixed function hardware)를 포함하는 반면, 다른 실시예들은 설명된 기능의 소프트웨어 기반 구현(a software-based implementation of the functionality)을 활용한다. 특정 실시예들은 두 가지 유형의 프로그램 코드를 결합한다. 하나 또는 그 이상의 프로그램들이라고도 하는, 프로그램 코드의 한 예가, 프로그램/유틸리티(40)로서 도 4에 도시되어 있으며, 프로그램/유틸리티(40)은 프로그램 모듈의 (적어도 하나의) 세트(42)를 가지며, 메모리(28)에 저장될 수 있다.
[0023] 호스트 하이퍼바이저의 컨트롤 하에 게스트로서 실행되는, 가상 머신(VM)은, 상기 게스트에 대한 가상화 서비스들을 투명하게 제공하기 위해 상기 하이퍼바이저에 의존한다. 이들 서비스들은 보안 주체와 신뢰할 수 없는 주체 간의 모든 인터페이스에 적용할 수 있으며, 상기 신뢰할 수 없는 주체는 이 다른 주체의 보안 자원들에 대한 액세스를 전통적으로 허용한다. '게스트 시스템' 또는 '게스트'라는 용어는, 예를 들어, 하이퍼바이저 상의 가상 머신, VM에서 실행되는 운영 체제를 나타낼 수 있다. 게스트 시스템에 사용자가 할당될 수 있다. 게스트 시스템에 특정 암호화 키를 할당하는 것도 가능하다. 언급된 상기 하이퍼바이저는 그러한 할당을 수행하는 데 사용할 수 있다. 게스트 시스템은, 예를 들어, 게스트 운영 체제를 실행하거나 실행하는 가상 머신, 즉 VM일 수 있다.
[0024] '컨텐트(content)'라는 용어는 모든 캐릭터-기반 스트링(character-based string)을 나타낼 수 있다. 상기 스트링은 읽을 수 있는 텍스트 또는 기타 이진 데이터를 포함할 수 있다.
[0025] 제1컴포넌트가 제2컴포넌트에 암호화로 링크되어 있음을 표현하는 데 사용되는 '암호화로 링크된(cryptographically linked)'이라는 용어는, 제1컴포넌트가 무결성으로 보호되고 제2컴포넌트에 포함된 모든 데이터의 조치(a measure of all data)를 포함한다는 것을 의미한다. 상기 조치는 충돌 방지 단방향 함수(a collision resistant one-way function)에 의해 생성된다. 그러한 조치들의 예들은, 암호화 해시들(cryptographic hashes), 메시지 인증 코드들(message authentication codes), 및/또는 암호화 서명들(cryptographic signatures)이 포함되지만 이에 국한되지는 않는다.
[0026] 본 발명의 실시예들은 컴퓨터-구현 방법, 컴퓨터 프로그램 제품, 그리고 컴퓨터 시스템을 포함하고, 이는 하드웨어 및/또는 적어도 하나의 처리 회로에서 실행되는 프로그램 코드를 포함하며, 상기 하드웨어 및/또는 적어도 하나의 처리 회로는 프로그램 코드를 포함하고, 상기 프로그램 코드는 하드웨어, 펌웨어, 혹은 이들의 조합인 보안 인터페이스 컨트롤을 명령하는 보안 실행(SE) 게스트의 소유자를 인에이블 하여 상기 보안 인터페이스 컨트롤이 특정 호스트 환경에서 보안 게스트가 실행하는 것을 허용하게 또는 허용하지 않게 명령한다. 본 발명의 실시예들에서, 상기 게스트 소유자의 명령은 특정 게스트 이미지(a particular guest image)에 특정된다(specific). 따라서, 소유자는 각 게스트를 위한 보안 인터페이스 컨트롤에 하나 또는 그 이상의 환경적 제약 조건들(one or more environmental constraints)을 전달하여, 상기 보안 인터페이스 컨트롤이 주어진 시스템에서 상기 하나 이상의 제약 조건을 시행할 수 있게 한다. 본 발명의 실시예들에서, 소유자는 상기 보안 게스트의 부팅 이미지(the boot image)에 암호화로 링크된 메타데이터를 통해 주어진 이미지에 대해 특정 환경적 제약 조건들을 전달하고, 상기 보안 인터페이스 컨트롤은, 본 발명의 실시예에서, 상기 주어진 보안 게스트를 위해 명시된 세부사항들(the specified particulars)을 시행한다. 본 발명의 일부 실시예들에서, 보안 게스트와 연관된 상기 메타데이터는 무결성으로 보호된다(integrity protected)(예를 들어, 적어도 일부의 메타데이터가 암호화될 수 있다). 상기 메타데이터는 충돌 방지 단방향 함수(예: 암호화 해시 함수)를 사용하여 프로그램 코드가 계산하는 상기 보안 게스트의 부팅 이미지로부터 프로그램 코드에 의해 유도된 값들을 포함할 수 있다. 상기 충돌 방지 함수는 상기 값들에 보안을 제공하는데, 이는 자신의 애플리케이션이 동일한 값을 유도할 수 있는 대체 이미지를 구성하는 것을 계산적으로 실행 불가능하게(infeasible) 만들기 때문이다. 본 발명의 일부 실시예들에서, 상기 메타데이터는 다양한 환경적 제약 조건들과 관련된 특정의 포지티브 및 네거티브 지정들을 포함한다. 본 발명의 일부 실시예들에서, 상기 메타데이터는 보안 게스트의 설치 데이터(예를 들어, 보안 실행(SE) 헤더)를 포함한다.
[0027] 본 발명의 실시예들에서, 보안 인터페이스 컨트롤은 시스템 세팅들과 충돌하는(conflict) 보안 게스트를 실행하는 것으로부터 (호스트) 시스템을 보호한다. 보안 인터페이스 컨트롤은 이러한 충돌을 다음 2개의 조치들 모두에 의해서 금지하는데, 즉 보안 게스트의 이미지에 암호화 링크된 메타데이터의 컨트롤들이 보안 게스트를 시스템과 비-호환(incompatible)으로 지정한다고 결정하는 것에 기초하여 보안 게스트를 시작하기 위한 요청들을 거절함(rejecting)으로써 그리고 보안 게스트를 실행한 후 기술적 환경을 모니터하여(monitoring) 기술적환경에서의 변화(change)가 보안 게스트를 더 이상 기술적 환경과 호환되지 못하게 한다고 결정함(determining)으로써 금지한다. 만일 런타임 중에 보안 게스트가 실행하는 기술 환경에 대한 변화가 컨트롤들과 충돌을 일으킨다면(보안 게스트의 이미지에 암호화로 링크된 메타데이터의 컨트롤이 초기에는 보안 인터페이스 컨트롤이 보안 게스트를 시작하는 것을 허용했을 때), 보안 인터페이스 컨트롤은 하이퍼바이저에 의한 보안 게스트의 종료를 시작한다. 예를 들어, 본 발명의 실시예들에서, 보안 인터페이스 컨트롤이 보안 게스트를 시작할지 여부를 평가할 때: 1) 보안 인터페이스 컨트롤은 보안 게스트의 이미지에 암호화로 링크된 메타데이터의 환경적 제약 조건들을 나타내는 개별 컨트롤들을 읽는다; 2) 보안 인터페이스 컨트롤은 상기 이미지가, 만일 시작되었다면, 실행하는 호스트 시스템의 시스템 세팅들과 상기 컨트롤들을 비교한다; 3) 보안 인터페이스 컨트롤은 만일 상기 시스템 세팅들이 상기 메타데이터의 환경적 컨트롤들과 매치한다면 보안 게스트를 시작한다; 그리고 4) 보안 인터페이스 컨트롤은 보안 게스트가 실행되는 기술 환경의 시스템 세팅들을 모니터링하고, 런타임 동안 만일 보안 인터페이스 컨트롤이 상기 시스템 세팅들이 상기 컨트롤과 충돌하는 방식으로 변경되었다고 결정한다면, 보안 인터페이스 컨트롤은 보안 게스트를 종료한다. 메타데이터에서 환경적 제약 조건들을 포함하는 컨트롤들에서 구현될 수 있는 시스템 세팅들의 예들은 다음을 포함할 수 있지만, 이에 국한되지는 않는다: 1) 하드웨어 조치들(hardware measurements)을 수행하도록 구성된 시스템; 그리고 2) 비-시스템 특정 호스트 키를 사용하도록 구성된 시스템.
[0028] 도 1은 본 발명의 일부 실시예들의 특정 기능을 예시하는 워크플로(100) 이다. 도 1에 도시된 바와 같이, 본 발명의 실시예들에서, 보안 실행을 인에이블(enable) 하기 위해, 보안 게스트의 이미지는 메타데이터로부터 암호 방식으로 링크되며, 이는, 오직 보안 인터페이스 컨트롤에만 액세스할 수 있는, 사설 호스트 키(a private host key)에 기초하여 보안 인터페이스 컨트롤(예: 신뢰할 수 있는 하드웨어 및/또는 소프트웨어 컴포넌트, 신뢰할 수 있는 펌웨어)에 안전하게 전달된다. 본 발명의 실시예들에서, 보안 게스트의 소유자는 보안 인터페이스 컨트롤 동작을 결정하여, 특정 기술 환경들에서 보안 게스트의 실행을 허용하거나 금지한다. 보안 게스트 보안에 대한 기존 접근 방식들에 비해 본 발명의 실시예들의 이점은, 보안 인터페이스 컨트롤에 의해 시행되는, 메타데이터의 세분화된 컨트롤들(the granular controls)이 특정 보안 문제를 해결하기 위해 보안 소유자가 게스트의 실행을 제한할 수 있도록 허용한다는 것이다. 예를 들어, 소유자는 보안 인터페이스 컨트롤이 하드웨어 조치들(hardware measurements)을 수행하도록 구성된 호스트 시스템 및/또는 비-시스템 특정 호스트 키를 사용하도록 구성된 호스트 시스템에서 보안 게스트를 시작할 수 있는지를 컨트롤할 수 있다. 본 발명의 일부 실시예들에서, 적어도 하나의 처리 회로 상에서 실행하는 및/또는 하드웨어에 의해 제공되는 프로그램 코드는 보안 게스트의 실행을 제한한다. 
[0029] 도 1에 도시된 바와 같이, 본 발명의 일부 실시예들에서, 보안 인터페이스 컨트롤(예를 들어, 하드웨어, 소프트웨어, 펌웨어, 조합 등)은 보안 게스트의 이미지에 기초하여 보안 게스트를 개시하기 위한 요청을 가로채기(intercept)한다(105). 보안 인터페이스 컨트롤은, 보안 게스트의 소유자로부터, 시작될 보안 게스트에 링크된 메타데이터를 획득한다(110). 본 발명의 일부 실시예들에서, 상기 메타데이터는 무결성으로 보호되고 (SE) 소유자에 의해 시작될 보안 게스트의 부팅 이미지에 암호화로 링크된다. 상기 메타데이터는 컨트롤들을 포함하고 각 컨트롤은 보안 게스트에 대한 제한(restriction)을 나타낸다; 이들 제한들은 환경적 제약 조건들을 포함한다.
[0030] 도 1로 돌아가면, 본 발명의 실시예들에서 보안 인터페이스 컨트롤은 메타데이터에 대한 무결성 체크를 수행한다(120). 만일 보안 인터페이스 컨트롤이 상기 메타데이터가 무결성 체크를 통과하지 못했다고 결정하면, 보안 인터페이스 컨트롤은 소유자(또는 보안 게스트의 인스턴스에 대한 다른 요청자)에게 오류를 리턴 한다(125). 실패한 무결성 체크에 기초하여 소유자에게 오류를 리턴 함으로써, 보안 인터페이스 컨트롤은 보안 게스트의 요청된 시작을 금지한다(foreclose). 상기 메타데이터가 무결성 체크를 통과하더라도, 보안 인터페이스 컨트롤은 여전히 보안 게스트의 시작을 중단(abort)할 수 있다.
[0031] 만약 보안 인터페이스 컨트롤이 메타데이터가 무결성 체크를 통과했다고 결정하면, 보안 인터페이스 컨트롤은 상기 메타데이터의 컨트롤을 획득한다(130). 보안 인터페이스 컨트롤은 호스트 시스템의 시스템 세팅들을 분석하여 시스템 세팅들이 메타데이터의 컨트롤들과 호환되는지를 결정하고, 보안 게스트가 시스템에서 시작되도록 허용되는지를 결정한다(140). 만일 보안 인터페이스 컨트롤이, 상기 메타데이터에 기초하여, 보안 게스트 시작이 허용되지 않는다고 결정하면, 보안 인터페이스 컨트롤은 보안 게스트의 시작을 요청한 소유자 및/또는 주체에 오류를 리턴 한다(145). 오류를 리턴 함으로써 보안 인터페이스 컨트롤은 보안 게스트를 시작하려는 시도를 중단한다. 본 발명의 일부 실시예들에서, 보안 인터페이스 컨트롤은 보안 게스트의 시작 요청을 무시한다. 보안 인터페이스 컨트롤의 구성에 따라, (이미지로부터) 보안 게스트를 시작하기 위해 하이퍼바이저로부터의 커맨드에 대한 응답은, 상기 이미지에 링크된 메타데이터가, 상기 컨트롤들이 시스템 세팅들과 호환되지 않는 것에 기초하여, 보안 게스트가 주어진 시스템에서 허용되지 않는다고 표시하는 경우, 변화(vary)될 수 있다. 만일 보안 인터페이스 컨트롤이, 메타데이터 및 시스템 세팅들에 기초하여, 보안 게스트가 허용된 것으로 결정하면, 보안 인터페이스 컨트롤은 하이퍼바이저가, 상기 이미지에 기초하여, 보안 게스트를 시작하도록 인에이블 한다(150). 보안 인터페이스 컨트롤가 보안 게스트를 시작하기 위한 시도들을 가로채기 때문에, 보안 인터페이스 컨트롤은 보안 게스트가 시작될 수 있기 전에 보안 게스트를 시작하기 위한 커맨드를 중단한다(discontinue). 따라서, 보안 인터페이스 컨트롤은, 상기 메타데이터의 컨트롤들에 기초하여, 시스템 세팅들과 충돌하는 요청들을 효과적으로 거부한다(deny). 다양한 보안 게스트들의 금지 및 허용은 시스템의 어떠한 다른 컴포넌트가 보안 게스트를 시작할 수 있기 전에 보안 인터페이스 컨트롤에 의해서 달성된다. 예를 들어, 본 발명의 일부 실시 예들에서, 보안 게스트의 이미지에 링크된 메타데이터의 컨트롤은, 하드웨어 조치들을 수행하도록 구성된 호스트 시스템 및/또는 비-시스템 특정 호스트 키를 사용하도록 구성된 호스트 시스템에 기초하여, 보안 게스트를 제한(constrain)하도록 보안 인터페이스 컨트롤에 명령할 수 있다(instruct).
[0032] 도 1로 돌아가면, 위에서 논의된 바와 같이, 보안 게스트의 런타임 동안, 보안 인터페이스 컨트롤은 시스템 세팅들을 모니터링할 수 있고(160) 만일 시스템 세팅들이, 보안 게스트가 환경에서 실행되도록 허용되었음을 표시했던, 상기 컨트롤들과 충돌하는 방식으로 변경되었다고 보안 인터페이스 컨트롤이 결정한다면, 보안 인터페이스 컨트롤은, 런타임 동안, 보안 게스트를 종료할 수 있다 (및/또는 하이퍼바이저가 보안 게스트를 종료하게 할 수 있다)(170). 보안 인터페이스 컨트롤은 이러한 유형의 변경이 발생하는 경우에도 시스템 세팅들을 계속 모니터 할 수 있다(165). 본 발명의 일부 실시예들에서, 보안 인터페이스 컨트롤은 보안 게스트를 종료하도록 하이퍼바이저에 명령(예를 들어, 강제)한다.
[0033] 도 2는 본 발명의 일부 실시예들의 다양한 측면들을 포함하는 기술 환경(200)이다. 도 2의 기술 환경(200)을 구성하는 컴포넌트들은, 인터페이스 컨트롤이, 각 소유자에게 고유한 암호화를 통해, 게스트 이미지의 기능을 컨트롤하도록 보안 게스트 소유자를 어떻게 인에블하는 지, 그리고 보안 인터페이스 컨트롤이, 주어진 이미지에 기초하여, 보안 게스트를 어떻게 활성화/비활성화 하는지를 예시한다. 보안 실행을 위해, 보안 게스트(210)는 메타데이터(240)에 암호화로 링크되며, 메타데이터는 보안 인터페이스 컨트롤(230)(예를 들어, 신뢰할 수 있는 펌웨어, 신뢰할 수 있는 컴포넌트 등)에, 오직 보안 인터페이스 컨트롤(230)에 대해서만 액세스 가능한 사설 호스트 키에 기초하여, 안전하게 전달된다(communicated). 보안 게스트(210)의 소유자는, 소유자에 의해 부과된 환경적 제약 조건들에 기초하여, 보안 게스트(210)의 실행을 허용하거나 금지하도록 보안 인터페이스 컨트롤(230)를 컨트롤한다. 예를 들어, 보안 인터페이스 컨트롤(230)를 통해, 소유자에 의해서 부과된 환경적 제약 조건들은 하드웨어 조치들을 수행하도록 구성된 호스트 시스템 및/또는 비-시스템 특정 호스트 키를 사용하도록 구성된 호스트 시스템에서 보안 게스트의 실행을 제한할 수 있다. 본 발명의 일부 실시예들에서, 메타데이터의 일부분들을 암호화하기 위한 키는 보안 인터페이스 컨트롤(230)에 대해서만 액세스할 수 있는 사설 키를 사용하여 유도된다. 보안 게스트(210)와 연관된 메타데이터(240)에서 언급된 바와 같이, 소유자의 선호도에 기초하여, 보안 인터페이스 컨트롤(230)은, 시스템 설정(270)에 기초하여, 보안 게스트(210)의 개시를 컨트롤한다. 보안 인터페이스 컨트롤(230)은 또한 런타임 동안 시스템 세팅들(270)을 모니터하여, 만일 시스템 세팅들(270)이 변경되어 컨트롤(260)이 보안 게스트(210)가 기술 환경(200)과 호환됨을 더 이상 표시하지 않으면 그리고 않을 때(if and when), 보안 인터페이스 컨트롤(230)은 하이퍼바이저(220)로 하여금 보안 게스트(210)를 종료하도록 할 수 있게 한다.  
[0034] 본 발명의 일부 실시예들에서, 보안 게스트(210)(예를 들어, 가상 머신, 가상 서버)는 하이퍼바이저(220)(예를 들어, 가상 머신 관리자)에 의해 컨트롤된다. 보안 인터페이스 컨트롤(250)는, 보안 게스트(210)의 소유자로부터 하이퍼바이저(220)를 통해, 보안 게스트(240)와 연관된 메타데이터를 획득한다. 이 메타데이터(240)는 무결성으로 보호된다(그리고 메타데이터(240)의 일부, 즉, 보안 게스트(250)의 기밀도 기밀성으로 보호된다. 즉, 암호화됨). 본 발명의 일부 실시예들에서, 메타데이터(240)는 보안 게스트(210)의 부팅 이미지에 암호화로 링크된다. 본 발명의 일부 실시예에서, 보안 게스트(250)의 기밀은 보안 인터페이스 컨트롤(230)가 소유자로부터 획득하는 보안 게스트의 설치 데이터(예를 들어, 보안 실행(SE) 헤더)에 포함된다. 본 발명의 일부 실시예들에서, 메타데이터(240)는 충돌 방지 단방향 함수(예를 들어: 암호화 해시 함수)를 사용하여 계산된 보안 게스트(210)의 부팅 이미지에서 유도된 값을 포함하므로 동일한 값들이 유도될 수 있는 대체 이미지를 구성하는 것은 계산적으로 실현 불가능하다.
[0035] 도 2에 도시된 바와 같이, 보안 게스트(240)에 링크된 메타데이터는 기밀(250)을 포함한다. 본 발명의 일부 실시예들에서, 게스트의 메타데이터는 무결성으로 보호되고 기밀은 보안 인터페이스 컨트롤(230)에 의해서 소유된 사설 키를 사용하여 유도된 키에 의해 암호화된다. 상기 키에 의해서 암호화된 데이터는 주어진 게스트의 부팅 이미지에 대한 암호화 조치를 포함할 수 있다. 따라서, 본 발명의 일부 실시예들에서, 기밀(250)을 포함하는 메타데이터(240)의 부분은 보안 인터페이스 컨트롤(230)만이 계산할 수 있는 키로 암호화된다. 메타데이터(240)는 보안 게스트(210) 자체에 대해서 액세스 가능할 필요는 없다.
[0036] 메타데이터(240)는 보안 게스트(210)의 이미지에 링크되고, 기밀(250)은 보안 게스트의 이미지에 암호화로 링크되지만 게스트의 일부는 아니다. 오히려, 여기에 설명된 바와 같이, 메타데이터(240)는 보안 인터페이스 컨트롤(예를 들어, 펌웨어, 신뢰할 수 있는 컴포넌트, 소프트웨어, 하드웨어 등)(예를 들어, 도 1, 110)로 독립적으로 전송된다. 본 발명의 실시예들에서, 기밀(250)은 게스트 메타데이터의 일부로서 보안 채널을 통해 전송되고(즉, 암호화됨) 게스트에 암호화로 링크된다. 본 발명의 일부 실시예들에서, 메타데이터(240)는 게스트에 암호화로 링크되어(예를 들어, 게스트 이미지의 서명을 포함함) 한 게스트의 메타데이터가 다른 게스트의 메타데이터로 오용될 수 없다. 따라서, 보안 인터페이스 컨트롤(230)은 게스트 이미지와 메타데이터/기밀이 함께 속하는지 확인(verify)할 수 있다(예를 들어, 도 1, 120). 보안 인터페이스 컨트롤(230)에 (예를 들어, 독립적으로, 보안 채널을 통해) 전송된 메타데이터(240)는 무결성 및 기밀성로 보호된다.
[0037] 기밀(250)을 포함하는 것에 더하여, 메타데이터(240)는 또한 보안 인터페이스 컨트롤(230)가 보안 게스트(210)를 개시/실행하기 위해 하이퍼바이저(220)를 인에이블(enable) 및 금지하기 위해 사용하는 컨트롤들(260)을 포함한다. 보안 게스트(210)가 기술 환경(200)에서 시작(그리고, 일부 경우에는 계속 실행)하도록 허용되는지는, 메타데이터(240)의 컨트롤들(260)을 시스템 세팅들(270)과 비교하는 것에 기초하여, 보안 인터페이스 컨트롤(230)에 의해 결정된다. 보안 인터페이스 컨트롤(230)은 하이퍼바이저(220)가 보안 게스트(210)를 개시하도록 인에이블하지 않고, 런타임 동안, 시스템 세팅들(270)을 기초로 기술 환경(200)과의 비호환성을 표시하는 메타데이터(240)(예를 들어, 컨트롤들(260))에 의해 기술된 제한들에 기초하여 하이퍼바이저(220)가 보안 게스트(210)를 종료하게 할 수 있다. 본 발명의 일부 실시예들에서, 메타데이터(240)는 만일 컨트롤들이 포지티브(positive)라면, 주어진 기술 환경의 상황들과의 호환성을 나타내는 컨트롤들(260)을 포함하고, 만일 컨트롤들이 네거티브라면, 주어진 기술 환경에서 실행하는 것에 대한 제약 조건들을 포함한다. 보안 게스트(210)가 이전 시스템 세팅들(270) 값들에 기초하여 이전에 시작된 후 시스템 세팅들(270)이 변경될 때, 보안 인터페이스 컨트롤(230)는 하이퍼바이저(220)로 하여금, 런타임 동안, 보안 게스트(210)를 종료하게 할 수 있는데, 이는 보안 인터페이스 컨트롤(230)이 변경된 시스템 세팅들(270)은 컨트롤들(260)과 호환되지 않는 것으로 결정하여 컨트롤들(260)이 보안 게스트(210)가 기술 환경(200)에서 실행되는 것이 제한됨을 표시하기 때문이다.
[0038] 본 발명의 실시예들에서, 보안 게스트(210)의 이미지에 링크된 메타데이터(240)의 컨트롤들(260)은 하나 또는 그 이상의 환경적 제약 조건들을 나타낸다. 본 발명의 일부 실시예들에서, 컨트롤들(260)의 주어진 컨트롤의 세팅에 따라, 보안 게스트(210)는, 관련 환경 제약 조건이 충족된다 하더라도(예를 들어, 시스템 세팅들(270)에 의해서) 시작되거나 또는 시작되지 않을 수 있다. 예를 들어, 그러한 컨트롤이 네가티브(negative)일 때, 보안 인터페이스 컨트롤(230)은 연관된 환경 제약 조건이 충족될 때도(예를 들어, 하이퍼바이저(220)에 의해서) 보안 게스트의 시작을 금지할 수 있다. 그렇지 않고 만일 컨트롤이 포지티브(positive)이면, 보안 인터페이스 컨트롤(230)은 연관된 환경 제약이 충족될 때 보안 게스트(210)의 시작을 허용할 수 있다(예를 들어, 하이퍼바이저(220)에 의해서). 보안 게스트(210)에 대해 메타데이터(240) 를 평가할 때, 보안 인터페이스 컨트롤(230)은 컨트롤들(260)을 읽을 수 있고, 각 컨트롤에 대해 보안 게스트(210)는, 시스템 세팅들 (270)에 기초하여, 컴퓨팅 환경(200)이 각 컨트롤에 대한 연관된 환경 제약 조건을 충족하는지를 결정한다.
[0039] 도 3은 본 발명의 일부 실시예들의 다양한 측면을 예시하는 워크플로(300)이다. 도 3에 도시된 바와 같이, 본 발명의 다양한 실시예들은 보안 실행 게스트의 소유자를 인에이블 하여 소유자의 보안 게스트가 특정 호스트 환경에서 실행하는 것을 허용하거나 허용하지 않도록 보안 인터페이스 컨트롤을 명령할 수 있다. 게스트 소유자의 결정은 특정 게스트 이미지에 특정될 수 있으며 게스트 소유자는, 보안 게스트에 암호화로 링크된 메타데이터를 활용하여, 일반적으로, 시스템에 의해(즉, 보안 인터페이스 컨트롤에 의해) 시행되기 위해서, 결정을 시스템에 전달한다.
[0040] 도 3으로 돌아가면, 본 발명의 일 실시예들에서, 컴퓨팅 시스템의 보안 인터페이스 컨트롤은 하이퍼바이저에 의해서 시작되는 보안 게스트의 이미지에 링크된 메타데이타(metadata)를 획득하고, 상기 보안 인터페이스 컨트롤은 상기 하이퍼바이저와 통신 가능하게 결합되며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 보안 게스트가 특정 기술적 환경에서 실행하도록 허가되었는지를 보안 인터페이스 컨트롤에 표시한다(310). 메타데이터 자체는 보안 게스트에 대해 액세스 가능하지 않을 수 있다. 메타데이터를 획득하는 단계의 일부로서, 본 발명의 일부 실시예들에서, 보안 인터페이스 컨트롤은 보안 게스트의 이미지에 링크된 메타데이터의 일부를 해독한다. 메타데이터는 무결성으로 보호되고 이 부분은, 본 발명의 일부 실시예들에서, 보안 게스트의 부팅 이미지의 암호화 조치를 포함하는 사설 키를 사용하여 유도된 키에 의해서 암호화되었다. 상기 사설 키는 보안 인터페이스 컨트롤에 의해서 소유될 수 있으며 보안 인터페이스 컨트롤에 의해서만 독점적으로 사용될 수 있다. 상기 사설 키를 사용하여 유도된 키는 보안 인터페이스 컨트롤과 소유자(예: 전용) 간에 공유될 수 있다. 본 발명의 일부 실시예들에서, 메타데이터는 충돌 방지 단방향 함수를 이용하여 계산된 보안 게스트의 부팅 이미지로부터 유도된 값들을 포함한다. 
[0041] 도 2에 도시된 바와 같이. 하나 또는 그 이상의 컨트롤들(예를 들어, 도 2, 260)은 메타데이터(예를 들어, 도 2, 240)의 일부이다. 본 발명의 일부 실시예들에서, 상기 하나 또는 이상의 컨트롤들은 메타데이터의 암호화된 부분에 포함된다. 보안 인터페이스 컨트롤은 보안 게스트의 이미지에 링크된 메타데이터의 이 부분을 해독할 수 있고, 여기서 상기 메타데이터는 무결성으로 보호되며 암호화된 부분은 보안 게스트의 부팅 이미지의 암호화 조치를 포함하고, 상기 암호화된 부분은 사설 키를 사용하여 유도된 키에 의해서 암호화된다. 본 발명의 일부 실시예들에서, 사설 키는 보안 게스트의 부팅 이미지의 암호화 조치를 포함하는 사설 키를 사용하여 파생된 키에 의해 생성된다. 상기 컨트롤들은 각각 다양한 시스템 세팅들에 대한 포지티브(positive) 지정 또는 네거티브 지정을 포함할 수 있고, 여기서 상기 포지티브(positive) 지정은 보안 게스트가 주어진 시스템 세팅에 기초하여 실행하는 것이 허용되었음을 표시하고, 상기 네거티브 지정은 게스트가 주어진 시스템 세팅에 기초하여 실행하는 것이 허용되지 않음을 표시한다.
[0042] 도 3을 참조하면, 보안 인터페이스 컨트롤은 상기 이미지에 기초하여, 보안 게스트를 시작하기 위한 커맨드를 가로챈다(intercept)(320). 본 발명의 일부 실시 예들에서, 상기 커맨드는 호스트 시스템의 게스트 실행을 관리하는 하이퍼바이저(예를 들어, 비-보안 주체)에 의한 것이다. 보안 인터페이스 컨트롤은 하나 또는 그 이상의 컨트롤들에 기초하여 보안 게스트가, 시스템 세팅들에 의해 정의된 바와 같은, 기술적 환경에서 실행하도록 허용되었는지를 결정한다(330). 보안 게스트가 실행하는 것이 허용되는지를 결정하기 위해, 본 발명의 일부 실시예에서, 보안 인터페이스 컨트롤은, 상기 하나 또는 그 이상의 컨트롤들에서, 하나 또는 그 이상의 상기 시스템 세팅들과 관련된 하나의 컨트롤을 식별한다(332). 보안 인터페이스 컨트롤은 상기 컨트롤이, 상기 시스템 세팅들에 기초하여, 보안 게스트를 실행하는 것을 인에이블 또는 제한하는지를 결정한다(334).
[0043] 보안 게스트가 실행하는 것이 허용된다고 결정하는 것에 기초하여, 보안 인터페이스 컨트롤은 하이퍼바이저를 인에이블 하여, 컴퓨팅 시스템 내에서, 상기 이미지에 기초하여, 보안 게스트의 실행을 시작하도록 한다(340). 보안 게스트가 실행하는 것이 허용되지 않는다는 결정에 기초하여 보안 인터페이스 컨트롤은 보안 게스트를 시작하기 위한 상기 커맨드를 무시한다(345). 상기 커맨드를 무시함으로써, 보안 컨트롤 인터페이스는 하이퍼바이저가 보안 게스트의 실행을 시작하는 것을 금지한다.
[0044] 본 발명의 일부 실시 예들에서, 보안 인터페이스 컨트롤은, 보안 게스트의 런타임 동안, 변경이 세팅들에 대하여 있었음을 결정한다(350). 보안 인터페이스 컨트롤은, 하나 또는 그 이상의 컨트롤들에 기초하여, 보안 게스트가, 시스템 세팅들(변경에 기초하여)에 의해서 정의된 바와 같은, 기술적 환경에서 실행하도록 허용되었는지를 결정한다(330). 보안 게스트의 실행이 허용되었는지를 결정하기 위해, 본 발명의 일부 실시 예들에서, 보안 인터페이스 컨트롤은, 하나 또는 그 이상의 컨트롤들에서, 하나 또는 그 이상의 시스템 세팅들과 관련된 하나의 컨트롤을 식별한다(332). 보안 인터페이스 컨트롤은 상기 컨트롤이, 상기 시스템 세팅들에 기초하여, 보안 게스트를 실행하는 것을 인에이블 또는 제한하는지를 결정한다(334). 보안 게스트가 실행하는 것이 허용된다고 결정하는 것에 기초하여, 보안 인터페이스 컨트롤은 하이퍼바이저를 인에이블하여, 컴퓨팅 시스템 내에서, 상기 이미지에 기초하여, 보안 게스트의 실행을 계속하도록 한다(340). 보안 게스트가 실행하는 것이 허용되지 않는다고 결정하는 것에 기초하여, 보안 인터페이스 컨트롤은 하이퍼바이저로 하여금 보안 게스트를 종료하도록 한다(335).
[0045] 본 발명의 실시예들은 컴퓨터로 구현되는 방법, 컴퓨터 프로그램 제품, 및 컴퓨터 시스템을 포함하고, 펌웨어, 하드웨어, 및 소프트웨어 중 어느 하나 또는 이들의 조합이 될 수 있는, 컴퓨터 시스템의 보안 인터페이스 컨트롤은, 소유자에 의해서 시작되고 하이퍼바이저에 의해서 관리되는 보안 게스트의 이미지에 링크된 메타데이터를 획득한다. 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하고 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함한다. 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 이미지에 생성된 보안 게스트가, 시스템 세팅들에 기초하여, 보안 인터페이스 컨트롤에 의해서 시작(또는 유지)되도록 허용되는지를 보안 인터페이스 컨트롤에 표시한다.
예를 들어, 본 발명의 일부 실시 예들에서, 컴퓨팅 시스템의 보안 인터페이스 컨트롤(소프트웨어, 하드웨어 및/또는 펌웨어 등)의 프로그램 코드는 소유자의 보안 게스트 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이터를 획득하고, 보안 인터페이스 컨트롤은 하이퍼바이저에 통신 가능하게 결합되며, 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은, 컴퓨팅 시스템의 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 하이퍼바이저가 컴퓨팅 시스템의 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하는 것이 허용되었는지를 보안 인터페이스 컨트롤에 표시한다. 상기 프로그램 코드는 보안 게스트의 이미지로부터 보안 게스트의 인스턴스를 시작하기 위한 하이퍼바이저에 의한 커맨드를 가로챈다(intercept). 상기 프로그램 코드는 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를 결정한다. 상기 프로그램 코드는, 하나 또는 그 이상의 컨트롤들과 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 하이퍼바이저가 상기 인스턴스 (instance)를 실행하도록 허용되었는지를 결정한다. 하이퍼바이저가 상기 인스턴스를 실행하도록 허용되었다고 결정하는 것에 기초하여, 상기 프로그램 코드는, 컴퓨팅 시스템에서, 하이퍼바이저에 의한 상기 인스턴스의 개시를, 상기 인터셉트된 커맨드를 하이퍼바이저에 전달하는 것에 기초하여, 인에이블 한다. 하이퍼바이저가 상기 인스턴스(instance)를 실행하는 것이 허용되어 있지 않다고 결정하는 것에 기초하여, 프로그램 코드는 상기 커맨드를 무시한다.
[0046] 본 발명의 일부 실시예들에서, 프로그램 코드가 메타데이터를 획득할 때, 프로그램 코드는 보안 게스트의 이미지에 링크된 메타데이터의 부분을 해독하고, 상기 메타데이터는 무결성으로 보호되며 보안 게스트의 부팅 이미지의 암호화 조치를 포함하는 상기 부분은 사설 키를 사용하여 유도된 키로 암호화되었다. 본 발명의 일부 실시예들에서, 상기 메타데이터의 암호화된 부분은 하나 또는 그 이상의 컨트롤들을 포함한다. 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 환경적 제약 조건을 포함할 수 있다. 본 발명의 일부 실시예들에서, 상기 환경적 제약 조건들은 하드웨어 조치를 수행하도록 구성된 시스템, 및 비-시스템 특정 호스트 키를 사용하도록 구성된 시스템으로 구성된 그룹으로부터 선택된다.
[0047] 본 발명의 일부 실시예들에서, 상기 사설 키는 보안 인터페이스 컨트롤에 의해 소유되고 보안 인터페이스 컨트롤에 의해 독점적으로 사용된다.
[0048] 본 발명의 일부 실시예들에서, 상기 사설 키를 사용하여 유도된 키는 보안 인터페이스 컨트롤과 소유자 사이에서 공유된다.
[0049] 본 발명의 일부 실시 예들에서, 상기 메타데이터는 충돌 방지 단방향 함수를 이용하여 계산된 보안 게스트의 부팅 이미지로부터 유도된 값을 포함한다.
[0050] 본 발명의 일부 실시 예들에서, 하나 또는 그 이상의 컨트롤들 각각은 주어진 시스템 세팅들에 대한 포지티브 지정 또는 네거티브 지정을 포함하고, 상기 포지티브 지정은 보안 게스트의 인스턴스가 주어진 시스템 세팅을 포함하는 컴퓨팅 시스템에서 실행되도록 허용되었음을 표시하며 그리고 상기 네거티브 지정은 보안 게스트의 인스턴스가 주어진 시스템 세팅을 포함하는 컴퓨팅 시스템에서 실행되도록 허용되지 않았음을 표시한다.
[0051] 본 발명의 일부 실시 예들에서, 상기 메타데이터는 보안 게스트의 인스턴스에 대해서 액세스가 가능하지 않다.
[0052] 본 발명의 일부 실시 예들에서, 하이퍼바이저가 인스턴스를 실행하도록 허용되는지를 결정하는 프로그램 코드는: 하나 또는 그 이상의 시스템 세팅들 중 하나의 세팅과 관련된 하나의 컨트롤을, 하나 또는 그 이상의 컨트롤들에서, 식별하는 프로그램 코드; 및 상기 컨트롤이 상기 인스턴스의 실행을 인에이블 또는 제한하는지를, 상기 컨트롤에 기초하여, 결정하는 프로그램 코드를 포함한다.
[0053] 본 발명의 일부 실시 예들에서, 상기 프로그램 코드는 상기 인스턴스의 런타임 동안 하나 또는 그 이상의 시스템 세팅들을 모니터한다. 상기 프로그램 코드는 런타임 동안에 상기 하나 또는 그 이상의 세팅들 중 적어도 하나의 세팅이 변경되었음을 결정한다. 상기 프로그램 코드는 상기 적어도 하나의 세팅과 관련된 하나 또는 그 이상의 컨트롤들 중 주어진 컨트롤을 식별한다. 상기 프로그램 코드는, 상기 적어도 하나의 세팅과 상기 주어진 컨트롤에 기초하여, 하이퍼바이저가 상기 인스턴스를 실행하도록 허용되었는지를 결정한다. 하이퍼바이저가 상기 인스턴스를 실행하도록 허용되지 않았다고 결정하는 것에 기초하여, 상기 프로그램 코드는, 하이퍼바이저를 통해, 상기 인스턴스를 종료할 수 있다.
[0054] 본 발명의 일부 실시 예들에서, 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위한 하이퍼바이저에 의한 커맨드를 가로채는 프로그램 코드는: 상기 메타데이터에 관하여 무결성 체크를 수행하는 프로그램 코드; 및 상기 무결성 체크를 성공적으로 완료한 것에 기초하여, 상기 메타데이터에서 하나 또는 그 이상의 컨트롤들을 읽는 프로그램 코드를 포함한다.
[0055] 이제 도 4를 참조하면, 도 4는 클라우드 컴퓨팅 노드(10)일 수 있는 컴퓨팅 노드의 예의 개략도이다. 클라우드 컴퓨팅 노드(10)는 적합한 클라우드 컴퓨팅 노드의 하나의 예일뿐이며 여기에 설명된 본 발명의 실시예들의 사용 또는 기능의 범위에 관하여 어떠한 제한을 암시하려고 의도된 것이 아니다. 그럼에도 불구하고, 클라우드 컴퓨팅 노드(10)는 위에서 설명된 모든 기능을 구현할 수 있고 및/또는 수행할 수 있다. 본 발명의 일 실시예에서, 보안 게스트(210)(도 2), 보안 인터페이스 컨트롤(230)(도 2), 및/또는 하이퍼바이저(220)(도 2) 각각은 클라우드 컴퓨팅 노드(10)(도 4)에서 실행되는 것으로 이해될 수 있고 만일 클라우드 컴퓨팅 노드(10)가 아니면, 상기 클라우드 컴퓨팅 노드(10)의 특징들을 포함하는 하나 또는 그 이상의 일반 컴퓨팅 노드들에서 실행되는 것으로 이해될 수 있다.
[0056] 클라우드 컴퓨팅 노드(10)에는, 다수의 다른 범용 또는 특수 목적 컴퓨팅 환경들 또는 구성들과 함께 운영되는, 컴퓨터 시스템/서버(12)가 존재한다. 컴퓨터 시스템/서버(12)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 씬 클라이언트들, 씩 클라이언트들, 핸드헬드 또는 랩탑 디바이스들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그래밍 가능한 소비자 전자 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 중 하나를 포함하는 분산 클라우드 컴퓨팅 환경들, 등을 포함하나, 이에 국한하는 것은 아니다. 
[0057] 컴퓨터 시스템/서버(12)는, 컴퓨터 시스템에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능한 명령들의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 논리, 데이터 구조들 등을 포함할 수 있다. 컴퓨터 시스템/서버(12)는 통신 네트워크를 통해 링크되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 클라우드 컴퓨팅 환경에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[0058] 도 4에서 도시된 바와 같이, 클라우드 컴퓨팅 노드(10)로서 활용될 수 있는 컴퓨터 시스템/서버(12)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 유닛들(16), 시스템 메모리(28), 및 시스템 메모리(28)를 포함하는 다양한 시스템 컴포넌트를 프로세서(16)에 연결하는 버스(18)를 포함할 수 있지만, 이에 국한되지 않는다.
[0059] 버스(18)는, 다양한 버스 아키텍처들 중 하나를 사용하는, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 및 프로세서 또는 로컬 버스를 포함하는, 버스 구조들의 여러 유형들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스를 포함하나, 이에 국한되지는 않는다.
[0060] 컴퓨터 시스템/서버(12)는 일반적으로 다양한 컴퓨터 시스템 판독 가능한 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체일 수 있으며 , 휘발성 및 비휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다.
[0061] 시스템 메모리(28)은, 예컨대 랜덤 액세스 메모리(RAM)(30) 및/또는 캐시 메모리(32)와 같은, 휘발성 메모리의 형태의 컴퓨터 시스템 판독 가능한 매체를 포함할 수 있다. 컴퓨터 시스템/서버(12)는 또한, 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 포함할 수 있다. 단지 예로서, 스토리지 시스템(34)이 비착탈식, 비휘발성 자기 매체(도시되지 않고 일반적으로 "하드 드라이브"라고 함)로부터 읽고 쓰기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈가능 비휘발성 자기 디스크( 예: "플로피 디스크") 에서 읽고 쓰기 위한 자기 디스크 드라이브 및, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은, 착탈가능 비휘발성 광학 디스크에서 읽거나 쓰기 위한 광학 디스크 드라이브가 제공될 수 있다. 그러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(18)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(28)는 본 발명의 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0062] 운영 체계, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들 및 프로그램 데이터 뿐만 아니라, 프로그램 모듈들의 (적어도 하나)세트(42)를 갖는, 프로그램/유틸리티(40)가, 예를 들어, 메모리(28)에 저장될 수 있지만, 이에 국한되는 것은 아니다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈(42)은 일반적으로 본 명세서에 기술된 바와 같은 본 발명의 실시예의 기능들 및/또는 방법들을 수행한다.
[0063] 컴퓨터 시스템/서버(12)는 키보드, 포인팅 디바이스, 디스플레이(24) 등과 같은, 하나 또는 그 이상의 외부 디바이스들(14); 사용자가 컴퓨터 시스템/서버(12)와 상호작용할 수 있게 하는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(12)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신 할 수 있다. 그러한 통신은 입/출력(I/O) 인터페이스(22)를 통해 발생할 수 있다. 또한, 컴퓨터 시스템/서버(12)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 네트워크 어댑터(20)를 통한 공중 네트워크(예를 들어, 인터넷)와 같은, 하나 또는 그 이상의 네트워크들과 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(20)는 버스(18)를 통해 컴퓨터 시스템/서버(12)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(12)와 함께 사용될 수 있음을 이해해야 한다. 이들의 예들에는: 마이크로코드, 디바이스 드라이버들, 리던던트 처리 유닛들, 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이벌 스토리지 시스템들이 포함되지만 이에 국한되지는 않는다.
[0064]본 명세서는 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 여기서 설명된 기술적 사상들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해해야 한다. 오히려, 본 발명의 실시예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0065] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공 및 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, VM들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0066] 클라우드 컴퓨팅 특성들은 다음과 같다:
[0067] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 기능들을 일방적으로 제공(provisioning)할 수 있다.
[0068] 광역 네트워크 액세스(Broad network access): 이질적 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다. 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은 멀티-테넌트 모델(a multi-tenant model)을 이용하여, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하면서, 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 컨트롤할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 레벨에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다. 기민한 탄력성(Rapid elasticity): 역량들(capabilities)이 기민하게 탄력적으로 제공되어, 어떤 경우엔 자동으로, 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게는 프로비저닝할 수 있는 가능성이 종종 무제한인 것으로 보이고 언제든지 얼마든지 구매할 수 있다.
[0069] 측정 가능한 서비스(Measured service): 클라우드 시스템은 서비스 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 레벨에서(at some level of abstraction) 계측 기능을 활용하여 자원 사용을 자동으로 컨트롤하고 최적화한다. 자원 사용량은 모니터되고, 컨트롤되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0070] 서비스 모델들(Service Models)은 다음과 같다:
[0071] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버, 운영체제, 스토리지, 또는 개별 애플리케이션 성능을 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 컨트롤하지 않는다.
[0072] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 인프라스트럭처에 배치하게 해주는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 스토리지를 포함하는 하부 클라우드 인프라스트럭처를 관리하거나 컨트롤하지 않지만, 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 컨트롤할 수 있다.
[0073] 인프라스트럭처 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영체제와 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 컨트롤하지 않지만, 운영체제, 스토리지, 배치된 애플리케이션들에 대해서 컨트롤할 수 있고, 가능한 경우 선택된 네트워킹 컴포넌트들(예를 들어, 호스트 방화벽들)에 대해서 제한적으로 컨트롤할 수 있다.
[0074] 배치 모델들(Deployment Models)은 다음과 같다:
[0075] 사설 클라우드(Private cloud): 클라우드 인프라스트럭처는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
[0076] 커뮤니티 클라우드(Community cloud): 클라우드 인프라스트럭처는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(on-premises)에 위치할 수 있다.
[0077] 공공 클라우드(Public cloud): 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0078] 하이브리드 클라우드(Hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0079] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
[0080] 이제 도 5를 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함하며, 이들은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 같은, 클라우드 소비자가 사용하는 로컬 컴퓨팅 장치들과 통신할 수 있다. 노드들(10)은 서로 통신할 수 있다. 이들은 상기에서 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 인프라스트럭처, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 19에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화 된 장치와 통신할 수 있다는 것을 이해해야 한다.
[0081] 이제 도 6을 참조하면, 클라우드 컴퓨팅 환경(50)(도 5)에 의해 제공되는 일 세트의 기능별 추상화 계층들이 도시된다. 도 6에 도시된 컴포넌트들, 계층들, 및 기능들은 단지 예시의 목적이며 본 발명의 실시예들은 이들에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 계층들과 그에 대응하는 기능들이 제공된다:
[0082] 하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 스토리지 디바이스들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[0083] 가상화 계층(70)은 추상화 계층을 제공하며 이로부터 다음의 가상 실체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 스토리지(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영체제들(74); 및 가상 클라이언트들(75).
[0084] 한 예에서, 관리 계층(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)을 제공한다.
[0085] 워크로드들 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 계층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음과 같다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및, 보안 인터페이스 컨트롤을 통해, 환경 팩터들에 기초한, 보안 게스트 실행의 컨트롤링(96).
[0086] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 레벨에서 컴퓨터 프로그램 제품 일 수 있다. 컴퓨터 프로그램 제품은 프로세서로 하여금 본 발명의 실시 예들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령을 갖는 컴퓨터 판독가능 저장 매체(또는 매체)를 포함할 수 있다.
[0087] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 히스토리된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0088] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 장치 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 포워드 한다.
[0089] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA),또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0090] 본 명세서에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들을 기술한다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0091] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0092] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0093] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 연관된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0094] 본 명세서에서 사용된 용어는 단지 특정한 실시 예들을 설명하기위한 것이며 제한을 의도한 것이 아니다. 본 명세서에 사용된 바와 같이, 단수 형태 "a", "an" 및 "the"는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도된다. 본 명세서에서 사용될 때, "포함하다" 및/또는 "포함하는"이라는 용어는 명시된 특징들, 정수들, 단계들, 연산들, 엘리멘트들 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 특징들, 정수들, 단계들, 연산들, 엘리멘트들 및/또는 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0095] 본 발명의 하나 또는 그 이상의 실시 예들에 대한 설명은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 형태로 빠짐없이 총 망라하거나 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자들에게 기술된 실시 예들의 범위와 정신을 벗어남이 없이 많은 수정들 및 변형들이 있을 수 있다는 것이 명백하다. 여기서 사용된 용어는 본 발명의 실시 예는 여러 특징들 및 실제 응용을 가장 잘 설명하기 위해 그리고 고려되는 구체적인 용도에 적합하게 여러 수정들을 갖는 다양한 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되고 기술되었다.

Claims (20)

  1. 컴퓨터-구현 방법에 있어서, 상기 방법은:
    소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 컴퓨터 시스템의 보안 인터페이스 컨트롤(a secure interface control)에 의해서, 획득하는 단계(obtaining) - 상기 보안 인터페이스 컨트롤은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 보안 인터페이스 컨트롤에 표시함-;
    상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위한 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 보안 인터페이스 컨트롤에 의해서, 가로채는 단계(intercepting);
    상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 인에이블 하는 단계(enabling); 및
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 보안 인터페이스 컨트롤에 의해서, 무시하는 단계(ignoring)를 포함하는
    컴퓨터-구현 방법.
  2. 제1항에 있어서,
    상기 메타데이터를 획득하는 단계는:
    상기 보안 게스트의 이미지에 링크된 상기 메타데이터의 일부분을, 상기 보안 인터페이스 컨트롤에 의해서, 해독하는 단계(decrypting)를 더 포함하고, 상기 메타데이터는 무결성으로 보호되고, 상기 보안 게스트의 부팅 이미지의 암호화 조치(a cryptographic measure of a boot image)을 포함하는 상기 일부분은 사설 키(a private key)를 사용하여 유도된 키에 의해서 암호화된(encrypted)
    컴퓨터-구현 방법.
  3. 제1항 또는 제2항에 있어서, 상기 메타데이터의 암호화된 일부분은 상기 하나 또는 그 이상의 컨트롤들을 포함하는
    컴퓨터-구현 방법.
  4. 제1항 내지 제3항의 항들 중 어느 한 항에 있어서, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 환경적 제한(an environmental constraint)을 포함하는
    컴퓨터-구현 방법.
  5. 제4항에 있어서, 상기 환경적 제한은:
    하드웨어 측정들(hardware measurements)을 수행하도록 구성된 시스템들, 및 비-시스템 특정 호스트 키(a non-system specific host key)를 사용하도록 구성된 시스템들로 구성되는 그룹으로부터 선택되는
    컴퓨터-구현 방법.
  6. 제2항에 있어서, 상기 사설 키는 상기 보안 인터페이스 컨트롤에 의해서 소유되고 상기 보안 인터페이스 컨트롤에 의해서 배타적으로 사용되는
    컴퓨터-구현 방법.
  7. 제6항에 있어서, 상기 사설 키를 사용하여 유도되는 키는 상기 보안 인터페이스 컨트롤과 상기 소유자 사이에 공유되는
    컴퓨터-구현 방법.
  8. 제1항 내지 제7항의 항들 중 어느 한 항에 있어서, 상기 메타데이터는 충돌 방지 단방향 함수(a collision resistant one-way function)를 이용하여 계산된 상기 보안 게스트의 부팅 이미지로부터 유도되는 값들을 포함하는
    컴퓨터-구현 방법.
  9. 제1항내지 제8항의 항들 중 어느 한 항에 있어서, 상기 하나 또는 그 이상의 컨트롤들 각각은 주어진 시스템 세팅들에 대한 포지티브 지정 또는 네거티브 지정(a positive designation or a negative designation for a given system settings)을 포함하고, 상기 포지티브 지정은 상기 보안 게스트의 인스턴스가 상기 주어진 시스템 세팅을 포함하는 상기 컴퓨터 시스템에서 실행하도록 허용됨을 표시하며, 상기 네거티브 지정은 상기 보안 게스트의 인스턴스가 상기 주어진 시스템 세팅을 포함하는 상기 컴퓨터 시스템에서 실행하도록 허용되지 않음을 표시하는
    컴퓨터-구현 방법.
  10. 제1항내지 제9항의 항들 중 어느 한 항에 있어서, 상기 메타데이터는 상기 보안 게스트의 인스턴스에 대해서는 액세스 가능하지 않는(inaccessible)
    컴퓨터-구현 방법.
  11. 제1항내지 제10항의 항들 중 어느 한 항에 있어서, 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를 결정하는 단계는:
    상기 하나 또는 그 이상의 시스템 세팅들 중 하나의 세팅에 관련된 컨트롤을, 상기 하나 또는 그 이상의 컨트롤들에서, 상기 보안 인터페이스 컨트롤에 의해서, 식별하는 단계(identifying); 및
    상기 컨트롤이 상기 인스턴스를 실행하는 것을 인에이블 하는 지 또는 제한하는지를, 상기 컨트롤에 기초하여, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  12. 제1항내지 제11항의 항들 중 어느 한 항에 있어서,
    상기 인스턴스의 실행시간(runtime) 동안, 상기 하나 또는 그 이상의 시스템 세팅들을, 상기 보안 인터페이스 컨트롤에 의해서, 모니터하는 단계(monitoring);
    상기 하나 또는 그 이상의 시스템 세팅들 중 적어도 하나의 세팅이 상기 실행시간 동안에 변경되었음을, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계
    상기 적어도 하나의 세팅에 관련된 상기 하나 또는 그 이상의 컨트롤들 중 주어진 컨트롤을, 상기 보안 인터페이스 컨트롤에 의해서, 식별하는 단계
    상기 적어도 하나의 세팅과 상기 주어진 컨트롤에 기초하여, 상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 보안 인터페이스 컨트롤에 의해서, 결정하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  13. 제12항에 있어서,
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 인스턴스를, 상기 하이퍼바이저를 통해, 상기 보안 인터페이스 컨트롤에 의해서, 종료하는 단계(terminating)를 더 포함하는
    컴퓨터-구현 방법.
  14. 제1항내지 제13항의 항들 중 어느 한 항에 있어서,
    상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위한 (initiate) 상기 하이퍼바이저에 의한 커맨드를 가로채는 단계는:
    상기 메타데이터에 관한 무결성 체크(an integrity check on the metadata)를, 상기 보안 인터페이스 컨트롤에 의해서, 수행하는 단계; 및
    상기 무결성 체크를 성공적으로 완료하는 것에 기초하여, 상기 메타데이터에서 상기 하나 또는 그 이상의 컨트롤들을 판독하는 단계(reading)를 더 포함하는
    컴퓨터-구현 방법.
  15. 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
    하나 또는 그 이상의 프로세서들에 의해서 판독 가능하고 방법을 수행하기 위해 상기 하나 또는 그 이상의 프로세서들에 의한 실행을 위한 명령들을 저장하는 컴퓨터 판독가능 스토리지 매체를 포함하고, 상기 방법은:
    소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들에 의해서, 획득하는 단계(obtaining) - 상기 하나 또는 그 이상의 프로세서들은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 하나 또는 그 이상의 프로세서들에 표시함-;
    상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위한 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 가로채는 단계(intercepting);
    상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 인에이블 하는 단계(enabling); 및
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 무시하는 단계(ignoring)를 포함하는
    컴퓨터 프로그램 제품.
  16. 제15항에 있어서,
    상기 메타데이터를 획득하는 단계는:
    상기 보안 게스트의 이미지에 링크된 상기 메타데이터의 일부분을, 상기 하나 또는 그 이상의 프로세서들에 의해서, 해독하는 단계(decrypting)를 더 포함하고, 상기 메타데이터는 무결성으로 보호되고, 상기 보안 게스트의 부팅 이미지의 암호화 조치(a cryptographic measure of a boot image)를 포함하는 상기 일부분은 사설 키(a private key)를 사용하여 유도된 키에 의해서 암호화된(encrypted)
    컴퓨터 프로그램 제품.
  17. 제16항에 있어서, 상기 메타데이터의 암호화된 일부분은 상기 하나 또는 그 이상의 컨트롤들을 포함하는
    컴퓨터 프로그램 제품.
  18. 제15항 내지 제17항의 항들 중 어느 한 항에 있어서, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 환경적 제한(an environmental constraint)을 포함하는
    컴퓨터 프로그램 제품.
  19. 제18항에 있어서, 상기 환경적 제한은:
    하드웨어 측정들(hardware measurements)을 수행하도록 구성된 시스템들, 및 시스템 특정이-아닌 호스트 키(a non-system specific host key)를 사용하도록 구성된 시스템들로 구성되는 그룹으로부터 선택되는
    컴퓨터 프로그램 제품.
  20. 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은:
    메모리;
    상기 메모리와 통신하는 하나 또는 그 이상의 프로세서들;
    방법을 수행하기 위해 상기 메모리를 통해 하나 또는 그 이상의 프로세서들에 의해서 실행가능한 프로그램 명령들을 포함하고, 상기 방법은:
    소유자의 보안 게스트의 이미지에 링크되고 하이퍼바이저에 의해서 관리되는 메타데이타(metadata)를, 상기 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들에 의해서, 획득하는 단계(obtaining) - 상기 하나 또는 그 이상의 프로세서들은 상기 하이퍼바이저와 통신 가능하게 결합되고, 상기 하이퍼바이저는 하나 또는 그 이상의 게스트들을 관리하며, 상기 메타데이터는 하나 또는 그 이상의 컨트롤들을 포함하고, 상기 하나 또는 그 이상의 컨트롤들의 각 컨트롤은 상기 컴퓨팅 시스템에서 하나 또는 그 이상의 시스템 세팅들의 존재(presence) 또는 부재(absence)에 기초하여 상기 하이퍼바이저가 상기 컴퓨팅 시스템의 상기 이미지에 생성된 보안 게스트의 한 인스턴스(an instance)를 실행하도록 허가되었는지를 상기 하나 또는 그 이상의 프로세서들에 표시함- ;
    상기 보안 게스트의 이미지로부터 상기 보안 게스트의 인스턴스를 시작하기 위한 (initiate) 상기 하이퍼바이저에 의한 커맨드(a command)를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 가로채는 단계(intercepting);
    상기 컴퓨팅 시스템에서 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었는지를, 상기 하나 또는 그 이상의 컨트롤들 및 상기 하나 또는 그 이상의 시스템 세팅들의 존재 또는 부재에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 결정하는 단계;
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되었다고 결정하는 것에 기초하여, 상기 컴퓨팅 시스템에서, 상기 하이퍼바이저에 의한 상기 인스턴스의 시작(initiation)을, 상기 가로챈 커맨드(the intercepted command)를 상기 하이퍼바이저에 전달하는 것(relaying)에 기초하여, 상기 하나 또는 그 이상의 프로세서들에 의해서, 인에이블 하는 단계(enabling); 및
    상기 하이퍼바이저가 상기 인스턴스를 실행하도록 허가되지 않았다고 결정하는 것에 기초하여, 상기 커맨드를, 상기 하나 또는 그 이상의 프로세서들에 의해서, 무시하는 단계(ignoring)를 포함하는
    컴퓨터 시스템.
KR1020217027418A 2019-03-08 2020-02-27 보안 실행 게스트 소유자 환경 컨트롤 KR102527949B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/296,498 2019-03-08
US16/296,498 US11443040B2 (en) 2019-03-08 2019-03-08 Secure execution guest owner environmental controls
PCT/EP2020/055155 WO2020182482A1 (en) 2019-03-08 2020-02-27 Secure execution guest owner environmental controls

Publications (2)

Publication Number Publication Date
KR20210121170A true KR20210121170A (ko) 2021-10-07
KR102527949B1 KR102527949B1 (ko) 2023-05-03

Family

ID=69714051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217027418A KR102527949B1 (ko) 2019-03-08 2020-02-27 보안 실행 게스트 소유자 환경 컨트롤

Country Status (11)

Country Link
US (2) US11443040B2 (ko)
EP (1) EP3935537B1 (ko)
JP (1) JP7397557B2 (ko)
KR (1) KR102527949B1 (ko)
CN (1) CN113544675A (ko)
ES (1) ES2966019T3 (ko)
HU (1) HUE064478T2 (ko)
PL (1) PL3935537T3 (ko)
SG (1) SG11202105432WA (ko)
WO (1) WO2020182482A1 (ko)
ZA (1) ZA202106318B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560696B1 (ko) * 2022-01-26 2023-07-28 삼성전자주식회사 접근 권한 제어를 수행하는 스토리지 장치 및 그 동작방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443040B2 (en) 2019-03-08 2022-09-13 International Business Machines Corporation Secure execution guest owner environmental controls
US11475167B2 (en) 2020-01-29 2022-10-18 International Business Machines Corporation Reserving one or more security modules for a secure guest
US11829495B2 (en) 2021-08-05 2023-11-28 International Business Machines Corporation Confidential data provided to a secure guest via metadata
US11809607B2 (en) * 2021-08-05 2023-11-07 International Business Machines Corporation Customization of multi-part metadata of a secure guest
CN113986089A (zh) * 2021-10-25 2022-01-28 北京有竹居网络技术有限公司 禁止页面跳转方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178504A1 (en) * 2013-12-24 2015-06-25 Microsoft Corporartion Virtual machine assurances
US20160132345A1 (en) * 2014-11-11 2016-05-12 International Business Machines Corporation Processing a guest event in a hypervisor-controlled system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4494189A (en) 1982-04-26 1985-01-15 International Business Machines Corporation Method and means for switching system control of CPUs
EP0610677A3 (en) 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US6453392B1 (en) 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US7424543B2 (en) 1999-09-08 2008-09-09 Rice Iii James L System and method of permissive data flow and application transfer
US20120054486A1 (en) 2010-08-31 2012-03-01 MindTree Limited Securing A Virtual Environment And Virtual Machines
US9292149B2 (en) 2010-10-22 2016-03-22 Litl Llc Method and apparatus for public computing
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US8769622B2 (en) 2011-06-30 2014-07-01 International Business Machines Corporation Authentication and authorization methods for cloud computing security
US8863109B2 (en) 2011-07-28 2014-10-14 International Business Machines Corporation Updating secure pre-boot firmware in a computing system in real-time
CN103378971B (zh) 2012-04-27 2017-10-13 厦门雅迅网络股份有限公司 一种数据加密系统及方法
US9038148B1 (en) 2012-08-23 2015-05-19 Amazon Technologies, Inc. Secret variation for network sessions
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
US9418229B2 (en) 2013-10-28 2016-08-16 Disney Enterprises, Inc. Firmware security
RU2581552C2 (ru) 2014-09-10 2016-04-20 Закрытое Акционерное Общество "Научно-Производственное Объединение "Эшелон" (ЗАО "НПО "Эшелон") Способ доверенной загрузки в виртуализированных средах
US9652276B2 (en) 2014-09-17 2017-05-16 International Business Machines Corporation Hypervisor and virtual machine protection
US9928080B2 (en) 2014-09-30 2018-03-27 International Business Machines Corporation Hardware security module access management in a cloud computing environment
US9858140B2 (en) 2014-11-03 2018-01-02 Intel Corporation Memory corruption detection
US10230528B2 (en) 2015-05-04 2019-03-12 Intel Corporation Tree-less integrity and replay memory protection for trusted execution environment
MX368137B (es) 2015-05-06 2019-09-20 Ericsson Telefon Ab L M Un nodo de red, un dispositivo inalambrico y metodos en el mismo para manipular informacion de contexto de red de acceso de radio en una red de comunicaciones inalambricas.
US20180075259A1 (en) 2015-09-17 2018-03-15 Cavium, Inc. Systems and methods for secure machine for hardware security module (hsm) adapter
GB201603469D0 (en) 2016-02-29 2016-04-13 Ibm Securely removing system capabilities from a logical partition
US10218696B2 (en) 2016-06-30 2019-02-26 Microsoft Technology Licensing, Llc Targeted secure software deployment
US10237245B2 (en) 2016-07-15 2019-03-19 International Business Machines Corporation Restricting guest instances in a shared environment
US11443040B2 (en) 2019-03-08 2022-09-13 International Business Machines Corporation Secure execution guest owner environmental controls
US11475167B2 (en) 2020-01-29 2022-10-18 International Business Machines Corporation Reserving one or more security modules for a secure guest

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178504A1 (en) * 2013-12-24 2015-06-25 Microsoft Corporartion Virtual machine assurances
US20160132345A1 (en) * 2014-11-11 2016-05-12 International Business Machines Corporation Processing a guest event in a hypervisor-controlled system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560696B1 (ko) * 2022-01-26 2023-07-28 삼성전자주식회사 접근 권한 제어를 수행하는 스토리지 장치 및 그 동작방법

Also Published As

Publication number Publication date
EP3935537C0 (en) 2023-11-15
US11443040B2 (en) 2022-09-13
US20200285748A1 (en) 2020-09-10
JP7397557B2 (ja) 2023-12-13
PL3935537T3 (pl) 2024-04-08
WO2020182482A1 (en) 2020-09-17
CN113544675A (zh) 2021-10-22
SG11202105432WA (en) 2021-06-29
US11687655B2 (en) 2023-06-27
JP2022522678A (ja) 2022-04-20
EP3935537B1 (en) 2023-11-15
HUE064478T2 (hu) 2024-03-28
EP3935537A1 (en) 2022-01-12
ES2966019T3 (es) 2024-04-17
ZA202106318B (en) 2024-01-31
US20220382869A1 (en) 2022-12-01
KR102527949B1 (ko) 2023-05-03

Similar Documents

Publication Publication Date Title
KR102527949B1 (ko) 보안 실행 게스트 소유자 환경 컨트롤
EP3935536B1 (en) Secure execution guest owner controls for secure interface control
KR102539777B1 (ko) 하드웨어 보안 모듈에 대한 보안 게스트들의 보안 키들의 바인딩
US9749346B2 (en) Security with respect to managing a shared pool of configurable computing resources
KR20210121087A (ko) 보안 운영 체제 이미지의 점진적 복호화 및 무결성 검증
US10296737B2 (en) Security enforcement in the presence of dynamic code loading
WO2023232616A1 (en) Attestation of logic loader code and integrity checking service logic code in a trusted execution environment (tee)
US11755721B2 (en) Trusted workload execution
US11645092B1 (en) Building and deploying an application
WO2023005704A1 (en) Sensitive data encryption

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