Secure Programming with Intel SGX and Novel Applications
Intel’s Software Guard Extensions (SGX) is a new technology introduced in recent generations of Intel processors. SGX is supposed to be able to create a trusted execution environment for user-space software that is protected from all privileged software running on the same system. The CPU creates a protected enclave in memory for the software and guards the memory using strict access control and encryption with keys derived from secrets embedded inside the CPU.
To be able to start developing confidentiality and privacy protected applications using Intel SGX, one must first be able to reason about the security guarantees that it provides, and for this, a better understanding of the mechanisms behind the technology is needed.
First, this thesis contains a Systematization of Knowledge of the Intel Software Guard Extensions technology, covering the technical details of the hardware mechanisms and a practical hands-on tutorial covering the usage of the basic functionality and features.
Second, the thesis describes the design of the Accountable Decryption protocol, a novel protocol that can guarantee accountable decryption of user-data by using the capabilities that SGX can provide. The protocol depends on a decryption device that can be trusted to only perform decryption requests if the evidence of the decryption is observable by the user. The thesis describes the implementation of a prototype decryption device for the Accountable Decryption protocol, which can provide confidentiality and integrity guarantees by using the SGX technology. The implementation is evaluated by discussing different security aspects of the implementation.
Third, the thesis contains discussions on different solutions on how SGX can be used to protect legacy software without any modifications, and discussions on some of the security issues of the proposed solutions.