Impossibile decrittografare la chiave privata anche se conosco la passphrase


9

Penso che il mio problema sia dovuto al fatto che qualcosa non va nella chiave, ma non posso semplicemente decifrarla, per ulteriori indagini, senza analizzarla. Ma non sono sicuro.

Sto cercando di utilizzare il metodo standard:

openssl rsa -in ./id_rsa -out ./id_rsa.decrypted

Penso di conoscere la passphrase, perché quando inserisco una errata ottengo:

Enter pass phrase for ./id_rsa:
unable to load Private Key
140256774473360:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:544:
140256774473360:error:0906A065:PEM routines:PEM_do_header:bad decrypt:pem_lib.c:483

" bad decrypt " è abbastanza chiaro. Ora, quando inserisco la mia passphrase apparentemente buona, torno indietro:

Enter pass phrase for ./id_rsa:
unable to load Private Key
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=RSA
139662870623888:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139662870623888:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:153:
139662870623888:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1314:
139662870623888:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
139662870623888:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:

Inoltre non è riuscito a caricare la chiave, ma ora non è riuscito sul parser asn1, niente sulla passphrase.

Posso in qualche modo ottenere una versione non crittografata della chiave e usare altri strumenti per vedere cosa c'è che non va?

Ho visto alcuni post che qualcosa è cambiato e le possibili cause di chiavi apparentemente buone non riescono ad analizzare, ma tutti hanno funzionato su una versione non crittografata. Ma l'unico metodo che ho visto per decifrare la chiave è quello sopra.


Il nome suggerisce che il file potrebbe essere stato generato da ssh-keygen. Hai provato a usarlo anche ssh-keygenper decifrarlo? ssh-keygen -p -f keyfilecambierà la passphrase su un file di chiavi (sovrascriverà il file, quindi crea prima una copia). Specificando una passphrase vuota come nuova passphrase, decodificherà il file.
Kasperd,

@kasperd Sì, dice passphrase errata. Ogni altro strumento dice che è una frase sbagliata, tranne openssl. Ma dal comportamento di openssl penso che sia buono, non uso le chiavi da un po 'di tempo, ma è una delle mie password "standard", quindi si adatterebbe. Non ssh-keygenusi openssl sotto il cofano?
luk32,

@dawud L'ho provato, ma penso che questo strumento supponga che l'input sia già decodificato, non richiede la passphrase e dice subito "intestazione troppo lunga". Penso che sia il prossimo passo per vedere cosa c'è di sbagliato con la loro chiave, dopo che ottengo la versione decifrata.
luk32,

1
Avrei potuto chiedere una copia del file e la passphrase corretta per riprodurre i sintomi. Ma ho potuto vedere alcuni problemi in questo approccio. Quindi sto solo indovinando qui, e non ho un buon modo per testare se le mie ipotesi funzioneranno se non chiedendoti.
Kasperd,

1
Quando ho testato il comando di decrittazione di openssl su un file deliberatamente danneggiato, ho ricevuto lo stesso errore sia con una password corretta che con una password non valida. Questo mi porta a dubitare della possibilità che questo sia un caso in cui il file crittografato sia stato corrotto nel tempo a causa di errori di bit casuali.
Kasperd,

Risposte:


9

Credo che la tua chiave privata sia stata modificata, poiché sono stato in grado di duplicare lo stesso messaggio di errore modificando un singolo carattere in una chiave protetta da passphrase di esempio che ho appena creato.

Puoi riprodurlo come segue:

  1. Crea una chiave privata protetta da passphrase
  2. Decifrare la chiave privata per assicurarsi che funzioni.
  3. Modifica un singolo carattere all'interno del file contenente la chiave privata crittografata.
  4. Prova a decrittografarlo ora.
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Inserisci la passphrase per id_rsa:
scrivere la chiave RSA
[testuser @ whitehat .ssh] $ ls -al id_rsa *
-rw -------. 1 testuser testuser 951 mar 24 15:01 id_rsa
-rw-rw-r--. 1 testuser testuser 887 mar 24 15:02 id_rsa.decrypted
-rw-r - r--. 1 testuser testuser 236 mar 24 14:52 id_rsa.pub
[testuser @ whitehat .ssh] $ vim id_rsa
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Inserisci la passphrase per id_rsa:
impossibile caricare la chiave privata
139900595279688: errore: 0D07207B: routine di codifica asn1: ASN1_get_object: intestazione troppo lunga: asn1_lib.c: 150:
139900595279688: errore: 0D068066: routine di codifica asn1: ASN1_CHECK_TLEN: intestazione oggetto errato: tasn_dec.c: 1306:
139900595279688: errore: 0D07803A: routine di codifica asn1: ASN1_ITEM_EX_D2I: errore asn1 nidificato: tasn_dec.c: 381: Type = RSA
139900595279688: errore: 04093004: routine rsa: OLD_RSA_PRIV_DECODE: libreria RSA: rsa_ameth.c: 115:
139900595279688: errore: 0D07207B: routine di codifica asn1: ASN1_get_object: intestazione troppo lunga: asn1_lib.c: 150:
139900595279688: errore: 0D068066: routine di codifica asn1: ASN1_CHECK_TLEN: intestazione oggetto errato: tasn_dec.c: 1306:
139900595279688: errore: 0D07803A: routine di codifica asn1: ASN1_ITEM_EX_D2I: errore asn1 nidificato: tasn_dec.c: 381: Type = PKCS8_PRIV_KEY_INFO
139900595279688: errore: 0907B00D: routine PEM: PEM_READ_BIO_PRIVATEKEY: ASN1 lib: pem_pkey.c: 132:
[testuser @ whitehat .ssh] $ 

Informazioni sulla versione del sistema operativo e di openssl

[testuser @ whitehat /] $ lsb_release -a
Versione LSB:: core-4.0-amd64: core-4.0-noarch: graphics-4.0-amd64: graphics-4.0-noarch: printing-4.0-amd64: printing-4.0-noarch
ID distributore: Scientifico
Descrizione: Scientific Linux versione 6.2 (Carbon)
Rilascio: 6.2
Nome in codice: Carbon
[testuser @ whitehat /] $ rpm -q openssl
OpenSSL-1.0.1e-30.el6_6.5.x86_64

1

Sono finito qui perché avevo lo stesso problema, ma il mio era causato dall'interfaccia di esportazione del certificato AWS ACM. (I certificati CA privati ​​possono essere esportati con una passphrase)

Qualcosa sulla particolare passphrase che ho usato ... Non so esattamente cosa abbia causato il problema, ma probabilmente era la lunghezza o i simboli utilizzati.

Il risultato finale è stato che avevo una chiave con una passphrase diversa / abbreviata rispetto a quanto mi aspettassi.

Spero che aiuti qualcuno ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.