KR20070020520A - 신뢰 플랫폼 모듈의 보안 가시화를 위한 방법 및 장치 - Google Patents

신뢰 플랫폼 모듈의 보안 가시화를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20070020520A
KR20070020520A KR1020067026953A KR20067026953A KR20070020520A KR 20070020520 A KR20070020520 A KR 20070020520A KR 1020067026953 A KR1020067026953 A KR 1020067026953A KR 20067026953 A KR20067026953 A KR 20067026953A KR 20070020520 A KR20070020520 A KR 20070020520A
Authority
KR
South Korea
Prior art keywords
tpm
virtual
processing system
physical
service
Prior art date
Application number
KR1020067026953A
Other languages
English (en)
Other versions
KR100917290B1 (ko
Inventor
빈센트 스카라타
카를로스 로제스
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Priority to KR1020067026953A priority Critical patent/KR100917290B1/ko
Publication of KR20070020520A publication Critical patent/KR20070020520A/ko
Application granted granted Critical
Publication of KR100917290B1 publication Critical patent/KR100917290B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

본 방법 및 관련 장치는 가상 신뢰 플랫폼 모듈(TPM)을 제공한다. 일 실시예일 실시예M 서비스는 물리 TPM을 포함하는 프로세싱 시스템에서 사용되는 가상 TPM을 생성한다. 가상 TPM 서비스는 물리 TPM에 가상 TPM용 키를 저장할 수도 있다. 가상 TPM 서비스는 에뮬레이트된 물리 TPM 기능들을 제공하기 위해 가상 TPM을 사용할 수도 있다. 한 실시예에서, 가상 TPM 서비스는 프로세싱 시스템에서 가상 컴퓨터를 위한 물리 TPM을 에뮬레이트하기 위해 가상 TPM을 사용할 수도 있다. 다른 실시예들이 기술되고 청구된다.
신뢰 플랫폼 모듈(TPM), 프로세싱 시스템, 가상 TPM, 가상 컴퓨터(VM), 가상 TPM 서비스

Description

신뢰 플랫폼 모듈의 보안 가시화를 위한 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING SECURE VIRTUALIZATION OF A TRUSTED PLATFORM MODULE}
본 발명은 일반적으로 데이터 프로세싱에 관한 것으로, 특히, 신뢰 플랫폼 모듈의 보안 가시화를 제공하기 위한 방법 및 장치에 관한 것이다.
종래의 프로세싱 시스템은 중앙 처리 장치(CPU) 및 랜덤 액세스 메모리(RAM)와 같은 하드웨어 리소스 뿐만 아니라 오퍼레이팅 시스템(OS) 및 하나 이상의 엔드-유저 프로그램들 또는 애플리케이션과 같은 소프트웨어 리소스를 포함할 수도 있다. 애플리케이션은 통상 특정 OS에서 실행되도록 개발된다. 전형적인 종래의 컴퓨터 시스템이 시작될 때, 엔드-유저 프로그램 또는 애플리케이션을 로드하기 전에 OS를 로드한다. OS는 통상 프로세싱 시스템에서 소프트웨어 애플리케이션과 하드웨어 간의 중재자로서 작용한다.
RAM 및 하나 이상의 CPU들 외에, 프로세싱 시스템은 신뢰 플랫폼 모듈(TPM; trusted platform module)을 포함할 수도 있다. TPM은 프로세싱 시스템 내에 존재하고 프로세싱 시스템의 보안을 강화하기 위해 다양한 기능들 및 서비스들을 제공하는 하드웨어 컴포넌트이다. 예를 들어, TPM은 플랫폼의 구성을 증명하고 데이터를 보호하는데 사용될 수도 있다. TPM의 서브-컴포넌트들은 실행 엔진 및 보안 비 휘발성(NV; non-volatile) 메모리 또는 스토리지를 포함할 수도 있다. 보안 NV 메모리는 암호화 키들과 같은 민감한 정보를 저장하는데 사용되고, 실행 엔진은 TPM에 의해 구현되는 보안 정책들에 따라 민감한 정보를 보호한다.
TPM은 디자인 원칙(Design Principles), TPM의 구조 및 TPM 커맨드와 같은 부분들을 포함하는 2003년 10월 2일 날짜의 신뢰 컴퓨팅 그룹(TCG; Trusted Computing Group) TPM 사양 버전 1.2와 같은 사양들에 따라 구현될 수도 있다. TPM 사양은 TCG에 의해 공개되고 인터넷의 www.trustedcomputinggroup.org/home에서 얻을 수 있다.
일반적으로, TCG-컴플라이언트 TPM은 플랫폼의 특징들에 기초하여 플랫폼의 아이덴티티 및/또는 완전성(integrity)을 증명하는 것과 같은 보안 서비스들을 제공한다. TPM에 의해 통상 고려되는 플랫폼 특징들은 프로세서 및 칩셋과 같은 플랫폼의 하드웨어 컴포넌트들 뿐만 아니라 펌웨어 및 OS와 같은 플랫폼에 존재하는 소프트웨어를 포함한다. TPM은 소프트웨어 프로세스들의 감사(auditing) 및 로깅(logging) 뿐만 아니라 플랫폼 부트 완전성 검증, 파일 완전성 검증 및 소프트웨어 라이선싱 검증을 지원할 수도 있다. 따라서, TPM이 플랫폼을 위한 신뢰 루트를 제공한다고 말할 수 있다. 따라서, 서드 파티(third party)는 요청 시스템이 TPM-기반 플랫폼 증명을 제공할 것을 요구하는 보안 정책들을 구현할 수도 있다. 예를 들어, 클라이언트 요청들이 클라이언트 시스템들로부터의 유효한 TPM-기반 플랫폼 증명을 가지지 못하면, 서드 파티는 상기 요청들을 취소하도록 서버를 구성할 수 있다.
그러나, 종래의 프로세싱 시스템이 TPM을 사용하는 경우, 프로세싱 시스템은 한번에 오직 하나의 소프트웨어 환경만을 지원할 수 있다.
최근, 인텔 코포레이션은 단일 프로세싱 시스템 내에 다중의(multiple) 독립 소프트웨어 환경들을 제공하기 위한 기술을 개발하기 시작했다. 예를 들어, 인텔 코포레이션에 의해 개발된 기술은 다수의 OS들이 동일한 기계에서 동시에 실행될 수 있는 방법으로 프로세싱 시스템의 하드웨어 리소스들을 분할 및 관리하는 기능들을 포함하는데, 각각의 OS는 자신의 독립적인 물리적 컴퓨터(machine) 내에 있는 것처럼 실질적으로 동작한다. 상기 프로세싱 시스템에서, 각각의 OS는 실제로 독립 소프트웨어 환경 내에서 동작할 수도 있다. 이러한 독립 환경들은 파티션들 또는 가상 컴퓨터(VM)들이라고 불리운다.
본 발명의 특징들 및 장점들은 첨부된 청구항들, 하나 이상의 예시적 실시예들의 상세한 설명 및 대응 도면들로부터 명백해질 것이다.
도 1은 본 발명의 일 실시예의 특정 양상들이 구현될 수 있는 적합한 데이터 프로세싱 환경을 도시한 블록도.
도 2는 본 발명의 일 실시예에 따른 적합한 가상 컴퓨터 아키텍처를 도시한 블록도.
도 3은 본 발명의 일 실시예에 따른 가상 TPM을 제공하는 프로세스를 도시한 흐름도.
도 4는 본 발명의 일 실시예에 따른 가상 TPM을 사용하는 프로세스를 도시한 흐름도.
가상 TPM(vTPM)은 TPM과 유사한 기능들을 제공하는 논리 디바이스이다. 본 설명은 가상 TPM을 제공하기 위한 시스템들, 방법들 및 장치들의 하나 이상의 실시예들을 설명한다.
도 1은 본 발명의 일례의 실시예의 특정 양상들이 구현될 수 있는 적합한 데이터 프로세싱 환경(12)을 도시한 블록도이다. 데이터 프로세싱 환경(12)은 하나 이상의 시스템 버스들(24) 또는 다른 통신 경로들이나 매체들을 통해 다양한 다른 컴포넌트들에 통신 결합된 하나 이상의 프로세서들 또는 중앙 처리 장치들(CPU)(22)을 포함하는 프로세싱 시스템(20)을 포함한다.
본 명세서에서 사용된 "프로세싱 시스템" 및 "데이터 프로세싱 시스템"이라는 용어들은 단일 컴퓨터(machine), 또는 함께 동작하는 통신 결합된 컴퓨터들 또는 디바이스들의 시스템을 광범위하게 포함한다. 일례의 프로세싱 시스템들은 분산 컴퓨팅 시스템들, 슈퍼컴퓨터들, 고성능 컴퓨팅 시스템들, 컴퓨팅 클러스터들, 메인프레임 컴퓨터들, 미니컴퓨터들, 클라이언트-서버 시스템들, 퍼스널 컴퓨터들, 워크스테이션들, 서버들, 휴대형 컴퓨터들, 랩탑 컴퓨터들, 태블릿들, 전화들, PDA(personal digital assistant)들, 핸드헬드 디바이스들, 오디오 및/또는 비디오 디바이스들과 같은 엔터테인먼트 디바이스들 및 정보 처리 또는 전송용 다른 디바이스들을 포함하지만, 이들로만 한정되지는 않는다.
프로세싱 시스템(20)은 키보드, 마우스 등과 같은 종래의 입력 장치들로부터의 입력 및/또는 다른 컴퓨터, 가상 현실(VR; virtual reality) 환경과의 상호 작용, 바이오메트릭 피드백, 또는 다른 입력 소스나 신호로부터 수신된 디렉티브들에 의해 적어도 부분적으로 제어될 수 있다. 프로세싱 시스템(20)은 예를 들어, 네트워크 컨트롤러, 모뎀 또는 다른 통신 커플링을 통한 하나 이상의 원격 데이터 프로세싱 시스템들(76, 78)로의 하나 이상의 접속들을 사용할 수 있다. 프로세싱 시스템들은 LAN(local area network), WAN(wide area network), 인트라넷, 인터넷 등과 같은 물리 및/또는 논리 네트워크(80)를 통해 상호 접속될 수 있다. 네트워크(80)를 포함하는 커뮤니케이션들은 RF(radio frequency), 위성, 마이크로웨이브, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 쇼트 레인지(short range) 또는 롱 레인지(long range) 캐리어들 및 프로토콜들을 사용할 수도 있다.
프로세싱 시스템(20) 내에서, 프로세서(22)는 RAM(radom access memory; 26), ROM(read-only memory)과 같은 하나 이상의 휘발성 또는 비휘발성 데이터 기억 장치들, IDE(integrated drive electronics) 하드 드라이브와 같은 대용량 기억 장치들 및/또는 플로피 디스크, 광 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 바이오로지컬 스토리지 등과 같은 다른 디바이스들 또는 매체들에 통신 결합될 수 있다. 본 설명을 위해, "ROM"이라는 용어는 EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 ROM, 플래시 메모리 등과 같은 비휘발성 메모리 장치들을 나타내기 위해 일반적으로 사용될 수 있다. 프로세서(22)는 비디오 컨트롤러, SCSI(small computer system interface) 컨트롤러, 네트워크 컨트롤러, USB(universal serial bus) 컨트롤러, 키보드 및 마우스와 같은 입력 장치들 등과 같은 추가 컴포넌트들에 통신 결합될 수도 있다. 프로세싱 시스템(20)은 또한 다양한 시스템 컴포넌트들을 통신 결합하기 위한 메모리 컨트롤러 허브, 입출력(I/O) 컨트롤러 허브, PCI 루트 브릿지 등과 같은 하나 이상의 브릿지들 또는 허브(27)들을 포함할 수도 있다.
예를 들어, 네트워크 컨트롤러와 같은 일부 컴포넌트들은 PCI 버스와 통신하기 위해 PCI 커넥터와 같은 인터페이스들을 갖는 어댑터 카드들로서 구현될 수도 있다. 일 실시예에서, 하나 이상의 디바이스들은 프로그램 가능 또는 프로그램 불가능 논리 디바이스 또는 어레이, ASIC(application-specific integrated circuit), 임베디드 컴퓨터, 스마트 카드 등과 같은 컴포넌트들을 사용해서 임베디드 컨트롤러로서 구현될 수도 있다.
도시된 바와 같이, 프로세싱 시스템(20)은 프로세서(24)에 통신 결합된 TPM(30)을 포함한다. TPM(30)은 물리 TPM 또는 하드웨어 TPM(hwTPM)(30)이라고 할 수도 있다. 일 실시예에서, TPM(30)은 시스템 마더보드 또는 프로세싱 시스템(20)의 후면에 존재하는 임베디드 디바이스로서 구현된다. TPM(30)은 휘발성 PCR(platform configuration register; 32) 및 허가 세션 뿐만 아니라 영구 DIR(data integrity register; 36), 허가 다이제스트 및 범용 영구 스토리지를 포함하는 수개의 스토리지 설비들을 포함한다. 상기 설비들 각각은 대응 인메모리(in-memory) 데이터 구조를 가질 수도 있다.
본 발명은 컴퓨터에 의해 액세스될 때, 컴퓨터가 태스크들을 실행하거나 추상형 데이터 타입 또는 로우-레벨 하드웨어 문맥들을 정의하게 하는 명령들, 함수들, 프로시져들, 데이터 구조들, 애플리케이션 프로그램들 등을 포함하는 관련 데이터와 관련하여 또는 관련 데이터를 참조해서 기술될 수도 있다. 데이터는 휘발성 및/또는 비휘발성 데이터 스토리지에 저장될 수도 있다.
예를 들어, RAM(26)은 TPM의 보안 가시화를 제공하기 위해 하나 이상의 명령 집합들을 포함할 수도 있다. 일례의 실시예에서, 상기 명령들은 가상 컴퓨터 모니터(VMM; 106) 내에 부분적으로 또는 완전히 존재할 수도 있는 가상 TPM 서비스(104)를 구현할 수 있다(도 2 참조). 프로세싱 시스템(20)은 프로세싱 시스템(20) 내에서 하나 이상의 가상 컴퓨터들을 지원하기 위해 부트 시간에 VMM(106)을 RAM(26)에 로드할 수 있다. 예를 들어, 프로세싱 시스템(20)은 ROM으로부터 및/또는 하나 이상의 로컬 또는 원격 대용량 기억 장치들로부터 VMM(106)을 구현하는 명령들을 로드할 수 있다. 예를 들어, TPM의 보안 가시화를 지원하기 위해 임의의 추가 명령들이 사용되면, 상기 명령들은 ROM으로부터 및/또는 하나 이상의 로컬 또는 원격 대용량 기억 장치들로부터 로드될 수도 있다.
도 2는 프로세싱 시스템(20) 내에 VMM(106)을 포함하는 일례의 가상 컴퓨터 아키텍처를 도시한 블록도이다. TPM(30)과 프로세서(24), 허브(27) 등과 같은 다른 하드웨어 컴포넌트들(프로세서 및 칩셋(23)으로서 총체적으로 식별됨)은 최저 레벨에 있다. 동작시, 프로세싱 시스템(20)은 마이크로-커널(100) 및 서비스 OS(102)와 같은 소프트웨어 또는 펌웨어 컴포넌트들의 실행을 통해 구현되는 VMM(106)을 포함한다. 마이크로-커널(100)은 명령 스케쥴링과 같은 시스템 관리 태스크들을 위한 소핵 명령들(small nucleus of instructions)을 포함할 수도 있다. 서비스 OS(102)는 가상 컴퓨터들을 생성 및 유지하기 위한 디바이스 드라이버 및 환경 가시화 소프트웨어를 포함할 수도 있다.
일 실시예에서, VMM(106)은 vTPM들을 생성 및 유지하기 위한 가상 TPM 서비스(104)를 포함한다. 가상 TPM 서비스(104)는 각각의 vTPM들에 액세스하는 가상 컴퓨터들을 제공할 수도 있다. 가상 TPM 서비스(104)와 같은 소프트웨어 모듈들이 일 실시예에서 VMM(106) 내에 존재하더라도, 다른 실시예들에서는 상기 모듈들이 펌웨어 또는 임의의 다른 보호 환경에 존재할 수도 있다.
가상 TPM 서비스들은 광범위한 VMM 아키텍처들을 위해 제공될 수도 있다. 몇몇 실시예들에서는 가상 TPM 서비스를 VMM에 내장할 필요가 없다. 또한, 몇몇 실시예들에서는 가상 TPM 서비스가 VMM의 파트일 필요가 없을 수도 있다.
일 실시예에서, 가상 TPM 서비스(104)는 보호 호스트 메모리에 존재한다. 예를 들어, 프로세싱 시스템(20)은 하드웨어에 의해 보호되는 메모리의 보호 영역(isolated area)에 TPM 서비스(104)를 로드하고 상기 보호 영역으로부터 TPM 서비스(104)를 실행하기 위해 미국 특허 번호 제6,507,904호; 제6,633,963호; 및 제 6,678,825호에 기술된 기술을 사용할 수도 있다. 일 실시예에서, 보호 메모리는 간섭 또는 관측 없이 소프트웨어/명령들이 실행될 수 있음을 보장한다. 다른 실시예들에서, 보호 메모리를 제공하는 다른 기술들이 사용될 수도 있다. 예를 들어, 환경이 보호 메모리를 제공하는 시스템 관리 모드(SMM)를 포함할 수 있으며, 또는 보호 실행 환경이 탬퍼-저항(tamper-resistant) 소프트웨어 컴파일러를 사용해서 생성될 수 있다. 다른 컴포넌트들(예를 들어, VMM(106), 마이크로-커널(100), 가상 TPM들(120A 및 120B) 등)이 보호 메모리 내에 존재할 수도 있다.
일 실시예에서, VMM(106)은 각각 자신의 독립 게스트 OS를 실행하는 다수의 가상 컴퓨터들(110A 및 110B) 및 자신의 독립 신뢰 소프트웨어 스택 또는 TCG 소프트웨어 스택(TSS; 108A, 108B)을 지원한다. 일 실시예에서, TSS들(108A 및 108B)은 TCG 표준에 따른다.
더 상세히 후술되는 바와 같이, 가상 TPM 서비스(104)는 각각 가상 컴퓨터들(110A 및 110B)을 위한 개별 가상 TPM들(120A 및 120B)을 제공하기 위해 TPM(30)을 사용할 수 있다.
도 2의 굵은 화살표들은 가시화 이벤트들(VEs)을 나타낸다. 예를 들어, 상부 왼쪽 화살표는 VM(110A)으로부터 서비스 OS(102)로의 컨트롤 전송을 포함하는 VE를 나타낸다. 상부 오른쪽 화살표는 VM(110A)이 TPM에 액세스하고자 시도할 때 트리거되는 VE를 나타낸다. 제일 아래 화살표로 도시된 바와 같이, 가상 TPM 서비스(104)는 vTPM(120A)와 관련하여 이벤트를 프로세스하기 위하여 VE를 가로챈다(intercept). 일 실시예에서, VM(110A)이 vTPM(120A)이 아닌 임의의 TPM을 인식하지 못하더라도, 가상 TPM 서비스(104)는 vTPM(120A)을 지원하기 위해 hwTPM(30)을 사용할 수 있다.
일 실시예에서, 각각의 vTPM은 승인키(EK; endorsement key), 스토리지 루트 키(SRK), EK 증명서(EK credential), 사용자 키 계층, 플랫폼 구성 레지스터(PCR), 모노토닉 카운터, 내부 영구 스토리지, 데이터 완전성 레지스터(DIR) 등을 포함하는 자신의 TPM 구조들을 갖는다. 도 1을 다시 참조하면, 오른쪽 아래 코너에 범례로 표시된 바와 같이, 스토리지 키들은 빈 타원형으로 도시되어 있고, 증명 아이덴티티 키(AIK)들은 수평선들로 채워진 타원형으로 도시되어 있으며, 서명 키들은 점 패턴으로 채워진 타원형으로 도시되어 있다. 또한, 굵은 타원형은 TPM(30)의 PCR(32)들로 바인드된 키들을 나타낸다. 키들간의 선들은 키들 간의 부모/자식 관계를 나타낸다. 예를 들어, 상기 선들은 SRK(50)가 TPM(30) 내의 특정 하드웨어 키들의 부모 키일 뿐만 아니라 각각의 vTPM 내의 특정 가상 키들의 부모 키임을 나타낸다. 증명서들은 평행하게 나타난다.
vTPM 내의 가상 키들 및 다른 구조들 또는 객체들은 하드웨어 TPM 키들 또는 객체들과 동일한 구조를 가질 수 있지만, 가상 TPM 내의 가상 객체들은 단순히 EK(52), SRK(50) 및 PCR들(32)과 같은 TPM(30) 내의 표준 객체들을 나타내지 않는다. 대신, 더 상세히 후술되는 바와 같이, 각각의 가상 TPM은 가상 EK(vEK; 64), 가상 SRK(vSRK; 66), 가상 PCR들(vPCR; 92) 및 가상 DIR(vDIR; 94)과 같은 자신의 개별 객체들을 갖는다. 상기 가상 객체들은 하드웨어 TPM의 객체들로부터 유도되거나 하드웨어 TPM의 객체들을 근거로 할 수도 있다. 예를 들어, 일 실시예에서, 가상 SRK 및 가상 EK는 하드웨어 SRK의 자식이거나, 중첩 vTPM들의 경우, 최종적으로 하드웨어 SRK를 근거로 한 가상 SRK의 자식이다. vTPM 키들이 vSRK들에서 루트되게 함으로써, 상기 모델은 vTPM 중첩을 허용한다.
vEK(64), vSRK(66) 및 vPCR(92)과 같은 가상 TPM 객체들은 가상 서명 키들(vSig; 68), 가상 ALK(vALK; 70) 및 가상 스토리지/암호화 키들(vEnc; 72)와 같은 vTPM(120A) 내의 추가 가상 객체들의 기초로서 작용할 수도 있다. 일 실시예에서, 각각의 vTPM은 동일한 애플리케이션 프로그램 인터페이스(API)와 함께 하드웨어 TPM(hwTPM)에 의해 제공되는 모든 기능들을 제공한다. 예를 들어, vTPM(120A)은 자신의 vDIR(94), vPCR(92), vAIK(70) 등을 포함할 수도 있다. 따라서, 각각의 VM의 게스트 OS는 대응 vTPM이 hwTPM이 아님을 완전히 모를 수도 있다. 그러므로, VM들은 레거시 OS 코드를 사용할 수도 있다. 또한, 일 실시예에 따라, 종래의 hwTPM을 갖는 프로세싱 시스템은 hwTPM에 대한 임의의 변경의 요청 없이 vTPM들을 제공하도록 구성될 수 있다.
vPCR(92)과 같은 가상 PCR은 hwTPM의 리소스 제약 사항들을 갖지 않으며, 대신 사용가능한 PCR의 구성 번호를 가질 수도 있다. 일 실시예에서, vPCR(92)은 vTPM(120A)의 메모리 스페이스에 저장되고, vTPM(120A)은 vPCR(92)에서 표준 PCR 동작들을 에뮬레이트한다.
일 실시예에서, vTPM(120A)은 시뮬레이트된 영구 모노토닉 카운터들을 제공하기 위해 소프트웨어를 사용한다. 카운터들의 수는 실질적으로 제한되지 않을 수 있다. 일 실시예에서, vTPM(120A)은 hwTPM으로부터 예상된 4개의 카운터들을 적어도 제공한다. vTPM 카운터들은 하드웨어 TPM 카운터들로의 임의의 직접 링크를 요구하지 않을 수 있다.
가상 컴퓨터 아키텍처는 하드웨어 TPM이 가상 키들 및 관련 데이터를 보호하게 할 수 있다. 일 실시예에서, vTPM 키 계층들 및 관련 데이터는 표준 hwTPM 내에서 보호된다. 예를 들어, 가상 TPM 키들은 후술되는 바와 같이, 데이터가 우선 vTPM(120A)에 의해 암호화되지 않으면 하드웨어 TPM에 저장되어, 결코 릴리즈(release)되지 않을 수도 있다. 따라서, 가상 TPM이 타협되면, 관련 vTPM 키들의 공개 부분들은 허가 받지 않은 상태로 사용될 수도 있지만, 오직 타협 기간 중에만 사용될 수 있다. 일 실시예에서, 모든 키들은 하드웨어 TPM 내에 존재할 것이고, 따라서 프라이비트(private) 키들은 일단 타협이 종료되면 도용되거나 사용될 수 없다.
본 발명에 따른 프로세싱 시스템은 vTPM이 종래의 TPM 증명 서비스들을 제공할 수 있게 해주는 증명 프로토콜 아키텍처를 제공할 수도 있다. 가상 TPM들을 알지 못하는 원격 챌린저(challenger)들이 증명 프로세스에 전적으로 참여할 수 있다. 또한, vTPM을 인식하는 원격 챌린저들은 추가 프로토콜 없이 hwTPM을 vTPM으로부터 구별할 수 있으며, vTPM을 호스트하는 플랫폼을 신뢰할 것인지를 결정할 수 있다.
일 실시예에서, 가상 TPM(vTPM)이 동작하지 않을 때, 해당 vTPM을 위한 영구 데이터 구조들은 디스크에 저장되고 부모 SRK를 갖는 vTPM 서비스의 PCR들에 봉인된다. 따라서, TPM(30)은 vTPM이 실행중이지 않을 때라도 vTPM을 보호한다.
일 실시예에서, vTPM(120A)은 자체로부터 또한 단일 유저 허가 세션 하에서 vTPM(120) 자체 및 hwTPM 모두로부터 TPM 기능을 투명하게 제공할 수 있다. vTPM(120A)은 유저 및 hwTPM 모두와 개별 허가 세션들을 유지함으로써 상기 목적을 달성한다. 즉, 사용자는 vTPM이 hwTPM인 것처럼 vTPM(120A)으로 허가 세션을 생성한다. vTPM(120A)은 hwTPM이 행하는 상기 세션을 근거로 동일한 허가 체크들을 모두 완료할 수 있다. vTPM(120A)이 요청 기능을 직접 제공할 수 있는 경우, vTPM(120A)은 간단히 세션을 업데이트하고 응답할 수 있다. vTPM(120A)이 서비스를 제공하기 위해 하드웨어 TPM을 필요로 하는 경우, vTPM(120A)은 요청을 실행하기 위해 hwTPM으로 허가 세션을 생성하거나 현존 허가 세션을 재사용할 수 있다. vTPM(120A)이 hwTPM을 사용해서 실행되면, vTPM(120A)이 사용자의 세션을 업데이트하고 응답할 수도 있다.
도 3은 본 발명의 일 실시예에 따른 가상 TPM을 제공하는 프로세스를 도시한 흐름도이다. 도 3의 프로세스는 프로세싱 시스템(20)에서 TPM(30)이 활성화된 후에 개시되며, 도 1에 도시된 바와 같이, 종래의 TPM과 같이, TPM(30)은 SRK(50), EK(52) 및 EK 증명서(54)와 같은 표준 증명서들을 포함한다. 블록들(210-214)에서, VMM(106)은 가상 TPM들을 지원하기 위해 준비 단계에서 가상 TPM 서비스(104)를 초기화하는 수개의 동작들을 실행한다. 예를 들어, 블록(210)에서, VMM(106)은 증명키(CK; 56)라고 불리는 AIK를 생성한다. VMM(106)은 CK(56)를 생성하기 위해 AIK를 생성하는 표준 프로세스를 사용할 수 있다. 그 후, 가상 TPM 서비스(104)는 vEK(64)와 같은 가상 승인키들을 증명할 때 CK(56)를 사용할 수 있다. 블록(212)에서, 가상 TPM 서비스(104)는 프라이버시 CA(certification authority)(76)와 같이, 서드 파티 또는 신뢰 서드 파티(TTP)로부터 CK(56)용 증명서(58)를 획득한다. CK 증명서(58)는 프라이버시 CA(76)에 의해 서명되고, CK(56)를 보증하여 CK(56)가 유효 TPM에 의해 보호됨을 나타낸다.
블록(214)에서, VMM(106)은 바인딩 키(BK; 57)라고 하는 AIK를 생성한다. BK(57)는 데이터가 vTPM 서비스(104)로부터 릴리즈될 때 vTPM 데이터를 보호하기 위해 나중에 사용될 수도 있다. 예를 들어, 일 실시예에서, vTPM(120A)은 hwTPM이 영구 키들 및 레지스터들을 저장하는 방법과 유사하게 영구 데이터를 보존한다. 그러나, 릴리즈되고 있는 데이터를 보호하기 위해, vTPM(120A)은 vEK(64)에 의해 래핑되는(wrapped) 키 블로브(blob), vSRK(66)에 의해 래핑되는 키 블로브, vEK(64)를 위한 허가 데이터, vSRK(66)를 위한 허가 데이터, vDIR(94) 및 로드되는 영구 키들을 위한 래핑된 키 블로브를 BK(57)에 바인드한다.
vTPM(120A)의 경우, 집약성(locality)을 구현하기 위한 버스 컨트롤러의 논리적 동등물은 VMM(106)이다. 따라서, 집약성 VMM(106)이 무엇을 명령하던 간에, vTPM(120A)은 그렇게 동작할 것이다. VMM(106)은 필요한 경우 vTPM(120A)의 현 집약성을 변경하는 임의의 적합한 기술을 사용할 수도 있다.
VMM(106)이 일단 가상 TPM 서비스(104)를 초기화하면, 가상 TPM 서비스(104)는 요구 즉시 가상 TPM들을 생성할 수도 있다.
일 실시예에서, 각각의 가상 TPM은 초기화되면 가상 TPM이 하드웨어 TPM인 것처럼 증명과 같은 전형적인 기능들을 운영 및 지원할 수 있다. 가상 TPM이 이러한 방식으로 동작하게 하기 위해, 가상 TPM은 하드웨어 TPM이 갖도록 예상되는 증명서와 동일한 종류의 증명서들을 갖는다. 예를 들어, 보다 상세히 후술되는 바와 같이, 일 실시예에서, 각각의 새로운 vTPM의 경우, 가상 TPM 서비스(104)는 새로운 vEK, 새로운 가상 SRK(vSRK) 및 vEK용 증명서를 생성하거나 획득한다. vEK 증명서는 vEK가 TPM 사양에 따라 안전하게 저장됨을 나타낸다. 또한, 플랫폼 증명서 및 순응(conformance) 증명서는 가상 TPM 소프트웨어 벤더에 의해 제공될 수도 있다.
일 실시예에서, 블록들(216-222)은 가상 컴퓨터를 위해 가상 TPM을 초기화하는 동작들을 나타낸다. 예를 들어, 가상 컴퓨터(110A) 생성 요청에 응답해서, 블록(216)에 도시된 바와 같이 가상 TPM 서비스(104)는 vEK(64)라고 불리는 스토리지 키를 생성하기 위해 TPM(30)을 사용할 수 있다. 또한, 가상 TPM 서비스(104)는 가상 TPM 서비스(104)가 존재하는 부트 환경 및 가상 TPM 서비스(104)를 위해 vEK(64)를 PCR 값들에 바인드하도록 TPM(30)을 사용할 수도 있다. vEK(64)용 초기 허가 데이터가 생성되어 vTPM(120A)에 저장될 수도 있다.
블록(218)에서, 가상 TPM 서비스(104)는 vEK(64)를 증명하기 위해 CK(56)를 사용한다. 예를 들어, 가상 TPM 서비스(104)는 vEK(64)를 증명하고 vEK(64)용 TPM_CERTIFY_INFO 구조와 같은 증명 정보를 획득하기 위해 TPM(30)의 TPM_CertifyKey 함수를 사용할 수 있다. 일 실시예에서, vEK(64)용 증명 정보는 CK(56)에 의해 서명되고, vEK(64)가 바인드되는 PCR 정보(예를 들어, PCR(32)용 정보)를 포함한다. 상기 프로세스는 vEK(64)가 프라이버시 CA(76)에 의해 승인된 하드웨어 TPM에 저장되어 있음을 보장할 수 있다. 일 실시예에서, 프라이버시 CA(76)가 서명된 CK 증명서(58)를 갖기 때문에, vEK(64)가 TCG 표준들에 따라 양호하다고 간주되는 hwTPM에 있음을 프라이버시 CA(76)가 나타내더라도, vEK(64)의 PCR 바인딩의 CK(56)에 의한 증명서는 신뢰될 것이다.
블록(220)에서, 가상 TPM 서비스(104)는 가시화 CA(78)라고 불리는 서드 파티 또는 TTP에 vTPM EK 증명서 요청을 송신할 수도 있다. 상기 증명서 요청은 CK 증명서(58) 및 CK(56)에 의해 서명된 vEK(64)용 증명서 정보를 포함할 수 있다.
가시화 CA(78)는 프라이버시 CA에 의해 신뢰되는 증명서 허가자(certificate authority)일 수 있다. 가시화 CA(78)는 일반적으로 TPM의 다른 제조자로서 보여질 수 있다. 일 실시예에서, 가시화 CA(78)는 vTPM 인식이고, 승인되거나 "안전한" 가상 TPM 환경들을 승인되지 않거나 "안전하지 않은" 가상 TPM 환경들과 차별화할 수 있다. 일 실시예에서, 가시화 CA(78)는 효율적인 TPM 가시화를 위해 TPM 가시화의 존재를 인식해야만 하는 프로세싱 시스템(20) 밖의 유일한 엔티티이다.
가시화 CA(78)가 PCR 바인딩을 포함해서 CK 증명서(58) 및 vEK(64)용 증명서 정보를 평가한 후에, 요청이 승인되면, 가시화 CA(78)는 프로세싱 시스템(20)에 서명된 vEK 증명서(60)를 리턴한다. 일 실시예에서, vEK 증명서(60)는 vEK(64)가 식별 가능 환경에서 실행중인 가상 TPM과 관련됨을 나타내는 데이터를 갖는 모델 필드를 포함한다. 블록(222)에서, 가상 TPM 서비스(104)는 서명된 vEK 증명서(60)를 수신할 수 있다.
따라서, 상기 프로세스는 이하의 신뢰 체인을 설정할 수 있다: CK 증명서(58)는 CK(56)가 적합한 TPM 내의 적합한 AIK임을 나타내기 위해 프라이버시 CA(76)에 의해 서명된 증명서이다. vEK(64)용 증명서 정보는 CK(56)에 따라 vEK(64)가 특정 세트의 PCR들에게 바인드되고 동일한 적합 TPM에 있는 키임을 나타낸다. 프라이버시 CA(76)가 CK 증명서(58)를 생성했기 때문에, 가시화 CA(78)는 CK(56)에 의해 생성된 vEK(64)용 증명서 정보를 신뢰한다. 가시화 CA(78)가 EK가 바인드된 vTPM 환경을 승인하면, vEK(64)가 유효 TPM을 나타냄을 표시하기 위해 vEK(64)용 보증 증명서를 생성한다. 또한, vEK 증명서(60)에서, 가시화 CA(78)는 TPM이 가상이며 증명 중에 원격 챌린저의 재량으로 신뢰될 수 있음을 나타내는 모델 정보를 포함할 수 있다.
블록들(224-226)은 vTPM을 초기화하기 위한 추가 동작들을 나타낸다. 일 실시예에서, 상기 동작들을 실행하기 위해, 가상 TPM 서비스(104)는 vTPM(120A)이 hwTPM인 것처럼 vTPM(120A)을 초기화하는 표준 함수들을 사용한다. 예를 들어, 블록(224) 및 블록(226)에 각각 도시된 바와 같이, 가상 TPM 서비스(104)는 vEK(64)의 공개 부분을 획득하기 위해 TPM_Get_PUBEK를 호출할 수 있으며, vSRK(66)를 생성하기 위해 TPM_TakeOwnership을 호출할 수 있다. 일 실시예에서, 가상 TPM 서비스(104)는 vEK(64)와 동일한 PCR(즉, PCR(32))에 vSRK를 바인드한다. 가상 TPM 서비스(104)는 vEK(64)의 공개 부분으로 암호화된 형태로 vTPM(120A)에 허가를 제공할 수도 있다. 상기 허가들은 vEK(64)를 사용해서 vTPM(120A)에 의해 해독될 수도 있다. 일 실시예에서, 허가들은 TPM_BOUND_DATA가 아니기 때문에, 레거시 키 vEK(64)가 허가를 해독하는데 사용된다.
일 실시예에서, vEK(64)용 허가 데이터는 vEK(64) 생성 동안에 vTPM(120A)에 저장된 것으로부터 TPM_TakeOwnership 호출에 제공된 것으로 변경된다.
블록(228)에 도시된 바와 같이, 또한 도 4를 참조해서 보다 상세히 후술되는 바와 같이, VM(110A)은 vTPM(120A)이 hwTPM인 것처럼 vTPM(120A)을 사용할 수 있다. 블록(240)에 도시된 바와 같이, 가상 TPM 서비스(104)는 새로운 vTPM을 요청하는 새로운 VM이 생성중인지를 결정할 수도 있다. 생성중이면, 프로세스는 블록(216)으로 돌아가서, 상술된 바와 같이, 새로운 vTPM을 예시하는 동작들이 실행되고, 예를 들어, 새로운 vEK가 새로운 VM 등을 위해 생성된다. 새로운 VM이 생성중이지 않으면, 가상 TPM 서비스(104)는 계속해서 TPM(30)을 사용해서 VM(110A)용 vTPM(120A)을 제공할 수 있다.
도 4는 vTPM(120A)과 같은 가상 TPM을 사용하는 프로세스의 일 실시예를 도시한 흐름도이다. 도시된 프로세스는 도 3의 블록(228)에서 요약된 동작들 중 일부에 관한 보다 상세한 설명을 제공한다. 예를 들어, 블록들(310-314)은 VM(110A)용 vAIK를 생성하는 동작들을 도시하는데, vTPM(120A)이 hwTPM인 것처럼 VM(110A)은 vTPM(120A)을 사용한다. 가상 TPM(120A)은 TPM(30)에서 vAIK(70)를 생성할 수 있으며, 하드웨어 TPM이 통상 AIK를 위해 생성하는 정상 다큐먼트들을 생성할 수 있다.
예를 들어, 블록(310)에서, VM(110A)은 TPM_MakeIdentity를 호출함으로써 vTPM(120A)에서 vAIK를 생성한다. 상기 호출에 응답해서, vTPM(120A)은 TPM(30) 내에서 새로운 TCG_SIGNING_KEY 키를 생성하도록 TPM(30)에게 명령한다. 새로운 가상 증명 아이덴티티 키로서 작용하는 서명 키는 vAIK(70)로서 도 1에 도시되어 있다. 따라서, hwTPM의 관점에서 볼 때, 가상 AIK는 키 타입 "AIK"가 아닐 수 있으나, 서명 키일 수 있다. 그러나, hwTPM 밖에서, 가상 AIK는 키 타입 "AIK"로서 작용하고 나타날 수도 있다.
vAIK(70)용 TCG_IDENTITY_CONTENTS가 vTPM(120A) 및 TSS(108A)에 의해 생성된다. 다음으로, TSS(108A)는 TCG_IDENTITY_REQ를 생성하기 위해 TSS_CollateIdentityRequest를 실행할 수 있다. 상기 호출은 평소와 같이 이루어질 수도 있는데, 단지 사용된 EK 증명서가 hwTPM용 EK 증명서가 아니라 vEK 증명서(60)라는 점만 예외이다.
블록(312)에 도시된 바와 같이, VM(110A) 내에서 실행중인 TSS(108A)는 vAIK(70) 및 vEK 증명서(60)와 같은 다큐먼트들을 포함하는 상기 요청을 프라이버시 CA(76)에 송신할 수 있다. 프라이버시 CA(76)는 다큐먼트들을 시험한다. 또한, 프라이버시 CA(76)는 TPM 가시화를 모를 수도 있으며, 다른 임의의 TPM 제조자의 증명서인 것처럼 가시화 CA(78)로부터의 vEK 승인 증명서(60)를 신뢰할 수 있다. 다큐먼트들을 검증한 후, 프라이버시 CA(76)는 vAIK(70)에 대한 새로운 아이덴티티 증명서(62)를 생성하고, 상기 증명서에 서명하고, 프로세싱 시스템(20)에 송신한다. 따라서, 블록(314)에 도시된 바와 같이, TSS(108A)는 프라이버시 CA(76)로부터 vAIK 증명서(62)를 수신할 수 있다.
그 후, 블록들(320-324)은 증명 요청들을 처리하기 위한 일례의 동작들을 도시한다. 블록(320)에서, vTPM(120A)은 수신된 커맨드가 VM(110A)의 신뢰성에 대한 증명을 요구하는지를 결정한다. 상기 요청이 수신될 때, TSS(108A)는 vPCR(92)을 인용하기 위해 vTPM(120A)을 사용할 수 있으며, 블록(322)에 도시된 바와 같이, PCR 인용에 서명하기 위해 vAIK(70)를 사용할 수 있다. 블록(324)에 도시된 바와 같이, VM(110A)이 원격 엔티티에 의해 요구될 때, TSS(108A)는 vAIK(70)가 hwTPM에 있는 것처럼 원격 엔티티에 vAIK 증명서(62)를 송신할 수도 있다.
일 실시예에 따라, 챌린저가 vTPM을 인식하면, 모델 정보를 볼 수 있으며, VM(110A)에 의해 사용된 TPM이 vTPM임을 알 수 있으며, 기본 플랫폼이 신뢰할만한 지를 결정할 수 있다. 모델 정보는 기본 플랫폼 구성을 유일하게 식별할 수도 있다.
챌린저가 기본 플랫폼을 신뢰하면, 챌린저는 프라이버시 CA(76)가 이하의 사항들을 요구함을 알 것이다: vTPM은 하드웨어 TPM에서 루팅되며, vTPM은 하드웨어 TPM에서 사용될 때만 사용가능하다. 챌린저가 vTPM의 특정 구성을 신뢰하지 않으면, 챌린저는 트랜잭션을 거절할 것을 선택할 수 있다. 또한, 챌린저가 vTPM을 모르는 레거시 애플리케이션이면, 챌린저는 단지 프라이버시 CA(76)의 서명에 대한 신뢰 결정을 근거로 증명을 결론짓기 위해 표준 TPM 프로토콜들을 사용할 수 있다.
유사한 방식으로, vTPM(120A)은 종래의 하드웨어 TPM이 일체형 시스템을 위해 제공할 수 있는 VM용 다른 모든 기능들을 제공할 수도 있다.
다수의 전용 하드웨어 TPM들을 요구하지 않고, VM 내의 소프트웨어의 변경을 요구하지 않으며, 주 시스템과 상호작용하는 원격 엔티티에 대한 변경을 요구하지 않으면서, 기술된 실시예 또는 실시예들은 다수의 VM들이 TPM 기능을 사용하는 것을 허용한다. 본 발명에 따라, 가상 TPM은 원격 엔티티에 증명을 제공하기 위해 VM에서 OS 및 애플리케이션을 측정할 수 있다. 또한, 하드웨어 TPM 및 챌린저가 상술된 TPM 버전 1.2 설계 사양과 같은 현 TPM 사양에 기술된 기능만을 사용할 수 있더라도, 가상 TPM은 하드웨어 TPM 챌린저에 대한 가상 컴퓨터의 상태를 증명할 수 있다. 가상 컴퓨터의 게스트 OS는 하드웨어 TPM이 공유되고 있는지를 모를 수도 있으며, 시스템 내의 VM들 간의 신뢰 관계들은 요구되지 않는다.
도 1에 도시된 바와 같이, 0개 이상의 vSig(68), 0개 이상의 vAIK(70) 및 0개 이상의 vEnc(72)는 각각의 vTPM에 대해 생성될 수도 있다. 상술된 바와 같이, vSig(68), vEnc(72) 등과 같은 가상 키들은 일 실시예에서 생성되어 hwTPM에 저장될 수 있다. 따라서, vTPM은 가상 TPM의 타협이 vTPM에 저장된 키들을 영구적으로 타협하지 않는 방식으로 키들을 저장 및 생성할 수 있다.
또한, 유연성 및/또는 성능 증가를 위해, 가상 키들이 생성되고 vTPM 소프트웨어에 의해 사용될 수 있다. 예를 들어, 가상 키들은 hwTPM에 의해 직접 보호되거나 저장되지 않을 수도 있다. 가상 TPM에 의해 생성되거나 가상 TPM에 속한 프라이비트 키들은 하드웨어 TPM에 의해 동작되지 않을 수도 있는데, 하드웨어 TPM은 암호 동작들을 실행하기 위해 상기 프라이비트 키들을 사용하지 않을 수도 있다. 대신, 가상 TPM은 프라이비트 키들로 암호 동작들을 실행하기 위해 호스트 프로세서 및 암호 소프트웨어를 사용할 수 있다. 이를 위해, 가상 TPM 서비스는 보호 호스트 메모리에 프라이비트 키들을 저장할 수도 있다. 그러나, 프라이비트 키가 사용중이 아니면, 가상 TPM 서비스는 소프트웨어 구성에 키를 래핑하기 위해 하드웨어 TPM 기능을 사용할 수 있다.
상기 옵션들은 vTPM이 하드웨어 TPM이 제공할 수 있는 것 보다 더 높은 성능으로 vTPM 소프트웨어의 객체들을 암호화, 해독, 서명 및 검증할 수 있게 해줄 수 있다. 따라서, 예를 들어 상기 옵션들은 벌크 암호화 또는 성능-민감 서버 환경에서의 사용에 양호할 수도 있다. 그러나, 증가된 성능의 트레이드오프는 vTPM이 타협되면 가상 키들이 영구적으로 타협될 수도 있다는 점이다.
본 명세서에 기술되고 도시된 원칙들 및 일 실시예들의 견지에서 볼 때, 본 실시예들은 상기 원칙들 내에서 배치 및 세부 사항들이 변경될 수 있음을 알 것이다. 예를 들어, 가상 TPM들은 가상 컴퓨터들과 관련해서 기술되었지만, 다른 실시예들은 하드웨어 TPM을 공유하는 서버 또는 서버 그룹 내의 파티션들과 같은 다른 타입들의 시스템 분할과 관련해서 사용되는 vTPM들을 포함한다. 예를 들어, 가상 TPM들은 두개의 로지컬 투-프로세서 시스템들로 분할된 4 프로세서 시스템에서 사용될 수도 있다. 본 명세서의 설명들은 하나 이상의 서비스 코프로세서들 또는 하드웨어 플랫폼의 하나 이상의 다른 타입들의 독립 프로세싱 소자들에게 로지컬TPM을 제공하는데 사용될 수 있다.
또한, 다른 실시예들은 하드웨어 TPM을 에뮬레이트하지 않지만, (예를 들어, 보다 많은 PCR들, 보다 많은 스토리지 등을 제공함으로써) 하드웨어 TPM의 캐퍼빌러티들을 확장 및/또는 증폭하는 vTPM 서비스들을 포함한다. 다른 실시예들은 또한 보안 OS의 상부에서, MRTE(managed run-time environment)의 상부에서, 서비스 프로세서 또는 코프로세서에서, 플랫폼의 SMM(system management mode) 등등에서 실행중인 가상 TPM 서비스를 포함한다.
또한, 상술된 설명은 특정 실시예들에 집중했지만, 다른 구성들도 가능하다. 특히, "일 실시예에서", "다른 실시예에서"와 같은 표현들 또는 유사 표현들이 본 명세서에 사용되더라도, 상기 구절들은 일반적으로 가능한 실시예를 참조하는 것을 의미하며, 본 발명을 특정 실시예 구성들로 제한하려는 의도는 아니다. 본 명세서에서 사용된 용어들은 다른 실시예들에 결합될 수 있는 동일하거나 상이한 실시예들과 관련될 수도 있다.
유사하게, 일례의 프로세스들이 특정 시퀀스로 실행된 특정 오퍼레이션들에 대해 기술되었지만, 본 발명의 다수의 다른 실시예들을 유도하기 위해 상기 프로세스들에 대한 다양한 변경이 이루어질 수 있다. 예를 들어, 다른 실시예들은 기술된 오퍼레이션들, 추가 오퍼레이션들을 사용하는 프로세스들, 상이한 시퀀스의 동일한 오퍼레이션들을 사용하는 프로세스들 및 본 명세서에 기술된 개별 오퍼레이션들이 결합, 분할 또는 변경된 프로세스들 전부 중 일부를 사용하는 프로세스들을 포함할 수도 있다.
본 발명의 다른 실시예들은 본 발명의 오퍼레이션들을 실행하기 위한 명령들을 인코드하는 기계 액세스 가능 매체들을 포함한다. 상기 실시예들은 프로그램 제품을 말할 수도 있다. 상기 기계 액세스 가능 매체는 플로피 디스크, 하드 디스크, CD-ROM, ROM 및 RAM과 같은 스토리지 매체; 뿐만 아니라 안테나, 와이어, 광 섬유, 마이크로웨이브, 라디오 웨이브 및 다른 전자기 캐리어 또는 광 캐리어와 같은 통신 매체를 포함할 수도 있는데, 이들로만 제한되지 않는다. 따라서, 명령들 및 다른 데이터는 패킷 형태, 직렬 데이터 형태, 병렬 데이터 형태, 전달 신호 형태 등으로 송신 환경 또는 네트워크를 통해 전달될 수도 있으며, 분산 환경에서 사용되고 싱글 또는 멀티-프로세서 기계들에 의한 액세스를 위해 국부적으로 및/또는 원격으로 저장될 수도 있다.
본 명세서에 기술된 하드웨어 및 소프트웨어 컴포넌트들이 각각 독립적으로 설계, 구성 또는 업데이트될 수 있도록 독립적인 기능 소자들을 나타냄을 알 것이다. 다른 실시예들에서, 다수의 컴포넌트들이 본 명세서에 기술된 기능을 제공하기 위해 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 결합물로서 구현될 수도 있다.
본 명세서에 기술된 일 실시예들로부터 쉽게 유도될 수도 있는 다양한 유용한 교환물들의 관점에서, 상세한 설명은 단지 설명을 위한 것이며, 본 발명의 범위를 제한하려는 것이 아니다. 따라서, 본 발명으로 청구된 것은 모두 이하의 청구항들의 범위 및 원리 내에 속한 구현물이며 모두 상기 구현물과 동등하다.

