KR20230031278A - 하이퍼바이저 보호 키 - Google Patents

하이퍼바이저 보호 키 Download PDF

Info

Publication number
KR20230031278A
KR20230031278A KR1020237000008A KR20237000008A KR20230031278A KR 20230031278 A KR20230031278 A KR 20230031278A KR 1020237000008 A KR1020237000008 A KR 1020237000008A KR 20237000008 A KR20237000008 A KR 20237000008A KR 20230031278 A KR20230031278 A KR 20230031278A
Authority
KR
South Korea
Prior art keywords
guest
key
virtual server
wrapping
hypervisor
Prior art date
Application number
KR1020237000008A
Other languages
English (en)
Inventor
라인하르트 테오도로 부엔겐
크리스찬 본트래거
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20230031278A publication Critical patent/KR20230031278A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0822Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/76Proxy, i.e. using intermediary entity to perform cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • Multi Processors (AREA)

Abstract

암호화 작업들(cryptographic operations)에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 컴퓨터-구현 방법컴퓨터 시스템, 및 컴퓨터 프로그램 제품이 제공될 수 있다. 상기 게스트 가상 서버는 신뢰할 수 있는 하이퍼바이저(a trusted hypervisor)로 등록할 수 있다. 상기 하이퍼바이저는 상기 등록하는 단계로부터 상기 게스트 자격 증명들과 연관된 게스트 래핑 키를 생성할 수 있다, 상기 하이퍼바이저는 또한 위성 가상 서버 인스턴스를 생성할 수 있다. 상기 가상 게스트 서버 및 상기 위성 가상 서버 인스턴스는 상기 하이퍼바이저 또는 모든 게스트 가상 서버(any guest virtual server)에 의해 액세스될 수 없는 마스터 키(a master key)를 공유한다. 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 래핑 키의 사본을 상기 위성 가상 서버 인스턴스로 전달할 수 있다. 랜덤 게스트 키(a random guest key)가 생성될 수 있고 게스트 래핑 키로 래핑될수 있으며, 이에 의해 래핑된 게스트 키(a wrapped guest key)를 생성한다. 상기 하이퍼바이저는 상기 래핑된 게스트 키를 상기 암호화 키 객체로서 기능하는 보호된 키로 변환할 수 있다.

Description

