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