Claims (24)

  1. 물리적 신뢰 플랫폼 모듈(TPM; trusted platform module)을 포함하는 프로세싱 시스템에서 사용되기 위한 가상 TPM을 생성하는 단계;
    상기 물리적 TPM에 상기 가상 TPM용 키를 저장하는 단계; 및
    에뮬레이트된 물리적 TPM 기능들(emulated physical TPM features)을 제공하기 위해 상기 가상 TPM을 사용하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 가상 TPM(120A)의 메모리 공간에 가상 플랫폼 구성 레지스터(PCR; platform configuration register)들을 생성하는 단계; 및
    가상 PCR들을 사용해서 표준 PCR 동작들을 에뮬레이트하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서,
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 단계는,
    상기 프로세싱 시스템에서 가상 컴퓨터(machine)용 하드웨어 TPM을 에뮬레이트하기 위해 상기 가상 TPM을 사용하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 가상 TPM은 제1 가상 TPM을 포함하고, 상기 가상 컴퓨터는 제1 가상 컴퓨터를 포함하며, 상기 방법은,
    상기 프로세싱 시스템에서 제2 가상 TPM을 생성하는 단계;
    상기 물리적 TPM에 상기 제2 가상 TPM용 키를 저장하는 단계; 및
    상기 제2 가상 TPM을 사용해서 상기 제2 가상 컴퓨터용 물리적 TPM을 에뮬레이트하는 단계
    를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 물리적 TPM에서 상기 가상 TPM용 키를 저장하는 상기 단계는,
    상기 가상 TPM용 승인키(EK; endorsement key); 및
    상기 가상 TPM용 스토리지 루트 키(SRK; storage root key)
    로 구성된 그룹에서 선택된 적어도 하나의 키를 저장하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 가상 TPM용 EK를 생성하는 단계를 더 포함하고, 상기 EK는 상기 가상 컴퓨터용 환경에 바인드되는(bound) 방법.
  7. 제6항에 있어서,
    증명서 허가자(certification authority)에게 상기 EK용 증명서 정보를 송신하는 단계; 및
    상기 증명서 허가자로부터 승인 증명서(endorsement credential)를 획득하는 단계
    를 더 포함하는 방법.
  8. 제6항에 있어서,
    가시화 증명서 허가자(CA; certification authority)에게 상기 EK용 증명서 정보를 송신하는 단계;
    상기 가시화 CA로부터 상기 가상 TPM용 승인 증명서를 획득하는 단계;
    프라이버시 CA로 상기 승인 증명서를 송신하는 단계; 및
    상기 프라이버시 CA로부터 아이덴티티 증명서(identity credential)를 수신하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 상기 단계는,
    가상 컴퓨터와 관련된 가상 증명 아이덴티티 키(AIK; attestation identity key)를 위한 아이덴티티 증명서를 프라이버시 CA로부터 획득하는 단계; 및
    상기 아이덴티티 증명서를 챌린저에게 송신하는 단계
    를 포함하는 방법.
  10. 가상 컴퓨터용 가상 EK를 프로세싱 시스템에 생성하는 단계 - 상기 가상 EK는 상기 프로세싱 시스템의 물리적 TPM용 EK에 적어도 부분적으로 기초함 -;
    상기 물리적 TPM에 상기 가상 EK를 저장하는 단계;
    상기 가상 컴퓨터용 가상 AIK를 생성하는 단계; 및
    상기 가상 AIK용 증명서들(credentials)을 획득하기 위해 상기 가상 EK용 승인 증명서(endorsement credential)를 사용하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 EK용 승인 증명서를 서드 파티(third party)에 송신하는 단계; 및
    상기 서드 파티로부터 상기 가상 EK용 승인 증명서를 수신하는 단계
    를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 서드 파티가 가시화 CA를 포함하는 방법.
  13. 컴퓨터 액세스 가능 매체; 및
    상기 컴퓨터 액세스 가능 매체에 인코딩된 명령
    을 포함하고,
    상기 명령은 하드웨어 TPM을 구비한 프로세싱 시스템에 의해 실행될 때 상기 프로세싱 시스템으로 하여금
    가상 TPM을 생성하는 단계;
    상기 하드웨어 TPM에 상기 가상 TPM용 키를 저장하는 단계; 및
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 단계를 포함하는 오퍼레이션을 수행하도록 하는 장치.
  14. 제13항에 있어서,
    상기 가상 TPM은 제1 가상 TPM을 포함하고, 상기 명령에 의해 실행되는 상기 오퍼레이션은,
    상기 프로세싱 시스템에서 제2 가상 TPM을 생성하는 단계; 및
    상기 하드웨어 TPM에 상기 제2 가상 TPM용 키를 저장하는 단계
    를 더 포함하는 장치.
  15. 제13항에 있어서,
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 상기 오퍼레이션은,
    가상 AIK용 아이덴티티 증명서를 프라이버시 CA로부터 획득하는 단계; 및
    상기 아이덴티티 증명서를 챌린저에게 송신하는 단계
    를 포함하는 장치.
  16. 제13항에 있어서,
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 상기 방법은,
    상기 프로세싱 시스템에서 가상 컴퓨터용 하드웨어 TPM을 에뮬레이트하기 위해 상기 가상 TPM을 사용하는 단계를 포함하는 장치.
  17. 프로세서;
    상기 프로세서에 통신 결합된 TPM;
    상기 TPM에 저장된 EK;
    상기 프로세서에서 실행되는 가상 컴퓨터(VM; virtual machine);
    상기 VM과 관련된 가상 TPM; 및
    상기 VM과 관련된 가상 EK - 상기 가상 EK는 상기 TPM에 저장된 EK를 기초로 함 -
    를 포함하는 프로세싱 시스템.
  18. 제17항에 있어서,
    상기 프로세서에서 실행되는 가상 TPM 서비스를 더 포함하고, 상기 가상 TPM 서비스는 상기 VM용 가상 TPM을 생성하기 위해 상기 TPM을 사용하는 프로세싱 시스템.
  19. 프로세서;
    상기 프로세서에 통신 결합된 물리적 TPM;
    상기 프로세서에 통신 결합된 컴퓨터 액세스 가능 매체; 및
    가상 TPM 서비스를 구현하기 위해 상기 컴퓨터 액세스 가능 매체에 인코딩된 명령
    을 포함하고, 상기 가상 TPM 서비스는
    가상 TPM을 생성하는 단계;
    상기 물리적 TPM에 상기 가상 TPM용 키를 저장하는 단계; 및
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 단계
    를 포함하는 오퍼레이션을 실행하는 프로세싱 시스템.
  20. 제19항에 있어서,
    상기 프로세싱 시스템은 하나 이상의 서버들에 다중(multiple) 프로세서들을 포함하고;
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 상기 오퍼레이션은,
    상기 프로세싱 시스템의 제1 파티션에 제1 가상 TPM을 제공하는 단계; 및
    상기 프로세싱 시스템의 제2 파티션에 제2 가상 TPM을 제공하는 단계
    를 포함하는 장치.
  21. 제19항에 있어서,
    에뮬레이트된 물리적 TPM 기능들을 제공하기 위해 상기 가상 TPM을 사용하는 상기 오퍼레이션은,
    하나 이상의 서비스 코프로세서들(coprocessors)에게 논리적 TPM을 제공하는 단계를 포함하는 장치.
  22. TPM;
    상기 TPM에 저장된 EK; 및
    VM용 가상 EK를 생성하기 위한 가상 TPM 서비스
    를 포함하고,
    상기 가상 EK는 상기 EK에 적어도 부분적으로 기초하는 장치.
  23. 제22항에 있어서,
    상기 가상 EK는 상기 TPM에 저장되는 장치.
  24. 제22항에 있어서,
    상기 가상 TPM 서비스에 의해 생성된, 상기 가상 컴퓨터용 가상 AIK;
    상기 가상 EK용 증명서들(credentials); 및
    상기 가상 AIK용 증명서들(credentials)
    을 더 포함하는 장치.
