By Heiko Mantel¹, Joachim Schmidt², Thomas Schneider², Maximilian Stillger², Tim Weißmantel¹, Hossein Yalame² (¹MAIS, TU Darmstadt ²ENCRYPTO, TU Darmstadt) in Design Automation Conference (DAC'24). Paper available here.
This repository contains code and artifacts for reproducing our results.
- GitHub releases
- XLS High-Level Synthesis toolchain
- CacheAudit v0.3
- Unhardened and hardened block cipher source and binaries
- Intermediate circuit files and C source artifacts
- Analysis data spreadsheets
- Repository
- Hardening workflow
- LUT merging
- LUT2C
The following instructions assume an Ubuntu 22.04 system. For other Linux distributions, the steps may vary slightly.
- Setup
- Executing hardening workflow
- Postprocessing and optimization of hardened C source
- Compilation of resulting C source
- Static side-channel analysis
Download and extract the artifacts from the release page.
sudo apt install build-essential yosys python3
make -C Bench2SHDL
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd CacheAudit
bash install.sh
This part of the workflow prepares circuits by compiling C code to a hardened C code.
# Evaluation/Comparison-RiCaSi-1.0 can be the path of the extracted release archive
cd Evaluation/Comparison-RiCaSi-1.0/cross_library_aes/2-Compilation/openssl
make -C src -f Makefile.Te
python ../../inline.py src/Te0_f_lut6a_mo.c
make openssl-aes-wrapper-enc-Te
Now we can perform two independent analysis.
cd ../4-Side-Channel-Analysis-Of-Protected-Code/openssl/
make analysis
cd ../3-Functional-Correctness/openssl/
python test.py
This code is experimental and should not be used in production. We do not provide security guarantees.