Search papers, labs, and topics across Lattice.
This paper introduces a three-step approach to enhance Trusted Execution Environments (TEEs) by formalizing a type system that enforces information-flow security in LLVM-like languages, addressing the challenges of manual enclave partitioning. The proposed method, SPLITR, automates the compilation from an enclave-oblivious calculus (SIR) to an enclave-aware calculus (SIREN), ensuring secure enclave-aware program generation with fine-grained control over host-enclave boundaries. Evaluation on microbenchmarks and real-world applications, including OpenSSL, demonstrates significant reductions in host-enclave transitions and improved performance, achieving near-native execution speeds for long-running workloads.
Automating enclave partitioning can cut host-enclave transitions in OpenSSL by over 50%, streamlining secure application development.
Trusted Execution Environments (TEEs) provide hardware-supported isolation through enclaves that protect code and data independently of software abstractions. However, TEEs alone cannot enforce information-flow security. This problem is further aggravated in LLVM-like low-level languages that allow unrestricted pointer manipulation and unstructured control flow. Moreover, using TEEs effectively typically requires manually partitioning applications into enclave and non-enclave components, a process that is labor-intensive, error-prone, and lacks fine-grained control. We address these challenges with a three-step approach. First, we formalize SIR, an enclave-oblivious calculus based on LLVM IR, equipped with a novel permissive type system that enforces security against low-level attackers. To obtain meaningful guarantees, SIR combines information-flow control with security-aware coarse-grained memory safety. Second, we extend SIR to SIREN, an enclave-aware calculus that enforces noninterference against stronger attackers capable of observing arbitrary non-enclave memory. Third, we develop a type-driven, type-preserving compilation from SIR to SIREN that automatically produces secure enclave-aware programs, eliminating manual partitioning while providing fine-grained control over host-enclave boundaries. We implement and evaluate SPLITR on thirteen microbenchmarks and real-world workloads, including applications from SGXGauge, on Intel SGX hardware. SPLITR scales to OpenSSL (425,953 LLVM IR instructions) and supports multiple objectives that expose trade-offs among enclave TCB size, host-enclave transitions, and boundary data movement. For OpenSSL, optimizing for transitions reduces them from 393 to 187. Runtime overhead is dominated by fixed enclave costs for short-running workloads, whereas long-running applications better amortize these costs and approach native performance.