\HeadingLevelA{The MIT Sanctum Processor}
\label{sec:sanctum}

% 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) (\S~\ref{sec:sgx}) have captured the attention of security practitioners by claiming to secure computation performed on a remote computer where all privileged software may be malicious.
%SGX implements a compelling programming model (\S~\eref{I}{sec:sgx_model}) for implemenitng modular secure systems, and offers strong guarantees of integrity against an adversary seeking to directly read or write protected memory, among other classes of attacks.
%Unfortunately, an analysis of SGX reveals that it is vulnerable to software attacks (~\citep{costan2016sgxexplained}, \S~\ref{sec:sgx_security_analysis}). Furthermore, significant parts of SGX are undocumented, making it impossible for researchers outside of Intel to reason about some of its security properties.

Sanctum offers the same promise as Intel's Software Guard Extensions (SGX), namely strong provable isolation of software modules running concurrently and sharing resources, but protects against an important class of additional software attacks that infer private information from a program's memory access patterns. Sanctum shuns unnecessary complexity, leading to a simpler security analysis.
The Sanctum processor design follows a principled approach to eliminating entire attack surfaces through isolation, rather than repairing attack-specific privacy leaks. Most of Sanctum's logic is implemented in trusted software, which does not perform cryptographic operations using keys, and is easier to analyze than SGX's opaque microcode, which does.
The Sanctum prototype targets a Rocket RISC-V core~\citep{lee2014rocket}, an open implementation that allows any researcher to reason about its security properties. Sanctum's extensions can be adapted to other processors, as the design does not modify any major CPU building block.
Instead, Sanctum adds hardware at interfaces between generic building blocks, enforcing invariants to uphold Sanctum's security policy without impacting cycle time.
Sanctum demonstrates that strong software isolation is achievable with a surprisingly small set of minimally invasive hardware changes, and a very reasonable design and performance cost.

\input{text/sanctum/threat_model.tex}

\input{text/sanctum/programming_model.tex}

\input{text/sanctum/protection_boundaries.tex}

\input{text/sanctum/security_primitives.tex}

\input{text/sanctum/baseline.tex}

\input{text/sanctum/hardware.tex}

\input{text/sanctum/software.tex}

\input{text/sanctum/analysis.tex}

\input{text/sanctum/related.tex}
