Side Channel Security Risks In Commodity Microarchitectures
Computing system security is important for everyday functioning of society, among other things. We say that computing systems should preserve Conļ¬dentiality (your se- crets stay secret) and Integrity (if you store information, it should remain unchanged). Another fundamental security property is Availability (the systems you rely on should always be available for you to do work on our behalf), but this thesis doesnāt consider this aspect. It is common that people and organizations share computing resources with other people and organizations, ones that are not necessarily trusted. One example of that is cloud computing – a scenario where a single computer is used by many tenants at the same time. Tenants are isolated logically from each other by presenting each with a Virtual Machine (VM). Itās virtual because you can pretend itās a real machine. But can you really? It is a previously-established fact that sharing computing resources concurrently can have unexpected side effects. In normal usage these effects are typically not noticed. Everything keeps working as if you are the only user, as computer hardware is extremely well veriļ¬ed to maintain semantic correctness, no matter what the usage patterns and no matter how many different users there are. However, subtle differences in how shared resources behave, even if they are presented as exclusive access to each tenant, can be observed, that depend on what the other tenant is doing. This is known as a side channel. The most popular example of this is the CPU cache. The cache is typically shared between all tenants on a computer system (or, in the case of multi-socket systems, those on the same CPU package, which is still a large fraction of the users on the same computer system). This phenomenon be exploited by a spying tenant by exercising corner cases in how such a resource is normally used, in a way that can lead to stealing secrets from another tenant. This is called a side channel attack. This thesis builds on research in this ļ¬eld and explores generalization in several different dimensions. This thesis ļ¬nds that the classic way to exploit shared resources, the CPU Cache, also applies to other resources. We show successful, practical cryptographic key recovery from a single signal capture, even between Virtual Machines. We also show that, even if software is written to be very quiet in its footprint, the CPU can still touch items in the CPU Cache on the applicationsā behalf, necessary for it to work, that betray some secrets. All Conļ¬dentiality violations are broadly similar to eachother in effect – when Conļ¬dentiality is violated, secrets are lost. Serious as this can be, we also ļ¬nd realistic examples of Integrity violations, and ļ¬nd that the repercussions are more complex and unpredictable, and not easy to summarize in a single category. We show that by violating Integrity, we can undermine the security of a system in 2 very different ways. One allows us to break in, the other allows us to bypass software update veriļ¬cation and get our own, malicious, software installed when a user upgrades software packages. There are many more possible examples of how undermining the security of a system can happen, just as invisibly as when secrets are stolen, when Integrity is violated. We ļ¬nally show a generalization in method. We allow for an arbitrary software target to be analyzed to be coupled with an arbitrary CPU, with speciļ¬c exploitable shared resources, and automatically allow side channel analysis to happen, by using black-box analysis and machine learning.
https://research.vu.nl/ws/files/155813469/B%20J%20%20Gras%20-%20thesis.pdf
https://research.vu.nl/ws/files/155813471/B%20J%20%20Gras%20-%20cover.pdf
https://research.vu.nl/ws/files/155813473/B%20J%20%20Gras%20-%20toc.pdf
https://research.vu.nl/ws/files/155813475/B%20J%20%20Gras%20-%20title_page.pdf