TRUSTED CODE EXECUTION ON UNTRUSTED PLATFORMS USING INTEL SGX
Today, isolated trusted computation and code execution is of paramount importance to protect sensitive information and workfl ows from other malicious privileged or unprivileged software. Intel Software Guard Extensions (SGX) is a set of security architecture extensions fi rst introduced in the Skylake microarchitecture that enables a Trusted Execution Environment (TEE) It provides an 'inverse sandbox' for sensitive programs, and guarantees the integrity and confi dentiality of secure computations, even from the most privileged malicious software (e.g. OS, hypervisor) SGX capable CPUs only became available in production systems in Q3 2015, and they are not yet fully supported and adopted in systems. Besides the capability in the CPU, the BIOS also needs to provide support for the enclaves, and not many vendors have released the required updates for the system support. This has led to many wrong assumptions being made about the capabilities, features, and ultimately dangers of secure enclaves. By having access to resources and publications such as white papers, patents and the actual SGX capable hardware and software development environment, we are in a privileged position to be able to investigate and demystify SGX. In this paper, we fi rst review the previous trusted execution technologies, such as ARM Trust Zone and Intel TXT, to better understand and appreciate the new innovations of SGX. Then, we look at the details of SGX technology, cryptographic primitives and the underlying concepts that power it, namely the sealing, attestation, and the Memory Encryption Engine (MEE) We also consider use cases such as trusted and secure code execution on an untrusted cloud platform, and digital rights management (DRM) This is followed by an overview of the software development environment and the available libraries.