Secure Storage for the Cloud
Maurice Bailleu, University of Edinburgh
The cloud has become established for applications that need to be scalable and highly available. However, moving data to data centers owned and operated by a third party, i.e., the cloud provider, raises privacy concerns because a cloud provider could easily access and manipulate the data or program flow, preventing the cloud from being used for certain applications, like medical or financial. Hardware vendors are addressing these concerns by developing Trusted Execution Environments (TEEs) that make the CPU state and parts of memory inaccessible from the host system. While TEEs protect the current execution state, they do not provide security guarantees for data which does not fit or reside in the protected memory area, like network and persistent storage. In this work, we aim to address TEEs' limitations in three different ways, first we provide the trust of TEEs to persistent storage, second we extend the trust to multiple nodes in a network, and third we propose a compiler-based solution for accessing heterogeneous memory regions. More specifically, * Speicher extends the trust provided by TEEs to persistent storage. Speicher implements a key-value interface. Its design is based on LSM data structures, but extends them to provide confidentiality, integrity, and freshness for the stored data. Thus, Speicher can prove to the client that the data has not been tampered with by an attacker. * Avocado is a distributed in-memory key-value store (KVS) that extends the trust that TEEs provide across the network to multiple nodes, allowing KVSs to scale beyond the boundaries of a single node. On each node, Avocado carefully divides data between trusted memory and untrusted host memory, to maximize the amount of data that can be stored on each node. Avocado leverages the fact that we can model network attacks as crash-faults to trust other nodes with a hardened ABD replication protocol. * Toast is based on the observation that modern high-performance systems often use several different heterogeneous memory regions that are not easily distinguishable by the programmer. The number of regions is increased by the fact that TEEs divide memory into trusted and untrusted regions. Toast is a compiler-based approach to unify access to different heterogeneous memory regions and provides programmability and portability. Toast uses a load/store interface to abstract most library interfaces for different memory regions.
Date & Time
Thursday, December 1, 2022 - 14:00
Imperial College London