gpg2: không có khóa bí mật


21

Tôi đã sử dụng enigmail trong hơn một năm mà không có vấn đề gì, và hôm nay nó không hoạt động.

Tôi tìm thấy một sự thật thú vị sau đây:

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

Vì vậy, một cái gì đó bị hỏng với gpg phiên bản 2 trên máy của tôi.

Điều này dẫn tôi thấy rằng:

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

Đây dường như là gốc rễ của vấn đề ... tất nhiên gpg2không thể tìm thấy khóa bí mật vì nó tìm trong tệp sai.

Làm thế nào tôi có thể gpg2thất bại khi gpgcông việc của tôi tốt? Tôi không thấy bất kỳ tùy chọn nào để chỉ định nơi các khóa bí mật được đọc từ đâu.

Có ai có ý kiến ​​gì không?


Phản hồi về @grawity :

Cảm ơn, tôi đánh giá cao sự giúp đỡ của bạn. Tôi chạy strace, và tôi thấy những gì bạn đang nói về.

Tuy nhiên, ngay cả sau khi gpg2 --import ...tôi thấy không có sự khác biệt trong hành vi. Tôi chỉ có thể làm cho nó hoạt động nếu tôi khởi động lại (không khởi động gpg-agent), chạy gpg2 --import ..., sau đó chạy gpg2 --decrypt .... Sau chuỗi đó, thunderbird + enigmail cũng cư xử độc đáo. Tuy nhiên, sau 15 phút hoặc lâu hơn (tôi đoán là mật khẩu tôi đã nhập để giải mã đã hết hạn), sau đó gpg-agenttrở lại hành vi cũ của nó. Trình tự này được lặp lại.

Vì vậy, đây là một số đầu ra nếu nó giúp làm sáng tỏ mọi thứ:

đầu ra của gpg2 -K:

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

đầu ra của gpg-connect-agent

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

đầu ra của 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>"

đầu ra của 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

Bạn đã kết thúc giải quyết điều này? Tôi đang có cùng một vấn đề.
Volker

Nevermind, tôi đã sửa nó. Cần thiết để sử dụng gpg-agentvà chương trình pinentry cần được đặt thành pinentry-gtk-2. Trước khi nó được đặt thành pinentry-gnome3tồn tại trên hệ thống của tôi, nhưng nó không hoạt động. Tôi đã phải cài đặt bằng tay pinentry-gtk-2.
Volker

Câu trả lời:


22

Tất nhiên, gpg2 không thể tìm thấy khóa bí mật vì nó tìm sai tệp.

Đó không phải là tập tin duy nhất mà nó đang xem.

Trong GnuPG 1.x (và 2.0), "secring" đã từng có một bản sao dữ liệu công khai của keyblock của bạn, do đó, nó hoàn toàn khép kín (và sự khác biệt duy nhất giữa gpg -kgpg -Kđó là tệp mà nó sẽ đọc) , nhưng đồng thời khó khăn hơn cho chương trình để duy trì.

Trong GnuPG 2.1, các khóa bí mật hiện được lưu trữ độc lập - chúng được duy trì bởi tác nhân gpg , giữ chúng trong đó ~/.gnupg/private-keys-v1.d/. Vì vậy, cả hai gpg -kgpg -Kbây giờ phải đọc thông tin OpenPGP từ pubring, nhưng sau đó cũng hỏi gpg-agent về chứng chỉ nào có khóa bí mật liên quan. Nếu bạn đang sử dụng strace , bạn sẽ nhận thấy một connect()cuộc gọi ngay sau khi đọc pubring.

Nếu GnuPG không tự động di chuyển các khóa, chỉ cần nhập trực tiếp toàn bộ giây:

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

Để kiểm tra nội dung của đại lý theo cách thủ công:

$ 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 - - -
đồng ý
> / tạm biệt 
$

Đây là "keygrips" - so sánh chúng với cách ẩn của GnuPG:

$ gpg --list-secret-key --with-keygrip
/home/fred/.gnupg/pubring.kbx
--------------------------------
giây ed25519 2018-08-18 [SC]
      2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632
      Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F 
uid [cuối cùng] Fred Foobar <fred@example.com>

Tôi đã có cùng một vấn đề: Tôi đã cố gắng tạo ra một usign chính gpg --gen-keymà tôi muốn sử dụng gopass. Thật không may, gopasssử dụng gpg2... gpg2 --importlàm việc như một bùa mê! Cảm ơn!
andiba

Đối với tôi đã gpg2 --import ~/.gnupg/pubring.gpgsửa nó.
Dilawar

Bạn là con của tôi
Lo-Tan

1

Cuối cùng, tôi đã quyết định vấn đề là tôi đang sử dụng Debian Un Ổn định và có một phiên bản không phù hợp được giới thiệu bởi một apt-get dist-upgrade. Tôi cho rằng đó là lý do tại sao họ gọi nó là "Không ổn định".


Tôi cũng có nó trong Ubuntu LTS. Sau khi chuyển từ Ubuntu Unity sang Gnome.
nerdoc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.