¿Cómo obtengo la longitud de bits RSA con la clave de pub y openssl?

70

Tengo una clave pública generada con ssh-keygen y me pregunto cómo obtengo información sobre la longitud de la clave con openssl?

    
pregunta Evan Carroll 11.09.2013 - 19:12
fuente

2 respuestas

86

Con openssl , si su clave privada está en el archivo id_rsa , entonces:

openssl rsa -text -noout -in id_rsa

imprimirá el contenido de la clave privada, y la primera línea de salida contiene el tamaño del módulo en bits. Si la clave está protegida por una frase de contraseña, tendrá que escribirla, por supuesto.

Si solo tiene la clave pública, OpenSSL no le ayudará directamente. @Enigma muestra la línea de comando adecuada (con ssh-keygen -lf id_rsa.pub ). Aún puedes hacer eso con OpenSSL de la siguiente manera:

Abra el archivo de clave pública con un editor de texto. Encontrarás algo como esto:

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

Con su mouse, seleccione los primeros caracteres del blob central ( después de el ssh-rsa ); esto es Base64 y OpenSSL puede descodificar eso:

echo "AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZC" | openssl base64 -d | hd

OpenSSL es delicado, él requerirá que ingrese no más de 76 caracteres en una línea, y el número de caracteres debe ser un múltiplo de 4. La línea de arriba imprimirá esto:

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|

Esto se lee como tal:

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

Por lo tanto, la clave tiene el tipo RSA y su módulo tiene una longitud de 257 bytes , excepto que el primer byte tiene un valor "00", por lo que la longitud real es de 256 bytes (ese primer byte se agregó así que que el valor se considera positivo, porque las reglas de codificación internas exigen enteros firmados , el primer bit que define el signo). 256 bytes son 2048 bits.

    
respondido por el Tom Leek 11.09.2013 - 19:38
fuente
82
ssh-keygen -lf /etc/ssh/rsa_key.pub 
2048 d1:cb:15:df:5d:44:...

2048 es la longitud clave

    
respondido por el enigma 11.09.2013 - 19:15
fuente

Lea otras preguntas en las etiquetas