パスフレーズを知っていても秘密鍵を復号化できません


9

私の問題は、キーに問題があるという事実に起因していると思いますが、さらに分析するために、解析せずに単に解読することはできません。しかし、私にはわかりません。

私は標準的な方法を使用しようとしています:

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

パスフレーズは知っていると思います。間違ったものを入力すると、次のようになります。

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

悪い解読」はかなり明確です。ここで、一見良いパスフレーズを入力すると、次のようになります。

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:

また、キーの読み込みに失敗しましたが、asn1パーサーでは失敗しました。パスフレーズは関係ありません。

どういうわけか、暗号化されていないバージョンのキーを取得し、他のツールを使用して何が問題になっているのかを確認できますか?

何かが変更され、一見良いキーの考えられる原因が解析に失敗するという投稿をいくつか見ましたが、それらはすべて暗号化されていないバージョンで動作しました。しかし、私が鍵をデリシープトするのを見た彼らの唯一の方法は上記のものです。


この名前は、ファイルがによって生成された可能性があることを示していますssh-keygen。を使用ssh-keygenしてそれを復号化しようとしましたか?ssh-keygen -p -f keyfileキーファイルのパスフレーズを変更します(ファイルを上書きするため、最初にコピーを作成します)。新しいパスフレーズとして空のパスフレーズを指定すると、ファイルが復号化されます。
kasperd 2015年

@kasperdはい、それは悪いパスフレーズを言います。opensslを除いて、他のすべてのツールはそれが悪いフレーズだと言っています。しかし、opensslの振る舞いから、私はそれを良いものだと思います。私はそれらのキーをしばらく使用していませんが、それは私の「標準」パスワードの1つなので、適合します。ssh-keygenフードの下でopensslを使用しませんか?
luk32 2015年

@dawud試してみましたが、このツールは入力がすでにデコードされていることを前提としており、パスフレーズを要求せず、すぐに「ヘッダーが長すぎます」と言います。暗号化されたバージョンを取得した、それらのキーの何が問題なのかを確認する次のステップだと思います。
luk32 2015年

1
症状を再現するために、ファイルのコピーと正しいパスフレーズを要求することができます。しかし、私はそのアプローチにいくつかの問題を見ることができました。だから私はここで推測しているだけであり、あなたの質問以外に私の推測が機能するかどうかをテストする良い方法はありません。
kasperd 2015年

1
意図的に破損したファイルでopenssl復号化コマンドをテストすると、正しいパスワードと無効なパスワードの両方で同じエラーが発生しました。これにより、ランダムなビットフリップが原因で、暗号化されたファイルが時間の経過とともに破損した可能性を疑うようになりました。
kasperd 2015年

回答:


9

作成したサンプルのパスフレーズ保護キーの1文字を変更することで同じエラーメッセージを複製できたため、秘密キーが変更されたと思います。

これは次のように再現できます-

  1. パスフレーズで保護された秘密鍵を作成する
  2. 秘密鍵を復号化して、機能することを確認します。
  3. 暗号化された秘密鍵を含むファイル内の1文字を変更します。
  4. 今それを解読してみてください。
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
id_rsaのパスフレーズを入力してください:
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
id_rsaのパスフレーズを入力してください:
秘密鍵を読み込めません
139900595279688:error:0D07207B:asn1エンコードルーチン:ASN1_get_object:header too long:asn1_lib.c:150:
139900595279688:error:0D068066:asn1エンコードルーチン:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
139900595279688:error:0D07803A:asn1エンコードルーチン:ASN1_ITEM_EX_D2I:nested asn1エラー:tasn_dec.c:381:Type = RSA
139900595279688:error:04093004:rsaルーチン:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
139900595279688:error:0D07207B:asn1エンコードルーチン:ASN1_get_object:header too long:asn1_lib.c:150:
139900595279688:error:0D068066:asn1エンコードルーチン:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
139900595279688:error:0D07803A:asn1エンコードルーチン:ASN1_ITEM_EX_D2I:nested asn1エラー:tasn_dec.c:381:Type = PKCS8_PRIV_KEY_INFO
139900595279688:error:0907B00D:PEMルーチン:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:
[testuser @ whitehat .ssh] $ 

OSとopensslのバージョン情報

[testuser @ whitehat /] $ lsb_release -a
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:科学
説明:Scientific Linux release 6.2(Carbon)
リリース:6.2
コードネーム:カーボン
[testuser @ whitehat /] $ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64

1

私は同じ問題を抱えていたのでここに行きましたが、私の原因はAWS ACM証明書のエクスポートインターフェイスが原因でした。(プライベートCA証明書はパスフレーズでエクスポートできます)

私が使用した特定のパスフレーズについての何か...問題の原因は正確にはわかりませんが、長さまたは使用された記号である可能性があります。

最終結果は、私が期待したものとは異なる/短縮されたパスフレーズを持つキーを持っていたということです。

それが誰かを助けることを願っています...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.