This is one possible Implementation of LLC Prime+Probe and Flush+Reload covert-channels.
This implementation is tested and currently works on
- an aws i3-metal machine
- an aws m4.xlarge dedicated instance
- a local i7 Haswell (4c/8t) desktop
make clean; make
This implementation supports configuring the channel through command line
options.
For both prime+probe and flush+reload use
-i
to specify a time interval for each bit transmitted.
-r
to specify a cache set to communicate on.
-a
to specify cycles spent for sender to access the cache.
For prime+probe use:
-p
to specify cycles spent for receiver to prime the cache.
-b
to compute the channel bandwidth given one configuration.
For flush+reload use:
-f
to specify a shared file to use (should not be an empty file).
To run, first setup pre-allocated huge pages
and (recommended) disable hyper-threading by running:
./setup.sh
To run sender and receiver in a chat mode:
taskset -c X ./sender
taskset -c X ./receiver
where X
is supposed to limit sender and receiver onto the same socket.
To evaluate channel bandwidth with different configurations run:
./benchmark.py
This implementation merges efforts from a shared-memory, Flush+Reload Covert
Channel by Mohamad Hajj. And it's all
developed from on this github repo (or
tracked in branch fork_base
).