Cara Mengekspor Kunci ASC Pribadi / Rahasia untuk Mendekripsi File GPG

89

Latar belakang: Bos saya telah mencoba mengekspor kunci ASC ke saya dengan bagian publik dan pribadi tetapi setiap kali saya mendapatkan file, bagian pribadi tidak pernah dimuat dan tidak akan mendekripsi file apa pun.

Kami telah mencoba Mengekspor Kunci ASC menggunakan:

  • Aplikasi Windows Kleopatra 2.1 (termasuk dalam gpg4win)
  • Asisten Privasi GNU Aplikasi Windows (disertakan dalam gpg4win)

            Error: "Decryption failed. Secret Key Not available." 
    

Bagaimana Anda mengekspor kunci asc rahasia atau pribadi dengan benar untuk mendekripsi file gpg?

Brian McCarthy
sumber

Jawaban:

186

Anda dapat mengekspor kunci pribadi dengan alat baris perintah dari GPG . Ia bekerja pada Windows-shell. Gunakan perintah berikut:

gpg --export-secret-keys

Ekspor normal dengan --exporttidak akan menyertakan kunci pribadi apa pun, oleh karena itu Anda harus menggunakan --export-secret-keys.

Edit:

Untuk meringkas informasi yang diberikan dalam komentar saya, ini adalah perintah yang memungkinkan Anda mengekspor kunci tertentu dengan ID 1234ABCD ke file secret.asc:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

Anda dapat menemukan ID yang Anda butuhkan dengan menggunakan perintah berikut. ID adalah bagian kedua dari kolom kedua:

gpg --list-keys

Untuk Mengekspor hanya 1 kunci rahasia tertentu alih-alih semuanya:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber adalah nomor id kunci untuk kunci yang diinginkan yang Anda coba ekspor.

Demento
sumber
4
@ Brian: Ini akan membuang kunci ke konsol. Jika Anda ingin menyimpannya dalam sebuah file, Anda dapat mengalihkan output ke nama file arbitrer ("gpg --export-secret-keys> secret.asc").
Demento
5
@ Brian: Ini memberi Anda output dalam ASCII dan bukan dalam biner. Jika Anda menyimpannya dalam sebuah file, itu tidak terlalu penting. Tapi begitu Anda ingin menyebarkannya dengan cara lain, versi ASCII jauh lebih mudah untuk ditangani (mengirimnya sebaris dalam email misalnya)
Demento
8
Mungkin Anda ingin membawa kunci rahasia Anda ke lokasi lain. Dalam kasus ini, Anda harus mengenkripsi data yang diekspor: "gpg --export-secret-keys keyIDNumber | gpg -c> encrypted" dekripsikan dengan "gpg -o unencrypted encrypted".
rockdaboot
3
Kunci yang diekspor dari GnuPG tetap dienkripsi (itulah sebabnya Anda tidak perlu memasukkan frasa sandi kunci privat), jadi Anda tidak perlu mengenkripsinya lagi.
Ferry Boender
1
@FerryBoender Apakah Anda yakin tentang itu ?
Josh Habdas
32

Semua balasan di atas benar, tetapi mungkin melewatkan satu langkah penting, Anda perlu mengedit kunci yang diimpor dan "pada akhirnya percaya" kunci itu

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

dan pilih 5 untuk mengaktifkan kunci pribadi yang diimpor itu sebagai salah satu kunci Anda

higuita
sumber
18

Lihat perawatan dari Dark Otter

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Jika situs sedang down, gunakan referensi backup archive.org:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

yang mencakup cara yang cukup aman untuk mentransfer kunci. Anda dapat memasukkan rekomendasi itu ke dalam skrip shell yang ditunjukkan di bawah ini untuk penggunaan berulang.

Pertama dapatkan KEYID yang Anda inginkan dari daftar yang ditunjukkan oleh

$ gpg -K

Dari daftar yang dihasilkan, perhatikan KEYID (8 heksadesimal setelah detik) yang Anda perlukan untuk transfer.

