1 Introduction
Current commodity operating systems and applications lack formal assurance that the secrecy and integrity of security-sensitive data are protected. The size and complexity of these systems suggest that we will not achieve the level of assurance necessary to guarantee the absence of security vulnerabilities in these systems in the near future. Even the best-engineered code contains bugs in proportion to its size [24], and available formal methods - while holding great promise for the future - are plagued by scalability challenges. Yet, the convenience and low cost of commodity systems offer unmatched appeal for both users and developers, dictating that security-sensitive workloads will be run on these systems for years to come.