Microarchitectural Attacks on Trusted Execution Environments
A trusted execution environment is designed so that the code and data inside it stay protected even from privileged software. That stronger guarantee is why TEEs are used where the surrounding system cannot be trusted — managing cryptographic keys, handling biometric data on a phone, running computation over private data on infrastructure that belongs to somebody else.
The computation itself, however, runs on hardware built from caches, branch predictors, buffers, and a shared memory subsystem. I study how microarchitectural attacks on those components affect the security properties a TEE is meant to provide.
What interests me particularly is that the state a security monitor relies on in order to enforce isolation sits in the same hardware as the data it is protecting.