Kemudian aktifkan shell scipts yang diuji "export_private_key" pada akun pertama dan buat pubkey.gpg + keys.asc Anda. Selanjutnya, aktifkan akun kedua "import_private_key". Berikut adalah konten mereka yang ditampilkan dengan cat (copy & paste konten):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

Sekarang transfer dengan beberapa cara "pubkey.gpg" (jika diperlukan) dan private "keys.asc" ke akun kedua dan jalankan program yang ditampilkan di bawah ini.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

Dalam semangat Otter "Dan itu, seharusnya, itu".

Wolfram J
sumber
Terima kasih atas skrip yang menyertakan kunci publik dan pribadi dalam satu file yang dilindungi frasa sandi. Membuat hidup saya jauh lebih baik!
codekoala
Opsi --no-use-agentsudah usang dalam versi gpg 2.
Josh Habdas
9

Saya pikir Anda belum mengimpor kunci pribadi seperti pesan kesalahan, Untuk mengimpor kunci publik / pribadi dari gnupg:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
SIFE
sumber
saya bertanya tentang mengekspor dari komputer yang berfungsi ... Anda hanya dapat mengimpor kunci jika di server lokal.
Brian McCarthy
@ Brian McCarthy: Apa yang ingin Anda katakan?
SIFE
Apakah kita benar-benar perlu mengimpor kunci publik jika kunci privat sudah diimpor? Seperti yang saya pahami, kunci publik dapat dihasilkan dari kunci pribadi apa saja.
farhany
@farhany Saya rasa ya, karena Anda akan membutuhkannya ketika Anda menandatangani pesan Anda.
SIFE
6

ini akhirnya berhasil untuk saya:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

Anda dapat memberi nama keyfilename.asc dengan nama apa saja selama Anda tetap menggunakan ekstensi .asc.
perintah ini menyalin semua kunci rahasia di komputer pengguna ke keyfilename.asc di direktori kerja tempat perintah itu dipanggil.

Untuk Mengekspor hanya 1 kunci rahasia tertentu alih-alih semuanya:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber adalah nomor id kunci untuk kunci yang diinginkan yang Anda coba ekspor.

Brian McCarthy
sumber
1
Anda dapat membuat daftar semua kunci yang tersedia dengan "--list-keys". Kolom kedua akan berisi ID seperti "2048g / 1234ABCD". Temukan kunci yang diinginkan dan ekspor dengan "gpg --export-secret-keys 1234ABCD> secret.asc", tentu saja mengubah 1234ABCD dengan ID yang benar. Anda juga dapat menambahkan tanda "-a". Ini menulis keluaran dengan karakter ASCII, untuk berjaga-jaga jika keluaran biner menyebabkan masalah.
Demento
@demento, terima kasih atas umpan balik tambahan ... sakit menambahkan itu pada jawabannya
Brian McCarthy
2
Anda masih membutuhkan -a jika Anda benar-benar ingin asc
RichieHH
Bagaimana Anda kemudian mengimpornya ke komputer lain?
Natim
@Natim Saya membayangkan Anda bawa exportedKeyFilename.ascke komputer lain dan kemudian lakukan gpg --allow-secret-key-import --import exportedKeyFilename.ascdi direktori dengan .ascfile tersebut. Lihat: unix.stackexchange.com/questions/184947/…
Brōtsyorfuzthrāx
5

Mirip dengan jawaban @Wolfram J, berikut adalah metode untuk mengenkripsi kunci pribadi Anda dengan frasa sandi :

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

Dan metode yang sesuai untuk mendekripsi:

gpg private_key.asc
Mateen Ulhaq
sumber
5

1.Ekspor Kunci Rahasia (inilah yang seharusnya dilakukan atasan Anda untuk Anda)

gpg --export-secret-keys yourKeyName > privateKey.asc

2. Impor Kunci Rahasia (impor privateKey Anda)

gpg --import privateKey.asc

3. Belum selesai, Anda masih harus mempercayai sebuah kunci. Anda perlu memastikan bahwa Anda juga pada akhirnya mempercayai sebuah kunci.

gpg --edit-key yourKeyName

Masukkan kepercayaan, 5, y, lalu keluar

Sumber: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

Michael James Kali Galarnyk
sumber