The lifecycle of a Sanctum enclave closely resembles the lifecycle of its SGX
equivalent. An enclave is created when its host application performs a
system call asking the OS to create an enclave from a dynamically loadable
module (\texttt{.so} or \texttt{.dll} file). The OS invokes the security
monitor to assign DRAM resources to the enclave, and to load the initial code
and data pages into the enclave. Once the complete set of pages of an enclave are loaded, the enclave is
marked as initialized via another security monitor call.

Sanctum's software attestation scheme is a simplified version of SGX's scheme, and
reuses a subset of its concepts. The data used to initialize an enclave is
cryptographically hashed, yielding the enclave's \textit{measurement}. An
enclave can invoke a secure inter-enclave messaging service to send a message
to a privileged \textit{attestation enclave} that can access the security
monitor's attestation key, and produces the attestation signature.
