1 ============================= !! 1 ============================= 2 Virtual TPM interface for Xen 2 Virtual TPM interface for Xen 3 ============================= 3 ============================= 4 4 5 Authors: Matthew Fioravante (JHUAPL), Daniel D 5 Authors: Matthew Fioravante (JHUAPL), Daniel De Graaf (NSA) 6 6 7 This document describes the virtual Trusted Pl 7 This document describes the virtual Trusted Platform Module (vTPM) subsystem for 8 Xen. The reader is assumed to have familiarity 8 Xen. The reader is assumed to have familiarity with building and installing Xen, 9 Linux, and a basic understanding of the TPM an 9 Linux, and a basic understanding of the TPM and vTPM concepts. 10 10 11 Introduction 11 Introduction 12 ------------ 12 ------------ 13 13 14 The goal of this work is to provide a TPM func 14 The goal of this work is to provide a TPM functionality to a virtual guest 15 operating system (in Xen terms, a DomU). This 15 operating system (in Xen terms, a DomU). This allows programs to interact with 16 a TPM in a virtual system the same way they in 16 a TPM in a virtual system the same way they interact with a TPM on the physical 17 system. Each guest gets its own unique, emula 17 system. Each guest gets its own unique, emulated, software TPM. However, each 18 of the vTPM's secrets (Keys, NVRAM, etc) are m 18 of the vTPM's secrets (Keys, NVRAM, etc) are managed by a vTPM Manager domain, 19 which seals the secrets to the Physical TPM. 19 which seals the secrets to the Physical TPM. If the process of creating each of 20 these domains (manager, vTPM, and guest) is tr 20 these domains (manager, vTPM, and guest) is trusted, the vTPM subsystem extends 21 the chain of trust rooted in the hardware TPM 21 the chain of trust rooted in the hardware TPM to virtual machines in Xen. Each 22 major component of vTPM is implemented as a se 22 major component of vTPM is implemented as a separate domain, providing secure 23 separation guaranteed by the hypervisor. The v 23 separation guaranteed by the hypervisor. The vTPM domains are implemented in 24 mini-os to reduce memory and processor overhea 24 mini-os to reduce memory and processor overhead. 25 25 26 This mini-os vTPM subsystem was built on top o 26 This mini-os vTPM subsystem was built on top of the previous vTPM work done by 27 IBM and Intel corporation. 27 IBM and Intel corporation. 28 28 29 29 30 Design Overview 30 Design Overview 31 --------------- 31 --------------- 32 32 33 The architecture of vTPM is described below:: 33 The architecture of vTPM is described below:: 34 34 35 +------------------+ 35 +------------------+ 36 | Linux DomU | ... 36 | Linux DomU | ... 37 | | ^ | 37 | | ^ | 38 | v | | 38 | v | | 39 | xen-tpmfront | 39 | xen-tpmfront | 40 +------------------+ 40 +------------------+ 41 | ^ 41 | ^ 42 v | 42 v | 43 +------------------+ 43 +------------------+ 44 | mini-os/tpmback | 44 | mini-os/tpmback | 45 | | ^ | 45 | | ^ | 46 | v | | 46 | v | | 47 | vtpm-stubdom | ... 47 | vtpm-stubdom | ... 48 | | ^ | 48 | | ^ | 49 | v | | 49 | v | | 50 | mini-os/tpmfront | 50 | mini-os/tpmfront | 51 +------------------+ 51 +------------------+ 52 | ^ 52 | ^ 53 v | 53 v | 54 +------------------+ 54 +------------------+ 55 | mini-os/tpmback | 55 | mini-os/tpmback | 56 | | ^ | 56 | | ^ | 57 | v | | 57 | v | | 58 | vtpmmgr-stubdom | 58 | vtpmmgr-stubdom | 59 | | ^ | 59 | | ^ | 60 | v | | 60 | v | | 61 | mini-os/tpm_tis | 61 | mini-os/tpm_tis | 62 +------------------+ 62 +------------------+ 63 | ^ 63 | ^ 64 v | 64 v | 65 +------------------+ 65 +------------------+ 66 | Hardware TPM | 66 | Hardware TPM | 67 +------------------+ 67 +------------------+ 68 68 69 * Linux DomU: 69 * Linux DomU: 70 The Linux based guest that want 70 The Linux based guest that wants to use a vTPM. There may be 71 more than one of these. 71 more than one of these. 72 72 73 * xen-tpmfront.ko: 73 * xen-tpmfront.ko: 74 Linux kernel virtual TPM f 74 Linux kernel virtual TPM frontend driver. This driver 75 provides vTPM access to a 75 provides vTPM access to a Linux-based DomU. 76 76 77 * mini-os/tpmback: 77 * mini-os/tpmback: 78 Mini-os TPM backend driver 78 Mini-os TPM backend driver. The Linux frontend driver 79 connects to this backend d 79 connects to this backend driver to facilitate communications 80 between the Linux DomU and 80 between the Linux DomU and its vTPM. This driver is also 81 used by vtpmmgr-stubdom to 81 used by vtpmmgr-stubdom to communicate with vtpm-stubdom. 82 82 83 * vtpm-stubdom: 83 * vtpm-stubdom: 84 A mini-os stub domain that im 84 A mini-os stub domain that implements a vTPM. There is a 85 one to one mapping between ru 85 one to one mapping between running vtpm-stubdom instances and 86 logical vtpms on the system. 86 logical vtpms on the system. The vTPM Platform Configuration 87 Registers (PCRs) are normally 87 Registers (PCRs) are normally all initialized to zero. 88 88 89 * mini-os/tpmfront: 89 * mini-os/tpmfront: 90 Mini-os TPM frontend driv 90 Mini-os TPM frontend driver. The vTPM mini-os domain 91 vtpm-stubdom uses this dr 91 vtpm-stubdom uses this driver to communicate with 92 vtpmmgr-stubdom. This dri 92 vtpmmgr-stubdom. This driver is also used in mini-os 93 domains such as pv-grub t 93 domains such as pv-grub that talk to the vTPM domain. 94 94 95 * vtpmmgr-stubdom: 95 * vtpmmgr-stubdom: 96 A mini-os domain that impl 96 A mini-os domain that implements the vTPM manager. There is 97 only one vTPM manager and 97 only one vTPM manager and it should be running during the 98 entire lifetime of the mac 98 entire lifetime of the machine. This domain regulates 99 access to the physical TPM 99 access to the physical TPM on the system and secures the 100 persistent state of each v 100 persistent state of each vTPM. 101 101 102 * mini-os/tpm_tis: 102 * mini-os/tpm_tis: 103 Mini-os TPM version 1.2 TP 103 Mini-os TPM version 1.2 TPM Interface Specification (TIS) 104 driver. This driver used b 104 driver. This driver used by vtpmmgr-stubdom to talk directly to 105 the hardware TPM. Communic 105 the hardware TPM. Communication is facilitated by mapping 106 hardware memory pages into 106 hardware memory pages into vtpmmgr-stubdom. 107 107 108 * Hardware TPM: 108 * Hardware TPM: 109 The physical TPM that is solde 109 The physical TPM that is soldered onto the motherboard. 110 110 111 111 112 Integration With Xen 112 Integration With Xen 113 -------------------- 113 -------------------- 114 114 115 Support for the vTPM driver was added in Xen u 115 Support for the vTPM driver was added in Xen using the libxl toolstack in Xen 116 4.3. See the Xen documentation (docs/misc/vtp 116 4.3. See the Xen documentation (docs/misc/vtpm.txt) for details on setting up 117 the vTPM and vTPM Manager stub domains. Once 117 the vTPM and vTPM Manager stub domains. Once the stub domains are running, a 118 vTPM device is set up in the same manner as a 118 vTPM device is set up in the same manner as a disk or network device in the 119 domain's configuration file. 119 domain's configuration file. 120 120 121 In order to use features such as IMA that requ 121 In order to use features such as IMA that require a TPM to be loaded prior to 122 the initrd, the xen-tpmfront driver must be co 122 the initrd, the xen-tpmfront driver must be compiled in to the kernel. If not 123 using such features, the driver can be compile 123 using such features, the driver can be compiled as a module and will be loaded 124 as usual. 124 as usual.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.