The history of side-channel attacks dates back to the year of 1996, when Kocher [121] demonstrated that the data leaked from timing channels was su#cient for an attacker to recover the entire secret key. To generalize, vulnerable implementations of cryptographic operations can exhibit secret- dependent non-functional behaviors during the time of execution, which an adversary can observe
This project is supported by the National Research Foundation, Singapore, under its National Cybersecurity R&D Pro- gramme (CHFA-GC1-AW03), and NTU Start-up grant.
and utilize to fully or partially recover sensitive information. Since then, numerous types of side channels (e.g., execution timing [16, 26], acoustic emission [79], electromagnetic radiation [78], and power consumption [47]) have been discovered and exploited to defeat modern cryptographic schemes, allowing adversaries to break strong ciphers in a short period of time with very few trials. Among these side-channel threats, microarchitectural attacks are particularly dangerous and prevalent. A fundamental cause of such attacks is the conflict between performanceand security. During the evolution of computer architecture, various strategies were introduced to speed up the execution, which may bring side channels that leak the information of applications running on the system. One example is Simultaneous Multithreading (SMT), where multiple threads execute in parallel and share the same CPU core and functional units. This brings not only high performance, but also side channels due to contention for the shared hardware components. Another example is caching: A small hardware component is introduced (e.g., CPU caches, Translation Look-aside Bu$er, DRAM row bu$er) to store the previously accessed data, which is usually expected to be used again soon due to the principle of locality. Fetching data directly from this component is much faster. However, such timing di$erences can reveal the victim program’s access traces [86,
151, 155].
It is obviously infeasible to disable those features for side-channel mitigation, which can incur tremendous performance overhead. Therefore, e$ective elimination of side-channel vulnerabili- ties has been a long-standing goal. Although security-aware cryptographic applications, systems, and architectures were designed to mitigate side-channel attacks, it is, however, still very challeng- ing to remove all side-channel vulnerabilities from the software implementations and hardware designs. As such, the arms race between side-channel attacks and defenses remains heated.
This article provides a comprehensive survey of microarchitectural side-channel attacks and defenses in cryptographic applications. Since we focus on hardware attacks on software, it is nec- essary to study the vulnerabilities and defense opportunities in both hardware and software levels. We are particularly interested in three questions: (1) What are the common and distinct features ofsoftwarevulnerabilitiesandhardwareßawsthatleadtoside-channelattacks?(2) Whatarethetypi-cal mitigation strategies for applications, operating systems, and hardware, respectively? (3) What isthestatusquoofcryptograhpicapplicationsintermsofside-channelvulnerabilities?