Un truc qui cloche

hardware attaque par faute FCSC 2023 résolu le

star

Description

Nous avons retrouvé un message qui a été chiffré par un vieux serveur avec RSA-CRT. Malheureusement, le serveur est en très mauvais état, il n’est possible de réaliser qu’une unique signature (ou un déchiffrement, c’est la même opération) mais cette opération se passe mal. Nous pensons qu’une erreur est introduite lors du calcul de l’exponentiation modulaire d’un des résidus modulaires.

Nous comptons sur vous pour récupérer la clé permettant de déchiffrer le message.

Le serveur réalise le chiffrement de la manière suivante (en Python) :

m = int.from_bytes(b"Test message", "big")
c = pow(m, e, n)

Le serveur réalise le déchiffrement (ou la signature) de la manière suivante :

n = p * q
dp = d % (p - 1)
dq = d % (q - 1)
cp = pow(m, dp, p)
cq = pow(m, dq, q)
_, a, b = egcd(p, q) # Extended GCD
m = (a * p * cq + b * q * cp) % n

Pour convertir le message en suite d’octets :

m = m.to_bytes((m.bit_length() + 7) // 8, "big")

Auteur

Ker

Instructions

  1. Pour commencer, téléchargez le fichier docker-compose.yml :
    curl https://hackropole.fr/challenges/fcsc2023-hardware-un-truc-qui-cloche/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

Il n'y a pas encore de solutions pour cette épreuve, mais vous pouvez soumettre la vôtre après avoir trouvé le flag.