Tidak dapat mendekripsi kunci pribadi walaupun saya tahu frasa sandi

9

Saya pikir masalah saya datang ke fakta ada yang salah dengan kunci tetapi saya tidak bisa hanya mendekripsi, untuk penyelidikan lebih lanjut, tanpa menguraikannya. Tapi saya tidak yakin.

Saya mencoba menggunakan metode standar:

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

Saya rasa saya tahu kata sandi, karena ketika saya memasukkan kata sandi yang salah, saya dapat:

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

" dekripsi buruk " cukup jelas. Sekarang, ketika saya memasukkan frasa sandi saya yang tampaknya baik, saya kembali:

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:

Itu juga gagal memuat kunci, tapi sekarang gagal pada asn1 parser, tidak ada tentang passphrase.

Bisakah saya mendapatkan versi kunci yang tidak terenkripsi dan menggunakan alat lain untuk melihat apa yang salah?

Saya telah melihat beberapa posting bahwa ada sesuatu yang berubah dan kemungkinan penyebab kunci yang tampaknya baik gagal diurai, tetapi mereka semua bekerja pada versi yang tidak dienkripsi. Tapi mereka hanya metode yang saya lihat kunci dercypt adalah yang di atas.

Luk32
sumber
Nama mengisyaratkan bahwa file tersebut mungkin dihasilkan oleh ssh-keygen. Sudahkah Anda mencoba menggunakan ssh-keygenuntuk mendekripsi juga? ssh-keygen -p -f keyfileakan mengubah frasa sandi pada keyfile (itu akan menimpa file, jadi buat salinan terlebih dahulu). Dengan menetapkan frasa sandi kosong sebagai frasa sandi baru, frasa sandi akan didekripsi.
kasperd
@kasperd Ya, katanya kata sandi buruk. Setiap alat lain mengatakan itu adalah frasa, kecuali openssl. Tapi dari perilaku openssl saya pikir itu bagus, saya belum pernah menggunakan kunci mereka untuk beberapa waktu, tapi itu salah satu kata sandi "standar" saya, jadi itu akan cocok. Tidak ssh-keygenmenggunakan openssl di bawah tenda?
Luk32
@ Dawud saya mencobanya, tapi saya pikir alat ini mengasumsikan input sudah diterjemahkan, tidak meminta kata sandi dan mengatakan "header terlalu lama" segera. Saya pikir ini adalah langkah selanjutnya untuk melihat apa yang salah dengan kunci mereka, setelah saya mendapatkan versi yang didekripsi.
Luk32
1
Saya bisa meminta salinan file dan frasa sandi yang benar untuk mereproduksi gejala. Tapi saya bisa melihat beberapa masalah dalam pendekatan itu. Jadi saya hanya menebak-nebak di sini, dan saya tidak punya cara yang baik untuk menguji apakah tebakan saya akan berhasil selain dengan bertanya kepada Anda.
kasperd
1
Saat menguji perintah dekripsi openssl Anda pada file yang sengaja rusak, saya mendapatkan kesalahan yang sama dengan kata sandi yang benar dan tidak valid. Ini membuat saya meragukan kemungkinan ini menjadi kasus file terenkripsi telah rusak dari waktu ke waktu karena bitflip acak.
kasperd

Jawaban:

9

Saya percaya kunci pribadi Anda telah dimodifikasi, karena saya dapat menduplikasi pesan kesalahan yang sama dengan mengubah satu karakter dalam contoh kunci frase terlindungi kunci yang saya buat.

Anda dapat mereproduksi ini sebagai berikut -

  1. Buat kunci pribadi dilindungi frasa sandi
  2. Dekripsi kunci pribadi untuk memastikan itu berfungsi.
  3. Ubah satu karakter di dalam file yang berisi kunci pribadi terenkripsi.
  4. Coba dekripsi sekarang.
[testuser @ whitehat .ssh] $ openssl rsa -in id_rsa -out id_rsa.decrypted
Masukkan frasa sandi untuk id_rsa:
menulis kunci RSA
[testuser @ whitehat .ssh] $ ls -al id_rsa *
-rw -------. 1 testuser testuser 951 24 Mar 15:01 id_rsa
-rw-rw-r--. 1 testuser testuser 887 24 Mar 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
Masukkan frasa sandi untuk id_rsa:
tidak dapat memuat Kunci Pribadi
139900595279688: error: 0D07207B: rutin encoding asn1: ASN1_get_object: header terlalu panjang: asn1_lib.c: 150:
139900595279688: error: 0D068066: rutin encoding asn1: ASN1_CHECK_TLEN: header objek buruk: tasn_dec.c: 1306:
139900595279688: kesalahan: 0D07803A: rutin pengkodean asn1: ASN1_ITEM_EX_D2I: nested asn1 error: tasn_dec.c: 381: Type = RSA
139900595279688: error: 04093004: rutinitas rsa: OLD_RSA_PRIV_DECODE: RSA lib: rsa_ameth.c: 115:
139900595279688: error: 0D07207B: rutin encoding asn1: ASN1_get_object: header terlalu panjang: asn1_lib.c: 150:
139900595279688: error: 0D068066: rutin encoding asn1: ASN1_CHECK_TLEN: header objek buruk: tasn_dec.c: 1306:
139900595279688: kesalahan: 0D07803A: rutin pengkodean asn1: ASN1_ITEM_EX_D2I: nested asn1 error: tasn_dec.c: 381: Type = PKCS8_PRIV_KEY_INFO
139900595279688: kesalahan: 0907B00D: rutinitas PEM: PEM_READ_BIO_PRIVATEKEY: ASN1 lib: pem_pkey.c: 132:
[testuser @ whitehat .ssh] $ 

Info versi OS dan openssl

[testuser @ whitehat /] $ lsb_release -a
Versi 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 Distributor: Ilmiah
Deskripsi: Scientific Linux rilis 6.2 (Karbon)
Rilis: 6.2
Nama kode: Karbon
[testuser @ whitehat /] $ rpm -q openssl
openssl-1.0.1e-30.el6_6.5.x86_64
Daniel t.
sumber
1

Saya berakhir di sini karena saya memiliki masalah yang sama, tetapi masalah saya disebabkan oleh antarmuka ekspor sertifikat AWS ACM. (Sertifikat CA pribadi dapat diekspor dengan frasa sandi)

Sesuatu tentang frasa sandi khusus yang saya gunakan ... Tidak yakin persis apa yang menyebabkan masalah, tetapi kemungkinan panjang, atau simbol yang digunakan.

Hasil akhirnya adalah saya memiliki kunci dengan frasa sandi berbeda / singkat dengan apa yang saya harapkan.

Semoga itu bisa membantu seseorang ...

comfytoday
sumber