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).