gpg2: tidak ada kunci rahasia

21

Saya telah menggunakan enigmail selama lebih dari setahun tanpa masalah, dan hari ini tidak berfungsi.

Saya menemukan fakta menarik berikut:

gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails

Jadi ada yang rusak dengan versi gpg 2 di mesin saya.

Ini membuat saya melihat bahwa:

gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!) 

Ini tampaknya menjadi akar masalah ... tentu saja gpg2tidak dapat menemukan kunci rahasia karena mencari dalam file yang salah.

Bagaimana saya bisa gpg2gagal ketika gpgpekerjaan saya baik-baik saja? Saya tidak melihat opsi untuk menentukan dari mana kunci rahasia dibaca.

Adakah yang punya ide?


Tanggapan untuk @grawity :

Terima kasih, saya menghargai bantuan Anda. Saya berlari strace, dan saya mengerti apa yang Anda bicarakan.

Namun, bahkan setelah gpg2 --import ...saya melihat tidak ada perbedaan dalam perilaku. Saya hanya bisa membuatnya bekerja jika saya reboot (tanpa memulai gpg-agent), jalankan gpg2 --import ..., lalu jalankan gpg2 --decrypt .... Setelah urutan itu, thunderbird + enigmail juga berperilaku baik. Namun, setelah sekitar 15 menit (tebakan saya adalah kata sandi yang saya masukkan untuk mendekripsi telah kedaluwarsa), kemudian gpg-agentkembali ke perilaku semula. Urutan ini dapat diulang.

Jadi, inilah beberapa keluaran jika itu membantu membersihkan semuanya:

output dari gpg2 -K:

/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec   rsa4096/AAAAAAAA <date> [SC]
uid         [ultimate] <description of me>
ssb   rsa4096/BBBBBBBB <date> [E]

output dari gpg-connect-agent

> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK

output dari gpg2 -v -r <my email> -e testfile

gpg: using PGP trust model
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: This key belongs to us
gpg: reading from 'testfile'
gpg: writing to 'testfile.gpg'
gpg: RSA/AES256 encrypted for: "BBBBBBBB <description of me>"

output dari gpg2 -v -d testfile.gpg

gpg: public key is BBBBBBBB
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: encrypted with 4096-bit RSA key, ID BBBBBBBB, created <date>
      "<description of me>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key
rexroni
sumber
Apakah Anda akhirnya menyelesaikan ini? Saya mengalami masalah yang sama persis.
Volker
Tidak masalah, saya memperbaikinya. Yang diperlukan untuk digunakan gpg-agent, dan program pinentry perlu diatur pinentry-gtk-2. Sebelum diatur pinentry-gnome3, yang ada di sistem saya, tetapi tidak berhasil. Saya harus menginstal secara manual pinentry-gtk-2.
Volker

Jawaban:

22

... tentu saja gpg2 tidak dapat menemukan kunci rahasia karena mencari dalam file yang salah.

Itu bukan satu - satunya file yang dilihatnya.

Di GnuPG 1.x (dan 2.0), "secring" dulu memiliki duplikat data publik keyblock Anda juga, jadi itu sepenuhnya mandiri (dan satu-satunya perbedaan antara gpg -kdan gpg -Kfile mana yang dibacanya) , tetapi pada saat yang sama lebih sulit untuk mempertahankan program.

Di GnuPG 2.1, kunci rahasia sekarang disimpan secara independen - mereka dikelola oleh gpg-agent , yang menyimpannya ~/.gnupg/private-keys-v1.d/. Jadi keduanya gpg -kdan gpg -Ksekarang harus membaca informasi OpenPGP dari penerbit, tetapi yang terakhir juga bertanya kepada agen gpg tentang sertifikat mana yang telah mengaitkan kunci rahasia. Jika Anda menggunakan strace , Anda akan melihat connect()panggilan tepat setelah membaca pubring.

Jika GnuPG tidak secara otomatis memigrasikan kunci, cukup impor seluruh pemisahan secara langsung:

gpg2 --import ~/.gnupg/secring.gpg

Untuk memeriksa konten agen secara manual:

$ gpg-connect-agent 
> keyinfo --list
S KEYINFO 926145FFCA32B3E6E079A0CF73EA77C40733A349 D - - - P - - -
S KEYINFO BACFB81EAFC864F4AB2926E8B1F55AD579F78D1A D - - - P - - -
S KEYINFO FF3D1DD51B9C79E148CCCEA5F7F3E25EC96048B7 D - - - P - - -
S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D - - - P - - -
S KEYINFO 06B13685B9AA429B9CABCE480930D74B991C8DF0 D - - - P - - -
S KEYINFO B28DB8D045654E8A6A40466A07FCD9E432935E29 D - - - P - - -
baik
> / sampai jumpa 
$

Ini adalah "keygrips" - bandingkan dengan secring GnuPG:

$ gpg --list-secret-keys --with-keygrip
/home/fred/.gnupg/pubring.kbx
--------------------------------
sec ed25519 2018-08-18 [SC]
      2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632
      Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F 
uid [ultima] Fred Foobar <[email protected]>
pengguna1686
sumber
Saya memiliki masalah yang sama: Saya mencoba untuk membuat tanda kunci gpg --gen-keyyang ingin saya gunakan gopass. Sayangnya, gopasskegunaan gpg2... gpg2 --importbekerja seperti pesona! Terima kasih!
andiba
Bagi saya gpg2 --import ~/.gnupg/pubring.gpgmemperbaikinya.
Dilawar
Kau adalah pahlawanku
Lo-Tan
1

Akhirnya, saya memutuskan masalahnya adalah bahwa saya menggunakan Debian Unstable dan ada ketidakcocokan versi yang diperkenalkan oleh apt-get dist-upgrade. Saya kira itu sebabnya mereka menyebutnya "Tidak Stabil".

rexroni
sumber
Saya memilikinya di Ubuntu LTS juga. Setelah beralih dari Ubuntu Unity ke GNOME.
nerdoc