KR102376419B1 - 암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법 - Google Patents

암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법 Download PDF

Info

Publication number
KR102376419B1
KR102376419B1 KR1020177012885A KR20177012885A KR102376419B1 KR 102376419 B1 KR102376419 B1 KR 102376419B1 KR 1020177012885 A KR1020177012885 A KR 1020177012885A KR 20177012885 A KR20177012885 A KR 20177012885A KR 102376419 B1 KR102376419 B1 KR 102376419B1
Authority
KR
South Korea
Prior art keywords
target machine
data
template
provisioning
provisioning data
Prior art date
Application number
KR1020177012885A
Other languages
English (en)
Other versions
KR20170085503A (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 KR20170085503A publication Critical patent/KR20170085503A/ko
Application granted granted Critical
Publication of KR102376419B1 publication Critical patent/KR102376419B1/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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • 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/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

잠재적으로 안전하지 않은 환경에서 안전한 방식으로 머신을 부팅하는 방법이 제공된다. 방법은 타겟 머신이 부트 프로세스를 시작하는 단계를 포함한다. 방법은 타겟 머신이 프로비저닝 데이터가 부팅을 계속하는 데 필요한지를 판정하는 단계를 더 포함한다. 타겟 머신은 프로비저닝 데이터를 획득하기 위해 안전한 인프라를 접속한다. 타겟 머신은 안전한 인프라에 의해 검증될 수 있는 신원 주장을 제공한다. 안전한 인프라가 신원 주장을 검증한 결과로서, 타겟 머신은 타겟 머신에 대해 봉인된 키를 수립하라는 요청을 안전한 인프라로부터 수신한다. 타겟 머신은 수립된 키를 안전한 인프라에 제공한다. 타겟 머신이 안전한 인프라로부터 프로비저닝 데이터를 수신한다. 프로비저닝 데이터는 수립된 키에 대해 암호화된다. 타겟 머신은 암호화된 프로비저닝 데이터를 해독하여 부팅을 완료하기 위해서 프로비저닝 데이터를 사용한다.

Description

암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법{SECURE CREATION OF ENCRYPTED VIRTUAL MACHINES FROM ENCRYPTED TEMPLATES}
컴퓨팅 시스템의 상호접속(interconnection)은 소위 "클라우드" 컴퓨팅 시스템과 같은 분산 컴퓨팅 시스템을 용이하게 한다. 본 명세서에서 "클라우드 컴퓨팅"은 유지 노력과 서비스 제공자의 개입을 줄이면서 제공되고 릴리즈될 수 있는 구성가능한 컴퓨팅 리소스(예컨대, 네트워크, 서버, 스토리지, 애플리케이션, 서비스 등)의 공유 풀(shared pool)에 대한, 유비쿼터스(ubiquitous) 환경의, 편리한, 온-디맨드 네트워크 액세스를 가능하게 하는 시스템 또는 리소스일 수 있다. 클라우드 모델은 다양한 특성(예컨대, 온-디맨드 셀프-서비스, 광범위한 네트워크 액세스, 리소스 풀링, 빠른 탄력성, 측정된 서비스 등), 서비스 모델(예컨대, SaaS (Software as a Service), PaaS(Platform as a Service), IaaS(Infrastructure as a Service)) 및 배치 모델(예컨대, 개인용 클라우드, 커뮤니티 클라우드, 공공 클라우드, 하이브리드 클라우드 등)로 구성될 수 있다.
클라우드 컴퓨팅 환경에서, 테넌트(tenant)는 클라우드 서비스 제공자가 운영하는 데이터센터에 배포된 하나 이상의 가상 머신(VM)에 액세스할 수 있는 권한을 가진 사용자, 회사, 부서 또는 기타 엔티티를 포함할 수 있다. 테넌트가 VM을 데이터센터에서 호스팅하기를 원할 때 종종 테넌트는 일반적으로 많은 수의 VM이 생성되고 호스팅되기를 원한다. 테넌트가 이러한 모든 VM을 테넌트로부터 데이터센터로 생성하여 전송하는 경우 대규모 네트워크 트래픽과 컴퓨팅 리소스가 필요할 것이다. 그러나 론칭될 VM의 대다수는 거의 또는 사실상 동일할 것이다. 따라서 어떤 상황에서는 템플릿이 데이터센터에 제공되어 데이터센터가 사실상 동일한 VM을 다수 생성할 수 있다.
데이터센터의 테넌트가 데이터센터의 직원에게 제한된 신뢰를 갖는 컴퓨팅 환경에서, VM은 때때로 똑같이 암호화된 템플릿으로부터 암호화된 형식으로 생성되어야 한다. 템플릿을 사용한 VM 생성은 일반적으로 템플릿의 가상 하드 드라이브(virtual hard drive: VHD) 사본을 생성하는 것과 관련되지만, 암호화 위생(cryptographic hygiene)을 위해 모든 VHD는 상이한 키를 사용하여 암호화된다.
본 명세서에서 청구된 주제는 임의의 단점을 해결하거나 전술한 것과 같은 환경에서만 동작하는 실시예에 제한되지 않는다. 오히려, 본 배경기술은 여기에 기술된 일부 실시예가 실시될 수 있는 하나의 예시적인 기술 영역을 설명하기 위해 제공된다.
본 명세서에 설명된 일 실시예는 컴퓨팅 환경에서 실행될 수 있는 방법을 포함한다. 방법은 잠재적으로 안전하지 않은 환경에서 안전한 방식으로 머신을 부팅하는 단계를 포함한다. 방법은 타겟 머신이 부트 프로세스를 시작하는 단계를 포함한다. 방법은 타겟 머신이 프로비저닝 데이터(provisioning data)가 부팅을 계속하기 위해서 필요한지를 판정하는 단계를 더 포함한다. 타겟 머신은 프로비저닝 데이터를 획득하기 위해 안전한 인프라에 접속한다. 타겟 머신은 안전한 인프라에 의해 검증될 수 있는 신원 주장(identity claim)을 제공한다. 안전한 인프라가 신원 주장을 검증한 결과로서, 타겟 머신은 타겟 머신에 대해 봉인된 키를 수립하라는 요청을 안전한 인프라로부터 수신한다. 타겟 머신은 수립된 키를 안전한 인프라에 제공한다. 타겟 머신은 안전한 인프라로부터 프로비저닝 데이터를 수신한다. 프로비저닝 데이터는 수립된 키에 대해 암호화된다. 타겟 머신은 암호화된 프로비저닝 데이터를 해독하여 부팅을 완료하기 위해서 프로비저닝 데이터를 사용한다.
본 요약은 하기의 상세한 설명에서 더 자세히 설명되는 단순화된 형태의 개념을 소개하기 위해 제공된다. 본 요약은 청구된 주제의 주요 특징이나 필수 기능을 식별하기 위한 것이 아니며 청구된 주제의 범위를 결정하는 데 도움을 주기 위한 것이 아니다.
추가적인 특징 및 이점은 하기의 상세한 설명에서 설명될 것이며, 부분적으로는 상세한 설명으로부터 명백해질 것이거나 또는 본 명세서의 교시의 실행에 의해 습득될 수 있다. 본 발명의 특징 및 이점은 특히 첨부된 청구 범위에서 지적 된 수단 및 조합에 의해 실현되고 획득될 수 있다. 본 발명의 특징은 하기의 상세한 설명 및 첨부된 청구 범위로부터 더욱 완전히 명백해질 것이고, 또는 후술되는 본 발명의 실시에 의해 학습될 수 있을 것이다.
상기 언급된 이점 및 다른 이점 및 특징이 획득될 수 있는 방식을 설명하기 위해, 앞서 간략하게 기술된 주제에 대한보다 구체적인 설명은 첨부된 도면에 도시된 특정 실시예를 참조하여 설명될 것이다. 이들 도면은 단지 전형적인 실시예를 도시하고 범위를 제한하는 것으로 간주되지 않는다는 것을 이해하면서, 실시예는 첨부된 도면의 사용을 통해 추가적인 특이성 및 세부 사항으로 기술되고 설명될 것이다.
도 1은 가상 머신을 완전히 론칭하기 전에 키 갱신(rekeying) 동작을 수행하는 시스템을 도시한다.
도 2는 하이 레벨 컴포넌트 아키텍처를 도시한다.
도 3은 키 갱신 동작을 수행하는 시스템의 상세한 예시를 도시한다.
도 4는 잠재적으로 안전하지 않은 환경에서 안전한 방식으로 머신을 부팅하는 방법을 도시한다.
이제 도 1을 참조하면, 본 명세서에 설명된 일부 실시예는 가상 머신(VM)(102)을 완전히 론칭하기 전에 안전한 방식으로 키 갱신(rekeying) 동작을 수행하는 방법을 구현한다. 일부 실시예에서, 이는 템플릿(104)으로부터 생성된 암호화된 VM(102)을, 템플릿이 템플릿의 가상 하드 드라이브(VHD)(108)에서 수행되는 볼륨 암호화(volume encryption) 방법에 의해 암호화되는 호스트(106)에 배치함으로써 달성될 수 있다. 암호화된 VM(102) 사본은 호스트(106)에 제공되며, 초기화 관리자(110)를 포함한다. 초기화 관리자(110)는, 예를 들어, 워싱턴 주의 레드먼드에 소재한 Microsoft 사로부터 이용가능한 실행가능한 부트 관리자 소프트웨어와 같은 기술을 사용하여 구현될 수 있다.
초기화 관리자(110)가 실행된다. 초기화 관리자(110)는 고유 키를 갖는 VM(102)이 생성되도록 VHD(108)를 해독하고 VHD(108)를 새로운 키(112)로 재암호화 할 수 있다. 그 후, VM(102)은 호스트(106)에서 완전히 론칭될 수 있다. 새로운 키(112)는 (예를 들어, 초기화 관리자(110) 내의 것들과 같은) VM(102)에 제공된 수단(instrumentalities)을 사용하여 로컬로 생성될 수 있거나, 키 분배 서비스(Key Distribution Service: KDS)(114)와 같은 외부 소스로부터 획득될 수 있다.
다른 실시예에서, VM(102)은 암호화되지 않은 VM일 수 있다. 이러한 경우에, VM(102)에 대해 측정치(예컨대, 해시(hash))가 생성될 수 있다. VM(102)은 호스트(106)에 배치될 수 있다. VM(102)은 또한 이러한 실시예에서 초기화 관리자(110)를 포함한다. 초기화 관리자(110)가 실행될 수 있다. 그 후, 초기화 관리자(110)는 VM(102)의 VHD(108)를 적절한, 그리고 경우에 따라서 고유 키(112)로 암호화할 수 있다. 일부 실시예에서, VM(102)이 변경되거나 손상되지 않았음을 보장하기 위해 호스트(106)는 VM(102)의 해시를 계산함으로써 VM(102)의 해시가 이전에 계산되고 제공된 해시와 매칭하는지 여부를 판정하여 VM(102)을 검증할 수 있다.
가상 머신 및 물리적 머신 모두에 대해 머신 보호를 위한 동일한 원칙 및 요건이 존재하며 동일한 구조적 원칙이 적용 가능하다. 민감한 데이터가 암호화되는 머신은 본 명세서에서 보호된 머신으로 지칭된다.
보호된 머신은 민감한 데이터가 암호화되어 있고, 휴식 및 전송 중에 암호화 된 상태로 유지된다. 보호된 머신의 데이터는 보호 시스템의 신뢰 영역 내에서 해독된다. 구현예뿐만 아니라 머신 유형(즉, 가상 또는 물리적)에 따라, 그러한 경계는 보호된 머신 자체일 수도 있고 가상 머신의 하이퍼바이저(hypervisor) 또는 호스트 운영 체제에 속한 것과 같은 부가 서비스를 포함할 수도 있다.
보호된 머신은 프로비저닝 또는 동작 중 하나의 상태로 존재하는 것으로 설명된다. 보호된 머신은 외부 서비스와 상호동작하거나, 보호된 데이터를 수신하거나, 동작하도록 만드는 데 필요한 프로세스를 수행하는 동안 프로비저닝 상태에 있다. 보호된 머신이 성공적으로 프로비저닝되면 예상되는 기능 및 서비스를 제공하는 동작 상태가 된다.
대부분의 경우 프로비저닝 상태를 특징짓는 프로비저닝 동작은 초기 머신 설정 동안에 한 번만 발생한다. 이러한 유형의 동작의 예시로는 고유한 컴퓨터 인스턴스를 설정하는 데 필요한 머신 이름, 주소 또는 ID에 대한 변경일 수 있다. 이러한 경우는 종종 발생할 수 있지만 반드시 그렇지 않을 수도 있다. 예를 들어, 스타트-업 시에 또는 일정한 간격으로 보호된 머신이 일부 데이터를 필요로하는 경우 머신이 반복적으로 프로비저닝되어야 할 수도 있다.
보호된 머신의 프로비저닝 아키텍처가 본 명세서에 설명된다. 실시예는 물리적 머신 및 가상 머신을 지원하는 다양한 구현예를 지원할 수 있다. 또한 다양한 동작 기술의 범위가 구현예에 따라 다를 수 있다. 여기에는 TPM(Trusted Platform Module)칩과 그 버전의 존재 여부, 펌웨어 유형 및 가상 머신을 기본으로 하는 하이퍼바이저 기능이 포함된다.
구현예들 사이에 다양할 수 있는 방대한 보호된 머신 동작 기술이 구현될 수 있다. 예를 들어, TPM 칩이나 HSM(Hardware Security Modules)과 같은 특수한 하드웨어가 필요한 경우도 있고, 그렇지 않은 경우도 있다. 구현예에 따라 시스템 운영자 및 관리자뿐만 아니라 시스템 서비스에 대한 다양한 수준의 신뢰가 필요할 수 있다.
본 명세서의 설명은 두 가지 주요 섹션으로 구성된다. 첫 번째 섹션에서는 보호된 머신에 대한 고급 아키텍처가 제공된다. 두 번째 섹션에서, 구체적인 실시예가 설명된다.
섹션 1: 하이 레벨 아키텍처
보호된 머신
보호된 머신을 프로비저닝하는 데 사용되는 아키텍처가 본 명세서에 설명된다. 보호된 머신의 한 예시로 전체 볼륨 암호화 소프트웨어를 사용하여 디스크 볼륨이 암호화된 시스템이 있다. 예를 들어, 실시예는 워싱턴 주의 레드먼드에 소재한 Microsoft 사로부터 이용가능한 BitLocker를 사용할 수 있다. 보호된 머신은 호환 가능한 신뢰 측정 세트를 제공하는 환경 내에서 동작한다.
많은 경우에, 보호된 머신은 키 보호를 보장하고 특정 시스템 상태에 대한 보호를 적용하기 위해 가상 시스템이 배치된 호스트 시스템의 게스트 가상 시스템 및/또는 물리적 TPM에 특정된 가상 TPM에 의존할 수 있다. 많은 경우에 TPM을 사용하는 것이 바람직할 수 있지만 반드시 필요한 것은 아니다. 측정을 지원하지 않는 환경은 동일한 방식으로 사용자가 신뢰할 수 있으며, 해당 환경이 적절하게 구현되고 동작되는 경우 물리적 TPM을 사용하는 환경만큼 신뢰할 수 있다.
신뢰 모델 및 경계
각 보호된 머신은 그 무결성을 신뢰할 수 있는 방식으로 생성되고 동작된다. 이는 머신을 호스팅하는 환경이 양호하게 정의된 채널을 통해서 보호된 머신과 상호동작할 수 있음을 의미한다. 환경이 보호된 머신을 포함할 수 있는 모든 영역이 신뢰되며 이들의 집합은 보호된 머신의 신뢰 모델을 나타낸다.
각 환경마다 약간 다른 신뢰 모델이 있을 수 있으며, 실제로 같은 환경에 서로 상이한 유형의 보호된 머신이 상이한 신뢰 모델을 가질 수 있다. 아키텍처 전반에서 컴포넌트는 신뢰할 수 있는 컴포넌트와 그렇지 않은 컴포넌트로 구분된다. 신뢰할 수 있는 컴포넌트는 보호된 머신의 신뢰 영역 내에 있다고 칭해진다
아키텍처
본 섹션은 보호된 머신을 프로비저닝하는 데 사용되는 하이 레벨 개념 컴포넌트 아키텍처에 대해 설명한다. 이러한 아키텍처는 다양한 컴포넌트를 사용하여 다양한 조합으로 구현될 수 있다. 이후 섹션에서는 이러한 패턴을 구현하는 특정 구현 아키텍처에 대해 설명한다.
하이 레벨 컴포넌트 아키텍처가 도 2에 도시된다. 도시된 예시에서 보호된 머신을 프로비저닝하는 것은 패브릭 컨트롤러(202)를 포함하는 컴퓨팅 패브릭 내에서 발생한다. 패브릭 컨트롤러(202)는 어떤 이벤트가 발생하는지 뿐만 아니라 그러한 이벤트가 언제 발생하는지를 지시한다.
보호된 머신을 지원하는 패브릭은 보호할 가치가 있는 비밀을 안정적이고 안전하게 저장할 수 있는 서비스 또는 컴포넌트를 포함한다. 이 명세서의 목적상 서비스는 보호된 데이터를 액세스하는데 사용되는 키를 관리한다고 가정한다. 일부 구현예에서 이러한 서비스는 보호된 데이터의 전체 콘텐츠를 저장할 수 있다. 개념적 아키텍처(conceptual architecture)에서 이는 키 관리 서비스(204)로서 도시된다. 도 1에 도시된 KDS(114)는 키 관리 서비스의 일 예시이다.
프로비저닝 서비스(206)는 특정 보호된 머신을 프로비저닝하는데 사용되는 데이터를 분배하는 역할을 한다. 분배되는 데이터는 보호된 데이터와 보호되지 않은 데이터가 모두 포함될 수 있다. 프로비저닝 서비스(206)는 다수의 보호된 머신을 동시에 지원하기 위해 자신의 서비스를 제공할 수 있다. 각각의 보호된 머신에 대해, 프로비저닝 서비스(206)는 프로비저닝 에이전트(208)라고 칭해지는 컴포넌트와 상호동작한다. 프로비저닝 에이전트(208)의 인스턴스는 보호된 머신 단위로 존재한다.
프로비저닝 서비스(206) 및 프로비저닝 에이전트(208)는 하나 이상의 프로비저닝 채널(210)을 통해 통신한다. 프로비저닝 채널은 단순히 통신 수단이다. 이러한 채널(210)은 프라이버시, 무결성 또는 신뢰성을 제공할 필요가 없다. 도시된 예시에서, 채널(210)은 안전하지 않은 것으로 가정된다. 채널은 네트워크, 공유 메모리, 직렬 포트 또는 디스크 파일과 같은 다양한 메커니즘을 포함할 수 있다. 이러한 채널에 요구되는 낮은 서비스 품질로 인해, 프로비저닝 서비스(206) 및 프로비저닝 에이전트(208)는 필요에 따라 프라이버시, 무결성 및 신뢰성을 추가할 수 있다.
프로비저닝 에이전트(208)는 보호된 머신에 의해 요구되는 모든 작업을 수행할 수 있지만, 추가적인 특수화된 능력을 필요로 하는 특정 시나리오가 있다. 특히 중요한 기능 세트는 일반 템플릿 머신 이미지를 복수의 보호 대상 시스템의 기초로서 사용하는 프로세스를 포함한다. 이를 수용하기 위해, 일부 실시예는 선택적으로 존재할 수 있는 2 개의 추가 컴포넌트를 포함할 수 있다.
템플릿 컴포넌트 중 첫번째는 템플릿 관리자(212)라고 지칭된다. 템플릿 관리자(212)는 템플릿 디스크를 보호된 머신에 대한 특정 타겟 디스크로 변환하는데 필요한 디스크 이미지상의 모든 동작을 수행하는 것을 담당한다. 예를 들어, 템플릿 디스크가 암호화되고 서명되면, 템플릿 관리자(212)는 프로비저닝 에이전트(208)로부터 하나 이상의 키를 수신하고, 서명을 검증하고 필요에 따라 암호화를 업데이트할 것이다.
일단 템플릿 관리자(212)가 머신 특정 디스크 이미지를 생성하는 데 필요한 작업을 완료하면, 보호된 머신이 실행될 수 있지만 여전히 운영 체제 또는 애플리케이션 특정 사용자 정의(customization)가 요구될 가능성이 높다. 타겟 이미지 어댑터(214)라고 하는 최종 컴포넌트가 프로비저닝 에이전트(208)로부터 보호된 데이터를 수신하고 이들 데이터를 사용하여 보호된 머신 디스크 이미지의 사용자 정의를 수행할 수 있다.
보호된 머신은 일반적으로 하나 이상의 암호화된 볼륨을 포함한다. 이러한 볼륨은, 예를 들어, 워싱턴 주의 레드먼드에 소재한 Microsoft사에 의해 제공되는 BitLocker를 사용하여 암호화될 수 있다. OS를 포함하는 볼륨이 암호화된다. OS를 부팅하기 위해, 적절한 키를 사용하여 볼륨이 잠금해제된다. 보호된 머신 내에 추가적인 암호화된 볼륨이 존재할 수 있으며, 이러한 암호화된 볼륨은 OS 볼륨에 저장된 키를 사용하여 잠금해제될 수 있다. 보호된 머신은 암호화되지 않은 볼륨을 포함할 수도 있다.
일단 생성되면, 보호된 머신은 그 수명기간 동안 동작된다. 보호된 머신의 동작은 정확한 시간에 해당 머신에 대해 특정 비밀을 관리하고 도입해야 한다. 이러한 동작은 반복되는 프로비저닝 동작으로 간주되며, 올바른 아키텍처 컴포넌트가 이러한 작업을 수행할 것이라고 가정된다.
키 관리 및 분배
보호된 머신 내에 존재하거나 이러한 머신을 프로비저닝하기 위한 시크릿 데이터는 다양한 크기와 유형을 취할 수 있다. 일부 경우에, 이러한 데이터는 암호처럼 작은 항목일 수도 있으며, 가상 디스크 내의 암호화된 볼륨과 같이 크고 복잡한 구조일 수도 있다.
보호 목표를 달성하기 위해, 아키텍처는 보호된 데이터 그 자체가 아니라 데이터의 보호를 참조할 것이다. 보호된 데이터에는 종종 하기과 같은 특징을 갖는다:
ㆍ인증됨 - 보호된 데이터는 이러한 데이터의 변경이 감지될 수 있는 방식으로 인증될 수 있다.
ㆍ암호화됨 - 보호된 데이터는 또한 민감한 정보일 수 있으며, 인증되 지 않은 공개를 방지하기 위해 암호화될 수 있다.
데이터 아이템을 인증하고 암호화하는데 사용되는 키는 일부 키 관리 서비스(204)를 통해 관리될 것이다. 보호된 데이터 아이템에 대한 액세스를 필요로 하는 패브릭 서비스와 같은 엔티티는 키 관리 서비스(204)에 적절한 키를 요청할 것이다. 신뢰할 수 있는 환경 하에서만 그러한 키를 배포하는 것은 키 관리 서비스(204)의 책임이다.
패브릭 컨트롤러
보호된 머신은 머신 자체의 외부에 있는 시스템 동작의 모든 양태를 담당하는 관리 소프트웨어를 사용하여 시스템 그룹 내에서 관리된다. 이러한 머신의 집합은 일반적으로 본 명세서에서 패브릭으로 지칭되고, 패브릭을 제어하는 소프트웨어 시스템은 패브릭 컨트롤러(202)로 지칭된다.
패브릭 관리는 복수의 컴포넌트로 분할될 수 있다. 이러한 컴포넌트의 일부는 관리된 머신 간에 동작하는 서비스일 수 있으나, 다른 컴포넌트들은 단일 호스트에서 동작하는 에이전트와 같이 개별적인 머신에 특정될 수 있다.
프로비저닝 서비스
패브릭은 프로비저닝 프로세스를 조율할 뿐만 아니라 그 수명기간 동안 머신에 비밀을 제공할 수 있는 서비스를 유지한다. 이러한 서비스는 프로비저닝 서비스(206)라고 지칭되며, 이는 호스터(hoster)에 의해 소유되고 동작되는 전체 패브릭의 일부이다. 프로비저닝 서비스(206)는 보호된 프로비저닝 데이터(116)를 획득하고 타겟 OS 인스턴스로 이러한 데이터를 프로비저닝 에이전트(208)라고 지칭되는 다른 컴포넌트에 전달한다.
프로비저닝 서비스(206)는 하나 이상의 보호된 머신에 대해 보호된 프로비저닝 데이터(116)에 액세스할 것으로 예상된다. 프로비저닝 서비스(206)는 프로비저닝 서비스(206)가 처리하는 그러한 머신 각각의 신뢰 경계 내에 있기 때문에, 복수의 머신에 속하는 데이터 사이에 정확한 분리를 유지할 책임이 있다.
필요한 경우에(예를 들어, 통신 제한 때문에), 프로비저닝 서비스(206)는 신뢰된 부분과 신뢰되지 않은 부분으로 분리될 수 있다. 이러한 작업이 완료되면, 신뢰되지 않은 부분은 보호된 데이터의 일반 텍스트에 액세스할 수 없으며 그러한 데이터가 잘못된 타겟에 공개될 수 없게 한다.
프로비저닝 에이전트
프로비저닝 에이전트(208)는 신뢰 경계 내에서 실행되고 프로비저닝 동작을 조율할 책임이 있는 특정 컴포넌트이다. 프로비저닝 에이전트(208)는 프로비저닝이 요구될 때마다 실행될 수 있다. 일부 예시는 하기를 포함할 수 있다.
ㆍ 타겟 OS 인스턴트에 의해 동작에 필요한 고유하고 비공개인 데이터를 획득하기 위해서, 초기 부팅 동안에 한 번만.
ㆍ 각 부팅 시에. 예를 들어, OS 인스턴스 자체 내에 안전하게 저장될 수 없는 크리덴셜(credential) 또는 키를 획득하기 위해서.
프로비저닝 에이전트(208)는 컴포넌트 쌍에 의해 정의된 프로토콜 및 데이터 교환 방법을 사용하여 프로비저닝 서비스(206)와 상호동작한다. 프로비저닝 에이전트(208)는 보호된 머신의 신뢰 경계 내에 존재하고, 일반적으로 프로비저닝 서비스(206)로부터 전달되는 민감한 정보에 액세스할 것이다. 예를 들어, 프로비저닝 서비스(206)와의 통신의 세부 사항으로 인해 필요할 경우, 프로비저닝 에이전트(208)는 신뢰된 컴포넌트와 신뢰되지 않은 컴포넌트로 분리될 수 있다. 이러한 작업이 완료되면, 신뢰되지 않은 컴포넌트는 보호된 머신의 신뢰 경계 외부에 존재하며, 보호된 데이터가 노출되지 않는다. 주어진 프로비저닝 에이전트(208) 인스턴스는 단일 프로비저닝 서비스(206)와만 상호동작할 것으로 일반적으로 예상된다.
프로비저닝 에이전트(208)가 동작을 완료하면, 타겟 보호된 머신(예를 들어,도 1의 VM(102))이 부팅될 수 있다. 타겟이 직접 부팅할 수 있거나, 타겟이 재부팅될 필요가 있지만 장애 또는 부팅가능한 보호된 머신으로 종료하는 것이 프로비저닝 에이전트(208)의 책임인 경우가 있을 수 있다. 프로비저닝 에이전트(208)는 모든 보호된 머신의 스타트업 시에 실행될 수 있다. 예를 들어, 시스템을 시작할 때마다 일정 수준의 프로비저닝이 필요한 경우가 있을 수 있다. 특정 예시는 시작할 때마다 시스템으로 전달되는 디스크 암호화 키일 수 있다.
프로비저닝 채널
프로비저닝 서비스(206) 및 프로비저닝 에이전트(208)는 서로 통신한다. 일부 구현예에서, 이들은 실제로 동일한 프로그램의 부분일 수 있고, 통신은 내부 데이터 구조의 형태일 수 있다. 다른 경우에, 두 컴포넌트가 상이한 프로세스 또는 상이한 머신에서 실행될 수 있다. 이러한 컴포넌트의 정확한 구현은 통신을 허용하는 하나 이상의 채널에 대한 요건을 지시할 것이다.
프로비저닝 채널이 통신 외의 특정한 기능이 없고 신뢰할 수 있는 통신이 없는 경우, 다양한 상이한 채널이 존재할 수 있다. 가능한 몇 가지 예시는 하기와 같다:
ㆍ 동일한 실행가능한 파일의 컴포넌트 사이의 메모리 데이터 구조.
ㆍ 호스트 간의 네트워크 기반 전송
ㆍ 동일한 호스트의 루트에서 실행되는 가상 머신과 서비스 사이의 특화된 전송
템플릿 관리자
보호된 머신의 수명주기와 관련되어 내재된 문제 중 하나는 단순히 보호된 머신을 생성하는 것이다. 일부 경우에, 신뢰된 관리자가 엄격하게 제어되는 조건에서 보호된 시스템을 생성할 것이다. 이러한 경우 설치를 위한 하드웨어, 환경 및 소스 매체가 신뢰할 수 있다는 높은 수준의 확신이 존재한다. 그러나, 대부분의 경우, 새로운 보호된 머신의 생성은 기존 템플릿(예를 들어, 도 1의 템플릿(104))에서 발생한다. 템플릿은 실행중인 시스템의 일반화된 사본을 포함한다. 새로운 보호된 머신을 생성하기 위해, 일반화된 시스템의 사본이 만들어지며, 이러한 사본은 고유한 타겟 인스턴스(예를 들어, VM(102))를 생성하도록 특수화된다.
프로비저닝 프로세스 내에서, 머신 템플릿을 고유 타겟으로 변환하는 것은 템플릿 관리자(212)의 작업이다. 템플릿 내의 소스 디스크(예를 들어, VHD(108))는 암호화될 수 있거나 어떤 형태의 무결성 검증을 가질 수 있다. 템플릿 관리자(212)는 신뢰 경계 내에서 실행되어 소스 템플릿을 검증하고 임의의 필요한 암호화를 시행한다.
템플릿 관리자(212)는 프로비저닝 에이전트(208)로부터 호출되며, 보호된 머신의 수명주기 동안에 템플릿 관리자(212)가 최대 한번 호출될 것으로 예상된다. 프로비저닝 서비스(206)는 언제 템플릿 관리자(212)를 호출할지를 결정하기 위한 적절한 제어를 가져야 한다.
타겟 이미지 어댑터
템플릿 관리자(212)가 고유한 타겟 보호된 머신 이미지를 생성하면, 이미지 자체가 동작할 수 있도록 변경이 필요할 수 있다. 예를 들어, 일반화된 운영 체제 이미지에는 고유한 운영 체제 이미지로서 동작할 수 있는 일부 설정 그룹이 필요로 할 수 있다. 워싱턴 주의 레드먼드에 소재하는 Microsoft 사로부터 이용가능한 Windows에서는 이것이 특수화(specialization)라고 알려진 프로세스이다. 타겟 이미지 어댑터(214)는 보호된 머신 이미지에 인스턴스-특정 데이터를 주입하는 역할을 한다.
프로비저닝 에이전트(208)가 템플릿 관리자(212)가 성공적으로 실행되었음을 검증하면, 타겟 디스크 볼륨은 민감한 머신 특정 데이터의 지속성을 허용하기 위해 필요한 레벨의 보안을 갖는다고 결론 내린다. 프로비저닝 에이전트(208)는 이러한 "픽스-업(fix-up)" 유형의 동작을 담당하는 타겟 이미지 어댑터(214)를 실행한다.
타겟 이미지 어댑터(214)는 보호된 머신의 신뢰 경계 내에서 실행되어 개인 키 및 관리자 크리덴셜과 같은 민감한 데이터를 처리한다. 어댑터 기능은 타겟 OS 유형 및 수행해야 하는 구성의 특성에 따라 달라진다. 예를 들어, 데이터가 타겟 OS 볼륨에 기록되어 특수화를 허용할 수 있다. 타겟 이미지 어댑터(214)는, 예를 들어, 복수의 부분이 머신의 부팅 주기의 상이한 포인트에서 실행될 필요가 있는 경우, 복수의 부분으로 분할될 수 있다. 이러한 경우, 타겟 이미지 어댑터(214)의 모든 부분이 보호된 머신의 신뢰 경계 내에서 실행된다고 가정된다.
섹션 2: 보호된 가상 머신의 프로비저닝
실시예는 보호된 물리적 또는 가상 머신의 생성, 이동 및 동작을 가능하게 하는 서비스 및 컴포넌트의 집합을 포함할 수 있다.
실시예는 패브릭 관리자(254)(즉, SC-VMM) 또는 로컬 가상화 하이퍼바이저(215) 호스트 관리자도 가상 머신의 보호를 손상시키거나 그 머신의 시크릿 데이터에 액세스할 수 없는 곳에 구현될 수 있다.
보호된 가상 머신은 운영 체제의 하나 이상의 기술 및 특징을 사용하여 안전하게 동작할 수 있다.
기초 컴포넌트(Foundation Components)
워싱턴 주의 레드먼드에 소재하는 Microsoft 사로부터 이용가능한 Hyper-V를 사용하여 구현된 실시예에서 전체적으로 보호되는 VM 시나리오를 구성하는데 사용될 수 있는 복수의 컴포넌트는 하기와 같다:
ㆍ 가상 안전 모드(Virtual Secure Mode: VSM) - 높은 가치의 데이터를 보호하는 데 사용되는 Hyper-V(또는 다른 하이퍼바이저) 강제 메모리 격리 모델.
ㆍ Hyper-V 코드 무결성(Hyper-V Code Integrity: HVCI) - 루트 파티션의 커널 모드에서 실행될 수 있는 코드를 제어하는 Hyper-V(또는 다른 하이퍼바이저)에 의해 시행되는 정책.
ㆍ 신뢰된 플랫폼 모듈(Trusted Platform Module: TPM) - 플랫폼 상태를 측정하고 비밀을 보호하는 데 사용될 수 있는 하드웨어 또는 펌웨어로 구현된 격리된 보안 모듈.
ㆍ 원격 인증(Remote Attestation) - TPM을 사용하여 암호로 인증된 방식으로 플랫폼의 상태를 보고한 다음 해당 플랫폼의 일부 상태 또는 양호성(health)을 확인하는 프로세스.
ㆍ 양호성 인증서(Health Certificate) - 패브릭에 허용되는 측정 방법에 의해 호스트가 양호하다고 알려진 경우 호스트에 발행되는 인증서.
ㆍ 키 분배 서비스(Key Distribution Service: KDS) - 플랫폼이 그 양호성을 증명할 수 있는 경우 그 플랫폼에 키를 배포하는 서비스.
해결책 검토(Solution Walkthrough )
이제, 구체적인 예시가 도 3에 도시된다. 예시적인 VM(102)(또는 일부 실시예에서는, 물리적 머신)에 대한 보호의 기본 단위는 VHD(108)와 같은 암호화된 디스크 볼륨일 수 있다. 보호된 데이터는 가상 디스크(VHDX) 내의 볼륨에 저장되고 해당 볼륨은 전체 볼륨 암호화(Full Volume Encryption: FVE)를 사용하여 암호화된다. 주어진 가상 머신은 이러한 방식으로 암호화된 가상 디스크 볼륨 세트를 포함할 수 있다. 보호된 VM(102)은 FVE로 암호화된 운영 체제(OS) 볼륨을 갖는다. FVE는 VM 운영 체제의 부팅 볼륨이 암호화되지 않는 요건을 부과하지만, 이러한 볼륨의 콘텐츠는 무결성이 검증될 것이다.
FVE-보호된 볼륨은 여러 가지 상이한 키 유형을 사용하여 잠금해제되도록 구성될 수 있다. 일부 키는 사용자가 암호 또는 PIN을 입력하도록 요구한다. 다른 유형의 키는 다른 볼륨의 보호된 데이터에 저장되거나 유도된 키가 필요할 수 있다. 또 다른 유형의 키는 USB 썸(thumb) 드라이브와 같은 외부 장치로부터 판독될 수 있다. 이러한 키 중 일부는 암호화된 볼륨이 데이터 볼륨을 나타내는 경우 서버 사용에 적합하다. 예를 들어, 실행중인 OS의 저장소에서 유도된 키가 머신의 데이터 볼륨을 잠금해제하는 것으로 충분하다.
상기의 키는 일반적으로 OS 볼륨과, 호스팅된 클라우드 환경의 OS 볼륨을 잠금해제하는 데 적합하지 않다. 그 이유는 모든 키가 이미 실행중인 OS를 필요로 하거나(잠긴 볼륨이 OS 볼륨인 경우 불가능함), 사용자 입력이 필요하기 때문이다. FVE는 또한 OS 볼륨을 특정 컴퓨터 시스템에 봉인하고 부팅하는 동안 자동으로 잠금해제할 수 있도록 OS 볼륨 잠금해제 키를 보호하기 위해 하드웨어(251)에서 실행되는 신뢰된 플랫폼 모듈 또는 TPM(261)의 사용을 지원한다.
일부 실시예에서, VM(102)은 가상 하드웨어의 일부로서 가상 TPM(vTPM)(220)을 가질 수 있다. 이는 TPM 기반 FVE 보호기가 VM(102)의 OS 볼륨상에서 사용될 수 있게 한다. 일부 양태에서, FVE 볼륨을 보호하기 위한 가상 TPM 또는 vTPM의 결합(incorporation)은 보호 문제를 단순히 이동시킨다. 이제는 FVE 키를 보호하는 대신 vTPM의 차폐된(shielded) 개인 데이터를 공개 및 변조하지 못하도록 보호해야 한다. VM 용 가상 하드웨어는 루트 파티션 내에서 구현될 수 있다. 이는 일반적으로 머신의 루트 파티션 관리자가 가상 하드웨어에 액세스하여 그 안에 저장된 데이터를 공개하거나 변경할 수 있음을 의미한다. 그러나, 이러한 상황은 로컬 관리자가 보호된 VM을 손상시키지 못하도록 하는 목표와 양립할 수 없다.
일부 실시예는 가상 보안 모드 또는 VSM(266)을 구현한다. 간단히 말해, VSM은 하드웨어 메모리 매핑을 사용하여 단일 파티션 내에서 가상 신뢰 레벨 또는 단순히 VTL이라고 지칭되는 상이한 신뢰 레벨을 생성한다. 파티션 내의 코드는 특정 가상화 하이퍼바이저(215) 호출을 사용하여 VTL에 진입하거나 종료할 수 있다. VTL에 진입하거나 종료하는 것은 가상화 하이퍼바이저(215)가 파티션 내에서 실행되는 코드에 액세스할 수 있는 메모리 매핑을 변경하게 한다.
VSM은 루트 파티션에서 실행되는 코드가 특정 보호된 데이터에 액세스할 수없는 새로운 기능을 생성한다. 이는 현재 제한이 없는 커널 모드에서 실행중인 코드에도 적용된다. 상승된(elevated) VTL에서 매우 적은 양의 코드만이 실행될 수 있다. 이렇게 신뢰된 코드(흔히 "VSM 코드"라고 지칭됨)는 제삼자가 이를 확장할 수 없도록 제어될 수 있다.
일부 실시예에서, 새로운 vTPM(220) 하드웨어는 VSM(266) 코드로 구현된다. 이것은 코드가 관리자 권한을 갖고 실행되는 경우 및 코드가 커널 모드에서 실행되는 경우에도 vTPM(220)의 차폐된 비밀 부분을 포함하는 데이터가 루트 권한 코드의 대부분에 액세스할 수 없다는 것을 의미한다. VSM(266) 코드는 보호된 VM을 관리하는 신뢰 경계 내에 존재하는 것으로 간주된다.
VSM(266)은 신뢰된 코드 및 데이터 관리를 위해 크게 향상된 경계를 제공할 수 있지만 공격에는 영향을 받지 않는다. 공격을 막는 한 가지 방법은 코드 무결성(Code Integrity) 또는 CI 제어를 시스템에 적용하는 것이다. CI 제어는 CI 정책이라고 하는 특정 정책을 사용하여 시스템에서 실행될 수 있는 코드를 결정한다. 하지만 시스템의 루트 파티션에 있는 CI 정책은 여전히 공격에 취약하다. 실시예는 하이퍼바이저(215) 자체로부터 커널 모드 루트 파티션 컴포넌트에 대한 CI 정책 실행을 가능하게 하는 보안 특성을 구현할 수 있다. 이러한 특성은 CI 정책의 런타임 변경을 방해하며, 워싱턴 주의 레드먼드에 소재하는 Microsoft 사에서 제공하는 솔루션에서는 Hyper-V 코드 무결성(Hyper- V Code Integrity) 또는 HVCI라고 칭해진다. 일 예시가 CI(263)에서 도시된다.
CI 정책은 시스템 런타임 동안에는 잘 보호될 수 있지만, 오프라인 공격에 여전히 취약하다. 시스템이 종료되면, 머신의 저장소에 액세스할 수 있는 공격자가 CI(263) 및 다른 정책을 제어하는 정책을 변경한 다음 손상된 상태로 시스템을 재시작할 수 있다. 그러면 이후의 온라인 공격이 허용될 수 있다. 이러한 유형의 공격을 경감시키기 위해, 실시예는 보호된 데이터를 배치하기 전에 손상된 호스트를 검출할 수있게 하는 머신의 양호성에 대한 추가적인 하드웨어에 의존한 측정 방법을 구현할 수도 있다. 이러한 측정 방법은 원격 인증 과정에서 머신의 물리적 TPM(261)을 사용한다.
전술한 특성은 중요한 심층 방어 전략(defense-in-depth strategy)을 구현하는 수단과 보호된 VM을 프로비저닝하고 동작시키는데 필요한 신뢰 경계를 최소화하는 수단을 설명한다. 이러한 기능의 모두가 보호된 VM 기능이 존재하도록 기술적으로 요구되는 것은 아니다.
보호된 VM에 대한 신뢰 경계
보호된 VM(102)의 소유자는 VM(102)을 동작시키고 생성할 가능성이 있는 패브릭의 키 분배 서비스(KDS)(114)만을 명시적으로 신뢰한다. 소유자는 KDS(114)가 VM(102)을 생성 및/또는 동작시키는데 필요한 비밀의 보호자(guardian)가 되게함으로써 이러한 신뢰를 명시적으로 표현한다. 패브릭 내에서 KDS(114)는 패브릭 정책을 준수하는 조건하에서 키를 분배하는 능력을 갖는다.
보호된 VM(102)을 생성하고 동작시키기 위해서, 하나 이상의 비밀이 호스트(106)에서 이용가능하다. 이러한 비밀은 vTPM(220)뿐만 아니라 가능하면 볼륨 암호화 키 또는 템플릿(104)으로부터 새로운 VM을 생성하는데 필요한 다른 데이터를 포함한다. 보호된 데이터는 호스트(106)에 전달되어 호스트의 VSM(265) 내에서 해독된다. 호스트(106)상의 VSM(265) 내의 코드는 KDS(114)에 키를 요청하고, KDS(114)가 호스트(106)가 양호하다고 간주하면 이러한 키가 전달된다. 인증된 패브릭 호스트의 VSM(265) 내의 코드는 해당 호스트(106)에서 실행중인 보호된 VM의 신뢰 경계 내에 있는 것으로 간주된다.
보호된 VM(102)은 또한 자신에 대한 신뢰 경계의 일부가 된다. 즉, 보호된 VM(102) 내의 코드는 보호된 VM(102)을 구성하는 보호된 데이터에 액세스한다. 이는 호스트(106)의 VSM(265) 내에서 액세스된 보호된 데이터가 보호된 VM(102) 내에서 노출될 수 있다는 것을 의미한다. 그러나, VSM에 존재하는 VM에 속한 모든 데이터가 VM 내에서 노출될 수 있는 것은 아니다. 예를 들어, pTPM의 차폐 위치가 물리적 시스템에 있지 않기 때문에, vTPM의 차폐 위치는 노출되지 않는다.
일부 보호 데이터는 그를 지원하는 가상화 메커니즘과 같은 적절한 추상화가 존재하는 경우에 VSM(266)으로부터 보호된 VM(102)에 직접 노출될 수 있다. vTPM(220)은 vTPM 콘텐츠가 VSM(266) 내에서 동작하여 기능적 vTPM이 VM(102)에 노출될 수 있게 하는 이러한 유형의 데이터의 일 예시이다. VM(102)은 차폐된 데이터와 같은 vTPM(220) 콘텐츠에 대한 액세스를 지시하지 않는다. 이러한 모델은 물리적 머신의 물리적 TPM과 직접적으로 유사하다.
다른 경우에, 호스트의 VSM(265) 내의 보호된 VM(102)에 대해 이용가능한 보호된 데이터는 가상 하드웨어 등가물을 갖지 않는다. 이러한 경우에, 데이터는 사용되기 위해 VM(102)으로 안전하게 전송된다. 대부분의 프로비저닝 데이터(116)는 이러한 범주에 속하게 된다. 이러한 경우에, 데이터는 호스트의 VSM(265)과 타겟 보호된 VM(102) 사이에서 보호되어, 검출될 수 없는 방식으로 또는 솔루션에 의해 이루어진 무결성 및 프라이버시 보장을 손상시키는 임의의 다른 방식으로 공개되거나 수정될 수 없다.
일부 실시예의 아키텍처의 측면에서, KDS(114), 프로비저닝 서비스(206)의 일부, 프로비저닝 에이전트(208), 템플릿 관리자(212) 및 타겟 어댑터(214)(도 1 참조)는 모두 보호된 VM(102)의 신뢰 경계에 속한다.
보호된 데이터
보호된 VM의 생성 및 동작은 보호된 데이터를 사용한다. 보호된 데이터는 암호화되고 인증되며 솔루션의 정식(formal) 신뢰 경계 내에서 해독되는 일부 데이터 아이템이다. 일부 실시예에서, 보호된 데이터의 각각의 분리된 부분은 현재의 보호 상태를 설명하는 고유한 데이터 구조를 갖는다. 이 구조를 보호 설명자(Protection Descriptor) 또는 PD라고 한다. 보호되는 데이터의 각 부분은, 일부 실시예에서, 본질적인 의미가 없는 옥텟(octet)의 스트림이다. 다양한 컴포넌트 및 프로세스는 해당 용도로 보호된 데이터를 패키징한다.
보호된 VM은 vTPM(220)과 같이 동작 수명 동안 보호된 데이터에 의존할 수 있다. vTPM(220)은 차례대로 VM의 FVE된 OS 볼륨에 대한 암호화 키를 보호하는 데 사용된다. vTPM(220)은 각각의 보호된 VM의 동작 상태의 일부이며, VM 정의(예를 들어, 미국 워싱턴 주의 레드먼드에 소재하는 Microsoft 사에 의해 제공된 가상 머신의 구현예의 경우 .vmcx 파일)에 포함된다.
새로운 보호된 VM(102)이 신뢰된 환경에서 그 소유자에 의해 생성되는 경우, vTPM(220) 외의 어떠한 보호된 데이터도 결코 요구할 수 없다. 이러한 경우, 보호된 VM(102)은 가상화 하이퍼바이저(215)를 실행하는 컴퓨터상에 비어있는(empty) VM으로서 생성된다. 새로운 VM(102)은 연관된 vTPM(220)을 가지며, 소유자는 안전하고 신뢰된 환경에서 새로운 소프트웨어를 VM(102)에 설치한다. 설치 프로세스 자체가 안전하지 않으므로 환경은 안전하고 신뢰된 것이어야 한다.
그러나, 많은 경우 새로운 보호된 VM(102)이 새로운 템플릿(104)으로 시작하고, 템플릿(104)을 특수화하여 별개의 보호된 타겟 VM(102)을 형성함으로써 생성된다. 먼저, 새로운 템플릿 OS가 OS 디스크 상에 배치된다. 템플릿 OS는 일반화된 형식을 가지며, 후에 별개의 OS 인스턴스를 생성하도록 특화되어 있다. 배포 및 특수화 프로세스는 새로운 인스턴스를 구별하는 데 사용되는 일부 프로비저닝 데이터 세트(116)(도 1 참조)가 필요하다. 이러한 프로비저닝 데이터(116)는 일반적으로 컴퓨터 이름 및 관리자 패스워드와 같은 것을 포함한다.
템플릿으로 새로운 VM을 생성할 때 일부 추가적으로 보호된 데이터가 필요하다. 이러한 보호된 데이터는 관리자 암호 또는 기타 특수화 데이터뿐만 아니라 초기 암호화 키(나중에 설명 됨)와 같은 중요한 정보를 포함한다. 일부 실시예에서, 프로비저닝 데이터는 보호된 VM 당 단 한번 생성시에만 사용된다.
보호된 가상 머신 템플릿 기반 프로비저닝 기능
템플릿 OS 디스크로부터 새롭고 별개인 VM(102)을 생성하는 것은 일련의 단계들로 수행된다. 일련의 단계는 구체적인 시나리오에 따라 다를 수 있지만 일반적으로 다음을 포함할 수 있다:
1. 템플릿 OS 볼륨 해독 - OS 볼륨은 잠금해제에 필요한 외부 키를 포함할 수 있다. 그러한 경우, 키는 팩토리로 전달되어 소스 볼륨을 잠금해제하는 데 사용된다.
2. OS 볼륨 재암호화 - 대부분의 경우, 템플릿 OS 볼륨은 동일한 템플릿에서 유도된 모든 디스크에서 동일할 수 있는 암호화 키를 포함하거나, 암호화 키를 포함하지 않는다. 볼륨을 재암호화해야 할 수도 있다.
3. OS 볼륨 인증 - 일부 OS 볼륨은 서명 정보가 수반된다. 서명이 검증되어 템플릿이 변경되지 않았는지 확인한다.
4. 템플릿에 프로비저닝 데이터 매칭 - 소유자는 상이한 템플릿 동작에 사용할 상이한 프로비저닝 데이터를 가질 수 있다. 프로비저닝 데이터는 템플릿에 매칭된다.
5. 프로비저닝 데이터 주입 - 타겟 OS 볼륨이 검증되고 안전하면, 프로비저닝 데이터가 주입된다. 이러한 데이터는 팩토리로 전달된다.
템플릿 디스크 유형
이제 두 가지 템플릿 기반 프로비저닝 시나리오가 설명된다. 이러한 시나리오 모두는 하나 이상의 FVE-암호화된 볼륨을 갖는 보호된 VM(102)을 생성한다. 또한 두 시나리오 모두 보호된 프로비저닝 데이터(116)를 필요로 한다. 시나리오 간의 차이점은 템플릿 가상 디스크의 소스 및 보호에 있다. 두 가지 디스크 시나리오는 다음과 같다:
1) 암호화된 템플릿 - 가상 OS 디스크는 비밀 FVE 키를 사용하여 암호화된 OS 볼륨을 포함한다. 비밀 FVE 키는 보호된 데이터이다.
2) 서명된 템플릿 - 가상 OS 디스크는 암호화된 OS 볼륨을 포함하지만, FVE는 일시 중단되어 볼륨에 액세스하는 데 비밀 키가 요구되지 않는다. 부트 파티션은 무결성 검사를 허용하는 OS 볼륨에 대한 서명 카탈로그를 포함한다.
두 경우 모두 수행되는 VM 팩토리 동작은 부트 디스크의 OS 볼륨에 존재한다. VM(102)은 부가적인 암호화된 볼륨을 포함할 수 있고, 그러한 경우에 템플릿 디스크의 OS 볼륨에 임의의 자동 잠금해제가 설정된다. 일부 실시예에서, VM 팩토리는 데이터 볼륨에 대한 재암호화 동작을 수행하지 않는다.
암호화된 템플릿은 단일 소유자 또는 테넌트에 의해 개인적으로 사용될 수 있으며, 테넌트의 개인 데이터를 포함할 수 있다. VM 팩토리는 이러한 데이터가 공개되지 않도록 보호한다. 서명된 템플릿은 공개되도록 의도되며, 민감한 데이터를 포함하지 않는다. 서명된 템플릿은 서명 카탈로그를 사용하여 인증될 수 있지만 그 안에 포함된 데이터는 자유롭게 공개되어야 한다. 서명된 템플릿은 일반 작업 부하의 유용한 시작점이 된다. 따라서, 예를 들어, 암호화된 템플릿은 테넌트에 의해 직접 제공될 수 있지만, 서명된 템플릿은 일반적으로 템플릿 갤러리에서 모든 테넌트에게 제공될 수 있다.
템플릿 가상 하드 디스크 생성
템플릿에서 보호된 VM을 생성 가능하게 하기 위해, 하나 이상의 템플릿 가상 하드 디스크가 먼저 생성된다. 템플릿 가상 하드 디스크는 보안 환경에서 생성된다. 이는 생성된 프로세스가 보호된 VM에 대해 규정된 신뢰 경계 내에서 보호가 제공되지 않는 데이터를 관리하는 동작에 의존하기 때문이다.
대부분의 경우 템플릿 가상 하드 디스크는 비공개의 암호화된 템플릿이 필요한 테넌트 또는 표준 템플릿을 공개하려는 호스팅 업체 또는 공급 업체가 필요한 테넌트에 의해 생성된다. 이러한 템플릿 디스크는 독립형 보안 컴퓨터에서 생성될 수 있다.
OS 디스크 생성
보호된 각각의 VM은 가상 부트 디스크의 암호화된 OS 볼륨에서 부팅된다. 새로운 OS 템플릿 디스크를 생성하기 위해서 프로세스가 보호되지 않은 새로운 VM으로 시작된다. 템플릿 VM이라고 칭해지는 이러한 새로운 VM은 특별히 새로운 템플릿 OS 디스크를 생성하기 위해 존재한다. 템플릿 VM은 vTPM이 필요하지 않다.
템플릿 VM은 초기에 비어있는 부트 디스크를 포함한다. 새로운 부트 디스크가 만들어지면 운영 체제의 새 사본이 설치된다. 이는 FVE를 지원하는 상업용 에디션일 수 있다. 예를 들어, 일부 실시예는 워싱턴 주의 레드먼드의 Microsoft 사로부터 이용가능한 Windows 8 또는 그 이후 버전을 사용할 수 있다. OS 디스크는 FVE 드라이버 암호화가 활성화되어 있다. 드라이브 암호화는 다음의 매개변수를 사용하여 수행될 수 있다:
1) 암호화는 사용된 공간 만을 암호화하도록 설정될 수 있다. 대부분의 가상 OS 디스크는 다중 드라이브, 내결함성(예컨대, 중복성에 의해서) 디스크이며, 이러한 옵션은 훨씬 빠르며 더 작은 가상 디스크 파일을 생성한다.
2) 키를 파일에 저장한다. 전송 키(Transport Key) 또는 TK에 의해 보호되는 FVE 키는 파일에 저장될 수 있다. 이를 용이하게 하기 위해 추가적인 가상 디스크가 VM에 연결되거나, 키가 임시로 OS 디스크 자체에 저장될 수 있다.
FVE가 OS 볼륨 암호화를 완료하면, 키는 안전한 위치에 저장된다. 키는 상기의 (2)에서 지정된 위치의 파일에 포함된다. 키가 안전한 위치에 저장되면 원래 위치에서 삭제된다.
서명된 템플릿의 경우, 템플릿 생성 프로세스를 사용하여 서명된 템플릿을 작성하면 FVE가 OS 볼륨에서 일시 중단된다. FVE를 일시 중단하면 상기 작성한 키없이 OS 볼륨에 액세스할 수 있다. 상기의 키는 FVE를 일시 중단한 후에는 요구되지 않는다.
OS와 추가 소프트웨어가 설치되고 모든 구성이 완료되면, OS를 일반화해야 한다. 일부 실시예에서, 이는 워싱턴 주의 레드먼드에 소재하는 Microsoft 사로부터 이용가능한 Windows sysprep 유틸리티를 사용하여 달성될 수 있다. 일반화가 완료되면 다음번 부팅시 설치 특수화 및 사용자 정의가 실행되지 않도록 타겟 OS를 구성할 수 있다. 이제 템플릿 VM을 종료해야 한다.
템플릿 서명 카탈로그 생성
템플릿 디스크는 최종 제품이 암호화된 템플릿인지 서명된 템플릿인지에 관계없이 서명된다. 이것에 대한 이론적 근거(rationale)는 암호화만으로 변조를 검출할 수 없다는 것이다. 공격자가 FVE로 암호화된 디스크를 조작하여 보안 취약성을 초래할 가능성은 거의 없지만, 데이터가 파괴되어 VM이 올바르게 작동하지 않을 가능성이 존재한다.
새로운 템플릿 이미지를 포함하는 템플릿 VM의 OS 가상 디스크 파일이 보안 작성 워크스테이션에 실장된다. 이러한 워크스테이션은 템플릿 VM이 이전에 생성되었지만 필수 사항은 아닌 동일한 워크스테이션일 수 있다. OS 디스크 파일이 실장된 워크스테이션에 템플릿 서명 인증서가 설치되어 있다.
OS 가상 디스크가 실장되면 두 개의 파티션이 제시된다. 첫 번째는 부트 파일이 들어있는 암호화되지 않은 부트 파티션이다. 두 번째는 FVE로 암호화된 OS 볼륨 자체이다. FVE가 중지되었거나 중지되지 않을 수도 있지만, FVE가 활성화되어 있으면 볼륨이 잠금해제되지 않는다. OS 볼륨은 오프라인 상태가 되어 현재 OS에는 파일 시스템이 실장되지 않는다.
작성자는 특수 서명 카탈로그 작성 도구를 사용하여 OS 볼륨에 대한 서명 카탈로그를 생성할 수 있다. 결과적인 서명 카탈로그는 디스크의 부트 파티션에 기록되는 파일이다. 이러한 도구는 하기에 설명된 바와 같이 볼륨 ID 및 버전에 대한 사용자 입력을 허용한다.
OS 볼륨 카탈로그 파일 필드는 하기와 같다:
해시(Hash) - 디스크의 모든 사용된 블록에 대한 암호화 해시이다. 일부 실시예에서 해시는 현재 파일 시스템에 의해 사용되지 않는 블록을 포함하지 않는다. 해시는 알고리즘 ID와 해시 값을 모두 포함한다.
볼륨 ID - 게시자가 볼륨의 이름과 버전을 지정할 수 있도록 게시자가 할당한 구조. 볼륨 ID는 다음을 포함한다:
- 이름 - 볼륨에 할당된 텍스트 이름. 이러한 이름은 게시자가 선택한 어떠한 것이 될 수도 있다.
- 버전 번호 - 일부 실시예에서, 이것은 w.x.y.z 형태의 4 부분의 버전 번호일 수 있다.
게시자 인증서 - 게시자에 의해 사용되는 서명 키에 대응하는 공개 키를 포함하는 인증서. 서명 검사는 키만을 사용하거나, 가능한 경우 전체 인증서를 사용하여 서명이 유효한지 여부를 결정한다.
서명 - 카탈로그의 모든 필드에 대한 서명.
카탈로그의 위치는 디폴트값을 가져야 하지만, 부트 구성 데이터(boot configuration data: BCD) 설정을 통해 지정할 수도 있어야 한다.
암호화된 템플릿 공개
암호화된 템플릿이 공개되면 대응하는 키 파일이 유지되고 템플릿을 참조하는 새로운 프로비저닝 데이터가 생성될 때 이용가능하다. 키 파일은 암호화된 외부 드라이브와 같은 안전한 위치에 보관되며 프로비저닝 데이터 생성시에만 필요하다.
데이터 디스크 생성
보호된 VM에는 보호된 OS 디스크 외에 하나 이상의 데이터 디스크를 가질 수 있다. 데이터 디스크가 존재하는 경우, 필요에 따라 데이터 디스크를 지우거나 암호화할 수 있다. 암호화된 데이터 디스크가 필요한 경우, 일부 실시예에서는, 템플릿 OS 디스크를 생성하기 전에 생성될 수있다. 템플릿 OS 디스크의 OS는 FVE로 암호화된 데이터 디스크를 자동으로 잠금해제하도록 구성된다.
프로비저닝 데이터 생성
새로운 보호된 VM (102)이 템플릿(104)으로부터 생성될 때, 프로비저닝 데이터 키파일(Provisioning Data Keyfile: PDK)이라 칭해지는 특별한 파일이 사용될 수 있다. 키파일은 단순히 요소의 구조화된 그룹이며, 각 요소는 고유한 설명 헤더(descriptive header)를 포함한다. PDK는 필수 키와 허용된 볼륨 ID를 포함하여 템플릿 기반 생성을 위한 일종의 제조법을 제공한다. PDK의 입도(granularity)는 새로운 보호된 VM을 생성하는 테넌트에 의해 결정된다. 일부 예시가 하기와 같다:
ㆍ 테넌트가 모든 보호된 VM을 생성하는 데 사용되는 하나의 PDK를 갖도록 선택할 수 있다.
ㆍ 테넌트가 콘텐츠나 용도에 따라 상이한 종류의 머신에 대해 서로 다른 PDK를 생성할 수 있다.
ㆍ 테넌트가 보호된 모든 단일한 보호된 VM에 대해 서로 다른 PDK를 선택하여 각각의 특수한 설정을 보장할 수 있다.
프로비저닝 데이터(116)는 키파일 구조로 렌더링될 수 있다. 그러면 전체 키파일을 개인 데이터로서 보호할 수 있다.
일부 실시예에서, PDK는 프로비저닝 프로세스에서 사용되는 적어도 3 개의 아이템을 포함하는데, 이들은 다음과 같다:
1) 볼륨 ID 한정자(Qualifiers) - 대응하는 OS 볼륨 카탈로그의 정보를 설명하는 한정자 세트. 하기에 설명될 바와 같이 PDK가 OS 볼륨 ID와 매칭될 수 있는 볼륨 ID 한정자를 포함하면 특정 PDK를 템플릿 OS 디스크와 함께 사용할 수 있다.
2) 팩토리 데이터 - 보안 VM 팩토리 동작을을 안내하는 설정.
3) 사용자 정의 데이터 섹션 - 템플릿 디스크에서 OS를 사용자 정의하는 데 사용되는 데이터 아이템 및 설명 그룹.
OS 볼륨 ID 한정자
도시된 실시예에서 각 카탈로그는 OS 볼륨에 대한 텍스트 이름과 버전 번호를 포함하며, 양자 모두는 템플릿의 생성자 또는 게시자에 의해 결정된다. 전체 카탈로그가 서명된다. 카탈로그는 공개 서명 키를 포함하는 서명자의 인증서를 포함한다.
OS 볼륨 한정자 또는 단순히 한정자는 기본적으로 하나 이상의 카탈로그를 매칭하는 데 사용되는 규칙이다. 각 한정자는 일부 실시예에서 다음 항목을 포함한다:
이름 - 카탈로그의 이름과 매칭하는 데 사용되는 이름. 한정자의 이름은 명령 프롬프트와 동일한 매칭 규칙을 갖는 "*" 및 "?"와 같은 와일드카드(wildcard) 문자를 포함할 수 있다.
버전 - 일부 실시예에서, 다중파트(multipart) 버전 번호. 버전의 각 부분은 전체 버전과 마찬가지로 선택 사항이다. 버전이 생략되면 빈 버전은 카탈로그의 모든 버전과 매칭한다. 버전의 일부가 누락된 경우 해당 부분은 0으로 해석된다.
버전 규칙 - 큼, 크거나 같음, 같음, 작거나 같음, 같거나 같지 않음일 수 있음. 이는 한정자의 버전을 카탈로그의 버전과 일치시키는 데 사용되는 규칙이다.
서명 키 - 볼륨 카탈로그에 서명하는 데 사용될 것으로 예상되는 공개 키. 서명 키는 모든 카탈로그를 허용하는 한정자를 생성하기 위해 생략될 수 있지만, 이는 보안을 상당히 완화시킨다.
볼륨 키 - 선택 사항이며, 서명 전용 템플릿에는 없지만 볼륨을 잠금해제하는 데 필요한 FVE 암호화 키를 포함함.
PDK의 한정자 섹션은 하나 이상의 개별 OS 볼륨 한정자 항목을 포함한다. 각 항목은 타겟 OS 볼륨 카탈로그의 범위를 설명할 수 있다. 가장 간단한 한정자는 와일드카드 이름, 버전 없음, 버전 규칙과 같음, 서명 키 없음 및 볼륨 키 없음을 포함한다. 결과적인 PDK는 모든 서명 전용 템플릿과 함께 사용될 수 있다.
팩토리 데이터
팩토리 데이터는 팩토리가 템플릿 디스크를 처리하는 방법을 설명한다. 팩토리 데이터는 OS에 따라 다르다. 일부 실시예에서, 다음의 값들이 특정된다:
ㆍFVEK 재암호화 - 암호화된 템플릿 디스크에만 적용되며, 템플릿 디스크가 서명 전용인 경우 무시됨. 본 옵션은 "재암호화하지 않음"으로 특정된다. 암호화되지 않은(즉, 서명된 전용인) 템플릿의 경우 키가 잘 알려져 있어 구현자가 항상 FVEK를 롤링하기 때문에, 암호화되지 않은 템플릿은 무시된다. 이러한 옵션이 특정되면 각 템플릿 복사본에 대해 FVEK(Full Volume Encryption)가 롤링된다. 이러한 옵션을 적용하면 VM 팩토리의 처리 시간이 크게 늘어난다. 이러한 옵션을 적용하는 것은 단일한 하이 레벨 디스크가 여러 개의 디퍼런싱 디스크(differencing disks)에서 사용되는 경우도 방지된다.
ㆍ서명 검사 무시 - 서명 검사가 무시되도록 함. 서명 전용 템플릿 디스크에서는 서명이 계산되지 않아 시간을 절약할 수 있다. 특히 서명 전용 템플릿의 경우 서명 검사를 완화하고 속도를 높이기 위해서 이러한 옵션을 특정할 수 있다. 일부 실시예는 암호화된 템플릿을 제외하고는 이러한 옵션을 절대 사용하지 않도록 구성될 수 있다.
사용자 정의 데이터
각 PDK는 특수화 데이터 섹션을 포함할 수 있다. 특수화 데이터 섹션은 테넌트가 보호된 팩토리 프로세스에 개인 데이터 및 명령어를 전달하는 데 사용되는 메커니즘이다. 특수화 데이터는 템플릿-타겟 프로세스가 발생하는 방식을 설명하기 위한 것이다.
일부 특수화 데이터는 보호된 VM 팩토리에서 소비될 수 있는 반면 다른 부분은 타겟 OS 내에서 소비될 수 있다. 특히 팩토리 데이터는 팩토리 프로세스에 의해 사용되는 반면 특수화 데이터는 OS에 종속된 방식으로 OS에 전달된다.
특수화 데이터
특수화 데이터는 VM 팩토리의 특수화 관리자 컴포넌트 내에서 또는 특수화 관리자와 타겟 OS 사이에서 완전히 소비된다. 책임의 구분은 타겟 OS와 이를 특수화하는 메커니즘에 따라 다르다.
특수화 데이터가 OS에 따라 달라지므로 그 형식 및 콘텐츠도 역시 OS에 따라 달라진다. 예를 들어, Microsoft Windows에는 두 가지 섹션의 데이터가 있다. 각 섹션의 각 항목은 이름으로 시작한다. 이름은 Windows unattend.xml 응답 파일의 이름을 기초로 한다.
첫 번째 섹션은 보호된 값 섹션이라고 지칭된다. 이러한 섹션은 각 데이터 항목의 이름에 대응하는 값을 포함한다. 값은 데이터 유형과 호환 가능한 데이터 값의 조합이다. 이는 unattend.xml 응답 파일의 특정된 항목에 대해 타겟 운영 체제에 전달되는 값이다.
두 번째 섹션은 허용된 패브릭 값 섹션이라고 지칭된다. 이것은 이름 목록일 뿐이며 값의 "화이트 리스트(white list)"로 해석된다. 타겟 OS의 특수화 관리자 및 모든 특수화 코드는 본 섹션에 특정된 값에 대한 비보안 소스를 허용한다. 보호된 VM 팩토리의 경우, 패브릭 관리자(254)는 템플릿 값에서 전달이 허용된다. 이러한 템플릿 값은 PDK의 허용된 값 목록에 적용된다.
프로비저닝 동작
전술한 바와 같이, 프로비저닝 동작은 보호된 VM을 생성하는 데 필요한 일회적인 동작과 VM을 동작시키는 데 필요한 반복적인 동작으로 구분될 수 있다. 일부 실시예는 템플릿 기반 프로비저닝 기능은 풍부하지만 반복적인 동작은 필요하지 않은 환경에서 구현될 수 있다.
프로비저닝 프로세스는 보안 VM 팩토리에서 구현된다. 보안 VM 팩토리는 실행되어 확장가능하고(scalable) 안전한 솔루션을 제공하는 타겟 보호된 VM 내에서 완전히 실행된다. 각 보호된 VM은 프로비저닝 되지 않은 상태에서 시작되고 하기에서 설명될 프로세스를 사용하여 보호된 타겟 내에서 개별적인 보호된 타겟 OS가 생성된다.
초기 프로비저닝되지 않은 상태
패브릭 관리자(254)는 새로운 보호된 VM(102)의 생성을 조율한다. 새로운 보호된 VM(102)이 처음 생성 시에, 프로비저닝되지 않은 상태에 있다. 초기 상태에서, VM은 사용할 수 없으며 부팅할 수도 없다. 또한 vTPM으로 구성된 보호된 VM의 상태는 연관된 보호 기능이 없으므로 현재 실행중인 가상화 하이퍼바이저(215) 인스턴스에서 외부로 이주할 수 없으며, 새로운 vTPM(220) 제공되는 유일한 보호는 VSM (266) 내에 완전히 존재하는 것 뿐이다.
보호된 VM 생성의 구체적인 단계
새로운 보호된 VM이 생성되면, 프로비닝되지 않은 상태가 되도록 일련의 단계가 수행된다.
템플릿 디스크 복사
보호된 VM 생성을 시작하기 위해, 패브릭 관리자(254)는 새로운 VM의 기초를 형성하는 새로운 디스크를 생성한다. 새로운 디스크는, 예를 들어, 다음 중 하나 일 수 있다:
1) 템플릿 디스크의 사본. 모든 템플릿 디스크는 암호화되거나 서명된 볼륨이 포함될 수 있다.
2) 새로운 비어있는 디스크. 새로운 VM을 위한 디스크는 비어있는 디스크 일 수 있다. 소유자가 보안 환경에서 새로운 보호된 VM을 생성하는 경우에만 OS 디스크가 비어있을 수 있다.
3) 디퍼런싱 디스크. 하이 레벨(parent) 디스크를 참조하는 새로운 디퍼런싱 디스크가 생성될 수 있다. 하이 레벨 디스크는 특정한 경우에 공유될 수 있다. 하이 레벨 디스크는 암호화된 디스크일 수 있지만 서명된 디스크는 될 수 없다.
암호화된 템플릿에서 디퍼런싱 디스크 사용에 대한 제약은 하기에서 자세히 설명된다.
초기 VM 생성
패브릭 관리자(254)는 보호된 VM(102)을 호스팅할 수 있는 호스트(106)를 선택한다. 패브릭 관리자(254)는 호스트(106)상의 하이퍼바이저(215)로 하여금 새로운 VM을 생성하게 한다. 새로운 VM은 새로운 vTPM(220)을 갖는다. 새로운 VM(102)은 이전에 생성된 올바른 가상 디스크 세트로 구성된다. 가상 하드웨어의 나머지는 패브릭 관리자(254)에 의해 특정되고 VM(102)의 보안 또는 보호된 구성의 일부가 아니다.
새로운 VM(102)이 생성되면, 가상화 하이퍼바이저(215)는 새로운 vTPM 트러스틀릿(trustlet)이 VM의 vTPM(220) 인스턴스를 호스팅하기 위해서 인스턴스화되게 한다. 이러한 트러스틀릿은 특정 vTPM 인스턴스에 대한 TPM 기능을 관리하는 vTPM 프로그램이다. 새로운 vTPM(220)의 생성은 TPM 계층구조 시드(hierarchy seeds)와 같은 차폐된 위치에 내구성있는 구조체(durable artifacts)를 생성한다. 이 시점에서, VM(102)이나 vTPM(220)은 실행되지 않는다.
가상화 하이퍼바이저(215)가 새로운 vTPM(220) 인스턴스를 생성할 때, 그러한 인스턴스는 연관된 어떠한 보호도 갖지 않는다. 예를 들어, 전송 키(TK)가 없을 수도 있고, 보호 스킴의 열거(umeration of the protection schemes)가 없을 수도 있다. 보호 스킴의 열거는 본 명세서에서 보호 설명자(PD)로 지칭되는 것을 사용하여 구현될 수 있다. 객체는 VSM(266) 내에 존재하지만, 보호가 없기 때문에, 일부 실시예에서는 VSM(266)을 떠나지 않는다. 이는 저장되거나 다른 호스트로 이동될 수 없음을 의미한다.
프로비저닝 데이터의 인스턴스화
패브릭 관리자(254)는 새로운 VM(102)에 대응하는 프로비저닝 데이터(116)(도 1 참조)를 검색한다. 프로비저닝 데이터(116)는 전술한 바와 같은 특정 내부 포맷을 갖는 보호된 데이터 객체로서 존재한다. 프로비저닝 데이터(116)는 패브릭 관리자(254)에 대해 완전히 불투명하다. 패브릭 관리자(254)는 단지 이러한 객체의 저장 및 이동을 제어한다.
새로운 VM(102)이 생성된 동일한 호스트(106)에서, 패브릭 관리자(254)는 프로비저닝 트러스틀릿 인스턴스를 인스턴스화한다. 이러한 트러스틀릿은 특정 VM 인스턴스에 대한 프로비저닝 데이터(116)를 관리하는 VSM 프로그램이다. 패브릭 관리자(254)는 프로비저닝 데이터(116)를 새로운 트러스틀릿 인스턴스에 전달한다.
vTPM 보호의 수립
패브릭 관리자(254)가 프로비저닝 데이터(116)를 검색하면, 패브릭 관리자(254)는 프로비저닝 데이터(116)를 포함하는 PDK로부터 PD를 추출한다. 패브릭 관리자(254)는 vTPM(220) 상에 PD 열거 호환가능한 보호 스킴을 설정하기 위해 vTPM 트러스틀릿을 호출한다. vTPM(220)은 현재 보호가 존재하지 않기 때문에 VSM(266)의 외부로부터 vTPM(220)상의 보호를 한 번 설정할 수 있게 한다.
vTPM 트러스틀릿은 VSM(265)에 신뢰되지 않은 패브릭 관리자(254)로부터 전달된 PD에 기초하여 vTPM(220)에 대한 보호를 설정하려고 시도한다. 이를 위해 vTPM 트러스틀릿은 기존 PD에서 전달되는 정확한 KDS(114)에 접속한다. KDS(114)는 이러한 요청에 응답하여 PD로부터 기존의 TK를 언래핑(unwrapping)할 뿐만 아니라 출구(egress)를 위한 새로운 TK(112) 및 새로운 TK(112)를 설명하기 위한 새로운 PD를 생성한다. 이들은 vTPM 트러스틀릿으로 반환된다. 언래핑된 TK는 PDK에 적용되므로 vTPM 트러스틀릿에 필요하지 않다. 새로운 TK(112) 및 관련된 새로운 PD는 새로운 vTPM(220)에 대한 것이다. vTPM 트러스틀릿은 이제 데이터에 대한 충분한 보호를 갖고 있기 때문에 VSM(266)으로부터 필요에 따라 vTPM(220)을 내보낼 수 있다. 새로운 vTPM PD(224)에서 소유자(데이터 세트를 소유하고 있는 사람), 보호자(소유자의 데이터세트를 호스팅하거나 저장할 수 있는 엔티티) 및 소유하고있는 보호자(데이터세트를 보호하는 엔티티)는 프로비저닝 데이터(116)의 PD와 매칭하는 것이 중요하다.
vTPM에 대한 새로운 보호를 생성하는 프로세스는 다음과 같은 속성이 포함한다:
ㆍ 프로비저닝 데이터(116)를 소유하는 보호자로서 동작하는 KDS(114)는 다른 PD로부터 하나의 PD를 유도시킴으로써 vTPM(220)을 소유하는 보호자로서 동작하는 것과 동일하다.
ㆍ vTPM에 설정된 올바른 PD는 거의 모든 엔티티에서 생성될 수 있지만, 그러한 엔티티는 올바른 보호자로서 서명할 수 없다.
ㆍ 전체 KDS(114)를 사용할 때, 새로운 VSM 객체(이 경우에 vTPM(220))에 대한 보호는 다른 객체로부터의 보호에 기초하여서만 설정될 수 있다.
가상 머신 팩토리
전술한 바와 같이, 새로운 보호된 VM은 OS 설치를 위한 배포 매체를 사용하여 비어있는 VM으로부터 수동으로 생성될 수 있다. 그러나 또한 언급한 바와 같이, 이는 매우 드문 경우이며 주로 템플릿 생성과 같은 특별한 경우를 위해 예약 된 프로세스이다. 템플릿은 더욱 자동화된 방식으로 추가 VM을 생성하는 데 사용된다.
새로운 VM을 생성하는데 사용되는 리소스, 프로세스 및 도구의 세트가 VM 팩토리라고 지칭된다. VM 팩토리는 가상 하드웨어 및 실행되는 프로세스에 따라 보호되거나 보호되지 않는 VM을 생성할 수 있으며, 일부 보호된 VM은 vTPM 및 적어도 FVE 암호화된 OS 볼륨이 필요하다.
보호된 VM을 생성하기 위해서, 실행되는 프로세스는 두 개의 입력이 있어야 한다. 이들은:
1) 템플릿 디스크 - 템플릿 디스크가 포함된 하나 이상의 가상 하드 드라이브 파일. 프로세스는 이러한 템플릿 디스크의 사본을 만든 다음 필요에 따라 콘텐츠를 특수화한다.
2) 프로비저닝 데이터 - 새로운 VM 디스크(초기에는 템플릿의 사본)를 만드는 데 필요한 데이터 값, 새로운 VM에 속한 개별적인 인스턴스.
보호된 VM을 생성하는 프로세스는 특수화 데이터를 새로운 VM에 주입한 다음 새로운 VM을 부팅하는 것을 포함한다. 초기 부팅은 특수화 데이터를 사용하여 VM의 고유한 OS 인스턴스를 생성하도록 실행되는 OS 설정의 특수화 단계가 발생한다.
보호된 VM을 생성하는 프로세스를 완료하기 위해서, OS 볼륨 및 원하는 다른 볼륨이 FVE로 암호화되어 나머지 볼륨을 보호한다. 이러한 작업이 완료되면 보호된 VM은 vTPM을 해독할 수 있는 모든 곳에서 인스턴스화될 수 있다.
보안 VM 팩토리
전술한 VM 팩토리는 신뢰된 환경에서 사용할 수 있다. 즉, VM 소유자가 프로세스를 수행하기 위해 사용된 하드웨어 및 소프트웨어를 신뢰할 수 있는 환경에서, 결과적으로 생성되는 보호된 VM을 신뢰할 수도 있다. 매우 일반적인 경우, 보호된 VM은 새로운 보호된 VM 소유자가 아닌 일부 엔티티가 소유하고 동작하는 패브릭 내에 생성된다. 이러한 경우에, VM 팩토리는 전술한 신뢰 경계 내에서 동작한다. 대안적으로, 신뢰 경계는 VM 생성을 위해 완화될 수 있지만, 신뢰 경계를 완화하면 결과적으로 보호된 VM의 무결성이 손상될 수 있음을 인식하는 것이 중요하다.
보안 VM 팩토리의 경우, 프로세스로의 입력을 보호할 필요가 있을 수 있다. 상기 설명은 템플릿 디스크 및 프로비저닝 데이터(116)의 생성 및 이들의 보호된 인스턴스 생성에 대해 설명한다.
실시예는 보호된 VM(102) 자체를 보안 VM 팩토리를 위한 호스트로서 사용한다. 이를 위해, 보호된 VM(102)은 프로비저닝 데이터(116)뿐만 아니라 템플릿 OS 디스크를 잠금해제하고 처리할 수 있는 방식으로 부팅된다. 결과적인 타겟 OS 정보는 결코 보호된 VM(102) 자체의 외부에 노출되지 않는다.
보안 VM 팩토리 프로세스
초기 프로비저닝되지 않은 보호된 VM을 생성하는 프로세스가 상기에서 설명되었다. 이러한 프로세스의 종료 시에, 보호된 VM 및 프로비저닝 데이터(116)는 다음의 상태에 존재한다:
ㆍ vTPM(220)을 포함하는 보호된 VM(102)은 가상화 하이퍼바이저(215)에 의해 생성되었으나 시작되지는 않는다.
ㆍ PDK 형태로 보호된 프로비저닝 데이터가 호스트(106)에 다운로드되고 프로비저닝 트러스틀릿이 데이터를 유지하도록 인스턴스화된다.
ㆍ 프로비저닝 트러스틀릿 인스턴스는 PDK에 대한 키를 수신하고, 현재 VSM(265) 내에 일반 텍스트로 존재하는 프로비저닝 데이터를 해독하고 인증한다.
ㆍ 패브릭 관리자(254)는 PDK로부터 PD를 사용하여 vTPM(220) 상에 새로운 PD를 설정한다.
노멀 모드 프로비저닝 서비스
패브릭 관리자(254)는 이제 노멀 모드 프로비저닝 서비스(Normal Mode Provisioning Service:NMPS)(206)라고 지칭되는 새로운 프로세스를 시작한다. NMPS(206)는 보안 프로비저닝 프로세스에 참여하는 컴포넌트 간의 통신 브리지 역할을 하는 간단한 서비스이다. NMPS(206) 자체는 패브릭 관리자(254)보다 더 신뢰된 코드가 아니다.
생성시에, NMPS(206)는 올바른 vTPM 트러스틀릿에 대한 핸들, 올바른 프로비저닝 트러스틀릿에 대한 핸들 및 새로운 보호 VM(102)에 대한 로컬 종점 식별자를 수신한다. 이들은 NMPS(206)가 엔티티 간의 모든 통신을 용이하게 한다. NMPS(206)는 VM 종단점 식별자를 사용하여 새로운 보호된 VM(102) 자체로부터의 접속 시도를 청취하기 시작한다. 일부 실시예에서, NMPS(206)와 임의의 다른 객체 간의 통신은 보안 접속에 의존하지 않으며, 모든 개인 정보 및 무결성은 객체 자체에 의해 보장된다.
초기 보호된 VM 부팅
기본 컴포넌트가 위치되면, 패브릭 관리자(254)는 가상화 하이퍼바이저(215)에게 가상 전력을 적용하여 보호된 VM(102)이 제 1 부팅을 개시하도록 신호를 보낼 수 있다. 도시된 예시에서, 보호된 VM 하드웨어는 UEFI(Unified Extensible Firmware Interface)(262) 보안 부팅 및 TPM 261(측정) 부팅이 활성화되어 있다. 보안 부팅을 제어하는 UEFI(262) 변수(PK/KEK/db/dbx)는 가상화 하이퍼바이저(215)에 의해 제어되고 인증된 서명된 부팅 코드만이 실행되도록 허용한다. UEFI 첫 단계 로더는 부팅 관리자를 로드, 측정 및 실행한다.
첫 번째 부팅 중에, 부트 구성 데이터(Boot Configuration Data: BCD)가 부팅 관리자에 의해 판독된다. BCD 항목은 부팅 관리자에게 보호된 VM 팩토리 코드 경로를 실행하도록 지시한다. BCD 설정은 부트 디스크의 암호화되지 않은 부트 파티션에 존재하므로 결과적으로 변경에 노출된다. 공격자가 보호된 VM 팩토리를 비활성화하여 프로세스를 방해하려고 시도하면 결과적으로 VM 프로비저닝이 수행되지 않고 정보가 손상되지 않는다.
부팅 환경 프로비저닝 에이전트
보호된 VM 팩토리 코드 경로를 론칭은 부팅 환경 프로비저닝 에이전트(Boot Environment Provisioning Agent: BEPA)를 시작한다. BEPA는 부팅 환경의 보호된 VM 내에서 실행된다. 일반적으로, BEPA는 프로비저닝 에이전트(208)로서 상기에 설명된다. BEPA 코드는 루트 파티션에서 NMPS 종점에 즉각적인 접속을 시도한다. BEPA의 통신 실패로 인해 보호된 VM 팩토리 및 기능하지 않는 VM이 전체적으로 실패하게 된다. BEPA가 NMPS(206)와의 통신을 설정하면, 프로비저닝을 지원하기 위해 일련의 메시지가 교환된다. 메시지 교환은 프로비저닝 프로세스에서 일련의 단계를 발생시킨다.
PDK 요청 메시지
NMPS(206)에 접속한 직후에, BEPA는 프로비저닝 데이터(116)를 요구하는 PDK 요청 메시지를 송신한다. 메시지는 vTPM (220)의 공개 승인 키(EKpub)를 포함한다. BEPA는 EKpub를 직접 판독한다.
NMPS(206)는 BEPA로부터 PDK 요청 메시지를 수신하고 메시지를 관련된 프로비저닝 트러스틀릿 인스턴스로 전송한다. 도시된 예시에서, 각각의 NMPS 인스턴스와 관련된 하나의 프로비저닝 트러스틀릿이 존재한다. NMPS(206)에 의해 수행되는 PDK 요청 메시지의 암호화, 인증 또는 검증은 존재하지 않는다.
vTPM 보호 쿼리 메시지
프로비저닝 트러스틀릿 인스턴스가 PDK 요청을 수신하면 vTPM 보호 쿼리 메시지로 응답한다. 이 메시지는 초기에 프로비저닝 트러스틀릿에서 NMPS(206)로 송신된다. 메시지는 단순히 PDK 요청으로부터 수신된 EKpub를 포함한다. NMPS(206)는 EKpub에 대응하는 vTPM 트러스틀릿 인스턴스를 찾아서 vTPM 보호 쿼리 메시지를 그 트러스틀릿으로 전송한다.
vTPM 보호 선언 메시지
vTPM 트러스틀릿이 vTPM 보호 쿼리 메시지를 수신하면, vTPM 트러스틀릿은 먼저 수신된 EKpub에 기초하여 올바른 EK를 갖는 vTPM을 호스팅하는지 여부를 판정한다. 키가 매칭하지 않으면 승인 키 미스매치 오류 메시지가 생성된다.
요청된 EK가 vTPM 트러스틀릿 인스턴스 EK와 매칭하면 트러스틀릿은 vTPM의 PD를 검색한다. 이것은 vTPM 보호 선언 메시지에 기록된다.
vTPM 트러스틀릿은 VSM이 VSM 개인 키를 사용하여 vTPM 보호 선언 메시지에 서명하도록 한다. 이것은 메시지가 후에 현재의 VSM(265)에서 발신된 것으로서 인증될 수 있게 한다. 메시지는 NMPS(206)를 통해 프로비저닝 트러스틀릿에 반환된다.
보호 호환성 판정
vTPM 보호 선언 메시지를 수신한 후에, 프로비저닝 트러스틀릿은 먼저 VSM이 VSM에서 발송된 메시지를 인증 및/또는 보증하도록 한다. 예를 들어, 메시지를 암호화/서명함으로써 수행될 수 있다. 일 실시예에서, 데이터가 VSM 커널을 통해 VSM 내에서 이동하도록 허용함으로써 달성된다. 이러한 동작이 성공하는 경우에, 프로비저닝 트 러스틀릿은 PDK와 vTPM 모두에 대한 PD를 포함한다. 프로비저닝 동작을 계속하려면 PD가 호환가능해야 한다.
일부 실시예에서, PD 호환성의 단지 하나의 개념만이 존재하며, 이는 소유자, 보호자 및 소유하고 있는 보호자의 등가물이며, 여기서 등가물은 엔티티가 동일한 PD 주체 및 역할을 갖는다는 것을 의미한다. 오류 또는 시도된 공격의 경우를 제외하고 이러한 검사가 성공해야 하므로 이러한 모델은 vTPM에 설정된 PD가 초기에 PDK의 PD에서 생성된다. PD 호환성이 검증될 수 없는 경우, 프로비저닝 트러스틀릿은 단순히 NMPS(206)에 오류 메시지를 반환한다. NMPS(206)는 그러한 오류 메시지를 BEPA에 다시 전달할 것이다.
프로비저닝 머신 키의 생성
프로비저닝 데이터(116) 및 타겟 보호 VM의 vTPM에 대한 보호가 동일하다고 판정되면, 프로비저닝 트러스틀릿은 프로비저닝 데이터(116)를 보호된 VM에 제공하기 위해 전방으로 이동한다. 이를 수행하기 위해 프로비저닝 데이터(116)는 프로비저닝 트러스틀릿이 보호된 VM(102) 내에 안전하게 존재할 때까지 VSM(266)에 남겨지는 경우에 보호된다. 이러한 전송 동안에 데이터의 보호는 VSM(266)에 의해 간접적으로 보증된다. 이를 위해, 타겟 VM의 vTPM(220) 내의 TPM 키는 데이터를 보호하는데 사용되며, vTPM(220)은 결국 VSM(266)에 의해 보호된다.
프로비저닝 트러스틀릿은 타겟 VM의 보안 디바이스(예를 들어, TPM)에 대한 원격 명령 실행을 사용하여 메시지를 BEPA에 다시 송신한다. 이러한 메시지는 BEPA가 TPM에 직접 전달하는 TPM 통과 메시지이다. TPM은 이러한 메시지를 처리하고 NMPS(206)를 통해 프로비저닝 트러스틀릿에 응답을 반환하는 BEPA에 응답을 반환한다. 이러한 배열은 프로비저닝 트러스틀릿이 타겟 vTPM을 직접 사용할 수 있게 한다.
프로비저닝 트러스틀릿은 타겟 TPM과의 처리된(salted) 인증 세션을 수립한다. 이러한 경우에, 프로비저닝 트러스틀릿은 타겟 TPM의 EKpub을 알고 있으며, vTPM 트러스틀릿에서 수신된 선언에 기초하여 유효한 TPM임을 알게 된다. 프로비저닝 트러스틀릿은 타겟 TPM만이 결과적인 메시지를 올바르게 사용할 수 있음을 알고있는 새로운 세션을 위해 처리된 암호화기로서 타겟 TPM의 EK를 사용한다.
인증 세션이 수립되면, 프로비저닝 트러스틀릿은 타겟 TPM에 특정 플랫폼 제어 레지스터(Platform Control Register: PCR) 값에 대해 봉인된 랩핑 키를 생성하라는 명령을 발행한다. PCR이 주로 운영 체제의 선택이지만, 일 실시예에서는 다음의 PCR 콘텐츠가 구현된다 :
ㆍPCR[7] - 올바른 가상화 하이퍼바이저(215) 부팅 컴포넌트 알려진 "매직 넘버" 해시를 포함함.
ㆍPCR[11] - 신뢰된 부팅 환경에 대응하는 알려진 값을 반드시 포함함. 나중에 부팅 환경이 이를 사용하여 키 사용을 제한한다.
결과적으로 생성된 키 블롭(blob)은 프로비저닝 트러스틀릿에 반환된다. 이러한 키는 프로비져닝 머신 키라고 지칭되며, 프로비저닝 데이터(116)를 보호하는 데 사용된다.
타겟 VM에 대한 프로비저닝 데이터 보호
프로비저닝 트러스틀릿은 PDK의 새 버전을 작성한다. 새로운 PDK는 원래 PDK와 동일한 섹션과 다음 추가 사항을 포함한다:
ㆍ 패브릭 데이터 - 패브릭 키파일의 키파일 섹션이 PDK에 통합된다.
새로운 PDK가 생성되면, 프로비저닝 트러스틀릿은 다음으로 보호를 수립한다. 이러한 보호는 VSM(266) 내에 루팅된다(root). 단계는 새로운 객체에 대한 VSM 표준 PD를 생성하는 것을 포함한다. 다음 단계가 발생한다:
1) 암호 기반 키 유도 함수 2(Password-Based Key Derivation Function 2: PBKDF2) 인증과 같은 키 유도 함수를 사용하여 새로운 TK가 생성되고, 암호화 키(TK-E 및 TK-A)가 유도된다.
2) PDK는 TK-E를 사용하여 암호화된다.
3) PDK에 대한 해시 기반 메시지 인증 코드가 TK-A를 사용하여 생성된다.
4) VSM 공개 키는 PD 내에서 소유자 랩핑을 생성하는 데 사용된다.
5) 머신 키의 공개 부분은 보호자 TK 랩핑을 생성하는데 사용되고 PD에 추가된다.
6) PD는 VSM 개인 키를 사용하여 서명되어 현재 호스트의 VSM(265)을 소유 한 보호자로 만든다.
결과적으로 보호된 객체는 VSM(265) 내의 현재 호스트(106) 또는 BEPA 내의 타겟 보호된 VM에서만 사용 가능하다. 타겟 VM의 부팅 환경이 끝나면 PCR[11]을 사용하여 데이터를 사용할 수 없게 만든다. 새로운 보호된 PDK는 BEPA에 의해 지속되지 않지만, 저장-복원 동작의 일부로서 지속되거나 실제 이동에 의해 이동될 수 있다. 최종 보호 PDK가 BEPA로 송신되기 전에 발생하는 동작이 프로비저닝 프로세스에 오류를 야기한다는 것을 주의해야 한다. 프로비저닝 프로세스가 실패하면, 그 프로세스를 다시 시작해야 한다.
최종 PDK 전송
프로비저닝 트러스틀릿은 다음으로 머신 키를 포함하는 TPM 키 블롭와 함께 새로 보호된 PDK를 포함하는 메시지를 생성한다. 이러한 메시지는 상기의 "PDK 요청 메시지" 섹션에서 설명된 요청을 만족시키는 NMPS(206)로 반환된다. NMPS(206)는 이것을 BEPA에 반환한다.
BEPA가 PDK 메시지를 수신하면, 먼저 TPM 261과 새로운 로컬 세션을 수립한다. 해당 세션 내에서 BEPA는 프로비저닝 서비스에서 PDK로 반환된 머신 키 블롭을 로딩한다. 이러한 동작은 (PCR 봉인 때문에) 정확한 상태에서 정확한 TPM(261)에서만 성공한다. 머신 키가 로딩되면 BEPA는 이 키를 사용하여 PDK의 PD에서 TK의 정확한 사본을 언래핑한다.
TK를 복구한 후, BEPA는 표준 키 유도 기능을 로컬로 실행하고 TK-E 및 TK-A의 사본을 생성한다. 이 키를 사용하여 보호된 PDK 데이터를 해독하고 인증한다. 일단 PDK가 일반 텍스트로 복구되면, 보호된 템플릿 관리자(212)가 하기에 정의된 바와 같이 템플릿 부트 디스크를 처리하도록 실행될 수 있다.
보호된 템플릿 관리자
BEPA가 실행을 완료하면 결과적인 일반텍스트 PDK가 VM의 메모리에만 제시된다. 보호된 팩토리는 다음으로 보호된 템플릿 관리자(PTM) 모듈을 론칭하여 PDK의 템플릿 데이터 부분을 전달한다. PTM은 서명 확인, 키 변경 및 새로운 FVE 보호 수립을 포함하는 템플릿 부트 디스크를 처리하는 데 사용된다.
볼륨 한정자 매칭
PTM은 먼저 템플릿 OS 볼륨이 현재 이용 가능한 프로비저닝 데이터(116)와 함께 사용하기에 적합한 지 여부를 판정한다. 이 프로세스는 부트 디스크의 부트 파티션으로부터 OS 볼륨 카탈로그 파일을 판독하는 것으로 시작한다. 카탈로그가 누락된 경우, 동작은 볼륨 한정자 미스매치로 표시되지만 계속 수행될 수는 있다. OS 볼륨 카탈로그가 정확하게 판독되고 파싱되면(parsed), 프로세스는 현재 팩토리 동작에 유효한지를 계속 확인한다.
매칭 프로세스는 현재의 프로비저닝 데이터(116)에 존재하는 모든 한정어를 반복한다. 각 한정자에 대해 일련의 단계들이 수행된다 :
1) 이름이 매칭하는지 판정하는 단계. 카탈로그의 템플릿 이름이 와일드 카드 평가를 포함하는 현재 한정자의 이름과 매칭하면 매칭 프로세스가 계속되고, 그렇지 않으면 현재 한정자가 폐기된다.
2) 버전이 매칭하는지 판정하는 단계. 한정자의 버전 및 버전 규칙을 사용하여 카탈로그 버전이 한정자와 매칭하는지 판정한다. 매칭하는 것이 있으면 매칭 프로세스가 계속되고, 그렇지 않으면 현재 한정자가 폐기된다.
3) 카탈로그 서명 키를 확인하는 단계. 현재 한정자가 카탈로그의 서명 키와 정확히 매칭하는지 판정한다. 매칭하면 매칭 프로세스가 계속되고 그렇지 않으면 현재 한정자가 폐기된다.
4) 현재 한정자는 카탈로그와 일치하기 때문에 가능한 한정자 목록에 추가된다.
매칭 프로세스는 PDK에 제공된 목록 내의 모든 한정자가 없어질 때까지 계속된다. 매칭의 종료시에 한정자가 없는 경우 동작은 볼륨 한정자 미스매치로 표시된다. 그러나 PTM 처리는 계속되도록 허용된다.
하나 이상의 한정자가 볼륨 카탈로그와 매칭하면 카탈로그와 함께 제공된 공용 키를 사용하여 카탈로그의 서명을 확인한다. 이러한 동작은 게시자가 실제로 정확한 개인 서명 키를 소유했음을 증명한다.
OS 볼륨 잠금해제
다음으로, PTM은 OS 볼륨에 잠금해제 키가 필요한지 여부를 판정한다. OS 볼륨은 FVE 암호화되지만 서명 전용 템플릿에 대해서는 FVE 보호가 일시 중단된다. PTM은 이러한 각 한정자가 0 개 또는 1 개의 외부 FVE 키를 포함하므로 매칭 프로세스로부터 매칭된 볼륨 한정자를 사용한다. PTM은 템플릿 OS 볼륨을 잠금해제하려고 시도하는 키 목록에 대해 반복한다.
FVE가 타겟에서 일시 중단된 경우, TPM은 볼륨을 내부적으로 서명 전용으로 플래그 지정한다. 템플릿 OS 볼륨에서 FVE가 일시 중지되지 않고 키가 해당 볼륨을 잠금해제하지 않으면, PTM이 실패하고 보안 VM 팩토리에 오류를 반환한다. 이 시점에서 동작이 이전에 볼륨 한정자 미스매치로 표시된 경우 사용할 수 있는 키가 없으므로 서명 전용 볼륨이 된다.
템플릿 처리 모드 판정
PTM은 다음으로 OS 볼륨을 처리하는 방법을 결정한다. 이를 시작하기 위해 두 변수가 초기 값으로 설정된다:
1) FVEK-REKEY - TRUE로 설정.
2) HASH - TRUE로 설정.
PTM은 PDK의 팩토리 데이터를 참조하여 해당 데이터에 FVEK 재암호화가 특정되어 있는지 판정한다. 값이 존재하고, 값이 FALSE로 설정되며, 현재 템플릿이 서명 전용으로 표시되지 않으면, FVEK-REKEY의 값은 FALSE로 설정된다.
다음으로, PTM은 볼륨 서명 확인을 관리하는 팩토리 데이터 값을 참조한다. 팩토리 데이터가 서명을 확인할 필요가 없고 볼륨이 서명 전용 템플릿이 아니라고 특정한 경우, HASH의 값은 FALSE로 설정된다.
템플릿 처리
다음으로, PTM은 템플릿을 처리한다. FVEK-REKEY 또는 HASH가 TRUE이면, PTM은 전체 볼륨 스윕(sweep)을 설정한다. 전체 볼륨 스윕은 매우 제한된 스캐너를 사용하여 볼륨에서 사용된 공간을 판정한다. 프로세스는 다음과 같이 초기화된다:
1) HASH == TRUE인 경우 → 볼륨 해시 계산을 초기화.
2) FVEK-REKEY == TRUE인 경우 → 새 FVEK 생성.
이러한 기능을 사용하여 PTM은 하기의 처리를 수행하는 디스크의 각 블록을 반복한다:
1) 새 블록을 판독.
2) HASH == TRUE인 경우 → 새 블록을 사용하여 볼륨 해시를 확장.
3) FVEK-REKEY == TRUE인 경우 →
a) 기존 FVEK를 사용하여 블록을 해독.
b) 새 FVEK를 사용하여 블록을 암호화.
c) 블록을 디스크에 업데이트.
처리가 종료되면 (필요한 경우) PTM은 현재 VM의 TPM(가상 TPM)을 사용하여 FVE을 위한 새로운 TPM 보호기를 생성한다. 새로운 TPM 보호기가 FVE 메타데이터에 추가되고 세 복사본 모두 OS 볼륨에서 업데이트된다.
서명 확인
HASH 변수를 true로 설정하면, 계산된 OS 해시가 현재 OS 볼륨 카탈로그에 존재하고 인증된 해시와 비교된다. 해시가 매칭하지 않으면 PTM으로부터 오류가 반환된다. 이러한 최종 단계가 완료되면 PTM이 작업을 완료하고 템플릿 디스크가 완전히 처리된다.
특수화 에이전트(Specialization Agent: SA)
보안 VM 팩토리가 PTM이 실행을 완료하고 오류를 시그널링하지 않았다고 판정하면, 특수화 에이전트(SA)를 론칭한다. SA는 PDK의 특수화 부분을 통과한다. 팩토리 실행의 단계에서, 타겟 OS 디스크는 고유한 TPM 키로 암호화되고 보호된다. 이제, 조작될 것이라는 걱정 없이 보호된 VM의 OS 볼륨에 민감한 데이터를 안전하게 기록할 수 있다.
SA는 원본 템플릿 디스크 내의 OS를 고유한 타겟 인스턴스로 특수화하는 데 필요한 모든 작업을 수행할 수 있다. 일반적으로 수행되는 두 가지 유형의 작업의 조합이 존재한다:
1) 오프라인 - SA가 오프라인 OS 인스턴스 자체에서 수행할 수 있는 동작. SA는 가능한 많은 타겟의 오프라인 특수화를 수행해야 한다.
2) 온라인 준비 - 오프라인으로 수행할 수 없는 동작에 대해, SA는 타겟 OS가 부팅될 때 온라인 동작이 가능하도록 OS 볼륨에 데이터를 기록할 수 있다.
OS 최초 부팅
보안 VM 팩토리가 처리를 완료하면, 정상적인 OS 부팅이 계속된다. 하드웨어, 펌웨어 및 TPM의 부팅 상태는 기존 OS 부팅 환경과 일치하며, 특히 TPM PCR 7 및 11은 FVE가 OS 볼륨을 잠금해제할 수 있는 상태에 있다(참고: 이에 대한 바로가기(shortcut)로서, 실시예는 PTM으로부터 키링(keyring)을 미리 생성할 수 있음).
일부 실시예는 고객이 여러 버전의 게스트 운영 체제를 사용하여 기존 하드웨어 및 호스트에 대해 FVE 전체 볼륨 암호화를 사용할 수 있게 한다. 이러한 실시예를 달성하기 위해 다음의 방법으로 볼륨에 FVE 암호화를 가능하게 하는 도구 및 명령어를 테넌트에게 제공할 수 있다 :
ㆍ데이터 볼륨: 모든 데이터 볼륨은 OS 볼륨에 저장된 자동 잠금해제 키(예컨대, 워싱턴 주 레드먼드에 소재하는 Microsoft 사로부터 이용가능한 Windows 운영 체제용 Windows 레지스트리)를 사용하여 FVE로 암호화된다. 이러한 볼륨은 정확한 OS 내에 실장되어 있으면 자동으로 잠금해제된다.
ㆍOS 볼륨: 보호된 각 VM은 FVE 암호화된 OS 볼륨을 포함한다. FVE 암호화가 수행되면 FVE가 외부 복구 키가 파일에 저장된다. 이러한 파일은 클라우드 서비스 제공자 내의 보호된 위치에 업로드된다.
클라우드 서비스 제공자는 고객에 대한 고객 FVE 키를 보호된 데이터로 관리한다. 필요시에, 패브릭 컨트롤러(FC)는 특정 계산 노드에 고객 VM을 검색하고 실행하도록 지시한다. 계산 노드의 패브릭 에이전트(Fabric Agent: FA)는 FC에 FVE OS 볼륨 키를 요청한다. FC는 복구 키를 갖는 파일을 FA에 반환한다.
일부 실시예에서, 보호된 VM을 호스팅할 수 있는 각각의 컴퓨팅 노드는 SCRATCH라고 칭해지는 작은 - 일부 실시예에서 약 3GB - 볼륨을 갖는다. 매 부팅시 FA가 시작되면 FA는 다음 단계를 수행한다:
1) 포맷 SCRATCH: 볼륨은 비어있는 볼륨(일부 실시예에서는 NTFS 볼륨)으로 포맷된다.
2) FVE SCRATCH: SCRATCH 볼륨이 FVE로 보호된다. 키는 OS 볼륨의 파일 내에 저장된다.
3) 키 삭제: SCRATCH 볼륨의 키는 암호로 삭제(덮어쓰기)되어 액세스할 수 없게 된다.
이러한 단계를 수행하면, 호스트는 현재 부팅주기 동안 암호화되지만 액세스할 수 있는 작은 볼륨을 갖는다. 머신이 종료되면 볼륨의 내용에 다시 액세스할 수 없다.
FA가 보호된 VM에 대한 복구 키를 갖는 파일을 수신하면, SCRATCH 볼륨에 새로운 VHD 파일을 만든다. 이러한 파일은 최소 크기의 동적 VHD이다. FA는 복구 키가 있는 파일을 새 볼륨에 기록하고 액세스는 파일 및 디렉토리를 제어하여 모든 액세스를 제거한다. 그 후 FA는 루트 파티션에서 새로운 VHD를 분리한다.
FA는 새로운 SCRATCH VHD를 보호된 VM에 연결하고 VM을 시작한다. VM의 부팅 환경 내에서, 펌웨어는 복구 키가 있는 파일이 포함된 SCRATCH 디스크를 포함하여 디스크를 열거한다. 부팅 환경의 OS 볼륨 잠금해제 코드는 복구 키를 갖는 정확한 파일을 찾고 OS 볼륨을 잠금해제하여 OS가 부팅되도록 한다. 게스트 OS가 부팅되면, SCRATCH 볼륨은 계속 연결된 채로 남아, 게스트가 재부팅될 때마다 사용된다. 복구 키가 있는 파일의 내용은 디렉토리 및 파일에 대한 보호를 변경할 수 있는 관리 사용자만 액세스할 수 있다.
OS가 부팅되면 OS는 정확하게 FVE로 보호된 모든 데이터 볼륨을 자동으로 잠금해제할 수 있다.
프로비저닝
보호된 VM의 프로비저닝은 다음의 두 가지 방식 중 하나로 수행될 것으로 예상된다:
1) 인-플레이스(In-place) 변환 - 이 모델에서, 기존 VM은 FVE를 사용하여 OS 및 가능한 경우에 다른 디스크 볼륨을 암호화하여 제자리에서(in-place) 보호된다.
2) 업로드 - 이 모델을 사용하면 고객이 구내에(on premises) 보호된 VM을 생성하고 해당 VM을 클라우드 서비스에 업로드할 수 있다. 결과적인 VM은 결코 보호되지 않은 상태로 클라우드 서비스 내에 존재하지 않는다.
보호된 VM이 생성되면 FVE로 보호된 OS 볼륨을 잠금해제하는 데 필요한 단일 키가 존재한다. 두 가지 프로비저닝 방법 모두에서 복구를 위해 파일에 백업되는 외부 FVE 키가 생성된다. 결과적인 파일은 드라이브에 대한 액세스를 허용하는 데 사용될 수 있는 키를 포함한다. 이러한 파일은 보호된 데이터이며 테넌트 비밀 관리를 사용하여 보호된다. 프로비저닝의 관점에서, 외부 키는 모든 VM 재부팅시 발생하는 프로비저닝 프로세스의 일부로서 제공된다.
동작
보호된 VM은 신뢰된 패브릭을 사용한다. 신뢰된 패브릭 내에서 프로비저닝 서비스는 각 계산 노드의 FA 내에 존재한다. FA는 FVE 외부 키에 액세스하여 VM에 연결된 VHD가 포함된 채널을 통해 VM에 제공할 수 있다.
다음의 논의는 수행될 수 있는 다수의 방법 및 방법 단계를 설명한다. 방법 단계가 특정 순서로 논의되거나 흐름도에 특정 순서로 발생하는 것으로 설명될 수 있지만 구체적으로 명시되거나 요구되는 경우를 제외하고는 한 단계가 그 단계가 수행되기 전에 완료되는 다른 행위에 의존하므로 특정 순서가 요구되지 않는다.
전술한 내용 대부분이 가상 머신 환경에서 설명되었지만, 개념은 물리적 머신 환경에서도 구현될 수 있음을 이해해야 한다. 따라서, 달리 명시되지 않는 한, 본 명세서의 청구 범위는 물리적 머신, 가상 머신 또는 이들의 조합에 적용될 수 있다.
이제 도 4를 참조하면, 방법(400)이 도시된다. 방법(400)은 컴퓨팅 환경에서 실시될 수 있다. 방법은 잠재적으로 안전하지 않은 환경에서 안전한 방식으로 머신을 부팅하는 단계를 포함한다. 방법(400)은 타겟 머신이 부트 프로세스를 시작하는 단계(단계 402)를 포함한다. 예를 들어, 도 3은 타겟 머신이 게스트 가상 머신(102)인 예시를 도시한다. 게스트 가상 머신(102)은 부트 프로세스를 시작할 수 있다.
방법(400)은 타겟 머신이 부팅을 계속하기 위해 프로비저닝 데이터를 필요로 하는지를 판정하는 단계(단계 404)를 더 포함한다. 따라서, 예를 들어, 게스트 가상 머신(102)은 부팅을 완료하기 위해 프로비저닝 데이터(116)가 필요하다고 판정할 수 있다. 이러한 프로비저닝 데이터는, 예를 들어, 사용자 이름, 패스워드, 머신 설정 등과 같은 다양한 특정 데이터 항목을 포함할 수 있다.
방법(400)은 타겟 머신이 프로비저닝 데이터를 획득하기 위해 보안 인프라(infrastructure)에 접속하는 단계(단계 406)를 더 포함한다. 예를 들어, 보안 인프라는 가상 머신(102)의 VSM(266) 및/또는 KDS(114)와 같은 요소를 포함할 수 있다.
방법(400)은 타겟 머신이 보안 인프라에 의해 검증될 수 있는 신원 주장(identity claim)을 제공하는 단계(단계 408)를 더 포함한다. 예를 들어, 가상 머신(102)은 KDS(114)에 가상 머신(102)을 식별하는 신원 주장을 제공할 수 있다.
보안 인프라가 신원 주장을 검증한 것의 결과로서, 방법(400)은 타겟 머신이 타겟 머신에 봉인된 키를 수립하기 위해 보안 인프라로부터 요청을 수신하는 단계(단계 410)를 더 포함한다. 따라서, 도시된 예시에서, 가상 머신(102)은 키를 수립하라는 요청을 수신할 수 있다.
방법(400)은 타겟 머신이 보안 인프라에 수립된 키를 제공하는 단계(단계 412)를 더 포함한다. 가상 머신(102)은 키(112)를 수립하고 이러한 키를 보안 인프라에 제공할 수 있다.
방법(400)은 타겟 머신이 보안 인프라로부터 프로비저닝 데이터를 수신하는 단계(단계 414)를 더 포함하며, 여기서 프로비저닝 데이터는 수립된 키로 암호화된다. 따라서, 예를 들어, 프로비저닝 서비스(206)는 KDS(114)에 의해 제공된 키(112)를 사용하여 프로비저닝 데이터(116)를 암호화할 수 있다.
방법(400)은 타겟 머신이 암호화된 프로비저닝 데이터를 해독하고, 프로비저닝 데이터를 사용하여 부팅을 완료하는 단계(단계 416)를 더 포함한다. 따라서, VM(102)은 키를 사용하여 프로비저닝 데이터(116)를 해독하고, 이러한 데이터를 사용하여 VM(102)의 부팅을 완료한다.
전술한 예시는 프로비저닝 데이터를 사용하여 호스트에서 가상 머신을 부팅하는 것을 설명하지만, 다른 실시예에서는 다른 머신 및/또는 환경에서 프로비저닝 데이터가 사용될 수 있음을 이해해야 한다. 예를 들어, 프로비저닝 데이터는 다양한 네트워크 및/또는 클러스터 환경에서 다양한 물리적 머신 및/또는 부팅 머신을 부팅하는 데 사용될 수 있다.
예를 들어, 방법(400)은 프로비저닝 데이터를 사용하여 부팅을 완료하는 단계가 네트워크 부팅을 수행하기 위해 프로비저닝 데이터를 사용하여 네트워크 저장 장치에 접속하는 것을 포함하는 환경에서 실시될 수 있다. 대안적으로 또는 부가적으로, 방법(400)은 프로비저닝 데이터를 사용하여 부팅을 완료하는 단계가 머신의 클러스터에 가입하기 위해 프로비저닝 데이터를 사용하는 단계를 포함하는 환경에서 실시될 수 있다. 대안적으로 또는 부가적으로, 방법(400)은 프로비저닝 데이터를 사용하여 부팅을 완료하는 단계는 프로비저닝 데이터를 사용하여 프로비저닝 데이터가 VM에 대한 데이터를 포함하는 호스트 상에 가상 머신(VM)을 생성하는 단계를 포함하는 환경에서 실시될 수 있다.
방법(400)은 타겟 머신이 템플릿에 기초하여 부팅 프로세스를 시작하는 환경에서 실시될 수 있다. 이러한 일부 실시예에서, 상기 방법은 템플릿이 타겟 머신을 부팅하는데 사용하기에 수용 가능한지를 검증하기 위해 프로비저닝 데이터를 사용하는 단계를 더 포함할 수 있다. 대안적으로 또는 부가적으로, 그러한 실시예에서, 방법은 템플릿의 일부가 검증된 후에 템플릿을 변경하는 것을 방지하기 위해 템플릿을 검증하는 단계의 일부로서 템플릿을 타겟 머신에 재암호화하는 단계를 더 포함할 수 있다. 일부 실시예에서, 템플릿을 타겟 머신으로 재암호화하는 단계는 TPM 봉인을 수행하는 단계를 포함할 수 있다.
일부 실시예에서, 방법(400)은 템플릿이 타겟 머신을 부팅시키는데 사용하기에 수용가능함을 검증한 후에 시크릿 데이터(예를 들어, 패스워드, 인증서, 패스워드, 암호 키 등)를 타겟 머신에 주입하는 단계를 더 포함할 수 있다.
방법(400)의 일부 실시예는 (예를 들어, 패브릭 관리자(254)와 같은 VMM으로부터) 타겟 머신에 주입될 논-시크릿 데이터를 수신하는 단계를 더 포함할 수 있다. 방법은 논-시크릿 데이터가 타겟 머신에 주입될 수 있는 논-시크릿 데이터의 카테고리 내의 데이터인 것으로 판정하는 단계를 더 포함할 수 있다. 이 방법은 결과적으로 논-시크릿 데이터를 타겟 머신에 주입하는 단계를 더 포함할 수 있다.
또한, 방법은 하나 이상의 프로세서 및 컴퓨터 메모리와 같은 컴퓨터 판독가능 매체를 포함하는 컴퓨터 시스템에 의해 실시될 수 있다. 특히, 컴퓨터 메모리는 하나 이상의 프로세서에 의해 실행될 때 실시예에서 설명된 단계와 같은 다양한 기능이 수행되도록 하는 컴퓨터 실행가능 명령어를 저장할 수 있다.
본 발명의 실시예는 하기에서 더 상세히 설명되는 바와 같이 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함하거나 이용할 수 있다. 본 발명의 범위 내의 실시예는 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 운반하거나 저장하기 위한 물리적 및 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어를 운반하는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 제한이 아닌 예시로서, 본 발명의 실시예는 물리적인 컴퓨터 판독가능 저장 매체 및 컴퓨터 판독가능 전송 매체 와 같은 적어도 두 개의 뚜렷하게 상이한 종류의 컴퓨터 판독가능 매체를 포함할 수 있다.
물리적 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장 장치(CD, DVD 등), 자기 디스크 저장 장치 또는 다른 자기 저장 디바이스, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 디바이스 간의 전자 데이터 전송을 가능하게 하는 하나 이상의 데이터 링크로 정의된다. 정보가 네트워크 또는 다른 통신 접속부(유선, 무선 또는 유선 또는 무선의 조합)를 통해 컴퓨터로 전송되거나 제공되면, 컴퓨터는 접속부를 전송 매체로 적절하게 간주한다. 전송 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 운반하는데 사용될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 상기의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함된다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 도달할 때, 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 프로그램 코드 수단이 전송 컴퓨터 판독가능 매체로부터 물리적 컴퓨터 판독가능 저장 매체(또는 그 반대)로 자동 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예를 들어, "NIC") 내의 RAM에 버퍼링 될 수 있고, 결국 컴퓨터 시스템 RAM 및/또는 덜 휘발성인 컴퓨터 시스템에서 컴퓨터 판독가능 물리적 저장 매체로 전송될 수 있다. 따라서, 컴퓨터 판독가능 물리적 저장 매체는 전송 매체를 또한 (또는 주로) 이용하는 컴퓨터 시스템 구성 요소에 포함될 수 있다.
컴퓨터 실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 프로세싱 디바이스로 하여금 특정 기능 또는 기능 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어, 바이너리, 어셈블리 언어와 같은 중간 포맷 명령어 또는 심지어 소스 코드일 수 있다. 본 발명이 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 기술되었지만, 첨부된 청구 범위에서 한정된 주제가 반드시 상술한 특징 또는 동작에 반드시 제한되는 것은 아니라는 것을 이해해야 한다. 오히려, 설명된 특징 및 동작은 청구 범위를 구현하는 예시적인 형태로서 개시된다.
당업자는 본 발명이 퍼스널 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드-헬드 디바이스, 멀티-프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 소비자 전자 장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 이동 전화, PDA, 호출기, 라우터, 스위치 등을 포함하는 여러 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있다는 것을 이해할 것이다. 본 발명은 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크 또는 유선 및 무선 데이터 링크의 조합에 의해) 링크된 로컬 및 원격 컴퓨터 시스템 모두가 작업을 수행하는 분산 시스템 환경에서도 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 모두에 위치할 수 있다.
대안적으로 또는 부가적으로, 본 명세서에 기능적으로 설명된 것은 적어도 부분적으로 하나 이상의 하드웨어 로직 컴포넌트에 의해 수행될 수 있다. 예를 들어, 사용될 수 있는 하드웨어 로직 컴포넌트의 예시적인 유형은 FPGA(Field-programmable Gate Arrays), ASIC(Program-specific Integrated Circuits), ASSP(Program-specific Standard Products), SOC(system-on-a-chip systems), CPLD(Complex Programmable Logic Devices) 등을 포함하지만, 이에 제한되지 않는다.
본 발명은 그 사상 또는 특성을 벗어나지 않고 다른 특정 형태로 실시될 수있다. 설명된 실시예는 모든 면에서 단지 예시적인 것으로서 제한적이지는 않다. 그러므로, 본 발명의 범위는 전술한 설명보다는 첨부된 청구 범위에 의해 표시된다. 청구 범위와 균등한 의미 및 범위 내에 있는 모든 변경은 그 범위 내에 포함되어야 한다.

