Skip to content

Time Trial - A tool for performing feasibility analyses of timing attacks

License

Notifications You must be signed in to change notification settings

alokmenghrajani/time_trial

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Time Trial GUI

The source code for the time trial GUI is in the time_trial folder.

Requirements

  • Python 3.0
  • The packages listed in the requirements.txt file which can be installed via pip3 install -r requirements.txt
  • A locally running redis server.

Running time_trial

  • Execute time_trial.py.

Racer

The host executing the trials must have both the C++ code and the time trial Python code installed. The Python code is required in order to connect to the redis server and drive the execution of the trial. Since the relative path to the C++ binaries is currently hard-coded in the Python code, the folder structure should not be changed. Linux is the recommended operating system (tesing performed using Ubuntu 14.04 Server LTS).

The source code for the C++ component is in the racer folder.

Requirements

The following packages are required in order to compile the racer code:

  • build-essential
  • scons
  • libgmp-dev
  • libcurl4-dev
  • libcurl4-openssl-dev
  • libcppnetlib-dev

On Ubuntu, install all packages via: sudo apt-get install build-essential scons libgmp-dev libcurl4-openssl-dev libcppnetlib-dev

Compiling the source

The racer C++ code is built using the SCons build system. When all required packages are installed, it should be sufficient to call scons in the racer folder to build all components. The binaries are created in the the racer/bin/ folder. There is no need to direclty execute the binary. The racer driver will take care of that automatically via the rqworker (see below).

Executing Trials

On the host running the Time Trial GUI:

  • Use the time_trial GUI to configure your racers. Note that the hostname will be used to later execute trials on a racer host.

  • Configure your trial in the first tab.

  • Click the "Start" button in order to schedule it.

  • SSH into your racer and forward your local redis port along: ssh -R 6379:localhost:6379 <racer_hostname>

  • Change into the time_trial folder.

  • Execute rqworker <hostname> where <hostname> is the hostname specified for the racer within the GUI.

At this point, the rqworker will connect to redis (via the SSH tunnel), pull a job for the named racer, and execute it. Once complete, the results will populate the time trial UI (this may require a refresh).

From here, a feasibility analysis can be performed by right clicking an individual trial in the table view and selecting either "shorter trial" or "longer trial". The choice should correspond to the two different timings one expects in the experiment. When switching to the "Feasibility Analysis" tab, two plots should be visible that can be customized. In additon, the box test can be executed using variable parameters.

Automated Attacks

To come.

Disclaimer

The source code was developed with a focus on the required functionality. Security considerations were not a priority and thus untrusted access to time_trial and the racer should be restricted.

About

Time Trial - A tool for performing feasibility analyses of timing attacks

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 64.2%
  • C++ 34.0%
  • C 1.8%