web-dev-qa-db-fra.com

Comment obtenir la longueur de bit RSA avec la clé pubkey et openssl?

J'ai une clé publique générée avec ssh-keygen et je me demande simplement comment obtenir des informations sur la longueur de clé avec openssl?

87
Evan Carroll

Avec openssl, si votre clé privée est dans le fichier id_rsa, puis:

openssl rsa -text -noout -in id_rsa

affichera le contenu de la clé privée et la première ligne de sortie contient la taille du module en bits. Si la clé est protégée par une phrase secrète, vous devrez bien sûr saisir cette phrase secrète.

Si vous ne disposez que de la clé publique, OpenSSL n'aidera pas directement. @Enigma affiche la ligne de commande appropriée (avec ssh-keygen -lf id_rsa.pub). Vous pouvez toujours le faire avec OpenSSL de la manière suivante:

Ouvrez le fichier de clé publique avec un éditeur de texte. Vous trouverez quelque chose comme ceci:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZCrobfFTvXUTFDbWT
ch4IGk5mk0CelB5RKiCvDeK4yhDLcj8QNumaReuwNKGjAQwdENsIT1UjOdVvZOX2d41/p6J
gOCD1ujjwuHWBzzQvDA5rXdQgsdsrJIfNuYr/+kIIANkGPPIheb2Ar2ccIWh9giwNHDjkXT
JXTVQ5Whc0mGBU/EGdlCD6poG4EzCc0N9zk/DNSMIIZUInySaHhn2f7kmfoh5LRw7RF3c2O
5tCWIptu8u8ydIxz9q5zHxxKS+c7q4nkl9V/tVjZx8sneNZB+O79X1teq7LawiYJyLulUMi
OEoiL1YH1SE1U93bUcOWvpAQ5 [email protected]

Avec votre souris, sélectionnez les premiers caractères de la goutte du milieu ( après le ssh-rsa); c'est Base64 et OpenSSL peut décoder cela:

echo "AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZC" | openssl base64 -d | hd

OpenSSL est difficile, il exigera que vous ne saisissiez pas plus de 76 caractères sur une seule ligne, et le nombre de caractères doit être un multiple de 4. Le la ligne ci-dessus imprimera ceci:

00000000  00 00 00 07 73 73 68 2d  72 73 61 00 00 00 03 01  |....ssh-rsa.....|
00000010  00 01 00 00 01 01 00 c3  a3 6c 64 a3 df 69 89 e8  |.........ld..i..|
00000020  04 0e 06 42                                       |...B|

Cela se lit comme tel:

00 00 00 07             The length in bytes of the next field
73 73 68 2d 72 73 61    The key type (ASCII encoding of "ssh-rsa")
00 00 00 03             The length in bytes of the public exponent
01 00 01                The public exponent (usually 65537, as here)
00 00 01 01             The length in bytes of the modulus (here, 257)
00 c3 a3...             The modulus

Ainsi, la clé a le type RSA, et son module a une longueur de 257 octets , sauf que le premier octet a la valeur "00", donc la longueur réelle est 256 octets (ce premier octet a été ajouté pour que la valeur soit considérée comme positive, car les règles de codage internes appellent des entiers signés , le premier bit définissant le signe) . 256 octets soit 2048 bits.

95
Tom Leek
ssh-keygen -lf /etc/ssh/rsa_key.pub 
2048 d1:cb:15:df:5d:44:...

2048 est la longueur clé

106
enigma