# US 10,310,885 B2 · Secure service hosted in a virtual security environment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,310,885 B2
- Document ID: US10310885B2
- Status: Granted
- Kind: B2
- Application number: 15/333,573
- Filed: 2016-10-25
- Published: 2018-04-26
- Granted: 2019-06-04
- Earliest claimed: 2016-10-25
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Malcolm E. Pearson; Tolga Acar; Rahul Verma
- Web page: https://patentgrep.com/patent/US10310885B2

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 21/602: {Providing cryptographic facilities or services}
- H04L 9/0822: {using key encryption key}
- H04L 9/083: {involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]}
- G06F 2009/45587: {Isolation or security of virtual machine instances}
- H04L 2463/041: using an encryption or decryption engine integrated in transmitted data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An execution environment has a deployed virtual machine image. The virtual machine image provides a service that is identified by a role. The execution environment generates a measurement of the virtual machine image and provides it to a key service to request role keys that enable operation of the virtual machine image in the execution environment. The key service determines whether the virtual machine image is mapped to the role and, if so, returns the role keys to the requesting execution environment.

## Claims

### Claim 1

A computing system, comprising:
at least one processor; and
memory storing instructions executable by the at least one processor, wherein the instructions, when executed, provide:
a policy engine configured to:
receive a role identifier identifying a role that represents a service to be hosted by an execution environment,
receive a virtual machine (VM) image measurement indicative of a virtual machine image deployed in the execution environment,
determine, based on a measurement-to-role mapping, whether the VM image measurement is mapped to the role, and
generate an evaluation signal indicative of the determination;
a key wrapping cryptographic engine configured to:
based on the evaluation signal indicating that the VM image measurement is mapped to the role, wrap a set of role keys that:
correspond to the role, and
enable the execution environment to execute the service; and
a key service configured to provide the execution environment with the set of wrapped role keys.

### Claim 2 (depends on 1)

The computing system of claim 1 wherein the policy engine is configured to receive the role identifier, the VM image measurement, and an execution environment identifier from a requesting execution environment, the execution environment identifier identifying the requesting execution environment.

### Claim 3 (depends on 2)

The computing system of claim 2 wherein the policy engine is configured to determine whether the requesting execution environment is mapped to the VM image measurement based on the execution environment identifier and to generate the evaluation signal based on the determination.

### Claim 4 (depends on 2)

The computing system of claim 2 wherein the policy engine is configured to:
access a set of measurement-to-role mappings that map each of a plurality of different sets of roles to a different VM image measurement; and
determine whether the VM image measurement is mapped to the role based on the set of measurement-to-role mappings.

### Claim 5 (depends on 4)

The computing system of claim 4 wherein the instructions provide:
a role key store/generator configured to provide the set of role keys to the key wrapping cryptographic engine; and
a set of key wrapper keys, each key wrapper key being mapped to a given role,
wherein the key wrapping cryptographic engine is configured to:
identify one or more of the key wrapper keys that are mapped to the role identified by the role identifier, and
encrypt the role keys with the identified one or more key wrapper keys.

### Claim 6 (depends on 1)

The computing system of claim 1 wherein the instructions provide:
a deployment engine configured to:
receive the role identifier,
obtain the VM image, based on the role identifier, and
deploy the VM image to the execution environment.

### Claim 7 (depends on 6)

The computing system of claim 6 wherein the instructions provide:
a set of role-to-image mappings that each map a role to a VM image,
wherein the deployment engine is configured to access the set of role-to-image mappings to identify the VM image.

### Claim 8 (depends on 7)

The computing system of claim 7 wherein the instructions provide:
a VM image repository configured to:
store the VM image,
wherein the deployment engine is configured to obtain the VM image, for deployment, from the VM image repository.

### Claim 9 (depends on 6)

The computing system of claim 6 wherein the execution environment comprises:
a measurement system configured to generate the VM image measurement and provide the VM image measurement to the key service.

### Claim 10 (depends on 9)

The computing system of claim 9 wherein the measurement system is configured to execute a hash function over the VM image to obtain a hash value which comprises the VM image measurement.

### Claim 11

A method performed by a computing system, the method comprising:
identifying a service associated with an execution environment configured to execute the service;
identifying a virtual machine (VM) image measurement, indicative of a virtual machine image deployed in the execution environment;
determining, based on a measurement-to-role mapping, whether the VM image measurement is mapped to the service;
generating an evaluation signal indicative of the determination;
obtaining, in response to the evaluation signal indicating that the VM image measurement is mapped to the service, a set of role keys that:
correspond to the service, and
enable the execution environment to execute the service;
encrypting the role keys in the set of role keys; and
providing the execution environment with the set of encrypted role keys.

### Claim 12 (depends on 11)

The method of claim 11 and further comprising:
receive a role identifier that identifies the service;
receiving the VM image measurement; and
receiving an execution environment identifier from the execution environment, the execution environment identifier identifying the execution environment, and wherein determining whether the VM image measurement is mapped to the service comprises determining whether the execution environment is mapped to the VM image measurement based on the execution environment identifier and generating the evaluation signal comprises generating the evaluation signal based on the determination.

### Claim 13 (depends on 12)

The method of claim 12 wherein determining whether the VM image measurement is mapped to the service comprises:
determining whether the VM image measurement is mapped to the role by accessing asset of measurement-to-role mappings that map each of a plurality of different sets of roles to a different VM image measurement.

### Claim 14 (depends on 13)

The method of claim 13 wherein encrypting the role keys comprises:
identifying one or more key wrapper keys mapped to the role; and
encrypting the role keys with the identified one or more key wrapper keys.

### Claim 15 (depends on 11)

The method of claim 11 and further comprising:
receiving the role at a deployment system;
obtaining the VM image, based on the role, at the deployment system by accessing a set of role-to-image mappings that map the role to the VM image; and
deploying the VM image to the execution environment.

### Claim 16 (depends on 15)

The method of claim 15 and further comprising:
generating the VM image measurement with a measurement system in the execution environment; and
providing the VM image measurement to the key service.

### Claim 17 (depends on 16)

The method of claim 16 wherein generating the VM image measurement comprises:
executing, with the measurement system, a hash function over the VM image to obtain a hash value which comprises the VM image measurement.

### Claim 18

A computing system, comprising:
at least one processor; and
memory storing instructions executable by the at least one processor, wherein the instructions, when executed, configure the computing system to:
execute a service represented by a deployed virtual machine (VM) image, and identified by a role;
apply a hash function to the VM image to generate a VM image measurement;
provide the role and the VM image measurement to a key service to request a set of role keys;
receive a set of wrapped role keys from the key service;
decrypt the set of wrapped role keys to obtain the requested set of role keys; and
execute the service using the requested role keys.

### Claim 19 (depends on 18)

The computing system of claim 18 wherein the instructions configure the computing system to:
receive, from the execution environment, the role identifying the service, and the VM image measurement indicative of the virtual machine image deployed in the execution environment;
determine that the VM image measurement is mapped to the role;
generate an evaluation signal indicative of the determination;
based on the evaluation signal indicating that the VM image measurement is mapped to the role, wrap the set of role keys; and
provide the execution environment with the set of wrapped role keys.

### Claim 20 (depends on 19)

The computing system of claim 19 wherein the instructions configure the computing system to:
access a set of role-to-image mappings that map the role to the VM image;
obtain the VM image, for deployment, from a VM image repository, by accessing the role-to-image mappings based on the role; and
deploy the VM image to the execution environment.
