🤖 AI Summary
Existing defenses against composite side-channel attacks—such as cache, single-step debugging, and ciphertext leakage—in Trusted Execution Environments (TEEs) either target isolated attack vectors or rely on oversimplified threat models, failing to balance security and practicality. Method: We propose the first dynamic obfuscation framework that simultaneously protects both code and data. It employs program-analysis-driven, fine-grained code block partitioning and integrates Oblivious RAM (ORAM) to jointly conceal execution flow and memory access patterns. The framework supports a generalized side-channel threat model and operates fully automatically. Contribution/Results: Our approach achieves provably optimal security under standard assumptions while significantly lowering deployment overhead. Experimental evaluation across realistic side-channel scenarios demonstrates effective prevention of execution-flow tracing, with overhead low enough to enable practical deployment in real-world TEEs.
📝 Abstract
Trusted execution environments (TEEs) offer hardware-assisted means to protect code and data. However, as shown in numerous results over the years, attackers can use side-channels to leak data access patterns and even single-step the code. While the vendors are slowly introducing hardware-based countermeasures for some attacks, others will stay unaddressed. This makes a software-level countermeasure desirable, but current available solutions only address very specific attack vectors or have a narrow leakage model.
In this work, we take a holistic view at the vulnerabilities of TEEs and design a tool named Obelix, which is the first to protect both code and data against a wide range of TEE attacks, from cache attacks over single-stepping to ciphertext side-channels. We analyze the practically achievable precision of state-of-the-art single-stepping tools, and present an algorithm which uses that knowledge to divide a program into uniform code blocks, that are indistinguishable for a strong attacker. By storing these blocks and the program data in oblivious RAM, the attacker cannot follow execution, effectively protecting both secret code and data. We describe how we automate our approach to make it available for developers who are unfamiliar with side-channels. As an obfuscation tool, Obelix comes with a considerable performance overhead, but compensates this with strong security guarantees and easy applicability without requiring any expert knowledge.