  Hardware enclaves such as Intel SGX are a promising technology for improving
the security of databases outsourced to the cloud. These enclaves provide an
execution environment isolated from the hypervisor/OS, and encrypt data in RAM.
However, for applications that use large amounts of memory, including most
databases, enclaves do not protect against access pattern leaks, which let
attackers gain a large amount of information about the data. Moreover,the naive
way to address this issue, using Oblivious RAM (ORAM) primitives from the
security literature, adds substantial overhead.
  A number of recent works explore trusted hardware enclaves as a path toward
secure, access-pattern oblivious outsourcing of data storage and analysis.
While these works efficiently solve specific subproblems (e.g. building secure
indexes or running analytics queries that always scan entire tables), no prior
work has supported oblivious query processing for general query workloads on a
DBMS engine with multiple access methods. Moreover, applying these techniques
individually does not guarantee that an end-to-end workload, such as a complex
SQL query over multiple tables, will be oblivious. In this paper, we introduce
ObliDB, an oblivious database engine design that is the first system to provide
obliviousness for general database read workloads over multiple access methods.
  ObliDB supports a broad range of queries, including aggregation, joins,
insertions, deletions and point queries. We implement ObliDB and show that, on
analytics work-loads, ObliDB ranges from 1.1-19x faster than Opaque,a previous
oblivious, enclave-based system designed only for analytics, and comes within
2.6x of Spark SQL. ObliDB supports point queries with 3-10ms latency, which
runs over 7x faster than HIRB, a previous encryption-based oblivious index
system.
