International Association for Cryptologic Research

International Association
for Cryptologic Research

Eurocrypt 2026

PERSEUS – Probabilistic Evaluation of Random Probing SEcurity Using Efficient Sampling


README

PERSEUS

Verification tool for random probing security, for circuits composed of SNI gadgets.

Dependencies

The tool is partially written in Rust, the toolchain needs to be installed (tested version: 1.93.0).

The remaining part of the tool is implemented in Python, we provide configuration for automatic management of the dependencies and compilation of the Rust code with the uv tool (tested version: 0.9.4).

Backend

PERSEUS provides three backends to evaluate the simulatability of tuples:

Getting started

uv run aes.py --help

For example

uv run aes.py -d 8 -p '2**-10' --samples='2**12' --backend=favom --e-samples='2**14' --prej-lim=3

Changing the number of cores used Set the NUM_THREADS variable to the number of desired threads (the verifmsi backend is always single-threaded).

Reproducing results from the Eurocrypt 2026 paper

Bash scripts that generate the results reported in the 3 tables of the paper are provided in paper_scripts/. These assume that uv is installed, and (for script_tab1.sh) that maskverif is available in PATH (see above). The printed outputs (also written to .log files) are the results reported in the tables (relevant output is marked with [RES]). Given the fairly long execution time of the whole scripts, it is suggested that readers interested in only selected results copy the command lines from the scripts directly into their shell.

Code structure

Main files:

In archived versions of the paper artifact, a copy of the relevant maskverif and verifMSI version are also provided (for archival) under dependencies. Using them necessitates an update to pyproject.toml.