GreHack 2015 – Write-up CRYPTO 250 John & Bill

Published on: Nov 26 2015 by Loïc

L’épreuve :

Les fichiers de l’épreuve se trouvent sur le site de GreHack. On y trouve 2 clefs publiques, respectivement celles de John et de Bill, ainsi qu’un même message chiffré avec les 2 clefs (message1 et message2).

L’attaque :

En analysant les clefs, on remarque 2 choses étonnantes pour un chiffrement RSA :

  • Le même module n est utilisé pour les 2 clefs ;
  • L’exposant public e est différent, on a e_john = 3 et e_bill = 65537.

Le fait que gcd(e_john, e_bill)=1 implique qu’il est possible pour un attaquant de retrouver le message comme démontré ici :

Attaque RSA - module commun

 

En pratique :

On utilise sage.

Etape 1 : on initialise les variables n, eBill et eJohn avec les données des clefs publiques. On calcule ensuite s1 et s2 tels que eBill*s1 + eJohn*s2 =1 à l’aide de la fonction xgcd(). On obtient s1=-1 et s2=21846.

Initialisation des params RSA

Etape 2 : on initialise les variables chiffre1 et chiffre2 avec les messages chiffrés fournis dans l’archive de l’epreuve. On retrouve le message clair M à l’aide du produit des puissances modulaires des chiffrés, comme expliqué au dessus. On affiche le résultat à l’aide de la fonction int2Text.

Resolution

 

Filed under: Challenge Crypto, Crypto, GreHack, RSA, Sage

Leave a Reply

*

*