하이퍼바이저 보호 키
[0001] 본 발명은 일반적으로 암호화(cryptography)에 관한 것이고, 특히 암호화 작업들(cryptographic operations)에서 사용하기 위해 게스트 가상 서버에 암호화 키 객체(cryptographic operations)를 제공하는 것에 관한 것이다.
[0002] 세상은 디지털 사회로 나아가고 있다. 점점 더 많은 프로세스들, 제품들 및 서비스들이 디지털 형식으로 제공되고 있다. 동시에, 개인 정보 보호 요구 사항들이 증가하고 기업과 정부 기관들은 디지털 자산들을 보호하려고 한다. 암호화는 디지털 개인 정보 보호를 위한 핵심 기술이며 권한이 없는 시스템들이나 사람들의 손에 절대 들어가서는 안 되는 비밀 키들을 기반으로 한다. 또한, 사이버-공격들의 수와 정교함이 증가했다. 따라서, 중요한 데이터를 보호해야 할 필요성이 시간이 지남에 따라 크게 증가하고 있다.
[0003] 만일 암호화 알고리즘들에 결함들이 없다고 가정하면, 암호의 보안은 사용된 키들의 비밀성(the secrecy에 달려 있다. 종종, 키는 암호화 기능에 사용되는 사용자 시스템의 메모리에 있을 수 있다. 따라서, 그러한 키들은 "일반 키 암호화(clear key crypto)"의 형태로 사용된다. 상기 키에 대한 액세스는 암호화된 데이터에 대한 액세스도 허용하기 때문에, 상기 키가 노출되면 비밀성도 깨질 수 있다.
[0004] 따라서, 관련 암호화 기능 사용자의 메모리 시스템에서 사용할 수 없는 키로 암호화를 수행하는 다른 방법들이 있다. 예를 들어, 사용자 시스템은 하드웨어 보안 모듈(HSM)을 호출할 수 있다. 그런 다음 사용자 시스템은 토큰, 래핑된 키를 갖거나 또는 사용될 키를 하드웨어 보안 모듈에 알리는 다른 방법을 가질 수 있다. 당사자가 하드웨어 보안 모듈에 대한 액세스 권한을 갖지 않는 한, 토큰 또는 래핑된 키는 암호화된 데이터에 대한 액세스를 제공하지 않기 때문에, HSM을 사용하면 추가 보안을 제공할 수 있다. 그러한 HSM 솔루션의 알려진 단점들은 종종 대역폭을 제한하고 작업들의 지연 시간(the latency of the operations)이 증가시킨다는 것이다.
[0005] "보호된 키" 개념을 의미하는, 제3 변종(third variant)이, IBM Z 시스템들과 같은 메인프레임 컴퓨터들에 추가되었다. 이 변종은 래핑된 키(a wrapped key)를 사용하며, 이는 다른 키를 암호화하는 래핑 키(a wrapping key)에 의해 형성된다. 래핑 키는 (신뢰할 수 있는) 펌웨어에 의해 알려진다. 이 래핑은 하드웨어 보안 모듈(예: 암호화 익스프레스(crypto express) 어댑터)에 의해 시작된다. 래핑된 키의 사용자 시스템만이 래핑된 키에 액세스할 수 있지만, CPU는 래핑되지 않은 키(the unwrapped key)로 암호화-작업들을 수행할 수 있다. 그러한 접근 방식은 일반 키 암호화의 속도(the speed of clear key crypto)와 보호된 키들의 보안 수준을 결합한다.
[0006] 보호된 키들은 가상 서버의 실행 중인 인스턴스에 특정되고 가상 서버에 액세스할 수 없는 가상 서버(VS) 특정 마스터 키(a virtual server (VS) specific master key)(VS-MK)로 암호화되었을 수 있다. 가상 서버 마스터 키 VS-MK는 펌웨어에 숨겨져 있을 수도 있다.
[0007] VS-MK(가상 서버 마스터 키)는 호스트 마스터 키(host-MK) 및 가상 서버가 구성될 때 호스트에서 제공하는 가상 서버 특정 패턴에서 파생된다. 각 가상 서버 내에서, 상기 펌웨어는 인터페이스를 제공하여 호출하는 가상 서버에 특정한 마스터 키로 래핑된 보호된 키로 일반 텍스트 키를 변환할 수 있다. 이 접근 방식은 오늘날, IBM Z와 같은, 메인프레임 시스템들에 구현되어 있다.
[0008] 이 접근 방식은 만일 가상 서버 마스터 키들이 가상 서버의 실행 중인 인스턴스에 특정되고 보호된 키들이 가상 서버의 실행 중인 특정 인스턴스에만 유효하다면 문제가 될 수 있다. 이 접근 방식은 만일 보호된 키들이 더 이상 유효하지 않거나, 가상 서버가 재부팅되고, 디스크에 대해 일시 중단된 다음 다시 시작되거나 다른 시스템으로 마이그레이션된다면 문제가 될 수 있다.
[0009] 따라서, 여기서 제안된 방법 및 시스템의 아래에 있는 문제는 가상 서버가 키를 텍스트 형식으로 공개하는 데 사용될 수 있는 데이터를 저장할 필요가 없도록 가상 서버들의 여러(부팅) 인스턴스들에서 키가 보호된 키로 사용될 수 있는 방법에 있다고 보여 질 수 있다. 이는 호스트에 대한 액세스가 없고 호스트 된 데이터를 안전하게 저장할 수 있는 경계 조건들(the boundary conditions) 하에서 달성될 수 있다.
[0010] 이와 관련하여, 다음과 같은 문서들이 공개되었다: 문서 US 2017/0277898 A1은 프로세서에 대한 인증 및 암호화 키들을 관리하기 위해 보안 모듈을 채용하는 프로세서를 개시한다. 상기 보안 모듈은 다른 처리 시스템들에 대해 자신을 인증할 수 있는데, 프로세서에서 실행될 소프트웨어를 제공하는 처리 시스템들로서, 제공된 소프트웨어에 대한 주소 공간들을 암호화하기 위한 키들을 생성할 수 있도록, 그리고 암호화된 주소 공간에서 처리 시스템으로 및 처리 시스템으로부터 안전하게 정보를 가져오거나(import) 내보낼(export) 수 있도록, 인증할 수 있다.
[0011] 또한, 문서 미국 특허 번호 8,996,887 B2는 데이터를 제공하는 방법을 개시한다. 이 방법은 데이터를 저장하기 위해 제1 가상 머신(VM)으로부터 제1 요청을 수신하는 단계, 승인된 사용자들의 데이터 및 액세스 제어 목록(ACL)을 획득하는 단계, 데이터 키 식별자를 갖는 데이터 키를 획득하는 단계, 래핑된 블로브(a wrapped blob)를 생성하기 위해 래핑 키를 사용하여 데이터 키와 ACL을 암호화하는 단계, 상기 데이터를 암호화하는 단계, 상기 래핑된 블로브 및 상기 암호화된 데이터 저장하는 단계, 및 상기 ACL 상의 사용자들에게 상기 데이터 키 식별자를 제공하는 단계를 포함한다.
[0012] 그러나, 이들 접근 방식들은 하드웨어 보안 모듈이 이용가능하지 않거나 실용적이지 않을 때 보호된 키들을 사용하는 위에서 설명한 문제를 해결하지 못한다.
[0013] 본 발명의 실시 예들은 암호화 작업들(cryptographic operations)에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 컴퓨터-구현 방법, 컴퓨터 시스템, 및 컴퓨터 프로그램 제품을 포함할 수 있다. 상기 게스트 가상 서버는 신뢰할 수 있는 하이퍼바이저(a trusted hypervisor)에 등록할 수 있다. 상기 등록하는 단계는 게스트 자격 증명들(guest credentials)을 사용하는 단계를 포함할 수 있다. 상기 신뢰할 수 있는 하이퍼바이저는 게스트 래핑 키(a guest wrapping key)를 생성할 수 있고 상기 게스트 래핑 키를 상기 게스트 자격 증명들과 연관시킬 수 있다.
상기 게스트 자격 증명들을 전달인자(an argument)로서 갖는 상기 게스트 가상 서버로부터의 요청을 수신하면, 상기 신뢰할 수 있는 하이퍼바이저는 위성 가상 서버 인스턴스(a satellite virtual server instance)를, 상기 게스트 가상 서버에 대해, 생성할 수 있다. 상기 위성 가상 서버 인스턴스는 상기 게스트 가상 서버로부터의 가상 서버 특정 데이터로 구성될 수 있다. 상기 위성 가상 서버 인스턴스는 마스터 키(a master key)를 상기 가상 게스트 서버와 공유할 수 있다. 상기 마스터 키는 상기 신뢰할 수 있는 하이퍼바이저 또는 모든 게스트 가상 서버(any guest virtual server)에 의해 액세스될 수 없다.
[0014] 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 래핑 키의 사본을 상기 위성 가상 서버 인스턴스로 전달(pass)할 수 있다. 상기 신뢰할 수 있는 하이퍼바이저는 랜덤 게스트 키(a random guest key)를 생성할 수 있다. 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 래핑 키로 상기 랜덤 게스트 키를 래핑(wrap) 할 수 있고, 이에 의해 래핑된 게스트 키(a wrapped guest key)를 생성(producing)할 수 있다. 상기 게스트 가상 서버로부터 변환 요청(a conversion request)을 수신하면, 상기 래핑된 게스트 키를 보호된 키로 변경하기 위해 상기 래핑된 게스트 키의 변환이 수행될 수 있다. 상기 변환은 보호된 게스트 키(a protected guest key)를 형성하기 위해 상기 래핑된 게스트 키를 상기 마스터 키로 재-래핑하는 단계(rewrapping)를 포함할 수 있다. 상기 보호된 게스트 키는 상기 암호화 키 객체로서 기능한다.
[0015] 암호화 작업들(cryptographic operations)에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 컴퓨터-구현 방법, 컴퓨터 시스템, 및 컴퓨터 프로그램 제품은 여러 이점들, 기술적 효과들, 기여들 및/또는 개선들을제공할 수 있다.
[0016] 하드웨어 보안 모듈(HSM)에 대한 요건이 없는 보호된 키의 개념을 사용하는 옵션은 개시된 발명이 HSM에 대해 필요한 오버헤드 및/또는 비용을 피할 수 있기 때문에 기존 솔루션들에 비해 상당한 이점이 있다. 본 발명은 하드웨어 보안 모듈을 필요로 하는 솔루션들과 동일하거나 적어도 동등한 수준의 암호화 키 보안을 제공할 수 있다. 본 발명의 솔루션은 완전히 소프트웨어 기반일 수 있으며 추가로 필요한 어떠한 하드웨어도 없을 수 있다. 따라서, 본 발명의 솔루션은 지금까지 하드웨어 기반 보안 모듈 기반 솔루션들에 의해서만 제공되었던 동일하거나 동등한 보안 수준에서 암호화 솔루션들에 대해 더 낮은 가격대를 가능하게 할 수 있다.
[0017] 본 발명의 유용한 이점 중 하나는 보호된 키들이 하이퍼바이저에서 실행되는 가상 시스템의 인스턴스보다 "더 오래 존속한다(live longer)"는 것이다. 추가로 구현되는 위성 가상 서버는 일반적으로 하이퍼바이저에서 실행되는 가상 머신들의 수에 비추어 볼 때 성능 저하 측면에서 무시될 수 있다. 또한 위성 가상 서버의 기능은 하나 또는 몇 가지 기능들 또는 서비스들로 제한될 수 있다. 예를 들어, 위성 가상 서버는 단일 트랜잭션, 즉 래핑된 게스트 키를 보호된 키로 변환하는 작업을 수행할 수 있다. 하이퍼바이저는 신뢰할 수 있는 하이퍼바이저여야 한다. 보호된 키들이 필요할 수 있는 일반적인 컴퓨팅 환경들(예: 메인프레임 컴퓨팅 환경들)에서 하이퍼바이저는 - 일반적으로 하드웨어에 구현된 - 일련의 펌웨어 컴포넌트들이 하이퍼바이저의 기능을 지원하거나, 또는 하이퍼바이저의 기능에 통합될 수 있기 때문에 설계상 신뢰할 수 있는 것(trusted-by-design)으로 간주될 수 있다.
[0018] 여기에 제안된 본 발명은 또한, 추가 하드웨어가 설치될 필요가 없기 때문에, 메인프레임 컴퓨팅 시스템의 런타임 중에 구현될 수도 있다. 따라서 운영 체제의 다운타임이 없고 그러한 다운타임으로 인한 생산성 시간 감소가 없는 것이 제안된 발명 솔루션의 추가적으로 유리한 결과들이다.
[0019] 다음에서, 본 발명의 추가적인 실시예가 설명될 것이다.
[0020] 본 발명의 한 개선된 실시예에 따르면, 상기 변환은 상기 래핑된 게스트 키를 래핑 해제(unwrap)하기 위해 상기 게스트 래핑 키를 사용하는 상기 위성 가상 서버 인스턴스를 더 포함한다. 따라서, 위성 가상 서버에 의한 보호 키 전달은 하드웨어 보안 모듈 없이 발생할 수 있다.
[0021] 본 발명의 다른 실시예에 따르면, 상기 변환 요청은 전달인자, 예를 들어, 변환 전달인자로서 상기 게스트 자격 증명들을 포함한다. 따라서, 위성 가상 서버에 의한 보호 키 전달은 하드웨어 보안 모듈 없이 완전히 발생할 수 있다.
[0022] 본 발명의 또 다른 실시예에 따르면, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증(verify)하는 데 필요한 데이터와 관련된 게스트 래핑 키들의 저장소를 유지할 수 있다. 따라서, 서로 다른 게스트 가상 머신들의 게스트 래핑 키들은 지속적으로 유지 관리될 수 있고, 즉, 관련 게스트 가상 머신이 종료된 후에도 유지될 수 있으며, 서로 다른 게스트 가상 서버들로부터의 자격 증명들이 검증 가능한 상태로 유지될 수 있다.
[0023] 본 발명의 또 다른 실시예에 따르면, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증하는데 필요한 상기 데이터를 계산하기 위해 암호화 단-방향 기능(a cryptographic one-way function)을 사용할 수 있다. 그러한 암호화 단방향 함수는 암호화 해시 함수일 수 있다. 이 실시예는 게스트들의 자격 증명들을 저장할 필요가 없기 때문에 하이퍼바이저의 보안을 개선한다.
[0024] 본 발명의 한 개선된 실시예에 따르면, 상기 키 저장소는 패스프레이즈(passphrase)로 보호될 수 있다. 따라서, 이 실시예에서는 키 저장소에 대한 제어되지 않은 액세스가 허용되지 않는다. 키 저장소는 허용되지 않는 액세스로부터 보호될 수 있다.
[0025] 본 발명의 한 개선된 실시예에 따르면, 상기 저장소 내의 게스트 래핑 키는 하드웨어 보안 모듈에 의해 보호될 수 있다. 이 실시예는 하드웨어 보안 모듈이 하이퍼바이저에 이용 가능하지만 하이퍼바이저에 의해 호스트 되는 모든 게스트들에 이용 가능하지 않을 때 게스트 래핑 키의 강화된 보호를 위한 고급 옵션을 나타낼 수 있다.
[0026] 본 발명의 한 개선된 실시예에 따르면, 상기 가상 서버 특정 데이터는 가상 머신의 암호화 제어 블록(a crypto control block)에 저장된 데이터일 수 있다. 이 데이터 특징은 게스트 가상 서버와 위성 가상 서버에 적용될 수 있다. 따라서, 이 실시예에서, 신뢰할 수 있는 하이퍼바이저는 보안 요건들에 따라 구성 데이터를 공유하거나 또는 공유하지 않도록 두 게스트들을 구성할 수 있다. 즉, 두 개의 표준 게스트들은 보안 관련 데이터를 공유하지 않지만 게스트와 위성 게스트는 공유할 수 있다.
[0027] 본 발명의 다른 개선된 실시예에 따르면, 상기 위성 가상 서버 인스턴스는 하나의 인터페이스(a sole interface)를 가질 수 있고 그리고 상기 하나의 인터페이스는 상기 신뢰할 수 있는 하이퍼바이저에 연결될 수 있다. 따라서, 이 실시예에서 상기 위성 가상 서버의 다른 인터페이스 또는 API는 이용 가능하지 않거나 사용 가능하지 않을 수 있으며, 상기 위성 가상 서버는 여기에서 제안된 보안 발명을 손상시키기 위해 오용되는 것을 방지할 수 있다.
[0028] 대안으로, 추가로, 본 발명의 추가 실시예에 따르면, 상기 신뢰할 수 있는 하이퍼바이저는 또한 상기 랜덤 키를 생성하고 상기 랜덤 키를 상기 게스트 랩핑 키로 랩핑 하기 위해 상기 위성 가상 서버 인스턴스로부터의 서비스, 예를 들어, 추가 서비스를 사용할 수 있다. 따라서, 이 실시예에 대해 여기서 제안된 보안 발명을 위한 모든 고도로 민감한 핵심 기능들은 상기 신뢰할 수 있는 하이퍼바이저와 상기 위성 가상 서버 사이에서 처리될 수 있다.
[0029] 본 발명의 한 허용적인 실시예에 따르면, 본 발명은 또한, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 등록 다음에 오는 각각의 요청을 승인하는 단계(authorizing)도 포함할 수 있다. 상기 승인하는 단계는 상기 등록 다음에 오는 각각의 요청과 함께 제공된 추가 게스트 자격 증명들을 사용하는 단계를 포함할 수 있다. 이들 특징들은 게스트가 여러 자격 증명들과 연관된 여러 래핑 키들를 등록할 수 있게 하여 키 생성 및 래핑 키 변환 작업들이 여러 독립 키 공간들에서 작동할 수 있게 한다.
[0030] 방법의 또 다른 진보된 실시예에 따르면, 상기 하이퍼바이저는 상기 등록 다음에 오는 게스트 가상 서버 요청의 추가 요청을 승인할 수 있다. 상기 승인하는 단계는 추가로 게스트 특정 데이터에 기초할 수 있다. 이 실시예에 대한 게스트 특정 데이터는, 예를 들어, 등록 요청 동안 기록되었을 수 있는 부팅 볼륨 데이터 또는 게스트 소유자 데이터일 수 있다. 따라서, 이들 특징들로 제안된 보안 발명을 손상시킬 가능성을 더욱 줄어들 수 있다.
[0031] 당업자는, 달리 통지되지 않는 한, 별도의 통지가 없는 한, 여기에 기술된 방법들, 시스템들, 또는 컴퓨터 프로그램 제품들에 속하는 특징들의 모든 조합은 본 발명의 내에서 공개된 것으로 간주된다는 것을, 상기 설명 및 다음 설명으로부터 이해될 것이라는 점에 유의해야한다.
[0032] 위에서 정의된 특징들, 및 본 발명의 추가 특징들은, 후술될 실시예들의 예들로부터 명백하고 실시예들의 예들을 참조하여 설명되지만, 본 발명은 이에 제한되지 않는다.
[0033] 본 발명의 바람직한 실시예들은, 단지 예로서, 그리고 다음 도면들을 참조하여 설명될 것이다:
[0034] 도 1은 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 본 발명의 컴퓨터-구현 방법의 실시예의 블록도를 도시한다.
[0035] 도 2는 게스트 래핑 키를 생성하기 위한 예시적인 플로차트를 도시한다.
[0036] 도 3은 게스트 래핑 키를 생성하기 위한 컴포넌트들의 블록도를 도시한다.
[0037] 도 4는 위성 가상 서버의 개시를 위한 예시적인 플로차트를 도시한다.
[0038] 도 5는 위성 가상 서버를 개시하는 프로세스에 관련된 컴포넌트들의 블록도를 도시한다.
[0039] 도 6은 임의 래핑된 키를 생성하기 위한 예시적인 플로차트를 도시한다.
[0040] 도 7은 랜덤 키 생성과 관련된 컴포넌트들을 포함하는 컴포넌트들의 블록도를 도시한다.
[0041] 도 8은 래핑된 랜덤 키의 생성과 관련된 컴포넌트들을 포함하는 컴포넌트들의 블록도를 도시한다.
[0042] 도 9는 래핑된 키를 보호된 키로 변환하기 위한 예시적인 플로차트를 도시한다.
[0043] 도 10은 보호 키의 생성을 지원하는 모든 컴포넌트들의 블록도를 도시한다.
[0044] 도 11은 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하는 본 발명의 보호 키 제공 시스템의 실시예의 블록도를 도시한다.
[0045] 도 12는 도 11에 따른 보호된 키 제공 시스템을 포함하는 컴퓨팅 시스템에 대한 블록도를 도시한다.
[0046] 도 13은 본 발명의 일 실시예에 따른, 도 12에 도시된 컴퓨터 시스템을 포함하는 예시적인 클라우드 컴퓨팅 환경의 블록도이다.
[0047] 도 14는 본 발명의 일 실시예에 따른, 도 13의 예시적인 클라우드 컴퓨팅 환경의 기능 층들의 블록도이다.
[0048] 본 명세서의 설명과 관련하여, 다음 용어들 및/또는 표현들이 사용될 수 있다:
[0049] '암호 키 객체('cryptographic key object)'라는 용어는 게스트 가상 서버에 의한 암호화 작업들에 사용될 데이터 시퀀스를 나타낼 수 있다. 상기 게스트 가상 서버는 암호화 키 객체를 보호 키로 사용할 수 있다.
[0050] '게스트 가상 서버'라는 용어는 완전한 컴퓨터 시스템을 모방하고 하이퍼바이저에서(in) 또는 상에서(on) 실행되는 가상 머신을 나타낼 수 있다. 하이퍼바이저는 실제 하드웨어 시스템(a real hardware system)과 서로 분리될 수 있는 복수의 가상 머신들 사이의 층을 나타낼 수 있다. 가상 머신들이 서로 격리되어 있으면, 가상 머신들 중 하나에서 또는 상에서의 치명적인 오류가 다른 가상 머신들에 영향을 미치지 않는다.
[0051] '암호화 작업('cryptographic operation)'이라는 용어는 승인되지 않은 액세스로부터 데이터를 보호하기 위해 데이터를 암호화하거나 암호 해독하는 것(an encryption or decryption)을 의미할 수 있다. 또한, '암호화 작업'은 데이터의 무결성을 증명하기 위한 서명 또는 확인 작업(a sign or verify operation)과도 관련될 수 있다.
[0052] '신뢰할 수 있는 하이퍼바이저(trusted hypervisor)'라는 용어는 실제 하드웨어 시스템에 구축될(constructed) 수 있고 내장될(embedded) 수 있는 그리고 권한이 없는 자에 의해 손상될 수 없는 방식으로 펌웨어와 통신 교환할 수 있는 하이퍼바이저를 나타낼 수 있다. 하이퍼바이저에 대한 이러한 보안을 달성하기 위해, 조직적인 제공들(organizational provisions)이 이루어질 수 있다. 예를 들어, 신뢰할 수 있는 하이퍼바이저의 설치 또는 관리를 위해 단말(a terminal)에 대한 액세스가 제한될 수 있다. 또는 하이퍼바이저가 관리하는 보안 키들 및 기타 기밀 데이터에 대한 승인되지 않은 액세스로부터 하이퍼바이저를 보호하기 위해 조직적 조치들이 취해진 경우 소프트웨어-전용 하이퍼바이저를 신뢰할 수 있는 하이퍼바이저로 사용할 수도 있다.
[0053] 게다가, 신뢰할 수 있는 하이퍼바이저, 또는 간단히 '하이퍼바이저'는 (a) 게스트 래핑 키로 래핑된 랜덤 키인 랜덤 키 토큰을 생성하기 위한 하이퍼-호출(hyper-call) (b) 키 토큰을 보호된 키로 변환하기 위한 하이퍼-호출을 게스트 가상 서버에 제공할 수 있다. 이들 두 호출들은 모두 신뢰할 수 있는 하이퍼바이저를 올바른 위성 가상 서버(the correct satellite virtual server)를 연관시키는 전달인자(argument)로 게스트 비밀(a guest secret)을 사용할 수 있다.
[0054] 위에서 설명한 하이퍼-호출(a)는 하이퍼바이저에 의해 실행될 수 있지만 게스트 래핑 키는 상기 작업 중에 노출될 수 있다. 하이퍼-호출(a)는, 게스트 래핑 키로 초기화될 때, 게스트 래핑 키를 보호된 키로 변환할 수 있고 따라서 게스트 래핑 키를 사용하여 랜덤 키를 래핑하는 동안 게스트 래핑 키를 보호할 수 있는 위성 가상 서버의 서비스에 의해, 바람직하게 실행될 수 있다.
[0055] 하이퍼-호출(b)는 호출 중인 게스트 가상 서버와 연관된 위성 가상 서버의 서비스에 의해 실행될 수 있다. 그런 다음 위성 가상 서버는 게스트 래핑 키(보호된 키일 수 있음)의 사본을 사용하여 키 토큰을 래핑 해제(unwrap)할 수 있고, 래핑 해제된 키를 보호된 키로 즉시 변환할 수 있으며, 보호된 키는 하이퍼바이저로 반환된다.
[0056] '게스트 자격 증명들(guest credentials)'이라는 용어는 게스트 가상 서버에 특정한 코드 데이터를 나타낼 수 있다. 게스트 자격 증명들은 사용자에 의해 입력되거나 달리 제공될 수 있고, 또는 게스트 가상 서버에 의해 액세스될 수 있는 영구 스토리지, 예를 들어 USB 스틱 형태의 키 스토리지에 저장될 수 있다.
[0057] '위성 가상 서버 인스턴스(satellite virtual server instance)'라는 용어는 게스트 가상 머신과 병렬로 신뢰할 수 있는 하이퍼바이저에서 실행되는 숨겨진 가상 머신(a hidden virtual machine)을 나타낼 수 있다. 게스트 가상 서버와 위성 가상 서버 간에 1:1 상관 관계가 있을 수 있다. 위성 가상 서버는 보호된 키들을 게스트 가상 서버에 제공하기 위한 유일한 목적으로 게스트 가상 서버의 요청에 따라 생성될 수 있다. 위성 가상 서버는 기능이 제한될 수 있으며 요청을 시작할 수 없고 따라서 자체 게스트 비밀(secret)이 없다. 위성 가상 서버는 게스트의 비밀, 예를 들어 대응 게스트 가상 머신으로부터의 게스트 비밀과 연관될 수 있다.
[0058] '가상 서버'라는 용어는 하이퍼바이저에서 소프트웨어로 실행되는 가상 머신이라는 용어와 동의어로 사용될 수 있다. 이 용어는 위성 가상 서버뿐만 아니라 게스트 가상 서버에도 적용될 수 있다.
[0059] '마스터 키'라는 용어는, 예를 들어, 하드웨어 호스트 머신에 특정되고 하드웨어 머신의 펌웨어에 내장된 비밀 코드(a secret code)를 나타낼 수 있다. 또는, 상기 용어는 가상 서버 마스터 키(VS-MK), 즉, 특정 게스트 가상 시스템과 관련된 마스터 키를 의미할 수도 있다. 하나가 다른 하나의 위성 가상 서버가 아닌 한 두 개의 게스트 가상 시스템들은 동일한 VS-MK를 갖지 않는다.
[0060] '랜덤 게스트 키(random guest key) '라는 용어는 게스트 자격 증명들과 관련된 게스트 래핑 키로 래핑되도록 하이퍼바이저에 의해 생성된 코드를 나타낼 수 있다.
[0061] '게스트 래핑 키'라는 용어는 랜덤 게스트 키를 래핑하기 위해, 즉, 승인받지 않은 액세스로부터 랜덤 게스트 키를 보호하기 위해 하이퍼바이저에 의해 사용되는 키, 예를 들어, 일련의 디지털 데이터를 나타낼 수 있다.
[0062] '위성 가상 서버(satellite virtual server)'라는 용어는 하이퍼바이저에 서비스들을 제공하는 가상 머신을 의미할 수 있으며, 예를 들어, (a) 연관된 게스트 가상 서버의 게스트 래핑 키로 래핑된 키를 변환하여 상기 키가 연관된 게스트 가상 서버를 위한 보호된 키가 되도록 하고, 선택적으로 (b) 연관된 게스트 가상 서버의 게스트 래핑 키에 의해 래핑된 랜덤 키를 생성하는 서비스들을 하이퍼바이저에 제공하는 가상 머신을 의미할 수 있다.
[0063]"암호화 제어 블록(crypto control block)"(CRYCB)이라는 용어는 가상 머신에 특정한, 예를 들어, 게스트 가상 서버 또는 위성 가상 서버에 특정한 데이터 구조를 나타낼 수 있다. CRYCB는 하이퍼바이저의 제어 하에 하이퍼바이저에서 가상 머신을 인스턴스화(instantiation) 동안 생성될 수 있다. 여기서-제안된 발명에서, 게스트 가상 서버 및 관련된 위성 가상 서버에 대한 CRYCB는 동일할 수 있고 또는 일부 동일한 데이터를 포함할 수 있다.
[0064] 다음에서, 도면들에 관한 상세한 설명이 주어질 것이다. 도면들의 모든 명령들은 개략적이다. 먼저, 암호화 작업에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 본 발명의 컴퓨터-구현 방법의 실시예의 블록도가 제공된다. 이후에, 추가 실시예들과, 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 보호 키 제공 시스템의 실시예들이, 설명될 것이다.
[0065] 도 1은 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체 - 특히, 보호된 키 - 를 제공하기 위한 컴퓨터-구현 방법(100)의 바람직한 실시예의 블록도를 도시한다. 방법(100)은 게스트 자격 증명들을 사용하여 신뢰할 수 있는 하이퍼바이저에 게스트 가상 서버를 등록하는 단계(102)를 포함할 수 있다. 게스트 자격 증명들은 사용자에 의해 입력될 수 있거나, 파일에 의해 입력될 수 있거나, 다른 소스로부터 유입될 수 있는 게스트 가상 서버 특정 비밀(a guest virtual server specific secret)일 수 있다. 다른 단계(104)에서, 신뢰할 수 있는 하이퍼바이저는 등록된 게스트 가상 서버에 대해 게스트 래핑 키를 생성한다. 신뢰할 수 있는 하이퍼바이저는 상기 게스트 래핑 키를 게스트 가상 서버를 신뢰할 수 있는 하이퍼바이저에 등록하는 데 사용된 게스트 자격 증명들과 연관시킬 수 있다.
[0066] 다른 단계(106)에서, 전달인자(argument)으로서 게스트 자격 증명들을 갖는 게스트 가상 서버로부터 요청 - 예를 들어, 초기화 요청 - 을 수신하면, 신뢰할 수 있는 하이퍼바이저는 게스트 가상 서버를 위한 위성 가상 서버 인스턴스를 생성한다. 상기 요청과 상기 생성은 하나의 통합된 동작(one integrated activity)으로 간주될 수 있다. 위성 가상 서버는 게스트 가상 서버로부터의 가상 서버 특정 데이터 - 특히, CRYCB의 동일한 데이터 - 로 구성된다. 위성 가상 서버와 게스트 가상 서버는 마스터 키를 공유할 수 있으며, 예를 들어, VS-MK를 공유할 수 있다. 따라서, 게스트 가상 서버와 위성 가상 서버의 CRYCB(암호화 제어 블록)에 있는 데이터는 원칙적으로 동일하다. 또 다른 제약은 신뢰할 수 있는 하이퍼바이저나 게스트 가상 서버에 의해서 마스터 키에 액세스될 수 없다는 것이다. 이러한 보호는 펌웨어에 마스터 키를 숨김으로써 달성될 수 있다. 그 결과, 어떠한 게스트 가상 서버도 자신의 마스터 키에 직접 액세스할 수 없다.
[0067] 추가로, 방법(100)은 신뢰할 수 있는 하이퍼바이저가 게스트 래핑 키의 사본을 위성 서버 인스턴스에 전달하는 단계(108)를 포함할 수 있다. 이 전달하는 단계는 모든 초기화 단계에서 또는 변환 요청의 일부로 수행될 수 있다. 게스트 래핑 키는 요청, 즉 초기화 요청 또는 래핑된 키 생성에 대한 요청의 게스트 자격 증명들과 연관된 게스트 래핑 키이다.
[0068] 방법(100)은 또한 게스트 가상 서버가 게스트 래핑 키에 의해 래핑되는 랜덤 게스트 키를 요청하는 단계(110)를 포함할 수 있다. 더욱이, 방법(100)은 신뢰할 수 있는 하이퍼바이저가 상기 랜덤 게스트 키를 생성하는 단계(112)를 포함할 수 있다. 방법(100)은 신뢰할 수 있는 하이퍼바이저가 게스트 자격 증명들과 관련된 게스트 래핑 키로 상기 랜덤 게스트 키를 래핑하는 단계(114)를 포함할 수 있다.
[0069] 방법(100)은 또한 상기 래핑된 게스트 키를 보호된 키로 변환하는 단계(converting)(116)를 포함할 수 있다. 상기 변환하는 단계는 게스트 가상 서버로부터 변환 요청을 수신할 때 발생할 수 있으며 하이퍼바이저로부터 전송된 게스트 가상 서버에 의해서 래핑된 게스트 키가 사용되기 전에 발생할 수 있다. 이 변환하는 단계 또는 변환은 위성 가상 서버가 상기 래핑된 게스트 키를 게스트 가상 서버와 위성 가상 서버 모두에 특정된 마스터 키로 재-래핑하는 단계(re-wrapping)를 포함할 수 있다. 따라서, 상기 래핑된 게스트 키는 암호화 키 객체 역할을 하는 보호된 게스트 키로 변환될 수 있다.
[0070] 도 2는 게스트 래핑 키를 생성하기 위한 예시적인 플로차트(200)를 도시한다. 이는 게스트 가상 서버를 처음 로드할 때 발생할 수 있다. 단계(202)에서, 게스트 가상 서버는 게스트 래핑 키를 생성하고 게스트 래핑 키를 게스트 자격 증명들(guest credentials)(예: 게스트 비밀(a guest secret))과 연관시키도록 하이퍼바이저에 요청할 수 있다. 단계(204)에서, 상기 요청에 기초하여, 하이퍼바이저는 새로운 랜덤 키를 생성할 수 있고 새로운 랜덤 키를 상기 게스트 비밀의 암호화 해시(the cryptographic hash)와 연관시킬 수 있다. 또한, 단계(206)에서, 하이퍼바이저는 저장소에 상기 해시와 상기 랜덤 키의 이러한 연관을 저장할 수 있다.
[0071] 도 3은 게스트 래핑 키를 생성하는데 중요한 컴포넌트들의 블록도(300)를 도시한다. 하이퍼바이저(302)는 펌웨어(304)와 협력하여 신뢰할 수 있는 하이퍼바이저를 형성할 수 있다. 소프트웨어-전용 하이퍼바이저의 경우, 소프트웨어-전용 하이퍼바이저가 신뢰할 수 있는 하이퍼바이저를 구성하도록 상기 하이퍼바이저의 작업(operation)을 보호하기 위해 상기 환경의 작업 제한들(operational restrictions)이 배치된다(in place). 호스트-마스터-키(host-MK)(306)은 펌웨어(304)에 내장된다. 호스트-MK(306)는 게스트 마스터 키(310)를 생성하기 위해 암호화 제어 블록(CRYCB)(308) 및 게스트 가상 서버 암호화 제어 블록(314)으로부터의 게스트 마스터 키 패턴과 함께 사용될 수 있다.
[0072] 게스트 가상 서버(GVS)(312)의 초기화 또는 최초 사용 시, 게스트 가상 서버(312)는 게스트 비밀(316)일 수 있는 게스트 자격 증명들에 액세스할 수 있다. 게스트 비밀(316)은, 예를 들어, 사용자 입력이거나 다른 소스로부터의 입력일 수 있다. 게스트 비밀(316)은 비밀번호(a password)일 수도 있고 또는 비밀번호와 유사한 것일 수도 있다. 게스트 비밀(316)은 단-방향 형태로(in a one-way form) 해시 값(322)으로 변환될 수 있다. 추가적으로, 하이퍼바이저(302)는 게스트 래핑 키(320)를 생성할 수 있다. 하이퍼바이저(302)는, 게스트 비밀(316)의 해시 값(322)과 게스트 래핑 키(320) 사이의 이중 화살표로 도시된 바와 같이, 게스트 래핑 키(320)를 해시 값(322)과 연관시킬 수 있다. 게스트 비밀(316)의 해시 값(322)과 게스트 래핑 키(320)는 저장소(318)에 지속적으로 저장된다. 이러한 저장은 게스트 가상 서버(312)가 재부팅되거나, 디스크로 액세스가 일시 중단되거나, 재개되거나 및/또는 다른 하이퍼바이저를 사용하여 시스템의 다른 부분으로 마이그레이션되더라도 게스트 래핑 키(320)가 계속 존재할 수 있게 한다.
[0073] 도 4는 위성 가상 서버의 개시(an initiation)를 위한 단계들의 적어도 하나의 실시예에 대한 예시적인 플로차트(400)를 도시한다. 단계(402)에서, 게스트 가상 서버(312)는 하이퍼바이저(302)에 요청을 전송하여 위성 가상 서버를 개시 또는 초기화하고 위성 가상 서버를 게스트 가상 서버 비밀과 연관시킨다. 게스트 가상 서버 특정 비밀은 사용자에 의해 입력될 수 있고, 파일에 의해 입력될 수 있거나, 다른 비밀 소스로부터 유입될 수 있다. 게스트 가상 서버(312)는 이전 단계들에서 사용된 것과 동일하기 때문에, 상기 비밀은 게스트 래핑 키(320)를 생성하는 데 사용된 게스트 비밀(316)과 동일할 것이다. 이 요청 있으면, 단계(404)에서 하이퍼바이저(302)는 호출 클라이언트가 사용한 것과 동일한 래핑 키 구성을 사용하여, 즉, 게스트 가상 서버(312)가 사용한 것과 동일한 래핑 키 구성을 사용하여 위성 가상 서버 인스턴스를 시작한다. 다시 말해서, 하이퍼바이저(302)는 게스트 가상 서버(312)를 인스턴스화하는 데 이미 사용된 암호화 제어 블록 CRYCB(314)를 사용한다.
[0074] 단계(406)에서, 하이퍼바이저(302)는 게스트 비밀(316)의 해시 값(322)을 결정하고 해시 값(322)과 연관된 게스트 래핑 키(320)를 위성 가상 서버에 저장한다. 게스트 비밀이 동일했기 때문에, 단계(406)에서 결정된 해시는 단계들(200)에서 사용된 것과 동일할 것이다. 해시는 결정론적 함수(a deterministic function)이다. 단계(408)에서, 하이퍼바이저(302)는 위성 가상 서버를 해시 값(322)과 연관시킨다.
[0075] 게스트 가상 서버 비밀은 데이터베이스, 예를 들어, 저장소(318)의, 특정 래핑 키를 참조하기 위한 것이다. 하이퍼바이저(302)는 - 게스트의 수명 동안(즉, 게스트가 실행되는 동안) - 하이퍼바이저(302)에 게스트 가상 서버 비밀을 전달인자(an argument)로 갖는 후속 요청이 발행될 때마다 방금-생성된 위성 서버(the just-created satellite server)가 사용될 것임을 기억해야 한다.
[0076] 실행 중인 게스트의 수명(the life span)은 호스트의 수명(즉, 하이퍼바이저 302의 수명)을 초과할 수 없기 때문에, 그러한 연관(예를 들어, 해시와 위성 가상 서버에 대한 참조로 구성된 쌍)은 외부 데이터베이스에 저장할 필요가 없지만, 하이퍼바이저 메모리 어딘가에 저장되어야 한다. 예를 들어, 초기화 요청을 발행한 각각의 게스트에 대해, 하이퍼바이저(302)는 (초기화 동안에 사용된) 비밀의 해시(the hash of a secret)와 위성 가상 서버에 대한 참조의 쌍을 유지한다. 예를 들어, 리눅스 KVM(커널-기반 가상 머신)에서, 이 참조는 위성 가상 서버를 실행하는 QEMU(오픈 소스 머신 에뮬레이터 및 가상화 장치) 프로세스의 프로세스 ID일 수 있다.
[0077] 도 5는 위성 가상 서버를 개시하는 프로세스에 관련된 컴포넌트들의 블록도(500)를 도시한다. 앞에서 이미 논의한 컴포넌트들은 다시 설명하지 않으며, 동일한 대상에 대한 이전 도면들의 참조 번호들을 재사용한다.
[0078] 위성 게스트 가상 서버(502)(게스트 가상 서버 312 옆에 도시됨)는 게스트 가상 서버(312)가 사용한 것과 동일한 마스터 키 구성 또는 래핑 키 구성을 사용하여 하이퍼바이저(302)에 의해 시작된다(예를 들어, 게스트 가상 서버 312를 인스턴스화하는 데 사용된 암호화 제어 블록 314을 사용함으로써). 게스트 래핑 키(320)의 사본은 위성 게스트 가상 서버(502)의 시스템에 저장된다(320의 두 인스턴스들 사이에 화살표로 표시됨). 도 4의 플로차트에 도시된 바와 같은 처리의 결과로서, 게스트 비밀(316)의 해시값(322)은 위성 게스트 가상 서버(502에도 존재한다)(저장소 318에서 위성 게스트 가상 서버 502까지의 화살표로 표시됨).
[0079] 위성 게스트 가상 서버(502)의 유일한 태스크(sole task)는 게스트 래핑 키에 의해 래핑된 키를 보호된 키로 변환하는 기능을 제공하는 것일 수 있다. 따라서, 위성 게스트 가상 서버(502) 내에서 다른 기능들은 이용 가능하지 않을 수 있다; 따라서, 위성 게스트 가상 서버(502)는 어떠한 사이버-공격들에도 악용될 수 없다.
[0080] 도 6은 랜덤 래핑된 키를 생성하기 위한 방법을 예시하는 예시적인 플로차트(600)를 도시한다. 단계(602)에서, 게스트 가상 서버(312)는 하이퍼바이저(302)에 요청을 전송할 수 있고 게스트 비밀을 하이퍼바이저(302)에 제공할 수 있다. 상기 요청은 하이퍼바이저(302)가 게스트 비밀과 연관된 게스트 래핑 키(320)에 의해 래핑된 랜덤 키를 반환하기 위한 것이다. 가상 게스트 서버(312)는 이전 단계들(200 및 400)에서 사용된 것과 동일하므로, 여기서 게스트 비밀은 이전에 사용된 게스트 비밀(316)과 동일하여서 시스템은 저장소(318)에 저장된 정확한 정보를 식별할 수 있다. 게스트는, 예를 들어, 하이퍼바이저(302)에 두 개의 다른 비밀들을 등록한 다음, 두 개의 다른 래핑 키들과 두 개의 다른 위성 서버들을 가질 수 있다. 상기 요청에 사용된 비밀에 따라, 하나 또는 다른 래핑 키 및 위성 서버는 요청을 이행하는데 하이퍼바이저(302)에 의해 사용될 수 있다. 단계(604)에서, 하이퍼바이저(302)는 게스트 비밀의 해시를 결정하고 게스트 래핑 키로 래핑된 랜덤 키를 생성한다. 따라서, 게스트 가상 서버와 위성 가상 서버 간에는 직접적인 통신들이 발생하지 않는다. 단계(606)에서, 하이퍼바이저는 게스트 래핑 키에 의해 래핑된 랜덤 키를 게스트 가상 서버로 반환한다.
[0081] 도 7은, 도 6의 동작 플로차트에 의해 방금 설명한 바와 같이, 랜덤 키의 생성에 관련된 컴포넌트의 블록도(700)를 보여준다. 도 7은 하이퍼바이저(302)가 랜덤 키(702)를 생성했음을 보여준다.
[0082] 도 8은, 도 7에 도시된 컴포넌트들의 유사한 블록도(800)을 도시하지만, 래핑된 랜덤 키를 완성하기 위한 추가 작업들(actions)을 도시한다. 도 8은 랜덤 키(702)(도 7)가 이제 위성 게스트 가상 서버 인스턴스(502)로부터의 게스트 래핑 키(320)를 사용하여 래핑되고(wrapped), 이에 의해 래핑된 게스트 키(802)를 형성함을 보여준다. 게스트 래핑 키(320)에 의한 래핑된 게스트 키(802)는 게스트 가상 서버(GVS)(312)에서 이용 가능하게 될 수 있다.
[0083] 래핑된 게스트 키(802)가 게스트 가상 서버(312)로 이동되거나 게스트 가상 서버(312)에 의해 수신되면, 랜덤 키(702)의 초기 버전(도 7) 및 래핑된 게스트 키(802)의 초기 버전, 즉, 도 8의 좌측에 도시된 래핑된 게스트 키(802)는 더 이상 존재하지 않을 수 있다(예를 들어, 삭제될 수 있다).
[0084] 도 9는 래핑된 게스트 키(802)를 보호된 키로 변환하기 위한 예시적인 플로차트(900)를 도시한다. 단계(902)에서, 게스트 가상 서버(312)는 요청에서 제공된 게스트 비밀과 연관된 게스트 래핑 키(320)에 의한 래핑된 게스트 키(802)로부터 시작하여 게스트 가상 서버 마스터 키(310)(VS-MK)에 의해 래핑된 키를 반환하도록 하이퍼바이저(302)에 요청을 전송한다. 다른 단계(904)에서, 하이퍼바이저(302)는 이 요청의 게스트 비밀의 해시 값을 결정하고 게스트 래핑 키(320)에 의한 래핑된 게스트 키(802)를 게스트 마스터 키(310)에 의한 래핑된 키로 변환하도록 연관된 위성 가상 서버에 요청한다.
[0085] 단계(906)에서, 위성 게스트 가상 서버(502)는 게스트 래핑 키(320)를 사용하여 래핑된 게스트 키(802)를 래핑 해제한다(unwrap). 단계(908)에서, 위성 게스트 가상 서버(502)는 펌웨어(304)로부터 (하이퍼바이저 302를 통해) 래핌 해제된 키를 그의 마스터 키(310)로 래핑하고 그 결과들을 하이퍼바이저(302)에 반환하도록 요청한다. 다른 단계(910)에서, 하이퍼바이저(302)는 게스트 마스터 키(310)에 의해 래핑되고 수신된 키를 게스트 가상 서버(312)에 반환한다. 이로써 루프가 닫히고 게스트 가상 서버(312)는 하드웨어 보안 모듈을 사용할 필요 없이 게스트 가상 서버(312)에 의해 추가 암호화 기능들에 사용될 보호된 키 - 즉, 암호화 키 객체 - 를 수신하게 된다.
[0086] 도 10은, 도 9에 예시된 단계들의 맥락에서 방금 설명한 바와 같이, 보호된 키의 생성을 지원하는 모든 컴포넌트들의 블록도(1000)를 보여준다. 래핑된 게스트 키(802)가 되기 위해 게스트 래핑 키(320)에 의해 래핑된 랜덤 키(702)는 위성 게스트 가상 서버(502)에서 래핑 해제되고 하이퍼바이저(302)를 통해 펌웨어(304)로 전송된다. 여기서, 래핌 해제된 게스트 키(1002)는 마스터 키(310)로 래핑되고 보호된 키(1004)로서 하이퍼바이저(302)를 통해 게스트 가상 서버(312)에 반환된다.
[0087] 여기서, 래핑된 게스트 키(802)의 사본은 게스트 가상 서버(312) 및 위성 게스트 가상 서버(502)에서 볼 수 있다. 그러나, 래핑된 게스트 키(802)가 래핌 해제된 게스트 키(1002)가 된 후, 래핑된 게스트 키(802)는 "잊혀질" 수 있고, 즉, 위성 게스트 가상 서버(502)에서 삭제될 수 있다. 따라서, 래핑 해제된 게스트 키(1002)는 전환 과정(transition)에만 존재할 수 있다. 또한, 래핑 해제된 게스트 키(1002)는 펌웨어(304)에 대한 요청이 이행된 후에 위성 게스트 가상 서버(502)에서 삭제될 수 있다. 래핑 해제된 게스트 키(1002)는 더 이상 필요하지 않다. 보호된 키(1004)가 게스트 가상 서버(312)로 전송된 후에 펌웨어에 있는 보호된 키(1004)의 버전에도 동일한 일이 일어날 것이다.
[0088] 도 11은 암호화 작업들에 사용하기 위해 게스트 가상 서버(312)에 암호화 키 객체를 제공하는 본 발명의 보호 키 제공 시스템(1100)의 실시예의 블록도를 도시한다. 시스템(1100)은 게스트 자격 증명들을 사용하여 게스트 가상 서버(312)가 신뢰할 수 있는 하이퍼바이저(302)에 등록할 수 있게 하는 등록 유닛(1102)을 포함할 수 있다. 시스템(1100)은 또한 신뢰할 수 있는 하이퍼바이저(302)가 게스트 래핑 키(320)를 생성하고 게스트 래핑 키(320)를 게스트 자격 증명들과 연관시킬 수 있게 하는 제1 생성기 모듈(1104)을 포함할 수 있다.
[0089] 시스템(1100)은 또한 게스트 자격 증명들을 전달인자(an argument)로 사용하여 게스트 가상 서버(312)로부터 요청을 수신할 때 활성화되는 제2 생성기 모듈(1106)을 포함할 수 있다. 그러한 경우에, 신뢰할 수 있는 하이퍼바이저(302)에 의해 트리거되거나 그렇지 않으면 활성화되는, 제2 생성기 모듈(1106)은, 게스트 가상 서버(312)를 위해, 게스트 가상 서버(312)로부터의 가상 서버 특정 데이터로 구성된 위성 게스트 가상 서버 인스턴스(502)를 생성하도록 구성된다. 게스트 가상 서버(312)는 마스터 키(310)를 위성 게스트 가상 서버 인스턴스(502)와 공유한다. 어떤 경우에도, 마스터 키(310)는 신뢰할 수 있는 하이퍼바이저(302) 또는 어떠한 게스트 가상 서버에 의해서도 액세스될 수 없다.
[0090] 게스트 가상 서버(312)는 마스터 키에 대한 액세스 없이 마스터 키(310)를 공유할 수 있다. 암호화 요청은 보호된 키(마스터 키로 래핑된 키)와 함께 시스템으로 전송된다. 시스템은 암호화 요청이 어느 가상 서버에서 오는지 알고 해당 가상 서버의 마스터 키를 사용하여 보호된 키를 래핑 해제한다. 그런 다음 암호화 작업은 CPU의 일반 텍스트 키를 기반으로 수행된다. 따라서, 가상 서버가 실제 암호화 키를 알지 않고도 암호화 작업들을 수행할 수 있다.
[0091] 뿐만 아니라, 시스템(1100)은 신뢰할 수 있는 하이퍼바이저(302)가 위성 게스트 가상 서버 인스턴스(502)에 대한 요청의 게스트 자격 증명들과 연관된 게스트 래핑 키(320)의 사본을 전달할 수 있게 하는 전달 모듈(1108)을 포함할 수 있다. 시스템(1100)은 또한 신뢰할 수 있는 하이퍼바이저(302)가 랜덤 키(702)를 생성할 수 있게 하는 제3 생성기 모듈(1110)을 포함할 수 있다.
[0092] 추가적으로, 시스템(1100)은 신뢰할 수 있는 하이퍼바이저(302)가 게스트 자격 증명들과 연관된 게스트 래핑 키(320)로 랜덤 키(702)를 래핑하여, 래핑된 게스트 키(802)를 생성할 수 있게 하는, 래핑 모듈(1112)을 포함할 수 있다.
[0093] 또한, 시스템(1100)은, 래핑된 게스트 키(802)를 사용하기 전에, 래핑된 게스트 키(802)의 보호된 키로의 변환을 요청하는 요청 유닛(1114)을 포함할 수 있다. 상기 변환은 래핑된 게스트 키(802)를 마스터 키(310)로 재-래핑하는 위성 게스트 가상 서버 인스턴스(502)를 포함할 수 있다. 마스터 키(310)는 게스트 가상 서버(312)와 위성 게스트 가상 서버(502) 모두에 특정할 수 있거나 게스트 가상 서버(312)와 위성 게스트 가상 서버(502)에 의해 공유될 수 있다. 상기 재-래핑으로, 래핑된 게스트 키(802)는, 암호화 키 객체로서, 기능하는 보호된 게스트 키(1004)로 변환될 수 있다.
[0094] 상기 언급된 유닛들 및 모듈들은 정보 및/또는 신호 교환을 위해 직접적으로 또는 간접적으로 상호 연결될 수 있다는 점에 유의해야 한다. 또한, 등록 유닛(1102), 제1 생성기 모듈(1104), 제2 생성기 모듈(1106), 전달 모듈(1108), 제3 생성기 모듈(1110), 래핑 모듈(1112) 및 요청 유닛(1114)은 보호키 제공 시스템(1100)의 내부 버스 시스템(1116)을 통해 상호 연결될 수 있다. 이들 유닛들 및 모듈들은 소프트웨어를 통해 형성될 수 있다.
[0095] 본 발명의 실시예들은 프로그램 코드를 저장 및/또는 실행하는 데 적합한 플랫폼에 관계없이, 거의 모든 유형의 컴퓨터와 함께 구현될 수 있다. 도 12는, 예로서, 제안된 방법과 관련된 프로그램 코드를 실행하기에 적합한 컴퓨팅 시스템(1200)을 도시한다.
[0096] 컴퓨팅 시스템(1200)은 적합한 컴퓨터 시스템의 한 예일뿐이며, 컴퓨터 시스템(1200)이 위에 설명된 기능 중 어느 하나를 구현할 수 있는지 및/또는 수행할 수 있는지 여부에 관계없이, 여기에 설명된 본 발명의 실시예들의 사용 또는 기능의 범위에 대한 제한을 제안하려는 의도가 아니다. 컴퓨팅 시스템(1200)에는, 수많은 다른 범용 또는 특수 목적 컴퓨팅 환경들 또는 구성들과 함께 운영되는, 컴포넌트들이 있다. 컴퓨터 시스템 /서버(1200)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 씬 클라이언트들, 씩 클라이언트들, 핸드헬드 또는 랩탑 디바이스들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그래밍 가능한 소비자 전자 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 중 하나를 포함하는 분산 클라우드 컴퓨팅 환경들, 등을 포함하나, 이에 국한하는 것은 아니다. 컴퓨터 시스템/서버(1200)는, 컴퓨터 시스템(1200)에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능한 명령들의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 로직, 데이터 구조들 등을 포함할 수 있다. 컴퓨터 시스템/서버(1200)는 통신 네트워크를 통해 링크되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 클라우드 컴퓨팅 환경에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[0097] 도면에서 도시된 바와 같이, 컴퓨터 시스템/서버(1200)는 범용 컴퓨터 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(1200)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 유닛들(1202), 시스템 메모리(1204), 및 시스템 메모리(1204)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(1202)에 연결하는 버스(1206)를 포함할 수 있지만, 이에 국한되지 않는다. 버스(1206)는, 다양한 버스 아키텍처들 중 하나를 사용하는, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 및 프로세서 또는 로컬 버스를 포함하는, 버스 구조들의 여러 유형들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(include Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스를 포함하나, 이에 국한되지는 않는다. 컴퓨터 시스템/서버(1200)는 일반적으로 다양한 컴퓨터 시스템 판독 가능한 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(1200)에 의해 액세스 가능한 모든 이용 가능한 매체일 수 있으며 , 휘발성 및 비휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다. 
[0098] 시스템 메모리(1204)은, 예컨대 랜덤 액세스 메모리(RAM)(1208) 및/또는 캐시 메모리(1210)와 같은, 휘발성 메모리의 형태의 컴퓨터 시스템 판독 가능한 매체를 포함할 수 있다. 컴퓨터 시스템/서버(1200)는 또한, 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 포함할 수 있다. 단지 예로서, 스토리지 시스템(1212)이 비착탈식, 비휘발성 자기 매체(도시되지 않고 일반적으로 "하드 드라이브"라고 함)로부터 읽고 쓰기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈가능 비휘발성 자기 디스크(예: "플로피 디스크") 에서 읽고 쓰기 위한 자기 디스크 드라이브 및, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은, 착탈가능 비휘발성 광학 디스크에서 읽거나 쓰기 위한 광학 디스크 드라이브가 제공될 수 있다. 그러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(1206)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(1204)는 본 발명의 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0099] 프로그램 모듈들의 (적어도 하나)세트(1216)를 갖는, 프로그램/유틸리티는, 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터와 함께, 예를 들어, 메모리(1204)에 저장될 수 있지만, 이에 국한되는 것은 아니다. 운영 체제들 각각, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(1216)은 일반적으로 본 명세서에 기술된 바와 같은 본 발명의 실시예의 기능들 및/또는 방법들을 수행한다.
[0100] 컴퓨터 시스템/서버(1200)는 키보드, 포인팅 디바이스, 디스플레이(1220) 등과 같은, 하나 또는 그 이상의 외부 디바이스들(1218); 사용자가 컴퓨터 시스템/서버(1200)와 상호작용할 수 있게 하는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(1200)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신 할 수 있다. 그러한 통신은 입/출력(I/O) 인터페이스(1214)를 통해 발생할 수 있다. 또한, 컴퓨터 시스템/서버(1200)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 네트워크 어댑터(1222)를 통한 공중 네트워크(예를 들어, 인터넷)와 같은, 하나 또는 그 이상의 네트워크들과 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(1222)는 버스(1206)를 통해 컴퓨터 시스템/서버(1200)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(1200)와 함께 사용될 수 있음을 이해해야 한다. 이들의 예들에는: 마이크로코드, 디바이스 드라이버들, 리던던트 처리 유닛들, 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이벌 스토리지 시스템들이 포함되지만 이에 국한되지는 않는다.
[0101] 또한, 버스 시스템(1206)에는 암호화 작업들(cryptographic operations)에 사용하기 위해 게스트 가상 서버에 암호 키 객체(a cryptographic key object)를 제공하는 보호 키 제공 시스템(1100)이 부착될 수 있다.
[0102] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제공되는 것이며, 개시된 실시 예들이 전부라거나 이들에 한정하려는 의도가 있는 것은 아니다. 많은 수정들 및 변형들이 설명된 실시 예들의 범위와 정신을 벗어남이 없이 이 기술 분야에서 통상의 지식을 가진 자에게는 명백할 것이다. 여기서 사용된 용어들은 실시 예들의 원리들, 실제 애플리케이션 또는 시장에서 발견된 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해 또는 이 기술 분야에서 통상의 지식을 가진 자들이 여기서 개시된 실시 예들을 이해할 수 있도록 하기 위해 선택되었다.
[0103] 본 발명의 실시 예들은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0104] 상기 매체는 전파 매체를 위한 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템일 수 있다. 컴퓨터 판독 가능 매체의 예들은 반도체 또는 고체 상태 메모리, 자기 테이프, 착탈식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 강성 자기 디스크 및 광 디스크를 포함한다. 광 디스크의 현재 예들은 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 컴팩트 디스크 읽기/쓰기(CD-R/W), DVD 및 Blu-Ray-Disk를 포함한다.
[0105] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0106] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0107] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0108] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0109] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0110] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치들, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0111] 도면들의 플로차트 및 블록도는 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 플로차트 또는 블록도들의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 혹은 그 이상의 실행 가능한 명령들을 포함하는, 모듈, 세그먼트, 또는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록들은, 실제로, 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라, 블록들이 때때로 역순으로 실행될 수 있다. 또한 블록도들 및/또는 플로차트의 각 블록, 및 블록도들 및/또는 플로차트 그림의 블록들의 조합들은, 특정 기능들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합들을 수행하거나 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
[0112] 관련 컴퓨터 프로그램 제품의 형태를 취하는 실시예들의 경우, 프로그램 코드는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체에서 액세스 가능할 수 있으며 컴퓨터 또는 모든 명령 실행 시스템에 의해, 또는 이와 관련하여 사용하기에 적합할 수 있다. 이 설명의 목적을 위해, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 명령 실행 시스템, 장치 도는 디바이스에 의해, 또는 이와 관련하여 사용하기 위해 프로그램을 저장, 통신, 전파 또는 전송하기 위한 유닛 또는 모듈을 포함할 수 있는 모든 장치일 수 있다.
[0113] 본 발명은 클라우드 컴퓨팅에 대한 상세한 설명을 포함하지만, 여기에 인용된 기술적 사상의 구현은 클라우드 컴퓨팅 환경에 제한되지 않는다는 것이 이해된다. 오히려, 본 발명의 실시예는 현재 알려져 있거나 나중에 개발될 임의의 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0114] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0115] 본 발명의 방법들은 클라우드 컴퓨팅 환경을 사용하여 실시될 수도 있다. 클라우드 컴퓨팅 특성들은 다음과 같다:
주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0116] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0117] 배치 모델들(Deployment Models)은 다음과 같다:
사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0118] 클라우드 컴퓨팅 환경은 상태비보존(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0119] 이제 도 13을 참조하면, 예시적인 클라우드 컴퓨팅 환경(1300)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(1300)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(1300A), 데스크탑 컴퓨터(1300B), 랩탑 컴퓨터(1300C), 및/또는 자동차용 컴퓨터 시스템(1300N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(1200)을 포함한다. 노드들(1200)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(1300)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 13에 도시된 컴퓨팅 장치들(1300A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(1200)과 클라우드 컴퓨팅 환경(1300)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0120] 이제 도 14를 참조하면, 클라우드 컴퓨팅 환경(1300)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 14에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0121] 하드웨어 및 소프트웨어 층(1402)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(1404); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(1406); 서버들(1408); 블레이드 서버들(1410); 스토리지 디바이스들(1412); 그리고 네트워크 및 네트워킹 컴포넌트들(1414)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(1416) 및 데이터베이스 소프트웨어(1418)를 포함한다.
[0122] 가상화 층(1420)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(1422); 가상 스토리지(1424); 가상 사설 네트워크를 포함하는, 가상 네트워크들(1426); 가상 애플리케이션들 및 운영 체제들(1428); 및 가상 클라이언트들(1430).
[0123] 일 예에서, 관리 층(1432)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(1434)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(1436)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이들 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(1438)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(1440)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(1442)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0124] 워크로드 층(1444)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(1446); 소프트웨어 개발 및 라이프사이클 관리(1448); 가상 교실 교육 전달(1450); 데이터 분석 처리(1452); 트랜잭션 처리(1454); 및 암호 키 객체 처리 및 보호 키 제공 처리(1456). 암호 키 객체 처리 및 보호 키 제공 처리의 기능은 본 발명의 전술한 실시예에서 설명되었다.
[0125] 본 명세서에서 사용한 용어는 단지 특정한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 명세서에 사용된 바와 같이, 단수 형태는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도된다. 본 명세서에서 사용될 때 용어 "포함하다" 및/또는 "포함하는"은 명시된 특징들, 정수들, 단계들, 동작들, 요소들 및/또는 컴포넌트들의 존재를 명시하지만, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다는 것이 이해될 것이다.
[0126] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제시되었지만, 이들이 전부라거나 개시된 실시 예들로 제한하려는 의도는 아니다. 많은 수정들 및 변형들이 본 발명의 범위 및 정신을 벗어남이 없이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있도록 선택되었다.

