
feasible. Moreover, several hundred encryptions are 
required to compute the complete AES key. 
Gullasch et al., (2011) use hundreds of spy threads 
to monitor the cache. The completely fair (process) 
scheduler (CFS) in Linux guarantees that each spy 
thread and the victim process get the same aggregate 
CPU time in steady state. Also, the sleep-wakeup 
routines of the spy threads are carefully controlled 
resulting in preemption of the victim when a 
sleeping thread wakes up. This, together with the 
scheduler’s “fairness guarantees”, ensures that the 
victim is preempted after it makes only a single table 
access. Their fine-grained approach requires a neural 
network to handle the large number of false 
positives. Moreover, the slowdown caused by 
frequent interruptions of the victim may arouse 
suspicion.  
The goal of our work is the design and 
implementation of an espionage network with 
associated analytic capabilities that retrieve the AES 
key using fewer encryptions and also fewer 
interruptions to the victim process. We aim for both 
simplicity and versatility. Earlier attacks may work 
on only specific OS versions or with specific 
versions of OpenSSL. Further, hardware prefetching 
(Hennessy and Patterson, 2012) (implemented on 
many modern processors) may render those attacks 
unsuccessful. To the extent possible, we seek to 
demonstrate successful attacks on diverse computing 
platforms and with different OpenSSL versions. 
This paper is organized as follows: Section 2 
summarizes related work. Section 3 contains a brief 
introduction to AES implementation using lookup 
tables and the cryptanalytic aspects of the attack. In 
Section 4 we present the design and implementation 
of our espionage network. A preliminary analysis of 
the success of our approach is presented in Section 5 
while Section 6 concludes the paper. 
2 RELATED WORK 
Software implementations of AES based on lookup 
tables were first exploited by Bernstein (2005). They 
report the extraction of a complete AES key by 
exploiting the timing dependencies of encryptions 
caused by cache on a Pentium-III machine. 
Although their attack is generic and portable, it 
needs 2
.
encryptions and sample timing 
measurements with known key in an identical 
configuration of target server. 
Tsunoo et al., (2003) demonstrated  a  timing-
driven cache attack on DES. They focused on 
overall hit ratio during encryption and performed the 
attack by exploiting the correlation between cache 
hits and encryption time. A similar approach was 
used by Bonneau and Mironov (2006) where they 
emphasized individual cache collisions during 
encryption instead of overall hit ratio. Although the 
attack by Bonneau et al. was a considerable 
improvement over previous work by Tsunoo et al. 
(2003), it still requires 2
timing samples. 
Osvik et al., (2006) proposed an access-driven 
cache attack where they introduced the Prime and 
Probe technique. In the  Prime phase, the  attacker 
fills cache with its own data before encryption 
begins. During encryption, the victim evicts some of 
the attacker's data from cache in order to load 
lookup table entries. In the Probe phase, the attacker 
calculates reloading time of its data and finds cache 
misses corresponding to those lines where the victim 
loaded lookup table entries.  In the synchronous 
version of their attack, 300 encryptions were 
required to recover the 128 bit AES key on 
Athlon64 system and in the  asynchronous attack, 
45.7 bits of information about the  key were 
effectively retrieved.  
The ability to detect whether a cache line has 
been evicted or not was further exploited by Neve 
and Seifert (2007). They designed an  improved 
access-driven cache attack on the last round of AES 
on single-threaded processors. However the 
practicality of their attack was not clear due to 
insufficient system and OS kernel version details. 
Gullasch et al., (2011) proposed an efficient 
access driven cache attack when attacker and victim 
use a shared crypto library. The spy process first 
flushes the AES lookup tables from all levels of 
cache and interrupts the  victim process after 
allowing it a single lookup table access. After every 
interrupt, it calculates the reload time to find which 
memory line is accessed by the victim. This 
information is further processed using  a neural 
network to remove noise in order to retrieve the 
AES key.  
Weiß et al., (2012) used Bernstein's timing attack 
on AES running inside an ARM Cortex-A8 single 
core system in a virtualized environment to extract 
the AES encryption key. Irazoqui, Inci, Eisenbarth 
and Sunar (2014a) performed Bernstein's cache 
based timing attack in a virtualized environment to 
recover the  AES secret key from co-resident VM 
with 2
 encryptions. Later Irazoqui et al., (2014b) 
used a Flush + Reload technique and recovered the 
AES secret key with 2
 encryptions. 
SECRYPT2015-InternationalConferenceonSecurityandCryptography
442