\HeadingLevelB{Outline}
\label{sec:sgx_intro_outline}

Reasoning about the security properties of Intel's SGX requires a significant
amount of background information that is currently scattered across many
sources. For this reason, a significant portion of this work is dedicated to
summarizing this prerequisite knowledge.

\S~\ref{sec:architecture_background} summarizes the relevant subset of modern computer architecture and the micro-architectural properties of recent Intel
processors. \S~\ref{sec:security_background} outlines the
landscape of trusted hardware systems, including cryptographic tools and
relevant classes of attacks. Lastly, \S~\ref{sec:sgx_related} briefly describes
other trusted hardware systems as context in which SGX was created.

Following this background information, \S~\ref{sec:sgx_model}
provides a (sometimes painstakingly) detailed description of SGX's programming
model, largely drawing from Intel's Software Development Manual.

A deep analysis of Intel's enclave infrastructure is deferred to part II
of this publication (\S~\eref{II}{sec:sgx}), and will analyze other public sources of information, such as Intel's patents relevant to SGX, in order to fill in some of the missing detail in the SGX specification. This discussion is organized into an overview of Intel's implementation of SGX (\S~\eref{II}{sec:sgx_implementation_overview}), a discussion and analysis of the mechanism by which SGX offers memory access protection to an enclave (\S~\eref{II}{sec:sgx_access_protection}, \S~\eref{II}{sec:sgx_access_correctness}), and examines SGX as a system for remote attestation (\S~\eref{II}{sec:sgx_rsa_check}, \S~\eref{II}{sec:sgx_hardware_keys}). Finally, part II presents a security analysis of SGX overall, and discusses the classes of attacks against which SGX does not offer guarantees(\S~\eref{II}{sec:sgx_security_analysis}). The main focus of part II is a detailed review of SGX's security properties to motivate and give context to the MIT Sanctum project (\S~\eref{II}{sec:sanctum}) $-$ a flexible, secure, and open source implementation of enclave-capable hardware that offers strong security guarantees against an insidious software adversary.
