No Divide Just Conquer 1/3

hardware VM RSA FCSC 2025 résolu le

star

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 :


Cette première épreuve consiste simplement à réaliser une génération de clef RSA en assembleur de façon à sastisfaire les tests. On demande de générer les valeurs suivantes :

  • p et q
  • iq tel que q * iq = 1 mod p
  • dp et dq, tels que e * dp = 1 mod (p - 1) et e * dq = 1 mod (q - 1)
  • d tel que e * d = 1 mod phi(N)
  • N = p * q, exactement de la taille en bits donnée en entrée.

La machine virtuelle est initialisée avec un exposant public et une taille en bits.

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

Neige

Instructions

  1. 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
  2. Lancez l'épreuve en exécutant dans le même dossier :
    docker compose up
  3. Dans un second terminal, accédez à l'épreuve via Netcat avec :
    nc localhost 4000
⚠️ Important : Vous devez résoudre l'épreuve en interagissant avec le conteneur Docker via le port réseau exposé. Toute autre interaction n'est pas considérée comme une résolution valide.

Si vous rencontrez des problèmes, veuillez consulter la FAQ.

Flag

Partager ma réussite sur Fediverse, Twitter, Linkedin, Facebook, ou par email.

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.

Solutions

J'ai cherché longtemps et je ne trouve toujours pas le flag !

Vous pouvez voter pour les solutions que vous préférez en utilisant le présent sur leurs pages respectives.

DateAuteur Langue Tags
2025-04-28
n3ige86
🇫🇷
author