Transactions on Cryptographic Hardware and Embedded Systems 2026
Faultless Key Recovery:
Iteration-Skip and Loop-Abort Fault Attacks on LESS
README
Artifact for Faultless Key Recovery: Iteration-Skip and Loop-Abort Fault Attacks on LESS
This is the artifact for the paper "Faultless Key Recovery: Iteration-Skip and Loop-Abort Fault Attacks on LESS", which has been published at TCHES 2026/3.
This artifact consists of three parts for readers to verify our algorithms:
- Simulation code in the "Single Iteration Skip" model with zero-filled array
- Simulation code in the "Loop Abort" model with zero-filled array
- Simulation code in the "Loop Abort" model with statically addressed array
For detailed functional descriptions of the four components, please refer to the README documents in the corresponding four subdirectories.
Prerequisites
To build and run artifact 1, 2 and 3, the following environments are required:
- Bash command line.
- Python 3.7+
- Sagemath 10.X or 9.X
- g++ and clang compilers and GNU make toolchain.
- tqdm is required in sagemath environment: sage -pip install tqdm
We advise that users run our code on Linux, for example, Ubuntu 22.04 or later versions, for best running results (We tested our artifact on Ubuntu 25.10 and 26.04). There may be some conflicting components, and some code is not guaranteed to run successfully on macOS.
Of course, it would be nice to use Docker to ensure a clean and reproducible environment, as well as to avoid dependency conflict with the host system. This is a favourable configuration:
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
bash \
python3 \
python3-pip \
sagemath \
g++ \
clang \
make \
build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
CMD ["/bin/bash"]
Building and Running
For build and execution guidelines of the four components, please check the dedicated README files in each subdirectory.
Code Authorship and Origin
To clarify the authorship and origin of the code in this artifact, please note the following distinctions between our original contributions and the referenced official implementation:
-
Our Original Code:
- All non-C language files (including
.shand.pyscripts) were entirely developed by our team. - Any
.csource files with names starting withmain(e.g.,main_*.c) are our original contributions, added specifically to implement the simulation for our proposed attack.
- All non-C language files (including
-
Referenced Code (LESS Official Implementation):
- Among the C language files, all
.hheader files and the vast majority of the.csource files are taken directly from the official implementation of the LESS scheme.
- Among the C language files, all
-
Modifications to the Official Code:
- We made minor modifications to the original LESS official code by adding supplementary output statements (such as
printfandfprintf). These additions are designed to provide users with detailed runtime debugging information. Furthermore, they allow users to extract the generated keys and signature results, which work in tandem with our attack code to independently verify the correctness of the attack.
- We made minor modifications to the original LESS official code by adding supplementary output statements (such as
Note
Due to space limit of the submission size, we can only provide the three directories for simulation to verify the correctness of our algorithms.
For the attack code on ChipWhisperer platform, see the 4-th directory at https://github.com/huangx607087/L-Artifact-LESS-Attack.