Published October 5, 2021 | Version v1
Software Open

HyperDegrade Proof-of-Concept

  • 1. Tampere University

Description

Summary

This document is for reproducing one of the research results from the paper "HyperDegrade: From GHz to MHz Effective CPU Frequencies", to appear at the 31st USENIX Security Symposium (USENIX Sec 2022).

It is for reproducing the results in Section 4 of the paper, including Tables 8-9.

The instructions assume the root directory of the archive you are reading now is as follows.

cd /path/to/hyperd/

Requirements on Ubuntu

sudo apt install git build-essential python3 linux-tools-common linux-tools-generic linux-tools-`uname -r`

Enable perf

echo "-1" | sudo tee /proc/sys/kernel/perf_event_paranoid

Building BEEBS benchmark suite

You only have to build the binaries once.

cd /path/to/hyperd/
git clone https://github.com/mageec/beebs.git

At the time of this writing, the most recent commit on the master branch of the beebs repo is: 049ded9f3aeb5591f553879d3a0376b8614e9422

Build all benchmarks as follows. (Linking statically.)

cd /path/to/hyperd/beebs/
patch -p1 < ../beebs.patch
./configure --build=x86_64
make MAKEINFO=true

Shared parts

There's a post-processing script to build as a shared library.

cd /path/to/hyperd/
./build_shared.sh

Build degrade tooling

cd /path/to/hyperd/
make clean
make

You should now have the degrade binary.

Benchmark experiments

Running all experiments takes a significant amount of time (~50h), especially for Degrade and HyperDegrade strategies.

You can run a partial experiment that should take 2 hours to complete using: run_all.sh small.

For full experiment run: run_all.sh.

Benchmark results will appear in the bench_*.json files.

Run experiment

You can also execute the experiments on demand.

For the baseline experiment with no degrading (NoDegrade):

cd /path/to/hyperd/
./degrade.sh A

To degrade from a different physical core (Degrade):

cd /path/to/hyperd/
./degrade.sh B

To degrade from the same physical core (HyperDegrade):

cd /path/to/hyperd/
./degrade.sh C

Parse results and compare

After completing the experiment we should have three json files, one for each degrade strategy. If no other json files are in path/ you can parse and see the results using:

cd /path/to/hyperd/
python3 compare.py path/bench*.json

Credits

Authors

  • Alejandro Cabrera Aldaya (Tampere University, Tampere, Finland)
  • Billy Bob Brumley (Tampere University, Tampere, Finland)

Funding

  • This project has received funding from the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation programme (grant agreement No 804476).
  • Supported in part by CSIC's i-LINK+ 2019 "Advancing in cybersecurity technologies" (Ref. LINKA20216).

License

This work is released under the MIT License.

Files

README.md

Files (23.4 kB)

Name Size Download all
md5:bcf6ce98c224ed463b1ccc219c37cef9
740 Bytes Download
md5:f4b9565e17c8299b624c5eaad4508c72
2.5 kB Download
md5:0f2366466220c20cef09eeb27d5471ae
3.6 kB Download
md5:bba5f05f505779fc28b9d0fe06cfa10a
2.1 kB Download
md5:afb144f951619a1dfabd994b3d8a9917
1.3 kB Download
md5:5007117ac9da347c0d5aee48186b76f8
1.4 kB Download
md5:1fb95c0e3e6eadf6ef6d80b4d4364768
6.3 kB Download
md5:d53bc0f0039705428e9f88e050422ee0
1.1 kB Download
md5:491674ee6a4664f674dde956c4ca7459
121 Bytes Download
md5:e28ba36f1ba154fffe29abec5c1b6a2b
2.9 kB Preview Download
md5:c5f433c21acc318713162b64821f6a40
1.4 kB Download

Additional details

Related works

Is cited by
Conference paper: arXiv:2101.01077 (arXiv)

Funding

SCARE – Side-Channel Aware Engineering 804476
European Commission