Claims (25)

  1. 암호화 작업들(cryptographic operations)에 사용하기 위해 게스트 가상 서버에 암호화 키 객체(a cryptographic key object)를 제공하기 위한 컴퓨터-구현 방법으로서, 상기 방법은:
    상기 게스트 가상 서버에 의해, 신뢰할 수 있는 하이퍼바이저(a trusted hypervisor)로 등록하는 단계 - 상기 등록하는 단계는 게스트 자격 증명들(guest credentials)을 사용하는 단계를 포함함 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 게스트 래핑 키(a guest wrapping key)를 생성하는 단계 및 상기 게스트 래핑 키를 상기 게스트 자격 증명들과 연관시키는 단계;
    상기 게스트 자격 증명들을 전달인자(an argument)로서 갖는 상기 게스트 가상 서버로부터의 요청을 수신하면, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 가상 서버로부터의 가상 서버 특정 데이터로 구성된 위성 가상 서버 인스턴스(a satellite virtual server instance)를, 상기 게스트 가상 서버에 대해, 생성하는 단계 - 상기 위성 가상 서버 인스턴스는 마스터 키(a master key)를 상기 가상 게스트 서버와 공유하며, 상기 마스터 키는 상기 신뢰할 수 있는 하이퍼바이저 또는 모든 게스트 가상 서버(any guest virtual server)에 의해 액세스될 수 없음 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키의 사본을 상기 위성 가상 서버 인스턴스로, 전달하는 단계(passing);
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 랜덤 게스트 키(a random guest key)를 생성하는 단계;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키로 상기 랜덤 게스트 키를 래핑하는 단계(wrapping), 및 이에 의해 래핑된 게스트 키(a wrapped guest key)를 생성하는 단계; 그리고
    상기 게스트 가상 서버로부터 변환 요청(a conversion request)을 수신하면, 상기 래핑된 게스트 키를 보호된 키로 변경하기 위해 상기 래핑된 게스트 키의 변환을 수행하는 단계를 포함하고, 상기 변환은 보호된 게스트 키(a protected guest key)를 형성하기 위해 상기 래핑된 게스트 키를 상기 마스터 키로 재-래핑하는 단계(rewrapping)를 포함하며, 상기 보호된 게스트 키는 상기 암호화 키 객체로서 기능하는
    컴퓨터-구현 방법.
  2. 제1항에 있어서, 상기 변환은 상기 래핑된 게스트 키를 래핑 해제(unwrap)하기 위해 상기 게스트 래핑 키를 사용하는 상기 위성 가상 서버 인스턴스를 더 포함하는
    컴퓨터-구현 방법.
  3. 제1항 또는 제2항에 있어서, 상기 변환 요청은 변환 전달인자로서 상기 게스트 자격 증명들을 포함하는
    컴퓨터-구현 방법.
  4. 제1항 내지 제3항의 항들 중 어느 한 항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증(verify)하는 데 필요한 데이터와 관련된 키 저장소를 유지하는
    컴퓨터-구현 방법.
  5. 제4항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증하는데 필요한 상기 데이터를 계산하기 위해 암호화 단-방향 기능(a cryptographic one-way function)을 사용하는
    컴퓨터-구현 방법.
  6. 제3항 또는 제4항에 있어서, 상기 키 저장소는 패스프레이즈(passphrase)로 보호되는
    컴퓨터-구현 방법.
  7. 제1항 내지 제6항의 항들 중 어느 한 항에 있어서, 상기 게스트 래핑 키는 하드웨어 보안 모듈에 의해 보호되는
    컴퓨터-구현 방법.
  8. 제1항 내지 제7항의 항들 중 어느 한 항에 있어서, 상기 가상 서버 특정 데이터는 가상 머신의 암호화 제어 블록(a crypto control block)에 저장된 데이터인
    컴퓨터-구현 방법.
  9. 제1항 내지 제8항의 항들 중 어느 한 항에 있어서, 상기 위성 가상 서버 인스턴스는 하나의 인터페이스(a sole interface)를 갖고; 그리고
    상기 하나의 인터페이스는 상기 신뢰할 수 있는 하이퍼바이저에 연결되는
    컴퓨터-구현 방법.
  10. 제1항 내지 제9항의 항들 중 어느 한 항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 랜덤 키를 생성하고 상기 랜덤 키를 상기 게스트 랩핑 키로 랩핑하기 위해 상기 위성 가상 서버 인스턴스로부터의 서비스를 사용하는
    컴퓨터-구현 방법.
  11. 제1항 내지 제10항의 항들 중 어느 한 항에 있어서, 상기 방법은, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 등록하는 단계 다음에 오는 각각의 요청을 승인하는 단계(authorizing)를 더 포함하고;
    상기 승인하는 단계는 상기 등록하는 단계 다음에 오는 각각의 요청과 함께 제공되는 추가적인 게스트 자격 증명들을 사용하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  12. 제1항 내지 제11항의 항들 중 어느 한 항에 있어서, 상기 방법은, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 등록하는 단계 다음에 오는 상기 게스트 가상 서버 요청의 추가 요청을 승인하는 단계를 더 포함하고;
    상기 게스트 가상 서버 요청을 승인하는 단계는 게스트 특정 데이터를 사용하는 단계를 포함하는
    컴퓨터-구현 방법.
  13. 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하는 컴퓨터 시스템으로서, 상기 컴퓨터 시스템은:
    하나 혹은 그 이상의 프로세서들, 하나 혹은 그 이상의 컴퓨터-판독 가능 메모리들, 하나 혹은 그 이상의 컴퓨터-판독 가능 유형의 스토리지 매체, 및 상기 하나 혹은 그 이상의 메모리들 중 적어도 하나를 통해 상기 하나 혹은 그 이상의 프로세서들 중 적어도 하나에 의한 실행을 위해 상기 하나 혹은 그 이상의 유형의 스토리지 매체 중 적어도 하나에 저장된 프로그램 명령들을 포함하고, 상기 컴퓨터 시스템은 방법을 수행할 수 있으며, 상기 방법은:
    상기 게스트 가상 서버에 의해, 신뢰할 수 있는 하이퍼바이저(a trusted hypervisor)로 등록하는 단계 - 상기 등록하는 단계는 게스트 자격 증명들(guest credentials)을 사용하는 단계를 포함함 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 게스트 래핑 키(a guest wrapping key)를 생성하는 단계 및 상기 게스트 래핑 키를 상기 게스트 자격 증명들과 연관시키는 단계;
    상기 게스트 자격 증명들을 전달인자(an argument)로서 갖는 상기 게스트 가상 서버로부터의 요청을 수신하면, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 가상 서버로부터의 가상 서버 특정 데이터로 구성된 위성 가상 서버 인스턴스(a satellite virtual server instance)를, 상기 게스트 가상 서버에 대해, 생성하는 단계 - 상기 위성 가상 서버 인스턴스는 마스터 키(a master key)를 상기 가상 게스트 서버와 공유하며, 상기 마스터 키는 상기 신뢰할 수 있는 하이퍼바이저 또는 모든 게스트 가상 서버(any guest virtual server)에 의해 액세스될 수 없음 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키의 사본을 상기 위성 가상 서버 인스턴스로, 전달하는 단계(passing);
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 랜덤 게스트 키(a random guest key)를 생성하는 단계;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키로 상기 랜덤 게스트 키를 래핑하는 단계(wrapping), 및 이에 의해 래핑된 게스트 키(a wrapped guest key)를 생성하는 단계; 그리고
    상기 게스트 가상 서버로부터 변환 요청(a conversion request)을 수신하면, 상기 래핑된 게스트 키를 보호된 키로 변경하기 위해 상기 래핑된 게스트 키의 변환을 수행하는 단계를 포함하고, 상기 변환은 보호된 게스트 키(a protected guest key)를 형성하기 위해 상기 래핑된 게스트 키를 상기 마스터 키로 재-래핑하는 단계(rewrapping)를 포함하며, 상기 보호된 게스트 키는 상기 암호화 키 객체로서 기능하는
    컴퓨터 시스템.
  14. 제13항에 있어서, 상기 변환은 상기 래핑된 게스트 키를 래핑 해제(unwrap)하기 위해 상기 게스트 래핑 키를 사용하는 상기 위성 가상 서버 인스턴스를 더 포함하는
    컴퓨터 시스템.
  15. 제13항 또는 제14항에 있어서, 상기 변환 요청은 변환 전달인자로서 상기 게스트 자격 증명들을 포함하는
    컴퓨터 시스템.
  16. 제13항 내지 제15항의 항들 중 어느 한 항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증(verify)하는 데 필요한 데이터와 관련된 키 저장소를 유지하는
    컴퓨터 시스템.
  17. 제16항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 게스트 자격 증명들을 검증하는데 필요한 상기 데이터를 계산하기 위해 암호화 단-방향 기능(a cryptographic one-way function)을 사용하는
    컴퓨터 시스템.
  18. 제16항 또는 제17항에 있어서, 상기 키 저장소는 패스프레이즈(passphrase)로 보호되는
    컴퓨터 시스템.
  19. 제16항 내지 제18항의 항들 중 어느 한 항에 있어서, 상기 게스트 래핑 키는 하드웨어 보안 모듈에 의해 보호되는
    컴퓨터 시스템.
  20. 제13항 내지 제19항의 항들 중 어느 한 항에 있어서, 상기 가상 서버 특정 데이터는 가상 머신의 암호화 제어 블록(a crypto control block)에 저장된 데이터인
    컴퓨터 시스템.
  21. 제13항 내지 제20항의 항들 중 어느 한 항에 있어서, 상기 위성 가상 서버 인스턴스는 하나의 인터페이스(a sole interface)를 갖고; 그리고
    상기 하나의 인터페이스는 상기 신뢰할 수 있는 하이퍼바이저에 연결되는
    컴퓨터 시스템.
  22. 제13항 내지 제21항의 항들 중 어느 한 항에 있어서, 상기 신뢰할 수 있는 하이퍼바이저는 상기 랜덤 키를 생성하고 상기 랜덤 키를 상기 게스트 랩핑 키로 랩핑하기 위해 상기 위성 가상 서버 인스턴스로부터의 서비스를 사용하는
    컴퓨터 시스템.
  23. 제13항 내지 제22항의 항들 중 어느 한 항에 있어서, 상기 방법은, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 등록하는 단계 다음에 오는 각각의 요청을 승인하는 단계(authorizing)를 더 포함하고;
    상기 승인하는 단계는 상기 등록하는 단계 다음에 오는 각각의 요청과 함께 제공되는 추가적인 게스트 자격 증명들을 사용하는 단계를 더 포함하는
    컴퓨터 시스템.
  24. 제13항 내지 제23항의 항들 중 어느 한 항에 있어서, 상기 방법은, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 등록하는 단계 다음에 오는 상기 게스트 가상 서버 요청의 추가 요청을 승인하는 단계를 더 포함하고;
    상기 게스트 가상 서버 요청을 승인하는 단계는 게스트 특정 데이터를 사용하는 단계를 포함하는
    컴퓨터-시스템.
  25. 암호화 작업들에 사용하기 위해 게스트 가상 서버에 암호화 키 객체를 제공하기 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 프로그램 명령이 구현된 컴퓨터 판독 가능 저장 매체를 포함하고, 상기 프로그램 명령은 프로세서에 의해 실행 가능하며, 상기 프로세서가 방법을 수행하도록 하고, 상기 방법은:
    상기 게스트 가상 서버에 의해, 신뢰할 수 있는 하이퍼바이저(a trusted hypervisor)로 등록하는 단계 - 상기 등록하는 단계는 게스트 자격 증명들(guest credentials)을 사용하는 단계를 포함함 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 게스트 래핑 키(a guest wrapping key)를 생성하는 단계 및 상기 게스트 래핑 키를 상기 게스트 자격 증명들과 연관시키는 단계;
    상기 게스트 자격 증명들을 전달인자(an argument)로서 갖는 상기 게스트 가상 서버로부터의 요청을 수신하면, 상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 가상 서버로부터의 가상 서버 특정 데이터로 구성된 위성 가상 서버 인스턴스(a satellite virtual server instance)를, 상기 게스트 가상 서버에 대해, 생성하는 단계 - 상기 위성 가상 서버 인스턴스는 마스터 키(a master key)를 상기 가상 게스트 서버와 공유하며, 상기 마스터 키는 상기 신뢰할 수 있는 하이퍼바이저 또는 모든 게스트 가상 서버(any guest virtual server)에 의해 액세스될 수 없음 -;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키의 사본을 상기 위성 가상 서버 인스턴스로, 전달하는 단계(passing);
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 랜덤 게스트 키(a random guest key)를 생성하는 단계;
    상기 신뢰할 수 있는 하이퍼바이저에 의해, 상기 게스트 래핑 키로 상기 랜덤 게스트 키를 래핑하는 단계(wrapping), 및 이에 의해 래핑된 게스트 키(a wrapped guest key)를 생성하는 단계; 그리고
    상기 게스트 가상 서버로부터 변환 요청(a conversion request)을 수신하면, 상기 래핑된 게스트 키를 보호된 키로 변경하기 위해 상기 래핑된 게스트 키의 변환을 수행하는 단계를 포함하고, 상기 변환은 보호된 게스트 키(a protected guest key)를 형성하기 위해 상기 래핑된 게스트 키를 상기 마스터 키로 재-래핑하는 단계(rewrapping)를 포함하며, 상기 보호된 게스트 키는 상기 암호화 키 객체로서 기능하는
    컴퓨터 프로그램 제품.
