This repository contains the source code for the experiments in the paper
A Comparison of Graph-Inference Side-Channel Attacks Against SKINNY
to be presented at CASCADE 2025.
The project consist of several Python scripts meant to be run separately from
the main directory.
The necessary libraries are listed in requirements.txt
and can be installed
by running pip install -r requirements.txt
,
preferably in a virtual environment.
To compute the experiments corresponding to Fig. 4 and 5 in the paper, you can run the script:
> python src/fgi-sim/SASCA.py
This will populate the results
folder with several .hdf5
files.
Each of these files contains the success rates and key ranks for each experiment.
The file names are structured as follows:
SASCA<_44><-start><-end>-[number of experiments]-[depth range in rounds]-[trace count range]-[iterations range]-[std]-[seed].h5
where the items marked in <>
are optional flags and the items marked with []
are dependent on experiment parameters.
So, for example, the file:
SASCA_44-start-end-500-2_2-1_20-60_60-1-12345.h5
contains the experiments using 44 S-boxes of leakage, a graph consisting of two rounds, from 1 to 20 traces, 60 iterations, a noise level of 1, and the seed 12345.
For attacking the larger tweak key variant of SKINNY, SKINNY-128-384, relating to Fig. 3, the script is:
> python src/fgi-sim/SASCA-384.py
For the attacks on real traces, the traces must first be downloaded from
Zenodo,https://doi.org/10.5281/zenodo.14640175,
and added to a folder traces
in the base directory.
Then run
> python src/fgi-real/generate_profiles.py
> python src/fgi-real/generate_scores.py
to precompute Gaussian templates from the profiling traces and scores for all intermediates in the attack traces.
Lastly, the experiments relating to Fig. 6 can be run with:
> python src/fgi-real/SASCA_real.py
To acquire new traces, follow the instructions in https://github.com/Simula-UiB/CGI-DPA and use the convert
function in convert.py
to convert the traces to the updated .hdf5
format.