\HeadingLevelA{An Analysis of Intel's Software Guard Extensions (SGX)}
\label{sec:sgx}

% NOTE: The \inputs that pull in naked paragraphs, as opposed to whole
%       sections, must be separated by empty lines.

Intel's Software Guard Extensions (SGX) is a set of extensions to the Intel architecture that aims to provide integrity and confidentiality guarantees to security- sensitive computation performed on a computer where the privileged software (kernel, hypervisor, etc) is potentially malicious.

This section extends the survey of Intel's SGX presented in (\S~\eref{I}{sec:sgx_model}).
Software Guard Extensions, and analyzes SGX based on the 3
papers~\citep{mckeen2013sgx, anati2013sgx, hoekstra2013sgx} that introduced it,
on the Intel Software Developer's Manual~\citep{intel2015sdm} (which supersedes
the SGX manuals~\citep{intel2013sgxmanual, intel2014sgx2manual}), an ISCA
2015 tutorial~\citep{intel2015iscasgx}, and two
patents~\citep{intel2013patent1, intel2013patent2}. We use the papers,
reference manuals, and tutorial as primary data sources, and only draw on the
patents to fill in missing information.\footnote{We note that this manuscript does not reflect the information available in two
papers~\citep{johnson2016sgxprovisioning, gueron2016sgxmee} that were published
after \citep{costan2016sgxexplained}.}

This section discusses the implementation of SGX (including a series of intelligent guesses of important but undocumented aspects of SGX), its security argument, and the implication of the complex Intel ecosystem on the ability of SGX to enable trusted remote computation.

\input{text/sgx/implementation.tex}

\input{text/sgx/access_protection.tex}

\input{text/sgx/access_correctness.tex}

\input{text/sgx/ewb_guess.tex}

\input{text/sgx/rsa_check.tex}

\input{text/sgx/keys.tex}

\input{text/sgx/security.tex}