KR1020237000008A 2020-07-02 2021-06-24 하이퍼바이저 보호 키 KR20230031278A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/919,159 US11196548B1 (en) 2020-07-02 2020-07-02 Hypervisor protected key
US16/919,159 2020-07-02
PCT/IB2021/055594 WO2022003505A1 (en) 2020-07-02 2021-06-24 Hypervisor protected key

Publications (1)

Publication Number Publication Date
KR20230031278A true KR20230031278A (ko) 2023-03-07

Family

ID=78818831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237000008A KR20230031278A (ko) 2020-07-02 2021-06-24 하이퍼바이저 보호 키

Country Status (8)

Country Link
US (2) US11196548B1 (ko)
JP (1) JP2023530941A (ko)
KR (1) KR20230031278A (ko)
CN (1) CN115803740A (ko)
AU (1) AU2021302892B2 (ko)
DE (1) DE112021002099T5 (ko)
GB (1) GB2611276B (ko)
WO (1) WO2022003505A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10320893B2 (en) * 2014-07-31 2019-06-11 Corent Technology, Inc. Partitioning and mapping workloads for scalable SaaS applications on cloud
US20230283657A1 (en) * 2014-07-31 2023-09-07 Corent Technology, Inc. Multitenant cross dimensional cloud resource visualization and planning
US11196548B1 (en) 2020-07-02 2021-12-07 International Business Machines Corporation Hypervisor protected key
US20210014047A1 (en) * 2020-09-25 2021-01-14 Intel Corporation Methods, systems, apparatus, and articles of manufacture to manage access to decentralized data lakes
US20230269298A1 (en) * 2022-02-22 2023-08-24 International Business Machines Corporation Protecting api keys for accessing services

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613921B2 (en) 2005-05-13 2009-11-03 Intel Corporation Method and apparatus for remotely provisioning software-based security coprocessors
US9544137B1 (en) * 2010-12-29 2017-01-10 Amazon Technologies, Inc. Encrypted boot volume access in resource-on-demand environments
US8996887B2 (en) * 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US9231923B1 (en) * 2013-11-12 2016-01-05 Amazon Technologies, Inc. Secure data destruction in a distributed environment using key protection mechanisms
US9720721B2 (en) 2015-07-01 2017-08-01 International Business Machines Corporation Protected guests in a hypervisor controlled system
US9894051B2 (en) * 2015-12-14 2018-02-13 International Business Machines Corporation Extending shrouding capability of hosting system
US10050947B2 (en) * 2016-01-28 2018-08-14 Cisco Technology, Inc. Key distribution in a distributed network environment
US20170277898A1 (en) 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US20180189090A1 (en) * 2017-01-05 2018-07-05 Microsoft Technology Licensing, Llc Exposing Hardware Work Queues as Virtual Devices in Virtual Machines
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10423791B2 (en) * 2017-04-27 2019-09-24 Microsoft Technology Licensing, Llc Enabling offline restart of shielded virtual machines using key caching
US10903985B2 (en) * 2017-08-25 2021-01-26 Keysight Technologies Singapore (Sales) Pte. Ltd. Monitoring encrypted network traffic flows in a virtual environment using dynamic session key acquisition techniques
US10757082B2 (en) 2018-02-22 2020-08-25 International Business Machines Corporation Transforming a wrapped key into a protected key
US10606617B2 (en) 2018-03-08 2020-03-31 Citrix Systems, Inc. Instant virtual application launch
US11294865B2 (en) 2018-08-13 2022-04-05 Citrix Systems, Inc. Using a scan data ledger for distributed security analysis of shared content
US11562267B2 (en) * 2019-09-14 2023-01-24 Oracle International Corporation Chatbot for defining a machine learning (ML) solution
US11303432B2 (en) * 2020-05-01 2022-04-12 Microsoft Technology Licensing, Llc Label-based double key encryption
US11196548B1 (en) 2020-07-02 2021-12-07 International Business Machines Corporation Hypervisor protected key

