Come ottengo la lunghezza del bit RSA con il pubkey e openssl?

73

Ho una chiave pubblica generata con ssh-keygen e mi chiedo come ottenere informazioni sulla lunghezza della chiave con openssl?

    
posta Evan Carroll 11.09.2013 - 19:12
fonte

2 risposte

86

Con openssl , se la tua chiave privata è nel file id_rsa , allora:

openssl rsa -text -noout -in id_rsa

stamperà il contenuto della chiave privata e la prima riga di output contiene la dimensione del modulo in bit. Se la chiave è protetta da una passphrase, dovrai digitare quella passphrase, naturalmente.

Se hai solo la chiave pubblica, allora OpenSSL non ti aiuterà direttamente. @Enigma mostra la riga di comando corretta (con ssh-keygen -lf id_rsa.pub ). Puoi ancora farlo con OpenSSL nel seguente modo:

Apri il file della chiave pubblica con un editor di testo. Troverete qualcosa di simile a questo:

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

Con il mouse, seleziona i primi caratteri del blob medio ( dopo ssh-rsa ); questo è Base64 e OpenSSL può decodificare che:

echo "AAAAB3NzaC1yc2EAAAADAQABAAABAQDDo2xko99piegEDgZC" | openssl base64 -d | hd

OpenSSL è pignolo, egli richiede che tu non inserisca più di 76 caratteri come una riga, e il numero di caratteri deve essere un multiplo di 4. La riga sopra stamperà questo:

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|

Si legge così:

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

Quindi la chiave ha tipo RSA, e il suo modulo ha lunghezza 257 byte , tranne che il primo byte ha valore "00", quindi la lunghezza reale è di 256 byte (quel primo byte è stato aggiunto così che il valore è considerato positivo, perché le regole di codifica interne richiedono gli firmati interi, il primo bit che definisce il segno). 256 byte è 2048 bit.

    
risposta data 11.09.2013 - 19:38
fonte
85
ssh-keygen -lf /etc/ssh/rsa_key.pub 
2048 d1:cb:15:df:5d:44:...

2048 è la lunghezza chiave

    
risposta data 11.09.2013 - 19:15
fonte

Leggi altre domande sui tag