Paper 2016/204

A Memory Encryption Engine Suitable for General Purpose Processors

Shay Gueron

Abstract

Cryptographic protection of memory is an essential ingredient for any technology that allows a closed computing system to run software in a trustworthy manner and handle secrets, while its external memory is susceptible to eavesdropping and tampering. An example for such a technology is Intel's emerging Software Guard Extensions technology (Intel SGX) that appears in the latest processor generation, Architecture Codename Skylake. This technology operates under the assumption that the security perimeter includes only the internals of the CPU package, and in particular, leaves the DRAM untrusted. It is supported by an autonomous hardware unit called the Memory Encryption Engine (MEE), whose role is to protect the confidentiality, integrity, and freshness of the CPU-DRAM traffic over some memory range. To succeed in adding this unit to the micro architecture of a general purpose processor product, it must be designed under very strict engineering constraints. This requires a careful combination of cryptographic primitives operating over a customized integrity tree that mostly resides on the DRAM while relying only on a small internally stored root. The purpose of this paper is to explain how this hardware component of SGX works, and the rationale behind some of its design choices. To this end, we formalize the MEE threat model and security objectives, describe the MEE design, cryptographic properties, security margins, and report some concrete performance results.

Metadata
Available format(s)
PDF
Category
Implementation
Publication info
Preprint. MINOR revision.
Contact author(s)
shay @ math haifa ac il
History
2016-02-25: received
Short URL
https://ia.cr/2016/204
License
Creative Commons Attribution
CC BY

BibTeX

@misc{cryptoeprint:2016/204,
      author = {Shay Gueron},
      title = {A Memory Encryption Engine Suitable for General Purpose Processors},
      howpublished = {Cryptology ePrint Archive, Paper 2016/204},
      year = {2016},
      note = {\url{https://eprint.iacr.org/2016/204}},
      url = {https://eprint.iacr.org/2016/204}
}
Note: In order to protect the privacy of readers, eprint.iacr.org does not use cookies or embedded third party content.