Der private Schlüssel kann nicht entschlüsselt werden, obwohl ich die Passphrase kenne

9

Ich denke, mein Problem besteht darin, dass etwas mit dem Schlüssel nicht stimmt, aber ich kann ihn nicht einfach zur weiteren Untersuchung entschlüsseln, ohne ihn zu analysieren. Aber ich bin mir nicht sicher.

Ich versuche, die Standardmethode zu verwenden:

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

Ich glaube, ich kenne die Passphrase, denn wenn ich eine falsche eingebe, bekomme ich:

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 " ist ziemlich klar. Wenn ich jetzt meine scheinbar gute Passphrase eingebe, komme ich zurück:

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:

Es konnte auch kein Schlüssel geladen werden, aber jetzt schlug es auf dem asn1-Parser fehl, nichts über die Passphrase.

Kann ich irgendwie eine unverschlüsselte Version des Schlüssels bekommen und andere Tools verwenden, um zu sehen, was falsch ist?

Ich habe einige Posts gesehen, in denen sich etwas geändert hat und mögliche Ursachen für scheinbar gute Schlüssel nicht analysiert werden konnten, aber alle haben an einer unverschlüsselten Version gearbeitet. Aber die einzige Methode, die ich gesehen habe, um den Schlüssel zu dercyptieren, ist die obige.

luk32
quelle
Der Name weist darauf hin, dass die Datei möglicherweise von generiert wurde ssh-keygen. Haben Sie versucht, es auch ssh-keygenzu entschlüsseln? ssh-keygen -p -f keyfileändert die Passphrase in einer Schlüsseldatei (die Datei wird überschrieben, erstellen Sie also zuerst eine Kopie). Durch Angabe einer leeren Passphrase als neue Passphrase wird die Datei entschlüsselt.
Kasperd
@kasperd Ja, es heißt schlechte Passphrase. Jedes andere Tool sagt, es sei eine Badphrase, außer openssl. Aber aufgrund des OpenSL-Verhaltens denke ich, dass es gut ist. Ich habe den Schlüssel seit einiger Zeit nicht mehr verwendet, aber es ist eines meiner "Standard" -Kennwörter, also würde es passen. ssh-keygenVerwendet nicht openssl unter der Haube?
luk32
@dawud Ich habe es versucht, aber ich denke, dieses Tool geht davon aus, dass die Eingabe bereits dekodiert ist, fragt nicht nach einer Passphrase und sagt sofort "Header zu lang". Ich denke, es ist der nächste Schritt, um zu sehen, was mit dem Schlüssel nicht stimmt, nachdem ich die entschlüsselte Version erhalten habe.
luk32
1
Ich hätte nach einer Kopie der Datei und der richtigen Passphrase fragen können, um die Symptome zu reproduzieren. Aber ich konnte einige Probleme in diesem Ansatz sehen. Ich rate hier nur, und ich habe keine gute Möglichkeit zu testen, ob meine Vermutungen funktionieren werden, außer indem ich Sie frage.
Kasperd
1
Beim Testen Ihres Befehls openssl decryption für eine absichtlich beschädigte Datei wurde der gleiche Fehler mit einem korrekten und einem ungültigen Kennwort angezeigt. Dies führte mich zu Zweifeln an der Möglichkeit, dass die verschlüsselte Datei im Laufe der Zeit durch zufällige Bitflips beschädigt wurde.
Kasperd

Antworten:

9

Ich glaube, Ihr privater Schlüssel wurde geändert, da ich dieselbe Fehlermeldung duplizieren konnte, indem ich ein einzelnes Zeichen in einem soeben erstellten Beispielschlüssel mit Passphrasen-Schutz änderte.

Sie können dies wie folgt reproduzieren:

  1. Erstellen Sie einen passphrasengeschützten privaten Schlüssel
  2. Entschlüsseln Sie den privaten Schlüssel, um sicherzustellen, dass er funktioniert.
  3. Ändern Sie ein einzelnes Zeichen in der Datei, die den verschlüsselten privaten Schlüssel enthält.
  4. Versuchen Sie es jetzt zu entschlüsseln.
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Geben Sie die Passphrase für id_rsa ein:
RSA-Schlüssel schreiben
[testuser @ whitehat .ssh] $ ls -al id_rsa *
-rw -------. 1 Testbenutzer Testbenutzer 951 24. März 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
Geben Sie die Passphrase für id_rsa ein:
Privater Schlüssel kann nicht geladen werden
139900595279688: Fehler: 0D07207B: asn1-Codierungsroutinen: ASN1_get_object: Header zu lang: asn1_lib.c: 150:
139900595279688: Fehler: 0D068066: asn1-Codierungsroutinen: ASN1_CHECK_TLEN: fehlerhafter Objektheader: tasn_dec.c: 1306:
139900595279688: Fehler: 0D07803A: asn1-Codierungsroutinen: ASN1_ITEM_EX_D2I: verschachtelter asn1-Fehler: tasn_dec.c: 381: Typ = RSA
139900595279688: Fehler: 04093004: rsa-Routinen: OLD_RSA_PRIV_DECODE: RSA lib: rsa_ameth.c: 115:
139900595279688: Fehler: 0D07207B: asn1-Codierungsroutinen: ASN1_get_object: Header zu lang: asn1_lib.c: 150:
139900595279688: Fehler: 0D068066: asn1-Codierungsroutinen: ASN1_CHECK_TLEN: fehlerhafter Objektheader: tasn_dec.c: 1306:
139900595279688: Fehler: 0D07803A: asn1-Codierungsroutinen: ASN1_ITEM_EX_D2I: verschachtelter asn1-Fehler: tasn_dec.c: 381: Typ = PKCS8_PRIV_KEY_INFO
139900595279688: Fehler: 0907B00D: PEM-Routinen: PEM_READ_BIO_PRIVATEKEY: ASN1 lib: pem_pkey.c: 132:
[testuser @ whitehat .ssh] $ 

Betriebssystem und openssl Versionsinfo

[testuser @ whitehat /] $ lsb_release -a
LSB-Version :: core-4.0-amd64: core-4.0-noarch: Grafik-4.0-amd64: Grafik-4.0-noarch: Druck-4.0-amd64: Druck-4.0-noarch
Händler-ID: Wissenschaftlich
Beschreibung: Scientific Linux Release 6.2 (Carbon)
Release: 6.2
Codename: Kohlenstoff
[testuser @ whitehat /] $ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64
Daniel t.
quelle
1

Ich bin hier gelandet, weil ich das gleiche Problem hatte, aber mein Problem wurde durch die Exportschnittstelle für AWS ACM-Zertifikate verursacht. (Private CA-Zertifikate können mit einer Passphrase exportiert werden.)

Etwas über die bestimmte Passphrase, die ich verwendet habe ... Ich weiß nicht genau, was das Problem verursacht hat, aber es war wahrscheinlich die Länge oder die verwendeten Symbole.

Das Endergebnis war, dass ich einen Schlüssel mit einer anderen / verkürzten Passphrase hatte, als ich erwartet hatte.

Hoffe das hilft jemandem ...

comfytoday
quelle