Wie spezifiziere ich einen privaten Schlüssel beim Entschlüsseln einer Datei mit GnuPG?

22

Ich versuche eine Datei mit GnuPG zu entschlüsseln, aber wenn ich den folgenden Befehl benutze:

gpg --decrypt filename.gpg

Ich erhalte folgende Nachricht:

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

Ich habe bereits den privaten Schlüssel, mit dem die Datei verschlüsselt wurde, aber ich bin nicht sicher, wie ich ihn angeben kann. Gibt es eine Option, die ich beim Entschlüsseln einschließen kann, um auf diesen Schlüssel zu verweisen?

Crista23
quelle
1
Was gpg --list-secret-keys 0x3662FD5Edruckt?
Jonas Schäfer
Nein, das tut es nicht. Kann ich das auf irgendeine Weise hinzufügen?
Wie haben Sie den privaten Schlüssel erhalten?
Jonas Schäfer
Was stellt diese ID tatsächlich dar?
Nishant

Antworten:

17

Ich habe bereits den privaten Schlüssel, mit dem die Datei verschlüsselt wurde, aber ich bin nicht sicher, wie ich ihn angeben kann.

Ich verstehe dies als "Ich habe eine Datei mit dem privaten Schlüssel, weiß aber nicht, wie ich GnuPG anweisen soll, sie zu verwenden".

Für GnuPG müssen sowohl öffentliche als auch private Schlüssel im GnuPG-Schlüsselbund gespeichert sein. Das ist so einfach wie

gpg --import [keyfile]

Anschließend sollten Sie in der Lage sein, die Datei genau so zu entschlüsseln, wie Sie es bereits versucht haben.

Jens Erat
quelle
5
Ist gpg also intelligent genug, um zu wissen, welchen Schlüssel Sie entschlüsseln müssen, wenn Sie mehrere Schlüssel importiert haben?
RollRoll
Ja. Normalerweise wird der Schlüssel sogar in der verschlüsselten Datei referenziert, wenn GnuPG nicht alle Schlüssel versucht.
Jens Erat
Ich verwende GnuPG programmgesteuert und habe einen Schlüsselbund mit Hunderten von privaten Schlüsseln und die Nachricht kann mit Dutzenden von ihnen verschlüsselt werden. Es scheint etwas verschwenderisch zu sein, dass sie alle nur ausprobiert werden (tatsächlich wird versucht, sie alle mit der angegebenen Passphrase zu entsperren und die erste zu verwenden, die funktioniert).
jlh
2
GnuPG versucht sie alle nur, wenn der Schlüssel vom Absender verborgen wurde. Es scheint, dass Ihr Anwendungsfall nicht eines der Designziele von GnuPG war. Wenn Sie den richtigen privaten Schlüssel kennen, obwohl er nicht in der verschlüsselten Datei gespeichert ist, können Sie verschiedene GnuPG-Ausgangsverzeichnisse / -Schlüsselringe mit einem einzigen privaten Schlüssel verwalten.
Jens Erat
Ja, es scheint, dass mein Anwendungsfall für gpg nicht gut geeignet ist. Der Vollständigkeit halber hier eine detailliertere Beobachtung: Meine Empfänger-IDs sind nicht verborgen (ohne -R), sodass gpg weiß, welchen der vielleicht ein Dutzend Schlüssel es probieren sollte, es muss nicht den gesamten Schlüsselbund probieren. Allerdings weiß gpg nicht, für welchen Schlüssel ich die Passphrase angegeben habe, weshalb es diese Dutzend Schlüssel ausprobieren muss, was die Sache erheblich verlangsamt.
20.
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
quelle
3
Willkommen bei SuperUser, Ihr Vorschlag ist bereits in einer anderen Antwort enthalten. Sie sollten diese Antwort positiv bewerten, anstatt eine neue zu erstellen. Sie haben noch nicht genug Ruf, um das zu tun. Warten Sie, bis Sie es tun.
Vlastimil Ovčáčík
2

Sie müssen den geheimen Schlüssel nicht ausdrücklich im Befehl gpg decrypt deklarieren. Wenn der keypair- sowohl öffentliche und privater Schlüssel- als Jens Staaten auf dem Schlüsselbund auf dem Host vorhanden ist , wo Sie zu entschlüsseln, wird GPG automagically den geheimen Schlüssel für die Entschlüsselung erforderlich bestimmen und ein Passwort Herausforderung.

JEDOCH wenn Sie alle (nicht zwischengespeichert) Schlüssel , um zu versuchen ( vielleicht sind Sie eine Datei mit mehreren Schlüsseln verschlüsselt Testen ), mit dem Schalter --try-all-secretsschaltet durch alle geheimen Schlüssel am Schlüsselbund sie wiederum versuchen. dh:

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

HTH-Terrence

F1Linux
quelle