  Transient execution attacks utilize micro-architectural covert channels to
leak secrets that should not have been accessible during logical program
execution. Commonly used micro-architectural covert channels are those that
leave lasting footprints in the microarchitectural state, for example, a cache
state change, from which the secret is recovered after the transient execution
is completed.
  In this paper, we present SpectreRewind, a new approach to create contention
based covert channels for transient execution attacks. In our approach, a
covert channel is established by issuing the necessary instructions logically
before the transiently executed victim code. Unlike prior contention based
covert channels, which require simultaneous multi-threading (SMT),
SpectreRewind supports single hardware thread based covert channels, making it
viable on systems where attacker cannot utilize SMT. We show that contention on
the floating point division unit on commodity processors can be used to create
a high-performance (~100 KB/s), low-noise covert channel for transient
execution attacks instead of commonly used flush+reload based cache covert
channels.
  We implement a Meltdown attack utilizing the proposed covert channel showing
competitive performance compared to the stateof-the-art cache based covert
channel implementation. We also show that the covert channel works in the
JavaScript engine of a Chrome browser.