Also Published As

Publication number Publication date
GB202301003D0 (en) 2023-03-08
US11196548B1 (en) 2021-12-07
JP2023530941A (ja) 2023-07-20
AU2021302892B2 (en) 2023-07-06
GB2611276B (en) 2023-08-23
WO2022003505A1 (en) 2022-01-06
DE112021002099T5 (de) 2023-02-16
AU2021302892A1 (en) 2023-02-09
US11831755B2 (en) 2023-11-28
CN115803740A (zh) 2023-03-14
GB2611276A (en) 2023-03-29
US20220045853A1 (en) 2022-02-10

Similar Documents

Publication Publication Date Title
AU2021302892B2 (en) Hypervisor protected key
KR102539777B1 (ko) 하드웨어 보안 모듈에 대한 보안 게스트들의 보안 키들의 바인딩
KR102527949B1 (ko) 보안 실행 게스트 소유자 환경 컨트롤
EP3935536B1 (en) Secure execution guest owner controls for secure interface control
US11533174B2 (en) Binding secure objects of a security module to a secure guest
US11526633B2 (en) Media exfiltration prevention system
US20200296086A1 (en) Secure data transport using trusted identities
US20200089916A1 (en) Binding a hardware security module (hsm) to protected software
US11645092B1 (en) Building and deploying an application
US11809568B2 (en) Hypervisor having local keystore
US20230269298A1 (en) Protecting api keys for accessing services
US20230032363A1 (en) Sensitive data encryption
US20230362170A1 (en) Access configuration in hybrid network environments

Legal Events

Date Code Title Description
A201 Request for examination