Challenge 2009 - Certificats X.509 à petite clé RSA

Voici 3 clés publiques RSA de petite taille (<300 bits) créées avec la commande OpenSSL. Par exemple, pour la clé de 64 bits, j'ai tapé :

openssl genrsa -out rsa-64.key 64
openssl rsa -in rsa-64.key -pubout -out rsa-64.pub

Par construction, on peut retrouver la clé privée si on arrive à factoriser un des paramètres de la clé publique...

Pour afficher les paramètres d'une clé publique, on peut faire :

openssl rsa -in rsa-64.pub -pubin -noout -text 

Le challenge consiste à retrouver les clés privées correspondantes (en expliquant les opérations nécessaires) avec un petit script shell et un ou 2 programmes/utilitaires bien choisis.

Pour vérifier votre calcul pour la clé privée de 256 bits, un petit message a été chiffré avec la commande suivante :

openssl rsautl -encrypt -inkey rsa-256.pub -pubin -in msg.clear -out msg.crypt 

Vous pouvez le déchiffrer avec la commande suivante :

openssl rsautl -decrypt -inkey rsa-256.key -in msg.crypt -hexdump 

Pour information, voici les résultats obtenus sur mon ordinateur (AMD Turion 64 x 2 core) :

Taille de la clé en bits | Temps de calcul
200 : 6.3 s
210 : 13.26 s
220 : 33.46 s
230 : 1' 20.5 s
240 : 2' 07.6 s
256 : 4' 37.3 s
280 : 39' 21 s

Bonnes recherches...

Clé publique de 64 bits :

-----BEGIN PUBLIC KEY-----
MCQwDQYJKoZIhvcNAQEBBQADEwAwEAIJAKB5tPAu9bSbAgMBAAE=
-----END PUBLIC KEY-----
Clé publique de 128 bits :
-----BEGIN PUBLIC KEY-----
MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAMTbZuoDAGr6/cEWWbDDWC8CAwEAAQ==
-----END PUBLIC KEY-----
Clé publique de 256 bits :
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhALT/msKtvfBqlX1EgWrxGSrnyV8Yh0Hp
CEb0/qA+z0GVAgMBAAE=
-----END PUBLIC KEY-----

Le fichier crypté et les clés publiques sont disponibles dans l'archive ci-jointe (SHA1 : 4a3de4ca2e8de9be508fccedec1acfbb1b419543).

Solution trouvée par Nicolas SERRA, du 12 au 14 septembre 2012.