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

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 <fred@example.com>

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".


Saya memilikinya di Ubuntu LTS juga. Setelah beralih dari Ubuntu Unity ke GNOME.
nerdoc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.