Claims (17)

  1. 컴퓨팅 환경에서, 안전한 방식으로 잠재적으로 안전하지 않은 환경에서 머신을 부팅하는 방법으로서,
    상기 방법은,
    타겟 머신이 템플릿(template)에 기초하여 부트 프로세스를 시작하는 단계와,
    상기 타겟 머신이, 프로비저닝 데이터(provisioning data)가 부팅을 계속하는 데 필요한지를 판정하는 단계와,
    상기 타겟 머신이, 상기 프로비저닝 데이터를 획득하기 위해 안전한 인프라(infrastructure)에 접속하는 단계와,
    상기 타겟 머신이, 상기 안전한 인프라에 의해 검증될 수 있는 신원 주장(identity claim)을 제공하는 단계와,
    상기 안전한 인프라가 상기 신원 주장을 검증한 결과로서, 상기 타겟 머신이 상기 타겟 머신에 대해 봉인된(sealed) 키를 수립하라는 요청을 상기 안전한 인프라로부터 수신하는 단계와,
    상기 타겟 머신이 상기 수립된 키를 상기 안전한 인프라에 제공하는 단계와,
    상기 타겟 머신이 상기 안전한 인프라로부터 상기 프로비저닝 데이터를 수신하는 단계 - 상기 프로비저닝 데이터는 상기 수립된 키에 대해 암호화됨 - 와,
    상기 타겟 머신이 상기 암호화된 프로비저닝 데이터를 해독하고, 상기 프로비저닝 데이터를 사용하여 상기 템플릿을 상기 타겟 머신의 부팅에 사용하는 것이 허용될 수 있는지를 검증한 후, 상기 프로비저닝 데이터를 사용하여 상기 타겟 머신의 부팅을 완료하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 상기 부팅을 완료하는 단계는,
    상기 프로비저닝 데이터를 사용하여, 네트워크 부팅을 수행하기 위해 네트워크 저장소에 접속하는 단계를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 상기 부팅을 완료하는 단계는,
    상기 프로비저닝 데이터를 사용하여 머신의 클러스터에 가입하는 단계를 포함하는
    방법.
  4. 제 1 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 상기 부팅을 완료하는 단계는,
    상기 프로비저닝 데이터를 사용하여 상기 프로비저닝 데이터가 가상 머신(VM)을 위한 데이터를 포함하는 호스트 상에서 상기 VM을 생성하는 단계를 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 템플릿의 일부가 검증된 이후에 상기 템플릿이 변조되는 것을 방지하기 위해 상기 템플릿을 검증하는 단계의 일부로서 상기 템플릿을 상기 타겟 머신에 대해 재암호화하는 단계를 더 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 템플릿을 상기 타겟 머신의 부팅에 사용하는 것이 허용될 수 있는지 검증한 후에, 시크릿 데이터를 상기 타겟 머신에 주입(injecting)하는 단계를 더 포함하는
    방법.
  7. 제 1 항에 있어서,
    상기 타겟 머신에 주입될 논-시크릿 데이터를 수신하는 단계와,
    상기 논-시크릿 데이터가, 상기 타겟 머신에 주입되는 것이 허용된 논-시크릿 데이터의 카테고리 내에 속하는 데이터인지 판정하는 단계와,
    결과에 따라, 상기 논-시크릿 데이터를 상기 타겟 머신에 주입하는 단계를 더 포함하는
    방법.
  8. 컴퓨팅 환경에서, 컴퓨터 실행가능 명령어를 포함하는 하나 이상의 컴퓨터 판독가능 물리적 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는 하나 이상의 프로세서에 의해 실행되는 경우에,
    타겟 머신이 템플릿에 기초하여 부트 프로세스를 시작하는 것과,
    상기 타겟 머신이, 프로비저닝 데이터가 부팅을 계속하는 데 필요한지를 판정하는 것과,
    상기 타겟 머신이, 상기 프로비저닝 데이터를 획득하기 위해 안전한 인프라에 접속하는 것과,
    상기 타겟 머신이, 상기 안전한 인프라에 의해 검증될 수 있는 신원 주장을 제공하는 것과,
    상기 안전한 인프라가 상기 신원 주장을 검증한 결과로서, 상기 타겟 머신이 상기 타겟 머신에 대해 봉인된 키를 수립하라는 요청을 상기 안전한 인프라로부터 수신하는 것과,
    상기 타겟 머신이 상기 수립된 키를 상기 안전한 인프라에 제공하는 것과,
    상기 타겟 머신이 상기 안전한 인프라로부터 상기 프로비저닝 데이터를 수신하는 것 - 상기 프로비저닝 데이터는 상기 수립된 키에 대해 암호화됨 - 과,
    상기 타겟 머신이 상기 암호화된 프로비저닝 데이터를 해독하는 것과,
    상기 타겟 머신이 상기 프로비저닝 데이터를 사용하여 상기 템플릿을 상기 타겟 머신의 부팅에 사용하는 것이 허용될 수 있는지를 검증하는 것과,
    상기 타겟 머신이 상기 프로비저닝 데이터를 사용하여 부팅을 완료하는 것을 수행하는
    컴퓨터 판독가능 저장 매체.
  9. 제 8 항에 있어서,
    하나 이상의 프로세서에 의해 실행되는 경우에, 상기 템플릿의 일부가 검증된 이후에 상기 템플릿이 변조되는 것을 방지하기 위해 상기 템플릿을 검증하는 것의 일부로서 상기 템플릿을 상기 타겟 머신에 대해 재암호화하는 것을 수행하는 컴퓨터 실행가능 명령어를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  10. 제 8 항에 있어서,
    하나 이상의 프로세서에 의해 실행되는 경우에,
    상기 타겟 머신에 주입될 논-시크릿 데이터를 수신하는 것과,
    상기 논-시크릿 데이터가 상기 타겟 머신에 주입되는 것이 허용된 논-시크릿 데이터의 카테고리 내에 속하는 데이터인지 판정하는 것과,
    결과에 따라, 상기 논-시크릿 데이터를 상기 타겟 머신에 주입하는 것을 수행하는 컴퓨터 실행가능 명령어를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  11. 컴퓨터 실행가능 명령어를 실행하는 하나 이상의 프로세서를 포함하는 컴퓨팅 시스템으로서,
    상기 컴퓨터 실행가능 명령어는 실행되는 경우에, 잠재적으로 안전하지 않은 환경에서 안전한 방식으로 타겟 머신을 부팅하는 아키텍처로 상기 컴퓨팅 시스템을 구성하고, 상기 아키텍처는
    템플릿에 기초하여 타겟 머신에 대한 부트 프로세스를 시작하는 것과,
    프로비저닝 데이터가 부팅을 계속하는 데 필요한지를 판정하는 것과,
    상기 프로비저닝 데이터를 획득하기 위해 안전한 인프라에 접속하는 것과,
    상기 안전한 인프라에 의해 검증될 수 있는 신원 주장(identity claim)을 제공하는 것과,
    상기 안전한 인프라가 상기 신원 주장을 검증한 결과로서, 상기 타겟 머신이 상기 타겟 머신에 대해 봉인된 키를 수립하라는 요청을 상기 안전한 인프라로부터 수신하는 것과,
    상기 수립된 키를 상기 안전한 인프라에 제공하는 것과,
    상기 안전한 인프라로부터 상기 프로비저닝 데이터를 수신하는 것 - 상기 프로비저닝 데이터는 상기 수립된 키에 대해 암호화됨 - 과,
    상기 암호화된 프로비저닝 데이터를 해독하고, 상기 프로비저닝 데이터를 사용하여 상기 템플릿을 상기 타겟 머신의 부팅에 사용하는 것이 허용될 수 있는지를 검증한 후, 상기 프로비저닝 데이터를 사용하여 상기 타겟 머신의 부팅을 완료하는 것을 수행하는
    컴퓨팅 시스템.
  12. 제 11 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 부팅을 완료하는 것은,
    상기 프로비저닝 데이터를 사용하여, 네트워크 부팅을 수행하기 위해 네트워크 저장소에 접속하는 것을 포함하는
    컴퓨팅 시스템.
  13. 제 11 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 상기 부팅을 완료하는 것은,
    상기 프로비저닝 데이터를 사용하여 머신의 클러스터에 가입하는 것을 포함하는
    컴퓨팅 시스템.
  14. 제 11 항에 있어서,
    상기 프로비저닝 데이터를 사용하여 상기 부팅을 완료하는 것은,
    상기 프로비저닝 데이터를 사용하여, 상기 프로비저닝 데이터가 가상 머신(VM)을 위한 데이터를 포함하는 호스트 상에서 상기 VM을 생성하는 것을 포함하는
    컴퓨팅 시스템.
  15. 제 11 항에 있어서,
    상기 아키텍처는,
    상기 템플릿의 일부가 검증된 이후에 상기 템플릿이 변조되는 것을 방지하기 위해 상기 템플릿을 검증하는 것의 일부로서 상기 템플릿을 상기 타겟 머신에서 재암호화하는 것을 더 수행하는
    컴퓨팅 시스템.
  16. 제 11 항에 있어서,
    상기 아키텍처는,
    상기 템플릿을 상기 타겟 머신을 부팅하는 데 사용하는 것이 허용될 수 있는지 검증한 후에, 시크릿 데이터를 상기 타겟 머신에 주입하는 것을 더 수행하는
    컴퓨팅 시스템.
  17. 제 11 항에 있어서,
    상기 아키텍처는,
    상기 타겟 머신에 주입될 논-시크릿 데이터를 수신하는 것과,
    상기 논-시크릿 데이터가 상기 타겟 머신에 주입되는 것이 허용된 논-시크릿 데이터의 카테고리 내에 속하는 데이터인지 판정하는 것과,
    결과에 따라, 상기 논-시크릿 데이터를 상기 타겟 머신에 주입하는 것을 더 수행하는
    컴퓨팅 시스템.
