International Association for Cryptologic Research

International Association
for Cryptologic Research

Transactions on Cryptographic Hardware and Embedded Systems 2026

How Strong is the FO-Calypse, Really? Instantiating Plaintext-Checking Oracles against Masked Software Implementations of ML-KEM


README

How Strong is the FO-Calypse, Really?

This repository contains the side-channel setup and postprocessing code used for the article "How Strong is the FO-Calypse, Really? Instantiating Plaintext-Checking Oracles against Masked Software Implementations of ML-KEM" authored by Brieuc Balon, Gaëtan Cassiers, Thibaud Schoenauen and François-Xavier Standaert.

Getting started

Requirements

To build and run this project, you will need the following hardware and software.

Hardware

Software

Additional dependencies :

Installation

Clone the repository and submodules

git clone https://github.com/uclcrypto/FO_Calypse_software.git --recursive

Repository structure

This repository is organized into three main directories:

  1. measurement_setup contains the code used to acquire the datasets.
  2. post_processing contains the scripts used to post-process the datasets and reproduce the results presented in Section 3 of the article.
  3. modeling contains the code used to build the theoritical models described in Section 4 of the article.

Each directory is self-contained and includes its own README and Makefile, allowing it to be used independently. However, the workflow is sequential:

Implementation evaluated

This work evaluates four different masked Keccak software implementations, referred to by the IMPLEM_CHOICE parameter :

  1. The PINI implementation by Bronchain et al. (ePrint, GitHub) implemented in C.
  2. The PINI implementation by Bronchain et al. (ePrint, GitHub) implemented in C with gadgets written in ASM
  3. The Domain-Oriented Masking (DOM) implementation by Kundu et al. (ePrint, GitHub) written in C.
  4. The Threshold Implementation (TI) by Gaspoz et al. (ePrint, GitHub) coded in ASM.

and that can be masked to certain number of shares NSHARES.

As described in the article:

The different README files illustratre the workflow using IMPLEM_CHOICE=3 and NSHARES=2and a reduced number of traces for demonstration purposes. You are free to modify these parameters as needed. Common configuration parameters can be adjusted in the common.mk file.

License

This project has been developped by the UCLouvain Crypto Group.

This project is released under the MIT license.