GnuPG/Agent: Unterschied zwischen den Versionen
K Textersetzung - „==== Dokumentation ====“ durch „=== Dokumentation ===“  | 
				K Textersetzung - „===== Projekt =====“ durch „==== Projekt ====“  | 
				||
| Zeile 81: | Zeile 81: | ||
=== Links ===  | === Links ===  | ||
==== Projekt ====  | |||
==== Weblinks ====  | ==== Weblinks ====  | ||
# https://wiki.ubuntuusers.de/GnuPG-Agent/  | # https://wiki.ubuntuusers.de/GnuPG-Agent/  | ||
Version vom 21. März 2025, 23:48 Uhr
GnuPG-Agent - Hintergrundprogramm für gecachte Passwörter
Beschreibung
Wie der ssh-agent (bei OpenSSH) dient der gpg-agent, der seit GnuPG 2.0.x integraler Bestandteil ist, unter anderem dazu, die Passphrase für einen konfigurierbaren Zeitraum im Arbeitsspeicher zu halten, sodass eine erneute Eingabe entfällt; gpg-agent speichert die Passphrase aber nicht nur, sondern übernimmt auch ihre Abfrage vom Anwender (über ein konfigurierbares Hilfsprogramm)
- Anders als bei OpenSSH ist der gpg-agent allerdings ab Version 2 von GnuPG zwingender Bestandteil; in der künftigen Version 2.1 werden sogar alle Operationen, die private Schlüssel beinhalten, an gpg-agent ausgelagert, was es ermöglicht, die Schlüssel auf einem anderen Rechner zu speichern und nur noch indirekt zu verwenden
 - Die zweite wichtige Aufgabe von gpg-agent bei GnuPG 2.0.x ist der Zugriff auf Smartcards
 
Der Kontakt zu einer Instanz von gpg-agent, die nicht den Standardsocket verwendet (es können mehrere gleichzeitig laufen, was aber meist nicht sinnvoll ist), wird über eine Umgebungsvariable ermöglicht
- Ein Beispiel: Über den Befehl 
gpg-agent --daemon thunderbirdwird der Mailclient Thunderbird gestartet, und zwar mit der UmgebungsvariableGnuPG_AGENT_INFO - Diese enthält eine Zeichenkette wie 
/tmp/gpg-xY9Q7R/S.gpg-agent:2244:1(Pfad des Socket, PID von gpg-agent (wird ignoriert) und Versionsnummer des Protokolls) - Hierdurch kann das Mailprogramm Kontakt mit dem jeweiligen gpg-agent aufnehmen und ihm den Umgang mit den privaten Schlüsseln (und deren Passphrase) überlassen
 
Bei den meisten unixoiden Desktopumgebungen wird der gpg-agent gleich beim Start aktiviert
- Dadurch, dass das Startscript der Desktopumgebung diese Umgebungsvariable exportiert, haben alle Programme Zugriff darauf
 - Wenn gpg-agent nicht läuft (oder nicht gefunden wird), wird es von gpg, gpgsm und gpgconf automatisch gestartet
 - Zugriff auf einen laufenden gpg-agent kann man in der Konsole über das Programm gpg-connect-agent bekommen
 - Mit dem Server kann man dann über das textbasierte Assuan-Protokoll kommunizieren
 - Man kann gpg-agent daher auch unabhängig von OpenPGP und OpenSSH zur Verwaltung von Passphrasen für eigene Programme nutzen. Über die Konfigurationsdatei gpg-agent.conf wird u. a
 - festgelegt, über welchen Zeitraum eine Passphrase gecacht wird
 
Man kann nicht direkt abfragen, welche Einträge gpg-agent gerade speichert, aber man kann testen, ob ein konkreter Eintrag vorhanden ist (und sich den auch anzeigen lassen)
- GnuPG legt die Passphrase eines Schlüssels unter dessen Fingerprint ab (ggf
 - dem des betroffenen Unterschlüssels):
 
> gpg-connect-agent "GET_PASSPHRASE --data --no-ask 4F7E9F723D197D667842AE115F048E6F0E4B4494 t1 t2 t3" /bye D fubar OK
Ebenso kann man eine Passphrase setzen, sodass sie nicht vom Anwender abgefragt werden muss (etwa bei automatisierten Prozessen)
- Dafür gibt es sogar eine eigene Anwendung: gpg-preset-passphrase
 
Mit gpg-connect-agent kann man auch auf einfache Weise testen, ob gpg-agent überhaupt läuft (bzw. so läuft, dass es unmittelbar verwendet werden kann):
# gpg-connect-agent /bye gpg-connect-agent: can't connect to the agent: IPC "connect" Aufruf fehlgeschlagen
- Funktion
 
- Das automatisch von GnuPG für die Eingabe und das Cachen von Passwörtern verwendet wird
 - Speichert das Passwort in einem Cache und fragt nur nach festlegbaren Zeitintervallen erneut danach
 
Installation
Wichtig ist außerdem, dass man noch ein Passworteingabeprogramm,z. B. pinentry-curses für die jeweilige Desktop-Umgebung benötigt
# apt install gnupg-agent pinentry-curses
Aufruf
Optionen
| Option | Beschreibung | 
|---|---|
| --daemon | Normaler Aufruf, um den Dämon zu starten | 
| --ignore-cache-for-signing | Erzwingt eine erneute Passworteingabe, um andere Schlüssel zu signieren | 
| --default-cache-ttl n | Setzt die Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 600 | 
| --max-cache-ttl n | Setzt die maximale Zeit, wie lange ein Passwort im Cache bleibt, auf n Sekunden. Standard ist 7200 (2 Stunden) | 
| --pinentry-program filename | Setzt explizit das Passworteingabeprogramm auf filename | 
Argumente
Umgebung
Rückgabewert
Anwendung
Problembehebung
Konfiguration
Dateien
Anhang
Siehe auch
Sicherheit
Dokumentation
RFC
- Man-Page