Welcome to SCALib#
The Side-Channel Analysis Library (SCALib) is a Python package that contains state-of-the-art tools for side-channel evaluation. It focuses on providing efficient implementations of analysis methods widely used by the side-channel community and maintaining a flexible and simple interface.
SCALib is on GitHub!
Usability & Efficiency#
SCALib main characteristics are:
High Performances: Under its Python interface, most of SCALib functionality is implemented in optimized and highly parallel Rust code.
Flexible & Simple Interface: SCALib is a simple library. It provides a simple numpy-based interface, therefore it is simple to use (see examples) while giving you freedom: you can simply call it in any Python workflow.
Streaming APIs: Most SCALib APIs allow for incremenal processing of chunks of data. This enables streaming implementations: with large datasets, no neeed to load everything at once of load multiple times. You don’t even need to store datasets: you can compute on-the-fly.
Available features#
SCALib contains various features for side-channel analysis:
-
Signal-to-noise ratio (
scalib.metrics.SNR
).Uni- and Multi-variate, arbitrary-order T-test estimation (
scalib.metrics.Ttest
andscalib.metrics.MTtest
).
-
Templates in linear subspaces (
scalib.modeling.LDAClassifier
).
-
Generalization of “Divide & Conquer” with Soft Analytical Attacks (
SASCA
).
-
Full key rank estimation.
Getting started#
Install#
See the README. TL;DR:
pip install scalib
Examples#
See our examples and a more complete attack on ASCADv1.
Where is SCALib used ?#
See the papers that use SCAlib.
Complete security evaluations:
CHES 2020 CTF published in TCHES2021.
Attack against ASCAD eprint 2021/817.
About us#
SCALib was initiated by Olivier Bronchain and Gaëtan Cassiers during their PhD at UCLouvain. It is now developed as a project of SIMPLE-Crypto and maintained by Gaëtan Cassiers.