KR1020177012885A 2014-11-14 2015-11-03 암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법 KR102376419B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/542,341 2014-11-14
US14/542,341 US9519787B2 (en) 2014-11-14 2014-11-14 Secure creation of encrypted virtual machines from encrypted templates
PCT/US2015/058700 WO2016118205A2 (en) 2014-11-14 2015-11-03 Secure creation of encrypted virtual machines from encrypted templates

Publications (2)

Publication Number Publication Date
KR20170085503A KR20170085503A (ko) 2017-07-24
KR102376419B1 true KR102376419B1 (ko) 2022-03-17

Family

ID=55961963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177012885A KR102376419B1 (ko) 2014-11-14 2015-11-03 암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법

Country Status (5)

Country Link
US (2) US9519787B2 (ko)
EP (1) EP3218839B1 (ko)
KR (1) KR102376419B1 (ko)
CN (1) CN107003866B (ko)
WO (1) WO2016118205A2 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10353722B2 (en) * 2010-07-21 2019-07-16 Nec Corporation System and method of offloading cryptography processing from a virtual machine to a management module
US9519498B2 (en) 2013-12-24 2016-12-13 Microsoft Technology Licensing, Llc Virtual machine assurances
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10229272B2 (en) 2014-10-13 2019-03-12 Microsoft Technology Licensing, Llc Identifying security boundaries on computing devices
US9519787B2 (en) 2014-11-14 2016-12-13 Microsoft Technology Licensing, Llc Secure creation of encrypted virtual machines from encrypted templates
EP3032453B1 (en) * 2014-12-08 2019-11-13 eperi GmbH Storing data in a server computer with deployable encryption/decryption infrastructure
US10154023B1 (en) * 2014-12-18 2018-12-11 EMC IP Holding Company LLC Method and system for secure instantiation of an operation system within the cloud
US11061705B2 (en) * 2015-03-16 2021-07-13 Bmc Software, Inc. Maintaining virtual machine templates
US9826041B1 (en) 2015-06-04 2017-11-21 Amazon Technologies, Inc. Relative placement of volume partitions
US9826030B1 (en) * 2015-06-04 2017-11-21 Amazon Technologies, Inc. Placement of volume partition replica pairs
US9848039B2 (en) * 2015-09-22 2017-12-19 International Business Machines Corporation Deployment of virtual machines
US10069626B2 (en) * 2016-02-23 2018-09-04 Red Hat, Inc. Multiple encryption keys for a virtual machine
US10234921B2 (en) * 2016-03-04 2019-03-19 Schneider Electric USA, Inc. Systems and methods for operating a virtual power environment
US10192047B2 (en) * 2016-06-28 2019-01-29 Cisco Technology, Inc. Provisioning of identity information
US10177910B2 (en) 2016-08-31 2019-01-08 Microsoft Technology Licensing, Llc Preserving protected secrets across a secure boot update
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US10972265B2 (en) 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
US10897459B2 (en) * 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US11070432B2 (en) * 2017-07-20 2021-07-20 Cisco Technology, Inc. Dynamic and customizable virtual network functions
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
CN112214293A (zh) * 2017-11-08 2021-01-12 华为技术有限公司 一种无服务器架构下业务部署的方法和函数管理平台
US10417034B2 (en) * 2017-12-18 2019-09-17 Red Hat Israel, Ltd. Gradual creation process of server virtual machines
US11238015B2 (en) * 2018-01-25 2022-02-01 Citrix Systems, Inc. Instant hyper-v streaming
US10848474B2 (en) 2018-02-26 2020-11-24 Red Hat, Inc. Firmware validation for encrypted virtual machines
US10891385B2 (en) * 2018-05-16 2021-01-12 Microsoft Technology Licensing, Llc Encryption at rest for cloud-resourced virtual machines
US10839069B2 (en) * 2018-07-10 2020-11-17 Microsoft Technology Licensing, Llc Protecting artificial intelligence models using virtual secure mode
US11080403B1 (en) * 2018-12-19 2021-08-03 Hewlett-Packard Development Company, L.P. Securely constructing a trusted virtual environment
US11438151B2 (en) * 2019-04-03 2022-09-06 Cisco Technology, Inc. Enriching local cryptoprocessor queries with sdn augmented information
US11544381B2 (en) 2019-07-01 2023-01-03 Hewlett Packard Enterprise Development Lp Configuration of server using stored security elements
US11520595B2 (en) * 2019-07-12 2022-12-06 Schlumberger Technology Corporation Industrial internet of things gateway boot methods
US11159453B2 (en) 2019-08-22 2021-10-26 International Business Machines Corporation Fabric-based storage-server connection
EP3817332B1 (en) * 2019-10-30 2024-04-24 Secure Thingz Limited Data provisioning device for provisioning a data processing entity
US11228423B2 (en) 2020-01-12 2022-01-18 Advanced New Technologies Co., Ltd. Method and device for security assessment of encryption models
US20210224109A1 (en) * 2020-01-16 2021-07-22 Cisco Technology, Inc. Systems and methods for orchestrating cloud resources
US11475131B2 (en) 2020-01-27 2022-10-18 Red Hat, Inc. Hypervisor level signature checks for encrypted trusted execution environments
US11611540B2 (en) * 2020-07-01 2023-03-21 Vmware, Inc. Protection of authentication data of a server cluster
US11709700B2 (en) * 2021-01-13 2023-07-25 Vmware, Inc. Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system
US11893410B2 (en) 2021-01-13 2024-02-06 Vmware, Inc. Secure storage of workload attestation reports in a virtualized and clustered computer system
US20220222100A1 (en) * 2021-01-13 2022-07-14 Vmware, Inc. Integrity protection of container image disks using secure hardware-based attestation in a virtualized and clustered computer system
CN115617256A (zh) * 2021-07-12 2023-01-17 戴尔产品有限公司 基于指定虚拟机引导条件的确定可能性在存储集群的存储节点中移动虚拟卷
US11954513B2 (en) 2021-07-29 2024-04-09 Commvault Systems, Inc. Scalable recovery and/or migration to cloud- based custom-made virtual machines without using failed machines' credentials
US11914686B2 (en) 2021-10-15 2024-02-27 Pure Storage, Inc. Storage node security statement management in a distributed storage cluster
EP4216088A1 (en) * 2022-01-21 2023-07-26 Cysec SA Extended secure boot for launching a virtual machine

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001063831A1 (en) 2000-02-24 2001-08-30 Valicert Corporation Mechanism for efficient private bulk messaging
GB2382419B (en) 2001-11-22 2005-12-14 Hewlett Packard Co Apparatus and method for creating a trusted environment
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US20050166051A1 (en) 2004-01-26 2005-07-28 Mark Buer System and method for certification of a secure platform
US7552419B2 (en) 2004-03-18 2009-06-23 Intel Corporation Sharing trusted hardware across multiple operational environments
US7380119B2 (en) 2004-04-29 2008-05-27 International Business Machines Corporation Method and system for virtualization of trusted platform modules
US7590867B2 (en) 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
US7802250B2 (en) 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US20060126836A1 (en) 2004-12-10 2006-06-15 Hector Rivas System and method for dynamic generation of encryption keys
US7725703B2 (en) 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US7860802B2 (en) 2005-02-01 2010-12-28 Microsoft Corporation Flexible licensing architecture in content rights management systems
US7836299B2 (en) 2005-03-15 2010-11-16 Microsoft Corporation Virtualization of software configuration registers of the TPM cryptographic processor
US8074262B2 (en) 2005-05-13 2011-12-06 Intel Corporation Method and apparatus for migrating virtual trusted platform modules
US7636442B2 (en) * 2005-05-13 2009-12-22 Intel Corporation Method and apparatus for migrating software-based security coprocessors
US7613921B2 (en) 2005-05-13 2009-11-03 Intel Corporation Method and apparatus for remotely provisioning software-based security coprocessors
JP2007004661A (ja) 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8090919B2 (en) 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US8549592B2 (en) 2005-07-12 2013-10-01 International Business Machines Corporation Establishing virtual endorsement credentials for dynamically generated endorsement keys in a trusted computing platform
US9425958B2 (en) 2005-08-05 2016-08-23 Hewlett Packard Enterprise Development Lp System, method and apparatus for cryptography key management for mobile devices
EP1977317A1 (en) 2006-01-24 2008-10-08 Citrix Systems, Inc. Methods and systems for providing access to a computing environment
US7444670B2 (en) 2006-03-21 2008-10-28 International Business Machines Corporation Method and apparatus for migrating a virtual TPM instance and preserving uniqueness and completeness of the instance
JP5038396B2 (ja) 2006-04-21 2012-10-03 インターデイジタル テクノロジー コーポレーション トラステッドコンピューティングの完全性測定の通知を実行する装置および方法
US8108668B2 (en) 2006-06-26 2012-01-31 Intel Corporation Associating a multi-context trusted platform module with distributed platforms
US8522018B2 (en) 2006-08-18 2013-08-27 Fujitsu Limited Method and system for implementing a mobile trusted platform module
EP2080142B1 (en) 2006-08-31 2014-09-24 International Business Machines Corporation Attestation of computing platforms
US9135444B2 (en) 2006-10-19 2015-09-15 Novell, Inc. Trusted platform module (TPM) assisted data center management
KR20080085780A (ko) * 2007-03-20 2008-09-24 이상규 운영체제의 가상화 방법
US8151262B2 (en) 2007-03-30 2012-04-03 Lenovo (Singapore) Pte. Ltd. System and method for reporting the trusted state of a virtual machine
US8875266B2 (en) 2007-05-16 2014-10-28 Vmware, Inc. System and methods for enforcing software license compliance with virtual machines
US8060876B2 (en) 2007-08-10 2011-11-15 Intel Corporation Methods and apparatus for creating an isolated partition for a virtual trusted platform module
US9043896B2 (en) * 2007-08-31 2015-05-26 International Business Machines Corporation Device certificate based appliance configuration
US8249257B2 (en) 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
US20090204964A1 (en) 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8220029B2 (en) 2007-11-13 2012-07-10 Samsung Electronics Co., Ltd. Method and system for enforcing trusted computing policies in a hypervisor security module architecture
US8208637B2 (en) 2007-12-17 2012-06-26 Microsoft Corporation Migration of computer secrets
JP5411122B2 (ja) 2008-02-25 2014-02-12 パナソニック株式会社 情報処理装置
WO2009123640A1 (en) 2008-04-04 2009-10-08 Hewlett-Packard Development Company, L.P. Virtual machine manager system and methods
US8543799B2 (en) * 2008-05-02 2013-09-24 Microsoft Corporation Client authentication during network boot
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8307353B2 (en) 2008-08-12 2012-11-06 Oracle America, Inc. Cross-domain inlining in a system virtual machine
US20100082960A1 (en) * 2008-09-30 2010-04-01 Steve Grobman Protected network boot of operating system
US8411863B2 (en) 2008-10-03 2013-04-02 Microsoft Corporation Full volume encryption in a clustered environment
US8341427B2 (en) 2009-02-16 2012-12-25 Microsoft Corporation Trusted cloud computing and services framework
US8375195B2 (en) 2009-03-05 2013-02-12 Oracle America, Inc. Accessing memory locations for paged memory objects in an object-addressed memory system
EP2457176B1 (en) 2009-07-24 2018-11-14 EntIT Software LLC Virtual-machine based application-service provision
US8713182B2 (en) 2009-08-03 2014-04-29 Oracle International Corporation Selection of a suitable node to host a virtual machine in an environment containing a large number of nodes
US8700893B2 (en) * 2009-10-28 2014-04-15 Microsoft Corporation Key certification in one round trip
US8478996B2 (en) 2009-12-21 2013-07-02 International Business Machines Corporation Secure Kerberized access of encrypted file system
US9703586B2 (en) 2010-02-17 2017-07-11 Microsoft Technology Licensing, Llc Distribution control and tracking mechanism of virtual machine appliances
US9081989B2 (en) 2010-03-25 2015-07-14 Virtustream Canada Holdings, Inc. System and method for secure cloud computing
US8375437B2 (en) 2010-03-30 2013-02-12 Microsoft Corporation Hardware supported virtualized cryptographic service
US20110246778A1 (en) * 2010-03-31 2011-10-06 Emc Corporation Providing security mechanisms for virtual machine images
US8375220B2 (en) * 2010-04-02 2013-02-12 Intel Corporation Methods and systems for secure remote wake, boot, and login to a computer from a mobile device
US8555377B2 (en) * 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
EP2577539B1 (en) 2010-06-02 2018-12-19 VMware, Inc. Securing customer virtual machines in a multi-tenant cloud
US8694777B2 (en) * 2010-08-13 2014-04-08 International Business Machines Corporation Securely identifying host systems
ES2581548T3 (es) 2010-08-18 2016-09-06 Security First Corp. Sistemas y procedimientos para asegurar entornos informáticos de máquinas virtuales
EP2609511B1 (en) 2010-08-26 2016-10-19 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
TW201241662A (en) 2010-12-21 2012-10-16 Ibm Virtual machine validation
US9202062B2 (en) 2010-12-21 2015-12-01 International Business Machines Corporation Virtual machine validation
US8880667B2 (en) 2011-02-09 2014-11-04 Microsoft Corporation Self regulation of the subject of attestation
US9100188B2 (en) 2011-04-18 2015-08-04 Bank Of America Corporation Hardware-based root of trust for cloud environments
US9172683B2 (en) 2011-06-29 2015-10-27 Apple Inc. Method and apparatus for key distribution with implicit offline authorization
US8732462B2 (en) 2011-07-07 2014-05-20 Ziptr, Inc. Methods and apparatus for secure data sharing
US8874935B2 (en) 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US9270459B2 (en) 2011-09-20 2016-02-23 Cloudbyte, Inc. Techniques for achieving tenant data confidentiality from cloud service provider administrators
US8694786B2 (en) 2011-10-04 2014-04-08 International Business Machines Corporation Virtual machine images encryption using trusted computing group sealing
US20130097296A1 (en) 2011-10-18 2013-04-18 Telefonaktiebolaget L M Ericsson (Publ) Secure cloud-based virtual machine migration
EP2807599B1 (en) 2012-01-23 2020-03-25 Citrix Systems, Inc. Storage encryption
US8909939B1 (en) 2012-04-04 2014-12-09 Google Inc. Distribution of cryptographic host keys in a cloud computing environment
US20150134965A1 (en) * 2012-05-24 2015-05-14 Telefonaktiebolaget L M Ericsson (Publ) Enhanced Secure Virtual Machine Provisioning
US20140007087A1 (en) 2012-06-29 2014-01-02 Mark Scott-Nash Virtual trusted platform module
US20140019753A1 (en) 2012-07-10 2014-01-16 John Houston Lowry Cloud key management
US10248442B2 (en) 2012-07-12 2019-04-02 Unisys Corporation Automated provisioning of virtual machines
US20140052877A1 (en) 2012-08-16 2014-02-20 Wenbo Mao Method and apparatus for tenant programmable logical network for multi-tenancy cloud datacenters
US8997173B2 (en) 2012-09-12 2015-03-31 Ca, Inc. Managing security clusters in cloud computing environments using autonomous security risk negotiation agents
US8782401B2 (en) 2012-09-26 2014-07-15 Intel Corporation Enhanced privacy ID based platform attestation
US8924720B2 (en) 2012-09-27 2014-12-30 Intel Corporation Method and system to securely migrate and provision virtual machine images and content
US8700898B1 (en) 2012-10-02 2014-04-15 Ca, Inc. System and method for multi-layered sensitive data protection in a virtual computing environment
US9374228B2 (en) 2012-10-12 2016-06-21 International Business Machines Corporation Verifying a geographic location of a virtual disk image executing at a data center server within a data center
US20140281497A1 (en) 2013-03-13 2014-09-18 General Instrument Corporation Online personalization update system for externally acquired keys
US9027087B2 (en) 2013-03-14 2015-05-05 Rackspace Us, Inc. Method and system for identity-based authentication of virtual machines
CN105408910B (zh) * 2013-08-28 2019-03-08 英特尔公司 用于利用无线通信对用户进行验证的系统和方法
US9401954B2 (en) 2013-11-06 2016-07-26 International Business Machines Corporation Scaling a trusted computing model in a globally distributed cloud environment
US9519498B2 (en) 2013-12-24 2016-12-13 Microsoft Technology Licensing, Llc Virtual machine assurances
US9507935B2 (en) 2014-01-16 2016-11-29 Fireeye, Inc. Exploit detection system with threat-aware microvisor
US9891918B2 (en) 2014-01-27 2018-02-13 Via Alliance Semiconductor Co., Ltd. Fractional use of prediction history storage for operating system routines
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US9519787B2 (en) 2014-11-14 2016-12-13 Microsoft Technology Licensing, Llc Secure creation of encrypted virtual machines from encrypted templates

