Come specificare la chiave privata durante la decrittografia di un file usando GnuPG?


22

Sto cercando di decrittografare un file con GnuPG, ma quando utilizzo il comando seguente:

gpg --decrypt filename.gpg

Ricevo il seguente messaggio:

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

Ho già la chiave privata con cui il file è stato crittografato, ma non sono sicuro di come posso specificarlo. C'è qualche opzione che posso includere quando eseguo la decodifica per puntare a questa chiave?


1
Cosa gpg --list-secret-keys 0x3662FD5Estampa?
Jonas Schäfer,

No, non lo fa. C'è un modo per aggiungerlo?

Come hai ottenuto la chiave privata?
Jonas Schäfer,

Cosa rappresenta effettivamente questo ID?
Nishant,

Risposte:


17

Ho già la chiave privata con cui il file è stato crittografato, ma non sono sicuro di come posso specificarlo.

Lo capisco come "Ho un file contenente la chiave privata, ma non so come dire a GnuPG di usarlo".

GnuPG richiede che le chiavi (sia pubbliche che private) siano archiviate nel portachiavi GnuPG. Questo è facile come

gpg --import [keyfile]

Successivamente, dovresti essere in grado di decrittografare il file esattamente come hai già provato.


5
Quindi gpg è abbastanza intelligente da sapere quale chiave decifrare dopo aver importato più chiavi?
RollRoll

Sì. Di solito la chiave viene anche indicata nel file crittografato, altrimenti GnuPG prova tutte le chiavi.
Jens Erat,

Uso GnuPG a livello di codice e ho un portachiavi con centinaia di chiavi private e il messaggio può essere crittografato con dozzine di loro. Sembra un po 'dispendioso che li provi tutti (in realtà cerca di sbloccarli tutti usando la passphrase data e prende il primo che funziona).
jlh

2
GnuPG li prova tutti solo se la chiave è stata nascosta dalla parte mittente. Sembra che il tuo caso d'uso non sia stato uno degli obiettivi di progettazione di GnuPG. Se conosci la chiave privata corretta sebbene non sia archiviata nel file crittografato, considera invece di gestire diverse directory / portachiavi GnuPG con una singola chiave privata.
Jens Erat,

Sì, sembra che il mio caso d'uso non sia adatto a gpg. Per completezza ecco un'osservazione più dettagliata: i miei ID destinatario non sono nascosti (non usando -R), quindi gpg sa quale delle forse una dozzina di tasti dovrebbe provare, non deve provare l'intero portachiavi. Comunque gpg non sa per quale chiave ho fornito la passphrase, quindi deve provare quelle dozzine di chiavi, che rallentano notevolmente le cose.
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

3
Benvenuto in SuperUser, il tuo suggerimento è già in un'altra risposta. Dovresti votare quella risposta invece di crearne una nuova. Non hai abbastanza reputazione per farlo ancora, aspetta di farlo.
Vlastimil Ovčáčík,

2

Non è necessario dichiarare espressamente la chiave segreta nel comando gpg decrypt. Se il keypair- sia pubblico e privato chiavi-Jens Uniti sono presenti sul portachiavi sull'host su cui si sta decifrare, GPG verrà automagicamente determinare la chiave segreta necessaria per la decrittazione e presentare una sfida password.

TUTTAVIA se si desidera provare tutte le chiavi (non memorizzate nella cache) ( forse si sta testando un file crittografato con più chiavi ), utilizzando lo switch --try-all-secretssi alterneranno tutte le chiavi segrete sul proprio portachiavi provandole a turno. vale a dire:

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

HTH-Terrence

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.