Description
Pour rappel, le système RSA est un mécanisme de cryptographie asymétrique qui repose sur le problème de la factorisation de grands entiers.
Pour un exposant pubic e
et une taille t
en bits, on génère deux nombres premiers p
et q
, tels que p - 1
et q - 1
soient premiers avec e
.
Le produit p * q
de t
bits définit le module public N
, puis on calcule d
l’inverse de e
modulo phi(N) = (p - 1) * (q - 1)
.
Afin de calculer un inverse modulaire, l’algorithme d’Euclide étendu est souvent utilisé. Toutefois, il est difficile de protéger cet algorithme contre les attaques physiques.
On se propose alors de réaliser une génération de clef RSA en se passant de l’utilisation de l’algorithme d’Euclide.
Cette épreuve fait partie d’une série de trois que nous conseillons fortement d’aborder dans l’ordre :
Dans cette dernière épreuve, le jeu d’instructions de la machine virtuelle est encore plus restreint. Il va falloir utiliser le coprocesseur de calcul modulaire afin de réaliser la génération de clef RSA. Cette épreuve a pour but de se rapprocher des contraintes d’une machine réelle et d’une recherche de performances. Il faut imaginer le coprocesseur comme un circuit matériel dédié, indépendant du processeur, effectuant les calculs très efficacement.
Fichiers
- docker-compose.yml
-
assembly.py
20.84 KiB – db186ab7dfb5f5e7f4790f1afc951deda349a8a9565a57b6328da2ba89965525 -
crypto_accelerator.py
5.14 KiB – 4c1f070435b6e4eace3fa19e5a4b661800ec8ad61895e378dab5d892aa89e2a7 -
machine.py
19.96 KiB – 048716eab19f32556b08fbea73a07b641f29fa0ff795abd407ead484e3d5041c -
machine_restricted.py
1.30 KiB – c9b1a3e5f9f5b681efeacd41dec3269c29c92d08ed8c7bb54874cc4c894727fa -
no-divide-just-conquer.py
3.20 KiB – aced4cbb271d638c751594917edd7e7ffc8137f3590f6e1063c1cd6b3dde98c5 -
vm.md
27.75 KiB – 0d241df97205c1ea035561b006926949e768e749d997f43f50569e416ee11cdc
Auteur

Instructions
- Pour commencer, téléchargez le fichier docker-compose.yml :
curl https://hackropole.fr/challenges/fcsc2025-hardware-no-divide-just-conquer/docker-compose.public.yml -o docker-compose.yml
- Lancez l'épreuve en exécutant dans le même dossier :
docker compose up
- Dans un second terminal, accédez à l'épreuve via Netcat avec :
nc localhost 4000
Si vous rencontrez des problèmes, veuillez consulter la FAQ.
Flag
Soumettez votre solution
Vous pouvez envoyer votre solution rédigée pour cette épreuve. La FAQ contient la marche à suivre.
Vous avez besoin d'être identifié(e) pour soumettre une solution.