Virtual machine assurances
AssigneeMicrosoft Technology Licensing, LLC
InventorsMagnus Nystrom, Stefan Thom
Life of this patent
Estimating the term…
Abstract
Briefly, aspects of the subject matter described herein relate to virtual machines. In aspects, when a host is reset or powered on, a measured boot is performed. If the measured boot indicates that the host is in a state that satisfies a policy for gaining access to a cryptographic key, the cryptographic key may be obtained. The cryptographic key may be used, directly or indirectly, to decrypt data of a virtual storage device. This decrypted data may then be used to instantiate a virtual machine.
Claims16
A method, implemented at a computer system that includes one or more processors, for securely instantiating a virtual machine, the method comprising:
- starting a host that includes a virtual environment for hosting a virtual machine, the virtual environment including a virtual security component associated with the virtual machine;
- performing a boot process to instantiate the virtual environment;
- at pre-defined states during the boot process, providing measurements of the host to a host security component, the measurements identifying a state of the host that satisfies a policy for hosting the virtual machine;
- obtaining a first cryptographic key based on the state of the host, including:
- providing the measurements to a key distribution service external to the host;
- receiving sealed data that is sealed to a state of the host;
- and
- unsealing the sealed data via the host security component, the host security component configured to unseal the sealed data only when the host security component receives evidence that the host is currently in a state that satisfies the policy for hosting the virtual machine;
- using the first cryptographic key to decrypt the virtual security component associated with the virtual machine;
- from the decrypted virtual security component, obtaining a second cryptographic key associated with a virtual hard drive that is associated with the virtual machine;
- using the second cryptographic key to decrypt the virtual hard drive associated with the virtual machine;
- and
- instantiating the virtual machine via the associated decrypted virtual hard drive.
A computer system, comprising:
- a system memory for storing data of a host;
- one or more processors;
- and
- one or more computer readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to securely instantiate a virtual machine, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least the following:
- start the host, the host including a virtual environment for hosting a virtual machine, the virtual environment including a virtual security component;
- perform a boot process to instantiate the virtual environment;
- at pre-defined states during the boot process, provide measurements of the host to a host security component, the measurements identifying a state of the host that satisfies a policy for hosting the virtual machine;
- obtain a first cryptographic key from the host security component based on the state of the host, including:
- providing the measurements to a key distribution service external to the host;
- receiving sealed data that is sealed to a state of the host;
- and
- unsealing the sealed data via the host security component, the host security component configured to unseal the sealed data only when the host security component receives evidence that the host is currently in a state that satisfies the policy for hosting the virtual machine;
- use the first cryptographic key to decrypt the virtual security component associated with the virtual machine;
- from the decrypted virtual security component, obtain a second cryptographic key associated with a virtual hard drive that is associated with the virtual machine;
- use the second cryptographic key to decrypt the virtual hard drive associated with the virtual machine;
- and
- instantiate the virtual machine via the associated decrypted virtual hard drive.
A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors to securely instantiate a virtual machine, the computer-executable instructions including instructions that are executable to cause the computing device to perform at least the following:
- start a host that includes a virtual environment for hosting a virtual machine, the virtual environment including a virtual security component;
- perform a boot process to instantiate the virtual environment;
- at pre-defined states during the boot process, provide measurements of the host to a host security component, the measurements identifying a state of the host that satisfies a policy for hosting the virtual machine;
- obtain a first cryptographic key based on the state of the host, including:
- providing the measurements to a key distribution service external to the host;
- receiving sealed data that is sealed to a state of the host;
- and
- unsealing the sealed data via the host security component, the host security component configured to unseal the sealed data only when the host security component receives evidence that the host is currently in a state that satisfies the policy for hosting the virtual machine;
- use the first cryptographic key to decrypt the virtual security component associated with the virtual machine;
- from the decrypted virtual security component, obtain a second cryptographic key associated with a virtual hard drive that is associated with the virtual machine;
- use the second cryptographic key to decrypt the virtual hard drive associated with the virtual machine;
- and
- instantiate the virtual machine via the associated decrypted virtual hard drive.
Dependencies are inferred from the claim text.