Author: Alessandro Conti - AlessandroConti11
License: MIT license.
Tags: #Bernstein, #c++, #CAT, #Chou, #code-based_cryptography, #computer_engineering, #cpp, #computer_science_and_engineering, #CryptAttackTester, #cryptography, #Daniel_J_Bernstein, #DJB, #information_set_decoding, #ISD, #parallelization, #polimi, #post-quantum_cryptography, #PQC, #sorting_network, #thesis, #Tung_Chou.
Politecnico di Milano.
Academic Year: 2025/2026.
089254 - Prova Finale (INF) - professor Barenghi Alessandro, Pelosi Gerardo.
This repository contains my thesis work.
The aim was to integrate parallelization for the existing ISD algorithms into the CryptAttackTester framework.
The steps below refer to a Unix environment, for other environments the commands may change.
- install gcc
sudo apt-get install gcc
- install useful packages
apt install build-essential libgmp-dev libmpfi-dev python3-matplotlib libssl-dev
- compile using the MakeFile
make -j$(nproc) - run the executable in the binaries folder
./EXECUTABLE
.
├── Executive_Summary # The folder containing all the source code used to write the executive summary
│ ├── executive_summary.pdf # The pdf of my executive summary
├── Thesis # The folder containing all the source code used to write the thesis
│ ├── Thesis.pdf # The pdf of my thesis (C++ redesign of attack algorithms to code-based cryptography)
├── Thesis_Slide # The folder containing all the source code used to write the thesis presentation slides
│ ├── thesis_slide.pdf # The pdf of my thesis presentation slides
├── aes128 # The folder containing all the code relating to the attack to find the encryption key in AES-128
├── binaries # The folder containing all binaries
├── documents # The folder containing all documents used for the thesis
├── experimental_trials # The folder containing all the parameters used for the experimental campaign and the results obtained
├── slide # The folder containing all the documents used during the various meetings regarding the thesis
├── uniformmatrix # The folder containing all the code relating to the attack against the Syndrome Decoding Problem
├── utils # The folder containing all the code relating the utility functions used in the framework
├── Makefile # The Makefile used to compile the entire project
├── attack.h # The code containing the generic infrastructure and the abstract interface for recording and executing cryptographic attacks within the project
├── attack_list.cpp # The list of all cryptographic attacks that can be used in the project
├── attack_scan.cpp # The orchestrator of the entire project (the main file)
├── problem.h # The code containing the abstract interface for describing the cryptographic problems in the project
└── problem_list.cpp # The list of all cryptographic problems that can be used in the project
- If you find a security vulnerability, do NOT open an issue. Email Alessandro Conti instead.
- If you find a bug or error or want to add some other function that is not implemented yet
- FORK the repo
- CLONE the project to your own machine
- COMMIT to your own branch
- PUSH your work back up to your fork
- submit a PULL REQUEST so that I can review your changes
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
Each new function must be documented using the following style:
- Short function description: A brief description explaining what the function does.
- @warning: A section listing all the assumptions made by the function, such as the preconditions that the parameters must fulfil.
- Blank line: Add a blank line to separate the documentation sections.
- @details: A detailed section describing how the function works, explaining the algorithms and logic used.
- Blank line: Add a blank line to separate the documentation sections.
- @param: A list of the parameters required by the function, each accompanied by a brief description of its role and type.
- @return: A description of what the function returns, including the data type.
In general, any additional comments that might improve understanding of the code are welcome. 😃