simple-crypto / SCALib

Side-Channel Analysis Library
GNU Affero General Public License v3.0
74 stars 19 forks source link

====== SCALib

.. image:: https://badge.fury.io/py/scalib.svg :target: https://pypi.org/project/scalib/ :alt: PyPI .. image:: https://readthedocs.org/projects/scalib/badge/?version=stable :target: https://scalib.readthedocs.io/en/stable/ :alt: Documentation Status .. image:: https://img.shields.io/matrix/scalib:matrix.org :target: https://matrix.to/#/#scalib:matrix.org :alt: Matrix room .. image:: https://joss.theoj.org/papers/10.21105/joss.05196/status.svg :target: https://doi.org/10.21105/joss.05196 :alt: JOSS paper

The Side-Channel Analysis Library (SCALib) is a Python library that contains state-of-the-art tools for side-channel security evaluation.

SCALib focuses on

SCALib should be useful for any side-channel practitioner who wants to evaluate, but not necessarily attack, protected or non-protected implementations. See the documentation_ for the list of implemented tools.

.. _documentation: https://scalib.readthedocs.io/en/stable

Install

SCALib is on PyPi! Simple install:

.. code-block::

pip install scalib

We provide pre-built wheels for any recent python on Linux and Windows (x86). Be sure to use a recent pip. For other plateforms, this will build SCALib (see below for dependencies).

Local build

To get best performance, you want to build locally (this will optimize SCALib for your CPU).

Depdendencies:

To install from source:

.. code-block::

git clone https://github.com/simple-crypto/SCALib
cd SCALib
pip install .

See CONTRIBUTING.rst <CONTRIBUTING.rst>__ for advanced build configuration.

Usage

See API documentation <https://scalib.readthedocs.io/en/stable/#available-features>, example <https://github.com/simple-crypto/scalib/tree/main/examples> and real-world usages <https://scalib.readthedocs.io/en/stable/#concrete-evaluations>_.

Alternatives

If your needs are not covered by SCALib, you might be more lucky with lascar <https://github.com/Ledger-Donjon/lascar> or scared <https://gitlab.com/eshard/scared>.

Please also let us know your needs by opening a feature request <https://github.com/simple-crypto/SCALib/issues/new?assignees=&labels=&template=feature_request.md&title=>_.

Versioning policy

SCALib uses semantic versioning <https://semver.org/>_, see the `CHANGELOG

`_ for breaking changes and novelties. 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 (@cassiersg). Contributions and Issues ======================== Contributions welcome ! Please file a **bug report** for any issue you encounter (even bad documentation is a bug !), and let us know your **suggestions** (open a `github issue `_, `chat `_ and `email `_ work too). We also welcome code contributions, see `CONTRIBUTING.rst `_. You can also come discuss on `matrix `_ (announcements, questions, community support, open discussion, etc.). All code contributions are subject to the Contributor License Agreement (`CLA `_) of SIMPLE-Crypto, which ensures a thriving future for open-source hardware security. Citation ======== If you use SCALib in your research, please cite our `software paper `_: .. code-block:: Cassiers et al., (2023). SCALib: A Side-Channel Analysis Library. Journal of Open Source Software, 8(86), 5196, https://doi.org/10.21105/joss.05196 Bibtex: .. code-block:: @article{scalib, doi = {10.21105/joss.05196}, url = {https://doi.org/10.21105/joss.05196}, year = {2023}, publisher = {The Open Journal}, volume = {8}, number = {86}, pages = {5196}, author = {Gaëtan Cassiers and Olivier Bronchain}, title = {SCALib: A Side-Channel Analysis Library}, journal = {Journal of Open Source Software} } License ======= This project is licensed under GNU AFFERO GENERAL PUBLIC LICENSE, Version 3. See `COPYRIGHT `_ and `COPYING `_ for more information. For licensing-related matters, please contact info@simple-crypto.dev. Acknowledgements ================ This work has been funded in part by the Belgian Fund for Scientific Research (F.R.S.-FNRS) through the Equipment Project SCALAB and individual researchers' grants, by the European Union (EU) and the Walloon Region through the FEDER project USERMedia (convention number 501907-379156), and by the European Union (EU) through the ERC project 724725 (acronym SWORD) and the ERC project 101096871 (acronym BRIDGE).