background image

38-16 Vol. 3D

ENCLAVE ACCESS CONTROL AND DATA STRUCTURES

38.17.1  KEY REQUEST KeyNames

38.17.2  Key Request Policy Structure

38.18  VERSION ARRAY (VA)

In order to securely store the versions of evicted EPC pages, Intel SGX defines a special EPC page type called a 
Version Array (VA). Each VA page contains 512 slots, each of which can contain an 8-byte version number for a 
page evicted from the EPC. When an EPC page is evicted, software chooses an empty slot in a VA page; this slot 
receives the unique version number of the page being evicted. When the EPC page is reloaded, there must be a VA 
slot that must hold the version of the page. If the page is successfully reloaded, the version in the VA slot is cleared.
VA pages can be evicted, just like any other EPC page. When evicting a VA page, a version slot in some other VA 
page must be used to hold the version for the VA being evicted. A Version Array Page must be 4K-Bytes aligned.

38.19  ENCLAVE PAGE CACHE MAP (EPCM)

EPCM is a secure structure used by the processor to track the contents of the EPC. The EPCM holds exactly one 
entry for each page that is currently loaded into the EPC. EPCM is not accessible by software, and the layout of 
EPCM fields is implementation specific.

Table 38-24.  Supported KEYName Values

Key Name

Value

Description

EINITOKEN_KEY

0

EINIT_TOKEN key

PROVISION_KEY

1

Provisioning Key

PROVISION_SEAL_KEY 2

Provisioning Seal Key

REPORT_KEY

3

Report Key

SEAL_KEY

4

Seal Key

All other

Reserved

Table 38-25.  Layout of KEYPOLICY Field

Field

Bit Position

Description

MRENCLAVE

0

If 1, derive key using the enclave's MRENCLAVE measurement register.

MRSIGNER

1

If 1, derive key using the enclave's MRSIGNER measurement register.

RESERVED

15:2

Must be zero.

Table 38-26.  Layout of Version Array Data Structure

Field

OFFSET (Bytes) Size (Bytes)

Description

Slot 0

0

08

Version Slot 0

Slot 1

8

08

Version Slot 1

...
Slot 511

4088

08

Version Slot 511