Also Published As

Publication number Publication date
WO2016118205A2 (en) 2016-07-28
US20160140343A1 (en) 2016-05-19
CN107003866B (zh) 2020-02-28
EP3218839A2 (en) 2017-09-20
KR20170085503A (ko) 2017-07-24
US20170061128A1 (en) 2017-03-02
US10181037B2 (en) 2019-01-15
CN107003866A (zh) 2017-08-01
WO2016118205A3 (en) 2016-09-15
EP3218839B1 (en) 2019-10-23
US9519787B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
KR102376419B1 (ko) 암호화된 템플릿으로부터 암호화된 가상 머신의 안전한 생성 기법
US12003638B2 (en) Secure provisioning of operating systems
US9686278B1 (en) Method and system for configuring computing devices
US9698988B2 (en) Management control method, apparatus, and system for virtual machine
US9626512B1 (en) Validating using an offload device security component
US8694786B2 (en) Virtual machine images encryption using trusted computing group sealing
US8745386B2 (en) Single-use authentication methods for accessing encrypted data
US10243739B1 (en) Validating using an offload device security component
US10211985B1 (en) Validating using an offload device security component
WO2015171478A1 (en) Attestation of a host containing a trusted execution environment
AU2018201934B2 (en) Network based management of protected data sets
KR20220038082A (ko) 보안 런타임 시스템들 및 방법들
US20220222100A1 (en) Integrity protection of container image disks using secure hardware-based attestation in a virtualized and clustered computer system
WO2023073463A1 (en) Trusted workload execution
US11709700B2 (en) Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system
US20230168911A1 (en) Customized initialization code delivery over network for zero-trust virtual machine
US11893410B2 (en) Secure storage of workload attestation reports in a virtualized and clustered computer system
Sisinni Verification of software integrity in distributed systems
Pedone et al. Trusted computing technology and proposals for resolving cloud computing security problems
Sadeghi Property-Based Attestation Approach and Virtual TPM
Cabiddu et al. Building a Trusted Environment for Security Applications

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant