Jak określić klucz prywatny podczas odszyfrowywania pliku za pomocą GnuPG?

22

Próbuję odszyfrować plik za pomocą GnuPG, ale używając poniższego polecenia:

gpg --decrypt filename.gpg

Otrzymuję następujący komunikat:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

Mam już klucz prywatny, za pomocą którego plik został zaszyfrowany, ale nie jestem pewien, jak go określić. Czy jest jakaś opcja, którą mogę uwzględnić podczas odszyfrowywania, aby wskazać ten klucz?

Crista23
źródło
1
Co gpg --list-secret-keys 0x3662FD5Edrukuje?
Jonas Schäfer
Nie, nie ma. Czy mogę to jakoś dodać?
Jak uzyskałeś klucz prywatny?
Jonas Schäfer
Co tak naprawdę reprezentuje ten identyfikator?
Nishant,

Odpowiedzi:

17

Mam już klucz prywatny, za pomocą którego plik został zaszyfrowany, ale nie jestem pewien, jak go określić.

Rozumiem to jako „Mam plik zawierający klucz prywatny, ale nie wiem, jak powiedzieć GnuPG, aby go używał”.

GnuPG wymaga przechowywania kluczy (zarówno publicznych, jak i prywatnych) w breloku GnuPG. To takie proste

gpg --import [keyfile]

Następnie powinieneś być w stanie odszyfrować plik dokładnie tak, jak już próbowałeś.

Jens Erat
źródło
5
Czy gpg jest wystarczająco inteligentny, aby wiedzieć, który klucz odszyfrować po zaimportowaniu kilku kluczy?
RollRoll
Tak. Zazwyczaj klucz jest nawet przywoływany w zaszyfrowanym pliku, jeśli nie, GnuPG próbuje wszystkich kluczy.
Jens Erat,
Używam GnuPG programowo i mam brelok z setkami kluczy prywatnych, a wiadomość może być zaszyfrowana dziesiątkami. Wydaje się to trochę marnotrawstwem, że po prostu wypróbowuje je wszystkie (w rzeczywistości próbuje je wszystkie odblokować za pomocą podanego hasła i bierze pierwsze, które działa).
jlh
2
GnuPG wypróbuje je wszystkie, jeśli klucz został ukryty przez stronę wysyłającą. Wydaje się, że twój przypadek użycia nie był jednym z celów projektowych GnuPG. Jeśli znasz prawidłowy klucz prywatny, chociaż nie jest on przechowywany w zaszyfrowanym pliku, rozważ zarządzanie różnymi katalogami domowymi / kluczami GnuPG za pomocą jednego klucza prywatnego.
Jens Erat,
Tak, wygląda na to, że mój przypadek użycia nie jest odpowiedni dla gpg. Dla kompletności oto bardziej szczegółowe spostrzeżenie: moje identyfikatory adresatów nie są ukryte (nie używają -R), więc gpg wie, który z kilkunastu kluczy powinien wypróbować, nie musi wypróbować całego breloka. Jednak gpg nie wie, dla którego klucza podałem hasło, więc musi wypróbować te kilkanaście kluczy, co znacznie spowalnia.
jlh
6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available
anshul
źródło
3
Witamy w SuperUser, twoja sugestia zawiera już inną odpowiedź. Powinieneś głosować za odpowiedzią zamiast tworzyć nową. Nie masz jeszcze wystarczającej reputacji, aby to zrobić, poczekaj, aż to zrobisz.
Vlastimil Ovčáčík,
2

Nie musisz jawnie deklarować tajnego klucza w poleceniu deszyfrowania gpg. Jeśli para kluczy - zarówno klucze publiczne, jak i prywatne - gdy stany Jensa są obecne w breloku na hoście, na którym przeprowadzasz deszyfrowanie, GPG automatycznie określi tajny klucz wymagany do odszyfrowania i wyświetli wyzwanie dla hasła.

JEDNAK jeśli chcesz wypróbować wszystkie (niebuforowane) klucze ( być może testujesz plik zaszyfrowany wieloma kluczami ), użycie przełącznika --try-all-secretsspowoduje przejście przez wszystkie tajne klucze na twoim kluczyku, wypróbowując je kolejno. to znaczy:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Terrence

F1Linux
źródło