This repository provides enhanced plugins for the Chipwhisperer framework, which is a popular platform for hardware security research. The plugins extend the capabilities of Chipwhisperer by providing support for various hardware platforms, capture devices, and analysis algorithms, as shown in the figure below.
Detailed documentation is available in the docs
directory.
Technical details of the plugins are also described in the following paper:
Takuya Kojima, Masaki Morita, Hideki Takase, and Hiroshi Nakamura, "An Open-Source Framework for Efficient Side-Channel Analysis on Cryptographic Implementations", Cryptology ePrint Archive, Report 2025/1130 (a preprint version of the paper, https://eprint.iacr.org/2025/1130)
- SAKURA-X board configured with SASEBO-GIII sample design
- ESP32
- SAKURA-X shell
- CW305-shell
- VexRiscv_SCA
- AES Examples in sca_design_repo based on the both shells
- RTL implementations and HLS implementations
- VISA compatible oscilloscopes
- Keysight Infiniviion 40000 (MSO-X 4101A tested)
- Rigol MSO8000 (MSO8104 tested) You can integrate your own VISA-compatible oscilloscopes by creating a custom class that inherits from the provided base class.
- Many-core/GPU-accelerated Correlation Power Analysis
- OpenMP parallelization for multi-core CPUs
- CUDA for NVIDIA GPUs
- OpenCL for NVIDIA, AMD, Intel and Apple GPUs
- Quad-precision floating-point emulation for double-precision-only CPU (e.g, Apple Silicon CPUs)
- Double-precision floating-point emulation in OpenCL for single-precision-only GPUs (e.g., Apple Silicon GPUs, Intel Arc GPUs)
This repository uses submodules to manage dependencies and related projects. To ensure all submodules are properly initialized and updated, use the following command when cloning:
git clone --recursive https://github.com/hal-lab-u-tokyo/chipwhisperer-enhanced-plugins
If you have already cloned the repository without the --recursive
flag, you can initialize and update the submodules manually by running:
git submodule update --init --recursive
- lib: python library source
- hardware: target hardware related files and submodules
- notebooks: Sample Jupyter Notebooks
- udev-rules: udev rule file for devices related to side-channel attack evaluation
- docs: documentation files
- cpp_libs: C++ library source
- docker: Dockerfile for building docker images and docker-compose files for running the analysis environment
See the Setup Guide of documentation for instructions on how to set up the environment and run the analysis.
We provide several open datasets for benchmarking side-channel attacks. The datasets provided here were generated and evaluated as part of the research presented in our aforementioned paper. These datasets are specifically organized for research on non-profiling side-channel attacks. They feature traces corresponding to a fixed single key and exclude any masking values.
See the datasets directory for more details.
- cw_ml_plugins: A collection of machine learning based attack plugins for ChipWhisperer.
- Masaki Morita
- Youhyun Kim