KR1020067026953A 2004-06-24 2005-06-03 신뢰 플랫폼 모듈의 보안 가상화를 위한 방법 및 장치 KR100917290B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067026953A KR100917290B1 (ko) 2004-06-24 2005-06-03 신뢰 플랫폼 모듈의 보안 가상화를 위한 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/876,994 2004-06-24
KR1020067026953A KR100917290B1 (ko) 2004-06-24 2005-06-03 신뢰 플랫폼 모듈의 보안 가상화를 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070020520A true KR20070020520A (ko) 2007-02-21
KR100917290B1 KR100917290B1 (ko) 2009-09-11

Family

ID=43652925

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067026953A KR100917290B1 (ko) 2004-06-24 2005-06-03 신뢰 플랫폼 모듈의 보안 가상화를 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100917290B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160130790A (ko) * 2014-03-25 2016-11-14 후아웨이 테크놀러지 컴퍼니 리미티드 신뢰 커널 시작 방법 및 장치
JP2019023908A (ja) * 2013-03-14 2019-02-14 アマゾン テクノロジーズ インコーポレイテッド サービスとしての装置の提供

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465933B2 (en) * 2012-11-30 2016-10-11 Intel Corporation Virtualizing a hardware monotonic counter
US20200127850A1 (en) * 2019-12-20 2020-04-23 Intel Corporation Certifying a trusted platform module without privacy certification authority infrastructure

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2381626B (en) * 2000-07-18 2005-02-09 Intel Corp Controlling access to multiple isolated memories in an isolated execution environment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019023908A (ja) * 2013-03-14 2019-02-14 アマゾン テクノロジーズ インコーポレイテッド サービスとしての装置の提供
KR20160130790A (ko) * 2014-03-25 2016-11-14 후아웨이 테크놀러지 컴퍼니 리미티드 신뢰 커널 시작 방법 및 장치
US10032030B2 (en) 2014-03-25 2018-07-24 Huawei Technologies Co., Ltd. Trusted kernel starting method and apparatus

Also Published As

Publication number Publication date
KR100917290B1 (ko) 2009-09-11

Similar Documents

Publication Publication Date Title
US7590867B2 (en) Method and apparatus for providing secure virtualization of a trusted platform module
US9524400B2 (en) Method and apparatus for remotely provisioning software-based security coprocessors
US8074262B2 (en) Method and apparatus for migrating virtual trusted platform modules
US7571312B2 (en) Methods and apparatus for generating endorsement credentials for software-based security coprocessors
US7636442B2 (en) Method and apparatus for migrating software-based security coprocessors
US7587595B2 (en) Method and apparatus for providing software-based security coprocessors
JP4775744B2 (ja) 信頼できる共存環境をラウンチする方法およびプログラム
KR100917290B1 (ko) 신뢰 플랫폼 모듈의 보안 가상화를 위한 방법 및 장치
Sisinni Verification of software integrity in distributed systems
Vuillermoz Analysis of TEE technologies as trust anchors
Cabuk et al. Trusted Integrity Measurement and Reporting for Virtualized Platforms: (Work-in-Progress)

Legal Events

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

Payment date: 20120904

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee