Impossible de déchiffrer la clé privée même si je connais la phrase secrète

9

Je pense que mon problème se résume au fait que quelque chose ne va pas avec la clé, mais je ne peux pas simplement la décrypter, pour une enquête plus approfondie, sans l'analyser. Mais je ne suis pas sûr.

J'essaie d'utiliser la méthode standard:

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

Je pense que je connais la phrase secrète, car lorsque j'entre une mauvaise, je reçois:

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 " est assez clair. Maintenant, quand j'entre ma phrase secrète apparemment bonne, je reviens:

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:

Il a également échoué à charger la clé, mais maintenant il a échoué sur l'analyseur asn1, rien à propos de la phrase secrète.

Puis-je obtenir la version non chiffrée de la clé et utiliser d'autres outils pour voir ce qui ne va pas?

J'ai vu certains articles que quelque chose a changé et les causes possibles de clés apparemment bonnes ne parviennent pas à analyser, mais ils ont tous fonctionné sur une version non chiffrée. Mais la seule méthode que j'ai vue pour dercypter la clé est celle ci-dessus.

luk32
la source
Le nom indique que le fichier peut avoir été généré par ssh-keygen. Avez-vous également essayé ssh-keygende le décrypter? ssh-keygen -p -f keyfilechangera la phrase secrète sur un fichier clé (elle écrasera le fichier, donc créez d'abord une copie). En spécifiant une phrase secrète vide comme nouvelle phrase secrète, elle déchiffrera le fichier.
kasperd
@kasperd Oui, il dit une mauvaise phrase secrète. Tous les autres outils disent que c'est une mauvaise phrase, sauf openssl. Mais à partir du comportement openssl, je pense que c'est bon, je n'ai pas utilisé leur clé depuis un certain temps, mais c'est l'un de mes mots de passe "standard", donc ça irait. N'utilise pas ssh-keygenopenssl sous le capot?
luk32
@dawud Je l'ai essayé, mais je pense que cet outil suppose que l'entrée est déjà décodée, ne demande pas de phrase secrète et dit tout de suite "en-tête trop long". Je pense que c'est la prochaine étape pour voir ce qui ne va pas avec leur clé, après avoir obtenu la version décryptée.
luk32
1
J'aurais pu demander une copie du fichier et la phrase de passe correcte afin de reproduire les symptômes. Mais je pouvais voir quelques problèmes dans cette approche. Je ne fais que deviner ici, et je n'ai aucun bon moyen de tester si mes suppositions vont fonctionner autrement qu'en vous le demandant.
kasperd
1
Lors du test de votre commande de déchiffrement openssl sur un fichier délibérément corrompu, j'ai eu la même erreur avec un mot de passe correct et non valide. Cela m'amène à douter de la possibilité qu'il s'agisse d'un cas où le fichier crypté a été corrompu au fil du temps en raison de bitflips aléatoires.
kasperd

Réponses:

9

Je crois que votre clé privée a été modifiée, car j'ai pu dupliquer le même message d'erreur en changeant un seul caractère dans un exemple de clé protégée de phrase secrète que je viens de créer.

Vous pouvez reproduire ceci comme suit -

  1. Créer une clé privée protégée par une phrase secrète
  2. Déchiffrez la clé privée pour vous assurer qu'elle fonctionne.
  3. Modifiez un seul caractère dans le fichier contenant la clé privée chiffrée.
  4. Essayez de le déchiffrer maintenant.
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Entrez la phrase de passe pour id_rsa:
écriture de la clé RSA
[testuser @ whitehat .ssh] $ ls -al id_rsa *
-rw -------. 1 testuser testuser 951 24 mars 15:01 id_rsa
-rw-rw-r--. 1 testuser testuser 887 24 mars 15:02 id_rsa.decrypted
-rw-r - r--. 1 testuser testuser 236 24 mars 14:52 id_rsa.pub
[testuser @ whitehat .ssh] $ vim id_rsa
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Entrez la phrase de passe pour id_rsa:
impossible de charger la clé privée
139900595279688: erreur: 0D07207B: routines de codage asn1: ASN1_get_object: en-tête trop long: asn1_lib.c: 150:
139900595279688: erreur: 0D068066: routines de codage asn1: ASN1_CHECK_TLEN: mauvais en-tête d'objet: tasn_dec.c: 1306:
139900595279688: erreur: 0D07803A: routines de codage asn1: ASN1_ITEM_EX_D2I: erreur asn1 imbriquée: tasn_dec.c: 381: Type = RSA
139900595279688: erreur: 04093004: routines rsa: OLD_RSA_PRIV_DECODE: RSA lib: rsa_ameth.c: 115:
139900595279688: erreur: 0D07207B: routines de codage asn1: ASN1_get_object: en-tête trop long: asn1_lib.c: 150:
139900595279688: erreur: 0D068066: routines de codage asn1: ASN1_CHECK_TLEN: mauvais en-tête d'objet: tasn_dec.c: 1306:
139900595279688: erreur: 0D07803A: routines de codage asn1: ASN1_ITEM_EX_D2I: erreur asn1 imbriquée: tasn_dec.c: 381: Type = PKCS8_PRIV_KEY_INFO
139900595279688: erreur: 0907B00D: routines PEM: PEM_READ_BIO_PRIVATEKEY: ASN1 lib: pem_pkey.c: 132:
[testuser @ whitehat .ssh] $ 

Informations sur la version OS et openssl

[testuser @ whitehat /] $ lsb_release -a
Version 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 du distributeur: Scientific
Description: Scientific Linux version 6.2 (Carbon)
Version: 6.2
Nom de code: Carbon
[testuser @ whitehat /] $ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64
Daniel t.
la source
1

Je me suis retrouvé ici parce que j'avais le même problème, mais le mien était dû à l'interface d'exportation de certificat AWS ACM. (Les certificats d'autorité de certification privés peuvent être exportés avec une phrase secrète)

Quelque chose à propos de la phrase secrète que j'ai utilisée ... Je ne sais pas exactement ce qui a causé le problème, mais c'était probablement la longueur ou les symboles utilisés.

Le résultat final était que j'avais une clé avec un mot de passe différent / raccourci à ce que j'attendais.

J'espère que cela aide quelqu'un ...

confort
la source